openttd-1.3.3/0000755000000000000000000000000012246102757011677 5ustar rootrootopenttd-1.3.3/Makefile.setting.in0000644000000000000000000000650112246102614015412 0ustar rootroot# $Id: Makefile.setting.in 24365 2012-07-01 08:56:57Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . SETTINGSGEN = !!SETTINGSGEN!! ENDIAN_CHECK = !!ENDIAN_CHECK!! SRC_DIR = !!SRC_DIR!! CXX_BUILD = !!CXX_BUILD!! CFLAGS_BUILD = !!CFLAGS_BUILD!! CXXFLAGS_BUILD = !!CXXFLAGS_BUILD!! LDFLAGS_BUILD = !!LDFLAGS_BUILD!! STAGE = !!STAGE!! SETTING_OBJS_DIR = !!SETTING_OBJS_DIR!! ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK) # Check if we want to show what we are doing ifdef VERBOSE Q = E = @true else Q = @ E = @echo endif all: table/settings.h settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< string.o: $(SRC_DIR)/string.cpp endian_host.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< $(SETTINGSGEN): alloc_func.o string.o ini_load.o settingsgen.o getoptdata.o $(E) '$(STAGE) Compiling and Linking $@' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $^ -o $@ table/settings.h: $(SETTINGSGEN) $(SRC_DIR)/table/settings.h.preamble $(SRC_DIR)/table/settings.h.postamble $(SRC_DIR)/table/*.ini $(E) '$(STAGE) Generating $@' @mkdir -p table $(Q)./$(SETTINGSGEN) -o table/settings.h -b $(SRC_DIR)/table/settings.h.preamble -a $(SRC_DIR)/table/settings.h.postamble $(SRC_DIR)/table/*.ini # The targets to compile the endian-code endian_host.h: $(ENDIAN_CHECK) $(E) '$(STAGE) Testing endianness for host' $(Q)./$(ENDIAN_CHECK) > $@ $(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp $(E) '$(STAGE) Compiling and Linking $@' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@ depend: clean: $(E) '$(STAGE) Cleaning up settings files' $(Q)rm -f settingsgen.o alloc_func.o getoptdata.o ini_load.o $(SETTINGSGEN) $(ENDIAN_TARGETS) table/settings.h mrproper: clean .PHONY: all mrproper depend clean openttd-1.3.3/media/0000755000000000000000000000000012246102757012756 5ustar rootrootopenttd-1.3.3/media/openttd.desktop.filter.awk0000644000000000000000000000143112246102547020067 0ustar rootroot# $Id: openttd.desktop.translation.awk 19884 2010-05-22 19:59:37Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . # # Awk script to automatically remove duplicate Comment[i]= lines # BEGIN { FS = "="; last = "" } { if (last != $1) { print $0 }; last = $1 } openttd-1.3.3/media/openttd.32.xpm0000644000000000000000000001437512246102547015413 0ustar rootroot/* XPM */ static char *openttd.32[] = { /* columns rows colors chars-per-pixel */ "32 32 257 2", " c #000000", ". c #00000A", "X c #03090D", "o c #000017", "O c #00001C", "+ c #060D12", "@ c #060C1C", "# c #0C131B", "$ c #0A1117", "% c #15031F", "& c #1D1B18", "* c #0D0024", "= c #070022", "- c #0C1827", "; c #150223", ": c #180324", "> c #1B0C22", ", c #19002A", "< c #151825", "1 c #1A1E34", "2 c #1A242C", "3 c #1E2327", "4 c #1A2630", "5 c #201825", "6 c #201427", "7 c #21262C", "8 c #24292D", "9 c #28292B", "0 c #232C33", "q c #2C2631", "w c #3B2C2F", "e c #352B30", "r c #37392D", "t c #313231", "y c #353C31", "u c #383532", "i c #351C43", "p c #383D42", "a c #294335", "s c #2A4C36", "d c #2C5436", "f c #2F5935", "g c #354031", "h c #384533", "j c #3B542D", "k c #315F33", "l c #326B2E", "z c #30642F", "x c #3A762D", "c c #3B7B2D", "v c #36712E", "b c #3E4042", "n c #432D2D", "m c #4B312B", "M c #52352B", "N c #6B3B29", "B c #763D21", "V c #4F335D", "C c #405C32", "Z c #5A402A", "A c #5F4435", "S c #456B33", "D c #4D6A3F", "F c #487434", "G c #4B7D33", "H c #537D3F", "J c #7D401F", "K c #684527", "L c #634734", "P c #7D502B", "I c #72583A", "U c #434241", "Y c #4B4640", "T c #43484F", "R c #424C56", "E c #434D59", "W c #49535D", "Q c #46505B", "! c #544A40", "~ c #564C59", "^ c #4C5661", "/ c #555D65", "( c #5A4763", ") c #55606B", "_ c #7F6549", "` c #63696F", "' c #6E7377", "] c #7A6F62", "[ c #7E7162", "{ c #7A7C7B", "} c #3E822D", "| c #40862D", " . c #4E8334", ".. c #518B35", "X. c #508735", "o. c #5CAB35", "O. c #5EB335", "+. c #61BB36", "@. c #62C435", "#. c #65CC34", "$. c #69CF37", "%. c #66D134", "&. c #68D532", "*. c #6BDB35", "=. c #6EE236", "-. c #71EA37", ";. c #833C03", ":. c #8A451C", ">. c #83421E", ",. c #944E1B", "<. c #9A551A", "1. c #8F5720", "2. c #835834", "3. c #995922", "4. c #8C643C", "5. c #9B6B3A", "6. c #AC5306", "7. c #BE4B00", "8. c #BA5503", "9. c #B15D16", "0. c #A35A1B", "q. c #BE661D", "w. c #AE6324", "e. c #A5743F", "r. c #B36624", "t. c #B76E31", "y. c #BA773B", "u. c #8A6643", "i. c #936E47", "p. c #9A754D", "a. c #9C7552", "s. c #907D6C", "d. c #A67747", "f. c #A77D50", "g. c #B27D43", "h. c #C05900", "j. c #CD660D", "k. c #CC6409", "l. c #DB690A", "z. c #D96706", "x. c #D16E18", "c. c #C16B23", "v. c #CA762B", "b. c #D87E30", "n. c #CB792E", "m. c #E36E0A", "M. c #EA6D03", "N. c #EC7105", "B. c #F76F00", "V. c #FE6F00", "C. c #F37503", "Z. c #FE7500", "A. c #FE7A00", "S. c #FD7C0C", "D. c #F4790E", "F. c #FE7E11", "G. c #C27E42", "H. c #9D8065", "J. c #9A8570", "K. c #BD834E", "L. c #B5814B", "P. c #B28452", "I. c #BF8C56", "U. c #BE8E63", "Y. c #B79779", "T. c #D5863F", "R. c #FF8209", "E. c #FE8215", "W. c #FC821B", "Q. c #EE8934", "!. c #FC8623", "~. c #FF8A23", "^. c #FA8A2C", "/. c #FA8728", "(. c #F98E33", "). c #F7953E", "_. c #FC9234", "`. c #F9933B", "'. c #FF9B3D", "]. c #C48B52", "[. c #CD9456", "{. c #C79156", "}. c #D38D44", "|. c #DA9D5B", " X c #D39858", ".X c #C48A4A", "XX c #C99561", "oX c #C29D7A", "OX c #C19C76", "+X c #DEA15F", "@X c #E18D43", "#X c #EC9542", "$X c #E09C52", "%X c #F59741", "&X c #F69945", "*X c #F59D4A", "=X c #FB9940", "-X c #F89D49", ";X c #E3A25C", ":X c #EBA55A", ">X c #FFA047", ",X c #FFA74B", ".A.Z.A.6.dXNXm.Z.A.N.n v &.*.=.F : YXYXYXYX", "YXYXYXYXO y +.=.*.#.s >.A.A.z.K.XXD.A.N.m l &.*.=.G > YXYXYXYXYX", "YXYXYXYXYX= y +.=.*.@.s :.A.A.Z.Z.A.C.m l &.*.-. .> YXYXYXYXYXYX", "YXYXYXYXYXYX* y +.=.=.@.s ,.A.Z.A.C.M z &.*.=.X.> YXYXYXYXYXYXYX", "YXYXYXYXYXYXYX* g @.*.-.G 4 <.A.C.Z - j $.-.X.> YXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYX; h $...< @ 0 <.K - YX, C X.5 YXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYX: y 9 YX3 0 2 YXYX6 6 YXYXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYX. YXYXYX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYX" }; openttd-1.3.3/media/openttd.svg0000644000000000000000000003622012246102550015146 0ustar rootroot image/svg+xml openttd-1.3.3/media/openttd.128.png0000644000000000000000000004553212246102547015460 0ustar rootrootPNG  IHDR>abKGD pHYs  ~tIME!0w\(,JIDATx]\V~}F n.ٳfl.9kl[Qy9pHܾ߽u}?G@Euppr011QI4Og^t oo=4iEוH?7Wg?waX``C(nV"dɒô$, {fhaJwPKUSSFw3[?ۧ{ ]-kD$}WUF$Hd$+f~UJ11QH{;a05ЖHЍX$?ƶX%<ۇ;xš<$%xOґDGN_SbV;%yG,A` ?dUkUFڞH؞|I% ,YzڜOHH? !C+U|gaaqU'lo'r`,M=aIS1;ϺzS-2ꕝ Ѿ@%IсvrV'~E҈Dj S5vxdXеC5?%فAC^.I 9|Zu.ciCxT@%IcN<&|#+UC;;[Li5zkO"{<{dz1H ĉBj׍Z†Bf@)d' m/YK" d@#|j׭wZoo;|s #s)xIPN_igLڰQ㫖6v[:l rSwwBZ @JӧO]e;G j:|1$H&̢_%@Oo*?nxMqDl-O?~B* B('a1ƷƔ6>X[ۇV!КZظ/ĠUU'GHE#ǚ3fj٪hZٙLxK 櫙foX .npuwGX[a|rH{C<-jZI$VhK5qÆR۴kfokw/k3+WĶm{LٷfL&݀à t1F"(j+;qXk_4%l qoMsޡ+j"}-_RdQ? 6ᷧ6v(3ovoBۚcs ۲ [>f)ōnmI@/b%,?>kW:th?ۿ,¼mp~ACQW@`rx ./nc3ᇉgtVuTy`Ѧe?'dȏ7YVB~ /%|Ǟ[t$feXwU.]by!͊oG |{LojgEcX٧fu Bڮ`;SW)V-3gO޽۹oz" 0^1p &~BMlCq`l >3┖t-i(" t$K2uqO@BlzݗL; Z5ĦWuKLePEQت!ƏÅ ga|.|w3|l mH5>s#Ĺ8< mmok|3?h]"Q-ؕ2H0RFHx=?(ne8,J;}7V4}xzyv05^B0vmӧ`يX~nۂ}ę3kB/K߼y{`>D9G~T5JB:훠olK%-vrueT 1wwHOSviT`p4?W+ZkFasz֭c b8i!1 Fp27n\O>8/2/HSRG߉cxte>{AfE>9 gOAty'[ v{ 2hQ߭+J[ɤ6ޯlƼd /H/e >{?|zUEĚ~dmG_2kZ3FtݚdS|rS[߽{Ĥ]25Gtrsi\^z-@޾a+0[KHx"`Pr3l.+jɤ&.U ux𩚺zCR]K-~V4p@dxOl1K9;r/ b¢ƘD0A}V2y_IIN=,lWԒ@x^9rdtnYN-‡I}`F?rsݐp&&,:RVDk`R#g(Ak)/B1WDis~Enc+T%\ S] g7'>84ܭkZ\r ޿/T.Xd.RR3k  =#;/AxsWx؂D"q)AD eY ӛ:}bfYIY~}VU-fv 'r%^EKwV5/^Ѩa}lٶqG9M$;hR3 {..GX<^[ϱ4V/@͠C6!nlt1qd^s7Yke-Lf˴{iuQ%hA‘8I *UAjp m 5< ?YǏ[%f֘.{;B*M_EM׳#~/I~fx㯋h[+8IѲzس, Nw3zvA[ԋ_DVKe-^K$B&$.C-5p1E,Gx4˨޴ńe"|kV\^>MW6~a5A=Ïq?/M|K'hC)):^p,`CM\fU.maa>[ܚݤKUV#Z(0ʧF16)7 `7o^?߀ RpTTt6ƳίiShN iH)Y]:,J]6wy ش5=f/i"$+RyaY2(~N9/jqT-#/ pKw@FS/5~ikyl!"l*N65 O9xXc'^! hPuqcvuΟeТ+h|{"~p3Ǯ-k\ %=fMz>D@3y?\x gJ .7S|.8s8!SX6m융%mim vC3Q eچdNuqoAMB`\^P ; y>yӿIoarR:4lkC=ߑf5 y<|Zj"چ{3;Vm#,=[{V0: i "3`OOi\O%͢ɆJ MB9g9ow[gt7)[[MvnnOSAN.ޮWkcG 9`ͪ>Sm ɝ{qe\"+aطu [[ cY8ޑNWHU}d_ ų!wPAnG`',V΁neݑ܌ϒ.i\tOA&{⎔InDwZ. T K_byfMqtCp<_[ȼzьssj pR{Kӷˣn7zӶ؃ H$L9HA܃;WtXԭ]WwE373vVnO îpҿi\ >?  i"^d.{4r[woKwXj%: 2‚pw/g=4G2љ  l cIH,:ićIx642IJL=&Yڸ]v[}P#wS^M#qz%Z0`Q9`ٺ`BZfߒ/іp.?O?0 q_ Xx,Ε+qI<#u*Z)9g!m:̽ \22'e"iv&LlE햃M2Bs.CRZQ%`b)[ 6@ @ǡ۴iA6x74\IV5{ 4F.eWjZʢJH[ZCK" Og/}v d<{^ߎ`PXؕG}Gt/A%=Iةe\{dDEYgiX X{ ɨRs)%֌n#mD1%n 5ŃF(oHR$su7X僨+ܚGf jÌ/(g(9KB5-q~OŰ2z7m[7x} "H#&ؘr,ܷ{;*z C)7͸hslL]35;ky.NUB->”7Apc3"1dw{"2+eT>_  2x8?~W<# JI),elboC测|ի_l2Xf=hY:qc]>G&n+ R2`.>̀@'dÞZp4QHStZr7iʇ5spN7/=l5>0ǝڝV&+_'O&IaI%&ކ9ӻȠR/9".Y0>|DkУ*[h'dLv͸u6s<)&4Qк"H% d F*JK e'$rE~5Rt4q .XW3ܚ]ȶ缂ڞY2[<ɳJ)0=xe-ҪXƑr`]bx8 j?Nx'O1E0 D<5{dͲhLEksALA*d TP?*jiH#`x8 `bbcfV/2&ZןH$-)xz 49۞sBsʳ#)\سI=Fx97QX^TŽhmJdFh?Nc2))>%v K^ZbKsg:ٹ}4{pn\0d*Qɥ55t6ĉ%krS.|ހdTTsq+uvh \tQAUk/'ȂF@?lhY3 .ŹSǐK832])W-Cu{%ލƗp˴k p l plg(5Q$MpӼ9a}e}"x ;3L_ " \ Ԓ`W2}h ̲"bLl}]-*XÿN DV fҦ9t?Hx;tB+>5; s7/E0Ř! <}6 AJfva B KS>hW"h_o W_"A1bD&cEES.K삕yɧO-mm9h>pG 1o7̝6lZoá{l}BVXM99 ++PX[.N>ɶ5M5"?iHǚE3c(3i`36{ԋv6e0Ւ1d6;@O@GGg"\J"A4=evH4`WlimRzѽ̜[7Oq8}$n޹q]m~0ҦY~dgo .%ݶqfT|x})HJy_Lo }n S]̀q%`Mwy ښw,vn/!aw).-'.N~1u0mD_;K_Cw%ttz\6u1+Jg)9KG*g{%PWWKMMxRX)%\h )U|d/dbmgo䬑Kmɹ[i]f .Ez}_]怳Q̓?+,=]4(E$!be1a%q> xx~܋!6k Щ!̱`{> [OBkCJ xNhp-A૫g&@ܧ!|:sCA҅Zn!Wi\'_y.j{z1 uDWQiDG$s8ktWI0z(?C␃"'J'V50%"bfx5v6ҁ>LyL{X\mM; ʙ)ӴݺW_op/F;2F}~_SI YL&RA$@j{jDֺe`Z.np' n ";!/S ӗO e?m"~:` th)p@:}#qC pYT&2qe>K |N>yAo=⋎{`(@TVS,p"H6nt=-zYbX:@Sd `_U(B g]<aL;ay=WҲ5FJrNQfx38 BQq8}\-{`>7gW0iVa{F9 AEuQ ؙN@~`kPϟkeU ??衆 Vٷlo}] D셲z, E0ՖbD+[mx!( +=Ųr>I?> –J6^$O@gu,nNk\2F@c\bV 3p< I(Ց4ԱVaidδU`Y>Vز}?MDԌ4,^U- 0D[OqO5T"~_Y_rYA0MM͉:rw9(yvM4`匀zUB $@nx180Rl{`pw+nC}GJU/?gL;PP2# Uuu+<̟ʕzrg鷞0( u2][GgI>.4> ?8Y'$ w?6aªRgMF|gky]bSC䩃u6WR ع?ك-0B ߾{6!5-[IZϝNY8m:P6{kHsD =zuinDž Ixt<"?fտa/oj߸>3I/~6>iJu(Bh u˳ΜnߴqNVme+y#eO.Ngb7J [*8Ԙ:L.hz%ɚ"<{O dibղp|"3^<ũ?"A$JD7f܅ydűZUy,[ ?>$[0}S&&}>| ؝wQֺ Ͼ~)I7r}\K:xXp%Ԯ{~-(KoHgCvzR\Uj"@l\sO 2ݽ8ъo&N3N $lظx*vjmU$"=B#wao`8w\K{h\GGE&TOS㖔_[_0y(>D/lik!!!&:»9:_ >n>/؅OtZMwzh :z#q6Wxz9O cm:3p0N޼M8zN!_ g`{KJE-`^UCk/G:7|1;Ph͗ Vb &}HT,)<==|JDU(p oPy2աċMyP1Of:8S(pzC$hBfN54滁sQ.w/_g ;"&F9@ W4'rq|8,WP5UA+08 b@5*Q:CAO7Prqgfz f&vhuHp;; 9aGT<^}')]h&Kx |n@q >H Z(ck̙<7;…3ؾ>^9HsN&_Gb+E?u Y`aQuVp+e>[꨷]?Nrם<Q]T){a |9RߟhikѝHPQWz/LJQ?Xz֨0X Ȃe2?e*6"zZi?-w@EK0$`.ZGan̩lg$b͜(@t.gOsp^B)HHuP{S"Ͼ!BoH_}0k櫴Q\A<+cJ,S}E:f{ F4'h W"a]  gAj5 DXoSL b/B%7`igb V,~0Q ؈sR?nw2M'yO zd[Ҵ8=2A%UhT"~ؿ i}Z*>0i9@W ;6G O3T|O2D9ܿ?zȥ|y)W1ڠ8׸t]=cN TISR_Jҧ`ď=~eMv*ƛC, AV'FPuEYQJˆI2X|)đcl8D8+ qkꖵ@X1"LR iǾۄ HJM6d *tq0inD _K 7k)P p\efU5@Yݹ^qnvXd>z$m?ǭE^= an#@*}O) v8Sv|<$&MЫQ#:bÃ`FX5u0,|'{޾B2l2ū~/v PֹF԰¹:Od /:Gr@}x)K3lrj߫ey#GJxtL5x')W@?E 7-Td t ,4r&?Ꮑ/R$T,|"{R [DY.G 9Ib֏Oj(kSٗD9P~7y J,Dn.07ƺJT3W Kx?;ppfѱѩ?ۡI9tǽٔ-yь2_y f_TU&>Ǿ[VMe=,b cniqnqN<>cfj7 5C?HxQf 5wni83q(T*Y^ |2IL 4LaLz%5RzbVϛLKNSF u_MYV#XZsAicɍ)܆d HO;VzD`NP>:VקשAQ5ruQ\V4iBU,RkZfέi7yGF B(Xb3Vt3)/]zxRGM,6 tua<$wR=% B^~ϖ%E gI\8 5,%󫔑yWJ4kGaࢀ@n@!vPΎt*o}6 J|+>NS\Yhr'r/ϯ آ/z%~}VpWVw)XPngzwTq^,+ɡ<$R:R@ߙHYHa7"R3Ѵ$?-00_I@S(e1цRn &6/{d$~jVϟ3a%#@l+2FU Ǟ~g^X|PlОjrg啔 @Ĭl{hV'. !4ϧ744tTiʞ(Bʳy@SG]Y >> Q:]ëPNPւ.ms]/fJ{)g/@ BpaF$)ZEn_[|zz֙9!b={̷#* [|̳Z.I,' {b/M1O&3$5`H)aF|5b:uAf5b/&?;BCO:G [/?qn R@&ZBPb4œE௭}}%r6Q]R8iVO6z 0 ߘ9 =?r2E:-\"004WqTݞ\(kDMMـBﻡ""NU&U />M _V`kmF`bʛ E嵬 :dUդ}n2yy>ihIqRd%ёƶgeSinOXHjPzחV͏ 0 bo#]/  T  B)&Cd3RiR=d+V*k84SBٞN|-4UU—1@"%GqSJgbr@YvVV@QS QʟzoJ{~ H؏^3H)0PSS<{}vy|w1$ ћ'UPnb,JQp_KA|8,Oc-ÏHhhNi$%'ОmjDq]"ˠ aa'{ b~v_]0eA)+ۄ+oe2Gi(5%LO朹2Kޚ: hq']J @."lxլ6iViVu0y0]wV|<'Om"pE9Loe$ t[6v9Aպ$jwVq=/7D-E,J$50ЯB2b͹YƗɋ[]+ "V}N)xJp"!=lxtLѲ &l Qɽ4*{Z%*! (|o~ROL) txs(2ܯ7>p|]=Tq$P,Kŋ$`H$\KC:{Y#sK5lf?-'̫op *4"6YX[[VcD ;XOUTSmXS CB-ue`}M~e0li |ێ$_/rA'cp)N૩Y 0&PG+ nSbB*VJߵ?~<,/TUiapdրկ5tաmB|G}Xd Y2~]*lְy`+n A0E\#c2:!c;2fx"c EZ8A>b>%7Mo2^ߙ;gxe0k|IվƫKفNSBX'xG弑3eEj.v`3aQoU ]pm{`_oooɿlGCζAC95]<Ã4v,x:Ip`AVp>o3~,>53/ NJmE_K tuu4_;`iԽY[V$Y=,cҏŦ+9Hc}*G*2vZȈ h(&̲p-2Ԇj-vF]" Ijs͒v{6HeEsa.9*-ٲ&x6z"!bEЌyYCn xƼn`Pg,/ g',0,a+B#ARGَ<0dA`0kfmj!{^W 18Gnт .E4MouG=%rHˬ zN)˒xKz{6( Ec }q8zVWRtSW^3&Y#׃[wA:kͺdR+NIhv+_|r39DU8>:g+[@'Y06RIm1+5 %`PGW+)ZЉX|0YTemV3D\mn/9zAI8d?>RQEo|c{K sylFw1G8!M+5`ۣmiu56(J)V[;_/J 4Dw xmZű fYHy7 Y )C8Bؕc U*l!l}qY*jUEcߵ(˚ׄRwF1  t44XiBk7^$_"a)0b3˛` ?l@+`a?8⦴Y>0裆NZ|W}4`K۱ 00ђ2I#1[5o#@NK@"wZ;^0džKJz Nalxk+V:H}>07■$9UC1uu_LdH a3'Bn+TcѹR]3ACz .*=ԍA>6Pq$jX1' 'TGGg,}4΢fVa`wTP8^-*M Zڿﲉ ;m1t4KC7->+^^eGOId4ȫSi=T*E[ %Uiͤ+FMȿ`Zm B(M}@ҙMhkWVih.>|5'.d˭lFGOT{5MyFiJCRӐNh/NXkrmmLT/J-)f5Uop5I 6ihjbm;/qJ7w״kKո3$UD,:bJKƗ#{9@_….sZFZ~ ,2&KjoeKOufg'{EN[ӱlRH:@Gl5@Ctk@)3ZTSPWW^H+J5':Jfh4hccL%& L?(-kċh- ~Wɮ[M,>ea;VT8*YvUa. 5"bAY+/ƅ}#@T艦~IGќZu:猂@}j^hIP WIb5H}VɀҔ,Öʿ#@^d,ϡU9Ak4`?LIENDB`openttd-1.3.3/media/openttd.32.png0000644000000000000000000000465312246102547015371 0ustar rootrootPNG  IHDR szzsBIT|d pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time12/19/04TIDATXýTT"0@Ti(3 " ("()#"HQbB<Q@Lx2H?K2 3;3]&ĒZ{̹;ߧ\ 4spEpY'aYKo h/Z->05VKy_ .FoZth8/LËKa ³J8N{ad7 tEq.\<84 Φ8z,t ͅ X- 0/m  \ñ$|9٤= =oL{A > LoPWg.|>35AZ@RpZ]##Gk}y.ӹݷtcQiH BSsqf"#j&@n;'W=A|8;PgImŊS}W6[#CgkQ# "9]1.24oTTU wN"? BLD_& }fdI@.R<͠mB/T%:Af㓢x.pDw sѳ ={y#rP[7-BGG+6]+R oѿAtDZuSG y&rd~KdfƁswћmޝSѷk 28f_}F8+V4HVĤ)CL"IDHV)T`*Ӣ{{5:,{tw,1 B[8LIkP\Y`")W'M(X.tJ3o 8d`S20%!?rb7Ԍǒ8!֔e F&}܋T{eUοYpy/kh |)\M@(DD'v@X %t:h`)Jm[E. Sq% D IW##C|SE[4kCIz߉t;9eų)l r$ Q7w# i}ĒlxV?XPs~QX-lDeҗ[ $@C$&HKKQ e(!3d75s+د!eM>oqCu).kwD1وcJ;= t@"M{ށK"R Aw/Xvjn T"F$Α )脿`@4^Ä"To0lCu*#FRv<^+(Gd&Oi4KLM@T.yf0#O]R(kuwaL #RrDs)߮kQ \vrYph4z*L׽G3XX Y#'رj@p\ףb_g qUPWKJg<ӆ^2#FH%]<][ )@sP\%kB@Udmm+jer"NfT<10 &κ!*xrgdhecamzl:IdOD$]6׺%H! Ʉ;v2U%""t&F3 ehhx\64khLdv#}*UrX5XӶh#8,hS*eB̷/3~à?/k0 >.z+0pAaV'!\%f#}ph~Na$׭0 o&BM17jo~^2SiU`j^$z7Ϥ"%Qx^G~ۉd=|x^ 9^D3 6`Ś7jRX$CvcNFP_a|Ѡ qF [(4uRl=A*.BEB0 '0 6`Ƥp&"z(g,vwq!삤]@. // -1 * 0 0C "Tram track graphics by PikkaBird" -1 * 3 05 0B 71 -1 sprites/tramtracks.png 8bpp 18 8 20 13 0 4 normal -1 sprites/tramtracks.png 8bpp 50 8 20 13 0 4 normal -1 sprites/tramtracks.png 8bpp 82 8 64 36 -18 -8 normal -1 sprites/tramtracks.png 8bpp 162 8 62 36 -16 -8 normal -1 sprites/tramtracks.png 8bpp 242 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 322 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 402 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 482 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 642 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 722 8 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 2 56 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 82 56 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 162 56 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 242 56 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 322 56 64 39 -31 -8 normal -1 sprites/tramtracks.png 8bpp 402 56 64 23 -31 0 normal -1 sprites/tramtracks.png 8bpp 482 56 64 23 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 56 64 39 -31 -8 normal -1 sprites/tramtracks.png 8bpp 642 56 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 722 56 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 2 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 82 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 162 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 242 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 322 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 402 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 482 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 642 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 722 120 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 2 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 82 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 162 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 242 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 322 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 402 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 482 168 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 168 64 39 -31 -8 normal -1 sprites/tramtracks.png 8bpp 642 168 64 23 -31 0 normal -1 sprites/tramtracks.png 8bpp 722 168 64 23 -31 0 normal -1 sprites/tramtracks.png 8bpp 2 232 64 39 -31 -8 normal -1 sprites/tramtracks.png 8bpp 82 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 162 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 242 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 322 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 402 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 482 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 232 20 20 0 0 normal -1 sprites/tramtracks.png 8bpp 594 232 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 674 232 62 64 2 -49 normal -1 sprites/tramtracks.png 8bpp 2 312 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 82 312 62 64 -62 -49 normal -1 sprites/tramtracks.png 8bpp 162 312 62 64 -62 -49 normal -1 sprites/tramtracks.png 8bpp 242 312 62 64 2 -49 normal -1 sprites/tramtracks.png 8bpp 322 312 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 402 312 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 482 312 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 562 312 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 642 312 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 722 312 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 2 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 82 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 162 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 242 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 322 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 402 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 482 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 562 392 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 642 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 722 392 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 2 472 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 82 472 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 162 472 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 242 472 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 322 472 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 402 472 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 482 472 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 472 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 642 472 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 722 472 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 2 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 82 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 162 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 242 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 322 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 402 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 482 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 562 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 642 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 722 552 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 2 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 82 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 162 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 242 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 322 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 402 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 482 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 562 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 642 616 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 722 616 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 2 696 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 82 696 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 162 696 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 242 696 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 322 696 64 56 -31 -25 normal -1 sprites/tramtracks.png 8bpp 402 696 64 48 -31 -17 normal -1 sprites/tramtracks.png 8bpp 482 696 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 562 696 64 31 -31 0 normal -1 sprites/tramtracks.png 8bpp 642 696 64 39 -31 -8 normal -1 sprites/tramtracks.png 8bpp 722 696 64 23 -31 0 normal -1 sprites/tramtracks.png 8bpp 2 776 64 23 -31 0 normal -1 sprites/tramtracks.png 8bpp 82 776 64 39 -31 -8 normal openttd-1.3.3/media/extra_grf/signals.png0000644000000000000000000005630312246102547017111 0ustar rootrootPNG  IHDR i\sRGBPLTE 000@@@PPPdddttt4]@DjYFH"jz./=>R/E+ i]Pj.RtR#_]_a 8'EQlP?-^@_Uk$u r)% )D]_v5A蓯A UT *Uܐ dI3l`Rq?`я~':x!ȝO;x}~ z0o<7؏ח܉233fgn3`v` o@lg wH/-b3lvJ:ng%Lr$a7?~5/-0ay"D (.{EtWa㺆/aP-Mm&5Ho`"YHƧ,7_ ,X7H) 1]'ۄF`˷!;w 6F6gۜmi߂ S뽄ޯoĊ~uM%:7-@L9 o,\mĊ~u; o _jR TRJ .U]]jGmZ;miX5͞>.z2EoOK V.n^Ef:[1s:45'?R-x›'ic]A7orl?ooz>vS*OE,5]J֤k]_-Ҧw f|m( zD9cAM!t}DwH 5 `>^'_hqJ* U  @,C:;\8c"+Glr#قAyi>|^#Z-cn!3{E E?X8Q9^s #C;?O5.x0% ` D{:~޹|K px ZvcNG -:; s@?`>9/G"1 k5!vn&C A.1Lӈl hH"gnb)t0s"Ztn3{׃9\9K?۟l1$x }X28+ B! pXt]D"9/s\M=W$p2~fO Ce YABvr`_k{NsqpƱ~ޟ}xt !<($Dya_rP-;HjyLۧg<[ دO-Z6~fτ ̜`yL4_4۟lE y#fޑ DDu$fN&H< /2b5[$w9FfT FN#`bAXE5s ̜`9p, 4Ǯ%:JXŽWyX $++> "8ļ\b]0B axnUd%Rbek$HZC5e%ID, @ #H U&HVrA^3Fu`-A^5d%׻ s-AM 3QF!! Ȍ?v!!d!F ! 2sAdFeЂdyE2!%Wd/K%IXr!v<DD$H {*A*Aޞ ñQoE?-{QA*Aȸ1N&H>-8#dܷf kMmqb{3[9h/!"|e@^!H_DBS R\L|7kOZcڹC)]{jp%,nUsg!"ćqVew5N.ۣ^z <%A/?^1q(Z{څ)]Fၑa(_T4*HWK'k3AF"  QnjoU:)K"K B [g)CZTSĨwSQ;5kO41$6i٤%]/)G]_TƷx RJJ*U$HAb1Á7$~9~?hε>q]6A?b j7~}r#&cODl2b?;y85wxGD{M2L<(;CC.L/sx/a~gC/?aEQFsލ5Gv#Gʰws?<, k ? sg)~7?S@?'H 9$BX0BJA {' lI ;bg&G~N8;>LyS`>;#&b; b"wFĴ"612x0w<+s7HRq Ν)2b8qFN@>bD=&;wX߭[~dj r0wF:Yd%RBE5vF"k?aJ8\!JwOKgw;XD}w$Og :Z| rU64jygi`Z4J1f'a5w ߖEuC9 BR, qOc$2P"mĚ=qiQN!p9xuq%HFGǣ}'a"5aa>5^Kvt|sï&țí7Gǣ?$2^Aso45\9f >qbړmgN 9L W]s/ )Fc: 8xߵ}I4>u)U78K9f]KYl35&^ uh H17&ȡkHātc컶OM8KA KӍ g>cTcM(_,ü?)Csc^&.ʕ #ķAX77&4y Ӯ 8gÚo/㱁SyIj\b B :۩qŗ -XKĚ3_b 㢽^vOM+vSw/ceCO1 ?5魗CN-8K žEpEZxBLz?5=1|)C /Vnc^څm1p},Dۼk,zOq']&O֋m`E[B$ 05^KAK'WSW^r>;ۧG h2pIZ\dy_T`aIpEA \hS %׿G$ A] > QU}*ATTYF*UTTR RJ%H* UTTR RJ%H* UTTR RJJ*U*ATRJ@Y1/Sl'RiK0˭r;N[%b?RG}W]aiXi~8m/d5iRhWƷ:> v~._?)#eدp?SdAHJY_@QZJ\DH"BXdH2k?G+fRnW)^Ѳv~(*(,YSVB,K(>r?]c;)?jǯ/*/j짎/*J OjUUJ(uƱcDLx1fF[~oE;˹cM#h[)(#|%;?^_~;±1~o|4߀A@d3?833''3xa̱فv~g`|!y52Ak⟞烍/폏Sx1)g;米w3jЏ,f3Yn Al~||Fg%WĿ>z ! Sx'~82 b$Ês'ᇀ%F)>@ĈƒTr?(3+)ϟBvrsRv;as8_ygz kЃ3?0Y$ A*9fJL#F)1Ae8wȈ-1B BȾ ͔X` R57⿽Ŀ>*_xL_y>QG4WO B'%H0^O'е@O W韻~Cj+4]}+ƿ&D%DbTڵT=~ZpWvR_:^A#k/'%=h+G\@W(LH0c;)Y e B+kzRAu%ėkvZҾKۇ_ŪRe.V*U+BGK;vgهbqA( d!z !H ,."~"ޭ!: c]M=W$p2~fO2`A0`dx%A HC)HCڑ 4csi #T4@eC$+;S柍3qfN0<&$Hg`0=,OΧlh`5La"ה ne Ν\"eUHE}-Z'7O-:3}K A.G{=,OΧl>lJ)Lfye3"8k$Z?DKE3c36]" ޗ\Jؘ̧Xb,9\sAJ"}"Xb1fR&=%wVbYN3.K,K\!c9/AK Z8Q왖9\s٤~aưA+,'xa>+BdO AG/%ȇfĜ 2Hj~=_F E,'HOz "pޮ_i ~ .o\͋Iwx4d@oN? .o\͛Z|$ "+A6 JBtc/ 1칁 Y n;cnBA}k r}ލ R2Aa%9eڿA}kftIM8AL{ofqۙ1|d>1OWRsq_KL&9 x3 'kSmDm @1Ϭ04oSמRu~_!+08,AÄ~%`A HOsS` 6 |f 0AIеTۄ,DЌ  a$@uc$ '9M黶OMx-A.H~>}`耾-:(K/J,N$̐QJrN+ķAƛ0+s8K^Lfa:47&4y Atc[ 2w%oW$H^ca @@VZۏGN,ڮ*0-A&go=/Fg%5Ȁ}% yɵĚ3_b aǾN%ֈ/- "XIz!jTb%!L"-%o6E-Etl|:8/8_fךi>7N4I/DAheUb;c$>\D9#̕K^[Kۼy"g>~}>AkAV Ò rs8 r(dQa> s ߉ ɄdoE3IZ /LFd}EΫx5̯۞W߿|XryM \1UVDsM<JJ*/ATR RJ%H* UTTR RJ%H* UTTR RJ%H*U*ATRJJ*U> D Dz"9^oQ;]I?n/_/Neɣ\TnEH Y?LE'͗δdQ=jǧR9"DQ8S}ֲ2̾<>]_ 1va|~RG WcGFJUJWSV@OoQ)| ȩĺD o⸇ \+Kqkhz@lJF.NXy(qE~.V}6k"~&j"46lP ,қtm|-_P뙻]"m^5\} \+yyk uɾKSK2*iJn' [D}k?4"GZe tARSPQ@J\_)2>RƷHi|gW_"ؾMZRzJD/_/a1JJ)5iW)^?*W)^?2ڌ/R$+nQHS;)?jEe| kzZ@Y3&iyix5b]*U*ATAȘ\i Yw̯;x]v*p=KAA fG]?M@x#M.z1eDh9So^h^?'܂D܂wO1˝7ƿÿw_^AxN/ ;(ܙ;n ⧮O3q{up=c`Aڠd@فi|B40ً gup? 2Ad)Fzy6 ; ?s옃><3 rgCxKDq s]o'ȐA.sA @1B2eCP?d/*3d?՟[-edހ:g'3Y \?IK?̊ "rx SI)~NuzGX: 6X0_@i뺮vv;u {B@|(Zkz?'nAjBn0 eQ]xJ.Q0c~KE O!$k?8@@ԥg|QQgud+ %^ q9gu uT2bE&*lgQQjA=8 \HG A#@?$hD(zkBc%" %";d!@v>;6&cAz֖K,~4Eh"k-9hABp=l"%iD܂j0܂y%K !f-Qڄ Α!D_Xb]A& y-@)Xkycu],ֺ=Dh! 6͟R{%U& H-ha\܂3 H̀]EzwN T b(\i8!^mwx 뭵3&J3?Ϯ}>dq^mu`Sp5'Hi2"B e׳ N^Y+b -H-H"J]]&-8\Xy"%k X48,bF@`%4Am.A.W.Rl?BA.Vj@"nA2dDeAxcwV– }'  [ۼ?ǰӮ%+59@ !1Z(B?fkq!Hq /"P r is j?+ q b@b|;& c-ص 9AH DbA{)ʋr X aE :!],s $gsA mp AgJV&Hj@u7pP|sӃ bWE$u ®}$b gZAf!b | VK2V3XZɥeb$sjym=|d|Cɜ@?by|wƀo/Dzw) Xdw'Hq c],>ALJ@~-Y.U #$5 HvSo$LMe7M1VƗ}K b]ĒA],K.X!AX2ݖAJ{suI,H.1܂8qc1F"Hj@q905ef@WƗe5HRO3|+]G}bsޙ$L~)/ 2&"o/s”u0}#g}et߂u@Aڕ75Gd+Y X-bĸ%L&!HB b5&;1p R%kVr AۖXP!kn b2Xzk ],^9w2e I & KAO\+ nmEzEIO $ED*bAn9ȿ.kw07B),5zĞW1r.h??\3FԿ΂.?OoAP O:W9h.$b3[9,W$5`%Ȳ8Dw3B{,~ɫfw$R)@&P}a{ݐ _M=|Q{} R RJ%H* UTTR RJ%H* UTTRJJ*U*ATRJJ*U*AT BD1 ?翓=Ao0㝽2tۅ]/)H;\OۯO'GGTnivӐ~]_;ޙEBMS#4Ql_>uFOfxg[p1Qax^b|k;wvIi_d_R"cF%o_?)h_!C[L Z?FؔAů1XqV)e+$AQ2+kL!Z( bE5ȵD} !6Q RT"l/O+˖Yo^U]rF.ݳCݶc"xo$~"'bҧ=:_}1S~.;8Zm@{;:t}oYdp±1KQOYdaa 6;g%l'bg&G~FsZ׺nȵ)1QOYdw1;#by J2&&<` d=&$B>6BZV[l"I֓\B~O}G]` 5 ukO|nu],&G0NUh}( #kKׇR}mxJK yI:P~2`-zO}'%3ǻ XFy` 55H ]Z Yo4ݟF! >]|ZP,^-8̥Eb1 X [˷]Z 7$LN¶2M+xR< J!]K#%+ZxC̜QgWp)1>C\ ۆ1xx'Hq /Ƈmr_9]/4`E %CVRhVw?q^_T(QO9p R8p &Ga}N}N7 H7Gc MceQ"$_]]{?=껔bwhxǒ 0dA}N=}z>}}+q[A&^?L{f7=ň"$*AuqZ 2*T}43X 3 p?Sof7Ebs8\A 2 x>I}?gכSڧӃ}2`Ha}pφ]j]JɁ .5o ug"GH6CK,T Xb sR}S-Ժ}z\*Av,'bjN[罹qw.VZM%H1n fz7>YBJ.e^"89Hꯩ 2eG}C}zωe nR%I/;4bjiE]m̬$x sp=ld%\8\6f Oy4G)w>X S`^O>I/rsz?Y/bW],^/E5\z\F">"~1W$HFsR.pUp>'O/ا_kA$O/W|z~3[GzЗ[%|b%]"]I}q}j Af 9Oa>_ %{XaKkT^^wi0~,)6b#X>IOPSRɮ}CU K\KBCrB}99}bdnc81b+#$|#d'.6!bJO%ȶ!>A}]TR RJ%H* UTRJJ*U*ATRJJ*U*ATRJ* U'?tyCNS;N[څ]v"GUNӖvi|Q_Te$EI)I8]4%MSJRwj'eFŀI}~a|OH"$_Q&NJIa,EV,;iS;k `yU-! M>W'J{YbJbmj 5nTjENGjMkq|UbEH)TRnVr%A8o?86w"6ƈ1z?1G1ҋ~Q᎝±1 wW>Aro:c#oenfF)Fz; 'wg0 0~f3`o~S@Mo:4:p|FQ$ Sd\7?~p|__jgX8XoV$X vy1[$Lr$a8A#d ?>/ǚoo wjuA[\?IXΈ?ňnǣ}'a"-t~׮ n9F](a/ Ncl`M |7͟"#H$|<~Iw4M:DM)_82xoyJGm1.=qkBL#wjey'c}`lyKh@#F' [SӤ#>=9~zp`'kO[9F4{oͿ ~IxA ab})X)4;4kPkněl`M?5e|l*AX5XƐF=l:AZ H i Mǯ` -@V&H0ݽETɘڮiEhsp^b)%K)n^by9^z/Sӊ{kht۰ @ ,X7HoV.ҵ)W6Ez鍲HwmI1y$~^8[ϿmGk3(uͩgЍ۴W[r zky WU 'ȭ33_UATT"j*U*ATR-=y1NӖk(]&c,њ\WBQ9!*G,-Ʒvy| ?殧t#%~B|Rg |RgX Ʒvkj>#| R ^?{J{?)ϟ4{3-;?$NJx~xTηX7\0`҂:(Mt*{,k]/;C^n1yEe|WAV]&[YYQxΏnaGXUhѧJ*BYb4o"SGDax!uo?cVY_ H WX]?MX=4ףO=L󧂾{~ԟ'0EDB-瞟4E+u0 [ןк9ǧ? ]~iBieNzi׏G ;d/*?B6( 8 EK9 A֝0><=pKs2ȥ}1pn3HXAB28FB?qhE}rGϱy 3ȼ :LG[_ JO &Ƈ0,\Mv\ǮG}DX b .i AfwЁ'{Qj/ HAOG-H: 6X0 ڏ$Ѥ?5Bܿh1!A֝BRaFSuc7uu ~NDL_xbS2`I/Sf uT2bE&*lgQQjA58 \ ڏ$ͷп(/Z_f2Ⱥ6 YF9Wc%" %8gAzm`UMtz9d-XxipDZ\ABp=Fqڋ(Is bF HM[_-/0O?xklRfvkiDDk8G]ׇВ66eTHwR2A¥3)G"PM 6ًR{eK$M0 AAD0IK}Q_ȿu ’ Pa+ tocX `(Wֿ&q A/K1 Ihi ?Y_3` 2L6Fԉi-H|˲ B(P2ȱ], C)g D!7*\$ℷG A=b)$eh܍d(Q_T/t3|tZs>GvU(mXx=kA|0%W?ƒBX],` b|WjQG܂D>+wR H`@Xs6~.OM@8eXvlmAf v2J}!9A’Z .~Y_Z-be~VF4~nA"p :p%f99C r80FL% b~`azs}$k]ߴ%l.C"/A H0%f*KkAO~'f?9%֘`yDO2@%AQ& Sr!Ș "n 0{?p}+ٔHNrdtK A @"-/"wD|s$>Fn?MA -X:Q*ly6NL@Tߘ Jugf2A^3%\aiF$e׈ c 43̬k*b%Bȑ PRaR 8`KwxzJ C3ޚQ_9l~Q.C"_HwĈ jXVڲQ8fa7̯9潔\IEB,N%] ͛DJ.ŀS ۏXhlQDTBCFI3_NK<"\D W-Xkc K>OA.> U|aUTR RJ%H* UTTR RJ%H* UTTR RJJ*U*ATRJ$b,}'>i:>ۉv, 7ڳm B4=N\'>IiRr?_z`2ׯl1!%BK/|iThwj"[AH͘kѴvuA,^|z?MnGAV̋k2} rqWGZ׮dRbUR Rg Q `ygc۶pݬppw7R O'@Dۿ5Or/qǷ{(' Cw\` $,!0"s@l9ץچKfp2Tp`OA v;u M)gTyoda!9ŸZ+ bI2.Dv p}ې.;,S J᭳]kn M;U!.4["4vsdN%k1O\,Y٧ʇgqpڲ ϟ;ޖGj d=O ԹyouSBdLjhUXTyg EK:rv?U@e[j {'XE4$ %eslvLs5vqB[P~()A&gYs5HP"NʉF %gO %ThfMSw XR `p@p{ޗ`' y5AN=_?Aec]^O_eq}7A8@ĒB%2`Qx;E[^oDF} %8\A m I}?d`󶟽ޜzѓEtcgK#X!A+ Xrڱj]JɁ .7B94{}o&<0`,T Xb O.kӲ#dVr)AEhRM%H1bz7kVr>Yɥ,KSAZXM8\6f $}(p7+ b~Qc6OJ*^bAɅڧ@>d{ dK\  Q-!bz\fd^O>%H)_Ug #$\oKt1B&Em^]4gzЗ[͋%>ERTy] \%1%`9T],9f׃b]кF\MA]S F|@+#!! }K1ck"^= _ [2Z RJJ*U*ATRJJ*U*ATRJJ*UTTR RJ%H* U|?=#8IENDB`openttd-1.3.3/media/extra_grf/tramtracks.png0000644000000000000000000006253212246102547017625 0ustar rootrootPNG  IHDR @ZsRGBPLTE 000@@@PPPdddttt4,|ƟcKd3k63|gdt 0x=g藅7GF`3.ڏtz4lrx}sD׽Y 8Xƀa{D<z?_[zRԢdχxAuы43GG21k =`+"wB¥Gg&fܘZ(gsχIY+Cn%{8NFb߾YSgijUJ蜐n<Ŏ/ q&Wl&Qo( </EѓVAҏGk#;Nqm 䄨eHʗ⨧2ޣ^b]=`dRwf'ۍ7o*OĝV3BD1'|ew䧗:`;0&zzSGLD?¿Zd~ ꬝qP/ț"oߌG'5 Q;!x WpR_%!I?_0hiؗMQ$_#_|PL!czD6"J]x4'b`Y_EOĵ<ZzHc3O{=x|8+443~pULТI/h9Oǚu$RO@ӿ_+hNJz{ѥr4o2IMy1==<fh1=\Je1iOI?Ψqaf ;=ײ̧>^\͘w@noEG]t]Gcz4vn{c4E5\+c&z/zxCf2Vzq^ĺ]pղupֿ7Nz'"#M&zLNY)N.7ae<ƲxrV.A$Ўw6[FzByHV1oucDGaoA9"w,1-DP+Bc@Q83CK/(v#:+7߅5޲y>w@=F V#_"|-6z}}쎗YouX#+*,*xDaGmDiU j ;>/7ğl9o, 5"F'h q'}^\ŃW^xT;) ckҽXa=Bj bvvҧL>;bd4z䃩-uz' QшbQkUQMB4M㡥W^Lb[\e?HXE42țoVCH%xƀZ7T c-s||ՊJDU?"z=VރxxDŽ bɄ5y/` XXŝx] ŭNB+E>HS ^\MXB@L=H/dؚ{%zm%9"1RU;fG7 0F4 Be]=BĈUR mZ["4Ը_. U$ޓߢ(VH [, <1g ` 0 `8IqӢfc.,ɑZsr-ϱfѳ<^x=YIӛ),x3wUbee,MI3gOϱ-z/69plc`3qsG! @==u0 bz6ֳ}Bi y x^}s~{Q~'bE38OU7[.oGGy &eS=z_p7Nj3@F`PDŽt͟z"@|;$hW!oBiW>\%"JHAbNx!6VSDÿQ8X-1ij3TXp5X<Ń/5 QSC]Q+tߔR'+Mԟ&v40ym@U]Ow{ZZQ+=w~#m*d4,!}&=ۀ˫f> >sRzӓE4؃P^Ш,LBX*VhsP拡z ( p5sJvTPkқYWQ5 χ%V6j=@⶿l p莒֪S%=*e rxǨ^O1n- ɀz-Dݡ H<>MP@,@"z5Uf] s)WW lQ,y/l9FV@ Q-Vk@׮F@9 L@ 0@`W;` 0 @`0 ` ` 0 @`$ )B❕0^ǪozEXUn΢gyv}=y5ze0cyc]ϱz~ fdaQh,cAEsԳۃu̬I'B}?G OԂu>"'/ ?Gd\]% ?#2'{  Ի^DكK|_N9`&s㗑VzSKxznf)/bft51Q"JݽG=|@4ђʐ_giei X9zIU!M&"EW3n2"z!|F}@xx\: 7\p E)5J!k8("2E: joՅG]d@hAAVImV+HkzԚg-wJe}^]'ƛ TAz#x[8(!2QǏUvrɋ*YVA$_V#YjsObWҜk]"uBP!\ύyvGi" ]ᫀDuN~RN_ZU/z[dMԣ/&\IDp ?0p9x;6l?ɢDD!8~m;ſjAuPJTEEGiun _Vi?/D3C1Bd գ Hh5!}R=m<hF__*/́IjؘWCT9JSV6%|ILwo㍳+zn^ 2zCz+)uk~mZkͩV$nKkGF}t&&'|$TONyŧ|xV£t)uݢJ: '׳5^ x.D&މw]gC7i-{dVMoi,Jy[-vyil/Es: ސ>c@xTF/"έjA+Wb{(my"{ Ɉyd{N[G{y(s9! 2a;Z`YimdZ "Xf|g9/-ZKܾ=9IruW,jd$zh1\VK q):75K={ Ek2D?\&^!=?|D9߿^C/Mj!{ZDd`Ưr'ʡ֮':=Vf!a+W|[rXWb3W$\4NpgHk"2hy?cHIۀսUPETL]H*Q$կ_*]`2iQCXo.5n"Uѫb.Z')yDT%"K&BY <`"}"4fM\4OqQ89A|E*9.Tb됏WzK?\4Op3;Izהձ>^^d{LZ.u<4vI5P+_Տ<ēμI=6ȭMŻEH Wd'Dǟ}l]2iw1\!;uRZ/exog}-GuSpǕ:o`e^z`q ww5ӛ} Ky9/ZVPI~ÿ펛q}?0\Tiu자a`Z/X>>˶Iӛƻ6yq4?d1G㉞p}C@9|֧G_eswx"3B?T<̊Y3wxSj=ʗ VIA^z;!!$\"}aL]=N0<~iN -?2{$&= ۽(xH(-6JIvJdܿ!}ǿ~4.'3͚R/3lqcZNHZ>H<~]f_ Se.%L.?~iM.=LBJwDʀT5·lūmHㇽg";섥v}њ鑥~&c>7~JSc C'D<./ϩKx<~̗GIxsC3`{8Լ< M{@yy%b9t>jГ2 ٿU+s&>?d]z/ lͩHv&OQM3|TPǭvʳ0i&"&)H`?veL>4h>"'ŽSo;T;O)!(v=+¼?J>'TJ-=;wG\{qb$gRq"Y R_1H6 X^HJ|B!-o>v\n"PA_=sPeEUFU'Hj˝2lccKpFS2!4q`\z{ڟETNHHW ޑ1\+fy/_5#B f]ø}3w0|svlyZ,ĴO:X3^ڋN* $UvĢRNW4ڸ )RHV-{bQ4 FX$f#8oX^MFioԿ;jxKOӻIlE.Vxɽe _<2pw/ٚ+;sRQK}jm'U*{C|W3K[]SjHtդs"di*/ŶMTQb=?Ld0Zn||od_]g5^4U8^#$Tjӭٌ* 7@GߤRnk6CoEQTZ%bM~:"kp0lۚ=-MIٮo{u_l.'ɞZCtx3v\+=}^ q5ݥA92_2џIJp۷_, Tgɕ5yjvϗhE3ZmVd'WMľEsDdL*&|0s)2eM\- IDAT1{[T[mxGQBdˆٷʭN*^X@!wY++.Np\@;3؆פhzu,^ 9u,L!Mru;R ѓ⪴:M;㕳|L[Z9~8"5&P,يn<Ǘd&Q_hٚUS5ЃڞƮXʳG [фX" }9Y\e4̋)NQOV?Zi+oL ~jҤwqm-o0ۭ =15\n,2ZŢ WqE*<Dc)_ּlSſ<]v,I$b_}juO ^mȵ)NžL؅K2,:dZNbzbEdxZ2Uؚӥ¿~=CV?r[O#-9QEDA¹xp 4hO.މtʊl3Y+MLZsvm&ShL|J>h!j[zУ˻\Y1\,Ed&+v4An EmsjRe"6Jf0G-?K/ VyIiInv}Z9~عvX"xA~]$q УK9:7?UŦP*'Q:zGĚ,ed*rg8^Uhbi8+/$:\kk74h)'~Yo2 #]qztjƢ54MdzzEr_&>vꮜ2]ܿDp#KXgdQW\(PأMĵzWk7XWZsu?k(OqPEr˫z;緼7ףߕeyl뙴qlX͗ſD~郺;}Wx:: MCZg,;;].yea<[gɀBZ(#*z4N3FpݑD0=(ɨ4D [_]yo'B$fg2ir`5oqyPP%r";Tg$1:KSPhW^|-i"23_Dt2dUjN#n틨b{U[R^UWַ?Dx[B/9X[{eV*:NIE 1SV{^:W]uwmX8CAJ:jU6GlA( XVūMӻj^=j뽼D(ˬ^ xxboY^~qiS]k*zcvؙ#Pܙ$츳ױzMikD'^G\bC;! v|CNawt/w6")Lo5xh-uS+sM,kk+kc>KiSY/bkXܽz7W*Wє{Q>a>BqRfx'E0te!gz`|TI^{h5[=Xe٘G VG ؚR:]R;@.]. &[s]=ٮs2ߝ' I0uA]o?j5z(|֟ U"څ֜Ԯ^|~#nB@S=bűXӳ? 𢡄w,F<[We{Ym Pf?bax?yX D(}';/ <|w,hW6z>޴ҵw&@"ƋbA<=pD|_ok H"x}bWλO; y77Q2HF~ۗ$">_8?UDfj> f(xcލ"2jVǗ߾D/*#"Rl2밳 q>xk~SdzƗ/7E>7nV"r @97,NDAYT]y/UENhD2?jl\7dY$<=r"pBNO"ijta#"DCo99@ɳH 0-ve |uޛ1Bwl'eY ׳;c-<؟_r{ @`0ӊmuuI.^o:]=2; kϛ|x&=rIě|x ϛs,w-z$U/" 0eCztnN`1 u/"dSJ^ϲנCoZ'$X8-ۍǴгOF 8An1tB4NDЃXwzOp<$<_q0AD%*؊W cϛ=]OYDQ?2ȭ@$H*+^H;<O-cQtzȧO}Y`"'d 8YDa,OKzh^@jtDOӯ<?BvګG 퐕_ׯ(f<|~Wjzꟲ &xrB؇wWj +mjopmhFRԋ+z3cGo̿)B.:˃qAZE*VeQ Q{"A2|:{~ؐiն<kz5X'^<ǖ޸*W5E@$gكH b"3+%=|._ݩ{0T]U CzS[xgo} ߗ=OOAGލ).<!ߺUDȺU kcuiw3BZatU  (n,Iog}CJDAA&Rf~Pi<)l#b-=N7,y,uXE>[dZ#S>O;P!o&CEHgo.Bs?Y?_2떫hۂ]rW^<Uh6?ŗH@O"^{tȝT$9OOE+>>E#DnG d; DʅX߯e=bZ(l-m!9H-@<VGGWt-c IE$Be'`7A2>'k}5\ٍ݈RA=2 ȧ_˒Mo7qs7zr Sy *fedD\*qڗX}03 dv@P1^Fʹ6{ 'DL͏̯#y7 OBGoݽb)@='Q䷪5@Z6٢i%@%,#.6tA= 9@|3TuR}OV9Mn x4@ kzJr óϱȰ @ȼ8σ{٪ި 0 ` 0 @`0"we0^ǪŦ{cQ#Ţs候o3U@pD38L* z'd]+Yz2j_+9~>LW,Dd=AV*B@3U3e֜4-b͛A*x(^*7%Vou[x}рTΔAx":x&;ی$ uTwm$GN))wҫ~jX￯ӿAjp.6# Vzx^KUgω]x;H]pжLj#%ȔTێRh֊EgiH _h%GHU^6pжm@´e H_d @gnle׿3e; 2תu@.&XD_^@4,ί@ \=2fWA22 @ BOz_K/ @  re4tv@/|80@` @ Z ` 0 @`0 `0 ` 0. &/k=7͢7x9?zRpVt,,n"g9s93ųl=:o%/3_). fı{: -pe=|oyL h}B=!X@^<^=  0iC8`+<zW9U=ώ7+bZ'c3k[xWABPYs 04=oR̮ScIn2DyV,rׯ)o pAĪLbKL̏9"۹rb2ܚo!Ѯ+]u7q֛Ⱥ5;vƨӚξnnl,٦zM8+U܊}%x< xJ,Miғ43rW*fUmbJ[֬FIY4 ԋ҃z E JImF]hϘ/>yi _{7s-͗AQл-!ycvzJH l&c A I6y)GCβg%كx}9<9uG﷈k ]yq Ѯ8Dw݀xy&} cgּ>%!$@m,`~6ڭ9 X~ U4.V<k^g[^W)۷҈ ծvSx@֝9  iaz!*@A^1  @Ѓ @AA rр\  aC@ @`] zՍ @`0 ` 0  0 @`0 `W)Kqz3ױ[#頓h=㵘gѳ}W7SY ,?cڝ~-. ֲgT3,:93 2O~r`Mmƾcyc]ϱz~S=@dnX^,̑DUgQ^@ؚrY|rpvz @`0&}V+7,]7]f(W6 z<3{/2ȒY0kzޜx/227x~erěeJ y3WAl@<=F_97 AȐ7xid zE;x{_b? Hy{ [Y06 -m,9zs){ @&xz HKؾ=g .$fjҙAӺmk{uisB1/\@gMX;no팷K}2@. 8=`QXut89 3jW]+-{9jע m˯i|{*zWly~k 3SJFZP 7:gh_;4^jm b0^ d՚Zϫ\3 =-@[^xkׇY-1Vn]G K ٚ]ot л,@z. d=pxSڼ9 {x %bi㕯5 kEbmuAȥ2\~=d@.K}kx12 w ФC  @@KYj  @ Y]  z@A@zzл@`sm@,{ @  0@`0Z! @`0 ` 0  0 @`0{zKo:Vs^6^l9+eAԳYl<,W6h9;Y uzk-ý\ 3h?zR\ӳ 8e^5oUŦ1^M=Z f\b&; @oy%ᩥAe!z@ <'C@#L,= \wt]f|Lc̝Cg,π̏U1:~O]1wkrcL Aey:z.ѡxd7E¡m뎥yz1}j4M]H˳_f|t'z$$DfS. Qd2]GleIE4_Mi DO zm${VdX7 ;cWo(z~p?wwIiZё҄"UED|T+Hk7/ e*Il? bK$ nDָ֫ ^=5.-gD Q#b]=yyE|$}O|$¸;{! ̨]ޠCǯ_`UקW;x{0"Cp#q+i&˫i]֜'מHdL Q+bBޭ'g@HCz]q=R5}Heeyqr,T$%y>QIً\B־ras4,2Heƌ@:UČoWŝ ZT29dtEK|TQ UǡRpeRWb'@|_D $K*uzbv42H8񫤇<:f"Ԋh)Z뷲C89$'3SjHt luJ@{ٮ+酡u ֜hͣKG_- ]A!=Pe[f[5d]uZ@ 3Hw# z} _Hh 3(dpk^Y &,wh5+;]}.ҏL# d}"@YY+羅׿3?ARh%A HtZőu9cwv gd4yJ,4z=CM/AuoD׹P@',<_҃tg H^ɑWW lBnqafB?BiU@WټM. y=U$Hd+^ J'Sg# =4coՉ3XњM>9FCuz t߿q@'q wU *'ģkFenͣ7^+ }wX/AZzX4@ڭy 2.$l@+d^NhdՔU(La !ذM)^7enC2pjy@ߘpϷ! %G5w@]_. 쫸(@|d^՚]|/8H4{eϊY Ě!\r9\! @=  @ uV@  @, @`0 ` 0 @`0 @`0 `@;[qa)C / 02Pb®Ī}PbRxUd @`0kЁ *x @` #}nLN )ߚI!}*@pvtwt/{:ZI] M88xv;@vdYʓj[: 88AD:dkC_2 .jTѮ"rFeN l*iӮRYY8)RTYQaR^.IDATQyUCs.Nf 2 ' _csƮ02 '$Kl7*V3rx2/pR`^dOJp/9vCvw^آ{pleևkDpR` ֮O7',ޭF'x@vE6ڋ= Y8) 9D8%CW/^ !(pR`c#Rzo{9OYz]I- 2KC2 ':9^XlwY8)W HYffٞ{eN RYiJ$}XI^@ʫĮz߷,+业ߋin>7#~@77. // -1 * 0 0C "Monospaced characters (Liberation Mono)" -1 * 0 12 01 03 60 20 00 -1 sprites/mono.png 8bpp 10 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 30 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 50 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 70 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 70 7 13 0 0 normal -1 * 0 12 01 03 80 80 00 -1 sprites/mono.png 8bpp 10 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 90 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 110 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 130 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 150 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 150 7 13 0 0 normal //U+0178 Latin Capital Letter Y With Diaeresis (only needed for mono as it is in the base set, but relocated by some code) -1 * 0 12 01 03 01 78 01 -1 sprites/mono.png 8bpp 370 230 7 13 0 0 normal openttd-1.3.3/media/extra_grf/2ccmap.nfo0000644000000000000000000062041312246102547016613 0ustar rootroot// // $Id: 2ccmap.nfo 21535 2010-12-18 13:04:05Z frosch $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // // This is the DOS 2CC translation map which OpenTTD translates if needed upon loading. // -1 * 0 0C "2CC map" -1 * 0 05 0A FF 00 01 -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F C6 C7 C8 C9 CA CB CC CD 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 60 61 62 63 64 65 66 67 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 2A 2B 2C 2D 2E 2F 30 31 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 3E 3F 40 41 42 43 44 45 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F B3 B4 B5 B6 B7 A4 A5 A6 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 9A 9B 9C 9D 9E 9F A0 A1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 CE CF D0 D1 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 58 59 5A 5B 5C 5D 5E 5F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 92 93 94 95 96 97 98 99 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 72 73 74 75 76 77 78 79 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 80 81 82 83 84 85 86 87 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 88 89 8A 8B 8C 8D 8E 8F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 40 C0 C1 C2 C3 C4 C5 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 20 21 22 23 24 25 26 27 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 04 05 06 07 08 09 0A 0B 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 60 61 62 63 64 65 66 67 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 2A 2B 2C 2D 2E 2F 30 31 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 3E 3F 40 41 42 43 44 45 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 B3 B4 B5 B6 B7 A4 A5 A6 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 9A 9B 9C 9D 9E 9F A0 A1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 52 53 54 55 CE CF D0 D1 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 58 59 5A 5B 5C 5D 5E 5F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 92 93 94 95 96 97 98 99 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 72 73 74 75 76 77 78 79 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 80 81 82 83 84 85 86 87 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 88 89 8A 8B 8C 8D 8E 8F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 40 C0 C1 C2 C3 C4 C5 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 20 21 22 23 24 25 26 27 CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 04 05 06 07 08 09 0A 0B CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF -1 * 0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 08 09 0A 0B 0C 0D 0E 0F 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 08 09 0A 0B 0C 0D 0E 0F CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF openttd-1.3.3/media/extra_grf/oneway.nfo0000644000000000000000000000205612246102547016745 0ustar rootroot// // $Id: oneway.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "One way road graphics" -1 * 3 05 09 06 -1 sprites/oneway.png 8bpp 34 8 24 16 -12 -8 normal -1 sprites/oneway.png 8bpp 66 8 24 16 -12 -8 normal -1 sprites/oneway.png 8bpp 98 8 24 16 -12 -8 normal -1 sprites/oneway.png 8bpp 130 8 24 16 -12 -8 normal -1 sprites/oneway.png 8bpp 162 8 24 16 -12 -8 normal -1 sprites/oneway.png 8bpp 194 8 24 16 -12 -8 normal openttd-1.3.3/media/extra_grf/aqueduct.nfo0000644000000000000000000000353012246102547017254 0ustar rootroot// // $Id: aqueduct.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Aqueduct graphics by Jonathan G. Rennison / PaulC" // temperate aqueduct -1 * 6 07 83 01 \7! 00 09 -1 * 3 05 12 08 -1 sprites/aqueduct.png 8bpp 34 8 61 32 -30 -9 normal -1 sprites/aqueduct.png 8bpp 114 8 62 31 -29 -9 normal -1 sprites/aqueduct.png 8bpp 194 8 61 32 -30 -9 normal -1 sprites/aqueduct.png 8bpp 274 8 62 31 -29 -9 normal -1 sprites/aqueduct.png 8bpp 354 8 61 32 -30 -4 normal -1 sprites/aqueduct.png 8bpp 434 8 62 31 -29 -4 normal -1 sprites/aqueduct.png 8bpp 514 8 33 23 -31 0 normal -1 sprites/aqueduct.png 8bpp 562 8 33 23 0 1 normal // non-temperate aqueduct -1 * 6 07 83 01 \7= 00 09 -1 * 3 05 12 08 -1 sprites/aqueduct.png 8bpp 34 48 61 32 -30 -9 normal -1 sprites/aqueduct.png 8bpp 114 48 62 31 -29 -9 normal -1 sprites/aqueduct.png 8bpp 194 48 61 32 -30 -9 normal -1 sprites/aqueduct.png 8bpp 274 48 62 31 -29 -9 normal -1 sprites/aqueduct.png 8bpp 354 48 61 32 -30 -4 normal -1 sprites/aqueduct.png 8bpp 434 48 62 31 -29 -4 normal -1 sprites/aqueduct.png 8bpp 514 48 33 23 -31 0 normal -1 sprites/aqueduct.png 8bpp 562 48 33 23 0 1 normal openttd-1.3.3/media/extra_grf/fix_graphics.nfo0000644000000000000000000005016112246102547020111 0ustar rootroot// // $Id: fix_graphics.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Fix bugs in the original graphics. By Addi and PaulC." // Non-toyland specific -1 * 6 07 83 01 \7= 03 3D // Fix missing wheels on the wood trucks -1 * 14 0A 04 01 87 0C 01 89 0C 01 07 0E 01 09 0E -1 sprites/fix_graphics.png 8bpp 82 8 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 114 8 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 146 8 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 178 8 22 16 -14 -7 normal // Show correct graphics for various 3rd generation trucks -1 * 5 0A 01 28 C4 0D -1 sprites/fix_graphics.png 8bpp 226 8 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 242 8 20 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 274 8 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 322 8 20 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 354 8 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 370 8 20 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 402 8 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 450 8 20 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 482 8 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 498 8 20 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 530 8 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 578 8 20 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 610 8 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 626 8 20 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 658 8 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 706 8 20 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 738 8 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 754 8 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 2 40 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 50 40 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 82 40 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 98 40 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 130 40 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 178 40 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 210 40 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 226 40 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 258 40 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 306 40 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 338 40 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 354 40 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 386 40 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 434 40 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 466 40 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 482 40 20 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 514 40 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 562 40 20 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 594 40 8 18 -3 -10 normal -1 sprites/fix_graphics.png 8bpp 610 40 20 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 642 40 28 12 -14 -6 normal -1 sprites/fix_graphics.png 8bpp 690 40 20 16 -6 -7 normal // Fix clipping on the 2nd generation paper truck -1 * 14 0A 04 01 9D 0C 01 9F 0C 01 A1 0C 01 A3 0C -1 sprites/fix_graphics.png 8bpp 738 40 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 770 40 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 2 72 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 34 72 22 16 -6 -7 normal // Fix clipping on the 1st generation paper truck -1 * 14 0A 04 01 5D 0D 01 5F 0D 01 61 0D 01 63 0D -1 sprites/fix_graphics.png 8bpp 82 72 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 114 72 22 17 -5 -7 normal -1 sprites/fix_graphics.png 8bpp 146 72 22 17 -14 -8 normal -1 sprites/fix_graphics.png 8bpp 178 72 22 16 -6 -7 normal // Fix clipping on the 3rd generation paper truck -1 * 14 0A 04 01 1D 0E 01 1F 0E 01 21 0E 01 23 0E -1 sprites/fix_graphics.png 8bpp 226 72 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 258 72 22 16 -6 -7 normal -1 sprites/fix_graphics.png 8bpp 290 72 22 16 -14 -7 normal -1 sprites/fix_graphics.png 8bpp 322 72 22 16 -6 -7 normal // Fix clipping on the toyland toy van in the German DOS graphics -1 * 6 07 83 01 \7! 03 02 -1 * 5 0A 01 01 5D 0C -1 sprites/fix_graphics.png 8bpp 18 296 20 16 -14 -7 normal // Non-toyland specific -1 * 6 07 83 01 \7= 03 08 // Fix offsets for the monorail bridge heads -1 * 8 0A 02 01 EA 10 02 EC 10 -1 sprites/fix_graphics.png 8bpp 370 72 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 434 72 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 498 72 49 21 -24 3 normal // Fix offsets for the maglev bridge heads -1 * 8 0A 02 01 12 11 02 14 11 -1 sprites/fix_graphics.png 8bpp 322 486 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 386 486 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 450 486 49 21 -24 3 normal // Toyland specific -1 * 6 07 83 01 \7! 03 0F // Fix offsets for the toyland monorail bridge heads -1 * 8 0A 02 01 EA 10 02 EC 10 -1 sprites/fix_graphics.png 8bpp 610 630 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 674 630 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 738 630 49 21 -24 3 normal // Fix offsets for the toyland maglev bridge heads -1 * 8 0A 02 01 12 11 02 14 11 -1 sprites/fix_graphics.png 8bpp 18 678 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 82 678 48 35 -23 -7 normal -1 sprites/fix_graphics.png 8bpp 146 678 49 21 -24 3 normal // Fix colours for toyland maglev junction overlays -1 * 5 0A 01 06 91 04 -1 sprites/fix_graphics.png 8bpp 338 630 30 16 -14 8 normal -1 sprites/fix_graphics.png 8bpp 386 630 30 16 -14 8 normal -1 sprites/fix_graphics.png 8bpp 434 630 40 7 -19 4 normal -1 sprites/fix_graphics.png 8bpp 482 630 40 7 -19 20 normal -1 sprites/fix_graphics.png 8bpp 530 630 12 19 11 6 normal -1 sprites/fix_graphics.png 8bpp 562 630 12 19 -21 6 normal // Fix transparency of cinema -1 * 5 0A 01 02 34 11 -1 sprites/fix_graphics.png 8bpp 578 72 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 658 72 50 47 -28 -20 normal // Fix misaligned undergrounds for temperate monorail -1 * 6 07 83 01 \7! 00 06 -1 * 5 0A 01 05 4C 04 -1 sprites/fix_graphics.png 8bpp 2 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 162 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 322 136 64 31 -31 0 normal // Fix misaligned undergrounds for arctic monorail -1 * 6 07 83 01 \7! 01 06 -1 * 5 0A 01 05 4C 04 -1 sprites/fix_graphics.png 8bpp 434 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 514 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 594 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 674 136 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 184 64 31 -31 0 normal // Fix misaligned undergrounds for tropical/desert monorail/maglev -1 * 6 07 83 01 \7! 02 10 -1 * 11 0A 03 05 4C 04 05 66 04 05 B8 04 -1 sprites/fix_graphics.png 8bpp 114 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 194 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 274 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 354 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 434 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 514 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 594 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 674 184 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 232 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 232 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 162 232 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 232 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 322 232 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 402 232 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 482 232 64 31 -31 0 normal // Fix misaligned X crossing for snow-covered monorail -1 * 6 07 83 01 \7! 01 02 -1 * 5 0A 01 01 65 04 -1 sprites/fix_graphics.png 8bpp 594 232 64 31 -31 0 normal // Fix offsets for the tropical house -1 * 5 0A 01 01 FF 11 -1 sprites/fix_graphics.png 8bpp 706 232 64 47 -31 -16 normal // Graphics metadata pixel higher than actual graphics -1 * 6 12 01 00 01 AC E2 -1 sprites/fix_graphics.png 8bpp 66 296 9 10 0 0 normal // Non-toyland specific -1 * 6 07 83 01 \7= 03 0A // Fix offsets for the tubular bridge pillars -1 * 5 0A 01 04 05 0A -1 sprites/fix_graphics.png 8bpp 98 296 4 9 2 -1 normal -1 sprites/fix_graphics.png 8bpp 114 296 4 9 2 -1 normal -1 sprites/fix_graphics.png 8bpp 130 296 4 9 -4 0 normal -1 sprites/fix_graphics.png 8bpp 146 296 4 9 -4 0 normal // Fix offsets for the cantilever bridge pillars -1 * 5 0A 01 04 DD 09 -1 sprites/fix_graphics.png 8bpp 178 296 10 11 2 -3 normal -1 sprites/fix_graphics.png 8bpp 194 296 10 12 2 -2 normal -1 sprites/fix_graphics.png 8bpp 210 296 10 11 -10 -1 normal -1 sprites/fix_graphics.png 8bpp 226 296 10 11 -10 -1 normal // Toyland specific -1 * 6 07 83 01 \7! 03 0A // Fix offsets for the toyland tubular bridge pillars -1 * 5 0A 01 04 05 0A -1 sprites/fix_graphics.png 8bpp 248 296 4 9 2 -1 normal -1 sprites/fix_graphics.png 8bpp 264 296 4 9 2 -1 normal -1 sprites/fix_graphics.png 8bpp 280 296 4 9 -4 0 normal -1 sprites/fix_graphics.png 8bpp 296 296 4 9 -4 0 normal // Fix offsets for the toyland cantilever bridge pillars -1 * 5 0A 01 04 DD 09 -1 sprites/fix_graphics.png 8bpp 328 296 10 11 2 -3 normal -1 sprites/fix_graphics.png 8bpp 344 296 10 12 2 -2 normal -1 sprites/fix_graphics.png 8bpp 360 296 10 11 -10 -1 normal -1 sprites/fix_graphics.png 8bpp 376 296 10 11 -10 -1 normal // Wrong, non-translated colours in tubular bridge in 'normal' climates // Toyland has separate sprites which are not colour translated, thus // this does not apply there; // Pillars are changed for all climates further up -1 * 6 07 83 01 \7= 03 \b22 // Main tubular bridge sprites -1 * 5 0A 01 \b6 \w2559 -1 sprites/fix_graphics.png 8bpp 2 330 32 40 -30 -26 normal -1 sprites/fix_graphics.png 8bpp 52 330 44 50 -42 -26 normal -1 sprites/fix_graphics.png 8bpp 116 330 46 45 -42 -21 normal -1 sprites/fix_graphics.png 8bpp 180 330 46 45 -2 -20 normal -1 sprites/fix_graphics.png 8bpp 244 330 44 50 0 -25 normal -1 sprites/fix_graphics.png 8bpp 308 330 32 41 0 -25 normal // start rail bridge -1 * 5 0A 01 01 \w2569 -1 sprites/fix_graphics.png 8bpp 350 330 52 29 -25 -4 normal // start rail + road bridge -1 * 5 0A 01 02 \w2574 -1 sprites/fix_graphics.png 8bpp 420 330 50 29 -25 -4 normal -1 sprites/fix_graphics.png 8bpp 489 330 52 29 -25 -4 normal // start road + monorail bridge -1 * 5 0A 01 02 \w2580 -1 sprites/fix_graphics.png 8bpp 559 330 50 29 -25 -4 normal -1 sprites/fix_graphics.png 8bpp 629 330 52 29 -25 -4 normal // start monrail + maglev bridge -1 * 5 0A 01 02 \w2586 -1 sprites/fix_graphics.png 8bpp 699 330 50 29 -25 -4 normal -1 sprites/fix_graphics.png 8bpp 489 283 52 29 -25 -4 normal // start maglev bridge -1 * 5 0A 01 01 \w2592 -1 sprites/fix_graphics.png 8bpp 559 283 50 29 -25 -4 normal // GUI sprite -1 * 5 0A 01 01 \w2600 -1 sprites/fix_graphics.png 8bpp 433 298 40 15 0 5 normal // Remove road markings from tropical rail crossings -1 * 6 07 83 01 \7! 02 19 -1 * 14 0A 04 04 5A 05 08 62 05 08 6E 05 04 7A 05 -1 sprites/fix_graphics.png 8bpp 2 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 162 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 322 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 402 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 482 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 562 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 642 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 722 390 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 162 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 322 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 402 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 482 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 562 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 642 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 722 438 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 486 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 486 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 162 486 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 486 64 31 -31 0 normal // Fix transparency of steel mill -1 * 5 0A 01 06 46 08 -1 sprites/fix_graphics.png 8bpp 162 870 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 870 64 51 -31 -21 normal -1 sprites/fix_graphics.png 8bpp 322 870 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 402 870 49 58 -29 -29 normal -1 sprites/fix_graphics.png 8bpp 466 870 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 546 870 45 42 -18 -12 normal -1 * 5 0A 01 0A 4D 08 -1 sprites/fix_graphics.png 8bpp 610 486 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 690 486 59 61 -31 -33 normal -1 sprites/fix_graphics.png 8bpp 2 566 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 566 51 50 -25 -21 normal -1 sprites/fix_graphics.png 8bpp 606 870 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 686 870 64 46 -31 -16 normal -1 sprites/fix_graphics.png 8bpp 2 945 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 945 50 51 -29 -21 normal -1 sprites/fix_graphics.png 8bpp 146 945 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 226 945 47 42 -18 -12 normal -1 * 5 0A 01 04 58 08 -1 sprites/fix_graphics.png 8bpp 162 566 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 242 566 59 52 -31 -24 normal -1 sprites/fix_graphics.png 8bpp 306 566 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 386 566 51 44 -25 -15 normal // Fix transparency of oil well -1 * 5 0A 01 07 7D 08 -1 sprites/fix_graphics.png 8bpp 2 630 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 482 566 31 50 -11 -28 normal -1 sprites/fix_graphics.png 8bpp 530 566 31 47 -11 -25 normal -1 sprites/fix_graphics.png 8bpp 578 566 31 47 -11 -25 normal -1 sprites/fix_graphics.png 8bpp 626 566 31 47 -11 -25 normal -1 sprites/fix_graphics.png 8bpp 674 566 31 49 -11 -27 normal -1 sprites/fix_graphics.png 8bpp 722 566 31 52 -11 -30 normal -1 * 6 07 83 01 \7! 01 02 -1 * 5 0A 01 01 7D 08 -1 sprites/fix_graphics.png 8bpp 114 630 64 31 -31 0 normal -1 * 6 07 83 01 \7! 02 02 -1 * 5 0A 01 01 7D 08 -1 sprites/fix_graphics.png 8bpp 226 630 64 31 -31 0 normal // Fix city airport's grass for temperate -1 * 6 07 83 01 \7! 00 0A -1 * 5 0A 01 09 4C 0A -1 sprites/fix_graphics.png 8bpp 242 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 322 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 402 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 482 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 562 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 642 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 722 678 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 726 64 31 -31 0 normal // Fix city airport's grass for arctic -1 * 6 07 83 01 \7! 01 0A -1 * 5 0A 01 09 4C 0A -1 sprites/fix_graphics.png 8bpp 194 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 274 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 354 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 434 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 514 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 594 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 674 726 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 774 64 31 -31 0 normal // Fix city airport's grass for tropical -1 * 6 07 83 01 \7! 02 0A -1 * 5 0A 01 09 4C 0A -1 sprites/fix_graphics.png 8bpp 194 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 274 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 354 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 434 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 514 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 594 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 674 774 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 822 64 31 -31 0 normal // Fix city airport's grass for toyland -1 * 6 07 83 01 \7! 03 0A -1 * 5 0A 01 09 4C 0A -1 sprites/fix_graphics.png 8bpp 194 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 274 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 354 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 434 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 514 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 594 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 674 822 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 2 870 64 31 -31 0 normal -1 sprites/fix_graphics.png 8bpp 82 870 64 31 -31 0 normal // Wrong, non-translated colours in arctic buildings -1 * 8 0A 02 01 1F 06 01 DB 11 -1 sprites/fix_graphics.png 8bpp 305 945 59 29 -29 -12 normal -1 sprites/fix_graphics.png 8bpp 369 945 59 29 -29 -12 normal -1 * 8 0A 02 01 76 11 01 E6 11 -1 sprites/fix_graphics.png 8bpp 449 945 64 69 -31 -38 normal -1 sprites/fix_graphics.png 8bpp 529 945 64 69 -31 -38 normal -1 * 8 0A 02 02 7E 11 01 E1 11 -1 sprites/fix_graphics.png 8bpp 625 945 54 75 -25 -47 normal -1 sprites/fix_graphics.png 8bpp 2 1037 54 75 -25 -47 normal -1 sprites/fix_graphics.png 8bpp 66 1037 54 75 -25 -47 normal // Fix buoy in-game; don't show black outline -1 * 4 01 05 01 \b1 -1 sprites/fix_graphics.png 8bpp 575 490 7 11 7 4 normal -1 * 7 02 05 17 01 00 00 00 -1 * 7 03 05 01 08 00 17 00 openttd-1.3.3/media/extra_grf/mono.png0000644000000000000000000001137012246102547016414 0ustar rootrootPNG  IHDR,esRGBPLTE4޽x8j:!wcRK<xəU- ͟fRM*FNU+]!肮t'@S&g~m$O|h:'jzWrjJgCr_ϰԚ$ZfkUMnF]Ŋ9׌%B-c߅a%^ǜЁtK]b)Z|avA6TݑgGATrO,x>(u:+.:p5Dۡ#ѽ\ݻs.c:Pʵ ws@n:VE Cl`bW~rU  2|3k_in3+_49i-e4 iXVt+]!芛CSʥt>9=׸ c3\X=\UOM[ tsйQU&$}ou ,^pq92Tbr=J !RR2<VnR+@%0$a襞yJu:3Y \L#i60{wKCgiz!XYF8WН=CS/3ra\V)6}E.{GI;g4ra&j>UuGm)2aM×>^69T9Vt+]!3V>rJ]+tTЕ RAW*J]+t)t BxWzK^~'pH՛I?.t[ _et0f]R|+ͼKwp2)Csz0^:(2Xu_/}Vh3}dz6EIH?CW tScuLM@w.O}A=H Չ:g:d+NҝWl\:V8TF+s;8<Ǒ[JF+3Uu-?{:ܮ2>1Y5%Kt2c+frf$ho{d[:@otO&r 9s5-*՟Sbo7A>5)%aShiU! AWB-ƚBF25S$ʬ݌1u-;Gö|e~{C%OggV o99_`ZA^u̳RKVMrD׍X*BˉN~ԓ/zKӚ:tc*XntZvRmEnzb5x:З}{t; %LQ^ S{=}]fxKB{q+̊'|kUS7.BK AWBtſ$əR  #OF/᭄g5Plɏ.."MK']2ؤZO%98SSҍze3RT#7(X+ڦ&NmGZO+jκa##/;~L)AfۄT5BBܥr@yj d#B?iqU̍iCh}o2]A_>:O/~<=n&諮S}详oK5=ȅW~aZ nWc[] amSo=d[)iM! AWBxDbM8}xSk9QU 9nKy U`/R.v[kULf,.KU"֔VmCvf1eZ trZkx9tQmuSzCtǏk+:9@Dp=izQɨnyd뜩Mk-nm-j]rOPQZ.W:V/TA\_7j^pk:h9ӺY.AX5D|0RgYAfeG~zu"j >g:٩W:{aVٴʦt+]! AW< Ne>rt.c9əڌ[>9tR#G|raK})xťf|*5U}vnWTfk٬+[7f  V ~>EriB_n4oAxC9`-F5 M.r;-^p^X1tP-_ց{MAߤ[ZWQ!-jޝ֒'&;|Bjv==pƠ' ZlJ<Wiy WlZeSBt+]h p gJlg=ǹ YqBzcz0)_D8xq%<.X ȍ;9:wSR@ @쭡2bV9:BIVJDu Xu:\ΫPL{{Q2C4{i'ZőB匧 ;$uM2pÎutT.ߪ8Щ2**Bݻ7HG8%A&H\G5dA_r9kspNEMY36^WFt0׹okR=sUϘ>D7~Yxy*tUt3=)0jlӰHQ9Vt+]!芵JȂ.䣡}nZ*wCF~pg㲯HڵD|BgD9:(+$ƫu!L Jaۻ@^Q3*.\Tb-t+jm-e\Y?zcr=*7o>{n^y-{Eбz1m⴫nėYQ=9]sa. AWBt+]! AWBt+jTÕWIENDB`openttd-1.3.3/media/extra_grf/roadstops.nfo0000644000000000000000000000230212246102547017453 0ustar rootroot// // $Id: roadstops.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Road stop graphics" -1 * 3 05 11 08 -1 sprites/roadstops.png 8bpp 34 8 13 23 5 -11 normal -1 sprites/roadstops.png 8bpp 66 8 13 15 5 -2 normal -1 sprites/roadstops.png 8bpp 98 8 21 19 -20 -7 normal -1 sprites/roadstops.png 8bpp 130 8 22 17 -25 -4 normal -1 sprites/roadstops.png 8bpp 162 8 32 25 -5 -9 normal -1 sprites/roadstops.png 8bpp 210 8 28 26 -3 -12 normal -1 sprites/roadstops.png 8bpp 258 8 29 25 -24 -12 normal -1 sprites/roadstops.png 8bpp 306 8 32 25 -25 -9 normal openttd-1.3.3/media/extra_grf/openttdgui.nfo0000644000000000000000000002704712246102547017634 0ustar rootroot// // $Id: openttdgui.nfo 24954 2013-02-02 11:49:08Z frosch $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "OpenTTD GUI graphics" -1 * 3 05 15 \b 168 // OPENTTD_SPRITE_COUNT -1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 306 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 386 8 64 31 -31 -1 normal -1 sprites/openttdgui.png 8bpp 466 8 64 39 -31 -1 normal -1 sprites/openttdgui.png 8bpp 546 8 64 31 -31 -1 normal -1 sprites/openttdgui.png 8bpp 626 8 64 23 -31 7 normal -1 sprites/openttdgui.png 8bpp 706 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 2 72 64 23 -31 7 normal -1 sprites/openttdgui.png 8bpp 82 72 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 162 72 64 39 -31 -1 normal -1 sprites/openttdgui.png 8bpp 242 72 23 26 0 0 normal -1 sprites/openttdgui.png 8bpp 274 72 24 26 0 0 normal -1 sprites/openttdgui.png 8bpp 306 72 4 8 28 16 normal -1 sprites/openttdgui.png 8bpp 322 72 4 9 0 1 normal -1 sprites/openttdgui.png 8bpp 338 72 32 23 0 1 normal -1 sprites/openttdgui.png 8bpp 386 72 4 8 -31 15 normal -1 sprites/openttdgui.png 8bpp 402 72 4 9 -3 0 normal -1 sprites/openttdgui.png 8bpp 418 72 32 23 -31 0 normal -1 sprites/openttdgui.png 8bpp 466 72 4 8 28 16 normal -1 sprites/openttdgui.png 8bpp 482 72 4 9 0 1 normal -1 sprites/openttdgui.png 8bpp 498 72 32 23 0 1 normal -1 sprites/openttdgui.png 8bpp 546 72 4 8 -31 15 normal -1 sprites/openttdgui.png 8bpp 562 72 4 9 -3 0 normal -1 sprites/openttdgui.png 8bpp 578 72 32 23 -31 0 normal -1 sprites/openttdgui.png 8bpp 626 72 4 8 28 16 normal -1 sprites/openttdgui.png 8bpp 642 72 4 9 0 1 normal -1 sprites/openttdgui.png 8bpp 658 72 32 23 0 1 normal -1 sprites/openttdgui.png 8bpp 706 72 4 8 -31 15 normal -1 sprites/openttdgui.png 8bpp 722 72 4 9 -3 0 normal -1 sprites/openttdgui.png 8bpp 738 72 32 23 -31 0 normal -1 sprites/openttdgui.png 8bpp 786 72 4 8 28 16 normal -1 sprites/openttdgui.png 8bpp 2 136 4 9 0 1 normal -1 sprites/openttdgui.png 8bpp 18 136 32 23 0 1 normal -1 sprites/openttdgui.png 8bpp 66 136 4 8 -31 15 normal -1 sprites/openttdgui.png 8bpp 82 136 4 9 -3 0 normal -1 sprites/openttdgui.png 8bpp 98 136 32 23 -31 0 normal -1 sprites/openttdgui.png 8bpp 146 136 10 10 0 0 normal -1 sprites/openttdgui.png 8bpp 162 136 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 178 136 7 9 0 0 normal -1 sprites/openttdgui.png 8bpp 194 136 9 7 0 0 normal -1 sprites/openttdgui.png 8bpp 210 136 9 7 0 0 normal -1 sprites/openttdgui.png 8bpp 226 136 10 10 0 0 normal -1 sprites/openttdgui.png 8bpp 242 136 7 7 0 0 normal -1 sprites/openttdgui.png 8bpp 258 136 7 4 1 2 normal -1 sprites/openttdgui.png 8bpp 274 136 7 4 1 2 normal -1 sprites/openttdgui.png 8bpp 290 136 4 7 1 1 normal -1 sprites/openttdgui.png 8bpp 306 136 4 7 2 1 normal -1 sprites/openttdgui.png 8bpp 322 136 8 8 1 1 normal -1 sprites/openttdgui.png 8bpp 338 136 9 9 0 0 normal -1 sprites/openttdgui.png 8bpp 354 136 7 8 0 0 normal -1 sprites/openttdgui.png 8bpp 370 136 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 386 136 20 13 0 4 normal -1 sprites/openttdgui.png 8bpp 418 136 56 36 0 0 normal -1 sprites/openttdgui.png 8bpp 482 136 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 514 136 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 562 136 20 16 0 3 normal -1 sprites/openttdgui.png 8bpp 594 136 56 43 0 0 normal -1 sprites/openttdgui.png 8bpp 658 136 20 19 0 1 normal -1 sprites/openttdgui.png 8bpp 690 136 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 738 136 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 2 200 31 31 1 1 normal -1 sprites/openttdgui.png 8bpp 50 200 20 15 0 3 normal -1 sprites/openttdgui.png 8bpp 82 200 56 36 0 0 normal -1 sprites/openttdgui.png 8bpp 146 200 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 178 200 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 226 200 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 258 200 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 306 200 19 11 0 6 normal -1 sprites/openttdgui.png 8bpp 338 200 56 36 0 0 normal -1 sprites/openttdgui.png 8bpp 402 200 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 434 200 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 482 200 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 514 200 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 562 200 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 594 200 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 626 200 52 32 0 0 normal -1 sprites/openttdgui.png 8bpp 690 200 29 33 -27 -16 normal -1 sprites/openttdgui.png 8bpp 738 200 35 39 -29 -29 normal -1 sprites/openttdgui.png 8bpp 2 264 29 34 1 -17 normal -1 sprites/openttdgui.png 8bpp 50 264 34 39 -3 -28 normal -1 sprites/openttdgui.png 8bpp 98 264 20 13 0 4 normal -1 sprites/openttdgui.png 8bpp 130 264 56 36 0 0 normal -1 sprites/openttdgui.png 8bpp 194 264 20 13 0 4 normal -1 sprites/openttdgui.png 8bpp 226 264 56 36 0 0 normal -1 sprites/openttdgui.png 8bpp 290 264 39 18 -9 -9 normal -1 sprites/openttdgui.png 8bpp 338 264 72 44 -16 -35 normal -1 sprites/openttdgui.png 8bpp 418 264 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 450 264 72 44 -16 -35 normal -1 sprites/openttdgui.png 8bpp 530 264 18 18 1 1 normal -1 sprites/openttdgui.png 8bpp 562 264 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 594 264 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 642 264 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 674 264 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 706 264 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 738 264 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 770 264 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 2 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 34 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 66 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 98 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 130 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 162 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 194 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 226 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 258 328 16 16 0 0 normal -1 sprites/openttdgui.png 8bpp 290 328 16 16 0 0 normal -1 sprites/openttdgui.png 8bpp 322 328 16 16 0 0 normal -1 sprites/openttdgui.png 8bpp 354 328 16 16 0 0 normal -1 sprites/openttdgui.png 8bpp 386 328 35 31 0 0 normal -1 sprites/openttdgui.png 8bpp 434 328 33 30 0 0 normal -1 sprites/openttdgui.png 8bpp 482 328 36 33 0 0 normal -1 sprites/openttdgui.png 8bpp 530 328 37 33 0 0 normal -1 sprites/openttdgui.png 8bpp 578 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 610 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 642 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 674 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 706 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 738 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 770 328 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 2 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 34 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 66 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 98 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 130 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 162 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 194 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 226 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 258 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 290 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 322 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 354 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 386 376 18 18 0 0 normal -1 sprites/openttdgui.png 8bpp 418 376 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 450 376 19 22 0 0 normal -1 sprites/openttdgui.png 8bpp 482 376 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 514 376 54 44 -16 -35 normal -1 sprites/openttdgui.png 8bpp 578 376 7 7 3 4 normal -1 sprites/openttdgui.png 8bpp 594 376 7 7 3 4 normal -1 sprites/openttdgui.png 8bpp 610 376 10 9 2 3 normal -1 sprites/openttdgui.png 8bpp 626 376 10 9 2 3 normal -1 sprites/openttdgui.png 8bpp 642 376 11 7 2 1 normal -1 sprites/openttdgui.png 8bpp 658 376 9 9 3 3 normal -1 sprites/openttdgui.png 8bpp 674 376 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 706 376 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 738 376 32 32 0 0 normal -1 sprites/openttdgui.png 8bpp 786 376 10 10 0 0 normal -1 sprites/openttdgui.png 8bpp 2 440 10 10 0 0 normal -1 sprites/openttdgui.png 8bpp 18 440 7 7 0 0 normal -1 sprites/openttdgui.png 8bpp 34 440 14 13 4 4 normal -1 sprites/openttdgui.png 8bpp 66 440 7 8 0 0 normal -1 sprites/openttdgui.png 8bpp 82 440 7 8 0 0 normal -1 sprites/openttdgui.png 8bpp 98 440 7 8 0 0 normal -1 sprites/openttdgui.png 8bpp 114 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 130 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 146 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 162 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 178 440 8 10 0 0 normal -1 sprites/openttdgui.png 8bpp 194 440 13 10 0 -2 normal -1 sprites/openttdgui.png 8bpp 215 440 9 10 0 0 normal -1 sprites/openttdgui.png 8bpp 232 440 8 10 0 0 normal -1 sprites/openttdgui.png 8bpp 248 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 264 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 280 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 296 440 8 8 0 0 normal -1 sprites/openttdgui.png 8bpp 312 440 14 10 0 0 normal -1 sprites/openttdgui.png 8bpp 328 440 14 10 0 0 normal openttd-1.3.3/media/extra_grf/airports.nfo0000644000000000000000000000317512246102547017311 0ustar rootroot// // $Id: airports.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Extra airport graphics" -1 * 3 05 10 0F -1 sprites/airports.png 8bpp 18 8 64 31 -31 0 normal -1 sprites/airports.png 8bpp 98 8 64 31 -31 0 normal -1 sprites/airports.png 8bpp 178 8 64 31 -31 0 normal -1 sprites/airports.png 8bpp 258 8 64 31 -31 0 normal -1 sprites/airports.png 8bpp 338 8 64 31 -31 0 normal -1 sprites/airports.png 8bpp 418 8 64 31 -31 0 normal -1 sprites/airports.png 8bpp 498 8 64 55 -2 -38 normal -1 sprites/airports.png 8bpp 578 8 18 17 16 -1 normal -1 sprites/airports.png 8bpp 610 8 64 55 -2 -38 normal -1 sprites/airports.png 8bpp 690 8 18 17 -30 1 normal -1 sprites/airports.png 8bpp 722 8 64 55 -2 -38 normal -1 sprites/airports.png 8bpp 2 88 64 55 -2 -38 normal -1 sprites/airports.png 8bpp 82 88 64 31 -31 0 normal -1 sprites/airports.png 8bpp 162 88 64 31 -31 0 normal -1 sprites/airports.png 8bpp 242 88 64 31 -31 0 normal openttd-1.3.3/media/extra_grf/canal_locks.png0000644000000000000000000003775112246102547017730 0ustar rootrootPNG  IHDR sRGBPLTE 000@@@PPPdddttt4pk`hI&%#5]]+r%G{&~鞈i_MdIOLsZϛa]t]/+9r\iZ^k2_sЁT ~0sC_}$CS:4,CN~qv|ȿ eB.˽zZ.r{\\^c2W_s0hS&pscy0idGY9v|*U(9װ4:+/m'\y/ʁ՚~^+~bOV+"Lfׯ (~T;7Kȴ<GR8cb[Y u9R٘v|ȿ +&0,HkIqMw^ GP wd>_1XN57`t8~0AāS aS7F~{LW>72 Vd$Κei]Cd;wd^+OR0P  ǹ@ƨܪI]1OķDT2Hύiu!7Ne'pὨ5bLp}`qgWڀ. /OWGBw.g ;KABցawn+#1y!jUei`Q7C2y1-/S2@EΚ (0B /+;SQH=qU+n_> UPzAU3T8!__TbnZ aaڐ ƭ:y0 @'19JYqS7.3 u*MR ŴRyK9Xo8Q!Pp;#V)1s}`ډO6 L=St6/@K 8y0bw`so(1r"|>gC0 {d@lMR72$/npL+w 9KMP.ٜEa<s 6(_.OQ"MAv԰\:u \M#8͕sE Fi ? U`X*|Aǔ65ip+i.UI")}Љy.Fw;MCߋ漪ݹ;T,AGپe屜Ǟ|qɘdB}K@r!BC;Q7-#ygcZv+IC.q8R}|)m|W[$NT'" 9n70I;:K]k3:4sn򒉁'?b ).A"4 #ÞU/XPҼ4;cZv+MiR2'frsb):1 [h^L 82X!vmjsnS\\UΦ=đQ+q mؑy=_P7|!HtB N+vMsNr.AiTqf-7a9"1t݈8_HPew̑X8 /: mm[`Tջ/K>=择(hwd߾$/ / ډ1q !:KCVeĹބtRe2m^|QԝZ;WbZ=CpM6tPйD*rkxV̗gg@?I͹ڸϧ2U0c ?zgB܍n"z1LG;Xo .ENgvO=@5}:%嶑#^# _4ꃐV3ϫYkСz5 %(B<U/;܄Xu{V F :xlb-{Y %_~׀AgO_~ͫ#PxVCs9EVEt@|=LlכIJ'Иt-QsI 3wI(N1-S xUg ? ݊_?[65БqE/Hq\@[ΌgI5- v/eK> P% n7f9z@*ߗ8CA`~A~ HKؐqVnS8RYrx&k |fT7Pasq6|}l]{YR> MiqZZZk`hZk`hZk`hZk`hZk`hZk`hZk`hZk`hZk`hO_e zƣך'7sw*w|Pw!GǮ?[Fʕ&yR=!,od7rnR)ra\쏨ɪ#_ 3;^?*2]zB*\n꿆C$OjI|>? 7?(ghZk c/>Y. C*4?,RȈO,)hb KAzvhd!'m/m7juΦ )Ҟe'Nx @"*^kL8;sCdvQGE-[l``RLƸidzm>2!00}?D댉9y^~v<5*\jO 5EQ }ϸGd S_J5.W1z_.L|v%)|>գxkXƘ6]{S%JylDujĥNhI=]0fw?N`1 BUξg#(_!d$LX'F``xwR!/7r?^B+cgn4X4=1$\0gױ?PI`Gw|_1=M&1MN`p]!b\@h\y9I'nUG%/ I.=EKFlg/9#?#.pڞPҋ wvy'C^"z۷haP!‹M(2oߦpK2N0zS!`$Ntَ8!y'A2c-_M`s=ۈN X{ϮgH|d߿OȐ|#j\hd8b`&ķo-j\\{ E3CP4[D+QOq9`fc ٲ+k!Np={ 8;=CKB%~l: U>2%.|;Gľ7p1R&3|+\W&aHyx#|GK5 }NpqMB¼ٓmX26ֵ0@/qXo'7B=f9Y2Kր!h\v%vz[6d6iDk}DX$4shXpx̘Ȗݽ`lE`=$k  Q}B+u`yٸapcrff )"B#׵}Fь zX5uT8F g!ј;͈G1SUU!`!CH\َX֯W]{2\ö:Z/^fő!W!gʗʪtK]9D0:`V&+ Ab:XyuݕKlAZ3Yhr&a}JVUm[ LO~VkG,u_O\Jp)1mR )Sʧ?}*} _![w6M,A-iVqJ3j庻f<`ǽ ^̴ R%ɺ3?;{dS-BUU9YRUsd=pp].`IdP>>*x|߿@jH=~Xg-xs 9R^?2-m.{> *T1x"^ɒŷLp薋l!cUUy9LKN:|[hBfe%%.,Է?  ʳ}UVN_@z9$ -# LZ]xIyH|RFp1FɃ|F1K9LI& )S-ڢ"eH@+Eb=`hf(灆F"I_j9 BQm)8rBzNV#ir>w9>#0d'?On$PՂߔv{`YK$Y^Uu'>.0mS^β̤5`$z: {k@3J)C>wLq&  X0Y^UaO *+f6)g_'ڮ}IݩY-OЇ9 ]KÊ2Rψg&? Erruf_/3fyUUH3õXbQD=vżP}#=1 uR)]T;sbBMNȪ= ?ʏ1u)Sp;+KyUU豼Ǭy5VιY]yx q/ ; >#Ȓ÷VC 0`?Ȗ =y Ǯ7zs#k{gv8I:3}gT`7)4Ҝ3]UUz}Ƞ 1{.bV̛^ ]ѵ0޾0U!r{O9ts87cIDATq ;e?TUUY q u 꺈Nn N%7GnwRyeܯ9Y~*}w#[^xUU;.Y p s j]^eڞqle\_;bd!\JtUUbd>*쁨vz㠶*+>Uƅk{g~iNd+r*!KG#>E֛âJܕ`G'm iC 佁VƝj{g>+UU ]P`౶gP Ǫ7?w =*?+Q`qnm {UG5k~0on=^ӂaX[ȭ8[XwmUG;Oiu"VgS>bk2k{>*~ZkZkZkZkZkZkZkq`0UŨP7ߠꟼ֔"Nߠy}NUԏѵ+MFaD W9PJ}Jx64y<ԇj~}H%rHIJA+O*!ZWK#Uuy4RvV/䵺*PrJNL3s[M8Ա5\ ds5^OzW?GB}qm׿ gkۿ`lmUm2^[ sgvyd.R #Yz|'yp[:+_MJ_':D^yj5{g&ʯ~2vU7K946-e/Ej;ivcZ9g(/r7 >fjd= _ 7S]E`w1.xb9JHk?NyfhUF2~L@g|Nj!j ^ڢRMٸ$CByii-*8 6+?!Ed*b+'CXok3MfNR;^pEj#!y9>4V.?xog| 9,w(-FKts!Cd 4`l ۪+dNe-u9qXYv xYH"R[4K;9[wI hA;YLRl1N0I /vknE;fq{~2vے́=7A[qx˕mˌ u$y)ŴRyKλIi =x7,hǢ2{F2 /v:,ؿhsgۆA#riLOwTP}[Y>5 $ܜ~kKoh \ŝ;J]wr 1 3t@M-쉳Pc=g#)l|#$];8?UJEÂSr sM\L>w4x6=CbiyyJ3@>ʃ{{tIŸE=12d-?$C,ypSdPw6 jˁCjFε1` z9Mn̾nꇪS8k䅝;"C0}aʕBw-ۓ-k}\ lDFw],= ֮8Ujrl80r2{`rw]%Ֆ^$/|X(N9Z.oݞj0;Z{gg1l|&2p9C'ڋ漪ݸ#,LQ\29!z ؗC9wvtL %ty#3YTﴵ*uhC ;p+%;&qp[)q S.@U>VMƹGjmOż!T-`J޵ƣ;x S8ޒ5?X;A~dYtt[/ϘܘZ"U~Z\o r0 鶻6\"0K=r$Ois4KD|'Tmb9CݛY/ ARRlϗ<_뽒 qaPټx>?˪*ߔ7#)XPb8כ0N@q]cXIM2u0`ȑsUi(r/~HrX~@jnl:YyX$ ۱H_hܿw`\;Z/{t;$y63Vb`@σ?K{kscٵq '*/k02jx 7ag_/ |L^C83j}C  ^"yݛLL;' ^#䀼>ޤca7&]B'=CiMTSj 1L(y\Bǔm6Z'!84ޘP\4Vp ,vO[GQm R]@w /Lͺ^a,qii._`4ǘ:B#);1PüoAmsL.J+1D֣(\_KEc x5n,pVld<]"^R`ιUg#zydo[$pI' "!d1KJW  3w4@!Zpi7* 䨼ɆPþoMÁ g) b#əKk"(mG! M 1rp1oH2hՐ 9^ ʖB<^/o gU$nA^n> P%byU0x$@(78%N@N˃a+Gl+%fSm)9&L9y_DxKwvqdd;[ykE/b/3x`R:9RS% V50H<,eqy 1-.P~}}}eoKđӣs*}%FrYIh?N:>N~ )t?Qp,vKš"-o| hD `]*VZ1eCn䴼M}t\,y`'`AiH k,;R\cz,%xhd [׼S4YwCmqeyϏ]6q,d_*=1V}t$\ gufܼoA/j) 9J|S )$X {1gGU]Kfiw/C*ȠvZ qP rj}eƴ:f(ݝ>9QLU,c؞c1Li_T~asM q(ga׼l9:ǻ !ey^ɣ@LBK]hoi@v B}ٽryFVeRT۩kN[=ۃ f\[f?R`5/́(z}”uߦ  ňfĴـ\ ^H4Ԇ/s{LkZP y|[u>̼V̮٣Cd{h]l$'  ds_9 `2O"UEzy"*PuS-/`Uk>DP;o3ܴrWER/_O  ZCky`?dI=g*S:%ȋKG/(PPHIP=q;0W}`'u%`Ks-"W%/ܑԂS7'|g`7cr 3"#Ȁoח>$u`i+0x!"j 0-rxUҧ280 Ûv g N R}\ި.o>qO`{+\90S~瑔ҾeI+00Yksc1cTԁ?۷]ҝ kmCW͔iEoRj`pLa?4,v{ _x$e`i.37'|W`P֚k9!E=_Ʊ`?#2N"1ԭqTN|b#)Ñ9oNufB(75byvaRi37k eoJǫ|~}D\ 꼪ZK8^[Z LЫ/X1=V**ʷIчmϗO)ߜ}AD^BiA0rzܨgTsrx󩽪5J0x-d+U#CEGRp}G YdPᲯ^luj 3:=.?.Qd.)P5_%U t$Ѿ|L /pGֆS |? U$ZR挏W#_NFRa 'aȠo"W/uѓr$FgN\s5#(ﺜ{q0 ?xݟWHGRo݆oN݃^uSl6*R9qrǫZ`P *ȗQ>l|@ۑ}c )R9{ MX&d942Uљ<$\Ƞ'_3Q>ҏqÙKw0hoS7ch8@C`o]5}q5TB'Y7d?@|&Hn}79C&⍩d=8gOӄ(Ia}kg[ˀݫĪ2gʧMH-v`n탃5s|hi`h`hZk`hZk`hZk`hZkZkZkZk ļ׌gi1TPhXh?rZk`hZk`i?ǿ͐}J0P?~e4C)00 ??tf>%V៿e84C)@{.?^"Ck527x!BklsF}=Lz.SCk NOr609@Tb|LzgI˾l2 OS3dk }7Q߾M }N0,|vx0FZ`MwC'~O ڧʺ-]O'9$v'Im].Tnk abrYf>1){g'[f(c>-nZ˺.J>Ck j7z],k3ywSpm3Zk Zk Zk Zk ZCk50Z"UxIENDB`openttd-1.3.3/media/extra_grf/sloped_tracks.nfo0000644000000000000000000000276512246102547020307 0ustar rootroot// // $Id: sloped_tracks.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Sloped tracks" -1 * 3 05 0F 0C -1 sprites/sloped_tracks.png 8bpp 50 8 42 29 -19 -3 normal -1 sprites/sloped_tracks.png 8bpp 98 8 41 13 -20 5 normal -1 sprites/sloped_tracks.png 8bpp 146 8 42 14 -19 5 normal -1 sprites/sloped_tracks.png 8bpp 194 8 42 29 -21 -3 normal -1 sprites/sloped_tracks.png 8bpp 242 8 33 25 -15 -1 normal -1 sprites/sloped_tracks.png 8bpp 290 8 33 10 -15 7 normal -1 sprites/sloped_tracks.png 8bpp 338 8 34 10 -15 7 normal -1 sprites/sloped_tracks.png 8bpp 386 8 34 25 -15 -1 normal -1 sprites/sloped_tracks.png 8bpp 434 8 31 23 -13 -1 normal -1 sprites/sloped_tracks.png 8bpp 482 8 32 10 -15 7 normal -1 sprites/sloped_tracks.png 8bpp 530 8 31 10 -15 7 normal -1 sprites/sloped_tracks.png 8bpp 578 8 31 23 -16 -1 normal openttd-1.3.3/media/extra_grf/airports.png0000644000000000000000000001455012246102547017312 0ustar rootrootPNG  IHDR sRGBPLTE 000@@@PPPdddttt4O00ΓP8I8R8?`Ώcw5<Ϟz?i\vI(I_OYnYHWű >2^^B ,Xޟ"Q!/bC ^O(bxd? 38DJ"3>+g,Er?!I,#?(r?@e=U!$|l'@NB#}?dso뢀FdFDwu#\̹Xl(BREBUs%{jbڟErx~T<{,(v;!{K5C0@o$@pi548IDFƣJ `Qw6L=Ga緜O}V(Iѩ̅,S̲Sh DD5GQX-wPhT-rUtTBPCoy4_k~~P!̿| ҫg{XǾ|jHH`mH X&bxRC<BiT6ҍD[l_Z;$PqM[/_?zxgs /]W;qHH`>Y @MVBwx2 f(!1@VV~|>h\rtjAT+}E" "^! YB-أC)Dn-`Ko s^ч*̷nʴ˟Τ# d9|fHvOT[&C SoIBdzyy(<ϲ X-҇#jr%= &VzCj: ?UXH 8>kIiP^b `?nK"W hП2*fYoͲwR "e .!.e% ,)(J.0?gĄ3TߚgZH"o_ΚJίU\15a9e}k.8>==DaC"n}1o; VfU|`3?t4~fئյ&?><#%{~hŕE& BgYY˲YGM#Da=m'=:PzVҠË#ڱXnCiD*R|!$O(3:֞Zj؟'P$x+8? 8/Tb7|K!=,+lȲR6BDptNC {)n:r}QW~!b Y`+8n4 <\`JOWk#u2ɟ97#0EyLeP\u~ŕ۟ G7Ȳtde6=$GHSKiސc^lW*'cA^Cd*ޘNÃ1U UK[x~49?gS+]Tܩ,1J̲+˪L'2SC#E?Hhӥ„ifu>UZ}oJx /ӥ⫒F1ܱݒx4&9| W#%@,+\YV~,=y 8O񂮯1POxŽW*E1V ]%&9v|q9tYj??,+lEzrh1o:}~wW:CV+ zeE-3L~NϨƙ+C#ێ6o}4/ΕgcG.SVt򀘱R?]wx21}qz\vdY̲pV~Mȯ>[gJ}Ǜ>@ V ^M'a^ nb=}V|Q+J,Mճlgє.z9D6{3y&O,XH?}ݬ)wA!f G< p?.{6}w?JB@N|(8ƚ>,Ak}/qJoFT#VEuc?t߽.RބY &<Kkvk8+,cd!ӉO51=+a}iOIK6߽oMY6ջ6hc*@jQqGe6EX߱ڐl"@~s1NXd=4'CRYM1Vg RAg!{4<k "XDv̔upƨvOAi GUjc@ D~UZw E5&k'NIgB-kcqϊXG]-xB\_:cHw\*,~c<Ο>8w VLJubΕU}S\޻csrX}nXBmuc>@Mj(޳cs@ܚ"VmrȲ*V 5 ؃Dzz\@"ֆ!xHزMMxrH'9; "%Dz#>JP?<!٪FHo9$t]"B+F>]QI媞/'sI"Dzv֞ۺ9$ B"O꯮ fHs I"%b1k$oFE^cHdp^ .@ \Ooh}! B="vuMyx$@LݻH3D>Ɋd7>w "}ܳy Cbd*NC dBw&C7R)GyS"=x#D(${,o@/2wދHx>0K##@Z!t+~:D VF_cH5 [kW##@!tu~H=7z  dd22BFF!##@ ddd22BFF!##@>@e2m r.oA!!^ܷ1MK:it~ 2>`ExC# B擝 ddSc|i~^O#I(I_OY@qK(/DBGE~"@K/B{PHvuk8 2֟rJ,XǾ|W_eJ,@ȶ"l(b(t׻ߠlCl$@c_>5H J,ۯȰ(l .ؿjrk*o; 2E8RE6 (PÖX+2\w{l%Tb d=|(%?%I[,TX~qC% ,e,SbCQ`{`mB^qa! ax$ ƾH -6 u1Rj(exxL(P_VBARkv3]ݭ\lh 3W]!%G٣(=h1(ֽKZuQ;'t؀.G©,:E NC {=K^К=DķͻfcHd{z3̋)bI =$GHd\@`/|5Hlj{mS싴U[C456Y ===Rd=߿q7R#%Votv.fg!]!I7 [{w.A{Kb&@X|̇Iߏ ! QDTW3XPEˏHlG"{3:FaĶb,*ZI?D=RdbG^Ff:J,&@VgԂH̕f!ZūW@(\.fYb5Q "}b=xaUu54"k( C*NA΢Ab?ȇ`Xfj΢.Y }"$KkvkB̲n [];',*ȚaRDN!Gd=Rmuk؇6 =SD4D~Z9"{gQ*],B< NRL7!"=NH.6ԓ"m19:>D:X/B%YH D#ku n Rh-{pӹ2pt2*5DMߘ{zcddW[X-[фGH'#"}א4 t2-[5:W#D:g'$Hdm d$W M NF" d/gtY&Y8E)b1Q$9DFt:G8AdHӭd "cD:&{< t?1Xtdtc;;WH"< dDj"b@Fi`.)dsN!#tB$BFF!##@ dd22BFFF!##@ dd22s#ٌ8IENDB`openttd-1.3.3/media/extra_grf/elrails.nfo0000644000000000000000000000723012246102547017075 0ustar rootroot// // $Id: elrails.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Electrified rail by Michael Blunck" -1 * 3 05 05 30 -1 sprites/elrails.png 8bpp 66 8 32 16 -29 -2 normal -1 sprites/elrails.png 8bpp 114 8 32 16 -1 -2 normal -1 sprites/elrails.png 8bpp 162 8 32 1 -1 -2 normal -1 sprites/elrails.png 8bpp 210 8 1 16 0 -3 normal -1 sprites/elrails.png 8bpp 226 8 32 24 -29 -2 normal -1 sprites/elrails.png 8bpp 274 8 32 9 -1 6 normal -1 sprites/elrails.png 8bpp 322 8 32 9 -29 6 normal -1 sprites/elrails.png 8bpp 370 8 32 24 -1 -2 normal -1 sprites/elrails.png 8bpp 418 8 32 16 -29 -2 normal -1 sprites/elrails.png 8bpp 466 8 32 16 -1 -2 normal -1 sprites/elrails.png 8bpp 514 8 32 1 -1 -2 normal -1 sprites/elrails.png 8bpp 562 8 1 16 0 -3 normal -1 sprites/elrails.png 8bpp 578 8 32 24 -29 -2 normal -1 sprites/elrails.png 8bpp 626 8 32 9 -1 6 normal -1 sprites/elrails.png 8bpp 674 8 32 9 -29 6 normal -1 sprites/elrails.png 8bpp 722 8 32 24 -1 -2 normal -1 sprites/elrails.png 8bpp 2 56 32 16 -29 -2 normal -1 sprites/elrails.png 8bpp 50 56 32 16 -1 -2 normal -1 sprites/elrails.png 8bpp 98 56 32 1 -1 -2 normal -1 sprites/elrails.png 8bpp 146 56 1 16 0 -3 normal -1 sprites/elrails.png 8bpp 162 56 32 24 -29 -2 normal -1 sprites/elrails.png 8bpp 210 56 32 9 -1 6 normal -1 sprites/elrails.png 8bpp 258 56 32 9 -29 6 normal -1 sprites/elrails.png 8bpp 306 56 32 24 -1 -2 normal -1 sprites/elrails.png 8bpp 354 56 16 8 -29 6 normal -1 sprites/elrails.png 8bpp 386 56 16 8 -1 -2 normal -1 sprites/elrails.png 8bpp 418 56 16 8 -13 -2 normal -1 sprites/elrails.png 8bpp 450 56 16 8 15 6 normal -1 sprites/elrails.png 8bpp 482 56 8 16 -7 -14 normal -1 sprites/elrails.png 8bpp 498 56 8 18 0 -17 normal -1 sprites/elrails.png 8bpp 514 56 8 16 0 -14 normal -1 sprites/elrails.png 8bpp 530 56 8 18 -7 -17 normal -1 sprites/elrails.png 8bpp 546 56 2 16 0 -15 normal -1 sprites/elrails.png 8bpp 562 56 2 18 0 -16 normal -1 sprites/elrails.png 8bpp 578 56 8 16 0 -15 normal -1 sprites/elrails.png 8bpp 594 56 8 16 -7 -15 normal -1 sprites/elrails.png 8bpp 610 56 13 16 4 2 normal -1 sprites/elrails.png 8bpp 642 56 20 16 0 2 normal -1 sprites/elrails.png 8bpp 674 56 20 16 0 2 normal -1 sprites/elrails.png 8bpp 706 56 20 16 0 2 normal -1 sprites/elrails.png 8bpp 738 56 38 30 -3 -14 normal -1 sprites/elrails.png 8bpp 2 104 72 44 -16 -8 normal -1 sprites/elrails.png 8bpp 82 104 44 35 -21 -2 normal -1 sprites/elrails.png 8bpp 146 104 72 44 -16 -35 normal -1 sprites/elrails.png 8bpp 226 104 20 19 0 1 normal -1 sprites/elrails.png 8bpp 258 104 32 32 0 0 normal -1 sprites/elrails.png 8bpp 306 104 12 22 -9 -18 normal -1 sprites/elrails.png 8bpp 338 104 12 22 -1 -18 normal openttd-1.3.3/media/extra_grf/chars.nfo0000644000000000000000000016576512246102547016564 0ustar rootroot// // $Id: chars.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries" // Replace original characters -1 * 5 0A 01 02 41 00 -1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal -1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal -1 * 5 0A 01 02 86 00 -1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal -1 * 5 0A 01 01 8A 00 -1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal -1 * 5 0A 01 01 A0 00 -1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal -1 * 5 0A 01 04 A2 00 -1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal -1 * 5 0A 01 06 A7 00 -1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal -1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal -1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal -1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal -1 * 5 0A 01 03 AE 00 -1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal -1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal -1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal -1 * 5 0A 01 05 B3 00 -1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal -1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal -1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal -1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal -1 * 5 0A 01 03 BB 00 -1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal -1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal -1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal -1 * 5 0A 01 01 BF 00 -1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal -1 * 5 0A 01 05 C1 00 -1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal -1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal -1 * 5 0A 01 01 C7 00 -1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal -1 * 5 0A 01 03 CA 00 -1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal -1 * 5 0A 01 04 CE 00 -1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal -1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal -1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal -1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal -1 * 5 0A 01 05 D3 00 -1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal -1 * 5 0A 01 03 DB 00 -1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal -1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal -1 * 5 0A 01 02 DF 00 -1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal -1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal -1 * 5 0A 01 01 22 01 -1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal -1 * 5 0A 01 01 7D 01 -1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal -1 * 5 0A 01 02 80 01 -1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal -1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal -1 * 5 0A 01 01 89 01 -1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal -1 * 5 0A 01 01 9F 01 -1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal -1 * 5 0A 01 01 A9 01 -1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal -1 * 5 0A 01 02 BF 01 -1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal -1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal -1 * 5 0A 01 01 02 02 -1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal -1 * 5 0A 01 01 41 02 -1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal -1 * 5 0A 01 06 46 02 -1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal -1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal -1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal -1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal -1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal -1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal -1 * 5 0A 01 01 50 02 -1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal -1 * 5 0A 01 04 52 02 -1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal -1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal -1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal -1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal -1 * 5 0A 01 01 5C 02 -1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal -1 * 5 0A 01 01 60 02 -1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal -1 * 5 0A 01 07 62 02 -1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal -1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal -1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal -1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal -1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal -1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal -1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal -1 * 5 0A 01 18 6A 02 -1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal -1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal -1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal -1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal -1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal -1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal -1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal -1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal -1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal -1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal -1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal -1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal -1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal -1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal -1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal -1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal -1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal -1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal -1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal -1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal -1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal -1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal -1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal -1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal -1 * 5 0A 01 01 85 02 -1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal -1 * 5 0A 01 01 88 02 -1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal -1 * 5 0A 01 02 92 02 -1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal -1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal -1 * 5 0A 01 01 97 02 -1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal -1 * 5 0A 01 02 99 02 -1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal -1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal -1 * 5 0A 01 01 A0 02 -1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal // New characters, all fonts except monospaced // U+007B: Left Curly Bracket // U+007C: Vertical Line // U+007D: Right Curly Bracket // U+007E: Tilde -1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00 -1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal -1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal -1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal -1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal -1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal -1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal -1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal -1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal -1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal -1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal // U+007F: No-Break Space -1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00 -1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal -1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal -1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal // U+00AA: Feminine Ordinal Indicator -1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00 -1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal // U+00AC: Not Sign // U+00AD: Soft Hyphen -1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00 -1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal -1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal -1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal // U+00AF: Macron -1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00 -1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal // U+00B4: Acute Accent // U+00B5: Micro Sign // U+00B6: Pilcrow Sign // U+00B7: Middle Dot // U+00B8: Cedilla // U+00B9: Superscript One -1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00 -1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal -1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal -1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal -1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal -1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal -1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal -1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal -1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal -1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal -1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal -1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal -1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal -1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal -1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal -1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal // U+00BC: Vulgar Fraction One Quarter // U+00BD: Vulgar Fraction One Half -1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00 -1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal -1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal -1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal -1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal -1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal -1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal // New characters, all fonts // U+0100 ... U+017F: Latin Extended-A -1 * 34 12 08 00 78 00 01 00 07 79 01 01 78 00 01 01 07 79 01 02 78 00 01 02 07 79 01 03 78 00 01 03 07 79 01 -1 sprites/chars.png 8bpp 270 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 300 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 320 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 350 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 370 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 400 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 420 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 440 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 460 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 480 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 500 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 520 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 540 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 560 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 580 130 8 12 0 -1 normal -1 sprites/chars.png 8bpp 600 130 9 12 0 -1 normal -1 sprites/chars.png 8bpp 620 130 9 12 0 -1 normal -1 sprites/chars.png 8bpp 640 130 7 12 0 -1 normal -1 sprites/chars.png 8bpp 660 130 7 12 0 -1 normal -1 sprites/chars.png 8bpp 680 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 700 130 7 12 0 -1 normal -1 sprites/chars.png 8bpp 720 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 740 130 7 12 0 -1 normal -1 sprites/chars.png 8bpp 760 130 6 12 0 -1 normal -1 sprites/chars.png 8bpp 10 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 30 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 50 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 70 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 90 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 110 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 130 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 150 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 170 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 190 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 210 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 230 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 250 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 270 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 290 190 10 12 0 -1 normal -1 sprites/chars.png 8bpp 310 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 330 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 340 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 350 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 360 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 370 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 380 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 390 190 3 12 0 -1 normal -1 sprites/chars.png 8bpp 400 190 3 12 0 -1 normal -1 sprites/chars.png 8bpp 410 190 3 12 0 -1 normal -1 sprites/chars.png 8bpp 420 190 3 12 0 -1 normal -1 sprites/chars.png 8bpp 430 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 460 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 480 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 500 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 520 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 540 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 560 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 580 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 600 190 4 12 0 -1 normal -1 sprites/chars.png 8bpp 610 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 630 190 3 12 0 -1 normal -1 sprites/chars.png 8bpp 640 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 660 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 670 190 7 12 0 -1 normal -1 sprites/chars.png 8bpp 690 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 710 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 730 190 5 12 0 -1 normal -1 sprites/chars.png 8bpp 740 190 8 12 0 -1 normal -1 sprites/chars.png 8bpp 760 190 6 12 0 -1 normal -1 sprites/chars.png 8bpp 10 250 8 12 0 -1 normal -1 sprites/chars.png 8bpp 30 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 50 250 8 12 0 -1 normal -1 sprites/chars.png 8bpp 70 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 90 250 9 12 0 -1 normal -1 sprites/chars.png 8bpp 110 250 8 12 0 -1 normal -1 sprites/chars.png 8bpp 130 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 150 250 9 12 0 -1 normal -1 sprites/chars.png 8bpp 170 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 190 250 9 12 0 -1 normal -1 sprites/chars.png 8bpp 210 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 230 250 9 12 0 -1 normal -1 sprites/chars.png 8bpp 250 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 270 250 13 12 0 -1 normal -1 sprites/chars.png 8bpp 300 250 9 12 0 -1 normal -1 sprites/chars.png 8bpp 320 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 340 250 5 12 0 -1 normal -1 sprites/chars.png 8bpp 360 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 380 250 5 12 0 -1 normal -1 sprites/chars.png 8bpp 400 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 420 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 440 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 460 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 480 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 500 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 520 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 540 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 560 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 580 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 600 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 620 250 5 12 0 -1 normal -1 sprites/chars.png 8bpp 630 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 650 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 670 250 7 12 0 -1 normal -1 sprites/chars.png 8bpp 690 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 700 250 8 12 0 -1 normal -1 sprites/chars.png 8bpp 720 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 740 250 8 12 0 -1 normal -1 sprites/chars.png 8bpp 760 250 6 12 0 -1 normal -1 sprites/chars.png 8bpp 10 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 30 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 50 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 70 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 90 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 110 310 7 12 0 -1 normal -1 sprites/chars.png 8bpp 130 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 150 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 170 310 12 12 0 -1 normal -1 sprites/chars.png 8bpp 200 310 10 12 0 -1 normal -1 sprites/chars.png 8bpp 230 310 9 12 0 -1 normal -1 sprites/chars.png 8bpp 250 310 7 12 0 -1 normal -1 sprites/chars.png 8bpp 270 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 290 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 310 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 330 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 350 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 370 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 390 310 5 12 0 -1 normal -1 sprites/chars.png 8bpp 270 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 300 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 320 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 350 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 370 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 400 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 420 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 440 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 460 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 480 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 500 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 520 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 540 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 560 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 580 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 600 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 620 150 5 7 0 0 normal -1 sprites/chars.png 8bpp 640 150 5 7 0 0 normal -1 sprites/chars.png 8bpp 660 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 680 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 700 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 720 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 740 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 760 150 3 7 0 0 normal -1 sprites/chars.png 8bpp 10 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 30 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 50 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 70 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 90 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 110 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 130 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 150 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 170 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 190 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 210 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 230 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 250 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 270 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 290 210 5 7 0 0 normal -1 sprites/chars.png 8bpp 310 210 5 7 0 0 normal -1 sprites/chars.png 8bpp 330 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 340 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 350 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 360 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 370 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 380 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 390 210 2 7 0 0 normal -1 sprites/chars.png 8bpp 400 210 2 7 0 0 normal -1 sprites/chars.png 8bpp 410 210 1 7 0 0 normal -1 sprites/chars.png 8bpp 420 210 1 7 0 0 normal -1 sprites/chars.png 8bpp 430 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 460 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 480 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 500 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 520 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 540 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 560 210 5 7 0 0 normal -1 sprites/chars.png 8bpp 580 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 600 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 610 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 630 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 640 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 660 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 670 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 690 210 3 7 0 0 normal -1 sprites/chars.png 8bpp 710 210 4 7 0 0 normal -1 sprites/chars.png 8bpp 730 210 4 7 0 0 normal -1 sprites/chars.png 8bpp 740 210 4 7 0 0 normal -1 sprites/chars.png 8bpp 760 210 4 7 0 0 normal -1 sprites/chars.png 8bpp 10 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 30 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 50 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 70 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 90 270 6 7 0 0 normal -1 sprites/chars.png 8bpp 110 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 130 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 150 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 170 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 190 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 210 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 230 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 250 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 270 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 300 270 4 7 0 0 normal -1 sprites/chars.png 8bpp 320 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 340 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 360 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 380 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 400 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 420 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 440 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 460 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 480 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 500 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 520 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 540 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 560 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 580 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 600 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 620 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 630 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 650 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 670 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 690 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 700 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 720 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 740 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 760 270 3 7 0 0 normal -1 sprites/chars.png 8bpp 10 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 30 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 50 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 70 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 90 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 110 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 130 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 150 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 170 330 5 7 0 0 normal -1 sprites/chars.png 8bpp 200 330 5 7 0 0 normal -1 sprites/chars.png 8bpp 230 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 250 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 270 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 290 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 310 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 330 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 350 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 370 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 390 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 270 160 20 21 0 -2 normal -1 sprites/chars.png 8bpp 300 160 13 21 0 -2 normal -1 sprites/chars.png 8bpp 320 160 20 21 0 -2 normal -1 sprites/chars.png 8bpp 350 160 13 21 0 -2 normal -1 sprites/chars.png 8bpp 370 160 20 21 0 -2 normal -1 sprites/chars.png 8bpp 400 160 13 21 0 -2 normal -1 sprites/chars.png 8bpp 420 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 440 160 11 21 0 -2 normal -1 sprites/chars.png 8bpp 460 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 480 160 11 21 0 -2 normal -1 sprites/chars.png 8bpp 500 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 520 160 11 21 0 -2 normal -1 sprites/chars.png 8bpp 540 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 560 160 11 21 0 -2 normal -1 sprites/chars.png 8bpp 580 160 17 21 0 -2 normal -1 sprites/chars.png 8bpp 600 160 16 21 0 -2 normal -1 sprites/chars.png 8bpp 620 160 17 21 0 -2 normal -1 sprites/chars.png 8bpp 640 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 660 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 680 160 12 21 0 -2 normal -1 sprites/chars.png 8bpp 700 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 720 160 12 21 0 -2 normal -1 sprites/chars.png 8bpp 740 160 14 21 0 -2 normal -1 sprites/chars.png 8bpp 760 160 12 21 0 -2 normal -1 sprites/chars.png 8bpp 10 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 30 220 12 21 0 -2 normal -1 sprites/chars.png 8bpp 50 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 70 220 12 21 0 -2 normal -1 sprites/chars.png 8bpp 90 220 18 21 0 -2 normal -1 sprites/chars.png 8bpp 110 220 13 21 0 -2 normal -1 sprites/chars.png 8bpp 130 220 18 21 0 -2 normal -1 sprites/chars.png 8bpp 150 220 13 21 0 -2 normal -1 sprites/chars.png 8bpp 170 220 18 21 0 -2 normal -1 sprites/chars.png 8bpp 190 220 13 21 0 -2 normal -1 sprites/chars.png 8bpp 210 220 18 21 0 -2 normal -1 sprites/chars.png 8bpp 230 220 13 21 0 -2 normal -1 sprites/chars.png 8bpp 250 220 17 21 0 -2 normal -1 sprites/chars.png 8bpp 270 220 15 21 0 -2 normal -1 sprites/chars.png 8bpp 290 220 17 21 0 -2 normal -1 sprites/chars.png 8bpp 310 220 15 21 0 -2 normal -1 sprites/chars.png 8bpp 330 220 9 21 0 -2 normal -1 sprites/chars.png 8bpp 340 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 350 220 9 21 0 -2 normal -1 sprites/chars.png 8bpp 360 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 370 220 9 21 0 -2 normal -1 sprites/chars.png 8bpp 380 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 390 220 9 21 0 -2 normal -1 sprites/chars.png 8bpp 400 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 410 220 9 21 0 -2 normal -1 sprites/chars.png 8bpp 420 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 430 220 19 21 0 -2 normal -1 sprites/chars.png 8bpp 460 220 13 21 0 -2 normal -1 sprites/chars.png 8bpp 480 220 13 21 0 -2 normal -1 sprites/chars.png 8bpp 500 220 10 21 0 -2 normal -1 sprites/chars.png 8bpp 520 220 18 21 0 -2 normal -1 sprites/chars.png 8bpp 540 220 15 21 0 -2 normal -1 sprites/chars.png 8bpp 560 220 15 21 0 -2 normal -1 sprites/chars.png 8bpp 580 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 600 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 610 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 630 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 640 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 660 220 9 21 0 -2 normal -1 sprites/chars.png 8bpp 670 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 690 220 10 21 0 -2 normal -1 sprites/chars.png 8bpp 710 220 14 21 0 -2 normal -1 sprites/chars.png 8bpp 730 220 7 21 0 -2 normal -1 sprites/chars.png 8bpp 740 220 18 21 0 -2 normal -1 sprites/chars.png 8bpp 760 220 15 21 0 -2 normal -1 sprites/chars.png 8bpp 10 280 18 21 0 -2 normal -1 sprites/chars.png 8bpp 30 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 50 280 18 21 0 -2 normal -1 sprites/chars.png 8bpp 70 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 90 280 19 21 0 -2 normal -1 sprites/chars.png 8bpp 110 280 18 21 0 -2 normal -1 sprites/chars.png 8bpp 130 280 13 21 0 -2 normal -1 sprites/chars.png 8bpp 150 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 170 280 11 21 0 -2 normal -1 sprites/chars.png 8bpp 190 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 210 280 11 21 0 -2 normal -1 sprites/chars.png 8bpp 230 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 250 280 11 21 0 -2 normal -1 sprites/chars.png 8bpp 270 280 23 21 0 -2 normal -1 sprites/chars.png 8bpp 300 280 19 21 0 -2 normal -1 sprites/chars.png 8bpp 320 280 16 21 0 -2 normal -1 sprites/chars.png 8bpp 340 280 11 21 0 -2 normal -1 sprites/chars.png 8bpp 360 280 16 21 0 -2 normal -1 sprites/chars.png 8bpp 380 280 11 21 0 -2 normal -1 sprites/chars.png 8bpp 400 280 16 21 0 -2 normal -1 sprites/chars.png 8bpp 420 280 11 21 0 -2 normal -1 sprites/chars.png 8bpp 440 280 14 21 0 -2 normal -1 sprites/chars.png 8bpp 460 280 10 21 0 -2 normal -1 sprites/chars.png 8bpp 480 280 14 21 0 -2 normal -1 sprites/chars.png 8bpp 500 280 10 21 0 -2 normal -1 sprites/chars.png 8bpp 520 280 14 21 0 -2 normal -1 sprites/chars.png 8bpp 540 280 10 21 0 -2 normal -1 sprites/chars.png 8bpp 560 280 14 21 0 -2 normal -1 sprites/chars.png 8bpp 580 280 10 21 0 -2 normal -1 sprites/chars.png 8bpp 600 280 13 21 0 -2 normal -1 sprites/chars.png 8bpp 620 280 8 21 0 -2 normal -1 sprites/chars.png 8bpp 630 280 13 21 0 -2 normal -1 sprites/chars.png 8bpp 650 280 12 21 0 -2 normal -1 sprites/chars.png 8bpp 670 280 13 21 0 -2 normal -1 sprites/chars.png 8bpp 690 280 8 21 0 -2 normal -1 sprites/chars.png 8bpp 700 280 17 21 0 -2 normal -1 sprites/chars.png 8bpp 720 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 740 280 17 21 0 -2 normal -1 sprites/chars.png 8bpp 760 280 15 21 0 -2 normal -1 sprites/chars.png 8bpp 10 340 17 21 0 -2 normal -1 sprites/chars.png 8bpp 30 340 15 21 0 -2 normal -1 sprites/chars.png 8bpp 50 340 17 21 0 -2 normal -1 sprites/chars.png 8bpp 70 340 15 21 0 -2 normal -1 sprites/chars.png 8bpp 90 340 17 21 0 -2 normal -1 sprites/chars.png 8bpp 110 340 15 21 0 -2 normal -1 sprites/chars.png 8bpp 130 340 17 21 0 -2 normal -1 sprites/chars.png 8bpp 150 340 15 21 0 -2 normal -1 sprites/chars.png 8bpp 170 340 24 21 0 -2 normal -1 sprites/chars.png 8bpp 200 340 22 21 0 -2 normal -1 sprites/chars.png 8bpp 230 340 14 21 0 -2 normal -1 sprites/chars.png 8bpp 250 340 16 21 0 -2 normal -1 sprites/chars.png 8bpp 270 340 13 21 0 -2 normal -1 sprites/chars.png 8bpp 290 340 12 21 0 -2 normal -1 sprites/chars.png 8bpp 310 340 13 21 0 -2 normal -1 sprites/chars.png 8bpp 330 340 12 21 0 -2 normal -1 sprites/chars.png 8bpp 350 340 13 21 0 -2 normal -1 sprites/chars.png 8bpp 370 340 12 21 0 -2 normal -1 sprites/chars.png 8bpp 390 340 10 21 0 -2 normal -1 sprites/mono.png 8bpp 10 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 170 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 190 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 210 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 130 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 160 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 190 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 265 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 325 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 460 230 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 230 7 13 0 0 normal // U+018F: Latin Capital Letter Schwa -1 * 18 12 04 00 01 8F 01 01 01 8F 01 02 01 8F 01 03 01 8F 01 -1 sprites/chars.png 8bpp 410 310 9 12 0 -1 normal -1 sprites/chars.png 8bpp 410 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 410 340 16 21 0 -2 normal -1 sprites/mono.png 8bpp 10 250 7 13 0 0 normal // U+0192: Latin Small Letter F With Hook -1 * 18 12 04 00 01 92 01 01 01 92 01 02 01 92 01 03 01 92 01 -1 sprites/chars.png 8bpp 430 310 9 12 0 -1 normal -1 sprites/chars.png 8bpp 430 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 430 340 14 21 0 -2 normal -1 sprites/mono.png 8bpp 25 250 7 13 0 0 normal // U+01B5: Latin Capital Letter Z With Stroke // U+01B6: Latin Small Letter Z With Stroke -1 * 18 12 04 00 02 B5 01 01 02 B5 01 02 02 B5 01 03 02 B5 01 -1 sprites/chars.png 8bpp 450 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 470 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 450 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 470 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 450 340 14 21 0 -2 normal -1 sprites/chars.png 8bpp 470 340 12 21 0 -2 normal -1 sprites/mono.png 8bpp 40 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 55 250 7 13 0 0 normal // U+0218: Latin Capital Letter S With Comma Below // U+0219: Latin Small Letter S With Comma Below // U+021A: Latin Capital Letter T With Comma Below // U+021B: Latin Small Letter T With Comma Below -1 * 18 12 04 00 04 18 02 01 04 18 02 02 04 18 02 03 04 18 02 -1 sprites/chars.png 8bpp 490 310 7 12 0 -1 normal -1 sprites/chars.png 8bpp 510 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 530 310 7 12 0 -1 normal -1 sprites/chars.png 8bpp 550 310 5 12 0 -1 normal -1 sprites/chars.png 8bpp 490 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 510 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 530 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 550 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 490 340 14 21 0 -2 normal -1 sprites/chars.png 8bpp 510 340 10 21 0 -2 normal -1 sprites/chars.png 8bpp 530 340 13 21 0 -2 normal -1 sprites/chars.png 8bpp 550 340 8 21 0 -2 normal -1 sprites/mono.png 8bpp 70 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 100 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 115 250 7 13 0 0 normal // U+0259: Latin Small Letter Schwa -1 * 18 12 04 00 01 59 02 01 01 59 02 02 01 59 02 03 01 59 02 -1 sprites/chars.png 8bpp 560 310 6 12 0 -1 normal -1 sprites/chars.png 8bpp 560 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 560 340 12 21 0 -2 normal -1 sprites/mono.png 8bpp 130 250 7 13 0 0 normal // U+02BB: Modifier Letter Turned Comma -1 * 18 12 04 00 01 BB 02 01 01 BB 02 02 01 BB 02 03 01 BB 02 -1 sprites/chars.png 8bpp 580 310 3 12 0 -1 normal -1 sprites/chars.png 8bpp 580 330 1 7 0 0 normal -1 sprites/chars.png 8bpp 580 340 4 21 0 -2 normal -1 sprites/mono.png 8bpp 145 250 7 13 0 0 normal // U+02C7: Caron -1 * 18 12 04 00 01 C7 02 01 01 C7 02 02 01 C7 02 03 01 C7 02 -1 sprites/chars.png 8bpp 430 370 6 12 0 -1 normal -1 sprites/chars.png 8bpp 430 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 430 400 7 21 0 -2 normal -1 sprites/mono.png 8bpp 130 270 7 13 0 0 normal // U+058F: Armenian Dram Sign -1 * 18 12 04 00 01 8F 05 01 01 8F 05 02 01 8F 05 03 01 8F 05 -1 sprites/chars.png 8bpp 590 310 9 12 0 -1 normal -1 sprites/chars.png 8bpp 590 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 590 340 18 21 0 -2 normal -1 sprites/mono.png 8bpp 160 250 7 13 0 0 normal // U+0E3F: Thai Currency Symbol Baht -1 * 18 12 04 00 01 3F 0E 01 01 3F 0E 02 01 3F 0E 03 01 3F 0E -1 sprites/chars.png 8bpp 610 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 610 330 5 7 0 0 normal -1 sprites/chars.png 8bpp 610 340 15 21 0 -2 normal -1 sprites/mono.png 8bpp 175 250 7 13 0 0 normal // U+2010: Hyphen -1 * 18 12 04 00 01 10 20 01 01 10 20 02 01 10 20 03 01 10 20 -1 sprites/chars.png 8bpp 480 370 4 12 0 -1 normal -1 sprites/chars.png 8bpp 480 390 2 7 0 0 normal -1 sprites/chars.png 8bpp 480 400 6 21 0 -2 normal -1 sprites/mono.png 8bpp 160 270 7 13 0 0 normal // U+2013: En Dash // U+2014: Em Dash // U+2015: Horizontal Bar -1 * 18 12 04 00 03 13 20 01 03 13 20 02 03 13 20 03 03 13 20 -1 sprites/chars.png 8bpp 630 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 450 370 12 12 0 -1 normal -1 sprites/chars.png 8bpp 490 370 10 12 0 -1 normal -1 sprites/chars.png 8bpp 630 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 450 390 6 7 0 0 normal -1 sprites/chars.png 8bpp 490 390 5 7 0 0 normal -1 sprites/chars.png 8bpp 630 340 15 21 0 -2 normal -1 sprites/chars.png 8bpp 450 400 21 21 0 -2 normal -1 sprites/chars.png 8bpp 490 400 18 21 0 -2 normal -1 sprites/mono.png 8bpp 190 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 145 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 175 270 7 13 0 0 normal // U+2018: Left Single Quotation Mark // U+2019: Right Single Quotation Mark // U+201A: Single Low-9 Quotation Mark // U+201B: Single High-Reversed-9 Quotation Mark // U+201C: Left Double Quotation Mark // U+201D: Right Double Quotation Mark // U+201E: Double Low-9 Quotation Mark // U+201F: Double High-Reversed-9 Quotation Mark -1 * 18 12 04 00 08 18 20 01 08 18 20 02 08 18 20 03 08 18 20 -1 sprites/chars.png 8bpp 510 370 4 12 0 -1 normal -1 sprites/chars.png 8bpp 650 310 4 12 0 -1 normal -1 sprites/chars.png 8bpp 520 370 4 12 0 -1 normal -1 sprites/chars.png 8bpp 530 370 4 12 0 -1 normal -1 sprites/chars.png 8bpp 660 310 7 12 0 -1 normal -1 sprites/chars.png 8bpp 540 370 7 12 0 -1 normal -1 sprites/chars.png 8bpp 670 310 7 12 0 -1 normal -1 sprites/chars.png 8bpp 550 370 7 12 0 -1 normal -1 sprites/chars.png 8bpp 510 390 1 7 0 0 normal -1 sprites/chars.png 8bpp 650 330 1 7 0 0 normal -1 sprites/chars.png 8bpp 520 390 1 7 0 0 normal -1 sprites/chars.png 8bpp 530 390 1 7 0 0 normal -1 sprites/chars.png 8bpp 660 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 540 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 670 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 550 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 510 400 3 21 0 -2 normal -1 sprites/chars.png 8bpp 650 340 3 21 0 -2 normal -1 sprites/chars.png 8bpp 520 400 3 21 0 -2 normal -1 sprites/chars.png 8bpp 530 400 3 21 0 -2 normal -1 sprites/chars.png 8bpp 660 340 9 21 0 -2 normal -1 sprites/chars.png 8bpp 540 400 9 21 0 -2 normal -1 sprites/chars.png 8bpp 670 340 9 21 0 -2 normal -1 sprites/chars.png 8bpp 550 400 9 21 0 -2 normal -1 sprites/mono.png 8bpp 190 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 205 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 220 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 235 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 270 7 13 0 0 normal // U+2026: Horizontal Ellipsis -1 * 18 12 04 00 01 26 20 01 01 26 20 02 01 26 20 03 01 26 20 -1 sprites/chars.png 8bpp 560 370 11 12 0 -1 normal -1 sprites/chars.png 8bpp 560 390 5 7 0 0 normal -1 sprites/chars.png 8bpp 560 400 15 21 0 -2 normal -1 sprites/mono.png 8bpp 265 270 7 13 0 0 normal // U+2039: Single Left-Pointing Angle Quotation Mark // U+203A: Single Right-Pointing Angle Quotation Mark -1 * 18 12 04 00 02 39 20 01 02 39 20 02 02 39 20 03 02 39 20 -1 sprites/chars.png 8bpp 580 370 5 12 0 -1 normal -1 sprites/chars.png 8bpp 680 310 5 12 0 -1 normal -1 sprites/chars.png 8bpp 580 390 2 7 0 0 normal -1 sprites/chars.png 8bpp 680 330 2 7 0 0 normal -1 sprites/chars.png 8bpp 580 400 7 21 0 -2 normal -1 sprites/chars.png 8bpp 680 340 7 21 0 -2 normal -1 sprites/mono.png 8bpp 280 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 250 250 7 13 0 0 normal // U+20A1: Colon Sign // U+20A2: Cruzeiro Sign // U+20A3: French Franc Sign // U+20A4: Lira Sign -1 * 18 12 04 00 04 A1 20 01 04 A1 20 02 04 A1 20 03 04 A1 20 -1 sprites/chars.png 8bpp 690 310 9 12 0 -1 normal -1 sprites/chars.png 8bpp 710 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 730 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 750 310 8 12 0 -1 normal -1 sprites/chars.png 8bpp 690 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 710 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 730 330 4 7 0 0 normal -1 sprites/chars.png 8bpp 750 330 3 7 0 0 normal -1 sprites/chars.png 8bpp 690 340 14 21 0 -2 normal -1 sprites/chars.png 8bpp 710 340 16 21 0 -2 normal -1 sprites/chars.png 8bpp 730 340 13 21 0 -2 normal -1 sprites/chars.png 8bpp 750 340 11 21 0 -2 normal -1 sprites/mono.png 8bpp 265 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 280 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 310 250 7 13 0 0 normal // U+20A6: Naira Sign -1 * 18 12 04 00 01 A6 20 01 01 A6 20 02 01 A6 20 03 01 A6 20 -1 sprites/chars.png 8bpp 770 310 10 12 0 -1 normal -1 sprites/chars.png 8bpp 770 330 6 7 0 0 normal -1 sprites/chars.png 8bpp 770 340 18 21 0 -2 normal -1 sprites/mono.png 8bpp 325 250 7 13 0 0 normal // U+20A8: Rupee Sign // U+20A9: Won Sign // U+20AA: New Shequel Sign // U+20AB: Dong Sign // U+20AC: Euro Sign // U+20AD: Kip Sign // U+20AE: Tugrik Sign // U+20AF: Drachma Sign -1 * 18 12 04 00 08 A8 20 01 08 A8 20 02 08 A8 20 03 08 A8 20 -1 sprites/chars.png 8bpp 10 370 12 12 0 -1 normal -1 sprites/chars.png 8bpp 40 370 13 12 0 -1 normal -1 sprites/chars.png 8bpp 70 370 12 12 0 -1 normal -1 sprites/chars.png 8bpp 90 370 7 12 0 -1 normal -1 sprites/chars.png 8bpp 110 370 9 12 0 -1 normal -1 sprites/chars.png 8bpp 130 370 8 12 0 -1 normal -1 sprites/chars.png 8bpp 150 370 7 12 0 -1 normal -1 sprites/chars.png 8bpp 170 370 14 12 0 -1 normal -1 sprites/chars.png 8bpp 10 390 6 7 0 0 normal -1 sprites/chars.png 8bpp 40 390 7 7 0 0 normal -1 sprites/chars.png 8bpp 70 390 7 7 0 0 normal -1 sprites/chars.png 8bpp 90 390 4 7 0 0 normal -1 sprites/chars.png 8bpp 110 390 4 7 0 0 normal -1 sprites/chars.png 8bpp 130 390 4 7 0 0 normal -1 sprites/chars.png 8bpp 150 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 170 390 6 7 0 0 normal -1 sprites/chars.png 8bpp 10 400 22 21 0 -2 normal -1 sprites/chars.png 8bpp 40 400 24 21 0 -2 normal -1 sprites/chars.png 8bpp 70 400 17 21 0 -2 normal -1 sprites/chars.png 8bpp 90 400 13 21 0 -2 normal -1 sprites/chars.png 8bpp 110 400 14 21 0 -2 normal -1 sprites/chars.png 8bpp 130 400 18 21 0 -2 normal -1 sprites/chars.png 8bpp 150 400 13 21 0 -2 normal -1 sprites/chars.png 8bpp 170 400 28 21 0 -2 normal -1 sprites/mono.png 8bpp 340 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 355 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 370 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 385 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 400 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 415 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 430 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 445 250 7 13 0 0 normal // U+20B1: Peso Sign // U+20B2: Guarani Sign // U+20B3: Austral Sign // U+20B4: Hryvnia Sign // U+20B5: Cedi Sign -1 * 18 12 04 00 05 B1 20 01 05 B1 20 02 05 B1 20 03 05 B1 20 -1 sprites/chars.png 8bpp 200 370 9 12 0 -1 normal -1 sprites/chars.png 8bpp 220 370 9 12 0 -1 normal -1 sprites/chars.png 8bpp 240 370 10 12 0 -1 normal -1 sprites/chars.png 8bpp 270 370 9 12 0 -1 normal -1 sprites/chars.png 8bpp 290 370 9 12 0 -1 normal -1 sprites/chars.png 8bpp 200 390 5 7 0 0 normal -1 sprites/chars.png 8bpp 220 390 5 7 0 0 normal -1 sprites/chars.png 8bpp 240 390 5 7 0 0 normal -1 sprites/chars.png 8bpp 270 390 5 7 0 0 normal -1 sprites/chars.png 8bpp 290 390 4 7 0 0 normal -1 sprites/chars.png 8bpp 200 400 15 21 0 -2 normal -1 sprites/chars.png 8bpp 220 400 18 21 0 -2 normal -1 sprites/chars.png 8bpp 240 400 20 21 0 -2 normal -1 sprites/chars.png 8bpp 270 400 14 21 0 -2 normal -1 sprites/chars.png 8bpp 290 400 14 21 0 -2 normal -1 sprites/mono.png 8bpp 460 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 475 250 7 13 0 0 normal -1 sprites/mono.png 8bpp 10 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 25 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 40 270 7 13 0 0 normal // U+20B7: Spesmilo Sign // U+20B8: Tenge Sign // U+20B9: Indian Rupee Sign -1 * 18 12 04 00 03 B7 20 01 03 B7 20 02 03 B7 20 03 03 B7 20 -1 sprites/chars.png 8bpp 310 370 10 12 0 -1 normal -1 sprites/chars.png 8bpp 330 370 7 12 0 -1 normal -1 sprites/chars.png 8bpp 350 370 8 12 0 -1 normal -1 sprites/chars.png 8bpp 310 390 6 7 0 0 normal -1 sprites/chars.png 8bpp 330 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 350 390 4 7 0 0 normal -1 sprites/chars.png 8bpp 310 400 17 21 0 -2 normal -1 sprites/chars.png 8bpp 330 400 13 21 0 -2 normal -1 sprites/chars.png 8bpp 350 400 14 21 0 -2 normal -1 sprites/mono.png 8bpp 55 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 70 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 85 270 7 13 0 0 normal // U+2116: Numero Sign // U+2117: Sound Recording Copyright -1 * 18 12 04 00 02 16 21 01 02 16 21 02 02 16 21 03 02 16 21 -1 sprites/chars.png 8bpp 370 370 14 12 0 -1 normal -1 sprites/chars.png 8bpp 590 370 13 12 0 -1 normal -1 sprites/chars.png 8bpp 370 390 8 7 0 0 normal -1 sprites/chars.png 8bpp 590 390 6 7 0 0 normal -1 sprites/chars.png 8bpp 370 400 27 21 0 -2 normal -1 sprites/chars.png 8bpp 590 400 16 21 0 -2 normal -1 sprites/mono.png 8bpp 100 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 295 270 7 13 0 0 normal // U+2122: Trade Mark Sign -1 * 18 12 04 00 01 22 21 01 01 22 21 02 01 22 21 03 01 22 21 -1 sprites/chars.png 8bpp 400 370 13 12 0 -1 normal -1 sprites/chars.png 8bpp 400 390 9 7 0 0 normal -1 sprites/chars.png 8bpp 400 400 20 21 0 -2 normal -1 sprites/mono.png 8bpp 115 270 7 13 0 0 normal // U+2212: Minus Sign -1 * 18 12 04 00 01 12 22 01 01 12 22 02 01 12 22 03 01 12 22 -1 sprites/chars.png 8bpp 610 370 6 12 0 -1 normal -1 sprites/chars.png 8bpp 610 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 610 400 9 21 0 -2 normal -1 sprites/mono.png 8bpp 310 270 7 13 0 0 normal // U+27E8: Mathematical Left Angle Bracket // U+27E9: Mathematical Right Angle Bracket -1 * 18 12 04 00 02 E8 27 01 02 E8 27 02 02 E8 27 03 02 E8 27 -1 sprites/chars.png 8bpp 620 370 5 12 0 -1 normal -1 sprites/chars.png 8bpp 630 370 5 12 0 -1 normal -1 sprites/chars.png 8bpp 620 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 630 390 3 7 0 0 normal -1 sprites/chars.png 8bpp 620 400 6 21 0 -2 normal -1 sprites/chars.png 8bpp 630 400 6 21 0 -2 normal -1 sprites/mono.png 8bpp 325 270 7 13 0 0 normal -1 sprites/mono.png 8bpp 340 270 7 13 0 0 normal openttd-1.3.3/media/extra_grf/sloped_tracks.png0000644000000000000000000000467712246102547020315 0ustar rootrootPNG  IHDR 0ސ\sRGBPLTE 000@@@PPPdddttt4ɢڮ7ȱ+̄d-@dޏzՆ+#@3^C Y7 9r}Qќg#"G?#Boȥd o!|(P)H""6 Áۂ 7 :f2 UH fHj H݀xX(΀1| 1䆉$[8RvN9a=#%I,p fRܶYqbB~J; vYg4 ސB3*?O"$BHx{)ɻ pB߁c[J;d ռ--٭T'U{"ppJY&STc- {eW{(IZ{,ɯPͲ,"&ڭ|Jjdv a ӫ$JYr_j/[{U-' =#UzolN2ѫ*BHJ/*~4K"%idYI"łkQY/y繆 kmn^~ԃph Uj=~@*, )?o>Z&SI߃#WTl"rr;.o{:R|YAvL µ'HIUz6@(lEww~- ^}쩑Lķt}#Uh>[#$y#ROܝHs$*~z:Q^9j64f'ӫ[#{*^{zXl֤ۊVj@r/"r= i֝e{u Ͳd3p$Ӭ;B+]@*v/s2٬tn~­j,IϧW6W*G>ڬO?F$=)ёWq z>= H7DtW@ȐRb(Ӭh};uUPez5" P$2+YP)vZc H; wo"2 ~uG@%^I`4@ (/[ HK> ج|=# Hfpj@;MGV@jӫYY<< MUW.F]lCp,Ӭ7ynq9 r/WWYy2 ,W|vwD@ԃURh56"@v D6KE@vW HH "!!HH "!!HH =OlL=P]OIENDB`openttd-1.3.3/media/extra_grf/airport_preview.png0000644000000000000000000007152012246102547020670 0ustar rootrootPNG  IHDR jsRGBPLTE 000@@@PPPdddttt4e[e`%J^̓eٙIi=(үx_;;5ar`]1o`|oFra_RZB6 3/{{]|Z@삱k ƞ.{`Z@삱k ƞ.{$ ƞd/ϵ ƞ Q܈.{iz>Dy.{!WZ@gm(ǧyO0@g El$D',|s#G8'W2Ez[<>=C`C҄K ˋ@l EGME&.,]/ !܅5u! 'ϡp)|rr.9'MQ !<&K $6~c| O! e\TC 8 TBD>'#`. x4Mxd{#Af˗_$m_k &秓wHXAVAb /G A> R Lѥ=A<\j=; B$(σ()) `9 O :cM. cUxJ8𸽫wwwv&];ISL _)XI  ouT:~5\=Î8cDp q)zfܴ>(Ս2J ,g r<\{.rWw-vt$ XI)D$"/;{Njm^?pUQQi ˅;|w}\]^s "e:R=dX2H{x~`%bAm}wڨD:XG~5ni2"`F#SI%C߇(aE 7xedxYt`}7ڷXXi3iEnJ.¦SgLr;~FP5TqA'@.L1${r*{ȭ|ؑ?C M;@xd7Qp!uXdn^)VEz |4&ht6TNs.;2KR,Ȼ\'$ +K<"QX+CAOC9;DѣAT1zi"=:3@" D221s0Kx!>.k kB @4-я)4)J8O4/x0lmG҈㴢* Hi "b#w} DҮn`>|FF@R,dR,1 9( "':1h@`pXco z7з)f+o >Dar+? VPDcDpu{[0/ǤvnJ)!Q hnx])(g@H w'@(tZ`A[\r%t!X6n8zז >T:ͺ^$AB(ϊ/2%LV]+aQ(E 2x,$)*V1ykB="H0H٦?] @5̽7\ux0m+"U@V%FRQq>M%! ȻtEh FA@w"K!pv1̪UǑ)*XLH⻎lDLp>,ڽ?#T=1HHro^W)]V -G6%p7q㸫p ;*b-14{"&Y=,=Hz}C5?B{|u )X X@y‸np@rChk ya \xL ;^\7p6\Qa6=D7^(!=WߐX{:FhPИ~o)ŠV|A:=ݦn Gp!}!ƒ3N ULT;  QgA>g%k1PXYvo Hj,yX ۴rxwȴ\6@ix VRqpc~JV85 8P|N[ !ix^3A`?<8࡛/`_*ZyUQXŪ8 $!+ $I"ݧUX=?`‡%D.aJ7a8v K !* 0:`uEu]劬CQ4$<$S391x`@Run7BIN|[~1"A_\#H\D7C%$K.~G㇮Ax@f+WTbi `W0vI4&q)He^fٸ'F@}3`P~#) >2-3xpi"p!M$n a[*|!mS5!DGgE[3Rb|"yBj< x3Z ;|1Ei+W=ôG *)!A=&D0 -{-?9/@Fg'?ӧC,} H1GuA|_i BCL MEh$Fêiƀ' @t!DPRM VD<E4HS.kE+Zp)-TcŇEo%<1t9|ʧ Hށ$}/B_.!!i h  2Xܑc߄;,FQA(C2  <W DIAAMm,Tn:jZdx.7x 敫a`i`4b%=HBT$vV$N_&}z9HYtf紹CxH-%&Z\k y,&Bo[e q˜^?@Vc0(bOE>S)Z*(OgA +BŊFt[Ld%ôTҕݩaZJN&' M;+-wfZO?Kz l80׉]=by}'-KU~ 64LKtH`i.-wIrO^ BD^lGOGcz#Ay1 d #.#=ʂ\k 1I'ô7ôZ b%QBC$-'0 Oxo7'Ok~=70&j|s/Are^ b PЛɱ%DX"|aZ/AJ+w[L5"7\q2X<m1mu3vK>?m`d?\xiir_yk')O (5+7|? O?iZrZiCB@4@USE+(F*W쀏sp08 ^PcՉE w=6=X=LKQ)f!XJܜ4?(L1Q{ gyUXCJ_,~PD$ЈL|22kK} CF)F X^F* !#c$~]ҖLJh@ŭ-9 h<|@ØP>/2:K@0B&S]PВσ~jbe)!&~>(=w't{~ko1ҁJ!O1Hu =")5^>E >9cqIqS&3bjq>N/rj 51x@4-$(4+C8wvw+U.waqE6@mОaںu\t)aA=3@aCH;Dǫ)֛g`,F ,C<3sb=H"S(Kz߃|_CP!/#!7nE-vo"H|D@E2ߢLx5(46"KAqEK2\A=w@ 4@wpu zkQ<[)5™^VOrvniMGUWD)[2`UWR=t%%?5?3= !E`x>L(I[4ᷗ5#\zg (5h_cz^d}]P>)#(BBl]7䋰apBE+W!gx{C?'),pK #4sBxƉcUgi뺰cQ Dw,aSE>S-f3ޫvPa ɡ]8.~CPb,"Ʋ#5f 1GDN! +eEC :<בFTo57X`ģH9V" F틬AtH/(Vo8['ѢpfLLeq0]pG0C< `r:m#.ޢw՛iY* JO̧f,oڃ]17}&\>j *$&//0`\nQ! Ӿ5\Wzk|$ì3PM=AD/&"v+ZUqN:Vk40hK8׊SFGZ^a#iZmNowogZ+p6֟'BLkTGmТr4RhԋG FZ 0@@f})yO8R7j 鹯A߄HeFEj}DtGX*Vx:77:҈J]EPk&jKÓ_13LGMPALqdzļx ~iYD+;>)ņ]ro߮Uxf$<7Z$@x\0t:3(w|pσ@ȕ>fVR}徉%1l)/¶/J ݡz^њ\npl8s "hQ~PJG( R7 䪯)Al!FrUhYo͔Qn+Ma(&xq|ѣ9`H=Av' m%|y)N%C}ފ%&WQ(A<''_UEKOITw7 LSsWLAvo^0ôh(~t IDAT7ME.I&@e_]mغnv;rE$0!tY%X j:pb3Ո(Hf~lRw89&b S&3:$  #7IԫR<鄈I[pFw(̃o܁:PC._HO|X,IP9=J^vI%cOĜ-Y\^όzI]9DJI9(<<`")A^:lFm%WCSlc'"̍^L;IT"u[1uq@et r Eƿ: K4J }.MbwH1qu@0w,@ MD׍i'ݑ;7j;lܥ)u.1?.C5q$S.1 @&J/zl]ieaM#(rС\б\Ǻ"m8.p!"X.I}QL=I mWAq#uyVtxhQmt$@zA [v1io2ȟn7$͝d/ܸ׸H9`tg|]?'>l4hvJc9sqnyzLNoh!L]7fKZ=6\0c9 }]k/Nx>‡̧d{.e0J_̈́8uU%1NxmĆ#NIgoIMAPrOO]%J|An** 5yaWW8KҧD $Ju 1 u%7NRncZ:L.F6s|x`"9.=J| %Aw}WQ$U'?&0,4~FC|!i2 xň wqwgFLb->RR,'`RoI7U\k2I ԝIm8KoJ&TC7,L;;lbI4%|E I]Eb!jU4PaĴk^RxE:c׈놽CF)#liCә98?h >JӨ@Bj;k{n-t+W]I >Pm*Zm9~77oƵUŸViJ2T_?"׍4iLL.mЅ]Ӵ>!rZLYuî6̍L%l*Y=6Z0c^]{} _o>QDGt@Ե3Cΰ̕vSLg3_~Ӊq0@z*dh=QTr*Vףz/􋷼v8BІ'A&fi܏$^ qi?w:H>anܬ7kIjnG]3C+W[,\/=ƾ}<}tejeRY1t 5 K t/M0CXѿQyQBG;$ZO\OoIgG$~n>q|ͺN{}doxﳉ?n+OcNT"4⩦]Zlܡ=-m]fIj{KM%zc HrcjGDp9=c*/QEPh+Z: 30tm!Dn2L h) *obcz"̄lb01;4|e5 d,`[=A6"טc{e "jL'q8WRU*29Rj4C⸞mw/i4FpۨT)л04v8 VPL s3Yd|\ HKxviv YLO$9VwE>@/$FFiSy=-&3>ޤw*~b ͵csd@ =xDo8nrPD!ŔJ?tq)^ ѢING>uFȼ[}Y'$bM~kC7'V{s2kzxco -^sOOJA>FϽXy)Ɉ-{0ݥ\{TBN/ŔJ?1|(uJnVHuQs;]9^4h{PE.m->zlǫ FK5 ҈/KY{ID{V1XT (tE+Ħ^Q\i< %Z.D+׫vk{Y[471M@+^'8dZKwq^sCSQnw=`dTҎN) RF@Xf*nOBz)=pp]PL{6ʇ~ +Rh\iӤ t3s3GCmP CSyyǞ`{Va0uhzŁɼǜﱬcH?U^<|ȱ,{aTL5Xkq?\A jBw**se[ʴ'$&,=pp]ܫ@*;I*_\ࡰ""CxG#Ÿˀ1G 2l`F>{8Ђ)jDG}(ANQ(hFz38KP~=`FkCo[;)0Aל W{ E Z`E@oBC_?%@r_Z`f@̝r-H48k0C7=|h (q5GrW}ǾHaރ8@LEE\aaǩRE0ӊ'H>uX:\ʢ(^0}s{u_A&5'_d' Ņ@I،C՛%;dw4d$6w4q}V;R<)|' ..SČP!%8ӌĐ0n F"ky{+}7;ƬFNӷW;]XP=N`h_d}w:q€8U@r{4\<3w6MPwl$L,=, !Lz B&Wof_[qWI}w'`/; Jqw306,ĺyY0_; =<}G\0w]5qB Yz_ݰaje='eו,3ұ{2 f:_ ZGoAc.':Mxi66=Nl,͝dD jFAFR'G, kny "mLOA4vI^vO'`6}bbĐ*OD̄{5q f[@ EY|'a}{Y"w7q @6F :{pd!E`2@ek)0zO 49im"YV=%D에lR~J$ɅD$Hx~daa 9@prX@ƃ 1 )/J!M2Ѐrt@BC7H$ > #.- >dHIɄƃ3? "BqdƟ FV?ڂ<\J'<0wp߼,?$"8pf\ eyTd kL#一ojY:8CTђ/~%ʲx, %ng :A +4J- +,SB&C 2j !GX0:z(!RhB"pQ`fy2 b])s@\QEC2S@|ύ[%I !ȴ1}]8w@ HZ@.шMXOϘb]+vNFq΢U i #*LhJZVruIW{nxm|8d%)$S|Ey dz-5JӤ n4*w #!rD@/;C<ࢧX ,H Hb ҕG:cbY|],xy 8,j[RrG*bD#+h-hIM[RpQ$iZ pMS,)쇻D8h=@i)ԛ6*_83I7|0`"WQ[:> IDAT=L+WQ -%=8%Wؓuz a1!:Z 4)XߗH*DH_GH*Qek#BX*OO t7ovVJ)zzVjgE_=-Y߃@сZ<1cHLhŅWBL'8^1{=b-Z8Ry.d Ї*RT 5y0(ZQ'bE*uNdοt06Z{R@pυ竵62re4biz)J3 "ḇ@b9x;C)nAoSKŴݮ]HE8heGEaAhxt5E43 z>"BrcQyNRMe(!ۀjJx&} eDC]g 9k{`le84)BbbzUg4AR_umL"*HdV:<kSHL7/]Z bb8Њ/ "R_S,b=RZr"R`{|u 9kR(lÇAFje'.;1"> \OXŪH HGA  CC0RtpTUId1J/srUջI1ÙW3'.D'H40)@ {1xȂ(^3J˼?<8Vf|h)VE!_0`VS[]L EZ!nhxdwRq—D3 Y 1x)QZun7WhվHAV*:R| NUV{:x Gj_<_ "lz)S4WzGʕ"B(4Hȴ~\Ѱ-y}5tGGd1R+c"AQ"&B@*gbMW`8 #yBxDD\#kpT'ć0r"AH{LVi|hc9W  _{yY5QjP ǾޚlHB(+d81+* sN.\qqZ8ZǴh&њ Pժ~._PȪy[R &45ٴ/r6\WۜS, Vʼn׾QLb5 ټ fD+d"Z_P_`(FGd­TIO"d\Ds,5't Ejr犈{O%1#:9iLA׏.VH6AQo+%ltp@֚XE)ܚltZ659vEcT^xxZ,mÅS֌)%f? XT*Ȋv{,ZokOZ|N~Sor=QjS­f|HU._^_u(r@RXЌxpQT"7ҙMp p!r˖m_ڭ[N"y Y5ٌ/2U`L5]NvY2!m=6Q\>kQGDL|x)QK;yt0l4Q/B)̭fS\:59Fy3MEqz춢ux@o"0X݌ړ'ǏŕZuLDlwl81/ܭST#_feUa,X'"d&ca3^k6H4 hTD |c߯KZfb\ͤ3["ߚ$EE 5]|CxﱠҫzHq1x1_t}9.i7n5)Y\0b_d%) _`)j:٩/rh@l"0lWkZ>e>- ?ۍ澉Fk:ҿo /~Ygaj+žHɭɖHMQ^i}ܹ/r`@o"0l7kRҬwݾ.Mf>IpSLZ{@j&uJu/Rvk"[&d ˣ*7>˛2U6} l}M&_s7DX{`1:l:ޚlռȖɫYbxQq/ȁYl]ט4eu7Y<}[)&&Z>Wԡd+_d֘*5y /;\kp'>}j9C|Ќ"X,y$Z$nb-c6uJuYpkE6OMd r }#5Ňd&fExЌ*]IoyV)fhh^Y`/ 2V%+5پRYz 1SqUa Xd&8P**:H_bQ9ӌ4&ѧ0ˍDiR]pSLHP4o,\0犗}-V%+5֬H=Vv,|L"p*a-:H_"8׌A?DkmQDzf| &=&uV+5c֛Ym{yuTxEqHJ#zQ],/R`֚I[bdR[odb֑EMƒf ?tikK"у5!Js%&[zf;@V_|gTo".%x%{7 .EFl Z{|MkMYЩbdoz /'/mvgtn"H45I8(k\ꋌpF5;_ZS:b.5Z#۴lA_CP ~zOhb&eԂp+o\UgHywf/2NoM7Y9io{l> :Zh,och#S6="ˮ: f0_ZpdxXӷ&[kxl*k[cng!Do"0%4Q7 .EF޲unLW֔ "xkGl׶"}151Z$\G46cG;XNɂ)W̏ "kdۏHM_/s?zOBdN3]I3]_Zc: f_Z3:,EfS,}kmFJM^#7+^+Szf<:Xz˺`о}kTiː?9OO3&|xu"}ck#5iY,uY3˙;ߣ*  -פen3wkFNMlV}XՌwHcyj/dld}SIFY}fC[.R-|e&,ݰf+DV_G=ND$F3|Gh}^8u@ ")Vh+̺5Ev{ eת^}_hJ4xՂYZ٭7@_{=E eޒf\0+S";=H8w<"x|W/թ־>|2*N8@ Z$mKV|$c fej/cπUʼn"qjM7JRi5ZQ|,ƾ|_= |Q )4I 6-DǎLYjQvR=(& :jxq$I#mI=v`fRo=yx}}Ex = o%|Ѷ&=v` vǼǑYVX>K{ 9MEZ=v`b/Oj@/tQj$Fo58\ǎN-t뱣Y>;z F2o =v`pQlyCdn.h9:Vi+.\@ e[z ǁ)/χ!͕{e}7|BQd&{=x5?ﱧZdc"=+6Ѿ>Ū^W"=ysdfs^5}ǑY>J{/ SC|Z2H|q6^p_www?qD@CGd9^HW8Gd}>\-b6^r_]拄7){|qހKk~zڿg}RW%oT:qt@}>N8w@xzۿDI 8w@N^ʜR?q OFQQx 9q\X@ζ^|;s=j9?@Z/{EJ2q=j9G@X/?H Z@}BsHô(|9J@ dFQ- Q_=C'2j9QT t Z@, `nkX@, ;9nkX@, ;9nkDͶX@, ;"obv[k, {`Z@b{b{X@a =a=, {b{b{X@a =W@.$|"xa۾x,%6.l`# Ab5vj{1=, S,=_ibccb=_ ]0|- vcb=_ ]0|- { ]0'sa|a ƞoa\Y@삱[<n{Bb9 0_X@|Ξr=X@, x>>@{X@|!~:" ðw(b^!rn |E`a !br+)_X@, u?tuQRH(bNQ$(TiQrVyw8Ek%QDW"b?=FQDPQKH0"by=`EEYQE\X@, o|2E(c;D, 3:_("Gxt`G8D((E|*8Oɑ7"G>w`~`j)FQDHޣ5;#"Rp$ D9Eӷ=4}]i\Ȼ#";DJ1"<7u93;$@ӏ D:QD=nA@˹,Ipt "sZ1v7Au9q BDBp>,ӈt%Qz?x`vko -f)8 %Q$XuEFBw.Ec`vm b & AE @qAʛz,)DfW"oIl>xp !<8"=DPŧs)i%QęH\Ƴv`H\8 ?j^C1#ENEr׈TT 2xC)`Bd +!CIG*7[2x@!狜H7ȣH|[x^O*N=~x$$i0A)tH^E7\ ӛ뢓+1dCG~-S+\.[т(y-9"Z` ցF䭉uʕxap=@EkO L{Ҋ4IҤՊ9-!w})/\IyE㭉uᴈw0iǾ˂)_UD[I@J1h :{ADzU@@{HR[˜Q .z /О"+(M[8i%Bh rT@.Dwuj|:ߒHn_e$ /pav1o|,8"@ 4ӣEZO<6}ǓڵN$4?@>zl >+9]>8FX1o/CC D#} 8Lk.q2EDіgH\"ұN5yYu(pxË3< IuG_< !\O{3d7ZPD6|. ѢpGĕu"ŸZ U=k\.D@ʵ qKx\*}.Pqv0r0aHVkh}o<5ZC7\(z4 kE"r"}}]L{wsNf WxO!k@+=iq)eۅK]W~Zug-"ͮ_F6 XLOq {=bN y)O:yUoyg(7%'P]||8$,@xNo VԞ1`ը!|]foAk\e Sj=_*- h}o xҦ@bEBJR~N5=/!4To3u>ϡ(+|rr8C޲ηCQ.>f5HR8x2AT3,DJ-"z//@^0hi{Te[|Xrh2?/у E&u·-J>i}`YYÂA$i+v IChqZA٫~ɪZy!b"D{Gk0+|}/=C<ȧE.̥[D맱~^D,|x^tҷׅ:G_ā?0zAt(=kη3Sw7Zޙ%aX4IpN0ONR^|l3rA\ UIaѮ7>b $+zu %-_ PHr#O+zF8|H}R/"*=UϭТx=W_:-xSxGuv%l68|c E06L=0S>WeDA"G}%VD~gAů1)^];g ȣ:ѩ+_aȟq:p~6ybt. [y>N8=PL$ |Sy>eL*}j 1,"N&#`1%Vrqk_C^"$7xq*\IKYՁe9|z0gJu N;>{XXgٲDO#jrXy˻Zh'IjEU 06uXa:|$ jN:n i%d\;&E\_! f׵|^qh|JAYSOkգ@V+ݹׅf@rDkD_+5uϯއ~- FdDuD||U&26,o)~`:ZԭZ$WB?` {f:5R+liUBpc\CqD\_vzI@, KQL[=u+oq'AB~]܃5s֡}_kxCR1t?=߇FE|_V* >7ѵOm|F=uKoXiz=0)WMeo1^6{-oJ=uZ$_}?y#KxL!51(wYh?_ "HR`EQ 8 =ZD;-"ɥ(RD_~_AZ~]&,#,hϝp)zO/QD,nZ<,7WKsY"bOIGOEZLjឿZmF`u`?:05~ӟk k|bU3-Cȝǧ=S;5"#=~oLBErTk5C%}ui΂~]XߣkD=\~ǁaHAח/uEcmw=\~CBgΜ\ko3@H[npD{2&==)"|2E+_]߅ ǚx8 ^WoS@F}~~+K݋ Bt٤%Ϸ1 ZĆ/suQ^W=ƻ!/'XhZ|2EG k%qP@"|"KUXq`Q3>Zʵ\hA We@&hir{ N"<1Ҥ=#Zqp@`(S3^-kCEC*ޑ:~Z"+HG ų=EC.tk d:,ޅtxF=xq9<:8=Yz*wkṱ:,{j<;[5TR?r;@"كlOj<;S5\ SvdeYq'^rd@`4{Lw;h# t{LWǝ{HEցr:n&+qG~u`o]ǝ{HEׁDKe{HEׁDS="jbJ ]{_$ߢ ]Q@@]Q@@]Q@@][@@{  JE=x kB?18! nA@ w۾b|[C@Ļ]?E[C@ĻM?MIsx|`0^E@x|`0^xA@|`0^W; 8p@@p@@p@@p@@p@@p@@p@@p@@p@@pq82IENDB`openttd-1.3.3/media/extra_grf/aqueduct.png0000644000000000000000000000703112246102547017256 0ustar rootrootPNG  IHDRXdmsRGBPLTE 000@@@PPPdddttt4c7UǠO0KjZpF!|q8uȱD 竢EY@UUe5WC |7Sqho;Ab_u ­𬓩J+D D2h~RZ㛖>h-(%0=g/c}pmm&JﱫQxyySp($ f-xǝO׭P(` 8/s\$E39XH˺N*`fe1L}^ZZ8C7 tqax.* A MAj wpk,6\a1॒"g@ Ç;r,:jQ}ڗa0lH U1qHMQǝRRci]H;*PC[an R!UQbFYX/JDieFjJqS>7Ԁ_yI)sv@V"lj\)- oai"lWrB>2 5+K! wXp'B/_n!Bt/޵ͱaҶ~-b.y0 $"'{*bb+>.V"|B#c_]/ K54E1/!\P+Ig7p]q'-iO _n!,BkCe5Hp%:^Njh X남j\{~8&g } $An[ani\ pRocEu WVQw0^D%| ڭ0u7m3 hN -%/nO5·v-8gҶ7߽E&ủ'PmɔOt@\sET7=9t8̍ŝ:wf w_eú(< }QG~:\G%Fm21>D)8|XY&8-7`3m@++&>Lr ȱȱȱȱȱȱȱȾc]#t Wyo͏Z뇺SGE9g7M QjbuY؉ruʷu)G &͑fyg't)j*&RG͑tO56~bS)ZauX:'9V؉%gJ24y?X6XH5W!|qzEV{޼i KtʷujCeaOn@ZەoQC$NFBZ)j%IuʻyArHt ߭p,vaNN?tLC7-::b_$uKNLNyӄ—_njLѲ )ZZ84@|[&L5!|q鼳&0\mS4h )MN.Psh/ʄDZu-:zNQ'|鼟G/ uʻsN,Q'|\D ]U):ohEt7_ʗC' u 鼳=)1:~!:p!)NSԨINK΂k@i)֩t 耩+<}aM.sc'3NÙOG <ᅝopGrH tʱVGG c)o}df)/u8:/ptuoglHidn|.h]7:/xd5:5SiIS̠Nű'IGK[ cMt,QѱHG 4"##"#"#"##"#"#"##"#"#"##"#"#"##"#"#"##"#"#"##"/'%{ [IENDB`openttd-1.3.3/media/extra_grf/chars.png0000644000000000000000000004114112246102547016543 0ustar rootrootPNG  IHDR _sRGBPLTE4@փn ( Іv ;|Zu09aܛiˑ"m;HDy/>2{ / @eHJ#qd p %ԘK^%@:_Oo7@&h-V`hP)pDE 4HY!|CF&V lyᮚWdMZ"7UeA:ᮠ깲Lw$@DI8;=-'Զ6ɏ ~H@g@?MFK萤}ӭuiB B psge d.@4pc R1 J3pRۼ9}xi5Q3{ӧT ]p(@xZYAiՅoYB](v Q,p +W+nj ,ªB#ƒtN˦ݣ.{.@h = YAʭ{$K[{Ssi'5ՓՇ1 F!@꨷YItBm p& y#@Ujq @ b&8uOoR"cD>ޔ IEy a^ʯQ~YBRaOEX=Q,a^P : ODt,7zj ?G .B G16+28Qg%}M2r%=RzZIoZEv8჻y׵Y@J`]b͊6cU߃k/ŲG`n^vm0ݼY@䃩HS/@  uߤ@ .@ AAHPP$(( ;F6D6Ce;Gq9;lE'UPJpUg j;~䨽 z0DJ8C!T/7|"i;87u# gpjo;Ԟr"<Ջ}X _ĕ2EːocZ_^E,lYO <\6+I jo;N>'³E^k3e"wq_\ 6XkM/Н `P}Pz*I/U;_5M29wfl6t7F"V) dM<\7O_ 4 v kn_荱n*m(smvp7su0nG3eG9ܚ_8.FIJBimg7 9BH a BA | 6@ fak5ĺ 0o_fd@B^4@GR ۓqP1;o |"̻#K"6Ѿ4]fEn:oFvRk:\P(2Cݼ]{b{$ @ Nt AAAHPP$(( @ AA e!Vhdgђmgyvjo+m+ sY.RіgsZcz?66A,Ic>IsHX=>o>@aPP.y$mG/ L-q= )\R2%+ ٞ`Dy4%|ۥۻU$0wX=R8֖" !y*=I҂T2cdK5R땶ܐ;4@3Il~8?6"l'qR-M_G}pj8wB iIL\yWx4HKr0;37f]ol~,=g_ i* h U`Z|)Sj^U$4{J*%i_:Na7i{n'&gUL@dZLu qM'}lI%[^b'U2^w>#(i%@>Hz\7 4H2X Kr7@ȚX)uX|XSI͐K-'οdHߧTBn 2rZa^J0@a Nu 7X,Dۜ9@c F$Z{2yaXq/@^XH :86nmΜ5 @ ';ϽR}aAR2%M*-mGyq59í[bB*k!;om+a!=oYI.eaAW'rǭ& TQ"| AAAHPP$(( @~ RH|zi |clտA =F} ]ip~r[Wl 9k Rqm%u&7@+Ӹu?5B  fg4H)LiO)}])J^~J`iJ{NGHw!m ;CnϏ bC <5M@xRt4܂}aA!  oVҾ@@\Af;錝@:\h4βMEiw ?Qw8XѯX AAAHPt={s]pwP|VԴQ;!f/_V{8hFٻ4Q}>O~'@CSwd*i@ڑ_>/@Jw@^A7wGp[.H%}3f|qk$eHd9ô;Q T/@J,O@'w`Jny㴣OoT)hpTw;Hc&XRN>UH @HFxڂ3Y>|u>){ebuQ V$#K{ @}<8m -}pڭQ';S>kP5 \BO3Lv<7=oޒf;2惂_&k>6| Y>x6 [[@enk㖉EkI}hNEddK9(m({ z>12/" RW c*)uJ;1,*MM[@bCQn;T0AZ' & 9&V%ػVҷlYqVxu(oIZ6maޛdmQDd<oxS|!v}3|0,lR\~l%Q@*I| 52Ϋ7@DA>[| <Dìc%//]F%FpJz _o-t 9d=p0 ?,^}bO>ڋUMy|Szao6{v^fb20u nݼ3wN{S3 @uHk| w` Dkeu` @^,}}r+|rߥAAĺ@ AAHPP$(( @ @в"Zi\O)i 6?rȏ^*WmWu;rxZr.}jK7l:|zJ u6UZȿt @YLgZZ&+thb,f.aG̲t<TԶ_RP7g*@W8M&VѹH"coz#˃ͧkn dҊd$GK I&U$HWq~ɼ DBK>~U҆ *GklVPd`4>*f0aDd$YKA&nQ2Oiah@풜1@d;_M\|dꫤ씒PzP63VZ` еs.$4Py ܗy#ͮE.ad[J԰$%.ՌUqJ5"db 8 W$naBVg4}@߳Srl>gk0j_RiHMlL *H^Jk .>b?Tr p1ЦjnMv@A_gb%06M|Rl=|$_~a+!_-sB`2 4 Q1TTU|4FrFqjDFiV"jw.D3JL0qVI60,kl1c\ħNZZR{EY{ 9 &i䐈\JO&iP}Z~v `q7Z݄f:dV= {%J#((< h\7{F .wW/ӓ?k[M]4 @ AAHPP$((A&( ݛ4av%&.><[>`ot|橬U;ܰ(NLhM[iD̪*U4I^u|b<և ʸ>iuvkUs_ < i@Fx@i ^Llw5=4؟fS9YvW:=0 idy'@fX B wOF Urf8n_TNXI&> N;ל(^e1QNzPPP$((4 {n9o7 oH>/$M5^|u_/F7V^ýQ YI@&][?)Y@p$3۲GiN3k080V>yG@s@D_Z@*:e@@uv .[uz)ReB r|Z|EosRcKEJp6Ci\ŠjdbabGlide<ug:}u.@Z@buvCPhVv_nH/%t+]sB#b Yz00ģ/OE=ciy]Azeԣu*;B} vSP|6,'K64x - !09oL N j4ɻC(T-|B i bՂLS ;M`+5aG4-FOh + @8 KJ֙b,:m @X?e Rc/@M,BjჂp ؛_KY o&MM;mba D   :ZQfMd@gLh AAF>7IPx # }ұ`ƃ2K뫕E دA$V ^nnT)}_ ֩{HiIW̷K ԖiÅ1sKQ,D̀t| )j9!6dn 4H  #>cY|  $|}]yNp T&(~ ;X!zDqv=Ua'@ iy|zRj !@'D.=a'@ :+vb|Cg3|ͽXjm'ߡXӸP=B@L+Jc Z^IΧe~:]]xwwy"y7>^U-`դG1j r#Թrʍ_t|@95RCfB-mWzS)1a4~@Pva4M P{,@6;F=XB} Aؚޝf4@kV-.?Pgc>AX;w_ku'wpaj2IDAT 7@ AAHPP$(( @ @Т"ZfT'!hIR| Cww5}.g*MFviN\3 s)Yt%8C<k J4]gB06a csD^mF;ZҋmcTO(RDkyy t)c 2[:]G@!!-Fi2aeVrXDi^~ [3~y*6df5?UdLNa$+ޠE 40>㣄4É @*>NbE #䋤Yqr7̻5MխOID#'!ЄLBN7 BWd=L5uC|[iM0(]k=|BW؄;[s|'v~_ Cβ#1{=px|)[>Ӝ7|pV&Sy |۳|R+̛L"F5۔p~0t ڲVpYpBv>n1]I?7a%ݵB79< ^qGaDQ^I bg*E̒ ̅N!fpP{ AAAHPP$(( @~ h yPZkYcjG(+"ofׯ{s  Q[ɾGҺFxx`]^ 7o `JiMo˘Aol/ $B'ke1lvwq kKsהMR_Oz7@N#;@vkɂ̏|{"K˘{i:cNA rio{t? }uL8X^ߙM9 M6ia.:Myh=ġnFܓsEU;o Uno7|~TZ>Z7s3n : 3A~>hL.@|S'D@꾘s:Fj6MH[|claL,˗_ WGȱIJ/Ar;ܷcV-rH@57jbG.kUI\MSȋaȰf`s9>;e^+}4_I`縺P#o|sDFPɶF8Zsi 9 OM Κ<| I]qȁ/sOmĐ86r_._.@Z1@(܎:JjR~h  ,n@(5g|Wt >t>48w c u*3 m4H;I| Z 1>/|DGZ}    MB>P ?(ЗBab R&9BgB]oo5 )hs \VY^Gފ1gZpJ'CK)"fjUsy8mh l>Pͦu?WGdQH?.2Hݼov|zjs74Lo6vԶx#=Lw` |6!N\Cݏ|vSgb>RȡFʗPޓY5fAVYbG~Z7@ d5|L"hF FkHPP$(( @ AA?bu^c=un64&uHzLIh뒨U 0=T ۻ.:o.>F~\9d4PHp60ΕUNys$2gL ۙ vK EAw&U?eo0+Xh`DJ(Vε dN4HbY/9M3|t,v+Bdg^kJ$; ,\=eyr$4B)>kh߬8N;$y1IGf!P2IdMLS0( ]þE@Bw$ 5&|y͋UI-&[w> [l5FZ [3ӻP(\g뇑7jVlڽ {VdO[nC)Gc!_g >Jz:VD2(}d%s!0E> @ >h\|)}fI^̽VHPP$(( @ AA tJ#/1+ ֎dSwșwt&iʅO2\~UOp04R[''δ4#T@>7dGWP?rSg4$(ӄձ ,~|qP[BW}6&IhT46;x~@-yLkV#ƥA@ʛAӥE}odr'id?@ :|i&뤿%>ҎDhvb@ AA\:]ߞ[O<cݾo[^J޹\nŗFmv8Y]snk̭odWm~VjlG Qc@!;v;zyru ?*A*|HD^JEs n)@x#@VV@kȌQ)Rcv G=:UYB|F G.JZ(2uq"ܞ$ !_ ui̵eh{#PgZW%n;n\SS)֪7:pA.]F!uo+* kyu74dc,@l;3D󓕦܎`e@90ױ\WDRd mh@I#Z`>b^\A&&Uh{M| 3) ּQO tz=1E>eYiS4Վ᭒5@:l/ۑV>~`AjyNYWWWc a `Zu/@HL+L++m_.U#S+ | 2{ іxA&9.xZXo6 l[IRQD)L" J^EQ| L]d5KI߀T `51>W@lz e#k4]|CY!P Сnp7eqD`A (9r@Dz4mGy ЀeQ\>?@JHH ~֨+}H=ü 9'¼K'Ȣ A*5V!HO:p݂Q~,@мF@zW֯K ׭A*k  - b!cTGqg`z>슇H5@l> lbTF5ʩf{)`$$rS Y}ٺ! ,V Z|/3o[[cbSbe"=Pkj>͓`'(mL&"뫈L@yu;ե(@&h&Vh3ۘD_@jʈ;#թZ\>sXX*S|-;B ,jB+^qQR~#Grc@T>"dB>! l5![- (;n'ݬ~a#k(@hݽxE#G;򣲵Gzz{}tfE19BO"E띩Pn 0o BUX{?\>;w-. |[lw;4@KÒoŎ= 0)=㎋b?A?T]@:nDZ&!|K9 f"^I'Ar) @ AAHPP$(hRJ| k@xp&^㾗Ou׏Ztjm[EauhXjVGLMpoRHY44ՙAztWSg,6Gas_nUW \Z^CbJjRTΚ^)$u@ -5LJ(9s yjlC֯\8jkW{VEHMrN˯4ȫ%@VWd>ZKb6NhF%1 _" $6 Wc,a.+XkkXgZsH` A*,\d R9q$g. $HS0sPd1dqk{%%RiFl3zr@A nN$Ar!ʰX7L)R4jJ NS8?h4 o4HJ2^$+[lU*&?5lj$4 ݙ!GXJ{V#V):i‡=opқCeXHlNPo̼@fh9d1,@6C* QTĤGm&V-,|ԚnA6Kj04_20 AlmF`¢` (!@F2@?0: *A^&ײ[z.vfV`ݶQJ F'TZc|Zq/I!1*NXMA-uü_Xѽ0[ Þdʚ%#li 7%QZ K)\4#3HF LMRaޥy3aoYIJs~}%YI/:oanIJd}r &AAAHPP$(( @~ ]cHni23i zKT\1#}۸_nu>M;>ů4 /17}娟M] HD?rkԫY۽:Z4S3K4;FVa(uO8ByP/oTwPn蜉iGހ@pV Xw5 -&rdމaj;fHYF@<קUWH bRH\f-Z>jlk/j3#Q+sC"&*L jG˲Ekۥ5ip2)06f@ܠB f2H-AZpy@AJy%r0K%1%k]+F:Dd-hgs;78@dom% JĬb ՟dÂ+\UKC z |%Ԃ΅-i% + ;BDL]do^xXIY R'/_>ןχibL`4D$OJK-Mޘc?ۊɯ:֟tte")V2u+QҸaUVN6WkszA9W?遫񁥙V< (.Z끨~^k:i=Co[ML``.+S0.nuDxYQ#z{g  z;r8vje3y?@dnjXsgnǘ=9u{o,?4>{u[y='>c'z}X<D][։aM?t~*U7n^Y?|Pw#?`TzpqNEV^?uުJ4?_9ԟooݕ?Rਓ8r] |y$:@SS|.VRp.Ue{[6zF9+Wdv̟;nS/~rMG#E^o>_Q] n֮0.XS;\t~k~ !f|0qN2HiXIm :*zy?YZUks@s;юpWGkfM[>n_!YV P2Ї+a"ompnD@:)[%1Ч7gcO vВ~ ˯^{d@KʇFubh4 F@h4 F@h4 F@h4 F@h4 FQ 4BQ 4BQ 4B-N ~ ,:,;xcpg_ F 'P"\]&XQ$KZahq&.@0?0ą"r,`~ZBW C $n)Fh /A~<1[GauiBGek/X!'6M<⥏'B>M\߂J<⥎'>n 2 :}xKO^ux)㉘7)$H<⥋'^uZGTD;. AxKOĿ42D A/E<1歪D$^;,skGrk$H<⥅'~q=$v3]xce^8A{@W׸C~\mxw}|MN'xvЊ庒zųx'Qø6z 3^,7#EZIJ` dxT\PV_o^͊S8??*痶̟y-V׈wb| _?u+qCPy3e.[ Mp,JeJsJ8~ xN*{@MCnax*/ݽ N,+qu+_a ?ϵTK%*={rU?sR+Wn,$qTxoP\#AxGoy vv7>=1\)C^]@Z篒 ģ@ 0Uf+{}aj7F {=W8\Q %؟sJ.Mga8, ţ@&I[[}yaDV,Eůq@fMڸAQ1xJbgo9 R={ipoB=xORn(((FhFhFhFhFhFkHA#$I X3Ū*۰{+? d6=ŏnJ_e/G</[@d4~SRUJai,~se~i( ?'` N`MZ A 2zfkv7C&8k\I@$|wc̣z*ċמ4^+7r1HX V T>'=^~l$ċי4^Ye&Ut_诃F[[cRϾT(8~ Q`5p>Ï{i "reepJu@b I6 ˇVU&kH_3YT&*wAx&* ]>,2'&|f+YJ/r#aCB$) V~>y\ $vm 6y2-[F߮k]Ax^ KH0BdY}>0TsGVfT:ڕU˥KN8\0!xnyb+?|(}պ끨Q7Pu_Ә&Y@WlIR K_T ³FIi+ *C>/k} jd 9ܕ+Ϝ*q9yL̍Z#8^lTY}=L|=׬M3͊^J?Cɭ7-ԣjՐ^hzeQ0N~zM+2xX]ꯅ_tkXY?)s5_\xVT0c?~93 [_SߚL_Py*7YDZoG7]%UV=0'~&2k ~}@x1fDԟ߃̙ͬ0rݙ^nsmO3_^"kͼ*st3[ΒWq7Sv쥗79vZS=xy/XSCǯ/0/jmeQWJ4 ?YF<;~x 凎_^@HLSJzn3m*g`!׾iw|;* ƻ,c|ïa7(~HpzV,ו)UMQZ 9<?yqu+pmJK }sRUvkx$י`eD_cn04j0kWXPٖ Ax/A2- ->+2^2Do o``B#M>le\SÅ* >Jj#W ?ip5G>rkf QJUks{;|W?y/g_3F+@~-~NpJ:~x/̟Sڠǀq_q׍ȯ` ^SM,X -Ⱥu|7~^~ \*&~P7yf-.4ڬeh4 F@h4 F@h4 F@h4 F@h4 FQ 4BQ 4BQ 4B-N A}~/~@h=@@ ';-P<ళa $ $/:%-8vZ:,8 ?00yz@s[$ՙ|&`x<Ţ(m8ёk0Hx] v^Ou$;O @r&V25q^x2 Q Z06I";f@Ja{m~ط6?$Wi;F 6N R"5?;l4Z2F N` FI&Hؖ] JM`޻Vw7ٞkY RN`{SJ7@F; D{C~Rʸ5&HĦA w.ߎ+M'5Ҫ  {7~+eߊ߄t8Gf<D F,GOM_&)~'!/ͣO8p(~-34o ?7@&WLPFbsY(f1ZOux:Nt2z9(G @29XRKr /mO/_gtL/^XF[[c\VJIku'DNŦV/B= DW2ծi*b%Db )ƃ d"Q2n״3Y߰ JVJr<;܍o1 /cJ0j2z~wҶ쥗7Y?Iu,>(~ P0h<@&R/pݺ=W^4.*nsQrhim M/ ~agg7z ΅[̭ n_\8䩔Z:;Vf8 _pXJ4e b쥙3|_C\W.?,sV+0CL*S7^l\ݞ)zL jK=)1x~W3jՐ^~h(F~~zE@ rH2:?~lZ)9u7gOn4@(AKJ1`ެ tuP ͠%׃fN{ؕy3hOC@Q 4BQ 4BQ 4BQ 4BQ 4(((ma>8v|( |%ދc83!o_K|M0rB)) IDATFhۜ/X{J0R`~x{@1OZ&x/$œ &+ D#}*7@ &K D񆿶Cek- O*&x/& LWBIeӖ & Dbz<)`⽞@"6 Mx2{A(^p/m(UL0^Q V3!{wVj{gԣ}4?t_ZIym`j'F:~ xc%.+[ JcyJ*/)bmPo7?‹:~mQ[T+HG2#Un̠Wn_ϪD54?tb%.%+_@]vCÌj3g6`9B_po=~x.~c~K\ *7B\OxWq7v;_G@J ƫ::~x Z}sȈnMxZܨQDc n0}x}b1%nvg~WV_w7?4ؤ8{qazLW?Gm-S|%3lkóO;:\@&mċ ĭ2_k+&iP<} xW_# Dm\#6>j)B%x~ xWI[@XJ1eݑ!x,nm$x'F Kd֐H<H}Yw K^ 4((((hFhFhFh2 q#?'ދIO<K83! 7I❊B蓸iVpH< 8/ &XP\TLo.?8?I7=H3@߃ S,FXxGxGxGxGxB< $xGxGxGxc} ƃI ,?7@_jX0lp8O5MO Fk.(~o`X)(륱zX&gxc /_{A T3xZFl#$bVx~`x:  P/VƘ H!kg-+D?8Q(8~x0`Un8nWR[UFEY8bM/hxW0 oHA+0L Pflf0wVr-LVzG _;" /F P/3[!Bܸٛi/Ի9Rj݈7!a7` x B&Y淡VuVnw,ܬgxH~2/<~C Ƴ\({LJ+LsOCnW-+`:@u/o|hYZgK82((Rzfl"5knOǛ߱E mL;njOǦ> S!xKHkƭxdD~(ﭩ2[8#W UgÍ% U#B,L""5eJ#g^k}>9vwBxt~BFCO'C.|{\op<>{ {!zC:$xp}A] ̑@)+&v8Oh4 Fa&"g@[^/0~ȢGҳU="wQ(ū_a* x=xuTI %rg zoC?@wM6=%oDI{7,taysX@NܙP o0/"rti~t[UѴ+3F>m"p4G,ޑZuk[2W-:ȉG1affJTnβN#xϨ{GWk黇׊6~QQ~T"T. Z5.Yf3A69kƃW6َ|͇4kN&ڮVʬ2lTU=IZP?H"rT :u㲟DJ[_ Żׄϯi_,s'WF:W71mH'?@\{s_rGl'm#?meo' >3c DэJs8V~=M:9 ~" L?JͳG@Vo0lƏX+9d^{0?s7yXyGEoq}yWC Dz"`ݞߗ޴V & ǜh-)}J4g G 21P~cT@槟.u(((((FhFhFh8ç+ VyG~O8@!($CO^pɮW|P!E n"=n+42ca7eA_{xEQ 4ڈkGXSP5"0~?KkRQDf]mg0U3L>˛+?9H72݊eh]I73~?/]%s3Lѭ,..&-xSʥTnN.ǫzQ6~N׾zϱ5ү~>׭T+A\fn.T~WrTЯ}FuMfeܥYTUrZW4utk7|f^8~n*wKK/Q~k(AӀg;V:7d?~YO^vOgҭtn|p~_lmct'&MhWB㗙o{A~]L]ܭ} I \b^6~+(0siU,FU}%QϤw+KV.P岅aG1 Qwx6$!Qw2~{8eni12!2x#|1~_͊WQ 9VMR}G'(`Wx ůnLVFrN8$D,S/wW>~OZ#@<ȪX[#RIpU*sJQoMob~bkMe}`dS0qB f3bmO h+ 7g!vHiXmd ff3 RTh$?C3~3 ̦`o=C iP'`oMNF[Q 4BQ 4BQ 4BQ 4BQ 4B((('q8V^x{'Dx8E%ו;qG_w $ 30+@_@C7E<-K (?`AvE݃&UBIAs{KCD<x'uFht,_o-W|?7Mܗ|#u߿d
7o9Z3QVv+swm_!aV|~"5]@>bKthQvo:m~LE O9ބ|~ˀ #h$,b.E ͟ MoO;~4_?x^;_1G~ /T3V@0H+]x@HIM^ _迷 v+M^aS[`i&`K3J{*cZhw '7I`III ]6 ~{7X Zi1Fg*d̤3aFYy-EdBm#[QnR$kw[ DVXmV͔2ZSHLXwb"Ɣ ,7)e/׊21&:ֺ/Y~]jq~ys7J=O:HK`,;Ⱥ, ;Oc&N@~7X VU\g:ȴo~QK-}+3FI.AoQ#$wor1 :lfVM,4׋w{xeF{xSn2w ,vg;{A~~{*XMۘDTUjrj,sS HE DDcʯǙ׉@,It׊ɯS>@ nV+|%[ڟ\6Wnɍ4~" Q[ܪR>Ykxi6w@u{Y%u`X \r)YokKdc}~z`~oc~s>N 7ϡ%~3+j~{l+t;ߎzx;'K|s2=\".cΑ>-ޣ;~? Dtނ%K {8~^?u{v%0_fOz3P"1nQ/0G~o'zֿڋ\X=7S>Xn8lO.8wsL6p}>ooN$uq܋\xGg@"7@wN 2Hy.@c@1%m{ d=A"K>{->ʷ7ImA{(qڋ@";T"$g߶2a/>ex;pKR IDAT=Mw]>x;V $&~L0?h~!(((((FhFhFh8N.'J-l؀HqAB0}I'L<Ŝ1o,8։mx/z`B'>v6޵Dxyw] ^w"o) Cpx6XD&X 'H`y` q{Dx^"G<1e$>:mr(+xbxKٌ `q 7}t:&C %o`~oL߄8bAz3oY|Hqk+@$^<:MN{ܟGb '(║f S7l!Op{r ؎7N@~+j~eDDMNB p߻|n% Dᕞ'LAow};xv;mv X_j~~Њ߃L$:ȠU W_j܈Cg>hy +@ޑG^djLBa{v1!z] !xE0sױ{/-0̾׳ځ^ǦVq C| /@^Ju`KxI{; اx׏$¯Nq1_X//f/2ϭ ^~V>xww?i$QϤ׳eZ ҵMpK ›Cl6ZOuJ C2&~U {r|\J1j į?]rc3->~8~OťFu9`h4 F@h4 F@h4 F@h4 F@h4 FQ 4BQ 4BQ 4B-N b#㣊Hx/~@h=O1l@i2%fxc 0?N B%%lĻa,fg0/_{BxQstT/#rpcYE̪LoD_`"z=GDa^ބ|% K@~:GY!)x}b I/s7zIA %f8Kٷwo`Bxq5zy@%B gwBa+j }ou: 4`&R/Hw 2K}J~:!=)9 u/,!xܪ3zA[(\ϒ]7yӹj'7_p}z4oQa$,Z"woK ^7Ygg<.0ǜ#uc@N qh}C·3Li`U/hO7`}ϫKxBx{8~Yɏ,C Kut72JGޏNoP?J,iJ߀ aֿ_|_XAfDz:;{OsO\Hc6S>XDhL;EU\<>W{P( &uzAWbo"sq+̺ě)AL1ԟK)N7W5˃c?1,d.͖[~_^A?1çY1(|Q cOa8#oO|2ļ*2o=Șs;Y`fNGhS coqf/C@Q 4BQ 4BQ 4BQ 4BQ 4(((mq9|"N.'KxOI"c"?̒#ޓrh]4|ċ%G K xۯq G' AnnM dwO0m< _#8~ ߱-Z\'=xwAƥWS ߑ[<(.>6sٻ7NX~5f "M⍓ǯ#A#s{OpQ@Oፓ_w_-p߻,v(]kC\>7J@~}+=Ot /m_3`un~ @/@^Zq{d~cBkޏY 3h:-$?t:>b"S HYm DϾY8 !xE0?tzu^d E|~ ̅zV;5;)FW"zfY_iW<@7:~CؽWQ/19jݷ+${ly;Kߧx׏$¯~~E$ ~!ӬiVEϨm,C%8o֏7s2<~.pQϪ%X q}%C҆Kp 1~o^dů^Br5 q(=̾MdpBn ;c/:~c(9_o zVaξͳdTBj< Nfq/:~ݤ%K@gA)l6KnAx/"&! gA)m|g2T/iO}q:o%_'׃_t 9~e@J|XBWD6m+%_t+ !~e@;Є H&-fJeE/%7^ k@,g˶Y| ^^/bw U,#UDOYe@ vHb6 2OYeqhʍ!(((((FhFhFh8*儇zO? 1`=O9l3;M5d $'\xE{pܣW#q_J1'n h"{0xEC ڧV#9lB 57zCO Ha{_~ Oȟ2 =%.?e*;K\ !{F%.@{m~ ;-ƊW痸@>7wa^2YWTC_6řk߁_ M- /eK\ 1ʿ?K\ q|vv˿o/ql+*mvߊ߂NGylmvK08wOM_eRA6pˇ\Pq5'7e G<w._[Bx Ln qrڃDP4*zi0xfGςތ;n[ƻ>UB-?/7S$ڞmS;EOHsMx:.jUr9;nzߓ _ |SϪmzк;$R ҍ alJ9IdwɼHM @Bgrًb6Qx $2uvylj9ES_ ļ|Ez>6`"7&C_>Dx߷F@h4 F@h4 F@h4 F@h4 F@h4BQ 4BQ 4BQ 4B@ FtGx{^xWx{, &p 9Cdx _K& " OwRQh<ۃ 8_R\'n[0`-i*~8y AGr|AIP7 o''4x'x(h4 Fw;l7K!x`~%ެx;,~y) yvD,Y0 g}nY0 6qA, D c=X0HvDZ LɩZWFKA ?O?Eh[kX>bFR2% ?tJoE?ՉKG+^$?nzQvgsuፐ:~R$ \r.hd-w_ۯhh.?.%AֹA䇎_ޑG^d@l~v}6s!Yo Ͼپ8 !xE0?tzu^dȅgC,3^]MkJ7avhiĪCX |׻|XϾ}7] ~Efۃft4y,=W{?ۣP cͅ&g҅cBoϳ`~Cqo$7d/2)VQԳς)>am{{=UŻowDf>=nN`Ǭl}};6=,}_4@Ws2~׫,X~\m{6m6o9.ΪY} ĥw d>o r݈,.i.b \w+4 o*~Q+^ !KxR Y\.f0o2~@/^8KU [_*8lV=K~E oX@B4/M8?]:=._fݷ/nAxF'd^x /_XA S\֫Op=ʹa^8?5/0~WT ~+~ސzIU n;޵Ζ^%o -_A6r/_Hr%^R!Gˬz?-P3o( /vЇdrHgǽ`x,>.!1xww&*⫘| IDATϩٲiG{TuLH,^oo%7MQ f=(fBhK%/|,~xקJc[~!fY^ A_x[@AxS;6,ݶWtx]D-M 7or=(mdñxHsƎx3 D%iRm%#6uC(#O&.T Ymp8 o! o6Dw9md1xKuPl1x3 D%qWNw[@T"@)p0ޒRO'Do^(((((hFhFhFhH]rC=v'ދ*o"AcHz9ၺdx k~hh<`)kť"$z`Ňu:xȉc0q~@$x'xvD(-vC8 t6ޟ]wDZ`O)6o~߄f x=xrY@^=Y!^޹\A{7BrYHi_"ݔb:H![eA.i;{X xWݱ@'AݿP'ƣ@ sӳ@'AK:^P oYX %oD(7\ %oD(kAK:^P o1/\J:^P o9/J:^P o\[6qpPҁJ!t_˯@'A l&p~[sY02elЂkw[h72^b gY,Ͽ^Sn_=v{Dpw@6;@[O%.|oo|[cYŘUU0I8~o ]`>j!lİ9KcsT67Y r!LMS t1hA%>|(7! ,vX ]Cw6O@ے߈^/c v.?V}m؃b-9|NۯRCl9{zM`>j9 ­nUpn͖c rzlܦ$)$^w'Qߚ.:`+lvs\*GJ|܋P/!xjW ?]d t;4;潪d~wSc@/1-B0ߝۣ]=BMnOnLAIݦrw^ۣ(Ч%a^N dX/{?K$.͝|Q Oq:GBM^ @&i;U G= dSg=lSx؋Mk׀ .|P ]D0~S7@&=VdP~cG 3C@Q 4BQ 4BQ 4BQ 4BQ 4(((mq9~"L.'<^g~Ph=O.i%N2|/U<1^887xL^40U7 ﳜ;4+।1>~,AZO%׍:h {$Jǯc`Ip%׌9`{m 6xۯW#A{?odUpCn_ߡl 7%r4,o۫?wm~8bSVͮ߮lϷ7c^5~=H;de?ቖzuZ7W?\zs7Zj.6`>6ϧ[1~/S|nBL{Y=^+Vo[q3>m"frSl[__Wc7[+?w{1+pu*v4͂gzk~aoי{](z6~QYok=/c%:=Bj񻿒-d̺ѕxp%+ߋV9)vik/MgzgU{5܋u7m<#esq|uǭ@<;+ůnޏ w7e u)w2~/vOthWC^αE f^&~mσ#?9v:_S8 D[߿>NxU~ةc^!~sSSSL={h@I|41~_χ6w+&U~&o2%ʏ[x?'LM>d@h4 F@h4 F@h4 F@h4 F@h4 FQ 4BQ 4BQ 4B-O w י_ \ߟdJ)˹8rrK=_w$f^&_O'x?@6ȕ<ܗ_}Kw .;d ׻Ǯ\?vᅲzƏdQ!}}m%4~ $NMUwKpiA i@~7fS .;8! -c .;ȠAh(Vy˯3w_Kr5vGK}ɯ;m .;﷌+W iW\;WhLR^KBZJaagٹ>RKzY0ڵqhq_FU> G E~3ߍ i:^գS}hCde9O(DEĞE(αx :AƲy~0;ARD/^V{ ڍ>uT |)4"gv `$PAv3ֆǬI.LA A B4A A B4A A A B4A A r0/u}>]|JWݵ I4>XR䛨|a&M%ͧ0ꪠ+ ;%m`P|*m>u`ZP|KjC fSW+V8KSԂ?-pk@{x| ɧ|xa~#!U^^%/ \~o_dBD/>AnS.G#Y r}DM"ȗ ;$I"ȗ +{XTI"ȗ { #tGt4cpk{Gt^ bq&U"ȗ V{*p-|Koa-{ #d)|Kof}!8H>7azQF1S"ȗ x=B |H$/,Q"ȗ_=VA $|)!4 +|KFYo_BEC4 ,?k^/,}`}iBarElŘ@ { 1sC٘?|9fOlRaWVh&H7LC=%-w}0>+  &HˇlLC}>O7+3F>]'Hbu1&ć{{/q9_ by++f>a%9rrOY+%{\k>&1s[e|eY|aU_Y`g/($`Ǔe/Otʦ4 ؅?7}E&G76;ޣspprpmBnEp7v碯ȱss{ ?~ipl$d>瞹߰$lz9>|S6>ϧ_Oͯ36k+'q|kMBߺC ˷(- lL{A\/axXqX r[^ιrRk>]3 ,O{ȱ+d@qʟ_O/j2,&x~|Ds"Xw*8))/ lO/ȅ;Gwsu/zd8^Ź#^m?Oη_:O/S=iSǫÛ_ov?[9}L,œaϝ?s)Zp\>%?eIS[Eϝ?s{8|?~ۓCTsO,\7ϝ3/SVǡoAMUFv7?/ȟW` ll9~xwy 6>>''v r glEKL}8>`j)bz T=wM\OSH> A4AH."݌ۓ//9_m-N0 ˋ/˟O)76JIh>$/rhAB˟k)w&Jih>$/Ͼ.n|)hO2$`4 "˾0|RA|Y?/pM0i;E͟$%ex|4/OT eDW//B)q D "iVQTX%2h>Dė"#*4&G@$o|Ӭ_ $v\~_ ̰|aXar<^Ri JR/H P} ـTOk,/!zB  4`vQ{ŋdȗs>.L|r} O0OnnKg%[9'W l4!; wU~}Q#'Wla$\ad9/_ =3%%`nWlk 0d7exA7H_!1b%ey-Sv_[AN>y4 E/p֪S6=` /؅oQSȟ_l{=F\x17zҺ* N~u]N%E_)C9ϻaNwS'^P0cۛϹGδ ;f¯ '$=9-3͹=/_"4Vy-.D/be\pwʰ|I洱?߮X|k%AA/CJF'aDi0Z}sgsx/_"d{|)rhRE4Bo\q|/ l}=Kxa n!_{eq8x[/a>w8y  :t2/2|6^mbkw!p~:La+)T}ŹnA|AEnO8|{x|9o$D?)"_&ۭ }?gu+ B,6ZqE\&۱}gYd$۳z 4"eO|woNAP2{\lÿ4ȷ h7 hA! hA! h hA! hA`CuEwv}@w)6$gI$>{KtgG|J{+xſ*p+/paWOa&_fңP>P}t>2c IDAT7>C,XN3J05q}0>O!/p#!E_c{.|{A,͗0}#w v@U>}ߛ b/\fED|ymu!߷ &P=}.Do)_&>}ߛ /} _]|N9E4ȫE>}9eY4-—{O}u8YZ$O#'IDgA sz.No\y H(_@BobQ2"|,<}.c#~`_nO`H]|ADd/$0,}.(7;KHRl-wWxrcyW}%/,}h}%8|a7-"!}|aCO/q=s5_,3+|ACO'חA.-s>+Q__l֗@7I%noX 8ܘL>]O<=6 K }9 am,٨QaogI=6?#D_V-p\E;3D]:e=nK<+[,;ߔ?/}ʟ?d.Hz%|d0'WgOm|e o?W}=!|i^ZV?EX.DN%G=-޾=/n|C77EO}]甿7nN =VZm=ߨXdC|?my7MWgߛA~^hfodm֖aO͖BߺC˷h=|%p>pB⤤o wׇs}w}"t,ϟY_c'%ruKqRRw(̼Ol՚Wѷȡ-\zj 8\kmsVw%Yӷ>~ ·o>~)3lz[Ne{^,'}2}-ԱK}usK<{A |~qwV ?Wdyn~PG,hO9n1?=;Aw?gCd~n>.9zx6]g_6Y  A|;mG_$b{ɏ2Hfxe_#N wj1H|6Ș²l9 s~qxmk1swdxSSߑ |  hA! hA!  hA! hAS r{'q%w#i>HjC\6z5R=)9x|=B-0d9LO8Ab<~`mpk|| ɧ|x~#!E&G}}&qR K>{AR ޓ@ꣾ7G;H}F?G}o4H}I?M -0%\䟧oa= L}}mG]4 _&ܻ_/E} "O/9}?}?_ !(0%sr`}aw=>#ߑ_2"0 W0} /A湜g?|dOalY^ )v 8'Xa2 \2]`Mp|.g8($W&IY:A'2oYg!_2a|O00>͆F w Yn؋˩m s0|^{[ ?#DKC2,l@}l_մo|15v\_ bd++f>96?E_@=ewenmG~.rK'__&[_YU0 Wn sBϣO`>AnN%N9(oO>eS6+ypA\||/!<|km}+({~zXnXM^^k w Ỳ˕+v?䱑q5 (Q8ne6#VܩOHÒ7@r|D'>~^ӄǫqlo|ʰ|`[7sHA|W3Ozp}Maűs}y x1OH ʟOj9dE_U닮j8_0"_,K "_Y'{_`S>=9>źw\ƣi߄|g˟'[/c2 }oO!8^-Rs\^`]bZ_A.)2! b_|K{@,)8|36EaBeq}i>8ya\fi}jFl:O8 "3fa}kGp> j)~ϟ'ߎK|?+?q 2d6x=+-OT7yA B4A A B4A AA B4A A B4A|And=~B:> ߸rX>;'S8E dH廢^OUJO),9BSp>TASWl)Q/4)Kp^S`>X}!,5q 'aA| ɧ|xA4A.w~|뻤/|@'s ۶x\A \؀4vܦ[ߘ@>w{i{W|AN P=4ڃ M'lh|N;0}{ z߃ H M6|N; }r{ b67x!^˴>}A.S$.XKEi++ <"\|2}x@%2B}Їv&, 2^ 2GoWA_QЇtu?sF4 i[TLJy үVL 'g__JpJE΂v EL)<˃)ޓGmxYP__L}]s^_< 2Im&>"=}'cdžI܍T_W).|?+A`nG+4uƦXdC|`6=6M|W_) p|αg  w]a>^s {}W}j6JL|-6ZxkA.`4#ùD#1PmnCJ }}w}K=kWR_[6 r)-/火qRR w(̼OlWѷ\_)ߢJkʟA.[c}/VSV!ku]O㭌{=bo>.|@'}tnxf0@v;C{l]˟ >7r~_Akii}{vw4DKi>@^A cxϮg8]ϑlt6qwDD"|5sNчg1>A'? Q n+2K wj1Hm1es>p|) {;An@wdD'Iڗ)  hA! hA!  hA! h8AP?b8]!oGObX>l>4xO}MeA]QIJO)`mBSp>X@)s@>6LuK >Txp|@@~{YqC,Xj]xO\Q| ɧ|x~#!EF>!h!h!h!h|4H> $h!h!h!gL;0}}OT*>Akb+uSAz "3]X^i2b5v>J'_]_?E^ G rKjZv";!|+"F>Afl N|S6ї2Ɠev} 瑿'yp\|7DV_mEm}+;7=K̆a5Nrn{{aN)̀yos'GM <с8oe6雭}K?겡or`|W'>s}5b Vq^,6 }fc}K)79$|n+ _}qmcaA>K?78M}òkfy$|PO‡?9k{{>y+|~|Œ %}/'r?)^peZb]/S{Ei<-w)~ȟK}ʣ]s} QAƫCϑ/va=A >%e؄{ɟ+.YSHGS!+B9da}j>x/}FeY}kFl:O($|?r/˟nyl $;|?O " 2l){x;zJ{3^ br}oOTM./LA A B4A A B4A A A B4A A r{&u'q@+O y`FQ>}kz\SW z_xΧ|=BdV d ?(1[!oeMEh^q j| >=8AA  B>vzv-B/hNEhYq  B >=(7)^'nAd-VQTo X%o ַGyXȆR6m8M}= /^`,/,k>}=5ȸG;oV&_d-e [0s>r)Ix3c}EZ« үYg"WrX_~ = 끎Tr~׷G yA4̰7TX=L>ꁎob~ oU =3E決),Xe{h03Ĩ"E~ oU6eYEAﰤ{Kt=i_BU87 NT_5x1`H_1uW-=Fߣ9zA8e/-Kx}KzĻ~ 7 iauN6~e|}@+o{{ %=1O/"f [x#&%[02nwJ@_܂AB` }U}xoU)"m\| |b}-'iyPT} zEd s%oOt}O㭌 |`[x#ARGav2ӹ}=>8^];X_=hywl2ۣ~C݀Dz~qgZ$ʊ5w(vnoAvgEBbv8G~w}AD}|\gu>xĹ4H=cu;Gc}= S$Ehz b9҇> ^A )}Ovnﮯ_=hNJm[5S,!h7 hA! hA! h hA! hA`ߡRW q'S*m>H4|KA 廢^wU)A^)$(z6(0#JOa&bS@ np|WH'P?Ăf)l{> 5 B)<6^ABtn6o|͸zG] 癿 %xqyʳ&6^`n b7Nŭğ7AwL%>yuğ8A7K&xӗS Y= xAt%\@oQ/0=`5, ~d[޺ğA|q,gOxGO{:AK$0ހiDb'ğ?AP ~w0AX KD(z|c "7[&0^A b&H=Ar_~bW@xQU_Xi|cOEXa2 /v,_B 2y, ~?0%+E׀5{*+<<%0+q+`[>w EP6i+翗~&03D/r>%j\J4͵~!&+`eye~%WrX~@+4c>8Ɋ%?nJI/w'"zx}p-ZtpS˦1 9% <S"7\??Y1S.~XxҔǷ}C ;%} c-_~ZIK4nt1_;駗.|+rYWaN^s_< IDAT~N0:z߰$oV[QA_/QYr,ѰV~]ܐpPfޚ=V9<}_~uŕ 1o>O&]{u ^9;=~ǵo%n|-k3^WN~aPcޔ0eot -}[Anc.=%]}woG}Ce> S&6/pYicv߾KUwv6pz"OWs LH[k%#! hA! hA!  hA! h8AnPޤ¼B[yTX>zA?TէL VgX^|h}ݎd9B{X%^.2`$O>{Cdo~5|q LfK 'yA]w7T4[OC7H dY:D> !-B|A48C Yg^|A0o> )Wp Mh>0O:"q2H5{3`!FK  U.8[oӷid{n8A}!>.Hl} @6YxOބ|cJ|&mUa|@Iq8Z$>NpH{Ϡ%Z{ۚpEb6HQnSO m@{U.hvݟO  >^ 8fF(,ʐ;Aʗn3%I4`cR2H[4$IP1;{# )4"Yb~g2H>Rh=pKPt5~y.b "5$"lo'iZ. }-V~E.|.Qr) {<[8cF9\$+`e2Hz4 LGYg~zMoiHP9ṛgm/-"TF4o !PySdƇdU SXb(7hbI[zYUFS4A@`XY$EӣHn0&h}-}:ĺ,1o-kA1ek6Ȼj&0`;,2:"[_" jEz9So?O}Q >ǯ0[ڣkROӮlF(w:lbxr5`GB<-r#Hv]n<־:6z)2Lgp0Śo鏴-x;"!ڕ9viʰd1+b-&N-8˞[Z`v㭍/Du|k%)2X#dQBmՂ{O^{ZD՘cx}; ,-rՙC>A'aV4k;.ZkZssWiGv1 )r{Cp)o yg {6.j~LA A B4A A B4A A A B4A A 2s8Qa^/y+IEW 2溉ȧz6R=ǫ0\WW  3L2^Ol`U'±`}+X?PGC=dA̧O!A4A.ҭH7l_)a|>MJmulB'|^(:gb|~\(]km|3HU9Q l?9LiʑE`J hG>_T[-WdG>_T3D4pH|<([UoG> l7G>t*/JvH Uȷŧ1HIi83D#^ RR R (_4M||KTʵVD2N77HU(!g,l#_ 2{j-4ƀBm_ׇΟol}^ 4]C4  +X:}{[߇A:?4nCZce!!ՇΟ, "he,Ϙ@A^1u ?Tߞw4H#!zרfހ0> `& I Y/0}V$aL}{핵SԮ!íZsE|D:c]AW Nt]X7a$)eV}0{`u|ml}ybKvp|{ 5]`]|J|C,Fw,"3ȼڀXXC~ W]ؕϵ ?7Zj={/*XnZBօk竭)l׽X`>|8>|"S8]Hiޭmoy= [dqI2d=< 2 §+o__Z_~kO8%~lW+l>&NcC gf  .uȟ+ߧϭ_< rZ{8uno4|?Cw&cAjg8Q |n%+͟GϹ_\ bɠkA\-q7 ]1 ,uχ/,0AT (F?K7SF1W Uĕ=\y>OAkX <C;tԗϫ_>Aj7 hA! hA! h hA! hA`ߡzf0ӗ<^"ī]rs S_wEU@+'Edـ8^f*YyA_s,z⻂T|ip \<" .7>v(0>*^h j@[P"0u>$:ZP&0u>$>[P*0u>$i  L k  : "k  : "ko4k L5id݂GHD·J&pނSA|FLa@4[p|4IziL2ȳQGL3ȣqGVt[@- 8u>D"# C bNQI:f/&|mnеZ`  `0} րK ~'ȟzi~' O_(_>ևl!^`ܷX2!3'gn4!+^\} SKnBeyI⒮k/-p1:@|y4 %/_V7 %k5]`.|>%u!-lv{ .FK,0`W>W &}5Lc8&:{֐۵}\,2u~Ղ_K}Q!~E_3 Ê.*u%|6!j06 S-"/zK7_O`W%uOޓ,2 _>4KF$ ˖S8Og)Nͷ_xì\}  >bz~м LPv|VbZ_AcSw|-b]F̷AK28^Njdi~vn)NחYu# 25Xe|{DZ_dT <-b]FķAAVX? lWHv44Ȫg*ۡGdHeׯaj=ԗY߮i>)x5|_߯3A4A A B4A A B4A4A A B4A Aħd|#q¼>OS*m*AF\x/UqA]QJ%WkPK+|'\<>BFR,} Hy3}W>pPԧ`>0| χM h]۱=?DЇึR;0rih{ p}÷]ͧւ7\j]AkC[05}m|S mj4 ׄ~jEOC[0}{9ȗ6kh] cFϧKO6k dF5~ _|ʿ-߀uD هϷKOIVe JnhA9_ͧd[y J/ĺ3n|r/m>%fx` 1 O7DL|;_T?Z0&A]9DZ/u>r4 -ܩHj _|*XvhAXCoc…|i>Hk, +Sᄆw6+%_iWkN U/h}) Ң WU/n.!}? _ 2nCZc ׇ V:Jk0$kXFg'(I;^1Y K p;Ġϳ$3o0> җCO I|Jl?>_=`6K CcNŦSd~Uk. \[c%nz6k|uf>,Ϫf?7-G޲=˫풬OW]υϧ C,{5ȼ&}bXW]ϕ"a|";mjѡiVXdC$:{jku/χ"BjEv7:^}M.TTc6i9$|[W{ZdNjt^ 5 >D+~z[k:+>E[KkB0Gyn9$q2˃]ha?BgH`}|/Kwetcc"}l=<-K>:mUeAD{!NjM{ԱK}k98=n.Sh]B bȡ>A`c bdx h=o]Q RCdB۸ 0Y 7va(e|53@jK=a r_ AWwXAT] 1+;AZE;\]im!b,o[8^tl  hA! hA!  hA! hAS r'ky;ɇy+> HbJ/B `G3zE!T|wEN?ǫ [ ? 4lUSx1Y+^҇$, /glPԧlSrO!ˇ A !H5|>06@4:G}qC' mC' nnsC' tn|RyćE @>m DH}a_-h>t/i}ͻ OgCַk[DBgCRշͶU ]`KS`tM,͇.0 " D L}$戯f:@4ԗ>7vF*͇.0' _[[ SIShEЧѧo(_>wPHSN2t#b0H>>sC7$cPV37 Oh GI8}a`|2} K >)|Q|m5 Oϥ|0kv4`-kw' fBg5/Uԍ_ 5!| ׹5 WGC4m)pN]jۺV>u C,oq/k;o\jO}Ӧ# |^[W?7Zj} Kq+7N#/{:-XDo ~I %ַvFVW[)-/c:_}h"R}ss7YKlC5Nʧ'ZV C4AipQ]-"o1NZhgIA|[d|^$fސ7EKl[V7a+I ?]- J abN!p-K3L%qbZd]b{fS ' =A%u;ABR "! 2/Dw /C"2 "A ,qQE|42AķA=A%X uS6 ߎQ~I c% 'Z?䞿tΟ'ߞJ{h o}fg|G6- ?5 >4A A B4A A B4A A A B4A A r{j| ؓ:Z<}]H/B `sO}kz\WOi1HTKR$4^Z+6`>ff6 8>A 1wO@StO` `<}_@xE4A\|wkSn*}Ah؃Ac-᫪/6=4!A ~|A ۗOgd_4i\%^>_{ d뻹p[>{ dOpU]>=h̑rUAs xC_O6= RI̱{G'  RopBA VQA_=h]N Xhd#_AJC{C7_& MF ĩNk`!/O7A&"IKBOi zR_>e2HEPب?[g,0<^A}۶2YNY "&GWT=|7x=k_T_gHo0 ~I`؎35A0O}m􋵾~ԶAd x&k|!+W&IDATk֮]ԣ57/}MEB^5'!,ꁎש[t}c3wQXX$,vFRCok9Ħoy .|>٪Nz-HH*XZ;^Pӷ٠O^W{]_W>WlwI-E\k{"[AyHnyn9$q2˃]hdn= m>|.ۥC-Z.Ї&˖3޿mq@'}u ۪2@䵧C՚xG뗰 /)./!1QT%Q%4K 7'6HEkW}i_A^Rh1R:C׫Q1EZ_%[*)g> / /)U>ۧCO "/ ­k`w~/ ʧ67ԇ/t/=\ݘA! hA! hAA! hA!"'ux|JbJ/B `s2⹾dH廢^wUJBkS%a#Q] } ̟bOl`"аKﶶ(0,O}W>pPԧ`/]Ǻ-A !HG# # B> # B> # B> # ‚aG0# B> # B> # B> # B׾N`zSISEq6`ӄIm}mUAJF }%l+}Io] 䋡On>S}5:cH (܀26 \H}"ݓ!$P.q4VE'N_go7;m5T^wQ|m7֮ơe3G. Xa3_}'!}&Lbl[KXA"soQMyK_u7|Rn>_-w[W睿εNzmlm\K%qյį՞ϕ+nh>jby4t-ϣ.%ֵ>(_o1obyDyO_еĽ*Z_mշZN?~It+:meȟSAj=f+j06I'闤O4K )=4N|pK48R %3< y*o\ /n,|o6VN[ScxCc/i)d}?y}J HY(\ dYb{;5_!Biz&"xcykGqDIvq,FE<. E|?~I6>.S_`G7,S ϫ_O5cV <Xq_wyK?My*Q |ϟwĮS@4A A B4A A B4A4A A B4A q0~@za^ȧ?|W,RiEW hf4yBt4"IդK%WA{?P'> 4ć̟/NjL,]r$H5KZ.8}>OE_|)_DSH>{&A4A.c~A W BJU4g× JvDN0='g'g'g'g'g'g'wG! Ӄ|ڃ|km&!w=A?4ėK;]R*lxC a8AR6Htk*izh끎9AB嵾-VH 7HEplq7Wi 4x-]} -AK mաQ Ҡ5o~y.n} ҼY#}a`= ˁTj~1wv%m N}i^_Ge7HP߿=\1o-k .}h ՖAt 0ufP}uMjuzX^ՍBlvTX$L_̞#W_^k9ĦOS*nlw}'h\iE ׮Wc e0} {]GMZpθ疣XD]nxku-*j>E6[jj5{"R}&y{[otོZk}kC/VWbmH;.ZkmVo-rȦeUqŵyu[k߱ЩtD_5o;m֍8m<8_~qqJǞ1 ҾX[>걼tCES_ SxI\siaX[{:I_~b7 AğKXGH=>{-kN .ZiE6!GȡDW}QNrU/ ?Dog}uڨ ϡD=3Hޓj}DMiwC,-Q=0ATjRi]TrHo e, l4Ⱥc:58^~A B4A A B4A AA B4A A B4A|AndOćy+> w)6_x KDMT ɧz4R=ǫ0\@iqHTeW 2+2^Ol`c" x+OAX}>y rq `<}_p{c]S h] |wM? y~FI|p|J(B+l8@p|o$0| x&=D^WmVϛ xak&HJ)wJ&սa|ǚ xA%mzLsI\7A`B7WLw{LSI9A@L{M}Iw@ ߪ?A8At% ܖw 70/ k Z@7y|ǟ OS LuI} 7 z|2A%1 t=wv 8z|?D/߽vϚ  gLJNNgIte|7AgGN=QWryzϜ x'H=d,Z`W>`W@xQU_X'H+̗/xW? + v'HK` 4 CM#/q[UrdR_w{;P_`iVK?:W$KJ<2GȟxP ] N k  d_GYR7HE '' Bpp  B 4 B 4 Bpp '' rG!c?Bگ>ϟ  4rUm?=4 X "` 8AJ H,27AڪS4H7t%3E@M=hteh?A|,f|A1omJnW큘 =EX C䵥'HYdi _g3_6DiZZ,Vnvgn|oQ 2wk+sIoL468D-4omHFӼ#_GMQ~6X՘#dY,"A!/iO2!y qO,! fO;D.o=!DQ8]w|ܝ 3.Aڪ2nh"ACywlN`C f+>A۬C㢟 0#5E5 ۬ 5. // -1 * 0 0C "Foundations. Non-halftile ones by Marcin Grzegorczyk" -1 * 6 07 83 01 \7! 00 5B -1 * 3 05 06 5A -1 sprites/foundations.png 8bpp 82 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 8 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 8 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 8 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 72 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 72 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 72 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 72 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 72 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 72 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 72 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 72 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 72 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 72 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 136 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 136 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 136 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 136 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 200 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 200 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 200 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 200 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 200 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 200 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 200 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 200 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 200 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 200 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 264 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 264 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 264 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 264 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 264 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 264 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 264 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 264 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 264 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 264 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 328 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 328 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 328 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 328 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 328 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 328 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 328 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 328 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 328 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 328 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 392 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 392 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 392 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 392 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 392 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 392 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 392 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 392 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 392 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 392 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 456 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 456 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 456 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 456 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 456 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 456 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 482 456 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 562 456 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 642 456 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 722 456 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 2 520 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 82 520 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 162 520 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 242 520 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 322 520 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 402 520 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 482 520 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 562 520 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 642 520 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 722 520 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 2 584 64 33 -31 -9 normal -1 * 6 07 83 01 \7! 01 5B -1 * 3 05 06 5A -1 sprites/foundations.png 8bpp 114 584 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 194 584 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 274 584 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 354 584 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 434 584 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 514 584 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 594 584 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 674 584 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 648 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 648 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 648 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 648 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 648 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 648 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 648 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 648 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 648 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 648 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 712 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 712 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 712 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 712 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 712 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 712 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 712 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 712 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 712 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 712 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 776 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 776 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 776 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 776 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 776 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 776 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 776 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 776 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 776 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 776 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 840 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 840 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 840 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 840 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 840 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 840 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 840 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 840 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 840 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 840 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 904 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 904 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 904 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 904 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 968 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 968 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 968 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 968 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 968 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 968 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 968 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 968 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 968 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 968 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1032 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1032 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1032 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1032 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1032 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1032 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1032 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 562 1032 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 642 1032 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 722 1032 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1096 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 82 1096 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 162 1096 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 242 1096 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1096 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 402 1096 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 482 1096 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 562 1096 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1096 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 722 1096 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 2 1160 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 82 1160 64 33 -31 -9 normal -1 * 6 07 83 01 \7! 02 5B -1 * 3 05 06 5A -1 sprites/foundations.png 8bpp 194 1160 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 274 1160 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 354 1160 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 434 1160 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 514 1160 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 594 1160 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 674 1160 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1224 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1224 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1224 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1224 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1224 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1224 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1224 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1224 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1224 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1224 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1288 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1288 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1288 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1288 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1288 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1288 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1288 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1288 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1288 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1288 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1352 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1352 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1352 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1352 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1352 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1352 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1352 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1352 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1352 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1352 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1416 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1416 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1416 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1416 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1416 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1416 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1416 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1416 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1416 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1416 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1480 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1480 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1480 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1480 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1544 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1544 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1544 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1544 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1544 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1544 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1544 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1544 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1544 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1544 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1608 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1608 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1608 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1608 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1608 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1608 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1608 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1608 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 642 1608 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 722 1608 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 2 1672 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1672 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 162 1672 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 242 1672 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 322 1672 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1672 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 482 1672 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 562 1672 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 642 1672 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1672 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 2 1736 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 82 1736 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 162 1736 64 33 -31 -9 normal -1 * 6 07 83 01 \7! 03 5B -1 * 3 05 06 5A -1 sprites/foundations.png 8bpp 274 1736 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 354 1736 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 434 1736 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 514 1736 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 594 1736 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 674 1736 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1800 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1800 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1800 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1800 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1800 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1800 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1800 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1800 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1800 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1800 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1864 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1864 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1864 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1864 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1864 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1864 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1864 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1864 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1864 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1864 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1928 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1928 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1928 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1928 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 1992 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 1992 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 1992 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 1992 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 1992 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 402 1992 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 1992 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 1992 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 1992 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 1992 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 2056 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 82 2056 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 2056 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 242 2056 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 2056 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 2056 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 2056 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 2056 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 642 2056 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 722 2056 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 2 2120 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 2120 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 162 2120 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 2120 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 322 2120 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 2120 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 482 2120 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 562 2120 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 2120 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 722 2120 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 2 2184 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 82 2184 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 162 2184 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 242 2184 64 32 -31 -9 normal -1 sprites/foundations.png 8bpp 322 2184 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 402 2184 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 482 2184 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 562 2184 64 40 -31 -9 normal -1 sprites/foundations.png 8bpp 642 2184 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 722 2184 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 2 2248 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 82 2248 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 162 2248 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 242 2248 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 322 2248 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 402 2248 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 482 2248 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 562 2248 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 642 2248 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 722 2248 64 33 -31 -9 normal -1 sprites/foundations.png 8bpp 2 2312 64 40 -15 -17 normal -1 sprites/foundations.png 8bpp 82 2312 64 33 -31 -25 normal -1 sprites/foundations.png 8bpp 162 2312 64 40 -47 -17 normal -1 sprites/foundations.png 8bpp 242 2312 64 33 -31 -9 normal openttd-1.3.3/media/extra_grf/fix_graphics.png0000644000000000000000000023060212246102547020113 0ustar rootrootPNG  IHDR 4oޗsRGBPLTE 000@@@PPPdddttt4Pl@hB?/Ћ9B1o8z?t EDXGD\%!lGT b}T~ӌf3 џRg*gBZ ,D A EOE Hi-D6y TJ iR:!mC$5KeR#@xc"l?ZxBLӉ#|pKK/} k[X6IgRhBy& NpԬ^0z?RT)wPYRb,e94OY{#_-J]*Q\~iWpz֪!틕Z[%_h)Wjl YW5F~FZqVGxgz2pp_h}u"I?hPꅈpU S ߪ饇UHiWj u8:~C˪$ @oݾ~d3z}Q1%IeP5WNO_l_y }? NMO^È8 |0Q=a)hiA5l4݈!I:qj־uh !  Q4_bY-OR? ꁳH~WSpe7oBq8dgrS g` V>GEC->jg{uw9 z,V,^Ai3KYkFj.߯o>mɭVlrbFgF}Mz5@0EMbGWDY>ę0_y$,WoND&R^āTݟ?=}aZh!OO~+ ɏn?+fk#B~Ij!fq=b֋!d#L~ˊy1~T޹rg 0}]nxz}[^7LChA| ꞽO`n$|cXՇקADCR< Z-/}`oŢ;{k>RF/KJCkx#|"KVblb7)Ak'wO8cVnuއ it+y>0 YUTxxSzy@Dㆢ4oovߐ,P46 ]! 8 7 ~.B|8}/Xzgﺬìp W5B~2Ǻ> J!"> |8>Q}=pe*:JqE [ 6:GL{/<>\Ŋ-ICM{.x*Tϓ~`' ;}hH\w]]4u^FlD$A~!%X7!@~F'UIu[~I. JC{~UQ f;\a[v1 cB'j=AFՏAdɞrX\zfF Q"F!D~!"pr/rx}cnqhlAĒ=bQW4(`H,4'#j"ADVO寱[ X䯱E} {x߲b`=A ].&ؓ=^b SUz0qY| x94Cњ8٬^z.^--:1RfcW>=&s+-VŪ3!׼1z"! $b`oD)(xDpf+(ZXW5J~Bq}GQ /Bk`$b*cHJ֣UTLgJWn6/^y-ȫW/WƱq6~Vx⮿:}oS@t\ >Apx(К絢X.*JADWep٨r'xܨ)oVW*gzeCAuCPJ/( .p~E)qZV K>Ă"DdlO뙻kKAѽ*O8*X隬Svgx]X=ApWo<R_*7pmvoB,x֎T}gG孂3Ey#<߉j%} bXxxW{TwRT@%UM-RH&?ZzR#B~ˆ "Z]ł,C_?6z}45 /Vop8u+8j^@! ih5HEQP\?!>[%׎ EoAqlz -g;1̷5Z1_!QH@1dZ$-q^\/p.,8lX%[XäS?_E_F"c#vry! 7޼92 Vo4;Cm=iY4sQHU4V"&D^$@p^Y.^`/%aqRZtUqédG -1O=/}Ea zg|{\5X$= <0qQzzz+|fŌ4qax\XO t,V>U鄁K,û삲HYR,e)R)KYJ,?͟,Dq?snE_ I<󛤥!IP>vGAw0BXOo~7XB?F]_t!C~3h?=!·!D^!!%S+_!e~FȖ">D-:,4hD/ĥGHyO?/nh˟,kEK)Sa\h?q1;r`7@v gL>gᦗ6D:Do#z6B[Plf` rI8Cu d<@H@6ʟ e:"_|֧w^\8 ,DjX,DH|B@>`nAFh܂'ɿl$`6ӓcX1>+C+ @n`>@6? w_+vZ .R˂ 9R\A0b>$!7׿f| 7f|& >)SD@NץC9'œ/Db}0 - ,9QO=vYWD`z)^#⼿~Y|Ȣsx>1 n[:'dv;J~*Cy C 7á\A|ɿ ,~"IL;W<ދ'ne͂ߟtKG&?i@k+ǎҫ:{=toAzy+H_,m>yA:q| T#'C,p?J~h腈˂@hnAh[>f_-0L~*! zDl\Axq߻ Q`ݾ񢸓d[WEs].IJ'^rl]#.UpTr~~F䃸uٴnj?#ۅA:>Ϯ Q!@q QdG9SA[[uA dTޮ< F#r7gT> aQƾ P1铟cB39$7cg" \aˆ#cZ?(/ODN,#w 8ai9N\@6B1ʬHp;тfHڸfgA-1_ϔiI|*gP ]ŽJAiKV <4*=T@@{F#&RRO$!DV'>=#|TQMXźE _1> ɏm3D~P/Dbz.]|(2.??/N LP[_~j#K'',4 y";3? Xi{^mHًA;L4;d:A+ӗσ z`k)ZFl& ÛKO>(ڿ9b?7#pAb$?g^ _ߺSpoFL?E~F! >h,' ҟܔcQs`n| hA<'x!qe-/`-.C@,-'Pd'4߁w rJ?ռJUo"G&ofeH1o `~}1x0#'qz=9F!- ,"/(1{rL8%(QEr[cǨ'y|@ p_C 0Y\KR5z>~ϟ#20L ¸ | 0ׁC}I1Pì&jB ?/ނt{Nmv"(_b̊BAdR6A??F+21Z^̇K'NC_,Њci9W`'nO@z>ؗ#24w0̐| k0j%2kn!y;b1z/oi=ٓ"KA:e!Sh*"1%1$0H:+ 21XZ",/ `+4 oy 6Mi=MÊNvPF|$<͋Ju7.-oeʢsZ>vi:_."Ldn p,*zy|(n۾9t+2!Q?]@|69#"l3a !:ލ:R÷IAJ~p‹xR|.+(sRy_d謝f*)Z>\ $D! 8fBKHXe11_/^ z /%~ z@bd0jH`F$ A1aA:nwrʈqVk7_b /5 |6gEe/U.-?G_~/E Av={ܥ-?*HYruJ HYR,e)R)KYJ,?X~"/KoOS?1 /r&J}o0ES?/ؓ=>g4~Zϻ_RABNB-//,SI qZ,~]qg=wj:5OeA?BL{BWepDi&IdArȔc0G~s$fxJQr`6M^R*VYR,eI=)G<~ ) U*o@*yIdˢ(4 ?I}?"_G:~.LS3 #$9"R@Z-Ѹp7\;NLgN !2 ?A#@G 4g!]%/@ZFCU!rqnv$`>֍| pxdS 9ב 04  B"<@DQ}%@@@nZ4} dtr yUHq  ?kACud'CmRv Dm5UM8miaLJVpxH5In6u@<7`}$aN>[BV2aj_P c ԓ(P !FBBQ7͆idI(`B͊Qƞ CJXjj5@Zyo:+o `Z >F|_~kYh#ud' |tPQ 5N-Ute!d?@ V% CfF&$J 1\>_.t݀_ 6Gv/ҕ1oS[_~*l?}Ǜ$(?Z?'ĽB|P(Mj`D"] D3J+a>".(zSIJ W xD ^x~FݓN1 ǰX| SoyY@~$'? !A"^ZCf]MS.|Δ":Nx ⯏9 &ÁQ@B@:RDLP\5۷oo6!D /_\:1S>(?qmAX>ԩ( _zz v<'"?D@ 'GQ}N!V(4R.CIܬ.C~ (- H!*$P$YCex8+ZgnA^:.^@+(E&)FI1N-^< fv^Z]D,QPWzh&WRhZ[KöoћY]] qP"DtDѴ-l驂t1yQaUq5O} ,WN> ;(H)$^ >V+LfsC[?!Wpk,!):Ez"}BI.7 f?س@&,.ZUU+Yj+`܄o@rL ro0G` W> +‹Wc {1F_ ?o'(߇+I!zWx5 B:g^fE? $:-`Dbn^ NãF,yboJ .,d4aq69uf| bi3L,W*rO31?Cdp(̽`LP4ﵮ@袣eZn֯h0!Fw;oꖙ#HN`; Z^!(K] &g .`p5B+:ի W n"Ď ̑!ax^q "+)RHdAA IDAT{s%+5EYm\5|Žzub &3 nu;]'Q>nV" wU Sc` =hWfE͖X+DhEG;(fuFBD{jo!]FS)reB76 Sy?j&c?DQPpz%@2@ъ2Fz}B.[/ԺW%tIM 8\'|4D6(4)Կ5<^,A8?ZuW?C-ROea9HkjuZQVbdpC],ČUnm݁T*'aC!KG\C(RO ^` lTjzBj,e8Zxu~!YU|蔥, D bIN!)'"V*HY>m0NzCnHYJг [jӔ) hEʲ )KY. \.(KYJ,%@R e)K HYR,e)R)KY>E^}|Xz(`/{b 套C U@g3":7,UQpoڱ-xFPNO B&x RH "U3`z-b-P  'ԏ+~¿cBЂ'ȋAR)KY{n/޽]jգW(@hL#s>|2^wU&-vv@N&}?r vvLv>1^vw4mKR4f{]=`Myo_$=P{y)ߘξ5wl|Ƀ,}J/+@p6wS5UOiױ`V7X֎= `f?ߞ<|t(D G)x W&a_vz㵹ls#-\S-?ڣ흝G77 n ^Mxp΃8 I ]fսv{`]</Y棟bE\ȲNl]'%Գ뱅p6:xX㊳қ#r- AC}vJYݿ?y ^壗 ;xvUۚj tKc[6^r-c>hh<|p8zLV&:he ɽ{Qvz^,/^Z hG{Xl<Ҁ-`+'@::kPP'%V$Z =ǹWzh=,VFMgK' h$YSp9joA84EJQ6ŏW.3u-mMC:Q%E^tXc3!=:zxJsX-ÒtM[ܚ>nWvx%7~Hw ±7l߿fL $&qIv{]񅺴VlD}\?߿?6J7W薈_^g&lvQ%/ @{z)3j6a~Oh;X_0=qQ #mA-b1㕀G޸Qлk<|!`hÅ8w?ߛ%8;YM0V@-sd]۶tɛQc'NI"=RؔE҃r"̤-A3q_\DSwVBhR^|dς{`椗=[:㵹iB4Ӄ5!p/ ѭ;^/w@˸m_C^Wf;uV 5/܇CϡRO 4ݙ:U8?x>0w\++Uwz~y6=o|~ $% 1I0^nnZjk:'vxiެf;x>^O0giY hg}ރ3Lh 0G qݖ̊vG7bge#O:Y$! :L_muf`k %LǎNf$6҂Gk3'(K1{2<ڮk/D`ncm,-|*\,ͤ㕌[ޠɶ6q}t6G6S>]`q7 `nz#2]ӎͨζгu[ @ u:%Iת½)no*p농fnchC<9,æotegvg0~24"-ubާ08v+)=;,ĕ]zHCv^z74g,תBhj? NV$-ޞۈgO2&rYLs{c4b"zzuS>梧۱C?IO;^h!B;v{+iloO2c1Ÿqj3?AvLr۷ <?v,@_|}+2Ғ}ڛ㶮KOrǮc9ٓH':->XBi!f{̞>4RQH>fo2?AO=^x`JT=^O+:nhI,tZ |k Y!Ƈ&45ߣ#Zvr+?ڥeg݃{.,Ϥ<|:y3^G:lj;3Xվ&-x8H[- ω=&ѰΚ,,$wv"ƫPhlZ[\ mI^=Vla* J-)C{`-g++b7z^ސB'@f^zE L)EKqXa~rɓ'+SIbW ]ͅE!";{vvQ7ŞZsY)ioo_͊cJ}{=7\,S*.NogK.n^6Eߞ^;;@R)KYJ,%@R e)K HYR,e)R)KYی/)?,}+~.5H(p(+zWlD8,f3 pVBW<=-H.O "|,T]h.Ԧ FJ(Z l?Lp>m ӻ21HYR e)Kf|؊6LE>qVGovt4Z {lg~Eu`I/|ϊ7g=H ^@1lo"od ?Et ̦[[ | g7KowQ &g{y{,?`90\^QxWc']Ѱd|@M8n^S|7X 'LOLK@ = >нBɦhZI#[ސű2 䥗?txhgw?i"p?5Df4=2GC Hzz3Qvv:6ɏ1fxsH]umOLd :Jl+Hg{cu4ݺ`"[ܝNOwb#Oސy.5MF/13cn?d<_a"H10x̍z?dj;M=k+(n~6f 8}`O I» K4ƿ9G LA3h Hz~y҅y4Fxz#.Kr3GXj~N12G+ QH6f/;?UMk1zMKHk+4q1Wf 1:q13{G Ny|=Eq7gG=slXxD˸*]g$kʶ[i6yV*kګ'0m&YuxP':tkG$LM]P)#X^Ouɓ)wU /NdxbVI}YxT"zTQ)~DⲮȮY;/dH3 >LgʚpMb$[КBhD$Rwoﹻ?u/Y`F}zdzg - Pb^g|gϊ;mZ]lmئ̽}']SF]#⚴<w vzd̵˝?u/~?A)N_ CL`8r]Nˮ)"g?1z(!W)q`%;|! ~q,^V pHg- P]n1Mx 3;1!TonfKï֍fSIq9{v٥:Ċӓ%&$*?Iėrz3X,g t3ؑ%?r.zM!;GK "_1#۹rcoрBRj\]LyĴR4=U/?"8=_Hz o~便7;HPLu,֐1 K6{5)iM T1;w޽ᆪkVq`ŦSz4p@pCRĕqsIXI3 EӳB&~vӵ8ZG(!LCo]3F,V4!7k-)qb|Nt1j0N@8Y ffK7ޛޣ:(Ҩ7\AДP,2op֞aYRzH~6۫2Qf1o W{%ij̵Pҳ1 boKOvL_^k( iDi:Wn#< >d,-̴AhȀBdlZ ]W8W<1pם.ɀ$5ٱ_N,ׇ3(G_, =tSmc ,|*ȵ0 m|}|~=?{ZXo&g ˱ 7\NbBm醚\ef<TU-0"7PXbEtBǻkf⢷ɿBo@DAXk:ke?;ヲ$y@$q U-@X̞f Gg*@DZ-oQL|wl=lokZqP R[d8`?M٦~TŚ+q /<\hRon+b"O'"-'w{ɣ:A٠Uw&,dׁK:mB,#fY؀$GFw4ި˲57AbAѮ>0r;8j "kujn@3? Gxz=sփ+7Rz\^X_baf wxXгM xrI_P~;""\5늤}ֵ»\? _q(?z1!}2JPg dyFu]=0 :I-uJ *fgaSIսTEin<{zth$̊xbWZSGHClJ9W8:z'׏P[gɫ@J֚|Sb8|HOqB ,&} x}S#Ohi <*[&[ҏA'H "<>v=46}Ρlȟ#x ަhv(jn7A#J{s0KI&swal1 pv!%n+BȳCףLGapveq"PA?o$z3kö|zFG W,c?0P,>_\aփxsc\Ψ:6=r͈3-6V&=8ZO!v =A>;8<<E5;2}h{],'⯩>Cas%Ou)}ۋ/[gלu5XlswEvohTu9$أhyb3N聺ч\#=MQq3V$))-3]O~vKsӠXDQzbz3W|I%6t2+1=e8S{Oӎd2kV0KX&`aMݰ ]kt"qC w !D4/\G@9cvTǥnӲ~zdD:toOv.b)O߲vGف17X#E9m,lN;{pJӷ}{3#g6)={AXrfN5*7wkٱHQajdb]|ya7W͊ӣ3Unj<f#Yym\64:O&St@, wY{5 ?}[ݲYлeT(=Z+.ݢ+|<  i4th:}4m"@Xt!W[ $^9ݕz^GE5V%rtyW*WjѲֽbRx@,L:>[Õl x1ȻBAQs#)7+,W 1AAg:|TZhMC'4OjV,W r0 V_r%@ !‚5Jiтd2%@I "$ E*1BmL'SGk:NHY @"JnUƳx)'  "(RK.OPA㬧K|Ba-|_sBD4ُחtL5 94MEH]^ DZ<ϟḋ-| S eD(p) e)K HY.O,!ԄkLRwC \l  V@$ |) 2#!Kg` y*b]oC %@FLƇP,?AKq#2=@~)~l AB)C>霢+BZ~8*,-=DI5>%\ۂ[o suIN ]RhA!6,{`jtL.|/ !J2`8VdoO)Wr`#3@؃E2f{  KBc"b<@0SSsd*A,)+rr'%(?D3U֭׿uW>>\Wb]ejTh 4a'r:]-(VB޿3:`Opw7R[:}Wo>+s{CcRw<],DRv,xE>(by@$jA] 0`F זwy^quנ. r= i] -1 ba1XD7u ćp^q(C;;  o~[Ay7:%@(Q{4c\VXDHÿ/rL#W/HEh絿 {ـc mo#ol@| X~:5@F= k{"r@,r5w_E>˂;B>םgcAnAHq@BV,D =EAUf]yf=b b `  !X-o?_@T{a;先\=x~Q|3b! źXD?`bn!B@CpK~ # r(܂T|gC Gi^wb{DzRU>ďX8@PW`:):Wn9\-ש-H1!+CGA(/rcB\Uze /胲mC˾=eZV,1H-+nw*̹JD7qh]U!Dt?Y5VTRB<[nkG_W{F ~ Հ8DHzi"} ?cu*Պxpp5 {_P <^Վ=j\ݝ qy%Jq' #Q{\X'{ >W@ ^DYvo\H{/Ѻy}%(1ٳ;{j#͊"WQde0 äIb )˕HYJ,%@R e)K HYR,e)R)KYR,e)RODYg|9R \lJ *D2F)ZJ%xs|E%QT3/݇Ąxf & eN֏2Ε"dTJdGJVx9wMĮ/'T^Z9%|S?k?QlOJ<'&<$KDZΟ+///䯟$WOSɮ^"B~V(;3Rb,%@R3 }eJ.ckWׯ}>r;JZ:koml1~X*J"@^R/޽C ׯmdk׿2F]͐:7~(7[A+&97V( u=8KP{>TX=$RI:Uoh0NeR8UHLPT9?VbyIpMcoxrΒհFt !J]0 ,G`$a6ɫ M^+`Hc%^.TTuv$auHnjXgZ5BFzxpQ?B*1ڭB+r$=hk IDAT k@ nJ3 áV$aQ0k,y`PO V*T+qdi%1@\?j 'H^HB5LjRO쩂aV$ Xt١ab:yE0\ RVj:VBłH+0uMtx d+Lp4BOd'Kǚj&TBU7`uu#oC*BMOFTũTǡ(R]+)u *ZaS ~VPk5*YTQVv"zr^V$9/ p )k;ªI_P+5@C^9Њ߇:5`])iV`(Tp= 5@L&/| rh|F{{)aZUjUIɒH+AIIU .^z` Kf2^VS:V2m+xAkxA[GB ;Ym$QZ4i=5$CoоB5aVGf:yxhpQ;:8DD%S p0/[]DY)qڎ:+ b¬xW$@m|V$/v:s#pB ;QsURAH|`–-U"ϗܸv=R`qRp"D`TRai^T4 ѬQ47FDY ]+ãfz4/iDNJ$%uƗdOd*{{i$ Ƞj(SZ`OB Yzs:nDʐơc=C0\p>wȡcaJ ݡy et-R8+&~^(|dh[6<  SVDP)jk.Y*졎 /]XM#$]iBs[q/~jz"Beƺ`qz{s(_"rм) j2yV1oI"XO)t|--F"uVXCbS0^^ #*.+u[y70qk N`oo.ȎmmEJU[ö*GPؓ+% Fg0DRfhq_<8X@*HbXCb; XV!X 2 B VvuWQ3 ԣx᠂6 1E#-Mhr@V^ ;sTwڜjLq:@hUv)sp>7*Bn|[bn=l 9H^j97"X$\u5LzR^d6+A|X$ahߙF`2ȎjͽTh^4umBFl8[SCs{|sxO6bY2N,'G79ҰR#nXEY{s kXmE4֚U!1HDW"n{ PKu1hl[]A{UR?h;C+0jTt9Zϊa^be۱~TӲR@v,V}-+fv}G\b9e"Oi G\Tko6Ȏn{@%ł@b{DǽZ|OJ-LCj=]u+27v׈vͫ[Y$۱yVhٱ:ZzPZ֣g,DHp2P dqC-Ł .\Dlv4ڪG %B^S懵 hF9phA*3W 쑊 "DN6M+æ|W;E4}N1 Ȟ5+traA‚ڞq]qyP!HɹBx B9Z2@fWfd@a 2ӞJ#;p=jAşE\<43V+|<+hR8Lut7<0 =z^xuc:ųjMYIddNe/-3܊X=m6Bp; h ED[4΅YU,{#'+mH*o=X"iXK)҆:4B= j{[%g0S 2r#g,F2η1ٳJeiHb=?dEpE+vĎq T03A:}Px6偠ٱHa]l10 jGj-ռ " v!zi'9B=^/h'ڴPIsJn%ŋ{E Gdr*RtWJ ~m0#g,\K +є!zak~zX1d d-g.8EE򢳃ydȧZ*RtW`CswYB @T5_5GsduM,!~*Z ,HqAv,@"G, CɶdH|5*X?b޻lNRm$J=ɶ,i>%6$ Q <A 63_\*ܞ}"A2i;ö,+VF/3#>_XG弗* ŏ (C''`Ey ?7\(Z yHqNvhSLKE |v9iڢҴݟ4"bX9HcP d.~@>3d)) v3.~@ p?- /Zs?=ĹE+ X*Zdb `#:)ZkHAVH 0v9ٟ@])ZъVhE+Rs*}KO6 WH$FJbfŚhz&OJhzW2z7QD. h WnƔ6_c~+Q5ipWqs*}PzHzxzbXz㯈bh@V<&VDtkm< z?x1򯿊a_eu$z>oށ)?0]4~@f"b?? oϪU;,G`zI bȷD4&[Zp6LUFA@SדK_)^i㗀?Dzm*$B]VXmDCu3t9McH;On1iKtUFߪ.HBǚG/?gcy0z}HDQ9<*lUi!BHş 2a?)Np8Q8I3P{4: t[dݐ&iÇ8(6~u27{[1!_jqyGRc;TM率?`|b>\TouNr ciKUFB8zsߋo<=?K;~S͓wvE/ Nr=4_2P!:VbYqf%`Ik ӈETAƈpȪO~\e1rj_C2 Ш,d'>TJkq$n{ Y wqw~EK8~\O$q hdNj5%Uq ,GEu"XNM@A4QҔ~ ^\ rz/(-ή &;S*z&qM9UA`5I&V*@+bϐI9v8`6?V̟_5{ƒ\BvuP{`"%?W0&bA ˇO# ˃~|"l>;Sp,8 =4\a=/}:5j,7}V*]w<=XqFo$0<&`G-j)}ݨ\AJd@\_G-)H"ּ4 ~a%NY>7wQxp5hAh.g>k]\DdM/Xc=ɫ>ak8Z`Q4kNЙ_6a/|-R(~E0xd>].'n9D" U\c Gc0QF#:hM"w&BDӋs,7soC]jKmK}9珙m.D5˃Ck(v"PDH}, K&m~Ehd 61g%&Mr,o/#:{s0 r?"ys/a1,Ya;I59h.xA7+n8:>pcڪʌ&#gݼ㗅*>pNb eG-e5a-bM̺)9 y@v=XÓ^Ǯvs!"?,F1(ռXnMΐNjށqLVwV[c*^#_͕5Pm o`kRAVcTz|Q& C`dIAg͟[suY CB&3QGCJ;I7H*&-SÓ>"+/5=^sZYhat>(! CCU7Yt@Qow%}w;J//0wUG9v5 {$vInK/P/+B9b[\/w/9?O"@&笆|$?V&{X+bӛAt¯JX21;9UkW&7Fpǩz7s}  mn<2Z7oY^_/D $_ ;hxG_]ioq>Hъ h@V E+ZHъVhE+R)Z h_(@$IMMXzV&F'q2ĠlI h6yY +qoABHp%$+I}+cW/HC{N'X WqEtϭxzHzxzbXz㯈bh@V<&'Xqcom6_(}i>$3;SbShOŎP?U"ҿG} fW ~Bo2vۦ'BA 4~]>68bm#v+򗎿(?d1X|)WS&gӋs쳛n/gQ9g^tH ~K+/=eߋxJ(/ ߜma)Mٮ7VgS[6F@f"?98?ZC-?]$??ߧ/ M#ءJCvxX⣪ٹCgfײFǒRdτp+(58ó7/-`g޹vcjI<ܳDέ(zMDw6#VXCQACAڀ.ոJk{0 KxBǷOwCKUmΎcz,х6b:?䁗3%[~82`4ٳqe.ߖ+}= _ Wj֗cW_/2M~f. O QT>xv]ey0?|f΂9GΡѣa%+񧯇2p%Wk۝ٹl}EMW_/AkxJ;58`z10m w|3 N T01͑? X->j[W%ף痥Ϳ.y[_f}y  p^ժ!l9u 'mn1R]CӢzA Aӳ:߈?ޔ#cwvE/ żd0 oC+϶7vC"hl}* X=vW? "T[q0'N^U,/ǰ&ğm-4yƋm}ofNŴՙޭgl{m-c5F!z|h 1:I7H2LZ-DFKBo_&}EW3~>[?7c#KJofnd}'f\u@I˗{ec 8V2~yc5MxU75Z[%/tW>Ob]%;@%-/v85>SmQKl}nj̋V0X&˵N/VқXڢc/DBbg쌭V75n٪zvv#?V({ݎDJpt+_bwV&~)ojECY)Mϧnn mn{Z7yB^ߦ vwE= E+ZZHъVhE+R)Z h@V E+Z +7o$Q4WCXz ˃yw:W:iK8yOq%^Ȍ y6E*aC}<#DG t( ɦ\(=8|yuC] GӇ1D$5GiB$+7 Qv0y zC4k/B}?=I$=iCJq`&%q>HъV E+Zv{. 7Ƣ߰lV[Rզݲ hZM!O.ſ=<n*67C7L \-HjY ȼosUtrLxm"fvODsA $3a>ioح1̲Pl @d_3ޮRBDO/ܳdv1=?(yqDw/?lݰjre͊AHx [m`U!ZkE3" xfZagMm7yʹXy@w/?fÒ岡'(ȲָleI>k-WX N`㽠=M" MN3dZ츬ςtp}&O-+M![NKrV ;P"Q 4JЍH*QTE`?ҲYy]@A tuiΎYpVy:(# OƟ~*U\/oJp-(DH+@LT ]tTI\{K0@_9%@䈖m,zbB~ٹqi`,89[5bi=(_z?hD{(`'"|( t`*?1@~U@AV']Nؒw2=a:%pn5[JxЕ,8֗chJ= 4"p2+Eo[*vv-LBͬ"( $*A;䳺*N? rlCM>LMDP?sp,kk:蠫s A: l%]\F/^r=އ1NB-|[e/)mm#D3b_V㒃FU=甘%ftϥ$S=eVWSv +Ѱ˶=?;Eq)mnEѭ{u0}32d:fClx%"J`^mJhe%fY7K $J! eDHy+ ,gHk;N{4d:;@ӳ3M*$D\4\=>fR 7yAsVg΢'w/?z2,44~Ǭm_4+!fuJ@o w;~o;&y dCn4dƂmˠ:R%|.֙-jJ^ fU0zS&q}߇P{e.EY1a敂U;fW3![⽥%3+QӸ-'^ybFx: ҨyZ=Py|v<}6+pii $0ƿ8oMP`kA;sdݲ*zw烀P2EJNUWUf9P=;_-Yl>O\ռY)}%5"ڣ5=n^I 4X֒moxUp O~wV"\%[߲&RLb#|XT{``w E[?7o*GfWhaF"k&FajxVG?o>kqU\DFj\^gb M܄`ɟF+Sgi=rַm80v|+dL ՟Gp,P"Ah<3+qy0<~ͦ HTeQ{ZQɼn5sDal{k8j5ZB%7Îo^! M cW{F,4./%=DL,V kf%kC75&D ;µnjiX(Qz X/[qd{@%9ẠWS00Y*woI^M2&(|Åj"P[0>+?&DneL}y46?f^W{$ AVgfW U~kmz@h>̜z]GMI1Kj^Slmw"Fޢ~([.ګ- ybf3Ƈ6UB|l,7ii$"`VI^oE*QV=2q٪7g7 {, J;=Uz3E>(*&}~zs} ?Lj0Xu"ETMlaf̢YTX"Y0:@ WQh4Ch4g\=kmQ$2^FCP0SEa),2!GI4Ϳ9H>xmbz㸦+ʨokNZ߯F ({@Ҩ%݁Hwd"~i#@"8HRM5^?Smj]';zƒ5{(#Xz]<)v3fyjضkfJe4 ,MZ,l\Ņy);8C>-"u|?i0.x4ZHHJ";F?ctz , iyV[b9tz~si#EAZSLJ qc:XHo* ,^><?;fiVhhjzwqIR.K?l4\k"OoQ $ {^ثhfU~\%; A}-yM2S MAuSIU YjBe}wc\mQ_L;DJ"Il]oXBҤ "D N.:`ZF=n E%[AUn:⛆kna޺Q>DөFyauNZ@ֽB:W͆fZc)AV=UM7  T|"Rh 0!T-QŘ| R"Zk 7 {&SQ܈kՠl|Kʾo5ɤ bc[Q#Otik.#@ ĪF05YX|YӾ  ׍A(ANQ+=3bHѾ, XµU2rM =FFyqA于&*{76SаeDGsx*`a7)ڗAQ5@ܨ[U2֠2Ll5Ǘ"U/  AߜF|V0jF,nh_n7Rdng B5(7{,{6k76dRh_!`X*}Ӻ7bMnN& E$9e JL56fǥmǯ R/šĺa;h@_ѡaxhnj\t os0~_id>:4MeC7)abϑ׹A0u]_ٳ.XXFslSɬH>6vO!zv~~zen^ٍ. 6gTh_@"S~wvΜtJo+ƍݘ^6&=*M}}S̤׫W7Mf5+RO B(U!Z\Z7/c)' IrΑ⯥ f+* Ѱ,@D [ Zj *:Ѽi|H>aHuGzݮT@Y. $a=ΆzUҨ_lSh8@! f2 9H>}FWڴ~5to}x^lzs& E,x6/Rc1E+ZHъVhE+R)Z h@V E+Zh@V7\RWuk5?aÕx()g]/>$yy]@Iw1,,^-zN؊G8t/B =zi|קP5Ci:L"WfVz^G Ocv=bP.2ʥ#XMY So(C50v2gDe9bn_6"wR\:8!5+G2 j)^yLGy!zRM:< x/5xhq澇\JSLa$>8>6X\ΡUN|*qf5c`5YIS@$[BTZl/*!0:Elϴ-=j_sI!\OZ1"{86WkBdT]xWUDXnn%5vy'F+cJd,6RdҿL|(t,{ʤ\s@ cF` $8 ?M2"iUӁ{DHӮQue AfA[&+FcqSj]O{ /*CGL'n$+VDGP^Gz)K a9.5"9BQfu M&nը 0UOqAVi1SVWQSuS[tT&U8F h5uYF5+ݾ[%ķZWTGK,qbјUC)~tʤx'0j%SC?L,l2c "hHTe^{\7rh&] E_Vs?TƟ\ Vb#E2C1SD~ Ag-:*c8F7 (jFm>2|Z$J=up1cnGlIiݡ}nW~zu+AI"(x Fo "> ǜ8H8Ւ Ta'S~4H+_$1? 3ЂƁ)QǼIhi)WN?-:*j1gbue >tb&WdDh_DՌ`h^5(Hi>8ڃqD٫lIkg!_n]i4LUޱȟ=gU>iVtT&b*p&Gb4E<Aޚ A|Gb~6e6k\DdppX}5lIi1EH}7w} [ۉ4ff:]r0LxϠPp |}t+Jxxy{[K ?JUh"hM2xd5қ@,w݁#jU}k;4zح>V[sp2mԯe'{I{pE~H}`H;MT4"xH:VxELq욯Oq`Z$3@"~_RDpT&w,"Oǟ " IQ:Y˅=$XM6%gIve6ilV)i[HMpw}J#{ƌLϤ7) avŢLpY ? BL"&Ũ0~i KڮOqfvp~Ȫ2roz4 {aCY}fs34UCj3dM H5it#tʪ\i5NBѰ0 ri,e d4Yt-JqA{UDeDp@A,UqbbR5oy|CvM.lؕ+5f_S%n^fKڮϦ5d8Δj2y[˲ʝtuB3*!#dAfs-hfo 0 XۦX[I&Ϭ'|x "a W۔XSbx*bqˤ E|E3}ӜռBȪOqju9*S4L@xNB_ڐ֫(\!@V)ws0ViÕ jOqj̇Ar2CXNT=*= W5y-Xki>Ŋ&͖=mZci&%U\V$՘ 3 B`Tfd(*3d6lf&-Cċh iCZ߄pmI4NR.2LEe*VWޘB);s y[AzYV㲛@Q}$'\@|Q&u5bQ=*#?-eҹy&^B Qޯ q4:De0KQFeF)' fɐ6'ʈYVgCtJpNTK+`JVcn@FeVߊdXb,V%?Aa!`C8i5DXTf5pd>?R$8坯ν@qi8z%=7}L1$ٯOɏs'eKc_/Ifk 方]/'aHB1R]dHK&@Q#y$Eǘ>>dxR?>)b/c7EhE+Rr8[GWmV?M޻>tDR/'' Dv57>P?A]7? o_~i.XE$9@zjrؽ7>l! n߬ 'Girtr Zr[0JdfRW-@{o<?d "G# ZaI].uȪU<!b0R I2t^Wp@Ã}7ӿw\#,"QGhpD]f}>1haR<~}4 @J;'%X NI7ªuv$"v2pP>DH$VZ!o<9@H}V=OG?kk(_SViu%5Rzd.וZFV`m5OD(ֆП`p > peŦGN9>>- r Ѕ)n<9:>yZ.y 52<$ ^v4]k/j4CE(xӇ}>x"k? @9==)Z@kfy)Gq tf |T-hލ5dkoԗtEzH׼: \ӱ|K5ۄ;@H}[= ZV5,sDYW+ܮRmO\x h|{+Q`UoԙvRV=Q!<盎ߝ i7>O>a@:<,fV5Z)JU"sK>I;$ $Q>HWNFH Z5\g0Dj8ʾVD71}V" H~,WZ)Ȩ+I|t~ᶦ&qfrcH!`n}$a:#rWF pwHp#nde.+@̸&qU#Bc&=@ 's艮[[:=Y/P #  0K͒]ƣΰV @ /C4>#kRF֨?-kn#@{0q="ô >߂x͜ 2>?:|τBhZ#\fE|t@rzZUy-I\2@z[Ú2'!:V^' 8  ^MYvr!ZpiOttDrSщJ_4j2|^*[ GQ}d'ؑ,nI|\eYh,K#uHC12Mk H  4S?JH`CH1Y~o_: wwn-_]_nkX$tN Mpu#}Ճ^@]^L<8-!JPT|wN>rZcꄐG\ȋJ$cx%'`KNz KlumS5pX뻣[&`:^6  ȪAck4]& E@!/'W WfsDWs,ǒhz9zt8 u;mpoF(8NDg"4',Fu߯!\7Ai;?A@ws.5/2 @®gyW}>|U;fj De@!h%3+@^[ 0R: R,W}&>:~e.bD;u7wEew|q5U$zY.y+q33c#BdtbZ=@]OXL^Vwf$꺻7OwҮ<$Iꁐ<8 nE>A30Zf% /IzTz\꯸nGIjvUe{\phu:J}8BS}hag4*\ vvUٯ#5x+b:^wg׼ Si"ϝccjrrzsS3RN ?_1{v:cn'+@YE*Q@b  B R*cm"*Έj'ѶZ|v$B`w!OQD @$ԟ+_mbFH,~Uzf/D,N敔 ,i8"U-h@`Aw݉J3V UJZU@C+J}*u>cHъVhE+R)Z h@$.!|_Im< ғ8-;$]zF0/?j!Zz sj)yp+@ ' =D>$x)yP ]2 H\%W\Q9,//Q ĬX._ZE3艖M hE+R HuR](N%)_z|rzr,앿7(;$T8=0̍O׍M/-Y7 ,˪eED @:n5!:Ì: _zzirzry#a of왈H\ꃘ_{ c{6<[m#)aP֬D۷?HU ;^N;guVha >8贻_~:3FsgYgDg>Ȓ~Lໟe-†yݻ~-Cj-8%Bҡბk8!\=\}HAY4rt-WEy!(td:D7sceu 'G%xOI!%<~|PJzD@TL=PvƮ߶Cqz8"!"Hy "`1Thh8FU3E̢z~F\.֖}Ug/|d7?"4@|'*4konw_mwM{pt:Y&MtSg}DDT7 =MMcIFOuK~#x>Lw?C$ 2OzܿU~S%x^ M. ,^Юq(R2GOE|IE"GR LSKKi:'Uu&-=8rb``LMo0U+ >~!|2} W [ff:"b IDAT? AӒ*P 8@ r>g˜qWhz0zm?-lFICoţ4uzm\5!^ P8 !KCO G\qPQ;.op&7  )dfYDGr:T 4O|&Piwr M0t= HNL( ;AeBݑ&h4&/){A|pn2K\wouDSK}/ < yA%s?@_,@ I'I T^Ǭ, \c̯`E@ vuWheND`)X vuBL d1 8:sl\ѫ7~|FNO ,?󿀐7VST%$W,-%E; D:*QkcWhv<=SAWFtl3 F=P`$њl|&kyCX^a k>*{6:yfdzƱP@Cm$ UB&{NS $\ :3YhnAEH~,5ktmJ=+ <|{6vPOvG$&zNFb75?_%~-3   +څx~SX#3YYhVB"?9uJ@DL0=.J4`&A4alRJi*D8mh{a&@ "tXw >osp&O2yX[25n,k>'nf)Wd^쐇)nf1xgѬ@Ȣ#A==vTZR_d7K+>( /-50֝o,SLy5.W8拋 v {(zyQ: 7Q؊A‚eFk==a'|22Jc ~&߹+EQN!(QhfE0i;YYT"Q;GGO8(9yXѩИ5a^buY&7pF T=ru^ꒃ0/^k+4kB1l%Wo@7y+np/ɟ` /{ϋcnx`n#zFx@Q F  ݏ̼RC,P4k!0O=GOƖkwdGb:!ثlV@p~VvQvbEI' !;'(M~AyJk8Ŋ&3D>|ctsOD4HkdR &Gf* B ^ Nf9f}`f%ת$Ag.Ļ4mZ쾆UƤ0@S;1v`gzx#;;JaV+uc./Iւ Mt}߳cUs̝&0 ؉?_|X>_$oMQ,F1rrdQxx+T|rz8JŢY20⽉B7 N (ߓJ*E,Au)T؋8TgjO6IDaڤkLΜtYx洸MnW(? pt*8܎X4M:-C`g<0A{S3)@`^bA̫'ӧGhC,3is&Fk@iگYWc+ʾe#M @%WIrNSW1QMg">/IumEf?(]Nv>Kߠ왬`"/iz˜:3I0~Թ,Fɰ+2Z?bt6P}9zeyh~6 kf%;^~7 lEE̵ b_N_9y8sϠ =׹U&qOU\1N5oF]׶8!s8Ŋ :+Y&3Kܥٯ^|i|ht sRaӡ(m&IW{%BG䭓4"/݃ uQD,6v23_^E/vYuRz)ձ)pԙ+,*vo= z0yUyu?3Q]Q5ebz1&omL FXV(H#V[cp-e.U~ \qˋyhɱ JW]4^P zk~EA"ī">TM\:7Aff,ڬu(NH73p$ ;[= g~^*uxtL,(:ѣ78PqJoY&zkgx8=M<>Jq1sDdVJ㽲u hKOHwڈ2亂B.>/͘>G*@ͩCi޲!."W71|t:KpBu<{f;ӛ.7!W%8aथuC=˫qIʼnG:ֺu=ohsqͫ< .Do< "`e GK(z ΑXFbWĬ bZ]YgL ,}E:zwc}޸SvռΛJ ͫ wqY4}J!֩:>`4XJ$G)Uъ9$jKT1*ְhE$H>ڀOOb,Z6 E+Z h@V E+ZHъ88Dp]B}.Ԥ($m6,;O z8z%BJZ|IMOZ@) i$G [W`ARFM"+,|;tD7?'xQv!-/A}(EI"I}uih@V&VD :Z>]o%mRɿhz8Ο_zzBl)`ܐ(;yW?uҋdi|#M/ =o,d ~0o'.W:V+ը!\=9b&Ƕem"  %:l٫W*ՃU*.zCއk~#\-)vh.߶<n?w[%@`q䮪/lC@8{S90ࠞ< 9ש33Bӱ^nCGp'd,MWV*C0SAWBVuc{2|0cr_簲ѡ}; . =~tre?;yC@|`k ݰlِ 0zg[\[Js4p:Dң K:DDO 9SS3#4AשffMwxx>@(S^q'lPxB/h2tI MG _PBS*8z)IҶph-c1ӛفɪ<9R͋!#9kig Bbt:=vni\ОL@ wL}$.wy;%R ^i08Khz 6FM򧅭Z؁5HIguzm:yEW7^Йsg &p>`)WVCI <]v>8:#NCǏ ^%[0̹߻h7YpXࢂ_Td/aP_U$0Ǒ"_0GhSf 1᳿C)^ @Nx9-;oh\ ;hVP%vB.A%ohxn6A m^a Bn =]_7G2Qt3`^cbm A؟*s|% `\^@q )1xRK D"o,9^#>U3Y&CZR. %\1{[K-- 7JGmǮjI0'p>@& [3pD7pih ;9c=ci|M頽%%m5|0gG"Ig'gCqPIGpj54fb͔/6k ?(Q[P;?r DcKE=&  &בBgEgK4A= Jv$2j]Ga A(b|>Ofyd &PU`\cl&+RWe0zNӎǬz=m9(u)_Zkr5Dr|#RP4{"AȦL QhUu]@x m4_1)6^zClF&_̡'Trﲬ>LҐNO\aCG`Z?* Dq8z`ĮJ{CJHѴBg}7a A:kn2F0;1RBA5{>z6EE]d .YO''vYlΘ~M^tUp؋%:ս,W8J @*rp9{vj}?}3'})VLΜtYB+<j8˫5v'?h! 4="4$p~aX)ùlOvd^G} +ʦl<09t=uk WɫlŒ=oLsgXQ)Ҥ0&/5Uao۟_l^$*SIC0a`.:W[.Uб(qZeb@0i{^LDG%8JÒ&ݰb+V6 I:8# 2ZO۟˯yZ?E+9Pb7r-"]E)0q:<}|yUr-ETt՟Xdҷp/#RnlDa?~OboPnw 3ZΟW2w/Uܗ*Cw+{q\{5j>4dNO< j[yz7TqT'˺>} uvr7۫E5f>D]w:ԋ=RU5&qW6e[zr*7W7?*T8캼&T "< et_={!k|xv۸d$ ({oj)UQ}L#+ ;JxV'~XN:(Fηϧ YDB:Fv`ɜ*7!F$mOIʡ{fܹ΋t3b,2-Wknz#]9Ub-?3*d8Y5?u>N>^ |@卩f?ɂc>{5* ܤ}$7NΟ(/iL懦 ie;ݲb,pX2r~k("k\"N"; IDAT:}s~E535ak뺊U9v$C|quA%EhwnR@IVPz3]&\?9y2zִN4grРwj$KB&:i?m+lJC i4յG6'|Q<UD X NUWh4 꺪:!k9[w>~M:K%]/gIm>]7⧪fWąLd;بl8W#nؿ®-]qYtvYo˿QQC_,P"{dE43H65a}TNaJ__?8YںSQ+,dc++s,HCܨ,ڱWNVF4扴p>jTj4zm6Vm׵2㘌o^mSo1`i(TH~_,CO;_iEa>׆q\I @~ A49H:x07dKH=P'-8#e:pvqS \uU%~_J55W]_]?T㔍oR)^˽U߿u@*~ù*P 65ږ"ZWXڒ4ߡkBXrЫ(UŖᘵ"| @MIO_(ͯޛd]C[CWS)r국jw`*E$B8T/[r vz/O6 = ? .RBՁ4Hߛ#`ѽE~,QUN~Ȭ+2y#Dfͻ)+d@&,ϯޛڨߡכ ~8yz(EYI@ 9iE+Z&)PL^nZ) x~sA2?9M dϿGZH˝g`VN' orJ_mЛu%?Ջ:sQA VVlHUn]%e @G"`;ql BN}{~ưvȂܚkQn0y> &Ǻ ˕|NlljwhsQuqvI֩)lUڎҜ&0 _*T^h$t{fM^,BKesl- t I:):̛T4LLVTɼ*LoT!n~ՠ-}MC*z ':QY$*"阜y$zOd~6''u>#N;*z"߸CjLӘ?А?Pk&fAIr7T-܊qq[Fl&&&S7#JX5M;O Es1 uC>C\V]!gڿ.4$}apo]`{T2w/UwL J^yq׍6 :}/psrrr_ 0v0z4l_7Tq_*r;.sֿ4dTe灰P@V%@Q<=:}*.@DwYodD>L;Tχ7'1t+zK*jlUg@Ο|SC{?yǯć\}gMD:"U"-. ?Ad@ YX|ʺݷq;Q-ɂI@ BhECX\3?*/ TGV(AbwgNtPލjoO5n>zCzI*jMnؖR48|7mkߛ,2-Wknz#]9Ub-?3*d8Y5?u 5|ZW,4IYI 3n!#!;LMoG.ۡdtŒ ϔ%dDtd-jgj9;CրkYM (Ɋ@ok;Nӓ[~*~\xe;4jME5n%q!dpE%ؤnJ!4Zfn꜏|Q<iREMXPUՙeE Y\v7ٺ\;@h$^'65ߡ͆TܢΕHFEEf+욚"7YtvFu[ W[P0qэQ* prcnm gf#~q̗/QC"0R?\`¦=_\WL[Wҵt2@|h乶:{)Ԝ"FeԎvR6DUH~񼟼o^/Iih/36U\~Y AZ/ 7_iEg> )㸒|;ϨW/#)zȽOZpFfu[ h rD Y?y߼_;Uq7Gj?TGRsU؊mUumKL-a&T=#v@2Vdސt6]y ,ͷ7n߅YC[5Tz\&zm&*#5HDF3[ܿlE@+OO?*COjHe#^I$2,QUN~Ȭ+2y#Df͛V͟>Z{[~Fz:Nıyt V/_*reR E0M|xE#J˝g`VN' orEY.UV/E5[Yq[WyAdi/\lGY"S.AχAU "j6C$j>.WI'U[46;t ʵDGESo5M;W;fJshHPy"PQ1I΀X2&#~cXjG LANr~^MYL;HOFe5'xi0}Dz[ ZWCPv(NSۿ?^l۩:ʓl$>HΘ?`Ce&99  ?IE_9?"4ғEtq-FCCkrE׸&&+d^U*H/Vנ_ۆTE(_{I^?S%?YI|nZ"鴣ZM "U.Z}hTwL#gb|H5|^[Q#SadW*N~ݓ\k@9yAH \?%ko?Օ%'Ш[4%*]^nCJPFzjTDg8WmJlKq+Iuw lV9:rv[ټvMUmu|]v4c#=N5QFn>wRaT24,)Il vjf~=;RI#~mσ8?\myHWQ L+n*?_yUr-ETtI?%׹3IL&tWe\w"+yUlM8x^O @"ewY5y>$oNq|$YvׇJ (-k#Կ4d+.rdD\;ї{J"^BۡMuHo&Ȩ.- t?%7u ͯ;@b`jG[.~7]iHu6ז筻Zמ_k0111@ LL &&abb011@R`|E^~oGZ7 b=O7ܩQtyG;g52Hou־nUe`w@@]vh;~1v u@aw8IѠC{2>ڷ*Ah۴& 9L"iQٱ[}mHR}Nm/GUa-8jNn4{.Htݦ(+އhW8/Կ|o-JxfliNY-)̈́$R&aEIqv9^b;adڽHFv1eag "4@:@Mc qx;HynЇQ@; q0{tQ.Μ@Hl]cƘmn @&HU.*j 4LU{&Wv?@&@ggBIxmo(aB";x_2R];Q-I,P3*H3@P tԿ@N!NUrι{cihL^˼< v:9'QPu JU0i *&zo p]<^E*g蝻7"0c'Rİ8# O@6u[U,T/)kU%{ "+HfAo٭e?*R9EŽ1̌鸶"e\c Tl![w.xunR@IVPz3]q:!u0XOWwwOi)Lf޼c_ b?nUr6ֹ#n]i)b{dC.lӓ8F [ TQCנ꛳u~9?6"?k]2;&~c(W`7> rzW}T9s'B .efyJx1M:ԟ6 n[)CƯE7-7*~qLv"/1mʙ鎒 ٧gB4|l`y&}(!h)&VGq{$'uqpDBs۩ף:ܲ"[@ =eC?]Y,qv +z*FF8nZ?X0~+j|~ 8?'ۨ5b} F ;;rlOdR2'3@jlVE*'QD%T13RhQ"G&F.X isyK$yܼggg٢F\ D?wtR9-\5N"{i)ōn6;];Bd!dy*`f~+=~уj2; EC>-67$=K1]:[8 /-%DOw6 ߌ,ۼFaR*YH 48t@jNVEYɪҶj*cmT'Azѧ, +ťʇb!FL[䛺E<3 ugO@ l i7sfa_,H8'c)B$\T{Hiu]퇈v. $q;.AzeY׿ <~At:f d3 -Yl ~KSps~]D O|\ӟCe!,_g. hGfr~odBq${rDl=[ݾ Ћ>]3GJw$>{XbA Z7OMc!M.A仺R!\`~m0CorB_mt_+Pғk]Xlj/%Z/2RyΝxzѧ}R3 AݲҲwb]4UO! "DsEJmzœ 1MGx+3fo9i9iIT !яebu'q^)R:Z6W-4ձ3I},D#'b!. U[0Qaj LG0\e&/@2u "U}hlC/,)W+W%m@|XAV~lծEk"DjڅH+-E AJDX`:N.~w.V8H\,J @j1*KhlBc{.VN:]rـЈi<";/MY]9 &?#>*W7Xu&7mk^>A(Wg6GvYbugg5qlٸE:qh*o>Hͪ5]9{D7?54ȸѸ ;j0Kw0gJb!,y-מ0g6*bׁ[ߟ=&MK  ΃`O"E7)0L.~ZG /dY.]'V"` @Y} 03oɬ̹y3 8momImzd϶P;#Q_4 %EP3*g$E&>L)FIO&;r)z,l&:zal} DXv{e -IO8M3 WmFǍs9cHVcX0;ds{t`0B.[ IDAT̸6Jg'kEc~dG86 0SڟV".gj=q9aӬ/m]Q pMFJX g\:.N'v7`譾0dzZbE86<\a33ѲEB tF] Fim}f$EPNkTi)=i1܄mGiί'* t@;;3u
\$D azH*+$.J¥drZoc`]Vz56lۺ7#x\0W4֞}қ]ڠgdն #u9rr'@7}C唔-0#x  m3g"@} T9@v'.2c#`<=&3D`h2R+~E4hH+r@T$K- &Ȕb fK$"c/~KzZV kHY\\r g/QzF AoSTzK%"jZ2@$DwET4JX(E0 [z KOaƊ5,zr5 |"Ӳ%H I/DGcz jV|_wJ-AtHCx:jJ%HrZO5eGG#k0@4z!wuh&@r_v/A@䌡mE#'AnGA UW u̙a١S6HFZP0@% )C/9Z})AUC-g,hR-\U [4x["x0@ 2TRnC H5 l)W! R-\"b LHma(Q*Vra0@"@b0@ U(=  &&&abb011@ LL &&S ORdCw~*wBo$dBztNW!堕\,{BkgnAh}^N e,AhZϴ*wWѼe"^Fъԩr)`G;ݑGk@i2F:1"FWSDͥy6D0111@XwfF'tr k9ߟU{ +^HWF}{H]_tdCqc:S+%k=??/A-D\}u-X86\_]}]`a6sP^H6Bq/WKrac!J4w}zuHn Y Npȑwꆣ?}'8G"$ h _ӗkr BLܱ;v$ٽ-|uYfdBBt,*0ӟ _%XDa ~u7o*! hXv%D#xZ$Gp胄 2xC,ɖFz X Q7:&@>gH\n }GH؎ Rz Er(C D\Daĸ؆S$du]{"J"@|A +f~M_qͽV$}6H~H aeH=i ! 5$@ *"m]Ǻ=l E̼ҟyje/d̦buf !W7]BX!6u5@A"D*=%lxr_$JWTfeV~ i @8&;DU{N;k RB iD fLypkO]=7i)`!%țU$E+Rn^ R[1@$5vpNj @hYv"V &r3wD)BwM^->rMyħXJ4QO&&6H rh_is䇰mlGRRqH?GJx Wo.*4@ -b  i,*Ts&>nA^&H*7{"*\}#$"o"|TdKTVGDdBf:*e\g tPBDPW+ jxBLZg\i[Eft&9={mAFRDB# D~.2ۛ`o6S Wg$Q "_K8cع4"xLj[I^"X(PQW-B2$e4?cN!DiD( =o1蕭* ;k8nB: QKWRĘȝ=狅[ <4M2M1]`I^>?kװTo_}Y֐930%(~6X~*\qY ~yq<,ZGQC; e @0z۵ʣl~gjn+ALVRX؟mV2}V_,\Qp"D©"3dsL(O_յ/鏴1Zc1G V>F aYZU ׯKV?E$<н|R\s"C~uOܦQe:sfX=ȤUgm+Xҗ$c?[<[~#m;vK"l1?VLi)سrxq @l75ėZ9>`/rLTa( T(X=~L W7;sUԧU)Wׄp2QI<(a! R-r(D/& Rub@Ht\ )-?aAWb.EnF=_kcxa?4 /@(IQ>)J=BM G\X͏GԌV#!&\;} " !#4?yώ =1  (Ahϖ :@$^L% "  #E- ?XԩX6Jt-db!H䤃@|DGL>ӽ-'"Q{Tq)T8a`$L$1=c2)28\ڴi!G(C _'Gl͑L毲nT~ki_\*W*A@DF9A%$"d<ҵMwpk+X<{j>PSkAX4" _ "D: iٓ1GЮn=B ‚#trJȕ%i)=\B~# yvLMcW9zU¯JLDD;ĘJ!2F "$öH+W3X`>w]RĴ'(=\6"V-@(j+8p(L gЇNSB{B>)6@`埪 >7o^xo,5 ~j|NȾG.ChOòR_}%ݠͱ0HY(N J?!c<E.BP^-J8b=+FòaU.]9?r 8@v<13""|8 }x7})" /<"s=%"IL{@MUd'{ԛ=.o>SB =_®eΣ5yVGr^s)@nR-yzxu R2f$Iʣ4Yd{xV7 D!{-[̨',30)c2-H:/щeuj /Vv-w\`>{ Y~7C ~W蹪Wd117 q4' A| 9~ʡu}su\_x^5: r| ;W  SټiJHxvM S\HM҇ERÔG+G˿Y-⟔v 8_ȯq$F 0;wbT@(jj#oP|{BTPbޟ Gᮿm;п LUPaWI L3I.!@G- zDQ0"0.\w\sdmC9PIU6 ]v0yV>XV 5+*N*wDfe0Y1 1A$}kPHϕE%5DP"[ݰ"U3Ô q۶眧)yu+K^d ^ebd&a7(y 2+0I Nwib)]w "L۶眭ݾI6~E*9xĘyyLr#,t3i8Q.n#ϕ1S ]_[ ֻeڶBv&ټ:I8($[]fN+l=L_4 rqFGJ"eC Spn_ͫ_IIOe =W(="NBRC RuB*QzV'!8breLaDz598%[ꧾ4b6WQ*Ǒ-/ OŠre8ix0@z NI0@SZ__t]9IW qOre[`](iR1G`GT\_W(|O#%sw,=W/ Y-V*(8N'"7o|𽌤ၶ Zzo}4=U2(>~']$lbG:OY_eٷOG _̉Vq0J *zkxW›2@4jIh<^4G/Rmr~'(a30DtPw >r޹\,;.iʅ\pmcC IDAT S :m 8HYx#F$ | 1<` tҒ!GAp`5[)/O`SJ\> dj tI @ċGTf q/O.JQAZb4-,NA]X-%=0VDAIKLLC}ŋeCfBȶn4t8\{(~^ ۶ă-lW!7yQԞiK?Z TI՞ěx>q?pɸFri4x?/?2 ĽYyZ^환=_~(}⎽dyS,ޫ=bQ!,t:2,GᣊHzLLC}Dx裩7kI՞i3r+\,w?ڢa$W{&D)7\1MMa$W{&*MXb0ޫ=)WGSw0ޫ=Ӡ2gIjOGSKU ߿:gb4@x, ot2m V~ߺgb6@`1O|Y='+EE±zΕ]}a"M31  Qq"b5ۧ Ҹ=ӰUP{DHx~LLHT GJy[I89dm4loHQyzq0|-oMɷoٞiI>Ly&,o?*ҷ=Ӡ.%8dV$v.VLLH$KO;Mp  W{Uiժ=Vn4r;,J4o4tI!C$LE.\L{HLLCRǙ7NLyjGma}환 XxIϋRo2Tt\n>환xcT+x`$;^환\B'S=R_jandyoG{&H +\z GǤM,tnt?2 (9ϕGjBY#DV8tlt_H,S{&4*ϓ_ޥО>$H9ϽY5HLL I\C-JltK^HLL ʗw-@Zgb%^q{&Aabb011@ LL &&abb011@ LL &&abb0111@ LL &&abb011@ LL &&abb011@ LL &&&abb011@ LL &&abb011@ LL &&abb011@ LL &&abbb011@ LL &&abb011@ LL &&abb011@ LL &&&S|k20IENDB`openttd-1.3.3/media/extra_grf/flags.nfo0000644000000000000000000000550512246102547016541 0ustar rootroot// // $Id: flags.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Flag graphics" -1 * 3 05 14 24 -1 sprites/flags.png 8bpp 34 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 50 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 66 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 82 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 98 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 114 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 130 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 146 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 162 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 178 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 194 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 210 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 226 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 242 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 258 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 274 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 290 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 306 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 322 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 338 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 354 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 370 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 386 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 402 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 418 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 434 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 450 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 466 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 482 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 498 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 514 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 530 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 546 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 562 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 578 8 11 8 0 0 normal -1 sprites/flags.png 8bpp 594 8 11 8 0 0 normal openttd-1.3.3/media/extra_grf/openttd.nfo0000644000000000000000000000676412246102547017132 0ustar rootroot// Automatically generated by GRFCODEC. Do not modify! // (Info version 32) // Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags // // $Id: openttd.nfo 23993 2012-02-26 08:23:32Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // // Sources for OpenTTD's required base graphics. // Checks whether the correct version of OpenTTD is used before // allowing it to be used. // // // Number of sprites, it is wrong, but GRFcodec automagically gets it right. // 0 * 4 00 00 00 00 // // Check whether we are running OTTD or not. // -1 * 0 07 9D 04 \7= 01 00 00 00 01 -1 * 0 0B 03 7F FF 80 " is not for TTDPatch. Use ttdpatch(w).grf." 00 // // Check for OTTD's version number // // First step... Variable A1 might not exist. If that's the case it always // skips. As we do not want to skip out of the whole testing, we skip over // the real version check. -1 * 0 07 A1 04 \7= FF FF FF FF 02 // Real version check. -1 * 0 07 A1 04 \7> \w20304 01 01 03 // If the version check is supported, the string is translateable via OpenTTD // itself. Use it!. -1 * 0 0B 03 7F 06 "1.1 (or trunk r20304)" 00 // Some OTTD versions before r11130 did support Action B, so use the English // phrase there -1 * 0 0B 03 7F FF "Requires OpenTTD version 1.1 (or trunk r20304) or better." 00 // Final fallback. No Action B support, just skip to the end of the file. -1 * 0 07 A1 04 \7= FF FF FF FF 00 // We are a DOS paletted NewGRF, so tell OpenTTD that. Then it can actually // do the right thing. Yay for that feature as that means no duplicate NewGRF! -1 * 0 14 "C" "INFO" "B" "PALS" \w1 "D" 00 00 // GRF ID, must start with FF so it gets ignored -1 * 0 08 08 FF "OTT" // Name of the GRF "OpenTTD's base graphics " 00 // Description of the GRF. "License: GNU General Public License version 2" 0D "Marcin Grzegorczyk: non-halftile foundations" 0D "Michael Blunck: catenary, signals" 0D "George: canals" 0D "David Dallaston: tram tracks" 0D "Jonathan G. Rennison: aqueducts" 0D "Bilbo, Jasper Vries: font" 0D "Andrew Parkhouse: rivers" 0D "OpenTTD developers: other graphics" 00 // // The real data of the GRF is acquired from several subfiles. // #include "2ccmap.nfo" #include "signals.nfo" #include "elrails.nfo" #include "foundations.nfo" #include "canals.nfo" #include "oneway.nfo" #include "tramtracks.nfo" #include "shore.nfo" #include "sloped_tracks.nfo" #include "airports.nfo" #include "roadstops.nfo" #include "aqueduct.nfo" #include "autorail.nfo" #include "flags.nfo" #include "openttdgui.nfo" #include "airport_preview.nfo" #include "chars.nfo" #include "mono.nfo" #include "fix_graphics.nfo" #include "rivers/rapids.nfo" #include "rivers/temperate.nfo" #include "rivers/arctic.nfo" #include "rivers/tropic.nfo" #include "rivers/toyland.nfo" #include "tunnel_portals.nfo" openttd-1.3.3/media/extra_grf/autorail.nfo0000644000000000000000000001017012246102547017257 0ustar rootroot// // $Id: autorail.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Autorail graphics" -1 * 3 05 13 37 -1 sprites/autorail.png 8bpp 18 8 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 98 8 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 178 8 64 39 -31 -1 normal -1 sprites/autorail.png 8bpp 258 8 64 47 -31 -9 normal -1 sprites/autorail.png 8bpp 338 8 64 31 -31 -5 normal -1 sprites/autorail.png 8bpp 418 8 64 23 -31 7 normal -1 sprites/autorail.png 8bpp 498 8 64 18 -31 4 normal -1 sprites/autorail.png 8bpp 578 8 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 658 8 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 2 72 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 82 72 64 23 -31 7 normal -1 sprites/autorail.png 8bpp 162 72 64 18 -31 4 normal -1 sprites/autorail.png 8bpp 242 72 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 322 72 64 39 -31 -1 normal -1 sprites/autorail.png 8bpp 402 72 64 47 -31 -9 normal -1 sprites/autorail.png 8bpp 482 72 64 31 -31 -5 normal -1 sprites/autorail.png 8bpp 562 72 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 642 72 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 722 72 64 47 -31 -9 normal -1 sprites/autorail.png 8bpp 2 136 64 26 -31 4 normal -1 sprites/autorail.png 8bpp 82 136 64 23 -31 4 normal -1 sprites/autorail.png 8bpp 162 136 64 31 -31 -3 normal -1 sprites/autorail.png 8bpp 242 136 64 26 -31 4 normal -1 sprites/autorail.png 8bpp 322 136 64 23 -31 4 normal -1 sprites/autorail.png 8bpp 402 136 64 31 -31 -3 normal -1 sprites/autorail.png 8bpp 482 136 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 562 136 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 642 136 64 15 -31 7 normal -1 sprites/autorail.png 8bpp 722 136 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 2 184 64 39 -31 -1 normal -1 sprites/autorail.png 8bpp 82 184 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 162 184 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 242 184 64 39 -31 -1 normal -1 sprites/autorail.png 8bpp 322 184 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 402 184 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 482 184 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 562 184 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 642 184 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 722 184 64 23 -31 7 normal -1 sprites/autorail.png 8bpp 2 248 64 15 -31 7 normal -1 sprites/autorail.png 8bpp 82 248 64 39 -31 -1 normal -1 sprites/autorail.png 8bpp 162 248 64 47 -31 -9 normal -1 sprites/autorail.png 8bpp 242 248 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 322 248 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 402 248 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 482 248 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 562 248 64 23 -31 7 normal -1 sprites/autorail.png 8bpp 642 248 64 15 -31 7 normal -1 sprites/autorail.png 8bpp 722 248 64 39 -31 -1 normal -1 sprites/autorail.png 8bpp 2 312 64 47 -31 -9 normal -1 sprites/autorail.png 8bpp 82 312 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 162 312 64 31 -31 -1 normal -1 sprites/autorail.png 8bpp 242 312 64 23 -31 7 normal -1 sprites/autorail.png 8bpp 322 312 64 31 -31 7 normal -1 sprites/autorail.png 8bpp 402 312 64 31 -31 7 normal openttd-1.3.3/media/extra_grf/tunnel_portals.png0000644000000000000000000004437012246102547020523 0ustar rootrootPNG  IHDRN2) pHYs   cHRMz%RX:oZPLTE 000@@@PPPdddttt4ϓ(4"}ǙH!R<u]J*RZ*VoOFC*c%))7jJʳ8oJ(RH%BJ.4(6"M~aȍQF*c(!ȥFJJ!ȅJ;,Q)e4Fq)%J<, _hdEuORPJBP*y"]Y33B=s!B )M.i..Lk«\foynƘq #T. x+LRfGp>2&73*U@y]"Z^w]7PR\J\i{ mN RJUh]"/>;E.2}&BH #+b־(4(JJ)L.BH#宭o)ަ'$(D.cNR2WJvK/ tB^$Oid.r!ſ )$HUB+]3RJJq /2\\^+%o{4FnP].*~K`;4cRJF)#Sim.ʥE*LI] rOBKT&(Kl HZ+OCsa1HT\BɥT6$g<ύQRT.ȡ.T.|g.tw*K\ $FH#/|u ~ H O6G8E\+W70kJ"BP(ȔykR]1M RE.˅Hv'TR\{c7&7HQ&7d^Rwg:YS2XF\!ŋLB+]e/RTZҠZT{8<RBiFOh J")R2ύMH*(%EnriQdB"E<uvwyrDFFiD~26J&TJ%XuI,\ )ui]dEm+{)>%Rq2WP蔨( #'F *VJkL.3's)s!ޙ\ e|~(IӇNgz":_*V HJYbsriL.ȥΊEi%ՠ뺁 )J)JR8<ϕ̕QB aI0+3Q[)yֈ=D09#cWJ #eogZ']DE!Qv,B%v+T&BURZ)З*4JɔT&?Ʃ -A)PJ&rAyK#P*4qBg onk'RcK#1NUEO()G{/δ/WS)$J+2B<7ýT]Ia^We͚OTR>cTHɥ0J;)scN}ß$I罇Is\ȤJDI %q|p&zEnr)mߒRH)7z a1R4*7FA.|TZJ!05)r/1(qﶂTIH!~(tPQRF=SFXp\ |JN J)-I>HKe1Jq3J8.BB Kŭ}J)UwBspnvrMKc('2GZI F|Ɓx_( y8SPsy;F܈?&hPA@*Usq"W<0v!i>~c[^+` rcP$1gλ=DIkF. ` V8[>/nTZ.4F 5?ᔗNpS Up oϷ0p~y@?:}M kZbwGQG؆K !g/}pU4B#a48&쌲b(|iZ"!pRBDŽ-vLI~ #h%W00}N(ygcHK% St'!@&G9BR#FF @/a {B /0};K4པ%[xNϐMqL,CG@(P qsK)L0dP4„RlKcl 9t)!@Pf`3k60n0)S:& l L224Ó8FϱE?f,0y k³#ލtjFxtacJ EhJ & 5SK-~6(֓,P,QdgJ aA)d AӮ=)t<d0gz!U&>C  }@(SЈmw"KϞbB)q0ud:5j*RZGS0SB0<'u0aZl<&o2xM Ocu݀t| @@`WA^JBcgbY c4"3JTkb'c)OdO]3`-%@ 8N ;LOsJ@0Ř .NK)P)=z = L2&<~62Af: L}JxM%Г ń P11a/(<R!b!ݍ)L-(vlsZJP)%;q= ;~7Ŗ1 Ⴤ'@?Z1= 2%@`2AO̺``;Nd:XM'z={LF!cL:>[BE62%a4߾[+XRR d<ChCbĂ%!NC}h&XB)>`[JoG co@~`Spu`1OДN d<g@~DFENɿ9#%bc aJ1" e ɀ,”HJ1Z%ZbJM(B!2!4OirXl#۔؟kOtL1vED]QA)%>6Nn(P2&bD&O);>B &XCP a tQ0QF]!M =gAbG,?b[KSB} &b麎PJ-贈?)ASDdl2ۺ  %bb)P2%sF"0dB bl1z73 vh "[lhɩN鶵?ZLeGu KB!pՀX `SGR RM SR "](P `-2ň,){A3t]7g L ƔL`Lar!D)l(0J[Lo>.@0znG{b!1&1'm0x1Bߡ0 =ݗO)`!SrdB%a$c@S1$lPKBN)&"2=fEcBhLbKu(B(c-J㓚RJ=" B^Gv% (iubb1l)dYn(@b %S40=NGhtL,9ĉ-c:# ES5;J-":#~^(230dJBu6?`K6)0t LHNdB_(F3x|hD @6SJb 8πdasZlj &sx%`X1X aJ0#xicl1g"-P'}v bKamLa`+q_RBۄt!oXJ({J}'#ht cө%GP9)&xFfj1`Jȡ kЩ!؁N SB/9WQ1}UKcBp"NqɘN`Lȓ)~ (<€0"ңD ӌFq6&0!:1g F"adG#4{L3dx%FSLp!t #\yj$#S%8Ѷ~Wd"4Bȯi0/5% 9on,N9,;=j7oyo{Os@]vo8=__{s2kZ3c5c̘ٗYc=3~ ֺWE7Ɯf|6 Ǔ1fg19דּiƸ@ϼZg13c5Pcܗb3ڇ1331^\̘͌s?n?tDc/=^uc:OpӞyQsi͜;F$" ۴fXwϽ"Y: `Zu{gPcw֚Z7wg1Yk~gꛙlxzv3c4Ө1ֺ K?{S;.ۓ݁nu h%#foqyo:;Ι2c5;kMm͌&q悫; ̌uzt61g}heZgSk:g:wwK=!;kg{wf^yc3ƙ~9`1yuƝJ'W13ƽߵk8gs{}~{q5%:ciuuDk1ȝ{?Ȳij:py";"΃{?O53skXcuw8Yu[瞘ٓ;Gޱi8}3}'vvstM%RY#ZYwfY}\s{cw.˼ϽsY7f:Oٚvͽs>Ywyg4h33x~B06ƦSYQ51Xc|V圵6y>"hu`ଙYg}?y$59\YܧY1q1g5Z⦅[p9:oLέbf1.Qƚ1&m&9sX|ü&nG%nMR^)~Y(ٓ1րοȼw;g/ ).siͳߤ 'pfvfuc8MCf)nl/(b–1֘8S;3@o.閱J֔:| ng>{t]Yhz`ցxYMLu['pf~Xch~w9g1=Ul`&q `of7g3?k'ӑn$?-K2}WΛScfb~g쮟N5)%뺮KbYk8n"~ܹTTY .kZ7O~Ykm~9ZkR 3m@n]ݡ773=53ssd0S8kfnkq{'˶Ν;3%lݶ._;筵v.kysnfffg=}/&N [v8?Xsӻͦ1<Ό53st|vAwJ;{gsr&M`m vGC?<{1ϼnuk[g'\Ξy3͜9sk3N9k_s|4OXk̍7{bRywnܘ٥)|Zi1$c}fI?MM_o;Kn)Ǯؙs޺MDc=$]Y{7mNDIr؝w{CiƂ/}LBX}+nz9>ƚ;os22RdsO6ҩ}fN䝳7͞<^sgv{߻n9Tai sy뭱)3֙K5i>{뜃όygniCf6YsOs;E{9p97؏;:7$cl}8kNw>r${M澭wM뮩w-fTUzp'L dv?Xp&HH*K^/5}4Jq}>|nhEwk>X8kOu(mZ}uEu}5TfjӞ)C>{֦0tܠ{ W}:>Yôsy~WԜB=GsIϵvܼw[?}Tr(II1'cNk.=$U}r;!!B>sYdvԉ<8FRl6OkZ=Лٱvc-1Ɯ, U^ l"q|`f\8lfj>7 ui{>`p3s33Cc7Or3x8w֞yYw<;Jf6#g;@%{y7w} ffΜ\"p|Ѵnn\a/igO}"=v}=='98=.| idJZ*6M;i?\W_^Jmsfh4uન]S޳UzgT cƶQ{~'@ϼ%t|h8lSCc| M=ދsSb16^\*ĺMml[F>g7/=zmֱC? O(H an&6SbcVԱu3lmLHk1?<Ѓ#L>c;l6'Hg4u~hĹuF5610alױڵEc>ծblOqݦ1ֱ]7CcM]г4m268Wi 릉6WqsWg\Ŧ6: c~hcl?ƸEMctw/X:wKMa=S<Ҵ;&6pbcclCpO=Ulꦩwkۤ9{L>W1jW>Φn@kWqZW6yIĦa=)Hym&61=6_bq?>*6ng?`mbmۘgX) MBC16]CFMmb3z8F4IlǤ~h\5ib:&66|hcq_%-Zc?ZŪlj[Ml?xlc16iuZ~Tjbɒ%i`MIrܱMlꤡ0}Vƶ]C 7v8&ٻ:MĴ즉mml#^1#Gx$v:m\q;4]&YҚ@;@'m4Mĺx&v6vclFvccfߚfPPn&Ob nsu5m麥QgSױq=վ%#Юu|Ji:6u3ˏinznm4Kfg*MuPYq;CӶm3ldmӮ c4uSM3P;ŴaWidz;~a1z'1M\m-]O~ޤ_tu]uQ$9lNLԩZO@uۮ]my*UM]4u3lbӬ:w>4kvشMdIҮmF060Cc[DרkD[b[\Uxl! &%1*6dMoZbM`u]i{myg zXulVm$v=yƶ5{Rf&6u,7A-nZZqػw^867NbLjzu۶q㦩:6uc=Уq۶]lS  cѮXi6pn0\&@ iSG8Wmޅfw׊pӢ5Fa6M!15*6ôib4TwbPu\#ǡhS:&i艼jW~& &<.nb۶mMa=6qծsB'لL-۳k1Pi0ƦJZEYfZ仮[/hs6׈`D#Dcx~4ä'15@Fa cuI&ic61eIp ď) Ic *XǺaU_ |o=_S1Bɦ4wߧI)MRxm&-Bvc'naS@xAc[kXkٺM`SXmL a3naԫzBN`k38ULz^nQuXwT1[an9n3Jk>cہH HgJMS= nRBݬ:ehӤ{E1z8M't[%/tW+㦉8zgpX8<@Sz8cl =}zUԫ߁vv&C8pզ`k}mSo6Ə`'kxp+#|DzԱnͧýMoC.X;a0uc}n^Q*~${3SUHr)V? qLmat@[ &bzSS9_z?~.MO9c/x 8S>z8q{Ei9l9zy8˚yjMÆp=:w2=kZe Wx$77ymg9hꯩoꯇC?hߞoa4~q2]?xM e.ƶPP~{C;??} WE2zQ>/e ,Qb,P.w2C`yo"hyžDYz/˽eXe(/20;E(C+*I%^z!,"2eЫ4ϋ08U/}8/9c,eB,fԿe(93^Uſ쳳 &8 ee!0+^U,C 8ZV-OxU}|Y-?T-?Uw\e(oY+ gV2>}_8'lqdG(cM`ooիp^]+z9!Ey|qYuQ+3yrY-?-9_V) %+U`r5]$yeR?>UK~Ź('%ղb6e/gUgOge8HVQƒh pPU 1",>1J}Q3xxeŗSA(+P^0Ŗ|q8_VZ~r'vldOv-Kl3猳jɗKXY]{H026k{*^«p^]+U`!#,e~,НQղ/O>-3no=xūO=0ZVիټsQx]V݆d1j2\^-+{BН S4g!18WjX,WիURrΟYH;061Qw_.WKΗ*'Uu1; >-+޳2:TO+*ΫkVWEqV_2rgQe`ɧ^$0ʭg,p6NZ,嫲,_W!J4>:Wi<c|HղVKu]/o}Udog)[Vٚ=Ub6_B`ZUƗbՒUpxrxU.b^W*,ʣ28E8PnM(r^/TW<^;B+CœCثg6挿{^UՒիY %UnetX`={Ūxo,eX(c>Y4"\\= WR;ʲ !X`^nӲZdP*t]X]Vꪼ8ЮR3-gq弪8+6EY-m-gUJ~|y͒C(C2Hue0N(_\\W.RI}c>P̺x` U^0e9~+˫noyz]1|1~_V*[XLio+% xhY mB`eP+e20Ndye^.^.BY}~cd3 Si|5oEY|yu|J;CJZR/ v]x*YY`쿧dS*38! 20e9)SW銇}˔Ne* \eYWno{ʮz/)-C|7%*^߾ ᖱ^_-.*_M|L}= 8T 2 {ta(,'pNKESn]r1c e`mؔ;]*]_^އ}sye!2“yG,ivVzV٤:Ug{*o_ ᖗ_ 串0NmWsP*1DZIcaؕF3v{6>9e[Oְ?20Bm|48\}Lk8ݸPbUoo9{}e`쯌װ s!|X<#_1Ǔ97tgK^qn[0#Me5CߙWWUyu?~89e,%GC2n(_sx(t>"ا!pU8<᪺MaU'7KN %g_=\pi,2߮ӫEpk"%'FOU3ήϻjP2٘ݰEQtB:HegْSd6Wg=5(S w|rUW'7 %??8 cU?ETp3Cіc3v^jc /9{՗+*StQJ#>g/9 x9ze״ʽ٢<\"`2Xunn2}g8[tπsQ\|Wľv۞A| 7ߞdJ^ӒB ;J^mR )Jk)ęŗ 8b\).gJIvF )ʅcd*%/=^sz=Atq}}u~~NB*d7y^D+}}]\__iԹUB+U(TRL(TB*X+E}YJ,QItq}]Zb/v I"?3BRJ[뜵I;RIfZZôhNu9)RI!T*)JHc1Fs)RJeB)]ErާK\ tNQe_AZ"٧H)83BI!PRIkJH)~iZ:z'B )JJ2)fK9C{'RJ%ZEw]70y.B ֺ؆3$.TƙS&(B )T[o֨TZB=]{H6w餐BYNPw~PT|j#DN(ij뺁B\RJ4w ~ﵺ.Tq'V˳yg6M^\J%jBVJkTRNB*Fz)EzKy8{3L*|>TZ_EQ\]שdg"Of tGAw&=j mQJi"*)xHV )M;RJQi^FkJ&)H&Y&ީpNf18JVSJU[ *2;RlnVWHV )dUD{JZ o\w[Nܪu޹>ONzUiuQh]XgLRM_ 7BZ`OqR=]4ޥTZ뜵vSrlݪgDR!sz8'=I?օys2B>oYgV rsg.Z[u~{WFvB !u9{+sY^+S黮So!sfϳ:?SUf~}](]he|>o8yk}B|^&~yk5W=y't>ઁ?.\&)t~w]wR(Ul`y33Oy3(Z&1wp*B)ב;y&irz|8%JElJ&Vʺ:|;]*)ku;6ް|ͼ1.VZk?Tcu[kkVԡvO0BBnBBާN7RxSV)BZ 꺷7s6}"ɼA }99"u'YsN|杛6cv{U߰+ }1TJ }DS"}N(!wԧj/L}VR=F'RRK0ʇll5T b &0Svt8|TbTEq\^i͇;TJLXH.řr3y``غI9Gv洘{{'2Z}t7!;wwRk64e(SIAB+tC^sZ)!ǂ3.B>97?h>R}1VHm9?yB露J#2v@n>ds}yOadsXuDԺ^=9&񴟃sۮ5BFDZc#=.:ZIa?@_"yg B*Ȟ>ǛLR+yY|3!p 4 >Na=,2UieԴ{S|5\S |<״y oW!NG믉`-tIENDB`openttd-1.3.3/media/extra_grf/tunnel_portals.nfo0000644000000000000000000001046012246102547020512 0ustar rootroot// // $Id: tunnel_portals.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 63 0C "Tunnel portal overlays for railtypes by Snail (Jacopo Coletto)" // Tropical sprites. -1 * 6 07 83 01 \7! 02 11 -1 * 3 05 17 10 -1 sprites/tunnel_portals.png 8bpp 5 88 35 33 -31 -2 normal -1 sprites/tunnel_portals.png 8bpp 43 88 40 37 -7 -38 normal -1 sprites/tunnel_portals.png 8bpp 86 88 35 21 -31 0 normal -1 sprites/tunnel_portals.png 8bpp 124 88 40 22 -7 -29 normal -1 sprites/tunnel_portals.png 8bpp 168 88 35 21 -2 0 normal -1 sprites/tunnel_portals.png 8bpp 206 88 40 22 -31 -29 normal -1 sprites/tunnel_portals.png 8bpp 249 88 35 33 -2 -2 normal -1 sprites/tunnel_portals.png 8bpp 287 88 40 37 -31 -38 normal -1 sprites/tunnel_portals.png 8bpp 5 170 35 33 -31 -2 normal -1 sprites/tunnel_portals.png 8bpp 43 170 40 37 -7 -38 normal -1 sprites/tunnel_portals.png 8bpp 86 170 35 21 -31 0 normal -1 sprites/tunnel_portals.png 8bpp 124 170 40 22 -7 -29 normal -1 sprites/tunnel_portals.png 8bpp 168 170 35 21 -2 0 normal -1 sprites/tunnel_portals.png 8bpp 206 170 40 22 -31 -29 normal -1 sprites/tunnel_portals.png 8bpp 249 170 35 33 -2 -2 normal -1 sprites/tunnel_portals.png 8bpp 287 170 40 37 -31 -38 normal // Temperate grass + snow sprites. -1 * 6 07 83 01 \7= 02 25 -1 * 3 05 17 10 -1 sprites/tunnel_portals.png 8bpp 5 6 35 33 -31 -2 normal -1 sprites/tunnel_portals.png 8bpp 43 6 40 37 -7 -38 normal -1 sprites/tunnel_portals.png 8bpp 86 6 35 21 -31 0 normal -1 sprites/tunnel_portals.png 8bpp 124 6 40 22 -7 -29 normal -1 sprites/tunnel_portals.png 8bpp 168 6 35 21 -2 0 normal -1 sprites/tunnel_portals.png 8bpp 206 6 40 22 -31 -29 normal -1 sprites/tunnel_portals.png 8bpp 249 6 35 33 -2 -2 normal -1 sprites/tunnel_portals.png 8bpp 287 6 40 37 -31 -38 normal -1 sprites/tunnel_portals.png 8bpp 5 129 35 33 -31 -2 normal -1 sprites/tunnel_portals.png 8bpp 43 129 40 37 -7 -38 normal -1 sprites/tunnel_portals.png 8bpp 86 129 35 21 -31 0 normal -1 sprites/tunnel_portals.png 8bpp 124 129 40 22 -7 -29 normal -1 sprites/tunnel_portals.png 8bpp 168 129 35 21 -2 0 normal -1 sprites/tunnel_portals.png 8bpp 206 129 40 22 -31 -29 normal -1 sprites/tunnel_portals.png 8bpp 249 129 35 33 -2 -2 normal -1 sprites/tunnel_portals.png 8bpp 287 129 40 37 -31 -38 normal // Arctic grass sprites. -1 * 6 07 83 01 \7! 01 09 -1 * 4 05 97 08 00 -1 sprites/tunnel_portals.png 8bpp 5 47 35 33 -31 -2 normal -1 sprites/tunnel_portals.png 8bpp 43 47 40 37 -7 -38 normal -1 sprites/tunnel_portals.png 8bpp 86 47 35 21 -31 0 normal -1 sprites/tunnel_portals.png 8bpp 124 47 40 22 -7 -29 normal -1 sprites/tunnel_portals.png 8bpp 168 47 35 21 -2 0 normal -1 sprites/tunnel_portals.png 8bpp 206 47 40 22 -31 -29 normal -1 sprites/tunnel_portals.png 8bpp 249 47 35 33 -2 -2 normal -1 sprites/tunnel_portals.png 8bpp 287 47 40 37 -31 -38 normal // Toyland sprites. -1 * 6 07 83 01 \7! 03 09 -1 * 4 05 97 08 00 -1 sprites/tunnel_portals.png 8bpp 5 211 35 33 -31 -2 normal -1 sprites/tunnel_portals.png 8bpp 43 211 40 37 -7 -38 normal -1 sprites/tunnel_portals.png 8bpp 86 211 35 21 -31 0 normal -1 sprites/tunnel_portals.png 8bpp 124 211 40 22 -7 -29 normal -1 sprites/tunnel_portals.png 8bpp 168 211 35 21 -2 0 normal -1 sprites/tunnel_portals.png 8bpp 206 211 40 22 -31 -29 normal -1 sprites/tunnel_portals.png 8bpp 249 211 35 33 -2 -2 normal -1 sprites/tunnel_portals.png 8bpp 287 211 40 37 -31 -38 normal openttd-1.3.3/media/extra_grf/autorail.png0000644000000000000000000001257712246102547017276 0ustar rootrootPNG  IHDR pwsRGBPLTE 000@@@PPPdddttt4^f45 ~5:߫Zh~]Ú_px_diY 9-p2o7"_ploEI6e;W-h ǎ ^y^9tC>zl~9oE㿢-pD[*?p=7Xx_>y=58JU8~ ǏGP@<c-tS/eZ(" 8?V"[DMu-JplAC+Hίl8#jϠ{o@FWXDzrMz_o~rA@6!%dBjt{+oѷl @g@ @   @A @B  B@!A@ a &&٦,_ZM.#p4rBVO<^oЅ^<װÊ*p5ż; &$>ײ_=[hf|i;iL?b)BЮ~\_2D~W~rZ|0>+ 'p)OH@ EDOz)[ #-j.@T_ QJd~?k<~ D4J/;{߫YޖwIߛ"[a";7N~FjmV;/|!qF)ٰT٘ϟу^w]i A)H|;ͲOR~mV-緥3&8zrmHc^4+4kQ6ץ&8HG!r*\y7D_4~Ug7WmB8Ų}x&$5W{{jaE @l"M"$_RR"~v )`2C$^$\0_(hr `ͳ/*в~!!!7HR^j}vFm >S0jB=r ,[";,"K=ǵHi6",rЄ_}U"Hٱ<g((! ?b /L}"BWiEG--%pu @!kmQ" 2vB~VO0@(E@ YyEBw=;|Y&dF>?eM\zO L @0r~0 @  @B q !A@!A@' 6M zߤ3ay~g/MGO<^m߫-pu]L<^3Mf@G_?3Kz~mrg@aOϔ~ӎwY)BОk_{EKZZJz|,~eg~<> N5~NHy|O .{ #2K0fr:ǣp5 ]3k _ e۠2% :^v5i#р4R('{~%G|_kM3'tq* qZ&7{"\u3r:8R'0E0%C$ Ղ5<{K 6EV@SYe[I 0<_=dP{U l8jX'?ZSM{c)wF%7q A쾀O;CU>&_0+ Em_ Uߏ^)* = w]isVwɄ#S<b~ @_J/ C/NHj@; [[u+wmosc`|ٟݻB_Ԗ-J [oFBעJXܩ[~-W-l0?-o?*'OMNb}:n*n lI{[X 0Z6w@>-N0_2kż_z@r , $t+ & [~+z $ , vP݄nMz5+$/z΀\c@  @5AB  B  B@!A@!A<^"UIo0^~F:+Ӷpx {.~ ӎ  #~wWi-b9oGA}ל=Q~0d% I[r Hj)lIp sD:zM0 1 0  @uc'r4A=&S6< 2 sgt{V,3o:@@@j!i8 䪀$w8 [䲀XA8${@P2@r ( WNA @Š7 t Y@@NJ@r= YA@!A@NB@!A@!AnaZl?Q"IENDB`openttd-1.3.3/media/extra_grf/roadstops.png0000644000000000000000000000507512246102547017467 0ustar rootrootPNG  IHDR 0ސ\sRGBPLTE 000@@@PPPdddttt4 D"@H_dN-۷_YSXk_ʤbjֶ۟-1|=HC%SM *|y("VVs>PX}{0 veFh]z pNɐL55@xT=X) b(w2s(ƎR*_\OW"u 9wBlT반E)@@W|GR"sdr_ LO]C?XJ ơ$!M@+xåɷ9 Rf/]W;ki@2!NyDPdw9l R̤7q#-3L_L;U9"(]6 v3=Cz M <sDZ/DȂ~@lzp.D; M<a?k {Ds@$E@lzH:= %DbmH; o/ uz"CC)|Ia :EHa 4ijKHʉL51@ x m bȈ, @LIvkEfpC2 }?qhb-v|Br8|Pid> g{ϡ\q۝C\U[Inq>=zYVmH;*] d F vY m ժ'{|\c"3Kخ`z# GK\:==!frb%> iv4[ d={Z5B '>XIG@jKwXBffOb&? c[fOPk!@>!vhX:ZIхB|@$lҝK? PD|/4y@H$D"@H$D"@H$D"@H$D" $B" $B" $B"}qTƭIENDB`openttd-1.3.3/media/extra_grf/shore.png0000644000000000000000000005210012246102547016560 0ustar rootrootPNG  IHDR 0xsRGBPLTE 000@@@PPPdddttt4bZQ ud@_ {=|-[\y3'޿]X$H;`䦙4L/@*yZ-H)yaaE$}S/g&`\`Bg@/.aဘThՙ/ <$cL*]x"9e:;G2^v\xd4<" : >D^i{J~C1G8zF W F(`@S`FhaIݿe|tCFȮjuD>^Qp#:8+Q]+gO/0P//5#P{ILj>|XGû<Gn!écrp8RV{\p 7 x5m_$ ~1@I߳Bs =y!/ s*]h-yj)/|O&/!_\wE'T!Y7dz 8ɞ,ߠOƾB S{#C?ɻH%y<_g1 R@+ yS̖,p#B~INI6D_5 5BǿZƤ(d#3)`^yl@ ޓJPoxhy Y=ՉTL0bcQ d=|=uR ?&SA$aH(##̸Rs :؆XVDVKXlK YR $$k!Qak7m[>}(3[ }QHyHB2?U xv` \,k̪x\8z&3SnxK #?ч@AjNI|T &KFN~`ō$VW^I/*̊B?Pـ2LuY&]Vgw"uEN0́DwP-.w/k1݃hNT F^Yfl*Ruن8S Pe? =P#xG%G<$"/h13)?A< */ևjɂLF 7bӻ&5e@VIG.9W.ؓ`qRGmCfsC"dz`R[aUŒ`p;&,˭ 轗Ӱ#i,6ghICx$PvB !9 noa3 u1璯II.V91!,N!ͬ2aR{ Da/Cc?9X^̊!D^F벂!v2zсuo"0b"_I4ZG:-_I4=ч*7z~۞[pc /L itb?na0_x>/ y'@^bQGQX*łXuV%<:)zJaAѷE9$y6 mGʖ;$ubM]y3d !s]T:bP I!Lbp* -WKĉPy-y*=qDi.^(@E#O 1)WMNJU0&)-nGZ!sL?~ܚ[ *?bاaHuf U8hxuQ}ajM y )]") rWe P ,qQni5K䁼!o40]pj chM*E'T: W#Xy͚=e\wPg yuK^Kv޿]4*G9n(dx"2c pd u~IpfbRKJr擃`a"qyAx  @xQ0'ChrTy+Þ;N +4x)LzR1c%q-YZpo5…$ āMH%[^%nRouٟvIgU"o; 4{ZT,v6,סjc' 3`)? . J^W"D?3|%z^rW_3D`l1a: #a%ވDe}V\Ԥ|)Om|ؤufu\5F7*?@*' 8#BXZ 9y< RV(:^*)Y lɯ;.ͪ(4A] sƻ HL.SZE[iނ[C-^K؏;m w+9$/Hn d xݗ^1ix;zc0kˤZ+!Mk n;±jͺ]\at/M=W4:qӎ7VhWBl0 xNt@r_ ضY*]pU@nlX`0ō!XQԤoi ʽY!7#eCD 8ī7l$`>һCw 0;]2|T\vQuX93Zbg\y+[y}r<օacf+WiddTWڲ,?0 }j5Z%nsHV xs^Kc79ou׋ IDATJ/EIq5Ֆ]+/v!7H ̻Hۯ\ _FbJW؉SD#v.X`AS_#iHaE,Vr54M#R%/qk m5F FAgz=`x@sK{,qu.[[.D`y%@"k^kWi6%DžE{ؖB%54V< I/pg9㵤4e#p0: 3QVcJLɭą%l\Vd)O$?j֤OFh0L&_?F>e'7O?h<?f[8;Di} Fn!ʝFIg|:DzbT8̫l`:92U>O=^,hd7;O#0v_,qi^htKry$\eyIUl،b>{dZS 2*hAB]7;c;N:0;x`vK40ia0 {WU6ODaxёR~[2$oK>e+9}/>jIhW[(G"/YI¼`Ys~pi?0ԈLu9~54A xvgX!rYn ƜIjVM@?%&"am nJ1iyESՊfp>pHD@/c+r$:k,!ԁHw~}gGyUyX̅T|OUץ8.Xmjűjj2qW):Nu*Q't {H7p1V]oe_ўgX]DtU]?KW[n/^-FD~c!Mǣ=ϰ&OSv+"e^rtM|wWzuj b7<^&((;tjzG(췴p: {_hʏ3a  : fr$̵ @LF3͇dXVĴ(y=9p/6  䲗VĴ=*Vy}e @LӮ @DkĴ" g01 y,Xy Ry]Ώg01(Ǘyw,<iŝ`?NĴX \G  HkU111n0 @ @L34 @L34 @L34L314L314L{z% "I_Eĺl_Ix~ ͆D3WAzBjNi֯Bg M(;4!zO yWQ0VAw+ۂUoo޳:z9lER7 }_s14 @L3m3'=Kp[ jKZfi<>WD׋E=u[Vv=U}b'o^/Q?`o;A-x8vHの*yӦ_r6]=h k/Kw:i7@{7-<6Ou)ѿ>)>פQG:==n{  SWoVk-ug'%`~n4=n{0[SG*!e Yu-&KkPh2lG4+hyf[4[\^in&^;cydyw.nRŕARx2~JY{t 7bC[A.(a<`!(x#ݿEz:F=n=(] I!*,/! }ܕ)<[:| !R8hWwzq,f>jr^{v{P/7~Fr7D-S-\!upͦ/\}RbII)?~W4I4nE<?]m) eX$V%A4tx $BdȲac VkUSRp{h㞮D> ) 3.]dҎ*ǃADZ8ϧ1=W[G1{d#l8Vd0m`lߡxoy!']Y$zz:Mk yǍMh-,CVqv"5ztV {lǸWƻE(3xf2zWԂ^1g 8xN%C+nˋҏ\0A 2ՊVЬ>R4_6ِ.c$qE\0=᪷rEl^ZBsCV-͞\7p Kt~WܸV+2  혌; Bs,$>JPs~j5#RTf ' 1=Y _x332OVjlGyէ&s#/x]~m&o:>5(&QPdpء0ȯWM䭷 .a5f=Fר5Ʊ ;j|6ncV;Lp(b8.!S̰Jgj1P+>%&}f3, >*J%F[\fgx"ͨla_҉Vŷț_2~5[0Z -^tX:oF|x8٤x" ݚ2B(n*Dp q.8.Y@ܪ)z(~!h}T-b/8W& ĬHF aQaro86,ZѾLUĉ-'񥖳Ьyve[ݥFN:쾾!zIAc<᧪dB\ 1 hsr^;xVAFZ^8o<4kEYUSy+`LBC)UH2Lai"7?fEJ/bx+=޹My"p'1^<%_(tXo^כ{HdoX2 V°hGb|h!uZDȘ,% wIӈQ =(]8v3t/9f+4›[h+ c3A.=>Fj*h1%A*a2hY'y95BxL~#"H0bu"Y!c~`3v^<֞j%|S^-h]ZIO^էZR>6?-6>R_MLƻH7ǫE܊L +N"~:wMRm$n$maYS|B#~V6 Ƈs,=Nyٔ6+"q9}Hs? n%Ry2Ql棿 h[([?5zy ytV _ӬXE+L+.,I'׀s{gGj9aV ˆhD%e_bӇ'| t2FÃ|la7uxXؔ}(} wJ6Q]B^<O1gSl+*)L )*5y=&&yUV q)r¬حrTTMu7.m))}p0r$c&\3jL]&L1/mM4Uÿ#dr@,LR/VOX 숼s֛udL +ڝUm1mZ.r+0Fg,W, ЬC }Y Q/Wl3Xh< ,U9Xb3d/wrx^1BX8p;AĆzi񎘖m XqH:lUd>8[YKDP CB-`n!Cö\Ρ|zb8!3IÒղiԨdu+^QĐMHGyoafg9ö/ Wf%北  bD jpaؕcՖNe͵!4Ԇ5j߱  ! ^|H(iIЬ#C2/ƭب|0-v~5[Iq\]o#1nYY? B"+ج"2G k(&  [5zlH4"F?{PRsHu^~Z%mOK f | Ԥmj动T儰"M[P,>ܹn Å5>E 7V {"IC э+v$U'%eн#xv^p]ˑߨ|f e/GJݟSѫ-Gy9ۋbe?n!_ukV h5-y1l >7ZV%0j4VK@ȕ$ gk*<]-V_ۏSK,?J"O˔0P%',V([1t!VEZ͛&Mj kEפ?NF?7zxh8z22B<~2s2}'i&‚p4K"+Dv@JEr1B]~Ko8غ# h8 ,j<,I"͋ꃾj% ,^W⢘1$LE0p$Fu-^71 >ARh/3-Y,uEƻ*3sռ;.,zlynmY@|Qv5{HW9[gy<@*8ݭx_TIǕxr-|ɍy R{" r%eC{Dt\[UWw+^Lf֒gu|t}Gђgؓʏ m ^;Ĵmp<| >obV maA_bbv eaQMebڶ Ua4hb MaDt3F3dqlj @ @2}?2Ŧ  p3-Smb0114L314L314L314L34 @L3m{pƒA<U/夤wHe|>F>?YfimhsCM*qnk>;^1+} MxΩi<>Wko%w{qO>] @DVUgzn:mL>a@ ܝ.W[CWr@qu,GG{Cjg0\0qsmL&ㆇkl(&'l_מc-/y w,x}x+F?0BuKԿlz,H)( l@g7CC1"Q]Е!I_E@$+@_*q4aHDPr'loW/JO''D_>}ιRR}ttz=q9 (fY):8-0&h6Vh/ߠ JRf+dC=a 0Bh΢6nh'P>9Կ"'s_Z7sC,+5"ӟ>=-4#0Ow|6K W')tB)5|ya 4+|Ea o,}!}E?HOn|pI D-~}AI'c$7ŘmF{K)g0\])4+.h&Qy"aED lWhDd)7x}a2>ĚY(kL>5m1ИA_aDp}! w2!B%Ǘ$R~淗"dxD}c1,zlQ fR,`oPCsƸE 7묬؊c? p2u'xVʈ8O!12fЎW,V>~x3V}x%(]Dż1$㲬 rK+8`ČXvv2!GO P;9IuUm(O5?p|=(?<& ve,kl¬xǂcu#¾Ȁ'M R4 L! 5I<K8W?KpA¯pyȚSWo> ;aJbuA釅|g΂oj!d;\\نŐdޭ8#sɚ haL{lECo2a|0!*f`ؘD$XbU,ȵYB.HӋ$Z^yt/srP2K),yɃɉ@@Ls\7MEe,p&ʋ4jMF*$9bW'>6#HjN>8rv~5cCn\y|D[ՙ,x/ 0/' f]+|,f-[Ƀ//nfod!z;=-Ep,Qx.C% >>q= FWQtq=,V4K#34bVd^ ,ȪOsڬNxNymN9d Wv2y;*ZRׅѣE}Lez>?Q5U=·5I CpƈCrz[pqV8؋GL)xa%Y8WdR%Eؤ6)Hڤ\VRr6+I4iDRvS4! axL^SkHtl:ϸ _#?;.Gؗwn]MCJO bD*`RUlV? nUO3l_NMKZ"dM˟σ0o tAّX͝ŀkb)WV&VU'[za\|j hh4FFbڠw)~IS/2@cTt/#nx,h3:9'-trT&OӞ`'^]@ bS<9\9<UU"PnVt1Y_jcƗ1= D\l\yÖmH4z ען=Cm y@˰~s}&/<*]a(rOUiA ``LZ*L WEb!ͩЫ󳴝n(v3 [6'Mʑcr@}8 1rD xp }=#˃X@fkny&*i%Yy; )ObFZ\ާe]*O3);6Mzh,,HZ5-7a>cN]DzgPYI3® փ2±8\n~E3OŌDl6kc-&HWynay 2*hA* lDgAAyyhE\>blONJHAʍwN'FD@ *BTYS=\'!Vzb[,K?C\8VM5Z .q"u!$Zk/.ҀϪڤ]oipyA E;3H!* Uwg 2"mbbڞpgy'4BVhQĴ ;3d7yӾ$`b @L?`byL314L314 @L34 @L34 @L34Ӟ@OR@z 8V 4j4NʨKEYm pV}Vôѭ:Nc>L>Np 1#74 @L34@֬ {S$zSި y֮3710@{絴) k9 )%L#p?gbZ1tjFQ@Ƿ8gG۶& @L+<{v),k~m$E]//ڭklٿvrikUK' J^ xG2΀_p3B3@R^{zʁm LmE` "E0'Jُ0}~'* -wg\ڄcB@oҿ  -'HAL J̇~HQʷV;9`t#0il r;9i+B:wȳq<"@f)A`x3F%C ),Hy+xEw|rzzr|X @ @性dhҷ".CyZ _2*!N\^jB~t#zՖ )}[O l|]DmO @ @f3ã$ Ԅ ʂ%iDk.KuDlyOT\bNd>#Cl:(ҿ6.Jos3LHd6Y3qKRLS͋*`R%:AXӄ_+%^{Y9xX?N|6|"i$vhg ӼHfɋ0NgOsI xVĄW/BUrPXy9Q(4',4?.@޷TOJ v?Qlysj|)tL36x4#OYZ "WSzC\eGjqY-o1Ns- y䃴<<IZ$ rOZGG& #/"O^\uc6( …d?>Ts>f7K*y]`Hϧ%JbGQ>I:WX䗜[LŽ @~T(tՒ˃ɤk+BH∠y(. "X&^ %hg'?GA^==`4qYW/O~S՞ϤXX^A0hhLzWf2hdVmhQ9vRV~>+dhrڬ#ǰ7<&h2d2=<'È&///?'Mh{.pRYr:w0 Y9J /g>!iжX?l}j)K@86ZR^K~˫dx^wVщA]訥J f+Fi~LV88JzGzMj)u!X05ڛN]ߣtqdv}$.حn%yS^ʿhQ ixqyg`l0FԿCyX5YV 9(&}Fb)z;e'xH9p p^:eZ:Q. // -1 * 0 0C "Pre-signal, semaphore, and PBS graphics by Michael Blunck" -1 * 3 05 04 F0 -1 sprites/signals.png 8bpp 66 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 82 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 98 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 114 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 130 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 146 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 162 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 178 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 194 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 210 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 226 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 242 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 258 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 274 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 290 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 306 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 322 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 338 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 354 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 370 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 386 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 402 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 418 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 434 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 450 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 466 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 482 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 498 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 514 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 530 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 546 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 562 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 578 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 594 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 610 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 626 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 642 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 658 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 674 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 690 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 706 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 722 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 738 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 754 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 770 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 786 8 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 2 40 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 18 40 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 34 40 10 21 -6 -19 normal -1 sprites/signals.png 8bpp 50 40 7 23 -3 -21 normal -1 sprites/signals.png 8bpp 66 40 10 21 1 -19 normal -1 sprites/signals.png 8bpp 82 40 9 21 1 -19 normal -1 sprites/signals.png 8bpp 98 40 9 21 1 -19 normal -1 sprites/signals.png 8bpp 114 40 6 23 1 -21 normal -1 sprites/signals.png 8bpp 130 40 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 146 40 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 162 40 2 21 1 -19 normal -1 sprites/signals.png 8bpp 178 40 2 24 1 -22 normal -1 sprites/signals.png 8bpp 194 40 2 23 1 -21 normal -1 sprites/signals.png 8bpp 210 40 2 26 1 -24 normal -1 sprites/signals.png 8bpp 226 40 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 242 40 8 21 -4 -19 normal -1 sprites/signals.png 8bpp 258 40 11 21 1 -19 normal -1 sprites/signals.png 8bpp 274 40 8 21 1 -19 normal -1 sprites/signals.png 8bpp 290 40 12 21 -6 -19 normal -1 sprites/signals.png 8bpp 322 40 9 23 -3 -21 normal -1 sprites/signals.png 8bpp 338 40 12 21 -1 -19 normal -1 sprites/signals.png 8bpp 370 40 11 21 -1 -19 normal -1 sprites/signals.png 8bpp 386 40 11 21 -1 -19 normal -1 sprites/signals.png 8bpp 402 40 8 23 -1 -21 normal -1 sprites/signals.png 8bpp 418 40 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 450 40 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 482 40 4 21 1 -19 normal -1 sprites/signals.png 8bpp 498 40 4 24 1 -22 normal -1 sprites/signals.png 8bpp 514 40 4 23 -1 -21 normal -1 sprites/signals.png 8bpp 530 40 4 26 -1 -24 normal -1 sprites/signals.png 8bpp 546 40 13 21 -7 -19 normal -1 sprites/signals.png 8bpp 578 40 10 21 -4 -19 normal -1 sprites/signals.png 8bpp 594 40 13 21 -1 -19 normal -1 sprites/signals.png 8bpp 626 40 10 21 -1 -19 normal -1 sprites/signals.png 8bpp 642 40 11 21 -6 -19 normal -1 sprites/signals.png 8bpp 658 40 8 23 -3 -21 normal -1 sprites/signals.png 8bpp 674 40 11 21 0 -19 normal -1 sprites/signals.png 8bpp 690 40 10 21 0 -19 normal -1 sprites/signals.png 8bpp 706 40 10 21 0 -19 normal -1 sprites/signals.png 8bpp 722 40 7 23 0 -21 normal -1 sprites/signals.png 8bpp 738 40 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 754 40 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 770 40 4 21 1 -19 normal -1 sprites/signals.png 8bpp 786 40 4 24 1 -22 normal -1 sprites/signals.png 8bpp 2 88 4 23 -1 -21 normal -1 sprites/signals.png 8bpp 18 88 4 26 -1 -24 normal -1 sprites/signals.png 8bpp 34 88 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 66 88 9 21 -4 -19 normal -1 sprites/signals.png 8bpp 82 88 12 21 0 -19 normal -1 sprites/signals.png 8bpp 114 88 9 21 0 -19 normal -1 sprites/signals.png 8bpp 130 88 11 21 -6 -19 normal -1 sprites/signals.png 8bpp 146 88 8 23 -3 -21 normal -1 sprites/signals.png 8bpp 162 88 11 21 0 -19 normal -1 sprites/signals.png 8bpp 178 88 10 21 0 -19 normal -1 sprites/signals.png 8bpp 194 88 10 21 0 -19 normal -1 sprites/signals.png 8bpp 210 88 7 23 0 -21 normal -1 sprites/signals.png 8bpp 226 88 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 242 88 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 258 88 4 21 1 -19 normal -1 sprites/signals.png 8bpp 274 88 4 24 1 -22 normal -1 sprites/signals.png 8bpp 290 88 4 23 -1 -21 normal -1 sprites/signals.png 8bpp 306 88 4 26 -1 -24 normal -1 sprites/signals.png 8bpp 322 88 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 354 88 9 21 -4 -19 normal -1 sprites/signals.png 8bpp 370 88 12 21 0 -19 normal -1 sprites/signals.png 8bpp 402 88 9 21 0 -19 normal -1 sprites/signals.png 8bpp 418 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 434 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 450 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 466 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 482 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 498 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 514 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 530 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 546 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 562 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 578 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 594 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 610 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 626 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 642 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 658 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 674 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 690 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 706 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 722 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 738 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 754 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 770 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 786 88 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 2 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 18 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 34 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 50 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 66 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 82 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 98 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 114 136 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 130 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 146 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 162 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 178 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 194 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 210 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 226 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 242 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 258 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 274 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 290 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 306 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 322 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 338 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 354 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 370 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 386 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 402 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 418 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 434 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 450 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 466 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 482 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 498 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 514 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 530 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 546 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 562 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 578 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 594 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 610 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 626 136 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 642 136 10 21 -6 -19 normal -1 sprites/signals.png 8bpp 658 136 7 23 -3 -21 normal -1 sprites/signals.png 8bpp 674 136 10 21 1 -19 normal -1 sprites/signals.png 8bpp 690 136 9 21 1 -19 normal -1 sprites/signals.png 8bpp 706 136 9 21 1 -19 normal -1 sprites/signals.png 8bpp 722 136 6 23 1 -21 normal -1 sprites/signals.png 8bpp 738 136 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 754 136 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 770 136 2 21 1 -19 normal -1 sprites/signals.png 8bpp 786 136 2 24 1 -22 normal -1 sprites/signals.png 8bpp 2 184 2 23 1 -21 normal -1 sprites/signals.png 8bpp 18 184 2 26 1 -24 normal -1 sprites/signals.png 8bpp 34 184 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 50 184 8 21 -4 -19 normal -1 sprites/signals.png 8bpp 66 184 11 21 1 -19 normal -1 sprites/signals.png 8bpp 82 184 8 21 1 -19 normal -1 sprites/signals.png 8bpp 98 184 12 21 -6 -19 normal -1 sprites/signals.png 8bpp 130 184 9 23 -3 -21 normal -1 sprites/signals.png 8bpp 146 184 12 21 -1 -19 normal -1 sprites/signals.png 8bpp 178 184 11 21 -1 -19 normal -1 sprites/signals.png 8bpp 194 184 11 21 -1 -19 normal -1 sprites/signals.png 8bpp 210 184 8 23 -1 -21 normal -1 sprites/signals.png 8bpp 226 184 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 258 184 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 290 184 4 21 -1 -19 normal -1 sprites/signals.png 8bpp 306 184 4 24 -1 -22 normal -1 sprites/signals.png 8bpp 322 184 4 23 1 -21 normal -1 sprites/signals.png 8bpp 338 184 4 26 1 -24 normal -1 sprites/signals.png 8bpp 354 184 13 21 -7 -19 normal -1 sprites/signals.png 8bpp 386 184 10 21 -4 -19 normal -1 sprites/signals.png 8bpp 402 184 13 21 -1 -19 normal -1 sprites/signals.png 8bpp 434 184 10 21 -1 -19 normal -1 sprites/signals.png 8bpp 450 184 11 21 -6 -19 normal -1 sprites/signals.png 8bpp 466 184 8 23 -3 -21 normal -1 sprites/signals.png 8bpp 482 184 11 21 0 -19 normal -1 sprites/signals.png 8bpp 498 184 10 21 0 -19 normal -1 sprites/signals.png 8bpp 514 184 10 21 0 -19 normal -1 sprites/signals.png 8bpp 530 184 7 23 0 -21 normal -1 sprites/signals.png 8bpp 546 184 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 562 184 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 578 184 4 21 1 -19 normal -1 sprites/signals.png 8bpp 594 184 4 24 1 -22 normal -1 sprites/signals.png 8bpp 610 184 4 23 -1 -21 normal -1 sprites/signals.png 8bpp 626 184 4 26 -1 -24 normal -1 sprites/signals.png 8bpp 642 184 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 674 184 9 21 -4 -19 normal -1 sprites/signals.png 8bpp 690 184 12 21 0 -19 normal -1 sprites/signals.png 8bpp 722 184 9 21 0 -19 normal -1 sprites/signals.png 8bpp 738 184 11 21 -6 -19 normal -1 sprites/signals.png 8bpp 754 184 8 23 -3 -21 normal -1 sprites/signals.png 8bpp 770 184 11 21 0 -19 normal -1 sprites/signals.png 8bpp 786 184 10 21 0 -19 normal -1 sprites/signals.png 8bpp 2 232 10 21 0 -19 normal -1 sprites/signals.png 8bpp 18 232 7 23 0 -21 normal -1 sprites/signals.png 8bpp 34 232 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 50 232 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 66 232 4 21 1 -19 normal -1 sprites/signals.png 8bpp 82 232 4 24 1 -22 normal -1 sprites/signals.png 8bpp 98 232 4 23 -1 -21 normal -1 sprites/signals.png 8bpp 114 232 4 26 -1 -24 normal -1 sprites/signals.png 8bpp 130 232 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 162 232 9 21 -4 -19 normal -1 sprites/signals.png 8bpp 178 232 12 21 0 -19 normal -1 sprites/signals.png 8bpp 210 232 9 21 0 -19 normal -1 * 6 07 85 01 \70 3B F2 -1 * 6 07 86 01 \70 04 F1 -1 * 3 05 04 F0 -1 sprites/signals.png 8bpp 274 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 290 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 306 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 322 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 338 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 354 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 370 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 386 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 402 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 418 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 434 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 450 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 466 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 482 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 498 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 514 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 530 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 546 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 562 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 578 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 594 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 610 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 626 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 642 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 658 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 674 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 690 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 706 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 722 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 738 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 754 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 770 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 786 232 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 2 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 18 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 34 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 50 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 66 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 82 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 98 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 114 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 130 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 146 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 162 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 178 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 194 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 210 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 226 280 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 242 280 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 258 280 10 23 -8 -21 normal -1 sprites/signals.png 8bpp 274 280 10 23 -7 -21 normal -1 sprites/signals.png 8bpp 290 280 7 26 -5 -24 normal -1 sprites/signals.png 8bpp 306 280 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 322 280 10 23 -6 -21 normal -1 sprites/signals.png 8bpp 338 280 10 23 1 -21 normal -1 sprites/signals.png 8bpp 354 280 7 26 2 -24 normal -1 sprites/signals.png 8bpp 370 280 3 23 0 -21 normal -1 sprites/signals.png 8bpp 386 280 3 26 0 -24 normal -1 sprites/signals.png 8bpp 402 280 3 21 0 -19 normal -1 sprites/signals.png 8bpp 418 280 3 24 0 -22 normal -1 sprites/signals.png 8bpp 434 280 12 21 0 -19 normal -1 sprites/signals.png 8bpp 466 280 9 24 0 -22 normal -1 sprites/signals.png 8bpp 482 280 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 514 280 9 24 -6 -22 normal -1 sprites/signals.png 8bpp 530 280 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 562 280 11 23 -9 -21 normal -1 sprites/signals.png 8bpp 578 280 11 23 -7 -21 normal -1 sprites/signals.png 8bpp 594 280 9 26 -5 -24 normal -1 sprites/signals.png 8bpp 610 280 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 642 280 11 23 -6 -21 normal -1 sprites/signals.png 8bpp 658 280 11 23 0 -21 normal -1 sprites/signals.png 8bpp 674 280 9 26 0 -24 normal -1 sprites/signals.png 8bpp 690 280 5 23 0 -21 normal -1 sprites/signals.png 8bpp 706 280 5 26 0 -24 normal -1 sprites/signals.png 8bpp 722 280 5 21 -2 -19 normal -1 sprites/signals.png 8bpp 738 280 5 24 -2 -22 normal -1 sprites/signals.png 8bpp 754 280 13 21 -1 -19 normal -1 sprites/signals.png 8bpp 786 280 10 24 -1 -22 normal -1 sprites/signals.png 8bpp 2 328 13 21 -9 -19 normal -1 sprites/signals.png 8bpp 34 328 10 24 -6 -22 normal -1 sprites/signals.png 8bpp 50 328 11 21 -8 -19 normal -1 sprites/signals.png 8bpp 66 328 10 23 -8 -21 normal -1 sprites/signals.png 8bpp 82 328 10 23 -7 -21 normal -1 sprites/signals.png 8bpp 98 328 8 26 -5 -24 normal -1 sprites/signals.png 8bpp 114 328 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 130 328 10 23 -6 -21 normal -1 sprites/signals.png 8bpp 146 328 10 23 1 -21 normal -1 sprites/signals.png 8bpp 162 328 8 26 1 -24 normal -1 sprites/signals.png 8bpp 178 328 5 23 0 -21 normal -1 sprites/signals.png 8bpp 194 328 5 26 0 -24 normal -1 sprites/signals.png 8bpp 210 328 5 21 -2 -19 normal -1 sprites/signals.png 8bpp 226 328 5 24 -2 -22 normal -1 sprites/signals.png 8bpp 242 328 12 21 0 -19 normal -1 sprites/signals.png 8bpp 274 328 9 24 0 -22 normal -1 sprites/signals.png 8bpp 290 328 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 322 328 9 24 -6 -22 normal -1 sprites/signals.png 8bpp 338 328 11 21 -8 -19 normal -1 sprites/signals.png 8bpp 354 328 10 23 -8 -21 normal -1 sprites/signals.png 8bpp 370 328 10 23 -7 -21 normal -1 sprites/signals.png 8bpp 386 328 8 26 -5 -24 normal -1 sprites/signals.png 8bpp 402 328 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 418 328 10 23 -6 -21 normal -1 sprites/signals.png 8bpp 434 328 10 23 1 -21 normal -1 sprites/signals.png 8bpp 450 328 8 26 1 -24 normal -1 sprites/signals.png 8bpp 466 328 5 23 0 -21 normal -1 sprites/signals.png 8bpp 482 328 5 26 0 -24 normal -1 sprites/signals.png 8bpp 498 328 5 21 -2 -19 normal -1 sprites/signals.png 8bpp 514 328 5 24 -2 -22 normal -1 sprites/signals.png 8bpp 530 328 12 21 0 -19 normal -1 sprites/signals.png 8bpp 562 328 9 24 0 -22 normal -1 sprites/signals.png 8bpp 578 328 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 610 328 9 24 -6 -22 normal -1 sprites/signals.png 8bpp 626 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 642 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 658 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 674 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 690 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 706 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 722 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 738 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 754 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 770 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 786 328 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 2 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 18 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 34 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 50 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 66 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 82 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 98 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 114 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 130 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 146 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 162 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 178 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 194 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 210 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 226 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 242 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 258 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 274 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 290 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 306 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 322 376 6 19 -2 -17 normal -1 sprites/signals.png 8bpp 338 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 354 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 370 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 386 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 402 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 418 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 434 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 450 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 466 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 482 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 498 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 514 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 530 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 546 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 562 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 578 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 594 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 610 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 626 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 642 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 658 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 674 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 690 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 706 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 722 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 738 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 754 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 770 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 786 376 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 2 408 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 18 408 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 34 408 6 21 -2 -19 normal -1 sprites/signals.png 8bpp 50 408 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 66 408 10 23 -8 -21 normal -1 sprites/signals.png 8bpp 82 408 10 23 -7 -21 normal -1 sprites/signals.png 8bpp 98 408 7 26 -5 -24 normal -1 sprites/signals.png 8bpp 114 408 10 21 -7 -19 normal -1 sprites/signals.png 8bpp 130 408 10 23 -6 -21 normal -1 sprites/signals.png 8bpp 146 408 10 23 1 -21 normal -1 sprites/signals.png 8bpp 162 408 7 26 2 -24 normal -1 sprites/signals.png 8bpp 178 408 3 23 0 -21 normal -1 sprites/signals.png 8bpp 194 408 3 26 0 -24 normal -1 sprites/signals.png 8bpp 210 408 3 21 0 -19 normal -1 sprites/signals.png 8bpp 226 408 3 24 0 -22 normal -1 sprites/signals.png 8bpp 242 408 12 21 0 -19 normal -1 sprites/signals.png 8bpp 274 408 9 24 0 -22 normal -1 sprites/signals.png 8bpp 290 408 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 322 408 9 24 -6 -22 normal -1 sprites/signals.png 8bpp 338 408 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 370 408 11 23 -9 -21 normal -1 sprites/signals.png 8bpp 386 408 11 23 -7 -21 normal -1 sprites/signals.png 8bpp 402 408 9 26 -5 -24 normal -1 sprites/signals.png 8bpp 418 408 12 21 -7 -19 normal -1 sprites/signals.png 8bpp 450 408 11 23 -6 -21 normal -1 sprites/signals.png 8bpp 466 408 11 23 0 -21 normal -1 sprites/signals.png 8bpp 482 408 9 26 0 -24 normal -1 sprites/signals.png 8bpp 498 408 5 23 -1 -21 normal -1 sprites/signals.png 8bpp 514 408 5 26 -1 -24 normal -1 sprites/signals.png 8bpp 530 408 5 21 -1 -19 normal -1 sprites/signals.png 8bpp 546 408 5 24 -1 -22 normal -1 sprites/signals.png 8bpp 562 408 13 21 -1 -19 normal -1 sprites/signals.png 8bpp 594 408 10 24 -1 -22 normal -1 sprites/signals.png 8bpp 610 408 13 21 -9 -19 normal -1 sprites/signals.png 8bpp 642 408 10 24 -6 -22 normal -1 sprites/signals.png 8bpp 658 408 11 21 -8 -19 normal -1 sprites/signals.png 8bpp 674 408 10 23 -8 -21 normal -1 sprites/signals.png 8bpp 690 408 10 23 -7 -21 normal -1 sprites/signals.png 8bpp 706 408 8 26 -5 -24 normal -1 sprites/signals.png 8bpp 722 408 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 738 408 10 23 -6 -21 normal -1 sprites/signals.png 8bpp 754 408 10 23 1 -21 normal -1 sprites/signals.png 8bpp 770 408 8 26 1 -24 normal -1 sprites/signals.png 8bpp 786 408 5 23 0 -21 normal -1 sprites/signals.png 8bpp 2 456 5 26 0 -24 normal -1 sprites/signals.png 8bpp 18 456 5 21 -2 -19 normal -1 sprites/signals.png 8bpp 34 456 5 24 -2 -22 normal -1 sprites/signals.png 8bpp 50 456 12 21 0 -19 normal -1 sprites/signals.png 8bpp 82 456 9 24 0 -22 normal -1 sprites/signals.png 8bpp 98 456 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 130 456 9 24 -6 -22 normal -1 sprites/signals.png 8bpp 146 456 11 21 -8 -19 normal -1 sprites/signals.png 8bpp 162 456 10 23 -8 -21 normal -1 sprites/signals.png 8bpp 178 456 10 23 -7 -21 normal -1 sprites/signals.png 8bpp 194 456 8 26 -5 -24 normal -1 sprites/signals.png 8bpp 210 456 11 21 -7 -19 normal -1 sprites/signals.png 8bpp 226 456 10 23 -6 -21 normal -1 sprites/signals.png 8bpp 242 456 10 23 1 -21 normal -1 sprites/signals.png 8bpp 258 456 8 26 1 -24 normal -1 sprites/signals.png 8bpp 274 456 5 23 0 -21 normal -1 sprites/signals.png 8bpp 290 456 5 26 0 -24 normal -1 sprites/signals.png 8bpp 306 456 5 21 -2 -19 normal -1 sprites/signals.png 8bpp 322 456 5 24 -2 -22 normal -1 sprites/signals.png 8bpp 338 456 12 21 0 -19 normal -1 sprites/signals.png 8bpp 370 456 9 24 0 -22 normal -1 sprites/signals.png 8bpp 386 456 12 21 -9 -19 normal -1 sprites/signals.png 8bpp 418 456 9 24 -6 -22 normal openttd-1.3.3/media/extra_grf/oneway.png0000644000000000000000000000230612246102547016745 0ustar rootrootPNG  IHDR FsRGBPLTE 000@@@PPPdddttt4X|EF v^QԂJbqw( bȶJA{J[=݃:@SAAbؙ ydi4zAAvA ]Aq#{ s#P1Ժ7RR*b5e"L!bp+}Qѥ "kgO'?^woN~ @ǾOSpS~ "D. // -1 * 0 0C "Airport previews" -1 * 0 05 16 09 -1 sprites/airport_preview.png 8bpp 50 8 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 290 8 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 530 8 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 2 168 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 242 168 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 482 168 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 2 328 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 242 328 230 140 0 0 normal -1 sprites/airport_preview.png 8bpp 482 328 230 140 0 0 normal openttd-1.3.3/media/extra_grf/canals.png0000644000000000000000000001413412246102547016706 0ustar rootrootPNG  IHDRJU[sRGBPLTE 000@@@PPPdddttt4QYo%T#J±u~&վ3ЗM t(V펤Ad1;}P7xu*Cf. T N!S 'E\VF \6v'YN 6XY͞o?ެ2vdbw$Jc Ƭ f) ^zwI<`26.2fQh8X , p4TJ0! *d7wz\6Wf5o??MϷMjߨ K}jnIʘiޗ`.LMb!y8$7 @lW4MP!JfB]]u=֧߬ =|΁ahM vV0㥮K5VD^\ q:Op#HF=4dL:ZYbzJo4&o,SyLOuLj6Znז17qp]?&˾c:Q2&eeڂ3Uۂz&qxٗeҵ>0 >~: exv7>Wm.6ʑٷ ^gWf_oGI^9Wtȋex7jm85'n& {~ÞٻɱZ7Ma+ܸ&>?DZJyVx]>93\qG2s6fy&aceaS܊(a$ 6&(ǫeCzЧh-_Gn26Q4=4lLjMq+=;Ȇj|5bix(nͣew>`b6acX[o[qh\iV!' VrOgX±P'm)H[J-iKDRڢ 㫭-q|x/wx4{|[,ϟ=q|9>QY۠k-nn/^[TVzmY|W2ku}mWEW,V]_KRl([+M>Zx9>UR,Z, Ϩl4@[Swx4? J(r|Gi Pi!T/XEaQ6W:<㓑/䇠4z9>#P61'j|^1?++݊ѵr|Gguu}Y,[K^Q[{,exF[[Udt|v0bwG s^ JL]p|ޣq ?}JX=TחslsVQǷXD笔2'R;O)VQ'gq8>noj`$?\8{nlV9(qD'_zjoTps|2T>o5:ǧ+YIҘG1kycW-'MR-WLJkr|Wm8*m1GR\]y7Oy?ǷX$3PEGq|G ؤs| Z 2'[9#s|ȘHu]qNYp|x8>m|bEvA)?覙>>Gas|uK_Tq|ʘ<SL߇T}|Ɍ>~_m}{hؘ@kaqWפk/.^6~ذ89\]2& 'H"܊3q3dұщǯW6Wghr|\CƤso[qBY%&(ߜ\~:Wc?ܷIcV{p8>IoKǫar|rBeir||mCƤ3Vڃk9Lzq}#DZw

N6&LMv1ϼs X/1N6<&\[9>[@[p|,q|^B[9lYyMz+m|BgX±P#m)H[J-iKDRڢ 㫭-q|xǷ&!E=٘2#!aFewѸ=K_'_3+ǷWXo%OO~.q|]p|uo`x~Jp|{WaoTޏ?xK{Va3so_w<#/6DO"*XM9l\q> !W2@ݽ?^%^i_):ʳq'O1g1FP7War| m cҘ++j*_iےˍI f$7p|l`Ar|&6&x9v7&o8>lLZ^ ϼ1鍵U>i[3Ik=}lyMz mxn!5魴>ΰ>cDR"m)-%ҖiKi.#Eߚ8E=CqKr|'4 wuyu)_ݻu34z$^qw.q|q|m{.// ;1v[9Wgc8n9M({x}j/s5xgcywc9z`r|Wot{ *;Leg'ݞ9>d҅{ }fmjhdžBso(3LL]` ^8>ۚgXHLbLy G^lx0ȁ;瓹+tT_v֫+ ϵhw*+ƕgϱ㳘t|kW=$ 'Ic@8>IoKǫ!r|l8abA3#sfx='39+<ނӤ7?SLJIK믧3oyLzcmx\!Ǟ>6&U=>O}k.q|p|UsrߛrYXo_K__em]ĚdӦMϷ߀R-ߛz,;Ϸ=p|oKyW/ؽg5_L ~_]>bC&]xO]0MuL?|3zPqQDO0~ 5жgXW0~b72dȋ N9l\q>{^8IG YyagJ>~d>p|ٸ97q|n/YWa~_ms|fjstYMzX>^ߛߘӓ`cf$7p|l`As|As|ژ94 E>~lacҒBx8>IoVm_ou.^gq|c3k[h+=е5b_z"M֨-жl"#W/MW81eѸy^9T^Kf984,7^%Os[>8۳߂>e.R+"cWm Rr^9>z[}|l[x{Leg@s|X9Ǘ^ W}|5;.(8g^9>ä>%8 >~;{..NOjau_LSƲxņ}|uH&d/_ɤ^I8|Z{r| 7Ҵ1LJMwŤcZ >^]?`~p[O\7]q|V(WXj3#sfx=']cϧl H.8>Io-[f#'r|X[9>Ә^oyMz mxxǗR_H[J-%ҖDR"m)}uݨq(IENDB`openttd-1.3.3/media/extra_grf/canals.nfo0000644000000000000000000002304412246102547016704 0ustar rootroot// // $Id: canals.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Canal graphics by George / PaulC" -1 * 3 05 08 41 // Canal slopes -1 sprites/canal_locks.png 8bpp 66 8 64 23 -31 0 normal -1 sprites/canal_locks.png 8bpp 146 8 64 39 -31 -8 normal -1 sprites/canal_locks.png 8bpp 226 8 64 23 -31 0 normal -1 sprites/canal_locks.png 8bpp 306 8 64 39 -31 -8 normal // Lock sides -1 sprites/canal_locks.png 8bpp 386 8 40 26 -7 -12 normal -1 sprites/canal_locks.png 8bpp 434 8 42 33 -31 -13 normal -1 sprites/canal_locks.png 8bpp 482 8 40 25 -31 -12 normal -1 sprites/canal_locks.png 8bpp 530 8 42 34 -9 -14 normal -1 sprites/canal_locks.png 8bpp 578 8 32 27 -1 -17 normal -1 sprites/canal_locks.png 8bpp 626 8 32 35 -29 -17 normal -1 sprites/canal_locks.png 8bpp 674 8 32 27 -29 -17 normal -1 sprites/canal_locks.png 8bpp 722 8 32 35 -1 -17 normal -1 sprites/canal_locks.png 8bpp 2 72 40 44 -7 -24 normal -1 sprites/canal_locks.png 8bpp 50 72 42 33 -31 -13 normal -1 sprites/canal_locks.png 8bpp 98 72 40 32 -31 -12 normal -1 sprites/canal_locks.png 8bpp 146 72 41 31 -8 -12 normal -1 sprites/canal_locks.png 8bpp 194 72 34 32 -1 -13 normal -1 sprites/canal_locks.png 8bpp 242 72 38 34 -35 -17 normal -1 sprites/canal_locks.png 8bpp 290 72 34 44 -29 -26 normal -1 sprites/canal_locks.png 8bpp 338 72 38 34 -1 -17 normal -1 sprites/canal_locks.png 8bpp 386 72 42 24 -9 -4 normal -1 sprites/canal_locks.png 8bpp 434 72 43 24 -31 -4 normal -1 sprites/canal_locks.png 8bpp 482 72 53 24 -31 -4 normal -1 sprites/canal_locks.png 8bpp 546 72 43 37 -10 -16 normal -1 sprites/canal_locks.png 8bpp 594 72 38 26 -1 -9 normal -1 sprites/canal_locks.png 8bpp 642 72 34 37 -29 -18 normal -1 sprites/canal_locks.png 8bpp 690 72 38 26 -35 -9 normal -1 sprites/canal_locks.png 8bpp 738 72 32 23 -1 -5 normal -1 sprites/canal_locks.png 8bpp 2 136 40 26 -7 -12 normal -1 sprites/canal_locks.png 8bpp 50 136 42 33 -31 -13 normal -1 sprites/canal_locks.png 8bpp 98 136 40 25 -31 -12 normal -1 sprites/canal_locks.png 8bpp 146 136 42 34 -9 -14 normal -1 sprites/canal_locks.png 8bpp 194 136 32 27 -1 -17 normal -1 sprites/canal_locks.png 8bpp 242 136 32 35 -29 -17 normal -1 sprites/canal_locks.png 8bpp 290 136 32 27 -29 -17 normal -1 sprites/canal_locks.png 8bpp 338 136 32 35 -1 -17 normal -1 sprites/canal_locks.png 8bpp 386 136 40 32 -7 -12 normal -1 sprites/canal_locks.png 8bpp 434 136 42 33 -31 -13 normal -1 sprites/canal_locks.png 8bpp 482 136 40 32 -31 -12 normal -1 sprites/canal_locks.png 8bpp 530 136 41 31 -8 -12 normal -1 sprites/canal_locks.png 8bpp 578 136 34 32 -1 -13 normal -1 sprites/canal_locks.png 8bpp 626 136 38 34 -35 -17 normal -1 sprites/canal_locks.png 8bpp 674 136 34 32 -29 -14 normal -1 sprites/canal_locks.png 8bpp 722 136 38 34 -1 -17 normal -1 sprites/canal_locks.png 8bpp 2 184 42 24 -9 -4 normal -1 sprites/canal_locks.png 8bpp 50 184 43 24 -31 -4 normal -1 sprites/canal_locks.png 8bpp 98 184 53 24 -31 -4 normal -1 sprites/canal_locks.png 8bpp 162 184 43 25 -10 -4 normal -1 sprites/canal_locks.png 8bpp 210 184 38 26 -1 -9 normal -1 sprites/canal_locks.png 8bpp 258 184 34 25 -29 -6 normal -1 sprites/canal_locks.png 8bpp 306 184 38 26 -35 -9 normal -1 sprites/canal_locks.png 8bpp 354 184 32 23 -1 -5 normal // Canal edges (temperate) -1 sprites/canals.png 8bpp 30 10 45 22 -11 -1 normal -1 sprites/canals.png 8bpp 94 10 41 21 -8 10 normal -1 sprites/canals.png 8bpp 142 10 42 21 -31 10 normal -1 sprites/canals.png 8bpp 190 10 43 22 -31 -1 normal -1 sprites/canals.png 8bpp 238 10 22 22 11 4 normal -1 sprites/canals.png 8bpp 270 10 24 16 -11 15 normal -1 sprites/canals.png 8bpp 302 10 23 23 -31 4 normal -1 sprites/canals.png 8bpp 334 10 24 18 -11 -1 normal -1 sprites/canals.png 8bpp 366 10 12 11 21 10 normal -1 sprites/canals.png 8bpp 398 10 19 10 -8 21 normal -1 sprites/canals.png 8bpp 430 10 11 10 -31 10 normal -1 sprites/canals.png 8bpp 446 10 24 16 -11 -6 normal // Canal icon -1 sprites/canal_locks.png 8bpp 50 232 20 20 0 0 normal // Differentiation for the climates starts here // Canal edges (arctic snowy) -1 * 4 01 05 01 \b12 -1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal -1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal -1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal -1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal -1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal -1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal -1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal -1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal -1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal -1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal -1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal -1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal -1 * 7 02 05 10 01 00 00 00 // Canal edges (arctic normal) -1 * 4 01 05 01 \b12 -1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal -1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal -1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal -1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal -1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal -1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal -1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal -1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal -1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal -1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal -1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal -1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal -1 * 7 02 05 11 01 00 00 00 // Choose the right arctic canal edges -1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00 -1 * 6 07 83 01 \7! 01 01 -1 * 7 03 05 01 02 00 12 00 // Canal edges (tropic desert) -1 * 4 01 05 01 \b12 -1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal -1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal -1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal -1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal -1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal -1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal -1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal -1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal -1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal -1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal -1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal -1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal -1 * 7 02 05 13 01 00 00 00 // Canal edges (tropic rainforest) -1 * 4 01 05 01 \b12 -1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal -1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal -1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal -1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal -1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal -1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal -1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal -1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal -1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal -1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal -1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal -1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal -1 * 7 02 05 14 01 00 00 00 // Choose the right tropic canal edges -1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00 -1 * 6 07 83 01 \7! 02 01 -1 * 7 03 05 01 02 00 15 00 // Canal edges (toyland) -1 * 4 01 05 01 \b12 -1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal -1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal -1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal -1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal -1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal -1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal -1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal -1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal -1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal -1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal -1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal -1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal -1 * 7 02 05 16 01 00 00 00 -1 * 6 07 83 01 \7! 03 01 -1 * 7 03 05 01 02 00 16 00 openttd-1.3.3/media/extra_grf/openttdgui.png0000644000000000000000000006107612246102547017636 0ustar rootrootPNG  IHDR njsRGBPLTE 000@@@PPPdddttt4+%+NI[$K^}VJ"(nH#YB>B/#"+umAe#lPoDb!NO@ #ᒷoJȑbĈ#G cLiV_4zn߲>c6aVVV2_`@W}=+\חB2q}liqV`)TPҸe$zn_zoN `:ԗcǎ-+ A[h5pZ]c8Z#/;gLF$+$K \EN֫tV"M,;珵]VxSI.% DSfFf 07KR_.#YS"OWZڗ-'iܬb}xh)9'J7ouY]껔HS} < J$@*ݬՈh_c9AXfA4R"O >4o5"˹+')ܬhzoI܏fFNLNccS@K2T=qҬՈT.0UQn֒VH?[}?H~T퓻YKv&y >LܫyXI~YK~4m2'qN+v-\/DXE}Y=q=m+(]>,A,MܤINpXY^cb2YfwFОLgx,Ƀ,*WdYI+BEem>5t2 Tk/p?KUW"0 ;ZuR':HTI;u ye5 [ͻղ G}-.p<7 2뤛&o3+O"jw?B\~k~3t;n z`l;u`wTQ; ڹXRÈ>]}c$)'}|g/pj҄krݥOZ8&@Z$T<5d>X_Lp 8}m2 Q0GHZsHosb*x028;2@bO.Ɋ}´2`7J6OcՓ)o{~6o_LI' CTc)!bWB7$~JeR؏O#%f<ꔟMs N ɓ FN Y7ѳt FN [i#dʮ< FN FN Ur01bbĈĈ##F F@11b1bbĈĈ##F F@11b1bbĈĈoξd>?'dq&y9iXپzoHbkKR_б\׿x҄XMGIËS=鿿wuGotxFCD -ai>}}=q .Vq Yɑ5?9_V㰢Ծ'k?SҧY_U/vB+[_ޜTa@*|r0n_mdb12b3bĈڿ?7&x#QO $$ ^?Y{J}k-_ U,oҾtuE?~sUէ- =F@}m^QYJ Q{E@~X/~nH<0Z> ۢ%'?y[&OWWq[׮fr4 w܀_~ /RBo-B>7 u'ς ׮wIJBxaW7.dx|Nu^\[, /pq[ -ܤ}U*nXM)Xc$;kח1i|EYז ɈڳYm`AVO :{my;  ȇ XK~kD׫^ t5T>w ҋuu = %@ zOWW-(KHBP:*v+Wի2.op*zmGґWTҮﵾ$-QԣRY@\j^{~ř8[& T֧2 7K1# sOLK*tsE}ڼP (Է쀰_UY:@灈ԧu^ysJzmby 4ZuHnGCau@XO]I7x}"Y}[%Q)lqa4wilTo%jHnyHG@JJvvwʓYo ?<2@dӫif Հ\dIghvJQܲR) XS[HI պ΀0V=Ľ @֭lyz|p \,dVwT7%7 zĂ Rc#^jeݣ 7LdWOA\~|h)Av{U4O.w^ ^kaAʖ/W^^^ H җƠW7X:oK>Gjc@.ȸi}K-Lgi+)/u&z xq};^ >^JvXVgd۾^YWWԊ1>6A\ϒZ@~ |<@@V_^;wׯ ^Z(nFvr ~@p{g]]cs@8Ty<|&W<BsRe@J- p?pA2x}|B0ɷ]Bs{{Ҹk{_EDtuF1uP+' ׿~&$su ' p\b{ WQsH>{{_^^ۺ~DlDN4 c2A>eW.xA2wqm2^)XRПyxWԶ]q?L"6ѷ WU (.VA|K1ƺױm "{H#@% c@B77"J??ZAẙѦj Ϲ6)"6z9>(_kT!@#H;@+Ee BY%dn屢sץ u] b DA#>7A$xlc38K9@ YLyO p8L=1p|G4 y*@ڷuieCai̧}e{ q4i!c;FKN!  HZ j+ +Rt KD;BBbD^d0X DPo4kZ:^BRظ%]5`3W ɱ QT#} q2,~>~]?d^Ko]0ږֵ7q-f@#,/,(5nH|i+ܢKz ho1ޫcpF_ ' ' EG )=볬b+\~sRt 6go^Th4Fd|k(zr,Нڥs"$$F<tS*+\ ɹ+q.a>f*'Z$Y=>&v +F$AX'?R}Ksj@ .aB}qPRRx9'֥t<l"M YVjE2\? )*\~oi]pU.a>!2ث 8dOk?@hN?P0@K.i7t5I@A?[@d(<nS^?WL] %T~th~at^,\ ]).e# JH (8Vz$],зy]pu 9 `EUO.mOX;t^J^v7(7-Hq){%DCbV'+g={2m5 :sp$ E@XuۋCXJHq){Dlm!+8ogY2-2Xu_U1Ib­чMqRNz{d>-4|OKo{\n ]ʹI[X#0Vyν}A2U妥 X(c{A$ӫm|ވRrYsN.\8q=9nX!=?Ptmuhoc@,' VӌqalvEaΝbk3PCt">MKio5[G|\vd9N2 Ctzrmky~)gѳͮ!MwcQ"妥۴eky~t)e _R+FkHŢAzUOKGQK7oڷ>_\slhaV+ 2ܻ頳X˘)(C{ #Ak.Dž 5Z-cڶw(vYo$s_UvQB@*u5-S{ O `;_sEX=u}Ky  qml=A+}Cj+@2-}Ľ1 xb,ނ F@0-m1|ii %69@NȴrB F2-m1bbĈĈ##F F@11b1bĈĈ##F F@YZ@KkBo.VSa>njHE}oOR?}`d5 W=hIrU'I() G"~+dv=Hji:"HSڣ~/P2U!-?!oO#z'inAYFG$uFgD44xU9+tk)s5ԎAz: T ]n]la>&6XF@i h40 =K~ d}zWF'HOp3I5n޴>os] KgccssSeqyƀ4??UG {$=?RA\=_YKNpCM? 'a}g?׵C/d'ؘL\Τ4G TȹTC= v=s)"Ζ* }w H!M/2NQR9>>=w.g@1 یtԪ/?6̇FC Pt)"1PA\ET+ƥܐhV$o矍s@SdOa ;c/.g+Miq~-H IAX2T"RӂDCR2x  + eT%6$E+"U{z8Ӌ^Хd:΢lҩXP7hLf+V# FKXd\AՇ1:aM¦[h2f#׶?-6\,?ꢗ|H5 !yƱ<\ϝqVz }+Q~AtEY܊we*dw6\BS6qa' y+/Vk2|r%Zɖ܊ yKj$c0ErGtčgs#((!t\~ ўXΊK,)HYYp?tO[uJg'| < G' IOPښNr&ghA4 ">kKfEA,1;QpDĄ&2GPLg _"$[@TU_|R_/[< m_V鶲 _$G}ST8/t;?6.4ahAD[3DdE6 ED1N0x1@)q$ѐQ_䜕  Xcu$ :L(R`3fy%cmm}?Hs$<(`lZ~HI:J!d½̲Fc9~`c:k{66'S̋N@J¡󲼂,@CK8[zwAAh7dz(AD9"Y@,sBt!"2~&%rj@| Iy4x.ɭ#!Ru IDAT2h}> ^ضX=GD H$Pi" "𜢂p=2ϱ?s7xXu/ϯzeE{ْ`2wm$x | l;_,ҥ?ZDVoDDR]HY}C_p.VntB @II1$,+@x;o{4:3Ȏ.~Qן9+dmm * mDWV/+dK: nADlJmvB(\,4nKY.'k>I]iA=nV ·53ZŠ( cC A<=eDR HgLQ:#1|Y9-VvVDQ$hYxJ0!g%@Z=眕mX ~s/=ǭ|rr@e8> >ހӏ6pmn@}EVnEtkˀV\F,۵ko\ڵ. eIb,u?s-Vרd`+{=C0Cⱇ A+r.:Xp<0C7A?D3\8. TGs@58#'5U"j pձ8#kIF4Xd{d4gUV9D`^VģYν À}@\(uΖ! 'q{?1ʊ,JbE9 T""58t|#@p pZ, 4Fd|k(z@y,—7b2 uwr]b, BD G+=/t_[(@O&IZ}+Um"8 È!qv!nZ,A_#"k,¯ףG@Q\ c;գ, 8c, <0籇,'c2|=cVr(G lv!`_i ڳXt<l"׻ ̚+{"uehb5s7{K}7]V'\ѭ>R@/H;"MC"{ҟu7j=#QH1r@rO5/\`5GHMS8) v[{xcҞԣ!u^AtH')U 'G~dICU|V4?׃FI[F6#Z+ 񡉾W B*Fd> ѭR HFC/ PuS}YcJ G,x?\pT Vm bĈ1bĈB9x$ŝ_)-VVVFE>r'bNϒ)U}p8&Z tչmG \ Su\BrlB =2cai{Jmc[͛?R`JYbG 8xq9;x '#8 }=r*b9$ 2 yM)7V"˲( Lil e:Ǘ=@;{{KmǷ؎u;vWvv`+2jk1/ 8j IҧrcΞCL2 h߁ 0@MXS| 4)?~eǰ# !0ѨE%W.Wa|- nG}#~JaQ Nm \>qwJ2,m콻A'4D'hw{wr"Ѱ#xH]c%@  ^A!|y.Zs>`g{??/~~ǐ$Za#-qv˵y$l=01 eN@޽y FK;To%l<ʐSz=Jܣ\btzb8!%PS71, Cd(-tF(b6:gH].1A 03տn9< 'F$ꫯU8>7/Q0t6r%ÃiylA̭GD¡܂}d)-HC ιX~@_ ‘^G24"wm BaV\'ه@]/ sq޻{y l_>.ρiPzW ik:5 Ͷf`=Y,6W,òApq 88+E,:5o3m׽]  <\aoRww^rj2̄ٻY߱AL p'1 bD4S=C)goof0؜"-YÇ+, g<AB, 8 :nNkXl8T4@A,.<8Ay{ !!:Q["˹o טUzv 68{L.2p-'͋ 3;|L-@W{Ovrнc9 Ų*=sW.kyV>_@cm'U." QH|AHBĂ0"1 2bc xSNq&=>L:[!-Q|O!gLݰnS\ߍЈ8g|~f^>x<0""+wXD]8݌$I -r8×ͼ:;\Ͷf>lAVJO?5t !RiZ?5fę/GEhC(}*[コӼw_ʨO\=C 3 ^>Qj}Y?=s_A_f-H\(3]݁@)d,9SXm8.0@h oB 5y1hzgBOs S6w&WV;q# (?Eq=~`Nnww,'2@(blcw֠;_[/o5Hz-g.E۱g[/9!Ks.p6Sҷn2A(<:@ŹɌm6XHbldJ2'Ghq@ |Ibj$Ot c8ᔎmhD8!Sq6> f#gB'+<b!8|F+^U#qwx ގЦXw=(ܹM~QGwoyt19="}싷}vźx1^j?oݾqn?zn[]tp'$]*Tj!Az8 @ĂDR@\x{ kek(Q_@]㌏K=JBc9Tӽ8ʻ ,V7oܼM8$svwv ¯]gw_yZ,.7{*ZGE ? aEhFd##ʗP\2ҭm@h- gHDB{*'H[z~8 70dG4y`#ʀF {'޼o|r?˱ ſ(>~oy=\еBXnYp@fa@^݀`K*^ʞ sWX|2WnQ-WsJ?VD* ~1-)"r@h8}I y{<1BT?ƲqozTZ?Lܠ0\f7Ly_ū{qPcj3x{ Y׻|:yG!`Nvɓ;w\w4obDb<yl]Yxy @Nj MZ7GDX8ZL#4{y F>X*yq`7SX?^(s{R ;1`̅Gy^$]^w@Fiw.ޭ;wq~Oda|sN-.q0'`| "D Cm pH6>`Eዸ?nK xv_({YԱ0"32ܸtbbwgwxǗfV0{=8Q ,ݢ48T@λa /] gˋxX*\ɻ%~k,+76 _#0,w wz?xŊg/_cR$^;Tz/֛͹P@ί ;jO9" o7ō=Ww"΄D@lᲠ ~*>O]Nl@ğaXp_Waa~1i'<YIi 8Wǻgu9kA BȳÑXō}g=܁;f9&+7 6q w#c,8 FW)l8t~ 0 (qϔ{ns/}.{]R1~2Y[…ɦ@8#3aT0΂\ wmAE<. މ;/ooAǓw. h<-O" ί ߜLbD8[[* .nĤߘ 2ĭ$xm 9n+@ ~A[د⎖0! W5Ra$]LqqŃd~Ġe=^Ji D4" OqHJ4"_?NBgIc3Vv$z;R㱓 @d*R-VL7. ԄUx~->t$W?!1V DVe;^X9D,wKu.$  H1xnBibÜwqNZM57LwUvҳdY|{_r_G@Tx]_l;u4k3̅} Ux٥"Fo1 U.n_;πTqyLv}<H|@L]>H] Fz$յ}p3 DQۨk&>Ho$#h9@H Gg1bĈĈ##F F@11b1bbĈĈ#F F@EԸ$ukO+?S~/']yi''_ S~/'E9u+MIZ.oAvyIAT%EEyڿ;?]yЯ Pm"Mj ,'wovTL] vUXӽZ@wx(<& ҍ br]! vH o<sXq+B$夺ؑIDATPW_+;+'uʉTsiNyxîOUNj]9.7XF42bĈ< Rd8}cKpdiˬpr~aqA*o^?i=1YũWӊ?si &}7hW@oٔ}}Us~}\>+`i9t 5[q|ey||*-_@666@P$  Q'{Ҙ*]?~\J~ `}$ 17"퍈E\p n^ΕO?[UN8~PsBH,HAOIHaEP7 ]>H6G:[}II]A>.0Q+ݡ\]!G#")G@&\y?[lÇ_Q>(ʻ"O*~Iue;6'Fe[Yߡ2@BE qF&o^?i=) `}'UZ8=*i?6:W0ܻ{ˀ @#VǮ 8vՀ(5'Mxp<@%A<@aWa #Uy||\r1%?>Xg2Al~28Ff +- O/xX1w, g2ly=u󫣑HEDF۳w}n<A pW. Br怤A".VbDc$':YA:Uf Z#Sʧ*|rp&QDi.h] 4j'Hl !dc[ba=7DSa^״.w I0vA{LK;9(%._B+w !I.J/oHCdYA؈HH !R9*e럢,U|4Be\wޓ(TH 6B+Az(rp TM/l-۞jwOfƒahKOk,կ Ak,/t"ԯL2ǿ[qY-!\!R9ͪ ?ʧ*OOU!t݁@na[(۟K~ #/XC!mlmo|jB *_~nPA QR .{bBϗȲˆ8ƞiXqFyII1X;wS0 3$8WXnA%LKU>X#!ɪ '=J)n2SUR6 Jd`&|[B/)ڟ"Ӭ),H* 0$\T)y-N*I ޭ|Z,d߱r85 =.cଙ8$*ٞ#DS>xߩdfӀ)V mkHb39_iXP S O|I?'%@^ lj]"ˇtkW*#ΈA1dd= t0D}F.iRŔ-H [bOYSHR"%D]\DTOkKE>'SdrgTp-]:@ t jYG H‡ڎ` ro @&X6˴HZ!R@IC<u*b%|ʧ-.Mb "EfY.+b{hcL$KLo߾ ,կn7( q+)% H4x˶$j$s$*B=F`26] QQ^% y!jq[ng HBN{)(|M|G@f&:@b;5`UZctYRlzW$һw0沈 =ן~|luJ&Ymz<ۢ#ʈe{}?~($?&51)YHCױCllnSc CL G@-,_8=c C X7PTaAyC?N6(`Pbxb!OY޽s=% |Y::Wilk{sM %OcU >ϷfI#959Y, ދD3΂b `Y,jasBDT=ECb?ޚm!c-@ F aGNԀ"KL1eo y0A@0%09"@aY%o4B뺶1y_{E@ %Lzg#E Moz@`#LpL@@ Ѐ3du1 -6Dk`{mӀc2L:2at-<D9/@=PS˵;DB`GJ BJ0Y< rw]&6%<l3t(5K)}o1r<(޶=Qć'o59E`wPU}Wf1bbĈĈ#F F@11b1bd9R㒔#b\^ݿN'Ŋ@ZСٓ+']?FTk+`vW}_GDaBi]$ь#awX1Vpq~ ʄ̻ND_N*ʻ桚%PӜ@MB2VP?ќ:kЌkLz?\:WvE#}r+ˉe5:`Zו)'rR]P_N:kU]bDWN*O*wئgf117Iyv1 g^_1՗cWT<~?9Ke|~G7Dh|Mzs}^yw3n5￴Z<)JSӈU9ؠX.c*SL9('mQyCύq5֕rҦx[e@пM Dl*R@oJbqq'O䀼 V+[>eS L:NB .~@jHE!E9eCdW+'W_-~Wo ؎ˠُc@lZ:7?Wۤ6 v[A|!!Yy 6*߾f"ڗ$PeIuŒ" ,D@ "+G辪0gc<rҵ+I_ o`p<],.o}xD1U,*E xѠO>|͖GCj@߳$J<: q .^` DZS,0Ir+']Wvo"cE Gޮ X~&— XCW\, /8^Ś[hHH++Pƀ` D2K !L2KTFdMɩuq9Dpb\]K-'+`;P c߾QAn{?fS@L7gy*HQʀЋO&Os^("':HO4^V0zIT- BU܈%Ӥ `"(Buz__]/)yH|{ߖb*ǽ=nCfq ao/n؞WyBd3֬4ob4EAH>KA $Pا<*ߌU~<SEf\?($Mo dy~'Z9V/OWtM =& ZV4o.gˈˀˆ^Rr =e/˿P_/n2˒|=0lG2K͏>Ù v#@~; ),8SR\pcD?w][AH=@ ZRpАwGO>ֳUe A B|e'}Wh=ٹWI] JαP=>k  XR)s|(b1R6{;FE[x}I2U|y,^j@6˕hOj9EcˆwWX,!i^wl#b=o#@| 4YϤNe{ @,>19 R&?{d=o-@FqR!. p$˹@N ry\ZOt`+#Yr ռ}a_X?8HC@a JKMpܓWs> F.2 UZhsU&l8^pcڝ@4$& H@(M8D F̂ B01岹Gu G9B Fj)P;42<_ ~ H֙(U!ŧ\3 I%8  f^!IߦA-X F,H)Re1=L{z:jof M95+\ ][a9.ࣤ@d.ڂ:Ǡϗ.ff>s4,1 9@/k b ]j!hy)6+,u2[[[[NvkȇӼ&H?Ӽ2t@r;'L"@魪Yc!i\>/1HW@LtRW#FU&݈f-##F F11b1bbĈĈ##F F@11bpƍzIENDB`openttd-1.3.3/media/extra_grf/rivers/0000755000000000000000000000000012246102757016251 5ustar rootrootopenttd-1.3.3/media/extra_grf/rivers/tropic_forest.png0000644000000000000000000003546512246102547021653 0ustar rootrootPNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt4dw8O>靎8HS/d%F+ OW?4S^)?., ̵㏤v}L_p/rNJ0c 3 ?M?qQ2QmL/iBquι(3@ie5򏯟)_ؖXw64K16Y QՀ8D86FJ/qPQ,#b3>/v $w2_aw} qM@(WCL@yt6bfNK@td6b:n(3F>owzct@N5|Ti? ˳S ,N~6@jxteF@}O\?N~V@vcS5,H%@d Y2 $Kd@Hկoߞ4{NO+fg#!Zꝴs 3xy1Ƕ~hIA ܱ:G }-q^Ƕy˷/[ݾlK=khYhll۹xa]VnPsf2p9߯^"̢Y@wmɜ{oML ff4%3Xr0-f6 候@]af6 Ā8ЏY.ܾyWb]NZH믯^ |4r  u>;^>|QxO@"  fڢ))ކ " @]M~M#倈hMnmx..7Y/{ >Zjl :0z>I~63 *E6Q @|^] ajKGk| z6,Y1q|G>9s?'I I@Z Osh5MZhm)ooaf1Y!7|{Ee& s{_>nIX<-|4eؙc@ fo_2Ϯ,~{^8{ۯ $VB03̰ư1?kC;Y{_M fyq7eQ/b(ߵm@ļ_2e_z}N4‡`#>YFDmЁ]S%X 3#NoM }V4V>,oϟa'xAϪm`(qoۏz K4pjK\Z[ۼzvK Y{mY{b6o-ڒ@LVECo\%ɒd Y2 $Kd@2,H ?5mf4oۙ<}𞒓)nQk-*3?k11ZzwE%l+bf=[߶ֶWO0Dl#oD-c9.(0Mif;A܌k۔m kjH o@ A' 3!k [8LkY Z-" )qr}5oˈ`v }q\nSDs?H`m{X>-@ `"6Ew1m( X(WDpkgo,ֶ[`3-Y@x )[33?͵R3, ?i_瓥hk= f?~sp ID3`،I^^k 68 :xh_*}|ō|˂ɺ mMZ} }MS Xk(}.c5g6fEKAkf7DLOokܷ?$_xwUlwoѾR`HS5~rHaqɉk1R'˴IԺޚc@3^>,Uk@>@z-m3> b3ӖR=J8`)yE|sW71&M[Q48؝8-aP~R{FDy^ ㈻ŋE_lάof0é@n}^rpzj"`1ߟY\`Nv@z_F 7Η_G#u K75i/=@n}[;pG˷10 [ `1M8nbi&$#u}mw_2tJB1H}F@&^1.LHLGMm(l% vqy{|߆-n9o{fxSamdQ0ێ=:4zΕޛaл:t, @kJ_lrfk羿i!n)8]>a08\p`̬s)ksWW-Ӟi֗"IUsv9ams-X=69 Zmf?-MN?%7qN`X\={24F.)l>> |4u_`@W ~g$\n᥯^"qbCն\brz/8o6S__~M_nGI9ܫc{3,V5\_6u to_3}ZꩇV]nR%RרzKb.ո-h| Y$xAo_Iu ^}q\դ(Mu]Ud-"W\ HT{\_X 6+5e{WE,nI 1f-LmM>Po_sϪ"jEۗ^ XEյ5bU4M'հ g: +kVM7V%^ y*T%"w"q%r6Ս& YTئއ ‹bרD5)P^[eY(Axaݩj58B*J Q䪹0+֪I3_YP}o()?޽s>ĕו$ Kd/BYvCX[iu_D+jB/6wQX!rjQI[RW%;06yWjxb{ݛ"jSMCZTCr5O4NRcd4˲,x=[Q5D+RRTMd@ۋP^VZD?V5$MEC"^V f,Z5$.!|*V9|.%S*,*lo!RElnoM5Z2\C'[7bMfc`o9TnipucR +jPD58$PTsH-ج: %箾*1dU)eB0r@ רZ=5#uTTHF}|PVbMIIrŮYuMj\4FV:h%OĹZup=@N sdj;ȽyoU4;{" C$ ݠc]=9j*3+@ IU')9ua'Q,H $ɒd Y2 $Kd@d UpMc鞂6n 6>(*. )IWL"YErtx߹a j}<{Hz e[M33TȔ?JcMUcHd&>-*<7kj߹a4(JzulE'r,XH2ZaX5G9*\5WY4m; i %f5$ׁEv$H>,T5xz7E0p UQ ]cbM&WE*꽾5SDS ={FWWw`=_!nb*D 9':_ Ӧ?7X2) :ř )Hq("Ul^ĠϬ1R鮅8}On= m҇V& V#]wJ.ޝh~c! RMR %RԴN3>dM"&s_~){IDULkdoQ Q>\/eYSێwMa@?{;!@ACFEn:-#@TiUHI[L5^bT%J\-p&W8E0S7<HX 6dCbz|zD֪.'k HnRJ/.Lj@vfKԬZPXisp\"4gV?+i?>WއFhVLN~Lޚ⏳˹E0d')-Xr+ŋمI׹UW~8$DF&V)ө>Ab%u89Tv?~pYI7>ɨ|Tq@k԰FFǽ"*uDkqY#ޗ&vsfnBڍUdoz?8뼽_A4O\I3UZHI"uOn,ZI?rv )d`T&i9S!b4aJ>\aFI5lHbϞN٠B-tYIT ӗO'#dOQ4B+3.ÿ (#yɽ o/a#5 4 f,YlŒz9*3 1|xof!`z_eu[_IN'4:~}@H2x_l͠fFߓ'@&43A  Ew9_x >-e4Kz_,l<CQ> t E:$i Ԫ Ld1ydZ}8:N葍: E;.oPH*C7}OtiX"KCŻ%52 !4^eoS~36Vg 0#>⑓L=p87lI 4 4pMZ xt#ٹF}>xI _}-v(|Zt_[S_7ߝ%ɒd Y2 $Kd@2,HE pkBwsSǫ?<"`2DkЃWzNzaf//[ؖ6OӪŃ(7x9R@l-*Zٶx,X Yrsx/m`H/ @0h)ؚm3s}xx}m.9R< `m30fg1>ߧ!)@h介 lKfh$`"ZlgBmxɧO[1 cÅo3I夅{_`XNۧwCGSIZ $ px`-Bq6d a~$;vhMּ׻/|oM}CGK-5$^G3FϷb̀BĀmڗd|Gya:2YMV6P!ƴ6Lk| z f1mx`3rum;y`o9; H 0r`f m-X60֐뢲yzYιM/|}f$,}@]1^e ࣑(C|b0~[}x}veQ9܋?/~U `5Y--v{PJqp@hq}QPl0"r]D̻OK%KDe[F») -[ccնb[uXld?.(S~‡xĩ?k!UM{ |v 6nRGE.8򬽎hIsKx ml#Y~HݸB@/#R@ץE ?-q\B亍#$?sH $Kd@2,H%@d Y2@qӤ}ΔS܆~ݕOQ֥-:Ry6M[ |wxY;9Ѣn] |d2ַ$7  &)*7.IzY˙pmLkaz}q9Fl|z}{=qur5 7a@a-R m۲жCE=`\[`Z#EVb g-maHяgXFCQSru" =HJ3k=,dzH hmKhqn̐b vl=k[aO>HyZu~d}oB^@`0D `PLZm'-$!Ef|Hz&YصY 1}CtR{/n _LUhmҹ~{ ĩ[oX`(8Y 09DYlR| Qh=ӛd WOŻEnb{#n6GaR'kmm%RcH |!*Y;b%Ni-0Di5!뷡ǀ8g|H2~nZѼ9cc|ӡ) gZ}@fZkibn6b<~G gLdڽe_*\lMIgfVrTa/ %v'NGhmkqxi@N (A=Cwχ53&/..׋ؖY\Y-`S6ۛi`k8 bH}+v6{~O:&c@؏AZ3?৽lځ8ZiJI?Y ~~7ĹXc=@z_Y{ϱk#Yb8Mnc\6 OX oV`;8㼽ooCo 3<߰F:3 p-`$ÙqUCM=akz0]:, @kJ_lrfk羿i!M`|_wudnIwgo_(gs\!箮b[=ѳ'"IUsv9ams-X.j|@W s E 3̙ڸ0~\[XH@{s{+ ŕS럮*,CX:Ko}`ݒ tyn O3k[E]r諒G";H R2[钁hGD?dvĝg 3Nm/I6u2h<.ɒd@KLr_&:y`5zWբTPO=L:zvsg*Fw]_Zu+`Evw]MvnAc /%oM}&@jRݣzհUMTo]ץ{[jHMR-z XD`XR]wUnŠj"Tئ J BN-UEUr*ըzi:U8PUQ`]]j-izTEVS:v.و+_d_XkEmM_x}2(v+HTÚje~CUVب^֝:&X-԰Eˋ Pbd=s.yݻ޿}9C\y]jJM2 p؜VVZk%W`j$QZPx.2*@:jjԪLڒ*QT퇱SJWלԑ7eEb-ԧ(lۇ2(֒&Չ@jluY%{Q5D+RRTMd@ۋP^VZD?V5$MEC"^V f,Z5$.!|*V9|.%S*,*loCYG05hp l݈5ɚ!쎁PqՍJz.(>HA #@Q!941fUסL۟Z]}oUc}@a+hƱ!X7FS$C':0SĚvP$b׬&5x.k#]+'\:ug q Dz\O 9^5 ɼ7W*J̝=! nPUTݱs5DiFIXUp_YZNGoH $Kd@2,H%@d Y2*@RNޢvOAKjLFnݕ )M~I~0HydVf%VZ w@ʶff'I4TX8+JfӢSp~DnSOo iQoٮ E0xlj0 4 2Z V$jV9,l @ay%B|ᨰڪSِ*WO+R+ʦeJ -EZsW\\׬xJ薉ܣ }h5m`5"uY>q e7& RMR %R@*픘!4ٱ0Hք(1yo"8wQ頋=rDD~QT&K>3.@Q| o'eYSכsJJj*ZQޛ9LJ}  L62L,uilH٨#V9w^(VZL5Qu grqs_35zվ>`aC͏HH5yu>PZB w儞~ UM t\fW3[fւJ3d+ 4]9PJ"Q~#B#ӀX &yF򀨮 U$-d')-E+ŋمI*e(/,~StZX +T r,nR>ut; m|0O 5Qⶁ<$a׍{=ɺwzޗ&vsfnB؍ &T)5eDaĕ4SQ䱁$Qwhѐ`T&i9S!b4p2ku@2@<ӢDZ=.AdDYC9# >-;"H5uAƓso73ΓsT.A|VO0)`&#nuH2$~:wP)Ħ~$J->$6?<;Y`qj`8<>9c& ˴F:5ΪSߛ-dm3_|e Y2,H%@d H $ɒd@2,H%@d H $Kd@2,H%@d Y2 $Kd@2,H%ɒd Y2 $K-5BIENDB`openttd-1.3.3/media/extra_grf/rivers/tropic.nfo0000644000000000000000000004251112246102547020255 0ustar rootroot// // $Id: tropic.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Tropic river graphics by andythenorth (Andrew Parkhouse)" -1 * 4 01 05 01 3C -1 sprites/tropic_desert.png 8bpp 10 10 38 19 -5 0 normal -1 sprites/tropic_desert.png 8bpp 58 10 38 18 -5 13 normal -1 sprites/tropic_desert.png 8bpp 106 10 38 18 -31 13 normal -1 sprites/tropic_desert.png 8bpp 154 10 38 19 -31 0 normal -1 sprites/tropic_desert.png 8bpp 202 10 19 9 14 11 normal -1 sprites/tropic_desert.png 8bpp 234 10 16 9 -7 22 normal -1 sprites/tropic_desert.png 8bpp 266 10 19 9 -31 11 normal -1 sprites/tropic_desert.png 8bpp 298 10 16 9 -7 0 normal -1 sprites/tropic_desert.png 8bpp 330 10 8 6 25 13 normal -1 sprites/tropic_desert.png 8bpp 346 10 12 4 -5 27 normal -1 sprites/tropic_desert.png 8bpp 364 10 8 6 -31 13 normal -1 sprites/tropic_desert.png 8bpp 380 10 12 5 -5 0 normal -1 sprites/tropic_desert.png 8bpp 10 40 40 11 -7 0 normal -1 sprites/tropic_desert.png 8bpp 58 40 39 18 -6 5 normal -1 sprites/tropic_desert.png 8bpp 106 40 38 11 -31 12 normal -1 sprites/tropic_desert.png 8bpp 154 40 39 18 -31 0 normal -1 sprites/tropic_desert.png 8bpp 202 40 20 6 13 5 normal -1 sprites/tropic_desert.png 8bpp 234 40 13 7 -6 16 normal -1 sprites/tropic_desert.png 8bpp 266 40 20 6 -31 12 normal -1 sprites/tropic_desert.png 8bpp 298 40 13 7 -5 0 normal -1 sprites/tropic_desert.png 8bpp 330 40 8 5 25 6 normal -1 sprites/tropic_desert.png 8bpp 346 40 12 3 -5 20 normal -1 sprites/tropic_desert.png 8bpp 364 40 8 4 -31 13 normal -1 sprites/tropic_desert.png 8bpp 380 40 15 4 -7 0 normal -1 sprites/tropic_desert.png 8bpp 10 70 38 20 -5 -8 normal -1 sprites/tropic_desert.png 8bpp 58 70 38 26 -5 5 normal -1 sprites/tropic_desert.png 8bpp 106 70 37 20 -31 11 normal -1 sprites/tropic_desert.png 8bpp 154 70 38 27 -31 -8 normal -1 sprites/tropic_desert.png 8bpp 202 70 16 9 17 3 normal -1 sprites/tropic_desert.png 8bpp 234 70 15 9 -7 22 normal -1 sprites/tropic_desert.png 8bpp 266 70 16 9 -31 11 normal -1 sprites/tropic_desert.png 8bpp 298 70 15 9 -6 -8 normal -1 sprites/tropic_desert.png 8bpp 330 70 8 7 25 5 normal -1 sprites/tropic_desert.png 8bpp 346 70 10 5 -4 27 normal -1 sprites/tropic_desert.png 8bpp 364 70 8 7 -31 11 normal -1 sprites/tropic_desert.png 8bpp 380 70 12 6 -5 -8 normal -1 sprites/tropic_desert.png 8bpp 10 100 39 18 -6 0 normal -1 sprites/tropic_desert.png 8bpp 58 100 38 11 -5 12 normal -1 sprites/tropic_desert.png 8bpp 106 100 39 18 -31 5 normal -1 sprites/tropic_desert.png 8bpp 154 100 40 11 -32 0 normal -1 sprites/tropic_desert.png 8bpp 202 100 20 6 13 12 normal -1 sprites/tropic_desert.png 8bpp 234 100 13 7 -5 16 normal -1 sprites/tropic_desert.png 8bpp 266 100 20 6 -31 5 normal -1 sprites/tropic_desert.png 8bpp 298 100 13 7 -6 0 normal -1 sprites/tropic_desert.png 8bpp 330 100 8 4 26 13 normal -1 sprites/tropic_desert.png 8bpp 346 100 12 3 -5 20 normal -1 sprites/tropic_desert.png 8bpp 364 100 8 5 -31 6 normal -1 sprites/tropic_desert.png 8bpp 380 100 15 4 -6 0 normal -1 sprites/tropic_desert.png 8bpp 10 130 38 27 -5 -8 normal -1 sprites/tropic_desert.png 8bpp 58 130 37 20 -4 11 normal -1 sprites/tropic_desert.png 8bpp 106 130 37 26 -31 5 normal -1 sprites/tropic_desert.png 8bpp 154 130 38 20 -31 -8 normal -1 sprites/tropic_desert.png 8bpp 202 130 16 9 17 11 normal -1 sprites/tropic_desert.png 8bpp 234 130 15 9 -6 22 normal -1 sprites/tropic_desert.png 8bpp 266 130 16 9 -31 3 normal -1 sprites/tropic_desert.png 8bpp 298 130 15 9 -7 -8 normal -1 sprites/tropic_desert.png 8bpp 330 130 8 7 25 11 normal -1 sprites/tropic_desert.png 8bpp 346 130 10 5 -4 26 normal -1 sprites/tropic_desert.png 8bpp 364 130 8 7 -31 5 normal -1 sprites/tropic_desert.png 8bpp 380 130 12 6 -5 -8 normal -1 * 7 02 05 40 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/tropic_forest.png 8bpp 10 10 38 19 -5 0 normal -1 sprites/tropic_forest.png 8bpp 58 10 38 18 -5 13 normal -1 sprites/tropic_forest.png 8bpp 106 10 38 18 -31 13 normal -1 sprites/tropic_forest.png 8bpp 154 10 38 19 -31 0 normal -1 sprites/tropic_forest.png 8bpp 202 10 19 9 14 11 normal -1 sprites/tropic_forest.png 8bpp 234 10 16 9 -7 22 normal -1 sprites/tropic_forest.png 8bpp 266 10 19 9 -31 11 normal -1 sprites/tropic_forest.png 8bpp 298 10 16 9 -7 0 normal -1 sprites/tropic_forest.png 8bpp 330 10 8 6 25 13 normal -1 sprites/tropic_forest.png 8bpp 346 10 12 4 -5 27 normal -1 sprites/tropic_forest.png 8bpp 364 10 8 6 -31 13 normal -1 sprites/tropic_forest.png 8bpp 380 10 12 5 -5 0 normal -1 sprites/tropic_forest.png 8bpp 10 40 40 11 -7 0 normal -1 sprites/tropic_forest.png 8bpp 58 40 39 18 -6 5 normal -1 sprites/tropic_forest.png 8bpp 106 40 38 11 -31 12 normal -1 sprites/tropic_forest.png 8bpp 154 40 39 18 -31 0 normal -1 sprites/tropic_forest.png 8bpp 202 40 20 6 13 5 normal -1 sprites/tropic_forest.png 8bpp 234 40 13 7 -6 16 normal -1 sprites/tropic_forest.png 8bpp 266 40 20 6 -31 12 normal -1 sprites/tropic_forest.png 8bpp 298 40 13 7 -5 0 normal -1 sprites/tropic_forest.png 8bpp 330 40 8 5 25 6 normal -1 sprites/tropic_forest.png 8bpp 346 40 12 3 -5 20 normal -1 sprites/tropic_forest.png 8bpp 364 40 8 4 -31 13 normal -1 sprites/tropic_forest.png 8bpp 380 40 15 4 -7 0 normal -1 sprites/tropic_forest.png 8bpp 10 70 38 20 -5 -8 normal -1 sprites/tropic_forest.png 8bpp 58 70 38 26 -5 5 normal -1 sprites/tropic_forest.png 8bpp 106 70 37 20 -31 11 normal -1 sprites/tropic_forest.png 8bpp 154 70 38 27 -31 -8 normal -1 sprites/tropic_forest.png 8bpp 202 70 16 9 17 3 normal -1 sprites/tropic_forest.png 8bpp 234 70 15 9 -7 22 normal -1 sprites/tropic_forest.png 8bpp 266 70 16 9 -31 11 normal -1 sprites/tropic_forest.png 8bpp 298 70 15 9 -6 -8 normal -1 sprites/tropic_forest.png 8bpp 330 70 8 7 25 5 normal -1 sprites/tropic_forest.png 8bpp 346 70 10 5 -4 27 normal -1 sprites/tropic_forest.png 8bpp 364 70 8 7 -31 11 normal -1 sprites/tropic_forest.png 8bpp 380 70 12 6 -5 -8 normal -1 sprites/tropic_forest.png 8bpp 10 100 39 18 -6 0 normal -1 sprites/tropic_forest.png 8bpp 58 100 38 11 -5 12 normal -1 sprites/tropic_forest.png 8bpp 106 100 39 18 -31 5 normal -1 sprites/tropic_forest.png 8bpp 154 100 40 11 -32 0 normal -1 sprites/tropic_forest.png 8bpp 202 100 20 6 13 12 normal -1 sprites/tropic_forest.png 8bpp 234 100 13 7 -5 16 normal -1 sprites/tropic_forest.png 8bpp 266 100 20 6 -31 5 normal -1 sprites/tropic_forest.png 8bpp 298 100 13 7 -6 0 normal -1 sprites/tropic_forest.png 8bpp 330 100 8 4 26 13 normal -1 sprites/tropic_forest.png 8bpp 346 100 12 3 -5 20 normal -1 sprites/tropic_forest.png 8bpp 364 100 8 5 -31 6 normal -1 sprites/tropic_forest.png 8bpp 380 100 15 4 -6 0 normal -1 sprites/tropic_forest.png 8bpp 10 130 38 27 -5 -8 normal -1 sprites/tropic_forest.png 8bpp 58 130 37 20 -4 11 normal -1 sprites/tropic_forest.png 8bpp 106 130 37 26 -31 5 normal -1 sprites/tropic_forest.png 8bpp 154 130 38 20 -31 -8 normal -1 sprites/tropic_forest.png 8bpp 202 130 16 9 17 11 normal -1 sprites/tropic_forest.png 8bpp 234 130 15 9 -6 22 normal -1 sprites/tropic_forest.png 8bpp 266 130 16 9 -31 3 normal -1 sprites/tropic_forest.png 8bpp 298 130 15 9 -7 -8 normal -1 sprites/tropic_forest.png 8bpp 330 130 8 7 25 11 normal -1 sprites/tropic_forest.png 8bpp 346 130 10 5 -4 26 normal -1 sprites/tropic_forest.png 8bpp 364 130 8 7 -31 5 normal -1 sprites/tropic_forest.png 8bpp 380 130 12 6 -5 -8 normal -1 * 7 02 05 41 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/tropic_desert.png 8bpp 10 210 38 19 -5 0 normal -1 sprites/tropic_desert.png 8bpp 58 210 38 18 -5 13 normal -1 sprites/tropic_desert.png 8bpp 106 210 38 18 -31 13 normal -1 sprites/tropic_desert.png 8bpp 154 210 38 19 -31 0 normal -1 sprites/tropic_desert.png 8bpp 202 210 19 9 14 11 normal -1 sprites/tropic_desert.png 8bpp 234 210 16 9 -7 22 normal -1 sprites/tropic_desert.png 8bpp 266 210 19 9 -31 11 normal -1 sprites/tropic_desert.png 8bpp 298 210 16 9 -7 0 normal -1 sprites/tropic_desert.png 8bpp 330 210 8 6 25 13 normal -1 sprites/tropic_desert.png 8bpp 346 210 12 4 -5 27 normal -1 sprites/tropic_desert.png 8bpp 364 210 8 6 -31 13 normal -1 sprites/tropic_desert.png 8bpp 380 210 12 5 -5 0 normal -1 sprites/tropic_desert.png 8bpp 10 240 40 11 -7 0 normal -1 sprites/tropic_desert.png 8bpp 58 240 39 18 -6 5 normal -1 sprites/tropic_desert.png 8bpp 106 240 38 11 -31 12 normal -1 sprites/tropic_desert.png 8bpp 154 240 39 18 -31 0 normal -1 sprites/tropic_desert.png 8bpp 202 240 20 6 13 5 normal -1 sprites/tropic_desert.png 8bpp 234 240 13 7 -6 16 normal -1 sprites/tropic_desert.png 8bpp 266 240 20 6 -31 12 normal -1 sprites/tropic_desert.png 8bpp 298 240 13 7 -5 0 normal -1 sprites/tropic_desert.png 8bpp 330 240 8 5 25 6 normal -1 sprites/tropic_desert.png 8bpp 346 240 12 3 -5 20 normal -1 sprites/tropic_desert.png 8bpp 364 240 8 4 -31 13 normal -1 sprites/tropic_desert.png 8bpp 380 240 15 4 -7 0 normal -1 sprites/tropic_desert.png 8bpp 10 270 38 20 -5 -8 normal -1 sprites/tropic_desert.png 8bpp 58 270 38 26 -5 5 normal -1 sprites/tropic_desert.png 8bpp 106 270 37 20 -31 11 normal -1 sprites/tropic_desert.png 8bpp 154 270 38 27 -31 -8 normal -1 sprites/tropic_desert.png 8bpp 202 270 16 9 17 3 normal -1 sprites/tropic_desert.png 8bpp 234 270 15 9 -7 22 normal -1 sprites/tropic_desert.png 8bpp 266 270 16 9 -31 11 normal -1 sprites/tropic_desert.png 8bpp 298 270 15 9 -6 -8 normal -1 sprites/tropic_desert.png 8bpp 330 270 8 7 25 5 normal -1 sprites/tropic_desert.png 8bpp 346 270 10 5 -4 27 normal -1 sprites/tropic_desert.png 8bpp 364 270 8 7 -31 11 normal -1 sprites/tropic_desert.png 8bpp 380 270 12 6 -5 -8 normal -1 sprites/tropic_desert.png 8bpp 10 300 39 18 -6 0 normal -1 sprites/tropic_desert.png 8bpp 58 300 38 11 -5 12 normal -1 sprites/tropic_desert.png 8bpp 106 300 39 18 -31 5 normal -1 sprites/tropic_desert.png 8bpp 154 300 40 11 -32 0 normal -1 sprites/tropic_desert.png 8bpp 202 300 20 6 13 12 normal -1 sprites/tropic_desert.png 8bpp 234 300 13 7 -5 16 normal -1 sprites/tropic_desert.png 8bpp 266 300 20 6 -31 5 normal -1 sprites/tropic_desert.png 8bpp 298 300 13 7 -6 0 normal -1 sprites/tropic_desert.png 8bpp 330 300 8 4 26 13 normal -1 sprites/tropic_desert.png 8bpp 346 300 12 3 -5 20 normal -1 sprites/tropic_desert.png 8bpp 364 300 8 5 -31 6 normal -1 sprites/tropic_desert.png 8bpp 380 300 15 4 -6 0 normal -1 sprites/tropic_desert.png 8bpp 10 330 38 27 -5 -8 normal -1 sprites/tropic_desert.png 8bpp 58 330 37 20 -4 11 normal -1 sprites/tropic_desert.png 8bpp 106 330 37 26 -31 5 normal -1 sprites/tropic_desert.png 8bpp 154 330 38 20 -31 -8 normal -1 sprites/tropic_desert.png 8bpp 202 330 16 9 17 11 normal -1 sprites/tropic_desert.png 8bpp 234 330 15 9 -6 22 normal -1 sprites/tropic_desert.png 8bpp 266 330 16 9 -31 3 normal -1 sprites/tropic_desert.png 8bpp 298 330 15 9 -7 -8 normal -1 sprites/tropic_desert.png 8bpp 330 330 8 7 25 11 normal -1 sprites/tropic_desert.png 8bpp 346 330 10 5 -4 26 normal -1 sprites/tropic_desert.png 8bpp 364 330 8 7 -31 5 normal -1 sprites/tropic_desert.png 8bpp 380 330 12 6 -5 -8 normal -1 * 7 02 05 42 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/tropic_forest.png 8bpp 10 210 38 19 -5 0 normal -1 sprites/tropic_forest.png 8bpp 58 210 38 18 -5 13 normal -1 sprites/tropic_forest.png 8bpp 106 210 38 18 -31 13 normal -1 sprites/tropic_forest.png 8bpp 154 210 38 19 -31 0 normal -1 sprites/tropic_forest.png 8bpp 202 210 19 9 14 11 normal -1 sprites/tropic_forest.png 8bpp 234 210 16 9 -7 22 normal -1 sprites/tropic_forest.png 8bpp 266 210 19 9 -31 11 normal -1 sprites/tropic_forest.png 8bpp 298 210 16 9 -7 0 normal -1 sprites/tropic_forest.png 8bpp 330 210 8 6 25 13 normal -1 sprites/tropic_forest.png 8bpp 346 210 12 4 -5 27 normal -1 sprites/tropic_forest.png 8bpp 364 210 8 6 -31 13 normal -1 sprites/tropic_forest.png 8bpp 380 210 12 5 -5 0 normal -1 sprites/tropic_forest.png 8bpp 10 240 40 11 -7 0 normal -1 sprites/tropic_forest.png 8bpp 58 240 39 18 -6 5 normal -1 sprites/tropic_forest.png 8bpp 106 240 38 11 -31 12 normal -1 sprites/tropic_forest.png 8bpp 154 240 39 18 -31 0 normal -1 sprites/tropic_forest.png 8bpp 202 240 20 6 13 5 normal -1 sprites/tropic_forest.png 8bpp 234 240 13 7 -6 16 normal -1 sprites/tropic_forest.png 8bpp 266 240 20 6 -31 12 normal -1 sprites/tropic_forest.png 8bpp 298 240 13 7 -5 0 normal -1 sprites/tropic_forest.png 8bpp 330 240 8 5 25 6 normal -1 sprites/tropic_forest.png 8bpp 346 240 12 3 -5 20 normal -1 sprites/tropic_forest.png 8bpp 364 240 8 4 -31 13 normal -1 sprites/tropic_forest.png 8bpp 380 240 15 4 -7 0 normal -1 sprites/tropic_forest.png 8bpp 10 270 38 20 -5 -8 normal -1 sprites/tropic_forest.png 8bpp 58 270 38 26 -5 5 normal -1 sprites/tropic_forest.png 8bpp 106 270 37 20 -31 11 normal -1 sprites/tropic_forest.png 8bpp 154 270 38 27 -31 -8 normal -1 sprites/tropic_forest.png 8bpp 202 270 16 9 17 3 normal -1 sprites/tropic_forest.png 8bpp 234 270 15 9 -7 22 normal -1 sprites/tropic_forest.png 8bpp 266 270 16 9 -31 11 normal -1 sprites/tropic_forest.png 8bpp 298 270 15 9 -6 -8 normal -1 sprites/tropic_forest.png 8bpp 330 270 8 7 25 5 normal -1 sprites/tropic_forest.png 8bpp 346 270 10 5 -4 27 normal -1 sprites/tropic_forest.png 8bpp 364 270 8 7 -31 11 normal -1 sprites/tropic_forest.png 8bpp 380 270 12 6 -5 -8 normal -1 sprites/tropic_forest.png 8bpp 10 300 39 18 -6 0 normal -1 sprites/tropic_forest.png 8bpp 58 300 38 11 -5 12 normal -1 sprites/tropic_forest.png 8bpp 106 300 39 18 -31 5 normal -1 sprites/tropic_forest.png 8bpp 154 300 40 11 -32 0 normal -1 sprites/tropic_forest.png 8bpp 202 300 20 6 13 12 normal -1 sprites/tropic_forest.png 8bpp 234 300 13 7 -5 16 normal -1 sprites/tropic_forest.png 8bpp 266 300 20 6 -31 5 normal -1 sprites/tropic_forest.png 8bpp 298 300 13 7 -6 0 normal -1 sprites/tropic_forest.png 8bpp 330 300 8 4 26 13 normal -1 sprites/tropic_forest.png 8bpp 346 300 12 3 -5 20 normal -1 sprites/tropic_forest.png 8bpp 364 300 8 5 -31 6 normal -1 sprites/tropic_forest.png 8bpp 380 300 15 4 -6 0 normal -1 sprites/tropic_forest.png 8bpp 10 330 38 27 -5 -8 normal -1 sprites/tropic_forest.png 8bpp 58 330 37 20 -4 11 normal -1 sprites/tropic_forest.png 8bpp 106 330 37 26 -31 5 normal -1 sprites/tropic_forest.png 8bpp 154 330 38 20 -31 -8 normal -1 sprites/tropic_forest.png 8bpp 202 330 16 9 17 11 normal -1 sprites/tropic_forest.png 8bpp 234 330 15 9 -6 22 normal -1 sprites/tropic_forest.png 8bpp 266 330 16 9 -31 3 normal -1 sprites/tropic_forest.png 8bpp 298 330 15 9 -7 -8 normal -1 sprites/tropic_forest.png 8bpp 330 330 8 7 25 11 normal -1 sprites/tropic_forest.png 8bpp 346 330 10 5 -4 26 normal -1 sprites/tropic_forest.png 8bpp 364 330 8 7 -31 5 normal -1 sprites/tropic_forest.png 8bpp 380 330 12 6 -5 -8 normal -1 * 7 02 05 43 01 00 00 00 -1 * 14 02 05 44 81 81 00 FF 01 40 00 01 01 41 00 -1 * 14 02 05 45 81 81 00 FF 01 42 00 01 01 43 00 -1 * 14 02 05 46 81 80 00 FF 01 44 00 00 00 45 00 -1 * 6 07 83 01 \7! 02 01 -1 * 7 03 05 01 06 00 46 00 openttd-1.3.3/media/extra_grf/rivers/arctic_brown.png0000644000000000000000000003526012246102547021436 0ustar rootrootPNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt4@وé N;H )f#S 9_وM_'1@RjxtSA@RM5<ς|v"$%K+`79x[SoҀ4 MIҤi@4 H~~'aoN, g#YI(qWr9]@zû^K@?W]- D@977vYE-&l/'?Tb:Ao?Z߼~ HX @Jm7 , ȋEq[H%HT~}́BI36d B4lPMVVpLz+Wl]?>pvzy}B\  /I%'/ `PG~A&#4ĤBSJ`` fvB v+4 ج7KPk pis?0F[vB+TVQ1VNAcY0픷P{5faz1m>S/+Yy3 |lk]qWJ8-~B /v× +v~_HN+Nla/b~U*V6?ʀ"o@J*ͤw جbQ@G8E Ris3_2 穽C3_}No' 3@ AzK)2.˟G3} ÌƸA+@*I+\Og--U o\Ke}U5n@.KQYE`(e| k> 4X ǼF(WVqu| )ې~YU)yZ laR 釩r]죌mFrδ Ay$I?A{7{w.Q `b‡^߂2bbFO^uTlI`ܧu^dCwFN\i@sE|} 4SO '@jqweϳgN=]]>ԃ@sH۠C"ФVr?+"7b+_uw8qAߺ`0ydÒ_]TȪhYgny̔/h%/6 ]K%^*CߵfgH̖1I)]\J>މ@׹ v'Wj&٩XrY*v<3(G=W\MuH@h ˹nQ d`tU%!v`! 9o^^̿v@s{hR+"4l%GPY9瀐 !bI۫zYjO^UhX2+z;zB3,h}mX''$u.{W)kYev)q0!:r8]|:B*\3@h(@ɋMlҷW0S׋N0Ɇ9<I⢖XR:{Rl3'0Bh+ ~S΋b Zn?̾_yӒ|URO+ٕS*6GX[2.Y1c?ƹр L~PJ,@H2@(Sr"A~*eYbE̷d7Q*7s ȱ?ÏxzfN9g$y/h)޼]-iҀ7: כׯ~3н:pݺټr(}nm3u} H43QR'4C @fOSz3{2$~sr; zm@f)S7So3q} ,t]w1ܗFɗ[Zd {6z3o~RaK߼f.m޹ƘPr[-w="nr4 .{)Qw@wչ4j #HfYo֋s$3^)8]4wff߼NPa\݊ap[,&[.u~~~H'sSonn.ٽf߿>|OT. 3͟>lB|?!A-;!ֹ˭w@w}rLr&mN]tܖzu'wa_rX~;@U3!aVˉ@̶NJ)rޞwMYLar U։rt~ga4R~?@ 3)õ_~Yob(nrۃ12sW7kJbxCOGCL_HJ0z3zsDŰe[14:pP109Tnnpq|"gHf&#ݱL)Ed;33% )]| +,4ql`haMN6 $%\M6q {Mq 1zsغ2{|j܃ϖNuMj๬q7yفd2K{.ߙ׳IIaw{']k와dC$ \2$~|y5 W gh!Y\sgp`35Ֆp& HҤi@4 HiҀ4i@;闋NO~OAL[ .o ,B.i:"XJbyNFh.F>x}') d8"BoaTp:{haѢ}V}r# c`Y= (bb[7O*,a8u.,,,I )B@B2Yp }Cۚ$s;wDثw'r. nIZiYz 2 :atϹMF, 1,"lz{#yǜ: sﺏ @zݔ"LiP7u~Hxg\@ʽSJzuM3; (<.qN K1[G81r( MfS+ܧKmg A@P OsD OHfOO_ 0B w>wTgy)ٙ-&֌ H+Xҧ @[w/+:Y4 (Bv8VB.gE)/yno/.&/ eP'}̯SS s0w]`7 @ > (a!N R}YMNeDDkǗtA#9(_X ƶ<_=an{V/:(l).vcE(TFDK:w |'9VFtۃAo_hŹWΓ޳x=nM9l 9'm);֛Rv֟HR|Ѷ |ʾ YL,>Y%rrZB_@zG瓪Q@Ru<-$%տ0 )q[yj/ Hz2_|a M& HҤi@4 HiҀ4i@& HҤi@4 HIҀ4i@& HҤi@4 MIҀ4i@& HҤiҀ4 MIҀ4i@& HiҀ4 Mg=q:OΒJ } Y8m}-#U"4.o`Xnp:1|`݃$B98B]Sr~ ԙwQ0 L&l;&ƽQ* lWaG&M!"9Ea׋BkG,"y$O*C rH&L$@@} >MVa}IOm&/Q@ SH_V$Gx݅ѩ@Hwrr(}@T/k t/+w4ug|1 ^>IHfιBmxtxmd)X,3GfT 8d[f;woϋ{]ŗAOvs)AfLKC<O]R /$k7r8f"ܝ*.Ty2\ A/ؼu^,r)>*΋\(qIGD /H&Lc"YV/:/rC®9gR=ܷw*#O|I9,yΥ0Z~"4:NE/CD^,ׇAUț:*ޕ^\B#/Щp*@^SRJ͡z@r6g'dO wHXʙghH iȹa`[(3{t}p^԰K"v8'Y2CRByb{yNO.VݤiҀ4 MIҀ4i@& HY p4]NԹ>myV+.d]\.Th:?_zx׽kW_IPjm U܅?H-Lț#PN}N3p[$`qonn f)^:$jgzYxzyYnnvlRM @|2@ʣZ맡X9ofO/ ҇ %A(Uԩ@ ![LYpho`p>j!y("O`-c(')7[c Ţ_]?H%HT~}́BI36d djc[*tg??q>a֛f". rTR/+v_ @O^ }@Xm9PG~A&rKp M)k4AJϱBsJ)jruR&"6 #c5`')BL?Ou*@`u"\,v[r0?㌘6yRڬs΋`>ȫR p"v~B /v× +v~_HN+Nla/b~U*Vv{e@y7y f׻{Dly( #"rM)`˹/ɈR0ܢv.ElR*+j)GSۦ9EpJެ"qʫRRpHbΩ0= 3YCJ HIҀ4i@& HҤi@4 Mi 8<2ֹ_=(oOS}uܬơn{jŐwۀ_aA0F! *a[4ɤ\ JF1 adʭ N!BtYsRͤrYNlGy0 Q@ ? ďf@@q%V#+'TV2ZZX я˫n߸jv{\>wҧYx< 4X ٽ+䪏reE[0M)ې~-U)yZ Խ rRЧa\}W.(cnѣ\3BeP~fOBD]A AXĄu"){c ?~ ڧ"H+zӌɺ*$0JS:/;#ZAlc 87iJᵧ2*pŕO\VԊߕ{WهY.jad ׹H$mܡS\z+O;(U~^H^RɂVitAߺ`0ydCtuQP"nyr\ELRbf[C،/w}v/!ʇZ=gЭ3ԙ-?cRMw}SV;q\VXaf? {Se5vʪ#ό# fӊ+&tvgg'jl[v&|uRnfOr5W0+Ɔ8Zbd}]v@p^ '[$F;0\ǀIoj*y.Ԃ=q|X6l%GP|?ϧ|H*|OTXM6Lan#Բia:yXyKl4s/Ԯe< ۬7;AŰe[14:pP109Tnnpq|"gHf&#ݱL)Ed;3_|YoAp}0 -̻Ɇ0RK=a)8>R7FocN[R{OmPoϒNuMj๬q7yفd2K{.ߙ׳IIaw{']k와dC$ \2$~|y5 W gh!Y\sgp`35Ֆp& HҤi@4 HiҀ4i@;闋t{ b*CXߩw`e*r0"ӿ8|d|}<ç(Xy"R8@#?^SY ELDADH3߇便 º]}@e$ 1{9FNBʃ ya:*ߢ *bBPDPL`p0&]1,&l}DNP%m^:I 7-K^o<ratϹMF, 1,"lz)yǜ: Txt"/z3]n@>8$M^enJ(LO*X,2B0B w>wTg7H_ l)4ifVAp\p>ef[k(2A!a̴r8+LyRˎ Z z @zep N%F&ʓa-RPv"fpP0,Щ>A /aQyR\s$MrH|a^Sc~yl+"lD^|q@ֹ@хdsN!toD>+-B&#αؼ|YyrAX$@۪yKp_T9;Gb&G Q`nk8iN!~9@&Lw>"\<޹)Eu;t8.Y>򂀤fwD ZO'#`Hݗ}Γ*L'稜~q;HMec'/0zXnuKx&I _;Mrʒ:%"3I5D?&g\} IB?9ct(d󴐭k':5joSMn/0& HiҀ4 MIҀ4i@4 HiҀ4 MIҤi@4 HiҀ4 M& HҤi@4 HiҀ4i@& HҤke}uIENDB`openttd-1.3.3/media/extra_grf/rivers/temperate.nfo0000644000000000000000000002106312246102547020742 0ustar rootroot// // $Id: temperate.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Temperate river graphics by andythenorth (Andrew Parkhouse)" -1 * 4 01 05 01 3C -1 sprites/temperate.png 8bpp 10 10 38 19 -5 0 normal -1 sprites/temperate.png 8bpp 58 10 38 18 -5 13 normal -1 sprites/temperate.png 8bpp 106 10 38 18 -31 13 normal -1 sprites/temperate.png 8bpp 154 10 38 19 -31 0 normal -1 sprites/temperate.png 8bpp 202 10 19 9 14 11 normal -1 sprites/temperate.png 8bpp 234 10 16 9 -7 22 normal -1 sprites/temperate.png 8bpp 266 10 19 9 -31 11 normal -1 sprites/temperate.png 8bpp 298 10 16 9 -7 0 normal -1 sprites/temperate.png 8bpp 330 10 8 6 25 13 normal -1 sprites/temperate.png 8bpp 346 10 12 4 -5 27 normal -1 sprites/temperate.png 8bpp 364 10 8 6 -31 13 normal -1 sprites/temperate.png 8bpp 380 10 12 5 -5 0 normal -1 sprites/temperate.png 8bpp 10 40 40 11 -7 0 normal -1 sprites/temperate.png 8bpp 58 40 39 18 -6 5 normal -1 sprites/temperate.png 8bpp 106 40 38 11 -31 12 normal -1 sprites/temperate.png 8bpp 154 40 39 18 -31 0 normal -1 sprites/temperate.png 8bpp 202 40 20 6 13 5 normal -1 sprites/temperate.png 8bpp 234 40 13 7 -6 16 normal -1 sprites/temperate.png 8bpp 266 40 20 6 -31 12 normal -1 sprites/temperate.png 8bpp 298 40 13 7 -5 0 normal -1 sprites/temperate.png 8bpp 330 40 8 5 25 6 normal -1 sprites/temperate.png 8bpp 346 40 12 3 -5 20 normal -1 sprites/temperate.png 8bpp 364 40 8 4 -31 13 normal -1 sprites/temperate.png 8bpp 380 40 15 4 -7 0 normal -1 sprites/temperate.png 8bpp 10 70 38 20 -5 -8 normal -1 sprites/temperate.png 8bpp 58 70 38 26 -5 5 normal -1 sprites/temperate.png 8bpp 106 70 37 20 -31 11 normal -1 sprites/temperate.png 8bpp 154 70 38 27 -31 -8 normal -1 sprites/temperate.png 8bpp 202 70 16 9 17 3 normal -1 sprites/temperate.png 8bpp 234 70 15 9 -7 22 normal -1 sprites/temperate.png 8bpp 266 70 16 9 -31 11 normal -1 sprites/temperate.png 8bpp 298 70 15 9 -6 -8 normal -1 sprites/temperate.png 8bpp 330 70 8 7 25 5 normal -1 sprites/temperate.png 8bpp 346 70 10 5 -4 27 normal -1 sprites/temperate.png 8bpp 364 70 8 7 -31 11 normal -1 sprites/temperate.png 8bpp 380 70 12 6 -5 -8 normal -1 sprites/temperate.png 8bpp 10 100 39 18 -6 0 normal -1 sprites/temperate.png 8bpp 58 100 38 11 -5 12 normal -1 sprites/temperate.png 8bpp 106 100 39 18 -31 5 normal -1 sprites/temperate.png 8bpp 154 100 40 11 -32 0 normal -1 sprites/temperate.png 8bpp 202 100 20 6 13 12 normal -1 sprites/temperate.png 8bpp 234 100 13 7 -5 16 normal -1 sprites/temperate.png 8bpp 266 100 20 6 -31 5 normal -1 sprites/temperate.png 8bpp 298 100 13 7 -6 0 normal -1 sprites/temperate.png 8bpp 330 100 8 4 26 13 normal -1 sprites/temperate.png 8bpp 346 100 12 3 -5 20 normal -1 sprites/temperate.png 8bpp 364 100 8 5 -31 6 normal -1 sprites/temperate.png 8bpp 380 100 15 4 -6 0 normal -1 sprites/temperate.png 8bpp 10 130 38 27 -5 -8 normal -1 sprites/temperate.png 8bpp 58 130 37 20 -4 11 normal -1 sprites/temperate.png 8bpp 106 130 37 26 -31 5 normal -1 sprites/temperate.png 8bpp 154 130 38 20 -31 -8 normal -1 sprites/temperate.png 8bpp 202 130 16 9 17 11 normal -1 sprites/temperate.png 8bpp 234 130 15 9 -6 22 normal -1 sprites/temperate.png 8bpp 266 130 16 9 -31 3 normal -1 sprites/temperate.png 8bpp 298 130 15 9 -7 -8 normal -1 sprites/temperate.png 8bpp 330 130 8 7 25 11 normal -1 sprites/temperate.png 8bpp 346 130 10 5 -4 26 normal -1 sprites/temperate.png 8bpp 364 130 8 7 -31 5 normal -1 sprites/temperate.png 8bpp 380 130 12 6 -5 -8 normal -1 * 7 02 05 20 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/temperate.png 8bpp 10 210 38 19 -5 0 normal -1 sprites/temperate.png 8bpp 58 210 38 18 -5 13 normal -1 sprites/temperate.png 8bpp 106 210 38 18 -31 13 normal -1 sprites/temperate.png 8bpp 154 210 38 19 -31 0 normal -1 sprites/temperate.png 8bpp 202 210 19 9 14 11 normal -1 sprites/temperate.png 8bpp 234 210 16 9 -7 22 normal -1 sprites/temperate.png 8bpp 266 210 19 9 -31 11 normal -1 sprites/temperate.png 8bpp 298 210 16 9 -7 0 normal -1 sprites/temperate.png 8bpp 330 210 8 6 25 13 normal -1 sprites/temperate.png 8bpp 346 210 12 4 -5 27 normal -1 sprites/temperate.png 8bpp 364 210 8 6 -31 13 normal -1 sprites/temperate.png 8bpp 380 210 12 5 -5 0 normal -1 sprites/temperate.png 8bpp 10 240 40 11 -7 0 normal -1 sprites/temperate.png 8bpp 58 240 39 18 -6 5 normal -1 sprites/temperate.png 8bpp 106 240 38 11 -31 12 normal -1 sprites/temperate.png 8bpp 154 240 39 18 -31 0 normal -1 sprites/temperate.png 8bpp 202 240 20 6 13 5 normal -1 sprites/temperate.png 8bpp 234 240 13 7 -6 16 normal -1 sprites/temperate.png 8bpp 266 240 20 6 -31 12 normal -1 sprites/temperate.png 8bpp 298 240 13 7 -5 0 normal -1 sprites/temperate.png 8bpp 330 240 8 5 25 6 normal -1 sprites/temperate.png 8bpp 346 240 12 3 -5 20 normal -1 sprites/temperate.png 8bpp 364 240 8 4 -31 13 normal -1 sprites/temperate.png 8bpp 380 240 15 4 -7 0 normal -1 sprites/temperate.png 8bpp 10 270 38 20 -5 -8 normal -1 sprites/temperate.png 8bpp 58 270 38 26 -5 5 normal -1 sprites/temperate.png 8bpp 106 270 37 20 -31 11 normal -1 sprites/temperate.png 8bpp 154 270 38 27 -31 -8 normal -1 sprites/temperate.png 8bpp 202 270 16 9 17 3 normal -1 sprites/temperate.png 8bpp 234 270 15 9 -7 22 normal -1 sprites/temperate.png 8bpp 266 270 16 9 -31 11 normal -1 sprites/temperate.png 8bpp 298 270 15 9 -6 -8 normal -1 sprites/temperate.png 8bpp 330 270 8 7 25 5 normal -1 sprites/temperate.png 8bpp 346 270 10 5 -4 27 normal -1 sprites/temperate.png 8bpp 364 270 8 7 -31 11 normal -1 sprites/temperate.png 8bpp 380 270 12 6 -5 -8 normal -1 sprites/temperate.png 8bpp 10 300 39 18 -6 0 normal -1 sprites/temperate.png 8bpp 58 300 38 11 -5 12 normal -1 sprites/temperate.png 8bpp 106 300 39 18 -31 5 normal -1 sprites/temperate.png 8bpp 154 300 40 11 -32 0 normal -1 sprites/temperate.png 8bpp 202 300 20 6 13 12 normal -1 sprites/temperate.png 8bpp 234 300 13 7 -5 16 normal -1 sprites/temperate.png 8bpp 266 300 20 6 -31 5 normal -1 sprites/temperate.png 8bpp 298 300 13 7 -6 0 normal -1 sprites/temperate.png 8bpp 330 300 8 4 26 13 normal -1 sprites/temperate.png 8bpp 346 300 12 3 -5 20 normal -1 sprites/temperate.png 8bpp 364 300 8 5 -31 6 normal -1 sprites/temperate.png 8bpp 380 300 15 4 -6 0 normal -1 sprites/temperate.png 8bpp 10 330 38 27 -5 -8 normal -1 sprites/temperate.png 8bpp 58 330 37 20 -4 11 normal -1 sprites/temperate.png 8bpp 106 330 37 26 -31 5 normal -1 sprites/temperate.png 8bpp 154 330 38 20 -31 -8 normal -1 sprites/temperate.png 8bpp 202 330 16 9 17 11 normal -1 sprites/temperate.png 8bpp 234 330 15 9 -6 22 normal -1 sprites/temperate.png 8bpp 266 330 16 9 -31 3 normal -1 sprites/temperate.png 8bpp 298 330 15 9 -7 -8 normal -1 sprites/temperate.png 8bpp 330 330 8 7 25 11 normal -1 sprites/temperate.png 8bpp 346 330 10 5 -4 26 normal -1 sprites/temperate.png 8bpp 364 330 8 7 -31 5 normal -1 sprites/temperate.png 8bpp 380 330 12 6 -5 -8 normal -1 * 7 02 05 21 01 00 00 00 -1 * 14 02 05 22 81 80 00 FF 01 20 00 00 00 21 00 -1 * 6 07 83 01 \7! 00 01 -1 * 7 03 05 01 06 00 22 00 openttd-1.3.3/media/extra_grf/rivers/tropic_desert.png0000644000000000000000000003633612246102547021635 0ustar rootrootPNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt4~"m${ 뛚OQݝz/86 oNuBgNW_vffFp/8F{F!fDzoigw_0?_o+in/if99Cw;\57!`P:;Q͜fUS ON5q>wW_ֱcr&ls ݝNؐ˒nXN+ p77Mvj'S_N7v_{/8?c쏬Tx,+ra )R_|:tNnkf'fI˴7~r9yy.'ʛfF,k𭙝2B7;,3wNUn@B_親o~i4{Nku\G`n^v03}r<)@BPww3Ly?Gb(? 77SʫS~xb,H~1jOη oıIH88t5|BӫljrWynOJ{#v] /s>og5@BF<^N?>_4߾ U  _ 7i@& HҤiҀ4 MIzl}VhrwgWa YȄkp=B⸾ç|N3dɏ-yAUC X{'TpE|{}7e@YCy P*z76ڛ:*fY=Ufu ǿ Nj!tY1<>WHhVȐudY1n֛ &PODD Yswww'&F˒Q2j*!@{QQvT"&"fB~OϿ>]\~"Ī*< H"|qq0= DLo6+r 0@'BP,U텋 `]}Cl֛u]DrYUȄjڨ(`g`frjҐUZ=˱rͪA}¨ATnF*"fY!:ƸSBV"& &} ț!C,Q7UܭK).S@R?>?0Sʬo!yOƾ !b͐5 1{;-"n@,aF^\{:.1u " Tfr0$dLՄ Ր.8}]~7՟2c?YĔDq†y螻0|*:7d2@D]Q7:.b'M7ƵUUu6=#oa'/={3aP)Ǐ@ 9w5]ߒd~ޞr$3|r/f4 Gߒk ]|! U%XOI`ĒH~3\K:M2g;!k[BBh@4 MIҀ4i@& HҤiҀNt:T]O( ?|H6!b}V8v285Cx3,Yl?{AT¶i WrA᰼*@`[ayksIr7.=RV dLQvp ى N@qQA0@p 8t`ðW^i; Y@T"CS@2PYKdǣÛA`s)Dvd<ԸݟE8r=!SUa-2>`8 b!CD56 k>*ce0F :fDG ^{CADčM_,Xd]FXϬʋp _HqS?~愽7d CE!6DP7@6AA^ 1=FDɿ YWIlIL/yJa븈-9 PYsH$To( ::R(G*NeQTTq}2`q5:U|w]\|5*"A 6v$8:LjJU)7A&2ԽY9OϒIszx! mh) !/jЬF>:a|X~01iK AS2J|8 Q>~SQuIH#?bB*0 [NZ!n?< q}p=dd6~ZiHzlc..w9~? !\ɐI*8m\ *z?\O |XiN)_Yſ_4qb{I e95JS@_9Ÿy}I012FDҧ.c>NrT$P(!H7WS3tδ9pI?&n@Z~E@B&_98$ǐGO33YƵ+!)\{u7vιFCoڕGEZ!Ttm@4 ]'^{s7yf{07싗ү?0?N{Yee J[L~jT'aF@މ$Ę?I._ Na\R\.gK: Uj/XnA?;1{ ׂ̫(HVg)ˇ"V,M&㿹Z}_zĘÞ6սZ{@}AAaV%ٛT>PVgb‚{2*e>YwOH* GRIL_H2O UfY/b1%V=>`.oHaRX7.}RQ{ч}aaݼ7!QX+\^^|b_/=D+I %~yӧO?]Nِ]WpΖL*l&c,%wBlW^2~5W(+UJ]bnլx_@b6:R+χC^W$ 箬>/7|[_Q6vL]bwwqK8HoFw]יYۻv*z!xnnrC QI^jeGyonެ7q)%:,cz[)\aY+/xb缟*./}+>&3zcL#+w?17Y0kl=Sf#ͭnk_Xx"DZo,nuʼnuHba$!бŸ(u g{-UWVfaZXH)F^+ҵUc_;ڟ5)WV}$SF=mkvmW(^?? d^K@Bُ y@Bh  ޯ; n@t}JRYXXՁ#i@pwtZY}@B}+, ȹݕyA}W˃ )%|; mj[ HiҀ4 MIҀ4i@4 E'gN[©z.;D;{ߵD^ݝ>sr6h|jޏ>{ 8Ng?H7T9R0Lq S{'{X8W$]*E(nN{hBϝҝ&'~7w촻Hb{M /,+{{7tB'e ) )s,H+|~:qg;nIh~f"qV/VL.tqy ZYz@k)v5bpwI/q"eZa~yT_@}nKe_z<%^?hS\@$iWxU!ҹ(%._ YX}-/L]2>q ^9 Wu_Ջ5uwJy!!\}ErMڐM3s[yBaiHwgr`n,\2[t;Vw hHdV*{T"es/'l^X>O y޻/Đ1ÍOqo;_]اMLgT {w#77$sI pzq/n 2kuCtI[ǡpbRPg)@߻'!똒i4{.Nl__s pf:T{-B^|>@NԣgI╳ƭxb@RYB, , )#{ׇpLHfxg?V q=B OOr*{Y-@ۋˮ!aakFa ٻ{e:`©akjmJRcJ< A1 ,Ygʓe4ˋHbzNzYo<݋̯SVr>$" t) AYk);LN6pw>֬$:i~Iwշ9&rnpV{fV:vB_:wn.8r"tg3CW<__zy{777mƕ X,_ytG)ݕ1VeU^]2dnn4S7"IWv}[+2U0Qdvl씇VtÖ%-6ͽpŋi1%.VϳO$ݗbcW__iřW"b|$'ߠ"}|I0g-Ivo(^DJ麸nu9AuNo$Qm2/Թ-@:br^BI |1W_/jU !ߦ@W$Ŀ>6F}+/m [ IҤi@4 HiҀ4 M& HҤi@4 HiҀ4i@& HҤi@4 HIҀ4i@& HҤi@4 MIҀ4i@& HҤiҀ4 MIҀ4@B5S]nw%\Q&3s[?wGW/AD}߱5U{Y [E [p@s[>&$1'uF*w/~u,bGrN'0ʄΌ$,H': 1@lE^~k@c CAt( D\o7s#%MPw?Ioc 1((NE\߮]JwD) sa1h@ "n9Q1Q(%${Λ$FI)%Y .ַq:Xwʲ8$`)u)f+p ̅1 i|xȓq 7 G|mf#aqc1ؐ"eUsqH]G#kw/heIt1.KTQx<` a&C@(F{`snJ>~\߽]EUGQ:.R: c{.7 YI2&nrlCB92}Fn?mome;5N u$vkMwDzD0ݪ>-^Ekԓ \ܦfYIgI[!7,Ņӫnd|;U+ydFa _c;P'x!\ SdzmGfO! .KNȸTvoc9 0_8OWRH:WxKmL*`ߖL] G8N Ac/a?*x!]kq]e`ϼ_E@qHDJqx@21K!qn1]߮"v*cR*Gc>m)@J1_,y]~Ƶ[v)u@,Q). ,"nvg8.KR:yde qw K).ַ{ Kq9^)pH]*v1TBg Ӯo 0sxaA*"N B@3{>Jp|χȀPu,{v*SU0^^|ԝ~,""!ñC ȃff/4Eܜr{}z(/*@EfbBpgd@T,̓V;uk,2cl B]V@.H!US Ѭ:|1| AUaclDE5B~x c@uO9wwwwbb,y}ߪK8uI = DLD̄tyC"% *13 YE58JsK).@2low+ygU G4zPL*S=D30Iۋ2@Hofdl }ӅOv91d7:ELUEUU@Ey|E8~!UUQ~WUM).`P Fy=RBC*0y11aLCsJ%sV2a({0 XUUWU;2:Ԥ!@z4*6GjVzܨvQED,+YqcJ*UD!ФOys=d`"v4ꦊu)u "CT*oB}j\"»?/WRRU!Db1&Ai>UwZJ1Eܬ Y4ÌqpOu\,bD~"aHȘ69wӫ UA!u]?v0@1)lVÐ5Ʌ$࡫ܐ!ucG93߬7븈)0o7 תU挺fdQ1=gof5 "=Ǐ@ 9w5]ߒd~ޞr$3|r/f4 vo. uA$0~~zbI_$S=5h9рL YC BBҤiҀ4 MIҀ4i@& H4muRe0L'JBlDtHj) 'N~Tfo%Y8eD dm(c՗ ~2kNLvR'# n=  }ua+@` ,] @Mu*MX!)  鬥2cQ 0yŹ"2ԸݟE8r=} 1ͬ nySHA\`N0 =TB8:` )>*a՟3DN ! cߦz/ug,2 ܮo#,gV{E8KF٩ sޛC "(QMPxebȻci?6=FDɿ YWIlIL/yJa븈-9 PYsH$To( ::R(G*NeQTT#@)+&2LƟU|w]\|5*"A 6v$8:LjJUiLW 2zPyz4Nu V@p|'lC;O Axd!\ h\WA0{>,?d %OcbsCa>܊$ I1U+m`vrZ_e722e}?4uCE=1ƋwûEndZ$ 6.kfnj>,4~V~x 1'c!*{D (ANOL~wb !c4eg\<Ȏ8Y~R;v S>$ *w*Zcq: g_~C31dѱSk)̸Lq~yHl!j'T(vl  DR<ʀ*CbwĨչ+{DnL Ŧe!+2L_/UE/rF. jlwm.*M~@BCjy憝.kjN?{Ve*\[_%ǕӔo3L Woh Y)5jIJ&O)x(fw~mxWz++~` Ϯ6?g)~KUaH^|.TaaЀjJ\_H2O UfY/b1nurKV+YXz3R\<H*ޯXX_y}8Bݼ7!QX+\^^|b_/=D+I %~yӧO?]Nِ]WpΖL*l&c,%ww?!^YV{dռ_үXV)ubcefz=TNO9uՑZ~>J"YhO?weycW¾X¶)cSƔQwK8HoFw]יY;ҳ[;޳mV]n(}!> ^~֋wV^qH5֛&.1Dv`Lϲz++#k¾/X>ZeOc2w$R}yfYo F0榽= fQ;gJPuՍx <_ĘHŭN8I,,D;İ:V}^ެR[0^804YSJ7V !kƾewƵ?kS0NԭIzښ=H]%{g.J.G_HW?%ZJOWB~pm@GTXg\_H~Ip3Uʯ$~IrW¸[al@ݯk zKZHh@N/IlCVm@4 HiҀ4 MIҤd.:?9u*qBG~꒹Ldzj]kH|ӟr6gcڏ7VvOLg*G )0S{'{X8W$]*E(nN{hBtwr&{Kw\,{ߔ&,X^D$^XJw`J?BHn=}n^> N{S@RY5V wV}fDgf˟-r gbuOKכH8 @k)v/;M*w/x) ḲsCt~_*q.IC:$ˁHJdBsQJ\@z)Xnyw'Dfꊕ NZYʽT^c-#EVc +l҆lbLr KC;{#tc)䒙twJz3d JeoJb qV !{Ž>f!Nm 5}9, SzvdFI>7lЋ/$."77츸YB{OB՝;WSUxN LB·cJ @:MBws pf:`(|<Wsя$xTV 1QX)^CBER!{=\}Rt8XW$@wBߙ:)={΅@nTw17Z.pŋ?n@-:'u*Ld鴂,  v)(ðe \9p3`:ry<@/e PثM\$1I=HI^ܫWӽ8K:J5Qp+ԥWHXoIOBn"<&^K)anFZ0:I|NX}A3k" , RzЗΝ \dYi,plIRP%-6._A^؉6}Jqr篼IahI778K E277WP}\~+}gd_/eI{_KFl'Ny{a_N;lw@:tFBZ<򊀄fSoh<{dI}Y.9tF8M"b|$ 9*_8)=yכ" uH)ݸx &#HXaZ7 9[RKHm ȼ61&cbc  9FImz8l9Іs172QƱMl/3& HiҀ4 MIҀ4i@4 HiҀ4 MIҤi@4 HiҀ4 M& HҤi@4 HiҀ4i@& HҤqF*LeYIENDB`openttd-1.3.3/media/extra_grf/rivers/temperate.png0000644000000000000000000003737712246102547020763 0ustar rootrootPNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt4YśOwSv:B>s(z|sA> ͂-d%kN(X(,dd Y2 $Kd@2,HrD@sPZl}fRbEo_uO-**wOWppG(11$D"f+쮥/>~C/UE2PXE7*33' 323bO/7[r"PUPb 11(Ϥ#m߽ lF`+ tWTosT>]a|Ұӷ4(we*0)MUeUQ@=Jw3A0|L403}J㗵!y߆ܼ̤6w=s}}=mA)V36D03V"*ҾۍO־DyˤuޘYt2q]{3~J̲!FXHTvHaJ /4偉&_`3L 5 J }i1| D*W"w.'ʫҿT'gY;42xReVb"&b@9}\1)_cZ!Q[G܁%e͌'1̬JC;SAX Gb~'~[*-*MmHiY_9c7bՠ3oh1tjx4ap3bz#ƮO[:=K Ơy#Owz_ȼ7jx8b̴7xw i1fqjxNcn Գd H $ɒd@2,H%y>@:o~~(9NVR(^bJcA5ׇ4jT0OD@D$ݵ i@tHo^C$8}WvnI5$Jo "( Ho*h/4$ @}E]DtPj/H-w6ME!AQ=o^#I(OR8߼y+Zk~"Qb|rWADEP s}}}-*5IdH-UGi@*$I vP] QQxt?k(Q0PR_$pkv$ JЯk *@z$DQPPaM- Fܔ5;r,c̶.Z0|QyqQ'A,N7Y f:0_OWfc̫?N}Q ]?s ",)?bEI.춝R'1~p.E~"rM];L8mrWQv~R (zk~:' ؐu0A. YRp̼n[.0/E-حU?a h<k;y fVu 2Rݒ_Q5_SyQ_T@S}ߒMy2?oOu.8f]A)X /~[ks ]|:A-kb=:'/O,cd$s#/ ޘ $K%@d H $ɒd Y2,j 8i[[{J}?jlG5{5rl^Nn@1/aAJDME%" x W%ߞ`bWE*iFU$Rb"\ RdLA(7$7c{ k }Eu=(だʏ"Lo5ZZ鬥5&/jA'NEP Q57{F@.j._ݘ. P~y#`-,HǺEj5 &H8 ";Q"wO ER?<ƻ!E-"!IcP>U{eQ?P=(/H@P{W߾)9=$ & "FDfp!"bE(W"$m^rZ /) klON5:kGٗ/QHPQ)`(C557{@ "q?u@ɬQ7g]@lA$k$d/*&AgR%u,5Ƹ0Q]h! H<}X2˳ yHq:үz>Kڍkv}\*:8Dy| JY8EU̖ϱ1Ɯ] $K*h݉(1< vNr __ .~Zv눻5mƓW''UJ_1gR'X# c\E}7l"q?pP!9ggsgu{p^ - `tuBBB \ |oS .app?+[Zz`:%5 { HB$1, Cb B]isY"*n1HeSqH: mk?>$R@Yӯ9 * nvIQTUkk /F@$T Tdx։ߞ0rH{ 8]Z Q56q]lsfkc`BPD*. @$gd!ըS@PQ@S)k!cR]hRp{e IUs:u޳L52ζ9{U'7+(T?h lkpvleRpk{l_vGt6'㿯j6ap8u<#\@ C@| d[ܯ0fdFXgH׌ČGFaXןm|[3yαH 俰K??u t^3}{I>p~~¬~9lzn|g%|hU3US,k,c\ݥ7>ƕ+Ch)Z7{@|@bëw~3N91ZkK4هCEV? Q. K.Cd{\ntwaxLy)}?Qavnu޽~skXyOjd8 _{1xPXޖUjRj ce ʾ qYmUCG+XZ)chV;WX5qbL5~v)N3@2mmZQԀ^~e qY5Ob!PEC77奔2WoY6W!e *qS|79gJ~ux׻Nl).JQCh.S4 .rlKeB1M  .]KCdX9bA!mN]e!>7MC'z^(Y}>?Fa!gV]/H ^wF6T( UvwBByv%{ +묺XCqN^iKͲGJea=vnbasđA{0gY^CjЄ]2K/ ĘNnUضZk+Ȟ#s^CU#10*7N8.}#-X !.Bbb W]ab栤ĘoT!lI_a\raơ6Udhd;'5!WZr61Qy3{صኒ*.,pZxƾoro8>9cC鼸>ͪi Hߙ``1Yn%@d H $ɒd Y2,E CLGX L[CjJUpM~߬67kpo>,s̑TF7W)5f}<{pu8Rԥ)g'DG!9ēp7MYJ!)3ODcLy{ݩnԱ00Mos]8QK7{pyxۄC(@q~+'_ {\$b̑&乜 k۔DBlnߋB+L.}7KB\lq CSMBAY:Ę]8J%t>2sIW\0"%31_/+P`i.rwu'r2jW`7˓Ӣ7!b@n-bfV#\;`bղfl=E4x^)ZVD de2fZıa?+LyЙb:\څ劈 8m%st{_\%kbYcvpB ⒕c:&q²''te03s?~\nDʣN2*_`!Teu`&O"flr\Ђo=)Cc[7<=6̀כןǨ?7 u|d@d H $ɒd Y2 $K%@d H $ɒd Y2,H%@d H $ɒd@2,H%@d H $Kd@2,H%@d Y2 $Kd@2,1"8|կ=U拂Abƈxoq58Oe=HRXk I=:ނVLj Q*~yDЉI[s.d ؜.J;$R$Vzj[+)$Df`8]- Da+ϼ{ƅHi8& ml!(J23D(؜~0"* )k",tw0xŪM {^Y[ 3W Lj? iEs km* tFJQIwAa%T_c$JBz{3A!@眓^Y[A{^م+P?*g v}@RYضAyFBIYrRHJB{tiѪw#1vaؐja+|3)Mqy%A$]MXXI)GAT$RFUDIXcDYUQUz/{9jHu(쪵 犂vcxdI!H49niN܅ 9u>㻳d Y2 $Kd@2,H%2 &@j8]hQ=7u- QH0A}X2xz)Ut d>U{~$""xmsTCE]c](STmyAEADAMEc̋"I drhvڙ.J/^+]\$Zb{k 6Ƙ"' P ԟ $]ҿkcjۙOp%'w}AI0Ph$}ߩ "Hw՝v&b z{WQxt؅p(BS E}qŢ.>HBA1_? B)QU%LH(Xwu D|p0k] _&u/c}ʬ4\cyɻ/ ']_qPD8EL/N0w@GR笵 mI j'_7CĶuCAF\|SN"|TtE[F]AUA~@nl:'-[&Huqpa85 *07d!J"_w1mmºt_`V} ۮ2g!a/_~a'x̪PƽQ _ "z /ꋔ H4p[ա)@NGݬ+HPyy<" E}Q@8"w%_><ԲI!shĒ>HzQ_HpU!$s#/ ޘ $K%@d H $ɒd Y2,j 8iRe']Da@漎9wS&|GZ#qj$ITX+J= ɘ+[R{QbI &a2EiFU$Rb"\ RtYbzC/Pzq3Q:A@03Vc7Arں46y<T@Q>ADP-&ZcBe]/!ָf:ki ǽZPSHoc^ẐJ]Cw 7"@N(( [bE$WE] ީ?%Ika\~W_$nEBD WEML@"""ilΛGA@5^pP&l"Iϛ} ۂ21].d@&FAD7x̐u nڅUv~yHI״_c|*tY; ξ|F= JFq"(Hi&O zK_urd֨˳T_` W BDn5Nj kAqʿDpf=,d 5ƽ Eh*(B;1FCsyVC5b"]4CHq:үz>Kڍkv}vC' QT%lceJJ+[۝_>!a?8 ;-nL;넉d}?pWu6F髓*Ygb ֈ@X WvQ_p5<-k\\&THw׾R?Β8!n@Z[$>:AT!9KL󏷩sH88@[Zz`:%5 { HB$1, X}~@A> )"FE2UXb1tQ4u~}H_oWs@PU}m֩9$ւax[g$k1 Tȗ]_d@d %\'\>Mm:y`oo7-ægTRYVgTBOTqujWfFc D\ ^vnֺrY=H,bqox!j][J->"Ǎ X._r9l\r&;܄vÿM d2K!Cd ۶vkº2ܱe7jKVρ1P8m!e އ*T!~eUƫZBt/C\Vj= a>Dz?mcNߕ1VM܄g=$ ۶va50s2 b ^U g2WoY6W!e *qS|79gJ~ux׻Nl).JQCh.S4yφpfsL_*MBob8W8.ڻZ%PE.C is*C 1e|a<i2?}KvyE։܍< ۶۝2*ܴPkhd}>:ws L5ͭ.KbhHn/uD5rŁu!?B{Wtf/ξR=8%}qɥYʾT>e0\.pć`^kɡڬHF|?a׆+Jc-$pZxƾoro8>9cC鼸>ͪi Hߙ``1Yn%@d H $ɒd Y2,E CLGoQ L[P';Ѩ7ShNf]H|aKf<;4 UJ Fio W7H E]ʞq} ݝJX8,%s 'E1$f4_vt)oܴ7dD-\Q@Qh5!}( $&ݏce4*]={V.y1EaR\NqN5mJf" !6 a=O.&r.P@DqYv DS8A1p~ >DbfL'C|ٚ4PM|^}Au)cwILI>vIɁ&NYuN%qI8 Lqv~2D"c(.}}}}}%n8t?OlH#sc/2oC%k( uHC!|[&ƸIy"(3gS0UcrQ\Q8kmoȨg %yD9gf!,X2.?LL ٳ~b{;|"nzk.{@eD* J̬{DssA āWabva0ku1#ތ1%sdq3u~1CbQܛ?2)>HNES0q8̰u" HwzCL.}7KB\lq CSMBAY:Ę]8J%t>2sIW\0"L̡ !ro=y ]ɡaZXMsݫ/f"akFa9"% &Z-ak"1{BGo-TJʤe̴c~VaBZڅ劈 8a\rIG8.^*aD) W8gĴۅB&> Pб68Y^yDbZkĘubHyIF ,Ju̚BWQ~3)2e@gNgH猂1D(x*XG^g[#g$1PUp˗5` aeH7Vq &"*,YY+!ଏ1)++)UH bV !H؇hC|SHlʣ2*'Ӊn@;#C7gĴۅu&wD|<ɴ3y=d$D9~o֊ҝ%+Q9SY$;{3Ln Bzc(qD$^?wS(*V,@ qиE@$Z f&>>cgqg Z@j1TUEt39FI!WulUk|&~;la69%ɒd Y2 $Kd@2,H $ɒd Y2 $Kd@d H $ɒd Y2 $K%@d H $ɒd Y2,H%@d _lIIENDB`openttd-1.3.3/media/extra_grf/rivers/rapids.png0000644000000000000000000004236312246102547020246 0ustar rootrootPNG  IHDRJ*ӜD pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt4W1rp NEYvR#hZq;szEEYU96폅EU#G ܤGKX|qxVMH1()+H QLEqbaYf)xpT>#+n:xSfMzM+)a5,"\(&,$l($* .!p~QO?]XXrTe!j twtO;[Je3w7pv~k&Q$jDyݲt ;0jTvFݤ2Qf:HQ#ο/r!oMHW~ڼ}edyvF|V_oJUy0q!ׇ+&ԶS6_\֛oMY` bdz,!Km+C>,>{>sm H"udwouټUf7(>quߏS'~_5Y4bw6|öH Ʃ>8j,oy|dwqDC8Op;Kپ l,|qram;kwFQM8]b빪 Oƌ'4>7DVGƩC5;Q+V{.ITA?\#pgWhwۭ|<h-G~;+PuYE;^^@}|P Zpcs_ˋ"D[]ӥ|L@ED,Кk9ΨQփEQxq㬏-(6nv"۽QW_^!F|7Z,%ݫwGU¢,8( /` ¡q5|RB0zODUan]xU<[tT(B3A;>U4GVafm_+JOd\fm`)w%̢,-| r]|kJ J)K)K)UJYJYJYJYRRʿE)R`M -JA" JJRcB˗B),R0ʗJ)PNȂR`R+&ґ ϫJ`n" ޢ7 N]R *S)@?=vl[h%Q &6"#>5T FT -*jS**aJщ&X ^JApI)ާmJmU\@U RO(ڤKnY)JALLgZ _N{T X=JARnS -R臓)f9!Z$JAuA)>U vO+RNJ;Jфy(R3!jR>*R-/:RZR$;5~B)_U ^pyQ6å|J[X^D[S)cP ˋF)hR bJX'PSltR\V 'R_-o(TTM bW o(D++J\+oM)A)e)e)eJ)K)K)K)UJYJǕ|\)0)FO(rR?@Q R)U3W trց?Kto)MtI)ޫ( iIB)R)܄/oM+lgUZؤk"!%P +Ûlntݟ*^Y|l5M(^ )]JAX ~/nҵY4=J܄MR@/ (p|FM)%;~R''WG{֪(&R8)| hI)@L)*O{D){R=xC)vJXS _)Mi"^T +f$2 KV)h'S)f^)@;Tw*kqۈI]bbfJ#hV )oAB R`u4t/\P (=znA)@JF>p%D G!RO/(֕,$47)zV)!Jdӎq`ҳpgQ6JAe:ӎN)tR#fL3W ]J ׳`h2Q f=˴=]||])MϭsR 4%45H.BfJ}bJ :1}؄# V y-~@)04HH?L )wyBY)+JBJD*bQ v6[DRV R*~G,J҂_Q @lG|*,,,,W)e)e)e)eJ)K)RRM)8SlS+o7'*z T J_ 8ަ[eRtuJ \R T MXW #_RR7+ OHm}F)J·p`g:% ١yYsJtI ^7J~@6pV)wKcCpX)024f+tO)iOjq XFaJ6bT)lڥ:_T ɰr塷믷}JA;N5W7VNHW tT^)Zi^6(OlX9w(!fYfR?. + RܥL:)Nz-a8dk>(@)uWM+y&=kR@oS K)JO&W %n`WGvwIFVtR)ؑRɢ;hg+8}0FcJAO'@ro>!|Y)XZ^4,W_T s+ 0}U)X\^gWi l2S eeR^JN)x.,]sk]^nyqRJA\th uFJ(hC): @BZC2Q ƒZPuFJaJ,PyJi$_)P)@\gx_gˋT)l9 Y*P)(`3gRP)$[)мa¢\*宄Y()>2Q bQ uRRRR\})R0fo(lvQ>cwuLR<^lM)xFD)4U LM+RMmҽh_nMѱl[ўj:Rp h鑷7)Uq\OU GR MعR`H"[㧿z`t JMt(JܩH@*)+JIX]T X R BR@W/)ޣ$JǹR' U Q |:M+OVxTddqI)R$PFTJrR0I8ɾo%R@L]GϛJ0^XN|fa`R:\(xR|&R3NEzP}t`dfJ(&?25]O)@&<N<}E)$JATic2i*~ߤ?yJS]LU ]IWn(_J)K)K)K)UJYJYJYJYRRʿE)#7+NT |)MY*AR |w)MJT|InSmJuS %O绨'zRw,WR g*KO)a}JkqbF)йRMnO+a-8`Ie`e,SJV pR`sS ${^J N)E)%bJ'V yqe*R @oP KJHf.۔3J3g+%്83oyBMJA),tJ6nI}Ƞ.'L@ hp4(MN|n+JJ:$S `C)hJA=J|I)xI(ʁ{`QJCd :E)O&W)MGR+R;X`L*0R \㺗&pE)u4;S V&GyXQ R0,fݩ,@Tzi)mG@,~C)X. |B)h:Zw;~!LT =0,5w qo)0aZs (V:2C6JZ,E `=aJH)XIȑW)R0LhTEU ̔+R0LXC|'@Rp"jQ F-JA¨E)H(  eP ( =b4E)UJYJYJYJYRRRRrRR,JSJ$R &~P)$JU 6T Ng/G?H%a{\):Xj|.R`KJ\T h;szپu~K>Dyid| ď(oqIXedˬhYR'zI" b5濠8R08TZ)7zT׷v.pzH|nQ |J)0tE)&pRg)F ^)7R A+O)S L)F(ߤxr(hTRM[ beQ)@C)nY~R<o 8. J&zjN)>!^Q p~b2R^TtG$VDMpr`vR^_\i&N` )R`v;USٿ<ʉR9R =2P*@*ϗR 47R=MtA)0ƓŋJm"aQ:R$!$S 0R?+tR0J.#`wG; !RmBCfhnl&еw,Ra|Q)] E),#[7|<ߥ.JRW ,)gP)T E)HQG,SJ  E)RPkdRpRE)\ʡR(JR ]qg7P4jJ)J׮RRRRrRRRR/eQ FT)fsQ)w9JW\)n.pTDfmE)]ʑR@E)H=JA :'`z)R`y{U)p6^J(P *&JdaX)PQ#KuR0{B)lhR1rJAp"hY+,g:RfJRg:+̲iT,")} ,%@:ބGa~Ʃw* U)MugIߋ;JJwJrMy*io(k=R0;1y^)pGGW &K{n@)na.J=(+7N\W $ ,l;B29+ B@ I9*kmJ.Gb :pd09)PX)"(R< VER.̕ @>J̔S)0T(J)PMP)P P@JSJڟQ RJt™lXQ@)E)HIR𥫔\*,KYѯӉ 3Q iZ#`Jƒ}Q vRgdXҠfE)%R)yJ$V ꭓ85|F)pRF@N)r^)hK NT &N+EN+R[JKhRl°R0xrvuE)x:v2S Fn !x?_<pOh=\\:P@9R06+`|Tm{tea':#@XYq@_T _^4Pׯ濯\)9)EbJr`RPżR)h.M=Z^̕Y)E GfE)8_^,Ja(J)`Rp5pĺ3rU InJXelJx4o(jae,JW (i=b,JRRRRrRRRR/;RH)0(ɔZq+[J+hSJA}RT  R*fr0T-&Kcws=;nRT׹=JA͕ۡw'cRwI)J뾸v~Z RDͧ`R~i.h;JAH\W g:0z)vtaSQF)iC\S $yaJ 6K)I}nCJEV kU6RPEoaҜV Fg:. S *Ey&u,!=L'c-JSB m) ƾU &Jq;l?y҄JAh\)xƩolzJWJA4ȹU6R0AR0Yh>y4FLS)b}mG[xJ$R 4C&T >&{RГq)"sQ `1@) #}'gŎ~i)D)\>WKJJAqV),BH)6Ry^)@H)x03iyJ2:[R4Q  7 JAl=PhC 3@/+uETT hQB)Kd|bcezE)@z̔CdQ0lXT rS )zI)p)R3W 2T o *:)YXo(`uJ4SH])h 0ZRp= UԢk)%(,,,W)e)e)e)eJ)K)RS (3R gFE>WdԓM<+SJƟ7K0d/(zR'J5Y Q t`|RU "qޏ7"Y/1D8,>6RR[`(}lo#4uY`푷镂M;)]{SUA_2#S 9LVii `Y9՟?~[}5te RCP۔M vRj*0; G)ۿ|zQ 5rOc`vlR0X&S u=R0 :g;$<~2nהyU)t]U WkO>yGcaqGoI ݳwe`B)WIJQG JR ܚR b=Wu4ؾ'&݈36R}W}G;}J+8*ӆ `"鼨L))՛3',Q{:$T f Q 8{8r ?KK e@YR.JrG;JZה(L=:lE?R+t@ N(έ&?.)ouJ_DzB(J؟P |vJR LpY(K A rQ qD)B)XZ^ 6;KrT @NJA4! N nغ%lJlJ)򣄜RjI"R0qb\fu lGe_Q &=N)0!ܔ1ܤ(Fߤ'0s[R}bR@$-ߠ l'xT)඙.;91yZ)xZg-{e% \S нnR V&pbQ l*`Lו_4kS dG@Y[inxSJ6&)f3MjR F]lФT ɘ\2\@:^Ìӄh.(LA]fu]GCL)UR0L“_ϺclJW )AOw^)i~`#аkJMf>!ZQR0R#N)JAKzQ0V 1hR@9RPSfJtJȭ(H^ehU mHȑfH6J(;K]B\NR)h0[`(klc|Rg(gP3Q'JrB)Q 3U (WKxHJmB*JRR y+P$Rū\*,KYܦhR(W@6]^);ME)8_W ߩ/(sJ(^tJݧHnJ*࿣TJ]+eyW R ʐH)rR`JS RR$Hw^)0!<#qwR``~ FֈJAR؍DN(nwR``80ޡ4tK}@)2NJJA;%Q (RU ڮ`t%aJ`|RbX͕zRo#%`Rд锂ٙN<J`C);HD)kJA0J %r0Ʃn0gd ( `*2R XÓI; l'<&c+`pў'h9rdrdp7N]Y}k(<WGFFO+E-[;KhI`Q\.R+fZRM&wc*dz.F(|J)xޥ )H(+ M)v#zL)0n>S</fJ΄W mv"eJ+a0X씂WGea1 ˟_U ڄbVz.e )G`b4y`d@>JAݦR9+}KKJA+(MBCmD)@RR |&JW)xE)8uI)hrE)8!,E)8~F)Q $G)0*GNEey* + A_P gSr5*,,,,W)e)^ʢ|T) 2U wa5jԯo<&R1&II)h>&X)]T Gl/M-p2T _T cJeh@M甂T t/I+ uB D)sD N)Ӈ &S  IZP ЧT kW fۈ|?JR`yR@]>H|i9qJ!&&q7(&CJAhZP &#כ*(N)ЫJAv`iJA\)F?~TޤiB{^)ubѣR(pY)JU JPɕ v+!R@R 8RaJ+O)0lfJm:FACToIe< JAHUQGt4pmk{b +ON<)g:(n0,!bSJ-=9;R`BN,t4@5"QIV6giŠ |/(]B`O*3R`&&!{I@wJAш"IN(3R`]M&=.(tA)JAuIRPںMz.~I)]e@).:0J|y,#Y(POeZN>Xu@3'`1l6D)@R+@H)'K) J:NR>2گ1HDnA)0j6J,hB)0/)÷:`9*<ä}Q RDny(Wံ( 0E)H_)\(Jި*ϢO |6_Q xRRRR\})RIÉ|F)J7*mp5MJALJAMR)h%S N٦;8uE)0Wn6+&I)X>xrA)J0iJL)X}T9`pXRQhRxz)ull=kS X`B)`R0N)X{J)>RRIVV?L_R(rRОH:9Lf_J+w*`&3JAH7^V /S* `&JmmM{J),P)#JʙN*bȾ6!R =P,)fRS*ϑR79&R .>RvR`\IJ*pRPOLk<u4ЌSRݤHut&5-(J3*^V *ʙԷ'Ky`x +GT5; #`( +tJAkF{ͧJ)e%W/%LTPGe;`Rݤ4~.UJ JA7Yu /*88sw)`RQtEd Qa`:lQG0օaqI:1R,@yJ)x)m*f  "Q J,$iBzs}wiG,YB-Кz@R> ´G))OTOw>7`G)@,Y)g6JA0[@9Ң {rR '@)PVQZ63R &T+|nP (R)?Ti*1"?9Lf"RJ@6RWno#>s>ؿF)&!0^S ډɅM)Ro#tJAslRtN7P Rӯˈ~Τ!9L6MxE)g:G`)R0 8R0V_Q ;:l7&Q \)J7F\j K &H9*z\)4FJmO|EoC e.*ߎSVF)Tbd:Rv_U V;I=De{\)@iX8yB)(V)XM@)'+9jT gR)X)&#<)dCwA7P:@\P b53Ga@K}C)P ճLQRPY^H) YJZGW).$4sF6`-aVJR)&4)`~A)h$!|_)tueO(}*B^J?t !3S ,3JARהR(JAeB)\)*PQ^[$QR,jQ ʵ֔RRR\I52.aIENDB`openttd-1.3.3/media/extra_grf/rivers/arctic.nfo0000644000000000000000000004213112246102547020220 0ustar rootroot// // $Id: arctic.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Arctic river graphics by andythenorth (Andrew Parkhouse)" -1 * 4 01 05 01 3C -1 sprites/arctic_snowy.png 8bpp 10 10 38 19 -5 0 normal -1 sprites/arctic_snowy.png 8bpp 58 10 38 18 -5 13 normal -1 sprites/arctic_snowy.png 8bpp 106 10 38 18 -31 13 normal -1 sprites/arctic_snowy.png 8bpp 154 10 38 19 -31 0 normal -1 sprites/arctic_snowy.png 8bpp 202 10 19 9 14 11 normal -1 sprites/arctic_snowy.png 8bpp 234 10 16 9 -7 22 normal -1 sprites/arctic_snowy.png 8bpp 266 10 19 9 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 298 10 16 9 -7 0 normal -1 sprites/arctic_snowy.png 8bpp 330 10 8 6 25 13 normal -1 sprites/arctic_snowy.png 8bpp 346 10 12 4 -5 27 normal -1 sprites/arctic_snowy.png 8bpp 364 10 8 6 -31 13 normal -1 sprites/arctic_snowy.png 8bpp 380 10 12 5 -5 0 normal -1 sprites/arctic_snowy.png 8bpp 10 40 40 11 -7 0 normal -1 sprites/arctic_snowy.png 8bpp 58 40 39 18 -6 5 normal -1 sprites/arctic_snowy.png 8bpp 106 40 38 11 -31 12 normal -1 sprites/arctic_snowy.png 8bpp 154 40 39 18 -31 0 normal -1 sprites/arctic_snowy.png 8bpp 202 40 20 6 13 5 normal -1 sprites/arctic_snowy.png 8bpp 234 40 13 7 -6 16 normal -1 sprites/arctic_snowy.png 8bpp 266 40 20 6 -31 12 normal -1 sprites/arctic_snowy.png 8bpp 298 40 13 7 -5 0 normal -1 sprites/arctic_snowy.png 8bpp 330 40 8 5 25 6 normal -1 sprites/arctic_snowy.png 8bpp 346 40 12 3 -5 20 normal -1 sprites/arctic_snowy.png 8bpp 364 40 8 4 -31 13 normal -1 sprites/arctic_snowy.png 8bpp 380 40 15 4 -7 0 normal -1 sprites/arctic_snowy.png 8bpp 10 70 38 20 -5 -8 normal -1 sprites/arctic_snowy.png 8bpp 58 70 38 26 -5 5 normal -1 sprites/arctic_snowy.png 8bpp 106 70 37 20 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 154 70 38 27 -31 -8 normal -1 sprites/arctic_snowy.png 8bpp 202 70 16 9 17 3 normal -1 sprites/arctic_snowy.png 8bpp 234 70 15 9 -7 22 normal -1 sprites/arctic_snowy.png 8bpp 266 70 16 9 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 298 70 15 9 -6 -8 normal -1 sprites/arctic_snowy.png 8bpp 330 70 8 7 25 5 normal -1 sprites/arctic_snowy.png 8bpp 346 70 10 5 -4 27 normal -1 sprites/arctic_snowy.png 8bpp 364 70 8 7 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 380 70 12 6 -5 -8 normal -1 sprites/arctic_snowy.png 8bpp 10 100 39 18 -6 0 normal -1 sprites/arctic_snowy.png 8bpp 58 100 38 11 -5 12 normal -1 sprites/arctic_snowy.png 8bpp 106 100 39 18 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 154 100 40 11 -32 0 normal -1 sprites/arctic_snowy.png 8bpp 202 100 20 6 13 12 normal -1 sprites/arctic_snowy.png 8bpp 234 100 13 7 -5 16 normal -1 sprites/arctic_snowy.png 8bpp 266 100 20 6 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 298 100 13 7 -6 0 normal -1 sprites/arctic_snowy.png 8bpp 330 100 8 4 26 13 normal -1 sprites/arctic_snowy.png 8bpp 346 100 12 3 -5 20 normal -1 sprites/arctic_snowy.png 8bpp 364 100 8 5 -31 6 normal -1 sprites/arctic_snowy.png 8bpp 380 100 15 4 -6 0 normal -1 sprites/arctic_snowy.png 8bpp 10 130 38 27 -5 -8 normal -1 sprites/arctic_snowy.png 8bpp 58 130 37 20 -4 11 normal -1 sprites/arctic_snowy.png 8bpp 106 130 37 26 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 154 130 38 20 -31 -8 normal -1 sprites/arctic_snowy.png 8bpp 202 130 16 9 17 11 normal -1 sprites/arctic_snowy.png 8bpp 234 130 15 9 -6 22 normal -1 sprites/arctic_snowy.png 8bpp 266 130 16 9 -31 3 normal -1 sprites/arctic_snowy.png 8bpp 298 130 15 9 -7 -8 normal -1 sprites/arctic_snowy.png 8bpp 330 130 8 7 25 11 normal -1 sprites/arctic_snowy.png 8bpp 346 130 10 5 -4 26 normal -1 sprites/arctic_snowy.png 8bpp 364 130 8 7 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 380 130 12 6 -5 -8 normal -1 * 7 02 05 30 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/arctic_brown.png 8bpp 10 10 38 19 -5 0 normal -1 sprites/arctic_brown.png 8bpp 58 10 38 18 -5 13 normal -1 sprites/arctic_brown.png 8bpp 106 10 38 18 -31 13 normal -1 sprites/arctic_brown.png 8bpp 154 10 38 19 -31 0 normal -1 sprites/arctic_brown.png 8bpp 202 10 19 9 14 11 normal -1 sprites/arctic_brown.png 8bpp 234 10 16 9 -7 22 normal -1 sprites/arctic_brown.png 8bpp 266 10 19 9 -31 11 normal -1 sprites/arctic_brown.png 8bpp 298 10 16 9 -7 0 normal -1 sprites/arctic_brown.png 8bpp 330 10 8 6 25 13 normal -1 sprites/arctic_brown.png 8bpp 346 10 12 4 -5 27 normal -1 sprites/arctic_brown.png 8bpp 364 10 8 6 -31 13 normal -1 sprites/arctic_brown.png 8bpp 380 10 12 5 -5 0 normal -1 sprites/arctic_brown.png 8bpp 10 40 40 11 -7 0 normal -1 sprites/arctic_brown.png 8bpp 58 40 39 18 -6 5 normal -1 sprites/arctic_brown.png 8bpp 106 40 38 11 -31 12 normal -1 sprites/arctic_brown.png 8bpp 154 40 39 18 -31 0 normal -1 sprites/arctic_brown.png 8bpp 202 40 20 6 13 5 normal -1 sprites/arctic_brown.png 8bpp 234 40 13 7 -6 16 normal -1 sprites/arctic_brown.png 8bpp 266 40 20 6 -31 12 normal -1 sprites/arctic_brown.png 8bpp 298 40 13 7 -5 0 normal -1 sprites/arctic_brown.png 8bpp 330 40 8 5 25 6 normal -1 sprites/arctic_brown.png 8bpp 346 40 12 3 -5 20 normal -1 sprites/arctic_brown.png 8bpp 364 40 8 4 -31 13 normal -1 sprites/arctic_brown.png 8bpp 380 40 15 4 -7 0 normal -1 sprites/arctic_brown.png 8bpp 10 70 38 20 -5 -8 normal -1 sprites/arctic_brown.png 8bpp 58 70 38 26 -5 5 normal -1 sprites/arctic_brown.png 8bpp 106 70 37 20 -31 11 normal -1 sprites/arctic_brown.png 8bpp 154 70 38 27 -31 -8 normal -1 sprites/arctic_brown.png 8bpp 202 70 16 9 17 3 normal -1 sprites/arctic_brown.png 8bpp 234 70 15 9 -7 22 normal -1 sprites/arctic_brown.png 8bpp 266 70 16 9 -31 11 normal -1 sprites/arctic_brown.png 8bpp 298 70 15 9 -6 -8 normal -1 sprites/arctic_brown.png 8bpp 330 70 8 7 25 5 normal -1 sprites/arctic_brown.png 8bpp 346 70 10 5 -4 27 normal -1 sprites/arctic_brown.png 8bpp 364 70 8 7 -31 11 normal -1 sprites/arctic_brown.png 8bpp 380 70 12 6 -5 -8 normal -1 sprites/arctic_brown.png 8bpp 10 100 39 18 -6 0 normal -1 sprites/arctic_brown.png 8bpp 58 100 38 11 -5 12 normal -1 sprites/arctic_brown.png 8bpp 106 100 39 18 -31 5 normal -1 sprites/arctic_brown.png 8bpp 154 100 40 11 -32 0 normal -1 sprites/arctic_brown.png 8bpp 202 100 20 6 13 12 normal -1 sprites/arctic_brown.png 8bpp 234 100 13 7 -5 16 normal -1 sprites/arctic_brown.png 8bpp 266 100 20 6 -31 5 normal -1 sprites/arctic_brown.png 8bpp 298 100 13 7 -6 0 normal -1 sprites/arctic_brown.png 8bpp 330 100 8 4 26 13 normal -1 sprites/arctic_brown.png 8bpp 346 100 12 3 -5 20 normal -1 sprites/arctic_brown.png 8bpp 364 100 8 5 -31 6 normal -1 sprites/arctic_brown.png 8bpp 380 100 15 4 -6 0 normal -1 sprites/arctic_brown.png 8bpp 10 130 38 27 -5 -8 normal -1 sprites/arctic_brown.png 8bpp 58 130 37 20 -4 11 normal -1 sprites/arctic_brown.png 8bpp 106 130 37 26 -31 5 normal -1 sprites/arctic_brown.png 8bpp 154 130 38 20 -31 -8 normal -1 sprites/arctic_brown.png 8bpp 202 130 16 9 17 11 normal -1 sprites/arctic_brown.png 8bpp 234 130 15 9 -6 22 normal -1 sprites/arctic_brown.png 8bpp 266 130 16 9 -31 3 normal -1 sprites/arctic_brown.png 8bpp 298 130 15 9 -7 -8 normal -1 sprites/arctic_brown.png 8bpp 330 130 8 7 25 11 normal -1 sprites/arctic_brown.png 8bpp 346 130 10 5 -4 26 normal -1 sprites/arctic_brown.png 8bpp 364 130 8 7 -31 5 normal -1 sprites/arctic_brown.png 8bpp 380 130 12 6 -5 -8 normal -1 * 7 02 05 31 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/arctic_snowy.png 8bpp 10 210 38 19 -5 0 normal -1 sprites/arctic_snowy.png 8bpp 58 210 38 18 -5 13 normal -1 sprites/arctic_snowy.png 8bpp 106 210 38 18 -31 13 normal -1 sprites/arctic_snowy.png 8bpp 154 210 38 19 -31 0 normal -1 sprites/arctic_snowy.png 8bpp 202 210 19 9 14 11 normal -1 sprites/arctic_snowy.png 8bpp 234 210 16 9 -7 22 normal -1 sprites/arctic_snowy.png 8bpp 266 210 19 9 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 298 210 16 9 -7 0 normal -1 sprites/arctic_snowy.png 8bpp 330 210 8 6 25 13 normal -1 sprites/arctic_snowy.png 8bpp 346 210 12 4 -5 27 normal -1 sprites/arctic_snowy.png 8bpp 364 210 8 6 -31 13 normal -1 sprites/arctic_snowy.png 8bpp 380 210 12 5 -5 0 normal -1 sprites/arctic_snowy.png 8bpp 10 240 40 11 -7 0 normal -1 sprites/arctic_snowy.png 8bpp 58 240 39 18 -6 5 normal -1 sprites/arctic_snowy.png 8bpp 106 240 38 11 -31 12 normal -1 sprites/arctic_snowy.png 8bpp 154 240 39 18 -31 0 normal -1 sprites/arctic_snowy.png 8bpp 202 240 20 6 13 5 normal -1 sprites/arctic_snowy.png 8bpp 234 240 13 7 -6 16 normal -1 sprites/arctic_snowy.png 8bpp 266 240 20 6 -31 12 normal -1 sprites/arctic_snowy.png 8bpp 298 240 13 7 -5 0 normal -1 sprites/arctic_snowy.png 8bpp 330 240 8 5 25 6 normal -1 sprites/arctic_snowy.png 8bpp 346 240 12 3 -5 20 normal -1 sprites/arctic_snowy.png 8bpp 364 240 8 4 -31 13 normal -1 sprites/arctic_snowy.png 8bpp 380 240 15 4 -7 0 normal -1 sprites/arctic_snowy.png 8bpp 10 270 38 20 -5 -8 normal -1 sprites/arctic_snowy.png 8bpp 58 270 38 26 -5 5 normal -1 sprites/arctic_snowy.png 8bpp 106 270 37 20 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 154 270 38 27 -31 -8 normal -1 sprites/arctic_snowy.png 8bpp 202 270 16 9 17 3 normal -1 sprites/arctic_snowy.png 8bpp 234 270 15 9 -7 22 normal -1 sprites/arctic_snowy.png 8bpp 266 270 16 9 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 298 270 15 9 -6 -8 normal -1 sprites/arctic_snowy.png 8bpp 330 270 8 7 25 5 normal -1 sprites/arctic_snowy.png 8bpp 346 270 10 5 -4 27 normal -1 sprites/arctic_snowy.png 8bpp 364 270 8 7 -31 11 normal -1 sprites/arctic_snowy.png 8bpp 380 270 12 6 -5 -8 normal -1 sprites/arctic_snowy.png 8bpp 10 300 39 18 -6 0 normal -1 sprites/arctic_snowy.png 8bpp 58 300 38 11 -5 12 normal -1 sprites/arctic_snowy.png 8bpp 106 300 39 18 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 154 300 40 11 -32 0 normal -1 sprites/arctic_snowy.png 8bpp 202 300 20 6 13 12 normal -1 sprites/arctic_snowy.png 8bpp 234 300 13 7 -5 16 normal -1 sprites/arctic_snowy.png 8bpp 266 300 20 6 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 298 300 13 7 -6 0 normal -1 sprites/arctic_snowy.png 8bpp 330 300 8 4 26 13 normal -1 sprites/arctic_snowy.png 8bpp 346 300 12 3 -5 20 normal -1 sprites/arctic_snowy.png 8bpp 364 300 8 5 -31 6 normal -1 sprites/arctic_snowy.png 8bpp 380 300 15 4 -6 0 normal -1 sprites/arctic_snowy.png 8bpp 10 330 38 27 -5 -8 normal -1 sprites/arctic_snowy.png 8bpp 58 330 37 20 -4 11 normal -1 sprites/arctic_snowy.png 8bpp 106 330 37 26 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 154 330 38 20 -31 -8 normal -1 sprites/arctic_snowy.png 8bpp 202 330 16 9 17 11 normal -1 sprites/arctic_snowy.png 8bpp 234 330 15 9 -6 22 normal -1 sprites/arctic_snowy.png 8bpp 266 330 16 9 -31 3 normal -1 sprites/arctic_snowy.png 8bpp 298 330 15 9 -7 -8 normal -1 sprites/arctic_snowy.png 8bpp 330 330 8 7 25 11 normal -1 sprites/arctic_snowy.png 8bpp 346 330 10 5 -4 26 normal -1 sprites/arctic_snowy.png 8bpp 364 330 8 7 -31 5 normal -1 sprites/arctic_snowy.png 8bpp 380 330 12 6 -5 -8 normal -1 * 7 02 05 32 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/arctic_brown.png 8bpp 10 210 38 19 -5 0 normal -1 sprites/arctic_brown.png 8bpp 58 210 38 18 -5 13 normal -1 sprites/arctic_brown.png 8bpp 106 210 38 18 -31 13 normal -1 sprites/arctic_brown.png 8bpp 154 210 38 19 -31 0 normal -1 sprites/arctic_brown.png 8bpp 202 210 19 9 14 11 normal -1 sprites/arctic_brown.png 8bpp 234 210 16 9 -7 22 normal -1 sprites/arctic_brown.png 8bpp 266 210 19 9 -31 11 normal -1 sprites/arctic_brown.png 8bpp 298 210 16 9 -7 0 normal -1 sprites/arctic_brown.png 8bpp 330 210 8 6 25 13 normal -1 sprites/arctic_brown.png 8bpp 346 210 12 4 -5 27 normal -1 sprites/arctic_brown.png 8bpp 364 210 8 6 -31 13 normal -1 sprites/arctic_brown.png 8bpp 380 210 12 5 -5 0 normal -1 sprites/arctic_brown.png 8bpp 10 240 40 11 -7 0 normal -1 sprites/arctic_brown.png 8bpp 58 240 39 18 -6 5 normal -1 sprites/arctic_brown.png 8bpp 106 240 38 11 -31 12 normal -1 sprites/arctic_brown.png 8bpp 154 240 39 18 -31 0 normal -1 sprites/arctic_brown.png 8bpp 202 240 20 6 13 5 normal -1 sprites/arctic_brown.png 8bpp 234 240 13 7 -6 16 normal -1 sprites/arctic_brown.png 8bpp 266 240 20 6 -31 12 normal -1 sprites/arctic_brown.png 8bpp 298 240 13 7 -5 0 normal -1 sprites/arctic_brown.png 8bpp 330 240 8 5 25 6 normal -1 sprites/arctic_brown.png 8bpp 346 240 12 3 -5 20 normal -1 sprites/arctic_brown.png 8bpp 364 240 8 4 -31 13 normal -1 sprites/arctic_brown.png 8bpp 380 240 15 4 -7 0 normal -1 sprites/arctic_brown.png 8bpp 10 270 38 20 -5 -8 normal -1 sprites/arctic_brown.png 8bpp 58 270 38 26 -5 5 normal -1 sprites/arctic_brown.png 8bpp 106 270 37 20 -31 11 normal -1 sprites/arctic_brown.png 8bpp 154 270 38 27 -31 -8 normal -1 sprites/arctic_brown.png 8bpp 202 270 16 9 17 3 normal -1 sprites/arctic_brown.png 8bpp 234 270 15 9 -7 22 normal -1 sprites/arctic_brown.png 8bpp 266 270 16 9 -31 11 normal -1 sprites/arctic_brown.png 8bpp 298 270 15 9 -6 -8 normal -1 sprites/arctic_brown.png 8bpp 330 270 8 7 25 5 normal -1 sprites/arctic_brown.png 8bpp 346 270 10 5 -4 27 normal -1 sprites/arctic_brown.png 8bpp 364 270 8 7 -31 11 normal -1 sprites/arctic_brown.png 8bpp 380 270 12 6 -5 -8 normal -1 sprites/arctic_brown.png 8bpp 10 300 39 18 -6 0 normal -1 sprites/arctic_brown.png 8bpp 58 300 38 11 -5 12 normal -1 sprites/arctic_brown.png 8bpp 106 300 39 18 -31 5 normal -1 sprites/arctic_brown.png 8bpp 154 300 40 11 -32 0 normal -1 sprites/arctic_brown.png 8bpp 202 300 20 6 13 12 normal -1 sprites/arctic_brown.png 8bpp 234 300 13 7 -5 16 normal -1 sprites/arctic_brown.png 8bpp 266 300 20 6 -31 5 normal -1 sprites/arctic_brown.png 8bpp 298 300 13 7 -6 0 normal -1 sprites/arctic_brown.png 8bpp 330 300 8 4 26 13 normal -1 sprites/arctic_brown.png 8bpp 346 300 12 3 -5 20 normal -1 sprites/arctic_brown.png 8bpp 364 300 8 5 -31 6 normal -1 sprites/arctic_brown.png 8bpp 380 300 15 4 -6 0 normal -1 sprites/arctic_brown.png 8bpp 10 330 38 27 -5 -8 normal -1 sprites/arctic_brown.png 8bpp 58 330 37 20 -4 11 normal -1 sprites/arctic_brown.png 8bpp 106 330 37 26 -31 5 normal -1 sprites/arctic_brown.png 8bpp 154 330 38 20 -31 -8 normal -1 sprites/arctic_brown.png 8bpp 202 330 16 9 17 11 normal -1 sprites/arctic_brown.png 8bpp 234 330 15 9 -6 22 normal -1 sprites/arctic_brown.png 8bpp 266 330 16 9 -31 3 normal -1 sprites/arctic_brown.png 8bpp 298 330 15 9 -7 -8 normal -1 sprites/arctic_brown.png 8bpp 330 330 8 7 25 11 normal -1 sprites/arctic_brown.png 8bpp 346 330 10 5 -4 26 normal -1 sprites/arctic_brown.png 8bpp 364 330 8 7 -31 5 normal -1 sprites/arctic_brown.png 8bpp 380 330 12 6 -5 -8 normal -1 * 7 02 05 33 01 00 00 00 -1 * 14 02 05 34 81 81 00 FF 01 30 00 04 04 31 00 -1 * 14 02 05 35 81 81 00 FF 01 32 00 04 04 33 00 -1 * 14 02 05 36 81 80 00 FF 01 34 00 00 00 35 00 -1 * 6 07 83 01 \7! 01 01 -1 * 7 03 05 01 06 00 36 00 openttd-1.3.3/media/extra_grf/rivers/toyland.nfo0000644000000000000000000002047712246102547020436 0ustar rootroot// // $Id: toyland.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Toyland river graphics by andythenorth (Andrew Parkhouse)" -1 * 4 01 05 01 3C -1 sprites/toyland.png 8bpp 10 10 38 19 -5 0 normal -1 sprites/toyland.png 8bpp 58 10 38 18 -5 13 normal -1 sprites/toyland.png 8bpp 106 10 38 18 -31 13 normal -1 sprites/toyland.png 8bpp 154 10 38 19 -31 0 normal -1 sprites/toyland.png 8bpp 202 10 19 9 14 11 normal -1 sprites/toyland.png 8bpp 234 10 16 9 -7 22 normal -1 sprites/toyland.png 8bpp 266 10 19 9 -31 11 normal -1 sprites/toyland.png 8bpp 298 10 16 9 -7 0 normal -1 sprites/toyland.png 8bpp 330 10 8 6 25 13 normal -1 sprites/toyland.png 8bpp 346 10 12 4 -5 27 normal -1 sprites/toyland.png 8bpp 364 10 8 6 -31 13 normal -1 sprites/toyland.png 8bpp 380 10 12 5 -5 0 normal -1 sprites/toyland.png 8bpp 10 40 40 11 -7 0 normal -1 sprites/toyland.png 8bpp 58 40 39 18 -6 5 normal -1 sprites/toyland.png 8bpp 106 40 38 11 -31 12 normal -1 sprites/toyland.png 8bpp 154 40 39 18 -31 0 normal -1 sprites/toyland.png 8bpp 202 40 20 6 13 5 normal -1 sprites/toyland.png 8bpp 234 40 13 7 -6 16 normal -1 sprites/toyland.png 8bpp 266 40 20 6 -31 12 normal -1 sprites/toyland.png 8bpp 298 40 13 7 -5 0 normal -1 sprites/toyland.png 8bpp 330 40 8 5 25 6 normal -1 sprites/toyland.png 8bpp 346 40 12 3 -5 20 normal -1 sprites/toyland.png 8bpp 364 40 8 4 -31 13 normal -1 sprites/toyland.png 8bpp 380 40 15 4 -7 0 normal -1 sprites/toyland.png 8bpp 10 70 38 20 -5 -8 normal -1 sprites/toyland.png 8bpp 58 70 38 26 -5 5 normal -1 sprites/toyland.png 8bpp 106 70 37 20 -31 11 normal -1 sprites/toyland.png 8bpp 154 70 38 27 -31 -8 normal -1 sprites/toyland.png 8bpp 202 70 16 9 17 3 normal -1 sprites/toyland.png 8bpp 234 70 15 9 -7 22 normal -1 sprites/toyland.png 8bpp 266 70 16 9 -31 11 normal -1 sprites/toyland.png 8bpp 298 70 15 9 -6 -8 normal -1 sprites/toyland.png 8bpp 330 70 8 7 25 5 normal -1 sprites/toyland.png 8bpp 346 70 10 5 -4 27 normal -1 sprites/toyland.png 8bpp 364 70 8 7 -31 11 normal -1 sprites/toyland.png 8bpp 380 70 12 6 -5 -8 normal -1 sprites/toyland.png 8bpp 10 100 39 18 -6 0 normal -1 sprites/toyland.png 8bpp 58 100 38 11 -5 12 normal -1 sprites/toyland.png 8bpp 106 100 39 18 -31 5 normal -1 sprites/toyland.png 8bpp 154 100 40 11 -32 0 normal -1 sprites/toyland.png 8bpp 202 100 20 6 13 12 normal -1 sprites/toyland.png 8bpp 234 100 13 7 -5 16 normal -1 sprites/toyland.png 8bpp 266 100 20 6 -31 5 normal -1 sprites/toyland.png 8bpp 298 100 13 7 -6 0 normal -1 sprites/toyland.png 8bpp 330 100 8 4 26 13 normal -1 sprites/toyland.png 8bpp 346 100 12 3 -5 20 normal -1 sprites/toyland.png 8bpp 364 100 8 5 -31 6 normal -1 sprites/toyland.png 8bpp 380 100 15 4 -6 0 normal -1 sprites/toyland.png 8bpp 10 130 38 27 -5 -8 normal -1 sprites/toyland.png 8bpp 58 130 37 20 -4 11 normal -1 sprites/toyland.png 8bpp 106 130 37 26 -31 5 normal -1 sprites/toyland.png 8bpp 154 130 38 20 -31 -8 normal -1 sprites/toyland.png 8bpp 202 130 16 9 17 11 normal -1 sprites/toyland.png 8bpp 234 130 15 9 -6 22 normal -1 sprites/toyland.png 8bpp 266 130 16 9 -31 3 normal -1 sprites/toyland.png 8bpp 298 130 15 9 -7 -8 normal -1 sprites/toyland.png 8bpp 330 130 8 7 25 11 normal -1 sprites/toyland.png 8bpp 346 130 10 5 -4 26 normal -1 sprites/toyland.png 8bpp 364 130 8 7 -31 5 normal -1 sprites/toyland.png 8bpp 380 130 12 6 -5 -8 normal -1 * 7 02 05 50 01 00 00 00 -1 * 4 01 05 01 3C -1 sprites/toyland.png 8bpp 10 210 38 19 -5 0 normal -1 sprites/toyland.png 8bpp 58 210 38 18 -5 13 normal -1 sprites/toyland.png 8bpp 106 210 38 18 -31 13 normal -1 sprites/toyland.png 8bpp 154 210 38 19 -31 0 normal -1 sprites/toyland.png 8bpp 202 210 19 9 14 11 normal -1 sprites/toyland.png 8bpp 234 210 16 9 -7 22 normal -1 sprites/toyland.png 8bpp 266 210 19 9 -31 11 normal -1 sprites/toyland.png 8bpp 298 210 16 9 -7 0 normal -1 sprites/toyland.png 8bpp 330 210 8 6 25 13 normal -1 sprites/toyland.png 8bpp 346 210 12 4 -5 27 normal -1 sprites/toyland.png 8bpp 364 210 8 6 -31 13 normal -1 sprites/toyland.png 8bpp 380 210 12 5 -5 0 normal -1 sprites/toyland.png 8bpp 10 240 40 11 -7 0 normal -1 sprites/toyland.png 8bpp 58 240 39 18 -6 5 normal -1 sprites/toyland.png 8bpp 106 240 38 11 -31 12 normal -1 sprites/toyland.png 8bpp 154 240 39 18 -31 0 normal -1 sprites/toyland.png 8bpp 202 240 20 6 13 5 normal -1 sprites/toyland.png 8bpp 234 240 13 7 -6 16 normal -1 sprites/toyland.png 8bpp 266 240 20 6 -31 12 normal -1 sprites/toyland.png 8bpp 298 240 13 7 -5 0 normal -1 sprites/toyland.png 8bpp 330 240 8 5 25 6 normal -1 sprites/toyland.png 8bpp 346 240 12 3 -5 20 normal -1 sprites/toyland.png 8bpp 364 240 8 4 -31 13 normal -1 sprites/toyland.png 8bpp 380 240 15 4 -7 0 normal -1 sprites/toyland.png 8bpp 10 270 38 20 -5 -8 normal -1 sprites/toyland.png 8bpp 58 270 38 26 -5 5 normal -1 sprites/toyland.png 8bpp 106 270 37 20 -31 11 normal -1 sprites/toyland.png 8bpp 154 270 38 27 -31 -8 normal -1 sprites/toyland.png 8bpp 202 270 16 9 17 3 normal -1 sprites/toyland.png 8bpp 234 270 15 9 -7 22 normal -1 sprites/toyland.png 8bpp 266 270 16 9 -31 11 normal -1 sprites/toyland.png 8bpp 298 270 15 9 -6 -8 normal -1 sprites/toyland.png 8bpp 330 270 8 7 25 5 normal -1 sprites/toyland.png 8bpp 346 270 10 5 -4 27 normal -1 sprites/toyland.png 8bpp 364 270 8 7 -31 11 normal -1 sprites/toyland.png 8bpp 380 270 12 6 -5 -8 normal -1 sprites/toyland.png 8bpp 10 300 39 18 -6 0 normal -1 sprites/toyland.png 8bpp 58 300 38 11 -5 12 normal -1 sprites/toyland.png 8bpp 106 300 39 18 -31 5 normal -1 sprites/toyland.png 8bpp 154 300 40 11 -32 0 normal -1 sprites/toyland.png 8bpp 202 300 20 6 13 12 normal -1 sprites/toyland.png 8bpp 234 300 13 7 -5 16 normal -1 sprites/toyland.png 8bpp 266 300 20 6 -31 5 normal -1 sprites/toyland.png 8bpp 298 300 13 7 -6 0 normal -1 sprites/toyland.png 8bpp 330 300 8 4 26 13 normal -1 sprites/toyland.png 8bpp 346 300 12 3 -5 20 normal -1 sprites/toyland.png 8bpp 364 300 8 5 -31 6 normal -1 sprites/toyland.png 8bpp 380 300 15 4 -6 0 normal -1 sprites/toyland.png 8bpp 10 330 38 27 -5 -8 normal -1 sprites/toyland.png 8bpp 58 330 37 20 -4 11 normal -1 sprites/toyland.png 8bpp 106 330 37 26 -31 5 normal -1 sprites/toyland.png 8bpp 154 330 38 20 -31 -8 normal -1 sprites/toyland.png 8bpp 202 330 16 9 17 11 normal -1 sprites/toyland.png 8bpp 234 330 15 9 -6 22 normal -1 sprites/toyland.png 8bpp 266 330 16 9 -31 3 normal -1 sprites/toyland.png 8bpp 298 330 15 9 -7 -8 normal -1 sprites/toyland.png 8bpp 330 330 8 7 25 11 normal -1 sprites/toyland.png 8bpp 346 330 10 5 -4 26 normal -1 sprites/toyland.png 8bpp 364 330 8 7 -31 5 normal -1 sprites/toyland.png 8bpp 380 330 12 6 -5 -8 normal -1 * 7 02 05 51 01 00 00 00 -1 * 14 02 05 52 81 80 00 FF 01 50 00 00 00 51 00 -1 * 6 07 83 01 \7! 03 01 -1 * 7 03 05 01 06 00 52 00 openttd-1.3.3/media/extra_grf/rivers/arctic_snowy.png0000644000000000000000000003274412246102547021472 0ustar rootrootPNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt46~" 9D*@/";E`~^fFsAFͤ}~̌077X(Ҍ~t*1j p34_qط47\'lϯnnphH~`f9}j0|)άDO4Ȏ O4[^>|q=if>X`@?6d~86 k`\J|ņaƵe[`$`vo^6XG]f6YSk@o~Q gBp=&-ׯ?r=NW?֢]VFI qhcO4PXF#}*כf(k]eyeNOFV5=͎_~?3٬47ld2c_D&I7vc0X^O#](I1=OvՏѬ']֔ < IԹÑlDq7v)]c6H|L}9~tV)wQeU]q:32׏z RӻNM65 =[&s$`ʝ4KHC'd8Jݥ. H;^N,[$QٜHmَeoBJJҀҀ4 4 H+ HJJ/ dx>Vu0 U:_0UF.B:Ք/!hm=h=pwY"ǻ 6P"o.1̌TR%p`켾 jf%`ZَP$Ws }rhہ!31q8Q%7K%R=kdj7NJeh|K܆3 Z >Hp,aӀiRg]ц; q*@@&A)؅vIO5 y|:I367{x#-)YI75SnTOr4^ڐno z(>tuxG.V9~vKK ]QI@Z q4d!VryuQ:w$,[3.;$8)W?WzxM9}\yn5n%ǁ }b/&gKzTS}T&-,b@ݜ%ݫ8'Yl1%ǀMP]%s-8W7$rh4vf>bB}_yMK6?G܍ȉ.In'})G5LFV쟯!뛫Jgi~i@c7Sw\@h$r.~4ߑzHJU^9Fik H$Ÿ$K< @k<֏H)[l3&_Hc-8$Qmt}@h/HOIemm)9[3s?{_B3v<༽ߞ(2I[>͡U6k32Dn!WY׎f/mfJZT۵!<=Y׏np9v3Y HMEM9sJ&id2i? }<*{?N?q}#-S^ gYl9bKSMe%j}JWXռR{ lS`M?ْf< =9.0=ohNG23|Zڟ- c<۵vN5_|MϻvѿȣBzY[loJo:$={y33] :OkۦgO~ hL&ITA$w,9+RdoXQ~7̅_S>} Xm?,erU!ՙ\&A>A% ]HÚ?IQ$&|[~R`~b ۫(VVii@Zi@VV !w,^Kĭ g~wS 5uz"z' w~FePFDN_@Lbؿs]9n J9kk ~lGBo?4I=ǨN> #'s0hъ\ q @P->o0:!H0y Q"nC{*`wǮ58 >LDY`"1| ^~K@n@!.@>~~, 8hHO9ڐ]DL2ݒar?%Ro*ON6Q۸̫moK rUȸEowFH߷=~wQkd` ӗw k&f srRlVKYXx2G D. Jr؈<ۆڭ$6(7XȇCBN; UZmT;;Vo=r+; V67?Ӏ ݖë֊DxTfSZ}%ϻJGnӾR`pOc$z;؉)Es+OվZse(w%Rwuokq05Sm<9YՕQjݥf%E1Eыm_5ҍGE+C#KGAۚQ(Nxy0ֽw?/:o.0@X<'hkBmۀ싒;)Ϊ iA 1]dCM_} _|1F6i@'iii@Zi@Viii@Zi@Viii@Zi@Viii@Zi@Viii@Zi@Viii@Zi@VB~8sMw?Qd%y}rT\FX?}8{u|\)i6?j\;r!F4[>1#HNXO$g[8[(L#qTNZv777)]/~'ana?% 3?`n*n"9E`ϝH#A^;Fq)^N XA'3)27V4*܅6 5p,n7! `po\ea[H E26אrS]W!NI]료ѝ\f,-$iPq3ꤹI%MA o]{ 1$vQ zuD`s$iV!(S1*c@p&)n&G叐ˋ fK 4b s-Ttif0c+6bIM$jϯP= tT]>$iDFsW!it[4'Li `lh͖%cϿysL׺IӋvԯN+s;᤽iDs#jvw첆O&in)&XA2r yr5ٸVzD0?s:Q n 6*>J:{M(M_W@ʧNDɊb6Q~$v]f}q}(plIHj]NR%c?y_F <;\(ʜ Dy6opzygu@sWhotF!0HBd\q@BŽu*`nfowׇ<Ϝ]'Y.'ӂV(wgw?[éBnii@Zi@Viie($wa8ڏ3o'SK7r-ddNnVb^^^Bq9,[Q JayǴos&D&OӀ4!o1Ѭ^)K"kN~*Fuql/lBef7K Tg=ԫ$4[*ne  y(=\ }%R d9NH5zPQ{ȡFf!+ %$c*3.ɲN&}W^}>BfVMC8ZiZ?.<%ؚnzJ]c%笜d'H)vߖ6-WB2^^H7YqM\^= 6Jk{H"SJi4 ܯWz|Y:MMmАo-J(w(llM 뿮q/]cbTm{oȾWFYs*I}m)Rݝd8 8]!?H֓AW%A@(&jx ͕$&ׁ0fͯE솀cz=Z ΎtA]}[ԖfvA< M鲦$nQH6'&[-8ϛ_;q( .f5OxL:;̨ ~8F~׏z RӻNM65 =[&s$`^4KHC'wRB$rzgF N/'-@l?$LlGRV}7ziii@Zi@Vii2O>Vu0 i///:_0UF.Bi5JƗ4 Ifa.g'7,9EBwB#lMudfL*cMX]P0 f.v':F }rhہ!31N FU Jz!4ՂQoj.1 {f@^}.!a^^p-əM2ڰcg!0cSS$T|Q=?#$ӧ<>⤙^=%%:+}|NG{ R{܍*)7YqK2 my]-A/e癮=}H e*ni16?R")^ "@Q1΂u ;<ĪQ..ʴB?T'EoketDeQ=G$ (jVUK$L~QOj Ӥ%cV喟P࿼nI-KWqOr}4cNcEK)Hue]kę!a糊vf>bB}_yMK6?G܍] Bt$uQVagQJy*b~&7 9v8Hpyǵ hL~z)&w2_TR۬R8IqB0X<@'R~%@J.X$ q%R?jC ny^o}9/HOIemm));FR} ~{d4&o9X6{WTj; . Hn!WY׎!<ϞٗE3% ZfCe,<$\rFpF?R5 6Q)= INɤX&\9"dW޳69v i00jv6 c D/rU]9#+~a gW L6x/.ZvR7!܈}h@Vi"G4 u_ɻ Fn<ҥu) W;wYfk'et?ll!ig>ZVV $\kѤ<ə =\XyX6=!$4}/Z2-LFƃIXs W$&~tFJJ|3\S>} Xm?c,erU!ՙ\&A>A% ]HÚ?IQ$&|[~R`~Jvl0~r©/òkۂ$^^^^`J2ʄ@]9IPOi<2C0 O|HY1FI.Nd( 3bQ(&]/ A nĠ\5 \GCIM?~ِ Y3g,gQ2h Y ՠ@)&/j.e*|y1%!JSgVʒ".1f#cH!sOcCNH@B&r~bH1pŠ 2C ̒Hs$n2}N_-7BAI$ۧ2ْro ckbhXqM~@% L5gtԄ-3u+: \Kn6 7ӧ3 Asj\/k#Tf zw !ȕ\l@NG\ $Ax܀u}bz $ G*;w#Hـ^[d4h I} ȩ HOxlvj@Zi@Zi@Vii@Zi@Zi@]Oޢv,7{-ءvyYj_rUO5ZnߧF@ؿh6I ?E6.?d -^Y \H&ǝC{ hч E, ֑>CHB9ځ* ps$}a W"ymd׉4m"'L$lʽ+YlMw>OC 5 00\^'}r9{/rat0C(]V%":z Y;Yv:xW8 8 [gW6$xa;.,{S@h &!S秿6dd:#E:LpO%YoJRnly˼z @(W]eP Y}o~}{Z~%<I 0}fHX61vnz !8 厥zțJ Ǔt>J$\ pqMV v.'ۆڭ$6(7XȇCBN; UZm!! c k+aKt-Wt+ e[TV$`-NLJm> sGNԺ 2OI,:"?W2kz:mW$Nt±m-ƹ~M24'[\GVTcn2b7닢[3jrD';#'[b?yq@(:w[3 Ip6Oƺw|:ښ9#˸P|Ya"0@Xf<'q74qF*pG|1@Bi1 `_ 0mM熫2[gϖgc!3$;!-[XC uQr:tAK:yt'K~tr>н.FK2r 4Lzr]׉t nAġJ@,lsՀ"]0.@y fNtѐ%egGa܌ۢwe@Zi@Zi@Vii@Zi@Zi@Vii@Zi@Zi@Vii@Zi@Zi@Vii@Zi@Zi@VW*?uIENDB`openttd-1.3.3/media/extra_grf/rivers/rapids.nfo0000644000000000000000000001340012246102547020232 0ustar rootroot// // $Id: rapids.nfo 23982 2012-02-24 22:29:44Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 0 0C "Rapid graphics" -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 10 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 10 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 10 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 10 64 39 -31 -8 normal -1 * 7 02 05 00 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 60 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 60 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 60 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 60 64 39 -31 -8 normal -1 * 7 02 05 01 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 110 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 110 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 110 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 110 64 39 -31 -8 normal -1 * 7 02 05 02 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 160 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 160 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 160 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 160 64 39 -31 -8 normal -1 * 7 02 05 03 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 210 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 210 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 210 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 210 64 39 -31 -8 normal -1 * 7 02 05 04 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 260 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 260 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 260 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 260 64 39 -31 -8 normal -1 * 7 02 05 05 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 310 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 310 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 310 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 310 64 39 -31 -8 normal -1 * 7 02 05 06 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 360 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 360 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 360 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 360 64 39 -31 -8 normal -1 * 7 02 05 07 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 410 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 410 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 410 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 410 64 39 -31 -8 normal -1 * 7 02 05 08 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 460 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 460 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 460 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 460 64 39 -31 -8 normal -1 * 7 02 05 09 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 510 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 510 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 510 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 510 64 39 -31 -8 normal -1 * 7 02 05 0A 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 560 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 560 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 560 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 560 64 39 -31 -8 normal -1 * 7 02 05 0B 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 610 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 610 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 610 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 610 64 39 -31 -8 normal -1 * 7 02 05 0C 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 660 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 660 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 660 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 660 64 39 -31 -8 normal -1 * 7 02 05 0D 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 710 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 710 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 710 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 710 64 39 -31 -8 normal -1 * 7 02 05 0E 01 00 00 00 -1 * 4 01 05 01 04 -1 sprites/rapids.png 8bpp 10 760 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 90 760 64 39 -31 -8 normal -1 sprites/rapids.png 8bpp 170 760 64 23 -31 0 normal -1 sprites/rapids.png 8bpp 250 760 64 39 -31 -8 normal -1 * 7 02 05 0F 01 00 00 00 -1 * 39 02 05 10 80 00 01 10 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F 00 -1 * 7 03 05 01 05 00 10 00 openttd-1.3.3/media/extra_grf/rivers/toyland.png0000644000000000000000000003737712246102547020447 0ustar rootrootPNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FPLTE 000@@@PPPdddttt4YśOwSv:B>s(z|sA> ͂-d%kN(X(,dd Y2 $Kd@2,HrD@sPZl}fRbEo_uO-**wOWppG(11$D"f+쮥/>~C/UE2PXE7*33' 323bO/7[r"PUPb 11(Ϥ#m߽ lF`+ tWTosT>]a|Ұӷ4(we*0)MUeUQ@=Jw3A0|L403}J㗵!y߆ܼ̤6w=s}}=mA)V36D03V"*ҾۍO־DyˤuޘYt2q]{3~J̲!FXHTvHaJ /4偉&_`3L 5 J }i1| D*W"w.'ʫҿT'gY;42xReVb"&b@9}\1)_cZ!Q[G܁%e͌'1̬JC;SAX Gb~'~[*-*MmHiY_9c7bՠ3oh1tjx4ap3bz#ƮO[:=K Ơy#Owz_ȼ7jx8b̴7xw i1fqjxNcn Գd H $ɒd@2,H%y>@:o~~(9NVR(^bJcA5ׇ4jT0OD@D$ݵ i@tHo^C$8}WvnI5$Jo "( Ho*h/4$ @}E]DtPj/H-w6ME!AQ=o^#I(OR8߼y+Zk~"Qb|rWADEP s}}}-*5IdH-UGi@*$I vP] QQxt?k(Q0PR_$pkv$ JЯk *@z$DQPPaM- Fܔ5;r,c̶.Z0|QyqQ'A,N7Y f:0_OWfc̫?N}Q ]?s ",)?bEI.춝R'1~p.E~"rM];L8mrWQv~R (zk~:' ؐu0A. YRp̼n[.0/E-حU?a h<k;y fVu 2Rݒ_Q5_SyQ_T@S}ߒMy2?oOu.8f]A)X /~[ks ]|:A-kb=:'/O,cd$s#/ ޘ $K%@d H $ɒd Y2,j 8i[[{J}?jlG5{5rl^Nn@1/aAJDME%" x W%ߞ`bWE*iFU$Rb"\ RdLA(7$7c{ k }Eu=(だʏ"Lo5ZZ鬥5&/jA'NEP Q57{F@.j._ݘ. P~y#`-,HǺEj5 &H8 ";Q"wO ER?<ƻ!E-"!IcP>U{eQ?P=(/H@P{W߾)9=$ & "FDfp!"bE(W"$m^rZ /) klON5:kGٗ/QHPQ)`(C557{@ "q?u@ɬQ7g]@lA$k$d/*&AgR%u,5Ƹ0Q]h! H<}X2˳ yHq:үz>Kڍkv}\*:8Dy| JY8EU̖ϱ1Ɯ] $K*h݉(1< vNr __ .~Zv눻5mƓW''UJ_1gR'X# c\E}7l"q?pP!9ggsgu{p^ - `tuBBB \ |oS .app?+[Zz`:%5 { HB$1, Cb B]isY"*n1HeSqH: mk?>$R@Yӯ9 * nvIQTUkk /F@$T Tdx։ߞ0rH{ 8]Z Q56q]lsfkc`BPD*. @$gd!ըS@PQ@S)k!cR]hRp{e IUs:u޳L52ζ9{U'7+(T?h lkpvleRpk{l_vGt6'㿯j6ap8u<#\@ C@| d[ܯ0fdFXgH׌ČGFaXןm|[3yαH 俰K??u t^3}{I>p~~¬~9lzn|g%|hU3US,k,c\ݥ7>ƕ+Ch)Z7{@|@bëw~3N91ZkK4هCEV? Q. K.Cd{\ntwaxLy)}?Qavnu޽~skXyOjd8 _{1xPXޖUjRj ce ʾ qYmUCG+XZ)chV;WX5qbL5~v)N3@2mmZQԀ^~e qY5Ob!PEC77奔2WoY6W!e *qS|79gJ~ux׻Nl).JQCh.S4 .rlKeB1M  .]KCdX9bA!mN]e!>7MC'z^(Y}>?Fa!gV]/H ^wF6T( UvwBByv%{ +묺XCqN^iKͲGJea=vnbasđA{0gY^CjЄ]2K/ ĘNnUضZk+Ȟ#s^CU#10*7N8.}#-X !.Bbb W]ab栤ĘoT!lI_a\raơ6Udhd;'5!WZr61Qy3{صኒ*.,pZxƾoro8>9cC鼸>ͪi Hߙ``1Yn%@d H $ɒd Y2,E CLGX L[CjJUpM~߬67kpo>,s̑TF7W)5f}<{pu8Rԥ)g'DG!9ēp7MYJ!)3ODcLy{ݩnԱ00Mos]8QK7{pyxۄC(@q~+'_ {\$b̑&乜 k۔DBlnߋB+L.}7KB\lq CSMBAY:Ę]8J%t>2sIW\0"%31_/+P`i.rwu'r2jW`7˓Ӣ7!b@n-bfV#\;`bղfl=E4x^)ZVD de2fZıa?+LyЙb:\څ劈 8m%st{_\%kbYcvpB ⒕c:&q²''te03s?~\nDʣN2*_`!Teu`&O"flr\Ђo=)Cc[7<=6̀כןǨ?7 u|d@d H $ɒd Y2 $K%@d H $ɒd Y2,H%@d H $ɒd@2,H%@d H $Kd@2,H%@d Y2 $Kd@2,1"8|կ=U拂Abƈxoq58Oe=HRXk I=:ނVLj Q*~yDЉI[s.d ؜.J;$R$Vzj[+)$Df`8]- Da+ϼ{ƅHi8& ml!(J23D(؜~0"* )k",tw0xŪM {^Y[ 3W Lj? iEs km* tFJQIwAa%T_c$JBz{3A!@眓^Y[A{^م+P?*g v}@RYضAyFBIYrRHJB{tiѪw#1vaؐja+|3)Mqy%A$]MXXI)GAT$RFUDIXcDYUQUz/{9jHu(쪵 犂vcxdI!H49niN܅ 9u>㻳d Y2 $Kd@2,H%2 &@j8]hQ=7u- QH0A}X2xz)Ut d>U{~$""xmsTCE]c](STmyAEADAMEc̋"I drhvڙ.J/^+]\$Zb{k 6Ƙ"' P ԟ $]ҿkcjۙOp%'w}AI0Ph$}ߩ "Hw՝v&b z{WQxt؅p(BS E}qŢ.>HBA1_? B)QU%LH(Xwu D|p0k] _&u/c}ʬ4\cyɻ/ ']_qPD8EL/N0w@GR笵 mI j'_7CĶuCAF\|SN"|TtE[F]AUA~@nl:'-[&Huqpa85 *07d!J"_w1mmºt_`V} ۮ2g!a/_~a'x̪PƽQ _ "z /ꋔ H4p[ա)@NGݬ+HPyy<" E}Q@8"w%_><ԲI!shĒ>HzQ_HpU!$s#/ ޘ $K%@d H $ɒd Y2,j 8iRe']Da@漎9wS&|GZ#qj$ITX+J= ɘ+[R{QbI &a2EiFU$Rb"\ RtYbzC/Pzq3Q:A@03Vc7Arں46y<T@Q>ADP-&ZcBe]/!ָf:ki ǽZPSHoc^ẐJ]Cw 7"@N(( [bE$WE] ީ?%Ika\~W_$nEBD WEML@"""ilΛGA@5^pP&l"Iϛ} ۂ21].d@&FAD7x̐u nڅUv~yHI״_c|*tY; ξ|F= JFq"(Hi&O zK_urd֨˳T_` W BDn5Nj kAqʿDpf=,d 5ƽ Eh*(B;1FCsyVC5b"]4CHq:үz>Kڍkv}vC' QT%lceJJ+[۝_>!a?8 ;-nL;넉d}?pWu6F髓*Ygb ֈ@X WvQ_p5<-k\\&THw׾R?Β8!n@Z[$>:AT!9KL󏷩sH88@[Zz`:%5 { HB$1, X}~@A> )"FE2UXb1tQ4u~}H_oWs@PU}m֩9$ւax[g$k1 Tȗ]_d@d %\'\>Mm:y`oo7-ægTRYVgTBOTqujWfFc D\ ^vnֺrY=H,bqox!j][J->"Ǎ X._r9l\r&;܄vÿM d2K!Cd ۶vkº2ܱe7jKVρ1P8m!e އ*T!~eUƫZBt/C\Vj= a>Dz?mcNߕ1VM܄g=$ ۶va50s2 b ^U g2WoY6W!e *qS|79gJ~ux׻Nl).JQCh.S4yφpfsL_*MBob8W8.ڻZ%PE.C is*C 1e|a<i2?}KvyE։܍< ۶۝2*ܴPkhd}>:ws L5ͭ.KbhHn/uD5rŁu!?B{Wtf/ξR=8%}qɥYʾT>e0\.pć`^kɡڬHF|?a׆+Jc-$pZxƾoro8>9cC鼸>ͪi Hߙ``1Yn%@d H $ɒd Y2,E CLGoQ L[P';Ѩ7ShNf]H|aKf<;4 UJ Fio W7H E]ʞq} ݝJX8,%s 'E1$f4_vt)oܴ7dD-\Q@Qh5!}( $&ݏce4*]={V.y1EaR\NqN5mJf" !6 a=O.&r.P@DqYv DS8A1p~ >DbfL'C|ٚ4PM|^}Au)cwILI>vIɁ&NYuN%qI8 Lqv~2D"c(.}}}}}%n8t?OlH#sc/2oC%k( uHC!|[&ƸIy"(3gS0UcrQ\Q8kmoȨg %yD9gf!,X2.?LL ٳ~b{;|"nzk.{@eD* J̬{DssA āWabva0ku1#ތ1%sdq3u~1CbQܛ?2)>HNES0q8̰u" HwzCL.}7KB\lq CSMBAY:Ę]8J%t>2sIW\0"L̡ !ro=y ]ɡaZXMsݫ/f"akFa9"% &Z-ak"1{BGo-TJʤe̴c~VaBZڅ劈 8a\rIG8.^*aD) W8gĴۅB&> Pб68Y^yDbZkĘubHyIF ,Ju̚BWQ~3)2e@gNgH猂1D(x*XG^g[#g$1PUp˗5` aeH7Vq &"*,YY+!ଏ1)++)UH bV !H؇hC|SHlʣ2*'Ӊn@;#C7gĴۅu&wD|<ɴ3y=d$D9~o֊ҝ%+Q9SY$;{3Ln Bzc(qD$^?wS(*V,@ qиE@$Z f&>>cgqg Z@j1TUEt39FI!WulUk|&~;la69%ɒd Y2 $Kd@2,H $ɒd Y2 $Kd@d H $ɒd Y2 $K%@d H $ɒd Y2,H%@d _lIIENDB`openttd-1.3.3/media/extra_grf/elrails.png0000644000000000000000000001362112246102547017100 0ustar rootrootPNG  IHDR sRGBPLTE 000@@@PPPdddttt4/ [?rYzWH|!*8xAr}8Xf pWC%q&Bs v$A0E|[a$ QK+Ś7v:> 7T> L<rSHT>[4~>&恜byup@wKa[y[8ےO-j].^>r)j`bU1G).N.Iʏߧ:* P.Y uiYY/ Kr@5ie_y1[Ѿ,wx(P{"1!,wx(P{"7YۺXywJ[`I}rOd"3[^~G.}cAp~@qWk"G$ ՝Ӑ|ٍ]m5ߔ ,'nOImP(3 h+HKCZ9CZ|Veq"G,8QsD}nIRdr@Io~e4r{ ̞9Drd9F Hj>6Ld|ۗ! Z.P}l0NH~&Oo3%}Ҿ"0Mz h.B})hBõc݀(B B@P(B@P(B@P(B@P(B@P(B! (B! (B! (%F ZV~y//?dm{'-_6'Սl UsOw&;ov~Ko +T %€w@`ǃag:@6,v!q:I^D@{P]PyOeFcΟ_B,6 㬾" ]@}nW'Ԡ|}RClQ!B! (jku3ZHj)J)1nn 9_ ޭOw]T̞*/g j:LE#^PZ)~s]W%W[ $T @˵_WbEwޥu_˱sbw𾫍ۛ޵TfrBЂ 🿬/n]U4콟 FVݺlrhUXÚ7Hu̗9]Z­O-F[|hw׹E{.xF4  < e+)0ݐ#|}ϵD:hYbԡR-eaXanCۇYZgc5ۀX 0KnƧ#$bnV7][ס(ʘ,<{D6^j%a)ބ<@R3 uXӡ >I@y -@(чPNQ!e) ȉRbt׷v '’-@R$[$=.XZ.vˀA,:QELoW)$aXY|d2{a H|]NdZVC /o20)=IA|B 6 nbY,;QMSD x&ND6\h@|@ĊQo`LhF1Dtx)g\TI Ӗ=q4pZ7w9n S( -^q*^X.B›SyE$YaZ!L@dCz\c3PWWU\;8 Ax.,4 R~oЀWD(EO4ڪ5-]t\[n `=L?.1X.TjJd[Scvxlt.1 A\;n "K&B-2141HCvt8ReUc"m ruVq&|~H}$@A< Xk_ AdZdZUٿd@ÇD^cnb%SS}P*uF@`{6V":@zhCRpg֢*". @Y#+ >?Y H\ K+] \Gтs\y\ctoٚa]S|Eq Y"_*r@{@F79ҨIK"I)7R1.l~b\Hk]NgA4S>DVE@8B򰀸Yx=v BF1HKQȀ!__w~ Y;-%Ԧyq)/e C%K~IT} Q! 9. ˲b2,`w$K k\' 䰀 ]~7!vCRcGwC3sqя (zhC[~G BDPBa C@PH7{pB@2I3ѓ#MB B@P(B@P(B@P(B@P(B@P( yt@/ {!;d?o;@<dBIrg!-g1>d(OU+C"[$Ώ ,Dv8[ ?*@P(BuVJIﶌ)з纮|~n_AgvUUʷi~Kq@^<ѿ1&Jry\c2! D@k'&b4k (0}}|D<A@PI@\S6@,(# <HqyB |RuiUKbOa,5O,-!mEx"}}|\{&B&y䪕@@zX|Ӵ)H3V1]~)Yӥ.xmk A@,ji\hAӳEe ʬ5aYC[Q7,@T? {, 1O ]+"㳌Hy?LRI6=j 2 ͗'O+UUoT" m[^q{] |vpҀL' ǘQ4o)҉сBZ.=" cG' {XӞ BAA72ϲ"]ф\ɰQv;^ˇ5)Abwey~J_xUN@+(ۀ5"%+3)A@@f#{6yUO@md"\|H.vqŝ ީ!qxšYTg`@cV wtXwtRJUI)d:.` \ch ٍla]}ǎw~LJA@鸀G)ʓ5RE'Q5?gP@ٱBj1H* .g%De9CdbAK_ٯ^R9y}򧏵?elAjwR XHCXtflO׾r| lя&q-Z* u훔(v+Zm= 3beZJKiɶ݈z* WЀ-_L PI)TNA l1bb,wS|⛊d@ZB|L2ZӹX YJwR z?CـBk g~deW"R$F֏X؃ jXҼDm4nk_ T1V"I) P YJʵ ݤy.cDiBV OJxʵBH)8P}~RP:Z@0A ?/1P(B@P(B@P(B@P(B@P(B! (Bmx+eE-IENDB`openttd-1.3.3/media/extra_grf/flags.png0000644000000000000000000000334312246102547016541 0ustar rootrootPNG  IHDR FsRGBPLTE 000@@@PPPdddttt4jm6Yi=B8sS*BZHcErq: jP\8$5BJ5 j f( MMAXPlϺ4JQ ! K( ;A@ h QWiWW۷~?0{<{5ZcL]׃Us~_慎uz^oWVc|xy|fYox,']eȶ|<"a2rǓo4>kzx F+, |¬q /ҭ12 i?N1wd_# טA~.>qTיMv-*Xx4ߚ6B{G-ry24DfvR+// ^1f@l[ $dz<;#_P ?*8b]f4@J+k5N_S#>B$ QHٗD26xɗt>?K8C.aw*{:}^*޳(uA @ @ A Az0.6gIENDB`openttd-1.3.3/media/extra_grf/shore.nfo0000644000000000000000000000675612246102547016576 0ustar rootroot// // $Id: shore.nfo 23993 2012-02-26 08:23:32Z rubidium $ // // This file is part of OpenTTD. // OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . // -1 * 6 07 83 01 \7! 00 0C -1 * 54 0C "Missing shore tile graphics for the temperate climate" -1 * 3 05 0D 0A -1 sprites/shore.png 8bpp 82 8 64 15 -31 0 normal -1 sprites/shore.png 8bpp 162 8 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 242 8 64 23 -31 0 normal -1 sprites/shore.png 8bpp 322 8 64 47 -31 -16 normal -1 sprites/shore.png 8bpp 402 8 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 482 8 64 39 -31 -8 normal -1 sprites/shore.png 8bpp 562 8 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 642 8 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 722 8 64 32 -31 -1 normal -1 sprites/shore.png 8bpp 2 72 64 31 -31 -8 normal -1 * 6 07 83 01 \7! 01 0C -1 * 55 0C "Missing shore tile graphics for the sub-arctic climate" -1 * 3 05 0D 0A -1 sprites/shore.png 8bpp 130 72 64 15 -31 0 normal -1 sprites/shore.png 8bpp 210 72 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 290 72 64 23 -31 0 normal -1 sprites/shore.png 8bpp 370 72 64 47 -31 -16 normal -1 sprites/shore.png 8bpp 450 72 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 530 72 64 39 -31 -8 normal -1 sprites/shore.png 8bpp 610 72 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 690 72 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 2 136 64 32 -31 -1 normal -1 sprites/shore.png 8bpp 82 136 64 31 -31 -8 normal -1 * 6 07 83 01 \7! 02 0C -1 * 57 0C "Missing shore tile graphics for the sub-tropical climate" -1 * 3 05 0D 0A -1 sprites/shore.png 8bpp 210 136 64 15 -31 0 normal -1 sprites/shore.png 8bpp 290 136 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 370 136 64 23 -31 0 normal -1 sprites/shore.png 8bpp 450 136 64 47 -31 -16 normal -1 sprites/shore.png 8bpp 530 136 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 610 136 64 39 -31 -8 normal -1 sprites/shore.png 8bpp 690 136 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 2 200 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 82 200 64 32 -31 -1 normal -1 sprites/shore.png 8bpp 162 200 64 31 -31 -8 normal -1 * 6 07 83 01 \7! 03 0C -1 * 44 0C "Missing shore tile graphics for the toyland climate" -1 * 3 05 0D 0A -1 sprites/shore.png 8bpp 290 200 64 15 -31 0 normal -1 sprites/shore.png 8bpp 370 200 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 450 200 64 23 -31 0 normal -1 sprites/shore.png 8bpp 530 200 64 47 -31 -16 normal -1 sprites/shore.png 8bpp 610 200 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 690 200 64 39 -31 -8 normal -1 sprites/shore.png 8bpp 2 264 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 82 264 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 162 264 64 32 -31 -1 normal -1 sprites/shore.png 8bpp 242 264 64 31 -31 -8 normal openttd-1.3.3/media/openttd.desktop.translation.awk0000644000000000000000000000171012246102547021140 0ustar rootroot# $Id: openttd.desktop.translation.awk 24100 2012-04-08 14:29:31Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . # # Awk script to automatically generate a comment lines for # a translated desktop shortcut. If it does not exist there # is no output. # /##isocode/ { lang = $2; next } /STR_DESKTOP_SHORTCUT_COMMENT/ { sub("^[^:]*:", "", $0); print "Comment[" lang "]=" $0; sub("_.*", "", lang); print "Comment[" lang "]=" $0; next} openttd-1.3.3/media/openttd.64.xpm0000644000000000000000000003037212246102547015413 0ustar rootroot/* 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 ", " $ ", " "}; openttd-1.3.3/media/openttd.32.bmp0000644000000000000000000000407012246102547015354 0ustar rootrootBM86(   /-<0,5# % 0)+4+ -'"/*&,$*#B=8/$1(5-#˻DCABA?6D*7L*6V-3_1/g1.o5.|;.v:-@->4~K2C72h7q6o6n4k3j6m7n6m6l4i7l4f5e7i5c6a6_6\5Q4N4tI?}S7kH2\@-T;0<5122ABB@EHjt{ggh059SR^JC}b\Yaedffeb]Y]VHySQQ~Mu:XrIe@GM~ WBPDU@u_;kG^\TBgGnPwyAKUACEyz|{u f(y1+v7=>@A4zDHHI?JM;wRNbckl}uvrvohoZygS n j |y f~n]$$f(Z+.#k.V2$f$c5640~:1nCB~+P}9^*@ZQ<2UNK)Bh4FbD ?{$'k]SS.8?'󢟿*R^bR⽠18=6LJ4(ûe06E3$jceęW/Oܧd^ \𭬫ٺ)S*X"ši lc*YY*ͤ l"X*STj nSTM]ܧ uV&&_P[ ~fzmd)&+e# Z~xv"#[TY"*l ~fsVMXSQq a|hrd_M{h a|xynM}qtg}uwV}tfxpozf{uvvf{vxziopenttd-1.3.3/media/openttd.ico0000644000000000000000000011560612246102547015135 0ustar rootroothh V   h  #00 %3@@ (B^Y( @D9/$ D1"R|Cd E.Qx\\A[v D*QxVmX>WoE) QuUljb;Uk H$ Pq[gL3KfL&Ll]H}w6:-Ea&H( DfNJ@P{)%  =],-2@b;7-`7{}q|f5/gB^:A0e`xrmfpb-mL,>?3:6]7\'Yfbp=`+aM7b0Q'3*5a9Z"Wln pz`*_Q7a1T  %/'5b:X!Uqk<@d)\S7_3U '6+6c:X%Xosk(PR8^2W %>-1U) =n2U+sD'yz{|}~ijklmnopqrstuvYZ[\]^_`abcdefIJKLMNOPQRSTUV9:;<=>?@ABCDEF+,-./0123456 !"#$%&'( ?( @%>-1U) =n2U+sD'6+6c:X%Xosk(PR8^2W %/'5b:X!Uqk<@d)\S7_3U 5a9Z"Wln pꑬɳz`*_Q7a1T  6]7\'Yfbp=`+aM7b0Q:A0e`xrʪmfкpb-mL,>2@b;7-`7{˚}q|f5DfNJ@P{)%  =]Ll]H賽ꛪ}ɓw6:-EaPq[gL3KfQuUlϼjb;UkQxVmX>WoQx\\A[vR|Cd?( @ "(!)%+(%,+(--+./-.10/60/:/0A01I21Q32V33X44W35T47Q38L3:F4;D5yMJD+l^lʳn|r8GKM5>MIE+|iV{p8HIK33LKF+{d߸ݍ{o:IJM9E+t+jc{{o;M?,oojjw{|m7 )jXi{||{m .ggkn}lb^a+ "\`cg. !Y_kÔ/ !Vh_֓d "ccۼ”d "c򳙚c $0пαc $cccTccc $d⫠c $]S &^YS 'S 'T (V(3???( @ 0>5&&&3*"("2F87g5R#5-!V&Ei+ 1Z?5P2B76c6n7q2I3T~v*@Z*+S:7i7q5P1?56b6m6m4b7M+N|vyu+5R/d02i7l7o4N1;46a6n6m4c6F(F|yvvzt+2N/i12h7l7o5M0736`6n6l4d6I)D|yhOayyr,0I.m42i7l7o4{K0325^6n6l4f7L*BzvySʸ ouzp-.E.q63i7l7n4vI1216]6n6l4f7O*@}|tyyQnsuyo--A.u83j7l7n4rH0..6\6n6l4g7R,!>y}a̎?hu|(yvzm/-=.y:3j7m7n3nF0<45[6n6l4h6V-!4k7l7o2]@?}S2h3_1-<:94$f"Y#kcn  | zyx|g-39A<7@uNHGECA@7B~겷1n"~ )Eg-#CB@GUPNLJG;wퟩRu$c.4/-+(% +P}0'A>=M]WUTBpꗟ.z(rŬC665312U/$A@>Sd^^DӁ W4zą?@?>=6[.#@@@VgdRbq~Iw܉BJII;a-#@ABVfd=hvPSUAg,#ACEWhY:Xrɟƾb_aGn+"@DGXh\?tIebozO;nHj^hMu+$@EIYge^9j_c`gNx+%@FL[efGz^bgP|,&!@GN\f[C}JbgQ,'"@IQ\fedgR-($@JS]dfS-)&ALW`V.+)@KV1473???(  @ |z'|{qheH%>-1U) =n2U+sDM'6+6c:X%Xosk(PR8^2W K%/'5b:X!Uqk<@d)\S7_3U I '3*m5a9Z"Wln pz`*_Q7a1T  ?3:q6]7\'Yfbp=`+aM7b0QgB^:A0e`xrmfpb-mL,>-"2@b;7-`7{}q|f5/eH( ?DfNJ@P{)%  =],EL&(Ll]H}w6:-Ea&B H$ 1Pq[gL3KfGE) 7QuUljb;Uk LD*Wo PE.BQx\\A[v UD1"CR|Cd TD9/$ h?( @ '$*0>5&&&&!3*"("&C%% )2F87g5R# -5-!V&Ei+ (81Z?5P%#$2B76c6n7q2I3T~v*@Z*+S:7i7q5P# 1?56b6m6m4b7M+N|vyu+5R/d02i7l7o4N" 1;46a6n6m4c6F(F|yvvzt+2N/i12h7l7o5M! 0736`6n6l4d6I)D|yhOayyr,0I.m42i7l7o4{K! 0325^6n6l4f7L*BzvySʸ ouzp-.E.q63i7l7n4vI1216]6n6l4f7O*@}|tyyQnsuyo--A.u83j7l7n4rH} 0..6\6n6l4g7R,!>y}a?hu|(yvzm/-=.y:3j7m7n3nFw?/ 0<45[6n6l4h6V-!4k7l7o2]@ubEYX?}S2h3_1-<:94$f"Y#kcn  | zyx|g-39SqqgA<7@uNHGECA@7B~1n"~ )Eg-#jfa7CB@GUPNLJG;wRu$c.4/-+(% +P}0'i]U?A>=M]WUTBp.z(rC665312U/$ g\QEA@>Sd^^D W4z?@?>=6[.#dZPL@@@VgdRbq~IwBJII;a-# ^UKQ@ABVfd=hvPSUAg,# `UIWACEWhY:Xrƾb_aGn+" \QI^@DGXh\?tIebozO;nHj^hMu+$ ZPFe@EIYge^9j_c`gNx+% &ZNEk@FL[efGz^bgP|,&! +XLCq@GN\f[C}JbgQ,'" 0WKBw@IQ\fedgR-($ 6VJ@@JS]dfS-)& ;TJ?ALW`V.+) AUKE@KV147 ANGB-'"|1 ???(0` %, ($!")++(}/,.'5\B5jG&! ""%2-+6203/+ ?0+-*$(7/'4Q=6j6n5bD$$3-'347d$Jv5,!#9/&,5U6P)$3.'4M<6h6m6k6l4cC"!0+%431d~v(Eg5+!s >1'-5R6p6n6xK)#..'4J;6g6m6j6j6n2_43-5/-b|vyv)Cc3)""0L7o6k6k6n6tJ&!*,'3G:6f6m6j6j6k2b4P65+*a|vvvyt*@]5) 'H2f6j6j6k6m5oG&'+%4D:6e6m6j6j6k2d3Q75$&`|vvuuuyt+=Y4( (G2f6j6j6k6m6kG&!#-'3A86d6n6j6j6k2e3U86#%^|vw|~zuzs,;T3( (H2f6j6j6l6m5gE& *$w3=66b6n6j6j6k2e3X;6"#\|vwra@yN6yuzr.9O3) (J3g6j6j6l6l5cD$*$q3:55a6n6j6j6k2f3\<6"!Z|vvy]W`j^xuvzq.7L2+!(K3g6j6j6l6k5^C$*#k3846`6n6j6j6k3f2`>7" X|uuvyZZiz\ttvvzp05H2-"(M3g6j6j6l6k5ZA"+#d4646^6n6j6j6k3f2c?7!V|}~xuy_Zlb yuuv{o14D1.#(N3h6j6j6l6j5W@#*%_3226]6o6j6j6k3g2e@7!T|tc?w2}tLyIz)ty|tv{m22@00$(O4h6j6j6l6j4S>!("X2015[6n6j6j6k3g2jB8!S|zXjpv` g8;1$2Ou.-+)'%# ^!] aYhyXVtwvtvvvv|b6),-I/)T7)% &&&r1( 5Np543210.-Novm^oDswuvvvvv|`7,+* =***q2*#6Oj=<:986544#b(>XQ\hnnm*k)!x"^b yyxwvvv|^60*'# #555_30,8PkCCA@?><;:98-kb!oGrLmz~}| { zyxw|^445&$"KIH122GLHGFEDBA@>=>51kZnp# ~}| |'Hp4.'KuuuCJGD5DSNPMLKIHGFDC?/a4[q.,+(&$" #Z41-**( x||LHB<5DSSURQONMKJL-qhw2Z]3C:220/-,*(&")_5-%*)'wwzSF@:7GWXZWUTSQQHA`]z%y/Di|\=6644210//d4.&*)&wwyZF@:9JZ^^[ZYWX>^lw(JoamyqI%j|?;<;98664j4.'+)& sss_D>8;M^bc`_]_@_jsL{1alwx4ex^EBB@?>>8o3.),(& sssfB<6WmdcbfAzINSSUUSUH30.,(% nllx?83?Zreccb.W}SUVi_[[]N310,(%llj>72A]wecd`1^:HT}~}p~/DWUfadT322+(%jjh<61B`|eccfO2_4Pj2CRkGN/Vy5`[dfX445*(%#hhg<60Cdecbee_8t]gn|dcdeceY578,'$'hge;5/EgfcbbfJhs{b`bbfZ58:+'$/fdb:4/FjfcbeKHOS_zdabe[6:=,'$4cca93.Hnfbc^:f4]9gSdbf\7D,'# >`_]72.Ktfbbcbbe^9@H,'""C_^\72.Lxfbbbe_9BJ,'"""I^[Z61.M{fbe_:EO,'" ##N ]ZY62/Oi`;HS,&"!$$T ZYV643N}?Qb-&!"$$Z ZYX52..,)""%YSRR333>1<>??????(@ B  #F "?#E#D *Y :}>;t:sz= a.b{}k5.Z 7|>=x6k7k:rt:5 ]xz+^t y^.9q;t,W 3|=,Vy<:r6j7k:qr8 Yvvzy(WpzZ-9p7l6j:r+U0q8>z3d +v:;t6j7l4e  Wvvvvzx&RQ(7l7l6j6j6j:r*S ,v;-Y }>=w4g 3 ?8n4e?Svvvvvvzw"L ?5g5g6j6j6j6i#?6yxwe+Hjudr@ tVKwJm+m! svvv~d # &K2b:q(O !@ 10`u:= /3e )n6>zf3D"7k5h!v;2sxvzEoux@mn,R|Up9}rvvvb # ,Y'M ,WAo7y<=yh4 6 &4f:qQ(A :r7k&K%B/l}xvww=n~tBwsvvv` +{= -W)Q ,V9p9qa1...B  ,2b9p7k:qM&>6q8%B+f|xvvws9vBxsvvv] 5}> 5 /)P:r6i7l9p]/?<>  !F=w6i6j7l9pH$c1'H*`}zvvvwlAj9|uvvvZ2*T3c8m6j6j6j7l8o\.t unu%937 )U:r6j6j7k9p&F)Y ~ zyyxy^7PltzlyPk,n)7JGosvvvvX1-Z4f6i6j6j6i:q3e :.5 +X:r6i8m&E&S~~}| | ~RYdoH_{%v%8M${xuvvvvU3-Z4g6i6j8o5i8H8,4 ,Y:r'G %M!E~D[t[\BSdf zl4f%kuvvvvvR6.[5f8m6j9N 4*2(!}> "E*)'%#"  Cn{W XCSdgd'Gl1m tvvvvvvO:0_4f=T$%" "B01.-,*)'&%~EuP\DSdgmD$f uvvvvvvvLC>[C "<5632210/.-,s.D^Hd~ eJZmmVi~ ^|vvvvvvvvwIuB 69=9876543211"n.@eec]+),_Xhy\spzxwvvvvvvvwI< 0>B>=<;:9987652!b@y4[+=<;:99960'x+$iBaE[tt~}}| { { zyxwxA-*)?QIHGFEDCBBA??>=<;>+2YTaod$ ~}}| { z{*W<VVRD%"1KNPLKKJIHGFEDCBA@B+|AVn6Kdd-)('%#" ~~ U hddL!0JSTOONMLKJIHHGEF92LiK\mOx0/0.-,*)'%$" [eeeS4NWWSRQQPONMLKJK#Vmu0IgO%p:ON>23210/.-,*)'%'abb_X9T\[WVUTSRQPOP=ATf`s f3>)Zu{~qWx[J565433100..0 g ``]_ =Z`]ZYXXWVUTU,dswyNXdeoxpGD,|P^m|F=::98765436&n ]]Ze#B_ea^]\[ZYYX'R~.S{YHUbtPC$MzD@?>=<;:98<,tYVVj'Hfhdaa`_^]](QxXoR9~LV`uX!YWrKCCBA@@?>B1z ZXUq (Klhdbbbbba,Wmop`zuBJPgOcp|{ETMLKJIHM<%UPP~ .UyicbbbdY%=Sq|QTQPPOMRC *QOK 0Zicbbbe9l5 =pjbbbbdd`Y0cGRZyeadeeebbfa+<GD?< ?tkbbbbbcgEOZb|f`bccbbfb.@P@=9BykbbbbbeEP[dzf`bbbbfd2GT?;7 E|jbbbbeD9?CVfsdabbbee6LZ >95 GjbbbdX*If)D].Li1RpG{ebbbee!:Q` <62 Jjbbbc^XZ]dbbbef$?Xf94. Ljbbbdddcbbbeg&C]l72.Nibbbbbbbbdh)Heq72-Qibbbbbbdh+Ljx4.*Ribbbbdi-Qq|2,'Thbbcj0Ux#0*%"Wicj3Z~&.("%Yn5^++& (81X|||-)&"XXXH888888 ?x0??????openttd-1.3.3/media/openttd.64.png0000644000000000000000000001522312246102547015371 0ustar rootrootPNG  IHDR@@iqsBIT|d pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time12/19/04TIDATx[XT֝ u)"Ҕ;HQDRTD+b-I1-fK+*ϙAcߟ'vt{箵ks/"bcRU/ٳ:Z^ 7˳3mY.t)z ̷qP W"7CFBῚKXXڹ\67ŵQG(;84 ٱn2+ XziUlOʥ$dF:HWOz8<8,*%'9HWg}Wo t5͒V7#*cT_; h|_競?yjer?pp$Bld$LGpg'tۈqt~_ƟmPs'@ v0E7kkq87ɨf.{wm#ƭͱx}(H с+JU:~)Ƈzϲ~~m4{bh R:b| vNI?KjFB{Iy? af:;J~]>c_VY9EVb톍X~3&%£]TÛ@gӄPC/Z GCC;GXF?CqY<{e(Z8 wIFٞq7;&+z3 }X[[Ϛ7<Sinw$ P^UՕ(^ՌwGHBJ.  A)Q-u_EQ376`gĆĹ gQZZrLŃ]I(%>ֿ*@2?vg=rSVMC Fr29 ʶ@n.cZ#6L11-׮]K2#vŒH[;-*'<>|'mG], RkaIw C* a-пW7dLpiܹsO>BeU|'afp2ea ~2f ?tPHU5ڠ w{^. y v ߿Ǐ$ꨬ,ÙMdEvz pN@\5M̌uޞuƆ'5/Ec|{݃7q`25Ua#p)MaN]q(:H["QvJ71{pii/Ue$\p-˲ 9ʕTUWO?™{[10+LkZTD r~. CmCPIl 8:0.RZ=EM[L #mVnGFB{˞kA 4|^ؗ1C>+ǥT2ױlYS981)Cp VaE,y(hSykΧXcxsp- 0_G||0*hF`۸|..v L`W`T-CղZꃪ%Ip2 W"RWG koo<=eQ]|KGb}=N7#k=5'#1Lθ$r*X7knOYH EIYg]AnN񗂥X"\UŞ~˝ Xcc-$ǐAe$x#aDbtv&>F35(2[Il)yW.]yH芋W4!@wʅF'X][a),_eg`uό—7j =b E,\P]̣f#jRpơS8 G(tZ#?SR7nwPKQlF *ؿEW}P0Eky[3;'sS^X4w\_)yU ^ \`8ؚoy6k9$Kppx;(+CZ/}u+{;r@mLs*AҮ\ԓwR?l}PB.3grJ K PP`k l 30Alc6 p(sPh `PTteE}po El75ϻrŪ.TA9cuŷ Yٓ$BVeOqmlٱ}"E%׮aOԥLRse`%ٕm';S~F Mgi~:ꧩӕ%Dٲ~+fB9ŻNb^B#R ZQG! TSsV;S;"x֭ZϝGU}`F>;n!f`8:[t5JTD S"yF@1SƵGow6V^ʭzDp<犽 fڥ  LΨ[cc:bYMOuJilBdԑ'QaiX1VL,B L`iwV f؎B$SfQEU5i>mj%]Xstq4$,] 9Eg(5%4CKqr2Ò dr X8iW)`V@5}18^6ߪv?l'd jXh#'N%%%Y!ȕǏIHM^&<' ٩@Tݢ Xعu=z_׋e:E %%%WKWv0>d2,qiUo%dPmF8ɧ>Pj:b+\^UM)8`:teY34yԗx?#C ?Y~k_ox$@PN1Npenv50 UQ5ߖpMS b+,F&O;?hĝ;},EWUljh g/H g4D_h$F/Nhѐ wo>wFwϷ*V XqOZj9hw|sAٯ eی $A"j6ycwN F@ $zcHvWƇi:xo&w7S2/\^S ?r$HQQ !!Ɔt5G6JTaQ z+-dCδt̝:kó]C1^^6X|).]:8" -q4-.0Fä0--EF]M`@M:Um_pB,[MI0婿 1%;heBXҊ%0C䨥>N`ӝ`+ܽE%ralݱ?.ţG]aYU sp)d9K",GcPf]5#r+ς7Wt KŶH8A |aOA =5=A8 vYͥ3Gk/&u42/AχR*x} 6:7PoXA}g?9TuVmqN,&tNЅ0^5)yPSW7X";/0]v-%9YeH':tsR,%P]C-gEtܼ^> @Fk b?ߨU %@N &0/n/ =[>pn {ddmNjH 6kipKn6?xd3N$WɅ0NŘqrӺKlp{lP_n|SP[w`](S3 :[?@Y@B1ۣZ+("j=r^ 7SK>PB1TUՂ%bF^L~3>s"LcO:ճ T7ءpvfOLĵ4"竡A;7j4;lipkl-z `YZoHC%g mx1KU <]rE0_.J'ޛ>Դcz\NnskN"9t$e* CTeF>!rB>`R\_!E0Y'{l+rfv["HNt f0p;qOיn 2LVEzM3MQe%002? WhvPlF$-9E!udɗ0EXd4n&GTU`ܱ 2ޚXkJL!RKsc?ntzM]rd }4y6xy ?MebXG6JKxT<,1Zuj#NYIs/4:u9Ix6E,!"P@NGa[l`7H3M90ng&&fBabٿ%`:ڂV [k]*TntGZN[]_N' U@\yՒ}T<*LnV\ zRθsbM'#^\32ڷƔEZFBe/Lu\RrT٦еVEE4܈*ut;,~#__Fx&$K %2I9jb8RX\}^:!di'^ 7GVxb؄a)W٩/xZ{V9 !-I`}@&¡T CSq!ߏָz~AK&KML] ]fjcK2yx ?7y80q>eZfʈeAҒ(]udf\ܻu0C*Zsi¤I2[9dz%"z9c%F>4Y5W}yE~+c S)x@BIQ9c&#=1WFOw;srrhPOJ‹Mͻ>_F4 $. # # Awk script to extract translations for baseset descriptions # from lang files for insertion into .obg/obs/obm files. # If there is no translation, there is no output. # # The input file is scanned for the pattern # !! # # The lang files (passed as variable 'langfiles') are scanned for and # the translations are added to the output file: # . = # # Simple insertion sort since not all AWKs have a sort implementation function isort(A) { n = 0 for (val in A) { n++; } for (i = 2; i <= n; i++) { j = i; hold = A[j] while (A[j - 1] > hold) { j--; A[j + 1] = A[j] } A[j] = hold } return n } /^!!/ { ini_key = $2; str_id = $3; file = langfiles while ((getline < file) > 0) { if (match($0, "##isocode") > 0) { lang = $2; } else if (match($0, "^" str_id " *:") > 0) { sub("^[^:]*:", "", $0) i++; if (lang == "en_GB") { texts[i] = ini_key " = "$0; } else { texts[i] = ini_key "." lang " = "$0; } } } close(file); count = isort(texts); for (i = 1; i <= count; i++) { print texts[i] } next } { print } openttd-1.3.3/media/baseset/orig_win.obg0000644000000000000000000000157412246102547016716 0ustar rootroot; $Id: orig_win.obg 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents the original graphics as on the Transport ; Tycoon Deluxe for Windows CD. ; [metadata] name = original_windows shortname = TTDW version = 0 palette = Windows !! description STR_BASEGRAPHICS_WIN_DESCRIPTION [files] base = TRG1R.GRF logos = TRGIR.GRF arctic = TRGCR.GRF tropical = TRGHR.GRF toyland = TRGTR.GRF extra = OPENTTD.GRF [md5s] TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358 TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 OPENTTD.GRF = [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. OPENTTD.GRF = This file was part of your OpenTTD installation. openttd-1.3.3/media/baseset/orig_win.obs0000644000000000000000000000071712246102547016730 0ustar rootroot; $Id: orig_win.obs 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents the original sounds as on the Transport ; Tycoon Deluxe for Windows CD. ; [metadata] name = original_windows shortname = TTDO version = 0 !! description STR_BASESOUNDS_WIN_DESCRIPTION [files] samples = SAMPLE.CAT [md5s] SAMPLE.CAT = 9212e81e72badd4bbe1eaeae66458e10 [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. openttd-1.3.3/media/baseset/orig_dos.obs0000644000000000000000000000070312246102547016713 0ustar rootroot; $Id: orig_dos.obs 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents the original sounds as on the Transport ; Tycoon Deluxe DOS CD. ; [metadata] name = original_dos shortname = TTDO version = 0 !! description STR_BASESOUNDS_DOS_DESCRIPTION [files] samples = SAMPLE.CAT [md5s] SAMPLE.CAT = 422ea3dd074d2859bb51639a6e0e85da [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. openttd-1.3.3/media/baseset/orig_win.obm0000644000000000000000000000467212246102547016726 0ustar rootroot; $Id: orig_win.obm 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents the original music as on the Transport ; Tycoon Deluxe for Windows CD. ; [metadata] name = original_windows shortname = TTDW version = 1 !! description STR_BASEMUSIC_WIN_DESCRIPTION [files] theme = GM_TT00.GM old_0 = GM_TT02.GM old_1 = GM_TT06.GM old_2 = GM_TT03.GM old_3 = GM_TT12.GM old_4 = GM_TT08.GM old_5 = GM_TT13.GM old_6 = GM_TT14.GM old_7 = GM_TT10.GM old_8 = old_9 = new_0 = GM_TT04.GM new_1 = GM_TT01.GM new_2 = GM_TT05.GM new_3 = GM_TT15.GM new_4 = GM_TT11.GM new_5 = GM_TT16.GM new_6 = GM_TT09.GM new_7 = new_8 = new_9 = ezy_0 = GM_TT18.GM ezy_1 = GM_TT19.GM ezy_2 = GM_TT21.GM ezy_3 = GM_TT17.GM ezy_4 = GM_TT20.GM ezy_5 = GM_TT07.GM ezy_6 = ezy_7 = ezy_8 = ezy_9 = [md5s] GM_TT00.GM = 45cfec1b9d8c7a0ad45e755833cbf221 GM_TT01.GM = ab14ed3392d848abd2a2e90a9d75d121 GM_TT02.GM = dd4f696e4be5987ce738257b08b50171 GM_TT03.GM = a1bfde23343df9e4063419bf29c166b8 GM_TT04.GM = 4e6943aa0c455203d76c79389054747d GM_TT05.GM = cee281cb85a2e2343552d97640545a47 GM_TT06.GM = 26d1de5efa8675f94065784e9d539e49 GM_TT07.GM = 6f2691e17558f552ec4c565e4ab7139c GM_TT08.GM = a42bf2cb3340a822f1a69646fc7a487d GM_TT09.GM = eb35761a58a8df3c59ed8929cce13916 GM_TT10.GM = 42fecd686720a785d20a78590c466a82 GM_TT11.GM = 50ef1ef02e49d2112786dd45e69dc3ee GM_TT12.GM = 4ce707a0e0e72419f0681dd9bd95271b GM_TT13.GM = e765753be29d889ec818f38009103619 GM_TT14.GM = 270e2d63bd32b95a4d007ce15a6ce45f GM_TT15.GM = 89e116a1c0c69f1845cc903a9bfbe460 GM_TT16.GM = f824e2371b3bedfe61aad4b9c62dd6be GM_TT17.GM = 1b23eebb0796c1ab99cd97fa7082cf7b GM_TT18.GM = 15650de3bad645d0e88c4f5c7a2df92a GM_TT19.GM = 7aec079e15bd09588660b85545ac4dfc GM_TT20.GM = 1509097889dee617aa1e9a1738a5a930 GM_TT21.GM = a8d0aaad02e1a762d8d54cf81da56bab [names] GM_TT00.GM = Tycoon DELUXE Theme GM_TT01.GM = Snarl Up GM_TT02.GM = Easy Driver GM_TT03.GM = Little Red Diesel GM_TT04.GM = City Groove GM_TT05.GM = Aliens Ate My Railway GM_TT06.GM = Stoke It GM_TT07.GM = Don't Walk! GM_TT08.GM = Sawyer's Tune GM_TT09.GM = Fell Apart On Me GM_TT10.GM = Can't Get There From Here GM_TT11.GM = Hard Drivin' GM_TT12.GM = Road Hog GM_TT13.GM = Hold That Train! GM_TT14.GM = Broomer's Oil Rag GM_TT15.GM = Goss Groove GM_TT16.GM = Small Town GM_TT17.GM = Cruise Control GM_TT18.GM = Stroll On GM_TT19.GM = Funk Central GM_TT20.GM = Jammit GM_TT21.GM = Movin' On [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. openttd-1.3.3/media/baseset/no_music.obm0000644000000000000000000000114012246102547016710 0ustar rootroot; $Id: no_music.obm 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents more or less nothingness ; [metadata] name = NoMusic shortname = NULL version = 0 fallback = true !! description STR_BASEMUSIC_NONE_DESCRIPTION [files] theme = old_0 = old_1 = old_2 = old_3 = old_4 = old_5 = old_6 = old_7 = old_8 = old_9 = new_0 = new_1 = new_2 = new_3 = new_4 = new_5 = new_6 = new_7 = new_8 = new_9 = ezy_0 = ezy_1 = ezy_2 = ezy_3 = ezy_4 = ezy_5 = ezy_6 = ezy_7 = ezy_8 = ezy_9 = [md5s] [names] [origin] default = This file was part of your OpenTTD installation. openttd-1.3.3/media/baseset/orig_dos.obg0000644000000000000000000000156212246102547016703 0ustar rootroot; $Id: orig_dos.obg 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents the original graphics as on the non-German Transport ; Tycoon Deluxe DOS CD. ; [metadata] name = original_dos shortname = TTDD version = 1 palette = DOS !! description STR_BASEGRAPHICS_DOS_DESCRIPTION [files] base = TRG1.GRF logos = TRGI.GRF arctic = TRGC.GRF tropical = TRGH.GRF toyland = TRGT.GRF extra = OPENTTD.GRF [md5s] TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 OPENTTD.GRF = [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. OPENTTD.GRF = This file was part of your OpenTTD installation. openttd-1.3.3/media/baseset/no_sound.obs0000644000000000000000000000055712246102547016741 0ustar rootroot; $Id: no_sound.obs 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents more or less nothingness ; [metadata] name = NoSound shortname = NULL version = 2 fallback = true !! description STR_BASESOUNDS_NONE_DESCRIPTION [files] samples = [md5s] [origin] default = This file was part of your OpenTTD installation. openttd-1.3.3/media/baseset/orig_dos_de.obg0000644000000000000000000000162612246102547017354 0ustar rootroot; $Id: orig_dos_de.obg 25205 2013-04-24 20:30:02Z frosch $ ; ; This represents the original graphics as on the German Transport ; Tycoon Deluxe DOS CD. It contains one broken sprite. ; [metadata] name = original_dos_de shortname = TTDD version = 0 palette = DOS !! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION [files] base = TRG1.GRF logos = TRGI.GRF arctic = TRGC.GRF tropical = TRGH.GRF toyland = TRGT.GRF extra = OPENTTD.GRF [md5s] TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = fcde1d7e8a74197d72a62695884b909e OPENTTD.GRF = [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. OPENTTD.GRF = This file was part of your OpenTTD installation. openttd-1.3.3/media/openttd.desktop.in0000644000000000000000000000066112246102547016433 0ustar rootroot# $Id: openttd.desktop.in 25994 2013-11-13 22:14:52Z rubidium $ # http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html [Desktop Entry] Type=Application Version=1.0 Name=!!MENU_NAME!! Icon=!!TTD!! Exec=!!TTD!! Terminal=false Categories=!!MENU_GROUP!! Comment=A clone of Transport Tycoon Deluxe Keywords=game;simulation;transport;tycoon;deluxe;economics;multiplayer;money;train;ship;bus;truck;aircraft;cargo openttd-1.3.3/media/openttd.48.png0000644000000000000000000001070712246102547015375 0ustar rootrootPNG  IHDR00WsBIT|d pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time12/19/04TIDAThY\֎@@XB *XPD(ʐ=TE p8[jmkڪR/b[; I "w~&ysyq`~%ɚL73Bfo+/h273|)8d'" N33Ӑ<Yӣ!3>8|kWe}gFbIhD  Gxgp-J3S_Vh#Bw#Y͇"y2wc8'ܔk2/E ," ~[o7xMDDH+ >cX\cϿȨr[#JL/#Ǣ!?QPJķ;CSK~O%Sf+rBqp:Qx7 X*FQ.AJT,jvXWDh?@tL\@u?|\\(C8+BKlV8fY 3K~hCJ .>X q,LOrD,^f(:qxK[Cf^w}K%D澡!NhO6O/ ǡTGąd8Z (&j:+fс!@ %oODc]τ8esCV 8Y)B-z)(]oy[|C If+qitHbl}!$'ܑ:4\q$#Pf>^'Npޏhl\ނay`/ڀ¸өh|~*BWHI!rv*MfiA8hx2YV5MMDMTNjO vlަ5d?NeyZ+/ ,JMCdW6'qWEt_ܼUfVA`]3q]:yi 'r~Yؘ{M(2\vgh=  סJּuMuVh - wtB$ֿ;(-$֖ԳB=| &QLWߺp-sfMdK2P\1x^Q=C׎P1Plrm;Q9<ngD +33y脖a6 -B 7{ѱ:'GF g{#;ɳDֆoΧ֘Sfxgv0?25}4y} ]d,rD[RTbXRX|p[2\zw{;|:ԇBZٞd!h܈6q롤VUK?uhU(%+73^(/// Kpn,Ƃm 1]C^uP6;Zs Db^9A%A t'л@N'BEێԻ~`>7ANr'$H& Kbez9䛶OZ`UVҔFP@\6pںB[[{P7 ~B{|G , X DF=Jb$Ae=mƏ]mTvU;+SBP3o rA P z6C^ ia ]]]nRC Ɏ=!F"9AU|O"u\cY;? lsm3DlH ge Ptf%љ5ѕ]}Æ; ϟϵe,@n,qe>u%+4 :Hh(2dp;{LphW ; zt23vS| 0`P#}pot? k{.c3W]r1O(/A GuBZ; [ñrm!>D;VECP`!&aoLy8\Q:3Tm  t g0DkYp9ycQ]ZǸGB*ߌۏx}>XP^]Pc``T 3~jiikQ(q$w:eSAJ՝x8iZJuG O >Yu[ %>j]ac1(kLЕψl4 QrTh!7% h%@N؍8) f"p"?`>8KZ* CE[+)=>j yks<` ~zR  >YBI,GY}jP!{09X2߽'#XZ Z 8ȈǣFʴsqs:a/nļN]=-&3\ 1/<>ԀONj)ƅZ5R$'5%;\ j袛R$TƐbdL͎~-`..^SNgCbf|hW`sLĎ[Eo޽g&UF.jr HxCvvv‰[y413D3$.}sFp`>(}piV8 #RfhY%ܹw}Y[83}}|1,*!nK.~b4Ыwa1ڋ:BûOI+YCc=#A=}h"[ه+Pu-2]qسB+Yg.\`(Qk_8N9@,@.yWp%zy*nZM'3J3q_0.!ሒQl2R_Kh5q%'*ĶK?V>/4):g࿙3vB 0G6uu)bRA ]G~Y*1*u.Kw.jO|!8(-D[m[ p4k.ДIsMscPSmρCM=H !&x{0׵K;.Eʝ%EW"xDiHٽ}Iahpr愠r+^}zߙ^b{pm_JOǂ,k*=?:'E8+$!L!́MhSql,M{x=ӂ&|!&md[7BM##31UbYgH?U!\g`lB'i 1"_ݾq /Lc~0·ؒmnh3LftWHKDH 1p.H5 rCq&s &O># d #  ( B ~}!K=\DZ"D'?BOD0Jiʒ`36rja ,EYcg=i;>N rgb1~A2}Q@nS ދ&ƢgVKjp&bxz<.0aqJ:{f$QOgy]R{#t>σ${.e~5oՐlt(F$nhZ+||D"7IDATxx7$$!{/BHM( A( Q^lWE{mZ^zU:(&ݝٝzlfggs>>>~>1rZ .|rԩvԩP B^<&Ll˖-n6lխ['$X`\o֬%&&"X`>f+U%*hj E>|~s'X>bK:aE>|+OMeE>|kOOcE>|~.|s|8\"^E>|~.|s|8\">?>qE>\ |8\">?>qE>|~.|s/Pۣ">?>qE>|~.|p}~.|p}~.|p}~.|5$!!!Կ***QFiĉ4i$;]X  9>yf٪5..|p5#FҥKK/ћoIoUk"""\&\Hv>s;v,[^|E/˗/[5~W >8= _~wDGG\@6nHfx>8>.\pE >8>.\p =~_.|p}\4~.\s"߆}{t"za@:''^ ?ju`:#M.̧yfW\\+i&  ]Tґ^߶ {F4fuR)O cPjըvڬЌ3hΝ;Е+WT oFMno>xdI.fW"@m.|xol.qs)=1OTjUfm2ȇJ~!_l4e>}:͛7֮]K'N?_N"HOOgFƹ C;J((_Qј;D"EʩI\P\ ?֮6enVDoѢ 8>f!!233zTF v#/￧7o2f -|pMO{>ᣐ%zCҸqhڴiLf͚>ᵘh%zrtE^TZ ~ܹrJdؓz-?A~)?aOчիWķn2UR?^7|C߿֬YCf$ }VSL I>ԩSiժUcڷo -Z6+-NS?1^q̮E1|GIwu-Y6l{gYI>.^`׮]cO۷oӝ;w~3S\2 ޣ:*?t<&L\ч?Jۗ#8y$ۆ`aVgKͿR$6avh*iE:.Eirݺuiy=жmt9 xx<9V-JE!_aϞ=liu_e3 … 4+OԦM7hm4]?.(zl$ᇓoaQa,pԽ{wv^ۏXן:ux ׿ŞDƒlӧi׮]Իwoӓ,0K@/L.]bK˗~Z^];:EC0MFL$Gfk|x9X7nY; z[bf!8paa!sa&??^yv]$Ec#D; ڑa4] .~/YɴתU+}l׽ l]'>dݝ=+f-X#~ d;2"6Ĉ; l/ GKD;ᡂT" l|/H k%}=z%5l5><]6#ht^=#.,pNn%3G;hCE; +kpIiR;LhճgO֦ {Xc^qiOTOߒ@ 3G|n!ӠVխ"Ʈ>5ʹS O~x̙ pBޚ_}@Ν;^?lK q=_}=xbڵ+4DN,c xuMW7wܕ>O6B%}hD .~ַZ$`ݏ 8&os>MDSb  jhKzҭ}=4U:k?29G7q%3ϰj@7dBt(u,Ƞ9b #Kɛ'qޝS^;Ӎ߲o%feggsC).cꏽ~H^ƒiZ6ۂ;4F6/=LHc}:HZLKjte >kOW3BH'Ѳ2?^n/o,yR^Ga$ Sw 5bbxױFZ*T8--}Qڋ)aIk?j PGC͠C1vw6Nt[: "E/ZNU **/DE8m x6 a|QxeU>sxnYgʯgJeA/k5"j]'whKmWp{.ib@V 5ދZj"Ϯ魨 }QQ:g]9XDKJ}c6݀S+KM^?>w|7͝miD. ?l߼n&o;2pA/ֳZ@x!kX-ue&Ů F3 fэ{*P0[s̠/i}̬-;p=KRLǾpܰCeC;~Pq|Q'Ņ0xxPK~iZ%7(/q?w1nnoM#'s^-w)!faOE>P- +> a|GVy_?VPZOB(c74X+3kID=:+k;K46ׯ>|c]~=ά覸;k'\חz6H5<@0|vGE wr"mvX 3*[sLo^M[d8gC8c qK]}vpŽ+zSaCQPX8@ 3ܚshLvkKS,{o )R|i@/)MVY/PzYًMWRM#A\?RӻTU5 ̚0 \e'u[Fn|"#o]Q!/Nvew_ߴiSV@oz)v(e[s6o ̶46Ftks#A} ?(( 4{dO,qq[vwW 1N^|,H h1F*j uf&,[65M8 ~i(@ "ؔ $̶Y^ wۻ)Y?IQPDмysvCi6WGXK𣐆g_>ؗXvm@6 JKצ1]Mo:&[:|SXP%,Ft k߾=;ξQTԥ3[k֡}L,_.K'~f%a5e-Z?ӳ|Ԋ 8s=qhP4:bN/ _ԩSTBA-RVm׾EBZ: gBfR'O~}ES z37ـ> 6lb˺ZD{XIvn͕^^>sCc^ bΟ?V%`¶V'`Nnjkw陹mA``.\2QLŇҐF  ^z3Eˢ;$I_F6N  ;7Gf4MQ E4nrg6Ћd 2ўe`coVdADi? &[UdޛJ#Ȋ57?:ʉ,ljLS܇~l8wӧiƍTRRB\iz:77R }9FՕ͠O-{S2E0Yzoi}ˏt*% @d xO>mm!W\v;*AZl0MkWͪyց3ƲNxx}-++1"`j#؋wjX6,F䡧2%ӖR\p1K,Œ!Ȓ :AeB~Z)J7;a/^/૩>!EKm,,Ot?#tދ x{N7>2~zzwUgùL3$`*=,D~/ϟD+zзs\| 4ݹ'^WTbU$!L4]#%bnݺ" O&Wqb] 7^z+?3Jg DUaB - #?"& McuXo{kι0K-ٟ ԭl` X̙SW?]s-M,ʩ\󝞞N? B(7@2]|3ࣝ|0;=ȟB*`)X`Y9?**O3mo^>s67kPvriPCOH<)o|6-2ۆȤkk `N`&X qLk&wq3X֦ox&L* ^:YeI3Y-b U7!}[Ǐg?8΍OtR^),f3+_`/X#^q*AEޥ},P=2*e&~"k#G)3i4+ 0yL>87e7e[x ;Z0Ӄ ?,V(XM"TJh E`j#v6|tkΝKܐ'A H=99Et10 `k"РAe8x¿XvK0HVˣ3sI-k2p%\^|EVMuh(ݚx;ht% HDQ@ xmK]]_gW_KgFcRth/p"{c\@81vCYȖ~8|]kY)6yW|s[Xӿ5mFc()26 K.oI'>ƌC/iB %Cƍ6I˃oN&i󀿾>^QVJu'l&er4)u3imD\vo:NEZV'ƹ#5 +b\|\ ~"bkSolo5Rg괸k2I"##YN|&MW^[j^4Y8K/qa+WL{9=:ontUIynmv/^icg'U퓨QpS\io;?֕=7oNcE10-GYf1f7yT1o޼{9VSjO,QFi5|7^{~u"0DivgYuwZu4`رcvݜ9syhrYcARSSYd+|8?c￯M; *f4\,]U@v|!bCK)1aͣe˖۷XO>$+(7$., 6nWS7_/N3 Ih֭ofjʓXH &5"/Х{:P ok,5L0d7n-X=Q Ow P'qBxapΡ(OҴ׋**D?Rܹ3]`/lhx :_o,m]Lɿh"B̙3E/ Ï=m oڴt&S7_/LqX pc6mXs'糱s nӷo_Zv-+sxKK8RT]z}Yf5+uoJ~ej`c9{Tyh~"܁mg6~c N*l=XXIò MJ]}0Y3qa][K; )74J*VĹbdS +ni8ڞIԭ[^͆5=@),HQ #5|$`ALhs"UQt@4&Q<75m ev<~YHNN>!Ux1]R^>sK_ٔdુAna,F8.RWONGW4 6ݼ{f@Z4lؐ_= D=| /#EEEݷlrS z75T|sib[}pafL [Pb ]_Pok&?ͳmLQ(ŇHGD)j ?`[-X` )1uԖҥKYXT+xwhhqBq!K35g+~hG1'<[}{8 mW]"6X @<׿~Gh!ޥKSGMPTҌP @]]e#b(7,bAJӽ~"p"0gΜf۶ms~"!N%TpcmZ;++VXAOfmԄ[ xAtZTa6+\Pm:]PZ!,]8_an&Zo[bu^ƒ5FZ0w b+nj 0R`8,jKӃ4uT7T!/C )zxï@F;U߶8x7Wdzlk u6$V}|kQ˖-E tr@RWNJWxx8 ߿>7w~["}xk,Y+A ...fyե$ ai|l(5@ƛ^*Z쉌6$gg4ww8 ~".Z^f/~Pm߾=[,W_j)BBG-T {PE<'FaKT]XW=]&smLm@SUMUD֣?O.]tk.86aӦM3LJPo?ۻ*M0PfhтyVQ8Po/YNWo["]|gE+WLN=|{Cm*`wY٦5@/1`p<3@޽{Yf$ZJ@1!5wW 4WoSF(ԛ_KcɯgؿG0^`SOQQQ,;`:'"iV}! isCDڶmgisI+#, hto)7zڵ.\kiOY";uĺI0qDuo:,gONUKx{IgOu"W80]U\bzET@is:vn=z`O[8[ BW_}J4jD$,w3A$@͔K2-OsqA-^a_T`+??_ .UϟDB ~EǘYc9Mŭ@ĨL89v0xWرclF$ tҌJ`[TjUʡc?.0׺'޻jnq~f+`F. 6(тZ nh!K`w=Dw4$X͒b$jBѳ> ~59Fb ;<qrpLtp\=aV2 Q;o|,X'%,Yr*9tV!|8QmŽ=J~SJl?BR"Z(YZH$-{řz!h9p|XjWb#^*bk%X,_XU9tŭK[xzݙ!ԩl+ SnGj8"Ҍ,j@X011 b%ג M_.*z l`Y[.F*E@@` O @t^T'uu6Ib(|!H2?q+ v`Cc\X0j^"` A'rFZXkXrlhйs4U4=u` %%<=7 e.KL#g*H`[K>s;piʕC6cM  eџ݂l` l[2{E+P ""@۹xb:yb?C^m೎3Ɣx_#l`ML*.$-* B P "{'YDfΞ=EaLImνi0P N7o@5kfZwߒUg_k@u7YSZL3~wRr~dOqo7T;_Yu$+,));w[#~;<UmUgG6]/5קaO}h562)N8[x#%b7lplRS3@^" #a޲,(N2og/+)Fgz3wXƾՐ3**&}&mfZxSիYY,ku3&݌WzxJp8Ǐp@wz&,JX6QZ+wXF-"P[E`4KLm~|zxi^YZ!,1"̮_VC?DK G*1B8ԹsgӹÏڔ^C ~Dg?ߐҚ:i J"ЮxBڼy3{Ji$;> زJ3 uwl!bV,1>s6ТfKw_5@PDyGïnY .HC`;}tV&̙3L gu;>p8fe?Kll,ʆIZ$% G?##nX@'7iߥ~@$s`s7P{@-pZ0(r#go0lݺu/ P+ɀ>|n77i|߁:r鵊#:?*a Or @1ʯd$RT '>`C5P^ >$`I]@k٫oek{_PHє4-." @,l{jL* Bg}@ DLM`q;P}ZqU>bЛT?ϷPlTh3"PVF^j*5='z5Xi/d&"`yĠt75̎q~jHQ/|@p(+&MbBMHiU`sG𗫥W0:!_Wo_,B_)7f6l3^5nX_6R֋\loK)z4No_ X| y]>H_3k (/ɕv D\\?vߖ:@Nq."./_%(z:W #S6 gD|~ͷ%[:dnm"K~"+:huDï ;~["P F[cuę9}EVrgn%f %"ײK, oKꏱc ,_-B0 9N"%֒6m$.=746"42wj[D@--W𳔓p]% h5U/-h?R~%DX%~|yŒ=]Q쁿L\I[}Z߅" g͔yPÆM<\J8n&_~͟ #6&P_PEqxEf"$\3Z"m)T/X?*5xx AAe){E $ "` s3ZP.k "~DRAwCoa* & dx+`E+Kwᇤ0{EGyXNFxオ=&w@t*FSqq1;sLV%Ț5K P ?[k"x]YL ˊ@^Y@tu3@ݜc",BjJ Ӵ*o"~wt^1Sұ%Ԅ5 ~Dx1_!Z@ ,66k)GlV#~[P|%WE :](} ~p"0ljb8zCe~OգZ Jd(s~oG9މplE^rLlE@-w G@~$` ކ̉KtFŭ>&}7eE@OЉށ+*p]/n6dn |GD: ?1#:FkF~ XpOΒ!/7L ֢n?E@`Wi# DCRw\n?@`-BQeg~ow;(2 c{Ӓχ'JhڏZ ";|5QzhMd[&'goKdsQ6χO෴ϯ5DOc}\¹q_55+dR?Ρ8Q׍59|xp6 ]Z,/D丫w؂ߝDχ."1ƓAOw?."#쬳EUAmEA SM젳D+EχGwD"3]E@h;\!~>|O4_s~K"EK"1~!wXt_l"3v['Z&"#E'¯Jzl"`wuL8~DχG@,A~ny5?)̙ .VB47m מx ,x ӌ4_C>}HS l|bK]Zrύ:||| oIENDB`openttd-1.3.3/source.list0000644000000000000000000005144312246102614014073 0ustar rootroot# Source Files airport.cpp animated_tile.cpp articulated_vehicles.cpp autoreplace.cpp bmp.cpp cargomonitor.cpp cargopacket.cpp cargotype.cpp cheat.cpp command.cpp console.cpp console_cmds.cpp crashlog.cpp currency.cpp date.cpp debug.cpp dedicated.cpp depot.cpp driver.cpp economy.cpp effectvehicle.cpp elrail.cpp engine.cpp fileio.cpp fios.cpp fontcache.cpp fontdetection.cpp base_consist.cpp gamelog.cpp genworld.cpp gfx.cpp gfxinit.cpp gfx_layout.cpp goal.cpp ground_vehicle.cpp heightmap.cpp highscore.cpp hotkeys.cpp ini.cpp ini_load.cpp landscape.cpp map.cpp misc.cpp mixer.cpp music.cpp network/network.cpp network/network_admin.cpp network/network_client.cpp network/network_command.cpp network/network_content.cpp network/network_gamelist.cpp network/network_server.cpp network/network_udp.cpp openttd.cpp order_backup.cpp os_timer.cpp pbs.cpp progress.cpp rail.cpp rev.cpp road.cpp roadstop.cpp screenshot.cpp #if SDL sdl.cpp #end settings.cpp signal.cpp signs.cpp sound.cpp sprite.cpp spritecache.cpp station.cpp strgen/strgen_base.cpp string.cpp stringfilter.cpp strings.cpp subsidy.cpp textbuf.cpp texteff.cpp tgp.cpp tile_map.cpp tilearea.cpp townname.cpp #if WIN32 #else #if WINCE #else #if OS2 os/os2/os2.cpp #else #if OSX os/macosx/crashlog_osx.cpp #else os/unix/crashlog_unix.cpp #end os/unix/unix.cpp #end #end #end vehicle.cpp vehiclelist.cpp viewport.cpp waypoint.cpp widget.cpp window.cpp # Header Files #if ALLEGRO music/allegro_m.h sound/allegro_s.h video/allegro_v.h #end aircraft.h airport.h animated_tile_func.h articulated_vehicles.h autoreplace_base.h autoreplace_func.h autoreplace_gui.h autoreplace_type.h autoslope.h base_media_base.h base_media_func.h base_station_base.h bmp.h bridge.h cargo_type.h cargomonitor.h cargopacket.h cargotype.h cheat_func.h cheat_type.h clear_func.h cmd_helper.h command_func.h command_type.h company_base.h company_func.h company_gui.h company_manager_face.h company_type.h console_func.h console_gui.h console_internal.h console_type.h crashlog.h currency.h date_func.h date_gui.h date_type.h debug.h video/dedicated_v.h depot_base.h depot_func.h depot_map.h depot_type.h direction_func.h direction_type.h music/dmusic.h driver.h economy_base.h economy_func.h economy_type.h effectvehicle_base.h effectvehicle_func.h elrail_func.h engine_base.h engine_func.h engine_gui.h engine_type.h error.h fileio_func.h fileio_type.h fios.h fontcache.h fontdetection.h base_consist.h gamelog.h gamelog_internal.h genworld.h gfx_func.h gfx_layout.h gfx_type.h gfxinit.h goal_base.h goal_type.h graph_gui.h ground_vehicle.hpp group.h group_gui.h group_type.h gui.h heightmap.h highscore.h hotkeys.h house.h house_type.h industry.h industry_type.h industrytype.h ini_type.h landscape.h landscape_type.h language.h livery.h map_func.h map_type.h mixer.h network/network.h network/network_admin.h network/network_base.h network/network_client.h network/network_content.h network/network_content_gui.h network/network_func.h network/network_gamelist.h network/network_gui.h network/network_internal.h network/network_server.h network/network_type.h network/network_udp.h newgrf.h newgrf_airport.h newgrf_airporttiles.h newgrf_animation_base.h newgrf_animation_type.h newgrf_callbacks.h newgrf_canal.h newgrf_cargo.h newgrf_class.h newgrf_class_func.h newgrf_commons.h newgrf_config.h newgrf_debug.h newgrf_engine.h newgrf_generic.h newgrf_house.h newgrf_industries.h newgrf_industrytiles.h newgrf_object.h newgrf_properties.h newgrf_railtype.h newgrf_sound.h newgrf_spritegroup.h newgrf_station.h newgrf_storage.h newgrf_text.h newgrf_town.h newgrf_townname.h news_func.h news_gui.h news_type.h music/null_m.h sound/null_s.h video/null_v.h object.h object_base.h object_type.h openttd.h order_backup.h order_base.h order_func.h order_type.h pbs.h progress.h querystring_gui.h rail.h rail_gui.h rail_type.h rev.h road_cmd.h road_func.h road_gui.h road_internal.h road_type.h roadstop_base.h roadveh.h screenshot.h sdl.h sound/sdl_s.h video/sdl_v.h settings_func.h settings_gui.h settings_internal.h settings_type.h ship.h signal_func.h signal_type.h signs_base.h signs_func.h signs_type.h slope_func.h slope_type.h smallmap_gui.h sortlist_type.h sound_func.h sound_type.h sprite.h spritecache.h station_base.h station_func.h station_gui.h station_type.h statusbar_gui.h stdafx.h strgen/strgen.h string_base.h string_func.h string_type.h stringfilter_type.h strings_func.h strings_type.h subsidy_base.h subsidy_func.h subsidy_type.h tar_type.h terraform_gui.h textbuf_gui.h textbuf_type.h texteff.hpp textfile_gui.h textfile_type.h tgp.h tile_cmd.h tile_type.h tilearea_type.h tilehighlight_func.h tilehighlight_type.h tilematrix_type.hpp timetable.h toolbar_gui.h town.h town_type.h townname_func.h townname_type.h track_func.h track_type.h train.h transparency.h transparency_gui.h transport_type.h tunnelbridge.h vehicle_base.h vehicle_func.h vehicle_gui.h vehicle_gui_base.h vehicle_type.h vehiclelist.h viewport_func.h viewport_type.h water.h waypoint_base.h waypoint_func.h widget_type.h os/windows/win32.h music/win32_m.h sound/win32_s.h video/win32_v.h window_func.h window_gui.h window_type.h zoom_func.h zoom_type.h #if WIN32 #else music/bemidi.h music/cocoa_m.h music/extmidi.h music/libtimidity.h music/os2_m.h music/qtmidi.h os/macosx/macos.h os/macosx/osx_stdafx.h os/macosx/splash.h sound/cocoa_s.h video/cocoa/cocoa_keys.h video/cocoa/cocoa_v.h #end # Core Source Code core/alloc_func.cpp core/alloc_func.hpp core/alloc_type.hpp core/backup_type.hpp core/bitmath_func.cpp core/bitmath_func.hpp core/endian_func.hpp core/endian_type.hpp core/enum_type.hpp core/geometry_func.cpp core/geometry_func.hpp core/geometry_type.hpp core/math_func.cpp core/math_func.hpp core/mem_func.hpp core/overflowsafe_type.hpp core/pool_func.cpp core/pool_func.hpp core/pool_type.hpp core/random_func.cpp core/random_func.hpp core/smallmap_type.hpp core/smallvec_type.hpp core/sort_func.hpp core/string_compare_type.hpp # GUI Source Code aircraft_gui.cpp airport_gui.cpp autoreplace_gui.cpp bootstrap_gui.cpp bridge_gui.cpp build_vehicle_gui.cpp cheat_gui.cpp company_gui.cpp console_gui.cpp date_gui.cpp depot_gui.cpp dock_gui.cpp engine_gui.cpp error_gui.cpp fios_gui.cpp genworld_gui.cpp goal_gui.cpp graph_gui.cpp group_gui.cpp highscore_gui.cpp industry_gui.cpp intro_gui.cpp main_gui.cpp misc_gui.cpp music_gui.cpp network/network_chat_gui.cpp network/network_content_gui.cpp network/network_gui.cpp newgrf_debug_gui.cpp newgrf_gui.cpp news_gui.cpp object_gui.cpp order_gui.cpp osk_gui.cpp rail_gui.cpp road_gui.cpp roadveh_gui.cpp settings_gui.cpp ship_gui.cpp signs_gui.cpp smallmap_gui.cpp station_gui.cpp statusbar_gui.cpp subsidy_gui.cpp terraform_gui.cpp textfile_gui.cpp timetable_gui.cpp toolbar_gui.cpp town_gui.cpp train_gui.cpp transparency_gui.cpp tree_gui.cpp vehicle_gui.cpp viewport_gui.cpp waypoint_gui.cpp # Widgets widgets/airport_widget.h widgets/ai_widget.h widgets/autoreplace_widget.h widgets/bootstrap_widget.h widgets/bridge_widget.h widgets/build_vehicle_widget.h widgets/cheat_widget.h widgets/company_widget.h widgets/console_widget.h widgets/date_widget.h widgets/depot_widget.h widgets/dock_widget.h widgets/dropdown.cpp widgets/dropdown_func.h widgets/dropdown_type.h widgets/dropdown_widget.h widgets/engine_widget.h widgets/error_widget.h widgets/fios_widget.h widgets/genworld_widget.h widgets/goal_widget.h widgets/graph_widget.h widgets/group_widget.h widgets/highscore_widget.h widgets/industry_widget.h widgets/intro_widget.h widgets/main_widget.h widgets/misc_widget.h widgets/music_widget.h widgets/network_chat_widget.h widgets/network_content_widget.h widgets/network_widget.h widgets/newgrf_debug_widget.h widgets/newgrf_widget.h widgets/news_widget.h widgets/object_widget.h widgets/order_widget.h widgets/osk_widget.h widgets/rail_widget.h widgets/road_widget.h widgets/settings_widget.h widgets/sign_widget.h widgets/smallmap_widget.h widgets/station_widget.h widgets/statusbar_widget.h widgets/subsidy_widget.h widgets/terraform_widget.h widgets/timetable_widget.h widgets/toolbar_widget.h widgets/town_widget.h widgets/transparency_widget.h widgets/tree_widget.h widgets/vehicle_widget.h widgets/viewport_widget.h widgets/waypoint_widget.h # Command handlers aircraft_cmd.cpp autoreplace_cmd.cpp clear_cmd.cpp company_cmd.cpp depot_cmd.cpp disaster_cmd.cpp group_cmd.cpp industry_cmd.cpp misc_cmd.cpp object_cmd.cpp order_cmd.cpp rail_cmd.cpp road_cmd.cpp roadveh_cmd.cpp ship_cmd.cpp signs_cmd.cpp station_cmd.cpp terraform_cmd.cpp timetable_cmd.cpp town_cmd.cpp train_cmd.cpp tree_cmd.cpp tunnelbridge_cmd.cpp vehicle_cmd.cpp void_cmd.cpp water_cmd.cpp waypoint_cmd.cpp # Save/Load handlers saveload/afterload.cpp saveload/ai_sl.cpp saveload/airport_sl.cpp saveload/animated_tile_sl.cpp saveload/autoreplace_sl.cpp saveload/cargomonitor_sl.cpp saveload/cargopacket_sl.cpp saveload/cheat_sl.cpp saveload/company_sl.cpp saveload/depot_sl.cpp saveload/economy_sl.cpp saveload/engine_sl.cpp saveload/game_sl.cpp saveload/gamelog_sl.cpp saveload/goal_sl.cpp saveload/group_sl.cpp saveload/industry_sl.cpp saveload/labelmaps_sl.cpp saveload/map_sl.cpp saveload/misc_sl.cpp saveload/newgrf_sl.cpp saveload/newgrf_sl.h saveload/object_sl.cpp saveload/oldloader.cpp saveload/oldloader.h saveload/oldloader_sl.cpp saveload/order_sl.cpp saveload/saveload.cpp saveload/saveload.h saveload/saveload_filter.h saveload/saveload_internal.h saveload/signs_sl.cpp saveload/station_sl.cpp saveload/storage_sl.cpp saveload/strings_sl.cpp saveload/subsidy_sl.cpp saveload/town_sl.cpp saveload/vehicle_sl.cpp saveload/waypoint_sl.cpp # Tables table/airport_defaults.h table/airport_movement.h table/airporttile_ids.h table/airporttiles.h table/animcursors.h table/autorail.h table/bridge_land.h table/build_industry.h table/cargo_const.h table/clear_land.h table/control_codes.h table/elrail_data.h table/engines.h table/genland.h table/industry_land.h table/landscape_sprite.h table/newgrf_debug_data.h table/object_land.h table/palette_convert.h table/palettes.h table/pricebase.h table/railtypes.h table/road_land.h table/roadveh_movement.h ../objs/settings/table/settings.h table/sprites.h table/station_land.h table/strgen_tables.h ../objs/langs/table/strings.h table/town_land.h table/townname.h table/track_land.h table/train_cmd.h table/tree_land.h table/unicode.h table/water_land.h # MD5 3rdparty/md5/md5.cpp 3rdparty/md5/md5.h # Script script/script_config.cpp script/script_config.hpp script/script_fatalerror.hpp script/script_info.cpp script/script_info.hpp script/script_info_dummy.cpp script/script_instance.cpp script/script_instance.hpp script/script_scanner.cpp script/script_scanner.hpp script/script_storage.hpp script/script_suspend.hpp script/squirrel.cpp script/squirrel.hpp script/squirrel_class.hpp script/squirrel_helper.hpp script/squirrel_helper_type.hpp script/squirrel_std.cpp script/squirrel_std.hpp # Squirrel 3rdparty/squirrel/squirrel/sqapi.cpp 3rdparty/squirrel/squirrel/sqbaselib.cpp 3rdparty/squirrel/squirrel/sqclass.cpp 3rdparty/squirrel/squirrel/sqcompiler.cpp 3rdparty/squirrel/squirrel/sqdebug.cpp 3rdparty/squirrel/squirrel/sqfuncstate.cpp 3rdparty/squirrel/squirrel/sqlexer.cpp 3rdparty/squirrel/squirrel/sqmem.cpp 3rdparty/squirrel/squirrel/sqobject.cpp 3rdparty/squirrel/squirrel/sqstate.cpp 3rdparty/squirrel/sqstdlib/sqstdaux.cpp 3rdparty/squirrel/sqstdlib/sqstdmath.cpp 3rdparty/squirrel/squirrel/sqtable.cpp 3rdparty/squirrel/squirrel/sqvm.cpp # Squirrel headers 3rdparty/squirrel/squirrel/sqarray.h 3rdparty/squirrel/squirrel/sqclass.h 3rdparty/squirrel/squirrel/sqclosure.h 3rdparty/squirrel/squirrel/sqcompiler.h 3rdparty/squirrel/squirrel/sqfuncproto.h 3rdparty/squirrel/squirrel/sqfuncstate.h 3rdparty/squirrel/squirrel/sqlexer.h 3rdparty/squirrel/squirrel/sqobject.h 3rdparty/squirrel/squirrel/sqopcodes.h 3rdparty/squirrel/squirrel/sqpcheader.h 3rdparty/squirrel/squirrel/sqstate.h 3rdparty/squirrel/include/sqstdaux.h 3rdparty/squirrel/include/sqstdblob.h 3rdparty/squirrel/sqstdlib/sqstdblobimpl.h 3rdparty/squirrel/include/sqstdio.h 3rdparty/squirrel/include/sqstdmath.h 3rdparty/squirrel/sqstdlib/sqstdstream.h 3rdparty/squirrel/include/sqstdstring.h 3rdparty/squirrel/include/sqstdsystem.h 3rdparty/squirrel/squirrel/sqstring.h 3rdparty/squirrel/squirrel/sqtable.h 3rdparty/squirrel/include/squirrel.h 3rdparty/squirrel/squirrel/squserdata.h 3rdparty/squirrel/squirrel/squtils.h 3rdparty/squirrel/squirrel/sqvm.h # AI Core ai/ai.hpp ai/ai_config.cpp ai/ai_config.hpp ai/ai_core.cpp ai/ai_gui.cpp ai/ai_gui.hpp ai/ai_info.cpp ai/ai_info.hpp ai/ai_instance.cpp ai/ai_instance.hpp ai/ai_scanner.cpp ai/ai_scanner.hpp # AI API script/api/ai_changelog.hpp # Game API script/api/game_changelog.hpp # Game Core game/game.hpp game/game_config.cpp game/game_config.hpp game/game_core.cpp game/game_info.cpp game/game_info.hpp game/game_instance.cpp game/game_instance.hpp game/game_scanner.cpp game/game_scanner.hpp game/game_text.cpp game/game_text.hpp # Script API script/api/script_accounting.hpp script/api/script_admin.hpp script/api/script_airport.hpp script/api/script_base.hpp script/api/script_basestation.hpp script/api/script_bridge.hpp script/api/script_bridgelist.hpp script/api/script_cargo.hpp script/api/script_cargolist.hpp script/api/script_cargomonitor.hpp script/api/script_company.hpp script/api/script_companymode.hpp script/api/script_controller.hpp script/api/script_date.hpp script/api/script_depotlist.hpp script/api/script_engine.hpp script/api/script_enginelist.hpp script/api/script_error.hpp script/api/script_event.hpp script/api/script_event_types.hpp script/api/script_execmode.hpp script/api/script_game.hpp script/api/script_gamesettings.hpp script/api/script_goal.hpp script/api/script_group.hpp script/api/script_grouplist.hpp script/api/script_industry.hpp script/api/script_industrylist.hpp script/api/script_industrytype.hpp script/api/script_industrytypelist.hpp script/api/script_info_docs.hpp script/api/script_infrastructure.hpp script/api/script_list.hpp script/api/script_log.hpp script/api/script_map.hpp script/api/script_marine.hpp script/api/script_news.hpp script/api/script_object.hpp script/api/script_order.hpp script/api/script_rail.hpp script/api/script_railtypelist.hpp script/api/script_road.hpp script/api/script_sign.hpp script/api/script_signlist.hpp script/api/script_station.hpp script/api/script_stationlist.hpp script/api/script_subsidy.hpp script/api/script_subsidylist.hpp script/api/script_testmode.hpp script/api/script_text.hpp script/api/script_tile.hpp script/api/script_tilelist.hpp script/api/script_town.hpp script/api/script_townlist.hpp script/api/script_tunnel.hpp script/api/script_types.hpp script/api/script_vehicle.hpp script/api/script_vehiclelist.hpp script/api/script_viewport.hpp script/api/script_waypoint.hpp script/api/script_waypointlist.hpp script/api/script_window.hpp # Script API Implementation script/api/script_accounting.cpp script/api/script_admin.cpp script/api/script_airport.cpp script/api/script_base.cpp script/api/script_basestation.cpp script/api/script_bridge.cpp script/api/script_bridgelist.cpp script/api/script_cargo.cpp script/api/script_cargolist.cpp script/api/script_cargomonitor.cpp script/api/script_company.cpp script/api/script_companymode.cpp script/api/script_controller.cpp script/api/script_date.cpp script/api/script_depotlist.cpp script/api/script_engine.cpp script/api/script_enginelist.cpp script/api/script_error.cpp script/api/script_event.cpp script/api/script_event_types.cpp script/api/script_execmode.cpp script/api/script_game.cpp script/api/script_gamesettings.cpp script/api/script_goal.cpp script/api/script_group.cpp script/api/script_grouplist.cpp script/api/script_industry.cpp script/api/script_industrylist.cpp script/api/script_industrytype.cpp script/api/script_industrytypelist.cpp script/api/script_infrastructure.cpp script/api/script_list.cpp script/api/script_log.cpp script/api/script_map.cpp script/api/script_marine.cpp script/api/script_news.cpp script/api/script_object.cpp script/api/script_order.cpp script/api/script_rail.cpp script/api/script_railtypelist.cpp script/api/script_road.cpp script/api/script_sign.cpp script/api/script_signlist.cpp script/api/script_station.cpp script/api/script_stationlist.cpp script/api/script_subsidy.cpp script/api/script_subsidylist.cpp script/api/script_testmode.cpp script/api/script_text.cpp script/api/script_tile.cpp script/api/script_tilelist.cpp script/api/script_town.cpp script/api/script_townlist.cpp script/api/script_tunnel.cpp script/api/script_vehicle.cpp script/api/script_vehiclelist.cpp script/api/script_viewport.cpp script/api/script_waypoint.cpp script/api/script_waypointlist.cpp script/api/script_window.cpp # Blitters #if DEDICATED #else blitter/32bpp_anim.cpp blitter/32bpp_anim.hpp blitter/32bpp_base.cpp blitter/32bpp_base.hpp blitter/32bpp_optimized.cpp blitter/32bpp_optimized.hpp blitter/32bpp_simple.cpp blitter/32bpp_simple.hpp blitter/8bpp_base.cpp blitter/8bpp_base.hpp blitter/8bpp_optimized.cpp blitter/8bpp_optimized.hpp blitter/8bpp_simple.cpp blitter/8bpp_simple.hpp #end blitter/base.cpp blitter/base.hpp blitter/factory.hpp blitter/null.cpp blitter/null.hpp # Drivers music/music_driver.hpp sound/sound_driver.hpp video/video_driver.hpp # Sprite loaders spriteloader/grf.cpp spriteloader/grf.hpp spriteloader/spriteloader.hpp # NewGRF newgrf.cpp newgrf_airport.cpp newgrf_airporttiles.cpp newgrf_canal.cpp newgrf_cargo.cpp newgrf_commons.cpp newgrf_config.cpp newgrf_engine.cpp newgrf_generic.cpp newgrf_house.cpp newgrf_industries.cpp newgrf_industrytiles.cpp newgrf_object.cpp newgrf_railtype.cpp newgrf_sound.cpp newgrf_spritegroup.cpp newgrf_station.cpp newgrf_storage.cpp newgrf_text.cpp newgrf_town.cpp newgrf_townname.cpp # Map Accessors bridge_map.cpp bridge_map.h clear_map.h industry_map.h object_map.h rail_map.h road_map.cpp road_map.h station_map.h tile_map.h town_map.h tree_map.h tunnel_map.cpp tunnel_map.h tunnelbridge_map.h void_map.h water_map.h # Misc misc/array.hpp misc/binaryheap.hpp misc/blob.hpp misc/countedobj.cpp misc/countedptr.hpp misc/dbg_helpers.cpp misc/dbg_helpers.h misc/fixedsizearray.hpp misc/getoptdata.cpp misc/getoptdata.h misc/hashtable.hpp misc/str.hpp # Network Core network/core/address.cpp network/core/address.h network/core/config.h network/core/core.cpp network/core/core.h network/core/game.h network/core/host.cpp network/core/host.h network/core/os_abstraction.h network/core/packet.cpp network/core/packet.h network/core/tcp.cpp network/core/tcp.h network/core/tcp_admin.cpp network/core/tcp_admin.h network/core/tcp_connect.cpp network/core/tcp_content.cpp network/core/tcp_content.h network/core/tcp_game.cpp network/core/tcp_game.h network/core/tcp_http.cpp network/core/tcp_http.h network/core/tcp_listen.h network/core/udp.cpp network/core/udp.h # Pathfinder pathfinder/follow_track.hpp pathfinder/opf/opf_ship.cpp pathfinder/opf/opf_ship.h pathfinder/pathfinder_func.h pathfinder/pathfinder_type.h pathfinder/pf_performance_timer.hpp # NPF pathfinder/npf/aystar.cpp pathfinder/npf/aystar.h pathfinder/npf/npf.cpp pathfinder/npf/npf_func.h pathfinder/npf/queue.cpp pathfinder/npf/queue.h # YAPF pathfinder/yapf/nodelist.hpp pathfinder/yapf/yapf.h pathfinder/yapf/yapf.hpp pathfinder/yapf/yapf_base.hpp pathfinder/yapf/yapf_cache.h pathfinder/yapf/yapf_common.hpp pathfinder/yapf/yapf_costbase.hpp pathfinder/yapf/yapf_costcache.hpp pathfinder/yapf/yapf_costrail.hpp pathfinder/yapf/yapf_destrail.hpp pathfinder/yapf/yapf_node.hpp pathfinder/yapf/yapf_node_rail.hpp pathfinder/yapf/yapf_node_road.hpp pathfinder/yapf/yapf_node_ship.hpp pathfinder/yapf/yapf_rail.cpp pathfinder/yapf/yapf_road.cpp pathfinder/yapf/yapf_ship.cpp # Video video/dedicated_v.cpp video/null_v.cpp #if DEDICATED #else #if ALLEGRO video/allegro_v.cpp #end #if SDL video/sdl_v.cpp #end #if WIN32 video/win32_v.cpp #end #if WINCE video/win32_v.cpp #end #end # Music #if DEDICATED #else #if ALLEGRO music/allegro_m.cpp #end #if DIRECTMUSIC music/dmusic.cpp #end #end music/null_m.cpp #if DEDICATED #else #if WIN32 music/win32_m.cpp #else #if WINCE #else #if PSP #else #if DOS #else music/extmidi.cpp #end #end #end #end #if BEOS music/bemidi.cpp #end #if LIBTIMIDITY music/libtimidity.cpp #end #end # Sound sound/null_s.cpp #if DEDICATED #else #if ALLEGRO sound/allegro_s.cpp #end #if SDL sound/sdl_s.cpp #end #if WIN32 sound/win32_s.cpp #end #end #if OSX # OSX Files os/macosx/macos.mm #if DEDICATED #else music/qtmidi.cpp #end #if COCOA video/cocoa/cocoa_v.mm video/cocoa/event.mm video/cocoa/fullscreen.mm video/cocoa/wnd_quartz.mm video/cocoa/wnd_quickdraw.mm music/cocoa_m.cpp sound/cocoa_s.cpp os/macosx/splash.cpp #end #end # Windows files #if WIN32 os/windows/crashlog_win.cpp os/windows/ottdres.rc os/windows/win32.cpp #end #if WINCE os/windows/ottdres.rc os/windows/win32.cpp #end # Threading thread/thread.h #if HAVE_THREAD #if WIN32 thread/thread_win32.cpp #else #if OS2 thread/thread_os2.cpp #else #if MORPHOS thread/thread_morphos.cpp #else thread/thread_pthread.cpp #end #end #end #else thread/thread_none.cpp #end openttd-1.3.3/src/0000755000000000000000000000000012246102757012466 5ustar rootrootopenttd-1.3.3/src/newgrf_house.h0000644000000000000000000001067512246102611015330 0ustar rootroot/* $Id: newgrf_house.h 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_house.h Functions related to NewGRF houses. */ #ifndef NEWGRF_HOUSE_H #define NEWGRF_HOUSE_H #include "newgrf_callbacks.h" #include "tile_cmd.h" #include "house_type.h" #include "newgrf_spritegroup.h" #include "newgrf_town.h" /** Scope resolver for houses. */ struct HouseScopeResolver : public ScopeResolver { HouseID house_id; ///< Type of house being queried. TileIndex tile; ///< Tile of this house. Town *town; ///< Town of this house. bool not_yet_constructed; ///< True for construction check. uint16 initial_random_bits; ///< Random bits during construction checks. uint32 watched_cargo_triggers; ///< Cargo types that triggered the watched cargo callback. HouseScopeResolver(ResolverObject *ro, HouseID house_id, TileIndex tile, Town *town, bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; /* virtual */ void SetTriggers(int triggers) const; }; /** Resolver object to be used for houses (feature 07 spritegroups). */ struct HouseResolverObject : public ResolverObject { HouseScopeResolver house_scope; TownScopeResolver town_scope; HouseResolverObject(HouseID house_id, TileIndex tile, Town *town, CallbackID callback = CBID_NO_CALLBACK, uint32 param1 = 0, uint32 param2 = 0, bool not_yet_constructed = false, uint8 initial_random_bits = 0, uint32 watched_cargo_triggers = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { switch (scope) { case VSG_SCOPE_SELF: return &this->house_scope; case VSG_SCOPE_PARENT: return &this->town_scope; default: return ResolverObject::GetScope(scope, relative); } } }; /** * Makes class IDs unique to each GRF file. * Houses can be assigned class IDs which are only comparable within the GRF * file they were defined in. This mapping ensures that if two houses have the * same class as defined by the GRF file, the classes are different within the * game. An array of HouseClassMapping structs is created, and the array index * of the struct that matches both the GRF ID and the class ID is the class ID * used in the game. * * Although similar to the HouseIDMapping struct above, this serves a different * purpose. Since the class ID is not saved anywhere, this mapping does not * need to be persistent; it just needs to keep class ids unique. */ struct HouseClassMapping { uint32 grfid; ///< The GRF ID of the file this class belongs to uint8 class_id; ///< The class id within the grf file }; HouseClassID AllocateHouseClassID(byte grf_class_id, uint32 grfid); void InitializeBuildingCounts(); void IncreaseBuildingCount(Town *t, HouseID house_id); void DecreaseBuildingCount(Town *t, HouseID house_id); void DrawNewHouseTile(TileInfo *ti, HouseID house_id); void AnimateNewHouseTile(TileIndex tile); void AnimateNewHouseConstruction(TileIndex tile); uint16 GetHouseCallback(CallbackID callback, uint32 param1, uint32 param2, HouseID house_id, Town *town, TileIndex tile, bool not_yet_constructed = false, uint8 initial_random_bits = 0, uint32 watched_cargo_triggers = 0); void WatchedCargoCallback(TileIndex tile, uint32 trigger_cargoes); bool CanDeleteHouse(TileIndex tile); bool NewHouseTileLoop(TileIndex tile); enum HouseTrigger { /* The tile of the house has been triggered during the tileloop. */ HOUSE_TRIGGER_TILE_LOOP = 0x01, /* * The top tile of a (multitile) building has been triggered during and all * the tileloop other tiles of the same building get the same random value. */ HOUSE_TRIGGER_TILE_LOOP_TOP = 0x02, }; void TriggerHouse(TileIndex t, HouseTrigger trigger); #endif /* NEWGRF_HOUSE_H */ openttd-1.3.3/src/viewport_gui.cpp0000644000000000000000000001635412246102611015713 0ustar rootroot/* $Id: viewport_gui.cpp 24700 2012-11-11 16:10:43Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file viewport_gui.cpp Extra viewport window. */ #include "stdafx.h" #include "landscape.h" #include "window_gui.h" #include "viewport_func.h" #include "strings_func.h" #include "zoom_func.h" #include "window_func.h" #include "widgets/viewport_widget.h" #include "table/strings.h" #include "table/sprites.h" /* Extra ViewPort Window Stuff */ static const NWidgetPart _nested_extra_view_port_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_EV_CAPTION), SetDataTip(STR_EXTRA_VIEW_PORT_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_EV_VIEWPORT), SetPadding(2, 2, 2, 2), SetResize(1, 1), SetFill(1, 1), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_EV_ZOOM_IN), SetDataTip(SPR_IMG_ZOOMIN, STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_EV_ZOOM_OUT), SetDataTip(SPR_IMG_ZOOMOUT, STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_EV_MAIN_TO_VIEW), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_EV_VIEW_TO_MAIN), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetResize(1, 0), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; class ExtraViewportWindow : public Window { public: ExtraViewportWindow(const WindowDesc *desc, int window_number, TileIndex tile) : Window() { this->InitNested(desc, window_number); NWidgetViewport *nvp = this->GetWidget(WID_EV_VIEWPORT); nvp->InitializeViewport(this, 0, ZOOM_LVL_VIEWPORT); if (_settings_client.gui.zoom_min == ZOOM_LVL_VIEWPORT) this->DisableWidget(WID_EV_ZOOM_IN); Point pt; if (tile == INVALID_TILE) { /* No tile? Use center of main viewport. */ const Window *w = FindWindowById(WC_MAIN_WINDOW, 0); /* center on same place as main window (zoom is maximum, no adjustment needed) */ pt.x = w->viewport->scrollpos_x + w->viewport->virtual_width / 2; pt.y = w->viewport->scrollpos_y + w->viewport->virtual_height / 2; } else { pt = RemapCoords(TileX(tile) * TILE_SIZE + TILE_SIZE / 2, TileY(tile) * TILE_SIZE + TILE_SIZE / 2, TileHeight(tile)); } this->viewport->scrollpos_x = pt.x - this->viewport->virtual_width / 2; this->viewport->scrollpos_y = pt.y - this->viewport->virtual_height / 2; this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x; this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y; } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_EV_CAPTION: /* set the number in the title bar */ SetDParam(0, this->window_number + 1); break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_EV_ZOOM_IN: DoZoomInOutWindow(ZOOM_IN, this); break; case WID_EV_ZOOM_OUT: DoZoomInOutWindow(ZOOM_OUT, this); break; case WID_EV_MAIN_TO_VIEW: { // location button (move main view to same spot as this view) 'Paste Location' Window *w = FindWindowById(WC_MAIN_WINDOW, 0); int x = this->viewport->scrollpos_x; // Where is the main looking at int y = this->viewport->scrollpos_y; /* set this view to same location. Based on the center, adjusting for zoom */ w->viewport->dest_scrollpos_x = x - (w->viewport->virtual_width - this->viewport->virtual_width) / 2; w->viewport->dest_scrollpos_y = y - (w->viewport->virtual_height - this->viewport->virtual_height) / 2; w->viewport->follow_vehicle = INVALID_VEHICLE; break; } case WID_EV_VIEW_TO_MAIN: { // inverse location button (move this view to same spot as main view) 'Copy Location' const Window *w = FindWindowById(WC_MAIN_WINDOW, 0); int x = w->viewport->scrollpos_x; int y = w->viewport->scrollpos_y; this->viewport->dest_scrollpos_x = x + (w->viewport->virtual_width - this->viewport->virtual_width) / 2; this->viewport->dest_scrollpos_y = y + (w->viewport->virtual_height - this->viewport->virtual_height) / 2; break; } } } virtual void OnResize() { if (this->viewport != NULL) { NWidgetViewport *nvp = this->GetWidget(WID_EV_VIEWPORT); nvp->UpdateViewportCoordinates(this); } } virtual void OnScroll(Point delta) { this->viewport->scrollpos_x += ScaleByZoom(delta.x, this->viewport->zoom); this->viewport->scrollpos_y += ScaleByZoom(delta.y, this->viewport->zoom); this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x; this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y; } virtual void OnMouseWheel(int wheel) { if (_settings_client.gui.scrollwheel_scrolling == 0) { ZoomInOrOutToCursorWindow(wheel < 0, this); } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; /* Only handle zoom message if intended for us (msg ZOOM_IN/ZOOM_OUT) */ HandleZoomMessage(this, this->viewport, WID_EV_ZOOM_IN, WID_EV_ZOOM_OUT); } }; static const WindowDesc _extra_view_port_desc( WDP_AUTO, 300, 268, WC_EXTRA_VIEW_PORT, WC_NONE, 0, _nested_extra_view_port_widgets, lengthof(_nested_extra_view_port_widgets) ); /** * Show a new Extra Viewport window. * @param tile Tile to center the view on. INVALID_TILE means to use the center of main viewport. */ void ShowExtraViewPortWindow(TileIndex tile) { int i = 0; /* find next free window number for extra viewport */ while (FindWindowById(WC_EXTRA_VIEW_PORT, i) != NULL) i++; new ExtraViewportWindow(&_extra_view_port_desc, i, tile); } /** * Show a new Extra Viewport window. * Center it on the tile under the cursor, if the cursor is inside a viewport. * If that fails, center it on main viewport center. */ void ShowExtraViewPortWindowForTileUnderCursor() { /* Use tile under mouse as center for new viewport. * Do this before creating the window, it might appear just below the mouse. */ Point pt = GetTileBelowCursor(); ShowExtraViewPortWindow(pt.x != -1 ? TileVirtXY(pt.x, pt.y) : INVALID_TILE); } openttd-1.3.3/src/bridge.h0000644000000000000000000000555512246102611014072 0ustar rootroot/* $Id: bridge.h 22413 2011-05-02 20:59:54Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file bridge.h Header file for bridges */ #ifndef BRIDGE_H #define BRIDGE_H #include "gfx_type.h" #include "tile_cmd.h" /** * This enum is related to the definition of bridge pieces, * which is used to determine the proper sprite table to use * while drawing a given bridge part. */ enum BridgePieces { BRIDGE_PIECE_NORTH = 0, BRIDGE_PIECE_SOUTH, BRIDGE_PIECE_INNER_NORTH, BRIDGE_PIECE_INNER_SOUTH, BRIDGE_PIECE_MIDDLE_ODD, BRIDGE_PIECE_MIDDLE_EVEN, BRIDGE_PIECE_HEAD, BRIDGE_PIECE_INVALID, }; DECLARE_POSTFIX_INCREMENT(BridgePieces) static const uint MAX_BRIDGES = 13; ///< Maximal number of available bridge specs. typedef uint BridgeType; ///< Bridge spec number. /** * Struct containing information about a single bridge type */ struct BridgeSpec { Year avail_year; ///< the year where it becomes available byte min_length; ///< the minimum length (not counting start and end tile) uint16 max_length; ///< the maximum length (not counting start and end tile) uint16 price; ///< the price multiplier uint16 speed; ///< maximum travel speed (1 unit = 1/1.6 mph = 1 km-ish/h) SpriteID sprite; ///< the sprite which is used in the GUI PaletteID pal; ///< the palette which is used in the GUI StringID material; ///< the string that contains the bridge description StringID transport_name[2]; ///< description of the bridge, when built for road or rail PalSpriteID **sprite_table; ///< table of sprites for drawing the bridge byte flags; ///< bit 0 set: disable drawing of far pillars. }; extern BridgeSpec _bridge[MAX_BRIDGES]; Foundation GetBridgeFoundation(Slope tileh, Axis axis); bool HasBridgeFlatRamp(Slope tileh, Axis axis); /** * Get the specification of a bridge type. * @param i The type of bridge to get the specification for. * @return The specification. */ static inline const BridgeSpec *GetBridgeSpec(BridgeType i) { assert(i < lengthof(_bridge)); return &_bridge[i]; } void DrawBridgeMiddle(const TileInfo *ti); CommandCost CheckBridgeAvailability(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags = DC_NONE); int CalcBridgeLenCostFactor(int x); void ResetBridges(); #endif /* BRIDGE_H */ openttd-1.3.3/src/void_cmd.cpp0000644000000000000000000000501412246102611014743 0ustar rootroot/* $Id: void_cmd.cpp 23160 2011-11-08 17:37:32Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file void_cmd.cpp Handling of void tiles. */ #include "stdafx.h" #include "tile_cmd.h" #include "command_func.h" #include "viewport_func.h" #include "table/strings.h" #include "table/sprites.h" static void DrawTile_Void(TileInfo *ti) { DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE); } static int GetSlopePixelZ_Void(TileIndex tile, uint x, uint y) { return TilePixelHeight(tile); } static Foundation GetFoundation_Void(TileIndex tile, Slope tileh) { return FOUNDATION_NONE; } static CommandCost ClearTile_Void(TileIndex tile, DoCommandFlag flags) { return_cmd_error(STR_ERROR_OFF_EDGE_OF_MAP); } static void GetTileDesc_Void(TileIndex tile, TileDesc *td) { td->str = STR_EMPTY; td->owner[0] = OWNER_NONE; } static void TileLoop_Void(TileIndex tile) { /* not used */ } static void ChangeTileOwner_Void(TileIndex tile, Owner old_owner, Owner new_owner) { /* not used */ } static TrackStatus GetTileTrackStatus_Void(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { return 0; } static CommandCost TerraformTile_Void(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { return_cmd_error(STR_ERROR_OFF_EDGE_OF_MAP); } extern const TileTypeProcs _tile_type_void_procs = { DrawTile_Void, // draw_tile_proc GetSlopePixelZ_Void, // get_slope_z_proc ClearTile_Void, // clear_tile_proc NULL, // add_accepted_cargo_proc GetTileDesc_Void, // get_tile_desc_proc GetTileTrackStatus_Void, // get_tile_track_status_proc NULL, // click_tile_proc NULL, // animate_tile_proc TileLoop_Void, // tile_loop_proc ChangeTileOwner_Void, // change_tile_owner_proc NULL, // add_produced_cargo_proc NULL, // vehicle_enter_tile_proc GetFoundation_Void, // get_foundation_proc TerraformTile_Void, // terraform_tile_proc }; openttd-1.3.3/src/group_type.h0000644000000000000000000000241612246102610015023 0ustar rootroot/* $Id: group_type.h 24139 2012-04-17 19:44:16Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file group_type.h Types of a group. */ #ifndef GROUP_TYPE_H #define GROUP_TYPE_H typedef uint16 GroupID; ///< Type for all group identifiers. static const GroupID NEW_GROUP = 0xFFFC; ///< Sentinel for a to-be-created group. static const GroupID ALL_GROUP = 0xFFFD; ///< All vehicles are in this group. static const GroupID DEFAULT_GROUP = 0xFFFE; ///< Ungrouped vehicles are in this group. static const GroupID INVALID_GROUP = 0xFFFF; ///< Sentinel for invalid groups. static const uint MAX_LENGTH_GROUP_NAME_CHARS = 32; ///< The maximum length of a group name in characters including '\0' struct Group; #endif /* GROUP_TYPE_H */ openttd-1.3.3/src/misc.cpp0000644000000000000000000000570612246102611014122 0ustar rootroot/* $Id: misc.cpp 24132 2012-04-17 19:43:43Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file misc.cpp Misc functions that shouldn't be here. */ #include "stdafx.h" #include "landscape.h" #include "news_func.h" #include "ai/ai.hpp" #include "ai/ai_gui.hpp" #include "newgrf.h" #include "newgrf_house.h" #include "economy_func.h" #include "date_func.h" #include "texteff.hpp" #include "gfx_func.h" #include "gamelog.h" #include "animated_tile_func.h" #include "tilehighlight_func.h" #include "network/network_func.h" #include "window_func.h" #include "core/pool_type.hpp" #include "game/game.hpp" extern TileIndex _cur_tileloop_tile; extern void MakeNewgameSettingsLive(); void InitializeSound(); void InitializeMusic(); void InitializeVehicles(); void InitializeRailGui(); void InitializeRoadGui(); void InitializeAirportGui(); void InitializeDockGui(); void InitializeObjectGui(); void InitializeIndustries(); void InitializeObjects(); void InitializeTrees(); void InitializeCompanies(); void InitializeCheats(); void InitializeNPF(); void InitializeOldNames(); void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settings) { /* Make sure there isn't any window that can influence anything * related to the new game we're about to start/load. */ UnInitWindowSystem(); AllocateMap(size_x, size_y); _pause_mode = PM_UNPAUSED; _fast_forward = 0; _tick_counter = 0; _cur_tileloop_tile = 1; _thd.redsq = INVALID_TILE; if (reset_settings) MakeNewgameSettingsLive(); if (reset_date) { SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1), 0); InitializeOldNames(); } PoolBase::Clean(PT_NORMAL); ResetPersistentNewGRFData(); InitializeSound(); InitializeMusic(); InitializeVehicles(); InitNewsItemStructs(); InitializeLandscape(); InitializeRailGui(); InitializeRoadGui(); InitializeAirportGui(); InitializeDockGui(); InitializeObjectGui(); InitializeAIGui(); InitializeTrees(); InitializeIndustries(); InitializeObjects(); InitializeBuildingCounts(); InitializeNPF(); InitializeCompanies(); AI::Initialize(); Game::Initialize(); InitializeCheats(); InitTextEffects(); #ifdef ENABLE_NETWORK NetworkInitChatMessage(); #endif /* ENABLE_NETWORK */ InitializeAnimatedTiles(); InitializeEconomy(); ResetObjectToPlace(); GamelogReset(); GamelogStartAction(GLAT_START); GamelogRevision(); GamelogMode(); GamelogGRFAddList(_grfconfig); GamelogStopAction(); } openttd-1.3.3/src/cheat.cpp0000644000000000000000000000242012246102611014241 0ustar rootroot/* $Id: cheat.cpp 22413 2011-05-02 20:59:54Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cheat.cpp Handling (loading/saving/initializing) of cheats. */ #include "stdafx.h" #include "cheat_type.h" /** All the cheats. */ Cheats _cheats; /** Reinitialise all the cheats. */ void InitializeCheats() { memset(&_cheats, 0, sizeof(Cheats)); } /** * Return true if any cheat has been used, false otherwise * @return has a cheat been used? */ bool CheatHasBeenUsed() { /* Cannot use lengthof because _cheats is of type Cheats, not Cheat */ const Cheat *cht = (Cheat*)&_cheats; const Cheat *cht_last = &cht[sizeof(_cheats) / sizeof(Cheat)]; for (; cht != cht_last; cht++) { if (cht->been_used) return true; } return false; } openttd-1.3.3/src/town_type.h0000644000000000000000000001201712246102611014655 0ustar rootroot/* $Id: town_type.h 23233 2011-11-15 20:47:53Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file town_type.h Types related to towns. */ #ifndef TOWN_TYPE_H #define TOWN_TYPE_H #include "core/enum_type.hpp" typedef uint16 TownID; struct Town; /** Supported initial town sizes */ enum TownSize { TSZ_SMALL, ///< Small town. TSZ_MEDIUM, ///< Medium town. TSZ_LARGE, ///< Large town. TSZ_RANDOM, ///< Random size, bigger than small, smaller than large. TSZ_END, ///< Number of available town sizes. }; template <> struct EnumPropsT : MakeEnumPropsT {}; enum Ratings { /* These refer to the maximums, so Appalling is -1000 to -400 * MAXIMUM RATINGS BOUNDARIES */ RATING_MINIMUM = -1000, RATING_APPALLING = -400, RATING_VERYPOOR = -200, RATING_POOR = 0, RATING_MEDIOCRE = 200, RATING_GOOD = 400, RATING_VERYGOOD = 600, RATING_EXCELLENT = 800, RATING_OUTSTANDING = 1000, ///< OUTSTANDING RATING_MAXIMUM = RATING_OUTSTANDING, RATING_INITIAL = 500, ///< initial rating /* RATINGS AFFECTING NUMBERS */ RATING_TREE_DOWN_STEP = -35, RATING_TREE_MINIMUM = RATING_MINIMUM, RATING_TREE_UP_STEP = 7, RATING_TREE_MAXIMUM = 220, RATING_GROWTH_UP_STEP = 5, ///< when a town grows, all companies have rating increased a bit ... RATING_GROWTH_MAXIMUM = RATING_MEDIOCRE, ///< ... up to RATING_MEDIOCRE RATING_STATION_UP_STEP = 12, ///< when a town grows, company gains reputation for all well serviced stations ... RATING_STATION_DOWN_STEP = -15, ///< ... but loses for bad serviced stations RATING_TUNNEL_BRIDGE_DOWN_STEP = -250, ///< penalty for removing town owned tunnel or bridge RATING_TUNNEL_BRIDGE_MINIMUM = 0, ///< minimum rating after removing tunnel or bridge RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE = 144, ///< rating needed, "Permissive" difficulty settings RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL = 208, ///< "Neutral" RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE = 400, ///< "Hostile" RATING_ROAD_DOWN_STEP_INNER = -50, ///< removing a roadpiece in the middle RATING_ROAD_DOWN_STEP_EDGE = -18, ///< removing a roadpiece at the edge RATING_ROAD_MINIMUM = -100, ///< minimum rating after removing town owned road RATING_ROAD_NEEDED_PERMISSIVE = 16, ///< rating needed, "Permissive" difficulty settings RATING_ROAD_NEEDED_NEUTRAL = 64, ///< "Neutral" RATING_ROAD_NEEDED_HOSTILE = 112, ///< "Hostile" RATING_HOUSE_MINIMUM = RATING_MINIMUM, RATING_BRIBE_UP_STEP = 200, RATING_BRIBE_MAXIMUM = 800, RATING_BRIBE_DOWN_TO = -50 // XXX SHOULD BE SOMETHING LOWER? }; /** * Town Layouts */ enum TownLayout { TL_BEGIN = 0, TL_ORIGINAL = 0, ///< Original algorithm (min. 1 distance between roads) TL_BETTER_ROADS, ///< Extended original algorithm (min. 2 distance between roads) TL_2X2_GRID, ///< Geometric 2x2 grid algorithm TL_3X3_GRID, ///< Geometric 3x3 grid algorithm TL_RANDOM, ///< Random town layout NUM_TLS, ///< Number of town layouts }; template <> struct EnumPropsT : MakeEnumPropsT {}; /** It needs to be 8bits, because we save and load it as such */ typedef SimpleTinyEnumT TownLayoutByte; // typedefing-enumification of TownLayout /** Town founding setting values */ enum TownFounding { TF_BEGIN = 0, ///< Used for iterations and limit testing TF_FORBIDDEN = 0, ///< Forbidden TF_ALLOWED, ///< Allowed TF_CUSTOM_LAYOUT, ///< Allowed, with custom town layout TF_END, ///< Used for iterations and limit testing }; /** It needs to be 8bits, because we save and load it as such */ typedef SimpleTinyEnumT TownFoundingByte; static const uint MAX_LENGTH_TOWN_NAME_CHARS = 32; ///< The maximum length of a town name in characters including '\0' /** Store the maximum and actually transported cargo amount for the current and the last month. */ template struct TransportedCargoStat { Tstorage old_max; ///< Maximum amount last month Tstorage new_max; ///< Maximum amount this month Tstorage old_act; ///< Actually transported last month Tstorage new_act; ///< Actually transported this month TransportedCargoStat() : old_max(0), new_max(0), old_act(0), new_act(0) {} /** Update stats for a new month. */ void NewMonth() { this->old_max = this->new_max; this->new_max = 0; this->old_act = this->new_act; this->new_act = 0; } }; #endif /* TOWN_TYPE_H */ openttd-1.3.3/src/newgrf_object.cpp0000644000000000000000000004576312246102611016014 0ustar rootroot/* $Id: newgrf_object.cpp 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_object.cpp Handling of object NewGRFs. */ #include "stdafx.h" #include "company_base.h" #include "company_func.h" #include "debug.h" #include "newgrf_class_func.h" #include "newgrf_object.h" #include "newgrf_sound.h" #include "object_base.h" #include "object_map.h" #include "tile_cmd.h" #include "town.h" #include "water.h" #include "newgrf_animation_base.h" /** The override manager for our objects. */ ObjectOverrideManager _object_mngr(NEW_OBJECT_OFFSET, NUM_OBJECTS, INVALID_OBJECT_TYPE); extern const ObjectSpec _original_objects[NEW_OBJECT_OFFSET]; /** All the object specifications. */ ObjectSpec _object_specs[NUM_OBJECTS]; /** * Get the specification associated with a specific ObjectType. * @param index The object type to fetch. * @return The specification. */ /* static */ const ObjectSpec *ObjectSpec::Get(ObjectType index) { assert(index < NUM_OBJECTS); return &_object_specs[index]; } /** * Get the specification associated with a tile. * @param tile The tile to fetch the data for. * @return The specification. */ /* static */ const ObjectSpec *ObjectSpec::GetByTile(TileIndex tile) { return ObjectSpec::Get(GetObjectType(tile)); } /** * Check whether the object might be available at some point in this game with the current game mode. * @return true if it might be available. */ bool ObjectSpec::IsEverAvailable() const { return this->enabled && HasBit(this->climate, _settings_game.game_creation.landscape) && (this->flags & (_game_mode != GM_EDITOR ? OBJECT_FLAG_ONLY_IN_SCENEDIT : OBJECT_FLAG_ONLY_IN_GAME)) == 0; } /** * Check whether the object is available at this time. * @return true if it is available. */ bool ObjectSpec::IsAvailable() const { return this->IsEverAvailable() && _date > this->introduction_date && (_date < this->end_of_life_date || this->end_of_life_date < this->introduction_date + 365); } /** * Gets the index of this spec. * @return The index. */ uint ObjectSpec::Index() const { return this - _object_specs; } /** This function initialize the spec arrays of objects. */ void ResetObjects() { /* Clean the pool. */ MemSetT(_object_specs, 0, lengthof(_object_specs)); /* And add our originals. */ MemCpyT(_object_specs, _original_objects, lengthof(_original_objects)); for (uint16 i = 0; i < lengthof(_original_objects); i++) { _object_specs[i].grf_prop.local_id = i; } } template /* static */ void NewGRFClass::InsertDefaults() { ObjectClassID cls = ObjectClass::Allocate('LTHS'); ObjectClass::Get(cls)->name = STR_OBJECT_CLASS_LTHS; _object_specs[OBJECT_LIGHTHOUSE].cls_id = cls; ObjectClass::Assign(&_object_specs[OBJECT_LIGHTHOUSE]); cls = ObjectClass::Allocate('TRNS'); ObjectClass::Get(cls)->name = STR_OBJECT_CLASS_TRNS; _object_specs[OBJECT_TRANSMITTER].cls_id = cls; ObjectClass::Assign(&_object_specs[OBJECT_TRANSMITTER]); } template bool NewGRFClass::IsUIAvailable(uint index) const { return this->GetSpec(index)->IsEverAvailable(); } INSTANTIATE_NEWGRF_CLASS_METHODS(ObjectClass, ObjectSpec, ObjectClassID, OBJECT_CLASS_MAX) /** * Constructor of an object scope resolver. * @param ro Surrounding resolver. * @param obj Object being resolved. * @param tile %Tile of the object. * @param view View of the object. */ ObjectScopeResolver::ObjectScopeResolver(ResolverObject *ro, Object *obj, TileIndex tile, uint8 view) : ScopeResolver(ro) { this->obj = obj; this->tile = tile; this->view = view; } /* virtual */ uint32 ObjectScopeResolver::GetRandomBits() const { return IsValidTile(this->tile) && IsTileType(this->tile, MP_OBJECT) ? GetObjectRandomBits(this->tile) : 0; } /** * Make an analysis of a tile and get the object type. * @param tile TileIndex of the tile to query * @param cur_grfid GRFID of the current callback chain * @return value encoded as per NFO specs */ static uint32 GetObjectIDAtOffset(TileIndex tile, uint32 cur_grfid) { if (!IsTileType(tile, MP_OBJECT)) { return 0xFFFF; } const ObjectSpec *spec = ObjectSpec::GetByTile(tile); /* Default objects have no associated NewGRF file */ if (spec->grf_prop.grffile == NULL) { return 0xFFFE; // Defined in another grf file } if (spec->grf_prop.grffile->grfid == cur_grfid) { // same object, same grf ? return spec->grf_prop.local_id; } return 0xFFFE; // Defined in another grf file } /** * Based on newhouses equivalent, but adapted for newobjects * @param parameter from callback. It's in fact a pair of coordinates * @param tile TileIndex from which the callback was initiated * @param index of the object been queried for * @param grf_version8 True, if we are dealing with a new NewGRF which uses GRF version >= 8. * @return a construction of bits obeying the newgrf format */ static uint32 GetNearbyObjectTileInformation(byte parameter, TileIndex tile, ObjectID index, bool grf_version8) { if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required bool is_same_object = (IsTileType(tile, MP_OBJECT) && GetObjectIndex(tile) == index); return GetNearbyTileInformation(tile, grf_version8) | (is_same_object ? 1 : 0) << 8; } /** * Get the closest object of a given type. * @param tile The tile to start searching from. * @param type The type of the object to search for. * @param current The current object (to ignore). * @return The distance to the closest object. */ static uint32 GetClosestObject(TileIndex tile, ObjectType type, const Object *current) { uint32 best_dist = UINT32_MAX; const Object *o; FOR_ALL_OBJECTS(o) { if (GetObjectType(o->location.tile) != type || o == current) continue; best_dist = min(best_dist, DistanceManhattan(tile, o->location.tile)); } return best_dist; } /** * Implementation of var 65 * @param local_id Parameter given to the callback, which is the set id, or the local id, in our terminology. * @param grfid The object's GRFID. * @param tile The tile to look from. * @param current Object for which the inquiry is made * @return The formatted answer to the callback : rr(reserved) cc(count) dddd(manhattan distance of closest sister) */ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid, TileIndex tile, const Object *current) { uint32 grf_id = GetRegister(0x100); // Get the GRFID of the definition to look for in register 100h uint32 idx; /* Determine what will be the object type to look for */ switch (grf_id) { case 0: // this is a default object type idx = local_id; break; case 0xFFFFFFFF: // current grf grf_id = grfid; /* FALL THROUGH */ default: // use the grfid specified in register 100h idx = _object_mngr.GetID(local_id, grf_id); break; } /* If the object type is invalid, there is none and the closest is far away. */ if (idx >= NUM_OBJECTS) return 0 | 0xFFFF; return Object::GetTypeCount(idx) << 16 | min(GetClosestObject(tile, idx, current), 0xFFFF); } /** Used by the resolver to get values for feature 0F deterministic spritegroups. */ /* virtual */ uint32 ObjectScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { /* We get the town from the object, or we calculate the closest * town if we need to when there's no object. */ const Town *t = NULL; if (this->obj == NULL) { switch (variable) { /* Allow these when there's no object. */ case 0x41: case 0x60: case 0x61: case 0x62: case 0x64: break; /* Allow these, but find the closest town. */ case 0x45: case 0x46: if (!IsValidTile(this->tile)) goto unhandled; t = ClosestTownFromTile(this->tile, UINT_MAX); break; /* Construction date */ case 0x42: return _date; /* Object founder information */ case 0x44: return _current_company; /* Object view */ case 0x48: return this->view; /* * Disallow the rest: * 0x40: Relative position is passed as parameter during construction. * 0x43: Animation counter is only for actual tiles. * 0x47: Object colour is only valid when its built. * 0x63: Animation counter of nearby tile, see above. */ default: goto unhandled; } /* If there's an invalid tile, then we don't have enough information at all. */ if (!IsValidTile(this->tile)) goto unhandled; } else { t = this->obj->town; } switch (variable) { /* Relative position. */ case 0x40: { uint offset = this->tile - this->obj->location.tile; uint offset_x = TileX(offset); uint offset_y = TileY(offset); return offset_y << 20 | offset_x << 16 | offset_y << 8 | offset_x; } /* Tile information. */ case 0x41: return GetTileSlope(this->tile) << 8 | GetTerrainType(this->tile); /* Construction date */ case 0x42: return this->obj->build_date; /* Animation counter */ case 0x43: return GetAnimationFrame(this->tile); /* Object founder information */ case 0x44: return GetTileOwner(this->tile); /* Get town zone and Manhattan distance of closest town */ case 0x45: return GetTownRadiusGroup(t, this->tile) << 16 | min(DistanceManhattan(this->tile, t->xy), 0xFFFF); /* Get square of Euclidian distance of closes town */ case 0x46: return GetTownRadiusGroup(t, this->tile) << 16 | min(DistanceSquare(this->tile, t->xy), 0xFFFF); /* Object colour */ case 0x47: return this->obj->colour; /* Object view */ case 0x48: return this->obj->view; /* Get object ID at offset param */ case 0x60: return GetObjectIDAtOffset(GetNearbyTile(parameter, this->tile), this->ro->grffile->grfid); /* Get random tile bits at offset param */ case 0x61: { TileIndex tile = GetNearbyTile(parameter, this->tile); return (IsTileType(tile, MP_OBJECT) && Object::GetByTile(tile) == this->obj) ? GetObjectRandomBits(tile) : 0; } /* Land info of nearby tiles */ case 0x62: return GetNearbyObjectTileInformation(parameter, this->tile, this->obj == NULL ? INVALID_OBJECT : this->obj->index, this->ro->grffile->grf_version >= 8); /* Animation counter of nearby tile */ case 0x63: { TileIndex tile = GetNearbyTile(parameter, this->tile); return (IsTileType(tile, MP_OBJECT) && Object::GetByTile(tile) == this->obj) ? GetAnimationFrame(tile) : 0; } /* Count of object, distance of closest instance */ case 0x64: return GetCountAndDistanceOfClosestInstance(parameter, this->ro->grffile->grfid, this->tile, this->obj); } unhandled: DEBUG(grf, 1, "Unhandled object variable 0x%X", variable); *available = false; return UINT_MAX; } /** * Get the object's sprite group. * @param spec The specification to get the sprite group from. * @param o The object to get he sprite group for. * @return The resolved sprite group. */ static const SpriteGroup *GetObjectSpriteGroup(const ObjectSpec *spec, const Object *o) { const SpriteGroup *group = NULL; if (o == NULL) group = spec->grf_prop.spritegroup[CT_PURCHASE_OBJECT]; if (group != NULL) return group; /* Fall back to the default set if the selected cargo type is not defined */ return spec->grf_prop.spritegroup[0]; } /** * Constructor of the object resolver. * @param obj Object being resolved. * @param tile %Tile of the object. * @param view View of the object. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ ObjectResolverObject::ObjectResolverObject(const ObjectSpec *spec, Object *obj, TileIndex tile, uint8 view, CallbackID callback, uint32 param1, uint32 param2) : ResolverObject(spec->grf_prop.grffile, callback, param1, param2), object_scope(this, obj, tile, view) { this->town_scope = NULL; } ObjectResolverObject::~ObjectResolverObject() { delete this->town_scope; } /** * Get the town resolver scope that belongs to this object resolver. * On the first call, the town scope is created (if possible). * @return Town scope, if available. */ TownScopeResolver *ObjectResolverObject::GetTown() { if (this->town_scope == NULL) { Town *t; if (this->object_scope.obj != NULL) { t = this->object_scope.obj->town; } else { t = ClosestTownFromTile(this->object_scope.tile, UINT_MAX); } if (t == NULL) return NULL; this->town_scope = new TownScopeResolver(this, t, this->object_scope.obj == NULL); } return this->town_scope; } /** * Perform a callback for an object. * @param callback The callback to perform. * @param param1 The first parameter to pass to the NewGRF. * @param param2 The second parameter to pass to the NewGRF. * @param spec The specification of the object / the entry point. * @param o The object to call the callback for. * @param tile The tile the callback is called for. * @param view The view of the object (only used when o == NULL). * @return The result of the callback. */ uint16 GetObjectCallback(CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, Object *o, TileIndex tile, uint8 view) { ObjectResolverObject object(spec, o, tile, view, callback, param1, param2); const SpriteGroup *group = SpriteGroup::Resolve(GetObjectSpriteGroup(spec, o), &object); if (group == NULL) return CALLBACK_FAILED; return group->GetCallbackResult(); } /** * Draw an group of sprites on the map. * @param ti Information about the tile to draw on. * @param group The group of sprites to draw. * @param spec Object spec to draw. */ static void DrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, const ObjectSpec *spec) { const DrawTileSprites *dts = group->ProcessRegisters(NULL); PaletteID palette = ((spec->flags & OBJECT_FLAG_2CC_COLOUR) ? SPR_2CCMAP_BASE : PALETTE_RECOLOUR_START) + Object::GetByTile(ti->tile)->colour; SpriteID image = dts->ground.sprite; PaletteID pal = dts->ground.pal; if (GB(image, 0, SPRITE_WIDTH) != 0) { /* If the ground sprite is the default flat water sprite, draw also canal/river borders * Do not do this if the tile's WaterClass is 'land'. */ if ((image == SPR_FLAT_WATER_TILE || spec->flags & OBJECT_FLAG_DRAW_WATER) && IsTileOnWater(ti->tile)) { DrawWaterClassGround(ti); } else { DrawGroundSprite(image, GroundSpritePaletteTransform(image, pal, palette)); } } DrawNewGRFTileSeq(ti, dts, TO_STRUCTURES, 0, palette); } /** * Draw an object on the map. * @param ti Information about the tile to draw on. * @param spec Object spec to draw. */ void DrawNewObjectTile(TileInfo *ti, const ObjectSpec *spec) { Object *o = Object::GetByTile(ti->tile); ObjectResolverObject object(spec, o, ti->tile); const SpriteGroup *group = SpriteGroup::Resolve(GetObjectSpriteGroup(spec, o), &object); if (group == NULL || group->type != SGT_TILELAYOUT) return; DrawTileLayout(ti, (const TileLayoutSpriteGroup *)group, spec); } /** * Draw representation of an object (tile) for GUI purposes. * @param x Position x of image. * @param y Position y of image. * @param spec Object spec to draw. * @param view The object's view. */ void DrawNewObjectTileInGUI(int x, int y, const ObjectSpec *spec, uint8 view) { ObjectResolverObject object(spec, NULL, INVALID_TILE, view); const SpriteGroup *group = SpriteGroup::Resolve(GetObjectSpriteGroup(spec, NULL), &object); if (group == NULL || group->type != SGT_TILELAYOUT) return; const DrawTileSprites *dts = ((const TileLayoutSpriteGroup *)group)->ProcessRegisters(NULL); PaletteID palette; if (Company::IsValidID(_local_company)) { /* Get the colours of our company! */ if (spec->flags & OBJECT_FLAG_2CC_COLOUR) { const Livery *l = Company::Get(_local_company)->livery; palette = SPR_2CCMAP_BASE + l->colour1 + l->colour2 * 16; } else { palette = COMPANY_SPRITE_COLOUR(_local_company); } } else { /* There's no company, so just take the base palette. */ palette = (spec->flags & OBJECT_FLAG_2CC_COLOUR) ? SPR_2CCMAP_BASE : PALETTE_RECOLOUR_START; } SpriteID image = dts->ground.sprite; PaletteID pal = dts->ground.pal; if (GB(image, 0, SPRITE_WIDTH) != 0) { DrawSprite(image, GroundSpritePaletteTransform(image, pal, palette), x, y); } DrawNewGRFTileSeqInGUI(x, y, dts, 0, palette); } /** * Perform a callback for an object. * @param callback The callback to perform. * @param param1 The first parameter to pass to the NewGRF. * @param param2 The second parameter to pass to the NewGRF. * @param spec The specification of the object / the entry point. * @param o The object to call the callback for. * @param tile The tile the callback is called for. * @param extra_data Ignored. * @return The result of the callback. */ uint16 StubGetObjectCallback(CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, Object *o, TileIndex tile, int extra_data) { return GetObjectCallback(callback, param1, param2, spec, o, tile); } /** Helper class for animation control. */ struct ObjectAnimationBase : public AnimationBase { static const CallbackID cb_animation_speed = CBID_OBJECT_ANIMATION_SPEED; static const CallbackID cb_animation_next_frame = CBID_OBJECT_ANIMATION_NEXT_FRAME; static const ObjectCallbackMask cbm_animation_speed = CBM_OBJ_ANIMATION_SPEED; static const ObjectCallbackMask cbm_animation_next_frame = CBM_OBJ_ANIMATION_NEXT_FRAME; }; /** * Handle the animation of the object tile. * @param tile The tile to animate. */ void AnimateNewObjectTile(TileIndex tile) { const ObjectSpec *spec = ObjectSpec::GetByTile(tile); if (spec == NULL || !(spec->flags & OBJECT_FLAG_ANIMATION)) return; ObjectAnimationBase::AnimateTile(spec, Object::GetByTile(tile), tile, (spec->flags & OBJECT_FLAG_ANIM_RANDOM_BITS) != 0); } /** * Trigger the update of animation on a single tile. * @param o The object that got triggered. * @param tile The location of the triggered tile. * @param trigger The trigger that is triggered. * @param spec The spec associated with the object. */ void TriggerObjectTileAnimation(Object *o, TileIndex tile, ObjectAnimationTrigger trigger, const ObjectSpec *spec) { if (!HasBit(spec->animation.triggers, trigger)) return; ObjectAnimationBase::ChangeAnimationFrame(CBID_OBJECT_ANIMATION_START_STOP, spec, o, tile, Random(), trigger); } /** * Trigger the update of animation on a whole object. * @param o The object that got triggered. * @param trigger The trigger that is triggered. * @param spec The spec associated with the object. */ void TriggerObjectAnimation(Object *o, ObjectAnimationTrigger trigger, const ObjectSpec *spec) { if (!HasBit(spec->animation.triggers, trigger)) return; TILE_AREA_LOOP(tile, o->location) { TriggerObjectTileAnimation(o, tile, trigger, spec); } } openttd-1.3.3/src/signs_type.h0000644000000000000000000000201512246102611015006 0ustar rootroot/* $Id: signs_type.h 22406 2011-05-01 19:51:52Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file signs_type.h Types related to signs */ #ifndef SIGNS_TYPE_H #define SIGNS_TYPE_H /** The type of the IDs of signs. */ typedef uint16 SignID; struct Sign; static const SignID INVALID_SIGN = 0xFFFF; ///< Sentinel for an invalid sign. static const uint MAX_LENGTH_SIGN_NAME_CHARS = 32; ///< The maximum length of a sign name in characters including '\0' #endif /* SIGNS_TYPE_H */ openttd-1.3.3/src/stdafx.h0000644000000000000000000004025212246102611014120 0ustar rootroot/* $Id: stdafx.h 25982 2013-11-13 21:35:44Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file stdafx.h Definition of base types and functions in a cross-platform compatible way. */ #ifndef STDAFX_H #define STDAFX_H #if defined(__APPLE__) #include "os/macosx/osx_stdafx.h" #endif /* __APPLE__ */ #if defined(__BEOS__) || defined(__HAIKU__) #include #include #define _GNU_SOURCE #define TROUBLED_INTS #elif defined(__NDS__) #include #define TROUBLED_INTS #endif /* It seems that we need to include stdint.h before anything else * We need INT64_MAX, which for most systems comes from stdint.h. However, MSVC * does not have stdint.h and apparently neither does MorphOS. * For OSX the inclusion is already done in osx_stdafx.h. */ #if !defined(__APPLE__) && (!defined(_MSC_VER) || _MSC_VER >= 1600) && !defined(__MORPHOS__) #if defined(SUNOS) /* SunOS/Solaris does not have stdint.h, but inttypes.h defines everything * stdint.h defines and we need. */ #include #else #define __STDC_LIMIT_MACROS #include #endif #endif /* The conditions for these constants to be available are way too messy; so check them one by one */ #if !defined(UINT64_MAX) #define UINT64_MAX (18446744073709551615ULL) #endif #if !defined(INT64_MAX) #define INT64_MAX (9223372036854775807LL) #endif #if !defined(INT64_MIN) #define INT64_MIN (-INT64_MAX - 1) #endif #if !defined(UINT32_MAX) #define UINT32_MAX (4294967295U) #endif #if !defined(INT32_MAX) #define INT32_MAX (2147483647) #endif #if !defined(INT32_MIN) #define INT32_MIN (-INT32_MAX - 1) #endif #if !defined(UINT16_MAX) #define UINT16_MAX (65535U) #endif #if !defined(INT16_MAX) #define INT16_MAX (32767) #endif #if !defined(INT16_MIN) #define INT16_MIN (-INT16_MAX - 1) #endif #if !defined(UINT8_MAX) #define UINT8_MAX (255) #endif #if !defined(INT8_MAX) #define INT8_MAX (127) #endif #if !defined(INT8_MIN) #define INT8_MIN (-INT8_MAX - 1) #endif #include #include #include #include #include #include #ifndef SIZE_MAX #define SIZE_MAX ((size_t)-1) #endif #if defined(UNIX) || defined(__MINGW32__) #include #endif #if defined(__OS2__) #include #define strcasecmp stricmp #endif #if defined(PSP) #include #include #include #endif #if defined(SUNOS) || defined(HPUX) #include #endif #if defined(__MORPHOS__) /* MorphOS defines certain Amiga defines per default, we undefine them * here to make the rest of source less messy and more clear what is * required for morphos and what for AmigaOS */ #if defined(amigaos) #undef amigaos #endif #if defined(__amigaos__) #undef __amigaos__ # endif #if defined(__AMIGA__) #undef __AMIGA__ #endif #if defined(AMIGA) #undef AMIGA #endif #if defined(amiga) #undef amiga #endif /* Act like we already included this file, as it somehow gives linkage problems * (mismatch linkage of C++ and C between this include and unistd.h). */ #define CLIB_USERGROUP_PROTOS_H #endif /* __MORPHOS__ */ #if defined(PSP) /* PSP can only have 10 file-descriptors open at any given time, but this * switch only limits reads via the Fio system. So keep 2 fds free for things * like saving a game. */ #define LIMITED_FDS 8 #define printf pspDebugScreenPrintf #endif /* PSP */ /* Stuff for GCC */ #if defined(__GNUC__) #define NORETURN __attribute__ ((noreturn)) #define CDECL #define __int64 long long #define GCC_PACK __attribute__((packed)) /* Warn about functions using 'printf' format syntax. First argument determines which parameter * is the format string, second argument is start of values passed to printf. */ #define WARN_FORMAT(string, args) __attribute__ ((format (printf, string, args))) #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) #define FINAL final #else #define FINAL #endif #endif /* __GNUC__ */ #if defined(__WATCOMC__) #define NORETURN #define CDECL #define GCC_PACK #define WARN_FORMAT(string, args) #define FINAL #include #endif /* __WATCOMC__ */ #if defined(__MINGW32__) || defined(__CYGWIN__) #include // alloca() #endif #if defined(WIN32) #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #endif /* Stuff for MSVC */ #if defined(_MSC_VER) #pragma once #ifdef _WIN64 /* No 64-bit Windows below XP, so we can safely assume it as the target platform. */ #define NTDDI_VERSION NTDDI_WINXP // Windows XP #define _WIN32_WINNT 0x501 // Windows XP #define _WIN32_WINDOWS 0x501 // Windows XP #define WINVER 0x0501 // Windows XP #define _WIN32_IE_ 0x0600 // 6.0 (XP+) #else /* Define a win32 target platform, to override defaults of the SDK * We need to define NTDDI version for Vista SDK, but win2k is minimum */ #define NTDDI_VERSION NTDDI_WIN2K // Windows 2000 #define _WIN32_WINNT 0x0500 // Windows 2000 #define _WIN32_WINDOWS 0x400 // Windows 95 #if !defined(WINCE) #define WINVER 0x0400 // Windows NT 4.0 / Windows 95 #endif #define _WIN32_IE_ 0x0401 // 4.01 (win98 and NT4SP5+) #endif #define NOMINMAX // Disable min/max macros in windows.h. #pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data #pragma warning(disable: 4761) // integral size mismatch in argument : conversion supplied #pragma warning(disable: 4200) // nonstandard extension used : zero-sized array in struct/union #pragma warning(disable: 4355) // 'this' : used in base member initializer list #if (_MSC_VER < 1400) // MSVC 2005 safety checks #error "Only MSVC 2005 or higher are supported. MSVC 2003 and earlier are not! Upgrade your compiler." #endif /* (_MSC_VER < 1400) */ #pragma warning(disable: 4291) // no matching operator delete found; memory will not be freed if initialization throws an exception (reason: our overloaded functions never throw an exception) #pragma warning(disable: 4996) // 'function': was declared deprecated #define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions #pragma warning(disable: 6308) // code analyzer: 'realloc' might return null pointer: assigning null pointer to 't_ptr', which is passed as an argument to 'realloc', will cause the original memory block to be leaked #pragma warning(disable: 6011) // code analyzer: Dereferencing NULL pointer 'pfGetAddrInfo': Lines: 995, 996, 998, 999, 1001 #pragma warning(disable: 6326) // code analyzer: potential comparison of a constant with another constant #pragma warning(disable: 6031) // code analyzer: Return value ignored: 'ReadFile' #pragma warning(disable: 6255) // code analyzer: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead #pragma warning(disable: 6246) // code analyzer: Local declaration of 'statspec' hides declaration of the same name in outer scope. For additional information, see previous declaration at ... #include // alloca() #define NORETURN __declspec(noreturn) #define inline __forceinline #if !defined(WINCE) #define CDECL _cdecl #endif #define GCC_PACK #define WARN_FORMAT(string, args) #define FINAL sealed int CDECL snprintf(char *str, size_t size, const char *format, ...) WARN_FORMAT(3, 4); #if defined(WINCE) int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap); #endif #if defined(WIN32) && !defined(_WIN64) && !defined(WIN64) #if !defined(_W64) #define _W64 #endif typedef _W64 int INT_PTR, *PINT_PTR; typedef _W64 unsigned int UINT_PTR, *PUINT_PTR; #endif /* WIN32 && !_WIN64 && !WIN64 */ #if defined(_WIN64) || defined(WIN64) #define fseek _fseeki64 #endif /* _WIN64 || WIN64 */ /* This is needed to zlib uses the stdcall calling convention on visual studio */ #if defined(WITH_ZLIB) || defined(WITH_PNG) #if !defined(ZLIB_WINAPI) #define ZLIB_WINAPI #endif #endif #if defined(WINCE) #define strcasecmp _stricmp #define strncasecmp _strnicmp #undef DEBUG #else #define strcasecmp stricmp #define strncasecmp strnicmp #endif /* MSVC doesn't have these :( */ #define S_ISDIR(mode) (mode & S_IFDIR) #define S_ISREG(mode) (mode & S_IFREG) #endif /* defined(_MSC_VER) */ #if defined(DOS) /* The DOS port does not have all signals/signal functions. */ #define strsignal(sig) "" /* Use 'no floating point' for bus errors; SIGBUS does not exist * for DOS, SIGNOFP for other platforms. So it's fairly safe * to interchange those. */ #define SIGBUS SIGNOFP #endif #if defined(WINCE) #define strdup _strdup #endif /* WINCE */ /* NOTE: the string returned by these functions is only valid until the next * call to the same function and is not thread- or reentrancy-safe */ #if !defined(STRGEN) && !defined(SETTINGSGEN) #if defined(WIN32) || defined(WIN64) char *getcwd(char *buf, size_t size); #include #include /* XXX - WinCE without MSVCRT doesn't support wfopen, so it seems */ #if !defined(WINCE) namespace std { using ::_tfopen; } #define fopen(file, mode) _tfopen(OTTD2FS(file), _T(mode)) #define unlink(file) _tunlink(OTTD2FS(file)) #endif /* WINCE */ const char *FS2OTTD(const TCHAR *name); const TCHAR *OTTD2FS(const char *name, bool console_cp = false); #define SQ2OTTD(name) FS2OTTD(name) #define OTTD2SQ(name) OTTD2FS(name) #else #define fopen(file, mode) fopen(OTTD2FS(file), mode) const char *FS2OTTD(const char *name); const char *OTTD2FS(const char *name); #define SQ2OTTD(name) (name) #define OTTD2SQ(name) (name) #endif /* WIN32 */ #endif /* STRGEN || SETTINGSGEN */ #if defined(WIN32) || defined(WIN64) || defined(__OS2__) && !defined(__INNOTEK_LIBC__) #define PATHSEP "\\" #define PATHSEPCHAR '\\' #else #define PATHSEP "/" #define PATHSEPCHAR '/' #endif /* MSVCRT of course has to have a different syntax for long long *sigh* */ #if defined(_MSC_VER) || defined(__MINGW32__) #define OTTD_PRINTF64 "%I64d" #define OTTD_PRINTFHEX64 "%I64x" #define PRINTF_SIZE "%Iu" #else #define OTTD_PRINTF64 "%lld" #define OTTD_PRINTFHEX64 "%llx" #define PRINTF_SIZE "%zu" #endif typedef unsigned char byte; /* This is already defined in unix, but not in QNX Neutrino (6.x)*/ #if (!defined(UNIX) && !defined(__CYGWIN__) && !defined(__BEOS__) && !defined(__HAIKU__) && !defined(__MORPHOS__)) || defined(__QNXNTO__) typedef unsigned int uint; #endif #if defined(TROUBLED_INTS) /* NDS'/BeOS'/Haiku's types for uint32/int32 are based on longs, which causes * trouble all over the place in OpenTTD. */ #define uint32 uint32_ugly_hack #define int32 int32_ugly_hack typedef unsigned int uint32_ugly_hack; typedef signed int int32_ugly_hack; #else typedef unsigned char uint8; typedef signed char int8; typedef unsigned short uint16; typedef signed short int16; typedef unsigned int uint32; typedef signed int int32; typedef unsigned __int64 uint64; typedef signed __int64 int64; #endif /* !TROUBLED_INTS */ #if !defined(WITH_PERSONAL_DIR) #define PERSONAL_DIR "" #endif /* Compile time assertions. Prefer c++0x static_assert(). * Older compilers cannot evaluate some expressions at compile time, * typically when templates are involved, try assert_tcompile() in those cases. */ #if defined(__STDCXX_VERSION__) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(static_assert) /* __STDCXX_VERSION__ is c++0x feature macro, __GXX_EXPERIMENTAL_CXX0X__ is used by gcc, __GXX_EXPERIMENTAL_CPP0X__ by icc */ #define assert_compile(expr) static_assert(expr, #expr ) #define assert_tcompile(expr) assert_compile(expr) #elif defined(__OS2__) /* Disabled for OS/2 */ #define assert_compile(expr) #define assert_tcompile(expr) assert_compile(expr) #else #define assert_compile(expr) typedef int __ct_assert__[1 - 2 * !(expr)] #define assert_tcompile(expr) assert(expr) #endif /* Check if the types have the bitsizes like we are using them */ assert_compile(sizeof(uint64) == 8); assert_compile(sizeof(uint32) == 4); assert_compile(sizeof(uint16) == 2); assert_compile(sizeof(uint8) == 1); assert_compile(SIZE_MAX >= UINT32_MAX); #ifndef M_PI_2 #define M_PI_2 1.57079632679489661923 #define M_PI 3.14159265358979323846 #endif /* M_PI_2 */ /** * Return the length of an fixed size array. * Unlike sizeof this function returns the number of elements * of the given type. * * @param x The pointer to the first element of the array * @return The number of elements */ #define lengthof(x) (sizeof(x) / sizeof(x[0])) /** * Get the end element of an fixed size array. * * @param x The pointer to the first element of the array * @return The pointer past to the last element of the array */ #define endof(x) (&x[lengthof(x)]) /** * Get the last element of an fixed size array. * * @param x The pointer to the first element of the array * @return The pointer to the last element of the array */ #define lastof(x) (&x[lengthof(x) - 1]) #define cpp_offsetof(s, m) (((size_t)&reinterpret_cast((((s*)(char*)8)->m))) - 8) #if !defined(offsetof) #define offsetof(s, m) cpp_offsetof(s, m) #endif /* offsetof */ /** * Gets the size of a variable within a class. * @param base The class the variable is in. * @param variable The variable to get the size of. * @return the size of the variable */ #define cpp_sizeof(base, variable) (sizeof(((base*)8)->variable)) /** * Gets the length of an array variable within a class. * @param base The class the variable is in. * @param variable The array variable to get the size of. * @return the length of the array */ #define cpp_lengthof(base, variable) (cpp_sizeof(base, variable) / cpp_sizeof(base, variable[0])) /* take care of some name clashes on MacOS */ #if defined(__APPLE__) #define GetString OTTD_GetString #define DrawString OTTD_DrawString #define CloseConnection OTTD_CloseConnection #endif /* __APPLE__ */ void NORETURN CDECL usererror(const char *str, ...) WARN_FORMAT(1, 2); void NORETURN CDECL error(const char *str, ...) WARN_FORMAT(1, 2); #define NOT_REACHED() error("NOT_REACHED triggered at line %i of %s", __LINE__, __FILE__) /* For non-debug builds with assertions enabled use the special assertion handler: * - For MSVC: NDEBUG is set for all release builds and WITH_ASSERT overrides the disabling of asserts. * - For non MSVC: NDEBUG is set when assertions are disables, _DEBUG is set for non-release builds. */ #if (defined(_MSC_VER) && defined(NDEBUG) && defined(WITH_ASSERT)) || (!defined(_MSC_VER) && !defined(NDEBUG) && !defined(_DEBUG)) #undef assert #define assert(expression) if (!(expression)) error("Assertion failed at line %i of %s: %s", __LINE__, __FILE__, #expression); #endif /* Asserts are enabled if NDEBUG isn't defined, or if we are using MSVC and WITH_ASSERT is defined. */ #if !defined(NDEBUG) || (defined(_MSC_VER) && defined(WITH_ASSERT)) #define OTTD_ASSERT #endif #if defined(MORPHOS) || defined(__NDS__) || defined(__DJGPP__) /* MorphOS and NDS don't have C++ conformant _stricmp... */ #define _stricmp stricmp #elif defined(OPENBSD) /* OpenBSD uses strcasecmp(3) */ #define _stricmp strcasecmp #endif #if defined(MAX_PATH) /* It's already defined, no need to override */ #elif defined(PATH_MAX) && PATH_MAX > 0 /* Use the value from PATH_MAX, if it exists */ #define MAX_PATH PATH_MAX #else /* If all else fails, hardcode something :( */ #define MAX_PATH 260 #endif /** * Version of the standard free that accepts const pointers. * @param ptr The data to free. */ static inline void free(const void *ptr) { free(const_cast(ptr)); } /** * The largest value that can be entered in a variable * @param type the type of the variable */ #define MAX_UVALUE(type) ((type)~(type)0) #endif /* STDAFX_H */ openttd-1.3.3/src/newgrf_spritegroup.cpp0000644000000000000000000002641212246102611017117 0ustar rootroot/* $Id: newgrf_spritegroup.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_spritegroup.cpp Handling of primarily NewGRF action 2. */ #include "stdafx.h" #include "debug.h" #include "newgrf_spritegroup.h" #include "core/pool_func.hpp" SpriteGroupPool _spritegroup_pool("SpriteGroup"); INSTANTIATE_POOL_METHODS(SpriteGroup) RealSpriteGroup::~RealSpriteGroup() { free(this->loaded); free(this->loading); } DeterministicSpriteGroup::~DeterministicSpriteGroup() { free(this->adjusts); free(this->ranges); } RandomizedSpriteGroup::~RandomizedSpriteGroup() { free(this->groups); } TemporaryStorageArray _temp_store; static inline uint32 GetVariable(const ResolverObject *object, ScopeResolver *scope, byte variable, uint32 parameter, bool *available) { /* First handle variables common with Action7/9/D */ uint32 value; if (GetGlobalVariable(variable, &value, object->grffile)) return value; /* Non-common variable */ switch (variable) { case 0x0C: return object->callback; case 0x10: return object->callback_param1; case 0x18: return object->callback_param2; case 0x1C: return object->last_value; case 0x5F: return (scope->GetRandomBits() << 8) | scope->GetTriggers(); case 0x7D: return _temp_store.GetValue(parameter); case 0x7F: if (object == NULL || object->grffile == NULL) return 0; return object->grffile->GetParam(parameter); /* Not a common variable, so evaluate the feature specific variables */ default: return scope->GetVariable(variable, parameter, available); } } ScopeResolver::ScopeResolver(ResolverObject *ro) { this->ro = ro; } ScopeResolver::~ScopeResolver() {} /** * Get a few random bits. Default implementation has no random bits. * @return Random bits. */ /* virtual */ uint32 ScopeResolver::GetRandomBits() const { return 0; } /** * Get the triggers. Base class returns \c 0 to prevent trouble. * @return The triggers. */ /* virtual */ uint32 ScopeResolver::GetTriggers() const { return 0; } /** * Set the triggers. Base class implementation does nothing. * @param triggers Triggers to set. */ /* virtual */ void ScopeResolver::SetTriggers(int triggers) const {} /** * Get a variable value. Default implementation has no available variables. * @param variable Variable to read * @param parameter Parameter for 60+x variables * @param[out] available Set to false, in case the variable does not exist. * @return Value */ /* virtual */ uint32 ScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { DEBUG(grf, 1, "Unhandled scope variable 0x%X", variable); *available = false; return UINT_MAX; } /** * Store a value into the persistent storage area (PSA). Default implementation does nothing (for newgrf classes without storage). * @param pos Position to store into. * @param value Value to store. */ /* virtual */ void ScopeResolver::StorePSA(uint reg, int32 value) {} /** * Resolver constructor. * @param grffile NewGRF file associated with the object (or \c NULL if none). * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK). * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set). * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set). */ ResolverObject::ResolverObject(const GRFFile *grffile, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : default_scope(this) { this->callback = callback; this->callback_param1 = callback_param1; this->callback_param2 = callback_param2; this->ResetState(); this->grffile = grffile; } ResolverObject::~ResolverObject() {} /** * Get the real sprites of the grf. * @param group Group to get. * @return The available sprite group. */ /* virtual */ const SpriteGroup *ResolverObject::ResolveReal(const RealSpriteGroup *group) const { return NULL; } /** * Get a resolver for the \a scope. * @param scope Scope to return. * @param relative Additional parameter for #VSG_SCOPE_RELATIVE. * @return The resolver for the requested scope. */ /* virtual */ ScopeResolver *ResolverObject::GetScope(VarSpriteGroupScope scope, byte relative) { return &this->default_scope; } /** * Rotate val rot times to the right * @param val the value to rotate * @param rot the amount of times to rotate * @return the rotated value */ static uint32 RotateRight(uint32 val, uint32 rot) { /* Do not rotate more than necessary */ rot %= 32; return (val >> rot) | (val << (32 - rot)); } /* Evaluate an adjustment for a variable of the given size. * U is the unsigned type and S is the signed type to use. */ template static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver *scope, U last_value, uint32 value) { value >>= adjust->shift_num; value &= adjust->and_mask; if (adjust->type != DSGA_TYPE_NONE) value += (S)adjust->add_val; switch (adjust->type) { case DSGA_TYPE_DIV: value /= (S)adjust->divmod_val; break; case DSGA_TYPE_MOD: value %= (U)adjust->divmod_val; break; case DSGA_TYPE_NONE: break; } switch (adjust->operation) { case DSGA_OP_ADD: return last_value + value; case DSGA_OP_SUB: return last_value - value; case DSGA_OP_SMIN: return min((S)last_value, (S)value); case DSGA_OP_SMAX: return max((S)last_value, (S)value); case DSGA_OP_UMIN: return min((U)last_value, (U)value); case DSGA_OP_UMAX: return max((U)last_value, (U)value); case DSGA_OP_SDIV: return value == 0 ? (S)last_value : (S)last_value / (S)value; case DSGA_OP_SMOD: return value == 0 ? (S)last_value : (S)last_value % (S)value; case DSGA_OP_UDIV: return value == 0 ? (U)last_value : (U)last_value / (U)value; case DSGA_OP_UMOD: return value == 0 ? (U)last_value : (U)last_value % (U)value; case DSGA_OP_MUL: return last_value * value; case DSGA_OP_AND: return last_value & value; case DSGA_OP_OR: return last_value | value; case DSGA_OP_XOR: return last_value ^ value; case DSGA_OP_STO: _temp_store.StoreValue((U)value, (S)last_value); return last_value; case DSGA_OP_RST: return value; case DSGA_OP_STOP: scope->StorePSA((U)value, (S)last_value); return last_value; case DSGA_OP_ROR: return RotateRight(last_value, value); case DSGA_OP_SCMP: return ((S)last_value == (S)value) ? 1 : ((S)last_value < (S)value ? 0 : 2); case DSGA_OP_UCMP: return ((U)last_value == (U)value) ? 1 : ((U)last_value < (U)value ? 0 : 2); case DSGA_OP_SHL: return (U)last_value << ((U)value & 0x1F); // mask 'value' to 5 bits, which should behave the same on all architectures. case DSGA_OP_SHR: return (U)last_value >> ((U)value & 0x1F); case DSGA_OP_SAR: return (S)last_value >> ((U)value & 0x1F); default: return value; } } const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject *object) const { uint32 last_value = 0; uint32 value = 0; uint i; ScopeResolver *scope = object->GetScope(this->var_scope); for (i = 0; i < this->num_adjusts; i++) { DeterministicSpriteGroupAdjust *adjust = &this->adjusts[i]; /* Try to get the variable. We shall assume it is available, unless told otherwise. */ bool available = true; if (adjust->variable == 0x7E) { const SpriteGroup *subgroup = SpriteGroup::Resolve(adjust->subroutine, object); if (subgroup == NULL) { value = CALLBACK_FAILED; } else { value = subgroup->GetCallbackResult(); } /* Note: 'last_value' and 'reseed' are shared between the main chain and the procedure */ } else if (adjust->variable == 0x7B) { value = GetVariable(object, scope, adjust->parameter, last_value, &available); } else { value = GetVariable(object, scope, adjust->variable, adjust->parameter, &available); } if (!available) { /* Unsupported variable: skip further processing and return either * the group from the first range or the default group. */ return SpriteGroup::Resolve(this->num_ranges > 0 ? this->ranges[0].group : this->default_group, object); } switch (this->size) { case DSG_SIZE_BYTE: value = EvalAdjustT (adjust, scope, last_value, value); break; case DSG_SIZE_WORD: value = EvalAdjustT(adjust, scope, last_value, value); break; case DSG_SIZE_DWORD: value = EvalAdjustT(adjust, scope, last_value, value); break; default: NOT_REACHED(); } last_value = value; } object->last_value = last_value; if (this->num_ranges == 0) { /* nvar == 0 is a special case -- we turn our value into a callback result */ if (value != CALLBACK_FAILED) value = GB(value, 0, 15); static CallbackResultSpriteGroup nvarzero(0, true); nvarzero.result = value; return &nvarzero; } for (i = 0; i < this->num_ranges; i++) { if (this->ranges[i].low <= value && value <= this->ranges[i].high) { return SpriteGroup::Resolve(this->ranges[i].group, object); } } return SpriteGroup::Resolve(this->default_group, object); } const SpriteGroup *RandomizedSpriteGroup::Resolve(ResolverObject *object) const { ScopeResolver *scope = object->GetScope(this->var_scope, this->count); if (object->trigger != 0) { /* Handle triggers */ /* Magic code that may or may not do the right things... */ byte waiting_triggers = scope->GetTriggers(); byte match = this->triggers & (waiting_triggers | object->trigger); bool res = (this->cmp_mode == RSG_CMP_ANY) ? (match != 0) : (match == this->triggers); if (res) { waiting_triggers &= ~match; object->reseed[this->var_scope] |= (this->num_groups - 1) << this->lowest_randbit; } else { waiting_triggers |= object->trigger; } scope->SetTriggers(waiting_triggers); } uint32 mask = (this->num_groups - 1) << this->lowest_randbit; byte index = (scope->GetRandomBits() & mask) >> this->lowest_randbit; return SpriteGroup::Resolve(this->groups[index], object); } const SpriteGroup *RealSpriteGroup::Resolve(ResolverObject *object) const { return object->ResolveReal(this); } /** * Process registers and the construction stage into the sprite layout. * The passed construction stage might get reset to zero, if it gets incorporated into the layout * during the preprocessing. * @param [in, out] stage Construction stage (0-3), or NULL if not applicable. * @return sprite layout to draw. */ const DrawTileSprites *TileLayoutSpriteGroup::ProcessRegisters(uint8 *stage) const { if (!this->dts.NeedsPreprocessing()) { if (stage != NULL && this->dts.consistent_max_offset > 0) *stage = GetConstructionStageOffset(*stage, this->dts.consistent_max_offset); return &this->dts; } static DrawTileSprites result; uint8 actual_stage = stage != NULL ? *stage : 0; this->dts.PrepareLayout(0, 0, 0, actual_stage, false); this->dts.ProcessRegisters(0, 0, false); result.seq = this->dts.GetLayout(&result.ground); /* Stage has been processed by PrepareLayout(), set it to zero. */ if (stage != NULL) *stage = 0; return &result; } openttd-1.3.3/src/industry_map.h0000644000000000000000000002134212246102611015344 0ustar rootroot/* $Id: industry_map.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file industry_map.h Accessors for industries */ #ifndef INDUSTRY_MAP_H #define INDUSTRY_MAP_H #include "industrytype.h" #include "water_map.h" /** * The following enums are indices used to know what to draw for this industry tile. * They all are pointing toward array _industry_draw_tile_data, in table/industry_land.h * How to calculate the correct position ? GFXid << 2 | IndustryStage (0 to 3) */ enum IndustryGraphics { GFX_COAL_MINE_TOWER_NOT_ANIMATED = 0, GFX_COAL_MINE_TOWER_ANIMATED = 1, GFX_POWERPLANT_CHIMNEY = 8, GFX_POWERPLANT_SPARKS = 10, GFX_OILRIG_1 = 24, GFX_OILRIG_2 = 25, GFX_OILRIG_3 = 26, GFX_OILRIG_4 = 27, GFX_OILRIG_5 = 28, GFX_OILWELL_NOT_ANIMATED = 29, GFX_OILWELL_ANIMATED_1 = 30, GFX_OILWELL_ANIMATED_2 = 31, GFX_OILWELL_ANIMATED_3 = 32, GFX_COPPER_MINE_TOWER_NOT_ANIMATED = 47, GFX_COPPER_MINE_TOWER_ANIMATED = 48, GFX_COPPER_MINE_CHIMNEY = 49, GFX_GOLD_MINE_TOWER_NOT_ANIMATED = 79, GFX_GOLD_MINE_TOWER_ANIMATED = 88, GFX_TOY_FACTORY = 143, GFX_PLASTIC_FOUNTAIN_ANIMATED_1 = 148, GFX_PLASTIC_FOUNTAIN_ANIMATED_2 = 149, GFX_PLASTIC_FOUNTAIN_ANIMATED_3 = 150, GFX_PLASTIC_FOUNTAIN_ANIMATED_4 = 151, GFX_PLASTIC_FOUNTAIN_ANIMATED_5 = 152, GFX_PLASTIC_FOUNTAIN_ANIMATED_6 = 153, GFX_PLASTIC_FOUNTAIN_ANIMATED_7 = 154, GFX_PLASTIC_FOUNTAIN_ANIMATED_8 = 155, GFX_BUBBLE_GENERATOR = 161, GFX_BUBBLE_CATCHER = 162, GFX_TOFFEE_QUARY = 165, GFX_SUGAR_MINE_SIEVE = 174, GFX_WATERTILE_SPECIALCHECK = 255, ///< not really a tile, but rather a very special check }; /** * Get the industry ID of the given tile * @param t the tile to get the industry ID from * @pre IsTileType(t, MP_INDUSTRY) * @return the industry ID */ static inline IndustryID GetIndustryIndex(TileIndex t) { assert(IsTileType(t, MP_INDUSTRY)); return _m[t].m2; } /** * Is this industry tile fully built? * @param t the tile to analyze * @pre IsTileType(t, MP_INDUSTRY) * @return true if and only if the industry tile is fully built */ static inline bool IsIndustryCompleted(TileIndex t) { assert(IsTileType(t, MP_INDUSTRY)); return HasBit(_m[t].m1, 7); } IndustryType GetIndustryType(TileIndex tile); /** * Set if the industry that owns the tile as under construction or not * @param tile the tile to query * @param isCompleted whether it is completed or not * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void SetIndustryCompleted(TileIndex tile, bool isCompleted) { assert(IsTileType(tile, MP_INDUSTRY)); SB(_m[tile].m1, 7, 1, isCompleted ? 1 :0); } /** * Returns the industry construction stage of the specified tile * @param tile the tile to query * @pre IsTileType(tile, MP_INDUSTRY) * @return the construction stage */ static inline byte GetIndustryConstructionStage(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); return IsIndustryCompleted(tile) ? (byte)INDUSTRY_COMPLETED : GB(_m[tile].m1, 0, 2); } /** * Sets the industry construction stage of the specified tile * @param tile the tile to query * @param value the new construction stage * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void SetIndustryConstructionStage(TileIndex tile, byte value) { assert(IsTileType(tile, MP_INDUSTRY)); SB(_m[tile].m1, 0, 2, value); } /** * Get the industry graphics ID for the given industry tile as * stored in the without translation. * @param t the tile to get the gfx for * @pre IsTileType(t, MP_INDUSTRY) * @return the gfx ID */ static inline IndustryGfx GetCleanIndustryGfx(TileIndex t) { assert(IsTileType(t, MP_INDUSTRY)); return _m[t].m5 | (GB(_m[t].m6, 2, 1) << 8); } /** * Get the industry graphics ID for the given industry tile * @param t the tile to get the gfx for * @pre IsTileType(t, MP_INDUSTRY) * @return the gfx ID */ static inline IndustryGfx GetIndustryGfx(TileIndex t) { assert(IsTileType(t, MP_INDUSTRY)); return GetTranslatedIndustryTileID(GetCleanIndustryGfx(t)); } /** * Set the industry graphics ID for the given industry tile * @param t the tile to set the gfx for * @pre IsTileType(t, MP_INDUSTRY) * @param gfx the graphics ID */ static inline void SetIndustryGfx(TileIndex t, IndustryGfx gfx) { assert(IsTileType(t, MP_INDUSTRY)); _m[t].m5 = GB(gfx, 0, 8); SB(_m[t].m6, 2, 1, GB(gfx, 8, 1)); } /** * Returns this industry tile's construction counter value * @param tile the tile to query * @pre IsTileType(tile, MP_INDUSTRY) * @return the construction counter */ static inline byte GetIndustryConstructionCounter(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); return GB(_m[tile].m1, 2, 2); } /** * Sets this industry tile's construction counter value * @param tile the tile to query * @param value the new value for the construction counter * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void SetIndustryConstructionCounter(TileIndex tile, byte value) { assert(IsTileType(tile, MP_INDUSTRY)); SB(_m[tile].m1, 2, 2, value); } /** * Reset the construction stage counter of the industry, * as well as the completion bit. * In fact, it is the same as restarting construction frmo ground up * @param tile the tile to query * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void ResetIndustryConstructionStage(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); SB(_m[tile].m1, 0, 4, 0); SB(_m[tile].m1, 7, 1, 0); } /** * Get the animation loop number * @param tile the tile to get the animation loop number of * @pre IsTileType(tile, MP_INDUSTRY) */ static inline byte GetIndustryAnimationLoop(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); return _m[tile].m4; } /** * Set the animation loop number * @param tile the tile to set the animation loop number of * @param count the new animation frame number * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void SetIndustryAnimationLoop(TileIndex tile, byte count) { assert(IsTileType(tile, MP_INDUSTRY)); _m[tile].m4 = count; } /** * Get the random bits for this tile. * Used for grf callbacks * @param tile TileIndex of the tile to query * @pre IsTileType(tile, MP_INDUSTRY) * @return requested bits */ static inline byte GetIndustryRandomBits(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); return _m[tile].m3; } /** * Set the random bits for this tile. * Used for grf callbacks * @param tile TileIndex of the tile to query * @param bits the random bits * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void SetIndustryRandomBits(TileIndex tile, byte bits) { assert(IsTileType(tile, MP_INDUSTRY)); _m[tile].m3 = bits; } /** * Get the activated triggers bits for this industry tile * Used for grf callbacks * @param tile TileIndex of the tile to query * @pre IsTileType(tile, MP_INDUSTRY) * @return requested triggers */ static inline byte GetIndustryTriggers(TileIndex tile) { assert(IsTileType(tile, MP_INDUSTRY)); return GB(_m[tile].m6, 3, 3); } /** * Set the activated triggers bits for this industry tile * Used for grf callbacks * @param tile TileIndex of the tile to query * @param triggers the triggers to set * @pre IsTileType(tile, MP_INDUSTRY) */ static inline void SetIndustryTriggers(TileIndex tile, byte triggers) { assert(IsTileType(tile, MP_INDUSTRY)); SB(_m[tile].m6, 3, 3, triggers); } /** * Make the given tile an industry tile * @param t the tile to make an industry tile * @param index the industry this tile belongs to * @param gfx the graphics to use for the tile * @param random the random value * @param wc the water class for this industry; only useful when build on water */ static inline void MakeIndustry(TileIndex t, IndustryID index, IndustryGfx gfx, uint8 random, WaterClass wc) { SetTileType(t, MP_INDUSTRY); _m[t].m1 = 0; _m[t].m2 = index; SetIndustryRandomBits(t, random); // m3 _m[t].m4 = 0; SetIndustryGfx(t, gfx); // m5, part of m6 SetIndustryTriggers(t, 0); // rest of m6 SetWaterClass(t, wc); _me[t].m7 = 0; } #endif /* INDUSTRY_MAP_H */ openttd-1.3.3/src/direction_func.h0000644000000000000000000001523712246102610015626 0ustar rootroot/* $Id: direction_func.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file direction_func.h Different functions related to conversions between directions. */ #ifndef DIRECTION_FUNC_H #define DIRECTION_FUNC_H #include "direction_type.h" /** * Return the reverse of a direction * * @param d The direction to get the reverse from * @return The reverse Direction */ static inline Direction ReverseDir(Direction d) { return (Direction)(4 ^ d); } /** * Calculate the difference between to directions * * @param d0 The first direction as the base * @param d1 The second direction as the offset from the base * @return The difference how the second directions drifts of the first one. */ static inline DirDiff DirDifference(Direction d0, Direction d1) { /* Cast to uint so compiler can use bitmask. If the difference is negative * and we used int instead of uint, further "+ 8" would have to be added. */ return (DirDiff)((uint)(d0 - d1) % 8); } /** * Applies two differences together * * This function adds two differences together and return the resulting * difference. So adding two DIRDIFF_REVERSE together results in the * DIRDIFF_SAME difference. * * @param d The first difference * @param delta The second difference to add on * @return The resulting difference */ static inline DirDiff ChangeDirDiff(DirDiff d, DirDiff delta) { /* Cast to uint so compiler can use bitmask. Result can never be negative. */ return (DirDiff)((uint)(d + delta) % 8); } /** * Change a direction by a given difference * * This functions returns a new direction of the given direction * which is rotated by the given difference. * * @param d The direction to get a new direction from * @param delta The offset/drift applied to the direction * @return The new direction */ static inline Direction ChangeDir(Direction d, DirDiff delta) { /* Cast to uint so compiler can use bitmask. Result can never be negative. */ return (Direction)((uint)(d + delta) % 8); } /** * Returns the reverse direction of the given DiagDirection * * @param d The DiagDirection to get the reverse from * @return The reverse direction */ static inline DiagDirection ReverseDiagDir(DiagDirection d) { return (DiagDirection)(2 ^ d); } /** * Applies a difference on a DiagDirection * * This function applies a difference on a DiagDirection and returns * the new DiagDirection. * * @param d The DiagDirection * @param delta The difference to apply on * @return The new direction which was calculated */ static inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta) { /* Cast to uint so compiler can use bitmask. Result can never be negative. */ return (DiagDirection)((uint)(d + delta) % 4); } /** * Convert a Direction to a DiagDirection. * * This function can be used to convert the 8-way Direction to * the 4-way DiagDirection. If the direction cannot be mapped its * "rounded clockwise". So DIR_N becomes DIAGDIR_NE. * * @param dir The direction to convert * @return The resulting DiagDirection, maybe "rounded clockwise". */ static inline DiagDirection DirToDiagDir(Direction dir) { return (DiagDirection)(dir >> 1); } /** * Convert a DiagDirection to a Direction. * * This function can be used to convert the 4-way DiagDirection * to the 8-way Direction. As 4-way are less than 8-way not all * possible directions can be calculated. * * @param dir The direction to convert * @return The resulting Direction */ static inline Direction DiagDirToDir(DiagDirection dir) { return (Direction)(dir * 2 + 1); } /** * Select the other axis as provided. * * This is basically the not-operator for the axis. * * @param a The given axis * @return The other axis */ static inline Axis OtherAxis(Axis a) { return (Axis)(a ^ 1); } /** * Convert a DiagDirection to the axis. * * This function returns the axis which belongs to the given * DiagDirection. The axis X belongs to the DiagDirection * north-east and south-west. * * @param d The DiagDirection * @return The axis which belongs to the direction */ static inline Axis DiagDirToAxis(DiagDirection d) { return (Axis)(d & 1); } /** * Converts an Axis to a DiagDirection * * This function returns the DiagDirection which * belongs to the axis. As 2 directions are mapped to an axis * this function returns the one which points to south, * either south-west (on X axis) or south-east (on Y axis) * * @param a The axis * @return The direction pointed to south */ static inline DiagDirection AxisToDiagDir(Axis a) { return (DiagDirection)(2 - a); } /** * Converts an Axis to a Direction * * This function returns the Direction which * belongs to the axis. As 2 directions are mapped to an axis * this function returns the one which points to south, * either south-west (on X axis) or south-east (on Y axis) * * @param a The axis * @return The direction pointed to south */ static inline Direction AxisToDirection(Axis a) { return (Direction)(5 - 2 * a); } /** * Convert an axis and a flag for north/south into a DiagDirection * @param xy axis to convert * @param ns north -> 0, south -> 1 * @return the desired DiagDirection */ static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns) { return (DiagDirection)(xy * 3 ^ ns * 2); } /** * Checks if an integer value is a valid DiagDirection * * @param d The value to check * @return True if the value belongs to a DiagDirection, else false */ static inline bool IsValidDiagDirection(DiagDirection d) { return d < DIAGDIR_END; } /** * Checks if an integer value is a valid Direction * * @param d The value to check * @return True if the value belongs to a Direction, else false */ static inline bool IsValidDirection(Direction d) { return d < DIR_END; } /** * Checks if an integer value is a valid Axis * * @param d The value to check * @return True if the value belongs to an Axis, else false */ static inline bool IsValidAxis(Axis d) { return d < AXIS_END; } /** * Checks if a given Direction is diagonal. * * @param dir The given direction. * @return True if the direction is diagonal. */ static inline bool IsDiagonalDirection(Direction dir) { return (dir & 1) != 0; } #endif /* DIRECTION_FUNC_H */ openttd-1.3.3/src/music.cpp0000644000000000000000000000710212246102610014276 0ustar rootroot/* $Id: music.cpp 23214 2011-11-14 19:24:22Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file music.cpp The songs that OpenTTD knows. */ #include "stdafx.h" /** The type of set we're replacing */ #define SET_TYPE "music" #include "base_media_func.h" INSTANTIATE_BASE_MEDIA_METHODS(BaseMedia, MusicSet) /** Names corresponding to the music set's files */ static const char * const _music_file_names[] = { "theme", "old_0", "old_1", "old_2", "old_3", "old_4", "old_5", "old_6", "old_7", "old_8", "old_9", "new_0", "new_1", "new_2", "new_3", "new_4", "new_5", "new_6", "new_7", "new_8", "new_9", "ezy_0", "ezy_1", "ezy_2", "ezy_3", "ezy_4", "ezy_5", "ezy_6", "ezy_7", "ezy_8", "ezy_9", }; /** Make sure we aren't messing things up. */ assert_compile(lengthof(_music_file_names) == NUM_SONGS_AVAILABLE); template /* static */ const char * const *BaseSet::file_names = _music_file_names; template /* static */ const char *BaseMedia::GetExtension() { return ".obm"; // OpenTTD Base Music } template /* static */ bool BaseMedia::DetermineBestSet() { if (BaseMedia::used_set != NULL) return true; const Tbase_set *best = NULL; for (const Tbase_set *c = BaseMedia::available_sets; c != NULL; c = c->next) { if (c->GetNumMissing() != 0) continue; if (best == NULL || (best->fallback && !c->fallback) || best->valid_files < c->valid_files || (best->valid_files == c->valid_files && (best->shortname == c->shortname && best->version < c->version))) { best = c; } } BaseMedia::used_set = best; return BaseMedia::used_set != NULL; } bool MusicSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename) { bool ret = this->BaseSet::FillSetDetails(ini, path, full_filename); if (ret) { this->num_available = 0; IniGroup *names = ini->GetGroup("names"); for (uint i = 0, j = 1; i < lengthof(this->song_name); i++) { const char *filename = this->files[i].filename; if (names == NULL || StrEmpty(filename)) { this->song_name[i][0] = '\0'; continue; } IniItem *item = NULL; /* As we possibly add a path to the filename and we compare * on the filename with the path as in the .obm, we need to * keep stripping path elements until we find a match. */ for (const char *p = filename; p != NULL; p = strchr(p, PATHSEPCHAR)) { /* Remove possible double path separator characters from * the beginning, so we don't start reading e.g. root. */ while (*p == PATHSEPCHAR) p++; item = names->GetItem(p, false); if (item != NULL && !StrEmpty(item->value)) break; } if (item == NULL || StrEmpty(item->value)) { DEBUG(grf, 0, "Base music set song name missing: %s", filename); return false; } strecpy(this->song_name[i], item->value, lastof(this->song_name[i])); this->track_nr[i] = j++; this->num_available++; } } return ret; } openttd-1.3.3/src/newgrf_cargo.cpp0000644000000000000000000000717012246102611015627 0ustar rootroot/* $Id: newgrf_cargo.cpp 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_cargo.cpp Implementation of NewGRF cargoes. */ #include "stdafx.h" #include "debug.h" #include "newgrf_spritegroup.h" /** Resolver of cargo. */ struct CargoResolverObject : public ResolverObject { CargoResolverObject(const CargoSpec *cs, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; }; /* virtual */ const SpriteGroup *CargoResolverObject::ResolveReal(const RealSpriteGroup *group) const { /* Cargo action 2s should always have only 1 "loaded" state, but some * times things don't follow the spec... */ if (group->num_loaded > 0) return group->loaded[0]; if (group->num_loading > 0) return group->loading[0]; return NULL; } /** * Constructor of the cargo resolver. * @param cs Cargo being resolved. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ CargoResolverObject::CargoResolverObject(const CargoSpec *cs, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(cs->grffile, callback, callback_param1, callback_param2) { } /** * Get the custom sprite for the given cargo type. * @param cs Cargo being queried. * @return Custom sprite to draw, or \c 0 if not available. */ SpriteID GetCustomCargoSprite(const CargoSpec *cs) { CargoResolverObject object(cs); const SpriteGroup *group = SpriteGroup::Resolve(cs->group, &object); if (group == NULL) return 0; return group->GetResult(); } uint16 GetCargoCallback(CallbackID callback, uint32 param1, uint32 param2, const CargoSpec *cs) { CargoResolverObject object(cs, callback, param1, param2); const SpriteGroup *group = SpriteGroup::Resolve(cs->group, &object); if (group == NULL) return CALLBACK_FAILED; return group->GetCallbackResult(); } /** * Translate a GRF-local cargo slot/bitnum into a CargoID. * @param cargo GRF-local cargo slot/bitnum. * @param grffile Originating GRF file. * @param usebit Defines the meaning of \a cargo for GRF version < 7. * If true, then \a cargo is a bitnum. If false, then \a cargo is a cargoslot. * For GRF version >= 7 \a cargo is always a translated cargo bit. * @return CargoID or CT_INVALID if the cargo is not available. */ CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit) { /* Pre-version 7 uses the 'climate dependent' ID in callbacks and properties, i.e. cargo is the cargo ID */ if (grffile->grf_version < 7 && !usebit) return cargo; /* Other cases use (possibly translated) cargobits */ if (grffile->cargo_list.Length() > 0) { /* ...and the cargo is in bounds, then get the cargo ID for * the label */ if (cargo < grffile->cargo_list.Length()) return GetCargoIDByLabel(grffile->cargo_list[cargo]); } else { /* Else the cargo value is a 'climate independent' 'bitnum' */ return GetCargoIDByBitnum(cargo); } return CT_INVALID; } openttd-1.3.3/src/order_backup.cpp0000644000000000000000000002076212246102611015626 0ustar rootroot/* $Id: order_backup.cpp 24446 2012-07-29 16:48:00Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_backup.cpp Handling of order backups. */ #include "stdafx.h" #include "command_func.h" #include "core/pool_func.hpp" #include "network/network.h" #include "network/network_func.h" #include "order_backup.h" #include "vehicle_base.h" #include "window_func.h" #include "station_map.h" OrderBackupPool _order_backup_pool("BackupOrder"); INSTANTIATE_POOL_METHODS(OrderBackup) /** Free everything that is allocated. */ OrderBackup::~OrderBackup() { if (CleaningPool()) return; Order *o = this->orders; while (o != NULL) { Order *next = o->next; delete o; o = next; } } /** * Create an order backup for the given vehicle. * @param v The vehicle to make a backup of. * @param user The user that is requesting the backup. */ OrderBackup::OrderBackup(const Vehicle *v, uint32 user) { this->user = user; this->tile = v->tile; this->group = v->group_id; this->CopyConsistPropertiesFrom(v); /* If we have shared orders, store the vehicle we share the order with. */ if (v->IsOrderListShared()) { this->clone = (v->FirstShared() == v) ? v->NextShared() : v->FirstShared(); } else { /* Else copy the orders */ Order **tail = &this->orders; /* Count the number of orders */ const Order *order; FOR_VEHICLE_ORDERS(v, order) { Order *copy = new Order(); copy->AssignOrder(*order); *tail = copy; tail = ©->next; } } } /** * Restore the data of this order to the given vehicle. * @param v The vehicle to restore to. */ void OrderBackup::DoRestore(Vehicle *v) { /* If we had shared orders, recover that */ if (this->clone != NULL) { DoCommand(0, v->index | CO_SHARE << 30, this->clone->index, DC_EXEC, CMD_CLONE_ORDER); } else if (this->orders != NULL && OrderList::CanAllocateItem()) { v->orders.list = new OrderList(this->orders, v); this->orders = NULL; /* Make sure buoys/oil rigs are updated in the station list. */ InvalidateWindowClassesData(WC_STATION_LIST, 0); } v->CopyConsistPropertiesFrom(this); /* Make sure orders are in range */ v->UpdateRealOrderIndex(); if (v->cur_implicit_order_index >= v->GetNumOrders()) v->cur_implicit_order_index = v->cur_real_order_index; /* Restore vehicle group */ DoCommand(0, this->group, v->index, DC_EXEC, CMD_ADD_VEHICLE_GROUP); } /** * Create an order backup for the given vehicle. * @param v The vehicle to make a backup of. * @param user The user that is requesting the backup. * @note Will automatically remove any previous backups of this user. */ /* static */ void OrderBackup::Backup(const Vehicle *v, uint32 user) { /* Don't use reset as that broadcasts over the network to reset the variable, * which is what we are doing at the moment. */ OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { if (ob->user == user) delete ob; } if (OrderBackup::CanAllocateItem()) { new OrderBackup(v, user); } } /** * Restore the data of this order to the given vehicle. * @param v The vehicle to restore to. * @param user The user that built the vehicle, thus wants to restore. * @note After restoration the backup will automatically be removed. */ /* static */ void OrderBackup::Restore(Vehicle *v, uint32 user) { OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { if (v->tile != ob->tile || ob->user != user) continue; ob->DoRestore(v); delete ob; } } /** * Reset an OrderBackup given a tile and user. * @param tile The tile associated with the OrderBackup. * @param user The user associated with the OrderBackup. * @note Must not be used from the GUI! */ /* static */ void OrderBackup::ResetOfUser(TileIndex tile, uint32 user) { OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { if (ob->user == user && (ob->tile == tile || tile == INVALID_TILE)) delete ob; } } /** * Clear an OrderBackup * @param tile Tile related to the to-be-cleared OrderBackup. * @param flags For command. * @param p1 Unused. * @param p2 User that had the OrderBackup. * @param text Unused. * @return The cost of this operation or an error. */ CommandCost CmdClearOrderBackup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { /* No need to check anything. If the tile or user don't exist we just ignore it. */ if (flags & DC_EXEC) OrderBackup::ResetOfUser(tile == 0 ? INVALID_TILE : tile, p2); return CommandCost(); } /** * Reset an user's OrderBackup if needed. * @param user The user associated with the OrderBackup. * @pre _network_server. * @note Must not be used from a command. */ /* static */ void OrderBackup::ResetUser(uint32 user) { assert(_network_server); OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { /* If it's not an backup of us, so ignore it. */ if (ob->user != user) continue; DoCommandP(0, 0, user, CMD_CLEAR_ORDER_BACKUP); return; } } /** * Reset the OrderBackups from GUI/game logic. * @param t The tile of the order backup. * @param from_gui Whether the call came from the GUI, i.e. whether * it must be synced over the network. */ /* static */ void OrderBackup::Reset(TileIndex t, bool from_gui) { /* The user has CLIENT_ID_SERVER as default when network play is not active, * but compiled it. A network client has its own variable for the unique * client/user identifier. Finally if networking isn't compiled in the * default is just plain and simple: 0. */ #ifdef ENABLE_NETWORK uint32 user = _networking && !_network_server ? _network_own_client_id : CLIENT_ID_SERVER; #else uint32 user = 0; #endif OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { /* If it's not an backup of us, so ignore it. */ if (ob->user != user) continue; /* If it's not for our chosen tile either, ignore it. */ if (t != INVALID_TILE && t != ob->tile) continue; if (from_gui) { /* We need to circumvent the "prevention" from this command being executed * while the game is paused, so use the internal method. Nor do we want * this command to get its cost estimated when shift is pressed. */ DoCommandPInternal(ob->tile, 0, user, CMD_CLEAR_ORDER_BACKUP, NULL, NULL, true, false); } else { /* The command came from the game logic, i.e. the clearing of a tile. * In that case we have no need to actually sync this, just do it. */ delete ob; } } } /** * Clear the group of all backups having this group ID. * @param group The group to clear. */ /* static */ void OrderBackup::ClearGroup(GroupID group) { OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { if (ob->group == group) ob->group = DEFAULT_GROUP; } } /** * Clear/update the (clone) vehicle from an order backup. * @param v The vehicle to clear. * @pre v != NULL * @note If it is not possible to set another vehicle as clone * "example", then this backed up order will be removed. */ /* static */ void OrderBackup::ClearVehicle(const Vehicle *v) { assert(v != NULL); OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { if (ob->clone == v) { /* Get another item in the shared list. */ ob->clone = (v->FirstShared() == v) ? v->NextShared() : v->FirstShared(); /* But if that isn't there, remove it. */ if (ob->clone == NULL) delete ob; } } } /** * Removes an order from all vehicles. Triggers when, say, a station is removed. * @param type The type of the order (OT_GOTO_[STATION|DEPOT|WAYPOINT]). * @param destination The destination. Can be a StationID, DepotID or WaypointID. */ /* static */ void OrderBackup::RemoveOrder(OrderType type, DestinationID destination) { OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { for (Order *order = ob->orders; order != NULL; order = order->next) { OrderType ot = order->GetType(); if (ot == OT_GOTO_DEPOT && (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) continue; if (ot == OT_IMPLICIT || (IsHangarTile(ob->tile) && ot == OT_GOTO_DEPOT)) ot = OT_GOTO_STATION; if (ot == type && order->GetDestination() == destination) { /* Remove the order backup! If a station/depot gets removed, we can't/shouldn't restore those broken orders. */ delete ob; break; } } } } openttd-1.3.3/src/console_gui.h0000644000000000000000000000154212246102611015134 0ustar rootroot/* $Id: console_gui.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file console_gui.h GUI related functions in the console. */ #ifndef CONSOLE_GUI_H #define CONSOLE_GUI_H #include "window_type.h" void IConsoleResize(Window *w); void IConsoleSwitch(); #endif /* CONSOLE_GUI_H */ openttd-1.3.3/src/news_type.h0000644000000000000000000001714612246102611014652 0ustar rootroot/* $Id: news_type.h 24843 2012-12-23 21:07:12Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file news_type.h Types related to news. */ #ifndef NEWS_TYPE_H #define NEWS_TYPE_H #include "core/enum_type.hpp" #include "date_type.h" #include "strings_type.h" #include "sound_type.h" /** Constants in the message options window. */ enum MessageOptionsSpace { MOS_WIDG_PER_SETTING = 4, ///< Number of widgets needed for each news category, starting at widget #WID_MO_START_OPTION. MOS_LEFT_EDGE = 6, ///< Number of pixels between left edge of the window and the options buttons column. MOS_COLUMN_SPACING = 4, ///< Number of pixels between the buttons and the description columns. MOS_RIGHT_EDGE = 6, ///< Number of pixels between right edge of the window and the options descriptions column. MOS_BUTTON_SPACE = 10, ///< Additional space in the button with the option value (for better looks). MOS_ABOVE_GLOBAL_SETTINGS = 6, ///< Number of vertical pixels between the categories and the global options. MOS_BOTTOM_EDGE = 6, ///< Number of pixels between bottom edge of the window and bottom of the global options. }; /** * Type of news. */ enum NewsType { NT_ARRIVAL_COMPANY, ///< First vehicle arrived for company NT_ARRIVAL_OTHER, ///< First vehicle arrived for competitor NT_ACCIDENT, ///< An accident or disaster has occurred NT_COMPANY_INFO, ///< Company info (new companies, bankruptcy messages) NT_INDUSTRY_OPEN, ///< Opening of industries NT_INDUSTRY_CLOSE, ///< Closing of industries NT_ECONOMY, ///< Economic changes (recession, industry up/dowm) NT_INDUSTRY_COMPANY,///< Production changes of industry serviced by local company NT_INDUSTRY_OTHER, ///< Production changes of industry serviced by competitor(s) NT_INDUSTRY_NOBODY, ///< Other industry production changes NT_ADVICE, ///< Bits of news about vehicles of the company NT_NEW_VEHICLES, ///< New vehicle has become available NT_ACCEPTANCE, ///< A type of cargo is (no longer) accepted NT_SUBSIDIES, ///< News about subsidies (announcements, expirations, acceptance) NT_GENERAL, ///< General news (from towns) NT_END, ///< end-of-array marker }; /** * References to objects in news. * * @warning * Be careful! * Vehicles are a special case, as news are kept when vehicles are autoreplaced/renewed. * You have to make sure, #ChangeVehicleNews catches the DParams of your message. * This is NOT ensured by the references. */ enum NewsReferenceType { NR_NONE, ///< Empty reference NR_TILE, ///< Reference tile. Scroll to tile when clicking on the news. NR_VEHICLE, ///< Reference vehicle. Scroll to vehicle when clicking on the news. Delete news when vehicle is deleted. NR_STATION, ///< Reference station. Scroll to station when clicking on the news. Delete news when station is deleted. NR_INDUSTRY, ///< Reference industry. Scroll to industry when clicking on the news. Delete news when industry is deleted. NR_TOWN, ///< Reference town. Scroll to town when clicking on the news. NR_ENGINE, ///< Reference engine. }; /** * Various OR-able news-item flags. * @note #NF_INCOLOUR is set automatically if needed. */ enum NewsFlag { NFB_INCOLOUR = 0, ///< News item is shown in colour (otherwise it is shown in black & white). NFB_NO_TRANSPARENT = 1, ///< News item disables transparency in the viewport. NFB_SHADE = 2, ///< News item uses shaded colours. NFB_WINDOW_LAYOUT = 3, ///< First bit for window layout. NFB_WINDOW_LAYOUT_COUNT = 3, ///< Number of bits for window layout. NFB_VEHICLE_PARAM0 = 6, ///< String param 0 contains a vehicle ID. (special autoreplace behaviour) NF_INCOLOUR = 1 << NFB_INCOLOUR, ///< Bit value for coloured news. NF_NO_TRANSPARENT = 1 << NFB_NO_TRANSPARENT, ///< Bit value for disabling transparency. NF_SHADE = 1 << NFB_SHADE, ///< Bit value for enabling shading. NF_VEHICLE_PARAM0 = 1 << NFB_VEHICLE_PARAM0, ///< Bit value for specifying that string param 0 contains a vehicle ID. (special autoreplace behaviour) NF_THIN = 0 << NFB_WINDOW_LAYOUT, ///< Thin news item. (Newspaper with headline and viewport) NF_SMALL = 1 << NFB_WINDOW_LAYOUT, ///< Small news item. (Information window with text and viewport) NF_NORMAL = 2 << NFB_WINDOW_LAYOUT, ///< Normal news item. (Newspaper with text only) NF_VEHICLE = 3 << NFB_WINDOW_LAYOUT, ///< Vehicle news item. (new engine available) NF_COMPANY = 4 << NFB_WINDOW_LAYOUT, ///< Company news item. (Newspaper with face) }; DECLARE_ENUM_AS_BIT_SET(NewsFlag) /** * News display options */ enum NewsDisplay { ND_OFF, ///< Only show a reminder in the status bar ND_SUMMARY, ///< Show ticker ND_FULL, ///< Show newspaper }; /** * Per-NewsType data */ struct NewsTypeData { const char * const name; ///< Name const byte age; ///< Maximum age of news items (in days) const SoundFx sound; ///< Sound /** * Construct this entry. * @param name The name of the type. * @param age The maximum age for these messages. * @param sound The sound to play. */ NewsTypeData(const char *name, byte age, SoundFx sound) : name(name), age(age), sound(sound) { } NewsDisplay GetDisplay() const; }; /** Information about a single item of news. */ struct NewsItem { NewsItem *prev; ///< Previous news item NewsItem *next; ///< Next news item StringID string_id; ///< Message text Date date; ///< Date of the news NewsType type; ///< Type of the news NewsFlag flags; ///< NewsFlags bits @see NewsFlag NewsReferenceType reftype1; ///< Type of ref1 NewsReferenceType reftype2; ///< Type of ref2 uint32 ref1; ///< Reference 1 to some object: Used for a possible viewport, scrolling after clicking on the news, and for deleteing the news when the object is deleted. uint32 ref2; ///< Reference 2 to some object: Used for scrolling after clicking on the news, and for deleteing the news when the object is deleted. void *free_data; ///< Data to be freed when the news item has reached its end. ~NewsItem() { free(this->free_data); } uint64 params[10]; ///< Parameters for string resolving. }; /** * Data that needs to be stored for company news messages. * The problem with company news messages are the custom name * of the companies and the fact that the company data is reset, * resulting in wrong names and such. */ struct CompanyNewsInformation { char company_name[64]; ///< The name of the company char president_name[64]; ///< The name of the president char other_company_name[64]; ///< The name of the company taking over this one uint32 face; ///< The face of the president byte colour; ///< The colour related to the company void FillData(const struct Company *c, const struct Company *other = NULL); }; #endif /* NEWS_TYPE_H */ openttd-1.3.3/src/3rdparty/0000755000000000000000000000000012246102757014236 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/0000755000000000000000000000000012246102757016104 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/squirrel/0000755000000000000000000000000012246102757017752 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/squirrel/sqclass.cpp0000644000000000000000000001073312246102604022122 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" #include "sqvm.h" #include "sqtable.h" #include "sqclass.h" #include "sqclosure.h" SQClass::SQClass(SQSharedState *ss,SQClass *base) { _base = base; _typetag = 0; _hook = NULL; _udsize = 0; _metamethods.resize(MT_LAST); //size it to max size if(_base) { _defaultvalues.copy(base->_defaultvalues); _methods.copy(base->_methods); _metamethods.copy(base->_metamethods); __ObjAddRef(_base); } _members = base?base->_members->Clone() : SQTable::Create(ss,0); __ObjAddRef(_members); _locked = false; INIT_CHAIN(); ADD_TO_CHAIN(&_sharedstate->_gc_chain, this); } void SQClass::Finalize() { _attributes = _null_; _defaultvalues.resize(0); _methods.resize(0); _metamethods.resize(0); __ObjRelease(_members); if(_base) { __ObjRelease(_base); } } SQClass::~SQClass() { REMOVE_FROM_CHAIN(&_sharedstate->_gc_chain, this); Finalize(); } bool SQClass::NewSlot(SQSharedState *ss,const SQObjectPtr &key,const SQObjectPtr &val,bool bstatic) { SQObjectPtr temp; if(_locked) return false; //the class already has an instance so cannot be modified if(_members->Get(key,temp) && _isfield(temp)) //overrides the default value { _defaultvalues[_member_idx(temp)].val = val; return true; } if(type(val) == OT_CLOSURE || type(val) == OT_NATIVECLOSURE || bstatic) { SQInteger mmidx; if((type(val) == OT_CLOSURE || type(val) == OT_NATIVECLOSURE) && (mmidx = ss->GetMetaMethodIdxByName(key)) != -1) { _metamethods[mmidx] = val; } else { if(type(temp) == OT_NULL) { SQClassMember m; m.val = val; _members->NewSlot(key,SQObjectPtr(_make_method_idx(_methods.size()))); _methods.push_back(m); } else { _methods[_member_idx(temp)].val = val; } } return true; } SQClassMember m; m.val = val; _members->NewSlot(key,SQObjectPtr(_make_field_idx(_defaultvalues.size()))); _defaultvalues.push_back(m); return true; } SQInstance *SQClass::CreateInstance() { if(!_locked) Lock(); return SQInstance::Create(_opt_ss(this),this); } SQInteger SQClass::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) { SQObjectPtr oval; SQInteger idx = _members->Next(false,refpos,outkey,oval); if(idx != -1) { if(_ismethod(oval)) { outval = _methods[_member_idx(oval)].val; } else { SQObjectPtr &o = _defaultvalues[_member_idx(oval)].val; outval = _realval(o); } } return idx; } bool SQClass::SetAttributes(const SQObjectPtr &key,const SQObjectPtr &val) { SQObjectPtr idx; if(_members->Get(key,idx)) { if(_isfield(idx)) _defaultvalues[_member_idx(idx)].attrs = val; else _methods[_member_idx(idx)].attrs = val; return true; } return false; } bool SQClass::GetAttributes(const SQObjectPtr &key,SQObjectPtr &outval) { SQObjectPtr idx; if(_members->Get(key,idx)) { outval = (_isfield(idx)?_defaultvalues[_member_idx(idx)].attrs:_methods[_member_idx(idx)].attrs); return true; } return false; } /////////////////////////////////////////////////////////////////////// void SQInstance::Init(SQSharedState *ss) { _userpointer = NULL; _hook = NULL; __ObjAddRef(_class); _delegate = _class->_members; INIT_CHAIN(); ADD_TO_CHAIN(&_sharedstate->_gc_chain, this); } SQInstance::SQInstance(SQSharedState *ss, SQClass *c, SQInteger memsize) { _memsize = memsize; _class = c; SQUnsignedInteger nvalues = _class->_defaultvalues.size(); for(SQUnsignedInteger n = 0; n < nvalues; n++) { new (&_values[n]) SQObjectPtr(_class->_defaultvalues[n].val); } Init(ss); } SQInstance::SQInstance(SQSharedState *ss, SQInstance *i, SQInteger memsize) { _memsize = memsize; _class = i->_class; SQUnsignedInteger nvalues = _class->_defaultvalues.size(); for(SQUnsignedInteger n = 0; n < nvalues; n++) { new (&_values[n]) SQObjectPtr(i->_values[n]); } Init(ss); } void SQInstance::Finalize() { SQUnsignedInteger nvalues = _class->_defaultvalues.size(); __ObjRelease(_class); for(SQUnsignedInteger i = 0; i < nvalues; i++) { _values[i] = _null_; } } SQInstance::~SQInstance() { REMOVE_FROM_CHAIN(&_sharedstate->_gc_chain, this); if(_class){ Finalize(); } //if _class is null it was already finalized by the GC } bool SQInstance::GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res) { if(type(_class->_metamethods[mm]) != OT_NULL) { res = _class->_metamethods[mm]; return true; } return false; } bool SQInstance::InstanceOf(SQClass *trg) { SQClass *parent = _class; while(parent != NULL) { if(parent == trg) return true; parent = parent->_base; } return false; } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqfuncstate.h0000644000000000000000000000571012246102604022455 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQFUNCSTATE_H_ #define _SQFUNCSTATE_H_ /////////////////////////////////// #include "squtils.h" struct SQFuncState { SQFuncState(SQSharedState *ss,SQFuncState *parent,CompilerErrorFunc efunc,void *ed); ~SQFuncState(); #ifdef _DEBUG_DUMP void Dump(SQFunctionProto *func); #endif void Error(const SQChar *err); SQFuncState *PushChildState(SQSharedState *ss); void PopChildState(); void AddInstruction(SQOpcode _op,SQInteger arg0=0,SQInteger arg1=0,SQInteger arg2=0,SQInteger arg3=0){SQInstruction i(_op,arg0,arg1,arg2,arg3);AddInstruction(i);} void AddInstruction(SQInstruction &i); void SetIntructionParams(SQInteger pos,SQInteger arg0,SQInteger arg1,SQInteger arg2=0,SQInteger arg3=0); void SetIntructionParam(SQInteger pos,SQInteger arg,SQInteger val); SQInstruction &GetInstruction(SQInteger pos){return _instructions[pos];} void PopInstructions(SQInteger size){for(SQInteger i=0;i _childstates; SQInteger GetConstant(const SQObject &cons); private: CompilerErrorFunc _errfunc; void *_errtarget; }; #endif //_SQFUNCSTATE_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqlexer.h0000644000000000000000000000162612246102604021602 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQLEXER_H_ #define _SQLEXER_H_ typedef unsigned short LexChar; struct SQLexer { SQLexer(); ~SQLexer(); void Init(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed); void Error(const SQChar *err); SQInteger Lex(); const SQChar *Tok2Str(SQInteger tok); private: SQInteger GetIDType(SQChar *s); SQInteger ReadString(SQChar ndelim,bool verbatim); SQInteger ReadNumber(); void LexBlockComment(); SQInteger ReadID(); void Next(); SQInteger _curtoken; SQTable *_keywords; public: SQInteger _prevtoken; SQInteger _currentline; SQInteger _lasttokenline; SQInteger _currentcolumn; const SQChar *_svalue; SQInteger _nvalue; SQFloat _fvalue; SQLEXREADFUNC _readf; SQUserPointer _up; LexChar _currdata; SQSharedState *_sharedstate; sqvector _longstr; CompilerErrorFunc _errfunc; void *_errtarget; }; #endif openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqstate.cpp0000644000000000000000000003412412246102604022135 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" #include "sqopcodes.h" #include "sqvm.h" #include "sqfuncproto.h" #include "sqclosure.h" #include "sqstring.h" #include "sqtable.h" #include "sqarray.h" #include "squserdata.h" #include "sqclass.h" SQObjectPtr _null_; SQObjectPtr _true_(true); SQObjectPtr _false_(false); SQObjectPtr _one_((SQInteger)1); SQObjectPtr _minusone_((SQInteger)-1); SQSharedState::SQSharedState() { _compilererrorhandler = NULL; _printfunc = NULL; _debuginfo = false; _notifyallexceptions = false; } #define newsysstring(s) { \ _systemstrings->push_back(SQString::Create(this,s)); \ } #define newmetamethod(s) { \ _metamethods->push_back(SQString::Create(this,s)); \ _table(_metamethodsmap)->NewSlot(_metamethods->back(),(SQInteger)(_metamethods->size()-1)); \ } bool CompileTypemask(SQIntVec &res,const SQChar *typemask) { SQInteger i = 0; SQInteger mask = 0; while(typemask[i] != 0) { switch(typemask[i]){ case 'o': mask |= _RT_NULL; break; case 'i': mask |= _RT_INTEGER; break; case 'f': mask |= _RT_FLOAT; break; case 'n': mask |= (_RT_FLOAT | _RT_INTEGER); break; case 's': mask |= _RT_STRING; break; case 't': mask |= _RT_TABLE; break; case 'a': mask |= _RT_ARRAY; break; case 'u': mask |= _RT_USERDATA; break; case 'c': mask |= (_RT_CLOSURE | _RT_NATIVECLOSURE); break; case 'b': mask |= _RT_BOOL; break; case 'g': mask |= _RT_GENERATOR; break; case 'p': mask |= _RT_USERPOINTER; break; case 'v': mask |= _RT_THREAD; break; case 'x': mask |= _RT_INSTANCE; break; case 'y': mask |= _RT_CLASS; break; case 'r': mask |= _RT_WEAKREF; break; case '.': mask = -1; res.push_back(mask); i++; mask = 0; continue; case ' ': i++; continue; //ignores spaces default: return false; } i++; if(typemask[i] == '|') { i++; if(typemask[i] == 0) return false; continue; } res.push_back(mask); mask = 0; } return true; } SQTable *CreateDefaultDelegate(SQSharedState *ss,SQRegFunction *funcz) { SQInteger i=0; SQTable *t=SQTable::Create(ss,0); while(funcz[i].name!=0){ SQNativeClosure *nc = SQNativeClosure::Create(ss,funcz[i].f); nc->_nparamscheck = funcz[i].nparamscheck; nc->_name = SQString::Create(ss,funcz[i].name); if(funcz[i].typemask && !CompileTypemask(nc->_typecheck,funcz[i].typemask)) return NULL; t->NewSlot(SQString::Create(ss,funcz[i].name),nc); i++; } return t; } void SQSharedState::Init() { _scratchpad=NULL; _scratchpadsize=0; #ifndef NO_GARBAGE_COLLECTOR _gc_chain=NULL; #endif sq_new(_stringtable,SQStringTable); sq_new(_metamethods,SQObjectPtrVec); sq_new(_systemstrings,SQObjectPtrVec); sq_new(_types,SQObjectPtrVec); _metamethodsmap = SQTable::Create(this,MT_LAST-1); //adding type strings to avoid memory trashing //types names newsysstring(_SC("null")); newsysstring(_SC("table")); newsysstring(_SC("array")); newsysstring(_SC("closure")); newsysstring(_SC("string")); newsysstring(_SC("userdata")); newsysstring(_SC("integer")); newsysstring(_SC("float")); newsysstring(_SC("userpointer")); newsysstring(_SC("function")); newsysstring(_SC("generator")); newsysstring(_SC("thread")); newsysstring(_SC("class")); newsysstring(_SC("instance")); newsysstring(_SC("bool")); //meta methods newmetamethod(MM_ADD); newmetamethod(MM_SUB); newmetamethod(MM_MUL); newmetamethod(MM_DIV); newmetamethod(MM_UNM); newmetamethod(MM_MODULO); newmetamethod(MM_SET); newmetamethod(MM_GET); newmetamethod(MM_TYPEOF); newmetamethod(MM_NEXTI); newmetamethod(MM_CMP); newmetamethod(MM_CALL); newmetamethod(MM_CLONED); newmetamethod(MM_NEWSLOT); newmetamethod(MM_DELSLOT); newmetamethod(MM_TOSTRING); newmetamethod(MM_NEWMEMBER); newmetamethod(MM_INHERITED); _constructoridx = SQString::Create(this,_SC("constructor")); _registry = SQTable::Create(this,0); _consts = SQTable::Create(this,0); _table_default_delegate = CreateDefaultDelegate(this,_table_default_delegate_funcz); _array_default_delegate = CreateDefaultDelegate(this,_array_default_delegate_funcz); _string_default_delegate = CreateDefaultDelegate(this,_string_default_delegate_funcz); _number_default_delegate = CreateDefaultDelegate(this,_number_default_delegate_funcz); _closure_default_delegate = CreateDefaultDelegate(this,_closure_default_delegate_funcz); _generator_default_delegate = CreateDefaultDelegate(this,_generator_default_delegate_funcz); _thread_default_delegate = CreateDefaultDelegate(this,_thread_default_delegate_funcz); _class_default_delegate = CreateDefaultDelegate(this,_class_default_delegate_funcz); _instance_default_delegate = CreateDefaultDelegate(this,_instance_default_delegate_funcz); _weakref_default_delegate = CreateDefaultDelegate(this,_weakref_default_delegate_funcz); } SQSharedState::~SQSharedState() { _constructoridx = _null_; _table(_registry)->Finalize(); _table(_consts)->Finalize(); _table(_metamethodsmap)->Finalize(); _registry = _null_; _consts = _null_; _metamethodsmap = _null_; while(!_systemstrings->empty()) { _systemstrings->back()=_null_; _systemstrings->pop_back(); } _thread(_root_vm)->Finalize(); _root_vm = _null_; _table_default_delegate = _null_; _array_default_delegate = _null_; _string_default_delegate = _null_; _number_default_delegate = _null_; _closure_default_delegate = _null_; _generator_default_delegate = _null_; _thread_default_delegate = _null_; _class_default_delegate = _null_; _instance_default_delegate = _null_; _weakref_default_delegate = _null_; _refs_table.Finalize(); #ifndef NO_GARBAGE_COLLECTOR SQCollectable *t = _gc_chain; SQCollectable *nx = NULL; if(t) { t->_uiRef++; while(t) { t->Finalize(); nx = t->_next; if(nx) nx->_uiRef++; if(--t->_uiRef == 0) t->Release(); t = nx; } } // assert(_gc_chain==NULL); //just to proove a theory while(_gc_chain){ _gc_chain->_uiRef--; _gc_chain->Release(); } #endif sq_delete(_types,SQObjectPtrVec); sq_delete(_systemstrings,SQObjectPtrVec); sq_delete(_metamethods,SQObjectPtrVec); sq_delete(_stringtable,SQStringTable); if(_scratchpad)SQ_FREE(_scratchpad,_scratchpadsize); } SQInteger SQSharedState::GetMetaMethodIdxByName(const SQObjectPtr &name) { if(type(name) != OT_STRING) return -1; SQObjectPtr ret; if(_table(_metamethodsmap)->Get(name,ret)) { return _integer(ret); } return -1; } #ifndef NO_GARBAGE_COLLECTOR void SQSharedState::MarkObject(SQObjectPtr &o,SQCollectable **chain) { switch(type(o)){ case OT_TABLE:_table(o)->Mark(chain);break; case OT_ARRAY:_array(o)->Mark(chain);break; case OT_USERDATA:_userdata(o)->Mark(chain);break; case OT_CLOSURE:_closure(o)->Mark(chain);break; case OT_NATIVECLOSURE:_nativeclosure(o)->Mark(chain);break; case OT_GENERATOR:_generator(o)->Mark(chain);break; case OT_THREAD:_thread(o)->Mark(chain);break; case OT_CLASS:_class(o)->Mark(chain);break; case OT_INSTANCE:_instance(o)->Mark(chain);break; default: break; //shutup compiler } } SQInteger SQSharedState::CollectGarbage(SQVM *vm) { SQInteger n=0; SQCollectable *tchain=NULL; SQVM *vms = _thread(_root_vm); vms->Mark(&tchain); SQInteger x = _table(_thread(_root_vm)->_roottable)->CountUsed(); _refs_table.Mark(&tchain); MarkObject(_registry,&tchain); MarkObject(_consts,&tchain); MarkObject(_metamethodsmap,&tchain); MarkObject(_table_default_delegate,&tchain); MarkObject(_array_default_delegate,&tchain); MarkObject(_string_default_delegate,&tchain); MarkObject(_number_default_delegate,&tchain); MarkObject(_generator_default_delegate,&tchain); MarkObject(_thread_default_delegate,&tchain); MarkObject(_closure_default_delegate,&tchain); MarkObject(_class_default_delegate,&tchain); MarkObject(_instance_default_delegate,&tchain); MarkObject(_weakref_default_delegate,&tchain); SQCollectable *t = _gc_chain; SQCollectable *nx = NULL; if(t) { t->_uiRef++; while(t) { t->Finalize(); nx = t->_next; if(nx) nx->_uiRef++; if(--t->_uiRef == 0) t->Release(); t = nx; n++; } } t = tchain; while(t) { t->UnMark(); t = t->_next; } _gc_chain = tchain; SQInteger z = _table(_thread(_root_vm)->_roottable)->CountUsed(); assert(z == x); return n; } #endif #ifndef NO_GARBAGE_COLLECTOR void SQCollectable::AddToChain(SQCollectable **chain,SQCollectable *c) { c->_prev = NULL; c->_next = *chain; if(*chain) (*chain)->_prev = c; *chain = c; } void SQCollectable::RemoveFromChain(SQCollectable **chain,SQCollectable *c) { if(c->_prev) c->_prev->_next = c->_next; else *chain = c->_next; if(c->_next) c->_next->_prev = c->_prev; c->_next = NULL; c->_prev = NULL; } #endif SQChar* SQSharedState::GetScratchPad(SQInteger size) { SQInteger newsize; if(size>0) { if(_scratchpadsize < size) { newsize = size + (size>>1); _scratchpad = (SQChar *)SQ_REALLOC(_scratchpad,_scratchpadsize,newsize); _scratchpadsize = newsize; }else if(_scratchpadsize >= (size<<5)) { newsize = _scratchpadsize >> 1; _scratchpad = (SQChar *)SQ_REALLOC(_scratchpad,_scratchpadsize,newsize); _scratchpadsize = newsize; } } return _scratchpad; } RefTable::RefTable() { AllocNodes(4); } void RefTable::Finalize() { RefNode *nodes = _nodes; for(SQUnsignedInteger n = 0; n < _numofslots; n++) { nodes->obj = _null_; nodes++; } } RefTable::~RefTable() { SQ_FREE(_buckets,(_numofslots * sizeof(RefNode *)) + (_numofslots * sizeof(RefNode))); } #ifndef NO_GARBAGE_COLLECTOR void RefTable::Mark(SQCollectable **chain) { RefNode *nodes = (RefNode *)_nodes; for(SQUnsignedInteger n = 0; n < _numofslots; n++) { if(type(nodes->obj) != OT_NULL) { SQSharedState::MarkObject(nodes->obj,chain); } nodes++; } } #endif void RefTable::AddRef(SQObject &obj) { SQHash mainpos; RefNode *prev; RefNode *ref = Get(obj,mainpos,&prev,true); ref->refs++; } SQBool RefTable::Release(SQObject &obj) { SQHash mainpos; RefNode *prev; RefNode *ref = Get(obj,mainpos,&prev,false); if(ref) { if(--ref->refs == 0) { SQObjectPtr o = ref->obj; if(prev) { prev->next = ref->next; } else { _buckets[mainpos] = ref->next; } ref->next = _freelist; _freelist = ref; _slotused--; ref->obj = _null_; //<>test for shrink? return SQTrue; } } else { assert(0); } return SQFalse; } void RefTable::Resize(SQUnsignedInteger size) { RefNode **oldbucks = _buckets; RefNode *t = _nodes; SQUnsignedInteger oldnumofslots = _numofslots; AllocNodes(size); //rehash SQUnsignedInteger nfound = 0; for(SQUnsignedInteger n = 0; n < oldnumofslots; n++) { if(type(t->obj) != OT_NULL) { //add back; assert(t->refs != 0); RefNode *nn = Add(::HashObj(t->obj)&(_numofslots-1),t->obj); nn->refs = t->refs; t->obj = _null_; nfound++; } t++; } assert(nfound == oldnumofslots); SQ_FREE(oldbucks,(oldnumofslots * sizeof(RefNode *)) + (oldnumofslots * sizeof(RefNode))); } RefTable::RefNode *RefTable::Add(SQHash mainpos,SQObject &obj) { RefNode *t = _buckets[mainpos]; RefNode *newnode = _freelist; newnode->obj = obj; _buckets[mainpos] = newnode; _freelist = _freelist->next; newnode->next = t; assert(newnode->refs == 0); _slotused++; return newnode; } RefTable::RefNode *RefTable::Get(SQObject &obj,SQHash &mainpos,RefNode **prev,bool add) { RefNode *ref; mainpos = ::HashObj(obj)&(_numofslots-1); *prev = NULL; for (ref = _buckets[mainpos]; ref; ) { if(_rawval(ref->obj) == _rawval(obj) && type(ref->obj) == type(obj)) break; *prev = ref; ref = ref->next; } if(ref == NULL && add) { if(_numofslots == _slotused) { assert(_freelist == 0); Resize(_numofslots*2); mainpos = ::HashObj(obj)&(_numofslots-1); } ref = Add(mainpos,obj); } return ref; } void RefTable::AllocNodes(SQUnsignedInteger size) { RefNode **bucks; RefNode *nodes; bucks = (RefNode **)SQ_MALLOC((size * sizeof(RefNode *)) + (size * sizeof(RefNode))); nodes = (RefNode *)&bucks[size]; RefNode *temp = nodes; SQUnsignedInteger n; for(n = 0; n < size - 1; n++) { bucks[n] = NULL; temp->refs = 0; new (&temp->obj) SQObjectPtr; temp->next = temp+1; temp++; } bucks[n] = NULL; temp->refs = 0; new (&temp->obj) SQObjectPtr; temp->next = NULL; _freelist = nodes; _nodes = nodes; _buckets = bucks; _slotused = 0; _numofslots = size; } ////////////////////////////////////////////////////////////////////////// //SQStringTable /* * The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.) * http://www.lua.org/copyright.html#4 * http://www.lua.org/source/4.0.1/src_lstring.c.html */ SQStringTable::SQStringTable() { AllocNodes(4); _slotused = 0; } SQStringTable::~SQStringTable() { SQ_FREE(_strings,sizeof(SQString*)*_numofslots); _strings = NULL; } void SQStringTable::AllocNodes(SQInteger size) { _numofslots = size; _strings = (SQString**)SQ_MALLOC(sizeof(SQString*)*_numofslots); memset(_strings,0,sizeof(SQString*)*_numofslots); } SQString *SQStringTable::Add(const SQChar *news,SQInteger len) { if(len<0) len = (SQInteger)scstrlen(news); SQHash h = ::_hashstr(news,len)&(_numofslots-1); SQString *s; for (s = _strings[h]; s; s = s->_next){ if(s->_len == len && (!memcmp(news,s->_val,rsl(len)))) return s; //found } SQString *t=(SQString *)SQ_MALLOC(rsl(len)+sizeof(SQString)); new (t) SQString; memcpy(t->_val,news,rsl(len)); t->_val[len] = _SC('\0'); t->_len = len; t->_hash = ::_hashstr(news,len); t->_next = _strings[h]; _strings[h] = t; _slotused++; if (_slotused > _numofslots) /* too crowded? */ Resize(_numofslots*2); return t; } void SQStringTable::Resize(SQInteger size) { SQInteger oldsize=_numofslots; SQString **oldtable=_strings; AllocNodes(size); for (SQInteger i=0; i_next; SQHash h = p->_hash&(_numofslots-1); p->_next = _strings[h]; _strings[h] = p; p = next; } } SQ_FREE(oldtable,oldsize*sizeof(SQString*)); } void SQStringTable::Remove(SQString *bs) { SQString *s; SQString *prev=NULL; SQHash h = bs->_hash&(_numofslots - 1); for (s = _strings[h]; s; ){ if(s == bs){ if(prev) prev->_next = s->_next; else _strings[h] = s->_next; _slotused--; SQInteger slen = s->_len; s->~SQString(); SQ_FREE(s,sizeof(SQString) + rsl(slen)); return; } prev = s; s = s->_next; } assert(0);//if this fail something is wrong } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqclosure.h0000644000000000000000000000631212246102604022134 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQCLOSURE_H_ #define _SQCLOSURE_H_ struct SQFunctionProto; struct SQClosure : public CHAINABLE_OBJ { private: SQClosure(SQSharedState *ss,SQFunctionProto *func){_function=func; INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);} public: static SQClosure *Create(SQSharedState *ss,SQFunctionProto *func){ SQClosure *nc=(SQClosure*)SQ_MALLOC(sizeof(SQClosure)); new (nc) SQClosure(ss,func); return nc; } void Release(){ sq_delete(this,SQClosure); } SQClosure *Clone() { SQClosure * ret = SQClosure::Create(_opt_ss(this),_funcproto(_function)); ret->_env = _env; ret->_outervalues.copy(_outervalues); ret->_defaultparams.copy(_defaultparams); return ret; } ~SQClosure() { REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this); } bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write); static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret); #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); void Finalize(){_outervalues.resize(0); } #endif SQObjectPtr _env; SQObjectPtr _function; SQObjectPtrVec _outervalues; SQObjectPtrVec _defaultparams; }; ////////////////////////////////////////////// struct SQGenerator : public CHAINABLE_OBJ { enum SQGeneratorState{eRunning,eSuspended,eDead}; private: SQGenerator(SQSharedState *ss,SQClosure *closure){_closure=closure;_state=eRunning;_ci._generator=NULL;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);} public: static SQGenerator *Create(SQSharedState *ss,SQClosure *closure){ SQGenerator *nc=(SQGenerator*)SQ_MALLOC(sizeof(SQGenerator)); new (nc) SQGenerator(ss,closure); return nc; } ~SQGenerator() { REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this); } void Kill(){ _state=eDead; _stack.resize(0); _closure=_null_;} void Release(){ sq_delete(this,SQGenerator); } bool Yield(SQVM *v); bool Resume(SQVM *v,SQInteger target); #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); void Finalize(){_stack.resize(0);_closure=_null_;} #endif SQObjectPtr _closure; SQObjectPtrVec _stack; SQObjectPtrVec _vargsstack; SQVM::CallInfo _ci; ExceptionsTraps _etraps; SQGeneratorState _state; }; struct SQNativeClosure : public CHAINABLE_OBJ { private: SQNativeClosure(SQSharedState *ss,SQFUNCTION func){_function=func;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this); } public: static SQNativeClosure *Create(SQSharedState *ss,SQFUNCTION func) { SQNativeClosure *nc=(SQNativeClosure*)SQ_MALLOC(sizeof(SQNativeClosure)); new (nc) SQNativeClosure(ss,func); return nc; } SQNativeClosure *Clone() { SQNativeClosure * ret = SQNativeClosure::Create(_opt_ss(this),_function); ret->_env = _env; ret->_name = _name; ret->_outervalues.copy(_outervalues); ret->_typecheck.copy(_typecheck); ret->_nparamscheck = _nparamscheck; return ret; } ~SQNativeClosure() { REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this); } void Release(){ sq_delete(this,SQNativeClosure); } #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); void Finalize(){_outervalues.resize(0);} #endif SQInteger _nparamscheck; SQIntVec _typecheck; SQObjectPtrVec _outervalues; SQObjectPtr _env; SQFUNCTION _function; SQObjectPtr _name; }; #endif //_SQCLOSURE_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqclass.h0000644000000000000000000001041112246102604021560 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQCLASS_H_ #define _SQCLASS_H_ struct SQInstance; struct SQClassMember { SQClassMember(){} SQClassMember(const SQClassMember &o) { val = o.val; attrs = o.attrs; } SQObjectPtr val; SQObjectPtr attrs; }; typedef sqvector SQClassMemberVec; #define MEMBER_TYPE_METHOD 0x01000000 #define MEMBER_TYPE_FIELD 0x02000000 #define _ismethod(o) (_integer(o)&MEMBER_TYPE_METHOD) #define _isfield(o) (_integer(o)&MEMBER_TYPE_FIELD) #define _make_method_idx(i) ((SQInteger)(MEMBER_TYPE_METHOD|i)) #define _make_field_idx(i) ((SQInteger)(MEMBER_TYPE_FIELD|i)) #define _member_type(o) (_integer(o)&0xFF000000) #define _member_idx(o) (_integer(o)&0x00FFFFFF) struct SQClass : public CHAINABLE_OBJ { SQClass(SQSharedState *ss,SQClass *base); public: static SQClass* Create(SQSharedState *ss,SQClass *base) { SQClass *newclass = (SQClass *)SQ_MALLOC(sizeof(SQClass)); new (newclass) SQClass(ss, base); return newclass; } ~SQClass(); bool NewSlot(SQSharedState *ss, const SQObjectPtr &key,const SQObjectPtr &val,bool bstatic); bool Get(const SQObjectPtr &key,SQObjectPtr &val) { if(_members->Get(key,val)) { if(_isfield(val)) { SQObjectPtr &o = _defaultvalues[_member_idx(val)].val; val = _realval(o); } else { val = _methods[_member_idx(val)].val; } return true; } return false; } bool SetAttributes(const SQObjectPtr &key,const SQObjectPtr &val); bool GetAttributes(const SQObjectPtr &key,SQObjectPtr &outval); void Lock() { _locked = true; if(_base) _base->Lock(); } void Release() { if (_hook) { _hook(_typetag,0);} sq_delete(this, SQClass); } void Finalize(); #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable ** ); #endif SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); SQInstance *CreateInstance(); SQTable *_members; SQClass *_base; SQClassMemberVec _defaultvalues; SQClassMemberVec _methods; SQObjectPtrVec _metamethods; SQObjectPtr _attributes; SQUserPointer _typetag; SQRELEASEHOOK _hook; bool _locked; SQInteger _udsize; }; #define calcinstancesize(_theclass_) \ (_theclass_->_udsize + sizeof(SQInstance) + (sizeof(SQObjectPtr)*(_theclass_->_defaultvalues.size()>0?_theclass_->_defaultvalues.size()-1:0))) struct SQInstance : public SQDelegable { void Init(SQSharedState *ss); SQInstance(SQSharedState *ss, SQClass *c, SQInteger memsize); SQInstance(SQSharedState *ss, SQInstance *c, SQInteger memsize); public: static SQInstance* Create(SQSharedState *ss,SQClass *theclass) { SQInteger size = calcinstancesize(theclass); SQInstance *newinst = (SQInstance *)SQ_MALLOC(size); new (newinst) SQInstance(ss, theclass,size); if(theclass->_udsize) { newinst->_userpointer = ((unsigned char *)newinst) + (size - theclass->_udsize); } return newinst; } SQInstance *Clone(SQSharedState *ss) { SQInteger size = calcinstancesize(_class); SQInstance *newinst = (SQInstance *)SQ_MALLOC(size); new (newinst) SQInstance(ss, this,size); if(_class->_udsize) { newinst->_userpointer = ((unsigned char *)newinst) + (size - _class->_udsize); } return newinst; } ~SQInstance(); bool Get(const SQObjectPtr &key,SQObjectPtr &val) { if(_class->_members->Get(key,val)) { if(_isfield(val)) { SQObjectPtr &o = _values[_member_idx(val)]; val = _realval(o); } else { val = _class->_methods[_member_idx(val)].val; } return true; } return false; } bool Set(const SQObjectPtr &key,const SQObjectPtr &val) { SQObjectPtr idx; if(_class->_members->Get(key,idx) && _isfield(idx)) { _values[_member_idx(idx)] = val; return true; } return false; } void Release() { _uiRef++; try { if (_hook) { _hook(_userpointer,0);} } catch (...) { _uiRef--; if (_uiRef == 0) { SQInteger size = _memsize; this->~SQInstance(); SQ_FREE(this, size); } throw; } _uiRef--; if(_uiRef > 0) return; SQInteger size = _memsize; this->~SQInstance(); SQ_FREE(this, size); } void Finalize(); #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable ** ); #endif bool InstanceOf(SQClass *trg); bool GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res); SQClass *_class; SQUserPointer _userpointer; SQRELEASEHOOK _hook; SQInteger _memsize; SQObjectPtr _values[1]; }; #endif //_SQCLASS_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/Makefile0000644000000000000000000000137212246102604021404 0ustar rootrootSQUIRREL= .. OUT= $(SQUIRREL)/lib/libsquirrel.a INCZ= -I$(SQUIRREL)/include -I. -Iinclude DEFS= LIB= OBJS= \ sqapi.o \ sqbaselib.o \ sqcompiler.o \ sqdebug.o \ sqlexer.o \ sqobject.o \ sqparser.o \ sqstate.o \ sqtable.o \ sqvm.o \ sqmem.o \ sqclass.o SRCS= \ sqapi.cpp \ sqbaselib.cpp \ sqfuncstate.cpp \ sqdebug.cpp \ sqlexer.cpp \ sqobject.cpp \ sqcompiler.cpp \ sqstate.cpp \ sqtable.cpp \ sqmem.cpp \ sqvm.cpp \ sqclass.cpp sq32: gcc -O2 -fno-rtti -Wall -c $(SRCS) $(INCZ) $(DEFS) ar rc $(OUT) *.o sqprof: gcc -O2 -pg -fno-rtti -pie -gstabs -g3 -Wall -c $(SRCS) $(INCZ) $(DEFS) ar rc $(OUT) *.o sq64: gcc -O2 -D_SQ64 -fno-rtti -Wall -c $(SRCS) $(INCZ) $(DEFS) ar rc $(OUT) *.o clean: rm -f $(OUT) $(SRCS:%.cpp=%.o) openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqvm.h0000644000000000000000000001712312246102604021104 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQVM_H_ #define _SQVM_H_ #include "sqopcodes.h" #include "sqobject.h" #define MAX_NATIVE_CALLS 100 #define MIN_STACK_OVERHEAD 10 #define SQ_SUSPEND_FLAG -666 //base lib void sq_base_register(HSQUIRRELVM v); struct SQExceptionTrap{ SQExceptionTrap() {} SQExceptionTrap(SQInteger ss, SQInteger stackbase,SQInstruction *ip, SQInteger ex_target){ _stacksize = ss; _stackbase = stackbase; _ip = ip; _extarget = ex_target;} SQExceptionTrap(const SQExceptionTrap &et) { (*this) = et; } SQInteger _stackbase; SQInteger _stacksize; SQInstruction *_ip; SQInteger _extarget; }; #define _INLINE #define STK(a) _stack._vals[_stackbase+(a)] #define TARGET _stack._vals[_stackbase+arg0] typedef sqvector ExceptionsTraps; struct SQVM : public CHAINABLE_OBJ { struct VarArgs { VarArgs() { size = 0; base = 0; } unsigned short size; unsigned short base; }; struct CallInfo{ //CallInfo() { _generator._type = OT_NULL;} SQInstruction *_ip; SQObjectPtr *_literals; SQObjectPtr _closure; SQGenerator *_generator; SQInt32 _etraps; SQInt32 _prevstkbase; SQInt32 _prevtop; SQInt32 _target; SQInt32 _ncalls; SQBool _root; VarArgs _vargs; }; typedef sqvector CallInfoVec; public: enum ExecutionType { ET_CALL, ET_RESUME_GENERATOR, ET_RESUME_VM, ET_RESUME_THROW_VM, ET_RESUME_OPENTTD }; SQVM(SQSharedState *ss); ~SQVM(); bool Init(SQVM *friendvm, SQInteger stacksize); bool Execute(SQObjectPtr &func, SQInteger target, SQInteger nargs, SQInteger stackbase, SQObjectPtr &outres, SQBool raiseerror, ExecutionType et = ET_CALL); //starts a native call return when the NATIVE closure returns bool CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger stackbase, SQObjectPtr &retval,bool &suspend); //starts a SQUIRREL call in the same "Execution loop" bool StartCall(SQClosure *closure, SQInteger target, SQInteger nargs, SQInteger stackbase, bool tailcall); bool CreateClassInstance(SQClass *theclass, SQObjectPtr &inst, SQObjectPtr &constructor); //call a generic closure pure SQUIRREL or NATIVE bool Call(SQObjectPtr &closure, SQInteger nparams, SQInteger stackbase, SQObjectPtr &outres,SQBool raiseerror,SQBool can_suspend); SQRESULT Suspend(); void CallDebugHook(SQInteger type,SQInteger forcedline=0); void CallErrorHandler(SQObjectPtr &e); bool Get(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &dest, bool raw, bool fetchroot); bool FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest,bool raw); bool Set(const SQObjectPtr &self, const SQObjectPtr &key, const SQObjectPtr &val, bool fetchroot); bool NewSlot(const SQObjectPtr &self, const SQObjectPtr &key, const SQObjectPtr &val,bool bstatic); bool DeleteSlot(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &res); bool Clone(const SQObjectPtr &self, SQObjectPtr &target); bool ObjCmp(const SQObjectPtr &o1, const SQObjectPtr &o2,SQInteger &res); bool StringCat(const SQObjectPtr &str, const SQObjectPtr &obj, SQObjectPtr &dest); bool IsEqual(SQObjectPtr &o1,SQObjectPtr &o2,bool &res); void ToString(const SQObjectPtr &o,SQObjectPtr &res); SQString *PrintObjVal(const SQObject &o); void Raise_Error(const SQChar *s, ...); void Raise_Error(SQObjectPtr &desc); void Raise_IdxError(const SQObject &o); void Raise_CompareError(const SQObject &o1, const SQObject &o2); void Raise_ParamTypeError(SQInteger nparam,SQInteger typemask,SQInteger type); void TypeOf(const SQObjectPtr &obj1, SQObjectPtr &dest); bool CallMetaMethod(SQDelegable *del, SQMetaMethod mm, SQInteger nparams, SQObjectPtr &outres); bool ArithMetaMethod(SQInteger op, const SQObjectPtr &o1, const SQObjectPtr &o2, SQObjectPtr &dest); bool Return(SQInteger _arg0, SQInteger _arg1, SQObjectPtr &retval); //new stuff _INLINE bool ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2); _INLINE bool BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2); _INLINE bool NEG_OP(SQObjectPtr &trg,const SQObjectPtr &o1); _INLINE bool CMP_OP(CmpOP op, const SQObjectPtr &o1,const SQObjectPtr &o2,SQObjectPtr &res); bool CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func); bool GETVARGV_OP(SQObjectPtr &target,SQObjectPtr &idx,CallInfo *ci); bool CLASS_OP(SQObjectPtr &target,SQInteger base,SQInteger attrs); bool GETPARENT_OP(SQObjectPtr &o,SQObjectPtr &target); //return true if the loop is finished bool FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr &o3,SQObjectPtr &o4,SQInteger arg_2,int exitpos,int &jump); bool DELEGATE_OP(SQObjectPtr &trg,SQObjectPtr &o1,SQObjectPtr &o2); _INLINE bool LOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr); _INLINE bool PLOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr); _INLINE bool DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjectPtr &key, SQObjectPtr &incr, bool postfix); void PopVarArgs(VarArgs &vargs); void ClearStack(SQInteger last_top); #ifdef _DEBUG_DUMP void dumpstack(SQInteger stackbase=-1, bool dumpall = false); #endif #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); #endif void Finalize(); void GrowCallStack() { SQInteger newsize = _alloccallsstacksize*2; _callstackdata.resize(newsize); _callsstack = &_callstackdata[0]; _alloccallsstacksize = newsize; } void Release(){ sq_delete(this,SQVM); } //does nothing //////////////////////////////////////////////////////////////////////////// //stack functions for the api void Remove(SQInteger n); bool IsFalse(SQObjectPtr &o); void Pop(); void Pop(SQInteger n); void Push(const SQObjectPtr &o); SQObjectPtr &Top(); SQObjectPtr &PopGet(); SQObjectPtr &GetUp(SQInteger n); SQObjectPtr &GetAt(SQInteger n); SQObjectPtrVec _stack; SQObjectPtrVec _vargsstack; SQInteger _top; SQInteger _stackbase; SQObjectPtr _roottable; SQObjectPtr _lasterror; SQObjectPtr _errorhandler; SQObjectPtr _debughook; SQObjectPtr temp_reg; CallInfo* _callsstack; SQInteger _callsstacksize; SQInteger _alloccallsstacksize; sqvector _callstackdata; ExceptionsTraps _etraps; CallInfo *ci; void *_foreignptr; //VMs sharing the same state SQSharedState *_sharedstate; SQInteger _nnativecalls; //suspend infos SQBool _suspended; SQBool _suspended_root; SQInteger _suspended_target; SQInteger _suspended_traps; VarArgs _suspend_varargs; SQBool _can_suspend; SQInteger _ops_till_suspend; SQBool _in_stackoverflow; bool ShouldSuspend() { return _can_suspend && _ops_till_suspend <= 0; } void DecreaseOps(SQInteger amount) { if (_ops_till_suspend - amount < _ops_till_suspend) _ops_till_suspend -= amount; } }; struct AutoDec{ AutoDec(SQInteger *n) { _n = n; } ~AutoDec() { (*_n)--; } SQInteger *_n; }; inline SQObjectPtr &stack_get(HSQUIRRELVM v,SQInteger idx){return ((idx>=0)?(v->GetAt(idx+v->_stackbase-1)):(v->GetUp(idx)));} #define _ss(_vm_) (_vm_)->_sharedstate #ifndef NO_GARBAGE_COLLECTOR #define _opt_ss(_vm_) (_vm_)->_sharedstate #else #define _opt_ss(_vm_) NULL #endif #define PUSH_CALLINFO(v,nci){ \ if(v->_callsstacksize == v->_alloccallsstacksize) { \ if (v->_callsstacksize > 65535 && !v->_in_stackoverflow) {\ v->_in_stackoverflow = true; \ v->Raise_Error(_SC("stack overflow"));\ v->CallErrorHandler(v->_lasterror);\ return false;\ }\ v->GrowCallStack(); \ } \ v->ci = &v->_callsstack[v->_callsstacksize]; \ *(v->ci) = nci; \ v->_callsstacksize++; \ } #define POP_CALLINFO(v){ \ v->_callsstacksize--; \ v->ci->_closure.Null(); \ if(v->_callsstacksize) \ v->ci = &v->_callsstack[v->_callsstacksize-1] ; \ else \ v->ci = NULL; \ } #endif //_SQVM_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqfuncstate.cpp0000644000000000000000000003464212246102604023016 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" #include "sqcompiler.h" #include "sqfuncproto.h" #include "sqstring.h" #include "sqtable.h" #include "sqopcodes.h" #include "sqfuncstate.h" #ifdef _DEBUG_DUMP SQInstructionDesc g_InstrDesc[]={ {_SC("_OP_LINE")}, {_SC("_OP_LOAD")}, {_SC("_OP_LOADINT")}, {_SC("_OP_LOADFLOAT")}, {_SC("_OP_DLOAD")}, {_SC("_OP_TAILCALL")}, {_SC("_OP_CALL")}, {_SC("_OP_PREPCALL")}, {_SC("_OP_PREPCALLK")}, {_SC("_OP_GETK")}, {_SC("_OP_MOVE")}, {_SC("_OP_NEWSLOT")}, {_SC("_OP_DELETE")}, {_SC("_OP_SET")}, {_SC("_OP_GET")}, {_SC("_OP_EQ")}, {_SC("_OP_NE")}, {_SC("_OP_ARITH")}, {_SC("_OP_BITW")}, {_SC("_OP_RETURN")}, {_SC("_OP_LOADNULLS")}, {_SC("_OP_LOADROOTTABLE")}, {_SC("_OP_LOADBOOL")}, {_SC("_OP_DMOVE")}, {_SC("_OP_JMP")}, {_SC("_OP_JNZ")}, {_SC("_OP_JZ")}, {_SC("_OP_LOADFREEVAR")}, {_SC("_OP_VARGC")}, {_SC("_OP_GETVARGV")}, {_SC("_OP_NEWTABLE")}, {_SC("_OP_NEWARRAY")}, {_SC("_OP_APPENDARRAY")}, {_SC("_OP_GETPARENT")}, {_SC("_OP_COMPARITH")}, {_SC("_OP_COMPARITHL")}, {_SC("_OP_INC")}, {_SC("_OP_INCL")}, {_SC("_OP_PINC")}, {_SC("_OP_PINCL")}, {_SC("_OP_CMP")}, {_SC("_OP_EXISTS")}, {_SC("_OP_INSTANCEOF")}, {_SC("_OP_AND")}, {_SC("_OP_OR")}, {_SC("_OP_NEG")}, {_SC("_OP_NOT")}, {_SC("_OP_BWNOT")}, {_SC("_OP_CLOSURE")}, {_SC("_OP_YIELD")}, {_SC("_OP_RESUME")}, {_SC("_OP_FOREACH")}, {_SC("_OP_POSTFOREACH")}, {_SC("_OP_DELEGATE")}, {_SC("_OP_CLONE")}, {_SC("_OP_TYPEOF")}, {_SC("_OP_PUSHTRAP")}, {_SC("_OP_POPTRAP")}, {_SC("_OP_THROW")}, {_SC("_OP_CLASS")}, {_SC("_OP_NEWSLOTA")}, {_SC("_OP_SCOPE_END")} }; #endif void DumpLiteral(SQObjectPtr &o) { switch(type(o)){ case OT_STRING: scprintf(_SC("\"%s\""),_stringval(o));break; case OT_FLOAT: scprintf(_SC("{%f}"),_float(o));break; #if defined(_SQ64) case OT_INTEGER: scprintf(_SC("{%ld}"),_integer(o));break; #else case OT_INTEGER: scprintf(_SC("{%d}"),_integer(o));break; #endif case OT_BOOL: scprintf(_SC("%s"),_integer(o)?_SC("true"):_SC("false"));break; default: scprintf(_SC("(%s %p)"),GetTypeName(o),(void*)_rawval(o));break; break; //shut up compiler } } SQFuncState::SQFuncState(SQSharedState *ss,SQFuncState *parent,CompilerErrorFunc efunc,void *ed) { _nliterals = 0; _literals = SQTable::Create(ss,0); _strings = SQTable::Create(ss,0); _sharedstate = ss; _lastline = 0; _optimization = true; _parent = parent; _stacksize = 0; _traps = 0; _returnexp = 0; _varparams = false; _errfunc = efunc; _errtarget = ed; _bgenerator = false; } void SQFuncState::Error(const SQChar *err) { _errfunc(_errtarget,err); } #ifdef _DEBUG_DUMP void SQFuncState::Dump(SQFunctionProto *func) { SQUnsignedInteger n=0,i; SQInteger si; scprintf(_SC("SQInstruction sizeof %d\n"),sizeof(SQInstruction)); scprintf(_SC("SQObject sizeof %d\n"),sizeof(SQObject)); scprintf(_SC("--------------------------------------------------------------------\n")); scprintf(_SC("*****FUNCTION [%s]\n"),type(func->_name)==OT_STRING?_stringval(func->_name):_SC("unknown")); scprintf(_SC("-----LITERALS\n")); SQObjectPtr refidx,key,val; SQInteger idx; SQObjectPtrVec templiterals; templiterals.resize(_nliterals); while((idx=_table(_literals)->Next(false,refidx,key,val))!=-1) { refidx=idx; templiterals[_integer(val)]=key; } for(i=0;i>\n")); n=0; for(i=0;i<_parameters.size();i++){ scprintf(_SC("[%d] "),n); DumpLiteral(_parameters[i]); scprintf(_SC("\n")); n++; } scprintf(_SC("-----LOCALS\n")); for(si=0;si_nlocalvarinfos;si++){ SQLocalVarInfo lvi=func->_localvarinfos[si]; scprintf(_SC("[%d] %s \t%d %d\n"),lvi._pos,_stringval(lvi._name),lvi._start_op,lvi._end_op); n++; } scprintf(_SC("-----LINE INFO\n")); for(i=0;i<_lineinfos.size();i++){ SQLineInfo li=_lineinfos[i]; scprintf(_SC("op [%d] line [%d] \n"),li._op,li._line); n++; } scprintf(_SC("-----dump\n")); n=0; for(i=0;i<_instructions.size();i++){ SQInstruction &inst=_instructions[i]; if(inst.op==_OP_LOAD || inst.op==_OP_DLOAD || inst.op==_OP_PREPCALLK || inst.op==_OP_GETK ){ SQInteger lidx = inst._arg1; scprintf(_SC("[%03d] %15s %d "),n,g_InstrDesc[inst.op].name,inst._arg0); if(lidx >= 0xFFFFFFFF) scprintf(_SC("null")); else { SQInteger refidx; SQObjectPtr val,key,refo; while(((refidx=_table(_literals)->Next(false,refo,key,val))!= -1) && (_integer(val) != lidx)) { refo = refidx; } DumpLiteral(key); } if(inst.op != _OP_DLOAD) { scprintf(_SC(" %d %d \n"),inst._arg2,inst._arg3); } else { scprintf(_SC(" %d "),inst._arg2); lidx = inst._arg3; if(lidx >= 0xFFFFFFFF) scprintf(_SC("null")); else { SQInteger refidx; SQObjectPtr val,key,refo; while(((refidx=_table(_literals)->Next(false,refo,key,val))!= -1) && (_integer(val) != lidx)) { refo = refidx; } DumpLiteral(key); scprintf(_SC("\n")); } } } else if(inst.op==_OP_LOADFLOAT) { scprintf(_SC("[%03d] %15s %d %f %d %d\n"),n,g_InstrDesc[inst.op].name,inst._arg0,*((SQFloat*)&inst._arg1),inst._arg2,inst._arg3); } else if(inst.op==_OP_ARITH){ scprintf(_SC("[%03d] %15s %d %d %d %c\n"),n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); } else scprintf(_SC("[%03d] %15s %d %d %d %d\n"),n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); n++; } scprintf(_SC("-----\n")); scprintf(_SC("stack size[%d]\n"),func->_stacksize); scprintf(_SC("--------------------------------------------------------------------\n\n")); } #endif SQInteger SQFuncState::GetNumericConstant(const SQInteger cons) { return GetConstant(SQObjectPtr(cons)); } SQInteger SQFuncState::GetNumericConstant(const SQFloat cons) { return GetConstant(SQObjectPtr(cons)); } SQInteger SQFuncState::GetConstant(const SQObject &cons) { SQObjectPtr val; if(!_table(_literals)->Get(cons,val)) { val = _nliterals; _table(_literals)->NewSlot(cons,val); _nliterals++; if(_nliterals > MAX_LITERALS) { val.Null(); Error(_SC("internal compiler error: too many literals")); } } return _integer(val); } void SQFuncState::SetIntructionParams(SQInteger pos,SQInteger arg0,SQInteger arg1,SQInteger arg2,SQInteger arg3) { _instructions[pos]._arg0=(unsigned char)*((SQUnsignedInteger *)&arg0); _instructions[pos]._arg1=(SQInt32)*((SQUnsignedInteger *)&arg1); _instructions[pos]._arg2=(unsigned char)*((SQUnsignedInteger *)&arg2); _instructions[pos]._arg3=(unsigned char)*((SQUnsignedInteger *)&arg3); } void SQFuncState::SetIntructionParam(SQInteger pos,SQInteger arg,SQInteger val) { switch(arg){ case 0:_instructions[pos]._arg0=(unsigned char)*((SQUnsignedInteger *)&val);break; case 1:case 4:_instructions[pos]._arg1=(SQInt32)*((SQUnsignedInteger *)&val);break; case 2:_instructions[pos]._arg2=(unsigned char)*((SQUnsignedInteger *)&val);break; case 3:_instructions[pos]._arg3=(unsigned char)*((SQUnsignedInteger *)&val);break; }; } SQInteger SQFuncState::AllocStackPos() { SQInteger npos=_vlocals.size(); _vlocals.push_back(SQLocalVarInfo()); if(_vlocals.size()>((SQUnsignedInteger)_stacksize)) { if(_stacksize>MAX_FUNC_STACKSIZE) Error(_SC("internal compiler error: too many locals")); _stacksize=_vlocals.size(); } return npos; } SQInteger SQFuncState::PushTarget(SQInteger n) { if(n!=-1){ _targetstack.push_back(n); return n; } n=AllocStackPos(); _targetstack.push_back(n); return n; } SQInteger SQFuncState::GetUpTarget(SQInteger n){ return _targetstack[((_targetstack.size()-1)-n)]; } SQInteger SQFuncState::TopTarget(){ return _targetstack.back(); } SQInteger SQFuncState::PopTarget() { SQInteger npos=_targetstack.back(); SQLocalVarInfo t=_vlocals[_targetstack.back()]; if(type(t._name)==OT_NULL){ _vlocals.pop_back(); } _targetstack.pop_back(); return npos; } SQInteger SQFuncState::GetStackSize() { return _vlocals.size(); } void SQFuncState::SetStackSize(SQInteger n) { SQInteger size=_vlocals.size(); while(size>n){ size--; SQLocalVarInfo lvi=_vlocals.back(); if(type(lvi._name)!=OT_NULL){ lvi._end_op=GetCurrentPos(); _localvarinfos.push_back(lvi); } _vlocals.pop_back(); } } bool SQFuncState::IsConstant(const SQObject &name,SQObject &e) { SQObjectPtr val; if(_table(_sharedstate->_consts)->Get(name,val)) { e = val; return true; } return false; } bool SQFuncState::IsLocal(SQUnsignedInteger stkpos) { if(stkpos>=_vlocals.size())return false; else if(type(_vlocals[stkpos]._name)!=OT_NULL)return true; return false; } SQInteger SQFuncState::PushLocalVariable(const SQObject &name) { SQInteger pos=_vlocals.size(); SQLocalVarInfo lvi; lvi._name=name; lvi._start_op=GetCurrentPos()+1; lvi._pos=_vlocals.size(); _vlocals.push_back(lvi); if(_vlocals.size()>((SQUnsignedInteger)_stacksize))_stacksize=_vlocals.size(); return pos; } SQInteger SQFuncState::GetLocalVariable(const SQObject &name) { SQInteger locals=_vlocals.size(); while(locals>=1){ if(type(_vlocals[locals-1]._name)==OT_STRING && _string(_vlocals[locals-1]._name)==_string(name)){ return locals-1; } locals--; } return -1; } SQInteger SQFuncState::GetOuterVariable(const SQObject &name) { SQInteger outers = _outervalues.size(); for(SQInteger i = 0; iGetLocalVariable(name); if(pos == -1) { pos = _parent->GetOuterVariable(name); if(pos != -1) { _outervalues.push_back(SQOuterVar(name,SQObjectPtr(SQInteger(pos)),otOUTER)); //local return; } } else { _outervalues.push_back(SQOuterVar(name,SQObjectPtr(SQInteger(pos)),otLOCAL)); //local return; } } _outervalues.push_back(SQOuterVar(name,name,otSYMBOL)); //global } void SQFuncState::AddParameter(const SQObject &name) { PushLocalVariable(name); _parameters.push_back(name); } void SQFuncState::AddLineInfos(SQInteger line,bool lineop,bool force) { if(_lastline!=line || force){ SQLineInfo li; li._line=line;li._op=(GetCurrentPos()+1); if(lineop)AddInstruction(_OP_LINE,0,line); _lineinfos.push_back(li); _lastline=line; } } void SQFuncState::AddInstruction(SQInstruction &i) { SQInteger size = _instructions.size(); if(size > 0 && _optimization){ //simple optimizer SQInstruction &pi = _instructions[size-1];//previous instruction switch(i.op) { case _OP_RETURN: if( _parent && i._arg0 != MAX_FUNC_STACKSIZE && pi.op == _OP_CALL && _returnexp < size-1) { pi.op = _OP_TAILCALL; } break; case _OP_GET: if( pi.op == _OP_LOAD && pi._arg0 == i._arg2 && (!IsLocal(pi._arg0))){ pi._arg1 = pi._arg1; pi._arg2 = (unsigned char)i._arg1; pi.op = _OP_GETK; pi._arg0 = i._arg0; return; } break; case _OP_PREPCALL: if( pi.op == _OP_LOAD && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0))){ pi.op = _OP_PREPCALLK; pi._arg0 = i._arg0; pi._arg1 = pi._arg1; pi._arg2 = i._arg2; pi._arg3 = i._arg3; return; } break; case _OP_APPENDARRAY: if(pi.op == _OP_LOAD && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0))){ pi.op = _OP_APPENDARRAY; pi._arg0 = i._arg0; pi._arg1 = pi._arg1; pi._arg2 = MAX_FUNC_STACKSIZE; pi._arg3 = MAX_FUNC_STACKSIZE; return; } break; case _OP_MOVE: if((pi.op == _OP_GET || pi.op == _OP_ARITH || pi.op == _OP_BITW) && (pi._arg0 == i._arg1)) { pi._arg0 = i._arg0; _optimization = false; return; } if(pi.op == _OP_MOVE) { pi.op = _OP_DMOVE; pi._arg2 = i._arg0; pi._arg3 = (unsigned char)i._arg1; return; } break; case _OP_LOAD: if(pi.op == _OP_LOAD && i._arg1 < 256) { pi.op = _OP_DLOAD; pi._arg2 = i._arg0; pi._arg3 = (unsigned char)i._arg1; return; } break; case _OP_EQ:case _OP_NE: if(pi.op == _OP_LOAD && pi._arg0 == i._arg1 && (!IsLocal(pi._arg0) )) { pi.op = i.op; pi._arg0 = i._arg0; pi._arg1 = pi._arg1; pi._arg2 = i._arg2; pi._arg3 = MAX_FUNC_STACKSIZE; return; } break; case _OP_LOADNULLS: if((pi.op == _OP_LOADNULLS && pi._arg0+pi._arg1 == i._arg0)) { pi._arg1 = pi._arg1 + 1; pi.op = _OP_LOADNULLS; return; } break; case _OP_LINE: if(pi.op == _OP_LINE) { _instructions.pop_back(); _lineinfos.pop_back(); } break; } } _optimization = true; _instructions.push_back(i); } SQObject SQFuncState::CreateString(const SQChar *s,SQInteger len) { SQObjectPtr ns(SQString::Create(_sharedstate,s,len)); _table(_strings)->NewSlot(ns,(SQInteger)1); return ns; } SQObject SQFuncState::CreateTable() { SQObjectPtr nt(SQTable::Create(_sharedstate,0)); _table(_strings)->NewSlot(nt,(SQInteger)1); return nt; } SQFunctionProto *SQFuncState::BuildProto() { SQFunctionProto *f=SQFunctionProto::Create(_instructions.size(), _nliterals,_parameters.size(),_functions.size(),_outervalues.size(), _lineinfos.size(),_localvarinfos.size(),_defaultparams.size()); SQObjectPtr refidx,key,val; SQInteger idx; f->_stacksize = _stacksize; f->_sourcename = _sourcename; f->_bgenerator = _bgenerator; f->_name = _name; while((idx=_table(_literals)->Next(false,refidx,key,val))!=-1) { f->_literals[_integer(val)]=key; refidx=idx; } for(SQUnsignedInteger nf = 0; nf < _functions.size(); nf++) f->_functions[nf] = _functions[nf]; for(SQUnsignedInteger np = 0; np < _parameters.size(); np++) f->_parameters[np] = _parameters[np]; for(SQUnsignedInteger no = 0; no < _outervalues.size(); no++) f->_outervalues[no] = _outervalues[no]; for(SQUnsignedInteger no = 0; no < _localvarinfos.size(); no++) f->_localvarinfos[no] = _localvarinfos[no]; for(SQUnsignedInteger no = 0; no < _lineinfos.size(); no++) f->_lineinfos[no] = _lineinfos[no]; for(SQUnsignedInteger no = 0; no < _defaultparams.size(); no++) f->_defaultparams[no] = _defaultparams[no]; memcpy(f->_instructions,&_instructions[0],_instructions.size()*sizeof(SQInstruction)); f->_varparams = _varparams; return f; } SQFuncState *SQFuncState::PushChildState(SQSharedState *ss) { SQFuncState *child = (SQFuncState *)sq_malloc(sizeof(SQFuncState)); new (child) SQFuncState(ss,this,_errfunc,_errtarget); _childstates.push_back(child); return child; } void SQFuncState::PopChildState() { SQFuncState *child = _childstates.back(); sq_delete(child,SQFuncState); _childstates.pop_back(); } SQFuncState::~SQFuncState() { while(_childstates.size() > 0) { PopChildState(); } } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqfuncproto.h0000644000000000000000000001133612246102604022501 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQFUNCTION_H_ #define _SQFUNCTION_H_ #include "sqopcodes.h" enum SQOuterType { otLOCAL = 0, otSYMBOL = 1, otOUTER = 2 }; struct SQOuterVar { SQOuterVar(){} SQOuterVar(const SQObjectPtr &name,const SQObjectPtr &src,SQOuterType t) { _name = name; _src=src; _type=t; } SQOuterVar(const SQOuterVar &ov) { _type=ov._type; _src=ov._src; _name=ov._name; } SQOuterType _type; SQObjectPtr _name; SQObjectPtr _src; }; struct SQLocalVarInfo { SQLocalVarInfo():_start_op(0),_end_op(0){} SQLocalVarInfo(const SQLocalVarInfo &lvi) { _name=lvi._name; _start_op=lvi._start_op; _end_op=lvi._end_op; _pos=lvi._pos; } SQObjectPtr _name; SQUnsignedInteger _start_op; SQUnsignedInteger _end_op; SQUnsignedInteger _pos; }; struct SQLineInfo { SQInteger _line;SQInteger _op; }; typedef sqvector SQOuterVarVec; typedef sqvector SQLocalVarInfoVec; typedef sqvector SQLineInfoVec; #define _FUNC_SIZE(ni,nl,nparams,nfuncs,nouters,nlineinf,localinf,defparams) (sizeof(SQFunctionProto) \ +((ni-1)*sizeof(SQInstruction))+(nl*sizeof(SQObjectPtr)) \ +(nparams*sizeof(SQObjectPtr))+(nfuncs*sizeof(SQObjectPtr)) \ +(nouters*sizeof(SQOuterVar))+(nlineinf*sizeof(SQLineInfo)) \ +(localinf*sizeof(SQLocalVarInfo))+(defparams*sizeof(SQInteger))) #define _CONSTRUCT_VECTOR(type,size,ptr) { \ for(SQInteger n = 0; n < size; n++) { \ new (&ptr[n]) type(); \ } \ } #define _DESTRUCT_VECTOR(type,size,ptr) { \ for(SQInteger nl = 0; nl < size; nl++) { \ ptr[nl].~type(); \ } \ } struct SQFunctionProto : public SQRefCounted { private: SQFunctionProto(){ _stacksize=0; _bgenerator=false;} public: static SQFunctionProto *Create(SQInteger ninstructions, SQInteger nliterals,SQInteger nparameters, SQInteger nfunctions,SQInteger noutervalues, SQInteger nlineinfos,SQInteger nlocalvarinfos,SQInteger ndefaultparams) { SQFunctionProto *f; //I compact the whole class and members in a single memory allocation f = (SQFunctionProto *)sq_vm_malloc(_FUNC_SIZE(ninstructions,nliterals,nparameters,nfunctions,noutervalues,nlineinfos,nlocalvarinfos,ndefaultparams)); new (f) SQFunctionProto; f->_ninstructions = ninstructions; f->_literals = (SQObjectPtr*)&f->_instructions[ninstructions]; f->_nliterals = nliterals; f->_parameters = (SQObjectPtr*)&f->_literals[nliterals]; f->_nparameters = nparameters; f->_functions = (SQObjectPtr*)&f->_parameters[nparameters]; f->_nfunctions = nfunctions; f->_outervalues = (SQOuterVar*)&f->_functions[nfunctions]; f->_noutervalues = noutervalues; f->_lineinfos = (SQLineInfo *)&f->_outervalues[noutervalues]; f->_nlineinfos = nlineinfos; f->_localvarinfos = (SQLocalVarInfo *)&f->_lineinfos[nlineinfos]; f->_nlocalvarinfos = nlocalvarinfos; f->_defaultparams = (SQInteger *)&f->_localvarinfos[nlocalvarinfos]; f->_ndefaultparams = ndefaultparams; _CONSTRUCT_VECTOR(SQObjectPtr,f->_nliterals,f->_literals); _CONSTRUCT_VECTOR(SQObjectPtr,f->_nparameters,f->_parameters); _CONSTRUCT_VECTOR(SQObjectPtr,f->_nfunctions,f->_functions); _CONSTRUCT_VECTOR(SQOuterVar,f->_noutervalues,f->_outervalues); //_CONSTRUCT_VECTOR(SQLineInfo,f->_nlineinfos,f->_lineinfos); //not required are 2 integers _CONSTRUCT_VECTOR(SQLocalVarInfo,f->_nlocalvarinfos,f->_localvarinfos); return f; } void Release(){ _DESTRUCT_VECTOR(SQObjectPtr,_nliterals,_literals); _DESTRUCT_VECTOR(SQObjectPtr,_nparameters,_parameters); _DESTRUCT_VECTOR(SQObjectPtr,_nfunctions,_functions); _DESTRUCT_VECTOR(SQOuterVar,_noutervalues,_outervalues); //_DESTRUCT_VECTOR(SQLineInfo,_nlineinfos,_lineinfos); //not required are 2 integers _DESTRUCT_VECTOR(SQLocalVarInfo,_nlocalvarinfos,_localvarinfos); SQInteger size = _FUNC_SIZE(_ninstructions,_nliterals,_nparameters,_nfunctions,_noutervalues,_nlineinfos,_nlocalvarinfos,_ndefaultparams); this->~SQFunctionProto(); sq_vm_free(this,size); } const SQChar* GetLocal(SQVM *v,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop); SQInteger GetLine(SQInstruction *curr); bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write); static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret); SQObjectPtr _sourcename; SQObjectPtr _name; SQInteger _stacksize; bool _bgenerator; bool _varparams; SQInteger _nlocalvarinfos; SQLocalVarInfo *_localvarinfos; SQInteger _nlineinfos; SQLineInfo *_lineinfos; SQInteger _nliterals; SQObjectPtr *_literals; SQInteger _nparameters; SQObjectPtr *_parameters; SQInteger _nfunctions; SQObjectPtr *_functions; SQInteger _noutervalues; SQOuterVar *_outervalues; SQInteger _ndefaultparams; SQInteger *_defaultparams; SQInteger _ninstructions; SQInstruction _instructions[1]; }; #endif //_SQFUNCTION_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqstring.h0000644000000000000000000000137312246102604021770 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTRING_H_ #define _SQSTRING_H_ inline SQHash _hashstr (const SQChar *s, size_t l) { SQHash h = (SQHash)l; /* seed */ size_t step = (l>>5)|1; /* if string is too long, don't hash all its chars */ for (; l>=step; l-=step) h = h ^ ((h<<5)+(h>>2)+(unsigned short)*(s++)); return h; } struct SQString : public SQRefCounted { SQString(){} ~SQString(){} public: static SQString *Create(SQSharedState *ss, const SQChar *, SQInteger len = -1 ); SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); void Release(); SQSharedState *_sharedstate; SQString *_next; //chain for the string table SQInteger _len; SQHash _hash; SQChar _val[1]; }; #endif //_SQSTRING_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqstate.h0000644000000000000000000001013112246102604021572 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTATE_H_ #define _SQSTATE_H_ #include "squtils.h" #include "sqobject.h" struct SQString; struct SQTable; //max number of character for a printed number #define NUMBER_MAX_CHAR 50 struct SQStringTable { SQStringTable(); ~SQStringTable(); SQString *Add(const SQChar *,SQInteger len); void Remove(SQString *); private: void Resize(SQInteger size); void AllocNodes(SQInteger size); SQString **_strings; SQUnsignedInteger _numofslots; SQUnsignedInteger _slotused; }; struct RefTable { struct RefNode { SQObjectPtr obj; SQUnsignedInteger refs; struct RefNode *next; }; RefTable(); ~RefTable(); void AddRef(SQObject &obj); SQBool Release(SQObject &obj); #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); #endif void Finalize(); private: RefNode *Get(SQObject &obj,SQHash &mainpos,RefNode **prev,bool add); RefNode *Add(SQHash mainpos,SQObject &obj); void Resize(SQUnsignedInteger size); void AllocNodes(SQUnsignedInteger size); SQUnsignedInteger _numofslots; SQUnsignedInteger _slotused; RefNode *_nodes; RefNode *_freelist; RefNode **_buckets; }; #define ADD_STRING(ss,str,len) ss->_stringtable->Add(str,len) #define REMOVE_STRING(ss,bstr) ss->_stringtable->Remove(bstr) struct SQObjectPtr; struct SQSharedState { SQSharedState(); ~SQSharedState(); void Init(); public: SQChar* GetScratchPad(SQInteger size); SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name); #ifndef NO_GARBAGE_COLLECTOR SQInteger CollectGarbage(SQVM *vm); static void MarkObject(SQObjectPtr &o,SQCollectable **chain); #endif SQObjectPtrVec *_metamethods; SQObjectPtr _metamethodsmap; SQObjectPtrVec *_systemstrings; SQObjectPtrVec *_types; SQStringTable *_stringtable; RefTable _refs_table; SQObjectPtr _registry; SQObjectPtr _consts; SQObjectPtr _constructoridx; #ifndef NO_GARBAGE_COLLECTOR SQCollectable *_gc_chain; #endif SQObjectPtr _root_vm; SQObjectPtr _table_default_delegate; static SQRegFunction _table_default_delegate_funcz[]; SQObjectPtr _array_default_delegate; static SQRegFunction _array_default_delegate_funcz[]; SQObjectPtr _string_default_delegate; static SQRegFunction _string_default_delegate_funcz[]; SQObjectPtr _number_default_delegate; static SQRegFunction _number_default_delegate_funcz[]; SQObjectPtr _generator_default_delegate; static SQRegFunction _generator_default_delegate_funcz[]; SQObjectPtr _closure_default_delegate; static SQRegFunction _closure_default_delegate_funcz[]; SQObjectPtr _thread_default_delegate; static SQRegFunction _thread_default_delegate_funcz[]; SQObjectPtr _class_default_delegate; static SQRegFunction _class_default_delegate_funcz[]; SQObjectPtr _instance_default_delegate; static SQRegFunction _instance_default_delegate_funcz[]; SQObjectPtr _weakref_default_delegate; static SQRegFunction _weakref_default_delegate_funcz[]; SQCOMPILERERROR _compilererrorhandler; SQPRINTFUNCTION _printfunc; bool _debuginfo; bool _notifyallexceptions; private: SQChar *_scratchpad; SQInteger _scratchpadsize; }; #define _sp(s) (_sharedstate->GetScratchPad(s)) #define _spval (_sharedstate->GetScratchPad(-1)) #define _table_ddel _table(_sharedstate->_table_default_delegate) #define _array_ddel _table(_sharedstate->_array_default_delegate) #define _string_ddel _table(_sharedstate->_string_default_delegate) #define _number_ddel _table(_sharedstate->_number_default_delegate) #define _generator_ddel _table(_sharedstate->_generator_default_delegate) #define _closure_ddel _table(_sharedstate->_closure_default_delegate) #define _thread_ddel _table(_sharedstate->_thread_default_delegate) #define _class_ddel _table(_sharedstate->_class_default_delegate) #define _instance_ddel _table(_sharedstate->_instance_default_delegate) #define _weakref_ddel _table(_sharedstate->_weakref_default_delegate) #ifdef SQUNICODE //rsl REAL STRING LEN #define rsl(l) ((l)<<1) #else #define rsl(l) (l) #endif extern SQObjectPtr _null_; extern SQObjectPtr _true_; extern SQObjectPtr _false_; extern SQObjectPtr _one_; extern SQObjectPtr _minusone_; bool CompileTypemask(SQIntVec &res,const SQChar *typemask); #endif //_SQSTATE_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqlexer.cpp0000644000000000000000000002751412246102604022141 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" #include #include #include "sqtable.h" #include "sqstring.h" #include "sqcompiler.h" #include "sqlexer.h" #define CUR_CHAR (_currdata) #define RETURN_TOKEN(t) { _prevtoken = _curtoken; _curtoken = t; return t;} #define IS_EOB() (CUR_CHAR <= SQUIRREL_EOB) #define NEXT() {Next();_currentcolumn++;} #define INIT_TEMP_STRING() { _longstr.resize(0);} #define APPEND_CHAR(c) { _longstr.push_back(c);} #define TERMINATE_BUFFER() {_longstr.push_back(_SC('\0'));} #define ADD_KEYWORD(key,id) _keywords->NewSlot( SQString::Create(ss, _SC(#key)) ,SQInteger(id)) SQLexer::SQLexer(){} SQLexer::~SQLexer() { _keywords->Release(); } void SQLexer::Init(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,CompilerErrorFunc efunc,void *ed) { _errfunc = efunc; _errtarget = ed; _sharedstate = ss; _keywords = SQTable::Create(ss, 26); ADD_KEYWORD(while, TK_WHILE); ADD_KEYWORD(do, TK_DO); ADD_KEYWORD(if, TK_IF); ADD_KEYWORD(else, TK_ELSE); ADD_KEYWORD(break, TK_BREAK); ADD_KEYWORD(continue, TK_CONTINUE); ADD_KEYWORD(return, TK_RETURN); ADD_KEYWORD(null, TK_NULL); ADD_KEYWORD(function, TK_FUNCTION); ADD_KEYWORD(local, TK_LOCAL); ADD_KEYWORD(for, TK_FOR); ADD_KEYWORD(foreach, TK_FOREACH); ADD_KEYWORD(in, TK_IN); ADD_KEYWORD(typeof, TK_TYPEOF); ADD_KEYWORD(delegate, TK_DELEGATE); ADD_KEYWORD(delete, TK_DELETE); ADD_KEYWORD(try, TK_TRY); ADD_KEYWORD(catch, TK_CATCH); ADD_KEYWORD(throw, TK_THROW); ADD_KEYWORD(clone, TK_CLONE); ADD_KEYWORD(yield, TK_YIELD); ADD_KEYWORD(resume, TK_RESUME); ADD_KEYWORD(switch, TK_SWITCH); ADD_KEYWORD(case, TK_CASE); ADD_KEYWORD(default, TK_DEFAULT); ADD_KEYWORD(this, TK_THIS); ADD_KEYWORD(parent,TK_PARENT); ADD_KEYWORD(class,TK_CLASS); ADD_KEYWORD(extends,TK_EXTENDS); ADD_KEYWORD(constructor,TK_CONSTRUCTOR); ADD_KEYWORD(instanceof,TK_INSTANCEOF); ADD_KEYWORD(vargc,TK_VARGC); ADD_KEYWORD(vargv,TK_VARGV); ADD_KEYWORD(true,TK_TRUE); ADD_KEYWORD(false,TK_FALSE); ADD_KEYWORD(static,TK_STATIC); ADD_KEYWORD(enum,TK_ENUM); ADD_KEYWORD(const,TK_CONST); _readf = rg; _up = up; _lasttokenline = _currentline = 1; _currentcolumn = 0; _prevtoken = -1; Next(); } void SQLexer::Error(const SQChar *err) { _errfunc(_errtarget,err); } void SQLexer::Next() { SQInteger t = _readf(_up); if(t > MAX_CHAR) Error(_SC("Invalid character")); if(t != 0) { _currdata = (LexChar)t; return; } _currdata = SQUIRREL_EOB; } const SQChar *SQLexer::Tok2Str(SQInteger tok) { SQObjectPtr itr, key, val; SQInteger nitr; while((nitr = _keywords->Next(false,itr, key, val)) != -1) { itr = (SQInteger)nitr; if(((SQInteger)_integer(val)) == tok) return _stringval(key); } return NULL; } void SQLexer::LexBlockComment() { bool done = false; while(!done) { switch(CUR_CHAR) { case _SC('*'): { NEXT(); if(CUR_CHAR == _SC('/')) { done = true; NEXT(); }}; continue; case _SC('\n'): _currentline++; NEXT(); continue; case SQUIRREL_EOB: Error(_SC("missing \"*/\" in comment")); default: NEXT(); } } } SQInteger SQLexer::Lex() { _lasttokenline = _currentline; while(CUR_CHAR != SQUIRREL_EOB) { switch(CUR_CHAR){ case _SC('\t'): case _SC('\r'): case _SC(' '): NEXT(); continue; case _SC('\n'): _currentline++; _prevtoken=_curtoken; _curtoken=_SC('\n'); NEXT(); _currentcolumn=1; continue; case _SC('/'): NEXT(); switch(CUR_CHAR){ case _SC('*'): NEXT(); LexBlockComment(); continue; case _SC('/'): do { NEXT(); } while (CUR_CHAR != _SC('\n') && (!IS_EOB())); continue; case _SC('='): NEXT(); RETURN_TOKEN(TK_DIVEQ); continue; case _SC('>'): NEXT(); RETURN_TOKEN(TK_ATTR_CLOSE); continue; default: RETURN_TOKEN('/'); } case _SC('='): NEXT(); if (CUR_CHAR != _SC('=')){ RETURN_TOKEN('=') } else { NEXT(); RETURN_TOKEN(TK_EQ); } case _SC('<'): NEXT(); if ( CUR_CHAR == _SC('=') ) { NEXT(); RETURN_TOKEN(TK_LE) } else if ( CUR_CHAR == _SC('-') ) { NEXT(); RETURN_TOKEN(TK_NEWSLOT); } else if ( CUR_CHAR == _SC('<') ) { NEXT(); RETURN_TOKEN(TK_SHIFTL); } else if ( CUR_CHAR == _SC('/') ) { NEXT(); RETURN_TOKEN(TK_ATTR_OPEN); } //else if ( CUR_CHAR == _SC('[') ) { NEXT(); ReadMultilineString(); RETURN_TOKEN(TK_STRING_LITERAL); } else { RETURN_TOKEN('<') } case _SC('>'): NEXT(); if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_GE);} else if(CUR_CHAR == _SC('>')){ NEXT(); if(CUR_CHAR == _SC('>')){ NEXT(); RETURN_TOKEN(TK_USHIFTR); } RETURN_TOKEN(TK_SHIFTR); } else { RETURN_TOKEN('>') } case _SC('!'): NEXT(); if (CUR_CHAR != _SC('=')){ RETURN_TOKEN('!')} else { NEXT(); RETURN_TOKEN(TK_NE); } case _SC('@'): { SQInteger stype; NEXT(); if(CUR_CHAR != _SC('"')) Error(_SC("string expected")); if((stype=ReadString(_SC('"'),true))!=-1) { RETURN_TOKEN(stype); } Error(_SC("error parsing the string")); } case _SC('"'): case _SC('\''): { SQInteger stype; if((stype=ReadString(CUR_CHAR,false))!=-1){ RETURN_TOKEN(stype); } Error(_SC("error parsing the string")); } case _SC('{'): case _SC('}'): case _SC('('): case _SC(')'): case _SC('['): case _SC(']'): case _SC(';'): case _SC(','): case _SC('?'): case _SC('^'): case _SC('~'): {SQInteger ret = CUR_CHAR; NEXT(); RETURN_TOKEN(ret); } case _SC('.'): NEXT(); if (CUR_CHAR != _SC('.')){ RETURN_TOKEN('.') } NEXT(); if (CUR_CHAR != _SC('.')){ Error(_SC("invalid token '..'")); } NEXT(); RETURN_TOKEN(TK_VARPARAMS); case _SC('&'): NEXT(); if (CUR_CHAR != _SC('&')){ RETURN_TOKEN('&') } else { NEXT(); RETURN_TOKEN(TK_AND); } case _SC('|'): NEXT(); if (CUR_CHAR != _SC('|')){ RETURN_TOKEN('|') } else { NEXT(); RETURN_TOKEN(TK_OR); } case _SC(':'): NEXT(); if (CUR_CHAR != _SC(':')){ RETURN_TOKEN(':') } else { NEXT(); RETURN_TOKEN(TK_DOUBLE_COLON); } case _SC('*'): NEXT(); if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_MULEQ);} else RETURN_TOKEN('*'); case _SC('%'): NEXT(); if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_MODEQ);} else RETURN_TOKEN('%'); case _SC('-'): NEXT(); if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_MINUSEQ);} else if (CUR_CHAR == _SC('-')){ NEXT(); RETURN_TOKEN(TK_MINUSMINUS);} else RETURN_TOKEN('-'); case _SC('+'): NEXT(); if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_PLUSEQ);} else if (CUR_CHAR == _SC('+')){ NEXT(); RETURN_TOKEN(TK_PLUSPLUS);} else RETURN_TOKEN('+'); case SQUIRREL_EOB: return 0; default:{ if (scisdigit(CUR_CHAR)) { SQInteger ret = ReadNumber(); RETURN_TOKEN(ret); } else if (scisalpha(CUR_CHAR) || CUR_CHAR == _SC('_')) { SQInteger t = ReadID(); RETURN_TOKEN(t); } else { SQInteger c = CUR_CHAR; if (sciscntrl((int)c)) Error(_SC("unexpected character(control)")); NEXT(); RETURN_TOKEN(c); } RETURN_TOKEN(0); } } } return 0; } SQInteger SQLexer::GetIDType(SQChar *s) { SQObjectPtr t; if(_keywords->Get(SQString::Create(_sharedstate, s), t)) { return SQInteger(_integer(t)); } return TK_IDENTIFIER; } SQInteger SQLexer::ReadString(SQChar ndelim,bool verbatim) { INIT_TEMP_STRING(); NEXT(); if(IS_EOB()) return -1; for(;;) { while(CUR_CHAR != ndelim) { switch(CUR_CHAR) { case SQUIRREL_EOB: Error(_SC("unfinished string")); return -1; case _SC('\n'): if(!verbatim) Error(_SC("newline in a constant")); APPEND_CHAR(CUR_CHAR); NEXT(); _currentline++; break; case _SC('\\'): if(verbatim) { APPEND_CHAR('\\'); NEXT(); } else { NEXT(); switch(CUR_CHAR) { case _SC('x'): NEXT(); { if(!isxdigit(CUR_CHAR)) Error(_SC("hexadecimal number expected")); const SQInteger maxdigits = 4; SQChar temp[maxdigits+1]; SQInteger n = 0; while(isxdigit(CUR_CHAR) && n < maxdigits) { temp[n] = CUR_CHAR; n++; NEXT(); } temp[n] = 0; SQChar *sTemp; APPEND_CHAR((SQChar)scstrtoul(temp,&sTemp,16)); } break; case _SC('t'): APPEND_CHAR(_SC('\t')); NEXT(); break; case _SC('a'): APPEND_CHAR(_SC('\a')); NEXT(); break; case _SC('b'): APPEND_CHAR(_SC('\b')); NEXT(); break; case _SC('n'): APPEND_CHAR(_SC('\n')); NEXT(); break; case _SC('r'): APPEND_CHAR(_SC('\r')); NEXT(); break; case _SC('v'): APPEND_CHAR(_SC('\v')); NEXT(); break; case _SC('f'): APPEND_CHAR(_SC('\f')); NEXT(); break; case _SC('0'): APPEND_CHAR(_SC('\0')); NEXT(); break; case _SC('\\'): APPEND_CHAR(_SC('\\')); NEXT(); break; case _SC('"'): APPEND_CHAR(_SC('"')); NEXT(); break; case _SC('\''): APPEND_CHAR(_SC('\'')); NEXT(); break; default: Error(_SC("unrecognised escaper char")); break; } } break; default: APPEND_CHAR(CUR_CHAR); NEXT(); } } NEXT(); if(verbatim && CUR_CHAR == '"') { //double quotation APPEND_CHAR(CUR_CHAR); NEXT(); } else { break; } } TERMINATE_BUFFER(); SQInteger len = _longstr.size()-1; if(ndelim == _SC('\'')) { if(len == 0) Error(_SC("empty constant")); if(len > 1) Error(_SC("constant too long")); _nvalue = _longstr[0]; return TK_INTEGER; } _svalue = &_longstr[0]; return TK_STRING_LITERAL; } void LexHexadecimal(const SQChar *s,SQUnsignedInteger *res) { *res = 0; while(*s != 0) { if(scisdigit(*s)) *res = (*res)*16+((*s++)-'0'); else if(scisxdigit(*s)) *res = (*res)*16+(toupper(*s++)-'A'+10); else { assert(0); } } } void LexInteger(const SQChar *s,SQUnsignedInteger *res) { *res = 0; while(*s != 0) { *res = (*res)*10+((*s++)-'0'); } } SQInteger scisodigit(SQChar c) { return c >= _SC('0') && c <= _SC('7'); } void LexOctal(const SQChar *s,SQUnsignedInteger *res) { *res = 0; while(*s != 0) { if(scisodigit(*s)) *res = (*res)*8+((*s++)-'0'); else { assert(0); } } } SQInteger isexponent(SQInteger c) { return c == 'e' || c=='E'; } #define MAX_HEX_DIGITS (sizeof(SQInteger)*2) SQInteger SQLexer::ReadNumber() { #define TINT 1 #define TFLOAT 2 #define THEX 3 #define TSCIENTIFIC 4 #define TOCTAL 5 SQInteger type = TINT, firstchar = CUR_CHAR; SQChar *sTemp; INIT_TEMP_STRING(); NEXT(); if(firstchar == _SC('0') && (toupper(CUR_CHAR) == _SC('X') || scisodigit(CUR_CHAR)) ) { if(scisodigit(CUR_CHAR)) { type = TOCTAL; while(scisodigit(CUR_CHAR)) { APPEND_CHAR(CUR_CHAR); NEXT(); } if(scisdigit(CUR_CHAR)) Error(_SC("invalid octal number")); } else { NEXT(); type = THEX; while(isxdigit(CUR_CHAR)) { APPEND_CHAR(CUR_CHAR); NEXT(); } if(_longstr.size() > MAX_HEX_DIGITS) Error(_SC("too many digits for an Hex number")); } } else { APPEND_CHAR((int)firstchar); while (CUR_CHAR == _SC('.') || scisdigit(CUR_CHAR) || isexponent(CUR_CHAR)) { if(CUR_CHAR == _SC('.') || isexponent(CUR_CHAR)) type = TFLOAT; if(isexponent(CUR_CHAR)) { if(type != TFLOAT) Error(_SC("invalid numeric format")); type = TSCIENTIFIC; APPEND_CHAR(CUR_CHAR); NEXT(); if(CUR_CHAR == '+' || CUR_CHAR == '-'){ APPEND_CHAR(CUR_CHAR); NEXT(); } if(!scisdigit(CUR_CHAR)) Error(_SC("exponent expected")); } APPEND_CHAR(CUR_CHAR); NEXT(); } } TERMINATE_BUFFER(); switch(type) { case TSCIENTIFIC: case TFLOAT: _fvalue = (SQFloat)scstrtod(&_longstr[0],&sTemp); return TK_FLOAT; case TINT: LexInteger(&_longstr[0],(SQUnsignedInteger *)&_nvalue); return TK_INTEGER; case THEX: LexHexadecimal(&_longstr[0],(SQUnsignedInteger *)&_nvalue); return TK_INTEGER; case TOCTAL: LexOctal(&_longstr[0],(SQUnsignedInteger *)&_nvalue); return TK_INTEGER; } return 0; } SQInteger SQLexer::ReadID() { SQInteger res; INIT_TEMP_STRING(); do { APPEND_CHAR(CUR_CHAR); NEXT(); } while(scisalnum(CUR_CHAR) || CUR_CHAR == _SC('_')); TERMINATE_BUFFER(); res = GetIDType(&_longstr[0]); if(res == TK_IDENTIFIER || res == TK_CONSTRUCTOR) { _svalue = &_longstr[0]; } return res; } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqcompiler.h0000644000000000000000000000334312246102604022273 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQCOMPILER_H_ #define _SQCOMPILER_H_ struct SQVM; #define TK_IDENTIFIER 258 #define TK_STRING_LITERAL 259 #define TK_INTEGER 260 #define TK_FLOAT 261 #define TK_DELEGATE 262 #define TK_DELETE 263 #define TK_EQ 264 #define TK_NE 265 #define TK_LE 266 #define TK_GE 267 #define TK_SWITCH 268 #define TK_ARROW 269 #define TK_AND 270 #define TK_OR 271 #define TK_IF 272 #define TK_ELSE 273 #define TK_WHILE 274 #define TK_BREAK 275 #define TK_FOR 276 #define TK_DO 277 #define TK_NULL 278 #define TK_FOREACH 279 #define TK_IN 280 #define TK_NEWSLOT 281 #define TK_MODULO 282 #define TK_LOCAL 283 #define TK_CLONE 284 #define TK_FUNCTION 285 #define TK_RETURN 286 #define TK_TYPEOF 287 #define TK_UMINUS 288 #define TK_PLUSEQ 289 #define TK_MINUSEQ 290 #define TK_CONTINUE 291 #define TK_YIELD 292 #define TK_TRY 293 #define TK_CATCH 294 #define TK_THROW 295 #define TK_SHIFTL 296 #define TK_SHIFTR 297 #define TK_RESUME 298 #define TK_DOUBLE_COLON 299 #define TK_CASE 300 #define TK_DEFAULT 301 #define TK_THIS 302 #define TK_PLUSPLUS 303 #define TK_MINUSMINUS 304 #define TK_PARENT 305 #define TK_USHIFTR 306 #define TK_CLASS 307 #define TK_EXTENDS 308 #define TK_CONSTRUCTOR 310 #define TK_INSTANCEOF 311 #define TK_VARPARAMS 312 #define TK_VARGC 313 #define TK_VARGV 314 #define TK_TRUE 315 #define TK_FALSE 316 #define TK_MULEQ 317 #define TK_DIVEQ 318 #define TK_MODEQ 319 #define TK_ATTR_OPEN 320 #define TK_ATTR_CLOSE 321 #define TK_STATIC 322 #define TK_ENUM 323 #define TK_CONST 324 typedef void(*CompilerErrorFunc)(void *ud, const SQChar *s); bool Compile(SQVM *vm, SQLEXREADFUNC rg, SQUserPointer up, const SQChar *sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo); #endif //_SQCOMPILER_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqpcheader.h0000644000000000000000000000054612246102604022236 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQPCHEADER_H_ #define _SQPCHEADER_H_ #if defined(_MSC_VER) && defined(_DEBUG) #include #endif #include #include #include #include #include //squirrel stuff #include #include "sqobject.h" #include "sqstate.h" #endif //_SQPCHEADER_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqapi.cpp0000644000000000000000000007356712246102604021604 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include "sqpcheader.h" #include "sqvm.h" #include "sqstring.h" #include "sqtable.h" #include "sqarray.h" #include "sqfuncproto.h" #include "sqclosure.h" #include "squserdata.h" #include "sqcompiler.h" #include "sqfuncstate.h" #include "sqclass.h" bool sq_aux_gettypedarg(HSQUIRRELVM v,SQInteger idx,SQObjectType type,SQObjectPtr **o) { *o = &stack_get(v,idx); if(type(**o) != type){ SQObjectPtr oval = v->PrintObjVal(**o); v->Raise_Error(_SC("wrong argument type, expected '%s' got '%.50s'"),IdType2Name(type),_stringval(oval)); return false; } return true; } #define _GETSAFE_OBJ(v,idx,type,o) { if(!sq_aux_gettypedarg(v,idx,type,&o)) return SQ_ERROR; } #define sq_aux_paramscheck(v,count) \ { \ if(sq_gettop(v) < count){ v->Raise_Error(_SC("not enough params in the stack")); return SQ_ERROR; }\ } SQInteger sq_aux_throwobject(HSQUIRRELVM v,SQObjectPtr &e) { v->_lasterror = e; return SQ_ERROR; } SQInteger sq_aux_invalidtype(HSQUIRRELVM v,SQObjectType type) { scsprintf(_ss(v)->GetScratchPad(100), _SC("unexpected type %s"), IdType2Name(type)); return sq_throwerror(v, _ss(v)->GetScratchPad(-1)); } HSQUIRRELVM sq_open(SQInteger initialstacksize) { SQSharedState *ss; SQVM *v; sq_new(ss, SQSharedState); ss->Init(); v = (SQVM *)SQ_MALLOC(sizeof(SQVM)); new (v) SQVM(ss); ss->_root_vm = v; if(v->Init(NULL, initialstacksize)) { return v; } else { sq_delete(v, SQVM); return NULL; } return v; } HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize) { SQSharedState *ss; SQVM *v; ss=_ss(friendvm); v= (SQVM *)SQ_MALLOC(sizeof(SQVM)); new (v) SQVM(ss); if(v->Init(friendvm, initialstacksize)) { friendvm->Push(v); return v; } else { sq_delete(v, SQVM); return NULL; } } SQInteger sq_getvmstate(HSQUIRRELVM v) { if(v->_suspended) return SQ_VMSTATE_SUSPENDED; else { if(v->_callsstacksize != 0) return SQ_VMSTATE_RUNNING; else return SQ_VMSTATE_IDLE; } } void sq_decreaseops(HSQUIRRELVM v, int amount) { v->DecreaseOps(amount); } bool sq_can_suspend(HSQUIRRELVM v) { return v->_nnativecalls <= 2; } void sq_seterrorhandler(HSQUIRRELVM v) { SQObject o = stack_get(v, -1); if(sq_isclosure(o) || sq_isnativeclosure(o) || sq_isnull(o)) { v->_errorhandler = o; v->Pop(); } } void sq_setdebughook(HSQUIRRELVM v) { SQObject o = stack_get(v,-1); if(sq_isclosure(o) || sq_isnativeclosure(o) || sq_isnull(o)) { v->_debughook = o; v->Pop(); } } void sq_close(HSQUIRRELVM v) { SQSharedState *ss = _ss(v); _thread(ss->_root_vm)->Finalize(); sq_delete(ss, SQSharedState); } SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror) { SQObjectPtr o; if(Compile(v, read, p, sourcename, o, raiseerror?true:false, _ss(v)->_debuginfo)) { v->Push(SQClosure::Create(_ss(v), _funcproto(o))); return SQ_OK; } return SQ_ERROR; } void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable) { _ss(v)->_debuginfo = enable?true:false; } void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable) { _ss(v)->_notifyallexceptions = enable?true:false; } void sq_addref(HSQUIRRELVM v,HSQOBJECT *po) { if(!ISREFCOUNTED(type(*po))) return; #ifdef NO_GARBAGE_COLLECTOR __AddRef(po->_type,po->_unVal); #else _ss(v)->_refs_table.AddRef(*po); #endif } SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po) { if(!ISREFCOUNTED(type(*po))) return SQTrue; #ifdef NO_GARBAGE_COLLECTOR __Release(po->_type,po->_unVal); return SQFalse; //the ret val doesn't work(and cannot be fixed) #else return _ss(v)->_refs_table.Release(*po); #endif } const SQChar *sq_objtostring(HSQOBJECT *o) { if(sq_type(*o) == OT_STRING) { return _stringval(*o); } return NULL; } SQInteger sq_objtointeger(HSQOBJECT *o) { if(sq_isnumeric(*o)) { return tointeger(*o); } return 0; } SQFloat sq_objtofloat(HSQOBJECT *o) { if(sq_isnumeric(*o)) { return tofloat(*o); } return 0; } SQBool sq_objtobool(HSQOBJECT *o) { if(sq_isbool(*o)) { return _integer(*o); } return SQFalse; } void sq_pushnull(HSQUIRRELVM v) { v->Push(_null_); } void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len) { if(s) v->Push(SQObjectPtr(SQString::Create(_ss(v), s, len))); else v->Push(_null_); } void sq_pushinteger(HSQUIRRELVM v,SQInteger n) { v->Push(n); } void sq_pushbool(HSQUIRRELVM v,SQBool b) { v->Push(b?true:false); } void sq_pushfloat(HSQUIRRELVM v,SQFloat n) { v->Push(n); } void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p) { v->Push(p); } SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size) { SQUserData *ud = SQUserData::Create(_ss(v), size); v->Push(ud); return ud->_val; } void sq_newtable(HSQUIRRELVM v) { v->Push(SQTable::Create(_ss(v), 0)); } void sq_newarray(HSQUIRRELVM v,SQInteger size) { v->Push(SQArray::Create(_ss(v), size)); } SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase) { SQClass *baseclass = NULL; if(hasbase) { SQObjectPtr &base = stack_get(v,-1); if(type(base) != OT_CLASS) return sq_throwerror(v,_SC("invalid base type")); baseclass = _class(base); } SQClass *newclass = SQClass::Create(_ss(v), baseclass); if(baseclass) v->Pop(); v->Push(newclass); return SQ_OK; } SQBool sq_instanceof(HSQUIRRELVM v) { SQObjectPtr &inst = stack_get(v,-1); SQObjectPtr &cl = stack_get(v,-2); if(type(inst) != OT_INSTANCE || type(cl) != OT_CLASS) return sq_throwerror(v,_SC("invalid param type")); return _instance(inst)->InstanceOf(_class(cl))?SQTrue:SQFalse; } SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx) { sq_aux_paramscheck(v,2); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); _array(*arr)->Append(v->GetUp(-1)); v->Pop(1); return SQ_OK; } SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); if(_array(*arr)->Size() > 0) { if(pushval != 0){ v->Push(_array(*arr)->Top()); } _array(*arr)->Pop(); return SQ_OK; } return sq_throwerror(v, _SC("empty array")); } SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize) { sq_aux_paramscheck(v,1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); if(newsize >= 0) { _array(*arr)->Resize(newsize); return SQ_OK; } return sq_throwerror(v,_SC("negative size")); } SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx) { sq_aux_paramscheck(v, 1); SQObjectPtr *o; _GETSAFE_OBJ(v, idx, OT_ARRAY,o); SQArray *arr = _array(*o); if(arr->Size() > 0) { SQObjectPtr t; SQInteger size = arr->Size(); SQInteger n = size >> 1; size -= 1; for(SQInteger i = 0; i < n; i++) { t = arr->_values[i]; arr->_values[i] = arr->_values[size-i]; arr->_values[size-i] = t; } return SQ_OK; } return SQ_OK; } SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); return _array(*arr)->Remove(itemidx) ? SQ_OK : sq_throwerror(v,_SC("index out of range")); } SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); SQRESULT ret = _array(*arr)->Insert(destpos, v->GetUp(-1)) ? SQ_OK : sq_throwerror(v,_SC("index out of range")); v->Pop(); return ret; } void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars) { SQNativeClosure *nc = SQNativeClosure::Create(_ss(v), func); nc->_nparamscheck = 0; for(SQUnsignedInteger i = 0; i < nfreevars; i++) { nc->_outervalues.push_back(v->Top()); v->Pop(); } v->Push(SQObjectPtr(nc)); } SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars) { SQObject o = stack_get(v, idx); if(sq_isclosure(o)) { SQClosure *c = _closure(o); SQFunctionProto *proto = _funcproto(c->_function); *nparams = (SQUnsignedInteger)proto->_nparameters; *nfreevars = (SQUnsignedInteger)c->_outervalues.size(); return SQ_OK; } return sq_throwerror(v,_SC("the object is not a closure")); } SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name) { SQObject o = stack_get(v, idx); if(sq_isnativeclosure(o)) { SQNativeClosure *nc = _nativeclosure(o); nc->_name = SQString::Create(_ss(v),name); return SQ_OK; } return sq_throwerror(v,_SC("the object is not a nativeclosure")); } SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask) { SQObject o = stack_get(v, -1); if(!sq_isnativeclosure(o)) return sq_throwerror(v, _SC("native closure expected")); SQNativeClosure *nc = _nativeclosure(o); nc->_nparamscheck = nparamscheck; if(typemask) { SQIntVec res; if(!CompileTypemask(res, typemask)) return sq_throwerror(v, _SC("invalid typemask")); nc->_typecheck.copy(res); } else { nc->_typecheck.resize(0); } if(nparamscheck == SQ_MATCHTYPEMASKSTRING) { nc->_nparamscheck = nc->_typecheck.size(); } return SQ_OK; } SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); if(!sq_isnativeclosure(o) && !sq_isclosure(o)) return sq_throwerror(v,_SC("the target is not a closure")); SQObjectPtr &env = stack_get(v,-1); if(!sq_istable(env) && !sq_isclass(env) && !sq_isinstance(env)) return sq_throwerror(v,_SC("invalid environment")); SQObjectPtr w = _refcounted(env)->GetWeakRef(type(env)); SQObjectPtr ret; if(sq_isclosure(o)) { SQClosure *c = _closure(o)->Clone(); c->_env = w; ret = c; } else { //then must be a native closure SQNativeClosure *c = _nativeclosure(o)->Clone(); c->_env = w; ret = c; } v->Pop(); v->Push(ret); return SQ_OK; } SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx) { SQObject &o=stack_get(v,idx); switch(type(o)) { case OT_TABLE: _table(o)->Clear(); break; case OT_ARRAY: _array(o)->Resize(0); break; default: return sq_throwerror(v, _SC("clear only works on table and array")); break; } return SQ_OK; } void sq_pushroottable(HSQUIRRELVM v) { v->Push(v->_roottable); } void sq_pushregistrytable(HSQUIRRELVM v) { v->Push(_ss(v)->_registry); } void sq_pushconsttable(HSQUIRRELVM v) { v->Push(_ss(v)->_consts); } SQRESULT sq_setroottable(HSQUIRRELVM v) { SQObject o = stack_get(v, -1); if(sq_istable(o) || sq_isnull(o)) { v->_roottable = o; v->Pop(); return SQ_OK; } return sq_throwerror(v, _SC("ivalid type")); } SQRESULT sq_setconsttable(HSQUIRRELVM v) { SQObject o = stack_get(v, -1); if(sq_istable(o)) { _ss(v)->_consts = o; v->Pop(); return SQ_OK; } return sq_throwerror(v, _SC("ivalid type, expected table")); } void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p) { v->_foreignptr = p; } SQUserPointer sq_getforeignptr(HSQUIRRELVM v) { return v->_foreignptr; } void sq_push(HSQUIRRELVM v,SQInteger idx) { v->Push(stack_get(v, idx)); } SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx) { return type(stack_get(v, idx)); } void sq_tostring(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectPtr res; v->ToString(o,res); v->Push(res); } void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b) { SQObjectPtr &o = stack_get(v, idx); *b = v->IsFalse(o)?SQFalse:SQTrue; } SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i) { SQObjectPtr &o = stack_get(v, idx); if(sq_isnumeric(o)) { *i = tointeger(o); return SQ_OK; } return SQ_ERROR; } SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f) { SQObjectPtr &o = stack_get(v, idx); if(sq_isnumeric(o)) { *f = tofloat(o); return SQ_OK; } return SQ_ERROR; } SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b) { SQObjectPtr &o = stack_get(v, idx); if(sq_isbool(o)) { *b = _integer(o); return SQ_OK; } return SQ_ERROR; } SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_STRING,o); *c = _stringval(*o); return SQ_OK; } SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_THREAD,o); *thread = _thread(*o); return SQ_OK; } SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); v->Push(_null_); if(!v->Clone(o, stack_get(v, -1))){ v->Pop(); return sq_aux_invalidtype(v, type(o)); } return SQ_OK; } SQInteger sq_getsize(HSQUIRRELVM v, SQInteger idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectType type = type(o); switch(type) { case OT_STRING: return _string(o)->_len; case OT_TABLE: return _table(o)->CountUsed(); case OT_ARRAY: return _array(o)->Size(); case OT_USERDATA: return _userdata(o)->_size; case OT_INSTANCE: return _instance(o)->_class->_udsize; case OT_CLASS: return _class(o)->_udsize; default: return sq_aux_invalidtype(v, type); } } SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_USERDATA,o); (*p) = _userdataval(*o); if(typetag) *typetag = _userdata(*o)->_typetag; return SQ_OK; } SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag) { SQObjectPtr &o = stack_get(v,idx); switch(type(o)) { case OT_USERDATA: _userdata(o)->_typetag = typetag; break; case OT_CLASS: _class(o)->_typetag = typetag; break; default: return sq_throwerror(v,_SC("invalid object type")); } return SQ_OK; } SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag) { switch(type(*o)) { case OT_INSTANCE: *typetag = _instance(*o)->_class->_typetag; break; case OT_USERDATA: *typetag = _userdata(*o)->_typetag; break; case OT_CLASS: *typetag = _class(*o)->_typetag; break; default: return SQ_ERROR; } return SQ_OK; } SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag) { SQObjectPtr &o = stack_get(v,idx); if(SQ_FAILED(sq_getobjtypetag(&o,typetag))) return sq_throwerror(v,_SC("invalid object type")); return SQ_OK; } SQRESULT sq_getuserpointer(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_USERPOINTER,o); (*p) = _userpointer(*o); return SQ_OK; } SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p) { SQObjectPtr &o = stack_get(v,idx); if(type(o) != OT_INSTANCE) return sq_throwerror(v,_SC("the object is not a class instance")); _instance(o)->_userpointer = p; return SQ_OK; } SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize) { SQObjectPtr &o = stack_get(v,idx); if(type(o) != OT_CLASS) return sq_throwerror(v,_SC("the object is not a class")); if(_class(o)->_locked) return sq_throwerror(v,_SC("the class is locked")); _class(o)->_udsize = udsize; return SQ_OK; } SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag) { SQObjectPtr &o = stack_get(v,idx); if(type(o) != OT_INSTANCE) return sq_throwerror(v,_SC("the object is not a class instance")); (*p) = _instance(o)->_userpointer; if(typetag != 0) { SQClass *cl = _instance(o)->_class; do{ if(cl->_typetag == typetag) return SQ_OK; cl = cl->_base; }while(cl != NULL); return sq_throwerror(v,_SC("invalid type tag")); } return SQ_OK; } SQInteger sq_gettop(HSQUIRRELVM v) { return (v->_top) - v->_stackbase; } void sq_settop(HSQUIRRELVM v, SQInteger newtop) { SQInteger top = sq_gettop(v); if(top > newtop) sq_pop(v, top - newtop); else while(top++ < newtop) sq_pushnull(v); } void sq_pop(HSQUIRRELVM v, SQInteger nelemstopop) { assert(v->_top >= nelemstopop); v->Pop(nelemstopop); } void sq_poptop(HSQUIRRELVM v) { assert(v->_top >= 1); v->Pop(); } void sq_remove(HSQUIRRELVM v, SQInteger idx) { v->Remove(idx); } SQInteger sq_cmp(HSQUIRRELVM v) { SQInteger res; v->ObjCmp(stack_get(v, -1), stack_get(v, -2),res); return res; } SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic) { sq_aux_paramscheck(v, 3); SQObjectPtr &self = stack_get(v, idx); if(type(self) == OT_TABLE || type(self) == OT_CLASS) { SQObjectPtr &key = v->GetUp(-2); if(type(key) == OT_NULL) return sq_throwerror(v, _SC("null is not a valid key")); v->NewSlot(self, key, v->GetUp(-1),bstatic?true:false); v->Pop(2); } return SQ_OK; } SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) { sq_aux_paramscheck(v, 2); SQObjectPtr *self; _GETSAFE_OBJ(v, idx, OT_TABLE,self); SQObjectPtr &key = v->GetUp(-1); if(type(key) == OT_NULL) return sq_throwerror(v, _SC("null is not a valid key")); SQObjectPtr res; if(!v->DeleteSlot(*self, key, res)){ return SQ_ERROR; } if(pushval) v->GetUp(-1) = res; else v->Pop(1); return SQ_OK; } SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); if(v->Set(self, v->GetUp(-2), v->GetUp(-1),false)) { v->Pop(2); return SQ_OK; } v->Raise_IdxError(v->GetUp(-2));return SQ_ERROR; } SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); if(type(v->GetUp(-2)) == OT_NULL) return sq_throwerror(v, _SC("null key")); switch(type(self)) { case OT_TABLE: _table(self)->NewSlot(v->GetUp(-2), v->GetUp(-1)); v->Pop(2); return SQ_OK; break; case OT_CLASS: _class(self)->NewSlot(_ss(v), v->GetUp(-2), v->GetUp(-1),false); v->Pop(2); return SQ_OK; break; case OT_INSTANCE: if(_instance(self)->Set(v->GetUp(-2), v->GetUp(-1))) { v->Pop(2); return SQ_OK; } break; case OT_ARRAY: if(v->Set(self, v->GetUp(-2), v->GetUp(-1),false)) { v->Pop(2); return SQ_OK; } break; default: v->Pop(2); return sq_throwerror(v, _SC("rawset works only on array/table/class and instance")); } v->Raise_IdxError(v->GetUp(-2));return SQ_ERROR; } SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); SQObjectPtr &mt = v->GetUp(-1); SQObjectType type = type(self); switch(type) { case OT_TABLE: if(type(mt) == OT_TABLE) { if(!_table(self)->SetDelegate(_table(mt))) return sq_throwerror(v, _SC("delagate cycle")); v->Pop();} else if(type(mt)==OT_NULL) { _table(self)->SetDelegate(NULL); v->Pop(); } else return sq_aux_invalidtype(v,type); break; case OT_USERDATA: if(type(mt)==OT_TABLE) { _userdata(self)->SetDelegate(_table(mt)); v->Pop(); } else if(type(mt)==OT_NULL) { _userdata(self)->SetDelegate(NULL); v->Pop(); } else return sq_aux_invalidtype(v, type); break; default: return sq_aux_invalidtype(v, type); break; } return SQ_OK; } SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) { sq_aux_paramscheck(v, 2); SQObjectPtr *self; _GETSAFE_OBJ(v, idx, OT_TABLE,self); SQObjectPtr &key = v->GetUp(-1); SQObjectPtr t; if(_table(*self)->Get(key,t)) { _table(*self)->Remove(key); } if(pushval != 0) { if(pushval) v->GetUp(-1) = t; } else { v->Pop(1); } return SQ_OK; } SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); switch(type(self)){ case OT_TABLE: case OT_USERDATA: if(!_delegable(self)->_delegate){ v->Push(_null_); break; } v->Push(SQObjectPtr(_delegable(self)->_delegate)); break; default: return sq_throwerror(v,_SC("wrong type")); break; } return SQ_OK; } SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); if(v->Get(self,v->GetUp(-1),v->GetUp(-1),false,false)) return SQ_OK; v->Pop(1); return sq_throwerror(v,_SC("the index doesn't exist")); } SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); switch(type(self)) { case OT_TABLE: if(_table(self)->Get(v->GetUp(-1),v->GetUp(-1))) return SQ_OK; break; case OT_CLASS: if(_class(self)->Get(v->GetUp(-1),v->GetUp(-1))) return SQ_OK; break; case OT_INSTANCE: if(_instance(self)->Get(v->GetUp(-1),v->GetUp(-1))) return SQ_OK; break; case OT_ARRAY: if(v->Get(self,v->GetUp(-1),v->GetUp(-1),false,false)) return SQ_OK; break; default: v->Pop(1); return sq_throwerror(v,_SC("rawget works only on array/table/instance and class")); } v->Pop(1); return sq_throwerror(v,_SC("the index doesn't exist")); } SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po) { *po=stack_get(v,idx); return SQ_OK; } const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx) { SQUnsignedInteger cstksize=v->_callsstacksize; SQUnsignedInteger lvl=(cstksize-level)-1; SQInteger stackbase=v->_stackbase; if(lvl_callsstack[(cstksize-i)-1]; stackbase-=ci._prevstkbase; } SQVM::CallInfo &ci=v->_callsstack[lvl]; if(type(ci._closure)!=OT_CLOSURE) return NULL; SQClosure *c=_closure(ci._closure); SQFunctionProto *func=_funcproto(c->_function); if(func->_noutervalues > (SQInteger)idx) { v->Push(c->_outervalues[idx]); return _stringval(func->_outervalues[idx]._name); } idx -= func->_noutervalues; return func->GetLocal(v,stackbase,idx,(SQInteger)(ci._ip-func->_instructions)-1); } return NULL; } void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj) { v->Push(SQObjectPtr(obj)); } void sq_resetobject(HSQOBJECT *po) { po->_unVal.pUserPointer=NULL;po->_type=OT_NULL; } SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err) { v->_lasterror=SQString::Create(_ss(v),err); return -1; } void sq_reseterror(HSQUIRRELVM v) { v->_lasterror = _null_; } void sq_getlasterror(HSQUIRRELVM v) { v->Push(v->_lasterror); } void sq_reservestack(HSQUIRRELVM v,SQInteger nsize) { if (((SQUnsignedInteger)v->_top + nsize) > v->_stack.size()) { v->_stack.resize(v->_stack.size() + ((v->_top + nsize) - v->_stack.size())); } } SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror) { if(type(v->GetUp(-1))==OT_GENERATOR){ v->Push(_null_); //retval v->_can_suspend = false; if(!v->Execute(v->GetUp(-2),v->_top,0,v->_top,v->GetUp(-1),raiseerror,SQVM::ET_RESUME_GENERATOR)) {v->Raise_Error(v->_lasterror); return SQ_ERROR;} if(!retval) v->Pop(); return SQ_OK; } return sq_throwerror(v,_SC("only generators can be resumed")); } SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend) { SQObjectPtr res; v->_can_suspend = suspend >= 0; if (v->_can_suspend) v->_ops_till_suspend = suspend; if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false,v->_can_suspend)){ if(!v->_suspended) { v->Pop(params);//pop closure and args } if(retval){ v->Push(res); return SQ_OK; } return SQ_OK; } else { v->Pop(params); return SQ_ERROR; } if(!v->_suspended) v->Pop(params); return sq_throwerror(v,_SC("call failed")); } SQRESULT sq_suspendvm(HSQUIRRELVM v) { return v->Suspend(); } SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool wakeupret,SQBool retval,SQBool raiseerror,SQBool throwerror) { SQObjectPtr ret; if(!v->_suspended) return sq_throwerror(v,_SC("cannot resume a vm that is not running any code")); if(wakeupret) { v->GetAt(v->_stackbase+v->_suspended_target)=v->GetUp(-1); //retval v->Pop(); } else v->GetAt(v->_stackbase+v->_suspended_target)=_null_; v->_can_suspend = false; if(!v->Execute(_null_,v->_top,-1,-1,ret,raiseerror,throwerror?SQVM::ET_RESUME_THROW_VM : SQVM::ET_RESUME_VM)) return SQ_ERROR; if(sq_getvmstate(v) == SQ_VMSTATE_IDLE) { while (v->_top > 1) v->_stack[--v->_top] = _null_; } if(retval) v->Push(ret); return SQ_OK; } bool sq_resumecatch(HSQUIRRELVM v, int suspend) { SQObjectPtr ret; v->_can_suspend = suspend >= 0; if (v->_can_suspend) v->_ops_till_suspend = suspend; return v->Execute(_null_, v->_top, -1, -1, ret, SQTrue, SQVM::ET_RESUME_OPENTTD); } bool sq_resumeerror(HSQUIRRELVM v) { SQObjectPtr ret; v->_can_suspend = true; v->_ops_till_suspend = 1; return v->Execute(_null_, v->_top, -1, -1, ret, SQTrue, SQVM::ET_RESUME_THROW_VM); } void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook) { if(sq_gettop(v) >= 1){ SQObjectPtr &ud=stack_get(v,idx); switch( type(ud) ) { case OT_USERDATA: _userdata(ud)->_hook = hook; break; case OT_INSTANCE: _instance(ud)->_hook = hook; break; case OT_CLASS: _class(ud)->_hook = hook; break; default: break; //shutup compiler } } } void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f) { _ss(v)->_compilererrorhandler = f; } SQRESULT sq_writeclosure(HSQUIRRELVM v,SQWRITEFUNC w,SQUserPointer up) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, -1, OT_CLOSURE,o); unsigned short tag = SQ_BYTECODE_STREAM_TAG; if(w(up,&tag,2) != 2) return sq_throwerror(v,_SC("io error")); if(!_closure(*o)->Save(v,up,w)) return SQ_ERROR; return SQ_OK; } SQRESULT sq_readclosure(HSQUIRRELVM v,SQREADFUNC r,SQUserPointer up) { SQObjectPtr closure; unsigned short tag; if(r(up,&tag,2) != 2) return sq_throwerror(v,_SC("io error")); if(tag != SQ_BYTECODE_STREAM_TAG) return sq_throwerror(v,_SC("invalid stream")); if(!SQClosure::Load(v,up,r,closure)) return SQ_ERROR; v->Push(closure); return SQ_OK; } SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize) { return _ss(v)->GetScratchPad(minsize); } SQInteger sq_collectgarbage(HSQUIRRELVM v) { #ifndef NO_GARBAGE_COLLECTOR return _ss(v)->CollectGarbage(v); #else return -1; #endif } const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval) { SQObjectPtr &self = stack_get(v,idx); const SQChar *name = NULL; if(type(self) == OT_CLOSURE) { if(_closure(self)->_outervalues.size()>nval) { v->Push(_closure(self)->_outervalues[nval]); SQFunctionProto *fp = _funcproto(_closure(self)->_function); SQOuterVar &ov = fp->_outervalues[nval]; name = _stringval(ov._name); } } return name; } SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval) { SQObjectPtr &self=stack_get(v,idx); switch(type(self)) { case OT_CLOSURE: if(_closure(self)->_outervalues.size()>nval){ _closure(self)->_outervalues[nval]=stack_get(v,-1); } else return sq_throwerror(v,_SC("invalid free var index")); break; case OT_NATIVECLOSURE: if(_nativeclosure(self)->_outervalues.size()>nval){ _nativeclosure(self)->_outervalues[nval]=stack_get(v,-1); } else return sq_throwerror(v,_SC("invalid free var index")); break; default: return sq_aux_invalidtype(v,type(self)); } v->Pop(1); return SQ_OK; } SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); SQObjectPtr &key = stack_get(v,-2); SQObjectPtr &val = stack_get(v,-1); SQObjectPtr attrs; if(type(key) == OT_NULL) { attrs = _class(*o)->_attributes; _class(*o)->_attributes = val; v->Pop(2); v->Push(attrs); return SQ_OK; }else if(_class(*o)->GetAttributes(key,attrs)) { _class(*o)->SetAttributes(key,val); v->Pop(2); v->Push(attrs); return SQ_OK; } return sq_throwerror(v,_SC("wrong index")); } SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); SQObjectPtr &key = stack_get(v,-1); SQObjectPtr attrs; if(type(key) == OT_NULL) { attrs = _class(*o)->_attributes; v->Pop(); v->Push(attrs); return SQ_OK; } else if(_class(*o)->GetAttributes(key,attrs)) { v->Pop(); v->Push(attrs); return SQ_OK; } return sq_throwerror(v,_SC("wrong index")); } SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); if(_class(*o)->_base) v->Push(SQObjectPtr(_class(*o)->_base)); else v->Push(_null_); return SQ_OK; } SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_INSTANCE,o); v->Push(SQObjectPtr(_instance(*o)->_class)); return SQ_OK; } SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); v->Push(_class(*o)->CreateInstance()); return SQ_OK; } void sq_weakref(HSQUIRRELVM v,SQInteger idx) { SQObject &o=stack_get(v,idx); if(ISREFCOUNTED(type(o))) { v->Push(_refcounted(o)->GetWeakRef(type(o))); return; } v->Push(o); } SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); if(type(o) != OT_WEAKREF) { return sq_throwerror(v,_SC("the object must be a weakref")); } v->Push(_weakref(o)->_obj); return SQ_OK; } SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t) { SQSharedState *ss = _ss(v); switch(t) { case OT_TABLE: v->Push(ss->_table_default_delegate); break; case OT_ARRAY: v->Push(ss->_array_default_delegate); break; case OT_STRING: v->Push(ss->_string_default_delegate); break; case OT_INTEGER: case OT_FLOAT: v->Push(ss->_number_default_delegate); break; case OT_GENERATOR: v->Push(ss->_generator_default_delegate); break; case OT_CLOSURE: case OT_NATIVECLOSURE: v->Push(ss->_closure_default_delegate); break; case OT_THREAD: v->Push(ss->_thread_default_delegate); break; case OT_CLASS: v->Push(ss->_class_default_delegate); break; case OT_INSTANCE: v->Push(ss->_instance_default_delegate); break; case OT_WEAKREF: v->Push(ss->_weakref_default_delegate); break; default: return sq_throwerror(v,_SC("the type doesn't have a default delegate")); } return SQ_OK; } SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx) { SQObjectPtr o=stack_get(v,idx),&refpos = stack_get(v,-1),realkey,val; if(type(o) == OT_GENERATOR) { return sq_throwerror(v,_SC("cannot iterate a generator")); } int faketojump; if(!v->FOREACH_OP(o,realkey,val,refpos,0,666,faketojump)) return SQ_ERROR; if(faketojump != 666) { v->Push(realkey); v->Push(val); return SQ_OK; } return SQ_ERROR; } struct BufState{ const SQChar *buf; SQInteger ptr; SQInteger size; }; SQInteger buf_lexfeed(SQUserPointer file) { BufState *buf=(BufState*)file; if(buf->size<(buf->ptr+1)) return 0; return buf->buf[buf->ptr++]; } SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) { BufState buf; buf.buf = s; buf.size = size; buf.ptr = 0; return sq_compile(v, buf_lexfeed, &buf, sourcename, raiseerror); } void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx) { dest->Push(stack_get(src,idx)); } void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc) { _ss(v)->_printfunc = printfunc; } SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v) { return _ss(v)->_printfunc; } void *sq_malloc(SQUnsignedInteger size) { return SQ_MALLOC(size); } void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize) { return SQ_REALLOC(p,oldsize,newsize); } void sq_free(void *p,SQUnsignedInteger size) { SQ_FREE(p,size); } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqcompiler.cpp0000644000000000000000000011617612246102604022637 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include "sqpcheader.h" #include #include "sqopcodes.h" #include "sqstring.h" #include "sqfuncproto.h" #include "sqcompiler.h" #include "sqfuncstate.h" #include "sqlexer.h" #include "sqvm.h" #include "sqtable.h" #define DEREF_NO_DEREF -1 #define DEREF_FIELD -2 SQInteger _last_stacksize; struct ExpState { ExpState() { _deref = DEREF_NO_DEREF; _freevar = false; _class_or_delete = false; _funcarg = false; } bool _class_or_delete; bool _funcarg; bool _freevar; SQInteger _deref; }; typedef sqvector ExpStateVec; #define _exst (_expstates.top()) #define BEGIN_BREAKBLE_BLOCK() SQInteger __nbreaks__=_fs->_unresolvedbreaks.size(); \ SQInteger __ncontinues__=_fs->_unresolvedcontinues.size(); \ _fs->_breaktargets.push_back(0);_fs->_continuetargets.push_back(0); #define END_BREAKBLE_BLOCK(continue_target) {__nbreaks__=_fs->_unresolvedbreaks.size()-__nbreaks__; \ __ncontinues__=_fs->_unresolvedcontinues.size()-__ncontinues__; \ if(__ncontinues__>0)ResolveContinues(_fs,__ncontinues__,continue_target); \ if(__nbreaks__>0)ResolveBreaks(_fs,__nbreaks__); \ _fs->_breaktargets.pop_back();_fs->_continuetargets.pop_back();} class SQCompiler { public: SQCompiler(SQVM *v, SQLEXREADFUNC rg, SQUserPointer up, const SQChar* sourcename, bool raiseerror, bool lineinfo) { _vm=v; _lex.Init(_ss(v), rg, up,ThrowError,this); _sourcename = SQString::Create(_ss(v), sourcename); _lineinfo = lineinfo;_raiseerror = raiseerror; } static void ThrowError(void *ud, const SQChar *s) { SQCompiler *c = (SQCompiler *)ud; c->Error(s); } void Error(const SQChar *s, ...) { static SQChar temp[256]; va_list vl; va_start(vl, s); scvsprintf(temp, s, vl); va_end(vl); throw temp; } void Lex(){ _token = _lex.Lex();} void PushExpState(){ _expstates.push_back(ExpState()); } bool IsDerefToken(SQInteger tok) { switch(tok){ case _SC('='): case _SC('('): case TK_NEWSLOT: case TK_MODEQ: case TK_MULEQ: case TK_DIVEQ: case TK_MINUSEQ: case TK_PLUSEQ: case TK_PLUSPLUS: case TK_MINUSMINUS: return true; } return false; } ExpState PopExpState() { ExpState ret = _expstates.top(); _expstates.pop_back(); return ret; } SQObject Expect(SQInteger tok) { if(_token != tok) { if(_token == TK_CONSTRUCTOR && tok == TK_IDENTIFIER) { //ret = SQString::Create(_ss(_vm),_SC("constructor")); //do nothing } else { const SQChar *etypename; if(tok > 255) { switch(tok) { case TK_IDENTIFIER: etypename = _SC("IDENTIFIER"); break; case TK_STRING_LITERAL: etypename = _SC("STRING_LITERAL"); break; case TK_INTEGER: etypename = _SC("INTEGER"); break; case TK_FLOAT: etypename = _SC("FLOAT"); break; default: etypename = _lex.Tok2Str(tok); } Error(_SC("expected '%s'"), etypename); } Error(_SC("expected '%c'"), tok); } } SQObjectPtr ret; switch(tok) { case TK_IDENTIFIER: ret = _fs->CreateString(_lex._svalue); break; case TK_STRING_LITERAL: ret = _fs->CreateString(_lex._svalue,_lex._longstr.size()-1); break; case TK_INTEGER: ret = SQObjectPtr(_lex._nvalue); break; case TK_FLOAT: ret = SQObjectPtr(_lex._fvalue); break; } Lex(); return ret; } bool IsEndOfStatement() { return ((_lex._prevtoken == _SC('\n')) || (_token == SQUIRREL_EOB) || (_token == _SC('}')) || (_token == _SC(';'))); } void OptionalSemicolon() { if(_token == _SC(';')) { Lex(); return; } if(!IsEndOfStatement()) { Error(_SC("end of statement expected (; or lf)")); } } void MoveIfCurrentTargetIsLocal() { SQInteger trg = _fs->TopTarget(); if(_fs->IsLocal(trg)) { trg = _fs->PopTarget(); //no pops the target and move it _fs->AddInstruction(_OP_MOVE, _fs->PushTarget(), trg); } } bool Compile(SQObjectPtr &o) { _debugline = 1; _debugop = 0; SQFuncState funcstate(_ss(_vm), NULL,ThrowError,this); funcstate._name = SQString::Create(_ss(_vm), _SC("main")); _fs = &funcstate; _fs->AddParameter(_fs->CreateString(_SC("this"))); _fs->_sourcename = _sourcename; SQInteger stacksize = _fs->GetStackSize(); try { Lex(); while(_token > 0){ Statement(); if(_lex._prevtoken != _SC('}')) OptionalSemicolon(); } CleanStack(stacksize); _fs->AddLineInfos(_lex._currentline, _lineinfo, true); _fs->AddInstruction(_OP_RETURN, 0xFF); _fs->SetStackSize(0); o =_fs->BuildProto(); #ifdef _DEBUG_DUMP _fs->Dump(_funcproto(o)); #endif return true; } catch (SQChar *compilererror) { if(_raiseerror && _ss(_vm)->_compilererrorhandler) { _ss(_vm)->_compilererrorhandler(_vm, compilererror, type(_sourcename) == OT_STRING?_stringval(_sourcename):_SC("unknown"), _lex._currentline, _lex._currentcolumn); } _vm->_lasterror = SQString::Create(_ss(_vm), compilererror, -1); return false; } } void Statements() { while(_token != _SC('}') && _token != TK_DEFAULT && _token != TK_CASE) { Statement(); if(_lex._prevtoken != _SC('}') && _lex._prevtoken != _SC(';')) OptionalSemicolon(); } } void Statement() { _fs->AddLineInfos(_lex._currentline, _lineinfo); switch(_token){ case _SC(';'): Lex(); break; case TK_IF: IfStatement(); break; case TK_WHILE: WhileStatement(); break; case TK_DO: DoWhileStatement(); break; case TK_FOR: ForStatement(); break; case TK_FOREACH: ForEachStatement(); break; case TK_SWITCH: SwitchStatement(); break; case TK_LOCAL: LocalDeclStatement(); break; case TK_RETURN: case TK_YIELD: { SQOpcode op; if(_token == TK_RETURN) { op = _OP_RETURN; } else { op = _OP_YIELD; _fs->_bgenerator = true; } Lex(); if(!IsEndOfStatement()) { SQInteger retexp = _fs->GetCurrentPos()+1; CommaExpr(); if(op == _OP_RETURN && _fs->_traps > 0) _fs->AddInstruction(_OP_POPTRAP, _fs->_traps, 0); _fs->_returnexp = retexp; _fs->AddInstruction(op, 1, _fs->PopTarget()); } else{ if(op == _OP_RETURN && _fs->_traps > 0) _fs->AddInstruction(_OP_POPTRAP, _fs->_traps ,0); _fs->_returnexp = -1; _fs->AddInstruction(op, 0xFF); } break;} case TK_BREAK: if(_fs->_breaktargets.size() <= 0)Error(_SC("'break' has to be in a loop block")); if(_fs->_breaktargets.top() > 0){ _fs->AddInstruction(_OP_POPTRAP, _fs->_breaktargets.top(), 0); } _fs->AddInstruction(_OP_SCOPE_END, _last_stacksize, _fs->GetStackSize()); _fs->AddInstruction(_OP_JMP, 0, -1234); _fs->_unresolvedbreaks.push_back(_fs->GetCurrentPos()); Lex(); break; case TK_CONTINUE: if(_fs->_continuetargets.size() <= 0)Error(_SC("'continue' has to be in a loop block")); if(_fs->_continuetargets.top() > 0) { _fs->AddInstruction(_OP_POPTRAP, _fs->_continuetargets.top(), 0); } _fs->AddInstruction(_OP_SCOPE_END, _last_stacksize, _fs->GetStackSize()); _fs->AddInstruction(_OP_JMP, 0, -1234); _fs->_unresolvedcontinues.push_back(_fs->GetCurrentPos()); Lex(); break; case TK_FUNCTION: FunctionStatement(); break; case TK_CLASS: ClassStatement(); break; case TK_ENUM: EnumStatement(); break; case _SC('{'):{ SQInteger stacksize = _fs->GetStackSize(); Lex(); Statements(); Expect(_SC('}')); _fs->AddInstruction(_OP_SCOPE_END, stacksize, _fs->GetStackSize()); _fs->SetStackSize(stacksize); } break; case TK_TRY: TryCatchStatement(); break; case TK_THROW: Lex(); CommaExpr(); _fs->AddInstruction(_OP_THROW, _fs->PopTarget()); break; case TK_CONST: { Lex(); SQObject id = Expect(TK_IDENTIFIER); Expect('='); SQObject val = ExpectScalar(); OptionalSemicolon(); SQTable *enums = _table(_ss(_vm)->_consts); SQObjectPtr strongid = id; enums->NewSlot(strongid,SQObjectPtr(val)); strongid.Null(); } break; default: CommaExpr(); _fs->PopTarget(); break; } _fs->SnoozeOpt(); } void EmitDerefOp(SQOpcode op) { SQInteger val = _fs->PopTarget(); SQInteger key = _fs->PopTarget(); SQInteger src = _fs->PopTarget(); _fs->AddInstruction(op,_fs->PushTarget(),src,key,val); } void Emit2ArgsOP(SQOpcode op, SQInteger p3 = 0) { SQInteger p2 = _fs->PopTarget(); //src in OP_GET SQInteger p1 = _fs->PopTarget(); //key in OP_GET _fs->AddInstruction(op,_fs->PushTarget(), p1, p2, p3); } void EmitCompoundArith(SQInteger tok,bool deref) { SQInteger oper; switch(tok){ case TK_MINUSEQ: oper = '-'; break; case TK_PLUSEQ: oper = '+'; break; case TK_MULEQ: oper = '*'; break; case TK_DIVEQ: oper = '/'; break; case TK_MODEQ: oper = '%'; break; default: oper = 0; //shut up compiler assert(0); break; }; if(deref) { SQInteger val = _fs->PopTarget(); SQInteger key = _fs->PopTarget(); SQInteger src = _fs->PopTarget(); //mixes dest obj and source val in the arg1(hack?) _fs->AddInstruction(_OP_COMPARITH,_fs->PushTarget(),(src<<16)|val,key,oper); } else { Emit2ArgsOP(_OP_COMPARITHL, oper); } } void CommaExpr() { for(Expression();_token == ',';_fs->PopTarget(), Lex(), CommaExpr()) {} } ExpState Expression(bool funcarg = false) { PushExpState(); _exst._class_or_delete = false; _exst._funcarg = funcarg; LogicalOrExp(); switch(_token) { case _SC('='): case TK_NEWSLOT: case TK_MINUSEQ: case TK_PLUSEQ: case TK_MULEQ: case TK_DIVEQ: case TK_MODEQ: { SQInteger op = _token; SQInteger ds = _exst._deref; bool freevar = _exst._freevar; if(ds == DEREF_NO_DEREF) Error(_SC("can't assign expression")); Lex(); Expression(); switch(op){ case TK_NEWSLOT: if(freevar) Error(_SC("free variables cannot be modified")); if(ds == DEREF_FIELD) EmitDerefOp(_OP_NEWSLOT); else //if _derefstate != DEREF_NO_DEREF && DEREF_FIELD so is the index of a local Error(_SC("can't 'create' a local slot")); break; case _SC('='): //ASSIGN if(freevar) Error(_SC("free variables cannot be modified")); if(ds == DEREF_FIELD) EmitDerefOp(_OP_SET); else {//if _derefstate != DEREF_NO_DEREF && DEREF_FIELD so is the index of a local SQInteger p2 = _fs->PopTarget(); //src in OP_GET SQInteger p1 = _fs->TopTarget(); //key in OP_GET _fs->AddInstruction(_OP_MOVE, p1, p2); } break; case TK_MINUSEQ: case TK_PLUSEQ: case TK_MULEQ: case TK_DIVEQ: case TK_MODEQ: EmitCompoundArith(op,ds == DEREF_FIELD); break; } } break; case _SC('?'): { Lex(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); SQInteger jzpos = _fs->GetCurrentPos(); SQInteger trg = _fs->PushTarget(); Expression(); SQInteger first_exp = _fs->PopTarget(); if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); SQInteger endfirstexp = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_JMP, 0, 0); Expect(_SC(':')); SQInteger jmppos = _fs->GetCurrentPos(); Expression(); SQInteger second_exp = _fs->PopTarget(); if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SetIntructionParam(jmppos, 1, _fs->GetCurrentPos() - jmppos); _fs->SetIntructionParam(jzpos, 1, endfirstexp - jzpos + 1); _fs->SnoozeOpt(); } break; } return PopExpState(); } void BIN_EXP(SQOpcode op, void (SQCompiler::*f)(void),SQInteger op3 = 0) { Lex(); (this->*f)(); SQInteger op1 = _fs->PopTarget();SQInteger op2 = _fs->PopTarget(); _fs->AddInstruction(op, _fs->PushTarget(), op1, op2, op3); } void LogicalOrExp() { LogicalAndExp(); for(;;) if(_token == TK_OR) { SQInteger first_exp = _fs->PopTarget(); SQInteger trg = _fs->PushTarget(); _fs->AddInstruction(_OP_OR, trg, 0, first_exp, 0); SQInteger jpos = _fs->GetCurrentPos(); if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); Lex(); LogicalOrExp(); _fs->SnoozeOpt(); SQInteger second_exp = _fs->PopTarget(); if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SnoozeOpt(); _fs->SetIntructionParam(jpos, 1, (_fs->GetCurrentPos() - jpos)); break; }else return; } void LogicalAndExp() { BitwiseOrExp(); for(;;) switch(_token) { case TK_AND: { SQInteger first_exp = _fs->PopTarget(); SQInteger trg = _fs->PushTarget(); _fs->AddInstruction(_OP_AND, trg, 0, first_exp, 0); SQInteger jpos = _fs->GetCurrentPos(); if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); Lex(); LogicalAndExp(); _fs->SnoozeOpt(); SQInteger second_exp = _fs->PopTarget(); if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SnoozeOpt(); _fs->SetIntructionParam(jpos, 1, (_fs->GetCurrentPos() - jpos)); break; } case TK_IN: BIN_EXP(_OP_EXISTS, &SQCompiler::BitwiseOrExp); break; case TK_INSTANCEOF: BIN_EXP(_OP_INSTANCEOF, &SQCompiler::BitwiseOrExp); break; default: return; } } void BitwiseOrExp() { BitwiseXorExp(); for(;;) if(_token == _SC('|')) {BIN_EXP(_OP_BITW, &SQCompiler::BitwiseXorExp,BW_OR); }else return; } void BitwiseXorExp() { BitwiseAndExp(); for(;;) if(_token == _SC('^')) {BIN_EXP(_OP_BITW, &SQCompiler::BitwiseAndExp,BW_XOR); }else return; } void BitwiseAndExp() { CompExp(); for(;;) if(_token == _SC('&')) {BIN_EXP(_OP_BITW, &SQCompiler::CompExp,BW_AND); }else return; } void CompExp() { ShiftExp(); for(;;) switch(_token) { case TK_EQ: BIN_EXP(_OP_EQ, &SQCompiler::ShiftExp); break; case _SC('>'): BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_G); break; case _SC('<'): BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_L); break; case TK_GE: BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_GE); break; case TK_LE: BIN_EXP(_OP_CMP, &SQCompiler::ShiftExp,CMP_LE); break; case TK_NE: BIN_EXP(_OP_NE, &SQCompiler::ShiftExp); break; default: return; } } void ShiftExp() { PlusExp(); for(;;) switch(_token) { case TK_USHIFTR: BIN_EXP(_OP_BITW, &SQCompiler::PlusExp,BW_USHIFTR); break; case TK_SHIFTL: BIN_EXP(_OP_BITW, &SQCompiler::PlusExp,BW_SHIFTL); break; case TK_SHIFTR: BIN_EXP(_OP_BITW, &SQCompiler::PlusExp,BW_SHIFTR); break; default: return; } } void PlusExp() { MultExp(); for(;;) switch(_token) { case _SC('+'): case _SC('-'): BIN_EXP(_OP_ARITH, &SQCompiler::MultExp,_token); break; default: return; } } void MultExp() { PrefixedExpr(); for(;;) switch(_token) { case _SC('*'): case _SC('/'): case _SC('%'): BIN_EXP(_OP_ARITH, &SQCompiler::PrefixedExpr,_token); break; default: return; } } //if 'pos' != -1 the previous variable is a local variable void PrefixedExpr() { SQInteger pos = Factor(); for(;;) { switch(_token) { case _SC('.'): { pos = -1; Lex(); if(_token == TK_PARENT) { Lex(); if(!NeedGet()) Error(_SC("parent cannot be set")); SQInteger src = _fs->PopTarget(); _fs->AddInstruction(_OP_GETPARENT, _fs->PushTarget(), src); } else { _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(Expect(TK_IDENTIFIER))); if(NeedGet()) Emit2ArgsOP(_OP_GET); } _exst._deref = DEREF_FIELD; _exst._freevar = false; } break; case _SC('['): if(_lex._prevtoken == _SC('\n')) Error(_SC("cannot brake deref/or comma needed after [exp]=exp slot declaration")); Lex(); Expression(); Expect(_SC(']')); pos = -1; if(NeedGet()) Emit2ArgsOP(_OP_GET); _exst._deref = DEREF_FIELD; _exst._freevar = false; break; case TK_MINUSMINUS: case TK_PLUSPLUS: if(_exst._deref != DEREF_NO_DEREF && !IsEndOfStatement()) { SQInteger tok = _token; Lex(); if(pos < 0) Emit2ArgsOP(_OP_PINC,tok == TK_MINUSMINUS?-1:1); else {//if _derefstate != DEREF_NO_DEREF && DEREF_FIELD so is the index of a local SQInteger src = _fs->PopTarget(); _fs->AddInstruction(_OP_PINCL, _fs->PushTarget(), src, 0, tok == TK_MINUSMINUS?-1:1); } } return; break; case _SC('('): { if(_exst._deref != DEREF_NO_DEREF) { if(pos<0) { SQInteger key = _fs->PopTarget(); //key SQInteger table = _fs->PopTarget(); //table etc... SQInteger closure = _fs->PushTarget(); SQInteger ttarget = _fs->PushTarget(); _fs->AddInstruction(_OP_PREPCALL, closure, key, table, ttarget); } else{ _fs->AddInstruction(_OP_MOVE, _fs->PushTarget(), 0); } } else _fs->AddInstruction(_OP_MOVE, _fs->PushTarget(), 0); _exst._deref = DEREF_NO_DEREF; Lex(); FunctionCallArgs(); } break; default: return; } } } SQInteger Factor() { _exst._deref = DEREF_NO_DEREF; switch(_token) { case TK_STRING_LITERAL: { //SQObjectPtr id(SQString::Create(_ss(_vm), _lex._svalue,_lex._longstr.size()-1)); _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(_fs->CreateString(_lex._svalue,_lex._longstr.size()-1))); Lex(); } break; case TK_VARGC: Lex(); _fs->AddInstruction(_OP_VARGC, _fs->PushTarget()); break; case TK_VARGV: { Lex(); Expect(_SC('[')); Expression(); Expect(_SC(']')); SQInteger src = _fs->PopTarget(); _fs->AddInstruction(_OP_GETVARGV, _fs->PushTarget(), src); } break; case TK_IDENTIFIER: case TK_CONSTRUCTOR: case TK_THIS:{ _exst._freevar = false; SQObject id; SQObject constant; switch(_token) { case TK_IDENTIFIER: id = _fs->CreateString(_lex._svalue); break; case TK_THIS: id = _fs->CreateString(_SC("this")); break; case TK_CONSTRUCTOR: id = _fs->CreateString(_SC("constructor")); break; } SQInteger pos = -1; Lex(); if((pos = _fs->GetLocalVariable(id)) == -1) { //checks if is a free variable if((pos = _fs->GetOuterVariable(id)) != -1) { _exst._deref = _fs->PushTarget(); _fs->AddInstruction(_OP_LOADFREEVAR, _exst._deref ,pos); _exst._freevar = true; } else if(_fs->IsConstant(id,constant)) { //line 634 SQObjectPtr constval; SQObject constid; if(type(constant) == OT_TABLE) { Expect('.'); constid = Expect(TK_IDENTIFIER); if(!_table(constant)->Get(constid,constval)) { constval.Null(); Error(_SC("invalid constant [%s.%s]"), _stringval(id),_stringval(constid)); } } else { constval = constant; } _exst._deref = _fs->PushTarget(); SQObjectType ctype = type(constval); if(ctype == OT_INTEGER && (_integer(constval) & (~0x7FFFFFFF)) == 0) { _fs->AddInstruction(_OP_LOADINT, _exst._deref,_integer(constval)); } else if(ctype == OT_FLOAT && sizeof(SQFloat) == sizeof(SQInt32)) { SQFloat f = _float(constval); _fs->AddInstruction(_OP_LOADFLOAT, _exst._deref,*((SQInt32 *)&f)); } else { _fs->AddInstruction(_OP_LOAD, _exst._deref, _fs->GetConstant(constval)); } _exst._freevar = true; } else { _fs->PushTarget(0); _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(id)); if(NeedGet()) Emit2ArgsOP(_OP_GET); _exst._deref = DEREF_FIELD; } } else{ _fs->PushTarget(pos); _exst._deref = pos; } return _exst._deref; } break; case TK_PARENT: Lex();_fs->AddInstruction(_OP_GETPARENT, _fs->PushTarget(), 0); break; case TK_DOUBLE_COLON: // "::" _fs->AddInstruction(_OP_LOADROOTTABLE, _fs->PushTarget()); _exst._deref = DEREF_FIELD; _token = _SC('.'); //hack return -1; break; case TK_NULL: _fs->AddInstruction(_OP_LOADNULLS, _fs->PushTarget(),1); Lex(); break; case TK_INTEGER: { if((_lex._nvalue & (~0x7FFFFFFF)) == 0) { //does it fit in 32 bits? _fs->AddInstruction(_OP_LOADINT, _fs->PushTarget(),_lex._nvalue); } else { _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetNumericConstant(_lex._nvalue)); } Lex(); } break; case TK_FLOAT: if(sizeof(SQFloat) == sizeof(SQInt32)) { _fs->AddInstruction(_OP_LOADFLOAT, _fs->PushTarget(),*((SQInt32 *)&_lex._fvalue)); } else { _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetNumericConstant(_lex._fvalue)); } Lex(); break; case TK_TRUE: case TK_FALSE: _fs->AddInstruction(_OP_LOADBOOL, _fs->PushTarget(),_token == TK_TRUE?1:0); Lex(); break; case _SC('['): { _fs->AddInstruction(_OP_NEWARRAY, _fs->PushTarget()); SQInteger apos = _fs->GetCurrentPos(),key = 0; Lex(); while(_token != _SC(']')) { Expression(); if(_token == _SC(',')) Lex(); SQInteger val = _fs->PopTarget(); SQInteger array = _fs->TopTarget(); _fs->AddInstruction(_OP_APPENDARRAY, array, val); key++; } _fs->SetIntructionParam(apos, 1, key); Lex(); } break; case _SC('{'):{ _fs->AddInstruction(_OP_NEWTABLE, _fs->PushTarget()); Lex();ParseTableOrClass(_SC(',')); } break; case TK_FUNCTION: FunctionExp(_token);break; case TK_CLASS: Lex(); ClassExp();break; case _SC('-'): UnaryOP(_OP_NEG); break; case _SC('!'): UnaryOP(_OP_NOT); break; case _SC('~'): UnaryOP(_OP_BWNOT); break; case TK_TYPEOF : UnaryOP(_OP_TYPEOF); break; case TK_RESUME : UnaryOP(_OP_RESUME); break; case TK_CLONE : UnaryOP(_OP_CLONE); break; case TK_MINUSMINUS : case TK_PLUSPLUS :PrefixIncDec(_token); break; case TK_DELETE : DeleteExpr(); break; case TK_DELEGATE : DelegateExpr(); break; case _SC('('): Lex(); CommaExpr(); Expect(_SC(')')); break; default: Error(_SC("expression expected")); } return -1; } void UnaryOP(SQOpcode op) { Lex(); PrefixedExpr(); SQInteger src = _fs->PopTarget(); _fs->AddInstruction(op, _fs->PushTarget(), src); } bool NeedGet() { switch(_token) { case _SC('='): case _SC('('): case TK_NEWSLOT: case TK_PLUSPLUS: case TK_MINUSMINUS: case TK_PLUSEQ: case TK_MINUSEQ: case TK_MULEQ: case TK_DIVEQ: case TK_MODEQ: return false; } return (!_exst._class_or_delete) || (_exst._class_or_delete && (_token == _SC('.') || _token == _SC('['))); } void FunctionCallArgs() { SQInteger nargs = 1;//this while(_token != _SC(')')) { Expression(true); MoveIfCurrentTargetIsLocal(); nargs++; if(_token == _SC(',')){ Lex(); if(_token == ')') Error(_SC("expression expected, found ')'")); } } Lex(); for(SQInteger i = 0; i < (nargs - 1); i++) _fs->PopTarget(); SQInteger stackbase = _fs->PopTarget(); SQInteger closure = _fs->PopTarget(); _fs->AddInstruction(_OP_CALL, _fs->PushTarget(), closure, stackbase, nargs); } void ParseTableOrClass(SQInteger separator,SQInteger terminator = '}') { SQInteger tpos = _fs->GetCurrentPos(),nkeys = 0; while(_token != terminator) { bool hasattrs = false; bool isstatic = false; //check if is an attribute if(separator == ';') { if(_token == TK_ATTR_OPEN) { _fs->AddInstruction(_OP_NEWTABLE, _fs->PushTarget()); Lex(); ParseTableOrClass(',',TK_ATTR_CLOSE); hasattrs = true; } if(_token == TK_STATIC) { isstatic = true; Lex(); } } switch(_token) { case TK_FUNCTION: case TK_CONSTRUCTOR:{ SQInteger tk = _token; Lex(); SQObject id = tk == TK_FUNCTION ? Expect(TK_IDENTIFIER) : _fs->CreateString(_SC("constructor")); Expect(_SC('(')); _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(id)); CreateFunction(id); _fs->AddInstruction(_OP_CLOSURE, _fs->PushTarget(), _fs->_functions.size() - 1, 0); } break; case _SC('['): Lex(); CommaExpr(); Expect(_SC(']')); Expect(_SC('=')); Expression(); break; default : _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(Expect(TK_IDENTIFIER))); Expect(_SC('=')); Expression(); } if(_token == separator) Lex();//optional comma/semicolon nkeys++; SQInteger val = _fs->PopTarget(); SQInteger key = _fs->PopTarget(); SQInteger attrs = hasattrs ? _fs->PopTarget():-1; assert((hasattrs && attrs == key-1) || !hasattrs); unsigned char flags = (hasattrs?NEW_SLOT_ATTRIBUTES_FLAG:0)|(isstatic?NEW_SLOT_STATIC_FLAG:0); SQInteger table = _fs->TopTarget(); //<AddInstruction(_OP_NEWSLOTA, flags, table, key, val); //_fs->PopTarget(); } if(separator == _SC(',')) //hack recognizes a table from the separator _fs->SetIntructionParam(tpos, 1, nkeys); Lex(); } void LocalDeclStatement() { SQObject varname; do { Lex(); varname = Expect(TK_IDENTIFIER); if(_token == _SC('=')) { Lex(); Expression(); SQInteger src = _fs->PopTarget(); SQInteger dest = _fs->PushTarget(); if(dest != src) _fs->AddInstruction(_OP_MOVE, dest, src); } else{ _fs->AddInstruction(_OP_LOADNULLS, _fs->PushTarget(),1); } _fs->PopTarget(); _fs->PushLocalVariable(varname); } while(_token == _SC(',')); } void IfStatement() { SQInteger jmppos; bool haselse = false; Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); SQInteger jnepos = _fs->GetCurrentPos(); SQInteger stacksize = _fs->GetStackSize(); Statement(); // if(_token != _SC('}') && _token != TK_ELSE) OptionalSemicolon(); CleanStack(stacksize); SQInteger endifblock = _fs->GetCurrentPos(); if(_token == TK_ELSE){ haselse = true; stacksize = _fs->GetStackSize(); _fs->AddInstruction(_OP_JMP); jmppos = _fs->GetCurrentPos(); Lex(); Statement(); OptionalSemicolon(); CleanStack(stacksize); _fs->SetIntructionParam(jmppos, 1, _fs->GetCurrentPos() - jmppos); } _fs->SetIntructionParam(jnepos, 1, endifblock - jnepos + (haselse?1:0)); } void WhileStatement() { SQInteger jzpos, jmppos; SQInteger stacksize = _fs->GetStackSize(); jmppos = _fs->GetCurrentPos(); Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); BEGIN_BREAKBLE_BLOCK(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); jzpos = _fs->GetCurrentPos(); stacksize = _fs->GetStackSize(); _last_stacksize = _fs->GetStackSize(); Statement(); CleanStack(stacksize); _fs->AddInstruction(_OP_JMP, 0, jmppos - _fs->GetCurrentPos() - 1); _fs->SetIntructionParam(jzpos, 1, _fs->GetCurrentPos() - jzpos); END_BREAKBLE_BLOCK(jmppos); } void DoWhileStatement() { Lex(); SQInteger jzpos = _fs->GetCurrentPos(); SQInteger stacksize = _fs->GetStackSize(); BEGIN_BREAKBLE_BLOCK() _last_stacksize = _fs->GetStackSize(); Statement(); CleanStack(stacksize); _fs->AddLineInfos(_lex._currentline, _lineinfo, true); Expect(TK_WHILE); SQInteger continuetrg = _fs->GetCurrentPos(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); _fs->AddInstruction(_OP_JNZ, _fs->PopTarget(), jzpos - _fs->GetCurrentPos() - 1); END_BREAKBLE_BLOCK(continuetrg); } void ForStatement() { Lex(); SQInteger stacksize = _fs->GetStackSize(); Expect(_SC('(')); if(_token == TK_LOCAL) LocalDeclStatement(); else if(_token != _SC(';')){ CommaExpr(); _fs->PopTarget(); } Expect(_SC(';')); _fs->SnoozeOpt(); SQInteger jmppos = _fs->GetCurrentPos(); SQInteger jzpos = -1; if(_token != _SC(';')) { CommaExpr(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); jzpos = _fs->GetCurrentPos(); } Expect(_SC(';')); _fs->SnoozeOpt(); SQInteger expstart = _fs->GetCurrentPos() + 1; if(_token != _SC(')')) { CommaExpr(); _fs->PopTarget(); } Expect(_SC(')')); _fs->SnoozeOpt(); SQInteger expend = _fs->GetCurrentPos(); SQInteger expsize = (expend - expstart) + 1; SQInstructionVec exp; if(expsize > 0) { for(SQInteger i = 0; i < expsize; i++) exp.push_back(_fs->GetInstruction(expstart + i)); _fs->PopInstructions(expsize); } BEGIN_BREAKBLE_BLOCK() _last_stacksize = _fs->GetStackSize(); Statement(); SQInteger continuetrg = _fs->GetCurrentPos(); if(expsize > 0) { for(SQInteger i = 0; i < expsize; i++) _fs->AddInstruction(exp[i]); } _fs->AddInstruction(_OP_JMP, 0, jmppos - _fs->GetCurrentPos() - 1, 0); if(jzpos> 0) _fs->SetIntructionParam(jzpos, 1, _fs->GetCurrentPos() - jzpos); CleanStack(stacksize); END_BREAKBLE_BLOCK(continuetrg); } void ForEachStatement() { SQObject idxname, valname; Lex(); Expect(_SC('(')); valname = Expect(TK_IDENTIFIER); if(_token == _SC(',')) { idxname = valname; Lex(); valname = Expect(TK_IDENTIFIER); } else{ idxname = _fs->CreateString(_SC("@INDEX@")); } Expect(TK_IN); //save the stack size SQInteger stacksize = _fs->GetStackSize(); //put the table in the stack(evaluate the table expression) Expression(); Expect(_SC(')')); SQInteger container = _fs->TopTarget(); //push the index local var SQInteger indexpos = _fs->PushLocalVariable(idxname); _fs->AddInstruction(_OP_LOADNULLS, indexpos,1); //push the value local var SQInteger valuepos = _fs->PushLocalVariable(valname); _fs->AddInstruction(_OP_LOADNULLS, valuepos,1); //push reference index SQInteger itrpos = _fs->PushLocalVariable(_fs->CreateString(_SC("@ITERATOR@"))); //use invalid id to make it inaccessible _fs->AddInstruction(_OP_LOADNULLS, itrpos,1); SQInteger jmppos = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_FOREACH, container, 0, indexpos); SQInteger foreachpos = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_POSTFOREACH, container, 0, indexpos); //generate the statement code BEGIN_BREAKBLE_BLOCK() _last_stacksize = _fs->GetStackSize(); Statement(); _fs->AddInstruction(_OP_JMP, 0, jmppos - _fs->GetCurrentPos() - 1); _fs->SetIntructionParam(foreachpos, 1, _fs->GetCurrentPos() - foreachpos); _fs->SetIntructionParam(foreachpos + 1, 1, _fs->GetCurrentPos() - foreachpos); //restore the local variable stack(remove index,val and ref idx) CleanStack(stacksize); END_BREAKBLE_BLOCK(foreachpos - 1); } void SwitchStatement() { Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); Expect(_SC('{')); SQInteger expr = _fs->TopTarget(); bool bfirst = true; SQInteger tonextcondjmp = -1; SQInteger skipcondjmp = -1; SQInteger __nbreaks__ = _fs->_unresolvedbreaks.size(); _fs->_breaktargets.push_back(0); while(_token == TK_CASE) { //_fs->AddLineInfos(_lex._currentline, _lineinfo); think about this one if(!bfirst) { _fs->AddInstruction(_OP_JMP, 0, 0); skipcondjmp = _fs->GetCurrentPos(); _fs->SetIntructionParam(tonextcondjmp, 1, _fs->GetCurrentPos() - tonextcondjmp); } //condition Lex(); Expression(); Expect(_SC(':')); SQInteger trg = _fs->PopTarget(); _fs->AddInstruction(_OP_EQ, trg, trg, expr); _fs->AddInstruction(_OP_JZ, trg, 0); //end condition if(skipcondjmp != -1) { _fs->SetIntructionParam(skipcondjmp, 1, (_fs->GetCurrentPos() - skipcondjmp)); } tonextcondjmp = _fs->GetCurrentPos(); SQInteger stacksize = _fs->GetStackSize(); _last_stacksize = _fs->GetStackSize(); Statements(); _fs->SetStackSize(stacksize); bfirst = false; } if(tonextcondjmp != -1) _fs->SetIntructionParam(tonextcondjmp, 1, _fs->GetCurrentPos() - tonextcondjmp); if(_token == TK_DEFAULT) { // _fs->AddLineInfos(_lex._currentline, _lineinfo); Lex(); Expect(_SC(':')); SQInteger stacksize = _fs->GetStackSize(); _last_stacksize = _fs->GetStackSize(); Statements(); _fs->SetStackSize(stacksize); } Expect(_SC('}')); _fs->PopTarget(); __nbreaks__ = _fs->_unresolvedbreaks.size() - __nbreaks__; if(__nbreaks__ > 0)ResolveBreaks(_fs, __nbreaks__); _fs->_breaktargets.pop_back(); } void FunctionStatement() { SQObject id; Lex(); id = Expect(TK_IDENTIFIER); _fs->PushTarget(0); _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(id)); if(_token == TK_DOUBLE_COLON) Emit2ArgsOP(_OP_GET); while(_token == TK_DOUBLE_COLON) { Lex(); id = Expect(TK_IDENTIFIER); _fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(id)); if(_token == TK_DOUBLE_COLON) Emit2ArgsOP(_OP_GET); } Expect(_SC('(')); CreateFunction(id); _fs->AddInstruction(_OP_CLOSURE, _fs->PushTarget(), _fs->_functions.size() - 1, 0); EmitDerefOp(_OP_NEWSLOT); _fs->PopTarget(); } void ClassStatement() { ExpState es; Lex(); PushExpState(); _exst._class_or_delete = true; _exst._funcarg = false; PrefixedExpr(); es = PopExpState(); if(es._deref == DEREF_NO_DEREF) Error(_SC("invalid class name")); if(es._deref == DEREF_FIELD) { ClassExp(); EmitDerefOp(_OP_NEWSLOT); _fs->PopTarget(); } else Error(_SC("cannot create a class in a local with the syntax(class )")); } SQObject ExpectScalar() { SQObject val; switch(_token) { case TK_INTEGER: val._type = OT_INTEGER; val._unVal.nInteger = _lex._nvalue; break; case TK_FLOAT: val._type = OT_FLOAT; val._unVal.fFloat = _lex._fvalue; break; case TK_STRING_LITERAL: val = _fs->CreateString(_lex._svalue,_lex._longstr.size()-1); break; case '-': Lex(); switch(_token) { case TK_INTEGER: val._type = OT_INTEGER; val._unVal.nInteger = -_lex._nvalue; break; case TK_FLOAT: val._type = OT_FLOAT; val._unVal.fFloat = -_lex._fvalue; break; default: Error(_SC("scalar expected : integer,float")); val._type = OT_NULL; // Silent compile-warning } break; default: Error(_SC("scalar expected : integer,float or string")); val._type = OT_NULL; // Silent compile-warning } Lex(); return val; } void EnumStatement() { Lex(); SQObject id = Expect(TK_IDENTIFIER); Expect(_SC('{')); SQObject table = _fs->CreateTable(); SQInteger nval = 0; while(_token != _SC('}')) { SQObject key = Expect(TK_IDENTIFIER); SQObject val; if(_token == _SC('=')) { Lex(); val = ExpectScalar(); } else { val._type = OT_INTEGER; val._unVal.nInteger = nval++; } _table(table)->NewSlot(SQObjectPtr(key),SQObjectPtr(val)); if(_token == ',') Lex(); } SQTable *enums = _table(_ss(_vm)->_consts); SQObjectPtr strongid = id; /*SQObjectPtr dummy; if(enums->Get(strongid,dummy)) { dummy.Null(); strongid.Null(); Error(_SC("enumeration already exists")); }*/ enums->NewSlot(SQObjectPtr(strongid),SQObjectPtr(table)); strongid.Null(); Lex(); } void TryCatchStatement() { SQObject exid; Lex(); _fs->AddInstruction(_OP_PUSHTRAP,0,0); _fs->_traps++; if(_fs->_breaktargets.size()) _fs->_breaktargets.top()++; if(_fs->_continuetargets.size()) _fs->_continuetargets.top()++; SQInteger trappos = _fs->GetCurrentPos(); Statement(); _fs->_traps--; _fs->AddInstruction(_OP_POPTRAP, 1, 0); if(_fs->_breaktargets.size()) _fs->_breaktargets.top()--; if(_fs->_continuetargets.size()) _fs->_continuetargets.top()--; _fs->AddInstruction(_OP_JMP, 0, 0); SQInteger jmppos = _fs->GetCurrentPos(); _fs->SetIntructionParam(trappos, 1, (_fs->GetCurrentPos() - trappos)); Expect(TK_CATCH); Expect(_SC('(')); exid = Expect(TK_IDENTIFIER); Expect(_SC(')')); SQInteger stacksize = _fs->GetStackSize(); SQInteger ex_target = _fs->PushLocalVariable(exid); _fs->SetIntructionParam(trappos, 0, ex_target); Statement(); _fs->SetIntructionParams(jmppos, 0, (_fs->GetCurrentPos() - jmppos), 0); CleanStack(stacksize); } void FunctionExp(SQInteger ftype) { Lex(); Expect(_SC('(')); CreateFunction(_null_); _fs->AddInstruction(_OP_CLOSURE, _fs->PushTarget(), _fs->_functions.size() - 1, ftype == TK_FUNCTION?0:1); } void ClassExp() { SQInteger base = -1; SQInteger attrs = -1; if(_token == TK_EXTENDS) { Lex(); Expression(); base = _fs->TopTarget(); } if(_token == TK_ATTR_OPEN) { Lex(); _fs->AddInstruction(_OP_NEWTABLE, _fs->PushTarget()); ParseTableOrClass(_SC(','),TK_ATTR_CLOSE); attrs = _fs->TopTarget(); } Expect(_SC('{')); if(attrs != -1) _fs->PopTarget(); if(base != -1) _fs->PopTarget(); _fs->AddInstruction(_OP_CLASS, _fs->PushTarget(), base, attrs); ParseTableOrClass(_SC(';')); } void DelegateExpr() { Lex(); CommaExpr(); Expect(_SC(':')); CommaExpr(); SQInteger table = _fs->PopTarget(), delegate = _fs->PopTarget(); _fs->AddInstruction(_OP_DELEGATE, _fs->PushTarget(), table, delegate); } void DeleteExpr() { ExpState es; Lex(); PushExpState(); _exst._class_or_delete = true; _exst._funcarg = false; PrefixedExpr(); es = PopExpState(); if(es._deref == DEREF_NO_DEREF) Error(_SC("can't delete an expression")); if(es._deref == DEREF_FIELD) Emit2ArgsOP(_OP_DELETE); else Error(_SC("cannot delete a local")); } void PrefixIncDec(SQInteger token) { ExpState es; Lex(); PushExpState(); _exst._class_or_delete = true; _exst._funcarg = false; PrefixedExpr(); es = PopExpState(); if(es._deref == DEREF_FIELD) Emit2ArgsOP(_OP_INC,token == TK_MINUSMINUS?-1:1); else { SQInteger src = _fs->PopTarget(); _fs->AddInstruction(_OP_INCL, _fs->PushTarget(), src, 0, token == TK_MINUSMINUS?-1:1); } } void CreateFunction(SQObject &name) { SQFuncState *funcstate = _fs->PushChildState(_ss(_vm)); funcstate->_name = name; SQObject paramname; funcstate->AddParameter(_fs->CreateString(_SC("this"))); funcstate->_sourcename = _sourcename; SQInteger defparams = 0; while(_token!=_SC(')')) { if(_token == TK_VARPARAMS) { if(defparams > 0) Error(_SC("function with default parameters cannot have variable number of parameters")); funcstate->_varparams = true; Lex(); if(_token != _SC(')')) Error(_SC("expected ')'")); break; } else { paramname = Expect(TK_IDENTIFIER); funcstate->AddParameter(paramname); if(_token == _SC('=')) { Lex(); Expression(); funcstate->AddDefaultParam(_fs->TopTarget()); defparams++; } else { if(defparams > 0) Error(_SC("expected '='")); } if(_token == _SC(',')) Lex(); else if(_token != _SC(')')) Error(_SC("expected ')' or ','")); } } Expect(_SC(')')); for(SQInteger n = 0; n < defparams; n++) { _fs->PopTarget(); } //outer values if(_token == _SC(':')) { Lex(); Expect(_SC('(')); while(_token != _SC(')')) { paramname = Expect(TK_IDENTIFIER); //outers are treated as implicit local variables funcstate->AddOuterValue(paramname); if(_token == _SC(',')) Lex(); else if(_token != _SC(')')) Error(_SC("expected ')' or ','")); } Lex(); } SQFuncState *currchunk = _fs; _fs = funcstate; Statement(); funcstate->AddLineInfos(_lex._prevtoken == _SC('\n')?_lex._lasttokenline:_lex._currentline, _lineinfo, true); funcstate->AddInstruction(_OP_RETURN, -1); funcstate->SetStackSize(0); //_fs->->_stacksize = _fs->_stacksize; SQFunctionProto *func = funcstate->BuildProto(); #ifdef _DEBUG_DUMP funcstate->Dump(func); #endif _fs = currchunk; _fs->_functions.push_back(func); _fs->PopChildState(); } void CleanStack(SQInteger stacksize) { if(_fs->GetStackSize() != stacksize) _fs->SetStackSize(stacksize); } void ResolveBreaks(SQFuncState *funcstate, SQInteger ntoresolve) { while(ntoresolve > 0) { SQInteger pos = funcstate->_unresolvedbreaks.back(); funcstate->_unresolvedbreaks.pop_back(); //set the jmp instruction funcstate->SetIntructionParams(pos, 0, funcstate->GetCurrentPos() - pos, 0); ntoresolve--; } } void ResolveContinues(SQFuncState *funcstate, SQInteger ntoresolve, SQInteger targetpos) { while(ntoresolve > 0) { SQInteger pos = funcstate->_unresolvedcontinues.back(); funcstate->_unresolvedcontinues.pop_back(); //set the jmp instruction funcstate->SetIntructionParams(pos, 0, targetpos - pos, 0); ntoresolve--; } } private: SQInteger _token; SQFuncState *_fs; SQObjectPtr _sourcename; SQLexer _lex; bool _lineinfo; bool _raiseerror; SQInteger _debugline; SQInteger _debugop; ExpStateVec _expstates; SQVM *_vm; }; bool Compile(SQVM *vm,SQLEXREADFUNC rg, SQUserPointer up, const SQChar *sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo) { SQCompiler p(vm, rg, up, sourcename, raiseerror, lineinfo); return p.Compile(out); } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqtable.cpp0000644000000000000000000001060612246102604022103 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" #include "sqvm.h" #include "sqtable.h" #include "sqfuncproto.h" #include "sqclosure.h" SQTable::SQTable(SQSharedState *ss,SQInteger nInitialSize) { SQInteger pow2size=MINPOWER2; while(nInitialSize>pow2size)pow2size=pow2size<<1; AllocNodes(pow2size); _usednodes = 0; _delegate = NULL; INIT_CHAIN(); ADD_TO_CHAIN(&_sharedstate->_gc_chain,this); } void SQTable::Remove(const SQObjectPtr &key) { _HashNode *n = _Get(key, HashObj(key) & (_numofnodes - 1)); if (n) { n->val = n->key = _null_; _usednodes--; Rehash(false); } } void SQTable::AllocNodes(SQInteger nSize) { _HashNode *nodes=(_HashNode *)SQ_MALLOC(sizeof(_HashNode)*nSize); for(SQInteger i=0;i= oldsize-oldsize/4) /* using more than 3/4? */ AllocNodes(oldsize*2); else if (nelems <= oldsize/4 && /* less than 1/4? */ oldsize > MINPOWER2) AllocNodes(oldsize/2); else if(force) AllocNodes(oldsize); else return; _usednodes = 0; for (SQInteger i=0; ikey) != OT_NULL) NewSlot(old->key,old->val); } for(SQInteger k=0;kNewSlot(key,val); } nt->SetDelegate(_delegate); return nt; } bool SQTable::Get(const SQObjectPtr &key,SQObjectPtr &val) { if(type(key) == OT_NULL) return false; _HashNode *n = _Get(key, HashObj(key) & (_numofnodes - 1)); if (n) { val = _realval(n->val); return true; } return false; } bool SQTable::NewSlot(const SQObjectPtr &key,const SQObjectPtr &val) { assert(type(key) != OT_NULL); SQHash h = HashObj(key) & (_numofnodes - 1); _HashNode *n = _Get(key, h); if (n) { n->val = val; return false; } _HashNode *mp = &_nodes[h]; n = mp; //key not found I'll insert it //main pos is not free if(type(mp->key) != OT_NULL) { n = _firstfree; /* get a free place */ SQHash mph = HashObj(mp->key) & (_numofnodes - 1); _HashNode *othern; /* main position of colliding node */ if (mp > n && (othern = &_nodes[mph]) != mp){ /* yes; move colliding node into free position */ while (othern->next != mp){ assert(othern->next != NULL); othern = othern->next; /* find previous */ } othern->next = n; /* redo the chain with `n' in place of `mp' */ n->key = mp->key; n->val = mp->val;/* copy colliding node into free pos. (mp->next also goes) */ n->next = mp->next; mp->key = _null_; mp->val = _null_; mp->next = NULL; /* now `mp' is free */ } else{ /* new node will go into free position */ n->next = mp->next; /* chain new position */ mp->next = n; mp = n; } } mp->key = key; for (;;) { /* correct `firstfree' */ if (type(_firstfree->key) == OT_NULL && _firstfree->next == NULL) { mp->val = val; _usednodes++; return true; /* OK; table still has a free place */ } else if (_firstfree == _nodes) break; /* cannot decrement from here */ else (_firstfree)--; } Rehash(true); return NewSlot(key, val); } SQInteger SQTable::Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) { SQInteger idx = (SQInteger)TranslateIndex(refpos); while (idx < _numofnodes) { if(type(_nodes[idx].key) != OT_NULL) { //first found _HashNode &n = _nodes[idx]; outkey = n.key; outval = getweakrefs?(SQObject)n.val:_realval(n.val); //return idx for the next iteration return ++idx; } ++idx; } //nothing to iterate anymore return -1; } bool SQTable::Set(const SQObjectPtr &key, const SQObjectPtr &val) { _HashNode *n = _Get(key, HashObj(key) & (_numofnodes - 1)); if (n) { n->val = val; return true; } return false; } void SQTable::_ClearNodes() { for(SQInteger i = 0;i < _numofnodes; i++) { _nodes[i].key = _null_; _nodes[i].val = _null_; } } void SQTable::Finalize() { _ClearNodes(); SetDelegate(NULL); } void SQTable::Clear() { _ClearNodes(); _usednodes = 0; Rehash(true); } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqobject.cpp0000644000000000000000000004324312246102604022265 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" #include "sqvm.h" #include "sqstring.h" #include "sqarray.h" #include "sqtable.h" #include "squserdata.h" #include "sqfuncproto.h" #include "sqclass.h" #include "sqclosure.h" const SQChar *IdType2Name(SQObjectType type) { switch(_RAW_TYPE(type)) { case _RT_NULL:return _SC("null"); case _RT_INTEGER:return _SC("integer"); case _RT_FLOAT:return _SC("float"); case _RT_BOOL:return _SC("bool"); case _RT_STRING:return _SC("string"); case _RT_TABLE:return _SC("table"); case _RT_ARRAY:return _SC("array"); case _RT_GENERATOR:return _SC("generator"); case _RT_CLOSURE: case _RT_NATIVECLOSURE: return _SC("function"); case _RT_USERDATA: case _RT_USERPOINTER: return _SC("userdata"); case _RT_THREAD: return _SC("thread"); case _RT_FUNCPROTO: return _SC("function"); case _RT_CLASS: return _SC("class"); case _RT_INSTANCE: return _SC("instance"); case _RT_WEAKREF: return _SC("weakref"); default: return NULL; } } const SQChar *GetTypeName(const SQObjectPtr &obj1) { return IdType2Name(type(obj1)); } SQString *SQString::Create(SQSharedState *ss,const SQChar *s,SQInteger len) { SQString *str=ADD_STRING(ss,s,len); str->_sharedstate=ss; return str; } void SQString::Release() { REMOVE_STRING(_sharedstate,this); } SQInteger SQString::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) { SQInteger idx = (SQInteger)TranslateIndex(refpos); while(idx < _len){ outkey = (SQInteger)idx; outval = SQInteger(_val[idx]); //return idx for the next iteration return ++idx; } //nothing to iterate anymore return -1; } SQUnsignedInteger TranslateIndex(const SQObjectPtr &idx) { switch(type(idx)){ case OT_NULL: return 0; case OT_INTEGER: return (SQUnsignedInteger)_integer(idx); default: assert(0); break; } return 0; } SQWeakRef *SQRefCounted::GetWeakRef(SQObjectType type) { if(!_weakref) { sq_new(_weakref,SQWeakRef); _weakref->_obj._type = type; _weakref->_obj._unVal.pRefCounted = this; } return _weakref; } SQRefCounted::~SQRefCounted() { if(_weakref) { _weakref->_obj._type = OT_NULL; _weakref->_obj._unVal.pRefCounted = NULL; } } void SQWeakRef::Release() { if(ISREFCOUNTED(_obj._type)) { _obj._unVal.pRefCounted->_weakref = NULL; } sq_delete(this,SQWeakRef); } bool SQDelegable::GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res) { if(_delegate) { return _delegate->Get((*_ss(v)->_metamethods)[mm],res); } return false; } bool SQDelegable::SetDelegate(SQTable *mt) { SQTable *temp = mt; if(temp == this) return false; while (temp) { if (temp->_delegate == this) return false; //cycle detected temp = temp->_delegate; } if (mt) __ObjAddRef(mt); __ObjRelease(_delegate); _delegate = mt; return true; } bool SQGenerator::Yield(SQVM *v) { if(_state==eSuspended) { v->Raise_Error(_SC("internal vm error, yielding dead generator")); return false;} if(_state==eDead) { v->Raise_Error(_SC("internal vm error, yielding a dead generator")); return false; } SQInteger size = v->_top-v->_stackbase; _ci=*v->ci; _stack.resize(size); for(SQInteger n =0; n_stack[v->_stackbase+n]; v->_stack[v->_stackbase+n] = _null_; } SQInteger nvargs = v->ci->_vargs.size; SQInteger vargsbase = v->ci->_vargs.base; for(SQInteger j = nvargs - 1; j >= 0; j--) { _vargsstack.push_back(v->_vargsstack[vargsbase+j]); } _ci._generator=NULL; for(SQInteger i=0;i<_ci._etraps;i++) { _etraps.push_back(v->_etraps.top()); v->_etraps.pop_back(); } _state=eSuspended; return true; } bool SQGenerator::Resume(SQVM *v,SQInteger target) { SQInteger size=_stack.size(); if(_state==eDead){ v->Raise_Error(_SC("resuming dead generator")); return false; } if(_state==eRunning){ v->Raise_Error(_SC("resuming active generator")); return false; } SQInteger prevtop=v->_top-v->_stackbase; PUSH_CALLINFO(v,_ci); SQInteger oldstackbase=v->_stackbase; v->_stackbase = v->_top; v->ci->_target = (SQInt32)target; v->ci->_generator = this; v->ci->_vargs.size = (unsigned short)_vargsstack.size(); for(SQInteger i=0;i<_ci._etraps;i++) { v->_etraps.push_back(_etraps.top()); _etraps.pop_back(); } for(SQInteger n =0; n_stack[v->_stackbase+n] = _stack._vals[n]; _stack._vals[0] = _null_; } while(_vargsstack.size()) { v->_vargsstack.push_back(_vargsstack.back()); _vargsstack.pop_back(); } v->ci->_vargs.base = (unsigned short)(v->_vargsstack.size() - v->ci->_vargs.size); v->_top=v->_stackbase+size; v->ci->_prevtop = (SQInt32)prevtop; v->ci->_prevstkbase = (SQInt32)(v->_stackbase - oldstackbase); _state=eRunning; if (type(v->_debughook) != OT_NULL && _rawval(v->_debughook) != _rawval(v->ci->_closure)) v->CallDebugHook(_SC('c')); return true; } void SQArray::Extend(const SQArray *a){ SQInteger xlen; if((xlen=a->Size())) for(SQInteger i=0;i_values[i]); } const SQChar* SQFunctionProto::GetLocal(SQVM *vm,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop) { SQUnsignedInteger nvars=_nlocalvarinfos; const SQChar *res=NULL; if(nvars>=nseq){ for(SQUnsignedInteger i=0;i=nop) { if(nseq==0){ vm->Push(vm->_stack[stackbase+_localvarinfos[i]._pos]); res=_stringval(_localvarinfos[i]._name); break; } nseq--; } } } return res; } SQInteger SQFunctionProto::GetLine(SQInstruction *curr) { SQInteger op = (SQInteger)(curr-_instructions); SQInteger line=_lineinfos[0]._line; for(SQInteger i=1;i<_nlineinfos;i++){ if(_lineinfos[i]._op>=op) return line; line=_lineinfos[i]._line; } return line; } #define _CHECK_IO(exp) { if(!exp)return false; } bool SafeWrite(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest,SQInteger size) { if(write(up,dest,size) != size) { v->Raise_Error(_SC("io error (write function failure)")); return false; } return true; } bool SafeRead(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,SQInteger size) { if(size && read(up,dest,size) != size) { v->Raise_Error(_SC("io error, read function failure, the origin stream could be corrupted/trucated")); return false; } return true; } bool WriteTag(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQInteger tag) { return SafeWrite(v,write,up,&tag,sizeof(tag)); } bool CheckTag(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQInteger tag) { SQInteger t; _CHECK_IO(SafeRead(v,read,up,&t,sizeof(t))); if(t != tag){ v->Raise_Error(_SC("invalid or corrupted closure stream")); return false; } return true; } bool WriteObject(HSQUIRRELVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o) { _CHECK_IO(SafeWrite(v,write,up,&type(o),sizeof(SQObjectType))); switch(type(o)){ case OT_STRING: _CHECK_IO(SafeWrite(v,write,up,&_string(o)->_len,sizeof(SQInteger))); _CHECK_IO(SafeWrite(v,write,up,_stringval(o),rsl(_string(o)->_len))); break; case OT_INTEGER: _CHECK_IO(SafeWrite(v,write,up,&_integer(o),sizeof(SQInteger)));break; case OT_FLOAT: _CHECK_IO(SafeWrite(v,write,up,&_float(o),sizeof(SQFloat)));break; case OT_NULL: break; default: v->Raise_Error(_SC("cannot serialize a %s"),GetTypeName(o)); return false; } return true; } bool ReadObject(HSQUIRRELVM v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &o) { SQObjectType t; _CHECK_IO(SafeRead(v,read,up,&t,sizeof(SQObjectType))); switch(t){ case OT_STRING:{ SQInteger len; _CHECK_IO(SafeRead(v,read,up,&len,sizeof(SQInteger))); _CHECK_IO(SafeRead(v,read,up,_ss(v)->GetScratchPad(rsl(len)),rsl(len))); o=SQString::Create(_ss(v),_ss(v)->GetScratchPad(-1),len); } break; case OT_INTEGER:{ SQInteger i; _CHECK_IO(SafeRead(v,read,up,&i,sizeof(SQInteger))); o = i; break; } case OT_FLOAT:{ SQFloat f; _CHECK_IO(SafeRead(v,read,up,&f,sizeof(SQFloat))); o = f; break; } case OT_NULL: o=_null_; break; default: v->Raise_Error(_SC("cannot serialize a %s"),IdType2Name(t)); return false; } return true; } bool SQClosure::Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write) { _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_HEAD)); _CHECK_IO(WriteTag(v,write,up,sizeof(SQChar))); _CHECK_IO(_funcproto(_function)->Save(v,up,write)); _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_TAIL)); return true; } bool SQClosure::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret) { _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_HEAD)); _CHECK_IO(CheckTag(v,read,up,sizeof(SQChar))); SQObjectPtr func; _CHECK_IO(SQFunctionProto::Load(v,up,read,func)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_TAIL)); ret = SQClosure::Create(_ss(v),_funcproto(func)); return true; } bool SQFunctionProto::Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write) { SQInteger i,nliterals = _nliterals,nparameters = _nparameters; SQInteger noutervalues = _noutervalues,nlocalvarinfos = _nlocalvarinfos; SQInteger nlineinfos=_nlineinfos,ninstructions = _ninstructions,nfunctions=_nfunctions; SQInteger ndefaultparams = _ndefaultparams; _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(WriteObject(v,up,write,_sourcename)); _CHECK_IO(WriteObject(v,up,write,_name)); _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeWrite(v,write,up,&nliterals,sizeof(nliterals))); _CHECK_IO(SafeWrite(v,write,up,&nparameters,sizeof(nparameters))); _CHECK_IO(SafeWrite(v,write,up,&noutervalues,sizeof(noutervalues))); _CHECK_IO(SafeWrite(v,write,up,&nlocalvarinfos,sizeof(nlocalvarinfos))); _CHECK_IO(SafeWrite(v,write,up,&nlineinfos,sizeof(nlineinfos))); _CHECK_IO(SafeWrite(v,write,up,&ndefaultparams,sizeof(ndefaultparams))); _CHECK_IO(SafeWrite(v,write,up,&ninstructions,sizeof(ninstructions))); _CHECK_IO(SafeWrite(v,write,up,&nfunctions,sizeof(nfunctions))); _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_PART)); for(i=0;iSave(v,up,write)); } _CHECK_IO(SafeWrite(v,write,up,&_stacksize,sizeof(_stacksize))); _CHECK_IO(SafeWrite(v,write,up,&_bgenerator,sizeof(_bgenerator))); _CHECK_IO(SafeWrite(v,write,up,&_varparams,sizeof(_varparams))); return true; } bool SQFunctionProto::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret) { SQInteger i, nliterals,nparameters; SQInteger noutervalues ,nlocalvarinfos ; SQInteger nlineinfos,ninstructions ,nfunctions,ndefaultparams ; SQObjectPtr sourcename, name; SQObjectPtr o; _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(ReadObject(v, up, read, sourcename)); _CHECK_IO(ReadObject(v, up, read, name)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeRead(v,read,up, &nliterals, sizeof(nliterals))); _CHECK_IO(SafeRead(v,read,up, &nparameters, sizeof(nparameters))); _CHECK_IO(SafeRead(v,read,up, &noutervalues, sizeof(noutervalues))); _CHECK_IO(SafeRead(v,read,up, &nlocalvarinfos, sizeof(nlocalvarinfos))); _CHECK_IO(SafeRead(v,read,up, &nlineinfos, sizeof(nlineinfos))); _CHECK_IO(SafeRead(v,read,up, &ndefaultparams, sizeof(ndefaultparams))); _CHECK_IO(SafeRead(v,read,up, &ninstructions, sizeof(ninstructions))); _CHECK_IO(SafeRead(v,read,up, &nfunctions, sizeof(nfunctions))); SQFunctionProto *f = SQFunctionProto::Create(ninstructions,nliterals,nparameters, nfunctions,noutervalues,nlineinfos,nlocalvarinfos,ndefaultparams); SQObjectPtr proto = f; //gets a ref in case of failure f->_sourcename = sourcename; f->_name = name; _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); for(i = 0;i < nliterals; i++){ _CHECK_IO(ReadObject(v, up, read, o)); f->_literals[i] = o; } _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); for(i = 0; i < nparameters; i++){ _CHECK_IO(ReadObject(v, up, read, o)); f->_parameters[i] = o; } _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); for(i = 0; i < noutervalues; i++){ SQUnsignedInteger type; SQObjectPtr name; _CHECK_IO(SafeRead(v,read,up, &type, sizeof(SQUnsignedInteger))); _CHECK_IO(ReadObject(v, up, read, o)); _CHECK_IO(ReadObject(v, up, read, name)); f->_outervalues[i] = SQOuterVar(name,o, (SQOuterType)type); } _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); for(i = 0; i < nlocalvarinfos; i++){ SQLocalVarInfo lvi; _CHECK_IO(ReadObject(v, up, read, lvi._name)); _CHECK_IO(SafeRead(v,read,up, &lvi._pos, sizeof(SQUnsignedInteger))); _CHECK_IO(SafeRead(v,read,up, &lvi._start_op, sizeof(SQUnsignedInteger))); _CHECK_IO(SafeRead(v,read,up, &lvi._end_op, sizeof(SQUnsignedInteger))); f->_localvarinfos[i] = lvi; } _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeRead(v,read,up, f->_lineinfos, sizeof(SQLineInfo)*nlineinfos)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeRead(v,read,up, f->_defaultparams, sizeof(SQInteger)*ndefaultparams)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeRead(v,read,up, f->_instructions, sizeof(SQInstruction)*ninstructions)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); for(i = 0; i < nfunctions; i++){ _CHECK_IO(_funcproto(o)->Load(v, up, read, o)); f->_functions[i] = o; } _CHECK_IO(SafeRead(v,read,up, &f->_stacksize, sizeof(f->_stacksize))); _CHECK_IO(SafeRead(v,read,up, &f->_bgenerator, sizeof(f->_bgenerator))); _CHECK_IO(SafeRead(v,read,up, &f->_varparams, sizeof(f->_varparams))); ret = f; return true; } #ifndef NO_GARBAGE_COLLECTOR #define START_MARK() if(!(_uiRef&MARK_FLAG)){ \ _uiRef|=MARK_FLAG; #define END_MARK() RemoveFromChain(&_sharedstate->_gc_chain, this); \ AddToChain(chain, this); } void SQVM::Mark(SQCollectable **chain) { START_MARK() SQSharedState::MarkObject(_lasterror,chain); SQSharedState::MarkObject(_errorhandler,chain); SQSharedState::MarkObject(_debughook,chain); SQSharedState::MarkObject(_roottable, chain); SQSharedState::MarkObject(temp_reg, chain); for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain); for(SQUnsignedInteger j = 0; j < _vargsstack.size(); j++) SQSharedState::MarkObject(_vargsstack[j], chain); for(SQInteger k = 0; k < _callsstacksize; k++) SQSharedState::MarkObject(_callsstack[k]._closure, chain); END_MARK() } void SQArray::Mark(SQCollectable **chain) { START_MARK() SQInteger len = _values.size(); for(SQInteger i = 0;i < len; i++) SQSharedState::MarkObject(_values[i], chain); END_MARK() } void SQTable::Mark(SQCollectable **chain) { START_MARK() if(_delegate) _delegate->Mark(chain); SQInteger len = _numofnodes; for(SQInteger i = 0; i < len; i++){ SQSharedState::MarkObject(_nodes[i].key, chain); SQSharedState::MarkObject(_nodes[i].val, chain); } END_MARK() } void SQClass::Mark(SQCollectable **chain) { START_MARK() _members->Mark(chain); if(_base) _base->Mark(chain); SQSharedState::MarkObject(_attributes, chain); for(SQUnsignedInteger i =0; i< _defaultvalues.size(); i++) { SQSharedState::MarkObject(_defaultvalues[i].val, chain); SQSharedState::MarkObject(_defaultvalues[i].attrs, chain); } for(SQUnsignedInteger j =0; j< _methods.size(); j++) { SQSharedState::MarkObject(_methods[j].val, chain); SQSharedState::MarkObject(_methods[j].attrs, chain); } for(SQUnsignedInteger k =0; k< _metamethods.size(); k++) { SQSharedState::MarkObject(_metamethods[k], chain); } END_MARK() } void SQInstance::Mark(SQCollectable **chain) { START_MARK() _class->Mark(chain); SQUnsignedInteger nvalues = _class->_defaultvalues.size(); for(SQUnsignedInteger i =0; i< nvalues; i++) { SQSharedState::MarkObject(_values[i], chain); } END_MARK() } void SQGenerator::Mark(SQCollectable **chain) { START_MARK() for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain); for(SQUnsignedInteger j = 0; j < _vargsstack.size(); j++) SQSharedState::MarkObject(_vargsstack[j], chain); SQSharedState::MarkObject(_closure, chain); END_MARK() } void SQClosure::Mark(SQCollectable **chain) { START_MARK() for(SQUnsignedInteger i = 0; i < _outervalues.size(); i++) SQSharedState::MarkObject(_outervalues[i], chain); for(SQUnsignedInteger i = 0; i < _defaultparams.size(); i++) SQSharedState::MarkObject(_defaultparams[i], chain); END_MARK() } void SQNativeClosure::Mark(SQCollectable **chain) { START_MARK() for(SQUnsignedInteger i = 0; i < _outervalues.size(); i++) SQSharedState::MarkObject(_outervalues[i], chain); END_MARK() } void SQUserData::Mark(SQCollectable **chain){ START_MARK() if(_delegate) _delegate->Mark(chain); END_MARK() } void SQCollectable::UnMark() { _uiRef&=~MARK_FLAG; } #endif openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqdebug.cpp0000644000000000000000000000700012246102604022074 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include "sqpcheader.h" #include #include "sqvm.h" #include "sqfuncproto.h" #include "sqclosure.h" #include "sqstring.h" SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi) { SQInteger cssize = v->_callsstacksize; if (cssize > level) { SQVM::CallInfo &ci = v->_callsstack[cssize-level-1]; if(sq_isclosure(ci._closure)) { SQClosure *c = _closure(ci._closure); SQFunctionProto *proto = _funcproto(c->_function); fi->funcid = proto; fi->name = type(proto->_name) == OT_STRING?_stringval(proto->_name):_SC("unknown"); fi->source = type(proto->_name) == OT_STRING?_stringval(proto->_sourcename):_SC("unknown"); return SQ_OK; } } return sq_throwerror(v,_SC("the object is not a closure")); } SQRESULT sq_stackinfos(HSQUIRRELVM v, SQInteger level, SQStackInfos *si) { SQInteger cssize = v->_callsstacksize; if (cssize > level) { memset(si, 0, sizeof(SQStackInfos)); SQVM::CallInfo &ci = v->_callsstack[cssize-level-1]; switch (type(ci._closure)) { case OT_CLOSURE:{ SQFunctionProto *func = _funcproto(_closure(ci._closure)->_function); if (type(func->_name) == OT_STRING) si->funcname = _stringval(func->_name); if (type(func->_sourcename) == OT_STRING) si->source = _stringval(func->_sourcename); si->line = func->GetLine(ci._ip); } break; case OT_NATIVECLOSURE: si->source = _SC("NATIVE"); si->funcname = _SC("unknown"); if(type(_nativeclosure(ci._closure)->_name) == OT_STRING) si->funcname = _stringval(_nativeclosure(ci._closure)->_name); si->line = -1; break; default: break; //shutup compiler } return SQ_OK; } return SQ_ERROR; } void SQVM::Raise_Error(const SQChar *s, ...) { va_list vl; va_start(vl, s); scvsprintf(_sp(rsl((SQInteger)scstrlen(s)+(NUMBER_MAX_CHAR*2))), s, vl); va_end(vl); _lasterror = SQString::Create(_ss(this),_spval,-1); } void SQVM::Raise_Error(SQObjectPtr &desc) { _lasterror = desc; } SQString *SQVM::PrintObjVal(const SQObject &o) { switch(type(o)) { case OT_STRING: return _string(o); case OT_INTEGER: #if defined(_SQ64) scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%ld"), _integer(o)); #else scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%d"), _integer(o)); #endif return SQString::Create(_ss(this), _spval); break; case OT_FLOAT: scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%.14g"), _float(o)); return SQString::Create(_ss(this), _spval); break; default: return SQString::Create(_ss(this), GetTypeName(o)); } } void SQVM::Raise_IdxError(const SQObject &o) { SQObjectPtr oval = PrintObjVal(o); Raise_Error(_SC("the index '%.50s' does not exist"), _stringval(oval)); } void SQVM::Raise_CompareError(const SQObject &o1, const SQObject &o2) { SQObjectPtr oval1 = PrintObjVal(o1), oval2 = PrintObjVal(o2); Raise_Error(_SC("comparsion between '%.50s' and '%.50s'"), _stringval(oval1), _stringval(oval2)); } void SQVM::Raise_ParamTypeError(SQInteger nparam,SQInteger typemask,SQInteger type) { SQObjectPtr exptypes = SQString::Create(_ss(this), _SC(""), -1); SQInteger found = 0; for(SQInteger i=0; i<16; i++) { SQInteger mask = 0x00000001 << i; if(typemask & (mask)) { if(found>0) StringCat(exptypes,SQString::Create(_ss(this), _SC("|"), -1), exptypes); found ++; StringCat(exptypes,SQString::Create(_ss(this), IdType2Name((SQObjectType)mask), -1), exptypes); } } Raise_Error(_SC("parameter %d has an invalid type '%s' ; expected: '%s'"), nparam, IdType2Name((SQObjectType)type), _stringval(exptypes)); } openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqtable.h0000644000000000000000000000451112246102604021546 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQTABLE_H_ #define _SQTABLE_H_ /* * The following code is based on Lua 4.0 (Copyright 1994-2002 Tecgraf, PUC-Rio.) * http://www.lua.org/copyright.html#4 * http://www.lua.org/source/4.0.1/src_ltable.c.html */ #include "sqstring.h" #define hashptr(p) ((SQHash)(((SQInteger)p) >> 3)) inline SQHash HashObj(const SQObjectPtr &key) { switch(type(key)) { case OT_STRING: return _string(key)->_hash; case OT_FLOAT: return (SQHash)((SQInteger)_float(key)); case OT_BOOL: case OT_INTEGER: return (SQHash)((SQInteger)_integer(key)); default: return hashptr(key._unVal.pRefCounted); } } struct SQTable : public SQDelegable { private: struct _HashNode { _HashNode() { next = NULL; } SQObjectPtr val; SQObjectPtr key; _HashNode *next; }; _HashNode *_firstfree; _HashNode *_nodes; SQInteger _numofnodes; SQInteger _usednodes; /////////////////////////// void AllocNodes(SQInteger nSize); void Rehash(bool force); SQTable(SQSharedState *ss, SQInteger nInitialSize); void _ClearNodes(); public: static SQTable* Create(SQSharedState *ss,SQInteger nInitialSize) { SQTable *newtable = (SQTable*)SQ_MALLOC(sizeof(SQTable)); new (newtable) SQTable(ss, nInitialSize); newtable->_delegate = NULL; return newtable; } void Finalize(); SQTable *Clone(); ~SQTable() { SetDelegate(NULL); REMOVE_FROM_CHAIN(&_sharedstate->_gc_chain, this); for (SQInteger i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode(); SQ_FREE(_nodes, _numofnodes * sizeof(_HashNode)); } #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); #endif inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash) { _HashNode *n = &_nodes[hash]; do{ if(_rawval(n->key) == _rawval(key) && type(n->key) == type(key)){ return n; } }while((n = n->next)); return NULL; } bool Get(const SQObjectPtr &key,SQObjectPtr &val); void Remove(const SQObjectPtr &key); bool Set(const SQObjectPtr &key, const SQObjectPtr &val); //returns true if a new slot has been created false if it was already present bool NewSlot(const SQObjectPtr &key,const SQObjectPtr &val); SQInteger Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); SQInteger CountUsed(){ return _usednodes;} void Clear(); void Release() { sq_delete(this, SQTable); } }; #endif //_SQTABLE_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqarray.h0000644000000000000000000000455412246102604021604 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQARRAY_H_ #define _SQARRAY_H_ struct SQArray : public CHAINABLE_OBJ { private: SQArray(SQSharedState *ss,SQInteger nsize){_values.resize(nsize); INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);} ~SQArray() { REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this); } public: static SQArray* Create(SQSharedState *ss,SQInteger nInitialSize){ SQArray *newarray=(SQArray*)SQ_MALLOC(sizeof(SQArray)); new (newarray) SQArray(ss,nInitialSize); return newarray; } #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); #endif void Finalize(){ _values.resize(0); } bool Get(const SQInteger nidx,SQObjectPtr &val) { if(nidx>=0 && nidx<(SQInteger)_values.size()){ SQObjectPtr &o = _values[nidx]; val = _realval(o); return true; } else return false; } bool Set(const SQInteger nidx,const SQObjectPtr &val) { if(nidx>=0 && nidx<(SQInteger)_values.size()){ _values[nidx]=val; return true; } else return false; } SQInteger Next(const SQObjectPtr &refpos,SQObjectPtr &outkey,SQObjectPtr &outval) { SQUnsignedInteger idx=TranslateIndex(refpos); while(idx<_values.size()){ //first found outkey=(SQInteger)idx; SQObjectPtr &o = _values[idx]; outval = _realval(o); //return idx for the next iteration return ++idx; } //nothing to iterate anymore return -1; } SQArray *Clone(){SQArray *anew=Create(_opt_ss(this),Size()); anew->_values.copy(_values); return anew; } SQInteger Size() const {return _values.size();} void Resize(SQInteger size,SQObjectPtr &fill = _null_) { _values.resize(size,fill); ShrinkIfNeeded(); } void Reserve(SQInteger size) { _values.reserve(size); } void Append(const SQObject &o){_values.push_back(o);} void Extend(const SQArray *a); SQObjectPtr &Top(){return _values.top();} void Pop(){_values.pop_back(); ShrinkIfNeeded(); } bool Insert(SQInteger idx,const SQObject &val){ if(idx < 0 || idx > (SQInteger)_values.size()) return false; _values.insert(idx,val); return true; } void ShrinkIfNeeded() { if(_values.size() <= _values.capacity()>>2) //shrink the array _values.shrinktofit(); } bool Remove(SQInteger idx){ if(idx < 0 || idx >= (SQInteger)_values.size()) return false; _values.remove(idx); ShrinkIfNeeded(); return true; } void Release() { sq_delete(this,SQArray); } SQObjectPtrVec _values; }; #endif //_SQARRAY_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqbaselib.cpp0000644000000000000000000005724212246102604022424 0ustar rootroot/* see copyright notice in squirrel.h */ /* Needs to be first due to a squirrel header defining type() and type() * being used in some versions of the headers included by algorithm. */ #include #include "sqpcheader.h" #include "sqvm.h" #include "sqstring.h" #include "sqtable.h" #include "sqarray.h" #include "sqfuncproto.h" #include "sqclosure.h" #include "sqclass.h" #include #include #include bool str2num(const SQChar *s,SQObjectPtr &res) { SQChar *end; if(scstrstr(s,_SC("."))){ SQFloat r = SQFloat(scstrtod(s,&end)); if(s == end) return false; res = r; return true; } else{ SQInteger r = SQInteger(scstrtol(s,&end,10)); if(s == end) return false; res = r; return true; } } #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS static SQInteger base_dummy(HSQUIRRELVM v) { return 0; } #ifndef NO_GARBAGE_COLLECTOR static SQInteger base_collectgarbage(HSQUIRRELVM v) { sq_pushinteger(v, sq_collectgarbage(v)); return 1; } #endif static SQInteger base_getroottable(HSQUIRRELVM v) { v->Push(v->_roottable); return 1; } static SQInteger base_getconsttable(HSQUIRRELVM v) { v->Push(_ss(v)->_consts); return 1; } static SQInteger base_setroottable(HSQUIRRELVM v) { SQObjectPtr &o=stack_get(v,2); if(SQ_FAILED(sq_setroottable(v))) return SQ_ERROR; v->Push(o); return 1; } static SQInteger base_setconsttable(HSQUIRRELVM v) { SQObjectPtr &o=stack_get(v,2); if(SQ_FAILED(sq_setconsttable(v))) return SQ_ERROR; v->Push(o); return 1; } static SQInteger base_seterrorhandler(HSQUIRRELVM v) { sq_seterrorhandler(v); return 0; } static SQInteger base_setdebughook(HSQUIRRELVM v) { sq_setdebughook(v); return 0; } static SQInteger base_enabledebuginfo(HSQUIRRELVM v) { SQObjectPtr &o=stack_get(v,2); sq_enabledebuginfo(v,(type(o) != OT_NULL)?1:0); return 0; } static SQInteger base_getstackinfos(HSQUIRRELVM v) { SQInteger level; SQStackInfos si; SQInteger seq = 0; const SQChar *name = NULL; sq_getinteger(v, -1, &level); if (SQ_SUCCEEDED(sq_stackinfos(v, level, &si))) { const SQChar *fn = _SC("unknown"); const SQChar *src = _SC("unknown"); if(si.funcname)fn = si.funcname; if(si.source)src = si.source; sq_newtable(v); sq_pushstring(v, _SC("func"), -1); sq_pushstring(v, fn, -1); sq_createslot(v, -3); sq_pushstring(v, _SC("src"), -1); sq_pushstring(v, src, -1); sq_createslot(v, -3); sq_pushstring(v, _SC("line"), -1); sq_pushinteger(v, si.line); sq_createslot(v, -3); sq_pushstring(v, _SC("locals"), -1); sq_newtable(v); seq=0; while ((name = sq_getlocal(v, level, seq))) { sq_pushstring(v, name, -1); sq_push(v, -2); sq_createslot(v, -4); sq_pop(v, 1); seq++; } sq_createslot(v, -3); return 1; } return 0; } #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ static SQInteger base_assert(HSQUIRRELVM v) { if(v->IsFalse(stack_get(v,2))){ return sq_throwerror(v,_SC("assertion failed")); } return 0; } static SQInteger get_slice_params(HSQUIRRELVM v,SQInteger &sidx,SQInteger &eidx,SQObjectPtr &o) { SQInteger top = sq_gettop(v); sidx=0; eidx=0; o=stack_get(v,1); SQObjectPtr &start=stack_get(v,2); if(type(start)!=OT_NULL && sq_isnumeric(start)){ sidx=tointeger(start); } if(top>2){ SQObjectPtr &end=stack_get(v,3); if(sq_isnumeric(end)){ eidx=tointeger(end); } } else { eidx = sq_getsize(v,1); } return 1; } static SQInteger base_print(HSQUIRRELVM v) { const SQChar *str; sq_tostring(v,2); sq_getstring(v,-1,&str); if(_ss(v)->_printfunc) _ss(v)->_printfunc(v,_SC("%s"),str); return 0; } #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS static SQInteger base_compilestring(HSQUIRRELVM v) { SQInteger nargs=sq_gettop(v); const SQChar *src=NULL,*name=_SC("unnamedbuffer"); SQInteger size; sq_getstring(v,2,&src); size=sq_getsize(v,2); if(nargs>2){ sq_getstring(v,3,&name); } if(SQ_SUCCEEDED(sq_compilebuffer(v,src,size,name,SQFalse))) return 1; else return SQ_ERROR; } static SQInteger base_newthread(HSQUIRRELVM v) { SQObjectPtr &func = stack_get(v,2); SQInteger stksize = (_funcproto(_closure(func)->_function)->_stacksize << 1) +2; HSQUIRRELVM newv = sq_newthread(v, (stksize < MIN_STACK_OVERHEAD + 2)? MIN_STACK_OVERHEAD + 2 : stksize); sq_move(newv,v,-2); return 1; } static SQInteger base_suspend(HSQUIRRELVM v) { return sq_suspendvm(v); } #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ static SQInteger base_array(HSQUIRRELVM v) { SQArray *a; SQInteger nInitialSize = tointeger(stack_get(v,2)); SQInteger ret = 1; if (nInitialSize < 0) { v->Raise_Error(_SC("can't create/resize array with/to size %d"), nInitialSize); nInitialSize = 0; ret = -1; } if(sq_gettop(v) > 2) { a = SQArray::Create(_ss(v),0); a->Resize(nInitialSize,stack_get(v,3)); } else { a = SQArray::Create(_ss(v),nInitialSize); } v->Push(a); return ret; } static SQInteger base_type(HSQUIRRELVM v) { SQObjectPtr &o = stack_get(v,2); v->Push(SQString::Create(_ss(v),GetTypeName(o),-1)); return 1; } static SQRegFunction base_funcs[]={ //generic #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS {_SC("seterrorhandler"),base_seterrorhandler,2, NULL}, {_SC("setdebughook"),base_setdebughook,2, NULL}, {_SC("enabledebuginfo"),base_enabledebuginfo,2, NULL}, {_SC("getstackinfos"),base_getstackinfos,2, _SC(".n")}, {_SC("getroottable"),base_getroottable,1, NULL}, {_SC("setroottable"),base_setroottable,2, NULL}, {_SC("getconsttable"),base_getconsttable,1, NULL}, {_SC("setconsttable"),base_setconsttable,2, NULL}, #endif {_SC("assert"),base_assert,2, NULL}, {_SC("print"),base_print,2, NULL}, #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS {_SC("compilestring"),base_compilestring,-2, _SC(".ss")}, {_SC("newthread"),base_newthread,2, _SC(".c")}, {_SC("suspend"),base_suspend,-1, NULL}, #endif {_SC("array"),base_array,-2, _SC(".n")}, {_SC("type"),base_type,2, NULL}, #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS {_SC("dummy"),base_dummy,0,NULL}, #ifndef NO_GARBAGE_COLLECTOR {_SC("collectgarbage"),base_collectgarbage,1, _SC("t")}, #endif #endif {0,0,0,0} }; void sq_base_register(HSQUIRRELVM v) { SQInteger i=0; sq_pushroottable(v); while(base_funcs[i].name!=0) { sq_pushstring(v,base_funcs[i].name,-1); sq_newclosure(v,base_funcs[i].f,0); sq_setnativeclosurename(v,-1,base_funcs[i].name); sq_setparamscheck(v,base_funcs[i].nparamscheck,base_funcs[i].typemask); sq_createslot(v,-3); i++; } sq_pushstring(v,_SC("_version_"),-1); sq_pushstring(v,SQUIRREL_VERSION,-1); sq_createslot(v,-3); sq_pushstring(v,_SC("_charsize_"),-1); sq_pushinteger(v,sizeof(SQChar)); sq_createslot(v,-3); sq_pushstring(v,_SC("_intsize_"),-1); sq_pushinteger(v,sizeof(SQInteger)); sq_createslot(v,-3); sq_pushstring(v,_SC("_floatsize_"),-1); sq_pushinteger(v,sizeof(SQFloat)); sq_createslot(v,-3); sq_pop(v,1); } static SQInteger default_delegate_len(HSQUIRRELVM v) { v->Push(SQInteger(sq_getsize(v,1))); return 1; } static SQInteger default_delegate_tofloat(HSQUIRRELVM v) { SQObjectPtr &o=stack_get(v,1); switch(type(o)){ case OT_STRING:{ SQObjectPtr res; if(str2num(_stringval(o),res)){ v->Push(SQObjectPtr(tofloat(res))); break; }} return sq_throwerror(v, _SC("cannot convert the string")); break; case OT_INTEGER:case OT_FLOAT: v->Push(SQObjectPtr(tofloat(o))); break; case OT_BOOL: v->Push(SQObjectPtr((SQFloat)(_integer(o)?1:0))); break; default: v->Push(_null_); break; } return 1; } static SQInteger default_delegate_tointeger(HSQUIRRELVM v) { SQObjectPtr &o=stack_get(v,1); switch(type(o)){ case OT_STRING:{ SQObjectPtr res; if(str2num(_stringval(o),res)){ v->Push(SQObjectPtr(tointeger(res))); break; }} return sq_throwerror(v, _SC("cannot convert the string")); break; case OT_INTEGER:case OT_FLOAT: v->Push(SQObjectPtr(tointeger(o))); break; case OT_BOOL: v->Push(SQObjectPtr(_integer(o)?(SQInteger)1:(SQInteger)0)); break; default: v->Push(_null_); break; } return 1; } static SQInteger default_delegate_tostring(HSQUIRRELVM v) { sq_tostring(v,1); return 1; } static SQInteger obj_delegate_weakref(HSQUIRRELVM v) { sq_weakref(v,1); return 1; } static SQInteger obj_clear(HSQUIRRELVM v) { return sq_clear(v,-1); } static SQInteger number_delegate_tochar(HSQUIRRELVM v) { SQObject &o=stack_get(v,1); SQChar c = (SQChar)tointeger(o); v->Push(SQString::Create(_ss(v),(const SQChar *)&c,1)); return 1; } ///////////////////////////////////////////////////////////////// //TABLE DEFAULT DELEGATE static SQInteger table_rawdelete(HSQUIRRELVM v) { if(SQ_FAILED(sq_rawdeleteslot(v,1,SQTrue))) return SQ_ERROR; return 1; } static SQInteger container_rawexists(HSQUIRRELVM v) { if(SQ_SUCCEEDED(sq_rawget(v,-2))) { sq_pushbool(v,SQTrue); return 1; } sq_pushbool(v,SQFalse); return 1; } static SQInteger table_rawset(HSQUIRRELVM v) { return sq_rawset(v,-3); } static SQInteger table_rawget(HSQUIRRELVM v) { return SQ_SUCCEEDED(sq_rawget(v,-2))?1:SQ_ERROR; } SQRegFunction SQSharedState::_table_default_delegate_funcz[]={ {_SC("len"),default_delegate_len,1, _SC("t")}, {_SC("rawget"),table_rawget,2, _SC("t")}, {_SC("rawset"),table_rawset,3, _SC("t")}, {_SC("rawdelete"),table_rawdelete,2, _SC("t")}, {_SC("rawin"),container_rawexists,2, _SC("t")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {_SC("clear"),obj_clear,1, _SC(".")}, {0,0,0,0} }; //ARRAY DEFAULT DELEGATE/////////////////////////////////////// static SQInteger array_append(HSQUIRRELVM v) { return sq_arrayappend(v,-2); } static SQInteger array_extend(HSQUIRRELVM v) { _array(stack_get(v,1))->Extend(_array(stack_get(v,2))); return 0; } static SQInteger array_reverse(HSQUIRRELVM v) { return sq_arrayreverse(v,-1); } static SQInteger array_pop(HSQUIRRELVM v) { return SQ_SUCCEEDED(sq_arraypop(v,1,SQTrue))?1:SQ_ERROR; } static SQInteger array_top(HSQUIRRELVM v) { SQObject &o=stack_get(v,1); if(_array(o)->Size()>0){ v->Push(_array(o)->Top()); return 1; } else return sq_throwerror(v,_SC("top() on a empty array")); } static SQInteger array_insert(HSQUIRRELVM v) { SQObject &o=stack_get(v,1); SQObject &idx=stack_get(v,2); SQObject &val=stack_get(v,3); if(!_array(o)->Insert(tointeger(idx),val)) return sq_throwerror(v,_SC("index out of range")); return 0; } static SQInteger array_remove(HSQUIRRELVM v) { SQObject &o = stack_get(v, 1); SQObject &idx = stack_get(v, 2); if(!sq_isnumeric(idx)) return sq_throwerror(v, _SC("wrong type")); SQObjectPtr val; if(_array(o)->Get(tointeger(idx), val)) { _array(o)->Remove(tointeger(idx)); v->Push(val); return 1; } return sq_throwerror(v, _SC("idx out of range")); } static SQInteger array_resize(HSQUIRRELVM v) { SQObject &o = stack_get(v, 1); SQObject &nsize = stack_get(v, 2); SQObjectPtr fill; if(sq_isnumeric(nsize)) { if(sq_gettop(v) > 2) fill = stack_get(v, 3); _array(o)->Resize(tointeger(nsize),fill); return 0; } return sq_throwerror(v, _SC("size must be a number")); } bool _sort_compare(HSQUIRRELVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger func,SQInteger &ret) { if(func < 0) { if(!v->ObjCmp(a,b,ret)) return false; } else { SQInteger top = sq_gettop(v); sq_push(v, func); sq_pushroottable(v); v->Push(a); v->Push(b); if(SQ_FAILED(sq_call(v, 3, SQTrue, SQFalse))) { if(!sq_isstring( v->_lasterror)) v->Raise_Error(_SC("compare func failed")); return false; } if(SQ_FAILED(sq_getinteger(v, -1, &ret))) { v->Raise_Error(_SC("numeric value expected as return value of the compare function")); return false; } sq_settop(v, top); return true; } return true; } bool _hsort_sift_down(HSQUIRRELVM v,SQArray *arr, SQInteger root, SQInteger bottom, SQInteger func) { SQInteger maxChild; SQInteger done = 0; SQInteger ret; SQInteger root2; while (((root2 = root * 2) <= bottom) && (!done)) { if (root2 == bottom) { maxChild = root2; } else { if(!_sort_compare(v,arr->_values[root2],arr->_values[root2 + 1],func,ret)) return false; if (ret > 0) { maxChild = root2; } else { maxChild = root2 + 1; } } if(!_sort_compare(v,arr->_values[root],arr->_values[maxChild],func,ret)) return false; if (ret < 0) { if (root == maxChild) { v->Raise_Error(_SC("inconsistent compare function")); return false; // We'd be swapping ourselve. The compare function is incorrect } _Swap(arr->_values[root],arr->_values[maxChild]); root = maxChild; } else { done = 1; } } return true; } bool _hsort(HSQUIRRELVM v,SQObjectPtr &arr, SQInteger l, SQInteger r,SQInteger func) { SQArray *a = _array(arr); SQInteger i; SQInteger array_size = a->Size(); for (i = (array_size / 2); i >= 0; i--) { if(!_hsort_sift_down(v,a, i, array_size - 1,func)) return false; } for (i = array_size-1; i >= 1; i--) { _Swap(a->_values[0],a->_values[i]); if(!_hsort_sift_down(v,a, 0, i-1,func)) return false; } return true; } static SQInteger array_sort(HSQUIRRELVM v) { SQInteger func = -1; SQObjectPtr &o = stack_get(v,1); if(_array(o)->Size() > 1) { if(sq_gettop(v) == 2) func = 2; if(!_hsort(v, o, 0, _array(o)->Size()-1, func)) return SQ_ERROR; } return 0; } static SQInteger array_slice(HSQUIRRELVM v) { SQInteger sidx,eidx; SQObjectPtr o; if(get_slice_params(v,sidx,eidx,o)==-1)return -1; SQInteger alen = _array(o)->Size(); if(sidx < 0)sidx = alen + sidx; if(eidx < 0)eidx = alen + eidx; if(eidx < sidx)return sq_throwerror(v,_SC("wrong indexes")); if(eidx > alen)return sq_throwerror(v,_SC("slice out of range")); SQArray *arr=SQArray::Create(_ss(v),eidx-sidx); SQObjectPtr t; SQInteger count=0; for(SQInteger i=sidx;iGet(i,t); arr->Set(count++,t); } v->Push(arr); return 1; } SQRegFunction SQSharedState::_array_default_delegate_funcz[]={ {_SC("len"),default_delegate_len,1, _SC("a")}, {_SC("append"),array_append,2, _SC("a")}, {_SC("extend"),array_extend,2, _SC("aa")}, {_SC("push"),array_append,2, _SC("a")}, {_SC("pop"),array_pop,1, _SC("a")}, {_SC("top"),array_top,1, _SC("a")}, {_SC("insert"),array_insert,3, _SC("an")}, {_SC("remove"),array_remove,2, _SC("an")}, {_SC("resize"),array_resize,-2, _SC("an")}, {_SC("reverse"),array_reverse,1, _SC("a")}, {_SC("sort"),array_sort,-1, _SC("ac")}, {_SC("slice"),array_slice,-1, _SC("ann")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {_SC("clear"),obj_clear,1, _SC(".")}, {0,0,0,0} }; //STRING DEFAULT DELEGATE////////////////////////// static SQInteger string_slice(HSQUIRRELVM v) { SQInteger sidx,eidx; SQObjectPtr o; if(SQ_FAILED(get_slice_params(v,sidx,eidx,o)))return -1; SQInteger slen = _string(o)->_len; if(sidx < 0)sidx = slen + sidx; if(eidx < 0)eidx = slen + eidx; if(eidx < sidx) return sq_throwerror(v,_SC("wrong indexes")); if(eidx > slen) return sq_throwerror(v,_SC("slice out of range")); v->Push(SQString::Create(_ss(v),&_stringval(o)[sidx],eidx-sidx)); return 1; } static SQInteger string_find(HSQUIRRELVM v) { SQInteger top,start_idx=0; const SQChar *str,*substr,*ret; if(((top=sq_gettop(v))>1) && SQ_SUCCEEDED(sq_getstring(v,1,&str)) && SQ_SUCCEEDED(sq_getstring(v,2,&substr))){ if(top>2)sq_getinteger(v,3,&start_idx); if((sq_getsize(v,1)>start_idx) && (start_idx>=0)){ ret=scstrstr(&str[start_idx],substr); if(ret){ sq_pushinteger(v,(SQInteger)(ret-str)); return 1; } } return 0; } return sq_throwerror(v,_SC("invalid param")); } #define STRING_TOFUNCZ(func) static SQInteger string_##func(HSQUIRRELVM v) \ { \ SQObject str=stack_get(v,1); \ SQInteger len=_string(str)->_len; \ const SQChar *sThis=_stringval(str); \ SQChar *sNew=(_ss(v)->GetScratchPad(rsl(len))); \ for(SQInteger i=0;iPush(SQString::Create(_ss(v),sNew,len)); \ return 1; \ } STRING_TOFUNCZ(tolower) STRING_TOFUNCZ(toupper) SQRegFunction SQSharedState::_string_default_delegate_funcz[]={ {_SC("len"),default_delegate_len,1, _SC("s")}, {_SC("tointeger"),default_delegate_tointeger,1, _SC("s")}, {_SC("tofloat"),default_delegate_tofloat,1, _SC("s")}, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {_SC("slice"),string_slice,-1, _SC(" s n n")}, {_SC("find"),string_find,-2, _SC("s s n ")}, {_SC("tolower"),string_tolower,1, _SC("s")}, {_SC("toupper"),string_toupper,1, _SC("s")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {0,0,0,0} }; //INTEGER DEFAULT DELEGATE////////////////////////// SQRegFunction SQSharedState::_number_default_delegate_funcz[]={ {_SC("tointeger"),default_delegate_tointeger,1, _SC("n|b")}, {_SC("tofloat"),default_delegate_tofloat,1, _SC("n|b")}, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {_SC("tochar"),number_delegate_tochar,1, _SC("n|b")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {0,0,0,0} }; //CLOSURE DEFAULT DELEGATE////////////////////////// static SQInteger closure_pcall(HSQUIRRELVM v) { return SQ_SUCCEEDED(sq_call(v,sq_gettop(v)-1,SQTrue,SQFalse))?1:SQ_ERROR; } static SQInteger closure_call(HSQUIRRELVM v) { return SQ_SUCCEEDED(sq_call(v,sq_gettop(v)-1,SQTrue,SQTrue))?1:SQ_ERROR; } static SQInteger _closure_acall(HSQUIRRELVM v,SQBool raiseerror) { SQArray *aparams=_array(stack_get(v,2)); SQInteger nparams=aparams->Size(); v->Push(stack_get(v,1)); for(SQInteger i=0;iPush(aparams->_values[i]); return SQ_SUCCEEDED(sq_call(v,nparams,SQTrue,raiseerror))?1:SQ_ERROR; } static SQInteger closure_acall(HSQUIRRELVM v) { return _closure_acall(v,SQTrue); } static SQInteger closure_pacall(HSQUIRRELVM v) { return _closure_acall(v,SQFalse); } static SQInteger closure_bindenv(HSQUIRRELVM v) { if(SQ_FAILED(sq_bindenv(v,1))) return SQ_ERROR; return 1; } static SQInteger closure_getinfos(HSQUIRRELVM v) { SQObject o = stack_get(v,1); SQTable *res = SQTable::Create(_ss(v),4); if(type(o) == OT_CLOSURE) { SQFunctionProto *f = _funcproto(_closure(o)->_function); SQInteger nparams = f->_nparameters + (f->_varparams?1:0); SQObjectPtr params = SQArray::Create(_ss(v),nparams); for(SQInteger n = 0; n_nparameters; n++) { _array(params)->Set((SQInteger)n,f->_parameters[n]); } if(f->_varparams) { _array(params)->Set(nparams-1,SQString::Create(_ss(v),_SC("..."),-1)); } res->NewSlot(SQString::Create(_ss(v),_SC("native"),-1),false); res->NewSlot(SQString::Create(_ss(v),_SC("name"),-1),f->_name); res->NewSlot(SQString::Create(_ss(v),_SC("src"),-1),f->_sourcename); res->NewSlot(SQString::Create(_ss(v),_SC("parameters"),-1),params); res->NewSlot(SQString::Create(_ss(v),_SC("varargs"),-1),f->_varparams); } else { //OT_NATIVECLOSURE SQNativeClosure *nc = _nativeclosure(o); res->NewSlot(SQString::Create(_ss(v),_SC("native"),-1),true); res->NewSlot(SQString::Create(_ss(v),_SC("name"),-1),nc->_name); res->NewSlot(SQString::Create(_ss(v),_SC("paramscheck"),-1),nc->_nparamscheck); SQObjectPtr typecheck; if(nc->_typecheck.size() > 0) { typecheck = SQArray::Create(_ss(v), nc->_typecheck.size()); for(SQUnsignedInteger n = 0; n_typecheck.size(); n++) { _array(typecheck)->Set((SQInteger)n,nc->_typecheck[n]); } } res->NewSlot(SQString::Create(_ss(v),_SC("typecheck"),-1),typecheck); } v->Push(res); return 1; } SQRegFunction SQSharedState::_closure_default_delegate_funcz[]={ {_SC("call"),closure_call,-1, _SC("c")}, {_SC("pcall"),closure_pcall,-1, _SC("c")}, {_SC("acall"),closure_acall,2, _SC("ca")}, {_SC("pacall"),closure_pacall,2, _SC("ca")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {_SC("bindenv"),closure_bindenv,2, _SC("c x|y|t")}, {_SC("getinfos"),closure_getinfos,1, _SC("c")}, {0,0,0,0} }; //GENERATOR DEFAULT DELEGATE static SQInteger generator_getstatus(HSQUIRRELVM v) { SQObject &o=stack_get(v,1); switch(_generator(o)->_state){ case SQGenerator::eSuspended:v->Push(SQString::Create(_ss(v),_SC("suspended")));break; case SQGenerator::eRunning:v->Push(SQString::Create(_ss(v),_SC("running")));break; case SQGenerator::eDead:v->Push(SQString::Create(_ss(v),_SC("dead")));break; } return 1; } SQRegFunction SQSharedState::_generator_default_delegate_funcz[]={ {_SC("getstatus"),generator_getstatus,1, _SC("g")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {0,0,0,0} }; //THREAD DEFAULT DELEGATE static SQInteger thread_call(HSQUIRRELVM v) { SQObjectPtr o = stack_get(v,1); if(type(o) == OT_THREAD) { SQInteger nparams = sq_gettop(v); _thread(o)->Push(_thread(o)->_roottable); for(SQInteger i = 2; i<(nparams+1); i++) sq_move(_thread(o),v,i); if(SQ_SUCCEEDED(sq_call(_thread(o),nparams,SQTrue,SQFalse))) { sq_move(v,_thread(o),-1); sq_pop(_thread(o),1); return 1; } v->_lasterror = _thread(o)->_lasterror; return SQ_ERROR; } return sq_throwerror(v,_SC("wrong parameter")); } static SQInteger thread_wakeup(HSQUIRRELVM v) { SQObjectPtr o = stack_get(v,1); if(type(o) == OT_THREAD) { SQVM *thread = _thread(o); SQInteger state = sq_getvmstate(thread); if(state != SQ_VMSTATE_SUSPENDED) { switch(state) { case SQ_VMSTATE_IDLE: return sq_throwerror(v,_SC("cannot wakeup a idle thread")); break; case SQ_VMSTATE_RUNNING: return sq_throwerror(v,_SC("cannot wakeup a running thread")); break; } } SQInteger wakeupret = sq_gettop(v)>1?1:0; if(wakeupret) { sq_move(thread,v,2); } if(SQ_SUCCEEDED(sq_wakeupvm(thread,wakeupret,SQTrue,SQTrue,SQFalse))) { sq_move(v,thread,-1); sq_pop(thread,1); //pop retval if(sq_getvmstate(thread) == SQ_VMSTATE_IDLE) { sq_settop(thread,1); //pop roottable } return 1; } sq_settop(thread,1); v->_lasterror = thread->_lasterror; return SQ_ERROR; } return sq_throwerror(v,_SC("wrong parameter")); } static SQInteger thread_getstatus(HSQUIRRELVM v) { SQObjectPtr &o = stack_get(v,1); switch(sq_getvmstate(_thread(o))) { case SQ_VMSTATE_IDLE: sq_pushstring(v,_SC("idle"),-1); break; case SQ_VMSTATE_RUNNING: sq_pushstring(v,_SC("running"),-1); break; case SQ_VMSTATE_SUSPENDED: sq_pushstring(v,_SC("suspended"),-1); break; default: return sq_throwerror(v,_SC("internal VM error")); } return 1; } SQRegFunction SQSharedState::_thread_default_delegate_funcz[] = { {_SC("call"), thread_call, -1, _SC("v")}, {_SC("wakeup"), thread_wakeup, -1, _SC("v")}, {_SC("getstatus"), thread_getstatus, 1, _SC("v")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {0,0,0,0}, }; static SQInteger class_getattributes(HSQUIRRELVM v) { if(SQ_SUCCEEDED(sq_getattributes(v,-2))) return 1; return SQ_ERROR; } static SQInteger class_setattributes(HSQUIRRELVM v) { if(SQ_SUCCEEDED(sq_setattributes(v,-3))) return 1; return SQ_ERROR; } static SQInteger class_instance(HSQUIRRELVM v) { if(SQ_SUCCEEDED(sq_createinstance(v,-1))) return 1; return SQ_ERROR; } SQRegFunction SQSharedState::_class_default_delegate_funcz[] = { {_SC("getattributes"), class_getattributes, 2, _SC("y.")}, {_SC("setattributes"), class_setattributes, 3, _SC("y..")}, {_SC("rawin"),container_rawexists,2, _SC("y")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {_SC("instance"),class_instance,1, _SC("y")}, {0,0,0,0} }; static SQInteger instance_getclass(HSQUIRRELVM v) { if(SQ_SUCCEEDED(sq_getclass(v,1))) return 1; return SQ_ERROR; } SQRegFunction SQSharedState::_instance_default_delegate_funcz[] = { {_SC("getclass"), instance_getclass, 1, _SC("x")}, {_SC("rawin"),container_rawexists,2, _SC("x")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {0,0,0,0} }; static SQInteger weakref_ref(HSQUIRRELVM v) { if(SQ_FAILED(sq_getweakrefval(v,1))) return SQ_ERROR; return 1; } SQRegFunction SQSharedState::_weakref_default_delegate_funcz[] = { {_SC("ref"),weakref_ref,1, _SC("r")}, {_SC("weakref"),obj_delegate_weakref,1, NULL }, {_SC("tostring"),default_delegate_tostring,1, _SC(".")}, {0,0,0,0} }; openttd-1.3.3/src/3rdparty/squirrel/squirrel/squserdata.h0000644000000000000000000000163512246102604022273 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQUSERDATA_H_ #define _SQUSERDATA_H_ struct SQUserData : SQDelegable { SQUserData(SQSharedState *ss){ _delegate = 0; _hook = NULL; INIT_CHAIN(); ADD_TO_CHAIN(&_ss(this)->_gc_chain, this); } ~SQUserData() { REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain, this); SetDelegate(NULL); } static SQUserData* Create(SQSharedState *ss, SQInteger size) { SQUserData* ud = (SQUserData*)SQ_MALLOC(sizeof(SQUserData)+(size-1)); new (ud) SQUserData(ss); ud->_size = size; ud->_typetag = 0; return ud; } #ifndef NO_GARBAGE_COLLECTOR void Mark(SQCollectable **chain); void Finalize(){SetDelegate(NULL);} #endif void Release() { if (_hook) _hook(_val,_size); SQInteger tsize = _size - 1; this->~SQUserData(); SQ_FREE(this, sizeof(SQUserData) + tsize); } SQInteger _size; SQRELEASEHOOK _hook; SQUserPointer _typetag; SQChar _val[1]; }; #endif //_SQUSERDATA_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqmem.cpp0000644000000000000000000000046012246102604021567 0ustar rootroot/* see copyright notice in squirrel.h */ #include "sqpcheader.h" void *sq_vm_malloc(SQUnsignedInteger size){ return malloc(size); } void *sq_vm_realloc(void *p, SQUnsignedInteger oldsize, SQUnsignedInteger size){ return realloc(p, size); } void sq_vm_free(void *p, SQUnsignedInteger size){ free(p); } openttd-1.3.3/src/3rdparty/squirrel/squirrel/squirrel.dsp0000644000000000000000000001334012246102604022320 0ustar rootroot# Microsoft Developer Studio Project File - Name="squirrel" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=squirrel - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "squirrel.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "squirrel.mak" CFG="squirrel - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "squirrel - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "squirrel - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_LocalPath ".." CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "squirrel - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "GARBAGE_COLLECTOR" /YX /FD /c # ADD BASE RSC /l 0x410 /d "NDEBUG" # ADD RSC /l 0x410 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\squirrel.lib" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "GARBAGE_COLLECTOR" /YX /FD /GZ /c # ADD BASE RSC /l 0x410 /d "_DEBUG" # ADD RSC /l 0x410 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\squirrel.lib" !ENDIF # Begin Target # Name "squirrel - Win32 Release" # Name "squirrel - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\sqapi.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqbaselib.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqcompiler.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqdebug.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqfuncstate.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqlexer.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqmem.cpp # End Source File # Begin Source File SOURCE=.\sqobject.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqstate.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqtable.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqclass.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # Begin Source File SOURCE=.\sqvm.cpp !IF "$(CFG)" == "squirrel - Win32 Release" !ELSEIF "$(CFG)" == "squirrel - Win32 Debug" # ADD CPP /YX"stdafx.h" !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\sqarray.h # End Source File # Begin Source File SOURCE=.\sqclosure.h # End Source File # Begin Source File SOURCE=.\sqcompiler.h # End Source File # Begin Source File SOURCE=.\sqfuncproto.h # End Source File # Begin Source File SOURCE=.\sqfuncstate.h # End Source File # Begin Source File SOURCE=.\sqlexer.h # End Source File # Begin Source File SOURCE=.\sqobject.h # End Source File # Begin Source File SOURCE=.\sqopcodes.h # End Source File # Begin Source File SOURCE=.\sqpcheader.h # End Source File # Begin Source File SOURCE=.\sqstate.h # End Source File # Begin Source File SOURCE=.\sqstring.h # End Source File # Begin Source File SOURCE=.\sqtable.h # End Source File # Begin Source File SOURCE=.\squserdata.h # End Source File # Begin Source File SOURCE=.\squtils.h # End Source File # Begin Source File SOURCE=.\sqclass.h # End Source File # Begin Source File SOURCE=.\sqvm.h # End Source File # End Group # End Target # End Project openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqopcodes.h0000644000000000000000000000434412246102604022117 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQOPCODES_H_ #define _SQOPCODES_H_ #define MAX_FUNC_STACKSIZE 0xFF #define MAX_LITERALS ((SQInteger)0x7FFFFFFF) enum BitWiseOP { BW_AND = 0, BW_OR = 2, BW_XOR = 3, BW_SHIFTL = 4, BW_SHIFTR = 5, BW_USHIFTR = 6 }; enum CmpOP { CMP_G = 0, CMP_GE = 2, CMP_L = 3, CMP_LE = 4 }; enum SQOpcode { _OP_LINE= 0x00, _OP_LOAD= 0x01, _OP_LOADINT= 0x02, _OP_LOADFLOAT= 0x03, _OP_DLOAD= 0x04, _OP_TAILCALL= 0x05, _OP_CALL= 0x06, _OP_PREPCALL= 0x07, _OP_PREPCALLK= 0x08, _OP_GETK= 0x09, _OP_MOVE= 0x0A, _OP_NEWSLOT= 0x0B, _OP_DELETE= 0x0C, _OP_SET= 0x0D, _OP_GET= 0x0E, _OP_EQ= 0x0F, _OP_NE= 0x10, _OP_ARITH= 0x11, _OP_BITW= 0x12, _OP_RETURN= 0x13, _OP_LOADNULLS= 0x14, _OP_LOADROOTTABLE= 0x15, _OP_LOADBOOL= 0x16, _OP_DMOVE= 0x17, _OP_JMP= 0x18, _OP_JNZ= 0x19, _OP_JZ= 0x1A, _OP_LOADFREEVAR= 0x1B, _OP_VARGC= 0x1C, _OP_GETVARGV= 0x1D, _OP_NEWTABLE= 0x1E, _OP_NEWARRAY= 0x1F, _OP_APPENDARRAY= 0x20, _OP_GETPARENT= 0x21, _OP_COMPARITH= 0x22, _OP_COMPARITHL= 0x23, _OP_INC= 0x24, _OP_INCL= 0x25, _OP_PINC= 0x26, _OP_PINCL= 0x27, _OP_CMP= 0x28, _OP_EXISTS= 0x29, _OP_INSTANCEOF= 0x2A, _OP_AND= 0x2B, _OP_OR= 0x2C, _OP_NEG= 0x2D, _OP_NOT= 0x2E, _OP_BWNOT= 0x2F, _OP_CLOSURE= 0x30, _OP_YIELD= 0x31, _OP_RESUME= 0x32, _OP_FOREACH= 0x33, _OP_POSTFOREACH= 0x34, _OP_DELEGATE= 0x35, _OP_CLONE= 0x36, _OP_TYPEOF= 0x37, _OP_PUSHTRAP= 0x38, _OP_POPTRAP= 0x39, _OP_THROW= 0x3A, _OP_CLASS= 0x3B, _OP_NEWSLOTA= 0x3C, _OP_SCOPE_END= 0x3D, }; struct SQInstructionDesc { const SQChar *name; }; struct SQInstruction { SQInstruction(){}; SQInstruction(SQOpcode _op,SQInteger a0=0,SQInteger a1=0,SQInteger a2=0,SQInteger a3=0) { op = _op; _arg0 = (unsigned char)a0;_arg1 = (SQInt32)a1; _arg2 = (unsigned char)a2;_arg3 = (unsigned char)a3; } SQInt32 _arg1; unsigned char op; unsigned char _arg0; unsigned char _arg2; unsigned char _arg3; }; #include "squtils.h" typedef sqvector SQInstructionVec; #define NEW_SLOT_ATTRIBUTES_FLAG 0x01 #define NEW_SLOT_STATIC_FLAG 0x02 #endif // _SQOPCODES_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/squtils.h0000644000000000000000000000570212246102604021622 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQUTILS_H_ #define _SQUTILS_H_ void *sq_vm_malloc(SQUnsignedInteger size); void *sq_vm_realloc(void *p,SQUnsignedInteger oldsize,SQUnsignedInteger size); void sq_vm_free(void *p,SQUnsignedInteger size); #define sq_new(__ptr,__type) {__ptr=(__type *)sq_vm_malloc(sizeof(__type));new (__ptr) __type;} #define sq_delete(__ptr,__type) {__ptr->~__type();sq_vm_free(__ptr,sizeof(__type));} #define SQ_MALLOC(__size) sq_vm_malloc((__size)); #define SQ_FREE(__ptr,__size) sq_vm_free((__ptr),(__size)); #define SQ_REALLOC(__ptr,__oldsize,__size) sq_vm_realloc((__ptr),(__oldsize),(__size)); //sqvector mini vector class, supports objects by value template class sqvector { public: sqvector() { _vals = NULL; _size = 0; _allocated = 0; } sqvector(const sqvector& v) { copy(v); } void copy(const sqvector& v) { resize(v._size); for(SQUnsignedInteger i = 0; i < v._size; i++) { new ((void *)&_vals[i]) T(v._vals[i]); } _size = v._size; } ~sqvector() { if(_allocated) { /* Break freeing loops, if this vector (indirectly) links to itself. */ size_t allocated_size = _allocated * sizeof(T); _allocated = 0; for(SQUnsignedInteger i = 0; i < _size; i++) _vals[i].~T(); SQ_FREE(_vals, allocated_size); } } void reserve(SQUnsignedInteger newsize) { _realloc(newsize); } void resize(SQUnsignedInteger newsize, const T& fill = T()) { if(newsize > _allocated) _realloc(newsize); if(newsize > _size) { while(_size < newsize) { new ((void *)&_vals[_size]) T(fill); _size++; } } else{ for(SQUnsignedInteger i = newsize; i < _size; i++) { _vals[i].~T(); } _size = newsize; } } void shrinktofit() { if(_size > 4) { _realloc(_size); } } T& top() const { return _vals[_size - 1]; } inline SQUnsignedInteger size() const { return _size; } bool empty() const { return (_size <= 0); } inline T &push_back(const T& val = T()) { if(_allocated <= _size) _realloc(_size * 2); return *(new ((void *)&_vals[_size++]) T(val)); } inline void pop_back() { _size--; _vals[_size].~T(); } void insert(SQUnsignedInteger idx, const T& val) { resize(_size + 1); for(SQUnsignedInteger i = _size - 1; i > idx; i--) { _vals[i] = _vals[i - 1]; } _vals[idx] = val; } void remove(SQUnsignedInteger idx) { _vals[idx].~T(); if(idx < (_size - 1)) { memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); } _size--; } SQUnsignedInteger capacity() { return _allocated; } inline T &back() const { return _vals[_size - 1]; } inline T& operator[](SQUnsignedInteger pos) const{ assert(pos < _allocated); return _vals[pos]; } T* _vals; private: void _realloc(SQUnsignedInteger newsize) { newsize = (newsize > 0)?newsize:4; _vals = (T*)SQ_REALLOC(_vals, _allocated * sizeof(T), newsize * sizeof(T)); _allocated = newsize; } SQUnsignedInteger _size; SQUnsignedInteger _allocated; }; #endif //_SQUTILS_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqobject.h0000644000000000000000000002145112246102604021727 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQOBJECT_H_ #define _SQOBJECT_H_ #include "squtils.h" #define SQ_CLOSURESTREAM_HEAD (('S'<<24)|('Q'<<16)|('I'<<8)|('R')) #define SQ_CLOSURESTREAM_PART (('P'<<24)|('A'<<16)|('R'<<8)|('T')) #define SQ_CLOSURESTREAM_TAIL (('T'<<24)|('A'<<16)|('I'<<8)|('L')) struct SQSharedState; enum SQMetaMethod{ MT_ADD=0, MT_SUB=1, MT_MUL=2, MT_DIV=3, MT_UNM=4, MT_MODULO=5, MT_SET=6, MT_GET=7, MT_TYPEOF=8, MT_NEXTI=9, MT_CMP=10, MT_CALL=11, MT_CLONED=12, MT_NEWSLOT=13, MT_DELSLOT=14, MT_TOSTRING=15, MT_NEWMEMBER=16, MT_INHERITED=17, MT_LAST = 18 }; #define MM_ADD _SC("_add") #define MM_SUB _SC("_sub") #define MM_MUL _SC("_mul") #define MM_DIV _SC("_div") #define MM_UNM _SC("_unm") #define MM_MODULO _SC("_modulo") #define MM_SET _SC("_set") #define MM_GET _SC("_get") #define MM_TYPEOF _SC("_typeof") #define MM_NEXTI _SC("_nexti") #define MM_CMP _SC("_cmp") #define MM_CALL _SC("_call") #define MM_CLONED _SC("_cloned") #define MM_NEWSLOT _SC("_newslot") #define MM_DELSLOT _SC("_delslot") #define MM_TOSTRING _SC("_tostring") #define MM_NEWMEMBER _SC("_newmember") #define MM_INHERITED _SC("_inherited") #define MINPOWER2 4 struct SQRefCounted { SQRefCounted() { _uiRef = 0; _weakref = NULL; } virtual ~SQRefCounted(); SQWeakRef *GetWeakRef(SQObjectType type); SQUnsignedInteger _uiRef; struct SQWeakRef *_weakref; virtual void Release()=0; }; struct SQWeakRef : SQRefCounted { void Release(); SQObject _obj; }; #define _realval(o) (type((o)) != OT_WEAKREF?(SQObject)o:_weakref(o)->_obj) struct SQObjectPtr; #define __AddRef(type,unval) if(ISREFCOUNTED(type)) \ { \ unval.pRefCounted->_uiRef++; \ } #define __Release(type,unval) if(ISREFCOUNTED(type) && ((--unval.pRefCounted->_uiRef)<=0)) \ { \ unval.pRefCounted->Release(); \ } #define __ObjRelease(obj) { \ if((obj)) { \ (obj)->_uiRef--; \ if((obj)->_uiRef == 0) \ (obj)->Release(); \ (obj) = NULL; \ } \ } #define __ObjAddRef(obj) { \ (obj)->_uiRef++; \ } #define type(obj) ((obj)._type) #define is_delegable(t) (type(t)&SQOBJECT_DELEGABLE) #define raw_type(obj) _RAW_TYPE((obj)._type) #define _integer(obj) ((obj)._unVal.nInteger) #define _float(obj) ((obj)._unVal.fFloat) #define _string(obj) ((obj)._unVal.pString) #define _table(obj) ((obj)._unVal.pTable) #define _array(obj) ((obj)._unVal.pArray) #define _closure(obj) ((obj)._unVal.pClosure) #define _generator(obj) ((obj)._unVal.pGenerator) #define _nativeclosure(obj) ((obj)._unVal.pNativeClosure) #define _userdata(obj) ((obj)._unVal.pUserData) #define _userpointer(obj) ((obj)._unVal.pUserPointer) #define _thread(obj) ((obj)._unVal.pThread) #define _funcproto(obj) ((obj)._unVal.pFunctionProto) #define _class(obj) ((obj)._unVal.pClass) #define _instance(obj) ((obj)._unVal.pInstance) #define _delegable(obj) ((SQDelegable *)(obj)._unVal.pDelegable) #define _weakref(obj) ((obj)._unVal.pWeakRef) #define _refcounted(obj) ((obj)._unVal.pRefCounted) #define _rawval(obj) ((obj)._unVal.raw) #define _stringval(obj) (obj)._unVal.pString->_val #define _userdataval(obj) (obj)._unVal.pUserData->_val #define tofloat(num) ((type(num)==OT_INTEGER)?(SQFloat)_integer(num):_float(num)) #define tointeger(num) ( (type(num)==OT_FLOAT)?(SQInteger)_float(num):_integer(num)) ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// struct SQObjectPtr : public SQObject { SQObjectPtr() { SQ_OBJECT_RAWINIT() _type=OT_NULL; _unVal.pUserPointer=NULL; } SQObjectPtr(const SQObjectPtr &o) { SQ_OBJECT_RAWINIT() _type=o._type; _unVal=o._unVal; __AddRef(_type,_unVal); } SQObjectPtr(const SQObject &o) { SQ_OBJECT_RAWINIT() _type=o._type; _unVal=o._unVal; __AddRef(_type,_unVal); } SQObjectPtr(SQTable *pTable) { SQ_OBJECT_RAWINIT() _type=OT_TABLE; _unVal.pTable=pTable; assert(_unVal.pTable); __AddRef(_type,_unVal); } SQObjectPtr(SQClass *pClass) { SQ_OBJECT_RAWINIT() _type=OT_CLASS; _unVal.pClass=pClass; assert(_unVal.pClass); __AddRef(_type,_unVal); } SQObjectPtr(SQInstance *pInstance) { SQ_OBJECT_RAWINIT() _type=OT_INSTANCE; _unVal.pInstance=pInstance; assert(_unVal.pInstance); __AddRef(_type,_unVal); } SQObjectPtr(SQArray *pArray) { SQ_OBJECT_RAWINIT() _type=OT_ARRAY; _unVal.pArray=pArray; assert(_unVal.pArray); __AddRef(_type,_unVal); } SQObjectPtr(SQClosure *pClosure) { SQ_OBJECT_RAWINIT() _type=OT_CLOSURE; _unVal.pClosure=pClosure; assert(_unVal.pClosure); __AddRef(_type,_unVal); } SQObjectPtr(SQGenerator *pGenerator) { SQ_OBJECT_RAWINIT() _type=OT_GENERATOR; _unVal.pGenerator=pGenerator; assert(_unVal.pGenerator); __AddRef(_type,_unVal); } SQObjectPtr(SQNativeClosure *pNativeClosure) { SQ_OBJECT_RAWINIT() _type=OT_NATIVECLOSURE; _unVal.pNativeClosure=pNativeClosure; assert(_unVal.pNativeClosure); __AddRef(_type,_unVal); } SQObjectPtr(SQString *pString) { SQ_OBJECT_RAWINIT() _type=OT_STRING; _unVal.pString=pString; assert(_unVal.pString); __AddRef(_type,_unVal); } SQObjectPtr(SQUserData *pUserData) { SQ_OBJECT_RAWINIT() _type=OT_USERDATA; _unVal.pUserData=pUserData; assert(_unVal.pUserData); __AddRef(_type,_unVal); } SQObjectPtr(SQVM *pThread) { SQ_OBJECT_RAWINIT() _type=OT_THREAD; _unVal.pThread=pThread; assert(_unVal.pThread); __AddRef(_type,_unVal); } SQObjectPtr(SQWeakRef *pWeakRef) { SQ_OBJECT_RAWINIT() _type=OT_WEAKREF; _unVal.pWeakRef=pWeakRef; assert(_unVal.pWeakRef); __AddRef(_type,_unVal); } SQObjectPtr(SQFunctionProto *pFunctionProto) { SQ_OBJECT_RAWINIT() _type=OT_FUNCPROTO; _unVal.pFunctionProto=pFunctionProto; assert(_unVal.pFunctionProto); __AddRef(_type,_unVal); } SQObjectPtr(SQInteger nInteger) { SQ_OBJECT_RAWINIT() _type=OT_INTEGER; _unVal.nInteger=nInteger; } SQObjectPtr(SQFloat fFloat) { SQ_OBJECT_RAWINIT() _type=OT_FLOAT; _unVal.fFloat=fFloat; } SQObjectPtr(bool bBool) { SQ_OBJECT_RAWINIT() _type = OT_BOOL; _unVal.nInteger = bBool?1:0; } SQObjectPtr(SQUserPointer pUserPointer) { SQ_OBJECT_RAWINIT() _type=OT_USERPOINTER; _unVal.pUserPointer=pUserPointer; } ~SQObjectPtr() { __Release(_type,_unVal); } inline void Null() { SQObjectType tOldType; SQObjectValue unOldVal; tOldType = _type; unOldVal = _unVal; _type = OT_NULL; _unVal.pUserPointer = NULL; __Release(tOldType,unOldVal); } inline SQObjectPtr& operator=(SQInteger i) { __Release(_type,_unVal); SQ_OBJECT_RAWINIT() _unVal.nInteger = i; _type = OT_INTEGER; return *this; } inline SQObjectPtr& operator=(SQFloat f) { __Release(_type,_unVal); SQ_OBJECT_RAWINIT() _unVal.fFloat = f; _type = OT_FLOAT; return *this; } inline SQObjectPtr& operator=(const SQObjectPtr& obj) { SQObjectType tOldType; SQObjectValue unOldVal; tOldType=_type; unOldVal=_unVal; _unVal = obj._unVal; _type = obj._type; __AddRef(_type,_unVal); __Release(tOldType,unOldVal); return *this; } inline SQObjectPtr& operator=(const SQObject& obj) { SQObjectType tOldType; SQObjectValue unOldVal; tOldType=_type; unOldVal=_unVal; _unVal = obj._unVal; _type = obj._type; __AddRef(_type,_unVal); __Release(tOldType,unOldVal); return *this; } private: SQObjectPtr(const SQChar *){} //safety }; inline void _Swap(SQObject &a,SQObject &b) { SQObjectType tOldType = a._type; SQObjectValue unOldVal = a._unVal; a._type = b._type; a._unVal = b._unVal; b._type = tOldType; b._unVal = unOldVal; } ///////////////////////////////////////////////////////////////////////////////////// #ifndef NO_GARBAGE_COLLECTOR #define MARK_FLAG 0x80000000 struct SQCollectable : public SQRefCounted { SQCollectable *_next; SQCollectable *_prev; SQSharedState *_sharedstate; virtual void Release()=0; virtual void Mark(SQCollectable **chain)=0; void UnMark(); virtual void Finalize()=0; static void AddToChain(SQCollectable **chain,SQCollectable *c); static void RemoveFromChain(SQCollectable **chain,SQCollectable *c); }; #define ADD_TO_CHAIN(chain,obj) AddToChain(chain,obj) #define REMOVE_FROM_CHAIN(chain,obj) {if(!(_uiRef&MARK_FLAG))RemoveFromChain(chain,obj);} #define CHAINABLE_OBJ SQCollectable #define INIT_CHAIN() {_next=NULL;_prev=NULL;_sharedstate=ss;} #else #define ADD_TO_CHAIN(chain,obj) ((void)0) #define REMOVE_FROM_CHAIN(chain,obj) ((void)0) #define CHAINABLE_OBJ SQRefCounted #define INIT_CHAIN() ((void)0) #endif struct SQDelegable : public CHAINABLE_OBJ { bool SetDelegate(SQTable *m); virtual bool GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res); SQTable *_delegate; }; SQUnsignedInteger TranslateIndex(const SQObjectPtr &idx); typedef sqvector SQObjectPtrVec; typedef sqvector SQIntVec; const SQChar *GetTypeName(const SQObjectPtr &obj1); const SQChar *IdType2Name(SQObjectType type); #endif //_SQOBJECT_H_ openttd-1.3.3/src/3rdparty/squirrel/squirrel/sqvm.cpp0000644000000000000000000013413112246102604021436 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include "sqpcheader.h" #include #include #include "sqopcodes.h" #include "sqfuncproto.h" #include "sqvm.h" #include "sqclosure.h" #include "sqstring.h" #include "sqtable.h" #include "squserdata.h" #include "sqarray.h" #include "sqclass.h" #define TOP() (_stack._vals[_top-1]) #define CLEARSTACK(_last_top) { if((_last_top) >= _top) ClearStack(_last_top); } void SQVM::ClearStack(SQInteger last_top) { SQObjectType tOldType; SQObjectValue unOldVal; while (last_top >= _top) { SQObjectPtr &o = _stack._vals[last_top--]; tOldType = o._type; unOldVal = o._unVal; o._type = OT_NULL; o._unVal.pUserPointer = NULL; __Release(tOldType,unOldVal); } } bool SQVM::BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2) { SQInteger res; SQInteger i1 = _integer(o1), i2 = _integer(o2); if((type(o1)==OT_INTEGER) && (type(o2)==OT_INTEGER)) { switch(op) { case BW_AND: res = i1 & i2; break; case BW_OR: res = i1 | i2; break; case BW_XOR: res = i1 ^ i2; break; case BW_SHIFTL: res = i1 << i2; break; case BW_SHIFTR: res = i1 >> i2; break; case BW_USHIFTR:res = (SQInteger)(*((SQUnsignedInteger*)&i1) >> i2); break; default: { Raise_Error(_SC("internal vm error bitwise op failed")); return false; } } } else { Raise_Error(_SC("bitwise op between '%s' and '%s'"),GetTypeName(o1),GetTypeName(o2)); return false;} trg = res; return true; } bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2) { if(sq_isnumeric(o1) && sq_isnumeric(o2)) { if((type(o1)==OT_INTEGER) && (type(o2)==OT_INTEGER)) { SQInteger res, i1 = _integer(o1), i2 = _integer(o2); switch(op) { case '+': res = i1 + i2; break; case '-': res = i1 - i2; break; case '/': if(i2 == 0) { Raise_Error(_SC("division by zero")); return false; } res = i1 / i2; break; case '*': res = i1 * i2; break; case '%': if(i2 == 0) { Raise_Error(_SC("modulo by zero")); return false; } res = i1 % i2; break; default: res = 0xDEADBEEF; } trg = res; }else{ SQFloat res, f1 = tofloat(o1), f2 = tofloat(o2); switch(op) { case '+': res = f1 + f2; break; case '-': res = f1 - f2; break; case '/': res = f1 / f2; break; case '*': res = f1 * f2; break; case '%': res = SQFloat(fmod((double)f1,(double)f2)); break; default: res = 0x0f; } trg = res; } } else { if(op == '+' && (type(o1) == OT_STRING || type(o2) == OT_STRING)){ if(!StringCat(o1, o2, trg)) return false; } else if(!ArithMetaMethod(op,o1,o2,trg)) { Raise_Error(_SC("arith op %c on between '%s' and '%s'"),op,GetTypeName(o1),GetTypeName(o2)); return false; } } return true; } SQVM::SQVM(SQSharedState *ss) { _sharedstate=ss; _suspended = SQFalse; _suspended_target=-1; _suspended_root = SQFalse; _suspended_traps=0; _foreignptr=NULL; _nnativecalls=0; _lasterror = _null_; _errorhandler = _null_; _debughook = _null_; _can_suspend = false; _in_stackoverflow = false; _ops_till_suspend = 0; ci = NULL; INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this); } void SQVM::Finalize() { _roottable = _null_; _lasterror = _null_; _errorhandler = _null_; _debughook = _null_; temp_reg = _null_; _callstackdata.resize(0); SQInteger size=_stack.size(); for(SQInteger i=size - 1;i>=0;i--) _stack[i]=_null_; } SQVM::~SQVM() { Finalize(); //sq_free(_callsstack,_alloccallsstacksize*sizeof(CallInfo)); REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this); } bool SQVM::ArithMetaMethod(SQInteger op,const SQObjectPtr &o1,const SQObjectPtr &o2,SQObjectPtr &dest) { SQMetaMethod mm; switch(op){ case _SC('+'): mm=MT_ADD; break; case _SC('-'): mm=MT_SUB; break; case _SC('/'): mm=MT_DIV; break; case _SC('*'): mm=MT_MUL; break; case _SC('%'): mm=MT_MODULO; break; default: mm = MT_ADD; assert(0); break; //shutup compiler } if(is_delegable(o1) && _delegable(o1)->_delegate) { Push(o1);Push(o2); return CallMetaMethod(_delegable(o1),mm,2,dest); } return false; } bool SQVM::NEG_OP(SQObjectPtr &trg,const SQObjectPtr &o) { switch(type(o)) { case OT_INTEGER: trg = -_integer(o); return true; case OT_FLOAT: trg = -_float(o); return true; case OT_TABLE: case OT_USERDATA: case OT_INSTANCE: if(_delegable(o)->_delegate) { Push(o); if(CallMetaMethod(_delegable(o), MT_UNM, 1, temp_reg)) { trg = temp_reg; return true; } } default:break; //shutup compiler } Raise_Error(_SC("attempt to negate a %s"), GetTypeName(o)); return false; } #define _RET_SUCCEED(exp) { result = (exp); return true; } bool SQVM::ObjCmp(const SQObjectPtr &o1,const SQObjectPtr &o2,SQInteger &result) { if(type(o1)==type(o2)){ if(_rawval(o1)==_rawval(o2))_RET_SUCCEED(0); SQObjectPtr res; switch(type(o1)){ case OT_STRING: _RET_SUCCEED(scstrcmp(_stringval(o1),_stringval(o2))); case OT_INTEGER: /* FS#3954: wrong integer comparison */ _RET_SUCCEED((_integer(o1)<_integer(o2))?-1:(_integer(o1)==_integer(o2))?0:1); case OT_FLOAT: _RET_SUCCEED((_float(o1)<_float(o2))?-1:1); case OT_TABLE: case OT_USERDATA: case OT_INSTANCE: if(_delegable(o1)->_delegate) { Push(o1);Push(o2); if(CallMetaMethod(_delegable(o1),MT_CMP,2,res)) { if(type(res) != OT_INTEGER) { Raise_Error(_SC("_cmp must return an integer")); return false; } _RET_SUCCEED(_integer(res)) } } //continues through (no break needed) default: _RET_SUCCEED( _userpointer(o1) < _userpointer(o2)?-1:1 ); } assert(0); } else{ if(sq_isnumeric(o1) && sq_isnumeric(o2)){ if((type(o1)==OT_INTEGER) && (type(o2)==OT_FLOAT)) { if( _integer(o1)==_float(o2) ) { _RET_SUCCEED(0); } else if( _integer(o1)<_float(o2) ) { _RET_SUCCEED(-1); } _RET_SUCCEED(1); } else{ if( _float(o1)==_integer(o2) ) { _RET_SUCCEED(0); } else if( _float(o1)<_integer(o2) ) { _RET_SUCCEED(-1); } _RET_SUCCEED(1); } } else if(type(o1)==OT_NULL) {_RET_SUCCEED(-1);} else if(type(o2)==OT_NULL) {_RET_SUCCEED(1);} else { Raise_CompareError(o1,o2); return false; } } assert(0); _RET_SUCCEED(0); //cannot happen } bool SQVM::CMP_OP(CmpOP op, const SQObjectPtr &o1,const SQObjectPtr &o2,SQObjectPtr &res) { SQInteger r; if(ObjCmp(o1,o2,r)) { switch(op) { case CMP_G: res = (r > 0)?_true_:_false_; return true; case CMP_GE: res = (r >= 0)?_true_:_false_; return true; case CMP_L: res = (r < 0)?_true_:_false_; return true; case CMP_LE: res = (r <= 0)?_true_:_false_; return true; } assert(0); } return false; } void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res) { switch(type(o)) { case OT_STRING: res = o; return; case OT_FLOAT: scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%g"),_float(o)); break; case OT_INTEGER: #if defined(_SQ64) scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%ld"),_integer(o)); #else scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%d"),_integer(o)); #endif break; case OT_BOOL: scsprintf(_sp(rsl(6)),_integer(o)?_SC("true"):_SC("false")); break; case OT_TABLE: case OT_USERDATA: case OT_INSTANCE: if(_delegable(o)->_delegate) { Push(o); if(CallMetaMethod(_delegable(o),MT_TOSTRING,1,res)) { if(type(res) == OT_STRING) return; //else keeps going to the default } } default: scsprintf(_sp(rsl(sizeof(void*)+20)),_SC("(%s : 0x%p)"),GetTypeName(o),(void*)_rawval(o)); } res = SQString::Create(_ss(this),_spval); } bool SQVM::StringCat(const SQObjectPtr &str,const SQObjectPtr &obj,SQObjectPtr &dest) { SQObjectPtr a, b; ToString(str, a); ToString(obj, b); SQInteger l = _string(a)->_len , ol = _string(b)->_len; SQChar *s = _sp(rsl(l + ol + 1)); memcpy(s, _stringval(a), rsl(l)); memcpy(s + l, _stringval(b), rsl(ol)); dest = SQString::Create(_ss(this), _spval, l + ol); return true; } void SQVM::TypeOf(const SQObjectPtr &obj1,SQObjectPtr &dest) { if(is_delegable(obj1) && _delegable(obj1)->_delegate) { Push(obj1); if(CallMetaMethod(_delegable(obj1),MT_TYPEOF,1,dest)) return; } dest = SQString::Create(_ss(this),GetTypeName(obj1)); } bool SQVM::Init(SQVM *friendvm, SQInteger stacksize) { _stack.resize(stacksize); _alloccallsstacksize = 4; _callstackdata.resize(_alloccallsstacksize); _callsstacksize = 0; _callsstack = &_callstackdata[0]; _stackbase = 0; _top = 0; if(!friendvm) _roottable = SQTable::Create(_ss(this), 0); else { _roottable = friendvm->_roottable; _errorhandler = friendvm->_errorhandler; _debughook = friendvm->_debughook; } sq_base_register(this); return true; } extern SQInstructionDesc g_InstrDesc[]; bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQInteger stackbase,bool tailcall) { SQFunctionProto *func = _funcproto(closure->_function); const SQInteger paramssize = func->_nparameters; const SQInteger newtop = stackbase + func->_stacksize; SQInteger nargs = args; if (paramssize != nargs) { SQInteger ndef = func->_ndefaultparams; SQInteger diff; if(ndef && nargs < paramssize && (diff = paramssize - nargs) <= ndef) { for(SQInteger n = ndef - diff; n < ndef; n++) { _stack._vals[stackbase + (nargs++)] = closure->_defaultparams[n]; } } else if(func->_varparams) { if (nargs < paramssize) { Raise_Error(_SC("wrong number of parameters")); return false; } for(SQInteger n = 0; n < nargs - paramssize; n++) { _vargsstack.push_back(_stack._vals[stackbase+paramssize+n]); _stack._vals[stackbase+paramssize+n] = _null_; } } else { Raise_Error(_SC("wrong number of parameters")); return false; } } if(type(closure->_env) == OT_WEAKREF) { _stack._vals[stackbase] = _weakref(closure->_env)->_obj; } if (!tailcall) { CallInfo lc; memset(&lc, 0, sizeof(lc)); lc._generator = NULL; lc._etraps = 0; lc._prevstkbase = (SQInt32) ( stackbase - _stackbase ); lc._target = (SQInt32) target; lc._prevtop = (SQInt32) (_top - _stackbase); lc._ncalls = 1; lc._root = SQFalse; PUSH_CALLINFO(this, lc); } else { ci->_ncalls++; } ci->_vargs.size = (SQInt32)(nargs - paramssize); ci->_vargs.base = (SQInt32)(_vargsstack.size()-(ci->_vargs.size)); ci->_closure = closure; ci->_literals = func->_literals; ci->_ip = func->_instructions; //grows the stack if needed if (((SQUnsignedInteger)newtop + (func->_stacksize<<1)) > _stack.size()) { _stack.resize(_stack.size() + (func->_stacksize<<1)); } _top = newtop; _stackbase = stackbase; if (type(_debughook) != OT_NULL && _rawval(_debughook) != _rawval(ci->_closure)) CallDebugHook(_SC('c')); return true; } bool SQVM::Return(SQInteger _arg0, SQInteger _arg1, SQObjectPtr &retval) { if (type(_debughook) != OT_NULL && _rawval(_debughook) != _rawval(ci->_closure)) for(SQInteger i=0;i_ncalls;i++) CallDebugHook(_SC('r')); SQBool broot = ci->_root; SQInteger last_top = _top; SQInteger target = ci->_target; SQInteger oldstackbase = _stackbase; _stackbase -= ci->_prevstkbase; _top = _stackbase + ci->_prevtop; if(ci->_vargs.size) PopVarArgs(ci->_vargs); POP_CALLINFO(this); if (broot) { if (_arg0 != MAX_FUNC_STACKSIZE) retval = _stack._vals[oldstackbase+_arg1]; else retval = _null_; } else { if(target != -1) { //-1 is when a class contructor ret value has to be ignored if (_arg0 != MAX_FUNC_STACKSIZE) STK(target) = _stack._vals[oldstackbase+_arg1]; else STK(target) = _null_; } } while (last_top > oldstackbase) _stack._vals[last_top--].Null(); assert(oldstackbase >= _stackbase); return broot?true:false; } #define _RET_ON_FAIL(exp) { if(!exp) return false; } bool SQVM::LOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr) { _RET_ON_FAIL(ARITH_OP( op , target, a, incr)); a = target; return true; } bool SQVM::PLOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr) { SQObjectPtr trg; _RET_ON_FAIL(ARITH_OP( op , trg, a, incr)); target = a; a = trg; return true; } bool SQVM::DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjectPtr &key, SQObjectPtr &incr, bool postfix) { SQObjectPtr tmp, tself = self, tkey = key; if (!Get(tself, tkey, tmp, false, true)) { Raise_IdxError(tkey); return false; } _RET_ON_FAIL(ARITH_OP( op , target, tmp, incr)) Set(tself, tkey, target,true); if (postfix) target = tmp; return true; } #define arg0 (_i_._arg0) #define arg1 (_i_._arg1) #define sarg1 (*(const_cast(&_i_._arg1))) #define arg2 (_i_._arg2) #define arg3 (_i_._arg3) #define sarg3 ((SQInteger)*((const signed char *)&_i_._arg3)) SQRESULT SQVM::Suspend() { if (_suspended) return sq_throwerror(this, _SC("cannot suspend an already suspended vm")); if (_nnativecalls!=2) return sq_throwerror(this, _SC("cannot suspend through native calls/metamethods")); return SQ_SUSPEND_FLAG; } void SQVM::PopVarArgs(VarArgs &vargs) { for(SQInteger n = 0; n< vargs.size; n++) _vargsstack.pop_back(); } #define _FINISH(howmuchtojump) {jump = howmuchtojump; return true; } bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr &o3,SQObjectPtr &o4,SQInteger arg_2,int exitpos,int &jump) { SQInteger nrefidx; switch(type(o1)) { case OT_TABLE: if((nrefidx = _table(o1)->Next(false,o4, o2, o3)) == -1) _FINISH(exitpos); o4 = (SQInteger)nrefidx; _FINISH(1); case OT_ARRAY: if((nrefidx = _array(o1)->Next(o4, o2, o3)) == -1) _FINISH(exitpos); o4 = (SQInteger) nrefidx; _FINISH(1); case OT_STRING: if((nrefidx = _string(o1)->Next(o4, o2, o3)) == -1)_FINISH(exitpos); o4 = (SQInteger)nrefidx; _FINISH(1); case OT_CLASS: if((nrefidx = _class(o1)->Next(o4, o2, o3)) == -1)_FINISH(exitpos); o4 = (SQInteger)nrefidx; _FINISH(1); case OT_USERDATA: case OT_INSTANCE: if(_delegable(o1)->_delegate) { SQObjectPtr itr; Push(o1); Push(o4); if(CallMetaMethod(_delegable(o1), MT_NEXTI, 2, itr)){ o4 = o2 = itr; if(type(itr) == OT_NULL) _FINISH(exitpos); if(!Get(o1, itr, o3, false,false)) { Raise_Error(_SC("_nexti returned an invalid idx")); return false; } _FINISH(1); } Raise_Error(_SC("_nexti failed")); return false; } break; case OT_GENERATOR: if(_generator(o1)->_state == SQGenerator::eDead) _FINISH(exitpos); if(_generator(o1)->_state == SQGenerator::eSuspended) { SQInteger idx = 0; if(type(o4) == OT_INTEGER) { idx = _integer(o4) + 1; } o2 = idx; o4 = idx; _generator(o1)->Resume(this, arg_2+1); _FINISH(0); } default: Raise_Error(_SC("cannot iterate %s"), GetTypeName(o1)); } return false; //cannot be hit(just to avoid warnings) } bool SQVM::DELEGATE_OP(SQObjectPtr &trg,SQObjectPtr &o1,SQObjectPtr &o2) { if(type(o1) != OT_TABLE) { Raise_Error(_SC("delegating a '%s'"), GetTypeName(o1)); return false; } switch(type(o2)) { case OT_TABLE: if(!_table(o1)->SetDelegate(_table(o2))){ Raise_Error(_SC("delegate cycle detected")); return false; } break; case OT_NULL: _table(o1)->SetDelegate(NULL); break; default: Raise_Error(_SC("using '%s' as delegate"), GetTypeName(o2)); return false; break; } trg = o1; return true; } #define COND_LITERAL (arg3!=0?ci->_literals[arg1]:STK(arg1)) #define _GUARD(exp) { if(!exp) { Raise_Error(_lasterror); SQ_THROW();} } #define SQ_THROW() { goto exception_trap; } bool SQVM::CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func) { SQInteger nouters; SQClosure *closure = SQClosure::Create(_ss(this), func); if((nouters = func->_noutervalues)) { closure->_outervalues.reserve(nouters); for(SQInteger i = 0; i_outervalues[i]; switch(v._type){ case otSYMBOL: closure->_outervalues.push_back(_null_); if(!Get(_stack._vals[_stackbase]/*STK(0)*/, v._src, closure->_outervalues.top(), false,true)) {Raise_IdxError(v._src); return false; } break; case otLOCAL: closure->_outervalues.push_back(_stack._vals[_stackbase+_integer(v._src)]); break; case otOUTER: closure->_outervalues.push_back(_closure(ci->_closure)->_outervalues[_integer(v._src)]); break; } } } SQInteger ndefparams; if((ndefparams = func->_ndefaultparams)) { closure->_defaultparams.reserve(ndefparams); for(SQInteger i = 0; i < ndefparams; i++) { SQInteger spos = func->_defaultparams[i]; closure->_defaultparams.push_back(_stack._vals[_stackbase + spos]); } } target = closure; return true; } bool SQVM::GETVARGV_OP(SQObjectPtr &target,SQObjectPtr &index,CallInfo *ci) { if(ci->_vargs.size == 0) { Raise_Error(_SC("the function doesn't have var args")); return false; } if(!sq_isnumeric(index)){ Raise_Error(_SC("indexing 'vargv' with %s"),GetTypeName(index)); return false; } SQInteger idx = tointeger(index); if(idx < 0 || idx >= ci->_vargs.size){ Raise_Error(_SC("vargv index out of range")); return false; } target = _vargsstack[ci->_vargs.base+idx]; return true; } bool SQVM::CLASS_OP(SQObjectPtr &target,SQInteger baseclass,SQInteger attributes) { SQClass *base = NULL; SQObjectPtr attrs; if(baseclass != -1) { if(type(_stack._vals[_stackbase+baseclass]) != OT_CLASS) { Raise_Error(_SC("trying to inherit from a %s"),GetTypeName(_stack._vals[_stackbase+baseclass])); return false; } base = _class(_stack._vals[_stackbase + baseclass]); } if(attributes != MAX_FUNC_STACKSIZE) { attrs = _stack._vals[_stackbase+attributes]; } target = SQClass::Create(_ss(this),base); if(type(_class(target)->_metamethods[MT_INHERITED]) != OT_NULL) { int nparams = 2; SQObjectPtr ret; Push(target); Push(attrs); Call(_class(target)->_metamethods[MT_INHERITED],nparams,_top - nparams, ret, false, false); Pop(nparams); } _class(target)->_attributes = attrs; return true; } bool SQVM::IsEqual(SQObjectPtr &o1,SQObjectPtr &o2,bool &res) { if(type(o1) == type(o2)) { res = ((_rawval(o1) == _rawval(o2)?true:false)); } else { if(sq_isnumeric(o1) && sq_isnumeric(o2)) { SQInteger cmpres; if(!ObjCmp(o1, o2,cmpres)) return false; res = (cmpres == 0); } else { res = false; } } return true; } bool SQVM::IsFalse(SQObjectPtr &o) { if(((type(o) & SQOBJECT_CANBEFALSE) && ( (type(o) == OT_FLOAT) && (_float(o) == SQFloat(0.0)) )) || (_integer(o) == 0) ) { //OT_NULL|OT_INTEGER|OT_BOOL return true; } return false; } bool SQVM::GETPARENT_OP(SQObjectPtr &o,SQObjectPtr &target) { switch(type(o)) { case OT_TABLE: target = _table(o)->_delegate?SQObjectPtr(_table(o)->_delegate):_null_; break; case OT_CLASS: target = _class(o)->_base?_class(o)->_base:_null_; break; default: Raise_Error(_SC("the %s type doesn't have a parent slot"), GetTypeName(o)); return false; } return true; } bool SQVM::Execute(SQObjectPtr &closure, SQInteger target, SQInteger nargs, SQInteger stackbase,SQObjectPtr &outres, SQBool raiseerror,ExecutionType et) { if ((_nnativecalls + 1) > MAX_NATIVE_CALLS) { Raise_Error(_SC("Native stack overflow")); return false; } _nnativecalls++; AutoDec ad(&_nnativecalls); SQInteger traps = 0; //temp_reg vars for OP_CALL SQInteger ct_target; SQInteger ct_stackbase; bool ct_tailcall; switch(et) { case ET_CALL: { SQInteger last_top = _top; temp_reg = closure; if(!StartCall(_closure(temp_reg), _top - nargs, nargs, stackbase, false)) { //call the handler if there are no calls in the stack, if not relies on the previous node if(ci == NULL) CallErrorHandler(_lasterror); return false; } if (_funcproto(_closure(temp_reg)->_function)->_bgenerator) { //SQFunctionProto *f = _funcproto(_closure(temp_reg)->_function); SQGenerator *gen = SQGenerator::Create(_ss(this), _closure(temp_reg)); _GUARD(gen->Yield(this)); Return(1, ci->_target, temp_reg); outres = gen; CLEARSTACK(last_top); return true; } ci->_root = SQTrue; } break; case ET_RESUME_GENERATOR: _generator(closure)->Resume(this, target); ci->_root = SQTrue; traps += ci->_etraps; break; case ET_RESUME_VM: case ET_RESUME_THROW_VM: traps = _suspended_traps; ci->_root = _suspended_root; ci->_vargs = _suspend_varargs; _suspended = SQFalse; if(et == ET_RESUME_THROW_VM) { SQ_THROW(); } break; case ET_RESUME_OPENTTD: traps = _suspended_traps; _suspended = SQFalse; break; } exception_restore: // { for(;;) { DecreaseOps(1); if (ShouldSuspend()) { _suspended = SQTrue; _suspended_traps = traps; return true; } const SQInstruction &_i_ = *ci->_ip++; //dumpstack(_stackbase); //scprintf("%s %d %d %d %d\n",g_InstrDesc[_i_.op].name,arg0,arg1,arg2,arg3); switch(_i_.op) { case _OP_LINE: if(type(_debughook) != OT_NULL && _rawval(_debughook) != _rawval(ci->_closure)) CallDebugHook(_SC('l'),arg1); continue; case _OP_LOAD: TARGET = ci->_literals[arg1]; continue; case _OP_LOADINT: TARGET = (SQInteger)arg1; continue; case _OP_LOADFLOAT: TARGET = *((const SQFloat *)&arg1); continue; case _OP_DLOAD: TARGET = ci->_literals[arg1]; STK(arg2) = ci->_literals[arg3];continue; case _OP_TAILCALL: temp_reg = STK(arg1); if (type(temp_reg) == OT_CLOSURE && !_funcproto(_closure(temp_reg)->_function)->_bgenerator){ ct_tailcall = true; if(ci->_vargs.size) PopVarArgs(ci->_vargs); for (SQInteger i = 0; i < arg3; i++) STK(i) = STK(arg2 + i); ct_target = ci->_target; ct_stackbase = _stackbase; goto common_call; } case _OP_CALL: { ct_tailcall = false; ct_target = arg0; temp_reg = STK(arg1); ct_stackbase = _stackbase+arg2; common_call: SQObjectPtr clo = temp_reg; SQInteger last_top = _top; switch (type(clo)) { case OT_CLOSURE:{ _GUARD(StartCall(_closure(clo), ct_target, arg3, ct_stackbase, ct_tailcall)); if (_funcproto(_closure(clo)->_function)->_bgenerator) { SQGenerator *gen = SQGenerator::Create(_ss(this), _closure(clo)); _GUARD(gen->Yield(this)); Return(1, ct_target, clo); STK(ct_target) = gen; } CLEARSTACK(last_top); } continue; case OT_NATIVECLOSURE: { bool suspend; _suspended_target = ct_target; try { _GUARD(CallNative(_nativeclosure(clo), arg3, ct_stackbase, clo,suspend)); } catch (...) { _suspended = SQTrue; _suspended_target = ct_target; _suspended_root = ci->_root; _suspended_traps = traps; _suspend_varargs = ci->_vargs; throw; } if(suspend){ _suspended = SQTrue; _suspended_target = ct_target; _suspended_root = ci->_root; _suspended_traps = traps; _suspend_varargs = ci->_vargs; outres = clo; return true; } if(ct_target != -1) { //skip return value for constructors STK(ct_target) = clo; } } continue; case OT_CLASS:{ SQObjectPtr inst; _GUARD(CreateClassInstance(_class(clo),inst,temp_reg)); STK(ct_target) = inst; ct_target = -1; //fakes return value target so that is not overwritten by the constructor if(type(temp_reg) != OT_NULL) { _stack._vals[ct_stackbase] = inst; goto common_call; //hard core spaghetti code(reissues the OP_CALL to invoke the constructor) } } break; case OT_TABLE: case OT_USERDATA: case OT_INSTANCE: { Push(clo); for (SQInteger i = 0; i < arg3; i++) Push(STK(arg2 + i)); if (_delegable(clo) && CallMetaMethod(_delegable(clo), MT_CALL, arg3+1, clo)){ STK(ct_target) = clo; break; } Raise_Error(_SC("attempt to call '%s'"), GetTypeName(clo)); SQ_THROW(); } default: Raise_Error(_SC("attempt to call '%s'"), GetTypeName(clo)); SQ_THROW(); } } continue; case _OP_PREPCALL: case _OP_PREPCALLK: { SQObjectPtr &key = _i_.op == _OP_PREPCALLK?(ci->_literals)[arg1]:STK(arg1); SQObjectPtr &o = STK(arg2); if (!Get(o, key, temp_reg,false,true)) { if(type(o) == OT_CLASS) { //hack? if(_class_ddel->Get(key,temp_reg)) { STK(arg3) = o; TARGET = temp_reg; continue; } } { Raise_IdxError(key); SQ_THROW();} } STK(arg3) = type(o) == OT_CLASS?STK(0):o; TARGET = temp_reg; } continue; case _OP_SCOPE_END: { SQInteger from = arg0; SQInteger count = arg1 - arg0 + 2; /* When 'return' is executed, it happens that the stack is already cleaned * (by Return()), but this OP-code is still executed. So check for this * situation, and ignore the cleanup */ if (_stackbase + count + from <= _top) { while (--count >= 0) _stack._vals[_stackbase + count + from].Null(); } } continue; case _OP_GETK: if (!Get(STK(arg2), ci->_literals[arg1], temp_reg, false,true)) { Raise_IdxError(ci->_literals[arg1]); SQ_THROW();} TARGET = temp_reg; continue; case _OP_MOVE: TARGET = STK(arg1); continue; case _OP_NEWSLOT: _GUARD(NewSlot(STK(arg1), STK(arg2), STK(arg3),false)); if(arg0 != arg3) TARGET = STK(arg3); continue; case _OP_DELETE: _GUARD(DeleteSlot(STK(arg1), STK(arg2), TARGET)); continue; case _OP_SET: if (!Set(STK(arg1), STK(arg2), STK(arg3),true)) { Raise_IdxError(STK(arg2)); SQ_THROW(); } if (arg0 != arg3) TARGET = STK(arg3); continue; case _OP_GET: if (!Get(STK(arg1), STK(arg2), temp_reg, false,true)) { Raise_IdxError(STK(arg2)); SQ_THROW(); } TARGET = temp_reg; continue; case _OP_EQ:{ bool res; if(!IsEqual(STK(arg2),COND_LITERAL,res)) { SQ_THROW(); } TARGET = res?_true_:_false_; }continue; case _OP_NE:{ bool res; if(!IsEqual(STK(arg2),COND_LITERAL,res)) { SQ_THROW(); } TARGET = (!res)?_true_:_false_; } continue; case _OP_ARITH: _GUARD(ARITH_OP( arg3 , temp_reg, STK(arg2), STK(arg1))); TARGET = temp_reg; continue; case _OP_BITW: _GUARD(BW_OP( arg3,TARGET,STK(arg2),STK(arg1))); continue; case _OP_RETURN: if(ci->_generator) { ci->_generator->Kill(); } if(Return(arg0, arg1, temp_reg)){ assert(traps==0); outres = temp_reg; return true; } continue; case _OP_LOADNULLS:{ for(SQInt32 n=0; n < arg1; n++) STK(arg0+n) = _null_; }continue; case _OP_LOADROOTTABLE: TARGET = _roottable; continue; case _OP_LOADBOOL: TARGET = arg1?_true_:_false_; continue; case _OP_DMOVE: STK(arg0) = STK(arg1); STK(arg2) = STK(arg3); continue; case _OP_JMP: ci->_ip += (sarg1); continue; case _OP_JNZ: if(!IsFalse(STK(arg0))) ci->_ip+=(sarg1); continue; case _OP_JZ: if(IsFalse(STK(arg0))) ci->_ip+=(sarg1); continue; case _OP_LOADFREEVAR: TARGET = _closure(ci->_closure)->_outervalues[arg1]; continue; case _OP_VARGC: TARGET = SQInteger(ci->_vargs.size); continue; case _OP_GETVARGV: if(!GETVARGV_OP(TARGET,STK(arg1),ci)) { SQ_THROW(); } continue; case _OP_NEWTABLE: TARGET = SQTable::Create(_ss(this), arg1); continue; case _OP_NEWARRAY: TARGET = SQArray::Create(_ss(this), 0); _array(TARGET)->Reserve(arg1); continue; case _OP_APPENDARRAY: _array(STK(arg0))->Append(COND_LITERAL); continue; case _OP_GETPARENT: _GUARD(GETPARENT_OP(STK(arg1),TARGET)); continue; case _OP_COMPARITH: _GUARD(DerefInc(arg3, TARGET, STK((((SQUnsignedInteger)arg1&0xFFFF0000)>>16)), STK(arg2), STK(arg1&0x0000FFFF), false)); continue; case _OP_COMPARITHL: _GUARD(LOCAL_INC(arg3, TARGET, STK(arg1), STK(arg2))); continue; case _OP_INC: {SQObjectPtr o(sarg3); _GUARD(DerefInc('+',TARGET, STK(arg1), STK(arg2), o, false));} continue; case _OP_INCL: {SQObjectPtr o(sarg3); _GUARD(LOCAL_INC('+',TARGET, STK(arg1), o));} continue; case _OP_PINC: {SQObjectPtr o(sarg3); _GUARD(DerefInc('+',TARGET, STK(arg1), STK(arg2), o, true));} continue; case _OP_PINCL: {SQObjectPtr o(sarg3); _GUARD(PLOCAL_INC('+',TARGET, STK(arg1), o));} continue; case _OP_CMP: _GUARD(CMP_OP((CmpOP)arg3,STK(arg2),STK(arg1),TARGET)) continue; case _OP_EXISTS: TARGET = Get(STK(arg1), STK(arg2), temp_reg, true,false)?_true_:_false_;continue; case _OP_INSTANCEOF: if(type(STK(arg1)) != OT_CLASS || type(STK(arg2)) != OT_INSTANCE) {Raise_Error(_SC("cannot apply instanceof between a %s and a %s"),GetTypeName(STK(arg1)),GetTypeName(STK(arg2))); SQ_THROW();} TARGET = _instance(STK(arg2))->InstanceOf(_class(STK(arg1)))?_true_:_false_; continue; case _OP_AND: if(IsFalse(STK(arg2))) { TARGET = STK(arg2); ci->_ip += (sarg1); } continue; case _OP_OR: if(!IsFalse(STK(arg2))) { TARGET = STK(arg2); ci->_ip += (sarg1); } continue; case _OP_NEG: _GUARD(NEG_OP(TARGET,STK(arg1))); continue; case _OP_NOT: TARGET = (IsFalse(STK(arg1))?_true_:_false_); continue; case _OP_BWNOT: if(type(STK(arg1)) == OT_INTEGER) { SQInteger t = _integer(STK(arg1)); TARGET = SQInteger(~t); continue; } Raise_Error(_SC("attempt to perform a bitwise op on a %s"), GetTypeName(STK(arg1))); SQ_THROW(); case _OP_CLOSURE: { SQClosure *c = ci->_closure._unVal.pClosure; SQFunctionProto *fp = c->_function._unVal.pFunctionProto; if(!CLOSURE_OP(TARGET,fp->_functions[arg1]._unVal.pFunctionProto)) { SQ_THROW(); } continue; } case _OP_YIELD:{ if(ci->_generator) { if(sarg1 != MAX_FUNC_STACKSIZE) temp_reg = STK(arg1); _GUARD(ci->_generator->Yield(this)); traps -= ci->_etraps; if(sarg1 != MAX_FUNC_STACKSIZE) STK(arg1) = temp_reg; } else { Raise_Error(_SC("trying to yield a '%s',only genenerator can be yielded"), GetTypeName(ci->_closure)); SQ_THROW();} if(Return(arg0, arg1, temp_reg)){ assert(traps == 0); outres = temp_reg; return true; } } continue; case _OP_RESUME: if(type(STK(arg1)) != OT_GENERATOR){ Raise_Error(_SC("trying to resume a '%s',only genenerator can be resumed"), GetTypeName(STK(arg1))); SQ_THROW();} _GUARD(_generator(STK(arg1))->Resume(this, arg0)); traps += ci->_etraps; continue; case _OP_FOREACH:{ int tojump; _GUARD(FOREACH_OP(STK(arg0),STK(arg2),STK(arg2+1),STK(arg2+2),arg2,sarg1,tojump)); ci->_ip += tojump; } continue; case _OP_POSTFOREACH: assert(type(STK(arg0)) == OT_GENERATOR); if(_generator(STK(arg0))->_state == SQGenerator::eDead) ci->_ip += (sarg1 - 1); continue; case _OP_DELEGATE: _GUARD(DELEGATE_OP(TARGET,STK(arg1),STK(arg2))); continue; case _OP_CLONE: if(!Clone(STK(arg1), TARGET)) { Raise_Error(_SC("cloning a %s"), GetTypeName(STK(arg1))); SQ_THROW();} continue; case _OP_TYPEOF: TypeOf(STK(arg1), TARGET); continue; case _OP_PUSHTRAP:{ SQInstruction *_iv = _funcproto(_closure(ci->_closure)->_function)->_instructions; _etraps.push_back(SQExceptionTrap(_top,_stackbase, &_iv[(ci->_ip-_iv)+arg1], arg0)); traps++; ci->_etraps++; } continue; case _OP_POPTRAP: { for(SQInteger i = 0; i < arg0; i++) { _etraps.pop_back(); traps--; ci->_etraps--; } } continue; case _OP_THROW: Raise_Error(TARGET); SQ_THROW(); continue; case _OP_CLASS: _GUARD(CLASS_OP(TARGET,arg1,arg2)); continue; case _OP_NEWSLOTA: bool bstatic = (arg0&NEW_SLOT_STATIC_FLAG)?true:false; if(type(STK(arg1)) == OT_CLASS) { if(type(_class(STK(arg1))->_metamethods[MT_NEWMEMBER]) != OT_NULL ) { Push(STK(arg1)); Push(STK(arg2)); Push(STK(arg3)); Push((arg0&NEW_SLOT_ATTRIBUTES_FLAG) ? STK(arg2-1) : _null_); Push(bstatic); int nparams = 5; if(Call(_class(STK(arg1))->_metamethods[MT_NEWMEMBER], nparams, _top - nparams, temp_reg,SQFalse,SQFalse)) { Pop(nparams); continue; } } } _GUARD(NewSlot(STK(arg1), STK(arg2), STK(arg3),bstatic)); if((arg0&NEW_SLOT_ATTRIBUTES_FLAG)) { _class(STK(arg1))->SetAttributes(STK(arg2),STK(arg2-1)); } continue; } } } exception_trap: { SQObjectPtr currerror = _lasterror; // dumpstack(_stackbase); SQInteger n = 0; SQInteger last_top = _top; if(ci) { if(_ss(this)->_notifyallexceptions) CallErrorHandler(currerror); if(traps) { do { if(ci->_etraps > 0) { SQExceptionTrap &et = _etraps.top(); ci->_ip = et._ip; _top = et._stacksize; _stackbase = et._stackbase; _stack._vals[_stackbase+et._extarget] = currerror; _etraps.pop_back(); traps--; ci->_etraps--; CLEARSTACK(last_top); goto exception_restore; } //if is a native closure if(type(ci->_closure) != OT_CLOSURE && n) break; if(ci->_generator) ci->_generator->Kill(); PopVarArgs(ci->_vargs); POP_CALLINFO(this); n++; } while(_callsstacksize); } else { //call the hook if(raiseerror && !_ss(this)->_notifyallexceptions) CallErrorHandler(currerror); } //remove call stack until a C function is found or the cstack is empty if(ci) do { SQBool exitafterthisone = ci->_root; if(ci->_generator) ci->_generator->Kill(); _stackbase -= ci->_prevstkbase; _top = _stackbase + ci->_prevtop; PopVarArgs(ci->_vargs); POP_CALLINFO(this); if( (ci && type(ci->_closure) != OT_CLOSURE) || exitafterthisone) break; } while(_callsstacksize); CLEARSTACK(last_top); } _lasterror = currerror; return false; } assert(0); } bool SQVM::CreateClassInstance(SQClass *theclass, SQObjectPtr &inst, SQObjectPtr &constructor) { inst = theclass->CreateInstance(); if(!theclass->Get(_ss(this)->_constructoridx,constructor)) { constructor = _null_; } return true; } void SQVM::CallErrorHandler(SQObjectPtr &error) { if(type(_errorhandler) != OT_NULL) { SQObjectPtr out; Push(_roottable); Push(error); Call(_errorhandler, 2, _top-2, out,SQFalse,SQFalse); Pop(2); } } void SQVM::CallDebugHook(SQInteger type,SQInteger forcedline) { SQObjectPtr temp_reg; SQInteger nparams=5; SQFunctionProto *func=_funcproto(_closure(ci->_closure)->_function); Push(_roottable); Push(type); Push(func->_sourcename); Push(forcedline?forcedline:func->GetLine(ci->_ip)); Push(func->_name); Call(_debughook,nparams,_top-nparams,temp_reg,SQFalse,SQFalse); Pop(nparams); } bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackbase,SQObjectPtr &retval,bool &suspend) { if (_nnativecalls + 1 > MAX_NATIVE_CALLS) { Raise_Error(_SC("Native stack overflow")); return false; } SQInteger nparamscheck = nclosure->_nparamscheck; if(((nparamscheck > 0) && (nparamscheck != nargs)) || ((nparamscheck < 0) && (nargs < (-nparamscheck)))) { Raise_Error(_SC("wrong number of parameters")); return false; } SQInteger tcs; if((tcs = nclosure->_typecheck.size())) { for(SQInteger i = 0; i < nargs && i < tcs; i++) if((nclosure->_typecheck._vals[i] != -1) && !(type(_stack._vals[stackbase+i]) & nclosure->_typecheck[i])) { Raise_ParamTypeError(i,nclosure->_typecheck._vals[i],type(_stack._vals[stackbase+i])); return false; } } _nnativecalls++; if ((_top + MIN_STACK_OVERHEAD) > (SQInteger)_stack.size()) { _stack.resize(_stack.size() + (MIN_STACK_OVERHEAD<<1)); } SQInteger oldtop = _top; SQInteger oldstackbase = _stackbase; _top = stackbase + nargs; CallInfo lci; memset(&lci, 0, sizeof(lci)); lci._closure = nclosure; lci._generator = NULL; lci._etraps = 0; lci._prevstkbase = (SQInt32) (stackbase - _stackbase); lci._ncalls = 1; lci._prevtop = (SQInt32) (oldtop - oldstackbase); PUSH_CALLINFO(this, lci); _stackbase = stackbase; //push free variables SQInteger outers = nclosure->_outervalues.size(); for (SQInteger i = 0; i < outers; i++) { Push(nclosure->_outervalues[i]); } if(type(nclosure->_env) == OT_WEAKREF) { _stack[stackbase] = _weakref(nclosure->_env)->_obj; } /* Store the call stack size, so we can restore that */ SQInteger cstksize = _callsstacksize; SQInteger ret; try { SQBool can_suspend = this->_can_suspend; this->_can_suspend = false; ret = (nclosure->_function)(this); this->_can_suspend = can_suspend; } catch (...) { _nnativecalls--; suspend = false; _callsstacksize = cstksize; _stackbase = oldstackbase; _top = oldtop; POP_CALLINFO(this); while(oldtop > _stackbase + stackbase) _stack._vals[oldtop--].Null(); throw; } _callsstacksize = cstksize; _nnativecalls--; suspend = false; if( ret == SQ_SUSPEND_FLAG) suspend = true; else if (ret < 0) { _stackbase = oldstackbase; _top = oldtop; POP_CALLINFO(this); while(oldtop > _stackbase + stackbase) _stack._vals[oldtop--].Null(); Raise_Error(_lasterror); return false; } if (ret != 0){ retval = TOP(); TOP().Null(); } else { retval = _null_; } _stackbase = oldstackbase; _top = oldtop; POP_CALLINFO(this); while(oldtop > _stackbase + stackbase) _stack._vals[oldtop--].Null(); return true; } bool SQVM::Get(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest,bool raw, bool fetchroot) { switch(type(self)){ case OT_TABLE: if(_table(self)->Get(key,dest))return true; break; case OT_ARRAY: if(sq_isnumeric(key)){ return _array(self)->Get(tointeger(key),dest); } break; case OT_INSTANCE: if(_instance(self)->Get(key,dest)) return true; break; default:break; //shut up compiler } if(FallBackGet(self,key,dest,raw)) return true; if(fetchroot) { if(_rawval(STK(0)) == _rawval(self) && type(STK(0)) == type(self)) { return _table(_roottable)->Get(key,dest); } } return false; } bool SQVM::FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest,bool raw) { switch(type(self)){ case OT_CLASS: return _class(self)->Get(key,dest); break; case OT_TABLE: case OT_USERDATA: //delegation if(_delegable(self)->_delegate) { if(Get(SQObjectPtr(_delegable(self)->_delegate),key,dest,raw,false)) return true; if(raw)return false; Push(self);Push(key); if(CallMetaMethod(_delegable(self),MT_GET,2,dest)) return true; } if(type(self) == OT_TABLE) { if(raw) return false; return _table_ddel->Get(key,dest); } return false; break; case OT_ARRAY: if(raw)return false; return _array_ddel->Get(key,dest); case OT_STRING: if(sq_isnumeric(key)){ SQInteger n=tointeger(key); if(abs((int)n)<_string(self)->_len){ if(n<0)n=_string(self)->_len-n; dest=SQInteger(_stringval(self)[n]); return true; } return false; } else { if(raw)return false; return _string_ddel->Get(key,dest); } break; case OT_INSTANCE: if(raw)return false; Push(self);Push(key); if(!CallMetaMethod(_delegable(self),MT_GET,2,dest)) { return _instance_ddel->Get(key,dest); } return true; case OT_INTEGER:case OT_FLOAT:case OT_BOOL: if(raw)return false; return _number_ddel->Get(key,dest); case OT_GENERATOR: if(raw)return false; return _generator_ddel->Get(key,dest); case OT_CLOSURE: case OT_NATIVECLOSURE: if(raw)return false; return _closure_ddel->Get(key,dest); case OT_THREAD: if(raw)return false; return _thread_ddel->Get(key,dest); case OT_WEAKREF: if(raw)return false; return _weakref_ddel->Get(key,dest); default:return false; } return false; } bool SQVM::Set(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val,bool fetchroot) { switch(type(self)){ case OT_TABLE: if(_table(self)->Set(key,val)) return true; if(_table(self)->_delegate) { if(Set(_table(self)->_delegate,key,val,false)) { return true; } } //keeps going case OT_USERDATA: if(_delegable(self)->_delegate) { SQObjectPtr t; Push(self);Push(key);Push(val); if(CallMetaMethod(_delegable(self),MT_SET,3,t)) return true; } break; case OT_INSTANCE:{ if(_instance(self)->Set(key,val)) return true; SQObjectPtr t; Push(self);Push(key);Push(val); if(CallMetaMethod(_delegable(self),MT_SET,3,t)) return true; } break; case OT_ARRAY: if(!sq_isnumeric(key)) {Raise_Error(_SC("indexing %s with %s"),GetTypeName(self),GetTypeName(key)); return false; } return _array(self)->Set(tointeger(key),val); default: Raise_Error(_SC("trying to set '%s'"),GetTypeName(self)); return false; } if(fetchroot) { if(_rawval(STK(0)) == _rawval(self) && type(STK(0)) == type(self)) { return _table(_roottable)->Set(key,val); } } return false; } bool SQVM::Clone(const SQObjectPtr &self,SQObjectPtr &target) { SQObjectPtr temp_reg; SQObjectPtr newobj; switch(type(self)){ case OT_TABLE: newobj = _table(self)->Clone(); goto cloned_mt; case OT_INSTANCE: newobj = _instance(self)->Clone(_ss(this)); cloned_mt: if(_delegable(newobj)->_delegate){ Push(newobj); Push(self); CallMetaMethod(_delegable(newobj),MT_CLONED,2,temp_reg); } target = newobj; return true; case OT_ARRAY: target = _array(self)->Clone(); return true; default: return false; } } bool SQVM::NewSlot(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val,bool bstatic) { if(type(key) == OT_NULL) { Raise_Error(_SC("null cannot be used as index")); return false; } switch(type(self)) { case OT_TABLE: { bool rawcall = true; if(_table(self)->_delegate) { SQObjectPtr res; if(!_table(self)->Get(key,res)) { Push(self);Push(key);Push(val); rawcall = !CallMetaMethod(_table(self),MT_NEWSLOT,3,res); } } if(rawcall) _table(self)->NewSlot(key,val); //cannot fail break;} case OT_INSTANCE: { SQObjectPtr res; Push(self);Push(key);Push(val); if(!CallMetaMethod(_instance(self),MT_NEWSLOT,3,res)) { Raise_Error(_SC("class instances do not support the new slot operator")); return false; } break;} case OT_CLASS: if(!_class(self)->NewSlot(_ss(this),key,val,bstatic)) { if(_class(self)->_locked) { Raise_Error(_SC("trying to modify a class that has already been instantiated")); return false; } else { SQObjectPtr oval = PrintObjVal(key); Raise_Error(_SC("the property '%s' already exists"),_stringval(oval)); return false; } } break; default: Raise_Error(_SC("indexing %s with %s"),GetTypeName(self),GetTypeName(key)); return false; break; } return true; } bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &res) { switch(type(self)) { case OT_TABLE: case OT_INSTANCE: case OT_USERDATA: { SQObjectPtr t; bool handled = false; if(_delegable(self)->_delegate) { Push(self);Push(key); handled = CallMetaMethod(_delegable(self),MT_DELSLOT,2,t); } if(!handled) { if(type(self) == OT_TABLE) { if(_table(self)->Get(key,t)) { _table(self)->Remove(key); } else { Raise_IdxError((const SQObject &)key); return false; } } else { Raise_Error(_SC("cannot delete a slot from %s"),GetTypeName(self)); return false; } } res = t; } break; default: Raise_Error(_SC("attempt to delete a slot from a %s"),GetTypeName(self)); return false; } return true; } bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObjectPtr &outres,SQBool raiseerror,SQBool can_suspend) { #ifdef _DEBUG SQInteger prevstackbase = _stackbase; #endif switch(type(closure)) { case OT_CLOSURE: { assert(!can_suspend || this->_can_suspend); SQBool backup_suspend = this->_can_suspend; this->_can_suspend = can_suspend; bool ret = Execute(closure, _top - nparams, nparams, stackbase,outres,raiseerror); this->_can_suspend = backup_suspend; return ret; } break; case OT_NATIVECLOSURE:{ bool suspend; return CallNative(_nativeclosure(closure), nparams, stackbase, outres,suspend); } break; case OT_CLASS: { SQObjectPtr constr; SQObjectPtr temp; CreateClassInstance(_class(closure),outres,constr); if(type(constr) != OT_NULL) { _stack[stackbase] = outres; return Call(constr,nparams,stackbase,temp,raiseerror,false); } return true; } break; default: return false; } #ifdef _DEBUG if(!_suspended) { assert(_stackbase == prevstackbase); } #endif return true; } bool SQVM::CallMetaMethod(SQDelegable *del,SQMetaMethod mm,SQInteger nparams,SQObjectPtr &outres) { SQObjectPtr closure; if(del->GetMetaMethod(this, mm, closure)) { if(Call(closure, nparams, _top - nparams, outres, SQFalse, SQFalse)) { Pop(nparams); return true; } } Pop(nparams); return false; } void SQVM::Remove(SQInteger n) { n = (n >= 0)?n + _stackbase - 1:_top + n; for(SQInteger i = n; i < _top; i++){ _stack[i] = _stack[i+1]; } _stack[_top] = _null_; _top--; } void SQVM::Pop() { _stack[--_top] = _null_; } void SQVM::Pop(SQInteger n) { for(SQInteger i = 0; i < n; i++){ _stack[--_top] = _null_; } } void SQVM::Push(const SQObjectPtr &o) { /* Normally the stack shouldn't get this full, sometimes it might. As of now * all cases have been bugs in "our" (OpenTTD) code. Trigger an assert for * all debug builds and for the release builds just increase the stack size. * This way getting a false positive isn't that bad (releases work fine) and * if there is something fishy it can be caught in RCs/nightlies. */ #ifdef NDEBUG if (_top >= (int)_stack.capacity()) _stack.resize(2 * _stack.capacity()); #else assert(_top < (int)_stack.capacity()); #endif _stack[_top++] = o; } SQObjectPtr &SQVM::Top() { return _stack[_top-1]; } SQObjectPtr &SQVM::PopGet() { return _stack[--_top]; } SQObjectPtr &SQVM::GetUp(SQInteger n) { return _stack[_top+n]; } SQObjectPtr &SQVM::GetAt(SQInteger n) { return _stack[n]; } #ifdef _DEBUG_DUMP void SQVM::dumpstack(SQInteger stackbase,bool dumpall) { SQInteger size=dumpall?_stack.size():_top; SQInteger n=0; scprintf(_SC("\n>>>>stack dump<<<<\n")); CallInfo &ci=_callsstack[_callsstacksize-1]; scprintf(_SC("IP: %p\n"),ci._ip); scprintf(_SC("prev stack base: %d\n"),ci._prevstkbase); scprintf(_SC("prev top: %d\n"),ci._prevtop); for(SQInteger i=0;i"));else scprintf(_SC(" ")); scprintf(_SC("[%d]:"),n); switch(type(obj)){ case OT_FLOAT: scprintf(_SC("FLOAT %.3f"),_float(obj));break; case OT_INTEGER: scprintf(_SC("INTEGER %d"),_integer(obj));break; case OT_BOOL: scprintf(_SC("BOOL %s"),_integer(obj)?"true":"false");break; case OT_STRING: scprintf(_SC("STRING %s"),_stringval(obj));break; case OT_NULL: scprintf(_SC("NULL")); break; case OT_TABLE: scprintf(_SC("TABLE %p[%p]"),_table(obj),_table(obj)->_delegate);break; case OT_ARRAY: scprintf(_SC("ARRAY %p"),_array(obj));break; case OT_CLOSURE: scprintf(_SC("CLOSURE [%p]"),_closure(obj));break; case OT_NATIVECLOSURE: scprintf(_SC("NATIVECLOSURE"));break; case OT_USERDATA: scprintf(_SC("USERDATA %p[%p]"),_userdataval(obj),_userdata(obj)->_delegate);break; case OT_GENERATOR: scprintf(_SC("GENERATOR %p"),_generator(obj));break; case OT_THREAD: scprintf(_SC("THREAD [%p]"),_thread(obj));break; case OT_USERPOINTER: scprintf(_SC("USERPOINTER %p"),_userpointer(obj));break; case OT_CLASS: scprintf(_SC("CLASS %p"),_class(obj));break; case OT_INSTANCE: scprintf(_SC("INSTANCE %p"),_instance(obj));break; case OT_WEAKREF: scprintf(_SC("WEAKERF %p"),_weakref(obj));break; default: assert(0); break; }; scprintf(_SC("\n")); ++n; } } #endif openttd-1.3.3/src/3rdparty/squirrel/lib/0000755000000000000000000000000012246102757016652 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/squirrel.dsw0000644000000000000000000000267612246102604020473 0ustar rootrootMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "sq"=.\sq\sq.dsp - Package Owner=<4> Package=<5> {{{ begin source code control . end source code control }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name sqlibs End Project Dependency Begin Project Dependency Project_Dep_Name squirrel End Project Dependency Begin Project Dependency Project_Dep_Name sqstdlib End Project Dependency }}} ############################################################################### Project: "sqstdlib"=.\sqstdlib\sqstdlib.dsp - Package Owner=<4> Package=<5> {{{ begin source code control "$/squirrel", HAAAAAAA . end source code control }}} Package=<4> {{{ }}} ############################################################################### Project: "squirrel"=.\squirrel\squirrel.dsp - Package Owner=<4> Package=<5> {{{ begin source code control "$/squirrel", HAAAAAAA . end source code control }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ begin source code control "$/squirrel", HAAAAAAA . end source code control }}} Package=<3> {{{ }}} ############################################################################### openttd-1.3.3/src/3rdparty/squirrel/Makefile0000644000000000000000000000053012246102604017531 0ustar rootroot SQUIRREL=. MAKE=make sq32: cd squirrel; $(MAKE) cd sqstdlib; $(MAKE) cd sq; $(MAKE) sqprof: cd squirrel; $(MAKE) sqprof cd sqstdlib; $(MAKE) sqprof cd sq; $(MAKE) sqprof sq64: cd squirrel; $(MAKE) sq64 cd sqstdlib; $(MAKE) sq64 cd sq; $(MAKE) sq64 clean: $(MAKE) -C squirrel clean $(MAKE) -C sqstdlib clean $(MAKE) -C sq clean openttd-1.3.3/src/3rdparty/squirrel/README0000644000000000000000000000127312246102604016756 0ustar rootrootThe programming language SQUIRREL 2.2.5 stable -------------------------------------------------- The project has been compiled and run on Windows(Windows XP/2000 on Intel x86 Windows XP Pro on AMD x64) and Linux(Slackware 9.0 on Intel x86, Fedora Core 4 on AMD x64). Has been tested with the following compilers: MS Visual C++ 6.0,7.0,7.1 and 8.0 (32 and 64bits) MinGW gcc 3.2 (mingw special 20020817-1) Cygnus gcc 3.2 Linux gcc 3.2.3 Linux gcc 4.0.0 (x86 64bits) Feedback and suggestions are appreciated project page - http://www.squirrel-lang.org community forums - http://www.squirrel-lang.org/Forums wiki - http://wiki.squirrel-lang.org author - alberto@demichelis.net END OF README openttd-1.3.3/src/3rdparty/squirrel/sq/0000755000000000000000000000000012246102757016527 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/sq/Makefile0000644000000000000000000000064612246102603020163 0ustar rootrootSQUIRREL= .. OUT= $(SQUIRREL)/bin/sq INCZ= -I$(SQUIRREL)/include -I. -I$(SQUIRREL)/sqlibs LIBZ= -L$(SQUIRREL)/lib LIB= -lsquirrel -lsqstdlib OBJS= sq.o SRCS= sq.c sq32: g++ -O2 -fno-rtti -o $(OUT) $(SRCS) $(INCZ) $(LIBZ) $(LIB) sqprof: g++ -O2 -pg -fno-rtti -pie -gstabs -g3 -o $(OUT) $(SRCS) $(INCZ) $(LIBZ) $(LIB) sq64: g++ -O2 -fno-rtti -D_SQ64 -o $(OUT) $(SRCS) $(INCZ) $(LIBZ) $(LIB) clean: rm -f $(OUT) openttd-1.3.3/src/3rdparty/squirrel/sq/sq.c0000644000000000000000000001501012246102603017301 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #if defined(_MSC_VER) && defined(_DEBUG) #include #include #endif #include #include #include #include #include #include #include #ifdef SQUNICODE #define scfprintf fwprintf #define scfopen _wfopen #define scvprintf vwprintf #else #define scfprintf fprintf #define scfopen fopen #define scvprintf vprintf #endif void PrintVersionInfos(); #if defined(_MSC_VER) && defined(_DEBUG) int MemAllocHook( int allocType, void *userData, size_t size, int blockType, long requestNumber, const unsigned char *filename, int lineNumber) { // if(requestNumber==585)_asm int 3; return 1; } #endif SQInteger quit(HSQUIRRELVM v) { int *done; sq_getuserpointer(v,-1,(SQUserPointer*)&done); *done=1; return 0; } void printfunc(HSQUIRRELVM v,const SQChar *s,...) { va_list vl; va_start(vl, s); scvprintf( s, vl); va_end(vl); } void PrintVersionInfos() { scfprintf(stdout,_SC("%s %s (%d bits)\n"),SQUIRREL_VERSION,SQUIRREL_COPYRIGHT,sizeof(SQInteger)*8); if(sizeof(SQFloat) != sizeof(float)) { scfprintf(stdout,_SC("[%d bits floats]\n"),sizeof(SQFloat)*8); } } void PrintUsage() { scfprintf(stderr,_SC("usage: sq .\n") _SC("Available options are:\n") _SC(" -c compiles the file to bytecode(default output 'out.cnut')\n") _SC(" -o specifies output file for the -c option\n") _SC(" -c compiles only\n") _SC(" -d generates debug infos\n") _SC(" -v displays version infos\n") _SC(" -h prints help\n")); } #define _INTERACTIVE 0 #define _DONE 2 //<> this func is a mess int getargs(HSQUIRRELVM v,int argc, char* argv[]) { int i; int compiles_only = 0; static SQChar temp[500]; const SQChar *ret=NULL; char * output = NULL; int lineinfo=0; if(argc>1) { int arg=1,exitloop=0; while(arg < argc && !exitloop) { if(argv[arg][0]=='-') { switch(argv[arg][1]) { case 'd': //DEBUG(debug infos) sq_enabledebuginfo(v,1); break; case 'c': compiles_only = 1; break; case 'o': if(arg < argc) { arg++; output = argv[arg]; } break; case 'v': PrintVersionInfos(); return _DONE; case 'h': PrintVersionInfos(); PrintUsage(); return _DONE; default: PrintVersionInfos(); scprintf(_SC("unknown prameter '-%c'\n"),argv[arg][1]); PrintUsage(); return _DONE; } }else break; arg++; } // src file if(arg")); for(;;) { int c; if(done)return; c = getchar(); if (c == _SC('\n')) { if (i>0 && buffer[i-1] == _SC('\\')) { buffer[i-1] = _SC('\n'); } else if(blocks==0)break; buffer[i++] = _SC('\n'); } else if (c==_SC('}')) {blocks--; buffer[i++] = (SQChar)c;} else if(c==_SC('{') && !string){ blocks++; buffer[i++] = (SQChar)c; } else if(c==_SC('"') || c==_SC('\'')){ string=!string; buffer[i++] = (SQChar)c; } else if (i >= MAXINPUT-1) { scfprintf(stderr, _SC("sq : input line too long\n")); break; } else{ buffer[i++] = (SQChar)c; } } buffer[i] = _SC('\0'); if(buffer[0]==_SC('=')){ scsprintf(sq_getscratchpad(v,MAXINPUT),_SC("return (%s)"),&buffer[1]); memcpy(buffer,sq_getscratchpad(v,-1),(scstrlen(sq_getscratchpad(v,-1))+1)*sizeof(SQChar)); retval=1; } i=scstrlen(buffer); if(i>0){ SQInteger oldtop=sq_gettop(v); if(SQ_SUCCEEDED(sq_compilebuffer(v,buffer,i,_SC("interactive console"),SQTrue))){ sq_pushroottable(v); if(SQ_SUCCEEDED(sq_call(v,1,retval,SQTrue)) && retval){ scprintf(_SC("\n")); sq_pushroottable(v); sq_pushstring(v,_SC("print"),-1); sq_get(v,-2); sq_pushroottable(v); sq_push(v,-4); sq_call(v,2,SQFalse,SQTrue); retval=0; scprintf(_SC("\n")); } } sq_settop(v,oldtop); } } } int main(int argc, char* argv[]) { HSQUIRRELVM v; const SQChar *filename=NULL; #if defined(_MSC_VER) && defined(_DEBUG) _CrtSetAllocHook(MemAllocHook); #endif v=sq_open(1024); sq_setprintfunc(v,printfunc); sq_pushroottable(v); sqstd_register_bloblib(v); sqstd_register_iolib(v); sqstd_register_systemlib(v); sqstd_register_mathlib(v); sqstd_register_stringlib(v); //aux library //sets error handlers sqstd_seterrorhandlers(v); //gets arguments switch(getargs(v,argc,argv)) { case _INTERACTIVE: Interactive(v); break; case _DONE: default: break; } sq_close(v); #if defined(_MSC_VER) && defined(_DEBUG) _getch(); _CrtMemDumpAllObjectsSince( NULL ); #endif return 0; } openttd-1.3.3/src/3rdparty/squirrel/sq/sq.dsp0000644000000000000000000000731212246102603017653 0ustar rootroot# Microsoft Developer Studio Project File - Name="sq" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=sq - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "sq.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "sq.mak" CFG="sq - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "sq - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "sq - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_LocalPath ".." CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "sq - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\sqstdlib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x410 /d "NDEBUG" # ADD RSC /l 0x410 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 squirrel.lib sqstdlib.lib /nologo /subsystem:console /machine:I386 /out:"../bin/sq.exe" /libpath:"../lib" !ELSEIF "$(CFG)" == "sq - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\sqstdlib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x410 /d "_DEBUG" # ADD RSC /l 0x410 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 squirrel.lib sqstdlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../bin/sq.exe" /pdbtype:sept /libpath:"../lib" !ENDIF # Begin Target # Name "sq - Win32 Release" # Name "sq - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\sq.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project openttd-1.3.3/src/3rdparty/squirrel/README.OpenTTD0000644000000000000000000000026612246102604020233 0ustar rootrootThis folder contains a modified version of Squirrel that is tailored to meet the needs of OpenTTD. We have based this modification on the version as described in: include/squirrel.h openttd-1.3.3/src/3rdparty/squirrel/include/0000755000000000000000000000000012246102757017527 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/include/sqstdio.h0000644000000000000000000000325212246102603021356 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTDIO_H_ #define _SQSTDIO_H_ #ifdef __cplusplus #define SQSTD_STREAM_TYPE_TAG 0x80000000 struct SQStream { virtual ~SQStream() {} virtual SQInteger Read(void *buffer, SQInteger size) = 0; virtual SQInteger Write(void *buffer, SQInteger size) = 0; virtual SQInteger Flush() = 0; virtual SQInteger Tell() = 0; virtual SQInteger Len() = 0; virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0; virtual bool IsValid() = 0; virtual bool EOS() = 0; }; extern "C" { #endif #define SQ_SEEK_CUR 0 #define SQ_SEEK_END 1 #define SQ_SEEK_SET 2 typedef void* SQFILE; SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *); SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE); SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE); SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger); SQUIRREL_API SQInteger sqstd_ftell(SQFILE); SQUIRREL_API SQInteger sqstd_fflush(SQFILE); SQUIRREL_API SQInteger sqstd_fclose(SQFILE); SQUIRREL_API SQInteger sqstd_feof(SQFILE); SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own); SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file); //compiler helpers SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror); SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror); SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename); SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v); #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*_SQSTDIO_H_*/ openttd-1.3.3/src/3rdparty/squirrel/include/sqstdsystem.h0000644000000000000000000000043012246102603022266 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTD_SYSTEMLIB_H_ #define _SQSTD_SYSTEMLIB_H_ #ifdef __cplusplus extern "C" { #endif SQUIRREL_API SQInteger sqstd_register_systemlib(HSQUIRRELVM v); #ifdef __cplusplus } /*extern "C"*/ #endif #endif /* _SQSTD_SYSTEMLIB_H_ */ openttd-1.3.3/src/3rdparty/squirrel/include/squirrel.h0000644000000000000000000004414412246102603021543 0ustar rootroot/* Copyright (c) 2003-2011 Alberto Demichelis This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ #ifndef _SQUIRREL_H_ #define _SQUIRREL_H_ #ifdef __cplusplus extern "C" { #endif #if defined(_MSC_VER) # define inline __forceinline #endif /* _MSC_VER */ #if defined(_MSC_VER) && _MSC_VER >= 1400 // MSVC 2005 safety checks # pragma warning(disable: 4996) // '_wfopen' was declared deprecated # define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions # define _CRT_NON_CONFORMING_SWPRINTFS // another deprecated stuff #endif /* _MSC_VER >= 1400 */ #ifndef SQUIRREL_API #define SQUIRREL_API extern #endif #if (defined(_WIN64) || defined(_LP64)) #ifndef _SQ64 #define _SQ64 #endif #endif #ifdef _SQ64 #ifdef _MSC_VER typedef __int64 SQInteger; typedef unsigned __int64 SQUnsignedInteger; typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/ #elif defined(_WIN32) typedef long long SQInteger; typedef unsigned long long SQUnsignedInteger; typedef unsigned long long SQHash; /*should be the same size of a pointer*/ #else typedef long SQInteger; typedef unsigned long SQUnsignedInteger; typedef unsigned long SQHash; /*should be the same size of a pointer*/ #endif typedef int SQInt32; #else typedef int SQInteger; typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/ typedef unsigned int SQUnsignedInteger; typedef unsigned int SQHash; /*should be the same size of a pointer*/ #endif #ifdef SQUSEDOUBLE typedef double SQFloat; #else typedef float SQFloat; #endif #if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) #ifdef _MSC_VER typedef __int64 SQRawObjectVal; //must be 64bits #else typedef long long SQRawObjectVal; //must be 64bits #endif #define SQ_OBJECT_RAWINIT() { _unVal.raw = 0; } #else typedef SQUnsignedInteger SQRawObjectVal; //is 32 bits on 32 bits builds and 64 bits otherwise #define SQ_OBJECT_RAWINIT() #endif typedef void* SQUserPointer; typedef SQUnsignedInteger SQBool; typedef SQInteger SQRESULT; #define SQTrue (1) #define SQFalse (0) struct SQVM; struct SQTable; struct SQArray; struct SQString; struct SQClosure; struct SQGenerator; struct SQNativeClosure; struct SQUserData; struct SQFunctionProto; struct SQRefCounted; struct SQClass; struct SQInstance; struct SQDelegable; #ifdef _UNICODE #define SQUNICODE #endif #ifdef SQUNICODE #if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8 #ifndef _WCHAR_T_DEFINED //this is if the compiler considers wchar_t as native type typedef unsigned short wchar_t; #endif #endif typedef wchar_t SQChar; #define _SC(a) L##a #define scstrcmp wcscmp #define scsprintf swprintf #define scsnprintf _snwprintf #define scstrlen wcslen #define scstrtod wcstod #define scstrtol wcstol #define scatoi _wtoi #define scstrtoul wcstoul #define scvsprintf vswprintf #define scstrstr wcsstr #define scisspace iswspace #define scisdigit iswdigit #define scisxdigit iswxdigit #define scisalpha iswalpha #define sciscntrl iswcntrl #define scisalnum iswalnum #define scprintf wprintf #define scfprintf fwprintf #define scvprintf vwprintf #define scvfprintf vfwprintf #define scvsnprintf _vsnwprintf #define scstrdup _wcsdup #define scstrrchr wcsrchr #define scstrcat wcscat #define MAX_CHAR 0xFFFF #else typedef char SQChar; #define _SC(a) a #define scstrcmp strcmp #define scsprintf sprintf #define scsnprintf snprintf #define scstrlen strlen #define scstrtod strtod #define scstrtol strtol #define scatoi atoi #define scstrtoul strtoul #define scvsprintf vsprintf #define scstrstr strstr #define scisspace isspace #define scisdigit isdigit #define scisxdigit isxdigit #define sciscntrl iscntrl #define scisalpha isalpha #define scisalnum isalnum #define scprintf printf #define scfprintf fprintf #define scvprintf vprintf #define scvfprintf vfprintf #define scvsnprintf vsnprintf #define scstrdup strdup #define scstrrchr strrchr #define scstrcat strcat #define MAX_CHAR 0xFFFF #endif #define SQUIRREL_VERSION _SC("Squirrel 2.2.5 stable - With custom OpenTTD modifications") #define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2010 Alberto Demichelis") #define SQUIRREL_AUTHOR _SC("Alberto Demichelis") #define SQUIRREL_VERSION_NUMBER 225 #define SQ_VMSTATE_IDLE 0 #define SQ_VMSTATE_RUNNING 1 #define SQ_VMSTATE_SUSPENDED 2 #define SQUIRREL_EOB 0 #define SQ_BYTECODE_STREAM_TAG 0xFAFA #define SQOBJECT_REF_COUNTED 0x08000000 #define SQOBJECT_NUMERIC 0x04000000 #define SQOBJECT_DELEGABLE 0x02000000 #define SQOBJECT_CANBEFALSE 0x01000000 #define SQ_MATCHTYPEMASKSTRING (-99999) #define _RT_MASK 0x00FFFFFF #define _RAW_TYPE(type) (type&_RT_MASK) #define _RT_NULL 0x00000001 #define _RT_INTEGER 0x00000002 #define _RT_FLOAT 0x00000004 #define _RT_BOOL 0x00000008 #define _RT_STRING 0x00000010 #define _RT_TABLE 0x00000020 #define _RT_ARRAY 0x00000040 #define _RT_USERDATA 0x00000080 #define _RT_CLOSURE 0x00000100 #define _RT_NATIVECLOSURE 0x00000200 #define _RT_GENERATOR 0x00000400 #define _RT_USERPOINTER 0x00000800 #define _RT_THREAD 0x00001000 #define _RT_FUNCPROTO 0x00002000 #define _RT_CLASS 0x00004000 #define _RT_INSTANCE 0x00008000 #define _RT_WEAKREF 0x00010000 typedef enum tagSQObjectType{ OT_NULL = (_RT_NULL|SQOBJECT_CANBEFALSE), OT_INTEGER = (_RT_INTEGER|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE), OT_FLOAT = (_RT_FLOAT|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE), OT_BOOL = (_RT_BOOL|SQOBJECT_CANBEFALSE), OT_STRING = (_RT_STRING|SQOBJECT_REF_COUNTED), OT_TABLE = (_RT_TABLE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE), OT_ARRAY = (_RT_ARRAY|SQOBJECT_REF_COUNTED), OT_USERDATA = (_RT_USERDATA|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE), OT_CLOSURE = (_RT_CLOSURE|SQOBJECT_REF_COUNTED), OT_NATIVECLOSURE = (_RT_NATIVECLOSURE|SQOBJECT_REF_COUNTED), OT_GENERATOR = (_RT_GENERATOR|SQOBJECT_REF_COUNTED), OT_USERPOINTER = _RT_USERPOINTER, OT_THREAD = (_RT_THREAD|SQOBJECT_REF_COUNTED) , OT_FUNCPROTO = (_RT_FUNCPROTO|SQOBJECT_REF_COUNTED), //internal usage only OT_CLASS = (_RT_CLASS|SQOBJECT_REF_COUNTED), OT_INSTANCE = (_RT_INSTANCE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE), OT_WEAKREF = (_RT_WEAKREF|SQOBJECT_REF_COUNTED) }SQObjectType; #define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED) typedef union tagSQObjectValue { struct SQTable *pTable; struct SQArray *pArray; struct SQClosure *pClosure; struct SQGenerator *pGenerator; struct SQNativeClosure *pNativeClosure; struct SQString *pString; struct SQUserData *pUserData; SQInteger nInteger; SQFloat fFloat; SQUserPointer pUserPointer; struct SQFunctionProto *pFunctionProto; struct SQRefCounted *pRefCounted; struct SQDelegable *pDelegable; struct SQVM *pThread; struct SQClass *pClass; struct SQInstance *pInstance; struct SQWeakRef *pWeakRef; SQRawObjectVal raw; }SQObjectValue; typedef struct tagSQObject { SQObjectType _type; SQObjectValue _unVal; }SQObject; typedef struct tagSQStackInfos{ const SQChar* funcname; const SQChar* source; SQInteger line; }SQStackInfos; typedef struct SQVM* HSQUIRRELVM; typedef SQObject HSQOBJECT; typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM); typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size); typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/); typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...); typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger); typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger); typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer); typedef struct tagSQRegFunction{ const SQChar *name; SQFUNCTION f; SQInteger nparamscheck; const SQChar *typemask; }SQRegFunction; typedef struct tagSQFunctionInfo { SQUserPointer funcid; const SQChar *name; const SQChar *source; }SQFunctionInfo; /*vm*/ SQUIRREL_API bool sq_can_suspend(HSQUIRRELVM v); SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize); SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize); SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v); SQUIRREL_API void sq_close(HSQUIRRELVM v); SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p); SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v); SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc); SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v); SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v); SQUIRREL_API bool sq_resumecatch(HSQUIRRELVM v, int suspend = -1); SQUIRREL_API bool sq_resumeerror(HSQUIRRELVM v); SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror); SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v); SQUIRREL_API void sq_decreaseops(HSQUIRRELVM v, int amount); /*compiler*/ SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror); SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror); SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable); SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable); SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f); /*stack operations*/ SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop); SQUIRREL_API void sq_poptop(HSQUIRRELVM v); SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v); SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop); SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize); SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v); SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx); /*object creation handling*/ SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size); SQUIRREL_API void sq_newtable(HSQUIRRELVM v); SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size); SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars); SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask); SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len); SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f); SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n); SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b); SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p); SQUIRREL_API void sq_pushnull(HSQUIRRELVM v); SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v); SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b); SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c); SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i); SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f); SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b); SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread); SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p); SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag); SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag); SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag); SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook); SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize); SQUIRREL_API SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger idx,SQFunctionInfo *fi); SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars); SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name); SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p); SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag); SQUIRREL_API SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize); SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase); SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t); /*object manipulation*/ SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v); SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v); SQUIRREL_API void sq_pushconsttable(HSQUIRRELVM v); SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v); SQUIRREL_API SQRESULT sq_setconsttable(HSQUIRRELVM v); SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic); SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval); SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize); SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx); SQUIRREL_API SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos); SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx); /*calls*/ SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend = -1); SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror); SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx); SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err); SQUIRREL_API void sq_reseterror(HSQUIRRELVM v); SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v); /*raw object handling*/ SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po); SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj); SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po); SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po); SQUIRREL_API void sq_resetobject(HSQOBJECT *po); SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o); SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o); SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o); SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o); SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag); /*GC*/ SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v); /*serialization*/ SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up); SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up); /*mem allocation*/ SQUIRREL_API void *sq_malloc(SQUnsignedInteger size); SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize); SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size); /*debug*/ SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si); SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v); /*UTILITY MACRO*/ #define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC) #define sq_istable(o) ((o)._type==OT_TABLE) #define sq_isarray(o) ((o)._type==OT_ARRAY) #define sq_isfunction(o) ((o)._type==OT_FUNCPROTO) #define sq_isclosure(o) ((o)._type==OT_CLOSURE) #define sq_isgenerator(o) ((o)._type==OT_GENERATOR) #define sq_isnativeclosure(o) ((o)._type==OT_NATIVECLOSURE) #define sq_isstring(o) ((o)._type==OT_STRING) #define sq_isinteger(o) ((o)._type==OT_INTEGER) #define sq_isfloat(o) ((o)._type==OT_FLOAT) #define sq_isuserpointer(o) ((o)._type==OT_USERPOINTER) #define sq_isuserdata(o) ((o)._type==OT_USERDATA) #define sq_isthread(o) ((o)._type==OT_THREAD) #define sq_isnull(o) ((o)._type==OT_NULL) #define sq_isclass(o) ((o)._type==OT_CLASS) #define sq_isinstance(o) ((o)._type==OT_INSTANCE) #define sq_isbool(o) ((o)._type==OT_BOOL) #define sq_isweakref(o) ((o)._type==OT_WEAKREF) #define sq_type(o) ((o)._type) /* deprecated */ #define sq_createslot(v,n) sq_newslot(v,n,SQFalse) #define SQ_OK (0) #define SQ_ERROR (-1) #define SQ_FAILED(res) (res<0) #define SQ_SUCCEEDED(res) (res>=0) #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*_SQUIRREL_H_*/ openttd-1.3.3/src/3rdparty/squirrel/include/sqstdaux.h0000644000000000000000000000047712246102603021552 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTD_AUXLIB_H_ #define _SQSTD_AUXLIB_H_ #ifdef __cplusplus extern "C" { #endif SQUIRREL_API void sqstd_seterrorhandlers(HSQUIRRELVM v); SQUIRREL_API void sqstd_printcallstack(HSQUIRRELVM v); #ifdef __cplusplus } /*extern "C"*/ #endif #endif /* _SQSTD_AUXLIB_H_ */ openttd-1.3.3/src/3rdparty/squirrel/include/sqstdmath.h0000644000000000000000000000040412246102603021674 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTD_MATH_H_ #define _SQSTD_MATH_H_ #ifdef __cplusplus extern "C" { #endif SQUIRREL_API SQRESULT sqstd_register_mathlib(HSQUIRRELVM v); #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*_SQSTD_MATH_H_*/ openttd-1.3.3/src/3rdparty/squirrel/include/sqstdstring.h0000644000000000000000000000215012246102603022251 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTD_STRING_H_ #define _SQSTD_STRING_H_ #ifdef __cplusplus extern "C" { #endif typedef unsigned int SQRexBool; typedef struct SQRex SQRex; typedef struct { const SQChar *begin; SQInteger len; } SQRexMatch; SQUIRREL_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error); SQUIRREL_API void sqstd_rex_free(SQRex *exp); SQUIRREL_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text); SQUIRREL_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end); SQUIRREL_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end); SQUIRREL_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp); SQUIRREL_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp); SQUIRREL_API SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output); SQUIRREL_API SQRESULT sqstd_register_stringlib(HSQUIRRELVM v); #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*_SQSTD_STRING_H_*/ openttd-1.3.3/src/3rdparty/squirrel/include/sqstdblob.h0000644000000000000000000000075312246102603021670 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTDBLOB_H_ #define _SQSTDBLOB_H_ #ifdef __cplusplus extern "C" { #endif SQUIRREL_API SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size); SQUIRREL_API SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr); SQUIRREL_API SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx); SQUIRREL_API SQRESULT sqstd_register_bloblib(HSQUIRRELVM v); #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*_SQSTDBLOB_H_*/ openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/0000755000000000000000000000000012246102757017731 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdio.cpp0000644000000000000000000002360012246102603022112 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #include "sqstdstream.h" #define SQSTD_FILE_TYPE_TAG (SQSTD_STREAM_TYPE_TAG | 0x00000001) //basic API SQFILE sqstd_fopen(const SQChar *filename ,const SQChar *mode) { #ifndef SQUNICODE return (SQFILE)fopen(filename,mode); #else return (SQFILE)_wfopen(filename,mode); #endif } SQInteger sqstd_fread(void* buffer, SQInteger size, SQInteger count, SQFILE file) { return (SQInteger)fread(buffer,size,count,(FILE *)file); } SQInteger sqstd_fwrite(const SQUserPointer buffer, SQInteger size, SQInteger count, SQFILE file) { return (SQInteger)fwrite(buffer,size,count,(FILE *)file); } SQInteger sqstd_fseek(SQFILE file, SQInteger offset, SQInteger origin) { SQInteger realorigin; switch(origin) { case SQ_SEEK_CUR: realorigin = SEEK_CUR; break; case SQ_SEEK_END: realorigin = SEEK_END; break; case SQ_SEEK_SET: realorigin = SEEK_SET; break; default: return -1; //failed } return fseek((FILE *)file,(long)offset,(int)realorigin); } SQInteger sqstd_ftell(SQFILE file) { return ftell((FILE *)file); } SQInteger sqstd_fflush(SQFILE file) { return fflush((FILE *)file); } SQInteger sqstd_fclose(SQFILE file) { return fclose((FILE *)file); } SQInteger sqstd_feof(SQFILE file) { return feof((FILE *)file); } //File struct SQFile : public SQStream { SQFile() { _handle = NULL; _owns = false;} SQFile(SQFILE file, bool owns) { _handle = file; _owns = owns;} virtual ~SQFile() { Close(); } bool Open(const SQChar *filename ,const SQChar *mode) { Close(); if( (_handle = sqstd_fopen(filename,mode)) ) { _owns = true; return true; } return false; } void Close() { if(_handle && _owns) { sqstd_fclose(_handle); _handle = NULL; _owns = false; } } SQInteger Read(void *buffer,SQInteger size) { return sqstd_fread(buffer,1,size,_handle); } SQInteger Write(void *buffer,SQInteger size) { return sqstd_fwrite(buffer,1,size,_handle); } SQInteger Flush() { return sqstd_fflush(_handle); } SQInteger Tell() { return sqstd_ftell(_handle); } SQInteger Len() { SQInteger prevpos=Tell(); Seek(0,SQ_SEEK_END); SQInteger size=Tell(); Seek(prevpos,SQ_SEEK_SET); return size; } SQInteger Seek(SQInteger offset, SQInteger origin) { return sqstd_fseek(_handle,offset,origin); } bool IsValid() { return _handle?true:false; } bool EOS() { return Tell()==Len()?true:false;} SQFILE GetHandle() {return _handle;} private: SQFILE _handle; bool _owns; }; static SQInteger _file__typeof(HSQUIRRELVM v) { sq_pushstring(v,_SC("file"),-1); return 1; } static SQInteger _file_releasehook(SQUserPointer p, SQInteger size) { SQFile *self = (SQFile*)p; delete self; return 1; } static SQInteger _file_constructor(HSQUIRRELVM v) { const SQChar *filename,*mode; bool owns = true; SQFile *f; SQFILE newf; if(sq_gettype(v,2) == OT_STRING && sq_gettype(v,3) == OT_STRING) { sq_getstring(v, 2, &filename); sq_getstring(v, 3, &mode); newf = sqstd_fopen(filename, mode); if(!newf) return sq_throwerror(v, _SC("cannot open file")); } else if(sq_gettype(v,2) == OT_USERPOINTER) { owns = !(sq_gettype(v,3) == OT_NULL); sq_getuserpointer(v,2,&newf); } else { return sq_throwerror(v,_SC("wrong parameter")); } f = new SQFile(newf,owns); if(SQ_FAILED(sq_setinstanceup(v,1,f))) { delete f; return sq_throwerror(v, _SC("cannot create blob with negative size")); } sq_setreleasehook(v,1,_file_releasehook); return 0; } //bindings #define _DECL_FILE_FUNC(name,nparams,typecheck) {_SC(#name),_file_##name,nparams,typecheck} static SQRegFunction _file_methods[] = { _DECL_FILE_FUNC(constructor,3,_SC("x")), _DECL_FILE_FUNC(_typeof,1,_SC("x")), {0,0,0,0}, }; SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own) { SQInteger top = sq_gettop(v); sq_pushregistrytable(v); sq_pushstring(v,_SC("std_file"),-1); if(SQ_SUCCEEDED(sq_get(v,-2))) { sq_remove(v,-2); //removes the registry sq_pushroottable(v); // push the this sq_pushuserpointer(v,file); //file if(own){ sq_pushinteger(v,1); //true } else{ sq_pushnull(v); //false } if(SQ_SUCCEEDED( sq_call(v,3,SQTrue,SQFalse) )) { sq_remove(v,-2); return SQ_OK; } } sq_settop(v,top); return SQ_OK; } SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file) { SQFile *fileobj = NULL; if(SQ_SUCCEEDED(sq_getinstanceup(v,idx,(SQUserPointer*)&fileobj,(SQUserPointer)SQSTD_FILE_TYPE_TAG))) { *file = fileobj->GetHandle(); return SQ_OK; } return sq_throwerror(v,_SC("not a file")); } static SQInteger _io_file_lexfeed_ASCII(SQUserPointer file) { SQInteger ret; char c; if( ( ret=sqstd_fread(&c,sizeof(c),1,(FILE *)file )>0) ) return c; return 0; } static SQInteger _io_file_lexfeed_UTF8(SQUserPointer file) { #define READ() \ if(sqstd_fread(&inchar,sizeof(inchar),1,(FILE *)file) != 1) \ return 0; static const SQInteger utf8_lengths[16] = { 1,1,1,1,1,1,1,1, /* 0000 to 0111 : 1 byte (plain ASCII) */ 0,0,0,0, /* 1000 to 1011 : not valid */ 2,2, /* 1100, 1101 : 2 bytes */ 3, /* 1110 : 3 bytes */ 4 /* 1111 :4 bytes */ }; static unsigned char byte_masks[5] = {0,0,0x1f,0x0f,0x07}; unsigned char inchar; SQInteger c = 0; READ(); c = inchar; // if(c >= 0x80) { SQInteger tmp; SQInteger codelen = utf8_lengths[c>>4]; if(codelen == 0) return 0; //"invalid UTF-8 stream"; tmp = c&byte_masks[codelen]; for(SQInteger n = 0; n < codelen-1; n++) { tmp<<=6; READ(); tmp |= inchar & 0x3F; } c = tmp; } return c; } static SQInteger _io_file_lexfeed_UCS2_LE(SQUserPointer file) { SQInteger ret; wchar_t c; if( ( ret=sqstd_fread(&c,sizeof(c),1,(FILE *)file )>0) ) return (SQChar)c; return 0; } static SQInteger _io_file_lexfeed_UCS2_BE(SQUserPointer file) { SQInteger ret; unsigned short c; if( ( ret=sqstd_fread(&c,sizeof(c),1,(FILE *)file )>0) ) { c = ((c>>8)&0x00FF)| ((c<<8)&0xFF00); return (SQChar)c; } return 0; } SQInteger file_read(SQUserPointer file,SQUserPointer buf,SQInteger size) { SQInteger ret; if( ( ret = sqstd_fread(buf,1,size,(SQFILE)file ))!=0 )return ret; return -1; } SQInteger file_write(SQUserPointer file,SQUserPointer p,SQInteger size) { return sqstd_fwrite(p,1,size,(SQFILE)file); } SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror) { SQFILE file = sqstd_fopen(filename,_SC("rb")); SQInteger ret; unsigned short us; unsigned char uc; SQLEXREADFUNC func = _io_file_lexfeed_ASCII; if(file){ ret = sqstd_fread(&us,1,2,file); if(ret != 2) { //probably an empty file us = 0; } if(us == SQ_BYTECODE_STREAM_TAG) { //BYTECODE sqstd_fseek(file,0,SQ_SEEK_SET); if(SQ_SUCCEEDED(sq_readclosure(v,file_read,file))) { sqstd_fclose(file); return SQ_OK; } } else { //SCRIPT switch(us) { //gotta swap the next 2 lines on BIG endian machines case 0xFFFE: func = _io_file_lexfeed_UCS2_BE; break;//UTF-16 little endian; case 0xFEFF: func = _io_file_lexfeed_UCS2_LE; break;//UTF-16 big endian; case 0xBBEF: if(sqstd_fread(&uc,1,sizeof(uc),file) == 0) { sqstd_fclose(file); return sq_throwerror(v,_SC("io error")); } if(uc != 0xBF) { sqstd_fclose(file); return sq_throwerror(v,_SC("Unrecognozed ecoding")); } func = _io_file_lexfeed_UTF8; break;//UTF-8 ; default: sqstd_fseek(file,0,SQ_SEEK_SET); break; // ascii } if(SQ_SUCCEEDED(sq_compile(v,func,file,filename,printerror))){ sqstd_fclose(file); return SQ_OK; } } sqstd_fclose(file); return SQ_ERROR; } return sq_throwerror(v,_SC("cannot open the file")); } SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror) { if(SQ_SUCCEEDED(sqstd_loadfile(v,filename,printerror))) { sq_push(v,-2); if(SQ_SUCCEEDED(sq_call(v,1,retval,SQTrue))) { sq_remove(v,retval?-2:-1); //removes the closure return 1; } sq_pop(v,1); //removes the closure } return SQ_ERROR; } SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename) { SQFILE file = sqstd_fopen(filename,_SC("wb+")); if(!file) return sq_throwerror(v,_SC("cannot open the file")); if(SQ_SUCCEEDED(sq_writeclosure(v,file_write,file))) { sqstd_fclose(file); return SQ_OK; } sqstd_fclose(file); return SQ_ERROR; //forward the error } SQInteger _g_io_loadfile(HSQUIRRELVM v) { const SQChar *filename; SQBool printerror = SQFalse; sq_getstring(v,2,&filename); if(sq_gettop(v) >= 3) { sq_getbool(v,3,&printerror); } if(SQ_SUCCEEDED(sqstd_loadfile(v,filename,printerror))) return 1; return SQ_ERROR; //propagates the error } SQInteger _g_io_writeclosuretofile(HSQUIRRELVM v) { const SQChar *filename; sq_getstring(v,2,&filename); if(SQ_SUCCEEDED(sqstd_writeclosuretofile(v,filename))) return 1; return SQ_ERROR; //propagates the error } SQInteger _g_io_dofile(HSQUIRRELVM v) { const SQChar *filename; SQBool printerror = SQFalse; sq_getstring(v,2,&filename); if(sq_gettop(v) >= 3) { sq_getbool(v,3,&printerror); } sq_push(v,1); //repush the this if(SQ_SUCCEEDED(sqstd_dofile(v,filename,SQTrue,printerror))) return 1; return SQ_ERROR; //propagates the error } #define _DECL_GLOBALIO_FUNC(name,nparams,typecheck) {_SC(#name),_g_io_##name,nparams,typecheck} static SQRegFunction iolib_funcs[]={ _DECL_GLOBALIO_FUNC(loadfile,-2,_SC(".sb")), _DECL_GLOBALIO_FUNC(dofile,-2,_SC(".sb")), _DECL_GLOBALIO_FUNC(writeclosuretofile,3,_SC(".sc")), {0,0,0,0} }; SQRESULT sqstd_register_iolib(HSQUIRRELVM v) { SQInteger top = sq_gettop(v); //create delegate declare_stream(v,_SC("file"),(SQUserPointer)SQSTD_FILE_TYPE_TAG,_SC("std_file"),_file_methods,iolib_funcs); sq_pushstring(v,_SC("stdout"),-1); sqstd_createfile(v,stdout,SQFalse); sq_createslot(v,-3); sq_pushstring(v,_SC("stdin"),-1); sqstd_createfile(v,stdin,SQFalse); sq_createslot(v,-3); sq_pushstring(v,_SC("stderr"),-1); sqstd_createfile(v,stderr,SQFalse); sq_createslot(v,-3); sq_settop(v,top); return SQ_OK; } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdstream.cpp0000644000000000000000000001560412246102603023003 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #include #include #include #include "sqstdstream.h" #include "sqstdblobimpl.h" #define SETUP_STREAM(v) \ SQStream *self = NULL; \ if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_STREAM_TYPE_TAG))) \ return sq_throwerror(v,_SC("invalid type tag")); \ if(!self->IsValid()) \ return sq_throwerror(v,_SC("the stream is invalid")); SQInteger _stream_readblob(HSQUIRRELVM v) { SETUP_STREAM(v); SQUserPointer data,blobp; SQInteger size,res; sq_getinteger(v,2,&size); if(size > self->Len()) { size = self->Len(); } data = sq_getscratchpad(v,size); res = self->Read(data,size); if(res <= 0) return sq_throwerror(v,_SC("no data left to read")); blobp = sqstd_createblob(v,res); memcpy(blobp,data,res); return 1; } #define SAFE_READN(ptr,len) { \ if(self->Read(ptr,len) != len) return sq_throwerror(v,_SC("io error")); \ } SQInteger _stream_readn(HSQUIRRELVM v) { SETUP_STREAM(v); SQInteger format; sq_getinteger(v, 2, &format); switch(format) { case 'l': { SQInteger i; SAFE_READN(&i, sizeof(i)); sq_pushinteger(v, i); } break; case 'i': { SQInt32 i; SAFE_READN(&i, sizeof(i)); sq_pushinteger(v, i); } break; case 's': { short s; SAFE_READN(&s, sizeof(short)); sq_pushinteger(v, s); } break; case 'w': { unsigned short w; SAFE_READN(&w, sizeof(unsigned short)); sq_pushinteger(v, w); } break; case 'c': { char c; SAFE_READN(&c, sizeof(char)); sq_pushinteger(v, c); } break; case 'b': { unsigned char c; SAFE_READN(&c, sizeof(unsigned char)); sq_pushinteger(v, c); } break; case 'f': { float f; SAFE_READN(&f, sizeof(float)); sq_pushfloat(v, f); } break; case 'd': { double d; SAFE_READN(&d, sizeof(double)); sq_pushfloat(v, (SQFloat)d); } break; default: return sq_throwerror(v, _SC("invalid format")); } return 1; } SQInteger _stream_writeblob(HSQUIRRELVM v) { SQUserPointer data; SQInteger size; SETUP_STREAM(v); if(SQ_FAILED(sqstd_getblob(v,2,&data))) return sq_throwerror(v,_SC("invalid parameter")); size = sqstd_getblobsize(v,2); if(self->Write(data,size) != size) return sq_throwerror(v,_SC("io error")); sq_pushinteger(v,size); return 1; } SQInteger _stream_writen(HSQUIRRELVM v) { SETUP_STREAM(v); SQInteger format, ti; SQFloat tf; sq_getinteger(v, 3, &format); switch(format) { case 'l': { SQInteger i; sq_getinteger(v, 2, &ti); i = ti; self->Write(&i, sizeof(SQInteger)); } break; case 'i': { SQInt32 i; sq_getinteger(v, 2, &ti); i = (SQInt32)ti; self->Write(&i, sizeof(SQInt32)); } break; case 's': { short s; sq_getinteger(v, 2, &ti); s = (short)ti; self->Write(&s, sizeof(short)); } break; case 'w': { unsigned short w; sq_getinteger(v, 2, &ti); w = (unsigned short)ti; self->Write(&w, sizeof(unsigned short)); } break; case 'c': { char c; sq_getinteger(v, 2, &ti); c = (char)ti; self->Write(&c, sizeof(char)); } break; case 'b': { unsigned char b; sq_getinteger(v, 2, &ti); b = (unsigned char)ti; self->Write(&b, sizeof(unsigned char)); } break; case 'f': { float f; sq_getfloat(v, 2, &tf); f = (float)tf; self->Write(&f, sizeof(float)); } break; case 'd': { double d; sq_getfloat(v, 2, &tf); d = tf; self->Write(&d, sizeof(double)); } break; default: return sq_throwerror(v, _SC("invalid format")); } return 0; } SQInteger _stream_seek(HSQUIRRELVM v) { SETUP_STREAM(v); SQInteger offset, origin = SQ_SEEK_SET; sq_getinteger(v, 2, &offset); if(sq_gettop(v) > 2) { SQInteger t; sq_getinteger(v, 3, &t); switch(t) { case 'b': origin = SQ_SEEK_SET; break; case 'c': origin = SQ_SEEK_CUR; break; case 'e': origin = SQ_SEEK_END; break; default: return sq_throwerror(v,_SC("invalid origin")); } } sq_pushinteger(v, self->Seek(offset, origin)); return 1; } SQInteger _stream_tell(HSQUIRRELVM v) { SETUP_STREAM(v); sq_pushinteger(v, self->Tell()); return 1; } SQInteger _stream_len(HSQUIRRELVM v) { SETUP_STREAM(v); sq_pushinteger(v, self->Len()); return 1; } SQInteger _stream_flush(HSQUIRRELVM v) { SETUP_STREAM(v); if(!self->Flush()) sq_pushinteger(v, 1); else sq_pushnull(v); return 1; } SQInteger _stream_eos(HSQUIRRELVM v) { SETUP_STREAM(v); if(self->EOS()) sq_pushinteger(v, 1); else sq_pushnull(v); return 1; } static SQRegFunction _stream_methods[] = { _DECL_STREAM_FUNC(readblob,2,_SC("xn")), _DECL_STREAM_FUNC(readn,2,_SC("xn")), _DECL_STREAM_FUNC(writeblob,-2,_SC("xx")), _DECL_STREAM_FUNC(writen,3,_SC("xnn")), _DECL_STREAM_FUNC(seek,-2,_SC("xnn")), _DECL_STREAM_FUNC(tell,1,_SC("x")), _DECL_STREAM_FUNC(len,1,_SC("x")), _DECL_STREAM_FUNC(eos,1,_SC("x")), _DECL_STREAM_FUNC(flush,1,_SC("x")), {0,0,0,0} }; void init_streamclass(HSQUIRRELVM v) { sq_pushregistrytable(v); sq_pushstring(v,_SC("std_stream"),-1); if(SQ_FAILED(sq_get(v,-2))) { sq_pushstring(v,_SC("std_stream"),-1); sq_newclass(v,SQFalse); sq_settypetag(v,-1,(SQUserPointer)SQSTD_STREAM_TYPE_TAG); SQInteger i = 0; while(_stream_methods[i].name != 0) { SQRegFunction &f = _stream_methods[i]; sq_pushstring(v,f.name,-1); sq_newclosure(v,f.f,0); sq_setparamscheck(v,f.nparamscheck,f.typemask); sq_createslot(v,-3); i++; } sq_createslot(v,-3); sq_pushroottable(v); sq_pushstring(v,_SC("stream"),-1); sq_pushstring(v,_SC("std_stream"),-1); sq_get(v,-4); sq_createslot(v,-3); sq_pop(v,1); } else { sq_pop(v,1); //result } sq_pop(v,1); } SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,SQRegFunction *methods,SQRegFunction *globals) { if(sq_gettype(v,-1) != OT_TABLE) return sq_throwerror(v,_SC("table expected")); SQInteger top = sq_gettop(v); //create delegate init_streamclass(v); sq_pushregistrytable(v); sq_pushstring(v,reg_name,-1); sq_pushstring(v,_SC("std_stream"),-1); if(SQ_SUCCEEDED(sq_get(v,-3))) { sq_newclass(v,SQTrue); sq_settypetag(v,-1,typetag); SQInteger i = 0; while(methods[i].name != 0) { SQRegFunction &f = methods[i]; sq_pushstring(v,f.name,-1); sq_newclosure(v,f.f,0); sq_setparamscheck(v,f.nparamscheck,f.typemask); sq_setnativeclosurename(v,-1,f.name); sq_createslot(v,-3); i++; } sq_createslot(v,-3); sq_pop(v,1); i = 0; while(globals[i].name!=0) { SQRegFunction &f = globals[i]; sq_pushstring(v,f.name,-1); sq_newclosure(v,f.f,0); sq_setparamscheck(v,f.nparamscheck,f.typemask); sq_setnativeclosurename(v,-1,f.name); sq_createslot(v,-3); i++; } //register the class in the target table sq_pushstring(v,name,-1); sq_pushregistrytable(v); sq_pushstring(v,reg_name,-1); sq_get(v,-2); sq_remove(v,-2); sq_createslot(v,-3); sq_settop(v,top); return SQ_OK; } sq_settop(v,top); return SQ_ERROR; } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdstring.cpp0000644000000000000000000002245012246102603023013 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #include #include #include #include #ifdef SQUNICODE #define scstrchr wcschr #define scatoi _wtoi #define scstrtok wcstok #else #define scstrchr strchr #define scatoi atoi #define scstrtok strtok #endif #define MAX_FORMAT_LEN 20 #define MAX_WFORMAT_LEN 3 #define ADDITIONAL_FORMAT_SPACE (100*sizeof(SQChar)) static SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src, SQInteger n,SQInteger &width) { SQChar swidth[MAX_WFORMAT_LEN]; SQInteger wc = 0; SQInteger start = n; fmt[0] = '%'; while (scstrchr(_SC("-+ #0"), src[n])) n++; while (scisdigit(src[n])) { swidth[wc] = src[n]; n++; wc++; if(wc>=MAX_WFORMAT_LEN) return sq_throwerror(v,_SC("width format too long")); } swidth[wc] = '\0'; if(wc > 0) { width = scatoi(swidth); } else width = 0; if (src[n] == '.') { n++; wc = 0; while (scisdigit(src[n])) { swidth[wc] = src[n]; n++; wc++; if(wc>=MAX_WFORMAT_LEN) return sq_throwerror(v,_SC("precision format too long")); } swidth[wc] = '\0'; if(wc > 0) { width += scatoi(swidth); } } if (n-start > MAX_FORMAT_LEN ) return sq_throwerror(v,_SC("format too long")); memcpy(&fmt[1],&src[start],((n-start)+1)*sizeof(SQChar)); fmt[(n-start)+2] = '\0'; return n; } /* * Little hack to remove the "format not a string literal, argument types not checked" warning. * This check has been added to OpenTTD to make sure that nobody passes wrong string literals, * but three lines in Squirrel have a little problem with those. Therefor we use this hack * which basically uses vsnprintf instead of sprintf as vsnprintf is not testing for the right * string literal at compile time. */ static void _append_string(SQInteger &i, SQChar *dest, SQInteger allocated, const SQChar *fmt, ...) { va_list va; va_start(va, fmt); i += scvsnprintf(&dest[i],allocated-i,fmt,va); va_end(va); } SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output) { const SQChar *format; SQChar *dest; SQChar fmt[MAX_FORMAT_LEN]; sq_getstring(v,nformatstringidx,&format); SQInteger allocated = (sq_getsize(v,nformatstringidx)+2)*sizeof(SQChar); dest = sq_getscratchpad(v,allocated); SQInteger n = 0,i = 0, nparam = nformatstringidx+1, w = 0; while(format[n] != '\0') { if(format[n] != '%') { assert(i < allocated); dest[i++] = format[n]; n++; } else if(format[n+1] == '%') { //handles %% dest[i++] = '%'; n += 2; } else { n++; if( nparam > sq_gettop(v) ) return sq_throwerror(v,_SC("not enough paramters for the given format string")); n = validate_format(v,fmt,format,n,w); if(n < 0) return -1; SQInteger addlen = 0; SQInteger valtype = 0; const SQChar *ts; SQInteger ti; SQFloat tf; switch(format[n]) { case 's': if(SQ_FAILED(sq_getstring(v,nparam,&ts))) return sq_throwerror(v,_SC("string expected for the specified format")); addlen = (sq_getsize(v,nparam)*sizeof(SQChar))+((w+1)*sizeof(SQChar)); valtype = 's'; break; case 'i': case 'd': case 'c':case 'o': case 'u': case 'x': case 'X': if(SQ_FAILED(sq_getinteger(v,nparam,&ti))) return sq_throwerror(v,_SC("integer expected for the specified format")); addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(SQChar)); valtype = 'i'; break; case 'f': case 'g': case 'G': case 'e': case 'E': if(SQ_FAILED(sq_getfloat(v,nparam,&tf))) return sq_throwerror(v,_SC("float expected for the specified format")); addlen = (ADDITIONAL_FORMAT_SPACE)+((w+1)*sizeof(SQChar)); valtype = 'f'; break; default: return sq_throwerror(v,_SC("invalid format")); } n++; allocated += addlen + sizeof(SQChar); dest = sq_getscratchpad(v,allocated); switch(valtype) { case 's': _append_string(i,dest,allocated,fmt,ts); break; case 'i': _append_string(i,dest,allocated,fmt,ti); break; case 'f': _append_string(i,dest,allocated,fmt,tf); break; }; nparam ++; } } *outlen = i; dest[i] = '\0'; *output = dest; return SQ_OK; } static SQInteger _string_format(HSQUIRRELVM v) { SQChar *dest = NULL; SQInteger length = 0; if(SQ_FAILED(sqstd_format(v,2,&length,&dest))) return -1; sq_pushstring(v,dest,length); return 1; } static void __strip_l(const SQChar *str,const SQChar **start) { const SQChar *t = str; while(((*t) != '\0') && scisspace(*t)){ t++; } *start = t; } static void __strip_r(const SQChar *str,SQInteger len,const SQChar **end) { if(len == 0) { *end = str; return; } const SQChar *t = &str[len-1]; while(t != str && scisspace(*t)) { t--; } *end = t+1; } static SQInteger _string_strip(HSQUIRRELVM v) { const SQChar *str,*start,*end; sq_getstring(v,2,&str); SQInteger len = sq_getsize(v,2); __strip_l(str,&start); __strip_r(str,len,&end); sq_pushstring(v,start,end - start); return 1; } static SQInteger _string_lstrip(HSQUIRRELVM v) { const SQChar *str,*start; sq_getstring(v,2,&str); __strip_l(str,&start); sq_pushstring(v,start,-1); return 1; } static SQInteger _string_rstrip(HSQUIRRELVM v) { const SQChar *str,*end; sq_getstring(v,2,&str); SQInteger len = sq_getsize(v,2); __strip_r(str,len,&end); sq_pushstring(v,str,end - str); return 1; } static SQInteger _string_split(HSQUIRRELVM v) { const SQChar *str,*seps; SQChar *stemp,*tok; sq_getstring(v,2,&str); sq_getstring(v,3,&seps); if(sq_getsize(v,3) == 0) return sq_throwerror(v,_SC("empty separators string")); SQInteger memsize = (sq_getsize(v,2)+1)*sizeof(SQChar); stemp = sq_getscratchpad(v,memsize); memcpy(stemp,str,memsize); tok = scstrtok(stemp,seps); sq_newarray(v,0); while( tok != NULL ) { sq_pushstring(v,tok,-1); sq_arrayappend(v,-2); tok = scstrtok( NULL, seps ); } return 1; } #define SETUP_REX(v) \ SQRex *self = NULL; \ sq_getinstanceup(v,1,(SQUserPointer *)&self,0); static SQInteger _rexobj_releasehook(SQUserPointer p, SQInteger size) { SQRex *self = ((SQRex *)p); sqstd_rex_free(self); return 1; } static SQInteger _regexp_match(HSQUIRRELVM v) { SETUP_REX(v); const SQChar *str; sq_getstring(v,2,&str); if(sqstd_rex_match(self,str) == SQTrue) { sq_pushbool(v,SQTrue); return 1; } sq_pushbool(v,SQFalse); return 1; } static void _addrexmatch(HSQUIRRELVM v,const SQChar *str,const SQChar *begin,const SQChar *end) { sq_newtable(v); sq_pushstring(v,_SC("begin"),-1); sq_pushinteger(v,begin - str); sq_rawset(v,-3); sq_pushstring(v,_SC("end"),-1); sq_pushinteger(v,end - str); sq_rawset(v,-3); } static SQInteger _regexp_search(HSQUIRRELVM v) { SETUP_REX(v); const SQChar *str,*begin,*end; SQInteger start = 0; sq_getstring(v,2,&str); if(sq_gettop(v) > 2) sq_getinteger(v,3,&start); if(sqstd_rex_search(self,str+start,&begin,&end) == SQTrue) { _addrexmatch(v,str,begin,end); return 1; } return 0; } static SQInteger _regexp_capture(HSQUIRRELVM v) { SETUP_REX(v); const SQChar *str,*begin,*end; SQInteger start = 0; sq_getstring(v,2,&str); if(sq_gettop(v) > 2) sq_getinteger(v,3,&start); if(sqstd_rex_search(self,str+start,&begin,&end) == SQTrue) { SQInteger n = sqstd_rex_getsubexpcount(self); SQRexMatch match; sq_newarray(v,0); for(SQInteger i = 0;i < n; i++) { sqstd_rex_getsubexp(self,i,&match); if(match.len > 0) _addrexmatch(v,str,match.begin,match.begin+match.len); else _addrexmatch(v,str,str,str); //empty match sq_arrayappend(v,-2); } return 1; } return 0; } static SQInteger _regexp_subexpcount(HSQUIRRELVM v) { SETUP_REX(v); sq_pushinteger(v,sqstd_rex_getsubexpcount(self)); return 1; } static SQInteger _regexp_constructor(HSQUIRRELVM v) { const SQChar *error,*pattern; sq_getstring(v,2,&pattern); SQRex *rex = sqstd_rex_compile(pattern,&error); if(!rex) return sq_throwerror(v,error); sq_setinstanceup(v,1,rex); sq_setreleasehook(v,1,_rexobj_releasehook); return 0; } static SQInteger _regexp__typeof(HSQUIRRELVM v) { sq_pushstring(v,_SC("regexp"),-1); return 1; } #define _DECL_REX_FUNC(name,nparams,pmask) {_SC(#name),_regexp_##name,nparams,pmask} static SQRegFunction rexobj_funcs[]={ _DECL_REX_FUNC(constructor,2,_SC(".s")), _DECL_REX_FUNC(search,-2,_SC("xsn")), _DECL_REX_FUNC(match,2,_SC("xs")), _DECL_REX_FUNC(capture,-2,_SC("xsn")), _DECL_REX_FUNC(subexpcount,1,_SC("x")), _DECL_REX_FUNC(_typeof,1,_SC("x")), {0,0,0,0} }; #define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_string_##name,nparams,pmask} static SQRegFunction stringlib_funcs[]={ _DECL_FUNC(format,-2,_SC(".s")), _DECL_FUNC(strip,2,_SC(".s")), _DECL_FUNC(lstrip,2,_SC(".s")), _DECL_FUNC(rstrip,2,_SC(".s")), _DECL_FUNC(split,3,_SC(".ss")), {0,0,0,0} }; SQInteger sqstd_register_stringlib(HSQUIRRELVM v) { sq_pushstring(v,_SC("regexp"),-1); sq_newclass(v,SQFalse); SQInteger i = 0; while(rexobj_funcs[i].name != 0) { SQRegFunction &f = rexobj_funcs[i]; sq_pushstring(v,f.name,-1); sq_newclosure(v,f.f,0); sq_setparamscheck(v,f.nparamscheck,f.typemask); sq_setnativeclosurename(v,-1,f.name); sq_createslot(v,-3); i++; } sq_createslot(v,-3); i = 0; while(stringlib_funcs[i].name!=0) { sq_pushstring(v,stringlib_funcs[i].name,-1); sq_newclosure(v,stringlib_funcs[i].f,0); sq_setparamscheck(v,stringlib_funcs[i].nparamscheck,stringlib_funcs[i].typemask); sq_setnativeclosurename(v,-1,stringlib_funcs[i].name); sq_createslot(v,-3); i++; } return 1; } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdrex.cpp0000644000000000000000000004111612246102603022303 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #include "sqstdstring.h" #ifdef _UNICODE #define scisprint iswprint #else #define scisprint isprint #endif #ifdef _DEBUG #include static const SQChar *g_nnames[] = { _SC("NONE"),_SC("OP_GREEDY"), _SC("OP_OR"), _SC("OP_EXPR"),_SC("OP_NOCAPEXPR"),_SC("OP_DOT"), _SC("OP_CLASS"), _SC("OP_CCLASS"),_SC("OP_NCLASS"),_SC("OP_RANGE"),_SC("OP_CHAR"), _SC("OP_EOL"),_SC("OP_BOL"),_SC("OP_WB") }; #endif #define OP_GREEDY (MAX_CHAR+1) // * + ? {n} #define OP_OR (MAX_CHAR+2) #define OP_EXPR (MAX_CHAR+3) //parentesis () #define OP_NOCAPEXPR (MAX_CHAR+4) //parentesis (?:) #define OP_DOT (MAX_CHAR+5) #define OP_CLASS (MAX_CHAR+6) #define OP_CCLASS (MAX_CHAR+7) #define OP_NCLASS (MAX_CHAR+8) //negates class the [^ #define OP_RANGE (MAX_CHAR+9) #define OP_CHAR (MAX_CHAR+10) #define OP_EOL (MAX_CHAR+11) #define OP_BOL (MAX_CHAR+12) #define OP_WB (MAX_CHAR+13) #define SQREX_SYMBOL_ANY_CHAR ('.') #define SQREX_SYMBOL_GREEDY_ONE_OR_MORE ('+') #define SQREX_SYMBOL_GREEDY_ZERO_OR_MORE ('*') #define SQREX_SYMBOL_GREEDY_ZERO_OR_ONE ('?') #define SQREX_SYMBOL_BRANCH ('|') #define SQREX_SYMBOL_END_OF_STRING ('$') #define SQREX_SYMBOL_BEGINNING_OF_STRING ('^') #define SQREX_SYMBOL_ESCAPE_CHAR ('\\') typedef int SQRexNodeType; typedef struct tagSQRexNode{ SQRexNodeType type; SQInteger left; SQInteger right; SQInteger next; }SQRexNode; struct SQRex{ const SQChar *_eol; const SQChar *_bol; const SQChar *_p; SQInteger _first; SQInteger _op; SQRexNode *_nodes; SQInteger _nallocated; SQInteger _nsize; SQInteger _nsubexpr; SQRexMatch *_matches; SQInteger _currsubexp; const SQChar **_error; }; static SQInteger sqstd_rex_list(SQRex *exp); static SQInteger sqstd_rex_newnode(SQRex *exp, SQRexNodeType type) { SQRexNode n; n.type = type; n.next = n.right = n.left = -1; if(type == OP_EXPR) n.right = exp->_nsubexpr++; if(exp->_nallocated < (exp->_nsize + 1)) { SQInteger oldsize = exp->_nallocated; exp->_nallocated *= 2; exp->_nodes = (SQRexNode *)sq_realloc(exp->_nodes, oldsize * sizeof(SQRexNode) ,exp->_nallocated * sizeof(SQRexNode)); } exp->_nodes[exp->_nsize++] = n; SQInteger newid = exp->_nsize - 1; return (SQInteger)newid; } static void sqstd_rex_error(SQRex *exp,const SQChar *error) { if(exp->_error) *exp->_error = error; throw std::exception(); } static void sqstd_rex_expect(SQRex *exp, SQChar n){ if((*exp->_p) != n) sqstd_rex_error(exp, _SC("expected paren")); exp->_p++; } static SQChar sqstd_rex_escapechar(SQRex *exp) { if(*exp->_p == SQREX_SYMBOL_ESCAPE_CHAR){ exp->_p++; switch(*exp->_p) { case 'v': exp->_p++; return '\v'; case 'n': exp->_p++; return '\n'; case 't': exp->_p++; return '\t'; case 'r': exp->_p++; return '\r'; case 'f': exp->_p++; return '\f'; default: return (*exp->_p++); } } else if(!scisprint(*exp->_p)) sqstd_rex_error(exp,_SC("letter expected")); return (*exp->_p++); } static SQInteger sqstd_rex_charclass(SQRex *exp,SQInteger classid) { SQInteger n = sqstd_rex_newnode(exp,OP_CCLASS); exp->_nodes[n].left = classid; return n; } static SQInteger sqstd_rex_charnode(SQRex *exp,SQBool isclass) { SQChar t; if(*exp->_p == SQREX_SYMBOL_ESCAPE_CHAR) { exp->_p++; switch(*exp->_p) { case 'n': exp->_p++; return sqstd_rex_newnode(exp,'\n'); case 't': exp->_p++; return sqstd_rex_newnode(exp,'\t'); case 'r': exp->_p++; return sqstd_rex_newnode(exp,'\r'); case 'f': exp->_p++; return sqstd_rex_newnode(exp,'\f'); case 'v': exp->_p++; return sqstd_rex_newnode(exp,'\v'); case 'a': case 'A': case 'w': case 'W': case 's': case 'S': case 'd': case 'D': case 'x': case 'X': case 'c': case 'C': case 'p': case 'P': case 'l': case 'u': { t = *exp->_p; exp->_p++; return sqstd_rex_charclass(exp,t); } case 'b': case 'B': if(!isclass) { SQInteger node = sqstd_rex_newnode(exp,OP_WB); exp->_nodes[node].left = *exp->_p; exp->_p++; return node; } //else default default: t = *exp->_p; exp->_p++; return sqstd_rex_newnode(exp,t); } } else if(!scisprint(*exp->_p)) { sqstd_rex_error(exp,_SC("letter expected")); } t = *exp->_p; exp->_p++; return sqstd_rex_newnode(exp,t); } static SQInteger sqstd_rex_class(SQRex *exp) { SQInteger ret = -1; SQInteger first = -1,chain; if(*exp->_p == SQREX_SYMBOL_BEGINNING_OF_STRING){ ret = sqstd_rex_newnode(exp,OP_NCLASS); exp->_p++; }else ret = sqstd_rex_newnode(exp,OP_CLASS); if(*exp->_p == ']') sqstd_rex_error(exp,_SC("empty class")); chain = ret; while(*exp->_p != ']' && exp->_p != exp->_eol) { if(*exp->_p == '-' && first != -1){ SQInteger r; if(*exp->_p++ == ']') sqstd_rex_error(exp,_SC("unfinished range")); r = sqstd_rex_newnode(exp,OP_RANGE); if(exp->_nodes[first].type>*exp->_p) sqstd_rex_error(exp,_SC("invalid range")); if(exp->_nodes[first].type == OP_CCLASS) sqstd_rex_error(exp,_SC("cannot use character classes in ranges")); exp->_nodes[r].left = exp->_nodes[first].type; SQInteger t = sqstd_rex_escapechar(exp); exp->_nodes[r].right = t; exp->_nodes[chain].next = r; chain = r; first = -1; } else{ if(first!=-1){ SQInteger c = first; exp->_nodes[chain].next = c; chain = c; first = sqstd_rex_charnode(exp,SQTrue); } else{ first = sqstd_rex_charnode(exp,SQTrue); } } } if(first!=-1){ SQInteger c = first; exp->_nodes[chain].next = c; chain = c; first = -1; } /* hack? */ exp->_nodes[ret].left = exp->_nodes[ret].next; exp->_nodes[ret].next = -1; return ret; } static SQInteger sqstd_rex_parsenumber(SQRex *exp) { SQInteger ret = *exp->_p-'0'; SQInteger positions = 10; exp->_p++; while(isdigit(*exp->_p)) { ret = ret*10+(*exp->_p++-'0'); if(positions==1000000000) sqstd_rex_error(exp,_SC("overflow in numeric constant")); positions *= 10; }; return ret; } static SQInteger sqstd_rex_element(SQRex *exp) { SQInteger ret = -1; switch(*exp->_p) { case '(': { SQInteger expr; exp->_p++; if(*exp->_p =='?') { exp->_p++; sqstd_rex_expect(exp,_SC(':')); expr = sqstd_rex_newnode(exp,OP_NOCAPEXPR); } else expr = sqstd_rex_newnode(exp,OP_EXPR); SQInteger newn = sqstd_rex_list(exp); exp->_nodes[expr].left = newn; ret = expr; sqstd_rex_expect(exp,_SC(')')); } break; case '[': exp->_p++; ret = sqstd_rex_class(exp); sqstd_rex_expect(exp,_SC(']')); break; case SQREX_SYMBOL_END_OF_STRING: exp->_p++; ret = sqstd_rex_newnode(exp,OP_EOL);break; case SQREX_SYMBOL_ANY_CHAR: exp->_p++; ret = sqstd_rex_newnode(exp,OP_DOT);break; default: ret = sqstd_rex_charnode(exp,SQFalse); break; } SQInteger op; SQBool isgreedy = SQFalse; unsigned short p0 = 0, p1 = 0; switch(*exp->_p){ case SQREX_SYMBOL_GREEDY_ZERO_OR_MORE: p0 = 0; p1 = 0xFFFF; exp->_p++; isgreedy = SQTrue; break; case SQREX_SYMBOL_GREEDY_ONE_OR_MORE: p0 = 1; p1 = 0xFFFF; exp->_p++; isgreedy = SQTrue; break; case SQREX_SYMBOL_GREEDY_ZERO_OR_ONE: p0 = 0; p1 = 1; exp->_p++; isgreedy = SQTrue; break; case '{': exp->_p++; if(!isdigit(*exp->_p)) sqstd_rex_error(exp,_SC("number expected")); p0 = (unsigned short)sqstd_rex_parsenumber(exp); /*******************************/ switch(*exp->_p) { case '}': p1 = p0; exp->_p++; break; case ',': exp->_p++; p1 = 0xFFFF; if(isdigit(*exp->_p)){ p1 = (unsigned short)sqstd_rex_parsenumber(exp); } sqstd_rex_expect(exp,_SC('}')); break; default: sqstd_rex_error(exp,_SC(", or } expected")); } /*******************************/ isgreedy = SQTrue; break; } if(isgreedy) { SQInteger nnode = sqstd_rex_newnode(exp,OP_GREEDY); op = OP_GREEDY; exp->_nodes[nnode].left = ret; exp->_nodes[nnode].right = ((p0)<<16)|p1; ret = nnode; } if((*exp->_p != SQREX_SYMBOL_BRANCH) && (*exp->_p != ')') && (*exp->_p != SQREX_SYMBOL_GREEDY_ZERO_OR_MORE) && (*exp->_p != SQREX_SYMBOL_GREEDY_ONE_OR_MORE) && (*exp->_p != '\0')) { SQInteger nnode = sqstd_rex_element(exp); exp->_nodes[ret].next = nnode; } return ret; } static SQInteger sqstd_rex_list(SQRex *exp) { SQInteger ret=-1,e; if(*exp->_p == SQREX_SYMBOL_BEGINNING_OF_STRING) { exp->_p++; ret = sqstd_rex_newnode(exp,OP_BOL); } e = sqstd_rex_element(exp); if(ret != -1) { exp->_nodes[ret].next = e; } else ret = e; if(*exp->_p == SQREX_SYMBOL_BRANCH) { SQInteger temp,tright; exp->_p++; temp = sqstd_rex_newnode(exp,OP_OR); exp->_nodes[temp].left = ret; tright = sqstd_rex_list(exp); exp->_nodes[temp].right = tright; ret = temp; } return ret; } static SQBool sqstd_rex_matchcclass(SQInteger cclass,SQChar c) { switch(cclass) { case 'a': return isalpha(c)?SQTrue:SQFalse; case 'A': return !isalpha(c)?SQTrue:SQFalse; case 'w': return (isalnum(c) || c == '_')?SQTrue:SQFalse; case 'W': return (!isalnum(c) && c != '_')?SQTrue:SQFalse; case 's': return isspace(c)?SQTrue:SQFalse; case 'S': return !isspace(c)?SQTrue:SQFalse; case 'd': return isdigit(c)?SQTrue:SQFalse; case 'D': return !isdigit(c)?SQTrue:SQFalse; case 'x': return isxdigit(c)?SQTrue:SQFalse; case 'X': return !isxdigit(c)?SQTrue:SQFalse; case 'c': return iscntrl(c)?SQTrue:SQFalse; case 'C': return !iscntrl(c)?SQTrue:SQFalse; case 'p': return ispunct(c)?SQTrue:SQFalse; case 'P': return !ispunct(c)?SQTrue:SQFalse; case 'l': return islower(c)?SQTrue:SQFalse; case 'u': return isupper(c)?SQTrue:SQFalse; } return SQFalse; /*cannot happen*/ } static SQBool sqstd_rex_matchclass(SQRex* exp,SQRexNode *node,SQInteger c) { do { switch(node->type) { case OP_RANGE: if(c >= node->left && c <= node->right) return SQTrue; break; case OP_CCLASS: if(sqstd_rex_matchcclass(node->left,c)) return SQTrue; break; default: if(c == node->type)return SQTrue; } } while((node->next != -1) && (node = &exp->_nodes[node->next])); return SQFalse; } static const SQChar *sqstd_rex_matchnode(SQRex* exp,SQRexNode *node,const SQChar *str,SQRexNode *next) { SQRexNodeType type = node->type; switch(type) { case OP_GREEDY: { //SQRexNode *greedystop = (node->next != -1) ? &exp->_nodes[node->next] : NULL; SQRexNode *greedystop = NULL; SQInteger p0 = (node->right >> 16)&0x0000FFFF, p1 = node->right&0x0000FFFF, nmaches = 0; const SQChar *s=str, *good = str; if(node->next != -1) { greedystop = &exp->_nodes[node->next]; } else { greedystop = next; } while((nmaches == 0xFFFF || nmaches < p1)) { const SQChar *stop; if(!(s = sqstd_rex_matchnode(exp,&exp->_nodes[node->left],s,greedystop))) break; nmaches++; good=s; if(greedystop) { //checks that 0 matches satisfy the expression(if so skips) //if not would always stop(for instance if is a '?') if(greedystop->type != OP_GREEDY || (greedystop->type == OP_GREEDY && ((greedystop->right >> 16)&0x0000FFFF) != 0)) { SQRexNode *gnext = NULL; if(greedystop->next != -1) { gnext = &exp->_nodes[greedystop->next]; }else if(next && next->next != -1){ gnext = &exp->_nodes[next->next]; } stop = sqstd_rex_matchnode(exp,greedystop,s,gnext); if(stop) { //if satisfied stop it if(p0 == p1 && p0 == nmaches) break; else if(nmaches >= p0 && p1 == 0xFFFF) break; else if(nmaches >= p0 && nmaches <= p1) break; } } } if(s >= exp->_eol) break; } if(p0 == p1 && p0 == nmaches) return good; else if(nmaches >= p0 && p1 == 0xFFFF) return good; else if(nmaches >= p0 && nmaches <= p1) return good; return NULL; } case OP_OR: { const SQChar *asd = str; SQRexNode *temp=&exp->_nodes[node->left]; while( (asd = sqstd_rex_matchnode(exp,temp,asd,NULL)) ) { if(temp->next != -1) temp = &exp->_nodes[temp->next]; else return asd; } asd = str; temp = &exp->_nodes[node->right]; while( (asd = sqstd_rex_matchnode(exp,temp,asd,NULL)) ) { if(temp->next != -1) temp = &exp->_nodes[temp->next]; else return asd; } return NULL; break; } case OP_EXPR: case OP_NOCAPEXPR:{ SQRexNode *n = &exp->_nodes[node->left]; const SQChar *cur = str; SQInteger capture = -1; if(node->type != OP_NOCAPEXPR && node->right == exp->_currsubexp) { capture = exp->_currsubexp; exp->_matches[capture].begin = cur; exp->_currsubexp++; } do { SQRexNode *subnext = NULL; if(n->next != -1) { subnext = &exp->_nodes[n->next]; }else { subnext = next; } if(!(cur = sqstd_rex_matchnode(exp,n,cur,subnext))) { if(capture != -1){ exp->_matches[capture].begin = 0; exp->_matches[capture].len = 0; } return NULL; } } while((n->next != -1) && (n = &exp->_nodes[n->next])); if(capture != -1) exp->_matches[capture].len = cur - exp->_matches[capture].begin; return cur; } case OP_WB: if((str == exp->_bol && !isspace(*str)) || (str == exp->_eol && !isspace(*(str-1))) || (!isspace(*str) && isspace(*(str+1))) || (isspace(*str) && !isspace(*(str+1))) ) { return (node->left == 'b')?str:NULL; } return (node->left == 'b')?NULL:str; case OP_BOL: if(str == exp->_bol) return str; return NULL; case OP_EOL: if(str == exp->_eol) return str; return NULL; case OP_DOT:{ *str++; } return str; case OP_NCLASS: case OP_CLASS: if(sqstd_rex_matchclass(exp,&exp->_nodes[node->left],*str)?(type == OP_CLASS?SQTrue:SQFalse):(type == OP_NCLASS?SQTrue:SQFalse)) { *str++; return str; } return NULL; case OP_CCLASS: if(sqstd_rex_matchcclass(node->left,*str)) { *str++; return str; } return NULL; default: /* char */ if(*str != (SQChar)node->type) return NULL; *str++; return str; } return NULL; } /* public api */ SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error) { SQRex *exp = (SQRex *)sq_malloc(sizeof(SQRex)); exp->_eol = exp->_bol = NULL; exp->_p = pattern; exp->_nallocated = (SQInteger)scstrlen(pattern) * sizeof(SQChar); exp->_nodes = (SQRexNode *)sq_malloc(exp->_nallocated * sizeof(SQRexNode)); exp->_nsize = 0; exp->_matches = 0; exp->_nsubexpr = 0; exp->_first = sqstd_rex_newnode(exp,OP_EXPR); exp->_error = error; try { SQInteger res = sqstd_rex_list(exp); exp->_nodes[exp->_first].left = res; if(*exp->_p!='\0') sqstd_rex_error(exp,_SC("unexpected character")); #ifdef _DEBUG { SQInteger nsize,i; SQRexNode *t; nsize = exp->_nsize; t = &exp->_nodes[0]; scprintf(_SC("\n")); /* XXX -- The (int) casts are needed to silent warnings on 64bit systems (SQInteger is 64bit, %d assumes 32bit, (int) is 32bit) */ for(i = 0;i < nsize; i++) { if(exp->_nodes[i].type>MAX_CHAR) scprintf(_SC("[%02d] %10s "),(int)i,g_nnames[exp->_nodes[i].type-MAX_CHAR]); else scprintf(_SC("[%02d] %10c "),(int)i,exp->_nodes[i].type); scprintf(_SC("left %02d right %02d next %02d\n"),(int)exp->_nodes[i].left,(int)exp->_nodes[i].right,(int)exp->_nodes[i].next); } scprintf(_SC("\n")); } #endif exp->_matches = (SQRexMatch *) sq_malloc(exp->_nsubexpr * sizeof(SQRexMatch)); memset(exp->_matches,0,exp->_nsubexpr * sizeof(SQRexMatch)); } catch (...) { sqstd_rex_free(exp); return NULL; } return exp; } void sqstd_rex_free(SQRex *exp) { if(exp) { if(exp->_nodes) sq_free(exp->_nodes,exp->_nallocated * sizeof(SQRexNode)); if(exp->_matches) sq_free(exp->_matches,exp->_nsubexpr * sizeof(SQRexMatch)); sq_free(exp,sizeof(SQRex)); } } SQBool sqstd_rex_match(SQRex* exp,const SQChar* text) { const SQChar* res = NULL; exp->_bol = text; exp->_eol = text + scstrlen(text); exp->_currsubexp = 0; res = sqstd_rex_matchnode(exp,exp->_nodes,text,NULL); if(res == NULL || res != exp->_eol) return SQFalse; return SQTrue; } SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end) { const SQChar *cur = NULL; SQInteger node = exp->_first; if(text_begin >= text_end) return SQFalse; exp->_bol = text_begin; exp->_eol = text_end; do { cur = text_begin; while(node != -1) { exp->_currsubexp = 0; cur = sqstd_rex_matchnode(exp,&exp->_nodes[node],cur,NULL); if(!cur) break; node = exp->_nodes[node].next; } *text_begin++; } while(cur == NULL && text_begin != text_end); if(cur == NULL) return SQFalse; --text_begin; if(out_begin) *out_begin = text_begin; if(out_end) *out_end = cur; return SQTrue; } SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end) { return sqstd_rex_searchrange(exp,text,text + scstrlen(text),out_begin,out_end); } SQInteger sqstd_rex_getsubexpcount(SQRex* exp) { return exp->_nsubexpr; } SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp) { if( n<0 || n >= exp->_nsubexpr) return SQFalse; *subexp = exp->_matches[n]; return SQTrue; } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/Makefile0000644000000000000000000000100512246102603021353 0ustar rootrootSQUIRREL= .. OUT= $(SQUIRREL)/lib/libsqstdlib.a INCZ= -I$(SQUIRREL)/include -I. -Iinclude SRCS= \ sqstdblob.cpp \ sqstdio.cpp \ sqstdstream.cpp \ sqstdmath.cpp \ sqstdsystem.cpp \ sqstdstring.cpp \ sqstdaux.cpp \ sqstdrex.cpp sq32: gcc -O2 -fno-rtti -Wall -c $(SRCS) $(INCZ) ar rc $(OUT) *.o sqprof: gcc -O2 -pg -fno-rtti -pie -gstabs -g3 -Wall -c $(SRCS) $(INCZ) ar rc $(OUT) *.o sq64: gcc -O2 -D_SQ64 -fno-rtti -Wall -c $(SRCS) $(INCZ) ar rc $(OUT) *.o clean: rm -f $(OUT) $(SRCS:%.cpp=%.o) openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp0000644000000000000000000000663412246102603022310 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include void sqstd_printcallstack(HSQUIRRELVM v) { SQPRINTFUNCTION pf = sq_getprintfunc(v); if(pf) { SQStackInfos si; SQInteger i; SQBool b; SQFloat f; const SQChar *s; SQInteger level=1; //1 is to skip this function that is level 0 const SQChar *name=0; SQInteger seq=0; pf(v,_SC("\nCALLSTACK\n")); while(SQ_SUCCEEDED(sq_stackinfos(v,level,&si))) { const SQChar *fn=_SC("unknown"); const SQChar *src=_SC("unknown"); if(si.funcname)fn=si.funcname; if(si.source) { /* We don't want to bother users with absolute paths to all AI files. * Since the path only reaches NoAI code in a formatted string we have * to strip it here. Let's hope nobody installs openttd in a subdirectory * of a directory named /ai/. */ src = scstrstr(si.source, _SC("\\ai\\")); if (!src) src = scstrstr(si.source, _SC("/ai/")); if (src) { src += 4; } else { src = si.source; } } pf(v,_SC("*FUNCTION [%s()] %s line [%d]\n"),fn,src,si.line); level++; } level=0; pf(v,_SC("\nLOCALS\n")); for(level=0;level<10;level++){ seq=0; while((name = sq_getlocal(v,level,seq))) { seq++; switch(sq_gettype(v,-1)) { case OT_NULL: pf(v,_SC("[%s] NULL\n"),name); break; case OT_INTEGER: sq_getinteger(v,-1,&i); pf(v,_SC("[%s] %d\n"),name,i); break; case OT_FLOAT: sq_getfloat(v,-1,&f); pf(v,_SC("[%s] %.14g\n"),name,f); break; case OT_USERPOINTER: pf(v,_SC("[%s] USERPOINTER\n"),name); break; case OT_STRING: sq_getstring(v,-1,&s); pf(v,_SC("[%s] \"%s\"\n"),name,s); break; case OT_TABLE: pf(v,_SC("[%s] TABLE\n"),name); break; case OT_ARRAY: pf(v,_SC("[%s] ARRAY\n"),name); break; case OT_CLOSURE: pf(v,_SC("[%s] CLOSURE\n"),name); break; case OT_NATIVECLOSURE: pf(v,_SC("[%s] NATIVECLOSURE\n"),name); break; case OT_GENERATOR: pf(v,_SC("[%s] GENERATOR\n"),name); break; case OT_USERDATA: pf(v,_SC("[%s] USERDATA\n"),name); break; case OT_THREAD: pf(v,_SC("[%s] THREAD\n"),name); break; case OT_CLASS: pf(v,_SC("[%s] CLASS\n"),name); break; case OT_INSTANCE: pf(v,_SC("[%s] INSTANCE\n"),name); break; case OT_WEAKREF: pf(v,_SC("[%s] WEAKREF\n"),name); break; case OT_BOOL:{ sq_getbool(v,-1,&b); pf(v,_SC("[%s] %s\n"),name,b?_SC("true"):_SC("false")); } break; default: assert(0); break; } sq_pop(v,1); } } } } static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v) { SQPRINTFUNCTION pf = sq_getprintfunc(v); if(pf) { const SQChar *sErr = 0; if(sq_gettop(v)>=1) { if(SQ_SUCCEEDED(sq_getstring(v,2,&sErr))) { pf(v,_SC("\nAN ERROR HAS OCCURED [%s]\n"),sErr); } else{ pf(v,_SC("\nAN ERROR HAS OCCURED [unknown]\n")); } sqstd_printcallstack(v); } } return 0; } void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column) { SQPRINTFUNCTION pf = sq_getprintfunc(v); if(pf) { pf(v,_SC("%s line = (%d) column = (%d) : error %s\n"),sSource,line,column,sErr); } } void sqstd_seterrorhandlers(HSQUIRRELVM v) { sq_setcompilererrorhandler(v,_sqstd_compiler_error); sq_newclosure(v,_sqstd_aux_printerror,0); sq_seterrorhandler(v); } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdblob.cpp0000644000000000000000000001333412246102603022424 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #include #include "sqstdstream.h" #include "sqstdblobimpl.h" #define SQSTD_BLOB_TYPE_TAG (SQSTD_STREAM_TYPE_TAG | 0x00000002) //Blob #define SETUP_BLOB(v) \ SQBlob *self = NULL; \ { if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) \ return SQ_ERROR; } static SQInteger _blob_resize(HSQUIRRELVM v) { SETUP_BLOB(v); SQInteger size; sq_getinteger(v,2,&size); if(!self->Resize(size)) return sq_throwerror(v,_SC("resize failed")); return 0; } static void __swap_dword(unsigned int *n) { *n=(unsigned int)(((*n&0xFF000000)>>24) | ((*n&0x00FF0000)>>8) | ((*n&0x0000FF00)<<8) | ((*n&0x000000FF)<<24)); } static void __swap_word(unsigned short *n) { *n=(unsigned short)((*n>>8)&0x00FF)| ((*n<<8)&0xFF00); } static SQInteger _blob_swap4(HSQUIRRELVM v) { SETUP_BLOB(v); SQInteger num=(self->Len()-(self->Len()%4))>>2; unsigned int *t=(unsigned int *)self->GetBuf(); for(SQInteger i = 0; i < num; i++) { __swap_dword(&t[i]); } return 0; } static SQInteger _blob_swap2(HSQUIRRELVM v) { SETUP_BLOB(v); SQInteger num=(self->Len()-(self->Len()%2))>>1; unsigned short *t = (unsigned short *)self->GetBuf(); for(SQInteger i = 0; i < num; i++) { __swap_word(&t[i]); } return 0; } static SQInteger _blob__set(HSQUIRRELVM v) { SETUP_BLOB(v); SQInteger idx,val; sq_getinteger(v,2,&idx); sq_getinteger(v,3,&val); if(idx < 0 || idx >= self->Len()) return sq_throwerror(v,_SC("index out of range")); ((unsigned char *)self->GetBuf())[idx] = (unsigned char) val; sq_push(v,3); return 1; } static SQInteger _blob__get(HSQUIRRELVM v) { SETUP_BLOB(v); SQInteger idx; sq_getinteger(v,2,&idx); if(idx < 0 || idx >= self->Len()) return sq_throwerror(v,_SC("index out of range")); sq_pushinteger(v,((unsigned char *)self->GetBuf())[idx]); return 1; } static SQInteger _blob__nexti(HSQUIRRELVM v) { SETUP_BLOB(v); if(sq_gettype(v,2) == OT_NULL) { sq_pushinteger(v, 0); return 1; } SQInteger idx; if(SQ_SUCCEEDED(sq_getinteger(v, 2, &idx))) { if(idx+1 < self->Len()) { sq_pushinteger(v, idx+1); return 1; } sq_pushnull(v); return 1; } return sq_throwerror(v,_SC("internal error (_nexti) wrong argument type")); } static SQInteger _blob__typeof(HSQUIRRELVM v) { sq_pushstring(v,_SC("blob"),-1); return 1; } static SQInteger _blob_releasehook(SQUserPointer p, SQInteger size) { SQBlob *self = (SQBlob*)p; delete self; return 1; } static SQInteger _blob_constructor(HSQUIRRELVM v) { SQInteger nparam = sq_gettop(v); SQInteger size = 0; if(nparam == 2) { sq_getinteger(v, 2, &size); } if(size < 0) return sq_throwerror(v, _SC("cannot create blob with negative size")); SQBlob *b = new SQBlob(size); if(SQ_FAILED(sq_setinstanceup(v,1,b))) { delete b; return sq_throwerror(v, _SC("cannot create blob with negative size")); } sq_setreleasehook(v,1,_blob_releasehook); return 0; } #define _DECL_BLOB_FUNC(name,nparams,typecheck) {_SC(#name),_blob_##name,nparams,typecheck} static SQRegFunction _blob_methods[] = { _DECL_BLOB_FUNC(constructor,-1,_SC("xn")), _DECL_BLOB_FUNC(resize,2,_SC("xn")), _DECL_BLOB_FUNC(swap2,1,_SC("x")), _DECL_BLOB_FUNC(swap4,1,_SC("x")), _DECL_BLOB_FUNC(_set,3,_SC("xnn")), _DECL_BLOB_FUNC(_get,2,_SC("xn")), _DECL_BLOB_FUNC(_typeof,1,_SC("x")), _DECL_BLOB_FUNC(_nexti,2,_SC("x")), {0,0,0,0} }; //GLOBAL FUNCTIONS static SQInteger _g_blob_casti2f(HSQUIRRELVM v) { SQInteger i; sq_getinteger(v,2,&i); sq_pushfloat(v,*((SQFloat *)&i)); return 1; } static SQInteger _g_blob_castf2i(HSQUIRRELVM v) { SQFloat f; sq_getfloat(v,2,&f); sq_pushinteger(v,*((SQInteger *)&f)); return 1; } static SQInteger _g_blob_swap2(HSQUIRRELVM v) { SQInteger i; sq_getinteger(v,2,&i); short s=(short)i; sq_pushinteger(v,(s<<8)|((s>>8)&0x00FF)); return 1; } static SQInteger _g_blob_swap4(HSQUIRRELVM v) { SQInteger i; sq_getinteger(v,2,&i); unsigned int t4 = (unsigned int)i; __swap_dword(&t4); sq_pushinteger(v,(SQInteger)t4); return 1; } static SQInteger _g_blob_swapfloat(HSQUIRRELVM v) { SQFloat f; sq_getfloat(v,2,&f); __swap_dword((unsigned int *)&f); sq_pushfloat(v,f); return 1; } #define _DECL_GLOBALBLOB_FUNC(name,nparams,typecheck) {_SC(#name),_g_blob_##name,nparams,typecheck} static SQRegFunction bloblib_funcs[]={ _DECL_GLOBALBLOB_FUNC(casti2f,2,_SC(".n")), _DECL_GLOBALBLOB_FUNC(castf2i,2,_SC(".n")), _DECL_GLOBALBLOB_FUNC(swap2,2,_SC(".n")), _DECL_GLOBALBLOB_FUNC(swap4,2,_SC(".n")), _DECL_GLOBALBLOB_FUNC(swapfloat,2,_SC(".n")), {0,0,0,0} }; SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr) { SQBlob *blob; if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) return -1; *ptr = blob->GetBuf(); return SQ_OK; } SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx) { SQBlob *blob; if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) return -1; return blob->Len(); } SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size) { SQInteger top = sq_gettop(v); sq_pushregistrytable(v); sq_pushstring(v,_SC("std_blob"),-1); if(SQ_SUCCEEDED(sq_get(v,-2))) { sq_remove(v,-2); //removes the registry sq_push(v,1); // push the this sq_pushinteger(v,size); //size SQBlob *blob = NULL; if(SQ_SUCCEEDED(sq_call(v,2,SQTrue,SQFalse)) && SQ_SUCCEEDED(sq_getinstanceup(v,-1,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) { sq_remove(v,-2); return blob->GetBuf(); } } sq_settop(v,top); return NULL; } SQRESULT sqstd_register_bloblib(HSQUIRRELVM v) { return declare_stream(v,_SC("blob"),(SQUserPointer)SQSTD_BLOB_TYPE_TAG,_SC("std_blob"),_blob_methods,bloblib_funcs); } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdsystem.cpp0000644000000000000000000000623612246102603023035 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #include #ifdef SQUNICODE #include #define scgetenv _wgetenv #define scsystem _wsystem #define scasctime _wasctime #define scremove _wremove #define screname _wrename #else #define scgetenv getenv #define scsystem system #define scasctime asctime #define scremove remove #define screname rename #endif static SQInteger _system_getenv(HSQUIRRELVM v) { const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ sq_pushstring(v,scgetenv(s),-1); return 1; } return 0; } static SQInteger _system_system(HSQUIRRELVM v) { const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ sq_pushinteger(v,scsystem(s)); return 1; } return sq_throwerror(v,_SC("wrong param")); } static SQInteger _system_clock(HSQUIRRELVM v) { sq_pushfloat(v,((SQFloat)clock())/(SQFloat)CLOCKS_PER_SEC); return 1; } static SQInteger _system_time(HSQUIRRELVM v) { time_t t; time(&t); sq_pushinteger(v,*((SQInteger *)&t)); return 1; } static SQInteger _system_remove(HSQUIRRELVM v) { const SQChar *s; sq_getstring(v,2,&s); if(scremove(s)==-1) return sq_throwerror(v,_SC("remove() failed")); return 0; } static SQInteger _system_rename(HSQUIRRELVM v) { const SQChar *oldn,*newn; sq_getstring(v,2,&oldn); sq_getstring(v,3,&newn); if(screname(oldn,newn)==-1) return sq_throwerror(v,_SC("rename() failed")); return 0; } static void _set_integer_slot(HSQUIRRELVM v,const SQChar *name,SQInteger val) { sq_pushstring(v,name,-1); sq_pushinteger(v,val); sq_rawset(v,-3); } static SQInteger _system_date(HSQUIRRELVM v) { time_t t; SQInteger it; SQInteger format = 'l'; if(sq_gettop(v) > 1) { sq_getinteger(v,2,&it); t = it; if(sq_gettop(v) > 2) { sq_getinteger(v,3,(SQInteger*)&format); } } else { time(&t); } tm *date; if(format == 'u') date = gmtime(&t); else date = localtime(&t); if(!date) return sq_throwerror(v,_SC("crt api failure")); sq_newtable(v); _set_integer_slot(v, _SC("sec"), date->tm_sec); _set_integer_slot(v, _SC("min"), date->tm_min); _set_integer_slot(v, _SC("hour"), date->tm_hour); _set_integer_slot(v, _SC("day"), date->tm_mday); _set_integer_slot(v, _SC("month"), date->tm_mon); _set_integer_slot(v, _SC("year"), date->tm_year+1900); _set_integer_slot(v, _SC("wday"), date->tm_wday); _set_integer_slot(v, _SC("yday"), date->tm_yday); return 1; } #define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_system_##name,nparams,pmask} static SQRegFunction systemlib_funcs[]={ _DECL_FUNC(getenv,2,_SC(".s")), _DECL_FUNC(system,2,_SC(".s")), _DECL_FUNC(clock,1,NULL), _DECL_FUNC(time,1,NULL), _DECL_FUNC(date,-1,_SC(".nn")), _DECL_FUNC(remove,2,_SC(".s")), _DECL_FUNC(rename,3,_SC(".ss")), {0,0,0,0} }; SQInteger sqstd_register_systemlib(HSQUIRRELVM v) { SQInteger i=0; while(systemlib_funcs[i].name!=0) { sq_pushstring(v,systemlib_funcs[i].name,-1); sq_newclosure(v,systemlib_funcs[i].f,0); sq_setparamscheck(v,systemlib_funcs[i].nparamscheck,systemlib_funcs[i].typemask); sq_setnativeclosurename(v,-1,systemlib_funcs[i].name); sq_createslot(v,-3); i++; } return 1; } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp0000644000000000000000000000562112246102603022437 0ustar rootroot/* see copyright notice in squirrel.h */ #include #include #include #include #define SINGLE_ARG_FUNC(_funcname, num_ops) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ SQFloat f; \ sq_decreaseops(v,num_ops); \ sq_getfloat(v,2,&f); \ sq_pushfloat(v,(SQFloat)_funcname(f)); \ return 1; \ } #define TWO_ARGS_FUNC(_funcname, num_ops) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ SQFloat p1,p2; \ sq_decreaseops(v,num_ops); \ sq_getfloat(v,2,&p1); \ sq_getfloat(v,3,&p2); \ sq_pushfloat(v,(SQFloat)_funcname(p1,p2)); \ return 1; \ } #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS static SQInteger math_srand(HSQUIRRELVM v) { SQInteger i; if(SQ_FAILED(sq_getinteger(v,2,&i))) return sq_throwerror(v,_SC("invalid param")); srand((unsigned int)i); return 0; } static SQInteger math_rand(HSQUIRRELVM v) { sq_pushinteger(v,rand()); return 1; } #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ static SQInteger math_abs(HSQUIRRELVM v) { SQInteger n; sq_getinteger(v,2,&n); sq_pushinteger(v,(SQInteger)abs((int)n)); return 1; } SINGLE_ARG_FUNC(sqrt, 100) SINGLE_ARG_FUNC(fabs, 1) SINGLE_ARG_FUNC(sin, 100) SINGLE_ARG_FUNC(cos, 100) SINGLE_ARG_FUNC(asin, 100) SINGLE_ARG_FUNC(acos, 100) SINGLE_ARG_FUNC(log, 100) SINGLE_ARG_FUNC(log10, 100) SINGLE_ARG_FUNC(tan, 100) SINGLE_ARG_FUNC(atan, 100) TWO_ARGS_FUNC(atan2, 100) TWO_ARGS_FUNC(pow, 100) SINGLE_ARG_FUNC(floor, 1) SINGLE_ARG_FUNC(ceil, 1) SINGLE_ARG_FUNC(exp, 100) #define _DECL_FUNC(name,nparams,tycheck) {_SC(#name),math_##name,nparams,tycheck} static SQRegFunction mathlib_funcs[] = { _DECL_FUNC(sqrt,2,_SC(".n")), _DECL_FUNC(sin,2,_SC(".n")), _DECL_FUNC(cos,2,_SC(".n")), _DECL_FUNC(asin,2,_SC(".n")), _DECL_FUNC(acos,2,_SC(".n")), _DECL_FUNC(log,2,_SC(".n")), _DECL_FUNC(log10,2,_SC(".n")), _DECL_FUNC(tan,2,_SC(".n")), _DECL_FUNC(atan,2,_SC(".n")), _DECL_FUNC(atan2,3,_SC(".nn")), _DECL_FUNC(pow,3,_SC(".nn")), _DECL_FUNC(floor,2,_SC(".n")), _DECL_FUNC(ceil,2,_SC(".n")), _DECL_FUNC(exp,2,_SC(".n")), #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS _DECL_FUNC(srand,2,_SC(".n")), _DECL_FUNC(rand,1,NULL), #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ _DECL_FUNC(fabs,2,_SC(".n")), _DECL_FUNC(abs,2,_SC(".n")), {0,0,0,0}, }; #ifndef M_PI #define M_PI (3.14159265358979323846) #endif SQRESULT sqstd_register_mathlib(HSQUIRRELVM v) { SQInteger i=0; while(mathlib_funcs[i].name!=0) { sq_pushstring(v,mathlib_funcs[i].name,-1); sq_newclosure(v,mathlib_funcs[i].f,0); sq_setparamscheck(v,mathlib_funcs[i].nparamscheck,mathlib_funcs[i].typemask); sq_setnativeclosurename(v,-1,mathlib_funcs[i].name); sq_createslot(v,-3); i++; } #ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS sq_pushstring(v,_SC("RAND_MAX"),-1); sq_pushinteger(v,RAND_MAX); sq_createslot(v,-3); #endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ sq_pushstring(v,_SC("PI"),-1); sq_pushfloat(v,(SQFloat)M_PI); sq_createslot(v,-3); return SQ_OK; } openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdlib.dsp0000644000000000000000000000646512246102603022267 0ustar rootroot# Microsoft Developer Studio Project File - Name="sqstdlib" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=sqstdlib - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "sqstdlib.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "sqstdlib.mak" CFG="sqstdlib - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "sqstdlib - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "sqstdlib - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_LocalPath ".." CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "sqstdlib - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x410 /d "NDEBUG" # ADD RSC /l 0x410 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\sqstdlib.lib" !ELSEIF "$(CFG)" == "sqstdlib - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE RSC /l 0x410 /d "_DEBUG" # ADD RSC /l 0x410 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\sqstdlib.lib" !ENDIF # Begin Target # Name "sqstdlib - Win32 Release" # Name "sqstdlib - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\sqstdblob.cpp # End Source File # Begin Source File SOURCE=.\sqstdio.cpp # End Source File # Begin Source File SOURCE=.\sqstdmath.cpp # End Source File # Begin Source File SOURCE=.\sqstdrex.cpp # End Source File # Begin Source File SOURCE=.\sqstdstream.cpp # End Source File # Begin Source File SOURCE=.\sqstdstring.cpp # End Source File # Begin Source File SOURCE=.\sqstdaux.cpp # End Source File # Begin Source File SOURCE=.\sqstdsystem.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\sqstdblobimpl.h # End Source File # Begin Source File SOURCE=.\sqstdstream.h # End Source File # End Group # End Target # End Project openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdstream.h0000644000000000000000000000140412246102603022441 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTD_STREAM_H_ #define _SQSTD_STREAM_H_ SQInteger _stream_readblob(HSQUIRRELVM v); SQInteger _stream_readline(HSQUIRRELVM v); SQInteger _stream_readn(HSQUIRRELVM v); SQInteger _stream_writeblob(HSQUIRRELVM v); SQInteger _stream_writen(HSQUIRRELVM v); SQInteger _stream_seek(HSQUIRRELVM v); SQInteger _stream_tell(HSQUIRRELVM v); SQInteger _stream_len(HSQUIRRELVM v); SQInteger _stream_eos(HSQUIRRELVM v); SQInteger _stream_flush(HSQUIRRELVM v); #define _DECL_STREAM_FUNC(name,nparams,typecheck) {_SC(#name),_stream_##name,nparams,typecheck} SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,SQRegFunction *methods,SQRegFunction *globals); #endif /*_SQSTD_STREAM_H_*/ openttd-1.3.3/src/3rdparty/squirrel/sqstdlib/sqstdblobimpl.h0000644000000000000000000000437612246102603022761 0ustar rootroot/* see copyright notice in squirrel.h */ #ifndef _SQSTD_BLOBIMPL_H_ #define _SQSTD_BLOBIMPL_H_ struct SQBlob : public SQStream { SQBlob(SQInteger size) { _size = size; _allocated = size; _buf = (unsigned char *)sq_malloc(size); memset(_buf, 0, _size); _ptr = 0; _owns = true; } virtual ~SQBlob() { sq_free(_buf, _allocated); } SQInteger Write(void *buffer, SQInteger size) { if(!CanAdvance(size)) { GrowBufOf(_ptr + size - _size); } memcpy(&_buf[_ptr], buffer, size); _ptr += size; return size; } SQInteger Read(void *buffer,SQInteger size) { SQInteger n = size; if(!CanAdvance(size)) { if((_size - _ptr) > 0) n = _size - _ptr; else return 0; } memcpy(buffer, &_buf[_ptr], n); _ptr += n; return n; } bool Resize(SQInteger n) { if(!_owns) return false; if(n != _allocated) { unsigned char *newbuf = (unsigned char *)sq_malloc(n); memset(newbuf,0,n); if(_size > n) memcpy(newbuf,_buf,n); else memcpy(newbuf,_buf,_size); sq_free(_buf,_allocated); _buf=newbuf; _allocated = n; if(_size > _allocated) _size = _allocated; if(_ptr > _allocated) _ptr = _allocated; } return true; } bool GrowBufOf(SQInteger n) { bool ret = true; if(_size + n > _allocated) { if(_size + n > _size * 2) ret = Resize(_size + n); else ret = Resize(_size * 2); } _size = _size + n; return ret; } bool CanAdvance(SQInteger n) { if(_ptr+n>_size)return false; return true; } SQInteger Seek(SQInteger offset, SQInteger origin) { switch(origin) { case SQ_SEEK_SET: if(offset > _size || offset < 0) return -1; _ptr = offset; break; case SQ_SEEK_CUR: if(_ptr + offset > _size || _ptr + offset < 0) return -1; _ptr += offset; break; case SQ_SEEK_END: if(_size + offset > _size || _size + offset < 0) return -1; _ptr = _size + offset; break; default: return -1; } return 0; } bool IsValid() { return _buf?true:false; } bool EOS() { return _ptr == _size; } SQInteger Flush() { return 0; } SQInteger Tell() { return _ptr; } SQInteger Len() { return _size; } SQUserPointer GetBuf(){ return _buf; } private: SQInteger _size; SQInteger _allocated; SQInteger _ptr; unsigned char *_buf; bool _owns; }; #endif //_SQSTD_BLOBIMPL_H_ openttd-1.3.3/src/3rdparty/squirrel/HISTORY0000644000000000000000000003540412246102604017165 0ustar rootroot***version 2.2.5 stable*** -sq_getsize() now returns userdatasize for classes and instances -added parameter 'isstatic' to _newmember metamethod(thx G.Meyer) -now array.sort() is implemented with heapsort -added SQUIRREL_VERSION_NUMBER preprocessor definition -now floats in scientific notation also accept numbers with no '.' (eg. 1e+6 or 1e6) -fixed some compiler warning -fixed a minor compiler bug -fixed some bugs when SQUSEDOUBLE is used in 32bits systems -fixed bug in GC ***2009-11-15 *** ***version 2.2.4 stable*** -fixed bug in functions with default parameters ***2009-06-30 *** ***version 2.2.3 stable*** -added sq_getfunctioninfo -added compile time flag SQUSEDOUBLE to use double precision floats -added global slot _floatsize_ int the base lib to recognize single precision and double precision builds -sq_wakeupvm can now resume the vm with an exception -added sqstd_format -generators can now be instantiated by calling sq_call() or closure.call() -fixed a bug in sqstd_printcallstack(thx takayuki_h) -fixed modulo by zero(thx jup) -fixed negative enums and constants -fixed generator crash bug if invoked as tail call (thx Mr.Accident) -fixed some minor bug ***2008-09-24 *** ***version 2.2.2 stable*** -fixed some behaviour inconsistencies in thread.call() and thread.wakeup() (thx Mr.Accident) -fixed coroutine error propagation -fixed lingering return value from native function (thx Tom Leonard) -fixed a bug if array.sort() is given a bad sort function (thx Tom Leonard) -fixed some minor api bug -added sq_arrayremove() and sq_arrayinsert() ***2008-05-16 *** ***version 2.2.1 stable*** -fixed a tailcall bug ***2008-02-17 *** ***version 2.2 stable *** -added _newslot metamethod in classes -added enums added constants -added sq_pushconsttable, sq_setconsttable -added default param -added octal literals(thx Dinosaur) -fixed debug hook, 'calls' and 'returns' are properly notified in the same number. -fixed a coroutine bug ***2007-07-29 *** ***version 2.1.2 stable*** -new behaviour for generators iteration using foreach now when a generator is iterated by foreach the value returned by a 'return val' statement will terminate the iteration but will not be returned as foreach iteration -added sq_setclassudsize() -added sq_clear() -added table.clear(), array.clear() -fixed sq_cmp() (thx jyuill) -fixed minor bugs ***2006-08-21 *** ***version 2.1.1 stable*** -vm refactoring -optimized internal function memory layout -new global symbol _version_ (is the version string) -code size optimization for float literals(on 32bits float builts) -now the raw ref API(sq_addref etc...) is fully reentrant. -fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB) -improved C reference performances in NO_GARBAGE_COLLECTOR builds -sq_getlocal() now enumerates also outer values. -fixed regexp library for GCC users. ***2006-03-19 *** ***version 2.1 stable*** -added static class fields, new keyword static -added 64bits architecture support -added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds -added functions with fixed environment, closure.bindenv() built-in function -all types except userdata and null implement the tostring() method -string concatenation now invokes metamethod _tostring -new metamethods for class objects _newmember and _inherited -sq_call() sq_resume() sq_wakeupvm() have a new signature -new C referencing implementation(scales more with the amount of references) -refactored hash table -new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv() -the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot -sq_setreleasehook() now also works for classes -stream.readstr() and stream.writestr() have been deprecated(this affects file and blob) -fixed squirrel.h undeclared api calls -fixed few minor bugs -SQChar is now defined as wchar_t -removed warning when building with -Wall -pedantic for GCC users -added new std io function writeclosuretofile() -added new std string functions strip(),rstrip(),lstrip() and split() -regular expressions operators (+,*) now have more POSIX greedyness behaviour -class constructors are now invoked as normal functions ***2005-10-02 *** ***version 2.0.5 stable*** -fixed some 64bits incompatibilities (thx sarge) -fixed minor bug in the stdlib format() function (thx Rick) -fixed a bug in dofile() that was preventing to compile empty files -added new API sq_poptop() & sq_getfreevariable() -some performance improvements ***2005-08-14 *** ***version 2.0.4 stable*** -weak references and related API calls -added sq_objtobool() -class instances memory policies improved(1 mem allocation for the whole instance) -typetags are now declared as SQUserPointer instead of unsigned int -first pass for 64bits compatibility -fixed minor bug in the stdio stream -fixed a bug in format() -fixed bug in string.tointeger() and string.tofloat() ***2005-06-24 *** ***version 2.0.3 stable*** -dofile() and loadfile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian -sq_setparamscheck() : now typemesk can check for null -added string escape sequence \xhhhh -fixed some C++ standard incompatibilities ***2005-05-15 *** ***version 2.0.2 stable*** -performances improvements (expecially for GCC users) -removed all dependencies from C++ exception handling -various bugfixes ***2005-04-12 *** ***version 2.0.1 stable*** -various bugfixes -sq_setparamscheck() now allows spaces in the typemask ***2005-04-03 *** ***version 2.0 stable*** -added API sq_gettypetag() -added built-in function to the bool type(tointeger, tostring etc...) ***2005-02-27 *** ***version 2.0 release candidate 1(RC 1)*** -added API sq_reseterror() -modified sq_release() -now class instances can be cloned -various bufixes ***2005-01-26 *** ***version 2.0 beta 1*** -added bool type -class properties can be redefined in a derived class -added ops *= /= and %= -new syntax for class attributes declaration instead of ( and ) -increased the max number of literals per function from 65535 to 16777215 -now free variables have proper lexical scoping -added API sq_createinstance(), sq_pushbool(), sq_getbool() -added built-in function type() -added built-in function obj.rawin(key) in table,class and instance -sq_rawget() and sq_rawset() now work also on classes and instances -the VM no longer uses C++ exception handling (more suitable for embedded devices) -various bufixes ***2004-12-21 *** ***version 2.0 alpha 2*** -globals scoping changed, now if :: is omitted the VM automatically falls back on the root table -various bufixes -added class level attributes ***2004-12-12 *** ***version 2.0 alpha 1*** -codebase branch from version 1.x -added classes -added functions with variable number of parameters(vargc & vargv and the ...) -0 and 0.0 are now considered 'false' by all conditional statements(if,while,for,?,do-while) -added new api functions sq_newclass() sq_setinstanceup() sq_getinstanceup() sq_getattributes() sq_setattributes() -modified api sq_settypetag() ***2004-11-01 *** ***version 1.0 stable*** -fixed some minor bug -improoved operator 'delete' performances -added scientific notation for float numbers( eg. 2.e16 or 2.e-2) ***2004-08-30 *** ***version 1.0 release candidate 2(RC 2)*** -fixed bug in the vm(thx Pierre Renaux) -fixed bug in the optimizer(thx Pierre Renaux) -fixed some bug in the documentation(thx JD) -added new api functions for raw object handling -removed nested multiline comments -reduced memory footprint in C references ***2004-08-23 *** ***version 1.0 release candidate 1(RC 1)*** -fixed division by zero -the 'in' operator and obj.rawget() do not query the default delegate anymore -added function sq_getprintfunc() -added new standard library 'auxlib'(implements default error handlers) ***2004-07-12 *** ***version 1.0 beta 4*** -fixed a bug in the integer.tochar() built-in method -fixed unary minus operator -fixed bug in dofile() -fixed inconsistency between != and == operators(on float/integer comparison) -added javascript style unsigned right shift operator '>>>' -added array(size) constructor built-in function -array.resize(size,[fill]) built-in function accepts an optional 'fill' value -improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename() ***2004-05-23 *** ***version 1.0 beta 3*** -minor vm bug fixes -string allocation is now faster -tables and array memory usage is now less conservative(they shrink) -added regular expression routines in the standard library -The 'c' expression now accepts only 1 character(thx irbrian) -multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string") -added new keyword 'parent' for accessing the delegate of tables and unserdata -The metamethod '_clone' has been renamed '_cloned' -the _delslot metamethod's behaviour and prototype have been changed -new default function in the integer and float object 'tochar()' -the built-in function chcode2string has been removed -the default method [table].getdelegate() has been removed -new api sq_rawdeleteslot() -new table built-in method rawdelete(key) -the dynamic mudule loading has been removed from the standard distribution -some optimizations in the VM ***2004-04-21 *** ***version 1.0 beta 2*** -minor compiler/parser bug fixes -sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck() -sq_setparamscheck allows to add automatic parameters type checking in native closures -sq_compile() lost the lineinfo parameter -new api sq_enabledebuginfo() globally sets compiler's debug info generation -added consistency check on bytecode serialization -fixed += operator, now works on strings like + -added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime -added registry table -new api call sq_pushregistrytable() -added type tag to the userdata type sq_settypetag() -sq_getuserdata now queries the userdata typetag -the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons -new standard libraries(sqlibs are now obsolete) ***2004-02-20 *** ***version 1.0 beta 1*** -fixed a bug in the compiler (thanks Martin Kofler) -fixed bug in the switch case statement -fixed the _unm metamethod -fixed minor bugs in the API -fixed automatic stack resizing -first beta version first pass code clean up in the VM and base lib first pass code coverege test has been done on VM and built-in lib -new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete) -new api allows to specifiy a "print" function to output text(sq_printfunc) -added some small optimizations -new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread") -new built in functions have been added for manipulating the new "thread" type -friend virtual machines share the same root table, error handler and debug hook by default -new compile time options ***2004-01-19 *** ***version 0.9 alpha*** -fixed a garbage collection bug -fixed some API bugs(thanks to Joshua Jensen) -fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled) -new function parameters semantic, now passing a wrong number of parameters generates an exception -native closures have now a built in parameter number checking -sq_rawget and sq_rawset now work also on arrays -sq_getsize now woks also on userdata -the userdata release hook prototype is changed(now passes the size of the userdata) -the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen) -faster compiler -try/catch blocks do not cause any runtime memory allocation anymore ***2003-12-06 *** ***version 0.8 alpha*** -fixed a bug that was preventing to have callable userdata throught the metamethod _call -fixed a garbage collection bug -fixed == operator now can compare correctly different types -new built in method getstackinfos(level) -improoved line informations precision for the debug hook -new api call sq_compilebuffer() -new built-in api function compilestring() -new syntactic sugar for function declarations inside tables -the debug API has been finalized ***2003-11-17 *** ***version 0.7 alpha*** -fixed critical bug SQInteger the tail call system -fixed bug in the continue statement code generation -fixed func call param issue(thanks to Rewoonenco Andrew) -added _delslot metamethod(thanks to Rewoonenco Andrew) -new multiline string expression ( delimited by <[ and ]> ) -normal strings ("") do not allow embedded new line anymore -reduced vm memory footprint(C refs are shared between friend VMs) -new api method sq_deleteslot() -new debug hook event 'r' is triggered when a function returns ***2003-11-04 *** ***version 0.6 alpha*** -fixed switch statement(was executing the default case after a break) -sq_call() doesn't pop the closure (just the params) -the vm execution can be suspended from the C API anytime (micro-threads) -new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack() ***2003-10-13 *** ***version 0.5 alpha*** -fixed some minor bug -tested with non ASCII identifiers in unicode mode(I've tried chinese chars) -added built-in function string.find() -the built-in function array.sort() optionally accepts a cmp(a,b) function -the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname) -fixed some debug info imprecision ***2003-10-01 *** ***version 0.4 alpha*** -faster VM -sq_call will pop arguments and closure also in case of failure -fixed a bug in sq_remove -now the VM detects delegation cycles(and throws an exception) -new operators ++ and -- -new operator ',' comma operator -fixed some expression precedence issue -fixed bug in sq_arraypop ***2003-09-15 *** ***version 0.3 alpha*** -fixed a bug in array::insert() -optional Unicode core(define SQUNICODE or _UNICODE on Win32) -sq_compiler uses a new reader function SQLEXREADFUNC -the debug hook passes 'l' instead of 'line' for line callbacks and 'c' instead of 'call' for call callbacks -new array.extend() bulit-in function -new API sq_clone() ***2003-09-10 *** ***version 0.2 pre-alpha*** -new completely reentrant VM (sq_open and sq_close are now obsolete) -sq_newvm() has a new prototype -allocators are now global and linked in the VM -_newslot meta method added -rawset creates a slot if doesn't exists -the compiler error callback pass the vm handle(thanks Pierre Renaux) -sq_setforeignptr() sq_getforeingptr() are now public -sq_resume() now is possible to resume generators from C -sq_getlasterror() retrieve the last thrown error -improved docs ***2003-09-06 *** ***version 0.1 pre-alpha*** first release openttd-1.3.3/src/3rdparty/squirrel/COPYRIGHT0000644000000000000000000000166512246102604017376 0ustar rootrootCopyright (c) 2003-2011 Alberto Demichelis This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ----------------------------------------------------- END OF COPYRIGHT openttd-1.3.3/src/3rdparty/squirrel/COMPILE0000644000000000000000000000144512246102604017112 0ustar rootrootSquirrel 2.2.4 stable -------------------------------------------------------- What is in this distribution? squirrel static library implementing the compiler and interpreter of the language sqstdlib the standard utility libraries sq stand alone interpreter doc The manual etc a minimalistic embedding sample samples samples programs HOW TO COMPILE --------------------------------------------------------- GCC USERS ......................................................... There is a very simple makefile that compiles all libraries and exes from the root of the project run 'make' for 32 bits systems $ make for 64 bits systems $ make sq64 VISUAL C++ USERS ......................................................... Open squirrel.dsw from the root project directory and build(dho!) openttd-1.3.3/src/3rdparty/squirrel/bin/0000755000000000000000000000000012246102757016654 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/samples/0000755000000000000000000000000012246102757017550 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/samples/fibonacci.nut0000644000000000000000000000035612246102603022207 0ustar rootroot/* * * Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) * */ function fib(n) { if (n < 2) return 1 return fib(n-2) + fib(n-1) } local n = ARGS.len()!=0?ARGS[0].tointeger():1 print(fib(n)+"\n") openttd-1.3.3/src/3rdparty/squirrel/samples/ackermann.nut0000644000000000000000000000061012246102603022222 0ustar rootroot/* * * Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) * */ function Ack(M, N) { if (M == 0) return( N + 1 ); if (N == 0) return( Ack(M - 1, 1) ); return( Ack(M - 1, Ack(M, (N - 1))) ); } local n; if(ARGS.len()!=0) { n = ARGS[0].tointeger(); if(n < 1) n = 1; } else { n = 1; } print("n="+n+"\n"); print("Ack(3,"+ n+ "):"+ Ack(3, n)); openttd-1.3.3/src/3rdparty/squirrel/samples/matrix.nut0000644000000000000000000000156712246102603021603 0ustar rootroot/* * * Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) * */ local SIZE=30; function mkmatrix(rows, cols) { local i, j, count = 1; local m = []; m.resize(rows); for (i = 0; i < rows; i+=1) { m[i] = [];m[i].resize(cols) for (j = 0; j < cols; j+=1) { m[i][j] = count+=1; } } return m; } function mmult(rows, cols, m1, m2, m3) { local i, j, k, val; for (i = 0; i < rows; i+=1) { for (j = 0; j < cols; j+=1) { val = 0; for (k = 0; k < cols; k+=1) { val += m1[i][k] * m2[k][j]; } m3[i][j] = val; } } return m3; } local n = ARGS.len()!=0?ARGS[0].tointeger():1 local m1 = mkmatrix(SIZE, SIZE); local m2 = mkmatrix(SIZE, SIZE); local mm = mkmatrix(SIZE, SIZE); for (local i = 0; i < n; i+=1) { mmult(SIZE, SIZE, m1, m2, mm); } print(mm[0][0]+" "+mm[2][3]+" "+mm[3][2]+" "+mm[4][4]); openttd-1.3.3/src/3rdparty/squirrel/samples/delegation.nut0000644000000000000000000000144112246102603022401 0ustar rootroot PEntity <- { name="noname" pos={x=0,y=0,z=0} type="entity" //methamethod _typeof=function() { return type; } } function PEntity::PrintPos() { ::print("x="+pos.x+" y="+pos.y+" z="+pos.z+"\n"); } function PEntity::new(name,pos) { local newentity=clone ::PEntity; if(name) newentity.name=name; if(pos) newentity.pos=pos; return newentity; } PPlayer <- { model="warrior.mdl" weapon="fist" health=100 armor=0 //overrides the parent type type="player" } function PPlayer::new(name,pos) { local newplayer=delegate ::PEntity.new(name,pos) : clone ::PPlayer; return newplayer; } local player=PPlayer.new("godzilla",{x=10,y=20,z=30}); ::print("PLAYER NAME"+player.name+"\n"); ::print("ENTITY TYPE"+typeof player+"\n"); player.PrintPos(); player.pos.x=123; player.PrintPos(); openttd-1.3.3/src/3rdparty/squirrel/samples/generators.nut0000644000000000000000000000121412246102603022435 0ustar rootroot/* *Random number function from The Great Computer Language shootout *converted to a generator func */ function gen_random(max) { local last=42 local IM = 139968; local IA = 3877; local IC = 29573; for(;;){ //loops forever yield (max * (last = (last * IA + IC) % IM) / IM); } } local randtor=gen_random(100); print("RAND NUMBERS \n") for(local i=0;i<10;i+=1) print(">"+resume randtor+"\n"); print("FIBONACCI \n") function fiboz(n) { local prev=0; local curr=1; yield 1; for(local i=0;i"+val+"\n"); } openttd-1.3.3/src/3rdparty/squirrel/samples/hello.nut0000644000000000000000000000002512246102603021366 0ustar rootrootprint("Hello World!")openttd-1.3.3/src/3rdparty/squirrel/samples/coroutines.nut0000644000000000000000000000113212246102603022455 0ustar rootrootfunction coroutine_test(a,b) { ::print(a+" "+b+"\n"); local ret = ::suspend("suspend 1"); ::print("the coroutine says "+ret+"\n"); ret = ::suspend("suspend 2"); ::print("the coroutine says "+ret+"\n"); ret = ::suspend("suspend 3"); ::print("the coroutine says "+ret+"\n"); return "I'm done" } local coro = ::newthread(coroutine_test); local susparam = coro.call("test","coroutine"); //starts the coroutine local i = 1; do { ::print("suspend passed ["+susparam+"]\n") susparam = coro.wakeup("ciao "+i); ++i; }while(coro.getstatus()=="suspended") ::print("return passed ["+susparam+"]\n") openttd-1.3.3/src/3rdparty/squirrel/samples/metamethods.nut0000644000000000000000000000246112246102603022603 0ustar rootroot local base_vec={ function _add(n) { return { x=x+n.x, y=y+n.y, z=z+n.z, } } function _sub(n) { return { x=x-n.x, y=y-n.y, z=z-n.z, } } function _div(n) { return { x=x/n.x, y=y/n.y, z=z/n.z, } } function _mul(n) { return { x=x*n.x, y=y*n.y, z=z*n.z, } } function _modulo(n) { return { x=x%n, y=y%n, z=z%n, } } function _typeof() {return "vector";} function _get(key) { if(key==100) { return test_field; } }, function _set(key,val) { ::print("key = "+key+"\n"); ::print("val = "+val+"\n") if(key==100) { return test_field=val; } } test_field="nothing" } function vector(_x,_y,_z):(base_vec) { return delegate base_vec : {x=_x,y=_y,z=_z } } //////////////////////////////////////////////////////////// local v1=vector(1.5,2.5,3.5); local v2=vector(1.5,2.5,3.5); local r=v1+v2; foreach(i,val in r) { print(i+" = "+val+"\n"); } r=v1*v2; foreach(i,val in r) { print(i+" = "+val+"\n"); } r=v1/v2; foreach(i,val in r) { print(i+" = "+val+"\n"); } r=v1-v2; foreach(i,val in r) { print(i+" = "+val+"\n"); } r=v1%2; foreach(i,val in r) { print(i+" = "+val+"\n"); } print(v1[100]+"\n"); v1[100]="set SUCCEEDED"; print(v1[100]+"\n"); if(typeof v1=="vector") print("\n"); else print("\n"); openttd-1.3.3/src/3rdparty/squirrel/samples/tailstate.nut0000644000000000000000000000051712246102603022263 0ustar rootrootfunction state1() { ::suspend("state1"); return state2(); } function state2() { ::suspend("state2"); return state3(); } function state3() { ::suspend("state3"); return state1(); } local statethread = ::newthread(state1) ::print(statethread.call()+"\n"); for(local i = 0; i < 10000; i++) ::print(statethread.wakeup()+"\n"); openttd-1.3.3/src/3rdparty/squirrel/samples/array.nut0000644000000000000000000000066112246102603021407 0ustar rootroot/* * * Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) * */ local n, i, k; if(ARGS.len()!=0) { n = ARGS[0].tointeger(); if(n < 1) n = 1; } else { n = 1; } local x = []; x.resize(n); local y = []; y.resize(n); for (i = 0; i < n; i+=1) { x[i] = i + 1; y[i] = 0; } for (k = 0 ; k < n; k+=1) { for (i = n-1; i >= 0; i-=1) { y[i] = y[i]+ x[i]; } } print(y[0].tostring()+" "+y[n-1]); openttd-1.3.3/src/3rdparty/squirrel/samples/classattributes.nut0000644000000000000000000000105512246102603023503 0ustar rootrootclass Foo { //constructor constructor(a) { testy = ["stuff",1,2,3]; } //attributes of PrintTesty function PrintTesty() { foreach(i,val in testy) { ::print("idx = "+i+" = "+val+" \n"); } } //attributes of testy testy = null; } foreach(member,val in Foo) { ::print(member+"\n"); local attr; if((attr = Foo.getattributes(member)) != null) { foreach(i,v in attr) { ::print("\t"+i+" = "+(typeof v)+"\n"); } } else { ::print("\t\n") } } openttd-1.3.3/src/3rdparty/squirrel/samples/loops.nut0000644000000000000000000000065212246102603021425 0ustar rootrootlocal arr=["one","two","three"] ::print("FOREACH\n"); foreach(i,val in arr) { ::print("index ["+i+"]="+val+"\n"); } ::print("FOR\n"); for(local i=0;i0) l3.append(l2.pop()); while(l3.len()>0) l2.append(l3.pop()); l1.reverse(); if(compare_arr(l1,l2)) return l1.len(); return null; } local n = ARGS.len()!=0?ARGS[0].tointeger():1 for(local i=0;i= count_max) { bool = !bool; count = 0; } return this; } local n = ARGS.len()!=0?ARGS[0].tointeger():1 local val = 1; local toggle = Toggle.new(val); for (local i=0; i= 3) { x = vargv[0]; y = vargv[1]; z = vargv[2]; } } x = 0; y = 0; z = 0; } class Vector3 extends BaseVector { function _add(other) { if(other instanceof this.getclass()) return ::Vector3(x+other.x,y+other.y,z+other.z); else throw "wrong parameter"; } function Print() { ::print(x+","+y+","+z+"\n"); } } local v0 = Vector3(1,2,3) local v1 = Vector3(11,12,13) local v2 = v0 + v1; v2.Print(); FakeNamespace <- { Utils = {} } class FakeNamespace.Utils.SuperClass { constructor() { ::print("FakeNamespace.Utils.SuperClass") } } local testy = FakeNamespace.Utils.SuperClass(); openttd-1.3.3/src/3rdparty/squirrel/samples/flow.nut0000644000000000000000000000103012246102603021227 0ustar rootrootfunction min(x,y) return xy?x:y; if(min(100,200)>max(50,20)) print("I'm useless statement just to show up the if/else\n"); else print("squirrel!!\n"); print("\n") function typy(obj) { switch(typeof obj) { case "integer": case "float": return "is a number"; case "table": case "array": return "is a container"; default: return "is other stuff" } } local a=1,b={},c=function(a,b){return a+b;} print("a "+typy(a)+"\n"); print("b "+typy(b)+"\n"); print("c "+typy(c)+"\n"); openttd-1.3.3/src/3rdparty/squirrel/etc/0000755000000000000000000000000012246102757016657 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/etc/minimal.c0000644000000000000000000000314112246102604020437 0ustar rootroot#include #include #include #include #include #ifdef _MSC_VER #pragma comment (lib ,"squirrel.lib") #pragma comment (lib ,"sqstdlib.lib") #endif #ifdef SQUNICODE #define scvprintf vwprintf #else #define scvprintf vprintf #endif void printfunc(HSQUIRRELVM v, const SQChar *s, ...) { va_list arglist; va_start(arglist, s); scvprintf(s, arglist); va_end(arglist); } void call_foo(HSQUIRRELVM v, int n,float f,const SQChar *s) { SQInteger top = sq_gettop(v); //saves the stack size before the call sq_pushroottable(v); //pushes the global table sq_pushstring(v,_SC("foo"),-1); if(SQ_SUCCEEDED(sq_get(v,-2))) { //gets the field 'foo' from the global table sq_pushroottable(v); //push the 'this' (in this case is the global table) sq_pushinteger(v,n); sq_pushfloat(v,f); sq_pushstring(v,s,-1); sq_call(v,4,SQFalse,SQTrue); //calls the function } sq_settop(v,top); //restores the original stack size } int main(int argc, char* argv[]) { HSQUIRRELVM v; v = sq_open(1024); // creates a VM with initial stack size 1024 //sq_pushroottable(v); //push the root table were to register the lib function //sqstd_register_iolib(v); sqstd_seterrorhandlers(v); //registers the default error handlers sq_setprintfunc(v, printfunc); //sets the print function sq_pushroottable(v); //push the root table(were the globals of the script will be stored) if(SQ_SUCCEEDED(sqstd_dofile(v, _SC("test.nut"), SQFalse, SQTrue))) // also prints syntax errors if any { call_foo(v,1,2.5,_SC("teststring")); } sq_pop(v,1); //pops the root table sq_close(v); return 0; } openttd-1.3.3/src/3rdparty/squirrel/etc/test.nut0000644000000000000000000000012412246102604020352 0ustar rootrootfunction foo(i, f, s) { print("Called foo(), i="+i+", f="+f+", s='"+s+"'\n"); } openttd-1.3.3/src/3rdparty/squirrel/doc/0000755000000000000000000000000012246102757016651 5ustar rootrootopenttd-1.3.3/src/3rdparty/squirrel/doc/sqstdlib2.pdf0000644000000000000000000016721112246102603021251 0ustar rootroot%PDF-1.3 % 4 0 obj << /Type /Info /Producer (FOP 0.20.5) >> endobj 5 0 obj << /Length 246 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gaqd[\IQJ1&-UA:?a4/j=Osr[Jq*pMi=8^1`.4Za_?id24lM2b[+uF7AnR]0Q4ej;k9Tg),:)c*7W;lXW&kJok9tubis9_(_4P/*D/T*8;Q*)>(=mXhjT`"b>?n0Pb;#0GGp)YQMZ:%Nr.,]Ee)267S5JJPh(qWc.2JUaBD$]k#7;O+_fr2/Q4AiQp[&KcBNMUK-,KPb[[BBjHJC?@,=d"kc#.j8KbXf_i75B.qI)8(I~> endstream endobj 6 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 5 0 R >> endobj 7 0 obj << /Length 1047 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasao966RV&AJ$CE(_tHW'$$Ddo4`99KG>D'5hXt!eaDq&+nrXf8D?8/YXB;^F4ot&;YF>$C33$R8(!afRg9emADDoN/Gq^kFG<%$"-FhiSoSSum`^8D^FT^E01>:QhB:j8S4iIc_3g`<(ZIeSFbcT)eJi3m:JO/0#ego2NMb(gI!*VY0P8Z-r@N'UT(?F"h&Y_<=^n-jDu4[b6tEH.H$cf-MA$FdM91QcQO2Y@7BLign\JkFbaS>$e3FcoJ8#_N6]YFu[7/uM16Gq?!%D'plAM.ilY2J3tif8V;%hMiO1D))GSQfbBUk8fujAtdoh%J0tictI5qs*AfS5DYn(Z39C&Oq!\YQr0-]D2BYiB#%'CkGuNnB-rtlq5%>`+ohaG([_Q,;0ekW8V3\9YY*8O:nV)n_%m^$N_@a(U%h&K?iem:)hFG6`XgqAkXEtJb#>mX`8g\)2frpN&1dqs'E(s<="*3eS;[87[IUJu*[?gVp3qK5f\oWadQc"(BZkuPdi.GH%,8S(K?6hi/DHRaZ"p9eoW5gf3)U.`2-e1b0HE4V;_4N5Et!nH-l]A^eYNg`ShQa#iU^IbipEr$0fPPB-//Fbr\r#uldV%o!ih_KBDnR/Zn4JU,"Y((^5(AZrjJ5d\'KQN/A9ARObUYE/M=g&.6pIj4RWPm4;<3RfEBJpQs(EM&jBY#d$^AG6 endstream endobj 8 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 7 0 R >> endobj 9 0 obj << /Length 71 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iGoCd.c`?]8EV`b1=.gR0K1`91K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE! endstream endobj 10 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 9 0 R >> endobj 11 0 obj << /Length 1275 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/l9llag*6.GrMEQ\]$2_`c1!(]3FJdNRE9m.H8dl^SK@iclkmOSI`N7'NX((Wn%fY*'\qfHgs">qd@INiG'C+8p-fJpg+ep)):AID:a)$O@DI<]9P&O*DS:ja(N@j^PH(H$I.`b2)gH*!g-:L$GAet26_GB9i-)"(ZQ1E)@X&;t-\AG_S8(D1M?!Tj!j!WHB,0u#86'5]AEg05+)Qcb2rs+*?TU1HA;'B4)d>Ig?YAkY]\PIGdlW,j5(T1X&7JYAjVFa"5o#L%5-p.&P5p/usnSD4qoruWp7e&G3o-DZBZk;uafB`!XQcl&I9Et\%Fid0Z^G6EO)^G0GB)P9,OkJd)T;Al/+:s=""pb@c7ad<1,^krR=pQfQUKJmUEVLu55bS)06Tlt&hUo`"[1Y8$%nQa4#dat0il2.[oNC3Ff9<"$U,;ZZ/P7A6%hAR*5p4OT'JI[fpZT1"-0tSg#?lPM)m]Qr5eD1Cf?oHoK05ReFil6R-Bh:_&5@o(_(NFW1tB/H>B*-I'k])P$RFbfSdu)0g/d;b!cTD'"$e!UhAs]sXuf#ockl`a]d;C6G[G5]C_ngt)?YXc%m:./#kX/f&/a`&!pt`p@R#NY)^V6TV/NJj>m'(Ol%&J-#o\"PU!VR.jktbX]&B"?KRe.rU]?Ufq-#XNssdD'^NI*bRo([LB-,Na"/%TXR0ZUNj5/mn.U/XB%d/s[VJ[TY0'h8Q%5_;8WV&/dIZl[r(dK4jDXGKW$QO@QPScZYA#7H@AqAOAGa7CNW$kV&JP1:PY7:Vb?70sg:.rftX[KufNH4>6Uptf>`j8hDb?h(SHmJSST`;.3]!BXEX`)Rm/TYM'D#Rh1mO=;Ihgn&]L_amFbR\o0/fsEh!eL&^5:WUn>+=M_SnD4tE>M?(WCeQEEU\7(5jt2n.TqHOK'LJW@9gbn!mbuiJO!M:V4T>XTXYDWpH=:jHHOUIda06O2*3,G0tH\"l^`g3-b@1W`q,K#admI76]'m4n endstream endobj 12 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 11 0 R /Annots 13 0 R >> endobj 13 0 obj [ 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 28 0 R 30 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R 42 0 R 44 0 R 46 0 R 48 0 R 50 0 R 52 0 R 54 0 R 56 0 R 58 0 R 60 0 R 62 0 R 64 0 R 66 0 R 68 0 R 70 0 R 72 0 R 74 0 R 76 0 R 78 0 R 80 0 R 82 0 R 84 0 R 86 0 R 88 0 R ] endobj 14 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 655.001 179.44 645.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 15 0 R /H /I >> endobj 16 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 644.001 228.88 634.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 17 0 R /H /I >> endobj 18 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 633.001 194.83 623.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 19 0 R /H /I >> endobj 20 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 622.001 231.06 612.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 21 0 R /H /I >> endobj 22 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 611.001 205.5 601.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 23 0 R /H /I >> endobj 24 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 600.001 169.28 590.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 25 0 R /H /I >> endobj 26 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 589.001 219.11 579.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 27 0 R /H /I >> endobj 28 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 578.001 210.5 568.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 29 0 R /H /I >> endobj 30 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 567.001 292.71 557.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 31 0 R /H /I >> endobj 32 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 556.001 196.66 546.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 33 0 R /H /I >> endobj 34 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 545.001 194.83 535.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 35 0 R /H /I >> endobj 36 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 534.001 231.06 524.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 37 0 R /H /I >> endobj 38 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 523.001 225.77 513.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 39 0 R /H /I >> endobj 40 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 512.001 169.28 502.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 41 0 R /H /I >> endobj 42 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 501.001 219.11 491.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 43 0 R /H /I >> endobj 44 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 490.001 214.39 480.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 45 0 R /H /I >> endobj 46 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 479.001 198.32 469.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 47 0 R /H /I >> endobj 48 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 468.001 194.83 458.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 49 0 R /H /I >> endobj 50 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 457.001 231.06 447.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 52 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 446.001 169.28 436.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 53 0 R /H /I >> endobj 54 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 435.001 219.11 425.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 55 0 R /H /I >> endobj 56 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 424.001 206.66 414.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 57 0 R /H /I >> endobj 58 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 413.001 194.83 403.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 59 0 R /H /I >> endobj 60 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 402.001 231.06 392.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 61 0 R /H /I >> endobj 62 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 391.001 169.28 381.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 63 0 R /H /I >> endobj 64 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 380.001 219.11 370.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 65 0 R /H /I >> endobj 66 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 369.001 201.66 359.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 67 0 R /H /I >> endobj 68 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 358.001 194.83 348.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 69 0 R /H /I >> endobj 70 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 347.001 231.06 337.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 71 0 R /H /I >> endobj 72 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 336.001 220.49 326.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 73 0 R /H /I >> endobj 74 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.001 169.28 315.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 75 0 R /H /I >> endobj 76 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 314.001 219.11 304.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 77 0 R /H /I >> endobj 78 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 303.001 212.45 293.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 79 0 R /H /I >> endobj 80 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 292.001 247.16 282.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 81 0 R /H /I >> endobj 82 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 281.001 194.43 271.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 83 0 R /H /I >> endobj 84 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 270.001 169.28 260.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 85 0 R /H /I >> endobj 86 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 259.001 226.6 249.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 87 0 R /H /I >> endobj 88 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 248.001 142.77 238.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 89 0 R /H /I >> endobj 90 0 obj << /Length 971 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gas1_9lHOU&A@P9n8Y3KKWesRgleV$dR2K`83JdmGer`M1,^j6$2sN;0Z5l'C8I3YH"NZH4C`H)D/MO-.#bjW+[T>Bn^2%a+?K1_oT0L)u?7'<'Uc<.IgYI(MXYSh0b7UseQ*4HA+>@ot>=.0YoI#q_d9RA:nfmE="Y]=WF]2C+F1.:S5Ptjk"\nDH/A/3%'Eaf\B&b/"qbEg=^47!#no2XVcga.TRAe30!LU%FfUH]Br5g^OuBPH.:?gGZ2J7ZhGJGWph&\0A'BQ7^Ea[i-@JF\X6RMQf*R;fF,"?Bp.'LHK8,r^ZQ>M<6J\)!\Q:IU03Ya@FDimSA(MM0+Zi+>n^7Y#om:hK)RFBB:X,nb=qJ6YCaT.u>UW24(%@8__iKUmj!F:YFl!J*m_#m,Pn9Tm.FO0TlR(S*ujDD!hQN/CC3L,\uI2JA^tAI5M1_nLm$C8>#~> endstream endobj 91 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 90 0 R >> endobj 92 0 obj << /Length 2083 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`Uhf%7-&:Vr4+loI0eh[)=$,[h8@NDb@D5`@U1ju$.3n>WNY!f\>rq]L'U[BPbEI^1d!Kt&>ms+b$hFB&6=')m",;5!EQ:9YFHf]Sb=+TP(T>4Zc_Y;J0(MUPSp.R^AYask)\7pQ0VJZ:H.-CDtTUA,k1rnN+qje3<\;K8CLZDb8c\l&3h$N(1iIk5rA[Gg\t$K]rH3F[^GJE@ci-o9W5?NJ)%:g_,>s>E>UnQM%0&leZ@jH,RIpud66mK:";sXK&@&88`gtY"9NG/D-[7X>(,W8iRljkFs@0*)F(P0&W,^'AmeUY[3PmY+.*`-nC!L.ML_/a.Ense3C#tYg1aLhGCq#F8S"DY\`?$F?hCuo!^JHsXSg't5\&#n;i]fn4T/ea.%7Nutfhi("INMFD>kE>`A+rM+ZndhR]WV`=7)So/K\9Q3!&!lmUfl5ZfeZ4p8-@3XQN?Ld]PkpY.g0$#:mUdlt/'8.l!NPCDp5am!!2=_Bl>+3120L'l2HmRZqht$:0E]G,cmK9)F-Pr"a?PgTaB<`a]@%O04b3`6;L-/TAFRpW%J"hLtL7C3.-l2gg:$q*9h;2^Q]("sg`7>7bc3IID(WRE"WRo%=Z=-`k6DI9SDRmW>MjT!9soB\5AEf\)>i;+(k%4rpWk\>*Rd)mtrZV8[",NO)%J\ZIoIJM%OLRa&PF2ke7Rnrr4VKGl2*,si=!;6gr]QY[jFPV&RMa)MF9]%2a]Y"9tW6po'#Phg',SjpQO[No).J<;iH6%V?qVjS`(,/O^;>agHSb1W<"W!0U>knB+4'4aN9?:Dss+PV<%.R[:8:K.KYY'nBi$5?68@'N[b8J"lB8$Z*JF($YiF)^q8KBn5-(7DXZ(noEf[a_=UR]\RQr6dqe%(!ME]udD*1N(*T0;5ep:h=6kFfI$)DG@;MMX:/N4YKI!la+%r#-]'@4h4C%id963q3e6(+#Uo-tgrGejS2;RLuZ]'d=2L"aZ_oG&,K2P?*S#W'TYuWs^[59F!96,BbL^$MEOEG`s3tg;^f&`L2Yq)J.r/7serVV.S,I/6]fiY.h^O/&mO7EF<\:nL49(C6c9AqXa">C>R?#Vk]IS/-=5g1#=^i8Gd=dO@K-Y0P:Zc~> endstream endobj 93 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 92 0 R >> endobj 94 0 obj << /Length 1700 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm=bAQW(&Dd46gf5=:@DnKR/\:-t=s+!+[X`SRG9P_*,?0t68PY@rI;+fZLPeL)Llk+oC*%#BUZ%a(bBi^N/&k4%TO>=U(;]RG^ro"Ba?=RsN%dO0?ET@4Y:EI-pWIKuol!_Wl#h;t)@tmfX3LSR]a"M8dNQnJO5PaDs`$bh=-Ml9g\:o@ms(#iQX6P+>*e8VqTmHeL\li477j7aIBKEtb0PHDB^oTM[RE<6I&0Yq,lr$Xl0BoO)!16bT;8$,KFR>k!hK:q1dF.@2h-GKm^dl884=/apD+9O1Sn^)9T$*[D\;8HRA4^GG2Y.3J4:Z4]9n"M0IK[P5&&[USOCN/N^Ni'KnjCLho:6$/D@/F6#5$1C1m!cHdi@@O+qCS<]_+MujCA3@o:'4O`*gkQ0E_.0pQcOo2a&H<,-q9Wn/OQF%D9@Z47$Pi^PZdd^/8IZ>#argK,<2unnoC?qJ$X]q9A/[2n]\*3l,IP=]6cRKNk(Z,\K+225AD59Yc&PcY!V]0?&.0oW_hQ?:!@,U@@"R++d\+S+rjfJl=-ZUFd&/2<&)32P\40j1s1ZOYS@dYWQ#&-ZTA`sXA2SFe=?0h5]dS`gd^A;/h#nLWSWO4>h>]dNSA4t",*g`b+oFbA4=!^0Sps]Z_I5k?TsS)Gg=;Z/kS<,`#.=4Nd9BrHc?ubqUomoGqZJq>Zg91KU7CtYn#NL*,Y+,kVM6p[%h%0u/SSZo/q[nqiSV&L,TR35&/pb_5LXML0'G0a1n>j=M@MCfVjl3dli)O`hQ^KIU1i_CAO`fO#PCh$'jOp%PC#4ce(XXK%>\rh?Q-!O]P.W$]`&C8Y-^e;hYd0IBh6F52dE;MA:(q@6>n27XZY#ftgmh][sQ(4A1b+fs;+/"E`2%cpK/[1c85Fn?nR&A*%\PO,-OSNiLTIT4k`Y-Up:lV08JK+PG;Gm.O1%qeT2#Ku)<;m"<)-S?OTePAs6)C@0%B$q"d:2hjN`M@-O65+6OXBih30CMVpk:cn*DQ^#pKZPJD#7I"g!N`l1&WK-6:02^Jni@!VQunC&)M7;^'+d?i#@Q%U0/X"R:);e.A(2QN"ZKr@*XSJ:RVe+k>m;^O*89VDAAXHen8lVn,*^"sLmG*6rd<;N^T87OW.24RJ$DP5b.GYFc,ced/@3<&M_FDd&R'?l*_I_=O(`FCL)99!GriE1J"0a=bNp#?[SH/_E<%/GON7:naUG-'kH`QBahBM%+$<-s3<~> endstream endobj 95 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 94 0 R >> endobj 96 0 obj << /Length 1355 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU495iiK&AJ$Cki`^d7\ltaHYS'JFcf+T7(\e'Z(PsfAlk;2&tNk8lUsg63Kbgq:(\W-ORqVY2cT4.amI;nE/7'G,jUH:W5Z@C8>TK^.MV.V4Jd$m[l^,,b"=JL@M5tj]kUJN%pg6,X0WFAbu;qj/;_%e,@2IO#P@>^o_.E04/UG4Y$"SERteI!K(&LU:jj8Zk1"'_QoFM=te-\g]CfES$e-J@)X'EbQak$ie<#kcQA94f2Wj"T'fatG$K;jraO=CT#MUKV;b!1d[mHpGp3jflfbi3=g?ouqJUN6pSh"dE-Wiejn]3#HaHANdEjD>SfZ41H?QCb-M'A[=G$]hY*uj\X?e#_'Q)9G_,b^8F;*ROT7j-qF$dL#)f:cCuN@JUt6ZOcgFi4Im=b/.e0ffGR5F_?;j)"^6Ds5>7kP-[U;a]`Ofbd\al3@1;MoPW,5b_DaFknlR>;RqFa:AhF-%O#GKH,WkoU_\*T1N=/pH3'+T-gGksN'lEB*`6[Zfa?oJ5>X^#K;qOe0YIm>pF=T*PQd.!fY68icQp0l`S80kfurblgr+hbT6/$5Yb;+qUOQ6Ob&er\CPD;H1g@7FE'S7@EQjQBF]L?,!1`Buo::2:/m4XWRI+RS2gs('f^c+F[G#%_#4;7J``Mlc$Al"Wi2UeS6[PP6HEfPHfFUXdFiOo[0q?t1k.GTa&/l_$3s/Hk%Sdp/I"_%?PGTR:ZXOq253[uc)DcHbU73'Dop/_Y3&?>=l6=E=TgN(B6>T8k&H%4m!5Ui8=_@rgDmIjfe;'m&RME'Df0p0E@9'UB+_:"mYlk.ap)L[FbP6k1ZK?M5."1`3!ZO+Cc!&.TY3$$:3Zm18d]c\#2H/76WPJ#Z?<*H]T(kGfE%^((b*(9(1'+%'-O'*~> endstream endobj 97 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 96 0 R >> endobj 98 0 obj << /Length 2063 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!;d?#SIU'Re<2&Gf;&881rYlJ#DZUO'.l;.eFoF.^mT$0on\A\!dYlo@dAtsHMjrJe%j0[,qYP2?QP.\:?.ThGFFR`QH!Ri5KGHM5]=!Z!M8U+T0HrS/,^_o`9Hf!r`b`jB=J+81+r(rWYH\>n1l?o8hT[C^/2`?_$kd[leJgGKYb`PaLg9ffXDbB]sVbQ"]JV_0=Vu$-fo+6&t!rjcI&Pm$NrXXFkB[e\hZ<*.ckf`Gg=F66$*\/CW%u5RR!)VOhWO-:h!1DsnFbA>Tl;j8em4J81#B-NDdn,\+M4YUfjXU8L2!m4&-;(.`U\WS+AtDuY.UdisRd:ATG5hPhq*?_-!=;gno;oK4>hd]qUCkW68TUT"EJS2%E3N^6c[iYLNu%UWA?%mpGkDi+Nn9tMF_K!\[DVm[C]1q9/gThE`U_CH?)keHgmkrU*a^8f;oj[gThg%q'hu^qaDM%Z#rX+;F(7b'fED+MPbj5SSoK_[j,P9qWTMkuE$p0g=?.7L<7hDQO?,Lp=<,X$FVLHlRXgFRSY*fQt^^l8D4A"]>i\q18U@Xu)';gPVcdR/j(QsjunnV0r<-a&\OYD0Kb"IEa%aBQjBri4K,lMEC<9$j-9>j_n^`/5`(']-HK`QFP^9OWc"71oj:H]>e<^eAck<:CL0H#;"jR^=u`>`F#7$:>HlVQmF-^K(/BKGEq3!nib1Nktr=U.(t[1ej0rW&+KoDG5.G&]/i/pQ2FQ<$D`=-17W("$:Eq)lsoO"9ML&>$P6WO.m9]`I_"H+=88C;+M0,p%KROD0bVLSHhM]W[m')Ua?q4,hSlJ4I1+4*^ekB5r]@qNu*VdS*3j99-ANe)Yl#iU>b.E"elgPg=m,LLkbs0Sj;q"8;B.;K@D4?p_'hB,n?n=^9p6H,%NV50`>[,&:GIZ(W%E"`bPT`E&D#oB&4^H4X%r6Q%cAp'73\XV`#3kJOap9#,c\)),f;[oDb!=T'K0=s":9GYpapa<1ipl.JC*oRSRehLrre]hX6'87PP".[0N#h('48qBBp0>`l!%L5RgrIJ>__6$b$.8oG26I=DKa0,^tPGJ%t'VU4%mL"5,l0\j$iu_RH^[)B_$oB&b>9L[N;2DFJ!5"#8Rlp5?%`>BDd8MUu.J_oMLca)t8b'OU9PjFP@-8jf&1<<'/uUZAVUY'IeHX4_nSm"Z6eg?AN4o-WS2oXNle1d$4m))9>_&Q,qC$N^>5MHGYSRSaEnDB4&(&ZNY(s:`cq-S,Hn>#?3muXUjH%f(Hn9KTR+9&/qSP(mTGR*BHB6hsj'h9!U#!:"Gg?+: endstream endobj 99 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 98 0 R >> endobj 100 0 obj << /Length 727 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasan?#SFN'Rf.Gp^sB4il!Q^Hg='WVG7edmU_q9"&?*:P12Csm+9R?PM"5Yp(X-gHd;S3EZ=bMEUUI$JYsR[4m7I%(Vp[@lKmc!?m+^YHag.&.U>SuCDTD2Tu/P%V9!dD'A3)&"WlJg!0u\+1&aFb!!JDP=1eg%0o1&3B4!hq[JBbF\74b\Q[?PJT(%sR^b67KFbj&50nEhFLs,U'\pV#KCWFgC6>af02&V`l400skgq4Sg+@'Q`O8U`Tq87$RR,7l<2?6)YKdEXH\8f;Fc_PUNErL>W7<_mf^e&4H5A1Do.Roh-7X+3=n>T,8Hst).#-';#Wk>R/a0VZ$H,A7Se[iOIW*h]aQuL$!h9?JI[WA>'YU#X1bn>B#p=LX&cjNoZMs]f=m'V2EER+&4BWFQ;Zr4hS+f!QJab-_4+64>EbJ;YFih,\Y/clW%TGgo^j*>bgVq3qXOT&)D7Abhu`)2&crQ2.^fuNU[#D(9V+%-dg%g`Z$G+:fsJ!a`Tc<437e`cm:l%bH`?O83Bh*D@%_7ME(0@9DhpUlMWXO'28hjUb~> endstream endobj 101 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 100 0 R >> endobj 102 0 obj << /Length 1445 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm<9=(*G']/^gclIE[<4L`)>_I.G<_6E-JA'$cmmlM%#q/s=Fn/M$kLuOeJgM@OJ`sq_DqnZT,:uLk'5s1+=mE,7bJ',a`8G1uU-W,P[3(URB;rk*j\TBc:b;scias'hP]tJYt^$VHC"6SRXg9UEj[P;JT3"HU]P0S.ag*N"\ojQp@k''(cc5AINUqVTEfTSEfu.Yl1[&24FG-A2m+qR:]d]2/jZS=7+S,GkJ,KE?i!>J?5n-IjN_Zk:hpc@c@SUT_UR[4d6bdkW6Tb4Jj)MlaFcnnlS0JbFYO2^?p.8eMg`4j^mh-6pJc;E5U&mJLc8UHshu1c3Hi;9:ggONfci7CB]iH4TS5Kp0jTH5<6N('pl!M9#h`h@=k"7--I74I#EcF0#Y,1X1R"2CY(?LNLY9rU$E#n\nCZ$pn8C"I!Ekc#.7)C[E`+.E[d@daDg@R^pTfCsJ0TdLcu>CK.'f"3)KUT%s2epH!-];3jn9I"^^E*c-3-Qp=DVQrduY^S:$F$]fB&"Xm+dRfEI511H"FL&;D8;\2uJS\,?K-2;S*&R$3BfcC+HehLRXMm`Pm8A^SZB5F&gnEq[W#GC+9-.t6pc[_M.Wb,INa1tPF5H_o-q=NL;,Wq@N@5V]bJeNtXGXoNa`36WF9orV'sM;qF^#=_e^Pp'Wk13aj;48NX:S-Zfj;d^lCf2L9$TVG689b`B(d"De79eDPXmg?!c:[>#?JgM>6H\R/$J8+:"PWo)L$6"u."loP1.l]WNfG2g@`Jbgp_0XX6j9o[eFR^-6pf(rN2U[_GokHF,^KOW[jpkkcL#/R7,Z5cn07+oZG]Q+qM2=6`n)CCS&2*jqLB)_^EH*,US6t;1mUaI<9)kAWgQ&`pHWcq)@3n4Ab/+D3s6586mMo3tINQ5P.oku]-,^-Hs`]u@%hF%#l6Iht;OHWa99B:n!GSG=D#^M^bqqO^rnGR&NYd)-l2fE=od]_EMp[55[X7@[WLtO5kr>sU08p]1Qn'10AI#s,>:7dsAe,csi(e(o`US>U$ItpNe"9~> endstream endobj 103 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 102 0 R >> endobj 104 0 obj << /Length 1752 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!kuhiFNj&:Vr4_:rRu4V$KoR.dL`[F/*Ue4P"uS5(>\4]I#S5^'R0f67K1*YU5t\o1TE-oNm\^):eV2f0;HqhkYDI=@S0\PnpFi_a=,d/P:S$s%LSW[L:Um6GuIJ,RKJ/op!%CmBC,O1&HAOX(aid`=,D(GJ8J7+_q6r4,K3,9/md+en_+*"#(/FTH&!5GWZZVb+4=,u(lm]jF#CaigMu(?@Ur#L"mY/RXOuj`3$GpZ0P.C,fktS?`"]IEMt_1bakk'[@?@_K5@F$2&Lt"n[nh$%DoB*[+J["S!^WNIQ*M4a!12`B\"HDH4.>5:[('ho(Il6Vs"\d/"g?jbJn82^piB.,>J2XH%iMS_Y0_PVD3'^1@%`9b+J:ro--\U$I]C]WEqVE7Dbrg&;7_-bX>YpI=/0fAh\^4m42-F[$<=lu<%cP'1V7\qOJ2_8RW=-t@b3\Zdm:MolI%7Wt6PthnDVJ%M*sUgo[olDE]b#"aCNHHpa?.(,)"f2]jL[5/JrgPtUnuO?Q^"f!Mrf8o6ZSqaP6,,h*a/o_'F:"1NN+]d)kqh+4/`BiWW(g`e-^rcB&lX\P]NJ;[f,BhJkFS/?B6jNkfPUgAD"[JWJ^i\%at%X'[)F5iL>\%D#D4?o&`@43>7*GFj-V]g!T`)3<_Kdt.6N3JGb+1t:0\Q\8HF'eMomPF:X:5pNm2@Xh)jCZhn7Jgc",JKp3!dJU%+(WbJqZm*f]8Q@'T2N-fY8.&_DQFVE$X>?%mZg%]56f8kJNRQPX`ZU7P)ae,o8+_;;1"b9q(B*3OToe$GC]>P0MV1l2.kKJB2QBL-P3i<=`tq[%B^b;&'mjZ0]\'_nOnmEu2aA=D'HHd5U.5>c+N2U2q!&6bPOnUmck]I609lUj'jMgNI"k'5!\WN,`21@]ASfb$aNFSr5;fjGi6p:sa[aV%(/#KtWMYk="Q2I]DQf#>'c'F>f7<,a)Ni7%3-9h`V3W=%IBtnitJ9RUZrJL5!6'V*k'TD4VUP,aO1:ZY8eU@/8o4RlM*:1*iBL(ek(R:GcPC&0[,-LsFk77RZe\]bS3^KjB;SbjcU5bFRoTp9fpB5'Dh_qNRh&dpZ$erE(M"'&.&GY%];D28Q]mAHV8J8oC$$R\WCh6/,*_$8mCKFX]fO8R31$nE^Bao`2O-DsIE8TsCn>1_P64M?;9:I\pHoGqV`!@KE@uX_V_3lJK-.=p4i3`ApAS2"FP3Qm(=>6A-iq>kiTJ4]kc`W7&Zd?HH@3OA~> endstream endobj 105 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 104 0 R >> endobj 106 0 obj << /Length 1223 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!;c92jS!&AI=/pf?TTR3-B7ujSa8:?*-:^qs!2?k9N;(^`]1D@'H#k!3.+J&?[?)KL(9CoK)cPF#lHE3'B>qGCs6gqGdP.lB+4ZU'"A?;p($UJhQ[mEq+Lb>g8T1XS7in\0*IF\G3W+j`GflG]IhDo_j"nGSe4(Z?,b]pLEZID,R>H#SRV;lR+?+R:j_@03:n&X.;oK#?4(?;dF#[]B4uCq*C>dDW[\E&rXSj8t.Vr9E,?,Na47h4d>ir(RcXc.+T?GZMd!oUb>8gl_-#Zr3o0V;#dql+"]'(pgl"@UD>1-u^YLF&_';\.&0Hu%sRn'VPrlZ<^@`7>mXZd!B11`9;V5g`W,(5(7o\Y?S>@MTHI6T%4bDDpaN0fY^F(6U?9-L0aaM[/"tXQ8Bq.PL'nF!V`7^fVQLXd4UI'L'r:6OXOTRp+nNNfQ`d\tdYIeGH2n=Be,LPQiae>cohLK'-TcD5sr4?d*P)/+.^`k,ebKVnr'"FmCY+8E[OKn>\@raK:_o1so#>Ia\)r,Eb=Zc"s,?O6WEO)-K/)o._mNpk*Li4iiA78_.Y>Nj.?JcZ;$NISs9;,(LeheEg%BZ5.>!>j#NhgaZ?BjCK\*RJVBBFG08lBQ[mU$&`pQUYEf9c3-Yg[e2kC#@^@L!AsL2$ZN0WQe:IPn?HfHGF%!S"ZRYJA1j-"l[,8!?oW`\9K)Xh'*gk:JK#!Y4;;6eKTBDYp[it0DY=\5C:/'@-fh+H48t:?*32QqPMAdL;.:YTG^m/L]NW:T$O:isUnlQO-^C$sKn?jbqWhKoHemdH0Yi'1N>)C*#7&;R<(jh2c\[i/js_Qn,=7T2Z=BFW@iP'(+m))NOUj~> endstream endobj 107 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 106 0 R >> endobj 108 0 obj << /Length 452 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasId3H)bg']/F34MlWRF#G&$5c&3#^h'K+38bck85dKYkc\n7A31>@AU2VBG)eP=RegFA4pXOAO`X0W%YV4bG=3!N`?]\[mS4Y48]Pg]^JN0hlBZdT(I1)P;aGO(0I](iR6I4X"9q:kVV,'?aMHBK,j*JE[P)i0M\6$^C*@lt/kT&KHC,lqtSlK9ifY1qS]ZVKpW]55f>K9"KcKV0\IDB58DGH._p?-.>)B2$KfM.@*MDGe^.q;%Jk+2lbY<)G(D%L!sX@&:#!N5kD:ZgBXqNoAl\5(8"p6>q/L%GU`D!Jh~> endstream endobj 109 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 108 0 R >> endobj 110 0 obj << /Length 1150 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHLac>C>&A@rkG]X&P)XaCTVp$7i&g0Gkpm0$QG%e>b/T+1PFT6d3D9F9f7@[a40ORusCO**UO!T9Xbhi:H#a\r$+H,oOP0JptMB>:r#>2?T5YFH[2>M=mn]>Wp+!/KJ2[0U^$Vfardd+l9:D\J&rDU:*Q-8+&lN?s@/:PDD'O_\c@Jh9,j80"^,qr7;K(fMb70/]Pb/q:[qE;$ThfN9Gg<\m<^.VOoXt*S?^-$k(f0d19bJnaf/hb5TS.HuAbIUr<@UGf'3"!02qQeE:?ImlRf=pM*j,qCpGtLKcQ#-UN^9QZ3N)27hLMCl2<$#oUGi"]/q!(g?8I_);s4bk^+(g&X$TG*DTE[>>M8XtZ[X#DH/o.U@dpU:mh1IC7i&X';@C(W,;Q>S$[f7cWFHjF9gcQe"..R?(FSLjAeK>tOU59-"'4Ias!$)pU\ptiEaVNB_@3YqQN91VaG%kr'IFVSB!FY0atG_WD9G8e\!^2@`b*UXhb9Rjk/L.%mIT(%(?%5dbKAQmj+cU'>\Nt@>];kF-Imks8qr86!PfP1rf8m?u;9>Oorcr]Ih2WH/He"?QKA\0d),2]%5Vn&X9rRg@0pig=QA4C-PGd8E.,@jQ26$Tad+esV#0l`mgI]bK5pg9J"fOQF`Y@-=hf<_IY8mRDNCWBKFhuVBO,r^%h?5bs^niLBn0W.0)\d?V0f6R,aGE>\'O0hEVO^^'g+Rl3q],`,)>O3B@IpO8BfVmh,ae`H2$K[fd=-2IS[X[(FQ:V6tZ7M!'6%paQ%hcEis-[\[GlQ$Fmt\mKq='0\+bjO#E$!j8VYDZdZC_"YqlgoUe>PT5pKcf]:kfAQW]p@$_UpmH^Dp)BYQ~> endstream endobj 111 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 110 0 R >> endobj 112 0 obj << /Length 1243 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasap?#uJp'Rf_Zi6chK<^IFNmSg\kB=$(R1l9uOb^(W]A!o#.i!A,LrUgmIL+<=ma\2oT4nn!lUFZ/rC@T=LmLY>]Ze@"8'.o#mbo^q]>J:g(779,9`;+>N^8M!Jt1"T[k/eK%:H7B=>/9-Inij@L[YSDUt:V_"VQo\X5c)gPK8pTD4D@kJu$BM#e:-WJL)B*a2@Sbn"9$N^WrL,@H@#@n%=T?c4'Amp?UgS(,b5=j!3&U`L-kY>iCd[."PRI:RB8d6%FQ[.JH7I(R4t$1[F-H5WkE6n&nRCf\A#.AoAZU,##+HF6_oh,.+?LdT5:S`-Rh%[@P9f&W8Wh;8jpaL"&P]7W^!J?T);#Xc8sP^N4kNrKd]pr3rap#ZHj4N-0?7^*:E_B0'50U/2CoE\mgo%Ver"JPV"9k'"VREgs"m_@SW3,BlVG!VPNTS9?bp!r@q+.)Ft^]`2-l!j+6)^6]qgH<_?5"1"o:'q7&boW\Drl\)!g[Ym$(ObW.s]9D7t^PK+Kcenhuej.a#;MM+u,rH="kY;,.F75uok"4N5DSkkMdF+(;n0'$qRiE0b;_H'QJ/OhUYEj);:UC0p[9L?78AO33/DB;#l>YWL3_>:CXE.\M7?JieLq=iqJkM(cIRu^qE9TM>AX*`.aFF@a>gc12;*UR6%_)?u(^-cD(*G!oL`ITg?EK8rQKI#H@#4P/!R%mZ_h('Hi1QR^tWYXRDp.Y38Ck0`U,(c/lQ[:_+/%qAU2HKJppmtOh+'[1(Ki1>`nX-OW/ZR-<)4& endstream endobj 113 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 112 0 R >> endobj 114 0 obj << /Length 1631 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D9lJcG&A@7.kS=D:=HV*GM`kmg?S,)^GN1h;iZ)X"ZAD,:.oAme?b_gOR6t2A($mOk'I'YI(q7\tQ73,:j=I=fC,\=[lmMS;I8TOW9GDh[1*u")gdoR#OU3ZP%t.V":'_(0i-k*C\G.F&>JV-sIWI6BUSV(@JofU+CS5%"RMqcJln%563i*6mOfLj2V;u]pW66@a0p&I-``Ujm++kNcm)tM4u*1)WJ5\P,q1qO-o\^ih&M;Mq-)LMn,R],/8nt>h,[PN-*9+VHLa")4#YWnk'.o9oX$k[;"D+A=]pY]PkhZC7ZrI'QO:ViYgKPHir4:1>sID/&b+K8"8B%lI9Mjq;\-3Di'o,NB>d%mqo&uOKSg(M70(!Vq!kfI6bRGc]hoN/=i`=WZU.[\VK=e:pN0jd\a-1h3(rKRi9iE2=K5cOj?hE)OBO5@1Uo<'I_<6XQam1-<\kJF:=_.2[#gDG!W_XX:#l(A"%.3+\BD2mV`.K$YT#Hgi&GjuK-'f,5jcmun?l6X;K?m6BD/nqiIP?iN/CK1g"tuLka9%1mqg^AbP?M$E$,YPdSAbS?A+b+JKHXe]_U"`:?Igq5P2=`0_u>XiqJ\?McLM)^7Ql#WOa>Xn)Yd7qJM6h1qa/3Q0GCE7EpeJL]"h\md2%K,b,!>sHiao<9I]Or6=L[jZW+9S&2[APW^#KN&A?X\LhI1cP`%hPE"R[7#3t.c:qk5Xbs43tD-&[W>QHV=\d#+JQ60tf)k]__+YApo_c'TKf$CG'BWd*R_9F^g"]6p>KQ]t(\^G?lABPj\@TH3%cQm;W]A3*V&u)=[r]/C"<3!![;9"ua>eM&1WrLnWm3J-"4a]-"%LnN,$4j^^Yo,0QaZ@%%a_pWKt%L]UH'\T@7JbE==kIG:t]KdP@f)"tpJfB+_8tMs_*p9_nYgLandlBOfYn>]-.Im"UY9:8dW@#SZ$`p34a[lbTD'6]CG=o$+7<\iq<$MLXYX4eD0AWA7=N@N?"p)q@>'=:d'JGCiZ'ZDb7E&Jde=ca>lJd^kt5)hu(>li1T;h`11'3*>%X0!Q1$hY.'kG_hC:0Fk`lnmEg[#N1!o/)^W]&NJ(7fu@.N-$AO>d6J'N.1NrrEepnV$~> endstream endobj 115 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 114 0 R >> endobj 116 0 obj << /Length 586 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasIe9iJn_&A@g>j9Q!+dO$EnRklb`kQ*):`,Pj5R\:EhU5o5!e'Gs9o[M.Z]sfZ,41RtrET4ZX&>U?STFXh(q"Aoj)i!:r'rl8#m.pQH?o19?eO\W>"*Z,#F!!P[1MgZLpA.K^cl;d*3-co;\1m_#'dsUkW=:`4m88]GW=YQS!KIYu/3ZHB]G=`6+T-2XLCfqA&\68?A`AUeOarZ?/:Y*``i%)F(C+0T[qBamalK?oM#7B3(%9rR\%MJ4q]1dLm#alJkJiIlYUtXFD]'?A6_Ph"pZdf/"XDfbpu,L7R<%\`n+BH"ll3\"qG$+lpDJuY>d`5lF>g*C6UF:Tcf@id3XDI3S!;2b*;^lrCu=fC(5L[WQoaet<_gMdR]SB$m*bObkks'o5MU9OZd$c:5@1k\Y(hq,4mE\QZbr5Cp>#)`c[M+B,rfT8dG.e\gXCS<0KS_X[A0TrnIe67jJ2Q;8DI@o:Mk>`3GJctB=4t6R2IEUCE[MZ^&^uf5(`~> endstream endobj 117 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 116 0 R >> endobj 118 0 obj << /Length 1596 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm<>E@K-'Ro4H=K!`9b"g!$4-^]r8s3601h!B5.Scgk*PdhVCCf6,[JfPW@-fm`0P6N+(XI%Qhmn.kp?R"m]/QU!=N'f)D8,:4D;EYu$9qg;%72qmo8-tfg-!qM%43$[$(_[8CVt:Omnqui"qFM^o*nb[DFGTnCNV9;(HK[2L>$9Wr\Ird24]=X5YuaXNST?L=@@B3d_.%\gUfZS7;]G;K13;=1QQ,iWbBZsC*im^a**n4_*JHL4TYm!h.MBP&e)PDXL/N5ZR\[)0"-&20:ukia7jumb+gS#7HNC"Wr0#n\Ql$-h-RZb!^2-D\iI_tWd*_RM;cgqE[/g3oMSgC\XTjo`>ln!BLWb+l,-B6TciX?]]hm7A0^350**.*aNbrt+EdY`,\m0m`/u<\C:,s^iKu;#.Zb'XLt0%`;]Qc_rBH`$T]ErFrNnh"Y!sJhre]Z,:@a4Wr]"O?Rji/bA8btkhiD*DMr:IN=,F4tC#&]OP_2@"0s\`0o55\^;hPkg6_BQo_7TM60'D9H(GMiOA+rQmHRo^%^*lZ77W@r'+aAKX! endstream endobj 119 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 118 0 R >> endobj 120 0 obj << /Length 1842 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm+T$L,Ie[3(i2HYru;odXCu6Q>Frd''4("?:9M.O/+1eo#(+Zp,R<#Md0o+]PsFl"a4/H_[\$#9ShU(EOFkT@Aql0oCM=[Np!8Q6.!C+cM29WHJ?DWKEIf7`d`,,#5rT*]34$<3;r3(9g^d%>_Lb4+(P;03FN2c3a!<0Q?$+D,R0a.h9H52UH>;XI1cl-=*_SalJ-&N"A-(THH/rcPMH.UM8EM9n'9,mjCNgC(aST0U/47^!!R&/g'.?5_.;nS6sJZE1(.H<%CGJ0u6&b^g6ss;#m+mb?eFd!*$KSQ-]dR!(QE1Nq(249XgoYk@JK3%h3G#YqoE%K.agM7oUo2@ik7coLf3nfX-RU,#aa&7bJIL7Sbtf7Jed%CpL2jCK0@W*)+ubPBW67i)6e\Nn&#;+,qlFHpiU?nD^^ah_1q>Jo1!ge=XRH4sPHo1W)X%SDmK\h!`roMBNRbZb*RVFTG+E<'^*LPScUI][,M2Kp>9Gi)BB#'Qf:/[R-DVuIS6Z9UVs34k2$'k**XMEE8#pml7J4)jfr6PH"TQT?]"'#:/)kbpN)PEi$#,k)A!&Z@$+?.6/YL5Pbm7_@35Yh&DrQ"JbP.j.1de$$=%[C#kn?!i(_KLLpS&^)]DEB7_N2Kl+F`<.-":l\%OqC3io"$m8^@E#rQ]7/)-nQo-ds/W"eE<1F7#.,P6`eJceMIdlR*(RQU%RmGdaB)=cLkYOslCN]lqU4!G2ETm_E1Su?i,[P[n'3<9J3r)kgaB3+<)84Tf2TiLM/q!$/Wenc+&]HpXH7\@4\rUT(>rK)+Cn>Vhf"Ba>g>,rWZRZHHjpSo,AaO?lL+5XsgKO!Tm=]Ebn;o8Y$V's7P9Adl(*(J8W0?EFD(r2P$B=p!i43sX",/jM9JlgrQ+o>7T@PL=!(FRajL?MpohMlY1_*gYi^f<44#l;ZPA?Mnj60K!iI+-&_Xm;r]9nV`g'=uo=>Q$I>/huXG:PA&Ibm8jq]Be15@:&b7:DhMK~> endstream endobj 121 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 120 0 R >> endobj 122 0 obj << /Length 1681 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHLD/\/e&H;*)+UBK(@h'`HHtcp>$sqOITU+pMG6/6AD*7/]QDeUhhe'q8u<;8+,0cHNoIbAT&\WOIg@Fb*utGfa>1X*`%j4aCfp1^%8.V`VK'jOio^;(#=#HgIeGEOVB!+P/*Xg"8"Soe3VJp@l5ll-i3f0#kh)6]T[MfKL,aY"h_.V_E&=$,P<3Ma\$`UQ_KR:.!Z4'J[Q[!guHgC;HXaA[/>5'&6FcmQ;'NrSe/1XNc<`^;;Kij3'4FW-U120dkBVoT;TAg[KjNCh0`^s2>pfQsmqimAgau1l=&#]Xc3!)nrf+*o2eAk:-b;]Y5Y#V+`=[)j0+*4l!chhDPWu4X,B_<%">.fcjGOa@IpLet-@(CTsO(Mu\]?k2Z"t0baY%rQpm`hIgXOg@iKM!Cu78Z$Ye=]Fh)gOr(39(R&Oi*JmhmLU%549f6EU;7R>Zu$Ura6I!2i-\RT8N;/6`.p1S0`Ko(b9V8BI`36"4S)lG--c"X*j/GIZ!,6nT&!hcIk7Lkok0-)m&G*f=:E`e]L>l8*$TMm3oD>GW/sFOVf.>Lf,b(qJM%)7&JGUUPk1ba;6h<3^Kf#6Z+3't-aHkoOfR]/Y3JIYHk]dENBa#1.)L6;HmE0.IDb5:HI_)/d3Y6Q5,[kC2:*odc22f'AWP8W=N:(aPG/n:o`/[64RJr[k@ObNN]/1]Z'h_i?p]K$q/?rS2-U^e*YaCSA/A]r=^G$jKd@KqL"42C]q!R[g=.sUjs+VD(-/5HYR@e]FZX3TlOA4?OiG'"[Tdk@ZFF#=SF*n.P:kD6;XeR89s%c:9CQk2.6PaB_o"PRC3a7"eoJZOjX@C;noEKo&TRbU?H7o,K3_k]\>-B7CEh/k!=X&R5Jc$X"NUPm!W0aI0<)>YdP:b#U4]nB/4JCUFIM'2Gm_Yq%W.m&]#%4*BuaF^#k!#8F__.k^2_U0N,!_G#iMjkjgCdc=^B/G:4P6tkF`hd##eq%SjLJ'[P`^#Dj)G#bS+/(+"`gZpLo2`I(q^4)AZnotKhW-BJ&$mcA*8cu#)\E%NidT:Zr,K!+D3.Fe/BJuNo8KO;jmd"Na`s(TO.AGY=H+\iLm(E+=ZnVecf`[2,5$K82,/2khd0UjTmtR*Bo_JsT!P*C~> endstream endobj 123 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 122 0 R >> endobj 124 0 obj << /Length 1763 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4968iG&AJ$CE,q*t%8?8noTkG!9ukM;D7Q"5PCY/R@RH7d#l2kT?P!3g,m@Im3kf"OphFM42S_@;@iJ@-bJ#/6&!]+L#-XZYB!t!Q+\>X6Z_+9$[^sqT`i5/N7SO6YQc2B\X&HW]-X)XPYnBsSf->u/Z3DOdAEue887=oG[Q3E5n#>H31!&Y;onN0G#Shitum2fc!AggK:;'.=bA-j!EV,c<@Y(12Wf5*>&Oq4][bNG^YqV`OD"Fr$_2g&>H:M>\=i3$*ZHCIZ-529H`@:UPk;.tO5;:,b4*9&N7IB,!DqFLjcY6p:@TphK[Ie/RD90N^fo?']ad+`0WPMWR]D(bF;7-%%e_Cf)^1h=/.V3mcg^\F9UN`A(Qcd9;qt0j);O3;$b(-;bq7cD>6L!Am`umK>fS4uC3k\$H8pm\af`;eV(b5MQ#<4:3@hCtq7CAl9+=ku1meT5K8QdVt5#^0)NnG]L3nsjk!#72_'s_ION&[]XN1(f;`M11c2"e22X"a@)Sd)OdH>Fn]k`LG>aF)?S0BaVX+F)JSFNlgCh^RC=0"WrTO/(U"pZ_lH_DH#fm=FVN:7/`Di9aI3GD";e-9RM2(?[2UD(JRdNICu!V,LSoefpg5+k;PbHP3]U:194(q%Pfo)hgqU*Ug:*kl4YI^;20==EMH!e!9g[Cp1:/n\+0+r5<6_KjV%Lm&ZVPH*ZBJ#_j45D%L!A!i8+bF'0E_p(SVW7e,pJF?jf^]u$f.k9AuopqYFMA@pc;H/G3904Eu`A7u5co3-$glSul]WZ?t!q9WC3q2/nE?'2$SS/6ALqCATOX)"/)[o]DS-:8p4,KgC,+To=?o*^IU:QR>6Xm28f6+HaEuq,MG6u;*WOmf[l--E?k#c7]I1.58'u?Q+5d)-YQ>>od&Jg)d)S9TtWF+%N0g#4Rdg#4)D?S/P(V0))eo>17G8O&XJZ!tTMYt.~> endstream endobj 125 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 124 0 R >> endobj 126 0 obj << /Length 1330 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!Slc#]@8&AS+Gi958$<>(+Kp6JHpGdfND]tDGu>K"`FOFmDirqB22+Y?e5aL(E_*#qQ,hsP5DIZ(biXM/OP5??E`?4i&,p*-"Ljot,jb>lNpCj!4uJV'[0$'RW4OAIPLE\(mg9Znm&9$V#Cdr"*,k'3(=Gu%%W`$:MT\-.MJ[s@NC?IqDVZ$WSIkqT4u^[hBo2Lbbtek?dPLa_eCbC$4A52?i\N#2[:,+Jk1IiXdM_#X>9^;'Qj:KQCqL`>=G#J9&pf8$C[7NFSb7/>+pjD/m"Ic,h0;?q'P>c2`oeQ'8bo?a"1/^.?SMqQgV_5/0qB'LR[.n7$JlKSDs^s1L7kuW"K,G&haT.B-pF^&QW.eqcC?[T7PX4,G>jf_Mk(R1!QJuofh-(:SS4j\G.0&]>1i6@h:I'Y3H9YC`1.lZ,Y!@YUZ/S8MPa@#T:qq*^T!7KmdnZ*0+C>2@");4iu7`cM[ei^'(f[^QWPU+H)(1Kal\EPmmJ:ABk:'4daOE5sIb-;IB@4%]&c:6Gp"Dj'>QAR5puNk%-Z8i(Kmahj_X@aEBLa\YH2/Hn.[noVBcK3C61KAjY([nDtiI/fUcH%#jaG,F&HKq!O9u3X@VA_N@HiDq+ctOfCMJWdj>*]lZD2VlnWIGDdXO0dnDN:>[)E2*Wc.q'X:ZbR6i[i6^=Zm0B#-`%L9TTi&6/Z7-& endstream endobj 127 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 126 0 R >> endobj 128 0 obj << /Length 1612 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!Sl997gc&AJ$CkdVRJ)3LY"a_cq=B[IkZ<_deBODW\a?qVG1DDqO/'M4ESRC;0F%RmXX--%e`B86#P*j`i_c`)\JjEoQtiHtG*p3cjp4\U02N!YBHQQJs$i!7+\YSP$Ug-,Mj1]TqB:I_Z^#`%\B8l1sKeHKo&E4KGYqiCS[_XkC)&2?JEJro`K=q28C'_Mf0DJ$_$_QI^.Jq.se]1l^tlJ2RO^YadRD->QQnbu4bm@(?7gU&OoPfL(>>FW;)0nK"\2u/SYX;UQmOKn%q[<:@oKXDJKW'FUP`"lWnr(%i_qdlV:.XIU>9Mbm?YsOP;glAK?l]+U>OC$^-+FP0P,eB:S:9ie0!CJjZ5i9EA!`ScDj?1Csm[,g4h7I=*IS%/=DTVn/=j@%:o_U#&2hb)MXC@P%cMJCu\h%QHE1#aFiX_UG_A/")'J+@:*N$a\AQL89\u72#^\@b-f2s4Bi/AXH@'(fo]?4Ci3Jobr(iA$%.;PCBCVPb/tI0pIc6G67QrSUmCU!o9g]_MhnT4JXkjZ.)8a9W5Nj21!PJ@(63(#`j4Zo6*GO:/f?DX&_@KBg@LRJ+FlSTqUi8T+_Df_H!B,OJS\I]h7S(#6?a_[7_'AEdeGF0oJ!=Xm9TU@@a`9^n)3/<>q$]`8[Ud$&b6d9_a5sCDh[9`&M/Q"*3YK&PPk05mRZ-<%DS&(gW:(kkF+Dh=djgi89V:Z3:C82l>Ei\&qNXb3W$DtN;H!o1:/'M>^L4`>LMVQ!<+)#5nAZlLj+nJ+).qI3KK]Onc6O-Fk?q&q\bl-rE6)0t$2+;rI(Di6tO!(>0GR0f)F?`ZC(hi!"MBi[ji0tgf;?_UC'-F3@f3Y5FM0c#Oe`gB)"TU*e`7<0NUj*<)C:_"JJafM=firg]hB/$BebukS4FXB4;!I;UO&:25A3'_7NBX+7epcN!^cOFCR9RI&12t+tfk[)-qTL.I`77grMYj[*;:eP*ob!3EA((Aj2ImAIBas=>,a@UADgo3WM^Sq8Segg8Z@A)_Wm2g&62DCZ3Hd1~> endstream endobj 129 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 128 0 R >> endobj 130 0 obj << /Length 263 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gas1X]afWJ(u5!&h["kB/Oe0O6j>S:2rfElYR-Ut^n8*FLp7tZl#K#%?8!%,T#Er$-6Od+TLKWO4VT:``Iop='+bu4"\/3Jhj@MV,ZH0^WVGmn#oOO,I/+d8r0]ulPcc$FeA7C3q7CO\EV-^l,1LpYK__O(;>8KH]09R>~> endstream endobj 131 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 130 0 R >> endobj 132 0 obj << /Length 907 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU2hf$st&:X(TiQ"t#cTgFmT%LE,+ct=^]MO8Jla@C>dO!2Wq!2o4Vfiu^l\>8a]A.hlqhUR+1N\(-/-KW,RquH6l>lY*HBduj7;e+68Jq--I7"kb]#1/D*<7W5$-2jt6Jgm42V%L<*&H%R?&?D.N$ii*1:38'Tn%`7^fh+3%S@%.PFK[>m"F@h5N%uikg1X^#C_n8'NF]YR(cUt3\:j2X$BnpKE3R^\WH1sb=h"MTE0bke,*2W4k91!ZT0qZ2[EqAu#p@e(;[nhuE$(B#rLA]-(cLPGhW$-Cdd0BTLB&K^97[:pN^9[<0^Ci;.!.BW,;1-cqb?rmL9M)4qOUkY:.0AB[RId84'7J/:eCRCB/6<(N>g4\N_GPTrS&$&]D4s%$79#mNOhY7VD#OR/=A1Rd%![D,s-e(d7GB8[s8bmasaE/spV7n^=;K_qFFEGd'-AKTC"M(-*DUk79;*7_4TG4dAR1?p^k3D-0eaaBeF#8f*lZ="M5V;pt_MF$NelRS\8[s&&C5Oo)bPlC^a&7^k~> endstream endobj 133 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 132 0 R >> endobj 134 0 obj << /Length 1408 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=lhf%7-&BE],=6Qmi2GH=5e75em6\i,&3^4$$MEnFX=/]rGP1jIFl[-'NPG1gL1'C,Lj$$!(m`W5;n!8mh?LnFjC^cAjRmds,(G&2JLIE-@,Z5tKQ-dp!(O^]$B"uW`DPBqSnk\=W`"KFBC.K`b1S&^-0/q:^+HL+fi$LM`F["76Nu0**j2>SNr#*:]D`hJQ(@L&KN4:g<`k]3gh$+Ak.S`]NS38^c-;X!TSk3_4Wb)6fYWu.RK7HY+"kmbs?sis778-0D8eWSBFnf5j>Z/XFS)4"8X<*+Q*c0,lgiHnTHk7sb*k8W8Pi%qU6%XY6b'Y;<:RJPno5$SQ(a;\/:iI;G;jV0T+1["@&lHXm9qHh@!`D+q@s3AF+k2Sb6%V09DtC7C!oRVeYqFbc$SY:0mSS<4R8bn"-8li)r:c;1\Q1HARa-5E*SPG>RiJ<(CW;W]Tr-X2ECC!N,K5`n?k[&RGF6#kK*?dHE/:f'IIZSPJH0a&\r9>f)c@D$hH/?rTjRubQ^ciXS[E`^F.g'2<1BW+LFjjW4^hg97>JVbDNCic)*nuc\sX0-"mNOA3]o'_8V5bjG4=hEDOJmSl[.sBS;,"iEX3("Fo.Phen>a#_HmSiWE5qpS9BSDQ5EY:g7Er)-`T!4TrJ>oGSuJ2L%%\e$)FQ.pSoBNO*0\r:DH50db9>VSV+7YRPk(VqOEYIWil`(8$ES/A2tR.M&2UqgVk5J%qLA=m4^iRq$!C;s!)_H@Y#coS)aNGWd&@["\n?c3t:[JC[5UXX=J0O?/DQ%^cc/o/Hud"A<>\RQ4'jf#?Tnq3*d7R.I]`/f;pp3%/ofNac/%U166s>_4UDkY(;M_<"(bA$4/?DqqbaW!f@OE2XgjQZCUcE%DdO?ec1Nh2)j7cFI1kqt5pHEFY+A\*m\\^UsGg"pWdaM6*TGZn.R_3r32B66t"PZLrO@oV$0@98/(3$uJ.=\>:MUk:ml+e)XXPJ64`O1A=JSlMK*tVh\gB6MkRX#NDn&68+7g!Co*AkaniJ[!BNn:92[V5=&uc[Y7\]kCjK:alG^91\S4FT+pc,AXs7eg[sS-Hpq2t:_rFu=`k.=4j/5TgDS2m6cq]`G(%-B)`3uh;OU'dP-ih7"ARqBb+hIJp#stLA-+qTDY%rs=NZ"*48,c)16YD)T%YQ2PnNkn824h+P\A`lXI.?uH`2jN]?3`^XkDW8#.-o<=2#'DO%%O[p&4FUAT@)`h>;_bcn7M>C?T(M#](cpM[)rSkFmqC]sD7F\VlY]!SVHT2fqnf8,BPurkgr^cO5.F1Ql4<5M`NCh-l]'Mj.R#(LKsFPb&pn>2XJto_f1Z`W,3cg+<50gatZN/,4HDAW3WMnH7%~> endstream endobj 135 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 134 0 R /Annots 136 0 R >> endobj 136 0 obj [ ] endobj 137 0 obj << /Length 550 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=i92C1*&:j6IMESD)Y09)gC8-RA9Lq8_e'PC"&dl3dA,Z.>+3Kga9/R\3S,GN_L=tNDMf.r/JXFG&/#/I_,9X8+J8")s1b]9*A1R4+krq.0bcKLA8o)Z$P[$#TjX-'aaXbIS#A=MHFD5!hSt!tdi`R8\<>qLi([\eRit@me,cf]PhF8/T.LE>MamCCYe0e[o2p:af.A6s#c8] endstream endobj 138 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 137 0 R /Annots 139 0 R >> endobj 139 0 obj [ ] endobj 142 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\123\0\164\0\141\0\156\0\144\0\141\0\162\0\144\0\40\0\114\0\151\0\142\0\162\0\141\0\162\0\171\0\40\0\62\0\56\0\62) /Parent 140 0 R /Next 144 0 R /A 141 0 R >> endobj 144 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\157\0\146\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164\0\163) /Parent 140 0 R /Prev 142 0 R /Next 145 0 R /A 143 0 R >> endobj 145 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 140 0 R /Prev 144 0 R /Next 146 0 R /A 15 0 R >> endobj 146 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\62\0\56\0\240\0\124\0\150\0\145\0\40\0\111\0\156\0\160\0\165\0\164\0\57\0\117\0\165\0\164\0\160\0\165\0\164\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 140 0 R /First 147 0 R /Last 150 0 R /Prev 145 0 R /Next 154 0 R /Count -7 /A 17 0 R >> endobj 147 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) /Parent 146 0 R /First 148 0 R /Last 149 0 R /Next 150 0 R /Count -2 /A 19 0 R >> endobj 148 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) /Parent 147 0 R /Next 149 0 R /A 21 0 R >> endobj 149 0 obj << /Title (\376\377\0\106\0\151\0\154\0\145\0\40\0\143\0\154\0\141\0\163\0\163) /Parent 147 0 R /Prev 148 0 R /A 23 0 R >> endobj 150 0 obj << /Title (\376\377\0\103\0\40\0\101\0\120\0\111) /Parent 146 0 R /First 151 0 R /Last 153 0 R /Prev 147 0 R /Count -3 /A 25 0 R >> endobj 151 0 obj << /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 150 0 R /Next 152 0 R /A 27 0 R >> endobj 152 0 obj << /Title (\376\377\0\106\0\151\0\154\0\145\0\40\0\157\0\142\0\152\0\145\0\143\0\164) /Parent 150 0 R /Prev 151 0 R /Next 153 0 R /A 29 0 R >> endobj 153 0 obj << /Title (\376\377\0\123\0\143\0\162\0\151\0\160\0\164\0\40\0\154\0\157\0\141\0\144\0\151\0\156\0\147\0\40\0\141\0\156\0\144\0\40\0\163\0\145\0\162\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 150 0 R /Prev 152 0 R /A 31 0 R >> endobj 154 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\63\0\56\0\240\0\124\0\150\0\145\0\40\0\102\0\154\0\157\0\142\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 140 0 R /First 155 0 R /Last 158 0 R /Prev 146 0 R /Next 161 0 R /Count -6 /A 33 0 R >> endobj 155 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) /Parent 154 0 R /First 156 0 R /Last 157 0 R /Next 158 0 R /Count -2 /A 35 0 R >> endobj 156 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) /Parent 155 0 R /Next 157 0 R /A 37 0 R >> endobj 157 0 obj << /Title (\376\377\0\124\0\150\0\145\0\40\0\142\0\154\0\157\0\142\0\40\0\143\0\154\0\141\0\163\0\163) /Parent 155 0 R /Prev 156 0 R /A 39 0 R >> endobj 158 0 obj << /Title (\376\377\0\103\0\40\0\101\0\120\0\111) /Parent 154 0 R /First 159 0 R /Last 160 0 R /Prev 155 0 R /Count -2 /A 41 0 R >> endobj 159 0 obj << /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 158 0 R /Next 160 0 R /A 43 0 R >> endobj 160 0 obj << /Title (\376\377\0\102\0\154\0\157\0\142\0\40\0\157\0\142\0\152\0\145\0\143\0\164) /Parent 158 0 R /Prev 159 0 R /A 45 0 R >> endobj 161 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\64\0\56\0\240\0\124\0\150\0\145\0\40\0\115\0\141\0\164\0\150\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 140 0 R /First 162 0 R /Last 164 0 R /Prev 154 0 R /Next 166 0 R /Count -4 /A 47 0 R >> endobj 162 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) /Parent 161 0 R /First 163 0 R /Last 163 0 R /Next 164 0 R /Count -1 /A 49 0 R >> endobj 163 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) /Parent 162 0 R /A 51 0 R >> endobj 164 0 obj << /Title (\376\377\0\103\0\40\0\101\0\120\0\111) /Parent 161 0 R /First 165 0 R /Last 165 0 R /Prev 162 0 R /Count -1 /A 53 0 R >> endobj 165 0 obj << /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 164 0 R /A 55 0 R >> endobj 166 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\65\0\56\0\240\0\124\0\150\0\145\0\40\0\123\0\171\0\163\0\164\0\145\0\155\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 140 0 R /First 167 0 R /Last 169 0 R /Prev 161 0 R /Next 171 0 R /Count -4 /A 57 0 R >> endobj 167 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) /Parent 166 0 R /First 168 0 R /Last 168 0 R /Next 169 0 R /Count -1 /A 59 0 R >> endobj 168 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) /Parent 167 0 R /A 61 0 R >> endobj 169 0 obj << /Title (\376\377\0\103\0\40\0\101\0\120\0\111) /Parent 166 0 R /First 170 0 R /Last 170 0 R /Prev 167 0 R /Count -1 /A 63 0 R >> endobj 170 0 obj << /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 169 0 R /A 65 0 R >> endobj 171 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\66\0\56\0\240\0\124\0\150\0\145\0\40\0\123\0\164\0\162\0\151\0\156\0\147\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 140 0 R /First 172 0 R /Last 175 0 R /Prev 166 0 R /Next 179 0 R /Count -7 /A 67 0 R >> endobj 172 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\101\0\120\0\111) /Parent 171 0 R /First 173 0 R /Last 174 0 R /Next 175 0 R /Count -2 /A 69 0 R >> endobj 173 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) /Parent 172 0 R /Next 174 0 R /A 71 0 R >> endobj 174 0 obj << /Title (\376\377\0\122\0\145\0\147\0\145\0\170\0\160\0\40\0\143\0\154\0\141\0\163\0\163) /Parent 172 0 R /Prev 173 0 R /A 73 0 R >> endobj 175 0 obj << /Title (\376\377\0\103\0\40\0\101\0\120\0\111) /Parent 171 0 R /First 176 0 R /Last 178 0 R /Prev 172 0 R /Count -3 /A 75 0 R >> endobj 176 0 obj << /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 175 0 R /Next 177 0 R /A 77 0 R >> endobj 177 0 obj << /Title (\376\377\0\106\0\157\0\162\0\155\0\141\0\164\0\164\0\151\0\156\0\147) /Parent 175 0 R /Prev 176 0 R /Next 178 0 R /A 79 0 R >> endobj 178 0 obj << /Title (\376\377\0\122\0\145\0\147\0\165\0\154\0\141\0\162\0\40\0\105\0\170\0\160\0\145\0\163\0\163\0\151\0\157\0\156\0\163) /Parent 175 0 R /Prev 177 0 R /A 81 0 R >> endobj 179 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\67\0\56\0\240\0\124\0\150\0\145\0\40\0\101\0\165\0\170\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 140 0 R /First 180 0 R /Last 180 0 R /Prev 171 0 R /Next 182 0 R /Count -2 /A 83 0 R >> endobj 180 0 obj << /Title (\376\377\0\103\0\40\0\101\0\120\0\111) /Parent 179 0 R /First 181 0 R /Last 181 0 R /Count -1 /A 85 0 R >> endobj 181 0 obj << /Title (\376\377\0\105\0\162\0\162\0\157\0\162\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) /Parent 180 0 R /A 87 0 R >> endobj 182 0 obj << /Title (\376\377\0\111\0\156\0\144\0\145\0\170) /Parent 140 0 R /Prev 179 0 R /A 89 0 R >> endobj 183 0 obj << /Type /Font /Subtype /Type1 /Name /F11 /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding >> endobj 184 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 185 0 obj << /Type /Font /Subtype /Type1 /Name /F10 /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding >> endobj 186 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 187 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 188 0 obj << /Type /Font /Subtype /Type1 /Name /F9 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 189 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj 190 0 obj << /Type /Font /Subtype /Type1 /Name /F7 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 1 0 obj << /Type /Pages /Count 28 /Kids [6 0 R 8 0 R 10 0 R 12 0 R 91 0 R 93 0 R 95 0 R 97 0 R 99 0 R 101 0 R 103 0 R 105 0 R 107 0 R 109 0 R 111 0 R 113 0 R 115 0 R 117 0 R 119 0 R 121 0 R 123 0 R 125 0 R 127 0 R 129 0 R 131 0 R 133 0 R 135 0 R 138 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Outlines 140 0 R /PageMode /UseOutlines >> endobj 3 0 obj << /Font << /F1 184 0 R /F11 183 0 R /F10 185 0 R /F5 186 0 R /F3 187 0 R /F9 188 0 R /F6 189 0 R /F7 190 0 R >> /ProcSet [ /PDF /ImageC /Text ] >> endobj 15 0 obj << /S /GoTo /D [91 0 R /XYZ 115.0 725.0 null] >> endobj 17 0 obj << /S /GoTo /D [93 0 R /XYZ 115.0 725.0 null] >> endobj 19 0 obj << /S /GoTo /D [93 0 R /XYZ 115.0 666.009 null] >> endobj 21 0 obj << /S /GoTo /D [93 0 R /XYZ 115.0 632.684 null] >> endobj 23 0 obj << /S /GoTo /D [93 0 R /XYZ 115.0 233.665 null] >> endobj 25 0 obj << /S /GoTo /D [95 0 R /XYZ 115.0 127.26 null] >> endobj 27 0 obj << /S /GoTo /D [97 0 R /XYZ 115.0 725.0 null] >> endobj 29 0 obj << /S /GoTo /D [97 0 R /XYZ 115.0 514.701 null] >> endobj 31 0 obj << /S /GoTo /D [99 0 R /XYZ 115.0 725.0 null] >> endobj 33 0 obj << /S /GoTo /D [103 0 R /XYZ 115.0 725.0 null] >> endobj 35 0 obj << /S /GoTo /D [103 0 R /XYZ 115.0 655.009 null] >> endobj 37 0 obj << /S /GoTo /D [103 0 R /XYZ 115.0 621.684 null] >> endobj 39 0 obj << /S /GoTo /D [103 0 R /XYZ 115.0 347.085 null] >> endobj 41 0 obj << /S /GoTo /D [105 0 R /XYZ 115.0 177.98 null] >> endobj 43 0 obj << /S /GoTo /D [105 0 R /XYZ 115.0 144.655 null] >> endobj 45 0 obj << /S /GoTo /D [107 0 R /XYZ 115.0 570.14 null] >> endobj 47 0 obj << /S /GoTo /D [111 0 R /XYZ 115.0 725.0 null] >> endobj 49 0 obj << /S /GoTo /D [111 0 R /XYZ 115.0 655.009 null] >> endobj 51 0 obj << /S /GoTo /D [111 0 R /XYZ 115.0 621.684 null] >> endobj 53 0 obj << /S /GoTo /D [113 0 R /XYZ 115.0 415.7 null] >> endobj 55 0 obj << /S /GoTo /D [113 0 R /XYZ 115.0 382.375 null] >> endobj 57 0 obj << /S /GoTo /D [115 0 R /XYZ 115.0 725.0 null] >> endobj 59 0 obj << /S /GoTo /D [115 0 R /XYZ 115.0 655.009 null] >> endobj 61 0 obj << /S /GoTo /D [115 0 R /XYZ 115.0 621.684 null] >> endobj 63 0 obj << /S /GoTo /D [115 0 R /XYZ 115.0 145.225 null] >> endobj 65 0 obj << /S /GoTo /D [115 0 R /XYZ 115.0 111.9 null] >> endobj 67 0 obj << /S /GoTo /D [119 0 R /XYZ 115.0 725.0 null] >> endobj 69 0 obj << /S /GoTo /D [119 0 R /XYZ 115.0 666.009 null] >> endobj 71 0 obj << /S /GoTo /D [119 0 R /XYZ 115.0 632.684 null] >> endobj 73 0 obj << /S /GoTo /D [121 0 R /XYZ 115.0 209.54 null] >> endobj 75 0 obj << /S /GoTo /D [123 0 R /XYZ 115.0 281.78 null] >> endobj 77 0 obj << /S /GoTo /D [123 0 R /XYZ 115.0 248.455 null] >> endobj 79 0 obj << /S /GoTo /D [125 0 R /XYZ 115.0 662.0 null] >> endobj 81 0 obj << /S /GoTo /D [125 0 R /XYZ 115.0 335.841 null] >> endobj 83 0 obj << /S /GoTo /D [133 0 R /XYZ 115.0 725.0 null] >> endobj 85 0 obj << /S /GoTo /D [133 0 R /XYZ 115.0 666.009 null] >> endobj 87 0 obj << /S /GoTo /D [133 0 R /XYZ 115.0 632.684 null] >> endobj 89 0 obj << /S /GoTo /D [135 0 R /XYZ 67.0 725.0 null] >> endobj 140 0 obj << /First 142 0 R /Last 182 0 R >> endobj 141 0 obj << /S /GoTo /D [10 0 R /XYZ 115.0 725.0 null] >> endobj 143 0 obj << /S /GoTo /D [12 0 R /XYZ 115.0 715.0 null] >> endobj xref 0 191 0000000000 65535 f 0000053910 00000 n 0000054176 00000 n 0000054269 00000 n 0000000015 00000 n 0000000071 00000 n 0000000408 00000 n 0000000514 00000 n 0000001653 00000 n 0000001759 00000 n 0000001920 00000 n 0000002027 00000 n 0000003395 00000 n 0000003518 00000 n 0000003804 00000 n 0000054435 00000 n 0000003940 00000 n 0000054500 00000 n 0000004076 00000 n 0000054565 00000 n 0000004212 00000 n 0000054632 00000 n 0000004348 00000 n 0000054699 00000 n 0000004483 00000 n 0000054766 00000 n 0000004619 00000 n 0000054832 00000 n 0000004755 00000 n 0000054897 00000 n 0000004890 00000 n 0000054964 00000 n 0000005026 00000 n 0000055029 00000 n 0000005162 00000 n 0000055095 00000 n 0000005298 00000 n 0000055163 00000 n 0000005434 00000 n 0000055231 00000 n 0000005570 00000 n 0000055299 00000 n 0000005706 00000 n 0000055366 00000 n 0000005842 00000 n 0000055434 00000 n 0000005978 00000 n 0000055501 00000 n 0000006114 00000 n 0000055567 00000 n 0000006250 00000 n 0000055635 00000 n 0000006386 00000 n 0000055703 00000 n 0000006522 00000 n 0000055769 00000 n 0000006658 00000 n 0000055837 00000 n 0000006794 00000 n 0000055903 00000 n 0000006930 00000 n 0000055971 00000 n 0000007066 00000 n 0000056039 00000 n 0000007202 00000 n 0000056107 00000 n 0000007338 00000 n 0000056173 00000 n 0000007474 00000 n 0000056239 00000 n 0000007610 00000 n 0000056307 00000 n 0000007746 00000 n 0000056375 00000 n 0000007882 00000 n 0000056442 00000 n 0000008018 00000 n 0000056509 00000 n 0000008154 00000 n 0000056577 00000 n 0000008290 00000 n 0000056643 00000 n 0000008426 00000 n 0000056711 00000 n 0000008562 00000 n 0000056777 00000 n 0000008698 00000 n 0000056845 00000 n 0000008833 00000 n 0000056913 00000 n 0000008969 00000 n 0000010032 00000 n 0000010140 00000 n 0000012316 00000 n 0000012424 00000 n 0000014217 00000 n 0000014325 00000 n 0000015773 00000 n 0000015881 00000 n 0000018037 00000 n 0000018145 00000 n 0000018965 00000 n 0000019075 00000 n 0000020614 00000 n 0000020724 00000 n 0000022570 00000 n 0000022680 00000 n 0000023997 00000 n 0000024107 00000 n 0000024652 00000 n 0000024762 00000 n 0000026006 00000 n 0000026116 00000 n 0000027453 00000 n 0000027563 00000 n 0000029288 00000 n 0000029398 00000 n 0000030077 00000 n 0000030187 00000 n 0000031877 00000 n 0000031987 00000 n 0000033923 00000 n 0000034033 00000 n 0000035808 00000 n 0000035918 00000 n 0000037775 00000 n 0000037885 00000 n 0000039309 00000 n 0000039419 00000 n 0000041125 00000 n 0000041235 00000 n 0000041591 00000 n 0000041701 00000 n 0000042701 00000 n 0000042811 00000 n 0000044313 00000 n 0000044439 00000 n 0000044460 00000 n 0000045103 00000 n 0000045229 00000 n 0000056978 00000 n 0000057032 00000 n 0000045250 00000 n 0000057098 00000 n 0000045504 00000 n 0000045705 00000 n 0000045941 00000 n 0000046288 00000 n 0000046486 00000 n 0000046654 00000 n 0000046798 00000 n 0000046954 00000 n 0000047123 00000 n 0000047288 00000 n 0000047562 00000 n 0000047862 00000 n 0000048060 00000 n 0000048228 00000 n 0000048395 00000 n 0000048551 00000 n 0000048720 00000 n 0000048870 00000 n 0000049170 00000 n 0000049368 00000 n 0000049521 00000 n 0000049677 00000 n 0000049831 00000 n 0000050143 00000 n 0000050341 00000 n 0000050494 00000 n 0000050650 00000 n 0000050804 00000 n 0000051116 00000 n 0000051314 00000 n 0000051482 00000 n 0000051638 00000 n 0000051794 00000 n 0000051963 00000 n 0000052123 00000 n 0000052315 00000 n 0000052609 00000 n 0000052750 00000 n 0000052903 00000 n 0000053018 00000 n 0000053131 00000 n 0000053240 00000 n 0000053356 00000 n 0000053467 00000 n 0000053581 00000 n 0000053688 00000 n 0000053800 00000 n trailer << /Size 191 /Root 2 0 R /Info 4 0 R >> startxref 57164 %%EOF openttd-1.3.3/src/3rdparty/squirrel/doc/sqstdlib2.chm0000644000000000000000000011002112246102603021232 0ustar rootrootITSF` |{ "|{ "`xTITSPT  j].!"TPMGL //#IDXHDRy/#ITBITS /#STRINGSSG/#SYSTEMV9/#TOCIDXy@/#TOPICS9/#URLSTR:/#URLTBL9` /#WINDOWSWL /$FIftiMainN+ /$OBJINST?/$WWAssociativeLinks//$WWAssociativeLinks/Property /$WWKeywordLinks//$WWKeywordLinks/BTree#L/$WWKeywordLinks/Dataob/$WWKeywordLinks/MapQ/$WWKeywordLinks/Propertyk /ch01.htmlJb /ch02.html, /ch02s02.html=g /ch03.html$9 /ch03s02.html]F /ch04.html#u /ch04s02.html /ch05.html!+ /ch05s02.htmlL /ch06.html_x /ch06s02.htmlW. /ch07.htmlW /index.hhkRq /index.htmlgc /squirrel.cssC/toc.hhc\v::DataSpace/NameList<(::DataSpace/Storage/MSCompressed/Content6,::DataSpace/Storage/MSCompressed/ControlDataj)::DataSpace/Storage/MSCompressed/SpanInfob/::DataSpace/Storage/MSCompressed/Transform/List<&_::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/i::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTablePe8>* Uncompressed MSCompressed{7FC28940-9D31-11D0LZXC(m  V4pg N HHA Version 4.74.8702$ yȨ index.htmlSquirrel Standard Library 2.2 htmlhelpMain )  T#SM௕(3CP#odg൐VH?HD]hv}WAh] @KْImfwrw˙1& 8Bl/Y(RQNGsOwh!PުzSPO@TPG;@?v촴$p[H&@f wݷs32f67OilHnɖJZhmJF*ATQE|B/ EWuƼ_Hw (~/Wǿ@A))9wBJRdOkSҍi1&`?$ ODD/<3ޕ8o$,Y:#c䣆' dќC'F@Q*ka"vGhad uËF,EG;IZ\,UTXnvIqHT VjQ  ~UN F(&E!D1F%⮓-Pu3NkJHP|tCBn-Ri{i?'O2u`MB ZLE&׶LQKva F {[xxQ ş($g"@h,đmDvY,p_J `Ʒ1: ~/߷#,H 9]UAY ap!EX#<Bu?p5>N$w-}31+ބԹR-*-q݋K;`|^)m1W:,Q-eyU\ &'^#|rzٝ 80 dsv*Ry1+"ۆ^N }9 p#^K1NLᴸ^"2aN߾!cMz38f"`čü?z6"w󍋷eʿ~'7ٓv62I516(CE]hKmnl#=XrrjO&O79<51M=WX‘J}ޤgX)^ܣ?/ci1PQr{3-E,401jY(חjRC& Eb`*qe.&P{ey$9'MSt6vF.9fJ;b%(ŽLˏC쎬}S3k>9pfXN+xy+w()3;+~=Uw٪u]1p3SgVmUEׂ>v̌zZ-,ACK~7c!GSKB+5gM1 J4zkT s;T+ xT_{w͐؜N0MSF[TJ۔NF-uqEo"j~b,xK=YFT@SRBl;2dJn`%@Țf*^:>_?<$u/T;{RMSU4@E# ~'G}˯<=k'I[ znvAnwŤJ-M]jCekQҔt{bap/a]*pbu[f?NFoѐ}ŔØQ| .UZkh'Sbu92Ty=l vdwUrUzM$6@Ԅ=o; G']؛2-Mr\6ʐz' mDGaTj0Fv..xyx"Z==~i( \C?V^UmUro\?Ubv8wA^.ZGnLH)Kfѩ;̱1`> d|:xA ~Tq>&.M C:vML7g`);IHwd`^qDr-}ZYGD3wV8-g[r`] Oʡ@n|A&ws<N;sm3s2;Uu@PQE|OxaO߃+uԩ7!qEzjʖVS$fSOԼkՄbن)a>ꯛXzk$Rsm.sudV^MLxGBuRu_6ళ0:a7(JlQʮUemZ/MoM'۪m#.r|^a͵'$vD6/_bM]:K}As= [HG}p' Gv8ѦO:Bhx\ll W+C;H1Fv`?툹zb5ݑCa,) 3+PO" ! {'5&KB7\%K=`VMcdfQ)ʺtF 2Tm!&5 ݟ~"qܳ= pNz5uΩ mU);m+oCBR-as<)rHs؄ >e?}K;flCp^ʵ6[0"︄k+N{3vqX$~J~#;fe;|*q2=vXjħw?iL ~seHOGh |lp@e 'SJulRm V-˴Z6R]@EPrؤ sUhuylPWNRd0Z3w_S%7`7Ʀ`[[TU-Ӂ -#Fӗ pիsgCdӅ!/ Ol`-SiKvjT?V8DŽp# )+\Qu'F ]O QĥGv. r*cxq iavuǞD24kKzl=n/db"63ӱM؄yƴd]Q&ePz\9Uuk|uu77=A7~{A+'%l֐.xM>h#XR/ D"wͥZ;W 3(gluK ^ԟnln[܃sK3[ˠIߌ^J_?[=q~2y~}?2t~uRlȚR*]=w,rQfֆse ߠѣڛCgR}QJT]^OjLS'3 $- Ͳ׿,oN\Z,LgE3+?3 7ԗ;B"ٯo2Vsy8=7ruv8}/$Iw8xkKU3)CF%d_VZ$T5at+oO{/ ~.> (__S Sp͈(.$~crl dkCUjGH7T}KЃ{p̴څ $cCRI4/_<0sK+HJlF&(pq، ' 6b /WtE*r@k[ x$o'tw$.$[ı@3R}z[Miktm^3NwGq[/D7spX md'.\& q|ī=n#K״_ ~e-"͈R!N|F~["8vjgAc\  $\K/V Jp {sOg {4sgi&1X;*c@ϖ "(37t;S&4S (m%nV[o3 SRD%g&գoW׭g73Fn  ؜LHyUp;t؏$wJ<'}!U[zg:Dof_ O"-ch/Zͤ3fD6L^qmoVo}AJ^>ȡ9x^^ 0fcѾz^riF/OO~<Ȗc[&hxZJ#pgޅ&NpZOW$p~o|u'(\5ђ9@>\J!K N٧q9^ uzFm },h(^^!X{Gr2Ӧ [ 97vqp@aTMW#U=U#hW*}C\nD.{\.ªZ3j͵E "+ p285ÌppyXu ?3B=qSE\C⺕yx^~tpT6/eH5օo!em$h6=,0e>"i) t+lpKKlk{Tn.#|,ʽD,DP%a^:]>WUĺL[,0KϿ~cL'r4m HTa !ˁ=!YLr7[GsHTx rgxʲ!HI6`8##9Q伏:ر\8&:W* 栞.[ۅ`!f4^vB[mF' m(ntۻݝ}Ka+I TMWM؊= /CDD"^c0 feK߻f$&d$y>r?A }kBܐrQD$XSB(WTynVed 4#pFpm]ֺ[6VdBB(ki& `a3 b@$%@G,a 1)r%UGnTT.*RSV$P)W>8P<$&9RvNHDO+Q3'&ȆY@=StKqd%XeugaC KW@ȞNr4r)XaHrD YֱD鐩i!ⲤdenX?(ҏc)RMdz~xd5݃SprfG`rFCφ\'2NtO<2|^6L\DxLYI|.wD暊xb(㴎rsRT:йRxƨ-J:} F)rOSy?i)е:3>ZN7SDRw X̭k|ؾe,G4t:_jNޘeMҢ˿nuVf"~!1L\<:gBT|DޛA=gŲ껪_: >?[my5~c) ?Ce#6Yv~;r?tA)Ώ?b~]6?~ kt3.oJSxV,e<=B׳PʕVh踘g؂z7(N9cieMgI&̡&'F얍|2NC9yg~޼qC)w|:PZ5Jfj0 O_hc,QI(?)_VkuhG*|~ `0)AkkQĞPU#qC?6uiO|9. #xEk/ Iwty{&h8(?WWٻm^Ԅ\{]W`oGŹ\R}c;OLhiS]Ol<i۰ȧU>՟@ovψ6^^%#N qQw/؞?]sPEl|Q\,ZΕɷ -I(ʱ{f}t֛FHY ']:ʭ{0doǰ=b4}E`|T 'Y݀2LA@kqC^cF_qa!'c\r8B|6rCO(p_`<>r"[F^j#˶sftrC~JvlK>E d7eSca&kܗٖ+d7u!Ls]Z=[~mţ=Hz9NƇ̇-R>{ǽG]4x>ͣv>^%.髼F 5z,3^gơ tѤjgn1WzM%eniRN;SII2澙-dT4QC4Y882NizбVrJ(gα.ImtyJBv̧w5a {ʹV1#=v"d0iZ)/}@^vJe`9/ROiԱWTH(SV]||k)Q GIsj.+і4T&#_we飷Djc}  ?gڜ~MfZl>9]?rm/E@F@#K,3eg4`,MdH&~ОeTȦ&ɫJnRi 9VbBMJ쏥ٓ ,%KY%=XfZHcjJ[TIdQricKtTΈo=qx=nfrǹ)ϒ$4a!xҥܶ pHiWr\G'XhA ?5Le|taiζ.i$#h|S"oEMk%Ri)4?mjef੘ހA#99ks+?E)GD]`l+^>/*pld>wjWhaO}l{ xʚۄZN>OTY}'@̇Z\rN"yݯ9eC_{d)cxxĦȾ&ª,T#>;@ݡDRsIaZӸ'ωحK|s5Sg^|ȏ^+qH[9TA~X'=N*P}fSx.tU~ ?;-6\{?2_O;Ga` o4 G%+;|q@M:hg>q@[~Vw Gcǀ ` ?`5 : rLsHHK%%F|;%" R5 و|yP )I`LE|6IrY+!h9^>&-(tdOB&#%TSgM%a' I d6|Gy-{)~ŮKO 3]L|mίW53Ρ$UpD'_>;IIMH"q/6ToQ݉6|*W Vq?%࿖L-m`(_x& a&k Qn/tHl$p .U$`}iajoB`Om ʱߧ5ʎڏX|v$JǠu;L!u5D*RrFxbIG&W\6@A_ @ED# 69*B@Rf)l$lyIzpYuQ<־"|xHgaCHgWuԜt E%7¦n hTa*RR؁l ])N@)l [H2"GBuٔ  V&|Řs}bvQR@)) C&)$R<DJe`%e6JeA)CDTNe7eB`q%[, 1S&<-H98LPɉ2Ơڔ:)&5`P9L&nRn LllK9O!L63 `QUNJ%hoJ2"I*«PRaJlP*BJU(B (TV *TR[ P*aRJ*lPBJ(UB%pTS;TwN06 qa(/Tb5)v|fn{? wݽ[njp;C1/ʘΌQy|H.]8MJժs7+U`.@st)|2m#Ըue N22hp4~h05 ׮FQ<}6(R*RPRukdy4z, {|r1қ  Z ƭ{QP ıbrIXp0|Ie;"]k0w53vi:kŽшx_Fd<rzs5&b3x1iK#4g4턪갵|."J$9G^jՅe1vJBhvyX0Tr{&rx$bKa6,n_;zGYG,*1!'RU%b<.(tKӫgr5.=h9v:g920WrFd"Zur8z%mݵԍ.V]˞V5r{-CبMY^QT3JjLKwYVB`]`)g r~?ߒSgBj"зӽY'ѿ2"u÷7C=2cxjғi"_jz-yO/B>dQ3|k~>$B"t5MD,r ctTvċB66&sJj9c̱FKUE.&b"G'N7tF7;6K[헬0,|FEk'Xpn."JoMxW2hם ^3+2r ׃#t5"ڗG dcyS#[.r5(ID9D ea|–aխ Hsْ YzѳeG_\Qna|_fGTkE2Άzh%|oFr0 NE~J{E_W#ed团_Hn,eҪn㠁*fQ>Ǭ4XŊ*7(AVƆ2fD~#6/qUeJ<=A bFk Yɼ;@[&aAg~6JYҴ9UQA +|B! _Jz]ij&j+hJ8:Oc CqT&I# ȓF35nN-7U@yw.h+A Ӝ] kF3ۈb (n ͪkp."(Fm/NpvǾvv7jqu*$+;T%y6*w^xK!eM>afLyܜmKn#l5z ]QdnQhk+] X$emd!J$E~,MP[{>GZ'MbH-)FF<>T?Z9Eij,At5h jÁKqnoP?IȐ1ݩ`aA93ޤdѷbKJ%=;@>4z'QJZ{&*˚Sw[-UTdܮN}&cw[G5kW4|ؑ1A\@Ln,`?rrA jO~cYRF pGքO2pnCbbo ˃T/[]gSj.̭PD׭ F@vb FS8gQ5gV+ZIo| /UzS_@0|e8Er)ݩF.]K}2d ɚ h`Z|,!,}:u<޷6VC,M3NᜊÙ08Sge.g$G%wAx1&l6,ߡ3F}x/ĄB*轡mXo6Y;o9peGnBg#'*]cYzcqP-!T8Lds_՚㸸@IqY@j}ʟ|L7\_YGΆ)v/w4֡Tz y.j#ΗomxM?:gV&|A0TViK qnf{LG#RV]pr/(5|cgE¬ wҭ\s|3H֊F8~Xd4FWJQod\L1'ҁ? ƃѴpqzKHG^=)t>^l8H>0vO&*Q0c^elshC|ohj"2,G<KP"Ɓ"T‘қHF|D:s07Qz>yqf{ZRn,jdƢj)4bmg;GM=Z.}6K (Y׎q(?FP{VJ/ c>G7Ξ7YI`{80md[iCԦ~W·+Te1Z<;,d'F5%;@,QCKrxpљr]=7qUft\SRT(8LQNd9$nde6Bë=mgAjl0Yp(9o49-#A5(5sP 5 CY 5'-T4קP6^vXCCfe!Zp oJܷ^KzKd| 4&TaVpBy[ *ۇPD:^k؊x&2 '_lg:Hcf.՛n_ fZWq RGּ3 _qOj| 8MKٯm$XOQhfN@{9)峂E#[/m2|sS졙3ryZZFzgf0 niJh]4b_т@)Nb9}Ec#RZ]$kScjW YB:7,^&˸b`f7 c:.?,d$Zl+ε ]mb `q2Z+ɉ(* s &^."L҉"|h.)24;,E^ _>8{?\GH+ƭ9O_u_d]6FvdL(g]3$H]!;34)0{'8DE(t}DY(vmj:F,R%Y[=+qffI#[K:}ge@%3Hm.{1bnXeCćs'}Ԍ6g2R1͔DO2ft3>-mQ? AĒo-LoԺ7>]ZےF$'ӽJlUs0-SR\X;cfg6Y]W-NZ/`2UQFߝ_꿼%1|1c9 ފ,cɂm6R=gnK7rF8+D(-ATk4[m1=Ctԓ2UgAJ̩6cnUq?Q#4wH&D -؂d)Zkpc]F@k{rJꅴg"#W ~A'>`JTlCQn}bg97Ge= iy)ܖ v&{qr#-G'ŚD̻lnzD|w)/U0/Ohh^/rUZTX"&Ltg.etŶ)SzeTHh cհhz`|mu$>B[eTn)Xr]u<Ԫ uUPmݽD &`gbԢl8>xcI,֊7Eg,%`;n&݄54CjPM#"46o޻=_gfWJdbT ) ]RP/ }͊sstٲ ߵ4 L]m?!qU >j' É g _hܗ/87aN-/ ~/')S&ȻdLYtc)s,]TZC@54l]$ bv[ښ}Ĩ`;.&,k֜#rj."Xk- j$9h9pgcz_VX8cX!˱Ƃk3N\S`s]10SJY@0O儢pNN+9`A3 W$qQ/(F046p ?F JzFSW9\GXTJÎgdÝ.9ĆL-1NfA\tEݾ4߃r-y\ؒqtfί] X(21c\1cU}졙6>/ifsB=꧊̡K.=7~O^كʃR+#*?fʢ%+n@)4eDĢF7pdžv8gp `6=/ٛW,߮kb+٭kv&;+4G?c~bHsjΤwʻgfGݺ+ְFKHi 4ر:0'+&V/w~NSr\֊#j̧GVoqC@+ kaZ|8)nC9s8NH\WXnoHn{}e9KXw 󄝶N?{aZװ39ĝxWT2{K"RTpuUx_=]bB;1`&-r/4Qt J8eIWMUQ#\w.XWp=|mX\?OGqN%_(Z܃jU0^<\ [=ecQ_bF(K- gO䰕-y7*ܩ[5%D и~VfPśS6% z*` }K?33xh(1㽹w+YUc p@|+.p- {=|qbcca`,e~|\ĵcϣҲBH?3(qI$Y -^`de Im&Te7L̀-q_ ъ)ɦfR)/`@8Q'W`6ODSߚwx1Oӈ#"HÁ}FcVRdY" חXrX0Y=#`~BSwX[Ӷh:=>lNsƚT*܋iP*h,:d~@REDWo/( +llphDECQQE5;. G(ZKL"ES&^,t*%uZ@G(xhNDU3 ApA"KehϸУSTTҭBy%v+E(P h..!ɢTO}wt@3C0Yʶ,Uth,*|#Xv\л'#RmK/1@u9pU_  {ccV9f\f)Ki+JzRP|[a7 PJ Oէx pIPt6kU>qJ 2.ϲvw c=7[U?+$_e*NYСyUo[BWdJJsӞ-1*a;6I\,𳴋ۥke~Af2tըT6=Ex[ WvAЋV Vˈ~MsZl-M+ q2r I&՜>ЕUzDyi=ҝSQ6 ,oł \‰5 h(MCsyCl28 ePE-ց {5{xȭe{zm M1۰D"c-/xxlʿJ[X Wu u5 .4=z0X$$]-!EQBtbK@W 7 kt* ~hQ o<P>a!vh&yGN%z&NF8C"lC .ۖTͽd\--gŭA, ږzA>gC@G5C&nA+wS:q=Nԩ& nGO<W#N{?=68t!LuwjXC}IoKNB7FHpj7<R'05m8PWP/aT+;Q|*B@׿j%٥Z|Pd(а@(@q?=9zr3UaB]?M,$_\ETO,Y[.;+zNK= πE*N{O@$DAEH8>$W(d?lH腸y6̶bT<]|jGKOF_#Yۯ~SJrXuDZ&nHO\Tíf(Lf.p7 |2> d|'gr_o.%%|d#$щI 8piΨXI}X΃LL{7Aw:ŃMgKn~ڨ0:Ggz6 N!)Z*ƱϕD F~(Orƀ'ױ |8H3 JSkB0&;pӴڐEy-H-5PwJ#ڍ6^e` e L0:'J W@'\}4ԎDYw?ȽZpq *6hf;nk IH߉u% d@@" +.$0i8|@&cDi ]pPZpvr>NPMq$%m?r|ث*&o߶cɣAaxN dܗP'?'S##Fԫ8"H  HK!lT\ݼ]6CĽ0~ $@$ @ $@$ y_V/geSlkG @$ @ $@$ @%&EFaH  K LB4"`ofkiL[wKI{$ num/ݵ{ؤ@+̔$|VHBBd$`dTXa$rbT idvwUu^q e|_Vg4ֲQIbYtcVՎn b( P%GMɈF9p dqj^f %WmV'=L ]Ŗ[_,~b4;p7VھLfv3|b*Kmq&raN!t&f&g|6VN0j,}ĝ:rq>L>mZmK?fꥭ,ϯjlVmܪM71܆VnvSdaSgU.K BOX>6}Jr«fVΚ_h MF܏I3敬j KUbZԫན6/L|TJOX>rwAl6Cg0%v\V:bK\Uܢ`ґN5BF(yb@&jmݢLǺ++dH D@jbv.2[=VX;#9oyH5*uwϳ !LQ oVk*إb+UYVb>R_$YY5htU[S :ChFVсv4Iљ MKMz&;l=zb%sE쫁! ]EN̟}FBj5}qI!b*ø)tL3BD)>{:?O>~ӏ01,{ڏ-~?R=~r=>7rOnϣ'Dn'/{=m4٭D'^/;;?9BE};?A.\DhG^Q /g/ G;i^R'Q(yxR& .XJڝCA$Ȳ/7o]DN7gܛb!)#gſuoZtsFTCDwPJꌚljdpt_~P'.nAD^3>o S?)=n}Iz Eyq;)`}..%9't!o?openttd-1.3.3/src/3rdparty/squirrel/doc/squirrel2.chm0000644000000000000000000040311112246102603021260 0ustar rootrootITSF` |{ "|{ "`xT00IITSPT  j].!"TPMGL//#IDXHDR+/#ITBITS /#STRINGS1/#SYSTEM>9/#TOCIDX+p/#TOPICS/#URLSTRw/#URLTBL+L /#WINDOWS"L /$FIftiMain=n /$OBJINST~?/$WWAssociativeLinks//$WWAssociativeLinks/Propertyz/$WWKeywordLinks//$WWKeywordLinks/BTreenL/$WWKeywordLinks/Data:V/$WWKeywordLinks/MapJ/$WWKeywordLinks/PropertyZ /ch01.htmlw- /ch02.html$A /ch02s02.htmlep /ch02s03.htmlUg /ch02s04.html/rn04re31.htmlq/rn04re32.html(/rn04re33.html7G/rn04re34.html~</rn04re35.html:N/rn04re36.htmls/rn04re37.html{]/rn04re38.htmlXe/rn04re39.html=/rn04re40.htmlMZ/rn04re41.html'Y/rn04re42.html/rn04re43.html6/rn04re44.htmlU,/rn04re45.htmlv/rn04re46.htmlw2/rn04re47.html)!/rn04re48.htmlJO/rn04re49.htmle/rn04re50.html~`/rn04re51.html^/rn04re52.htmlv /rn04re53.html/rn04re54.htmlY/rn04re55.htmlu/rn04re56.htmlz</rn04re57.html6/rn04re58.htmlQg/rn04re59.html84/rn04re60.htmll}/rn04re61.htmli3/rn04re62.html_/rn04re63.html{/rn04re64.html}_ /rn05.html\/rn05re65.htmlk-/rn05re66.htmlI/rn05re67.htmlad/rn05re68.htmlET/rn05re69.html/rn05re70.html7e /rn06.html6/rn06re71.htmlR/rn06re72.htmlk/rn06re73.htmlrl/rn06re74.html^S/rn06re75.html1/rn06re76.html4G/rn06re77.html{/rn06re78.html,/rn06re79.html/^/rn06re80.html c/rn06re81.htmlp=/rn06re82.html-R/rn06re83.html"/rn06re84.html!#/rn06re85.htmlD /rn06re86.htmld$/rn06re87.htmlt/rn06re88.html|/rn06re89.htmlY/rn06re90.html[%/rn06re91.html7/rn06re92.html7w/rn06re93.html.a/rn06re94.html/rn06re95.html,e/rn06re96.html-/rn06re97.html>G /rn07.html7/rn07re98.htmlPMGL}i::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable8RLTBL+L /#WINDOWS"L /$FIftiMain=n /$OBJINST~?/$WWAssociativeLinks//$WWAssociativeLinks/Propertyz/$WWKeywordLinks//$WWKeywordLinks/BTreenL/$WWKeywordLinks/Data:V/$WWKeywordLinks/MapJ/$WWKeywordLinks/PropertyZ /ch01.htmlw- /ch02.html$A /ch02s02.htmlep /ch02s03.htmlUg /ch02s04.html/rn04re31.htmlq/rn04re32.html(/rn04re33.html7G/rn04re34.html~</rn04re35.html:N/rn04re36.htmls/rn04re37.html{]/rn04re38.htmlXe/rn04re39.html=/rn04re40.htmlMZ/rn04re41.html'Y/rn04re42.html/rn04re43.html6/rn04re44.htmlU,/rn04re45.htmlv/rn04re46.htmlw2/rn04re47.html)!/rn04re48.htmlJO/rn04re49.htmle/rn04re50.html~`/rn04re51.html^/rn04re52.htmlv /rn04re53.html/rn04re54.htmlY/rn04re55.htmlu/rn04re56.htmlz</rn04re57.html6/rn04re58.htmlQg/rn04re59.html84/rn04re60.htmll}/rn04re61.htmli3/rn04re62.html_/rn04re63.html{/rn04re64.html}_ /rn05.html\/rn05re65.htmlk-/rn05re66.htmlI/rn05re67.htmlad/rn05re68.htmlET/rn05re69.html/rn05re70.html7e /rn06.html6/rn06re71.htmlR/rn06re72.htmlk/rn06re73.htmlrl/rn06re74.html^S/rn06re75.html1/rn06re76.html4G/rn06re77.html{/rn06re78.html,/rn06re79.html/^/rn06re80.html c/rn06re81.htmlp=/rn06re82.html-R/rn06re83.html"/rn06re84.html!#/rn06re85.htmlD /rn06re86.htmld$/rn06re87.htmlt/rn06re88.html|/rn06re89.htmlY/rn06re90.html[%/rn06re91.html7/rn06re92.html7w/rn06re93.html.a/rn06re94.html/rn06re95.html,e/rn06re96.html-/rn06re97.html>G /rn07.html7/rn07re98.htmlPMGI/i::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable Uncompressed MSCompressed{7FC28940-9D31-11D0BLZXC(Br #A[ tr*HJqz N HHA Version 4.74.8702$ e index.htmlSquirrel 2.2 Reference Manual htmlhelpMain )  T#SM=V3CP#od1tmIFͱ2|Kپj {߱ MtGON3^ {`$Mn@ʛ=P *HRݺʦRJՁ|J/R +R#e7`bﻄnfhftmؖ;IiGfFbcse &n@㼏 /Խ( /Lٽb_}«HARH!HxH1?TYiD`e0Pʥ2{Tx>|Ϲ_B"㢣0ϿBh{Y#OF 8vP%j sB͞v@^P!qHaԐ"&P7 ٸDcrv{B;\zBqa& @ (3A7vqH1Q̯M$1"y~}bEAgcBM˴8M~4 5}1c+D a5$p,gARK임 ddn1+>MjG,w|Jx`EN6$᳈&[9^* 6 z!]dGnV{pl10E7'd© xEQ`/LF!D QOK& nL2|6]4(E i6a| ~S%d҇i r E: Y9#?nh]h̷xrrWqDr/I!Q~+b4FCВ%*Ua$&M+V+4%i 5Nu5D2> 3͖@ '_њ L(FdaCNJ;n3Fլ"^R]m^  REEC ߧnZtrSMDF0TJPP'%;_@[-Lb{a٪RsB.Z+px}8rDi!˴:>1yH Cu!J"Ib3gס#2tUeàk6ݾ+8lHkh!XKp fHo:^1tP\͖xlu Xn*@o|_pȷOd  9khvy![#6 d+&f& zd`+l~0}M 8T./P!g1 ;isRSܷp` }=2eR*B+:>Vi`p +2ko@M? HQ~:j_< =m!Bi5[7g%r.[ TW55nJB*VW2(gW pkd{Iet.=pel4!t\z# (%G#N84wAڔvrC>%t:f&P8דSl0ހ!>D.d:ʼnVfPrs&AGj:`!4j A509qW6>0>Ks ҵG>݄iWB6|:I t57+uǑ/j@L g۞h|ĀJ_L띘ŏHoR:bf D.@@b? YԀST =q?aaf<[\B%$#̅;rC'd|.wtZ +dFYϵ/Ai +2[gLnPGۅP@A Z&BD@yhV z==0U[An7w1Y_@4˒D x{ %w=-Os(LL8tZώfqp/6kgV)[M>P^e,?pZY])3a?WhhDf _7VLJQ6-_,Pl*xŔ= LfڬW љBj΋;/*2zDYneht `@5gtn˓cWxIjoDyM"% --"!" .[Qѐ1 1(xklR",".ATgi"qa@"aXlэQ#\DRÍ(X>u[2y~#hc׈,m? Al< Q߆ϬA,8 +}lʇs.C7(ymnfz-1 &r8lM.h39j(9">S9( JebY\c^vF-,ohP!Ș&ǥ6|P>,HmxE5˖U!e9 =$ CļqR Q=M9c- DB8#1V 8hZn"Ӑ Dȟ0c.v0'U=q g1#ah10gD,R> ZЄ>%f"w0G`b$;-'MFD-02+Uk?n@kV!?12#n -sF-#D12nx@[Ş2 _#"GlhC=MP=␖9@V t 7|kh_^usj =fC{C`;mzL$Cr`Aqx>h94!]\䐻83oBw#,&b^FOZdK#ȖŨ\i.f1".r\bTPGX!AȑEY 5YQѧ&?%q 6 ²z/DP,ܶL=Qd{ I;j 9/؋(B̏.RH`C\`%SU黋>(ir3Tׁ=g븁m[(Ztges9vwϽ87Wcgs?v٢Pp]͏1Z WE7πܯ!p7W#IPL@#ݣw`ɠ)#V]9o'늯]u#=1J]ވy:紾,T^؀;;>=XgBnniK+(#g$yQ<6#bSx颬,S8Bلw Em+uQ KJn1|/ BvnhxQ[\~jƒJ 亿WXۧè{*䘧E*w2:фO<-DӖQ{$ 04vFl.:Id(Y=Ftoe -8pkvek6k!ltg-B]ڳR{R_!!R NF Q,LLoV N8)y"D9Wz9h:)SD}E^NrwY{YLI?$%%tJ -_f>@e:ދ>kzy{鶋ItgJ4JAI[fx.?DiT#="B'A4 ~~]I$8q3lLϐvY!&Z{lsg\(gY IW CCҤBkLLdj:#::M9hPX4-4GĈYhK".c]Y3Qoӫܨa>1d^lͶB!]Db'Ҧ4dn Gj,KXy,EcŧL_1'OyZh?nsiѾ_ѐGN Ad;r㹀1#?Jb_TQ'@RM}|SmNh"lk G2Sj,lz&u*47Q]L%m 9E}&`雒\;|q}H(on6") .wmr@ESC>{ uH康ĩ5wl]Uzta5$Sݣe|FdS4W* KbG'Sy`&PsC6P|"i8*ڣ9t_үkRȆKn'MN+ m5=޾,o\RzQ)V% e=(0Jv6oS;&c]׾ǞP,^lAdг_BX<6 iTaiyHj#}Ք!t"(\҉qgD/e3rK%M~rzj]G:S5U `yט%7Hs<߿Ci{N]G2v[,RQNa0H-jxup[TRRbTxjC[zUӭVkN eűTY,Xpj0 612!gԈbG=Zg5C2߻АSO>b=N~G_@ %VX (.xm&?Kr݇QMzU׋dFIS,1تTr<ú:T>xs}sNKw,\%S(dap90#SГRiS!  9VU1(%oTNWt#8NͬS0{UM&Uz*4H.vS,V*/{*Ǚ}u"8lOxxpGL*b}y$ᵗᰀ~ ¯E / ;&MRj VˉF+zQNoU jix'~:ؒ|ԕnVzW*,)C+TN&haO;Vtm-KkW@+(2*Y`4YbZT˓:T k+~O %=d4wӯIԽwb:ؽpd7JI}%&iW.??a5ףj?EVʶ@Q1~l|%i}mY&ܝ-n-38}@>N 7zp+v+ >nBK֐dҾTl^ 3kvv$ dxpG!%%ʴ`(1-{\ָ]EehgqoTq7.CX*,xJz^*L!Gp?y=?'"kK^Bu,ثy8[NMRy.Rnld(Sڤ{6dݯv*Yu+sD\ w^ 62{3kX-qaqIDV"Υ+~'d{}@8/8ܣ+e-?xùT峪۾xCN`2ܪ$T8ljm{]UUO4 z3֪篫m,ҷ:l <9t`<Ըx 3QmC*asN%3޻0 tsoήA:evhcf -6o?<01(ǺNZH9`=?=7b܏2;ٳ1'#Ҡ''F%֫#\)E{I Eyq5W<]z-=ib+V%dٌt.W…13caԱn6pPe'$ԯz)ᖉYmaka[/tfɣ b:;ܻ  (&E#bE4m;% :&M{OneMū,XSk*=JtH[XsVCvcKU>.yzՒhfYu~ш/cRnL| xLJ#<ǎµUc8⥄VJ %'Ysk%{ YWO8Fx4.wY=otg6, K:VtqwgvJmWՁThGG^v LڧrY_ĩ$d},bI:_-ײߥw ϴ}ê@WW}n)+}tfګO%iy; bc~R)p3݆;^gFeu0@(=Mu>ȯ܂y,͜ %>5ʿ|),}nsORk6͏ECʃ?aY`ܕ~giGv1΅I;K]kem\Aˏ~S)(mognyM_l 0ɘ?Cg iߢ뭺; Xp&$=Ӷ-f P?$ռX|;f;m$omR2;) vO-50Te0KLIJ- ~Ha[Sezu J & R㼠-fv)aaH`G:?LpgBl\9 #_il!.Q3&zT@p2YF UJ l;2KAVdw6fwmA9bT4`cycil/8;@,f'w}(wO`wdʀTle4/u2Qw>qBF?KSj7<G%6ZsRaaL߹* 0Ꜥ#񊊒m:@p22U&Xn)CYOP &3k]33$dn/H[, T/[9;OЮ6FٌZ/>M쳵^{ir_ZJ2V+~]n 5#&pk˭zБ| }Ehn@Ⱦ{ ;)ŭr--^d7ˠwO2hO6rgVx#߳sOұOBjblSTW|OKm 6zqd#^嫻p߻&'Iff`s6AN] &VAxlZrXO ܘ9/X_ct. jr=jdv_׀f'Y_QRN}(Q8~jղ.Bnh8ru4'$?5h~<]8|<7w~"/QqToi˕I/,#Zd -=qP`ExOq\ܺ{7oyvm V֣݉aOWC'U*YHo̿q;uқSV;y2dQךTƥ&9 ,Am׸B0^-K R*m?=p?'o+ Ҥp\l 'B̘g6g,%xRoY?QFq_U/Ӆ ='֬|vNtVUسĸR|MͯNBVP2ʗo *EM 0nLN;>0{yG#~kt9>ullC5'Ƭ~ܢ.[[65o(|/->R-,3R `͐T JrIbNPU{.d~r`qT? !hM髠:7/otW.y|,5ZF(+bt^K~j32ͿA]9<*UՃDB:#eώyϰ22D&c+t-?y60S<ӳ&Ff.VjucEZ<|>rr9J(yn4wqyx$2S}O4"O VK@إft~ޮO!w_:)|dV< H{P8uɬzBrckICKbj j4.+G_#߸ߜeZtVC7㡅,K?u.><>p*a{9Kz,3Ӄ/9Y7D騮 fNրm/g RDFQa.#~ίuQwG]b;pI:a%ܺTͶ=ٱE)Dԝɢ[IT"YEU̶mrm5;J[ro?ř*oEID+j lwڹM( rG_/?L'`N,L78zg?~eq.ux6T?շ6̠(Dl?o@QE\~&;n )F?Os6YlwF@?D/{~SO}?hrHIߦRM 䗟n|\ TjmX==ɓtcmW,,%ӱ&4Bأ7@Jɓ86AmfK B:Up&g%iMIb4^z ODd)ԣAgB#7\뤠"9pyn!$;||A:6 9:HȮՃ\?Du1aD+%`[KB3mS[%"[ -Z]YDn68GL)5=x0zŷ֥fZDh.-݈oHø1)#C7rj>}"t?x飙ưa#G'UEOEiѽء륥NͧR~ $MbSp^пǗnǿ(?54TB㜺9C> I4V'*}ັT^:g u~\RwQ~l"M׏\};aF\^Xdvמnf䕆U Nq?oi'fURa|nKfn?'mlrո6~ 3Xd #VUP;GA`>=&#cǂȷn5ZϿja[9H,s_(kr3F]bG}X>&w WV9-+<޻GH@8k(M7 ^!NsY=F^ ¬#MdN|,t8X깘FKùf'aJil Ryra\C~i\%\WG_˚6νq8hd;gLze]~:rY&7Jw x@pMLʽg G 㰑 gݢpv*7Y":K 61@m:a&?ӷ&Vc7$*BԀ>=IYȸtBNfwU%E'+۪>k [5`_^o5a[aCadS) A9(g7Űg1p> k潭7^4pR2JשWk1_CSC3l͒ƅ *6u*L*91Ag<lR_횙HWJgIj0iО/rܐ S&*,WJYfLi[1";a*D* 3~}(a=[_(i ]! E8%ƤbcaʖTRͺ ;x׷?H|_m^Y1tnBzCK}A5ȗR5L8ov2eGP0pӠ/-:x=Bh ]{:"Un #F_>L7 %dja`Mnl$*f{RPN Dm\l+L5>+CnN ]Q0rg\1~2la+qRSXn "kS{2H\+P=)ZC3,9ꃚPv u͏;Jw '333Kl6V )w) 0B=u%E딁CtQsiװ*[VL*o\oOV/1z&|q9b-?Hؑ5a<\XFC_-hz~}gcјcBI4ފtQ3Y-L)N9l8+ك+2I&֎IP02IE+y<[:eT6 /D˺'MSTlaUzKu 94:t^Q~o|:p8'N^1 +$czNlCYɦ{ć[Y]) S /XCsCuV:R-4 yCx,O3OocOU)-`eUy:jim 4āaRތ~FA|"4dօss+jӣYLfYa*o*g~Kjcl m5<_iU[A[W?`}%x,A`@9\ʉR*,5[#y;$41&lONe.I4bf1Zw%,pkisp1󦟜7uU4'1 ְe+2W哒ɕ%!: X=wBGʢo(` pp~:|o@]wnNXdsMVrcψA=}U!&,{Mb{ci(-]@JNc@Rmx8܊?t;DAM`Ru{Fq5w<Ҋwf6~&"n$Nغϰ vIm^ʟ ?&!$6xx@K6o#ºtTu+IL~*Blٓr R; }ZyԴRʆ Ÿ;p N⽈הUtZ8*i|uĀ:Y8IʷNXB2Fde)CvG| XeteIQA.$A1=Jԁ۬-*o,_m_}(|)f7PC^^oB<׏dr`c3خzpd7@}i]w,2n}J_Hkԧ uDk5+Lבּ,i,1kݗ 'vΖ>*HZOyVŇfSk'i8+< ھ' A2Uz性Kވeq|Wl]\dң3%ā?㱤LC T,{C֓c橋,RGoS[vm@ eWvOqɺt~]d8񰊸zX_/)ZGW1yq iH1,}y\e. ZG4mաq)V #GZ5O$ 4Q mVJꜙEdGfֿӂ'>%H>LsjiF gZ6'75عE@2g5bUHKʖbuR PKB\vfvL V 4\jQZ8wIo >/!=Egh=\N-=:;ݐ8RZdFz~͎˳o̩8L)nk%œqc_iCŽh#2kc|*ipPl|/ji .2>Mhcݩb+U,xxG0 j?)$cVܽ5b+޲ҕ ኱|A]b=`PZplpJ󩨷ԕɟ8QNC TbVI9pԺB"#VU'&r qΑ?J:2XCL p\I}k%""ZBӽ9#xF(0 h35/zIdLp8x_َHLrDpop+{[F{]PbF ZE0Xs؊q# ,1w*m9Z[EP`` +ʰR `GPa#?ҼU<4{H!Kqb2:uԋ&",eWQ c_WޘX+wb@t]KVۢ_|kEW : +Y5ӒF男eHOqG^|Hbu3w-GԀGI qdWֲ*EG'|{{)C(Ez0lƒ͏,.8 \&{ToE3xZ~KJ\֚Z4 uVrE;ӧ d-2fϒ-MAl*=!+ƔaL0.^n3 mVFFQ9hB ٦gD9Oـo[InFh 4*(9 xyH=G3[g1}q =GLL8p"5y_]7\#B71W!T+wlq,X+T1򏑹NX;#;NbKĴU},T`{A3Լ.-~_RǛp=6Ѳ^Z-Vhiu.GprTJu_ ~i[Da% 8!P?o_|=*BN[m8qv:~|W$ \sRqWUI& >a-.`}z)֨^MMOv fE/STE5~߸QNW3(P\AYB+Qݖ3o mQ =6|e1{Q>U++B0)" [ӭΦk'@(&cl Ø.UY;@V>]&P^4+|.UTf`kFX{EfHElSP2A5o1M ;@(i)QSwOĜm]}arP-[P>r7i?aCrOj27agF\·{}1jɅhRl DDߕoڻ9#ufhxҀqz&YPH AP 9U5! 3{ȉ01hlwaN0C*wiCVӵQ53`@Ud-"_T)9<_Mɺhy7b,d~q|<.P"ݰ}wPϒhg1ī~ێb?]F{Pr\!mէ#4o|E&|c;Kgm\_Ҟ[_J>s &})tvqJ@w}n[ n x0Q0gh.:]jЌu{ ٤+-=^ ƝwO5z{G }견RW[2a mO}-X}4 ~42Zd:@?>0U;F;saT*jAKfLsY 2j\-*, ?H\W%Ȟ%T \bx dz- ϼ~ ]s܋=_5΍5%~"~by1~$BRSh֖ZA+!߯Cc>e`pgWª+L7m$qvMO؅ d3ί>cWo ]c9[^ߒ᫾1!(֜z\yCk=>@ ghcEk[xːn1=3ߚ}ȚZH(3vوuj7D" obN LD}УثC uqbu|}<W+/@LLT~˸L"(]T%$8X;qtFxd 3L}]&Xh=n6T0!Oca8X!'S䎘|kSA0?QưC_L`#{NI`dH:t̸Z @c)b}g6 h_.97 Nk*xDX+zCVev,hIϽ?io?)ZMD)Dۯlk<<z )_[2kixLM"YLSi2cy'V"CUտ-⪥j |tBdI} c*UaXv!Y+b -"u!|*50 *>5#J26bvF6L6B>MBe%{ CْaTzgFDm2hb ,iZ\Ie4jc&CMDX/[!ga9bt1]XyW:0<(3T2E>(_v~SUbB9 btBCcIG ىJPN׀P_!K(.D ;ɨrBP#/A\B`v}f"Ak[I}6M@?13&cy$kgŨ;v?MXt0Z7 76 ۰g:Eߙ3B,uŧ4%7o Eg=z Vs/? %|X oGS( $ڬ;(uU8ZJ;zK0$2z8xFQq|>!34`#t3p eA#cӛím)Tof0|T"CF3g*.ݳK=awv$s|n- ޶Rr{@CʽBш~t"EQ=GT=K4m4=@(Hh ;sܶ-e˷*.ۄ*cH +\|@,P} , ,L\7a,l ]@[op)hlwML@l0gEPOIRÞ#!G C` c LR'$`4zBIXD SN?` } M5I}8xɕ!PQ2tJE`'m0P5h2h(!.:rH'Qݥ$Ȼ5Bbhʗ%.@1D<``DY2$ I:"F_ X$>eʝzT!<]"[!hPE R܎[2He.Qqn4!'CN* qhVfn@)GAFC6e*"%ap^(p%Lv1 ftZvMGKN9}Shl47.>5Z|CtDld~- ށy7(AW[IB .,Ϭx$YH"tMǩ i%I:[ݍeפxtsOe3QՏb*/J O7n8]yNe'$>2>Jᢏ "j-ER4OI7٠OpC/¹0,C}Z5/!NX#r9xROtbNBa3FY7M9MٛN+zb֗L>s@9k@\5*{ybgS*5" &wdjkѴm.>_H R9K1\z*9BVx.b1A4W@Ln*FxG HPb/S]C_JrgMF㋥ D#(ĽZ|SKJQTG2}?ek𙲆BSp!` ]O)`O7c\3/%:9%X>ݤf*C{ I`9fPJODd0X!%꒻AHUFHXsԐI!NedQ"`x BTFrҘ D{0y-= 1t||{#6nK:كl%BR##{˖dw^d2L jS74ƐCLLs#BtW(i9]Vg֚J |2LJ[::7u8ExU$oĩ4jJ"S=Ay/~vŨH MЍeB9&SW[ Io97er4p^PvYsC47,4J-;oG7OFayiB!6($~(jmV:V'. 4P|sQscC%fk;,{P$@%2C$U?7X' 7"=mUkfu-0I}iސ*h$oA*b,grFX;ظyiD59ZPT. Ijsb IȸuUK#sP&wR;35)i²;6v{ʩ2tf̎7ЧBbc:>ָ!/>H t&o{M8ZK "Fc~ӵg!LZ\c4yCmB ߪpUW.v;jkBLIhf_{B9¦]:FV-ѫzBi\4^NYeL&]uHCw?I3\oL* ݲc*Y-L|D΄s+PUGY7%*Ouoip${}lc:aV, x픝]Ѡ5d9Zk@Ew4t"QbTq )|Bf@Y+L6 cU/ӤwGؠ \M?JϏCpfX-YnXjz*0*Sgb[XmD43ҰI-_΍}$2У=k?RZ ze;6ӫmGg^K7%a! 'k-Ǩ=3;*Z7LKRr ݚK"a#\TzTQOE1ntBNKC5fǃ's/#/G`2umrXiewJF,pt&t&~ )BpH0 F !X>042a%t.M3^1۽wg~!% cb ~ۓc:_'@R_w|DTTh%9 zX㭦E-YY'K{mcʡ +E1˿f[WbUKvSP,m>AA^x&t`y.x  6?O ;cm`J^_||g7)w^U+ESrYC1KxX#mAjHB÷!7)1J!De0Ӯ,3}[ʨt};ɵA6MZWΑxٞk T<>Avs@RK6}z@P# %!y}C L*$+Q#4/-6@%G=5{0F>`+!G֑_=`C!/L .x.22P{k8 &8lֹ\pUbz4od$.iq4Cv1Vf(g>[0xϻ;F&F wwt;T9%M/ɭT~I>$0noZ̵5sҢ`x|J7]T\o1E=/8!KE-mD>dPxh7/j8L2P˜[gSqort?1`s(Aq?@w4I5Y)RB5TnPW2.vc7 b#TMƮ $Bїpa|>gǙ |/VFb"bnےнͦ\B8k^kfFQ1yV~)N& IM2+VWR$uhp ;K8I*z .Un-^fȼ[fS}n_aʕhf;%221 esiS 2q0M+UG%x J35 vO>M9Æ߆a5U3A<|\j D@tD og36U|F*&k ˇ]'_+jp<~Br6ePq'Kmz^c[wk |-BU*tG kO$C\x޹ӋN JN=S&O^%Aogy[:'ð޳Ѝ>>e\sG׊ģ`\j\!Ԝ.ő%K($@*3Tu|WQjƅg/R*Z9N~'Ey eY4~VGP׎xҹcV6QJ-Z02r'%7 pvF8ڋ%9FJ&_p6q7^^86[h5ddEEuD+; Y0ޟ!r0N5'zY 5=dz~bS6>aẀAGwgxɜd&&Ʃ»u%< α\\Zx!Ak˰o55kՆEk-dIqI n;P@SN=S"5 Oݤ/$9)8Zx¶i~*M{c0^9V3hIm=(WRWY{P#dR6l./LJy>†*ծ#Rڳu 1bm܏s"4Xpஜl@bnQGIaY̋fzΤ:N P+v0i0rLVg [n5ѩɥ -eh6( S 1J2kpTKtRka?2 x4 v#CuÒpq.Qovt{| MyQQ} K4{UoD aQ!»X v' Wt2>e"xzozɳ0s;a _=x\UoF70"Ze\ nxPU*zC` quo|`X=Ý:[֞fl9B1Z hϷ$Nf-Wّ|$:H@OgӾ)l ~'DE)[qBCBϜ49=\ezU@5i~ձHJ+1p'!-q˟CQpg-r ϩH>dv{8:iSu!ghϒSִPr=2goȼ| "xVg&yhSxLIFK$+$'$طhcFwZ$Lo0ы]Q8:n2H]_P1m< ].6Rr䤂} 4 s™_~>]3p϶G>@=轭=,}qhsG%*2yI?oy4ξǻ;L|Vlk{+:{u&m.Qm9p@ elv #kk+Zq֔G$(h(V-(`?0 ogm's&,̰VTh 0R@ n_?}96SNu$N4댞jX>\)C\K5;fixuf4X1Zw#g:QXk d_cZ~uSt̍ H\ZgS)/o D{v5Jڏ8j_Tv;5UgKzmzF~Qd~.MӖ$ƊqTU*(_1${gU6hGD pyO~g7XxI G[cA> d'{ $kLS>6YRND۸.w(h}T@Kuގb{w" C)ژ4 'O~fXAwfz#44vW<2D |r?Sl哃BXݶyj$OKṔ!G=klR3%q>lм,9 wӌټp\FrdNT@ }#BXP3pc-Tl\s7OV`>mk۝:+%C\X:c0/➴BѐgdH~Z&{n.Äf?Q^8s]w:; 5*U Jf=0UTx⫃oH{tp$hr i&4)T"wՙLeDž"v՛K:@f{M7DdΩx5h[fUanM~blC(޵)PÛm5%6.6f85\|Pp &364\/Obp8k;Z8 r!\;ئ/ܘ((9\4 YsMqwm՝}O{)9Jֹl7a89zᵁ3ּÒ}^Skx8b:`vJ\ar#%""5$u{~4 ;pq!T4be*[;1AĬ>>q='妵ܽ*L^j Iv奆SҭB>f XZ$چDΆ'CQrby/94]kp+فLE2vr|;d1REOu݈N5.ҭ]ce;Owq#K(; ywMѸ޾K]e)T &-8+=+|dzXБ=ƟdMk-/9cCd%r6꺖[˸̌#18EL+3R 5h r$;+5˺9n6>׽qoL]~oqsJ(Mփ~Jfo?p ru:4խܔmDͶ.5}-ƒMkcW^~={Ū.=?Qbk@Ѿ%fJY{Uek,x5KL Pc]2 jƎJa ()åhX oB [O׿˂6^MaH“DV%v d zn Uد{,.ár|*OhjL4|.?X|fESg$[K21=^…Xx;|'Dgdv:6qVzu#޽Yqx!et; 84'ZY1l!CMUMyne/qũdǠӭ6Ģ -unZ'G,/6 K/6NVhh@5ՒwP67nTD HQ]:?_Ąe?G҄f}AJ7#z3zʷT-!E 6DOcza41 ego&n3NL86Y>87eXoIpːG~(rm;! E끂Q'M&.Ew4,DxBz̛ɕ,XL+G4Mcd1" 櫬y8U:29_"K8zu $xߝf__xߗn{yYD_?ll[^瑱 9fβ6BF{ ty #?b\K7E/-̽׌0Td hFsNssͶ~ƶjH3B+im ”AyjcGwU\+$7`H.vjC.sshTP!e->+QZ/7/I@Gy)xY$ Єz\BM,!]19 ֟3xq:Z=%t۽ڃRYkЇ9ܥօ׭v=$|2SHjN(jP}nJ[9uѴJoCu?}-$%1RXkV~Ev{^!Rum< NC Z` u*܉q% LAtRue{bScx@r\GZ|Hrfv1i93[A*cr{l=>u,9vbAE.]bLҀBDD ` cx nBM2;D_xOux B?>| R[d&UX*Gό/\kgqz˦ xZBf!^nDAU,"Ҫƭ֜~C&\-|-1ݷZXd͞}@hoRCNm9EрixmRh]yf0HA ng4T4DI^R*p`KSme+#9u<{bgžL\x.Q\@%25PC Ln.H,ș;P4Tϖrn`o`BCG3e=#LrP$7D$? mzY6,! 3\ ̑ & C$7\7`Vd6zKF6ޓ+;,dWTZŷb~VXO&cfބdfпソw{7[ ӅLYFTH1eȪ$FAFukj KF6P#|cr~4"g!BAfzx];ٖYݑ mfdž{.u3Ś{1K'{cH >s3X΀gb )1"V]4"_R{1\ d}4oUNӥOTu<|.FʁυyT&)ucwHiL`c-Fn5 ͟}I5gXA54:4D>Xܴ-MRwԶ뭻 i"k~@ k{\h:Pcه 0ZCeBZ+6k֨[ϝAӇfWMwY ~9=3ܲL/?m-$le7DN5|& 6)ٜgK ٽeF}zbzMtlI*^õ1X/K/Tvޡ6nLFE}m^L v;RQ69Y){\KCx{dk?o_?_volqK\_yyl>WpM>0~+QyFi4%Wǖcpsh' OC0$m˫H,?aNJHPߞidL$6YY<@FGy1ŒZCE#`-#ԻKWn[ݢ Sn i$!>%x ⋟i>5sߢCϣ⊫MoگL_"LFׅk5/f̽w5w{;x=r_~o%j.;gγ`=?Ϙ'I}s]pصlHPL|*-!]%δr-kamS>7gdu9 bߑPdj/ÜIafcPy . y5ܓ瑼*ɭo+}{%3i~Usbk&Cd dȢ!# k1]@`QL,fyvj: DCrs,LELG81B]Hn-u |EuH9ganh[Il; *h0 p@۠3_q.F >rגi(z-vIf:M2_ y) _zli, 4Ʋupܒ23"wrްgib..굚L&q9pj@܍.i‹,alD@='_b*^t 1Jz<&?vqt t-54^KVm:Aw`0#-+ GjE;c~[wg&ڈ 9BK\eHֹI_qptںO6'igy4Q:5ђq|'wM ɦ%BI \H(xf |8 6pBv)ܕb@ [| /U! v4Mbn> !X9D!V'sp &nGlb}L9Nnt%ʧ7QH}?<0/& 4T8aQ|B7czv.N3T~{U!B &nA}?%%˥Y'x[e\D`9*E!jהw.FgvcuJ:zt )`T[Wqh#N\ǰܮ&UTfLZ :D=az ;@,o#>spv=1)\es{SAԭB`$B};(sAtbܩ١_nYd^ s?4jW2퀵ƄpT;TxE HnK8r-9HZ)G[1R{䯶ZG0u%ѱ7~PSOvʵ|k؜ף ?e/[L=#/;MZd!|=?X0!,a4k(B":A-|XOZ'Iy ۿd"{Χ԰o 1/~)Gb*Mt<^.{/1${^S֖)ɠv,jSN-W.2(VIг&Q.xiG3-6BߪS"/S9XbEI],&9viV 8¡i t( Ǯ%;}UswD4{ϳ,3WEG63ͧ =εh]:47-&)N9M dA<gF[M?Ezn_A#2b_^C#%b9B^D:q@B@_/__WP`>ƣszCGGѠUlh ʌq6F$ic- I/`4 =EJ>Y(寊#vTC sg<7v:aK^A*@]PTT4!*b?ӓ8VY݌Lצ Hľ`&olj8`H.j_N0|m/HB9 1e a`GT_qo6ExB䋏c ǽ5jܾ}0 ֧ܩ'+4En@eKl_'|Qi}@OT1 !jLʒr';¾Q?3f<|!_rG4OVYB9Pj9r,!Gx+|3%SͽUZtz"MX0 i D=JVpnč/Pj/LȊe";#*M:V}}۠Ԑ%G[Rhj]~-i4WQްcGMY|xx,Cn}LeїjvZyT\u4oɡd[>c ΍3N2Q{5/zx~}/.tA(l̃wqRǀ>MZ"KjJgOGXboϥTw|+ˉNXd;a^i@8mPڇ pya>%$],c溕#vsYfq(%u#MAŵz@D@`(j? t]lƁ LhҥlpuJcR{<܌,:+6<xgI`)ʩLVYtsΧ.}>$ OP\)p >qhŰio1όm~dO>#[KN(hp>~:4Qe$@Op~=w#7OYi@uE@x_2].ooP+z0QwCC*`װ~3KlPB4G3ed9mT z7,dM6.zl  t}fLL V`f@r7I:oWSfVUݪتFok׭g>c7'b7cH7H3@hf {ݷ^vkѳͭ\""l斢IDXn6-IĽuj(?# )1^iW55GeKƪqZ5 &0/bw0Bmvӊ}Wϩ1tWVt h:4+/g-vf r(`ȩav^v4%ڿh0&GxAGϜLS|UEXkΧlii+L"^sЍMԤ79ۨRF PooK8ƆaS]M}z 0J ڴ^ao;p6o/ŕ,ĭ|Hl^&9ޝMZ93uU8b5etd&Rj@$< n6վ0,E5Y0q>R(뻗G87iL3^wlѾuFS[t7BZS(س%WƖNr5V *@l2 3sp'O vf:kW6jYH;;3j4߿ӔYpOn=vF=iHbnQ$r>dyS4m&X|E] #_NI󓥝LA6eȢO2~Y3qMZ/xY[^\̅(^z­kqT 2SoF6z+ ґJjrRОNuv+MA@C%qlD m̥J%wbpm֠]NV0a]9|zKͪMpLI}ujϑ[1c-)ʈORynlzYrR0Jy ,z (ZԴ ̲.,;^ ͮŽp!,Qv" \X#pěz)ؼ !(7ɂ{v<(K I)-&YLoIaBֽW*!WDb/z/ 9H$G Eb{R 4!ucZ7&*>q/85"u,iD_D־_$UnjogЫsG+]1$,KV6V_+/o#s!Or"&ܥ[?br,bd9|![$\Yzv|V\^Mesb+ՙy{Wxޏ nJs1!|n0Qq8)/:\ۄi>C,/h*fWYl\H׹%G(&k]bWVȜHWf]r+9[r?Ep{.-;K֌=E | v?lgVptԆ8~NtӼI.r3"/l,aq#r&1ICb`m&j9<}͑cbUTsͶ c1*\;X'{o,<5fVw+FqFX q1xCƾ/tRd-@䨅sWDBT [eﻕ`W-"X ]t/;2 «/!9 7-țaK 2:r4ԩ>m?`nMdε } (Ćbgζ`rsl51c_E6F8&e )xnz 'CAS2mQӳ\6?[P$ A` _ϽCHָ![!MVb _8OXZhB;n( L!~j'‡S paKl<,9dn=̠[䘫f=FM4e!B |̕qyˍKv[3bL(DN} dL{0=Ym9;UqZ.Vag~kB"li$j$7ֱ3ܞ[v?X })|# ^>/u5fpndiS\mN˯FiU0nkKnXp٭hmvc#\|AsF v|,eHv8G+Fr$9Йg{րgL#]%x])(  0S1>"b [$ި,XhPs'$aQWGǝ`/N00/ʏ(-ZŁdR\"$1(I{Y И[ % ^=ܥlQlw {m~ɖq`L*;֕ (H!aF^(R ]f P[ XP(aq]AjA|5CY Ə` X:4 Cx t>b@n=;+ ;h܅-W@X"ar|%Z3LbgFGY <qgޑxmL( 6ݟ> w_Άib̆B|`$OCo|h^  <LY8L7"E1I^H  Ȃ*K=HDu*Ly.Wm`-}gVk?@ڹF\LnalS-J.!7s.6a>YB0cZo"\U o9-|*g|hQAhBɪMl#4{튻Nh|_ /x7;};gz^B^l3cˍ$ɀ_lJn$RVo\$zw^p%r斞6CSr-jHuT]u<)i؍,zfūl|n$đSB5ՂvWUZƫFx ռDzT7 byPՔ- P/6E+Ie:1_zdH2ei ZK?v!zTܵ.\`Rz0o޺mF7:+KHnoc*@dHmwa4V ^ d^]Ͻ@q TDvgq4p,BݩQ8+$$,-Z~9ԛ2 8bR>eݱ(dnu"nj|~^F,CjPؼc:,.NրQL$HÌ{eMbAc1'؎vy )?.\? * zXΒCen=fuBppxwb6)e]nE VjjCv.&z˙ŢەLuG-*&JH؊WhQ 朵\ySQ `d33?XK=6*jNrD|!39Q/l>Q\ S;ITJc=u}C!:Zf>̭Y*!h0iɻ wZc" D JL_WCԜTT|18ُ,!'|簡d%J0+r!- yιǚEaH3$&gM%t|¦)Go&UP]c_Ҍi# S鰾Ad k5@K5J^'jF~D@|c@<~KeNXnX ~mA%ʾjN \OzDiAhrfFigݨO(+$3tM[y$y:"^^ ߅;MZ3X_1-+Ձ.MZI6WXfsjeo)5t/)@D#`wpjٵUThL-{ܡM+dY03ҟ!W~Dnݡ!<:7V=TmЦ T1 gQ"(ՠ/$mG'DZw2yKPdwqȱCK{zԳEZc+xU܈Uޥ=))9Ufb8ѷ<;LZFHw47 ; Zo,krDWP\\&ρި9Pb(DzEd%Qɜy=}yWD@Sϡ2r_"џʣļm\ f7/W3He5(W5"مZ%w-?6*R2٨t|,B ¤YEC .Os^vN.u4B7 RPuZNM2cG3u4kTP )R$-#i#4]m|M"#sf4p`HHrA_ X֭N`mv$Wy]Vmy\m.[;w\F__kE|U/k<)p@fh wvNvmdtūnUP%+"0&AUuV֞W:Hk\X"?(@ ^O%|-Y<}5\gh&r"w,r}uܨ;b( 4<;΍#n-??͘2@:D\NkhSf8kjgLiHv\Nm\p#-uƴC*ݜ-5 A&VQ=dH27 -fɩ>4\o팓,kp8[/=7lVqcwh  KʎU[6fnj/lE!J &kg}͹&͂˭- bJ6WJɏo{[ -G7E;>wS)nV+oC#F"jik;?^;qe[ `M攥:}/L.~eҕPHo'DVߣ,$疿[sŒTD$Տ@YDﺻs~7Y1Un:FSzq;9k֮q­XA4`$aEty&-[bNjTm! Xwi,?/Qm?|)m4i46Of{l[1ng1pGb̑|_f˸Q?z!n/O鲆1vÆF24ж.HEiMM4Y IX$0% ]cǫ$v:8W`p$I3S(miڠT >((_cub20M,|1m/Ja[iCqg)Kg8I= o1b3jXJE)EU2|udkb g0KY a>-h V=mݎbH0;)tL@#`ވ '2Q?ê=&2ps~L:DGsjv[Իx=-y~VNyVu:a] ҽ qN J@+wEnz% 0@P %@L6k#1‡TcD($st+q\w- @kݴ)49yX Y>Bǧ_u=k˓O"m-Vs߭rM7K,Ѹo/cbP`}f$("7=.JG$u<^uu9fl7%r|kmdl䇁ђImL"$55]@,Uԍ%m3G &^ _=C^j7oerAmV_Xo`&D;"qRc)7004xVn4L&]J01pHQr)YJ+UI#hdfhljRKQ ukr'/3̷}qpI\+k #o~ˉ ǫ|~ce:5fI-a{v\&<* &?$!*JBjص_1];&CW=? ӋYr |y#c[i9z^G~:4gӯln `OIIqOT,65%JT4UdsI% 1ucrMM Aװ"ip ՎrcpufrМ,Ca5>mr i[/6I"vX@j3٤̖qECL&Wꎀ W,/WpY4$s -@X(j{Q؝/Po |}xM`4&!QWcoQO 룽*ΰ[ǽCΧș7=7\sٛrT$ETTI4hTzbJL(0H`bB9Iavk Is@r'1\.U%q}6 rŸeϼsi M]\,vqz> ^ Ǿҁ0>b?Ȯ.c&F>#g \4'eRQ8ETՄl:Ncu\@tʩ 0g[2=QԐ41F_WX}WiKmT.:g}g]@6IqM{k/%%2 dL?q>ME.@[p `eC5(ʦ΀r* XkyvXN^ Tސ`dǏ&y!knjDS Sd.?'EYK l6א@%./b ;q&=?$Ԇ#>9oiFTeMuc<>>9x>GLM Ou,Ӄ~W;bh=7l714&<["DJV+hSt",z6Z5 *sU؈eLnbفbSsB?Y,zc5Kθ2Ɲr؝dNEeSv d(8Ak(r?UD(kd/6kG="Ίi"zFn粉^}ДZt~m8m<2Yk,eij8/oڌX uxv9B V:D> 萅,yz3)Mbc.qsmw)zб/HG\ X9pȎvFc1蓳 2?9yAd=-{Udb5b?Z7ɳeqDF1/@G?7McN]%׌B,~'a51(AoD797]N_ʸcft"?MUz#J:1S =` zd2J^c? OaO,bOeys`OYf+ȷv.蚰n}8_I^,1ު3o`AU;U)z )}zpFY_h4}XlQCxFƒF'|YFnՏ;SK DDƗl8JwvƢNMg'ቘoyA`3ۇ %;gvsϥ =cI*{K򩲈!7F2@vz)'aחvS>z_>ʱ^Il+o˅Ycȋ$ὺob !pc_V:c *g1SȐ l46-͓k=X<+LhnoVvpdYmkOQ Y,w=.5We^h7M;eК2c I&.Sڈ=Z/5Y|iPMFiVGVK˨k) B"tS޻VdֈI) f?&ޞe简/[9FG{J:a9 Ew['FOzf爯1Ԯ[&M|=9T$ڝ*GS4I z ;b$#_V1Ou.߄W'iM)w"cþ|:XЬ^;n})Sp:ppaQIS]<&~BtSPÚ*[ !mu^47.`Sͬ|<ӲQm,׃G1+MWw-@Cz9=} TC\;#2NsGhAևlA!C# AwZ}nr9!e8Q;((=kbb.[\3m04%+T?^RĆ.?MZ8h-R8Vwxbg4VD47j%?'VdN8,!TwzETZ1G=M (J?H_ +?7S* *hUF\y֐fZucc~M $nyƛ YFB!|;S)kT Q5~; JD;B{tB0U{璹U┮ nN,bk ( uвj]7^6 ]^LpTABJ J prFv.3?*yzD&֮OYd\,)l3{<ڿE 87KbC&'  &L>8mӱ ]q'Qq]1mZ40b0 ϊIh& "Y4p𱚫PM{ Hi=ek|› RUlG%:'Kzqr]X< h-P)CðÙW|HRV!c'j+άP Ww8s0LIhB6ޕq2:>(JbTҍ{A]8[ zeu(Eݏɏ{%085aS!v"Z>-ѫEEb { ,u2SwLqGaH{ݵ^AZyj? hyu#s^s•tFVuKdTFFl_r8 y.;"j+ wݸTJ{x!lj"ԥ;†ܤ\Z=~v3? CJC!YZA,?yNЃ8787V-"J9.ܶ="j+?- 0YuB݁v(TjS%{?9bPQ QءH.:= T,88DN-#؋,W} `Z_wӹ,JuUS]*BJ=Ji)>xRCQИ}An'莾K|TVo)!q FBk>z rKnXJ1k:cP֝b45| Kw! 9u5M*l;RJ ?S8䭬ʹθZ Zün'AHɾ]|%TPHRCڮ'okԪT_n`˨D>X]J 7Y4$E l>Qd (]ې'|*LQX䕃o!ob)KN^pwq;&vySIK+,&# Ko ԺS(AV}g0;j5hA t4~zdb P,uG\XQB(X(r_=yi,|UTԈ?aeqipZ6PwhPKv#fAxm/!<W"Su> ﷊ilZ8fT.4^*\[)K=Y؀"IWpԟ*/3Aʗ-?>;Mdin&٭W$~2ؗS^̡/Iޕ70<2BHl^tjZOw\q }<6{QjwЀi,/,U!b40,JT5hIi<+vQ65QwJQΧؒ4a}|#Ы,% dҀPVtJl!_JdvWxhc5DYX9&jV4YTiO% 52M4@*5#',YBl+mQ7C"SҰ">"("~+w"X<0uD6|:$v=؀5,"Q~5R.ax 5TڍFo"ȳPpLNXXO &n21 <)^P7D66Uʼn=#̻-Mj~QsYژCLː[˙%Oc &"*&$! DD4-"=~ȤtcD,ـޏvr$G.Dൣ |,iww@D%9%ɞm `Y"x ,𦀼3djAD9f:@3*Z "yo/l&?!nZ8KG~ "=!U;%!q^"(Kۙ&]G*e:!Z4R&;D49Q4DFKfH8D j,d-&S' ,Q?TMWM@S t5KFO:˲`,Q$ I4rg*4V &9S|(l-˭&"׃YHEr%5[w{b))#e3G(ä\~Z ]exX*33`]w̻2763Pχk z@c6XS/$}'9n('[qGxЭ/ /#2lɵ^WĜ:_}[BE@;a[ 'q fnq3tuCnD`"lܜ%=33I5Eh~)f{p(LiΟ_ή>9%2U$2N#:~fD20|ӝ;Ug'gTbvܧiߑ(3I_&2.3!(|fj/4A/Wwug}z]sO>Fc-\ IZ4",Nv ߪ'N i95ͩE^+GzJΩCq"E箨V; (l @?SYԡFKV>ޜFQC:+ȰS0 ?g|\<-iYD>W;R/hb Y~0=gC'[.R?S/R;krN^cQUyR[_Ӂ!ɦ%|yʸI}Ф$9uΛaH`*@ _Sw9Z"5HL5&p&3)PdД~/hAt< ?ܜYujSġْ_sGnLI]'FO#=EqzC#o`$Df˨YDJB#Cj8^ډ%=Od 1Qc,t? -L s"f'[C8 3N0iݓ$Q̍dӇp w^p6ܜ Р+Ԫci9Ɇ:**ۦe" 3 _0*P6-}g|FD- ѻmC9i{VbIA\MMz +bL!OAIx焼0G'MߪKin?9+l"uE9E߻H} <4jYޔIcqo=>m}r_Y{M@Cp~*6mig$yĂ`p^*ablsn@c1=n_VJ 1X'=}'&jX"ll aPR69CΛ_^`;6+Lr"詈"Q Hyax˛~#VW7M%~}+/0[RPo)(K"P ُ[%I5-_-5m* ,^[Se&MH6;k c?6[$^X>|Kqt# ȢRBޓ^%dDlު4)%ϩ/A\r2?2lJEl*/r,!烈%LjzV{XĹR0G6f "X L3}AvuI@q])nb͐ͺ;aIg_GJ>h2yƊɫ]:2d$])ٯL$_W.玡E=giOD!~빙G$<")DŇ%_BJB%|e>uLppSՕ~>-I T=beX>՟t`@1`$_Iq]EѯNc2mDթBkfGYf3꼡Y0ԍЫ6#\{+Iw4$Ixbka&pޅh,ڌNW,؂=[ іXd咶[e#)Q6@fjf 6[e__ON|K盛/H,~팧sxDT~x2(^Tz,j4 G$OHSGl;#zǿc<^cT&"Z_޷39c7l_Ώi˱Nqb0Q@S ,MX[$ͧ= GXkƶّaSגӻ,ry [Q'~٘+ ՀQއ$코KmwOy1,<\n]^AaT_ /? uZ,^ 2?m<-}6fM:Tڹw y],6c_l7ݱ=L"\ctqmytSי\deVX n5_bj✙:>}j/xgcdgoBv,Yp1v;>;rUs^wW:Ѩ| N=k!JE$`}8Qyǿ/6Դ?\]1g?G'v985`x})<6x yqhoN6@ݷq~ۅ^p6_9`|T.pdyJ><&D-g#Cp_"BszqIGIѷ$5:.7oQVڟOu\ؽ/fꬍ'[u\aK*k|7pmuqC[m_J1>F,a{o 1gB}ZNأCz'ew sSkF!V_}pittlԑqnP/Ƒw?}-}Q_=MUEa/F}Y8JJ;cWo'Ծ>ǜq6H? |cb݅sk?1pyQ~?i$Xi>\@BKCJ,>k2yg~gm`J{}UʹV!3;UrWP5f8G!S 3ǀ61E=(-w$@qF&?r0ƆF7GGtöR|N36 <ָa!x%'2k %z‘Q_ yW12WۗIYG3 )|78:l{Ap~ٰ(X܋8X>|B T/x7D6 >/ ZJћK/x0/ ^x/^ KxwAsq>hM?ǃlK ա_t蚥:% P8~{(gSIɿRmcZ7d4FIA%hQTz$bZy@DY⭎CDգ#fQ" bDD(3n}x)2Fze)5"fe2FyY|A 3Y=aF&R%8d-JC*Qr`fMDL#ѬJ8cJMz̀VHr%d-M`0L0z c*SLh`lyJ.T l3:f0%D#bPv%b Ṗ5<Q5'J70?e7@݊G?zYĠZ D@^fr)8eR R)geS tRUeVUf)g*I3J3)A(Eh(iqBfBgh)сy4m,AUm6jm"oB/<@ծ#.TDD͎ڎ\4f!wB5FDd41`FL"2hIMFh0& b4$&D4d1`"FLj2'hoFs @3ӘP2 O+WוP8+O /ӯmH>Mo*oNWԀ`X 8qq-dG.3b !@9F7q8P:,N|,`\C$5Oٳ@m(uuby] 6mՊMkCbzum@mn$$y =<0 nL9zS9f s0V.]}:]7a'* `L&z2z ◖yǼ=pA q\FumO_V.zhqDAnߠ/3$y}~~@گ6m LIt.蝕papŀMAbn2 9B#3@ +8c9=V]\kõW(Ä~'>=qY3yzc[[CAh y(V<~˺(%Kܧ3S'$:<BV|>ˉePcؿU 7`qqaB:SXAyp<Ǝm<Ȓvf=eٳmCb;;uuiӮڵíZuZ4TfĈcEKw4BĆ=Edꝳoh5CP5 ^MqfH*~L{F-cO[}{f1*D{baAEo=7U 6F՟ᯄ&e*my@W3VsK>PJsp0-6RJ+[IX̰ucћ-3ga;[<La"rH]DB&gh(-C~Grq*_Sc2Td5!P g)w'EVt@nJLTCgW'֔^\q? }&')~q#$db}_Z0τDhFS?=Qjp-TnH>pp b:[qR DS103^p%3~cC&I4)ߠ&7TȪ0竳^][ۅj!]+V3`~kl$n/E5K w:%0SN2<8Ȝgb䲲8 g}\@`N*R*XaT~p[^:|Nu;Y O8#[@cݢz&G--t|+ H|'8)m̃׌v`".]_][uۋ1*!!ˀP,0@Msݶi˅ZbBJ)8dHNsژ`xXl{~ɹxp_8*hڨx@AL+")d[sǃ.MINvf|#%XczFc"hIO@p5v]}&M%?K1ٖ/I%0\61TŬ!VvD0́.E=_]&F@PԢ|D}{zV1gCϏ.O@+E'5pZ-྾> v.h~yL95 857&ܐҐp-AXfh(ГUiSNb!l۞ o:dN~Fm8tTf 7+_$6暹Sͫ&AP -b展J^Γ鞙*dwDKpTV XS9wKNa0CTN)%^CI=BQ߀wP4%!N<fKR$R$ ji+ԯbgd+J$`;7!qJB紓ܤ7!PLbÑ w(5lQuIΰX( :*OsN51CMGHt/؁ aaZ9of$ך~kF/=&gF얹Q8[A|AR7As7| rdse1ӥ[0i 1$X&a\d7J$iGYAʞGhϯP(+(zIe,%mh~2ՐӘeI w%o<P 桟W[D뚴L4b=,kÓ2#Wzu:7 pVr}Qώv_ZO_Wz"gRiSs`ԍI 4$}JI%cHXSV(]kңDz k1މTc%ٻLt"5Fm:OJ zޅZϔ7u1ة:ۓ)z漦eZ+g:.K;^ާHcev =᭖nHH٬L`(e-o'u%kID֍rur@m 9U=ھZITkP0rwJ !lO`(&%4סZvQ bFs:x`xkCMMY9/4\Qh&7J1;CN놦cإ`?ŵ<кv-V@$k%||kP`n+wmSp3st>FkLYhʺ(%l/]\C&+gk+rW5Xb+׀'rgx1#M.Eјu{2k) v?'us]wk^T#+5y5ؽym8Y\~h V%g$.8L =J'eZ3I|F"'b]{%K5D0W' ZTm :εRL OTP eEQ((>]JB".zѼPb9-ouu;+1i=6]M@Y wP:MSN`\؟@*&IXq2ħ5l+PN[<ݰ0U+`rpKel,9HF\$HE3:1 WkU9|[m2MjeD%{z58(N)x `~ N(EFM6=f{U %A؍*j3k1[I99Qk4Eɒ%!J^qbRT E?ʠbzUs;5VTILjR(r4bi2kJ3=,'CM JL"WAţڲ:e덦BK`(u i>Uϋ]jO.Ocxh RLH()3r+4-R0\-ܜtz\ΤJ|ҘfnRI )@¦%ac? ;ca UH1̂2=$&4|si5lw,jG6:/thEya[6C(ý>E*?@U&:o;7Ub[ m,_Ȥ9bSQg'X:)Yž\^|582:<"W N?|_a_f[z1U, xL1P5Nq6"ȱ%>ĩ!y%uXr/Iv wC@7`1?N/WW(ӂJsh<~=fLUD!ץ{#-qs'c&'k TM笞j76"ěT!tN˲ep*V;[*fm8[j]Q*9$h':NZQff: M抔Y0U 'eB.,&)wg/'}*piVت镗J du%>PVOJ^idR;t}8W?עaA<*'P\\-'AK cfCKwU"tҵήh`dn8rǥ)͎ Gp2{+7y~TmY aWpc侬P iT|Br:@jOW|LI:-ʯ!aT,p崥mSćQb[juWs?尅t)$-:p߸O2ִ] s]zk$һXuH1Wi XK׊K[:LQ"S@s͵t~dk] a%SmT#- \a[n*&gR+ȄS!0+ Չʓ EeCff£t~3-T*Pʰ /ggDJ#Q¼O디.'^;\ ڥ]R+y]QռQhtU0;r 6!LM'P*ԗOi*Sݨpp) -c(Ւ,Qu nԾY$c iǦp$hUF2q@\N򮢂:$ hL2yRo6 kVVnͳX]ru$"EIluj_W ppƬ yaLG#;֢+9bYU&˙X•K7j.UdSE BNE19]橜 Ï2Na"<sBnes'K(qu2CQ.ef+.}Fh>3 ' {OHY&L7|%uS'"pfƃ(g#f4Uz,:Mr˪D1 &;3-KkNVLc}K냊=8wU@,~jz~l}bh9U*NvhcyAޘ\($.`*'ޝ;SO hr*LzҏuP4hEd qݻ6MVlT],k|T"6Ss:0u+&U#a.wݖ͙/Dc`9:2v+5Vߵdm MW>%pW)F@EӀЧHq'Q')ࢃv !=9@\wĝc}<k&g#JQ:2P/8m_$- ~K+ , >ET]ꑴU2ل_5\t>><ua{>/ Oz_=vy(I0wQkS`Qj5ZkA%jg"֫ȆG!c{R9 :`ÈX_gf`mo ƶhk2:ˎkF:DH`=ÞCY<%lNPb`\_fyzRjk1mͿLD̈Km=BDTQ,1^\pp?Zd\E;tw4{QK2c$_Z\HkP /;ߘ?muDˤaE U7,I:XOd>GܖuNFkp~ԝXn1;Bkx-Z>gF A4o1*g!ÂLh>xg?}йÍ;Zpe3A!PJGOêJ<vy_d8Xl5p샳,.-5gR9-?,X qASD}y2~(s1X|Q C-:/U.ro4Y]O^T} Ѿ{&4$aO{`#Fq-r?L&e U5^ٺ7Οqܩ#ZoM}.̽EK ;v-ҿE{81IBNr}?Sa :᣿g0ڹTvln;_zDICzYn>})^  ڧux{A1ܣ0y#,Y4! Gg6mvFbQX9&Ool26sHl ' f9w(~W~#JGH+;a~a)~:3KlQmhpyG$1t}O. a8J{S% |Q:Ɵ(vD"t<}׻uxZ)s cUddg1vy[kQ =V/G1׽yrz^̋| 3C1OS š ϩј]6!m˨^<̜:F z.y( }Jgfd%R ;G2%L<,LgY7l3^zSc#[ƦecMQwiw~ O|;y6U;˧ |6 is5O]؝[v=֣LHWZwWAnS0sX|CMđ-çŘxydJ]*~nPF^wį ~=ۯt DWԇL$M+?,ex4W&tJDnɩҎb{c7GFV6rnUBX"2"د>s(]N H0sl +O"-%&01 K׀T%xcaBPh܊XUE#VUewSU6QrR #HN"Tϩ@z4$6T$ȽO8Rl2_ocV+LR+(y3c oF$EVT0gCs^=%i'3 l%Ph?th8Α6j^hVO{pCz~Mf ~2iET꽊!Ni'If&qh Bp"gYiˇ;DpM?fiVIh=iXy{}_(u`Mt# aQڹ;2xHYu.-ѧ0OZoҘ[4bd-;2h47Yf!;=#ϊm *)53Aȯ{N4 yqu̔V7=ӧͥ!VhoSnoaƙF6;;ΎP`oQwsgnaGQ WK\^8}U=P%)o 933Y.M[bc?҃"pUY1;^sFkH&Oq>f+E{%# 5:'n,PzfR2GT\ݳ5fWN"(%m^+ ì<\rRAZlT;AfR̒5Hg 2evElK_G] SC(.YN0.FW h'{qJN2PcZWF@΂UZmy} ^/M8 0;1@ڦCNR(K&?lExrrm.};i +=ċu hWi(WQ*bѦw<{Ɗ=i_âGH,msjt\d?Z`~s *I ſ|+بN"-`QH8pű3+2C &&؂$,TR:)!.-r / nLny7-78@0]?D R|lu7k歰-q"5Q@!;5 5cda%ZON@ 5\R?WC73Ze {ܮVPb/GKэ{ѤkO+9KBm}gdpG8an3<o6S&f3P-乡BImk8ixF^u4fDN|%no=*X^ȃ1Pȶ)82`kS7D(s\r*&&9s<`[ qt2AZ(CT`v\PN4"'5dp$c2) w&M3 nE$$>v4^WBe`KuSp2'a&ގ`!>%kﶟX 0nL\` vM}L%5,`.U:kH0lzW(lirSmmn?J WYl"RG,SM)76@>F}D&l GokB6RWM((MQBfXi gz8dԇlB7ʌ-Z9ؑF>r*lڿ۟~ !ç ~id%gg6hOsĽW[;q(CLp%yK?irMK8MDn9Nsۃ7z&y7_/03m^/Gnm{ӦXȲ 3L>ղ,(yTv#x9,8 )j޴,['IND>GdBIGqxΘGsAZ YEOFr I<bLX޶D"_=p5KJV(wH\==$?Y,8nɋI9=ڌNr/9[M3r[%˨߹na#YjP*fh _2OUHl %5sMM>m}V&N3fb(.^*n^'zp?!{ S>C.?M$qC3<`WpBڭwEB:ee(qcu^kXB4QH9 nel[ Uw(|ϟ3o:ĉY}4A:IV7agw"jvo*/?"]`jekិT^HwZUɿvJ - ?6_tp{[N89)N:D̏M !ǩc5T?Jd6蚭=nKPCk߿ݖsP~+qoKt)̬DŽ7@K=6iibj0l}X]=3ch3G?;~_ǿ=?PYo-9PɼgS*r%8m31̶Dz; Ƙ8g3{FI3wC#? QB'S\Eԯ5NYwK)(oת ߒU-H3䬛O `emi(>POՓ/_${%_ϑhvWbbv|߫ |O))+lڃ#sq nu3 goJG\'5?I^Oc^~A{%u?5r#vfB'83]M¿R ~bt4 Az2=ѐ8 9{{pq/rkVi)ᔇ[v3'p|_?K`C;`ffq~]ľqEU&zE8,q$:YIJ*cEA2ȣ`%J hWwU435k,jFEр+SG`TDobRɸ q9"s}/ f_{LYuzR+k àyYD.2rWb L*XN+.a_GcP4c߄)|L/1?gPHC7ǘJPp[~r4"``w$ {IpV]T/%ȧEو0DtWyxkŋbyݶ17g`’ ϨH ʺ:UXOg\ !HªׯM"ΫxπƤRZ b%qa2K3Fy0 o8)y!-.TkXX/muD)+_G U<@W2z.9:*.Ayk0Z]U6XD?7w[ O>M 3yt}q lCC}ջ(fXU9jnuź-( CH?UyWn %UQdߔ3eЉ_g[Qң`t7#RtV<)ƥn8Hq"Ynȓ噄T}.G ; /54NE5Yu܎# q,s& X0&ԲgGv[rA =Jx/;tzop\ډ G~%פՆ #$<$q~\fnCgpk&J5Dy "W

Le]qrГAsJlS R9PZW1kǺ=o,No7AE|?e62֐]X`aҰz1Gpi-l% Cx{wc͞la}KcKttD ZUYGh+ML2h93}6߁fQNM {Jma,9mT.O1oT2&27uh|F`4lH\lTk@ b}]t $|}==79jS6K+Vv$R;T'IsUGp }nRtkR`h*5\zծGze-tV1 ժ)zguJ Y kIHmW'e5WԔVӰk]ucmFgX,SQ ;rk>5!aZ{mi%H܄V*[8tJ>*0 ϝx ]m=]]6fArV~ H8c"uݩ5pʩ0x1XR 0^l @}: `1I =;i[".; \jcb0)0J I R&Qʛ'e{32Xb# %5VJP6pc`a|ge11T}ruFm'2yw)vҷg'ӥE7xQ@#^c!(ȉf3`*<ὁB:9U=bػKaӘ#o" ܀NYBGsmZEăžf ޭYv恲JByB28h: bŭrr$n8=RCX8Sցt@Aܡ O4JVH- ɤ&2!e2-e'٥ le&!jU$&goد:LUduFV(7 @-=-{+]}_sVK&?UZ}+~OWh;[_\r~$ܪh92´3WA6>M3 0w$.?w97TjU'E,%1zraxH5uc>.i [.>;tG?Y)R :8ŘOu(v8{c1BWpvGq<];=K :y~p!8oܺx@CX<R{# _{Ѽ0i5v>15u;Hٮηig ߺtϖޮG]9._磎gyk4/9^`R:n5*̮mQѮuCLtCRr7Fkoc+TAFAHy\x2WIETbr~_n:Y1Es+Y.NGzhvi1lѵo}="} Jjɝ< :(adӘj bbHH7!֮Z$@ȍ,+ t)#\QX*.uF3q@1$y~ ̢](pЫKWa2)׳KūLd8S%ОA4Fufl Mӕ^̕ SѯAK7xH3Jݷ0YUspG6\<2Fnu=2 eqN zǪx73@HN}C cPҽReP [\FDw}t_ݣ)Wh+=MbL*^Ovߗh Hf7f/* 4r+oJH yJZLe{`N[*ᭃIT[ϨȩC%r~K0+uZ1`&{ZlJ.d _u0<@r.!hHKЛ兽Si;EKǩ{z#{A3ei%1I-)7o̓ Tx-KwNGUb4(Rma@iTp6QDkL|wԔ\Raux$i+_Ʈ[ATEѤk5³k'陴U`돀H'ӹ׋5g71$'ŔM`%7H^L"r%løCaWO qX=,d!Jc1 \ r0\X}l(CfA$Z&aJ7rm3QO*1DK抽[?LbW7Rwd'LW0ơI_Lۊ8'9d+!WavlyuO1M1a XUzԷ$)o( /?g4"c^ע8cOCW}(e9"??`B_Jڤ%ɭ}rY2Mv8/.lrqnM^# ԏSz݌g3*VXZ+f0Di1Hٮ= )bz)P5!fډCKAmJ*Źw">KXD5rrGvG~e4Z'wdwdM T4geD-?!W<3ebZ:-E |H<7yJwȰ֚;%|P1\-d0m8-9K yG>~߽";HaB7~pI2}'ۖ@SOҧ'O%I})%`v/8WjyآZr9텑d?d ^8ۑ)3bLU} o:>D0 w>X7(>^g>E gB[6h<7\q>7C^ik5Ç*Sȟ /oEIL;@%0)’6s`ly+i'\dUyŽ˟L8)ݟb't}mVN֝ >W9\:,=|tQs{69ŷ)u:(ڊwߺf W 5hο13INf ȼ0ǧ$Ҩ@0E{sidG M:R+rIΧ/9W {&Hyj9O!Gq/jϘC 1ԇ u6h 靂 0?yмZ9vπZDa`e-I9ij-P>/t҄PDzv̦60xyGEܯ}9gZwзd)q #zE=󸴄pޘa}Үiu l)fן,|Z|V_:U<2 ~@jW?;#\;^zVsw_*fLb,zőB?rFϬ-?ǯwb-\}ߺx'5u~N;_оkWܙq\gKky;uÏJnD-Y26Ղע}~d")CwQW6,ծN&;V PN? JߕygjH9CdYf\f?#ӑS O#׋-hu=+ݧгsyxČD']&iӐ[ocX,R| /Q<>)fCxҷ#=a!a0iLW{21FٵˇwD38qӥBqA ( F[O\~514u(TrI%o HRxy-ZkDH<[Es h.&f΁:X,\ӊ-!zmU4USW=삪:|zW6)mkrhQ>9տQju*k+JdTWzCwh3+P}v D5@ {; -E^*6 !Dc*kT[Ċ{&ڔ=Ɲҕu eR. ҵ뎦 ZXw**FD}Y&VC++]4V륋fPdJzu"㪋]Sh:hݲudzڀNBM 1K7H=)$Kb fW8\!2w'^-գX*`ÌɱUOS!ǖ[UbƟW$OY!P0X=x: WM.&^إ)ۖ6Iu jjIE{8 DC]UUHpqU7Pt}n<]wlQ+7V@eu|NqMoXܣV労cӮOz I:81m)aL@Y- Dq2^dm=2 <԰ A6_zUl\oM^@^> $MK^P㆚]EBAcn=*Ω-8)%n/$&v+87Qj[&`JaxYsV(5nt -"p02t>:_>H?Q'6T6JndS}Sut zݛ&*k|db)9P%S=T@ ߳i1$Q-PW-]*S9&SLИa`^l×ŎmVd(h`87a4Gk(P\`r{dJ`Yy@Cf]zP)ms|f%#M`֯RT]&˂n^8jkYF8z x'm/%|\t ;3䝨tvd:()0ml;G־IR/\Nw_0n}Z뷯vW5%N8P\WPIBx꺻%Uwrt'Ma)VѮ˪|F&ֆ{AWiU T?L{C\΃W*FN hˣ/6_KZ f*{oV}P a #4r[PO& NBVM=Ʊ\rborftHv)Cgȱ %@*~X> =у5e[Ƞ+}v BB[hR$)!XUc`MO44 t @F5m LkZ(u̼Q)AeFL+40Lʅ7z&o jE oO  CqBݔc)Xo^ƒTRlZDWNL; þgj3O6ؕظWeHٿq^C" /_[蓾Zo}gi8,I^nC00젥yPuC|ׂ.M)wY!oe,,,?rMhUH2JNuHN@Q]D@K T:L\c̦On#KJTd\H'8Ð'.8OT#l8b 5,ulxH!#ꗹX.52 m|?oGLGE2 A^} w^O; _%y lEIw'>/[bUd(`6Nj vTjN*|V:|uEژ&ܣMԩ!ЩvNE%zpHjHz3J]H׊t[l`7;1|w}ۭѺ,h~nG'4nav@TKY <1 Y330.0Cdo8hJc60SJs=Nh#X4?}(!/}RMu;w+_0ץjSJrl^] Ht-slUఛ^"4hNC3gysIb@ɭ{Rk5Itar%}e펗kM|<#8E2žOǕ+6Fq,X+08iO n![ ,r}#⻣+w[0kF xHQHnab\^ZUL'*6|&ƭT9FEczP>+^ /TZt+]#^5VFdQ펆J\i1zY 8,u:@L; GƼaj@ZpVP'X4rxRņqz N\X I镆gV}!TsTVWAKjTznٵY7ڶFG }0ŃT8n\6JGD0ʗ4e8([p`0}Âq.tEup4h[c裳G: nbAUJI`CB©/AQi䡁:Q[* ?Ir2^bf2 fzi6vsE♺=rP5Vlv 4G&C֫RqR`Xc&XQVx{ \FnNE>)6[Aghd+ <@?YNA}M0Ot/S^d+7 C ҄;SQդ}Cx+iɭΖ'WVAmx52(R ^Q ,!F3IicK$$v`W&aJ͵MC0,+݂Om$1jDN8 U)h^]TP W?ee #,-I]c`:Шe(DzL@MOx=xمyXSl|i6blU@}ycW_$I1+ l_j56F5UDQ)7;e1Ni4\Q5% \zWkJ꼍bYugNb&!'#DI-Ltn޷ +оn%D!'a$, Uw‚xcVX}UQ2R{ea N[Ilx R; *4v1&~/NdV~ <*봵ԝkc3fF9ּs8Lڛqf0|jeݗAc*ۃB}Ɣ gcۢer]kXy/qˤ+r\nr!T)'5q9JP=Toۙ$%9D iJ$D="WS>e9$.>~`vV)0=CJ5,K?HIG3`;WKd8:b=I21F&@Lj!1 i3o 4|)vQqZeX[:_ZʦOsf'qdiak NJ!=c0<<*}=(}bBd2kΒOV';wm1EwߔX E(~&X"; "tF6[Z"޾3~WɜL 26d$-> s;+FzdB."_nӡ$2>SZH(biU [:I_gbIqsl;_!]ϑ4XKBbZ/@y#>x)?f~/HHAvEhy'˧Ώ?۩Rдq_4I 9FY%,"x7Ѳ'2xnj#/̺SO9{?w=4voGSƋڊ+c˞%sjgDM8ԣfTVSoոx:swiNtvUo _~^Аt9i .Ly| .Zb~'CQ3J(TU8x*-dshOkܔHp ,ksdq_̹č{r6u)yJs;OYk:y!֪_%Nx'2/+;Bgv# n_Z gCȁv }?CsabQZ燻ruȽc7{iomhv5<޴(/PE[{{/䞴"HZ8Yƿځ*sV-v%!~֡PШ:ϦbM/$V9 Or&ȹG-h`OWKn4])_~?yB8MBDY$w쉯m{1J}Z6~v 3G mPlcB'OEB1z.+B8,6fh}F5gH3\d wpsqh(_<-yPԩ ;3Xn)80e]S>]< D:<Ja <&{hC=r@NTW&/D^o༯E3R\dD]{9`*"㜾:^hV`ܕjJΎ-&aP@v\fYpyr3P׊Oَ+0Ң1Ws2jT1BTdG icC*XR(E4k7»q`Vm"9F6fHPm:`L|`bn= ñ3C{fBԝ!I.,-K/D&j"]=9?IW=吣 ms><4y| L\(}t3? F'OOl3 3zՕంP4kN{1ePֽF5ORaM׉Ke cBf2 xvC>9&QeA73]ci q/.S1-4möfГla n={hW[PծͥyQr$|sdBBps}O5$x!޳#ypE]sQO., sYRqDFmQxE\yjՑ{ `G:PFVǶA%J)Op\$*k"9A :wV>f53xpf] @գ>$::pO&Y&V8rS*i Jhb'ֳFA&!Ea}jTZW|[FWs3[S`!u%ig_,tF"@S8V ]Zū8.Fm7z0%L9+;/b$&eAv8# Q@y{p<9,ِ|z]MJ;IqD0d߆ʮ<塾LOt׶S7?b [6p@ E`ߠtŶ7H T'9Y <}!TY\Q&58ukHz0?jYZ58e?m"?x:K=8k]$f/`Б)7aSv,%T@$*y,|Lg;an"t!յV82'f(W0,RQ@&"1~^SuJ00 ڀg\, L![ v{@+1 P''=+\M☳Γdס%M3e #.ky +SU9ƩMe0`j fV5[Ҩp-1 #=u7!gSS5)Ye MC@ dIFfVO%62M5</d ]!s T׌>Tux Ru5$)| y{ dT]5BnMzf{ko*+ J?pӖ9q跖 @CקacޝlfJl^waD=,^Ƅ^&rX1\o큩pY3 Ƃb<WyjU3lQA e}T X:TJAĎIa4<ȧrѲl9E[g> sK^c_gW4XT#FtjqOI)nETj@j\ёbIv1KC:26mawe<8, EeW;ֳ  J`r4/Vy &Ϣ{b u3ᒘM& px>:N 8=TB @|Aef*ˇ4l>tũOR?X6'H>Pޘ(g׌O3=ԤBZ35!' \<,S:f(\^ݹb+ٍ31բ:>' S&X:.u)`9EY#:T~զR 0lk޴ìB&  ns*TÉ#[8o+6su6@18 [ҝzU؈nwifB r jɔf}H1XRNN#j(ybZ,GI. U҈$ȅO(t3Haq&m#sew/WvQ Ms9:<:%jx ayv1(WY|&L`N hE‹E0*Xɵ=4Mb< KфFٗcQ)|TI򜆦~wzƒٳ$M\lʾHz5ph̚Ұ%VvqnLqC`i0h$ynQ%3pnͩ7߻aa_+=){S%~QLΟF79-d&ߺb9N [p%j@v[ Č, cD~FN&qo)fQaynVtL^JqXm5Qm]0rpaAdW&uWZqЎGBOqY zF}Sۻ}˗($~{֩m3P|LNXYeVDaA|*K ?va론3P8ʵ GAn{Tmt(I|O2ޘVCvwd^ C"KIvO.(hiڷ~~;DӢSng,b9 Ft*gn/r\ԧa'87 ;DNB=+'OhsJ:}M+ng6"Kx  {=)TT 1O_$uЏлL"-7y~V EߔP=Ɋ;U` 22 wW|%[zse\HCm> Q6(ꭕNA>2ٽhaj~`UfhS,3m1m"Rzfw'g=$y}Y:6eoxϜI:YgA#n,>{ݪD.NYl- ѿcܛ>i9u™\0i1%ߨ>!RbIUHhߛLt^ 6BcNrQ>ShEMS Gz^<䌚|3 >S95pKc4g迄+\5{z2`8̷tq}8ׯ/-=|S󯜾~}1:(8,)x/z_VBI۵^}[qɛ./#ܴ<st+xɟBv J3 `58~[ġb/FK~C漗2qW^Ý7=(Z6Im]zW2 g7^VT2JDz.y\Ǔ\gޯ4oq߅V "#vsy/ s%͎S:g?@SwiIa bc9#]>;ʏv&H9MOST.W{<][}=q" <~2ivJrYaXd҈U1:<|rp2_+%1jn-R dDzA¯OQ5ԅZ.iѽb=NSk h?ݲMM-)qW_@XuM "~E6ua*e~-q:nưyFn\T!9j&b,\S^zlf0-k`ΗU/+;ccr2?gz Գ"IW2{odp *P>Ӹ Zcca}J^ C3&ͺ[uS潦Z ?rk [xÅ:PzTy}%0v1rbIy֎3]#&Nn[PZEARw\%"Md&K +4epM@Oln8y@"yI8>L&Z!x]gzREk/ri#c/Fǡo4/a|HkPX>( _i+k{zqAj~'W/zyu߮-\Nb3:I߭]+❥JT}NWz6Cr"*M D  YV :dfEK$uQ .!T'b zᐇOMQB?W༧tun 9~6Iwx(İs$iGlPJX{=5)m8M Tі; CG^ ZJO1JYADQ|4I6%(4Ԋ2yO$xRĻD4!J5FxAsJ_ Τ#i#%xV]-?gflݱE C^m)ƨIlħ}@`1vp$_Uwf|ڻ*:2K;[º6#3Ƹm^Au^ ~?fFl1$I&i$ |‹bb,W=$-X"*%XimD5OH;~cӇ P*[[P 0 544z-Ԟ2s3>IMK$yᄏi ᵒ+-l ϑ"WclBt&NHk/O^YG}: 0=W, ~8 0]|A-O2-$trQYALAjaͭ*&TqtknuA/^;~s c5&aʙwI,oZ|@bR8pU] 6_r35p㚑oja~n,G^2 4Hь}ʼnxVXBwX#G D1r@Gy=LhjO?ڲg`7wz4:T85 bM/.cKģJ6TaRG'+2u:R`oga R^Y&|pj#rg WQhX-EkuIfwk<^0nG I便VXlI^7,s˰!"h[ .[m@^,$vNu%*ŃN<^ /n/aGZtv]8Y%?9t!ǓKLŪ9nHa>4 "qIDtv@Q{)ڙ=o\xwt"ti |{kh+Bn[pډ;#>6?bbL܌܈_Eb=Kən4ɽL=[ nΛ]YW)I"5F>I x]s4l3Gě Kt mh"'K>ۦB x)j^upy>X@ ޙ0;"iLg ?p[ӌ6xm4v?+o#m'Ec!N<ϳqD7Do Om#nN?2?j4do5psv;CvJ2ó7֯i? jBE@XW&ŢIϨ5>`%MYgbToG堭D1[H|.B&Kf寢*PjunX g=`?/2[sސUl;# yzR?H iuj);j|e=3eYc8ؖi`0c{K>>/ f ~pg߇GLSw a0b||clR5".3"߀G'*G֟nF@T+~/bG&|`Axzx_* 'X?2ϼ`I8 YoNh P\ʯcfYmjp{N-uۇ֊^oqUM,w/Pe0+>nۘ;]i~P羞7}}TFw>? ]EeE-SߥA|? @~× Э6 \ q81^@- g%"KXΔO57@OI8aR7zr=>J|.s[Ӯ?&S'X8b/rh3AE`$?H(݂̿ABߗA_ļص 3*발>2zЋTSJ>[ur{,m%Ǫ╜٧ϖqA"C߱nM oOd&T GDzPHk)HV~W$;G% Py4Ӵt)ƒAjjW]GjJѵ{XꈛZ67 $z~u$Y17$%](Qs*Eh[ u{ϲt$ٹ$*R4[066眈τA ^ηHȉNEо u[G3e_MI'^Nq;׀} ѯ^c&IIvS;ɚo`!R-{~E[̫٦Szo Gjcg v*MܒqJ@S5SUQ%#,"5jT e Y* Y 1{b4ZP`U{fPwVw+œ(0JꢬUg'6٫NZ`?rۈWN3_ܳc3Wkaki(Y<%efh34:4(͊v/<|b~iVw` ˊ]-uVF<+7E1Aq/X4Iyط$MY7pUq9J$*kD*EB4#@#f<ِX"'K PDͤ諁G6Şqo ky,&>|e~͌B/2`J#$KsN%yQ c)ZtR8}vuQpz ?d=ذ*.|ӔǞ SʑNA֦pkO٢^۳ʐzKW a5#)Ǔ5p ]\M  $Gt1wll2߀t.&Ef" @8s.UzM-S_l+`bx}nLQ]];IUn@PN[޵så\O#K/Pl&Mމ` ѹ?! G7ɉ35ϫIzNreg  eG%٦[\U2sMH "ّ]W1|vA(H&-E{"E}9XLr&"%0 Qqe[&Q2kJI/)[Ij Q)ԼSu˅sỷٴI"H%"KETO0i<%~Zo uFrX$wB<KK=;,SfE9 p:Mvɉ hGZԠeû=GԔdXy"tpmV0.tY'-+#$zjg ԧhYIoW1@99EI!<iBP-?6DQh)d*L"Oi8Ev+k*zocq|8/n#Rm\.^WZԤVUHp`H1UsEfR_a恹c^qJңߨm(.J׵B! $?&l^<~8Iv 慥*`,Y8 KY$uItR|kX)6Hn^&e?VlX"iGUǍг,I:|!TձmPYESΩuمo@'jiGxJ'g5s`KsYTyy-*iv EK嫳ՀR0AYe>5i4Tتy?ugXD5F4rfMˬPWI r-v Lͳ @e#bsɄW"undGB!+Z"a BtI0zoV(K m}t R~O)(K"-MC1|_s|D->F` HOƳkJN2-[I~{Y\hTaRƅxcu ҈,A[:PYx/mѐ^R̮͑tT)[yê2 Hb5GL:pf+#p_PToNGڷ*U4A[~.WeѾbxR*k!fOES==A3H>>+eM%6B !S\dVj' JM:y`Y0LBW M{ !PU7[Ge[SlP"[hX'W B7FH-cޡ` Q#*B 2NttTǵU0GE,$\u &Jͤ >9lvlxG%25T[rqc8pJCkQVkW5uM݌;UPUB Dmh6Q)9Q^N6ρn҈7*8jޛs)DPN ,h{zj`78槑mF5~hNss`8)6lKGdfiJJLY1b<5,ET阩|jkEFmŒ|Wdcs0f"A"g&t1W#iWR&XUXB{Q_N9TVbJ_&Vg*&.:wVWྍ<կ"NVC䂉JxRv+AV7%Jٖ(SԍTDI?< &ey,a8k/?؜jaD:Kq6 e)!$,o __S ^S(j q/j55J !§,pA`'zЧYդS1E/,BXTȢp=hPN)7;d)H,lB j˅ztxP]?B]Sv3}#;u,CNR' Dj(}qF]A+T&"f^9"V(@2 UT/0H #ٵ(*-[^_UJG\$8l=Q 68%!P8)C"Ij?oKHyHLJ3ϭ!3CՂ%J/ NW')zpG1L14rRk*JWZH,[0.'0K#[߇ⵜQj̆&1G @,Sl/֖T5&&V 㢃DI{:P=o;ZF}Z79$zYslփr`$fN=rPI(\\|": :iZ^K  Tz_fٯ\Gv_g܁knϑԈBBxmM : bOM#cX@ne6pv\>&ciԄS~+)f k"2QYZr_W&cNgUpHo5$b{Yp!kiq0XԖW(W 35J˕W$IpT0#7"Vv8*\U.մg50,Mdс3&23ƥ[] e ;yl5F~sU;;e:XJ*F1\[+s:mY.tS6HS3!~*ȝ]FqK&5E-*gw_UА,_%dܘv\/n).7[wWP-(H$"zF EFG=čE%6f=HRbL UHm+EYܦjy ;NQ L+|h'_V}U-LinYgu8E!'1}9 uT#g^i+Ա&I6'XO|D]h [3sm{=[;piS\ ?"Ex+&alxLM-Bǎ҄aq㖇'=A<H.F DtRc+FjUA}i߆r++T3 Md{" =GpSRɸ9|^ԲA{$~< =ɘ}WG GPѓoPK-|RV8!bM6o"Giy6(}R:MzAvelҔQP!]rǢPkxPfh7jTW BI䒖&eS4.J ;FoAf.Pnl9rݼ,xcmDy!mP)F iɣ(M` YE0b:4_h.8Mn΂E*Dt񜞤5I${ KJnfD6y9Xjo-7f~W;* 6 v{01QoVtFQS݃ӏাu+ą(B ";v;ЯۂQҁ0|~kfy[-t~֗!4kM_}kZF׻J\έ3Dq^d3Bv^^E(w/, Cd SRd#)#, 5a:U BFSf>ڿU4 /Cy0HRU0ҒFmS-8ؗ˜ CK5nf)ПB̥] /`F(줛T0K^ƴYᮬ-8-؞BA HDɜ4-k˭F`B8;T#Z-h71@>{m)PU#g <WTyCP74R`_ 'b /mf5Iz7JψiD2V MY,,eՖGq ҋu,8ZГ(όneF8m}w,3\J p !F`dA#Hgs2Z!uѼW~уs2F憏]Is4bOtm/c|MI/E\WԜ}'oU$StJ{4B;&M[Lx3mwz<@sp!zZ!KEy05̮;,kjY_?l;o޽E>4I_K1kr[Rg2\U W@fZÅ*t sI V QԿܟv:zTj\;{7c͋9|$7f.^@`ݦp*K)v)U{?u|mgMxWi !GOUhL{e8tA'vV@p8'! 1yQ=y절K5F2ȞcCwWTp127n, L8yH ~cI NPZ+R dŽFgs2rw7" g*b֓@icsÉrԦʣM+# !b!%s nI>Ƨ@=t*ahI@]_ӻ1<=p#)Yk,;{.s=B)# WY7)Џ8L߷ϋLG#!jϗgq᩺cab(`S5ZThɠovUN뙤YHYsqRD/XN{{0{|ofIRwm4O1 H9v"p>*@U` 9*FDOv]_Z)yh}CE- l4- - D7 Jpo-Ǩ18y?68qKOLMH\2˝sW|9^ v3x̾9L35~٦ݏay8Y[xTKTʭRvkBx*Rzk-o aW0^GD l~McֈJ-^:7,=1~>ŧs]7r47 ^I?kΓ%˿{!Dn>4Lp0cqh am%滯1nϨ3QPӾw`,#Bb@u<}]r{8/5/g]߃gr|Gvr[j.`$fu^ߛv]q"Z do<.3ŏhbPyu7TvӦ׹{N<'.z(˕ qlzʹo}o죬WR':MěɝV5g2=) Iٗ˳'֙O)aw^>$WgF۳~'.}|d(l^*f&J0 oՊ=_4TNR-b&Cm,''B/^{d@ooâv9 {wAo{+G0 ?J;BOol*~^q?y-6}`On4?7)Vuַ1keγVO PڝJ؃e4b 2F|PR1팸u 5[2beG:/7Q{I{豔c S eRuB_wz8\{xbJ]7)]'2rKe(OSː{ ?J.e_E-Wf`<:YUϕNӟ;JrfxhaǰZc/;1!*mhO(f@>ys{(֮+[3lb:2.zܿDxA=)b59l$d޷:=fYXpW5 ?J6ѼxqF?N}JS/~s_+1DϷ^- ){1@ 'N"b㮂RWWw]V!SUSeUEU`㘢S*T]jtءQGPZ^4*32M?Iya+{:>`r(ݨË:l8p$@I,D[@FaFd3Z2յed`ss Ŧ| 5ΉU? ʓM]}6 !js*s.G~RĶh5qy4^Jn? fYlz!;ݮi 7$Lc( ~y͜Nw9m:3G ܌ ht~9t1?өݘ}ؿx]Q1h`$tUOyV_j:o\{h-g-'ʹNI>@Xf[qŻMo6&޻n}skM{M5&Mz\[9_ (Pvy?ʴ,_ ]s$~7m/[,w[ACM<'4fUݿ\(*\~f0 vYl3=M0 <\@k?Zŷ`*l.;vVԼW?O=Pʶ`[Fޚ,~to ]u϶p5!\ң95Nj5/ixW׼9465h &9l(Z-yiWӒjCQkny$Zo8 bb*!U|G'DkyjI!W!nKąhPt3/:G\&[<o,bDM TMӹ?[w,1޻'|_DY݀TPz#KoyK(g:wU4ˁ?__adqWAil*1Y<~=&dj12փ*^ɋ1#*sLkyDYΣ {& ؏EdL&2d/Z+LA%~ۧ˰:4s~5$&uE{ZHqͬ# 4F2ܭ3q4ͼvr#kv ZC=$>ܩBXZE1RufqKMz%>AM Fi"Fhl"f57WMN!o1CB0,1|f*K u#K4!G1gHd5L B@}NRj$_Ko(ղդ E$LPFkEf(#2ZPDd Q)QڌEfk5HI6pR5^!˴iFi7J3=5LYp3ݰ\|SRT#6/4P4#Q;9 ǔ33W3uykC^EX/3W 4dE$·lc&j1H5yל+F#lEzFqf+FtEӌFأ҇y8I^Ct5#y4pE&fFDdnfh(_vknd~hA,靈8g&-5j$هZ]@gqAW7Kz3Q DGk*1?Cu5XDH:z{D&:25\ARk+7g^Mh!ύI(g[Dנ%X&.|h^oD|5w/*r,$"YDG$,шf8\"2Js9d9tb> ą9< nlC]fqFӭi$Rn4{G4&G5(ޤ =91:Ghx<6 {YAZ.mS&,Y4 .EF-ldymO&I?+k9,ϔ&aS.)#4hDfx7xq3K%?&kJP\O3qRb|hB (> 7 w8nzš9?i kL숹D̳ a3 O{ c,)!9L-?q`3a^jt{VbDd4Ե@N&7s(A3g@ƚ7(7ҩ\,Գ&܍@#uCY}$**we|ΰ< ia_xhqWP/_يW4~=XW֟dQsg*-163֡=lxO8G6#( ő :]AabZF@9gϑ: cp셸2u@9ɐKtBdUe s (6Ȋ3}z5al نAK^/줽 =3iÅ PB,fn 0Ba D3aXa0?S+<&S~"B.4w ={AӴQ1 V$JTkUz"\L:'J]X_@²dYH'+/H!\!"do~,`eP._Ұgȹڑ ؉x$ocE  Y6s3$bd'`lL۪ *"Bry >%#'ǁ3妮Pu|:F\Xa:?jy AU(NDx.J}Pfhs!(948?ABXxnӈ "۰fF: BʭYW =~4Ih4Y CTٰa Ϲ†3]a,sAg߽pK}aA6|Pa9&!2wRVjQb;l2 XTo$|~ !4kسK4oGA\P! I}kb#`=5{T]" ;\}3B1Ϟ 2hpQH]؇n[c2Bᰃ3pBٸL7khaL 8kQV!|V".Y=t5MdZ^Ǭ- 0!Lm;يCBu#hmWLhP,mAg o4wDR2dj 0q1!Az5?uaֵ"*)8=SzOF&+=h6VF _d3 Ix kwq5xlDkA] +4\n|~930 gFőZ c!BfC؍5@lkg܀ ^sӅY`5DVrz_SކL4`ˣ/6(g2<~\>xѐl^eB9uf>̒}~5L"r}ZiF-܋Fo%<%c?h3Hy ͏eI Gb ~VԃͿKcԒ%]5m, rsͥ,r xK㴲ؒ*Ks\ xB ILa%(m}& X5 Q{9 PtbѲ\K>U/n𢞸 =:pWƶ5xu`)؍ˆa^;갪YΐC,kDIV~VVݐ(1N씸oҙku+]ԁ7zkcl8R]ӐClWϨƛf{`8^#lU_AvpQ 8ضоa t3kƍWUp,HI}0 Za$QA?X,Ɓ-Ni6"0-ɟ3{kp9 qq菃𬐟-*sȈ5]DkY,gkQհ鰵"oӚdeinBtie^D9*[s 9-ֻDŶ6nlȓ&KLm;:ڬaZ`.Lq }(}ISp؅6Q*ޥI}/q:qPgP-jc/9Q}>Ra \vMW906m_m#/Zj!<[ _qBVW'լeYԼhsL:kJeT98d8;yb@֋RƧ\>᧦'}>}KJSӟ|: LyH:ġ \ uUb<.Bj I4.S]zXrwX30[t|LZ{AG(_z!U8z/^ՇT6 _j?VA4N[;Y=>eQx6 M[˝LҴ:*-G+^RҚ](ϭ ZO&A}{^ez_AuW6ª\ 䦌hELzj좟zcmOȍl6H0Cf''ntEtɴ2/=F4C0JJ1Wsx T ," ?lKQ w+걆 S`/#XdݓWqw·;S,mboMRuѽ*f'7zkujpmCVۤ#SprLzo eа  64 [6w ݞK8zM>uР']As%.xc&o0JA93oÂܔj szAS$T>Du)gh1~ݼZ7hYջzAS;n춇Bu^UhW@ێul()^{_,,8|OxR,SY\}S/L+bY5GFi|jOAu'_c]ĸ1fՂ۔ r=om4=j g |t'qb ?mX?׭MȲZ/Wuw`wܞ s^ѣ5 eaOYu90պqk=puqiU:ḩU;{k!9Y)Ҿb݂"!7Q\ ?߽zgUf7o0.~=zSQwB:CIeJ J3e$EL Iʘ22jlfCrv9CbrCIE ʨr!K)K9.瓐$2 f$9hT)ELBdd$IID LTSrƈ1H]ÇORLI3ILv%V!)2&II2$eI&1rɨ1IHLR3ILI&I"1 JI)b&I32$!I2&KIH$eI&1red*АJBRdL$dIʒLbI咑$b$2 f$9:SL2Dc$!R&L?ӣCrR`G}sދ eB)qθzo{c!qK3\iS7P<ōbX9)S9+*qDGϬleE?y~F2)˱ʼnSيYlS̘ilem,;PJ3[)}?_;%Rc+WLM,VL!;[|)LZ1eDil 7̴l<lB*!XDT;|N}{Bu/fd#Soc<Iy矪umb)rf)C1?f#1m ie2rѱ2EM#χT!?'2Nc&e+^H211)Fӧ"/# !lc95E8XY#)etr~N5Fȩ)>ŗFó:Rsq)mvReDdq FV$Y?cb}dgc+JX/}k7&2R OP~Ejj2$E R"8KA;=ջ(8=;i5j-'t Yiy̝ȿ?#}*z/Rufs=HOkWe:KR*b?w=0;z {s0wpt]Xy"ը ڇ8rdyvۣ\=z7e"G]mGH"zNo ۚ[܉ϺT{ZanV(٥eS{QP2j"f*.$rSA֌<ʢ75EmEG?]R}2tOw=7VF{g]xc|Sqoķ_M>^wYuRo1sB*pM0Q$_TAɋMmǷK7zyzZש7V7h70ړE|>QFUihwgP][?m=2*hH☷\}w^l܃~" d: ͗?g"M;#E8ܛ}doʌߧ5"dt0M^d^AL_u\ڍoD =ͫeVf6s'd$8P}>N#G}#-:m;{ɍyh~PqGȓƮU6B>|qooyUOs빋;|Z[}W3N\'|XI3_߾0n:$?jE яFT>9Vyl36sa0՘oZJzQ\<*ѓ?"Ust=LDƣFv)߇Րn%zhv%/{"ST3mZ"+HaP}S]qgIJ6TOqu=U,Y87~ͮD2ΖB>7g>13~GsZGeHU&O~˾>z%ض쨥x>1w䙍=ŝtկ q/$Q^(F%]=݋?URZBȮD!61Xqο嗺X:=3^a1Q<3_F_n+աYVLρ#SHRs;OHN ɡB3>qG|p(DzhȯTR*@1vV> endobj 5 0 obj << /Length 242 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gaqco]*cD?&4QKpMCE&o3;_QsMHU9D\t)sA0PV_"go0+KHisl,*LLp9/;hPIK/+9qL3ODc"L/XD-R"&PP9?to9cdO^b_(UoJR,^t4fXaV*l1s(hf6dZA.$iuD"u).S!&PO>r7V:qqXVEI0U=0mG7sAWmV*Z%c@b(d,nP\Eb_Xje&sj6s,!HjU@qn5CB!ftO"(S1 endstream endobj 6 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 5 0 R >> endobj 7 0 obj << /Length 1100 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasao968Q9&AI=/pdUZcKcb0YV5PX5.]$TD`djHhOm=Z8n=#bBB0ulWKOLp;rIK:J%!SknV>3/6R/#6>VLpZWMkUF9,F?<#%=hM6Mkp!uBj5X$B2#V2>=u>L)5!(7V&8*!fU%#V69""keG\0eUbVCc5.r[(!8>"DSYhfG[893-2tT1i8c%;:Z3D/uE8j?BK!h$XJApc)$;3-ItK1.bP!IVr357,=/cjMBSALe)R#Po&70$jj*1c,Haa9iTARZD>$lCoK*T6^XuqdGRg:a=7sCF&@T:+8e'qhSZ$hkpkh(3/N^S+25;.:g"Q8%WNhlUF6rg(0&1BXO((l>;:%"FU<.[UZE^W'Z'?VtckL)2MZNV3*-J>irIPqji:W.#TTu%jI5EX$d;62d51St5A8+Vm&R"8iCZ#^r&J,(ZM2DTb\)BGmcq+h5ghXK-Rii#oKG?CT>/@u_0ML$gnDYSfs)M.]auTrhRM/Hi8fGL2O"tk<&ncl4F46`Mlpi!2AtnGL!`:[)QlcS*7A8[R)7\pHK15rmH>*7]a?>;jh0J.0ln"S@mk-",=nfhiqo&j+^$Hd23H9aXfL8\GGK[=C2s>7'6p87ej'W@H'[TPF:ha)(JJ3*V^OLDAEAT7o\N/pk_klbaiBNK)d)dMIAX8?J!B;A5`pZL%t'I<)4e*Q2ef^NoVMGn\J!0L$d%f~> endstream endobj 8 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 7 0 R >> endobj 9 0 obj << /Length 71 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iGoCd.c`?]8EV`b1=.gR0K1`91K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE! endstream endobj 10 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 9 0 R >> endobj 11 0 obj << /Length 1807 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/lc#]C5(rl%A=)dGlK*hD4CSj8IC#!]tBr9-%4Z#;5ZEp.qndD\&+UTAM7%q7/dba*rb2SW+[6XLX*.U<3(_$_!5`E'Y>1UTB9Z=T`0d-Q!*>*.1K(\G_mrgb^ZFIGZ>SsBoLOT@.3WOISrcPKdUFuQ'a&s^WP_"9Ec55mkig$s)1OPsJ5bLV=#`J[6+WEd^R]jjn:K6>+\aYW35SL$R0W0Y8oI#b[9?Hku`/3cO?n0D$JO!!X#CaE-&Ao%TDC+A<=UDr)\p4kNi+Z:6>f5J[^Qp'ECW)2,&P(MrIe7Lu$H/%0D)-+WO@oE"Kofpe`qJIlp!2$N_=pdEPhKDSKMfL@6gqa7GVP/#94"kPdEq76GmBE:.;$Sa[f<[5fZX%Efbb3#e6;Z9O_N2i3Qj?g(Z,,P/T1oh2oJ:XTO,DN?=ecDF2hl0AOJ+4p^eFn`S:)pZU6=4uHD*R7;`mLIlj0PoH=(;Qa@PELC(dl=1Q7,7&BfZptLk@9tIfV)GA/58_#`+:r3[]qG=M6)'nVns*C.91'P25bK@"4j)_%<]lLG2n!bd@4a,Z@B>JpAOV%5pS[jo(6.0O&EjF1_`(h,Df2$bm[KVboVWhY!DofsXBu"@Sg/S@I@nf]b:74$^#/pOcNA`i2+[U?U*8;GZRnQlQ>rna'`1XW5_ht6..lst9:0.U9XhFG25G,d!pu;d'0O`bmJ_665/2TBcQ1S`?Rm)>V%+Z7`uH-WZB9V(roZKNC[m_~> endstream endobj 12 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 11 0 R /Annots 13 0 R >> endobj 13 0 obj [ 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 28 0 R 30 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R 42 0 R 44 0 R 46 0 R 48 0 R 50 0 R 52 0 R 54 0 R 56 0 R 58 0 R 60 0 R 62 0 R 64 0 R 66 0 R 68 0 R 70 0 R 72 0 R 74 0 R 76 0 R 78 0 R 80 0 R 82 0 R 84 0 R 86 0 R 88 0 R 90 0 R 92 0 R 94 0 R 96 0 R 98 0 R 100 0 R 102 0 R 104 0 R 106 0 R 108 0 R 110 0 R 112 0 R 114 0 R 116 0 R 118 0 R ] endobj 14 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 655.001 179.44 645.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 15 0 R /H /I >> endobj 16 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 644.001 184.15 634.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 17 0 R /H /I >> endobj 18 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 633.001 211.48 623.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 19 0 R /H /I >> endobj 20 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 622.001 209.1 612.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 21 0 R /H /I >> endobj 22 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 611.001 209.1 601.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 23 0 R /H /I >> endobj 24 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 600.001 207.43 590.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 25 0 R /H /I >> endobj 26 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 589.001 219.38 579.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 27 0 R /H /I >> endobj 28 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 578.001 198.55 568.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 29 0 R /H /I >> endobj 30 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 567.001 211.34 557.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 31 0 R /H /I >> endobj 32 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 556.001 233.7 546.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 33 0 R /H /I >> endobj 34 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 545.001 196.32 535.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 35 0 R /H /I >> endobj 36 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 534.001 188.56 524.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 37 0 R /H /I >> endobj 38 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 523.001 192.45 513.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 39 0 R /H /I >> endobj 40 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 512.001 185.78 502.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 41 0 R /H /I >> endobj 42 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 501.001 187.45 491.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 43 0 R /H /I >> endobj 44 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 490.001 190.77 480.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 45 0 R /H /I >> endobj 46 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 479.001 191.32 469.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 47 0 R /H /I >> endobj 48 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 468.001 203.56 458.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 49 0 R /H /I >> endobj 50 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 457.001 189.67 447.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 52 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 446.001 224.94 436.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 53 0 R /H /I >> endobj 54 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 435.001 207.98 425.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 55 0 R /H /I >> endobj 56 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 424.001 203.54 414.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 57 0 R /H /I >> endobj 58 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 413.001 196.32 403.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 59 0 R /H /I >> endobj 60 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 402.001 238.24 392.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 61 0 R /H /I >> endobj 62 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 391.001 218.72 381.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 63 0 R /H /I >> endobj 64 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 380.001 206.32 370.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 65 0 R /H /I >> endobj 66 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 369.001 187.89 359.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 67 0 R /H /I >> endobj 68 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 358.001 191.89 348.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 69 0 R /H /I >> endobj 70 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 347.001 268.01 337.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 71 0 R /H /I >> endobj 72 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 336.001 193.0 326.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 73 0 R /H /I >> endobj 74 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 325.001 190.21 315.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 75 0 R /H /I >> endobj 76 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 314.001 202.44 304.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 77 0 R /H /I >> endobj 78 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 303.001 191.88 293.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 79 0 R /H /I >> endobj 80 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 292.001 188.0 282.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 81 0 R /H /I >> endobj 82 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 281.001 276.3 271.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 83 0 R /H /I >> endobj 84 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 270.001 250.49 260.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 85 0 R /H /I >> endobj 86 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 259.001 236.6 249.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 87 0 R /H /I >> endobj 88 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 248.001 202.99 238.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 89 0 R /H /I >> endobj 90 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 237.001 191.33 227.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 91 0 R /H /I >> endobj 92 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 226.001 189.11 216.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 93 0 R /H /I >> endobj 94 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 215.001 190.22 205.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 95 0 R /H /I >> endobj 96 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 204.001 251.6 194.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 97 0 R /H /I >> endobj 98 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.001 192.33 183.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 99 0 R /H /I >> endobj 100 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 182.001 290.1 172.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 101 0 R /H /I >> endobj 102 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 171.001 207.43 161.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 103 0 R /H /I >> endobj 104 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 160.001 238.26 150.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 105 0 R /H /I >> endobj 106 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 149.001 201.32 139.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 107 0 R /H /I >> endobj 108 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 138.001 189.66 128.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 109 0 R /H /I >> endobj 110 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 127.001 238.81 117.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 111 0 R /H /I >> endobj 112 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 116.001 170.66 106.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 113 0 R /H /I >> endobj 114 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 105.001 219.67 95.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 115 0 R /H /I >> endobj 116 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 94.001 218.83 84.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 117 0 R /H /I >> endobj 118 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 83.001 218.84 73.001 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 120 0 obj << /Length 2026 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/l>Ar7S!/9>//,V6B&+r>QPiTk298a;D_cdk'(^>VYka7`*V6lIFqt8FW1?CoaHJ)]Z4tTTY@Ot#!FH1T+,d6C+T3q1EEMh$+^)B#l]+GoB`EtAIN"q%1EMp_sc]dmk=2,Rs*]K;Q/(^C.5J!:!a;kft"St#s.sJNJ_.=lG%\"nq3)bFBe*@ZDL'eNVSQMNn8<$tRV[P1?Y+1A[oH%SnRr>u##7qs)\df!9hhnH(KPkNdX&4VLf/F,50*_m8[+OhWMk3XEW(FlkV2DWM$B%uSq_6In\"9S6e\gmG&hb!Yk(7S%sT;Ei3Id;R2kEMVX3Mj!WnoS2/79GeOo$K[48l3KFY&o![muPmfN^(6u)A;](PCA^tDr*Q:=lCSWqZOpXkfB!eJ']m^uKdHtJRKmpmaXRB=r:IVF/L^2snlF@ac-B@e+6CsqU.e?Wa.Vl%s",8`3=JM*I=gr$HaZ(&+8Y@jsQr(e)HFe6[cl`KILGL8AMJ\Fd8h4[QgK*,;q,Rb7J%&h2HR*EK2H/14[%fh.b6B."niW.V!b5>D7`<5RR_+E,+0\G.U7poGe-Y_0"$HW\+A8gGIbr,Kgg(=F`"p&.%pH6+Z7>0Q%PLMn@+tW/mc15TnG*3=)rO_M+;J2fW$'"G_:/#]sD&irmj9$5\h`[na^eL+#?\1Sr))\gIJ6f7jqT,)SuW5i3jnFQq<8)hb\H2Y1L*.WM>lif?RB4gBT1\Cfl)!_H3!Fa1<.>!=TP'FK%e)!Ss7?S]G=j9mIYtk0"moi96i*X)ch$iPk+f`Ruc<-bC+.=1JfbgVXR2/V$)66&k*#mDrDE`'#&=HkWDN&R3@q*g:.R=3F=`d&I>%L*p?r[+:RMM*0(bI\V5*l"Wq<:60iO+OGC3UX<^Y7ChMM>\^$]FDBo_>;V\ABQ%7E&"dlRN%El&S=gH'!hC0FXahF*@_4pA62)W^O&l.7d,M4^]]ePJ/r![J(n'n1"SPu0CO6blq(e90ptj(gD>*[#?cB"CZq"b!^MshK586^t;d?fOUrGUj@B(E,B'FL.QTF>t!eF*uH8P*F"P6k[1*pE&cbU**M@D^6TRfq7lt>@q[B_rbjdNAWFkR@o#g7Y:R?('&5TimqT2[fa_JMuJZ&l)_-lpD_FiP.X"U#_NodH7hLD69bXmYd_A9HK?4oVR65c7D;+G9)3]5(ncmrP&!UfD8uq`St8Tqf,8W+-AW"T"`*q^gB&/!egEf1h^hX*Ci:9N^)'7bq-mCNE1+#(ZtP4dpS2''r*+#8Q,iQRke6DCZ!7)RNL/G<48=ZY?N\,=U1`TsqCYdqo2CFFuirUIOgM;t>LaO3PX!QL3V,N`l\-Lr\'WT6?q@N1PYSO;`8P>BScI8"W8rphj&,Nq=3WnhI2t.EKU#C@qDeHG5SOq$!!!*t2H]Ek53$*k[giBqu5CDs)=2kN1+r?'jIahuD[N:kohJS5.c2pHR:`qA3NsR&9~> endstream endobj 121 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 120 0 R /Annots 122 0 R >> endobj 122 0 obj [ 123 0 R 125 0 R 127 0 R 129 0 R 131 0 R 133 0 R 135 0 R 137 0 R 139 0 R 141 0 R 143 0 R 145 0 R 147 0 R 149 0 R 151 0 R 153 0 R 155 0 R 157 0 R 159 0 R 161 0 R 163 0 R 165 0 R 167 0 R 169 0 R 171 0 R 173 0 R 175 0 R 177 0 R 179 0 R 181 0 R 183 0 R 185 0 R 187 0 R 189 0 R 191 0 R 193 0 R 195 0 R 197 0 R 199 0 R 201 0 R 203 0 R 205 0 R 207 0 R 209 0 R 211 0 R 213 0 R 215 0 R 217 0 R 219 0 R 221 0 R 223 0 R 225 0 R 227 0 R 229 0 R 231 0 R 233 0 R 235 0 R 237 0 R ] endobj 123 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 719.0 171.21 709.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 124 0 R /H /I >> endobj 125 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 708.0 183.45 698.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 126 0 R /H /I >> endobj 127 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 697.0 250.49 687.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 128 0 R /H /I >> endobj 129 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 686.0 224.39 676.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 130 0 R /H /I >> endobj 131 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 675.0 318.27 665.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 132 0 R /H /I >> endobj 133 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 664.0 224.37 654.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 134 0 R /H /I >> endobj 135 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 653.0 223.82 643.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 136 0 R /H /I >> endobj 137 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 642.0 174.0 632.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 138 0 R /H /I >> endobj 139 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 631.0 236.6 621.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 140 0 R /H /I >> endobj 141 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 620.0 228.83 610.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 142 0 R /H /I >> endobj 143 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 609.0 212.98 599.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 144 0 R /H /I >> endobj 145 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 598.0 222.44 588.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 146 0 R /H /I >> endobj 147 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 587.0 187.87 577.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 148 0 R /H /I >> endobj 149 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 576.0 251.78 566.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 150 0 R /H /I >> endobj 151 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 565.0 207.45 555.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 152 0 R /H /I >> endobj 153 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 554.0 223.55 544.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 154 0 R /H /I >> endobj 155 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 543.0 254.94 533.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 156 0 R /H /I >> endobj 157 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 532.0 176.21 522.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 158 0 R /H /I >> endobj 159 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 521.0 223.27 511.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 160 0 R /H /I >> endobj 161 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 510.0 214.24 500.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 162 0 R /H /I >> endobj 163 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 499.0 187.88 489.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 164 0 R /H /I >> endobj 165 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 488.0 198.44 478.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 166 0 R /H /I >> endobj 167 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 477.0 184.11 467.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 168 0 R /H /I >> endobj 169 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 466.0 185.22 456.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 170 0 R /H /I >> endobj 171 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 455.0 204.11 445.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 172 0 R /H /I >> endobj 173 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 444.0 199.67 434.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 174 0 R /H /I >> endobj 175 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 433.0 187.44 423.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 176 0 R /H /I >> endobj 177 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 422.0 186.89 412.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 179 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 411.0 188.56 401.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 180 0 R /H /I >> endobj 181 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 400.0 185.78 390.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 182 0 R /H /I >> endobj 183 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 389.0 203.56 379.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 184 0 R /H /I >> endobj 185 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 378.0 190.78 368.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 186 0 R /H /I >> endobj 187 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 367.0 198.55 357.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 188 0 R /H /I >> endobj 189 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 356.0 190.22 346.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 190 0 R /H /I >> endobj 191 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 345.0 187.44 335.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 192 0 R /H /I >> endobj 193 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 334.0 199.66 324.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 194 0 R /H /I >> endobj 195 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 323.0 193.0 313.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 196 0 R /H /I >> endobj 197 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 312.0 203.56 302.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 198 0 R /H /I >> endobj 199 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 301.0 208.55 291.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 201 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 290.0 222.43 280.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 202 0 R /H /I >> endobj 203 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 279.0 214.84 269.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 204 0 R /H /I >> endobj 205 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 268.0 231.06 258.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 206 0 R /H /I >> endobj 207 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 257.0 237.7 247.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 208 0 R /H /I >> endobj 209 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 246.0 210.83 236.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 210 0 R /H /I >> endobj 211 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 235.0 232.04 225.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 212 0 R /H /I >> endobj 213 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 224.0 177.88 214.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 214 0 R /H /I >> endobj 215 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 213.0 271.76 203.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 216 0 R /H /I >> endobj 217 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 202.0 290.1 192.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 218 0 R /H /I >> endobj 219 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 191.0 215.93 181.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 220 0 R /H /I >> endobj 221 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 180.0 222.61 170.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 222 0 R /H /I >> endobj 223 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.0 184.27 159.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 224 0 R /H /I >> endobj 225 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 158.0 223.27 148.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 227 0 obj << /Type /Annot /Subtype /Link /Rect [ 168.0 147.0 245.5 137.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 228 0 R /H /I >> endobj 229 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 136.0 237.88 126.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 230 0 R /H /I >> endobj 231 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 125.0 218.45 115.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 232 0 R /H /I >> endobj 233 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 114.0 216.22 104.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 234 0 R /H /I >> endobj 235 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 103.0 222.04 93.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 236 0 R /H /I >> endobj 237 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 92.0 269.81 82.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 238 0 R /H /I >> endobj 239 0 obj << /Length 835 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/jbAs(+'Sc?EKpH.EMJc[bFkY-N1S1BKl))p`N+H3F#"Q[Ie#+k9"u-V]U=0TDI)_XOa+BFira,nM(a[J^NuVTco2.8eI'diHnuE9jR'A+X@cH>X,qJW\ibg"69U*C_D[89l>_mc>)s6JP6KP&nRjuQo@%pt]]C1<$J5-cW7@3o7u5gaFa3L(>iDYWs5D2kb%=O:idNDrlZFCgWSNgS8LFgpt4Y6F-5%n:[ug'!!35uk:T"nQQV)f(LWh]@)i)`9sXng:]uUt&C?hDj!nJeDSa6AYZeX_bJcc#>f;1kC1K)`?%OqPAtHc/V6YmFGAtoUpbcJ6j&ZN@9b_NQiEd,ffG:*=*_Vn:ZVE[)7VX5)ot->@NVLlL!<43 endstream endobj 240 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 239 0 R /Annots 241 0 R >> endobj 241 0 obj [ 242 0 R 244 0 R 246 0 R 248 0 R 250 0 R 252 0 R 254 0 R 256 0 R 258 0 R 260 0 R 262 0 R 264 0 R 266 0 R 268 0 R 270 0 R ] endobj 242 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 719.0 250.64 709.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 243 0 R /H /I >> endobj 244 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 708.0 214.54 698.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 245 0 R /H /I >> endobj 246 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.0 398.68 687.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 247 0 R /H /I >> endobj 248 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 686.0 208.69 676.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 249 0 R /H /I >> endobj 250 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 675.0 189.14 665.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 251 0 R /H /I >> endobj 252 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 664.0 209.82 654.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 254 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 653.0 181.78 643.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 255 0 R /H /I >> endobj 256 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 642.0 212.6 632.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 257 0 R /H /I >> endobj 258 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 631.0 259.81 621.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 259 0 R /H /I >> endobj 260 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 620.0 164.56 610.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 261 0 R /H /I >> endobj 262 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 609.0 229.83 599.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 263 0 R /H /I >> endobj 264 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 598.0 233.15 588.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 265 0 R /H /I >> endobj 266 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 587.0 226.77 577.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 267 0 R /H /I >> endobj 268 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 576.0 208.14 566.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 269 0 R /H /I >> endobj 270 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 565.0 142.77 555.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 271 0 R /H /I >> endobj 272 0 obj << /Length 726 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GarnUa_oie&A@B[G]]$LeRgDR-:i[\&erluk^f$h'G2r)76,M*^=3orJdV[t]]Y^AbjZ&`9CL%sN2"8:o,*aP(Eh^k-nrCIAW\(-1b\b`a\^+,YJX:s3t:Hb*MY1WM``CcF9qgsr[,"8oh]?P`?"f7b4"JO'++i*c()"M9Xe&2d'@SZspI@s151\p$6mJ`H'sV)ou[_OOOjS5:cXJ-e>?WeR)X!OZLG[.YAT(=^G::sIotd8u3KH?5I>Ot?dh%H/#U+m9^-EM05Z%u[1'd@m8Fh_J/IZ#3uCo^qV%P='?J;I-ce)2n?Df"0]5)L>%)_!J!KLHRfW(iU&`$>$QefQE-RGgs[WPL6jFN^%mOWKr;'gKXg!o>VGLG7J/l_'91H4EF)E-L!L9$Vt=\I5XRD#jj9*0F-ouns[1p?IQ%ZYW,Ao6#rI-i^pKK\!ap\,G&Z3GfXn[\;KkGNDO1.srTF3.qt`_q=*mt^X>mN'P^(uOsiRuW-RnE.8`?f]S*p^\5kD&i~> endstream endobj 273 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 272 0 R >> endobj 274 0 obj << /Length 1558 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasap>Ar7S'Roe[:]iOGPF.W6HPQijLBZ<6.#.P3Bi`RnAJ:=XQ_NKLbP'[\8X+LraE-:+o:87?)im22+6Jd]GHQW_'Lf/^cR-*.S2ch:IZ>.PA6V>6UVI8>q:`DEs)CIcP)=J7'Sdih,EcA,d!Y7;"gr>ed=BYOkCWlO.#\d+t)-OE,>*'Lk[AFop9kg"$[\2`5*T`;SnmjH5.591-iK>MK.meG[U4&H0Y;Q_n*uI)kbTre7=OFck>^!W1.F]X[+Tn=,L>mM2GUM4\TJOrkq1[G\MAs@1#K(RJuV!P?*YZ+,^NKp<<;0ecY!Gm7@k<"RMsF[#J>*XGdUlMHtKQUUV&W!][!PAe=\lhCq>h9-'NI]>h___TKf")gXGrVdlV)^IseAc&2ZCm`G+U&(]TD0Od%/S]U(6NKKL=0!B&=R8U4Kk:g*BaqKS&L8QO2EWSqd;V+ZNmm,DeBj.fK-(_iJVmBtX_bcBm,lr$muJD)Ff'9r06nB#0]Z-!4GBDJJjQmP_i#-1'3V0NN4t+%EYCf6Hqe87ig:S`:+/@2l>VAFK(K`Rn9]<%SJm-jgpW83$=mG"u09'>Pe-h9g4j74bG"d==o0s$9.3A0Te56@(O&/Cb\.WhV?Uc]8b20J6HdAF]oSd8r7?5jZqGCPa6k."QK#XLqogA\j#B,tmm3]f8ZYp)@cQb8QFMX"o,??bg55La\k#rjFB$HFg^p^LjrqtQlZ[r)I[#],0p=X:)hi>u$/U7`T^E**\]H#uh*OK4)B>E+JOT-4p_Zm5f#0[#Mo'N*N2`H@AhqfEF>:4BP)e(t>C: endstream endobj 275 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 274 0 R >> endobj 276 0 obj << /Length 1576 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D95iQE&AJ$C#eA#JCPEPr>[W,[h$-ET=C;`9Qb!E*VB)@V30LpGJH#$nE--]msO7UZr9mY.%W!.O-nJ?r#9rc+9hV+`PERH$0*;\@&j>?;_6nlfpAWI]G`/S/(ue]9d'7%NBXNGJt6HR49Fj=6<@[[8[9,rNj/ic:QFlY=E2q=^-&)[Q0t+Y7gi+o`NK%e>hg*Zq<>r-3%pF-nZBU+P_O,&B@gUK5&6H,GI$N1)ULDU6MiE>kO/Bui)D@#85[_`+;5B4p`'In)I\jP7_FSUh!;FuP!oLD>10Z3!52rH?YUjJ$N=2a4X7M_?S:3jg^[WA(5@T.XJ7pf+#&l=sn$I9+>=L/n1o@*uJN.S\qs5cLF.UHK:W:"%HO-QEbb3FB&;8;ie]?=nMBHSq#?ZRm,Th`gbY`R&uEd\++?fG8X%EKS%XFfm"(1ee9,X&.b,E&,BWIqt8s1)35@oqDDl$Bn*TV@c.[qZSRHJN.g>5.jio_I:5KVY7+f@*G6W)Pe,0j9ol?'B:mOe1djeh`']TqeF0Jd.'cP/olr:26.Q@4:?n^ecN"6QC"t/a5Z6id/YCE_r?.&e1ph(_[!TKNRS@+Q''WTfNiKrCGElG%;E\A'8EmQ62PgDjA^`F%;&t9P,"fc_G[r!m?NuRM6cSk/!SaPUWs_(VE9X,DOlo.BLKih/qhSc);""r3.nTATDQ`6>.FD$#gm*Jk$s?%M:CiOdW4C]@=H[)GiL]DLD!`=ZVg1fW-SRulY>40q4AMEXVSlqIV4r9L>%c+_&i@h+!g;hQdn&l2pd(,gY#UOb^ibd:`D[^nKe-SmRN,$Oq7)W6/2^>,LU:i5!QPnP]2eUD.km;cHI=o6e`,"&1`HoT1m5PmHd:n5>0])HN^l3N$1gl&=4a>O*eqTt&CA-0R?jLfWF#.!4JR;+NoXt%1-(kE2uh[jl.Lj@T.LN17$(."@29mM#pVb][AWF@X6VI=L*ZojS1=oqb8AJ*h:G_L2[l%,".^ME"td;eTVkRWMB8ZA1=4iu/%#)Ga'De)'ijNd<8`,J@qV?]]:VA"n+!_73qPdOL^U567&CAad*"5gQlOm.@i'#+-7m+I9nlCYM`/MjfAjQ:lp8o$gbueTKBg@L$"0`g%tPO)#Bb;)43iTF;=$14=p4G<[#JLAsHe$T!&5ljqqcT^VeMmRJ\hrXN7FJtYU)#(R^MN$2])4O[4Egb![BU.5c1NWs*E*f?dTTHGS\1R*sk=6T6]4X8gVB*,prP="3<9dJpT.R]c~> endstream endobj 277 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 276 0 R >> endobj 278 0 obj << /Length 1831 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D95iiK&AI=/(qq93Af896'j+kU72OSt$5>@DWI(;7Ysh'T*/a=Ihj4s)F6(\f(Q0VJ^_r:k_iODH^+A`E^W&(e,Mm7I\asFf4+HCl?[q2C4`fQc`*^`Sp$D.&5@6K!"B:GgO$ONpJ+gZ]4/[7*S2dWR:93YjRI[_;_NGYqgQ$0fEn\OYpJ`iXXoQQscn]O8,tb`RV]!1f-aZdnZK\eDg/%i+:r!8<>&9]qpU'4M\pn>8h_(Qo1B.cJ/EpPN&s/nJ?!fuuUV3+jG1t\D/;`?:S2G.d52D:\;LubA/n#.Ia`9:>6RAI2.2^qd#4JQ!Og<%-$&]VlK]R>=Q`T/%[07%lb,/8+!\!`e!9Fr4gYli$0.D6P8U1f%[;ME?Og5Zd$VOEYLopnY:e?L@r;8FBq$Rh2]iU7q/:u`73$;oJCFd,5Pg5&#,[=FmA7Q;KqU!RDl9,Ll)$4s_>2Z\TQJ-$iT_gIVC%]gq0l)j``9P`j>.3OCDTo_=%Dps\]4-)VAL-i+kuFL1;TVJBZXIJBa\MdW[)DQW!BI4X;iVZRdu;5M>PQo$gcKhR+(4mj*9k'r()]uCjj]F)FY%"'TZQ:Qd7HgUcn2hJMS;=1A'oQn"gY!Si26On5tHSQd5o&90mV7F@O9kA"64g\"ZH5Ls6b2c*gJ6,B@j*[o)69>om$@bgD<*M`,iXj'PA\Lh5Ahr4;*=p:"1CP,[iabYp&_pKK[PDlo;pr0X-g-u-jsF`s8-F\fg6N(f105>mJl<;;"1!phEBZgi*md5_lI5^)1_$NP3jEJG)TI*$l&*.sl5)P45%rRj4s1FAC/#C=Z'n7T$B9q,S\K?-UjZCOXI>$5G4dQ@/o=!sF?ZU9GM[:1).Gk#diC3:Ko^+fim_G4hcjf#XlRrG7FbM@_:9*3m+'aeZ!++kF#EC9nC0Fh]eXlnPsH%G/=PiQe^$=;*2IM6X<+RXD7Hg>rW9?*0\1kP"=3J9et0D+R9-As&@?2Mgbin*L6csiZCGr!c_pD;dE`62AA"2$>.?#VVD9g^=P:g1jj[rIO*SilqqAUDd-q+TVF)!gKTap>[-bS9)&XY![pbRu4afM69/a2FBnj"M3?4IY>\e.*3>:CU%/tRiCYBFI(;8dh',$D52!h$6kC-d<(RQBi;]?s.ej<:15_)gc`k&-Zj!N[%='bV0UcXakOAKcQ\NWa]3Ib8N+g&PL-s1,>!65Bg`_HrfJK:+m)Nb%Q3YoU?+$Bg1(V$-rh9iKl!C-61s`dI#_1coh!6iB$h1D&sm4l"Q&q!\9^,^_N/3dB4gW1AioI..7ni7^]!o0Wc!Q()O!^769%$DCq.Z-HDJd:SWVD6T]ag"GG9"AfcI:;*5b3DPQ/kP4"cJ:Z6[p]Gs\kJA@&]&+5t:EeO3(fCd@XGJ6:[hRf0]>"4FBr]3"s-:Oh>]Hki^00_a'j^he)da5*)Ym33>qab!X^9[DU7QFP;rDgjbI0@pi/hK, endstream endobj 279 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 278 0 R >> endobj 280 0 obj << /Length 1586 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasaq9lK&O%)(h*(qm;qAi,h8:CM8WM]JI;=C?^8g)cJH8[N!N*F!6H*R'"?g9NNCfeFjT>4)Q_irq4("d2J0$D*Prn7.#F][.ajVDsAfk@_%mU+#B_E4%^89bNQo@.0M"+gc=fptgf=K&LSSnsWNY'^r5Z-qdDI@&c0R?YY[!]+qi<)lYQ7[s#t-BlaIDA?N$!q*p9!7;6_r$eVhjMYeFCkT+iPGO,(GEt=3Hunp4d\qh0,4KqD3s)(#m^^79hKpr>m8X%soS8tX:4"Q%K'FI_%&,OOC'5+,*">)=B0/AK?5"Y[LdG,H?5@%e:"$C&8ONA3Sb*k=](-`]AgR1,2&Y2"ToO.kZtl\?6jS@$/)hXe`*QC]]4_f<.HB3$s-6mbCVs(0:.TVkm#jCfjfr.o.Pe:gg\:D>-&eqXt9_8Y0+:j,2A+Hrtu8$;/Ur*X7SK/V1Q$sHB'+1<-LWA!#7e#Ad^d`Gel+as=P6=1O\Iu$G[Mu9g6%nul[obsMa5gW:XK$E<^1?KJp0]+0Bo)`XGg^[P\XUK>Ff.^JDWuS4_7(+lG[e'0]\.McYNhlel8orWSeJ,_U'%J>fpf=8aX-^##J7U+sr>(9BPmhG'I?nN^:*#"co"#ieFR.Z#0%F^;e=DehR':OTP>#QC[dkgsKMeNoM0:3NMd'(\uRS852^c.J'r14F.[sr3)1IiU^PNhq_4.eLtTX9)'Y=cqc9Ar@OE,%S@+<`IM]/M,n8H4Kr7r"9Qsu"'9O.ca;b&.T8d;>_jq\)_SE*$7QG'OeR9=A+/.aRi8_"Qa<=HpC)Zn4;J$Dq,ZOU()4X=cMj6f0.gn4Qm>u endstream endobj 281 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 280 0 R >> endobj 282 0 obj << /Length 1995 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%$968iG&AJ$CE,r3GP9>71<'*6"D3CdquaAuJg`!ddI1N)k:t2N(F^fqR?IT42,)FnaDmWubggGlO%>j1hD1j/&Va^6bc#&)@rlJ/Nf1oHfBm87EpU=nA*lj&O6qKU'rtU5M0D$g[_K,C*S[p?g[Y!]=^Bj0#A?6qP-r?D^M+,YV9<&e>3>4Q6$f<"p#(LK,FejrK,%I30/-e(O>NQ0V15sJt5ETdO>$DBep%#7A44@\W_tQ-mcnc2YNV'ZLZWemPU//\&)#RNB!VZ7WG.9;S_:H[4d%^MFa$K$A*aFIH\Z23E]li)U/1i)^\]dp=?m.AQfcnKf)t/&hZ`C8hiF3XsP^0R\@RJe.<:,:`qKPJ,k\3=Yoi_k-cSn7Gftl)d$8bU'JKPK*3[(12amZ$=[[*6AJu-Zgh%T"0"sXgB9BKb^T6bB9&BJV0&ZFd;Q90$6:BaKQ%mC&u.\8LL&Zbq&N5R^$'g9@/^P=_hnFq?FjCm\,p->\@7'fQ&RLjW.`#d>e5ZOG]N4'aGdId9oKeZ4CLXM]!'&MA"7@O,S$`4M-(84/bpPUpuJ6OW1[tJf$qbco-CE]9hoo\2JT$%e,Be;g[kt"a>FFn2eRc`-mBkgF]-Y_%]H,.f+d#`LcftsS03o<%_Tr3^hU61$%)>Y:%.\*'W`O-UjI7$7LOnL+\8TZSsWn.)Fbp5k0_(/`!gYC9IH6Ueajqbi)Z\]"YCGfrq4VcnAp&>BBeJXoS'l;2$JjjZ&sPOKFPK;oNLV6;p)m?A7,^S2Gi;&PXh:JhNJS;lIfG,iBf8^%(E>WaP4A/ZlOWW4!%IkH+/Ji,MuDegFIJ,],>Rmen`p2PrMtnhYJ*]VNY7N?gZd>+'CV^cbLO+]$>@'E1A"m_%#o(B_@KiFV9?P1C<)oro9S/U'Bh9""iY-rO6SlhU,/IN)Y'@$/4q+LB,FqVk["K&)T5#s1RVcEd5d&*+2VUD\ZBhlb(nR0nVp3-8mo]1!fm&I*9r\sJ[R+7Ub-fP1l4bpg`H4dTtt0D(N6)jQ_$4<^'(2;h5$%'oe]d3&=TOdNu8p-oCN-AHE9PD]XcsscNLqXrN"QIjioaW>-)%edthORU[>f`pl[2\h#)HhDE/akc3pq61RM=(n&\5(7STB>O`&kE#4n')ccT&#"SeBZ$$.W\ItbUjh#~> endstream endobj 283 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 282 0 R /Annots 284 0 R >> endobj 284 0 obj [ 285 0 R 287 0 R 288 0 R 290 0 R 292 0 R 294 0 R 295 0 R ] endobj 285 0 obj << /Type /Annot /Subtype /Link /Rect [ 505.14 668.561 540.12 658.561 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 286 0 R /H /I >> endobj 287 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 657.561 132.22 647.561 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 286 0 R /H /I >> endobj 288 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.92 596.122 298.56 586.122 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 289 0 R /H /I >> endobj 290 0 obj << /Type /Annot /Subtype /Link /Rect [ 161.11 484.244 231.35 474.244 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 291 0 R /H /I >> endobj 292 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.45 407.919 549.78 397.919 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 293 0 R /H /I >> endobj 294 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 396.919 139.45 386.919 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 293 0 R /H /I >> endobj 295 0 obj << /Type /Annot /Subtype /Link /Rect [ 314.494 374.919 352.814 364.919 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 296 0 R /H /I >> endobj 297 0 obj << /Length 1193 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU39on$e&A@sB#e@$rV@5[Xa[%N[OqbSEF\cueZBk'eOMqYTmj9IZhb-P*88;^OG7.d!naLPnhTV)X\6HZDbT[/jN-js$V:t5AWd@@T\^Bsh[U-"N>K8WUkRX*sihhOX_@YQrKOHp>f0X;"Yj0D%uN$OG/XC2EqLqSrI5jr9[N.lG`ad=3UqTqdph'VI9W':1b&B[3sj%<\GQ\.*9q)ucRNg=VY^9Ld]UMUL9SS?u2=$k`h_J(806p@ESu:U#m9'\'\)(CTOsocUZB:7Y4&1fHB^X:B`<]K\[`&dTX=J^r_,fO-OpLNY<;U#1U5_g1OC_R]G]?clV3QC-&`2Nqo2GiXNTKVh):dfd?^##'flNn1ZI>Lqp.fN!*`pmfY&"k%BOP3s.:]bZ>"+hX]H.%<<%W4#p6SG):9eeHJ[ZePeb$#8,>0YRGC)NMeD1O6Ub<_1(tXB/`4KZ,'^r<5hB#Oq!^98JGpV&(]!*"[S0/U)$W2eIY$@-G.\)07uJ)L[&Bs15l711JJob84dFA*7&E2DbsAr2(OS6_ETg#-?(@=rOZ9Tf*osCJd,##-_*8R**:*1H4qm)Bk?sE^oB^MG#Z6#8QH`I?XV34sFt6^mYX#)H.3!b)MHV0@1D4I>(lU/pB,@o7E1YNn9YK%ac%>0r291Q%n`<&EYr@=V%CPb3-"n,8SQs$]A=W>=3ITc%PV'rsQ"+*Y'%JU%;p;`pQsj*0/$YDk<B*;$=c5k8]LGCr!~> endstream endobj 298 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 297 0 R >> endobj 299 0 obj << /Length 1682 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=,95iQE&AI=/#hXcH,[j*SeKPAX_<0,!U:sVfcn]/?Td?&"Op9V;pE_-.1Q(;*]?,a_*0TpQpJJY/?JI[B9m,Zlu?i^5!*0kPB8bqBD(!1Y*^2.0LdLt)C@HMH+hrga]8K-a;^Rf1RM`F?iNUjpGYK+MFK\oas:M@R[ai,1oX)'AhaJq*1jRmUeiXf!3RAl5`7jRH7\c\C>,kGRiYVMZ`3:Z!G(Ai<80%!BpVX5/FD!=qJ!ee9L'_r]^_]oZGdPl=#K]YH/5$)X3cX?X_NEL-`M:>-i+f+:D@.n>SQA%)?c0L>h\B/*WS=RZl%6,R6Of05:HNKdj+@0iWZTh5EKNB"s&YjB>dUIX6Z8/$G3lH+DH/XFmO43#B-`]ZB:EF^7PmqVFQXNPS-U/SsG)@hp`+HI9s@Yi)m7eY6Wn%71Z>P@d\3rg>L$eoQ3sRZ,BeZrC&KTph8\b@0>Mektu$j,URtYX]^Pm2>$R"k(^sJg/U0cFt/YKR3'2c71BW>=h&45U[A+%5DWDQg!q=(#fQg2q)HDpkDFh?CuneKP2Ud5tm83TZNt(S:i^Bd5WN:dMVg8$.A@4ks"[U!)-LK?q1l*rtst=B-pdbE?h-]M)g[n<"tpr&q-rRkOf:*\fntQGib*,Phpm.FU/-@QFd*'hN`e81'*#M_;i;/3ZTt,n`fgq^O(U+uGqc(I@i@D[V0P4>Ce(nm5C)*8<1[Hlp6tH\hP])#C0)c"?b`W.e)m%P=G:&5CXYbb7Xfo@2C-NO;&g&\b3&':Q+7CbrmWX#:&Tkne=*\te`Y%,p@P+'%BUAFpP6F=2n;:&=1@P7?Fg_2hcek"^I]rU5Nr#B#e.:m4V"2Feef876+fqg7Q!Y)+o$5+*,0=-`?ZL6OBd;.<7"Gh,,/M$^\sVqo,!3\T>[=LK68/Urq`F:+\bbfSo0VhIt>2;s&rb,k^T\tcAMe)8M]MLXr^1&'Gl7+gau;u>=)3s-#o"XC:S2<]6sB%Sj#htNVJ]M%K$%*YP%bZ4V26-)uU-bIM\m~> endstream endobj 300 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 299 0 R >> endobj 301 0 obj << /Length 1421 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%#>Ar7S'Roe[&GdRiD&ADbNSQ@_"^5:&Q,T8#]g^W"uGN(#]k=!#Mb0%Qg+<8I<\M(S#Q;1B\`s&YMJMu@dDu5=4OA-V9obSFP5DcG8uUsC?j2'PL$ZcSQQO@9/UfJS7F/>j)V'Ob2I^KF*.(E+S6OiV3!/N,SG.ACX]EVl.RHR39C2%qaD@tsJTe%WQH*LP&inB;pZ=b=L91hOWXI"1=Zo_5c^cnGjiF9"#^B5<%9pJWZ&qXe3M;LL_?%.$h7"b^l`Mk)EMa*u#nHV(L82K;M-!;Se_d>NB8/`TdfuSWf>KFkdr]PK%rmD7ln_bb1-t&]uFuc#&0F5($?i7ScG[GUm:\]u)U'^JlF`A-fLf#uedXQTAZljqBBWV5X9oM'#mT),C"RMSgEe50WXa4!tO21[ll7,Sp!(N[qqM#,Vk(";Dm"+lum)CEUW%ROG8BA$fqNPGLJ3AIb$am>L"^N^LDA$")F)$llJqm6r4/odne[rX;Jd1T,r>@W*2'ED/=^+O,fJQpBKkMC0#JqC>M8nNFR;T!6@HuFnTEljd6E1IDFkj\5ZGMTX)pSm'r#7n2__c'&&YSqOC1KpjG4aM$.%;!rg$N1_["'(^?j?Np86D2to/s4'fj.!2%Vl+tohF9<;r?@gTJ;)R^d?:%40E.;G"A6/RW6eu0#4gs;ocTU+a-,qoOs*kePqHg6Q^jWnG[PADDj#N%CO84@W^@KD7RDT@B!%2m/#dd\9[Q0eDoWk_(/eK28-TK0i$76Bck?Ef(H"jr>!+%8eY\6N9\D$I+kb&2*ZBKkAIf2]MOXk2/7eGXSuCOgb.Gb,Z/9S(Om'pdkBYqrmOkPhY6qS/-h)5U5Q9Gs"pB@*`;U!2pRh4oH.PACg-~> endstream endobj 302 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 301 0 R >> endobj 303 0 obj << /Length 1371 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%#bAQ>u']&X:KP[/$*h#kflH*Xg)5,e#n1G1X`hj`!AB?(<8HqW`]qd'E=0c:X&0N;QahrJnPPVSV/\_l;&<(S4:1lQ=cU`T2*si4\_?a'SO^NSC*cJ)_f"XB'"eS+tQYtu#;9m""EslT@3nLcc5&0Yl;Q0&8)o0$=Q=7CFOXZ=5-ZU.YC)WK-U=+5b;&ncE,+]j!t,IZI6-5E\GjKk>%qS.XP7H0+r(rAQC7%k*183M,?[.j(,g,1!4?Ek,fjMn4J-Vk26+>g"`u[B+3';#,R,F%c^[V]\_GdqjYhW^Y.DEL*tcYKHf8VEk*aDnP(?>KQ*FS=n1jDqY\Hro2Cs7*Z#,O@02g!%)^*a=@2_jiUkGE.1oJmZQ?+.`)U-\6qGa0ins8H+[]dt\I]0H!Ed=SbZnW(',WW^+V&ae+@^e3.(OadT)rSsIgHW1'GBh/c.ca[o%p28?[=Y,G(B3G/quSWY\M%<7OV8_dpWTD#SHMc8qH.'R%Q3=oaH#>O@4;WhfH([HIA`Gf.Lo&l`#X6"E"#-r(mX(jAb?p\M`QOVL&X'Cpq/kXW[s.0][2%G.o?^bmY!]^_'h9U;uPDNEr.((/3Bq+_Mlrj.(WN+F`=j@?!7dj/)DHg,3aOOWVmOIhi$G9[I\]j]H>5ThLmZA_:G8E)mO\]_-3[aSu;Q8SHo,_Q@*/`WV-ke#/]/b-VhMLcss,[KXC15mZ#js#-aFaMkn590]dXf?ZA+3t"8kI0Cm70001O\Ou&)]40Hp>47HQs*ZpJJ\oC*mV=`o3"ua=V!:\+[U!7QmjU);k_ojZ[?c>A!!ni/?A_auiPnIBQml,5tDmLYr<=iaI!0r=uu$qcH<\YT:?B1sGJMnsdsT<%^t07gMA?C=P2[8@#OeTZF(\rq@++:QJ$\M,V@XE\OM8&BqHk8oA/*HRo~> endstream endobj 304 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 303 0 R >> endobj 305 0 obj << /Length 1333 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU3997gc&AJ$CkU%6?[!_(Gm<1,h2FWKGD#k^cfKO7cg+-,5Q]gBOP5b3=+si6`);6oL?pP98^>XJ2T_rsj]6TI"K9:qZeUE7C_[JUtra?$F-&`E*,4)COB0EG5Wm(@:;bHM!M%gnGPmEL1u>d1dRp5B_J!-qOY/B]Z`gK,a"6-(5;68ho\6o.r9ZJ+a>?1jX$FtJQ9Wg.\k=lBUYgdAL'7@;q8h5SeP29j*&c8Z:j@r/(7Q=.Thgig$FS/gu/iIWW_JN0nYLE93qtnFcAX,*-l'$4!@K1KS4XW"Zjk#b-PAd!a9W[N9iACK7:2`#62fLm,l)?]S&KK"JM1X@$8pb^11:We;<5[sQ6#RbM,[>RoqX[@A5'RL.WC9*5`/,u["l"ZlS%:GUlZ!-=1kWjf.PEL+PY;D%&=)eaV=JeVBR$I:9s>DaMX87aeBV&"NZf>-"]9tXs2+oo4PYHOg#b*Mi6C2bHq7^.6q]2=6k_6+BX*E3sI\B3N[%@S,1?S+"S/E)mXA$BUs2%HmAa,+'XVI1QY1e],>P8&&3V*[5)?\=^1>+TFKT\i>EOYA^6+?4R+!Ki0;2=.qa;PgD\0msg"F(f2PT':3S"F+V&KE:f./*S[BY4;UPEh#>lk/Ua@&5bY:Ro~> endstream endobj 306 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 305 0 R /Annots 307 0 R >> endobj 307 0 obj [ 308 0 R ] endobj 308 0 obj << /Type /Annot /Subtype /Link /Rect [ 138.6 576.841 182.47 566.841 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 286 0 R /H /I >> endobj 309 0 obj << /Length 1240 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK997OU&AIm?6l]lAg,6,Uk5k4j@oi_O5ucjZEq$MT)j/i#O6s*#s,NX0nYDXl5XMDI2'-CB5(E0[o6N-:G/ZT1,Mu_,-bd'X@*dFhlsX@fO\ZOK]Z&1n10\S6Rk4`ajPe7\l+\S^GEg`mn'McQ:Ga#,g2n)b%-SO!W6qO5=&)23:"n'0l\6Fi=R4?<7kXhpTUBE&[UmB1R56ltBHLC[O^Nth48(<1um\n5X=f+7_S:hT1)H!*,gb#5DSQKcNF`>Na7c\Y#l#s>mAW_8GLEa?Y6M.LEOU"lq6g#9k:Kr7MhXE.gbuC;)i#7*I(s6#ju7A(^-M'C9p[Ecc?e,8/tT`h`,">fR?Q3qfq(13EqD\*mS-'-:;>TXa[)0Fl+46VdAJhRg`Yc`1:qJFSVLK]sV/^^noo/.?BaPq:'tITV]),U+W2WLX$3r!F0IBI-VL]V\^UIui`2l@N'H+n<9Cd?5GY-sc#=M0hG6t$/_7Bt(NSB5>>\`ag*Jk9e^a*k/+]i=E0[DT=9/SMZoe+EE4#oI$>_Qf;7k0\WiU;X[6F-=(trTe%_b\0*'9&QJ`"@mlR*n!*[I8[(ko6&\a3cAUQn/:N,WS-8fMWC+i]Im[OUc6;]LK>$u"OEr`Cio8'';bH5:YX]8D!i>=ihuf5%8'@$+QPE#SA$]Y&It(Y*(86k<^c[006l%b3GhE'p]p0%R_lh?\9&Eo];oq@:mJ*qB$ri\.JP3++.NmjtX-g2#8WT@LUU"qkq8[hN/]lLJiu?WTA9iT1-"3iVZjc\=!RB6-=aEXFd7#ho_*T4@o?kY[ND7BJlE_?aR5Z'EnA9US$]_Us%jj^Reoq-%OIOoh`^3N-Lr9=aQCPE1pZ$WiTjN"X#"PO[&pP`:fF\Z,?n$jR%?6m)(tI;H&>eC8L**#%N"2^kmqC]~> endstream endobj 310 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 309 0 R /Annots 311 0 R >> endobj 311 0 obj [ 312 0 R 314 0 R ] endobj 312 0 obj << /Type /Annot /Subtype /Link /Rect [ 218.85 516.542 326.63 506.542 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 313 0 R /H /I >> endobj 314 0 obj << /Type /Annot /Subtype /Link /Rect [ 240.51 386.943 348.29 376.943 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 313 0 R /H /I >> endobj 315 0 obj << /Length 1695 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau/YbAQ'(nF!Jf%Z0:<>4_]s_ZgF/!%D(SD1u;r,$7JgR0Z529@C+sI!g_)-"fbIQ4GipR@2lV5B`udMmLUQO^X[%1_uQ:e(C6pL'^)fYj@eqQo5='A$IihRICSom[H(VnnsJlAR8^\ru-f&6'TuXlAP07RlOZri`6&cm9i8-rH[ka,"G`5,Pu"cH_/EteqdL*;F8JlTfujX`>q`)?IAsejKr"PMRF:I!MZkOP3B0R15,^LQ'0qcRo=XcknJDd`'Q[fDLIU>j@Vi-uD&Gj-"%j0%WYQ`3GVo@i`%SkmZN2J_q+8P"-9"pl8aP>WY2f1^uDkh1EFGXV!:[*jYnP?.^L^^@ls8OqYYgN*aY+-OcBm`p5h&T3-T_tem1pT\o?5D/Rre;iI`5!#.Re1,SdWe/g:M*D@^aMU3^!)Ms@FW@lNp>e4cfBn`#RVFXs+Y\fdM/r*Ek=&[+hjVDVF4_aL:3=N?6I)s/GLU1W5IE]aTmFY#fE-\-Y.KrK-'8VTdm:eP(oiSimC%g@sT?7J/'UG=gLAP7Eoj,C,`[uQC8ok3)I)8?"UmPCRl%5BY?J<=OtT+,G\KsH<0R&ojfW?VMek9AL0mJI=\:d%R(&BS,;*X,?ttj$[^Lp$.B$8e/)\Z(#ca'8h,n1kpil7dcE!8gU=$KL`r5pMFBY&]<)(I*Wf\;jgTW,XIdnpQu(70ML.@5)ZjJ"IBmhB;af-^b%2Y/9@!B2e[lMo4?L6D,`!Y_&4*'HL!qkXr8_.o_Lb!XZHE1o=:R%@?/0-BU_gUrmQ)IMh;'".:rSF8^,"P!V9>7Sd/1oQNLHeh.l5(2#k]s'$sLDS=6(%;Z(kKs7O:%%g>"Z#l~> endstream endobj 316 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 315 0 R /Annots 317 0 R >> endobj 317 0 obj [ 318 0 R ] endobj 318 0 obj << /Type /Annot /Subtype /Link /Rect [ 385.406 679.14 412.066 669.14 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 319 0 R /H /I >> endobj 320 0 obj << /Length 1396 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU395iQE&AJ$CBROlP\-tsB\*H\WbhHZ<NaN'Um:CUDba\:";:ZOFS`Idn3-9Aq/7C!9jQTJ`9E="`Hl)ns3:9W_R-9"A['ChVc)(VfcJIC%)u82,cVNp-B-f66_@C%5&F2/]J21Bu%CqANAoFNfSJ^\mnJO3C(cerOr!O-RdkTH(%:GH=D^!R@M@RZ$+?Afbq?94Dlf";4-.24mO;rk0$&\%lpj?dc\oobYW_ap#eM>L9PYQUijJ7rS7LKXb?#$@6c"Nk.0nElVgE`94X76a!Qr=H$00Nr&D:Ka1(Q/<-!#cC/Ra&F=AZj7h2>$m/u?HrLR*#u3Bba3cI9McQF`D;/AT-pX=QW\k!FYQeS1s-9O0>E;M=))XsMTs,Q8$giRe_!-/gVsf:\s90[.m3=]Huo,?&"aDt'*,6(neuJ&qa?W<,Xj.WD3MGlWUAtri_@Z=jtY$MbhMJ"IG45B-KtAEakHG7SKB15MQK%rq0L9LThE221c-/8SXkUlnRo_08.>[t8Zhh,lb&?R<$%CQR-3VSGq_5I%;YV4E,;ab$jWl$1N=Aqc;UdDiERE,fJRW39nJ$aJ3_CeYaIhHUEh0u:-BTs:VgM:'N&eb/p_2-QS0dZm7(n(Ro/=F4'U`t[EK+n6GqSuZIe&=De1/n4aM9XdjS4CSU0HV>Q+?)]NNM6D^Wph]_'N>)Q"oV%)PkEPoH%oMq!_.93kno#GRnR,tH7mATPj.;8:[V#M*i#BrDeG2PLJea@bPc[E1'Ga`h%BYnC1T*'%WmR4Zuc&V7aDsAlD=d"#VqTB4!^TOg@OccVm33fZgAi!F&S`2p55t9qcPp;U1imjgL.W^[(dSo9!d@+R76SSJiO`Z[ZR/f%q%;BngXH/$3XY$e<7\6rrF_ endstream endobj 321 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 320 0 R >> endobj 322 0 obj << /Length 1582 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%$hf#8L&:Vr4_*2*_]au!L+,4ZsPBsfg\@jLZ&04#c;n-.Yd,C)F#19F_%!FDS+'kkP>bJMd*^N1`)G[R;BD'ILt7B^S?kH8ZsHXpG>)hG/8&D!korpAC-&?dEQP]k67E7X2k\1_9?rF!b)3J\L93'OrEZos78Dc3A*c^7$2B#2njb!tQC>UcA+W0B%PbuSt!^6i9PTB=[h\QgV,T'XK7m*d`HU^Sq*ilr86/@Y/\l8tOI#FK`c&qZHPjEem)VT\'6.;:+,9*+mURa/Y^49&2@AAt]N,5VsAOr[D^:H8MT#0'kJZD3]P7]#A]-]+"\E"DIoD/OF3Lgl5t&][hjX$[!MZj6IEkYrS,H,1]u^s\#rpAS5i^<*FY%]A>IaL-E5W?mIhCr))'jIaQe$:+DImM^[#Fo<4H3$g>9FWFm]%kB*9fJb83,iBf_EVPN&8\=olH,FBT,Z_U_D\c[VWk@Va\dn;004R'+#Nl=jjLm17jq9@\1NPa0iuYGl?S$'iahl3c3!\iRCqGVVM-W![p[60>Q-sW^0\'KY#NO]:D[Dju#`W[+qfPVICo9S5G<<`/\..g6CgfNIaPniq]`:"45t4?q/0>%42#.$LBIoMJZ<`K0Z$fucKNk5V(H\j$YsBj@$ci^9(M!CSH!nC&d46bdHVJk.O4K\>EBiIC:gGk'V1>M!lo65N7OSMj:,]Cl9Z\bXd5*PIaEp5he5AondE-XA7f@Y__?ZF$]jI8m[)Vg;5,o*`WT)YL+(Z3iG.QbCBWN![>j"920n\j]uVlU5+Vcl;Ln"=g;:hIjOi@[_:Rg(`JW_07i8r"3ZI-b662*Fq0idm$8O`PA60<5Xq@^iNa+=1t5]b-a1Q^r@O4Z_kcmi&beKL endstream endobj 323 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 322 0 R >> endobj 324 0 obj << /Length 1021 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0B;/b/B&:WeD7(c>QlM2DI+g#uk[8#B3VFB2@n6j&YBH^eUBW8$2pK\C:4)G%@dY*:$cM>)acemEi$[No03YkOYX^Kt[etrZf`?/3tMFija!hL-CXm+B6TlnVM@eM8fMb%T(RD`7"m[&3^)NuArL5<.2iLc%TpmacESnW6lQ]Xg-*[^EZT)BDdpI5Ma7KV6V!Zl66f%^VH@nAqH2)X]>a$;bcl3UMti6i6GU5/M8`V#P;9e\K^Q.RR(0XKnRLCL"mb_A2MmB6VJ6>lmN1\Y78QVD5+NKfErQ*Tu-DPta&OD*ekD0D%p.TfApNnV1.(0254l/STO`g_F40/eXReJgg;PNS8B7nh<--*?q3ZFCZl<=?((?&?s<2Jc`Z1q?nW\`:O/EBI6(.eA('J;XqrgK%G=iu)PipV09K_jcC,QR[Y3EV6aDpPl4r]+q1cnjb.@DbdX^P$PngLr_<^D1P40fF75R,!+ApTo,\3N8t2toDB1*"UT=\iB_EmS6n(lTLQf'EL,u[.c\0]bMKnCIF!uYDBT9#pSV!`]7fKO6"s;\[%4;k=;Yh2^*),>9T2q_qksV7X@,d:7P:)ceqrb!]^e^JA(]0n/8I5f_f`#'Jbtno*PuAfbI*/-nIV*sc%^C+=8Q@-XhG=lCCqC.N4N$UAX(+L#grC'$`m9^,t_*h>%V,nhOj)l> endstream endobj 325 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 324 0 R /Annots 326 0 R >> endobj 326 0 obj [ 327 0 R ] endobj 327 0 obj << /Type /Annot /Subtype /Link /Rect [ 200.54 156.341 244.42 146.341 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 328 0 R /H /I >> endobj 329 0 obj << /Length 1778 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasa1bAQ>un=Hg[F)_7@MY3:(h*ZD@"^7RSU'>q"K*_V/.D!S=j+MOGk3rY"hh>3I,D9$,Y;J2k!7*!0DD3%'g%TAr2#HJq;KiDn4auOIBXp]SB_?bAP%VSb/$(u&HdG`+Y$Bc"5R%<8rO6n61]X^3Np`h%5clM6l0rQ4CA+]e*>M1ZBftK4<,\CkM[4Xm*]&l%9kul'>:c0]"pPm--KB+8`oY-R6i]5QN$=gOa$)m!GP3D@/Sdl?L^e\rD-H\nu\EB(MnZBIurBJ;gA^dI*4Vl:+SQr[KdW@,5",^PUX2.RDL^o#mo)ja5;(=eoIQbdsSq4&#u`\ZYZaD5oOIV/J9cZm%YHa0TdU.F\OG-LLdG"A*cVa`&p$%0's1Rn@^r^t)()Qb%ndM!A&O"=E7\;^AG<=.:1Sb;ucZ2DN))k))1_aIg:?Y[A1j3W$">,pM6u!n!>k58gC+H>E'LQ_\Drg3Q!WD9$^Ep4(Vm/$@fh.r\u[:3oU8\/TXn)g+!3Jo'YhHBo5tDN*[H/oUqb@`MoMP#-:%2i?rIE;Y:QPUL0aVP619!&ccVUb)@g!(l.D9n]-'RPeWJo*BiK5s59hc:%?TVg=M*PE&MMPnNM).j/=-J==eu0M!m)9^ogar^kP.\fKb3G-)gPPpWAHI37`KeSp?mj>*[lO%qO9d65F?P,$RXbA-IR!*05_7'/"o66s3Si/Y\[oC.!<")p33*-7JO%7Jj(6]s`PoW;_!/gHT*L7oOXa63#f0FDIH63Gi6dFdJsM4Nm13*+e]\`:=W[peo^2FLf$Eu1hhKXRjrQZk6RZ)3(MFobA"tVl$L`ti*Y+5kHWl%U_[XM]hR$\qH2T($FQ`5q?e=H]W7\,?<@)`A?_ZTt.,P'er-#c( endstream endobj 330 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 329 0 R /Annots 331 0 R >> endobj 331 0 obj [ 332 0 R 333 0 R 335 0 R ] endobj 332 0 obj << /Type /Annot /Subtype /Link /Rect [ 237.19 687.0 281.07 677.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 328 0 R /H /I >> endobj 333 0 obj << /Type /Annot /Subtype /Link /Rect [ 404.65 666.0 459.09 656.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 334 0 R /H /I >> endobj 335 0 obj << /Type /Annot /Subtype /Link /Rect [ 331.6 295.777 401.86 285.777 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 336 0 R /H /I >> endobj 337 0 obj << /Length 1415 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasIh95iQE&AJ$C#ek*`e;QqTH8M*Y]=S6PLBY9Z/^ApUBh,*Q3L#ab?0m(08>O1d,#p=)E/'nWHlVGCAo[d'44GRZZT0XCkHpnB$UeMIuC8mr]n"i-o>WIkjk&4'7G=q`>K927PCP@@No!M$['(cuTn]2k<9!V9kuja')oSk3]dF0GBOmTTA-1QZp38/QFu+9>$(f6=bP83!Z-[U(23XA+:NW&f+pE63cU4pIXS;m+gpFYV7=WVnR4pOJsdp4R:KnG9TTG6.IC6HK=hDa'7k%UIAWqaWm=D9f.XLKrrcf4($P[%D"rp[BN;&?:-RZACcMuPEm\j<*l,e0E^]kPAdY83[!B.MOTI_8etE1Nr*G"fME,=*%lQ"R*IV>:/2X?)ZeW*1>'pA+1jFH>2DM6LN#KqJlIlc#5/.cGd1*o`nU7&Te!ia97e&L[B@TFUpi5"`m=K6!N>:ig=*C@?"WouE]d%A,uGWDs5QTt-#VL:Bg!6-EG/U]L2?2M73u*I*Kb92gobNGqtf$2gX)h)L2(g)^pb_#o7Uua'RC3rn1=5,3s9mMXuG85qFN.+o*"AP1a/FNc''SDRpMg-J:\6Dn=4JG&O-Z+Z&[7Q"=LVH&(XZb0QAomBXs`q?a]4,X3WGll@$5I87'Tq+o+GO45;Z3Ac#"JH_TaQ>8@C\A&c>Ah[@qhiq?g(R!/db%#l8^lpfY%5P4*uj(L2M(_An;H@RI%/eZJ[n_cTK6M[K^#f(/4LJ/oX4Aj=$eEgCNV6lXp7U#86$0G`&jV0`R,[PCXG%394s%E:"2J26*tMW)';U/DPs17(:"qSVC99p:rn?#Q0iAUMt-^DDY(+:]r6^1koMUI[b<#"P0GBXoc9thcRHUAZ?Nn1dcZ.Z"eXW7k#:$a,@bEY1t)g5ME?&F][Zn=Nbk7"4Lhc3P^i$1Rj7uKt).^^^@)m9HJ*61q.R?hiD/BIog%#!>t%jdK#_jFC,l#5KH+gt,[@d)F*V3CL>6Y#=U1(_*JXqIRAg?1@?qh:9uPF3h_Q[oC@a?PnHhL5Y08^$rfEguR56cB"j0R;u2s9&T+D@^JQZM3>?^o$@rdrX,N]qiW3I\;hGGh43F'O)uI,8sOf;OKCLQbU0NOckpTsU\7@g3",Ge_bs_7QuO(*^Ii:*Zh(-R](W2Z~> endstream endobj 338 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 337 0 R /Annots 339 0 R >> endobj 339 0 obj [ 340 0 R ] endobj 340 0 obj << /Type /Annot /Subtype /Link /Rect [ 138.6 222.176 207.77 212.176 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 341 0 R /H /I >> endobj 342 0 obj << /Length 895 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%b9lldX&;KZQ'tVq`-49T9-uBL>Zp"'2::W5F-q(M3&nh7me&g[cG;6st>lh3Y6"776HM$W_lZ@.B73N<&#c4RjK[pN_,5;g>BK$eZMA(QhHh;A^<1,Aacp\psDjL6PHX:R4XNdg:AuX*pca0)spZf:ImC"X\F`21OZ?Is7kSHk+6?oaGIhZ'_/6!_&WaS%*]CesF]5aThA)*aQ>IGF_ah4V?>1`XRC+L-sR*%VDYSWXGQKu]Jg!83sH9s>6rVG\e$dLhl#^0]DL5?$R$fE+2#kQ+?+QKQ4DE#.L)"P[0Rtkk[W!cOMn(VTCOT7k(%*nGKG?EWIhHu5_@0DtuA5l5G'7c%@PEBiM-J3*rET'[LLSTj*Ehbj!e)[ul3j9jmA>d=\!]\/.Da.^8],56?c&9:RZSL%E-cXaY@.pN.@W@0#%X,aq*8$`#=8n2jN&OB=PE*p0F>if2Pa#+"+FVFrl#kXX\-PC5L#rH,$+/eoA]45nW,s7h)rZ-.24;#'=[SaOehPQ!28U8XZPX4][,+ph endstream endobj 343 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 342 0 R >> endobj 344 0 obj << /Length 1837 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4>Ar7S'RnB30`4fR;-B$mVqXQH[(ll^^eeNfW!\KLBUbJ9V%i;B)"uiWM3N6596Q4:5eqG/T$)=14S8ODc'sdA!rL&GXLC.f@X!G@^A>_T9Nl$J',3ooou#e\l=nSEgVmq@#:N`VjITL`H`RRrC\@MH@fd``#N?jFRt)*%PN@g]JdKb+HQ$MD8UQtlYmCHKX34&HSp=NZ7S3\UrtmJ_f<%ZelMtpX2-C^_Z1`uqN2jKB_NkBgp=g@F%hJ9A4Voh@k[B2rHAAMRN;%[LCSQIGF3[l:_].B/pr$)'Yd?p1)"#AI[,p6!l7o6):qtil^HsR(qc?gaXA_)3oBWe"qAKcAnR`)G'Qb)@/rfbWTKo2%h00EF3eKH*[;./U263Z+8U1L,jVK9V%3SE\&&?7L!aA)/4D^Sb0(amC#N/2u'>N3$G&h1&)YGE$1l;/9;7Rdotb9--"Ig^Gt@+S[R^i+F@kI,*D@=j)E`\sRfU=p5*.*To$qtimWauWl]Q&Z>DX(?Rsn!9/\0(6@sq96V//b?VYk-o9,XW\".Ha*O@"qr@48M4le1*s!q8I&q>X'#Po!"l#"n&!]$ddoWg&MNW?0CiR*nPX.N2t*`eV.\gpd*D?!2EgIs.am,V@tul,cfAFu;Ntd*RT7i%4b0qNJo)7KEcUi9b.I\>V`(pB_J%E#qG49>L."1$VHJsgcK=_jo"0Ie&I6ii4#DPp.V]Y^$"j8-[7e)WQ=EBotsJa_oOn7':@^M7YrpH%o1bck-(a6BjTQOHhNft#c\3K;F"jF@lbf=q1"N-5)!P/RLfo-T<2;7:jF2$Wf7+%*+Xd@Aj93:_^f=cG3)PO/`eWmKHrV^#S[6bfu+kOO#ePe]"Cl[BSeeJV=MBR0Gd\t:g_RD>#hA)tK:HA endstream endobj 345 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 344 0 R >> endobj 346 0 obj << /Length 2418 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat$:?#Sa]niab)^caM?Z--2pA&.i+j+k(VI?dAVl^30p6CQ=4g7t4Gh)Vf4K(HOQ/\@3o^chrUR!<6Kn3j="`hJ5;3/eULu`PhUcImh_g4@X:,J+#"kGb9do3"A6")3l4)lEG!uPG70GSHOpEPrd8ONuh-hfL>DYkrb&H&*QF8=W*+Olu7mlp3.?jhmCV3;S9dWauG\#9F2LUeTmino+6qA@rc8TlNKJA1rr7A&n\3*BsN*/1iep9f6U]-i8/kd*iK!$A25g;B9Xeouklh[O10@c(>"V-%Ed*Znmd4Va4Tek\BL<=rY4l&r"0;.&jmk+/LF>ZdCJ<:=FXgelW<(Z*BNXlDZ!jF##?7=e[^:?H']_\4G/+B4i!gFm1r'"neiVHeB<%=EA&RQ20U\^HD*]b'&NVl"`MVY:V_hk`/8a9'\]TA9jVaHAe@I,BCUp)s;q>uad[4X*b#7RQiC2T$!3!3?'$mc':'1G^\%'->8#MN$bl5[pelNP#Yp+#eRFVFkT@uO`(B'GdQfc[N=ZUlQ!)=_S'%.dNn%cQt7+C(ER820<)%3nUUCO2bQ`*#_'eA#+4l7"AfO"qp,jN'1"%=F.L^b&EQkI#Q6c9P5E)+m+!`k:0pPmU9/\X2bCB5&?I0J.Z53j)DBLdP$ZqtoTT42>\dkWCCD.<4i(WYS^E*W#?La&^2&\4;5.iZYAja9]T=(6\_V``1g7$MVUWLTZQ>*jA;A>p_a*[*-dq#c"aRhJ$Sh?Y1?rfWd?B?qO-_4rEjBk-eH4ra;2uP6f!,gGlEQL?)[+%rP>h)f#GgIdcg27rqD7&.P:PRT@4>#A%`MKF(^Zh&[Y6@L&P16Jhe#/u!XkHkh+24@3&sX_`G;gN`a@@>]O)L)GX-6!om8l_i:]C?2gr?mjc)G/h]dtrtDGCHW1:^[h=H7im@D;f$:!Ij"pKu[[A_?_]!4o9@jl-\1Is0rO"6R8:7,Q[Vjf&C3[.)n=O/i(bpJI^&DNVuB1>t9$/>=Sl+5ndF5JSar(%Xf1+mJ[r$Y<3OP;A"f!PDlC`]bQB)PgF74F(`$-),#mqLM%I09)n55'IaRs+RJh(KTpH?P1pEkYn"(]"[q[2Vu)P/M(qpXs>;AP09'p6IfeV7VUr)JU&kY'ohsqM29HWqqBG7af@!rn?"+f69h](doX0'6EAEk\[eZj7\e"T@e)2UE'rCC'7FI+OpunL53>B38j@cQI/M&b70rEJm`iqVO$mC`8/!32enVq_PTf7+GA6;m=2Vitn$Z3K.G)A4P*u!'f6S^+k[P!9fh4mU5YuaUe#+IA)(dme_456m,[ptt(dKn#,/gEL.u@`]<_I$h>"b[ol5B1N?)D1$k9&1GGWi'@M\;:S3XMS\%SuqYH9"\XSO+4@9g7#,$;G)2#lEC81R_$"95c`#C*puEE?*@)^:sKhr.AXl@%R#h8M[@L]b5-]hu307bBd,Ue5'FKWd!`G0)+N2F!L#1o*k9`)rIG5#N>/g5S?^P$A$VI.t_`*~> endstream endobj 347 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 346 0 R >> endobj 348 0 obj << /Length 1287 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK968iG&AII3E-.4)O^[7gLXR<59RZ+JP>9Y,PQOU1&n?eq#r8q:PQ0JC,ml>#;Jr&IGfBh:p4_<5+'7osPH,Yfi=M-m>G`(kgJ"j7_]SS=Jp]6D3Jmn+/U-'Lq>4E1IGnIp0LRY9baYeIP)E4;R49i%cee4'E5t-.K-bbX4^he&5t"O?n\Nao`_@!fm`gsHlX?i3^W<4Vqoh&n8gu7#[Xr6uWd;!o"k%;VjQ!p'*VEPKCM!ak/sia&R@I0?kNZ@aK[jPpm%0I*V".Vm*XgOJ;M]1P.e-n?\2fqWe?4L2+e_;d%6eOo:DXSJ<*US\:RS=_YogD_s6oCJ$mHq;dIpf3aLYI=jYK5qniI$E*J@kr@.h;`*R^:GIL<8Na^AI8/rQ3fQ)paH[i*Lg3tTZU0=!)XQDnC?l8Dioq3-*D*:c#<0:uuo5*s)6/aOtk(ISdp+5(J)8R`<6h(4i<%p3]GYkrbhO@0>k0n/Fd+a??S*\CAhulr"cW7)U]"7*KlBmqLZlG-MMT#]13j&Nh9Z'dbpSHTedK$4A(HqsAT>ar1kP6oQ2/eIo+T?9$_qtbiM$;'9WnNg1CSkj%AeMLpcK0]2m=G'Q6?(KcB`e66!^N,4U3\%(-3=%7-P9s:&Y=g"@?"VHmCL1frIdL3cgZi!Kpr#2s$A+J]#`mY#=JZG!r?(e3VkKo5>P%KT8kAW)LkHI2j)ieH2blkr1PB++7t`Tb?UI>:0Z76)_AA@]+K8X6X,q,md);oCuE`.rU25ZFY+Bpgr(l-T%Tca-nkZ_-SS(FRnVUh6QbeOYB*ViF!D:'0eH_\f^TM'Ur9BA:H;K$gir(qPQMpAj>5-K6'A\Vge_ggiGO~> endstream endobj 349 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 348 0 R >> endobj 350 0 obj << /Length 1932 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=,>Ar:F'RnB3Yk$41gFrhZSR/,KU37V.XZH?df`u=LM,fV)g:6B\ec3?kYQ;fn@dZW_YM@VrH5O:lC=3B^@lFg?YWiZB4';BnqXNb^Uq(h^@qR"G/$g(6n&1/W%@j&=b0s+=!S'IWEQR_*h0ItG?:+EgQtRq@gjJ\b!2dSOGkrP0L50nM?&8_>h\6jq+WH?/fCDjJNNsuc7k9[OMkG1#"N1)IM$9g#;E*_WT;UbbZN(@jN.i:h9V_@q(9du0`pbs;VHK%gX9f'J1^FSX`M=L#%QJqDQ10lAo/r*".XL`+e9d7eXSSE;OB9UktG_J2)gpn#jb'Ck64$61ua6,PqHE^t6piP]r,KM>WYklk^"LL+[m-o,CHpR&'o"4h\M=UhDP9m;^s&;Y-(@Sq1KSe.s3,XM2/l**M$^Jf#9eUTdFl!ugfJmaO"(fep]0A%(I\p0nQTnrh_J`(0qS:*>DcnU0;IflLjN(0lAW5mQC-1o99?p,p?'"0lBk[05"U@?Wq``F>dttiOb>%'."A&"G(l`l-C4Krb""QA(^?\MY\,!kb"#m/-3J*fJf[VDb1%<;Y#&rU'rX0r;gFU>-[1#Uke?tg3,U;X#KMZ3U7&pqn6#7:1D[aRdj&YZW`p$%!+QhLiJ\Qd2>#oV8h\JC;UCp/UV_R:ipKe%c*$/?Q34)l#Q<=>&:$3+Ee0mccDNK?*i[$G6l*WGZq88;*U="Wq]&$Rcr%3_DDGFKHCnTjHjB3g$bNS.CiWYojuJ%_OCWS.6ng5T.eJ+)^r:V'^LC#2^H#722$l(:=erB-oNbE+A)^YP^:^R&0rLlZ:A!G=%@U/gTk(MoSM3-@njYtcR(/AIHi97P.k)'Vs^!*E2S&F;Qch!#`_,E$Gn0:Wh$C@]&,8pCuW!@l23US@VB`3!/SfGlRC.+d(G6_;m[ENeChnQUkgKQ/\?8[^Wo'-)XH[X0HbKi>RBerQQo)H4:fuU.1;;``Ar]CDcR/)ibHKo+'Q78c^`2^LS;V#GBFKPKeG>684@*PdXW73gZLA(A@U%.+&`%W7!Nj:8a+jV;VLhfDUTN-7cSL8DhpW.MtCJT_E*#.1JRt2K(F[p,%:NJ1sbYaXlI??7DDd% endstream endobj 351 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 350 0 R >> endobj 352 0 obj << /Length 2292 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-997gc&AIV:E;,N$A4)9LSk0hC%@TX[/S^r63!\03enem=Of7)PKDtV*6qSH@PW*7W"J"uj3V.5s<.je2HH+\Q?'d?-:okmB(_f`$]9!2u#S#n7gBD`/IN)Ni9b2rF($tmiH^^&&LN2rk/&@B!7"&5@-<$$9F$*OhcMHqXph/@!crHZYsa"?cn_e$bq4Cpp]Y!]\_MZELR[s&fMJaFi2-7M:.:p4sL@qO-[G?VpgjY7dA\"SR"-_?^7$XitK,tn(?h')bb!,N[Q-O\JQRQ3503e@ZDT(]:Zqs+T;ecouD$qY*h,"e.B%VZ-@_'5H!uU;Pt:S;pH!1'D7UAH\^gTn't*k:J&NLKcj=NT3kf*f:nXQgSV=!\<7`7O4gPU>.krMLV,L+Nm4\Sm?Mchq#cqPdRRfrejU>ljj^7r@j\-nGUekL#?#L`Y/M(#W$]9@KsSnjc5_L<\>$dKAu/C'DmC5gf-)I<0^b4EY"G65q5-3Hm]<$Sr!9ZJ;skP%^N@>8&7hdWWQ=gi^JD.Ba_0sGrjVoR$ub7?1UFX2MW+(J:HCc_^HW7dD/CCm0"VJ!V559A;I,nFk,=j-60+nCLs2G8\Cs<1lK0bH7?4d?t(]mBsS?Y+?a=&[JQHK$Y=>1_?Cs(U+Z7=N.&[5<*i8r.%Y7aKlYnX'DiAu-f,]ci!_lLqnt(k5OuMu)aXWgCkO]0>.'L#8@oBj61sQ4Y$0Uo?em9DDi2H5J95hj[&hT&)](ZCmTJms&[WOP].!b@sn%N5F5cVBQWi_E%UK!!PA`s?/W!0\d"o;*4:rg"@nl,m2lj1\,EK3]^K>aM55Z-tX?9huGo;I?KZh/KM)8!EhjJ*>*R<%1L]CFgqN'!5lT<<*LarAC$Ojb:p/`oAU`jti'WnY4t21/s6bYJ,u5A(VEj;qo\./;hfF@^S$$+q"aDJ.R_Od7t+7FiSA[&tHC90iMkqn[5ZR*7NaS0j<`f4sP`QYmY-5$o&B9-,R37p7F#Ap]4$ln%TD:IjeToV?G)':gV]67lS!2oE(9brqjaH>B';Z+UeL&Bqr__AZn(,38-21D;OT.rV-r1HDU(`H_A60rS_1bSEebKebQ\286HRZTVmd$s=?6,gsc&jk,JKR>Dn]U2c&3KfW0N;MBc=LjlUaa&l]ZX89f+jdR%O4E"9J#'P,%oo/Plq\R+WP#j(d5cB'd=e@"!]`AQfe-:g^dBESq?urri'(ipc`R_\VsNDQ!RNA'jba]:SA@K2N)4`YBQNM&h+mU23PE(tqY=rRtG-Q-F8Y\%:5>@MVZi3P0c^Y.aks-5Uf7XZtW[^dE$=MsgJ8^)tVq@'9^D_9oiql6AfGF;96J)55Q>#Fd@Y@r96qakWni*dB9W3Q8YEL6?ZX/tS_RG["isP>4,`Boa1!5(P%pp\^J)5R=oNFoZ4"2>SsY]uI7FX0;@a@X;SEJ endstream endobj 353 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 352 0 R /Annots 354 0 R >> endobj 354 0 obj [ 355 0 R ] endobj 355 0 obj << /Type /Annot /Subtype /Link /Rect [ 340.168 516.68 409.338 506.68 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 341 0 R /H /I >> endobj 356 0 obj << /Length 1802 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatlQbAQ>un=Hg;p6#PL(l?b#.=0W8)`.`ld)J<]FUtiJ>A@`s9@7a2UAnOlUr8Bift0Zb"Q0\Kn#-(tIeE1uB46=BfmJ2_bViP]/C8n*/As+q%5:DlfmGmYrFT'7VR`8R-UE*#o.+/s#Q9'4qdVPafo[YM7OJnF/@OW6DNrq[P`Ufm_d0OWooio';//X^RGoo7?_dgY`4S'o\LO*bhn.q-4$R^O&5E[S_95QH][XnT[8eh+.'i:9a8[>-.(0o+H!(@cX9h1L[JTol#VeWu7a5Pu+*btF?"Gqk$rOCFIBO6@&.%8trg7:n(Guh+.^bkJlP+3tmhgnu8Y'3e1\5Xc0,`qm9n85[UJ,nl9\QT_1#7+1,i_\2FLGD0_3GI)+8F@uV?PO!j@Coh<%PEH"*7u"6@S=rVBc7t8T)[#7+nEVr["Yna%do:_B5JpbMpQ=J(\-j>DTT>7]/0im'f%&lMH?DHj[<62aI.6IM\6FK_1H.lVs3%R[VkCQS%(N_"*ZfcXK3EDUeq)EJa4VlOBfnj^I$5GOCGsR+9E**pLU2hTsXL,?E$iP6NPPt!f1jK%M7i]ZG-(F.h.4l`X9*#l.GiIEAPfd?^5&YO6@B@qB/HsFc5Kaf4!n$e+mWuMWmtD/U^i>XQu"4VMBIQB'G+?+!.[NB+7ED):L%k.$0SQg79*P<1?qeX-;$c_(D_6]bD+mL4"Utd5`Qk2e%XGqEOW),ISaafFEFP]bp9kY3p:jNud!098c[^co(qGhoEd./8MB2LZd'TAAA>moYZoRKMiMVS]<"N.'ZDPY8Vj]4-EL+dSoO`m7i#2re%3W7?ia2II!94hkB;RtfZl/Qr5IP(6KVpdR*ZPpGcWoT;nUDF1Zh/[Sl"6'Z"CA3@I)=NG%^f_PJ$F09q5)$^!Rkf%bA$L/(hOq3^q=O6FSaF%>O8Kh_jl1@W.ohG$DjuLWFTXbY4F<9$N#]_kQ[GZ('Z26T"Fb#JKJH@t#%uSK-Y=,=]0A'#Tk"=+/W1.G#73+C9`X-k!/ZR7pQ7bZ>;*GnAEnUggO:N\VCt5DLQ=o(Nm";,Of%6I%J)XP76LL;sH\X.sRCC]$qB4?ulGO2M`Nl"tU_g[`p>/ZW^=8mgcZVAYT5eYqnIX0=h4'Q`T/ti"GBk<]X(2VO%iiia5?Wjeg2:R?-Qf5N/_%m>)m-*-4(k"H`WRKg99:-tQ*C[sj"u?^%S"rDRf,=Y!db`Q*e`c>9if"&,\!`3kC;Y,u0#9njlITaO=)08.*"$7e.1U*neDDFe-uo6lKhR($AO-mc@2(\SjU3d(G$"2cf,a@FgjGhV\1(P:G',W2gZ8HDG+r]nAT]8uq[`rc>HN-k7*3HAohs(r1u!0q91NpPhe]rbM9iFPG)ks%=5V3UYK5rp(_l;.9i9Ani,.>p@?GLoI`r<,KDlAI[jbn0u)Y7?gaX"`Hhu2c[e8O5$MCmEqO/7rrUPQL>l<6ALL58?QU#`2g`!lIUPg$Lf`03c3,;*J!JC0_(`p7j7G!K@aS`~> endstream endobj 357 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 356 0 R /Annots 358 0 R >> endobj 358 0 obj [ 359 0 R ] endobj 359 0 obj << /Type /Annot /Subtype /Link /Rect [ 240.6 477.24 309.77 467.24 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 341 0 R /H /I >> endobj 360 0 obj << /Length 1377 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D998*k%)1n+(jhYRk\@2S+53HUBfj-(:nX32RN=Sr-?7YB;Hoa[T\09N3g)'tEL`G+MHiQ>MpWW*tE7[!](,h8oV!u"MZU^g1mYq=fm::ES+tVJ!(?5+On-(G+7T*AO$+!$N:=^^C8*fNe&3lK$m1/qt0,T(R<]*5CC1*=@KV6Q?^UlnR8d#hD;#lMc53ef>bQ#&u=!;'8eJ$&na\@844%GiGHc>C$asmm8;C-;Hf+U>DXhR6q1P^OH#TcU<&"8HRk^W>o.c=S/c_JPPMR@V'tKpQ$bnq8pa@B=]mX=BtrZ"0o7@=8Um=n%HR?G-f(_T$t28&#.XjEQ>ClB(TS_=%$>5+)PWH>lIF)FI5KHf-QTIcFrmqVQOa^!Lk]>/Jn]MEWA3R5CpUS?`:Pb4N1%3rdj?N0Z-T")43^W=Mc77uo2pWLp1C^[=VfaYGe8F\$W!q;5PrWHhW%N^O.uCIlUM_ko([41,"[HC[/LBg2rAbC%$u-7mgC:"XaiMH0h&4?_rAiY=f<@hQK(6NVEc3./899QrJHo(.1tQi:4KPe!S_5Ko8G3eUKbJu?S+MnAZC`BfY$EHi3F/0.>rm<3!- endstream endobj 361 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 360 0 R >> endobj 362 0 obj << /Length 1722 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%$997gc&AIV:&:CGnG.8`q(L=D'Utm3qH737p&dJfI7GDQ&dA:BW]g_sJ7hTB2[\QXV$YRERk"3kFn!A5/O3GEmEh2=Sc?6R>fQ#l**?7J_$lD9mmjp9XbOj\=kGtreFM/nCLp:R4k)cdi7-=6h]>1O&Vn^<6j_DB<2k5B#:^@O\P`R(_)jJ>$;+f>1rn+D3TSS7'G*,Boi)A^qd2eIG5[46WYZ?@BU+h=BZcpCH+d0JdH+k&K,<'65q61YBm-iOs.#PBuWEf&%Me]2_D?5)od@e&l_RT8KYEHQ*gmEKe+Z!*.Zg<^+8rb*eoV23+6UYS$1@?J4&!,5V+X0c`3N[*g.T$g&(22CY7EI>_mUTR-"T;!4?0MJf,-"rEORf.:_nulp'6];Qdo=$uZLLX&lU+Ol/:$?g*]:Q)[VcQQ7<^o[0*#Ujl-6*,.:\jtoSUK!!C0UiqhYN/aS//,$c)"&ZUnQP@ef^Y`5[!!QT)b-9DZTcR-:oWN\Lb0[t.PD$3KT!^WW/=1.5R8*X).UB:?.K%b(gSAg&&htlQ`@,%>O:NoQX3_s,d([g&sk@a2e>On&5h'FgA8bJGRc.S%DjTY:W;;'6YD1]6c[A>o2+&Y*XkOYYaV+kj>A9m#>\Zn0*30f?F=D.L@#q*`iA!%P+/E]g*/5!E2[Vqa6cZ=##..NdBnG+_cHo.TZZ@^,OTbD'qjE5lbMO7s6pR8W0b8f:tKQQU6Ge@Q2HPXc8eaqE#5a(To%]h2F/]S/R^s-/XXkLk])QJGAZG_T4qpa=um-9L$;]VTsB&3)%6Z_Ql2qI)N>@C2TD4/Jgc485ASFIJipl9'RHX4O%jP=-6KaJb.F^rRHj[Q=KW@hal7Gt?B$-lc%OX^lha$&-qdkYSSh6VhV@\f+Y2DQg?=OR\jbl"r$l>aHRj#B92P\9O%U*"P>FGcl;j!&WpnJ'4%DD+K030MD\")n3e\T!mUH+QtYObU52KSD2$KCpI7+'7410l7U^:VS#)?c0Ktm4po+=R,+4[U)C1XDC@=&BSL6,m=)CcHA:t(?4%2MT67:4Y$O[Eke]=C9%GS<\EgrS+2ZL1X3Bka_p'RmOW<[N?KbFN`rGLn%kg@t/X[=O"l`ZD7?SbS[q7m[o1#;8b>.,Qib$lP5tu*p/C$`,bYV#Xf7_A%rM?(o=r_<5(sY(q,sfncr4CtJO^#ZL"AfW38:%,s]5l._'Ll0(P"rf7V#+$k4mXB"WS^>8TZ5SFHV2_m@fMO$%9Lo[KJhB81L+S\WjB:*g+]c3VJ;a"X\b1;qF,UR=bGZVol$GQ\@S44mE0>kYF\tfQI:B"0(8dWrktf7%O"q<,cOtZYYr?kh#26eIb>ZL!j`l!(OtX;E:#S&QF8RucaO.n(&c;50[a95QR[&rou*b)!=_!p%FTakM,()~> endstream endobj 363 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 362 0 R /Annots 364 0 R >> endobj 364 0 obj [ 365 0 R ] endobj 365 0 obj << /Type /Annot /Subtype /Link /Rect [ 154.932 500.661 209.372 490.661 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 334 0 R /H /I >> endobj 366 0 obj << /Length 2066 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasIi997gc&AIV:E-#\OaG/+>JaFMA+p$+ZJYE?hW-b1Kg*S:JNZR^/62u:%iaYNIb$nd1k7]iqIPVrRq-e^GmSg\(!tq]dqn$6Y\-l@=r.V1*)SnOl8=6U3Vq']!mpE9T`^rk@ebsq.t]e"3+tY_I47?q'CM=ku#6'HWWL/a]&$efsl/&VRn=RID-b!u7sZs/aedcUc1#d#]HrH[mhJ0n-at4goPDlVJ4Ronbi[Y`[\RjT9Ord,t5ISgU36jhY:`"2i$fT9kf<_&rejW%Ob-^t95O"_JC'>"D(DH@9Hd#kqb4F5>n?YYg_qV/>mX#I521rKU(q'["q#-Ph9L`F'\3ZA,e9U<"b)]4,V7-E!3`f5]Y1m3HfdI-#8^@(,%)cH9,AkQ7i2$7G@`fS15I0.V9JFh'brgf:9_8`^E#_g:G_<=gG\H]ok`Se27/p4kq$3]k_`;`/FXWlL1_/b1)Y;g"p5%uq1+9]:H./TFQ%A%&fpi27!i7>Xf>cb;1d5Cl[q56(=bcOWfour>K[r/]m=jA4Z2UdeO73b:SfKUAn2#n.8i`l'c^ALc+%ZZ`TRpFO_L5HZBSk6c[-qZfV8GHA#12NHXA_I#O:JJ_'At[4RtF,iU%mn0ri;N&h.b`,csR$qBsN1=bh$Nfm[[l)!^s0P[$nNO]2q_T>(WL9q`=Y>K6b,od%WdK?`_9);l&TF78neKb5J="LXCAj>X<,SoNBr2U)hK=Z#Lk-3*VuP$ic$[p8Qup^IpGa^ucpIqB:9U$8#4J898n31HZ\qX\*Kl?)$Q?"EE0F5%[im;0QDXX&78@<'C$+lH_^V<2c2Bf2S7Kdj_VYGjU0Li)^?FW;apl*4/*Xr,PK=RN9EieSCKtDn>ab>]-?K)8FQh3dL(IAh$@k7UBQ\D_;_8Uus+3[)At9S`cH?K1hJ@o4)m+m"HcJKu0g67AO773-1r_2ST#UTNW!C'Z6]?E;;DON:iI"o82VZCtgY"jh-o'Y/Y/be&+OZtKj@=GWk3I<=q2A647U1$u?d\(g)dE!+``^^>Pp^I8]p+kf)\Rp#I;1;p.4e"0(XAZq<-Bu9ZFZO.m$?(jWC79u@V(lqs!S=J'W?]Uf@PS_/K7DZifI^2:9U-[L[oOq;!fj,/hTbrP\l4M*aKUEAJE\W45c(d3GYb2o!Y5;7AHH@@GBYK`fSXecI013rCIQ,bC`C4l+c.F8UtX([Q8I&c*"\TUU_AcUcj9G\+=6i4,MQ&pYlebh65?l2)es.H05f7n9InG'-.c)dY<.?_*t>[7LBWN+Y-fr1O_MqocT>/n?n=EGKi$SC7P;><3^,f;hi*c_nj5O8>t%P]?bRbMOQ6e=F"EmV%E)iDXiSC&n5o:%-d&1fFX-./$;';[30rNk?_R,AP/^RqIlX2jYrTK"M]4g_o_]f_G@0I4ZSWd28IAJifFFS)ZISsBcas^'Dd&%hJs9+>U[T^GD7cg&%5?-2o1tYu,kfN[ouB?Xh:>,kPXbmlqB,5&O!=~> endstream endobj 367 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 366 0 R >> endobj 368 0 obj << /Length 1408 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=+9lK&M&A@sB#^^8`A/U5g/8:"`]#?;K*XWVSXkNq0;76HsoTJhn6.,_HPXoL:KoXV-(VULEK5ZL^n]0JJrc8i$0oD`3Z\bHp-Ac4'T0ru,K\J(JBbp*IkjP!5oLdS=X4ui$c;R\12cMOCn-AgNI6;JRVjou&6ri6bl8oP6;KRH]dBhD\NqI_gn`bYcRT8,KI)E>c2E-5/n^-t7&65Iu$rjS=+BcVCqqL>,B_VCmN@^LN@!sn9aNTFfr/D;3BIWf.V[UKS/a#c`3mq1o/7n5X+L$O%'Y2S+j8/O%Ya#jg)sjH`d>@i?[`&gFm-q>1N%$$e(Wc1X5fbKBVI!>Ri>*iu?P;5F6F#c_g79O`Fmr_hWMep3_@PTjkQ>4nY7-I^qm#\Zlae0uCKOih@>_)It2;7p,a!b=3+VPe[]]^/=K3%8g8:u;nr<2r"/nXbDl>g@c)\PI'B%"h`b#FJnh!FerXU'^-:!;aondR,K[j18NX@?XmH/W=B\.usC4Yau2k6>IDg;j=$gKmNMT.?d(7UauVLS[!H0H^AK$gtf%MM%^7"*9WJ,-5nI_8E^*3[":(h)i!YOFV0X%%)k'J]Y1`*.884'KW*Gl=E7q\`a(,eL!\e&;^;sY\&qDacs(N9M(P!`eTl];K_eiVrf=<,aiuYQn!;gs3g)-!Vl-[ct'YlBq1r8mduuL.X_OOp\4O:._r3@3]*.g>K9%iUs)[j0rgUdW9ZBF:Vt\@*0o3!@?.IkhdRN0COql-&=:]9IokA@+XWG1`M"oeA.9Jeo()0N_o'lYT=&&c:Vph^_r:/T>(Z&.CfS4X)qbu4-Xl`I&5\a%S/$ijY9k+,`Z&'&-^(,2\s#R(A%-EY!4ShjBhul0A,"M06XeZ9%a$&)IAH]Ec]DnRQ;`9c=F7'LZX0@@66#%0Ft24Ailg6L+LF^9okt'kX`-q*f</W\Duh`Nm12%W7h*Zq7$f11plieB1ApeM&Z/47rOdQB'_V.!t.3FVPa8Y^*`_&:50(GT[Xk"-!:!Rf`J2@~> endstream endobj 369 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 368 0 R >> endobj 370 0 obj << /Length 3038 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%&D/\IE&cSA/@I0=kJV;F_jJMm[=59KNTIl%u/W0.nTP`C`,E"b!X>`<7^R*@W3CBngB9=ip*g+@.iK0S'oA0#_it(Au$q.=EhVAV:rRSZK:anU"PcZL4UG)Dr[c\C&>q=fI1Z4AIs*PjJ69$(q/h?+p).=a+VaReGU9gTE!kr=tlIQ'P@.2mW.6ogH'eg/Q'C,O4I2o,f@*bEeiCSfB"'5pDK.cFWBaQ#Yt#Oaks3;TFOklJ-$YNDGulocRdo[LXErR!/Q[4&)E-0JdH[Ko\%;p9h>]U9_1baPM&7!JS"gW&lA"t@,6fe5.U-XlfAEp\h0`;7h2]LbWN@mG@),p@=o4l=`5`scDP($Pj(0C^0_GhqmHWcDU4MQ1"-`BCJV%K^5&fmdfUQAeV_86][WJ7ed@k8&nfS3)[#,Osplgcn!sH$PFXAA]$MG#U5e"5aXC&_>RBL3W_*=?rCSrp,-+C#Gg#k:11C8*^YfLn@q\IWhaGQh_nVKT\LQ1$^-?po`qP>j7L\\nGnR=pGC:(]G7:F2)(`uO;pL?AN"&:2;Q,a2PQENJ,*a)DZ(Yon(Yui?0YH$/T]f-q.Kb;YO_*4`ai>?1FHD::6Dp)DmO[a09f>GlL55R"h?]cs")ftk)Mt(LhN%]S=a4Rr,S4W.[?1UjZ7O!mLJ'=V6rVeKaR)^Clb6q_6QWC\W1IgniCV@FUC>1mqLXC3#-.BS[)7\l;UDD+dV#nC/HH9>^I#L"0\idS2_1O7Jo?_XtEe;MIleSWnHLGZAfJ1Y6DMaAjRil9(:hdD*)n4\M5%poRe]Tn>XeS[I"p^pXT:qM53r$[@'S)1Q;\&X0LqtTAWOUGUa)^7&H_;8O"PKQS">se%VF=ofB]a8X_VGNqiij%jl]]eP#X_;@I8S957X+4>Ki:mRk#K^2$s';L]>[6AVm)YgaagXn#UPCar%r%6Bgj;sGc3`>Xo,d]RE=+T54(F%oJW@a%9pQ*k@80p)D,Y)*FN9Vg`aY>P5!qr>=3UUu-up-K`F,'?=3J@9AlWeU'QWKMZnQJ2Z;7;[?UI\a5n#@M`KkAjg8qj!U;--O#]+`?$>`HA2\0gH>CbO/c>,GJ%@hphFYi9&iSnjp^ES3luAhT0a*NNjahMf?$=(EM$@r?.lRn96FYd0O46\VOuAb3Him1+AB-%@k_`OmiYt(5nj,-J/#[CkRT3R2Q'i2-V9'4EUemcH9'rW:m[DD6;*V.AThAO1.ni>hQhKg*G8C:9X\m2CA179Ta+`Y/m4K\(9;8b__.'SrSIS?Z"\qhY\6',p>;&=9-ZNKuiXEJaL&88m@WaMV>P93<3q'Nt8LIY^P7n@#mIdp2OjNCZS-%3lQF!.rn*-M[$3qb[]3m$jXaJkhSF.)"$='rfi5uJ=L^"MMWpU$rE-Qqf\@kQE]F'/8l!)0?f!6hBKD:c2X"?R72;A%@QfaS460Z@W4+)patUn2U?O%\>k-ZbR%k`R,<<(K>6l34[V^'7#\s9kTEZ57/QBi+BP1T7;/\qkDHTp;>k3?J$t3PdRD[T:hD/'^E[\Vnq^_([7%+aIbYNueAMW-'Uu4@q00IG30RrXOiQ,4NnUZ4*77qqclTP?Cb#mH6Ur']=.XDo*^%>"i(Nb0c:,j=gu2Q/,N6=B#A,(58'Tea[=iXlBWIIIV%oiSTA#,OkZh]8b-sS>A;OdJKYJ12n\uS6j(9N.WG7O4aj\A`sRF#",Lfbq0=mt6s/Rqnod)65A..PH7V[i^R!8dLYIL_"KSuJL]C1JdgHGSnC\+4gOK9_:J3C&$V28h?.&b*!@8`8<&qfJU]B]9KlO1t!5cE%c+>K#aBd^036Q)\k^/o:Q_*o1qh!];A-ZLT#=.Sa5\p)4D2gQXj4M+=ihVrPl$ucT/8GR,/P]0!(U1t:HWOtL/(ksYdg'_.p9KfU$uHIW@o35nqHDSVJhjgD/]I%Jn[:/Mhkr;ma4C,rBXs3MEJdbbZ+>.Nj[l]NUsa3S\/=A?Yt0N74=H&b4ud!I/eTc$iC5 endstream endobj 371 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 370 0 R >> endobj 372 0 obj << /Length 1130 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0C9on!^&A@ZcU0J&"*THO@C+h)[V=mrH>>nN&$q(O2c%ft4m=2<,6=R`b/ZTVQf[t+ShRp,6O0c[`.<(@RShjR[4D-fBNi.?I6/5P*_S[LX1YXtJL=>B>O4,j(7UpZ'I,J>ECZpfA@lFfp2]R5c3T$C\QSSmg@.7;$O^s@ul1a>Glj"("kB'm,`D3;RE9O`;rL_/Kai=qqB?n*M7eW;f=e8W)S8(tkoV^'R;,5pQ8.\%^0lpD!fFH.4@.Eq&0EMs%+p)5/V?@`_qZmH.*cqunH)b`]r,18MQ<>]nEsu=R`A%D.c/Z-UKgu.eUNGfE/A.g"?Z'm%.H\3P&N#.X*4hMiq'c,;/:4_^t,(Zf@hG2llW[qg8C-=[jC>gZ)Bk.9J4r.'%]/VN&a^XPn@hF"E@hc endstream endobj 373 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 372 0 R >> endobj 374 0 obj << /Length 2043 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4968iG&AJ$CE-/?JZ"ZD?=54jcR:_oEg:ujO_"hPn$(Q/g]0)0=(p$f]b_S?\p7-(kTleSIiR_Gb?pbND48*:OMi@k]$O$<7!c1:SZqrB>X`sC*u:8LD?k6XQGp?eQURXTP2orR?TY2sK[5I8]6GZ`fRDr8d)b@\2qIFNumhT)3m72@7cEQ2f1.B?&,`t;GPaOt2D8X*e8OjA[(]D7YW]]ID,GGD!F9Tks>1b/DWdd\o4>T$-Y5:qa:pMQS1C"0N.1tAqD(=*Y"5;dXu`O9@T4`@5o$[^'YjqC!prc1XK^F]J#0l1RIC_Ar1!=*sUL*%/H-Ur4ui1_W60-s(i;ldA;BLBbfTQXeRS]LIn;D_5++d5ohkDe7IBrVa<>>rN4D-m7Oh)K@9fgYJ8DXH$<:hcGe!-UEJIfh7inc%+,>SJ:>A=0Rj-/'RlMo1NAad%:fPd3/!uCOYJEDN=AJC4E2XSi>^2]nIR?J#J%9*`90Ucho;3M:i*R.j=3G:**`U*RO+SG#G-GCt=t2cfGqlK(UO$CidqJO-D`6QkRUomuM>7SU#R8P*Q,@9DMCQ??h!:^3f_\P-"&<2Zje5m;d``I!r5]U=t`-HQBdIaMTL)]87oWk*SpNr;e^ZAFfj"X?fEK`3_pcU]6,gZPt#A**R%WQ!1l_Le'U)Dk)!pDLs_5,cVt+0J7XchXSi2R3b$d4H@GRnSkRIl7FhPYpJ3;iQ-_'S1s_1!2S;,8[!>3He;=n^1eIgID*Tcb6*_J^$66pM*IG&(I3lL'@!tjq]I286N`G'0a0)R)e(#bM/'S/:mA/k2Dd=s`hu>[&4YHlOR(Ee^VkL$Acu@4sAf[69Z&o,kD;*8$PM8AEqLRml+!.'al'tLj'dkLDA3B4/GtG7s&VjP+KV:R@%or),83E@kTLId(f4)&4O%,6+18[Vg,YsAB6&uiZo_Da06u)J\Krh5aHKY?c8eX)0>aou@D7sQWcIOaT1n[WB&?%2Mt%R$9l--N,`%rEGcNB8?*<5O9SeqUeVQ!^0;&P9tl6PQQ-i@9BP;K;3NgrH#>Il&)ukr`e<;$/Uh8JA^1TqY1`IgM3`f]3bF.U$_H(=L8GI[9GNDJ*"ut0kiK8HKue+#5u2mplbt4S:(<=dAiqaZJKKL_?+nj@+>d3s#Lj5_fBD-C'IOh7sUNc;[cLb:&5\GpRk.h+QQ\77eA0GrpI6;kL\=b`D<2?b<$to!A>Lop]\>FnFsW@Dd)]JCmgD[)/:"(2&/AlbuVh*Ta8un`iVn)fA[7t(sqXH\U.MXMeic*L(^t(gs?TW]?pa($6-p<32]fH5m?PcdNi7g,:Z^+[P7.qm@*6;"#^%1HLX*4s73hn6mB-WOWaU:dSonRinXP"ZJQFi]aF$FjE1A9`N<#:GET53J,KU2T@'?%%a~> endstream endobj 375 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 374 0 R >> endobj 376 0 obj << /Length 1996 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4h/D%+&:`#5@J$BFO>%=?@4>mpXD83N5Tb_!gVZ,VZ:%o3,uGEA]%O=fI4'K"Ub(7;L*-]h7,Aa%]AN/'lK[ec[.$6>/QUUVDm?qF(EWMM$Qfo'35I$4(TV0"1WVu'bF6Ln_qeblk]Uc!glZoHKni.$0gIYD)[r`lNg:480$dH?cHInT*r*iaBr=>e`D"eg\o0LNV5fqp)L[$nW$knr]Bb.pAY.TP?_$Sgs_rnJ(mFq-u/\@'`%h^C0\_"qURfclb",Y!WO@O^duWQ?dQ'lD!&d0Vn/BSf&/P3Y;]gK/f!C@EV?P//6KmlK/1%i)!W]"6$7DE,V6%2ndgFihG1dmDO$/EJ;r-Z^[q"AEkfqIFf/-STq[-["3Rg_i]28O"Uu;I.d$Hse;Pn>_9#o*3PU8^LqH-DqQAop+8.4N#O(i_)?2kcBpaPZA$u6,q'e$d:'Y:@Dfb#kOt1\3hnQ"[q0jjbke*926uf0D*#TEE_\DlOC1"tkrR>EgjHbRHWBl?g$hjH0_V5!Xk2I:0j'-OH_Z!'=b>ZFiI=ET0dX3]7JbDoBrG%GY2-<=])653]F3*()#G^_TDQKjq"0."R@IECF(I5hUc]G1)8UqH"o<;5'/=so`(7i"3cBK);JK;Y\9I<"SkXkGQU)lsl5sC#0C%"=ailq''TQka]l^;qWA2F>fIFCXJmWafnC;@r@e.UaXiAc!^M/mPrTJ&Arp'#T,6_8^_>b9T]P6ONrg!V]@13ai?"P?Rg5CYEki/c_0W+J*@$9fHSZ*.AS'>,"pjEq`((;m7=FeG.5e@(5J%J1QT4KHf&?Fnsg"sLkc<=Q]!V.8.uo\OJ,O)J\RB![Fq#+eQFLJT;70^>*^%d\5TLB8&,?&k*lLaEh(`!Z]l1-(_Yah)"%Ve)[8N$F;R']=J^R%U^rFrj`oGLSb3GDp1u.f6\\X7?%0*_%M%?Tp.FIdZ*H9sA8>._E@bC&hujoi[LAm?4kA5Dk8G6#02haR0HeW@@*%c.Xfn:+VG1V[S@!T3%5?PjH5jY3fJrV!0q[CP2l,,groU1p9@?n3'_@9'+gRB^B<#5#gmm"cm'nKhq9Xd74dq_tb_ZGApXJ.qs&5[eoCGVX4.=WA6$1R1-YppX$4&$("cH(^@o@-4hI(_(L,kL%!S812=_lpIR\bNa)Z[$Csk\4MiM+]Cf!M&n)e?;mL%==QQ@G^a<]?42#& endstream endobj 377 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 376 0 R >> endobj 378 0 obj << /Length 1051 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!kr9lJ`N&A@ZcXIP*2%,NY@2[tn,k/'SLdrq\V<`->W)I0ULlZcRuos^c1dNs21]-_jc%Y7jupbJ\Vi&lH&:*"?%W[&;(P_7K`iJY9HjZ8#a`ONTW'^bG^YK037C5PXi(0ft4N4(V@nc[2`P$9P6+6eV2h/4hF?e#9uK2@i_n*:rbN&/S3e6$pl)8#tl&_@<=Gt?8e".$&#+3guM%-:59WHqVjWM!_*;\c*L(Ofo5/o5j0&+Fut^@kb6eZ"++gXis^m1[g$$7>[J5PMQ8Q`$4D4SFO20]%l8^4ZUGtTgEdSg4CAo=6gErDt'XHuiep-ZVPrN%>'<`r;^gUL5YFI8WJ=rks>"?!bfb`eW9e8L5mGGqE_P51("'JCL5Q9FiX)3CT8Qa"[T_agSS]V-r\@*kO3[(f8WHB\hm[@C:].#+YGX.2"_lsWVO1=6B4.J.i3oCYnmD#TMf&23bUq_&5m5k~> endstream endobj 379 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 378 0 R >> endobj 380 0 obj << /Length 962 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0Ba_oie&A@rkGU_QmTg_j)7A/lg5]c.kJ8]R=0G\4-dGfs];ZD0Ec(Yn$.LHi>4g9oH*]U;6nE^YdKI\GE0LQms;t+QC7lT?6Aj5j?&-5n&P8ZK(P+/.8-A@WAAa!*C@Vtba(M=,dN@^+4N-u5YGhY21d`T6U[0g=]Z+24^EJT6>g+JoU.[gqd0\V3K6^9LN[8HmN(nKoUt*P3=BOQk=uY!ASN'7V-`sEF*@p]K/b7lu)d#0"[Ul>CcTnLP]=BP4YO9KM'C;^bQ[RI4AC'^JQjH',3N@#.t_K_E!)=Cg_r!>-IgD!g7o;hV@SYESb/fj@Z\(;qR+#*lrXR$PiL6na'ap_+3'^&pP3+@lR][?:60&Kd\I`0=$TgUmbTi^(t7\MOi?,[X%)E>TfVJagQ=+N/g9.;E5Z^=T1VL!PJV>4q_Ae@Yq$lGBm`uYkm#P15#R2r:9$`-7U6&(!E;DtbKC;/BKP[i@5hPs./NN]geZdu"0Zf@chaGs#HgA\NFUut1W"G<5&)7A8YVeksfZd\AY^\m5=D]ST>CN6u_J)@E#RP3:TMq(=Z!l&'r`rueRU=IT?h=c^HF$""g[6'$,2q6EtPK<)mb+kCh^j_u>2tI[ne[#kaD/qu?9Rd'por)C~> endstream endobj 381 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 380 0 R >> endobj 382 0 obj << /Length 1306 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm;95iQE&AJ$Cki`!UbGQD>VM>6-6Z3-U>;$%]VJY`nPUk-QqX7'KPXsJ:jBWH#'$XsYTB7(j?T+sG?aC#(!2IeI"f()b7F:t*#iSgP5R\8>D9D(Gp#2Wc/M$K*4iX`)kP@1lceET=:SQ]04@FZhRr;C-EIn4rrjC+>=uFTrH_I7`i[F(VCm7.CWulaM,Qe@2@S/mZ,7%D)R/'a?kcjotqQfWBqh2X+lFc&ndT)#`_ecF@1V?:PrEpX0JRJ+2Qoqm]oLXB-IWgbmAt`ON$:o>9YJ&m8]b1Z[gm8gle](d1eVb/[p$(_d?BP7o@CQE(K%'l"agCQ)g9Crbn7fUeO'bJ3&qJGShM3(BRt;q(@$(%ASo\3PUC/"Y17`=&@R(-D8G,mZ/+t;AAmO-BP>G$6mSWR]+[.m]dYN4q[:`@emPuqFdl:4)7WXh&:ZMD_/\A.$(7p3e-OaPL*F>3hL=imr9#Z_O(>042?LtJU@`V$ALV]ch#4O;ncZrA:YGr/(1l26,nGe+3G@9$&\M[Dom$"q;\4Z+=&OMsB#%E8'B\UH-hY5rDplN>1iiC"eQAb6qN.E5trtXDJ31Ws*RVP.RmcSE36WFMcT:DXSWq.F[,[k9mP9A-k9\]6N(,'_.k+Nb_N)E"Vi[m6$[LnLR&5Q*ed]SEm/[]pX"n0_t/*[f"o7h9p-(Jq9FYiQ%_)!)4VqXo3?,oueidU7:4nhHd+Knakn`IdT&?snuN*8cs?T`]1'1*[d0>+e#YW18<`ZU#8*Gf"=\sDWkpni"&!);\%Cn$DNh/)i6rmHQAj<;JbkEY&;),nL+RTA=,rER8NQJc]pRWN=^;WHHkeF0b5b\<<)Gj=A'@@Oe8dl&O92=:0JV4Dt&?k=&>F>N0DnphO9CEgn02$uFNIA&j+4\[W/(1D>I[YoEDQ2"K(J@:Y\6%9?drB%gEX2Vfu@2d:p6=WNJuHCQS!;@`d.Wnfl`f?:fm)$L.TQ8_^0)irKmS@L%6!%$ud32obf=dHWrG8`X[a!8C!qPpGS>LSl!TruP;`jYnbHs*$K;&U;Mh(ZaZ1^:sIdc4Wc:ii7)1-G5WTB.o,+N=!,V'SDe9kJ"[OF6%terSrk2)D2TYS5"&\LR,qFY\S endstream endobj 383 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 382 0 R >> endobj 384 0 obj << /Length 1368 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0C95iiK&AJ$CW2D\,="ER<6S8DNM\bNMJC.$&=ND+d'.]2KP"M8DqN@Ri%V7`Q*eFAH8Wbgd]P!heMpG`C%g@F?Xd_c;m2!bNe0"6XW"63WoMObQ47@GdkR79=lNclWR-8J3L2jiAA[T"Z%X2+c^=Kf/9+E$WC=f:fWbXrRm?Z:@Rq4%HPY+La+jN8EDqPY6Obk_5m*7ohr4#?BnE/Z5k2+.jBXG]W9;pR9+Ee=+^A6aGVkTlQ--C=qE'p!9m),\%'=Tid*K4/\(LHg=G[?"5;H1?=dD0"%[S;dqAf`bK*WAA5NCSbX*mhLjYF+!M9SEb"p$S=lpNG*+W)2EE?:7OfCp.+h!,=`6X!RNe)^6KZg%l#G#lu6G].>.BY^u^d'acfOV&Ag[-+T9B=j(R2iW-bRa:QXX%W>Vamk:D;!J?eN-8uX<>/u>Ln\DSsi'HT>[_&;fZ3E0G*;0]R"I[[D0uU^EcK(Ko4ngC(3Ttm\`KNj@V/6Fq6Qu"4tP5DJ@tqdAT'M`SHCm=/7!a6=$A\alKF@4@m*9H6/=U:4!`G*L8a]*2Q-@L"K7bqamBiJi@1Ugf.:Tm\X.R^*-sO5X\B8NS2033eet@d1JCUR90j9(;M&1"`!(N\eDM%Glahpr9UDoP5AEd++e2!OMDFd:[UaV2bFeMEmcij-:*7H-G8oRqB\cM1_";l_F(c4r.P1KN01&eR(Hap4rI)^r(^)pEFLhts'VjRB5?G1c1"qls;hs53"VNe1E<8+HYV@W<2n<"tWVVWG8*,8ife[Q,DQJ/IDDPg&XcgKPBZ&Ti,1<0,Pm,cs/qsPWq]pd*3b2LtSX2MHQhO5VZ(>16$%;0pa@c*VpZ;;$pc1mQ#WJ/M!1nn=d_tA41+hkPfcnF\:[g!FV8IF$^W@_]8oMT$cA1^QStfRK7FA^-T_br[p4L#9\,[\"9X6uZB6:'*j7.?d]H*FFF/g.u3GgOQjX5Z3LPM#)j&`N3e2`050BO$IERILY*8&qqVjBcEC"6"iAK%u;Up`M=Mk=U;2oE6[q5VEaCDCb/a'Q+IBCW>5X^1?2@A7Z%k:tk^^=nb endstream endobj 385 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 384 0 R >> endobj 386 0 obj << /Length 1432 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasap>EA&-&:WeD7(g<-kCbhhCrJcf9qkNid&D+0Q$tF1'82%O+:eGc5a*`g>7+u=<`L!N5W+V-P0uoO0&?$[R;/8I-)MRn(\5D4"B*:st_lGN%W]=sRA]bA7Z65Z:\aA`0LN>1j_4#,J\TYJ-PR+S$Em@-pN`*((=hL8T.(9*G%^)Nclg.Ss,MC=$I\']7JWJbhZ%W04!1u`00#`B!QD1J+ln><]&Z8,CY^eqCAs"iqP0R2bF)SAtUg8.j,&2[Mn5cc>1T0;-kWK(E8WTOLo5E%De-a3V=Hq%<\73T1`UZ\RhIP/s!k4<(DcEQe/+Ai;]>eAL:f5g+WtM4m4[7f!29Z[ldc9Lp^OtQGmRS!Meq9`2WdHi*`4h,+.&QIWe6"9_8!5!iX725[,K>S0l#Wd`!"'QXDUjPY`0rPG[jG$NdLj,GFoBJh/M"+pScjqf$^+ImETuU,6Ln&6$ERZ@)mcADI_.qeeg/dYe.(n>i3H6T0f3]n"94=*.1tiOE'B.jE#s*$;Sce,j1qf?c!4$dQfRgN3F0mi`eP;2\k/cO9E[rLqO39@"t+`tj!I="GDu9&&7dEA_7*Dt9/R48=:qU#SlqAe=mOpD6JcYu^VVBOQ1rS&`]]uA4@%)il*"V\a-BIWZY#JQ?;F/.S1X\C8rW)93a"f2(E:,6p:rL.<3@gG_&Q&Iu_PCe["Q[XT65?o*R2#hiKPF5KDnMVG[3;&AuURID+#ICbtd(j8r[[>`QjVN%/ENl[")G5Sr$?AEHghgQP:P@B!Vi9all7uj0ZEWcbh/Z3M2mmseA^8R7H@N2mbX!BbG6$UpT5cn`Vdqat>SCGpN=;S?q([[tm$Slgo!t;gEd)_gI^OBFiXQZ+9m]>pU&[Pho>(->Ee*"Pj6Q,06:jAIbgSCUs1SdD/pMl51XNu1d/huZ"k6'gdNKU9`E\g+KQ-.=YZ"r`7p@>Iu.KD?N`k\b9FMM,R)sR=&,+QVWdU)8#q_BO%@*,\t$U.B`A=qu(KT!SjfnS+qPig2A*OW54,9+T2gmU=02~> endstream endobj 387 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 386 0 R >> endobj 388 0 obj << /Length 963 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!#[bAs(+']&X:Zufmu'hJ\,D5PEK]B]m;V@1?YKU.B<6sBV=Ku"n9H._Y]j,J3?50g]?8)b[oI=<@?q%,=nKI[9q.g-j`6bpah!PUoEo-alBn72DcL8%B6*Os/(%lm'2=Dqap,GA[g#C_9_RgDRcEf?oQG)V)nAagOk5!a=ia1iS(X!8eOER#G(B4[7u/L&sC%:p^5j1ADoA0?:3M^^QNA;`R7hB6CqGNU,50PT&WeBD;QE"iVOc!:(e50T4.82\+BFuBPTbB]1'o;.>[tI-h)cBpbFr;XF44f\O4\5#c.IAPm8)A%1Dp'un>E*ImQrVZR+I=f%d,n=Z6fT)I*(M6n>L:uae(;is`.D)+,W=@oYS'#D$YchLc$\2?Es1Zo0O(tSoLFer8qtNf+LH20l,9KVYrc%T'p@UGl6p.b),Kp+Sq0R_"ps7T$P)_)cLEg!ga'X`OpUYp0UHTMJnaEE!P(4)hM:b.F4UV=JV7K%DM%-8&rJ-H+Y?_7m%T?)qu7A.1[KdC*)H$RH(Dglh"#E@:*InEa,fN8i3':dV3#';EF$LMSgUjhOc(B'alO_##jNC*clhOSB_':"REqR`du1,(V.ub?@.S*K#;4O7=ZVQ4np$[!&YkILp-,V7+EbEiR9-ce%=A0j)->hg,N\^6&j3gr"V_5QW5t\GEpc#gW1hS;8.`j2E/3lem=WpPHtc;FDbO4>Yc*Euj9S#9@]Ecu"@JhF78GI#E7V~> endstream endobj 389 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 388 0 R >> endobj 390 0 obj << /Length 1251 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`S6$&MV&AJ$C0KCH.P_&l;f66#?H10<5\$uY\(8=l5E^:u<^TTm(XV5N7R,^'7.*?27W]qJP,':LH'pIY6WEs.54b=@@;K=->eH)lP)+!>;Yoi'f`fQ>aK%:SJ)%9llj1TOI,O@fG,u8#\_a1B`R\YKj\kJs,0IBqXB[l'b=?;pm"=9I4cp52Q*6F^b.E)t-C+VIm;;+`8KJbBh/t4YGe5;W@`gLs_&U0$G.0d^,:6%>=&A;P:tU9_ZU*4Mp4fUAMlekZ;6OD(,FFGbac+FL9N:K`M4Ik;Pa=P2$7_sKkl7Wo9_(9S1^B&reo#>GnN,Mtk'o\^4*aBp;Dp>\KE7Dp6_u%=9N_orEHW^WmjWR*E8OdFdJ^+G(r`GMf/e&c#lD=/G5j6OB%;r"V&2Y"]lu`rEm3NdlY!X=bu4F.K'a^.i"3m+1P@Z6N+OOe,?a;$R*Q`+<_-^^WY&("\F.Q4$2^&U7Q"sCL%^dChmOY"n=B.*%3arK_-lpE(/BX'f'&P>KuId0QY*l,#VDVDSD>s17h2FJ/pQ,<_h>6S[gq_FO^7Q7M?]`Cl\Ec)SckBo9M+aR']1U-V#]HbTW@_:\XFS;H?Id]jOnjmfs]Q0)Wl(p>%U'_lFQF'"J>08(9.j^q!:s1@K`"D.Y+-11t7*?,(.h8>t5Kb38YKpE"qr*`M'o0US*iNfj$["m6Q2CURi36\/%s>\n`-u;4FO/nqmkBXs1sOl8iJ3(GUW`7skRW#&-KBaD\AX$"*aKLl!^B1K/>c=IU8I)[#Eh80TZ?;8n8eatrH?JPqYiahHq;uO,.o;GH^',]fe)#TNa'M`ODk1j#XR'sWCPX:?#VcDM6;:2I%3QY7Q9o7X4VeYhtJ@`1_02K& endstream endobj 391 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 390 0 R >> endobj 392 0 obj << /Length 1172 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!;c997OU&AIm?6sSqJ]-2?\VVq^l88pr]N?[FAPK%ER(WY@P^W1WRnKu0[/uXPO`h)?P1NqXDKO40=S\W#tRAY*kanq^CuXBCG.iON.^hIXMaQ[h#:ihqWJ6]\R4s+W`IBdT\P!/(*Y%]>NB_O4#l@H>?[!Qr0,RN]DHFOYWj6n9EuUb$mZ+Eq'Jie^^6eWoI1(31MWJJ#;QhAnOrWM+GdW5Ml1"s)EE(+4JFt!)Ku-o6*2BWO-.ab;&/[*E!Y68MHfY'L3pSrW$Xn#AKQo"]6X7_LClM%!Xj)[UOAa@=\fJ.o@Ft9Nf(?!F4E2!L_;<-mXLM+="BYg\g31o7-8jqB_E-$[]]N<*XZ+rbq$RQ$.m%pq)VfqsY.ek.S1P4])&t6k(=hm^#U6erF'hl>HH\BS/^7RH(`[.##0qFV,nY'i!LJ*Rl%0`]U8>.$_a2HjOF%#=;q&`':K9jL!7AtnVl#]%&AX=!=cs`i_V!e%*t!hc#bk;U-'D>-W2=bG+kl39VkfuSG)ER1ILe50Id\k'eet85.Q*3k>=1ubf/]O91Jr9qXSfccY9c2nL7Pf"H/XuZ&Gqqu%_7Gg:d111KNhp&Xb#l-5FADnm3ONMMnZ1&-j;i]*:./#]EgY7q-f_\IO)FH",/qY@I(rq+is7a]V0p69qk[a"QgD9\4O*T$S4c=/![%+IF6SY5')gq\Z6?+==0@BY\_'tHU3?FYsmiG*o8t1Bt\XMJ)uVC1`,5f#oBKYmITFC's>C4D>aD;)b8UpG`iNENMoLc;5f151r=;7GM_uQ_-"17)@`V?m\LQAL(2:;cCO/$0['Cb+MnC'd.(aPMcsH_3L6:S!k/cGh:UiDjC63JLY_6.qe=k+:Enl??IZ%Y[1_EZX"UOJ]?,`b6tI:W8kNIA]?snQf]c"'0PsKH*lCQR^&Chc?i<+ZUJ?)f[&.3N9uc`~> endstream endobj 393 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 392 0 R >> endobj 394 0 obj << /Length 1697 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHL9lK&M&A@sB#^_D\3ip%I[7(U1FFj'b^pdthcna^e.uRSnFuEXu^R#W\EMuF:cpJBfer5@$2ifa7;BL+`+$W2Sk9AO2'e@lrXusaiJ"G]r9"FVBjDCIDaa%&KjMW[(h`D?tUu&5m$SfL%QY.FM0k49@:'G3od:Bu[dDIp=iu9;HB#`l._/K(nB4pso`1@IkD;9-j!Sj4E9sV2'^Nh;B=anZa#7o4PLTNZ/cpf(s-lrq6Tgc=C1+d)H=fhbGV:!f&_'^Et1ViP9GBj&88!4f!Oc&-j#_A>8,Y>'\']A.3a_=&_!MC4drNMYmHu3N^V*0'Ek0Slkk.._9=?KRDFi<,Wmt)FZ6'MlKH-$381q>o:TIlhl?j=A'Efg$76kK$5"l0E5/mAHJI@&?kk5MED,'H&7V(h_S=O3cjLI6Oq4]IVN@br`J]MPF%Hnr]j,\_2bYpq<^Y(b(cFONa[hnf.#gn-ZEe#EZo[&MOXL]:&p;)#`n5,E<\sF(&X9EfAj7ioaA3ME1t@&hO"K?Z=bIDqct-<&IJqmrlDJBQ3&b5[Dq[bo+hrquPaiTff&\Pd>s?L-oHP&rI8dD+\3EbZlU<5e=SlaZ,)dhp[!-g>%@?]=8FKCG3#Xa)F%JquU_9?nZf6:XSnd;.M0!\n90ti[;"9_2Wc8F%Ls6U4%SNf[PXcK&QJu$,Q>X=_e;p+.Q3l;Z_o97W/Idr$j0M,Fb*,L2DT[>qn$h1T?dYeC]5u_aN0EPU_@8CWB625@1i0R2;CpNf!njHK8kieMO34A_Uj(7K.OPT*@f*oNR4a:\G5EFi)&J;!8BX>]4ao9l$]9+Bj:Bq2m[rDhLK#HF0P&JUJR!0=UQ:J$;AXL3rcW]%sK,n#4!&MFf3OZP#[mUC@iOfPhC/BVkkP!XOF;Rr9#uo(8RB].D/HaF:3!b>-P.U>Q%\jVq6U,Pu_'G8h$m4:FH+T9-l0W1dX[B]8dKd3N31;*[fD^FTIJF>KBqn0WhG=@=Jml]7Vhg?dSZIe^E:mbH:[3CaW4U!tG-(qu66bDY7"Z!7W+i64ZNU0Wq!Qq:#tR=T,f,\20bR[L#S)86VIoq@:eQip(d.7l!5YCgY"Ys+*cnGmcuJk endstream endobj 395 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 394 0 R >> endobj 396 0 obj << /Length 1637 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!#\hiFNj&:Vr4JaR*UdN.F^J3I;i9'o!B8pMr;aWXF=L=iI[S(mtW"rh.sODn3r<\*Rsch@/*Gl5g25AsW\rKK=VkBbGIYk"=Eb',uHj#__:J=A*/rP[AqSDVq";NS3.f0i7%re8F'Q+t$oIlQ1i[#qjW1,=sf]n'dAp$-o3ZGbQYCNZAu37PT;9Q3779V#c"='&S0"/C3n.">`)n-e=b5dC3M(+N\S5nKt.X.$d4kH:FrADp-+\PP_+jT;r?b`NSC]rDEDZlU*1+n9k3[-lC!6J\uiZ7L.LL#@hBcM2C8RnY+-30"4V2+2>`/;M=7c;mrQ*lN6?'*?DjN[JseEOXZ@dp:;0EA=36pmX7lBj\k_mn4T7EJ(HoPX7^CTt2Jf)%af-DhY'G"+20r.r.^t)t2-N.Ipf=EHnaTWt\1HRL)QpS<0\6e:G;H$ZQg*DdboM(kq[=HsMu2dcUhep[EGCN9a]3^OB;#5)T=_q_7piYkLDeGDu!u0'8-Q0&Rg_8?,>!BmZ9Hcjb:E0TGL$lVqgM!8B*4!c&r(YdVs+RB^GTgPWJZ9XLK"!kt'uf#'#'$F_'[=mV(9V+3&cr2Yr&3TitHCk.B,1H.%RlZ`<3#Ojt9FD)Z>NSDMD4BGQaDKt=O<)PkhWdj!nuBTd6$d+jL.[&ALnm;*SB^C%V]QUiI%)K,FBjA)H),;s(1^S=L]d'ptt`"]dYUO8++$JdKp]-,m>);F#A,t7,KP&t'R%SkJPp>11ZQq;)qI!X(7$6ZK9I*%GcV6RK$Z&"WV@LKecn.1E9q$aD'f?!FgZXY&Z-hR@NWO;Uk\-JL0?hR<"V3Ue;qD8RB.9QtG8]>Q\6rC*p[Yf5&J8VTMar5kk'mNB4YL]CFsKAhPd2Sg3#)Z=\2/EDOG#N)SY_Ul$RkKm'kuh*'"n8\P;F-?j'M^P:1L]jnu$$pN(:p[UOoH'ns,M[f^]$/Z<"b!.:8&-ng:t9X(4e?6,g<(mcm-^jqGdO$p]#^/i'CtJhYWj(N]OElh-7K`qSkp/4ll0'b*oogAolaHA,s+'],d[jpr:ak\rVm"#1$7[LS`8X+KFSH^je"(JiH"sP2)G-c-Gs08Mij7A?+"AG[ptYeoZ]b=/-A*d=A5Rapj/UH2A$or;[p_d''NK-=o:nLtrF%M2\Fj&^_sj>&V0b,m%IMc%mm86lE*3oS)h%+ehbJ#]r'9&3fg3Cab#dLL3]*;TGApoLR[`pX@4Q1R,#UjZ2S'l""3"#Ob5K7LA7ISn*;WH*E.gDmI4XI.AJN/cGT4rsk2Xl),akmjX4%`**,q(G&A[TF6f+8c(?kdTbde,__)9]eJ0GI1C@ir endstream endobj 397 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 396 0 R >> endobj 398 0 obj << /Length 1166 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK995Pr&AI=/TNmdR=c+;Sd,R`8V;>BElCk:/D\s+u/5Th7c+gFg%iYS%XK'elefN.rB>/:H9HJA8&"buefp6LA_M)hH(J,o`_Vf);j@(>1S"Eob'5ad?_t$V)YXZL8/["-G`o7hHgEd/[;?j%VVhW",uN=D3;+'W3#,_UO"i-E_&.A,i,=ju*GdL8)K.ITmtU?&I-Gq+-3K+rXGPSKuS:EbD#^pbh!$W4Q'_sk!OfM0ZP3_%-H.>Fr7hcI`n@$J[h+s@?%4p11#VV@:/.7F$\oU1??pXTq$\(Geb\Ibc-3jEi"4/RDTX3%$4M\h5U,D5cP5As'&M;p4m:-rH9">#X>I+VX[EI@?F./J]j.S$MIE$+2i`Z)7L'>)^!5#LdRl$<-=<+GFDEVOcK6'00Y5IuOcO$ERhPBiqLsX_H`D&DbLdYpW)`8Is9cQ#-e=2=,rK)jJeXH/WVmB]f,41O$=r"WVKSd+j,fQT;22:(ZU-#XZL&,X2H3**ED$nt!!_r1VHl5="k`J&5S*R!GBt*k9rSFW?.?^6b?IlPiEA58K\&H7&O@nl^.2+ek9)Y:4l/`kjjA<&_$st?n1)[a*nP endstream endobj 399 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 398 0 R >> endobj 400 0 obj << /Length 293 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gas2D_/@+D%#44r$B%i0=GYFZQ5u*r"#m%2ef?g4QEi*u64g=rTNbL.A8"g\[qb=H\IZD]I?pu1.:DnA'2o@U#124!8$$9'B.Bo6QrFg&#Dauq*I2>#I`X7P!trKC[Iit9>l.HDDs endstream endobj 401 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 400 0 R >> endobj 402 0 obj << /Length 2721 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasar93:/`'&N41Z3/D!^4+)DYQBQI_jk>K%I)_SmcgM!$IQ4j]-TO\k1>[\P$B;C)IT?/ZRhC,/a%.soUk$9=VuLD75S4cNr7SZ;)%V7IkXM_c_&Gu95blLZdise^QY]MWuEZeB-4uIop,u83M2j1Sr9drCS'^`HueJ,n#_\7(T4V>cW5P\D]#2[ek#oromK&lSLC'eU+0G(k:2[)bsuiae[%n*Q&Bo8X%T.VPSKr&fm"alN$d%s+YqW*HKIE%Eacf,Vj9JcQi0rccNVY8oN2uoGLDM4d%.IDnjp#WKSjWiS4hD:'&N#IT/9U%4fXod&60Z1O!E;^Z=S_KQo006XAOec?h0/`W`pbV;_KlKRk[HB5foHq^+tiNBR$Ml)%:)aH%qP@k[PHaADsWDeY;8ufeB',"85&>qHQSX=LJqjOb?T:`3(`fNgEIQM^dJ;!M5lc/Vd!tB0B^SKigtp&"^tI#,Sr\>a#,c/&b$E1D_Ot\AVcZK/[Z#a4P&C'0H@T)B:?3j03FNfk;icMHBKgc.)/,lF(*FB\f19ULWrYRSpQe^HpD`MtAX98A4iW\cC*sL+kOZOLZd\j.'`cPAF&)YU/Hm-X1C:M1F&c3$A?_IUF;I^mNM(-58ehd@1gG8q"gJ2_.9NHDf9b/B=Lm@ji<>aGlV9;@/pH!`1eq9nkEZe6qf_IbR[+b=(NQYJF$Pn,\E%5@Oij]4ColoKk4.O3lL>QC,7E"!lqBA>Tan*]42f^Q4kL361O(n13KguOn3*+NaB73o:5YGp=qorK1%eYtS:%l$Eu78"P./8AbddTp$@u?Sce%_,SP8UhHKMk0pr)7I(8d\EWhRkj[j!HRC`+Z7);TX6hA#(cqSpWX'q(G1XhEMZejC"C*cqaRA5Pf^8.&FpPZS`^i&"AT@Z)6m'M;3:#9JcK,a3B?aJ](1U3;)YL-)OJ[JE[./Z3Q/)l8.!fpQPH8upK&uMMg"^sF5^M:S7(\G&8:B\U@ooH)Ol(+s5N60$\W!3l:J;;=K>o3^:QorVCe]7QQ_[rO&>NrXLV,O+^9G`mf_eEG67UT(_\f``6.]*kSp@]cjV0h0o7^ir8N.O6`uNG99%U?`iba+&C4\QSWKfh3odu;"nKm6,=P%Xap4b(dob475YXaB%M=,FMM2m('Ih%T2\@+/[TK-R?<+n$JpI,_#"M5=:(X'pj=p8A2ld&%LQaS!nNB.#jd\eJm!3,"RT^^UO]qpT/0R`!J$<7TOf(n_E6XUXu"*%`Hh9f6Zq)gd$i8l>8jh@XC;-'TQbN7CP$WP`W(!/\\r+^9tkEm75V!2PA+Pdn63qr^c9a#\o7[kkkX(h)lj\epi==)[p]lA"uTq=NM",Y2Y1b((FCfPP+F28_/qM$Y7kE"r'-BD\S@[U*8!Y+]XT$YP;B9Nr:T#Vh8:d271OtFYuM+=73B*X86u2.U1Z3VpcnQN(NbA7on87IFT1@\q-4A>"9>\7fkjDP&%1$;Ork\6DK'!V(F+Q4LSrCM&bW8/-60<8a"])D78Q:]p(m0;(nD0,]]&Bb)1;_CpPja(@]ZP+Jihuo64HKU*/sRd"qJ-'Np^m2t'c&FYO3iQP`7@8QUt0cN?Hc?%u3NfCUI:bZ>>UFhpa[lf$iUF^W!$%p(\K#d^YI9P7Y"3(MEPR?.t!*8=^'U)\@BMMQHRnEKOO2ck4<>p#9>?dqkJ5rqLN5k0$3K+Y_E\NN;F4rR.$TJ$4jKA]l@h`Uhnfb"@.Wu8P;TSdq14k/^==tX1=Mt*)B^4^_P]@cP3%$UOJfl[:sjQ^Ru$:?K=-a)Sm/Vh5,&-0(qjoO[!8#@Id5t^a7OV#l1\ma"fa1W3^6Oq?1f8!/np_X<'p+eN1E:qC-#\qJ(bE?kAbbYPXq^!0-VI33KSu!ZPd#?[ZD*e)P?AW$6*GnJP8U:gtc/2:5E%g%Ab_e=A`1)eWZd&#%r$fuO>X+c5-@1HHEeMQ8ei'$#V_seIo0&DdS"aB:gHH>t]#pj&h)\`&D[QdAMDSg6]Xeq"OAg"%=8h;t6O_rm9LUh''m&#[X@Jf(0O;,4\Gkm`oArK`2bQ!%)4PFGTQdXIIgP*;:H`m7-s1f=_=\3c7g@YPc2R&+^ZFG\VGVG@CFVmI,VW#]%a)%NFgc)'`,d$PIl<8<_>:SleYR[9S`cZ\.=6W2ja0-K<@J1f`5pkM?1qXDY5qqZTcdZ;)kIR_#:ZGPMSqN0.Mkan-&?KLbeE_H#kIUAo`%bBui!>eC_4tH?Jj#IbF'&P3Tb6RDo-7q[b:RCif75k]/PP301adEh69Mj9PXm>0m15)UEEHIf\@!-0"~> endstream endobj 403 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 402 0 R >> endobj 404 0 obj << /Length 2090 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4997gc&AIV:&:,b;`@`b-XTgp6RpBRZUhI&/06%PBD;$<\99((M,Xq`[7j]MlAbluQ^2QQ:Da)I*Ak9\(>`A,9l4&&_$iM@INVOluF+M]XN,sN_35)4p0o^Z/2dm'Xne-'8>EcUBEf-GE,809/Vm"E"Y$qU12*jB3!0*nYK=mf]fIZ`9M9-R$hLV9G&9l]lM=M$uOXHFYNp>AUXf`/M+_7jb<(5_WOjM^p@bA2GesX1?d<#VWIU04Y'K(#'"OimBMKXdVq(5fZTn6CFa#7Df-%Q/WtfL$7(g>mG#9=4^+asKK?s*g`pWY!\"$GCmV00g7nVAb?A4Giq7"N1gBka@qa+LA/Jpkah%WJi-PokDBdm9cN0,gb\H7jETV3Sk:rbIT+tl2DCFOLT^kb%og#ekA=i%2CC[ZR[WQ@K=,^uO_?9PrLJ,ermmH\%uQ&"`_qhkc6^C/n!S,]@PI^k='&ih4/lqV8\\GIH:A$@A>(=ItVW'Ai]+bNb>=[%Mp(8(C/kUt<0#4PbqR$sp9Hmf(!A8A],P\=MhM$tCun3@b&hAJ"QA@o+$dSo/oZoBT,/aTnTnum3j5Ls4](CK,,9'+7GI\o/,H]P8^S#FaGN=Pg\P:tlAYha`WE9O-3qjg&[Fd2rrWl,lhpDb(3Hm,GLs27tfC-NZs>hWWTKGSXXVOo.n5ng3FdLNg(j(1^OZ3f4VBC!F:ZfKEkipF^C#r8>bj]jB0Za3g]S6TIT"D(2la+OWEqJN[FI/5G=8@pRPtgNtNC5\:)3`K6[T$"`mAR7P]?V?_,A^aQEWF)VWB'Tr@!*+6(d4U#+&:8IqX?$l8l*![/h!q-C1h#9[NrPq4Ps8RJYIcU+2qI`d9qS?OB"#j(Br1dSGQaZq05g:\n6*-4J"*(*$5Q~> endstream endobj 405 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 404 0 R >> endobj 406 0 obj << /Length 1485 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D9lo&I&A@C2E,q+'0hQi_X#\]JBBi5JNFSfO30U$]87kL,1-s'&IsmXd7=Z"9a_c)DJAps2LI^]o=0p$AD"9RU^%DLA+8K5r',5[NBV'Ws._3$WgeP"G_q$)l@h]*K%E4-*/P4I%3QG#$mjuMSLIkthq5gp=J\t=Ge(V';O$FZ`pb))U@kq7;HOp%"fY`BLq[sT4hJD5#T#/2Lmu'.%eSlT(-qLRti?3]A$TQOaW>0C!"7EuPLLA4I<'h$8NeuS=,4s72,sBCSE?@O<3c!Whl&a4F@>GNWpshum8L-A5@D)VXNP?+C+l62@;ZiG$Jbsec?X1DD4R4(,j2P(2-$J6JeI/LS<<@,*P[c>:s"NZAQSj],&FmP8mF_RL\DgHWW_\")tkq?dsU(i;@;"!bOFR`G=*?ld1B&7Wn(>6.Adm6G=c4tUYc!mc%btM#arc"V;@^Y3l_5?9T?DdNQKn`;Jo^fMW%sjHU6NYC=h!(5<>,?u:;J[?9G5#*OA]YAuZ=*i@rh7^P7]dYGFk,"ZnQJ_*`hOKg05[tK@)pr7-WKCmucEjNE97t'ThTXa,]`@^]chRdtQ)E*O0uBV?IBe2lp-fWq_E#E?1K\%)KVHi16HM1'<4b^iQe>O$n!%mF!Z"7]qCW*hQLCII7RNF8f'Eq)G.5]%@`cCLiVi9&OP/Nk4BN:Qn@>LVN\F&\AS"l>LUW!Z5)WST2RPBM0%)j(iLH#90fI8TYY6#JKgXM?R9KCRGIn@LSC=-N#Z\rd)CnZ;>Xrd!MKt[1GN=@BaSDR_'F^@6AER4$gD8dL=!KM/u?`g'(,/b;g$rt:2,7J54VDu_[%3/We'`=a/XZgkBXL:Z29N<.Z55o/\=^+`b&)H`l9(KfEkPFp,0D`i(06I[ZU73%ni?TG*X66T>EqT]-DnD8_97NsGn8hh3;sY*T@bh=f56$g"WgV"=fF,LMGNdZlXS\([I/&r*o0Eap,W[kU0$[n\E`KT(+FcHKkFd890oQ0IXI endstream endobj 407 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 406 0 R >> endobj 408 0 obj << /Length 2190 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatmNke6A;dF7o`d5+Gs\g(,m3^%E=ql>584j>']ZYTPi3qjsC-4;!Rc0iWD&=20^3r^n+T0o6W4q`C*U3oqrQk4ggE>>VOo4Apb8+3(1Zf^;=45E?>q@DS,7P$DX!/D\)mPBfm(%A_O&C>O2^0TfmeA3e;$6G@[l)eP$GX?^$NEe*J*rD8JEI(@D#$*&c6j@`#1gh&jK<\"$f,q^)%r&1]la+6j5=X`ZXHsG*WgA)]D@QpV/lF=IjTaF]QE0CdXe:q665;+(lYP_poLXV_-0"SFJD=qS+U(*iFq8AG5gD9R4?Y5"t",DCGZA%";H&2e4p6bD4gm5uXqhr70o@p/o[9c#HL"$DkjO-.N'(Kj?e\*r,0e1lk@qOSm^5gkfTu_krV"^DB9'1l!9M/5:dfre!EVq;P1j1#eC?nepqD3]PG5+?B8TaE3I'Y:7`<[Zde.BuZS!?7/>:lU5[dWciT/V\R7*4K?iP@&TKT6NH)pr-\p`TBoLnBEj8!@X6AKd"WincuNs%:*NR^E<$@++-+BthEuJ_B:@n24Bp*&d3^VD.I?nnCd5$:jOXL9JXfePNE)&CLZ"3U+h/g.0SeLWmFp'FSkRaY7L;h&r*\/AqdC@:<:t>23\Km%Zfb%5hAAFcf:m7fWhhBiIR:C'%i)3QqgC26h\7M_37KRF];Vp;_>Q@gVZ"e$KE\&HbRmUfe?S9blK4C_2::6Ie"",X5h>.S-$VLXqS8LOIl\i3G.n_o]Z?Rgh(Hj's!1lOV>MSI)V'Bp.a9Ce5>s#BEk,cOWie;(\qm?5BJ`,4!_D!\K(>(T/j;*$R[D7G#VheuD\:&sS1M9i%ZpI9?q8pod[K*VHeRi^Jo+_>R0GWsNF#("IRUMboY;)&U3=9/S%PS:#?;GSqlMPMpCR`pBrY1%3>3R544*>fh"YY_!&L7?a.?Y,`5_q!H#tI!iH/&8gE)AoeN5FIAI^TRC(M+3<5kg-I+Ie#h>-q_=p*#GSX&t.!Sq"T=5m(5\*@lr#%p/^ipH\]Hk]dW*"t+/XGRp_tT6LlG/-'7G"C2P&o]X=*G:7_""3j[Q482FoP(NKdjqmpYfhqH=AVU#K6tPkkA=:m0eO-*c;dFrY=c&2j:NI*F#9Mj[60/[j;iMn5rJY=JIR\%MF=IES(7B!UDo8,B&uT4'q.qi&+=o4L^ksRk&f+!=0n2Va,o0[/`&i>r13Uuo^GmDtY#C/hd3pB-`bBN794Y`c5&I^T@B8,eQI*MjHe(`K=VepLIA_6@6(Dc[*W5mSEEL?.9-UlcBL'9MXK592i;0>_%AYj=eqJ$'!_N%5XKF/&=W+dD7[WcH+V$OPn5P#g@ endstream endobj 409 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 408 0 R >> endobj 410 0 obj << /Length 1658 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%$>Ar7S'Roe[d*lAA%P![<]80l%FE%C[>B7+/n&LLkDK2b#*QXI9u[$Mub(tGBW#gR\!L;-,RUI,q8Z-`+XgRq@j.A:`o@b7YCMA-!\3@(U4fd:`BFeOTfgU,lXSq.O/CmBBDpe/R$qYe>)mB$n(^Z7Mh'/B!"3*QAE2S^K^X).^_jfg;X@0*I:iW-YaCW;8kr=Teh;?nE$#+?dqJ,mF,_R56A+"IBj)=5%rb)hR3$>4Y^2]'7KqNDegq;[OF?Z$SHe=XfTCPjJ-9F682GO)pRYBLZ_N^A(/W5nfn/V4d]k#nR&`eA_fNfujeT=ntETt(dUZ0>T;[XIFTa5f-LfC3+Tp,BRS=MKjHl"`f\I^"[/Qe`h:L;?KO12@pX6,p=k&EMP-&4n(;0+J*lID`+LV0Lhf235,M(\([ISC<8jlYg/!TKX/NMoE/Z58iZ$oBF_GhX)1'I,$T$r\`$>*tmghMn0%ZFZRjH\N"+C#@0LaD*C\RFRWQaP/AoCc;cG+B/kSWf(9+O]tuq^2Zl3J3S39c*#Dh-i:CjEicLqdn*b.:"#>172CPlh._6@bD+[3q5@2-ZQ.]9gD:YEo!0iodr%d%[S@$.NKI78Du's$FDs>^>W7BYOHFuM2H=@WP3NOR,t`_=7UtADE/+cj8pUL4#t%:bc\_-g;/!u)c**c9VabQDpi+f-P),d,oGAF\b<9YEA`Cp;T$R2)k!7q7YqCCHm/Fmje,NA\Yr^$q98Z2\3agN>$S+(kGO^O;rM5J_!X6/88Mi$aGYK2E!LA*k@\7/8%'R@[a*%9/F#q\k1;=jliuGcUR/]"02QWSPMG=n<@o;)VpHnr]9\a@-VDK[PE?4Rn?1LjXFT!^oDX&FH[+fdN;9Vpu endstream endobj 411 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 410 0 R >> endobj 412 0 obj << /Length 1991 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=,hf%7-&:Vr4+VYdYX=5[bVqnEbD32+GdKE.smU7.D>,Gf'ZKP1adU<+Q8O.Ccjfq6,_f_B4YM.."kgPd-TU[fU7@#260<@8X_-_a6LG!V=?28i9rrN[!7tZm'4=)HM8V9SiWYngXn[-9anDXA$o!-)D%:`A*g?"#j8^!:d-BY,XT]aIc["2\J$BMXt.8$)Ms4P;7QZ<^*iWle?)2[e@uk@nZtdceai^M5IG8/#$t'Ob&IL[\)*Ks2M*Hg6r?WFV7KJ=8Q!K4G(SPLF6O<-u^7F0G9p=*7dpu/s"\_8;_rPn4a.9B$&&t=&]*R_37p)Rq]`rl1`"][Q@\6epTtXBW-ZfuZlfqLK",Zf&tUR1ofQ[cf0poV$Fk9Gr-6`cl4LN'\u'_ZiIk:q#COrHk=NEhsQ^OOAgOc4E!3&0#Ll_SK3=)J#M8dk(bm6)X=\aJJZ((P+j%YLQN[H/^!k$(XkHnRfDo\L3B$#HF96UnqAe*h4a2SW@t-Y=R8XCV5AMq+2&57D6Vo`G+8U\?C^*MCIHo-(,ZXBg5F"Y9\+8Pf@*b_3Zb*a/o"r[`b=?@Tq9?/9NZaZMOLS2IGAO9f<]Bs?S4"DO*FIm7I`V5OQUenc)WCBZ($V/#sI>gJejl>mlMsK8:cPJnIVM\ea34oq<\/3haph&?@=Ytc=]X3e7W1^q,_CrcjB!BCdadSX.u/Z&$u6k-ORg]2&'*NOV4^>k@/'VQ`X>lI>ITNMurPIl&42aoO8?A:?\H endstream endobj 413 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 412 0 R >> endobj 414 0 obj << /Length 1416 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasapgMZ%0&:O:S#lEZs%O9guWI7ZBV<^$^)I(mhW/H22kmLOX*(ii3./ND/,g2o"0eNM1,W2)PS2l?E?cRf"gVA@mE1M52E1QY%3j/=3%YC9UA1dol3q:MkF1@RkZrkS.TCP=.et;(@5?p0t3UtG8*\TdoVp1fG.JQun$n;?jjs(E?NS/pHiki7ug^;-l5(8C,lauBXIeO6QL^clYInkY;ObWsHk7LQ"#db]]Vpk,G$R10'V$8+r-3)_[#\2crk7JjGHu)+@3/aXuL2gl-"Yg:M!NO@t>k3L$EOc3;GSV))#XHmklfRVap,KHZO89";^jrg`ZFlE25$XB;U=a)Br5+>Q1'/jfO3f,e@hs`]0HP_#5/p/#n4ho?]\'r5Y)^#1]!_QZ"@>@m?6Bq\i7\>);`'?.@=1;I^df(];^?.@$H\3"g6"Z.n9L^(QNCn88k$q\m`1MNZ="mX"eI00MOF?89nXN-nL7l/77.mqJP@s[GN!@M_<%ZrVIC;IcZ;/ll2c!5/qeHLgZ1,]bi3S^A)STI*[%=d[V9(;FCDrR#kELi?6hoV1RgpaO2>8$dB*Sh$#*LcofWS#;Y9h:\oq=&O&P5*1`mBSP$F3/V8fQQNEWnrta.pVZp^+I:;d^fb>o.)X="6>R!In^;n""4Q"J-SPL@>Qb^b2aPreKMbVtfaetP?Lb2kZC%To-@o4"JW+>%f`6?_s:V<("GbFM034Z0cVr6t;=<0s=$0iH-!'FgWVL#(fm/9n/c'tt(+::K[gM5:L]\aN4=n,`#6*t.C@4]._h*04MegW_?2q_Co.C*hB`Hn!iFllo#h6;<7NX,_+6H'skTYg&(gos&i72+`rSRg&/H)gefLS&2iO5oI]])2'!QI4+HiV%83'9DT0g-[f&AEk5a?Gd6(r-u1Jq+f-eH?5&[:"c6(s7F_@+[opb6=cKq7G[,U.bj`Z<"WD\ZE<@l/,IkR7[MK5fi8HRa3CT.4$N.Ko>hr_L3=?tdOI)VED8OSmMr)I.+9b)A>idm1m]0;93:.sV';PQHU[iUZr@R0I8Fk]i[[!hHduNQ[Pr]\oES,Q7^m'[I)iiI*kX);2nj=P/:?2*X:59Di'RR>")F27_7>3;U9=^61i)8'Mq@Al(Pp-~> endstream endobj 415 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 414 0 R >> endobj 416 0 obj << /Length 1006 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHKa_oie&A@rkFGtd(,t1Z=EbYRj9p$J:/%mc.6-$?!2m)[904E8QJa$0OSih`&u>7Ku5Ejo&16:&-UALf+Vg#'4aB(6O#:RV#sGB*5dhrmq7))2(hR#W6ZLfUDZucU^s"=JC/-K;jJjU&S`?M+0nCrKo@WO9jFrb"XQlu#a#(X2aDmUbKebP);'R0#Tu50)&r[_T60'Xi7<2HZ!bea!,6JO&uZB6[h&<1^+=U*X>:\4cmZU'B_tl8#m9RH2Nco,Z^@.Sj"n=L5nB!gk1]#o\nDu[W1-0EC0nh=E`(0.RLe&.je.G6hqfUgUQrgab)&m9pX408['RjA[is#B:9hjFF]`kS;%YuV&@W0-I0L?*)(O-4^ch5[S?OsQ$'^+.HOcsY97@Tp-B5)Nfp<0%?!+,['$j6@EuI?DK31N&_GaV\n>77j8l83f*-g9'PV9Y3qWf:e06M1j>BY`7EN!MqPNDFa"&qM*^dM6k6%De2-(lnQU>P:YF@M8j'h>F+=$!=FsA!?#WpJj02BMgK+q#.?=HG+'[G->j#44_?fdU@5A[[YB$_B_g endstream endobj 417 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 416 0 R >> endobj 418 0 obj << /Length 2487 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasa2flH+2loe_7a/"nI&p;m`Vql35G'coP`bcg_:5>-KMiB96Fi:4`I:^KY%#Iu%`gn+j?_WTjj5<6D*7>0!mod=9okmqYDcoe=/ul*nAq/$jhh%DWhThgS8K)jF=PJ(M^[ITm`$E&0EthpIYa2FbG#.Fm*Z_L^DCHSN\Ok^2(0YVIq+iHLlH4-irNa!8G$(R8n*_RQajZQ6H%]1^2*FaI5CeYqu)=@)q")#rWf1aSWO$Vgg'q`:M=`K!?!*X%j)*GqEh"5D1ghPD1g;pQS4f@HaOU/,lARF\Z-jcV9jSMg=B]2EZdUW8cD<3\r^,D:NFWNAg@p$RY$'N00HYFgt1hbXIShT_X\ZmP^Q>,Z?c9Vs^HbREg(J&F7)5edcE,]"lh&1ja[-;VmG%:Ag41?][Au4&`aV@^c`5)EL3ZFtXXA4qs)"0.K)=_HZYt7G)T&AY=HfUk'1=H23A\]D(N>OlhL'KPEi$]^)c8[b`p;hb!F!n&FiV]!N[%E,7!]>klbEuh2FZ"4AORaMp9\O9Ne@`E,CW^[HLm58%CBFm"C$_9Vu^p"E.3V'Ft$V^=5lNJ>6*iuit0PiL3@,i,bd>RW8MqI7Or\iiqom3'HN%l2&sSUUs)="c&`?t\]JeYe0iQ#XuTsk$$)*E*^FoedDd5oCjTWq'JpEIE'[<;=%=j$]ti2HK0Tun`R%*[Y$"%t\CtCZ0mROg/Ft!q1<6J['%Pic%Y)MS$@tVR$HtJsIARb4,%B1.EX]dDfJ+d'eTNuMo=tOPe02-e]so_S)R5&h@kQRpY1$[oBGj!fRc6rQ`XdA*Y[YtG/OP?Lqc:1:]kFuG<5!,90)>s3+:Im(&J[mIjL@J_,SMdL&g;I[B$6c!J)pej.ZX4c#6aH3uaNiJc(uTAjoL%omj2p)f])M!Z&I.'H[ndMVJ,Jgu\1/$0jkC*=iNPDL!%pHlSb-7l7sE/jmp?s>:NZ1*bO*)CpIU5<+1!mt+?29FD_'RE_iUh/0fMO`oPZAe`j;_Ckg;f9[UAc$c#!1[0,ZJ-/'W_qh4P1.e@Fg6j(eF1BO?s!mAWLe;`FT9/%:^h8)h&ecrs^0jge.`_eCgi^_J#DguY^>+HC8Ii&Sq-`8C;uK0ti2PL<=;ZQJieBgg"eBX@l#_,\`7E.<^%GU!bA9]iphS>o)k3?9c_48&-d"`#S*"][VVIF\&"rb:faOFC-qa*pXnI*;mg]S1k'O@be#l*"B*Vln!cI$W&ATEK4`$r^ZQ;E%2A<`67UDd"s:p/F0LSNiu;&peLO`I_NY$&1c(`<`iLBno*;3"@QcT!R]5>>nAQa,04Im=F6h00:^$Xe_gM)D+KCZk5e!eb,g%%!0)JRamD\nE#bt'nH!BZ`qg8i,_>"hQ+?&\_qrrXd+\4(e8fmbnA*3V'\B.C]CPLL_gpOfU/[>YjZch:i@"0e<:IgAYRoJD--IqZMS0U&$al*7l3Aj2Uc(BrB>&+*]K[k>>+m=LQ?-8hR.3Wb>J:_2brA5pL0POorIJsnh~> endstream endobj 419 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 418 0 R >> endobj 420 0 obj << /Length 2168 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!S-bAu>qnF!L(Z"nd1fE;%;X>an,f?qhFB[^A5://s%u'tM8k,24?NDb\j7kG.cCd3Pf$`U_YB%D74EU$l,SF]4P-<(.V1U.%Oe"5T1Gq!"qm&Bqqt-DmY^J@N2leUX@;!42oih4]PddA3Y0=G-rsM_H;Bmgk'biB`9AE%&ioEbOk)VQEpATFDhol@LqV?J"T#qr`;IOhgDQ!7-*'[^C(\g:b,W6M9^gI3".+7rgHZJCDOV_,37@T1^/J?Kc;4Aol4A\;ZZL!V9\g_D(bZm)Ka7TpI&r"$U.V#qt]##fRRHPs"[Rum,O']u)0jQotlXm:?@+fV>YAW(5@[r)2&PkmtkLle&SDX]:(!MOuKJM<&["7*$LFE2`%3JT(n(.@KcZ#=50c3X=%t"H'[?LAA:"uMtF0CLV%eHh,DqI3166JdPO.hIPDDJAcoposE<7ssJl>lc^_W^8SDUd9t:mOrcWUd\1f*6CfWQ8bR"/_V1IZCje<d-+L5ukY_nDdK)XCJf/eq'nuTX"(\>Ak+6^U7[S;1O@#[V[rRn24$c(,&6P>f&sU:dJlW0@P#@kI9!br,O1(kelfsM%3hkFRZ/E*DA&<_73$uO]G\(V;%pVt`AV_9nQb_G:cg6d]!$4gKJlD-CFI$bC>#b(d:eK/eHCuAE9Znqo[L3\la!WJ6m1WaB-"r)[_NU!)BG1OO8"STShj/e;+Q*-QML13O6_iKYMS)W0+q9)[j@N=)K/s')';5aW@lNHRBE>M;-?%H,dq2^g])jH@(_VbmNPL?B+t7e;Q[,C8=8_hqf#"2gGK"Hm)-UC--ga(Ao4J6^p.6+i8s4`mJV=G01cP?+F<\#6_/ak=PPp0,j2o>s`Xuuk-uBVnb4oU?!q/#iJYj'\CRUT/T@#(-=hdok?E(p>@9_M&jaD-Y1ZJh.;*Z+6S7Pu;>l0lAOB6b-)3=@u"6'NJDgfs#$k5h]9mD?J@l:'5(\\Xb%ll<6([$#KlKc.%W-U*_*ep(t/eZ3sQjG:i?s8n4MYH9Y&ITsk0g?e3MV.b#VLkLOG'*NIqU[5rVM78VlLg58LsX0#(DL9`l'%VQZFl1%3n3h6?jQdY'C?XR_u-;qR3[,Ic=Y%O<7_Ge<&Yp5Q$R.5PM85Ll3&@B`oE[S*rl*P7Fs@NI;.Qs-S?3p&FA/;_,o'Q@F]E-HC!)lJ3B$&KH]SH99XgqXe'Ja._X!BE?'q^2eD(jljF%RLfqB'cu:1e]L+pLp4RG$Y:^:eCEMBV0D%Lq(`\AH0:F):fT7osp5EoBsfO-E4e7n5=XM!gkscGC>++DI8IGG9M+Ba>"1)DkOcJks-KWBI;^AC7L.FSdY endstream endobj 421 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 420 0 R >> endobj 422 0 obj << /Length 758 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm99lo#B&A@sBkQZ-\@Y6lmVe1ZWl*Q3KV`g8>8(`a%WK9EO+oM4@fWbQ:9b&0rqf]CEN4QP/I7e,3<;._i0Y($q%-H[2c'C5iMhOkrXG_)Y?+h\ben\eARi?0"O!.,8I%8485NJKLE'i.G*E:(c?PStj$0h@:'DLd<508otT8oTVWkU26P?X2]EV8H2XNBi'NS5"J^>IT%cf$4b_h%(;_#88*%B4@Ntq>q2;Aj2abkXPKc?g[,9nO.P5N<SL2(CPU^D;H$WWMGc'^b>CoYq[dlhGgV$XiP9.G=?OlS$'!6ErE@Z$phB9n4F_[GIJNS:T@r,o,dP!a36`orr*haG+2Y@>YR:;>G=U>[*q@tVWVm]q*?B.hg2XLWXm(O[cHl$2=Xon7o<3,?dSF]6iO*1APohjZY;J6CM+De]B1?eHsBpSIY-@=D:b'R['h$Xqm^ig-GG8KHF!]4ls?OAAd)o&5,=/\Md8c*!7js1]6N&QprYA"*Mq$q].Ja"lUlX,2C$J8~> endstream endobj 423 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 422 0 R >> endobj 424 0 obj << /Length 1063 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU3>Ar4L(k(RKpb>=?lYE#,:M\Kq9J($_g6XNg))Vs3'']V,T0ML.S7$#DeX+:Gms`Ouk:.Uih(p1,n;YLX`Mh]-M^U2\b:>kPW,kj4p)dmrbb0cF9F,:SZ%mk3i%O&&UiHNO,)a^[)t\95R+B_4Y-s;K=)$4Sf41Ec]+[ht2%1.1KrcMHD_iIPDmE#"kAr8TRM1)m*p`[DQ:=ZU:b?5/DM*r6bX7JT?;tR?Q8e%qofgGHI"a\Dl:`>A$o[BCkD>AL,2QkQ3[ViLjKu5>]hYDM8>#1Nht!bbsg#S$T6R-umhk"`O&Pg@[oiL77a_oLAKHo\D]Wl[pb+f?!RU7M1Am>6,\>X.4+gRC0^rGgI1P\NNVUj5BWFHl\/pN)'e`aM)5&%qjMKJal8&7^r\[BMmiXh@:B#Uhap;-_/hkaU6.B[Ui;EP(qQ,T=a=;Rk4E"M58t]k`GIQ-VPK\Ir`Q3fUhCjeLT%2imHPq/8G.'*5%!,Em9L#g.oN)L>]lo),-YM0l,H>#+GUMs?X8k=j"N1%8m3Gu[Nsl5l("]NcSDQ"LXM endstream endobj 425 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 424 0 R >> endobj 426 0 obj << /Length 1558 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=,D/\G_&H88.@I9CuUt0=sYBunMCA+g.h.k]?qrMju85'q/'0A&smG>$2$j;B=o5^j11#n[7#+0[d>`X3'^.'.Lr4j8rH@bhG"(&eCJ-TJW9EOF1`#C;A^FiQs`_40>9gABc^V/$eg_U+I=Z^4M=2_(Xr*t!OGl-taq"F<+hn+bu`o1C%0qpf:R"d0u2CI8p7`(GLqO'#^2m<@!2to95g:ntN?'d\BX"Zo7!"k#87=ON-:kkAa<\lPgZ.ghSR$?&L-b3)^C;r]aa>9eI:V9dChoI#]G#g11eQYm7)qD;FGu>rp0QCs?jCD;U,lcYk\Qo%dcncd#5Q1LD*.8\6So/J\%5'XD5QO-p)Hbl<*q/N7ms`#nj2&rn2gcVE(u3pUDLCP')"h3H&W$sQZH/*>:lGK?Wei\#h=n'BQ6F?ELFCuIJ0pf(/d_d?;*,LpfXV'5qO6df/;1kfnmaOIqYIS#2T/`u;%3C+8@qSrjJE[-5'#0HfL9sqPJNR2f\JeQU$U3`:)dA4/X,/lXY*8C.e<=Rs0i*4W$WNO+/s?_CHs.gZ^K`N/3I=r,2qm5c\k0[jFtU-5*/"X3IDK8+,c:#tBk(%if)N=Wm#_9-6"fMPj2C.]TKg_(1j0]LSlgX8iW#i-W'1:L+9Vg4HF:j5N#I-M'[FWo:"Umfl/>DIMt63Z^Z1_9O!O;.'E2=d#Qaj?Tq=aKX864A\M;R>.US3YM=3WGEFFTjk-TqOqT!FM#*jb^Z6(m7L8dOJt)<[0gWnY=SEEj>VkG>2M/TSaRM08UQKaA3EC>FoqAaG'rFseGuQ=Fm]X@M'nHB==RLA2X!um.qG>u9nTr$16M7,glDe;%:DT7rTOpm\r2l&"q5n&r%O=o=C2B>Cb1M:=)lH?II4%GYLh#L"eU_a;f+hHbqEf%gA($@j4@6)G1_C.1a=D[!*Ncrmg\q:)\jG6>@4`T<\!FqEGJ_2";7/51@"0W",[R`30 endstream endobj 427 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 426 0 R >> endobj 428 0 obj << /Length 965 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatn&?#Q2d(kqGM/%A8*io2W,gXRd]>,P,!'=sZURRl]hX9k]\FP;3B$oll_-AAga'G5ECpDhCeE%]&E`AMe2$X>&a$s[F*J;u-Ed"/,4oN_Tmmt;YCa)Du/d=r%#jW?t;:FH&aCS=rKf7hG4"(%W.Vft)A=Ht^B5-.b906oHr`h$Bk*6(Q$ib4m@B`=7:s*/BPNuTls)ieARoj^s]&$,!oYB6J!%qUHYrY[*'WHB]]LLILCbfYa-N)Qs=)HCW<[Znl-)V#A9cdTN'S&saV[_0.c[Cn\]5+Ykb.QbHHX$/rTT!p8Iq+e5`#\0M5CP]%D[\[S?P.#(X84Vq9>TuiXg1TE`1n]@U=rbHq;7>QFE:qip-R8[5l,#Er(dQLMnd\"J>m^C::2g2b6i8^RN,t-[D'tl>$3JqJFL17cPneJnD"&4m0r'9G%^>E^]dM[h,MKd@hO*ND1\!A-S:rnf:4COnD\Q#uJe!$L&6@X[fFMo=>eh9%Vu#jT3M#GL^kK`)aCo%i\Jpi7unfr,VB&6B#gC&E4=Dq_:+Z* endstream endobj 429 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 428 0 R >> endobj 430 0 obj << /Length 1342 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4h/h:0&:`lHn6oB8+,WqC$'H"k0hcD9=_T15QjftU9^GYs1Z?.f%S3`oS+1LZMWD,If+#,Q]9j.;\/cHpThcZpRXn-o?@Me37o`k57%>ZG2>Op)E270o_,99!%'FT0GKq4?S#$rUOsp9d5)UE3X14kRg4EO:HqMEoS(bdT&*rbdE`1YU.kUD"PEP7%&E:-AZuD4T"9:\@3<')SO=E+\p8u;%V;*Gb;UcNfk%Eh=:g]\$&\$&(>o-Dp4ZOF/Qk8EEE-AMh42Qa.)qOq:5ZUL$9eqd],nXO>WE!Fl*sN9g,^8SI\O/Ki\[>WXDp.=;qP,'P[&i1_lafEc+[>Cg#HlpMld&X;V?-:[+Om^`[h?L\-C%\0OkOTeMc#gbpR)iXLbPYEqYAg@]t1),14auro,+fLgc4kak[IHJ&U#5IG6,5+kXh*?#nO"e.gE;=>IkYpr6h1]pB=Xm;WPFUF04:-i;mE19Bo?Gld^o@'`,Nc1im4Cod/>79bSBmje=?5[Q*;>1XQ4Q0*l*N)og!4*4=>MY@f.B(M"O6VOiHA9YIg`gS,'4k6mDRS)Xe=)BhK'LI/>AO>F^0gcR0Z`*/G%3_ruGBej)NQ$2WhNifa?&d/L$:WLOKfb1lIRN5n,$Hlb]BJIl#O)>.3A(&lb/-ZT`FZc:IO!'03n>UfPcu)S(p:[%0!6JV<7pXJ7"qk1X#9b(V-hsXs?cbaf6'@s%)+)o*kuNlS+R9&_FmR9?4L,IV'W!B.h'c3o`AX>KLFf)19%.jk)LAn<\>d(*4,Bp*+)^MPlc6X3g!/Du?sF0RLQH[eSe(ITE(/J(Nffs2Bl[>rtoWN;]"@\kFr*tn"deQ#b4l,@cBVLpDTo+]QKfQ+#O>Hj!Rs/4[PLJuWGSOIZ\[Z5!!?!*s-+oXFN@2_%3@!X3V>?AfiBT.<#qt9;A_#8m>$t;UI.FsB>q$uS&,\kN?\6!,SoH6_UE;+U(lc,EPJj$5\kDj\6i/Xr)\!A/)B-Mhq>]E7q\tIn^_^6qo4lqL[tFLaFV6nilY\&/eEE$5Oa[@\9Fjb~> endstream endobj 431 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 430 0 R >> endobj 432 0 obj << /Length 1387 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4>B?Pt'Roe[i6dra=9RX74uGFTBfb":3qd_=et!5SKjb&(&`=q`l$olJ!ZbbgPP.^@S=>PQF$AN*27m);?=oM.Rj$NA/].r`dl"@3>C=DG&^M6!>H!>r'ed@#"aPKhd;uR3GYq6@(4*R-T>#s_C:72`X)Dqd!u]1gKjAA<^9Ph?+7o'bYp:'Z[&TjuN*I6M)6;YF^51fpVN4pZ"&67&l-gH%qC'%241*@)J/NO=2BLSTkJ&VchsMR-m_8\rqiu0]=cLH!YeKtEpZ%k-ct88#duf+QFC0'0>9l.ge5E0nM(tbcGaO"OAJK'RJWF7JSrlVO.9K(_C/]\I^q+8*=61I--moa6<_7'=4,QAJ;3/C#Wpm5^D)hY''(fg;_1*!9EQr2c4?a\9+M9$$7<[I]i!frteb64QLO=+rV+1GGcRF[=cVj\Zs^jXi&,NY4hI?(s5tb)#c*R^rMYPQCN4p9Jt=1sM31XhM%[cfks1G36k:Oi?7t6B3#hMu04m42OrUak?<2aLllIb5=OC\1Fb&D9`=1FQW+K7]-9o`8c(E]-..U$%Qg!?7p+Ec'7!WQ(2[dm>`YrLFBdc+-mRIk]\G?FqQ#N8kVJfU[20$%[EKKHkf7Pp^qLpFChuN]LJq"lMYgr"C91uhBA_9.\nmBZX$LE`f.5Kog]'b">@j3Y&YCp/&+Ek=JV0'Ya_Q8L^[IjHKd;G.L!kYlpUkTY*j$([,d41IqO4+G6jn!C'r==U2:AasceDZ:9M<%6Xq;Yd]qgl\=O^^]M!Bb0ZU]);(MWjVt$gHJ7b1"+<-hJV~> endstream endobj 433 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 432 0 R >> endobj 434 0 obj << /Length 1821 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!"q>uTcAn=tSF3dK,UpIi-!rQ*[ikgO,0pn$e3oDH[N*fk]h'0k@\]pV,4C#JhdB3mWK*B-DmSN%^D=Ag5"/(,8j[sUQD-2pRI5_!=Hc!@XrUa7H$=l*1^O0PGIM=\24s&E1hHX"t,fm]A\Z`!fRm(8an\m>aNM:Y=,Uu7Im-;=J#nN[N<*f2=d+X2jK6')R](McZcf"pgUD(t,%(eDBlh+eDgL!QoIP',d!u9?ZrBti5(2a95MH%bVAVUC:9Qp]>=g@hr^]5N4.LIuX%8hWU<1[&SG?$W?1\u)R@)6Z+$/Utikt3!MEK`4RB3X[2_Qq1S2rng]PGO6i>Me#"LRp=t#6]=sW/RR40<-&dqpV\G,$._RlalT`?$`o:k2LW*iq=YmJL$.da]8J<:!9Q_6:@&mOd&/YoDa,`EHcmq2]3Al6GbRX@\d&8oh9GbQ+OUe_aQo.'Zm$fe@/=0RA8uYd::UE6A!,s.6?";2a\D9:Ba_p/Wl#cV5;H-.U<9"$Zdju?N7'"B[=6TqeW(7PAt[`"1KJ=R4G$6H2WUUd+db26HQ%D&;%O[2Cl#S:D(+G:p\0Zg6_&=35t#&9CDraTQ41stL9O1*DD(&=ZRD>4Q:5sHlSP<@0(6'gP17_gZV^AkND0.#T)m?hk)AMg&e1O*Bf7iR!OQ]lMOMs>VX,*3Y](Kjne\_6f:pr`AWXS19EnoF(`hhb>7Z%p0>P8]s1U!%hnk<8GLo@9a6In/4LL1P!&+WYl-+=O=t?\-!t*R!M\.nni;gQnHPXN(G2GP#^0!0"84bA$cS9o"+6n!2)2o3,TfP,FM\/k:+;Q_:QADkNO%7a3:Q>\>;@HG/U8/FN;;S%QDO(Df;Y.lLId[Nj.=N`GA]ms5@l^d:6uF4)UW-@=]o[A0%>[6jE>u5-!9H(GbSJ]ZYVV5"2F7;i?:u>cM[aQ3\0Y^>,K^q49KZ?b8(k!o#Z7oFR8&YL4]o6!FbS>u]b*t;gX\uS2 endstream endobj 435 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 434 0 R >> endobj 436 0 obj << /Length 1707 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0DlYkN9&HD156Jq&:N?[Y!]0ee66],I=J0f40AKD%ZVCWp;\>#53qs-cBH'7:ADD;hkH)H#ZmeGhi\')nE;C_R[?B>eklprh.(Qi"hD]?c!)G3)uL?DfK*0fGa.'1([g9JdXGWkRCe)dI;QA*M;*a`q9*N$VKG)B6fI_p94'J$9?)3](4RgH]os/U;e1U_R"L/Zd\`m0RAACad2;gr:8"8?-,hF0]f3fR2nNE1\3>H&Ptd>jn$Y929CCfT6Hl@=VV?RF9Nd':qdcF?O)Y"tUBS9-C?pP;4He/R"b(#pJiIdWC>-h#C<\NkO!YM--ETN?MlHte6>sk/^'/k]C2o=ag4(C4VWG6'tA^)@XlHd`[!lji!(NnRM<<^"GVN>aI8F2BI[lBUnJN&:o1R[HK7Y?->kb:XbR-^*?B)VoDEYMh4Z#teV1'gl:P^SDE7MBms'tp0V5n='8eYc?Df,F3dI+J/qG-KF@%4H2KTu[\-,H5glTre.kaFOqMY[gL%!fn5>qZ<6QpC8Nl"J&Ol@2nAfHtnKSpq6PJiU1Lq&$`J\A"Ii](nI.n$eKRkj9?G+bW!#$'@WP!^;H4+6L]OK%74KR:a+9FZRr+O\'0Ilr)pnZ/sE['CW@0C#*0N\qg(RO>O`^L6l;3eHBgK=0R-"H%#n=r#&"[n/O"N3MrP?$nsb1;#-E/Qbf*9Z$1)JL0oiqh06@-57-"c).TGPpVY(C8!cIZe9KHi.'1\lJVjCAepO*NW6kdQVXJ(M2Qcdccl4oW8s9:9_4aG,P@3UYM&C5]Zj9Bf(SM_8=iG;I1MGd[d1#PL=<%-,1kR,#`[lA8=>Z3U5Vr'nK3ra1,me?83Pub-D?\gH)Ch4^%Bg#u;^$q1:#R$k7`^CFJDBP+HVqoXL8;?()p;%g1.d9'X0nB'"$MOU<6sW]Ra-d75un[i^>k0Se?6dOWm0a>#,9>EH"np>Z8aUT,2O*/JUgYR2uJ;Q3:1X/D3>=5n;^WabNGWGFu<^(Cb.s!pe!7CP%nT0PaM6b,c`rr/L&fAW+J/B[@6=9%t'E(GePjNQ6hJV=@,TY(_rkS-j`g;/#`n)3@Xlbb<8[U78p9(![q2g\R(K^Q,&Hb+Bg+qP39_P(]380Vr$SlK9*:%@/`-=@j:^#1=H%'T_F'>/Ts-'Ga3Ud4Ya?\3E.'1_Ik#Qnes4fQp:/ZJ.('Q9n)s;hKjDlr8gMmKT&"V-G_Y.bB)#rR^*t>f$]%u[fZO~> endstream endobj 437 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 436 0 R >> endobj 438 0 obj << /Length 1136 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK;,>q#&:X)OaCC?eM&k>B2MqW9d?r(,;YDlC.AUjNd3cg=Yb+/#F^c^meeFpn+PY\"GJ:]XMgIAH%4AieSo)`!&D=k-W:'gt@C`hcMDK&!]BPlSL+kQ[*`aVLMFE.<_%L^bSI-q8RK=S%q\ID:-aSfG,qLT\6%l&+&#a8<[NY-Wf2t`+Y3_]*i/5/1ROSS!TVh>#'8]%EdMkO0cgiqh_,MA6Ybd:rKe%@I=(S]lLOd\1`R%Hj/]Haa6`f`;]1O1kIe>OVSFX$Am$V=Oh=@P>;3`>/tu/&Q1VMt>]DHENl*D?io\r];FXps4BSkInarS/Z+Z^2T@\hmg9J1Ds1#=DHSpW%*OC:B=f1pRm*9u`>_9@B@WtQObc/lqSO@I0(,\`gqX^k-&F>Y/3El[b0lP#SL,R8(,E`#""#3&0:ph`6ViM88.+RX%GGC;W`JNPM-1?arT!\T[+s+"6C5uYhi6f)FM,(Sk0h9:/"V1D85Yhhs(5.`/JEm9o_mX@RYL\X;H$rTpm:V2pO8rSKs"*m(ltnS(qh/qT%UBP7F2O.7%+@uQLU-4djoR$e&@XBO[./LFu6%EpieNZhY/>MP=^3?H\lm3UNt2*CV6DBqIH'o[%Y>ta([2#q:B1QSBZq+_FW5LBJ>6/l%DjR>S86&j%G#bI:MK0^ll_4VfDHl>Vej%a:.#$?k"8:4kLEOmhE&J+Z4$e)^iWpn/O5GfZ_!B$5mR[b\KA4II<9(s][`NL>WOmd+*L@7p$I$fcR!JZPGWjs%Y)@#n<_a^9(>fMri;C4Q"6N$H?:P%NW;j;3U*-CfXM08TDQ!>"BfpZRDFFpFarD")S+XA$l\S7DirV$Xl+6DLsCVrTG_;euh<8FigBs\1>YLL>=O!/d9l>:-oH@:V"s?$XLV(Ru(KSEQFT$#mkSiA*G@#Pg;OD'fs;Pkq?d"Au>~> endstream endobj 439 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 438 0 R >> endobj 440 0 obj << /Length 952 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0C?#S1G'RfGRn7*u"M*DZk'9e.f!f;&R(PYbt\nb\J[`#;f^W6.`m&!PDF@(D4dsKBNn\+*H\X8B5Hk68]0EAH@-iiud"9SNh!9*K\LbK5LR'"2cnMX#U'CZ[Z5%tQp/ZM7D/u!Ueop@nN(i]hSs'\M9TmTR0n'4=@,VZ75Lq/d0*R2pj;siT7_oS`c.3]\*]>`p`#ZaF%#]=48-PMZob&8Zl0R_YeFn_lh:dZV/aFZLV&ioj]pf$-CGNn$t.lmf0tT$qIm6)msh\46X5!Xe9M)R(hX`?(ej,I#Ru",DkjlC!T^F1KT)db1`>LCfRk_nefa\bcmn)tdRY!tI:!)kf;OX8)5D]4Tr_B8=M&4AgBos0Z3]MF8anlJKL>bt!)Em;a4(.M+DO1Im-nn`!Ds#]7]/*#1A#B0,[rrh+pWpqH0Y*odV2"7G4HnkA$a[QbeaHj3Vk_b;-qLi$K71=sch2.'EPJ#TXn%7c]U$U#dS'L_Kqf7<*eeV9VN_t4JH&8UA~> endstream endobj 441 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 440 0 R >> endobj 442 0 obj << /Length 1438 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0C969,O%)2U?kdJc1U(p,^eXj?.kqnsuFH^rrflT9\9KDC\P!dC;[_KNj7>VRMq2q5.0*29(J3`#prF%F-s)[0Bch3es54b<;$ospS+U@hF1.&\o+_S'"^>4EW.!X,:>%@qe9S2O1FYLIb)i\o&sgQL^7Z/GHr!gY\)5cf$7#,,a3j98fiQ2!93/jD!H(nGTnZBSqc?\8'V79P3NG"oYARj&Les/7CcQ&F$d\M^Ep?+ZA8L>H[7Z?/GQb4lLYJ%W[O8]'$jCI`^V*'%7'!2;!+03`MSUhiaE/[qr3oC7tECoZGhB*:I:IG#?/SuYJY5Ik+MLpr;q9/i-AW'M91+`W;P4?%3rFn45am)&m,U-uX"";E'.#.4b>$j/M1B,IZ$SY7XDD4m$[9;fRb2&UAe2"fGR0*1e&34OWTTSJA@V&571?>lU+rAjK_#UUc^J)K.>%UB?E;P*ipQA]!4=7d5P[3%>0EW*O$em3_C^7#=nm22Tu1BBNlc$*1='K&-R4JASsUnb;*GRt]Mo]U4rVLO>P"TXohHa3"GFnt[5lI^oYNJ6pp9:K4P/M)?!ZA'hT^D`UCK^W1edAt*%-2"O^Cr'2)lpcc)PqBs=APA^[kNe&E^-.irF65Q9(%e+;%PNRanA3CCf;&\jP$(AFpPq$:oro[41UtIhdC^6]L^[BM`Do~> endstream endobj 443 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 442 0 R >> endobj 444 0 obj << /Length 1212 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!;c968Q9&AI=/pdWG'f6[2q-T]]dARL8$.2QA/,uKPtM%#Oei85bD,-;O5E=*MZQUos2p=n-c-i%443PPna'_m5<>ttIi@=l/-r#lU0E\e30O(*%=p-,&2DuA*H_dU**U,8?(qPW0dDu+Xt-]4&Zq9C6iF3UP-g";m'Ttgl>NbMHRL6h9GokmHs#IO7,fi.&_`8/4R,SJJ5TsdGh3pI,N_\9A"lE879:%DQ\]U%pV.Rg#CUl4occ?$i\=(aHqG5&CpT6.FhSc0MO.1jLUGi<;DKMU^V[g*5p[XmH*1&]4j2rS,ed2PE2_q5ll#]84`^+4'<>.Y-VBCSOLhhGc':d-8tZEE,#,\_DI:?K:R9?Zn1?#QbM4Ek.j6&VL\g_6Z>^M^nT3Ofl#*cd=tM7F'^Ync.Qk)gXXL0Y[)#JcGMDd!Tr@]f+Pu:4md[VntUNAMer2Ae_4rZg^,..1eQsZ#'bK8#i@LUbP/HIN'>l%jf7nliT4\QO8npK!DF(U)7ZlQ8LF..YJqZ10;j0]\rM\d_PDP)9?jbR;6UqtOZ"q8;<0SNl-S:IMYB!W6Sr%%8=Xfl:IM*\PVU2@s:8au/d>mt9dF@VuDaT)q(R5K0*om@:V+8mp*&XM5F``"=S<-=jZ6*LGQE?>l4O*_q@2lD774W!S(YYGW;<4g43_=;G+&f6Q$5S8jP?j7fU4gG']s^%ngM__\*GHNJo^W?5fiuk0L4cqZ`]`,%%FU1m&U!2r=!5M6Bp^%L1eFO7UmkdXqU&,IOrScJhhsr([]_^"A$4p(,%-!K9;`Z0fD:#'1+oMFl7M4&~> endstream endobj 445 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 444 0 R >> endobj 446 0 obj << /Length 1303 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`T>AqtE'RoMSa;Z':?@9qM4`/UoL-T3``sX#S[8%ZtD_c?t;%Md4:16c:!GX^/K[KbKO87TU.W2\7WM$A(FOYi%LA%.;(``tcn^q"uI\n4#NsCV1l(%X'NLQ!T8/hjJk95+NBP^FhTi![fBY.n3#dl)EY[F^E,VPRjd4j%E@+[f()s6CYJrMY0eJqlg=;cS+5=PmJ["V]8uDVSQDDp6(Ij81[FSeD-Dh-aGhU9rFu@NC;5bdV-1g1:G6fTHomHOIHD]Q!g6\#;P!;L]j(iLq&(d9@%5+u3)tZE$eHu#bee0s=cnq?Q@baX*ke;,VVdL66Xm2S=[dW.?'HNd?CPltDO2L$Zl]g=Q0)WnD=7mYs_[(tBX@COlBR!#&51Xu#T`BUK)nasi-g7jm^8(g+A&SWV"cEtDn@XRXF:gcZt,,tor7`U5q!Zko(QdR9I\Eh0,6[9g,"ZDu<3M%5Aa.#eB2o%4L/ANiPM%:IWc5ioT^mc2bSQSLcj6&Xuj<45:X($h-m:lKH0n3[JH,LY$*EFWQ[+*Ws]XQgJ:WbMtRPnGNHeUWEAj<'iQZR*^Q$H(RBB_:tt`Q\p'@&4I%^K7.gk!R4X&WV+g+_M=2VJ3*U=p>@18gRFN]oAU9UB4P4b%r?gjAbF\2:m)lge,,t8]0!qfGBNZC*S%u.eEe@K7IT+*/e'tp?S5WVFr7-TSbCE2gXn[=fW,!9tX6!9ocVl\e*>/"bbJbYpepQf%V`7lc:V!ULK!Rgg_:P)C9r#7J"'WRJg&^/p[p@.kscX"JVadKtW!heHJX^24nK/G<)asP!mEt5\>KRm'ONFIJCV-i=:%Z-M:o@p9V>PB/\;\[>tmK-T_!S7L7.rikZiBV5.V\kRiDEXGn5_6E#-ZM17KO:an;b[V48J8:\=F2f<"7grdM^M(Y8=2,E;-=>.krAK^Q_!m7b-hUl$4BW@)Hb!u[=#.1$u9'mBk!Ii28q@VAY%Zd!J)+hdZg0atu1iJ*Q=EMiY$,6Prr!PmEu!Zj8F&Q^:r[c]3\%[JU'!$b/JI2kU+Rh+g-a%8emH(N&\!5Kr'O;SIR0(S854cje4rl5ZiP>LF_d/A])U\L0OA8'udqb98KI!X9M)-AllG3^,@TAcAkbKQ_M&gEUV!+GORe`DQjA,KY4"7B.@*I.-l^XGAhZ2@>1W0ssZ"iet49G*?e~> endstream endobj 447 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 446 0 R >> endobj 448 0 obj << /Length 1352 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4>BAOI'Roe[d%f([WWJkupM&ARB=$'X2Mo%!S"1%OZ(om9*.ck?^O@n(iWpc5:+$S2Li\92mss<@-a2F&^dEYpGk:#Bn5^4`"nE1L.#[3-35[pP]_TSEGC"Ua<=60DonE-E*:-CsYKX5\nG`%AIn>DmkHFQ4;e#S!6Q4rT)/cKA\uj3^;1\6>1IBKCmq/OQdZ7kN2A-g+bm#/9Vs>APq0)GjrDXc30#sE;?!Y1,Ag@cY"\bn8EI3+TH2IET>^O#O:EH"eCY[jdO$'/VJK34a>>D=KDs'@tATAta=KA+nE]`n;U)]cSdt*dU/+Dm!ftkBFN0R,sa1>m^pgqDIcYG$$LFldk(FdL_T:cr6miH-a&K1iZ*QCa.ANg[OPq5\sfQYe/Dm)B4h:u7apucRZ_Y9H94#"8q8m_F+G8J"96*)\:t^$>ejb*qjL@l6jhH3Mj8WU([\j/PD!50>?]JbPK!#MAg`5Kohk&e@:SNXMBbb6#-$^YG=Db<,r1FlGC)*;!-c_CGQ)\Z^eHJ[RQ^'U(Mj+c7QG:]AQ97;%YV@*rJiHQ#m/3&d/"\_7"bV`i7^X4`/S<=!^th/U0%q:=L'K/(Whc`)!-DAfpKVZ+.0'6euCe)):&CAnQd6`=#OB-($g<8PTl)baB4!!LkbL]>a0d7^LU+,e224W1XPcNaYUp754J4NQr4t][?Tej5N-pDcI*oH.1mVDn8]S2OP\**S8$qIlMG7ohG[?:to'W.C];OA/-iT4?6"O2Gd!Lg2GCrY-.n9khMoM'Vh4eIIVFS)s,bOe"4EF=FY=`rb2^ZdRb>iC1Y<65,rY9[Ck@;(e,03Qen\4#Sh`)B!1b3a4FF"Y]@%a9jj6fi: endstream endobj 449 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 448 0 R >> endobj 450 0 obj << /Length 1048 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!#[?#S1G'RfGRaC@;_kH?l8GhULkL-VhW`X>5VCY]NbOtFeqq"M;CLRlA#P>t/P06VF*\]<;La3I-#42!u-5nH:/R.m8[kTL22+*%p*l;,DS5b8YE45]npiH:O1Ko?8^>6[#8rRL7Gi-]a#Ns`oZ@1!8Ar>L=pg]B<(j&NV1ad8R6RqI\sP&Mu$V`6e;H'AuR8Ml_e*f_kn\"A6ljYH$_AeN0m+9Sc6[pu@+Z#o-A@IGBo!YJKE>`S@d[+P^XS4bd`LZ>\W=e)V`knS.)5/u=s#$AV%jRL8WVWfk%@V0J=lOi'K6I_8A."S(($'3ZC/1#,f0P.Z18cQ\QG^DRl?%2YH=f_&fNN#t5CM!\d#_nG5-\HVi[%+>T-%P&Ue,g8b"^rF[(O=C9lbfi!BZt"PY+i/fWt4QDW4'BAab,Dg]i7+XZbnuc6ChfIM`k@a*7c749b=SpWh+-:&+Q>W.`"/-CrXMKpkK>P)74PSUeC#IN:YZblrh7WEOW)!Dmu2_Bb\aVMCghje4)/GBcgc_KY)c^2P*Ngjl*S#WO<)VCM/4SCmFcJn>i/TkNkk*h+p%*"!)2:D[dCO=mH1lGKnh^R7OP;+rF>.Z.=N,dGAorTr=W+=c,,Vdo-h+c=q22J#%&pphclY_k'*s:M)PH8pF'4)kAc/F.R9[+nW^U;r3tL[i;+Ps^Dn&:eluut#@DI/TX.Kq#8sZT6h5".)ZYiYHqV%d'M5fq&^\mr+6Z*PThs endstream endobj 451 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 450 0 R >> endobj 452 0 obj << /Length 1205 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK9iKe#&A@7.pt!fc_Qm_*C/6Mc;`_8f+nSYn*@4R=9rta0N*rPY[$//m;iZp1^qg-_L#m7q^IsY_uba5OQ&,>mEHoqI'VMVC!2T&.Y60KCc-jIhj0C%o@u=1om<#`lSS]:Eke:?n1-m+ue(o1nDLs-E17$AE_S`pPM0PF_cl6bi`^<=Y6A<'`9-=l`8n,p!#q_Ne08VGnB4g[Xc1H2GAqIORI;3o6?Wm8Si"1'BO.+1!L@#B9Z2N'ufH'j.X[.QlDN7,Egceb`/#!rlQCg,8`4CNcDQ9[W2/G3c`,!&]km>BDs&1ej*d(BSKHJJNkA5*m8pjOX$Z3Sb>.+jY^7Qh%-ID6Pj66NDf#"4'.u:5&aI+j#b!$[0nTX>5WcZ!8Qe9"#'RgJWJ+OndY3'@L])gl-*\!J(2TaeL__s>Z`N!V\fTI\r_p";qDj>#71IM)QTr*D#?DM>>&nH?W@b!n+BF/IXY@r_-)%&&'Ys"1HhSg=i6r\7;Q0R(kmDV&N#j-Tc%e)MJ`s=XQ`28*la$$GUbMBbkCBtdlB*j[5\$-$.Rr)'s7p10MJcCpPH#@4L-<%L2O]hR7P;L<4aZLdj@MVbUdR2K?jDD`qBod>0T#Y4-R)\fSt7aYJKq^;@)fQ>"Wc?Qu4D3fk/qj[`;R.@cIPOZ`u*f`(R:o#'iVgD7t,#7b`+N#7-N)U#/>H4i1#\CneVP(b\JYs3tQ)p$;SCUrPGO$[:34odk#J]NL<#l4Fc`mWr./!>+^ua-[LToM'X:dKXs:qn*oN7C_fAXfd%EWF>/D4Q"M?"8-)1s2oqAKbEK\^AX'FcOG>!Nb']j(Ss9FWWKIAT.I^NI3g?]4hq9d+/i!H%K~> endstream endobj 453 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 452 0 R >> endobj 454 0 obj << /Length 1295 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4h/f>L&:aF]_:pt+M%1\cO7oR;,ZAoif-YM6dW@OU,@]@0Hij3!rq-F?U]lYYpYL(Yh;JZM/)A%sp8A>/(2oOgff2ITr,1rlE&k/g^P\_Y`.nrs3Gq(h&4EXDEqdp8j81hdUCG(_8Os3(8UjFacV\-M2XgrpXn$\@TGiq=*]G(Z&0U2_N;6V3N.jutKX=6\p9/_PpsqiBV\uM'BS_J)[$?5EU9$Y42Z"f0@\#P>=%*r`J%!N!;!oGqB0H_5[=icA3LS_?mGD'SIiU#pTO8XZm$N)oAJK**=##PE+r<\jUD2d'@I?h?j.G<;+Tk$5H?FPdi$n)_beBSL/\!,hgJO0a1^lq^@JROc65n+'XR6(mVa-f5HMW0rt-8rSORSd5934_[K"iInS7_;0/pP6[Jr(@&7rcX-hZB$g4(]SrRZoZU/QupT42"JHa$,EX9MKOAqTKu4.Y_"H^"Qtk:B>]'R9ioH#>M>E[4\3aL>/M!7QA$G8E3:-^DZ?HO+@im[E7s0..oTq+f#4.S"Zf8$$=;b^n&5X"#nuXiR%[@4'7*30Rh;pcgbP6@:Y'P(XaXOVscb#\%?3>h1P3@V/%X]t%*4C'_5L4GXSF3+_ACr4T;C!I/Z9Wf0$aN1EicOPXj>!b,V#>3onKHom>Ud3'to?rBr/RFbqg72%umhtmGp%Hs,9(e*s7W[Btr5s0ebB,Kpdb4%Nn-[q#;!>-.05mh7kJs`5WRJG2;)%(^3/poV.PC_nYlKcK`jn_`O9l;%;I_T4fr"5GWEsSn:-cVF`\0sb4k]uGX6Ln(_ETFEqoAp5p6P4lVNb4L^6*VJV-0c"r2*9OaBoGZr2FMS6n?fj-t.@.f9?D8AB$R3&?&kZK-Ni@5L!/iI$]$Tl5d[M>#2,3=eGH#@@?jfG40U)M*X@ap2OO^c_c-=`eG%3:&?mW?p7uPF["'S:T"=l!3tpL/6>7.GjE3g4RK(R=am!eRUHlUn\@)q24Z],aq&D0Qn7['(>].8df*r1SEo>sgM,:0`rN3N;Z^j!PpC]j,pq\\.L":L^f\1^&~> endstream endobj 455 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 454 0 R >> endobj 456 0 obj << /Length 965 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHJ?#S1G'RfGRn7*hsM8/$eSsZmA+cs,bnA5`W>IUZsOtFe1fWW>854#(OS#d7fM]L\rI!Y6E2`ZjFn'2)%!=V6+RKR"]5p4N=";!1-EeGT++MIqBVGHGgGliGHpp1/Je=p+LlQbtU?]"VXaSAlE5d>sZ..#o1VOt#p^0SrpB4&B&4TTK=TS-"2DGEC&4Dab@UGrr)P+$$G.9WTS1LQtp.d^+AZ^Y--)jW&Bk5I*MFZD@6ZVDL#>DF@TjPkBc[APZGXhK.MaZEM$/:VRO)smPY;'m]e(?eQ?T%r7[p*_tB$^n,^o=mn$_fZ_j*icY&igJ^YUk"n.!#`il=A>qFVm-nlKK`cUL5;98;dN6BUPA>Y@"!56ke#U$<=!(:i\9Y>j(#6tV(AFO3%UjZ@TBp5Yn"H@2i006^:qVgm6SEEH!Uk'R5FRZ*#Fm",o;aYeI^V*+rMM":Vlm>&D_DFe0'o?%p?:kILp0^"9i\/dFAW]&sfFo3aGo]1=Wsa[,CHMN9MGdUT#bC5dEM[D5k4f;1I\]Ej^eCcC[8[5dZ9QHq=GR,bGJIt;_deE;&_QqM;8nBJT./sI^]OWZ[#uLEuV_))YF(1R:!LE[N?N~> endstream endobj 457 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 456 0 R >> endobj 458 0 obj << /Length 1000 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU3a_oie&A@rkFL6s\&NMA&;3?f3M6C%f:cAZ,+&gW#8]90(6Bpk2$?B`iP8;g&pE8La!K$mq#$!SYW*]M.X[m#!=U);V&]dQ$c]7*k>8njIbr4hZ-LA'a0`Gh'9/f]N(p)Z!S&JkH3kp8C44+hND;fSEa1!inR']O7__:bn&(c#LQf!7>*sH:S=I9M(hja<;mIcKaGI3s#5&*#u5Jl\\,QbK!;hQNo,!]`/_o+*KeCMIUm.+,CNQdUNP<4>W)J;X-X@+Zrq8),HglIU7Q)ECS\l3V0U8[DgS"^L4Sn)o)RsdTW)%Rs\ba&"lBIna)1jb))e&2SG9s"3D(&29YP]bc(B1j]gLEId),,M;AOEd_R"'GH'J6b3QC6U2igm$03]3IDoMf8l0g..gE`BLn4S`Ll/]0klUOWS!?&DASJ.]2%i2-Fh9M,GTkpY'U/.2$/"s&4e5KqB&`NJ(dE=R=MT3+;m,*_ku%XF40cISGb=!kd2u1=$a%\[+2]E56ak2RY2Br6@c$EQcejR@.sD1:LV]cY6ht^3=0+g1$gIt*244fa_qie9U#,t=*K`An+3E$V_\!Fe4Otl18dNF$^V00n.PN+:^k\r8(K2o9'efirr]pC'F)BpH'/Pc-oi/FA7-`D&;1;aWRpnWtG")nh5@d92IK~> endstream endobj 459 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 458 0 R >> endobj 460 0 obj << /Length 1598 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm:H*KAf,t"ij3kIF^"2H-l-fCJ=oL$nJcVa(nFn%n`h]XWFKU5H)^^O!_J1V5dj1Lj%:Cq2cK^I%?3jT$LoSo9!K^/HeUZ2*Qr+D;jkrdG`fC\*i>G:2#hR8=(R7t7r>>Bn)`XW4HZE(AB>(f\]NYG)PfO@Yo!Jd=j0dMCU]W_nV^Lp!C_OR3TBp4EpH,"g%<[j/Q[_"/X"EGG8U:;pl1GpT(*Z;*)kh_!m]Q"CI9;pY7Jl\pfF:>WLZYj1l,UWYqdEBr-jWh0rWn2SgDd]BRr4F:?(QM9RU"NI(_\hM8hJ7r[:?hSIKAD>:%9)hP-LGrE.oarO-GR.AuTRl(%I&a/Tlq<2c:A"RC6&Z:$KY!>*&B]e+AJq'&E-,8<:QH2PSu(Og!tlqdS&[h`5GO&l,J8Z]e).1n*3/f8.V4Z(.M8k'#B_?KA^#I"IJ0Vf1K/C%562/Kf#oj9769WboI_0tseGq?1_@E+,k^Xd@Uq_kGV%Qc6t#cah-T$in^PJrWXoe:DY%4P?pGU,Ca]\c;T*doS_iNT8\D#kn0&`2d)R&gW4H_/5pAOdF2SGQ7ju?j9R'e\:";Y[sD-T-nJK%Q=i7[Va2_XqA^pei:41%k\Ngn54VOPs)he#-%rlT@0f6d#ec=%]EW*[1P&1VQQ>#l9\P*'hL+D9&(O_)O3nSKHohQnXPmS#I3U81O?JIL3d`KG[B!V6gQ-#m&'VXfi6Nj@2W%-SC+]4Th@j]#H"d"Clpr%T(ZtT0eJk9_tqh3h67=m_`PY/ZWPX,_J6qb)-:nU2([:?p?$e<[XYT[[p#]Z\(YZ`"=u+^q;ts=!US:g1gt$,5>$Z!S]/Tt?lZqFN?Q6@g";W2dt<&r)afE_Yjoh+jb(]DC43ZOa53s[=F^I*V=e=NC'q0;0i\^kBrM:NLBH`jfFlk=bgKUN9!?H6&X&(,89hK(4>0k=YH/_S/JW!#],7^Le20kmqCY7QlMq'DW/u8MhXL-n.IDTU-@>>0Yd6)-LV!-kq#34<]t>NM]T*'F4P^.QoS&H:H+=84k2CZu6`'^.@8O'<)qGd$NjCOg<#>A&PB`jE8D/HK?ZJIYB5E%pDP>E]'-kO>G^D.?1:LAs365!j.r$eYcA\g>[#APo&bL5?pTOG[h$INihDI\@[U"^Yf\?+2u8AEnbf/9/Lr/(o703"D\%`~> endstream endobj 461 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 460 0 R >> endobj 462 0 obj << /Length 2370 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatTJ?#SIUn3+P'fSbq:;>"YV*Vtj5m@#UYR`$4#/42_HF=]g,>tN>^YTH)mG7m]YPVa6T_E6TjmuDT^qt18D)IWlhN^E=e4Dc\@a2lFQ#Lkcq>T[Fq&IAdT-&H9e-7pQlm8FZXF7K+q.OniEU\-H#_SQ!8AZ7-"PT8,F@g9O5"gZg%:,Uc=!)&O&I_%OUJqWO7nZ5PRT)eO>b?iq-Y;KPr0[!K$1Y8%?7l%DlAF50d>LM.*^4]-cTJJ?Ps0%=D=nnt$n)p;S4MrRO>\A92tDLm0Uo`,;n8&OmW&*NY5*d=I*_=iRp.?Wt\5EBs)0-Sder_^l(ch!.VaXh+EjYsg$/j]V@pou!f&%JI=ZRC02#P2[f6.=moBCr%`Sn+1igcj&2T,ILAr'Q\##>==>#]fUUXpLpPe&)-8m5!\5:7^#I10D`;.XR`/ImYeZ(ls%JrGPO4A7/ZL++&,[\l1_g&kc9A(L/D)H^<-W2hMfp?2ef"E5c9>ZY.ZOqUX#/o(4#UuIHWc_5h1ajn=:VK'IKjK`u"tb4&J90Rl>L2fqgF0:N$rUH:_h/-GIS)7K=mqg]3`KXX,J)3$Z4@_[q^ldX'O+fn4*[[IC,/ENj?@KQ,D%!J8o2XID0m(tn$BGof^-NcBo%=\iY9fi1+mo&Z$m0$]9ki^qMWHC\-t0$]uA_BLLR9*cc]G$uu$hpfR[E'(r4WI?06Y"HtGGfRs32k#W^=NSOlp'=+u=+,tcR.T3QT2+S<50j3+o)@,&eaHT2bHoO0RQbV`N^HA>S[5==@^mciZ8/^C[]2>DQVm,QhuIEm(<1]6&[o7]1YKhk59nEb@@sNm/^'O[qLKY9XR`aOH"L`i.q)3tZ9Pn2O0qZE$(MWu9oJ+>)Z;u]m\hfabBW`$0b77?iA5;>M0WNF/nJ!rP_<`8HuXRr:M2R>#lNZ]0pQ\EQ9NDcl!6kb#>SU!El`[@/#=$^n)ThN<>+'eP?B[mbItFo,HEm#%[Iu`;(%m$8LBgZfg)==u\8<=O/s5@aeO<+)R=a;fD+e]!LT67jmGIPbJq-t8<4,(nlQ5F+0o(RM-$s`jFq2p&ih\+Dbb`K&3]e6Y%JZ'_7DMtXUif,_3$N:Ni$B=5_jPB7'#GDPSrUg6C]SDNtP?pV;G=Mt5l:\`!a9-OAY4&VK-Go#88\s[IE,.4uV#YLi(mb!Ku-NN5W,3K>\)@$A:p=o&dqBJS-#jm*JVdI_cXhWpIY3+>ppFDW0n`3:;OfA#1b!qVe:9:8k!75Y>Er~> endstream endobj 463 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 462 0 R >> endobj 464 0 obj << /Length 1733 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasa1gJ[&ioK?R?iIM+Y#g7G$:V/\B91ul)$%6MKN,b*#6XjUQ"ZF'lHR2n)NY<:RQsk*tF2'4IVh<1Yd(q>TS`sVA3m.PI>ks-qS4<')G!1LgB=`*^*"dqNS-puA;no8p7$,g-2*49HRq!5fg)F.i)7S)o;*,s);^9?P?2>]>#Or8gV%3H.NRimo8BE!c`kF&?tp7*D_/.UED^k[M;DF\s98e2\`k#Q,i,Ik'$'fHYH_9j'u\aNC%*3T_iT58u:4a2P4*7A3%WZSc`,>8rpLJc%2GHqSJ[BBCVJV_nK^\2b)=Wo-5p'c3r"QZfZ'_)ROabuhCtUYaZ=R+O$)\0h)2JLRYnM`h*]>J1o=e,*R:cDUsL4\%0V^.Le3c.i_lllO[M+V&7lV.?tih[KLSc91PWkWZF*F/_4\>PuJTn0&ZT-WjC-JC*6eBT#-;raRmG_K6)=/[_;;u0/l3h=Q>"Fp:9C%3qu`oU/e,a"5,[ZkpckHE\h4D=Ua^&+/]*;q82ZMN;TWk_+KXi0aoOtmiuT#253gR)$aK%(aIXfNfg0@G.89`LTNkK`\N6jk[/!XD^U@B_kRefF#)rUoZ=7aGW"6oR%YB"UMu`o?EH>4*^NWO#LT:rLWscOrDLaj?TqB)Iq:-a`db#fMI"?B"G_qKEVCrM^k.#k"KXrkhc+Y1+r!cW?,:mq2m[K[SliUJ7Mg@6uDP[(..!rJH76H(.D[g%:[J#t3r5ln6m9(Mnh[nL3ru8\R6Jl5!d8sjP2JrUI[dWL6EQcQaZB_3Adg*+uTTdPZq-c4sY:34PTW-5gj(s*E?-!6rN-RXUZtUTpTii=N(0"9Vo,8ODpHl3MY3G7l1TllILM)M">b+spq]D+qHZ'sJ].6qUH-)c:(C*!"2qH*LE._;:3oH54,fnO;kgY:i9AMoC[]c6i?C\3\Sh,mCQAf@;Z*KePP=9C-H4<'i8&k:0QmVY.q&Fnau;K]Ekl+OHa5kY!AYFj)=;>7H<3_B0knpV>?;C+Z^I0U`c]K!]Ibh32lXYd[M6@geHbQIFRf,GCGHa4cQ<'O%.KLGq4h]/eJQ-,e]!mNlg%B'4,Cik&/~> endstream endobj 465 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 464 0 R >> endobj 466 0 obj << /Length 1252 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0C95iQE&AJ$CkdF(10]GHaZop93K$C"t1l8Q*VHCntmAP0'KTt9cd/Uhe.$J//ZK2jQ!J@1[^3O\m%='ZLSR82o%T+(%kG'_5N,T?n*tAQdHBG*.`Ae]!"eSQ8hjam`4C$($bXsfpjccVao4$[E*eb;Gp?)90p`,7mmU@OH-'?$0U8he`<:IM[$;UD#,pk$7NQTRJic7/-0qOT:.UW5IJ2NN%7=c/hHuq0U(^!@"l46!f.,p3p?A!S-,M#+$(2Rh,6(`!5#9dkKST-tj*9uWM-*$7NZ`(/u2sLSr8n(1t,COcWH[0i8@GD3]?X[c[cY=b3/Yn'KEQ)dm/+64]b9mGR2=DA5KGfRXKAi6W3(a(l%d`3f'd92@KR4]-u:&K\4VC8aFHA[0\N71ZV\qo,g4:G0s)KlC@1jKX"s05]('m1.J7ZF(:))BT1bGNH!.WlSJX%0H;(@hRsmg*9G)0[I*Q9":S3a6:KJ.eDLS&''892$HWSs,YP+cZ;UU-K:22*l!lVd,4ld,H+q"TJLkdT[#Q0,a),,'*'8+ar^f/O/Vm_aOFaD\M!!PO2j-@`P%N[7IM0M3paTho#!B.Tm\JV6j([*dhaR\knH+e2+;M@qgt1C"2o[Z-s+[Z@*jJ'p_HK.XQ4jeOGoh@*9,;:ILlUq%dCBJW%OLm@eDW)8_)lEJ.PG(B%LJb*KG["m,lJ_"9[OISQXtZL/dQBd@hY7roS?=9mip3K:u$JfW*MXZlgF'fh7A'R8>=D28&n5jr.[C`%3QAD-"I3FM7gXMSoOEX>)`V:].tT&Lr_1U+Q+5%X;cC1n68\4L5[rq0h:>=:8%mGH00ji0^q5%JQ@M8]QUYD_Z-5admO=fd:X<0)VoSF*ekm'DmMVkooO/%CjfA+`a_Ep).fWW6OjS)kaM[*!\D'QWdqGj3+l;@16C#gp86ND9etU3A6i%lt?dOT~> endstream endobj 467 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 466 0 R >> endobj 468 0 obj << /Length 1441 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4h/f>L&:aF]_.1nbF@[N]+Eba>O\_*!'sJhcG=n$](1WitkbMrU#A`="@X[=.d39gVPkSXn?:;>MBn$D#(sa%R%AdK`kiA>48T^B>5oacBFiQXOMDl&PWL3\$#N)R88MG.ko*T2!LlRPpp^R@^V/SPgG5J)8X%cTp&Ko)C\9,PfIJ4uV9nS'N8j#,Mdm>(TnHea;X:%9RTu2lIf@:U8PF\.47EPI_4e!`#RuELPC,qAN+)J^hD2)+_fEX`MJ)cWL%Ags_2k]SDU_d-eR7Y4!IHXn=.'.DAT?O56Mf:kQk@K)M\$j!\DcH14QGL7ZWCM]iO.#qR/B&abJ_mo>rl__o9QA!B\)0?leV(f@#d<*1W"7?eRH$'C.do?Zl9Z3#&W-?h^pRq#`i7f"pdntHa>K6(J^j&)3cfgH=b5k;fU`Nb%M`rBp+/e'\,TrYP7E7u]G_lN_L"*)UFqHJ`u]K^@K;t7@kF2#F!-\-)n198ODdlp$U'\Xf^G1+6Fje&o_f_fZf4EX"",QV28$n_B(f]&_Rr^,LY2tl)6k;-7Y%W@GF?66Bc@=d\!8nA\)N#6##`-4H?Hh(DNE>,3<%%AHudR=^7qFGOh5#M(5QCDl-(j??%\5g>dYM*)h=1TBDB1F%MM+LaO&Rk2,(<-JocnVL\"PQYu#sUR!aJ1.EtIKeWBp4;SG:[P>#4UZ3V:&"crAM@g(FM0@C7S&SnKWMWF;@kr?ug'VbQ2Yg%"QF"D;BtPLG\OMq5M;nqo?%`o*`7^>+c/gZs%.hhS^nISncSr=m./36&OZIWJMuN=dAeh?GCVk^6tN8i3&EGHXI0D^`j"`47/9R4F<7,7kS((HP/?iKQP?&\V*n\=.CA%4c/VPO6F\^hY()OPd$8\gB+,N1$^MgU$b`7RQnHiSlr,".3U]@lKWDXlV\5:AX".L`6MuuJc7AYk&=kVbsdTjYge18h*PpVf,LHd8X4H@W]_gnJsmbTQVD\HcU?*:sf5Fn_7D03d:#EL'bk0Ale'9#J*d!*YI^1TFPuW\fY[_If\'5/s$~> endstream endobj 469 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 468 0 R >> endobj 470 0 obj << /Length 1537 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4?#R&-'Y_ns@!Aa&nmZ+C2XOt=qJ)S4=)48mAsju)E=u;e=rYoXhp5\_:L#&^N1>d,\^>Tg]13)_f`^-AB`[,t;T)WctrTPn_;34WcGmG4!fFJGHS5luT;LsL0i5a\W[:<7qoGL3]`f@#=(?LDh)4`/+<2!&MG^g:fr=5\)D7lK"/NPN3VElYu;E\LhM682^`WZ6=_eC1b%7EtbM/jKlb?Njq?lAd@]'G]PO,oEc:)E\1l4`(\[Kq3Sga,]9I?X$R=7a&."3RBO:f"tWt!746?):@=5fPVD(@'R2H0%Rr$,XG4$MiOR`pLn-YqM'su80s@$(E-1e0Cm!&J(G;U5-dm3fSHLN\Zet%WtB\^rScdi=auqXgA#3tK`&Op+V]<_Te('iOZ!&>`T59kIXV+jY;R6lT7gWDL]_X9TSa)!eQ-QqVtLd8Bb0o/MC@,K'pC_3?tO%kl:5!CV;Bn&k,Tsbq;H/8fBh=a3g;iOWJ`7eiKSHe3u9l\EXK5jQd003A#2bH/04[0_tHcf4NHtH4?'6aRV%(]:6C8pEX9'O3d@b(_5?sT3sDq[!VcdqQWM"fak/tn7T"YqV7nQVX1g&H?=Jkn>qXYl?ChZ3@tY/uT-ddA5eJ@F88QM6!4Vmkl=$KS(c+?PlNf3h+N)Fa^lj/DaPLu@8YB=J/D1cMD?inOI;-BghlYqLT(8hcAt@cAW\lC_a?!QBl%OOK)!D65e)2XFr?jl4i>o2B]_<:IcC)P14'E(V++isMC@`5p77S?i-U6T$u,,ra#Y\h_%7J%/d3lLYC&XBb[CLPJo?%Y%p-pNK\M=]eh'B%7ZHVEe.%C]4*sYe`n0\biU.#EU/RY[s=2>/>.qD*+fh`oW2#Rq;XYo`\T41hW70Ar7+`7cSmg^-'LDKP;=.D_N)C`DHB"PG]MN-'HR~> endstream endobj 471 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 470 0 R >> endobj 472 0 obj << /Length 1332 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK99\*g%)2U?kd]C31*T/E;KHS6S*>+E8\K:nBf[-cVUoR!8YP3nr;0Af68WQ&aX#o)!!+/B!r-0:R87/&NBQVQhj^es^@s=tT!*Xr_k^1N9G#8$I-:HL24NI[c9An1?[Mg!o09T,`k?$R`Mqs!I/-`Z<;%T&b#IgJ+*\Df/C0AY^X&c!mdBO^hu3N:[FGd0RVMQ&"f7gj"@c&02tD/lY/7(=m@F-3Q,B;S^-)6o%+I9+J-"+2PJT6stf]M()RK!=Xm2$0^LUM+FpglZ?@0%*uQZ'2"``@kh,r55+a_oa\fNp_oldC'(Q(;q>L;Q'h')S(G_)il*8?l':)q(Mj?+O$*%Q7B0)P-'epV4Y$\SH'P9D1'tO$[=6<,Gi[@1*6*C2BAqnGXLMAJiL,3jSM+AULdD14@[f>"AH+p]W`O:BE>0#Te(qm)(hWL7ggf9L,X-;9?..90?cK565`JJn?Ck/f1j7OmV[`"6hfk_i94N9sPklc-@Ff.,Mq+e,2?bKk-oXGi80Mi@iE,_1Z1DO&0@mjQ<.[gU.FLg?SeM7(Z1cQg<*o5\b)WghLCi?bNULk4a.]8T/-`q\\-(3!m4gg,%d,)DAW/,;<%IWhqr4\s\K=dFS9'?9!G!o7_"DXSYEH+$L#F=G)KA0"DU)a^7*;e%CD/.WM.+h-J5+qcFP#7o2sq)gW#'_5%@-OO:Y:ha,k=_OX!t2fY'D!D2VXOPBA).''KYSEITr[+Rr+''Q`2Xq.G7#fbiU?V3k,4Fto8j&OD?t8Yr?U$A+Ie[=*Kf2i(u4k`ML-P&1?V#LId4EVY~> endstream endobj 473 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 472 0 R >> endobj 474 0 obj << /Length 1007 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!#[gJ6NX&:NH>n09Fu'AjG7I4>l.<)i6kkY%nTPkDm#2?>11g97]$g":)1h..+rDg$0`b`$1^-97S+Ni%H@5l`MB#R<$`Tb*:d>-7t@;A.1YUVWW56j4js["b5M00D3`9>[g@g2Vu@3BfDk*=@L`EHLAV0DInU&lg9)gdq!QD1*.O.IfD/+qdE;Dp)`(Yoji0-jRQ1uo4Tk*3Zifa*3nZ-Nbq/b2?!QmXpHCQl-XA\!g'qWis)8N9c@;W^kgmnG6`k9hR5mUO*Nq?sUfY]8?i2T8k4H)rWpFU/0DD$dT,)h[3$75:jQ0;uL;aIA2LP4"$1mE%udOl/&,6AJETQ)!&[I4I4:$'q@N^b"/7t:0qU^tn#Lm0X8=V$YT&]AHc?70'MMi_H6l5UGh#i06*GP^TmDKQc$mn]!"-q&L`SEl?]AOjk-C/\.9Dp56HWU6*V1i$NA9ln"q>-i7Tc`c]GHPKajS>Xq/[hu,gTDrL%"0hK)!W0tu-4pZ>X0C::Y@#:(U(EI$12^O)aNWTW.jH]7'4r+0CO`A;GjO(!V$EL8_]m7f)L2=m2?rQtN"$d!YP,b!kCLS';P'?XUb6s/D67F@pr_iRQ/u#<+^YIW(&5o6R*25KWO5E\@q,kq=P0&FM3sbLt`(#2RWja&-ZtALR0`;*5;RJX~> endstream endobj 475 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 474 0 R >> endobj 476 0 obj << /Length 1111 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK966RV&AJ$CE-,\i)81:%Vl#YOdn-J1,J>q)%`,Gg>7Z->cVZY$mZmqe^I6D#nj#YGh6`b!Ml6icZ)PE(?gamn<+Di.2Q";3U&E+C`pa58(t)1,gqcHISFA)P3r^K#'%$OC*dECn?rm)9Y^En[r\rQjN_p#Tk/IeD_O57PXKVt"l/`oH#h;R!^12E;LHT5RIg1leLX($,Sk0Yjp\%N/N"i1aQDZ)fc27bZ9X*/"_;1Il^rf'j29(+^;@M6d0HjOp`s'(nl%1,Np!bLVbF=qF[=a`r^dS$PH'-1&p%+Dej;g"ma1"q`.[p8fH/B3KE36JZYhCNat8K_NJ"+eGeVGZRcheCRMTO_W,bP#Ubl[]=-VV[u7I6hVZ]1^)K>%kX[g0J2Tih,VMMI<5Z3g#Cp.5qhD$fb@\*kD2DRrgUIP\P!7W1n:d"-^>8"[rN`$7S'H0a4q'Zu"e[Pej.FVDW=dY6UM&aGA\(2bK endstream endobj 477 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 476 0 R >> endobj 478 0 obj << /Length 1456 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHL>Ar7S'Roe[d%^]=MC;?2mV)\7/40XnM7]+O-kqTF[E,'ea[uBu99Bp6`)+1Th3&Qpnm$Gm+6gtfm,C'JOQUr8U6p5OC5*^hr?DRCrF5-h/rH4=`q_H08@NC"pLhc5S-G?tc851]LHXPmrq>dFro8dQRIf*7r&MAmbasMLXsT#=2fpbRp=NG6S76Y']3G>*Pd68s$mZ4/6`*D7e5&$DUfaM4mV^cR)Zd31q2j,o)cX2tIaZ@jN[$.bS:FHQ:2b&DR3/!3*K\kF=Yp!\b@IqbTI7*R6rl>!)a.']QWt57.`GuQ94;T[6qYU9cVXDN_1jZ.F^HS1dV@80EA)Mp3cjceE/`!ijf7(mAFQt1J7(sQ9FhUr8-*)3"]Mp_01LB=s##!]^bGPGs[\P?cZe=ec9=jWpAR\eDdb7g+%sZT8O-QtZ']"]2*"Jn-*=%Z\4+,t*S;mYen\DgRX,+j7G[.026&>?F9,uJ[NQZ*g@r1h]XO/qpd0[Mc7u1X9Bsmd'Cc^Vj=AL9KW"7Kg,1t"FfP]K5ZqJ;Nk0bP&c7V7:-pJRd2gPRSA/h!_MOM+tH]E/eA2dBjH/9e15*j_G*C7$abhX9)T_q&;t5"L&;LLYjI2*-8aplrQHL]O1Q-&73t'J`;j!gNp4Nb:s\!fWfICa24=&XY5`UKgZ;::^M&1l4[[1a""(YO-tT:Y-MIbFpcee#?W;"HU9_5piNRhBEG&d+JpVtMF9maO?^#H0CW*W-&-E&g,I'"/gn\!5j+OABbmT[M'7;fcB2l#B.uI>/rN+)\X^a#.5DYQNO5EESp<:ofVJd]f`:nn6gtJOXaJ$1"l3lH;2WQkD7C4<'r6U:eM]=:0dKf3YBE+e4@+b^l`?p5CJ#+5B4S_%*qf!h_$_`.H+D@"""@iBKT$EB&*S7`+6+s0j,,f"uIZZQu&%=@XX8QKL+rF[:;SX>m2-as1GheUa4BshB9&M%P^Ed5DlFtMqNak(h9:hK_t`:)st]e.G,;b^BgpU\m[PMX$>MuN]hNie=L'MkrV_6W([~> endstream endobj 479 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 478 0 R >> endobj 480 0 obj << /Length 1242 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D>AqtE'RoMSa;^U*9^F_tGQMT3Tcp\Cirp!7>IT:JdQ-Pos#j-D`2BTH?H,rEno<"OcGdhrm=#l^hHXI?_(Kc!iH4!=ZN55Sq8!Q$"$%7;"Q@]FB$U.7:Uer"QT$kd=5U`^3j/Xp2EH+CFacBhcP":e?s3gKd2k^KRnH]>2l7<'1L:s0L=KBKVHuA.m_E_D0Ct(I\1l;UPK2ML!/Mnmn4+-X0a5rf'l#K"_oG#;nh#T-`Pus>;O7]hIgW./Kct]K'_tsI7UrW^nUqd9gZt@#gUjM[*8sX*r^'^E6A741#m;E[8.N*F'+=%"Y-h&`<-W=KCAkF;@$32Lmm^[,XX%k4m1i]X`:oWGM]o!khq%r@b^V=B12g[&j&B!\5W4UCaoHI;KooNkh-%6JAd"il2`Y$2Z?)Cn\Kt1U_AOO4/;Kd#cP4@,u#l+*lE/:`u13>C7`=TpmLM;Yk#^*2fk@-lL5'L^Ra*L(G/EZC4o1Mp_qpk:9pfMJPqaRd3!;[E17MhtuH7s##!iB_Q[#?V\'uOoWPu;K7QtcRc,nH8LYolHOFo=nnje;i)rQi./\U`Bn_i6.G^40HlpiihAW#G+Iua)T*e<)A(o]2[rBr%d_9+#)"u0VU8V,,;'n+9W*m0OGcShn3+<:"1lfUj3\EH]#Rs[LSFLE'G!9B4J/9[m243X[+0uN..Rm3BVB]-C:9ogjbMT,$Iom!>^P:PMZQNoi`f/0+@`Ac+HI*Ids5.H/?:8H>*Gk1!aL%"8U+1T#CAl56lQH;2lXm#3d5%gb2t~> endstream endobj 481 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 480 0 R >> endobj 482 0 obj << /Length 1303 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHLgMYb*&:O:Skg<_4Wd)pnIG2%W2N)[^8Xt4.Mh83J>E'gePjG2q^Q_-SA"'^b"M4pNORgV`):$GD9'>6Nq_-$3OQUr8GWtVe`;hoir'LsO"8OX,Z&:q]r9/MIrc*:5GBn7NEV7Z0On13p.])*9jEu0kInC]1$e%H#L`-idP"SgAf;^,1$XW+H"fnkX:PM(Wg4J-e?Y1TkE1ss:AhV4'!>%g\j"K,=Hk*eNjD'/DP>B"YaZ:,oP"d$_9AQu(G#WIMk/CMS#H[9R>ieCP-9::f\u5E_RVP,XRJQUg<_T_f??/nj3)2@ger$Ah?gJXAD^I[uRB$KQSbsCU!6"n)IZl\cP>RAHV;d%3X0Or2,/E]T1\\!/1[&qqi9_gTOd)EB1>0HQaq#h.d=M:GCL/\8-E!.50RR)l477rT@FFYC&<60oOcYGV:lY[lU8hHoFp>7iT`p_h-F=N?(Lsq=<=d(5qW;I$J3DT4I;o\]ZAqjI8dW$:C//ZHsPG\"NqS9SgkA,+B=Ir4;;q@OB9]DiHV8>f%G/3aI\SP"Upb^ZX:M?3D36u>;#U:P?qijeUdAFXp;n3djjX(59M4lERa$#cpLX_D?NbI+qQc>@NWnYB?hP$TBk&eE[(P(ED%02=!d0$!/8qLl7c`>&Vm7*]dnW%$tjm'Vs6J+Rn.7#)-X/#-1;c1-7,kd7%+7#GQ4^2ZO.Z$5+co4ZY@IUrXX`>%UpI<.Dm$%Xn^$t'+"-jiJ_c`"af@#$&!QjE:1rJjm5haDXF"c$=]Z]!C5<_`M@R\mL`tuJ]/Mb]"D8pftu%lF[+)F/O"f]&B/OGqp6S)P59//HL)fRCc?sDd3BjRoe^S5nqDnAo]CKFZnW^i&8>qN4O;K/bSX_Ta(E.[Mq#,b7>lRr08eR^_0iE;<2a^djH-*rcN&95"YM*!0\Uu!q#0YSNIGA6L&%9j]&XttWS:]b2lK'(!fch*SH1ub~> endstream endobj 483 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 482 0 R >> endobj 484 0 obj << /Length 1725 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4969,O%)2U?kgj8kdH^\oSsl)61nF$X-IMP8F?5@Ta(f-^92SITn!=Yo&1tqC3kbkBn,WYW&G/u-q",kUI*_JU@_M9$VhOSar9$.jcneTRE;e98[a*cC%AINo)5cf)kKZ:enH[\=4fte#o7So_bUEI>J,B3,mdBr;?[nY/Q\j#q2f7Sfak'D5jlD;HgCeQd`/Qk[11&',*Z&T[]VO#Po:2="8kP.Q-D/3:Jej:^Es5>9YhrcuE,1VfgC;apo-Kd-F1kn9gRj%Ea'c87O3UU2iM]^s>%0"7Lm)DdWI!bdL@V*q5+mi+eB95DkhP[?^iX$%Hd*uF):rq<4$p^'m:.T`euJLa&:6U1,MZ?#b[rqW*;,ki;`DWn.dDH^0H!C%2WYFmWGN8L`0HM+GX%TOMjZU!>1`:n?Q.6Ofo.6FZF\gZg[H)2,%6E.eq;52m/AO-R[.FA/_^1P.oYrR1Dk=uZCkW^HqrVi'YeDVqu)K'PdU6e0&V@]11tiRa6D[1Y%(PZ;:n7tA=L(br[lDLbUPR0#M4$BA#ZGkr/FHPXQ4/,28WU0N=FT@i3'!/Rpe@?=u>.!;u!YZ-\7`f+1,);*JMRlS27J2*9rP^%'KAe[gp3b]$*R87Bdd9F83`7-Z'@T*>&>tKbSQUtJr=k+p+oi(6mfAb>>ZXYAu^1^/Y?4](1ID;.5&n.)>-h\oLJ72__(.o2APeG2uVV[GJGg8gK109n'n7_M-h2p0Gij+G\Ke*)>;sR2&%Zq4V7gSi'/m>LHJ]T/GI5d#FN$]^?2#M%,Cbe@Sg(o:<9d_+Qk8>6\?Dg;W+OAgo5'8]5>%@3H\Ra>7eG8T=12#kXd`d]HTl45K&TsHFY'N(KDcp%kcsso1Rb44+jI@D"3B@F4%jZ`@>uf!tDbAF3"gFig=fP?jXm^]&,X4,g+U^'rT<\RuQOF9LC:sb[rTo"o>olS;A#U&<2toEfkV):WGGB?*6t"#KJq!!6q/?t1>gq>4uR_CTnTR(eP_94WCYLC>7oL8tLki'GDeXHI]7*s%lHOdD5JVDAi43[n+%#e-Eo;P?mEQThI%7kd0VV.Km/.:5URk^?PQP5+-ghDCD``p*DS1&^Jk?%X:0n8Rm7af@Bn>FoLIT(\YKNotTs8;ihmD_Qbc?,I'@nFTXlBElS*tAC%bfa.`B;n2n$#$/?k5~> endstream endobj 485 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 484 0 R >> endobj 486 0 obj << /Length 1451 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`SgMZ%0&:O:SkV3)N>Q[7N9nj7rV8Bl;-1mNU0TgZ!5h;UGu5+hjc"-.P+.nS`b+Jq_Z;gc>rZX'BgFU%UqY[&Hc?q)<7C*1`^0F[_VQAq\Z2fD.@^!8=>4Oins$]j/k?KkpJ!a#ZZS0J'H+H1hHia_!iSEKQ_01$%('k>j&el9KD'jb7b,=8$3("4#m@cFtsQ@F5m!i9[Dm'TL]]9S;%[Gl=aqu]N&#HmW@3.0S+5J"]@G>gM[#@QbGgQe\[iq\RK+B^[ucoVk3BV2bThE-(W4VU\VVNqXV\W0.Nfn"AjKhNs45r/Vj]bRPA,\="BnDJC[**cL6J5pl;kO>bWLJ#Ecm/%>iff;\H^,+`K^0Pdc"3,._5FUS.SsQa_!3:oq%oe2lBq*eIEL7bN=8*Q=t0>u)hT(BiOlon>@1c6bidiS649oUJ0G^<:]fneXWRi78196PV[;t0jFpGOmq9.+hhd?+uP_`1)07k>ee/Bb\Sl6HfKnUUSEXu;=)V%KoI,%/bbQNlo#X_OVJo8V"rOnoP^.3lk]5D^4dj9Xj3@\B;s%6RA\M>.\l\!4GXU\ocl#h)_;+/6dQqir7t^8pfscm@G,LE`B+-3d``;Jqd2&\>"OB?o[7:P90uf`tbQoH*M,*AZQ.\g.G'jfd+&^@Ti[KJ>,6rUoTL4TT(3E6L-$uP_6]1n@cuDTm)"/8_nQG-JG4]$GhJ(&cgMWdn?!BeQm7[1i[9_Our3Tn>h)OJLa<4JS.0J@AN$g8/^h^.22C endstream endobj 487 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 486 0 R >> endobj 488 0 obj << /Length 1348 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHLhf%O5%"?N0iPu^Ihh*<8^oI_.b(nAQTVm]T+7DEg+!,;arqZGfG9-R-Mi61;=?kYR-u8#u%"Yntf@e!DQ,E>mOOrb8o"I9;g1\n]Q-7Q3SEi^nC=B+lZ`ORW*7nU;luU[YB-7Df]oNeH+/*L=oiu8LWmGl@ftO)H)MkDM(*_'jqCf`a,<`mLLY.K]Q\p@F:EW^?R@=c"KO%s7%lnoEqaYCmkj:C@>J27g]H]q1Y".TM.mk_JQ:d?i"^49JirN@^`4qdr*cpNN&r1?rnk_2)Z9/i"5,P:1cFsZ!CClo;JSV&*BrQ\iA_r*TESV&*2IHM#Bl'ru,;.A!6jde3c6H0(in7-^1q4'-f":lS_BO\H*VsuI9!D.V@BjO[)$VXKkV!4j0N4k`IS/eVBF5QYGE\LLX+/Q[>]P]pk``$e61j;!()LYIEhf>$BgAFbl$`&Oj]m1]SmsNNA(h3K#i/583im8g%\t(V"oJK1s29R\l]4Y9h/_6>b$mGPP?Yk?TOG%`:s%;dnNCas86Z2p$oueFU!.U(\=ik+rh#V!X0n0a!d%>IGK/tjQ49_O!M\g5k~> endstream endobj 489 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 488 0 R >> endobj 490 0 obj << /Length 1421 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D>B?Pt'Roe[i6e.d.M@PAqm:($Bfb"o-?8l[G<3#A%LiFl#WLLF?O6iJZ=;j#`\5d!SF7GgX5rTsm-,uVr&V#0CT?B`L%>>c*p+R-KWeZgnBE'D+)W-l5-5UGDpIW<"!rbbL@Rs:Qb%l:&.)K?$Co`P&VSMR"A=$5@iB\P#RSb"KGh_8.UU41;N1A3jq#%7@p2oopBBC$\gGs/_Z[m$VDbdt9qEE>^4jnR/`9bqWOV&r.DEBQLW!-UijLTC#iq]E0>H,'V%og3;J"j@p'cQp#Z2sYUuKoV6H=s-(Z:G*]8CEJ\hQ%[fCL(*n"9"h*c=1?ne7'(_QBs6h9eiiA]^F`o"fW?5P@A'b>:in!4G55J`Q.9[tDN2`N_!_kQ*4Xp>s"hjf;B:a(hR,p*J8VA/TQ[RZZuqL/B5M2p*uPN+m+9%Sj"+\T`Esl&*9NHCL7D;eZBOhVm7VFiL_md#:QQZqYQ*E53M$lmarWMS)hV/()c@I"TK=Dl_E4Q/FW-A0;C167?kl$o,&SO_RBD-OAA2p@/(9KB]oqX_Aeuc5mE=.h_\:+aBl`W[CT!an]H*#bF)CW0XdQdP7E#?pe[tka"t*Ys$FbI+%,0AI%$Mjlq_20C1]UEBMm#ae1QG2+Bb8UFCfsF(`)3KLmnL;(A,Vrm&,f5R-/<>h5=#;;1Y\:30'O)\i"69(fSP$X'O^BT'd>e#\pRm>5+Ubqecb?4Y-726Y\;;)f"+;\3.f22V$BOAVOnnh)\N1,W*aQR[D`-g$G;+qPTJs61Yr8F*gHQ5fI9/%9TBc6B'ds+(.X_0EBbcN7%.8_T0uHWolLCl\"kk"q8/.pg2_GIJseCkV6%-Ifn6i6eq~> endstream endobj 491 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 490 0 R >> endobj 492 0 obj << /Length 1332 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm;968iG&AII3n/-@c"onZfg/FNa;eON:QK@g:G<1fg=fc14+Xqcn?f*.9EgIJO8PR5A/@>fJ;@[=lF/I+mEumg+@IV;X0$;@f$'tnBoZ?phh*u&RaV6)F^HZf=FJb\GQF#/P22lpmn3]&1l1X9-H86@frpAl)kJCl._7SkG6g[-`i3`qiX:1I'WG-1&HmI,9J2hFtp2I_<8hjWfMD)80,n%Z-ipdPueg!/0Mk2h\D54DR'Fa=&XLah3GYKUAl`J^R3(?DB>5G`J!No[+5Kfdd4LRa4e'+hceW>>=UFD&+K0,c*?4\]JdN\]+iR\cW;O>28u57SQsh4=UD.\a_s\!k$-^MFN'(73C.'NJn+Q2@e=qo"UTa@SeM+^ZPp<=cK2ZBPjlg;u3@0PFJfg59X9pV]0VG=S"aEki3j/+0*5B7GG"XL2U+%BohnD,NqU\@U(M:BVo5/)oF6%="i&HH:%FAL1f1Q[bI`H3Ub>dA*:.7uE7rVg]DQ.5M1W@5WZ;Sn_>W$tDiB:%@,."_U)?FA?\`WN[\m'YKJXLqP%jf?6[i/*)uN%K+4']Z\1i2uBY1nC?(Br#S'upoQt;e0-?5PlYZaEtTcjKncL(&skb;Dl+cd$a0Ts[[iDUDS*eP&KF,0!I$]HQtV9^A_e)jm#rsB;?Y#q'f!+4Kf?=Z&n*Ado\'QnR/N)lp9/V(HB4NZ2Qf>PaY?G\nCKJjE_RaIdWtrmap6V'S5P24cpCWpn<3(*J_=^Vi*DrDMp6\o8*0qYK0sXnfie"7kAS+K2SKoX%`S!LpPY&:eoc/c;n.[Hg:hE?gde-!Kk=!(L+@&Cn-s6O#FS<23(Yu]g:)kkL/77YTS endstream endobj 493 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 492 0 R >> endobj 494 0 obj << /Length 1218 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D968iG&AII3n5d)`TYuHn1oIkD9V"bQYq>]JG;>6_>"iVH+mCu^pB;W_Q4PHBP@T%AaaNW,ha0M6/Ui&a4mXEN>9s[7]3eslf72GjUja1iJg0Q`*kZuh2cnTI2n/6VBAS-plE++*\C^)T,%bPST0M,S9!(TmX&f"TM-Qajk]LRS#aETYSr-eIq'G'c=`\4Af!5q.^rh9X5*_*Flsg\8,p^m%W(h)":i&XPe@)*\Edt4.Z^)SRIiP&m?U;iqhM=.o43u&:fEGs&a#*\RB'5>1G?eqd_BW-+E@?4YfT1gbm@%!&cmrX/sfFQ]o_eGhrllDV%].>G,odqni6_f<)Lr;)_FG=2h]+[;d7]B/p2[ibpLt,\.bZQ2(EQ%[%;U:>iRmKJOkr9YB$+)-B<1LO=c_E];ke_Dnj,jXdj"hLLlq+bhFn/hl9kB!rI:+F")=`^GG@M%"q^EB")T8NP#<09<0r@!>-EpKjLJc9e7DNH4*OKGd4KbQ0]S9k@i>^h3pr^0AG&!01hK=nkWFkQKF7E\=Vc;c@C-Uhp96Ne\+NR#S!@P%Hg>1 endstream endobj 495 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 494 0 R >> endobj 496 0 obj << /Length 1108 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHK8Q4@t'Y`a3pf?Sm+j#n6p/DlrL7q6_oMR^jOXNjolsMosnF%l3N[5&nEEG948C)4(n,")soK1+Ve3OX2Va'H3BA>c_'L1Y$S-sb$!V2f\h"c)s?jW=oN$ml16g(r-^C[gZf;mdqSX6]U#Bf":Eu!SYfF,TcXM$/OZLO,J,(3cpBcb4ZeVbj<\MpsW!\XU3D8f3)NP/U-o^ORE]8OX2rX%r@`\F'g^R(tPbLU!\3IFIn5-hqQi5Ae5D=TikuM`1(':UOFhC@8VHXOq?g4c`)O%61RN=H$gTgKk:WTe_!M6g;nQKV=3_Zk:q.aq[0^+bY(r'hqNDdUWM1BQmLl(1^>[Q'@q5'QrZ#NI0%QrOH/H:m\mg%?fM8MlK7m'mJiH\s(Yi$&?L@#6Zmj->5mTM$)Z)-H/KL^^A^gNln9;^+h\u0H0Jq-I9Yo@DS@!(3dSZnoEY\"flaRj'RDIpYG(oFLSK!+$36C3u)9Mj<7Z8PjX)-7"Dd$X6>uiGY/r+D-R@bgYdHXhE<-R.Hh[-LN`8pi^_(fmnKEIGb?IY`HacER4da/JQC\;K4qfA)`,;_/HSP-_"/jVLo0\6`IbVVo,Y:Ei<\\o5@&V%LgM^h)F/jX0^!A?e*#r5,bf![7-`HTZ<,o=pE.@CU_744q3eDmVu#&BRd&AL;cnD2Rp4p!YTk;NSR&,!ARj/o$(8lk$"mtgR\/M=O5#Ca5-Q)0"1A2JXR\]+`7D7r7-=%i,uM8q;#??m>"_,"AjXuiA8bWDQh52W8Wr`g-jg#`"ba-oqhEY7p!+f9!P;eqi1[.)JeBj/a-F*$n8lFY4D2q>h[)&~> endstream endobj 497 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 496 0 R >> endobj 498 0 obj << /Length 1415 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHL968iG&AII3n.r''YlkC&d@BK&R6$O*.nf-'l?"E][*_^Gb_J=FYO@&r/1F,qijRkTYhI-Qh8QjrDc`.kh?=+g9ZpPW'?bWf&As)a@Lu`N4^sm%0igBrpRC:(2Tq8_nV=Aq%q^LeG.ilNO)0]O5BEFcYi*3#E+ES8A$bjQcca;*]DML$LYk9jNL=QRPFKJ!C(1NbgqKE\\5K&>e8h1`Vf2HolkjGb3]F9;V[]'c?$6441Rlo96FG$_b]B@Fkgqf?G"=PllYQ//O%Qg0%+B(1F0c$+!oT4_^cou[*A;\EI'7R,*?u)"Bh4M_5#l5*D[4k77JVbbj9[a.>K3C2l7X7EDf47`PRpThq?8GS2K%[E@'`@A'%4rd&9^p5NG\.S7Mh]rU:qX@&,6bpS43c)j:`DDY,`Q28N,U6"%fQ5fE`EImIjWjG;],dYk(?OR9@!@8`aNaoFd-/./QKI)\9rotpWJ;:g>#UolIjaLFj;;Il`Yc_=0(Im4=rY63OCD5$9n[)-^Q+#sZWO:tce!k$tu9NQr9i:GL[WM.o*jL/R0e=cKS17=8G,G$G5[k"7G!r.=L^.E"?6Y$ogMN$+=0.XK9)b"%K*ANbHQl0m;+7hL']1]3%Z4u`2cPlID-FROl"rgc[")*HZI9Ei>s"lR2B:5!,SI89Q\qsCN,##r4Hp.EE`WC:75/^H2JJ)PhQ"'j,GkG0X![$HJh,qJ14O4F`C3_QkA2"KhhW]*pO5N70u3JA>$4Z_s$\t3n#/bB!-'[&`]t>?Go1CKEQ,n=2k"SMBW),]UGT8(gnR1Y9k^X\]W[+/76DM]gV?85^0YudmoFd(9d"&HP;YOCbjmc6g)5uNU2#VW;<5Y%/\QL@-HVU5#rJ]CB$If-WE?Zk1!f8j>71.6"T]ha2kS`]1Lj1A$L9dP-2q*8cR%&I)hg`O(A:cIu28WTpFIN)6QM4:cDp>KspV;eHmRr!@RMHGgu,!g"Y$[a_DLCWD& endstream endobj 499 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 498 0 R >> endobj 500 0 obj << /Length 1175 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%#968iG&AII3n7JTY^]Xu5d@Qee4]NktW@ar0,af-95o)p(Tn&4[q=b%YO8r][Q:DbXEqe;n(*B1[bLu8GNaN:TBXs_RdIRc9Z229BQC1Y5E<9Mh/U,U/l[@#-+rP=U7IQEa"t7'cfp5fUc%Qm7dn8%fc=^UQHbn=8V?0kbgp#@%4"<1:A`Y#8Y+7h23>,Q.-r.RXk3YH22l@=T.b/;"fVqQY7E`HYAn32-S"YbV?/Me(eW_;dnfN$h1&qOHDE7UN2`^+dB/g,U6@'ZQQ(ZNNp+ZBJF:;TW5%H&r-EtZ<@#'jKI+?LFeomb&\+euD%:ep"U4%'DRGuuis0Yh/kgSL9_thl%p%m"R_rpjUj5%b*5,l6:@_ESuYO?oZEH%RCN>!Ou)OrtJ[rs:DMd<`J[GX+sRE=`JEO$!Fj*[TL_.V3$EqHpJ6ba.SL5o@?gT2Y0,pQs*+S:ODW@-+-3`r_-G>L/4B&0%%Q9Q`R^^+?clE_Q0(JZA`j#''G:cKc#uDV^M/%TD;))'B5*Z;RBR`Dj-(0WlHQT(r%DA41.T4koC-up:C<^"Dgo,I79>o0JBiTPi="NPQD*16k$+?1,KHEm*!e(0u_@Va`lmgF7=+Iqn6UfWhc0-a`l@0O*5=hh7m:E]$;B/4Q?/8U'DsErq)Yd>@='[%h"dK>?>ZpaHhD"n;21S%?_gTlBdZZItX?#i'?(IWnP[tt)QZ+RoMX8^oUjIZdM;9,bNHPoZ5iIf67jm+.]P(.a,#(@SHgAYgj5&_da5pI`bn[3R]L"?)[#;3Pl-jOse!.:&usPC6=*FpYqd+ordGBsQR./Qe)(U%IiMY\F:Un,Q)WYUi6HXkJ^tA3qlfI%`nI*SDp*b8uZZ.mYD@09kNqg"qs0mk]ZD?E#L2&0*j%10baeSFV)I]D9Fl9U%2HAO6%s&^og]D~> endstream endobj 501 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 500 0 R >> endobj 502 0 obj << /Length 1662 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatUtgMZ%0&;KZF'Y6tg<\'ct(UR4IT-WJ!:s7>$Ssp/2]4.o[93N!p=`L:f"3N)_pAcC<6GmBnO(V0gsiIt\G9Wl[J8]@@<]HWrL#aPifX%:V;>k6r?S+Uk:`!QXm_9M"9$7dnT[%PpF\VT[bfO#\#Dku.6[LnXUQm(dR#@EMlhfnXQ62"GT]eU/Z9.Cki5JZf[Q2q%uT`9V?]`gM5(SspdF2,M(Q,EWcfh?4R='A'SAHe\o>udJpE5)bPZAH^kA87Wc7/@L/A7rh[PqMDUDq=^oZ\sriA>+9/G/$Nng,Iga+&kQc_]hn_n<;/h@YCDF+m;a'HBHL27Q@,9+;=kiW'p7D)-*=89iU\_g%9m:#fE#]l_FGDPu.2'CRW7>?jG5SYEZo?#,0s]UrMMcgnLb#cNbJ6^49L[J?JMSbRS9S&8Znl:G9>a+/]B$mp;V/gt06*Kq/EZ/YQZEH67<6!`QBCQg6\>=*gXna'Dhd9fV<\`\Dnss/2CI.75S'\i=m4S'7E=/kJUT*s`>[&Et1mU2_h&(`X$X:uh+q7%2k"L\h0pbH0sb**eti7OXrI\m^mC30k0#/Z[8&/57+mm&j!=%(Cs"3P[H]W6F=oF9*3B"P7qhFA[Y6#J*cb/#:R+FG@:>^V+.Ap_3S_-,9!2c/\(,m*\[9&kY%?IQl2sM$l3g^=.e@@/[FDd6r>dJfEZ1TBU+Of9?jKAs$W^S^6RRX^7hS2P+&m[qeg[>$FB8<]T;[O-aD2l[$88em#sM*RqSi(`E'cV2QOjre/fa![^40*,N-h/ZL67j"2L2l_@^9:!#kq'qT9sJS\J^)=HKN`:\a.n3) endstream endobj 503 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 502 0 R /Annots 504 0 R >> endobj 504 0 obj [ ] endobj 505 0 obj << /Length 1658 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=lgMYb8&;KZP'YI+i7cBr*5d(6r5gLh82+9f&.u?.&>?.$tm?.dm#Ygo#(F^qeoV'pkfm^]=YB$hiXXd5GXs"<>Mmg.nWBQIk:SHoA/0\YN#P.+@JLfpg5/87k6W\em_XYBlp[=h9bL,j8,t9(@S1=M)TO6iH'l$DYN"p]pY"3W!@Bs?mpt/L62mul/pCeA6_9"LB8$YN$'O/E%nF4l>C,$#"0*b"G?Z,$3oe=J[0;;\2V=&Xa>FZS0]U^c'59$RLUS$4t4ZdWp)&o&?@2?V$r`RBO_E.sZEOPSFR$p<+DWRn9:k?i'8j;>tAYrHG'8VVs_T[mVqk!BY-Q,*Ri@(hmi"[X!Zb$lr.>Pqe/P/[U/]%XEpE9JqlV!j5oXTGh;a=W](tk"JGhieB7^=sNHK\*)=SQUd=Xd(.C7&rWD=:IfJ2qm@ld4<]))4RhuOE:-SqLF,5!_d_hJ3HC"rd%Aqc;]o0JWD]3l>)Cc`HoXJ'bK`O5(l7'e*'a;V/bNAahhE47%bDY3O:GJ3^()E?G-FYH/)b6fa]6haZY3\4:/(dFHXiWq=jf/>gFGDRJ,(MDXL+_/>dBfiTuXt:>'G]k-kGT?Q/ncq<^G1]l[@Is,@2s3/fFNFc&@5+P/(q$'1HdgLSs9-]%QGg">>anZkP8gg7mU]R"N:7Ae^O@_.=gFF%rRmV.R*me>MMD%R9maD2r8^h@&.ZGqaRF9#7&i!d/Za6TSHbEV5q8l?GK)a0EUh3#ZDLks!RBM51_@L6kS>\tnrYXi?QK551-)X/buNi4^mP"8f0]qIlW1=F]t\bQQ485ZW?(/Q#Cl3p^0>7WT'T*=o4rS=BpL\T&^8&97@>`8kTKV+b`G'C^WICPnd335dd!@'Ham%uH/?sl/Gj+1iUYD-QF_aXmAi_upNc%5ir5jOD(~> endstream endobj 506 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 505 0 R /Annots 507 0 R >> endobj 507 0 obj [ ] endobj 508 0 obj << /Length 1693 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasb]9lK&M&;KZQ'gD$eXWr:OdWL*nd,#,>]bEoOaL&'=(:=cd-iN_7D)ie1,?)ZpZd:M(L+d3%Xh63"7@7Ab(q]T`Hh>^&52ajgXVtFD(\f^ql[-]s22Q!RXDL_MorgAWoqF-RNlbD'+hZ02Y5bCiCr8<#-NLf:DPsT,f46:u,pE++Im9&"EiG$MpE-E8oR!8N>FO81P8%A)"M-=ks'##/N%`^$c&pq)!q%S6Cn,&#KY60a6Z=]"I(N?OfZpp:I>FXDd#_s`*C%jq&5ZjT5G9&aGYS9K6V="N('pi&]47@n$"UiniC`,SLKrf6@c?,S3D/lOddYn%Q=U\\do2TX:2('_]!&+n7g.nC@WZ%R@c7WKA?-6;PM4'_1pNQF!Z86ta"3tsSqnA9@jWQaRV@+.Sd(?meRbX/D=sW+;Zb>FUuMi?5W@U(;2nM?"%6:in^lWs/Ip5<^paWGhf\%16$pWc9-g=XW@9@RhU6aMor\WS$XW(3P"rkF/u'[.!8ctlrbs^6(IjGQT4E>dh1p5V3U#b8D!4eq[/eJf$dIP_6e+"(-2d&pVjuUN%)4k[1QshbddRDO%N/pSN:\.g@ge:L2kg&T;kW`Es:G-TCC]9=3+WB]u-:_t2Z!L)(+6@ctPR6XA32PQ.A$$n]t:8tXqNJI=WjV(Jf=>4'P.^6-"\kEE&c:u5&#YYbl\Mii86$U4uP*IA(P>H1nViF=JfTo7Wk[I<\],U[fQ1JLkW,N]!`/6-8T(Ef;BRQ@K0aKnC(WLC^eCLg.^(&n?Vo1"ObB.2XY=jo=SP,3PM1_oEm+qo@n7'BSS"/XD\P7Ni?eD#a&A1jp$AIFT1BP2`Y\2t;jQadu`LZt#u7FGdKkOuoA>JbQ&m=]l]W+_#7\hqa$Na(eCFG(+jP-o9$6nc"J"T endstream endobj 509 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 508 0 R /Annots 510 0 R >> endobj 510 0 obj [ ] endobj 511 0 obj << /Length 341 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasJN9hWDY&;KZL'm&.6NL=>JF^7hjRh-,C%uZp[`SHDg62gPT+.?5s8hZl`T4]L=C]_5Y;Ll[l6GWfk)1kC$Jg;taGfQXK#Y0,Ah6#WJ_G)42TLc\OpeG&HV4Hc*Np6;JI9FIue6R)pa!+P[YrU"BPT5*mLS_O+OhYq>n'%`#9::X(kTlg4#27\+XikHDV=[?:n4u,=V1pcS0nGq>6d.sIDVKDpg>NlK8XhYK1XCMZ&C"u7g579\4R$?jTN+nt,U)q6>$381(_Fg[,L-[g`Z>1>!P?2'6*kjgoq^&[p"Pct~> endstream endobj 512 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 511 0 R /Annots 513 0 R >> endobj 513 0 obj [ ] endobj 516 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\62\0\56\0\62\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\40\0\115\0\141\0\156\0\165\0\141\0\154) /Parent 514 0 R /Next 518 0 R /A 515 0 R >> endobj 518 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\157\0\146\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164\0\163) /Parent 514 0 R /Prev 516 0 R /Next 519 0 R /A 517 0 R >> endobj 519 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 514 0 R /Prev 518 0 R /Next 520 0 R /A 15 0 R >> endobj 520 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\62\0\56\0\240\0\124\0\150\0\145\0\40\0\154\0\141\0\156\0\147\0\165\0\141\0\147\0\145) /Parent 514 0 R /First 521 0 R /Last 656 0 R /Prev 519 0 R /Next 683 0 R /Count -128 /A 17 0 R >> endobj 521 0 obj << /Title (\376\377\0\114\0\145\0\170\0\151\0\143\0\141\0\154\0\40\0\163\0\164\0\162\0\165\0\143\0\164\0\165\0\162\0\145) /Parent 520 0 R /First 522 0 R /Last 527 0 R /Next 528 0 R /Count -6 /A 19 0 R >> endobj 522 0 obj << /Title (\376\377\0\111\0\144\0\145\0\156\0\164\0\151\0\146\0\151\0\145\0\162\0\163) /Parent 521 0 R /Next 523 0 R /A 21 0 R >> endobj 523 0 obj << /Title (\376\377\0\113\0\145\0\171\0\167\0\157\0\162\0\144\0\163) /Parent 521 0 R /Prev 522 0 R /Next 524 0 R /A 23 0 R >> endobj 524 0 obj << /Title (\376\377\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163) /Parent 521 0 R /Prev 523 0 R /Next 525 0 R /A 25 0 R >> endobj 525 0 obj << /Title (\376\377\0\117\0\164\0\150\0\145\0\162\0\40\0\164\0\157\0\153\0\145\0\156\0\163) /Parent 521 0 R /Prev 524 0 R /Next 526 0 R /A 27 0 R >> endobj 526 0 obj << /Title (\376\377\0\114\0\151\0\164\0\145\0\162\0\141\0\154\0\163) /Parent 521 0 R /Prev 525 0 R /Next 527 0 R /A 29 0 R >> endobj 527 0 obj << /Title (\376\377\0\103\0\157\0\155\0\155\0\145\0\156\0\164\0\163) /Parent 521 0 R /Prev 526 0 R /A 31 0 R >> endobj 528 0 obj << /Title (\376\377\0\126\0\141\0\154\0\165\0\145\0\163\0\40\0\141\0\156\0\144\0\40\0\104\0\141\0\164\0\141\0\40\0\164\0\171\0\160\0\145\0\163) /Parent 520 0 R /First 529 0 R /Last 542 0 R /Prev 521 0 R /Next 543 0 R /Count -14 /A 33 0 R >> endobj 529 0 obj << /Title (\376\377\0\111\0\156\0\164\0\145\0\147\0\145\0\162) /Parent 528 0 R /Next 530 0 R /A 35 0 R >> endobj 530 0 obj << /Title (\376\377\0\106\0\154\0\157\0\141\0\164) /Parent 528 0 R /Prev 529 0 R /Next 531 0 R /A 37 0 R >> endobj 531 0 obj << /Title (\376\377\0\123\0\164\0\162\0\151\0\156\0\147) /Parent 528 0 R /Prev 530 0 R /Next 532 0 R /A 39 0 R >> endobj 532 0 obj << /Title (\376\377\0\116\0\165\0\154\0\154) /Parent 528 0 R /Prev 531 0 R /Next 533 0 R /A 41 0 R >> endobj 533 0 obj << /Title (\376\377\0\102\0\157\0\157\0\154) /Parent 528 0 R /Prev 532 0 R /Next 534 0 R /A 43 0 R >> endobj 534 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145) /Parent 528 0 R /Prev 533 0 R /Next 535 0 R /A 45 0 R >> endobj 535 0 obj << /Title (\376\377\0\101\0\162\0\162\0\141\0\171) /Parent 528 0 R /Prev 534 0 R /Next 536 0 R /A 47 0 R >> endobj 536 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156) /Parent 528 0 R /Prev 535 0 R /Next 537 0 R /A 49 0 R >> endobj 537 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163) /Parent 528 0 R /Prev 536 0 R /Next 538 0 R /A 51 0 R >> endobj 538 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\151\0\156\0\163\0\164\0\141\0\156\0\143\0\145) /Parent 528 0 R /Prev 537 0 R /Next 539 0 R /A 53 0 R >> endobj 539 0 obj << /Title (\376\377\0\107\0\145\0\156\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 528 0 R /Prev 538 0 R /Next 540 0 R /A 55 0 R >> endobj 540 0 obj << /Title (\376\377\0\125\0\163\0\145\0\162\0\144\0\141\0\164\0\141) /Parent 528 0 R /Prev 539 0 R /Next 541 0 R /A 57 0 R >> endobj 541 0 obj << /Title (\376\377\0\124\0\150\0\162\0\145\0\141\0\144) /Parent 528 0 R /Prev 540 0 R /Next 542 0 R /A 59 0 R >> endobj 542 0 obj << /Title (\376\377\0\127\0\145\0\141\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163) /Parent 528 0 R /Prev 541 0 R /A 61 0 R >> endobj 543 0 obj << /Title (\376\377\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\40\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 520 0 R /First 544 0 R /Last 544 0 R /Prev 528 0 R /Next 545 0 R /Count -1 /A 63 0 R >> endobj 544 0 obj << /Title (\376\377\0\126\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 543 0 R /A 65 0 R >> endobj 545 0 obj << /Title (\376\377\0\123\0\164\0\141\0\164\0\145\0\155\0\145\0\156\0\164\0\163) /Parent 520 0 R /First 546 0 R /Last 574 0 R /Prev 543 0 R /Next 575 0 R /Count -22 /A 67 0 R >> endobj 546 0 obj << /Title (\376\377\0\102\0\154\0\157\0\143\0\153) /Parent 545 0 R /Next 547 0 R /A 69 0 R >> endobj 547 0 obj << /Title (\376\377\0\103\0\157\0\156\0\164\0\162\0\157\0\154\0\40\0\106\0\154\0\157\0\167\0\40\0\123\0\164\0\141\0\164\0\145\0\155\0\145\0\156\0\164\0\163) /Parent 545 0 R /First 549 0 R /Last 557 0 R /Prev 546 0 R /Next 558 0 R /Count -5 /A 71 0 R >> endobj 549 0 obj << /Title (\376\377\0\164\0\162\0\165\0\145\0\40\0\141\0\156\0\144\0\40\0\146\0\141\0\154\0\163\0\145) /Parent 547 0 R /Next 551 0 R /A 548 0 R >> endobj 551 0 obj << /Title (\376\377\0\151\0\146\0\57\0\145\0\154\0\163\0\145) /Parent 547 0 R /Prev 549 0 R /Next 553 0 R /A 550 0 R >> endobj 553 0 obj << /Title (\376\377\0\167\0\150\0\151\0\154\0\145) /Parent 547 0 R /Prev 551 0 R /Next 555 0 R /A 552 0 R >> endobj 555 0 obj << /Title (\376\377\0\144\0\157\0\57\0\167\0\150\0\151\0\154\0\145) /Parent 547 0 R /Prev 553 0 R /Next 557 0 R /A 554 0 R >> endobj 557 0 obj << /Title (\376\377\0\163\0\167\0\151\0\164\0\143\0\150) /Parent 547 0 R /Prev 555 0 R /A 556 0 R >> endobj 558 0 obj << /Title (\376\377\0\114\0\157\0\157\0\160\0\163) /Parent 545 0 R /First 560 0 R /Last 562 0 R /Prev 547 0 R /Next 563 0 R /Count -2 /A 73 0 R >> endobj 560 0 obj << /Title (\376\377\0\146\0\157\0\162) /Parent 558 0 R /Next 562 0 R /A 559 0 R >> endobj 562 0 obj << /Title (\376\377\0\146\0\157\0\162\0\145\0\141\0\143\0\150) /Parent 558 0 R /Prev 560 0 R /A 561 0 R >> endobj 563 0 obj << /Title (\376\377\0\142\0\162\0\145\0\141\0\153) /Parent 545 0 R /Prev 558 0 R /Next 564 0 R /A 75 0 R >> endobj 564 0 obj << /Title (\376\377\0\143\0\157\0\156\0\164\0\151\0\156\0\165\0\145) /Parent 545 0 R /Prev 563 0 R /Next 565 0 R /A 77 0 R >> endobj 565 0 obj << /Title (\376\377\0\162\0\145\0\164\0\165\0\162\0\156) /Parent 545 0 R /Prev 564 0 R /Next 566 0 R /A 79 0 R >> endobj 566 0 obj << /Title (\376\377\0\171\0\151\0\145\0\154\0\144) /Parent 545 0 R /Prev 565 0 R /Next 567 0 R /A 81 0 R >> endobj 567 0 obj << /Title (\376\377\0\114\0\157\0\143\0\141\0\154\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 545 0 R /Prev 566 0 R /Next 568 0 R /A 83 0 R >> endobj 568 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 545 0 R /Prev 567 0 R /Next 569 0 R /A 85 0 R >> endobj 569 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 545 0 R /Prev 568 0 R /Next 570 0 R /A 87 0 R >> endobj 570 0 obj << /Title (\376\377\0\164\0\162\0\171\0\57\0\143\0\141\0\164\0\143\0\150) /Parent 545 0 R /Prev 569 0 R /Next 571 0 R /A 89 0 R >> endobj 571 0 obj << /Title (\376\377\0\164\0\150\0\162\0\157\0\167) /Parent 545 0 R /Prev 570 0 R /Next 572 0 R /A 91 0 R >> endobj 572 0 obj << /Title (\376\377\0\143\0\157\0\156\0\163\0\164) /Parent 545 0 R /Prev 571 0 R /Next 573 0 R /A 93 0 R >> endobj 573 0 obj << /Title (\376\377\0\145\0\156\0\165\0\155) /Parent 545 0 R /Prev 572 0 R /Next 574 0 R /A 95 0 R >> endobj 574 0 obj << /Title (\376\377\0\145\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\40\0\163\0\164\0\141\0\164\0\145\0\155\0\145\0\156\0\164) /Parent 545 0 R /Prev 573 0 R /A 97 0 R >> endobj 575 0 obj << /Title (\376\377\0\105\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\163) /Parent 520 0 R /First 576 0 R /Last 601 0 R /Prev 545 0 R /Next 602 0 R /Count -16 /A 99 0 R >> endobj 576 0 obj << /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\155\0\145\0\156\0\164\0\50\0\75\0\51\0\40\0\46\0\40\0\156\0\145\0\167\0\40\0\163\0\154\0\157\0\164\0\50\0\74\0\55\0\51) /Parent 575 0 R /Next 577 0 R /A 101 0 R >> endobj 577 0 obj << /Title (\376\377\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163) /Parent 575 0 R /First 579 0 R /Last 597 0 R /Prev 576 0 R /Next 598 0 R /Count -10 /A 103 0 R >> endobj 579 0 obj << /Title (\376\377\0\77\0\72\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 577 0 R /Next 581 0 R /A 578 0 R >> endobj 581 0 obj << /Title (\376\377\0\101\0\162\0\151\0\164\0\150\0\155\0\145\0\164\0\151\0\143) /Parent 577 0 R /Prev 579 0 R /Next 583 0 R /A 580 0 R >> endobj 583 0 obj << /Title (\376\377\0\122\0\145\0\154\0\141\0\164\0\151\0\157\0\156\0\141\0\154) /Parent 577 0 R /Prev 581 0 R /Next 585 0 R /A 582 0 R >> endobj 585 0 obj << /Title (\376\377\0\114\0\157\0\147\0\151\0\143\0\141\0\154) /Parent 577 0 R /Prev 583 0 R /Next 587 0 R /A 584 0 R >> endobj 587 0 obj << /Title (\376\377\0\151\0\156\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 577 0 R /Prev 585 0 R /Next 589 0 R /A 586 0 R >> endobj 589 0 obj << /Title (\376\377\0\151\0\156\0\163\0\164\0\141\0\156\0\143\0\145\0\157\0\146\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 577 0 R /Prev 587 0 R /Next 591 0 R /A 588 0 R >> endobj 591 0 obj << /Title (\376\377\0\164\0\171\0\160\0\145\0\157\0\146\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 577 0 R /Prev 589 0 R /Next 593 0 R /A 590 0 R >> endobj 593 0 obj << /Title (\376\377\0\143\0\157\0\155\0\155\0\141\0\40\0\157\0\160\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 577 0 R /Prev 591 0 R /Next 595 0 R /A 592 0 R >> endobj 595 0 obj << /Title (\376\377\0\102\0\151\0\164\0\167\0\151\0\163\0\145\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163) /Parent 577 0 R /Prev 593 0 R /Next 597 0 R /A 594 0 R >> endobj 597 0 obj << /Title (\376\377\0\117\0\160\0\145\0\162\0\141\0\164\0\157\0\162\0\163\0\40\0\160\0\162\0\145\0\143\0\145\0\144\0\145\0\156\0\143\0\145) /Parent 577 0 R /Prev 595 0 R /A 596 0 R >> endobj 598 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\143\0\157\0\156\0\163\0\164\0\162\0\165\0\143\0\164\0\157\0\162) /Parent 575 0 R /Prev 577 0 R /Next 599 0 R /A 105 0 R >> endobj 599 0 obj << /Title (\376\377\0\144\0\145\0\154\0\145\0\147\0\141\0\164\0\145) /Parent 575 0 R /Prev 598 0 R /Next 600 0 R /A 107 0 R >> endobj 600 0 obj << /Title (\376\377\0\143\0\154\0\157\0\156\0\145) /Parent 575 0 R /Prev 599 0 R /Next 601 0 R /A 109 0 R >> endobj 601 0 obj << /Title (\376\377\0\101\0\162\0\162\0\141\0\171\0\40\0\143\0\157\0\156\0\163\0\164\0\162\0\165\0\143\0\164\0\157\0\162) /Parent 575 0 R /Prev 600 0 R /A 111 0 R >> endobj 602 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\163) /Parent 520 0 R /First 603 0 R /Last 605 0 R /Prev 575 0 R /Next 606 0 R /Count -3 /A 113 0 R >> endobj 603 0 obj << /Title (\376\377\0\103\0\157\0\156\0\163\0\164\0\162\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 602 0 R /Next 604 0 R /A 115 0 R >> endobj 604 0 obj << /Title (\376\377\0\123\0\154\0\157\0\164\0\40\0\143\0\162\0\145\0\141\0\164\0\151\0\157\0\156) /Parent 602 0 R /Prev 603 0 R /Next 605 0 R /A 117 0 R >> endobj 605 0 obj << /Title (\376\377\0\123\0\154\0\157\0\164\0\40\0\144\0\145\0\154\0\145\0\164\0\151\0\157\0\156) /Parent 602 0 R /Prev 604 0 R /A 119 0 R >> endobj 606 0 obj << /Title (\376\377\0\101\0\162\0\162\0\141\0\171\0\163) /Parent 520 0 R /Prev 602 0 R /Next 607 0 R /A 124 0 R >> endobj 607 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 520 0 R /First 608 0 R /Last 616 0 R /Prev 606 0 R /Next 617 0 R /Count -7 /A 126 0 R >> endobj 608 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 607 0 R /First 610 0 R /Last 612 0 R /Next 613 0 R /Count -2 /A 128 0 R >> endobj 610 0 obj << /Title (\376\377\0\104\0\145\0\146\0\141\0\165\0\154\0\164\0\40\0\120\0\141\0\162\0\141\0\155\0\141\0\164\0\145\0\162\0\163) /Parent 608 0 R /Next 612 0 R /A 609 0 R >> endobj 612 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\167\0\151\0\164\0\150\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\40\0\156\0\165\0\155\0\142\0\145\0\162\0\40\0\157\0\146\0\40\0\160\0\141\0\162\0\141\0\155\0\141\0\164\0\145\0\162\0\163) /Parent 608 0 R /Prev 610 0 R /A 611 0 R >> endobj 613 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\40\0\143\0\141\0\154\0\154\0\163) /Parent 607 0 R /Prev 608 0 R /Next 614 0 R /A 130 0 R >> endobj 614 0 obj << /Title (\376\377\0\102\0\151\0\156\0\144\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\145\0\156\0\166\0\151\0\162\0\157\0\156\0\155\0\145\0\156\0\164\0\40\0\164\0\157\0\40\0\141\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156) /Parent 607 0 R /Prev 613 0 R /Next 615 0 R /A 132 0 R >> endobj 615 0 obj << /Title (\376\377\0\106\0\162\0\145\0\145\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 607 0 R /Prev 614 0 R /Next 616 0 R /A 134 0 R >> endobj 616 0 obj << /Title (\376\377\0\124\0\141\0\151\0\154\0\40\0\162\0\145\0\143\0\165\0\162\0\163\0\151\0\157\0\156) /Parent 607 0 R /Prev 615 0 R /A 136 0 R >> endobj 617 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\145\0\163) /Parent 520 0 R /First 618 0 R /Last 625 0 R /Prev 607 0 R /Next 626 0 R /Count -6 /A 138 0 R >> endobj 618 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\144\0\145\0\143\0\154\0\141\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 617 0 R /First 620 0 R /Last 622 0 R /Next 623 0 R /Count -2 /A 140 0 R >> endobj 620 0 obj << /Title (\376\377\0\123\0\164\0\141\0\164\0\151\0\143\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 618 0 R /Next 622 0 R /A 619 0 R >> endobj 622 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\141\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\163) /Parent 618 0 R /Prev 620 0 R /A 621 0 R >> endobj 623 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\151\0\156\0\163\0\164\0\141\0\156\0\143\0\145\0\163) /Parent 617 0 R /Prev 618 0 R /Next 624 0 R /A 142 0 R >> endobj 624 0 obj << /Title (\376\377\0\111\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145) /Parent 617 0 R /Prev 623 0 R /Next 625 0 R /A 144 0 R >> endobj 625 0 obj << /Title (\376\377\0\115\0\145\0\164\0\141\0\155\0\145\0\164\0\150\0\157\0\144\0\163) /Parent 617 0 R /Prev 624 0 R /A 146 0 R >> endobj 626 0 obj << /Title (\376\377\0\107\0\145\0\156\0\145\0\162\0\141\0\164\0\157\0\162\0\163) /Parent 520 0 R /Prev 617 0 R /Next 627 0 R /A 148 0 R >> endobj 627 0 obj << /Title (\376\377\0\103\0\157\0\156\0\163\0\164\0\141\0\156\0\164\0\163\0\40\0\46\0\40\0\105\0\156\0\165\0\155\0\145\0\162\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 520 0 R /First 628 0 R /Last 630 0 R /Prev 626 0 R /Next 631 0 R /Count -3 /A 150 0 R >> endobj 628 0 obj << /Title (\376\377\0\103\0\157\0\156\0\163\0\164\0\141\0\156\0\164\0\163) /Parent 627 0 R /Next 629 0 R /A 152 0 R >> endobj 629 0 obj << /Title (\376\377\0\105\0\156\0\165\0\155\0\145\0\162\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 627 0 R /Prev 628 0 R /Next 630 0 R /A 154 0 R >> endobj 630 0 obj << /Title (\376\377\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\141\0\164\0\151\0\157\0\156\0\40\0\156\0\157\0\164\0\145\0\163) /Parent 627 0 R /Prev 629 0 R /A 156 0 R >> endobj 631 0 obj << /Title (\376\377\0\124\0\150\0\162\0\145\0\141\0\144\0\163) /Parent 520 0 R /First 632 0 R /Last 632 0 R /Prev 627 0 R /Next 633 0 R /Count -1 /A 158 0 R >> endobj 632 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\164\0\150\0\162\0\145\0\141\0\144\0\163) /Parent 631 0 R /A 160 0 R >> endobj 633 0 obj << /Title (\376\377\0\127\0\145\0\141\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163) /Parent 520 0 R /First 635 0 R /Last 635 0 R /Prev 631 0 R /Next 636 0 R /Count -1 /A 162 0 R >> endobj 635 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\167\0\145\0\141\0\153\0\40\0\162\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163\0\40\0\145\0\170\0\160\0\154\0\151\0\143\0\151\0\164\0\154\0\171) /Parent 633 0 R /A 634 0 R >> endobj 636 0 obj << /Title (\376\377\0\104\0\145\0\154\0\145\0\147\0\141\0\164\0\151\0\157\0\156) /Parent 520 0 R /Prev 633 0 R /Next 637 0 R /A 164 0 R >> endobj 637 0 obj << /Title (\376\377\0\115\0\145\0\164\0\141\0\155\0\145\0\164\0\150\0\157\0\144\0\163) /Parent 520 0 R /First 638 0 R /Last 655 0 R /Prev 636 0 R /Next 656 0 R /Count -18 /A 166 0 R >> endobj 638 0 obj << /Title (\376\377\0\137\0\163\0\145\0\164) /Parent 637 0 R /Next 639 0 R /A 168 0 R >> endobj 639 0 obj << /Title (\376\377\0\137\0\147\0\145\0\164) /Parent 637 0 R /Prev 638 0 R /Next 640 0 R /A 170 0 R >> endobj 640 0 obj << /Title (\376\377\0\137\0\156\0\145\0\167\0\163\0\154\0\157\0\164) /Parent 637 0 R /Prev 639 0 R /Next 641 0 R /A 172 0 R >> endobj 641 0 obj << /Title (\376\377\0\137\0\144\0\145\0\154\0\163\0\154\0\157\0\164) /Parent 637 0 R /Prev 640 0 R /Next 642 0 R /A 174 0 R >> endobj 642 0 obj << /Title (\376\377\0\137\0\141\0\144\0\144) /Parent 637 0 R /Prev 641 0 R /Next 643 0 R /A 176 0 R >> endobj 643 0 obj << /Title (\376\377\0\137\0\163\0\165\0\142) /Parent 637 0 R /Prev 642 0 R /Next 644 0 R /A 178 0 R >> endobj 644 0 obj << /Title (\376\377\0\137\0\155\0\165\0\154) /Parent 637 0 R /Prev 643 0 R /Next 645 0 R /A 180 0 R >> endobj 645 0 obj << /Title (\376\377\0\137\0\144\0\151\0\166) /Parent 637 0 R /Prev 644 0 R /Next 646 0 R /A 182 0 R >> endobj 646 0 obj << /Title (\376\377\0\137\0\155\0\157\0\144\0\165\0\154\0\157) /Parent 637 0 R /Prev 645 0 R /Next 647 0 R /A 184 0 R >> endobj 647 0 obj << /Title (\376\377\0\137\0\165\0\156\0\155) /Parent 637 0 R /Prev 646 0 R /Next 648 0 R /A 186 0 R >> endobj 648 0 obj << /Title (\376\377\0\137\0\164\0\171\0\160\0\145\0\157\0\146) /Parent 637 0 R /Prev 647 0 R /Next 649 0 R /A 188 0 R >> endobj 649 0 obj << /Title (\376\377\0\137\0\143\0\155\0\160) /Parent 637 0 R /Prev 648 0 R /Next 650 0 R /A 190 0 R >> endobj 650 0 obj << /Title (\376\377\0\137\0\143\0\141\0\154\0\154) /Parent 637 0 R /Prev 649 0 R /Next 651 0 R /A 192 0 R >> endobj 651 0 obj << /Title (\376\377\0\137\0\143\0\154\0\157\0\156\0\145\0\144) /Parent 637 0 R /Prev 650 0 R /Next 652 0 R /A 194 0 R >> endobj 652 0 obj << /Title (\376\377\0\137\0\156\0\145\0\170\0\164\0\151) /Parent 637 0 R /Prev 651 0 R /Next 653 0 R /A 196 0 R >> endobj 653 0 obj << /Title (\376\377\0\137\0\164\0\157\0\163\0\164\0\162\0\151\0\156\0\147) /Parent 637 0 R /Prev 652 0 R /Next 654 0 R /A 198 0 R >> endobj 654 0 obj << /Title (\376\377\0\137\0\151\0\156\0\150\0\145\0\162\0\151\0\164\0\145\0\144) /Parent 637 0 R /Prev 653 0 R /Next 655 0 R /A 200 0 R >> endobj 655 0 obj << /Title (\376\377\0\137\0\156\0\145\0\167\0\155\0\145\0\155\0\142\0\145\0\162) /Parent 637 0 R /Prev 654 0 R /A 202 0 R >> endobj 656 0 obj << /Title (\376\377\0\102\0\165\0\151\0\154\0\164\0\55\0\151\0\156\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 520 0 R /First 657 0 R /Last 658 0 R /Prev 637 0 R /Count -14 /A 204 0 R >> endobj 657 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\163\0\171\0\155\0\142\0\157\0\154\0\163) /Parent 656 0 R /Next 658 0 R /A 206 0 R >> endobj 658 0 obj << /Title (\376\377\0\104\0\145\0\146\0\141\0\165\0\154\0\164\0\40\0\144\0\145\0\154\0\145\0\147\0\141\0\164\0\145\0\163) /Parent 656 0 R /First 660 0 R /Last 682 0 R /Prev 657 0 R /Count -12 /A 208 0 R >> endobj 660 0 obj << /Title (\376\377\0\111\0\156\0\164\0\145\0\147\0\145\0\162) /Parent 658 0 R /Next 662 0 R /A 659 0 R >> endobj 662 0 obj << /Title (\376\377\0\106\0\154\0\157\0\141\0\164) /Parent 658 0 R /Prev 660 0 R /Next 664 0 R /A 661 0 R >> endobj 664 0 obj << /Title (\376\377\0\102\0\157\0\157\0\154) /Parent 658 0 R /Prev 662 0 R /Next 666 0 R /A 663 0 R >> endobj 666 0 obj << /Title (\376\377\0\123\0\164\0\162\0\151\0\156\0\147) /Parent 658 0 R /Prev 664 0 R /Next 668 0 R /A 665 0 R >> endobj 668 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145) /Parent 658 0 R /Prev 666 0 R /Next 670 0 R /A 667 0 R >> endobj 670 0 obj << /Title (\376\377\0\101\0\162\0\162\0\141\0\171) /Parent 658 0 R /Prev 668 0 R /Next 672 0 R /A 669 0 R >> endobj 672 0 obj << /Title (\376\377\0\106\0\165\0\156\0\143\0\164\0\151\0\157\0\156) /Parent 658 0 R /Prev 670 0 R /Next 674 0 R /A 671 0 R >> endobj 674 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163) /Parent 658 0 R /Prev 672 0 R /Next 676 0 R /A 673 0 R >> endobj 676 0 obj << /Title (\376\377\0\103\0\154\0\141\0\163\0\163\0\40\0\111\0\156\0\163\0\164\0\141\0\156\0\143\0\145) /Parent 658 0 R /Prev 674 0 R /Next 678 0 R /A 675 0 R >> endobj 678 0 obj << /Title (\376\377\0\107\0\145\0\156\0\145\0\162\0\141\0\164\0\157\0\162) /Parent 658 0 R /Prev 676 0 R /Next 680 0 R /A 677 0 R >> endobj 680 0 obj << /Title (\376\377\0\124\0\150\0\162\0\145\0\141\0\144) /Parent 658 0 R /Prev 678 0 R /Next 682 0 R /A 679 0 R >> endobj 682 0 obj << /Title (\376\377\0\127\0\145\0\141\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145) /Parent 658 0 R /Prev 680 0 R /A 681 0 R >> endobj 683 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\63\0\56\0\240\0\105\0\155\0\142\0\145\0\144\0\144\0\151\0\156\0\147\0\40\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154) /Parent 514 0 R /First 684 0 R /Last 701 0 R /Prev 520 0 R /Next 702 0 R /Count -18 /A 210 0 R >> endobj 684 0 obj << /Title (\376\377\0\115\0\145\0\155\0\157\0\162\0\171\0\40\0\155\0\141\0\156\0\141\0\147\0\145\0\155\0\145\0\156\0\164) /Parent 683 0 R /Next 685 0 R /A 212 0 R >> endobj 685 0 obj << /Title (\376\377\0\125\0\156\0\151\0\143\0\157\0\144\0\145) /Parent 683 0 R /Prev 684 0 R /Next 686 0 R /A 214 0 R >> endobj 686 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\157\0\156\0\40\0\66\0\64\0\40\0\142\0\151\0\164\0\163\0\40\0\141\0\162\0\143\0\150\0\151\0\164\0\145\0\143\0\164\0\165\0\162\0\145\0\163) /Parent 683 0 R /Prev 685 0 R /Next 687 0 R /A 216 0 R >> endobj 687 0 obj << /Title (\376\377\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\167\0\151\0\164\0\150\0\40\0\144\0\157\0\165\0\142\0\154\0\145\0\40\0\160\0\162\0\145\0\143\0\151\0\163\0\151\0\157\0\156\0\40\0\146\0\154\0\157\0\141\0\164\0\163) /Parent 683 0 R /Prev 686 0 R /Next 688 0 R /A 218 0 R >> endobj 688 0 obj << /Title (\376\377\0\105\0\162\0\162\0\157\0\162\0\40\0\143\0\157\0\156\0\166\0\145\0\156\0\164\0\151\0\157\0\156\0\163) /Parent 683 0 R /Prev 687 0 R /Next 689 0 R /A 220 0 R >> endobj 689 0 obj << /Title (\376\377\0\111\0\156\0\151\0\164\0\151\0\141\0\154\0\151\0\172\0\151\0\156\0\147\0\40\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154) /Parent 683 0 R /Prev 688 0 R /Next 690 0 R /A 222 0 R >> endobj 690 0 obj << /Title (\376\377\0\124\0\150\0\145\0\40\0\123\0\164\0\141\0\143\0\153) /Parent 683 0 R /First 691 0 R /Last 692 0 R /Prev 689 0 R /Next 693 0 R /Count -2 /A 224 0 R >> endobj 691 0 obj << /Title (\376\377\0\123\0\164\0\141\0\143\0\153\0\40\0\151\0\156\0\144\0\145\0\170\0\145\0\163) /Parent 690 0 R /Next 692 0 R /A 226 0 R >> endobj 692 0 obj << /Title (\376\377\0\123\0\164\0\141\0\143\0\153\0\40\0\155\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\157\0\156) /Parent 690 0 R /Prev 691 0 R /A 228 0 R >> endobj 693 0 obj << /Title (\376\377\0\122\0\165\0\156\0\164\0\151\0\155\0\145\0\40\0\145\0\162\0\162\0\157\0\162\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) /Parent 683 0 R /Prev 690 0 R /Next 694 0 R /A 230 0 R >> endobj 694 0 obj << /Title (\376\377\0\103\0\157\0\155\0\160\0\151\0\154\0\151\0\156\0\147\0\40\0\141\0\40\0\163\0\143\0\162\0\151\0\160\0\164) /Parent 683 0 R /Prev 693 0 R /Next 695 0 R /A 232 0 R >> endobj 695 0 obj << /Title (\376\377\0\103\0\141\0\154\0\154\0\151\0\156\0\147\0\40\0\141\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156) /Parent 683 0 R /Prev 694 0 R /Next 696 0 R /A 234 0 R >> endobj 696 0 obj << /Title (\376\377\0\103\0\162\0\145\0\141\0\164\0\145\0\40\0\141\0\40\0\103\0\40\0\146\0\165\0\156\0\143\0\164\0\151\0\157\0\156) /Parent 683 0 R /Prev 695 0 R /Next 697 0 R /A 236 0 R >> endobj 697 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\163\0\40\0\141\0\156\0\144\0\40\0\141\0\162\0\162\0\141\0\171\0\163\0\40\0\155\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\157\0\156) /Parent 683 0 R /Prev 696 0 R /Next 698 0 R /A 238 0 R >> endobj 698 0 obj << /Title (\376\377\0\125\0\163\0\145\0\162\0\144\0\141\0\164\0\141\0\40\0\141\0\156\0\144\0\40\0\125\0\163\0\145\0\162\0\120\0\157\0\151\0\156\0\164\0\145\0\162\0\163) /Parent 683 0 R /Prev 697 0 R /Next 699 0 R /A 243 0 R >> endobj 699 0 obj << /Title (\376\377\0\124\0\150\0\145\0\40\0\162\0\145\0\147\0\151\0\163\0\164\0\162\0\171\0\40\0\164\0\141\0\142\0\154\0\145) /Parent 683 0 R /Prev 698 0 R /Next 700 0 R /A 245 0 R >> endobj 700 0 obj << /Title (\376\377\0\115\0\141\0\156\0\164\0\141\0\151\0\156\0\151\0\156\0\147\0\40\0\163\0\164\0\162\0\157\0\156\0\147\0\40\0\162\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\163\0\40\0\164\0\157\0\40\0\123\0\161\0\165\0\151\0\162\0\162\0\145\0\154\0\40\0\166\0\141\0\154\0\165\0\145\0\163\0\40\0\146\0\162\0\157\0\155\0\40\0\164\0\150\0\145\0\40\0\103\0\40\0\101\0\120\0\111) /Parent 683 0 R /Prev 699 0 R /Next 701 0 R /A 247 0 R >> endobj 701 0 obj << /Title (\376\377\0\104\0\145\0\142\0\165\0\147\0\40\0\111\0\156\0\164\0\145\0\162\0\146\0\141\0\143\0\145) /Parent 683 0 R /Prev 700 0 R /A 249 0 R >> endobj 702 0 obj << /Title (\376\377\0\103\0\150\0\141\0\160\0\164\0\145\0\162\0\240\0\64\0\56\0\240\0\101\0\120\0\111\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145) /Parent 514 0 R /First 703 0 R /Last 711 0 R /Prev 683 0 R /Next 712 0 R /Count -9 /A 251 0 R >> endobj 703 0 obj << /Title (\376\377\0\126\0\151\0\162\0\164\0\165\0\141\0\154\0\40\0\115\0\141\0\143\0\150\0\151\0\156\0\145) /Parent 702 0 R /Next 704 0 R /A 253 0 R >> endobj 704 0 obj << /Title (\376\377\0\103\0\157\0\155\0\160\0\151\0\154\0\145\0\162) /Parent 702 0 R /Prev 703 0 R /Next 705 0 R /A 255 0 R >> endobj 705 0 obj << /Title (\376\377\0\123\0\164\0\141\0\143\0\153\0\40\0\117\0\160\0\145\0\162\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 702 0 R /Prev 704 0 R /Next 706 0 R /A 257 0 R >> endobj 706 0 obj << /Title (\376\377\0\117\0\142\0\152\0\145\0\143\0\164\0\40\0\143\0\162\0\145\0\141\0\164\0\151\0\157\0\156\0\40\0\141\0\156\0\144\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) /Parent 702 0 R /Prev 705 0 R /Next 707 0 R /A 259 0 R >> endobj 707 0 obj << /Title (\376\377\0\103\0\141\0\154\0\154\0\163) /Parent 702 0 R /Prev 706 0 R /Next 708 0 R /A 261 0 R >> endobj 708 0 obj << /Title (\376\377\0\117\0\142\0\152\0\145\0\143\0\164\0\163\0\40\0\155\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\157\0\156) /Parent 702 0 R /Prev 707 0 R /Next 709 0 R /A 263 0 R >> endobj 709 0 obj << /Title (\376\377\0\102\0\171\0\164\0\145\0\143\0\157\0\144\0\145\0\40\0\163\0\145\0\162\0\151\0\141\0\154\0\151\0\172\0\141\0\164\0\151\0\157\0\156) /Parent 702 0 R /Prev 708 0 R /Next 710 0 R /A 265 0 R >> endobj 710 0 obj << /Title (\376\377\0\122\0\141\0\167\0\40\0\157\0\142\0\152\0\145\0\143\0\164\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) /Parent 702 0 R /Prev 709 0 R /Next 711 0 R /A 267 0 R >> endobj 711 0 obj << /Title (\376\377\0\104\0\145\0\142\0\165\0\147\0\40\0\151\0\156\0\164\0\145\0\162\0\146\0\141\0\143\0\145) /Parent 702 0 R /Prev 710 0 R /A 269 0 R >> endobj 712 0 obj << /Title (\376\377\0\111\0\156\0\144\0\145\0\170) /Parent 514 0 R /Prev 702 0 R /A 271 0 R >> endobj 713 0 obj << /Type /Font /Subtype /Type1 /Name /F11 /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding >> endobj 714 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 715 0 obj << /Type /Font /Subtype /Type1 /Name /F10 /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding >> endobj 716 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 717 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 718 0 obj << /Type /Font /Subtype /Type1 /Name /F9 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 719 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj 720 0 obj << /Type /Font /Subtype /Type1 /Name /F7 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 1 0 obj << /Type /Pages /Count 105 /Kids [6 0 R 8 0 R 10 0 R 12 0 R 121 0 R 240 0 R 273 0 R 275 0 R 277 0 R 279 0 R 281 0 R 283 0 R 298 0 R 300 0 R 302 0 R 304 0 R 306 0 R 310 0 R 316 0 R 321 0 R 323 0 R 325 0 R 330 0 R 338 0 R 343 0 R 345 0 R 347 0 R 349 0 R 351 0 R 353 0 R 357 0 R 361 0 R 363 0 R 367 0 R 369 0 R 371 0 R 373 0 R 375 0 R 377 0 R 379 0 R 381 0 R 383 0 R 385 0 R 387 0 R 389 0 R 391 0 R 393 0 R 395 0 R 397 0 R 399 0 R 401 0 R 403 0 R 405 0 R 407 0 R 409 0 R 411 0 R 413 0 R 415 0 R 417 0 R 419 0 R 421 0 R 423 0 R 425 0 R 427 0 R 429 0 R 431 0 R 433 0 R 435 0 R 437 0 R 439 0 R 441 0 R 443 0 R 445 0 R 447 0 R 449 0 R 451 0 R 453 0 R 455 0 R 457 0 R 459 0 R 461 0 R 463 0 R 465 0 R 467 0 R 469 0 R 471 0 R 473 0 R 475 0 R 477 0 R 479 0 R 481 0 R 483 0 R 485 0 R 487 0 R 489 0 R 491 0 R 493 0 R 495 0 R 497 0 R 499 0 R 501 0 R 503 0 R 506 0 R 509 0 R 512 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Outlines 514 0 R /PageMode /UseOutlines >> endobj 3 0 obj << /Font << /F1 714 0 R /F11 713 0 R /F10 715 0 R /F5 716 0 R /F3 717 0 R /F9 718 0 R /F6 719 0 R /F7 720 0 R >> /ProcSet [ /PDF /ImageC /Text ] >> endobj 15 0 obj << /S /GoTo /D [273 0 R /XYZ 115.0 725.0 null] >> endobj 17 0 obj << /S /GoTo /D [275 0 R /XYZ 115.0 725.0 null] >> endobj 19 0 obj << /S /GoTo /D [275 0 R /XYZ 115.0 666.009 null] >> endobj 21 0 obj << /S /GoTo /D [275 0 R /XYZ 115.0 632.684 null] >> endobj 23 0 obj << /S /GoTo /D [275 0 R /XYZ 115.0 519.385 null] >> endobj 25 0 obj << /S /GoTo /D [275 0 R /XYZ 115.0 322.946 null] >> endobj 27 0 obj << /S /GoTo /D [275 0 R /XYZ 115.0 192.507 null] >> endobj 29 0 obj << /S /GoTo /D [277 0 R /XYZ 115.0 725.0 null] >> endobj 31 0 obj << /S /GoTo /D [277 0 R /XYZ 115.0 414.541 null] >> endobj 33 0 obj << /S /GoTo /D [277 0 R /XYZ 115.0 119.922 null] >> endobj 35 0 obj << /S /GoTo /D [279 0 R /XYZ 115.0 682.0 null] >> endobj 37 0 obj << /S /GoTo /D [279 0 R /XYZ 115.0 552.401 null] >> endobj 39 0 obj << /S /GoTo /D [279 0 R /XYZ 115.0 442.522 null] >> endobj 41 0 obj << /S /GoTo /D [279 0 R /XYZ 115.0 137.763 null] >> endobj 43 0 obj << /S /GoTo /D [281 0 R /XYZ 115.0 654.42 null] >> endobj 45 0 obj << /S /GoTo /D [281 0 R /XYZ 115.0 543.401 null] >> endobj 47 0 obj << /S /GoTo /D [281 0 R /XYZ 115.0 394.082 null] >> endobj 49 0 obj << /S /GoTo /D [281 0 R /XYZ 115.0 274.343 null] >> endobj 51 0 obj << /S /GoTo /D [281 0 R /XYZ 115.0 212.904 null] >> endobj 53 0 obj << /S /GoTo /D [281 0 R /XYZ 115.0 140.465 null] >> endobj 55 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 714.0 null] >> endobj 57 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 652.561 null] >> endobj 59 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 591.122 null] >> endobj 61 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 540.683 null] >> endobj 63 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 479.244 null] >> endobj 65 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 358.919 null] >> endobj 67 0 obj << /S /GoTo /D [300 0 R /XYZ 115.0 705.0 null] >> endobj 69 0 obj << /S /GoTo /D [300 0 R /XYZ 115.0 555.815 null] >> endobj 71 0 obj << /S /GoTo /D [300 0 R /XYZ 115.0 475.516 null] >> endobj 73 0 obj << /S /GoTo /D [302 0 R /XYZ 115.0 148.088 null] >> endobj 75 0 obj << /S /GoTo /D [304 0 R /XYZ 115.0 298.444 null] >> endobj 77 0 obj << /S /GoTo /D [304 0 R /XYZ 115.0 207.145 null] >> endobj 79 0 obj << /S /GoTo /D [304 0 R /XYZ 115.0 115.846 null] >> endobj 81 0 obj << /S /GoTo /D [306 0 R /XYZ 115.0 652.14 null] >> endobj 83 0 obj << /S /GoTo /D [306 0 R /XYZ 115.0 571.841 null] >> endobj 85 0 obj << /S /GoTo /D [306 0 R /XYZ 115.0 380.522 null] >> endobj 87 0 obj << /S /GoTo /D [306 0 R /XYZ 115.0 270.643 null] >> endobj 89 0 obj << /S /GoTo /D [306 0 R /XYZ 115.0 141.044 null] >> endobj 91 0 obj << /S /GoTo /D [310 0 R /XYZ 115.0 682.0 null] >> endobj 93 0 obj << /S /GoTo /D [310 0 R /XYZ 115.0 601.701 null] >> endobj 95 0 obj << /S /GoTo /D [310 0 R /XYZ 115.0 511.542 null] >> endobj 97 0 obj << /S /GoTo /D [310 0 R /XYZ 115.0 381.943 null] >> endobj 99 0 obj << /S /GoTo /D [310 0 R /XYZ 115.0 290.644 null] >> endobj 101 0 obj << /S /GoTo /D [310 0 R /XYZ 115.0 257.319 null] >> endobj 103 0 obj << /S /GoTo /D [316 0 R /XYZ 115.0 663.14 null] >> endobj 105 0 obj << /S /GoTo /D [323 0 R /XYZ 115.0 245.758 null] >> endobj 107 0 obj << /S /GoTo /D [325 0 R /XYZ 115.0 242.64 null] >> endobj 109 0 obj << /S /GoTo /D [325 0 R /XYZ 115.0 151.341 null] >> endobj 111 0 obj << /S /GoTo /D [330 0 R /XYZ 115.0 629.0 null] >> endobj 113 0 obj << /S /GoTo /D [330 0 R /XYZ 115.0 428.541 null] >> endobj 115 0 obj << /S /GoTo /D [330 0 R /XYZ 115.0 341.216 null] >> endobj 117 0 obj << /S /GoTo /D [330 0 R /XYZ 115.0 290.777 null] >> endobj 119 0 obj << /S /GoTo /D [338 0 R /XYZ 115.0 583.84 null] >> endobj 124 0 obj << /S /GoTo /D [338 0 R /XYZ 115.0 383.801 null] >> endobj 126 0 obj << /S /GoTo /D [338 0 R /XYZ 115.0 217.176 null] >> endobj 128 0 obj << /S /GoTo /D [338 0 R /XYZ 115.0 140.851 null] >> endobj 130 0 obj << /S /GoTo /D [345 0 R /XYZ 115.0 380.624 null] >> endobj 132 0 obj << /S /GoTo /D [347 0 R /XYZ 115.0 725.0 null] >> endobj 134 0 obj << /S /GoTo /D [347 0 R /XYZ 115.0 582.427 null] >> endobj 136 0 obj << /S /GoTo /D [347 0 R /XYZ 115.0 370.388 null] >> endobj 138 0 obj << /S /GoTo /D [347 0 R /XYZ 115.0 158.489 null] >> endobj 140 0 obj << /S /GoTo /D [349 0 R /XYZ 115.0 725.0 null] >> endobj 142 0 obj << /S /GoTo /D [353 0 R /XYZ 115.0 311.78 null] >> endobj 144 0 obj << /S /GoTo /D [357 0 R /XYZ 115.0 352.5 null] >> endobj 146 0 obj << /S /GoTo /D [363 0 R /XYZ 115.0 557.1 null] >> endobj 148 0 obj << /S /GoTo /D [363 0 R /XYZ 115.0 132.021 null] >> endobj 150 0 obj << /S /GoTo /D [367 0 R /XYZ 115.0 307.36 null] >> endobj 152 0 obj << /S /GoTo /D [367 0 R /XYZ 115.0 242.035 null] >> endobj 154 0 obj << /S /GoTo /D [369 0 R /XYZ 115.0 572.98 null] >> endobj 156 0 obj << /S /GoTo /D [369 0 R /XYZ 115.0 107.761 null] >> endobj 158 0 obj << /S /GoTo /D [371 0 R /XYZ 115.0 445.68 null] >> endobj 160 0 obj << /S /GoTo /D [371 0 R /XYZ 115.0 325.355 null] >> endobj 162 0 obj << /S /GoTo /D [375 0 R /XYZ 115.0 685.28 null] >> endobj 164 0 obj << /S /GoTo /D [377 0 R /XYZ 115.0 613.56 null] >> endobj 166 0 obj << /S /GoTo /D [377 0 R /XYZ 115.0 276.755 null] >> endobj 168 0 obj << /S /GoTo /D [379 0 R /XYZ 115.0 328.76 null] >> endobj 170 0 obj << /S /GoTo /D [379 0 R /XYZ 115.0 248.461 null] >> endobj 172 0 obj << /S /GoTo /D [379 0 R /XYZ 115.0 168.162 null] >> endobj 174 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 693.0 null] >> endobj 176 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 591.701 null] >> endobj 178 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 511.402 null] >> endobj 180 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 460.963 null] >> endobj 182 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 410.524 null] >> endobj 184 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 360.085 null] >> endobj 186 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 309.646 null] >> endobj 188 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 229.347 null] >> endobj 190 0 obj << /S /GoTo /D [381 0 R /XYZ 115.0 149.048 null] >> endobj 192 0 obj << /S /GoTo /D [383 0 R /XYZ 115.0 608.64 null] >> endobj 194 0 obj << /S /GoTo /D [383 0 R /XYZ 115.0 528.341 null] >> endobj 196 0 obj << /S /GoTo /D [383 0 R /XYZ 115.0 448.042 null] >> endobj 198 0 obj << /S /GoTo /D [383 0 R /XYZ 115.0 335.743 null] >> endobj 200 0 obj << /S /GoTo /D [383 0 R /XYZ 115.0 223.444 null] >> endobj 202 0 obj << /S /GoTo /D [383 0 R /XYZ 115.0 111.145 null] >> endobj 204 0 obj << /S /GoTo /D [385 0 R /XYZ 115.0 653.14 null] >> endobj 206 0 obj << /S /GoTo /D [385 0 R /XYZ 115.0 598.815 null] >> endobj 208 0 obj << /S /GoTo /D [389 0 R /XYZ 115.0 725.0 null] >> endobj 210 0 obj << /S /GoTo /D [403 0 R /XYZ 115.0 725.0 null] >> endobj 212 0 obj << /S /GoTo /D [403 0 R /XYZ 115.0 601.009 null] >> endobj 214 0 obj << /S /GoTo /D [403 0 R /XYZ 115.0 343.684 null] >> endobj 216 0 obj << /S /GoTo /D [403 0 R /XYZ 115.0 278.359 null] >> endobj 218 0 obj << /S /GoTo /D [403 0 R /XYZ 115.0 213.034 null] >> endobj 220 0 obj << /S /GoTo /D [403 0 R /XYZ 115.0 136.709 null] >> endobj 222 0 obj << /S /GoTo /D [405 0 R /XYZ 115.0 633.56 null] >> endobj 224 0 obj << /S /GoTo /D [405 0 R /XYZ 115.0 418.775 null] >> endobj 226 0 obj << /S /GoTo /D [405 0 R /XYZ 115.0 331.45 null] >> endobj 228 0 obj << /S /GoTo /D [407 0 R /XYZ 115.0 662.75 null] >> endobj 230 0 obj << /S /GoTo /D [409 0 R /XYZ 115.0 483.82 null] >> endobj 232 0 obj << /S /GoTo /D [409 0 R /XYZ 115.0 323.635 null] >> endobj 234 0 obj << /S /GoTo /D [411 0 R /XYZ 115.0 313.78 null] >> endobj 236 0 obj << /S /GoTo /D [413 0 R /XYZ 115.0 663.14 null] >> endobj 238 0 obj << /S /GoTo /D [415 0 R /XYZ 115.0 161.14 null] >> endobj 243 0 obj << /S /GoTo /D [419 0 R /XYZ 115.0 565.68 null] >> endobj 245 0 obj << /S /GoTo /D [419 0 R /XYZ 115.0 219.335 null] >> endobj 247 0 obj << /S /GoTo /D [421 0 R /XYZ 115.0 725.0 null] >> endobj 249 0 obj << /S /GoTo /D [421 0 R /XYZ 115.0 486.03 null] >> endobj 251 0 obj << /S /GoTo /D [425 0 R /XYZ 115.0 725.0 null] >> endobj 253 0 obj << /S /GoTo /D [425 0 R /XYZ 115.0 687.009 null] >> endobj 255 0 obj << /S /GoTo /D [435 0 R /XYZ 115.0 578.0 null] >> endobj 257 0 obj << /S /GoTo /D [439 0 R /XYZ 115.0 524.14 null] >> endobj 259 0 obj << /S /GoTo /D [443 0 R /XYZ 115.0 422.28 null] >> endobj 261 0 obj << /S /GoTo /D [469 0 R /XYZ 115.0 653.0 null] >> endobj 263 0 obj << /S /GoTo /D [473 0 R /XYZ 115.0 559.14 null] >> endobj 265 0 obj << /S /GoTo /D [491 0 R /XYZ 115.0 219.42 null] >> endobj 267 0 obj << /S /GoTo /D [493 0 R /XYZ 115.0 326.28 null] >> endobj 269 0 obj << /S /GoTo /D [499 0 R /XYZ 115.0 359.28 null] >> endobj 271 0 obj << /S /GoTo /D [503 0 R /XYZ 67.0 725.0 null] >> endobj 286 0 obj << /S /GoTo /D [363 0 R /XYZ 115.0 98.696 null] >> endobj 289 0 obj << /S /GoTo /D [419 0 R /XYZ 115.0 532.355 null] >> endobj 291 0 obj << /S /GoTo /D [375 0 R /XYZ 115.0 651.955 null] >> endobj 293 0 obj << /S /GoTo /D [338 0 R /XYZ 115.0 183.851 null] >> endobj 296 0 obj << /S /GoTo /D [283 0 R /XYZ 115.0 329.48 null] >> endobj 313 0 obj << /S /GoTo /D [367 0 R /XYZ 115.0 274.035 null] >> endobj 319 0 obj << /S /GoTo /D [330 0 R /XYZ 115.0 395.216 null] >> endobj 328 0 obj << /S /GoTo /D [377 0 R /XYZ 115.0 580.235 null] >> endobj 334 0 obj << /S /GoTo /D [377 0 R /XYZ 115.0 243.43 null] >> endobj 336 0 obj << /S /GoTo /D [323 0 R /XYZ 115.0 216.319 null] >> endobj 341 0 obj << /S /GoTo /D [385 0 R /XYZ 115.0 619.815 null] >> endobj 514 0 obj << /First 516 0 R /Last 712 0 R >> endobj 515 0 obj << /S /GoTo /D [10 0 R /XYZ 115.0 725.0 null] >> endobj 517 0 obj << /S /GoTo /D [12 0 R /XYZ 115.0 715.0 null] >> endobj 548 0 obj << /S /GoTo /D [300 0 R /XYZ 115.0 414.077 null] >> endobj 550 0 obj << /S /GoTo /D [300 0 R /XYZ 115.0 355.881 null] >> endobj 552 0 obj << /S /GoTo /D [300 0 R /XYZ 115.0 140.505 null] >> endobj 554 0 obj << /S /GoTo /D [302 0 R /XYZ 115.0 545.96 null] >> endobj 556 0 obj << /S /GoTo /D [302 0 R /XYZ 115.0 349.164 null] >> endobj 559 0 obj << /S /GoTo /D [302 0 R /XYZ 115.0 118.649 null] >> endobj 561 0 obj << /S /GoTo /D [304 0 R /XYZ 115.0 516.1 null] >> endobj 578 0 obj << /S /GoTo /D [316 0 R /XYZ 115.0 633.701 null] >> endobj 580 0 obj << /S /GoTo /D [316 0 R /XYZ 115.0 556.645 null] >> endobj 582 0 obj << /S /GoTo /D [316 0 R /XYZ 115.0 315.709 null] >> endobj 584 0 obj << /S /GoTo /D [316 0 R /XYZ 115.0 206.653 null] >> endobj 586 0 obj << /S /GoTo /D [321 0 R /XYZ 115.0 661.0 null] >> endobj 588 0 obj << /S /GoTo /D [321 0 R /XYZ 115.0 444.484 null] >> endobj 590 0 obj << /S /GoTo /D [321 0 R /XYZ 115.0 356.428 null] >> endobj 592 0 obj << /S /GoTo /D [321 0 R /XYZ 115.0 210.072 null] >> endobj 594 0 obj << /S /GoTo /D [323 0 R /XYZ 115.0 645.84 null] >> endobj 596 0 obj << /S /GoTo /D [323 0 R /XYZ 115.0 506.204 null] >> endobj 609 0 obj << /S /GoTo /D [343 0 R /XYZ 115.0 207.32 null] >> endobj 611 0 obj << /S /GoTo /D [345 0 R /XYZ 115.0 642.28 null] >> endobj 619 0 obj << /S /GoTo /D [351 0 R /XYZ 115.0 395.64 null] >> endobj 621 0 obj << /S /GoTo /D [351 0 R /XYZ 115.0 181.71 null] >> endobj 634 0 obj << /S /GoTo /D [375 0 R /XYZ 115.0 239.055 null] >> endobj 659 0 obj << /S /GoTo /D [389 0 R /XYZ 115.0 673.561 null] >> endobj 661 0 obj << /S /GoTo /D [389 0 R /XYZ 115.0 437.365 null] >> endobj 663 0 obj << /S /GoTo /D [389 0 R /XYZ 115.0 201.169 null] >> endobj 665 0 obj << /S /GoTo /D [391 0 R /XYZ 115.0 641.0 null] >> endobj 667 0 obj << /S /GoTo /D [391 0 R /XYZ 115.0 192.804 null] >> endobj 669 0 obj << /S /GoTo /D [393 0 R /XYZ 115.0 440.0 null] >> endobj 671 0 obj << /S /GoTo /D [395 0 R /XYZ 115.0 266.12 null] >> endobj 673 0 obj << /S /GoTo /D [397 0 R /XYZ 115.0 471.0 null] >> endobj 675 0 obj << /S /GoTo /D [397 0 R /XYZ 115.0 148.804 null] >> endobj 677 0 obj << /S /GoTo /D [399 0 R /XYZ 115.0 588.0 null] >> endobj 679 0 obj << /S /GoTo /D [399 0 R /XYZ 115.0 435.804 null] >> endobj 681 0 obj << /S /GoTo /D [399 0 R /XYZ 115.0 188.608 null] >> endobj xref 0 721 0000000000 65535 f 0000224367 00000 n 0000225255 00000 n 0000225348 00000 n 0000000015 00000 n 0000000071 00000 n 0000000404 00000 n 0000000510 00000 n 0000001702 00000 n 0000001808 00000 n 0000001969 00000 n 0000002076 00000 n 0000003976 00000 n 0000004099 00000 n 0000004500 00000 n 0000225514 00000 n 0000004636 00000 n 0000225580 00000 n 0000004772 00000 n 0000225646 00000 n 0000004908 00000 n 0000225714 00000 n 0000005043 00000 n 0000225782 00000 n 0000005178 00000 n 0000225850 00000 n 0000005314 00000 n 0000225918 00000 n 0000005450 00000 n 0000225986 00000 n 0000005586 00000 n 0000226052 00000 n 0000005722 00000 n 0000226120 00000 n 0000005857 00000 n 0000226188 00000 n 0000005993 00000 n 0000226254 00000 n 0000006129 00000 n 0000226322 00000 n 0000006265 00000 n 0000226390 00000 n 0000006401 00000 n 0000226458 00000 n 0000006537 00000 n 0000226525 00000 n 0000006673 00000 n 0000226593 00000 n 0000006809 00000 n 0000226661 00000 n 0000006945 00000 n 0000226729 00000 n 0000007081 00000 n 0000226797 00000 n 0000007217 00000 n 0000226865 00000 n 0000007353 00000 n 0000226931 00000 n 0000007489 00000 n 0000226999 00000 n 0000007625 00000 n 0000227067 00000 n 0000007761 00000 n 0000227135 00000 n 0000007897 00000 n 0000227203 00000 n 0000008033 00000 n 0000227271 00000 n 0000008169 00000 n 0000227337 00000 n 0000008305 00000 n 0000227405 00000 n 0000008441 00000 n 0000227473 00000 n 0000008576 00000 n 0000227541 00000 n 0000008712 00000 n 0000227609 00000 n 0000008848 00000 n 0000227677 00000 n 0000008984 00000 n 0000227745 00000 n 0000009119 00000 n 0000227812 00000 n 0000009254 00000 n 0000227880 00000 n 0000009390 00000 n 0000227948 00000 n 0000009525 00000 n 0000228016 00000 n 0000009661 00000 n 0000228084 00000 n 0000009797 00000 n 0000228150 00000 n 0000009933 00000 n 0000228218 00000 n 0000010069 00000 n 0000228286 00000 n 0000010204 00000 n 0000228354 00000 n 0000010340 00000 n 0000228422 00000 n 0000010477 00000 n 0000228491 00000 n 0000010615 00000 n 0000228559 00000 n 0000010753 00000 n 0000228628 00000 n 0000010891 00000 n 0000228696 00000 n 0000011029 00000 n 0000228765 00000 n 0000011167 00000 n 0000228832 00000 n 0000011305 00000 n 0000228901 00000 n 0000011442 00000 n 0000228970 00000 n 0000011578 00000 n 0000229039 00000 n 0000011714 00000 n 0000013834 00000 n 0000013960 00000 n 0000014445 00000 n 0000229107 00000 n 0000014579 00000 n 0000229176 00000 n 0000014713 00000 n 0000229245 00000 n 0000014847 00000 n 0000229314 00000 n 0000014981 00000 n 0000229383 00000 n 0000015115 00000 n 0000229450 00000 n 0000015249 00000 n 0000229519 00000 n 0000015383 00000 n 0000229588 00000 n 0000015516 00000 n 0000229657 00000 n 0000015649 00000 n 0000229724 00000 n 0000015783 00000 n 0000229792 00000 n 0000015917 00000 n 0000229859 00000 n 0000016051 00000 n 0000229926 00000 n 0000016185 00000 n 0000229995 00000 n 0000016319 00000 n 0000230063 00000 n 0000016453 00000 n 0000230132 00000 n 0000016587 00000 n 0000230200 00000 n 0000016721 00000 n 0000230269 00000 n 0000016855 00000 n 0000230337 00000 n 0000016989 00000 n 0000230406 00000 n 0000017123 00000 n 0000230474 00000 n 0000017257 00000 n 0000230542 00000 n 0000017391 00000 n 0000230611 00000 n 0000017525 00000 n 0000230679 00000 n 0000017659 00000 n 0000230748 00000 n 0000017793 00000 n 0000230817 00000 n 0000017927 00000 n 0000230884 00000 n 0000018061 00000 n 0000230953 00000 n 0000018195 00000 n 0000231022 00000 n 0000018329 00000 n 0000231091 00000 n 0000018463 00000 n 0000231160 00000 n 0000018597 00000 n 0000231229 00000 n 0000018731 00000 n 0000231298 00000 n 0000018865 00000 n 0000231367 00000 n 0000018999 00000 n 0000231436 00000 n 0000019133 00000 n 0000231504 00000 n 0000019267 00000 n 0000231573 00000 n 0000019400 00000 n 0000231642 00000 n 0000019534 00000 n 0000231711 00000 n 0000019668 00000 n 0000231780 00000 n 0000019802 00000 n 0000231849 00000 n 0000019936 00000 n 0000231917 00000 n 0000020070 00000 n 0000231986 00000 n 0000020203 00000 n 0000232053 00000 n 0000020337 00000 n 0000232120 00000 n 0000020471 00000 n 0000232189 00000 n 0000020605 00000 n 0000232258 00000 n 0000020739 00000 n 0000232327 00000 n 0000020872 00000 n 0000232396 00000 n 0000021006 00000 n 0000232465 00000 n 0000021140 00000 n 0000232533 00000 n 0000021274 00000 n 0000232602 00000 n 0000021408 00000 n 0000232670 00000 n 0000021541 00000 n 0000232738 00000 n 0000021675 00000 n 0000232806 00000 n 0000021809 00000 n 0000232875 00000 n 0000021943 00000 n 0000232943 00000 n 0000022076 00000 n 0000233011 00000 n 0000022208 00000 n 0000023136 00000 n 0000023262 00000 n 0000023403 00000 n 0000233079 00000 n 0000023537 00000 n 0000233147 00000 n 0000023671 00000 n 0000233216 00000 n 0000023805 00000 n 0000233283 00000 n 0000023939 00000 n 0000233351 00000 n 0000024073 00000 n 0000233418 00000 n 0000024207 00000 n 0000233487 00000 n 0000024341 00000 n 0000233554 00000 n 0000024474 00000 n 0000233622 00000 n 0000024608 00000 n 0000233690 00000 n 0000024742 00000 n 0000233757 00000 n 0000024876 00000 n 0000233825 00000 n 0000025010 00000 n 0000233893 00000 n 0000025144 00000 n 0000233961 00000 n 0000025278 00000 n 0000234029 00000 n 0000025412 00000 n 0000026231 00000 n 0000026341 00000 n 0000027993 00000 n 0000028103 00000 n 0000029773 00000 n 0000029883 00000 n 0000031808 00000 n 0000031918 00000 n 0000033598 00000 n 0000033708 00000 n 0000035797 00000 n 0000035923 00000 n 0000036000 00000 n 0000234095 00000 n 0000036139 00000 n 0000036277 00000 n 0000234163 00000 n 0000036416 00000 n 0000234232 00000 n 0000036555 00000 n 0000234301 00000 n 0000036694 00000 n 0000036832 00000 n 0000234370 00000 n 0000036973 00000 n 0000038260 00000 n 0000038370 00000 n 0000040146 00000 n 0000040256 00000 n 0000041771 00000 n 0000041881 00000 n 0000043346 00000 n 0000043456 00000 n 0000044883 00000 n 0000045009 00000 n 0000045038 00000 n 0000045176 00000 n 0000046510 00000 n 0000046636 00000 n 0000046673 00000 n 0000234438 00000 n 0000046812 00000 n 0000046951 00000 n 0000048740 00000 n 0000048866 00000 n 0000048895 00000 n 0000234507 00000 n 0000049034 00000 n 0000050524 00000 n 0000050634 00000 n 0000052310 00000 n 0000052420 00000 n 0000053535 00000 n 0000053661 00000 n 0000053690 00000 n 0000234576 00000 n 0000053829 00000 n 0000055701 00000 n 0000055827 00000 n 0000055872 00000 n 0000056007 00000 n 0000234645 00000 n 0000056142 00000 n 0000234713 00000 n 0000056280 00000 n 0000057789 00000 n 0000057915 00000 n 0000057944 00000 n 0000234782 00000 n 0000058082 00000 n 0000059070 00000 n 0000059180 00000 n 0000061111 00000 n 0000061221 00000 n 0000063733 00000 n 0000063843 00000 n 0000065224 00000 n 0000065334 00000 n 0000067360 00000 n 0000067470 00000 n 0000069856 00000 n 0000069982 00000 n 0000070011 00000 n 0000070150 00000 n 0000072046 00000 n 0000072172 00000 n 0000072201 00000 n 0000072337 00000 n 0000073808 00000 n 0000073918 00000 n 0000075734 00000 n 0000075860 00000 n 0000075889 00000 n 0000076030 00000 n 0000078190 00000 n 0000078300 00000 n 0000079802 00000 n 0000079912 00000 n 0000083044 00000 n 0000083154 00000 n 0000084378 00000 n 0000084488 00000 n 0000086625 00000 n 0000086735 00000 n 0000088825 00000 n 0000088935 00000 n 0000090080 00000 n 0000090190 00000 n 0000091245 00000 n 0000091355 00000 n 0000092755 00000 n 0000092865 00000 n 0000094327 00000 n 0000094437 00000 n 0000095963 00000 n 0000096073 00000 n 0000097129 00000 n 0000097239 00000 n 0000098584 00000 n 0000098694 00000 n 0000099960 00000 n 0000100070 00000 n 0000101861 00000 n 0000101971 00000 n 0000103702 00000 n 0000103812 00000 n 0000105072 00000 n 0000105182 00000 n 0000105568 00000 n 0000105678 00000 n 0000108493 00000 n 0000108603 00000 n 0000110787 00000 n 0000110897 00000 n 0000112476 00000 n 0000112586 00000 n 0000114870 00000 n 0000114980 00000 n 0000116732 00000 n 0000116842 00000 n 0000118927 00000 n 0000119037 00000 n 0000120547 00000 n 0000120657 00000 n 0000121757 00000 n 0000121867 00000 n 0000124448 00000 n 0000124558 00000 n 0000126820 00000 n 0000126930 00000 n 0000127781 00000 n 0000127891 00000 n 0000129048 00000 n 0000129158 00000 n 0000130810 00000 n 0000130920 00000 n 0000131978 00000 n 0000132088 00000 n 0000133524 00000 n 0000133634 00000 n 0000135115 00000 n 0000135225 00000 n 0000137140 00000 n 0000137250 00000 n 0000139051 00000 n 0000139161 00000 n 0000140391 00000 n 0000140501 00000 n 0000141546 00000 n 0000141656 00000 n 0000143188 00000 n 0000143298 00000 n 0000144604 00000 n 0000144714 00000 n 0000146111 00000 n 0000146221 00000 n 0000147667 00000 n 0000147777 00000 n 0000148919 00000 n 0000149029 00000 n 0000150328 00000 n 0000150438 00000 n 0000151827 00000 n 0000151937 00000 n 0000152995 00000 n 0000153105 00000 n 0000154199 00000 n 0000154309 00000 n 0000156001 00000 n 0000156111 00000 n 0000158575 00000 n 0000158685 00000 n 0000160512 00000 n 0000160622 00000 n 0000161968 00000 n 0000162078 00000 n 0000163613 00000 n 0000163723 00000 n 0000165354 00000 n 0000165464 00000 n 0000166890 00000 n 0000167000 00000 n 0000168101 00000 n 0000168211 00000 n 0000169416 00000 n 0000169526 00000 n 0000171076 00000 n 0000171186 00000 n 0000172522 00000 n 0000172632 00000 n 0000174029 00000 n 0000174139 00000 n 0000175958 00000 n 0000176068 00000 n 0000177613 00000 n 0000177723 00000 n 0000179165 00000 n 0000179275 00000 n 0000180790 00000 n 0000180900 00000 n 0000182326 00000 n 0000182436 00000 n 0000183748 00000 n 0000183858 00000 n 0000185060 00000 n 0000185170 00000 n 0000186679 00000 n 0000186789 00000 n 0000188058 00000 n 0000188168 00000 n 0000189924 00000 n 0000190050 00000 n 0000190071 00000 n 0000191823 00000 n 0000191949 00000 n 0000191970 00000 n 0000193757 00000 n 0000193883 00000 n 0000193904 00000 n 0000194338 00000 n 0000194464 00000 n 0000234851 00000 n 0000234905 00000 n 0000194485 00000 n 0000234971 00000 n 0000194739 00000 n 0000194940 00000 n 0000195176 00000 n 0000195455 00000 n 0000195683 00000 n 0000195834 00000 n 0000195982 00000 n 0000196136 00000 n 0000196307 00000 n 0000196455 00000 n 0000196588 00000 n 0000196854 00000 n 0000196981 00000 n 0000197111 00000 n 0000197247 00000 n 0000197371 00000 n 0000197495 00000 n 0000197625 00000 n 0000197755 00000 n 0000197903 00000 n 0000198033 00000 n 0000198216 00000 n 0000198370 00000 n 0000198518 00000 n 0000198654 00000 n 0000198828 00000 n 0000199071 00000 n 0000199195 00000 n 0000199398 00000 n 0000199513 00000 n 0000235037 00000 n 0000199791 00000 n 0000235106 00000 n 0000199959 00000 n 0000235175 00000 n 0000200101 00000 n 0000235244 00000 n 0000200232 00000 n 0000235312 00000 n 0000200380 00000 n 0000200502 00000 n 0000235381 00000 n 0000200674 00000 n 0000235450 00000 n 0000200778 00000 n 0000200906 00000 n 0000201036 00000 n 0000201184 00000 n 0000201320 00000 n 0000201450 00000 n 0000201710 00000 n 0000201929 00000 n 0000202130 00000 n 0000202283 00000 n 0000202413 00000 n 0000202543 00000 n 0000202667 00000 n 0000202871 00000 n 0000203080 00000 n 0000203323 00000 n 0000235517 00000 n 0000203521 00000 n 0000235586 00000 n 0000203670 00000 n 0000235655 00000 n 0000203831 00000 n 0000235724 00000 n 0000203992 00000 n 0000235793 00000 n 0000204135 00000 n 0000235860 00000 n 0000204301 00000 n 0000235929 00000 n 0000204515 00000 n 0000235998 00000 n 0000204705 00000 n 0000236067 00000 n 0000204889 00000 n 0000236135 00000 n 0000205091 00000 n 0000205296 00000 n 0000205498 00000 n 0000205647 00000 n 0000205778 00000 n 0000205965 00000 n 0000206144 00000 n 0000206302 00000 n 0000206480 00000 n 0000206643 00000 n 0000206780 00000 n 0000206977 00000 n 0000236204 00000 n 0000207224 00000 n 0000236272 00000 n 0000207417 00000 n 0000207756 00000 n 0000207940 00000 n 0000208252 00000 n 0000208436 00000 n 0000208605 00000 n 0000208790 00000 n 0000236340 00000 n 0000209019 00000 n 0000236408 00000 n 0000209200 00000 n 0000209381 00000 n 0000209571 00000 n 0000209738 00000 n 0000209890 00000 n 0000210051 00000 n 0000210335 00000 n 0000210475 00000 n 0000210648 00000 n 0000210853 00000 n 0000211038 00000 n 0000211186 00000 n 0000236476 00000 n 0000211418 00000 n 0000211696 00000 n 0000211857 00000 n 0000212067 00000 n 0000212177 00000 n 0000212302 00000 n 0000212451 00000 n 0000212600 00000 n 0000212725 00000 n 0000212850 00000 n 0000212975 00000 n 0000213100 00000 n 0000213243 00000 n 0000213368 00000 n 0000213511 00000 n 0000213636 00000 n 0000213767 00000 n 0000213910 00000 n 0000214047 00000 n 0000214202 00000 n 0000214363 00000 n 0000214509 00000 n 0000214744 00000 n 0000214913 00000 n 0000236545 00000 n 0000215143 00000 n 0000236614 00000 n 0000215271 00000 n 0000236683 00000 n 0000215402 00000 n 0000236752 00000 n 0000215527 00000 n 0000236819 00000 n 0000215664 00000 n 0000236888 00000 n 0000215795 00000 n 0000236955 00000 n 0000215926 00000 n 0000237023 00000 n 0000216075 00000 n 0000237090 00000 n 0000216206 00000 n 0000237159 00000 n 0000216390 00000 n 0000237226 00000 n 0000216545 00000 n 0000237295 00000 n 0000216682 00000 n 0000216851 00000 n 0000217166 00000 n 0000217353 00000 n 0000217496 00000 n 0000217789 00000 n 0000218108 00000 n 0000218310 00000 n 0000218536 00000 n 0000218732 00000 n 0000218895 00000 n 0000219088 00000 n 0000219319 00000 n 0000219526 00000 n 0000219733 00000 n 0000219945 00000 n 0000220223 00000 n 0000220472 00000 n 0000220679 00000 n 0000221143 00000 n 0000221318 00000 n 0000221602 00000 n 0000221777 00000 n 0000221926 00000 n 0000222122 00000 n 0000222388 00000 n 0000222519 00000 n 0000222739 00000 n 0000222971 00000 n 0000223184 00000 n 0000223359 00000 n 0000223475 00000 n 0000223588 00000 n 0000223697 00000 n 0000223813 00000 n 0000223924 00000 n 0000224038 00000 n 0000224145 00000 n 0000224257 00000 n trailer << /Size 721 /Root 2 0 R /Info 4 0 R >> startxref 237364 %%EOF openttd-1.3.3/src/3rdparty/md5/0000755000000000000000000000000012246102757014723 5ustar rootrootopenttd-1.3.3/src/3rdparty/md5/md5.cpp0000644000000000000000000002600312246102603016103 0ustar rootroot/* $Id: md5.cpp 17883 2009-10-26 23:03:03Z smatz $ */ /** @file md5.cpp Creating MD5 checksums of files. */ /* Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. L. Peter Deutsch ghost@aladdin.com */ /* Independent implementation of MD5 (RFC 1321). This code implements the MD5 Algorithm defined in RFC 1321, whose text is available at http://www.ietf.org/rfc/rfc1321.txt The code is derived from the text of the RFC, including the test suite (section A.5) but excluding the rest of Appendix A. It does not include any code or documentation that is identified in the RFC as being copyrighted. The original and principal author of md5.c is L. Peter Deutsch . Other authors are noted in the change history that follows (in reverse chronological order): 2007-12-24 Changed to C++ and adapted to OpenTTD source 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order either statically or dynamically; added missing #include in library. 2002-03-11 lpd Corrected argument list for main(), and added int return type, in test program and T value program. 2002-02-21 lpd Added missing #include in test program. 2000-07-03 lpd Patched to eliminate warnings about "constant is unsigned in ANSI C, signed in traditional"; made test program self-checking. 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). 1999-05-03 lpd Original version. */ #include "../../stdafx.h" #include "../../core/endian_func.hpp" #include "md5.h" #define T_MASK ((uint32)~0) #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) #define T3 0x242070db #define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) #define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) #define T6 0x4787c62a #define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) #define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) #define T9 0x698098d8 #define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) #define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) #define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) #define T13 0x6b901122 #define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) #define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) #define T16 0x49b40821 #define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) #define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) #define T19 0x265e5a51 #define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) #define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) #define T22 0x02441453 #define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) #define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) #define T25 0x21e1cde6 #define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) #define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) #define T28 0x455a14ed #define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) #define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) #define T31 0x676f02d9 #define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) #define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) #define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) #define T35 0x6d9d6122 #define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) #define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) #define T38 0x4bdecfa9 #define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) #define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) #define T41 0x289b7ec6 #define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) #define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) #define T44 0x04881d05 #define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) #define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) #define T47 0x1fa27cf8 #define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) #define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) #define T50 0x432aff97 #define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) #define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) #define T53 0x655b59c3 #define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) #define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) #define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) #define T57 0x6fa87e4f #define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) #define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) #define T60 0x4e0811a1 #define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) #define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) #define T63 0x2ad7d2bb #define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) static inline void Md5Set1(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) { uint32 t = (*b & *c) | (~*b & *d); t += *a + X[k] + Ti; *a = ROL(t, s) + *b; } static inline void Md5Set2(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) { uint32 t = (*b & *d) | (*c & ~*d); t += *a + X[k] + Ti; *a = ROL(t, s) + *b; } static inline void Md5Set3(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) { uint32 t = *b ^ *c ^ *d; t += *a + X[k] + Ti; *a = ROL(t, s) + *b; } static inline void Md5Set4(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) { uint32 t = *c ^ (*b | ~*d); t += *a + X[k] + Ti; *a = ROL(t, s) + *b; } Md5::Md5() { count[0] = 0; count[1] = 0; abcd[0] = 0x67452301; abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; abcd[3] = 0x10325476; } void Md5::Process(const uint8 *data /*[64]*/) { uint32 a = this->abcd[0]; uint32 b = this->abcd[1]; uint32 c = this->abcd[2]; uint32 d = this->abcd[3]; uint32 X[16]; /* Convert the uint8 data to uint32 LE */ const uint32 *px = (const uint32 *)data; for (uint i = 0; i < 16; i++) { X[i] = TO_LE32(*px); px++; } /* Round 1. */ Md5Set1(X, &a, &b, &c, &d, 0, 7, T1); Md5Set1(X, &d, &a, &b, &c, 1, 12, T2); Md5Set1(X, &c, &d, &a, &b, 2, 17, T3); Md5Set1(X, &b, &c, &d, &a, 3, 22, T4); Md5Set1(X, &a, &b, &c, &d, 4, 7, T5); Md5Set1(X, &d, &a, &b, &c, 5, 12, T6); Md5Set1(X, &c, &d, &a, &b, 6, 17, T7); Md5Set1(X, &b, &c, &d, &a, 7, 22, T8); Md5Set1(X, &a, &b, &c, &d, 8, 7, T9); Md5Set1(X, &d, &a, &b, &c, 9, 12, T10); Md5Set1(X, &c, &d, &a, &b, 10, 17, T11); Md5Set1(X, &b, &c, &d, &a, 11, 22, T12); Md5Set1(X, &a, &b, &c, &d, 12, 7, T13); Md5Set1(X, &d, &a, &b, &c, 13, 12, T14); Md5Set1(X, &c, &d, &a, &b, 14, 17, T15); Md5Set1(X, &b, &c, &d, &a, 15, 22, T16); /* Round 2. */ Md5Set2(X, &a, &b, &c, &d, 1, 5, T17); Md5Set2(X, &d, &a, &b, &c, 6, 9, T18); Md5Set2(X, &c, &d, &a, &b, 11, 14, T19); Md5Set2(X, &b, &c, &d, &a, 0, 20, T20); Md5Set2(X, &a, &b, &c, &d, 5, 5, T21); Md5Set2(X, &d, &a, &b, &c, 10, 9, T22); Md5Set2(X, &c, &d, &a, &b, 15, 14, T23); Md5Set2(X, &b, &c, &d, &a, 4, 20, T24); Md5Set2(X, &a, &b, &c, &d, 9, 5, T25); Md5Set2(X, &d, &a, &b, &c, 14, 9, T26); Md5Set2(X, &c, &d, &a, &b, 3, 14, T27); Md5Set2(X, &b, &c, &d, &a, 8, 20, T28); Md5Set2(X, &a, &b, &c, &d, 13, 5, T29); Md5Set2(X, &d, &a, &b, &c, 2, 9, T30); Md5Set2(X, &c, &d, &a, &b, 7, 14, T31); Md5Set2(X, &b, &c, &d, &a, 12, 20, T32); /* Round 3. */ Md5Set3(X, &a, &b, &c, &d, 5, 4, T33); Md5Set3(X, &d, &a, &b, &c, 8, 11, T34); Md5Set3(X, &c, &d, &a, &b, 11, 16, T35); Md5Set3(X, &b, &c, &d, &a, 14, 23, T36); Md5Set3(X, &a, &b, &c, &d, 1, 4, T37); Md5Set3(X, &d, &a, &b, &c, 4, 11, T38); Md5Set3(X, &c, &d, &a, &b, 7, 16, T39); Md5Set3(X, &b, &c, &d, &a, 10, 23, T40); Md5Set3(X, &a, &b, &c, &d, 13, 4, T41); Md5Set3(X, &d, &a, &b, &c, 0, 11, T42); Md5Set3(X, &c, &d, &a, &b, 3, 16, T43); Md5Set3(X, &b, &c, &d, &a, 6, 23, T44); Md5Set3(X, &a, &b, &c, &d, 9, 4, T45); Md5Set3(X, &d, &a, &b, &c, 12, 11, T46); Md5Set3(X, &c, &d, &a, &b, 15, 16, T47); Md5Set3(X, &b, &c, &d, &a, 2, 23, T48); /* Round 4. */ Md5Set4(X, &a, &b, &c, &d, 0, 6, T49); Md5Set4(X, &d, &a, &b, &c, 7, 10, T50); Md5Set4(X, &c, &d, &a, &b, 14, 15, T51); Md5Set4(X, &b, &c, &d, &a, 5, 21, T52); Md5Set4(X, &a, &b, &c, &d, 12, 6, T53); Md5Set4(X, &d, &a, &b, &c, 3, 10, T54); Md5Set4(X, &c, &d, &a, &b, 10, 15, T55); Md5Set4(X, &b, &c, &d, &a, 1, 21, T56); Md5Set4(X, &a, &b, &c, &d, 8, 6, T57); Md5Set4(X, &d, &a, &b, &c, 15, 10, T58); Md5Set4(X, &c, &d, &a, &b, 6, 15, T59); Md5Set4(X, &b, &c, &d, &a, 13, 21, T60); Md5Set4(X, &a, &b, &c, &d, 4, 6, T61); Md5Set4(X, &d, &a, &b, &c, 11, 10, T62); Md5Set4(X, &c, &d, &a, &b, 2, 15, T63); Md5Set4(X, &b, &c, &d, &a, 9, 21, T64); /* Then perform the following additions. (That is increment each * of the four registers by the value it had before this block * was started.) */ this->abcd[0] += a; this->abcd[1] += b; this->abcd[2] += c; this->abcd[3] += d; } void Md5::Append(const void *data, const size_t nbytes) { const uint8 *p = (const uint8 *)data; size_t left = nbytes; const size_t offset = (this->count[0] >> 3) & 63; const uint32 nbits = (uint32)(nbytes << 3); if (nbytes <= 0) return; /* Update the message length. */ this->count[1] += (uint32)(nbytes >> 29); this->count[0] += nbits; if (this->count[0] < nbits) this->count[1]++; /* Process an initial partial block. */ if (offset) { size_t copy = (offset + nbytes > 64 ? 64 - offset : nbytes); memcpy(this->buf + offset, p, copy); if (offset + copy < 64) return; p += copy; left -= copy; this->Process(this->buf); } /* Process full blocks. */ for (; left >= 64; p += 64, left -= 64) this->Process(p); /* Process a final partial block. */ if (left) memcpy(this->buf, p, left); } void Md5::Finish(uint8 digest[16]) { static const uint8 pad[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; uint8 data[8]; /* Save the length before padding. */ for (uint i = 0; i < 8; ++i) { data[i] = (uint8)(this->count[i >> 2] >> ((i & 3) << 3)); } /* Pad to 56 bytes mod 64. */ this->Append(pad, ((55 - (this->count[0] >> 3)) & 63) + 1); /* Append the length. */ this->Append(data, 8); for (uint i = 0; i < 16; ++i) { digest[i] = (uint8)(this->abcd[i >> 2] >> ((i & 3) << 3)); } } openttd-1.3.3/src/3rdparty/md5/md5.h0000644000000000000000000000505312246102603015552 0ustar rootroot/* $Id: md5.h 17883 2009-10-26 23:03:03Z smatz $ */ /** @file md5.h Functions to create MD5 checksums. */ /* Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. L. Peter Deutsch ghost@aladdin.com */ /* Independent implementation of MD5 (RFC 1321). This code implements the MD5 Algorithm defined in RFC 1321, whose text is available at http://www.ietf.org/rfc/rfc1321.txt The code is derived from the text of the RFC, including the test suite (section A.5) but excluding the rest of Appendix A. It does not include any code or documentation that is identified in the RFC as being copyrighted. The original and principal author of md5.h is L. Peter Deutsch . Other authors are noted in the change history that follows (in reverse chronological order): 2007-12-24 Changed to C++ and adapted to OpenTTD source 2002-04-13 lpd Removed support for non-ANSI compilers; removed references to Ghostscript; clarified derivation from RFC 1321; now handles byte order either statically or dynamically. 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); added conditionalization for C++ compilation from Martin Purschke . 1999-05-03 lpd Original version. */ #ifndef MD5_INCLUDED #define MD5_INCLUDED struct Md5 { private: uint32 count[2]; ///< message length in bits, lsw first uint32 abcd[4]; ///< digest buffer uint8 buf[64]; ///< accumulate block void Process(const uint8 *data); public: Md5(); void Append(const void *data, const size_t nbytes); void Finish(uint8 digest[16]); }; #endif /* MD5_INCLUDED */ openttd-1.3.3/src/3rdparty/README.licensing0000644000000000000000000000030212246102604017052 0ustar rootrootThe files in this directory are not licensed under the same terms as the rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt and in this directory or subdirectories as well. openttd-1.3.3/src/train.h0000644000000000000000000002533412246102610013747 0ustar rootroot/* $Id: train.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file train.h Base for the train class. */ #ifndef TRAIN_H #define TRAIN_H #include "newgrf_engine.h" #include "cargotype.h" #include "rail.h" #include "engine_base.h" #include "rail_map.h" #include "ground_vehicle.hpp" struct Train; /** Rail vehicle flags. */ enum VehicleRailFlags { VRF_REVERSING = 0, VRF_POWEREDWAGON = 3, ///< Wagon is powered. VRF_REVERSE_DIRECTION = 4, ///< Reverse the visible direction of the vehicle. VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL = 6, ///< Electric train engine is allowed to run on normal rail. */ VRF_TOGGLE_REVERSE = 7, ///< Used for vehicle var 0xFE bit 8 (toggled each time the train is reversed, accurate for first vehicle only). VRF_TRAIN_STUCK = 8, ///< Train can't get a path reservation. VRF_LEAVING_STATION = 9, ///< Train is just leaving a station. }; /** Modes for ignoring signals. */ enum TrainForceProceeding { TFP_NONE = 0, ///< Normal operation. TFP_STUCK = 1, ///< Proceed till next signal, but ignore being stuck till then. This includes force leaving depots. TFP_SIGNAL = 2, ///< Ignore next signal, after the signal ignore being stuck. }; typedef SimpleTinyEnumT TrainForceProceedingByte; byte FreightWagonMult(CargoID cargo); void CheckTrainsLengths(); void FreeTrainTrackReservation(const Train *v, TileIndex origin = INVALID_TILE, Trackdir orig_td = INVALID_TRACKDIR); bool TryPathReserve(Train *v, bool mark_as_stuck = false, bool first_tile_okay = false); int GetTrainStopLocation(StationID station_id, TileIndex tile, const Train *v, int *station_ahead, int *station_length); void GetTrainSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type); /** Variables that are cached to improve performance and such */ struct TrainCache { /* Cached wagon override spritegroup */ const struct SpriteGroup *cached_override; /* cached values, recalculated on load and each time a vehicle is added to/removed from the consist. */ bool cached_tilt; ///< train can tilt; feature provides a bonus in curves byte user_def_data; ///< Cached property 0x25. Can be set by Callback 0x36. /* cached max. speed / acceleration data */ int cached_max_curve_speed; ///< max consist speed limited by curves }; /** * 'Train' is either a loco or a wagon. */ struct Train FINAL : public GroundVehicle { TrainCache tcache; /* Link between the two ends of a multiheaded engine */ Train *other_multiheaded_part; uint16 crash_anim_pos; ///< Crash animation counter. uint16 flags; TrackBitsByte track; TrainForceProceedingByte force_proceed; RailTypeByte railtype; RailTypes compatible_railtypes; /** Ticks waiting in front of a signal, ticks being stuck or a counter for forced proceeding through signals. */ uint16 wait_counter; /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ Train() : GroundVehicleBase() {} /** We want to 'destruct' the right class. */ virtual ~Train() { this->PreDestructor(); } friend struct GroundVehicle; // GroundVehicle needs to use the acceleration functions defined at Train. void MarkDirty(); void UpdateDeltaXY(Direction direction); ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_TRAIN_INC : EXPENSES_TRAIN_RUN; } void PlayLeaveStationSound() const; bool IsPrimaryVehicle() const { return this->IsFrontEngine(); } SpriteID GetImage(Direction direction, EngineImageType image_type) const; int GetDisplaySpeed() const { return this->gcache.last_speed; } int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed; } Money GetRunningCost() const; int GetDisplayImageWidth(Point *offset = NULL) const; bool IsInDepot() const { return this->track == TRACK_BIT_DEPOT; } bool Tick(); void OnNewDay(); uint Crash(bool flooded = false); Trackdir GetVehicleTrackdir() const; TileIndex GetOrderStationLocation(StationID station); bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse); void ReserveTrackUnderConsist() const; int GetCurveSpeedLimit() const; void ConsistChanged(bool same_length); int UpdateSpeed(); void UpdateAcceleration(); int GetCurrentMaxSpeed() const; /** * Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. * @return Next vehicle in the consist. */ inline Train *GetNextUnit() const { Train *v = this->GetNextVehicle(); if (v != NULL && v->IsRearDualheaded()) v = v->GetNextVehicle(); return v; } /** * Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. * @return Previous vehicle in the consist. */ inline Train *GetPrevUnit() { Train *v = this->GetPrevVehicle(); if (v != NULL && v->IsRearDualheaded()) v = v->GetPrevVehicle(); return v; } /** * Calculate the offset from this vehicle's center to the following center taking the vehicle lengths into account. * @return Offset from center to center. */ int CalcNextVehicleOffset() const { /* For vehicles with odd lengths the part before the center will be one unit * longer than the part after the center. This means we have to round up the * length of the next vehicle but may not round the length of the current * vehicle. */ return this->gcache.cached_veh_length / 2 + (this->Next() != NULL ? this->Next()->gcache.cached_veh_length + 1 : 0) / 2; } protected: // These functions should not be called outside acceleration code. /** * Allows to know the power value that this vehicle will use. * @return Power value from the engine in HP, or zero if the vehicle is not powered. */ inline uint16 GetPower() const { /* Power is not added for articulated parts */ if (!this->IsArticulatedPart() && HasPowerOnRail(this->railtype, GetRailType(this->tile))) { uint16 power = GetVehicleProperty(this, PROP_TRAIN_POWER, RailVehInfo(this->engine_type)->power); /* Halve power for multiheaded parts */ if (this->IsMultiheaded()) power /= 2; return power; } return 0; } /** * Returns a value if this articulated part is powered. * @return Power value from the articulated part in HP, or zero if it is not powered. */ inline uint16 GetPoweredPartPower(const Train *head) const { /* For powered wagons the engine defines the type of engine (i.e. railtype) */ if (HasBit(this->flags, VRF_POWEREDWAGON) && HasPowerOnRail(head->railtype, GetRailType(this->tile))) { return RailVehInfo(this->gcache.first_engine)->pow_wag_power; } return 0; } /** * Allows to know the weight value that this vehicle will use. * @return Weight value from the engine in tonnes. */ inline uint16 GetWeight() const { uint16 weight = (CargoSpec::Get(this->cargo_type)->weight * this->cargo.Count() * FreightWagonMult(this->cargo_type)) / 16; /* Vehicle weight is not added for articulated parts. */ if (!this->IsArticulatedPart()) { weight += GetVehicleProperty(this, PROP_TRAIN_WEIGHT, RailVehInfo(this->engine_type)->weight); } /* Powered wagons have extra weight added. */ if (HasBit(this->flags, VRF_POWEREDWAGON)) { weight += RailVehInfo(this->gcache.first_engine)->pow_wag_weight; } return weight; } /** * Allows to know the tractive effort value that this vehicle will use. * @return Tractive effort value from the engine. */ inline byte GetTractiveEffort() const { return GetVehicleProperty(this, PROP_TRAIN_TRACTIVE_EFFORT, RailVehInfo(this->engine_type)->tractive_effort); } /** * Gets the area used for calculating air drag. * @return Area of the engine in m^2. */ inline byte GetAirDragArea() const { /* Air drag is higher in tunnels due to the limited cross-section. */ return (this->track == TRACK_BIT_WORMHOLE && this->vehstatus & VS_HIDDEN) ? 28 : 14; } /** * Gets the air drag coefficient of this vehicle. * @return Air drag value from the engine. */ inline byte GetAirDrag() const { return RailVehInfo(this->engine_type)->air_drag; } /** * Checks the current acceleration status of this vehicle. * @return Acceleration status. */ inline AccelStatus GetAccelerationStatus() const { return (this->vehstatus & VS_STOPPED) || HasBit(this->flags, VRF_REVERSING) || HasBit(this->flags, VRF_TRAIN_STUCK) ? AS_BRAKE : AS_ACCEL; } /** * Calculates the current speed of this vehicle. * @return Current speed in km/h-ish. */ inline uint16 GetCurrentSpeed() const { return this->cur_speed; } /** * Returns the rolling friction coefficient of this vehicle. * @return Rolling friction coefficient in [1e-4]. */ inline uint32 GetRollingFriction() const { /* Rolling friction for steel on steel is between 0.1% and 0.2%. * The friction coefficient increases with speed in a way that * it doubles at 512 km/h, triples at 1024 km/h and so on. */ return 15 * (512 + this->GetCurrentSpeed()) / 512; } /** * Allows to know the acceleration type of a vehicle. * @return Acceleration type of the vehicle. */ inline int GetAccelerationType() const { return GetRailTypeInfo(this->railtype)->acceleration_type; } /** * Returns the slope steepness used by this vehicle. * @return Slope steepness used by the vehicle. */ inline uint32 GetSlopeSteepness() const { return _settings_game.vehicle.train_slope_steepness; } /** * Gets the maximum speed allowed by the track for this vehicle. * @return Maximum speed allowed. */ inline uint16 GetMaxTrackSpeed() const { return GetRailTypeInfo(GetRailType(this->tile))->max_speed; } /** * Checks if the vehicle is at a tile that can be sloped. * @return True if the tile can be sloped. */ inline bool TileMayHaveSlopedTrack() const { /* Any track that isn't TRACK_BIT_X or TRACK_BIT_Y cannot be sloped. */ return this->track == TRACK_BIT_X || this->track == TRACK_BIT_Y; } /** * Trains can always use the faster algorithm because they * have always the same direction as the track under them. * @return false */ inline bool HasToUseGetSlopePixelZ() { return false; } }; #define FOR_ALL_TRAINS(var) FOR_ALL_VEHICLES_OF_TYPE(Train, var) #endif /* TRAIN_H */ openttd-1.3.3/src/string_type.h0000644000000000000000000000532512246102611015200 0ustar rootroot/* $Id: string_type.h 23940 2012-02-12 19:46:40Z smatz $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file string_type.h Types for strings. */ #ifndef STRING_TYPE_H #define STRING_TYPE_H #include "core/enum_type.hpp" /** A non-breaking space. */ #define NBSP "\xC2\xA0" /** A left-to-right marker, marks the next character as left-to-right. */ #define LRM "\xE2\x80\x8E" /** * Valid filter types for IsValidChar. */ enum CharSetFilter { CS_ALPHANUMERAL, ///< Both numeric and alphabetic and spaces and stuff CS_NUMERAL, ///< Only numeric ones CS_NUMERAL_SPACE, ///< Only numbers and spaces CS_ALPHA, ///< Only alphabetic values CS_HEXADECIMAL, ///< Only hexadecimal characters }; /** Type for wide characters, i.e. non-UTF8 encoded unicode characters. */ typedef uint32 WChar; /* The following are directional formatting codes used to get the LTR and RTL strings right: * http://www.unicode.org/unicode/reports/tr9/#Directional_Formatting_Codes */ static const WChar CHAR_TD_LRM = 0x200E; ///< The next character acts like a left-to-right character. static const WChar CHAR_TD_RLM = 0x200F; ///< The next character acts like a right-to-left character. static const WChar CHAR_TD_LRE = 0x202A; ///< The following text is embedded left-to-right. static const WChar CHAR_TD_RLE = 0x202B; ///< The following text is embedded right-to-left. static const WChar CHAR_TD_LRO = 0x202D; ///< Force the following characters to be treated as left-to-right characters. static const WChar CHAR_TD_RLO = 0x202E; ///< Force the following characters to be treated as right-to-left characters. static const WChar CHAR_TD_PDF = 0x202C; ///< Restore the text-direction state to before the last LRE, RLE, LRO or RLO. /** Settings for the string validation. */ enum StringValidationSettings { SVS_NONE = 0, ///< Allow nothing and replace nothing. SVS_REPLACE_WITH_QUESTION_MARK = 1 << 0, ///< Replace the unknown/bad bits with question marks. SVS_ALLOW_NEWLINE = 1 << 1, ///< Allow newlines. SVS_ALLOW_CONTROL_CODE = 1 << 2, ///< Allow the special control codes. }; DECLARE_ENUM_AS_BIT_SET(StringValidationSettings) #endif /* STRING_TYPE_H */ openttd-1.3.3/src/gfx_layout.cpp0000644000000000000000000006025612246102611015351 0ustar rootroot/* $Id: gfx_layout.cpp 26094 2013-11-24 19:57:23Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gfx_layout.cpp Handling of laying out text. */ #include "stdafx.h" #include "gfx_layout.h" #include "string_func.h" #include "strings_func.h" #include "debug.h" #include "table/control_codes.h" #ifdef WITH_ICU #include #endif /* WITH_ICU */ /** Cache of ParagraphLayout lines. */ Layouter::LineCache *Layouter::linecache; /** Cache of Font instances. */ Layouter::FontColourMap Layouter::fonts[FS_END]; /** * Construct a new font. * @param size The font size to use for this font. * @param colour The colour to draw this font in. */ Font::Font(FontSize size, TextColour colour) : fc(FontCache::Get(size)), colour(colour) { assert(size < FS_END); } #ifdef WITH_ICU /* Implementation details of LEFontInstance */ le_int32 Font::getUnitsPerEM() const { return this->fc->GetUnitsPerEM(); } le_int32 Font::getAscent() const { return this->fc->GetAscender(); } le_int32 Font::getDescent() const { return -this->fc->GetDescender(); } le_int32 Font::getLeading() const { return this->fc->GetHeight(); } float Font::getXPixelsPerEm() const { return (float)this->fc->GetHeight(); } float Font::getYPixelsPerEm() const { return (float)this->fc->GetHeight(); } float Font::getScaleFactorX() const { return 1.0f; } float Font::getScaleFactorY() const { return 1.0f; } const void *Font::getFontTable(LETag tableTag) const { size_t length; return this->getFontTable(tableTag, length); } const void *Font::getFontTable(LETag tableTag, size_t &length) const { return this->fc->GetFontTable(tableTag, length); } LEGlyphID Font::mapCharToGlyph(LEUnicode32 ch) const { if (IsTextDirectionChar(ch)) return 0; return this->fc->MapCharToGlyph(ch); } void Font::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const { advance.fX = glyph == 0xFFFF ? 0 : this->fc->GetGlyphWidth(glyph); advance.fY = 0; } le_bool Font::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const { return FALSE; } static size_t AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c) { /* Transform from UTF-32 to internal ICU format of UTF-16. */ int32 length = 0; UErrorCode err = U_ZERO_ERROR; u_strFromUTF32(buff, buffer_last - buff, &length, (UChar32*)&c, 1, &err); return length; } /** * Wrapper for doing layouts with ICU. */ class ICUParagraphLayout : public AutoDeleteSmallVector, public ParagraphLayouter { ParagraphLayout *p; ///< The actual ICU paragraph layout. public: /** Helper for GetLayouter, to get the right type. */ typedef UChar CharType; /** Helper for GetLayouter, to get whether the layouter supports RTL. */ static const bool SUPPORTS_RTL = true; /** Visual run contains data about the bit of text with the same font. */ class ICUVisualRun : public ParagraphLayouter::VisualRun { const ParagraphLayout::VisualRun *vr; ///< The actual ICU vr. public: ICUVisualRun(const ParagraphLayout::VisualRun *vr) : vr(vr) { } const Font *GetFont() const { return (const Font*)vr->getFont(); } int GetGlyphCount() const { return vr->getGlyphCount(); } const GlyphID *GetGlyphs() const { return vr->getGlyphs(); } const float *GetPositions() const { return vr->getPositions(); } int GetLeading() const { return vr->getLeading(); } const int *GetGlyphToCharMap() const { return vr->getGlyphToCharMap(); } }; /** A single line worth of VisualRuns. */ class ICULine : public AutoDeleteSmallVector, public ParagraphLayouter::Line { ParagraphLayout::Line *l; ///< The actual ICU line. public: ICULine(ParagraphLayout::Line *l) : l(l) { for (int i = 0; i < l->countRuns(); i++) { *this->Append() = new ICUVisualRun(l->getVisualRun(i)); } } ~ICULine() { delete l; } int GetLeading() const { return l->getLeading(); } int GetWidth() const { return l->getWidth(); } int CountRuns() const { return l->countRuns(); } const ParagraphLayouter::VisualRun *GetVisualRun(int run) const { return *this->Get(run); } int GetInternalCharLength(WChar c) const { /* ICU uses UTF-16 internally which means we need to account for surrogate pairs. */ return Utf8CharLen(c) < 4 ? 1 : 2; } }; ICUParagraphLayout(ParagraphLayout *p) : p(p) { } ~ICUParagraphLayout() { delete p; } void Reflow() { p->reflow(); } ParagraphLayouter::Line *NextLine(int max_width) { ParagraphLayout::Line *l = p->nextLine(max_width); return l == NULL ? NULL : new ICULine(l); } }; static ParagraphLayouter *GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping) { int32 length = buff_end - buff; if (length == 0) { /* ICU's ParagraphLayout cannot handle empty strings, so fake one. */ buff[0] = ' '; length = 1; fontMapping.End()[-1].first++; } /* Fill ICU's FontRuns with the right data. */ FontRuns runs(fontMapping.Length()); for (FontMap::iterator iter = fontMapping.Begin(); iter != fontMapping.End(); iter++) { runs.add(iter->second, iter->first); } LEErrorCode status = LE_NO_ERROR; /* ParagraphLayout does not copy "buff", so it must stay valid. * "runs" is copied according to the ICU source, but the documentation does not specify anything, so this might break somewhen. */ ParagraphLayout *p = new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status); if (status != LE_NO_ERROR) { delete p; return NULL; } return new ICUParagraphLayout(p); } #endif /* WITH_ICU */ /*** Paragraph layout ***/ /** * Class handling the splitting of a paragraph of text into lines and * visual runs. * * One constructs this class with the text that needs to be split into * lines. Then nextLine is called with the maximum width until NULL is * returned. Each nextLine call creates VisualRuns which contain the * length of text that are to be drawn with the same font. In other * words, the result of this class is a list of sub strings with their * font. The sub strings are then already fully laid out, and only * need actual drawing. * * The positions in a visual run are sequential pairs of X,Y of the * begin of each of the glyphs plus an extra pair to mark the end. * * @note This variant does not handle left-to-right properly. This * is supported in the one ParagraphLayout coming from ICU. */ class FallbackParagraphLayout : public ParagraphLayouter { public: /** Helper for GetLayouter, to get the right type. */ typedef WChar CharType; /** Helper for GetLayouter, to get whether the layouter supports RTL. */ static const bool SUPPORTS_RTL = false; /** Visual run contains data about the bit of text with the same font. */ class FallbackVisualRun : public ParagraphLayouter::VisualRun { Font *font; ///< The font used to layout these. GlyphID *glyphs; ///< The glyphs we're drawing. float *positions; ///< The positions of the glyphs. int *glyph_to_char; ///< The char index of the glyphs. int glyph_count; ///< The number of glyphs. public: FallbackVisualRun(Font *font, const WChar *chars, int glyph_count, int x); ~FallbackVisualRun(); const Font *GetFont() const; int GetGlyphCount() const; const GlyphID *GetGlyphs() const; const float *GetPositions() const; int GetLeading() const; const int *GetGlyphToCharMap() const; }; /** A single line worth of VisualRuns. */ class FallbackLine : public AutoDeleteSmallVector, public ParagraphLayouter::Line { public: int GetLeading() const; int GetWidth() const; int CountRuns() const; const ParagraphLayouter::VisualRun *GetVisualRun(int run) const; int GetInternalCharLength(WChar c) const { return 1; } }; const WChar *buffer_begin; ///< Begin of the buffer. const WChar *buffer; ///< The current location in the buffer. FontMap &runs; ///< The fonts we have to use for this paragraph. FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs); void Reflow(); const ParagraphLayouter::Line *NextLine(int max_width); }; /** * Create the visual run. * @param font The font to use for this run. * @param chars The characters to use for this run. * @param char_count The number of characters in this run. * @param x The initial x position for this run. */ FallbackParagraphLayout::FallbackVisualRun::FallbackVisualRun(Font *font, const WChar *chars, int char_count, int x) : font(font), glyph_count(char_count) { this->glyphs = MallocT(this->glyph_count); this->glyph_to_char = MallocT(this->glyph_count); /* Positions contains the location of the begin of each of the glyphs, and the end of the last one. */ this->positions = MallocT(this->glyph_count * 2 + 2); this->positions[0] = x; this->positions[1] = 0; for (int i = 0; i < this->glyph_count; i++) { this->glyphs[i] = font->fc->MapCharToGlyph(chars[i]); this->positions[2 * i + 2] = this->positions[2 * i] + font->fc->GetGlyphWidth(this->glyphs[i]); this->positions[2 * i + 3] = 0; this->glyph_to_char[i] = i; } } /** Free all data. */ FallbackParagraphLayout::FallbackVisualRun::~FallbackVisualRun() { free(this->positions); free(this->glyph_to_char); free(this->glyphs); } /** * Get the font associated with this run. * @return The font. */ const Font *FallbackParagraphLayout::FallbackVisualRun::GetFont() const { return this->font; } /** * Get the number of glyhps in this run. * @return The number of glyphs. */ int FallbackParagraphLayout::FallbackVisualRun::GetGlyphCount() const { return this->glyph_count; } /** * Get the glyhps of this run. * @return The glyphs. */ const GlyphID *FallbackParagraphLayout::FallbackVisualRun::GetGlyphs() const { return this->glyphs; } /** * Get the positions of this run. * @return The positions. */ const float *FallbackParagraphLayout::FallbackVisualRun::GetPositions() const { return this->positions; } /** * Get the glyph-to-character map for this visual run. * @return The glyph-to-character map. */ const int *FallbackParagraphLayout::FallbackVisualRun::GetGlyphToCharMap() const { return this->glyph_to_char; } /** * Get the height of this font. * @return The height of the font. */ int FallbackParagraphLayout::FallbackVisualRun::GetLeading() const { return this->GetFont()->fc->GetHeight(); } /** * Get the height of the line. * @return The maximum height of the line. */ int FallbackParagraphLayout::FallbackLine::GetLeading() const { int leading = 0; for (const FallbackVisualRun * const *run = this->Begin(); run != this->End(); run++) { leading = max(leading, (*run)->GetLeading()); } return leading; } /** * Get the width of this line. * @return The width of the line. */ int FallbackParagraphLayout::FallbackLine::GetWidth() const { if (this->Length() == 0) return 0; /* * The last X position of a run contains is the end of that run. * Since there is no left-to-right support, taking this value of * the last run gives us the end of the line and thus the width. */ const ParagraphLayouter::VisualRun *run = this->GetVisualRun(this->CountRuns() - 1); return (int)run->GetPositions()[run->GetGlyphCount() * 2]; } /** * Get the number of runs in this line. * @return The number of runs. */ int FallbackParagraphLayout::FallbackLine::CountRuns() const { return this->Length(); } /** * Get a specific visual run. * @return The visual run. */ const ParagraphLayouter::VisualRun *FallbackParagraphLayout::FallbackLine::GetVisualRun(int run) const { return *this->Get(run); } /** * Create a new paragraph layouter. * @param buffer The characters of the paragraph. * @param length The length of the paragraph. * @param runs The font mapping of this paragraph. */ FallbackParagraphLayout::FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs) : buffer_begin(buffer), buffer(buffer), runs(runs) { assert(runs.End()[-1].first == length); } /** * Reset the position to the start of the paragraph. */ void FallbackParagraphLayout::Reflow() { this->buffer = this->buffer_begin; } /** * Construct a new line with a maximum width. * @param max_width The maximum width of the string. * @return A Line, or NULL when at the end of the paragraph. */ const ParagraphLayouter::Line *FallbackParagraphLayout::NextLine(int max_width) { /* Simple idea: * - split a line at a newline character, or at a space where we can break a line. * - split for a visual run whenever a new line happens, or the font changes. */ if (this->buffer == NULL) return NULL; FallbackLine *l = new FallbackLine(); if (*this->buffer == '\0') { /* Only a newline. */ this->buffer = NULL; *l->Append() = new FallbackVisualRun(this->runs.Begin()->second, this->buffer, 0, 0); return l; } const WChar *begin = this->buffer; const WChar *last_space = NULL; const WChar *last_char = begin; int width = 0; int offset = this->buffer - this->buffer_begin; FontMap::iterator iter = this->runs.Begin(); while (iter->first <= offset) { iter++; assert(iter != this->runs.End()); } const FontCache *fc = iter->second->fc; const WChar *next_run = this->buffer_begin + iter->first; for (;;) { WChar c = *this->buffer; last_char = this->buffer; if (c == '\0') { this->buffer = NULL; break; } if (this->buffer == next_run) { int w = l->GetWidth(); *l->Append() = new FallbackVisualRun(iter->second, begin, this->buffer - begin, w); iter++; assert(iter != this->runs.End()); next_run = this->buffer_begin + iter->first; begin = this->buffer; last_space = NULL; } if (IsWhitespace(c)) last_space = this->buffer; if (IsPrintable(c) && !IsTextDirectionChar(c)) { int char_width = GetCharacterWidth(fc->GetSize(), c); width += char_width; if (width > max_width) { /* The string is longer than maximum width so we need to decide * what to do with it. */ if (width == char_width) { /* The character is wider than allowed width; don't know * what to do with this case... bail out! */ this->buffer = NULL; return l; } if (last_space == NULL) { /* No space has been found. Just terminate at our current * location. This usually happens for languages that do not * require spaces in strings, like Chinese, Japanese and * Korean. For other languages terminating mid-word might * not be the best, but terminating the whole string instead * of continuing the word at the next line is worse. */ last_char = this->buffer; } else { /* A space is found; perfect place to terminate */ this->buffer = last_space + 1; last_char = last_space; } break; } } this->buffer++; } if (l->Length() == 0 || last_char - begin != 0) { int w = l->GetWidth(); *l->Append() = new FallbackVisualRun(iter->second, begin, last_char - begin, w); } return l; } /** * Appand a wide character to the internal buffer. * @param buff The buffer to append to. * @param buffer_last The end of the buffer. * @param c The character to add. * @return The number of buffer spaces that were used. */ static size_t AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c) { *buff = c; return 1; } /** * Get the actual ParagraphLayout for the given buffer. * @param buff The begin of the buffer. * @param buff_end The location after the last element in the buffer. * @param fontMapping THe mapping of the fonts. * @return The ParagraphLayout instance. */ static FallbackParagraphLayout *GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping) { return new FallbackParagraphLayout(buff, buff_end - buff, fontMapping); } /** * Helper for getting a ParagraphLayouter of the given type. * * @note In case no ParagraphLayouter could be constructed, line.layout will be NULL. * @param line The cache item to store our layouter in. * @param str The string to create a layouter for. * @param state The state of the font and color. * @tparam T The type of layouter we want. */ template static inline void GetLayouter(Layouter::LineCacheItem &line, const char *&str, FontState &state) { if (line.buffer != NULL) free(line.buffer); typename T::CharType *buff_begin = MallocT(DRAW_STRING_BUFFER); const typename T::CharType *buffer_last = buff_begin + DRAW_STRING_BUFFER; typename T::CharType *buff = buff_begin; FontMap &fontMapping = line.runs; Font *f = Layouter::GetFont(state.fontsize, state.cur_colour); line.buffer = buff_begin; /* * Go through the whole string while adding Font instances to the font map * whenever the font changes, and convert the wide characters into a format * usable by ParagraphLayout. */ for (; buff < buffer_last;) { WChar c = Utf8Consume(const_cast(&str)); if (c == '\0' || c == '\n') { break; } else if (c >= SCC_BLUE && c <= SCC_BLACK) { state.SetColour((TextColour)(c - SCC_BLUE)); } else if (c == SCC_PREVIOUS_COLOUR) { // Revert to the previous colour. state.SetPreviousColour(); } else if (c == SCC_TINYFONT) { state.SetFontSize(FS_SMALL); } else if (c == SCC_BIGFONT) { state.SetFontSize(FS_LARGE); } else { /* Filter out text direction characters that shouldn't be drawn, and * will not be handled in the fallback non ICU case because they are * mostly needed for RTL languages which need more ICU support. */ if (!T::SUPPORTS_RTL && IsTextDirectionChar(c)) continue; buff += AppendToBuffer(buff, buffer_last, c); continue; } if (!fontMapping.Contains(buff - buff_begin)) { fontMapping.Insert(buff - buff_begin, f); } f = Layouter::GetFont(state.fontsize, state.cur_colour); } /* Better safe than sorry. */ *buff = '\0'; if (!fontMapping.Contains(buff - buff_begin)) { fontMapping.Insert(buff - buff_begin, f); } line.layout = GetParagraphLayout(buff_begin, buff, fontMapping); line.state_after = state; } /** * Create a new layouter. * @param str The string to create the layout for. * @param maxw The maximum width. * @param colour The colour of the font. * @param fontsize The size of font to use. */ Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsize) : string(str) { FontState state(colour, fontsize); WChar c = 0; do { /* Scan string for end of line */ const char *lineend = str; for (;;) { size_t len = Utf8Decode(&c, lineend); if (c == '\0' || c == '\n') break; lineend += len; } LineCacheItem& line = GetCachedParagraphLayout(str, lineend - str, state); if (line.layout != NULL) { /* Line is in cache */ str = lineend + 1; state = line.state_after; line.layout->Reflow(); } else { /* Line is new, layout it */ #ifdef WITH_ICU FontState old_state = state; const char *old_str = str; GetLayouter(line, str, state); if (line.layout == NULL) { static bool warned = false; if (!warned) { DEBUG(misc, 0, "ICU layouter bailed on the font. Falling back to the fallback layouter"); warned = true; } state = old_state; str = old_str; GetLayouter(line, str, state); } #else GetLayouter(line, str, state); #endif } /* Copy all lines into a local cache so we can reuse them later on more easily. */ const ParagraphLayouter::Line *l; while ((l = line.layout->NextLine(maxw)) != NULL) { *this->Append() = l; } } while (c != '\0'); } /** * Get the boundaries of this paragraph. * @return The boundaries. */ Dimension Layouter::GetBounds() { Dimension d = { 0, 0 }; for (const ParagraphLayouter::Line **l = this->Begin(); l != this->End(); l++) { d.width = max(d.width, (*l)->GetWidth()); d.height += (*l)->GetLeading(); } return d; } /** * Get the position of a character in the layout. * @param ch Character to get the position of. * @return Upper left corner of the character relative to the start of the string. * @note Will only work right for single-line strings. */ Point Layouter::GetCharPosition(const char *ch) const { /* Find the code point index which corresponds to the char * pointer into our UTF-8 source string. */ size_t index = 0; const char *str = this->string; while (str < ch) { WChar c; size_t len = Utf8Decode(&c, str); if (c == '\0' || c == '\n') break; str += len; index += (*this->Begin())->GetInternalCharLength(c); } if (str == ch) { /* Valid character. */ const ParagraphLayouter::Line *line = *this->Begin(); /* Pointer to the end-of-string/line marker? Return total line width. */ if (*ch == '\0' || *ch == '\n') { Point p = { line->GetWidth(), 0 }; return p; } /* Scan all runs until we've found our code point index. */ for (int run_index = 0; run_index < line->CountRuns(); run_index++) { const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); for (int i = 0; i < run->GetGlyphCount(); i++) { /* Matching glyph? Return position. */ if ((size_t)run->GetGlyphToCharMap()[i] == index) { Point p = { (int)run->GetPositions()[i * 2], (int)run->GetPositions()[i * 2 + 1] }; return p; } } } } Point p = { 0, 0 }; return p; } /** * Get the character that is at a position. * @param x Position in the string. * @return Pointer to the character at the position or NULL if no character is at the position. */ const char *Layouter::GetCharAtPosition(int x) const { const ParagraphLayouter::Line *line = *this->Begin();; for (int run_index = 0; run_index < line->CountRuns(); run_index++) { const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); for (int i = 0; i < run->GetGlyphCount(); i++) { /* Not a valid glyph (empty). */ if (run->GetGlyphs()[i] == 0xFFFF) continue; int begin_x = (int)run->GetPositions()[i * 2]; int end_x = (int)run->GetPositions()[i * 2 + 2]; if (IsInsideMM(x, begin_x, end_x)) { /* Found our glyph, now convert to UTF-8 string index. */ size_t index = run->GetGlyphToCharMap()[i]; size_t cur_idx = 0; for (const char *str = this->string; *str != '\0'; ) { if (cur_idx == index) return str; WChar c = Utf8Consume(&str); cur_idx += line->GetInternalCharLength(c); } } } } return NULL; } /** * Get a static font instance. */ Font *Layouter::GetFont(FontSize size, TextColour colour) { FontColourMap::iterator it = fonts[size].Find(colour); if (it != fonts[size].End()) return it->second; Font *f = new Font(size, colour); *fonts[size].Append() = FontColourMap::Pair(colour, f); return f; } /** * Reset cached font information. * @param size Font size to reset. */ void Layouter::ResetFontCache(FontSize size) { for (FontColourMap::iterator it = fonts[size].Begin(); it != fonts[size].End(); ++it) { delete it->second; } fonts[size].Clear(); /* We must reset the linecache since it references the just freed fonts */ ResetLineCache(); } /** * Get reference to cache item. * If the item does not exist yet, it is default constructed. * @param str Source string of the line (including colour and font size codes). * @param len Length of \a str in bytes (no termination). * @param state State of the font at the beginning of the line. * @return Reference to cache item. */ Layouter::LineCacheItem &Layouter::GetCachedParagraphLayout(const char *str, size_t len, const FontState &state) { if (linecache == NULL) { /* Create linecache on first access to avoid trouble with initialisation order of static variables. */ linecache = new LineCache(); } LineCacheKey key; key.state_before = state; key.str.assign(str, len); return (*linecache)[key]; } /** * Clear line cache. */ void Layouter::ResetLineCache() { if (linecache != NULL) linecache->clear(); } /** * Reduce the size of linecache if necessary to prevent infinite growth. */ void Layouter::ReduceLineCache() { if (linecache != NULL) { /* TODO LRU cache would be fancy, but not exactly necessary */ if (linecache->size() > 4096) ResetLineCache(); } } openttd-1.3.3/src/direction_type.h0000644000000000000000000001233112246102610015644 0ustar rootroot/* $Id: direction_type.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file direction_type.h Different types to 'show' directions. */ #ifndef DIRECTION_TYPE_H #define DIRECTION_TYPE_H #include "core/enum_type.hpp" /** * Defines the 8 directions on the map. * * This enum defines 8 possible directions which are used for * the vehicles in the game. The directions are aligned straight * to the viewport, not to the map. So north points to the top of * your viewport and not rotated by 45 degrees left or right to get * a "north" used in you games. */ enum Direction { DIR_BEGIN = 0, ///< Used to iterate DIR_N = 0, ///< North DIR_NE = 1, ///< Northeast DIR_E = 2, ///< East DIR_SE = 3, ///< Southeast DIR_S = 4, ///< South DIR_SW = 5, ///< Southwest DIR_W = 6, ///< West DIR_NW = 7, ///< Northwest DIR_END, ///< Used to iterate INVALID_DIR = 0xFF, ///< Flag for an invalid direction }; /** Allow incrementing of Direction variables */ DECLARE_POSTFIX_INCREMENT(Direction) /** Define basic enum properties */ template <> struct EnumPropsT : MakeEnumPropsT {}; typedef TinyEnumT DirectionByte; ///< typedefing-enumification of Direction /** * Enumeration for the difference between two directions. * * This enumeration is used to mark differences between * two directions. If you get one direction you can align * a second direction in 8 different ways. This enumeration * only contains 6 of these 8 differences, but the remaining * two can be calculated by adding to differences together. * This also means you can add two differences together and * get the difference you really want to get. The difference * of 45 degrees left + the difference of 45 degrees right results in the * difference of 0 degrees. * * @note To get this mentioned addition of direction you must use * modulo DIR_END or use the #ChangeDirDiff(DirDiff, DirDiff) function. * @see ChangeDirDiff(DirDiff, DirDiff) */ enum DirDiff { DIRDIFF_SAME = 0, ///< Both directions faces to the same direction DIRDIFF_45RIGHT = 1, ///< Angle of 45 degrees right DIRDIFF_90RIGHT = 2, ///< Angle of 90 degrees right DIRDIFF_REVERSE = 4, ///< One direction is the opposite of the other one DIRDIFF_90LEFT = 6, ///< Angle of 90 degrees left DIRDIFF_45LEFT = 7, ///< Angle of 45 degrees left }; /** * Enumeration for diagonal directions. * * This enumeration is used for the 4 direction of the tile-edges. */ enum DiagDirection { DIAGDIR_BEGIN = 0, ///< Used for iterations DIAGDIR_NE = 0, ///< Northeast, upper right on your monitor DIAGDIR_SE = 1, ///< Southeast DIAGDIR_SW = 2, ///< Southwest DIAGDIR_NW = 3, ///< Northwest DIAGDIR_END, ///< Used for iterations INVALID_DIAGDIR = 0xFF, ///< Flag for an invalid DiagDirection }; /** Allow incrementing of DiagDirection variables */ DECLARE_POSTFIX_INCREMENT(DiagDirection) /** Define basic enum properties */ template <> struct EnumPropsT : MakeEnumPropsT {}; typedef TinyEnumT DiagDirectionByte; ///< typedefing-enumification of DiagDirection /** * Enumeration for the difference between to DiagDirection. * * As the DiagDirection only contains 4 possible directions the * difference between two of these directions can only be in 4 ways. * As the DirDiff enumeration the values can be added together and * you will get the resulting difference (use modulo DIAGDIR_END). * * @see DirDiff */ enum DiagDirDiff { DIAGDIRDIFF_SAME = 0, ///< Same directions DIAGDIRDIFF_90RIGHT = 1, ///< 90 degrees right DIAGDIRDIFF_REVERSE = 2, ///< Reverse directions DIAGDIRDIFF_90LEFT = 3, ///< 90 degrees left }; /** Allow incrementing of DiagDirDiff variables */ DECLARE_POSTFIX_INCREMENT(DiagDirDiff) /** * Enumeration for the two axis X and Y * * This enumeration represents the two axis X and Y in the game. * The X axis is the one which goes align the north-west edge * (and south-east edge). The Y axis must be so the one which goes * align the north-east edge (and south-west) edge. */ enum Axis { AXIS_X = 0, ///< The X axis AXIS_Y = 1, ///< The y axis AXIS_END, ///< Used for iterations INVALID_AXIS = 0xFF, ///< Flag for an invalid Axis }; /** Helper information for extract tool. */ template <> struct EnumPropsT : MakeEnumPropsT {}; #endif /* DIRECTION_TYPE_H */ openttd-1.3.3/src/tree_cmd.cpp0000644000000000000000000006044712246102611014754 0ustar rootroot/* $Id: tree_cmd.cpp 24846 2012-12-23 21:09:09Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tree_cmd.cpp Handling of tree tiles. */ #include "stdafx.h" #include "clear_map.h" #include "landscape.h" #include "tree_map.h" #include "viewport_func.h" #include "command_func.h" #include "town.h" #include "genworld.h" #include "clear_func.h" #include "company_func.h" #include "sound_func.h" #include "water.h" #include "company_base.h" #include "core/random_func.hpp" #include "newgrf_generic.h" #include "table/strings.h" #include "table/tree_land.h" #include "table/clear_land.h" /** * List of tree placer algorithm. * * This enumeration defines all possible tree placer algorithm in the game. */ enum TreePlacer { TP_NONE, ///< No tree placer algorithm TP_ORIGINAL, ///< The original algorithm TP_IMPROVED, ///< A 'improved' algorithm }; /** Where to place trees while in-game? */ enum ExtraTreePlacement { ETP_NONE, ///< Place trees on no tiles ETP_RAINFOREST, ///< Place trees only on rainforest tiles ETP_ALL, ///< Place trees on all tiles }; /** Determines when to consider building more trees. */ byte _trees_tick_ctr; static const uint16 DEFAULT_TREE_STEPS = 1000; ///< Default number of attempts for placing trees. static const uint16 DEFAULT_RAINFOREST_TREE_STEPS = 15000; ///< Default number of attempts for placing extra trees at rainforest in tropic. static const uint16 EDITOR_TREE_DIV = 5; ///< Game editor tree generation divisor factor. /** * Tests if a tile can be converted to MP_TREES * This is true for clear ground without farms or rocks. * * @param tile the tile of interest * @param allow_desert Allow planting trees on CLEAR_DESERT? * @return true if trees can be built. */ static bool CanPlantTreesOnTile(TileIndex tile, bool allow_desert) { switch (GetTileType(tile)) { case MP_WATER: return !IsBridgeAbove(tile) && IsCoast(tile) && !IsSlopeWithOneCornerRaised(GetTileSlope(tile)); case MP_CLEAR: return !IsBridgeAbove(tile) && !IsClearGround(tile, CLEAR_FIELDS) && GetRawClearGround(tile) != CLEAR_ROCKS && (allow_desert || !IsClearGround(tile, CLEAR_DESERT)); default: return false; } } /** * Creates a tree tile * Ground type and density is preserved. * * @pre the tile must be suitable for trees. * * @param tile where to plant the trees. * @param treetype The type of the tree * @param count the number of trees (minus 1) * @param growth the growth status */ static void PlantTreesOnTile(TileIndex tile, TreeType treetype, uint count, uint growth) { assert(treetype != TREE_INVALID); assert(CanPlantTreesOnTile(tile, true)); TreeGround ground; uint density = 3; switch (GetTileType(tile)) { case MP_WATER: ground = TREE_GROUND_SHORE; break; case MP_CLEAR: switch (GetClearGround(tile)) { case CLEAR_GRASS: ground = TREE_GROUND_GRASS; break; case CLEAR_ROUGH: ground = TREE_GROUND_ROUGH; break; case CLEAR_SNOW: ground = GetRawClearGround(tile) == CLEAR_ROUGH ? TREE_GROUND_ROUGH_SNOW : TREE_GROUND_SNOW_DESERT; break; default: ground = TREE_GROUND_SNOW_DESERT; break; } if (GetClearGround(tile) != CLEAR_ROUGH) density = GetClearDensity(tile); break; default: NOT_REACHED(); } MakeTree(tile, treetype, count, growth, ground, density); } /** * Get a random TreeType for the given tile based on a given seed * * This function returns a random TreeType which can be placed on the given tile. * The seed for randomness must be less or equal 256, use #GB on the value of Random() * to get such a value. * * @param tile The tile to get a random TreeType from * @param seed The seed for randomness, must be less or equal 256 * @return The random tree type */ static TreeType GetRandomTreeType(TileIndex tile, uint seed) { switch (_settings_game.game_creation.landscape) { case LT_TEMPERATE: return (TreeType)(seed * TREE_COUNT_TEMPERATE / 256 + TREE_TEMPERATE); case LT_ARCTIC: return (TreeType)(seed * TREE_COUNT_SUB_ARCTIC / 256 + TREE_SUB_ARCTIC); case LT_TROPIC: switch (GetTropicZone(tile)) { case TROPICZONE_NORMAL: return (TreeType)(seed * TREE_COUNT_SUB_TROPICAL / 256 + TREE_SUB_TROPICAL); case TROPICZONE_DESERT: return (TreeType)((seed > 12) ? TREE_INVALID : TREE_CACTUS); default: return (TreeType)(seed * TREE_COUNT_RAINFOREST / 256 + TREE_RAINFOREST); } default: return (TreeType)(seed * TREE_COUNT_TOYLAND / 256 + TREE_TOYLAND); } } /** * Make a random tree tile of the given tile * * Create a new tree-tile for the given tile. The second parameter is used for * randomness like type and number of trees. * * @param tile The tile to make a tree-tile from * @param r The randomness value from a Random() value */ static void PlaceTree(TileIndex tile, uint32 r) { TreeType tree = GetRandomTreeType(tile, GB(r, 24, 8)); if (tree != TREE_INVALID) { PlantTreesOnTile(tile, tree, GB(r, 22, 2), min(GB(r, 16, 3), 6)); /* Rerandomize ground, if neither snow nor shore */ TreeGround ground = GetTreeGround(tile); if (ground != TREE_GROUND_SNOW_DESERT && ground != TREE_GROUND_ROUGH_SNOW && ground != TREE_GROUND_SHORE) { SetTreeGroundDensity(tile, (TreeGround)GB(r, 28, 1), 3); } /* Set the counter to a random start value */ SetTreeCounter(tile, (TreeGround)GB(r, 24, 4)); } } /** * Creates a number of tree groups. * The number of trees in each group depends on how many trees are actually placed around the given tile. * * @param num_groups Number of tree groups to place. */ static void PlaceTreeGroups(uint num_groups) { do { TileIndex center_tile = RandomTile(); for (uint i = 0; i < DEFAULT_TREE_STEPS; i++) { uint32 r = Random(); int x = GB(r, 0, 5) - 16; int y = GB(r, 8, 5) - 16; uint dist = abs(x) + abs(y); TileIndex cur_tile = TileAddWrap(center_tile, x, y); IncreaseGeneratingWorldProgress(GWP_TREE); if (cur_tile != INVALID_TILE && dist <= 13 && CanPlantTreesOnTile(cur_tile, true)) { PlaceTree(cur_tile, r); } } } while (--num_groups); } /** * Place a tree at the same height as an existing tree. * * Add a new tree around the given tile which is at the same * height or at some offset (2 units) of it. * * @param tile The base tile to add a new tree somewhere around * @param height The height (like the one from the tile) */ static void PlaceTreeAtSameHeight(TileIndex tile, int height) { for (uint i = 0; i < DEFAULT_TREE_STEPS; i++) { uint32 r = Random(); int x = GB(r, 0, 5) - 16; int y = GB(r, 8, 5) - 16; TileIndex cur_tile = TileAddWrap(tile, x, y); if (cur_tile == INVALID_TILE) continue; /* Keep in range of the existing tree */ if (abs(x) + abs(y) > 16) continue; /* Clear tile, no farm-tiles or rocks */ if (!CanPlantTreesOnTile(cur_tile, true)) continue; /* Not too much height difference */ if (Delta(GetTileZ(cur_tile), height) > 2) continue; /* Place one tree and quit */ PlaceTree(cur_tile, r); break; } } /** * Place some trees randomly * * This function just place some trees randomly on the map. */ void PlaceTreesRandomly() { int i, j, ht; i = ScaleByMapSize(DEFAULT_TREE_STEPS); if (_game_mode == GM_EDITOR) i /= EDITOR_TREE_DIV; do { uint32 r = Random(); TileIndex tile = RandomTileSeed(r); IncreaseGeneratingWorldProgress(GWP_TREE); if (CanPlantTreesOnTile(tile, true)) { PlaceTree(tile, r); if (_settings_game.game_creation.tree_placer != TP_IMPROVED) continue; /* Place a number of trees based on the tile height. * This gives a cool effect of multiple trees close together. * It is almost real life ;) */ ht = GetTileZ(tile); /* The higher we get, the more trees we plant */ j = GetTileZ(tile) * 2; /* Above snowline more trees! */ if (_settings_game.game_creation.landscape == LT_ARCTIC && ht > GetSnowLine()) j *= 3; while (j--) { PlaceTreeAtSameHeight(tile, ht); } } } while (--i); /* place extra trees at rainforest area */ if (_settings_game.game_creation.landscape == LT_TROPIC) { i = ScaleByMapSize(DEFAULT_RAINFOREST_TREE_STEPS); if (_game_mode == GM_EDITOR) i /= EDITOR_TREE_DIV; do { uint32 r = Random(); TileIndex tile = RandomTileSeed(r); IncreaseGeneratingWorldProgress(GWP_TREE); if (GetTropicZone(tile) == TROPICZONE_RAINFOREST && CanPlantTreesOnTile(tile, false)) { PlaceTree(tile, r); } } while (--i); } } /** * Place new trees. * * This function takes care of the selected tree placer algorithm and * place randomly the trees for a new game. */ void GenerateTrees() { uint i, total; if (_settings_game.game_creation.tree_placer == TP_NONE) return; switch (_settings_game.game_creation.tree_placer) { case TP_ORIGINAL: i = _settings_game.game_creation.landscape == LT_ARCTIC ? 15 : 6; break; case TP_IMPROVED: i = _settings_game.game_creation.landscape == LT_ARCTIC ? 4 : 2; break; default: NOT_REACHED(); } total = ScaleByMapSize(DEFAULT_TREE_STEPS); if (_settings_game.game_creation.landscape == LT_TROPIC) total += ScaleByMapSize(DEFAULT_RAINFOREST_TREE_STEPS); total *= i; uint num_groups = (_settings_game.game_creation.landscape != LT_TOYLAND) ? ScaleByMapSize(GB(Random(), 0, 5) + 25) : 0; total += num_groups * DEFAULT_TREE_STEPS; SetGeneratingWorldProgress(GWP_TREE, total); if (num_groups != 0) PlaceTreeGroups(num_groups); for (; i != 0; i--) { PlaceTreesRandomly(); } } /** * Plant a tree. * @param tile start tile of area-drag of tree plantation * @param flags type of operation * @param p1 tree type, TREE_INVALID means random. * @param p2 end tile of area-drag * @param text unused * @return the cost of this operation or an error */ CommandCost CmdPlantTree(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { StringID msg = INVALID_STRING_ID; CommandCost cost(EXPENSES_OTHER); const byte tree_to_plant = GB(p1, 0, 8); // We cannot use Extract as min and max are climate specific. if (p2 >= MapSize()) return CMD_ERROR; /* Check the tree type within the current climate */ if (tree_to_plant != TREE_INVALID && !IsInsideBS(tree_to_plant, _tree_base_by_landscape[_settings_game.game_creation.landscape], _tree_count_by_landscape[_settings_game.game_creation.landscape])) return CMD_ERROR; Company *c = (_game_mode != GM_EDITOR) ? Company::GetIfValid(_current_company) : NULL; int limit = (c == NULL ? INT32_MAX : GB(c->tree_limit, 16, 16)); TileArea ta(tile, p2); TILE_AREA_LOOP(tile, ta) { switch (GetTileType(tile)) { case MP_TREES: /* no more space for trees? */ if (_game_mode != GM_EDITOR && GetTreeCount(tile) == 4) { msg = STR_ERROR_TREE_ALREADY_HERE; continue; } /* Test tree limit. */ if (--limit < 1) { msg = STR_ERROR_TREE_PLANT_LIMIT_REACHED; break; } if (flags & DC_EXEC) { AddTreeCount(tile, 1); MarkTileDirtyByTile(tile); if (c != NULL) c->tree_limit -= 1 << 16; } /* 2x as expensive to add more trees to an existing tile */ cost.AddCost(_price[PR_BUILD_TREES] * 2); break; case MP_WATER: if (!IsCoast(tile) || IsSlopeWithOneCornerRaised(GetTileSlope(tile))) { msg = STR_ERROR_CAN_T_BUILD_ON_WATER; continue; } /* FALL THROUGH */ case MP_CLEAR: { if (IsBridgeAbove(tile)) { msg = STR_ERROR_SITE_UNSUITABLE; continue; } TreeType treetype = (TreeType)tree_to_plant; /* Be a bit picky about which trees go where. */ if (_settings_game.game_creation.landscape == LT_TROPIC && treetype != TREE_INVALID && ( /* No cacti outside the desert */ (treetype == TREE_CACTUS && GetTropicZone(tile) != TROPICZONE_DESERT) || /* No rain forest trees outside the rain forest, except in the editor mode where it makes those tiles rain forest tile */ (IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS) && GetTropicZone(tile) != TROPICZONE_RAINFOREST && _game_mode != GM_EDITOR) || /* And no subtropical trees in the desert/rain forest */ (IsInsideMM(treetype, TREE_SUB_TROPICAL, TREE_TOYLAND) && GetTropicZone(tile) != TROPICZONE_NORMAL))) { msg = STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE; continue; } /* Test tree limit. */ if (--limit < 1) { msg = STR_ERROR_TREE_PLANT_LIMIT_REACHED; break; } if (IsTileType(tile, MP_CLEAR)) { /* Remove fields or rocks. Note that the ground will get barrened */ switch (GetRawClearGround(tile)) { case CLEAR_FIELDS: case CLEAR_ROCKS: { CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; cost.AddCost(ret); break; } default: break; } } if (_game_mode != GM_EDITOR && Company::IsValidID(_current_company)) { Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority); if (t != NULL) ChangeTownRating(t, RATING_TREE_UP_STEP, RATING_TREE_MAXIMUM, flags); } if (flags & DC_EXEC) { if (treetype == TREE_INVALID) { treetype = GetRandomTreeType(tile, GB(Random(), 24, 8)); if (treetype == TREE_INVALID) treetype = TREE_CACTUS; } /* Plant full grown trees in scenario editor */ PlantTreesOnTile(tile, treetype, 0, _game_mode == GM_EDITOR ? 3 : 0); MarkTileDirtyByTile(tile); if (c != NULL) c->tree_limit -= 1 << 16; /* When planting rainforest-trees, set tropiczone to rainforest in editor. */ if (_game_mode == GM_EDITOR && IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS)) { SetTropicZone(tile, TROPICZONE_RAINFOREST); } } cost.AddCost(_price[PR_BUILD_TREES]); break; } default: msg = STR_ERROR_SITE_UNSUITABLE; break; } /* Tree limit used up? No need to check more. */ if (limit < 0) break; } if (cost.GetCost() == 0) { return_cmd_error(msg); } else { return cost; } } struct TreeListEnt : PalSpriteID { byte x, y; }; static void DrawTile_Trees(TileInfo *ti) { switch (GetTreeGround(ti->tile)) { case TREE_GROUND_SHORE: DrawShoreTile(ti->tileh); break; case TREE_GROUND_GRASS: DrawClearLandTile(ti, GetTreeDensity(ti->tile)); break; case TREE_GROUND_ROUGH: DrawHillyLandTile(ti); break; default: DrawGroundSprite(_clear_land_sprites_snow_desert[GetTreeDensity(ti->tile)] + SlopeToSpriteOffset(ti->tileh), PAL_NONE); break; } /* Do not draw trees when the invisible trees setting is set */ if (IsInvisibilitySet(TO_TREES)) return; uint tmp = CountBits(ti->tile + ti->x + ti->y); uint index = GB(tmp, 0, 2) + (GetTreeType(ti->tile) << 2); /* different tree styles above one of the grounds */ if ((GetTreeGround(ti->tile) == TREE_GROUND_SNOW_DESERT || GetTreeGround(ti->tile) == TREE_GROUND_ROUGH_SNOW) && GetTreeDensity(ti->tile) >= 2 && IsInsideMM(index, TREE_SUB_ARCTIC << 2, TREE_RAINFOREST << 2)) { index += 164 - (TREE_SUB_ARCTIC << 2); } assert(index < lengthof(_tree_layout_sprite)); const PalSpriteID *s = _tree_layout_sprite[index]; const TreePos *d = _tree_layout_xy[GB(tmp, 2, 2)]; /* combine trees into one sprite object */ StartSpriteCombine(); TreeListEnt te[4]; /* put the trees to draw in a list */ uint trees = GetTreeCount(ti->tile); for (uint i = 0; i < trees; i++) { SpriteID sprite = s[0].sprite + (i == trees - 1 ? GetTreeGrowth(ti->tile) : 3); PaletteID pal = s[0].pal; te[i].sprite = sprite; te[i].pal = pal; te[i].x = d->x; te[i].y = d->y; s++; d++; } /* draw them in a sorted way */ int z = ti->z + GetSlopeMaxPixelZ(ti->tileh) / 2; for (; trees > 0; trees--) { uint min = te[0].x + te[0].y; uint mi = 0; for (uint i = 1; i < trees; i++) { if ((uint)(te[i].x + te[i].y) < min) { min = te[i].x + te[i].y; mi = i; } } AddSortableSpriteToDraw(te[mi].sprite, te[mi].pal, ti->x + te[mi].x, ti->y + te[mi].y, 16 - te[mi].x, 16 - te[mi].y, 0x30, z, IsTransparencySet(TO_TREES), -te[mi].x, -te[mi].y); /* replace the removed one with the last one */ te[mi] = te[trees - 1]; } EndSpriteCombine(); } static int GetSlopePixelZ_Trees(TileIndex tile, uint x, uint y) { int z; Slope tileh = GetTilePixelSlope(tile, &z); return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh); } static Foundation GetFoundation_Trees(TileIndex tile, Slope tileh) { return FOUNDATION_NONE; } static CommandCost ClearTile_Trees(TileIndex tile, DoCommandFlag flags) { uint num; if (Company::IsValidID(_current_company)) { Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority); if (t != NULL) ChangeTownRating(t, RATING_TREE_DOWN_STEP, RATING_TREE_MINIMUM, flags); } num = GetTreeCount(tile); if (IsInsideMM(GetTreeType(tile), TREE_RAINFOREST, TREE_CACTUS)) num *= 4; if (flags & DC_EXEC) DoClearSquare(tile); return CommandCost(EXPENSES_CONSTRUCTION, num * _price[PR_CLEAR_TREES]); } static void GetTileDesc_Trees(TileIndex tile, TileDesc *td) { TreeType tt = GetTreeType(tile); if (IsInsideMM(tt, TREE_RAINFOREST, TREE_CACTUS)) { td->str = STR_LAI_TREE_NAME_RAINFOREST; } else { td->str = tt == TREE_CACTUS ? STR_LAI_TREE_NAME_CACTUS_PLANTS : STR_LAI_TREE_NAME_TREES; } td->owner[0] = GetTileOwner(tile); } static void TileLoopTreesDesert(TileIndex tile) { switch (GetTropicZone(tile)) { case TROPICZONE_DESERT: if (GetTreeGround(tile) != TREE_GROUND_SNOW_DESERT) { SetTreeGroundDensity(tile, TREE_GROUND_SNOW_DESERT, 3); MarkTileDirtyByTile(tile); } break; case TROPICZONE_RAINFOREST: { static const SoundFx forest_sounds[] = { SND_42_LOON_BIRD, SND_43_LION, SND_44_MONKEYS, SND_48_DISTANT_BIRD }; uint32 r = Random(); if (Chance16I(1, 200, r) && _settings_client.sound.ambient) SndPlayTileFx(forest_sounds[GB(r, 16, 2)], tile); break; } default: break; } } static void TileLoopTreesAlps(TileIndex tile) { int k = GetTileZ(tile) - GetSnowLine() + 1; if (k < 0) { switch (GetTreeGround(tile)) { case TREE_GROUND_SNOW_DESERT: SetTreeGroundDensity(tile, TREE_GROUND_GRASS, 3); break; case TREE_GROUND_ROUGH_SNOW: SetTreeGroundDensity(tile, TREE_GROUND_ROUGH, 3); break; default: return; } } else { uint density = min(k, 3); if (GetTreeGround(tile) != TREE_GROUND_SNOW_DESERT && GetTreeGround(tile) != TREE_GROUND_ROUGH_SNOW) { TreeGround tg = GetTreeGround(tile) == TREE_GROUND_ROUGH ? TREE_GROUND_ROUGH_SNOW : TREE_GROUND_SNOW_DESERT; SetTreeGroundDensity(tile, tg, density); } else if (GetTreeDensity(tile) != density) { SetTreeGroundDensity(tile, GetTreeGround(tile), density); } else { if (GetTreeDensity(tile) == 3) { uint32 r = Random(); if (Chance16I(1, 200, r) && _settings_client.sound.ambient) { SndPlayTileFx((r & 0x80000000) ? SND_39_HEAVY_WIND : SND_34_WIND, tile); } } return; } } MarkTileDirtyByTile(tile); } static void TileLoop_Trees(TileIndex tile) { if (GetTreeGround(tile) == TREE_GROUND_SHORE) { TileLoop_Water(tile); } else { switch (_settings_game.game_creation.landscape) { case LT_TROPIC: TileLoopTreesDesert(tile); break; case LT_ARCTIC: TileLoopTreesAlps(tile); break; } } AmbientSoundEffect(tile); uint treeCounter = GetTreeCounter(tile); /* Handle growth of grass (under trees/on MP_TREES tiles) at every 8th processings, like it's done for grass on MP_CLEAR tiles. */ if ((treeCounter & 7) == 7 && GetTreeGround(tile) == TREE_GROUND_GRASS) { uint density = GetTreeDensity(tile); if (density < 3) { SetTreeGroundDensity(tile, TREE_GROUND_GRASS, density + 1); MarkTileDirtyByTile(tile); } } if (GetTreeCounter(tile) < 15) { AddTreeCounter(tile, 1); return; } SetTreeCounter(tile, 0); switch (GetTreeGrowth(tile)) { case 3: // regular sized tree if (_settings_game.game_creation.landscape == LT_TROPIC && GetTreeType(tile) != TREE_CACTUS && GetTropicZone(tile) == TROPICZONE_DESERT) { AddTreeGrowth(tile, 1); } else { switch (GB(Random(), 0, 3)) { case 0: // start destructing AddTreeGrowth(tile, 1); break; case 1: // add a tree if (GetTreeCount(tile) < 4) { AddTreeCount(tile, 1); SetTreeGrowth(tile, 0); break; } /* FALL THROUGH */ case 2: { // add a neighbouring tree /* Don't plant extra trees if that's not allowed. */ if ((_settings_game.game_creation.landscape == LT_TROPIC && GetTropicZone(tile) == TROPICZONE_RAINFOREST) ? _settings_game.construction.extra_tree_placement == ETP_NONE : _settings_game.construction.extra_tree_placement != ETP_ALL) { break; } TreeType treetype = GetTreeType(tile); tile += TileOffsByDir((Direction)(Random() & 7)); /* Cacti don't spread */ if (!CanPlantTreesOnTile(tile, false)) return; /* Don't plant trees, if ground was freshly cleared */ if (IsTileType(tile, MP_CLEAR) && GetClearGround(tile) == CLEAR_GRASS && GetClearDensity(tile) != 3) return; PlantTreesOnTile(tile, treetype, 0, 0); break; } default: return; } } break; case 6: // final stage of tree destruction if (GetTreeCount(tile) > 1) { /* more than one tree, delete it */ AddTreeCount(tile, -1); SetTreeGrowth(tile, 3); } else { /* just one tree, change type into MP_CLEAR */ switch (GetTreeGround(tile)) { case TREE_GROUND_SHORE: MakeShore(tile); break; case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); break; case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break; case TREE_GROUND_ROUGH_SNOW: { uint density = GetTreeDensity(tile); MakeClear(tile, CLEAR_ROUGH, 3); MakeSnow(tile, density); break; } default: // snow or desert if (_settings_game.game_creation.landscape == LT_TROPIC) { MakeClear(tile, CLEAR_DESERT, GetTreeDensity(tile)); } else { uint density = GetTreeDensity(tile); MakeClear(tile, CLEAR_GRASS, 3); MakeSnow(tile, density); } break; } } break; default: AddTreeGrowth(tile, 1); break; } MarkTileDirtyByTile(tile); } void OnTick_Trees() { /* Don't place trees if that's not allowed */ if (_settings_game.construction.extra_tree_placement == ETP_NONE) return; uint32 r; TileIndex tile; TreeType tree; /* place a tree at a random rainforest spot */ if (_settings_game.game_creation.landscape == LT_TROPIC && (r = Random(), tile = RandomTileSeed(r), GetTropicZone(tile) == TROPICZONE_RAINFOREST) && CanPlantTreesOnTile(tile, false) && (tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) { PlantTreesOnTile(tile, tree, 0, 0); } /* byte underflow */ if (--_trees_tick_ctr != 0 || _settings_game.construction.extra_tree_placement != ETP_ALL) return; /* place a tree at a random spot */ r = Random(); tile = RandomTileSeed(r); if (CanPlantTreesOnTile(tile, false) && (tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) { PlantTreesOnTile(tile, tree, 0, 0); } } static TrackStatus GetTileTrackStatus_Trees(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { return 0; } static void ChangeTileOwner_Trees(TileIndex tile, Owner old_owner, Owner new_owner) { /* not used */ } void InitializeTrees() { _trees_tick_ctr = 0; } static CommandCost TerraformTile_Trees(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } extern const TileTypeProcs _tile_type_trees_procs = { DrawTile_Trees, // draw_tile_proc GetSlopePixelZ_Trees, // get_slope_z_proc ClearTile_Trees, // clear_tile_proc NULL, // add_accepted_cargo_proc GetTileDesc_Trees, // get_tile_desc_proc GetTileTrackStatus_Trees, // get_tile_track_status_proc NULL, // click_tile_proc NULL, // animate_tile_proc TileLoop_Trees, // tile_loop_proc ChangeTileOwner_Trees, // change_tile_owner_proc NULL, // add_produced_cargo_proc NULL, // vehicle_enter_tile_proc GetFoundation_Trees, // get_foundation_proc TerraformTile_Trees, // terraform_tile_proc }; openttd-1.3.3/src/economy_type.h0000644000000000000000000001672112246102611015345 0ustar rootroot/* $Id: economy_type.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file economy_type.h Types related to the economy. */ #ifndef ECONOMY_TYPE_H #define ECONOMY_TYPE_H #include "core/overflowsafe_type.hpp" #include "core/enum_type.hpp" typedef OverflowSafeInt64 Money; /** Data of the economy. */ struct Economy { Money max_loan; ///< NOSAVE: Maximum possible loan int16 fluct; ///< Economy fluctuation status byte interest_rate; ///< Interest byte infl_amount; ///< inflation amount byte infl_amount_pr; ///< inflation rate for payment rates uint32 industry_daily_change_counter; ///< Bits 31-16 are number of industry to be performed, 15-0 are fractional collected daily uint32 industry_daily_increment; ///< The value which will increment industry_daily_change_counter. Computed value. NOSAVE uint64 inflation_prices; ///< Cumulated inflation of prices since game start; 16 bit fractional part uint64 inflation_payment; ///< Cumulated inflation of cargo paypent since game start; 16 bit fractional part /* Old stuff for savegame conversion only */ Money old_max_loan_unround; ///< Old: Unrounded max loan uint16 old_max_loan_unround_fract; ///< Old: Fraction of the unrounded max loan }; /** Score categories in the detailed performance rating. */ enum ScoreID { SCORE_BEGIN = 0, SCORE_VEHICLES = 0, SCORE_STATIONS = 1, SCORE_MIN_PROFIT = 2, SCORE_MIN_INCOME = 3, SCORE_MAX_INCOME = 4, SCORE_DELIVERED = 5, SCORE_CARGO = 6, SCORE_MONEY = 7, SCORE_LOAN = 8, SCORE_TOTAL = 9, ///< This must always be the last entry SCORE_END = 10, ///< How many scores are there.. SCORE_MAX = 1000, ///< The max score that can be in the performance history /* the scores together of score_info is allowed to be more! */ }; DECLARE_POSTFIX_INCREMENT(ScoreID) /** Data structure for storing how the score is computed for a single score id. */ struct ScoreInfo { int needed; ///< How much you need to get the perfect score int score; ///< How much score it will give }; /** * Enumeration of all base prices for use with #Prices. * The prices are ordered as they are expected by NewGRF cost multipliers, so don't shuffle them. */ enum Price { PR_BEGIN = 0, PR_STATION_VALUE = 0, PR_BUILD_RAIL, PR_BUILD_ROAD, PR_BUILD_SIGNALS, PR_BUILD_BRIDGE, PR_BUILD_DEPOT_TRAIN, PR_BUILD_DEPOT_ROAD, PR_BUILD_DEPOT_SHIP, PR_BUILD_TUNNEL, PR_BUILD_STATION_RAIL, PR_BUILD_STATION_RAIL_LENGTH, PR_BUILD_STATION_AIRPORT, PR_BUILD_STATION_BUS, PR_BUILD_STATION_TRUCK, PR_BUILD_STATION_DOCK, PR_BUILD_VEHICLE_TRAIN, PR_BUILD_VEHICLE_WAGON, PR_BUILD_VEHICLE_AIRCRAFT, PR_BUILD_VEHICLE_ROAD, PR_BUILD_VEHICLE_SHIP, PR_BUILD_TREES, PR_TERRAFORM, PR_CLEAR_GRASS, PR_CLEAR_ROUGH, PR_CLEAR_ROCKS, PR_CLEAR_FIELDS, PR_CLEAR_TREES, PR_CLEAR_RAIL, PR_CLEAR_SIGNALS, PR_CLEAR_BRIDGE, PR_CLEAR_DEPOT_TRAIN, PR_CLEAR_DEPOT_ROAD, PR_CLEAR_DEPOT_SHIP, PR_CLEAR_TUNNEL, PR_CLEAR_WATER, PR_CLEAR_STATION_RAIL, PR_CLEAR_STATION_AIRPORT, PR_CLEAR_STATION_BUS, PR_CLEAR_STATION_TRUCK, PR_CLEAR_STATION_DOCK, PR_CLEAR_HOUSE, PR_CLEAR_ROAD, PR_RUNNING_TRAIN_STEAM, PR_RUNNING_TRAIN_DIESEL, PR_RUNNING_TRAIN_ELECTRIC, PR_RUNNING_AIRCRAFT, PR_RUNNING_ROADVEH, PR_RUNNING_SHIP, PR_BUILD_INDUSTRY, PR_CLEAR_INDUSTRY, PR_BUILD_OBJECT, PR_CLEAR_OBJECT, PR_BUILD_WAYPOINT_RAIL, PR_CLEAR_WAYPOINT_RAIL, PR_BUILD_WAYPOINT_BUOY, PR_CLEAR_WAYPOINT_BUOY, PR_TOWN_ACTION, PR_BUILD_FOUNDATION, PR_BUILD_INDUSTRY_RAW, PR_BUILD_TOWN, PR_BUILD_CANAL, PR_CLEAR_CANAL, PR_BUILD_AQUEDUCT, PR_CLEAR_AQUEDUCT, PR_BUILD_LOCK, PR_CLEAR_LOCK, PR_INFRASTRUCTURE_RAIL, PR_INFRASTRUCTURE_ROAD, PR_INFRASTRUCTURE_WATER, PR_INFRASTRUCTURE_STATION, PR_INFRASTRUCTURE_AIRPORT, PR_END, INVALID_PRICE = 0xFF }; DECLARE_POSTFIX_INCREMENT(Price) typedef Money Prices[PR_END]; ///< Prices of everything. @see Price typedef int8 PriceMultipliers[PR_END]; /** Types of expenses. */ enum ExpensesType { EXPENSES_CONSTRUCTION = 0, ///< Construction costs. EXPENSES_NEW_VEHICLES, ///< New vehicles. EXPENSES_TRAIN_RUN, ///< Running costs trains. EXPENSES_ROADVEH_RUN, ///< Running costs road vehicles. EXPENSES_AIRCRAFT_RUN, ///< Running costs aircrafts. EXPENSES_SHIP_RUN, ///< Running costs ships. EXPENSES_PROPERTY, ///< Property costs. EXPENSES_TRAIN_INC, ///< Income from trains. EXPENSES_ROADVEH_INC, ///< Income from road vehicles. EXPENSES_AIRCRAFT_INC, ///< Income from aircrafts. EXPENSES_SHIP_INC, ///< Income from ships. EXPENSES_LOAN_INT, ///< Interest payments over the loan. EXPENSES_OTHER, ///< Other expenses. EXPENSES_END, ///< Number of expense types. INVALID_EXPENSES = 0xFF, ///< Invalid expense type. }; /** * Categories of a price bases. */ enum PriceCategory { PCAT_NONE, ///< Not affected by difficulty settings PCAT_RUNNING, ///< Price is affected by "vehicle running cost" difficulty setting PCAT_CONSTRUCTION, ///< Price is affected by "construction cost" difficulty setting }; /** * Describes properties of price bases. */ struct PriceBaseSpec { Money start_price; ///< Default value at game start, before adding multipliers. PriceCategory category; ///< Price is affected by certain difficulty settings. uint grf_feature; ///< GRF Feature that decides whether price multipliers apply locally or globally, #GSF_END if none. Price fallback_price; ///< Fallback price multiplier for new prices but old grfs. }; /** The "steps" in loan size, in British Pounds! */ static const int LOAN_INTERVAL = 10000; /** * Maximum inflation (including fractional part) without causing overflows in int64 price computations. * This allows for 32 bit base prices (21 are currently needed). * Considering the sign bit and 16 fractional bits, there are 15 bits left. * 170 years of 4% inflation result in a inflation of about 822, so 10 bits are actually enough. * Note that NewGRF multipliers share the 16 fractional bits. * @see MAX_PRICE_MODIFIER */ static const uint64 MAX_INFLATION = (1ull << (63 - 32)) - 1; /** * Maximum NewGRF price modifiers. * Increasing base prices by factor 65536 should be enough. * @see MAX_INFLATION */ static const int MIN_PRICE_MODIFIER = -8; static const int MAX_PRICE_MODIFIER = 16; static const int INVALID_PRICE_MODIFIER = MIN_PRICE_MODIFIER - 1; /** Multiplier for how many regular track bits a tunnel/bridge counts. */ static const uint TUNNELBRIDGE_TRACKBIT_FACTOR = 4; /** Multiplier for how many regular track bits a level crossing counts. */ static const uint LEVELCROSSING_TRACKBIT_FACTOR = 2; /** Multiplier for how many regular tiles a lock counts. */ static const uint LOCK_DEPOT_TILE_FACTOR = 2; struct CargoPayment; typedef uint32 CargoPaymentID; #endif /* ECONOMY_TYPE_H */ openttd-1.3.3/src/cargomonitor.cpp0000644000000000000000000001371312246102611015667 0ustar rootroot/* $Id: cargomonitor.cpp 24986 2013-02-10 19:49:04Z zuu $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargomonitor.cpp Implementation of the cargo transport monitoring. */ #include "stdafx.h" #include "cargomonitor.h" #include "station_base.h" CargoMonitorMap _cargo_pickups; ///< Map of monitored pick-ups to the amount since last query/activation. CargoMonitorMap _cargo_deliveries; ///< Map of monitored deliveries to the amount since last query/activation. /** * Helper method for ClearCargoPickupMonitoring and ClearCargoDeliveryMonitoring. * Clears all monitors that belong to the specified company or all if INVALID_OWNER * is specified as company. * @param cargo_monitor_map reference to the cargo monitor map to operate on. * @param company company to clear cargo monitors for or INVALID_OWNER if all cargo monitors should be cleared. */ static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID company = INVALID_OWNER) { if (company == INVALID_OWNER) { cargo_monitor_map.clear(); return; } CargoMonitorMap::iterator next; for (CargoMonitorMap::iterator it = cargo_monitor_map.begin(); it != cargo_monitor_map.end(); it = next) { next = it; next++; if (DecodeMonitorCompany(it->first) == company) { cargo_monitor_map.erase(it); } } } /** * Clear all pick-up cargo monitors. * @param company clear all pick-up monitors for this company or if INVALID_OWNER * is passed, all pick-up monitors are cleared regardless of company. */ void ClearCargoPickupMonitoring(CompanyID company) { ClearCargoMonitoring(_cargo_pickups, company); } /** * Clear all delivery cargo monitors. * @param company clear all delivery monitors for this company or if INVALID_OWNER * is passed, all delivery monitors are cleared regardless of company. */ void ClearCargoDeliveryMonitoring(CompanyID company) { ClearCargoMonitoring(_cargo_deliveries, company); } /** * Get and reset the amount associated with a cargo monitor. * @param[in,out] monitor_map Monitoring map to search (and reset for the queried entry). * @param monitor Cargo monitor to query/reset. * @param keep_monitoring After returning from this call, continue monitoring. * @return Amount collected since last query/activation for the monitored combination. */ static uint32 GetAmount(CargoMonitorMap &monitor_map, CargoMonitorID monitor, bool keep_monitoring) { CargoMonitorMap::iterator iter = monitor_map.find(monitor); if (iter == monitor_map.end()) { if (keep_monitoring) { std::pair p(monitor, 0); monitor_map.insert(p); } return 0; } else { uint32 result = iter->second; iter->second = 0; if (!keep_monitoring) monitor_map.erase(iter); return result; } } /** * Get the amount of cargo delivered for the given cargo monitor since activation or last query. * @param monitor Cargo monitor to query. * @param keep_monitoring After returning from this call, continue monitoring. * @return Amount of delivered cargo for the monitored combination. */ uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring) { return GetAmount(_cargo_deliveries, monitor, keep_monitoring); } /** * Get the amount of cargo picked up for the given cargo monitor since activation or last query. * @param monitor Monitoring number to query. * @param keep_monitoring After returning from this call, continue monitoring. * @return Amount of picked up cargo for the monitored combination. * @note Cargo pick up is counted on final delivery, to prevent users getting credit for picking up cargo without delivering it. */ uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring) { return GetAmount(_cargo_pickups, monitor, keep_monitoring); } /** * Cargo was delivered to its final destination, update the pickup and delivery maps. * @param cargo_type type of cargo. * @param company company delivering the cargo. * @param amount Amount of cargo delivered. * @param src_type type of \a src. * @param src index of source. * @param st station where the cargo is delivered to. */ void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st) { if (amount == 0) return; if (src != INVALID_SOURCE) { /* Handle pickup update. */ switch (src_type) { case ST_INDUSTRY: { CargoMonitorID num = EncodeCargoIndustryMonitor(company, cargo_type, src); CargoMonitorMap::iterator iter = _cargo_pickups.find(num); if (iter != _cargo_pickups.end()) iter->second += amount; break; } case ST_TOWN: { CargoMonitorID num = EncodeCargoTownMonitor(company, cargo_type, src); CargoMonitorMap::iterator iter = _cargo_pickups.find(num); if (iter != _cargo_pickups.end()) iter->second += amount; break; } default: break; } } /* Handle delivery. * Note that delivery in the right area is sufficient to prevent trouble with neighbouring industries or houses. */ /* Town delivery. */ CargoMonitorID num = EncodeCargoTownMonitor(company, cargo_type, st->town->index); CargoMonitorMap::iterator iter = _cargo_deliveries.find(num); if (iter != _cargo_deliveries.end()) iter->second += amount; /* Industry delivery. */ for (const Industry * const *ip = st->industries_near.Begin(); ip != st->industries_near.End(); ip++) { CargoMonitorID num = EncodeCargoIndustryMonitor(company, cargo_type, (*ip)->index); CargoMonitorMap::iterator iter = _cargo_deliveries.find(num); if (iter != _cargo_deliveries.end()) iter->second += amount; } } openttd-1.3.3/src/signal_type.h0000644000000000000000000000371312246102611015146 0ustar rootroot/* $Id: signal_type.h 24367 2012-07-01 23:12:50Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file signal_type.h Types and classes related to signals. */ #ifndef SIGNAL_TYPE_H #define SIGNAL_TYPE_H #include "core/enum_type.hpp" /** Variant of the signal, i.e. how does the signal look? */ enum SignalVariant { SIG_ELECTRIC = 0, ///< Light signal SIG_SEMAPHORE = 1, ///< Old-fashioned semaphore signal }; /** Type of signal, i.e. how does the signal behave? */ enum SignalType { SIGTYPE_NORMAL = 0, ///< normal signal SIGTYPE_ENTRY = 1, ///< presignal block entry SIGTYPE_EXIT = 2, ///< presignal block exit SIGTYPE_COMBO = 3, ///< presignal inter-block SIGTYPE_PBS = 4, ///< normal pbs signal SIGTYPE_PBS_ONEWAY = 5, ///< no-entry signal SIGTYPE_END, SIGTYPE_LAST = SIGTYPE_PBS_ONEWAY, SIGTYPE_LAST_NOPBS = SIGTYPE_COMBO, }; /** Helper information for extract tool. */ template <> struct EnumPropsT : MakeEnumPropsT {}; /** * These are states in which a signal can be. Currently these are only two, so * simple boolean logic will do. But do try to compare to this enum instead of * normal boolean evaluation, since that will make future additions easier. */ enum SignalState { SIGNAL_STATE_RED = 0, ///< The signal is red SIGNAL_STATE_GREEN = 1, ///< The signal is green }; #endif /* SIGNAL_TYPE_H */ openttd-1.3.3/src/ground_vehicle.cpp0000644000000000000000000001540012246102611016154 0ustar rootroot/* $Id: ground_vehicle.cpp 24384 2012-07-07 15:39:46Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ground_vehicle.cpp Implementation of GroundVehicle. */ #include "stdafx.h" #include "train.h" #include "roadveh.h" #include "depot_map.h" /** * Recalculates the cached total power of a vehicle. Should be called when the consist is changed. */ template void GroundVehicle::PowerChanged() { assert(this->First() == this); const T *v = T::From(this); uint32 total_power = 0; uint32 max_te = 0; uint32 number_of_parts = 0; uint16 max_track_speed = v->GetDisplayMaxSpeed(); for (const T *u = v; u != NULL; u = u->Next()) { uint32 current_power = u->GetPower() + u->GetPoweredPartPower(u); total_power += current_power; /* Only powered parts add tractive effort. */ if (current_power > 0) max_te += u->GetWeight() * u->GetTractiveEffort(); number_of_parts++; /* Get minimum max speed for this track. */ uint16 track_speed = u->GetMaxTrackSpeed(); if (track_speed > 0) max_track_speed = min(max_track_speed, track_speed); } byte air_drag; byte air_drag_value = v->GetAirDrag(); /* If air drag is set to zero (default), the resulting air drag coefficient is dependent on max speed. */ if (air_drag_value == 0) { uint16 max_speed = v->GetDisplayMaxSpeed(); /* Simplification of the method used in TTDPatch. It uses <= 10 to change more steadily from 128 to 196. */ air_drag = (max_speed <= 10) ? 192 : max(2048 / max_speed, 1); } else { /* According to the specs, a value of 0x01 in the air drag property means "no air drag". */ air_drag = (air_drag_value == 1) ? 0 : air_drag_value; } this->gcache.cached_air_drag = air_drag + 3 * air_drag * number_of_parts / 20; max_te *= 10000; // Tractive effort in (tonnes * 1000 * 10 =) N. max_te /= 256; // Tractive effort is a [0-255] coefficient. if (this->gcache.cached_power != total_power || this->gcache.cached_max_te != max_te) { /* Stop the vehicle if it has no power. */ if (total_power == 0) this->vehstatus |= VS_STOPPED; this->gcache.cached_power = total_power; this->gcache.cached_max_te = max_te; SetWindowDirty(WC_VEHICLE_DETAILS, this->index); SetWindowWidgetDirty(WC_VEHICLE_VIEW, this->index, WID_VV_START_STOP); } this->gcache.cached_max_track_speed = max_track_speed; } /** * Recalculates the cached weight of a vehicle and its parts. Should be called each time the cargo on * the consist changes. */ template void GroundVehicle::CargoChanged() { assert(this->First() == this); uint32 weight = 0; for (T *u = T::From(this); u != NULL; u = u->Next()) { uint32 current_weight = u->GetWeight(); weight += current_weight; /* Slope steepness is in percent, result in N. */ u->gcache.cached_slope_resistance = current_weight * u->GetSlopeSteepness() * 100; } /* Store consist weight in cache. */ this->gcache.cached_weight = max(1, weight); /* Friction in bearings and other mechanical parts is 0.1% of the weight (result in N). */ this->gcache.cached_axle_resistance = 10 * weight; /* Now update vehicle power (tractive effort is dependent on weight). */ this->PowerChanged(); } /** * Calculates the acceleration of the vehicle under its current conditions. * @return Current acceleration of the vehicle. */ template int GroundVehicle::GetAcceleration() const { /* Templated class used for function calls for performance reasons. */ const T *v = T::From(this); int32 speed = v->GetCurrentSpeed(); // [km/h-ish] /* Weight is stored in tonnes. */ int32 mass = this->gcache.cached_weight; /* Power is stored in HP, we need it in watts. */ int32 power = this->gcache.cached_power * 746; int32 resistance = 0; bool maglev = v->GetAccelerationType() == 2; const int area = v->GetAirDragArea(); if (!maglev) { /* Static resistance plus rolling friction. */ resistance = this->gcache.cached_axle_resistance; resistance += mass * v->GetRollingFriction(); } /* Air drag; the air drag coefficient is in an arbitrary NewGRF-unit, * so we need some magic conversion factor. */ resistance += (area * this->gcache.cached_air_drag * speed * speed) / 1000; resistance += this->GetSlopeResistance(); /* This value allows to know if the vehicle is accelerating or braking. */ AccelStatus mode = v->GetAccelerationStatus(); const int max_te = this->gcache.cached_max_te; // [N] int force; if (speed > 0) { if (!maglev) { /* Conversion factor from km/h to m/s is 5/18 to get [N] in the end. */ force = power * 18 / (speed * 5); if (mode == AS_ACCEL && force > max_te) force = max_te; } else { force = power / 25; } } else { /* "Kickoff" acceleration. */ force = (mode == AS_ACCEL && !maglev) ? min(max_te, power) : power; force = max(force, (mass * 8) + resistance); } if (mode == AS_ACCEL) { /* Easy way out when there is no acceleration. */ if (force == resistance) return 0; /* When we accelerate, make sure we always keep doing that, even when * the excess force is more than the mass. Otherwise a vehicle going * down hill will never slow down enough, and a vehicle that came up * a hill will never speed up enough to (eventually) get back to the * same (maximum) speed. */ int accel = (force - resistance) / (mass * 4); return force < resistance ? min(-1, accel) : max(1, accel); } else { return min(-force - resistance, -10000) / mass; } } /** * Check whether the whole vehicle chain is in the depot. * @return true if and only if the whole chain is in the depot. */ template bool GroundVehicle::IsChainInDepot() const { const T *v = this->First(); /* Is the front engine stationary in the depot? */ assert_compile((int)TRANSPORT_RAIL == (int)VEH_TRAIN); assert_compile((int)TRANSPORT_ROAD == (int)VEH_ROAD); if (!IsDepotTypeTile(v->tile, (TransportType)Type) || v->cur_speed != 0) return false; /* Check whether the rest is also already trying to enter the depot. */ for (; v != NULL; v = v->Next()) { if (!v->T::IsInDepot() || v->tile != this->tile) return false; } return true; } /* Instantiation for Train */ template struct GroundVehicle; /* Instantiation for RoadVehicle */ template struct GroundVehicle; openttd-1.3.3/src/console_gui.cpp0000644000000000000000000003562112246102610015473 0ustar rootroot/* $Id: console_gui.cpp 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file console_gui.cpp Handling the GUI of the in-game console. */ #include "stdafx.h" #include "textbuf_type.h" #include "window_gui.h" #include "console_gui.h" #include "console_internal.h" #include "window_func.h" #include "string_func.h" #include "strings_func.h" #include "gfx_func.h" #include "settings_type.h" #include "console_func.h" #include "rev.h" #include "video/video_driver.hpp" #include "widgets/console_widget.h" #include "table/strings.h" static const uint ICON_HISTORY_SIZE = 20; static const uint ICON_LINE_SPACING = 2; static const uint ICON_RIGHT_BORDERWIDTH = 10; static const uint ICON_BOTTOM_BORDERWIDTH = 12; /** * Container for a single line of console output */ struct IConsoleLine { static IConsoleLine *front; ///< The front of the console backlog buffer static int size; ///< The amount of items in the backlog IConsoleLine *previous; ///< The previous console message. char *buffer; ///< The data to store. TextColour colour; ///< The colour of the line. uint16 time; ///< The amount of time the line is in the backlog. /** * Initialize the console line. * @param buffer the data to print. * @param colour the colour of the line. */ IConsoleLine(char *buffer, TextColour colour) : previous(IConsoleLine::front), buffer(buffer), colour(colour), time(0) { IConsoleLine::front = this; IConsoleLine::size++; } /** * Clear this console line and any further ones. */ ~IConsoleLine() { IConsoleLine::size--; free(buffer); delete previous; } /** * Get the index-ed item in the list. */ static const IConsoleLine *Get(uint index) { const IConsoleLine *item = IConsoleLine::front; while (index != 0 && item != NULL) { index--; item = item->previous; } return item; } /** * Truncate the list removing everything older than/more than the amount * as specified in the config file. * As a side effect also increase the time the other lines have been in * the list. * @return true if and only if items got removed. */ static bool Truncate() { IConsoleLine *cur = IConsoleLine::front; if (cur == NULL) return false; int count = 1; for (IConsoleLine *item = cur->previous; item != NULL; count++, cur = item, item = item->previous) { if (item->time > _settings_client.gui.console_backlog_timeout && count > _settings_client.gui.console_backlog_length) { delete item; cur->previous = NULL; return true; } if (item->time != MAX_UVALUE(uint16)) item->time++; } return false; } /** * Reset the complete console line backlog. */ static void Reset() { delete IConsoleLine::front; IConsoleLine::front = NULL; IConsoleLine::size = 0; } }; /* static */ IConsoleLine *IConsoleLine::front = NULL; /* static */ int IConsoleLine::size = 0; /* ** main console cmd buffer ** */ static Textbuf _iconsole_cmdline(ICON_CMDLN_SIZE); static char *_iconsole_history[ICON_HISTORY_SIZE]; static int _iconsole_historypos; IConsoleModes _iconsole_mode; /* *************** * * end of header * * *************** */ static void IConsoleClearCommand() { memset(_iconsole_cmdline.buf, 0, ICON_CMDLN_SIZE); _iconsole_cmdline.chars = _iconsole_cmdline.bytes = 1; // only terminating zero _iconsole_cmdline.pixels = 0; _iconsole_cmdline.caretpos = 0; _iconsole_cmdline.caretxoffs = 0; SetWindowDirty(WC_CONSOLE, 0); } static inline void IConsoleResetHistoryPos() { _iconsole_historypos = -1; } static const char *IConsoleHistoryAdd(const char *cmd); static void IConsoleHistoryNavigate(int direction); static const struct NWidgetPart _nested_console_window_widgets[] = { NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_BACKGROUND), SetResize(1, 1), }; static const WindowDesc _console_window_desc( WDP_MANUAL, 0, 0, WC_CONSOLE, WC_NONE, 0, _nested_console_window_widgets, lengthof(_nested_console_window_widgets) ); struct IConsoleWindow : Window { static int scroll; int line_height; ///< Height of one line of text in the console. int line_offset; IConsoleWindow() : Window() { _iconsole_mode = ICONSOLE_OPENED; this->line_height = FONT_HEIGHT_NORMAL + ICON_LINE_SPACING; this->line_offset = GetStringBoundingBox("] ").width + 5; this->InitNested(&_console_window_desc, 0); ResizeWindow(this, _screen.width, _screen.height / 3); } ~IConsoleWindow() { _iconsole_mode = ICONSOLE_CLOSED; _video_driver->EditBoxLostFocus(); } /** * Scroll the content of the console. * @param amount Number of lines to scroll back. */ void Scroll(int amount) { int max_scroll = max(0, IConsoleLine::size + 1 - this->height / this->line_height); IConsoleWindow::scroll = Clamp(IConsoleWindow::scroll + amount, 0, max_scroll); this->SetDirty(); } virtual void OnPaint() { const int right = this->width - 5; GfxFillRect(0, 0, this->width - 1, this->height - 1, PC_BLACK); int ypos = this->height - this->line_height; for (const IConsoleLine *print = IConsoleLine::Get(IConsoleWindow::scroll); print != NULL; print = print->previous) { SetDParamStr(0, print->buffer); ypos = DrawStringMultiLine(5, right, -this->line_height, ypos, STR_JUST_RAW_STRING, print->colour, SA_LEFT | SA_BOTTOM | SA_FORCE) - ICON_LINE_SPACING; if (ypos < 0) break; } /* If the text is longer than the window, don't show the starting ']' */ int delta = this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH; if (delta > 0) { DrawString(5, right, this->height - this->line_height, "]", (TextColour)CC_COMMAND, SA_LEFT | SA_FORCE); delta = 0; } /* If we have a marked area, draw a background highlight. */ if (_iconsole_cmdline.marklength != 0) GfxFillRect(this->line_offset + delta + _iconsole_cmdline.markxoffs, this->height - this->line_height, this->line_offset + delta + _iconsole_cmdline.markxoffs + _iconsole_cmdline.marklength, this->height - 1, PC_DARK_RED); DrawString(this->line_offset + delta, right, this->height - this->line_height, _iconsole_cmdline.buf, (TextColour)CC_COMMAND, SA_LEFT | SA_FORCE); if (_focused_window == this && _iconsole_cmdline.caret) { DrawString(this->line_offset + delta + _iconsole_cmdline.caretxoffs, right, this->height - this->line_height, "_", TC_WHITE, SA_LEFT | SA_FORCE); } } virtual void OnHundredthTick() { if (IConsoleLine::Truncate() && (IConsoleWindow::scroll > IConsoleLine::size)) { IConsoleWindow::scroll = max(0, IConsoleLine::size - (this->height / this->line_height) + 1); this->SetDirty(); } } virtual void OnMouseLoop() { if (_iconsole_cmdline.HandleCaret()) this->SetDirty(); } virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (_focused_window != this) return ES_NOT_HANDLED; const int scroll_height = (this->height / this->line_height) - 1; switch (keycode) { case WKC_UP: IConsoleHistoryNavigate(1); this->SetDirty(); break; case WKC_DOWN: IConsoleHistoryNavigate(-1); this->SetDirty(); break; case WKC_SHIFT | WKC_PAGEDOWN: this->Scroll(-scroll_height); break; case WKC_SHIFT | WKC_PAGEUP: this->Scroll(scroll_height); break; case WKC_SHIFT | WKC_DOWN: this->Scroll(-1); break; case WKC_SHIFT | WKC_UP: this->Scroll(1); break; case WKC_BACKQUOTE: IConsoleSwitch(); break; case WKC_RETURN: case WKC_NUM_ENTER: { /* We always want the ] at the left side; we always force these strings to be left * aligned anyway. So enforce this in all cases by addding a left-to-right marker, * otherwise it will be drawn at the wrong side with right-to-left texts. */ IConsolePrintF(CC_COMMAND, LRM "] %s", _iconsole_cmdline.buf); const char *cmd = IConsoleHistoryAdd(_iconsole_cmdline.buf); IConsoleClearCommand(); if (cmd != NULL) IConsoleCmdExec(cmd); break; } case WKC_CTRL | WKC_RETURN: _iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL; IConsoleResize(this); MarkWholeScreenDirty(); break; case (WKC_CTRL | 'L'): IConsoleCmdExec("clear"); break; default: if (_iconsole_cmdline.HandleKeyPress(key, keycode) != HKPR_NOT_HANDLED) { IConsoleWindow::scroll = 0; IConsoleResetHistoryPos(); this->SetDirty(); } else { return ES_NOT_HANDLED; } break; } return ES_HANDLED; } virtual void InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) { if (_iconsole_cmdline.InsertString(str, marked, caret, insert_location, replacement_end)) { IConsoleWindow::scroll = 0; IConsoleResetHistoryPos(); this->SetDirty(); } } virtual const char *GetFocusedText() const { return _iconsole_cmdline.buf; } virtual const char *GetCaret() const { return _iconsole_cmdline.buf + _iconsole_cmdline.caretpos; } virtual const char *GetMarkedText(size_t *length) const { if (_iconsole_cmdline.markend == 0) return NULL; *length = _iconsole_cmdline.markend - _iconsole_cmdline.markpos; return _iconsole_cmdline.buf + _iconsole_cmdline.markpos; } virtual Point GetCaretPosition() const { int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); Point pt = {this->line_offset + delta + _iconsole_cmdline.caretxoffs, this->height - this->line_height}; return pt; } virtual Rect GetTextBoundingRect(const char *from, const char *to) const { int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); Point p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL); Point p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, from) : p1; Rect r = {this->line_offset + delta + p1.x, this->height - this->line_height, this->line_offset + delta + p2.x, this->height}; return r; } virtual const char *GetTextCharacterAtPosition(const Point &pt) const { int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0); if (!IsInsideMM(pt.y, this->height - this->line_height, this->height)) return NULL; return GetCharAtPosition(_iconsole_cmdline.buf, pt.x - delta); } virtual void OnMouseWheel(int wheel) { this->Scroll(-wheel); } virtual void OnFocusLost() { _video_driver->EditBoxLostFocus(); } }; int IConsoleWindow::scroll = 0; void IConsoleGUIInit() { IConsoleResetHistoryPos(); _iconsole_mode = ICONSOLE_CLOSED; IConsoleLine::Reset(); memset(_iconsole_history, 0, sizeof(_iconsole_history)); IConsolePrintF(CC_WARNING, "OpenTTD Game Console Revision 7 - %s", _openttd_revision); IConsolePrint(CC_WHITE, "------------------------------------"); IConsolePrint(CC_WHITE, "use \"help\" for more information"); IConsolePrint(CC_WHITE, ""); IConsoleClearCommand(); } void IConsoleClearBuffer() { IConsoleLine::Reset(); } void IConsoleGUIFree() { IConsoleClearBuffer(); } /** Change the size of the in-game console window after the screen size changed, or the window state changed. */ void IConsoleResize(Window *w) { switch (_iconsole_mode) { case ICONSOLE_OPENED: w->height = _screen.height / 3; w->width = _screen.width; break; case ICONSOLE_FULL: w->height = _screen.height - ICON_BOTTOM_BORDERWIDTH; w->width = _screen.width; break; default: return; } MarkWholeScreenDirty(); } /** Toggle in-game console between opened and closed. */ void IConsoleSwitch() { switch (_iconsole_mode) { case ICONSOLE_CLOSED: new IConsoleWindow(); break; case ICONSOLE_OPENED: case ICONSOLE_FULL: DeleteWindowById(WC_CONSOLE, 0); break; } MarkWholeScreenDirty(); } /** Close the in-game console. */ void IConsoleClose() { if (_iconsole_mode == ICONSOLE_OPENED) IConsoleSwitch(); } /** * Add the entered line into the history so you can look it back * scroll, etc. Put it to the beginning as it is the latest text * @param cmd Text to be entered into the 'history' * @return the command to execute */ static const char *IConsoleHistoryAdd(const char *cmd) { /* Strip all spaces at the begin */ while (IsWhitespace(*cmd)) cmd++; /* Do not put empty command in history */ if (StrEmpty(cmd)) return NULL; /* Do not put in history if command is same as previous */ if (_iconsole_history[0] == NULL || strcmp(_iconsole_history[0], cmd) != 0) { free(_iconsole_history[ICON_HISTORY_SIZE - 1]); memmove(&_iconsole_history[1], &_iconsole_history[0], sizeof(_iconsole_history[0]) * (ICON_HISTORY_SIZE - 1)); _iconsole_history[0] = strdup(cmd); } /* Reset the history position */ IConsoleResetHistoryPos(); return _iconsole_history[0]; } /** * Navigate Up/Down in the history of typed commands * @param direction Go further back in history (+1), go to recently typed commands (-1) */ static void IConsoleHistoryNavigate(int direction) { if (_iconsole_history[0] == NULL) return; // Empty history _iconsole_historypos = Clamp(_iconsole_historypos + direction, -1, ICON_HISTORY_SIZE - 1); if (direction > 0 && _iconsole_history[_iconsole_historypos] == NULL) _iconsole_historypos--; if (_iconsole_historypos == -1) { _iconsole_cmdline.DeleteAll(); } else { _iconsole_cmdline.Assign(_iconsole_history[_iconsole_historypos]); } } /** * Handle the printing of text entered into the console or redirected there * by any other means. Text can be redirected to other clients in a network game * as well as to a logfile. If the network server is a dedicated server, all activities * are also logged. All lines to print are added to a temporary buffer which can be * used as a history to print them onscreen * @param colour_code the colour of the command. Red in case of errors, etc. * @param str the message entered or output on the console (notice, error, etc.) */ void IConsoleGUIPrint(TextColour colour_code, char *str) { new IConsoleLine(str, colour_code); SetWindowDirty(WC_CONSOLE, 0); } /** * Check whether the given TextColour is valid for console usage. * @param c The text colour to compare to. * @return true iff the TextColour is valid for console usage. */ bool IsValidConsoleColour(TextColour c) { /* A normal text colour is used. */ if (!(c & TC_IS_PALETTE_COLOUR)) return TC_BEGIN <= c && c < TC_END; /* A text colour from the palette is used; must be the company * colour gradient, so it must be one of those. */ c &= ~TC_IS_PALETTE_COLOUR; for (uint i = COLOUR_BEGIN; i < COLOUR_END; i++) { if (_colour_gradient[i][4] == c) return true; } return false; } openttd-1.3.3/src/settings_func.h0000644000000000000000000000353112246102611015501 0ustar rootroot/* $Id: settings_func.h 23224 2011-11-14 21:42:54Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file settings_func.h Functions related to setting/changing the settings. */ #ifndef SETTINGS_FUNC_H #define SETTINGS_FUNC_H #include "core/smallvec_type.hpp" #include "company_type.h" void IConsoleSetSetting(const char *name, const char *value, bool force_newgame = false); void IConsoleSetSetting(const char *name, int32 value); void IConsoleGetSetting(const char *name, bool force_newgame = false); void IConsoleListSettings(const char *prefilter); void LoadFromConfig(bool minimal = false); void SaveToConfig(); void CheckConfig(); /* Functions to load and save NewGRF settings to a separate * configuration file, used for presets. */ typedef AutoFreeSmallVector GRFPresetList; void GetGRFPresetList(GRFPresetList *list); struct GRFConfig *LoadGRFPresetFromConfig(const char *config_name); void SaveGRFPresetToConfig(const char *config_name, struct GRFConfig *config); void DeleteGRFPresetFromConfig(const char *config_name); uint GetCompanySettingIndex(const char *name); void SetDefaultCompanySettings(CompanyID cid); #if defined(ENABLE_NETWORK) void SyncCompanySettings(); #else /* ENABLE_NETWORK */ static inline void SyncCompanySettings() {} #endif /* ENABLE_NETWORK */ #endif /* SETTINGS_FUNC_H */ openttd-1.3.3/src/error.h0000644000000000000000000000525612246102611013765 0ustar rootroot/* $Id: error.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file error.h Functions related to errors. */ #ifndef ERROR_H #define ERROR_H #include "strings_type.h" #include "company_type.h" #include "core/geometry_type.hpp" /** Message severity/type */ enum WarningLevel { WL_INFO, ///< Used for DoCommand-like (and some non-fatal AI GUI) errors/information WL_WARNING, ///< Other information WL_ERROR, ///< Errors (eg. saving/loading failed) WL_CRITICAL, ///< Critical errors, the MessageBox is shown in all cases }; /** The data of the error message. */ class ErrorMessageData { protected: uint duration; ///< Length of display of the message. 0 means forever, uint64 decode_params[20]; ///< Parameters of the message strings. const char *strings[20]; ///< Copies of raw strings that were used. uint textref_stack_size; ///< Number of uint32 values to put on the #TextRefStack for the error message. uint32 textref_stack[16]; ///< Values to put on the #TextRefStack for the error message. StringID summary_msg; ///< General error message showed in first line. Must be valid. StringID detailed_msg; ///< Detailed error message showed in second line. Can be #INVALID_STRING_ID. Point position; ///< Position of the error message window. CompanyID face; ///< Company belonging to the face being shown. #INVALID_COMPANY if no face present. public: ErrorMessageData(const ErrorMessageData &data); ~ErrorMessageData(); ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration = 0, int x = 0, int y = 0, uint textref_stack_size = 0, const uint32 *textref_stack = NULL); void SetDParam(uint n, uint64 v); void SetDParamStr(uint n, const char *str); void CopyOutDParams(); }; void ScheduleErrorMessage(const ErrorMessageData &data); void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x = 0, int y = 0, uint textref_stack_size = 0, const uint32 *textref_stack = NULL); void ClearErrorMessages(); void ShowFirstError(); void UnshowCriticalError(); #endif /* ERROR_H */ openttd-1.3.3/src/terraform_cmd.cpp0000644000000000000000000003707212246102610016013 0ustar rootroot/* $Id: terraform_cmd.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file terraform_cmd.cpp Commands related to terraforming. */ #include "stdafx.h" #include "command_func.h" #include "tunnel_map.h" #include "bridge_map.h" #include "viewport_func.h" #include "genworld.h" #include "object_base.h" #include "company_base.h" #include "company_func.h" #include "table/strings.h" /* * In one terraforming command all four corners of a initial tile can be raised/lowered (though this is not available to the player). * The maximal amount of height modifications is achieved when raising a complete flat land from sea level to MAX_TILE_HEIGHT or vice versa. * This affects all corners with a manhatten distance smaller than MAX_TILE_HEIGHT to one of the initial 4 corners. * Their maximal amount is computed to 4 * \sum_{i=1}^{h_max} i = 2 * h_max * (h_max + 1). */ static const int TERRAFORMER_MODHEIGHT_SIZE = 2 * MAX_TILE_HEIGHT * (MAX_TILE_HEIGHT + 1); /* * The maximal amount of affected tiles (i.e. the tiles that incident with one of the corners above, is computed similar to * 1 + 4 * \sum_{i=1}^{h_max} (i+1) = 1 + 2 * h_max + (h_max + 3). */ static const int TERRAFORMER_TILE_TABLE_SIZE = 1 + 2 * MAX_TILE_HEIGHT * (MAX_TILE_HEIGHT + 3); struct TerraformerHeightMod { TileIndex tile; ///< Referenced tile. byte height; ///< New TileHeight (height of north corner) of the tile. }; struct TerraformerState { int modheight_count; ///< amount of entries in "modheight". int tile_table_count; ///< amount of entries in "tile_table". /** * Dirty tiles, i.e.\ at least one corner changed. * * This array contains the tiles which are or will be marked as dirty. * * @ingroup dirty */ TileIndex tile_table[TERRAFORMER_TILE_TABLE_SIZE]; TerraformerHeightMod modheight[TERRAFORMER_MODHEIGHT_SIZE]; ///< Height modifications. }; TileIndex _terraform_err_tile; ///< first tile we couldn't terraform /** * Gets the TileHeight (height of north corner) of a tile as of current terraforming progress. * * @param ts TerraformerState. * @param tile Tile. * @return TileHeight. */ static int TerraformGetHeightOfTile(const TerraformerState *ts, TileIndex tile) { const TerraformerHeightMod *mod = ts->modheight; for (int count = ts->modheight_count; count != 0; count--, mod++) { if (mod->tile == tile) return mod->height; } /* TileHeight unchanged so far, read value from map. */ return TileHeight(tile); } /** * Stores the TileHeight (height of north corner) of a tile in a TerraformerState. * * @param ts TerraformerState. * @param tile Tile. * @param height New TileHeight. */ static void TerraformSetHeightOfTile(TerraformerState *ts, TileIndex tile, int height) { /* Find tile in the "modheight" table. * Note: In a normal user-terraform command the tile will not be found in the "modheight" table. * But during house- or industry-construction multiple corners can be terraformed at once. */ TerraformerHeightMod *mod = ts->modheight; int count = ts->modheight_count; while ((count > 0) && (mod->tile != tile)) { mod++; count--; } /* New entry? */ if (count == 0) { assert(ts->modheight_count < TERRAFORMER_MODHEIGHT_SIZE); ts->modheight_count++; } /* Finally store the new value */ mod->tile = tile; mod->height = (byte)height; } /** * Adds a tile to the "tile_table" in a TerraformerState. * * @param ts TerraformerState. * @param tile Tile. * @ingroup dirty */ static void TerraformAddDirtyTile(TerraformerState *ts, TileIndex tile) { int count = ts->tile_table_count; for (TileIndex *t = ts->tile_table; count != 0; count--, t++) { if (*t == tile) return; } assert(ts->tile_table_count < TERRAFORMER_TILE_TABLE_SIZE); ts->tile_table[ts->tile_table_count++] = tile; } /** * Adds all tiles that incident with the north corner of a specific tile to the "tile_table" in a TerraformerState. * * @param ts TerraformerState. * @param tile Tile. * @ingroup dirty */ static void TerraformAddDirtyTileAround(TerraformerState *ts, TileIndex tile) { /* Make sure all tiles passed to TerraformAddDirtyTile are within [0, MapSize()] */ if (TileY(tile) >= 1) TerraformAddDirtyTile(ts, tile + TileDiffXY( 0, -1)); if (TileY(tile) >= 1 && TileX(tile) >= 1) TerraformAddDirtyTile(ts, tile + TileDiffXY(-1, -1)); if (TileX(tile) >= 1) TerraformAddDirtyTile(ts, tile + TileDiffXY(-1, 0)); TerraformAddDirtyTile(ts, tile); } /** * Terraform the north corner of a tile to a specific height. * * @param ts TerraformerState. * @param tile Tile. * @param height Aimed height. * @return Error code or cost. */ static CommandCost TerraformTileHeight(TerraformerState *ts, TileIndex tile, int height) { assert(tile < MapSize()); /* Check range of destination height */ if (height < 0) return_cmd_error(STR_ERROR_ALREADY_AT_SEA_LEVEL); if (height > (int)MAX_TILE_HEIGHT) return_cmd_error(STR_ERROR_TOO_HIGH); /* * Check if the terraforming has any effect. * This can only be true, if multiple corners of the start-tile are terraformed (i.e. the terraforming is done by towns/industries etc.). * In this case the terraforming should fail. (Don't know why.) */ if (height == TerraformGetHeightOfTile(ts, tile)) return CMD_ERROR; /* Check "too close to edge of map". Only possible when freeform-edges is off. */ uint x = TileX(tile); uint y = TileY(tile); if (!_settings_game.construction.freeform_edges && ((x <= 1) || (y <= 1) || (x >= MapMaxX() - 1) || (y >= MapMaxY() - 1))) { /* * Determine a sensible error tile */ if (x == 1) x = 0; if (y == 1) y = 0; _terraform_err_tile = TileXY(x, y); return_cmd_error(STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP); } /* Mark incident tiles that are involved in the terraforming. */ TerraformAddDirtyTileAround(ts, tile); /* Store the height modification */ TerraformSetHeightOfTile(ts, tile, height); CommandCost total_cost(EXPENSES_CONSTRUCTION); /* Increment cost */ total_cost.AddCost(_price[PR_TERRAFORM]); /* Recurse to neighboured corners if height difference is larger than 1 */ { const TileIndexDiffC *ttm; TileIndex orig_tile = tile; static const TileIndexDiffC _terraform_tilepos[] = { { 1, 0}, // move to tile in SE {-2, 0}, // undo last move, and move to tile in NW { 1, 1}, // undo last move, and move to tile in SW { 0, -2} // undo last move, and move to tile in NE }; for (ttm = _terraform_tilepos; ttm != endof(_terraform_tilepos); ttm++) { tile += ToTileIndexDiff(*ttm); if (tile >= MapSize()) continue; /* Make sure we don't wrap around the map */ if (Delta(TileX(orig_tile), TileX(tile)) == MapSizeX() - 1) continue; if (Delta(TileY(orig_tile), TileY(tile)) == MapSizeY() - 1) continue; /* Get TileHeight of neighboured tile as of current terraform progress */ int r = TerraformGetHeightOfTile(ts, tile); int height_diff = height - r; /* Is the height difference to the neighboured corner greater than 1? */ if (abs(height_diff) > 1) { /* Terraform the neighboured corner. The resulting height difference should be 1. */ height_diff += (height_diff < 0 ? 1 : -1); CommandCost cost = TerraformTileHeight(ts, tile, r + height_diff); if (cost.Failed()) return cost; total_cost.AddCost(cost); } } } return total_cost; } /** * Terraform land * @param tile tile to terraform * @param flags for this command type * @param p1 corners to terraform (SLOPE_xxx) * @param p2 direction; eg up (non-zero) or down (zero) * @param text unused * @return the cost of this operation or an error */ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { _terraform_err_tile = INVALID_TILE; CommandCost total_cost(EXPENSES_CONSTRUCTION); int direction = (p2 != 0 ? 1 : -1); TerraformerState ts; ts.modheight_count = ts.tile_table_count = 0; /* Compute the costs and the terraforming result in a model of the landscape */ if ((p1 & SLOPE_W) != 0 && tile + TileDiffXY(1, 0) < MapSize()) { TileIndex t = tile + TileDiffXY(1, 0); CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction); if (cost.Failed()) return cost; total_cost.AddCost(cost); } if ((p1 & SLOPE_S) != 0 && tile + TileDiffXY(1, 1) < MapSize()) { TileIndex t = tile + TileDiffXY(1, 1); CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction); if (cost.Failed()) return cost; total_cost.AddCost(cost); } if ((p1 & SLOPE_E) != 0 && tile + TileDiffXY(0, 1) < MapSize()) { TileIndex t = tile + TileDiffXY(0, 1); CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction); if (cost.Failed()) return cost; total_cost.AddCost(cost); } if ((p1 & SLOPE_N) != 0) { TileIndex t = tile + TileDiffXY(0, 0); CommandCost cost = TerraformTileHeight(&ts, t, TileHeight(t) + direction); if (cost.Failed()) return cost; total_cost.AddCost(cost); } /* Check if the terraforming is valid wrt. tunnels, bridges and objects on the surface * Pass == 0: Collect tileareas which are caused to be auto-cleared. * Pass == 1: Collect the actual cost. */ for (int pass = 0; pass < 2; pass++) { TileIndex *ti = ts.tile_table; for (int count = ts.tile_table_count; count != 0; count--, ti++) { TileIndex tile = *ti; assert(tile < MapSize()); /* MP_VOID tiles can be terraformed but as tunnels and bridges * cannot go under / over these tiles they don't need checking. */ if (IsTileType(tile, MP_VOID)) continue; /* Find new heights of tile corners */ int z_N = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0)); int z_W = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0)); int z_S = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1)); int z_E = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1)); /* Find min and max height of tile */ int z_min = min(min(z_N, z_W), min(z_S, z_E)); int z_max = max(max(z_N, z_W), max(z_S, z_E)); /* Compute tile slope */ Slope tileh = (z_max > z_min + 1 ? SLOPE_STEEP : SLOPE_FLAT); if (z_W > z_min) tileh |= SLOPE_W; if (z_S > z_min) tileh |= SLOPE_S; if (z_E > z_min) tileh |= SLOPE_E; if (z_N > z_min) tileh |= SLOPE_N; if (pass == 0) { /* Check if bridge would take damage */ if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) && GetBridgeHeight(GetSouthernBridgeEnd(tile)) <= z_max) { _terraform_err_tile = tile; // highlight the tile under the bridge return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } /* Check if tunnel would take damage */ if (direction == -1 && IsTunnelInWay(tile, z_min)) { _terraform_err_tile = tile; // highlight the tile above the tunnel return_cmd_error(STR_ERROR_EXCAVATION_WOULD_DAMAGE); } } /* Is the tile already cleared? */ const ClearedObjectArea *coa = FindClearedObject(tile); bool indirectly_cleared = coa != NULL && coa->first_tile != tile; /* Check tiletype-specific things, and add extra-cost */ const bool curr_gen = _generating_world; if (_game_mode == GM_EDITOR) _generating_world = true; // used to create green terraformed land DoCommandFlag tile_flags = flags | DC_AUTO | DC_FORCE_CLEAR_TILE; if (pass == 0) { tile_flags &= ~DC_EXEC; tile_flags |= DC_NO_MODIFY_TOWN_RATING; } CommandCost cost; if (indirectly_cleared) { cost = DoCommand(tile, 0, 0, tile_flags, CMD_LANDSCAPE_CLEAR); } else { cost = _tile_type_procs[GetTileType(tile)]->terraform_tile_proc(tile, tile_flags, z_min, tileh); } _generating_world = curr_gen; if (cost.Failed()) { _terraform_err_tile = tile; return cost; } if (pass == 1) total_cost.AddCost(cost); } } Company *c = Company::GetIfValid(_current_company); if (c != NULL && (int)GB(c->terraform_limit, 16, 16) < ts.modheight_count) { return_cmd_error(STR_ERROR_TERRAFORM_LIMIT_REACHED); } if (flags & DC_EXEC) { /* change the height */ { int count; TerraformerHeightMod *mod; mod = ts.modheight; for (count = ts.modheight_count; count != 0; count--, mod++) { TileIndex til = mod->tile; SetTileHeight(til, mod->height); } } /* finally mark the dirty tiles dirty */ { int count; TileIndex *ti = ts.tile_table; for (count = ts.tile_table_count; count != 0; count--, ti++) { MarkTileDirtyByTile(*ti); } } if (c != NULL) c->terraform_limit -= ts.modheight_count << 16; } return total_cost; } /** * Levels a selected (rectangle) area of land * @param tile end tile of area-drag * @param flags for this command type * @param p1 start tile of area drag * @param p2 various bitstuffed data. * bit 0: Whether to use the Orthogonal (0) or Diagonal (1) iterator. * bits 1 - 2: Mode of leveling \c LevelMode. * @param text unused * @return the cost of this operation or an error */ CommandCost CmdLevelLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (p1 >= MapSize()) return CMD_ERROR; _terraform_err_tile = INVALID_TILE; /* remember level height */ uint oldh = TileHeight(p1); /* compute new height */ uint h = oldh; LevelMode lm = (LevelMode)GB(p2, 1, 2); switch (lm) { case LM_LEVEL: break; case LM_RAISE: h++; break; case LM_LOWER: h--; break; default: return CMD_ERROR; } /* Check range of destination height */ if (h > MAX_TILE_HEIGHT) return_cmd_error((oldh == 0) ? STR_ERROR_ALREADY_AT_SEA_LEVEL : STR_ERROR_TOO_HIGH); Money money = GetAvailableMoneyForCommand(); CommandCost cost(EXPENSES_CONSTRUCTION); CommandCost last_error(lm == LM_LEVEL ? STR_ERROR_ALREADY_LEVELLED : INVALID_STRING_ID); bool had_success = false; const Company *c = Company::GetIfValid(_current_company); int limit = (c == NULL ? INT32_MAX : GB(c->terraform_limit, 16, 16)); if (limit == 0) return_cmd_error(STR_ERROR_TERRAFORM_LIMIT_REACHED); TileArea ta(tile, p1); TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(ta); for (; *iter != INVALID_TILE; ++(*iter)) { TileIndex t = *iter; uint curh = TileHeight(t); while (curh != h) { CommandCost ret = DoCommand(t, SLOPE_N, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND); if (ret.Failed()) { last_error = ret; /* Did we reach the limit? */ if (ret.GetErrorMessage() == STR_ERROR_TERRAFORM_LIMIT_REACHED) limit = 0; break; } if (flags & DC_EXEC) { money -= ret.GetCost(); if (money < 0) { _additional_cash_required = ret.GetCost(); delete iter; return cost; } DoCommand(t, SLOPE_N, (curh > h) ? 0 : 1, flags, CMD_TERRAFORM_LAND); } else { /* When we're at the terraform limit we better bail (unneeded) testing as well. * This will probably cause the terraforming cost to be underestimated, but only * when it's near the terraforming limit. Even then, the estimation is * completely off due to it basically counting terraforming double, so it being * cut off earlier might even give a better estimate in some cases. */ if (--limit <= 0) { had_success = true; break; } } cost.AddCost(ret); curh += (curh > h) ? -1 : 1; had_success = true; } if (limit <= 0) break; } delete iter; return had_success ? cost : last_error; } openttd-1.3.3/src/newgrf_airport.h0000644000000000000000000001263712246102611015665 0ustar rootroot/* $Id: newgrf_airport.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_airport.h NewGRF handling of airports. */ #ifndef NEWGRF_AIRPORT_H #define NEWGRF_AIRPORT_H #include "airport.h" #include "date_type.h" #include "newgrf_class.h" #include "newgrf_commons.h" #include "tilearea_type.h" /** Copy from station_map.h */ typedef byte StationGfx; /** Tile-offset / AirportTileID pair. */ struct AirportTileTable { TileIndexDiffC ti; ///< Tile offset from the top-most airport tile. StationGfx gfx; ///< AirportTile to use for this tile. }; /** Iterator to iterate over all tiles belonging to an airport spec. */ class AirportTileTableIterator : public TileIterator { private: const AirportTileTable *att; ///< The offsets. TileIndex base_tile; ///< The tile we base the offsets off. public: /** * Construct the iterator. * @param att The TileTable we want to iterate over. * @param base_tile The basetile for all offsets. */ AirportTileTableIterator(const AirportTileTable *att, TileIndex base_tile) : TileIterator(base_tile + ToTileIndexDiff(att->ti)), att(att), base_tile(base_tile) { } inline TileIterator& operator ++() { this->att++; if (this->att->ti.x == -0x80) { this->tile = INVALID_TILE; } else { this->tile = this->base_tile + ToTileIndexDiff(this->att->ti); } return *this; } /** Get the StationGfx for the current tile. */ StationGfx GetStationGfx() const { return this->att->gfx; } virtual AirportTileTableIterator *Clone() const { return new AirportTileTableIterator(*this); } }; /** List of default airport classes. */ enum AirportClassID { APC_BEGIN = 0, ///< Lowest valid airport class id APC_SMALL = 0, ///< id for small airports class APC_LARGE, ///< id for large airports class APC_HUB, ///< id for hub airports class APC_HELIPORT, ///< id for heliports APC_MAX = 16, ///< maximum number of airport classes }; /** Allow incrementing of AirportClassID variables */ DECLARE_POSTFIX_INCREMENT(AirportClassID) /** TTDP airport types. Used to map our types to TTDPatch's */ enum TTDPAirportType { ATP_TTDP_SMALL, ///< Same as AT_SMALL ATP_TTDP_LARGE, ///< Same as AT_LARGE ATP_TTDP_HELIPORT, ///< Same as AT_HELIPORT ATP_TTDP_OILRIG, ///< Same as AT_OILRIG }; /** A list of all hangar tiles in an airport */ struct HangarTileTable { TileIndexDiffC ti; ///< Tile offset from the top-most airport tile. Direction dir; ///< Direction of the exit. byte hangar_num; ///< The hanger to which this tile belongs. }; /** * Defines the data structure for an airport. */ struct AirportSpec { const struct AirportFTAClass *fsm; ///< the finite statemachine for the default airports const AirportTileTable * const *table; ///< list of the tiles composing the airport Direction *rotation; ///< the rotation of each tiletable byte num_table; ///< number of elements in the table const HangarTileTable *depot_table; ///< gives the position of the depots on the airports byte nof_depots; ///< the number of hangar tiles in this airport byte size_x; ///< size of airport in x direction byte size_y; ///< size of airport in y direction byte noise_level; ///< noise that this airport generates byte catchment; ///< catchment area of this airport Year min_year; ///< first year the airport is available Year max_year; ///< last year the airport is available StringID name; ///< name of this airport TTDPAirportType ttd_airport_type; ///< ttdpatch airport type (Small/Large/Helipad/Oilrig) AirportClassID cls_id; ///< the class to which this airport type belongs SpriteID preview_sprite; ///< preview sprite for this airport uint16 maintenance_cost; ///< maintenance cost multiplier /* Newgrf data */ bool enabled; ///< Entity still available (by default true). Newgrf can disable it, though. struct GRFFileProps grf_prop; ///< Properties related to the grf file. static const AirportSpec *Get(byte type); static AirportSpec *GetWithoutOverride(byte type); bool IsAvailable() const; static void ResetAirports(); /** Get the index of this spec. */ byte GetIndex() const { assert(this >= specs && this < endof(specs)); return (byte)(this - specs); } static AirportSpec dummy; ///< The dummy airport. private: static AirportSpec specs[NUM_AIRPORTS]; ///< Specs of the airports. }; /** Information related to airport classes. */ typedef NewGRFClass AirportClass; void BindAirportSpecs(); StringID GetAirportTextCallback(const AirportSpec *as, byte layout, uint16 callback); #endif /* NEWGRF_AIRPORT_H */ openttd-1.3.3/src/road_cmd.h0000644000000000000000000000164512246102611014402 0ustar rootroot/* $Id: road_cmd.h 18809 2010-01-15 16:41:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_cmd.h Road related functions. */ #ifndef ROAD_CMD_H #define ROAD_CMD_H #include "direction_type.h" #include "road_type.h" void DrawRoadDepotSprite(int x, int y, DiagDirection dir, RoadType rt); void UpdateNearestTownForRoadTiles(bool invalidate); #endif /* ROAD_CMD_H */ openttd-1.3.3/src/newgrf_airporttiles.h0000644000000000000000000000702512246102611016721 0ustar rootroot/* $Id: newgrf_airporttiles.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_airporttiles.h NewGRF handling of airport tiles. */ #ifndef NEWGRF_AIRPORTTILES_H #define NEWGRF_AIRPORTTILES_H #include "airport.h" #include "station_map.h" #include "newgrf_animation_type.h" #include "newgrf_commons.h" #include "newgrf_spritegroup.h" /** Scope resolver for handling the tiles of an airport. */ struct AirportTileScopeResolver : public ScopeResolver { struct Station *st; ///< %Station of the airport for which the callback is run, or \c NULL for build gui. byte airport_id; ///< Type of airport for which the callback is run. TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks. AirportTileScopeResolver(ResolverObject *ro, const AirportTileSpec *ats, TileIndex tile, Station *st); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; }; /** Resolver for tiles of an airport. */ struct AirportTileResolverObject : public ResolverObject { AirportTileScopeResolver tiles_scope; ///< Scope resolver for the tiles. AirportTileResolverObject(const AirportTileSpec *ats, TileIndex tile, Station *st, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { switch (scope) { case VSG_SCOPE_SELF: return &tiles_scope; default: return ResolverObject::GetScope(scope, relative); } } }; /** * Defines the data structure of each individual tile of an airport. */ struct AirportTileSpec { AnimationInfo animation; ///< Information about the animation. StringID name; ///< Tile Subname string, land information on this tile will give you "AirportName (TileSubname)" uint8 callback_mask; ///< Bitmask telling which grf callback is set uint8 animation_special_flags; ///< Extra flags to influence the animation bool enabled; ///< entity still available (by default true). newgrf can disable it, though GRFFileProps grf_prop; ///< properties related the the grf file static const AirportTileSpec *Get(StationGfx gfx); static const AirportTileSpec *GetByTile(TileIndex tile); static void ResetAirportTiles(); private: static AirportTileSpec tiles[NUM_AIRPORTTILES]; friend void AirportTileOverrideManager::SetEntitySpec(const AirportTileSpec *airpts); }; StationGfx GetTranslatedAirportTileID(StationGfx gfx); void AnimateAirportTile(TileIndex tile); void AirportTileAnimationTrigger(Station *st, TileIndex tile, AirpAnimationTrigger trigger, CargoID cargo_type = CT_INVALID); void AirportAnimationTrigger(Station *st, AirpAnimationTrigger trigger, CargoID cargo_type = CT_INVALID); bool DrawNewAirportTile(TileInfo *ti, Station *st, StationGfx gfx, const AirportTileSpec *airts); #endif /* NEWGRF_AIRPORTTILES_H */ openttd-1.3.3/src/openttd.h0000644000000000000000000000633312246102611014306 0ustar rootroot/* $Id: openttd.h 23618 2011-12-19 20:58:59Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file openttd.h Some generic types. */ #ifndef OPENTTD_H #define OPENTTD_H #include "core/enum_type.hpp" /** Mode which defines the state of the game. */ enum GameMode { GM_MENU, GM_NORMAL, GM_EDITOR, GM_BOOTSTRAP }; /** Mode which defines what mode we're switching to. */ enum SwitchMode { SM_NONE, SM_NEWGAME, ///< New Game --> 'Random game'. SM_RESTARTGAME, ///< Restart --> 'Random game' with current settings. SM_EDITOR, ///< Switch to scenario editor. SM_LOAD_GAME, ///< Load game, Play Scenario. SM_MENU, ///< Switch to game intro menu. SM_SAVE_GAME, ///< Save game. SM_SAVE_HEIGHTMAP, ///< Save heightmap. SM_GENRANDLAND, ///< Generate random land within scenario editor. SM_LOAD_SCENARIO, ///< Load scenario from scenario editor. SM_START_HEIGHTMAP, ///< Load a heightmap and start a new game from it. SM_LOAD_HEIGHTMAP, ///< Load heightmap from scenario editor. }; /** Display Options */ enum DisplayOptions { DO_SHOW_TOWN_NAMES = 0, ///< Display town names. DO_SHOW_STATION_NAMES = 1, ///< Display station names. DO_SHOW_SIGNS = 2, ///< Display signs. DO_FULL_ANIMATION = 3, ///< Perform palette animation. DO_FULL_DETAIL = 5, ///< Also draw details of track and roads. DO_SHOW_WAYPOINT_NAMES = 6, ///< Display waypoint names. DO_SHOW_COMPETITOR_SIGNS = 7, ///< Display signs, station names and waypoint names of opponent companies. Buoys and oilrig-stations are always shown, even if this option is turned off. }; extern GameMode _game_mode; extern SwitchMode _switch_mode; extern bool _exit_game; /** Modes of pausing we've got */ enum PauseMode { PM_UNPAUSED = 0, ///< A normal unpaused game PM_PAUSED_NORMAL = 1 << 0, ///< A game normally paused PM_PAUSED_SAVELOAD = 1 << 1, ///< A game paused for saving/loading PM_PAUSED_JOIN = 1 << 2, ///< A game paused for 'pause_on_join' PM_PAUSED_ERROR = 1 << 3, ///< A game paused because a (critical) error PM_PAUSED_ACTIVE_CLIENTS = 1 << 4, ///< A game paused for 'min_active_clients' PM_PAUSED_GAME_SCRIPT = 1 << 5, ///< A game paused by a game script /** Pause mode bits when paused for network reasons. */ PMB_PAUSED_NETWORK = PM_PAUSED_ACTIVE_CLIENTS | PM_PAUSED_JOIN, }; DECLARE_ENUM_AS_BIT_SET(PauseMode) typedef SimpleTinyEnumT PauseModeByte; /** The current pause mode */ extern PauseModeByte _pause_mode; void AskExitGame(); void AskExitToGameMenu(); int ttd_main(int argc, char *argv[]); void HandleExitGameRequest(); void SwitchToMode(SwitchMode new_mode); #endif /* OPENTTD_H */ openttd-1.3.3/src/rail_map.h0000644000000000000000000003726512246102611014425 0ustar rootroot/* $Id: rail_map.h 24367 2012-07-01 23:12:50Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file rail_map.h Hides the direct accesses to the map array with map accessors */ #ifndef RAIL_MAP_H #define RAIL_MAP_H #include "rail_type.h" #include "depot_type.h" #include "signal_func.h" #include "track_func.h" #include "tile_map.h" #include "signal_type.h" /** Different types of Rail-related tiles */ enum RailTileType { RAIL_TILE_NORMAL = 0, ///< Normal rail tile without signals RAIL_TILE_SIGNALS = 1, ///< Normal rail tile with signals RAIL_TILE_DEPOT = 3, ///< Depot (one entrance) }; /** * Returns the RailTileType (normal with or without signals, * waypoint or depot). * @param t the tile to get the information from * @pre IsTileType(t, MP_RAILWAY) * @return the RailTileType */ static inline RailTileType GetRailTileType(TileIndex t) { assert(IsTileType(t, MP_RAILWAY)); return (RailTileType)GB(_m[t].m5, 6, 2); } /** * Returns whether this is plain rails, with or without signals. Iow, if this * tiles RailTileType is RAIL_TILE_NORMAL or RAIL_TILE_SIGNALS. * @param t the tile to get the information from * @pre IsTileType(t, MP_RAILWAY) * @return true if and only if the tile is normal rail (with or without signals) */ static inline bool IsPlainRail(TileIndex t) { RailTileType rtt = GetRailTileType(t); return rtt == RAIL_TILE_NORMAL || rtt == RAIL_TILE_SIGNALS; } /** * Checks whether the tile is a rail tile or rail tile with signals. * @param t the tile to get the information from * @return true if and only if the tile is normal rail (with or without signals) */ static inline bool IsPlainRailTile(TileIndex t) { return IsTileType(t, MP_RAILWAY) && IsPlainRail(t); } /** * Checks if a rail tile has signals. * @param t the tile to get the information from * @pre IsTileType(t, MP_RAILWAY) * @return true if and only if the tile has signals */ static inline bool HasSignals(TileIndex t) { return GetRailTileType(t) == RAIL_TILE_SIGNALS; } /** * Add/remove the 'has signal' bit from the RailTileType * @param tile the tile to add/remove the signals to/from * @param signals whether the rail tile should have signals or not * @pre IsPlainRailTile(tile) */ static inline void SetHasSignals(TileIndex tile, bool signals) { assert(IsPlainRailTile(tile)); SB(_m[tile].m5, 6, 1, signals); } /** * Is this rail tile a rail depot? * @param t the tile to get the information from * @pre IsTileType(t, MP_RAILWAY) * @return true if and only if the tile is a rail depot */ static inline bool IsRailDepot(TileIndex t) { return GetRailTileType(t) == RAIL_TILE_DEPOT; } /** * Is this tile rail tile and a rail depot? * @param t the tile to get the information from * @return true if and only if the tile is a rail depot */ static inline bool IsRailDepotTile(TileIndex t) { return IsTileType(t, MP_RAILWAY) && IsRailDepot(t); } /** * Gets the rail type of the given tile * @param t the tile to get the rail type from * @return the rail type of the tile */ static inline RailType GetRailType(TileIndex t) { return (RailType)GB(_m[t].m3, 0, 4); } /** * Sets the rail type of the given tile * @param t the tile to set the rail type of * @param r the new rail type for the tile */ static inline void SetRailType(TileIndex t, RailType r) { SB(_m[t].m3, 0, 4, r); } /** * Gets the track bits of the given tile * @param tile the tile to get the track bits from * @return the track bits of the tile */ static inline TrackBits GetTrackBits(TileIndex tile) { assert(IsPlainRailTile(tile)); return (TrackBits)GB(_m[tile].m5, 0, 6); } /** * Sets the track bits of the given tile * @param t the tile to set the track bits of * @param b the new track bits for the tile */ static inline void SetTrackBits(TileIndex t, TrackBits b) { assert(IsPlainRailTile(t)); SB(_m[t].m5, 0, 6, b); } /** * Returns whether the given track is present on the given tile. * @param tile the tile to check the track presence of * @param track the track to search for on the tile * @pre IsPlainRailTile(tile) * @return true if and only if the given track exists on the tile */ static inline bool HasTrack(TileIndex tile, Track track) { return HasBit(GetTrackBits(tile), track); } /** * Returns the direction the depot is facing to * @param t the tile to get the depot facing from * @pre IsRailDepotTile(t) * @return the direction the depot is facing */ static inline DiagDirection GetRailDepotDirection(TileIndex t) { return (DiagDirection)GB(_m[t].m5, 0, 2); } /** * Returns the track of a depot, ignoring direction * @pre IsRailDepotTile(t) * @param t the tile to get the depot track from * @return the track of the depot */ static inline Track GetRailDepotTrack(TileIndex t) { return DiagDirToDiagTrack(GetRailDepotDirection(t)); } /** * Returns the reserved track bits of the tile * @pre IsPlainRailTile(t) * @param t the tile to query * @return the track bits */ static inline TrackBits GetRailReservationTrackBits(TileIndex t) { assert(IsPlainRailTile(t)); byte track_b = GB(_m[t].m2, 8, 3); Track track = (Track)(track_b - 1); // map array saves Track+1 if (track_b == 0) return TRACK_BIT_NONE; return (TrackBits)(TrackToTrackBits(track) | (HasBit(_m[t].m2, 11) ? TrackToTrackBits(TrackToOppositeTrack(track)) : 0)); } /** * Sets the reserved track bits of the tile * @pre IsPlainRailTile(t) && !TracksOverlap(b) * @param t the tile to change * @param b the track bits */ static inline void SetTrackReservation(TileIndex t, TrackBits b) { assert(IsPlainRailTile(t)); assert(b != INVALID_TRACK_BIT); assert(!TracksOverlap(b)); Track track = RemoveFirstTrack(&b); SB(_m[t].m2, 8, 3, track == INVALID_TRACK ? 0 : track + 1); SB(_m[t].m2, 11, 1, (byte)(b != TRACK_BIT_NONE)); } /** * Try to reserve a specific track on a tile * @pre IsPlainRailTile(t) && HasTrack(tile, t) * @param tile the tile * @param t the rack to reserve * @return true if successful */ static inline bool TryReserveTrack(TileIndex tile, Track t) { assert(HasTrack(tile, t)); TrackBits bits = TrackToTrackBits(t); TrackBits res = GetRailReservationTrackBits(tile); if ((res & bits) != TRACK_BIT_NONE) return false; // already reserved res |= bits; if (TracksOverlap(res)) return false; // crossing reservation present SetTrackReservation(tile, res); return true; } /** * Lift the reservation of a specific track on a tile * @pre IsPlainRailTile(t) && HasTrack(tile, t) * @param tile the tile * @param t the track to free */ static inline void UnreserveTrack(TileIndex tile, Track t) { assert(HasTrack(tile, t)); TrackBits res = GetRailReservationTrackBits(tile); res &= ~TrackToTrackBits(t); SetTrackReservation(tile, res); } /** * Get the reservation state of the depot * @pre IsRailDepot(t) * @param t the depot tile * @return reservation state */ static inline bool HasDepotReservation(TileIndex t) { assert(IsRailDepot(t)); return HasBit(_m[t].m5, 4); } /** * Set the reservation state of the depot * @pre IsRailDepot(t) * @param t the depot tile * @param b the reservation state */ static inline void SetDepotReservation(TileIndex t, bool b) { assert(IsRailDepot(t)); SB(_m[t].m5, 4, 1, (byte)b); } /** * Get the reserved track bits for a depot * @pre IsRailDepot(t) * @param t the tile * @return reserved track bits */ static inline TrackBits GetDepotReservationTrackBits(TileIndex t) { return HasDepotReservation(t) ? TrackToTrackBits(GetRailDepotTrack(t)) : TRACK_BIT_NONE; } static inline bool IsPbsSignal(SignalType s) { return s == SIGTYPE_PBS || s == SIGTYPE_PBS_ONEWAY; } static inline SignalType GetSignalType(TileIndex t, Track track) { assert(GetRailTileType(t) == RAIL_TILE_SIGNALS); byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 0; return (SignalType)GB(_m[t].m2, pos, 3); } static inline void SetSignalType(TileIndex t, Track track, SignalType s) { assert(GetRailTileType(t) == RAIL_TILE_SIGNALS); byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 0; SB(_m[t].m2, pos, 3, s); if (track == INVALID_TRACK) SB(_m[t].m2, 4, 3, s); } static inline bool IsPresignalEntry(TileIndex t, Track track) { return GetSignalType(t, track) == SIGTYPE_ENTRY || GetSignalType(t, track) == SIGTYPE_COMBO; } static inline bool IsPresignalExit(TileIndex t, Track track) { return GetSignalType(t, track) == SIGTYPE_EXIT || GetSignalType(t, track) == SIGTYPE_COMBO; } /** One-way signals can't be passed the 'wrong' way. */ static inline bool IsOnewaySignal(TileIndex t, Track track) { return GetSignalType(t, track) != SIGTYPE_PBS; } static inline void CycleSignalSide(TileIndex t, Track track) { byte sig; byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 6; sig = GB(_m[t].m3, pos, 2); if (--sig == 0) sig = IsPbsSignal(GetSignalType(t, track)) ? 2 : 3; SB(_m[t].m3, pos, 2, sig); } static inline SignalVariant GetSignalVariant(TileIndex t, Track track) { byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 7 : 3; return (SignalVariant)GB(_m[t].m2, pos, 1); } static inline void SetSignalVariant(TileIndex t, Track track, SignalVariant v) { byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 7 : 3; SB(_m[t].m2, pos, 1, v); if (track == INVALID_TRACK) SB(_m[t].m2, 7, 1, v); } /** * Set the states of the signals (Along/AgainstTrackDir) * @param tile the tile to set the states for * @param state the new state */ static inline void SetSignalStates(TileIndex tile, uint state) { SB(_m[tile].m4, 4, 4, state); } /** * Set the states of the signals (Along/AgainstTrackDir) * @param tile the tile to set the states for * @return the state of the signals */ static inline uint GetSignalStates(TileIndex tile) { return GB(_m[tile].m4, 4, 4); } /** * Get the state of a single signal * @param t the tile to get the signal state for * @param signalbit the signal * @return the state of the signal */ static inline SignalState GetSingleSignalState(TileIndex t, byte signalbit) { return (SignalState)HasBit(GetSignalStates(t), signalbit); } /** * Set whether the given signals are present (Along/AgainstTrackDir) * @param tile the tile to set the present signals for * @param signals the signals that have to be present */ static inline void SetPresentSignals(TileIndex tile, uint signals) { SB(_m[tile].m3, 4, 4, signals); } /** * Get whether the given signals are present (Along/AgainstTrackDir) * @param tile the tile to get the present signals for * @return the signals that are present */ static inline uint GetPresentSignals(TileIndex tile) { return GB(_m[tile].m3, 4, 4); } /** * Checks whether the given signals is present * @param t the tile to check on * @param signalbit the signal * @return true if and only if the signal is present */ static inline bool IsSignalPresent(TileIndex t, byte signalbit) { return HasBit(GetPresentSignals(t), signalbit); } /** * Checks for the presence of signals (either way) on the given track on the * given rail tile. */ static inline bool HasSignalOnTrack(TileIndex tile, Track track) { assert(IsValidTrack(track)); return GetRailTileType(tile) == RAIL_TILE_SIGNALS && (GetPresentSignals(tile) & SignalOnTrack(track)) != 0; } /** * Checks for the presence of signals along the given trackdir on the given * rail tile. * * Along meaning if you are currently driving on the given trackdir, this is * the signal that is facing us (for which we stop when it's red). */ static inline bool HasSignalOnTrackdir(TileIndex tile, Trackdir trackdir) { assert (IsValidTrackdir(trackdir)); return GetRailTileType(tile) == RAIL_TILE_SIGNALS && GetPresentSignals(tile) & SignalAlongTrackdir(trackdir); } /** * Gets the state of the signal along the given trackdir. * * Along meaning if you are currently driving on the given trackdir, this is * the signal that is facing us (for which we stop when it's red). */ static inline SignalState GetSignalStateByTrackdir(TileIndex tile, Trackdir trackdir) { assert(IsValidTrackdir(trackdir)); assert(HasSignalOnTrack(tile, TrackdirToTrack(trackdir))); return GetSignalStates(tile) & SignalAlongTrackdir(trackdir) ? SIGNAL_STATE_GREEN : SIGNAL_STATE_RED; } /** * Sets the state of the signal along the given trackdir. */ static inline void SetSignalStateByTrackdir(TileIndex tile, Trackdir trackdir, SignalState state) { if (state == SIGNAL_STATE_GREEN) { // set 1 SetSignalStates(tile, GetSignalStates(tile) | SignalAlongTrackdir(trackdir)); } else { SetSignalStates(tile, GetSignalStates(tile) & ~SignalAlongTrackdir(trackdir)); } } /** * Is a pbs signal present along the trackdir? * @param tile the tile to check * @param td the trackdir to check */ static inline bool HasPbsSignalOnTrackdir(TileIndex tile, Trackdir td) { return IsTileType(tile, MP_RAILWAY) && HasSignalOnTrackdir(tile, td) && IsPbsSignal(GetSignalType(tile, TrackdirToTrack(td))); } /** * Is a one-way signal blocking the trackdir? A one-way signal on the * trackdir against will block, but signals on both trackdirs won't. * @param tile the tile to check * @param td the trackdir to check */ static inline bool HasOnewaySignalBlockingTrackdir(TileIndex tile, Trackdir td) { return IsTileType(tile, MP_RAILWAY) && HasSignalOnTrackdir(tile, ReverseTrackdir(td)) && !HasSignalOnTrackdir(tile, td) && IsOnewaySignal(tile, TrackdirToTrack(td)); } RailType GetTileRailType(TileIndex tile); /** The ground 'under' the rail */ enum RailGroundType { RAIL_GROUND_BARREN = 0, ///< Nothing (dirt) RAIL_GROUND_GRASS = 1, ///< Grassy RAIL_GROUND_FENCE_NW = 2, ///< Grass with a fence at the NW edge RAIL_GROUND_FENCE_SE = 3, ///< Grass with a fence at the SE edge RAIL_GROUND_FENCE_SENW = 4, ///< Grass with a fence at the NW and SE edges RAIL_GROUND_FENCE_NE = 5, ///< Grass with a fence at the NE edge RAIL_GROUND_FENCE_SW = 6, ///< Grass with a fence at the SW edge RAIL_GROUND_FENCE_NESW = 7, ///< Grass with a fence at the NE and SW edges RAIL_GROUND_FENCE_VERT1 = 8, ///< Grass with a fence at the eastern side RAIL_GROUND_FENCE_VERT2 = 9, ///< Grass with a fence at the western side RAIL_GROUND_FENCE_HORIZ1 = 10, ///< Grass with a fence at the southern side RAIL_GROUND_FENCE_HORIZ2 = 11, ///< Grass with a fence at the northern side RAIL_GROUND_ICE_DESERT = 12, ///< Icy or sandy RAIL_GROUND_WATER = 13, ///< Grass with a fence and shore or water on the free halftile RAIL_GROUND_HALF_SNOW = 14, ///< Snow only on higher part of slope (steep or one corner raised) }; static inline void SetRailGroundType(TileIndex t, RailGroundType rgt) { SB(_m[t].m4, 0, 4, rgt); } static inline RailGroundType GetRailGroundType(TileIndex t) { return (RailGroundType)GB(_m[t].m4, 0, 4); } static inline bool IsSnowRailGround(TileIndex t) { return GetRailGroundType(t) == RAIL_GROUND_ICE_DESERT; } static inline void MakeRailNormal(TileIndex t, Owner o, TrackBits b, RailType r) { SetTileType(t, MP_RAILWAY); SetTileOwner(t, o); _m[t].m2 = 0; _m[t].m3 = r; _m[t].m4 = 0; _m[t].m5 = RAIL_TILE_NORMAL << 6 | b; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = 0; } static inline void MakeRailDepot(TileIndex t, Owner o, DepotID did, DiagDirection d, RailType r) { SetTileType(t, MP_RAILWAY); SetTileOwner(t, o); _m[t].m2 = did; _m[t].m3 = r; _m[t].m4 = 0; _m[t].m5 = RAIL_TILE_DEPOT << 6 | d; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = 0; } #endif /* RAIL_MAP_H */ openttd-1.3.3/src/newgrf_spritegroup.h0000644000000000000000000002666512246102611016576 0ustar rootroot/* $Id: newgrf_spritegroup.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_spritegroup.h Action 2 handling. */ #ifndef NEWGRF_SPRITEGROUP_H #define NEWGRF_SPRITEGROUP_H #include "town_type.h" #include "engine_type.h" #include "house_type.h" #include "newgrf_callbacks.h" #include "newgrf_generic.h" #include "newgrf_storage.h" #include "newgrf_commons.h" /** * Gets the value of a so-called newgrf "register". * @param i index of the register * @pre i < 0x110 * @return the value of the register */ static inline uint32 GetRegister(uint i) { extern TemporaryStorageArray _temp_store; return _temp_store.GetValue(i); } /** * Clears the value of a so-called newgrf "register". * @param i index of the register * @pre i < 0x110 */ static inline void ClearRegister(uint i) { extern TemporaryStorageArray _temp_store; _temp_store.StoreValue(i, 0); } /* List of different sprite group types */ enum SpriteGroupType { SGT_REAL, SGT_DETERMINISTIC, SGT_RANDOMIZED, SGT_CALLBACK, SGT_RESULT, SGT_TILELAYOUT, SGT_INDUSTRY_PRODUCTION, }; struct SpriteGroup; typedef uint32 SpriteGroupID; /* SPRITE_WIDTH is 24. ECS has roughly 30 sprite groups per real sprite. * Adding an 'extra' margin would be assuming 64 sprite groups per real * sprite. 64 = 2^6, so 2^30 should be enough (for now) */ typedef Pool SpriteGroupPool; extern SpriteGroupPool _spritegroup_pool; /* Common wrapper for all the different sprite group types */ struct SpriteGroup : SpriteGroupPool::PoolItem<&_spritegroup_pool> { protected: SpriteGroup(SpriteGroupType type) : type(type) {} /** Base sprite group resolver */ virtual const SpriteGroup *Resolve(struct ResolverObject *object) const { return this; }; public: virtual ~SpriteGroup() {} SpriteGroupType type; virtual SpriteID GetResult() const { return 0; } virtual byte GetNumResults() const { return 0; } virtual uint16 GetCallbackResult() const { return CALLBACK_FAILED; } /** * ResolverObject (re)entry point. * This cannot be made a call to a virtual function because virtual functions * do not like NULL and checking for NULL *everywhere* is more cumbersome than * this little helper function. * @param group the group to resolve for * @param object information needed to resolve the group * @return the resolved group */ static const SpriteGroup *Resolve(const SpriteGroup *group, ResolverObject *object) { return group == NULL ? NULL : group->Resolve(object); } }; /* 'Real' sprite groups contain a list of other result or callback sprite * groups. */ struct RealSpriteGroup : SpriteGroup { RealSpriteGroup() : SpriteGroup(SGT_REAL) {} ~RealSpriteGroup(); /* Loaded = in motion, loading = not moving * Each group contains several spritesets, for various loading stages */ /* XXX: For stations the meaning is different - loaded is for stations * with small amount of cargo whilst loading is for stations with a lot * of da stuff. */ byte num_loaded; ///< Number of loaded groups byte num_loading; ///< Number of loading groups const SpriteGroup **loaded; ///< List of loaded groups (can be SpriteIDs or Callback results) const SpriteGroup **loading; ///< List of loading groups (can be SpriteIDs or Callback results) protected: const SpriteGroup *Resolve(ResolverObject *object) const; }; /* Shared by deterministic and random groups. */ enum VarSpriteGroupScope { VSG_BEGIN, VSG_SCOPE_SELF = VSG_BEGIN, ///< Resolved object itself VSG_SCOPE_PARENT, ///< Related object of the resolved one VSG_SCOPE_RELATIVE, ///< Relative position (vehicles only) VSG_END }; DECLARE_POSTFIX_INCREMENT(VarSpriteGroupScope) enum DeterministicSpriteGroupSize { DSG_SIZE_BYTE, DSG_SIZE_WORD, DSG_SIZE_DWORD, }; enum DeterministicSpriteGroupAdjustType { DSGA_TYPE_NONE, DSGA_TYPE_DIV, DSGA_TYPE_MOD, }; enum DeterministicSpriteGroupAdjustOperation { DSGA_OP_ADD, ///< a + b DSGA_OP_SUB, ///< a - b DSGA_OP_SMIN, ///< (signed) min(a, b) DSGA_OP_SMAX, ///< (signed) max(a, b) DSGA_OP_UMIN, ///< (unsigned) min(a, b) DSGA_OP_UMAX, ///< (unsigned) max(a, b) DSGA_OP_SDIV, ///< (signed) a / b DSGA_OP_SMOD, ///< (signed) a % b DSGA_OP_UDIV, ///< (unsigned) a / b DSGA_OP_UMOD, ///< (unsigned) a & b DSGA_OP_MUL, ///< a * b DSGA_OP_AND, ///< a & b DSGA_OP_OR, ///< a | b DSGA_OP_XOR, ///< a ^ b DSGA_OP_STO, ///< store a into temporary storage, indexed by b. return a DSGA_OP_RST, ///< return b DSGA_OP_STOP, ///< store a into persistent storage, indexed by b, return a DSGA_OP_ROR, ///< rotate a b positions to the right DSGA_OP_SCMP, ///< (signed) comparison (a < b -> 0, a == b = 1, a > b = 2) DSGA_OP_UCMP, ///< (unsigned) comparison (a < b -> 0, a == b = 1, a > b = 2) DSGA_OP_SHL, ///< a << b DSGA_OP_SHR, ///< (unsigned) a >> b DSGA_OP_SAR, ///< (signed) a >> b }; struct DeterministicSpriteGroupAdjust { DeterministicSpriteGroupAdjustOperation operation; DeterministicSpriteGroupAdjustType type; byte variable; byte parameter; ///< Used for variables between 0x60 and 0x7F inclusive. byte shift_num; uint32 and_mask; uint32 add_val; uint32 divmod_val; const SpriteGroup *subroutine; }; struct DeterministicSpriteGroupRange { const SpriteGroup *group; uint32 low; uint32 high; }; struct DeterministicSpriteGroup : SpriteGroup { DeterministicSpriteGroup() : SpriteGroup(SGT_DETERMINISTIC) {} ~DeterministicSpriteGroup(); VarSpriteGroupScope var_scope; DeterministicSpriteGroupSize size; uint num_adjusts; byte num_ranges; DeterministicSpriteGroupAdjust *adjusts; DeterministicSpriteGroupRange *ranges; // Dynamically allocated /* Dynamically allocated, this is the sole owner */ const SpriteGroup *default_group; protected: const SpriteGroup *Resolve(ResolverObject *object) const; }; enum RandomizedSpriteGroupCompareMode { RSG_CMP_ANY, RSG_CMP_ALL, }; struct RandomizedSpriteGroup : SpriteGroup { RandomizedSpriteGroup() : SpriteGroup(SGT_RANDOMIZED) {} ~RandomizedSpriteGroup(); VarSpriteGroupScope var_scope; ///< Take this object: RandomizedSpriteGroupCompareMode cmp_mode; ///< Check for these triggers: byte triggers; byte count; byte lowest_randbit; ///< Look for this in the per-object randomized bitmask: byte num_groups; ///< must be power of 2 const SpriteGroup **groups; ///< Take the group with appropriate index: protected: const SpriteGroup *Resolve(ResolverObject *object) const; }; /* This contains a callback result. A failed callback has a value of * CALLBACK_FAILED */ struct CallbackResultSpriteGroup : SpriteGroup { /** * Creates a spritegroup representing a callback result * @param value The value that was used to represent this callback result * @param grf_version8 True, if we are dealing with a new NewGRF which uses GRF version >= 8. */ CallbackResultSpriteGroup(uint16 value, bool grf_version8) : SpriteGroup(SGT_CALLBACK), result(value) { /* Old style callback results (only valid for version < 8) have the highest byte 0xFF so signify it is a callback result. * New style ones only have the highest bit set (allows 15-bit results, instead of just 8) */ if (!grf_version8 && (this->result >> 8) == 0xFF) { this->result &= ~0xFF00; } else { this->result &= ~0x8000; } } uint16 result; uint16 GetCallbackResult() const { return this->result; } }; /* A result sprite group returns the first SpriteID and the number of * sprites in the set */ struct ResultSpriteGroup : SpriteGroup { /** * Creates a spritegroup representing a sprite number result. * @param sprite The sprite number. * @param num_sprites The number of sprites per set. * @return A spritegroup representing the sprite number result. */ ResultSpriteGroup(SpriteID sprite, byte num_sprites) : SpriteGroup(SGT_RESULT), sprite(sprite), num_sprites(num_sprites) { } SpriteID sprite; byte num_sprites; SpriteID GetResult() const { return this->sprite; } byte GetNumResults() const { return this->num_sprites; } }; /** * Action 2 sprite layout for houses, industry tiles, objects and airport tiles. */ struct TileLayoutSpriteGroup : SpriteGroup { TileLayoutSpriteGroup() : SpriteGroup(SGT_TILELAYOUT) {} ~TileLayoutSpriteGroup() {} NewGRFSpriteLayout dts; const DrawTileSprites *ProcessRegisters(uint8 *stage) const; }; struct IndustryProductionSpriteGroup : SpriteGroup { IndustryProductionSpriteGroup() : SpriteGroup(SGT_INDUSTRY_PRODUCTION) {} uint8 version; int16 subtract_input[3]; // signed uint16 add_output[2]; // unsigned uint8 again; }; struct ResolverObject; /** * Interface to query and set values specific to a single #VarSpriteGroupScope (action 2 scope). * * Multiple of these interfaces are combined into a #ResolverObject to allow access * to different game entities from a #SpriteGroup-chain (action 1-2-3 chain). */ struct ScopeResolver { ResolverObject *ro; ///< Surrounding resolver object. ScopeResolver(ResolverObject *ro); virtual ~ScopeResolver(); virtual uint32 GetRandomBits() const; virtual uint32 GetTriggers() const; virtual void SetTriggers(int triggers) const; virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; virtual void StorePSA(uint reg, int32 value); }; /** * Interface for #SpriteGroup-s to access the gamestate. * * Using this interface #SpriteGroup-chains (action 1-2-3 chains) can be resolved, * to get the results of callbacks, rerandomisations or normal sprite lookups. */ struct ResolverObject { ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); virtual ~ResolverObject(); ScopeResolver default_scope; ///< Default implementation of the grf scope. CallbackID callback; ///< Callback being resolved. uint32 callback_param1; ///< First parameter (var 10) of the callback. uint32 callback_param2; ///< Second parameter (var 18) of the callback. byte trigger; uint32 last_value; ///< Result of most recent DeterministicSpriteGroup (including procedure calls) uint32 reseed[VSG_END]; ///< Collects bits to rerandomise while triggering triggers. const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to virtual const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; virtual ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0); /** * Returns the OR-sum of all bits that need reseeding * independent of the scope they were accessed with. * @return OR-sum of the bits. */ uint32 GetReseedSum() const { uint32 sum = 0; for (VarSpriteGroupScope vsg = VSG_BEGIN; vsg < VSG_END; vsg++) { sum |= this->reseed[vsg]; } return sum; } /** * Resets the dynamic state of the resolver object. * To be called before resolving an Action-1-2-3 chain. */ void ResetState() { this->last_value = 0; this->trigger = 0; memset(this->reseed, 0, sizeof(this->reseed)); } }; #endif /* NEWGRF_SPRITEGROUP_H */ openttd-1.3.3/src/debug.cpp0000644000000000000000000001462112246102611014251 0ustar rootroot/* $Id: debug.cpp 25982 2013-11-13 21:35:44Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file debug.cpp Handling of printing debug messages. */ #include "stdafx.h" #include #include "console_func.h" #include "debug.h" #include "string_func.h" #include "fileio_func.h" #include "settings_type.h" #include #if defined(ENABLE_NETWORK) #include "network/network_admin.h" SOCKET _debug_socket = INVALID_SOCKET; #endif /* ENABLE_NETWORK */ int _debug_driver_level; int _debug_grf_level; int _debug_map_level; int _debug_misc_level; int _debug_net_level; int _debug_sprite_level; int _debug_oldloader_level; int _debug_npf_level; int _debug_yapf_level; int _debug_freetype_level; int _debug_script_level; int _debug_sl_level; int _debug_gamelog_level; int _debug_desync_level; int _debug_console_level; #ifdef RANDOM_DEBUG int _debug_random_level; #endif uint32 _realtime_tick = 0; struct DebugLevel { const char *name; int *level; }; #define DEBUG_LEVEL(x) { #x, &_debug_##x##_level } static const DebugLevel debug_level[] = { DEBUG_LEVEL(driver), DEBUG_LEVEL(grf), DEBUG_LEVEL(map), DEBUG_LEVEL(misc), DEBUG_LEVEL(net), DEBUG_LEVEL(sprite), DEBUG_LEVEL(oldloader), DEBUG_LEVEL(npf), DEBUG_LEVEL(yapf), DEBUG_LEVEL(freetype), DEBUG_LEVEL(script), DEBUG_LEVEL(sl), DEBUG_LEVEL(gamelog), DEBUG_LEVEL(desync), DEBUG_LEVEL(console), #ifdef RANDOM_DEBUG DEBUG_LEVEL(random), #endif }; #undef DEBUG_LEVEL /** * Dump the available debug facility names in the help text. * @param buf Start address for storing the output. * @param last Last valid address for storing the output. * @return Next free position in the output. */ char *DumpDebugFacilityNames(char *buf, char *last) { size_t length = 0; for (const DebugLevel *i = debug_level; i != endof(debug_level); ++i) { if (length == 0) { buf = strecpy(buf, "List of debug facility names:\n", last); } else { buf = strecpy(buf, ", ", last); length += 2; } buf = strecpy(buf, i->name, last); length += strlen(i->name); } if (length > 0) { buf = strecpy(buf, "\n\n", last); } return buf; } #if !defined(NO_DEBUG_MESSAGES) /** * Internal function for outputting the debug line. * @param dbg Debug category. * @param buf Text line to output. */ static void debug_print(const char *dbg, const char *buf) { #if defined(ENABLE_NETWORK) if (_debug_socket != INVALID_SOCKET) { char buf2[1024 + 32]; snprintf(buf2, lengthof(buf2), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf); send(_debug_socket, buf2, (int)strlen(buf2), 0); return; } #endif /* ENABLE_NETWORK */ if (strcmp(dbg, "desync") == 0) { static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR); if (f == NULL) return; fprintf(f, "%s%s\n", GetLogPrefix(), buf); fflush(f); #ifdef RANDOM_DEBUG } else if (strcmp(dbg, "random") == 0) { static FILE *f = FioFOpenFile("random-out.log", "wb", AUTOSAVE_DIR); if (f == NULL) return; fprintf(f, "%s\n", buf); fflush(f); #endif } else { char buffer[512]; seprintf(buffer, lastof(buffer), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf); #if defined(WINCE) NKDbgPrintfW(OTTD2FS(buffer)); #elif defined(WIN32) || defined(WIN64) _fputts(OTTD2FS(buffer, true), stderr); #else fputs(buffer, stderr); #endif #ifdef ENABLE_NETWORK NetworkAdminConsole(dbg, buf); #endif /* ENABLE_NETWORK */ IConsoleDebug(dbg, buf); } } /** * Output a debug line. * @note Do not call directly, use the #DEBUG macro instead. * @param dbg Debug category. * @param format Text string a la printf, with optional arguments. */ void CDECL debug(const char *dbg, const char *format, ...) { char buf[1024]; va_list va; va_start(va, format); vsnprintf(buf, lengthof(buf), format, va); va_end(va); debug_print(dbg, buf); } #endif /* NO_DEBUG_MESSAGES */ /** * Set debugging levels by parsing the text in \a s. * For setting individual levels a string like \c "net=3,grf=6" should be used. * If the string starts with a number, the number is used as global debugging level. * @param s Text describing the wanted debugging levels. */ void SetDebugString(const char *s) { int v; char *end; const char *t; /* global debugging level? */ if (*s >= '0' && *s <= '9') { const DebugLevel *i; v = strtoul(s, &end, 0); s = end; for (i = debug_level; i != endof(debug_level); ++i) *i->level = v; } /* individual levels */ for (;;) { const DebugLevel *i; int *p; /* skip delimiters */ while (*s == ' ' || *s == ',' || *s == '\t') s++; if (*s == '\0') break; t = s; while (*s >= 'a' && *s <= 'z') s++; /* check debugging levels */ p = NULL; for (i = debug_level; i != endof(debug_level); ++i) { if (s == t + strlen(i->name) && strncmp(t, i->name, s - t) == 0) { p = i->level; break; } } if (*s == '=') s++; v = strtoul(s, &end, 0); s = end; if (p != NULL) { *p = v; } else { ShowInfoF("Unknown debug level '%.*s'", (int)(s - t), t); return; } } } /** * Print out the current debug-level. * Just return a string with the values of all the debug categories. * @return string with debug-levels */ const char *GetDebugString() { const DebugLevel *i; static char dbgstr[150]; char dbgval[20]; memset(dbgstr, 0, sizeof(dbgstr)); i = debug_level; snprintf(dbgstr, sizeof(dbgstr), "%s=%d", i->name, *i->level); for (i++; i != endof(debug_level); i++) { snprintf(dbgval, sizeof(dbgval), ", %s=%d", i->name, *i->level); strecat(dbgstr, dbgval, lastof(dbgstr)); } return dbgstr; } /** * Get the prefix for logs; if show_date_in_logs is enabled it returns * the date, otherwise it returns nothing. * @return the prefix for logs (do not free), never NULL */ const char *GetLogPrefix() { static char _log_prefix[24]; if (_settings_client.gui.show_date_in_logs) { time_t cur_time = time(NULL); strftime(_log_prefix, sizeof(_log_prefix), "[%Y-%m-%d %H:%M:%S] ", localtime(&cur_time)); } else { *_log_prefix = '\0'; } return _log_prefix; } openttd-1.3.3/src/train_gui.cpp0000644000000000000000000003630312246102611015145 0ustar rootroot/* $Id: train_gui.cpp 25500 2013-06-28 19:29:08Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file train_gui.cpp GUI for trains. */ #include "stdafx.h" #include "window_gui.h" #include "command_func.h" #include "train.h" #include "strings_func.h" #include "vehicle_func.h" #include "table/strings.h" /** * Callback for building wagons. * @param result The result of the command. * @param tile The tile the command was executed on. * @param p1 Additional data for the command (for the #CommandProc) * @param p2 Additional data for the command (for the #CommandProc) */ void CcBuildWagon(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; /* find a locomotive in the depot. */ const Vehicle *found = NULL; const Train *t; FOR_ALL_TRAINS(t) { if (t->IsFrontEngine() && t->tile == tile && t->IsStoppedInDepot()) { if (found != NULL) return; // must be exactly one. found = t; } } /* if we found a loco, */ if (found != NULL) { found = found->Last(); /* put the new wagon at the end of the loco. */ DoCommandP(0, _new_vehicle_id, found->index, CMD_MOVE_RAIL_VEHICLE); InvalidateWindowClassesData(WC_TRAINS_LIST, 0); } } /** * Highlight the position where a rail vehicle is dragged over by drawing a light gray background. * @param px The current x position to draw from. * @param max_width The maximum space available to draw. * @param selection Selected vehicle that is dragged. * @return The width of the highlight mark. */ static int HighlightDragPosition(int px, int max_width, VehicleID selection) { bool rtl = _current_text_dir == TD_RTL; assert(selection != INVALID_VEHICLE); int dragged_width = WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; for (Train *t = Train::Get(selection); t != NULL; t = t->HasArticulatedPart() ? t->GetNextArticulatedPart() : NULL) { dragged_width += t->GetDisplayImageWidth(NULL); } int drag_hlight_left = rtl ? max(px -dragged_width, 0) : px; int drag_hlight_right = rtl ? px : min(px + dragged_width, max_width); int drag_hlight_width = max(drag_hlight_right - drag_hlight_left, 0); if (drag_hlight_width > 0) { GfxFillRect(drag_hlight_left + WD_FRAMERECT_LEFT, WD_FRAMERECT_TOP + 1, drag_hlight_right - WD_FRAMERECT_RIGHT, 13 - WD_FRAMERECT_BOTTOM, _colour_gradient[COLOUR_GREY][7]); } return drag_hlight_width; } /** * Draws an image of a whole train * @param v Front vehicle * @param left The minimum horizontal position * @param right The maximum horizontal position * @param y Vertical position to draw at * @param selection Selected vehicle to draw a frame around * @param skip Number of pixels to skip at the front (for scrolling) * @param drag_dest The vehicle another one is dragged over, \c INVALID_VEHICLE if none. */ void DrawTrainImage(const Train *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip, VehicleID drag_dest) { bool rtl = _current_text_dir == TD_RTL; Direction dir = rtl ? DIR_E : DIR_W; DrawPixelInfo tmp_dpi, *old_dpi; /* Position of highlight box */ int highlight_l = 0; int highlight_r = 0; int max_width = right - left + 1; if (!FillDrawPixelInfo(&tmp_dpi, left, y, max_width, 14)) return; old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; int px = rtl ? max_width + skip : -skip; bool sel_articulated = false; bool dragging = (drag_dest != INVALID_VEHICLE); bool drag_at_end_of_train = (drag_dest == v->index); // Head index is used to mark dragging at end of train. for (; v != NULL && (rtl ? px > 0 : px < max_width); v = v->Next()) { if (dragging && !drag_at_end_of_train && drag_dest == v->index) { /* Highlight the drag-and-drop destination inside the train. */ int drag_hlight_width = HighlightDragPosition(px, max_width, selection); px += rtl ? -drag_hlight_width : drag_hlight_width; } Point offset; int width = Train::From(v)->GetDisplayImageWidth(&offset); if (rtl ? px + width > 0 : px - width < max_width) { PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); DrawSprite(v->GetImage(dir, image_type), pal, px + (rtl ? -offset.x : offset.x), 7 + offset.y); } if (!v->IsArticulatedPart()) sel_articulated = false; if (v->index == selection) { /* Set the highlight position */ highlight_l = rtl ? px - width : px; highlight_r = rtl ? px - 1 : px + width - 1; sel_articulated = true; } else if ((_cursor.vehchain && highlight_r != 0) || sel_articulated) { if (rtl) { highlight_l -= width; } else { highlight_r += width; } } px += rtl ? -width : width; } if (dragging && drag_at_end_of_train) { /* Highlight the drag-and-drop destination at the end of the train. */ HighlightDragPosition(px, max_width, selection); } if (highlight_l != highlight_r) { /* Draw the highlight. Now done after drawing all the engines, as * the next engine after the highlight could overlap it. */ DrawFrameRect(highlight_l, 0, highlight_r, 13, COLOUR_WHITE, FR_BORDERONLY); } _cur_dpi = old_dpi; } /** Helper struct for the cargo details information */ struct CargoSummaryItem { CargoID cargo; ///< The cargo that is carried StringID subtype; ///< STR_EMPTY if none uint capacity; ///< Amount that can be carried uint amount; ///< Amount that is carried StationID source; ///< One of the source stations /** Used by CargoSummary::Find() and similar functions */ inline bool operator != (const CargoSummaryItem &other) const { return this->cargo != other.cargo || this->subtype != other.subtype; } }; static const uint TRAIN_DETAILS_MIN_INDENT = 32; ///< Minimum indent level in the train details window static const uint TRAIN_DETAILS_MAX_INDENT = 72; ///< Maximum indent level in the train details window; wider than this and we start on a new line /** Container for the cargo summary information. */ typedef SmallVector CargoSummary; /** Reused container of cargo details */ static CargoSummary _cargo_summary; /** * Draw the details cargo tab for the given vehicle at the given position * * @param item Data to draw * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate */ static void TrainDetailsCargoTab(const CargoSummaryItem *item, int left, int right, int y) { StringID str; if (item->amount > 0) { SetDParam(0, item->cargo); SetDParam(1, item->amount); SetDParam(2, item->source); SetDParam(3, _settings_game.vehicle.freight_trains); str = FreightWagonMult(item->cargo) > 1 ? STR_VEHICLE_DETAILS_CARGO_FROM_MULT : STR_VEHICLE_DETAILS_CARGO_FROM; } else { SetDParam(0, STR_QUANTITY_N_A); str = item->cargo == INVALID_CARGO ? STR_LTBLUE_STRING : STR_VEHICLE_DETAILS_CARGO_EMPTY; } DrawString(left, right, y, str); } /** * Draw the details info tab for the given vehicle at the given position * * @param v current vehicle * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate */ static void TrainDetailsInfoTab(const Vehicle *v, int left, int right, int y) { if (RailVehInfo(v->engine_type)->railveh_type == RAILVEH_WAGON) { SetDParam(0, v->engine_type); SetDParam(1, v->value); DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE); } else { SetDParam(0, v->engine_type); SetDParam(1, v->build_year); SetDParam(2, v->value); DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE); } } /** * Draw the details capacity tab for the given vehicle at the given position * * @param item Data to draw * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate */ static void TrainDetailsCapacityTab(const CargoSummaryItem *item, int left, int right, int y) { StringID str; if (item->cargo != INVALID_CARGO) { SetDParam(0, item->cargo); SetDParam(1, item->capacity); SetDParam(4, item->subtype); SetDParam(5, _settings_game.vehicle.freight_trains); str = FreightWagonMult(item->cargo) > 1 ? STR_VEHICLE_INFO_CAPACITY_MULT : STR_VEHICLE_INFO_CAPACITY; } else { /* Draw subtype only */ SetDParam(0, item->subtype); str = STR_VEHICLE_INFO_NO_CAPACITY; } DrawString(left, right, y, str); } /** * Collects the cargo transported * @param v Vehicle to process * @param summary Space for the result */ static void GetCargoSummaryOfArticulatedVehicle(const Train *v, CargoSummary *summary) { summary->Clear(); do { if (!v->GetEngine()->CanCarryCargo()) continue; CargoSummaryItem new_item; new_item.cargo = v->cargo_cap > 0 ? v->cargo_type : INVALID_CARGO; new_item.subtype = GetCargoSubtypeText(v); if (new_item.cargo == INVALID_CARGO && new_item.subtype == STR_EMPTY) continue; CargoSummaryItem *item = summary->Find(new_item); if (item == summary->End()) { item = summary->Append(); item->cargo = new_item.cargo; item->subtype = new_item.subtype; item->capacity = 0; item->amount = 0; item->source = INVALID_STATION; } item->capacity += v->cargo_cap; item->amount += v->cargo.Count(); if (item->source == INVALID_STATION) item->source = v->cargo.Source(); } while ((v = v->Next()) != NULL && v->IsArticulatedPart()); } /** * Get the length of an articulated vehicle. * @param v the vehicle to get the length of. * @return the length in pixels. */ static uint GetLengthOfArticulatedVehicle(const Train *v) { uint length = 0; do { length += v->GetDisplayImageWidth(); } while ((v = v->Next()) != NULL && v->IsArticulatedPart()); return length; } /** * Determines the number of lines in the train details window * @param veh_id Train * @param det_tab Selected details tab * @return Number of line */ int GetTrainDetailsWndVScroll(VehicleID veh_id, TrainDetailsWindowTabs det_tab) { int num = 0; if (det_tab == TDW_TAB_TOTALS) { // Total cargo tab CargoArray act_cargo; CargoArray max_cargo; for (const Vehicle *v = Vehicle::Get(veh_id); v != NULL; v = v->Next()) { act_cargo[v->cargo_type] += v->cargo.Count(); max_cargo[v->cargo_type] += v->cargo_cap; } /* Set scroll-amount separately from counting, as to not compute num double * for more carriages of the same type */ for (CargoID i = 0; i < NUM_CARGO; i++) { if (max_cargo[i] > 0) num++; // only count carriages that the train has } num++; // needs one more because first line is description string } else { for (const Train *v = Train::Get(veh_id); v != NULL; v = v->GetNextVehicle()) { GetCargoSummaryOfArticulatedVehicle(v, &_cargo_summary); num += max(1u, _cargo_summary.Length()); uint length = GetLengthOfArticulatedVehicle(v); if (length > TRAIN_DETAILS_MAX_INDENT) num++; } } return num; } /** * Draw the details for the given vehicle at the given position * * @param v current vehicle * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate * @param vscroll_pos Position of scrollbar * @param vscroll_cap Number of lines currently displayed * @param det_tab Selected details tab */ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_pos, uint16 vscroll_cap, TrainDetailsWindowTabs det_tab) { /* draw the first 3 details tabs */ if (det_tab != TDW_TAB_TOTALS) { bool rtl = _current_text_dir == TD_RTL; Direction dir = rtl ? DIR_E : DIR_W; int x = rtl ? right : left; int sprite_y_offset = 4 + (FONT_HEIGHT_NORMAL - 10) / 2; int line_height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; for (; v != NULL && vscroll_pos > -vscroll_cap; v = v->GetNextVehicle()) { GetCargoSummaryOfArticulatedVehicle(v, &_cargo_summary); /* Draw sprites */ uint dx = 0; int px = x; const Train *u = v; do { Point offset; int width = u->GetDisplayImageWidth(&offset); if (vscroll_pos <= 0 && vscroll_pos > -vscroll_cap) { PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); DrawSprite(u->GetImage(dir, EIT_IN_DETAILS), pal, px + (rtl ? -offset.x : offset.x), y - line_height * vscroll_pos + sprite_y_offset + offset.y); } px += rtl ? -width : width; dx += width; u = u->Next(); } while (u != NULL && u->IsArticulatedPart()); bool separate_sprite_row = (dx > TRAIN_DETAILS_MAX_INDENT); if (separate_sprite_row) { vscroll_pos--; dx = 0; } uint num_lines = max(1u, _cargo_summary.Length()); for (uint i = 0; i < num_lines; i++) { int sprite_width = max(dx, TRAIN_DETAILS_MIN_INDENT) + 3; int data_left = left + (rtl ? 0 : sprite_width); int data_right = right - (rtl ? sprite_width : 0); if (vscroll_pos <= 0 && vscroll_pos > -vscroll_cap) { int py = y - line_height * vscroll_pos; if (i > 0 || separate_sprite_row) { if (vscroll_pos != 0) GfxFillRect(left, py - WD_MATRIX_TOP - 1, right, py - WD_MATRIX_TOP, _colour_gradient[COLOUR_GREY][5]); } switch (det_tab) { case TDW_TAB_CARGO: if (i < _cargo_summary.Length()) { TrainDetailsCargoTab(&_cargo_summary[i], data_left, data_right, py); } else { DrawString(data_left, data_right, py, STR_QUANTITY_N_A, TC_LIGHT_BLUE); } break; case TDW_TAB_INFO: if (i == 0) TrainDetailsInfoTab(v, data_left, data_right, py); break; case TDW_TAB_CAPACITY: if (i < _cargo_summary.Length()) { TrainDetailsCapacityTab(&_cargo_summary[i], data_left, data_right, py); } else { SetDParam(0, STR_EMPTY); DrawString(data_left, data_right, py, STR_VEHICLE_INFO_NO_CAPACITY); } break; default: NOT_REACHED(); } } vscroll_pos--; } } } else { CargoArray act_cargo; CargoArray max_cargo; Money feeder_share = 0; for (const Vehicle *u = v; u != NULL; u = u->Next()) { act_cargo[u->cargo_type] += u->cargo.Count(); max_cargo[u->cargo_type] += u->cargo_cap; feeder_share += u->cargo.FeederShare(); } /* draw total cargo tab */ DrawString(left, right, y, STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT); y += WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; for (CargoID i = 0; i < NUM_CARGO; i++) { if (max_cargo[i] > 0 && --vscroll_pos < 0 && vscroll_pos > -vscroll_cap) { SetDParam(0, i); // {CARGO} #1 SetDParam(1, act_cargo[i]); // {CARGO} #2 SetDParam(2, i); // {SHORTCARGO} #1 SetDParam(3, max_cargo[i]); // {SHORTCARGO} #2 SetDParam(4, _settings_game.vehicle.freight_trains); DrawString(left, right, y, FreightWagonMult(i) > 1 ? STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT : STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY); y += WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; } } SetDParam(0, feeder_share); DrawString(left, right, y, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE); } } openttd-1.3.3/src/fios_gui.cpp0000644000000000000000000007032612246102610014772 0ustar rootroot/* $Id: fios_gui.cpp 25982 2013-11-13 21:35:44Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fios_gui.cpp GUIs for loading/saving games, scenarios, heightmaps, ... */ #include "stdafx.h" #include "saveload/saveload.h" #include "error.h" #include "gui.h" #include "gfx_func.h" #include "command_func.h" #include "network/network.h" #include "network/network_content.h" #include "strings_func.h" #include "fileio_func.h" #include "fios.h" #include "window_func.h" #include "tilehighlight_func.h" #include "querystring_gui.h" #include "engine_func.h" #include "landscape_type.h" #include "date_func.h" #include "core/geometry_func.hpp" #include "gamelog.h" #include "widgets/fios_widget.h" #include "table/sprites.h" #include "table/strings.h" SaveLoadDialogMode _saveload_mode; LoadCheckData _load_check_data; ///< Data loaded from save during SL_LOAD_CHECK. static bool _fios_path_changed; static bool _savegame_sort_dirty; /** * Reset read data. */ void LoadCheckData::Clear() { this->checkable = false; this->error = INVALID_STRING_ID; free(this->error_data); this->error_data = NULL; this->map_size_x = this->map_size_y = 256; // Default for old savegames which do not store mapsize. this->current_date = 0; memset(&this->settings, 0, sizeof(this->settings)); const CompanyPropertiesMap::iterator end = this->companies.End(); for (CompanyPropertiesMap::iterator it = this->companies.Begin(); it != end; it++) { delete it->second; } companies.Clear(); GamelogFree(this->gamelog_action, this->gamelog_actions); this->gamelog_action = NULL; this->gamelog_actions = 0; ClearGRFConfigList(&this->grfconfig); } /** Load game/scenario with optional content download */ static const NWidgetPart _nested_load_dialog_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SL_CAPTION), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_FILE_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_INSET, COLOUR_GREY, WID_SL_DRIVES_DIRECTORIES_LIST), SetFill(1, 1), SetPadding(2, 1, 2, 2), SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SL_CONTENT_DOWNLOAD_SEL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_CONTENT_DOWNLOAD), SetResize(1, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), EndContainer(), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SL_DETAILS), SetResize(1, 1), SetFill(1, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_MISSING_NEWGRFS), SetDataTip(STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON, STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP), SetFill(1, 0), SetResize(1, 0), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_NEWGRF_INFO), SetDataTip(STR_INTRO_NEWGRF_SETTINGS, STR_NULL), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_LOAD_BUTTON), SetDataTip(STR_SAVELOAD_LOAD_BUTTON, STR_SAVELOAD_LOAD_TOOLTIP), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), EndContainer(), }; /** Load heightmap with content download */ static const NWidgetPart _nested_load_heightmap_dialog_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SL_CAPTION), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_FILE_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_INSET, COLOUR_GREY, WID_SL_DRIVES_DIRECTORIES_LIST), SetFill(1, 1), SetPadding(2, 1, 2, 2), SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_CONTENT_DOWNLOAD), SetResize(1, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), EndContainer(), }; /** Save game/scenario */ static const NWidgetPart _nested_save_dialog_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SL_CAPTION), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SL_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SL_FILE_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_INSET, COLOUR_GREY, WID_SL_DRIVES_DIRECTORIES_LIST), SetPadding(2, 1, 0, 2), SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR), EndContainer(), NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SL_SAVE_OSK_TITLE), SetPadding(3, 2, 2, 2), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_SAVELOAD_OSKTITLE, STR_SAVELOAD_EDITBOX_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_DELETE_SELECTION), SetDataTip(STR_SAVELOAD_DELETE_BUTTON, STR_SAVELOAD_DELETE_TOOLTIP), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_SAVE_GAME), SetDataTip(STR_SAVELOAD_SAVE_BUTTON, STR_SAVELOAD_SAVE_TOOLTIP), SetFill(1, 0), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SL_DETAILS), SetResize(1, 1), SetFill(1, 1), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetResize(1, 0), SetFill(1, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), EndContainer(), }; /** Colours for fios types, indexed by #FiosType. */ const TextColour _fios_colours[] = { TC_LIGHT_BLUE, TC_DARK_GREEN, TC_DARK_GREEN, TC_ORANGE, TC_LIGHT_BROWN, TC_ORANGE, TC_LIGHT_BROWN, TC_ORANGE, TC_ORANGE, TC_YELLOW }; void BuildFileList() { _fios_path_changed = true; FiosFreeSavegameList(); switch (_saveload_mode) { case SLD_LOAD_SCENARIO: case SLD_SAVE_SCENARIO: FiosGetScenarioList(_saveload_mode); break; case SLD_SAVE_HEIGHTMAP: case SLD_LOAD_HEIGHTMAP: FiosGetHeightmapList(_saveload_mode); break; default: FiosGetSavegameList(_saveload_mode); break; } /* Invalidate saveload window */ InvalidateWindowData(WC_SAVELOAD, 0, 2, true); } static void MakeSortedSaveGameList() { uint sort_start = 0; uint sort_end = 0; /* Directories are always above the files (FIOS_TYPE_DIR) * Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE) * Only sort savegames/scenarios, not directories */ for (const FiosItem *item = _fios_items.Begin(); item != _fios_items.End(); item++) { switch (item->type) { case FIOS_TYPE_DIR: sort_start++; break; case FIOS_TYPE_PARENT: sort_start++; break; case FIOS_TYPE_DRIVE: sort_end++; break; default: break; } } uint s_amount = _fios_items.Length() - sort_start - sort_end; QSortT(_fios_items.Get(sort_start), s_amount, CompareFiosItems); } struct SaveLoadWindow : public Window { private: QueryString filename_editbox; ///< Filename editbox. FiosItem o_dir; const FiosItem *selected; Scrollbar *vscroll; public: /** Generate a default save filename. */ void GenerateFileName() { GenerateDefaultSaveName(this->filename_editbox.text.buf, &this->filename_editbox.text.buf[this->filename_editbox.text.max_bytes - 1]); this->filename_editbox.text.UpdateSize(); } SaveLoadWindow(const WindowDesc *desc, SaveLoadDialogMode mode) : filename_editbox(64) { static const StringID saveload_captions[] = { STR_SAVELOAD_LOAD_CAPTION, STR_SAVELOAD_LOAD_SCENARIO, STR_SAVELOAD_SAVE_CAPTION, STR_SAVELOAD_SAVE_SCENARIO, STR_SAVELOAD_LOAD_HEIGHTMAP, STR_SAVELOAD_SAVE_HEIGHTMAP, }; assert((uint)mode < lengthof(saveload_captions)); /* Use an array to define what will be the current file type being handled * by current file mode */ switch (mode) { case SLD_SAVE_GAME: this->GenerateFileName(); break; case SLD_SAVE_HEIGHTMAP: case SLD_SAVE_SCENARIO: this->filename_editbox.text.Assign("UNNAMED"); break; default: break; } this->querystrings[WID_SL_SAVE_OSK_TITLE] = &this->filename_editbox; this->filename_editbox.ok_button = WID_SL_SAVE_GAME; this->CreateNestedTree(desc, true); if (mode == SLD_LOAD_GAME) this->GetWidget(WID_SL_CONTENT_DOWNLOAD_SEL)->SetDisplayedPlane(SZSP_HORIZONTAL); this->GetWidget(WID_SL_CAPTION)->widget_data = saveload_captions[mode]; this->vscroll = this->GetScrollbar(WID_SL_SCROLLBAR); this->FinishInitNested(desc, 0); this->LowerWidget(WID_SL_DRIVES_DIRECTORIES_LIST); /* pause is only used in single-player, non-editor mode, non-menu mode. It * will be unpaused in the WE_DESTROY event handler. */ if (_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR) { DoCommandP(0, PM_PAUSED_SAVELOAD, 1, CMD_PAUSE); } SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0); this->OnInvalidateData(0); ResetObjectToPlace(); o_dir.type = FIOS_TYPE_DIRECT; switch (_saveload_mode) { case SLD_SAVE_GAME: case SLD_LOAD_GAME: FioGetDirectory(o_dir.name, lengthof(o_dir.name), SAVE_DIR); break; case SLD_SAVE_SCENARIO: case SLD_LOAD_SCENARIO: FioGetDirectory(o_dir.name, lengthof(o_dir.name), SCENARIO_DIR); break; case SLD_SAVE_HEIGHTMAP: case SLD_LOAD_HEIGHTMAP: FioGetDirectory(o_dir.name, lengthof(o_dir.name), HEIGHTMAP_DIR); break; default: strecpy(o_dir.name, _personal_dir, lastof(o_dir.name)); } /* Focus the edit box by default in the save windows */ if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO || _saveload_mode == SLD_SAVE_HEIGHTMAP) { this->SetFocusedWidget(WID_SL_SAVE_OSK_TITLE); } } virtual ~SaveLoadWindow() { /* pause is only used in single-player, non-editor mode, non menu mode */ if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) { DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE); } FiosFreeSavegameList(); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_SL_SORT_BYNAME: case WID_SL_SORT_BYDATE: if (((_savegame_sort_order & SORT_BY_NAME) != 0) == (widget == WID_SL_SORT_BYNAME)) { this->DrawSortButtonState(widget, _savegame_sort_order & SORT_DESCENDING ? SBS_DOWN : SBS_UP); } break; case WID_SL_BACKGROUND: { static const char *path = NULL; static StringID str = STR_ERROR_UNABLE_TO_READ_DRIVE; static uint64 tot = 0; if (_fios_path_changed) { str = FiosGetDescText(&path, &tot); _fios_path_changed = false; } if (str != STR_ERROR_UNABLE_TO_READ_DRIVE) SetDParam(0, tot); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP, str); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, path, TC_BLACK); break; } case WID_SL_DRIVES_DIRECTORIES_LIST: { GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, PC_BLACK); uint y = r.top + WD_FRAMERECT_TOP; for (uint pos = this->vscroll->GetPosition(); pos < _fios_items.Length(); pos++) { const FiosItem *item = _fios_items.Get(pos); if (item == this->selected) { GfxFillRect(r.left + 1, y, r.right, y + this->resize.step_height, PC_DARK_BLUE); } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, item->title, _fios_colours[item->type]); y += this->resize.step_height; if (y >= this->vscroll->GetCapacity() * this->resize.step_height + r.top + WD_FRAMERECT_TOP) break; } break; } case WID_SL_DETAILS: { GfxFillRect(r.left + WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, r.right - WD_FRAMERECT_RIGHT, r.top + FONT_HEIGHT_NORMAL * 2 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM, PC_GREY); DrawString(r.left, r.right, r.top + FONT_HEIGHT_NORMAL / 2 + WD_FRAMERECT_TOP, STR_SAVELOAD_DETAIL_CAPTION, TC_FROMSTRING, SA_HOR_CENTER); if (this->selected == NULL) break; uint y = r.top + FONT_HEIGHT_NORMAL * 2 + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; uint y_max = r.bottom - FONT_HEIGHT_NORMAL - WD_FRAMERECT_BOTTOM; if (y > y_max) break; if (!_load_check_data.checkable) { /* Old savegame, no information available */ DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_SAVELOAD_DETAIL_NOT_AVAILABLE); y += FONT_HEIGHT_NORMAL; } else if (_load_check_data.error != INVALID_STRING_ID) { /* Incompatible / broken savegame */ SetDParamStr(0, _load_check_data.error_data); y = DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, r.bottom - WD_FRAMERECT_BOTTOM, _load_check_data.error, TC_RED); } else { /* Mapsize */ SetDParam(0, _load_check_data.map_size_x); SetDParam(1, _load_check_data.map_size_y); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_MAP_SIZE); y += FONT_HEIGHT_NORMAL; if (y > y_max) break; /* Climate */ byte landscape = _load_check_data.settings.game_creation.landscape; if (landscape < NUM_LANDSCAPE) { SetDParam(0, STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE + landscape); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_LANDSCAPE); y += FONT_HEIGHT_NORMAL; } y += WD_PAR_VSEP_NORMAL; if (y > y_max) break; /* Start date (if available) */ if (_load_check_data.settings.game_creation.starting_year != 0) { SetDParam(0, ConvertYMDToDate(_load_check_data.settings.game_creation.starting_year, 0, 1)); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_START_DATE); y += FONT_HEIGHT_NORMAL; } if (y > y_max) break; /* Hide current date for scenarios */ if (_saveload_mode != SLD_LOAD_SCENARIO && _saveload_mode != SLD_SAVE_SCENARIO) { /* Current date */ SetDParam(0, _load_check_data.current_date); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_CURRENT_DATE); y += FONT_HEIGHT_NORMAL; } /* Hide the NewGRF stuff when saving. We also hide the button. */ if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) { y += WD_PAR_VSEP_NORMAL; if (y > y_max) break; /* NewGrf compatibility */ SetDParam(0, _load_check_data.grfconfig == NULL ? STR_NEWGRF_LIST_NONE : STR_NEWGRF_LIST_ALL_FOUND + _load_check_data.grf_compatibility); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_SAVELOAD_DETAIL_GRFSTATUS); y += FONT_HEIGHT_NORMAL; } if (y > y_max) break; /* Hide the company stuff for scenarios */ if (_saveload_mode != SLD_LOAD_SCENARIO && _saveload_mode != SLD_SAVE_SCENARIO) { y += FONT_HEIGHT_NORMAL; if (y > y_max) break; /* Companies / AIs */ CompanyPropertiesMap::const_iterator end = _load_check_data.companies.End(); for (CompanyPropertiesMap::const_iterator it = _load_check_data.companies.Begin(); it != end; it++) { SetDParam(0, it->first + 1); const CompanyProperties &c = *it->second; if (c.name != NULL) { SetDParam(1, STR_JUST_RAW_STRING); SetDParamStr(2, c.name); } else { SetDParam(1, c.name_1); SetDParam(2, c.name_2); } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_SAVELOAD_DETAIL_COMPANY_INDEX); y += FONT_HEIGHT_NORMAL; if (y > y_max) break; } } } break; } } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_SL_BACKGROUND: size->height = 2 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; case WID_SL_DRIVES_DIRECTORIES_LIST: resize->height = FONT_HEIGHT_NORMAL; size->height = resize->height * 10 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; case WID_SL_SORT_BYNAME: case WID_SL_SORT_BYDATE: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; } } } virtual void OnPaint() { if (_savegame_sort_dirty) { _savegame_sort_dirty = false; MakeSortedSaveGameList(); } this->vscroll->SetCount(_fios_items.Length()); this->DrawWidgets(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_SL_SORT_BYNAME: // Sort save names by name _savegame_sort_order = (_savegame_sort_order == SORT_BY_NAME) ? SORT_BY_NAME | SORT_DESCENDING : SORT_BY_NAME; _savegame_sort_dirty = true; this->SetDirty(); break; case WID_SL_SORT_BYDATE: // Sort save names by date _savegame_sort_order = (_savegame_sort_order == SORT_BY_DATE) ? SORT_BY_DATE | SORT_DESCENDING : SORT_BY_DATE; _savegame_sort_dirty = true; this->SetDirty(); break; case WID_SL_HOME_BUTTON: // OpenTTD 'button', jumps to OpenTTD directory FiosBrowseTo(&o_dir); this->InvalidateData(); break; case WID_SL_LOAD_BUTTON: if (this->selected != NULL && !_load_check_data.HasErrors() && (_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs())) { _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME; const char *name = FiosBrowseTo(this->selected); SetFiosType(this->selected->type); strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name)); strecpy(_file_to_saveload.title, this->selected->title, lastof(_file_to_saveload.title)); ClearErrorMessages(); delete this; } break; case WID_SL_NEWGRF_INFO: if (_load_check_data.HasNewGrfs()) { ShowNewGRFSettings(false, false, false, &_load_check_data.grfconfig); } break; case WID_SL_MISSING_NEWGRFS: if (!_network_available) { ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR); } else { #if defined(ENABLE_NETWORK) ShowMissingContentWindow(_load_check_data.grfconfig); #endif } break; case WID_SL_DRIVES_DIRECTORIES_LIST: { // Click the listbox int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SL_DRIVES_DIRECTORIES_LIST, WD_FRAMERECT_TOP); if (y == INT_MAX) return; const FiosItem *file = _fios_items.Get(y); const char *name = FiosBrowseTo(file); if (name != NULL) { if (click_count == 1) { if (this->selected != file) { this->selected = file; _load_check_data.Clear(); if (file->type == FIOS_TYPE_FILE || file->type == FIOS_TYPE_SCENARIO) { SaveOrLoad(name, SL_LOAD_CHECK, NO_DIRECTORY, false); } this->InvalidateData(1); } if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO || _saveload_mode == SLD_SAVE_HEIGHTMAP) { /* Copy clicked name to editbox */ this->filename_editbox.text.Assign(file->title); this->SetWidgetDirty(WID_SL_SAVE_OSK_TITLE); } } else if (!_load_check_data.HasErrors()) { this->selected = file; if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) { this->OnClick(pt, WID_SL_LOAD_BUTTON, 1); } else if (_saveload_mode == SLD_LOAD_HEIGHTMAP) { SetFiosType(file->type); strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name)); strecpy(_file_to_saveload.title, file->title, lastof(_file_to_saveload.title)); delete this; ShowHeightmapLoad(); } } } else { /* Changed directory, need refresh. */ this->InvalidateData(); } break; } case WID_SL_CONTENT_DOWNLOAD: if (!_network_available) { ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR); } else { #if defined(ENABLE_NETWORK) switch (_saveload_mode) { default: NOT_REACHED(); case SLD_LOAD_SCENARIO: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_SCENARIO); break; case SLD_LOAD_HEIGHTMAP: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_HEIGHTMAP); break; } #endif } break; case WID_SL_DELETE_SELECTION: // Delete break; case WID_SL_SAVE_GAME: // Save game /* Note, this is also called via the OSK; and we need to lower the button. */ this->HandleButtonClick(WID_SL_SAVE_GAME); break; } } virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (keycode == WKC_ESC) { delete this; return ES_HANDLED; } return ES_NOT_HANDLED; } virtual void OnTimeout() { /* This test protects against using widgets 11 and 12 which are only available * in those saveload modes. */ if (!(_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO || _saveload_mode == SLD_SAVE_HEIGHTMAP)) return; if (this->IsWidgetLowered(WID_SL_DELETE_SELECTION)) { // Delete button clicked if (!FiosDelete(this->filename_editbox.text.buf)) { ShowErrorMessage(STR_ERROR_UNABLE_TO_DELETE_FILE, INVALID_STRING_ID, WL_ERROR); } else { this->InvalidateData(); /* Reset file name to current date on successful delete */ if (_saveload_mode == SLD_SAVE_GAME) GenerateFileName(); } } else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) { _switch_mode = SM_SAVE_GAME; FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, sizeof(_file_to_saveload.name)); } else { _switch_mode = SM_SAVE_HEIGHTMAP; FiosMakeHeightmapName(_file_to_saveload.name, this->filename_editbox.text.buf, sizeof(_file_to_saveload.name)); } /* In the editor set up the vehicle engines correctly (date might have changed) */ if (_game_mode == GM_EDITOR) StartupEngines(); } } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_SL_DRIVES_DIRECTORIES_LIST); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { switch (data) { case 0: /* Rescan files */ this->selected = NULL; _load_check_data.Clear(); if (!gui_scope) break; BuildFileList(); /* FALL THROUGH */ case 1: /* Selection changes */ if (!gui_scope) break; if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) { this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, this->selected == NULL || _load_check_data.HasErrors() || !(_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs())); this->SetWidgetDisabledState(WID_SL_NEWGRF_INFO, !_load_check_data.HasNewGrfs()); this->SetWidgetDisabledState(WID_SL_MISSING_NEWGRFS, !_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility == GLC_ALL_GOOD); } break; case 2: /* _fios_items changed */ this->vscroll->SetCount(_fios_items.Length()); this->selected = NULL; _load_check_data.Clear(); break; } } }; /** Load game/scenario */ static const WindowDesc _load_dialog_desc( WDP_CENTER, 500, 294, WC_SAVELOAD, WC_NONE, 0, _nested_load_dialog_widgets, lengthof(_nested_load_dialog_widgets) ); /** Load heightmap */ static const WindowDesc _load_heightmap_dialog_desc( WDP_CENTER, 257, 320, WC_SAVELOAD, WC_NONE, 0, _nested_load_heightmap_dialog_widgets, lengthof(_nested_load_heightmap_dialog_widgets) ); /** Save game/scenario */ static const WindowDesc _save_dialog_desc( WDP_CENTER, 500, 294, WC_SAVELOAD, WC_NONE, 0, _nested_save_dialog_widgets, lengthof(_nested_save_dialog_widgets) ); /** * These values are used to convert the file/operations mode into a corresponding file type. * So each entry, as expressed by the related comment, is based on the enum */ static const FileType _file_modetotype[] = { FT_SAVEGAME, // used for SLD_LOAD_GAME FT_SCENARIO, // used for SLD_LOAD_SCENARIO FT_SAVEGAME, // used for SLD_SAVE_GAME FT_SCENARIO, // used for SLD_SAVE_SCENARIO FT_HEIGHTMAP, // used for SLD_LOAD_HEIGHTMAP FT_HEIGHTMAP, // used for SLD_SAVE_HEIGHTMAP }; /** * Launch save/load dialog in the given mode. * @param mode Save/load mode. */ void ShowSaveLoadDialog(SaveLoadDialogMode mode) { DeleteWindowById(WC_SAVELOAD, 0); const WindowDesc *sld; switch (mode) { case SLD_SAVE_GAME: case SLD_SAVE_SCENARIO: case SLD_SAVE_HEIGHTMAP: sld = &_save_dialog_desc; break; case SLD_LOAD_HEIGHTMAP: sld = &_load_heightmap_dialog_desc; break; default: sld = &_load_dialog_desc; break; } _saveload_mode = mode; _file_to_saveload.filetype = _file_modetotype[mode]; new SaveLoadWindow(sld, mode); } void SetFiosType(const byte fiostype) { switch (fiostype) { case FIOS_TYPE_FILE: case FIOS_TYPE_SCENARIO: _file_to_saveload.mode = SL_LOAD; break; case FIOS_TYPE_OLDFILE: case FIOS_TYPE_OLD_SCENARIO: _file_to_saveload.mode = SL_OLD_LOAD; break; #ifdef WITH_PNG case FIOS_TYPE_PNG: _file_to_saveload.mode = SL_PNG; break; #endif /* WITH_PNG */ case FIOS_TYPE_BMP: _file_to_saveload.mode = SL_BMP; break; default: _file_to_saveload.mode = SL_INVALID; break; } } openttd-1.3.3/src/aircraft.h0000644000000000000000000001156512246102611014427 0ustar rootroot/* $Id: aircraft.h 24839 2012-12-23 01:00:25Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file aircraft.h Base for aircraft. */ #ifndef AIRCRAFT_H #define AIRCRAFT_H #include "station_map.h" #include "vehicle_base.h" struct Aircraft; /** An aircraft can be one of those types. */ enum AircraftSubType { AIR_HELICOPTER = 0, ///< an helicopter AIR_AIRCRAFT = 2, ///< an airplane AIR_SHADOW = 4, ///< shadow of the aircraft AIR_ROTOR = 6, ///< rotor of an helicopter }; /** Aircraft flags. */ enum VehicleAirFlags { VAF_DEST_TOO_FAR = 0, ///< Next destination is too far away. }; void HandleAircraftEnterHangar(Aircraft *v); void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type); void UpdateAirplanesOnNewStation(const Station *st); void UpdateAircraftCache(Aircraft *v, bool update_range = false); void AircraftLeaveHangar(Aircraft *v, Direction exit_dir); void AircraftNextAirportPos_and_Order(Aircraft *v); void SetAircraftPosition(Aircraft *v, int x, int y, int z); int GetAircraftFlyingAltitude(const Aircraft *v); /** Variables that are cached to improve performance and such. */ struct AircraftCache { uint32 cached_max_range_sqr; ///< Cached squared maximum range. uint16 cached_max_range; ///< Cached maximum range. }; /** * Aircraft, helicopters, rotors and their shadows belong to this class. */ struct Aircraft FINAL : public SpecializedVehicle { uint16 crashed_counter; ///< Timer for handling crash animations. byte pos; ///< Next desired position of the aircraft. byte previous_pos; ///< Previous desired position of the aircraft. StationID targetairport; ///< Airport to go to next. byte state; ///< State of the airport. @see AirportMovementStates DirectionByte last_direction; byte number_consecutive_turns; ///< Protection to prevent the aircraft of making a lot of turns in order to reach a specific point. byte turn_counter; ///< Ticks between each turn to prevent > 45 degree turns. byte flags; ///< Aircraft flags. @see VehicleAirFlags AircraftCache acache; /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ Aircraft() : SpecializedVehicleBase() {} /** We want to 'destruct' the right class. */ virtual ~Aircraft() { this->PreDestructor(); } void MarkDirty(); void UpdateDeltaXY(Direction direction); ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; } bool IsPrimaryVehicle() const { return this->IsNormalAircraft(); } SpriteID GetImage(Direction direction, EngineImageType image_type) const; int GetDisplaySpeed() const { return this->cur_speed; } int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed; } int GetSpeedOldUnits() const { return this->vcache.cached_max_speed * 10 / 128; } int GetCurrentMaxSpeed() const { return this->GetSpeedOldUnits(); } Money GetRunningCost() const; bool IsInDepot() const { assert(this->IsPrimaryVehicle()); return (this->vehstatus & VS_HIDDEN) != 0 && IsHangarTile(this->tile); } bool Tick(); void OnNewDay(); uint Crash(bool flooded = false); TileIndex GetOrderStationLocation(StationID station); bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse); /** * Check if the aircraft type is a normal flying device; eg * not a rotor or a shadow * @return Returns true if the aircraft is a helicopter/airplane and * false if it is a shadow or a rotor */ inline bool IsNormalAircraft() const { /* To be fully correct the commented out functionality is the proper one, * but since value can only be 0 or 2, it is sufficient to only check <= 2 * return (this->subtype == AIR_HELICOPTER) || (this->subtype == AIR_AIRCRAFT); */ return this->subtype <= AIR_AIRCRAFT; } /** * Get the range of this aircraft. * @return Range in tiles or 0 if unlimited range. */ uint16 GetRange() const { return this->acache.cached_max_range; } }; /** * Macro for iterating over all aircrafts. */ #define FOR_ALL_AIRCRAFT(var) FOR_ALL_VEHICLES_OF_TYPE(Aircraft, var) SpriteID GetRotorImage(const Aircraft *v, EngineImageType image_type); Station *GetTargetAirportIfValid(const Aircraft *v); #endif /* AIRCRAFT_H */ openttd-1.3.3/src/cargopacket.cpp0000644000000000000000000003154112246102611015446 0ustar rootroot/* $Id: cargopacket.cpp 23640 2011-12-20 17:57:56Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargopacket.cpp Implementation of the cargo packets. */ #include "stdafx.h" #include "core/pool_func.hpp" #include "economy_base.h" /* Initialize the cargopacket-pool */ CargoPacketPool _cargopacket_pool("CargoPacket"); INSTANTIATE_POOL_METHODS(CargoPacket) /** * Create a new packet for savegame loading. */ CargoPacket::CargoPacket() { this->source_type = ST_INDUSTRY; this->source_id = INVALID_SOURCE; } /** * Creates a new cargo packet. * @param source Source station of the packet. * @param source_xy Source location of the packet. * @param count Number of cargo entities to put in this packet. * @param source_type 'Type' of source the packet comes from (for subsidies). * @param source_id Actual source of the packet (for subsidies). * @pre count != 0 * @note We have to zero memory ourselves here because we are using a 'new' * that, in contrary to all other pools, does not memset to 0. */ CargoPacket::CargoPacket(StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id) : feeder_share(0), count(count), days_in_transit(0), source_id(source_id), source(source), source_xy(source_xy), loaded_at_xy(0) { assert(count != 0); this->source_type = source_type; } /** * Creates a new cargo packet. Initializes the fields that cannot be changed later. * Used when loading or splitting packets. * @param count Number of cargo entities to put in this packet. * @param days_in_transit Number of days the cargo has been in transit. * @param source Station the cargo was initially loaded. * @param source_xy Station location the cargo was initially loaded. * @param loaded_at_xy Location the cargo was loaded last. * @param feeder_share Feeder share the packet has already accumulated. * @param source_type 'Type' of source the packet comes from (for subsidies). * @param source_id Actual source of the packet (for subsidies). * @note We have to zero memory ourselves here because we are using a 'new' * that, in contrary to all other pools, does not memset to 0. */ CargoPacket::CargoPacket(uint16 count, byte days_in_transit, StationID source, TileIndex source_xy, TileIndex loaded_at_xy, Money feeder_share, SourceType source_type, SourceID source_id) : feeder_share(feeder_share), count(count), days_in_transit(days_in_transit), source_id(source_id), source(source), source_xy(source_xy), loaded_at_xy(loaded_at_xy) { assert(count != 0); this->source_type = source_type; } /** * Split this packet in two and return the split off part. * @param new_size Size of the remaining part. * @return Split off part, or NULL if no packet could be allocated! */ inline CargoPacket *CargoPacket::Split(uint new_size) { if (!CargoPacket::CanAllocateItem()) return NULL; Money fs = this->feeder_share * new_size / static_cast(this->count); CargoPacket *cp_new = new CargoPacket(new_size, this->days_in_transit, this->source, this->source_xy, this->loaded_at_xy, fs, this->source_type, this->source_id); this->feeder_share -= fs; this->count -= new_size; return cp_new; } /** * Merge another packet into this one. * @param cp Packet to be merged in. */ inline void CargoPacket::Merge(CargoPacket *cp) { this->count += cp->count; this->feeder_share += cp->feeder_share; delete cp; } /** * Invalidates (sets source_id to INVALID_SOURCE) all cargo packets from given source. * @param src_type Type of source. * @param src Index of source. */ /* static */ void CargoPacket::InvalidateAllFrom(SourceType src_type, SourceID src) { CargoPacket *cp; FOR_ALL_CARGOPACKETS(cp) { if (cp->source_type == src_type && cp->source_id == src) cp->source_id = INVALID_SOURCE; } } /** * Invalidates (sets source to INVALID_STATION) all cargo packets from given station. * @param sid Station that gets removed. */ /* static */ void CargoPacket::InvalidateAllFrom(StationID sid) { CargoPacket *cp; FOR_ALL_CARGOPACKETS(cp) { if (cp->source == sid) cp->source = INVALID_STATION; } } /* * * Cargo list implementation * */ /** * Destroy the cargolist ("frees" all cargo packets). */ template CargoList::~CargoList() { for (Iterator it(this->packets.begin()); it != this->packets.end(); ++it) { delete *it; } } /** * Empty the cargo list, but don't free the cargo packets; * the cargo packets are cleaned by CargoPacket's CleanPool. */ template void CargoList::OnCleanPool() { this->packets.clear(); } /** * Update the cached values to reflect the removal of this packet. * Decreases count and days_in_transit. * @param cp Packet to be removed from cache. */ template void CargoList::RemoveFromCache(const CargoPacket *cp) { this->count -= cp->count; this->cargo_days_in_transit -= cp->days_in_transit * cp->count; } /** * Update the cache to reflect adding of this packet. * Increases count and days_in_transit. * @param cp New packet to be inserted. */ template void CargoList::AddToCache(const CargoPacket *cp) { this->count += cp->count; this->cargo_days_in_transit += cp->days_in_transit * cp->count; } /** * Appends the given cargo packet. Tries to merge it with another one in the * packets list. If no fitting packet is found, appends it. * @warning After appending this packet may not exist anymore! * @note Do not use the cargo packet anymore after it has been appended to this CargoList! * @param cp Cargo packet to add. * @pre cp != NULL */ template void CargoList::Append(CargoPacket *cp) { assert(cp != NULL); static_cast(this)->AddToCache(cp); for (List::reverse_iterator it(this->packets.rbegin()); it != this->packets.rend(); it++) { CargoPacket *icp = *it; if (Tinst::AreMergable(icp, cp) && icp->count + cp->count <= CargoPacket::MAX_COUNT) { icp->Merge(cp); return; } } /* The packet could not be merged with another one */ this->packets.push_back(cp); } /** * Truncates the cargo in this list to the given amount. It leaves the * first count cargo entities and removes the rest. * @param max_remaining Maximum amount of entities to be in the list after the command. */ template void CargoList::Truncate(uint max_remaining) { for (Iterator it(packets.begin()); it != packets.end(); /* done during loop*/) { CargoPacket *cp = *it; if (max_remaining == 0) { /* Nothing should remain, just remove the packets. */ it = this->packets.erase(it); static_cast(this)->RemoveFromCache(cp); delete cp; continue; } uint local_count = cp->count; if (local_count > max_remaining) { uint diff = local_count - max_remaining; this->count -= diff; this->cargo_days_in_transit -= cp->days_in_transit * diff; cp->count = max_remaining; max_remaining = 0; } else { max_remaining -= local_count; } ++it; } } /** * Moves the given amount of cargo to another list. * Depending on the value of mta the side effects of this function differ: * - MTA_FINAL_DELIVERY: Destroys the packets that do not originate from a specific station. * - MTA_CARGO_LOAD: Sets the loaded_at_xy value of the moved packets. * - MTA_TRANSFER: Just move without side effects. * - MTA_UNLOAD: Just move without side effects. * @param dest Destination to move the cargo to. * @param max_move Amount of cargo entities to move. * @param mta How to handle the moving (side effects). * @param data Depending on mta the data of this variable differs: * - MTA_FINAL_DELIVERY - Station ID of packet's origin not to remove. * - MTA_CARGO_LOAD - Station's tile index of load. * - MTA_TRANSFER - Unused. * - MTA_UNLOAD - Unused. * @param payment The payment helper. * * @pre mta == MTA_FINAL_DELIVERY || dest != NULL * @pre mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL * @return True if there are still packets that might be moved from this cargo list. */ template template bool CargoList::MoveTo(Tother_inst *dest, uint max_move, MoveToAction mta, CargoPayment *payment, uint data) { assert(mta == MTA_FINAL_DELIVERY || dest != NULL); assert(mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL); Iterator it(this->packets.begin()); while (it != this->packets.end() && max_move > 0) { CargoPacket *cp = *it; if (cp->source == data && mta == MTA_FINAL_DELIVERY) { /* Skip cargo that originated from this station. */ ++it; continue; } if (cp->count <= max_move) { /* Can move the complete packet */ max_move -= cp->count; it = this->packets.erase(it); static_cast(this)->RemoveFromCache(cp); switch (mta) { case MTA_FINAL_DELIVERY: payment->PayFinalDelivery(cp, cp->count); delete cp; continue; // of the loop case MTA_CARGO_LOAD: cp->loaded_at_xy = data; break; case MTA_TRANSFER: cp->feeder_share += payment->PayTransfer(cp, cp->count); break; case MTA_UNLOAD: break; } dest->Append(cp); continue; } /* Can move only part of the packet */ if (mta == MTA_FINAL_DELIVERY) { /* Final delivery doesn't need package splitting. */ payment->PayFinalDelivery(cp, max_move); /* Remove the delivered data from the cache */ uint left = cp->count - max_move; cp->count = max_move; static_cast(this)->RemoveFromCache(cp); /* Final delivery payment pays the feeder share, so we have to * reset that so it is not 'shown' twice for partial unloads. */ cp->feeder_share = 0; cp->count = left; } else { /* But... the rest needs package splitting. */ CargoPacket *cp_new = cp->Split(max_move); /* We could not allocate a CargoPacket? Is the map that full? */ if (cp_new == NULL) return false; static_cast(this)->RemoveFromCache(cp_new); // this reflects the changes in cp. if (mta == MTA_TRANSFER) { /* Add the feeder share before inserting in dest. */ cp_new->feeder_share += payment->PayTransfer(cp_new, max_move); } else if (mta == MTA_CARGO_LOAD) { cp_new->loaded_at_xy = data; } dest->Append(cp_new); } max_move = 0; } return it != packets.end(); } /** Invalidates the cached data and rebuilds it. */ template void CargoList::InvalidateCache() { this->count = 0; this->cargo_days_in_transit = 0; for (ConstIterator it(this->packets.begin()); it != this->packets.end(); it++) { static_cast(this)->AddToCache(*it); } } /** * Update the cached values to reflect the removal of this packet. * Decreases count, feeder share and days_in_transit. * @param cp Packet to be removed from cache. */ void VehicleCargoList::RemoveFromCache(const CargoPacket *cp) { this->feeder_share -= cp->feeder_share; this->Parent::RemoveFromCache(cp); } /** * Update the cache to reflect adding of this packet. * Increases count, feeder share and days_in_transit. * @param cp New packet to be inserted. */ void VehicleCargoList::AddToCache(const CargoPacket *cp) { this->feeder_share += cp->feeder_share; this->Parent::AddToCache(cp); } /** * Ages the all cargo in this list. */ void VehicleCargoList::AgeCargo() { for (ConstIterator it(this->packets.begin()); it != this->packets.end(); it++) { CargoPacket *cp = *it; /* If we're at the maximum, then we can't increase no more. */ if (cp->days_in_transit == 0xFF) continue; cp->days_in_transit++; this->cargo_days_in_transit += cp->count; } } /** Invalidates the cached data and rebuild it. */ void VehicleCargoList::InvalidateCache() { this->feeder_share = 0; this->Parent::InvalidateCache(); } /* * We have to instantiate everything we want to be usable. */ template class CargoList; template class CargoList; /** Autoreplace Vehicle -> Vehicle 'transfer'. */ template bool CargoList::MoveTo(VehicleCargoList *, uint max_move, MoveToAction mta, CargoPayment *payment, uint data); /** Cargo unloading at a station. */ template bool CargoList::MoveTo(StationCargoList *, uint max_move, MoveToAction mta, CargoPayment *payment, uint data); /** Cargo loading at a station. */ template bool CargoList::MoveTo(VehicleCargoList *, uint max_move, MoveToAction mta, CargoPayment *payment, uint data); openttd-1.3.3/src/heightmap.h0000644000000000000000000000232312246102610014571 0ustar rootroot/* $Id: heightmap.h 21845 2011-01-18 22:31:06Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file heightmap.h Functions related to creating heightmaps from files. */ #ifndef HEIGHTMAP_H #define HEIGHTMAP_H /** * Order of these enums has to be the same as in lang/english.txt * Otherwise you will get inconsistent behaviour. */ enum HeightmapRotation { HM_COUNTER_CLOCKWISE, ///< Rotate the map counter clockwise 45 degrees HM_CLOCKWISE, ///< Rotate the map clockwise 45 degrees }; bool GetHeightmapDimensions(char *filename, uint *x, uint *y); void LoadHeightmap(char *filename); void FlatEmptyWorld(byte tile_height); void FixSlopes(); #endif /* HEIGHTMAP_H */ openttd-1.3.3/src/newgrf_generic.cpp0000644000000000000000000002323212246102611016145 0ustar rootroot/* $Id: newgrf_generic.cpp 24846 2012-12-23 21:09:09Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_generic.cpp Handling of generic feature callbacks. */ #include "stdafx.h" #include "debug.h" #include "newgrf_spritegroup.h" #include "industrytype.h" #include "core/random_func.hpp" #include "newgrf_sound.h" #include "water_map.h" #include /** Scope resolver for generic objects and properties. */ struct GenericScopeResolver : public ScopeResolver { CargoID cargo_type; uint8 default_selection; uint8 src_industry; ///< Source industry substitute type. 0xFF for "town", 0xFE for "unknown". uint8 dst_industry; ///< Destination industry substitute type. 0xFF for "town", 0xFE for "unknown". uint8 distance; AIConstructionEvent event; uint8 count; uint8 station_size; GenericScopeResolver(ResolverObject *ro, bool ai_callback); /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; private: bool ai_callback; ///< Callback comes from the AI. }; /** Resolver object for generic objects/properties. */ struct GenericResolverObject : public ResolverObject { GenericScopeResolver generic_scope; GenericResolverObject(bool ai_callback, CallbackID callback = CBID_NO_CALLBACK); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { switch (scope) { case VSG_SCOPE_SELF: return &this->generic_scope; default: return ResolverObject::GetScope(scope, relative); } } /* virtual */ const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; }; struct GenericCallback { const GRFFile *file; const SpriteGroup *group; GenericCallback(const GRFFile *file, const SpriteGroup *group) : file(file), group(group) { } }; typedef std::list GenericCallbackList; static GenericCallbackList _gcl[GSF_END]; /** * Reset all generic feature callback sprite groups. */ void ResetGenericCallbacks() { for (uint8 feature = 0; feature < lengthof(_gcl); feature++) { _gcl[feature].clear(); } } /** * Add a generic feature callback sprite group to the appropriate feature list. * @param feature The feature for the callback. * @param file The GRF of the callback. * @param group The sprite group of the callback. */ void AddGenericCallback(uint8 feature, const GRFFile *file, const SpriteGroup *group) { if (feature >= lengthof(_gcl)) { grfmsg(5, "AddGenericCallback: Unsupported feature 0x%02X", feature); return; } /* Generic feature callbacks are evaluated in reverse (i.e. the last group * to be added is evaluated first, etc) thus we push the group to the * beginning of the list so a standard iterator will do the right thing. */ _gcl[feature].push_front(GenericCallback(file, group)); } /* virtual */ uint32 GenericScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { if (this->ai_callback) { switch (variable) { case 0x40: return this->ro->grffile->cargo_map[this->cargo_type]; case 0x80: return this->cargo_type; case 0x81: return CargoSpec::Get(this->cargo_type)->bitnum; case 0x82: return this->default_selection; case 0x83: return this->src_industry; case 0x84: return this->dst_industry; case 0x85: return this->distance; case 0x86: return this->event; case 0x87: return this->count; case 0x88: return this->station_size; default: break; } } DEBUG(grf, 1, "Unhandled generic feature variable 0x%02X", variable); *available = false; return UINT_MAX; } /* virtual */ const SpriteGroup *GenericResolverObject::ResolveReal(const RealSpriteGroup *group) const { if (group->num_loaded == 0) return NULL; return group->loaded[0]; } /** * Generic resolver. * @param ai_callback Callback comes from the AI. * @param callback Callback ID. */ GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callback) : ResolverObject(NULL, callback), generic_scope(this, ai_callback) { } /** * Generic scope resolver. * @param ro Surrounding resolver. * @param ai_callback Callback comes from the AI. */ GenericScopeResolver::GenericScopeResolver(ResolverObject *ro, bool ai_callback) : ScopeResolver(ro) { this->cargo_type = 0; this->default_selection = 0; this->src_industry = 0; this->dst_industry = 0; this->distance = 0; this->event = (AIConstructionEvent)0; this->count = 0; this->station_size = 0; this->ai_callback = ai_callback; } /** * Follow a generic feature callback list and return the first successful * answer * @param feature GRF Feature of callback * @param object pre-populated resolver object * @param param1_grfv7 callback_param1 for GRFs up to version 7. * @param param1_grfv8 callback_param1 for GRFs from version 8 on. * @param [out] file Optionally returns the GRFFile which made the final decision for the callback result. * May be NULL if not required. * @return callback value if successful or CALLBACK_FAILED */ static uint16 GetGenericCallbackResult(uint8 feature, ResolverObject *object, uint32 param1_grfv7, uint32 param1_grfv8, const GRFFile **file) { assert(feature < lengthof(_gcl)); /* Test each feature callback sprite group. */ for (GenericCallbackList::const_iterator it = _gcl[feature].begin(); it != _gcl[feature].end(); ++it) { const SpriteGroup *group = it->group; object->grffile = it->file; /* Set callback param based on GRF version. */ object->callback_param1 = it->file->grf_version >= 8 ? param1_grfv8 : param1_grfv7; group = SpriteGroup::Resolve(group, object); if (group == NULL || group->GetCallbackResult() == CALLBACK_FAILED) continue; /* Return NewGRF file if necessary */ if (file != NULL) *file = it->file; return group->GetCallbackResult(); } /* No callback returned a valid result, so we've failed. */ return CALLBACK_FAILED; } /** * 'Execute' an AI purchase selection callback * * @param feature GRF Feature to call callback for. * @param cargo_type Cargotype to pass to callback. (Variable 80) * @param default_selection 'Default selection' to pass to callback. (Variable 82) * @param src_industry 'Source industry type' to pass to callback. (Variable 83) * @param dst_industry 'Destination industry type' to pass to callback. (Variable 84) * @param distance 'Distance between source and destination' to pass to callback. (Variable 85) * @param event 'AI construction event' to pass to callback. (Variable 86) * @param count 'Construction number' to pass to callback. (Variable 87) * @param station_size 'Station size' to pass to callback. (Variable 88) * @param [out] file Optionally returns the GRFFile which made the final decision for the callback result. * May be NULL if not required. * @return callback value if successful or CALLBACK_FAILED */ uint16 GetAiPurchaseCallbackResult(uint8 feature, CargoID cargo_type, uint8 default_selection, IndustryType src_industry, IndustryType dst_industry, uint8 distance, AIConstructionEvent event, uint8 count, uint8 station_size, const GRFFile **file) { GenericResolverObject object(true, CBID_GENERIC_AI_PURCHASE_SELECTION); if (src_industry != IT_AI_UNKNOWN && src_industry != IT_AI_TOWN) { const IndustrySpec *is = GetIndustrySpec(src_industry); /* If this is no original industry, use the substitute type */ if (is->grf_prop.subst_id != INVALID_INDUSTRYTYPE) src_industry = is->grf_prop.subst_id; } if (dst_industry != IT_AI_UNKNOWN && dst_industry != IT_AI_TOWN) { const IndustrySpec *is = GetIndustrySpec(dst_industry); /* If this is no original industry, use the substitute type */ if (is->grf_prop.subst_id != INVALID_INDUSTRYTYPE) dst_industry = is->grf_prop.subst_id; } object.generic_scope.cargo_type = cargo_type; object.generic_scope.default_selection = default_selection; object.generic_scope.src_industry = src_industry; object.generic_scope.dst_industry = dst_industry; object.generic_scope.distance = distance; object.generic_scope.event = event; object.generic_scope.count = count; object.generic_scope.station_size = station_size; uint16 callback = GetGenericCallbackResult(feature, &object, 0, 0, file); if (callback != CALLBACK_FAILED) callback = GB(callback, 0, 8); return callback; } /** * 'Execute' the ambient sound effect callback. * @param tile Tile the sound effect should be generated for. */ void AmbientSoundEffectCallback(TileIndex tile) { assert(IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES) || IsTileType(tile, MP_WATER)); /* Only run every 1/200-th time. */ uint32 r; // Save for later if (!Chance16R(1, 200, r) || !_settings_client.sound.ambient) return; /* Prepare resolver object. */ GenericResolverObject object(false, CBID_SOUNDS_AMBIENT_EFFECT); uint32 param1_v7 = GetTileType(tile) << 28 | Clamp(TileHeight(tile), 0, 15) << 24 | GB(r, 16, 8) << 16 | GetTerrainType(tile); uint32 param1_v8 = GetTileType(tile) << 24 | GetTileZ(tile) << 16 | GB(r, 16, 8) << 8 | (HasTileWaterClass(tile) ? GetWaterClass(tile) : 0) << 3 | GetTerrainType(tile); /* Run callback. */ const GRFFile *grf_file; uint16 callback = GetGenericCallbackResult(GSF_SOUNDFX, &object, param1_v7, param1_v8, &grf_file); if (callback != CALLBACK_FAILED) PlayTileSound(grf_file, callback, tile); } openttd-1.3.3/src/company_gui.cpp0000644000000000000000000030654012246102611015501 0ustar rootroot/* $Id: company_gui.cpp 25502 2013-06-28 19:44:28Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file company_gui.cpp %Company related GUIs. */ #include "stdafx.h" #include "error.h" #include "gui.h" #include "window_gui.h" #include "textbuf_gui.h" #include "viewport_func.h" #include "company_func.h" #include "command_func.h" #include "network/network.h" #include "network/network_gui.h" #include "network/network_func.h" #include "newgrf.h" #include "company_manager_face.h" #include "strings_func.h" #include "date_func.h" #include "widgets/dropdown_type.h" #include "tilehighlight_func.h" #include "company_base.h" #include "core/geometry_func.hpp" #include "object_type.h" #include "rail.h" #include "engine_base.h" #include "window_func.h" #include "road_func.h" #include "water.h" #include "station_func.h" #include "widgets/company_widget.h" /** Company GUI constants. */ static const uint EXP_LINESPACE = 2; ///< Amount of vertical space for a horizontal (sub-)total line. static const uint EXP_BLOCKSPACE = 10; ///< Amount of vertical space between two blocks of numbers. static void DoSelectCompanyManagerFace(Window *parent); static void ShowCompanyInfrastructure(CompanyID company); /** Standard unsorted list of expenses. */ static ExpensesType _expenses_list_1[] = { EXPENSES_CONSTRUCTION, EXPENSES_NEW_VEHICLES, EXPENSES_TRAIN_RUN, EXPENSES_ROADVEH_RUN, EXPENSES_AIRCRAFT_RUN, EXPENSES_SHIP_RUN, EXPENSES_PROPERTY, EXPENSES_TRAIN_INC, EXPENSES_ROADVEH_INC, EXPENSES_AIRCRAFT_INC, EXPENSES_SHIP_INC, EXPENSES_LOAN_INT, EXPENSES_OTHER, }; /** Grouped list of expenses. */ static ExpensesType _expenses_list_2[] = { EXPENSES_TRAIN_INC, EXPENSES_ROADVEH_INC, EXPENSES_AIRCRAFT_INC, EXPENSES_SHIP_INC, INVALID_EXPENSES, EXPENSES_TRAIN_RUN, EXPENSES_ROADVEH_RUN, EXPENSES_AIRCRAFT_RUN, EXPENSES_SHIP_RUN, EXPENSES_PROPERTY, EXPENSES_LOAN_INT, INVALID_EXPENSES, EXPENSES_CONSTRUCTION, EXPENSES_NEW_VEHICLES, EXPENSES_OTHER, INVALID_EXPENSES, }; /** Expense list container. */ struct ExpensesList { const ExpensesType *et; ///< Expenses items. const uint length; ///< Number of items in list. const uint num_subtotals; ///< Number of sub-totals in the list. ExpensesList(ExpensesType *et, int length, int num_subtotals) : et(et), length(length), num_subtotals(num_subtotals) { } uint GetHeight() const { /* heading + line + texts of expenses + sub-totals + total line + total text */ return FONT_HEIGHT_NORMAL + EXP_LINESPACE + this->length * FONT_HEIGHT_NORMAL + num_subtotals * (EXP_BLOCKSPACE + EXP_LINESPACE) + EXP_LINESPACE + FONT_HEIGHT_NORMAL; } /** Compute width of the expenses categories in pixels. */ uint GetCategoriesWidth() const { uint width = 0; bool invalid_expenses_measured = false; // Measure 'Total' width only once. for (uint i = 0; i < this->length; i++) { ExpensesType et = this->et[i]; if (et == INVALID_EXPENSES) { if (!invalid_expenses_measured) { width = max(width, GetStringBoundingBox(STR_FINANCES_TOTAL_CAPTION).width); invalid_expenses_measured = true; } } else { width = max(width, GetStringBoundingBox(STR_FINANCES_SECTION_CONSTRUCTION + et).width); } } return width; } }; static const ExpensesList _expenses_list_types[] = { ExpensesList(_expenses_list_1, lengthof(_expenses_list_1), 0), ExpensesList(_expenses_list_2, lengthof(_expenses_list_2), 3), }; /** * Draw the expenses categories. * @param r Available space for drawing. * @note The environment must provide padding at the left and right of \a r. */ static void DrawCategories(const Rect &r) { int y = r.top; DrawString(r.left, r.right, y, STR_FINANCES_EXPENDITURE_INCOME_TITLE, TC_FROMSTRING, SA_HOR_CENTER, true); y += FONT_HEIGHT_NORMAL + EXP_LINESPACE; int type = _settings_client.gui.expenses_layout; for (uint i = 0; i < _expenses_list_types[type].length; i++) { const ExpensesType et = _expenses_list_types[type].et[i]; if (et == INVALID_EXPENSES) { y += EXP_LINESPACE; DrawString(r.left, r.right, y, STR_FINANCES_TOTAL_CAPTION, TC_FROMSTRING, SA_RIGHT); y += FONT_HEIGHT_NORMAL + EXP_BLOCKSPACE; } else { DrawString(r.left, r.right, y, STR_FINANCES_SECTION_CONSTRUCTION + et); y += FONT_HEIGHT_NORMAL; } } DrawString(r.left, r.right, y + EXP_LINESPACE, STR_FINANCES_TOTAL_CAPTION, TC_FROMSTRING, SA_RIGHT); } /** * Draw an amount of money. * @param amount Amount of money to draw, * @param left Left coordinate of the space to draw in. * @param right Right coordinate of the space to draw in. * @param top Top coordinate of the space to draw in. */ static void DrawPrice(Money amount, int left, int right, int top) { StringID str = STR_FINANCES_NEGATIVE_INCOME; if (amount < 0) { amount = -amount; str++; } SetDParam(0, amount); DrawString(left, right, top, str, TC_FROMSTRING, SA_RIGHT); } /** * Draw a column with prices. * @param r Available space for drawing. * @param year Year being drawn. * @param tbl Pointer to table of amounts for \a year. * @note The environment must provide padding at the left and right of \a r. */ static void DrawYearColumn(const Rect &r, int year, const Money (*tbl)[EXPENSES_END]) { int y = r.top; SetDParam(0, year); DrawString(r.left, r.right, y, STR_FINANCES_YEAR, TC_FROMSTRING, SA_RIGHT, true); y += FONT_HEIGHT_NORMAL + EXP_LINESPACE; Money sum = 0; Money subtotal = 0; int type = _settings_client.gui.expenses_layout; for (uint i = 0; i < _expenses_list_types[type].length; i++) { const ExpensesType et = _expenses_list_types[type].et[i]; if (et == INVALID_EXPENSES) { Money cost = subtotal; subtotal = 0; GfxFillRect(r.left, y, r.right, y, PC_BLACK); y += EXP_LINESPACE; DrawPrice(cost, r.left, r.right, y); y += FONT_HEIGHT_NORMAL + EXP_BLOCKSPACE; } else { Money cost = (*tbl)[et]; subtotal += cost; sum += cost; if (cost != 0) DrawPrice(cost, r.left, r.right, y); y += FONT_HEIGHT_NORMAL; } } GfxFillRect(r.left, y, r.right, y, PC_BLACK); y += EXP_LINESPACE; DrawPrice(sum, r.left, r.right, y); } static const NWidgetPart _nested_company_finances_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_CF_CAPTION), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_CF_TOGGLE_SIZE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CF_SEL_PANEL), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), SetPadding(WD_FRAMERECT_TOP, WD_FRAMERECT_RIGHT, WD_FRAMERECT_BOTTOM, WD_FRAMERECT_LEFT), SetPIP(0, 9, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_EXPS_CATEGORY), SetMinimalSize(120, 0), SetFill(0, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_EXPS_PRICE1), SetMinimalSize(86, 0), SetFill(0, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_EXPS_PRICE2), SetMinimalSize(86, 0), SetFill(0, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_EXPS_PRICE3), SetMinimalSize(86, 0), SetFill(0, 0), EndContainer(), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), SetPadding(WD_FRAMERECT_TOP, WD_FRAMERECT_RIGHT, WD_FRAMERECT_BOTTOM, WD_FRAMERECT_LEFT), NWidget(NWID_VERTICAL), // Vertical column with 'bank balance', 'loan' NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_BANK_BALANCE_TITLE, STR_NULL), SetFill(1, 0), NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_LOAN_TITLE, STR_NULL), SetFill(1, 0), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(NWID_SPACER), SetFill(0, 0), SetMinimalSize(30, 0), NWidget(NWID_VERTICAL), // Vertical column with bank balance amount, loan amount, and total. NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_BALANCE_VALUE), SetDataTip(STR_NULL, STR_NULL), NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_LOAN_VALUE), SetDataTip(STR_NULL, STR_NULL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_LOAN_LINE), SetMinimalSize(0, 2), SetFill(1, 0), NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_TOTAL_VALUE), SetDataTip(STR_NULL, STR_NULL), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CF_SEL_MAXLOAN), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetFill(0, 1), SetMinimalSize(25, 0), NWidget(NWID_VERTICAL), // Max loan information NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_MAXLOAN_GAP), SetFill(0, 0), NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_MAXLOAN_VALUE), SetDataTip(STR_FINANCES_MAX_LOAN, STR_NULL), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CF_SEL_BUTTONS), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CF_INCREASE_LOAN), SetFill(1, 0), SetDataTip(STR_FINANCES_BORROW_BUTTON, STR_FINANCES_BORROW_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CF_REPAY_LOAN), SetFill(1, 0), SetDataTip(STR_FINANCES_REPAY_BUTTON, STR_FINANCES_REPAY_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CF_INFRASTRUCTURE), SetFill(1, 0), SetDataTip(STR_FINANCES_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), EndContainer(), EndContainer(), }; /** * Window class displaying the company finances. * @todo #money_width should be calculated dynamically. */ struct CompanyFinancesWindow : Window { static Money max_money; ///< The maximum amount of money a company has had this 'run' bool small; ///< Window is toggled to 'small'. CompanyFinancesWindow(const WindowDesc *desc, CompanyID company) : Window() { this->small = false; this->CreateNestedTree(desc); this->SetupWidgets(); this->FinishInitNested(desc, company); this->owner = (Owner)this->window_number; } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_CF_CAPTION: SetDParam(0, (CompanyID)this->window_number); SetDParam(1, (CompanyID)this->window_number); break; case WID_CF_MAXLOAN_VALUE: SetDParam(0, _economy.max_loan); break; case WID_CF_INCREASE_LOAN: case WID_CF_REPAY_LOAN: SetDParam(0, LOAN_INTERVAL); break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { int type = _settings_client.gui.expenses_layout; switch (widget) { case WID_CF_EXPS_CATEGORY: size->width = _expenses_list_types[type].GetCategoriesWidth(); size->height = _expenses_list_types[type].GetHeight(); break; case WID_CF_EXPS_PRICE1: case WID_CF_EXPS_PRICE2: case WID_CF_EXPS_PRICE3: size->height = _expenses_list_types[type].GetHeight(); /* FALL THROUGH */ case WID_CF_BALANCE_VALUE: case WID_CF_LOAN_VALUE: case WID_CF_TOTAL_VALUE: SetDParamMaxValue(0, CompanyFinancesWindow::max_money); size->width = max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width; break; case WID_CF_MAXLOAN_GAP: size->height = FONT_HEIGHT_NORMAL; break; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_CF_EXPS_CATEGORY: DrawCategories(r); break; case WID_CF_EXPS_PRICE1: case WID_CF_EXPS_PRICE2: case WID_CF_EXPS_PRICE3: { const Company *c = Company::Get((CompanyID)this->window_number); int age = min(_cur_year - c->inaugurated_year, 2); int wid_offset = widget - WID_CF_EXPS_PRICE1; if (wid_offset <= age) { DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses + (age - wid_offset)); } break; } case WID_CF_BALANCE_VALUE: { const Company *c = Company::Get((CompanyID)this->window_number); SetDParam(0, c->money); DrawString(r.left, r.right, r.top, STR_FINANCES_TOTAL_CURRENCY, TC_FROMSTRING, SA_RIGHT); break; } case WID_CF_LOAN_VALUE: { const Company *c = Company::Get((CompanyID)this->window_number); SetDParam(0, c->current_loan); DrawString(r.left, r.right, r.top, STR_FINANCES_TOTAL_CURRENCY, TC_FROMSTRING, SA_RIGHT); break; } case WID_CF_TOTAL_VALUE: { const Company *c = Company::Get((CompanyID)this->window_number); SetDParam(0, c->money - c->current_loan); DrawString(r.left, r.right, r.top, STR_FINANCES_TOTAL_CURRENCY, TC_FROMSTRING, SA_RIGHT); break; } case WID_CF_LOAN_LINE: GfxFillRect(r.left, r.top, r.right, r.top, PC_BLACK); break; } } /** * Setup the widgets in the nested tree, such that the finances window is displayed properly. * @note After setup, the window must be (re-)initialized. */ void SetupWidgets() { int plane = this->small ? SZSP_NONE : 0; this->GetWidget(WID_CF_SEL_PANEL)->SetDisplayedPlane(plane); this->GetWidget(WID_CF_SEL_MAXLOAN)->SetDisplayedPlane(plane); CompanyID company = (CompanyID)this->window_number; plane = (company != _local_company) ? SZSP_NONE : 0; this->GetWidget(WID_CF_SEL_BUTTONS)->SetDisplayedPlane(plane); } virtual void OnPaint() { if (!this->IsShaded()) { if (!this->small) { /* Check that the expenses panel height matches the height needed for the layout. */ int type = _settings_client.gui.expenses_layout; if (_expenses_list_types[type].GetHeight() != this->GetWidget(WID_CF_EXPS_CATEGORY)->current_y) { this->SetupWidgets(); this->ReInit(); return; } } /* Check that the loan buttons are shown only when the user owns the company. */ CompanyID company = (CompanyID)this->window_number; int req_plane = (company != _local_company) ? SZSP_NONE : 0; if (req_plane != this->GetWidget(WID_CF_SEL_BUTTONS)->shown_plane) { this->SetupWidgets(); this->ReInit(); return; } const Company *c = Company::Get(company); this->SetWidgetDisabledState(WID_CF_INCREASE_LOAN, c->current_loan == _economy.max_loan); // Borrow button only shows when there is any more money to loan. this->SetWidgetDisabledState(WID_CF_REPAY_LOAN, company != _local_company || c->current_loan == 0); // Repay button only shows when there is any more money to repay. } this->DrawWidgets(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_CF_TOGGLE_SIZE: // toggle size this->small = !this->small; this->SetupWidgets(); if (this->IsShaded()) { /* Finances window is not resizable, so size hints given during unshading have no effect * on the changed appearance of the window. */ this->SetShaded(false); } else { this->ReInit(); } break; case WID_CF_INCREASE_LOAN: // increase loan DoCommandP(0, 0, _ctrl_pressed, CMD_INCREASE_LOAN | CMD_MSG(STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY)); break; case WID_CF_REPAY_LOAN: // repay loan DoCommandP(0, 0, _ctrl_pressed, CMD_DECREASE_LOAN | CMD_MSG(STR_ERROR_CAN_T_REPAY_LOAN)); break; case WID_CF_INFRASTRUCTURE: // show infrastructure details ShowCompanyInfrastructure((CompanyID)this->window_number); break; } } virtual void OnHundredthTick() { const Company *c = Company::Get((CompanyID)this->window_number); if (c->money > CompanyFinancesWindow::max_money) { CompanyFinancesWindow::max_money = max(c->money * 2, CompanyFinancesWindow::max_money * 4); this->SetupWidgets(); this->ReInit(); } } }; /** First conservative estimate of the maximum amount of money */ Money CompanyFinancesWindow::max_money = INT32_MAX; static const WindowDesc _company_finances_desc( WDP_AUTO, 0, 0, WC_FINANCES, WC_NONE, 0, _nested_company_finances_widgets, lengthof(_nested_company_finances_widgets) ); /** * Open the finances window of a company. * @param company Company to show finances of. * @pre is company a valid company. */ void ShowCompanyFinances(CompanyID company) { if (!Company::IsValidID(company)) return; if (BringWindowToFrontById(WC_FINANCES, company)) return; new CompanyFinancesWindow(&_company_finances_desc, company); } /* List of colours for the livery window */ static const StringID _colour_dropdown[] = { STR_COLOUR_DARK_BLUE, STR_COLOUR_PALE_GREEN, STR_COLOUR_PINK, STR_COLOUR_YELLOW, STR_COLOUR_RED, STR_COLOUR_LIGHT_BLUE, STR_COLOUR_GREEN, STR_COLOUR_DARK_GREEN, STR_COLOUR_BLUE, STR_COLOUR_CREAM, STR_COLOUR_MAUVE, STR_COLOUR_PURPLE, STR_COLOUR_ORANGE, STR_COLOUR_BROWN, STR_COLOUR_GREY, STR_COLOUR_WHITE, }; /* Association of liveries to livery classes */ static const LiveryClass _livery_class[LS_END] = { LC_OTHER, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_ROAD, LC_ROAD, LC_SHIP, LC_SHIP, LC_AIRCRAFT, LC_AIRCRAFT, LC_AIRCRAFT, LC_ROAD, LC_ROAD, }; class DropDownListColourItem : public DropDownListItem { public: DropDownListColourItem(int result, bool masked) : DropDownListItem(result, masked) {} virtual ~DropDownListColourItem() {} StringID String() const { return _colour_dropdown[this->result]; } uint Height(uint width) const { return max(FONT_HEIGHT_NORMAL, 14); } bool Selectable() const { return true; } void Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const { bool rtl = _current_text_dir == TD_RTL; DrawSprite(SPR_VEH_BUS_SIDE_VIEW, PALETTE_RECOLOUR_START + this->result, rtl ? right - 16 : left + 16, top + 7); DrawString(rtl ? left + 2 : left + 32, rtl ? right - 32 : right - 2, top + max(0, 13 - FONT_HEIGHT_NORMAL), this->String(), sel ? TC_WHITE : TC_BLACK); } }; /** Company livery colour scheme window. */ struct SelectCompanyLiveryWindow : public Window { private: uint32 sel; LiveryClass livery_class; Dimension square; Dimension box; uint line_height; void ShowColourDropDownMenu(uint32 widget) { uint32 used_colours = 0; const Livery *livery; LiveryScheme scheme; /* Disallow other company colours for the primary colour */ if (HasBit(this->sel, LS_DEFAULT) && widget == WID_SCL_PRI_COL_DROPDOWN) { const Company *c; FOR_ALL_COMPANIES(c) { if (c->index != _local_company) SetBit(used_colours, c->colour); } } /* Get the first selected livery to use as the default dropdown item */ for (scheme = LS_BEGIN; scheme < LS_END; scheme++) { if (HasBit(this->sel, scheme)) break; } if (scheme == LS_END) scheme = LS_DEFAULT; livery = &Company::Get((CompanyID)this->window_number)->livery[scheme]; DropDownList *list = new DropDownList(); for (uint i = 0; i < lengthof(_colour_dropdown); i++) { list->push_back(new DropDownListColourItem(i, HasBit(used_colours, i))); } ShowDropDownList(this, list, widget == WID_SCL_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget); } public: SelectCompanyLiveryWindow(const WindowDesc *desc, CompanyID company) : Window() { this->livery_class = LC_OTHER; this->sel = 1; this->square = GetSpriteSize(SPR_SQUARE); this->box = maxdim(GetSpriteSize(SPR_BOX_CHECKED), GetSpriteSize(SPR_BOX_EMPTY)); this->line_height = max(max(this->square.height, this->box.height), (uint)FONT_HEIGHT_NORMAL) + 4; this->InitNested(desc, company); this->owner = company; this->LowerWidget(WID_SCL_CLASS_GENERAL); this->InvalidateData(1); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_SCL_SPACER_DROPDOWN: { /* The matrix widget below needs enough room to print all the schemes. */ Dimension d = {0, 0}; for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) { d = maxdim(d, GetStringBoundingBox(STR_LIVERY_DEFAULT + scheme)); } size->width = max(size->width, 5 + this->box.width + d.width + WD_FRAMERECT_RIGHT); break; } case WID_SCL_MATRIX: { uint livery_height = 0; for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) { if (_livery_class[scheme] == this->livery_class && HasBit(_loaded_newgrf_features.used_liveries, scheme)) { livery_height++; } } size->height = livery_height * this->line_height; this->GetWidget(WID_SCL_MATRIX)->widget_data = (livery_height << MAT_ROW_START) | (1 << MAT_COL_START); break; } case WID_SCL_SEC_COL_DROPDOWN: if (!_loaded_newgrf_features.has_2CC) { size->width = 0; break; } /* FALL THROUGH */ case WID_SCL_PRI_COL_DROPDOWN: { int padding = this->square.width + NWidgetScrollbar::GetVerticalDimension().width + 10; for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) { size->width = max(size->width, GetStringBoundingBox(*id).width + padding); } break; } } } virtual void OnPaint() { /* Disable dropdown controls if no scheme is selected */ this->SetWidgetDisabledState(WID_SCL_PRI_COL_DROPDOWN, this->sel == 0); this->SetWidgetDisabledState(WID_SCL_SEC_COL_DROPDOWN, this->sel == 0); this->DrawWidgets(); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_SCL_PRI_COL_DROPDOWN: case WID_SCL_SEC_COL_DROPDOWN: { const Company *c = Company::Get((CompanyID)this->window_number); LiveryScheme scheme = LS_DEFAULT; if (this->sel != 0) { for (scheme = LS_BEGIN; scheme < LS_END; scheme++) { if (HasBit(this->sel, scheme)) break; } if (scheme == LS_END) scheme = LS_DEFAULT; } SetDParam(0, STR_COLOUR_DARK_BLUE + ((widget == WID_SCL_PRI_COL_DROPDOWN) ? c->livery[scheme].colour1 : c->livery[scheme].colour2)); break; } } } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_SCL_MATRIX) return; bool rtl = _current_text_dir == TD_RTL; /* Horizontal coordinates of scheme name column. */ const NWidgetBase *nwi = this->GetWidget(WID_SCL_SPACER_DROPDOWN); int sch_left = nwi->pos_x; int sch_right = sch_left + nwi->current_x - 1; /* Horizontal coordinates of first dropdown. */ nwi = this->GetWidget(WID_SCL_PRI_COL_DROPDOWN); int pri_left = nwi->pos_x; int pri_right = pri_left + nwi->current_x - 1; /* Horizontal coordinates of second dropdown. */ nwi = this->GetWidget(WID_SCL_SEC_COL_DROPDOWN); int sec_left = nwi->pos_x; int sec_right = sec_left + nwi->current_x - 1; int text_left = (rtl ? (uint)WD_FRAMERECT_LEFT : (this->box.width + 5)); int text_right = (rtl ? (this->box.width + 5) : (uint)WD_FRAMERECT_RIGHT); int box_offs = (this->line_height - this->box.height) / 2; int square_offs = (this->line_height - this->square.height) / 2 + 1; int text_offs = (this->line_height - FONT_HEIGHT_NORMAL) / 2 + 1; int y = r.top; const Company *c = Company::Get((CompanyID)this->window_number); for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) { if (_livery_class[scheme] == this->livery_class && HasBit(_loaded_newgrf_features.used_liveries, scheme)) { bool sel = HasBit(this->sel, scheme) != 0; /* Optional check box + scheme name. */ if (scheme != LS_DEFAULT) { DrawSprite(c->livery[scheme].in_use ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, (rtl ? sch_right - (this->box.width + 5) + WD_FRAMERECT_RIGHT : sch_left) + WD_FRAMERECT_LEFT, y + box_offs); } DrawString(sch_left + text_left, sch_right - text_right, y + text_offs, STR_LIVERY_DEFAULT + scheme, sel ? TC_WHITE : TC_BLACK); /* Text below the first dropdown. */ DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOUR(c->livery[scheme].colour1), (rtl ? pri_right - (this->box.width + 5) + WD_FRAMERECT_RIGHT : pri_left) + WD_FRAMERECT_LEFT, y + square_offs); DrawString(pri_left + text_left, pri_right - text_right, y + text_offs, STR_COLOUR_DARK_BLUE + c->livery[scheme].colour1, sel ? TC_WHITE : TC_GOLD); /* Text below the second dropdown. */ if (sec_right > sec_left) { // Second dropdown has non-zero size. DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOUR(c->livery[scheme].colour2), (rtl ? sec_right - (this->box.width + 5) + WD_FRAMERECT_RIGHT : sec_left) + WD_FRAMERECT_LEFT, y + square_offs); DrawString(sec_left + text_left, sec_right - text_right, y + text_offs, STR_COLOUR_DARK_BLUE + c->livery[scheme].colour2, sel ? TC_WHITE : TC_GOLD); } y += this->line_height; } } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { /* Livery Class buttons */ case WID_SCL_CLASS_GENERAL: case WID_SCL_CLASS_RAIL: case WID_SCL_CLASS_ROAD: case WID_SCL_CLASS_SHIP: case WID_SCL_CLASS_AIRCRAFT: this->RaiseWidget(this->livery_class + WID_SCL_CLASS_GENERAL); this->livery_class = (LiveryClass)(widget - WID_SCL_CLASS_GENERAL); this->LowerWidget(this->livery_class + WID_SCL_CLASS_GENERAL); /* Select the first item in the list */ this->sel = 0; for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) { if (_livery_class[scheme] == this->livery_class && HasBit(_loaded_newgrf_features.used_liveries, scheme)) { this->sel = 1 << scheme; break; } } this->ReInit(); break; case WID_SCL_PRI_COL_DROPDOWN: // First colour dropdown ShowColourDropDownMenu(WID_SCL_PRI_COL_DROPDOWN); break; case WID_SCL_SEC_COL_DROPDOWN: // Second colour dropdown ShowColourDropDownMenu(WID_SCL_SEC_COL_DROPDOWN); break; case WID_SCL_MATRIX: { const NWidgetBase *wid = this->GetWidget(WID_SCL_MATRIX); LiveryScheme j = (LiveryScheme)((pt.y - wid->pos_y) / this->line_height); for (LiveryScheme scheme = LS_BEGIN; scheme <= j; scheme++) { if (_livery_class[scheme] != this->livery_class || !HasBit(_loaded_newgrf_features.used_liveries, scheme)) j++; if (scheme >= LS_END) return; } if (j >= LS_END) return; /* If clicking on the left edge, toggle using the livery */ if (_current_text_dir == TD_RTL ? pt.x - wid->pos_x > wid->current_x - (this->box.width + 5) : pt.x - wid->pos_x < (this->box.width + 5)) { DoCommandP(0, j | (2 << 8), !Company::Get((CompanyID)this->window_number)->livery[j].in_use, CMD_SET_COMPANY_COLOUR); } if (_ctrl_pressed) { ToggleBit(this->sel, j); } else { this->sel = 1 << j; } this->SetDirty(); break; } } } virtual void OnDropdownSelect(int widget, int index) { for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) { /* Changed colour for the selected scheme, or all visible schemes if CTRL is pressed. */ if (HasBit(this->sel, scheme) || (_ctrl_pressed && _livery_class[scheme] == this->livery_class && HasBit(_loaded_newgrf_features.used_liveries, scheme))) { DoCommandP(0, scheme | (widget == WID_SCL_PRI_COL_DROPDOWN ? 0 : 256), index, CMD_SET_COMPANY_COLOUR); } } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->SetWidgetsDisabledState(true, WID_SCL_CLASS_RAIL, WID_SCL_CLASS_ROAD, WID_SCL_CLASS_SHIP, WID_SCL_CLASS_AIRCRAFT, WIDGET_LIST_END); bool current_class_valid = this->livery_class == LC_OTHER; if (_settings_client.gui.liveries == LIT_ALL || (_settings_client.gui.liveries == LIT_COMPANY && this->window_number == _local_company)) { for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) { if (HasBit(_loaded_newgrf_features.used_liveries, scheme)) { if (_livery_class[scheme] == this->livery_class) current_class_valid = true; this->EnableWidget(WID_SCL_CLASS_GENERAL + _livery_class[scheme]); } else { ClrBit(this->sel, scheme); } } } if (!current_class_valid) { Point pt = {0, 0}; this->OnClick(pt, WID_SCL_CLASS_GENERAL, 1); } else if (data == 0) { this->ReInit(); } } }; static const NWidgetPart _nested_select_company_livery_widgets [] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SCL_CAPTION), SetDataTip(STR_LIVERY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCL_CLASS_GENERAL), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_COMPANY_GENERAL, STR_LIVERY_GENERAL_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCL_CLASS_RAIL), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRAINLIST, STR_LIVERY_TRAIN_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCL_CLASS_ROAD), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRUCKLIST, STR_LIVERY_ROAD_VEHICLE_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCL_CLASS_SHIP), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_SHIPLIST, STR_LIVERY_SHIP_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCL_CLASS_AIRCRAFT), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_AIRPLANESLIST, STR_LIVERY_AIRCRAFT_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(90, 22), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_SCL_SPACER_DROPDOWN), SetMinimalSize(150, 12), SetFill(1, 1), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_SCL_PRI_COL_DROPDOWN), SetMinimalSize(125, 12), SetFill(0, 1), SetDataTip(STR_BLACK_STRING, STR_LIVERY_PRIMARY_TOOLTIP), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_SCL_SEC_COL_DROPDOWN), SetMinimalSize(125, 12), SetFill(0, 1), SetDataTip(STR_BLACK_STRING, STR_LIVERY_SECONDARY_TOOLTIP), EndContainer(), NWidget(WWT_MATRIX, COLOUR_GREY, WID_SCL_MATRIX), SetMinimalSize(275, 15), SetFill(1, 0), SetDataTip((1 << MAT_ROW_START) | (1 << MAT_COL_START), STR_LIVERY_PANEL_TOOLTIP), }; static const WindowDesc _select_company_livery_desc( WDP_AUTO, 0, 0, WC_COMPANY_COLOUR, WC_NONE, 0, _nested_select_company_livery_widgets, lengthof(_nested_select_company_livery_widgets) ); /** * Draws the face of a company manager's face. * @param cmf the company manager's face * @param colour the (background) colour of the gradient * @param x x-position to draw the face * @param y y-position to draw the face */ void DrawCompanyManagerFace(CompanyManagerFace cmf, int colour, int x, int y) { GenderEthnicity ge = (GenderEthnicity)GetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN, GE_WM); bool has_moustache = !HasBit(ge, GENDER_FEMALE) && GetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE, ge) != 0; bool has_tie_earring = !HasBit(ge, GENDER_FEMALE) || GetCompanyManagerFaceBits(cmf, CMFV_HAS_TIE_EARRING, ge) != 0; bool has_glasses = GetCompanyManagerFaceBits(cmf, CMFV_HAS_GLASSES, ge) != 0; PaletteID pal; /* Modify eye colour palette only if 2 or more valid values exist */ if (_cmf_info[CMFV_EYE_COLOUR].valid_values[ge] < 2) { pal = PAL_NONE; } else { switch (GetCompanyManagerFaceBits(cmf, CMFV_EYE_COLOUR, ge)) { default: NOT_REACHED(); case 0: pal = PALETTE_TO_BROWN; break; case 1: pal = PALETTE_TO_BLUE; break; case 2: pal = PALETTE_TO_GREEN; break; } } /* Draw the gradient (background) */ DrawSprite(SPR_GRADIENT, GENERAL_SPRITE_COLOUR(colour), x, y); for (CompanyManagerFaceVariable cmfv = CMFV_CHEEKS; cmfv < CMFV_END; cmfv++) { switch (cmfv) { case CMFV_MOUSTACHE: if (!has_moustache) continue; break; case CMFV_LIPS: // FALL THROUGH case CMFV_NOSE: if (has_moustache) continue; break; case CMFV_TIE_EARRING: if (!has_tie_earring) continue; break; case CMFV_GLASSES: if (!has_glasses) continue; break; default: break; } DrawSprite(GetCompanyManagerFaceSprite(cmf, cmfv, ge), (cmfv == CMFV_EYEBROWS) ? pal : PAL_NONE, x, y); } } /** Nested widget description for the company manager face selection dialog */ static const NWidgetPart _nested_select_company_manager_face_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SCMF_CAPTION), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TOOLTIP), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SCMF_SELECT_FACE), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL), SetPIP(2, 2, 2), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_SCMF_FACE), SetMinimalSize(92, 119), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_RANDOM_NEW_FACE), SetFill(1, 0), SetDataTip(STR_FACE_NEW_FACE_BUTTON, STR_FACE_NEW_FACE_TOOLTIP), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SCMF_SEL_LOADSAVE), // Load/number/save buttons under the portrait in the advanced view. NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetMinimalSize(0, 5), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LOAD), SetFill(1, 0), SetDataTip(STR_FACE_LOAD, STR_FACE_LOAD_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_FACECODE), SetFill(1, 0), SetDataTip(STR_FACE_FACECODE, STR_FACE_FACECODE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_SAVE), SetFill(1, 0), SetDataTip(STR_FACE_SAVE, STR_FACE_SAVE_TOOLTIP), NWidget(NWID_SPACER), SetMinimalSize(0, 5), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL_BUTTON), SetFill(1, 0), SetDataTip(STR_FACE_ADVANCED, STR_FACE_ADVANCED_TOOLTIP), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SCMF_SEL_MALEFEMALE), // Simple male/female face setting. NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_MALE), SetFill(1, 0), SetDataTip(STR_FACE_MALE_BUTTON, STR_FACE_MALE_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_FEMALE), SetFill(1, 0), SetDataTip(STR_FACE_FEMALE_BUTTON, STR_FACE_FEMALE_TOOLTIP), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SCMF_SEL_PARTS), // Advanced face parts setting. NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_MALE2), SetFill(1, 0), SetDataTip(STR_FACE_MALE_BUTTON, STR_FACE_MALE_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_FEMALE2), SetFill(1, 0), SetDataTip(STR_FACE_FEMALE_BUTTON, STR_FACE_FEMALE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_ETHNICITY_EUR), SetFill(1, 0), SetDataTip(STR_FACE_EUROPEAN, STR_FACE_SELECT_EUROPEAN), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_ETHNICITY_AFR), SetFill(1, 0), SetDataTip(STR_FACE_AFRICAN, STR_FACE_SELECT_AFRICAN), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 4), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_MOUSTACHE_EARRING), SetDataTip(STR_EMPTY, STR_FACE_MOUSTACHE_EARRING_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_HAS_GLASSES_TEXT), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_GLASSES), SetDataTip(STR_EMPTY, STR_FACE_GLASSES_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), SetFill(1, 0), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_HAIR_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_L), SetDataTip(AWV_DECREASE, STR_FACE_HAIR_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetDataTip(STR_EMPTY, STR_FACE_HAIR_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_R), SetDataTip(AWV_INCREASE, STR_FACE_HAIR_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_EYEBROWS_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_L), SetDataTip(AWV_DECREASE, STR_FACE_EYEBROWS_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetDataTip(STR_EMPTY, STR_FACE_EYEBROWS_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_R), SetDataTip(AWV_INCREASE, STR_FACE_EYEBROWS_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_EYECOLOUR_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_L), SetDataTip(AWV_DECREASE, STR_FACE_EYECOLOUR_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetDataTip(STR_EMPTY, STR_FACE_EYECOLOUR_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_R), SetDataTip(AWV_INCREASE, STR_FACE_EYECOLOUR_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_GLASSES_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_L), SetDataTip(AWV_DECREASE, STR_FACE_GLASSES_TOOLTIP_2), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetDataTip(STR_EMPTY, STR_FACE_GLASSES_TOOLTIP_2), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_R), SetDataTip(AWV_INCREASE, STR_FACE_GLASSES_TOOLTIP_2), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_NOSE_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_L), SetDataTip(AWV_DECREASE, STR_FACE_NOSE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetDataTip(STR_EMPTY, STR_FACE_NOSE_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_R), SetDataTip(AWV_INCREASE, STR_FACE_NOSE_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_LIPS_MOUSTACHE_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_L), SetDataTip(AWV_DECREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetDataTip(STR_EMPTY, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_R), SetDataTip(AWV_INCREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_CHIN_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_L), SetDataTip(AWV_DECREASE, STR_FACE_CHIN_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetDataTip(STR_EMPTY, STR_FACE_CHIN_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_R), SetDataTip(AWV_INCREASE, STR_FACE_CHIN_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_JACKET_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_L), SetDataTip(AWV_DECREASE, STR_FACE_JACKET_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetDataTip(STR_EMPTY, STR_FACE_JACKET_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_R), SetDataTip(AWV_INCREASE, STR_FACE_JACKET_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_COLLAR_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_L), SetDataTip(AWV_DECREASE, STR_FACE_COLLAR_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetDataTip(STR_EMPTY, STR_FACE_COLLAR_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_R), SetDataTip(AWV_INCREASE, STR_FACE_COLLAR_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_TIE_EARRING_TEXT), SetFill(1, 0), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_L), SetDataTip(AWV_DECREASE, STR_FACE_TIE_EARRING_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetDataTip(STR_EMPTY, STR_FACE_TIE_EARRING_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_R), SetDataTip(AWV_INCREASE, STR_FACE_TIE_EARRING_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CANCEL), SetFill(1, 0), SetDataTip(STR_BUTTON_CANCEL, STR_FACE_CANCEL_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_ACCEPT), SetFill(1, 0), SetDataTip(STR_BUTTON_OK, STR_FACE_OK_TOOLTIP), EndContainer(), }; /** Management class for customizing the face of the company manager. */ class SelectCompanyManagerFaceWindow : public Window { CompanyManagerFace face; ///< company manager face bits bool advanced; ///< advanced company manager face selection window GenderEthnicity ge; ///< Gender and ethnicity. bool is_female; ///< Female face. bool is_moust_male; ///< Male face with a moustache. Dimension yesno_dim; ///< Dimension of a yes/no button of a part in the advanced face window. Dimension number_dim; ///< Dimension of a number widget of a part in the advanced face window. static const StringID PART_TEXTS_IS_FEMALE[]; ///< Strings depending on #is_female, used to describe parts (2 entries for a part). static const StringID PART_TEXTS[]; ///< Fixed strings to describe parts of the face. /** * Draw dynamic a label to the left of the button and a value in the button * * @param widget_index index of this widget in the window * @param val the value which will be draw * @param is_bool_widget is it a bool button */ void DrawFaceStringLabel(byte widget_index, uint8 val, bool is_bool_widget) const { StringID str; const NWidgetCore *nwi_widget = this->GetWidget(widget_index); if (!nwi_widget->IsDisabled()) { if (is_bool_widget) { /* if it a bool button write yes or no */ str = (val != 0) ? STR_FACE_YES : STR_FACE_NO; } else { /* else write the value + 1 */ SetDParam(0, val + 1); str = STR_JUST_INT; } /* Draw the value/bool in white (0xC). If the button clicked adds 1px to x and y text coordinates (IsWindowWidgetLowered()). */ DrawString(nwi_widget->pos_x + nwi_widget->IsLowered(), nwi_widget->pos_x + nwi_widget->current_x - 1 - nwi_widget->IsLowered(), nwi_widget->pos_y + 1 + nwi_widget->IsLowered(), str, TC_WHITE, SA_HOR_CENTER); } } void UpdateData() { this->ge = (GenderEthnicity)GB(this->face, _cmf_info[CMFV_GEN_ETHN].offset, _cmf_info[CMFV_GEN_ETHN].length); // get the gender and ethnicity this->is_female = HasBit(this->ge, GENDER_FEMALE); // get the gender: 0 == male and 1 == female this->is_moust_male = !is_female && GetCompanyManagerFaceBits(this->face, CMFV_HAS_MOUSTACHE, this->ge) != 0; // is a male face with moustache } public: SelectCompanyManagerFaceWindow(const WindowDesc *desc, Window *parent) : Window() { this->advanced = false; this->CreateNestedTree(desc); this->SelectDisplayPlanes(this->advanced); this->FinishInitNested(desc, parent->window_number); this->parent = parent; this->owner = (Owner)this->window_number; this->face = Company::Get((CompanyID)this->window_number)->face; this->UpdateData(); } /** * Select planes to display to the user with the #NWID_SELECTION widgets #WID_SCMF_SEL_LOADSAVE, #WID_SCMF_SEL_MALEFEMALE, and #WID_SCMF_SEL_PARTS. * @param advanced Display advanced face management window. */ void SelectDisplayPlanes(bool advanced) { this->GetWidget(WID_SCMF_SEL_LOADSAVE)->SetDisplayedPlane(advanced ? 0 : SZSP_NONE); this->GetWidget(WID_SCMF_SEL_PARTS)->SetDisplayedPlane(advanced ? 0 : SZSP_NONE); this->GetWidget(WID_SCMF_SEL_MALEFEMALE)->SetDisplayedPlane(advanced ? SZSP_NONE : 0); this->GetWidget(WID_SCMF_RANDOM_NEW_FACE)->widget_data = advanced ? STR_MAPGEN_RANDOM : STR_FACE_NEW_FACE_BUTTON; NWidgetCore *wi = this->GetWidget(WID_SCMF_TOGGLE_LARGE_SMALL_BUTTON); if (advanced) { wi->SetDataTip(STR_FACE_SIMPLE, STR_FACE_SIMPLE_TOOLTIP); } else { wi->SetDataTip(STR_FACE_ADVANCED, STR_FACE_ADVANCED_TOOLTIP); } } virtual void OnInit() { /* Size of the boolean yes/no button. */ Dimension yesno_dim = maxdim(GetStringBoundingBox(STR_FACE_YES), GetStringBoundingBox(STR_FACE_NO)); yesno_dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; yesno_dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; /* Size of the number button + arrows. */ Dimension number_dim = {0, 0}; for (int val = 1; val <= 12; val++) { SetDParam(0, val); number_dim = maxdim(number_dim, GetStringBoundingBox(STR_JUST_INT)); } uint arrows_width = GetSpriteSize(SPR_ARROW_LEFT).width + GetSpriteSize(SPR_ARROW_RIGHT).width + 2 * (WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT); number_dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT + arrows_width; number_dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; /* Compute width of both buttons. */ yesno_dim.width = max(yesno_dim.width, number_dim.width); number_dim.width = yesno_dim.width - arrows_width; this->yesno_dim = yesno_dim; this->number_dim = number_dim; } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT: case WID_SCMF_TIE_EARRING_TEXT: { int offset = (widget - WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT) * 2; *size = maxdim(GetStringBoundingBox(PART_TEXTS_IS_FEMALE[offset]), GetStringBoundingBox(PART_TEXTS_IS_FEMALE[offset + 1])); size->width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; } case WID_SCMF_LIPS_MOUSTACHE_TEXT: *size = maxdim(GetStringBoundingBox(STR_FACE_LIPS), GetStringBoundingBox(STR_FACE_MOUSTACHE)); size->width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; case WID_SCMF_HAS_GLASSES_TEXT: case WID_SCMF_HAIR_TEXT: case WID_SCMF_EYEBROWS_TEXT: case WID_SCMF_EYECOLOUR_TEXT: case WID_SCMF_GLASSES_TEXT: case WID_SCMF_NOSE_TEXT: case WID_SCMF_CHIN_TEXT: case WID_SCMF_JACKET_TEXT: case WID_SCMF_COLLAR_TEXT: *size = GetStringBoundingBox(PART_TEXTS[widget - WID_SCMF_HAS_GLASSES_TEXT]); size->width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; case WID_SCMF_HAS_MOUSTACHE_EARRING: case WID_SCMF_HAS_GLASSES: *size = this->yesno_dim; break; case WID_SCMF_EYECOLOUR: case WID_SCMF_CHIN: case WID_SCMF_EYEBROWS: case WID_SCMF_LIPS_MOUSTACHE: case WID_SCMF_NOSE: case WID_SCMF_HAIR: case WID_SCMF_JACKET: case WID_SCMF_COLLAR: case WID_SCMF_TIE_EARRING: case WID_SCMF_GLASSES: *size = this->number_dim; break; } } virtual void OnPaint() { /* lower the non-selected gender button */ this->SetWidgetsLoweredState(!this->is_female, WID_SCMF_MALE, WID_SCMF_MALE2, WIDGET_LIST_END); this->SetWidgetsLoweredState( this->is_female, WID_SCMF_FEMALE, WID_SCMF_FEMALE2, WIDGET_LIST_END); /* advanced company manager face selection window */ /* lower the non-selected ethnicity button */ this->SetWidgetLoweredState(WID_SCMF_ETHNICITY_EUR, !HasBit(this->ge, ETHNICITY_BLACK)); this->SetWidgetLoweredState(WID_SCMF_ETHNICITY_AFR, HasBit(this->ge, ETHNICITY_BLACK)); /* Disable dynamically the widgets which CompanyManagerFaceVariable has less than 2 options * (or in other words you haven't any choice). * If the widgets depend on a HAS-variable and this is false the widgets will be disabled, too. */ /* Eye colour buttons */ this->SetWidgetsDisabledState(_cmf_info[CMFV_EYE_COLOUR].valid_values[this->ge] < 2, WID_SCMF_EYECOLOUR, WID_SCMF_EYECOLOUR_L, WID_SCMF_EYECOLOUR_R, WIDGET_LIST_END); /* Chin buttons */ this->SetWidgetsDisabledState(_cmf_info[CMFV_CHIN].valid_values[this->ge] < 2, WID_SCMF_CHIN, WID_SCMF_CHIN_L, WID_SCMF_CHIN_R, WIDGET_LIST_END); /* Eyebrows buttons */ this->SetWidgetsDisabledState(_cmf_info[CMFV_EYEBROWS].valid_values[this->ge] < 2, WID_SCMF_EYEBROWS, WID_SCMF_EYEBROWS_L, WID_SCMF_EYEBROWS_R, WIDGET_LIST_END); /* Lips or (if it a male face with a moustache) moustache buttons */ this->SetWidgetsDisabledState(_cmf_info[this->is_moust_male ? CMFV_MOUSTACHE : CMFV_LIPS].valid_values[this->ge] < 2, WID_SCMF_LIPS_MOUSTACHE, WID_SCMF_LIPS_MOUSTACHE_L, WID_SCMF_LIPS_MOUSTACHE_R, WIDGET_LIST_END); /* Nose buttons | male faces with moustache haven't any nose options */ this->SetWidgetsDisabledState(_cmf_info[CMFV_NOSE].valid_values[this->ge] < 2 || this->is_moust_male, WID_SCMF_NOSE, WID_SCMF_NOSE_L, WID_SCMF_NOSE_R, WIDGET_LIST_END); /* Hair buttons */ this->SetWidgetsDisabledState(_cmf_info[CMFV_HAIR].valid_values[this->ge] < 2, WID_SCMF_HAIR, WID_SCMF_HAIR_L, WID_SCMF_HAIR_R, WIDGET_LIST_END); /* Jacket buttons */ this->SetWidgetsDisabledState(_cmf_info[CMFV_JACKET].valid_values[this->ge] < 2, WID_SCMF_JACKET, WID_SCMF_JACKET_L, WID_SCMF_JACKET_R, WIDGET_LIST_END); /* Collar buttons */ this->SetWidgetsDisabledState(_cmf_info[CMFV_COLLAR].valid_values[this->ge] < 2, WID_SCMF_COLLAR, WID_SCMF_COLLAR_L, WID_SCMF_COLLAR_R, WIDGET_LIST_END); /* Tie/earring buttons | female faces without earring haven't any earring options */ this->SetWidgetsDisabledState(_cmf_info[CMFV_TIE_EARRING].valid_values[this->ge] < 2 || (this->is_female && GetCompanyManagerFaceBits(this->face, CMFV_HAS_TIE_EARRING, this->ge) == 0), WID_SCMF_TIE_EARRING, WID_SCMF_TIE_EARRING_L, WID_SCMF_TIE_EARRING_R, WIDGET_LIST_END); /* Glasses buttons | faces without glasses haven't any glasses options */ this->SetWidgetsDisabledState(_cmf_info[CMFV_GLASSES].valid_values[this->ge] < 2 || GetCompanyManagerFaceBits(this->face, CMFV_HAS_GLASSES, this->ge) == 0, WID_SCMF_GLASSES, WID_SCMF_GLASSES_L, WID_SCMF_GLASSES_R, WIDGET_LIST_END); this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT: case WID_SCMF_TIE_EARRING_TEXT: { StringID str = PART_TEXTS_IS_FEMALE[(widget - WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT) * 2 + this->is_female]; DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str, TC_GOLD, SA_RIGHT); break; } case WID_SCMF_LIPS_MOUSTACHE_TEXT: DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, (this->is_moust_male) ? STR_FACE_MOUSTACHE : STR_FACE_LIPS, TC_GOLD, SA_RIGHT); break; case WID_SCMF_HAS_GLASSES_TEXT: case WID_SCMF_HAIR_TEXT: case WID_SCMF_EYEBROWS_TEXT: case WID_SCMF_EYECOLOUR_TEXT: case WID_SCMF_GLASSES_TEXT: case WID_SCMF_NOSE_TEXT: case WID_SCMF_CHIN_TEXT: case WID_SCMF_JACKET_TEXT: case WID_SCMF_COLLAR_TEXT: DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, PART_TEXTS[widget - WID_SCMF_HAS_GLASSES_TEXT], TC_GOLD, SA_RIGHT); break; case WID_SCMF_HAS_MOUSTACHE_EARRING: if (this->is_female) { // Only for female faces this->DrawFaceStringLabel(WID_SCMF_HAS_MOUSTACHE_EARRING, GetCompanyManagerFaceBits(this->face, CMFV_HAS_TIE_EARRING, this->ge), true); } else { // Only for male faces this->DrawFaceStringLabel(WID_SCMF_HAS_MOUSTACHE_EARRING, GetCompanyManagerFaceBits(this->face, CMFV_HAS_MOUSTACHE, this->ge), true); } break; case WID_SCMF_TIE_EARRING: this->DrawFaceStringLabel(WID_SCMF_TIE_EARRING, GetCompanyManagerFaceBits(this->face, CMFV_TIE_EARRING, this->ge), false); break; case WID_SCMF_LIPS_MOUSTACHE: if (this->is_moust_male) { // Only for male faces with moustache this->DrawFaceStringLabel(WID_SCMF_LIPS_MOUSTACHE, GetCompanyManagerFaceBits(this->face, CMFV_MOUSTACHE, this->ge), false); } else { // Only for female faces or male faces without moustache this->DrawFaceStringLabel(WID_SCMF_LIPS_MOUSTACHE, GetCompanyManagerFaceBits(this->face, CMFV_LIPS, this->ge), false); } break; case WID_SCMF_HAS_GLASSES: this->DrawFaceStringLabel(WID_SCMF_HAS_GLASSES, GetCompanyManagerFaceBits(this->face, CMFV_HAS_GLASSES, this->ge), true ); break; case WID_SCMF_HAIR: this->DrawFaceStringLabel(WID_SCMF_HAIR, GetCompanyManagerFaceBits(this->face, CMFV_HAIR, this->ge), false); break; case WID_SCMF_EYEBROWS: this->DrawFaceStringLabel(WID_SCMF_EYEBROWS, GetCompanyManagerFaceBits(this->face, CMFV_EYEBROWS, this->ge), false); break; case WID_SCMF_EYECOLOUR: this->DrawFaceStringLabel(WID_SCMF_EYECOLOUR, GetCompanyManagerFaceBits(this->face, CMFV_EYE_COLOUR, this->ge), false); break; case WID_SCMF_GLASSES: this->DrawFaceStringLabel(WID_SCMF_GLASSES, GetCompanyManagerFaceBits(this->face, CMFV_GLASSES, this->ge), false); break; case WID_SCMF_NOSE: this->DrawFaceStringLabel(WID_SCMF_NOSE, GetCompanyManagerFaceBits(this->face, CMFV_NOSE, this->ge), false); break; case WID_SCMF_CHIN: this->DrawFaceStringLabel(WID_SCMF_CHIN, GetCompanyManagerFaceBits(this->face, CMFV_CHIN, this->ge), false); break; case WID_SCMF_JACKET: this->DrawFaceStringLabel(WID_SCMF_JACKET, GetCompanyManagerFaceBits(this->face, CMFV_JACKET, this->ge), false); break; case WID_SCMF_COLLAR: this->DrawFaceStringLabel(WID_SCMF_COLLAR, GetCompanyManagerFaceBits(this->face, CMFV_COLLAR, this->ge), false); break; case WID_SCMF_FACE: DrawCompanyManagerFace(this->face, Company::Get((CompanyID)this->window_number)->colour, r.left, r.top); break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { /* Toggle size, advanced/simple face selection */ case WID_SCMF_TOGGLE_LARGE_SMALL: case WID_SCMF_TOGGLE_LARGE_SMALL_BUTTON: this->advanced = !this->advanced; this->SelectDisplayPlanes(this->advanced); this->ReInit(); break; /* OK button */ case WID_SCMF_ACCEPT: DoCommandP(0, 0, this->face, CMD_SET_COMPANY_MANAGER_FACE); /* FALL THROUGH */ /* Cancel button */ case WID_SCMF_CANCEL: delete this; break; /* Load button */ case WID_SCMF_LOAD: this->face = _company_manager_face; ScaleAllCompanyManagerFaceBits(this->face); ShowErrorMessage(STR_FACE_LOAD_DONE, INVALID_STRING_ID, WL_INFO); this->UpdateData(); this->SetDirty(); break; /* 'Company manager face number' button, view and/or set company manager face number */ case WID_SCMF_FACECODE: SetDParam(0, this->face); ShowQueryString(STR_JUST_INT, STR_FACE_FACECODE_CAPTION, 10 + 1, this, CS_NUMERAL, QSF_NONE); break; /* Save button */ case WID_SCMF_SAVE: _company_manager_face = this->face; ShowErrorMessage(STR_FACE_SAVE_DONE, INVALID_STRING_ID, WL_INFO); break; /* Toggle gender (male/female) button */ case WID_SCMF_MALE: case WID_SCMF_FEMALE: case WID_SCMF_MALE2: case WID_SCMF_FEMALE2: SetCompanyManagerFaceBits(this->face, CMFV_GENDER, this->ge, (widget == WID_SCMF_FEMALE || widget == WID_SCMF_FEMALE2)); ScaleAllCompanyManagerFaceBits(this->face); this->UpdateData(); this->SetDirty(); break; /* Randomize face button */ case WID_SCMF_RANDOM_NEW_FACE: RandomCompanyManagerFaceBits(this->face, this->ge, this->advanced); this->UpdateData(); this->SetDirty(); break; /* Toggle ethnicity (european/african) button */ case WID_SCMF_ETHNICITY_EUR: case WID_SCMF_ETHNICITY_AFR: SetCompanyManagerFaceBits(this->face, CMFV_ETHNICITY, this->ge, widget - WID_SCMF_ETHNICITY_EUR); ScaleAllCompanyManagerFaceBits(this->face); this->UpdateData(); this->SetDirty(); break; default: /* Here all buttons from WID_SCMF_HAS_MOUSTACHE_EARRING to WID_SCMF_GLASSES_R are handled. * First it checks which CompanyManagerFaceVariable is being changed, and then either * a: invert the value for boolean variables, or * b: it checks inside of IncreaseCompanyManagerFaceBits() if a left (_L) butten is pressed and then decrease else increase the variable */ if (widget >= WID_SCMF_HAS_MOUSTACHE_EARRING && widget <= WID_SCMF_GLASSES_R) { CompanyManagerFaceVariable cmfv; // which CompanyManagerFaceVariable shall be edited if (widget < WID_SCMF_EYECOLOUR_L) { // Bool buttons switch (widget - WID_SCMF_HAS_MOUSTACHE_EARRING) { default: NOT_REACHED(); case 0: cmfv = this->is_female ? CMFV_HAS_TIE_EARRING : CMFV_HAS_MOUSTACHE; break; // Has earring/moustache button case 1: cmfv = CMFV_HAS_GLASSES; break; // Has glasses button } SetCompanyManagerFaceBits(this->face, cmfv, this->ge, !GetCompanyManagerFaceBits(this->face, cmfv, this->ge)); ScaleAllCompanyManagerFaceBits(this->face); } else { // Value buttons switch ((widget - WID_SCMF_EYECOLOUR_L) / 3) { default: NOT_REACHED(); case 0: cmfv = CMFV_EYE_COLOUR; break; // Eye colour buttons case 1: cmfv = CMFV_CHIN; break; // Chin buttons case 2: cmfv = CMFV_EYEBROWS; break; // Eyebrows buttons case 3: cmfv = this->is_moust_male ? CMFV_MOUSTACHE : CMFV_LIPS; break; // Moustache or lips buttons case 4: cmfv = CMFV_NOSE; break; // Nose buttons case 5: cmfv = CMFV_HAIR; break; // Hair buttons case 6: cmfv = CMFV_JACKET; break; // Jacket buttons case 7: cmfv = CMFV_COLLAR; break; // Collar buttons case 8: cmfv = CMFV_TIE_EARRING; break; // Tie/earring buttons case 9: cmfv = CMFV_GLASSES; break; // Glasses buttons } /* 0 == left (_L), 1 == middle or 2 == right (_R) - button click */ IncreaseCompanyManagerFaceBits(this->face, cmfv, this->ge, (((widget - WID_SCMF_EYECOLOUR_L) % 3) != 0) ? 1 : -1); } this->UpdateData(); this->SetDirty(); } break; } } virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; /* Set a new company manager face number */ if (!StrEmpty(str)) { this->face = strtoul(str, NULL, 10); ScaleAllCompanyManagerFaceBits(this->face); ShowErrorMessage(STR_FACE_FACECODE_SET, INVALID_STRING_ID, WL_INFO); this->UpdateData(); this->SetDirty(); } else { ShowErrorMessage(STR_FACE_FACECODE_ERR, INVALID_STRING_ID, WL_INFO); } } }; /** Both text values of parts of the face that depend on the #is_female boolean value. */ const StringID SelectCompanyManagerFaceWindow::PART_TEXTS_IS_FEMALE[] = { STR_FACE_MOUSTACHE, STR_FACE_EARRING, // WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT STR_FACE_TIE, STR_FACE_EARRING, // WID_SCMF_TIE_EARRING_TEXT }; /** Textual names for parts of the face. */ const StringID SelectCompanyManagerFaceWindow::PART_TEXTS[] = { STR_FACE_GLASSES, // WID_SCMF_HAS_GLASSES_TEXT STR_FACE_HAIR, // WID_SCMF_HAIR_TEXT STR_FACE_EYEBROWS, // WID_SCMF_EYEBROWS_TEXT STR_FACE_EYECOLOUR, // WID_SCMF_EYECOLOUR_TEXT STR_FACE_GLASSES, // WID_SCMF_GLASSES_TEXT STR_FACE_NOSE, // WID_SCMF_NOSE_TEXT STR_FACE_CHIN, // WID_SCMF_CHIN_TEXT STR_FACE_JACKET, // WID_SCMF_JACKET_TEXT STR_FACE_COLLAR, // WID_SCMF_COLLAR_TEXT }; /** Company manager face selection window description */ static const WindowDesc _select_company_manager_face_desc( WDP_AUTO, 0, 0, WC_COMPANY_MANAGER_FACE, WC_NONE, WDF_CONSTRUCTION, _nested_select_company_manager_face_widgets, lengthof(_nested_select_company_manager_face_widgets) ); /** * Open the simple/advanced company manager face selection window * * @param parent the parent company window * @param adv simple or advanced face selection window * @param top previous top position of the window * @param left previous left position of the window */ static void DoSelectCompanyManagerFace(Window *parent) { if (!Company::IsValidID((CompanyID)parent->window_number)) return; if (BringWindowToFrontById(WC_COMPANY_MANAGER_FACE, parent->window_number)) return; new SelectCompanyManagerFaceWindow(&_select_company_manager_face_desc, parent); } static const NWidgetPart _nested_company_infrastructure_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_CI_CAPTION), SetDataTip(STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_VERTICAL), SetPIP(WD_FRAMERECT_TOP, 4, WD_FRAMETEXT_BOTTOM), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_RAIL_DESC), SetMinimalTextLines(2, 0), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_RAIL_COUNT), SetMinimalTextLines(2, 0), SetFill(0, 1), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_ROAD_DESC), SetMinimalTextLines(2, 0), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_ROAD_COUNT), SetMinimalTextLines(2, 0), SetFill(0, 1), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_WATER_DESC), SetMinimalTextLines(2, 0), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_WATER_COUNT), SetMinimalTextLines(2, 0), SetFill(0, 1), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_STATION_DESC), SetMinimalTextLines(3, 0), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_STATION_COUNT), SetMinimalTextLines(3, 0), SetFill(0, 1), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_TOTAL_DESC), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CI_TOTAL), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), }; /** * Window with detailed information about the company's infrastructure. */ struct CompanyInfrastructureWindow : Window { RailTypes railtypes; ///< Valid railtypes. RoadTypes roadtypes; ///< Valid roadtypes. uint total_width; ///< String width of the total cost line. CompanyInfrastructureWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->UpdateRailRoadTypes(); this->InitNested(desc, window_number); this->owner = (Owner)this->window_number; } void UpdateRailRoadTypes() { this->railtypes = RAILTYPES_NONE; this->roadtypes = ROADTYPES_ROAD; // Road is always available. /* Find the used railtypes. */ Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { if (!HasBit(e->info.climates, _settings_game.game_creation.landscape)) continue; this->railtypes |= GetRailTypeInfo(e->u.rail.railtype)->introduces_railtypes; } /* Get the date introduced railtypes as well. */ this->railtypes = AddDateIntroducedRailTypes(this->railtypes, MAX_DAY); /* Tram is only visible when there will be a tram. */ FOR_ALL_ENGINES_OF_TYPE(e, VEH_ROAD) { if (!HasBit(e->info.climates, _settings_game.game_creation.landscape)) continue; if (!HasBit(e->info.misc_flags, EF_ROAD_TRAM)) continue; this->roadtypes |= ROADTYPES_TRAM; break; } } /** Get total infrastructure maintenance cost. */ Money GetTotalMaintenanceCost() const { const Company *c = Company::Get((CompanyID)this->window_number); Money total; uint32 rail_total = c->infrastructure.GetRailTotal(); for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { if (HasBit(this->railtypes, rt)) total += RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total); } total += SignalMaintenanceCost(c->infrastructure.signal); if (HasBit(this->roadtypes, ROADTYPE_ROAD)) total += RoadMaintenanceCost(ROADTYPE_ROAD, c->infrastructure.road[ROADTYPE_ROAD]); if (HasBit(this->roadtypes, ROADTYPE_TRAM)) total += RoadMaintenanceCost(ROADTYPE_TRAM, c->infrastructure.road[ROADTYPE_TRAM]); total += CanalMaintenanceCost(c->infrastructure.water); total += StationMaintenanceCost(c->infrastructure.station); total += AirportMaintenanceCost(c->index); return total; } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_CI_CAPTION: SetDParam(0, (CompanyID)this->window_number); break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { const Company *c = Company::Get((CompanyID)this->window_number); switch (widget) { case WID_CI_RAIL_DESC: { uint lines = 1; size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width); for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) { if (HasBit(this->railtypes, rt)) { lines++; SetDParam(0, GetRailTypeInfo(rt)->strings.name); size->width = max(size->width, GetStringBoundingBox(STR_WHITE_STRING).width + WD_FRAMERECT_LEFT); } } if (this->railtypes != RAILTYPES_NONE) { lines++; size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + WD_FRAMERECT_LEFT); } size->height = max(size->height, lines * FONT_HEIGHT_NORMAL); break; } case WID_CI_ROAD_DESC: { uint lines = 1; size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT).width); if (HasBit(this->roadtypes, ROADTYPE_ROAD)) { lines++; size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD).width + WD_FRAMERECT_LEFT); } if (HasBit(this->roadtypes, ROADTYPE_TRAM)) { lines++; size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY).width + WD_FRAMERECT_LEFT); } size->height = max(size->height, lines * FONT_HEIGHT_NORMAL); break; } case WID_CI_WATER_DESC: size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + WD_FRAMERECT_LEFT); break; case WID_CI_STATION_DESC: size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + WD_FRAMERECT_LEFT); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + WD_FRAMERECT_LEFT); break; case WID_CI_RAIL_COUNT: case WID_CI_ROAD_COUNT: case WID_CI_WATER_COUNT: case WID_CI_STATION_COUNT: case WID_CI_TOTAL: { /* Find the maximum count that is displayed. */ uint32 max_val = 1000; // Some random number to reserve enough space. Money max_cost = 10000; // Some random number to reserve enough space. uint32 rail_total = c->infrastructure.GetRailTotal(); for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) { max_val = max(max_val, c->infrastructure.rail[rt]); max_cost = max(max_cost, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total)); } max_val = max(max_val, c->infrastructure.signal); max_cost = max(max_cost, SignalMaintenanceCost(c->infrastructure.signal)); for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) { max_val = max(max_val, c->infrastructure.road[rt]); max_cost = max(max_cost, RoadMaintenanceCost(rt, c->infrastructure.road[rt])); } max_val = max(max_val, c->infrastructure.water); max_cost = max(max_cost, CanalMaintenanceCost(c->infrastructure.water)); max_val = max(max_val, c->infrastructure.station); max_cost = max(max_cost, StationMaintenanceCost(c->infrastructure.station)); max_val = max(max_val, c->infrastructure.airport); max_cost = max(max_cost, AirportMaintenanceCost(c->index)); SetDParamMaxValue(0, max_val); SetDParamMaxValue(1, max_cost * 12); // Convert to per year size->width = max(size->width, GetStringBoundingBox(_settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA).width + 20); // Reserve some wiggle room. if (_settings_game.economy.infrastructure_maintenance) { SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year this->total_width = GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width + 20; size->width = max(size->width, this->total_width); } /* Set height of the total line. */ if (widget == WID_CI_TOTAL) { size->height = _settings_game.economy.infrastructure_maintenance ? max(size->height, EXP_LINESPACE + FONT_HEIGHT_NORMAL) : 0; } break; } } } virtual void DrawWidget(const Rect &r, int widget) const { const Company *c = Company::Get((CompanyID)this->window_number); int y = r.top; int offs_left = _current_text_dir == TD_LTR ? WD_FRAMERECT_LEFT : 0; int offs_right = _current_text_dir == TD_LTR ? 0 : WD_FRAMERECT_LEFT; switch (widget) { case WID_CI_RAIL_DESC: DrawString(r.left, r.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT); if (this->railtypes != RAILTYPES_NONE) { /* Draw name of each valid railtype. */ for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { if (HasBit(this->railtypes, rt)) { SetDParam(0, GetRailTypeInfo(rt)->strings.name); DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_WHITE_STRING); } } DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS); } else { /* No valid railtype. */ DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_VIEW_INFRASTRUCTURE_NONE); } break; case WID_CI_RAIL_COUNT: { /* Draw infrastructure count for each valid railtype. */ uint32 rail_total = c->infrastructure.GetRailTotal(); for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { if (HasBit(this->railtypes, rt)) { SetDParam(0, c->infrastructure.rail[rt]); SetDParam(1, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); } } if (this->railtypes != RAILTYPES_NONE) { SetDParam(0, c->infrastructure.signal); SetDParam(1, SignalMaintenanceCost(c->infrastructure.signal) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); } break; } case WID_CI_ROAD_DESC: DrawString(r.left, r.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT); if (this->roadtypes != ROADTYPES_NONE) { if (HasBit(this->roadtypes, ROADTYPE_ROAD)) DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD); if (HasBit(this->roadtypes, ROADTYPE_TRAM)) DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY); } else { /* No valid roadtypes. */ DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_VIEW_INFRASTRUCTURE_NONE); } break; case WID_CI_ROAD_COUNT: if (HasBit(this->roadtypes, ROADTYPE_ROAD)) { SetDParam(0, c->infrastructure.road[ROADTYPE_ROAD]); SetDParam(1, RoadMaintenanceCost(ROADTYPE_ROAD, c->infrastructure.road[ROADTYPE_ROAD]) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); } if (HasBit(this->roadtypes, ROADTYPE_TRAM)) { SetDParam(0, c->infrastructure.road[ROADTYPE_TRAM]); SetDParam(1, RoadMaintenanceCost(ROADTYPE_TRAM, c->infrastructure.road[ROADTYPE_TRAM]) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); } break; case WID_CI_WATER_DESC: DrawString(r.left, r.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT); DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS); break; case WID_CI_WATER_COUNT: SetDParam(0, c->infrastructure.water); SetDParam(1, CanalMaintenanceCost(c->infrastructure.water) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); break; case WID_CI_TOTAL: if (_settings_game.economy.infrastructure_maintenance) { GfxFillRect(r.left, y, r.left + this->total_width, y, PC_WHITE); y += EXP_LINESPACE; SetDParam(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year DrawString(r.left, r.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL); } break; case WID_CI_STATION_DESC: DrawString(r.left, r.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT); DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS); DrawString(r.left + offs_left, r.right - offs_right, y += FONT_HEIGHT_NORMAL, STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS); break; case WID_CI_STATION_COUNT: SetDParam(0, c->infrastructure.station); SetDParam(1, StationMaintenanceCost(c->infrastructure.station) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); SetDParam(0, c->infrastructure.airport); SetDParam(1, AirportMaintenanceCost(c->index) * 12); // Convert to per year DrawString(r.left, r.right, y += FONT_HEIGHT_NORMAL, _settings_game.economy.infrastructure_maintenance ? STR_COMPANY_INFRASTRUCTURE_VIEW_COST : STR_WHITE_COMMA); break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->UpdateRailRoadTypes(); this->ReInit(); } }; static const WindowDesc _company_infrastructure_desc( WDP_AUTO, 0, 0, WC_COMPANY_INFRASTRUCTURE, WC_NONE, 0, _nested_company_infrastructure_widgets, lengthof(_nested_company_infrastructure_widgets) ); /** * Open the infrastructure window of a company. * @param company Company to show infrastructure of. */ static void ShowCompanyInfrastructure(CompanyID company) { if (!Company::IsValidID(company)) return; AllocateWindowDescFront(&_company_infrastructure_desc, company); } static const NWidgetPart _nested_company_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_C_CAPTION), SetDataTip(STR_COMPANY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), SetPIP(4, 6, 4), NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_FACE), SetMinimalSize(92, 119), SetFill(1, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_FACE_TITLE), SetFill(1, 1), SetMinimalTextLines(2, 0), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), SetPIP(4, 5, 5), NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INAUGURATION), SetDataTip(STR_COMPANY_VIEW_INAUGURATED_TITLE, STR_NULL), SetFill(1, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 5, 0), NWidget(WWT_LABEL, COLOUR_GREY, WID_C_DESC_COLOUR_SCHEME), SetDataTip(STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE, STR_NULL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_COLOUR_SCHEME_EXAMPLE), SetMinimalSize(30, 0), SetFill(0, 1), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), NWidget(NWID_VERTICAL), NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_VEHICLE), SetDataTip(STR_COMPANY_VIEW_VEHICLES_TITLE, STR_NULL), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_VEHICLE_COUNTS), SetMinimalTextLines(4, 0), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_VIEW_BUILD_HQ), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_HQ), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_VIEW_HQ_BUTTON, STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_BUILD_HQ), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_BUILD_HQ_BUTTON, STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_RELOCATE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_RELOCATE_HQ), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS), NWidget(NWID_SPACER), SetMinimalSize(90, 0), EndContainer(), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_COMPANY_VALUE), SetDataTip(STR_COMPANY_VIEW_COMPANY_VALUE, STR_NULL), SetFill(1, 0), NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), NWidget(NWID_VERTICAL), NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE, STR_NULL), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_INFRASTRUCTURE_COUNTS), SetMinimalTextLines(5, 0), SetFill(1, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), NWidget(NWID_SPACER), SetFill(0, 1), SetMinimalSize(90, 0), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_DESC_OWNERS), NWidget(NWID_VERTICAL), SetPIP(5, 5, 4), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_OWNERS), SetMinimalTextLines(3, 0), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), NWidget(NWID_SPACER), SetMinimalSize(90, 0), SetFill(0, 1), /* Multi player buttons. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_C_HAS_PASSWORD), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MULTIPLAYER), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP), EndContainer(), EndContainer(), EndContainer(), EndContainer(), EndContainer(), EndContainer(), EndContainer(), /* Button bars at the bottom. */ NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_BUTTONS), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_NEW_FACE), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_NEW_FACE_BUTTON, STR_COMPANY_VIEW_NEW_FACE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COLOUR_SCHEME), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON, STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_PRESIDENT_NAME), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON, STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_NAME), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_COMPANY_NAME_BUTTON, STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_BUY_SHARE), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_BUY_SHARE_BUTTON, STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_SELL_SHARE), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_SELL_SHARE_BUTTON, STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP), EndContainer(), EndContainer(), }; int GetAmountOwnedBy(const Company *c, Owner owner) { return (c->share_owners[0] == owner) + (c->share_owners[1] == owner) + (c->share_owners[2] == owner) + (c->share_owners[3] == owner); } /** Strings for the company vehicle counts */ static const StringID _company_view_vehicle_count_strings[] = { STR_COMPANY_VIEW_TRAINS, STR_COMPANY_VIEW_ROAD_VEHICLES, STR_COMPANY_VIEW_SHIPS, STR_COMPANY_VIEW_AIRCRAFT }; /** * Window with general information about a company */ struct CompanyWindow : Window { CompanyWidgets query_widget; /** Display planes in the company window. */ enum CompanyWindowPlanes { /* Display planes of the #WID_C_SELECT_MULTIPLAYER selection widget. */ CWP_MP_C_PWD = 0, ///< Display the company password button. CWP_MP_C_JOIN, ///< Display the join company button. /* Display planes of the #WID_C_SELECT_VIEW_BUILD_HQ selection widget. */ CWP_VB_VIEW = 0, ///< Display the view button CWP_VB_BUILD, ///< Display the build button /* Display planes of the #WID_C_SELECT_RELOCATE selection widget. */ CWP_RELOCATE_SHOW = 0, ///< Show the relocate HQ button. CWP_RELOCATE_HIDE, ///< Hide the relocate HQ button. /* Display planes of the #WID_C_SELECT_BUTTONS selection widget. */ CWP_BUTTONS_LOCAL = 0, ///< Buttons of the local company. CWP_BUTTONS_OTHER, ///< Buttons of the other companies. }; CompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); this->owner = (Owner)this->window_number; this->OnInvalidateData(); } virtual void OnPaint() { const Company *c = Company::Get((CompanyID)this->window_number); bool local = this->window_number == _local_company; if (!this->IsShaded()) { bool reinit = false; /* Button bar selection. */ int plane = local ? CWP_BUTTONS_LOCAL : CWP_BUTTONS_OTHER; NWidgetStacked *wi = this->GetWidget(WID_C_SELECT_BUTTONS); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); this->SetDirty(); return; } /* Build HQ button handling. */ plane = (local && c->location_of_HQ == INVALID_TILE) ? CWP_VB_BUILD : CWP_VB_VIEW; wi = this->GetWidget(WID_C_SELECT_VIEW_BUILD_HQ); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); this->SetDirty(); return; } this->SetWidgetDisabledState(WID_C_VIEW_HQ, c->location_of_HQ == INVALID_TILE); /* Enable/disable 'Relocate HQ' button. */ plane = (!local || c->location_of_HQ == INVALID_TILE) ? CWP_RELOCATE_HIDE : CWP_RELOCATE_SHOW; wi = this->GetWidget(WID_C_SELECT_RELOCATE); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); this->SetDirty(); return; } /* Owners of company */ plane = SZSP_HORIZONTAL; for (uint i = 0; i < lengthof(c->share_owners); i++) { if (c->share_owners[i] != INVALID_COMPANY) { plane = 0; break; } } wi = this->GetWidget(WID_C_SELECT_DESC_OWNERS); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); reinit = true; } /* Multiplayer buttons. */ plane = ((!_networking) ? (int)SZSP_NONE : (int)(local ? CWP_MP_C_PWD : CWP_MP_C_JOIN)); wi = this->GetWidget(WID_C_SELECT_MULTIPLAYER); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); reinit = true; } this->SetWidgetDisabledState(WID_C_COMPANY_JOIN, c->is_ai); if (reinit) { this->ReInit(); return; } } this->DrawWidgets(); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_C_DESC_COLOUR_SCHEME_EXAMPLE: { Point offset; Dimension d = GetSpriteSize(SPR_VEH_BUS_SW_VIEW, &offset); d.width -= offset.x; d.height -= offset.y; *size = maxdim(*size, d); break; } case WID_C_DESC_COMPANY_VALUE: SetDParam(0, INT64_MAX); // Arguably the maximum company value size->width = GetStringBoundingBox(STR_COMPANY_VIEW_COMPANY_VALUE).width; break; case WID_C_DESC_VEHICLE_COUNTS: SetDParamMaxValue(0, 5000); // Maximum number of vehicles for (uint i = 0; i < lengthof(_company_view_vehicle_count_strings); i++) { size->width = max(size->width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width); } break; case WID_C_DESC_INFRASTRUCTURE_COUNTS: SetDParamMaxValue(0, UINT_MAX); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width); break; case WID_C_DESC_OWNERS: { const Company *c2; FOR_ALL_COMPANIES(c2) { SetDParamMaxValue(0, 75); SetDParam(1, c2->index); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width); } break; } #ifdef ENABLE_NETWORK case WID_C_HAS_PASSWORD: *size = maxdim(*size, GetSpriteSize(SPR_LOCK)); break; #endif /* ENABLE_NETWORK */ } } virtual void DrawWidget(const Rect &r, int widget) const { const Company *c = Company::Get((CompanyID)this->window_number); switch (widget) { case WID_C_FACE: DrawCompanyManagerFace(c->face, c->colour, r.left, r.top); break; case WID_C_FACE_TITLE: SetDParam(0, c->index); DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE, TC_FROMSTRING, SA_HOR_CENTER); break; case WID_C_DESC_COLOUR_SCHEME_EXAMPLE: { Point offset; Dimension d = GetSpriteSize(SPR_VEH_BUS_SW_VIEW, &offset); d.height -= offset.y; DrawSprite(SPR_VEH_BUS_SW_VIEW, COMPANY_SPRITE_COLOUR(c->index), r.left - offset.x, (r.top + r.bottom - d.height) / 2 - offset.y); break; } case WID_C_DESC_VEHICLE_COUNTS: { uint amounts[4]; amounts[0] = c->group_all[VEH_TRAIN].num_vehicle; amounts[1] = c->group_all[VEH_ROAD].num_vehicle; amounts[2] = c->group_all[VEH_SHIP].num_vehicle; amounts[3] = c->group_all[VEH_AIRCRAFT].num_vehicle; int y = r.top; if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) { DrawString(r.left, r.right, y, STR_COMPANY_VIEW_VEHICLES_NONE); } else { assert_compile(lengthof(amounts) == lengthof(_company_view_vehicle_count_strings)); for (uint i = 0; i < lengthof(amounts); i++) { if (amounts[i] != 0) { SetDParam(0, amounts[i]); DrawString(r.left, r.right, y, _company_view_vehicle_count_strings[i]); y += FONT_HEIGHT_NORMAL; } } } break; } case WID_C_DESC_INFRASTRUCTURE_COUNTS: { uint y = r.top; /* Collect rail and road counts. */ uint rail_pices = c->infrastructure.signal; uint road_pieces = 0; for (uint i = 0; i < lengthof(c->infrastructure.rail); i++) rail_pices += c->infrastructure.rail[i]; for (uint i = 0; i < lengthof(c->infrastructure.road); i++) road_pieces += c->infrastructure.road[i]; if (rail_pices == 0 && road_pieces == 0 && c->infrastructure.water == 0 && c->infrastructure.station == 0 && c->infrastructure.airport == 0) { DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_NONE); } else { if (rail_pices != 0) { SetDParam(0, rail_pices); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL); y += FONT_HEIGHT_NORMAL; } if (road_pieces != 0) { SetDParam(0, road_pieces); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD); y += FONT_HEIGHT_NORMAL; } if (c->infrastructure.water != 0) { SetDParam(0, c->infrastructure.water); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_WATER); y += FONT_HEIGHT_NORMAL; } if (c->infrastructure.station != 0) { SetDParam(0, c->infrastructure.station); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_STATION); y += FONT_HEIGHT_NORMAL; } if (c->infrastructure.airport != 0) { SetDParam(0, c->infrastructure.airport); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT); } } break; } case WID_C_DESC_OWNERS: { const Company *c2; uint y = r.top; FOR_ALL_COMPANIES(c2) { uint amt = GetAmountOwnedBy(c, c2->index); if (amt != 0) { SetDParam(0, amt * 25); SetDParam(1, c2->index); DrawString(r.left, r.right, y, STR_COMPANY_VIEW_SHARES_OWNED_BY); y += FONT_HEIGHT_NORMAL; } } break; } #ifdef ENABLE_NETWORK case WID_C_HAS_PASSWORD: if (_networking && NetworkCompanyIsPassworded(c->index)) { DrawSprite(SPR_LOCK, PAL_NONE, r.left, r.top); } break; #endif /* ENABLE_NETWORK */ } } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_C_CAPTION: SetDParam(0, (CompanyID)this->window_number); SetDParam(1, (CompanyID)this->window_number); break; case WID_C_DESC_INAUGURATION: SetDParam(0, Company::Get((CompanyID)this->window_number)->inaugurated_year); break; case WID_C_DESC_COMPANY_VALUE: SetDParam(0, CalculateCompanyValue(Company::Get((CompanyID)this->window_number))); break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_C_NEW_FACE: DoSelectCompanyManagerFace(this); break; case WID_C_COLOUR_SCHEME: if (BringWindowToFrontById(WC_COMPANY_COLOUR, this->window_number)) break; new SelectCompanyLiveryWindow(&_select_company_livery_desc, (CompanyID)this->window_number); break; case WID_C_PRESIDENT_NAME: this->query_widget = WID_C_PRESIDENT_NAME; SetDParam(0, this->window_number); ShowQueryString(STR_PRESIDENT_NAME, STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION, MAX_LENGTH_PRESIDENT_NAME_CHARS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT | QSF_LEN_IN_CHARS); break; case WID_C_COMPANY_NAME: this->query_widget = WID_C_COMPANY_NAME; SetDParam(0, this->window_number); ShowQueryString(STR_COMPANY_NAME, STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION, MAX_LENGTH_COMPANY_NAME_CHARS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT | QSF_LEN_IN_CHARS); break; case WID_C_VIEW_HQ: { TileIndex tile = Company::Get((CompanyID)this->window_number)->location_of_HQ; if (_ctrl_pressed) { ShowExtraViewPortWindow(tile); } else { ScrollMainWindowToTile(tile); } break; } case WID_C_BUILD_HQ: if ((byte)this->window_number != _local_company) return; if (this->IsWidgetLowered(WID_C_BUILD_HQ)) { ResetObjectToPlace(); this->RaiseButtons(); break; } SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, HT_RECT, this); SetTileSelectSize(2, 2); this->LowerWidget(WID_C_BUILD_HQ); this->SetWidgetDirty(WID_C_BUILD_HQ); break; case WID_C_RELOCATE_HQ: if (this->IsWidgetLowered(WID_C_RELOCATE_HQ)) { ResetObjectToPlace(); this->RaiseButtons(); break; } SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, HT_RECT, this); SetTileSelectSize(2, 2); this->LowerWidget(WID_C_RELOCATE_HQ); this->SetWidgetDirty(WID_C_RELOCATE_HQ); break; case WID_C_VIEW_INFRASTRUCTURE: ShowCompanyInfrastructure((CompanyID)this->window_number); break; case WID_C_BUY_SHARE: DoCommandP(0, this->window_number, 0, CMD_BUY_SHARE_IN_COMPANY | CMD_MSG(STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS)); break; case WID_C_SELL_SHARE: DoCommandP(0, this->window_number, 0, CMD_SELL_SHARE_IN_COMPANY | CMD_MSG(STR_ERROR_CAN_T_SELL_25_SHARE_IN)); break; #ifdef ENABLE_NETWORK case WID_C_COMPANY_PASSWORD: if (this->window_number == _local_company) ShowNetworkCompanyPasswordWindow(this); break; case WID_C_COMPANY_JOIN: { this->query_widget = WID_C_COMPANY_JOIN; CompanyID company = (CompanyID)this->window_number; if (_network_server) { NetworkServerDoMove(CLIENT_ID_SERVER, company); MarkWholeScreenDirty(); } else if (NetworkCompanyIsPassworded(company)) { /* ask for the password */ ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION, NETWORK_PASSWORD_LENGTH, this, CS_ALPHANUMERAL, QSF_NONE); } else { /* just send the join command */ NetworkClientRequestMove(company); } break; } #endif /* ENABLE_NETWORK */ } } virtual void OnHundredthTick() { /* redraw the window every now and then */ this->SetDirty(); } virtual void OnPlaceObject(Point pt, TileIndex tile) { if (DoCommandP(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS))) { ResetObjectToPlace(); this->RaiseButtons(); } } virtual void OnPlaceObjectAbort() { this->RaiseButtons(); } virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; switch (this->query_widget) { default: NOT_REACHED(); case WID_C_PRESIDENT_NAME: DoCommandP(0, 0, 0, CMD_RENAME_PRESIDENT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_PRESIDENT), NULL, str); break; case WID_C_COMPANY_NAME: DoCommandP(0, 0, 0, CMD_RENAME_COMPANY | CMD_MSG(STR_ERROR_CAN_T_CHANGE_COMPANY_NAME), NULL, str); break; #ifdef ENABLE_NETWORK case WID_C_COMPANY_JOIN: NetworkClientRequestMove((CompanyID)this->window_number, str); break; #endif /* ENABLE_NETWORK */ } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (this->window_number == _local_company) return; if (_settings_game.economy.allow_shares) { // Shares are allowed const Company *c = Company::Get(this->window_number); /* If all shares are owned by someone (none by nobody), disable buy button */ this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 || /* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */ (GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) || /* Spectators cannot do anything of course */ _local_company == COMPANY_SPECTATOR); /* If the company doesn't own any shares, disable sell button */ this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) || /* Spectators cannot do anything of course */ _local_company == COMPANY_SPECTATOR); } else { // Shares are not allowed, disable buy/sell buttons this->DisableWidget(WID_C_BUY_SHARE); this->DisableWidget(WID_C_SELL_SHARE); } } }; static const WindowDesc _company_desc( WDP_AUTO, 0, 0, WC_COMPANY, WC_NONE, 0, _nested_company_widgets, lengthof(_nested_company_widgets) ); /** * Show the window with the overview of the company. * @param company The company to show the window for. */ void ShowCompany(CompanyID company) { if (!Company::IsValidID(company)) return; AllocateWindowDescFront(&_company_desc, company); } /** * Redraw all windows with company infrastructure counts. * @param company The company to redraw the windows of. */ void DirtyCompanyInfrastructureWindows(CompanyID company) { SetWindowDirty(WC_COMPANY, company); SetWindowDirty(WC_COMPANY_INFRASTRUCTURE, company); } struct BuyCompanyWindow : Window { BuyCompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_BC_FACE: *size = GetSpriteSize(SPR_GRADIENT); break; case WID_BC_QUESTION: const Company *c = Company::Get((CompanyID)this->window_number); SetDParam(0, c->index); SetDParam(1, c->bankrupt_value); size->height = GetStringHeight(STR_BUY_COMPANY_MESSAGE, size->width); break; } } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_BC_CAPTION: SetDParam(0, STR_COMPANY_NAME); SetDParam(1, Company::Get((CompanyID)this->window_number)->index); break; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_BC_FACE: { const Company *c = Company::Get((CompanyID)this->window_number); DrawCompanyManagerFace(c->face, c->colour, r.left, r.top); break; } case WID_BC_QUESTION: { const Company *c = Company::Get((CompanyID)this->window_number); SetDParam(0, c->index); SetDParam(1, c->bankrupt_value); DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_BUY_COMPANY_MESSAGE, TC_FROMSTRING, SA_CENTER); break; } } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_BC_NO: delete this; break; case WID_BC_YES: DoCommandP(0, this->window_number, 0, CMD_BUY_COMPANY | CMD_MSG(STR_ERROR_CAN_T_BUY_COMPANY)); break; } } }; static const NWidgetPart _nested_buy_company_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, WID_BC_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE), NWidget(NWID_VERTICAL), SetPIP(8, 8, 8), NWidget(NWID_HORIZONTAL), SetPIP(8, 10, 8), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BC_FACE), SetFill(0, 1), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BC_QUESTION), SetMinimalSize(240, 0), SetFill(1, 1), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(100, 10, 100), NWidget(WWT_TEXTBTN, COLOUR_LIGHT_BLUE, WID_BC_NO), SetMinimalSize(60, 12), SetDataTip(STR_QUIT_NO, STR_NULL), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_LIGHT_BLUE, WID_BC_YES), SetMinimalSize(60, 12), SetDataTip(STR_QUIT_YES, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _buy_company_desc( WDP_AUTO, 0, 0, WC_BUY_COMPANY, WC_NONE, WDF_CONSTRUCTION, _nested_buy_company_widgets, lengthof(_nested_buy_company_widgets) ); /** * Show the query to buy another company. * @param company The company to buy. */ void ShowBuyCompanyDialog(CompanyID company) { AllocateWindowDescFront(&_buy_company_desc, company); } openttd-1.3.3/src/base_media_func.h0000644000000000000000000003235112246102610015713 0ustar rootroot/* $Id: base_media_func.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file base_media_func.h Generic function implementations for base data (graphics, sounds). * @note You should _never_ include this file due to the SET_TYPE define. */ #include "base_media_base.h" #include "debug.h" #include "ini_type.h" #include "string_func.h" template /* static */ const char *BaseMedia::ini_set; template /* static */ const Tbase_set *BaseMedia::used_set; template /* static */ Tbase_set *BaseMedia::available_sets; template /* static */ Tbase_set *BaseMedia::duplicate_sets; /** * Try to read a single piece of metadata and return false if it doesn't exist. * @param name the name of the item to fetch. */ #define fetch_metadata(name) \ item = metadata->GetItem(name, false); \ if (item == NULL || StrEmpty(item->value)) { \ DEBUG(grf, 0, "Base " SET_TYPE "set detail loading: %s field missing.", name); \ DEBUG(grf, 0, " Is %s readable for the user running OpenTTD?", full_filename); \ return false; \ } /** * Read the set information from a loaded ini. * @param ini the ini to read from * @param path the path to this ini file (for filenames) * @param full_filename the full filename of the loaded file (for error reporting purposes) * @param allow_empty_filename empty filenames are valid * @return true if loading was successful. */ template bool BaseSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename) { memset(this, 0, sizeof(*this)); IniGroup *metadata = ini->GetGroup("metadata"); IniItem *item; fetch_metadata("name"); this->name = strdup(item->value); fetch_metadata("description"); this->description[strdup("")] = strdup(item->value); /* Add the translations of the descriptions too. */ for (const IniItem *item = metadata->item; item != NULL; item = item->next) { if (strncmp("description.", item->name, 12) != 0) continue; this->description[strdup(item->name + 12)] = strdup(item->value); } fetch_metadata("shortname"); for (uint i = 0; item->value[i] != '\0' && i < 4; i++) { this->shortname |= ((uint8)item->value[i]) << (i * 8); } fetch_metadata("version"); this->version = atoi(item->value); item = metadata->GetItem("fallback", false); this->fallback = (item != NULL && strcmp(item->value, "0") != 0 && strcmp(item->value, "false") != 0); /* For each of the file types we want to find the file, MD5 checksums and warning messages. */ IniGroup *files = ini->GetGroup("files"); IniGroup *md5s = ini->GetGroup("md5s"); IniGroup *origin = ini->GetGroup("origin"); for (uint i = 0; i < Tnum_files; i++) { MD5File *file = &this->files[i]; /* Find the filename first. */ item = files->GetItem(BaseSet::file_names[i], false); if (item == NULL || (item->value == NULL && !allow_empty_filename)) { DEBUG(grf, 0, "No " SET_TYPE " file for: %s (in %s)", BaseSet::file_names[i], full_filename); return false; } const char *filename = item->value; if (filename == NULL) { file->filename = NULL; /* If we list no file, that file must be valid */ this->valid_files++; this->found_files++; continue; } file->filename = str_fmt("%s%s", path, filename); /* Then find the MD5 checksum */ item = md5s->GetItem(filename, false); if (item == NULL) { DEBUG(grf, 0, "No MD5 checksum specified for: %s (in %s)", filename, full_filename); return false; } char *c = item->value; for (uint i = 0; i < sizeof(file->hash) * 2; i++, c++) { uint j; if ('0' <= *c && *c <= '9') { j = *c - '0'; } else if ('a' <= *c && *c <= 'f') { j = *c - 'a' + 10; } else if ('A' <= *c && *c <= 'F') { j = *c - 'A' + 10; } else { DEBUG(grf, 0, "Malformed MD5 checksum specified for: %s (in %s)", filename, full_filename); return false; } if (i % 2 == 0) { file->hash[i / 2] = j << 4; } else { file->hash[i / 2] |= j; } } /* Then find the warning message when the file's missing */ item = filename == NULL ? NULL : origin->GetItem(filename, false); if (item == NULL) item = origin->GetItem("default", false); if (item == NULL) { DEBUG(grf, 1, "No origin warning message specified for: %s", filename); file->missing_warning = strdup(""); } else { file->missing_warning = strdup(item->value); } switch (T::CheckMD5(file, BASESET_DIR)) { case MD5File::CR_MATCH: this->valid_files++; this->found_files++; break; case MD5File::CR_MISMATCH: DEBUG(grf, 1, "MD5 checksum mismatch for: %s (in %s)", filename, full_filename); this->found_files++; break; case MD5File::CR_NO_FILE: DEBUG(grf, 1, "The file %s specified in %s is missing", filename, full_filename); break; } } return true; } template bool BaseMedia::AddFile(const char *filename, size_t basepath_length, const char *tar_filename) { bool ret = false; DEBUG(grf, 1, "Checking %s for base " SET_TYPE " set", filename); Tbase_set *set = new Tbase_set(); IniFile *ini = new IniFile(); ini->LoadFromDisk(filename, BASESET_DIR); char *path = strdup(filename + basepath_length); char *psep = strrchr(path, PATHSEPCHAR); if (psep != NULL) { psep[1] = '\0'; } else { *path = '\0'; } if (set->FillSetDetails(ini, path, filename)) { Tbase_set *duplicate = NULL; for (Tbase_set *c = BaseMedia::available_sets; c != NULL; c = c->next) { if (strcmp(c->name, set->name) == 0 || c->shortname == set->shortname) { duplicate = c; break; } } if (duplicate != NULL) { /* The more complete set takes precedence over the version number. */ if ((duplicate->valid_files == set->valid_files && duplicate->version >= set->version) || duplicate->valid_files > set->valid_files) { DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate, %s)", set->name, set->version, duplicate->valid_files > set->valid_files ? "less valid files" : "lower version"); set->next = BaseMedia::duplicate_sets; BaseMedia::duplicate_sets = set; } else { Tbase_set **prev = &BaseMedia::available_sets; while (*prev != duplicate) prev = &(*prev)->next; *prev = set; set->next = duplicate->next; /* If the duplicate set is currently used (due to rescanning this can happen) * update the currently used set to the new one. This will 'lie' about the * version number until a new game is started which isn't a big problem */ if (BaseMedia::used_set == duplicate) BaseMedia::used_set = set; DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate, %s)", duplicate->name, duplicate->version, duplicate->valid_files < set->valid_files ? "less valid files" : "lower version"); duplicate->next = BaseMedia::duplicate_sets; BaseMedia::duplicate_sets = duplicate; ret = true; } } else { Tbase_set **last = &BaseMedia::available_sets; while (*last != NULL) last = &(*last)->next; *last = set; ret = true; } if (ret) { DEBUG(grf, 1, "Adding %s (%i) as base " SET_TYPE " set", set->name, set->version); } } else { delete set; } free(path); delete ini; return ret; } /** * Set the set to be used. * @param name of the set to use * @return true if it could be loaded */ template /* static */ bool BaseMedia::SetSet(const char *name) { extern void CheckExternalFiles(); if (StrEmpty(name)) { if (!BaseMedia::DetermineBestSet()) return false; CheckExternalFiles(); return true; } for (const Tbase_set *s = BaseMedia::available_sets; s != NULL; s = s->next) { if (strcmp(name, s->name) == 0) { BaseMedia::used_set = s; CheckExternalFiles(); return true; } } return false; } /** * Returns a list with the sets. * @param p where to print to * @param last the last character to print to * @return the last printed character */ template /* static */ char *BaseMedia::GetSetsList(char *p, const char *last) { p += seprintf(p, last, "List of " SET_TYPE " sets:\n"); for (const Tbase_set *s = BaseMedia::available_sets; s != NULL; s = s->next) { p += seprintf(p, last, "%18s: %s", s->name, s->GetDescription()); int invalid = s->GetNumInvalid(); if (invalid != 0) { int missing = s->GetNumMissing(); if (missing == 0) { p += seprintf(p, last, " (%i corrupt file%s)\n", invalid, invalid == 1 ? "" : "s"); } else { p += seprintf(p, last, " (unusable: %i missing file%s)\n", missing, missing == 1 ? "" : "s"); } } else { p += seprintf(p, last, "\n"); } } p += seprintf(p, last, "\n"); return p; } #if defined(ENABLE_NETWORK) #include "network/network_content.h" template const char *TryGetBaseSetFile(const ContentInfo *ci, bool md5sum, const Tbase_set *s) { for (; s != NULL; s = s->next) { if (s->GetNumMissing() != 0) continue; if (s->shortname != ci->unique_id) continue; if (!md5sum) return s->files[0].filename; byte md5[16]; memset(md5, 0, sizeof(md5)); for (uint i = 0; i < Tbase_set::NUM_FILES; i++) { for (uint j = 0; j < sizeof(md5); j++) { md5[j] ^= s->files[i].hash[j]; } } if (memcmp(md5, ci->md5sum, sizeof(md5)) == 0) return s->files[0].filename; } return NULL; } template /* static */ bool BaseMedia::HasSet(const ContentInfo *ci, bool md5sum) { return (TryGetBaseSetFile(ci, md5sum, BaseMedia::available_sets) != NULL) || (TryGetBaseSetFile(ci, md5sum, BaseMedia::duplicate_sets) != NULL); } #else template const char *TryGetBaseSetFile(const ContentInfo *ci, bool md5sum, const Tbase_set *s) { return NULL; } template /* static */ bool BaseMedia::HasSet(const ContentInfo *ci, bool md5sum) { return false; } #endif /* ENABLE_NETWORK */ /** * Count the number of available graphics sets. * @return the number of sets */ template /* static */ int BaseMedia::GetNumSets() { int n = 0; for (const Tbase_set *s = BaseMedia::available_sets; s != NULL; s = s->next) { if (s != BaseMedia::used_set && s->GetNumMissing() != 0) continue; n++; } return n; } /** * Get the index of the currently active graphics set * @return the current set's index */ template /* static */ int BaseMedia::GetIndexOfUsedSet() { int n = 0; for (const Tbase_set *s = BaseMedia::available_sets; s != NULL; s = s->next) { if (s == BaseMedia::used_set) return n; if (s->GetNumMissing() != 0) continue; n++; } return -1; } /** * Get the name of the graphics set at the specified index * @return the name of the set */ template /* static */ const Tbase_set *BaseMedia::GetSet(int index) { for (const Tbase_set *s = BaseMedia::available_sets; s != NULL; s = s->next) { if (s != BaseMedia::used_set && s->GetNumMissing() != 0) continue; if (index == 0) return s; index--; } error("Base" SET_TYPE "::GetSet(): index %d out of range", index); } /** * Return the used set. * @return the used set. */ template /* static */ const Tbase_set *BaseMedia::GetUsedSet() { return BaseMedia::used_set; } /** * Return the available sets. * @return The available sets. */ template /* static */ Tbase_set *BaseMedia::GetAvailableSets() { return BaseMedia::available_sets; } /** * Force instantiation of methods so we don't get linker errors. * @param repl_type the type of the BaseMedia to instantiate * @param set_type the type of the BaseSet to instantiate */ #define INSTANTIATE_BASE_MEDIA_METHODS(repl_type, set_type) \ template const char *repl_type::ini_set; \ template const char *repl_type::GetExtension(); \ template bool repl_type::AddFile(const char *filename, size_t pathlength, const char *tar_filename); \ template bool repl_type::HasSet(const struct ContentInfo *ci, bool md5sum); \ template bool repl_type::SetSet(const char *name); \ template char *repl_type::GetSetsList(char *p, const char *last); \ template int repl_type::GetNumSets(); \ template int repl_type::GetIndexOfUsedSet(); \ template const set_type *repl_type::GetSet(int index); \ template const set_type *repl_type::GetUsedSet(); \ template bool repl_type::DetermineBestSet(); \ template set_type *repl_type::GetAvailableSets(); \ template const char *TryGetBaseSetFile(const ContentInfo *ci, bool md5sum, const set_type *s); openttd-1.3.3/src/subsidy_gui.cpp0000644000000000000000000001600712246102611015511 0ustar rootroot/* $Id: subsidy_gui.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file subsidy_gui.cpp GUI for subsidies. */ #include "stdafx.h" #include "industry.h" #include "town.h" #include "window_gui.h" #include "strings_func.h" #include "date_func.h" #include "viewport_func.h" #include "gui.h" #include "subsidy_func.h" #include "subsidy_base.h" #include "core/geometry_func.hpp" #include "widgets/subsidy_widget.h" #include "table/strings.h" struct SubsidyListWindow : Window { Scrollbar *vscroll; SubsidyListWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_SUL_SCROLLBAR); this->FinishInitNested(desc, window_number); this->OnInvalidateData(0); } virtual void OnClick(Point pt, int widget, int click_count) { if (widget != WID_SUL_PANEL) return; int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SUL_PANEL, WD_FRAMERECT_TOP); int num = 0; const Subsidy *s; FOR_ALL_SUBSIDIES(s) { if (!s->IsAwarded()) { y--; if (y == 0) { this->HandleClick(s); return; } num++; } } if (num == 0) { y--; // "None" if (y < 0) return; } y -= 2; // "Services already subsidised:" if (y < 0) return; FOR_ALL_SUBSIDIES(s) { if (s->IsAwarded()) { y--; if (y == 0) { this->HandleClick(s); return; } } } } void HandleClick(const Subsidy *s) { /* determine src coordinate for subsidy and try to scroll to it */ TileIndex xy; switch (s->src_type) { case ST_INDUSTRY: xy = Industry::Get(s->src)->location.tile; break; case ST_TOWN: xy = Town::Get(s->src)->xy; break; default: NOT_REACHED(); } if (_ctrl_pressed || !ScrollMainWindowToTile(xy)) { if (_ctrl_pressed) ShowExtraViewPortWindow(xy); /* otherwise determine dst coordinate for subsidy and scroll to it */ switch (s->dst_type) { case ST_INDUSTRY: xy = Industry::Get(s->dst)->location.tile; break; case ST_TOWN: xy = Town::Get(s->dst)->xy; break; default: NOT_REACHED(); } if (_ctrl_pressed) { ShowExtraViewPortWindow(xy); } else { ScrollMainWindowToTile(xy); } } } /** * Count the number of lines in this window. * @return the number of lines */ uint CountLines() { /* Count number of (non) awarded subsidies */ uint num_awarded = 0; uint num_not_awarded = 0; const Subsidy *s; FOR_ALL_SUBSIDIES(s) { if (!s->IsAwarded()) { num_not_awarded++; } else { num_awarded++; } } /* Count the 'none' lines */ if (num_awarded == 0) num_awarded = 1; if (num_not_awarded == 0) num_not_awarded = 1; /* Offered, accepted and an empty line before the accepted ones. */ return 3 + num_awarded + num_not_awarded; } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_SUL_PANEL) return; Dimension d = maxdim(GetStringBoundingBox(STR_SUBSIDIES_OFFERED_TITLE), GetStringBoundingBox(STR_SUBSIDIES_SUBSIDISED_TITLE)); resize->height = d.height; d.height *= 5; d.width += padding.width + WD_FRAMERECT_RIGHT + WD_FRAMERECT_LEFT; d.height += padding.height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(*size, d); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_SUL_PANEL) return; YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); int right = r.right - WD_FRAMERECT_RIGHT; int y = r.top + WD_FRAMERECT_TOP; int x = r.left + WD_FRAMERECT_LEFT; int pos = -this->vscroll->GetPosition(); const int cap = this->vscroll->GetCapacity(); /* Section for drawing the offered subsidies */ if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_OFFERED_TITLE); pos++; uint num = 0; const Subsidy *s; FOR_ALL_SUBSIDIES(s) { if (!s->IsAwarded()) { if (IsInsideMM(pos, 0, cap)) { /* Displays the two offered towns */ SetupSubsidyDecodeParam(s, true); SetDParam(7, _date - ymd.day + s->remaining * 32); DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_OFFERED_FROM_TO); } pos++; num++; } } if (num == 0) { if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_NONE); pos++; } /* Section for drawing the already granted subsidies */ pos++; if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_SUBSIDISED_TITLE); pos++; num = 0; FOR_ALL_SUBSIDIES(s) { if (s->IsAwarded()) { if (IsInsideMM(pos, 0, cap)) { SetupSubsidyDecodeParam(s, true); SetDParam(7, s->awarded); SetDParam(8, _date - ymd.day + s->remaining * 32); /* Displays the two connected stations */ DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_SUBSIDISED_FROM_TO); } pos++; num++; } } if (num == 0) { if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_NONE); pos++; } } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_SUL_PANEL); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->vscroll->SetCount(this->CountLines()); } }; static const NWidgetPart _nested_subsidies_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_SUBSIDIES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_BROWN, WID_SUL_PANEL), SetDataTip(0x0, STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER), SetResize(1, 1), SetScrollbar(WID_SUL_SCROLLBAR), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_SUL_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), EndContainer(), }; static const WindowDesc _subsidies_list_desc( WDP_AUTO, 500, 127, WC_SUBSIDIES_LIST, WC_NONE, 0, _nested_subsidies_list_widgets, lengthof(_nested_subsidies_list_widgets) ); void ShowSubsidiesList() { AllocateWindowDescFront(&_subsidies_list_desc, 0); } openttd-1.3.3/src/window_type.h0000644000000000000000000003402112246102611015174 0ustar rootroot/* $Id: window_type.h 24842 2012-12-23 21:06:37Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file window_type.h Types related to windows */ #ifndef WINDOW_TYPE_H #define WINDOW_TYPE_H /** %Window numbers. */ enum WindowNumberEnum { WN_GAME_OPTIONS_AI = 0, ///< AI settings. WN_GAME_OPTIONS_ABOUT, ///< About window. WN_GAME_OPTIONS_NEWGRF_STATE, ///< NewGRF settings. WN_GAME_OPTIONS_GAME_OPTIONS, ///< Game options. WN_GAME_OPTIONS_GAME_SETTINGS, ///< Game settings. WN_QUERY_STRING = 0, ///< Query string. WN_QUERY_STRING_SIGN, ///< Query string for signs. WN_CONFIRM_POPUP_QUERY = 0, ///< Query popup confirm. WN_CONFIRM_POPUP_QUERY_BOOTSTRAP, ///< Query popup confirm for bootstrap. WN_NETWORK_WINDOW_GAME = 0, ///< Network game window. WN_NETWORK_WINDOW_LOBBY, ///< Network lobby window. WN_NETWORK_WINDOW_CONTENT_LIST, ///< Network content list. WN_NETWORK_WINDOW_START, ///< Network start server. WN_NETWORK_STATUS_WINDOW_JOIN = 0, ///< Network join status. WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD, ///< Network content download status. }; /** %Window classes. */ enum WindowClass { WC_NONE, ///< No window, redirects to WC_MAIN_WINDOW. /** * Main window; %Window numbers: * - 0 = #MainWidgets */ WC_MAIN_WINDOW = WC_NONE, /** * Main toolbar (the long bar at the top); %Window numbers: * - 0 = #ToolbarNormalWidgets * - 0 = #ToolbarEditorWidgets */ WC_MAIN_TOOLBAR, /** * Statusbar (at the bottom of your screen); %Window numbers: * - 0 = #StatusbarWidgets */ WC_STATUS_BAR, /** * Build toolbar; %Window numbers: * - #TRANSPORT_RAIL = #RailToolbarWidgets * - #TRANSPORT_AIR = #AirportToolbarWidgets * - #TRANSPORT_WATER = #DockToolbarWidgets * - #TRANSPORT_ROAD = #RoadToolbarWidgets */ WC_BUILD_TOOLBAR, /** * Scenario build toolbar; %Window numbers: * - #TRANSPORT_WATER = #DockToolbarWidgets * - #TRANSPORT_ROAD = #RoadToolbarWidgets */ WC_SCEN_BUILD_TOOLBAR, /** * Build trees toolbar; %Window numbers: * - 0 = #BuildTreesWidgets */ WC_BUILD_TREES, /** * Transparency toolbar; %Window numbers: * - 0 = #TransparencyToolbarWidgets */ WC_TRANSPARENCY_TOOLBAR, /** * Build signal toolbar; %Window numbers: * - #TRANSPORT_RAIL = #BuildSignalWidgets */ WC_BUILD_SIGNAL, /** * Small map; %Window numbers: * - 0 = #SmallMapWidgets */ WC_SMALLMAP, /** * Error message; %Window numbers: * - 0 = #ErrorMessageWidgets */ WC_ERRMSG, /** * Tooltip window; %Window numbers: * - 0 = #ToolTipsWidgets */ WC_TOOLTIPS, /** * Query string window; %Window numbers: * - #WN_QUERY_STRING = #QueryStringWidgets * - #WN_QUERY_STRING_SIGN = #QueryEditSignWidgets */ WC_QUERY_STRING, /** * Popup with confirm question; %Window numbers: * - #WN_CONFIRM_POPUP_QUERY = #QueryWidgets * - #WN_CONFIRM_POPUP_QUERY_BOOTSTRAP = #BootstrapAskForDownloadWidgets */ WC_CONFIRM_POPUP_QUERY, /** * Popup with a set of buttons, designed to ask the user a question * from a GameScript. %Window numbers: * - uniqueid = #GoalQuestionWidgets */ WC_GOAL_QUESTION, /** * Saveload window; %Window numbers: * - 0 = #SaveLoadWidgets */ WC_SAVELOAD, /** * Land info window; %Window numbers: * - 0 = #LandInfoWidgets */ WC_LAND_INFO, /** * Drop down menu; %Window numbers: * - 0 = #DropdownMenuWidgets */ WC_DROPDOWN_MENU, /** * On Screen Keyboard; %Window numbers: * - 0 = #OnScreenKeyboardWidgets */ WC_OSK, /** * Set date; %Window numbers: * - #VehicleID = #SetDateWidgets */ WC_SET_DATE, /** * AI settings; %Window numbers: * - 0 = #AISettingsWidgets */ WC_AI_SETTINGS, /** * NewGRF parameters; %Window numbers: * - 0 = #NewGRFParametersWidgets */ WC_GRF_PARAMETERS, /** * textfile; %Window numbers: * - 0 = #TextfileWidgets */ WC_TEXTFILE, /** * Town authority; %Window numbers: * - #TownID = #TownAuthorityWidgets */ WC_TOWN_AUTHORITY, /** * Vehicle details; %Window numbers: * - #VehicleID = #VehicleDetailsWidgets */ WC_VEHICLE_DETAILS, /** * Vehicle refit; %Window numbers: * - #VehicleID = #VehicleRefitWidgets */ WC_VEHICLE_REFIT, /** * Vehicle orders; %Window numbers: * - #VehicleID = #OrderWidgets */ WC_VEHICLE_ORDERS, /** * Replace vehicle window; %Window numbers: * - #VehicleType = #ReplaceVehicleWidgets */ WC_REPLACE_VEHICLE, /** * Vehicle timetable; %Window numbers: * - #VehicleID = #VehicleTimetableWidgets */ WC_VEHICLE_TIMETABLE, /** * Company colour selection; %Window numbers: * - #CompanyID = #SelectCompanyLiveryWidgets */ WC_COMPANY_COLOUR, /** * Alter company face window; %Window numbers: * - #CompanyID = #SelectCompanyManagerFaceWidgets */ WC_COMPANY_MANAGER_FACE, /** * Select station (when joining stations); %Window numbers: * - 0 = #JoinStationWidgets */ WC_SELECT_STATION, /** * News window; %Window numbers: * - 0 = #NewsWidgets */ WC_NEWS_WINDOW, /** * Town directory; %Window numbers: * - 0 = #TownDirectoryWidgets */ WC_TOWN_DIRECTORY, /** * Subsidies list; %Window numbers: * - 0 = #SubsidyListWidgets */ WC_SUBSIDIES_LIST, /** * Industry directory; %Window numbers: * - 0 = #IndustryDirectoryWidgets */ WC_INDUSTRY_DIRECTORY, /** * News history list; %Window numbers: * - 0 = #MessageHistoryWidgets */ WC_MESSAGE_HISTORY, /** * Sign list; %Window numbers: * - 0 = #SignListWidgets */ WC_SIGN_LIST, /** * AI list; %Window numbers: * - 0 = #AIListWidgets */ WC_AI_LIST, /** * Goals list; %Window numbers: * - 0 ; #GoalListWidgets */ WC_GOALS_LIST, /** * Station list; %Window numbers: * - #CompanyID = #StationListWidgets */ WC_STATION_LIST, /** * Trains list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_TRAINS_LIST, /** * Road vehicle list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_ROADVEH_LIST, /** * Ships list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_SHIPS_LIST, /** * Aircraft list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_AIRCRAFT_LIST, /** * Town view; %Window numbers: * - #TownID = #TownViewWidgets */ WC_TOWN_VIEW, /** * Vehicle view; %Window numbers: * - #VehicleID = #VehicleViewWidgets */ WC_VEHICLE_VIEW, /** * Station view; %Window numbers: * - #StationID = #StationViewWidgets */ WC_STATION_VIEW, /** * Depot view; %Window numbers: * - #TileIndex = #DepotWidgets */ WC_VEHICLE_DEPOT, /** * Waypoint view; %Window numbers: * - #WaypointID = #WaypointWidgets */ WC_WAYPOINT_VIEW, /** * Industry view; %Window numbers: * - #IndustryID = #IndustryViewWidgets */ WC_INDUSTRY_VIEW, /** * Company view; %Window numbers: * - #CompanyID = #CompanyWidgets */ WC_COMPANY, /** * Build object; %Window numbers: * - 0 = #BuildObjectWidgets */ WC_BUILD_OBJECT, /** * Build vehicle; %Window numbers: * - #VehicleType = #BuildVehicleWidgets * - #TileIndex = #BuildVehicleWidgets */ WC_BUILD_VEHICLE, /** * Build bridge; %Window numbers: * - #TransportType = #BuildBridgeSelectionWidgets */ WC_BUILD_BRIDGE, /** * Build station; %Window numbers: * - #TRANSPORT_AIR = #AirportPickerWidgets * - #TRANSPORT_WATER = #DockToolbarWidgets * - #TRANSPORT_RAIL = #BuildRailStationWidgets */ WC_BUILD_STATION, /** * Build bus station; %Window numbers: * - #TRANSPORT_ROAD = #BuildRoadStationWidgets */ WC_BUS_STATION, /** * Build truck station; %Window numbers: * - #TRANSPORT_ROAD = #BuildRoadStationWidgets */ WC_TRUCK_STATION, /** * Build depot; %Window numbers: * - #TRANSPORT_WATER = #BuildDockDepotWidgets * - #TRANSPORT_RAIL = #BuildRailDepotWidgets * - #TRANSPORT_ROAD = #BuildRoadDepotWidgets */ WC_BUILD_DEPOT, /** * Build waypoint; %Window numbers: * - #TRANSPORT_RAIL = #BuildRailWaypointWidgets */ WC_BUILD_WAYPOINT, /** * Found a town; %Window numbers: * - 0 = #TownFoundingWidgets */ WC_FOUND_TOWN, /** * Build industry; %Window numbers: * - 0 = #DynamicPlaceIndustriesWidgets */ WC_BUILD_INDUSTRY, /** * Select game window; %Window numbers: * - 0 = #SelectGameIntroWidgets */ WC_SELECT_GAME, /** * Landscape generation (in Scenario Editor); %Window numbers: * - 0 = #TerraformToolbarWidgets * - 0 = #EditorTerraformToolbarWidgets */ WC_SCEN_LAND_GEN, /** * Generate landscape (newgame); %Window numbers: * - GLWM_SCENARIO = #CreateScenarioWidgets * - #GenenerateLandscapeWindowMode = #GenerateLandscapeWidgets */ WC_GENERATE_LANDSCAPE, /** * Progress report of landscape generation; %Window numbers: * - 0 = #GenerationProgressWidgets * - 1 = #ScanProgressWidgets */ WC_MODAL_PROGRESS, /** * Network window; %Window numbers: * - #WN_NETWORK_WINDOW_GAME = #NetworkGameWidgets * - #WN_NETWORK_WINDOW_LOBBY = #NetworkLobbyWidgets * - #WN_NETWORK_WINDOW_CONTENT_LIST = #NetworkContentListWidgets * - #WN_NETWORK_WINDOW_START = #NetworkStartServerWidgets */ WC_NETWORK_WINDOW, /** * Client list; %Window numbers: * - 0 = #ClientListWidgets */ WC_CLIENT_LIST, /** * Popup for the client list; %Window numbers: * - #ClientID = #ClientListPopupWidgets */ WC_CLIENT_LIST_POPUP, /** * Network status window; %Window numbers: * - #WN_NETWORK_STATUS_WINDOW_JOIN = #NetworkJoinStatusWidgets * - #WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD = #NetworkContentDownloadStatusWidgets */ WC_NETWORK_STATUS_WINDOW, /** * Chatbox; %Window numbers: * - #DestType = #NetWorkChatWidgets */ WC_SEND_NETWORK_MSG, /** * Company password query; %Window numbers: * - 0 = #NetworkCompanyPasswordWidgets */ WC_COMPANY_PASSWORD_WINDOW, /** * Industry cargoes chain; %Window numbers: * - 0 = #IndustryCargoesWidgets */ WC_INDUSTRY_CARGOES, /** * Legend for graphs; %Window numbers: * - 0 = #GraphLegendWidgets */ WC_GRAPH_LEGEND, /** * Finances of a company; %Window numbers: * - #CompanyID = #CompanyWidgets */ WC_FINANCES, /** * Income graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_INCOME_GRAPH, /** * Operating profit graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_OPERATING_PROFIT, /** * Delivered cargo graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_DELIVERED_CARGO, /** * Performance history graph; %Window numbers: * - 0 = #PerformanceHistoryGraphWidgets */ WC_PERFORMANCE_HISTORY, /** * Company value graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_COMPANY_VALUE, /** * Company league window; %Window numbers: * - 0 = #CompanyLeagueWidgets */ WC_COMPANY_LEAGUE, /** * Payment rates graph; %Window numbers: * - 0 = #CargoPaymentRatesWidgets */ WC_PAYMENT_RATES, /** * Performance detail window; %Window numbers: * - 0 = #PerformanceRatingDetailsWidgets */ WC_PERFORMANCE_DETAIL, /** * Company infrastructure overview; %Window numbers: * - #CompanyID = #CompanyInfrastructureWidgets */ WC_COMPANY_INFRASTRUCTURE, /** * Buyout company (merger); %Window numbers: * - #CompanyID = #BuyCompanyWidgets */ WC_BUY_COMPANY, /** * Engine preview window; %Window numbers: * - #EngineID = #EnginePreviewWidgets */ WC_ENGINE_PREVIEW, /** * Music window; %Window numbers: * - 0 = #MusicWidgets */ WC_MUSIC_WINDOW, /** * Music track selection; %Window numbers: * - 0 = MusicTrackSelectionWidgets */ WC_MUSIC_TRACK_SELECTION, /** * Game options window; %Window numbers: * - #WN_GAME_OPTIONS_AI = #AIConfigWidgets * - #WN_GAME_OPTIONS_ABOUT = #AboutWidgets * - #WN_GAME_OPTIONS_NEWGRF_STATE = #NewGRFStateWidgets * - #WN_GAME_OPTIONS_GAME_OPTIONS = #GameOptionsWidgets * - #WN_GAME_OPTIONS_GAME_SETTINGS = #GameSettingsWidgets */ WC_GAME_OPTIONS, /** * Custom currency; %Window numbers: * - 0 = #CustomCurrencyWidgets */ WC_CUSTOM_CURRENCY, /** * Cheat window; %Window numbers: * - 0 = #CheatWidgets */ WC_CHEATS, /** * Extra viewport; %Window numbers: * - Ascending value = #ExtraViewportWidgets */ WC_EXTRA_VIEW_PORT, /** * Console; %Window numbers: * - 0 = #ConsoleWidgets */ WC_CONSOLE, /** * Bootstrap; %Window numbers: * - 0 = #BootstrapBackgroundWidgets */ WC_BOOTSTRAP, /** * Highscore; %Window numbers: * - 0 = #HighscoreWidgets */ WC_HIGHSCORE, /** * Endscreen; %Window numbers: * - 0 = #HighscoreWidgets */ WC_ENDSCREEN, /** * AI debug window; %Window numbers: * - 0 = #AIDebugWidgets */ WC_AI_DEBUG, /** * NewGRF inspect (debug); %Window numbers: * - Packed value = #NewGRFInspectWidgets */ WC_NEWGRF_INSPECT, /** * Sprite aligner (debug); %Window numbers: * - 0 = #SpriteAlignerWidgets */ WC_SPRITE_ALIGNER, WC_INVALID = 0xFFFF, ///< Invalid window. }; /** Data value for #Window::OnInvalidateData() of windows with class #WC_GAME_OPTIONS. */ enum GameOptionsInvalidationData { GOID_DEFAULT = 0, GOID_NEWGRF_RESCANNED, ///< NewGRFs were just rescanned. GOID_NEWGRF_LIST_EDITED, ///< List of active NewGRFs is being edited. GOID_NEWGRF_PRESET_LOADED, ///< A NewGRF preset was picked. }; struct Window; /** Number to differentiate different windows of the same class */ typedef int32 WindowNumber; #endif /* WINDOW_TYPE_H */ openttd-1.3.3/src/tgp.h0000644000000000000000000000143012246102610013413 0ustar rootroot/* $Id: tgp.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tgp.h Functions for the Perlin noise enhanced map generator. */ #ifndef TGP_H #define TGP_H void GenerateTerrainPerlin(); #endif /* TGP_H */ openttd-1.3.3/src/timetable.h0000644000000000000000000000173212246102611014575 0ustar rootroot/* $Id: timetable.h 18809 2010-01-15 16:41:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file timetable.h Functions related to time tabling. */ #ifndef TIMETABLE_H #define TIMETABLE_H #include "date_type.h" #include "vehicle_type.h" void ShowTimetableWindow(const Vehicle *v); void UpdateVehicleTimetable(Vehicle *v, bool travelling); void SetTimetableParams(int param1, int param2, Ticks ticks); #endif /* TIMETABLE_H */ openttd-1.3.3/src/tile_cmd.h0000644000000000000000000002142612246102610014410 0ustar rootroot/* $Id: tile_cmd.h 23107 2011-11-04 11:36:10Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tile_cmd.h Generic 'commands' that can be performed on all tiles. */ #ifndef TILE_CMD_H #define TILE_CMD_H #include "command_type.h" #include "vehicle_type.h" #include "cargo_type.h" #include "track_type.h" #include "tile_map.h" /** The returned bits of VehicleEnterTile. */ enum VehicleEnterTileStatus { VETS_ENTERED_STATION = 1, ///< The vehicle entered a station VETS_ENTERED_WORMHOLE = 2, ///< The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel) VETS_CANNOT_ENTER = 3, ///< The vehicle cannot enter the tile /** * Shift the VehicleEnterTileStatus this many bits * to the right to get the station ID when * VETS_ENTERED_STATION is set */ VETS_STATION_ID_OFFSET = 8, VETS_STATION_MASK = 0xFFFF << VETS_STATION_ID_OFFSET, /** Bit sets of the above specified bits */ VETSB_CONTINUE = 0, ///< The vehicle can continue normally VETSB_ENTERED_STATION = 1 << VETS_ENTERED_STATION, ///< The vehicle entered a station VETSB_ENTERED_WORMHOLE = 1 << VETS_ENTERED_WORMHOLE, ///< The vehicle either entered a bridge, tunnel or depot tile (this includes the last tile of the bridge/tunnel) VETSB_CANNOT_ENTER = 1 << VETS_CANNOT_ENTER, ///< The vehicle cannot enter the tile }; DECLARE_ENUM_AS_BIT_SET(VehicleEnterTileStatus) /** Tile information, used while rendering the tile */ struct TileInfo { uint x; ///< X position of the tile in unit coordinates uint y; ///< Y position of the tile in unit coordinates Slope tileh; ///< Slope of the tile TileIndex tile; ///< Tile index int z; ///< Height }; /** Tile description for the 'land area information' tool */ struct TileDesc { StringID str; ///< Description of the tile Owner owner[4]; ///< Name of the owner(s) StringID owner_type[4]; ///< Type of each owner Date build_date; ///< Date of construction of tile contents StringID station_class; ///< Class of station StringID station_name; ///< Type of station within the class StringID airport_class; ///< Name of the airport class StringID airport_name; ///< Name of the airport StringID airport_tile_name; ///< Name of the airport tile const char *grf; ///< newGRF used for the tile contents uint64 dparam[2]; ///< Parameters of the \a str string uint16 rail_speed; ///< Speed limit of rail }; /** * Tile callback function signature for drawing a tile and its contents to the screen * @param ti Information about the tile to draw */ typedef void DrawTileProc(TileInfo *ti); typedef int GetSlopeZProc(TileIndex tile, uint x, uint y); typedef CommandCost ClearTileProc(TileIndex tile, DoCommandFlag flags); /** * Tile callback function signature for obtaining cargo acceptance of a tile * @param tile Tile queried for its accepted cargo * @param acceptance Storage destination of the cargo acceptance in 1/8 * @param always_accepted Bitmask of always accepted cargo types */ typedef void AddAcceptedCargoProc(TileIndex tile, CargoArray &acceptance, uint32 *always_accepted); /** * Tile callback function signature for obtaining a tile description * @param tile Tile being queried * @param td Storage pointer for returned tile description */ typedef void GetTileDescProc(TileIndex tile, TileDesc *td); /** * Tile callback function signature for getting the possible tracks * that can be taken on a given tile by a given transport. * * The return value contains the existing trackdirs and signal states. * * see track_func.h for usage of TrackStatus. * * @param tile the tile to get the track status from * @param mode the mode of transportation * @param sub_mode used to differentiate between different kinds within the mode * @return the track status information */ typedef TrackStatus GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side); /** * Tile callback function signature for obtaining the produced cargo of a tile. * @param tile Tile being queried * @param produced Destination array for produced cargo */ typedef void AddProducedCargoProc(TileIndex tile, CargoArray &produced); typedef bool ClickTileProc(TileIndex tile); typedef void AnimateTileProc(TileIndex tile); typedef void TileLoopProc(TileIndex tile); typedef void ChangeTileOwnerProc(TileIndex tile, Owner old_owner, Owner new_owner); /** @see VehicleEnterTileStatus to see what the return values mean */ typedef VehicleEnterTileStatus VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y); typedef Foundation GetFoundationProc(TileIndex tile, Slope tileh); /** * Tile callback function signature of the terraforming callback. * * The function is called when a tile is affected by a terraforming operation. * It has to check if terraforming of the tile is allowed and return extra terraform-cost that depend on the tiletype. * With DC_EXEC in \a flags it has to perform tiletype-specific actions (like clearing land etc., but not the terraforming itself). * * @note The terraforming has not yet taken place. So GetTileZ() and GetTileSlope() refer to the landscape before the terraforming operation. * * @param tile The involved tile. * @param flags Command flags passed to the terraform command (DC_EXEC, DC_QUERY_COST, etc.). * @param z_new TileZ after terraforming. * @param tileh_new Slope after terraforming. * @return Error code or extra cost for terraforming (like clearing land, building foundations, etc., but not the terraforming itself.) */ typedef CommandCost TerraformTileProc(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new); /** * Set of callback functions for performing tile operations of a given tile type. * @see TileType */ struct TileTypeProcs { DrawTileProc *draw_tile_proc; ///< Called to render the tile and its contents to the screen GetSlopeZProc *get_slope_z_proc; ClearTileProc *clear_tile_proc; AddAcceptedCargoProc *add_accepted_cargo_proc; ///< Adds accepted cargo of the tile to cargo array supplied as parameter GetTileDescProc *get_tile_desc_proc; ///< Get a description of a tile (for the 'land area information' tool) GetTileTrackStatusProc *get_tile_track_status_proc; ///< Get available tracks and status of a tile ClickTileProc *click_tile_proc; ///< Called when tile is clicked AnimateTileProc *animate_tile_proc; TileLoopProc *tile_loop_proc; ChangeTileOwnerProc *change_tile_owner_proc; AddProducedCargoProc *add_produced_cargo_proc; ///< Adds produced cargo of the tile to cargo array supplied as parameter VehicleEnterTileProc *vehicle_enter_tile_proc; ///< Called when a vehicle enters a tile GetFoundationProc *get_foundation_proc; TerraformTileProc *terraform_tile_proc; ///< Called when a terraforming operation is about to take place }; extern const TileTypeProcs * const _tile_type_procs[16]; TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side = INVALID_DIAGDIR); VehicleEnterTileStatus VehicleEnterTile(Vehicle *v, TileIndex tile, int x, int y); void ChangeTileOwner(TileIndex tile, Owner old_owner, Owner new_owner); void GetTileDesc(TileIndex tile, TileDesc *td); static inline void AddAcceptedCargo(TileIndex tile, CargoArray &acceptance, uint32 *always_accepted) { AddAcceptedCargoProc *proc = _tile_type_procs[GetTileType(tile)]->add_accepted_cargo_proc; if (proc == NULL) return; uint32 dummy = 0; // use dummy bitmask so there don't need to be several 'always_accepted != NULL' checks proc(tile, acceptance, always_accepted == NULL ? &dummy : always_accepted); } static inline void AddProducedCargo(TileIndex tile, CargoArray &produced) { AddProducedCargoProc *proc = _tile_type_procs[GetTileType(tile)]->add_produced_cargo_proc; if (proc == NULL) return; proc(tile, produced); } static inline void AnimateTile(TileIndex tile) { AnimateTileProc *proc = _tile_type_procs[GetTileType(tile)]->animate_tile_proc; assert(proc != NULL); proc(tile); } static inline bool ClickTile(TileIndex tile) { ClickTileProc *proc = _tile_type_procs[GetTileType(tile)]->click_tile_proc; if (proc == NULL) return false; return proc(tile); } #endif /* TILE_CMD_H */ openttd-1.3.3/src/stringfilter.cpp0000644000000000000000000000703412246102611015677 0ustar rootroot/* $Id: stringfilter.cpp 24632 2012-10-27 15:26:17Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file stringfilter.cpp Searching and filtering using a stringterm. */ #include "stdafx.h" #include "string_func.h" #include "strings_func.h" #include "stringfilter_type.h" #include "gfx_func.h" static const WChar STATE_WHITESPACE = ' '; static const WChar STATE_WORD = 'w'; static const WChar STATE_QUOTE1 = '\''; static const WChar STATE_QUOTE2 = '"'; /** * Set the term to filter on. * @param str Filter term */ void StringFilter::SetFilterTerm(const char *str) { this->word_index.Reset(); this->word_matches = 0; free(this->filter_buffer); assert(str != NULL); char *dest = (char *)malloc(strlen(str) + 1); this->filter_buffer = dest; WChar state = STATE_WHITESPACE; const char *pos = str; WordState *word = NULL; size_t len; for (;; pos += len) { WChar c; len = Utf8Decode(&c, pos); if (c == 0 || (state == STATE_WORD && IsWhitespace(c))) { /* Finish word */ if (word != NULL) { *(dest++) = '\0'; word = NULL; } state = STATE_WHITESPACE; if (c != 0) continue; else break; } if (state == STATE_WHITESPACE) { /* Skip whitespace */ if (IsWhitespace(c)) continue; state = STATE_WORD; } if (c == STATE_QUOTE1 || c == STATE_QUOTE2) { if (state == c) { /* Stop quoting */ state = STATE_WORD; continue; } else if (state == STATE_WORD) { /* Start quoting */ state = c; continue; } } /* Add to word */ if (word == NULL) { word = this->word_index.Append(); word->start = dest; word->match = false; } memcpy(dest, pos, len); dest += len; } } /** * Reset the matching state to process a new item. */ void StringFilter::ResetState() { this->word_matches = 0; const WordState *end = this->word_index.End(); for (WordState *it = this->word_index.Begin(); it != end; ++it) { it->match = false; } } /** * Pass another text line from the current item to the filter. * * You can call this multiple times for a single item, if the filter shall apply to multiple things. * Before processing the next item you have to call ResetState(). * * @param str Another line from the item. */ void StringFilter::AddLine(const char *str) { if (str == NULL) return; bool match_case = this->case_sensitive != NULL && *this->case_sensitive; const WordState *end = this->word_index.End(); for (WordState *it = this->word_index.Begin(); it != end; ++it) { if (!it->match) { if ((match_case ? strstr(str, it->start) : strcasestr(str, it->start)) != NULL) { it->match = true; this->word_matches++; } } } } /** * Pass another text line from the current item to the filter. * * You can call this multiple times for a single item, if the filter shall apply to multiple things. * Before processing the next item you have to call ResetState(). * * @param str Another line from the item. */ void StringFilter::AddLine(StringID str) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); AddLine(buffer); } openttd-1.3.3/src/signs_base.h0000644000000000000000000000261512246102611014745 0ustar rootroot/* $Id: signs_base.h 23104 2011-11-04 11:09:06Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file signs_base.h Base class for signs. */ #ifndef SIGNS_BASE_H #define SIGNS_BASE_H #include "signs_type.h" #include "viewport_type.h" #include "core/pool_type.hpp" #include "company_type.h" typedef Pool SignPool; extern SignPool _sign_pool; struct Sign : SignPool::PoolItem<&_sign_pool> { char *name; ViewportSign sign; int32 x; int32 y; int32 z; OwnerByte owner; // placed by this company. Anyone can delete them though. OWNER_NONE for gray signs from old games. Sign(Owner owner = INVALID_OWNER); ~Sign(); void UpdateVirtCoord(); }; #define FOR_ALL_SIGNS_FROM(var, start) FOR_ALL_ITEMS_FROM(Sign, sign_index, var, start) #define FOR_ALL_SIGNS(var) FOR_ALL_SIGNS_FROM(var, 0) #endif /* SIGNS_BASE_H */ openttd-1.3.3/src/settings_gui.h0000644000000000000000000000230312246102611015326 0ustar rootroot/* $Id: settings_gui.h 24311 2012-06-01 14:41:47Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file settings_gui.h Functions for setting GUIs. */ #ifndef SETTING_GUI_H #define SETTING_GUI_H #include "gfx_type.h" static const int SETTING_BUTTON_WIDTH = 20; ///< Width of setting buttons static const int SETTING_BUTTON_HEIGHT = 10; ///< Height of setting buttons void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clickable_left, bool clickable_right); void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable); void DrawBoolButton(int x, int y, bool state, bool clickable); #endif /* SETTING_GUI_H */ openttd-1.3.3/src/settings_type.h0000644000000000000000000011316712246102611015536 0ustar rootroot/* $Id: settings_type.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file settings_type.h Types related to global configuration settings. */ #ifndef SETTINGS_TYPE_H #define SETTINGS_TYPE_H #include "date_type.h" #include "town_type.h" #include "transport_type.h" #include "network/core/config.h" #include "company_type.h" #include "zoom_type.h" #include "openttd.h" /** Settings profiles and highscore tables. */ enum SettingsProfile { SP_BEGIN = 0, SP_EASY = SP_BEGIN, ///< Easy difficulty. SP_MEDIUM, ///< Medium difficulty. SP_HARD, ///< Hard difficulty. SP_END, ///< End of setting profiles. SP_CUSTOM = SP_END, ///< No profile, special "custom" highscore. SP_SAVED_HIGHSCORE_END, ///< End of saved highscore tables. SP_MULTIPLAYER = SP_SAVED_HIGHSCORE_END, ///< Special "multiplayer" highscore. Not saved, always specific to the current game. SP_HIGHSCORE_END, ///< End of highscore tables. }; /** Available industry map generation densities. */ enum IndustryDensity { ID_FUND_ONLY, ///< The game does not build industries. ID_MINIMAL, ///< Start with just the industries that must be present. ID_VERY_LOW, ///< Very few industries at game start. ID_LOW, ///< Few industries at game start. ID_NORMAL, ///< Normal amount of industries at game start. ID_HIGH, ///< Many industries at game start. ID_END, ///< Number of industry density settings. }; /** Settings related to the difficulty of the game */ struct DifficultySettings { byte max_no_competitors; ///< the number of competitors (AIs) byte number_towns; ///< the amount of towns byte industry_density; ///< The industry density. @see IndustryDensity uint32 max_loan; ///< the maximum initial loan byte initial_interest; ///< amount of interest (to pay over the loan) byte vehicle_costs; ///< amount of money spent on vehicle running cost byte competitor_speed; ///< the speed at which the AI builds byte vehicle_breakdowns; ///< likelihood of vehicles breaking down byte subsidy_multiplier; ///< amount of subsidy byte construction_cost; ///< how expensive is building byte terrain_type; ///< the mountainousness of the landscape byte quantity_sea_lakes; ///< the amount of seas/lakes bool economy; ///< how volatile is the economy bool line_reverse_mode; ///< reversing at stations or not bool disasters; ///< are disasters enabled byte town_council_tolerance; ///< minimum required town ratings to be allowed to demolish stuff }; /** Settings related to the GUI and other stuff that is not saved in the savegame. */ struct GUISettings { bool sg_full_load_any; ///< new full load calculation, any cargo must be full read from pre v93 savegames bool lost_vehicle_warn; ///< if a vehicle can't find its destination, show a warning uint8 order_review_system; ///< perform order reviews on vehicles bool vehicle_income_warn; ///< if a vehicle isn't generating income, show a warning bool show_finances; ///< show finances at end of year bool sg_new_nonstop; ///< ttdpatch compatible nonstop handling read from pre v93 savegames bool new_nonstop; ///< ttdpatch compatible nonstop handling uint8 stop_location; ///< what is the default stop location of trains? uint8 auto_scrolling; ///< scroll when moving mouse to the edge (see #ViewportAutoscrolling) byte errmsg_duration; ///< duration of error message byte hover_delay; ///< time required to activate a hover event, in seconds bool link_terraform_toolbar; ///< display terraform toolbar when displaying rail, road, water and airport toolbars uint8 smallmap_land_colour; ///< colour used for land and heightmap at the smallmap bool reverse_scroll; ///< right-Click-Scrolling scrolls in the opposite direction bool smooth_scroll; ///< smooth scroll viewports bool measure_tooltip; ///< show a permanent tooltip when dragging tools byte liveries; ///< options for displaying company liveries, 0=none, 1=self, 2=all bool prefer_teamchat; ///< choose the chat message target with , true=all clients, false=your team uint8 advanced_vehicle_list; ///< use the "advanced" vehicle list uint8 loading_indicators; ///< show loading indicators uint8 default_rail_type; ///< the default rail type for the rail GUI uint8 toolbar_pos; ///< position of toolbars, 0=left, 1=center, 2=right uint8 statusbar_pos; ///< position of statusbar, 0=left, 1=center, 2=right uint8 window_snap_radius; ///< windows snap at each other if closer than this uint8 window_soft_limit; ///< soft limit of maximum number of non-stickied non-vital windows (0 = no limit) ZoomLevelByte zoom_min; ///< minimum zoom out level ZoomLevelByte zoom_max; ///< maximum zoom out level bool disable_unsuitable_building; ///< disable infrastructure building when no suitable vehicles are available byte autosave; ///< how often should we do autosaves? bool threaded_saves; ///< should we do threaded saves? bool keep_all_autosave; ///< name the autosave in a different way bool autosave_on_exit; ///< save an autosave when you quit the game, but do not ask "Do you really want to quit?" uint8 date_format_in_default_names; ///< should the default savegame/screenshot name use long dates (31th Dec 2008), short dates (31-12-2008) or ISO dates (2008-12-31) byte max_num_autosaves; ///< controls how many autosavegames are made before the game starts to overwrite (names them 0 to max_num_autosaves - 1) bool population_in_label; ///< show the population of a town in his label? uint8 right_mouse_btn_emulation; ///< should we emulate right mouse clicking? uint8 scrollwheel_scrolling; ///< scrolling using the scroll wheel? uint8 scrollwheel_multiplier; ///< how much 'wheel' per incoming event from the OS? bool timetable_arrival_departure; ///< show arrivals and departures in vehicle timetables bool left_mouse_btn_scrolling; ///< left mouse button scroll bool pause_on_newgame; ///< whether to start new games paused or not bool enable_signal_gui; ///< show the signal GUI when the signal button is pressed Year coloured_news_year; ///< when does newspaper become coloured? bool timetable_in_ticks; ///< whether to show the timetable in ticks rather than days bool quick_goto; ///< Allow quick access to 'goto button' in vehicle orders window bool auto_euro; ///< automatically switch to euro in 2002 byte drag_signals_density; ///< many signals density bool drag_signals_fixed_distance; ///< keep fixed distance between signals when dragging Year semaphore_build_before; ///< build semaphore signals automatically before this year byte news_message_timeout; ///< how much longer than the news message "age" should we keep the message in the history bool show_track_reservation; ///< highlight reserved tracks. uint8 default_signal_type; ///< the signal type to build by default. uint8 cycle_signal_types; ///< what signal types to cycle with the build signal tool. byte station_numtracks; ///< the number of platforms to default on for rail stations byte station_platlength; ///< the platform length, in tiles, for rail stations bool station_dragdrop; ///< whether drag and drop is enabled for stations bool station_show_coverage; ///< whether to highlight coverage area bool persistent_buildingtools; ///< keep the building tools active after usage bool expenses_layout; ///< layout of expenses window uint32 last_newgrf_count; ///< the numbers of NewGRFs we found during the last scan byte missing_strings_threshold; ///< the number of missing strings before showing the warning uint8 graph_line_thickness; ///< the thickness of the lines in the various graph guis uint8 osk_activation; ///< Mouse gesture to trigger the OSK. uint16 console_backlog_timeout; ///< the minimum amount of time items should be in the console backlog before they will be removed in ~3 seconds granularity. uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed. #ifdef ENABLE_NETWORK uint16 network_chat_box_width; ///< width of the chat box in pixels uint8 network_chat_box_height; ///< height of the chat box in lines uint16 network_chat_timeout; ///< timeout of chat messages in seconds #endif uint8 developer; ///< print non-fatal warnings in console (>= 1), copy debug output to console (== 2) bool show_date_in_logs; ///< whether to show dates in console logs bool newgrf_developer_tools; ///< activate NewGRF developer tools and allow modifying NewGRFs in an existing game bool ai_developer_tools; ///< activate AI developer tools bool scenario_developer; ///< activate scenario developer: allow modifying NewGRFs in an existing game uint8 settings_restriction_mode; ///< selected restriction mode in adv. settings GUI. @see RestrictionMode bool newgrf_show_old_versions; ///< whether to show old versions in the NewGRF list uint8 newgrf_default_palette; ///< default palette to use for NewGRFs without action 14 palette information /** * Returns true when the user has sufficient privileges to edit newgrfs on a running game * @return whether the user has sufficient privileges to edit newgrfs in an existing game */ bool UserIsAllowedToChangeNewGRFs() const { return this->scenario_developer || this->newgrf_developer_tools; } }; /** Settings related to sound effects. */ struct SoundSettings { bool news_ticker; ///< Play a ticker sound when a news item is published. bool news_full; ///< Play sound effects associated to certain news types. bool new_year; ///< Play sound on new year, summarising the performance during the last year. bool confirm; ///< Play sound effect on succesful constructions or other actions. bool click_beep; ///< Beep on a random selection of buttons. bool disaster; ///< Play disaster and accident sounds. bool vehicle; ///< Play vehicle sound effects. bool ambient; ///< Play ambient, industry and town sounds. }; /** Settings related to music. */ struct MusicSettings { byte playlist; ///< The playlist (number) to play byte music_vol; ///< The requested music volume byte effect_vol; ///< The requested effects volume byte custom_1[33]; ///< The order of the first custom playlist byte custom_2[33]; ///< The order of the second custom playlist bool playing; ///< Whether music is playing bool shuffle; ///< Whether to shuffle the music }; /** Settings related to currency/unit systems. */ struct LocaleSettings { byte currency; ///< currency we currently use byte units; ///< unit system we show everything char *digit_group_separator; ///< thousand separator for non-currencies char *digit_group_separator_currency; ///< thousand separator for currencies char *digit_decimal_separator; ///< decimal separator }; /** Settings related to news */ struct NewsSettings { uint8 arrival_player; ///< NewsDisplay of vehicles arriving at new stations of current player uint8 arrival_other; ///< NewsDisplay of vehicles arriving at new stations of other players uint8 accident; ///< NewsDisplay of accidents that occur uint8 company_info; ///< NewsDisplay of general company information uint8 open; ///< NewsDisplay on new industry constructions uint8 close; ///< NewsDisplay about closing industries uint8 economy; ///< NewsDisplay on economical changes uint8 production_player; ///< NewsDisplay of production changes of industries affecting current player uint8 production_other; ///< NewsDisplay of production changes of industries affecting competitors uint8 production_nobody; ///< NewsDisplay of production changes of industries affecting no one uint8 advice; ///< NewsDisplay on advice affecting the player's vehicles uint8 new_vehicles; ///< NewsDisplay of new vehicles becoming available uint8 acceptance; ///< NewsDisplay on changes affecting the acceptance of cargo at stations uint8 subsidies; ///< NewsDisplay of changes on subsidies uint8 general; ///< NewsDisplay of other topics }; /** All settings related to the network. */ struct NetworkSettings { #ifdef ENABLE_NETWORK uint16 sync_freq; ///< how often do we check whether we are still in-sync uint8 frame_freq; ///< how often do we send commands to the clients uint16 commands_per_frame; ///< how many commands may be sent each frame_freq frames? uint16 max_commands_in_queue; ///< how many commands may there be in the incoming queue before dropping the connection? uint16 bytes_per_frame; ///< how many bytes may, over a long period, be received per frame? uint16 bytes_per_frame_burst; ///< how many bytes may, over a short period, be received? uint16 max_init_time; ///< maximum amount of time, in game ticks, a client may take to initiate joining uint16 max_join_time; ///< maximum amount of time, in game ticks, a client may take to sync up during joining uint16 max_download_time; ///< maximum amount of time, in game ticks, a client may take to download the map uint16 max_password_time; ///< maximum amount of time, in game ticks, a client may take to enter the password uint16 max_lag_time; ///< maximum amount of time, in game ticks, a client may be lagging behind the server bool pause_on_join; ///< pause the game when people join uint16 server_port; ///< port the server listens on uint16 server_admin_port; ///< port the server listens on for the admin network bool server_admin_chat; ///< allow private chat for the server to be distributed to the admin network char server_name[NETWORK_NAME_LENGTH]; ///< name of the server char server_password[NETWORK_PASSWORD_LENGTH]; ///< password for joining this server char rcon_password[NETWORK_PASSWORD_LENGTH]; ///< password for rconsole (server side) char admin_password[NETWORK_PASSWORD_LENGTH]; ///< password for the admin network bool server_advertise; ///< advertise the server to the masterserver uint8 lan_internet; ///< search on the LAN or internet for servers char client_name[NETWORK_CLIENT_NAME_LENGTH]; ///< name of the player (as client) char default_company_pass[NETWORK_PASSWORD_LENGTH]; ///< default password for new companies in encrypted form char connect_to_ip[NETWORK_HOSTNAME_LENGTH]; ///< default for the "Add server" query char network_id[NETWORK_SERVER_ID_LENGTH]; ///< network ID for servers bool autoclean_companies; ///< automatically remove companies that are not in use uint8 autoclean_unprotected; ///< remove passwordless companies after this many months uint8 autoclean_protected; ///< remove the password from passworded companies after this many months uint8 autoclean_novehicles; ///< remove companies with no vehicles after this many months uint8 max_companies; ///< maximum amount of companies uint8 max_clients; ///< maximum amount of clients uint8 max_spectators; ///< maximum amount of spectators Year restart_game_year; ///< year the server restarts uint8 min_active_clients; ///< minimum amount of active clients to unpause the game uint8 server_lang; ///< language of the server bool reload_cfg; ///< reload the config file before restarting char last_host[NETWORK_HOSTNAME_LENGTH]; ///< IP address of the last joined server uint16 last_port; ///< port of the last joined server bool no_http_content_downloads; ///< do not do content downloads over HTTP #else /* ENABLE_NETWORK */ #endif }; /** Settings related to the creation of games. */ struct GameCreationSettings { uint32 generation_seed; ///< noise seed for world generation Year starting_year; ///< starting date uint8 map_x; ///< X size of map uint8 map_y; ///< Y size of map byte land_generator; ///< the landscape generator byte oil_refinery_limit; ///< distance oil refineries allowed from map edge byte snow_line_height; ///< a number 0-15 that configured snow line height byte tgen_smoothness; ///< how rough is the terrain from 0-3 byte tree_placer; ///< the tree placer algorithm byte heightmap_rotation; ///< rotation director for the heightmap byte se_flat_world_height; ///< land height a flat world gets in SE byte town_name; ///< the town name generator used for town names byte landscape; ///< the landscape we're currently in byte water_borders; ///< bitset of the borders that are water uint16 custom_town_number; ///< manually entered number of towns byte variety; ///< variety level applied to TGP byte custom_sea_level; ///< manually entered percentage of water in the map byte min_river_length; ///< the minimum river length byte river_route_random; ///< the amount of randomicity for the route finding byte amount_of_rivers; ///< the amount of rivers }; /** Settings related to construction in-game */ struct ConstructionSettings { bool build_on_slopes; ///< allow building on slopes bool autoslope; ///< allow terraforming under things uint16 max_bridge_length; ///< maximum length of bridges uint16 max_tunnel_length; ///< maximum length of tunnels byte train_signal_side; ///< show signals on left / driving / right side bool extra_dynamite; ///< extra dynamite bool road_stop_on_town_road; ///< allow building of drive-through road stops on town owned roads bool road_stop_on_competitor_road; ///< allow building of drive-through road stops on roads owned by competitors uint8 raw_industry_construction; ///< type of (raw) industry construction (none, "normal", prospecting) uint8 industry_platform; ///< the amount of flat land around an industry bool freeform_edges; ///< allow terraforming the tiles at the map edges uint8 extra_tree_placement; ///< (dis)allow building extra trees in-game uint8 command_pause_level; ///< level/amount of commands that can't be executed while paused uint32 terraform_per_64k_frames; ///< how many tile heights may, over a long period, be terraformed per 65536 frames? uint16 terraform_frame_burst; ///< how many tile heights may, over a short period, be terraformed? uint32 clear_per_64k_frames; ///< how many tiles may, over a long period, be cleared per 65536 frames? uint16 clear_frame_burst; ///< how many tiles may, over a short period, be cleared? uint32 tree_per_64k_frames; ///< how many trees may, over a long period, be planted per 65536 frames? uint16 tree_frame_burst; ///< how many trees may, over a short period, be planted? }; /** Settings related to the AI. */ struct AISettings { bool ai_in_multiplayer; ///< so we allow AIs in multiplayer bool ai_disable_veh_train; ///< disable types for AI bool ai_disable_veh_roadveh; ///< disable types for AI bool ai_disable_veh_aircraft; ///< disable types for AI bool ai_disable_veh_ship; ///< disable types for AI }; /** Settings related to scripts. */ struct ScriptSettings { uint8 settings_profile; ///< difficulty profile to set initial settings of scripts, esp. random AIs uint32 script_max_opcode_till_suspend; ///< max opcode calls till scripts will suspend }; /** Settings related to the old pathfinder. */ struct OPFSettings { uint16 pf_maxlength; ///< maximum length when searching for a train route for new pathfinder byte pf_maxdepth; ///< maximum recursion depth when searching for a train route for new pathfinder }; /** Settings related to the new pathfinder. */ struct NPFSettings { /** * The maximum amount of search nodes a single NPF run should take. This * limit should make sure performance stays at acceptable levels at the cost * of not being perfect anymore. */ uint32 npf_max_search_nodes; uint32 maximum_go_to_depot_penalty; ///< What is the maximum penalty that may be endured for going to a depot uint32 npf_rail_firstred_penalty; ///< the penalty for when the first signal is red (and it is not an exit or combo signal) uint32 npf_rail_firstred_exit_penalty; ///< the penalty for when the first signal is red (and it is an exit or combo signal) uint32 npf_rail_lastred_penalty; ///< the penalty for when the last signal is red uint32 npf_rail_station_penalty; ///< the penalty for station tiles uint32 npf_rail_slope_penalty; ///< the penalty for sloping upwards uint32 npf_rail_curve_penalty; ///< the penalty for curves uint32 npf_rail_depot_reverse_penalty; ///< the penalty for reversing in depots uint32 npf_rail_pbs_cross_penalty; ///< the penalty for crossing a reserved rail track uint32 npf_rail_pbs_signal_back_penalty; ///< the penalty for passing a pbs signal from the backside uint32 npf_buoy_penalty; ///< the penalty for going over (through) a buoy uint32 npf_water_curve_penalty; ///< the penalty for curves uint32 npf_road_curve_penalty; ///< the penalty for curves uint32 npf_crossing_penalty; ///< the penalty for level crossings uint32 npf_road_drive_through_penalty; ///< the penalty for going through a drive-through road stop uint32 npf_road_dt_occupied_penalty; ///< the penalty multiplied by the fill percentage of a drive-through road stop uint32 npf_road_bay_occupied_penalty; ///< the penalty multiplied by the fill percentage of a road bay }; /** Settings related to the yet another pathfinder. */ struct YAPFSettings { bool disable_node_optimization; ///< whether to use exit-dir instead of trackdir in node key uint32 max_search_nodes; ///< stop path-finding when this number of nodes visited uint32 maximum_go_to_depot_penalty; ///< What is the maximum penalty that may be endured for going to a depot bool ship_use_yapf; ///< use YAPF for ships bool road_use_yapf; ///< use YAPF for road bool rail_use_yapf; ///< use YAPF for rail uint32 road_slope_penalty; ///< penalty for up-hill slope uint32 road_curve_penalty; ///< penalty for curves uint32 road_crossing_penalty; ///< penalty for level crossing uint32 road_stop_penalty; ///< penalty for going through a drive-through road stop uint32 road_stop_occupied_penalty; ///< penalty multiplied by the fill percentage of a drive-through road stop uint32 road_stop_bay_occupied_penalty; ///< penalty multiplied by the fill percentage of a road bay bool rail_firstred_twoway_eol; ///< treat first red two-way signal as dead end uint32 rail_firstred_penalty; ///< penalty for first red signal uint32 rail_firstred_exit_penalty; ///< penalty for first red exit signal uint32 rail_lastred_penalty; ///< penalty for last red signal uint32 rail_lastred_exit_penalty; ///< penalty for last red exit signal uint32 rail_station_penalty; ///< penalty for non-target station tile uint32 rail_slope_penalty; ///< penalty for up-hill slope uint32 rail_curve45_penalty; ///< penalty for curve uint32 rail_curve90_penalty; ///< penalty for 90-deg curve uint32 rail_depot_reverse_penalty; ///< penalty for reversing in the depot uint32 rail_crossing_penalty; ///< penalty for level crossing uint32 rail_look_ahead_max_signals; ///< max. number of signals taken into consideration in look-ahead load balancer int32 rail_look_ahead_signal_p0; ///< constant in polynomial penalty function int32 rail_look_ahead_signal_p1; ///< constant in polynomial penalty function int32 rail_look_ahead_signal_p2; ///< constant in polynomial penalty function uint32 rail_pbs_cross_penalty; ///< penalty for crossing a reserved tile uint32 rail_pbs_station_penalty; ///< penalty for crossing a reserved station tile uint32 rail_pbs_signal_back_penalty; ///< penalty for passing a pbs signal from the backside uint32 rail_doubleslip_penalty; ///< penalty for passing a double slip switch uint32 rail_longer_platform_penalty; ///< penalty for longer station platform than train uint32 rail_longer_platform_per_tile_penalty; ///< penalty for longer station platform than train (per tile) uint32 rail_shorter_platform_penalty; ///< penalty for shorter station platform than train uint32 rail_shorter_platform_per_tile_penalty; ///< penalty for shorter station platform than train (per tile) }; /** Settings related to all pathfinders. */ struct PathfinderSettings { uint8 pathfinder_for_trains; ///< the pathfinder to use for trains uint8 pathfinder_for_roadvehs; ///< the pathfinder to use for roadvehicles uint8 pathfinder_for_ships; ///< the pathfinder to use for ships bool new_pathfinding_all; ///< use the newest pathfinding algorithm for all bool roadveh_queue; ///< buggy road vehicle queueing bool forbid_90_deg; ///< forbid trains to make 90 deg turns bool reverse_at_signals; ///< whether to reverse at signals at all byte wait_oneway_signal; ///< waitingtime in days before a oneway signal byte wait_twoway_signal; ///< waitingtime in days before a twoway signal bool reserve_paths; ///< always reserve paths regardless of signal type. byte wait_for_pbs_path; ///< how long to wait for a path reservation. byte path_backoff_interval; ///< ticks between checks for a free path. OPFSettings opf; ///< pathfinder settings for the old pathfinder NPFSettings npf; ///< pathfinder settings for the new pathfinder YAPFSettings yapf; ///< pathfinder settings for the yet another pathfinder }; /** Settings related to orders. */ struct OrderSettings { bool improved_load; ///< improved loading algorithm bool gradual_loading; ///< load vehicles gradually bool selectgoods; ///< only send the goods to station if a train has been there bool no_servicing_if_no_breakdowns; ///< don't send vehicles to depot when breakdowns are disabled bool serviceathelipad; ///< service helicopters at helipads automatically (no need to send to depot) }; /** Settings related to vehicles. */ struct VehicleSettings { uint8 max_train_length; ///< maximum length for trains uint8 smoke_amount; ///< amount of smoke/sparks locomotives produce uint8 train_acceleration_model; ///< realistic acceleration for trains uint8 roadveh_acceleration_model; ///< realistic acceleration for road vehicles uint8 train_slope_steepness; ///< Steepness of hills for trains when using realistic acceleration uint8 roadveh_slope_steepness; ///< Steepness of hills for road vehicles when using realistic acceleration bool wagon_speed_limits; ///< enable wagon speed limits bool disable_elrails; ///< when true, the elrails are disabled UnitID max_trains; ///< max trains in game per company UnitID max_roadveh; ///< max trucks in game per company UnitID max_aircraft; ///< max planes in game per company UnitID max_ships; ///< max ships in game per company uint8 plane_speed; ///< divisor for speed of aircraft uint8 freight_trains; ///< value to multiply the weight of cargo by bool dynamic_engines; ///< enable dynamic allocation of engine data bool never_expire_vehicles; ///< never expire vehicles byte extend_vehicle_life; ///< extend vehicle life by this many years byte road_side; ///< the side of the road vehicles drive on uint8 plane_crashes; ///< number of plane crashes, 0 = none, 1 = reduced, 2 = normal }; /** Settings related to the economy. */ struct EconomySettings { bool inflation; ///< disable inflation bool bribe; ///< enable bribing the local authority bool smooth_economy; ///< smooth economy bool allow_shares; ///< allow the buying/selling of shares uint8 feeder_payment_share; ///< percentage of leg payment to virtually pay in feeder systems byte dist_local_authority; ///< distance for town local authority, default 20 bool exclusive_rights; ///< allow buying exclusive rights bool fund_buildings; ///< allow funding new buildings bool fund_roads; ///< allow funding local road reconstruction bool give_money; ///< allow giving other companies money bool mod_road_rebuild; ///< roadworks remove unnecessary RoadBits bool multiple_industry_per_town; ///< allow many industries of the same type per town uint8 town_growth_rate; ///< town growth rate uint8 larger_towns; ///< the number of cities to build. These start off larger and grow twice as fast uint8 initial_city_size; ///< multiplier for the initial size of the cities compared to towns TownLayoutByte town_layout; ///< select town layout, @see TownLayout bool allow_town_roads; ///< towns are allowed to build roads (always allowed when generating world / in SE) TownFoundingByte found_town; ///< town founding, @see TownFounding bool station_noise_level; ///< build new airports when the town noise level is still within accepted limits uint16 town_noise_population[3]; ///< population to base decision on noise evaluation (@see town_council_tolerance) bool allow_town_level_crossings; ///< towns are allowed to build level crossings bool infrastructure_maintenance; ///< enable monthly maintenance fee for owner infrastructure }; /** Settings related to stations. */ struct StationSettings { bool modified_catchment; ///< different-size catchment areas bool adjacent_stations; ///< allow stations to be built directly adjacent to other stations bool distant_join_stations; ///< allow to join non-adjacent stations bool never_expire_airports; ///< never expire airports byte station_spread; ///< amount a station may spread }; /** Default settings for vehicles. */ struct VehicleDefaultSettings { bool servint_ispercent; ///< service intervals are in percents uint16 servint_trains; ///< service interval for trains uint16 servint_roadveh; ///< service interval for road vehicles uint16 servint_aircraft; ///< service interval for aircraft uint16 servint_ships; ///< service interval for ships }; /** Settings that can be set per company. */ struct CompanySettings { bool engine_renew; ///< is autorenew enabled int16 engine_renew_months; ///< months before/after the maximum vehicle age a vehicle should be renewed uint32 engine_renew_money; ///< minimum amount of money before autorenew is used bool renew_keep_length; ///< sell some wagons if after autoreplace the train is longer than before VehicleDefaultSettings vehicle; ///< default settings for vehicles }; /** All settings together for the game. */ struct GameSettings { DifficultySettings difficulty; ///< settings related to the difficulty GameCreationSettings game_creation; ///< settings used during the creation of a game (map) ConstructionSettings construction; ///< construction of things in-game AISettings ai; ///< what may the AI do? ScriptSettings script; ///< settings for scripts class AIConfig *ai_config[MAX_COMPANIES]; ///< settings per company class GameConfig *game_config; ///< settings for gamescript PathfinderSettings pf; ///< settings for all pathfinders OrderSettings order; ///< settings related to orders VehicleSettings vehicle; ///< options for vehicles EconomySettings economy; ///< settings to change the economy StationSettings station; ///< settings related to station management LocaleSettings locale; ///< settings related to used currency/unit system in the current game }; /** All settings that are only important for the local client. */ struct ClientSettings { GUISettings gui; ///< settings related to the GUI NetworkSettings network; ///< settings related to the network CompanySettings company; ///< default values for per-company settings SoundSettings sound; ///< sound effect settings MusicSettings music; ///< settings related to music/sound NewsSettings news_display; ///< news display settings. }; /** The current settings for this game. */ extern ClientSettings _settings_client; /** The current settings for this game. */ extern GameSettings _settings_game; /** The settings values that are used for new games and/or modified in config file. */ extern GameSettings _settings_newgame; /** Old vehicle settings, which were game settings before, and are company settings now. (Needed for savegame conversion) */ extern VehicleDefaultSettings _old_vds; /** * Get the settings-object applicable for the current situation: the newgame settings * when we're in the main menu and otherwise the settings of the current game. */ static inline GameSettings &GetGameSettings() { return (_game_mode == GM_MENU) ? _settings_newgame : _settings_game; } #endif /* SETTINGS_TYPE_H */ openttd-1.3.3/src/airport_gui.cpp0000644000000000000000000005064612246102611015516 0ustar rootroot/* $Id: airport_gui.cpp 26025 2013-11-17 13:53:33Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airport_gui.cpp The GUI for airports. */ #include "stdafx.h" #include "window_gui.h" #include "station_gui.h" #include "terraform_gui.h" #include "sound_func.h" #include "window_func.h" #include "strings_func.h" #include "viewport_func.h" #include "company_func.h" #include "tilehighlight_func.h" #include "company_base.h" #include "station_type.h" #include "newgrf_airport.h" #include "newgrf_callbacks.h" #include "widgets/dropdown_type.h" #include "core/geometry_func.hpp" #include "hotkeys.h" #include "vehicle_func.h" #include "widgets/airport_widget.h" static AirportClassID _selected_airport_class; ///< the currently visible airport class static int _selected_airport_index; ///< the index of the selected airport in the current class or -1 static byte _selected_airport_layout; ///< selected airport layout number. static void ShowBuildAirportPicker(Window *parent); SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout); void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } /** * Place an airport. * @param tile Position to put the new airport. */ static void PlaceAirport(TileIndex tile) { if (_selected_airport_index == -1) return; uint32 p2 = _ctrl_pressed; SB(p2, 16, 16, INVALID_STATION); // no station to join uint32 p1 = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index)->GetIndex(); p1 |= _selected_airport_layout << 8; CommandContainer cmdcont = { tile, p1, p2, CMD_BUILD_AIRPORT | CMD_MSG(STR_ERROR_CAN_T_BUILD_AIRPORT_HERE), CcBuildAirport, "" }; ShowSelectStationIfNeeded(cmdcont, TileArea(tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE)); } /** Airport build toolbar window handler. */ struct BuildAirToolbarWindow : Window { int last_user_action; // Last started user action. BuildAirToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this); this->last_user_action = WIDGET_LIST_END; } ~BuildAirToolbarWindow() { if (_settings_client.gui.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0, false); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_AT_AIRPORT: if (HandlePlacePushButton(this, WID_AT_AIRPORT, SPR_CURSOR_AIRPORT, HT_RECT)) { ShowBuildAirportPicker(this); this->last_user_action = widget; } break; case WID_AT_DEMOLISH: HandlePlacePushButton(this, WID_AT_DEMOLISH, ANIMCURSOR_DEMOLISH, HT_RECT | HT_DIAGONAL); this->last_user_action = widget; break; default: break; } } virtual EventState OnKeyPress(WChar key, uint16 keycode) { int num = CheckHotkeyMatch(airtoolbar_hotkeys, keycode, this); if (num == -1) return ES_NOT_HANDLED; this->OnClick(Point(), num, 1); return ES_HANDLED; } virtual void OnPlaceObject(Point pt, TileIndex tile) { switch (this->last_user_action) { case WID_AT_AIRPORT: PlaceAirport(tile); break; case WID_AT_DEMOLISH: PlaceProc_DemolishArea(tile); break; default: NOT_REACHED(); } } virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) { VpSelectTilesWithMethod(pt.x, pt.y, select_method); } virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) { if (pt.x != -1 && select_proc == DDSP_DEMOLISH_AREA) { GUIPlaceProcDragXY(select_proc, start_tile, end_tile); } } virtual void OnPlaceObjectAbort() { this->RaiseButtons(); DeleteWindowById(WC_BUILD_STATION, TRANSPORT_AIR); DeleteWindowById(WC_SELECT_STATION, 0); } static Hotkey airtoolbar_hotkeys[]; }; Hotkey BuildAirToolbarWindow::airtoolbar_hotkeys[] = { Hotkey('1', "airport", WID_AT_AIRPORT), Hotkey('2', "demolish", WID_AT_DEMOLISH), HOTKEY_LIST_END(BuildAirToolbarWindow) }; Hotkey *_airtoolbar_hotkeys = BuildAirToolbarWindow::airtoolbar_hotkeys; static const NWidgetPart _nested_air_toolbar_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_TOOLBAR_AIRCRAFT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_AT_AIRPORT), SetFill(0, 1), SetMinimalSize(42, 22), SetDataTip(SPR_IMG_AIRPORT, STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetMinimalSize(4, 22), SetFill(1, 1), EndContainer(), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_AT_DEMOLISH), SetFill(0, 1), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_DYNAMITE, STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC), EndContainer(), }; static const WindowDesc _air_toolbar_desc( WDP_ALIGN_TOOLBAR, 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, _nested_air_toolbar_widgets, lengthof(_nested_air_toolbar_widgets) ); /** * Open the build airport toolbar window * * If the terraform toolbar is linked to the toolbar, that window is also opened. * * @return newly opened airport toolbar, or NULL if the toolbar could not be opened. */ Window *ShowBuildAirToolbar() { if (!Company::IsValidID(_local_company)) return NULL; DeleteWindowByClass(WC_BUILD_TOOLBAR); return AllocateWindowDescFront(&_air_toolbar_desc, TRANSPORT_AIR); } EventState AirportToolbarGlobalHotkeys(WChar key, uint16 keycode) { if (!CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) return ES_NOT_HANDLED; int num = CheckHotkeyMatch(_airtoolbar_hotkeys, keycode, NULL, true); if (num == -1) return ES_NOT_HANDLED; Window *w = ShowBuildAirToolbar(); if (w == NULL) return ES_NOT_HANDLED; return w->OnKeyPress(key, keycode); } class BuildAirportWindow : public PickerWindowBase { SpriteID preview_sprite; ///< Cached airport preview sprite. int line_height; Scrollbar *vscroll; /** Build a dropdown list of available airport classes */ static DropDownList *BuildAirportClassDropDown() { DropDownList *list = new DropDownList(); for (uint i = 0; i < AirportClass::GetClassCount(); i++) { list->push_back(new DropDownListStringItem(AirportClass::Get((AirportClassID)i)->name, i, false)); } return list; } public: BuildAirportWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(parent) { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_AP_SCROLLBAR); this->vscroll->SetCapacity(5); this->vscroll->SetPosition(0); this->FinishInitNested(desc, TRANSPORT_AIR); this->SetWidgetLoweredState(WID_AP_BTN_DONTHILIGHT, !_settings_client.gui.station_show_coverage); this->SetWidgetLoweredState(WID_AP_BTN_DOHILIGHT, _settings_client.gui.station_show_coverage); this->OnInvalidateData(); this->vscroll->SetCount(AirportClass::Get(_selected_airport_class)->GetSpecCount()); this->SelectFirstAvailableAirport(true); } virtual ~BuildAirportWindow() { DeleteWindowById(WC_SELECT_STATION, 0); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_AP_CLASS_DROPDOWN: SetDParam(0, AirportClass::Get(_selected_airport_class)->name); break; case WID_AP_LAYOUT_NUM: SetDParam(0, STR_EMPTY); if (_selected_airport_index != -1) { const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index); StringID string = GetAirportTextCallback(as, _selected_airport_layout, CBID_AIRPORT_LAYOUT_NAME); if (string != STR_UNDEFINED) { SetDParam(0, string); } else if (as->num_table > 1) { SetDParam(0, STR_STATION_BUILD_AIRPORT_LAYOUT_NAME); SetDParam(1, _selected_airport_layout + 1); } } break; default: break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_AP_CLASS_DROPDOWN: { Dimension d = {0, 0}; for (uint i = 0; i < AirportClass::GetClassCount(); i++) { SetDParam(0, AirportClass::Get((AirportClassID)i)->name); d = maxdim(d, GetStringBoundingBox(STR_BLACK_STRING)); } d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } case WID_AP_AIRPORT_LIST: { for (int i = 0; i < NUM_AIRPORTS; i++) { const AirportSpec *as = AirportSpec::Get(i); if (!as->enabled) continue; size->width = max(size->width, GetStringBoundingBox(as->name).width); } this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; size->height = this->vscroll->GetCapacity() * this->line_height; break; } case WID_AP_AIRPORT_SPRITE: for (int i = 0; i < NUM_AIRPORTS; i++) { const AirportSpec *as = AirportSpec::Get(i); if (!as->enabled) continue; for (byte layout = 0; layout < as->num_table; layout++) { SpriteID sprite = GetCustomAirportSprite(as, layout); if (sprite != 0) { Dimension d = GetSpriteSize(sprite); d.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(d, *size); } } } break; case WID_AP_EXTRA_TEXT: for (int i = NEW_AIRPORT_OFFSET; i < NUM_AIRPORTS; i++) { const AirportSpec *as = AirportSpec::Get(i); if (!as->enabled) continue; for (byte layout = 0; layout < as->num_table; layout++) { StringID string = GetAirportTextCallback(as, layout, CBID_AIRPORT_ADDITIONAL_TEXT); if (string == STR_UNDEFINED) continue; /* STR_BLACK_STRING is used to start the string with {BLACK} */ SetDParam(0, string); Dimension d = GetStringMultiLineBoundingBox(STR_BLACK_STRING, *size); *size = maxdim(d, *size); } } break; default: break; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_AP_AIRPORT_LIST: { int y = r.top; AirportClass *apclass = AirportClass::Get(_selected_airport_class); for (uint i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < apclass->GetSpecCount(); i++) { const AirportSpec *as = apclass->GetSpec(i); if (!as->IsAvailable()) { GfxFillRect(r.left + 1, y + 1, r.right - 1, y + this->line_height - 2, PC_BLACK, FILLRECT_CHECKER); } DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, as->name, ((int)i == _selected_airport_index) ? TC_WHITE : TC_BLACK); y += this->line_height; } break; } case WID_AP_AIRPORT_SPRITE: if (this->preview_sprite != 0) { Dimension d = GetSpriteSize(this->preview_sprite); DrawSprite(this->preview_sprite, COMPANY_SPRITE_COLOUR(_local_company), (r.left + r.right - d.width) / 2, (r.top + r.bottom - d.height) / 2); } break; case WID_AP_EXTRA_TEXT: if (_selected_airport_index != -1) { const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index); StringID string = GetAirportTextCallback(as, _selected_airport_layout, CBID_AIRPORT_ADDITIONAL_TEXT); if (string != STR_UNDEFINED) { SetDParam(0, string); DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_BLACK_STRING); } } break; } } virtual void OnPaint() { this->DrawWidgets(); uint16 top = this->GetWidget(WID_AP_BTN_DOHILIGHT)->pos_y + this->GetWidget(WID_AP_BTN_DOHILIGHT)->current_y + WD_PAR_VSEP_NORMAL; NWidgetBase *panel_nwi = this->GetWidget(WID_AP_BOTTOMPANEL); int right = panel_nwi->pos_x + panel_nwi->current_x; int bottom = panel_nwi->pos_y + panel_nwi->current_y; if (_selected_airport_index != -1) { const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index); int rad = _settings_game.station.modified_catchment ? as->catchment : (uint)CA_UNMODIFIED; /* only show the station (airport) noise, if the noise option is activated */ if (_settings_game.economy.station_noise_level) { /* show the noise of the selected airport */ SetDParam(0, as->noise_level); DrawString(panel_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, STR_STATION_BUILD_NOISE); top += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; } /* strings such as 'Size' and 'Coverage Area' */ top = DrawStationCoverageAreaText(panel_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, SCT_ALL, rad, false) + WD_PAR_VSEP_NORMAL; top = DrawStationCoverageAreaText(panel_nwi->pos_x + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, SCT_ALL, rad, true) + WD_PAR_VSEP_NORMAL; } /* Resize background if the window is too small. * Never make the window smaller to avoid oscillating if the size change affects the acceptance. * (This is the case, if making the window bigger moves the mouse into the window.) */ if (top > bottom) { ResizeWindow(this, 0, top - bottom); } } void SelectOtherAirport(int airport_index) { _selected_airport_index = airport_index; _selected_airport_layout = 0; this->UpdateSelectSize(); this->SetDirty(); } void UpdateSelectSize() { if (_selected_airport_index == -1) { SetTileSelectSize(1, 1); this->DisableWidget(WID_AP_LAYOUT_DECREASE); this->DisableWidget(WID_AP_LAYOUT_INCREASE); } else { const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index); int w = as->size_x; int h = as->size_y; Direction rotation = as->rotation[_selected_airport_layout]; if (rotation == DIR_E || rotation == DIR_W) Swap(w, h); SetTileSelectSize(w, h); this->preview_sprite = GetCustomAirportSprite(as, _selected_airport_layout); this->SetWidgetDisabledState(WID_AP_LAYOUT_DECREASE, _selected_airport_layout == 0); this->SetWidgetDisabledState(WID_AP_LAYOUT_INCREASE, _selected_airport_layout + 1 >= as->num_table); int rad = _settings_game.station.modified_catchment ? as->catchment : (uint)CA_UNMODIFIED; if (_settings_client.gui.station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_AP_CLASS_DROPDOWN: ShowDropDownList(this, BuildAirportClassDropDown(), _selected_airport_class, WID_AP_CLASS_DROPDOWN); break; case WID_AP_AIRPORT_LIST: { int num_clicked = this->vscroll->GetPosition() + (pt.y - this->nested_array[widget]->pos_y) / this->line_height; if (num_clicked >= this->vscroll->GetCount()) break; const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(num_clicked); if (as->IsAvailable()) this->SelectOtherAirport(num_clicked); break; } case WID_AP_BTN_DONTHILIGHT: case WID_AP_BTN_DOHILIGHT: _settings_client.gui.station_show_coverage = (widget != WID_AP_BTN_DONTHILIGHT); this->SetWidgetLoweredState(WID_AP_BTN_DONTHILIGHT, !_settings_client.gui.station_show_coverage); this->SetWidgetLoweredState(WID_AP_BTN_DOHILIGHT, _settings_client.gui.station_show_coverage); this->SetDirty(); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); this->UpdateSelectSize(); break; case WID_AP_LAYOUT_DECREASE: _selected_airport_layout--; this->UpdateSelectSize(); this->SetDirty(); break; case WID_AP_LAYOUT_INCREASE: _selected_airport_layout++; this->UpdateSelectSize(); this->SetDirty(); break; } } /** * Select the first available airport. * @param change_class If true, change the class if no airport in the current * class is available. */ void SelectFirstAvailableAirport(bool change_class) { /* First try to select an airport in the selected class. */ AirportClass *sel_apclass = AirportClass::Get(_selected_airport_class); for (uint i = 0; i < sel_apclass->GetSpecCount(); i++) { const AirportSpec *as = sel_apclass->GetSpec(i); if (as->IsAvailable()) { this->SelectOtherAirport(i); return; } } if (change_class) { /* If that fails, select the first available airport * from a random class. */ for (AirportClassID j = APC_BEGIN; j < APC_MAX; j++) { AirportClass *apclass = AirportClass::Get(j); for (uint i = 0; i < apclass->GetSpecCount(); i++) { const AirportSpec *as = apclass->GetSpec(i); if (as->IsAvailable()) { _selected_airport_class = j; this->SelectOtherAirport(i); return; } } } } /* If all airports are unavailable, select nothing. */ this->SelectOtherAirport(-1); } virtual void OnDropdownSelect(int widget, int index) { assert(widget == WID_AP_CLASS_DROPDOWN); _selected_airport_class = (AirportClassID)index; this->vscroll->SetCount(AirportClass::Get(_selected_airport_class)->GetSpecCount()); this->SelectFirstAvailableAirport(false); } virtual void OnTick() { CheckRedrawStationCoverage(this); } }; static const NWidgetPart _nested_build_airport_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_AIRPORT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 0), SetPIP(2, 0, 2), NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_AIRPORT_CLASS_LABEL, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_AP_CLASS_DROPDOWN), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_STATION_BUILD_AIRPORT_TOOLTIP), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_AP_AIRPORT_LIST), SetFill(1, 0), SetDataTip(0x501, STR_STATION_BUILD_AIRPORT_TOOLTIP), SetScrollbar(WID_AP_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_AP_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_DECREASE), SetMinimalSize(12, 0), SetDataTip(AWV_DECREASE, STR_NULL), NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_NULL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL), EndContainer(), NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_AIRPORT_SPRITE), SetFill(1, 0), NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_EXTRA_TEXT), SetFill(1, 0), SetMinimalSize(150, 0), EndContainer(), /* Bottom panel. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_AP_BOTTOMPANEL), SetPIP(2, 2, 2), NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetMinimalSize(14, 0), SetFill(1, 0), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AP_BTN_DONTHILIGHT), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AP_BTN_DOHILIGHT), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(14, 0), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetResize(0, 1), SetFill(1, 0), EndContainer(), }; static const WindowDesc _build_airport_desc( WDP_AUTO, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_airport_widgets, lengthof(_nested_build_airport_widgets) ); static void ShowBuildAirportPicker(Window *parent) { new BuildAirportWindow(&_build_airport_desc, parent); } void InitializeAirportGui() { _selected_airport_class = APC_BEGIN; _selected_airport_index = -1; } openttd-1.3.3/src/tree_gui.cpp0000644000000000000000000002341612246102611014770 0ustar rootroot/* $Id: tree_gui.cpp 24846 2012-12-23 21:09:09Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tree_gui.cpp GUIs for building trees. */ #include "stdafx.h" #include "window_gui.h" #include "gfx_func.h" #include "tilehighlight_func.h" #include "company_func.h" #include "company_base.h" #include "command_func.h" #include "sound_func.h" #include "tree_map.h" #include "widgets/tree_widget.h" #include "table/sprites.h" #include "table/strings.h" #include "table/tree_land.h" void PlaceTreesRandomly(); /** Tree Sprites with their palettes */ const PalSpriteID tree_sprites[] = { { 1621, PAL_NONE }, { 1587, PAL_NONE }, { 1656, PAL_NONE }, { 1579, PAL_NONE }, { 1607, PAL_NONE }, { 1593, PAL_NONE }, { 1614, PAL_NONE }, { 1586, PAL_NONE }, { 1663, PAL_NONE }, { 1677, PAL_NONE }, { 1691, PAL_NONE }, { 1705, PAL_NONE }, { 1711, PAL_NONE }, { 1746, PAL_NONE }, { 1753, PAL_NONE }, { 1732, PAL_NONE }, { 1739, PAL_NONE }, { 1718, PAL_NONE }, { 1725, PAL_NONE }, { 1760, PAL_NONE }, { 1838, PAL_NONE }, { 1844, PAL_NONE }, { 1866, PAL_NONE }, { 1871, PAL_NONE }, { 1899, PAL_NONE }, { 1935, PAL_NONE }, { 1928, PAL_NONE }, { 1915, PAL_NONE }, { 1887, PAL_NONE }, { 1908, PAL_NONE }, { 1824, PAL_NONE }, { 1943, PAL_NONE }, { 1950, PAL_NONE }, { 1957, PALETTE_TO_GREEN }, { 1964, PALETTE_TO_RED }, { 1971, PAL_NONE }, { 1978, PAL_NONE }, { 1985, PALETTE_TO_RED, }, { 1992, PALETTE_TO_PALE_GREEN }, { 1999, PALETTE_TO_YELLOW }, { 2006, PALETTE_TO_RED } }; /** * The build trees window. */ class BuildTreesWindow : public Window { uint16 base; ///< Base tree number used for drawing the window. uint16 count; ///< Number of different trees available. TreeType tree_to_plant; ///< Tree number to plant, \c TREE_INVALID for a random tree. public: BuildTreesWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); ResetObjectToPlace(); } /** * Calculate the maximum size of all tree sprites * @return Dimension of the largest tree sprite */ Dimension GetMaxTreeSpriteSize() { Dimension size, this_size; Point offset; /* Avoid to use it uninitialized */ size.width = 32; // default width - 2 size.height = 39; // default height - 7 offset.x = 0; offset.y = 0; for (int i = this->base; i < this->base + this->count; i++) { if (i >= (int)lengthof(tree_sprites)) return size; this_size = GetSpriteSize(tree_sprites[i].sprite, &offset); size.width = max(size.width, 2 * max(this_size.width, -offset.x)); size.height = max(size.height, max(this_size.height, -offset.y)); } return size; } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget >= WID_BT_TYPE_11 && widget <= WID_BT_TYPE_34) { Dimension d = GetMaxTreeSpriteSize(); /* Allow some pixels extra width and height */ size->width = d.width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height = d.height + WD_FRAMERECT_RIGHT + WD_FRAMERECT_BOTTOM + 7; // we need some more space return; } if (widget != WID_BT_MANY_RANDOM) return; if (_game_mode != GM_EDITOR) { size->width = 0; size->height = 0; } } virtual void OnPaint() { this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget < WID_BT_TYPE_11 || widget > WID_BT_TYPE_34 || widget - WID_BT_TYPE_11 >= this->count) return; int i = this->base + widget - WID_BT_TYPE_11; /* Trees "grow" in the centre on the bottom line of the buttons */ DrawSprite(tree_sprites[i].sprite, tree_sprites[i].pal, (r.left + r.right) / 2 + WD_FRAMERECT_LEFT, r.bottom - 7); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_BT_TYPE_11: case WID_BT_TYPE_12: case WID_BT_TYPE_13: case WID_BT_TYPE_14: case WID_BT_TYPE_21: case WID_BT_TYPE_22: case WID_BT_TYPE_23: case WID_BT_TYPE_24: case WID_BT_TYPE_31: case WID_BT_TYPE_32: case WID_BT_TYPE_33: case WID_BT_TYPE_34: if (widget - WID_BT_TYPE_11 >= this->count) break; if (HandlePlacePushButton(this, widget, SPR_CURSOR_TREE, HT_RECT)) { this->tree_to_plant = (TreeType)(this->base + widget - WID_BT_TYPE_11); } break; case WID_BT_TYPE_RANDOM: // tree of random type. if (HandlePlacePushButton(this, WID_BT_TYPE_RANDOM, SPR_CURSOR_TREE, HT_RECT)) { this->tree_to_plant = TREE_INVALID; } break; case WID_BT_MANY_RANDOM: // place trees randomly over the landscape if (_settings_client.sound.confirm) SndPlayFx(SND_15_BEEP); PlaceTreesRandomly(); MarkWholeScreenDirty(); break; } } virtual void OnPlaceObject(Point pt, TileIndex tile) { VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_PLANT_TREES); } virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) { VpSelectTilesWithMethod(pt.x, pt.y, select_method); } virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) { if (pt.x != -1 && select_proc == DDSP_PLANT_TREES) { DoCommandP(end_tile, this->tree_to_plant, start_tile, CMD_PLANT_TREE | CMD_MSG(STR_ERROR_CAN_T_PLANT_TREE_HERE)); } } /** * Initialize the window data */ virtual void OnInit() { this->base = _tree_base_by_landscape[_settings_game.game_creation.landscape]; this->count = _tree_count_by_landscape[_settings_game.game_creation.landscape]; } virtual void OnPlaceObjectAbort() { this->RaiseButtons(); } }; static const NWidgetPart _nested_build_trees_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_PLANT_TREE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetMinimalSize(2, 0), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_11), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_12), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_13), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_14), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_21), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_22), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_23), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_24), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_31), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_32), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_33), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BT_TYPE_34), SetMinimalSize(34, 46), SetDataTip(0x0, STR_PLANT_TREE_TOOLTIP), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BT_TYPE_RANDOM), SetMinimalSize(139, 12), SetDataTip(STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TOOLTIP), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BT_MANY_RANDOM), SetMinimalSize(139, 12), SetDataTip(STR_TREES_RANDOM_TREES_BUTTON, STR_TREES_RANDOM_TREES_TOOLTIP), NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(2, 0), EndContainer(), EndContainer(), }; static const WindowDesc _build_trees_desc( WDP_AUTO, 0, 0, WC_BUILD_TREES, WC_NONE, WDF_CONSTRUCTION, _nested_build_trees_widgets, lengthof(_nested_build_trees_widgets) ); void ShowBuildTreesToolbar() { if (_game_mode != GM_EDITOR && !Company::IsValidID(_local_company)) return; AllocateWindowDescFront(&_build_trees_desc, 0); } openttd-1.3.3/src/cargopacket.h0000644000000000000000000002327012246102611015113 0ustar rootroot/* $Id: cargopacket.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargopacket.h Base class for cargo packets. */ #ifndef CARGOPACKET_H #define CARGOPACKET_H #include "core/pool_type.hpp" #include "economy_type.h" #include "station_type.h" #include "cargo_type.h" #include "vehicle_type.h" #include /** Unique identifier for a single cargo packet. */ typedef uint32 CargoPacketID; struct CargoPacket; /** Type of the pool for cargo packets for a little over 16 million packets. */ typedef Pool CargoPacketPool; /** The actual pool with cargo packets. */ extern CargoPacketPool _cargopacket_pool; template class CargoList; extern const struct SaveLoad *GetCargoPacketDesc(); /** * Container for cargo from the same location and time. */ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { private: Money feeder_share; ///< Value of feeder pickup to be paid for on delivery of cargo. uint16 count; ///< The amount of cargo in this packet. byte days_in_transit; ///< Amount of days this packet has been in transit. SourceTypeByte source_type; ///< Type of \c source_id. SourceID source_id; ///< Index of source, INVALID_SOURCE if unknown/invalid. StationID source; ///< The station where the cargo came from first. TileIndex source_xy; ///< The origin of the cargo (first station in feeder chain). TileIndex loaded_at_xy; ///< Location where this cargo has been loaded into the vehicle. /** The CargoList caches, thus needs to know about it. */ template friend class CargoList; friend class VehicleCargoList; friend class StationCargoList; /** We want this to be saved, right? */ friend const struct SaveLoad *GetCargoPacketDesc(); public: /** Maximum number of items in a single cargo packet. */ static const uint16 MAX_COUNT = UINT16_MAX; CargoPacket(); CargoPacket(StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id); CargoPacket(uint16 count, byte days_in_transit, StationID source, TileIndex source_xy, TileIndex loaded_at_xy, Money feeder_share = 0, SourceType source_type = ST_INDUSTRY, SourceID source_id = INVALID_SOURCE); /** Destroy the packet. */ ~CargoPacket() { } CargoPacket *Split(uint new_size); void Merge(CargoPacket *cp); /** * Gets the number of 'items' in this packet. * @return Item count. */ inline uint16 Count() const { return this->count; } /** * Gets the amount of money already paid to earlier vehicles in * the feeder chain. * @return Feeder share. */ inline Money FeederShare() const { return this->feeder_share; } /** * Gets the number of days this cargo has been in transit. * This number isn't really in days, but in 2.5 days (CARGO_AGING_TICKS = 185 ticks) and * it is capped at 255. * @return Length this cargo has been in transit. */ inline byte DaysInTransit() const { return this->days_in_transit; } /** * Gets the type of the cargo's source. industry, town or head quarter. * @return Source type. */ inline SourceType SourceSubsidyType() const { return this->source_type; } /** * Gets the ID of the cargo's source. An IndustryID, TownID or CompanyID. * @return Source ID. */ inline SourceID SourceSubsidyID() const { return this->source_id; } /** * Gets the ID of the station where the cargo was loaded for the first time. * @return StationID. */ inline SourceID SourceStation() const { return this->source; } /** * Gets the coordinates of the cargo's source station. * @return Source station's coordinates. */ inline TileIndex SourceStationXY() const { return this->source_xy; } /** * Gets the coordinates of the cargo's last loading station. * @return Last loading station's coordinates. */ inline TileIndex LoadedAtXY() const { return this->loaded_at_xy; } static void InvalidateAllFrom(SourceType src_type, SourceID src); static void InvalidateAllFrom(StationID sid); static void AfterLoad(); }; /** * Iterate over all _valid_ cargo packets from the given start. * @param var Variable used as "iterator". * @param start Cargo packet ID of the first packet to iterate over. */ #define FOR_ALL_CARGOPACKETS_FROM(var, start) FOR_ALL_ITEMS_FROM(CargoPacket, cargopacket_index, var, start) /** * Iterate over all _valid_ cargo packets from the begin of the pool. * @param var Variable used as "iterator". */ #define FOR_ALL_CARGOPACKETS(var) FOR_ALL_CARGOPACKETS_FROM(var, 0) /** * Simple collection class for a list of cargo packets. * @tparam Tinst Actual instantiation of this cargo list. */ template class CargoList { public: /** Container with cargo packets. */ typedef std::list List; /** The iterator for our container. */ typedef List::iterator Iterator; /** The const iterator for our container. */ typedef List::const_iterator ConstIterator; /** Kind of actions that could be done with packets on move. */ enum MoveToAction { MTA_FINAL_DELIVERY, ///< "Deliver" the packet to the final destination, i.e. destroy the packet. MTA_CARGO_LOAD, ///< Load the packet onto a vehicle, i.e. set the last loaded station ID. MTA_TRANSFER, ///< The cargo is moved as part of a transfer. MTA_UNLOAD, ///< The cargo is moved as part of a forced unload. }; protected: uint count; ///< Cache for the number of cargo entities. uint cargo_days_in_transit; ///< Cache for the sum of number of days in transit of each entity; comparable to man-hours. List packets; ///< The cargo packets in this list. void AddToCache(const CargoPacket *cp); void RemoveFromCache(const CargoPacket *cp); public: /** Create the cargo list. */ CargoList() {} ~CargoList(); void OnCleanPool(); /** * Returns a pointer to the cargo packet list (so you can iterate over it etc). * @return Pointer to the packet list. */ inline const List *Packets() const { return &this->packets; } /** * Checks whether this list is empty. * @return True if and only if the list is empty. */ inline bool Empty() const { return this->count == 0; } /** * Returns the number of cargo entities in this list. * @return The before mentioned number. */ inline uint Count() const { return this->count; } /** * Returns source of the first cargo packet in this list. * @return The before mentioned source. */ inline StationID Source() const { return this->Empty() ? INVALID_STATION : this->packets.front()->source; } /** * Returns average number of days in transit for a cargo entity. * @return The before mentioned number. */ inline uint DaysInTransit() const { return this->count == 0 ? 0 : this->cargo_days_in_transit / this->count; } void Append(CargoPacket *cp); void Truncate(uint max_remaining); template bool MoveTo(Tother_inst *dest, uint count, MoveToAction mta, CargoPayment *payment, uint data = 0); void InvalidateCache(); }; /** * CargoList that is used for vehicles. */ class VehicleCargoList : public CargoList { protected: /** The (direct) parent of this class. */ typedef CargoList Parent; Money feeder_share; ///< Cache for the feeder share. void AddToCache(const CargoPacket *cp); void RemoveFromCache(const CargoPacket *cp); public: /** The super class ought to know what it's doing. */ friend class CargoList; /** The vehicles have a cargo list (and we want that saved). */ friend const struct SaveLoad *GetVehicleDescription(VehicleType vt); /** * Returns total sum of the feeder share for all packets. * @return The before mentioned number. */ inline Money FeederShare() const { return this->feeder_share; } void AgeCargo(); void InvalidateCache(); /** * Are two the two CargoPackets mergeable in the context of * a list of CargoPackets for a Vehicle? * @param cp1 First CargoPacket. * @param cp2 Second CargoPacket. * @return True if they are mergeable. */ static bool AreMergable(const CargoPacket *cp1, const CargoPacket *cp2) { return cp1->source_xy == cp2->source_xy && cp1->days_in_transit == cp2->days_in_transit && cp1->source_type == cp2->source_type && cp1->source_id == cp2->source_id && cp1->loaded_at_xy == cp2->loaded_at_xy; } }; /** * CargoList that is used for stations. */ class StationCargoList : public CargoList { public: /** The super class ought to know what it's doing. */ friend class CargoList; /** The stations, via GoodsEntry, have a CargoList. */ friend const struct SaveLoad *GetGoodsDesc(); /** * Are two the two CargoPackets mergeable in the context of * a list of CargoPackets for a Vehicle? * @param cp1 First CargoPacket. * @param cp2 Second CargoPacket. * @return True if they are mergeable. */ static bool AreMergable(const CargoPacket *cp1, const CargoPacket *cp2) { return cp1->source_xy == cp2->source_xy && cp1->days_in_transit == cp2->days_in_transit && cp1->source_type == cp2->source_type && cp1->source_id == cp2->source_id; } }; #endif /* CARGOPACKET_H */ openttd-1.3.3/src/bridge_map.h0000644000000000000000000001433612246102611014724 0ustar rootroot/* $Id: bridge_map.h 24912 2013-01-13 13:17:12Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file bridge_map.h Map accessor functions for bridges. */ #ifndef BRIDGE_MAP_H #define BRIDGE_MAP_H #include "road_map.h" #include "bridge.h" /** * Checks if this is a bridge, instead of a tunnel * @param t The tile to analyze * @pre IsTileType(t, MP_TUNNELBRIDGE) * @return true if the structure is a bridge one */ static inline bool IsBridge(TileIndex t) { assert(IsTileType(t, MP_TUNNELBRIDGE)); return HasBit(_m[t].m5, 7); } /** * checks if there is a bridge on this tile * @param t The tile to analyze * @return true if a bridge is present */ static inline bool IsBridgeTile(TileIndex t) { return IsTileType(t, MP_TUNNELBRIDGE) && IsBridge(t); } /** * checks for the possibility that a bridge may be on this tile * These are in fact all the tile types on which a bridge can be found * @param t The tile to analyze * @return true if a bridge might be present */ static inline bool MayHaveBridgeAbove(TileIndex t) { return IsTileType(t, MP_CLEAR) || IsTileType(t, MP_RAILWAY) || IsTileType(t, MP_ROAD) || IsTileType(t, MP_WATER) || IsTileType(t, MP_TUNNELBRIDGE) || IsTileType(t, MP_OBJECT); } /** * checks if a bridge is set above the ground of this tile * @param t The tile to analyze * @pre MayHaveBridgeAbove(t) * @return true if a bridge is detected above */ static inline bool IsBridgeAbove(TileIndex t) { assert(MayHaveBridgeAbove(t)); return GB(_m[t].m6, 6, 2) != 0; } /** * Determines the type of bridge on a tile * @param t The tile to analyze * @pre IsBridgeTile(t) * @return The bridge type */ static inline BridgeType GetBridgeType(TileIndex t) { assert(IsBridgeTile(t)); return GB(_m[t].m6, 2, 4); } /** * Get the axis of the bridge that goes over the tile. Not the axis or the ramp. * @param t The tile to analyze * @pre IsBridgeAbove(t) * @return the above mentioned axis */ static inline Axis GetBridgeAxis(TileIndex t) { assert(IsBridgeAbove(t)); return (Axis)(GB(_m[t].m6, 6, 2) - 1); } TileIndex GetNorthernBridgeEnd(TileIndex t); TileIndex GetSouthernBridgeEnd(TileIndex t); TileIndex GetOtherBridgeEnd(TileIndex t); int GetBridgeHeight(TileIndex tile); /** * Get the height ('z') of a bridge in pixels. * @param tile the bridge ramp tile to get the bridge height from * @return the height of the bridge in pixels */ static inline int GetBridgePixelHeight(TileIndex tile) { return GetBridgeHeight(tile) * TILE_HEIGHT; } /** * Remove the bridge over the given axis. * @param t the tile to remove the bridge from * @param a the axis of the bridge to remove * @pre MayHaveBridgeAbove(t) */ static inline void ClearSingleBridgeMiddle(TileIndex t, Axis a) { assert(MayHaveBridgeAbove(t)); ClrBit(_m[t].m6, 6 + a); } /** * Removes bridges from the given, that is bridges along the X and Y axis. * @param t the tile to remove the bridge from * @pre MayHaveBridgeAbove(t) */ static inline void ClearBridgeMiddle(TileIndex t) { ClearSingleBridgeMiddle(t, AXIS_X); ClearSingleBridgeMiddle(t, AXIS_Y); } /** * Set that there is a bridge over the given axis. * @param t the tile to add the bridge to * @param a the axis of the bridge to add * @pre MayHaveBridgeAbove(t) */ static inline void SetBridgeMiddle(TileIndex t, Axis a) { assert(MayHaveBridgeAbove(t)); SetBit(_m[t].m6, 6 + a); } /** * Generic part to make a bridge ramp for both roads and rails. * @param t the tile to make a bridge ramp * @param o the new owner of the bridge ramp * @param bridgetype the type of bridge this bridge ramp belongs to * @param d the direction this ramp must be facing * @param tt the transport type of the bridge * @param rt the road or rail type * @note this function should not be called directly. */ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, TransportType tt, uint rt) { SetTileType(t, MP_TUNNELBRIDGE); SetTileOwner(t, o); _m[t].m2 = 0; _m[t].m3 = rt; _m[t].m4 = 0; _m[t].m5 = 1 << 7 | tt << 2 | d; SB(_m[t].m6, 2, 4, bridgetype); _me[t].m7 = 0; } /** * Make a bridge ramp for roads. * @param t the tile to make a bridge ramp * @param o the new owner of the bridge ramp * @param owner_road the new owner of the road on the bridge * @param owner_tram the new owner of the tram on the bridge * @param bridgetype the type of bridge this bridge ramp belongs to * @param d the direction this ramp must be facing * @param r the road type of the bridge */ static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Owner owner_tram, BridgeType bridgetype, DiagDirection d, RoadTypes r) { MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, 0); SetRoadOwner(t, ROADTYPE_ROAD, owner_road); if (owner_tram != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, owner_tram); SetRoadTypes(t, r); } /** * Make a bridge ramp for rails. * @param t the tile to make a bridge ramp * @param o the new owner of the bridge ramp * @param bridgetype the type of bridge this bridge ramp belongs to * @param d the direction this ramp must be facing * @param r the rail type of the bridge */ static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RailType r) { MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL, r); } /** * Make a bridge ramp for aqueducts. * @param t the tile to make a bridge ramp * @param o the new owner of the bridge ramp * @param d the direction this ramp must be facing */ static inline void MakeAqueductBridgeRamp(TileIndex t, Owner o, DiagDirection d) { MakeBridgeRamp(t, o, 0, d, TRANSPORT_WATER, 0); } #endif /* BRIDGE_MAP_H */ openttd-1.3.3/src/heightmap.cpp0000644000000000000000000003563612246102611015142 0ustar rootroot/* $Id: heightmap.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file heightmap.cpp Creating of maps from heightmaps. */ #include "stdafx.h" #include "heightmap.h" #include "clear_map.h" #include "void_map.h" #include "error.h" #include "saveload/saveload.h" #include "bmp.h" #include "gfx_func.h" #include "fios.h" #include "fileio_func.h" #include "table/strings.h" /** * Convert RGB colours to Grayscale using 29.9% Red, 58.7% Green, 11.4% Blue * (average luminosity formula, NTSC Colour Space) */ static inline byte RGBToGrayscale(byte red, byte green, byte blue) { /* To avoid doubles and stuff, multiply it with a total of 65536 (16bits), then * divide by it to normalize the value to a byte again. */ return ((red * 19595) + (green * 38470) + (blue * 7471)) / 65536; } #ifdef WITH_PNG #include /** * The PNG Heightmap loader. */ static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop info_ptr) { uint x, y; byte gray_palette[256]; png_bytep *row_pointers = NULL; /* Get palette and convert it to grayscale */ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) { int i; int palette_size; png_color *palette; bool all_gray = true; png_get_PLTE(png_ptr, info_ptr, &palette, &palette_size); for (i = 0; i < palette_size && (palette_size != 16 || all_gray); i++) { all_gray &= palette[i].red == palette[i].green && palette[i].red == palette[i].blue; gray_palette[i] = RGBToGrayscale(palette[i].red, palette[i].green, palette[i].blue); } /** * For a non-gray palette of size 16 we assume that * the order of the palette determines the height; * the first entry is the sea (level 0), the second one * level 1, etc. */ if (palette_size == 16 && !all_gray) { for (i = 0; i < palette_size; i++) { gray_palette[i] = 256 * i / palette_size; } } } row_pointers = png_get_rows(png_ptr, info_ptr); /* Read the raw image data and convert in 8-bit grayscale */ for (x = 0; x < png_get_image_width(png_ptr, info_ptr); x++) { for (y = 0; y < png_get_image_height(png_ptr, info_ptr); y++) { byte *pixel = &map[y * png_get_image_width(png_ptr, info_ptr) + x]; uint x_offset = x * png_get_channels(png_ptr, info_ptr); if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) { *pixel = gray_palette[row_pointers[y][x_offset]]; } else if (png_get_channels(png_ptr, info_ptr) == 3) { *pixel = RGBToGrayscale(row_pointers[y][x_offset + 0], row_pointers[y][x_offset + 1], row_pointers[y][x_offset + 2]); } else { *pixel = row_pointers[y][x_offset]; } } } } /** * Reads the heightmap and/or size of the heightmap from a PNG file. * If map == NULL only the size of the PNG is read, otherwise a map * with grayscale pixels is allocated and assigned to *map. */ static bool ReadHeightmapPNG(char *filename, uint *x, uint *y, byte **map) { FILE *fp; png_structp png_ptr = NULL; png_infop info_ptr = NULL; fp = FioFOpenFile(filename, "rb", HEIGHTMAP_DIR); if (fp == NULL) { ShowErrorMessage(STR_ERROR_PNGMAP, STR_ERROR_PNGMAP_FILE_NOT_FOUND, WL_ERROR); return false; } png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (png_ptr == NULL) { ShowErrorMessage(STR_ERROR_PNGMAP, STR_ERROR_PNGMAP_MISC, WL_ERROR); fclose(fp); return false; } info_ptr = png_create_info_struct(png_ptr); if (info_ptr == NULL || setjmp(png_jmpbuf(png_ptr))) { ShowErrorMessage(STR_ERROR_PNGMAP, STR_ERROR_PNGMAP_MISC, WL_ERROR); fclose(fp); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return false; } png_init_io(png_ptr, fp); /* Allocate memory and read image, without alpha or 16-bit samples * (result is either 8-bit indexed/grayscale or 24-bit RGB) */ png_set_packing(png_ptr); png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_PACKING | PNG_TRANSFORM_STRIP_ALPHA | PNG_TRANSFORM_STRIP_16, NULL); /* Maps of wrong colour-depth are not used. * (this should have been taken care of by stripping alpha and 16-bit samples on load) */ if ((png_get_channels(png_ptr, info_ptr) != 1) && (png_get_channels(png_ptr, info_ptr) != 3) && (png_get_bit_depth(png_ptr, info_ptr) != 8)) { ShowErrorMessage(STR_ERROR_PNGMAP, STR_ERROR_PNGMAP_IMAGE_TYPE, WL_ERROR); fclose(fp); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return false; } uint width = png_get_image_width(png_ptr, info_ptr); uint height = png_get_image_height(png_ptr, info_ptr); /* Check if image dimensions don't overflow a size_t to avoid memory corruption. */ if ((uint64)width * height >= (size_t)-1) { ShowErrorMessage(STR_ERROR_PNGMAP, STR_ERROR_HEIGHTMAP_TOO_LARGE, WL_ERROR); fclose(fp); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return false; } if (map != NULL) { *map = MallocT(width * height); ReadHeightmapPNGImageData(*map, png_ptr, info_ptr); } *x = width; *y = height; fclose(fp); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return true; } #endif /* WITH_PNG */ /** * The BMP Heightmap loader. */ static void ReadHeightmapBMPImageData(byte *map, BmpInfo *info, BmpData *data) { uint x, y; byte gray_palette[256]; if (data->palette != NULL) { uint i; bool all_gray = true; if (info->palette_size != 2) { for (i = 0; i < info->palette_size && (info->palette_size != 16 || all_gray); i++) { all_gray &= data->palette[i].r == data->palette[i].g && data->palette[i].r == data->palette[i].b; gray_palette[i] = RGBToGrayscale(data->palette[i].r, data->palette[i].g, data->palette[i].b); } /** * For a non-gray palette of size 16 we assume that * the order of the palette determines the height; * the first entry is the sea (level 0), the second one * level 1, etc. */ if (info->palette_size == 16 && !all_gray) { for (i = 0; i < info->palette_size; i++) { gray_palette[i] = 256 * i / info->palette_size; } } } else { /** * For a palette of size 2 we assume that the order of the palette determines the height; * the first entry is the sea (level 0), the second one is the land (level 1) */ gray_palette[0] = 0; gray_palette[1] = 16; } } /* Read the raw image data and convert in 8-bit grayscale */ for (y = 0; y < info->height; y++) { byte *pixel = &map[y * info->width]; byte *bitmap = &data->bitmap[y * info->width * (info->bpp == 24 ? 3 : 1)]; for (x = 0; x < info->width; x++) { if (info->bpp != 24) { *pixel++ = gray_palette[*bitmap++]; } else { *pixel++ = RGBToGrayscale(*bitmap, *(bitmap + 1), *(bitmap + 2)); bitmap += 3; } } } } /** * Reads the heightmap and/or size of the heightmap from a BMP file. * If map == NULL only the size of the BMP is read, otherwise a map * with grayscale pixels is allocated and assigned to *map. */ static bool ReadHeightmapBMP(char *filename, uint *x, uint *y, byte **map) { FILE *f; BmpInfo info; BmpData data; BmpBuffer buffer; /* Init BmpData */ memset(&data, 0, sizeof(data)); f = FioFOpenFile(filename, "rb", HEIGHTMAP_DIR); if (f == NULL) { ShowErrorMessage(STR_ERROR_BMPMAP, STR_ERROR_PNGMAP_FILE_NOT_FOUND, WL_ERROR); return false; } BmpInitializeBuffer(&buffer, f); if (!BmpReadHeader(&buffer, &info, &data)) { ShowErrorMessage(STR_ERROR_BMPMAP, STR_ERROR_BMPMAP_IMAGE_TYPE, WL_ERROR); fclose(f); BmpDestroyData(&data); return false; } /* Check if image dimensions don't overflow a size_t to avoid memory corruption. */ if ((uint64)info.width * info.height >= (size_t)-1 / (info.bpp == 24 ? 3 : 1)) { ShowErrorMessage(STR_ERROR_BMPMAP, STR_ERROR_HEIGHTMAP_TOO_LARGE, WL_ERROR); fclose(f); BmpDestroyData(&data); return false; } if (map != NULL) { if (!BmpReadBitmap(&buffer, &info, &data)) { ShowErrorMessage(STR_ERROR_BMPMAP, STR_ERROR_BMPMAP_IMAGE_TYPE, WL_ERROR); fclose(f); BmpDestroyData(&data); return false; } *map = MallocT(info.width * info.height); ReadHeightmapBMPImageData(*map, &info, &data); } BmpDestroyData(&data); *x = info.width; *y = info.height; fclose(f); return true; } /** * Converts a given grayscale map to something that fits in OTTD map system * and create a map of that data. * @param img_width the with of the image in pixels/tiles * @param img_height the height of the image in pixels/tiles * @param map the input map */ static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map) { /* Defines the detail of the aspect ratio (to avoid doubles) */ const uint num_div = 16384; uint width, height; uint row, col; uint row_pad = 0, col_pad = 0; uint img_scale; uint img_row, img_col; TileIndex tile; /* Get map size and calculate scale and padding values */ switch (_settings_game.game_creation.heightmap_rotation) { default: NOT_REACHED(); case HM_COUNTER_CLOCKWISE: width = MapSizeX(); height = MapSizeY(); break; case HM_CLOCKWISE: width = MapSizeY(); height = MapSizeX(); break; } if ((img_width * num_div) / img_height > ((width * num_div) / height)) { /* Image is wider than map - center vertically */ img_scale = (width * num_div) / img_width; row_pad = (1 + height - ((img_height * img_scale) / num_div)) / 2; } else { /* Image is taller than map - center horizontally */ img_scale = (height * num_div) / img_height; col_pad = (1 + width - ((img_width * img_scale) / num_div)) / 2; } if (_settings_game.construction.freeform_edges) { for (uint x = 0; x < MapSizeX(); x++) MakeVoid(TileXY(x, 0)); for (uint y = 0; y < MapSizeY(); y++) MakeVoid(TileXY(0, y)); } /* Form the landscape */ for (row = 0; row < height; row++) { for (col = 0; col < width; col++) { switch (_settings_game.game_creation.heightmap_rotation) { default: NOT_REACHED(); case HM_COUNTER_CLOCKWISE: tile = TileXY(col, row); break; case HM_CLOCKWISE: tile = TileXY(row, col); break; } /* Check if current tile is within the 1-pixel map edge or padding regions */ if ((!_settings_game.construction.freeform_edges && DistanceFromEdge(tile) <= 1) || (row < row_pad) || (row >= (height - row_pad - (_settings_game.construction.freeform_edges ? 0 : 1))) || (col < col_pad) || (col >= (width - col_pad - (_settings_game.construction.freeform_edges ? 0 : 1)))) { SetTileHeight(tile, 0); } else { /* Use nearest neighbour resizing to scale map data. * We rotate the map 45 degrees (counter)clockwise */ img_row = (((row - row_pad) * num_div) / img_scale); switch (_settings_game.game_creation.heightmap_rotation) { default: NOT_REACHED(); case HM_COUNTER_CLOCKWISE: img_col = (((width - 1 - col - col_pad) * num_div) / img_scale); break; case HM_CLOCKWISE: img_col = (((col - col_pad) * num_div) / img_scale); break; } assert(img_row < img_height); assert(img_col < img_width); /* Colour scales from 0 to 255, OpenTTD height scales from 0 to 15 */ SetTileHeight(tile, map[img_row * img_width + img_col] / 16); } /* Only clear the tiles within the map area. */ if (TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY() && (!_settings_game.construction.freeform_edges || (TileX(tile) != 0 && TileY(tile) != 0))) { MakeClear(tile, CLEAR_GRASS, 3); } } } } /** * This function takes care of the fact that land in OpenTTD can never differ * more than 1 in height */ void FixSlopes() { uint width, height; int row, col; byte current_tile; /* Adjust height difference to maximum one horizontal/vertical change. */ width = MapSizeX(); height = MapSizeY(); /* Top and left edge */ for (row = 0; (uint)row < height; row++) { for (col = 0; (uint)col < width; col++) { current_tile = MAX_TILE_HEIGHT; if (col != 0) { /* Find lowest tile; either the top or left one */ current_tile = TileHeight(TileXY(col - 1, row)); // top edge } if (row != 0) { if (TileHeight(TileXY(col, row - 1)) < current_tile) { current_tile = TileHeight(TileXY(col, row - 1)); // left edge } } /* Does the height differ more than one? */ if (TileHeight(TileXY(col, row)) >= (uint)current_tile + 2) { /* Then change the height to be no more than one */ SetTileHeight(TileXY(col, row), current_tile + 1); } } } /* Bottom and right edge */ for (row = height - 1; row >= 0; row--) { for (col = width - 1; col >= 0; col--) { current_tile = MAX_TILE_HEIGHT; if ((uint)col != width - 1) { /* Find lowest tile; either the bottom and right one */ current_tile = TileHeight(TileXY(col + 1, row)); // bottom edge } if ((uint)row != height - 1) { if (TileHeight(TileXY(col, row + 1)) < current_tile) { current_tile = TileHeight(TileXY(col, row + 1)); // right edge } } /* Does the height differ more than one? */ if (TileHeight(TileXY(col, row)) >= (uint)current_tile + 2) { /* Then change the height to be no more than one */ SetTileHeight(TileXY(col, row), current_tile + 1); } } } } /** * Reads the heightmap with the correct file reader */ static bool ReadHeightMap(char *filename, uint *x, uint *y, byte **map) { switch (_file_to_saveload.mode) { default: NOT_REACHED(); #ifdef WITH_PNG case SL_PNG: return ReadHeightmapPNG(filename, x, y, map); #endif /* WITH_PNG */ case SL_BMP: return ReadHeightmapBMP(filename, x, y, map); } } /** * Get the dimensions of a heightmap. * @param filename to query * @param x dimension x * @param y dimension y * @return Returns false if loading of the image failed. */ bool GetHeightmapDimensions(char *filename, uint *x, uint *y) { return ReadHeightMap(filename, x, y, NULL); } /** * Load a heightmap from file and change the map in his current dimensions * to a landscape representing the heightmap. * It converts pixels to height. The brighter, the higher. * @param filename of the heightmap file to be imported */ void LoadHeightmap(char *filename) { uint x, y; byte *map = NULL; if (!ReadHeightMap(filename, &x, &y, &map)) { free(map); return; } GrayscaleToMapHeights(x, y, map); free(map); FixSlopes(); MarkWholeScreenDirty(); } /** * Make an empty world where all tiles are of height 'tile_height'. * @param tile_height of the desired new empty world */ void FlatEmptyWorld(byte tile_height) { int edge_distance = _settings_game.construction.freeform_edges ? 0 : 2; for (uint row = edge_distance; row < MapSizeY() - edge_distance; row++) { for (uint col = edge_distance; col < MapSizeX() - edge_distance; col++) { SetTileHeight(TileXY(col, row), tile_height); } } FixSlopes(); MarkWholeScreenDirty(); } openttd-1.3.3/src/fontdetection.h0000644000000000000000000000333512246102611015475 0ustar rootroot/* $Id: fontdetection.h 25502 2013-06-28 19:44:28Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fontdetection.h Functions related to detecting/finding the right font. */ #ifndef FONTDETECTION_H #define FONTDETECTION_H #include "fontcache.h" #ifdef WITH_FREETYPE #include #include FT_FREETYPE_H /** * Load a freetype font face with the given font name. * @param font_name The name of the font to load. * @param face The face that has been found. * @return The error we encountered. */ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face); /** * We would like to have a fallback font as the current one * doesn't contain all characters we need. * This function must set all fonts of settings. * @param settings the settings to overwrite the fontname of. * @param language_isocode the language, e.g. en_GB. * @param winlangid the language ID windows style. * @param callback The function to call to check for missing glyphs. * @return true if a font has been set, false otherwise. */ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, class MissingGlyphSearcher *callback); #endif /* WITH_FREETYPE */ #endif openttd-1.3.3/src/texteff.cpp0000644000000000000000000000667112246102611014636 0ustar rootroot/* $Id: texteff.cpp 24068 2012-03-25 19:30:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file texteff.cpp Handling of text effects. */ #include "stdafx.h" #include "texteff.hpp" #include "transparency.h" #include "strings_func.h" #include "core/smallvec_type.hpp" #include "viewport_func.h" #include "settings_type.h" /** Container for all information about a text effect */ struct TextEffect : public ViewportSign { uint64 params_1; ///< DParam parameter StringID string_id; ///< String to draw for the text effect, if INVALID_STRING_ID then it's not valid uint8 duration; ///< How long the text effect should stay, in ticks (applies only when mode == TE_RISING) TextEffectMode mode; ///< Type of text effect /** Reset the text effect */ void Reset() { this->MarkDirty(); this->width_normal = 0; this->string_id = INVALID_STRING_ID; } }; static SmallVector _text_effects; ///< Text effects are stored there /* Text Effects */ TextEffectID AddTextEffect(StringID msg, int center, int y, uint8 duration, TextEffectMode mode) { if (_game_mode == GM_MENU) return INVALID_TE_ID; TextEffectID i; for (i = 0; i < _text_effects.Length(); i++) { if (_text_effects[i].string_id == INVALID_STRING_ID) break; } if (i == _text_effects.Length()) _text_effects.Append(); TextEffect *te = _text_effects.Get(i); /* Start defining this object */ te->string_id = msg; te->duration = duration; te->params_1 = GetDParam(0); te->mode = mode; /* Make sure we only dirty the new area */ te->width_normal = 0; te->UpdatePosition(center, y, msg); return i; } void UpdateTextEffect(TextEffectID te_id, StringID msg) { /* Update details */ TextEffect *te = _text_effects.Get(te_id); if (msg == te->string_id && GetDParam(0) == te->params_1) return; te->string_id = msg; te->params_1 = GetDParam(0); te->UpdatePosition(te->center, te->top, msg); } void RemoveTextEffect(TextEffectID te_id) { _text_effects[te_id].Reset(); } void MoveAllTextEffects() { const TextEffect *end = _text_effects.End(); for (TextEffect *te = _text_effects.Begin(); te != end; te++) { if (te->string_id == INVALID_STRING_ID) continue; if (te->mode != TE_RISING) continue; if (te->duration-- == 0) { te->Reset(); continue; } te->MarkDirty(ZOOM_LVL_OUT_8X); te->top -= ZOOM_LVL_BASE; te->MarkDirty(ZOOM_LVL_OUT_8X); } } void InitTextEffects() { _text_effects.Reset(); } void DrawTextEffects(DrawPixelInfo *dpi) { /* Don't draw the text effects when zoomed out a lot */ if (dpi->zoom > ZOOM_LVL_OUT_8X) return; const TextEffect *end = _text_effects.End(); for (TextEffect *te = _text_effects.Begin(); te != end; te++) { if (te->string_id == INVALID_STRING_ID) continue; if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, 0, te->params_1); } } } openttd-1.3.3/src/autoreplace_cmd.cpp0000644000000000000000000007370112246102611016316 0ustar rootroot/* $Id: autoreplace_cmd.cpp 24939 2013-01-23 20:00:00Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file autoreplace_cmd.cpp Deals with autoreplace execution but not the setup */ #include "stdafx.h" #include "company_func.h" #include "train.h" #include "command_func.h" #include "engine_func.h" #include "vehicle_func.h" #include "autoreplace_func.h" #include "autoreplace_gui.h" #include "articulated_vehicles.h" #include "core/random_func.hpp" #include "table/strings.h" extern void ChangeVehicleViewports(VehicleID from_index, VehicleID to_index); extern void ChangeVehicleNews(VehicleID from_index, VehicleID to_index); extern void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index); /** * Figure out if two engines got at least one type of cargo in common (refitting if needed) * @param engine_a one of the EngineIDs * @param engine_b the other EngineID * @param type the type of the engines * @return true if they can both carry the same type of cargo (or at least one of them got no capacity at all) */ static bool EnginesHaveCargoInCommon(EngineID engine_a, EngineID engine_b) { uint32 available_cargoes_a = GetUnionOfArticulatedRefitMasks(engine_a, true); uint32 available_cargoes_b = GetUnionOfArticulatedRefitMasks(engine_b, true); return (available_cargoes_a == 0 || available_cargoes_b == 0 || (available_cargoes_a & available_cargoes_b) != 0); } /** * Checks some basic properties whether autoreplace is allowed * @param from Origin engine * @param to Destination engine * @param company Company to check for * @return true if autoreplace is allowed */ bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company) { assert(Engine::IsValidID(from) && Engine::IsValidID(to)); /* we can't replace an engine into itself (that would be autorenew) */ if (from == to) return false; const Engine *e_from = Engine::Get(from); const Engine *e_to = Engine::Get(to); VehicleType type = e_from->type; /* check that the new vehicle type is available to the company and its type is the same as the original one */ if (!IsEngineBuildable(to, type, company)) return false; switch (type) { case VEH_TRAIN: { /* make sure the railtypes are compatible */ if ((GetRailTypeInfo(e_from->u.rail.railtype)->compatible_railtypes & GetRailTypeInfo(e_to->u.rail.railtype)->compatible_railtypes) == 0) return false; /* make sure we do not replace wagons with engines or vice versa */ if ((e_from->u.rail.railveh_type == RAILVEH_WAGON) != (e_to->u.rail.railveh_type == RAILVEH_WAGON)) return false; break; } case VEH_ROAD: /* make sure that we do not replace a tram with a normal road vehicles or vice versa */ if (HasBit(e_from->info.misc_flags, EF_ROAD_TRAM) != HasBit(e_to->info.misc_flags, EF_ROAD_TRAM)) return false; break; case VEH_AIRCRAFT: /* make sure that we do not replace a plane with a helicopter or vice versa */ if ((e_from->u.air.subtype & AIR_CTOL) != (e_to->u.air.subtype & AIR_CTOL)) return false; break; default: break; } /* the engines needs to be able to carry the same cargo */ return EnginesHaveCargoInCommon(from, to); } /** * Check the capacity of all vehicles in a chain and spread cargo if needed. * @param v The vehicle to check. */ void CheckCargoCapacity(Vehicle *v) { assert(v == NULL || v->First() == v); for (Vehicle *src = v; src != NULL; src = src->Next()) { /* Do we need to more cargo away? */ if (src->cargo.Count() <= src->cargo_cap) continue; /* We need to move a particular amount. Try that on the other vehicles. */ uint to_spread = src->cargo.Count() - src->cargo_cap; for (Vehicle *dest = v; dest != NULL && to_spread != 0; dest = dest->Next()) { if (dest->cargo.Count() >= dest->cargo_cap || dest->cargo_type != src->cargo_type) continue; uint amount = min(to_spread, dest->cargo_cap - dest->cargo.Count()); src->cargo.MoveTo(&dest->cargo, amount, VehicleCargoList::MTA_UNLOAD, NULL); to_spread -= amount; } /* Any left-overs will be thrown away, but not their feeder share. */ src->cargo.Truncate(src->cargo_cap); } } /** * Transfer cargo from a single (articulated )old vehicle to the new vehicle chain * @param old_veh Old vehicle that will be sold * @param new_head Head of the completely constructed new vehicle chain * @param part_of_chain The vehicle is part of a train */ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chain) { assert(!part_of_chain || new_head->IsPrimaryVehicle()); /* Loop through source parts */ for (Vehicle *src = old_veh; src != NULL; src = src->Next()) { if (!part_of_chain && src->type == VEH_TRAIN && src != old_veh && src != Train::From(old_veh)->other_multiheaded_part && !src->IsArticulatedPart()) { /* Skip vehicles, which do not belong to old_veh */ src = src->GetLastEnginePart(); continue; } if (src->cargo_type >= NUM_CARGO || src->cargo.Count() == 0) continue; /* Find free space in the new chain */ for (Vehicle *dest = new_head; dest != NULL && src->cargo.Count() > 0; dest = dest->Next()) { if (!part_of_chain && dest->type == VEH_TRAIN && dest != new_head && dest != Train::From(new_head)->other_multiheaded_part && !dest->IsArticulatedPart()) { /* Skip vehicles, which do not belong to new_head */ dest = dest->GetLastEnginePart(); continue; } if (dest->cargo_type != src->cargo_type) continue; uint amount = min(src->cargo.Count(), dest->cargo_cap - dest->cargo.Count()); if (amount <= 0) continue; src->cargo.MoveTo(&dest->cargo, amount, VehicleCargoList::MTA_UNLOAD, NULL); } } /* Update train weight etc., the old vehicle will be sold anyway */ if (part_of_chain && new_head->type == VEH_TRAIN) Train::From(new_head)->ConsistChanged(true); } /** * Tests whether refit orders that applied to v will also apply to the new vehicle type * @param v The vehicle to be replaced * @param engine_type The type we want to replace with * @return true iff all refit orders stay valid */ static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, EngineID engine_type) { uint32 union_refit_mask_a = GetUnionOfArticulatedRefitMasks(v->engine_type, false); uint32 union_refit_mask_b = GetUnionOfArticulatedRefitMasks(engine_type, false); const Order *o; const Vehicle *u = (v->type == VEH_TRAIN) ? v->First() : v; FOR_VEHICLE_ORDERS(u, o) { if (!o->IsRefit() || o->IsAutoRefit()) continue; CargoID cargo_type = o->GetRefitCargo(); if (!HasBit(union_refit_mask_a, cargo_type)) continue; if (!HasBit(union_refit_mask_b, cargo_type)) return false; } return true; } /** * Function to find what type of cargo to refit to when autoreplacing * @param *v Original vehicle that is being replaced. * @param engine_type The EngineID of the vehicle that is being replaced to * @param part_of_chain The vehicle is part of a train * @return The cargo type to replace to * CT_NO_REFIT is returned if no refit is needed * CT_INVALID is returned when both old and new vehicle got cargo capacity and refitting the new one to the old one's cargo type isn't possible */ static CargoID GetNewCargoTypeForReplace(Vehicle *v, EngineID engine_type, bool part_of_chain) { uint32 available_cargo_types, union_mask; GetArticulatedRefitMasks(engine_type, true, &union_mask, &available_cargo_types); if (union_mask == 0) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity CargoID cargo_type; if (IsArticulatedVehicleCarryingDifferentCargoes(v, &cargo_type)) return CT_INVALID; // We cannot refit to mixed cargoes in an automated way if (cargo_type == CT_INVALID) { if (v->type != VEH_TRAIN) return CT_NO_REFIT; // If the vehicle does not carry anything at all, every replacement is fine. if (!part_of_chain) return CT_NO_REFIT; /* the old engine didn't have cargo capacity, but the new one does * now we will figure out what cargo the train is carrying and refit to fit this */ for (v = v->First(); v != NULL; v = v->Next()) { if (!v->GetEngine()->CanCarryCargo()) continue; /* Now we found a cargo type being carried on the train and we will see if it is possible to carry to this one */ if (HasBit(available_cargo_types, v->cargo_type)) return v->cargo_type; } return CT_NO_REFIT; // We failed to find a cargo type on the old vehicle and we will not refit the new one } else { if (!HasBit(available_cargo_types, cargo_type)) return CT_INVALID; // We can't refit the vehicle to carry the cargo we want if (part_of_chain && !VerifyAutoreplaceRefitForOrders(v, engine_type)) return CT_INVALID; // Some refit orders lose their effect return cargo_type; } } /** * Get the EngineID of the replacement for a vehicle * @param v The vehicle to find a replacement for * @param c The vehicle's owner (it's faster to forward the pointer than refinding it) * @param always_replace Always replace, even if not old. * @param [out] e the EngineID of the replacement. INVALID_ENGINE if no replacement is found * @return Error if the engine to build is not available */ static CommandCost GetNewEngineType(const Vehicle *v, const Company *c, bool always_replace, EngineID &e) { assert(v->type != VEH_TRAIN || !v->IsArticulatedPart()); e = INVALID_ENGINE; if (v->type == VEH_TRAIN && Train::From(v)->IsRearDualheaded()) { /* we build the rear ends of multiheaded trains with the front ones */ return CommandCost(); } bool replace_when_old; e = EngineReplacementForCompany(c, v->engine_type, v->group_id, &replace_when_old); if (!always_replace && replace_when_old && !v->NeedsAutorenewing(c, false)) e = INVALID_ENGINE; /* Autoreplace, if engine is available */ if (e != INVALID_ENGINE && IsEngineBuildable(e, v->type, _current_company)) { return CommandCost(); } /* Autorenew if needed */ if (v->NeedsAutorenewing(c)) e = v->engine_type; /* Nothing to do or all is fine? */ if (e == INVALID_ENGINE || IsEngineBuildable(e, v->type, _current_company)) return CommandCost(); /* The engine we need is not available. Report error to user */ return CommandCost(STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE + v->type); } /** * Builds and refits a replacement vehicle * Important: The old vehicle is still in the original vehicle chain (used for determining the cargo when the old vehicle did not carry anything, but the new one does) * @param old_veh A single (articulated/multiheaded) vehicle that shall be replaced. * @param new_vehicle Returns the newly build and refitted vehicle * @param part_of_chain The vehicle is part of a train * @return cost or error */ static CommandCost BuildReplacementVehicle(Vehicle *old_veh, Vehicle **new_vehicle, bool part_of_chain) { *new_vehicle = NULL; /* Shall the vehicle be replaced? */ const Company *c = Company::Get(_current_company); EngineID e; CommandCost cost = GetNewEngineType(old_veh, c, true, e); if (cost.Failed()) return cost; if (e == INVALID_ENGINE) return CommandCost(); // neither autoreplace is set, nor autorenew is triggered /* Does it need to be refitted */ CargoID refit_cargo = GetNewCargoTypeForReplace(old_veh, e, part_of_chain); if (refit_cargo == CT_INVALID) return CommandCost(); // incompatible cargoes /* Build the new vehicle */ cost = DoCommand(old_veh->tile, e, 0, DC_EXEC | DC_AUTOREPLACE, GetCmdBuildVeh(old_veh)); if (cost.Failed()) return cost; Vehicle *new_veh = Vehicle::Get(_new_vehicle_id); *new_vehicle = new_veh; /* Refit the vehicle if needed */ if (refit_cargo != CT_NO_REFIT) { byte subtype = GetBestFittingSubType(old_veh, new_veh, refit_cargo); cost.AddCost(DoCommand(0, new_veh->index, refit_cargo | (subtype << 8), DC_EXEC, GetCmdRefitVeh(new_veh))); assert(cost.Succeeded()); // This should be ensured by GetNewCargoTypeForReplace() } /* Try to reverse the vehicle, but do not care if it fails as the new type might not be reversible */ if (new_veh->type == VEH_TRAIN && HasBit(Train::From(old_veh)->flags, VRF_REVERSE_DIRECTION)) { DoCommand(0, new_veh->index, true, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION); } return cost; } /** * Issue a start/stop command * @param v a vehicle * @param evaluate_callback shall the start/stop callback be evaluated? * @return success or error */ static inline CommandCost CmdStartStopVehicle(const Vehicle *v, bool evaluate_callback) { return DoCommand(0, v->index, evaluate_callback ? 1 : 0, DC_EXEC | DC_AUTOREPLACE, CMD_START_STOP_VEHICLE); } /** * Issue a train vehicle move command * @param v The vehicle to move * @param after The vehicle to insert 'v' after, or NULL to start new chain * @param flags the command flags to use * @param whole_chain move all vehicles following 'v' (true), or only 'v' (false) * @return success or error */ static inline CommandCost CmdMoveVehicle(const Vehicle *v, const Vehicle *after, DoCommandFlag flags, bool whole_chain) { return DoCommand(0, v->index | (whole_chain ? 1 : 0) << 20, after != NULL ? after->index : INVALID_VEHICLE, flags | DC_NO_CARGO_CAP_CHECK, CMD_MOVE_RAIL_VEHICLE); } /** * Copy head specific things to the new vehicle chain after it was successfully constructed * @param old_head The old front vehicle (no wagons attached anymore) * @param new_head The new head of the completely replaced vehicle chain * @param flags the command flags to use */ static CommandCost CopyHeadSpecificThings(Vehicle *old_head, Vehicle *new_head, DoCommandFlag flags) { CommandCost cost = CommandCost(); /* Share orders */ if (cost.Succeeded() && old_head != new_head) cost.AddCost(DoCommand(0, new_head->index | CO_SHARE << 30, old_head->index, DC_EXEC, CMD_CLONE_ORDER)); /* Copy group membership */ if (cost.Succeeded() && old_head != new_head) cost.AddCost(DoCommand(0, old_head->group_id, new_head->index, DC_EXEC, CMD_ADD_VEHICLE_GROUP)); /* Perform start/stop check whether the new vehicle suits newgrf restrictions etc. */ if (cost.Succeeded()) { /* Start the vehicle, might be denied by certain things */ assert((new_head->vehstatus & VS_STOPPED) != 0); cost.AddCost(CmdStartStopVehicle(new_head, true)); /* Stop the vehicle again, but do not care about evil newgrfs allowing starting but not stopping :p */ if (cost.Succeeded()) cost.AddCost(CmdStartStopVehicle(new_head, false)); } /* Last do those things which do never fail (resp. we do not care about), but which are not undo-able */ if (cost.Succeeded() && old_head != new_head && (flags & DC_EXEC) != 0) { /* Copy other things which cannot be copied by a command and which shall not stay resetted from the build vehicle command */ new_head->CopyVehicleConfigAndStatistics(old_head); /* Switch vehicle windows/news to the new vehicle, so they are not closed/deleted when the old vehicle is sold */ ChangeVehicleViewports(old_head->index, new_head->index); ChangeVehicleViewWindow(old_head->index, new_head->index); ChangeVehicleNews(old_head->index, new_head->index); } return cost; } /** * Replace a single unit in a free wagon chain * @param single_unit vehicle to let autoreplace/renew operator on * @param flags command flags * @param nothing_to_do is set to 'false' when something was done (only valid when not failed) * @return cost or error */ static CommandCost ReplaceFreeUnit(Vehicle **single_unit, DoCommandFlag flags, bool *nothing_to_do) { Train *old_v = Train::From(*single_unit); assert(!old_v->IsArticulatedPart() && !old_v->IsRearDualheaded()); CommandCost cost = CommandCost(EXPENSES_NEW_VEHICLES, 0); /* Build and refit replacement vehicle */ Vehicle *new_v = NULL; cost.AddCost(BuildReplacementVehicle(old_v, &new_v, false)); /* Was a new vehicle constructed? */ if (cost.Succeeded() && new_v != NULL) { *nothing_to_do = false; if ((flags & DC_EXEC) != 0) { /* Move the new vehicle behind the old */ CmdMoveVehicle(new_v, old_v, DC_EXEC, false); /* Take over cargo * Note: We do only transfer cargo from the old to the new vehicle. * I.e. we do not transfer remaining cargo to other vehicles. * Else you would also need to consider moving cargo to other free chains, * or doing the same in ReplaceChain(), which would be quite troublesome. */ TransferCargo(old_v, new_v, false); *single_unit = new_v; } /* Sell the old vehicle */ cost.AddCost(DoCommand(0, old_v->index, 0, flags, GetCmdSellVeh(old_v))); /* If we are not in DC_EXEC undo everything */ if ((flags & DC_EXEC) == 0) { DoCommand(0, new_v->index, 0, DC_EXEC, GetCmdSellVeh(new_v)); } } return cost; } /** * Replace a whole vehicle chain * @param chain vehicle chain to let autoreplace/renew operator on * @param flags command flags * @param wagon_removal remove wagons when the resulting chain occupies more tiles than the old did * @param nothing_to_do is set to 'false' when something was done (only valid when not failed) * @return cost or error */ static CommandCost ReplaceChain(Vehicle **chain, DoCommandFlag flags, bool wagon_removal, bool *nothing_to_do) { Vehicle *old_head = *chain; assert(old_head->IsPrimaryVehicle()); CommandCost cost = CommandCost(EXPENSES_NEW_VEHICLES, 0); if (old_head->type == VEH_TRAIN) { /* Store the length of the old vehicle chain, rounded up to whole tiles */ uint16 old_total_length = CeilDiv(Train::From(old_head)->gcache.cached_total_length, TILE_SIZE) * TILE_SIZE; int num_units = 0; ///< Number of units in the chain for (Train *w = Train::From(old_head); w != NULL; w = w->GetNextUnit()) num_units++; Train **old_vehs = CallocT(num_units); ///< Will store vehicles of the old chain in their order Train **new_vehs = CallocT(num_units); ///< New vehicles corresponding to old_vehs or NULL if no replacement Money *new_costs = MallocT(num_units); ///< Costs for buying and refitting the new vehicles /* Collect vehicles and build replacements * Note: The replacement vehicles can only successfully build as long as the old vehicles are still in their chain */ int i; Train *w; for (w = Train::From(old_head), i = 0; w != NULL; w = w->GetNextUnit(), i++) { assert(i < num_units); old_vehs[i] = w; CommandCost ret = BuildReplacementVehicle(old_vehs[i], (Vehicle**)&new_vehs[i], true); cost.AddCost(ret); if (cost.Failed()) break; new_costs[i] = ret.GetCost(); if (new_vehs[i] != NULL) *nothing_to_do = false; } Train *new_head = (new_vehs[0] != NULL ? new_vehs[0] : old_vehs[0]); /* Note: When autoreplace has already failed here, old_vehs[] is not completely initialized. But it is also not needed. */ if (cost.Succeeded()) { /* Separate the head, so we can start constructing the new chain */ Train *second = Train::From(old_head)->GetNextUnit(); if (second != NULL) cost.AddCost(CmdMoveVehicle(second, NULL, DC_EXEC | DC_AUTOREPLACE, true)); assert(Train::From(new_head)->GetNextUnit() == NULL); /* Append engines to the new chain * We do this from back to front, so that the head of the temporary vehicle chain does not change all the time. * That way we also have less trouble when exceeding the unitnumber limit. * OTOH the vehicle attach callback is more expensive this way :s */ Train *last_engine = NULL; ///< Shall store the last engine unit after this step if (cost.Succeeded()) { for (int i = num_units - 1; i > 0; i--) { Train *append = (new_vehs[i] != NULL ? new_vehs[i] : old_vehs[i]); if (RailVehInfo(append->engine_type)->railveh_type == RAILVEH_WAGON) continue; if (new_vehs[i] != NULL) { /* Move the old engine to a separate row with DC_AUTOREPLACE. Else * moving the wagon in front may fail later due to unitnumber limit. * (We have to attach wagons without DC_AUTOREPLACE.) */ CmdMoveVehicle(old_vehs[i], NULL, DC_EXEC | DC_AUTOREPLACE, false); } if (last_engine == NULL) last_engine = append; cost.AddCost(CmdMoveVehicle(append, new_head, DC_EXEC, false)); if (cost.Failed()) break; } if (last_engine == NULL) last_engine = new_head; } /* When wagon removal is enabled and the new engines without any wagons are already longer than the old, we have to fail */ if (cost.Succeeded() && wagon_removal && new_head->gcache.cached_total_length > old_total_length) cost = CommandCost(STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT); /* Append/insert wagons into the new vehicle chain * We do this from back to front, so we can stop when wagon removal or maximum train length (i.e. from mammoth-train setting) is triggered. */ if (cost.Succeeded()) { for (int i = num_units - 1; i > 0; i--) { assert(last_engine != NULL); Vehicle *append = (new_vehs[i] != NULL ? new_vehs[i] : old_vehs[i]); if (RailVehInfo(append->engine_type)->railveh_type == RAILVEH_WAGON) { /* Insert wagon after 'last_engine' */ CommandCost res = CmdMoveVehicle(append, last_engine, DC_EXEC, false); /* When we allow removal of wagons, either the move failing due * to the train becoming too long, or the train becoming longer * would move the vehicle to the empty vehicle chain. */ if (wagon_removal && (res.Failed() ? res.GetErrorMessage() == STR_ERROR_TRAIN_TOO_LONG : new_head->gcache.cached_total_length > old_total_length)) { CmdMoveVehicle(append, NULL, DC_EXEC | DC_AUTOREPLACE, false); break; } cost.AddCost(res); if (cost.Failed()) break; } else { /* We have reached 'last_engine', continue with the next engine towards the front */ assert(append == last_engine); last_engine = last_engine->GetPrevUnit(); } } } /* Sell superfluous new vehicles that could not be inserted. */ if (cost.Succeeded() && wagon_removal) { assert(new_head->gcache.cached_total_length <= _settings_game.vehicle.max_train_length * TILE_SIZE); for (int i = 1; i < num_units; i++) { Vehicle *wagon = new_vehs[i]; if (wagon == NULL) continue; if (wagon->First() == new_head) break; assert(RailVehInfo(wagon->engine_type)->railveh_type == RAILVEH_WAGON); /* Sell wagon */ CommandCost ret = DoCommand(0, wagon->index, 0, DC_EXEC, GetCmdSellVeh(wagon)); assert(ret.Succeeded()); new_vehs[i] = NULL; /* Revert the money subtraction when the vehicle was built. * This value is different from the sell value, esp. because of refitting */ cost.AddCost(-new_costs[i]); } } /* The new vehicle chain is constructed, now take over orders and everything... */ if (cost.Succeeded()) cost.AddCost(CopyHeadSpecificThings(old_head, new_head, flags)); if (cost.Succeeded()) { /* Success ! */ if ((flags & DC_EXEC) != 0 && new_head != old_head) { *chain = new_head; } /* Transfer cargo of old vehicles and sell them */ for (int i = 0; i < num_units; i++) { Vehicle *w = old_vehs[i]; /* Is the vehicle again part of the new chain? * Note: We cannot test 'new_vehs[i] != NULL' as wagon removal might cause to remove both */ if (w->First() == new_head) continue; if ((flags & DC_EXEC) != 0) TransferCargo(w, new_head, true); /* Sell the vehicle. * Note: This might temporarly construct new trains, so use DC_AUTOREPLACE to prevent * it from failing due to engine limits. */ cost.AddCost(DoCommand(0, w->index, 0, flags | DC_AUTOREPLACE, GetCmdSellVeh(w))); if ((flags & DC_EXEC) != 0) { old_vehs[i] = NULL; if (i == 0) old_head = NULL; } } if ((flags & DC_EXEC) != 0) CheckCargoCapacity(new_head); } /* If we are not in DC_EXEC undo everything, i.e. rearrange old vehicles. * We do this from back to front, so that the head of the temporary vehicle chain does not change all the time. * Note: The vehicle attach callback is disabled here :) */ if ((flags & DC_EXEC) == 0) { /* Separate the head, so we can reattach the old vehicles */ Train *second = Train::From(old_head)->GetNextUnit(); if (second != NULL) CmdMoveVehicle(second, NULL, DC_EXEC | DC_AUTOREPLACE, true); assert(Train::From(old_head)->GetNextUnit() == NULL); for (int i = num_units - 1; i > 0; i--) { CommandCost ret = CmdMoveVehicle(old_vehs[i], old_head, DC_EXEC | DC_AUTOREPLACE, false); assert(ret.Succeeded()); } } } /* Finally undo buying of new vehicles */ if ((flags & DC_EXEC) == 0) { for (int i = num_units - 1; i >= 0; i--) { if (new_vehs[i] != NULL) { DoCommand(0, new_vehs[i]->index, 0, DC_EXEC, GetCmdSellVeh(new_vehs[i])); new_vehs[i] = NULL; } } } free(old_vehs); free(new_vehs); free(new_costs); } else { /* Build and refit replacement vehicle */ Vehicle *new_head = NULL; cost.AddCost(BuildReplacementVehicle(old_head, &new_head, true)); /* Was a new vehicle constructed? */ if (cost.Succeeded() && new_head != NULL) { *nothing_to_do = false; /* The new vehicle is constructed, now take over orders and everything... */ cost.AddCost(CopyHeadSpecificThings(old_head, new_head, flags)); if (cost.Succeeded()) { /* The new vehicle is constructed, now take over cargo */ if ((flags & DC_EXEC) != 0) { TransferCargo(old_head, new_head, true); *chain = new_head; } /* Sell the old vehicle */ cost.AddCost(DoCommand(0, old_head->index, 0, flags, GetCmdSellVeh(old_head))); } /* If we are not in DC_EXEC undo everything */ if ((flags & DC_EXEC) == 0) { DoCommand(0, new_head->index, 0, DC_EXEC, GetCmdSellVeh(new_head)); } } } return cost; } /** * Autoreplaces a vehicle * Trains are replaced as a whole chain, free wagons in depot are replaced on their own * @param tile not used * @param flags type of operation * @param p1 Index of vehicle * @param p2 not used * @param text unused * @return the cost of this operation or an error */ CommandCost CmdAutoreplaceVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Vehicle *v = Vehicle::GetIfValid(p1); if (v == NULL) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; if (!v->IsChainInDepot()) return CMD_ERROR; if (v->vehstatus & VS_CRASHED) return CMD_ERROR; bool free_wagon = false; if (v->type == VEH_TRAIN) { Train *t = Train::From(v); if (t->IsArticulatedPart() || t->IsRearDualheaded()) return CMD_ERROR; free_wagon = !t->IsFrontEngine(); if (free_wagon && t->First()->IsFrontEngine()) return CMD_ERROR; } else { if (!v->IsPrimaryVehicle()) return CMD_ERROR; } const Company *c = Company::Get(_current_company); bool wagon_removal = c->settings.renew_keep_length; /* Test whether any replacement is set, before issuing a whole lot of commands that would end in nothing changed */ Vehicle *w = v; bool any_replacements = false; while (w != NULL) { EngineID e; CommandCost cost = GetNewEngineType(w, c, false, e); if (cost.Failed()) return cost; any_replacements |= (e != INVALID_ENGINE); w = (!free_wagon && w->type == VEH_TRAIN ? Train::From(w)->GetNextUnit() : NULL); } CommandCost cost = CommandCost(EXPENSES_NEW_VEHICLES, 0); bool nothing_to_do = true; if (any_replacements) { bool was_stopped = free_wagon || ((v->vehstatus & VS_STOPPED) != 0); /* Stop the vehicle */ if (!was_stopped) cost.AddCost(CmdStartStopVehicle(v, true)); if (cost.Failed()) return cost; assert(free_wagon || v->IsStoppedInDepot()); /* We have to construct the new vehicle chain to test whether it is valid. * Vehicle construction needs random bits, so we have to save the random seeds * to prevent desyncs and to replay newgrf callbacks during DC_EXEC */ SavedRandomSeeds saved_seeds; SaveRandomSeeds(&saved_seeds); if (free_wagon) { cost.AddCost(ReplaceFreeUnit(&v, flags & ~DC_EXEC, ¬hing_to_do)); } else { cost.AddCost(ReplaceChain(&v, flags & ~DC_EXEC, wagon_removal, ¬hing_to_do)); } RestoreRandomSeeds(saved_seeds); if (cost.Succeeded() && (flags & DC_EXEC) != 0) { CommandCost ret; if (free_wagon) { ret = ReplaceFreeUnit(&v, flags, ¬hing_to_do); } else { ret = ReplaceChain(&v, flags, wagon_removal, ¬hing_to_do); } assert(ret.Succeeded() && ret.GetCost() == cost.GetCost()); } /* Restart the vehicle */ if (!was_stopped) cost.AddCost(CmdStartStopVehicle(v, false)); } if (cost.Succeeded() && nothing_to_do) cost = CommandCost(STR_ERROR_AUTOREPLACE_NOTHING_TO_DO); return cost; } /** * Change engine renewal parameters * @param tile unused * @param flags operation to perform * @param p1 packed data * - bit 0 = replace when engine gets old? * - bits 16-31 = engine group * @param p2 packed data * - bits 0-15 = old engine type * - bits 16-31 = new engine type * @param text unused * @return the cost of this operation or an error */ CommandCost CmdSetAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Company *c = Company::GetIfValid(_current_company); if (c == NULL) return CMD_ERROR; EngineID old_engine_type = GB(p2, 0, 16); EngineID new_engine_type = GB(p2, 16, 16); GroupID id_g = GB(p1, 16, 16); CommandCost cost; if (Group::IsValidID(id_g) ? Group::Get(id_g)->owner != _current_company : !IsAllGroupID(id_g) && !IsDefaultGroupID(id_g)) return CMD_ERROR; if (!Engine::IsValidID(old_engine_type)) return CMD_ERROR; if (new_engine_type != INVALID_ENGINE) { if (!Engine::IsValidID(new_engine_type)) return CMD_ERROR; if (!CheckAutoreplaceValidity(old_engine_type, new_engine_type, _current_company)) return CMD_ERROR; cost = AddEngineReplacementForCompany(c, old_engine_type, new_engine_type, id_g, HasBit(p1, 0), flags); } else { cost = RemoveEngineReplacementForCompany(c, old_engine_type, id_g, flags); } if (flags & DC_EXEC) { GroupStatistics::UpdateAutoreplace(_current_company); if (IsLocalCompany()) SetWindowDirty(WC_REPLACE_VEHICLE, Engine::Get(old_engine_type)->type); } if ((flags & DC_EXEC) && IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g); return cost; } openttd-1.3.3/src/smallmap_gui.cpp0000644000000000000000000017730012246102610015640 0ustar rootroot/* $Id: smallmap_gui.cpp 24958 2013-02-02 19:52:56Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file smallmap_gui.cpp GUI that shows a small map of the world with metadata like owner or height. */ #include "stdafx.h" #include "clear_map.h" #include "industry.h" #include "station_map.h" #include "landscape.h" #include "window_gui.h" #include "tree_map.h" #include "viewport_func.h" #include "town.h" #include "blitter/factory.hpp" #include "tunnelbridge_map.h" #include "strings_func.h" #include "core/endian_func.hpp" #include "vehicle_base.h" #include "sound_func.h" #include "window_func.h" #include "company_base.h" #include "widgets/smallmap_widget.h" #include "table/strings.h" static int _smallmap_industry_count; ///< Number of used industries static int _smallmap_company_count; ///< Number of entries in the owner legend. static const int NUM_NO_COMPANY_ENTRIES = 4; ///< Number of entries in the owner legend that are not companies. static const uint8 PC_ROUGH_LAND = 0x52; ///< Dark green palette colour for rough land. static const uint8 PC_GRASS_LAND = 0x54; ///< Dark green palette colour for grass land. static const uint8 PC_BARE_LAND = 0x37; ///< Brown palette colour for bare land. static const uint8 PC_FIELDS = 0x25; ///< Light brown palette colour for fields. static const uint8 PC_TREES = 0x57; ///< Green palette colour for trees. static const uint8 PC_WATER = 0xCA; ///< Dark blue palette colour for water. /** Macro for ordinary entry of LegendAndColour */ #define MK(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, false} /** Macro for a height legend entry with configurable colour. */ #define MC(height) {0, STR_TINY_BLACK_HEIGHT, INVALID_INDUSTRYTYPE, height, INVALID_COMPANY, true, false, false} /** Macro for non-company owned property entry of LegendAndColour */ #define MO(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, false} /** Macro used for forcing a rebuild of the owner legend the first time it is used. */ #define MOEND() {0, 0, INVALID_INDUSTRYTYPE, 0, OWNER_NONE, true, true, false} /** Macro for end of list marker in arrays of LegendAndColour */ #define MKEND() {0, STR_NULL, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, true, false} /** * Macro for break marker in arrays of LegendAndColour. * It will have valid data, though */ #define MS(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, true} /** Structure for holding relevant data for legends in small map */ struct LegendAndColour { uint8 colour; ///< Colour of the item on the map. StringID legend; ///< String corresponding to the coloured item. IndustryType type; ///< Type of industry. Only valid for industry entries. uint8 height; ///< Height in tiles. Only valid for height legend entries. CompanyID company; ///< Company to display. Only valid for company entries of the owner legend. bool show_on_map; ///< For filtering industries, if \c true, industry is shown on the map in colour. bool end; ///< This is the end of the list. bool col_break; ///< Perform a column break and go further at the next column. }; /** Legend text giving the colours to look for on the minimap */ static LegendAndColour _legend_land_contours[] = { /* The colours for the following values are set at BuildLandLegend() based on each colour scheme. */ MC(0), MC(4), MC(8), MC(12), MC(14), MS(PC_BLACK, STR_SMALLMAP_LEGENDA_ROADS), MK(PC_GREY, STR_SMALLMAP_LEGENDA_RAILROADS), MK(PC_LIGHT_BLUE, STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS), MK(PC_DARK_RED, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES), MK(PC_WHITE, STR_SMALLMAP_LEGENDA_VEHICLES), MKEND() }; static const LegendAndColour _legend_vehicles[] = { MK(PC_RED, STR_SMALLMAP_LEGENDA_TRAINS), MK(PC_YELLOW, STR_SMALLMAP_LEGENDA_ROAD_VEHICLES), MK(PC_LIGHT_BLUE, STR_SMALLMAP_LEGENDA_SHIPS), MK(PC_WHITE, STR_SMALLMAP_LEGENDA_AIRCRAFT), MS(PC_BLACK, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES), MK(PC_DARK_RED, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES), MKEND() }; static const LegendAndColour _legend_routes[] = { MK(PC_BLACK, STR_SMALLMAP_LEGENDA_ROADS), MK(PC_GREY, STR_SMALLMAP_LEGENDA_RAILROADS), MK(PC_DARK_RED, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES), MS(PC_VERY_DARK_BROWN, STR_SMALLMAP_LEGENDA_RAILROAD_STATION), MK(PC_ORANGE, STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY), MK(PC_YELLOW, STR_SMALLMAP_LEGENDA_BUS_STATION), MK(PC_RED, STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT), MK(PC_LIGHT_BLUE, STR_SMALLMAP_LEGENDA_DOCK), MKEND() }; static const LegendAndColour _legend_vegetation[] = { MK(PC_ROUGH_LAND, STR_SMALLMAP_LEGENDA_ROUGH_LAND), MK(PC_GRASS_LAND, STR_SMALLMAP_LEGENDA_GRASS_LAND), MK(PC_BARE_LAND, STR_SMALLMAP_LEGENDA_BARE_LAND), MK(PC_FIELDS, STR_SMALLMAP_LEGENDA_FIELDS), MK(PC_TREES, STR_SMALLMAP_LEGENDA_TREES), MK(PC_GREEN, STR_SMALLMAP_LEGENDA_FOREST), MS(PC_GREY, STR_SMALLMAP_LEGENDA_ROCKS), MK(PC_ORANGE, STR_SMALLMAP_LEGENDA_DESERT), MK(PC_LIGHT_BLUE, STR_SMALLMAP_LEGENDA_SNOW), MK(PC_BLACK, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES), MK(PC_DARK_RED, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES), MKEND() }; static LegendAndColour _legend_land_owners[NUM_NO_COMPANY_ENTRIES + MAX_COMPANIES + 1] = { MO(PC_WATER, STR_SMALLMAP_LEGENDA_WATER), MO(0x00, STR_SMALLMAP_LEGENDA_NO_OWNER), // This colour will vary depending on settings. MO(PC_DARK_RED, STR_SMALLMAP_LEGENDA_TOWNS), MO(PC_DARK_GREY, STR_SMALLMAP_LEGENDA_INDUSTRIES), /* The legend will be terminated the first time it is used. */ MOEND(), }; #undef MK #undef MC #undef MS #undef MO #undef MOEND #undef MKEND /** * Allow room for all industries, plus a terminator entry * This is required in order to have the industry slots all filled up */ static LegendAndColour _legend_from_industries[NUM_INDUSTRYTYPES + 1]; /** For connecting industry type to position in industries list(small map legend) */ static uint _industry_to_list_pos[NUM_INDUSTRYTYPES]; /** Show heightmap in industry and owner mode of smallmap window. */ static bool _smallmap_show_heightmap = false; /** Highlight a specific industry type */ static IndustryType _smallmap_industry_highlight = INVALID_INDUSTRYTYPE; /** State of highlight blinking */ static bool _smallmap_industry_highlight_state; /** For connecting company ID to position in owner list (small map legend) */ static uint _company_to_list_pos[MAX_COMPANIES]; /** * Fills an array for the industries legends. */ void BuildIndustriesLegend() { uint j = 0; /* Add each name */ for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) { IndustryType ind = _sorted_industry_types[i]; const IndustrySpec *indsp = GetIndustrySpec(ind); if (indsp->enabled) { _legend_from_industries[j].legend = indsp->name; _legend_from_industries[j].colour = indsp->map_colour; _legend_from_industries[j].type = ind; _legend_from_industries[j].show_on_map = true; _legend_from_industries[j].col_break = false; _legend_from_industries[j].end = false; /* Store widget number for this industry type. */ _industry_to_list_pos[ind] = j; j++; } } /* Terminate the list */ _legend_from_industries[j].end = true; /* Store number of enabled industries */ _smallmap_industry_count = j; } static const LegendAndColour * const _legend_table[] = { _legend_land_contours, _legend_vehicles, _legend_from_industries, _legend_routes, _legend_vegetation, _legend_land_owners, }; #define MKCOLOUR(x) TO_LE32X(x) #define MKCOLOUR_XXXX(x) (MKCOLOUR(0x01010101) * (uint)(x)) #define MKCOLOUR_X0X0(x) (MKCOLOUR(0x01000100) * (uint)(x)) #define MKCOLOUR_0X0X(x) (MKCOLOUR(0x00010001) * (uint)(x)) #define MKCOLOUR_0XX0(x) (MKCOLOUR(0x00010100) * (uint)(x)) #define MKCOLOUR_X00X(x) (MKCOLOUR(0x01000001) * (uint)(x)) #define MKCOLOUR_XYXY(x, y) (MKCOLOUR_X0X0(x) | MKCOLOUR_0X0X(y)) #define MKCOLOUR_XYYX(x, y) (MKCOLOUR_X00X(x) | MKCOLOUR_0XX0(y)) #define MKCOLOUR_0000 MKCOLOUR_XXXX(0x00) #define MKCOLOUR_0FF0 MKCOLOUR_0XX0(0xFF) #define MKCOLOUR_F00F MKCOLOUR_X00X(0xFF) #define MKCOLOUR_FFFF MKCOLOUR_XXXX(0xFF) /** Height map colours for the green colour scheme, ordered by height. */ static const uint32 _green_map_heights[] = { MKCOLOUR_XXXX(0x5A), MKCOLOUR_XYXY(0x5A, 0x5B), MKCOLOUR_XXXX(0x5B), MKCOLOUR_XYXY(0x5B, 0x5C), MKCOLOUR_XXXX(0x5C), MKCOLOUR_XYXY(0x5C, 0x5D), MKCOLOUR_XXXX(0x5D), MKCOLOUR_XYXY(0x5D, 0x5E), MKCOLOUR_XXXX(0x5E), MKCOLOUR_XYXY(0x5E, 0x5F), MKCOLOUR_XXXX(0x5F), MKCOLOUR_XYXY(0x5F, 0x1F), MKCOLOUR_XXXX(0x1F), MKCOLOUR_XYXY(0x1F, 0x27), MKCOLOUR_XXXX(0x27), MKCOLOUR_XXXX(0x27), }; assert_compile(lengthof(_green_map_heights) == MAX_TILE_HEIGHT + 1); /** Height map colours for the dark green colour scheme, ordered by height. */ static const uint32 _dark_green_map_heights[] = { MKCOLOUR_XXXX(0x60), MKCOLOUR_XYXY(0x60, 0x61), MKCOLOUR_XXXX(0x61), MKCOLOUR_XYXY(0x61, 0x62), MKCOLOUR_XXXX(0x62), MKCOLOUR_XYXY(0x62, 0x63), MKCOLOUR_XXXX(0x63), MKCOLOUR_XYXY(0x63, 0x64), MKCOLOUR_XXXX(0x64), MKCOLOUR_XYXY(0x64, 0x65), MKCOLOUR_XXXX(0x65), MKCOLOUR_XYXY(0x65, 0x66), MKCOLOUR_XXXX(0x66), MKCOLOUR_XYXY(0x66, 0x67), MKCOLOUR_XXXX(0x67), MKCOLOUR_XXXX(0x67), }; assert_compile(lengthof(_dark_green_map_heights) == MAX_TILE_HEIGHT + 1); /** Height map colours for the violet colour scheme, ordered by height. */ static const uint32 _violet_map_heights[] = { MKCOLOUR_XXXX(0x80), MKCOLOUR_XYXY(0x80, 0x81), MKCOLOUR_XXXX(0x81), MKCOLOUR_XYXY(0x81, 0x82), MKCOLOUR_XXXX(0x82), MKCOLOUR_XYXY(0x82, 0x83), MKCOLOUR_XXXX(0x83), MKCOLOUR_XYXY(0x83, 0x84), MKCOLOUR_XXXX(0x84), MKCOLOUR_XYXY(0x84, 0x85), MKCOLOUR_XXXX(0x85), MKCOLOUR_XYXY(0x85, 0x86), MKCOLOUR_XXXX(0x86), MKCOLOUR_XYXY(0x86, 0x87), MKCOLOUR_XXXX(0x87), MKCOLOUR_XXXX(0x87), }; assert_compile(lengthof(_violet_map_heights) == MAX_TILE_HEIGHT + 1); /** Colour scheme of the smallmap. */ struct SmallMapColourScheme { const uint32 *height_colours; ///< Colour of each level in a heightmap. uint32 default_colour; ///< Default colour of the land. }; /** Available colour schemes for height maps. */ static const SmallMapColourScheme _heightmap_schemes[] = { {_green_map_heights, MKCOLOUR_XXXX(0x54)}, ///< Green colour scheme. {_dark_green_map_heights, MKCOLOUR_XXXX(0x62)}, ///< Dark green colour scheme. {_violet_map_heights, MKCOLOUR_XXXX(0x82)}, ///< Violet colour scheme. }; /** * (Re)build the colour tables for the legends. */ void BuildLandLegend() { for (LegendAndColour *lc = _legend_land_contours; lc->legend == STR_TINY_BLACK_HEIGHT; lc++) { lc->colour = _heightmap_schemes[_settings_client.gui.smallmap_land_colour].height_colours[lc->height]; } } /** * Completes the array for the owned property legend. */ void BuildOwnerLegend() { _legend_land_owners[1].colour = _heightmap_schemes[_settings_client.gui.smallmap_land_colour].default_colour; int i = NUM_NO_COMPANY_ENTRIES; const Company *c; FOR_ALL_COMPANIES(c) { _legend_land_owners[i].colour = _colour_gradient[c->colour][5]; _legend_land_owners[i].company = c->index; _legend_land_owners[i].show_on_map = true; _legend_land_owners[i].col_break = false; _legend_land_owners[i].end = false; _company_to_list_pos[c->index] = i; i++; } /* Terminate the list */ _legend_land_owners[i].end = true; /* Store maximum amount of owner legend entries. */ _smallmap_company_count = i; } struct AndOr { uint32 mor; uint32 mand; }; static inline uint32 ApplyMask(uint32 colour, const AndOr *mask) { return (colour & mask->mand) | mask->mor; } /** Colour masks for "Contour" and "Routes" modes. */ static const AndOr _smallmap_contours_andor[] = { {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_CLEAR {MKCOLOUR_0XX0(PC_GREY ), MKCOLOUR_F00F}, // MP_RAILWAY {MKCOLOUR_0XX0(PC_BLACK ), MKCOLOUR_F00F}, // MP_ROAD {MKCOLOUR_0XX0(PC_DARK_RED ), MKCOLOUR_F00F}, // MP_HOUSE {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_TREES {MKCOLOUR_XXXX(PC_LIGHT_BLUE), MKCOLOUR_0000}, // MP_STATION {MKCOLOUR_XXXX(PC_WATER ), MKCOLOUR_0000}, // MP_WATER {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_VOID {MKCOLOUR_XXXX(PC_DARK_RED ), MKCOLOUR_0000}, // MP_INDUSTRY {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_TUNNELBRIDGE {MKCOLOUR_0XX0(PC_DARK_RED ), MKCOLOUR_F00F}, // MP_OBJECT {MKCOLOUR_0XX0(PC_GREY ), MKCOLOUR_F00F}, }; /** Colour masks for "Vehicles", "Industry", and "Vegetation" modes. */ static const AndOr _smallmap_vehicles_andor[] = { {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_CLEAR {MKCOLOUR_0XX0(PC_BLACK ), MKCOLOUR_F00F}, // MP_RAILWAY {MKCOLOUR_0XX0(PC_BLACK ), MKCOLOUR_F00F}, // MP_ROAD {MKCOLOUR_0XX0(PC_DARK_RED ), MKCOLOUR_F00F}, // MP_HOUSE {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_TREES {MKCOLOUR_0XX0(PC_BLACK ), MKCOLOUR_F00F}, // MP_STATION {MKCOLOUR_XXXX(PC_WATER ), MKCOLOUR_0000}, // MP_WATER {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_VOID {MKCOLOUR_XXXX(PC_DARK_RED ), MKCOLOUR_0000}, // MP_INDUSTRY {MKCOLOUR_0000 , MKCOLOUR_FFFF}, // MP_TUNNELBRIDGE {MKCOLOUR_0XX0(PC_DARK_RED ), MKCOLOUR_F00F}, // MP_OBJECT {MKCOLOUR_0XX0(PC_BLACK ), MKCOLOUR_F00F}, }; /** Mapping of tile type to importance of the tile (higher number means more interesting to show). */ static const byte _tiletype_importance[] = { 2, // MP_CLEAR 8, // MP_RAILWAY 7, // MP_ROAD 5, // MP_HOUSE 2, // MP_TREES 9, // MP_STATION 2, // MP_WATER 1, // MP_VOID 6, // MP_INDUSTRY 8, // MP_TUNNELBRIDGE 2, // MP_OBJECT 0, }; static inline TileType GetEffectiveTileType(TileIndex tile) { TileType t = GetTileType(tile); if (t == MP_TUNNELBRIDGE) { TransportType tt = GetTunnelBridgeTransportType(tile); switch (tt) { case TRANSPORT_RAIL: t = MP_RAILWAY; break; case TRANSPORT_ROAD: t = MP_ROAD; break; default: t = MP_WATER; break; } } return t; } /** * Return the colour a tile would be displayed with in the small map in mode "Contour". * @param tile The tile of which we would like to get the colour. * @param t Effective tile type of the tile (see #GetEffectiveTileType). * @return The colour of tile in the small map in mode "Contour" */ static inline uint32 GetSmallMapContoursPixels(TileIndex tile, TileType t) { const SmallMapColourScheme *cs = &_heightmap_schemes[_settings_client.gui.smallmap_land_colour]; return ApplyMask(cs->height_colours[TileHeight(tile)], &_smallmap_contours_andor[t]); } /** * Return the colour a tile would be displayed with in the small map in mode "Vehicles". * * @param tile The tile of which we would like to get the colour. * @param t Effective tile type of the tile (see #GetEffectiveTileType). * @return The colour of tile in the small map in mode "Vehicles" */ static inline uint32 GetSmallMapVehiclesPixels(TileIndex tile, TileType t) { const SmallMapColourScheme *cs = &_heightmap_schemes[_settings_client.gui.smallmap_land_colour]; return ApplyMask(cs->default_colour, &_smallmap_vehicles_andor[t]); } /** * Return the colour a tile would be displayed with in the small map in mode "Industries". * * @param tile The tile of which we would like to get the colour. * @param t Effective tile type of the tile (see #GetEffectiveTileType). * @return The colour of tile in the small map in mode "Industries" */ static inline uint32 GetSmallMapIndustriesPixels(TileIndex tile, TileType t) { if (t == MP_INDUSTRY) { /* If industry is allowed to be seen, use its colour on the map */ IndustryType type = Industry::GetByTile(tile)->type; if (_legend_from_industries[_industry_to_list_pos[type]].show_on_map && (_smallmap_industry_highlight_state || type != _smallmap_industry_highlight)) { return (type == _smallmap_industry_highlight ? PC_WHITE : GetIndustrySpec(Industry::GetByTile(tile)->type)->map_colour) * 0x01010101; } else { /* Otherwise, return the colour which will make it disappear */ t = (IsTileOnWater(tile) ? MP_WATER : MP_CLEAR); } } const SmallMapColourScheme *cs = &_heightmap_schemes[_settings_client.gui.smallmap_land_colour]; return ApplyMask(_smallmap_show_heightmap ? cs->height_colours[TileHeight(tile)] : cs->default_colour, &_smallmap_vehicles_andor[t]); } /** * Return the colour a tile would be displayed with in the small map in mode "Routes". * * @param tile The tile of which we would like to get the colour. * @param t Effective tile type of the tile (see #GetEffectiveTileType). * @return The colour of tile in the small map in mode "Routes" */ static inline uint32 GetSmallMapRoutesPixels(TileIndex tile, TileType t) { if (t == MP_STATION) { switch (GetStationType(tile)) { case STATION_RAIL: return MKCOLOUR_XXXX(PC_VERY_DARK_BROWN); case STATION_AIRPORT: return MKCOLOUR_XXXX(PC_RED); case STATION_TRUCK: return MKCOLOUR_XXXX(PC_ORANGE); case STATION_BUS: return MKCOLOUR_XXXX(PC_YELLOW); case STATION_DOCK: return MKCOLOUR_XXXX(PC_LIGHT_BLUE); default: return MKCOLOUR_FFFF; } } else if (t == MP_RAILWAY) { AndOr andor = { MKCOLOUR_0XX0(GetRailTypeInfo(GetRailType(tile))->map_colour), _smallmap_contours_andor[t].mand }; const SmallMapColourScheme *cs = &_heightmap_schemes[_settings_client.gui.smallmap_land_colour]; return ApplyMask(cs->default_colour, &andor); } /* Ground colour */ const SmallMapColourScheme *cs = &_heightmap_schemes[_settings_client.gui.smallmap_land_colour]; return ApplyMask(cs->default_colour, &_smallmap_contours_andor[t]); } static const uint32 _vegetation_clear_bits[] = { MKCOLOUR_XXXX(PC_GRASS_LAND), ///< full grass MKCOLOUR_XXXX(PC_ROUGH_LAND), ///< rough land MKCOLOUR_XXXX(PC_GREY), ///< rocks MKCOLOUR_XXXX(PC_FIELDS), ///< fields MKCOLOUR_XXXX(PC_LIGHT_BLUE), ///< snow MKCOLOUR_XXXX(PC_ORANGE), ///< desert MKCOLOUR_XXXX(PC_GRASS_LAND), ///< unused MKCOLOUR_XXXX(PC_GRASS_LAND), ///< unused }; /** * Return the colour a tile would be displayed with in the smallmap in mode "Vegetation". * * @param tile The tile of which we would like to get the colour. * @param t Effective tile type of the tile (see #GetEffectiveTileType). * @return The colour of tile in the smallmap in mode "Vegetation" */ static inline uint32 GetSmallMapVegetationPixels(TileIndex tile, TileType t) { switch (t) { case MP_CLEAR: return (IsClearGround(tile, CLEAR_GRASS) && GetClearDensity(tile) < 3) ? MKCOLOUR_XXXX(PC_BARE_LAND) : _vegetation_clear_bits[GetClearGround(tile)]; case MP_INDUSTRY: return IsTileForestIndustry(tile) ? MKCOLOUR_XXXX(PC_GREEN) : MKCOLOUR_XXXX(PC_DARK_RED); case MP_TREES: if (GetTreeGround(tile) == TREE_GROUND_SNOW_DESERT || GetTreeGround(tile) == TREE_GROUND_ROUGH_SNOW) { return (_settings_game.game_creation.landscape == LT_ARCTIC) ? MKCOLOUR_XYYX(PC_LIGHT_BLUE, PC_TREES) : MKCOLOUR_XYYX(PC_ORANGE, PC_TREES); } return MKCOLOUR_XYYX(PC_GRASS_LAND, PC_TREES); default: return ApplyMask(MKCOLOUR_XXXX(PC_GRASS_LAND), &_smallmap_vehicles_andor[t]); } } /** * Return the colour a tile would be displayed with in the small map in mode "Owner". * * @param tile The tile of which we would like to get the colour. * @param t Effective tile type of the tile (see #GetEffectiveTileType). * @return The colour of tile in the small map in mode "Owner" */ static inline uint32 GetSmallMapOwnerPixels(TileIndex tile, TileType t) { Owner o; switch (t) { case MP_INDUSTRY: return MKCOLOUR_XXXX(PC_DARK_GREY); case MP_HOUSE: return MKCOLOUR_XXXX(PC_DARK_RED); default: o = GetTileOwner(tile); break; /* FIXME: For MP_ROAD there are multiple owners. * GetTileOwner returns the rail owner (level crossing) resp. the owner of ROADTYPE_ROAD (normal road), * even if there are no ROADTYPE_ROAD bits on the tile. */ } if ((o < MAX_COMPANIES && !_legend_land_owners[_company_to_list_pos[o]].show_on_map) || o == OWNER_NONE || o == OWNER_WATER) { if (t == MP_WATER) return MKCOLOUR_XXXX(PC_WATER); const SmallMapColourScheme *cs = &_heightmap_schemes[_settings_client.gui.smallmap_land_colour]; return _smallmap_show_heightmap ? cs->height_colours[TileHeight(tile)] : cs->default_colour; } else if (o == OWNER_TOWN) { return MKCOLOUR_XXXX(PC_DARK_RED); } return MKCOLOUR_XXXX(_legend_land_owners[_company_to_list_pos[o]].colour); } /** Vehicle colours in #SMT_VEHICLES mode. Indexed by #VehicleTypeByte. */ static const byte _vehicle_type_colours[6] = { PC_RED, PC_YELLOW, PC_LIGHT_BLUE, PC_WHITE, PC_BLACK, PC_RED }; /** Class managing the smallmap window. */ class SmallMapWindow : public Window { /** Types of legends in the #WID_SM_LEGEND widget. */ enum SmallMapType { SMT_CONTOUR, SMT_VEHICLES, SMT_INDUSTRY, SMT_ROUTES, SMT_VEGETATION, SMT_OWNER, }; /** Available kinds of zoomlevel changes. */ enum ZoomLevelChange { ZLC_INITIALIZE, ///< Initialize zoom level. ZLC_ZOOM_OUT, ///< Zoom out. ZLC_ZOOM_IN, ///< Zoom in. }; static SmallMapType map_type; ///< Currently displayed legends. static bool show_towns; ///< Display town names in the smallmap. static const uint LEGEND_BLOB_WIDTH = 8; ///< Width of the coloured blob in front of a line text in the #WID_SM_LEGEND widget. static const uint INDUSTRY_MIN_NUMBER_OF_COLUMNS = 2; ///< Minimal number of columns in the #WID_SM_LEGEND widget for the #SMT_INDUSTRY legend. uint min_number_of_fixed_rows; ///< Minimal number of rows in the legends for the fixed layouts only (all except #SMT_INDUSTRY). uint column_width; ///< Width of a column in the #WID_SM_LEGEND widget. int32 scroll_x; ///< Horizontal world coordinate of the base tile left of the top-left corner of the smallmap display. int32 scroll_y; ///< Vertical world coordinate of the base tile left of the top-left corner of the smallmap display. int32 subscroll; ///< Number of pixels (0..3) between the right end of the base tile and the pixel at the top-left corner of the smallmap display. int zoom; ///< Zoom level. Bigger number means more zoom-out (further away). static const uint FORCE_REFRESH_PERIOD = 0x1F; ///< map is redrawn after that many ticks static const uint BLINK_PERIOD = 0x0F; ///< highlight blinking interval uint8 refresh; ///< refresh counter, zeroed every FORCE_REFRESH_PERIOD ticks inline Point SmallmapRemapCoords(int x, int y) const { Point pt; pt.x = (y - x) * 2; pt.y = y + x; return pt; } /** * Remap tile to location on this smallmap. * @param tile_x X coordinate of the tile. * @param tile_y Y coordinate of the tile. * @return Position to draw on. */ inline Point RemapTile(int tile_x, int tile_y) const { int x_offset = tile_x - this->scroll_x / (int)TILE_SIZE; int y_offset = tile_y - this->scroll_y / (int)TILE_SIZE; if (this->zoom == 1) return SmallmapRemapCoords(x_offset, y_offset); /* For negative offsets, round towards -inf. */ if (x_offset < 0) x_offset -= this->zoom - 1; if (y_offset < 0) y_offset -= this->zoom - 1; return SmallmapRemapCoords(x_offset / this->zoom, y_offset / this->zoom); } /** * Determine the tile relative to the base tile of the smallmap, and the pixel position at * that tile for a point in the smallmap. * @param px Horizontal coordinate of the pixel. * @param py Vertical coordinate of the pixel. * @param sub[out] Pixel position at the tile (0..3). * @param add_sub Add current #subscroll to the position. * @return Tile being displayed at the given position relative to #scroll_x and #scroll_y. * @note The #subscroll offset is already accounted for. */ inline Point PixelToTile(int px, int py, int *sub, bool add_sub = true) const { if (add_sub) px += this->subscroll; // Total horizontal offset. /* For each two rows down, add a x and a y tile, and * For each four pixels to the right, move a tile to the right. */ Point pt = {((py >> 1) - (px >> 2)) * this->zoom, ((py >> 1) + (px >> 2)) * this->zoom}; px &= 3; if (py & 1) { // Odd number of rows, handle the 2 pixel shift. if (px < 2) { pt.x += this->zoom; px += 2; } else { pt.y += this->zoom; px -= 2; } } *sub = px; return pt; } /** * Compute base parameters of the smallmap such that tile (\a tx, \a ty) starts at pixel (\a x, \a y). * @param tx Tile x coordinate. * @param ty Tile y coordinate. * @param x Non-negative horizontal position in the display where the tile starts. * @param y Non-negative vertical position in the display where the tile starts. * @param sub [out] Value of #subscroll needed. * @return #scroll_x, #scroll_y values. */ Point ComputeScroll(int tx, int ty, int x, int y, int *sub) { assert(x >= 0 && y >= 0); int new_sub; Point tile_xy = PixelToTile(x, y, &new_sub, false); tx -= tile_xy.x; ty -= tile_xy.y; Point scroll; if (new_sub == 0) { *sub = 0; scroll.x = (tx + this->zoom) * TILE_SIZE; scroll.y = (ty - this->zoom) * TILE_SIZE; } else { *sub = 4 - new_sub; scroll.x = (tx + 2 * this->zoom) * TILE_SIZE; scroll.y = (ty - 2 * this->zoom) * TILE_SIZE; } return scroll; } /** * Initialize or change the zoom level. * @param change Way to change the zoom level. * @param zoom_pt Position to keep fixed while zooming. * @pre \c *zoom_pt should contain a point in the smallmap display when zooming in or out. */ void SetZoomLevel(ZoomLevelChange change, const Point *zoom_pt) { static const int zoomlevels[] = {1, 2, 4, 6, 8}; // Available zoom levels. Bigger number means more zoom-out (further away). static const int MIN_ZOOM_INDEX = 0; static const int MAX_ZOOM_INDEX = lengthof(zoomlevels) - 1; int new_index, cur_index, sub; Point tile; switch (change) { case ZLC_INITIALIZE: cur_index = - 1; // Definitely different from new_index. new_index = MIN_ZOOM_INDEX; break; case ZLC_ZOOM_IN: case ZLC_ZOOM_OUT: for (cur_index = MIN_ZOOM_INDEX; cur_index <= MAX_ZOOM_INDEX; cur_index++) { if (this->zoom == zoomlevels[cur_index]) break; } assert(cur_index <= MAX_ZOOM_INDEX); tile = this->PixelToTile(zoom_pt->x, zoom_pt->y, &sub); new_index = Clamp(cur_index + ((change == ZLC_ZOOM_IN) ? -1 : 1), MIN_ZOOM_INDEX, MAX_ZOOM_INDEX); break; default: NOT_REACHED(); } if (new_index != cur_index) { this->zoom = zoomlevels[new_index]; if (cur_index >= 0) { Point new_tile = this->PixelToTile(zoom_pt->x, zoom_pt->y, &sub); this->SetNewScroll(this->scroll_x + (tile.x - new_tile.x) * TILE_SIZE, this->scroll_y + (tile.y - new_tile.y) * TILE_SIZE, sub); } this->SetWidgetDisabledState(WID_SM_ZOOM_IN, this->zoom == zoomlevels[MIN_ZOOM_INDEX]); this->SetWidgetDisabledState(WID_SM_ZOOM_OUT, this->zoom == zoomlevels[MAX_ZOOM_INDEX]); this->SetDirty(); } } /** * Decide which colours to show to the user for a group of tiles. * @param ta Tile area to investigate. * @return Colours to display. */ inline uint32 GetTileColours(const TileArea &ta) const { int importance = 0; TileIndex tile = INVALID_TILE; // Position of the most important tile. TileType et = MP_VOID; // Effective tile type at that position. TILE_AREA_LOOP(ti, ta) { TileType ttype = GetEffectiveTileType(ti); if (_tiletype_importance[ttype] > importance) { importance = _tiletype_importance[ttype]; tile = ti; et = ttype; } } switch (this->map_type) { case SMT_CONTOUR: return GetSmallMapContoursPixels(tile, et); case SMT_VEHICLES: return GetSmallMapVehiclesPixels(tile, et); case SMT_INDUSTRY: return GetSmallMapIndustriesPixels(tile, et); case SMT_ROUTES: return GetSmallMapRoutesPixels(tile, et); case SMT_VEGETATION: return GetSmallMapVegetationPixels(tile, et); case SMT_OWNER: return GetSmallMapOwnerPixels(tile, et); default: NOT_REACHED(); } } /** * Draws one column of tiles of the small map in a certain mode onto the screen buffer, skipping the shifted rows in between. * * @param dst Pointer to a part of the screen buffer to write to. * @param xc The X coordinate of the first tile in the column. * @param yc The Y coordinate of the first tile in the column * @param pitch Number of pixels to advance in the screen buffer each time a pixel is written. * @param reps Number of lines to draw * @param start_pos Position of first pixel to draw. * @param end_pos Position of last pixel to draw (exclusive). * @param blitter current blitter * @note If pixel position is below \c 0, skip drawing. */ void DrawSmallMapColumn(void *dst, uint xc, uint yc, int pitch, int reps, int start_pos, int end_pos, Blitter *blitter) const { void *dst_ptr_abs_end = blitter->MoveTo(_screen.dst_ptr, 0, _screen.height); uint min_xy = _settings_game.construction.freeform_edges ? 1 : 0; do { /* Check if the tile (xc,yc) is within the map range */ if (xc >= MapMaxX() || yc >= MapMaxY()) continue; /* Check if the dst pointer points to a pixel inside the screen buffer */ if (dst < _screen.dst_ptr) continue; if (dst >= dst_ptr_abs_end) continue; /* Construct tilearea covered by (xc, yc, xc + this->zoom, yc + this->zoom) such that it is within min_xy limits. */ TileArea ta; if (min_xy == 1 && (xc == 0 || yc == 0)) { if (this->zoom == 1) continue; // The tile area is empty, don't draw anything. ta = TileArea(TileXY(max(min_xy, xc), max(min_xy, yc)), this->zoom - (xc == 0), this->zoom - (yc == 0)); } else { ta = TileArea(TileXY(xc, yc), this->zoom, this->zoom); } ta.ClampToMap(); // Clamp to map boundaries (may contain MP_VOID tiles!). uint32 val = this->GetTileColours(ta); uint8 *val8 = (uint8 *)&val; int idx = max(0, -start_pos); for (int pos = max(0, start_pos); pos < end_pos; pos++) { blitter->SetPixel(dst, idx, 0, val8[idx]); idx++; } /* Switch to next tile in the column */ } while (xc += this->zoom, yc += this->zoom, dst = blitter->MoveTo(dst, pitch, 0), --reps != 0); } /** * Adds vehicles to the smallmap. * @param dpi the part of the smallmap to be drawn into * @param blitter current blitter */ void DrawVehicles(const DrawPixelInfo *dpi, Blitter *blitter) const { const Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->type == VEH_EFFECT) continue; if (v->vehstatus & (VS_HIDDEN | VS_UNCLICKABLE)) continue; /* Remap into flat coordinates. */ Point pt = this->RemapTile(v->x_pos / TILE_SIZE, v->y_pos / TILE_SIZE); int y = pt.y - dpi->top; if (!IsInsideMM(y, 0, dpi->height)) continue; // y is out of bounds. bool skip = false; // Default is to draw both pixels. int x = pt.x - this->subscroll - 3 - dpi->left; // Offset X coordinate. if (x < 0) { /* if x+1 is 0, that means we're on the very left edge, * and should thus only draw a single pixel */ if (++x != 0) continue; skip = true; } else if (x >= dpi->width - 1) { /* Check if we're at the very right edge, and if so draw only a single pixel */ if (x != dpi->width - 1) continue; skip = true; } /* Calculate pointer to pixel and the colour */ byte colour = (this->map_type == SMT_VEHICLES) ? _vehicle_type_colours[v->type] : PC_WHITE; /* And draw either one or two pixels depending on clipping */ blitter->SetPixel(dpi->dst_ptr, x, y, colour); if (!skip) blitter->SetPixel(dpi->dst_ptr, x + 1, y, colour); } } /** * Adds town names to the smallmap. * @param dpi the part of the smallmap to be drawn into */ void DrawTowns(const DrawPixelInfo *dpi) const { const Town *t; FOR_ALL_TOWNS(t) { /* Remap the town coordinate */ Point pt = this->RemapTile(TileX(t->xy), TileY(t->xy)); int x = pt.x - this->subscroll - (t->cache.sign.width_small >> 1); int y = pt.y; /* Check if the town sign is within bounds */ if (x + t->cache.sign.width_small > dpi->left && x < dpi->left + dpi->width && y + FONT_HEIGHT_SMALL > dpi->top && y < dpi->top + dpi->height) { /* And draw it. */ SetDParam(0, t->index); DrawString(x, x + t->cache.sign.width_small, y, STR_SMALLMAP_TOWN); } } } /** * Draws vertical part of map indicator * @param x X coord of left/right border of main viewport * @param y Y coord of top border of main viewport * @param y2 Y coord of bottom border of main viewport */ static inline void DrawVertMapIndicator(int x, int y, int y2) { GfxFillRect(x, y, x, y + 3, PC_VERY_LIGHT_YELLOW); GfxFillRect(x, y2 - 3, x, y2, PC_VERY_LIGHT_YELLOW); } /** * Draws horizontal part of map indicator * @param x X coord of left border of main viewport * @param x2 X coord of right border of main viewport * @param y Y coord of top/bottom border of main viewport */ static inline void DrawHorizMapIndicator(int x, int x2, int y) { GfxFillRect(x, y, x + 3, y, PC_VERY_LIGHT_YELLOW); GfxFillRect(x2 - 3, y, x2, y, PC_VERY_LIGHT_YELLOW); } /** * Adds map indicators to the smallmap. */ void DrawMapIndicators() const { /* Find main viewport. */ const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; Point tile = InverseRemapCoords(vp->virtual_left, vp->virtual_top); Point tl = this->RemapTile(tile.x >> 4, tile.y >> 4); tl.x -= this->subscroll; tile = InverseRemapCoords(vp->virtual_left + vp->virtual_width, vp->virtual_top + vp->virtual_height); Point br = this->RemapTile(tile.x >> 4, tile.y >> 4); br.x -= this->subscroll; SmallMapWindow::DrawVertMapIndicator(tl.x, tl.y, br.y); SmallMapWindow::DrawVertMapIndicator(br.x, tl.y, br.y); SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, tl.y); SmallMapWindow::DrawHorizMapIndicator(tl.x, br.x, br.y); } /** * Draws the small map. * * Basically, the small map is draw column of pixels by column of pixels. The pixels * are drawn directly into the screen buffer. The final map is drawn in multiple passes. * The passes are: *

  1. The colours of tiles in the different modes.
  2. *
  3. Town names (optional)
* * @param dpi pointer to pixel to write onto */ void DrawSmallMap(DrawPixelInfo *dpi) const { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); DrawPixelInfo *old_dpi; old_dpi = _cur_dpi; _cur_dpi = dpi; /* Clear it */ GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, PC_BLACK); /* Which tile is displayed at (dpi->left, dpi->top)? */ int dx; Point tile = this->PixelToTile(dpi->left, dpi->top, &dx); int tile_x = this->scroll_x / (int)TILE_SIZE + tile.x; int tile_y = this->scroll_y / (int)TILE_SIZE + tile.y; void *ptr = blitter->MoveTo(dpi->dst_ptr, -dx - 4, 0); int x = - dx - 4; int y = 0; for (;;) { /* Distance from left edge */ if (x >= -3) { if (x >= dpi->width) break; // Exit the loop. int end_pos = min(dpi->width, x + 4); int reps = (dpi->height - y + 1) / 2; // Number of lines. if (reps > 0) { this->DrawSmallMapColumn(ptr, tile_x, tile_y, dpi->pitch * 2, reps, x, end_pos, blitter); } } if (y == 0) { tile_y += this->zoom; y++; ptr = blitter->MoveTo(ptr, 0, 1); } else { tile_x -= this->zoom; y--; ptr = blitter->MoveTo(ptr, 0, -1); } ptr = blitter->MoveTo(ptr, 2, 0); x += 2; } /* Draw vehicles */ if (this->map_type == SMT_CONTOUR || this->map_type == SMT_VEHICLES) this->DrawVehicles(dpi, blitter); /* Draw town names */ if (this->show_towns) this->DrawTowns(dpi); /* Draw map indicators */ this->DrawMapIndicators(); _cur_dpi = old_dpi; } /** * Function to set up widgets depending on the information being shown on the smallmap. */ void SetupWidgetData() { StringID legend_tooltip; StringID enable_all_tooltip; StringID disable_all_tooltip; int plane; switch (this->map_type) { case SMT_INDUSTRY: legend_tooltip = STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION; enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES; disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES; plane = 0; break; case SMT_OWNER: legend_tooltip = STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION; enable_all_tooltip = STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES; disable_all_tooltip = STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES; plane = 0; break; default: legend_tooltip = STR_NULL; enable_all_tooltip = STR_NULL; disable_all_tooltip = STR_NULL; plane = 1; break; } this->GetWidget(WID_SM_LEGEND)->SetDataTip(STR_NULL, legend_tooltip); this->GetWidget(WID_SM_ENABLE_ALL)->SetDataTip(STR_SMALLMAP_ENABLE_ALL, enable_all_tooltip); this->GetWidget(WID_SM_DISABLE_ALL)->SetDataTip(STR_SMALLMAP_DISABLE_ALL, disable_all_tooltip); this->GetWidget(WID_SM_SELECT_BUTTONS)->SetDisplayedPlane(plane); } public: uint min_number_of_columns; ///< Minimal number of columns in legends. SmallMapWindow(const WindowDesc *desc, int window_number) : Window(), refresh(FORCE_REFRESH_PERIOD) { _smallmap_industry_highlight = INVALID_INDUSTRYTYPE; this->InitNested(desc, window_number); this->LowerWidget(this->map_type + WID_SM_CONTOUR); BuildLandLegend(); this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); this->SetupWidgetData(); this->SetZoomLevel(ZLC_INITIALIZE, NULL); this->SmallMapCenterOnCurrentPos(); } /** * Compute minimal required width of the legends. * @return Minimally needed width for displaying the smallmap legends in pixels. */ inline uint GetMinLegendWidth() const { return WD_FRAMERECT_LEFT + this->min_number_of_columns * this->column_width; } /** * Return number of columns that can be displayed in \a width pixels. * @return Number of columns to display. */ inline uint GetNumberColumnsLegend(uint width) const { return width / this->column_width; } /** * Compute height given a number of columns. * @param num_columns Number of columns. * @return Needed height for displaying the smallmap legends in pixels. */ uint GetLegendHeight(uint num_columns) const { uint num_rows = max(this->min_number_of_fixed_rows, CeilDiv(max(_smallmap_company_count, _smallmap_industry_count), num_columns)); return WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + num_rows * FONT_HEIGHT_SMALL; } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_SM_CAPTION: SetDParam(0, STR_SMALLMAP_TYPE_CONTOURS + this->map_type); break; } } virtual void OnInit() { uint min_width = 0; this->min_number_of_columns = INDUSTRY_MIN_NUMBER_OF_COLUMNS; this->min_number_of_fixed_rows = 0; for (uint i = 0; i < lengthof(_legend_table); i++) { uint height = 0; uint num_columns = 1; for (const LegendAndColour *tbl = _legend_table[i]; !tbl->end; ++tbl) { StringID str; if (i == SMT_INDUSTRY) { SetDParam(0, tbl->legend); SetDParam(1, IndustryPool::MAX_SIZE); str = STR_SMALLMAP_INDUSTRY; } else if (i == SMT_OWNER) { if (tbl->company != INVALID_COMPANY) { if (!Company::IsValidID(tbl->company)) { /* Rebuild the owner legend. */ BuildOwnerLegend(); this->OnInit(); return; } /* Non-fixed legend entries for the owner view. */ SetDParam(0, tbl->company); str = STR_SMALLMAP_COMPANY; } else { str = tbl->legend; } } else { if (tbl->col_break) { this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height); height = 0; num_columns++; } height++; str = tbl->legend; } min_width = max(GetStringBoundingBox(str).width, min_width); } this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height); this->min_number_of_columns = max(this->min_number_of_columns, num_columns); } /* The width of a column is the minimum width of all texts + the size of the blob + some spacing */ this->column_width = min_width + LEGEND_BLOB_WIDTH + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; } virtual void OnPaint() { if (this->map_type == SMT_OWNER) { for (const LegendAndColour *tbl = _legend_table[this->map_type]; !tbl->end; ++tbl) { if (tbl->company != INVALID_COMPANY && !Company::IsValidID(tbl->company)) { /* Rebuild the owner legend. */ BuildOwnerLegend(); this->InvalidateData(1); break; } } } this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_SM_MAP: { DrawPixelInfo new_dpi; if (!FillDrawPixelInfo(&new_dpi, r.left + 1, r.top + 1, r.right - r.left - 1, r.bottom - r.top - 1)) return; this->DrawSmallMap(&new_dpi); break; } case WID_SM_LEGEND: { uint columns = this->GetNumberColumnsLegend(r.right - r.left + 1); uint number_of_rows = max((this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER) ? CeilDiv(max(_smallmap_company_count, _smallmap_industry_count), columns) : 0, this->min_number_of_fixed_rows); bool rtl = _current_text_dir == TD_RTL; uint y_org = r.top + WD_FRAMERECT_TOP; uint x = rtl ? r.right - this->column_width - WD_FRAMERECT_RIGHT : r.left + WD_FRAMERECT_LEFT; uint y = y_org; uint i = 0; // Row counter for industry legend. uint row_height = FONT_HEIGHT_SMALL; uint text_left = rtl ? 0 : LEGEND_BLOB_WIDTH + WD_FRAMERECT_LEFT; uint text_right = this->column_width - 1 - (rtl ? LEGEND_BLOB_WIDTH + WD_FRAMERECT_RIGHT : 0); uint blob_left = rtl ? this->column_width - 1 - LEGEND_BLOB_WIDTH : 0; uint blob_right = rtl ? this->column_width - 1 : LEGEND_BLOB_WIDTH; for (const LegendAndColour *tbl = _legend_table[this->map_type]; !tbl->end; ++tbl) { if (tbl->col_break || ((this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER) && i++ >= number_of_rows)) { /* Column break needed, continue at top, COLUMN_WIDTH pixels * (one "row") to the right. */ x += rtl ? -(int)this->column_width : this->column_width; y = y_org; i = 1; } uint8 legend_colour = tbl->colour; if (this->map_type == SMT_INDUSTRY) { /* Industry name must be formatted, since it's not in tiny font in the specs. * So, draw with a parameter and use the STR_SMALLMAP_INDUSTRY string, which is tiny font */ SetDParam(0, tbl->legend); SetDParam(1, Industry::GetIndustryTypeCount(tbl->type)); if (!tbl->show_on_map) { /* Simply draw the string, not the black border of the legend colour. * This will enforce the idea of the disabled item */ DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_INDUSTRY, TC_GREY); } else { if (tbl->type == _smallmap_industry_highlight) { legend_colour = _smallmap_industry_highlight_state ? PC_WHITE : PC_BLACK; } DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_INDUSTRY, TC_BLACK); GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); // Outer border of the legend colour } } else if (this->map_type == SMT_OWNER && tbl->company != INVALID_COMPANY) { SetDParam(0, tbl->company); if (!tbl->show_on_map) { /* Simply draw the string, not the black border of the legend colour. * This will enforce the idea of the disabled item */ DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_COMPANY, TC_GREY); } else { DrawString(x + text_left, x + text_right, y, STR_SMALLMAP_COMPANY, TC_BLACK); GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); // Outer border of the legend colour } } else { if (this->map_type == SMT_CONTOUR) SetDParam(0, tbl->height * TILE_HEIGHT_STEP); /* Anything that is not an industry or a company is using normal process */ GfxFillRect(x + blob_left, y + 1, x + blob_right, y + row_height - 1, PC_BLACK); DrawString(x + text_left, x + text_right, y, tbl->legend); } GfxFillRect(x + blob_left + 1, y + 2, x + blob_right - 1, y + row_height - 2, legend_colour); // Legend colour y += row_height; } } } } /** * Select a new map type. * @param map_type New map type. */ void SwitchMapType(SmallMapType map_type) { this->RaiseWidget(this->map_type + WID_SM_CONTOUR); this->map_type = map_type; this->LowerWidget(this->map_type + WID_SM_CONTOUR); this->SetupWidgetData(); this->SetDirty(); } /** * Determines the mouse position on the legend. * @param pt Mouse position. * @return Legend item under the mouse. */ int GetPositionOnLegend(Point pt) { const NWidgetBase *wi = this->GetWidget(WID_SM_LEGEND); uint line = (pt.y - wi->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_SMALL; uint columns = this->GetNumberColumnsLegend(wi->current_x); uint number_of_rows = max(CeilDiv(max(_smallmap_company_count, _smallmap_industry_count), columns), this->min_number_of_fixed_rows); if (line >= number_of_rows) return -1; bool rtl = _current_text_dir == TD_RTL; int x = pt.x - wi->pos_x; if (rtl) x = wi->current_x - x; uint column = (x - WD_FRAMERECT_LEFT) / this->column_width; return (column * number_of_rows) + line; } virtual void OnMouseOver(Point pt, int widget) { IndustryType new_highlight = INVALID_INDUSTRYTYPE; if (widget == WID_SM_LEGEND && this->map_type == SMT_INDUSTRY) { int industry_pos = GetPositionOnLegend(pt); if (industry_pos >= 0 && industry_pos < _smallmap_industry_count) { new_highlight = _legend_from_industries[industry_pos].type; } } if (new_highlight != _smallmap_industry_highlight) { _smallmap_industry_highlight = new_highlight; this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; _smallmap_industry_highlight_state = true; this->SetDirty(); } } virtual void OnClick(Point pt, int widget, int click_count) { /* User clicked something, notify the industry chain window to stop sending newly selected industries. */ InvalidateWindowClassesData(WC_INDUSTRY_CARGOES, NUM_INDUSTRYTYPES); switch (widget) { case WID_SM_MAP: { // Map window /* * XXX: scrolling with the left mouse button is done by subsequently * clicking with the left mouse button; clicking once centers the * large map at the selected point. So by unclicking the left mouse * button here, it gets reclicked during the next inputloop, which * would make it look like the mouse is being dragged, while it is * actually being (virtually) clicked every inputloop. */ _left_button_clicked = false; const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); Window *w = FindWindowById(WC_MAIN_WINDOW, 0); int sub; pt = this->PixelToTile(pt.x - wid->pos_x, pt.y - wid->pos_y, &sub); pt = RemapCoords(this->scroll_x + pt.x * TILE_SIZE + this->zoom * (TILE_SIZE - sub * TILE_SIZE / 4), this->scroll_y + pt.y * TILE_SIZE + sub * this->zoom * TILE_SIZE / 4, 0); w->viewport->follow_vehicle = INVALID_VEHICLE; w->viewport->dest_scrollpos_x = pt.x - (w->viewport->virtual_width >> 1); w->viewport->dest_scrollpos_y = pt.y - (w->viewport->virtual_height >> 1); this->SetDirty(); break; } case WID_SM_ZOOM_IN: case WID_SM_ZOOM_OUT: { const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); Point pt = {wid->current_x / 2, wid->current_y / 2}; this->SetZoomLevel((widget == WID_SM_ZOOM_IN) ? ZLC_ZOOM_IN : ZLC_ZOOM_OUT, &pt); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); break; } case WID_SM_CONTOUR: // Show land contours case WID_SM_VEHICLES: // Show vehicles case WID_SM_INDUSTRIES: // Show industries case WID_SM_ROUTES: // Show transport routes case WID_SM_VEGETATION: // Show vegetation case WID_SM_OWNERS: // Show land owners this->SwitchMapType((SmallMapType)(widget - WID_SM_CONTOUR)); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); break; case WID_SM_CENTERMAP: // Center the smallmap again this->SmallMapCenterOnCurrentPos(); this->HandleButtonClick(WID_SM_CENTERMAP); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); break; case WID_SM_TOGGLETOWNNAME: // Toggle town names this->show_towns = !this->show_towns; this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns); this->SetDirty(); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); break; case WID_SM_LEGEND: // Legend if (this->map_type == SMT_INDUSTRY || this->map_type == SMT_OWNER) { /* If industry type small map*/ if (this->map_type == SMT_INDUSTRY) { /* If click on industries label, find right industry type and enable/disable it. */ int industry_pos = GetPositionOnLegend(pt); if (industry_pos >= 0 && industry_pos < _smallmap_industry_count) { if (_ctrl_pressed) { /* Disable all, except the clicked one. */ bool changes = false; for (int i = 0; i != _smallmap_industry_count; i++) { bool new_state = i == industry_pos; if (_legend_from_industries[i].show_on_map != new_state) { changes = true; _legend_from_industries[i].show_on_map = new_state; } } if (!changes) { /* Nothing changed? Then show all (again). */ for (int i = 0; i != _smallmap_industry_count; i++) { _legend_from_industries[i].show_on_map = true; } } } else { _legend_from_industries[industry_pos].show_on_map = !_legend_from_industries[industry_pos].show_on_map; } } } else if (this->map_type == SMT_OWNER) { /* If click on companies label, find right company and enable/disable it. */ int company_pos = GetPositionOnLegend(pt); if (company_pos < NUM_NO_COMPANY_ENTRIES) break; if (company_pos < _smallmap_company_count) { if (_ctrl_pressed) { /* Disable all, except the clicked one */ bool changes = false; for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { bool new_state = i == company_pos; if (_legend_land_owners[i].show_on_map != new_state) { changes = true; _legend_land_owners[i].show_on_map = new_state; } } if (!changes) { /* Nothing changed? Then show all (again). */ for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { _legend_land_owners[i].show_on_map = true; } } } else { _legend_land_owners[company_pos].show_on_map = !_legend_land_owners[company_pos].show_on_map; } } } this->SetDirty(); } break; case WID_SM_ENABLE_ALL: if (this->map_type == SMT_INDUSTRY) { for (int i = 0; i != _smallmap_industry_count; i++) { _legend_from_industries[i].show_on_map = true; } } else if (this->map_type == SMT_OWNER) { for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { _legend_land_owners[i].show_on_map = true; } } this->SetDirty(); break; case WID_SM_DISABLE_ALL: if (this->map_type == SMT_INDUSTRY) { for (int i = 0; i != _smallmap_industry_count; i++) { _legend_from_industries[i].show_on_map = false; } } else { for (int i = NUM_NO_COMPANY_ENTRIES; i != _smallmap_company_count; i++) { _legend_land_owners[i].show_on_map = false; } } this->SetDirty(); break; case WID_SM_SHOW_HEIGHT: // Enable/disable showing of heightmap. _smallmap_show_heightmap = !_smallmap_show_heightmap; this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap); this->SetDirty(); break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * - data = 0: Displayed industries at the industry chain window have changed. * - data = 1: Companies have changed. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; switch (data) { case 1: /* The owner legend has already been rebuilt. */ this->ReInit(); break; case 0: { extern uint64 _displayed_industries; if (this->map_type != SMT_INDUSTRY) this->SwitchMapType(SMT_INDUSTRY); for (int i = 0; i != _smallmap_industry_count; i++) { _legend_from_industries[i].show_on_map = HasBit(_displayed_industries, _legend_from_industries[i].type); } break; } default: NOT_REACHED(); } this->SetDirty(); } virtual bool OnRightClick(Point pt, int widget) { if (widget != WID_SM_MAP || _scrolling_viewport) return false; _scrolling_viewport = true; return true; } virtual void OnMouseWheel(int wheel) { if (_settings_client.gui.scrollwheel_scrolling == 0) { const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); int cursor_x = _cursor.pos.x - this->left - wid->pos_x; int cursor_y = _cursor.pos.y - this->top - wid->pos_y; if (IsInsideMM(cursor_x, 0, wid->current_x) && IsInsideMM(cursor_y, 0, wid->current_y)) { Point pt = {cursor_x, cursor_y}; this->SetZoomLevel((wheel < 0) ? ZLC_ZOOM_IN : ZLC_ZOOM_OUT, &pt); } } } virtual void OnTick() { /* Update the window every now and then */ if (--this->refresh != 0) return; _smallmap_industry_highlight_state = !_smallmap_industry_highlight_state; this->refresh = _smallmap_industry_highlight != INVALID_INDUSTRYTYPE ? BLINK_PERIOD : FORCE_REFRESH_PERIOD; this->SetDirty(); } /** * Set new #scroll_x, #scroll_y, and #subscroll values after limiting them such that the center * of the smallmap always contains a part of the map. * @param sx Proposed new #scroll_x * @param sy Proposed new #scroll_y * @param sub Proposed new #subscroll */ void SetNewScroll(int sx, int sy, int sub) { const NWidgetBase *wi = this->GetWidget(WID_SM_MAP); Point hv = InverseRemapCoords(wi->current_x * ZOOM_LVL_BASE * TILE_SIZE / 2, wi->current_y * ZOOM_LVL_BASE * TILE_SIZE / 2); hv.x *= this->zoom; hv.y *= this->zoom; if (sx < -hv.x) { sx = -hv.x; sub = 0; } if (sx > (int)(MapMaxX() * TILE_SIZE) - hv.x) { sx = MapMaxX() * TILE_SIZE - hv.x; sub = 0; } if (sy < -hv.y) { sy = -hv.y; sub = 0; } if (sy > (int)(MapMaxY() * TILE_SIZE) - hv.y) { sy = MapMaxY() * TILE_SIZE - hv.y; sub = 0; } this->scroll_x = sx; this->scroll_y = sy; this->subscroll = sub; } virtual void OnScroll(Point delta) { _cursor.fix_at = true; /* While tile is at (delta.x, delta.y)? */ int sub; Point pt = this->PixelToTile(delta.x, delta.y, &sub); this->SetNewScroll(this->scroll_x + pt.x * TILE_SIZE, this->scroll_y + pt.y * TILE_SIZE, sub); this->SetDirty(); } void SmallMapCenterOnCurrentPos() { const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; Point pt = InverseRemapCoords(vp->virtual_left + vp->virtual_width / 2, vp->virtual_top + vp->virtual_height / 2); int sub; const NWidgetBase *wid = this->GetWidget(WID_SM_MAP); Point sxy = this->ComputeScroll(pt.x / TILE_SIZE, pt.y / TILE_SIZE, max(0, (int)wid->current_x / 2 - 2), wid->current_y / 2, &sub); this->SetNewScroll(sxy.x, sxy.y, sub); this->SetDirty(); } }; SmallMapWindow::SmallMapType SmallMapWindow::map_type = SMT_CONTOUR; bool SmallMapWindow::show_towns = true; /** * Custom container class for displaying smallmap with a vertically resizing legend panel. * The legend panel has a smallest height that depends on its width. Standard containers cannot handle this case. * * @note The container assumes it has two children, the first is the display, the second is the bar with legends and selection image buttons. * Both children should be both horizontally and vertically resizable and horizontally fillable. * The bar should have a minimal size with a zero-size legends display. Child padding is not supported. */ class NWidgetSmallmapDisplay : public NWidgetContainer { const SmallMapWindow *smallmap_window; ///< Window manager instance. public: NWidgetSmallmapDisplay() : NWidgetContainer(NWID_VERTICAL) { this->smallmap_window = NULL; } virtual void SetupSmallestSize(Window *w, bool init_array) { NWidgetBase *display = this->head; NWidgetBase *bar = display->next; display->SetupSmallestSize(w, init_array); bar->SetupSmallestSize(w, init_array); this->smallmap_window = dynamic_cast(w); this->smallest_x = max(display->smallest_x, bar->smallest_x + smallmap_window->GetMinLegendWidth()); this->smallest_y = display->smallest_y + max(bar->smallest_y, smallmap_window->GetLegendHeight(smallmap_window->min_number_of_columns)); this->fill_x = max(display->fill_x, bar->fill_x); this->fill_y = (display->fill_y == 0 && bar->fill_y == 0) ? 0 : min(display->fill_y, bar->fill_y); this->resize_x = max(display->resize_x, bar->resize_x); this->resize_y = min(display->resize_y, bar->resize_y); } virtual void AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl) { this->pos_x = x; this->pos_y = y; this->current_x = given_width; this->current_y = given_height; NWidgetBase *display = this->head; NWidgetBase *bar = display->next; if (sizing == ST_SMALLEST) { this->smallest_x = given_width; this->smallest_y = given_height; /* Make display and bar exactly equal to their minimal size. */ display->AssignSizePosition(ST_SMALLEST, x, y, display->smallest_x, display->smallest_y, rtl); bar->AssignSizePosition(ST_SMALLEST, x, y + display->smallest_y, bar->smallest_x, bar->smallest_y, rtl); } uint bar_height = max(bar->smallest_y, this->smallmap_window->GetLegendHeight(this->smallmap_window->GetNumberColumnsLegend(given_width - bar->smallest_x))); uint display_height = given_height - bar_height; display->AssignSizePosition(ST_RESIZE, x, y, given_width, display_height, rtl); bar->AssignSizePosition(ST_RESIZE, x, y + display_height, given_width, bar_height, rtl); } virtual NWidgetCore *GetWidgetFromPos(int x, int y) { if (!IsInsideBS(x, this->pos_x, this->current_x) || !IsInsideBS(y, this->pos_y, this->current_y)) return NULL; for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) { NWidgetCore *widget = child_wid->GetWidgetFromPos(x, y); if (widget != NULL) return widget; } return NULL; } virtual void Draw(const Window *w) { for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) child_wid->Draw(w); } }; /** Widget parts of the smallmap display. */ static const NWidgetPart _nested_smallmap_display[] = { NWidget(WWT_PANEL, COLOUR_BROWN, WID_SM_MAP_BORDER), NWidget(WWT_INSET, COLOUR_BROWN, WID_SM_MAP), SetMinimalSize(346, 140), SetResize(1, 1), SetPadding(2, 2, 2, 2), EndContainer(), EndContainer(), }; /** Widget parts of the smallmap legend bar + image buttons. */ static const NWidgetPart _nested_smallmap_bar[] = { NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SM_LEGEND), SetResize(1, 1), NWidget(NWID_VERTICAL), /* Top button row. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHIMGBTN, COLOUR_BROWN, WID_SM_ZOOM_IN), SetDataTip(SPR_IMG_ZOOMIN, STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN), SetFill(1, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_BROWN, WID_SM_CENTERMAP), SetDataTip(SPR_IMG_SMALLMAP, STR_SMALLMAP_CENTER), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_CONTOUR), SetDataTip(SPR_IMG_SHOW_COUNTOURS, STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_VEHICLES), SetDataTip(SPR_IMG_SHOW_VEHICLES, STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_INDUSTRIES), SetDataTip(SPR_IMG_INDUSTRY, STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP), SetFill(1, 1), EndContainer(), /* Bottom button row. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHIMGBTN, COLOUR_BROWN, WID_SM_ZOOM_OUT), SetDataTip(SPR_IMG_ZOOMOUT, STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_TOGGLETOWNNAME), SetDataTip(SPR_IMG_TOWN, STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_ROUTES), SetDataTip(SPR_IMG_SHOW_ROUTES, STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_VEGETATION), SetDataTip(SPR_IMG_PLANTTREES, STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_OWNERS), SetDataTip(SPR_IMG_COMPANY_GENERAL, STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP), SetFill(1, 1), EndContainer(), NWidget(NWID_SPACER), SetResize(0, 1), EndContainer(), EndContainer(), EndContainer(), }; static NWidgetBase *SmallMapDisplay(int *biggest_index) { NWidgetContainer *map_display = new NWidgetSmallmapDisplay; MakeNWidgets(_nested_smallmap_display, lengthof(_nested_smallmap_display), biggest_index, map_display); MakeNWidgets(_nested_smallmap_bar, lengthof(_nested_smallmap_bar), biggest_index, map_display); return map_display; } static const NWidgetPart _nested_smallmap_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_SM_CAPTION), SetDataTip(STR_SMALLMAP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidgetFunction(SmallMapDisplay), // Smallmap display and legend bar + image buttons. /* Bottom button row and resize box. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(NWID_HORIZONTAL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SM_SELECT_BUTTONS), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_SM_ENABLE_ALL), SetDataTip(STR_SMALLMAP_ENABLE_ALL, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_SM_DISABLE_ALL), SetDataTip(STR_SMALLMAP_DISABLE_ALL, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_SM_SHOW_HEIGHT), SetDataTip(STR_SMALLMAP_SHOW_HEIGHT, STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT), EndContainer(), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), }; static const WindowDesc _smallmap_desc( WDP_AUTO, 446, 314, WC_SMALLMAP, WC_NONE, 0, _nested_smallmap_widgets, lengthof(_nested_smallmap_widgets) ); /** * Show the smallmap window. */ void ShowSmallMap() { AllocateWindowDescFront(&_smallmap_desc, 0); } /** * Scrolls the main window to given coordinates. * @param x x coordinate * @param y y coordinate * @param z z coordinate; -1 to scroll to terrain height * @param instant scroll instantly (meaningful only when smooth_scrolling is active) * @return did the viewport position change? */ bool ScrollMainWindowTo(int x, int y, int z, bool instant) { bool res = ScrollWindowTo(x, y, z, FindWindowById(WC_MAIN_WINDOW, 0), instant); /* If a user scrolls to a tile (via what way what so ever) and already is on * that tile (e.g.: pressed twice), move the smallmap to that location, * so you directly see where you are on the smallmap. */ if (res) return res; SmallMapWindow *w = dynamic_cast(FindWindowById(WC_SMALLMAP, 0)); if (w != NULL) w->SmallMapCenterOnCurrentPos(); return res; } openttd-1.3.3/src/autoreplace_base.h0000644000000000000000000000357212246102610016130 0ustar rootroot/* $Id: autoreplace_base.h 24136 2012-04-17 19:44:02Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file autoreplace_base.h Base class for autoreplaces/autorenews. */ #ifndef AUTOREPLACE_BASE_H #define AUTOREPLACE_BASE_H #include "core/pool_type.hpp" #include "autoreplace_type.h" #include "engine_type.h" #include "group_type.h" typedef uint16 EngineRenewID; /** * Memory pool for engine renew elements. DO NOT USE outside of engine.c. Is * placed here so the only exception to this rule, the saveload code, can use * it. */ typedef Pool EngineRenewPool; extern EngineRenewPool _enginerenew_pool; /** * Struct to store engine replacements. DO NOT USE outside of engine.c. Is * placed here so the only exception to this rule, the saveload code, can use * it. */ struct EngineRenew : EngineRenewPool::PoolItem<&_enginerenew_pool> { EngineID from; EngineID to; EngineRenew *next; GroupID group_id; bool replace_when_old; ///< Do replacement only when vehicle is old. EngineRenew(EngineID from = INVALID_ENGINE, EngineID to = INVALID_ENGINE) : from(from), to(to) {} ~EngineRenew() {} }; #define FOR_ALL_ENGINE_RENEWS_FROM(var, start) FOR_ALL_ITEMS_FROM(EngineRenew, enginerenew_index, var, start) #define FOR_ALL_ENGINE_RENEWS(var) FOR_ALL_ENGINE_RENEWS_FROM(var, 0) #endif /* AUTOREPLACE_BASE_H */ openttd-1.3.3/src/road_map.h0000644000000000000000000004004612246102611014412 0ustar rootroot/* $Id: road_map.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_map.h Map accessors for roads. */ #ifndef ROAD_MAP_H #define ROAD_MAP_H #include "track_func.h" #include "depot_type.h" #include "rail_type.h" #include "road_func.h" #include "tile_map.h" /** The different types of road tiles. */ enum RoadTileType { ROAD_TILE_NORMAL, ///< Normal road ROAD_TILE_CROSSING, ///< Level crossing ROAD_TILE_DEPOT, ///< Depot (one entrance) }; /** * Get the type of the road tile. * @param t Tile to query. * @pre IsTileType(t, MP_ROAD) * @return The road tile type. */ static inline RoadTileType GetRoadTileType(TileIndex t) { assert(IsTileType(t, MP_ROAD)); return (RoadTileType)GB(_m[t].m5, 6, 2); } /** * Return whether a tile is a normal road. * @param t Tile to query. * @pre IsTileType(t, MP_ROAD) * @return True if normal road. */ static inline bool IsNormalRoad(TileIndex t) { return GetRoadTileType(t) == ROAD_TILE_NORMAL; } /** * Return whether a tile is a normal road tile. * @param t Tile to query. * @return True if normal road tile. */ static inline bool IsNormalRoadTile(TileIndex t) { return IsTileType(t, MP_ROAD) && IsNormalRoad(t); } /** * Return whether a tile is a level crossing. * @param t Tile to query. * @pre IsTileType(t, MP_ROAD) * @return True if level crossing. */ static inline bool IsLevelCrossing(TileIndex t) { return GetRoadTileType(t) == ROAD_TILE_CROSSING; } /** * Return whether a tile is a level crossing tile. * @param t Tile to query. * @return True if level crossing tile. */ static inline bool IsLevelCrossingTile(TileIndex t) { return IsTileType(t, MP_ROAD) && IsLevelCrossing(t); } /** * Return whether a tile is a road depot. * @param t Tile to query. * @pre IsTileType(t, MP_ROAD) * @return True if road depot. */ static inline bool IsRoadDepot(TileIndex t) { return GetRoadTileType(t) == ROAD_TILE_DEPOT; } /** * Return whether a tile is a road depot tile. * @param t Tile to query. * @return True if road depot tile. */ static inline bool IsRoadDepotTile(TileIndex t) { return IsTileType(t, MP_ROAD) && IsRoadDepot(t); } /** * Get the present road bits for a specific road type. * @param t The tile to query. * @param rt Road type. * @pre IsNormalRoad(t) * @return The present road bits for the road type. */ static inline RoadBits GetRoadBits(TileIndex t, RoadType rt) { assert(IsNormalRoad(t)); switch (rt) { default: NOT_REACHED(); case ROADTYPE_ROAD: return (RoadBits)GB(_m[t].m5, 0, 4); case ROADTYPE_TRAM: return (RoadBits)GB(_m[t].m3, 0, 4); } } /** * Get all RoadBits set on a tile except from the given RoadType * * @param t The tile from which we want to get the RoadBits * @param rt The RoadType which we exclude from the querry * @return all set RoadBits of the tile which are not from the given RoadType */ static inline RoadBits GetOtherRoadBits(TileIndex t, RoadType rt) { return GetRoadBits(t, rt == ROADTYPE_ROAD ? ROADTYPE_TRAM : ROADTYPE_ROAD); } /** * Get all set RoadBits on the given tile * * @param tile The tile from which we want to get the RoadBits * @return all set RoadBits of the tile */ static inline RoadBits GetAllRoadBits(TileIndex tile) { return GetRoadBits(tile, ROADTYPE_ROAD) | GetRoadBits(tile, ROADTYPE_TRAM); } /** * Set the present road bits for a specific road type. * @param t The tile to change. * @param r The new road bits. * @param rt Road type. * @pre IsNormalRoad(t) */ static inline void SetRoadBits(TileIndex t, RoadBits r, RoadType rt) { assert(IsNormalRoad(t)); // XXX incomplete switch (rt) { default: NOT_REACHED(); case ROADTYPE_ROAD: SB(_m[t].m5, 0, 4, r); break; case ROADTYPE_TRAM: SB(_m[t].m3, 0, 4, r); break; } } /** * Get the present road types of a tile. * @param t The tile to query. * @return Present road types. */ static inline RoadTypes GetRoadTypes(TileIndex t) { return (RoadTypes)GB(_me[t].m7, 6, 2); } /** * Set the present road types of a tile. * @param t The tile to change. * @param rt The new road types. */ static inline void SetRoadTypes(TileIndex t, RoadTypes rt) { assert(IsTileType(t, MP_ROAD) || IsTileType(t, MP_STATION) || IsTileType(t, MP_TUNNELBRIDGE)); SB(_me[t].m7, 6, 2, rt); } /** * Check if a tile has a specific road type. * @param t The tile to check. * @param rt Road type to check. * @return True if the tile has the specified road type. */ static inline bool HasTileRoadType(TileIndex t, RoadType rt) { return HasBit(GetRoadTypes(t), rt); } /** * Get the owner of a specific road type. * @param t The tile to query. * @param rt The road type to get the owner of. * @return Owner of the given road type. */ static inline Owner GetRoadOwner(TileIndex t, RoadType rt) { assert(IsTileType(t, MP_ROAD) || IsTileType(t, MP_STATION) || IsTileType(t, MP_TUNNELBRIDGE)); switch (rt) { default: NOT_REACHED(); case ROADTYPE_ROAD: return (Owner)GB(IsNormalRoadTile(t) ? _m[t].m1 : _me[t].m7, 0, 5); case ROADTYPE_TRAM: { /* Trams don't need OWNER_TOWN, and remapping OWNER_NONE * to OWNER_TOWN makes it use one bit less */ Owner o = (Owner)GB(_m[t].m3, 4, 4); return o == OWNER_TOWN ? OWNER_NONE : o; } } } /** * Set the owner of a specific road type. * @param t The tile to change. * @param rt The road type to change the owner of. * @param o New owner of the given road type. */ static inline void SetRoadOwner(TileIndex t, RoadType rt, Owner o) { switch (rt) { default: NOT_REACHED(); case ROADTYPE_ROAD: SB(IsNormalRoadTile(t) ? _m[t].m1 : _me[t].m7, 0, 5, o); break; case ROADTYPE_TRAM: SB(_m[t].m3, 4, 4, o == OWNER_NONE ? OWNER_TOWN : o); break; } } /** * Check if a specific road type is owned by an owner. * @param t The tile to query. * @param rt The road type to compare the owner of. * @param o Owner to compare with. * @pre HasTileRoadType(t, rt) * @return True if the road type is owned by the given owner. */ static inline bool IsRoadOwner(TileIndex t, RoadType rt, Owner o) { assert(HasTileRoadType(t, rt)); return (GetRoadOwner(t, rt) == o); } /** * Checks if given tile has town owned road * @param t tile to check * @pre IsTileType(t, MP_ROAD) * @return true iff tile has road and the road is owned by a town */ static inline bool HasTownOwnedRoad(TileIndex t) { return HasTileRoadType(t, ROADTYPE_ROAD) && IsRoadOwner(t, ROADTYPE_ROAD, OWNER_TOWN); } /** Which directions are disallowed ? */ enum DisallowedRoadDirections { DRD_NONE, ///< None of the directions are disallowed DRD_SOUTHBOUND, ///< All southbound traffic is disallowed DRD_NORTHBOUND, ///< All northbound traffic is disallowed DRD_BOTH, ///< All directions are disallowed DRD_END, ///< Sentinel }; DECLARE_ENUM_AS_BIT_SET(DisallowedRoadDirections) /** Helper information for extract tool. */ template <> struct EnumPropsT : MakeEnumPropsT {}; /** * Gets the disallowed directions * @param t the tile to get the directions from * @return the disallowed directions */ static inline DisallowedRoadDirections GetDisallowedRoadDirections(TileIndex t) { assert(IsNormalRoad(t)); return (DisallowedRoadDirections)GB(_m[t].m5, 4, 2); } /** * Sets the disallowed directions * @param t the tile to set the directions for * @param drd the disallowed directions */ static inline void SetDisallowedRoadDirections(TileIndex t, DisallowedRoadDirections drd) { assert(IsNormalRoad(t)); assert(drd < DRD_END); SB(_m[t].m5, 4, 2, drd); } /** * Get the road axis of a level crossing. * @param t The tile to query. * @pre IsLevelCrossing(t) * @return The axis of the road. */ static inline Axis GetCrossingRoadAxis(TileIndex t) { assert(IsLevelCrossing(t)); return (Axis)GB(_m[t].m5, 0, 1); } /** * Get the rail axis of a level crossing. * @param t The tile to query. * @pre IsLevelCrossing(t) * @return The axis of the rail. */ static inline Axis GetCrossingRailAxis(TileIndex t) { assert(IsLevelCrossing(t)); return OtherAxis((Axis)GetCrossingRoadAxis(t)); } /** * Get the road bits of a level crossing. * @param tile The tile to query. * @return The present road bits. */ static inline RoadBits GetCrossingRoadBits(TileIndex tile) { return GetCrossingRoadAxis(tile) == AXIS_X ? ROAD_X : ROAD_Y; } /** * Get the rail track of a level crossing. * @param tile The tile to query. * @return The rail track. */ static inline Track GetCrossingRailTrack(TileIndex tile) { return AxisToTrack(GetCrossingRailAxis(tile)); } /** * Get the rail track bits of a level crossing. * @param tile The tile to query. * @return The rail track bits. */ static inline TrackBits GetCrossingRailBits(TileIndex tile) { return AxisToTrackBits(GetCrossingRailAxis(tile)); } /** * Get the reservation state of the rail crossing * @param t the crossing tile * @return reservation state * @pre IsLevelCrossingTile(t) */ static inline bool HasCrossingReservation(TileIndex t) { assert(IsLevelCrossingTile(t)); return HasBit(_m[t].m5, 4); } /** * Set the reservation state of the rail crossing * @note Works for both waypoints and rail depots * @param t the crossing tile * @param b the reservation state * @pre IsLevelCrossingTile(t) */ static inline void SetCrossingReservation(TileIndex t, bool b) { assert(IsLevelCrossingTile(t)); SB(_m[t].m5, 4, 1, b ? 1 : 0); } /** * Get the reserved track bits for a rail crossing * @param t the tile * @pre IsLevelCrossingTile(t) * @return reserved track bits */ static inline TrackBits GetCrossingReservationTrackBits(TileIndex t) { return HasCrossingReservation(t) ? GetCrossingRailBits(t) : TRACK_BIT_NONE; } /** * Check if the level crossing is barred. * @param t The tile to query. * @pre IsLevelCrossing(t) * @return True if the level crossing is barred. */ static inline bool IsCrossingBarred(TileIndex t) { assert(IsLevelCrossing(t)); return HasBit(_m[t].m5, 5); } /** * Set the bar state of a level crossing. * @param t The tile to modify. * @param barred True if the crossing should be barred, false otherwise. * @pre IsLevelCrossing(t) */ static inline void SetCrossingBarred(TileIndex t, bool barred) { assert(IsLevelCrossing(t)); SB(_m[t].m5, 5, 1, barred ? 1 : 0); } /** * Unbar a level crossing. * @param t The tile to change. */ static inline void UnbarCrossing(TileIndex t) { SetCrossingBarred(t, false); } /** * Bar a level crossing. * @param t The tile to change. */ static inline void BarCrossing(TileIndex t) { SetCrossingBarred(t, true); } /** Check if a road tile has snow/desert. */ #define IsOnDesert IsOnSnow /** * Check if a road tile has snow/desert. * @param t The tile to query. * @return True if the tile has snow/desert. */ static inline bool IsOnSnow(TileIndex t) { return HasBit(_me[t].m7, 5); } /** Toggle the snow/desert state of a road tile. */ #define ToggleDesert ToggleSnow /** * Toggle the snow/desert state of a road tile. * @param t The tile to change. */ static inline void ToggleSnow(TileIndex t) { ToggleBit(_me[t].m7, 5); } /** The possible road side decorations. */ enum Roadside { ROADSIDE_BARREN = 0, ///< Road on barren land ROADSIDE_GRASS = 1, ///< Road on grass ROADSIDE_PAVED = 2, ///< Road with paved sidewalks ROADSIDE_STREET_LIGHTS = 3, ///< Road with street lights on paved sidewalks ROADSIDE_TREES = 5, ///< Road with trees on paved sidewalks ROADSIDE_GRASS_ROAD_WORKS = 6, ///< Road on grass with road works ROADSIDE_PAVED_ROAD_WORKS = 7, ///< Road with sidewalks and road works }; /** * Get the decorations of a road. * @param tile The tile to query. * @return The road decoration of the tile. */ static inline Roadside GetRoadside(TileIndex tile) { return (Roadside)GB(_m[tile].m6, 3, 3); } /** * Set the decorations of a road. * @param tile The tile to change. * @param s The new road decoration of the tile. */ static inline void SetRoadside(TileIndex tile, Roadside s) { SB(_m[tile].m6, 3, 3, s); } /** * Check if a tile has road works. * @param t The tile to check. * @return True if the tile has road works in progress. */ static inline bool HasRoadWorks(TileIndex t) { return GetRoadside(t) >= ROADSIDE_GRASS_ROAD_WORKS; } /** * Increase the progress counter of road works. * @param t The tile to modify. * @return True if the road works are in the last stage. */ static inline bool IncreaseRoadWorksCounter(TileIndex t) { AB(_me[t].m7, 0, 4, 1); return GB(_me[t].m7, 0, 4) == 15; } /** * Start road works on a tile. * @param t The tile to start the work on. * @pre !HasRoadWorks(t) */ static inline void StartRoadWorks(TileIndex t) { assert(!HasRoadWorks(t)); /* Remove any trees or lamps in case or roadwork */ switch (GetRoadside(t)) { case ROADSIDE_BARREN: case ROADSIDE_GRASS: SetRoadside(t, ROADSIDE_GRASS_ROAD_WORKS); break; default: SetRoadside(t, ROADSIDE_PAVED_ROAD_WORKS); break; } } /** * Terminate road works on a tile. * @param t Tile to stop the road works on. * @pre HasRoadWorks(t) */ static inline void TerminateRoadWorks(TileIndex t) { assert(HasRoadWorks(t)); SetRoadside(t, (Roadside)(GetRoadside(t) - ROADSIDE_GRASS_ROAD_WORKS + ROADSIDE_GRASS)); /* Stop the counter */ SB(_me[t].m7, 0, 4, 0); } /** * Get the direction of the exit of a road depot. * @param t The tile to query. * @return Diagonal direction of the depot exit. */ static inline DiagDirection GetRoadDepotDirection(TileIndex t) { assert(IsRoadDepot(t)); return (DiagDirection)GB(_m[t].m5, 0, 2); } RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance = false); /** * Make a normal road tile. * @param t Tile to make a normal road. * @param bits Road bits to set for all present road types. * @param rot New present road types. * @param town Town ID if the road is a town-owned road. * @param road New owner of road. * @param tram New owner of tram tracks. */ static inline void MakeRoadNormal(TileIndex t, RoadBits bits, RoadTypes rot, TownID town, Owner road, Owner tram) { SetTileType(t, MP_ROAD); SetTileOwner(t, road); _m[t].m2 = town; _m[t].m3 = (HasBit(rot, ROADTYPE_TRAM) ? bits : 0); _m[t].m4 = 0; _m[t].m5 = (HasBit(rot, ROADTYPE_ROAD) ? bits : 0) | ROAD_TILE_NORMAL << 6; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = rot << 6; SetRoadOwner(t, ROADTYPE_TRAM, tram); } /** * Make a level crossing. * @param t Tile to make a level crossing. * @param road New owner of road. * @param tram New owner of tram tracks. * @param rail New owner of the rail track. * @param roaddir Axis of the road. * @param rat New rail type. * @param rot New present road types. * @param town Town ID if the road is a town-owned road. */ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner rail, Axis roaddir, RailType rat, RoadTypes rot, uint town) { SetTileType(t, MP_ROAD); SetTileOwner(t, rail); _m[t].m2 = town; _m[t].m3 = rat; _m[t].m4 = 0; _m[t].m5 = ROAD_TILE_CROSSING << 6 | roaddir; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = rot << 6 | road; SetRoadOwner(t, ROADTYPE_TRAM, tram); } /** * Make a road depot. * @param t Tile to make a level crossing. * @param owner New owner of the depot. * @param did New depot ID. * @param dir Direction of the depot exit. * @param rt Road type of the depot. */ static inline void MakeRoadDepot(TileIndex t, Owner owner, DepotID did, DiagDirection dir, RoadType rt) { SetTileType(t, MP_ROAD); SetTileOwner(t, owner); _m[t].m2 = did; _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = ROAD_TILE_DEPOT << 6 | dir; SB(_m[t].m6, 2, 4, 0); _me[t].m7 = RoadTypeToRoadTypes(rt) << 6 | owner; SetRoadOwner(t, ROADTYPE_TRAM, owner); } #endif /* ROAD_MAP_H */ openttd-1.3.3/src/rev.cpp.in0000644000000000000000000000606612246102611014370 0ustar rootroot/* $Id: rev.cpp.in 26136 2013-11-29 12:15:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file rev.cpp Autogenerated file with the revision and such of OpenTTD. */ #include "stdafx.h" #include "core/bitmath_func.hpp" #include "rev.h" /** * Is this version of OpenTTD a release version? * @return True if it is a release version. */ bool IsReleasedVersion() { return HasBit(_openttd_newgrf_version, 19); } /** * The text version of OpenTTD's revision. * This will be either "..[-RC]", * "r[M][-]" or "norev000". * * The major, minor and build are the numbers that describe releases of * OpenTTD (like 0.5.3). "-RC" is used to flag release candidates. * * The revision number is fairly straight forward. The M is to show that * the binary is made from modified source code. The branch shows the * branch the revision is of and will not be there when it is trunk. * * norev000 is for non-releases that are made on systems without * subversion or sources that are not a checkout of subversion. */ const char _openttd_revision[] = "!!VERSION!!"; /** * The text version of OpenTTD's build date. * Updating the build date in this file is the safest as it generally gets * updated for each revision in contrary to most other files that only see * updates when they are actually changed themselves. */ const char _openttd_build_date[] = __DATE__ " " __TIME__; /** * Let us know if current build was modified. This detection * works even in the case when revision string is overridden by * --revision argument. * Value 0 means no modification, 1 is for unknown state * (compiling from sources without any version control software) * and 2 is for modified revision. */ const byte _openttd_revision_modified = !!MODIFIED!!; /** * The NewGRF revision of OTTD: * bits meaning. * 28-31 major version * 24-27 minor version * 20-23 build * 19 1 if it is a release, 0 if it is not. * 0-18 revision number; 0 for releases and when the revision is unknown. * * The 19th bit is there so the development/betas/alpha, etc. leading to a * final release will always have a lower version number than the released * version, thus making comparisons on specific revisions easy. */ const uint32 _openttd_newgrf_version = 1 << 28 | 3 << 24 | 3 << 20 | 1 << 19 | (!!REVISION!! & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** * Variable used by MorphOS to show the version. */ extern const char morphos_versions_tag[] = "$VER: OpenTTD !!VERSION!! (!!DATE!!) OpenTTD Team [MorphOS, PowerPC]"; #endif openttd-1.3.3/src/viewport_type.h0000644000000000000000000001166612246102610015555 0ustar rootroot/* $Id: viewport_type.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file viewport_type.h Types related to viewports. */ #ifndef VIEWPORT_TYPE_H #define VIEWPORT_TYPE_H #include "zoom_type.h" #include "strings_type.h" /** * Data structure for viewport, display of a part of the world */ struct ViewPort { int left; ///< Screen coordinate left egde of the viewport int top; ///< Screen coordinate top edge of the viewport int width; ///< Screen width of the viewport int height; ///< Screen height of the viewport int virtual_left; ///< Virtual left coordinate int virtual_top; ///< Virtual top coordinate int virtual_width; ///< width << zoom int virtual_height; ///< height << zoom ZoomLevel zoom; ///< The zoom level of the viewport. }; /** Margins for the viewport sign */ enum ViewportSignMargin { VPSM_LEFT = 1, ///< Left margin VPSM_RIGHT = 1, ///< Right margin VPSM_TOP = 1, ///< Top margin VPSM_BOTTOM = 1, ///< Bottom margin }; /** Location information about a sign as seen on the viewport */ struct ViewportSign { int32 center; ///< The center position of the sign int32 top; ///< The top of the sign uint16 width_normal; ///< The width when not zoomed out (normal font) uint16 width_small; ///< The width when zoomed out (small font) void UpdatePosition(int center, int top, StringID str); void MarkDirty(ZoomLevel maxzoom = ZOOM_LVL_MAX) const; }; /** * Directions of zooming. * @see DoZoomInOutWindow */ enum ZoomStateChange { ZOOM_IN = 0, ///< Zoom in (get more detailed view). ZOOM_OUT = 1, ///< Zoom out (get helicopter view). ZOOM_NONE = 2, ///< Hack, used to update the button status. }; /** * Some values for constructing bounding boxes (BB). The Z positions under bridges are: * z=0..5 Everything that can be built under low bridges. * z=6 reserved, currently unused. * z=7 Z separator between bridge/tunnel and the things under/above it. */ static const uint BB_HEIGHT_UNDER_BRIDGE = 6; ///< Everything that can be built under low bridges, must not exceed this Z height. static const uint BB_Z_SEPARATOR = 7; ///< Separates the bridge/tunnel from the things under/above it. /** Viewport place method (type of highlighted area and placed objects) */ enum ViewportPlaceMethod { VPM_X_OR_Y = 0, ///< drag in X or Y direction VPM_FIX_X = 1, ///< drag only in X axis VPM_FIX_Y = 2, ///< drag only in Y axis VPM_X_AND_Y = 3, ///< area of land in X and Y directions VPM_X_AND_Y_LIMITED = 4, ///< area of land of limited size VPM_FIX_HORIZONTAL = 5, ///< drag only in horizontal direction VPM_FIX_VERTICAL = 6, ///< drag only in vertical direction VPM_X_LIMITED = 7, ///< Drag only in X axis with limited size VPM_Y_LIMITED = 8, ///< Drag only in Y axis with limited size VPM_RAILDIRS = 0x40, ///< all rail directions VPM_SIGNALDIRS = 0x80, ///< similar to VMP_RAILDIRS, but with different cursor }; DECLARE_ENUM_AS_BIT_SET(ViewportPlaceMethod) /** * Drag and drop selection process, or, what to do with an area of land when * you've selected it. */ enum ViewportDragDropSelectionProcess { DDSP_DEMOLISH_AREA, ///< Clear area DDSP_RAISE_AND_LEVEL_AREA, ///< Raise / level area DDSP_LOWER_AND_LEVEL_AREA, ///< Lower / level area DDSP_LEVEL_AREA, ///< Level area DDSP_CREATE_DESERT, ///< Fill area with desert DDSP_CREATE_ROCKS, ///< Fill area with rocks DDSP_CREATE_WATER, ///< Create a canal DDSP_CREATE_RIVER, ///< Create rivers DDSP_PLANT_TREES, ///< Plant trees DDSP_BUILD_BRIDGE, ///< Bridge placement /* Rail specific actions */ DDSP_PLACE_RAIL, ///< Rail placement DDSP_BUILD_SIGNALS, ///< Signal placement DDSP_BUILD_STATION, ///< Station placement DDSP_REMOVE_STATION, ///< Station removal DDSP_CONVERT_RAIL, ///< Rail conversion /* Road specific actions */ DDSP_PLACE_ROAD_X_DIR, ///< Road placement (X axis) DDSP_PLACE_ROAD_Y_DIR, ///< Road placement (Y axis) DDSP_PLACE_AUTOROAD, ///< Road placement (auto) DDSP_BUILD_BUSSTOP, ///< Road stop placement (buses) DDSP_BUILD_TRUCKSTOP, ///< Road stop placement (trucks) DDSP_REMOVE_BUSSTOP, ///< Road stop removal (buses) DDSP_REMOVE_TRUCKSTOP, ///< Road stop removal (trucks) }; #endif /* VIEWPORT_TYPE_H */ openttd-1.3.3/src/subsidy_func.h0000644000000000000000000000230612246102611015322 0ustar rootroot/* $Id: subsidy_func.h 20674 2010-08-28 20:15:45Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file subsidy_func.h Functions related to subsidies. */ #ifndef SUBSIDY_FUNC_H #define SUBSIDY_FUNC_H #include "core/geometry_type.hpp" #include "station_type.h" #include "company_type.h" #include "cargo_type.h" Pair SetupSubsidyDecodeParam(const struct Subsidy *s, bool mode); void DeleteSubsidyWith(SourceType type, SourceID index); bool CheckSubsidised(CargoID cargo_type, CompanyID company, SourceType src_type, SourceID src, const Station *st); void RebuildSubsidisedSourceAndDestinationCache(); void DeleteSubsidy(struct Subsidy *s); #endif /* SUBSIDY_FUNC_H */ openttd-1.3.3/src/date.cpp0000644000000000000000000002755312246102610014107 0ustar rootroot/* $Id: date.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file date.cpp Handling of dates in our native format and transforming them to something human readable. */ #include "stdafx.h" #include "network/network.h" #include "network/network_func.h" #include "currency.h" #include "window_func.h" #include "settings_type.h" #include "date_func.h" #include "vehicle_base.h" #include "rail_gui.h" #include "saveload/saveload.h" Year _cur_year; ///< Current year, starting at 0 Month _cur_month; ///< Current month (0..11) Date _date; ///< Current date in days (day counter) DateFract _date_fract; ///< Fractional part of the day. uint16 _tick_counter; ///< Ever incrementing (and sometimes wrapping) tick counter for setting off various events /** * Set the date. * @param date New date * @param fract The number of ticks that have passed on this date. */ void SetDate(Date date, DateFract fract) { assert(fract < DAY_TICKS); YearMonthDay ymd; _date = date; _date_fract = fract; ConvertDateToYMD(date, &ymd); _cur_year = ymd.year; _cur_month = ymd.month; } #define M(a, b) ((a << 5) | b) static const uint16 _month_date_from_year_day[] = { M( 0, 1), M( 0, 2), M( 0, 3), M( 0, 4), M( 0, 5), M( 0, 6), M( 0, 7), M( 0, 8), M( 0, 9), M( 0, 10), M( 0, 11), M( 0, 12), M( 0, 13), M( 0, 14), M( 0, 15), M( 0, 16), M( 0, 17), M( 0, 18), M( 0, 19), M( 0, 20), M( 0, 21), M( 0, 22), M( 0, 23), M( 0, 24), M( 0, 25), M( 0, 26), M( 0, 27), M( 0, 28), M( 0, 29), M( 0, 30), M( 0, 31), M( 1, 1), M( 1, 2), M( 1, 3), M( 1, 4), M( 1, 5), M( 1, 6), M( 1, 7), M( 1, 8), M( 1, 9), M( 1, 10), M( 1, 11), M( 1, 12), M( 1, 13), M( 1, 14), M( 1, 15), M( 1, 16), M( 1, 17), M( 1, 18), M( 1, 19), M( 1, 20), M( 1, 21), M( 1, 22), M( 1, 23), M( 1, 24), M( 1, 25), M( 1, 26), M( 1, 27), M( 1, 28), M( 1, 29), M( 2, 1), M( 2, 2), M( 2, 3), M( 2, 4), M( 2, 5), M( 2, 6), M( 2, 7), M( 2, 8), M( 2, 9), M( 2, 10), M( 2, 11), M( 2, 12), M( 2, 13), M( 2, 14), M( 2, 15), M( 2, 16), M( 2, 17), M( 2, 18), M( 2, 19), M( 2, 20), M( 2, 21), M( 2, 22), M( 2, 23), M( 2, 24), M( 2, 25), M( 2, 26), M( 2, 27), M( 2, 28), M( 2, 29), M( 2, 30), M( 2, 31), M( 3, 1), M( 3, 2), M( 3, 3), M( 3, 4), M( 3, 5), M( 3, 6), M( 3, 7), M( 3, 8), M( 3, 9), M( 3, 10), M( 3, 11), M( 3, 12), M( 3, 13), M( 3, 14), M( 3, 15), M( 3, 16), M( 3, 17), M( 3, 18), M( 3, 19), M( 3, 20), M( 3, 21), M( 3, 22), M( 3, 23), M( 3, 24), M( 3, 25), M( 3, 26), M( 3, 27), M( 3, 28), M( 3, 29), M( 3, 30), M( 4, 1), M( 4, 2), M( 4, 3), M( 4, 4), M( 4, 5), M( 4, 6), M( 4, 7), M( 4, 8), M( 4, 9), M( 4, 10), M( 4, 11), M( 4, 12), M( 4, 13), M( 4, 14), M( 4, 15), M( 4, 16), M( 4, 17), M( 4, 18), M( 4, 19), M( 4, 20), M( 4, 21), M( 4, 22), M( 4, 23), M( 4, 24), M( 4, 25), M( 4, 26), M( 4, 27), M( 4, 28), M( 4, 29), M( 4, 30), M( 4, 31), M( 5, 1), M( 5, 2), M( 5, 3), M( 5, 4), M( 5, 5), M( 5, 6), M( 5, 7), M( 5, 8), M( 5, 9), M( 5, 10), M( 5, 11), M( 5, 12), M( 5, 13), M( 5, 14), M( 5, 15), M( 5, 16), M( 5, 17), M( 5, 18), M( 5, 19), M( 5, 20), M( 5, 21), M( 5, 22), M( 5, 23), M( 5, 24), M( 5, 25), M( 5, 26), M( 5, 27), M( 5, 28), M( 5, 29), M( 5, 30), M( 6, 1), M( 6, 2), M( 6, 3), M( 6, 4), M( 6, 5), M( 6, 6), M( 6, 7), M( 6, 8), M( 6, 9), M( 6, 10), M( 6, 11), M( 6, 12), M( 6, 13), M( 6, 14), M( 6, 15), M( 6, 16), M( 6, 17), M( 6, 18), M( 6, 19), M( 6, 20), M( 6, 21), M( 6, 22), M( 6, 23), M( 6, 24), M( 6, 25), M( 6, 26), M( 6, 27), M( 6, 28), M( 6, 29), M( 6, 30), M( 6, 31), M( 7, 1), M( 7, 2), M( 7, 3), M( 7, 4), M( 7, 5), M( 7, 6), M( 7, 7), M( 7, 8), M( 7, 9), M( 7, 10), M( 7, 11), M( 7, 12), M( 7, 13), M( 7, 14), M( 7, 15), M( 7, 16), M( 7, 17), M( 7, 18), M( 7, 19), M( 7, 20), M( 7, 21), M( 7, 22), M( 7, 23), M( 7, 24), M( 7, 25), M( 7, 26), M( 7, 27), M( 7, 28), M( 7, 29), M( 7, 30), M( 7, 31), M( 8, 1), M( 8, 2), M( 8, 3), M( 8, 4), M( 8, 5), M( 8, 6), M( 8, 7), M( 8, 8), M( 8, 9), M( 8, 10), M( 8, 11), M( 8, 12), M( 8, 13), M( 8, 14), M( 8, 15), M( 8, 16), M( 8, 17), M( 8, 18), M( 8, 19), M( 8, 20), M( 8, 21), M( 8, 22), M( 8, 23), M( 8, 24), M( 8, 25), M( 8, 26), M( 8, 27), M( 8, 28), M( 8, 29), M( 8, 30), M( 9, 1), M( 9, 2), M( 9, 3), M( 9, 4), M( 9, 5), M( 9, 6), M( 9, 7), M( 9, 8), M( 9, 9), M( 9, 10), M( 9, 11), M( 9, 12), M( 9, 13), M( 9, 14), M( 9, 15), M( 9, 16), M( 9, 17), M( 9, 18), M( 9, 19), M( 9, 20), M( 9, 21), M( 9, 22), M( 9, 23), M( 9, 24), M( 9, 25), M( 9, 26), M( 9, 27), M( 9, 28), M( 9, 29), M( 9, 30), M( 9, 31), M(10, 1), M(10, 2), M(10, 3), M(10, 4), M(10, 5), M(10, 6), M(10, 7), M(10, 8), M(10, 9), M(10, 10), M(10, 11), M(10, 12), M(10, 13), M(10, 14), M(10, 15), M(10, 16), M(10, 17), M(10, 18), M(10, 19), M(10, 20), M(10, 21), M(10, 22), M(10, 23), M(10, 24), M(10, 25), M(10, 26), M(10, 27), M(10, 28), M(10, 29), M(10, 30), M(11, 1), M(11, 2), M(11, 3), M(11, 4), M(11, 5), M(11, 6), M(11, 7), M(11, 8), M(11, 9), M(11, 10), M(11, 11), M(11, 12), M(11, 13), M(11, 14), M(11, 15), M(11, 16), M(11, 17), M(11, 18), M(11, 19), M(11, 20), M(11, 21), M(11, 22), M(11, 23), M(11, 24), M(11, 25), M(11, 26), M(11, 27), M(11, 28), M(11, 29), M(11, 30), M(11, 31), }; #undef M enum DaysTillMonth { ACCUM_JAN = 0, ACCUM_FEB = ACCUM_JAN + 31, ACCUM_MAR = ACCUM_FEB + 29, ACCUM_APR = ACCUM_MAR + 31, ACCUM_MAY = ACCUM_APR + 30, ACCUM_JUN = ACCUM_MAY + 31, ACCUM_JUL = ACCUM_JUN + 30, ACCUM_AUG = ACCUM_JUL + 31, ACCUM_SEP = ACCUM_AUG + 31, ACCUM_OCT = ACCUM_SEP + 30, ACCUM_NOV = ACCUM_OCT + 31, ACCUM_DEC = ACCUM_NOV + 30, }; /** Number of days to pass from the first day in the year before reaching the first of a month. */ static const uint16 _accum_days_for_month[] = { ACCUM_JAN, ACCUM_FEB, ACCUM_MAR, ACCUM_APR, ACCUM_MAY, ACCUM_JUN, ACCUM_JUL, ACCUM_AUG, ACCUM_SEP, ACCUM_OCT, ACCUM_NOV, ACCUM_DEC, }; /** * Converts a Date to a Year, Month & Day. * @param date the date to convert from * @param ymd the year, month and day to write to */ void ConvertDateToYMD(Date date, YearMonthDay *ymd) { /* Year determination in multiple steps to account for leap * years. First do the large steps, then the smaller ones. */ /* There are 97 leap years in 400 years */ Year yr = 400 * (date / (DAYS_IN_YEAR * 400 + 97)); int rem = date % (DAYS_IN_YEAR * 400 + 97); uint16 x; if (rem >= DAYS_IN_YEAR * 100 + 25) { /* There are 25 leap years in the first 100 years after * every 400th year, as every 400th year is a leap year */ yr += 100; rem -= DAYS_IN_YEAR * 100 + 25; /* There are 24 leap years in the next couple of 100 years */ yr += 100 * (rem / (DAYS_IN_YEAR * 100 + 24)); rem = (rem % (DAYS_IN_YEAR * 100 + 24)); } if (!IsLeapYear(yr) && rem >= DAYS_IN_YEAR * 4) { /* The first 4 year of the century are not always a leap year */ yr += 4; rem -= DAYS_IN_YEAR * 4; } /* There is 1 leap year every 4 years */ yr += 4 * (rem / (DAYS_IN_YEAR * 4 + 1)); rem = rem % (DAYS_IN_YEAR * 4 + 1); /* The last (max 3) years to account for; the first one * can be, but is not necessarily a leap year */ while (rem >= (IsLeapYear(yr) ? DAYS_IN_LEAP_YEAR : DAYS_IN_YEAR)) { rem -= IsLeapYear(yr) ? DAYS_IN_LEAP_YEAR : DAYS_IN_YEAR; yr++; } /* Skip the 29th of February in non-leap years */ if (!IsLeapYear(yr) && rem >= ACCUM_MAR - 1) rem++; ymd->year = yr; x = _month_date_from_year_day[rem]; ymd->month = x >> 5; ymd->day = x & 0x1F; } /** * Converts a tuple of Year, Month and Day to a Date. * @param year is a number between 0..MAX_YEAR * @param month is a number between 0..11 * @param day is a number between 1..31 */ Date ConvertYMDToDate(Year year, Month month, Day day) { /* Day-offset in a leap year */ int days = _accum_days_for_month[month] + day - 1; /* Account for the missing of the 29th of February in non-leap years */ if (!IsLeapYear(year) && days >= ACCUM_MAR) days--; return DAYS_TILL(year) + days; } /** Functions used by the IncreaseDate function */ extern void EnginesDailyLoop(); extern void DisasterDailyLoop(); extern void IndustryDailyLoop(); extern void CompaniesMonthlyLoop(); extern void EnginesMonthlyLoop(); extern void TownsMonthlyLoop(); extern void IndustryMonthlyLoop(); extern void StationMonthlyLoop(); extern void SubsidyMonthlyLoop(); extern void CompaniesYearlyLoop(); extern void VehiclesYearlyLoop(); extern void TownsYearlyLoop(); extern void ShowEndGameChart(); /** Available settings for autosave intervals. */ static const Month _autosave_months[] = { 0, ///< never 1, ///< every month 3, ///< every 3 months 6, ///< every 6 months 12, ///< every 12 months }; /** * Runs various procedures that have to be done yearly */ static void OnNewYear() { CompaniesYearlyLoop(); VehiclesYearlyLoop(); TownsYearlyLoop(); InvalidateWindowClassesData(WC_BUILD_STATION); #ifdef ENABLE_NETWORK if (_network_server) NetworkServerYearlyLoop(); #endif /* ENABLE_NETWORK */ if (_cur_year == _settings_client.gui.semaphore_build_before) ResetSignalVariant(); /* check if we reached end of the game */ if (_cur_year == ORIGINAL_END_YEAR) { ShowEndGameChart(); /* check if we reached the maximum year, decrement dates by a year */ } else if (_cur_year == MAX_YEAR + 1) { Vehicle *v; uint days_this_year; _cur_year--; days_this_year = IsLeapYear(_cur_year) ? DAYS_IN_LEAP_YEAR : DAYS_IN_YEAR; _date -= days_this_year; FOR_ALL_VEHICLES(v) v->date_of_last_service -= days_this_year; #ifdef ENABLE_NETWORK /* Because the _date wraps here, and text-messages expire by game-days, we have to clean out * all of them if the date is set back, else those messages will hang for ever */ NetworkInitChatMessage(); #endif /* ENABLE_NETWORK */ } if (_settings_client.gui.auto_euro) CheckSwitchToEuro(); } /** * Runs various procedures that have to be done monthly */ static void OnNewMonth() { if (_settings_client.gui.autosave != 0 && (_cur_month % _autosave_months[_settings_client.gui.autosave]) == 0) { _do_autosave = true; SetWindowDirty(WC_STATUS_BAR, 0); } SetWindowClassesDirty(WC_CHEATS); CompaniesMonthlyLoop(); EnginesMonthlyLoop(); TownsMonthlyLoop(); IndustryMonthlyLoop(); SubsidyMonthlyLoop(); StationMonthlyLoop(); #ifdef ENABLE_NETWORK if (_network_server) NetworkServerMonthlyLoop(); #endif /* ENABLE_NETWORK */ } /** * Runs various procedures that have to be done daily */ static void OnNewDay() { #ifdef ENABLE_NETWORK if (_network_server) NetworkServerDailyLoop(); #endif /* ENABLE_NETWORK */ DisasterDailyLoop(); IndustryDailyLoop(); SetWindowWidgetDirty(WC_STATUS_BAR, 0, 0); EnginesDailyLoop(); /* Refresh after possible snowline change */ SetWindowClassesDirty(WC_TOWN_VIEW); } /** * Increases the tick counter, increases date and possibly calls * procedures that have to be called daily, monthly or yearly. */ void IncreaseDate() { /* increase day, and check if a new day is there? */ _tick_counter++; if (_game_mode == GM_MENU) return; _date_fract++; if (_date_fract < DAY_TICKS) return; _date_fract = 0; /* increase day counter */ _date++; YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); /* check if we entered a new month? */ bool new_month = ymd.month != _cur_month; /* check if we entered a new year? */ bool new_year = ymd.year != _cur_year; /* update internal variables before calling the daily/monthly/yearly loops */ _cur_month = ymd.month; _cur_year = ymd.year; /* yes, call various daily loops */ OnNewDay(); /* yes, call various monthly loops */ if (new_month) OnNewMonth(); /* yes, call various yearly loops */ if (new_year) OnNewYear(); } openttd-1.3.3/src/newgrf_debug.h0000644000000000000000000000340212246102610015260 0ustar rootroot/* $Id: newgrf_debug.h 22570 2011-06-12 20:51:38Z terkhen $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_debug.h Functions/types related to NewGRF debugging. */ #ifndef NEWGRF_DEBUG_H #define NEWGRF_DEBUG_H #include "newgrf.h" #include "core/smallvec_type.hpp" #include "tile_type.h" #include "vehicle_type.h" /** Current state of spritepicker */ enum NewGrfDebugSpritePickerMode { SPM_NONE, SPM_WAIT_CLICK, SPM_REDRAW, }; /** Spritepicker of SpriteAligner */ struct NewGrfDebugSpritePicker { NewGrfDebugSpritePickerMode mode; ///< Current state void *clicked_pixel; ///< Clicked pixel (pointer to blitter buffer) uint32 click_time; ///< Realtime tick when clicked to detect next frame SmallVector sprites; ///< Sprites found }; extern NewGrfDebugSpritePicker _newgrf_debug_sprite_picker; bool IsNewGRFInspectable(GrfSpecFeature feature, uint index); void ShowNewGRFInspectWindow(GrfSpecFeature feature, uint index, const uint32 grfid = 0); void DeleteNewGRFInspectWindow(GrfSpecFeature feature, uint index); GrfSpecFeature GetGrfSpecFeature(TileIndex tile); GrfSpecFeature GetGrfSpecFeature(VehicleType type); void ShowSpriteAlignerWindow(); #endif /* NEWGRF_DEBUG_H */ openttd-1.3.3/src/depot_map.h0000644000000000000000000000347612246102611014606 0ustar rootroot/* $Id: depot_map.h 18809 2010-01-15 16:41:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot_map.h Map related accessors for depots. */ #ifndef DEPOT_MAP_H #define DEPOT_MAP_H #include "station_map.h" /** * Check if a tile is a depot and it is a depot of the given type. */ static inline bool IsDepotTypeTile(TileIndex tile, TransportType type) { switch (type) { default: NOT_REACHED(); case TRANSPORT_RAIL: return IsRailDepotTile(tile); case TRANSPORT_ROAD: return IsRoadDepotTile(tile); case TRANSPORT_WATER: return IsShipDepotTile(tile); } } /** * Is the given tile a tile with a depot on it? * @param tile the tile to check * @return true if and only if there is a depot on the tile. */ static inline bool IsDepotTile(TileIndex tile) { return IsRailDepotTile(tile) || IsRoadDepotTile(tile) || IsShipDepotTile(tile) || IsHangarTile(tile); } /** * Get the index of which depot is attached to the tile. * @param t the tile * @pre IsRailDepotTile(t) || IsRoadDepotTile(t) || IsShipDepotTile(t) * @return DepotID */ static inline DepotID GetDepotIndex(TileIndex t) { /* Hangars don't have a Depot class, thus store no DepotID. */ assert(IsRailDepotTile(t) || IsRoadDepotTile(t) || IsShipDepotTile(t)); return _m[t].m2; } #endif /* DEPOT_MAP_H */ openttd-1.3.3/src/highscore.cpp0000644000000000000000000001430012246102611015130 0ustar rootroot/* $Id: highscore.cpp 25528 2013-06-30 08:58:35Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file highscore.cpp Definition of functions used for highscore handling */ #include "stdafx.h" #include "highscore.h" #include "company_base.h" #include "company_func.h" #include "cheat_func.h" #include "string_func.h" #include "strings_func.h" #include "table/strings.h" #include "core/sort_func.hpp" #include "debug.h" HighScore _highscore_table[SP_HIGHSCORE_END][5]; ///< various difficulty-settings; top 5 char *_highscore_file; ///< The file to store the highscore data in. static const StringID _endgame_perf_titles[] = { STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN, STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN, STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN, STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN, STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN, STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR, STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR, STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST, STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST, STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST, STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST, STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE, STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE, STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL, STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL, STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY }; StringID EndGameGetPerformanceTitleFromValue(uint value) { value = minu(value / 64, lengthof(_endgame_perf_titles) - 1); return _endgame_perf_titles[value]; } /** Save the highscore for the company */ int8 SaveHighScoreValue(const Company *c) { HighScore *hs = _highscore_table[SP_CUSTOM]; uint i; uint16 score = c->old_economy[0].performance_history; /* Exclude cheaters from the honour of being in the highscore table */ if (CheatHasBeenUsed()) return -1; for (i = 0; i < lengthof(_highscore_table[0]); i++) { /* You are in the TOP5. Move all values one down and save us there */ if (hs[i].score <= score) { /* move all elements one down starting from the replaced one */ memmove(&hs[i + 1], &hs[i], sizeof(HighScore) * (lengthof(_highscore_table[0]) - i - 1)); SetDParam(0, c->index); SetDParam(1, c->index); GetString(hs[i].company, STR_HIGHSCORE_NAME, lastof(hs[i].company)); // get manager/company name string hs[i].score = score; hs[i].title = EndGameGetPerformanceTitleFromValue(score); return i; } } return -1; // too bad; we did not make it into the top5 } /** Sort all companies given their performance */ static int CDECL HighScoreSorter(const Company * const *a, const Company * const *b) { return (*b)->old_economy[0].performance_history - (*a)->old_economy[0].performance_history; } /** * Save the highscores in a network game when it has ended * @return Position of the local company in the highscore list. */ int8 SaveHighScoreValueNetwork() { const Company *c; const Company *cl[MAX_COMPANIES]; uint count = 0; int8 company = -1; /* Sort all active companies with the highest score first */ FOR_ALL_COMPANIES(c) cl[count++] = c; QSortT(cl, count, &HighScoreSorter); { uint i; memset(_highscore_table[SP_MULTIPLAYER], 0, sizeof(_highscore_table[SP_MULTIPLAYER])); /* Copy over Top5 companies */ for (i = 0; i < lengthof(_highscore_table[SP_MULTIPLAYER]) && i < count; i++) { HighScore *hs = &_highscore_table[SP_MULTIPLAYER][i]; SetDParam(0, cl[i]->index); SetDParam(1, cl[i]->index); GetString(hs->company, STR_HIGHSCORE_NAME, lastof(hs->company)); // get manager/company name string hs->score = cl[i]->old_economy[0].performance_history; hs->title = EndGameGetPerformanceTitleFromValue(hs->score); /* get the ranking of the local company */ if (cl[i]->index == _local_company) company = i; } } /* Add top5 companies to highscore table */ return company; } /** Save HighScore table to file */ void SaveToHighScore() { FILE *fp = fopen(_highscore_file, "wb"); if (fp != NULL) { uint i; HighScore *hs; for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) { for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) { /* First character is a command character, so strlen will fail on that */ byte length = min(sizeof(hs->company), StrEmpty(hs->company) ? 0 : (int)strlen(&hs->company[1]) + 1); if (fwrite(&length, sizeof(length), 1, fp) != 1 || // write away string length fwrite(hs->company, length, 1, fp) > 1 || // Yes... could be 0 bytes too fwrite(&hs->score, sizeof(hs->score), 1, fp) != 1 || fwrite(" ", 2, 1, fp) != 1) { // XXX - placeholder for hs->title, not saved anymore; compatibility DEBUG(misc, 1, "Could not save highscore."); i = SP_SAVED_HIGHSCORE_END; break; } } } fclose(fp); } } /** Initialize the highscore table to 0 and if any file exists, load in values */ void LoadFromHighScore() { FILE *fp = fopen(_highscore_file, "rb"); memset(_highscore_table, 0, sizeof(_highscore_table)); if (fp != NULL) { uint i; HighScore *hs; for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) { for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) { byte length; if (fread(&length, sizeof(length), 1, fp) != 1 || fread(hs->company, length, 1, fp) > 1 || // Yes... could be 0 bytes too fread(&hs->score, sizeof(hs->score), 1, fp) != 1 || fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility DEBUG(misc, 1, "Highscore corrupted"); i = SP_SAVED_HIGHSCORE_END; break; } str_validate(hs->company, lastof(hs->company), SVS_NONE); hs->title = EndGameGetPerformanceTitleFromValue(hs->score); } } fclose(fp); } } openttd-1.3.3/src/newgrf_airport.cpp0000644000000000000000000002464612246102611016223 0ustar rootroot/* $Id: newgrf_airport.cpp 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_airport.cpp NewGRF handling of airports. */ #include "stdafx.h" #include "debug.h" #include "date_func.h" #include "newgrf_spritegroup.h" #include "newgrf_text.h" #include "station_base.h" #include "newgrf_class_func.h" /** Resolver for the airport scope. */ struct AirportScopeResolver : public ScopeResolver { struct Station *st; ///< Station of the airport for which the callback is run, or \c NULL for build gui. byte airport_id; ///< Type of airport for which the callback is run. byte layout; ///< Layout of the airport to build. TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks. AirportScopeResolver(ResolverObject *ro, TileIndex tile, Station *st, byte airport_id, byte layout); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ void StorePSA(uint pos, int32 value); }; /** Resolver object for airports. */ struct AirportResolverObject : public ResolverObject { AirportScopeResolver airport_scope; AirportResolverObject(TileIndex tile, Station *st, byte airport_id, byte layout, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { switch (scope) { case VSG_SCOPE_SELF: return &this->airport_scope; default: return ResolverObject::GetScope(scope, relative); } } /* virtual */ const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; }; /** * Reset airport classes to their default state. * This includes initialising the defaults classes with an empty * entry, for standard airports. */ template /* static */ void NewGRFClass::InsertDefaults() { AirportClass::Get(AirportClass::Allocate('SMAL'))->name = STR_AIRPORT_CLASS_SMALL; AirportClass::Get(AirportClass::Allocate('LARG'))->name = STR_AIRPORT_CLASS_LARGE; AirportClass::Get(AirportClass::Allocate('HUB_'))->name = STR_AIRPORT_CLASS_HUB; AirportClass::Get(AirportClass::Allocate('HELI'))->name = STR_AIRPORT_CLASS_HELIPORTS; } template bool NewGRFClass::IsUIAvailable(uint index) const { return true; } INSTANTIATE_NEWGRF_CLASS_METHODS(AirportClass, AirportSpec, AirportClassID, APC_MAX) AirportOverrideManager _airport_mngr(NEW_AIRPORT_OFFSET, NUM_AIRPORTS, AT_INVALID); AirportSpec AirportSpec::specs[NUM_AIRPORTS]; ///< Airport specifications. /** * Retrieve airport spec for the given airport. If an override is available * it is returned. * @param type index of airport * @return A pointer to the corresponding AirportSpec */ /* static */ const AirportSpec *AirportSpec::Get(byte type) { assert(type < lengthof(AirportSpec::specs)); const AirportSpec *as = &AirportSpec::specs[type]; if (type >= NEW_AIRPORT_OFFSET && !as->enabled) { byte subst_id = _airport_mngr.GetSubstituteID(type); if (subst_id == AT_INVALID) return as; as = &AirportSpec::specs[subst_id]; } if (as->grf_prop.override != AT_INVALID) return &AirportSpec::specs[as->grf_prop.override]; return as; } /** * Retrieve airport spec for the given airport. Even if an override is * available the base spec is returned. * @param type index of airport * @return A pointer to the corresponding AirportSpec */ /* static */ AirportSpec *AirportSpec::GetWithoutOverride(byte type) { assert(type < lengthof(AirportSpec::specs)); return &AirportSpec::specs[type]; } /** Check whether this airport is available to build. */ bool AirportSpec::IsAvailable() const { if (!this->enabled) return false; if (_cur_year < this->min_year) return false; if (_settings_game.station.never_expire_airports) return true; return _cur_year <= this->max_year; } /** * This function initializes the airportspec array. */ void AirportSpec::ResetAirports() { extern const AirportSpec _origin_airport_specs[]; memset(&AirportSpec::specs, 0, sizeof(AirportSpec::specs)); memcpy(&AirportSpec::specs, &_origin_airport_specs, sizeof(AirportSpec) * NEW_AIRPORT_OFFSET); _airport_mngr.ResetOverride(); } /** * Tie all airportspecs to their class. */ void BindAirportSpecs() { for (int i = 0; i < NUM_AIRPORTS; i++) { AirportSpec *as = AirportSpec::GetWithoutOverride(i); if (as->enabled) AirportClass::Assign(as); } } void AirportOverrideManager::SetEntitySpec(AirportSpec *as) { byte airport_id = this->AddEntityID(as->grf_prop.local_id, as->grf_prop.grffile->grfid, as->grf_prop.subst_id); if (airport_id == invalid_ID) { grfmsg(1, "Airport.SetEntitySpec: Too many airports allocated. Ignoring."); return; } memcpy(AirportSpec::GetWithoutOverride(airport_id), as, sizeof(*as)); /* Now add the overrides. */ for (int i = 0; i < max_offset; i++) { AirportSpec *overridden_as = AirportSpec::GetWithoutOverride(i); if (entity_overrides[i] != as->grf_prop.local_id || grfid_overrides[i] != as->grf_prop.grffile->grfid) continue; overridden_as->grf_prop.override = airport_id; overridden_as->enabled = false; entity_overrides[i] = invalid_ID; grfid_overrides[i] = 0; } } /* virtual */ uint32 AirportScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { switch (variable) { case 0x40: return this->layout; } if (this->st == NULL) { *available = false; return UINT_MAX; } switch (variable) { /* Get a variable from the persistent storage */ case 0x7C: return (this->st->airport.psa != NULL) ? this->st->airport.psa->GetValue(parameter) : 0; case 0xF0: return this->st->facilities; case 0xFA: return Clamp(this->st->build_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); } return this->st->GetNewGRFVariable(this->ro, variable, parameter, available); } /* virtual */ const SpriteGroup *AirportResolverObject::ResolveReal(const RealSpriteGroup *group) const { /* Airport action 2s should always have only 1 "loaded" state, but some * times things don't follow the spec... */ if (group->num_loaded > 0) return group->loaded[0]; if (group->num_loading > 0) return group->loading[0]; return NULL; } /* virtual */ uint32 AirportScopeResolver::GetRandomBits() const { return this->st == NULL ? 0 : this->st->random_bits; } /** * Store a value into the object's persistent storage. * @param object Object that we want to query. * @param pos Position in the persistent storage to use. * @param value Value to store. */ /* virtual */ void AirportScopeResolver::StorePSA(uint pos, int32 value) { if (this->st == NULL) return; if (this->st->airport.psa == NULL) { /* There is no need to create a storage if the value is zero. */ if (value == 0) return; /* Create storage on first modification. */ uint32 grfid = (this->ro->grffile != NULL) ? this->ro->grffile->grfid : 0; assert(PersistentStorage::CanAllocateItem()); this->st->airport.psa = new PersistentStorage(grfid); } this->st->airport.psa->StoreValue(pos, value); } /** * Constructor of the airport resolver. * @param tile %Tile for the callback, only valid for airporttile callbacks. * @param st %Station of the airport for which the callback is run, or \c NULL for build gui. * @param airport_id Type of airport for which the callback is run. * @param layout Layout of the airport to build. * @param callback Callback ID. * @param param1 First parameter (var 10) of the callback. * @param param2 Second parameter (var 18) of the callback. */ AirportResolverObject::AirportResolverObject(TileIndex tile, Station *st, byte airport_id, byte layout, CallbackID callback, uint32 param1, uint32 param2) : ResolverObject(AirportSpec::Get(airport_id)->grf_prop.grffile, callback, param1, param2), airport_scope(this, tile, st, airport_id, layout) { } /** * Constructor of the scope resolver for an airport. * @param ro Surrounding resolver. * @param tile %Tile for the callback, only valid for airporttile callbacks. * @param st %Station of the airport for which the callback is run, or \c NULL for build gui. * @param airport_id Type of airport for which the callback is run. * @param layout Layout of the airport to build. */ AirportScopeResolver::AirportScopeResolver(ResolverObject *ro, TileIndex tile, Station *st, byte airport_id, byte layout) : ScopeResolver(ro) { this->st = st; this->airport_id = airport_id; this->layout = layout; this->tile = tile; } SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout) { AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout); const SpriteGroup *group = SpriteGroup::Resolve(as->grf_prop.spritegroup[0], &object); if (group == NULL) return as->preview_sprite; return group->GetResult(); } uint16 GetAirportCallback(CallbackID callback, uint32 param1, uint32 param2, Station *st, TileIndex tile) { AirportResolverObject object(tile, st, st->airport.type, st->airport.layout, callback, param1, param2); const SpriteGroup *group = SpriteGroup::Resolve(st->airport.GetSpec()->grf_prop.spritegroup[0], &object); if (group == NULL) return CALLBACK_FAILED; return group->GetCallbackResult(); } /** * Get a custom text for the airport. * @param as The airport type's specification. * @param layout The layout index. * @param callback The callback to call. * @return The custom text. */ StringID GetAirportTextCallback(const AirportSpec *as, byte layout, uint16 callback) { AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout, (CallbackID)callback); const SpriteGroup *group = SpriteGroup::Resolve(as->grf_prop.spritegroup[0], &object); uint16 cb_res = (group != NULL) ? group->GetCallbackResult() : CALLBACK_FAILED; if (cb_res == CALLBACK_FAILED || cb_res == 0x400) return STR_UNDEFINED; if (cb_res > 0x400) { ErrorUnknownCallbackResult(as->grf_prop.grffile->grfid, callback, cb_res); return STR_UNDEFINED; } return GetGRFStringID(as->grf_prop.grffile->grfid, 0xD000 + cb_res); } openttd-1.3.3/src/economy_func.h0000644000000000000000000000366212246102611015317 0ustar rootroot/* $Id: economy_func.h 24565 2012-10-01 19:31:55Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file economy_func.h Functions related to the economy. */ #ifndef ECONOMY_FUNC_H #define ECONOMY_FUNC_H #include "economy_type.h" #include "station_type.h" #include "cargo_type.h" #include "vehicle_type.h" #include "company_type.h" void ResetPriceBaseMultipliers(); void SetPriceBaseMultiplier(Price price, int factor); extern const ScoreInfo _score_info[]; extern int _score_part[MAX_COMPANIES][SCORE_END]; extern Economy _economy; /* Prices and also the fractional part. */ extern Prices _price; int UpdateCompanyRatingAndValue(Company *c, bool update); void StartupIndustryDailyChanges(bool init_counter); Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, CargoID cargo_type); uint MoveGoodsToStation(CargoID type, uint amount, SourceType source_type, SourceID source_id, const StationList *all_stations); void PrepareUnload(Vehicle *front_v); void LoadUnloadStation(Station *st); Money GetPrice(Price index, uint cost_factor, const struct GRFFile *grf_file, int shift = 0); void InitializeEconomy(); void RecomputePrices(); bool AddInflation(bool check_year = true); /** * Is the economy in recession? * @return \c True if economy is in recession, \c false otherwise. */ static inline bool EconomyIsInRecession() { return _economy.fluct <= 0; } #endif /* ECONOMY_FUNC_H */ openttd-1.3.3/src/town_gui.cpp0000644000000000000000000012555512246102611015027 0ustar rootroot/* $Id: town_gui.cpp 25978 2013-11-13 21:21:47Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file town_gui.cpp GUI for towns. */ #include "stdafx.h" #include "town.h" #include "viewport_func.h" #include "error.h" #include "gui.h" #include "command_func.h" #include "company_func.h" #include "company_base.h" #include "company_gui.h" #include "network/network.h" #include "string_func.h" #include "strings_func.h" #include "sound_func.h" #include "tilehighlight_func.h" #include "sortlist_type.h" #include "road_cmd.h" #include "landscape.h" #include "querystring_gui.h" #include "window_func.h" #include "townname_func.h" #include "core/geometry_func.hpp" #include "genworld.h" #include "widgets/town_widget.h" #include "table/strings.h" typedef GUIList GUITownList; static const NWidgetPart _nested_town_authority_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TA_CAPTION), SetDataTip(STR_LOCAL_AUTHORITY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TA_RATING_INFO), SetMinimalSize(317, 92), SetResize(1, 1), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TA_COMMAND_LIST), SetMinimalSize(305, 52), SetResize(1, 0), SetDataTip(0x0, STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP), SetScrollbar(WID_TA_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_TA_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TA_ACTION_INFO), SetMinimalSize(317, 52), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TA_EXECUTE), SetMinimalSize(317, 12), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_LOCAL_AUTHORITY_DO_IT_BUTTON, STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer() }; /** Town authority window. */ struct TownAuthorityWindow : Window { private: Town *town; ///< Town being displayed. int sel_index; ///< Currently selected town action, \c 0 to \c TACT_COUNT-1, \c -1 means no action selected. Scrollbar *vscroll; uint displayed_actions_on_previous_painting; ///< Actions that were available on the previous call to OnPaint() /** * Get the position of the Nth set bit. * * If there is no Nth bit set return -1 * * @param bits The value to search in * @param n The Nth set bit from which we want to know the position * @return The position of the Nth set bit */ static int GetNthSetBit(uint32 bits, int n) { if (n >= 0) { uint i; FOR_EACH_SET_BIT(i, bits) { n--; if (n < 0) return i; } } return -1; } public: TownAuthorityWindow(const WindowDesc *desc, WindowNumber window_number) : Window(), sel_index(-1), displayed_actions_on_previous_painting(0) { this->town = Town::Get(window_number); this->InitNested(desc, window_number); this->vscroll = this->GetScrollbar(WID_TA_SCROLLBAR); this->vscroll->SetCapacity((this->GetWidget(WID_TA_COMMAND_LIST)->current_y - WD_FRAMERECT_TOP - WD_FRAMERECT_BOTTOM) / FONT_HEIGHT_NORMAL); } virtual void OnPaint() { int numact; uint buttons = GetMaskOfTownActions(&numact, _local_company, this->town); if (buttons != displayed_actions_on_previous_painting) this->SetDirty(); displayed_actions_on_previous_painting = buttons; this->vscroll->SetCount(numact + 1); if (this->sel_index != -1 && !HasBit(buttons, this->sel_index)) { this->sel_index = -1; } this->SetWidgetDisabledState(WID_TA_EXECUTE, this->sel_index == -1); this->DrawWidgets(); if (!this->IsShaded()) this->DrawRatings(); } /** Draw the contents of the ratings panel. May request a resize of the window if the contents does not fit. */ void DrawRatings() { NWidgetBase *nwid = this->GetWidget(WID_TA_RATING_INFO); uint left = nwid->pos_x + WD_FRAMERECT_LEFT; uint right = nwid->pos_x + nwid->current_x - 1 - WD_FRAMERECT_RIGHT; uint y = nwid->pos_y + WD_FRAMERECT_TOP; DrawString(left, right, y, STR_LOCAL_AUTHORITY_COMPANY_RATINGS); y += FONT_HEIGHT_NORMAL; Dimension icon_size = GetSpriteSize(SPR_COMPANY_ICON); int icon_width = icon_size.width; int icon_y_offset = (FONT_HEIGHT_NORMAL - icon_size.height) / 2; Dimension exclusive_size = GetSpriteSize(SPR_EXCLUSIVE_TRANSPORT); int exclusive_width = exclusive_size.width; int exclusive_y_offset = (FONT_HEIGHT_NORMAL - exclusive_size.height) / 2; bool rtl = _current_text_dir == TD_RTL; uint text_left = left + (rtl ? 0 : icon_width + exclusive_width + 4); uint text_right = right - (rtl ? icon_width + exclusive_width + 4 : 0); uint icon_left = rtl ? right - icon_width : left; uint exclusive_left = rtl ? right - icon_width - exclusive_width - 2 : left + icon_width + 2; /* Draw list of companies */ const Company *c; FOR_ALL_COMPANIES(c) { if ((HasBit(this->town->have_ratings, c->index) || this->town->exclusivity == c->index)) { DrawCompanyIcon(c->index, icon_left, y + icon_y_offset); SetDParam(0, c->index); SetDParam(1, c->index); int r = this->town->ratings[c->index]; StringID str; (str = STR_CARGO_RATING_APPALLING, r <= RATING_APPALLING) || // Apalling (str++, r <= RATING_VERYPOOR) || // Very Poor (str++, r <= RATING_POOR) || // Poor (str++, r <= RATING_MEDIOCRE) || // Mediocore (str++, r <= RATING_GOOD) || // Good (str++, r <= RATING_VERYGOOD) || // Very Good (str++, r <= RATING_EXCELLENT) || // Excellent (str++, true); // Outstanding SetDParam(2, str); if (this->town->exclusivity == c->index) { DrawSprite(SPR_EXCLUSIVE_TRANSPORT, COMPANY_SPRITE_COLOUR(c->index), exclusive_left, y + exclusive_y_offset); } DrawString(text_left, text_right, y, STR_LOCAL_AUTHORITY_COMPANY_RATING); y += FONT_HEIGHT_NORMAL; } } y = y + WD_FRAMERECT_BOTTOM - nwid->pos_y; // Compute needed size of the widget. if (y > nwid->current_y) { /* If the company list is too big to fit, mark ourself dirty and draw again. */ ResizeWindow(this, 0, y - nwid->current_y); } } virtual void SetStringParameters(int widget) const { if (widget == WID_TA_CAPTION) SetDParam(0, this->window_number); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_TA_ACTION_INFO: if (this->sel_index != -1) { SetDParam(0, _price[PR_TOWN_ACTION] * _town_action_costs[this->sel_index] >> 8); DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM, STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING + this->sel_index); } break; case WID_TA_COMMAND_LIST: { int numact; uint buttons = GetMaskOfTownActions(&numact, _local_company, this->town); int y = r.top + WD_FRAMERECT_TOP; int pos = this->vscroll->GetPosition(); if (--pos < 0) { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_LOCAL_AUTHORITY_ACTIONS_TITLE); y += FONT_HEIGHT_NORMAL; } for (int i = 0; buttons; i++, buttons >>= 1) { if (pos <= -5) break; ///< Draw only the 5 fitting lines if ((buttons & 1) && --pos < 0) { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN + i, this->sel_index == i ? TC_WHITE : TC_ORANGE); y += FONT_HEIGHT_NORMAL; } } break; } } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_TA_ACTION_INFO: { assert(size->width > padding.width && size->height > padding.height); size->width -= WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height -= WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; Dimension d = {0, 0}; for (int i = 0; i < TACT_COUNT; i++) { SetDParam(0, _price[PR_TOWN_ACTION] * _town_action_costs[i] >> 8); d = maxdim(d, GetStringMultiLineBoundingBox(STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING + i, *size)); } *size = maxdim(*size, d); size->width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; } case WID_TA_COMMAND_LIST: size->height = WD_FRAMERECT_TOP + 5 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; size->width = GetStringBoundingBox(STR_LOCAL_AUTHORITY_ACTIONS_TITLE).width; for (uint i = 0; i < TACT_COUNT; i++ ) { size->width = max(size->width, GetStringBoundingBox(STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN + i).width); } size->width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; break; case WID_TA_RATING_INFO: resize->height = FONT_HEIGHT_NORMAL; size->height = WD_FRAMERECT_TOP + 9 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_TA_COMMAND_LIST: { int y = this->GetRowFromWidget(pt.y, WID_TA_COMMAND_LIST, 1, FONT_HEIGHT_NORMAL); if (!IsInsideMM(y, 0, 5)) return; y = GetNthSetBit(GetMaskOfTownActions(NULL, _local_company, this->town), y + this->vscroll->GetPosition() - 1); if (y >= 0) { this->sel_index = y; this->SetDirty(); } /* FALL THROUGH, when double-clicking. */ if (click_count == 1 || y < 0) break; } case WID_TA_EXECUTE: DoCommandP(this->town->xy, this->window_number, this->sel_index, CMD_DO_TOWN_ACTION | CMD_MSG(STR_ERROR_CAN_T_DO_THIS)); break; } } virtual void OnHundredthTick() { this->SetDirty(); } }; static const WindowDesc _town_authority_desc( WDP_AUTO, 317, 222, WC_TOWN_AUTHORITY, WC_NONE, 0, _nested_town_authority_widgets, lengthof(_nested_town_authority_widgets) ); static void ShowTownAuthorityWindow(uint town) { AllocateWindowDescFront(&_town_authority_desc, town); } /* Town view window. */ struct TownViewWindow : Window { private: Town *town; ///< Town displayed by the window. public: static const int WID_TV_HEIGHT_NORMAL = 150; TownViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->CreateNestedTree(desc); this->town = Town::Get(window_number); if (this->town->larger_town) this->GetWidget(WID_TV_CAPTION)->widget_data = STR_TOWN_VIEW_CITY_CAPTION; this->FinishInitNested(desc, window_number); this->flags |= WF_DISABLE_VP_SCROLL; NWidgetViewport *nvp = this->GetWidget(WID_TV_VIEWPORT); nvp->InitializeViewport(this, this->town->xy, ZOOM_LVL_NEWS); /* disable renaming town in network games if you are not the server */ this->SetWidgetDisabledState(WID_TV_CHANGE_NAME, _networking && !_network_server); } virtual void SetStringParameters(int widget) const { if (widget == WID_TV_CAPTION) SetDParam(0, this->town->index); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_TV_INFO) return; uint y = r.top + WD_FRAMERECT_TOP; SetDParam(0, this->town->cache.population); SetDParam(1, this->town->cache.num_houses); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y, STR_TOWN_VIEW_POPULATION_HOUSES); SetDParam(0, this->town->supplied[CT_PASSENGERS].old_act); SetDParam(1, this->town->supplied[CT_PASSENGERS].old_max); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX); SetDParam(0, this->town->supplied[CT_MAIL].old_act); SetDParam(1, this->town->supplied[CT_MAIL].old_max); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX); bool first = true; for (int i = TE_BEGIN; i < TE_END; i++) { if (this->town->goal[i] == 0) continue; if (this->town->goal[i] == TOWN_GROWTH_WINTER && (TileHeight(this->town->xy) < LowestSnowLine() || this->town->cache.population <= 90)) continue; if (this->town->goal[i] == TOWN_GROWTH_DESERT && (GetTropicZone(this->town->xy) != TROPICZONE_DESERT || this->town->cache.population <= 60)) continue; if (first) { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH); first = false; } bool rtl = _current_text_dir == TD_RTL; uint cargo_text_left = r.left + WD_FRAMERECT_LEFT + (rtl ? 0 : 20); uint cargo_text_right = r.right - WD_FRAMERECT_RIGHT - (rtl ? 20 : 0); const CargoSpec *cargo = FindFirstCargoWithTownEffect((TownEffect)i); assert(cargo != NULL); StringID string; if (this->town->goal[i] == TOWN_GROWTH_DESERT || this->town->goal[i] == TOWN_GROWTH_WINTER) { /* For 'original' gameplay, don't show the amount required (you need 1 or more ..) */ string = STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL; if (this->town->received[i].old_act == 0) { string = STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL; if (this->town->goal[i] == TOWN_GROWTH_WINTER && TileHeight(this->town->xy) < GetSnowLine()) { string = STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER; } } SetDParam(0, cargo->name); } else { string = STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED; if (this->town->received[i].old_act < this->town->goal[i]) { string = STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED; } SetDParam(0, cargo->Index()); SetDParam(1, this->town->received[i].old_act); SetDParam(2, cargo->Index()); SetDParam(3, this->town->goal[i]); } DrawString(cargo_text_left, cargo_text_right, y += FONT_HEIGHT_NORMAL, string); } if (HasBit(this->town->flags, TOWN_IS_FUNDED)) { SetDParam(0, ((this->town->growth_rate & (~TOWN_GROW_RATE_CUSTOM)) * TOWN_GROWTH_TICKS + DAY_TICKS) / DAY_TICKS); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, this->town->fund_buildings_months == 0 ? STR_TOWN_VIEW_TOWN_GROWS_EVERY : STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED); } else { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, STR_TOWN_VIEW_TOWN_GROW_STOPPED); } /* only show the town noise, if the noise option is activated. */ if (_settings_game.economy.station_noise_level) { SetDParam(0, this->town->noise_reached); SetDParam(1, this->town->MaxTownNoise()); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, STR_TOWN_VIEW_NOISE_IN_TOWN); } if (this->town->text != NULL) { SetDParamStr(0, this->town->text); DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK); } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_TV_CENTER_VIEW: // scroll to location if (_ctrl_pressed) { ShowExtraViewPortWindow(this->town->xy); } else { ScrollMainWindowToTile(this->town->xy); } break; case WID_TV_SHOW_AUTHORITY: // town authority ShowTownAuthorityWindow(this->window_number); break; case WID_TV_CHANGE_NAME: // rename SetDParam(0, this->window_number); ShowQueryString(STR_TOWN_NAME, STR_TOWN_VIEW_RENAME_TOWN_BUTTON, MAX_LENGTH_TOWN_NAME_CHARS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT | QSF_LEN_IN_CHARS); break; case WID_TV_EXPAND: { // expand town - only available on Scenario editor /* Warn the user if towns are not allowed to build roads, but do this only once per OpenTTD run. */ static bool _warn_town_no_roads = false; if (!_settings_game.economy.allow_town_roads && !_warn_town_no_roads) { ShowErrorMessage(STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS, INVALID_STRING_ID, WL_WARNING); _warn_town_no_roads = true; } DoCommandP(0, this->window_number, 0, CMD_EXPAND_TOWN | CMD_MSG(STR_ERROR_CAN_T_EXPAND_TOWN)); break; } case WID_TV_DELETE: // delete town - only available on Scenario editor DoCommandP(0, this->window_number, 0, CMD_DELETE_TOWN | CMD_MSG(STR_ERROR_TOWN_CAN_T_DELETE)); break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_TV_INFO: size->height = GetDesiredInfoHeight(size->width); break; } } /** * Gets the desired height for the information panel. * @return the desired height in pixels. */ uint GetDesiredInfoHeight(int width) const { uint aimed_height = 3 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; bool first = true; for (int i = TE_BEGIN; i < TE_END; i++) { if (this->town->goal[i] == 0) continue; if (this->town->goal[i] == TOWN_GROWTH_WINTER && (TileHeight(this->town->xy) < LowestSnowLine() || this->town->cache.population <= 90)) continue; if (this->town->goal[i] == TOWN_GROWTH_DESERT && (GetTropicZone(this->town->xy) != TROPICZONE_DESERT || this->town->cache.population <= 60)) continue; if (first) { aimed_height += FONT_HEIGHT_NORMAL; first = false; } aimed_height += FONT_HEIGHT_NORMAL; } aimed_height += FONT_HEIGHT_NORMAL; if (_settings_game.economy.station_noise_level) aimed_height += FONT_HEIGHT_NORMAL; if (this->town->text != NULL) { SetDParamStr(0, this->town->text); aimed_height += GetStringHeight(STR_JUST_RAW_STRING, width); } return aimed_height; } void ResizeWindowAsNeeded() { const NWidgetBase *nwid_info = this->GetWidget(WID_TV_INFO); uint aimed_height = GetDesiredInfoHeight(nwid_info->current_x); if (aimed_height > nwid_info->current_y || (aimed_height < nwid_info->current_y && nwid_info->current_y > nwid_info->smallest_y)) { this->ReInit(); } } virtual void OnResize() { if (this->viewport != NULL) { NWidgetViewport *nvp = this->GetWidget(WID_TV_VIEWPORT); nvp->UpdateViewportCoordinates(this); ScrollWindowToTile(this->town->xy, this, true); // Re-center viewport. } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; /* Called when setting station noise or required cargoes have changed, in order to resize the window */ this->SetDirty(); // refresh display for current size. This will allow to avoid glitches when downgrading this->ResizeWindowAsNeeded(); } virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; DoCommandP(0, this->window_number, 0, CMD_RENAME_TOWN | CMD_MSG(STR_ERROR_CAN_T_RENAME_TOWN), NULL, str); } }; static const NWidgetPart _nested_town_game_view_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TV_CAPTION), SetDataTip(STR_TOWN_VIEW_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(WWT_INSET, COLOUR_BROWN), SetPadding(2, 2, 2, 2), NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_TV_VIEWPORT), SetMinimalSize(254, 86), SetFill(1, 0), SetResize(1, 1), SetPadding(1, 1, 1, 1), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TV_INFO), SetMinimalSize(260, 32), SetResize(1, 0), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_CENTER_VIEW), SetMinimalSize(80, 12), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_BUTTON_LOCATION, STR_TOWN_VIEW_CENTER_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_SHOW_AUTHORITY), SetMinimalSize(80, 12), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON, STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_CHANGE_NAME), SetMinimalSize(80, 12), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_BUTTON_RENAME, STR_TOWN_VIEW_RENAME_TOOLTIP), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), }; static const WindowDesc _town_game_view_desc( WDP_AUTO, 260, TownViewWindow::WID_TV_HEIGHT_NORMAL, WC_TOWN_VIEW, WC_NONE, 0, _nested_town_game_view_widgets, lengthof(_nested_town_game_view_widgets) ); static const NWidgetPart _nested_town_editor_view_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN, WID_TV_CAPTION), SetDataTip(STR_TOWN_VIEW_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_CHANGE_NAME), SetMinimalSize(76, 14), SetDataTip(STR_BUTTON_RENAME, STR_TOWN_VIEW_RENAME_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(WWT_INSET, COLOUR_BROWN), SetPadding(2, 2, 2, 2), NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_TV_VIEWPORT), SetMinimalSize(254, 86), SetFill(1, 1), SetResize(1, 1), SetPadding(1, 1, 1, 1), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TV_INFO), SetMinimalSize(260, 32), SetResize(1, 0), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_CENTER_VIEW), SetMinimalSize(80, 12), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_BUTTON_LOCATION, STR_TOWN_VIEW_CENTER_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_EXPAND), SetMinimalSize(80, 12), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TOWN_VIEW_EXPAND_BUTTON, STR_TOWN_VIEW_EXPAND_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TV_DELETE), SetMinimalSize(80, 12), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TOWN_VIEW_DELETE_BUTTON, STR_TOWN_VIEW_DELETE_TOOLTIP), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), }; static const WindowDesc _town_editor_view_desc( WDP_AUTO, 260, TownViewWindow::WID_TV_HEIGHT_NORMAL, WC_TOWN_VIEW, WC_NONE, 0, _nested_town_editor_view_widgets, lengthof(_nested_town_editor_view_widgets) ); void ShowTownViewWindow(TownID town) { if (_game_mode == GM_EDITOR) { AllocateWindowDescFront(&_town_editor_view_desc, town); } else { AllocateWindowDescFront(&_town_game_view_desc, town); } } static const NWidgetPart _nested_town_directory_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_TOWN_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TD_SORT_NAME), SetMinimalSize(99, 12), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_TD_SORT_POPULATION), SetMinimalSize(97, 12), SetDataTip(STR_SORT_BY_CAPTION_POPULATION, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_TD_LIST), SetMinimalSize(196, 0), SetDataTip(0x0, STR_TOWN_DIRECTORY_LIST_TOOLTIP), SetFill(1, 0), SetResize(0, 10), SetScrollbar(WID_TD_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(WWT_TEXT, COLOUR_BROWN, WID_TD_WORLD_POPULATION), SetPadding(2, 0, 0, 2), SetMinimalSize(196, 12), SetFill(1, 0), SetDataTip(STR_TOWN_POPULATION, STR_NULL), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_TD_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), EndContainer(), }; /** Town directory window class. */ struct TownDirectoryWindow : public Window { private: /* Runtime saved values */ static Listing last_sorting; static const Town *last_town; /* Constants for sorting towns */ static GUITownList::SortFunction * const sorter_funcs[]; GUITownList towns; Scrollbar *vscroll; void BuildSortTownList() { if (this->towns.NeedRebuild()) { this->towns.Clear(); const Town *t; FOR_ALL_TOWNS(t) { *this->towns.Append() = t; } this->towns.Compact(); this->towns.RebuildDone(); this->vscroll->SetCount(this->towns.Length()); // Update scrollbar as well. } /* Always sort the towns. */ this->last_town = NULL; this->towns.Sort(); } /** Sort by town name */ static int CDECL TownNameSorter(const Town * const *a, const Town * const *b) { static char buf_cache[64]; const Town *ta = *a; const Town *tb = *b; char buf[64]; SetDParam(0, ta->index); GetString(buf, STR_TOWN_NAME, lastof(buf)); /* If 'b' is the same town as in the last round, use the cached value * We do this to speed stuff up ('b' is called with the same value a lot of * times after each other) */ if (tb != last_town) { last_town = tb; SetDParam(0, tb->index); GetString(buf_cache, STR_TOWN_NAME, lastof(buf_cache)); } return strnatcmp(buf, buf_cache); // Sort by name (natural sorting). } /** Sort by population */ static int CDECL TownPopulationSorter(const Town * const *a, const Town * const *b) { uint32 a_population = (*a)->cache.population; uint32 b_population = (*b)->cache.population; if (a_population == b_population) return TownDirectoryWindow::TownNameSorter(a, b); return (a_population < b_population) ? -1 : 1; } public: TownDirectoryWindow(const WindowDesc *desc) : Window() { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_TD_SCROLLBAR); this->towns.SetListing(this->last_sorting); this->towns.SetSortFuncs(TownDirectoryWindow::sorter_funcs); this->towns.ForceRebuild(); this->BuildSortTownList(); this->FinishInitNested(desc, 0); } ~TownDirectoryWindow() { this->last_sorting = this->towns.GetListing(); } virtual void SetStringParameters(int widget) const { if (widget == WID_TD_WORLD_POPULATION) SetDParam(0, GetWorldPopulation()); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_TD_SORT_NAME: if (this->towns.SortType() == 0) this->DrawSortButtonState(widget, this->towns.IsDescSortOrder() ? SBS_DOWN : SBS_UP); break; case WID_TD_SORT_POPULATION: if (this->towns.SortType() != 0) this->DrawSortButtonState(widget, this->towns.IsDescSortOrder() ? SBS_DOWN : SBS_UP); break; case WID_TD_LIST: { int n = 0; int y = r.top + WD_FRAMERECT_TOP; if (this->towns.Length() == 0) { // No towns available. DrawString(r.left + WD_FRAMERECT_LEFT, r.right, y, STR_TOWN_DIRECTORY_NONE); break; } /* At least one town available. */ bool rtl = _current_text_dir == TD_RTL; Dimension icon_size = GetSpriteSize(SPR_TOWN_RATING_GOOD); int text_left = r.left + WD_FRAMERECT_LEFT + (rtl ? 0 : icon_size.width + 2); int text_right = r.right - WD_FRAMERECT_RIGHT - (rtl ? icon_size.width + 2 : 0); int icon_x = rtl ? r.right - WD_FRAMERECT_RIGHT - icon_size.width : r.left + WD_FRAMERECT_LEFT; for (uint i = this->vscroll->GetPosition(); i < this->towns.Length(); i++) { const Town *t = this->towns[i]; assert(t->xy != INVALID_TILE); /* Draw rating icon. */ if (_game_mode == GM_EDITOR || !HasBit(t->have_ratings, _local_company)) { DrawSprite(SPR_TOWN_RATING_NA, PAL_NONE, icon_x, y + (this->resize.step_height - icon_size.height) / 2); } else { SpriteID icon = SPR_TOWN_RATING_APALLING; if (t->ratings[_local_company] > RATING_VERYPOOR) icon = SPR_TOWN_RATING_MEDIOCRE; if (t->ratings[_local_company] > RATING_GOOD) icon = SPR_TOWN_RATING_GOOD; DrawSprite(icon, PAL_NONE, icon_x, y + (this->resize.step_height - icon_size.height) / 2); } SetDParam(0, t->index); SetDParam(1, t->cache.population); DrawString(text_left, text_right, y + (this->resize.step_height - FONT_HEIGHT_NORMAL) / 2, STR_TOWN_DIRECTORY_TOWN); y += this->resize.step_height; if (++n == this->vscroll->GetCapacity()) break; // max number of towns in 1 window } break; } } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_TD_SORT_NAME: case WID_TD_SORT_POPULATION: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; } case WID_TD_LIST: { Dimension d = GetStringBoundingBox(STR_TOWN_DIRECTORY_NONE); for (uint i = 0; i < this->towns.Length(); i++) { const Town *t = this->towns[i]; assert(t != NULL); SetDParam(0, t->index); SetDParamMaxDigits(1, 8); d = maxdim(d, GetStringBoundingBox(STR_TOWN_DIRECTORY_TOWN)); } Dimension icon_size = GetSpriteSize(SPR_TOWN_RATING_GOOD); d.width += icon_size.width + 2; d.height = max(d.height, icon_size.height); resize->height = d.height; d.height *= 5; d.width += padding.width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; d.height += padding.height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(*size, d); break; } case WID_TD_WORLD_POPULATION: { SetDParamMaxDigits(0, 10); Dimension d = GetStringBoundingBox(STR_TOWN_POPULATION); d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_TD_SORT_NAME: // Sort by Name ascending/descending if (this->towns.SortType() == 0) { this->towns.ToggleSortOrder(); } else { this->towns.SetSortType(0); } this->BuildSortTownList(); this->SetDirty(); break; case WID_TD_SORT_POPULATION: // Sort by Population ascending/descending if (this->towns.SortType() == 1) { this->towns.ToggleSortOrder(); } else { this->towns.SetSortType(1); } this->BuildSortTownList(); this->SetDirty(); break; case WID_TD_LIST: { // Click on Town Matrix uint id_v = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_TD_LIST, WD_FRAMERECT_TOP); if (id_v >= this->towns.Length()) return; // click out of town bounds const Town *t = this->towns[id_v]; assert(t != NULL); if (_ctrl_pressed) { ShowExtraViewPortWindow(t->xy); } else { ScrollMainWindowToTile(t->xy); } break; } } } virtual void OnPaint() { if (this->towns.NeedRebuild()) this->BuildSortTownList(); this->DrawWidgets(); } virtual void OnHundredthTick() { this->BuildSortTownList(); this->SetDirty(); } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_TD_LIST); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (data == 0) { /* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */ this->towns.ForceRebuild(); } else { this->towns.ForceResort(); } } }; Listing TownDirectoryWindow::last_sorting = {false, 0}; const Town *TownDirectoryWindow::last_town = NULL; /* Available town directory sorting functions */ GUITownList::SortFunction * const TownDirectoryWindow::sorter_funcs[] = { &TownNameSorter, &TownPopulationSorter, }; static const WindowDesc _town_directory_desc( WDP_AUTO, 208, 202, WC_TOWN_DIRECTORY, WC_NONE, 0, _nested_town_directory_widgets, lengthof(_nested_town_directory_widgets) ); void ShowTownDirectory() { if (BringWindowToFrontById(WC_TOWN_DIRECTORY, 0)) return; new TownDirectoryWindow(&_town_directory_desc); } void CcFoundTown(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); } void CcFoundRandomTown(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) ScrollMainWindowToTile(Town::Get(_new_town_id)->xy); } static const NWidgetPart _nested_found_town_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_FOUND_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), /* Construct new town(s) buttons. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_NEW_TOWN), SetMinimalSize(156, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_NEW_TOWN_BUTTON, STR_FOUND_TOWN_NEW_TOWN_TOOLTIP), SetPadding(0, 2, 1, 2), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_RANDOM_TOWN), SetMinimalSize(156, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_RANDOM_TOWN_BUTTON, STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP), SetPadding(0, 2, 1, 2), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_MANY_RANDOM_TOWNS), SetMinimalSize(156, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_MANY_RANDOM_TOWNS, STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP), SetPadding(0, 2, 0, 2), /* Town name selection. */ NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(156, 14), SetPadding(0, 2, 0, 2), SetDataTip(STR_FOUND_TOWN_NAME_TITLE, STR_NULL), NWidget(WWT_EDITBOX, COLOUR_GREY, WID_TF_TOWN_NAME_EDITBOX), SetMinimalSize(156, 12), SetPadding(0, 2, 3, 2), SetDataTip(STR_FOUND_TOWN_NAME_EDITOR_TITLE, STR_FOUND_TOWN_NAME_EDITOR_HELP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_TOWN_NAME_RANDOM), SetMinimalSize(78, 12), SetPadding(0, 2, 0, 2), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_NAME_RANDOM_BUTTON, STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP), /* Town size selection. */ NWidget(NWID_HORIZONTAL), SetPIP(2, 0, 2), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(148, 14), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_TITLE, STR_NULL), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_SMALL), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_MEDIUM), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_LARGE), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_RANDOM), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SIZE_RANDOM, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 3), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_CITY), SetPadding(0, 2, 0, 2), SetMinimalSize(156, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_CITY, STR_FOUND_TOWN_CITY_TOOLTIP), SetFill(1, 0), /* Town roads selection. */ NWidget(NWID_HORIZONTAL), SetPIP(2, 0, 2), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(148, 14), SetDataTip(STR_FOUND_TOWN_ROAD_LAYOUT, STR_NULL), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_ORIGINAL), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_BETTER), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_GRID2), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_GRID3), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 1), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_RANDOM), SetPadding(0, 2, 0, 2), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), }; /** Found a town window class. */ struct FoundTownWindow : Window { private: TownSize town_size; ///< Selected town size TownLayout town_layout; ///< Selected town layout bool city; ///< Are we building a city? QueryString townname_editbox; ///< Townname editbox bool townnamevalid; ///< Is generated town name valid? uint32 townnameparts; ///< Generated town name TownNameParams params; ///< Town name parameters public: FoundTownWindow(const WindowDesc *desc, WindowNumber window_number) : town_size(TSZ_MEDIUM), town_layout(_settings_game.economy.town_layout), townname_editbox(MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_TOWN_NAME_CHARS), params(_settings_game.game_creation.town_name) { this->InitNested(desc, window_number); this->querystrings[WID_TF_TOWN_NAME_EDITBOX] = &this->townname_editbox; this->RandomTownName(); this->UpdateButtons(true); } void RandomTownName() { this->townnamevalid = GenerateTownName(&this->townnameparts); if (!this->townnamevalid) { this->townname_editbox.text.DeleteAll(); } else { GetTownName(this->townname_editbox.text.buf, &this->params, this->townnameparts, &this->townname_editbox.text.buf[this->townname_editbox.text.max_bytes - 1]); this->townname_editbox.text.UpdateSize(); } UpdateOSKOriginalText(this, WID_TF_TOWN_NAME_EDITBOX); this->SetWidgetDirty(WID_TF_TOWN_NAME_EDITBOX); } void UpdateButtons(bool check_availability) { if (check_availability && _game_mode != GM_EDITOR) { this->SetWidgetsDisabledState(true, WID_TF_RANDOM_TOWN, WID_TF_MANY_RANDOM_TOWNS, WID_TF_SIZE_LARGE, WIDGET_LIST_END); this->SetWidgetsDisabledState(_settings_game.economy.found_town != TF_CUSTOM_LAYOUT, WID_TF_LAYOUT_ORIGINAL, WID_TF_LAYOUT_BETTER, WID_TF_LAYOUT_GRID2, WID_TF_LAYOUT_GRID3, WID_TF_LAYOUT_RANDOM, WIDGET_LIST_END); if (_settings_game.economy.found_town != TF_CUSTOM_LAYOUT) town_layout = _settings_game.economy.town_layout; } for (int i = WID_TF_SIZE_SMALL; i <= WID_TF_SIZE_RANDOM; i++) { this->SetWidgetLoweredState(i, i == WID_TF_SIZE_SMALL + this->town_size); } this->SetWidgetLoweredState(WID_TF_CITY, this->city); for (int i = WID_TF_LAYOUT_ORIGINAL; i <= WID_TF_LAYOUT_RANDOM; i++) { this->SetWidgetLoweredState(i, i == WID_TF_LAYOUT_ORIGINAL + this->town_layout); } this->SetDirty(); } void ExecuteFoundTownCommand(TileIndex tile, bool random, StringID errstr, CommandCallback cc) { const char *name = NULL; if (!this->townnamevalid) { name = this->townname_editbox.text.buf; } else { /* If user changed the name, send it */ char buf[MAX_LENGTH_TOWN_NAME_CHARS * MAX_CHAR_LENGTH]; GetTownName(buf, &this->params, this->townnameparts, lastof(buf)); if (strcmp(buf, this->townname_editbox.text.buf) != 0) name = this->townname_editbox.text.buf; } bool success = DoCommandP(tile, this->town_size | this->city << 2 | this->town_layout << 3 | random << 6, townnameparts, CMD_FOUND_TOWN | CMD_MSG(errstr), cc, name); if (success) this->RandomTownName(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_TF_NEW_TOWN: HandlePlacePushButton(this, WID_TF_NEW_TOWN, SPR_CURSOR_TOWN, HT_RECT); break; case WID_TF_RANDOM_TOWN: this->ExecuteFoundTownCommand(0, true, STR_ERROR_CAN_T_GENERATE_TOWN, CcFoundRandomTown); break; case WID_TF_TOWN_NAME_RANDOM: this->RandomTownName(); this->SetFocusedWidget(WID_TF_TOWN_NAME_EDITBOX); break; case WID_TF_MANY_RANDOM_TOWNS: _generating_world = true; UpdateNearestTownForRoadTiles(true); if (!GenerateTowns(this->town_layout)) { ShowErrorMessage(STR_ERROR_CAN_T_GENERATE_TOWN, STR_ERROR_NO_SPACE_FOR_TOWN, WL_INFO); } UpdateNearestTownForRoadTiles(false); _generating_world = false; break; case WID_TF_SIZE_SMALL: case WID_TF_SIZE_MEDIUM: case WID_TF_SIZE_LARGE: case WID_TF_SIZE_RANDOM: this->town_size = (TownSize)(widget - WID_TF_SIZE_SMALL); this->UpdateButtons(false); break; case WID_TF_CITY: this->city ^= true; this->SetWidgetLoweredState(WID_TF_CITY, this->city); this->SetDirty(); break; case WID_TF_LAYOUT_ORIGINAL: case WID_TF_LAYOUT_BETTER: case WID_TF_LAYOUT_GRID2: case WID_TF_LAYOUT_GRID3: case WID_TF_LAYOUT_RANDOM: this->town_layout = (TownLayout)(widget - WID_TF_LAYOUT_ORIGINAL); this->UpdateButtons(false); break; } } virtual void OnPlaceObject(Point pt, TileIndex tile) { this->ExecuteFoundTownCommand(tile, false, STR_ERROR_CAN_T_FOUND_TOWN_HERE, CcFoundTown); } virtual void OnPlaceObjectAbort() { this->RaiseButtons(); this->UpdateButtons(false); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->UpdateButtons(true); } }; static const WindowDesc _found_town_desc( WDP_AUTO, 160, 162, WC_FOUND_TOWN, WC_NONE, WDF_CONSTRUCTION, _nested_found_town_widgets, lengthof(_nested_found_town_widgets) ); void ShowFoundTownWindow() { if (_game_mode != GM_EDITOR && !Company::IsValidID(_local_company)) return; AllocateWindowDescFront(&_found_town_desc, 0); } openttd-1.3.3/src/querystring_gui.h0000644000000000000000000000606512246102611016073 0ustar rootroot/* $Id: querystring_gui.h 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file querystring_gui.h Base for the GUIs that have an edit box in them. */ #ifndef QUERYSTRING_GUI_H #define QUERYSTRING_GUI_H #include "textbuf_type.h" #include "textbuf_gui.h" #include "window_gui.h" /** * Data stored about a string that can be modified in the GUI */ struct QueryString { /* Special actions when hitting ENTER or ESC. (only keyboard, not OSK) */ static const int ACTION_NOTHING = -1; ///< Nothing. static const int ACTION_DESELECT = -2; ///< Deselect editbox. static const int ACTION_CLEAR = -3; ///< Clear editbox. StringID caption; int ok_button; ///< Widget button of parent window to simulate when pressing OK in OSK. int cancel_button; ///< Widget button of parent window to simulate when pressing CANCEL in OSK. Textbuf text; const char *orig; bool handled; /** * Initialize string. * @param size Maximum size in bytes. * @param chars Maximum size in chars. */ QueryString(uint16 size, uint16 chars = UINT16_MAX) : ok_button(ACTION_NOTHING), cancel_button(ACTION_DESELECT), text(size, chars), orig(NULL) { } /** * Make sure everything gets freed. */ ~QueryString() { free(this->orig); } public: void DrawEditBox(const Window *w, int wid) const; void ClickEditBox(Window *w, Point pt, int wid, int click_count, bool focus_changed); void HandleEditBox(Window *w, int wid); Point GetCaretPosition(const Window *w, int wid) const; Rect GetBoundingRect(const Window *w, int wid, const char *from, const char *to) const; const char *GetCharAtPosition(const Window *w, int wid, const Point &pt) const; /** * Get the current text. * @return Current text. */ const char *GetText() const { return this->text.buf; } /** * Get the position of the caret in the text buffer. * @return Pointer to the caret in the text buffer. */ const char *GetCaret() const { return this->text.buf + this->text.caretpos; } /** * Get the currently marked text. * @param[out] length Length of the marked text. * @return Begining of the marked area or NULL if no text is marked. */ const char *GetMarkedText(size_t *length) const { if (this->text.markend == 0) return NULL; *length = this->text.markend - this->text.markpos; return this->text.buf + this->text.markpos; } }; void ShowOnScreenKeyboard(Window *parent, int button); void UpdateOSKOriginalText(const Window *parent, int button); bool IsOSKOpenedFor(const Window *w, int button); #endif /* QUERYSTRING_GUI_H */ openttd-1.3.3/src/graph_gui.cpp0000644000000000000000000015254412246102611015137 0ustar rootroot/* $Id: graph_gui.cpp 25340 2013-06-09 09:38:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file graph_gui.cpp GUI that shows performance graphs. */ #include "stdafx.h" #include "graph_gui.h" #include "window_gui.h" #include "company_base.h" #include "company_gui.h" #include "economy_func.h" #include "cargotype.h" #include "strings_func.h" #include "window_func.h" #include "date_func.h" #include "gfx_func.h" #include "sortlist_type.h" #include "core/geometry_func.hpp" #include "currency.h" #include "widgets/graph_widget.h" #include "table/strings.h" #include "table/sprites.h" #include /* Bitmasks of company and cargo indices that shouldn't be drawn. */ static uint _legend_excluded_companies; static uint _legend_excluded_cargo; /* Apparently these don't play well with enums. */ static const OverflowSafeInt64 INVALID_DATAPOINT(INT64_MAX); // Value used for a datapoint that shouldn't be drawn. static const uint INVALID_DATAPOINT_POS = UINT_MAX; // Used to determine if the previous point was drawn. /****************/ /* GRAPH LEGEND */ /****************/ struct GraphLegendWindow : Window { GraphLegendWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (!HasBit(_legend_excluded_companies, c)) this->LowerWidget(c + WID_GL_FIRST_COMPANY); this->OnInvalidateData(c); } } virtual void DrawWidget(const Rect &r, int widget) const { if (!IsInsideMM(widget, WID_GL_FIRST_COMPANY, MAX_COMPANIES + WID_GL_FIRST_COMPANY)) return; CompanyID cid = (CompanyID)(widget - WID_GL_FIRST_COMPANY); if (!Company::IsValidID(cid)) return; bool rtl = _current_text_dir == TD_RTL; Dimension d = GetSpriteSize(SPR_COMPANY_ICON); DrawCompanyIcon(cid, rtl ? r.right - d.width - 2 : r.left + 2, r.top + (r.bottom - r.top - d.height) / 2); SetDParam(0, cid); SetDParam(1, cid); DrawString(r.left + (rtl ? (uint)WD_FRAMERECT_LEFT : (d.width + 4)), r.right - (rtl ? (d.width + 4) : (uint)WD_FRAMERECT_RIGHT), r.top + (r.bottom - r.top + 1 - FONT_HEIGHT_NORMAL) / 2, STR_COMPANY_NAME_COMPANY_NUM, HasBit(_legend_excluded_companies, cid) ? TC_BLACK : TC_WHITE); } virtual void OnClick(Point pt, int widget, int click_count) { if (!IsInsideMM(widget, WID_GL_FIRST_COMPANY, MAX_COMPANIES + WID_GL_FIRST_COMPANY)) return; ToggleBit(_legend_excluded_companies, widget - WID_GL_FIRST_COMPANY); this->ToggleWidgetLoweredState(widget); this->SetDirty(); InvalidateWindowData(WC_INCOME_GRAPH, 0); InvalidateWindowData(WC_OPERATING_PROFIT, 0); InvalidateWindowData(WC_DELIVERED_CARGO, 0); InvalidateWindowData(WC_PERFORMANCE_HISTORY, 0); InvalidateWindowData(WC_COMPANY_VALUE, 0); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; if (Company::IsValidID(data)) return; SetBit(_legend_excluded_companies, data); this->RaiseWidget(data + WID_GL_FIRST_COMPANY); } }; /** * Construct a vertical list of buttons, one for each company. * @param biggest_index Storage for collecting the biggest index used in the returned tree. * @return Panel with company buttons. * @post \c *biggest_index contains the largest used index in the tree. */ static NWidgetBase *MakeNWidgetCompanyLines(int *biggest_index) { NWidgetVertical *vert = new NWidgetVertical(); uint line_height = max(GetSpriteSize(SPR_COMPANY_ICON).height, FONT_HEIGHT_NORMAL) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; for (int widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) { NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, widnum); panel->SetMinimalSize(246, line_height); panel->SetFill(1, 0); panel->SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP); vert->Add(panel); } *biggest_index = WID_GL_LAST_COMPANY; return vert; } static const NWidgetPart _nested_graph_legend_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_KEY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetMinimalSize(2, 0), NWidgetFunction(MakeNWidgetCompanyLines), NWidget(NWID_SPACER), SetMinimalSize(2, 0), EndContainer(), EndContainer(), }; static const WindowDesc _graph_legend_desc( WDP_AUTO, 0, 0, WC_GRAPH_LEGEND, WC_NONE, 0, _nested_graph_legend_widgets, lengthof(_nested_graph_legend_widgets) ); static void ShowGraphLegend() { AllocateWindowDescFront(&_graph_legend_desc, 0); } /** Contains the interval of a graph's data. */ struct ValuesInterval { OverflowSafeInt64 highest; ///< Highest value of this interval. Must be zero or greater. OverflowSafeInt64 lowest; ///< Lowest value of this interval. Must be zero or less. }; /******************/ /* BASE OF GRAPHS */ /*****************/ struct BaseGraphWindow : Window { protected: static const int GRAPH_MAX_DATASETS = 32; static const int GRAPH_AXIS_LINE_COLOUR = PC_BLACK; static const int GRAPH_NUM_MONTHS = 24; ///< Number of months displayed in the graph. static const int MIN_GRAPH_NUM_LINES_Y = 9; ///< Minimal number of horizontal lines to draw. static const int MIN_GRID_PIXEL_SIZE = 20; ///< Minimum distance between graph lines. uint excluded_data; ///< bitmask of the datasets that shouldn't be displayed. byte num_dataset; byte num_on_x_axis; byte num_vert_lines; static const TextColour graph_axis_label_colour = TC_BLACK; ///< colour of the graph axis label. /* The starting month and year that values are plotted against. If month is * 0xFF, use x_values_start and x_values_increment below instead. */ byte month; Year year; /* These values are used if the graph is being plotted against values * rather than the dates specified by month and year. */ uint16 x_values_start; uint16 x_values_increment; int graph_widget; StringID format_str_y_axis; byte colours[GRAPH_MAX_DATASETS]; OverflowSafeInt64 cost[GRAPH_MAX_DATASETS][GRAPH_NUM_MONTHS]; ///< Stored costs for the last #GRAPH_NUM_MONTHS months /** * Get the interval that contains the graph's data. Excluded data is ignored to show smaller values in * better detail when disabling higher ones. * @param num_hori_lines Number of horizontal lines to be drawn. * @return Highest and lowest values of the graph (ignoring disabled data). */ ValuesInterval GetValuesInterval(int num_hori_lines) const { ValuesInterval current_interval; current_interval.highest = INT64_MIN; current_interval.lowest = INT64_MAX; for (int i = 0; i < this->num_dataset; i++) { if (HasBit(this->excluded_data, i)) continue; for (int j = 0; j < this->num_on_x_axis; j++) { OverflowSafeInt64 datapoint = this->cost[i][j]; if (datapoint != INVALID_DATAPOINT) { current_interval.highest = max(current_interval.highest, datapoint); current_interval.lowest = min(current_interval.lowest, datapoint); } } } /* Prevent showing values too close to the graph limits. */ current_interval.highest = (11 * current_interval.highest) / 10; current_interval.lowest = (11 * current_interval.lowest) / 10; /* Always include zero in the shown range. */ double abs_lower = (current_interval.lowest > 0) ? 0 : (double)abs(current_interval.lowest); double abs_higher = (current_interval.highest < 0) ? 0 : (double)current_interval.highest; int num_pos_grids; int64 grid_size; if (abs_lower != 0 || abs_higher != 0) { /* The number of grids to reserve for the positive part is: */ num_pos_grids = (int)floor(0.5 + num_hori_lines * abs_higher / (abs_higher + abs_lower)); /* If there are any positive or negative values, force that they have at least one grid. */ if (num_pos_grids == 0 && abs_higher != 0) num_pos_grids++; if (num_pos_grids == num_hori_lines && abs_lower != 0) num_pos_grids--; /* Get the required grid size for each side and use the maximum one. */ int64 grid_size_higher = (abs_higher > 0) ? ((int64)abs_higher + num_pos_grids - 1) / num_pos_grids : 0; int64 grid_size_lower = (abs_lower > 0) ? ((int64)abs_lower + num_hori_lines - num_pos_grids - 1) / (num_hori_lines - num_pos_grids) : 0; grid_size = max(grid_size_higher, grid_size_lower); } else { /* If both values are zero, show an empty graph. */ num_pos_grids = num_hori_lines / 2; grid_size = 1; } current_interval.highest = num_pos_grids * grid_size; current_interval.lowest = -(num_hori_lines - num_pos_grids) * grid_size; return current_interval; } /** * Get width for Y labels. * @param current_interval Interval that contains all of the graph data. * @param num_hori_lines Number of horizontal lines to be drawn. */ uint GetYLabelWidth(ValuesInterval current_interval, int num_hori_lines) const { /* draw text strings on the y axis */ int64 y_label = current_interval.highest; int64 y_label_separation = (current_interval.highest - current_interval.lowest) / num_hori_lines; uint max_width = 0; for (int i = 0; i < (num_hori_lines + 1); i++) { SetDParam(0, this->format_str_y_axis); SetDParam(1, y_label); Dimension d = GetStringBoundingBox(STR_GRAPH_Y_LABEL); if (d.width > max_width) max_width = d.width; y_label -= y_label_separation; } return max_width; } /** * Actually draw the graph. * @param r the rectangle of the data field of the graph */ void DrawGraph(Rect r) const { uint x, y; ///< Reused whenever x and y coordinates are needed. ValuesInterval interval; ///< Interval that contains all of the graph data. int x_axis_offset; ///< Distance from the top of the graph to the x axis. /* the colours and cost array of GraphDrawer must accommodate * both values for cargo and companies. So if any are higher, quit */ assert_compile(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES); assert(this->num_vert_lines > 0); byte grid_colour = _colour_gradient[COLOUR_GREY][4]; /* Rect r will be adjusted to contain just the graph, with labels being * placed outside the area. */ r.top += 5 + GetCharacterHeight(FS_SMALL) / 2; r.bottom -= (this->month == 0xFF ? 1 : 3) * GetCharacterHeight(FS_SMALL) + 4; r.left += 9; r.right -= 5; /* Initial number of horizontal lines. */ int num_hori_lines = 160 / MIN_GRID_PIXEL_SIZE; /* For the rest of the height, the number of horizontal lines will increase more slowly. */ int resize = (r.bottom - r.top - 160) / (2 * MIN_GRID_PIXEL_SIZE); if (resize > 0) num_hori_lines += resize; interval = GetValuesInterval(num_hori_lines); int label_width = GetYLabelWidth(interval, num_hori_lines); r.left += label_width; int x_sep = (r.right - r.left) / this->num_vert_lines; int y_sep = (r.bottom - r.top) / num_hori_lines; /* Redetermine right and bottom edge of graph to fit with the integer * separation values. */ r.right = r.left + x_sep * this->num_vert_lines; r.bottom = r.top + y_sep * num_hori_lines; OverflowSafeInt64 interval_size = interval.highest + abs(interval.lowest); /* Where to draw the X axis. Use floating point to avoid overflowing and results of zero. */ x_axis_offset = (int)((r.bottom - r.top) * (double)interval.highest / (double)interval_size); /* Draw the vertical grid lines. */ /* Don't draw the first line, as that's where the axis will be. */ x = r.left + x_sep; for (int i = 0; i < this->num_vert_lines; i++) { GfxFillRect(x, r.top, x, r.bottom, grid_colour); x += x_sep; } /* Draw the horizontal grid lines. */ y = r.bottom; for (int i = 0; i < (num_hori_lines + 1); i++) { GfxFillRect(r.left - 3, y, r.left - 1, y, GRAPH_AXIS_LINE_COLOUR); GfxFillRect(r.left, y, r.right, y, grid_colour); y -= y_sep; } /* Draw the y axis. */ GfxFillRect(r.left, r.top, r.left, r.bottom, GRAPH_AXIS_LINE_COLOUR); /* Draw the x axis. */ y = x_axis_offset + r.top; GfxFillRect(r.left, y, r.right, y, GRAPH_AXIS_LINE_COLOUR); /* Find the largest value that will be drawn. */ if (this->num_on_x_axis == 0) return; assert(this->num_on_x_axis > 0); assert(this->num_dataset > 0); /* draw text strings on the y axis */ int64 y_label = interval.highest; int64 y_label_separation = abs(interval.highest - interval.lowest) / num_hori_lines; y = r.top - GetCharacterHeight(FS_SMALL) / 2; for (int i = 0; i < (num_hori_lines + 1); i++) { SetDParam(0, this->format_str_y_axis); SetDParam(1, y_label); DrawString(r.left - label_width - 4, r.left - 4, y, STR_GRAPH_Y_LABEL, graph_axis_label_colour, SA_RIGHT); y_label -= y_label_separation; y += y_sep; } /* draw strings on the x axis */ if (this->month != 0xFF) { x = r.left; y = r.bottom + 2; byte month = this->month; Year year = this->year; for (int i = 0; i < this->num_on_x_axis; i++) { SetDParam(0, month + STR_MONTH_ABBREV_JAN); SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2); SetDParam(2, year); DrawStringMultiLine(x, x + x_sep, y, this->height, month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH, graph_axis_label_colour); month += 3; if (month >= 12) { month = 0; year++; } x += x_sep; } } else { /* Draw the label under the data point rather than on the grid line. */ x = r.left; y = r.bottom + 2; uint16 label = this->x_values_start; for (int i = 0; i < this->num_on_x_axis; i++) { SetDParam(0, label); DrawString(x + 1, x + x_sep - 1, y, STR_GRAPH_Y_LABEL_NUMBER, graph_axis_label_colour, SA_HOR_CENTER); label += this->x_values_increment; x += x_sep; } } /* draw lines and dots */ uint linewidth = _settings_client.gui.graph_line_thickness; uint pointoffs1 = (linewidth + 1) / 2; uint pointoffs2 = linewidth + 1 - pointoffs1; for (int i = 0; i < this->num_dataset; i++) { if (!HasBit(this->excluded_data, i)) { /* Centre the dot between the grid lines. */ x = r.left + (x_sep / 2); byte colour = this->colours[i]; uint prev_x = INVALID_DATAPOINT_POS; uint prev_y = INVALID_DATAPOINT_POS; for (int j = 0; j < this->num_on_x_axis; j++) { OverflowSafeInt64 datapoint = this->cost[i][j]; if (datapoint != INVALID_DATAPOINT) { /* * Check whether we need to reduce the 'accuracy' of the * datapoint value and the highest value to split overflows. * And when 'drawing' 'one million' or 'one million and one' * there is no significant difference, so the least * significant bits can just be removed. * * If there are more bits needed than would fit in a 32 bits * integer, so at about 31 bits because of the sign bit, the * least significant bits are removed. */ int mult_range = FindLastBit(x_axis_offset) + FindLastBit(abs(datapoint)); int reduce_range = max(mult_range - 31, 0); /* Handle negative values differently (don't shift sign) */ if (datapoint < 0) { datapoint = -(abs(datapoint) >> reduce_range); } else { datapoint >>= reduce_range; } y = r.top + x_axis_offset - ((r.bottom - r.top) * datapoint) / (interval_size >> reduce_range); /* Draw the point. */ GfxFillRect(x - pointoffs1, y - pointoffs1, x + pointoffs2, y + pointoffs2, colour); /* Draw the line connected to the previous point. */ if (prev_x != INVALID_DATAPOINT_POS) GfxDrawLine(prev_x, prev_y, x, y, colour, linewidth); prev_x = x; prev_y = y; } else { prev_x = INVALID_DATAPOINT_POS; prev_y = INVALID_DATAPOINT_POS; } x += x_sep; } } } } BaseGraphWindow(int widget, StringID format_str_y_axis) : Window(), format_str_y_axis(format_str_y_axis) { SetWindowDirty(WC_GRAPH_LEGEND, 0); this->num_vert_lines = 24; this->graph_widget = widget; } void InitializeWindow(const WindowDesc *desc, WindowNumber number) { /* Initialise the dataset */ this->UpdateStatistics(true); this->InitNested(desc, number); } public: virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != this->graph_widget) return; uint x_label_width = 0; if (this->month != 0xFF) { byte month = this->month; Year year = this->year; for (int i = 0; i < this->num_on_x_axis; i++) { SetDParam(0, month + STR_MONTH_ABBREV_JAN); SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2); SetDParam(2, year); x_label_width = max(x_label_width, GetStringBoundingBox(month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH).width); month += 3; if (month >= 12) { month = 0; year++; } } } else { /* Draw the label under the data point rather than on the grid line. */ SetDParamMaxValue(0, this->x_values_start + this->num_on_x_axis * this->x_values_increment, 0, FS_SMALL); x_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL_NUMBER).width; } SetDParam(0, this->format_str_y_axis); SetDParam(1, INT64_MAX); uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width; size->width = max(size->width, 5 + y_label_width + this->num_on_x_axis * (x_label_width + 5) + 9); size->height = max(size->height, 5 + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->month != 0xFF ? 3 : 1)) * FONT_HEIGHT_SMALL + 4); size->height = max(size->height, size->width / 3); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != this->graph_widget) return; DrawGraph(r); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) { return INVALID_DATAPOINT; } virtual void OnClick(Point pt, int widget, int click_count) { /* Clicked on legend? */ if (widget == WID_CV_KEY_BUTTON) ShowGraphLegend(); } virtual void OnTick() { this->UpdateStatistics(false); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->UpdateStatistics(true); } /** * Update the statistics. * @param initialize Initialize the data structure. */ void UpdateStatistics(bool initialize) { uint excluded_companies = _legend_excluded_companies; /* Exclude the companies which aren't valid */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (!Company::IsValidID(c)) SetBit(excluded_companies, c); } byte nums = 0; const Company *c; FOR_ALL_COMPANIES(c) { nums = min(this->num_vert_lines, max(nums, c->num_valid_stat_ent)); } int mo = (_cur_month / 3 - nums) * 3; int yr = _cur_year; while (mo < 0) { yr--; mo += 12; } if (!initialize && this->excluded_data == excluded_companies && this->num_on_x_axis == nums && this->year == yr && this->month == mo) { /* There's no reason to get new stats */ return; } this->excluded_data = excluded_companies; this->num_on_x_axis = nums; this->year = yr; this->month = mo; int numd = 0; for (CompanyID k = COMPANY_FIRST; k < MAX_COMPANIES; k++) { c = Company::GetIfValid(k); if (c != NULL) { this->colours[numd] = _colour_gradient[c->colour][6]; for (int j = this->num_on_x_axis, i = 0; --j >= 0;) { this->cost[numd][i] = (j >= c->num_valid_stat_ent) ? INVALID_DATAPOINT : GetGraphData(c, j); i++; } } numd++; } this->num_dataset = numd; } }; /********************/ /* OPERATING PROFIT */ /********************/ struct OperatingProfitGraphWindow : BaseGraphWindow { OperatingProfitGraphWindow(const WindowDesc *desc, WindowNumber window_number) : BaseGraphWindow(WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) { this->InitializeWindow(desc, window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) { return c->old_economy[j].income + c->old_economy[j].expenses; } }; static const NWidgetPart _nested_operating_profit_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_OPERATING_PROFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CV_GRAPH), SetMinimalSize(576, 160), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY, WID_CV_RESIZE), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _operating_profit_desc( WDP_AUTO, 0, 0, WC_OPERATING_PROFIT, WC_NONE, 0, _nested_operating_profit_widgets, lengthof(_nested_operating_profit_widgets) ); void ShowOperatingProfitGraph() { AllocateWindowDescFront(&_operating_profit_desc, 0); } /****************/ /* INCOME GRAPH */ /****************/ struct IncomeGraphWindow : BaseGraphWindow { IncomeGraphWindow(const WindowDesc *desc, WindowNumber window_number) : BaseGraphWindow(WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) { this->InitializeWindow(desc, window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) { return c->old_economy[j].income; } }; static const NWidgetPart _nested_income_graph_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_INCOME_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CV_GRAPH), SetMinimalSize(576, 128), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY, WID_CV_RESIZE), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _income_graph_desc( WDP_AUTO, 0, 0, WC_INCOME_GRAPH, WC_NONE, 0, _nested_income_graph_widgets, lengthof(_nested_income_graph_widgets) ); void ShowIncomeGraph() { AllocateWindowDescFront(&_income_graph_desc, 0); } /*******************/ /* DELIVERED CARGO */ /*******************/ struct DeliveredCargoGraphWindow : BaseGraphWindow { DeliveredCargoGraphWindow(const WindowDesc *desc, WindowNumber window_number) : BaseGraphWindow(WID_CV_GRAPH, STR_JUST_COMMA) { this->InitializeWindow(desc, window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) { return c->old_economy[j].delivered_cargo.GetSum(); } }; static const NWidgetPart _nested_delivered_cargo_graph_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_CARGO_DELIVERED_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CV_GRAPH), SetMinimalSize(576, 128), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY, WID_CV_RESIZE), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _delivered_cargo_graph_desc( WDP_AUTO, 0, 0, WC_DELIVERED_CARGO, WC_NONE, 0, _nested_delivered_cargo_graph_widgets, lengthof(_nested_delivered_cargo_graph_widgets) ); void ShowDeliveredCargoGraph() { AllocateWindowDescFront(&_delivered_cargo_graph_desc, 0); } /***********************/ /* PERFORMANCE HISTORY */ /***********************/ struct PerformanceHistoryGraphWindow : BaseGraphWindow { PerformanceHistoryGraphWindow(const WindowDesc *desc, WindowNumber window_number) : BaseGraphWindow(WID_PHG_GRAPH, STR_JUST_COMMA) { this->InitializeWindow(desc, window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) { return c->old_economy[j].performance_history; } virtual void OnClick(Point pt, int widget, int click_count) { if (widget == WID_PHG_DETAILED_PERFORMANCE) ShowPerformanceRatingDetail(); this->BaseGraphWindow::OnClick(pt, widget, click_count); } }; static const NWidgetPart _nested_performance_history_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_PHG_DETAILED_PERFORMANCE), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_PERFORMANCE_DETAIL_KEY, STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_PHG_KEY), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_PHG_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_PHG_GRAPH), SetMinimalSize(576, 224), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY, WID_PHG_RESIZE), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _performance_history_desc( WDP_AUTO, 0, 0, WC_PERFORMANCE_HISTORY, WC_NONE, 0, _nested_performance_history_widgets, lengthof(_nested_performance_history_widgets) ); void ShowPerformanceHistoryGraph() { AllocateWindowDescFront(&_performance_history_desc, 0); } /*****************/ /* COMPANY VALUE */ /*****************/ struct CompanyValueGraphWindow : BaseGraphWindow { CompanyValueGraphWindow(const WindowDesc *desc, WindowNumber window_number) : BaseGraphWindow(WID_CV_GRAPH, STR_JUST_CURRENCY_SHORT) { this->InitializeWindow(desc, window_number); } virtual OverflowSafeInt64 GetGraphData(const Company *c, int j) { return c->old_economy[j].company_value; } }; static const NWidgetPart _nested_company_value_graph_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_COMPANY_VALUES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CV_BACKGROUND), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CV_GRAPH), SetMinimalSize(576, 224), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY, WID_CV_RESIZE), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _company_value_graph_desc( WDP_AUTO, 0, 0, WC_COMPANY_VALUE, WC_NONE, 0, _nested_company_value_graph_widgets, lengthof(_nested_company_value_graph_widgets) ); void ShowCompanyValueGraph() { AllocateWindowDescFront(&_company_value_graph_desc, 0); } /*****************/ /* PAYMENT RATES */ /*****************/ struct PaymentRatesGraphWindow : BaseGraphWindow { bool first_init; ///< This value is true until the first initialization of the window has finished. PaymentRatesGraphWindow(const WindowDesc *desc, WindowNumber window_number) : BaseGraphWindow(WID_CPR_GRAPH, STR_JUST_CURRENCY_SHORT) { this->first_init = true; this->num_on_x_axis = 20; this->num_vert_lines = 20; this->month = 0xFF; this->x_values_start = 10; this->x_values_increment = 10; /* Initialise the dataset */ this->OnHundredthTick(); this->InitNested(desc, window_number); this->UpdateLoweredWidgets(); } virtual void OnInit() { /* UpdateLoweredWidgets needs to be called after a language or NewGRF change, but it can't be called before * InitNested is done. On the first init these functions are called in the correct order by the constructor. */ if (!this->first_init) { /* Initialise the dataset */ this->OnHundredthTick(); this->UpdateLoweredWidgets(); } this->first_init = false; } void UpdateExcludedData() { this->excluded_data = 0; int i = 0; const CargoSpec *cs; FOR_ALL_SORTED_STANDARD_CARGOSPECS(cs) { if (HasBit(_legend_excluded_cargo, cs->Index())) SetBit(this->excluded_data, i); i++; } } void UpdateLoweredWidgets() { for (int i = 0; i < _sorted_standard_cargo_specs_size; i++) { this->SetWidgetLoweredState(WID_CPR_CARGO_FIRST + i, !HasBit(this->excluded_data, i)); } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget < WID_CPR_CARGO_FIRST) { BaseGraphWindow::UpdateWidgetSize(widget, size, padding, fill, resize); return; } const CargoSpec *cs = _sorted_cargo_specs[widget - WID_CPR_CARGO_FIRST]; SetDParam(0, cs->name); Dimension d = GetStringBoundingBox(STR_GRAPH_CARGO_PAYMENT_CARGO); d.width += 14; // colour field d.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(d, *size); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget < WID_CPR_CARGO_FIRST) { BaseGraphWindow::DrawWidget(r, widget); return; } const CargoSpec *cs = _sorted_cargo_specs[widget - WID_CPR_CARGO_FIRST]; bool rtl = _current_text_dir == TD_RTL; /* Since the buttons have no text, no images, * both the text and the coloured box have to be manually painted. * clk_dif will move one pixel down and one pixel to the right * when the button is clicked */ byte clk_dif = this->IsWidgetLowered(widget) ? 1 : 0; int x = r.left + WD_FRAMERECT_LEFT; int y = r.top; int rect_x = clk_dif + (rtl ? r.right - 12 : r.left + WD_FRAMERECT_LEFT); GfxFillRect(rect_x, y + clk_dif, rect_x + 8, y + 5 + clk_dif, PC_BLACK); GfxFillRect(rect_x + 1, y + 1 + clk_dif, rect_x + 7, y + 4 + clk_dif, cs->legend_colour); SetDParam(0, cs->name); DrawString(rtl ? r.left : x + 14 + clk_dif, (rtl ? r.right - 14 + clk_dif : r.right), y + clk_dif, STR_GRAPH_CARGO_PAYMENT_CARGO); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_CPR_ENABLE_CARGOES: /* Remove all cargoes from the excluded lists. */ _legend_excluded_cargo = 0; this->excluded_data = 0; this->UpdateLoweredWidgets(); this->SetDirty(); break; case WID_CPR_DISABLE_CARGOES: { /* Add all cargoes to the excluded lists. */ int i = 0; const CargoSpec *cs; FOR_ALL_SORTED_STANDARD_CARGOSPECS(cs) { SetBit(_legend_excluded_cargo, cs->Index()); SetBit(this->excluded_data, i); i++; } this->UpdateLoweredWidgets(); this->SetDirty(); break; } default: if (widget >= WID_CPR_CARGO_FIRST) { int i = widget - WID_CPR_CARGO_FIRST; ToggleBit(_legend_excluded_cargo, _sorted_cargo_specs[i]->Index()); this->ToggleWidgetLoweredState(widget); this->UpdateExcludedData(); this->SetDirty(); } break; } } virtual void OnTick() { /* Override default OnTick */ } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->OnHundredthTick(); } virtual void OnHundredthTick() { this->UpdateExcludedData(); int i = 0; const CargoSpec *cs; FOR_ALL_SORTED_STANDARD_CARGOSPECS(cs) { this->colours[i] = cs->legend_colour; for (uint j = 0; j != 20; j++) { this->cost[i][j] = GetTransportedGoodsIncome(10, 20, j * 4 + 4, cs->Index()); } i++; } this->num_dataset = i; } }; /** Construct the row containing the digit keys. */ static NWidgetBase *MakeCargoButtons(int *biggest_index) { NWidgetVertical *ver = new NWidgetVertical; for (int i = 0; i < _sorted_standard_cargo_specs_size; i++) { NWidgetBackground *leaf = new NWidgetBackground(WWT_PANEL, COLOUR_ORANGE, WID_CPR_CARGO_FIRST + i, NULL); leaf->tool_tip = STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO; leaf->SetFill(1, 0); leaf->SetLowered(true); ver->Add(leaf); } *biggest_index = WID_CPR_CARGO_FIRST + _sorted_standard_cargo_specs_size - 1; return ver; } static const NWidgetPart _nested_cargo_payment_rates_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CPR_BACKGROUND), SetMinimalSize(568, 128), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_TEXT, COLOUR_GREY, WID_CPR_HEADER), SetMinimalSize(0, 6), SetPadding(2, 0, 2, 0), SetDataTip(STR_GRAPH_CARGO_PAYMENT_RATES_TITLE, STR_NULL), NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_CPR_GRAPH), SetMinimalSize(495, 0), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetMinimalSize(0, 24), SetFill(0, 0), SetResize(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CPR_ENABLE_CARGOES), SetDataTip(STR_GRAPH_CARGO_ENABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CPR_DISABLE_CARGOES), SetDataTip(STR_GRAPH_CARGO_DISABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL), SetFill(1, 0), NWidget(NWID_SPACER), SetMinimalSize(0, 4), NWidgetFunction(MakeCargoButtons), NWidget(NWID_SPACER), SetMinimalSize(0, 24), SetFill(0, 1), SetResize(0, 1), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(5, 0), SetFill(0, 1), SetResize(0, 1), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetMinimalSize(WD_RESIZEBOX_WIDTH, 0), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_TEXT, COLOUR_GREY, WID_CPR_FOOTER), SetMinimalSize(0, 6), SetPadding(2, 0, 2, 0), SetDataTip(STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL, STR_NULL), NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_RESIZEBOX, COLOUR_GREY, WID_CPR_RESIZE), EndContainer(), EndContainer(), }; static const WindowDesc _cargo_payment_rates_desc( WDP_AUTO, 0, 0, WC_PAYMENT_RATES, WC_NONE, 0, _nested_cargo_payment_rates_widgets, lengthof(_nested_cargo_payment_rates_widgets) ); void ShowCargoPaymentRates() { AllocateWindowDescFront(&_cargo_payment_rates_desc, 0); } /************************/ /* COMPANY LEAGUE TABLE */ /************************/ static const StringID _performance_titles[] = { STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT, STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON, }; static inline StringID GetPerformanceTitleFromValue(uint value) { return _performance_titles[minu(value, 1000) >> 6]; } class CompanyLeagueWindow : public Window { private: GUIList companies; uint ordinal_width; ///< The width of the ordinal number uint text_width; ///< The width of the actual text uint icon_width; ///< The width of the company icon int line_height; ///< Height of the text lines /** * (Re)Build the company league list */ void BuildCompanyList() { if (!this->companies.NeedRebuild()) return; this->companies.Clear(); const Company *c; FOR_ALL_COMPANIES(c) { *this->companies.Append() = c; } this->companies.Compact(); this->companies.RebuildDone(); } /** Sort the company league by performance history */ static int CDECL PerformanceSorter(const Company * const *c1, const Company * const *c2) { return (*c2)->old_economy[0].performance_history - (*c1)->old_economy[0].performance_history; } public: CompanyLeagueWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); this->companies.ForceRebuild(); this->companies.NeedResort(); } virtual void OnPaint() { this->BuildCompanyList(); this->companies.Sort(&PerformanceSorter); this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_CL_BACKGROUND) return; int icon_y_offset = 1 + (FONT_HEIGHT_NORMAL - this->line_height) / 2; uint y = r.top + WD_FRAMERECT_TOP - icon_y_offset; bool rtl = _current_text_dir == TD_RTL; uint ordinal_left = rtl ? r.right - WD_FRAMERECT_LEFT - this->ordinal_width : r.left + WD_FRAMERECT_LEFT; uint ordinal_right = rtl ? r.right - WD_FRAMERECT_LEFT : r.left + WD_FRAMERECT_LEFT + this->ordinal_width; uint icon_left = r.left + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT + (rtl ? this->text_width : this->ordinal_width); uint text_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.right - WD_FRAMERECT_LEFT - this->text_width; uint text_right = rtl ? r.left + WD_FRAMERECT_LEFT + this->text_width : r.right - WD_FRAMERECT_LEFT; for (uint i = 0; i != this->companies.Length(); i++) { const Company *c = this->companies[i]; DrawString(ordinal_left, ordinal_right, y, i + STR_ORDINAL_NUMBER_1ST, i == 0 ? TC_WHITE : TC_YELLOW); DrawCompanyIcon(c->index, icon_left, y + icon_y_offset); SetDParam(0, c->index); SetDParam(1, c->index); SetDParam(2, GetPerformanceTitleFromValue(c->old_economy[0].performance_history)); DrawString(text_left, text_right, y, STR_COMPANY_LEAGUE_COMPANY_NAME); y += this->line_height; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_CL_BACKGROUND) return; this->ordinal_width = 0; for (uint i = 0; i < MAX_COMPANIES; i++) { this->ordinal_width = max(this->ordinal_width, GetStringBoundingBox(STR_ORDINAL_NUMBER_1ST + i).width); } this->ordinal_width += 5; // Keep some extra spacing uint widest_width = 0; uint widest_title = 0; for (uint i = 0; i < lengthof(_performance_titles); i++) { uint width = GetStringBoundingBox(_performance_titles[i]).width; if (width > widest_width) { widest_title = i; widest_width = width; } } Dimension d = GetSpriteSize(SPR_COMPANY_ICON); this->icon_width = d.width + 2; this->line_height = max(d.height + 2, FONT_HEIGHT_NORMAL); const Company *c; FOR_ALL_COMPANIES(c) { SetDParam(0, c->index); SetDParam(1, c->index); SetDParam(2, _performance_titles[widest_title]); widest_width = max(widest_width, GetStringBoundingBox(STR_COMPANY_LEAGUE_COMPANY_NAME).width); } this->text_width = widest_width + 30; // Keep some extra spacing size->width = WD_FRAMERECT_LEFT + this->ordinal_width + WD_FRAMERECT_RIGHT + this->icon_width + WD_FRAMERECT_LEFT + this->text_width + WD_FRAMERECT_RIGHT; size->height = WD_FRAMERECT_TOP + this->line_height * MAX_COMPANIES + WD_FRAMERECT_BOTTOM; } virtual void OnTick() { if (this->companies.NeedResort()) { this->SetDirty(); } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (data == 0) { /* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */ this->companies.ForceRebuild(); } else { this->companies.ForceResort(); } } }; static const NWidgetPart _nested_company_league_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_COMPANY_LEAGUE_TABLE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_CL_BACKGROUND), SetMinimalSize(400, 0), SetMinimalTextLines(15, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), }; static const WindowDesc _company_league_desc( WDP_AUTO, 0, 0, WC_COMPANY_LEAGUE, WC_NONE, 0, _nested_company_league_widgets, lengthof(_nested_company_league_widgets) ); void ShowCompanyLeagueTable() { AllocateWindowDescFront(&_company_league_desc, 0); } /*****************************/ /* PERFORMANCE RATING DETAIL */ /*****************************/ struct PerformanceRatingDetailWindow : Window { static CompanyID company; int timeout; PerformanceRatingDetailWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->UpdateCompanyStats(); this->InitNested(desc, window_number); this->OnInvalidateData(INVALID_COMPANY); } void UpdateCompanyStats() { /* Update all company stats with the current data * (this is because _score_info is not saved to a savegame) */ Company *c; FOR_ALL_COMPANIES(c) { UpdateCompanyRatingAndValue(c, false); } this->timeout = DAY_TICKS * 5; } uint score_info_left; uint score_info_right; uint bar_left; uint bar_right; uint bar_width; uint bar_height; uint score_detail_left; uint score_detail_right; virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_PRD_SCORE_FIRST: this->bar_height = FONT_HEIGHT_NORMAL + 4; size->height = this->bar_height + 2 * WD_MATRIX_TOP; uint score_info_width = 0; for (uint i = SCORE_BEGIN; i < SCORE_END; i++) { score_info_width = max(score_info_width, GetStringBoundingBox(STR_PERFORMANCE_DETAIL_VEHICLES + i).width); } SetDParamMaxValue(0, 1000); score_info_width += GetStringBoundingBox(STR_BLACK_COMMA).width + WD_FRAMERECT_LEFT; SetDParamMaxValue(0, 100); this->bar_width = GetStringBoundingBox(STR_PERFORMANCE_DETAIL_PERCENT).width + 20; // Wide bars! /* At this number we are roughly at the max; it can become wider, * but then you need at 1000 times more money. At that time you're * not that interested anymore in the last few digits anyway. * The 500 is because 999 999 500 to 999 999 999 are rounded to * 1 000 M, and not 999 999 k. Use negative numbers to account for * the negative income/amount of money etc. as well. */ int max = -(999999999 - 500); /* Scale max for the display currency. Prior to rendering the value * is converted into the display currency, which may cause it to * raise significantly. We need to compensate for that since {{CURRCOMPACT}} * is used, which can produce quite short renderings of very large * values. Otherwise the calculated width could be too narrow. * Note that it doesn't work if there was a currency with an exchange * rate greater than max. * When the currency rate is more than 1000, the 999 999 k becomes at * least 999 999 M which roughly is equally long. Furthermore if the * exchange rate is that high, 999 999 k is usually not enough anymore * to show the different currency numbers. */ if (_currency->rate < 1000) max /= _currency->rate; SetDParam(0, max); SetDParam(1, max); uint score_detail_width = GetStringBoundingBox(STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY).width; size->width = 7 + score_info_width + 5 + this->bar_width + 5 + score_detail_width + 7; uint left = 7; uint right = size->width - 7; bool rtl = _current_text_dir == TD_RTL; this->score_info_left = rtl ? right - score_info_width : left; this->score_info_right = rtl ? right : left + score_info_width; this->score_detail_left = rtl ? left : right - score_detail_width; this->score_detail_right = rtl ? left + score_detail_width : right; this->bar_left = left + (rtl ? score_detail_width : score_info_width) + 5; this->bar_right = this->bar_left + this->bar_width; break; } } virtual void DrawWidget(const Rect &r, int widget) const { /* No need to draw when there's nothing to draw */ if (this->company == INVALID_COMPANY) return; if (IsInsideMM(widget, WID_PRD_COMPANY_FIRST, WID_PRD_COMPANY_LAST + 1)) { if (this->IsWidgetDisabled(widget)) return; CompanyID cid = (CompanyID)(widget - WID_PRD_COMPANY_FIRST); int offset = (cid == this->company) ? 1 : 0; Dimension sprite_size = GetSpriteSize(SPR_COMPANY_ICON); DrawCompanyIcon(cid, (r.left + r.right - sprite_size.width) / 2 + offset, (r.top + r.bottom - sprite_size.height) / 2 + offset); return; } if (!IsInsideMM(widget, WID_PRD_SCORE_FIRST, WID_PRD_SCORE_LAST + 1)) return; ScoreID score_type = (ScoreID)(widget - WID_PRD_SCORE_FIRST); /* The colours used to show how the progress is going */ int colour_done = _colour_gradient[COLOUR_GREEN][4]; int colour_notdone = _colour_gradient[COLOUR_RED][4]; /* Draw all the score parts */ int val = _score_part[company][score_type]; int needed = _score_info[score_type].needed; int score = _score_info[score_type].score; /* SCORE_TOTAL has his own rules ;) */ if (score_type == SCORE_TOTAL) { for (ScoreID i = SCORE_BEGIN; i < SCORE_END; i++) score += _score_info[i].score; needed = SCORE_MAX; } uint bar_top = r.top + WD_MATRIX_TOP; uint text_top = bar_top + 2; DrawString(this->score_info_left, this->score_info_right, text_top, STR_PERFORMANCE_DETAIL_VEHICLES + score_type); /* Draw the score */ SetDParam(0, score); DrawString(this->score_info_left, this->score_info_right, text_top, STR_BLACK_COMMA, TC_FROMSTRING, SA_RIGHT); /* Calculate the %-bar */ uint x = Clamp(val, 0, needed) * this->bar_width / needed; bool rtl = _current_text_dir == TD_RTL; if (rtl) { x = this->bar_right - x; } else { x = this->bar_left + x; } /* Draw the bar */ if (x != this->bar_left) GfxFillRect(this->bar_left, bar_top, x, bar_top + this->bar_height, rtl ? colour_notdone : colour_done); if (x != this->bar_right) GfxFillRect(x, bar_top, this->bar_right, bar_top + this->bar_height, rtl ? colour_done : colour_notdone); /* Draw it */ SetDParam(0, Clamp(val, 0, needed) * 100 / needed); DrawString(this->bar_left, this->bar_right, text_top, STR_PERFORMANCE_DETAIL_PERCENT, TC_FROMSTRING, SA_HOR_CENTER); /* SCORE_LOAN is inversed */ if (score_type == SCORE_LOAN) val = needed - val; /* Draw the amount we have against what is needed * For some of them it is in currency format */ SetDParam(0, val); SetDParam(1, needed); switch (score_type) { case SCORE_MIN_PROFIT: case SCORE_MIN_INCOME: case SCORE_MAX_INCOME: case SCORE_MONEY: case SCORE_LOAN: DrawString(this->score_detail_left, this->score_detail_right, text_top, STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY); break; default: DrawString(this->score_detail_left, this->score_detail_right, text_top, STR_PERFORMANCE_DETAIL_AMOUNT_INT); } } virtual void OnClick(Point pt, int widget, int click_count) { /* Check which button is clicked */ if (IsInsideMM(widget, WID_PRD_COMPANY_FIRST, WID_PRD_COMPANY_LAST + 1)) { /* Is it no on disable? */ if (!this->IsWidgetDisabled(widget)) { this->RaiseWidget(this->company + WID_PRD_COMPANY_FIRST); this->company = (CompanyID)(widget - WID_PRD_COMPANY_FIRST); this->LowerWidget(this->company + WID_PRD_COMPANY_FIRST); this->SetDirty(); } } } virtual void OnTick() { if (_pause_mode != PM_UNPAUSED) return; /* Update the company score every 5 days */ if (--this->timeout == 0) { this->UpdateCompanyStats(); this->SetDirty(); } } /** * Some data on this window has become invalid. * @param data the company ID of the company that is going to be removed * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; /* Disable the companies who are not active */ for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { this->SetWidgetDisabledState(i + WID_PRD_COMPANY_FIRST, !Company::IsValidID(i)); } /* Check if the currently selected company is still active. */ if (this->company != INVALID_COMPANY && !Company::IsValidID(this->company)) { /* Raise the widget for the previous selection. */ this->RaiseWidget(this->company + WID_PRD_COMPANY_FIRST); this->company = INVALID_COMPANY; } if (this->company == INVALID_COMPANY) { const Company *c; FOR_ALL_COMPANIES(c) { this->company = c->index; break; } } /* Make sure the widget is lowered */ this->LowerWidget(this->company + WID_PRD_COMPANY_FIRST); } }; CompanyID PerformanceRatingDetailWindow::company = INVALID_COMPANY; /** * Make a vertical list of panels for outputting score details. * @param biggest_index Storage for collecting the biggest index used in the returned tree. * @return Panel with performance details. * @post \c *biggest_index contains the largest used index in the tree. */ static NWidgetBase *MakePerformanceDetailPanels(int *biggest_index) { const StringID performance_tips[] = { STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP, STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP, STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP, STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP, STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP, STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP, STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP, STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP, STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP, STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP, }; assert_compile(lengthof(performance_tips) == SCORE_END - SCORE_BEGIN); NWidgetVertical *vert = new NWidgetVertical(NC_EQUALSIZE); for (int widnum = WID_PRD_SCORE_FIRST; widnum <= WID_PRD_SCORE_LAST; widnum++) { NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, widnum); panel->SetFill(1, 1); panel->SetDataTip(0x0, performance_tips[widnum - WID_PRD_SCORE_FIRST]); vert->Add(panel); } *biggest_index = WID_PRD_SCORE_LAST; return vert; } /** Make a number of rows with buttons for each company for the performance rating detail window. */ NWidgetBase *MakeCompanyButtonRowsGraphGUI(int *biggest_index) { return MakeCompanyButtonRows(biggest_index, WID_PRD_COMPANY_FIRST, WID_PRD_COMPANY_LAST, 8, STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP); } static const NWidgetPart _nested_performance_rating_detail_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_PERFORMANCE_DETAIL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidgetFunction(MakeCompanyButtonRowsGraphGUI), SetPadding(0, 1, 1, 2), EndContainer(), NWidgetFunction(MakePerformanceDetailPanels), }; static const WindowDesc _performance_rating_detail_desc( WDP_AUTO, 0, 0, WC_PERFORMANCE_DETAIL, WC_NONE, 0, _nested_performance_rating_detail_widgets, lengthof(_nested_performance_rating_detail_widgets) ); void ShowPerformanceRatingDetail() { AllocateWindowDescFront(&_performance_rating_detail_desc, 0); } openttd-1.3.3/src/newgrf_townname.h0000644000000000000000000000327512246102611016033 0ustar rootroot/* $Id: newgrf_townname.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file newgrf_townname.h * Header of Action 0F "universal holder" structure and functions */ #ifndef NEWGRF_TOWNNAME_H #define NEWGRF_TOWNNAME_H #include "strings_type.h" struct NamePart { byte prob; ///< The relative probability of the following name to appear in the bottom 7 bits. union { char *text; ///< If probability bit 7 is clear byte id; ///< If probability bit 7 is set } data; }; struct NamePartList { byte partcount; byte bitstart; byte bitcount; uint16 maxprob; NamePart *parts; }; struct GRFTownName { uint32 grfid; byte nb_gen; byte id[128]; StringID name[128]; byte nbparts[128]; NamePartList *partlist[128]; GRFTownName *next; }; GRFTownName *AddGRFTownName(uint32 grfid); GRFTownName *GetGRFTownName(uint32 grfid); void DelGRFTownName(uint32 grfid); void CleanUpGRFTownNames(); StringID *GetGRFTownNameList(); char *GRFTownNameGenerate(char *buf, uint32 grfid, uint16 gen, uint32 seed, const char *last); uint32 GetGRFTownNameId(int gen); uint16 GetGRFTownNameType(int gen); #endif /* NEWGRF_TOWNNAME_H */ openttd-1.3.3/src/engine_func.h0000644000000000000000000000243312246102610015105 0ustar rootroot/* $Id: engine_func.h 25560 2013-07-04 21:20:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file engine_func.h Functions related to engines. */ #ifndef ENGINE_FUNC_H #define ENGINE_FUNC_H #include "engine_type.h" #include "vehicle_type.h" #include "company_type.h" void SetupEngines(); void StartupEngines(); void CheckEngines(); /* Original engine data counts and offsets */ extern const uint8 _engine_counts[4]; extern const uint8 _engine_offsets[4]; bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company); bool IsEngineRefittable(EngineID engine); void SetYearEngineAgingStops(); void StartupOneEngine(Engine *e, Date aging_date); uint GetTotalCapacityOfArticulatedParts(EngineID engine); #endif /* ENGINE_FUNC_H */ openttd-1.3.3/src/currency.cpp0000644000000000000000000002065012246102611015014 0ustar rootroot/* $Id: currency.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file currency.cpp Support for different currencies. */ #include "stdafx.h" #include "currency.h" #include "news_func.h" #include "settings_type.h" #include "date_func.h" #include "string_type.h" #include "table/strings.h" /* exchange rate prefix symbol_pos * | separator | postfix | * | | Euro year | | | name * | | | | | | | */ /** The original currency specifications. */ static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = { { 1, "", CF_NOEURO, "\xC2\xA3", "", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound { 2, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar { 2, "", CF_ISEURO, "\xE2\x82\xAC", "", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro { 220, "", CF_NOEURO, "\xC2\xA5", "", 0, STR_GAME_OPTIONS_CURRENCY_JPY }, ///< japanese yen { 27, "", 2002, "", NBSP "S.", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling { 81, "", 2002, "BEF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc { 2, "", CF_NOEURO, "CHF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc { 41, "", CF_NOEURO, "", NBSP "K\xC4\x8D", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna { 4, "", 2002, "DM" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark { 11, "", CF_NOEURO, "", NBSP "kr", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone { 333, "", 2002, "Pts" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish peseta { 12, "", 2002, "", NBSP "mk", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka { 13, "", 2002, "FF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french franc { 681, "", 2002, "", "Dr.", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma { 378, "", CF_NOEURO, "", NBSP "Ft", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint { 130, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona { 3873, "", 2002, "", NBSP "L.", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira { 4, "", 2002, "NLG" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden { 12, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone { 6, "", CF_NOEURO, "", NBSP "z\xC5\x82", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty { 5, "", CF_NOEURO, "", NBSP "Lei", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian leu { 50, "", CF_NOEURO, "", NBSP "p", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble { 479, "", 2007, "", NBSP "SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar { 13, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona { 3, "", CF_NOEURO, "", NBSP "TL", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira { 60, "", 2009, "", NBSP "Sk", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna { 4, "", CF_NOEURO, "R$" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real { 31, "", 2011, "", NBSP "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni { 4, "", 2014, "", NBSP "Lt", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas { 1850, "", CF_NOEURO, "\xE2\x82\xA9", "", 0, STR_GAME_OPTIONS_CURRENCY_KRW }, ///< south korean won { 13, "", CF_NOEURO, "R" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ZAR }, ///< south african rand { 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency }; /** Array of currencies used by the system */ CurrencySpec _currency_specs[NUM_CURRENCY]; /** * These enums are only declared in order to make sense * out of the TTDPatch_To_OTTDIndex array that will follow * Every currency used by Ottd is there, just in case TTDPatch will * add those missing in its code */ enum Currencies { CURR_GBP, CURR_USD, CURR_EUR, CURR_JPY, CURR_ATS, CURR_BEF, CURR_CHF, CURR_CZK, CURR_DEM, CURR_DKK, CURR_ESP, CURR_FIM, CURR_FRF, CURR_GRD, CURR_HUF, CURR_ISK, CURR_ITL, CURR_NLG, CURR_NOK, CURR_PLN, CURR_RON, CURR_RUR, CURR_SIT, CURR_SEK, CURR_YTL, CURR_SKK, CURR_BRL, CURR_EEK, CURR_LTL, }; /** * This array represent the position of OpenTTD's currencies, * compared to TTDPatch's ones. * When a grf sends currencies, they are based on the order defined by TTDPatch. * So, we must reindex them to our own order. */ const byte TTDPatch_To_OTTDIndex[] = { CURR_GBP, CURR_USD, CURR_FRF, CURR_DEM, CURR_JPY, CURR_ESP, CURR_HUF, CURR_PLN, CURR_ATS, CURR_BEF, CURR_DKK, CURR_FIM, CURR_GRD, CURR_CHF, CURR_NLG, CURR_ITL, CURR_SEK, CURR_RUR, CURR_EUR, }; /** * Will return the ottd's index correspondence to * the ttdpatch's id. If the id is bigger than the array, * it is a grf written for ottd, thus returning the same id. * Only called from newgrf.cpp * @param grfcurr_id currency id coming from newgrf * @return the corrected index */ byte GetNewgrfCurrencyIdConverted(byte grfcurr_id) { return (grfcurr_id >= lengthof(TTDPatch_To_OTTDIndex)) ? grfcurr_id : TTDPatch_To_OTTDIndex[grfcurr_id]; } /** * get a mask of the allowed currencies depending on the year * @return mask of currencies */ uint GetMaskOfAllowedCurrencies() { uint mask = 0; uint i; for (i = 0; i < NUM_CURRENCY; i++) { Year to_euro = _currency_specs[i].to_euro; if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= to_euro) continue; if (to_euro == CF_ISEURO && _cur_year < 2000) continue; mask |= (1 << i); } mask |= (1 << CUSTOM_CURRENCY_ID); // always allow custom currency return mask; } /** * Verify if the currency chosen by the user is about to be converted to Euro */ void CheckSwitchToEuro() { if (_currency_specs[_settings_game.locale.currency].to_euro != CF_NOEURO && _currency_specs[_settings_game.locale.currency].to_euro != CF_ISEURO && _cur_year >= _currency_specs[_settings_game.locale.currency].to_euro) { _settings_game.locale.currency = 2; // this is the index of euro above. AddNewsItem(STR_NEWS_EURO_INTRODUCTION, NT_ECONOMY, NF_NORMAL); } } /** * Will fill _currency_specs array with * default values from origin_currency_specs * Called only from newgrf.cpp and settings.cpp. * @param preserve_custom will not reset custom currency (the latest one on the list) * if ever it is flagged to true. In which case, the total size of the memory to move * will be one currency spec less, thus preserving the custom currency from been * overwritten. */ void ResetCurrencies(bool preserve_custom) { memcpy(&_currency_specs, &origin_currency_specs, sizeof(origin_currency_specs) - (preserve_custom ? sizeof(_custom_currency) : 0)); } /** * Build a list of currency names StringIDs to use in a dropdown list * @return Pointer to a (static) array of StringIDs */ StringID *BuildCurrencyDropdown() { /* Allow room for all currencies, plus a terminator entry */ static StringID names[NUM_CURRENCY + 1]; uint i; /* Add each name */ for (i = 0; i < NUM_CURRENCY; i++) { names[i] = _currency_specs[i].name; } /* Terminate the list */ names[i] = INVALID_STRING_ID; return names; } openttd-1.3.3/src/newgrf_debug_gui.cpp0000644000000000000000000007337612246102610016500 0ustar rootroot/* $Id: newgrf_debug_gui.cpp 25989 2013-11-13 21:58:36Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_debug_gui.cpp GUIs for debugging NewGRFs. */ #include "stdafx.h" #include #include "window_gui.h" #include "window_func.h" #include "fileio_func.h" #include "spritecache.h" #include "string_func.h" #include "strings_func.h" #include "textbuf_gui.h" #include "engine_base.h" #include "industry.h" #include "object_base.h" #include "station_base.h" #include "town.h" #include "vehicle_base.h" #include "newgrf_airporttiles.h" #include "newgrf_debug.h" #include "newgrf_object.h" #include "newgrf_spritegroup.h" #include "newgrf_station.h" #include "newgrf_town.h" #include "newgrf_railtype.h" #include "newgrf_industries.h" #include "newgrf_industrytiles.h" #include "widgets/newgrf_debug_widget.h" #include "table/strings.h" /** The sprite picker. */ NewGrfDebugSpritePicker _newgrf_debug_sprite_picker = { SPM_NONE, NULL, 0, SmallVector() }; /** * Get the feature index related to the window number. * @param window_number The window to get the feature index from. * @return the feature index */ static inline uint GetFeatureIndex(uint window_number) { return GB(window_number, 0, 24); } /** * Get the window number for the inspect window given a * feature and index. * @param feature The feature we want to inspect. * @param index The index/identifier of the feature to inspect. * @return the InspectWindow (Window)Number */ static inline uint GetInspectWindowNumber(GrfSpecFeature feature, uint index) { assert((index >> 24) == 0); return (feature << 24) | index; } /** * The type of a property to show. This is used to * provide an appropriate representation in the GUI. */ enum NIType { NIT_INT, ///< The property is a simple integer NIT_CARGO, ///< The property is a cargo }; /** Representation of the data from a NewGRF property. */ struct NIProperty { const char *name; ///< A (human readable) name for the property ptrdiff_t offset; ///< Offset of the variable in the class byte read_size; ///< Number of bytes (i.e. byte, word, dword etc) byte prop; ///< The number of the property byte type; }; /** * Representation of the available callbacks with * information on when they actually apply. */ struct NICallback { const char *name; ///< The human readable name of the callback ptrdiff_t offset; ///< Offset of the variable in the class byte read_size; ///< The number of bytes (i.e. byte, word, dword etc) to read byte cb_bit; ///< The bit that needs to be set for this callback to be enabled uint16 cb_id; ///< The number of the callback }; /** Mask to show no bit needs to be enabled for the callback. */ static const int CBM_NO_BIT = UINT8_MAX; /** Representation on the NewGRF variables. */ struct NIVariable { const char *name; byte var; }; /** Helper class to wrap some functionality/queries in. */ class NIHelper { public: /** Silence a warning. */ virtual ~NIHelper() {} /** * Is the item with the given index inspectable? * @param index the index to check. * @return true iff the index is inspectable. */ virtual bool IsInspectable(uint index) const = 0; /** * Get the parent "window_number" of a given instance. * @param index the instance to get the parent for. * @return the parent's window_number or UINT32_MAX if there is none. */ virtual uint GetParent(uint index) const = 0; /** * Get the instance given an index. * @param index the index to get the instance for. * @return the instance. */ virtual const void *GetInstance(uint index) const = 0; /** * Get (NewGRF) specs given an index. * @param index the index to get the specs for for. * @return the specs. */ virtual const void *GetSpec(uint index) const = 0; /** * Set the string parameters to write the right data for a STRINGn. * @param index the index to get the string parameters for. */ virtual void SetStringParameters(uint index) const = 0; /** * Get the GRFID of the file that includes this item. * @param index index to check. * @return GRFID of the item. 0 means that the item is not inspectable. */ virtual uint32 GetGRFID(uint index) const = 0; /** * Resolve (action2) variable for a given index. * @param index The (instance) index to resolve the variable for. * @param var The variable to actually resolve. * @param param The varaction2 0x60+x parameter to pass. * @param avail Return whether the variable is available. * @return The resolved variable's value. */ virtual uint Resolve(uint index, uint var, uint param, bool *avail) const = 0; /** * Used to decide if the PSA needs a parameter or not. * @return True iff this item has a PSA that requires a parameter. */ virtual bool PSAWithParameter() const { return false; } /** * Allows to know the size of the persistent storage. * @param index Index of the item. * @param grfid Parameter for the PSA. Only required for items with parameters. * @return Size of the persistent storage in indices. */ virtual uint GetPSASize(uint index, uint32 grfid) const { return 0; } /** * Gets the first position of the array containing the persistent storage. * @param index Index of the item. * @param grfid Parameter for the PSA. Only required for items with parameters. * @return Pointer to the first position of the storage array or NULL if not present. */ virtual const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const { return NULL; } protected: /** * Helper to make setting the strings easier. * @param string the string to actually draw. * @param index the (instance) index for the string. */ void SetSimpleStringParameters(StringID string, uint32 index) const { SetDParam(0, string); SetDParam(1, index); } /** * Helper to make setting the strings easier for objects at a specific tile. * @param string the string to draw the object's name * @param index the (instance) index for the string. * @param tile the tile the object is at */ void SetObjectAtStringParameters(StringID string, uint32 index, TileIndex tile) const { SetDParam(0, STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT); SetDParam(1, string); SetDParam(2, index); SetDParam(3, tile); } }; /** Container for all information for a given feature. */ struct NIFeature { const NIProperty *properties; ///< The properties associated with this feature. const NICallback *callbacks; ///< The callbacks associated with this feature. const NIVariable *variables; ///< The variables associated with this feature. const NIHelper *helper; ///< The class container all helper functions. }; /* Load all the NewGRF debug data; externalised as it is just a huge bunch of tables. */ #include "table/newgrf_debug_data.h" /** * Get the feature number related to the window number. * @param window_number The window to get the feature number for. * @return The feature number. */ static inline GrfSpecFeature GetFeatureNum(uint window_number) { return (GrfSpecFeature)GB(window_number, 24, 8); } /** * Get the NIFeature related to the window number. * @param window_number The window to get the NIFeature for. * @return the NIFeature, or NULL is there isn't one. */ static inline const NIFeature *GetFeature(uint window_number) { GrfSpecFeature idx = GetFeatureNum(window_number); return idx < GSF_FAKE_END ? _nifeatures[idx] : NULL; } /** * Get the NIHelper related to the window number. * @param window_number The window to get the NIHelper for. * @pre GetFeature(window_number) != NULL * @return the NIHelper */ static inline const NIHelper *GetFeatureHelper(uint window_number) { return GetFeature(window_number)->helper; } /** Window used for inspecting NewGRFs. */ struct NewGRFInspectWindow : Window { static const int LEFT_OFFSET = 5; ///< Position of left edge static const int RIGHT_OFFSET = 5; ///< Position of right edge static const int TOP_OFFSET = 5; ///< Position of top edge static const int BOTTOM_OFFSET = 5; ///< Position of bottom edge /** The value for the variable 60 parameters. */ static uint32 var60params[GSF_FAKE_END][0x20]; /** GRFID of the caller of this window, 0 if it has no caller. */ uint32 caller_grfid; /** The currently edited parameter, to update the right one. */ byte current_edit_param; Scrollbar *vscroll; /** * Check whether the given variable has a parameter. * @param variable the variable to check. * @return true iff the variable has a parameter. */ static bool HasVariableParameter(uint variable) { return IsInsideBS(variable, 0x60, 0x20); } /** * Set the GRFID of the item opening this window. * @param grfid GRFID of the item opening this window, or 0 if not opened by other window. */ void SetCallerGRFID(uint32 grfid) { this->caller_grfid = grfid; this->SetDirty(); } NewGRFInspectWindow(const WindowDesc *desc, WindowNumber wno) : Window() { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_NGRFI_SCROLLBAR); this->FinishInitNested(desc, wno); this->vscroll->SetCount(0); this->SetWidgetDisabledState(WID_NGRFI_PARENT, GetFeatureHelper(this->window_number)->GetParent(GetFeatureIndex(this->window_number)) == UINT32_MAX); } virtual void SetStringParameters(int widget) const { if (widget != WID_NGRFI_CAPTION) return; GetFeatureHelper(this->window_number)->SetStringParameters(GetFeatureIndex(this->window_number)); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_NGRFI_MAINPANEL) return; resize->height = max(11, FONT_HEIGHT_NORMAL + 1); resize->width = 1; size->height = 5 * resize->height + TOP_OFFSET + BOTTOM_OFFSET; } /** * Helper function to draw a string (line) in the window. * @param r The (screen) rectangle we must draw within * @param offset The offset (in lines) we want to draw for * @param format The format string */ void WARN_FORMAT(4, 5) DrawString(const Rect &r, int offset, const char *format, ...) const { char buf[1024]; va_list va; va_start(va, format); vsnprintf(buf, lengthof(buf), format, va); va_end(va); offset -= this->vscroll->GetPosition(); if (offset < 0 || offset >= this->vscroll->GetCapacity()) return; ::DrawString(r.left + LEFT_OFFSET, r.right - RIGHT_OFFSET, r.top + TOP_OFFSET + (offset * this->resize.step_height), buf, TC_BLACK); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_NGRFI_MAINPANEL) return; uint index = GetFeatureIndex(this->window_number); const NIFeature *nif = GetFeature(this->window_number); const NIHelper *nih = nif->helper; const void *base = nih->GetInstance(index); const void *base_spec = nih->GetSpec(index); uint i = 0; if (nif->variables != NULL) { this->DrawString(r, i++, "Variables:"); for (const NIVariable *niv = nif->variables; niv->name != NULL; niv++) { bool avail = true; uint param = HasVariableParameter(niv->var) ? NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][niv->var - 0x60] : 0; uint value = nih->Resolve(index, niv->var, param, &avail); if (!avail) continue; if (HasVariableParameter(niv->var)) { this->DrawString(r, i++, " %02x[%02x]: %08x (%s)", niv->var, param, value, niv->name); } else { this->DrawString(r, i++, " %02x: %08x (%s)", niv->var, value, niv->name); } } } uint psa_size = nih->GetPSASize(index, this->caller_grfid); const int32 *psa = nih->GetPSAFirstPosition(index, this->caller_grfid); if (psa_size != 0 && psa != NULL) { if (nih->PSAWithParameter()) { this->DrawString(r, i++, "Persistent storage [%08X]:", BSWAP32(this->caller_grfid)); } else { this->DrawString(r, i++, "Persistent storage:"); } assert(psa_size % 4 == 0); for (uint j = 0; j < psa_size; j += 4, psa += 4) { this->DrawString(r, i++, " %i: %i %i %i %i", j, psa[0], psa[1], psa[2], psa[3]); } } if (nif->properties != NULL) { this->DrawString(r, i++, "Properties:"); for (const NIProperty *nip = nif->properties; nip->name != NULL; nip++) { const void *ptr = (const byte *)base + nip->offset; uint value; switch (nip->read_size) { case 1: value = *(const uint8 *)ptr; break; case 2: value = *(const uint16 *)ptr; break; case 4: value = *(const uint32 *)ptr; break; default: NOT_REACHED(); } StringID string; SetDParam(0, value); switch (nip->type) { case NIT_INT: string = STR_JUST_INT; break; case NIT_CARGO: string = value != INVALID_CARGO ? CargoSpec::Get(value)->name : STR_QUANTITY_N_A; break; default: NOT_REACHED(); } char buffer[64]; GetString(buffer, string, lastof(buffer)); this->DrawString(r, i++, " %02x: %s (%s)", nip->prop, buffer, nip->name); } } if (nif->callbacks != NULL) { this->DrawString(r, i++, "Callbacks:"); for (const NICallback *nic = nif->callbacks; nic->name != NULL; nic++) { if (nic->cb_bit != CBM_NO_BIT) { const void *ptr = (const byte *)base_spec + nic->offset; uint value; switch (nic->read_size) { case 1: value = *(const uint8 *)ptr; break; case 2: value = *(const uint16 *)ptr; break; case 4: value = *(const uint32 *)ptr; break; default: NOT_REACHED(); } if (!HasBit(value, nic->cb_bit)) continue; this->DrawString(r, i++, " %03x: %s", nic->cb_id, nic->name); } else { this->DrawString(r, i++, " %03x: %s (unmasked)", nic->cb_id, nic->name); } } } /* Not nice and certainly a hack, but it beats duplicating * this whole function just to count the actual number of * elements. Especially because they need to be redrawn. */ const_cast(this)->vscroll->SetCount(i); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_NGRFI_PARENT: { const NIHelper *nih = GetFeatureHelper(this->window_number); uint index = nih->GetParent(GetFeatureIndex(this->window_number)); ::ShowNewGRFInspectWindow((GrfSpecFeature)GB(index, 24, 8), GetFeatureIndex(index), nih->GetGRFID(GetFeatureIndex(this->window_number))); break; } case WID_NGRFI_MAINPANEL: { /* Does this feature have variables? */ const NIFeature *nif = GetFeature(this->window_number); if (nif->variables == NULL) return; /* Get the line, make sure it's within the boundaries. */ int line = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_NGRFI_MAINPANEL, TOP_OFFSET); if (line == INT_MAX) return; /* Find the variable related to the line */ for (const NIVariable *niv = nif->variables; niv->name != NULL; niv++, line--) { if (line != 1) continue; // 1 because of the "Variables:" line if (!HasVariableParameter(niv->var)) break; this->current_edit_param = niv->var; ShowQueryString(STR_EMPTY, STR_NEWGRF_INSPECT_QUERY_CAPTION, 9, this, CS_HEXADECIMAL, QSF_NONE); } } } } virtual void OnQueryTextFinished(char *str) { if (StrEmpty(str)) return; NewGRFInspectWindow::var60params[GetFeatureNum(this->window_number)][this->current_edit_param - 0x60] = strtol(str, NULL, 16); this->SetDirty(); } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_NGRFI_MAINPANEL, TOP_OFFSET + BOTTOM_OFFSET); } }; /* static */ uint32 NewGRFInspectWindow::var60params[GSF_FAKE_END][0x20] = { {0} }; // Use spec to have 0s in whole array static const NWidgetPart _nested_newgrf_inspect_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_NGRFI_CAPTION), SetDataTip(STR_NEWGRF_INSPECT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NGRFI_PARENT), SetDataTip(STR_NEWGRF_INSPECT_PARENT_BUTTON, STR_NEWGRF_INSPECT_PARENT_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_NGRFI_MAINPANEL), SetMinimalSize(300, 0), SetScrollbar(WID_NGRFI_SCROLLBAR), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_NGRFI_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), }; static const WindowDesc _newgrf_inspect_desc( WDP_AUTO, 400, 300, WC_NEWGRF_INSPECT, WC_NONE, 0, _nested_newgrf_inspect_widgets, lengthof(_nested_newgrf_inspect_widgets) ); /** * Show the inspect window for a given feature and index. * The index is normally an in-game location/identifier, such * as a TileIndex or an IndustryID depending on the feature * we want to inspect. * @param feature The feature we want to inspect. * @param index The index/identifier of the feature to inspect. * @param grfid GRFID of the item opening this window, or 0 if not opened by other window. */ void ShowNewGRFInspectWindow(GrfSpecFeature feature, uint index, const uint32 grfid) { if (!IsNewGRFInspectable(feature, index)) return; WindowNumber wno = GetInspectWindowNumber(feature, index); NewGRFInspectWindow *w = AllocateWindowDescFront(&_newgrf_inspect_desc, wno); if (w == NULL) w = (NewGRFInspectWindow *)FindWindowById(WC_NEWGRF_INSPECT, wno); w->SetCallerGRFID(grfid); } /** * Delete inspect window for a given feature and index. * The index is normally an in-game location/identifier, such * as a TileIndex or an IndustryID depending on the feature * we want to inspect. * @param feature The feature we want to delete the window for. * @param index The index/identifier of the feature to delete. */ void DeleteNewGRFInspectWindow(GrfSpecFeature feature, uint index) { if (feature == GSF_INVALID) return; WindowNumber wno = GetInspectWindowNumber(feature, index); DeleteWindowById(WC_NEWGRF_INSPECT, wno); /* Reinitialise the land information window to remove the "debug" sprite if needed. * Note: Since we might be called from a command here, it is important to not execute * the invalidation immediately. The landinfo window tests commands itself. */ InvalidateWindowData(WC_LAND_INFO, 0, 1); } /** * Can we inspect the data given a certain feature and index. * The index is normally an in-game location/identifier, such * as a TileIndex or an IndustryID depending on the feature * we want to inspect. * @param feature The feature we want to inspect. * @param index The index/identifier of the feature to inspect. * @return true if there is something to show. */ bool IsNewGRFInspectable(GrfSpecFeature feature, uint index) { const NIFeature *nif = GetFeature(GetInspectWindowNumber(feature, index)); if (nif == NULL) return false; return nif->helper->IsInspectable(index); } /** * Get the GrfSpecFeature associated with the tile. * @param tile The tile to get the feature from. * @return the GrfSpecFeature. */ GrfSpecFeature GetGrfSpecFeature(TileIndex tile) { switch (GetTileType(tile)) { default: return GSF_INVALID; case MP_RAILWAY: return GSF_RAILTYPES; case MP_ROAD: return IsLevelCrossing(tile) ? GSF_RAILTYPES : GSF_INVALID; case MP_HOUSE: return GSF_HOUSES; case MP_INDUSTRY: return GSF_INDUSTRYTILES; case MP_OBJECT: return GSF_OBJECTS; case MP_STATION: switch (GetStationType(tile)) { case STATION_RAIL: return GSF_STATIONS; case STATION_AIRPORT: return GSF_AIRPORTTILES; default: return GSF_INVALID; } } } /** * Get the GrfSpecFeature associated with the vehicle. * @param type The vehicle type to get the feature from. * @return the GrfSpecFeature. */ GrfSpecFeature GetGrfSpecFeature(VehicleType type) { switch (type) { case VEH_TRAIN: return GSF_TRAINS; case VEH_ROAD: return GSF_ROADVEHICLES; case VEH_SHIP: return GSF_SHIPS; case VEH_AIRCRAFT: return GSF_AIRCRAFT; default: return GSF_INVALID; } } /**** Sprite Aligner ****/ /** Window used for aligning sprites. */ struct SpriteAlignerWindow : Window { SpriteID current_sprite; ///< The currently shown sprite Scrollbar *vscroll; SpriteAlignerWindow(const WindowDesc *desc, WindowNumber wno) : Window() { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_SA_SCROLLBAR); this->FinishInitNested(desc, wno); /* Oh yes, we assume there is at least one normal sprite! */ while (GetSpriteType(this->current_sprite) != ST_NORMAL) this->current_sprite++; } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_SA_CAPTION: SetDParam(0, this->current_sprite); SetDParamStr(1, FioGetFilename(GetOriginFileSlot(this->current_sprite))); break; case WID_SA_OFFSETS: { const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); SetDParam(0, spr->x_offs / ZOOM_LVL_BASE); SetDParam(1, spr->y_offs / ZOOM_LVL_BASE); break; } default: break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_SA_LIST) return; resize->height = max(11, FONT_HEIGHT_NORMAL + 1); resize->width = 1; /* Resize to about 200 pixels (for the preview) */ size->height = (1 + 200 / resize->height) * resize->height; } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_SA_SPRITE: { /* Center the sprite ourselves */ const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); int width = r.right - r.left + 1; int height = r.bottom - r.top + 1; int x = r.left - spr->x_offs / ZOOM_LVL_BASE + (width - spr->width / ZOOM_LVL_BASE) / 2; int y = r.top - spr->y_offs / ZOOM_LVL_BASE + (height - spr->height / ZOOM_LVL_BASE) / 2; /* And draw only the part within the sprite area */ SubSprite subspr = { spr->x_offs + (spr->width - width * ZOOM_LVL_BASE) / 2 + 1, spr->y_offs + (spr->height - height * ZOOM_LVL_BASE) / 2 + 1, spr->x_offs + (spr->width + width * ZOOM_LVL_BASE) / 2 - 1, spr->y_offs + (spr->height + height * ZOOM_LVL_BASE) / 2 - 1, }; DrawSprite(this->current_sprite, PAL_NONE, x, y, &subspr, ZOOM_LVL_GUI); break; } case WID_SA_LIST: { const NWidgetBase *nwid = this->GetWidget(widget); int step_size = nwid->resize_y; SmallVector &list = _newgrf_debug_sprite_picker.sprites; int max = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), list.Length()); int y = r.top + WD_FRAMERECT_TOP; for (int i = this->vscroll->GetPosition(); i < max; i++) { SetDParam(0, list[i]); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_BLACK_COMMA, TC_FROMSTRING, SA_RIGHT | SA_FORCE); y += step_size; } break; } } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_SA_PREVIOUS: do { this->current_sprite = (this->current_sprite == 0 ? GetMaxSpriteID() : this->current_sprite) - 1; } while (GetSpriteType(this->current_sprite) != ST_NORMAL); this->SetDirty(); break; case WID_SA_GOTO: ShowQueryString(STR_EMPTY, STR_SPRITE_ALIGNER_GOTO_CAPTION, 7, this, CS_NUMERAL, QSF_NONE); break; case WID_SA_NEXT: do { this->current_sprite = (this->current_sprite + 1) % GetMaxSpriteID(); } while (GetSpriteType(this->current_sprite) != ST_NORMAL); this->SetDirty(); break; case WID_SA_PICKER: this->LowerWidget(WID_SA_PICKER); _newgrf_debug_sprite_picker.mode = SPM_WAIT_CLICK; this->SetDirty(); break; case WID_SA_LIST: { const NWidgetBase *nwid = this->GetWidget(widget); int step_size = nwid->resize_y; uint i = this->vscroll->GetPosition() + (pt.y - nwid->pos_y) / step_size; if (i < _newgrf_debug_sprite_picker.sprites.Length()) { SpriteID spr = _newgrf_debug_sprite_picker.sprites[i]; if (GetSpriteType(spr) == ST_NORMAL) this->current_sprite = spr; } this->SetDirty(); break; } case WID_SA_UP: case WID_SA_DOWN: case WID_SA_LEFT: case WID_SA_RIGHT: { /* * Yes... this is a hack. * * No... I don't think it is useful to make this less of a hack. * * If you want to align sprites, you just need the number. Generally * the sprite caches are big enough to not remove the sprite from the * cache. If that's not the case, just let the NewGRF developer * increase the cache size instead of storing thousands of offsets * for the incredibly small chance that it's actually going to be * used by someone and the sprite cache isn't big enough for that * particular NewGRF developer. */ Sprite *spr = const_cast(GetSprite(this->current_sprite, ST_NORMAL)); switch (widget) { case WID_SA_UP: spr->y_offs -= ZOOM_LVL_BASE; break; case WID_SA_DOWN: spr->y_offs += ZOOM_LVL_BASE; break; case WID_SA_LEFT: spr->x_offs -= ZOOM_LVL_BASE; break; case WID_SA_RIGHT: spr->x_offs += ZOOM_LVL_BASE; break; } /* Of course, we need to redraw the sprite, but where is it used? * Everywhere is a safe bet. */ MarkWholeScreenDirty(); break; } } } virtual void OnQueryTextFinished(char *str) { if (StrEmpty(str)) return; this->current_sprite = atoi(str); if (this->current_sprite >= GetMaxSpriteID()) this->current_sprite = 0; while (GetSpriteType(this->current_sprite) != ST_NORMAL) { this->current_sprite = (this->current_sprite + 1) % GetMaxSpriteID(); } this->SetDirty(); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; if (data == 1) { /* Sprite picker finished */ this->RaiseWidget(WID_SA_PICKER); this->vscroll->SetCount(_newgrf_debug_sprite_picker.sprites.Length()); } } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_SA_LIST); this->GetWidget(WID_SA_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } }; static const NWidgetPart _nested_sprite_aligner_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SA_CAPTION), SetDataTip(STR_SPRITE_ALIGNER_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 10), NWidget(NWID_VERTICAL), SetPIP(10, 5, 10), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 5, 10), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SA_PREVIOUS), SetDataTip(STR_SPRITE_ALIGNER_PREVIOUS_BUTTON, STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SA_GOTO), SetDataTip(STR_SPRITE_ALIGNER_GOTO_BUTTON, STR_SPRITE_ALIGNER_GOTO_TOOLTIP), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SA_NEXT), SetDataTip(STR_SPRITE_ALIGNER_NEXT_BUTTON, STR_SPRITE_ALIGNER_NEXT_TOOLTIP), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SA_UP), SetDataTip(SPR_ARROW_UP, STR_SPRITE_ALIGNER_MOVE_TOOLTIP), SetResize(0, 0), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), NWidget(NWID_HORIZONTAL_LTR), SetPIP(10, 5, 10), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SA_LEFT), SetDataTip(SPR_ARROW_LEFT, STR_SPRITE_ALIGNER_MOVE_TOOLTIP), SetResize(0, 0), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_BLUE, WID_SA_SPRITE), SetDataTip(STR_NULL, STR_SPRITE_ALIGNER_SPRITE_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SA_RIGHT), SetDataTip(SPR_ARROW_RIGHT, STR_SPRITE_ALIGNER_MOVE_TOOLTIP), SetResize(0, 0), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SA_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SPRITE_ALIGNER_MOVE_TOOLTIP), SetResize(0, 0), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(10, 5, 10), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_PICKER), SetDataTip(STR_SPRITE_ALIGNER_PICKER_BUTTON, STR_SPRITE_ALIGNER_PICKER_TOOLTIP), SetFill(1, 0), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_SA_LIST), SetResize(1, 1), SetDataTip(0x101, STR_NULL), SetFill(1, 1), SetScrollbar(WID_SA_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SA_SCROLLBAR), EndContainer(), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _sprite_aligner_desc( WDP_AUTO, 400, 300, WC_SPRITE_ALIGNER, WC_NONE, 0, _nested_sprite_aligner_widgets, lengthof(_nested_sprite_aligner_widgets) ); /** * Show the window for aligning sprites. */ void ShowSpriteAlignerWindow() { AllocateWindowDescFront(&_sprite_aligner_desc, 0); } openttd-1.3.3/src/timetable_cmd.cpp0000644000000000000000000003057012246102610015754 0ustar rootroot/* $Id: timetable_cmd.cpp 24053 2012-03-20 13:11:20Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file timetable_cmd.cpp Commands related to time tabling. */ #include "stdafx.h" #include "command_func.h" #include "company_func.h" #include "date_func.h" #include "window_func.h" #include "vehicle_base.h" #include "cmd_helper.h" #include "table/strings.h" /** * Change/update a particular timetable entry. * @param v The vehicle to change the timetable of. * @param order_number The index of the timetable in the order list. * @param val The new data of the timetable entry. * @param mtf Which part of the timetable entry to change. */ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val, ModifyTimetableFlags mtf) { Order *order = v->GetOrder(order_number); int delta = 0; switch (mtf) { case MTF_WAIT_TIME: delta = val - order->wait_time; order->wait_time = val; break; case MTF_TRAVEL_TIME: delta = val - order->travel_time; order->travel_time = val; break; case MTF_TRAVEL_SPEED: order->max_speed = val; break; default: NOT_REACHED(); } v->orders.list->UpdateOrderTimetable(delta); for (v = v->FirstShared(); v != NULL; v = v->NextShared()) { if (v->cur_real_order_index == order_number && v->current_order.Equals(*order)) { switch (mtf) { case MTF_WAIT_TIME: v->current_order.wait_time = val; break; case MTF_TRAVEL_TIME: v->current_order.travel_time = val; break; case MTF_TRAVEL_SPEED: v->current_order.max_speed = val; break; default: NOT_REACHED(); } } SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } } /** * Change timetable data of an order. * @param tile Not used. * @param flags Operation to perform. * @param p1 Various bitstuffed elements * - p1 = (bit 0-19) - Vehicle with the orders to change. * - p1 = (bit 20-27) - Order index to modify. * - p1 = (bit 28-29) - Timetable data to change (@see ModifyTimetableFlags) * @param p2 The amount of time to wait. * - p2 = (bit 0-15) - The data to modify as specified by p1 bits 28-29. * @param text unused * @return the cost of this operation or an error */ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh = GB(p1, 0, 20); Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; VehicleOrderID order_number = GB(p1, 20, 8); Order *order = v->GetOrder(order_number); if (order == NULL || order->IsType(OT_IMPLICIT)) return CMD_ERROR; ModifyTimetableFlags mtf = Extract(p1); if (mtf >= MTF_END) return CMD_ERROR; int wait_time = order->wait_time; int travel_time = order->travel_time; int max_speed = order->max_speed; switch (mtf) { case MTF_WAIT_TIME: wait_time = GB(p2, 0, 16); break; case MTF_TRAVEL_TIME: travel_time = GB(p2, 0, 16); break; case MTF_TRAVEL_SPEED: max_speed = GB(p2, 0, 16); if (max_speed == 0) max_speed = UINT16_MAX; // Disable speed limit. break; default: NOT_REACHED(); } if (wait_time != order->wait_time) { switch (order->GetType()) { case OT_GOTO_STATION: if (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) return_cmd_error(STR_ERROR_TIMETABLE_NOT_STOPPING_HERE); break; case OT_CONDITIONAL: break; default: return_cmd_error(STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS); } } if (travel_time != order->travel_time && order->IsType(OT_CONDITIONAL)) return CMD_ERROR; if (max_speed != order->max_speed && (order->IsType(OT_CONDITIONAL) || v->type == VEH_AIRCRAFT)) return CMD_ERROR; if (flags & DC_EXEC) { if (wait_time != order->wait_time) ChangeTimetable(v, order_number, wait_time, MTF_WAIT_TIME); if (travel_time != order->travel_time) ChangeTimetable(v, order_number, travel_time, MTF_TRAVEL_TIME); if (max_speed != order->max_speed) ChangeTimetable(v, order_number, max_speed, MTF_TRAVEL_SPEED); } return CommandCost(); } /** * Clear the lateness counter to make the vehicle on time. * @param tile Not used. * @param flags Operation to perform. * @param p1 Various bitstuffed elements * - p1 = (bit 0-19) - Vehicle with the orders to change. * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdSetVehicleOnTime(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh = GB(p1, 0, 20); Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; if (flags & DC_EXEC) { v->lateness_counter = 0; SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } return CommandCost(); } /** * Set the start date of the timetable. * @param tile Not used. * @param flags Operation to perform. * @param p1 Vehicle id. * @param p2 The timetable start date. * @param text Not used. * @return The error or cost of the operation. */ CommandCost CmdSetTimetableStart(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 20)); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; /* Don't let a timetable start more than 15 years into the future or 1 year in the past. */ Date start_date = (Date)p2; if (start_date < 0 || start_date > MAX_DAY) return CMD_ERROR; if (start_date - _date > 15 * DAYS_IN_LEAP_YEAR) return CMD_ERROR; if (_date - start_date > DAYS_IN_LEAP_YEAR) return CMD_ERROR; if (flags & DC_EXEC) { v->lateness_counter = 0; ClrBit(v->vehicle_flags, VF_TIMETABLE_STARTED); v->timetable_start = start_date; SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } return CommandCost(); } /** * Start or stop filling the timetable automatically from the time the vehicle * actually takes to complete it. When starting to autofill the current times * are cleared and the timetable will start again from scratch. * @param tile Not used. * @param flags Operation to perform. * @param p1 Vehicle index. * @param p2 Various bitstuffed elements * - p2 = (bit 0) - Set to 1 to enable, 0 to disable autofill. * - p2 = (bit 1) - Set to 1 to preserve waiting times in non-destructive mode * @param text unused * @return the cost of this operation or an error */ CommandCost CmdAutofillTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh = GB(p1, 0, 20); Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; if (flags & DC_EXEC) { if (HasBit(p2, 0)) { /* Start autofilling the timetable, which clears the * "timetable has started" bit. Times are not cleared anymore, but are * overwritten when the order is reached now. */ SetBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE); ClrBit(v->vehicle_flags, VF_TIMETABLE_STARTED); /* Overwrite waiting times only if they got longer */ if (HasBit(p2, 1)) SetBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); v->timetable_start = 0; v->lateness_counter = 0; } else { ClrBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE); ClrBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); } for (Vehicle *v2 = v->FirstShared(); v2 != NULL; v2 = v2->NextShared()) { if (v2 != v) { /* Stop autofilling; only one vehicle at a time can perform autofill */ ClrBit(v2->vehicle_flags, VF_AUTOFILL_TIMETABLE); ClrBit(v2->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); } SetWindowDirty(WC_VEHICLE_TIMETABLE, v2->index); } } return CommandCost(); } /** * Update the timetable for the vehicle. * @param v The vehicle to update the timetable for. * @param travelling Whether we just travelled or waited at a station. */ void UpdateVehicleTimetable(Vehicle *v, bool travelling) { uint timetabled = travelling ? v->current_order.travel_time : v->current_order.wait_time; uint time_taken = v->current_order_time; v->current_order_time = 0; if (v->current_order.IsType(OT_IMPLICIT)) return; // no timetabling of auto orders VehicleOrderID first_manual_order = 0; for (Order *o = v->GetFirstOrder(); o != NULL && o->IsType(OT_IMPLICIT); o = o->next) { ++first_manual_order; } bool just_started = false; /* This vehicle is arriving at the first destination in the timetable. */ if (v->cur_real_order_index == first_manual_order && travelling) { /* If the start date hasn't been set, or it was set automatically when * the vehicle last arrived at the first destination, update it to the * current time. Otherwise set the late counter appropriately to when * the vehicle should have arrived. */ just_started = !HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED); if (v->timetable_start != 0) { v->lateness_counter = (_date - v->timetable_start) * DAY_TICKS + _date_fract; v->timetable_start = 0; } SetBit(v->vehicle_flags, VF_TIMETABLE_STARTED); SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } if (!HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) return; if (HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)) { if (travelling && !HasBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME)) { /* Need to clear that now as otherwise we are not able to reduce the wait time */ v->current_order.wait_time = 0; } if (just_started) return; /* Modify station waiting time only if our new value is larger (this is * always the case when we cleared the timetable). */ if (!v->current_order.IsType(OT_CONDITIONAL) && (travelling || time_taken > v->current_order.wait_time)) { /* Round the time taken up to the nearest day, as this will avoid * confusion for people who are timetabling in days, and can be * adjusted later by people who aren't. * For trains/aircraft multiple movement cycles are done in one * tick. This makes it possible to leave the station and process * e.g. a depot order in the same tick, causing it to not fill * the timetable entry like is done for road vehicles/ships. * Thus always make sure at least one tick is used between the * processing of different orders when filling the timetable. */ time_taken = CeilDiv(max(time_taken, 1U), DAY_TICKS) * DAY_TICKS; ChangeTimetable(v, v->cur_real_order_index, time_taken, travelling ? MTF_TRAVEL_TIME : MTF_WAIT_TIME); } if (v->cur_real_order_index == first_manual_order && travelling) { /* If we just started we would have returned earlier and have not reached * this code. So obviously, we have completed our round: So turn autofill * off again. */ ClrBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE); ClrBit(v->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); } return; } if (just_started) return; /* Vehicles will wait at stations if they arrive early even if they are not * timetabled to wait there, so make sure the lateness counter is updated * when this happens. */ if (timetabled == 0 && (travelling || v->lateness_counter >= 0)) return; v->lateness_counter -= (timetabled - time_taken); /* When we are more late than this timetabled bit takes we (somewhat expensively) * check how many ticks the (fully filled) timetable has. If a timetable cycle is * shorter than the amount of ticks we are late we reduce the lateness by the * length of a full cycle till lateness is less than the length of a timetable * cycle. When the timetable isn't fully filled the cycle will be INVALID_TICKS. */ if (v->lateness_counter > (int)timetabled) { Ticks cycle = v->orders.list->GetTimetableTotalDuration(); if (cycle != INVALID_TICKS && v->lateness_counter > cycle) { v->lateness_counter %= cycle; } } for (v = v->FirstShared(); v != NULL; v = v->NextShared()) { SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } } openttd-1.3.3/src/town.h0000644000000000000000000002622712246102610013623 0ustar rootroot/* $Id: town.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file town.h Base of the town class. */ #ifndef TOWN_H #define TOWN_H #include "viewport_type.h" #include "town_map.h" #include "subsidy_type.h" #include "newgrf_storage.h" #include "cargotype.h" #include "tilematrix_type.hpp" #include template struct BuildingCounts { T id_count[HOUSE_MAX]; T class_count[HOUSE_CLASS_MAX]; }; typedef TileMatrix AcceptanceMatrix; static const uint CUSTOM_TOWN_NUMBER_DIFFICULTY = 4; ///< value for custom town number in difficulty settings static const uint CUSTOM_TOWN_MAX_NUMBER = 5000; ///< this is the maximum number of towns a user can specify in customisation static const uint INVALID_TOWN = 0xFFFF; static const uint TOWN_GROWTH_WINTER = 0xFFFFFFFE; ///< The town only needs this cargo in the winter (any amount) static const uint TOWN_GROWTH_DESERT = 0xFFFFFFFF; ///< The town needs the cargo for growth when on desert (any amount) static const uint16 TOWN_GROW_RATE_CUSTOM = 0x8000; ///< If this mask is applied to Town::grow_counter, the grow_counter will not be calculated by the system (but assumed to be set by scripts) typedef Pool TownPool; extern TownPool _town_pool; /** Data structure with cached data of towns. */ struct TownCache { uint32 num_houses; ///< Amount of houses uint32 population; ///< Current population of people ViewportSign sign; ///< Location of name sign, UpdateVirtCoord updates this PartOfSubsidyByte part_of_subsidy; ///< Is this town a source/destination of a subsidy? uint32 squared_town_zone_radius[HZB_END]; ///< UpdateTownRadius updates this given the house count BuildingCounts building_counts; ///< The number of each type of building in the town }; /** Town data structure. */ struct Town : TownPool::PoolItem<&_town_pool> { TileIndex xy; ///< town center tile TownCache cache; ///< Container for all cacheable data. /* Town name */ uint32 townnamegrfid; uint16 townnametype; uint32 townnameparts; char *name; /* Makes sure we don't build certain house types twice. * bit 0 = Building funds received * bit 1 = CHURCH * bit 2 = STADIUM */ byte flags; uint16 noise_reached; ///< level of noise that all the airports are generating CompanyMask statues; ///< which companies have a statue? /* Company ratings. */ CompanyMask have_ratings; ///< which companies have a rating uint8 unwanted[MAX_COMPANIES]; ///< how many months companies aren't wanted by towns (bribe) CompanyByte exclusivity; ///< which company has exclusivity uint8 exclusive_counter; ///< months till the exclusivity expires int16 ratings[MAX_COMPANIES]; ///< ratings of each company for this town TransportedCargoStat supplied[NUM_CARGO]; ///< Cargo statistics about supplied cargo. TransportedCargoStat received[NUM_TE]; ///< Cargo statistics about received cargotypes. uint32 goal[NUM_TE]; ///< Amount of cargo required for the town to grow. char *text; ///< General text with additional information. inline byte GetPercentTransported(CargoID cid) const { return this->supplied[cid].old_act * 256 / (this->supplied[cid].old_max + 1); } /* Cargo production and acceptance stats. */ uint32 cargo_produced; ///< Bitmap of all cargoes produced by houses in this town. AcceptanceMatrix cargo_accepted; ///< Bitmap of cargoes accepted by houses for each 4*4 map square of the town. uint32 cargo_accepted_total; ///< NOSAVE: Bitmap of all cargoes accepted by houses in this town. uint16 time_until_rebuild; ///< time until we rebuild a house uint16 grow_counter; ///< counter to count when to grow uint16 growth_rate; ///< town growth rate byte fund_buildings_months; ///< fund buildings program in action? byte road_build_months; ///< fund road reconstruction in action? bool larger_town; ///< if this is a larger town and should grow more quickly TownLayoutByte layout; ///< town specific road layout std::list psa_list; /** * Creates a new town. * @param tile center tile of the town */ Town(TileIndex tile = INVALID_TILE) : xy(tile) { } /** Destroy the town. */ ~Town(); void InitializeLayout(TownLayout layout); /** * Calculate the max town noise. * The value is counted using the population divided by the content of the * entry in town_noise_population corresponding to the town's tolerance. * @return the maximum noise level the town will tolerate. */ inline uint16 MaxTownNoise() const { if (this->cache.population == 0) return 0; // no population? no noise /* 3 is added (the noise of the lowest airport), so the user can at least build a small airfield. */ return (this->cache.population / _settings_game.economy.town_noise_population[_settings_game.difficulty.town_council_tolerance]) + 3; } void UpdateVirtCoord(); static inline Town *GetByTile(TileIndex tile) { return Town::Get(GetTownIndex(tile)); } static Town *GetRandom(); static void PostDestructor(size_t index); }; uint32 GetWorldPopulation(); void UpdateAllTownVirtCoords(); void ShowTownViewWindow(TownID town); void ExpandTown(Town *t); /** * Action types that a company must ask permission for to a town authority. * @see CheckforTownRating */ enum TownRatingCheckType { ROAD_REMOVE = 0, ///< Removal of a road owned by the town. TUNNELBRIDGE_REMOVE = 1, ///< Removal of a tunnel or bridge owned by the towb. TOWN_RATING_CHECK_TYPE_COUNT, ///< Number of town checking action types. }; /** * This enum is used in conjunction with town->flags. * IT simply states what bit is used for. * It is pretty unrealistic (IMHO) to only have one church/stadium * per town, NO MATTER the population of it. * And there are 5 more bits available on flags... */ enum TownFlags { TOWN_IS_FUNDED = 0, ///< Town has received some funds for TOWN_HAS_CHURCH = 1, ///< There can be only one church by town. TOWN_HAS_STADIUM = 2, ///< There can be only one stadium by town. }; CommandCost CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type); TileIndexDiff GetHouseNorthPart(HouseID &house); Town *CalcClosestTownFromTile(TileIndex tile, uint threshold = UINT_MAX); #define FOR_ALL_TOWNS_FROM(var, start) FOR_ALL_ITEMS_FROM(Town, town_index, var, start) #define FOR_ALL_TOWNS(var) FOR_ALL_TOWNS_FROM(var, 0) void ResetHouses(); void ClearTownHouse(Town *t, TileIndex tile); void UpdateTownMaxPass(Town *t); void UpdateTownRadius(Town *t); void UpdateTownCargoes(Town *t); void UpdateTownCargoTotal(Town *t); void UpdateTownCargoBitmap(); CommandCost CheckIfAuthorityAllowsNewStation(TileIndex tile, DoCommandFlag flags); Town *ClosestTownFromTile(TileIndex tile, uint threshold); void ChangeTownRating(Town *t, int add, int max, DoCommandFlag flags); HouseZonesBits GetTownRadiusGroup(const Town *t, TileIndex tile); void SetTownRatingTestMode(bool mode); uint GetMaskOfTownActions(int *nump, CompanyID cid, const Town *t); bool GenerateTowns(TownLayout layout); const CargoSpec *FindFirstCargoWithTownEffect(TownEffect effect); /** Town actions of a company. */ enum TownActions { TACT_NONE = 0x00, ///< Empty action set. TACT_ADVERTISE_SMALL = 0x01, ///< Small advertising campaign. TACT_ADVERTISE_MEDIUM = 0x02, ///< Medium advertising campaign. TACT_ADVERTISE_LARGE = 0x04, ///< Large advertising campaign. TACT_ROAD_REBUILD = 0x08, ///< Rebuild the roads. TACT_BUILD_STATUE = 0x10, ///< Build a statue. TACT_FUND_BUILDINGS = 0x20, ///< Fund new buildings. TACT_BUY_RIGHTS = 0x40, ///< Buy exclusive transport rights. TACT_BRIBE = 0x80, ///< Try to bribe the council. TACT_COUNT = 8, ///< Number of available town actions. TACT_ADVERTISE = TACT_ADVERTISE_SMALL | TACT_ADVERTISE_MEDIUM | TACT_ADVERTISE_LARGE, ///< All possible advertising actions. TACT_CONSTRUCTION = TACT_ROAD_REBUILD | TACT_BUILD_STATUE | TACT_FUND_BUILDINGS, ///< All possible construction actions. TACT_FUNDS = TACT_BUY_RIGHTS | TACT_BRIBE, ///< All possible funding actions. TACT_ALL = TACT_ADVERTISE | TACT_CONSTRUCTION | TACT_FUNDS, ///< All possible actions. }; DECLARE_ENUM_AS_BIT_SET(TownActions) extern const byte _town_action_costs[TACT_COUNT]; extern TownID _new_town_id; /** * Set the default name for a depot/waypoint * @tparam T The type/class to make a default name for * @param obj The object/instance we want to find the name for */ template void MakeDefaultName(T *obj) { /* We only want to set names if it hasn't been set before, or when we're calling from afterload. */ assert(obj->name == NULL || obj->town_cn == UINT16_MAX); obj->town = ClosestTownFromTile(obj->xy, UINT_MAX); /* Find first unused number belonging to this town. This can never fail, * as long as there can be at most 65535 waypoints/depots in total. * * This does 'n * m' search, but with 32bit 'used' bitmap, it needs at * most 'n * (1 + ceil(m / 32))' steps (n - number of waypoints in pool, * m - number of waypoints near this town). * Usually, it needs only 'n' steps. * * If it wasn't using 'used' and 'idx', it would just search for increasing 'next', * but this way it is faster */ uint32 used = 0; // bitmap of used waypoint numbers, sliding window with 'next' as base uint32 next = 0; // first number in the bitmap uint32 idx = 0; // index where we will stop uint32 cid = 0; // current index, goes to T::GetPoolSize()-1, then wraps to 0 do { T *lobj = T::GetIfValid(cid); /* check only valid waypoints... */ if (lobj != NULL && obj != lobj) { /* only objects within the same city and with the same type */ if (lobj->town == obj->town && lobj->IsOfType(obj)) { /* if lobj->town_cn < next, uint will overflow to '+inf' */ uint i = (uint)lobj->town_cn - next; if (i < 32) { SetBit(used, i); // update bitmap if (i == 0) { /* shift bitmap while the lowest bit is '1'; * increase the base of the bitmap too */ do { used >>= 1; next++; } while (HasBit(used, 0)); /* when we are at 'idx' again at end of the loop and * 'next' hasn't changed, then no object had town_cn == next, * so we can safely use it */ idx = cid; } } } } cid++; if (cid == T::GetPoolSize()) cid = 0; // wrap to zero... } while (cid != idx); obj->town_cn = (uint16)next; // set index... } extern uint32 _town_cargoes_accepted; #endif /* TOWN_H */ openttd-1.3.3/src/ground_vehicle.hpp0000644000000000000000000003414712246102611016172 0ustar rootroot/* $Id: ground_vehicle.hpp 24540 2012-09-21 20:31:06Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ground_vehicle.hpp Base class and functions for all vehicles that move through ground. */ #ifndef GROUND_VEHICLE_HPP #define GROUND_VEHICLE_HPP #include "vehicle_base.h" #include "vehicle_gui.h" #include "landscape.h" #include "window_func.h" #include "widgets/vehicle_widget.h" /** What is the status of our acceleration? */ enum AccelStatus { AS_ACCEL, ///< We want to go faster, if possible of course. AS_BRAKE, ///< We want to stop. }; /** * Cached, frequently calculated values. * All of these values except cached_slope_resistance are set only for the first part of a vehicle. */ struct GroundVehicleCache { /* Cached acceleration values, recalculated when the cargo on a vehicle changes (in addition to the conditions below) */ uint32 cached_weight; ///< Total weight of the consist (valid only for the first engine). uint32 cached_slope_resistance; ///< Resistance caused by weight when this vehicle part is at a slope. uint32 cached_max_te; ///< Maximum tractive effort of consist (valid only for the first engine). uint16 cached_axle_resistance; ///< Resistance caused by the axles of the vehicle (valid only for the first engine). /* Cached acceleration values, recalculated on load and each time a vehicle is added to/removed from the consist. */ uint16 cached_max_track_speed; ///< Maximum consist speed limited by track type (valid only for the first engine). uint32 cached_power; ///< Total power of the consist (valid only for the first engine). uint32 cached_air_drag; ///< Air drag coefficient of the vehicle (valid only for the first engine). /* Cached NewGRF values, recalculated on load and each time a vehicle is added to/removed from the consist. */ uint16 cached_total_length; ///< Length of the whole vehicle (valid only for the first engine). EngineID first_engine; ///< Cached EngineID of the front vehicle. INVALID_ENGINE for the front vehicle itself. uint8 cached_veh_length; ///< Length of this vehicle in units of 1/VEHICLE_LENGTH of normal length. It is cached because this can be set by a callback. /* Cached UI information. */ uint16 last_speed; ///< The last speed we did display, so we only have to redraw when this changes. }; /** Ground vehicle flags. */ enum GroundVehicleFlags { GVF_GOINGUP_BIT = 0, ///< Vehicle is currently going uphill. (Cached track information for acceleration) GVF_GOINGDOWN_BIT = 1, ///< Vehicle is currently going downhill. (Cached track information for acceleration) GVF_SUPPRESS_IMPLICIT_ORDERS = 2, ///< Disable insertion and removal of automatic orders until the vehicle completes the real order. }; /** * Base class for all vehicles that move through ground. * * Child classes must define all of the following functions. * These functions are not defined as pure virtual functions at this class to improve performance. * * virtual uint16 GetPower() const = 0; * virtual uint16 GetPoweredPartPower(const T *head) const = 0; * virtual uint16 GetWeight() const = 0; * virtual byte GetTractiveEffort() const = 0; * virtual byte GetAirDrag() const = 0; * virtual byte GetAirDragArea() const = 0; * virtual AccelStatus GetAccelerationStatus() const = 0; * virtual uint16 GetCurrentSpeed() const = 0; * virtual uint32 GetRollingFriction() const = 0; * virtual int GetAccelerationType() const = 0; * virtual int32 GetSlopeSteepness() const = 0; * virtual int GetDisplayMaxSpeed() const = 0; * virtual uint16 GetMaxTrackSpeed() const = 0; * virtual bool TileMayHaveSlopedTrack() const = 0; */ template struct GroundVehicle : public SpecializedVehicle { GroundVehicleCache gcache; ///< Cache of often calculated values. uint16 gv_flags; ///< @see GroundVehicleFlags. typedef GroundVehicle GroundVehicleBase; ///< Our type /** * The constructor at SpecializedVehicle must be called. */ GroundVehicle() : SpecializedVehicle() {} void PowerChanged(); void CargoChanged(); int GetAcceleration() const; bool IsChainInDepot() const; /** * Common code executed for crashed ground vehicles * @param flooded was this vehicle flooded? * @return number of victims */ /* virtual */ uint Crash(bool flooded) { /* Crashed vehicles aren't going up or down */ for (T *v = T::From(this); v != NULL; v = v->Next()) { ClrBit(v->gv_flags, GVF_GOINGUP_BIT); ClrBit(v->gv_flags, GVF_GOINGDOWN_BIT); } return this->Vehicle::Crash(flooded); } /** * Calculates the total slope resistance for this vehicle. * @return Slope resistance. */ inline int32 GetSlopeResistance() const { int32 incl = 0; for (const T *u = T::From(this); u != NULL; u = u->Next()) { if (HasBit(u->gv_flags, GVF_GOINGUP_BIT)) { incl += u->gcache.cached_slope_resistance; } else if (HasBit(u->gv_flags, GVF_GOINGDOWN_BIT)) { incl -= u->gcache.cached_slope_resistance; } } return incl; } /** * Updates vehicle's Z position and inclination. * Used when the vehicle entered given tile. * @pre The vehicle has to be at (or near to) a border of the tile, * directed towards tile centre */ inline void UpdateZPositionAndInclination() { this->z_pos = GetSlopePixelZ(this->x_pos, this->y_pos); ClrBit(this->gv_flags, GVF_GOINGUP_BIT); ClrBit(this->gv_flags, GVF_GOINGDOWN_BIT); if (T::From(this)->TileMayHaveSlopedTrack()) { /* To check whether the current tile is sloped, and in which * direction it is sloped, we get the 'z' at the center of * the tile (middle_z) and the edge of the tile (old_z), * which we then can compare. */ int middle_z = GetSlopePixelZ((this->x_pos & ~TILE_UNIT_MASK) | (TILE_SIZE / 2), (this->y_pos & ~TILE_UNIT_MASK) | (TILE_SIZE / 2)); if (middle_z != this->z_pos) { SetBit(this->gv_flags, (middle_z > this->z_pos) ? GVF_GOINGUP_BIT : GVF_GOINGDOWN_BIT); } } } /** * Updates vehicle's Z position. * Inclination can't change in the middle of a tile. * The faster code is used for trains and road vehicles unless they are * reversing on a sloped tile. */ inline void UpdateZPosition() { #if 0 /* The following code does this: */ if (HasBit(this->gv_flags, GVF_GOINGUP_BIT)) { switch (this->direction) { case DIR_NE: this->z_pos += (this->x_pos & 1); break; case DIR_SW: this->z_pos += (this->x_pos & 1) ^ 1; break; case DIR_NW: this->z_pos += (this->y_pos & 1); break; case DIR_SE: this->z_pos += (this->y_pos & 1) ^ 1; break; default: break; } } else if (HasBit(this->gv_flags, GVF_GOINGDOWN_BIT)) { switch (this->direction) { case DIR_NE: this->z_pos -= (this->x_pos & 1); break; case DIR_SW: this->z_pos -= (this->x_pos & 1) ^ 1; break; case DIR_NW: this->z_pos -= (this->y_pos & 1); break; case DIR_SE: this->z_pos -= (this->y_pos & 1) ^ 1; break; default: break; } } /* But gcc 4.4.5 isn't able to nicely optimise it, and the resulting * code is full of conditional jumps. */ #endif /* Vehicle's Z position can change only if it has GVF_GOINGUP_BIT or GVF_GOINGDOWN_BIT set. * Furthermore, if this function is called once every time the vehicle's position changes, * we know the Z position changes by +/-1 at certain moments - when x_pos, y_pos is odd/even, * depending on orientation of the slope and vehicle's direction */ if (HasBit(this->gv_flags, GVF_GOINGUP_BIT) || HasBit(this->gv_flags, GVF_GOINGDOWN_BIT)) { if (T::From(this)->HasToUseGetSlopePixelZ()) { /* In some cases, we have to use GetSlopePixelZ() */ this->z_pos = GetSlopePixelZ(this->x_pos, this->y_pos); return; } /* DirToDiagDir() is a simple right shift */ DiagDirection dir = DirToDiagDir(this->direction); /* Read variables, so the compiler knows the access doesn't trap */ int8 x_pos = this->x_pos; int8 y_pos = this->y_pos; /* DiagDirToAxis() is a simple mask */ int8 d = DiagDirToAxis(dir) == AXIS_X ? x_pos : y_pos; /* We need only the least significant bit */ d &= 1; /* Conditional "^ 1". Optimised to "(dir - 1) <= 1". */ d ^= (int8)(dir == DIAGDIR_SW || dir == DIAGDIR_SE); /* Subtraction instead of addition because we are testing for GVF_GOINGUP_BIT. * GVF_GOINGUP_BIT is used because it's bit 0, so simple AND can be used, * without any shift */ this->z_pos += HasBit(this->gv_flags, GVF_GOINGUP_BIT) ? d : -d; } assert(this->z_pos == GetSlopePixelZ(this->x_pos, this->y_pos)); } /** * Checks if the vehicle is in a slope and sets the required flags in that case. * @param new_tile True if the vehicle reached a new tile. * @param update_delta Indicates to also update the delta. * @return Old height of the vehicle. */ inline byte UpdateInclination(bool new_tile, bool update_delta) { byte old_z = this->z_pos; if (new_tile) { this->UpdateZPositionAndInclination(); } else { this->UpdateZPosition(); } this->UpdateViewport(true, update_delta); return old_z; } /** * Set front engine state. */ inline void SetFrontEngine() { SetBit(this->subtype, GVSF_FRONT); } /** * Remove the front engine state. */ inline void ClearFrontEngine() { ClrBit(this->subtype, GVSF_FRONT); } /** * Set a vehicle to be an articulated part. */ inline void SetArticulatedPart() { SetBit(this->subtype, GVSF_ARTICULATED_PART); } /** * Clear a vehicle from being an articulated part. */ inline void ClearArticulatedPart() { ClrBit(this->subtype, GVSF_ARTICULATED_PART); } /** * Set a vehicle to be a wagon. */ inline void SetWagon() { SetBit(this->subtype, GVSF_WAGON); } /** * Clear wagon property. */ inline void ClearWagon() { ClrBit(this->subtype, GVSF_WAGON); } /** * Set engine status. */ inline void SetEngine() { SetBit(this->subtype, GVSF_ENGINE); } /** * Clear engine status. */ inline void ClearEngine() { ClrBit(this->subtype, GVSF_ENGINE); } /** * Set a vehicle as a free wagon. */ inline void SetFreeWagon() { SetBit(this->subtype, GVSF_FREE_WAGON); } /** * Clear a vehicle from being a free wagon. */ inline void ClearFreeWagon() { ClrBit(this->subtype, GVSF_FREE_WAGON); } /** * Set a vehicle as a multiheaded engine. */ inline void SetMultiheaded() { SetBit(this->subtype, GVSF_MULTIHEADED); } /** * Clear multiheaded engine property. */ inline void ClearMultiheaded() { ClrBit(this->subtype, GVSF_MULTIHEADED); } /** * Check if the vehicle is a free wagon (got no engine in front of it). * @return Returns true if the vehicle is a free wagon. */ inline bool IsFreeWagon() const { return HasBit(this->subtype, GVSF_FREE_WAGON); } /** * Check if a vehicle is an engine (can be first in a consist). * @return Returns true if vehicle is an engine. */ inline bool IsEngine() const { return HasBit(this->subtype, GVSF_ENGINE); } /** * Check if a vehicle is a wagon. * @return Returns true if vehicle is a wagon. */ inline bool IsWagon() const { return HasBit(this->subtype, GVSF_WAGON); } /** * Check if the vehicle is a multiheaded engine. * @return Returns true if the vehicle is a multiheaded engine. */ inline bool IsMultiheaded() const { return HasBit(this->subtype, GVSF_MULTIHEADED); } /** * Tell if we are dealing with the rear end of a multiheaded engine. * @return True if the engine is the rear part of a dualheaded engine. */ inline bool IsRearDualheaded() const { return this->IsMultiheaded() && !this->IsEngine(); } /** * Update the GUI variant of the current speed of the vehicle. * Also mark the widget dirty when that is needed, i.e. when * the speed of this vehicle has changed. */ inline void SetLastSpeed() { if (this->cur_speed != this->gcache.last_speed) { SetWindowWidgetDirty(WC_VEHICLE_VIEW, this->index, WID_VV_START_STOP); this->gcache.last_speed = this->cur_speed; } } protected: /** * Update the speed of the vehicle. * * It updates the cur_speed and subspeed variables depending on the state * of the vehicle; in this case the current acceleration, minimum and * maximum speeds of the vehicle. It returns the distance that that the * vehicle can drive this tick. #Vehicle::GetAdvanceDistance() determines * the distance to drive before moving a step on the map. * @param accel The acceleration we would like to give this vehicle. * @param min_speed The minimum speed here, in vehicle specific units. * @param max_speed The maximum speed here, in vehicle specific units. * @return Distance to drive. */ inline uint DoUpdateSpeed(uint accel, int min_speed, int max_speed) { uint spd = this->subspeed + accel; this->subspeed = (byte)spd; /* When we are going faster than the maximum speed, reduce the speed * somewhat gradually. But never lower than the maximum speed. */ int tempmax = max_speed; if (this->cur_speed > max_speed) { tempmax = max(this->cur_speed - (this->cur_speed / 10) - 1, max_speed); } /* Enforce a maximum and minimum speed. Normally we would use something like * Clamp for this, but in this case min_speed might be below the maximum speed * threshold for some reason. That makes acceleration fail and assertions * happen in Clamp. So make it explicit that min_speed overrules the maximum * speed by explicit ordering of min and max. */ this->cur_speed = spd = max(min(this->cur_speed + ((int)spd >> 8), tempmax), min_speed); int scaled_spd = this->GetAdvanceSpeed(spd); scaled_spd += this->progress; this->progress = 0; // set later in *Handler or *Controller return scaled_spd; } }; #endif /* GROUND_VEHICLE_HPP */ openttd-1.3.3/src/console_func.h0000644000000000000000000000256212246102611015306 0ustar rootroot/* $Id: console_func.h 21707 2011-01-03 20:54:20Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file console_func.h Console functions used outside of the console code. */ #ifndef CONSOLE_FUNC_H #define CONSOLE_FUNC_H #include "console_type.h" /* console modes */ extern IConsoleModes _iconsole_mode; /* console functions */ void IConsoleInit(); void IConsoleFree(); void IConsoleClose(); /* console output */ void IConsolePrint(TextColour colour_code, const char *string); void CDECL IConsolePrintF(TextColour colour_code, const char *format, ...) WARN_FORMAT(2, 3); void IConsoleDebug(const char *dbg, const char *string); void IConsoleWarning(const char *string); void IConsoleError(const char *string); /* Parser */ void IConsoleCmdExec(const char *cmdstr); bool IsValidConsoleColour(TextColour c); #endif /* CONSOLE_FUNC_H */ openttd-1.3.3/src/spritecache.h0000644000000000000000000000407312246102611015122 0ustar rootroot/* $Id: spritecache.h 23887 2012-02-04 13:29:04Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file spritecache.h Functions to cache sprites in memory. */ #ifndef SPRITECACHE_H #define SPRITECACHE_H #include "gfx_type.h" /** Data structure describing a sprite. */ struct Sprite { uint16 height; ///< Height of the sprite. uint16 width; ///< Width of the sprite. int16 x_offs; ///< Number of pixels to shift the sprite to the right. int16 y_offs; ///< Number of pixels to shift the sprite downwards. byte data[]; ///< Sprite data. }; extern uint _sprite_cache_size; typedef void *AllocatorProc(size_t size); void *GetRawSprite(SpriteID sprite, SpriteType type, AllocatorProc *allocator = NULL); bool SpriteExists(SpriteID sprite); SpriteType GetSpriteType(SpriteID sprite); uint GetOriginFileSlot(SpriteID sprite); uint GetMaxSpriteID(); static inline const Sprite *GetSprite(SpriteID sprite, SpriteType type) { assert(type != ST_RECOLOUR); return (Sprite*)GetRawSprite(sprite, type); } static inline const byte *GetNonSprite(SpriteID sprite, SpriteType type) { assert(type == ST_RECOLOUR); return (byte*)GetRawSprite(sprite, type); } void GfxInitSpriteMem(); void GfxClearSpriteCache(); void IncreaseSpriteLRU(); void ReadGRFSpriteOffsets(byte container_version); size_t GetGRFSpriteOffset(uint32 id); bool LoadNextSprite(int load_index, byte file_index, uint file_sprite_id, byte container_version); bool SkipSpriteData(byte type, uint16 num); void DupSprite(SpriteID old_spr, SpriteID new_spr); #endif /* SPRITECACHE_H */ openttd-1.3.3/src/economy.cpp0000644000000000000000000020171012246102611014631 0ustar rootroot/* $Id: economy.cpp 25498 2013-06-28 19:21:24Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file economy.cpp Handling of the economy. */ #include "stdafx.h" #include "company_func.h" #include "command_func.h" #include "industry.h" #include "town.h" #include "news_func.h" #include "network/network.h" #include "network/network_func.h" #include "ai/ai.hpp" #include "aircraft.h" #include "newgrf_engine.h" #include "engine_base.h" #include "ground_vehicle.hpp" #include "newgrf_cargo.h" #include "newgrf_sound.h" #include "newgrf_industrytiles.h" #include "newgrf_station.h" #include "newgrf_airporttiles.h" #include "object.h" #include "strings_func.h" #include "date_func.h" #include "vehicle_func.h" #include "sound_func.h" #include "autoreplace_func.h" #include "company_gui.h" #include "signs_base.h" #include "subsidy_base.h" #include "subsidy_func.h" #include "station_base.h" #include "waypoint_base.h" #include "economy_base.h" #include "core/pool_func.hpp" #include "core/backup_type.hpp" #include "water.h" #include "game/game.hpp" #include "cargomonitor.h" #include "goal_base.h" #include "table/strings.h" #include "table/pricebase.h" /* Initialize the cargo payment-pool */ CargoPaymentPool _cargo_payment_pool("CargoPayment"); INSTANTIATE_POOL_METHODS(CargoPayment) /** * Multiply two integer values and shift the results to right. * * This function multiplies two integer values. The result is * shifted by the amount of shift to right. * * @param a The first integer * @param b The second integer * @param shift The amount to shift the value to right. * @return The shifted result */ static inline int32 BigMulS(const int32 a, const int32 b, const uint8 shift) { return (int32)((int64)a * (int64)b >> shift); } typedef SmallVector SmallIndustryList; /** * Score info, values used for computing the detailed performance rating. */ const ScoreInfo _score_info[] = { { 120, 100}, // SCORE_VEHICLES { 80, 100}, // SCORE_STATIONS { 10000, 100}, // SCORE_MIN_PROFIT { 50000, 50}, // SCORE_MIN_INCOME { 100000, 100}, // SCORE_MAX_INCOME { 40000, 400}, // SCORE_DELIVERED { 8, 50}, // SCORE_CARGO {10000000, 50}, // SCORE_MONEY { 250000, 50}, // SCORE_LOAN { 0, 0} // SCORE_TOTAL }; int _score_part[MAX_COMPANIES][SCORE_END]; Economy _economy; Prices _price; Money _additional_cash_required; static PriceMultipliers _price_base_multiplier; /** * Calculate the value of the company. That is the value of all * assets (vehicles, stations, etc) and money minus the loan, * except when including_loan is \c false which is useful when * we want to calculate the value for bankruptcy. * @param c the company to get the value of. * @param including_loan include the loan in the company value. * @return the value of the company. */ Money CalculateCompanyValue(const Company *c, bool including_loan) { Owner owner = c->index; Station *st; uint num = 0; FOR_ALL_STATIONS(st) { if (st->owner == owner) num += CountBits((byte)st->facilities); } Money value = num * _price[PR_STATION_VALUE] * 25; Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner != owner) continue; if (v->type == VEH_TRAIN || v->type == VEH_ROAD || (v->type == VEH_AIRCRAFT && Aircraft::From(v)->IsNormalAircraft()) || v->type == VEH_SHIP) { value += v->value * 3 >> 1; } } /* Add real money value */ if (including_loan) value -= c->current_loan; value += c->money; return max(value, (Money)1); } /** * if update is set to true, the economy is updated with this score * (also the house is updated, should only be true in the on-tick event) * @param update the economy with calculated score * @param c company been evaluated * @return actual score of this company * */ int UpdateCompanyRatingAndValue(Company *c, bool update) { Owner owner = c->index; int score = 0; memset(_score_part[owner], 0, sizeof(_score_part[owner])); /* Count vehicles */ { Vehicle *v; Money min_profit = 0; bool min_profit_first = true; uint num = 0; FOR_ALL_VEHICLES(v) { if (v->owner != owner) continue; if (IsCompanyBuildableVehicleType(v->type) && v->IsPrimaryVehicle()) { if (v->profit_last_year > 0) num++; // For the vehicle score only count profitable vehicles if (v->age > 730) { /* Find the vehicle with the lowest amount of profit */ if (min_profit_first || min_profit > v->profit_last_year) { min_profit = v->profit_last_year; min_profit_first = false; } } } } min_profit >>= 8; // remove the fract part _score_part[owner][SCORE_VEHICLES] = num; /* Don't allow negative min_profit to show */ if (min_profit > 0) { _score_part[owner][SCORE_MIN_PROFIT] = ClampToI32(min_profit); } } /* Count stations */ { uint num = 0; const Station *st; FOR_ALL_STATIONS(st) { /* Only count stations that are actually serviced */ if (st->owner == owner && (st->time_since_load <= 20 || st->time_since_unload <= 20)) num += CountBits((byte)st->facilities); } _score_part[owner][SCORE_STATIONS] = num; } /* Generate statistics depending on recent income statistics */ { int numec = min(c->num_valid_stat_ent, 12); if (numec != 0) { const CompanyEconomyEntry *cee = c->old_economy; Money min_income = cee->income + cee->expenses; Money max_income = cee->income + cee->expenses; do { min_income = min(min_income, cee->income + cee->expenses); max_income = max(max_income, cee->income + cee->expenses); } while (++cee, --numec); if (min_income > 0) { _score_part[owner][SCORE_MIN_INCOME] = ClampToI32(min_income); } _score_part[owner][SCORE_MAX_INCOME] = ClampToI32(max_income); } } /* Generate score depending on amount of transported cargo */ { int numec = min(c->num_valid_stat_ent, 4); if (numec != 0) { const CompanyEconomyEntry *cee = c->old_economy; OverflowSafeInt64 total_delivered = 0; do { total_delivered += cee->delivered_cargo.GetSum(); } while (++cee, --numec); _score_part[owner][SCORE_DELIVERED] = ClampToI32(total_delivered); } } /* Generate score for variety of cargo */ { _score_part[owner][SCORE_CARGO] = c->old_economy->delivered_cargo.GetCount(); } /* Generate score for company's money */ { if (c->money > 0) { _score_part[owner][SCORE_MONEY] = ClampToI32(c->money); } } /* Generate score for loan */ { _score_part[owner][SCORE_LOAN] = ClampToI32(_score_info[SCORE_LOAN].needed - c->current_loan); } /* Now we calculate the score for each item.. */ { int total_score = 0; int s; score = 0; for (ScoreID i = SCORE_BEGIN; i < SCORE_END; i++) { /* Skip the total */ if (i == SCORE_TOTAL) continue; /* Check the score */ s = Clamp(_score_part[owner][i], 0, _score_info[i].needed) * _score_info[i].score / _score_info[i].needed; score += s; total_score += _score_info[i].score; } _score_part[owner][SCORE_TOTAL] = score; /* We always want the score scaled to SCORE_MAX (1000) */ if (total_score != SCORE_MAX) score = score * SCORE_MAX / total_score; } if (update) { c->old_economy[0].performance_history = score; UpdateCompanyHQ(c->location_of_HQ, score); c->old_economy[0].company_value = CalculateCompanyValue(c); } SetWindowDirty(WC_PERFORMANCE_DETAIL, 0); return score; } /** * Change the ownership of all the items of a company. * @param old_owner The company that gets removed. * @param new_owner The company to merge to, or INVALID_OWNER to remove the company. */ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) { /* We need to set _current_company to old_owner before we try to move * the client. This is needed as it needs to know whether "you" really * are the current local company. */ Backup cur_company(_current_company, old_owner, FILE_LINE); #ifdef ENABLE_NETWORK /* In all cases, make spectators of clients connected to that company */ if (_networking) NetworkClientsToSpectators(old_owner); #endif /* ENABLE_NETWORK */ if (old_owner == _local_company) { /* Single player cheated to AI company. * There are no spectators in single player, so we must pick some other company. */ assert(!_networking); Backup cur_company(_current_company, FILE_LINE); Company *c; FOR_ALL_COMPANIES(c) { if (c->index != old_owner) { SetLocalCompany(c->index); break; } } cur_company.Restore(); assert(old_owner != _local_company); } Town *t; assert(old_owner != new_owner); { Company *c; uint i; /* See if the old_owner had shares in other companies */ FOR_ALL_COMPANIES(c) { for (i = 0; i < 4; i++) { if (c->share_owners[i] == old_owner) { /* Sell his shares */ CommandCost res = DoCommand(0, c->index, 0, DC_EXEC | DC_BANKRUPT, CMD_SELL_SHARE_IN_COMPANY); /* Because we are in a DoCommand, we can't just execute another one and * expect the money to be removed. We need to do it ourself! */ SubtractMoneyFromCompany(res); } } } /* Sell all the shares that people have on this company */ Backup cur_company2(_current_company, FILE_LINE); c = Company::Get(old_owner); for (i = 0; i < 4; i++) { cur_company2.Change(c->share_owners[i]); if (_current_company != INVALID_OWNER) { /* Sell the shares */ CommandCost res = DoCommand(0, old_owner, 0, DC_EXEC | DC_BANKRUPT, CMD_SELL_SHARE_IN_COMPANY); /* Because we are in a DoCommand, we can't just execute another one and * expect the money to be removed. We need to do it ourself! */ SubtractMoneyFromCompany(res); } } cur_company2.Restore(); } /* Temporarily increase the company's money, to be sure that * removing his/her property doesn't fail because of lack of money. * Not too drastically though, because it could overflow */ if (new_owner == INVALID_OWNER) { Company::Get(old_owner)->money = UINT64_MAX >> 2; // jackpot ;p } Subsidy *s; FOR_ALL_SUBSIDIES(s) { if (s->awarded == old_owner) { if (new_owner == INVALID_OWNER) { delete s; } else { s->awarded = new_owner; } } } if (new_owner == INVALID_OWNER) RebuildSubsidisedSourceAndDestinationCache(); /* Take care of rating and transport rights in towns */ FOR_ALL_TOWNS(t) { /* If a company takes over, give the ratings to that company. */ if (new_owner != INVALID_OWNER) { if (HasBit(t->have_ratings, old_owner)) { if (HasBit(t->have_ratings, new_owner)) { /* use max of the two ratings. */ t->ratings[new_owner] = max(t->ratings[new_owner], t->ratings[old_owner]); } else { SetBit(t->have_ratings, new_owner); t->ratings[new_owner] = t->ratings[old_owner]; } } } /* Reset the ratings for the old owner */ t->ratings[old_owner] = RATING_INITIAL; ClrBit(t->have_ratings, old_owner); /* Transfer exclusive rights */ if (t->exclusive_counter > 0 && t->exclusivity == old_owner) { if (new_owner != INVALID_OWNER) { t->exclusivity = new_owner; } else { t->exclusive_counter = 0; t->exclusivity = INVALID_COMPANY; } } } { Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner == old_owner && IsCompanyBuildableVehicleType(v->type)) { if (new_owner == INVALID_OWNER) { if (v->Previous() == NULL) delete v; } else { if (v->IsEngineCountable()) GroupStatistics::CountEngine(v, -1); if (v->IsPrimaryVehicle()) GroupStatistics::CountVehicle(v, -1); } } } } /* In all cases clear replace engine rules. * Even if it was copied, it could interfere with new owner's rules */ RemoveAllEngineReplacementForCompany(Company::Get(old_owner)); if (new_owner == INVALID_OWNER) { RemoveAllGroupsForCompany(old_owner); } else { Group *g; FOR_ALL_GROUPS(g) { if (g->owner == old_owner) g->owner = new_owner; } } { FreeUnitIDGenerator unitidgen[] = { FreeUnitIDGenerator(VEH_TRAIN, new_owner), FreeUnitIDGenerator(VEH_ROAD, new_owner), FreeUnitIDGenerator(VEH_SHIP, new_owner), FreeUnitIDGenerator(VEH_AIRCRAFT, new_owner) }; Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner == old_owner && IsCompanyBuildableVehicleType(v->type)) { assert(new_owner != INVALID_OWNER); v->owner = new_owner; /* Owner changes, clear cache */ v->colourmap = PAL_NONE; v->InvalidateNewGRFCache(); if (v->IsEngineCountable()) { GroupStatistics::CountEngine(v, 1); } if (v->IsPrimaryVehicle()) { GroupStatistics::CountVehicle(v, 1); v->unitnumber = unitidgen[v->type].NextID(); } /* Invalidate the vehicle's cargo payment "owner cache". */ if (v->cargo_payment != NULL) v->cargo_payment->owner = NULL; } } if (new_owner != INVALID_OWNER) GroupStatistics::UpdateAutoreplace(new_owner); } /* Change ownership of tiles */ { TileIndex tile = 0; do { ChangeTileOwner(tile, old_owner, new_owner); } while (++tile != MapSize()); if (new_owner != INVALID_OWNER) { /* Update all signals because there can be new segment that was owned by two companies * and signals were not propagated * Similar with crossings - it is needed to bar crossings that weren't before * because of different owner of crossing and approaching train */ tile = 0; do { if (IsTileType(tile, MP_RAILWAY) && IsTileOwner(tile, new_owner) && HasSignals(tile)) { TrackBits tracks = GetTrackBits(tile); do { // there may be two tracks with signals for TRACK_BIT_HORZ and TRACK_BIT_VERT Track track = RemoveFirstTrack(&tracks); if (HasSignalOnTrack(tile, track)) AddTrackToSignalBuffer(tile, track, new_owner); } while (tracks != TRACK_BIT_NONE); } else if (IsLevelCrossingTile(tile) && IsTileOwner(tile, new_owner)) { UpdateLevelCrossing(tile); } } while (++tile != MapSize()); } /* update signals in buffer */ UpdateSignalsInBuffer(); } /* Add airport infrastructure count of the old company to the new one. */ if (new_owner != INVALID_OWNER) Company::Get(new_owner)->infrastructure.airport += Company::Get(old_owner)->infrastructure.airport; /* convert owner of stations (including deleted ones, but excluding buoys) */ Station *st; FOR_ALL_STATIONS(st) { if (st->owner == old_owner) { /* if a company goes bankrupt, set owner to OWNER_NONE so the sign doesn't disappear immediately * also, drawing station window would cause reading invalid company's colour */ st->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner; } } /* do the same for waypoints (we need to do this here so deleted waypoints are converted too) */ Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { if (wp->owner == old_owner) { wp->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner; } } Sign *si; FOR_ALL_SIGNS(si) { if (si->owner == old_owner) si->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner; } /* Remove Game Script created Goals and CargoMonitors. */ Goal *g; FOR_ALL_GOALS(g) { if (g->company == old_owner) delete g; } ClearCargoPickupMonitoring(old_owner); ClearCargoDeliveryMonitoring(old_owner); /* Change colour of existing windows */ if (new_owner != INVALID_OWNER) ChangeWindowOwner(old_owner, new_owner); cur_company.Restore(); MarkWholeScreenDirty(); } /** * Check for bankruptcy of a company. Called every three months. * @param c Company to check. */ static void CompanyCheckBankrupt(Company *c) { /* If the company has money again, it does not go bankrupt */ if (c->money - c->current_loan >= -_economy.max_loan) { c->months_of_bankruptcy = 0; c->bankrupt_asked = 0; return; } c->months_of_bankruptcy++; switch (c->months_of_bankruptcy) { /* All the boring cases (months) with a bad balance where no action is taken */ case 0: case 1: case 2: case 3: case 5: case 6: case 8: case 9: break; /* Warn about bankruptcy after 3 months */ case 4: { CompanyNewsInformation *cni = MallocT(1); cni->FillData(c); SetDParam(0, STR_NEWS_COMPANY_IN_TROUBLE_TITLE); SetDParam(1, STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION); SetDParamStr(2, cni->company_name); AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, cni); AI::BroadcastNewEvent(new ScriptEventCompanyInTrouble(c->index)); Game::NewEvent(new ScriptEventCompanyInTrouble(c->index)); break; } /* Offer company for sale after 6 months */ case 7: { /* Don't consider the loan */ Money val = CalculateCompanyValue(c, false); c->bankrupt_value = val; c->bankrupt_asked = 1 << c->index; // Don't ask the owner c->bankrupt_timeout = 0; /* The company assets should always have some value */ assert(c->bankrupt_value > 0); break; } /* Bankrupt company after 6 months (if the company has no value) or latest * after 9 months (if it still had value after 6 months) */ default: case 10: { if (!_networking && _local_company == c->index) { /* If we are in offline mode, leave the company playing. Eg. there * is no THE-END, otherwise mark the client as spectator to make sure * he/she is no long in control of this company. However... when you * join another company (cheat) the "unowned" company can bankrupt. */ c->bankrupt_asked = MAX_UVALUE(CompanyMask); break; } /* Actually remove the company, but not when we're a network client. * In case of network clients we will be getting a command from the * server. It is done in this way as we are called from the * StateGameLoop which can't change the current company, and thus * updating the local company triggers an assert later on. In the * case of a network game the command will be processed at a time * that changing the current company is okay. In case of single * player we are sure (the above check) that we are not the local * company and thus we won't be moved. */ if (!_networking || _network_server) DoCommandP(0, 2 | (c->index << 16), CRR_BANKRUPT, CMD_COMPANY_CTRL); break; } } } /** * Update the finances of all companies. * Pay for the stations, update the history graph, update ratings and company values, and deal with bankruptcy. */ static void CompaniesGenStatistics() { Station *st; Backup cur_company(_current_company, FILE_LINE); Company *c; if (!_settings_game.economy.infrastructure_maintenance) { FOR_ALL_STATIONS(st) { cur_company.Change(st->owner); CommandCost cost(EXPENSES_PROPERTY, _price[PR_STATION_VALUE] >> 1); SubtractMoneyFromCompany(cost); } } else { /* Improved monthly infrastructure costs. */ FOR_ALL_COMPANIES(c) { cur_company.Change(c->index); CommandCost cost(EXPENSES_PROPERTY); uint32 rail_total = c->infrastructure.GetRailTotal(); for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) { if (c->infrastructure.rail[rt] != 0) cost.AddCost(RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total)); } cost.AddCost(SignalMaintenanceCost(c->infrastructure.signal)); for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) { if (c->infrastructure.road[rt] != 0) cost.AddCost(RoadMaintenanceCost(rt, c->infrastructure.road[rt])); } cost.AddCost(CanalMaintenanceCost(c->infrastructure.water)); cost.AddCost(StationMaintenanceCost(c->infrastructure.station)); cost.AddCost(AirportMaintenanceCost(c->index)); SubtractMoneyFromCompany(cost); } } cur_company.Restore(); /* Check for bankruptcy each month */ FOR_ALL_COMPANIES(c) { CompanyCheckBankrupt(c); } /* Only run the economic statics and update company stats every 3rd month (1st of quarter). */ if (!HasBit(1 << 0 | 1 << 3 | 1 << 6 | 1 << 9, _cur_month)) return; FOR_ALL_COMPANIES(c) { memmove(&c->old_economy[1], &c->old_economy[0], sizeof(c->old_economy) - sizeof(c->old_economy[0])); c->old_economy[0] = c->cur_economy; memset(&c->cur_economy, 0, sizeof(c->cur_economy)); if (c->num_valid_stat_ent != MAX_HISTORY_QUARTERS) c->num_valid_stat_ent++; UpdateCompanyRatingAndValue(c, true); if (c->block_preview != 0) c->block_preview--; } SetWindowDirty(WC_INCOME_GRAPH, 0); SetWindowDirty(WC_OPERATING_PROFIT, 0); SetWindowDirty(WC_DELIVERED_CARGO, 0); SetWindowDirty(WC_PERFORMANCE_HISTORY, 0); SetWindowDirty(WC_COMPANY_VALUE, 0); SetWindowDirty(WC_COMPANY_LEAGUE, 0); } /** * Add monthly inflation * @param check_year Shall the inflation get stopped after 170 years? * @return true if inflation is maxed and nothing was changed */ bool AddInflation(bool check_year) { /* The cargo payment inflation differs from the normal inflation, so the * relative amount of money you make with a transport decreases slowly over * the 170 years. After a few hundred years we reach a level in which the * games will become unplayable as the maximum income will be less than * the minimum running cost. * * Furthermore there are a lot of inflation related overflows all over the * place. Solving them is hardly possible because inflation will always * reach the overflow threshold some day. So we'll just perform the * inflation mechanism during the first 170 years (the amount of years that * one had in the original TTD) and stop doing the inflation after that * because it only causes problems that can't be solved nicely and the * inflation doesn't add anything after that either; it even makes playing * it impossible due to the diverging cost and income rates. */ if (check_year && (_cur_year - _settings_game.game_creation.starting_year) >= (ORIGINAL_MAX_YEAR - ORIGINAL_BASE_YEAR)) return true; if (_economy.inflation_prices == MAX_INFLATION || _economy.inflation_payment == MAX_INFLATION) return true; /* Approximation for (100 + infl_amount)% ** (1 / 12) - 100% * scaled by 65536 * 12 -> months per year * This is only a good approximation for small values */ _economy.inflation_prices += (_economy.inflation_prices * _economy.infl_amount * 54) >> 16; _economy.inflation_payment += (_economy.inflation_payment * _economy.infl_amount_pr * 54) >> 16; if (_economy.inflation_prices > MAX_INFLATION) _economy.inflation_prices = MAX_INFLATION; if (_economy.inflation_payment > MAX_INFLATION) _economy.inflation_payment = MAX_INFLATION; return false; } /** * Computes all prices, payments and maximum loan. */ void RecomputePrices() { /* Setup maximum loan */ _economy.max_loan = (_settings_game.difficulty.max_loan * _economy.inflation_prices >> 16) / 50000 * 50000; /* Setup price bases */ for (Price i = PR_BEGIN; i < PR_END; i++) { Money price = _price_base_specs[i].start_price; /* Apply difficulty settings */ uint mod = 1; switch (_price_base_specs[i].category) { case PCAT_RUNNING: mod = _settings_game.difficulty.vehicle_costs; break; case PCAT_CONSTRUCTION: mod = _settings_game.difficulty.construction_cost; break; default: break; } switch (mod) { case 0: price *= 6; break; case 1: price *= 8; break; // normalised to 1 below case 2: price *= 9; break; default: NOT_REACHED(); } /* Apply inflation */ price = (int64)price * _economy.inflation_prices; /* Apply newgrf modifiers, remove fractional part of inflation, and normalise on medium difficulty. */ int shift = _price_base_multiplier[i] - 16 - 3; if (shift >= 0) { price <<= shift; } else { price >>= -shift; } /* Make sure the price does not get reduced to zero. * Zero breaks quite a few commands that use a zero * cost to see whether something got changed or not * and based on that cause an error. When the price * is zero that fails even when things are done. */ if (price == 0) { price = Clamp(_price_base_specs[i].start_price, -1, 1); /* No base price should be zero, but be sure. */ assert(price != 0); } /* Store value */ _price[i] = price; } /* Setup cargo payment */ CargoSpec *cs; FOR_ALL_CARGOSPECS(cs) { cs->current_payment = ((int64)cs->initial_payment * _economy.inflation_payment) >> 16; } SetWindowClassesDirty(WC_BUILD_VEHICLE); SetWindowClassesDirty(WC_REPLACE_VEHICLE); SetWindowClassesDirty(WC_VEHICLE_DETAILS); SetWindowClassesDirty(WC_COMPANY_INFRASTRUCTURE); InvalidateWindowData(WC_PAYMENT_RATES, 0); } /** Let all companies pay the monthly interest on their loan. */ static void CompaniesPayInterest() { const Company *c; Backup cur_company(_current_company, FILE_LINE); FOR_ALL_COMPANIES(c) { cur_company.Change(c->index); /* Over a year the paid interest should be "loan * interest percentage", * but... as that number is likely not dividable by 12 (pay each month), * one needs to account for that in the monthly fee calculations. * To easily calculate what one should pay "this" month, you calculate * what (total) should have been paid up to this month and you subtract * whatever has been paid in the previous months. This will mean one month * it'll be a bit more and the other it'll be a bit less than the average * monthly fee, but on average it will be exact. * In order to prevent cheating or abuse (just not paying interest by not * taking a loan we make companies pay interest on negative cash as well */ Money yearly_fee = c->current_loan * _economy.interest_rate / 100; if (c->money < 0) { yearly_fee += -c->money *_economy.interest_rate / 100; } Money up_to_previous_month = yearly_fee * _cur_month / 12; Money up_to_this_month = yearly_fee * (_cur_month + 1) / 12; SubtractMoneyFromCompany(CommandCost(EXPENSES_LOAN_INT, up_to_this_month - up_to_previous_month)); SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, _price[PR_STATION_VALUE] >> 2)); } cur_company.Restore(); } static void HandleEconomyFluctuations() { if (_settings_game.difficulty.economy != 0) { /* When economy is Fluctuating, decrease counter */ _economy.fluct--; } else if (EconomyIsInRecession()) { /* When it's Steady and we are in recession, end it now */ _economy.fluct = -12; } else { /* No need to do anything else in other cases */ return; } if (_economy.fluct == 0) { _economy.fluct = -(int)GB(Random(), 0, 2); AddNewsItem(STR_NEWS_BEGIN_OF_RECESSION, NT_ECONOMY, NF_NORMAL); } else if (_economy.fluct == -12) { _economy.fluct = GB(Random(), 0, 8) + 312; AddNewsItem(STR_NEWS_END_OF_RECESSION, NT_ECONOMY, NF_NORMAL); } } /** * Reset changes to the price base multipliers. */ void ResetPriceBaseMultipliers() { memset(_price_base_multiplier, 0, sizeof(_price_base_multiplier)); } /** * Change a price base by the given factor. * The price base is altered by factors of two. * NewBaseCost = OldBaseCost * 2^n * @param price Index of price base to change. * @param factor Amount to change by. */ void SetPriceBaseMultiplier(Price price, int factor) { assert(price < PR_END); _price_base_multiplier[price] = Clamp(factor, MIN_PRICE_MODIFIER, MAX_PRICE_MODIFIER); } /** * Initialize the variables that will maintain the daily industry change system. * @param init_counter specifies if the counter is required to be initialized */ void StartupIndustryDailyChanges(bool init_counter) { uint map_size = MapLogX() + MapLogY(); /* After getting map size, it needs to be scaled appropriately and divided by 31, * which stands for the days in a month. * Using just 31 will make it so that a monthly reset (based on the real number of days of that month) * would not be needed. * Since it is based on "fractional parts", the leftover days will not make much of a difference * on the overall total number of changes performed */ _economy.industry_daily_increment = (1 << map_size) / 31; if (init_counter) { /* A new game or a savegame from an older version will require the counter to be initialized */ _economy.industry_daily_change_counter = 0; } } void StartupEconomy() { _economy.interest_rate = _settings_game.difficulty.initial_interest; _economy.infl_amount = _settings_game.difficulty.initial_interest; _economy.infl_amount_pr = max(0, _settings_game.difficulty.initial_interest - 1); _economy.fluct = GB(Random(), 0, 8) + 168; /* Set up prices */ RecomputePrices(); StartupIndustryDailyChanges(true); // As we are starting a new game, initialize the counter too } /** * Resets economy to initial values */ void InitializeEconomy() { _economy.inflation_prices = _economy.inflation_payment = 1 << 16; ClearCargoPickupMonitoring(); ClearCargoDeliveryMonitoring(); } /** * Determine a certain price * @param index Price base * @param cost_factor Price factor * @param grf_file NewGRF to use local price multipliers from. * @param shift Extra bit shifting after the computation * @return Price */ Money GetPrice(Price index, uint cost_factor, const GRFFile *grf_file, int shift) { if (index >= PR_END) return 0; Money cost = _price[index] * cost_factor; if (grf_file != NULL) shift += grf_file->price_base_multipliers[index]; if (shift >= 0) { cost <<= shift; } else { cost >>= -shift; } return cost; } Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, CargoID cargo_type) { const CargoSpec *cs = CargoSpec::Get(cargo_type); if (!cs->IsValid()) { /* User changed newgrfs and some vehicle still carries some cargo which is no longer available. */ return 0; } /* Use callback to calculate cargo profit, if available */ if (HasBit(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) { uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (transit_days << 24); uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs); if (callback != CALLBACK_FAILED) { int result = GB(callback, 0, 14); /* Simulate a 15 bit signed value */ if (HasBit(callback, 14)) result -= 0x4000; /* "The result should be a signed multiplier that gets multiplied * by the amount of cargo moved and the price factor, then gets * divided by 8192." */ return result * num_pieces * cs->current_payment / 8192; } } static const int MIN_TIME_FACTOR = 31; static const int MAX_TIME_FACTOR = 255; const int days1 = cs->transit_days[0]; const int days2 = cs->transit_days[1]; const int days_over_days1 = max( transit_days - days1, 0); const int days_over_days2 = max(days_over_days1 - days2, 0); /* * The time factor is calculated based on the time it took * (transit_days) compared two cargo-depending values. The * range is divided into three parts: * * - constant for fast transits * - linear decreasing with time with a slope of -1 for medium transports * - linear decreasing with time with a slope of -2 for slow transports * */ const int time_factor = max(MAX_TIME_FACTOR - days_over_days1 - days_over_days2, MIN_TIME_FACTOR); return BigMulS(dist * time_factor * num_pieces, cs->current_payment, 21); } /** The industries we've currently brought cargo to. */ static SmallIndustryList _cargo_delivery_destinations; /** * Transfer goods from station to industry. * All cargo is delivered to the nearest (Manhattan) industry to the station sign, which is inside the acceptance rectangle and actually accepts the cargo. * @param st The station that accepted the cargo * @param cargo_type Type of cargo delivered * @param num_pieces Amount of cargo delivered * @param source The source of the cargo * @return actually accepted pieces of cargo */ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint num_pieces, IndustryID source) { /* Find the nearest industrytile to the station sign inside the catchment area, whose industry accepts the cargo. * This fails in three cases: * 1) The station accepts the cargo because there are enough houses around it accepting the cargo. * 2) The industries in the catchment area temporarily reject the cargo, and the daily station loop has not yet updated station acceptance. * 3) The results of callbacks CBID_INDUSTRY_REFUSE_CARGO and CBID_INDTILE_CARGO_ACCEPTANCE are inconsistent. (documented behaviour) */ uint accepted = 0; for (uint i = 0; i < st->industries_near.Length() && num_pieces != 0; i++) { Industry *ind = st->industries_near[i]; if (ind->index == source) continue; uint cargo_index; for (cargo_index = 0; cargo_index < lengthof(ind->accepts_cargo); cargo_index++) { if (cargo_type == ind->accepts_cargo[cargo_index]) break; } /* Check if matching cargo has been found */ if (cargo_index >= lengthof(ind->accepts_cargo)) continue; /* Check if industry temporarily refuses acceptance */ if (IndustryTemporarilyRefusesCargo(ind, cargo_type)) continue; /* Insert the industry into _cargo_delivery_destinations, if not yet contained */ _cargo_delivery_destinations.Include(ind); uint amount = min(num_pieces, 0xFFFFU - ind->incoming_cargo_waiting[cargo_index]); ind->incoming_cargo_waiting[cargo_index] += amount; num_pieces -= amount; accepted += amount; } return accepted; } /** * Delivers goods to industries/towns and calculates the payment * @param num_pieces amount of cargo delivered * @param cargo_type the type of cargo that is delivered * @param dest Station the cargo has been unloaded * @param source_tile The origin of the cargo for distance calculation * @param days_in_transit Travel time * @param company The company delivering the cargo * @param src_type Type of source of cargo (industry, town, headquarters) * @param src Index of source of cargo * @return Revenue for delivering cargo * @note The cargo is just added to the stockpile of the industry. It is due to the caller to trigger the industry's production machinery */ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, TileIndex source_tile, byte days_in_transit, Company *company, SourceType src_type, SourceID src) { assert(num_pieces > 0); Station *st = Station::Get(dest); /* Give the goods to the industry. */ uint accepted = DeliverGoodsToIndustry(st, cargo_type, num_pieces, src_type == ST_INDUSTRY ? src : INVALID_INDUSTRY); /* If this cargo type is always accepted, accept all */ if (HasBit(st->always_accepted, cargo_type)) accepted = num_pieces; /* Update station statistics */ if (accepted > 0) { SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_EVER_ACCEPTED); SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH); SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK); } /* Update company statistics */ company->cur_economy.delivered_cargo[cargo_type] += accepted; /* Increase town's counter for town effects */ const CargoSpec *cs = CargoSpec::Get(cargo_type); st->town->received[cs->town_effect].new_act += accepted; /* Determine profit */ Money profit = GetTransportedGoodsIncome(accepted, DistanceManhattan(source_tile, st->xy), days_in_transit, cargo_type); /* Update the cargo monitor. */ AddCargoDelivery(cargo_type, company->index, accepted, src_type, src, st); /* Modify profit if a subsidy is in effect */ if (CheckSubsidised(cargo_type, company->index, src_type, src, st)) { switch (_settings_game.difficulty.subsidy_multiplier) { case 0: profit += profit >> 1; break; case 1: profit *= 2; break; case 2: profit *= 3; break; default: profit *= 4; break; } } return profit; } /** * Inform the industry about just delivered cargo * DeliverGoodsToIndustry() silently incremented incoming_cargo_waiting, now it is time to do something with the new cargo. * @param i The industry to process */ static void TriggerIndustryProduction(Industry *i) { const IndustrySpec *indspec = GetIndustrySpec(i->type); uint16 callback = indspec->callback_mask; i->was_cargo_delivered = true; i->last_cargo_accepted_at = _date; if (HasBit(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(callback, CBM_IND_PRODUCTION_256_TICKS)) { if (HasBit(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) { IndustryProductionCallback(i, 0); } else { SetWindowDirty(WC_INDUSTRY_VIEW, i->index); } } else { for (uint cargo_index = 0; cargo_index < lengthof(i->incoming_cargo_waiting); cargo_index++) { uint cargo_waiting = i->incoming_cargo_waiting[cargo_index]; if (cargo_waiting == 0) continue; i->produced_cargo_waiting[0] = min(i->produced_cargo_waiting[0] + (cargo_waiting * indspec->input_cargo_multiplier[cargo_index][0] / 256), 0xFFFF); i->produced_cargo_waiting[1] = min(i->produced_cargo_waiting[1] + (cargo_waiting * indspec->input_cargo_multiplier[cargo_index][1] / 256), 0xFFFF); i->incoming_cargo_waiting[cargo_index] = 0; } } TriggerIndustry(i, INDUSTRY_TRIGGER_RECEIVED_CARGO); StartStopIndustryTileAnimation(i, IAT_INDUSTRY_RECEIVED_CARGO); } /** * Makes us a new cargo payment helper. * @param front The front of the train */ CargoPayment::CargoPayment(Vehicle *front) : front(front), current_station(front->last_station_visited) { } CargoPayment::~CargoPayment() { if (this->CleaningPool()) return; this->front->cargo_payment = NULL; if (this->visual_profit == 0) return; Backup cur_company(_current_company, this->front->owner, FILE_LINE); SubtractMoneyFromCompany(CommandCost(this->front->GetExpenseType(true), -this->route_profit)); this->front->profit_this_year += this->visual_profit << 8; if (this->route_profit != 0) { if (IsLocalCompany() && !PlayVehicleSound(this->front, VSE_LOAD_UNLOAD)) { SndPlayVehicleFx(SND_14_CASHTILL, this->front); } ShowCostOrIncomeAnimation(this->front->x_pos, this->front->y_pos, this->front->z_pos, -this->visual_profit); } else { ShowFeederIncomeAnimation(this->front->x_pos, this->front->y_pos, this->front->z_pos, this->visual_profit); } cur_company.Restore(); } /** * Handle payment for final delivery of the given cargo packet. * @param cp The cargo packet to pay for. * @param count The number of packets to pay for. */ void CargoPayment::PayFinalDelivery(const CargoPacket *cp, uint count) { if (this->owner == NULL) { this->owner = Company::Get(this->front->owner); } /* Handle end of route payment */ Money profit = DeliverGoods(count, this->ct, this->current_station, cp->SourceStationXY(), cp->DaysInTransit(), this->owner, cp->SourceSubsidyType(), cp->SourceSubsidyID()); this->route_profit += profit; /* The vehicle's profit is whatever route profit there is minus feeder shares. */ this->visual_profit += profit - cp->FeederShare(); } /** * Handle payment for transfer of the given cargo packet. * @param cp The cargo packet to pay for; actual payment won't be made!. * @param count The number of packets to pay for. * @return The amount of money paid for the transfer. */ Money CargoPayment::PayTransfer(const CargoPacket *cp, uint count) { Money profit = GetTransportedGoodsIncome( count, /* pay transfer vehicle for only the part of transfer it has done: ie. cargo_loaded_at_xy to here */ DistanceManhattan(cp->LoadedAtXY(), Station::Get(this->current_station)->xy), cp->DaysInTransit(), this->ct); profit = profit * _settings_game.economy.feeder_payment_share / 100; this->visual_profit += profit; // accumulate transfer profits for whole vehicle return profit; // account for the (virtual) profit already made for the cargo packet } /** * Prepare the vehicle to be unloaded. * @param front_v the vehicle to be unloaded */ void PrepareUnload(Vehicle *front_v) { /* At this moment loading cannot be finished */ ClrBit(front_v->vehicle_flags, VF_LOADING_FINISHED); /* Start unloading in at the first possible moment */ front_v->load_unload_ticks = 1; if ((front_v->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { for (Vehicle *v = front_v; v != NULL; v = v->Next()) { if (v->cargo_cap > 0 && !v->cargo.Empty()) { SetBit(v->vehicle_flags, VF_CARGO_UNLOADING); } } } assert(front_v->cargo_payment == NULL); /* One CargoPayment per vehicle and the vehicle limit equals the * limit in number of CargoPayments. Can't go wrong. */ assert_compile(CargoPaymentPool::MAX_SIZE == VehiclePool::MAX_SIZE); assert(CargoPayment::CanAllocateItem()); front_v->cargo_payment = new CargoPayment(front_v); } /** * Checks whether an articulated vehicle is empty. * @param v Vehicle * @return true if all parts are empty. */ static bool IsArticulatedVehicleEmpty(Vehicle *v) { v = v->GetFirstEnginePart(); for (; v != NULL; v = v->HasArticulatedPart() ? v->GetNextArticulatedPart() : NULL) { if (v->cargo.Count() != 0) return false; } return true; } /** * Loads/unload the vehicle if possible. * @param front the vehicle to be (un)loaded * @param cargo_left the amount of each cargo type that is * virtually left on the platform to be * picked up by another vehicle when all * previous vehicles have loaded. */ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left) { assert(front->current_order.IsType(OT_LOADING)); /* We have not waited enough time till the next round of loading/unloading */ if (front->load_unload_ticks != 0) { if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) { /* 'Reserve' this cargo for this vehicle, because we were first. */ for (Vehicle *v = front; v != NULL; v = v->Next()) { int cap_left = v->cargo_cap; if (!HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) cap_left -= v->cargo.Count(); if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left; } } return; } StationID last_visited = front->last_station_visited; Station *st = Station::Get(last_visited); if (front->type == VEH_TRAIN && (!IsTileType(front->tile, MP_STATION) || GetStationIndex(front->tile) != st->index)) { /* The train reversed in the station. Take the "easy" way * out and let the train just leave as it always did. */ SetBit(front->vehicle_flags, VF_LOADING_FINISHED); front->load_unload_ticks = 1; return; } bool use_autorefit = front->current_order.IsRefit() && front->current_order.GetRefitCargo() == CT_AUTO_REFIT; CargoArray consist_capleft; if (use_autorefit) { /* Sum cargo, that can be loaded without refitting */ for (Vehicle *v = front; v != NULL; v = v->Next()) { int cap_left = v->cargo_cap - v->cargo.Count(); if (cap_left > 0) consist_capleft[v->cargo_type] += cap_left; } } int unloading_time = 0; bool dirty_vehicle = false; bool dirty_station = false; bool completely_emptied = true; bool anything_unloaded = false; bool anything_loaded = false; uint32 full_load_amount = 0; uint32 cargo_not_full = 0; uint32 cargo_full = 0; uint32 reservation_left = 0; front->cur_speed = 0; CargoPayment *payment = front->cargo_payment; uint artic_part = 0; // Articulated part we are currently trying to load. (not counting parts without capacity) for (Vehicle *v = front; v != NULL; v = v->Next()) { if (v == front || !v->Previous()->HasArticulatedPart()) artic_part = 0; if (v->cargo_cap == 0) continue; artic_part++; const Engine *e = v->GetEngine(); uint load_amount = e->info.load_amount; /* The default loadamount for mail is 1/4 of the load amount for passengers */ bool air_mail = v->type == VEH_AIRCRAFT && !Aircraft::From(v)->IsNormalAircraft(); if (air_mail) load_amount = CeilDiv(load_amount, 4); if (_settings_game.order.gradual_loading) { uint16 cb_load_amount = CALLBACK_FAILED; if (e->GetGRF() != NULL && e->GetGRF()->grf_version >= 8) { /* Use callback 36 */ cb_load_amount = GetVehicleProperty(v, PROP_VEHICLE_LOAD_AMOUNT, CALLBACK_FAILED); } else if (HasBit(e->info.callback_mask, CBM_VEHICLE_LOAD_AMOUNT)) { /* Use callback 12 */ cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v); } if (cb_load_amount != CALLBACK_FAILED) { if (e->GetGRF()->grf_version < 8) cb_load_amount = GB(cb_load_amount, 0, 8); if (cb_load_amount >= 0x100) { ErrorUnknownCallbackResult(e->GetGRFID(), CBID_VEHICLE_LOAD_AMOUNT, cb_load_amount); } else if (cb_load_amount != 0) { load_amount = cb_load_amount; } } } /* Scale load amount the same as capacity */ if (HasBit(e->info.misc_flags, EF_NO_DEFAULT_CARGO_MULTIPLIER) && !air_mail) load_amount = CeilDiv(load_amount * CargoSpec::Get(v->cargo_type)->multiplier, 0x100); GoodsEntry *ge = &st->goods[v->cargo_type]; if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (front->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { uint cargo_count = v->cargo.Count(); uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count; bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here? bool accepted = false; // Is the cargo accepted by the station? payment->SetCargo(v->cargo_type); if (HasBit(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE) && !(front->current_order.GetUnloadType() & OUFB_TRANSFER)) { /* The cargo has reached its final destination, the packets may now be destroyed */ remaining = v->cargo.MoveTo(NULL, amount_unloaded, VehicleCargoList::MTA_FINAL_DELIVERY, payment, last_visited); dirty_vehicle = true; accepted = true; } /* The !accepted || v->cargo.Count == cargo_count clause is there * to make it possible to force unload vehicles at the station where * they were loaded, but to not force unload the vehicle when the * station is still accepting the cargo in the vehicle. It doesn't * accept cargo that was loaded at the same station. */ if ((front->current_order.GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) && (!accepted || v->cargo.Count() == cargo_count)) { remaining = v->cargo.MoveTo(&ge->cargo, amount_unloaded, front->current_order.GetUnloadType() & OUFB_TRANSFER ? VehicleCargoList::MTA_TRANSFER : VehicleCargoList::MTA_UNLOAD, payment); if (!HasBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP)) { SetBit(ge->acceptance_pickup, GoodsEntry::GES_PICKUP); InvalidateWindowData(WC_STATION_LIST, last_visited); } dirty_vehicle = dirty_station = true; } else if (!accepted) { /* The order changed while unloading (unset unload/transfer) or the * station does not accept our goods. */ ClrBit(v->vehicle_flags, VF_CARGO_UNLOADING); /* Say we loaded something, otherwise we'll think we didn't unload * something and we didn't load something, so we must be finished * at this station. Setting the unloaded means that we will get a * retry for loading in the next cycle. */ anything_unloaded = true; continue; } /* Deliver goods to the station */ st->time_since_unload = 0; unloading_time += amount_unloaded; anything_unloaded = true; if (_settings_game.order.gradual_loading && remaining) { completely_emptied = false; } else { /* We have finished unloading (cargo count == 0) */ ClrBit(v->vehicle_flags, VF_CARGO_UNLOADING); } continue; } /* Do not pick up goods when we have no-load set or loading is stopped. */ if (front->current_order.GetLoadType() & OLFB_NO_LOAD || HasBit(front->vehicle_flags, VF_STOP_LOADING)) continue; /* This order has a refit, if this is the first vehicle part carrying cargo and the whole vehicle is empty, try refitting. */ if (front->current_order.IsRefit() && artic_part == 1 && IsArticulatedVehicleEmpty(v) && (v->type != VEH_AIRCRAFT || (Aircraft::From(v)->IsNormalAircraft() && v->Next()->cargo.Count() == 0))) { Vehicle *v_start = v->GetFirstEnginePart(); CargoID new_cid = front->current_order.GetRefitCargo(); byte new_subtype = front->current_order.GetRefitSubtype(); /* Remove old capacity from consist capacity */ consist_capleft[v_start->cargo_type] -= v_start->cargo_cap; for (Vehicle *w = v_start; w->HasArticulatedPart(); ) { w = w->GetNextArticulatedPart(); consist_capleft[w->cargo_type] -= w->cargo_cap; } Backup cur_company(_current_company, front->owner, FILE_LINE); /* Check if all articulated parts are empty and collect refit mask. */ uint32 refit_mask = e->info.refit_mask; Vehicle *w = v_start; while (w->HasArticulatedPart()) { w = w->GetNextArticulatedPart(); if (w->cargo.Count() > 0) new_cid = CT_NO_REFIT; refit_mask |= EngInfo(w->engine_type)->refit_mask; } if (new_cid == CT_AUTO_REFIT) { /* Get refittable cargo type with the most waiting cargo. */ int amount = 0; CargoID cid; FOR_EACH_SET_CARGO_ID(cid, refit_mask) { /* Consider refitting to this cargo, if other vehicles of the consist cannot * already take the cargo without refitting */ if (cargo_left[cid] > (int)consist_capleft[cid] + amount) { /* Try to find out if auto-refitting would succeed. In case the refit is allowed, * the returned refit capacity will be greater than zero. */ new_subtype = GetBestFittingSubType(v, v, cid); DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | new_subtype << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. if (_returned_refit_capacity > 0) { amount = cargo_left[cid] - consist_capleft[cid]; new_cid = cid; } } } } /* Refit if given a valid cargo. */ if (new_cid < NUM_CARGO) { CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | new_subtype << 8 | 1U << 16, DC_EXEC, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts. if (cost.Succeeded()) front->profit_this_year -= cost.GetCost() << 8; ge = &st->goods[v->cargo_type]; } /* Add new capacity to consist capacity */ consist_capleft[v_start->cargo_type] += v_start->cargo_cap; for (Vehicle *w = v_start; w->HasArticulatedPart(); ) { w = w->GetNextArticulatedPart(); consist_capleft[w->cargo_type] += w->cargo_cap; } cur_company.Restore(); } /* update stats */ int t; switch (front->type) { case VEH_TRAIN: /* FALL THROUGH */ case VEH_SHIP: t = front->vcache.cached_max_speed; break; case VEH_ROAD: t = front->vcache.cached_max_speed / 2; break; case VEH_AIRCRAFT: t = Aircraft::From(front)->GetSpeedOldUnits(); // Convert to old units. break; default: NOT_REACHED(); } /* if last speed is 0, we treat that as if no vehicle has ever visited the station. */ ge->last_speed = min(t, 255); ge->last_age = min(_cur_year - front->build_year, 255); ge->time_since_pickup = 0; /* If there's goods waiting at the station, and the vehicle * has capacity for it, load it on the vehicle. */ int cap_left = v->cargo_cap - v->cargo.Count(); if (!ge->cargo.Empty() && cap_left > 0) { uint cap = cap_left; uint count = ge->cargo.Count(); /* Skip loading this vehicle if another train/vehicle is already handling * the same cargo type at this station */ if (_settings_game.order.improved_load && cargo_left[v->cargo_type] <= 0) { SetBit(cargo_not_full, v->cargo_type); continue; } if (cap > count) cap = count; if (_settings_game.order.gradual_loading) { cap = min(cap, load_amount); cap_left = min(cap_left, load_amount); } if (_settings_game.order.improved_load) { /* Don't load stuff that is already 'reserved' for other vehicles */ cap = min((uint)cargo_left[v->cargo_type], cap); count = cargo_left[v->cargo_type]; if (use_autorefit) { /* When using autorefit, reserve all cargo for this wagon to prevent other wagons * from feeling the need to refit. */ uint total_cap_left = v->cargo_cap - v->cargo.Count(); cargo_left[v->cargo_type] -= total_cap_left; consist_capleft[v->cargo_type] -= total_cap_left; if (total_cap_left > cap && count > cap) { /* Remember if there are reservations left so that we don't stop * loading before they're loaded. */ SetBit(reservation_left, v->cargo_type); } } else { /* Update cargo left; but don't reserve everything yet, so other wagons * of the same consist load in parallel. */ cargo_left[v->cargo_type] -= cap; } } /* Store whether the maximum possible load amount was loaded or not.*/ if (count >= (uint)cap_left) { SetBit(full_load_amount, v->cargo_type); } else { ClrBit(full_load_amount, v->cargo_type); } if (v->cargo.Empty()) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO); /* TODO: Regarding this, when we do gradual loading, we * should first unload all vehicles and then start * loading them. Since this will cause * VEHICLE_TRIGGER_EMPTY to be called at the time when * the whole vehicle chain is really totally empty, the * completely_emptied assignment can then be safely * removed; that's how TTDPatch behaves too. --pasky */ completely_emptied = false; anything_loaded = true; ge->cargo.MoveTo(&v->cargo, cap, StationCargoList::MTA_CARGO_LOAD, NULL, st->xy); st->time_since_load = 0; st->last_vehicle_type = v->type; if (ge->cargo.Empty()) { TriggerStationRandomisation(st, st->xy, SRT_CARGO_TAKEN, v->cargo_type); TriggerStationAnimation(st, st->xy, SAT_CARGO_TAKEN, v->cargo_type); AirportAnimationTrigger(st, AAT_STATION_CARGO_TAKEN, v->cargo_type); } unloading_time += cap; dirty_vehicle = dirty_station = true; } if (v->cargo.Count() >= v->cargo_cap) { SetBit(cargo_full, v->cargo_type); } else { SetBit(cargo_not_full, v->cargo_type); } } if (anything_loaded || anything_unloaded) { if (front->type == VEH_TRAIN) { TriggerStationRandomisation(st, front->tile, SRT_TRAIN_LOADS); TriggerStationAnimation(st, front->tile, SAT_TRAIN_LOADS); } } /* Only set completely_emptied, if we just unloaded all remaining cargo */ completely_emptied &= anything_unloaded; /* For consists without autorefit-order we adjust the reserved cargo at the station after loading, * so that all wagons start loading if the consist is the first consist. * * If we use autorefit otoh, we only want to load/refit a vehicle if the other wagons cannot already hold the cargo, * to keep the option to still refit the vehicle when new cargo of different type shows up. */ if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) { /* Update left cargo */ for (Vehicle *v = front; v != NULL; v = v->Next()) { int cap_left = v->cargo_cap; if (!HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) { if (use_autorefit) { continue; } else { cap_left -= v->cargo.Count(); } } if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left; } } if (!anything_unloaded) delete payment; ClrBit(front->vehicle_flags, VF_STOP_LOADING); if (anything_loaded || anything_unloaded) { if (_settings_game.order.gradual_loading) { /* The time it takes to load one 'slice' of cargo or passengers depends * on the vehicle type - the values here are those found in TTDPatch */ const uint gradual_loading_wait_time[] = { 40, 20, 10, 20 }; unloading_time = gradual_loading_wait_time[front->type]; } /* We loaded less cargo than possible for all cargo types and it's not full * load and we're not supposed to wait any longer: stop loading. */ if (!anything_unloaded && full_load_amount == 0 && reservation_left == 0 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) && front->current_order_time >= (uint)max(front->current_order.wait_time - front->lateness_counter, 0)) { SetBit(front->vehicle_flags, VF_STOP_LOADING); } } else { bool finished_loading = true; if (front->current_order.GetLoadType() & OLFB_FULL_LOAD) { if (front->current_order.GetLoadType() == OLF_FULL_LOAD_ANY) { /* if the aircraft carries passengers and is NOT full, then * continue loading, no matter how much mail is in */ if ((front->type == VEH_AIRCRAFT && IsCargoInClass(front->cargo_type, CC_PASSENGERS) && front->cargo_cap > front->cargo.Count()) || (cargo_not_full && (cargo_full & ~cargo_not_full) == 0)) { // There are still non-full cargoes finished_loading = false; } } else if (cargo_not_full != 0) { finished_loading = false; } } unloading_time = 20; SB(front->vehicle_flags, VF_LOADING_FINISHED, 1, finished_loading); } if (front->type == VEH_TRAIN) { /* Each platform tile is worth 2 rail vehicles. */ int overhang = front->GetGroundVehicleCache()->cached_total_length - st->GetPlatformLength(front->tile) * TILE_SIZE; if (overhang > 0) { unloading_time <<= 1; unloading_time += (overhang * unloading_time) / 8; } } /* Calculate the loading indicator fill percent and display * In the Game Menu do not display indicators * If _settings_client.gui.loading_indicators == 2, show indicators (bool can be promoted to int as 0 or 1 - results in 2 > 0,1 ) * if _settings_client.gui.loading_indicators == 1, _local_company must be the owner or must be a spectator to show ind., so 1 > 0 * if _settings_client.gui.loading_indicators == 0, do not display indicators ... 0 is never greater than anything */ if (_game_mode != GM_MENU && (_settings_client.gui.loading_indicators > (uint)(front->owner != _local_company && _local_company != COMPANY_SPECTATOR))) { StringID percent_up_down = STR_NULL; int percent = CalcPercentVehicleFilled(front, &percent_up_down); if (front->fill_percent_te_id == INVALID_TE_ID) { front->fill_percent_te_id = ShowFillingPercent(front->x_pos, front->y_pos, front->z_pos + 20, percent, percent_up_down); } else { UpdateFillingPercent(front->fill_percent_te_id, percent, percent_up_down); } } /* Always wait at least 1, otherwise we'll wait 'infinitively' long. */ front->load_unload_ticks = max(1, unloading_time); if (completely_emptied) { /* Make sure the vehicle is marked dirty, since we need to update the NewGRF * properties such as weight, power and TE whenever the trigger runs. */ dirty_vehicle = true; TriggerVehicle(front, VEHICLE_TRIGGER_EMPTY); } if (dirty_vehicle) { SetWindowDirty(GetWindowClassForVehicleType(front->type), front->owner); SetWindowDirty(WC_VEHICLE_DETAILS, front->index); front->MarkDirty(); } if (dirty_station) { st->MarkTilesDirty(true); SetWindowDirty(WC_STATION_VIEW, last_visited); } } /** * Load/unload the vehicles in this station according to the order * they entered. * @param st the station to do the loading/unloading for */ void LoadUnloadStation(Station *st) { /* No vehicle is here... */ if (st->loading_vehicles.empty()) return; Vehicle *last_loading = NULL; std::list::iterator iter; /* Check if anything will be loaded at all. Otherwise we don't need to reserve either. */ for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end(); ++iter) { Vehicle *v = *iter; if ((v->vehstatus & (VS_STOPPED | VS_CRASHED))) continue; assert(v->load_unload_ticks != 0); if (--v->load_unload_ticks == 0) last_loading = v; } /* We only need to reserve and load/unload up to the last loading vehicle. * Anything else will be forgotten anyway after returning from this function. * * Especially this means we do _not_ need to reserve cargo for a single * consist in a station which is not allowed to load yet because its * load_unload_ticks is still not 0. */ if (last_loading == NULL) return; int cargo_left[NUM_CARGO]; for (uint i = 0; i < NUM_CARGO; i++) cargo_left[i] = st->goods[i].cargo.Count(); for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end(); ++iter) { Vehicle *v = *iter; if (!(v->vehstatus & (VS_STOPPED | VS_CRASHED))) LoadUnloadVehicle(v, cargo_left); if (v == last_loading) break; } /* Call the production machinery of industries */ const Industry * const *isend = _cargo_delivery_destinations.End(); for (Industry **iid = _cargo_delivery_destinations.Begin(); iid != isend; iid++) { TriggerIndustryProduction(*iid); } _cargo_delivery_destinations.Clear(); } /** * Monthly update of the economic data (of the companies as well as economic fluctuations). */ void CompaniesMonthlyLoop() { CompaniesGenStatistics(); if (_settings_game.economy.inflation) { AddInflation(); RecomputePrices(); } CompaniesPayInterest(); HandleEconomyFluctuations(); } static void DoAcquireCompany(Company *c) { CompanyID ci = c->index; CompanyNewsInformation *cni = MallocT(1); cni->FillData(c, Company::Get(_current_company)); SetDParam(0, STR_NEWS_COMPANY_MERGER_TITLE); SetDParam(1, c->bankrupt_value == 0 ? STR_NEWS_MERGER_TAKEOVER_TITLE : STR_NEWS_COMPANY_MERGER_DESCRIPTION); SetDParamStr(2, cni->company_name); SetDParamStr(3, cni->other_company_name); SetDParam(4, c->bankrupt_value); AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, cni); AI::BroadcastNewEvent(new ScriptEventCompanyMerger(ci, _current_company)); Game::NewEvent(new ScriptEventCompanyMerger(ci, _current_company)); ChangeOwnershipOfCompanyItems(ci, _current_company); if (c->bankrupt_value == 0) { Company *owner = Company::Get(_current_company); owner->current_loan += c->current_loan; } if (c->is_ai) AI::Stop(c->index); DeleteCompanyWindows(ci); InvalidateWindowClassesData(WC_TRAINS_LIST, 0); InvalidateWindowClassesData(WC_SHIPS_LIST, 0); InvalidateWindowClassesData(WC_ROADVEH_LIST, 0); InvalidateWindowClassesData(WC_AIRCRAFT_LIST, 0); delete c; } extern int GetAmountOwnedBy(const Company *c, Owner owner); /** * Acquire shares in an opposing company. * @param tile unused * @param flags type of operation * @param p1 company to buy the shares from * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CommandCost cost(EXPENSES_OTHER); CompanyID target_company = (CompanyID)p1; Company *c = Company::GetIfValid(target_company); /* Check if buying shares is allowed (protection against modified clients) * Cannot buy own shares */ if (c == NULL || !_settings_game.economy.allow_shares || _current_company == target_company) return CMD_ERROR; /* Protect new companies from hostile takeovers */ if (_cur_year - c->inaugurated_year < 6) return_cmd_error(STR_ERROR_PROTECTED); /* Those lines are here for network-protection (clients can be slow) */ if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 0) return cost; if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 1) { if (!c->is_ai) return cost; // We can not buy out a real company (temporarily). TODO: well, enable it obviously. if (GetAmountOwnedBy(c, _current_company) == 3 && !MayCompanyTakeOver(_current_company, target_company)) return_cmd_error(STR_ERROR_TOO_MANY_VEHICLES_IN_GAME); } cost.AddCost(CalculateCompanyValue(c) >> 2); if (flags & DC_EXEC) { OwnerByte *b = c->share_owners; while (*b != COMPANY_SPECTATOR) b++; // share owners is guaranteed to contain at least one COMPANY_SPECTATOR *b = _current_company; for (int i = 0; c->share_owners[i] == _current_company;) { if (++i == 4) { c->bankrupt_value = 0; DoAcquireCompany(c); break; } } InvalidateWindowData(WC_COMPANY, target_company); CompanyAdminUpdate(c); } return cost; } /** * Sell shares in an opposing company. * @param tile unused * @param flags type of operation * @param p1 company to sell the shares from * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdSellShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CompanyID target_company = (CompanyID)p1; Company *c = Company::GetIfValid(target_company); /* Cannot sell own shares */ if (c == NULL || _current_company == target_company) return CMD_ERROR; /* Check if selling shares is allowed (protection against modified clients). * However, we must sell shares of companies being closed down. */ if (!_settings_game.economy.allow_shares && !(flags & DC_BANKRUPT)) return CMD_ERROR; /* Those lines are here for network-protection (clients can be slow) */ if (GetAmountOwnedBy(c, _current_company) == 0) return CommandCost(); /* adjust it a little to make it less profitable to sell and buy */ Money cost = CalculateCompanyValue(c) >> 2; cost = -(cost - (cost >> 7)); if (flags & DC_EXEC) { OwnerByte *b = c->share_owners; while (*b != _current_company) b++; // share owners is guaranteed to contain company *b = COMPANY_SPECTATOR; InvalidateWindowData(WC_COMPANY, target_company); CompanyAdminUpdate(c); } return CommandCost(EXPENSES_OTHER, cost); } /** * Buy up another company. * When a competing company is gone bankrupt you get the chance to purchase * that company. * @todo currently this only works for AI companies * @param tile unused * @param flags type of operation * @param p1 company to buy up * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdBuyCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CompanyID target_company = (CompanyID)p1; Company *c = Company::GetIfValid(target_company); if (c == NULL) return CMD_ERROR; /* Disable takeovers when not asked */ if (!HasBit(c->bankrupt_asked, _current_company)) return CMD_ERROR; /* Disable taking over the local company in single player */ if (!_networking && _local_company == c->index) return CMD_ERROR; /* Do not allow companies to take over themselves */ if (target_company == _current_company) return CMD_ERROR; /* Disable taking over when not allowed. */ if (!MayCompanyTakeOver(_current_company, target_company)) return CMD_ERROR; /* Get the cost here as the company is deleted in DoAcquireCompany. */ CommandCost cost(EXPENSES_OTHER, c->bankrupt_value); if (flags & DC_EXEC) { DoAcquireCompany(c); } return cost; } openttd-1.3.3/src/vehicle_gui.h0000644000000000000000000001052012246102611015105 0ustar rootroot/* $Id: vehicle_gui.h 24839 2012-12-23 01:00:25Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file vehicle_gui.h Functions related to the vehicle's GUIs. */ #ifndef VEHICLE_GUI_H #define VEHICLE_GUI_H #include "window_type.h" #include "vehicle_type.h" #include "order_type.h" #include "station_type.h" #include "engine_type.h" #include "company_type.h" void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order, Window *parent, bool auto_refit = false); /** The tabs in the train details window */ enum TrainDetailsWindowTabs { TDW_TAB_CARGO = 0, ///< Tab with cargo carried by the vehicles TDW_TAB_INFO, ///< Tab with name and value of the vehicles TDW_TAB_CAPACITY, ///< Tab with cargo capacity of the vehicles TDW_TAB_TOTALS, ///< Tab with sum of total cargo transported }; /** Special values for vehicle-related windows for the data parameter of #InvalidateWindowData. */ enum VehicleInvalidateWindowData { VIWD_REMOVE_ALL_ORDERS = -1, ///< Removed / replaced all orders (after deleting / sharing). VIWD_MODIFY_ORDERS = -2, ///< Other order modifications. VIWD_CONSIST_CHANGED = -3, ///< Vehicle composition was changed. VIWD_AUTOREPLACE = -4, ///< Autoreplace replaced the vehicle. }; int DrawVehiclePurchaseInfo(int left, int right, int y, EngineID engine_number); void DrawTrainImage(const Train *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip, VehicleID drag_dest = INVALID_VEHICLE); void DrawRoadVehImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip = 0); void DrawShipImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type); void DrawAircraftImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type); void ShowBuildVehicleWindow(TileIndex tile, VehicleType type); uint ShowRefitOptionsList(int left, int right, int y, EngineID engine); StringID GetCargoSubtypeText(const Vehicle *v); void ShowVehicleListWindow(const Vehicle *v); void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type); void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station); void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, TileIndex depot_tile); /** * Get the height of a single vehicle in the GUIs. * @param type the vehicle type to look at * @return the height */ static inline uint GetVehicleHeight(VehicleType type) { return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24; } int GetVehicleWidth(Vehicle *v, EngineImageType image_type); /** Dimensions of a cell in the purchase/depot windows. */ struct VehicleCellSize { uint height; ///< Vehicle cell height. uint extend_left; ///< Extend of the cell to the left. uint extend_right; ///< Extend of the cell to the right. }; VehicleCellSize GetVehicleImageCellSize(VehicleType type, EngineImageType image_type); /** * Get WindowClass for vehicle list of given vehicle type * @param vt vehicle type to check * @return corresponding window class * @note works only for company buildable vehicle types */ static inline WindowClass GetWindowClassForVehicleType(VehicleType vt) { switch (vt) { default: NOT_REACHED(); case VEH_TRAIN: return WC_TRAINS_LIST; case VEH_ROAD: return WC_ROADVEH_LIST; case VEH_SHIP: return WC_SHIPS_LIST; case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST; } } /* Unified window procedure */ void ShowVehicleViewWindow(const Vehicle *v); bool VehicleClicked(const Vehicle *v); void StartStopVehicle(const Vehicle *v, bool texteffect); Vehicle *CheckClickOnVehicle(const struct ViewPort *vp, int x, int y); void DrawVehicleImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip); #endif /* VEHICLE_GUI_H */ openttd-1.3.3/src/house_type.h0000644000000000000000000000162112246102611015010 0ustar rootroot/* $Id: house_type.h 22411 2011-05-02 17:42:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file house_type.h declaration of basic house types and enums */ #ifndef HOUSE_TYPE_H #define HOUSE_TYPE_H typedef uint16 HouseID; ///< OpenTTD ID of house types. typedef uint16 HouseClassID; ///< Classes of houses. struct HouseSpec; #endif /* HOUSE_TYPE_H */ openttd-1.3.3/src/window_gui.h0000644000000000000000000010155112246102611015002 0ustar rootroot/* $Id: window_gui.h 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file window_gui.h Functions, definitions and such used only by the GUI. */ #ifndef WINDOW_GUI_H #define WINDOW_GUI_H #include "vehicle_type.h" #include "viewport_type.h" #include "company_type.h" #include "tile_type.h" #include "widget_type.h" #include "core/smallvec_type.hpp" #include "core/smallmap_type.hpp" #include "string_type.h" /** State of handling an event. */ enum EventState { ES_HANDLED, ///< The passed event is handled. ES_NOT_HANDLED, ///< The passed event is not handled. }; /** * Flags to describe the look of the frame */ enum FrameFlags { FR_NONE = 0, FR_TRANSPARENT = 1 << 0, ///< Makes the background transparent if set FR_BORDERONLY = 1 << 4, ///< Draw border only, no background FR_LOWERED = 1 << 5, ///< If set the frame is lowered and the background colour brighter (ie. buttons when pressed) FR_DARKENED = 1 << 6, ///< If set the background is darker, allows for lowered frames with normal background colour when used with FR_LOWERED (ie. dropdown boxes) }; DECLARE_ENUM_AS_BIT_SET(FrameFlags) /** Distances used in drawing widgets. */ enum WidgetDrawDistances { /* WWT_IMGBTN(_2) */ WD_IMGBTN_LEFT = 1, ///< Left offset of the image in the button. WD_IMGBTN_RIGHT = 2, ///< Right offset of the image in the button. WD_IMGBTN_TOP = 1, ///< Top offset of image in the button. WD_IMGBTN_BOTTOM = 2, ///< Bottom offset of image in the button. /* WWT_INSET */ WD_INSET_LEFT = 2, ///< Left offset of string. WD_INSET_RIGHT = 2, ///< Right offset of string. WD_INSET_TOP = 1, ///< Top offset of string. WD_SCROLLBAR_LEFT = 2, ///< Left offset of scrollbar. WD_SCROLLBAR_RIGHT = 2, ///< Right offset of scrollbar. WD_SCROLLBAR_TOP = 2, ///< Top offset of scrollbar. WD_SCROLLBAR_BOTTOM = 2, ///< Bottom offset of scrollbar. /* Size of the pure frame bevel without any padding. */ WD_BEVEL_LEFT = 1, ///< Width of left bevel border. WD_BEVEL_RIGHT = 1, ///< Width of right bevel border. WD_BEVEL_TOP = 1, ///< Height of top bevel border. WD_BEVEL_BOTTOM = 1, ///< Height of bottom bevel border. /* FrameRect widgets, all text buttons, panel, editbox */ WD_FRAMERECT_LEFT = 2, ///< Offset at left to draw the frame rectangular area WD_FRAMERECT_RIGHT = 2, ///< Offset at right to draw the frame rectangular area WD_FRAMERECT_TOP = 1, ///< Offset at top to draw the frame rectangular area WD_FRAMERECT_BOTTOM = 1, ///< Offset at bottom to draw the frame rectangular area /* Extra space at top/bottom of text panels */ WD_TEXTPANEL_TOP = 6, ///< Offset at top to draw above the text WD_TEXTPANEL_BOTTOM = 6, ///< Offset at bottom to draw below the text /* WWT_FRAME */ WD_FRAMETEXT_LEFT = 6, ///< Left offset of the text of the frame. WD_FRAMETEXT_RIGHT = 6, ///< Right offset of the text of the frame. WD_FRAMETEXT_TOP = 6, ///< Top offset of the text of the frame WD_FRAMETEXT_BOTTOM = 6, ///< Bottom offset of the text of the frame /* WWT_MATRIX */ WD_MATRIX_LEFT = 2, ///< Offset at left of a matrix cell. WD_MATRIX_RIGHT = 2, ///< Offset at right of a matrix cell. WD_MATRIX_TOP = 3, ///< Offset at top of a matrix cell. WD_MATRIX_BOTTOM = 1, ///< Offset at bottom of a matrix cell. /* WWT_SHADEBOX */ WD_SHADEBOX_WIDTH = 12, ///< Width of a standard shade box widget. WD_SHADEBOX_LEFT = 2, ///< Left offset of shade sprite. WD_SHADEBOX_RIGHT = 2, ///< Right offset of shade sprite. WD_SHADEBOX_TOP = 3, ///< Top offset of shade sprite. WD_SHADEBOX_BOTTOM = 3, ///< Bottom offset of shade sprite. /* WWT_STICKYBOX */ WD_STICKYBOX_WIDTH = 12, ///< Width of a standard sticky box widget. WD_STICKYBOX_LEFT = 2, ///< Left offset of sticky sprite. WD_STICKYBOX_RIGHT = 2, ///< Right offset of sticky sprite. WD_STICKYBOX_TOP = 3, ///< Top offset of sticky sprite. WD_STICKYBOX_BOTTOM = 3, ///< Bottom offset of sticky sprite. /* WWT_DEBUGBOX */ WD_DEBUGBOX_WIDTH = 12, ///< Width of a standard debug box widget. WD_DEBUGBOX_LEFT = 2, ///< Left offset of debug sprite. WD_DEBUGBOX_RIGHT = 2, ///< Right offset of debug sprite. WD_DEBUGBOX_TOP = 3, ///< Top offset of debug sprite. WD_DEBUGBOX_BOTTOM = 3, ///< Bottom offset of debug sprite. /* WWT_RESIZEBOX */ WD_RESIZEBOX_WIDTH = 12, ///< Width of a resize box widget. WD_RESIZEBOX_LEFT = 3, ///< Left offset of resize sprite. WD_RESIZEBOX_RIGHT = 2, ///< Right offset of resize sprite. WD_RESIZEBOX_TOP = 3, ///< Top offset of resize sprite. WD_RESIZEBOX_BOTTOM = 2, ///< Bottom offset of resize sprite. /* WWT_CLOSEBOX */ WD_CLOSEBOX_WIDTH = 11, ///< Width of a close box widget. WD_CLOSEBOX_LEFT = 2, ///< Left offset of closebox string. WD_CLOSEBOX_RIGHT = 1, ///< Right offset of closebox string. WD_CLOSEBOX_TOP = 2, ///< Top offset of closebox string. WD_CLOSEBOX_BOTTOM = 2, ///< Bottom offset of closebox string. /* WWT_CAPTION */ WD_CAPTION_HEIGHT = 14, ///< Height of a title bar. WD_CAPTIONTEXT_LEFT = 2, ///< Offset of the caption text at the left. WD_CAPTIONTEXT_RIGHT = 2, ///< Offset of the caption text at the right. WD_CAPTIONTEXT_TOP = 2, ///< Offset of the caption text at the top. WD_CAPTIONTEXT_BOTTOM = 2, ///< Offset of the caption text at the bottom. /* Dropdown widget. */ WD_DROPDOWN_HEIGHT = 12, ///< Height of a drop down widget. WD_DROPDOWNTEXT_LEFT = 2, ///< Left offset of the dropdown widget string. WD_DROPDOWNTEXT_RIGHT = 2, ///< Right offset of the dropdown widget string. WD_DROPDOWNTEXT_TOP = 1, ///< Top offset of the dropdown widget string. WD_DROPDOWNTEXT_BOTTOM = 1, ///< Bottom offset of the dropdown widget string. WD_SORTBUTTON_ARROW_WIDTH = 11, ///< Width of up/down arrow of sort button state. WD_PAR_VSEP_NORMAL = 2, ///< Normal amount of vertical space between two paragraphs of text. WD_PAR_VSEP_WIDE = 8, ///< Large amount of vertical space between two paragraphs of text. }; /* widget.cpp */ void DrawFrameRect(int left, int top, int right, int bottom, Colours colour, FrameFlags flags); void DrawCaption(const Rect &r, Colours colour, Owner owner, StringID str); /* window.cpp */ extern Window *_z_front_window; extern Window *_z_back_window; extern Window *_focused_window; /** How do we the window to be placed? */ enum WindowPosition { WDP_MANUAL, ///< Manually align the window (so no automatic location finding) WDP_AUTO, ///< Find a place automatically WDP_CENTER, ///< Center the window WDP_ALIGN_TOOLBAR, ///< Align toward the toolbar }; Point GetToolbarAlignedWindowPosition(int window_width); /** * High level window description */ struct WindowDesc : ZeroedMemoryAllocator { WindowDesc(WindowPosition default_pos, int16 def_width, int16 def_height, WindowClass window_class, WindowClass parent_class, uint32 flags, const NWidgetPart *nwid_parts, int16 nwid_length); ~WindowDesc(); WindowPosition default_pos; ///< Preferred position of the window. @see WindowPosition() int16 default_width; ///< Preferred initial width of the window. int16 default_height; ///< Preferred initial height of the window. WindowClass cls; ///< Class of the window, @see WindowClass. WindowClass parent_cls; ///< Class of the parent window. @see WindowClass uint32 flags; ///< Flags. @see WindowDefaultFlag const NWidgetPart *nwid_parts; ///< Nested widget parts describing the window. int16 nwid_length; ///< Length of the #nwid_parts array. }; /** * Window default widget/window handling flags */ enum WindowDefaultFlag { WDF_CONSTRUCTION = 1 << 0, ///< This window is used for construction; close it whenever changing company. WDF_MODAL = 1 << 1, ///< The window is a modal child of some other window, meaning the parent is 'inactive' WDF_NO_FOCUS = 1 << 2, ///< This window won't get focus/make any other window lose focus when click }; /** * Data structure for resizing a window */ struct ResizeInfo { uint step_width; ///< Step-size of width resize changes uint step_height; ///< Step-size of height resize changes }; /** State of a sort direction button. */ enum SortButtonState { SBS_OFF, ///< Do not sort (with this button). SBS_DOWN, ///< Sort ascending. SBS_UP, ///< Sort descending. }; /** * Window flags. */ enum WindowFlags { WF_TIMEOUT = 1 << 0, ///< Window timeout counter. WF_DRAGGING = 1 << 3, ///< Window is being dragged. WF_SIZING_RIGHT = 1 << 4, ///< Window is being resized towards the right. WF_SIZING_LEFT = 1 << 5, ///< Window is being resized towards the left. WF_SIZING = WF_SIZING_RIGHT | WF_SIZING_LEFT, ///< Window is being resized. WF_STICKY = 1 << 6, ///< Window is made sticky by user WF_DISABLE_VP_SCROLL = 1 << 7, ///< Window does not do autoscroll, @see HandleAutoscroll(). WF_WHITE_BORDER = 1 << 8, ///< Window white border counter bit mask. WF_HIGHLIGHTED = 1 << 9, ///< Window has a widget that has a highlight. WF_CENTERED = 1 << 10, ///< Window is centered and shall stay centered after ReInit. }; DECLARE_ENUM_AS_BIT_SET(WindowFlags) static const int TIMEOUT_DURATION = 7; ///< The initial timeout value for WF_TIMEOUT. static const int WHITE_BORDER_DURATION = 3; ///< The initial timeout value for WF_WHITE_BORDER. /** * Data structure for a window viewport. * A viewport is either following a vehicle (its id in then in #follow_vehicle), or it aims to display a specific * location #dest_scrollpos_x, #dest_scrollpos_y (#follow_vehicle is then #INVALID_VEHICLE). * The actual location being shown is #scrollpos_x, #scrollpos_y. * @see InitializeViewport(), UpdateViewportPosition(), UpdateViewportCoordinates(). */ struct ViewportData : ViewPort { VehicleID follow_vehicle; ///< VehicleID to follow if following a vehicle, #INVALID_VEHICLE otherwise. int32 scrollpos_x; ///< Currently shown x coordinate (virtual screen coordinate of topleft corner of the viewport). int32 scrollpos_y; ///< Currently shown y coordinate (virtual screen coordinate of topleft corner of the viewport). int32 dest_scrollpos_x; ///< Current destination x coordinate to display (virtual screen coordinate of topleft corner of the viewport). int32 dest_scrollpos_y; ///< Current destination y coordinate to display (virtual screen coordinate of topleft corner of the viewport). }; struct QueryString; /** * Data structure for an opened window */ struct Window : ZeroedMemoryAllocator { protected: void InitializeData(const WindowDesc *desc, WindowNumber window_number); void InitializePositionSize(int x, int y, int min_width, int min_height); void FindWindowPlacementAndResize(int def_width, int def_height); SmallVector scheduled_invalidation_data; ///< Data of scheduled OnInvalidateData() calls. public: Window(); virtual ~Window(); /** * Helper allocation function to disallow something. * Don't allow arrays; arrays of Windows are pointless as you need * to destruct them all at the same time too, which is kinda hard. * @param size the amount of space not to allocate */ inline void *operator new[](size_t size) { NOT_REACHED(); } /** * Helper allocation function to disallow something. * Don't free the window directly; it corrupts the linked list when iterating * @param ptr the pointer not to free */ inline void operator delete(void *ptr) { } WindowFlags flags; ///< Window flags WindowClass window_class; ///< Window class WindowNumber window_number; ///< Window number within the window class uint8 timeout_timer; ///< Timer value of the WF_TIMEOUT for flags. uint8 white_border_timer; ///< Timer value of the WF_WHITE_BORDER for flags. int left; ///< x position of left edge of the window int top; ///< y position of top edge of the window int width; ///< width of the window (number of pixels to the right in x direction) int height; ///< Height of the window (number of pixels down in y direction) ResizeInfo resize; ///< Resize information Owner owner; ///< The owner of the content shown in this window. Company colour is acquired from this variable. ViewportData *viewport; ///< Pointer to viewport data, if present. uint32 desc_flags; ///< Window/widgets default flags setting. @see WindowDefaultFlag const NWidgetCore *nested_focus; ///< Currently focused nested widget, or \c NULL if no nested widget has focus. SmallMap querystrings; ///< QueryString associated to WWT_EDITBOX widgets. NWidgetBase *nested_root; ///< Root of the nested tree. NWidgetBase **nested_array; ///< Array of pointers into the tree. Do not access directly, use #Window::GetWidget() instead. uint nested_array_size; ///< Size of the nested array. NWidgetStacked *shade_select; ///< Selection widget (#NWID_SELECTION) to use for shading the window. If \c NULL, window cannot shade. Dimension unshaded_size; ///< Last known unshaded size (only valid while shaded). int scrolling_scrollbar; ///< Widgetindex of just being dragged scrollbar. -1 if none is active. Window *parent; ///< Parent window. Window *z_front; ///< The window in front of us in z-order. Window *z_back; ///< The window behind us in z-order. template inline const NWID *GetWidget(uint widnum) const; template inline NWID *GetWidget(uint widnum); const Scrollbar *GetScrollbar(uint widnum) const; Scrollbar *GetScrollbar(uint widnum); const QueryString *GetQueryString(uint widnum) const; QueryString *GetQueryString(uint widnum); virtual const char *GetFocusedText() const; virtual const char *GetCaret() const; virtual const char *GetMarkedText(size_t *length) const; virtual Point GetCaretPosition() const; virtual Rect GetTextBoundingRect(const char *from, const char *to) const; virtual const char *GetTextCharacterAtPosition(const Point &pt) const; void InitNested(const WindowDesc *desc, WindowNumber number = 0); void CreateNestedTree(const WindowDesc *desc, bool fill_nested = true); void FinishInitNested(const WindowDesc *desc, WindowNumber window_number = 0); /** * Set the timeout flag of the window and initiate the timer. */ inline void SetTimeout() { this->flags |= WF_TIMEOUT; this->timeout_timer = TIMEOUT_DURATION; } /** * Set the timeout flag of the window and initiate the timer. */ inline void SetWhiteBorder() { this->flags |= WF_WHITE_BORDER; this->white_border_timer = WHITE_BORDER_DURATION; } void DisableAllWidgetHighlight(); void SetWidgetHighlight(byte widget_index, TextColour highlighted_colour); bool IsWidgetHighlighted(byte widget_index) const; /** * Sets the enabled/disabled status of a widget. * By default, widgets are enabled. * On certain conditions, they have to be disabled. * @param widget_index index of this widget in the window * @param disab_stat status to use ie: disabled = true, enabled = false */ inline void SetWidgetDisabledState(byte widget_index, bool disab_stat) { assert(widget_index < this->nested_array_size); if (this->nested_array[widget_index] != NULL) this->GetWidget(widget_index)->SetDisabled(disab_stat); } /** * Sets a widget to disabled. * @param widget_index index of this widget in the window */ inline void DisableWidget(byte widget_index) { SetWidgetDisabledState(widget_index, true); } /** * Sets a widget to Enabled. * @param widget_index index of this widget in the window */ inline void EnableWidget(byte widget_index) { SetWidgetDisabledState(widget_index, false); } /** * Gets the enabled/disabled status of a widget. * @param widget_index index of this widget in the window * @return status of the widget ie: disabled = true, enabled = false */ inline bool IsWidgetDisabled(byte widget_index) const { assert(widget_index < this->nested_array_size); return this->GetWidget(widget_index)->IsDisabled(); } /** * Check if given widget is focused within this window * @param widget_index : index of the widget in the window to check * @return true if given widget is the focused window in this window */ inline bool IsWidgetFocused(byte widget_index) const { return this->nested_focus != NULL && this->nested_focus->index == widget_index; } /** * Check if given widget has user input focus. This means that both the window * has focus and that the given widget has focus within the window. * @param widget_index : index of the widget in the window to check * @return true if given widget is the focused window in this window and this window has focus */ inline bool IsWidgetGloballyFocused(byte widget_index) const { return _focused_window == this && IsWidgetFocused(widget_index); } /** * Sets the lowered/raised status of a widget. * @param widget_index index of this widget in the window * @param lowered_stat status to use ie: lowered = true, raised = false */ inline void SetWidgetLoweredState(byte widget_index, bool lowered_stat) { assert(widget_index < this->nested_array_size); this->GetWidget(widget_index)->SetLowered(lowered_stat); } /** * Invert the lowered/raised status of a widget. * @param widget_index index of this widget in the window */ inline void ToggleWidgetLoweredState(byte widget_index) { assert(widget_index < this->nested_array_size); bool lowered_state = this->GetWidget(widget_index)->IsLowered(); this->GetWidget(widget_index)->SetLowered(!lowered_state); } /** * Marks a widget as lowered. * @param widget_index index of this widget in the window */ inline void LowerWidget(byte widget_index) { SetWidgetLoweredState(widget_index, true); } /** * Marks a widget as raised. * @param widget_index index of this widget in the window */ inline void RaiseWidget(byte widget_index) { SetWidgetLoweredState(widget_index, false); } /** * Gets the lowered state of a widget. * @param widget_index index of this widget in the window * @return status of the widget ie: lowered = true, raised= false */ inline bool IsWidgetLowered(byte widget_index) const { assert(widget_index < this->nested_array_size); return this->GetWidget(widget_index)->IsLowered(); } void UnfocusFocusedWidget(); bool SetFocusedWidget(int widget_index); EventState HandleEditBoxKey(int wid, WChar key, uint16 keycode); virtual void InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end); void HandleButtonClick(byte widget); int GetRowFromWidget(int clickpos, int widget, int padding, int line_height = -1) const; void RaiseButtons(bool autoraise = false); void CDECL SetWidgetsDisabledState(bool disab_stat, int widgets, ...); void CDECL SetWidgetsLoweredState(bool lowered_stat, int widgets, ...); void SetWidgetDirty(byte widget_index) const; void DrawWidgets() const; void DrawViewport() const; void DrawSortButtonState(int widget, SortButtonState state) const; void DeleteChildWindows(WindowClass wc = WC_INVALID) const; void SetDirty() const; void ReInit(int rx = 0, int ry = 0); /** Is window shaded currently? */ inline bool IsShaded() const { return this->shade_select != NULL && this->shade_select->shown_plane == SZSP_HORIZONTAL; } void SetShaded(bool make_shaded); void InvalidateData(int data = 0, bool gui_scope = true); void ProcessScheduledInvalidations(); void ProcessHighlightedInvalidations(); /*** Event handling ***/ /** * Notification that the nested widget tree gets initialized. The event can be used to perform general computations. * @note #nested_root and/or #nested_array (normally accessed via #GetWidget()) may not exist during this call. */ virtual void OnInit() { } /** * Compute the initial position of the window. * @param *desc The pointer to the WindowDesc of the window to create. * @param sm_width Smallest width of the window. * @param sm_height Smallest height of the window. * @param window_number The window number of the new window. * @return Initial position of the top-left corner of the window. */ virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number); /** * The window must be repainted. * @note This method should not change any state, it should only use drawing functions. */ virtual void OnPaint() { this->DrawWidgets(); } /** * Draw the contents of a nested widget. * @param r Rectangle occupied by the widget. * @param widget Number of the widget to draw. * @note This method may not change any state, it may only use drawing functions. */ virtual void DrawWidget(const Rect &r, int widget) const {} /** * Update size and resize step of a widget in the window. * After retrieval of the minimal size and the resize-steps of a widget, this function is called to allow further refinement, * typically by computing the real maximal size of the content. Afterwards, \a size is taken to be the minimal size of the widget * and \a resize is taken to contain the resize steps. For the convenience of the callee, \a padding contains the amount of * padding between the content and the edge of the widget. This should be added to the returned size. * @param widget Widget number. * @param size Size of the widget. * @param padding Recommended amount of space between the widget content and the widget edge. * @param fill Fill step of the widget. * @param resize Resize step of the widget. */ virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) {} /** * Initialize string parameters for a widget. * Calls to this function are made during initialization to measure the size (that is as part of #InitNested()), during drawing, * and while re-initializing the window. Only for widgets that render text initializing is requested. * @param widget Widget number. */ virtual void SetStringParameters(int widget) const {} /** * Called when window gains focus */ virtual void OnFocus() {} virtual void OnFocusLost(); /** * A key has been pressed. * @param key the Unicode value of the key. * @param keycode the untranslated key code including shift state. * @return #ES_HANDLED if the key press has been handled and no other * window should receive the event. */ virtual EventState OnKeyPress(WChar key, uint16 keycode) { return ES_NOT_HANDLED; } /** * The state of the control key has changed * @return #ES_HANDLED if the change has been handled and no other * window should receive the event. */ virtual EventState OnCTRLStateChange() { return ES_NOT_HANDLED; } /** * A click with the left mouse button has been made on the window. * @param pt the point inside the window that has been clicked. * @param widget the clicked widget. * @param click_count Number of fast consecutive clicks at same position */ virtual void OnClick(Point pt, int widget, int click_count) {} /** * A click with the right mouse button has been made on the window. * @param pt the point inside the window that has been clicked. * @param widget the clicked widget. * @return true if the click was actually handled, i.e. do not show a * tooltip if tooltip-on-right-click is enabled. */ virtual bool OnRightClick(Point pt, int widget) { return false; } /** * The mouse is hovering over a widget in the window, perform an action for it, like opening a custom tooltip. * @param pt The point where the mouse is hovering. * @param widget The widget where the mouse is hovering. */ virtual void OnHover(Point pt, int widget) {} /** * An 'object' is being dragged at the provided position, highlight the target if possible. * @param pt The point inside the window that the mouse hovers over. * @param widget The widget the mouse hovers over. */ virtual void OnMouseDrag(Point pt, int widget) {} /** * A dragged 'object' has been released. * @param pt the point inside the window where the release took place. * @param widget the widget where the release took place. */ virtual void OnDragDrop(Point pt, int widget) {} /** * Handle the request for (viewport) scrolling. * @param delta the amount the viewport must be scrolled. */ virtual void OnScroll(Point delta) {} /** * The mouse is currently moving over the window or has just moved outside * of the window. In the latter case pt is (-1, -1). * @param pt the point inside the window that the mouse hovers over. * @param widget the widget the mouse hovers over. */ virtual void OnMouseOver(Point pt, int widget) {} /** * The mouse wheel has been turned. * @param wheel the amount of movement of the mouse wheel. */ virtual void OnMouseWheel(int wheel) {} /** * Called for every mouse loop run, which is at least once per (game) tick. */ virtual void OnMouseLoop() {} /** * Called once per (game) tick. */ virtual void OnTick() {} /** * Called once every 100 (game) ticks. */ virtual void OnHundredthTick() {} /** * Called when this window's timeout has been reached. */ virtual void OnTimeout() {} /** * Called after the window got resized. * For nested windows with a viewport, call NWidgetViewport::UpdateViewportCoordinates. */ virtual void OnResize() {} /** * A dropdown option associated to this window has been selected. * @param widget the widget (button) that the dropdown is associated with. * @param index the element in the dropdown that is selected. */ virtual void OnDropdownSelect(int widget, int index) {} virtual void OnDropdownClose(Point pt, int widget, int index, bool instant_close); /** * The text in an editbox has been edited. * @param widget The widget of the editbox. */ virtual void OnEditboxChanged(int widget) {} /** * The query window opened from this window has closed. * @param str the new value of the string, NULL if the window * was cancelled or an empty string when the default * button was pressed, i.e. StrEmpty(str). */ virtual void OnQueryTextFinished(char *str) {} /** * Some data on this window has become invalid. * @param data information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) {} /** * The user clicked some place on the map when a tile highlight mode * has been set. * @param pt the exact point on the map that has been clicked. * @param tile the tile on the map that has been clicked. */ virtual void OnPlaceObject(Point pt, TileIndex tile) {} /** * The user clicked on a vehicle while HT_VEHICLE has been set. * @param v clicked vehicle. It is guaranteed to be v->IsPrimaryVehicle() == true * @return True if the click is handled, false if it is ignored. */ virtual bool OnVehicleSelect(const struct Vehicle *v) { return false; } /** * The user cancelled a tile highlight mode that has been set. */ virtual void OnPlaceObjectAbort() {} /** * The user is dragging over the map when the tile highlight mode * has been set. * @param select_method the method of selection (allowed directions) * @param select_proc what will be created when the drag is over. * @param pt the exact point on the map where the mouse is. */ virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) {} /** * The user has dragged over the map when the tile highlight mode * has been set. * @param select_method the method of selection (allowed directions) * @param select_proc what should be created. * @param pt the exact point on the map where the mouse was released. * @param start_tile the begin tile of the drag. * @param end_tile the end tile of the drag. */ virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) {} /** * The user moves over the map when a tile highlight mode has been set * when the special mouse mode has been set to 'PRESIZE' mode. An * example of this is the tile highlight for dock building. * @param pt the exact point on the map where the mouse is. * @param tile the tile on the map where the mouse is. */ virtual void OnPlacePresize(Point pt, TileIndex tile) {} /*** End of the event handling ***/ /** * Is the data related to this window NewGRF inspectable? * @return true iff it is inspectable. */ virtual bool IsNewGRFInspectable() const { return false; } /** * Show the NewGRF inspection window. When this function is called it is * up to the window to call and pass the right parameters to the * ShowInspectWindow function. * @pre this->IsNewGRFInspectable() */ virtual void ShowNewGRFInspectWindow() const { NOT_REACHED(); } }; /** * Get the nested widget with number \a widnum from the nested widget tree. * @tparam NWID Type of the nested widget. * @param widnum Widget number of the widget to retrieve. * @return The requested widget if it is instantiated, \c NULL otherwise. */ template inline NWID *Window::GetWidget(uint widnum) { if (widnum >= this->nested_array_size || this->nested_array[widnum] == NULL) return NULL; NWID *nwid = dynamic_cast(this->nested_array[widnum]); assert(nwid != NULL); return nwid; } /** Specialized case of #Window::GetWidget for the nested widget base class. */ template <> inline const NWidgetBase *Window::GetWidget(uint widnum) const { if (widnum >= this->nested_array_size) return NULL; return this->nested_array[widnum]; } /** * Get the nested widget with number \a widnum from the nested widget tree. * @tparam NWID Type of the nested widget. * @param widnum Widget number of the widget to retrieve. * @return The requested widget if it is instantiated, \c NULL otherwise. */ template inline const NWID *Window::GetWidget(uint widnum) const { return const_cast(this)->GetWidget(widnum); } /** * Base class for windows opened from a toolbar. */ class PickerWindowBase : public Window { public: PickerWindowBase(Window *parent) : Window() { this->parent = parent; } virtual ~PickerWindowBase(); }; Window *BringWindowToFrontById(WindowClass cls, WindowNumber number); Window *FindWindowFromPt(int x, int y); /** * Open a new window. * @param desc The pointer to the WindowDesc to be created * @param window_number the window number of the new window * @return see Window pointer of the newly created window */ template Wcls *AllocateWindowDescFront(const WindowDesc *desc, int window_number) { if (BringWindowToFrontById(desc->cls, window_number)) return NULL; return new Wcls(desc, window_number); } void RelocateAllWindows(int neww, int newh); /* misc_gui.cpp */ enum TooltipCloseCondition { TCC_RIGHT_CLICK, TCC_LEFT_CLICK, TCC_HOVER, }; void GuiShowTooltips(Window *parent, StringID str, uint paramcount = 0, const uint64 params[] = NULL, TooltipCloseCondition close_tooltip = TCC_HOVER); /* widget.cpp */ int GetWidgetFromPos(const Window *w, int x, int y); /** Iterate over all windows */ #define FOR_ALL_WINDOWS_FROM_BACK_FROM(w, start) for (w = start; w != NULL; w = w->z_front) if (w->window_class != WC_INVALID) #define FOR_ALL_WINDOWS_FROM_FRONT_FROM(w, start) for (w = start; w != NULL; w = w->z_back) if (w->window_class != WC_INVALID) #define FOR_ALL_WINDOWS_FROM_BACK(w) FOR_ALL_WINDOWS_FROM_BACK_FROM(w, _z_back_window) #define FOR_ALL_WINDOWS_FROM_FRONT(w) FOR_ALL_WINDOWS_FROM_FRONT_FROM(w, _z_front_window) extern Point _cursorpos_drag_start; extern int _scrollbar_start_pos; extern int _scrollbar_size; extern byte _scroller_click_timeout; extern bool _scrolling_viewport; extern bool _mouse_hovering; /** Mouse modes. */ enum SpecialMouseMode { WSM_NONE, ///< No special mouse mode. WSM_DRAGDROP, ///< Dragging an object. WSM_SIZING, ///< Sizing mode. WSM_PRESIZE, ///< Presizing mode (docks, tunnels). }; extern SpecialMouseMode _special_mouse_mode; void SetFocusedWindow(Window *w); void ScrollbarClickHandler(Window *w, NWidgetCore *nw, int x, int y); #endif /* WINDOW_GUI_H */ openttd-1.3.3/src/sound.cpp0000644000000000000000000002325212246102610014312 0ustar rootroot/* $Id: sound.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sound.cpp Handling of playing sounds. */ #include "stdafx.h" #include "landscape.h" #include "mixer.h" #include "newgrf_sound.h" #include "fios.h" #include "window_gui.h" #include "vehicle_base.h" /* The type of set we're replacing */ #define SET_TYPE "sounds" #include "base_media_func.h" static SoundEntry _original_sounds[ORIGINAL_SAMPLE_COUNT]; static void OpenBankFile(const char *filename) { memset(_original_sounds, 0, sizeof(_original_sounds)); /* If there is no sound file (nosound set), don't load anything */ if (filename == NULL) return; FioOpenFile(SOUND_SLOT, filename, BASESET_DIR); size_t pos = FioGetPos(); uint count = FioReadDword(); /* The new format has the highest bit always set */ bool new_format = HasBit(count, 31); ClrBit(count, 31); count /= 8; /* Simple check for the correct number of original sounds. */ if (count != ORIGINAL_SAMPLE_COUNT) { /* Corrupt sample data? Just leave the allocated memory as those tell * there is no sound to play (size = 0 due to calloc). Not allocating * the memory disables valid NewGRFs that replace sounds. */ DEBUG(misc, 6, "Incorrect number of sounds in '%s', ignoring.", filename); return; } FioSeekTo(pos, SEEK_SET); for (uint i = 0; i != ORIGINAL_SAMPLE_COUNT; i++) { _original_sounds[i].file_slot = SOUND_SLOT; _original_sounds[i].file_offset = GB(FioReadDword(), 0, 31) + pos; _original_sounds[i].file_size = FioReadDword(); } for (uint i = 0; i != ORIGINAL_SAMPLE_COUNT; i++) { SoundEntry *sound = &_original_sounds[i]; char name[255]; FioSeekTo(sound->file_offset, SEEK_SET); /* Check for special case, see else case */ FioReadBlock(name, FioReadByte()); // Read the name of the sound if (new_format || strcmp(name, "Corrupt sound") != 0) { FioSeekTo(12, SEEK_CUR); // Skip past RIFF header /* Read riff tags */ for (;;) { uint32 tag = FioReadDword(); uint32 size = FioReadDword(); if (tag == ' tmf') { FioReadWord(); // wFormatTag sound->channels = FioReadWord(); // wChannels sound->rate = FioReadDword(); // samples per second if (!new_format) sound->rate = 11025; // seems like all old samples should be played at this rate. FioReadDword(); // avg bytes per second FioReadWord(); // alignment sound->bits_per_sample = FioReadByte(); // bits per sample FioSeekTo(size - (2 + 2 + 4 + 4 + 2 + 1), SEEK_CUR); } else if (tag == 'atad') { sound->file_size = size; sound->file_slot = SOUND_SLOT; sound->file_offset = FioGetPos(); break; } else { sound->file_size = 0; break; } } } else { /* * Special case for the jackhammer sound * (name in sample.cat is "Corrupt sound") * It's no RIFF file, but raw PCM data */ sound->channels = 1; sound->rate = 11025; sound->bits_per_sample = 8; sound->file_slot = SOUND_SLOT; sound->file_offset = FioGetPos(); } } } static bool SetBankSource(MixerChannel *mc, const SoundEntry *sound) { assert(sound != NULL); /* Check for valid sound size. */ if (sound->file_size == 0 || sound->file_size > ((size_t)-1) - 2) return false; int8 *mem = MallocT(sound->file_size + 2); /* Add two extra bytes so rate conversion can read these * without reading out of its input buffer. */ mem[sound->file_size ] = 0; mem[sound->file_size + 1] = 0; FioSeekToFile(sound->file_slot, sound->file_offset); FioReadBlock(mem, sound->file_size); /* 16-bit PCM WAV files should be signed by default */ if (sound->bits_per_sample == 8) { for (uint i = 0; i != sound->file_size; i++) { mem[i] += -128; // Convert unsigned sound data to signed } } #if TTD_ENDIAN == TTD_BIG_ENDIAN if (sound->bits_per_sample == 16) { uint num_samples = sound->file_size / 2; int16 *samples = (int16 *)mem; for (uint i = 0; i < num_samples; i++) { samples[i] = BSWAP16(samples[i]); } } #endif assert(sound->bits_per_sample == 8 || sound->bits_per_sample == 16); assert(sound->channels == 1); assert(sound->file_size != 0 && sound->rate != 0); MxSetChannelRawSrc(mc, mem, sound->file_size, sound->rate, sound->bits_per_sample == 16); return true; } void InitializeSound() { DEBUG(misc, 1, "Loading sound effects..."); OpenBankFile(BaseSounds::GetUsedSet()->files->filename); } /* Low level sound player */ static void StartSound(SoundID sound_id, float pan, uint volume) { if (volume == 0) return; SoundEntry *sound = GetSound(sound_id); if (sound == NULL) return; /* NewGRF sound that wasn't loaded yet? */ if (sound->rate == 0 && sound->file_slot != 0) { if (!LoadNewGRFSound(sound)) { /* Mark as invalid. */ sound->file_slot = 0; return; } } /* Empty sound? */ if (sound->rate == 0) return; MixerChannel *mc = MxAllocateChannel(); if (mc == NULL) return; if (!SetBankSource(mc, sound)) return; /* Apply the sound effect's own volume. */ volume = sound->volume * volume; MxSetChannelVolume(mc, volume, pan); MxActivateChannel(mc); } static const byte _vol_factor_by_zoom[] = {255, 255, 255, 190, 134, 87}; assert_compile(lengthof(_vol_factor_by_zoom) == ZOOM_LVL_COUNT); static const byte _sound_base_vol[] = { 128, 90, 128, 128, 128, 128, 128, 128, 128, 90, 90, 128, 128, 128, 128, 128, 128, 128, 128, 80, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 90, 90, 90, 128, 90, 128, 128, 90, 128, 128, 128, 90, 128, 128, 128, 128, 128, 128, 90, 128, 128, 128, 128, 90, 128, 128, 128, 128, 128, 128, 128, 128, 90, 90, 90, 128, 128, 128, 90, }; static const byte _sound_idx[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, }; void SndCopyToPool() { SoundEntry *sound = AllocateSound(ORIGINAL_SAMPLE_COUNT); for (uint i = 0; i < ORIGINAL_SAMPLE_COUNT; i++) { sound[i] = _original_sounds[_sound_idx[i]]; sound[i].volume = _sound_base_vol[i]; sound[i].priority = 0; } } /** * Decide 'where' (between left and right speaker) to play the sound effect. * @param sound Sound effect to play * @param left Left edge of virtual coordinates where the sound is produced * @param right Right edge of virtual coordinates where the sound is produced * @param top Top edge of virtual coordinates where the sound is produced * @param bottom Bottom edge of virtual coordinates where the sound is produced */ static void SndPlayScreenCoordFx(SoundID sound, int left, int right, int top, int bottom) { if (_settings_client.music.effect_vol == 0) return; const Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { const ViewPort *vp = w->viewport; if (vp != NULL && left < vp->virtual_left + vp->virtual_width && right > vp->virtual_left && top < vp->virtual_top + vp->virtual_height && bottom > vp->virtual_top) { int screen_x = (left + right) / 2 - vp->virtual_left; int width = (vp->virtual_width == 0 ? 1 : vp->virtual_width); float panning = (float)screen_x / width; StartSound( sound, panning, (_settings_client.music.effect_vol * _vol_factor_by_zoom[vp->zoom - ZOOM_LVL_BEGIN]) / 256 ); return; } } } void SndPlayTileFx(SoundID sound, TileIndex tile) { /* emits sound from center of the tile */ int x = min(MapMaxX() - 1, TileX(tile)) * TILE_SIZE + TILE_SIZE / 2; int y = min(MapMaxY() - 1, TileY(tile)) * TILE_SIZE - TILE_SIZE / 2; int z = (y < 0 ? 0 : GetSlopePixelZ(x, y)); Point pt = RemapCoords(x, y, z); y += 2 * TILE_SIZE; Point pt2 = RemapCoords(x, y, GetSlopePixelZ(x, y)); SndPlayScreenCoordFx(sound, pt.x, pt2.x, pt.y, pt2.y); } void SndPlayVehicleFx(SoundID sound, const Vehicle *v) { SndPlayScreenCoordFx(sound, v->coord.left, v->coord.right, v->coord.top, v->coord.bottom ); } void SndPlayFx(SoundID sound) { StartSound(sound, 0.5, _settings_client.music.effect_vol); } INSTANTIATE_BASE_MEDIA_METHODS(BaseMedia, SoundsSet) /** Names corresponding to the sound set's files */ static const char * const _sound_file_names[] = { "samples" }; template /* static */ const char * const *BaseSet::file_names = _sound_file_names; template /* static */ const char *BaseMedia::GetExtension() { return ".obs"; // OpenTTD Base Sounds } template /* static */ bool BaseMedia::DetermineBestSet() { if (BaseMedia::used_set != NULL) return true; const Tbase_set *best = NULL; for (const Tbase_set *c = BaseMedia::available_sets; c != NULL; c = c->next) { /* Skip unusable sets */ if (c->GetNumMissing() != 0) continue; if (best == NULL || (best->fallback && !c->fallback) || best->valid_files < c->valid_files || (best->valid_files == c->valid_files && (best->shortname == c->shortname && best->version < c->version))) { best = c; } } BaseMedia::used_set = best; return BaseMedia::used_set != NULL; } openttd-1.3.3/src/console_type.h0000644000000000000000000000331312246102611015327 0ustar rootroot/* $Id: console_type.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file console_type.h Globally used console related types. */ #ifndef CONSOLE_TYPE_H #define CONSOLE_TYPE_H #include "gfx_type.h" /** Modes of the in-game console. */ enum IConsoleModes { ICONSOLE_FULL, ///< In-game console is closed. ICONSOLE_OPENED, ///< In-game console is opened, upper 1/3 of the screen. ICONSOLE_CLOSED, ///< In-game console is opened, whole screen. }; /* Colours of the console messages. */ static const TextColour CC_DEFAULT = TC_SILVER; ///< Default colour of the console. static const TextColour CC_ERROR = TC_RED; ///< Colour for error lines. static const TextColour CC_WARNING = TC_LIGHT_BLUE; ///< Colour for warning lines. static const TextColour CC_INFO = TC_YELLOW; ///< Colour for information lines. static const TextColour CC_DEBUG = TC_LIGHT_BROWN; ///< Colour for debug output. static const TextColour CC_COMMAND = TC_GOLD; ///< Colour for the console's commands. static const TextColour CC_WHITE = TC_WHITE; ///< White console lines for various things such as the welcome. #endif /* CONSOLE_TYPE_H */ openttd-1.3.3/src/music_gui.cpp0000644000000000000000000006513312246102611015153 0ustar rootroot/* $Id: music_gui.cpp 24700 2012-11-11 16:10:43Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file music_gui.cpp GUI for the music playback. */ #include "stdafx.h" #include "openttd.h" #include "base_media_base.h" #include "music/music_driver.hpp" #include "window_gui.h" #include "strings_func.h" #include "window_func.h" #include "sound_func.h" #include "gfx_func.h" #include "core/random_func.hpp" #include "error.h" #include "core/geometry_func.hpp" #include "string_func.h" #include "settings_type.h" #include "widgets/music_widget.h" #include "table/strings.h" #include "table/sprites.h" /** * Get the name of the song. * @param index of the song. * @return the name of the song. */ static const char *GetSongName(int index) { return BaseMusic::GetUsedSet()->song_name[index]; } /** * Get the track number of the song. * @param index of the song. * @return the track number of the song. */ static int GetTrackNumber(int index) { return BaseMusic::GetUsedSet()->track_nr[index]; } /** The currently played song */ static byte _music_wnd_cursong = 1; /** Whether a song is currently played */ static bool _song_is_active = false; /** Indices of the songs in the current playlist */ static byte _cur_playlist[NUM_SONGS_PLAYLIST + 1]; /** Indices of all songs */ static byte _playlist_all[NUM_SONGS_AVAILABLE + 1]; /** Indices of all old style songs */ static byte _playlist_old_style[NUM_SONGS_CLASS + 1]; /** Indices of all new style songs */ static byte _playlist_new_style[NUM_SONGS_CLASS + 1]; /** Indices of all ezy street songs */ static byte _playlist_ezy_street[NUM_SONGS_CLASS + 1]; assert_compile(lengthof(_settings_client.music.custom_1) == NUM_SONGS_PLAYLIST + 1); assert_compile(lengthof(_settings_client.music.custom_2) == NUM_SONGS_PLAYLIST + 1); /** The different playlists that can be played. */ static byte * const _playlists[] = { _playlist_all, _playlist_old_style, _playlist_new_style, _playlist_ezy_street, _settings_client.music.custom_1, _settings_client.music.custom_2, }; /** * Validate a playlist. * @param playlist The playlist to validate. * @param last The last location in the list. */ void ValidatePlaylist(byte *playlist, byte *last) { while (*playlist != 0 && playlist <= last) { /* Song indices are saved off-by-one so 0 is "nothing". */ if (*playlist <= NUM_SONGS_AVAILABLE && !StrEmpty(GetSongName(*playlist - 1))) { playlist++; continue; } for (byte *p = playlist; *p != 0 && p <= last; p++) { p[0] = p[1]; } } /* Make sure the list is null terminated. */ *last = 0; } /** Initialize the playlists */ void InitializeMusic() { uint j = 0; for (uint i = 0; i < NUM_SONGS_AVAILABLE; i++) { if (StrEmpty(GetSongName(i))) continue; _playlist_all[j++] = i + 1; } /* Terminate the list */ _playlist_all[j] = 0; /* Now make the 'styled' playlists */ for (uint k = 0; k < NUM_SONG_CLASSES; k++) { j = 0; for (uint i = 0; i < NUM_SONGS_CLASS; i++) { int id = k * NUM_SONGS_CLASS + i + 1; if (StrEmpty(GetSongName(id))) continue; _playlists[k + 1][j++] = id + 1; } /* Terminate the list */ _playlists[k + 1][j] = 0; } ValidatePlaylist(_settings_client.music.custom_1, lastof(_settings_client.music.custom_1)); ValidatePlaylist(_settings_client.music.custom_2, lastof(_settings_client.music.custom_2)); if (BaseMusic::GetUsedSet()->num_available < _music_wnd_cursong) { /* If there are less songs than the currently played song, * just pause and reset to no song. */ _music_wnd_cursong = 0; _song_is_active = false; } } static void SkipToPrevSong() { byte *b = _cur_playlist; byte *p = b; byte t; if (b[0] == 0) return; // empty playlist do p++; while (p[0] != 0); // find the end t = *--p; // and copy the bytes while (p != b) { p--; p[1] = p[0]; } *b = t; _song_is_active = false; } static void SkipToNextSong() { byte *b = _cur_playlist; byte t; t = b[0]; if (t != 0) { while (b[1] != 0) { b[0] = b[1]; b++; } b[0] = t; } _song_is_active = false; } static void MusicVolumeChanged(byte new_vol) { _music_driver->SetVolume(new_vol); } static void DoPlaySong() { char filename[MAX_PATH]; if (FioFindFullPath(filename, lengthof(filename), BASESET_DIR, BaseMusic::GetUsedSet()->files[_music_wnd_cursong - 1].filename) == NULL) { FioFindFullPath(filename, lengthof(filename), OLD_GM_DIR, BaseMusic::GetUsedSet()->files[_music_wnd_cursong - 1].filename); } _music_driver->PlaySong(filename); SetWindowDirty(WC_MUSIC_WINDOW, 0); } static void DoStopMusic() { _music_driver->StopSong(); SetWindowDirty(WC_MUSIC_WINDOW, 0); } static void SelectSongToPlay() { uint i = 0; uint j = 0; memset(_cur_playlist, 0, sizeof(_cur_playlist)); do { const char *filename = BaseMusic::GetUsedSet()->files[_playlists[_settings_client.music.playlist][i] - 1].filename; /* We are now checking for the existence of that file prior * to add it to the list of available songs */ if (!StrEmpty(filename) && FioCheckFileExists(filename, BASESET_DIR)) { _cur_playlist[j] = _playlists[_settings_client.music.playlist][i]; j++; } } while (_playlists[_settings_client.music.playlist][++i] != 0 && j < lengthof(_cur_playlist) - 1); /* Do not shuffle when on the intro-start window, as the song to play has to be the original TTD Theme*/ if (_settings_client.music.shuffle && _game_mode != GM_MENU) { i = 500; do { uint32 r = InteractiveRandom(); byte *a = &_cur_playlist[GB(r, 0, 5)]; byte *b = &_cur_playlist[GB(r, 8, 5)]; if (*a != 0 && *b != 0) { byte t = *a; *a = *b; *b = t; } } while (--i); } } static void StopMusic() { _music_wnd_cursong = 0; DoStopMusic(); _song_is_active = false; SetWindowWidgetDirty(WC_MUSIC_WINDOW, 0, 9); } static void PlayPlaylistSong() { if (_cur_playlist[0] == 0) { SelectSongToPlay(); /* if there is not songs in the playlist, it may indicate * no file on the gm folder, or even no gm folder. * Stop the playback, then */ if (_cur_playlist[0] == 0) { _song_is_active = false; _music_wnd_cursong = 0; _settings_client.music.playing = false; return; } } _music_wnd_cursong = _cur_playlist[0]; DoPlaySong(); _song_is_active = true; SetWindowWidgetDirty(WC_MUSIC_WINDOW, 0, 9); } void ResetMusic() { _music_wnd_cursong = 1; DoPlaySong(); } void MusicLoop() { if (!_settings_client.music.playing && _song_is_active) { StopMusic(); } else if (_settings_client.music.playing && !_song_is_active) { PlayPlaylistSong(); } if (!_song_is_active) return; if (!_music_driver->IsSongPlaying()) { if (_game_mode != GM_MENU) { StopMusic(); SkipToNextSong(); PlayPlaylistSong(); } else { ResetMusic(); } } } static void SelectPlaylist(byte list) { _settings_client.music.playlist = list; InvalidateWindowData(WC_MUSIC_TRACK_SELECTION, 0); InvalidateWindowData(WC_MUSIC_WINDOW, 0); } struct MusicTrackSelectionWindow : public Window { MusicTrackSelectionWindow(const WindowDesc *desc, WindowNumber number) : Window() { this->InitNested(desc, number); this->LowerWidget(WID_MTS_LIST_LEFT); this->LowerWidget(WID_MTS_LIST_RIGHT); this->SetWidgetDisabledState(WID_MTS_CLEAR, _settings_client.music.playlist <= 3); this->LowerWidget(WID_MTS_ALL + _settings_client.music.playlist); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_MTS_PLAYLIST: SetDParam(0, STR_MUSIC_PLAYLIST_ALL + _settings_client.music.playlist); break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; for (int i = 0; i < 6; i++) { this->SetWidgetLoweredState(WID_MTS_ALL + i, i == _settings_client.music.playlist); } this->SetWidgetDisabledState(WID_MTS_CLEAR, _settings_client.music.playlist <= 3); this->SetDirty(); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_MTS_PLAYLIST: { Dimension d = {0, 0}; for (int i = 0; i < 6; i++) { SetDParam(0, STR_MUSIC_PLAYLIST_ALL + i); d = maxdim(d, GetStringBoundingBox(STR_PLAYLIST_PROGRAM)); } d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } case WID_MTS_LIST_LEFT: case WID_MTS_LIST_RIGHT: { Dimension d = {0, 0}; for (uint i = 0; i < NUM_SONGS_AVAILABLE; i++) { const char *song_name = GetSongName(i); if (StrEmpty(song_name)) continue; SetDParam(0, GetTrackNumber(i)); SetDParam(1, 2); SetDParamStr(2, GetSongName(i)); Dimension d2 = GetStringBoundingBox(STR_PLAYLIST_TRACK_NAME); d.width = max(d.width, d2.width); d.height += d2.height; } d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_MTS_LIST_LEFT: { GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_BLACK); int y = r.top + WD_FRAMERECT_TOP; for (uint i = 0; i < NUM_SONGS_AVAILABLE; i++) { const char *song_name = GetSongName(i); if (StrEmpty(song_name)) continue; SetDParam(0, GetTrackNumber(i)); SetDParam(1, 2); SetDParamStr(2, song_name); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_PLAYLIST_TRACK_NAME); y += FONT_HEIGHT_SMALL; } break; } case WID_MTS_LIST_RIGHT: { GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_BLACK); int y = r.top + WD_FRAMERECT_TOP; for (const byte *p = _playlists[_settings_client.music.playlist]; *p != 0; p++) { uint i = *p - 1; SetDParam(0, GetTrackNumber(i)); SetDParam(1, 2); SetDParamStr(2, GetSongName(i)); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_PLAYLIST_TRACK_NAME); y += FONT_HEIGHT_SMALL; } break; } } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_MTS_LIST_LEFT: { // add to playlist int y = this->GetRowFromWidget(pt.y, widget, 0, FONT_HEIGHT_SMALL); if (_settings_client.music.playlist < 4) return; if (!IsInsideMM(y, 0, BaseMusic::GetUsedSet()->num_available)) return; byte *p = _playlists[_settings_client.music.playlist]; for (uint i = 0; i != NUM_SONGS_PLAYLIST - 1; i++) { if (p[i] == 0) { /* Find the actual song number */ for (uint j = 0; j < NUM_SONGS_AVAILABLE; j++) { if (GetTrackNumber(j) == y + 1) { p[i] = j + 1; break; } } p[i + 1] = 0; this->SetDirty(); SelectSongToPlay(); break; } } break; } case WID_MTS_LIST_RIGHT: { // remove from playlist int y = this->GetRowFromWidget(pt.y, widget, 0, FONT_HEIGHT_SMALL); if (_settings_client.music.playlist < 4) return; if (!IsInsideMM(y, 0, NUM_SONGS_PLAYLIST)) return; byte *p = _playlists[_settings_client.music.playlist]; for (uint i = y; i != NUM_SONGS_PLAYLIST - 1; i++) { p[i] = p[i + 1]; } this->SetDirty(); SelectSongToPlay(); break; } case WID_MTS_CLEAR: // clear for (uint i = 0; _playlists[_settings_client.music.playlist][i] != 0; i++) _playlists[_settings_client.music.playlist][i] = 0; this->SetDirty(); StopMusic(); SelectSongToPlay(); break; case WID_MTS_ALL: case WID_MTS_OLD: case WID_MTS_NEW: case WID_MTS_EZY: case WID_MTS_CUSTOM1: case WID_MTS_CUSTOM2: // set playlist SelectPlaylist(widget - WID_MTS_ALL); StopMusic(); SelectSongToPlay(); break; } } }; static const NWidgetPart _nested_music_track_selection_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_PLAYLIST_MUSIC_PROGRAM_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), /* Left panel. */ NWidget(NWID_VERTICAL), NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_PLAYLIST_TRACK_INDEX, STR_NULL), NWidget(WWT_PANEL, COLOUR_GREY, WID_MTS_LIST_LEFT), SetMinimalSize(180, 194), SetDataTip(0x0, STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), /* Middle buttons. */ NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetMinimalSize(60, 30), // Space above the first button from the title bar. NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_MTS_ALL), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_ALL, STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_MTS_OLD), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_OLD_STYLE, STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_MTS_NEW), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_NEW_STYLE, STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_MTS_EZY), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_EZY_STREET, STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_MTS_CUSTOM1), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_CUSTOM_1, STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_MTS_CUSTOM2), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_CUSTOM_2, STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED), NWidget(NWID_SPACER), SetMinimalSize(0, 16), // Space above 'clear' button NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_MTS_CLEAR), SetFill(1, 0), SetDataTip(STR_PLAYLIST_CLEAR, STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), /* Right panel. */ NWidget(NWID_VERTICAL), NWidget(WWT_LABEL, COLOUR_GREY, WID_MTS_PLAYLIST), SetDataTip(STR_PLAYLIST_PROGRAM, STR_NULL), NWidget(WWT_PANEL, COLOUR_GREY, WID_MTS_LIST_RIGHT), SetMinimalSize(180, 194), SetDataTip(0x0, STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _music_track_selection_desc( WDP_AUTO, 0, 0, WC_MUSIC_TRACK_SELECTION, WC_NONE, 0, _nested_music_track_selection_widgets, lengthof(_nested_music_track_selection_widgets) ); static void ShowMusicTrackSelection() { AllocateWindowDescFront(&_music_track_selection_desc, 0); } struct MusicWindow : public Window { static const int slider_width = 3; MusicWindow(const WindowDesc *desc, WindowNumber number) : Window() { this->InitNested(desc, number); this->LowerWidget(_settings_client.music.playlist + WID_M_ALL); this->SetWidgetLoweredState(WID_M_SHUFFLE, _settings_client.music.shuffle); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { /* Make sure that WID_M_SHUFFLE and WID_M_PROGRAMME have the same size. * This can't be done by using NC_EQUALSIZE as the WID_M_INFO is * between those widgets and of different size. */ case WID_M_SHUFFLE: case WID_M_PROGRAMME: { Dimension d = maxdim(GetStringBoundingBox(STR_MUSIC_PROGRAM), GetStringBoundingBox(STR_MUSIC_SHUFFLE)); d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } case WID_M_TRACK_NR: { Dimension d = GetStringBoundingBox(STR_MUSIC_TRACK_NONE); d.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(*size, d); break; } case WID_M_TRACK_NAME: { Dimension d = GetStringBoundingBox(STR_MUSIC_TITLE_NONE); for (uint i = 0; i < NUM_SONGS_AVAILABLE; i++) { SetDParamStr(0, GetSongName(i)); d = maxdim(d, GetStringBoundingBox(STR_MUSIC_TITLE_NAME)); } d.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(*size, d); break; } /* Hack-ish: set the proper widget data; only needs to be done once * per (Re)Init as that's the only time the language changes. */ case WID_M_PREV: this->GetWidget(WID_M_PREV)->widget_data = _current_text_dir == TD_RTL ? SPR_IMG_SKIP_TO_NEXT : SPR_IMG_SKIP_TO_PREV; break; case WID_M_NEXT: this->GetWidget(WID_M_NEXT)->widget_data = _current_text_dir == TD_RTL ? SPR_IMG_SKIP_TO_PREV : SPR_IMG_SKIP_TO_NEXT; break; case WID_M_PLAY: this->GetWidget(WID_M_PLAY)->widget_data = _current_text_dir == TD_RTL ? SPR_IMG_PLAY_MUSIC_RTL : SPR_IMG_PLAY_MUSIC; break; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_M_TRACK_NR: { GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, PC_BLACK); StringID str = STR_MUSIC_TRACK_NONE; if (_song_is_active != 0 && _music_wnd_cursong != 0) { SetDParam(0, GetTrackNumber(_music_wnd_cursong - 1)); SetDParam(1, 2); str = STR_MUSIC_TRACK_DIGIT; } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str); break; } case WID_M_TRACK_NAME: { GfxFillRect(r.left, r.top + 1, r.right - 1, r.bottom, PC_BLACK); StringID str = STR_MUSIC_TITLE_NONE; if (_song_is_active != 0 && _music_wnd_cursong != 0) { str = STR_MUSIC_TITLE_NAME; SetDParamStr(0, GetSongName(_music_wnd_cursong - 1)); } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str, TC_FROMSTRING, SA_HOR_CENTER); break; } case WID_M_MUSIC_VOL: case WID_M_EFFECT_VOL: { DrawFrameRect(r.left, r.top + 2, r.right, r.bottom - 2, COLOUR_GREY, FR_LOWERED); byte volume = (widget == WID_M_MUSIC_VOL) ? _settings_client.music.music_vol : _settings_client.music.effect_vol; int x = (volume * (r.right - r.left) / 127); if (_current_text_dir == TD_RTL) { x = r.right - x; } else { x += r.left; } DrawFrameRect(x, r.top, x + slider_width, r.bottom, COLOUR_GREY, FR_NONE); break; } } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; for (int i = 0; i < 6; i++) { this->SetWidgetLoweredState(WID_M_ALL + i, i == _settings_client.music.playlist); } this->SetDirty(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_M_PREV: // skip to prev if (!_song_is_active) return; SkipToPrevSong(); this->SetDirty(); break; case WID_M_NEXT: // skip to next if (!_song_is_active) return; SkipToNextSong(); this->SetDirty(); break; case WID_M_STOP: // stop playing _settings_client.music.playing = false; break; case WID_M_PLAY: // start playing _settings_client.music.playing = true; break; case WID_M_MUSIC_VOL: case WID_M_EFFECT_VOL: { // volume sliders int x = pt.x - this->GetWidget(widget)->pos_x; byte *vol = (widget == WID_M_MUSIC_VOL) ? &_settings_client.music.music_vol : &_settings_client.music.effect_vol; byte new_vol = x * 127 / this->GetWidget(widget)->current_x; if (_current_text_dir == TD_RTL) new_vol = 127 - new_vol; if (new_vol != *vol) { *vol = new_vol; if (widget == WID_M_MUSIC_VOL) MusicVolumeChanged(new_vol); this->SetDirty(); } _left_button_clicked = false; break; } case WID_M_SHUFFLE: // toggle shuffle _settings_client.music.shuffle ^= 1; this->SetWidgetLoweredState(WID_M_SHUFFLE, _settings_client.music.shuffle); this->SetWidgetDirty(WID_M_SHUFFLE); StopMusic(); SelectSongToPlay(); this->SetDirty(); break; case WID_M_PROGRAMME: // show track selection ShowMusicTrackSelection(); break; case WID_M_ALL: case WID_M_OLD: case WID_M_NEW: case WID_M_EZY: case WID_M_CUSTOM1: case WID_M_CUSTOM2: // playlist SelectPlaylist(widget - WID_M_ALL); StopMusic(); SelectSongToPlay(); this->SetDirty(); break; } } }; static const NWidgetPart _nested_music_window_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_MUSIC_JAZZ_JUKEBOX_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, -1), SetFill(1, 1), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_M_PREV), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_SKIP_TO_PREV, STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_M_NEXT), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_SKIP_TO_NEXT, STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_M_STOP), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_STOP_MUSIC, STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_M_PLAY), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_PLAY_MUSIC, STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, -1), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_M_SLIDERS), NWidget(NWID_HORIZONTAL), SetPIP(20, 20, 20), NWidget(NWID_VERTICAL), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetFill(1, 0), SetDataTip(STR_MUSIC_MUSIC_VOLUME, STR_NULL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_M_MUSIC_VOL), SetMinimalSize(67, 0), SetMinimalTextLines(1, 0), SetFill(1, 0), SetDataTip(0x0, STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC), NWidget(NWID_HORIZONTAL), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MIN, STR_NULL), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MAX, STR_NULL), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetFill(1, 0), SetDataTip(STR_MUSIC_EFFECTS_VOLUME, STR_NULL), NWidget(WWT_EMPTY, COLOUR_GREY, WID_M_EFFECT_VOL), SetMinimalSize(67, 0), SetMinimalTextLines(1, 0), SetFill(1, 0), SetDataTip(0x0, STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC), NWidget(NWID_HORIZONTAL), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MIN, STR_NULL), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MARKER, STR_NULL), SetFill(1, 0), NWidget(WWT_LABEL, COLOUR_GREY, -1), SetDataTip(STR_MUSIC_RULER_MAX, STR_NULL), EndContainer(), EndContainer(), EndContainer(), EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_M_BACKGROUND), NWidget(NWID_HORIZONTAL), SetPIP(6, 0, 6), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_SHUFFLE), SetMinimalSize(50, 8), SetDataTip(STR_MUSIC_SHUFFLE, STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), NWidget(NWID_VERTICAL), SetPadding(0, 0, 3, 3), NWidget(WWT_LABEL, COLOUR_GREY, WID_M_TRACK), SetFill(0, 0), SetDataTip(STR_MUSIC_TRACK, STR_NULL), NWidget(WWT_PANEL, COLOUR_GREY, WID_M_TRACK_NR), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPadding(0, 3, 3, 0), NWidget(WWT_LABEL, COLOUR_GREY, WID_M_TRACK_TITLE), SetFill(1, 0), SetDataTip(STR_MUSIC_XTITLE, STR_NULL), NWidget(WWT_PANEL, COLOUR_GREY, WID_M_TRACK_NAME), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_M_PROGRAMME), SetMinimalSize(50, 8), SetDataTip(STR_MUSIC_PROGRAM, STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_ALL), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_ALL, STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_OLD), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_OLD_STYLE, STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_NEW), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_NEW_STYLE, STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_EZY), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_EZY_STREET, STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_CUSTOM1), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_CUSTOM_1, STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_M_CUSTOM2), SetFill(1, 0), SetDataTip(STR_MUSIC_PLAYLIST_CUSTOM_2, STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED), EndContainer(), }; static const WindowDesc _music_window_desc( WDP_AUTO, 0, 0, WC_MUSIC_WINDOW, WC_NONE, 0, _nested_music_window_widgets, lengthof(_nested_music_window_widgets) ); void ShowMusicWindow() { if (BaseMusic::GetUsedSet()->num_available == 0) ShowErrorMessage(STR_ERROR_NO_SONGS, INVALID_STRING_ID, WL_WARNING); AllocateWindowDescFront(&_music_window_desc, 0); } openttd-1.3.3/src/window_func.h0000644000000000000000000000423312246102611015150 0ustar rootroot/* $Id: window_func.h 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file window_func.h %Window functions not directly related to making/drawing windows. */ #ifndef WINDOW_FUNC_H #define WINDOW_FUNC_H #include "window_type.h" #include "company_type.h" #include "core/geometry_type.hpp" Window *FindWindowById(WindowClass cls, WindowNumber number); Window *FindWindowByClass(WindowClass cls); void ChangeWindowOwner(Owner old_owner, Owner new_owner); void ResizeWindow(Window *w, int x, int y, bool clamp_to_screen = true); int PositionMainToolbar(Window *w); int PositionStatusbar(Window *w); int PositionNewsMessage(Window *w); int PositionNetworkChatWindow(Window *w); int GetMainViewTop(); int GetMainViewBottom(); void InitWindowSystem(); void UnInitWindowSystem(); void ResetWindowSystem(); void SetupColoursAndInitialWindow(); void InputLoop(); void InvalidateWindowData(WindowClass cls, WindowNumber number, int data = 0, bool gui_scope = false); void InvalidateWindowClassesData(WindowClass cls, int data = 0, bool gui_scope = false); void DeleteNonVitalWindows(); void DeleteAllNonVitalWindows(); void DeleteConstructionWindows(); void HideVitalWindows(); void ShowVitalWindows(); void ReInitAllWindows(); void SetWindowWidgetDirty(WindowClass cls, WindowNumber number, byte widget_index); void SetWindowDirty(WindowClass cls, WindowNumber number); void SetWindowClassesDirty(WindowClass cls); void DeleteWindowById(WindowClass cls, WindowNumber number, bool force = true); void DeleteWindowByClass(WindowClass cls); bool EditBoxInGlobalFocus(); Point GetCaretPosition(); #endif /* WINDOW_FUNC_H */ openttd-1.3.3/src/cargomonitor.h0000644000000000000000000001305512246102611015333 0ustar rootroot/* $Id: cargomonitor.h 24986 2013-02-10 19:49:04Z zuu $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargomonitor.h Cargo transport monitoring declarations. */ #ifndef CARGOMONITOR_H #define CARGOMONITOR_H #include "cargo_type.h" #include "company_func.h" #include "industry.h" #include "town.h" #include struct Station; /** * Unique number for a company / cargo type / (town or industry). * Encoding is as follows: * - bits 0-15 town or industry number * - bit 16 is set if it is an industry number (else it is a town number). * - bits 19-23 Cargo type. * - bits 24-31 %Company number. */ typedef uint32 CargoMonitorID; ///< Type of the cargo monitor number. /** Map type for storing and updating active cargo monitor numbers and their amounts. */ typedef std::map CargoMonitorMap; extern CargoMonitorMap _cargo_pickups; extern CargoMonitorMap _cargo_deliveries; /** Constants for encoding and extracting cargo monitors. */ enum CargoCompanyBits { CCB_TOWN_IND_NUMBER_START = 0, ///< Start bit of the town or industry number. CCB_TOWN_IND_NUMBER_LENGTH = 16, ///< Number of bits of the town or industry number. CCB_IS_INDUSTRY_BIT = 16, ///< Bit indicating the town/industry number is an industry. CCB_IS_INDUSTRY_BIT_VALUE = 1ul << CCB_IS_INDUSTRY_BIT, ///< Value of the #CCB_IS_INDUSTRY_BIT bit. CCB_CARGO_TYPE_START = 19, ///< Start bit of the cargo type field. CCB_CARGO_TYPE_LENGTH = 5, ///< Number of bits of the cargo type field. CCB_COMPANY_START = 24, ///< Start bit of the company field. CCB_COMPANY_LENGTH = 8, ///< Number of bits of the company field. }; /** * Encode a cargo monitor for pickup or delivery at an industry. * @param company Company performing the transport. * @param ctype Cargo type being transported. * @param ind %Industry providing or accepting the cargo. * @return The encoded cargo/company/industry number. */ static inline CargoMonitorID EncodeCargoIndustryMonitor(CompanyID company, CargoID ctype, IndustryID ind) { assert(ctype < (1 << CCB_CARGO_TYPE_LENGTH)); uint32 ret = 0; SB(ret, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH, ind); SetBit(ret, CCB_IS_INDUSTRY_BIT); SB(ret, CCB_CARGO_TYPE_START, CCB_CARGO_TYPE_LENGTH, ctype); SB(ret, CCB_COMPANY_START, CCB_COMPANY_LENGTH, company); return ret; } /** * Encode a cargo monitoring number for pickup or delivery at a town. * @param company %Company performing the transport. * @param ctype Cargo type being transported. * @param town %Town providing or accepting the cargo. * @return The encoded cargo/company/town number. */ static inline CargoMonitorID EncodeCargoTownMonitor(CompanyID company, CargoID ctype, TownID town) { assert(ctype < (1 << CCB_CARGO_TYPE_LENGTH)); uint32 ret = 0; SB(ret, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH, town); SB(ret, CCB_CARGO_TYPE_START, CCB_CARGO_TYPE_LENGTH, ctype); SB(ret, CCB_COMPANY_START, CCB_COMPANY_LENGTH, company); return ret; } /** * Extract the company from the cargo monitor. * @param num Cargo monitoring number to decode. * @return The extracted company id. */ static inline CompanyID DecodeMonitorCompany(CargoMonitorID num) { return static_cast(GB(num, CCB_COMPANY_START, CCB_COMPANY_LENGTH)); } /** * Extract the cargo type from the cargo monitor. * @param num Cargo monitoring number to decode. * @return The extracted cargo type. */ static inline CargoID DecodeMonitorCargoType(CargoMonitorID num) { return GB(num, CCB_CARGO_TYPE_START, CCB_CARGO_TYPE_LENGTH); } /** * Does the cargo number monitor an industry or a town? * @param num Cargo monitoring number to decode. * @return true if monitoring an industry, false if monitoring a town. */ static inline bool MonitorMonitorsIndustry(CargoMonitorID num) { return HasBit(num, CCB_IS_INDUSTRY_BIT); } /** * Extract the industry number from the cargo monitor. * @param num Cargo monitoring number to decode. * @return The extracted industry id, or #INVALID_INDUSTRY if the number does not monitor an industry. */ static inline IndustryID DecodeMonitorIndustry(CargoMonitorID num) { if (!MonitorMonitorsIndustry(num)) return INVALID_INDUSTRY; return GB(num, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH); } /** * Extract the town number from the cargo monitor. * @param num Cargo monitoring number to decode. * @return The extracted town id, or #INVALID_TOWN if the number does not monitor a town. */ static inline TownID DecodeMonitorTown(CargoMonitorID num) { if (MonitorMonitorsIndustry(num)) return INVALID_TOWN; return GB(num, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH); } void ClearCargoPickupMonitoring(CompanyID company = INVALID_OWNER); void ClearCargoDeliveryMonitoring(CompanyID company = INVALID_OWNER); uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring); uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring); void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st); #endif /* CARGOMONITOR_H */ openttd-1.3.3/src/newgrf.h0000644000000000000000000001421512246102611014117 0ustar rootroot/* $Id: newgrf.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf.h Base for the NewGRF implementation. */ #ifndef NEWGRF_H #define NEWGRF_H #include "cargotype.h" #include "rail_type.h" #include "fileio_type.h" #include "core/bitmath_func.hpp" #include "core/alloc_type.hpp" #include "core/smallvec_type.hpp" /** * List of different canal 'features'. * Each feature gets an entry in the canal spritegroup table */ enum CanalFeature { CF_WATERSLOPE, CF_LOCKS, CF_DIKES, CF_ICON, CF_DOCKS, CF_RIVER_SLOPE, CF_RIVER_EDGE, CF_RIVER_GUI, CF_BUOY, CF_END, }; /** Canal properties local to the NewGRF */ struct CanalProperties { uint8 callback_mask; ///< Bitmask of canal callbacks that have to be called. uint8 flags; ///< Flags controlling display. }; enum GrfLoadingStage { GLS_FILESCAN, GLS_SAFETYSCAN, GLS_LABELSCAN, GLS_INIT, GLS_RESERVE, GLS_ACTIVATION, GLS_END, }; DECLARE_POSTFIX_INCREMENT(GrfLoadingStage) enum GrfMiscBit { GMB_DESERT_TREES_FIELDS = 0, // Unsupported. GMB_DESERT_PAVED_ROADS = 1, GMB_FIELD_BOUNDING_BOX = 2, // Unsupported. GMB_TRAIN_WIDTH_32_PIXELS = 3, ///< Use 32 pixels per train vehicle in depot gui and vehicle details. Never set in the global variable; @see GRFFile::traininfo_vehicle_width GMB_AMBIENT_SOUND_CALLBACK = 4, GMB_CATENARY_ON_3RD_TRACK = 5, // Unsupported. }; enum GrfSpecFeature { GSF_TRAINS, GSF_ROADVEHICLES, GSF_SHIPS, GSF_AIRCRAFT, GSF_STATIONS, GSF_CANALS, GSF_BRIDGES, GSF_HOUSES, GSF_GLOBALVAR, GSF_INDUSTRYTILES, GSF_INDUSTRIES, GSF_CARGOES, GSF_SOUNDFX, GSF_AIRPORTS, GSF_SIGNALS, GSF_OBJECTS, GSF_RAILTYPES, GSF_AIRPORTTILES, GSF_END, GSF_FAKE_TOWNS = GSF_END, ///< Fake town GrfSpecFeature for NewGRF debugging (parent scope) GSF_FAKE_END, ///< End of the fake features GSF_INVALID = 0xFF, ///< An invalid spec feature }; static const uint32 INVALID_GRFID = 0xFFFFFFFF; struct GRFLabel { byte label; uint32 nfo_line; size_t pos; struct GRFLabel *next; }; /** Dynamic data of a loaded NewGRF */ struct GRFFile : ZeroedMemoryAllocator { char *filename; bool is_ottdfile; uint32 grfid; byte grf_version; uint sound_offset; uint16 num_sounds; struct StationSpec **stations; struct HouseSpec **housespec; struct IndustrySpec **industryspec; struct IndustryTileSpec **indtspec; struct ObjectSpec **objectspec; struct AirportSpec **airportspec; struct AirportTileSpec **airtspec; uint32 param[0x80]; uint param_end; ///< one more than the highest set parameter GRFLabel *label; ///< Pointer to the first label. This is a linked list, not an array. SmallVector cargo_list; ///< Cargo translation table (local ID -> label) uint8 cargo_map[NUM_CARGO]; ///< Inverse cargo translation table (CargoID -> local ID) SmallVector railtype_list; ///< Railtype translation table RailType railtype_map[RAILTYPE_END]; CanalProperties canal_local_properties[CF_END]; ///< Canal properties as set by this NewGRF struct LanguageMap *language_map; ///< Mappings related to the languages. int traininfo_vehicle_pitch; ///< Vertical offset for draing train images in depot GUI and vehicle details uint traininfo_vehicle_width; ///< Width (in pixels) of a 8/8 train vehicle in depot GUI and vehicle details uint32 grf_features; ///< Bitset of GrfSpecFeature the grf uses PriceMultipliers price_base_multipliers; ///< Price base multipliers as set by the grf. GRFFile(const struct GRFConfig *config); ~GRFFile(); /** Get GRF Parameter with range checking */ uint32 GetParam(uint number) const { /* Note: We implicitly test for number < lengthof(this->param) and return 0 for invalid parameters. * In fact this is the more important test, as param is zeroed anyway. */ assert(this->param_end <= lengthof(this->param)); return (number < this->param_end) ? this->param[number] : 0; } }; enum ShoreReplacement { SHORE_REPLACE_NONE, ///< No shore sprites were replaced. SHORE_REPLACE_ACTION_5, ///< Shore sprites were replaced by Action5. SHORE_REPLACE_ACTION_A, ///< Shore sprites were replaced by ActionA (using grass tiles for the corner-shores). SHORE_REPLACE_ONLY_NEW, ///< Only corner-shores were loaded by Action5 (openttd(w/d).grf only). }; struct GRFLoadedFeatures { bool has_2CC; ///< Set if any vehicle is loaded which uses 2cc (two company colours). uint64 used_liveries; ///< Bitmask of #LiveryScheme used by the defined engines. bool has_newhouses; ///< Set if there are any newhouses loaded. bool has_newindustries; ///< Set if there are any newindustries loaded. ShoreReplacement shore; ///< It which way shore sprites were replaced. }; /** * Check for grf miscellaneous bits * @param bit The bit to check. * @return Whether the bit is set. */ static inline bool HasGrfMiscBit(GrfMiscBit bit) { extern byte _misc_grf_features; return HasBit(_misc_grf_features, bit); } /* Indicates which are the newgrf features currently loaded ingame */ extern GRFLoadedFeatures _loaded_newgrf_features; byte GetGRFContainerVersion(); void LoadNewGRFFile(struct GRFConfig *config, uint file_index, GrfLoadingStage stage, Subdirectory subdir); void LoadNewGRF(uint load_index, uint file_index); void ReloadNewGRFData(); // in saveload/afterload.cpp void ResetNewGRFData(); void ResetPersistentNewGRFData(); void CDECL grfmsg(int severity, const char *str, ...) WARN_FORMAT(2, 3); bool GetGlobalVariable(byte param, uint32 *value, const GRFFile *grffile); StringID MapGRFStringID(uint32 grfid, StringID str); void ShowNewGRFError(); #endif /* NEWGRF_H */ openttd-1.3.3/src/debug.h0000644000000000000000000000714512246102611013721 0ustar rootroot/* $Id: debug.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file debug.h Functions related to debugging. */ #ifndef DEBUG_H #define DEBUG_H /* Debugging messages policy: * These should be the severities used for direct DEBUG() calls * maximum debugging level should be 10 if really deep, deep * debugging is needed. * (there is room for exceptions, but you have to have a good cause): * 0 - errors or severe warnings * 1 - other non-fatal, non-severe warnings * 2 - crude progress indicator of functionality * 3 - important debugging messages (function entry) * 4 - debugging messages (crude loop status, etc.) * 5 - detailed debugging information * 6.. - extremely detailed spamming */ #ifdef NO_DEBUG_MESSAGES #define DEBUG(name, level, ...) { } #else /* NO_DEBUG_MESSAGES */ /** * Output a line of debugging information. * @param name Category * @param level Debugging level, higher levels means more detailed information. */ #define DEBUG(name, level, ...) if ((level) == 0 || _debug_ ## name ## _level >= (level)) debug(#name, __VA_ARGS__) extern int _debug_driver_level; extern int _debug_grf_level; extern int _debug_map_level; extern int _debug_misc_level; extern int _debug_net_level; extern int _debug_sprite_level; extern int _debug_oldloader_level; extern int _debug_npf_level; extern int _debug_yapf_level; extern int _debug_freetype_level; extern int _debug_script_level; extern int _debug_sl_level; extern int _debug_gamelog_level; extern int _debug_desync_level; extern int _debug_console_level; #ifdef RANDOM_DEBUG extern int _debug_random_level; #endif void CDECL debug(const char *dbg, const char *format, ...) WARN_FORMAT(2, 3); #endif /* NO_DEBUG_MESSAGES */ char *DumpDebugFacilityNames(char *buf, char *last); void SetDebugString(const char *s); const char *GetDebugString(); /* Shorter form for passing filename and linenumber */ #define FILE_LINE __FILE__, __LINE__ /** * Get the tick counter from the CPU (high precision timing). * @return The count. */ uint64 ottd_rdtsc(); /* Used for profiling * * Usage: * TIC(); * --Do your code-- * TOC("A name", 1); * * When you run the TIC() / TOC() multiple times, you can increase the '1' * to only display average stats every N values. Some things to know: * * for (int i = 0; i < 5; i++) { * TIC(); * --Do your code-- * TOC("A name", 5); * } * * Is the correct usage for multiple TIC() / TOC() calls. * * TIC() / TOC() creates its own block, so make sure not the mangle * it with another block. **/ #define TIC() {\ uint64 _xxx_ = ottd_rdtsc();\ static uint64 __sum__ = 0;\ static uint32 __i__ = 0; #define TOC(str, count)\ __sum__ += ottd_rdtsc() - _xxx_;\ if (++__i__ == count) {\ DEBUG(misc, 0, "[%s] " OTTD_PRINTF64 " [avg: %.1f]", str, __sum__, __sum__/(double)__i__);\ __i__ = 0;\ __sum__ = 0;\ }\ } void ShowInfo(const char *str); void CDECL ShowInfoF(const char *str, ...) WARN_FORMAT(1, 2); const char *GetLogPrefix(); /** The real time in the game. */ extern uint32 _realtime_tick; #endif /* DEBUG_H */ openttd-1.3.3/src/statusbar_gui.cpp0000644000000000000000000002206512246102611016040 0ustar rootroot/* $Id: statusbar_gui.cpp 24801 2012-12-08 17:18:51Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file statusbar_gui.cpp The GUI for the bottom status bar. */ #include "stdafx.h" #include "date_func.h" #include "gfx_func.h" #include "news_func.h" #include "company_func.h" #include "string_func.h" #include "strings_func.h" #include "company_base.h" #include "tilehighlight_func.h" #include "news_gui.h" #include "company_gui.h" #include "window_gui.h" #include "saveload/saveload.h" #include "window_func.h" #include "statusbar_gui.h" #include "core/geometry_func.hpp" #include "widgets/statusbar_widget.h" #include "table/strings.h" #include "table/sprites.h" static bool DrawScrollingStatusText(const NewsItem *ni, int scroll_pos, int left, int right, int top, int bottom) { CopyInDParam(0, ni->params, lengthof(ni->params)); StringID str = ni->string_id; char buf[512]; GetString(buf, str, lastof(buf)); const char *s = buf; char buffer[256]; char *d = buffer; const char *last = lastof(buffer); for (;;) { WChar c = Utf8Consume(&s); if (c == 0) { break; } else if (c == '\n') { if (d + 4 >= last) break; d[0] = d[1] = d[2] = d[3] = ' '; d += 4; } else if (IsPrintable(c)) { if (d + Utf8CharLen(c) >= last) break; d += Utf8Encode(d, c); } } *d = '\0'; DrawPixelInfo tmp_dpi; if (!FillDrawPixelInfo(&tmp_dpi, left, top, right - left, bottom)) return true; int width = GetStringBoundingBox(buffer).width; int pos = (_current_text_dir == TD_RTL) ? (scroll_pos - width) : (right - scroll_pos - left); DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; DrawString(pos, INT16_MAX, 0, buffer, TC_LIGHT_BLUE, SA_LEFT | SA_FORCE); _cur_dpi = old_dpi; return (_current_text_dir == TD_RTL) ? (pos < right - left) : (pos + width > 0); } struct StatusBarWindow : Window { bool saving; int ticker_scroll; int reminder_timeout; static const int TICKER_STOP = 1640; ///< scrolling is finished when counter reaches this value static const int REMINDER_START = 91; ///< initial value of the reminder counter (right dot on the right) static const int REMINDER_STOP = 0; ///< reminder disappears when counter reaches this value static const int COUNTER_STEP = 2; ///< this is subtracted from active counters every tick StatusBarWindow(const WindowDesc *desc) : Window() { this->ticker_scroll = TICKER_STOP; this->reminder_timeout = REMINDER_STOP; this->InitNested(desc); CLRBITS(this->flags, WF_WHITE_BORDER); PositionStatusbar(this); } virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) { Point pt = { 0, _screen.height - sm_height }; return pt; } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { Dimension d; switch (widget) { case WID_S_LEFT: SetDParamMaxValue(0, MAX_YEAR * DAYS_IN_YEAR); d = GetStringBoundingBox(STR_WHITE_DATE_LONG); break; case WID_S_RIGHT: { int64 max_money = UINT32_MAX; const Company *c; FOR_ALL_COMPANIES(c) max_money = max(c->money, max_money); SetDParam(0, 100LL * max_money); d = GetStringBoundingBox(STR_COMPANY_MONEY); break; } default: return; } d.width += padding.width; d.height += padding.height; *size = maxdim(d, *size); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_S_LEFT: /* Draw the date */ SetDParam(0, _date); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_WHITE_DATE_LONG, TC_FROMSTRING, SA_HOR_CENTER); break; case WID_S_RIGHT: { /* Draw company money, if any */ const Company *c = Company::GetIfValid(_local_company); if (c != NULL) { SetDParam(0, c->money); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_COMPANY_MONEY, TC_FROMSTRING, SA_HOR_CENTER); } break; } case WID_S_MIDDLE: /* Draw status bar */ if (this->saving) { // true when saving is active DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_STATUSBAR_SAVING_GAME, TC_FROMSTRING, SA_HOR_CENTER); } else if (_do_autosave) { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_STATUSBAR_AUTOSAVE, TC_FROMSTRING, SA_HOR_CENTER); } else if (_pause_mode != PM_UNPAUSED) { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_STATUSBAR_PAUSED, TC_FROMSTRING, SA_HOR_CENTER); } else if (this->ticker_scroll < TICKER_STOP && FindWindowById(WC_NEWS_WINDOW, 0) == NULL && _statusbar_news_item != NULL && _statusbar_news_item->string_id != 0) { /* Draw the scrolling news text */ if (!DrawScrollingStatusText(_statusbar_news_item, this->ticker_scroll, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom)) { InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); if (Company::IsValidID(_local_company)) { /* This is the default text */ SetDParam(0, _local_company); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_STATUSBAR_COMPANY_NAME, TC_FROMSTRING, SA_HOR_CENTER); } } } else { if (Company::IsValidID(_local_company)) { /* This is the default text */ SetDParam(0, _local_company); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, STR_STATUSBAR_COMPANY_NAME, TC_FROMSTRING, SA_HOR_CENTER); } } if (this->reminder_timeout > 0) { Dimension icon_size = GetSpriteSize(SPR_UNREAD_NEWS); DrawSprite(SPR_UNREAD_NEWS, PAL_NONE, r.right - WD_FRAMERECT_RIGHT - icon_size.width, r.top + WD_FRAMERECT_TOP + (int)(FONT_HEIGHT_NORMAL - icon_size.height) / 2); } break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; switch (data) { default: NOT_REACHED(); case SBI_SAVELOAD_START: this->saving = true; break; case SBI_SAVELOAD_FINISH: this->saving = false; break; case SBI_SHOW_TICKER: this->ticker_scroll = 0; break; case SBI_SHOW_REMINDER: this->reminder_timeout = REMINDER_START; break; case SBI_NEWS_DELETED: this->ticker_scroll = TICKER_STOP; // reset ticker ... this->reminder_timeout = REMINDER_STOP; // ... and reminder break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_S_MIDDLE: ShowLastNewsMessage(); break; case WID_S_RIGHT: if (_local_company != COMPANY_SPECTATOR) ShowCompanyFinances(_local_company); break; default: ResetObjectToPlace(); } } virtual void OnTick() { if (_pause_mode != PM_UNPAUSED) return; if (this->ticker_scroll < TICKER_STOP) { // Scrolling text this->ticker_scroll += COUNTER_STEP; this->SetWidgetDirty(WID_S_MIDDLE); } if (this->reminder_timeout > REMINDER_STOP) { // Red blot to show there are new unread newsmessages this->reminder_timeout -= COUNTER_STEP; } else if (this->reminder_timeout < REMINDER_STOP) { this->reminder_timeout = REMINDER_STOP; this->SetWidgetDirty(WID_S_MIDDLE); } } }; static const NWidgetPart _nested_main_status_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_S_LEFT), SetMinimalSize(140, 12), EndContainer(), NWidget(WWT_PUSHBTN, COLOUR_GREY, WID_S_MIDDLE), SetMinimalSize(40, 12), SetDataTip(0x0, STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS), SetResize(1, 0), NWidget(WWT_PUSHBTN, COLOUR_GREY, WID_S_RIGHT), SetMinimalSize(140, 12), EndContainer(), }; static WindowDesc _main_status_desc( WDP_MANUAL, 640, 12, WC_STATUS_BAR, WC_NONE, WDF_NO_FOCUS, _nested_main_status_widgets, lengthof(_nested_main_status_widgets) ); /** * Checks whether the news ticker is currently being used. */ bool IsNewsTickerShown() { const StatusBarWindow *w = dynamic_cast(FindWindowById(WC_STATUS_BAR, 0)); return w != NULL && w->ticker_scroll < StatusBarWindow::TICKER_STOP; } int16 *_preferred_statusbar_size = &_main_status_desc.default_width; ///< Pointer to the default size for the status toolbar. /** * Show our status bar. */ void ShowStatusBar() { new StatusBarWindow(&_main_status_desc); } openttd-1.3.3/src/effectvehicle_base.h0000644000000000000000000000340012246102611016407 0ustar rootroot/* $Id: effectvehicle_base.h 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file effectvehicle_base.h Base class for all effect vehicles. */ #ifndef EFFECTVEHICLE_BASE_H #define EFFECTVEHICLE_BASE_H #include "vehicle_base.h" #include "transparency.h" /** * A special vehicle is one of the following: * - smoke * - electric sparks for trains * - explosions * - bulldozer (road works) * - bubbles (industry) */ struct EffectVehicle FINAL : public SpecializedVehicle { uint16 animation_state; ///< State primarily used to change the graphics/behaviour. byte animation_substate; ///< Sub state to time the change of the graphics/behaviour. /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ EffectVehicle() : SpecializedVehicleBase() {} /** We want to 'destruct' the right class. */ virtual ~EffectVehicle() {} void UpdateDeltaXY(Direction direction); bool Tick(); TransparencyOption GetTransparencyOption() const; }; /** * Iterate over disaster vehicles. * @param var The variable used to iterate over. */ #define FOR_ALL_EFFECTVEHICLES(var) FOR_ALL_VEHICLES_OF_TYPE(EffectVehicle, var) #endif /* EFFECTVEHICLE_BASE_H */ openttd-1.3.3/src/textbuf_gui.h0000644000000000000000000000364212246102610015155 0ustar rootroot/* $Id: textbuf_gui.h 24323 2012-06-04 15:29:37Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file textbuf_gui.h Stuff related to the text buffer GUI. */ #ifndef TEXTBUF_GUI_H #define TEXTBUF_GUI_H #include "window_type.h" #include "string_type.h" #include "strings_type.h" /** Flags used in ShowQueryString() call */ enum QueryStringFlags { QSF_NONE = 0, QSF_ACCEPT_UNCHANGED = 0x01, ///< return success even when the text didn't change QSF_ENABLE_DEFAULT = 0x02, ///< enable the 'Default' button ("\0" is returned) QSF_LEN_IN_CHARS = 0x04, ///< the length of the string is counted in characters }; DECLARE_ENUM_AS_BIT_SET(QueryStringFlags) /** Callback procedure for the ShowQuery method. */ typedef void QueryCallbackProc(Window*, bool); void ShowQueryString(StringID str, StringID caption, uint max_len, Window *parent, CharSetFilter afilter, QueryStringFlags flags); void ShowQuery(StringID caption, StringID message, Window *w, QueryCallbackProc *callback); /** The number of 'characters' on the on-screen keyboard. */ static const uint OSK_KEYBOARD_ENTRIES = 50; /** * The number of characters has to be OSK_KEYBOARD_ENTRIES. However, these * have to be UTF-8 encoded, which means up to 4 bytes per character. * Furthermore the string needs to be '\0'-terminated. */ extern char _keyboard_opt[2][OSK_KEYBOARD_ENTRIES * 4 + 1]; #endif /* TEXTBUF_GUI_H */ openttd-1.3.3/src/newgrf_town.h0000644000000000000000000000363012246102610015164 0ustar rootroot/* $Id: newgrf_town.h 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_town.h Functions to handle the town part of NewGRF towns. */ #ifndef NEWGRF_TOWN_H #define NEWGRF_TOWN_H #include "town_type.h" #include "newgrf_spritegroup.h" /** * Scope resolver for a town. * @note Currently there is no direct town resolver; we only need to get town * variable results from inside stations, house tiles and industries, * and to check the town's persistent storage. */ struct TownScopeResolver : public ScopeResolver { Town *t; ///< %Town of the scope. bool readonly; ///< When set, persistent storage of the town is read-only, TownScopeResolver(ResolverObject *ro, Town *t, bool readonly); virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; virtual void StorePSA(uint reg, int32 value); }; /** Resolver of town properties. */ struct TownResolverObject : public ResolverObject { TownScopeResolver town_scope; ///< Scope resolver specific for towns. TownResolverObject(const struct GRFFile *grffile, Town *t, bool readonly); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { switch (scope) { case VSG_SCOPE_SELF: return &town_scope; default: return ResolverObject::GetScope(scope, relative); } } }; #endif /* NEWGRF_TOWN_H */ openttd-1.3.3/src/newgrf_config.cpp0000644000000000000000000006571312246102610016007 0ustar rootroot/* $Id: newgrf_config.cpp 24318 2012-06-01 15:20:18Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_config.cpp Finding NewGRFs and configuring them. */ #include "stdafx.h" #include "debug.h" #include "3rdparty/md5/md5.h" #include "newgrf.h" #include "network/network_func.h" #include "gfx_func.h" #include "newgrf_text.h" #include "window_func.h" #include "progress.h" #include "video/video_driver.hpp" #include "strings_func.h" #include "textfile_gui.h" #include "fileio_func.h" #include "fios.h" /** Create a new GRFTextWrapper. */ GRFTextWrapper::GRFTextWrapper() : text(NULL) { } /** Cleanup a GRFTextWrapper object. */ GRFTextWrapper::~GRFTextWrapper() { CleanUpGRFText(this->text); } /** * Create a new GRFConfig. * @param filename Set the filename of this GRFConfig to filename. The argument * is copied so the original string isn't needed after the constructor. */ GRFConfig::GRFConfig(const char *filename) : name(new GRFTextWrapper()), info(new GRFTextWrapper()), url(new GRFTextWrapper()), num_valid_params(lengthof(param)) { if (filename != NULL) this->filename = strdup(filename); this->name->AddRef(); this->info->AddRef(); this->url->AddRef(); } /** * Create a new GRFConfig that is a deep copy of an existing config. * @param config The GRFConfig object to make a copy of. */ GRFConfig::GRFConfig(const GRFConfig &config) : ZeroedMemoryAllocator(), ident(config.ident), name(config.name), info(config.info), url(config.url), version(config.version), min_loadable_version(config.min_loadable_version), flags(config.flags & ~(1 << GCF_COPY)), status(config.status), grf_bugs(config.grf_bugs), num_params(config.num_params), num_valid_params(config.num_valid_params), palette(config.palette), has_param_defaults(config.has_param_defaults) { MemCpyT(this->original_md5sum, config.original_md5sum, lengthof(this->original_md5sum)); MemCpyT(this->param, config.param, lengthof(this->param)); if (config.filename != NULL) this->filename = strdup(config.filename); this->name->AddRef(); this->info->AddRef(); this->url->AddRef(); if (config.error != NULL) this->error = new GRFError(*config.error); for (uint i = 0; i < config.param_info.Length(); i++) { if (config.param_info[i] == NULL) { *this->param_info.Append() = NULL; } else { *this->param_info.Append() = new GRFParameterInfo(*config.param_info[i]); } } } /** Cleanup a GRFConfig object. */ GRFConfig::~GRFConfig() { /* GCF_COPY as in NOT strdupped/alloced the filename */ if (!HasBit(this->flags, GCF_COPY)) { free(this->filename); delete this->error; } this->name->Release(); this->info->Release(); this->url->Release(); for (uint i = 0; i < this->param_info.Length(); i++) delete this->param_info[i]; } /** * Get the name of this grf. In case the name isn't known * the filename is returned. * @return The name of filename of this grf. */ const char *GRFConfig::GetName() const { const char *name = GetGRFStringFromGRFText(this->name->text); return StrEmpty(name) ? this->filename : name; } /** * Get the grf info. * @return A string with a description of this grf. */ const char *GRFConfig::GetDescription() const { return GetGRFStringFromGRFText(this->info->text); } /** * Get the grf url. * @return A string with an url of this grf. */ const char *GRFConfig::GetURL() const { return GetGRFStringFromGRFText(this->url->text); } /** Set the default value for all parameters as specified by action14. */ void GRFConfig::SetParameterDefaults() { this->num_params = 0; MemSetT(this->param, 0, lengthof(this->param)); if (!this->has_param_defaults) return; for (uint i = 0; i < this->param_info.Length(); i++) { if (this->param_info[i] == NULL) continue; this->param_info[i]->SetValue(this, this->param_info[i]->def_value); } } /** * Set the palette of this GRFConfig to something suitable. * That is either the setting coming from the NewGRF or * the globally used palette. */ void GRFConfig::SetSuitablePalette() { PaletteType pal; switch (this->palette & GRFP_GRF_MASK) { case GRFP_GRF_DOS: pal = PAL_DOS; break; case GRFP_GRF_WINDOWS: pal = PAL_WINDOWS; break; default: pal = _settings_client.gui.newgrf_default_palette == 1 ? PAL_WINDOWS : PAL_DOS; break; } SB(this->palette, GRFP_USE_BIT, 1, pal == PAL_WINDOWS ? GRFP_USE_WINDOWS : GRFP_USE_DOS); } /** * Finalize Action 14 info after file scan is finished. */ void GRFConfig::FinalizeParameterInfo() { for (GRFParameterInfo **info = this->param_info.Begin(); info != this->param_info.End(); ++info) { if (*info == NULL) continue; (*info)->Finalize(); } } GRFConfig *_all_grfs; GRFConfig *_grfconfig; GRFConfig *_grfconfig_newgame; GRFConfig *_grfconfig_static; /** * Construct a new GRFError. * @param severity The severity of this error. * @param message The actual error-string. */ GRFError::GRFError(StringID severity, StringID message) : message(message), severity(severity) { } /** * Create a new GRFError that is a deep copy of an existing error message. * @param error The GRFError object to make a copy of. */ GRFError::GRFError(const GRFError &error) : ZeroedMemoryAllocator(), custom_message(error.custom_message), data(error.data), message(error.message), severity(error.severity) { if (error.custom_message != NULL) this->custom_message = strdup(error.custom_message); if (error.data != NULL) this->data = strdup(error.data); memcpy(this->param_value, error.param_value, sizeof(this->param_value)); } GRFError::~GRFError() { free(this->custom_message); free(this->data); } /** * Create a new empty GRFParameterInfo object. * @param nr The newgrf parameter that is changed. */ GRFParameterInfo::GRFParameterInfo(uint nr) : name(NULL), desc(NULL), type(PTYPE_UINT_ENUM), min_value(0), max_value(UINT32_MAX), def_value(0), param_nr(nr), first_bit(0), num_bit(32) {} /** * Create a new GRFParameterInfo object that is a deep copy of an existing * parameter info object. * @param info The GRFParameterInfo object to make a copy of. */ GRFParameterInfo::GRFParameterInfo(GRFParameterInfo &info) : name(DuplicateGRFText(info.name)), desc(DuplicateGRFText(info.desc)), type(info.type), min_value(info.min_value), max_value(info.max_value), def_value(info.def_value), param_nr(info.param_nr), first_bit(info.first_bit), num_bit(info.num_bit), complete_labels(info.complete_labels) { for (uint i = 0; i < info.value_names.Length(); i++) { SmallPair *data = info.value_names.Get(i); this->value_names.Insert(data->first, DuplicateGRFText(data->second)); } } /** Cleanup all parameter info. */ GRFParameterInfo::~GRFParameterInfo() { CleanUpGRFText(this->name); CleanUpGRFText(this->desc); for (uint i = 0; i < this->value_names.Length(); i++) { SmallPair *data = this->value_names.Get(i); CleanUpGRFText(data->second); } } /** * Get the value of this user-changeable parameter from the given config. * @param config The GRFConfig to get the value from. * @return The value of this parameter. */ uint32 GRFParameterInfo::GetValue(struct GRFConfig *config) const { /* GB doesn't work correctly with nbits == 32, so handle that case here. */ if (this->num_bit == 32) return config->param[this->param_nr]; return GB(config->param[this->param_nr], this->first_bit, this->num_bit); } /** * Set the value of this user-changeable parameter in the given config. * @param config The GRFConfig to set the value in. * @param value The new value. */ void GRFParameterInfo::SetValue(struct GRFConfig *config, uint32 value) { /* SB doesn't work correctly with nbits == 32, so handle that case here. */ if (this->num_bit == 32) { config->param[this->param_nr] = value; } else { SB(config->param[this->param_nr], this->first_bit, this->num_bit, value); } config->num_params = max(config->num_params, this->param_nr + 1); SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_NEWGRF_STATE); } /** * Finalize Action 14 info after file scan is finished. */ void GRFParameterInfo::Finalize() { this->complete_labels = true; for (uint32 value = this->min_value; value <= this->max_value; value++) { if (!this->value_names.Contains(value)) { this->complete_labels = false; break; } } } /** * Update the palettes of the graphics from the config file. * Called when changing the default palette in advanced settings. * @param p1 Unused. * @return Always true. */ bool UpdateNewGRFConfigPalette(int32 p1) { for (GRFConfig *c = _grfconfig_newgame; c != NULL; c = c->next) c->SetSuitablePalette(); for (GRFConfig *c = _grfconfig_static; c != NULL; c = c->next) c->SetSuitablePalette(); for (GRFConfig *c = _all_grfs; c != NULL; c = c->next) c->SetSuitablePalette(); return true; } /** * Get the data section size of a GRF. * @param f GRF. * @return Size of the data section or SIZE_MAX if the file has no separate data section. */ size_t GRFGetSizeOfDataSection(FILE *f) { extern const byte _grf_cont_v2_sig[]; static const uint header_len = 14; byte data[header_len]; if (fread(data, 1, header_len, f) == header_len) { if (data[0] == 0 && data[1] == 0 && MemCmpT(data + 2, _grf_cont_v2_sig, 8) == 0) { /* Valid container version 2, get data section size. */ size_t offset = (data[13] << 24) | (data[12] << 16) | (data[11] << 8) | data[10]; return header_len + offset; } } return SIZE_MAX; } /** * Calculate the MD5 sum for a GRF, and store it in the config. * @param config GRF to compute. * @param subdir The subdirectory to look in. * @return MD5 sum was successfully computed */ static bool CalcGRFMD5Sum(GRFConfig *config, Subdirectory subdir) { FILE *f; Md5 checksum; uint8 buffer[1024]; size_t len, size; /* open the file */ f = FioFOpenFile(config->filename, "rb", subdir, &size); if (f == NULL) return false; size_t start = ftell(f); size = min(size, GRFGetSizeOfDataSection(f)); fseek(f, start, SEEK_SET); /* calculate md5sum */ while ((len = fread(buffer, 1, (size > sizeof(buffer)) ? sizeof(buffer) : size, f)) != 0 && size != 0) { size -= len; checksum.Append(buffer, len); } checksum.Finish(config->ident.md5sum); FioFCloseFile(f); return true; } /** * Find the GRFID of a given grf, and calculate its md5sum. * @param config grf to fill. * @param is_static grf is static. * @param subdir the subdirectory to search in. * @return Operation was successfully completed. */ bool FillGRFDetails(GRFConfig *config, bool is_static, Subdirectory subdir) { if (!FioCheckFileExists(config->filename, subdir)) { config->status = GCS_NOT_FOUND; return false; } /* Find and load the Action 8 information */ LoadNewGRFFile(config, CONFIG_SLOT, GLS_FILESCAN, subdir); config->SetSuitablePalette(); config->FinalizeParameterInfo(); /* Skip if the grfid is 0 (not read) or 0xFFFFFFFF (ttdp system grf) */ if (config->ident.grfid == 0 || config->ident.grfid == 0xFFFFFFFF || config->IsOpenTTDBaseGRF()) return false; if (is_static) { /* Perform a 'safety scan' for static GRFs */ LoadNewGRFFile(config, 62, GLS_SAFETYSCAN, subdir); /* GCF_UNSAFE is set if GLS_SAFETYSCAN finds unsafe actions */ if (HasBit(config->flags, GCF_UNSAFE)) return false; } return CalcGRFMD5Sum(config, subdir); } /** * Clear a GRF Config list, freeing all nodes. * @param config Start of the list. * @post \a config is set to \c NULL. */ void ClearGRFConfigList(GRFConfig **config) { GRFConfig *c, *next; for (c = *config; c != NULL; c = next) { next = c->next; delete c; } *config = NULL; } /** * Copy a GRF Config list * @param dst pointer to destination list * @param src pointer to source list values * @param init_only the copied GRF will be processed up to GLS_INIT * @return pointer to the last value added to the destination list */ GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src, bool init_only) { /* Clear destination as it will be overwritten */ ClearGRFConfigList(dst); for (; src != NULL; src = src->next) { GRFConfig *c = new GRFConfig(*src); ClrBit(c->flags, GCF_INIT_ONLY); if (init_only) SetBit(c->flags, GCF_INIT_ONLY); *dst = c; dst = &c->next; } return dst; } /** * Removes duplicates from lists of GRFConfigs. These duplicates * are introduced when the _grfconfig_static GRFs are appended * to the _grfconfig on a newgame or savegame. As the parameters * of the static GRFs could be different that the parameters of * the ones used non-statically. This can result in desyncs in * multiplayers, so the duplicate static GRFs have to be removed. * * This function _assumes_ that all static GRFs are placed after * the non-static GRFs. * * @param list the list to remove the duplicates from */ static void RemoveDuplicatesFromGRFConfigList(GRFConfig *list) { GRFConfig *prev; GRFConfig *cur; if (list == NULL) return; for (prev = list, cur = list->next; cur != NULL; prev = cur, cur = cur->next) { if (cur->ident.grfid != list->ident.grfid) continue; prev->next = cur->next; delete cur; cur = prev; // Just go back one so it continues as normal later on } RemoveDuplicatesFromGRFConfigList(list->next); } /** * Appends the static GRFs to a list of GRFs * @param dst the head of the list to add to */ void AppendStaticGRFConfigs(GRFConfig **dst) { GRFConfig **tail = dst; while (*tail != NULL) tail = &(*tail)->next; CopyGRFConfigList(tail, _grfconfig_static, false); RemoveDuplicatesFromGRFConfigList(*dst); } /** * Appends an element to a list of GRFs * @param dst the head of the list to add to * @param el the new tail to be */ void AppendToGRFConfigList(GRFConfig **dst, GRFConfig *el) { GRFConfig **tail = dst; while (*tail != NULL) tail = &(*tail)->next; *tail = el; RemoveDuplicatesFromGRFConfigList(*dst); } /** Reset the current GRF Config to either blank or newgame settings. */ void ResetGRFConfig(bool defaults) { CopyGRFConfigList(&_grfconfig, _grfconfig_newgame, !defaults); AppendStaticGRFConfigs(&_grfconfig); } /** * Check if all GRFs in the GRF config from a savegame can be loaded. * @param grfconfig GrfConfig to check * @return will return any of the following 3 values:
*
    *
  • GLC_ALL_GOOD: No problems occurred, all GRF files were found and loaded *
  • GLC_COMPATIBLE: For one or more GRF's no exact match was found, but a * compatible GRF with the same grfid was found and used instead *
  • GLC_NOT_FOUND: For one or more GRF's no match was found at all *
*/ GRFListCompatibility IsGoodGRFConfigList(GRFConfig *grfconfig) { GRFListCompatibility res = GLC_ALL_GOOD; for (GRFConfig *c = grfconfig; c != NULL; c = c->next) { const GRFConfig *f = FindGRFConfig(c->ident.grfid, FGCM_EXACT, c->ident.md5sum); if (f == NULL || HasBit(f->flags, GCF_INVALID)) { char buf[256]; /* If we have not found the exactly matching GRF try to find one with the * same grfid, as it most likely is compatible */ f = FindGRFConfig(c->ident.grfid, FGCM_COMPATIBLE, NULL, c->version); if (f != NULL) { md5sumToString(buf, lastof(buf), c->ident.md5sum); DEBUG(grf, 1, "NewGRF %08X (%s) not found; checksum %s. Compatibility mode on", BSWAP32(c->ident.grfid), c->filename, buf); if (!HasBit(c->flags, GCF_COMPATIBLE)) { /* Preserve original_md5sum after it has been assigned */ SetBit(c->flags, GCF_COMPATIBLE); memcpy(c->original_md5sum, c->ident.md5sum, sizeof(c->original_md5sum)); } /* Non-found has precedence over compatibility load */ if (res != GLC_NOT_FOUND) res = GLC_COMPATIBLE; goto compatible_grf; } /* No compatible grf was found, mark it as disabled */ md5sumToString(buf, lastof(buf), c->ident.md5sum); DEBUG(grf, 0, "NewGRF %08X (%s) not found; checksum %s", BSWAP32(c->ident.grfid), c->filename, buf); c->status = GCS_NOT_FOUND; res = GLC_NOT_FOUND; } else { compatible_grf: DEBUG(grf, 1, "Loading GRF %08X from %s", BSWAP32(f->ident.grfid), f->filename); /* The filename could be the filename as in the savegame. As we need * to load the GRF here, we need the correct filename, so overwrite that * in any case and set the name and info when it is not set already. * When the GCF_COPY flag is set, it is certain that the filename is * already a local one, so there is no need to replace it. */ if (!HasBit(c->flags, GCF_COPY)) { free(c->filename); c->filename = strdup(f->filename); memcpy(c->ident.md5sum, f->ident.md5sum, sizeof(c->ident.md5sum)); c->name->Release(); c->name = f->name; c->name->AddRef(); c->info->Release(); c->info = f->name; c->info->AddRef(); c->error = NULL; c->version = f->version; c->min_loadable_version = f->min_loadable_version; c->num_valid_params = f->num_valid_params; c->has_param_defaults = f->has_param_defaults; for (uint i = 0; i < f->param_info.Length(); i++) { if (f->param_info[i] == NULL) { *c->param_info.Append() = NULL; } else { *c->param_info.Append() = new GRFParameterInfo(*f->param_info[i]); } } } } } return res; } /** Helper for scanning for files with GRF as extension */ class GRFFileScanner : FileScanner { uint next_update; ///< The next (realtime tick) we do update the screen. uint num_scanned; ///< The number of GRFs we have scanned. public: GRFFileScanner() : next_update(_realtime_tick), num_scanned(0) { } /* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename); /** Do the scan for GRFs. */ static uint DoScan() { GRFFileScanner fs; int ret = fs.Scan(".grf", NEWGRF_DIR); /* The number scanned and the number returned may not be the same; * duplicate NewGRFs and base sets are ignored in the return value. */ _settings_client.gui.last_newgrf_count = fs.num_scanned; return ret; } }; bool GRFFileScanner::AddFile(const char *filename, size_t basepath_length, const char *tar_filename) { GRFConfig *c = new GRFConfig(filename + basepath_length); bool added = true; if (FillGRFDetails(c, false)) { if (_all_grfs == NULL) { _all_grfs = c; } else { /* Insert file into list at a position determined by its * name, so the list is sorted as we go along */ GRFConfig **pd, *d; bool stop = false; for (pd = &_all_grfs; (d = *pd) != NULL; pd = &d->next) { if (c->ident.grfid == d->ident.grfid && memcmp(c->ident.md5sum, d->ident.md5sum, sizeof(c->ident.md5sum)) == 0) added = false; /* Because there can be multiple grfs with the same name, make sure we checked all grfs with the same name, * before inserting the entry. So insert a new grf at the end of all grfs with the same name, instead of * just after the first with the same name. Avoids doubles in the list. */ if (strcasecmp(c->GetName(), d->GetName()) <= 0) { stop = true; } else if (stop) { break; } } if (added) { c->next = d; *pd = c; } } } else { added = false; } this->num_scanned++; if (this->next_update <= _realtime_tick) { _modal_progress_work_mutex->EndCritical(); _modal_progress_paint_mutex->BeginCritical(); const char *name = NULL; if (c->name != NULL) name = GetGRFStringFromGRFText(c->name->text); if (name == NULL) name = c->filename; UpdateNewGRFScanStatus(this->num_scanned, name); _modal_progress_work_mutex->BeginCritical(); _modal_progress_paint_mutex->EndCritical(); this->next_update = _realtime_tick + 200; } if (!added) { /* File couldn't be opened, or is either not a NewGRF or is a * 'system' NewGRF or it's already known, so forget about it. */ delete c; } return added; } /** * Simple sorter for GRFS * @param p1 the first GRFConfig * * @param p2 the second GRFConfig * * @return the same strcmp would return for the name of the NewGRF. */ static int CDECL GRFSorter(GRFConfig * const *p1, GRFConfig * const *p2) { const GRFConfig *c1 = *p1; const GRFConfig *c2 = *p2; return strcasecmp(c1->GetName(), c2->GetName()); } /** * Really perform the scan for all NewGRFs. * @param callback The callback to call after the scanning is complete. */ void DoScanNewGRFFiles(void *callback) { _modal_progress_work_mutex->BeginCritical(); ClearGRFConfigList(&_all_grfs); TarScanner::DoScan(TarScanner::NEWGRF); DEBUG(grf, 1, "Scanning for NewGRFs"); uint num = GRFFileScanner::DoScan(); DEBUG(grf, 1, "Scan complete, found %d files", num); if (num != 0 && _all_grfs != NULL) { /* Sort the linked list using quicksort. * For that we first have to make an array, then sort and * then remake the linked list. */ GRFConfig **to_sort = MallocT(num); uint i = 0; for (GRFConfig *p = _all_grfs; p != NULL; p = p->next, i++) { to_sort[i] = p; } /* Number of files is not necessarily right */ num = i; QSortT(to_sort, num, &GRFSorter); for (i = 1; i < num; i++) { to_sort[i - 1]->next = to_sort[i]; } to_sort[num - 1]->next = NULL; _all_grfs = to_sort[0]; free(to_sort); #ifdef ENABLE_NETWORK NetworkAfterNewGRFScan(); #endif } _modal_progress_work_mutex->EndCritical(); _modal_progress_paint_mutex->BeginCritical(); /* Yes... these are the NewGRF windows */ InvalidateWindowClassesData(WC_SAVELOAD, 0, true); InvalidateWindowData(WC_GAME_OPTIONS, WN_GAME_OPTIONS_NEWGRF_STATE, GOID_NEWGRF_RESCANNED, true); if (callback != NULL) ((NewGRFScanCallback*)callback)->OnNewGRFsScanned(); DeleteWindowByClass(WC_MODAL_PROGRESS); SetModalProgress(false); MarkWholeScreenDirty(); _modal_progress_paint_mutex->EndCritical(); } /** * Scan for all NewGRFs. * @param callback The callback to call after the scanning is complete. */ void ScanNewGRFFiles(NewGRFScanCallback *callback) { /* First set the modal progress. This ensures that it will eventually let go of the paint mutex. */ SetModalProgress(true); /* Only then can we really start, especially by marking the whole screen dirty. Get those other windows hidden!. */ MarkWholeScreenDirty(); if (!_video_driver->HasGUI() || !ThreadObject::New(&DoScanNewGRFFiles, callback, NULL)) { _modal_progress_work_mutex->EndCritical(); _modal_progress_paint_mutex->EndCritical(); DoScanNewGRFFiles(callback); _modal_progress_paint_mutex->BeginCritical(); _modal_progress_work_mutex->BeginCritical(); } else { UpdateNewGRFScanStatus(0, NULL); } } /** * Find a NewGRF in the scanned list. * @param grfid GRFID to look for, * @param mode Restrictions for matching grfs * @param md5sum Expected MD5 sum * @param desired_version Requested version * @return The matching grf, if it exists in #_all_grfs, else \c NULL. */ const GRFConfig *FindGRFConfig(uint32 grfid, FindGRFConfigMode mode, const uint8 *md5sum, uint32 desired_version) { assert((mode == FGCM_EXACT) != (md5sum == NULL)); const GRFConfig *best = NULL; for (const GRFConfig *c = _all_grfs; c != NULL; c = c->next) { /* if md5sum is set, we look for an exact match and continue if not found */ if (!c->ident.HasGrfIdentifier(grfid, md5sum)) continue; /* return it, if the exact same newgrf is found, or if we do not care about finding "the best" */ if (md5sum != NULL || mode == FGCM_ANY) return c; /* Skip incompatible stuff, unless explicitly allowed */ if (mode != FGCM_NEWEST && HasBit(c->flags, GCF_INVALID)) continue; /* check version compatibility */ if (mode == FGCM_COMPATIBLE && (c->version < desired_version || c->min_loadable_version > desired_version)) continue; /* remember the newest one as "the best" */ if (best == NULL || c->version > best->version) best = c; } return best; } #ifdef ENABLE_NETWORK /** Structure for UnknownGRFs; this is a lightweight variant of GRFConfig */ struct UnknownGRF : public GRFIdentifier { UnknownGRF *next; ///< The next unknown GRF. GRFTextWrapper *name; ///< Name of the GRF. }; /** * Finds the name of a NewGRF in the list of names for unknown GRFs. An * unknown GRF is a GRF where the .grf is not found during scanning. * * The names are resolved via UDP calls to servers that should know the name, * though the replies may not come. This leaves "" as name, though * that shouldn't matter _very_ much as they need GRF crawler or so to look * up the GRF anyway and that works better with the GRF ID. * * @param grfid the GRF ID part of the 'unique' GRF identifier * @param md5sum the MD5 checksum part of the 'unique' GRF identifier * @param create whether to create a new GRFConfig if the GRFConfig did not * exist in the fake list of GRFConfigs. * @return The GRFTextWrapper of the name of the GRFConfig with the given GRF ID * and MD5 checksum or NULL when it does not exist and create is false. * This value must NEVER be freed by the caller. */ GRFTextWrapper *FindUnknownGRFName(uint32 grfid, uint8 *md5sum, bool create) { UnknownGRF *grf; static UnknownGRF *unknown_grfs = NULL; for (grf = unknown_grfs; grf != NULL; grf = grf->next) { if (grf->grfid == grfid) { if (memcmp(md5sum, grf->md5sum, sizeof(grf->md5sum)) == 0) return grf->name; } } if (!create) return NULL; grf = CallocT(1); grf->grfid = grfid; grf->next = unknown_grfs; grf->name = new GRFTextWrapper(); grf->name->AddRef(); AddGRFTextToList(&grf->name->text, UNKNOWN_GRF_NAME_PLACEHOLDER); memcpy(grf->md5sum, md5sum, sizeof(grf->md5sum)); unknown_grfs = grf; return grf->name; } #endif /* ENABLE_NETWORK */ /** * Retrieve a NewGRF from the current config by its grfid. * @param grfid grf to look for. * @param mask GRFID mask to allow for partial matching. * @return The grf config, if it exists, else \c NULL. */ GRFConfig *GetGRFConfig(uint32 grfid, uint32 mask) { GRFConfig *c; for (c = _grfconfig; c != NULL; c = c->next) { if ((c->ident.grfid & mask) == (grfid & mask)) return c; } return NULL; } /** Build a string containing space separated parameter values, and terminate */ char *GRFBuildParamList(char *dst, const GRFConfig *c, const char *last) { uint i; /* Return an empty string if there are no parameters */ if (c->num_params == 0) return strecpy(dst, "", last); for (i = 0; i < c->num_params; i++) { if (i > 0) dst = strecpy(dst, " ", last); dst += seprintf(dst, last, "%d", c->param[i]); } return dst; } /** Base GRF ID for OpenTTD's base graphics GRFs. */ static const uint32 OPENTTD_GRAPHICS_BASE_GRF_ID = BSWAP32(0xFF4F5400); /** * Checks whether this GRF is a OpenTTD base graphic GRF. * @return true if and only if it is a base GRF. */ bool GRFConfig::IsOpenTTDBaseGRF() const { return (this->ident.grfid & 0x00FFFFFF) == OPENTTD_GRAPHICS_BASE_GRF_ID; } /** * Search a textfile file next to this NewGRF. * @param type The type of the textfile to search for. * @return The filename for the textfile, \c NULL otherwise. */ const char *GRFConfig::GetTextfile(TextfileType type) const { return ::GetTextfile(type, NEWGRF_DIR, this->filename); } openttd-1.3.3/src/cargotype.cpp0000644000000000000000000001320112246102611015151 0ustar rootroot/* $Id: cargotype.cpp 24848 2012-12-23 22:12:52Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargotype.cpp Implementation of cargoes. */ #include "stdafx.h" #include "cargotype.h" #include "newgrf_cargo.h" #include "string_func.h" #include "strings_func.h" #include "core/sort_func.hpp" #include "table/sprites.h" #include "table/strings.h" #include "table/cargo_const.h" CargoSpec CargoSpec::array[NUM_CARGO]; /** * Bitmask of cargo types available. This includes phony cargoes like regearing cargoes. * Initialized during a call to #SetupCargoForClimate. */ uint32 _cargo_mask; /** * Bitmask of real cargo types available. Phony cargoes like regearing cargoes are excluded. */ uint32 _standard_cargo_mask; /** * Set up the default cargo types for the given landscape type. * @param l Landscape */ void SetupCargoForClimate(LandscapeID l) { assert(l < lengthof(_default_climate_cargo)); /* Reset and disable all cargo types */ memset(CargoSpec::array, 0, sizeof(CargoSpec::array)); for (CargoID i = 0; i < lengthof(CargoSpec::array); i++) { CargoSpec::Get(i)->bitnum = INVALID_CARGO; /* Set defaults for newer properties, which old GRFs do not know */ CargoSpec::Get(i)->multiplier = 0x100; } _cargo_mask = 0; for (CargoID i = 0; i < lengthof(_default_climate_cargo[l]); i++) { CargoLabel cl = _default_climate_cargo[l][i]; /* Bzzt: check if cl is just an index into the cargo table */ if (cl < lengthof(_default_cargo)) { /* Copy the indexed cargo */ CargoSpec *cargo = CargoSpec::Get(i); *cargo = _default_cargo[cl]; if (cargo->bitnum != INVALID_CARGO) SetBit(_cargo_mask, i); continue; } /* Loop through each of the default cargo types to see if * the label matches */ for (uint j = 0; j < lengthof(_default_cargo); j++) { if (_default_cargo[j].label == cl) { *CargoSpec::Get(i) = _default_cargo[j]; /* Populate the available cargo mask */ SetBit(_cargo_mask, i); break; } } } } /** * Get the cargo ID by cargo label. * @param cl Cargo type to get. * @return ID number if the cargo exists, else #CT_INVALID */ CargoID GetCargoIDByLabel(CargoLabel cl) { const CargoSpec *cs; FOR_ALL_CARGOSPECS(cs) { if (cs->label == cl) return cs->Index(); } /* No matching label was found, so it is invalid */ return CT_INVALID; } /** * Find the CargoID of a 'bitnum' value. * @param bitnum 'bitnum' to find. * @return First CargoID with the given bitnum, or #CT_INVALID if not found or if the provided \a bitnum is invalid. */ CargoID GetCargoIDByBitnum(uint8 bitnum) { if (bitnum == INVALID_CARGO) return CT_INVALID; const CargoSpec *cs; FOR_ALL_CARGOSPECS(cs) { if (cs->bitnum == bitnum) return cs->Index(); } /* No matching label was found, so it is invalid */ return CT_INVALID; } /** * Get sprite for showing cargo of this type. * @return Sprite number to use. */ SpriteID CargoSpec::GetCargoIcon() const { SpriteID sprite = this->sprite; if (sprite == 0xFFFF) { /* A value of 0xFFFF indicates we should draw a custom icon */ sprite = GetCustomCargoSprite(this); } if (sprite == 0) sprite = SPR_CARGO_GOODS; return sprite; } const CargoSpec *_sorted_cargo_specs[NUM_CARGO]; ///< Cargo specifications sorted alphabetically by name. uint8 _sorted_cargo_specs_size; ///< Number of cargo specifications stored at the _sorted_cargo_specs array (including special cargoes). uint8 _sorted_standard_cargo_specs_size; ///< Number of standard cargo specifications stored at the _sorted_cargo_specs array. /** Sort cargo specifications by their name. */ static int CDECL CargoSpecNameSorter(const CargoSpec * const *a, const CargoSpec * const *b) { static char a_name[64]; static char b_name[64]; GetString(a_name, (*a)->name, lastof(a_name)); GetString(b_name, (*b)->name, lastof(b_name)); int res = strnatcmp(a_name, b_name); // Sort by name (natural sorting). /* If the names are equal, sort by cargo bitnum. */ return (res != 0) ? res : ((*a)->bitnum - (*b)->bitnum); } /** Sort cargo specifications by their cargo class. */ static int CDECL CargoSpecClassSorter(const CargoSpec * const *a, const CargoSpec * const *b) { int res = ((*b)->classes & CC_PASSENGERS) - ((*a)->classes & CC_PASSENGERS); if (res == 0) { res = ((*b)->classes & CC_MAIL) - ((*a)->classes & CC_MAIL); if (res == 0) { res = ((*a)->classes & CC_SPECIAL) - ((*b)->classes & CC_SPECIAL); if (res == 0) { return CargoSpecNameSorter(a, b); } } } return res; } /** Initialize the list of sorted cargo specifications. */ void InitializeSortedCargoSpecs() { _sorted_cargo_specs_size = 0; const CargoSpec *cargo; /* Add each cargo spec to the list. */ FOR_ALL_CARGOSPECS(cargo) { _sorted_cargo_specs[_sorted_cargo_specs_size] = cargo; _sorted_cargo_specs_size++; } /* Sort cargo specifications by cargo class and name. */ QSortT(_sorted_cargo_specs, _sorted_cargo_specs_size, &CargoSpecClassSorter); _standard_cargo_mask = 0; _sorted_standard_cargo_specs_size = 0; FOR_ALL_SORTED_CARGOSPECS(cargo) { if (cargo->classes & CC_SPECIAL) break; _sorted_standard_cargo_specs_size++; SetBit(_standard_cargo_mask, cargo->Index()); } } openttd-1.3.3/src/newgrf_industrytiles.h0000644000000000000000000000653512246102611017127 0ustar rootroot/* $Id: newgrf_industrytiles.h 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_industrytiles.h NewGRF handling of industry tiles. */ #ifndef NEWGRF_INDUSTRYTILES_H #define NEWGRF_INDUSTRYTILES_H #include "newgrf_animation_type.h" #include "newgrf_industries.h" #include "core/random_func.hpp" /** Resolver for the industry tiles scope. */ struct IndustryTileScopeResolver : public ScopeResolver { Industry *industry; ///< Industry owning the tiles. TileIndex tile; ///< %Tile being resolved. IndustryTileScopeResolver(ResolverObject *ro, Industry *industry, TileIndex tile); /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; /* virtual */ void SetTriggers(int triggers) const; }; /** Resolver for industry tiles. */ struct IndustryTileResolverObject : public ResolverObject { IndustryTileScopeResolver indtile_scope; ///< Scope resolver for the industry tile. IndustriesScopeResolver ind_scope; ///< Scope resolver for the industry owning the tile. IndustryTileResolverObject(IndustryGfx gfx, TileIndex tile, Industry *indus, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0) { switch (scope) { case VSG_SCOPE_SELF: return &indtile_scope; case VSG_SCOPE_PARENT: return &ind_scope; default: return ResolverObject::GetScope(scope, relative); } } }; bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds); uint16 GetIndustryTileCallback(CallbackID callback, uint32 param1, uint32 param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile); CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind_tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx, uint itspec_index, uint16 initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type); void AnimateNewIndustryTile(TileIndex tile); bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32 random = Random()); bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat); /** Available industry tile triggers. */ enum IndustryTileTrigger { INDTILE_TRIGGER_TILE_LOOP = 0x01, ///< The tile of the industry has been triggered during the tileloop. INDUSTRY_TRIGGER_INDUSTRY_TICK = 0x02, ///< The industry has been triggered via its tick. INDUSTRY_TRIGGER_RECEIVED_CARGO = 0x04, ///< Cargo has been delivered. }; void TriggerIndustryTile(TileIndex t, IndustryTileTrigger trigger); void TriggerIndustry(Industry *ind, IndustryTileTrigger trigger); #endif /* NEWGRF_INDUSTRYTILES_H */ openttd-1.3.3/src/cargotype.h0000644000000000000000000001535212246102611014627 0ustar rootroot/* $Id: cargotype.h 24915 2013-01-14 21:16:56Z smatz $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargotype.h Types/functions related to cargoes. */ #ifndef CARGOTYPE_H #define CARGOTYPE_H #include "economy_type.h" #include "cargo_type.h" #include "gfx_type.h" #include "strings_type.h" #include "landscape_type.h" /** Globally unique label of a cargo type. */ typedef uint32 CargoLabel; /** Town growth effect when delivering cargo. */ enum TownEffect { TE_BEGIN = 0, TE_NONE = TE_BEGIN, ///< Cargo has no effect. TE_PASSENGERS, ///< Cargo behaves passenger-like. TE_MAIL, ///< Cargo behaves mail-like. TE_GOODS, ///< Cargo behaves goods/candy-like. TE_WATER, ///< Cargo behaves water-like. TE_FOOD, ///< Cargo behaves food/fizzy-drinks-like. TE_END, ///< End of town effects. NUM_TE = TE_END, ///< Amount of town effects. }; /** Cargo classes. */ enum CargoClass { CC_NOAVAILABLE = 0, ///< No cargo class has been specified CC_PASSENGERS = 1 << 0, ///< Passengers CC_MAIL = 1 << 1, ///< Mail CC_EXPRESS = 1 << 2, ///< Express cargo (Goods, Food, Candy, but also possible for passengers) CC_ARMOURED = 1 << 3, ///< Armoured cargo (Valuables, Gold, Diamonds) CC_BULK = 1 << 4, ///< Bulk cargo (Coal, Grain etc., Ores, Fruit) CC_PIECE_GOODS = 1 << 5, ///< Piece goods (Livestock, Wood, Steel, Paper) CC_LIQUID = 1 << 6, ///< Liquids (Oil, Water, Rubber) CC_REFRIGERATED = 1 << 7, ///< Refrigerated cargo (Food, Fruit) CC_HAZARDOUS = 1 << 8, ///< Hazardous cargo (Nuclear Fuel, Explosives, etc.) CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transportation in Box Vans, Silo Wagons, etc.) CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes. }; static const byte INVALID_CARGO = 0xFF; ///< Constant representing invalid cargo /** Specification of a cargo type. */ struct CargoSpec { uint8 bitnum; ///< Cargo bit number, is #INVALID_CARGO for a non-used spec. CargoLabel label; ///< Unique label of the cargo type. uint8 legend_colour; uint8 rating_colour; uint8 weight; ///< Weight of a single unit of this cargo type in 1/16 ton (62.5 kg). uint16 multiplier; ///< Capacity multiplier for vehicles. (8 fractional bits) uint16 initial_payment; uint8 transit_days[2]; bool is_freight; ///< Cargo type is considered to be freight (affects train freight multiplier). TownEffect town_effect; ///< The effect that delivering this cargo type has on towns. Also affects destination of subsidies. uint16 multipliertowngrowth; ///< Size of the effect. uint8 callback_mask; ///< Bitmask of cargo callbacks that have to be called StringID name; ///< Name of this type of cargo. StringID name_single; ///< Name of a single entity of this type of cargo. StringID units_volume; ///< Name of a single unit of cargo of this type. StringID quantifier; ///< Text for multiple units of cargo of this type. StringID abbrev; ///< Two letter abbreviation for this cargo type. SpriteID sprite; ///< Icon to display this cargo type, may be \c 0xFFF (which means to resolve an action123 chain). uint16 classes; ///< Classes of this cargo type. @see CargoClass const struct GRFFile *grffile; ///< NewGRF where #group belongs to. const struct SpriteGroup *group; Money current_payment; /** * Determines index of this cargospec * @return index (in the CargoSpec::array array) */ inline CargoID Index() const { return this - CargoSpec::array; } /** * Tests for validity of this cargospec * @return is this cargospec valid? * @note assert(cs->IsValid()) can be triggered when GRF config is modified */ inline bool IsValid() const { return this->bitnum != INVALID_CARGO; } /** * Total number of cargospecs, both valid and invalid * @return length of CargoSpec::array */ static inline size_t GetArraySize() { return lengthof(CargoSpec::array); } /** * Retrieve cargo details for the given cargo ID * @param index ID of cargo * @pre index is a valid cargo ID */ static inline CargoSpec *Get(size_t index) { assert(index < lengthof(CargoSpec::array)); return &CargoSpec::array[index]; } SpriteID GetCargoIcon() const; private: static CargoSpec array[NUM_CARGO]; ///< Array holding all CargoSpecs friend void SetupCargoForClimate(LandscapeID l); }; extern uint32 _cargo_mask; extern uint32 _standard_cargo_mask; void SetupCargoForClimate(LandscapeID l); CargoID GetCargoIDByLabel(CargoLabel cl); CargoID GetCargoIDByBitnum(uint8 bitnum); void InitializeSortedCargoSpecs(); extern const CargoSpec *_sorted_cargo_specs[NUM_CARGO]; extern uint8 _sorted_cargo_specs_size; extern uint8 _sorted_standard_cargo_specs_size; /** * Does cargo \a c have cargo class \a cc? * @param c Cargo type. * @param cc Cargo class. * @return The type fits in the class. */ static inline bool IsCargoInClass(CargoID c, CargoClass cc) { return (CargoSpec::Get(c)->classes & cc) != 0; } #define FOR_ALL_CARGOSPECS_FROM(var, start) for (size_t cargospec_index = start; var = NULL, cargospec_index < CargoSpec::GetArraySize(); cargospec_index++) \ if ((var = CargoSpec::Get(cargospec_index))->IsValid()) #define FOR_ALL_CARGOSPECS(var) FOR_ALL_CARGOSPECS_FROM(var, 0) #define FOR_EACH_SET_CARGO_ID(var, cargo_bits) FOR_EACH_SET_BIT_EX(CargoID, var, uint, cargo_bits) /** * Loop header for iterating over cargoes, sorted by name. This includes phony cargoes like regearing cargoes. * @param var Reference getting the cargospec. * @see CargoSpec */ #define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_cargo_specs_size && (var = _sorted_cargo_specs[index], true) ; index++) /** * Loop header for iterating over 'real' cargoes, sorted by name. Phony cargoes like regearing cargoes are skipped. * @param var Reference getting the cargospec. * @see CargoSpec */ #define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_standard_cargo_specs_size && (var = _sorted_cargo_specs[index], true); index++) #endif /* CARGOTYPE_H */ openttd-1.3.3/src/bridge_map.cpp0000644000000000000000000000454612246102611015261 0ustar rootroot/* $Id: bridge_map.cpp 23106 2011-11-04 11:30:37Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file bridge_map.cpp Map accessor functions for bridges. */ #include "stdafx.h" #include "landscape.h" #include "tunnelbridge_map.h" /** * Finds the end of a bridge in the specified direction starting at a middle tile * @param tile the bridge tile to find the bridge ramp for * @param dir the direction to search in */ static TileIndex GetBridgeEnd(TileIndex tile, DiagDirection dir) { TileIndexDiff delta = TileOffsByDiagDir(dir); dir = ReverseDiagDir(dir); do { tile += delta; } while (!IsBridgeTile(tile) || GetTunnelBridgeDirection(tile) != dir); return tile; } /** * Finds the northern end of a bridge starting at a middle tile * @param t the bridge tile to find the bridge ramp for */ TileIndex GetNorthernBridgeEnd(TileIndex t) { return GetBridgeEnd(t, ReverseDiagDir(AxisToDiagDir(GetBridgeAxis(t)))); } /** * Finds the southern end of a bridge starting at a middle tile * @param t the bridge tile to find the bridge ramp for */ TileIndex GetSouthernBridgeEnd(TileIndex t) { return GetBridgeEnd(t, AxisToDiagDir(GetBridgeAxis(t))); } /** * Starting at one bridge end finds the other bridge end * @param t the bridge ramp tile to find the other bridge ramp for */ TileIndex GetOtherBridgeEnd(TileIndex tile) { assert(IsBridgeTile(tile)); return GetBridgeEnd(tile, GetTunnelBridgeDirection(tile)); } /** * Get the height ('z') of a bridge. * @param tile the bridge ramp tile to get the bridge height from * @return the height of the bridge. */ int GetBridgeHeight(TileIndex t) { int h; Slope tileh = GetTileSlope(t, &h); Foundation f = GetBridgeFoundation(tileh, DiagDirToAxis(GetTunnelBridgeDirection(t))); /* one height level extra for the ramp */ return h + 1 + ApplyFoundationToSlope(f, &tileh); } openttd-1.3.3/src/newgrf_text.h0000644000000000000000000000715412246102611015167 0ustar rootroot/* $Id: newgrf_text.h 23812 2012-01-15 19:29:49Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_text.h Header of Action 04 "universal holder" structure and functions */ #ifndef NEWGRF_TEXT_H #define NEWGRF_TEXT_H #include "string_type.h" #include "strings_type.h" #include "core/smallvec_type.hpp" #include "table/control_codes.h" /** This character, the thorn ('þ'), indicates a unicode string to NFO. */ static const WChar NFO_UTF8_IDENTIFIER = 0x00DE; StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid, bool new_scheme, bool allow_newlines, const char *text_to_add, StringID def_string); StringID GetGRFStringID(uint32 grfid, uint16 stringid); const char *GetGRFStringFromGRFText(const struct GRFText *text); const char *GetGRFStringPtr(uint16 stringid); void CleanUpStrings(); void SetCurrentGrfLangID(byte language_id); char *TranslateTTDPatchCodes(uint32 grfid, uint8 language_id, bool allow_newlines, const char *str, int *olen = NULL, StringControlCode byte80 = SCC_NEWGRF_PRINT_WORD_STRING_ID); struct GRFText *DuplicateGRFText(struct GRFText *orig); void AddGRFTextToList(struct GRFText **list, struct GRFText *text_to_add); void AddGRFTextToList(struct GRFText **list, byte langid, uint32 grfid, bool allow_newlines, const char *text_to_add); void AddGRFTextToList(struct GRFText **list, const char *text_to_add); void CleanUpGRFText(struct GRFText *grftext); bool CheckGrfLangID(byte lang_id, byte grf_version); void StartTextRefStackUsage(byte numEntries, const uint32 *values = NULL); void StopTextRefStackUsage(); void RewindTextRefStack(); bool UsingNewGRFTextStack(); struct TextRefStack *CreateTextRefStackBackup(); void RestoreTextRefStackBackup(struct TextRefStack *backup); uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv, bool modify_argv); StringID TTDPStringIDToOTTDStringIDMapping(StringID string); /** Mapping of language data between a NewGRF and OpenTTD. */ struct LanguageMap { /** Mapping between NewGRF and OpenTTD IDs. */ struct Mapping { byte newgrf_id; ///< NewGRF's internal ID for a case/gender. byte openttd_id; ///< OpenTTD's internal ID for a case/gender. }; /* We need a vector and can't use SmallMap due to the fact that for "setting" a * gender of a string or requesting a case for a substring we want to map from * the NewGRF's internal ID to OpenTTD's ID whereas for the choice lists we map * the genders/cases/plural OpenTTD IDs to the NewGRF's internal IDs. In this * case a NewGRF developer/translator might want a different translation for * both cases. Thus we are basically implementing a multi-map. */ SmallVector gender_map; ///< Mapping of NewGRF and OpenTTD IDs for genders. SmallVector case_map; ///< Mapping of NewGRF and OpenTTD IDs for cases. int plural_form; ///< The plural form used for this language. int GetMapping(int newgrf_id, bool gender) const; int GetReverseMapping(int openttd_id, bool gender) const; static const LanguageMap *GetLanguageMap(uint32 grfid, uint8 language_id); }; #endif /* NEWGRF_TEXT_H */ openttd-1.3.3/src/station_func.h0000644000000000000000000000445012246102611015323 0ustar rootroot/* $Id: station_func.h 24840 2012-12-23 15:38:54Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file station_func.h Functions related to stations. */ #ifndef STATION_FUNC_H #define STATION_FUNC_H #include "sprite.h" #include "rail_type.h" #include "road_type.h" #include "economy_func.h" #include "rail.h" void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius); void FindStationsAroundTiles(const TileArea &location, StationList *stations); void ShowStationViewWindow(StationID station); void UpdateAllStationVirtCoords(); CargoArray GetProductionAroundTiles(TileIndex tile, int w, int h, int rad); CargoArray GetAcceptanceAroundTiles(TileIndex tile, int w, int h, int rad, uint32 *always_accepted = NULL); void UpdateStationAcceptance(Station *st, bool show_msg); const DrawTileSprites *GetStationTileLayout(StationType st, byte gfx); void StationPickerDrawSprite(int x, int y, StationType st, RailType railtype, RoadType roadtype, int image); bool HasStationInUse(StationID station, bool include_company, CompanyID company); void DeleteOilRig(TileIndex t); /* Check if a rail station tile is traversable. */ bool IsStationTileBlocked(TileIndex tile); bool CanStationTileHavePylons(TileIndex tile); bool CanStationTileHaveWires(TileIndex tile); void UpdateAirportsNoise(); bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset); /** * Calculates the maintenance cost of a number of station tiles. * @param num Number of station tiles. * @return Total cost. */ static inline Money StationMaintenanceCost(uint32 num) { return (_price[PR_INFRASTRUCTURE_STATION] * num * (1 + IntSqrt(num))) >> 7; // 7 bits scaling. } Money AirportMaintenanceCost(Owner owner); #endif /* STATION_FUNC_H */ openttd-1.3.3/src/strgen/0000755000000000000000000000000012246102757013770 5ustar rootrootopenttd-1.3.3/src/strgen/strgen_base.cpp0000644000000000000000000006555412246102607017001 0ustar rootroot/* $Id: strgen_base.cpp 25340 2013-06-09 09:38:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file strgen_base.cpp Tool to create computer readable (stand-alone) translation files. */ #include "../stdafx.h" #include "../core/endian_func.hpp" #include "../string_func.h" #include "../table/control_codes.h" #include "strgen.h" #include "../table/strgen_tables.h" /* Compiles a list of strings into a compiled string list */ static bool _translated; ///< Whether the current language is not the master language static bool _translation; ///< Is the current file actually a translation or not const char *_file = "(unknown file)"; ///< The filename of the input, so we can refer to it in errors/warnings int _cur_line; ///< The current line we're parsing in the input file int _errors, _warnings, _show_todo; LanguagePackHeader _lang; ///< Header information about a language. static const ptrdiff_t MAX_COMMAND_PARAM_SIZE = 100; ///< Maximum size of every command block, not counting the name of the command itself static const CmdStruct *ParseCommandString(const char **str, char *param, int *argno, int *casei); /** * Create a new case. * @param caseidx The index of the case. * @param string The translation of the case. * @param next The next chained case. */ Case::Case(int caseidx, const char *string, Case *next) : caseidx(caseidx), string(strdup(string)), next(next) { } /** Free everything we allocated. */ Case::~Case() { free(this->string); delete this->next; } /** * Create a new string. * @param name The name of the string. * @param english The english "translation" of the string. * @param index The index in the string table. * @param line The line this string was found on. */ LangString::LangString(const char *name, const char *english, int index, int line) : name(strdup(name)), english(strdup(english)), translated(NULL), hash_next(0), index(index), line(line), translated_case(NULL) { } /** Free everything we allocated. */ LangString::~LangString() { free(this->name); free(this->english); free(this->translated); delete this->translated_case; } /** Free all data related to the translation. */ void LangString::FreeTranslation() { free(this->translated); this->translated = NULL; delete this->translated_case; this->translated_case = NULL; } /** * Create a new string data container. * @param max_strings The maximum number of strings. */ StringData::StringData(size_t tabs) : tabs(tabs), max_strings(tabs * TAB_SIZE) { this->strings = CallocT(max_strings); this->hash_heads = CallocT(max_strings); this->next_string_id = 0; } /** Free everything we allocated. */ StringData::~StringData() { for (size_t i = 0; i < this->max_strings; i++) delete this->strings[i]; free(this->strings); free(this->hash_heads); } /** Free all data related to the translation. */ void StringData::FreeTranslation() { for (size_t i = 0; i < this->max_strings; i++) { LangString *ls = this->strings[i]; if (ls != NULL) ls->FreeTranslation(); } } /** * Create a hash of the string for finding them back quickly. * @param s The string to hash. * @return The hashed string. */ uint StringData::HashStr(const char *s) const { uint hash = 0; for (; *s != '\0'; s++) hash = ROL(hash, 3) ^ *s; return hash % this->max_strings; } /** * Add a newly created LangString. * @param s The name of the string. * @param ls The string to add. */ void StringData::Add(const char *s, LangString *ls) { uint hash = this->HashStr(s); ls->hash_next = this->hash_heads[hash]; /* Off-by-one for hash find. */ this->hash_heads[hash] = ls->index + 1; this->strings[ls->index] = ls; } /** * Find a LangString based on the string name. * @param s The string name to search on. * @return The LangString or NULL if it is not known. */ LangString *StringData::Find(const char *s) { int idx = this->hash_heads[this->HashStr(s)]; while (--idx >= 0) { LangString *ls = this->strings[idx]; if (strcmp(ls->name, s) == 0) return ls; idx = ls->hash_next; } return NULL; } /** * Create a compound hash. * @param hash The hash to add the string hash to. * @param s The string hash. * @return The new hash. */ uint StringData::VersionHashStr(uint hash, const char *s) const { for (; *s != '\0'; s++) { hash = ROL(hash, 3) ^ *s; hash = (hash & 1 ? hash >> 1 ^ 0xDEADBEEF : hash >> 1); } return hash; } /** * Make a hash of the file to get a unique "version number" * @return The version number. */ uint StringData::Version() const { uint hash = 0; for (size_t i = 0; i < this->max_strings; i++) { const LangString *ls = this->strings[i]; if (ls != NULL) { const CmdStruct *cs; const char *s; char buf[MAX_COMMAND_PARAM_SIZE]; int argno; int casei; s = ls->name; hash ^= i * 0x717239; hash = (hash & 1 ? hash >> 1 ^ 0xDEADBEEF : hash >> 1); hash = this->VersionHashStr(hash, s + 1); s = ls->english; while ((cs = ParseCommandString(&s, buf, &argno, &casei)) != NULL) { if (cs->flags & C_DONTCOUNT) continue; hash ^= (cs - _cmd_structs) * 0x1234567; hash = (hash & 1 ? hash >> 1 ^ 0xF00BAA4 : hash >> 1); } } } return hash; } /** * Count the number of tab elements that are in use. * @param tab The tab to count the elements of. */ uint StringData::CountInUse(uint tab) const { int i; for (i = TAB_SIZE; --i >= 0;) if (this->strings[(tab * TAB_SIZE) + i] != NULL) break; return i + 1; } static const char *_cur_ident; struct CmdPair { const CmdStruct *a; const char *v; }; struct ParsedCommandStruct { uint np; CmdPair pairs[32]; const CmdStruct *cmd[32]; // ordered by param # }; /* Used when generating some advanced commands. */ static ParsedCommandStruct _cur_pcs; static int _cur_argidx; /** The buffer for writing a single string. */ struct Buffer : SmallVector { /** * Convenience method for adding a byte. * @param value The value to add. */ void AppendByte(byte value) { *this->Append() = value; } /** * Add an Unicode character encoded in UTF-8 to the buffer. * @param value The character to add. */ void AppendUtf8(uint32 value) { if (value < 0x80) { *this->Append() = value; } else if (value < 0x800) { *this->Append() = 0xC0 + GB(value, 6, 5); *this->Append() = 0x80 + GB(value, 0, 6); } else if (value < 0x10000) { *this->Append() = 0xE0 + GB(value, 12, 4); *this->Append() = 0x80 + GB(value, 6, 6); *this->Append() = 0x80 + GB(value, 0, 6); } else if (value < 0x110000) { *this->Append() = 0xF0 + GB(value, 18, 3); *this->Append() = 0x80 + GB(value, 12, 6); *this->Append() = 0x80 + GB(value, 6, 6); *this->Append() = 0x80 + GB(value, 0, 6); } else { strgen_warning("Invalid unicode value U+0x%X", value); } } }; size_t Utf8Validate(const char *s) { uint32 c; if (!HasBit(s[0], 7)) { /* 1 byte */ return 1; } else if (GB(s[0], 5, 3) == 6 && IsUtf8Part(s[1])) { /* 2 bytes */ c = GB(s[0], 0, 5) << 6 | GB(s[1], 0, 6); if (c >= 0x80) return 2; } else if (GB(s[0], 4, 4) == 14 && IsUtf8Part(s[1]) && IsUtf8Part(s[2])) { /* 3 bytes */ c = GB(s[0], 0, 4) << 12 | GB(s[1], 0, 6) << 6 | GB(s[2], 0, 6); if (c >= 0x800) return 3; } else if (GB(s[0], 3, 5) == 30 && IsUtf8Part(s[1]) && IsUtf8Part(s[2]) && IsUtf8Part(s[3])) { /* 4 bytes */ c = GB(s[0], 0, 3) << 18 | GB(s[1], 0, 6) << 12 | GB(s[2], 0, 6) << 6 | GB(s[3], 0, 6); if (c >= 0x10000 && c <= 0x10FFFF) return 4; } return 0; } void EmitSingleChar(Buffer *buffer, char *buf, int value) { if (*buf != '\0') strgen_warning("Ignoring trailing letters in command"); buffer->AppendUtf8(value); } /* The plural specifier looks like * {NUM} {PLURAL -1 passenger passengers} then it picks either passenger/passengers depending on the count in NUM */ /* This is encoded like * CommandByte {Length of each string} {each string} */ bool ParseRelNum(char **buf, int *value, int *offset) { const char *s = *buf; char *end; bool rel = false; while (*s == ' ' || *s == '\t') s++; if (*s == '+') { rel = true; s++; } int v = strtol(s, &end, 0); if (end == s) return false; if (rel || v < 0) { *value += v; } else { *value = v; } if (offset != NULL && *end == ':') { /* Take the Nth within */ s = end + 1; *offset = strtol(s, &end, 0); if (end == s) return false; } *buf = end; return true; } /* Parse out the next word, or NULL */ char *ParseWord(char **buf) { char *s = *buf, *r; while (*s == ' ' || *s == '\t') s++; if (*s == '\0') return NULL; if (*s == '"') { r = ++s; /* parse until next " or NUL */ for (;;) { if (*s == '\0') break; if (*s == '"') { *s++ = '\0'; break; } s++; } } else { /* proceed until whitespace or NUL */ r = s; for (;;) { if (*s == '\0') break; if (*s == ' ' || *s == '\t') { *s++ = '\0'; break; } s++; } } *buf = s; return r; } /* Forward declaration */ static int TranslateArgumentIdx(int arg, int offset = 0); static void EmitWordList(Buffer *buffer, const char * const *words, uint nw) { buffer->AppendByte(nw); for (uint i = 0; i < nw; i++) buffer->AppendByte((uint)strlen(words[i]) + 1); for (uint i = 0; i < nw; i++) { for (uint j = 0; words[i][j] != '\0'; j++) buffer->AppendByte(words[i][j]); buffer->AppendByte(0); } } void EmitPlural(Buffer *buffer, char *buf, int value) { int argidx = _cur_argidx; int offset = 0; const char *words[5]; int nw = 0; /* Parse out the number, if one exists. Otherwise default to prev arg. */ if (!ParseRelNum(&buf, &argidx, &offset)) argidx--; /* Parse each string */ for (nw = 0; nw < 5; nw++) { words[nw] = ParseWord(&buf); if (words[nw] == NULL) break; } if (nw == 0) { strgen_fatal("%s: No plural words", _cur_ident); } if (_plural_forms[_lang.plural_form].plural_count != nw) { if (_translated) { strgen_fatal("%s: Invalid number of plural forms. Expecting %d, found %d.", _cur_ident, _plural_forms[_lang.plural_form].plural_count, nw); } else { if ((_show_todo & 2) != 0) strgen_warning("'%s' is untranslated. Tweaking english string to allow compilation for plural forms", _cur_ident); if (nw > _plural_forms[_lang.plural_form].plural_count) { nw = _plural_forms[_lang.plural_form].plural_count; } else { for (; nw < _plural_forms[_lang.plural_form].plural_count; nw++) { words[nw] = words[nw - 1]; } } } } buffer->AppendUtf8(SCC_PLURAL_LIST); buffer->AppendByte(_lang.plural_form); buffer->AppendByte(TranslateArgumentIdx(argidx, offset)); EmitWordList(buffer, words, nw); } void EmitGender(Buffer *buffer, char *buf, int value) { int argidx = _cur_argidx; int offset = 0; uint nw; if (buf[0] == '=') { buf++; /* This is a {G=DER} command */ nw = _lang.GetGenderIndex(buf); if (nw >= MAX_NUM_GENDERS) strgen_fatal("G argument '%s' invalid", buf); /* now nw contains the gender index */ buffer->AppendUtf8(SCC_GENDER_INDEX); buffer->AppendByte(nw); } else { const char *words[MAX_NUM_GENDERS]; /* This is a {G 0 foo bar two} command. * If no relative number exists, default to +0 */ if (!ParseRelNum(&buf, &argidx, &offset)) {} const CmdStruct *cmd = _cur_pcs.cmd[argidx]; if (cmd == NULL || (cmd->flags & C_GENDER) == 0) { strgen_fatal("Command '%s' can't have a gender", cmd == NULL ? "" : cmd->cmd); } for (nw = 0; nw < MAX_NUM_GENDERS; nw++) { words[nw] = ParseWord(&buf); if (words[nw] == NULL) break; } if (nw != _lang.num_genders) strgen_fatal("Bad # of arguments for gender command"); assert(IsInsideBS(cmd->value, SCC_CONTROL_START, UINT8_MAX)); buffer->AppendUtf8(SCC_GENDER_LIST); buffer->AppendByte(TranslateArgumentIdx(argidx, offset)); EmitWordList(buffer, words, nw); } } static const CmdStruct *FindCmd(const char *s, int len) { for (const CmdStruct *cs = _cmd_structs; cs != endof(_cmd_structs); cs++) { if (strncmp(cs->cmd, s, len) == 0 && cs->cmd[len] == '\0') return cs; } return NULL; } static uint ResolveCaseName(const char *str, size_t len) { /* First get a clean copy of only the case name, then resolve it. */ char case_str[CASE_GENDER_LEN]; len = min(lengthof(case_str) - 1, len); memcpy(case_str, str, len); case_str[len] = '\0'; uint8 case_idx = _lang.GetCaseIndex(case_str); if (case_idx >= MAX_NUM_CASES) strgen_fatal("Invalid case-name '%s'", case_str); return case_idx + 1; } /* returns NULL on eof * else returns command struct */ static const CmdStruct *ParseCommandString(const char **str, char *param, int *argno, int *casei) { const char *s = *str, *start; char c; *argno = -1; *casei = -1; /* Scan to the next command, exit if there's no next command. */ for (; *s != '{'; s++) { if (*s == '\0') return NULL; } s++; // Skip past the { if (*s >= '0' && *s <= '9') { char *end; *argno = strtoul(s, &end, 0); if (*end != ':') strgen_fatal("missing arg #"); s = end + 1; } /* parse command name */ start = s; do { c = *s++; } while (c != '}' && c != ' ' && c != '=' && c != '.' && c != 0); const CmdStruct *cmd = FindCmd(start, s - start - 1); if (cmd == NULL) { strgen_error("Undefined command '%.*s'", (int)(s - start - 1), start); return NULL; } if (c == '.') { const char *casep = s; if (!(cmd->flags & C_CASE)) { strgen_fatal("Command '%s' can't have a case", cmd->cmd); } do { c = *s++; } while (c != '}' && c != ' ' && c != '\0'); *casei = ResolveCaseName(casep, s - casep - 1); } if (c == '\0') { strgen_error("Missing } from command '%s'", start); return NULL; } if (c != '}') { if (c == '=') s--; /* copy params */ start = s; for (;;) { c = *s++; if (c == '}') break; if (c == '\0') { strgen_error("Missing } from command '%s'", start); return NULL; } if (s - start == MAX_COMMAND_PARAM_SIZE) error("param command too long"); *param++ = c; } } *param = '\0'; *str = s; return cmd; } /** * Prepare reading. * @param data The data to fill during reading. * @param file The file we are reading. * @param master Are we reading the master file? * @param translation Are we reading a translation? */ StringReader::StringReader(StringData &data, const char *file, bool master, bool translation) : data(data), file(strdup(file)), master(master), translation(translation) { } /** Make sure the right reader gets freed. */ StringReader::~StringReader() { free(file); } static void ExtractCommandString(ParsedCommandStruct *p, const char *s, bool warnings) { char param[MAX_COMMAND_PARAM_SIZE]; int argno; int argidx = 0; int casei; memset(p, 0, sizeof(*p)); for (;;) { /* read until next command from a. */ const CmdStruct *ar = ParseCommandString(&s, param, &argno, &casei); if (ar == NULL) break; /* Sanity checking */ if (argno != -1 && ar->consumes == 0) strgen_fatal("Non consumer param can't have a paramindex"); if (ar->consumes) { if (argno != -1) argidx = argno; if (argidx < 0 || (uint)argidx >= lengthof(p->cmd)) strgen_fatal("invalid param idx %d", argidx); if (p->cmd[argidx] != NULL && p->cmd[argidx] != ar) strgen_fatal("duplicate param idx %d", argidx); p->cmd[argidx++] = ar; } else if (!(ar->flags & C_DONTCOUNT)) { // Ignore some of them if (p->np >= lengthof(p->pairs)) strgen_fatal("too many commands in string, max " PRINTF_SIZE, lengthof(p->pairs)); p->pairs[p->np].a = ar; p->pairs[p->np].v = param[0] != '\0' ? strdup(param) : ""; p->np++; } } } static const CmdStruct *TranslateCmdForCompare(const CmdStruct *a) { if (a == NULL) return NULL; if (strcmp(a->cmd, "STRING1") == 0 || strcmp(a->cmd, "STRING2") == 0 || strcmp(a->cmd, "STRING3") == 0 || strcmp(a->cmd, "STRING4") == 0 || strcmp(a->cmd, "STRING5") == 0 || strcmp(a->cmd, "STRING6") == 0 || strcmp(a->cmd, "STRING7") == 0 || strcmp(a->cmd, "RAW_STRING") == 0) { return FindCmd("STRING", 6); } return a; } static bool CheckCommandsMatch(char *a, char *b, const char *name) { /* If we're not translating, i.e. we're compiling the base language, * it is pointless to do all these checks as it'll always be correct. * After all, all checks are based on the base language. */ if (!_translation) return true; ParsedCommandStruct templ; ParsedCommandStruct lang; bool result = true; ExtractCommandString(&templ, b, true); ExtractCommandString(&lang, a, true); /* For each string in templ, see if we find it in lang */ if (templ.np != lang.np) { strgen_warning("%s: template string and language string have a different # of commands", name); result = false; } for (uint i = 0; i < templ.np; i++) { /* see if we find it in lang, and zero it out */ bool found = false; for (uint j = 0; j < lang.np; j++) { if (templ.pairs[i].a == lang.pairs[j].a && strcmp(templ.pairs[i].v, lang.pairs[j].v) == 0) { /* it was found in both. zero it out from lang so we don't find it again */ lang.pairs[j].a = NULL; found = true; break; } } if (!found) { strgen_warning("%s: command '%s' exists in template file but not in language file", name, templ.pairs[i].a->cmd); result = false; } } /* if we reach here, all non consumer commands match up. * Check if the non consumer commands match up also. */ for (uint i = 0; i < lengthof(templ.cmd); i++) { if (TranslateCmdForCompare(templ.cmd[i]) != lang.cmd[i]) { strgen_warning("%s: Param idx #%d '%s' doesn't match with template command '%s'", name, i, lang.cmd[i] == NULL ? "" : TranslateCmdForCompare(lang.cmd[i])->cmd, templ.cmd[i] == NULL ? "" : templ.cmd[i]->cmd); result = false; } } return result; } void StringReader::HandleString(char *str) { if (*str == '#') { if (str[1] == '#' && str[2] != '#') this->HandlePragma(str + 2); return; } /* Ignore comments & blank lines */ if (*str == ';' || *str == ' ' || *str == '\0') return; char *s = strchr(str, ':'); if (s == NULL) { strgen_error("Line has no ':' delimiter"); return; } char *t; /* Trim spaces. * After this str points to the command name, and s points to the command contents */ for (t = s; t > str && (t[-1] == ' ' || t[-1] == '\t'); t--) {} *t = 0; s++; /* Check string is valid UTF-8 */ const char *tmp; for (tmp = s; *tmp != '\0';) { size_t len = Utf8Validate(tmp); if (len == 0) strgen_fatal("Invalid UTF-8 sequence in '%s'", s); WChar c; Utf8Decode(&c, tmp); if (c <= 0x001F || // ASCII control character range c == 0x200B || // Zero width space (c >= 0xE000 && c <= 0xF8FF) || // Private range (c >= 0xFFF0 && c <= 0xFFFF)) { // Specials range strgen_fatal("Unwanted UTF-8 character U+%04X in sequence '%s'", c, s); } tmp += len; } /* Check if the string has a case.. * The syntax for cases is IDENTNAME.case */ char *casep = strchr(str, '.'); if (casep != NULL) *casep++ = '\0'; /* Check if this string already exists.. */ LangString *ent = this->data.Find(str); if (this->master) { if (casep != NULL) { strgen_error("Cases in the base translation are not supported."); return; } if (ent != NULL) { strgen_error("String name '%s' is used multiple times", str); return; } if (this->data.strings[this->data.next_string_id] != NULL) { strgen_error("String ID 0x%X for '%s' already in use by '%s'", this->data.next_string_id, str, this->data.strings[this->data.next_string_id]->name); return; } /* Allocate a new LangString */ this->data.Add(str, new LangString(str, s, this->data.next_string_id++, _cur_line)); } else { if (ent == NULL) { strgen_warning("String name '%s' does not exist in master file", str); return; } if (ent->translated && casep == NULL) { strgen_error("String name '%s' is used multiple times", str); return; } /* make sure that the commands match */ if (!CheckCommandsMatch(s, ent->english, str)) return; if (casep != NULL) { ent->translated_case = new Case(ResolveCaseName(casep, strlen(casep)), s, ent->translated_case); } else { ent->translated = strdup(s); /* If the string was translated, use the line from the * translated language so errors in the translated file * are properly referenced to. */ ent->line = _cur_line; } } } void StringReader::HandlePragma(char *str) { if (!memcmp(str, "plural ", 7)) { _lang.plural_form = atoi(str + 7); if (_lang.plural_form >= lengthof(_plural_forms)) { strgen_fatal("Invalid pluralform %d", _lang.plural_form); } } else { strgen_fatal("unknown pragma '%s'", str); } } static void rstrip(char *buf) { size_t i = strlen(buf); while (i > 0 && (buf[i - 1] == '\r' || buf[i - 1] == '\n' || buf[i - 1] == ' ')) i--; buf[i] = '\0'; } void StringReader::ParseFile() { char buf[2048]; _warnings = _errors = 0; _translation = this->master || this->translation; _file = this->file; /* For each new file we parse, reset the genders, and language codes. */ MemSetT(&_lang, 0); strecpy(_lang.digit_group_separator, ",", lastof(_lang.digit_group_separator)); strecpy(_lang.digit_group_separator_currency, ",", lastof(_lang.digit_group_separator_currency)); strecpy(_lang.digit_decimal_separator, ".", lastof(_lang.digit_decimal_separator)); _cur_line = 1; while (this->ReadLine(buf, sizeof(buf)) != NULL) { rstrip(buf); this->HandleString(buf); _cur_line++; } } /** * Write the header information. * @param data The data about the string. */ void HeaderWriter::WriteHeader(const StringData &data) { int last = 0; for (size_t i = 0; i < data.max_strings; i++) { if (data.strings[i] != NULL) { this->WriteStringID(data.strings[i]->name, (int)i); last = (int)i; } } this->WriteStringID("STR_LAST_STRINGID", last); } static int TranslateArgumentIdx(int argidx, int offset) { int sum; if (argidx < 0 || (uint)argidx >= lengthof(_cur_pcs.cmd)) { strgen_fatal("invalid argidx %d", argidx); } const CmdStruct *cs = _cur_pcs.cmd[argidx]; if (cs != NULL && cs->consumes <= offset) { strgen_fatal("invalid argidx offset %d:%d", argidx, offset); } if (_cur_pcs.cmd[argidx] == NULL) { strgen_fatal("no command for this argidx %d", argidx); } for (int i = sum = 0; i < argidx; i++) { const CmdStruct *cs = _cur_pcs.cmd[i]; sum += (cs != NULL) ? cs->consumes : 1; } return sum + offset; } static void PutArgidxCommand(Buffer *buffer) { buffer->AppendUtf8(SCC_ARG_INDEX); buffer->AppendByte(TranslateArgumentIdx(_cur_argidx)); } static void PutCommandString(Buffer *buffer, const char *str) { _cur_argidx = 0; while (*str != '\0') { /* Process characters as they are until we encounter a { */ if (*str != '{') { buffer->AppendByte(*str++); continue; } char param[MAX_COMMAND_PARAM_SIZE]; int argno; int casei; const CmdStruct *cs = ParseCommandString(&str, param, &argno, &casei); if (cs == NULL) break; if (casei != -1) { buffer->AppendUtf8(SCC_SET_CASE); // {SET_CASE} buffer->AppendByte(casei); } /* For params that consume values, we need to handle the argindex properly */ if (cs->consumes > 0) { /* Check if we need to output a move-param command */ if (argno != -1 && argno != _cur_argidx) { _cur_argidx = argno; PutArgidxCommand(buffer); } /* Output the one from the master string... it's always accurate. */ cs = _cur_pcs.cmd[_cur_argidx++]; if (cs == NULL) { strgen_fatal("%s: No argument exists at position %d", _cur_ident, _cur_argidx - 1); } } cs->proc(buffer, param, cs->value); } } /** * Write the length as a simple gamma. * @param length The number to write. */ void LanguageWriter::WriteLength(uint length) { char buffer[2]; int offs = 0; if (length >= 0x4000) { strgen_fatal("string too long"); } if (length >= 0xC0) { buffer[offs++] = (length >> 8) | 0xC0; } buffer[offs++] = length & 0xFF; this->Write((byte*)buffer, offs); } /** * Actually write the language. * @param data The data about the string. */ void LanguageWriter::WriteLang(const StringData &data) { uint *in_use = AllocaM(uint, data.tabs); for (size_t tab = 0; tab < data.tabs; tab++) { uint n = data.CountInUse((uint)tab); in_use[tab] = n; _lang.offsets[tab] = TO_LE16(n); for (uint j = 0; j != in_use[tab]; j++) { const LangString *ls = data.strings[(tab * TAB_SIZE) + j]; if (ls != NULL && ls->translated == NULL) _lang.missing++; } } _lang.ident = TO_LE32(LanguagePackHeader::IDENT); _lang.version = TO_LE32(data.Version()); _lang.missing = TO_LE16(_lang.missing); _lang.winlangid = TO_LE16(_lang.winlangid); this->WriteHeader(&_lang); Buffer buffer; for (size_t tab = 0; tab < data.tabs; tab++) { for (uint j = 0; j != in_use[tab]; j++) { const LangString *ls = data.strings[(tab * TAB_SIZE) + j]; const Case *casep; const char *cmdp; /* For undefined strings, just set that it's an empty string */ if (ls == NULL) { this->WriteLength(0); continue; } _cur_ident = ls->name; _cur_line = ls->line; /* Produce a message if a string doesn't have a translation. */ if (_show_todo > 0 && ls->translated == NULL) { if ((_show_todo & 2) != 0) { strgen_warning("'%s' is untranslated", ls->name); } if ((_show_todo & 1) != 0) { const char *s = " "; while (*s != '\0') buffer.AppendByte(*s++); } } /* Extract the strings and stuff from the english command string */ ExtractCommandString(&_cur_pcs, ls->english, false); if (ls->translated_case != NULL || ls->translated != NULL) { casep = ls->translated_case; cmdp = ls->translated; } else { casep = NULL; cmdp = ls->english; } _translated = cmdp != ls->english; if (casep != NULL) { const Case *c; uint num; /* Need to output a case-switch. * It has this format * <0x9E> * Each LEN is printed using 2 bytes in big endian order. */ buffer.AppendUtf8(SCC_SWITCH_CASE); /* Count the number of cases */ for (num = 0, c = casep; c; c = c->next) num++; buffer.AppendByte(num); /* Write each case */ for (c = casep; c != NULL; c = c->next) { buffer.AppendByte(c->caseidx); /* Make some space for the 16-bit length */ uint pos = buffer.Length(); buffer.AppendByte(0); buffer.AppendByte(0); /* Write string */ PutCommandString(&buffer, c->string); buffer.AppendByte(0); // terminate with a zero /* Fill in the length */ uint size = buffer.Length() - (pos + 2); buffer[pos + 0] = GB(size, 8, 8); buffer[pos + 1] = GB(size, 0, 8); } } if (cmdp != NULL) PutCommandString(&buffer, cmdp); this->WriteLength(buffer.Length()); this->Write(buffer.Begin(), buffer.Length()); buffer.Clear(); } } } openttd-1.3.3/src/strgen/strgen.h0000644000000000000000000001133112246102607015434 0ustar rootroot/* $Id: strgen.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file strgen.h Structures related to strgen. */ #ifndef STRGEN_H #define STRGEN_H #include "../language.h" /** Container for the different cases of a string. */ struct Case { int caseidx; ///< The index of the case. char *string; ///< The translation of the case. Case *next; ///< The next, chained, case. Case(int caseidx, const char *string, Case *next); ~Case(); }; /** Information about a single string. */ struct LangString { char *name; ///< Name of the string. char *english; ///< English text. char *translated; ///< Translated text. uint16 hash_next; ///< Next hash entry. uint16 index; ///< The index in the language file. int line; ///< Line of string in source-file. Case *translated_case; ///< Cases of the translation. LangString(const char *name, const char *english, int index, int line); ~LangString(); void FreeTranslation(); }; /** Information about the currently known strings. */ struct StringData { LangString **strings; ///< Array of all known strings. uint16 *hash_heads; ///< Hash table for the strings. size_t tabs; ///< The number of 'tabs' of strings. size_t max_strings; ///< The maximum number of strings. int next_string_id; ///< The next string ID to allocate. StringData(size_t tabs); ~StringData(); void FreeTranslation(); uint HashStr(const char *s) const; void Add(const char *s, LangString *ls); LangString *Find(const char *s); uint VersionHashStr(uint hash, const char *s) const; uint Version() const; uint CountInUse(uint tab) const; }; /** Helper for reading strings. */ struct StringReader { StringData &data; ///< The data to fill during reading. const char *file; ///< The file we are reading. bool master; ///< Are we reading the master file? bool translation; ///< Are we reading a translation, implies !master. However, the base translation will have this false. StringReader(StringData &data, const char *file, bool master, bool translation); virtual ~StringReader(); void HandleString(char *str); /** * Read a single line from the source of strings. * @param buffer The buffer to read the data in to. * @param size The size of the buffer. * @return The buffer, or NULL if at the end of the file. */ virtual char *ReadLine(char *buffer, size_t size) = 0; /** * Handle the pragma of the file. * @param str The pragma string to parse. */ virtual void HandlePragma(char *str); /** * Start parsing the file. */ virtual void ParseFile(); }; /** Base class for writing the header, i.e. the STR_XXX to numeric value. */ struct HeaderWriter { /** * Write the string ID. * @param name The name of the string. * @param stringid The ID of the string. */ virtual void WriteStringID(const char *name, int stringid) = 0; /** * Finalise writing the file. * @param data The data about the string. */ virtual void Finalise(const StringData &data) = 0; /** Especially destroy the subclasses. */ virtual ~HeaderWriter() {}; void WriteHeader(const StringData &data); }; /** Base class for all language writers. */ struct LanguageWriter { /** * Write the header metadata. The multi-byte integers are already converted to * the little endian format. * @param header The header to write. */ virtual void WriteHeader(const LanguagePackHeader *header) = 0; /** * Write a number of bytes. * @param buffer The buffer to write. * @param length The amount of byte to write. */ virtual void Write(const byte *buffer, size_t length) = 0; /** * Finalise writing the file. */ virtual void Finalise() = 0; /** Especially destroy the subclasses. */ virtual ~LanguageWriter() {} virtual void WriteLength(uint length); virtual void WriteLang(const StringData &data); }; void CDECL strgen_warning(const char *s, ...) WARN_FORMAT(1, 2); void CDECL strgen_error(const char *s, ...) WARN_FORMAT(1, 2); void NORETURN CDECL strgen_fatal(const char *s, ...) WARN_FORMAT(1, 2); char *ParseWord(char **buf); extern const char *_file; extern int _cur_line; extern int _errors, _warnings, _show_todo; extern LanguagePackHeader _lang; #endif /* STRGEN_H */ openttd-1.3.3/src/strgen/strgen.cpp0000644000000000000000000004075712246102607016005 0ustar rootroot/* $Id: strgen.cpp 25204 2013-04-24 17:54:43Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file strgen.cpp Tool to create computer readable (stand-alone) translation files. */ #include "../stdafx.h" #include "../core/endian_func.hpp" #include "../string_func.h" #include "../strings_type.h" #include "../misc/getoptdata.h" #include "../table/control_codes.h" #include "strgen.h" #include #include #if (!defined(WIN32) && !defined(WIN64)) || defined(__CYGWIN__) #include #include #endif #if defined WIN32 || defined __WATCOMC__ #include #endif /* WIN32 || __WATCOMC__ */ #ifdef __MORPHOS__ #ifdef stderr #undef stderr #endif #define stderr stdout #endif /* __MORPHOS__ */ #include "../table/strgen_tables.h" #ifdef _MSC_VER # define LINE_NUM_FMT(s) "%s (%d): warning: %s (" s ")\n" #else # define LINE_NUM_FMT(s) "%s:%d: " s ": %s\n" #endif void CDECL strgen_warning(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("warning"), _file, _cur_line, buf); _warnings++; } void CDECL strgen_error(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("error"), _file, _cur_line, buf); _errors++; } void NORETURN CDECL strgen_fatal(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("FATAL"), _file, _cur_line, buf); #ifdef _MSC_VER fprintf(stderr, LINE_NUM_FMT("warning"), _file, _cur_line, "language is not compiled"); #endif throw std::exception(); } void NORETURN CDECL error(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); fprintf(stderr, LINE_NUM_FMT("FATAL"), _file, _cur_line, buf); #ifdef _MSC_VER fprintf(stderr, LINE_NUM_FMT("warning"), _file, _cur_line, "language is not compiled"); #endif exit(2); } /** A reader that simply reads using fopen. */ struct FileStringReader : StringReader { FILE *fh; ///< The file we are reading. /** * Create the reader. * @param data The data to fill during reading. * @param file The file we are reading. * @param master Are we reading the master file? * @param translation Are we reading a translation? */ FileStringReader(StringData &data, const char *file, bool master, bool translation) : StringReader(data, file, master, translation) { this->fh = fopen(file, "rb"); if (this->fh == NULL) error("Could not open %s", file); } /** Free/close the file. */ virtual ~FileStringReader() { fclose(this->fh); } /* virtual */ char *ReadLine(char *buffer, size_t size) { return fgets(buffer, size, this->fh); } /* virtual */ void HandlePragma(char *str); /* virtual */ void ParseFile() { this->StringReader::ParseFile(); if (StrEmpty(_lang.name) || StrEmpty(_lang.own_name) || StrEmpty(_lang.isocode)) { error("Language must include ##name, ##ownname and ##isocode"); } } }; void FileStringReader::HandlePragma(char *str) { if (!memcmp(str, "id ", 3)) { this->data.next_string_id = strtoul(str + 3, NULL, 0); } else if (!memcmp(str, "name ", 5)) { strecpy(_lang.name, str + 5, lastof(_lang.name)); } else if (!memcmp(str, "ownname ", 8)) { strecpy(_lang.own_name, str + 8, lastof(_lang.own_name)); } else if (!memcmp(str, "isocode ", 8)) { strecpy(_lang.isocode, str + 8, lastof(_lang.isocode)); } else if (!memcmp(str, "textdir ", 8)) { if (!memcmp(str + 8, "ltr", 3)) { _lang.text_dir = TD_LTR; } else if (!memcmp(str + 8, "rtl", 3)) { _lang.text_dir = TD_RTL; } else { error("Invalid textdir %s", str + 8); } } else if (!memcmp(str, "digitsep ", 9)) { str += 9; strecpy(_lang.digit_group_separator, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_group_separator)); } else if (!memcmp(str, "digitsepcur ", 12)) { str += 12; strecpy(_lang.digit_group_separator_currency, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_group_separator_currency)); } else if (!memcmp(str, "decimalsep ", 11)) { str += 11; strecpy(_lang.digit_decimal_separator, strcmp(str, "{NBSP}") == 0 ? NBSP : str, lastof(_lang.digit_decimal_separator)); } else if (!memcmp(str, "winlangid ", 10)) { const char *buf = str + 10; long langid = strtol(buf, NULL, 16); if (langid > (long)UINT16_MAX || langid < 0) { error("Invalid winlangid %s", buf); } _lang.winlangid = (uint16)langid; } else if (!memcmp(str, "grflangid ", 10)) { const char *buf = str + 10; long langid = strtol(buf, NULL, 16); if (langid >= 0x7F || langid < 0) { error("Invalid grflangid %s", buf); } _lang.newgrflangid = (uint8)langid; } else if (!memcmp(str, "gender ", 7)) { if (this->master) error("Genders are not allowed in the base translation."); char *buf = str + 7; for (;;) { const char *s = ParseWord(&buf); if (s == NULL) break; if (_lang.num_genders >= MAX_NUM_GENDERS) error("Too many genders, max %d", MAX_NUM_GENDERS); strecpy(_lang.genders[_lang.num_genders], s, lastof(_lang.genders[_lang.num_genders])); _lang.num_genders++; } } else if (!memcmp(str, "case ", 5)) { if (this->master) error("Cases are not allowed in the base translation."); char *buf = str + 5; for (;;) { const char *s = ParseWord(&buf); if (s == NULL) break; if (_lang.num_cases >= MAX_NUM_CASES) error("Too many cases, max %d", MAX_NUM_CASES); strecpy(_lang.cases[_lang.num_cases], s, lastof(_lang.cases[_lang.num_cases])); _lang.num_cases++; } } else { StringReader::HandlePragma(str); } } bool CompareFiles(const char *n1, const char *n2) { FILE *f2 = fopen(n2, "rb"); if (f2 == NULL) return false; FILE *f1 = fopen(n1, "rb"); if (f1 == NULL) error("can't open %s", n1); size_t l1, l2; do { char b1[4096]; char b2[4096]; l1 = fread(b1, 1, sizeof(b1), f1); l2 = fread(b2, 1, sizeof(b2), f2); if (l1 != l2 || memcmp(b1, b2, l1)) { fclose(f2); fclose(f1); return false; } } while (l1 != 0); fclose(f2); fclose(f1); return true; } /** Base class for writing data to disk. */ struct FileWriter { FILE *fh; ///< The file handle we're writing to. const char *filename; ///< The file name we're writing to. /** * Open a file to write to. * @param filename The file to open. */ FileWriter(const char *filename) { this->filename = strdup(filename); this->fh = fopen(this->filename, "wb"); if (this->fh == NULL) { error("Could not open %s", this->filename); } } /** Finalise the writing. */ void Finalise() { fclose(this->fh); this->fh = NULL; } /** Make sure the file is closed. */ virtual ~FileWriter() { /* If we weren't closed an exception was thrown, so remove the temporary file. */ if (fh != NULL) { fclose(this->fh); unlink(this->filename); } free(this->filename); } }; struct HeaderFileWriter : HeaderWriter, FileWriter { /** The real file name we eventually want to write to. */ const char *real_filename; /** The previous string ID that was printed. */ int prev; /** * Open a file to write to. * @param filename The file to open. */ HeaderFileWriter(const char *filename) : FileWriter("tmp.xxx"), real_filename(strdup(filename)), prev(0) { fprintf(this->fh, "/* This file is automatically generated. Do not modify */\n\n"); fprintf(this->fh, "#ifndef TABLE_STRINGS_H\n"); fprintf(this->fh, "#define TABLE_STRINGS_H\n"); } void WriteStringID(const char *name, int stringid) { if (prev + 1 != stringid) fprintf(this->fh, "\n"); fprintf(this->fh, "static const StringID %s = 0x%X;\n", name, stringid); prev = stringid; } void Finalise(const StringData &data) { /* Find the plural form with the most amount of cases. */ int max_plural_forms = 0; for (uint i = 0; i < lengthof(_plural_forms); i++) { max_plural_forms = max(max_plural_forms, _plural_forms[i].plural_count); } fprintf(this->fh, "\n" "static const uint LANGUAGE_PACK_VERSION = 0x%X;\n" "static const uint LANGUAGE_MAX_PLURAL = %d;\n" "static const uint LANGUAGE_MAX_PLURAL_FORMS = %d;\n\n", (uint)data.Version(), (uint)lengthof(_plural_forms), max_plural_forms ); fprintf(this->fh, "#endif /* TABLE_STRINGS_H */\n"); this->FileWriter::Finalise(); if (CompareFiles(this->filename, this->real_filename)) { /* files are equal. tmp.xxx is not needed */ unlink(this->filename); } else { /* else rename tmp.xxx into filename */ #if defined(WIN32) || defined(WIN64) unlink(this->real_filename); #endif if (rename(this->filename, this->real_filename) == -1) error("rename() failed"); } } }; /** Class for writing a language to disk. */ struct LanguageFileWriter : LanguageWriter, FileWriter { /** * Open a file to write to. * @param filename The file to open. */ LanguageFileWriter(const char *filename) : FileWriter(filename) { } void WriteHeader(const LanguagePackHeader *header) { this->Write((const byte *)header, sizeof(*header)); } void Finalise() { fputc(0, this->fh); this->FileWriter::Finalise(); } void Write(const byte *buffer, size_t length) { if (fwrite(buffer, sizeof(*buffer), length, this->fh) != length) { error("Could not write to %s", this->filename); } } }; /** Multi-OS mkdirectory function */ static inline void ottd_mkdir(const char *directory) { #if defined(WIN32) || defined(__WATCOMC__) mkdir(directory); #else mkdir(directory, 0755); #endif } /** * Create a path consisting of an already existing path, a possible * path separator and the filename. The separator is only appended if the path * does not already end with a separator */ static inline char *mkpath(char *buf, size_t buflen, const char *path, const char *file) { ttd_strlcpy(buf, path, buflen); // copy directory into buffer char *p = strchr(buf, '\0'); // add path separator if necessary if (p[-1] != PATHSEPCHAR && (size_t)(p - buf) + 1 < buflen) *p++ = PATHSEPCHAR; ttd_strlcpy(p, file, buflen - (size_t)(p - buf)); // concatenate filename at end of buffer return buf; } #if defined(__MINGW32__) /** * On MingW, it is common that both / as \ are accepted in the * params. To go with those flow, we rewrite all incoming / * simply to \, so internally we can safely assume \. */ static inline char *replace_pathsep(char *s) { for (char *c = s; *c != '\0'; c++) if (*c == '/') *c = '\\'; return s; } #else static inline char *replace_pathsep(char *s) { return s; } #endif /** Options of strgen. */ static const OptionData _opts[] = { GETOPT_NOVAL( 'v', "--version"), GETOPT_GENERAL('C', '\0', "-export-commands", ODF_NO_VALUE), GETOPT_GENERAL('L', '\0', "-export-plurals", ODF_NO_VALUE), GETOPT_GENERAL('P', '\0', "-export-pragmas", ODF_NO_VALUE), GETOPT_NOVAL( 't', "--todo"), GETOPT_NOVAL( 'w', "--warning"), GETOPT_NOVAL( 'h', "--help"), GETOPT_GENERAL('h', '?', NULL, ODF_NO_VALUE), GETOPT_VALUE( 's', "--source_dir"), GETOPT_VALUE( 'd', "--dest_dir"), GETOPT_END(), }; int CDECL main(int argc, char *argv[]) { char pathbuf[MAX_PATH]; const char *src_dir = "."; const char *dest_dir = NULL; GetOptData mgo(argc - 1, argv + 1, _opts); for (;;) { int i = mgo.GetOpt(); if (i == -1) break; switch (i) { case 'v': puts("$Revision: 25204 $"); return 0; case 'C': printf("args\tflags\tcommand\treplacement\n"); for (const CmdStruct *cs = _cmd_structs; cs < endof(_cmd_structs); cs++) { char flags; if (cs->proc == EmitGender) { flags = 'g'; // Command needs number of parameters defined by number of genders } else if (cs->proc == EmitPlural) { flags = 'p'; // Command needs number of parameters defined by plural value } else if (cs->flags & C_DONTCOUNT) { flags = 'i'; // Command may be in the translation when it is not in base } else { flags = '0'; // Command needs no parameters } printf("%i\t%c\t\"%s\"\t\"%s\"\n", cs->consumes, flags, cs->cmd, strstr(cs->cmd, "STRING") ? "STRING" : cs->cmd); } return 0; case 'L': printf("count\tdescription\tnames\n"); for (const PluralForm *pf = _plural_forms; pf < endof(_plural_forms); pf++) { printf("%i\t\"%s\"\t%s\n", pf->plural_count, pf->description, pf->names); } return 0; case 'P': printf("name\tflags\tdefault\tdescription\n"); for (size_t i = 0; i < lengthof(_pragmas); i++) { printf("\"%s\"\t%s\t\"%s\"\t\"%s\"\n", _pragmas[i][0], _pragmas[i][1], _pragmas[i][2], _pragmas[i][3]); } return 0; case 't': _show_todo |= 1; break; case 'w': _show_todo |= 2; break; case 'h': puts( "strgen - $Revision: 25204 $\n" " -v | --version print version information and exit\n" " -t | --todo replace any untranslated strings with ''\n" " -w | --warning print a warning for any untranslated strings\n" " -h | -? | --help print this help message and exit\n" " -s | --source_dir search for english.txt in the specified directory\n" " -d | --dest_dir put output file in the specified directory, create if needed\n" " -export-commands export all commands and exit\n" " -export-plurals export all plural forms and exit\n" " -export-pragmas export all pragmas and exit\n" " Run without parameters and strgen will search for english.txt and parse it,\n" " creating strings.h. Passing an argument, strgen will translate that language\n" " file using english.txt as a reference and output .lng." ); return 0; case 's': src_dir = replace_pathsep(mgo.opt); break; case 'd': dest_dir = replace_pathsep(mgo.opt); break; case -2: fprintf(stderr, "Invalid arguments\n"); return 0; } } if (dest_dir == NULL) dest_dir = src_dir; // if dest_dir is not specified, it equals src_dir try { /* strgen has two modes of operation. If no (free) arguments are passed * strgen generates strings.h to the destination directory. If it is supplied * with a (free) parameter the program will translate that language to destination * directory. As input english.txt is parsed from the source directory */ if (mgo.numleft == 0) { mkpath(pathbuf, lengthof(pathbuf), src_dir, "english.txt"); /* parse master file */ StringData data(TAB_COUNT); FileStringReader master_reader(data, pathbuf, true, false); master_reader.ParseFile(); if (_errors != 0) return 1; /* write strings.h */ ottd_mkdir(dest_dir); mkpath(pathbuf, lengthof(pathbuf), dest_dir, "strings.h"); HeaderFileWriter writer(pathbuf); writer.WriteHeader(data); writer.Finalise(data); } else if (mgo.numleft >= 1) { char *r; mkpath(pathbuf, lengthof(pathbuf), src_dir, "english.txt"); StringData data(TAB_COUNT); /* parse master file and check if target file is correct */ FileStringReader master_reader(data, pathbuf, true, false); master_reader.ParseFile(); for (int i = 0; i < mgo.numleft; i++) { data.FreeTranslation(); const char *translation = replace_pathsep(mgo.argv[i]); const char *file = strrchr(translation, PATHSEPCHAR); FileStringReader translation_reader(data, translation, false, file == NULL || strcmp(file + 1, "english.txt") != 0); translation_reader.ParseFile(); // target file if (_errors != 0) return 1; /* get the targetfile, strip any directories and append to destination path */ r = strrchr(mgo.argv[i], PATHSEPCHAR); mkpath(pathbuf, lengthof(pathbuf), dest_dir, (r != NULL) ? &r[1] : mgo.argv[i]); /* rename the .txt (input-extension) to .lng */ r = strrchr(pathbuf, '.'); if (r == NULL || strcmp(r, ".txt") != 0) r = strchr(pathbuf, '\0'); ttd_strlcpy(r, ".lng", (size_t)(r - pathbuf)); LanguageFileWriter writer(pathbuf); writer.WriteLang(data); writer.Finalise(); /* if showing warnings, print a summary of the language */ if ((_show_todo & 2) != 0) { fprintf(stdout, "%d warnings and %d errors for %s\n", _warnings, _errors, pathbuf); } } } } catch (...) { return 2; } return 0; } openttd-1.3.3/src/order_type.h0000644000000000000000000001470512246102611015007 0ustar rootroot/* $Id: order_type.h 24776 2012-12-01 13:12:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_type.h Types related to orders. */ #ifndef ORDER_TYPE_H #define ORDER_TYPE_H #include "core/enum_type.hpp" typedef byte VehicleOrderID; ///< The index of an order within its current vehicle (not pool related) typedef uint16 OrderID; typedef uint16 OrderListID; typedef uint16 DestinationID; /** Invalid vehicle order index (sentinel) */ static const VehicleOrderID INVALID_VEH_ORDER_ID = 0xFF; /** Last valid VehicleOrderID. */ static const VehicleOrderID MAX_VEH_ORDER_ID = INVALID_VEH_ORDER_ID - 1; /** Invalid order (sentinel) */ static const OrderID INVALID_ORDER = 0xFFFF; /** Order types */ enum OrderType { OT_BEGIN = 0, OT_NOTHING = 0, OT_GOTO_STATION = 1, OT_GOTO_DEPOT = 2, OT_LOADING = 3, OT_LEAVESTATION = 4, OT_DUMMY = 5, OT_GOTO_WAYPOINT = 6, OT_CONDITIONAL = 7, OT_IMPLICIT = 8, OT_END }; /** It needs to be 8bits, because we save and load it as such */ typedef SimpleTinyEnumT OrderTypeByte; /** * Flags related to the unloading order. */ enum OrderUnloadFlags { OUF_UNLOAD_IF_POSSIBLE = 0, ///< Unload all cargo that the station accepts. OUFB_UNLOAD = 1 << 0, ///< Force unloading all cargo onto the platform, possibly not getting paid. OUFB_TRANSFER = 1 << 1, ///< Transfer all cargo onto the platform. OUFB_NO_UNLOAD = 1 << 2, ///< Totally no unloading will be done. }; /** * Flags related to the loading order. */ enum OrderLoadFlags { OLF_LOAD_IF_POSSIBLE = 0, ///< Load as long as there is cargo that fits in the train. OLFB_FULL_LOAD = 1 << 1, ///< Full load all cargoes of the consist. OLF_FULL_LOAD_ANY = 3, ///< Full load a single cargo of the consist. OLFB_NO_LOAD = 4, ///< Do not load anything. }; /** * Non-stop order flags. */ enum OrderNonStopFlags { ONSF_STOP_EVERYWHERE = 0, ///< The vehicle will stop at any station it passes and the destination. ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS = 1, ///< The vehicle will not stop at any stations it passes except the destination. ONSF_NO_STOP_AT_DESTINATION_STATION = 2, ///< The vehicle will stop at any station it passes except the destination. ONSF_NO_STOP_AT_ANY_STATION = 3, ///< The vehicle will not stop at any stations it passes including the destination. ONSF_END }; /** * Where to stop the trains. */ enum OrderStopLocation { OSL_PLATFORM_NEAR_END = 0, ///< Stop at the near end of the platform OSL_PLATFORM_MIDDLE = 1, ///< Stop at the middle of the platform OSL_PLATFORM_FAR_END = 2, ///< Stop at the far end of the platform OSL_END }; /** * Reasons that could cause us to go to the depot. */ enum OrderDepotTypeFlags { ODTF_MANUAL = 0, ///< Manually initiated order. ODTFB_SERVICE = 1 << 0, ///< This depot order is because of the servicing limit. ODTFB_PART_OF_ORDERS = 1 << 1, ///< This depot order is because of a regular order. }; /** * Actions that can be performed when the vehicle enters the depot. */ enum OrderDepotActionFlags { ODATF_SERVICE_ONLY = 0, ///< Only service the vehicle. ODATFB_HALT = 1 << 0, ///< Service the vehicle and then halt it. ODATFB_NEAREST_DEPOT = 1 << 1, ///< Send the vehicle to the nearest depot. }; DECLARE_ENUM_AS_BIT_SET(OrderDepotActionFlags) /** * Variables (of a vehicle) to 'cause' skipping on. */ enum OrderConditionVariable { OCV_LOAD_PERCENTAGE, ///< Skip based on the amount of load OCV_RELIABILITY, ///< Skip based on the reliability OCV_MAX_SPEED, ///< Skip based on the maximum speed OCV_AGE, ///< Skip based on the age OCV_REQUIRES_SERVICE, ///< Skip when the vehicle requires service OCV_UNCONDITIONALLY, ///< Always skip OCV_REMAINING_LIFETIME, ///< Skip based on the remaining lifetime OCV_END }; /** * Comparator for the skip reasoning. */ enum OrderConditionComparator { OCC_EQUALS, ///< Skip if both values are equal OCC_NOT_EQUALS, ///< Skip if both values are not equal OCC_LESS_THAN, ///< Skip if the value is less than the limit OCC_LESS_EQUALS, ///< Skip if the value is less or equal to the limit OCC_MORE_THAN, ///< Skip if the value is more than the limit OCC_MORE_EQUALS, ///< Skip if the value is more or equal to the limit OCC_IS_TRUE, ///< Skip if the variable is true OCC_IS_FALSE, ///< Skip if the variable is false OCC_END }; /** * Enumeration for the data to set in #CmdModifyOrder. */ enum ModifyOrderFlags { MOF_NON_STOP, ///< Passes an OrderNonStopFlags. MOF_STOP_LOCATION, ///< Passes an OrderStopLocation. MOF_UNLOAD, ///< Passes an OrderUnloadType. MOF_LOAD, ///< Passes an OrderLoadType MOF_DEPOT_ACTION, ///< Selects the OrderDepotAction MOF_COND_VARIABLE, ///< A conditional variable changes. MOF_COND_COMPARATOR, ///< A comparator changes. MOF_COND_VALUE, ///< The value to set the condition to. MOF_COND_DESTINATION,///< Change the destination of a conditional order. MOF_END }; template <> struct EnumPropsT : MakeEnumPropsT {}; /** * Depot action to switch to when doing a #MOF_DEPOT_ACTION. */ enum OrderDepotAction { DA_ALWAYS_GO, ///< Always go to the depot DA_SERVICE, ///< Service only if needed DA_STOP, ///< Go to the depot and stop there DA_END }; /** * Enumeration for the data to set in #CmdChangeTimetable. */ enum ModifyTimetableFlags { MTF_WAIT_TIME, ///< Set wait time. MTF_TRAVEL_TIME, ///< Set travel time. MTF_TRAVEL_SPEED, ///< Set max travel speed. MTF_END }; template <> struct EnumPropsT : MakeEnumPropsT {}; /** Clone actions. */ enum CloneOptions { CO_SHARE = 0, CO_COPY = 1, CO_UNSHARE = 2 }; struct Order; struct OrderList; #endif /* ORDER_TYPE_H */ openttd-1.3.3/src/airport.h0000644000000000000000000002231212246102611014304 0ustar rootroot/* $Id: airport.h 24127 2012-04-17 19:43:18Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airport.h Various declarations for airports */ #ifndef AIRPORT_H #define AIRPORT_H #include "direction_type.h" #include "tile_type.h" /** Some airport-related constants */ static const uint MAX_TERMINALS = 8; ///< maximum number of terminals per airport static const uint MAX_HELIPADS = 3; ///< maximum number of helipads per airport static const uint MAX_ELEMENTS = 255; ///< maximum number of aircraft positions at airport static const uint NUM_AIRPORTTILES = 256; ///< total number of airport tiles static const uint NEW_AIRPORTTILE_OFFSET = 74; ///< offset of first newgrf airport tile static const uint INVALID_AIRPORTTILE = NUM_AIRPORTTILES; ///< id for an invalid airport tile /** Airport types */ enum AirportTypes { AT_SMALL = 0, ///< Small airport. AT_LARGE = 1, ///< Large airport. AT_HELIPORT = 2, ///< Heli port. AT_METROPOLITAN = 3, ///< Metropolitan airport. AT_INTERNATIONAL = 4, ///< International airport. AT_COMMUTER = 5, ///< Commuter airport. AT_HELIDEPOT = 6, ///< Heli depot. AT_INTERCON = 7, ///< Intercontinental airport. AT_HELISTATION = 8, ///< Heli station airport. AT_OILRIG = 9, ///< Oilrig airport. NEW_AIRPORT_OFFSET = 10, ///< Number of the first newgrf airport. NUM_AIRPORTS = 128, ///< Maximal number of airports. AT_INVALID = 254, ///< Invalid airport. AT_DUMMY = 255, ///< Dummy airport. }; /** Flags for airport movement data. */ enum AirportMovingDataFlags { AMED_NOSPDCLAMP = 1 << 0, ///< No speed restrictions. AMED_TAKEOFF = 1 << 1, ///< Takeoff movement. AMED_SLOWTURN = 1 << 2, ///< Turn slowly (mostly used in the air). AMED_LAND = 1 << 3, ///< Landing onto landing strip. AMED_EXACTPOS = 1 << 4, ///< Go exactly to the destination coordinates. AMED_BRAKE = 1 << 5, ///< Taxiing at the airport. AMED_HELI_RAISE = 1 << 6, ///< Helicopter take-off. AMED_HELI_LOWER = 1 << 7, ///< Helicopter landing. AMED_HOLD = 1 << 8, ///< Holding pattern movement (above the airport). }; /** Movement States on Airports (headings target) */ enum AirportMovementStates { TO_ALL = 0, ///< Go in this direction for every target. HANGAR = 1, ///< Heading for hangar. TERM1 = 2, ///< Heading for terminal 1. TERM2 = 3, ///< Heading for terminal 2. TERM3 = 4, ///< Heading for terminal 3. TERM4 = 5, ///< Heading for terminal 4. TERM5 = 6, ///< Heading for terminal 5. TERM6 = 7, ///< Heading for terminal 6. HELIPAD1 = 8, ///< Heading for helipad 1. HELIPAD2 = 9, ///< Heading for helipad 2. TAKEOFF = 10, ///< Airplane wants to leave the airport. STARTTAKEOFF = 11, ///< Airplane has arrived at a runway for take-off. ENDTAKEOFF = 12, ///< Airplane has reached end-point of the take-off runway. HELITAKEOFF = 13, ///< Helicopter wants to leave the airport. FLYING = 14, ///< %Vehicle is flying in the air. LANDING = 15, ///< Airplane wants to land. ENDLANDING = 16, ///< Airplane wants to finish landing. HELILANDING = 17, ///< Helicopter wants to land. HELIENDLANDING = 18, ///< Helicopter wants to finish landing. TERM7 = 19, ///< Heading for terminal 7. TERM8 = 20, ///< Heading for terminal 8. HELIPAD3 = 21, ///< Heading for helipad 3. MAX_HEADINGS = 21, ///< Last valid target to head for. }; /** Movement Blocks on Airports blocks (eg_airport_flags). */ static const uint64 TERM1_block = 1ULL << 0, ///< Block belonging to terminal 1. TERM2_block = 1ULL << 1, ///< Block belonging to terminal 2. TERM3_block = 1ULL << 2, ///< Block belonging to terminal 3. TERM4_block = 1ULL << 3, ///< Block belonging to terminal 4. TERM5_block = 1ULL << 4, ///< Block belonging to terminal 5. TERM6_block = 1ULL << 5, ///< Block belonging to terminal 6. HELIPAD1_block = 1ULL << 6, ///< Block belonging to helipad 1. HELIPAD2_block = 1ULL << 7, ///< Block belonging to helipad 2. RUNWAY_IN_OUT_block = 1ULL << 8, RUNWAY_IN_block = 1ULL << 8, AIRPORT_BUSY_block = 1ULL << 8, RUNWAY_OUT_block = 1ULL << 9, TAXIWAY_BUSY_block = 1ULL << 10, OUT_WAY_block = 1ULL << 11, IN_WAY_block = 1ULL << 12, AIRPORT_ENTRANCE_block = 1ULL << 13, TERM_GROUP1_block = 1ULL << 14, TERM_GROUP2_block = 1ULL << 15, HANGAR2_AREA_block = 1ULL << 16, TERM_GROUP2_ENTER1_block = 1ULL << 17, TERM_GROUP2_ENTER2_block = 1ULL << 18, TERM_GROUP2_EXIT1_block = 1ULL << 19, TERM_GROUP2_EXIT2_block = 1ULL << 20, PRE_HELIPAD_block = 1ULL << 21, /* blocks for new airports */ TERM7_block = 1ULL << 22, ///< Block belonging to terminal 7. TERM8_block = 1ULL << 23, ///< Block belonging to terminal 8. HELIPAD3_block = 1ULL << 24, ///< Block belonging to helipad 3. HANGAR1_AREA_block = 1ULL << 26, OUT_WAY2_block = 1ULL << 27, IN_WAY2_block = 1ULL << 28, RUNWAY_IN2_block = 1ULL << 29, RUNWAY_OUT2_block = 1ULL << 10, ///< @note re-uses #TAXIWAY_BUSY_block HELIPAD_GROUP_block = 1ULL << 13, ///< @note re-uses #AIRPORT_ENTRANCE_block OUT_WAY_block2 = 1ULL << 31, /* end of new blocks */ NOTHING_block = 1ULL << 30, AIRPORT_CLOSED_block = 1ULL << 63; ///< Dummy block for indicating a closed airport. /** A single location on an airport where aircraft can move to. */ struct AirportMovingData { int16 x; ///< x-coordinate of the destination. int16 y; ///< y-coordinate of the destination. uint16 flag; ///< special flags when moving towards the destination. DirectionByte direction; ///< Direction to turn the aircraft after reaching the destination. }; AirportMovingData RotateAirportMovingData(const AirportMovingData *orig, Direction rotation, uint num_tiles_x, uint num_tiles_y); struct AirportFTAbuildup; /** Finite sTate mAchine (FTA) of an airport. */ struct AirportFTAClass { public: /** Bitmask of airport flags. */ enum Flags { AIRPLANES = 0x1, ///< Can planes land on this airport type? HELICOPTERS = 0x2, ///< Can helicopters land on this airport type? ALL = AIRPLANES | HELICOPTERS, ///< Mask to check for both planes and helicopters. SHORT_STRIP = 0x4, ///< This airport has a short landing strip, dangerous for fast aircraft. }; AirportFTAClass( const AirportMovingData *moving_data, const byte *terminals, const byte num_helipads, const byte *entry_points, Flags flags, const AirportFTAbuildup *apFA, byte delta_z ); ~AirportFTAClass(); /** * Get movement data at a position. * @param position Element number to get movement data about. * @return Pointer to the movement data. */ const AirportMovingData *MovingData(byte position) const { assert(position < nofelements); return &moving_data[position]; } const AirportMovingData *moving_data; ///< Movement data. struct AirportFTA *layout; ///< state machine for airport const byte *terminals; ///< %Array with the number of terminal groups, followed by the number of terminals in each group. const byte num_helipads; ///< Number of helipads on this airport. When 0 helicopters will go to normal terminals. Flags flags; ///< Flags for this airport type. byte nofelements; ///< number of positions the airport consists of const byte *entry_points; ///< when an airplane arrives at this airport, enter it at position entry_point, index depends on direction byte delta_z; ///< Z adjustment for helicopter pads }; DECLARE_ENUM_AS_BIT_SET(AirportFTAClass::Flags) /** Internal structure used in openttd - Finite sTate mAchine --> FTA */ struct AirportFTA { AirportFTA *next; ///< possible extra movement choices from this position uint64 block; ///< 64 bit blocks (st->airport.flags), should be enough for the most complex airports byte position; ///< the position that an airplane is at byte next_position; ///< next position from this position byte heading; ///< heading (current orders), guiding an airplane to its target on an airport }; const AirportFTAClass *GetAirport(const byte airport_type); byte GetVehiclePosOnBuild(TileIndex hangar_tile); #endif /* AIRPORT_H */ openttd-1.3.3/src/waypoint_base.h0000644000000000000000000000462012246102611015472 0ustar rootroot/* $Id: waypoint_base.h 23640 2011-12-20 17:57:56Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file waypoint_base.h Base of waypoints. */ #ifndef WAYPOINT_BASE_H #define WAYPOINT_BASE_H #include "base_station_base.h" /** Representation of a waypoint. */ struct Waypoint FINAL : SpecializedStation { uint16 town_cn; ///< The N-1th waypoint for this town (consecutive number) /** * Create a waypoint at the given tile. * @param tile The location of the waypoint. */ Waypoint(TileIndex tile = INVALID_TILE) : SpecializedStation(tile) { } ~Waypoint(); void UpdateVirtCoord(); /* virtual */ inline bool TileBelongsToRailStation(TileIndex tile) const { return IsRailWaypointTile(tile) && GetStationIndex(tile) == this->index; } /* virtual */ uint32 GetNewGRFVariable(const struct ResolverObject *object, byte variable, byte parameter, bool *available) const; /* virtual */ void GetTileArea(TileArea *ta, StationType type) const; /* virtual */ uint GetPlatformLength(TileIndex tile, DiagDirection dir) const { return 1; } /* virtual */ uint GetPlatformLength(TileIndex tile) const { return 1; } /** * Is this a single tile waypoint? * @return true if it is. */ inline bool IsSingleTile() const { return (this->facilities & FACIL_TRAIN) != 0 && this->train_station.w == 1 && this->train_station.h == 1; } /** * Is the "type" of waypoint the same as the given waypoint, * i.e. are both a rail waypoint or are both a buoy? * @param wp The waypoint to compare to. * @return true iff their types are equal. */ inline bool IsOfType(const Waypoint *wp) const { return this->string_id == wp->string_id; } }; /** * Iterate over all waypoints. * @param var The variable used for iteration. */ #define FOR_ALL_WAYPOINTS(var) FOR_ALL_BASE_STATIONS_OF_TYPE(Waypoint, var) #endif /* WAYPOINT_BASE_H */ openttd-1.3.3/src/cargo_type.h0000644000000000000000000000746012246102611014767 0ustar rootroot/* $Id: cargo_type.h 23826 2012-01-20 20:18:19Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargo_type.h Types related to cargoes... */ #ifndef CARGO_TYPE_H #define CARGO_TYPE_H #include "core/enum_type.hpp" /** * Cargo slots to indicate a cargo type within a game. * Numbers are re-used between different climates. * @see CargoTypes */ typedef byte CargoID; /** Available types of cargo */ enum CargoTypes { /* Temperate */ CT_PASSENGERS = 0, CT_COAL = 1, CT_MAIL = 2, CT_OIL = 3, CT_LIVESTOCK = 4, CT_GOODS = 5, CT_GRAIN = 6, CT_WOOD = 7, CT_IRON_ORE = 8, CT_STEEL = 9, CT_VALUABLES = 10, /* Arctic */ CT_WHEAT = 6, CT_HILLY_UNUSED = 8, CT_PAPER = 9, CT_GOLD = 10, CT_FOOD = 11, /* Tropic */ CT_RUBBER = 1, CT_FRUIT = 4, CT_MAIZE = 6, CT_COPPER_ORE = 8, CT_WATER = 9, CT_DIAMONDS = 10, /* Toyland */ CT_SUGAR = 1, CT_TOYS = 3, CT_BATTERIES = 4, CT_CANDY = 5, CT_TOFFEE = 6, CT_COLA = 7, CT_COTTON_CANDY = 8, CT_BUBBLES = 9, CT_PLASTIC = 10, CT_FIZZY_DRINKS = 11, NUM_CARGO = 32, ///< Maximal number of cargo types in a game. CT_AUTO_REFIT = 0xFD, ///< Automatically choose cargo type when doing auto refitting. CT_NO_REFIT = 0xFE, ///< Do not refit cargo of a vehicle (used in vehicle orders and auto-replace/auto-new). CT_INVALID = 0xFF, ///< Invalid cargo type. }; /** Class for storing amounts of cargo */ struct CargoArray { private: uint amount[NUM_CARGO]; ///< Amount of each type of cargo. public: /** Default constructor. */ inline CargoArray() { this->Clear(); } /** Reset all entries. */ inline void Clear() { memset(this->amount, 0, sizeof(this->amount)); } /** * Read/write access to an amount of a specific cargo type. * @param cargo Cargo type to access. */ inline uint &operator[](CargoID cargo) { return this->amount[cargo]; } /** * Read-only access to an amount of a specific cargo type. * @param cargo Cargo type to access. */ inline const uint &operator[](CargoID cargo) const { return this->amount[cargo]; } /** * Get the sum of all cargo amounts. * @return The sum. */ template inline const T GetSum() const { T ret = 0; for (size_t i = 0; i < lengthof(this->amount); i++) { ret += this->amount[i]; } return ret; } /** * Get the amount of cargos that have an amount. * @return The amount. */ inline byte GetCount() const { byte count = 0; for (size_t i = 0; i < lengthof(this->amount); i++) { if (this->amount[i] != 0) count++; } return count; } }; /** Types of cargo source and destination */ enum SourceType { ST_INDUSTRY, ///< Source/destination is an industry ST_TOWN, ///< Source/destination is a town ST_HEADQUARTERS, ///< Source/destination are company headquarters }; typedef SimpleTinyEnumT SourceTypeByte; ///< The SourceType packed into a byte for savegame purposes. typedef uint16 SourceID; ///< Contains either industry ID, town ID or company ID (or INVALID_SOURCE) static const SourceID INVALID_SOURCE = 0xFFFF; ///< Invalid/unknown index of source #endif /* CARGO_TYPE_H */ openttd-1.3.3/src/ini.cpp0000644000000000000000000001025612246102611013742 0ustar rootroot/* $Id: ini.cpp 24417 2012-07-19 19:21:47Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ini.cpp Definition of the IniItem class, related to reading/writing '*.ini' files. */ #include "stdafx.h" #include "debug.h" #include "ini_type.h" #include "string_func.h" #include "fileio_func.h" #if (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309L) || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500) # define WITH_FDATASYNC # include #endif #ifdef WIN32 # include # include # include "core/mem_func.hpp" #endif /** * Create a new ini file with given group names. * @param list_group_names A \c NULL terminated list with group names that should be loaded as lists instead of variables. @see IGT_LIST */ IniFile::IniFile(const char * const *list_group_names) : IniLoadFile(list_group_names) { } /** * Save the Ini file's data to the disk. * @param filename the file to save to. * @return true if saving succeeded. */ bool IniFile::SaveToDisk(const char *filename) { /* * First write the configuration to a (temporary) file and then rename * that file. This to prevent that when OpenTTD crashes during the save * you end up with a truncated configuration file. */ char file_new[MAX_PATH]; strecpy(file_new, filename, lastof(file_new)); strecat(file_new, ".new", lastof(file_new)); FILE *f = fopen(file_new, "w"); if (f == NULL) return false; for (const IniGroup *group = this->group; group != NULL; group = group->next) { if (group->comment) fputs(group->comment, f); fprintf(f, "[%s]\n", group->name); for (const IniItem *item = group->item; item != NULL; item = item->next) { if (item->comment != NULL) fputs(item->comment, f); /* protect item->name with quotes if needed */ if (strchr(item->name, ' ') != NULL || item->name[0] == '[') { fprintf(f, "\"%s\"", item->name); } else { fprintf(f, "%s", item->name); } fprintf(f, " = %s\n", item->value == NULL ? "" : item->value); } } if (this->comment) fputs(this->comment, f); /* * POSIX (and friends) do not guarantee that when a file is closed it is * flushed to the disk. So we manually flush it do disk if we have the * APIs to do so. We only need to flush the data as the metadata itself * (modification date etc.) is not important to us; only the real data is. */ #ifdef WITH_FDATASYNC int ret = fdatasync(fileno(f)); fclose(f); if (ret != 0) return false; #else fclose(f); #endif #if defined(WIN32) || defined(WIN64) /* Allocate space for one more \0 character. */ TCHAR tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1]; _tcsncpy(tfilename, OTTD2FS(filename), MAX_PATH); _tcsncpy(tfile_new, OTTD2FS(file_new), MAX_PATH); /* SHFileOperation wants a double '\0' terminated string. */ tfilename[MAX_PATH - 1] = '\0'; tfile_new[MAX_PATH - 1] = '\0'; tfilename[_tcslen(tfilename) + 1] = '\0'; tfile_new[_tcslen(tfile_new) + 1] = '\0'; /* Rename file without any user confirmation. */ SHFILEOPSTRUCT shfopt; MemSetT(&shfopt, 0); shfopt.wFunc = FO_MOVE; shfopt.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT; shfopt.pFrom = tfile_new; shfopt.pTo = tfilename; SHFileOperation(&shfopt); #else rename(file_new, filename); #endif return true; } /* virtual */ FILE *IniFile::OpenFile(const char *filename, Subdirectory subdir, size_t *size) { /* Open the text file in binary mode to prevent end-of-line translations * done by ftell() and friends, as defined by K&R. */ return FioFOpenFile(filename, "rb", subdir, size); } /* virtual */ void IniFile::ReportFileError(const char * const pre, const char * const buffer, const char * const post) { ShowInfoF("%s%s%s", pre, buffer, post); } openttd-1.3.3/src/cheat_gui.cpp0000644000000000000000000002737512246102611015125 0ustar rootroot/* $Id: cheat_gui.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cheat_gui.cpp GUI related to cheating. */ #include "stdafx.h" #include "command_func.h" #include "cheat_type.h" #include "company_base.h" #include "company_func.h" #include "date_func.h" #include "saveload/saveload.h" #include "textbuf_gui.h" #include "window_gui.h" #include "string_func.h" #include "strings_func.h" #include "window_func.h" #include "rail_gui.h" #include "settings_gui.h" #include "company_gui.h" #include "widgets/cheat_widget.h" #include "table/sprites.h" /** * The 'amount' to cheat with. * This variable is semantically a constant value, but because the cheat * code requires to be able to write to the variable it is not constified. */ static int32 _money_cheat_amount = 10000000; /** * Handle cheating of money. * Note that the amount of money of a company must be changed through a command * rather than by setting a variable. Since the cheat data structure expects a * variable, the amount of given/taken money is used for this purpose. * @param p1 not used. * @param p2 is -1 or +1 (down/up) * @return Amount of money cheat. */ static int32 ClickMoneyCheat(int32 p1, int32 p2) { DoCommandP(0, (uint32)(p2 * _money_cheat_amount), 0, CMD_MONEY_CHEAT); return _money_cheat_amount; } /** * Handle changing of company. * @param p1 company to set to * @param p2 is -1 or +1 (down/up) * @return The new company. */ static int32 ClickChangeCompanyCheat(int32 p1, int32 p2) { while ((uint)p1 < Company::GetPoolSize()) { if (Company::IsValidID((CompanyID)p1)) { SetLocalCompany((CompanyID)p1); return _local_company; } p1 += p2; } return _local_company; } /** * Allow (or disallow) changing production of all industries. * @param p1 new value * @param p2 unused * @return New value allowing change of industry production. */ static int32 ClickSetProdCheat(int32 p1, int32 p2) { _cheats.setup_prod.value = (p1 != 0); InvalidateWindowClassesData(WC_INDUSTRY_VIEW); return _cheats.setup_prod.value; } extern void EnginesMonthlyLoop(); /** * Handle changing of the current year. * @param p1 Unused. * @param p2 +1 (increase) or -1 (decrease). * @return New year. */ static int32 ClickChangeDateCheat(int32 p1, int32 p2) { YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); p1 = Clamp(p1, MIN_YEAR, MAX_YEAR); if (p1 == _cur_year) return _cur_year; SetDate(ConvertYMDToDate(p1, ymd.month, ymd.day), _date_fract); EnginesMonthlyLoop(); SetWindowDirty(WC_STATUS_BAR, 0); InvalidateWindowClassesData(WC_BUILD_STATION, 0); InvalidateWindowClassesData(WC_BUILD_OBJECT, 0); ResetSignalVariant(); return _cur_year; } /** Available cheats. */ enum CheatNumbers { CHT_MONEY, ///< Change amount of money. CHT_CHANGE_COMPANY, ///< Switch company. CHT_EXTRA_DYNAMITE, ///< Dynamite anything. CHT_CROSSINGTUNNELS, ///< Allow tunnels to cross each other. CHT_NO_JETCRASH, ///< Disable jet-airplane crashes. CHT_SETUP_PROD, ///< Allow manually editing of industry production. CHT_CHANGE_DATE, ///< Do time traveling. CHT_NUM_CHEATS, ///< Number of cheats. }; /** * Signature of handler function when user clicks at a cheat. * @param p1 The new value. * @param p2 Change direction (+1, +1), \c 0 for boolean settings. */ typedef int32 CheckButtonClick(int32 p1, int32 p2); /** Information of a cheat. */ struct CheatEntry { VarType type; ///< type of selector StringID str; ///< string with descriptive text void *variable; ///< pointer to the variable bool *been_used; ///< has this cheat been used before? CheckButtonClick *proc;///< procedure }; /** * The available cheats. * Order matches with the values of #CheatNumbers */ static const CheatEntry _cheats_ui[] = { {SLE_INT32, STR_CHEAT_MONEY, &_money_cheat_amount, &_cheats.money.been_used, &ClickMoneyCheat }, {SLE_UINT8, STR_CHEAT_CHANGE_COMPANY, &_local_company, &_cheats.switch_company.been_used, &ClickChangeCompanyCheat }, {SLE_BOOL, STR_CHEAT_EXTRA_DYNAMITE, &_cheats.magic_bulldozer.value, &_cheats.magic_bulldozer.been_used, NULL }, {SLE_BOOL, STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value, &_cheats.crossing_tunnels.been_used, NULL }, {SLE_BOOL, STR_CHEAT_NO_JETCRASH, &_cheats.no_jetcrash.value, &_cheats.no_jetcrash.been_used, NULL }, {SLE_BOOL, STR_CHEAT_SETUP_PROD, &_cheats.setup_prod.value, &_cheats.setup_prod.been_used, &ClickSetProdCheat }, {SLE_INT32, STR_CHEAT_CHANGE_DATE, &_cur_year, &_cheats.change_date.been_used, &ClickChangeDateCheat }, }; assert_compile(CHT_NUM_CHEATS == lengthof(_cheats_ui)); /** Widget definitions of the cheat GUI. */ static const NWidgetPart _nested_cheat_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_CHEATS, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_C_PANEL), SetDataTip(0x0, STR_CHEATS_TOOLTIP), EndContainer(), }; /** GUI for the cheats. */ struct CheatWindow : Window { int clicked; int header_height; CheatWindow(const WindowDesc *desc) : Window() { this->InitNested(desc); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_C_PANEL) return; int y = r.top + WD_FRAMERECT_TOP + this->header_height; DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, y, STR_CHEATS_WARNING, TC_FROMSTRING, SA_CENTER); bool rtl = _current_text_dir == TD_RTL; uint box_left = rtl ? r.right - 12 : r.left + 5; uint button_left = rtl ? r.right - 20 - SETTING_BUTTON_WIDTH : r.left + 20; uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : 30 + SETTING_BUTTON_WIDTH); uint text_right = r.right - (rtl ? 30 + SETTING_BUTTON_WIDTH : WD_FRAMERECT_RIGHT); for (int i = 0; i != lengthof(_cheats_ui); i++) { const CheatEntry *ce = &_cheats_ui[i]; DrawSprite((*ce->been_used) ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, box_left, y + 2); switch (ce->type) { case SLE_BOOL: { bool on = (*(bool*)ce->variable); DrawBoolButton(button_left, y, on, true); SetDParam(0, on ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF); break; } default: { int32 val = (int32)ReadValue(ce->variable, ce->type); char buf[512]; /* Draw [<][>] boxes for settings of an integer-type */ DrawArrowButtons(button_left, y, COLOUR_YELLOW, clicked - (i * 2), true, true); switch (ce->str) { /* Display date for change date cheat */ case STR_CHEAT_CHANGE_DATE: SetDParam(0, _date); break; /* Draw coloured flag for change company cheat */ case STR_CHEAT_CHANGE_COMPANY: { SetDParam(0, val + 1); GetString(buf, STR_CHEAT_CHANGE_COMPANY, lastof(buf)); uint offset = 10 + GetStringBoundingBox(buf).width; DrawCompanyIcon(_local_company, rtl ? text_right - offset - 10 : text_left + offset, y + 2); break; } default: SetDParam(0, val); } break; } } DrawString(text_left, text_right, y + 1, ce->str); y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_C_PANEL) return; uint width = 0; for (int i = 0; i != lengthof(_cheats_ui); i++) { const CheatEntry *ce = &_cheats_ui[i]; switch (ce->type) { case SLE_BOOL: SetDParam(0, STR_CONFIG_SETTING_ON); width = max(width, GetStringBoundingBox(ce->str).width); SetDParam(0, STR_CONFIG_SETTING_OFF); width = max(width, GetStringBoundingBox(ce->str).width); break; default: switch (ce->str) { /* Display date for change date cheat */ case STR_CHEAT_CHANGE_DATE: SetDParam(0, ConvertYMDToDate(MAX_YEAR, 11, 31)); width = max(width, GetStringBoundingBox(ce->str).width); break; /* Draw coloured flag for change company cheat */ case STR_CHEAT_CHANGE_COMPANY: SetDParamMaxValue(0, MAX_COMPANIES); width = max(width, GetStringBoundingBox(ce->str).width + 10 + 10); break; default: SetDParam(0, INT64_MAX); width = max(width, GetStringBoundingBox(ce->str).width); break; } break; } } size->width = width + 50 /* stuff on the left */ + 10 /* extra spacing on right */; this->header_height = GetStringHeight(STR_CHEATS_WARNING, size->width - WD_FRAMERECT_LEFT - WD_FRAMERECT_RIGHT) + WD_PAR_VSEP_WIDE; size->height = this->header_height + WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_BOTTOM + (FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL) * lengthof(_cheats_ui); } virtual void OnClick(Point pt, int widget, int click_count) { const NWidgetBase *wid = this->GetWidget(WID_C_PANEL); uint btn = (pt.y - wid->pos_y - WD_FRAMERECT_TOP - this->header_height) / (FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL); uint x = pt.x - wid->pos_x; bool rtl = _current_text_dir == TD_RTL; if (rtl) x = wid->current_x - x; if (btn >= lengthof(_cheats_ui)) return; const CheatEntry *ce = &_cheats_ui[btn]; int value = (int32)ReadValue(ce->variable, ce->type); int oldvalue = value; if (btn == CHT_CHANGE_DATE && x >= 20 + SETTING_BUTTON_WIDTH) { /* Click at the date text directly. */ SetDParam(0, value); ShowQueryString(STR_JUST_INT, STR_CHEAT_CHANGE_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QSF_ACCEPT_UNCHANGED); return; } /* Not clicking a button? */ if (!IsInsideMM(x, 20, 20 + SETTING_BUTTON_WIDTH)) return; *ce->been_used = true; switch (ce->type) { case SLE_BOOL: value ^= 1; if (ce->proc != NULL) ce->proc(value, 0); break; default: /* Take whatever the function returns */ value = ce->proc(value + ((x >= 20 + SETTING_BUTTON_WIDTH / 2) ? 1 : -1), (x >= 20 + SETTING_BUTTON_WIDTH / 2) ? 1 : -1); /* The first cheat (money), doesn't return a different value. */ if (value != oldvalue || btn == CHT_MONEY) this->clicked = btn * 2 + 1 + ((x >= 20 + SETTING_BUTTON_WIDTH / 2) != rtl ? 1 : 0); break; } if (value != oldvalue) WriteValue(ce->variable, ce->type, (int64)value); this->SetTimeout(); this->SetDirty(); } virtual void OnTimeout() { this->clicked = 0; this->SetDirty(); } virtual void OnQueryTextFinished(char *str) { /* Was 'cancel' pressed or nothing entered? */ if (str == NULL || StrEmpty(str)) return; const CheatEntry *ce = &_cheats_ui[CHT_CHANGE_DATE]; int oldvalue = (int32)ReadValue(ce->variable, ce->type); int value = atoi(str); *ce->been_used = true; value = ce->proc(value, value - oldvalue); if (value != oldvalue) WriteValue(ce->variable, ce->type, (int64)value); this->SetDirty(); } }; /** Window description of the cheats GUI. */ static const WindowDesc _cheats_desc( WDP_AUTO, 0, 0, WC_CHEATS, WC_NONE, 0, _nested_cheat_widgets, lengthof(_nested_cheat_widgets) ); /** Open cheat window. */ void ShowCheatWindow() { DeleteWindowById(WC_CHEATS, 0); new CheatWindow(&_cheats_desc); } openttd-1.3.3/src/tunnelbridge.h0000644000000000000000000000241712246102611015312 0ustar rootroot/* $Id: tunnelbridge.h 22405 2011-05-01 19:14:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tunnelbridge.h Header file for things common for tunnels and bridges */ #ifndef TUNNELBRIDGE_H #define TUNNELBRIDGE_H #include "map_func.h" /** * Calculates the length of a tunnel or a bridge (without end tiles) * @param begin The begin of the tunnel or bridge. * @param end The end of the tunnel or bridge. * @return length of bridge/tunnel middle */ static inline uint GetTunnelBridgeLength(TileIndex begin, TileIndex end) { int x1 = TileX(begin); int y1 = TileY(begin); int x2 = TileX(end); int y2 = TileY(end); return abs(x2 + y2 - x1 - y1) - 1; } extern TileIndex _build_tunnel_endtile; #endif /* TUNNELBRIDGE_H */ openttd-1.3.3/src/object_type.h0000644000000000000000000000315112246102610015132 0ustar rootroot/* $Id: object_type.h 20660 2010-08-28 18:49:39Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_type.h Types related to object tiles. */ #ifndef OBJECT_TYPE_H #define OBJECT_TYPE_H /** Types of objects. */ typedef uint16 ObjectType; static const ObjectType OBJECT_TRANSMITTER = 0; ///< The large antenna static const ObjectType OBJECT_LIGHTHOUSE = 1; ///< The nice lighthouse static const ObjectType OBJECT_STATUE = 2; ///< Statue in towns static const ObjectType OBJECT_OWNED_LAND = 3; ///< Owned land 'flag' static const ObjectType OBJECT_HQ = 4; ///< HeadQuarter of a player static const ObjectType NEW_OBJECT_OFFSET = 5; ///< Offset for new objects static const ObjectType NUM_OBJECTS = 256; ///< Number of supported objects static const ObjectType INVALID_OBJECT_TYPE = 0xFFFF; ///< An invalid object /** Unique identifier for an object. */ typedef uint16 ObjectID; struct Object; struct ObjectSpec; static const ObjectID INVALID_OBJECT = 0xFFFF; ///< An invalid object #endif /* OBJECT_TYPE_H */ openttd-1.3.3/src/toolbar_gui.h0000644000000000000000000000160612246102611015135 0ustar rootroot/* $Id: toolbar_gui.h 24065 2012-03-25 19:06:59Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file toolbar_gui.h Stuff related to the (main) toolbar. */ #ifndef TOOLBAR_GUI_H #define TOOLBAR_GUI_H void AllocateToolbar(); void ToggleBoundingBoxes(); void ToggleDirtyBlocks(); extern int16 *_preferred_toolbar_size; #endif /* TOOLBAR_GUI_H */ openttd-1.3.3/src/newgrf_town.cpp0000644000000000000000000001656112246102611015527 0ustar rootroot/* $Id: newgrf_town.cpp 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_town.cpp Implementation of the town part of NewGRF houses. */ #include "stdafx.h" #include "debug.h" #include "town.h" #include "newgrf_town.h" /** * Resolver of a town scope. * @param ro Surrounding resolver. * @param t %Town of the scope. * @param readonly Scope may change persistent storage of the town. */ TownScopeResolver::TownScopeResolver(ResolverObject *ro, Town *t, bool readonly) : ScopeResolver(ro) { this->t = t; this->readonly = readonly; } /* virtual */ uint32 TownScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { switch (variable) { /* Larger towns */ case 0x40: if (_settings_game.economy.larger_towns == 0) return 2; if (this->t->larger_town) return 1; return 0; /* Town index */ case 0x41: return this->t->index; /* Get a variable from the persistent storage */ case 0x7C: { /* Check the persistent storage for the GrfID stored in register 100h. */ uint32 grfid = GetRegister(0x100); if (grfid == 0xFFFFFFFF) { if (this->ro->grffile == NULL) return 0; grfid = this->ro->grffile->grfid; } std::list::iterator iter; for (iter = this->t->psa_list.begin(); iter != this->t->psa_list.end(); iter++) { if ((*iter)->grfid == grfid) return (*iter)->GetValue(parameter); } return 0; } /* Town properties */ case 0x80: return this->t->xy; case 0x81: return GB(this->t->xy, 8, 8); case 0x82: return ClampToU16(this->t->cache.population); case 0x83: return GB(ClampToU16(this->t->cache.population), 8, 8); case 0x8A: return this->t->grow_counter; case 0x92: return this->t->flags; // In original game, 0x92 and 0x93 are really one word. Since flags is a byte, this is to adjust case 0x93: return 0; case 0x94: return ClampToU16(this->t->cache.squared_town_zone_radius[0]); case 0x95: return GB(ClampToU16(this->t->cache.squared_town_zone_radius[0]), 8, 8); case 0x96: return ClampToU16(this->t->cache.squared_town_zone_radius[1]); case 0x97: return GB(ClampToU16(this->t->cache.squared_town_zone_radius[1]), 8, 8); case 0x98: return ClampToU16(this->t->cache.squared_town_zone_radius[2]); case 0x99: return GB(ClampToU16(this->t->cache.squared_town_zone_radius[2]), 8, 8); case 0x9A: return ClampToU16(this->t->cache.squared_town_zone_radius[3]); case 0x9B: return GB(ClampToU16(this->t->cache.squared_town_zone_radius[3]), 8, 8); case 0x9C: return ClampToU16(this->t->cache.squared_town_zone_radius[4]); case 0x9D: return GB(ClampToU16(this->t->cache.squared_town_zone_radius[4]), 8, 8); case 0x9E: return this->t->ratings[0]; case 0x9F: return GB(this->t->ratings[0], 8, 8); case 0xA0: return this->t->ratings[1]; case 0xA1: return GB(this->t->ratings[1], 8, 8); case 0xA2: return this->t->ratings[2]; case 0xA3: return GB(this->t->ratings[2], 8, 8); case 0xA4: return this->t->ratings[3]; case 0xA5: return GB(this->t->ratings[3], 8, 8); case 0xA6: return this->t->ratings[4]; case 0xA7: return GB(this->t->ratings[4], 8, 8); case 0xA8: return this->t->ratings[5]; case 0xA9: return GB(this->t->ratings[5], 8, 8); case 0xAA: return this->t->ratings[6]; case 0xAB: return GB(this->t->ratings[6], 8, 8); case 0xAC: return this->t->ratings[7]; case 0xAD: return GB(this->t->ratings[7], 8, 8); case 0xAE: return this->t->have_ratings; case 0xB2: return this->t->statues; case 0xB6: return ClampToU16(this->t->cache.num_houses); case 0xB9: return this->t->growth_rate & (~TOWN_GROW_RATE_CUSTOM); case 0xBA: return ClampToU16(this->t->supplied[CT_PASSENGERS].new_max); case 0xBB: return GB(ClampToU16(this->t->supplied[CT_PASSENGERS].new_max), 8, 8); case 0xBC: return ClampToU16(this->t->supplied[CT_MAIL].new_max); case 0xBD: return GB(ClampToU16(this->t->supplied[CT_MAIL].new_max), 8, 8); case 0xBE: return ClampToU16(this->t->supplied[CT_PASSENGERS].new_act); case 0xBF: return GB(ClampToU16(this->t->supplied[CT_PASSENGERS].new_act), 8, 8); case 0xC0: return ClampToU16(this->t->supplied[CT_MAIL].new_act); case 0xC1: return GB(ClampToU16(this->t->supplied[CT_MAIL].new_act), 8, 8); case 0xC2: return ClampToU16(this->t->supplied[CT_PASSENGERS].old_max); case 0xC3: return GB(ClampToU16(this->t->supplied[CT_PASSENGERS].old_max), 8, 8); case 0xC4: return ClampToU16(this->t->supplied[CT_MAIL].old_max); case 0xC5: return GB(ClampToU16(this->t->supplied[CT_MAIL].old_max), 8, 8); case 0xC6: return ClampToU16(this->t->supplied[CT_PASSENGERS].old_act); case 0xC7: return GB(ClampToU16(this->t->supplied[CT_PASSENGERS].old_act), 8, 8); case 0xC8: return ClampToU16(this->t->supplied[CT_MAIL].old_act); case 0xC9: return GB(ClampToU16(this->t->supplied[CT_MAIL].old_act), 8, 8); case 0xCA: return this->t->GetPercentTransported(CT_PASSENGERS); case 0xCB: return this->t->GetPercentTransported(CT_MAIL); case 0xCC: return this->t->received[TE_FOOD].new_act; case 0xCD: return GB(this->t->received[TE_FOOD].new_act, 8, 8); case 0xCE: return this->t->received[TE_WATER].new_act; case 0xCF: return GB(this->t->received[TE_WATER].new_act, 8, 8); case 0xD0: return this->t->received[TE_FOOD].old_act; case 0xD1: return GB(this->t->received[TE_FOOD].old_act, 8, 8); case 0xD2: return this->t->received[TE_WATER].old_act; case 0xD3: return GB(this->t->received[TE_WATER].old_act, 8, 8); case 0xD4: return this->t->road_build_months; case 0xD5: return this->t->fund_buildings_months; } DEBUG(grf, 1, "Unhandled town variable 0x%X", variable); *available = false; return UINT_MAX; } /* virtual */ void TownScopeResolver::StorePSA(uint pos, int32 value) { if (this->readonly) return; assert(this->t != NULL); /* We can't store anything if the caller has no #GRFFile. */ if (this->ro->grffile == NULL) return; /* Check the persistent storage for the GrfID stored in register 100h. */ uint32 grfid = GetRegister(0x100); /* A NewGRF can only write in the persistent storage associated to its own GRFID. */ if (grfid == 0xFFFFFFFF) grfid = this->ro->grffile->grfid; if (grfid != this->ro->grffile->grfid) return; /* Check if the storage exists. */ std::list::iterator iter; for (iter = t->psa_list.begin(); iter != t->psa_list.end(); iter++) { if ((*iter)->grfid == grfid) { (*iter)->StoreValue(pos, value); return; } } /* Create a new storage. */ assert(PersistentStorage::CanAllocateItem()); PersistentStorage *psa = new PersistentStorage(grfid); psa->StoreValue(pos, value); t->psa_list.push_back(psa); } /** * Resolver for a town. * @param grffile NewGRF file associated with the town. * @param t %Town of the scope. * @param readonly Scope may change persistent storage of the town. */ TownResolverObject::TownResolverObject(const struct GRFFile *grffile, Town *t, bool readonly) : ResolverObject(grffile), town_scope(this, t, readonly) { } openttd-1.3.3/src/newgrf_animation_base.h0000644000000000000000000001327112246102611017151 0ustar rootroot/* $Id: newgrf_animation_base.h 24846 2012-12-23 21:09:09Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_animation_base.h Function implementations related to NewGRF animation. */ /* No inclusion guards as this file must only be included from .cpp files. */ #include "animated_tile_func.h" #include "core/random_func.hpp" #include "date_func.h" #include "viewport_func.h" #include "newgrf_animation_type.h" #include "newgrf_callbacks.h" #include "tile_map.h" /** * Helper class for a unified approach to NewGRF animation. * @tparam Tbase Instantiation of this class. * @tparam Tspec NewGRF specification related to the animated tile. * @tparam Tobj Object related to the animated tile. * @tparam Textra Custom extra callback data. * @tparam GetCallback The callback function pointer. */ template struct AnimationBase { /** * Animate a single tile. * @param cb The callback to actually call. * @param spec Specification related to the tile. * @param obj Object related to the tile. * @param tile Tile to animate changes for. * @param random_animation Whether to pass random bits to the "next frame" callback. * @param extra_data Custom extra callback data. */ static void AnimateTile(const Tspec *spec, Tobj *obj, TileIndex tile, bool random_animation, Textra extra_data = 0) { assert(spec != NULL); /* Acquire the animation speed from the NewGRF. */ uint8 animation_speed = spec->animation.speed; if (HasBit(spec->callback_mask, Tbase::cbm_animation_speed)) { uint16 callback = GetCallback(Tbase::cb_animation_speed, 0, 0, spec, obj, tile, extra_data); if (callback != CALLBACK_FAILED) { if (callback >= 0x100 && spec->grf_prop.grffile->grf_version >= 8) ErrorUnknownCallbackResult(spec->grf_prop.grffile->grfid, Tbase::cb_animation_speed, callback); animation_speed = Clamp(callback & 0xFF, 0, 16); } } /* An animation speed of 2 means the animation frame changes 4 ticks, and * increasing this value by one doubles the wait. 0 is the minimum value * allowed for animation_speed, which corresponds to 30ms, and 16 is the * maximum, corresponding to around 33 minutes. */ if (_tick_counter % (1 << animation_speed) != 0) return; uint8 frame = GetAnimationFrame(tile); uint8 num_frames = spec->animation.frames; bool frame_set_by_callback = false; if (HasBit(spec->callback_mask, Tbase::cbm_animation_next_frame)) { uint16 callback = GetCallback(Tbase::cb_animation_next_frame, random_animation ? Random() : 0, 0, spec, obj, tile, extra_data); if (callback != CALLBACK_FAILED) { frame_set_by_callback = true; switch (callback & 0xFF) { case 0xFF: DeleteAnimatedTile(tile); break; case 0xFE: frame_set_by_callback = false; break; default: frame = callback & 0xFF; break; } /* If the lower 7 bits of the upper byte of the callback * result are not empty, it is a sound effect. */ if (GB(callback, 8, 7) != 0 && _settings_client.sound.ambient) PlayTileSound(spec->grf_prop.grffile, GB(callback, 8, 7), tile); } } if (!frame_set_by_callback) { if (frame < num_frames) { frame++; } else if (frame == num_frames && spec->animation.status == ANIM_STATUS_LOOPING) { /* This animation loops, so start again from the beginning */ frame = 0; } else { /* This animation doesn't loop, so stay here */ DeleteAnimatedTile(tile); } } SetAnimationFrame(tile, frame); MarkTileDirtyByTile(tile); } /** * Check a callback to determine what the next animation step is and * execute that step. This includes stopping and starting animations * as well as updating animation frames and playing sounds. * @param cb The callback to actually call. * @param spec Specification related to the tile. * @param obj Object related to the tile. * @param tile Tile to consider animation changes for. * @param random_bits Random bits for this update. To be passed as parameter to the NewGRF. * @param trigger What triggered this update? To be passed as parameter to the NewGRF. * @param extra_data Custom extra data for callback processing. */ static void ChangeAnimationFrame(CallbackID cb, const Tspec *spec, Tobj *obj, TileIndex tile, uint32 random_bits, uint32 trigger, Textra extra_data = 0) { uint16 callback = GetCallback(cb, random_bits, trigger, spec, obj, tile, extra_data); if (callback == CALLBACK_FAILED) return; switch (callback & 0xFF) { case 0xFD: /* Do nothing. */ break; case 0xFE: AddAnimatedTile(tile); break; case 0xFF: DeleteAnimatedTile(tile); break; default: SetAnimationFrame(tile, callback); AddAnimatedTile(tile); break; } /* If the lower 7 bits of the upper byte of the callback * result are not empty, it is a sound effect. */ if (GB(callback, 8, 7) != 0 && _settings_client.sound.ambient) PlayTileSound(spec->grf_prop.grffile, GB(callback, 8, 7), tile); } }; openttd-1.3.3/src/object_cmd.cpp0000644000000000000000000006435712246102611015267 0ustar rootroot/* $Id: object_cmd.cpp 25984 2013-11-13 21:43:16Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_cmd.cpp Handling of object tiles. */ #include "stdafx.h" #include "landscape.h" #include "command_func.h" #include "viewport_func.h" #include "company_base.h" #include "town.h" #include "bridge_map.h" #include "genworld.h" #include "autoslope.h" #include "clear_func.h" #include "water.h" #include "window_func.h" #include "company_gui.h" #include "cheat_type.h" #include "object.h" #include "cargopacket.h" #include "core/random_func.hpp" #include "core/pool_func.hpp" #include "object_map.h" #include "object_base.h" #include "newgrf_config.h" #include "newgrf_object.h" #include "date_func.h" #include "newgrf_debug.h" #include "vehicle_func.h" #include "table/strings.h" #include "table/object_land.h" ObjectPool _object_pool("Object"); INSTANTIATE_POOL_METHODS(Object) uint16 Object::counts[NUM_OBJECTS]; /** * Get the object associated with a tile. * @param tile The tile to fetch the object for. * @return The object. */ /* static */ Object *Object::GetByTile(TileIndex tile) { return Object::Get(GetObjectIndex(tile)); } /** Initialize/reset the objects. */ void InitializeObjects() { Object::ResetTypeCounts(); } /** * Actually build the object. * @param type The type of object to build. * @param tile The tile to build the northern tile of the object on. * @param owner The owner of the object. * @param town Town the tile is related with. * @param view The view for the object. * @pre All preconditions for building the object at that location * are met, e.g. slope and clearness of tiles are checked. */ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town, uint8 view) { const ObjectSpec *spec = ObjectSpec::Get(type); TileArea ta(tile, GB(spec->size, HasBit(view, 0) ? 4 : 0, 4), GB(spec->size, HasBit(view, 0) ? 0 : 4, 4)); Object *o = new Object(); o->location = ta; o->town = town == NULL ? CalcClosestTownFromTile(tile) : town; o->build_date = _date; o->view = view; /* If nothing owns the object, the colour will be random. Otherwise * get the colour from the company's livery settings. */ if (owner == OWNER_NONE) { o->colour = Random(); } else { const Livery *l = Company::Get(owner)->livery; o->colour = l->colour1 + l->colour2 * 16; } /* If the object wants only one colour, then give it that colour. */ if ((spec->flags & OBJECT_FLAG_2CC_COLOUR) == 0) o->colour &= 0xF; if (HasBit(spec->callback_mask, CBM_OBJ_COLOUR)) { uint16 res = GetObjectCallback(CBID_OBJECT_COLOUR, o->colour, 0, spec, o, tile); if (res != CALLBACK_FAILED) { if (res >= 0x100) ErrorUnknownCallbackResult(spec->grf_prop.grffile->grfid, CBID_OBJECT_COLOUR, res); o->colour = GB(res, 0, 8); } } assert(o->town != NULL); TILE_AREA_LOOP(t, ta) { WaterClass wc = (IsWaterTile(t) ? GetWaterClass(t) : WATER_CLASS_INVALID); /* Update company infrastructure counts for objects build on canals owned by nobody. */ if (wc == WATER_CLASS_CANAL && owner != OWNER_NONE && (IsTileOwner(tile, OWNER_NONE) || IsTileOwner(tile, OWNER_WATER))) { Company::Get(owner)->infrastructure.water++; DirtyCompanyInfrastructureWindows(owner); } MakeObject(t, type, owner, o->index, wc, Random()); MarkTileDirtyByTile(t); } Object::IncTypeCount(type); if (spec->flags & OBJECT_FLAG_ANIMATION) TriggerObjectAnimation(o, OAT_BUILT, spec); } /** * Increase the animation stage of a whole structure. * @param tile The tile of the structure. */ static void IncreaseAnimationStage(TileIndex tile) { TileArea ta = Object::GetByTile(tile)->location; TILE_AREA_LOOP(t, ta) { SetAnimationFrame(t, GetAnimationFrame(t) + 1); MarkTileDirtyByTile(t); } } /** We encode the company HQ size in the animation stage. */ #define GetCompanyHQSize GetAnimationFrame /** We encode the company HQ size in the animation stage. */ #define IncreaseCompanyHQSize IncreaseAnimationStage /** * Update the CompanyHQ to the state associated with the given score * @param tile The (northern) tile of the company HQ, or INVALID_TILE. * @param score The current (performance) score of the company. */ void UpdateCompanyHQ(TileIndex tile, uint score) { if (tile == INVALID_TILE) return; byte val; (val = 0, score < 170) || (val++, score < 350) || (val++, score < 520) || (val++, score < 720) || (val++, true); while (GetCompanyHQSize(tile) < val) { IncreaseCompanyHQSize(tile); } } /** * Updates the colour of the object whenever a company changes. * @param c The company the company colour changed of. */ void UpdateObjectColours(const Company *c) { Object *obj; FOR_ALL_OBJECTS(obj) { Owner owner = GetTileOwner(obj->location.tile); /* Not the current owner, so colour doesn't change. */ if (owner != c->index) continue; const ObjectSpec *spec = ObjectSpec::GetByTile(obj->location.tile); /* Using the object colour callback, so not using company colour. */ if (HasBit(spec->callback_mask, CBM_OBJ_COLOUR)) continue; const Livery *l = c->livery; obj->colour = ((spec->flags & OBJECT_FLAG_2CC_COLOUR) ? (l->colour2 * 16) : 0) + l->colour1; } } extern CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z, bool allow_steep, bool check_bridge); static CommandCost ClearTile_Object(TileIndex tile, DoCommandFlag flags); /** * Build an object object * @param tile tile where the object will be located * @param flags type of operation * @param p1 the object type to build * @param p2 the view for the object * @param text unused * @return the cost of this operation or an error */ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CommandCost cost(EXPENSES_PROPERTY); ObjectType type = (ObjectType)GB(p1, 0, 8); uint8 view = GB(p2, 0, 2); const ObjectSpec *spec = ObjectSpec::Get(type); if (!spec->IsAvailable()) return CMD_ERROR; if (spec->flags & OBJECT_FLAG_ONLY_IN_SCENEDIT && (_game_mode != GM_EDITOR || _current_company != OWNER_NONE)) return CMD_ERROR; if (spec->flags & OBJECT_FLAG_ONLY_IN_GAME && (_game_mode != GM_NORMAL || _current_company > MAX_COMPANIES)) return CMD_ERROR; if (view >= spec->views) return CMD_ERROR; if (!Object::CanAllocateItem()) return_cmd_error(STR_ERROR_TOO_MANY_OBJECTS); if (Town::GetNumItems() == 0) return_cmd_error(STR_ERROR_MUST_FOUND_TOWN_FIRST); int size_x = GB(spec->size, HasBit(view, 0) ? 4 : 0, 4); int size_y = GB(spec->size, HasBit(view, 0) ? 0 : 4, 4); TileArea ta(tile, size_x, size_y); if (type == OBJECT_OWNED_LAND) { /* Owned land is special as it can be placed on any slope. */ cost.AddCost(DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR)); } else { /* Check the surface to build on. At this time we can't actually execute the * the CLEAR_TILE commands since the newgrf callback later on can check * some information about the tiles. */ bool allow_water = (spec->flags & (OBJECT_FLAG_BUILT_ON_WATER | OBJECT_FLAG_NOT_ON_LAND)) != 0; bool allow_ground = (spec->flags & OBJECT_FLAG_NOT_ON_LAND) == 0; TILE_AREA_LOOP(t, ta) { if (HasTileWaterGround(t)) { if (!allow_water) return_cmd_error(STR_ERROR_CAN_T_BUILD_ON_WATER); if (!IsWaterTile(t)) { /* Normal water tiles don't have to be cleared. For all other tile types clear * the tile but leave the water. */ cost.AddCost(DoCommand(t, 0, 0, flags & ~DC_NO_WATER & ~DC_EXEC, CMD_LANDSCAPE_CLEAR)); } else { /* Can't build on water owned by another company. */ Owner o = GetTileOwner(t); if (o != OWNER_NONE && o != OWNER_WATER) cost.AddCost(CheckOwnership(o, t)); /* However, the tile has to be clear of vehicles. */ cost.AddCost(EnsureNoVehicleOnGround(t)); } } else { if (!allow_ground) return_cmd_error(STR_ERROR_MUST_BE_BUILT_ON_WATER); /* For non-water tiles, we'll have to clear it before building. */ cost.AddCost(DoCommand(t, 0, 0, flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR)); } } /* So, now the surface is checked... check the slope of said surface. */ int allowed_z; if (GetTileSlope(tile, &allowed_z) != SLOPE_FLAT) allowed_z++; TILE_AREA_LOOP(t, ta) { uint16 callback = CALLBACK_FAILED; if (HasBit(spec->callback_mask, CBM_OBJ_SLOPE_CHECK)) { TileIndex diff = t - tile; callback = GetObjectCallback(CBID_OBJECT_LAND_SLOPE_CHECK, GetTileSlope(t), TileY(diff) << 4 | TileX(diff), spec, NULL, t, view); } if (callback == CALLBACK_FAILED) { cost.AddCost(CheckBuildableTile(t, 0, allowed_z, false, false)); } else { /* The meaning of bit 10 is inverted for a grf version < 8. */ if (spec->grf_prop.grffile->grf_version < 8) ToggleBit(callback, 10); CommandCost ret = GetErrorMessageFromLocationCallbackResult(callback, spec->grf_prop.grffile->grfid, STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); if (ret.Failed()) return ret; } } if (flags & DC_EXEC) { /* This is basically a copy of the loop above with the exception that we now * execute the commands and don't check for errors, since that's already done. */ TILE_AREA_LOOP(t, ta) { if (HasTileWaterGround(t)) { if (!IsWaterTile(t)) { DoCommand(t, 0, 0, (flags & ~DC_NO_WATER) | DC_NO_MODIFY_TOWN_RATING, CMD_LANDSCAPE_CLEAR); } } else { DoCommand(t, 0, 0, flags | DC_NO_MODIFY_TOWN_RATING, CMD_LANDSCAPE_CLEAR); } } } } if (cost.Failed()) return cost; /* Finally do a check for bridges. */ TILE_AREA_LOOP(t, ta) { if (MayHaveBridgeAbove(t) && IsBridgeAbove(t) && ( !(spec->flags & OBJECT_FLAG_ALLOW_UNDER_BRIDGE) || (GetTileMaxZ(t) + spec->height >= GetBridgeHeight(GetSouthernBridgeEnd(t))))) { return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); } } int hq_score = 0; switch (type) { case OBJECT_TRANSMITTER: case OBJECT_LIGHTHOUSE: if (GetTileSlope(tile) != SLOPE_FLAT) return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); break; case OBJECT_OWNED_LAND: if (IsTileType(tile, MP_OBJECT) && IsTileOwner(tile, _current_company) && IsOwnedLand(tile)) { return_cmd_error(STR_ERROR_YOU_ALREADY_OWN_IT); } break; case OBJECT_HQ: { Company *c = Company::Get(_current_company); if (c->location_of_HQ != INVALID_TILE) { /* We need to persuade a bit harder to remove the old HQ. */ _current_company = OWNER_WATER; cost.AddCost(ClearTile_Object(c->location_of_HQ, flags)); _current_company = c->index; } if (flags & DC_EXEC) { hq_score = UpdateCompanyRatingAndValue(c, false); c->location_of_HQ = tile; SetWindowDirty(WC_COMPANY, c->index); } break; } case OBJECT_STATUE: /* This may never be constructed using this method. */ return CMD_ERROR; default: // i.e. NewGRF provided. break; } if (flags & DC_EXEC) { BuildObject(type, tile, _current_company, NULL, view); /* Make sure the HQ starts at the right size. */ if (type == OBJECT_HQ) UpdateCompanyHQ(tile, hq_score); } cost.AddCost(ObjectSpec::Get(type)->GetBuildCost() * size_x * size_y); return cost; } static Foundation GetFoundation_Object(TileIndex tile, Slope tileh); static void DrawTile_Object(TileInfo *ti) { ObjectType type = GetObjectType(ti->tile); const ObjectSpec *spec = ObjectSpec::Get(type); /* Fall back for when the object doesn't exist anymore. */ if (!spec->enabled) type = OBJECT_TRANSMITTER; if ((spec->flags & OBJECT_FLAG_HAS_NO_FOUNDATION) == 0) DrawFoundation(ti, GetFoundation_Object(ti->tile, ti->tileh)); if (type < NEW_OBJECT_OFFSET) { const DrawTileSprites *dts = NULL; Owner to = GetTileOwner(ti->tile); PaletteID palette = to == OWNER_NONE ? PAL_NONE : COMPANY_SPRITE_COLOUR(to); if (type == OBJECT_HQ) { TileIndex diff = ti->tile - Object::GetByTile(ti->tile)->location.tile; dts = &_object_hq[GetCompanyHQSize(ti->tile) << 2 | TileY(diff) << 1 | TileX(diff)]; } else { dts = &_objects[type]; } if (spec->flags & OBJECT_FLAG_HAS_NO_FOUNDATION) { /* If an object has no foundation, but tries to draw a (flat) ground * type... we have to be nice and convert that for them. */ switch (dts->ground.sprite) { case SPR_FLAT_BARE_LAND: DrawClearLandTile(ti, 0); break; case SPR_FLAT_1_THIRD_GRASS_TILE: DrawClearLandTile(ti, 1); break; case SPR_FLAT_2_THIRD_GRASS_TILE: DrawClearLandTile(ti, 2); break; case SPR_FLAT_GRASS_TILE: DrawClearLandTile(ti, 3); break; default: DrawGroundSprite(dts->ground.sprite, palette); break; } } else { DrawGroundSprite(dts->ground.sprite, palette); } if (!IsInvisibilitySet(TO_STRUCTURES)) { const DrawTileSeqStruct *dtss; foreach_draw_tile_seq(dtss, dts->seq) { AddSortableSpriteToDraw( dtss->image.sprite, palette, ti->x + dtss->delta_x, ti->y + dtss->delta_y, dtss->size_x, dtss->size_y, dtss->size_z, ti->z + dtss->delta_z, IsTransparencySet(TO_STRUCTURES) ); } } } else { DrawNewObjectTile(ti, spec); } DrawBridgeMiddle(ti); } static int GetSlopePixelZ_Object(TileIndex tile, uint x, uint y) { if (IsOwnedLand(tile)) { int z; Slope tileh = GetTilePixelSlope(tile, &z); return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh); } else { return GetTileMaxPixelZ(tile); } } static Foundation GetFoundation_Object(TileIndex tile, Slope tileh) { return IsOwnedLand(tile) ? FOUNDATION_NONE : FlatteningFoundation(tileh); } /** * Perform the actual removal of the object from the map. * @param o The object to really clear. */ static void ReallyClearObjectTile(Object *o) { Object::DecTypeCount(GetObjectType(o->location.tile)); TILE_AREA_LOOP(tile_cur, o->location) { DeleteNewGRFInspectWindow(GSF_OBJECTS, tile_cur); MakeWaterKeepingClass(tile_cur, GetTileOwner(tile_cur)); } delete o; } SmallVector _cleared_object_areas; /** * Find the entry in _cleared_object_areas which occupies a certain tile. * @param tile Tile of interest * @return Occupying entry, or NULL if none */ ClearedObjectArea *FindClearedObject(TileIndex tile) { TileArea ta = TileArea(tile, 1, 1); const ClearedObjectArea *end = _cleared_object_areas.End(); for (ClearedObjectArea *coa = _cleared_object_areas.Begin(); coa != end; coa++) { if (coa->area.Intersects(ta)) return coa; } return NULL; } static CommandCost ClearTile_Object(TileIndex tile, DoCommandFlag flags) { ObjectType type = GetObjectType(tile); const ObjectSpec *spec = ObjectSpec::Get(type); /* Get to the northern most tile. */ Object *o = Object::GetByTile(tile); TileArea ta = o->location; CommandCost cost(EXPENSES_CONSTRUCTION, spec->GetClearCost() * ta.w * ta.h / 5); if (spec->flags & OBJECT_FLAG_CLEAR_INCOME) cost.MultiplyCost(-1); // They get an income! /* Towns can't remove any objects. */ if (_current_company == OWNER_TOWN) return CMD_ERROR; /* Water can remove everything! */ if (_current_company != OWNER_WATER) { if ((flags & DC_NO_WATER) && IsTileOnWater(tile)) { /* There is water under the object, treat it as water tile. */ return_cmd_error(STR_ERROR_CAN_T_BUILD_ON_WATER); } else if (!(spec->flags & OBJECT_FLAG_AUTOREMOVE) && (flags & DC_AUTO)) { /* No automatic removal by overbuilding stuff. */ return_cmd_error(type == OBJECT_HQ ? STR_ERROR_COMPANY_HEADQUARTERS_IN : STR_ERROR_OBJECT_IN_THE_WAY); } else if (_game_mode == GM_EDITOR) { /* No further limitations for the editor. */ } else if (GetTileOwner(tile) == OWNER_NONE) { /* Owned by nobody, so we can only remove it with brute force! */ if (!_cheats.magic_bulldozer.value) return CMD_ERROR; } else if (CheckTileOwnership(tile).Failed()) { /* We don't own it!. */ return_cmd_error(STR_ERROR_OWNED_BY); } else if ((spec->flags & OBJECT_FLAG_CANNOT_REMOVE) != 0 && (spec->flags & OBJECT_FLAG_AUTOREMOVE) == 0) { /* In the game editor or with cheats we can remove, otherwise we can't. */ if (!_cheats.magic_bulldozer.value) return CMD_ERROR; /* Removing with the cheat costs more in TTDPatch / the specs. */ cost.MultiplyCost(25); } } else if ((spec->flags & (OBJECT_FLAG_BUILT_ON_WATER | OBJECT_FLAG_NOT_ON_LAND)) != 0) { /* Water can't remove objects that are buildable on water. */ return CMD_ERROR; } switch (type) { case OBJECT_HQ: { Company *c = Company::Get(GetTileOwner(tile)); if (flags & DC_EXEC) { c->location_of_HQ = INVALID_TILE; // reset HQ position SetWindowDirty(WC_COMPANY, c->index); CargoPacket::InvalidateAllFrom(ST_HEADQUARTERS, c->index); } /* cost of relocating company is 1% of company value */ cost = CommandCost(EXPENSES_PROPERTY, CalculateCompanyValue(c) / 100); break; } case OBJECT_STATUE: if (flags & DC_EXEC) { Town *town = o->town; ClrBit(town->statues, GetTileOwner(tile)); SetWindowDirty(WC_TOWN_AUTHORITY, town->index); } break; default: break; } ClearedObjectArea *cleared_area = _cleared_object_areas.Append(); cleared_area->first_tile = tile; cleared_area->area = ta; if (flags & DC_EXEC) ReallyClearObjectTile(o); return cost; } static void AddAcceptedCargo_Object(TileIndex tile, CargoArray &acceptance, uint32 *always_accepted) { if (!IsCompanyHQ(tile)) return; /* HQ accepts passenger and mail; but we have to divide the values * between 4 tiles it occupies! */ /* HQ level (depends on company performance) in the range 1..5. */ uint level = GetCompanyHQSize(tile) + 1; /* Top town building generates 10, so to make HQ interesting, the top * type makes 20. */ acceptance[CT_PASSENGERS] += max(1U, level); SetBit(*always_accepted, CT_PASSENGERS); /* Top town building generates 4, HQ can make up to 8. The * proportion passengers:mail is different because such a huge * commercial building generates unusually high amount of mail * correspondence per physical visitor. */ acceptance[CT_MAIL] += max(1U, level / 2); SetBit(*always_accepted, CT_MAIL); } static void GetTileDesc_Object(TileIndex tile, TileDesc *td) { const ObjectSpec *spec = ObjectSpec::GetByTile(tile); td->str = spec->name; td->owner[0] = GetTileOwner(tile); td->build_date = Object::GetByTile(tile)->build_date; if (spec->grf_prop.grffile != NULL) { td->grf = GetGRFConfig(spec->grf_prop.grffile->grfid)->GetName(); } } static void TileLoop_Object(TileIndex tile) { const ObjectSpec *spec = ObjectSpec::GetByTile(tile); if (spec->flags & OBJECT_FLAG_ANIMATION) { Object *o = Object::GetByTile(tile); TriggerObjectTileAnimation(o, tile, OAT_TILELOOP, spec); if (o->location.tile == tile) TriggerObjectAnimation(o, OAT_256_TICKS, spec); } if (IsTileOnWater(tile)) TileLoop_Water(tile); if (!IsCompanyHQ(tile)) return; /* HQ accepts passenger and mail; but we have to divide the values * between 4 tiles it occupies! */ /* HQ level (depends on company performance) in the range 1..5. */ uint level = GetCompanyHQSize(tile) + 1; assert(level < 6); StationFinder stations(TileArea(tile, 2, 2)); uint r = Random(); /* Top town buildings generate 250, so the top HQ type makes 256. */ if (GB(r, 0, 8) < (256 / 4 / (6 - level))) { uint amt = GB(r, 0, 8) / 8 / 4 + 1; if (EconomyIsInRecession()) amt = (amt + 1) >> 1; MoveGoodsToStation(CT_PASSENGERS, amt, ST_HEADQUARTERS, GetTileOwner(tile), stations.GetStations()); } /* Top town building generates 90, HQ can make up to 196. The * proportion passengers:mail is about the same as in the acceptance * equations. */ if (GB(r, 8, 8) < (196 / 4 / (6 - level))) { uint amt = GB(r, 8, 8) / 8 / 4 + 1; if (EconomyIsInRecession()) amt = (amt + 1) >> 1; MoveGoodsToStation(CT_MAIL, amt, ST_HEADQUARTERS, GetTileOwner(tile), stations.GetStations()); } } static TrackStatus GetTileTrackStatus_Object(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { return 0; } static bool ClickTile_Object(TileIndex tile) { if (!IsCompanyHQ(tile)) return false; ShowCompany(GetTileOwner(tile)); return true; } static void AnimateTile_Object(TileIndex tile) { AnimateNewObjectTile(tile); } /** * Helper function for \c CircularTileSearch. * @param tile The tile to check. * @param user Ignored. * @return True iff the tile has a radio tower. */ static bool HasTransmitter(TileIndex tile, void *user) { return IsTransmitterTile(tile); } void GenerateObjects() { if (_settings_game.game_creation.landscape == LT_TOYLAND) return; /* add radio tower */ int radiotower_to_build = ScaleByMapSize(15); // maximum number of radio towers on the map int lighthouses_to_build = _settings_game.game_creation.landscape == LT_TROPIC ? 0 : ScaleByMapSize1D((Random() & 3) + 7); /* Scale the amount of lighthouses with the amount of land at the borders. */ if (_settings_game.construction.freeform_edges && lighthouses_to_build != 0) { uint num_water_tiles = 0; for (uint x = 0; x < MapMaxX(); x++) { if (IsTileType(TileXY(x, 1), MP_WATER)) num_water_tiles++; if (IsTileType(TileXY(x, MapMaxY() - 1), MP_WATER)) num_water_tiles++; } for (uint y = 1; y < MapMaxY() - 1; y++) { if (IsTileType(TileXY(1, y), MP_WATER)) num_water_tiles++; if (IsTileType(TileXY(MapMaxX() - 1, y), MP_WATER)) num_water_tiles++; } /* The -6 is because the top borders are MP_VOID (-2) and all corners * are counted twice (-4). */ lighthouses_to_build = lighthouses_to_build * num_water_tiles / (2 * MapMaxY() + 2 * MapMaxX() - 6); } SetGeneratingWorldProgress(GWP_OBJECT, radiotower_to_build + lighthouses_to_build); for (uint i = ScaleByMapSize(1000); i != 0 && Object::CanAllocateItem(); i--) { TileIndex tile = RandomTile(); int h; if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= 4 && !IsBridgeAbove(tile)) { TileIndex t = tile; if (CircularTileSearch(&t, 9, HasTransmitter, NULL)) continue; BuildObject(OBJECT_TRANSMITTER, tile); IncreaseGeneratingWorldProgress(GWP_OBJECT); if (--radiotower_to_build == 0) break; } } /* add lighthouses */ uint maxx = MapMaxX(); uint maxy = MapMaxY(); for (int loop_count = 0; loop_count < 1000 && lighthouses_to_build != 0 && Object::CanAllocateItem(); loop_count++) { uint r = Random(); /* Scatter the lighthouses more evenly around the perimeter */ int perimeter = (GB(r, 16, 16) % (2 * (maxx + maxy))) - maxy; DiagDirection dir; for (dir = DIAGDIR_NE; perimeter > 0; dir++) { perimeter -= (DiagDirToAxis(dir) == AXIS_X) ? maxx : maxy; } TileIndex tile; switch (dir) { default: case DIAGDIR_NE: tile = TileXY(maxx - 1, r % maxy); break; case DIAGDIR_SE: tile = TileXY(r % maxx, 1); break; case DIAGDIR_SW: tile = TileXY(1, r % maxy); break; case DIAGDIR_NW: tile = TileXY(r % maxx, maxy - 1); break; } /* Only build lighthouses at tiles where the border is sea. */ if (!IsTileType(tile, MP_WATER)) continue; for (int j = 0; j < 19; j++) { int h; if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= 2 && !IsBridgeAbove(tile)) { BuildObject(OBJECT_LIGHTHOUSE, tile); IncreaseGeneratingWorldProgress(GWP_OBJECT); lighthouses_to_build--; assert(tile < MapSize()); break; } tile += TileOffsByDiagDir(dir); if (!IsValidTile(tile)) break; } } } static void ChangeTileOwner_Object(TileIndex tile, Owner old_owner, Owner new_owner) { if (!IsTileOwner(tile, old_owner)) return; if (IsOwnedLand(tile) && new_owner != INVALID_OWNER) { SetTileOwner(tile, new_owner); } else if (IsStatueTile(tile)) { Town *t = Object::GetByTile(tile)->town; ClrBit(t->statues, old_owner); if (new_owner != INVALID_OWNER && !HasBit(t->statues, new_owner)) { /* Transfer ownership to the new company */ SetBit(t->statues, new_owner); SetTileOwner(tile, new_owner); } else { ReallyClearObjectTile(Object::GetByTile(tile)); } SetWindowDirty(WC_TOWN_AUTHORITY, t->index); } else { ReallyClearObjectTile(Object::GetByTile(tile)); } } static CommandCost TerraformTile_Object(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { ObjectType type = GetObjectType(tile); if (type == OBJECT_OWNED_LAND) { /* Owned land remains unsold */ CommandCost ret = CheckTileOwnership(tile); if (ret.Succeeded()) return CommandCost(); } else if (AutoslopeEnabled() && type != OBJECT_TRANSMITTER && type != OBJECT_LIGHTHOUSE) { /* Behaviour: * - Both new and old slope must not be steep. * - TileMaxZ must not be changed. * - Allow autoslope by default. * - Disallow autoslope if callback succeeds and returns non-zero. */ Slope tileh_old = GetTileSlope(tile); /* TileMaxZ must not be changed. Slopes must not be steep. */ if (!IsSteepSlope(tileh_old) && !IsSteepSlope(tileh_new) && (GetTileMaxZ(tile) == z_new + GetSlopeMaxZ(tileh_new))) { const ObjectSpec *spec = ObjectSpec::Get(type); /* Call callback 'disable autosloping for objects'. */ if (HasBit(spec->callback_mask, CBM_OBJ_AUTOSLOPE)) { /* If the callback fails, allow autoslope. */ uint16 res = GetObjectCallback(CBID_OBJECT_AUTOSLOPE, 0, 0, spec, Object::GetByTile(tile), tile); if (res == CALLBACK_FAILED || !ConvertBooleanCallback(spec->grf_prop.grffile, CBID_OBJECT_AUTOSLOPE, res)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); } else if (spec->enabled) { /* allow autoslope */ return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); } } } return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } extern const TileTypeProcs _tile_type_object_procs = { DrawTile_Object, // draw_tile_proc GetSlopePixelZ_Object, // get_slope_z_proc ClearTile_Object, // clear_tile_proc AddAcceptedCargo_Object, // add_accepted_cargo_proc GetTileDesc_Object, // get_tile_desc_proc GetTileTrackStatus_Object, // get_tile_track_status_proc ClickTile_Object, // click_tile_proc AnimateTile_Object, // animate_tile_proc TileLoop_Object, // tile_loop_proc ChangeTileOwner_Object, // change_tile_owner_proc NULL, // add_produced_cargo_proc NULL, // vehicle_enter_tile_proc GetFoundation_Object, // get_foundation_proc TerraformTile_Object, // terraform_tile_proc }; openttd-1.3.3/src/object_gui.cpp0000644000000000000000000004324712246102610015302 0ustar rootroot/* $Id: object_gui.cpp 25983 2013-11-13 21:39:14Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_gui.cpp The GUI for objects. */ #include "stdafx.h" #include "command_func.h" #include "newgrf.h" #include "newgrf_object.h" #include "newgrf_text.h" #include "strings_func.h" #include "viewport_func.h" #include "window_gui.h" #include "widgets/object_widget.h" #include "table/strings.h" static ObjectClassID _selected_object_class; ///< the currently visible object class static int _selected_object_index; ///< the index of the selected object in the current class or -1 static uint8 _selected_object_view; ///< the view of the selected object /** The window used for building objects. */ class BuildObjectWindow : public PickerWindowBase { static const int OBJECT_MARGIN = 4; ///< The margin (in pixels) around an object. int line_height; ///< The height of a single line. int object_height; ///< The height of the object box. int info_height; ///< The height of the info box. Scrollbar *vscroll; ///< The scrollbar. public: BuildObjectWindow(const WindowDesc *desc, Window *w) : PickerWindowBase(w), info_height(1) { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_BO_SCROLLBAR); this->vscroll->SetCapacity(5); this->vscroll->SetPosition(0); this->vscroll->SetCount(ObjectClass::GetUIClassCount()); this->FinishInitNested(desc, 0); this->SelectFirstAvailableObject(true); assert(ObjectClass::Get(_selected_object_class)->GetUISpecCount() > 0); // object GUI should be disables elsewise this->GetWidget(WID_BO_OBJECT_MATRIX)->SetCount(4); NWidgetMatrix *matrix = this->GetWidget(WID_BO_SELECT_MATRIX); matrix->SetScrollbar(this->GetScrollbar(WID_BO_SELECT_SCROLL)); matrix->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount()); } virtual ~BuildObjectWindow() { } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_BO_OBJECT_NAME: { const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); SetDParam(0, spec != NULL ? spec->name : STR_EMPTY); break; } case WID_BO_OBJECT_SIZE: { const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); int size = spec == NULL ? 0 : spec->size; SetDParam(0, GB(size, HasBit(_selected_object_view, 0) ? 4 : 0, 4)); SetDParam(1, GB(size, HasBit(_selected_object_view, 0) ? 0 : 4, 4)); break; } default: break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_BO_CLASS_LIST: { for (uint i = 0; i < ObjectClass::GetClassCount(); i++) { ObjectClass *objclass = ObjectClass::Get((ObjectClassID)i); if (objclass->GetUISpecCount() == 0) continue; size->width = max(size->width, GetStringBoundingBox(objclass->name).width); } size->width += padding.width; this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; resize->height = this->line_height; size->height = this->vscroll->GetCapacity() * this->line_height; break; } case WID_BO_OBJECT_NAME: case WID_BO_OBJECT_SIZE: /* We do not want the window to resize when selecting objects; better clip texts */ size->width = 0; break; case WID_BO_OBJECT_MATRIX: { /* Get the right amount of buttons based on the current spec. */ const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); if (spec != NULL) { if (spec->views >= 2) size->width += resize->width; if (spec->views >= 4) size->height += resize->height; } resize->width = 0; resize->height = 0; break; } case WID_BO_OBJECT_SPRITE: { bool two_wide = false; // Whether there will be two widgets next to each other in the matrix or not. int height[2] = {0, 0}; // The height for the different views; in this case views 1/2 and 4. /* Get the height and view information. */ for (int i = 0; i < NUM_OBJECTS; i++) { const ObjectSpec *spec = ObjectSpec::Get(i); if (!spec->IsEverAvailable()) continue; two_wide |= spec->views >= 2; height[spec->views / 4] = max(ObjectSpec::Get(i)->height, height[spec->views / 4]); } /* Determine the pixel heights. */ for (size_t i = 0; i < lengthof(height); i++) { height[i] *= TILE_HEIGHT; height[i] += TILE_PIXELS + 2 * OBJECT_MARGIN; } /* Now determine the size of the minimum widgets. When there are two columns, then * we want these columns to be slightly less wide. When there are two rows, then * determine the size of the widgets based on the maximum size for a single row * of widgets, or just the twice the widget height of the two row ones. */ size->height = max(height[0], height[1] * 2 + 2); if (two_wide) { size->width = (3 * TILE_PIXELS + 2 * OBJECT_MARGIN) * 2 + 2; } else { size->width = 4 * TILE_PIXELS + 2 * OBJECT_MARGIN; } /* Get the right size for the single widget based on the current spec. */ const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); if (spec != NULL) { if (spec->views >= 2) size->width = size->width / 2 - 1; if (spec->views >= 4) size->height = size->height / 2 - 1; } break; } case WID_BO_INFO: size->height = this->info_height; break; case WID_BO_SELECT_MATRIX: fill->height = 1; resize->height = 1; break; default: break; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (GB(widget, 0, 16)) { case WID_BO_CLASS_LIST: { int y = r.top; uint pos = 0; for (uint i = 0; i < ObjectClass::GetClassCount(); i++) { ObjectClass *objclass = ObjectClass::Get((ObjectClassID)i); if (objclass->GetUISpecCount() == 0) continue; if (!this->vscroll->IsVisible(pos++)) continue; SetDParam(0, objclass->name); DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, STR_JUST_STRING, ((int)i == _selected_object_class) ? TC_WHITE : TC_BLACK); y += this->line_height; } break; } case WID_BO_OBJECT_SPRITE: { const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); if (spec == NULL) break; /* Height of the selection matrix. * Depending on the number of views, the matrix has a 1x1, 1x2, 2x1 or 2x2 layout. To make the previews * look nice in all layouts, we use the 4x4 layout (smallest previews) as starting point. For the bigger * previews in the layouts with less views we add space homogeneously on all sides, so the 4x4 preview-rectangle * is centered in the 2x1, 1x2 resp. 1x1 buttons. */ uint matrix_height = this->GetWidget(WID_BO_OBJECT_MATRIX)->current_y; DrawPixelInfo tmp_dpi; /* Set up a clipping area for the preview. */ if (FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) { DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; if (spec->grf_prop.grffile == NULL) { extern const DrawTileSprites _objects[]; const DrawTileSprites *dts = &_objects[spec->grf_prop.local_id]; DrawOrigTileSeqInGUI((r.right - r.left) / 2 - 1, (r.bottom - r.top + matrix_height / 2) / 2 - OBJECT_MARGIN - TILE_PIXELS, dts, PAL_NONE); } else { DrawNewObjectTileInGUI((r.right - r.left) / 2 - 1, (r.bottom - r.top + matrix_height / 2) / 2 - OBJECT_MARGIN - TILE_PIXELS, spec, GB(widget, 16, 16)); } _cur_dpi = old_dpi; } break; } case WID_BO_SELECT_IMAGE: { ObjectClass *objclass = ObjectClass::Get(_selected_object_class); int obj_index = objclass->GetIndexFromUI(GB(widget, 16, 16)); if (obj_index < 0) break; const ObjectSpec *spec = objclass->GetSpec(obj_index); if (spec == NULL) break; if (!spec->IsAvailable()) { GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_BLACK, FILLRECT_CHECKER); } DrawPixelInfo tmp_dpi; /* Set up a clipping area for the preview. */ if (FillDrawPixelInfo(&tmp_dpi, r.left + 1, r.top, (r.right - 1) - (r.left + 1) + 1, r.bottom - r.top + 1)) { DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; if (spec->grf_prop.grffile == NULL) { extern const DrawTileSprites _objects[]; const DrawTileSprites *dts = &_objects[spec->grf_prop.local_id]; DrawOrigTileSeqInGUI((r.right - r.left) / 2 - 1, r.bottom - r.top - OBJECT_MARGIN - TILE_PIXELS, dts, PAL_NONE); } else { DrawNewObjectTileInGUI((r.right - r.left) / 2 - 1, r.bottom - r.top - OBJECT_MARGIN - TILE_PIXELS, spec, min(_selected_object_view, spec->views - 1)); } _cur_dpi = old_dpi; } break; } case WID_BO_INFO: { const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); if (spec == NULL) break; /* Get the extra message for the GUI */ if (HasBit(spec->callback_mask, CBM_OBJ_FUND_MORE_TEXT)) { uint16 callback_res = GetObjectCallback(CBID_OBJECT_FUND_MORE_TEXT, 0, 0, spec, NULL, INVALID_TILE, _selected_object_view); if (callback_res != CALLBACK_FAILED && callback_res != 0x400) { if (callback_res > 0x400) { ErrorUnknownCallbackResult(spec->grf_prop.grffile->grfid, CBID_OBJECT_FUND_MORE_TEXT, callback_res); } else { StringID message = GetGRFStringID(spec->grf_prop.grffile->grfid, 0xD000 + callback_res); if (message != STR_NULL && message != STR_UNDEFINED) { StartTextRefStackUsage(6); /* Use all the available space left from where we stand up to the * end of the window. We ALSO enlarge the window if needed, so we * can 'go' wild with the bottom of the window. */ int y = DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, message, TC_ORANGE) - r.top; StopTextRefStackUsage(); if (y > this->info_height) { BuildObjectWindow *bow = const_cast(this); bow->info_height = y + 2; bow->ReInit(); } } } } } } } } /** * Select the specified object in #_selected_object_class class. * @param object_index Object index to select, \c -1 means select nothing. */ void SelectOtherObject(int object_index) { _selected_object_index = object_index; if (_selected_object_index != -1) { const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); _selected_object_view = min(_selected_object_view, spec->views - 1); this->ReInit(); } else { _selected_object_view = 0; } this->GetWidget(WID_BO_OBJECT_MATRIX)->SetClicked(_selected_object_view); this->GetWidget(WID_BO_SELECT_MATRIX)->SetClicked(_selected_object_index != -1 ? ObjectClass::Get(_selected_object_class)->GetUIFromIndex(_selected_object_index) : -1); this->UpdateSelectSize(); this->SetDirty(); } void UpdateSelectSize() { if (_selected_object_index == -1) { SetTileSelectSize(1, 1); } else { const ObjectSpec *spec = ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index); int w = GB(spec->size, HasBit(_selected_object_view, 0) ? 4 : 0, 4); int h = GB(spec->size, HasBit(_selected_object_view, 0) ? 0 : 4, 4); SetTileSelectSize(w, h); } } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_BO_CLASS_LIST); this->GetWidget(WID_BO_CLASS_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnClick(Point pt, int widget, int click_count) { switch (GB(widget, 0, 16)) { case WID_BO_CLASS_LIST: { int num_clicked = this->vscroll->GetPosition() + (pt.y - this->nested_array[widget]->pos_y) / this->line_height; if (num_clicked >= (int)ObjectClass::GetUIClassCount()) break; _selected_object_class = ObjectClass::GetUIClass(num_clicked); this->GetWidget(WID_BO_SELECT_MATRIX)->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount()); this->SelectFirstAvailableObject(false); break; } case WID_BO_SELECT_IMAGE: { ObjectClass *objclass = ObjectClass::Get(_selected_object_class); int num_clicked = objclass->GetIndexFromUI(GB(widget, 16, 16)); if (num_clicked >= 0 && objclass->GetSpec(num_clicked)->IsAvailable()) this->SelectOtherObject(num_clicked); break; } case WID_BO_OBJECT_SPRITE: if (_selected_object_index != -1) { _selected_object_view = GB(widget, 16, 16); this->GetWidget(WID_BO_OBJECT_MATRIX)->SetClicked(_selected_object_view); this->UpdateSelectSize(); this->SetDirty(); } break; } } /** * Select the first available object. * @param change_class If true, change the class if no object in the current * class is available. */ void SelectFirstAvailableObject(bool change_class) { /* First try to select an object in the selected class. */ ObjectClass *sel_objclass = ObjectClass::Get(_selected_object_class); for (uint i = 0; i < sel_objclass->GetSpecCount(); i++) { const ObjectSpec *spec = sel_objclass->GetSpec(i); if (spec->IsAvailable()) { this->SelectOtherObject(i); return; } } if (change_class) { /* If that fails, select the first available object * from a random class. */ for (ObjectClassID j = OBJECT_CLASS_BEGIN; j < OBJECT_CLASS_MAX; j++) { ObjectClass *objclass = ObjectClass::Get(j); for (uint i = 0; i < objclass->GetSpecCount(); i++) { const ObjectSpec *spec = objclass->GetSpec(i); if (spec->IsAvailable()) { _selected_object_class = j; this->SelectOtherObject(i); return; } } } } /* If all objects are unavailable, select nothing... */ if (ObjectClass::Get(_selected_object_class)->GetUISpecCount() == 0) { /* ... but make sure that the class is not empty. */ for (ObjectClassID j = OBJECT_CLASS_BEGIN; j < OBJECT_CLASS_MAX; j++) { if (ObjectClass::Get(j)->GetUISpecCount() > 0) { _selected_object_class = j; break; } } } this->SelectOtherObject(-1); } }; static const NWidgetPart _nested_build_object_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_OBJECT_BUILD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), NWidget(NWID_HORIZONTAL), SetPadding(2, 0, 0, 0), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 5), NWidget(WWT_MATRIX, COLOUR_GREY, WID_BO_CLASS_LIST), SetFill(1, 0), SetDataTip(0x501, STR_OBJECT_BUILD_CLASS_TOOLTIP), SetScrollbar(WID_BO_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BO_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 0, 5), NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_OBJECT_MATRIX), SetPIP(0, 2, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_BO_OBJECT_SPRITE), SetDataTip(0x0, STR_OBJECT_BUILD_PREVIEW_TOOLTIP), EndContainer(), EndContainer(), EndContainer(), NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_NAME), SetDataTip(STR_ORANGE_STRING, STR_NULL), SetPadding(2, 5, 2, 5), NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_SIZE), SetDataTip(STR_OBJECT_BUILD_SIZE, STR_NULL), SetPadding(2, 5, 2, 5), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BO_SELECT_SCROLL), NWidget(NWID_HORIZONTAL), NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_SELECT_MATRIX), SetFill(0, 1), SetPIP(0, 2, 0), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BO_SELECT_IMAGE), SetMinimalSize(66, 60), SetDataTip(0x0, STR_OBJECT_BUILD_TOOLTIP), SetFill(0, 0), SetResize(0, 0), SetScrollbar(WID_BO_SELECT_SCROLL), EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BO_SELECT_SCROLL), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BO_INFO), SetPadding(2, 5, 0, 5), SetFill(1, 0), SetResize(1, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(0, 1), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _build_object_desc( WDP_AUTO, 0, 0, WC_BUILD_OBJECT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_object_widgets, lengthof(_nested_build_object_widgets) ); /** * Show our object picker. * @param w The toolbar window we're associated with. */ void ShowBuildObjectPicker(Window *w) { new BuildObjectWindow(&_build_object_desc, w); } /** Reset all data of the object GUI. */ void InitializeObjectGui() { _selected_object_class = (ObjectClassID)0; } /** * PlaceProc function, called when someone pressed the button if the * object-tool is selected * @param tile on which to place the object */ void PlaceProc_Object(TileIndex tile) { DoCommandP(tile, ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index)->Index(), _selected_object_view, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_OBJECT), CcTerraform); } openttd-1.3.3/src/depot_gui.cpp0000644000000000000000000011050512246102611015140 0ustar rootroot/* $Id: depot_gui.cpp 25340 2013-06-09 09:38:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot_gui.cpp The GUI for depots. */ #include "stdafx.h" #include "train.h" #include "roadveh.h" #include "ship.h" #include "aircraft.h" #include "gui.h" #include "textbuf_gui.h" #include "viewport_func.h" #include "command_func.h" #include "depot_base.h" #include "spritecache.h" #include "strings_func.h" #include "vehicle_func.h" #include "company_func.h" #include "tilehighlight_func.h" #include "window_gui.h" #include "vehiclelist.h" #include "order_backup.h" #include "zoom_func.h" #include "widgets/depot_widget.h" #include "table/strings.h" /* * Since all depot window sizes aren't the same, we need to modify sizes a little. * It's done with the following arrays of widget indexes. Each of them tells if a widget side should be moved and in what direction. * How long they should be moved and for what window types are controlled in ShowDepotWindow() */ /** Nested widget definition for train depots. */ static const NWidgetPart _nested_train_depot_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_D_CAPTION), SetDataTip(STR_DEPOT_CAPTION, STR_NULL), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_D_MATRIX), SetDataTip(0x0, STR_NULL), SetResize(1, 1), SetScrollbar(WID_D_V_SCROLL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_D_SHOW_H_SCROLL), NWidget(NWID_HSCROLLBAR, COLOUR_GREY, WID_D_H_SCROLL), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_D_SELL), SetDataTip(0x0, STR_NULL), SetResize(0, 1), SetFill(0, 1), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_D_SHOW_SELL_CHAIN), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_D_SELL_CHAIN), SetDataTip(SPR_SELL_CHAIN_TRAIN, STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP), SetResize(0, 1), SetFill(0, 1), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_SELL_ALL), SetDataTip(0x0, STR_NULL), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_AUTOREPLACE), SetDataTip(0x0, STR_NULL), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_D_V_SCROLL), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_BUILD), SetDataTip(0x0, STR_NULL), SetFill(1, 1), SetResize(1, 0), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_D_CLONE), SetDataTip(0x0, STR_NULL), SetFill(1, 1), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_LOCATION), SetDataTip(STR_BUTTON_LOCATION, STR_NULL), SetFill(1, 1), SetResize(1, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_D_SHOW_RENAME), // rename button NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_RENAME), SetDataTip(STR_BUTTON_RENAME, STR_DEPOT_RENAME_TOOLTIP), SetFill(1, 1), SetResize(1, 0), EndContainer(), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_D_VEHICLE_LIST), SetDataTip(0x0, STR_NULL), SetFill(0, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_STOP_ALL), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_NULL), SetFill(0, 1), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_D_START_ALL), SetDataTip(SPR_FLAG_VEH_RUNNING, STR_NULL), SetFill(0, 1), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; static const WindowDesc _train_depot_desc( WDP_AUTO, 362, 123, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); static const WindowDesc _road_depot_desc( WDP_AUTO, 316, 97, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); static const WindowDesc _ship_depot_desc( WDP_AUTO, 306, 99, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); static const WindowDesc _aircraft_depot_desc( WDP_AUTO, 332, 99, WC_VEHICLE_DEPOT, WC_NONE, 0, _nested_train_depot_widgets, lengthof(_nested_train_depot_widgets) ); extern void DepotSortList(VehicleList *list); /** * This is the Callback method after the cloning attempt of a vehicle * @param result the result of the cloning command * @param tile unused * @param p1 unused * @param p2 unused */ void CcCloneVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; const Vehicle *v = Vehicle::Get(_new_vehicle_id); ShowVehicleViewWindow(v); } static void TrainDepotMoveVehicle(const Vehicle *wagon, VehicleID sel, const Vehicle *head) { const Vehicle *v = Vehicle::Get(sel); if (v == wagon) return; if (wagon == NULL) { if (head != NULL) wagon = head->Last(); } else { wagon = wagon->Previous(); if (wagon == NULL) return; } if (wagon == v) return; DoCommandP(v->tile, v->index | (_ctrl_pressed ? 1 : 0) << 20, wagon == NULL ? INVALID_VEHICLE : wagon->index, CMD_MOVE_RAIL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_MOVE_VEHICLE)); } static VehicleCellSize _base_block_sizes_depot[VEH_COMPANY_END]; ///< Cell size for vehicle images in the depot view. static VehicleCellSize _base_block_sizes_purchase[VEH_COMPANY_END]; ///< Cell size for vehicle images in the purchase list. /** * Get the GUI cell size for a vehicle image. * @param type Vehicle type to get the size for. * @param image_type Image type to get size for. * @pre image_type == EIT_IN_DEPOT || image_type == EIT_PURCHASE * @return Cell dimensions for the vehicle and image type. */ VehicleCellSize GetVehicleImageCellSize(VehicleType type, EngineImageType image_type) { switch (image_type) { case EIT_IN_DEPOT: return _base_block_sizes_depot[type]; case EIT_PURCHASE: return _base_block_sizes_purchase[type]; default: NOT_REACHED(); } } static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_type) { int max_extend_left = 0; int max_extend_right = 0; uint max_height = 0; const Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, type) { if (!e->IsEnabled()) continue; EngineID eid = e->index; uint x, y; int x_offs, y_offs; switch (type) { default: NOT_REACHED(); case VEH_TRAIN: GetTrainSpriteSize( eid, x, y, x_offs, y_offs, image_type); break; case VEH_ROAD: GetRoadVehSpriteSize( eid, x, y, x_offs, y_offs, image_type); break; case VEH_SHIP: GetShipSpriteSize( eid, x, y, x_offs, y_offs, image_type); break; case VEH_AIRCRAFT: GetAircraftSpriteSize(eid, x, y, x_offs, y_offs, image_type); break; } if (y > max_height) max_height = y; if (-x_offs > max_extend_left) max_extend_left = -x_offs; if ((int)x + x_offs > max_extend_right) max_extend_right = x + x_offs; } switch (image_type) { case EIT_IN_DEPOT: _base_block_sizes_depot[type].height = max(GetVehicleHeight(type), max_height); _base_block_sizes_depot[type].extend_left = Clamp(max_extend_left, 16, 98); _base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, 16, 98); break; case EIT_PURCHASE: _base_block_sizes_purchase[type].height = max(GetVehicleHeight(type), max_height); _base_block_sizes_purchase[type].extend_left = Clamp(max_extend_left, 16, 98); _base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, 16, 98); break; default: NOT_REACHED(); } } /** * Set the size of the blocks in the window so we can be sure that they are big enough for the vehicle sprites in the current game. * @note Calling this function once for each game is enough. */ void InitDepotWindowBlockSizes() { for (VehicleType vt = VEH_BEGIN; vt < VEH_COMPANY_END; vt++) { InitBlocksizeForVehicles(vt, EIT_IN_DEPOT); InitBlocksizeForVehicles(vt, EIT_PURCHASE); } } static void DepotSellAllConfirmationCallback(Window *w, bool confirmed); const Sprite *GetAircraftSprite(EngineID engine); struct DepotWindow : Window { VehicleID sel; VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none. VehicleType type; bool generate_list; VehicleList vehicle_list; VehicleList wagon_list; uint num_columns; ///< Number of columns. Scrollbar *hscroll; ///< Only for trains. Scrollbar *vscroll; DepotWindow(const WindowDesc *desc, TileIndex tile, VehicleType type) : Window() { assert(IsCompanyBuildableVehicleType(type)); // ensure that we make the call with a valid type this->sel = INVALID_VEHICLE; this->vehicle_over = INVALID_VEHICLE; this->generate_list = true; this->type = type; this->num_columns = 1; // for non-trains this gets set in FinishInitNested() this->CreateNestedTree(desc); this->hscroll = (this->type == VEH_TRAIN ? this->GetScrollbar(WID_D_H_SCROLL) : NULL); this->vscroll = this->GetScrollbar(WID_D_V_SCROLL); /* Don't show 'rename button' of aircraft hangar */ this->GetWidget(WID_D_SHOW_RENAME)->SetDisplayedPlane(type == VEH_AIRCRAFT ? SZSP_NONE : 0); /* Only train depots have a horizontal scrollbar and a 'sell chain' button */ this->GetWidget(WID_D_SHOW_H_SCROLL)->SetDisplayedPlane(type == VEH_TRAIN ? 0 : SZSP_HORIZONTAL); this->GetWidget(WID_D_SHOW_SELL_CHAIN)->SetDisplayedPlane(type == VEH_TRAIN ? 0 : SZSP_NONE); this->SetupWidgetData(type); this->FinishInitNested(desc, tile); this->owner = GetTileOwner(tile); OrderBackup::Reset(); } ~DepotWindow() { DeleteWindowById(WC_BUILD_VEHICLE, this->window_number); OrderBackup::Reset(this->window_number); } /** * Draw a vehicle in the depot window in the box with the top left corner at x,y. * @param v Vehicle to draw. * @param left Left side of the box to draw in. * @param right Right side of the box to draw in. * @param y Top of the box to draw in. */ void DrawVehicleInDepot(const Vehicle *v, int left, int right, int y) const { bool free_wagon = false; int sprite_y = y + (this->resize.step_height - GetVehicleHeight(v->type)) / 2; bool rtl = _current_text_dir == TD_RTL; int image_left = rtl ? left + this->count_width : left + this->header_width; int image_right = rtl ? right - this->header_width : right - this->count_width; switch (v->type) { case VEH_TRAIN: { const Train *u = Train::From(v); free_wagon = u->IsFreeWagon(); uint x_space = free_wagon ? TRAININFO_DEFAULT_VEHICLE_WIDTH : 0; DrawTrainImage(u, image_left + (rtl ? 0 : x_space), image_right - (rtl ? x_space : 0), sprite_y - 1, this->sel, EIT_IN_DEPOT, free_wagon ? 0 : this->hscroll->GetPosition(), this->vehicle_over); /* Length of consist in tiles with 1 fractional digit (rounded up) */ SetDParam(0, CeilDiv(u->gcache.cached_total_length * 10, TILE_SIZE)); SetDParam(1, 1); DrawString(rtl ? left + WD_FRAMERECT_LEFT : right - this->count_width, rtl ? left + this->count_width : right - WD_FRAMERECT_RIGHT, y + (this->resize.step_height - FONT_HEIGHT_SMALL) / 2, STR_TINY_BLACK_DECIMAL, TC_FROMSTRING, SA_RIGHT); // Draw the counter break; } case VEH_ROAD: DrawRoadVehImage( v, image_left, image_right, sprite_y, this->sel, EIT_IN_DEPOT); break; case VEH_SHIP: DrawShipImage( v, image_left, image_right, sprite_y, this->sel, EIT_IN_DEPOT); break; case VEH_AIRCRAFT: { const Sprite *spr = GetSprite(v->GetImage(DIR_W, EIT_IN_DEPOT), ST_NORMAL); DrawAircraftImage(v, image_left, image_right, y + max(UnScaleByZoom(spr->height, ZOOM_LVL_GUI) + UnScaleByZoom(spr->y_offs, ZOOM_LVL_GUI) - 14, 0), // tall sprites needs an y offset this->sel, EIT_IN_DEPOT); break; } default: NOT_REACHED(); } uint diff_x, diff_y; if (v->IsGroundVehicle()) { /* Arrange unitnumber and flag horizontally */ diff_x = this->flag_width + WD_FRAMERECT_LEFT; diff_y = (this->resize.step_height - this->flag_height) / 2 - 2; } else { /* Arrange unitnumber and flag vertically */ diff_x = WD_FRAMERECT_LEFT; diff_y = FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; } int text_left = rtl ? right - this->header_width - 1 : left + diff_x; int text_right = rtl ? right - diff_x : left + this->header_width - 1; if (free_wagon) { DrawString(text_left, text_right, y + 2, STR_DEPOT_NO_ENGINE); } else { DrawSprite((v->vehstatus & VS_STOPPED) ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, rtl ? right - this->flag_width : left + WD_FRAMERECT_LEFT, y + diff_y); SetDParam(0, v->unitnumber); DrawString(text_left, text_right, y + 2, (uint16)(v->max_age - DAYS_IN_LEAP_YEAR) >= v->age ? STR_BLACK_COMMA : STR_RED_COMMA); } } void DrawWidget(const Rect &r, int widget) const { if (widget != WID_D_MATRIX) return; bool rtl = _current_text_dir == TD_RTL; /* Set the row and number of boxes in each row based on the number of boxes drawn in the matrix */ uint16 mat_data = this->GetWidget(WID_D_MATRIX)->widget_data; uint16 rows_in_display = GB(mat_data, MAT_ROW_START, MAT_ROW_BITS); uint16 boxes_in_each_row = GB(mat_data, MAT_COL_START, MAT_COL_BITS); uint16 num = this->vscroll->GetPosition() * boxes_in_each_row; int maxval = min(this->vehicle_list.Length(), num + (rows_in_display * boxes_in_each_row)); int y; for (y = r.top + 1; num < maxval; y += this->resize.step_height) { // Draw the rows for (byte i = 0; i < boxes_in_each_row && num < maxval; i++, num++) { /* Draw all vehicles in the current row */ const Vehicle *v = this->vehicle_list[num]; if (boxes_in_each_row == 1) { this->DrawVehicleInDepot(v, r.left, r.right, y); } else { int x = r.left + (rtl ? (boxes_in_each_row - i - 1) : i) * this->resize.step_width; this->DrawVehicleInDepot(v, x, x + this->resize.step_width - 1, y); } } } maxval = min(this->vehicle_list.Length() + this->wagon_list.Length(), (this->vscroll->GetPosition() * boxes_in_each_row) + (rows_in_display * boxes_in_each_row)); /* Draw the train wagons without an engine in front. */ for (; num < maxval; num++, y += this->resize.step_height) { const Vehicle *v = this->wagon_list[num - this->vehicle_list.Length()]; this->DrawVehicleInDepot(v, r.left, r.right, y); } } void SetStringParameters(int widget) const { if (widget != WID_D_CAPTION) return; /* locate the depot struct */ TileIndex tile = this->window_number; SetDParam(0, this->type); SetDParam(1, (this->type == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile)); } struct GetDepotVehiclePtData { const Vehicle *head; const Vehicle *wagon; }; enum DepotGUIAction { MODE_ERROR, MODE_DRAG_VEHICLE, MODE_SHOW_VEHICLE, MODE_START_STOP, }; DepotGUIAction GetVehicleFromDepotWndPt(int x, int y, const Vehicle **veh, GetDepotVehiclePtData *d) const { const NWidgetCore *matrix_widget = this->GetWidget(WID_D_MATRIX); /* In case of RTL the widgets are swapped as a whole */ if (_current_text_dir == TD_RTL) x = matrix_widget->current_x - x; uint xt = 0, xm = 0, ym = 0; if (this->type == VEH_TRAIN) { xm = x; } else { xt = x / this->resize.step_width; xm = x % this->resize.step_width; if (xt >= this->num_columns) return MODE_ERROR; } ym = y % this->resize.step_height; uint row = y / this->resize.step_height; if (row >= this->vscroll->GetCapacity()) return MODE_ERROR; uint boxes_in_each_row = GB(matrix_widget->widget_data, MAT_COL_START, MAT_COL_BITS); uint pos = ((row + this->vscroll->GetPosition()) * boxes_in_each_row) + xt; if (this->vehicle_list.Length() + this->wagon_list.Length() <= pos) { /* Clicking on 'line' / 'block' without a vehicle */ if (this->type == VEH_TRAIN) { /* End the dragging */ d->head = NULL; d->wagon = NULL; return MODE_DRAG_VEHICLE; } else { return MODE_ERROR; // empty block, so no vehicle is selected } } bool wagon = false; if (this->vehicle_list.Length() > pos) { *veh = this->vehicle_list[pos]; /* Skip vehicles that are scrolled off the list */ if (this->type == VEH_TRAIN) x += this->hscroll->GetPosition(); } else { pos -= this->vehicle_list.Length(); *veh = this->wagon_list[pos]; /* free wagons don't have an initial loco. */ x -= VEHICLEINFO_FULL_VEHICLE_WIDTH; wagon = true; } const Train *v = NULL; if (this->type == VEH_TRAIN) { v = Train::From(*veh); d->head = d->wagon = v; } if (xm <= this->header_width) { switch (this->type) { case VEH_TRAIN: if (wagon) return MODE_ERROR; case VEH_ROAD: if (xm <= this->flag_width) return MODE_START_STOP; break; case VEH_SHIP: case VEH_AIRCRAFT: if (xm <= this->flag_width && ym >= (uint)(FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL)) return MODE_START_STOP; break; default: NOT_REACHED(); } return MODE_SHOW_VEHICLE; } if (this->type != VEH_TRAIN) return MODE_DRAG_VEHICLE; /* Clicking on the counter */ if (xm >= matrix_widget->current_x - this->count_width) return wagon ? MODE_ERROR : MODE_SHOW_VEHICLE; /* Account for the header */ x -= this->header_width; /* find the vehicle in this row that was clicked */ for (; v != NULL; v = v->Next()) { x -= v->GetDisplayImageWidth(); if (x < 0) break; } d->wagon = (v != NULL ? v->GetFirstEnginePart() : NULL); return MODE_DRAG_VEHICLE; } /** * Handle click in the depot matrix. * @param x Horizontal position in the matrix widget in pixels. * @param y Vertical position in the matrix widget in pixels. */ void DepotClick(int x, int y) { GetDepotVehiclePtData gdvp = { NULL, NULL }; const Vehicle *v = NULL; DepotGUIAction mode = this->GetVehicleFromDepotWndPt(x, y, &v, &gdvp); if (this->type == VEH_TRAIN) v = gdvp.wagon; switch (mode) { case MODE_ERROR: // invalid return; case MODE_DRAG_VEHICLE: { // start dragging of vehicle if (v != NULL && VehicleClicked(v)) return; VehicleID sel = this->sel; if (this->type == VEH_TRAIN && sel != INVALID_VEHICLE) { this->sel = INVALID_VEHICLE; TrainDepotMoveVehicle(v, sel, gdvp.head); } else if (v != NULL) { bool rtl = _current_text_dir == TD_RTL; int image = v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DEPOT); SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this); this->sel = v->index; this->SetDirty(); _cursor.short_vehicle_offset = v->IsGroundVehicle() ? (16 - v->GetGroundVehicleCache()->cached_veh_length * 2) * (rtl ? -1 : 1) : 0; _cursor.vehchain = _ctrl_pressed; } break; } case MODE_SHOW_VEHICLE: // show info window ShowVehicleViewWindow(v); break; case MODE_START_STOP: // click start/stop flag StartStopVehicle(v, false); break; default: NOT_REACHED(); } } /** * Function to set up vehicle specific widgets (mainly sprites and strings). * Only use this function to if the widget is used for several vehicle types and each has * different text/sprites. If the widget is only used for a single vehicle type, or the same * text/sprites are used every time, use the nested widget array to initialize the widget. */ void SetupWidgetData(VehicleType type) { this->GetWidget(WID_D_STOP_ALL)->tool_tip = STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP + type; this->GetWidget(WID_D_START_ALL)->tool_tip = STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP + type; this->GetWidget(WID_D_SELL)->tool_tip = STR_DEPOT_TRAIN_SELL_TOOLTIP + type; this->GetWidget(WID_D_SELL_ALL)->tool_tip = STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP + type; this->GetWidget(WID_D_BUILD)->SetDataTip(STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON + type, STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP + type); this->GetWidget(WID_D_CLONE)->SetDataTip(STR_DEPOT_CLONE_TRAIN + type, STR_DEPOT_CLONE_TRAIN_DEPOT_INFO + type); this->GetWidget(WID_D_LOCATION)->tool_tip = STR_DEPOT_TRAIN_LOCATION_TOOLTIP + type; this->GetWidget(WID_D_VEHICLE_LIST)->tool_tip = STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP + type; this->GetWidget(WID_D_AUTOREPLACE)->tool_tip = STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP + type; this->GetWidget(WID_D_MATRIX)->tool_tip = STR_DEPOT_TRAIN_LIST_TOOLTIP + this->type; switch (type) { default: NOT_REACHED(); case VEH_TRAIN: this->GetWidget(WID_D_VEHICLE_LIST)->widget_data = STR_TRAIN; /* Sprites */ this->GetWidget(WID_D_SELL)->widget_data = SPR_SELL_TRAIN; this->GetWidget(WID_D_SELL_ALL)->widget_data = SPR_SELL_ALL_TRAIN; this->GetWidget(WID_D_AUTOREPLACE)->widget_data = SPR_REPLACE_TRAIN; break; case VEH_ROAD: this->GetWidget(WID_D_VEHICLE_LIST)->widget_data = STR_LORRY; /* Sprites */ this->GetWidget(WID_D_SELL)->widget_data = SPR_SELL_ROADVEH; this->GetWidget(WID_D_SELL_ALL)->widget_data = SPR_SELL_ALL_ROADVEH; this->GetWidget(WID_D_AUTOREPLACE)->widget_data = SPR_REPLACE_ROADVEH; break; case VEH_SHIP: this->GetWidget(WID_D_VEHICLE_LIST)->widget_data = STR_SHIP; /* Sprites */ this->GetWidget(WID_D_SELL)->widget_data = SPR_SELL_SHIP; this->GetWidget(WID_D_SELL_ALL)->widget_data = SPR_SELL_ALL_SHIP; this->GetWidget(WID_D_AUTOREPLACE)->widget_data = SPR_REPLACE_SHIP; break; case VEH_AIRCRAFT: this->GetWidget(WID_D_VEHICLE_LIST)->widget_data = STR_PLANE; /* Sprites */ this->GetWidget(WID_D_SELL)->widget_data = SPR_SELL_AIRCRAFT; this->GetWidget(WID_D_SELL_ALL)->widget_data = SPR_SELL_ALL_AIRCRAFT; this->GetWidget(WID_D_AUTOREPLACE)->widget_data = SPR_REPLACE_AIRCRAFT; break; } } uint count_width; uint header_width; uint flag_width; uint flag_height; virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_D_MATRIX: { uint min_height = 0; if (this->type == VEH_TRAIN) { SetDParamMaxValue(0, 1000, 0, FS_SMALL); SetDParam(1, 1); this->count_width = GetStringBoundingBox(STR_TINY_BLACK_DECIMAL).width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; } else { this->count_width = 0; } Dimension unumber = { GetDigitWidth() * 4, FONT_HEIGHT_NORMAL }; const Sprite *spr = GetSprite(SPR_FLAG_VEH_STOPPED, ST_NORMAL); this->flag_width = UnScaleByZoom(spr->width, ZOOM_LVL_GUI) + WD_FRAMERECT_RIGHT; this->flag_height = UnScaleByZoom(spr->height, ZOOM_LVL_GUI); if (this->type == VEH_TRAIN || this->type == VEH_ROAD) { min_height = max(unumber.height + WD_MATRIX_TOP, UnScaleByZoom(spr->height, ZOOM_LVL_GUI)); this->header_width = unumber.width + this->flag_width + WD_FRAMERECT_LEFT; } else { min_height = unumber.height + UnScaleByZoom(spr->height, ZOOM_LVL_GUI) + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM; this->header_width = max(unumber.width, this->flag_width) + WD_FRAMERECT_RIGHT; } int base_width = this->count_width + this->header_width; resize->height = max(GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).height, min_height); if (this->type == VEH_TRAIN) { resize->width = 1; size->width = base_width + 2 * 29; // about 2 parts size->height = resize->height * 6; } else { resize->width = base_width + GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).extend_left + GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).extend_right; size->width = resize->width * (this->type == VEH_ROAD ? 5 : 3); size->height = resize->height * (this->type == VEH_ROAD ? 5 : 3); } fill->width = resize->width; fill->height = resize->height; break; } } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { this->generate_list = true; } virtual void OnPaint() { if (this->generate_list) { /* Generate the vehicle list * It's ok to use the wagon pointers for non-trains as they will be ignored */ BuildDepotVehicleList(this->type, this->window_number, &this->vehicle_list, &this->wagon_list); this->generate_list = false; DepotSortList(&this->vehicle_list); } /* determine amount of items for scroller */ if (this->type == VEH_TRAIN) { uint max_width = VEHICLEINFO_FULL_VEHICLE_WIDTH; for (uint num = 0; num < this->vehicle_list.Length(); num++) { uint width = 0; for (const Train *v = Train::From(this->vehicle_list[num]); v != NULL; v = v->Next()) { width += v->GetDisplayImageWidth(); } max_width = max(max_width, width); } /* Always have 1 empty row, so people can change the setting of the train */ this->vscroll->SetCount(this->vehicle_list.Length() + this->wagon_list.Length() + 1); this->hscroll->SetCount(max_width); } else { this->vscroll->SetCount(CeilDiv(this->vehicle_list.Length(), this->num_columns)); } /* Setup disabled buttons. */ TileIndex tile = this->window_number; this->SetWidgetsDisabledState(!IsTileOwner(tile, _local_company), WID_D_STOP_ALL, WID_D_START_ALL, WID_D_SELL, WID_D_SELL_CHAIN, WID_D_SELL_ALL, WID_D_BUILD, WID_D_CLONE, WID_D_RENAME, WID_D_AUTOREPLACE, WIDGET_LIST_END); this->DrawWidgets(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_D_MATRIX: { // List NWidgetBase *nwi = this->GetWidget(WID_D_MATRIX); this->DepotClick(pt.x - nwi->pos_x, pt.y - nwi->pos_y); break; } case WID_D_BUILD: // Build vehicle ResetObjectToPlace(); ShowBuildVehicleWindow(this->window_number, this->type); break; case WID_D_CLONE: // Clone button this->SetWidgetDirty(WID_D_CLONE); this->ToggleWidgetLoweredState(WID_D_CLONE); if (this->IsWidgetLowered(WID_D_CLONE)) { static const CursorID clone_icons[] = { SPR_CURSOR_CLONE_TRAIN, SPR_CURSOR_CLONE_ROADVEH, SPR_CURSOR_CLONE_SHIP, SPR_CURSOR_CLONE_AIRPLANE }; SetObjectToPlaceWnd(clone_icons[this->type], PAL_NONE, HT_VEHICLE, this); } else { ResetObjectToPlace(); } break; case WID_D_LOCATION: if (_ctrl_pressed) { ShowExtraViewPortWindow(this->window_number); } else { ScrollMainWindowToTile(this->window_number); } break; case WID_D_RENAME: // Rename button SetDParam(0, this->type); SetDParam(1, Depot::GetByTile((TileIndex)this->window_number)->index); ShowQueryString(STR_DEPOT_NAME, STR_DEPOT_RENAME_DEPOT_CAPTION, MAX_LENGTH_DEPOT_NAME_CHARS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT | QSF_LEN_IN_CHARS); break; case WID_D_STOP_ALL: case WID_D_START_ALL: { VehicleListIdentifier vli(VL_DEPOT_LIST, this->type, this->owner); DoCommandP(this->window_number, (widget == WID_D_START_ALL ? (1 << 0) : 0), vli.Pack(), CMD_MASS_START_STOP); break; } case WID_D_SELL_ALL: /* Only open the confirmation window if there are anything to sell */ if (this->vehicle_list.Length() != 0 || this->wagon_list.Length() != 0) { TileIndex tile = this->window_number; byte vehtype = this->type; SetDParam(0, vehtype); SetDParam(1, (vehtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile)); ShowQuery( STR_DEPOT_CAPTION, STR_DEPOT_SELL_CONFIRMATION_TEXT, this, DepotSellAllConfirmationCallback ); } break; case WID_D_VEHICLE_LIST: ShowVehicleListWindow(GetTileOwner(this->window_number), this->type, (TileIndex)this->window_number); break; case WID_D_AUTOREPLACE: DoCommandP(this->window_number, this->type, 0, CMD_DEPOT_MASS_AUTOREPLACE); break; } } virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; /* Do depot renaming */ DoCommandP(0, GetDepotIndex(this->window_number), 0, CMD_RENAME_DEPOT | CMD_MSG(STR_ERROR_CAN_T_RENAME_DEPOT), NULL, str); } virtual bool OnRightClick(Point pt, int widget) { if (widget != WID_D_MATRIX) return false; GetDepotVehiclePtData gdvp = { NULL, NULL }; const Vehicle *v = NULL; NWidgetBase *nwi = this->GetWidget(WID_D_MATRIX); DepotGUIAction mode = this->GetVehicleFromDepotWndPt(pt.x - nwi->pos_x, pt.y - nwi->pos_y, &v, &gdvp); if (this->type == VEH_TRAIN) v = gdvp.wagon; if (v == NULL || mode != MODE_DRAG_VEHICLE) return false; CargoArray capacity, loaded; /* Display info for single (articulated) vehicle, or for whole chain starting with selected vehicle */ bool whole_chain = (this->type == VEH_TRAIN && _ctrl_pressed); /* loop through vehicle chain and collect cargoes */ uint num = 0; for (const Vehicle *w = v; w != NULL; w = w->Next()) { if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) { capacity[w->cargo_type] += w->cargo_cap; loaded [w->cargo_type] += w->cargo.Count(); } if (w->type == VEH_TRAIN && !w->HasArticulatedPart()) { num++; if (!whole_chain) break; } } /* Build tooltipstring */ static char details[1024]; details[0] = '\0'; char *pos = details; for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) { if (capacity[cargo_type] == 0) continue; SetDParam(0, cargo_type); // {CARGO} #1 SetDParam(1, loaded[cargo_type]); // {CARGO} #2 SetDParam(2, cargo_type); // {SHORTCARGO} #1 SetDParam(3, capacity[cargo_type]); // {SHORTCARGO} #2 pos = GetString(pos, STR_DEPOT_VEHICLE_TOOLTIP_CARGO, lastof(details)); } /* Show tooltip window */ uint64 args[2]; args[0] = (whole_chain ? num : v->engine_type); args[1] = (uint64)(size_t)details; GuiShowTooltips(this, whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK); return true; } /** * Clones a vehicle * @param v the original vehicle to clone * @return Always true. */ virtual bool OnVehicleSelect(const Vehicle *v) { if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), CcCloneVehicle)) { ResetObjectToPlace(); } return true; } virtual void OnPlaceObjectAbort() { /* abort clone */ this->RaiseWidget(WID_D_CLONE); this->SetWidgetDirty(WID_D_CLONE); /* abort drag & drop */ this->sel = INVALID_VEHICLE; this->vehicle_over = INVALID_VEHICLE; this->SetWidgetDirty(WID_D_MATRIX); } virtual void OnMouseDrag(Point pt, int widget) { if (this->type != VEH_TRAIN || this->sel == INVALID_VEHICLE) return; /* A rail vehicle is dragged.. */ if (widget != WID_D_MATRIX) { // ..outside of the depot matrix. if (this->vehicle_over != INVALID_VEHICLE) { this->vehicle_over = INVALID_VEHICLE; this->SetWidgetDirty(WID_D_MATRIX); } return; } NWidgetBase *matrix = this->GetWidget(widget); const Vehicle *v = NULL; GetDepotVehiclePtData gdvp = {NULL, NULL}; if (this->GetVehicleFromDepotWndPt(pt.x - matrix->pos_x, pt.y - matrix->pos_y, &v, &gdvp) != MODE_DRAG_VEHICLE) return; VehicleID new_vehicle_over = INVALID_VEHICLE; if (gdvp.head != NULL) { if (gdvp.wagon == NULL && gdvp.head->Last()->index != this->sel) { // ..at the end of the train. /* NOTE: As a wagon can't be moved at the begin of a train, head index isn't used to mark a drag-and-drop * destination inside a train. This head index is then used to indicate that a wagon is inserted at * the end of the train. */ new_vehicle_over = gdvp.head->index; } else if (gdvp.wagon != NULL && gdvp.head != gdvp.wagon && gdvp.wagon->index != this->sel && gdvp.wagon->Previous()->index != this->sel) { // ..over an existing wagon. new_vehicle_over = gdvp.wagon->index; } } if (this->vehicle_over == new_vehicle_over) return; this->vehicle_over = new_vehicle_over; this->SetWidgetDirty(widget); } virtual void OnDragDrop(Point pt, int widget) { switch (widget) { case WID_D_MATRIX: { const Vehicle *v = NULL; VehicleID sel = this->sel; this->sel = INVALID_VEHICLE; this->SetDirty(); NWidgetBase *nwi = this->GetWidget(WID_D_MATRIX); if (this->type == VEH_TRAIN) { GetDepotVehiclePtData gdvp = { NULL, NULL }; if (this->GetVehicleFromDepotWndPt(pt.x - nwi->pos_x, pt.y - nwi->pos_y, &v, &gdvp) == MODE_DRAG_VEHICLE && sel != INVALID_VEHICLE) { if (gdvp.wagon != NULL && gdvp.wagon->index == sel && _ctrl_pressed) { DoCommandP(Vehicle::Get(sel)->tile, Vehicle::Get(sel)->index, true, CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE)); } else if (gdvp.wagon == NULL || gdvp.wagon->index != sel) { this->vehicle_over = INVALID_VEHICLE; TrainDepotMoveVehicle(gdvp.wagon, sel, gdvp.head); } else if (gdvp.head != NULL && gdvp.head->IsFrontEngine()) { ShowVehicleViewWindow(gdvp.head); } } } else if (this->GetVehicleFromDepotWndPt(pt.x - nwi->pos_x, pt.y - nwi->pos_y, &v, NULL) == MODE_DRAG_VEHICLE && v != NULL && sel == v->index) { ShowVehicleViewWindow(v); } break; } case WID_D_SELL: case WID_D_SELL_CHAIN: { if (this->IsWidgetDisabled(widget)) return; if (this->sel == INVALID_VEHICLE) return; this->HandleButtonClick(widget); const Vehicle *v = Vehicle::Get(this->sel); this->sel = INVALID_VEHICLE; this->SetDirty(); int sell_cmd = (v->type == VEH_TRAIN && (widget == WID_D_SELL_CHAIN || _ctrl_pressed)) ? 1 : 0; DoCommandP(v->tile, v->index | sell_cmd << 20 | MAKE_ORDER_BACKUP_FLAG, 0, GetCmdSellVeh(v->type)); break; } default: this->sel = INVALID_VEHICLE; this->SetDirty(); } _cursor.vehchain = false; } virtual void OnTimeout() { if (!this->IsWidgetDisabled(WID_D_SELL)) { this->RaiseWidget(WID_D_SELL); this->SetWidgetDirty(WID_D_SELL); } if (this->nested_array[WID_D_SELL] != NULL && !this->IsWidgetDisabled(WID_D_SELL_CHAIN)) { this->RaiseWidget(WID_D_SELL_CHAIN); this->SetWidgetDirty(WID_D_SELL_CHAIN); } } virtual void OnResize() { NWidgetCore *nwi = this->GetWidget(WID_D_MATRIX); this->vscroll->SetCapacityFromWidget(this, WID_D_MATRIX); if (this->type == VEH_TRAIN) { this->hscroll->SetCapacity(nwi->current_x - this->header_width - this->count_width); nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } else { this->num_columns = nwi->current_x / nwi->resize_x; nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (this->num_columns << MAT_COL_START); } } virtual EventState OnCTRLStateChange() { if (this->sel != INVALID_VEHICLE) { _cursor.vehchain = _ctrl_pressed; this->SetWidgetDirty(WID_D_MATRIX); return ES_HANDLED; } return ES_NOT_HANDLED; } }; static void DepotSellAllConfirmationCallback(Window *win, bool confirmed) { if (confirmed) { DepotWindow *w = (DepotWindow*)win; TileIndex tile = w->window_number; byte vehtype = w->type; DoCommandP(tile, vehtype, 0, CMD_DEPOT_SELL_ALL_VEHICLES); } } /** * Opens a depot window * @param tile The tile where the depot/hangar is located * @param type The type of vehicles in the depot */ void ShowDepotWindow(TileIndex tile, VehicleType type) { if (BringWindowToFrontById(WC_VEHICLE_DEPOT, tile) != NULL) return; const WindowDesc *desc; switch (type) { default: NOT_REACHED(); case VEH_TRAIN: desc = &_train_depot_desc; break; case VEH_ROAD: desc = &_road_depot_desc; break; case VEH_SHIP: desc = &_ship_depot_desc; break; case VEH_AIRCRAFT: desc = &_aircraft_depot_desc; break; } new DepotWindow(desc, tile, type); } /** * Removes the highlight of a vehicle in a depot window * @param *v Vehicle to remove all highlights from */ void DeleteDepotHighlightOfVehicle(const Vehicle *v) { DepotWindow *w; /* If we haven't got any vehicles on the mouse pointer, we haven't got any highlighted in any depots either * If that is the case, we can skip looping though the windows and save time */ if (_special_mouse_mode != WSM_DRAGDROP) return; w = dynamic_cast(FindWindowById(WC_VEHICLE_DEPOT, v->tile)); if (w != NULL) { if (w->sel == v->index) ResetObjectToPlace(); } } openttd-1.3.3/src/crashlog.cpp0000644000000000000000000003601512246102610014765 0ustar rootroot/* $Id: crashlog.cpp 24804 2012-12-09 16:52:43Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file crashlog.cpp Implementation of generic function to be called to log a crash */ #include "stdafx.h" #include "crashlog.h" #include "gamelog.h" #include "date_func.h" #include "map_func.h" #include "rev.h" #include "strings_func.h" #include "blitter/factory.hpp" #include "base_media_base.h" #include "music/music_driver.hpp" #include "sound/sound_driver.hpp" #include "video/video_driver.hpp" #include "saveload/saveload.h" #include "screenshot.h" #include "gfx_func.h" #include "network/network.h" #include "language.h" #include "ai/ai_info.hpp" #include "game/game.hpp" #include "game/game_info.hpp" #include "company_base.h" #include "company_func.h" #include /* static */ const char *CrashLog::message = NULL; /* static */ char *CrashLog::gamelog_buffer = NULL; /* static */ const char *CrashLog::gamelog_last = NULL; char *CrashLog::LogCompiler(char *buffer, const char *last) const { buffer += seprintf(buffer, last, " Compiler: " #if defined(_MSC_VER) "MSVC %d", _MSC_VER #elif defined(__ICC) && defined(__GNUC__) "ICC %d (GCC %d.%d.%d mode)", __ICC, __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ #elif defined(__ICC) "ICC %d", __ICC #elif defined(__GNUC__) "GCC %d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ #elif defined(__WATCOMC__) "WatcomC %d", __WATCOMC__ #else "" #endif ); #if defined(__VERSION__) return buffer + seprintf(buffer, last, " \"" __VERSION__ "\"\n\n"); #else return buffer + seprintf(buffer, last, "\n\n"); #endif } /* virtual */ char *CrashLog::LogRegisters(char *buffer, const char *last) const { /* Stub implementation; not all OSes support this. */ return buffer; } /* virtual */ char *CrashLog::LogModules(char *buffer, const char *last) const { /* Stub implementation; not all OSes support this. */ return buffer; } /** * Writes OpenTTD's version to the buffer. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ char *CrashLog::LogOpenTTDVersion(char *buffer, const char *last) const { return buffer + seprintf(buffer, last, "OpenTTD version:\n" " Version: %s (%d)\n" " NewGRF ver: %08x\n" " Bits: %d\n" " Endian: %s\n" " Dedicated: %s\n" " Build date: %s\n\n", _openttd_revision, _openttd_revision_modified, _openttd_newgrf_version, #ifdef _SQ64 64, #else 32, #endif #if (TTD_ENDIAN == TTD_LITTLE_ENDIAN) "little", #else "big", #endif #ifdef DEDICATED "yes", #else "no", #endif _openttd_build_date ); } /** * Writes the (important) configuration settings to the buffer. * E.g. graphics set, sound set, blitter and AIs. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ char *CrashLog::LogConfiguration(char *buffer, const char *last) const { buffer += seprintf(buffer, last, "Configuration:\n" " Blitter: %s\n" " Graphics set: %s (%u)\n" " Language: %s\n" " Music driver: %s\n" " Music set: %s (%u)\n" " Network: %s\n" " Sound driver: %s\n" " Sound set: %s (%u)\n" " Video driver: %s\n\n", BlitterFactoryBase::GetCurrentBlitter() == NULL ? "none" : BlitterFactoryBase::GetCurrentBlitter()->GetName(), BaseGraphics::GetUsedSet() == NULL ? "none" : BaseGraphics::GetUsedSet()->name, BaseGraphics::GetUsedSet() == NULL ? UINT32_MAX : BaseGraphics::GetUsedSet()->version, _current_language == NULL ? "none" : _current_language->file, _music_driver == NULL ? "none" : _music_driver->GetName(), BaseMusic::GetUsedSet() == NULL ? "none" : BaseMusic::GetUsedSet()->name, BaseMusic::GetUsedSet() == NULL ? UINT32_MAX : BaseMusic::GetUsedSet()->version, _networking ? (_network_server ? "server" : "client") : "no", _sound_driver == NULL ? "none" : _sound_driver->GetName(), BaseSounds::GetUsedSet() == NULL ? "none" : BaseSounds::GetUsedSet()->name, BaseSounds::GetUsedSet() == NULL ? UINT32_MAX : BaseSounds::GetUsedSet()->version, _video_driver == NULL ? "none" : _video_driver->GetName() ); buffer += seprintf(buffer, last, "AI Configuration (local: %i):\n", (int)_local_company); const Company *c; FOR_ALL_COMPANIES(c) { if (c->ai_info == NULL) { buffer += seprintf(buffer, last, " %2i: Human\n", (int)c->index); } else { buffer += seprintf(buffer, last, " %2i: %s (v%d)\n", (int)c->index, c->ai_info->GetName(), c->ai_info->GetVersion()); } } if (Game::GetInfo() != NULL) { buffer += seprintf(buffer, last, " GS: %s (v%d)\n", Game::GetInfo()->GetName(), Game::GetInfo()->GetVersion()); } buffer += seprintf(buffer, last, "\n"); return buffer; } /* Include these here so it's close to where it's actually used. */ #ifdef WITH_ALLEGRO # include #endif /* WITH_ALLEGRO */ #ifdef WITH_FONTCONFIG # include #endif /* WITH_FONTCONFIG */ #ifdef WITH_PNG /* pngconf.h, included by png.h doesn't like something in the * freetype headers. As such it's not alphabetically sorted. */ # include #endif /* WITH_PNG */ #ifdef WITH_FREETYPE # include # include FT_FREETYPE_H #endif /* WITH_FREETYPE */ #ifdef WITH_ICU # include #endif /* WITH_ICU */ #ifdef WITH_LZMA # include #endif #ifdef WITH_LZO #include #endif #ifdef WITH_SDL # include "sdl.h" # include #endif /* WITH_SDL */ #ifdef WITH_ZLIB # include #endif /** * Writes information (versions) of the used libraries. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ char *CrashLog::LogLibraries(char *buffer, const char *last) const { buffer += seprintf(buffer, last, "Libraries:\n"); #ifdef WITH_ALLEGRO buffer += seprintf(buffer, last, " Allegro: %s\n", allegro_id); #endif /* WITH_ALLEGRO */ #ifdef WITH_FONTCONFIG int version = FcGetVersion(); buffer += seprintf(buffer, last, " FontConfig: %d.%d.%d\n", version / 10000, (version / 100) % 100, version % 100); #endif /* WITH_FONTCONFIG */ #ifdef WITH_FREETYPE FT_Library library; int major, minor, patch; FT_Init_FreeType(&library); FT_Library_Version(library, &major, &minor, &patch); FT_Done_FreeType(library); buffer += seprintf(buffer, last, " FreeType: %d.%d.%d\n", major, minor, patch); #endif /* WITH_FREETYPE */ #ifdef WITH_ICU /* 4 times 0-255, separated by dots (.) and a trailing '\0' */ char buf[4 * 3 + 3 + 1]; UVersionInfo ver; u_getVersion(ver); u_versionToString(ver, buf); buffer += seprintf(buffer, last, " ICU: %s\n", buf); #endif /* WITH_ICU */ #ifdef WITH_LZMA buffer += seprintf(buffer, last, " LZMA: %s\n", lzma_version_string()); #endif #ifdef WITH_LZO buffer += seprintf(buffer, last, " LZO: %s\n", lzo_version_string()); #endif #ifdef WITH_PNG buffer += seprintf(buffer, last, " PNG: %s\n", png_get_libpng_ver(NULL)); #endif /* WITH_PNG */ #ifdef WITH_SDL #ifdef DYNAMICALLY_LOADED_SDL if (SDL_CALL SDL_Linked_Version != NULL) { #else { #endif const SDL_version *v = SDL_CALL SDL_Linked_Version(); buffer += seprintf(buffer, last, " SDL: %d.%d.%d\n", v->major, v->minor, v->patch); } #endif /* WITH_SDL */ #ifdef WITH_ZLIB buffer += seprintf(buffer, last, " Zlib: %s\n", zlibVersion()); #endif buffer += seprintf(buffer, last, "\n"); return buffer; } /** * Helper function for printing the gamelog. * @param s the string to print. */ /* static */ void CrashLog::GamelogFillCrashLog(const char *s) { CrashLog::gamelog_buffer += seprintf(CrashLog::gamelog_buffer, CrashLog::gamelog_last, "%s\n", s); } /** * Writes the gamelog data to the buffer. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ char *CrashLog::LogGamelog(char *buffer, const char *last) const { CrashLog::gamelog_buffer = buffer; CrashLog::gamelog_last = last; GamelogPrint(&CrashLog::GamelogFillCrashLog); return CrashLog::gamelog_buffer + seprintf(CrashLog::gamelog_buffer, last, "\n"); } /** * Fill the crash log buffer with all data of a crash log. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ char *CrashLog::FillCrashLog(char *buffer, const char *last) const { time_t cur_time = time(NULL); buffer += seprintf(buffer, last, "*** OpenTTD Crash Report ***\n\n"); buffer += seprintf(buffer, last, "Crash at: %s", asctime(gmtime(&cur_time))); YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); buffer += seprintf(buffer, last, "In game date: %i-%02i-%02i (%i)\n\n", ymd.year, ymd.month + 1, ymd.day, _date_fract); buffer = this->LogError(buffer, last, CrashLog::message); buffer = this->LogOpenTTDVersion(buffer, last); buffer = this->LogRegisters(buffer, last); buffer = this->LogStacktrace(buffer, last); buffer = this->LogOSVersion(buffer, last); buffer = this->LogCompiler(buffer, last); buffer = this->LogConfiguration(buffer, last); buffer = this->LogLibraries(buffer, last); buffer = this->LogModules(buffer, last); buffer = this->LogGamelog(buffer, last); buffer += seprintf(buffer, last, "*** End of OpenTTD Crash Report ***\n"); return buffer; } /** * Write the crash log to a file. * @note On success the filename will be filled with the full path of the * crash log file. Make sure filename is at least \c MAX_PATH big. * @param buffer The begin of the buffer to write to the disk. * @param filename Output for the filename of the written file. * @param filename_last The last position in the filename buffer. * @return true when the crash log was successfully written. */ bool CrashLog::WriteCrashLog(const char *buffer, char *filename, const char *filename_last) const { seprintf(filename, filename_last, "%scrash.log", _personal_dir); FILE *file = FioFOpenFile(filename, "w", NO_DIRECTORY); if (file == NULL) return false; size_t len = strlen(buffer); size_t written = fwrite(buffer, 1, len, file); FioFCloseFile(file); return len == written; } /* virtual */ int CrashLog::WriteCrashDump(char *filename, const char *filename_last) const { /* Stub implementation; not all OSes support this. */ return 0; } /** * Write the (crash) savegame to a file. * @note On success the filename will be filled with the full path of the * crash save file. Make sure filename is at least \c MAX_PATH big. * @param filename Output for the filename of the written file. * @param filename_last The last position in the filename buffer. * @return true when the crash save was successfully made. */ bool CrashLog::WriteSavegame(char *filename, const char *filename_last) const { /* If the map array doesn't exist, saving will fail too. If the map got * initialised, there is a big chance the rest is initialised too. */ if (_m == NULL) return false; try { GamelogEmergency(); seprintf(filename, filename_last, "%scrash.sav", _personal_dir); /* Don't do a threaded saveload. */ return SaveOrLoad(filename, SL_SAVE, NO_DIRECTORY, false) == SL_OK; } catch (...) { return false; } } /** * Write the (crash) screenshot to a file. * @note On success the filename will be filled with the full path of the * screenshot. Make sure filename is at least \c MAX_PATH big. * @param filename Output for the filename of the written file. * @param filename_last The last position in the filename buffer. * @return true when the crash screenshot was successfully made. */ bool CrashLog::WriteScreenshot(char *filename, const char *filename_last) const { /* Don't draw when we have invalid screen size */ if (_screen.width < 1 || _screen.height < 1 || _screen.dst_ptr == NULL) return false; bool res = MakeScreenshot(SC_CRASHLOG, "crash"); if (res) strecpy(filename, _full_screenshot_name, filename_last); return res; } /** * Makes the crash log, writes it to a file and then subsequently tries * to make a crash dump and crash savegame. It uses DEBUG to write * information like paths to the console. * @return true when everything is made successfully. */ bool CrashLog::MakeCrashLog() const { /* Don't keep looping logging crashes. */ static bool crashlogged = false; if (crashlogged) return false; crashlogged = true; char filename[MAX_PATH]; char buffer[65536]; bool ret = true; printf("Crash encountered, generating crash log...\n"); this->FillCrashLog(buffer, lastof(buffer)); printf("%s\n", buffer); printf("Crash log generated.\n\n"); printf("Writing crash log to disk...\n"); bool bret = this->WriteCrashLog(buffer, filename, lastof(filename)); if (bret) { printf("Crash log written to %s. Please add this file to any bug reports.\n\n", filename); } else { printf("Writing crash log failed. Please attach the output above to any bug reports.\n\n"); ret = false; } /* Don't mention writing crash dumps because not all platforms support it. */ int dret = this->WriteCrashDump(filename, lastof(filename)); if (dret < 0) { printf("Writing crash dump failed.\n\n"); ret = false; } else if (dret > 0) { printf("Crash dump written to %s. Please add this file to any bug reports.\n\n", filename); } printf("Writing crash savegame...\n"); bret = this->WriteSavegame(filename, lastof(filename)); if (bret) { printf("Crash savegame written to %s. Please add this file and the last (auto)save to any bug reports.\n\n", filename); } else { ret = false; printf("Writing crash savegame failed. Please attach the last (auto)save to any bug reports.\n\n"); } printf("Writing crash screenshot...\n"); bret = this->WriteScreenshot(filename, lastof(filename)); if (bret) { printf("Crash screenshot written to %s. Please add this file to any bug reports.\n\n", filename); } else { ret = false; printf("Writing crash screenshot failed.\n\n"); } return ret; } /** * Sets a message for the error message handler. * @param message The error message of the error. */ /* static */ void CrashLog::SetErrorMessage(const char *message) { CrashLog::message = message; } /** * Try to close the sound/video stuff so it doesn't keep lingering around * incorrect video states or so, e.g. keeping dpmi disabled. */ /* static */ void CrashLog::AfterCrashLogCleanup() { if (_music_driver != NULL) _music_driver->Stop(); if (_sound_driver != NULL) _sound_driver->Stop(); if (_video_driver != NULL) _video_driver->Stop(); } openttd-1.3.3/src/screenshot.cpp0000644000000000000000000006466412246102611015354 0ustar rootroot/* $Id: screenshot.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file screenshot.cpp The creation of screenshots! */ #include "stdafx.h" #include "fileio_func.h" #include "viewport_func.h" #include "gfx_func.h" #include "screenshot.h" #include "blitter/factory.hpp" #include "zoom_func.h" #include "core/endian_func.hpp" #include "saveload/saveload.h" #include "company_func.h" #include "strings_func.h" #include "error.h" #include "window_gui.h" #include "window_func.h" #include "tile_map.h" #include "landscape.h" #include "table/strings.h" static const char * const SCREENSHOT_NAME = "screenshot"; ///< Default filename of a saved screenshot. static const char * const HEIGHTMAP_NAME = "heightmap"; ///< Default filename of a saved heightmap. char _screenshot_format_name[8]; ///< Extension of the current screenshot format (corresponds with #_cur_screenshot_format). uint _num_screenshot_formats; ///< Number of available screenshot formats. uint _cur_screenshot_format; ///< Index of the currently selected screenshot format in #_screenshot_formats. static char _screenshot_name[128]; ///< Filename of the screenshot file. char _full_screenshot_name[MAX_PATH]; ///< Pathname of the screenshot file. /** * Callback function signature for generating lines of pixel data to be written to the screenshot file. * @param userdata Pointer to user data. * @param buf Destination buffer. * @param y Line number of the first line to write. * @param pitch Number of pixels to write (1 byte for 8bpp, 4 bytes for 32bpp). @see Colour * @param n Number of lines to write. */ typedef void ScreenshotCallback(void *userdata, void *buf, uint y, uint pitch, uint n); /** * Function signature for a screenshot generation routine for one of the available formats. * @param name Filename, including extension. * @param callb Callback function for generating lines of pixels. * @param userdata User data, passed on to \a callb. * @param w Width of the image in pixels. * @param h Height of the image in pixels. * @param pixelformat Bits per pixel (bpp), either 8 or 32. * @param palette %Colour palette (for 8bpp images). * @return File was written successfully. */ typedef bool ScreenshotHandlerProc(const char *name, ScreenshotCallback *callb, void *userdata, uint w, uint h, int pixelformat, const Colour *palette); /** Screenshot format information. */ struct ScreenshotFormat { const char *name; ///< Name of the format. const char *extension; ///< File extension. ScreenshotHandlerProc *proc; ///< Function for writing the screenshot. bool supports_32bpp; ///< Does this format support 32bpp images? }; /************************************************* **** SCREENSHOT CODE FOR WINDOWS BITMAP (.BMP) *************************************************/ #if defined(_MSC_VER) || defined(__WATCOMC__) #pragma pack(push, 1) #endif /** BMP File Header (stored in little endian) */ struct BitmapFileHeader { uint16 type; uint32 size; uint32 reserved; uint32 off_bits; } GCC_PACK; assert_compile(sizeof(BitmapFileHeader) == 14); #if defined(_MSC_VER) || defined(__WATCOMC__) #pragma pack(pop) #endif /** BMP Info Header (stored in little endian) */ struct BitmapInfoHeader { uint32 size; int32 width, height; uint16 planes, bitcount; uint32 compression, sizeimage, xpels, ypels, clrused, clrimp; }; assert_compile(sizeof(BitmapInfoHeader) == 40); /** Format of palette data in BMP header */ struct RgbQuad { byte blue, green, red, reserved; }; assert_compile(sizeof(RgbQuad) == 4); /** * Generic .BMP writer * @param name file name including extension * @param callb callback used for gathering rendered image * @param userdata parameters forwarded to \a callb * @param w width in pixels * @param h height in pixels * @param pixelformat bits per pixel * @param palette colour palette (for 8bpp mode) * @return was everything ok? * @see ScreenshotHandlerProc */ static bool MakeBMPImage(const char *name, ScreenshotCallback *callb, void *userdata, uint w, uint h, int pixelformat, const Colour *palette) { uint bpp; // bytes per pixel switch (pixelformat) { case 8: bpp = 1; break; /* 32bpp mode is saved as 24bpp BMP */ case 32: bpp = 3; break; /* Only implemented for 8bit and 32bit images so far */ default: return false; } FILE *f = fopen(name, "wb"); if (f == NULL) return false; /* Each scanline must be aligned on a 32bit boundary */ uint bytewidth = Align(w * bpp, 4); // bytes per line in file /* Size of palette. Only present for 8bpp mode */ uint pal_size = pixelformat == 8 ? sizeof(RgbQuad) * 256 : 0; /* Setup the file header */ BitmapFileHeader bfh; bfh.type = TO_LE16('MB'); bfh.size = TO_LE32(sizeof(BitmapFileHeader) + sizeof(BitmapInfoHeader) + pal_size + bytewidth * h); bfh.reserved = 0; bfh.off_bits = TO_LE32(sizeof(BitmapFileHeader) + sizeof(BitmapInfoHeader) + pal_size); /* Setup the info header */ BitmapInfoHeader bih; bih.size = TO_LE32(sizeof(BitmapInfoHeader)); bih.width = TO_LE32(w); bih.height = TO_LE32(h); bih.planes = TO_LE16(1); bih.bitcount = TO_LE16(bpp * 8); bih.compression = 0; bih.sizeimage = 0; bih.xpels = 0; bih.ypels = 0; bih.clrused = 0; bih.clrimp = 0; /* Write file header and info header */ if (fwrite(&bfh, sizeof(bfh), 1, f) != 1 || fwrite(&bih, sizeof(bih), 1, f) != 1) { fclose(f); return false; } if (pixelformat == 8) { /* Convert the palette to the windows format */ RgbQuad rq[256]; for (uint i = 0; i < 256; i++) { rq[i].red = palette[i].r; rq[i].green = palette[i].g; rq[i].blue = palette[i].b; rq[i].reserved = 0; } /* Write the palette */ if (fwrite(rq, sizeof(rq), 1, f) != 1) { fclose(f); return false; } } /* Try to use 64k of memory, store between 16 and 128 lines */ uint maxlines = Clamp(65536 / (w * pixelformat / 8), 16, 128); // number of lines per iteration uint8 *buff = MallocT(maxlines * w * pixelformat / 8); // buffer which is rendered to uint8 *line = AllocaM(uint8, bytewidth); // one line, stored to file memset(line, 0, bytewidth); /* Start at the bottom, since bitmaps are stored bottom up */ do { uint n = min(h, maxlines); h -= n; /* Render the pixels */ callb(userdata, buff, h, w, n); /* Write each line */ while (n-- != 0) { if (pixelformat == 8) { /* Move to 'line', leave last few pixels in line zeroed */ memcpy(line, buff + n * w, w); } else { /* Convert from 'native' 32bpp to BMP-like 24bpp. * Works for both big and little endian machines */ Colour *src = ((Colour *)buff) + n * w; byte *dst = line; for (uint i = 0; i < w; i++) { dst[i * 3 ] = src[i].b; dst[i * 3 + 1] = src[i].g; dst[i * 3 + 2] = src[i].r; } } /* Write to file */ if (fwrite(line, bytewidth, 1, f) != 1) { free(buff); fclose(f); return false; } } } while (h != 0); free(buff); fclose(f); return true; } /********************************************************* **** SCREENSHOT CODE FOR PORTABLE NETWORK GRAPHICS (.PNG) *********************************************************/ #if defined(WITH_PNG) #include #ifdef PNG_TEXT_SUPPORTED #include "rev.h" #include "newgrf_config.h" #include "ai/ai_info.hpp" #include "company_base.h" #include "base_media_base.h" #endif /* PNG_TEXT_SUPPORTED */ static void PNGAPI png_my_error(png_structp png_ptr, png_const_charp message) { DEBUG(misc, 0, "[libpng] error: %s - %s", message, (const char *)png_get_error_ptr(png_ptr)); longjmp(png_jmpbuf(png_ptr), 1); } static void PNGAPI png_my_warning(png_structp png_ptr, png_const_charp message) { DEBUG(misc, 1, "[libpng] warning: %s - %s", message, (const char *)png_get_error_ptr(png_ptr)); } /** * Generic .PNG file image writer. * @param name Filename, including extension. * @param callb Callback function for generating lines of pixels. * @param userdata User data, passed on to \a callb. * @param w Width of the image in pixels. * @param h Height of the image in pixels. * @param pixelformat Bits per pixel (bpp), either 8 or 32. * @param palette %Colour palette (for 8bpp images). * @return File was written successfully. * @see ScreenshotHandlerProc */ static bool MakePNGImage(const char *name, ScreenshotCallback *callb, void *userdata, uint w, uint h, int pixelformat, const Colour *palette) { png_color rq[256]; FILE *f; uint i, y, n; uint maxlines; uint bpp = pixelformat / 8; png_structp png_ptr; png_infop info_ptr; /* only implemented for 8bit and 32bit images so far. */ if (pixelformat != 8 && pixelformat != 32) return false; f = fopen(name, "wb"); if (f == NULL) return false; png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, const_cast(name), png_my_error, png_my_warning); if (png_ptr == NULL) { fclose(f); return false; } info_ptr = png_create_info_struct(png_ptr); if (info_ptr == NULL) { png_destroy_write_struct(&png_ptr, (png_infopp)NULL); fclose(f); return false; } if (setjmp(png_jmpbuf(png_ptr))) { png_destroy_write_struct(&png_ptr, &info_ptr); fclose(f); return false; } png_init_io(png_ptr, f); png_set_filter(png_ptr, 0, PNG_FILTER_NONE); png_set_IHDR(png_ptr, info_ptr, w, h, 8, pixelformat == 8 ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); #ifdef PNG_TEXT_SUPPORTED /* Try to add some game metadata to the PNG screenshot so * it's more useful for debugging and archival purposes. */ png_text_struct text[2]; memset(text, 0, sizeof(text)); text[0].key = const_cast("Software"); text[0].text = const_cast(_openttd_revision); text[0].text_length = strlen(_openttd_revision); text[0].compression = PNG_TEXT_COMPRESSION_NONE; char buf[8192]; char *p = buf; p += seprintf(p, lastof(buf), "Graphics set: %s (%u)\n", BaseGraphics::GetUsedSet()->name, BaseGraphics::GetUsedSet()->version); p = strecpy(p, "NewGRFs:\n", lastof(buf)); for (const GRFConfig *c = _game_mode == GM_MENU ? NULL : _grfconfig; c != NULL; c = c->next) { p += seprintf(p, lastof(buf), "%08X ", BSWAP32(c->ident.grfid)); p = md5sumToString(p, lastof(buf), c->ident.md5sum); p += seprintf(p, lastof(buf), " %s\n", c->filename); } p = strecpy(p, "\nCompanies:\n", lastof(buf)); const Company *c; FOR_ALL_COMPANIES(c) { if (c->ai_info == NULL) { p += seprintf(p, lastof(buf), "%2i: Human\n", (int)c->index); } else { p += seprintf(p, lastof(buf), "%2i: %s (v%d)\n", (int)c->index, c->ai_info->GetName(), c->ai_info->GetVersion()); } } text[1].key = const_cast("Description"); text[1].text = buf; text[1].text_length = p - buf; text[1].compression = PNG_TEXT_COMPRESSION_zTXt; png_set_text(png_ptr, info_ptr, text, 2); #endif /* PNG_TEXT_SUPPORTED */ if (pixelformat == 8) { /* convert the palette to the .PNG format. */ for (i = 0; i != 256; i++) { rq[i].red = palette[i].r; rq[i].green = palette[i].g; rq[i].blue = palette[i].b; } png_set_PLTE(png_ptr, info_ptr, rq, 256); } png_write_info(png_ptr, info_ptr); png_set_flush(png_ptr, 512); if (pixelformat == 32) { png_color_8 sig_bit; /* Save exact colour/alpha resolution */ sig_bit.alpha = 0; sig_bit.blue = 8; sig_bit.green = 8; sig_bit.red = 8; sig_bit.gray = 8; png_set_sBIT(png_ptr, info_ptr, &sig_bit); #if TTD_ENDIAN == TTD_LITTLE_ENDIAN png_set_bgr(png_ptr); png_set_filler(png_ptr, 0, PNG_FILLER_AFTER); #else png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); #endif /* TTD_ENDIAN == TTD_LITTLE_ENDIAN */ } /* use by default 64k temp memory */ maxlines = Clamp(65536 / w, 16, 128); /* now generate the bitmap bits */ void *buff = CallocT(w * maxlines * bpp); // by default generate 128 lines at a time. y = 0; do { /* determine # lines to write */ n = min(h - y, maxlines); /* render the pixels into the buffer */ callb(userdata, buff, y, w, n); y += n; /* write them to png */ for (i = 0; i != n; i++) { png_write_row(png_ptr, (png_bytep)buff + i * w * bpp); } } while (y != h); png_write_end(png_ptr, info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr); free(buff); fclose(f); return true; } #endif /* WITH_PNG */ /************************************************* **** SCREENSHOT CODE FOR ZSOFT PAINTBRUSH (.PCX) *************************************************/ /** Definition of a PCX file header. */ struct PcxHeader { byte manufacturer; byte version; byte rle; byte bpp; uint32 unused; uint16 xmax, ymax; uint16 hdpi, vdpi; byte pal_small[16 * 3]; byte reserved; byte planes; uint16 pitch; uint16 cpal; uint16 width; uint16 height; byte filler[54]; }; assert_compile(sizeof(PcxHeader) == 128); /** * Generic .PCX file image writer. * @param name Filename, including extension. * @param callb Callback function for generating lines of pixels. * @param userdata User data, passed on to \a callb. * @param w Width of the image in pixels. * @param h Height of the image in pixels. * @param pixelformat Bits per pixel (bpp), either 8 or 32. * @param palette %Colour palette (for 8bpp images). * @return File was written successfully. * @see ScreenshotHandlerProc */ static bool MakePCXImage(const char *name, ScreenshotCallback *callb, void *userdata, uint w, uint h, int pixelformat, const Colour *palette) { FILE *f; uint maxlines; uint y; PcxHeader pcx; bool success; if (pixelformat == 32) { DEBUG(misc, 0, "Can't convert a 32bpp screenshot to PCX format. Please pick another format."); return false; } if (pixelformat != 8 || w == 0) return false; f = fopen(name, "wb"); if (f == NULL) return false; memset(&pcx, 0, sizeof(pcx)); /* setup pcx header */ pcx.manufacturer = 10; pcx.version = 5; pcx.rle = 1; pcx.bpp = 8; pcx.xmax = TO_LE16(w - 1); pcx.ymax = TO_LE16(h - 1); pcx.hdpi = TO_LE16(320); pcx.vdpi = TO_LE16(320); pcx.planes = 1; pcx.cpal = TO_LE16(1); pcx.width = pcx.pitch = TO_LE16(w); pcx.height = TO_LE16(h); /* write pcx header */ if (fwrite(&pcx, sizeof(pcx), 1, f) != 1) { fclose(f); return false; } /* use by default 64k temp memory */ maxlines = Clamp(65536 / w, 16, 128); /* now generate the bitmap bits */ uint8 *buff = CallocT(w * maxlines); // by default generate 128 lines at a time. y = 0; do { /* determine # lines to write */ uint n = min(h - y, maxlines); uint i; /* render the pixels into the buffer */ callb(userdata, buff, y, w, n); y += n; /* write them to pcx */ for (i = 0; i != n; i++) { const uint8 *bufp = buff + i * w; byte runchar = bufp[0]; uint runcount = 1; uint j; /* for each pixel... */ for (j = 1; j < w; j++) { uint8 ch = bufp[j]; if (ch != runchar || runcount >= 0x3f) { if (runcount > 1 || (runchar & 0xC0) == 0xC0) { if (fputc(0xC0 | runcount, f) == EOF) { free(buff); fclose(f); return false; } } if (fputc(runchar, f) == EOF) { free(buff); fclose(f); return false; } runcount = 0; runchar = ch; } runcount++; } /* write remaining bytes.. */ if (runcount > 1 || (runchar & 0xC0) == 0xC0) { if (fputc(0xC0 | runcount, f) == EOF) { free(buff); fclose(f); return false; } } if (fputc(runchar, f) == EOF) { free(buff); fclose(f); return false; } } } while (y != h); free(buff); /* write 8-bit colour palette */ if (fputc(12, f) == EOF) { fclose(f); return false; } /* Palette is word-aligned, copy it to a temporary byte array */ byte tmp[256 * 3]; for (uint i = 0; i < 256; i++) { tmp[i * 3 + 0] = palette[i].r; tmp[i * 3 + 1] = palette[i].g; tmp[i * 3 + 2] = palette[i].b; } success = fwrite(tmp, sizeof(tmp), 1, f) == 1; fclose(f); return success; } /************************************************* **** GENERIC SCREENSHOT CODE *************************************************/ /** Available screenshot formats. */ static const ScreenshotFormat _screenshot_formats[] = { #if defined(WITH_PNG) {"PNG", "png", &MakePNGImage, true}, #endif {"BMP", "bmp", &MakeBMPImage, true}, {"PCX", "pcx", &MakePCXImage, false}, }; /** Get filename extension of current screenshot file format. */ const char *GetCurrentScreenshotExtension() { return _screenshot_formats[_cur_screenshot_format].extension; } /** Initialize screenshot format information on startup, with #_screenshot_format_name filled from the loadsave code. */ void InitializeScreenshotFormats() { uint j = 0; for (uint i = 0; i < lengthof(_screenshot_formats); i++) { if (!strcmp(_screenshot_format_name, _screenshot_formats[i].extension)) { j = i; break; } } _cur_screenshot_format = j; _num_screenshot_formats = lengthof(_screenshot_formats); } /** * Give descriptive name of the screenshot format. * @param i Number of the screenshot format. * @return String constant describing the format. */ const char *GetScreenshotFormatDesc(int i) { return _screenshot_formats[i].name; } /** * Determine whether a certain screenshot format support 32bpp images. * @param i Number of the screenshot format. * @return true if 32bpp is supported. */ bool GetScreenshotFormatSupports_32bpp(int i) { return _screenshot_formats[i].supports_32bpp; } /** * Set the screenshot format to use. * @param i Number of the format. */ void SetScreenshotFormat(uint i) { assert(i < _num_screenshot_formats); _cur_screenshot_format = i; strecpy(_screenshot_format_name, _screenshot_formats[i].extension, lastof(_screenshot_format_name)); } /** * Callback of the screenshot generator that dumps the current video buffer. * @see ScreenshotCallback */ static void CurrentScreenCallback(void *userdata, void *buf, uint y, uint pitch, uint n) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); void *src = blitter->MoveTo(_screen.dst_ptr, 0, y); blitter->CopyImageToBuffer(src, buf, _screen.width, n, pitch); } /** * generate a large piece of the world * @param userdata Viewport area to draw * @param buf Videobuffer with same bitdepth as current blitter * @param y First line to render * @param pitch Pitch of the videobuffer * @param n Number of lines to render */ static void LargeWorldCallback(void *userdata, void *buf, uint y, uint pitch, uint n) { ViewPort *vp = (ViewPort *)userdata; DrawPixelInfo dpi, *old_dpi; int wx, left; /* We are no longer rendering to the screen */ DrawPixelInfo old_screen = _screen; bool old_disable_anim = _screen_disable_anim; _screen.dst_ptr = buf; _screen.width = pitch; _screen.height = n; _screen.pitch = pitch; _screen_disable_anim = true; old_dpi = _cur_dpi; _cur_dpi = &dpi; dpi.dst_ptr = buf; dpi.height = n; dpi.width = vp->width; dpi.pitch = pitch; dpi.zoom = ZOOM_LVL_WORLD_SCREENSHOT; dpi.left = 0; dpi.top = y; /* Render viewport in blocks of 1600 pixels width */ left = 0; while (vp->width - left != 0) { wx = min(vp->width - left, 1600); left += wx; ViewportDoDraw(vp, ScaleByZoom(left - wx - vp->left, vp->zoom) + vp->virtual_left, ScaleByZoom(y - vp->top, vp->zoom) + vp->virtual_top, ScaleByZoom(left - vp->left, vp->zoom) + vp->virtual_left, ScaleByZoom((y + n) - vp->top, vp->zoom) + vp->virtual_top ); } _cur_dpi = old_dpi; /* Switch back to rendering to the screen */ _screen = old_screen; _screen_disable_anim = old_disable_anim; } /** * Construct a pathname for a screenshot file. * @param default_fn Default filename. * @param ext Extension to use. * @param crashlog Create path for crash.png * @return Pathname for a screenshot file. */ static const char *MakeScreenshotName(const char *default_fn, const char *ext, bool crashlog = false) { bool generate = StrEmpty(_screenshot_name); if (generate) { if (_game_mode == GM_EDITOR || _game_mode == GM_MENU || _local_company == COMPANY_SPECTATOR) { strecpy(_screenshot_name, default_fn, lastof(_screenshot_name)); } else { GenerateDefaultSaveName(_screenshot_name, lastof(_screenshot_name)); } } /* Add extension to screenshot file */ size_t len = strlen(_screenshot_name); snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, ".%s", ext); const char *screenshot_dir = crashlog ? _personal_dir : FiosGetScreenshotDir(); for (uint serial = 1;; serial++) { if (snprintf(_full_screenshot_name, lengthof(_full_screenshot_name), "%s%s", screenshot_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) { /* We need more characters than MAX_PATH -> end with error */ _full_screenshot_name[0] = '\0'; break; } if (!generate) break; // allow overwriting of non-automatic filenames if (!FileExists(_full_screenshot_name)) break; /* If file exists try another one with same name, but just with a higher index */ snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, "#%u.%s", serial, ext); } return _full_screenshot_name; } /** Make a screenshot of the current screen. */ static bool MakeSmallScreenshot(bool crashlog) { const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; return sf->proc(MakeScreenshotName(SCREENSHOT_NAME, sf->extension, crashlog), CurrentScreenCallback, NULL, _screen.width, _screen.height, BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette.palette); } /** * Configure a ViewPort for rendering (a part of) the map into a screenshot. * @param t Screenshot type * @param [out] vp Result viewport */ void SetupScreenshotViewport(ScreenshotType t, ViewPort *vp) { /* Determine world coordinates of screenshot */ if (t == SC_WORLD) { vp->zoom = ZOOM_LVL_WORLD_SCREENSHOT; TileIndex north_tile = _settings_game.construction.freeform_edges ? TileXY(1, 1) : TileXY(0, 0); TileIndex south_tile = MapSize() - 1; /* We need to account for a hill or high building at tile 0,0. */ int extra_height_top = TilePixelHeight(north_tile) + 150; /* If there is a hill at the bottom don't create a large black area. */ int reclaim_height_bottom = TilePixelHeight(south_tile); vp->virtual_left = RemapCoords(TileX(south_tile) * TILE_SIZE, TileY(north_tile) * TILE_SIZE, 0).x; vp->virtual_top = RemapCoords(TileX(north_tile) * TILE_SIZE, TileY(north_tile) * TILE_SIZE, extra_height_top).y; vp->virtual_width = RemapCoords(TileX(north_tile) * TILE_SIZE, TileY(south_tile) * TILE_SIZE, 0).x - vp->virtual_left + 1; vp->virtual_height = RemapCoords(TileX(south_tile) * TILE_SIZE, TileY(south_tile) * TILE_SIZE, reclaim_height_bottom).y - vp->virtual_top + 1; } else { vp->zoom = (t == SC_ZOOMEDIN) ? _settings_client.gui.zoom_min : ZOOM_LVL_VIEWPORT; Window *w = FindWindowById(WC_MAIN_WINDOW, 0); vp->virtual_left = w->viewport->virtual_left; vp->virtual_top = w->viewport->virtual_top; vp->virtual_width = w->viewport->virtual_width; vp->virtual_height = w->viewport->virtual_height; } /* Compute pixel coordinates */ vp->left = 0; vp->top = 0; vp->width = UnScaleByZoom(vp->virtual_width, vp->zoom); vp->height = UnScaleByZoom(vp->virtual_height, vp->zoom); } /** * Make a screenshot of the map. * @param t Screenshot type: World or viewport screenshot * @return true on success */ static bool MakeLargeWorldScreenshot(ScreenshotType t) { ViewPort vp; SetupScreenshotViewport(t, &vp); const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; return sf->proc(MakeScreenshotName(SCREENSHOT_NAME, sf->extension), LargeWorldCallback, &vp, vp.width, vp.height, BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette.palette); } /** * Callback for generating a heightmap. Supports 8bpp grayscale only. * @param userdata Pointer to user data. * @param buf Destination buffer. * @param y Line number of the first line to write. * @param pitch Number of pixels to write (1 byte for 8bpp, 4 bytes for 32bpp). @see Colour * @param n Number of lines to write. * @see ScreenshotCallback */ static void HeightmapCallback(void *userdata, void *buffer, uint y, uint pitch, uint n) { byte *buf = (byte *)buffer; while (n > 0) { TileIndex ti = TileXY(MapMaxX(), y); for (uint x = MapMaxX(); true; x--) { *buf = 16 * TileHeight(ti); buf++; if (x == 0) break; ti = TILE_ADDXY(ti, -1, 0); } y++; n--; } } /** * Make a heightmap of the current map. * @param filename Filename to use for saving. */ bool MakeHeightmapScreenshot(const char *filename) { Colour palette[256]; for (uint i = 0; i < lengthof(palette); i++) { palette[i].a = 0xff; palette[i].r = i; palette[i].g = i; palette[i].b = i; } const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; return sf->proc(filename, HeightmapCallback, NULL, MapSizeX(), MapSizeY(), 8, palette); } /** * Make an actual screenshot. * @param t the type of screenshot to make. * @param name the name to give to the screenshot. * @return true iff the screenshot was made successfully */ bool MakeScreenshot(ScreenshotType t, const char *name) { if (t == SC_VIEWPORT) { /* First draw the dirty parts of the screen and only then change the name * of the screenshot. This way the screenshot will always show the name * of the previous screenshot in the 'successful' message instead of the * name of the new screenshot (or an empty name). */ UndrawMouseCursor(); DrawDirtyBlocks(); } _screenshot_name[0] = '\0'; if (name != NULL) strecpy(_screenshot_name, name, lastof(_screenshot_name)); bool ret; switch (t) { case SC_VIEWPORT: ret = MakeSmallScreenshot(false); break; case SC_CRASHLOG: ret = MakeSmallScreenshot(true); break; case SC_ZOOMEDIN: case SC_DEFAULTZOOM: case SC_WORLD: ret = MakeLargeWorldScreenshot(t); break; case SC_HEIGHTMAP: { const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; ret = MakeHeightmapScreenshot(MakeScreenshotName(HEIGHTMAP_NAME, sf->extension)); break; } default: NOT_REACHED(); } if (ret) { SetDParamStr(0, _screenshot_name); ShowErrorMessage(STR_MESSAGE_SCREENSHOT_SUCCESSFULLY, INVALID_STRING_ID, WL_WARNING); } else { ShowErrorMessage(STR_ERROR_SCREENSHOT_FAILED, INVALID_STRING_ID, WL_ERROR); } return ret; } openttd-1.3.3/src/newgrf_properties.h0000644000000000000000000000763512246102611016403 0ustar rootroot/* $Id: newgrf_properties.h 23504 2011-12-13 00:43:35Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_properties.h Properties of NewGRF Action 0. */ #ifndef NEWGRF_PROPERTIES_H #define NEWGRF_PROPERTIES_H /** * List of NewGRF properties used in Action 0 or Callback 0x36 (CBID_VEHICLE_MODIFY_PROPERTY). * Names are formatted as PROP__ * @todo Currently the list only contains properties which are used more than once in the code. I.e. they are available for callback 0x36. */ enum PropertyID { PROP_VEHICLE_LOAD_AMOUNT = 0x07, ///< Loading speed PROP_TRAIN_SPEED = 0x09, ///< Max. speed: 1 unit = 1/1.6 mph = 1 km-ish/h PROP_TRAIN_POWER = 0x0B, ///< Power in hp (if dualheaded: sum of both vehicles) PROP_TRAIN_RUNNING_COST_FACTOR = 0x0D, ///< Yearly runningcost (if dualheaded: sum of both vehicles) PROP_TRAIN_CARGO_CAPACITY = 0x14, ///< Capacity (if dualheaded: for each single vehicle) PROP_TRAIN_WEIGHT = 0x16, ///< Weight in t (if dualheaded: for each single vehicle) PROP_TRAIN_COST_FACTOR = 0x17, ///< Purchase cost (if dualheaded: sum of both vehicles) PROP_TRAIN_TRACTIVE_EFFORT = 0x1F, ///< Tractive effort coefficient in 1/256 PROP_TRAIN_SHORTEN_FACTOR = 0x21, ///< Shorter vehicles PROP_TRAIN_USER_DATA = 0x25, ///< User defined data for vehicle variable 0x42 PROP_TRAIN_CARGO_AGE_PERIOD = 0x2B, ///< Number of ticks before carried cargo is aged PROP_ROADVEH_RUNNING_COST_FACTOR = 0x09, ///< Yearly runningcost PROP_ROADVEH_CARGO_CAPACITY = 0x0F, ///< Capacity PROP_ROADVEH_COST_FACTOR = 0x11, ///< Purchase cost PROP_ROADVEH_POWER = 0x13, ///< Power in 10 HP PROP_ROADVEH_WEIGHT = 0x14, ///< Weight in 1/4 t PROP_ROADVEH_SPEED = 0x15, ///< Max. speed: 1 unit = 1/0.8 mph = 2 km-ish/h PROP_ROADVEH_TRACTIVE_EFFORT = 0x18, ///< Tractive effort coefficient in 1/256 PROP_ROADVEH_CARGO_AGE_PERIOD = 0x22, ///< Number of ticks before carried cargo is aged PROP_ROADVEH_SHORTEN_FACTOR = 0x23, ///< Shorter vehicles PROP_SHIP_COST_FACTOR = 0x0A, ///< Purchase cost PROP_SHIP_SPEED = 0x0B, ///< Max. speed: 1 unit = 1/3.2 mph = 0.5 km-ish/h PROP_SHIP_CARGO_CAPACITY = 0x0D, ///< Capacity PROP_SHIP_RUNNING_COST_FACTOR = 0x0F, ///< Yearly runningcost PROP_SHIP_CARGO_AGE_PERIOD = 0x1D, ///< Number of ticks before carried cargo is aged PROP_AIRCRAFT_COST_FACTOR = 0x0B, ///< Purchase cost PROP_AIRCRAFT_SPEED = 0x0C, ///< Max. speed: 1 unit = 8 mph = 12.8 km-ish/h PROP_AIRCRAFT_RUNNING_COST_FACTOR = 0x0E, ///< Yearly runningcost PROP_AIRCRAFT_PASSENGER_CAPACITY = 0x0F, ///< Passenger Capacity PROP_AIRCRAFT_MAIL_CAPACITY = 0x11, ///< Mail Capacity PROP_AIRCRAFT_CARGO_AGE_PERIOD = 0x1C, ///< Number of ticks before carried cargo is aged PROP_AIRCRAFT_RANGE = 0x1F, ///< Aircraft range }; #endif /* NEWGRF_PROPERTIES_H */ openttd-1.3.3/src/group.h0000644000000000000000000000702512246102610013763 0ustar rootroot/* $Id: group.h 24541 2012-09-21 20:31:42Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file group.h Base class for groups and group functions. */ #ifndef GROUP_H #define GROUP_H #include "group_type.h" #include "core/pool_type.hpp" #include "company_type.h" #include "vehicle_type.h" #include "engine_type.h" typedef Pool GroupPool; extern GroupPool _group_pool; ///< Pool of groups. /** Statistics and caches on the vehicles in a group. */ struct GroupStatistics { uint16 num_vehicle; ///< Number of vehicles. uint16 *num_engines; ///< Caches the number of engines of each type the company owns. bool autoreplace_defined; ///< Are any autoreplace rules set? bool autoreplace_finished; ///< Have all autoreplacement finished? uint16 num_profit_vehicle; ///< Number of vehicles considered for profit statistics; Money profit_last_year; ///< Sum of profits for all vehicles. GroupStatistics(); ~GroupStatistics(); void Clear(); void ClearProfits() { this->num_profit_vehicle = 0; this->profit_last_year = 0; } void ClearAutoreplace() { this->autoreplace_defined = false; this->autoreplace_finished = false; } static GroupStatistics &Get(CompanyID company, GroupID id_g, VehicleType type); static GroupStatistics &Get(const Vehicle *v); static GroupStatistics &GetAllGroup(const Vehicle *v); static void CountVehicle(const Vehicle *v, int delta); static void CountEngine(const Vehicle *v, int delta); static void VehicleReachedProfitAge(const Vehicle *v); static void UpdateProfits(); static void UpdateAfterLoad(); static void UpdateAutoreplace(CompanyID company); }; /** Group data. */ struct Group : GroupPool::PoolItem<&_group_pool> { char *name; ///< Group Name OwnerByte owner; ///< Group Owner VehicleTypeByte vehicle_type; ///< Vehicle type of the group bool replace_protection; ///< If set to true, the global autoreplace have no effect on the group GroupStatistics statistics; ///< NOSAVE: Statistics and caches on the vehicles in the group. Group(CompanyID owner = INVALID_COMPANY); ~Group(); }; static inline bool IsDefaultGroupID(GroupID index) { return index == DEFAULT_GROUP; } /** * Checks if a GroupID stands for all vehicles of a company * @param id_g The GroupID to check * @return true is id_g is identical to ALL_GROUP */ static inline bool IsAllGroupID(GroupID id_g) { return id_g == ALL_GROUP; } #define FOR_ALL_GROUPS_FROM(var, start) FOR_ALL_ITEMS_FROM(Group, group_index, var, start) #define FOR_ALL_GROUPS(var) FOR_ALL_GROUPS_FROM(var, 0) uint GetGroupNumEngines(CompanyID company, GroupID id_g, EngineID id_e); void SetTrainGroupID(Train *v, GroupID grp); void UpdateTrainGroupID(Train *v); void RemoveVehicleFromGroup(const Vehicle *v); void RemoveAllGroupsForCompany(const CompanyID company); extern GroupID _new_group_id; #endif /* GROUP_H */ openttd-1.3.3/src/road_func.h0000644000000000000000000001105212246102611014563 0ustar rootroot/* $Id: road_func.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_func.h Functions related to roads. */ #ifndef ROAD_FUNC_H #define ROAD_FUNC_H #include "core/bitmath_func.hpp" #include "road_type.h" #include "economy_func.h" /** * Iterate through each set RoadType in a RoadTypes value. * For more informations see FOR_EACH_SET_BIT_EX. * * @param var Loop index variable that stores fallowing set road type. Must be of type RoadType. * @param road_types The value to iterate through (any expression). * * @see FOR_EACH_SET_BIT_EX */ #define FOR_EACH_SET_ROADTYPE(var, road_types) FOR_EACH_SET_BIT_EX(RoadType, var, RoadTypes, road_types) /** * Whether the given roadtype is valid. * @param rt the roadtype to check for validness * @return true if and only if valid */ static inline bool IsValidRoadType(RoadType rt) { return rt == ROADTYPE_ROAD || rt == ROADTYPE_TRAM; } /** * Maps a RoadType to the corresponding RoadTypes value * * @param rt the roadtype to get the roadtypes from * @return the roadtypes with the given roadtype */ static inline RoadTypes RoadTypeToRoadTypes(RoadType rt) { return (RoadTypes)(1 << rt); } /** * Returns the RoadTypes which are not present in the given RoadTypes * * This function returns the complement of a given RoadTypes. * * @param r The given RoadTypes * @return The complement of the given RoadTypes */ static inline RoadTypes ComplementRoadTypes(RoadTypes r) { return (RoadTypes)(ROADTYPES_ALL ^ r); } /** * Calculate the complement of a RoadBits value * * Simply flips all bits in the RoadBits value to get the complement * of the RoadBits. * * @param r The given RoadBits value * @return the complement */ static inline RoadBits ComplementRoadBits(RoadBits r) { return (RoadBits)(ROAD_ALL ^ r); } /** * Calculate the mirrored RoadBits * * Simply move the bits to their new position. * * @param r The given RoadBits value * @return the mirrored */ static inline RoadBits MirrorRoadBits(RoadBits r) { return (RoadBits)(GB(r, 0, 2) << 2 | GB(r, 2, 2)); } /** * Calculate rotated RoadBits * * Move the Roadbits clockwise until they are in their final position. * * @param r The given RoadBits value * @param rot The given Rotation angle * @return the rotated */ static inline RoadBits RotateRoadBits(RoadBits r, DiagDirDiff rot) { for (; rot > (DiagDirDiff)0; rot--) { r = (RoadBits)(GB(r, 0, 1) << 3 | GB(r, 1, 3)); } return r; } /** * Check if we've got a straight road * * @param r The given RoadBits * @return true if we've got a straight road */ static inline bool IsStraightRoad(RoadBits r) { return (r == ROAD_X || r == ROAD_Y); } /** * Create the road-part which belongs to the given DiagDirection * * This function returns a RoadBits value which belongs to * the given DiagDirection. * * @param d The DiagDirection * @return The result RoadBits which the selected road-part set */ static inline RoadBits DiagDirToRoadBits(DiagDirection d) { return (RoadBits)(ROAD_NW << (3 ^ d)); } /** * Create the road-part which belongs to the given Axis * * This function returns a RoadBits value which belongs to * the given Axis. * * @param a The Axis * @return The result RoadBits which the selected road-part set */ static inline RoadBits AxisToRoadBits(Axis a) { return a == AXIS_X ? ROAD_X : ROAD_Y; } /** * Calculates the maintenance cost of a number of road bits. * @param roadtype Road type to get the cost for. * @param num Number of road bits. * @return Total cost. */ static inline Money RoadMaintenanceCost(RoadType roadtype, uint32 num) { assert(roadtype < ROADTYPE_END); return (_price[PR_INFRASTRUCTURE_ROAD] * (roadtype == ROADTYPE_TRAM ? 3 : 2) * num * (1 + IntSqrt(num))) >> 9; // 2 bits fraction for the multiplier and 7 bits scaling. } bool HasRoadTypesAvail(const CompanyID company, const RoadTypes rts); bool ValParamRoadType(const RoadType rt); RoadTypes GetCompanyRoadtypes(const CompanyID company); void UpdateLevelCrossing(TileIndex tile, bool sound = true); #endif /* ROAD_FUNC_H */ openttd-1.3.3/src/base_station_base.h0000644000000000000000000002040712246102611016274 0ustar rootroot/* $Id: base_station_base.h 24905 2013-01-11 07:39:25Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file base_station_base.h Base classes/functions for base stations. */ #ifndef BASE_STATION_BASE_H #define BASE_STATION_BASE_H #include "core/pool_type.hpp" #include "command_type.h" #include "viewport_type.h" #include "station_map.h" typedef Pool StationPool; extern StationPool _station_pool; struct StationSpecList { const StationSpec *spec; uint32 grfid; ///< GRF ID of this custom station uint8 localidx; ///< Station ID within GRF of station }; /** StationRect - used to track station spread out rectangle - cheaper than scanning whole map */ struct StationRect : public Rect { enum StationRectMode { ADD_TEST = 0, ADD_TRY, ADD_FORCE }; StationRect(); void MakeEmpty(); bool PtInExtendedRect(int x, int y, int distance = 0) const; bool IsEmpty() const; CommandCost BeforeAddTile(TileIndex tile, StationRectMode mode); CommandCost BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode); bool AfterRemoveTile(BaseStation *st, TileIndex tile); bool AfterRemoveRect(BaseStation *st, TileArea ta); static bool ScanForStationTiles(StationID st_id, int left_a, int top_a, int right_a, int bottom_a); StationRect& operator = (const Rect &src); }; /** Base class for all station-ish types */ struct BaseStation : StationPool::PoolItem<&_station_pool> { TileIndex xy; ///< Base tile of the station ViewportSign sign; ///< NOSAVE: Dimensions of sign byte delete_ctr; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted. char *name; ///< Custom name StringID string_id; ///< Default name (town area) of station Town *town; ///< The town this station is associated with OwnerByte owner; ///< The owner of this station StationFacilityByte facilities; ///< The facilities that this station has uint8 num_specs; ///< Number of specs in the speclist StationSpecList *speclist; ///< List of station specs of this station Date build_date; ///< Date of construction uint16 random_bits; ///< Random bits assigned to this station byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station uint8 cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen. uint32 cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask TileArea train_station; ///< Tile area the train 'station' part covers StationRect rect; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions /** * Initialize the base station. * @param tile The location of the station sign */ BaseStation(TileIndex tile) : xy(tile), train_station(INVALID_TILE, 0, 0) { } virtual ~BaseStation(); /** * Check whether a specific tile belongs to this station. * @param tile the tile to check * @return true if the tile belongs to this station */ virtual bool TileBelongsToRailStation(TileIndex tile) const = 0; /** * Helper function to get a NewGRF variable that isn't implemented by the base class. * @param object the resolver object related to this query * @param variable that is queried * @param parameter parameter for that variable * @param available will return false if ever the variable asked for does not exist * @return the value stored in the corresponding variable */ virtual uint32 GetNewGRFVariable(const struct ResolverObject *object, byte variable, byte parameter, bool *available) const = 0; /** * Update the coordinated of the sign (as shown in the viewport). */ virtual void UpdateVirtCoord() = 0; /** * Get the tile area for a given station type. * @param ta tile area to fill. * @param type the type of the area */ virtual void GetTileArea(TileArea *ta, StationType type) const = 0; /** * Obtain the length of a platform * @pre tile must be a rail station tile * @param tile A tile that contains the platform in question * @return The length of the platform */ virtual uint GetPlatformLength(TileIndex tile) const = 0; /** * Determines the REMAINING length of a platform, starting at (and including) * the given tile. * @param tile the tile from which to start searching. Must be a rail station tile * @param dir The direction in which to search. * @return The platform length */ virtual uint GetPlatformLength(TileIndex tile, DiagDirection dir) const = 0; /** * Get the base station belonging to a specific tile. * @param tile The tile to get the base station from. * @return the station associated with that tile. */ static inline BaseStation *GetByTile(TileIndex tile) { return BaseStation::Get(GetStationIndex(tile)); } /** * Check whether the base station currently is in use; in use means * that it is not scheduled for deletion and that it still has some * facilities left. * @return true if still in use */ inline bool IsInUse() const { return (this->facilities & ~FACIL_WAYPOINT) != 0; } static void PostDestructor(size_t index); }; #define FOR_ALL_BASE_STATIONS(var) FOR_ALL_ITEMS_FROM(BaseStation, station_index, var, 0) /** * Class defining several overloaded accessors so we don't * have to cast base stations that often */ template struct SpecializedStation : public BaseStation { static const StationFacility EXPECTED_FACIL = Tis_waypoint ? FACIL_WAYPOINT : FACIL_NONE; ///< Specialized type /** * Set station type correctly * @param tile The base tile of the station. */ inline SpecializedStation(TileIndex tile) : BaseStation(tile) { this->facilities = EXPECTED_FACIL; } /** * Helper for checking whether the given station is of this type. * @param st the station to check. * @return true if the station is the type we expect it to be. */ static inline bool IsExpected(const BaseStation *st) { return (st->facilities & FACIL_WAYPOINT) == EXPECTED_FACIL; } /** * Tests whether given index is a valid index for station of this type * @param index tested index * @return is this index valid index of T? */ static inline bool IsValidID(size_t index) { return BaseStation::IsValidID(index) && IsExpected(BaseStation::Get(index)); } /** * Gets station with given index * @return pointer to station with given index casted to T * */ static inline T *Get(size_t index) { return (T *)BaseStation::Get(index); } /** * Returns station if the index is a valid index for this station type * @return pointer to station with given index if it's a station of this type */ static inline T *GetIfValid(size_t index) { return IsValidID(index) ? Get(index) : NULL; } /** * Get the station belonging to a specific tile. * @param tile The tile to get the station from. * @return the station associated with that tile. */ static inline T *GetByTile(TileIndex tile) { return GetIfValid(GetStationIndex(tile)); } /** * Converts a BaseStation to SpecializedStation with type checking. * @param st BaseStation pointer * @return pointer to SpecializedStation */ static inline T *From(BaseStation *st) { assert(IsExpected(st)); return (T *)st; } /** * Converts a const BaseStation to const SpecializedStation with type checking. * @param st BaseStation pointer * @return pointer to SpecializedStation */ static inline const T *From(const BaseStation *st) { assert(IsExpected(st)); return (const T *)st; } }; #define FOR_ALL_BASE_STATIONS_OF_TYPE(name, var) FOR_ALL_ITEMS_FROM(name, station_index, var, 0) if (name::IsExpected(var)) #endif /* BASE_STATION_BASE_H */ openttd-1.3.3/src/textbuf.cpp0000644000000000000000000003333312246102610014644 0ustar rootroot/* $Id: textbuf.cpp 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file textbuf.cpp Textbuffer handling. */ #include "stdafx.h" #include #include "textbuf_type.h" #include "string_func.h" #include "strings_func.h" #include "gfx_type.h" #include "gfx_func.h" #include "window_func.h" #include "core/alloc_func.hpp" /** * Try to retrieve the current clipboard contents. * * @note OS-specific function. * @return True if some text could be retrieved. */ bool GetClipboardContents(char *buffer, size_t buff_len); int _caret_timer; /** * Checks if it is possible to delete a character. * @param backspace if set, delete the character before the caret, * otherwise, delete the character after it. * @return true if a character can be deleted in the given direction. */ bool Textbuf::CanDelChar(bool backspace) { return backspace ? this->caretpos != 0 : this->caretpos < this->bytes - 1; } /** * Delete a character from a textbuffer, either with 'Delete' or 'Backspace' * The character is delete from the position the caret is at * @param keycode Type of deletion, either WKC_BACKSPACE or WKC_DELETE * @return Return true on successful change of Textbuf, or false otherwise */ bool Textbuf::DeleteChar(uint16 keycode) { bool word = (keycode & WKC_CTRL) != 0; keycode &= ~WKC_SPECIAL_KEYS; if (keycode != WKC_BACKSPACE && keycode != WKC_DELETE) return false; bool backspace = keycode == WKC_BACKSPACE; if (!CanDelChar(backspace)) return false; char *s = this->buf + this->caretpos; uint16 len = 0; if (word) { /* Delete a complete word. */ if (backspace) { /* Delete whitespace and word in front of the caret. */ len = this->caretpos - (uint16)this->char_iter->Prev(StringIterator::ITER_WORD); s -= len; } else { /* Delete word and following whitespace following the caret. */ len = (uint16)this->char_iter->Next(StringIterator::ITER_WORD) - this->caretpos; } /* Update character count. */ for (const char *ss = s; ss < s + len; Utf8Consume(&ss)) { this->chars--; } } else { /* Delete a single character. */ if (backspace) { /* Delete the last code point in front of the caret. */ s = Utf8PrevChar(s); WChar c; len = (uint16)Utf8Decode(&c, s); this->chars--; } else { /* Delete the complete character following the caret. */ len = (uint16)this->char_iter->Next(StringIterator::ITER_CHARACTER) - this->caretpos; /* Update character count. */ for (const char *ss = s; ss < s + len; Utf8Consume(&ss)) { this->chars--; } } } /* Move the remaining characters over the marker */ memmove(s, s + len, this->bytes - (s - this->buf) - len); this->bytes -= len; if (backspace) this->caretpos -= len; this->UpdateStringIter(); this->UpdateWidth(); this->UpdateCaretPosition(); this->UpdateMarkedText(); return true; } /** * Delete every character in the textbuffer */ void Textbuf::DeleteAll() { memset(this->buf, 0, this->max_bytes); this->bytes = this->chars = 1; this->pixels = this->caretpos = this->caretxoffs = 0; this->markpos = this->markend = this->markxoffs = this->marklength = 0; this->UpdateStringIter(); } /** * Insert a character to a textbuffer. If maxwidth of the Textbuf is zero, * we don't care about the visual-length but only about the physical * length of the string * @param key Character to be inserted * @return Return true on successful change of Textbuf, or false otherwise */ bool Textbuf::InsertChar(WChar key) { uint16 len = (uint16)Utf8CharLen(key); if (this->bytes + len <= this->max_bytes && this->chars + 1 <= this->max_chars) { memmove(this->buf + this->caretpos + len, this->buf + this->caretpos, this->bytes - this->caretpos); Utf8Encode(this->buf + this->caretpos, key); this->chars++; this->bytes += len; this->caretpos += len; this->UpdateStringIter(); this->UpdateWidth(); this->UpdateCaretPosition(); this->UpdateMarkedText(); return true; } return false; } /** * Insert a string into the text buffer. If maxwidth of the Textbuf is zero, * we don't care about the visual-length but only about the physical * length of the string. * @param str String to insert. * @param marked Replace the currently marked text with the new text. * @param caret Move the caret to this point in the insertion string. * @param insert_location Position at which to insert the string. * @param replacement_end Replace all characters from #insert_location up to this location with the new string. * @return True on successful change of Textbuf, or false otherwise. */ bool Textbuf::InsertString(const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) { uint16 insertpos = (marked && this->marklength != 0) ? this->markpos : this->caretpos; if (insert_location != NULL) { insertpos = insert_location - this->buf; if (insertpos > this->bytes) return false; if (replacement_end != NULL) { this->DeleteText(insertpos, replacement_end - this->buf, str == NULL); } } else { if (marked) this->DiscardMarkedText(str == NULL); } if (str == NULL) return false; uint16 bytes = 0, chars = 0; WChar c; for (const char *ptr = str; (c = Utf8Consume(&ptr)) != '\0';) { if (!IsValidChar(c, this->afilter)) break; byte len = Utf8CharLen(c); if (this->bytes + bytes + len > this->max_bytes) break; if (this->chars + chars + 1 > this->max_chars) break; bytes += len; chars++; /* Move caret if needed. */ if (ptr == caret) this->caretpos = insertpos + bytes; } if (bytes == 0) return false; if (marked) { this->markpos = insertpos; this->markend = insertpos + bytes; } memmove(this->buf + insertpos + bytes, this->buf + insertpos, this->bytes - insertpos); memcpy(this->buf + insertpos, str, bytes); this->bytes += bytes; this->chars += chars; if (!marked && caret == NULL) this->caretpos += bytes; assert(this->bytes <= this->max_bytes); assert(this->chars <= this->max_chars); this->buf[this->bytes - 1] = '\0'; // terminating zero this->UpdateStringIter(); this->UpdateWidth(); this->UpdateCaretPosition(); this->UpdateMarkedText(); return true; } /** * Insert a chunk of text from the clipboard onto the textbuffer. Get TEXT clipboard * and append this up to the maximum length (either absolute or screenlength). If maxlength * is zero, we don't care about the screenlength but only about the physical length of the string * @return true on successful change of Textbuf, or false otherwise */ bool Textbuf::InsertClipboard() { char utf8_buf[512]; if (!GetClipboardContents(utf8_buf, lengthof(utf8_buf))) return false; return this->InsertString(utf8_buf, false); } /** * Delete a part of the text. * @param from Start of the text to delete. * @param to End of the text to delete. * @param update Set to true if the internal state should be updated. */ void Textbuf::DeleteText(uint16 from, uint16 to, bool update) { uint c = 0; const char *s = this->buf + from; while (s < this->buf + to) { Utf8Consume(&s); c++; } /* Strip marked characters from buffer. */ memmove(this->buf + from, this->buf + to, this->bytes - to); this->bytes -= to - from; this->chars -= c; /* Fixup caret if needed. */ if (this->caretpos > from) { if (this->caretpos <= to) { this->caretpos = from; } else { this->caretpos -= to - from; } } if (update) { this->UpdateStringIter(); this->UpdateCaretPosition(); this->UpdateMarkedText(); } } /** * Discard any marked text. * @param update Set to true if the internal state should be updated. */ void Textbuf::DiscardMarkedText(bool update) { if (this->markend == 0) return; this->DeleteText(this->markpos, this->markend, update); this->markpos = this->markend = this->markxoffs = this->marklength = 0; } /** Update the character iter after the text has changed. */ void Textbuf::UpdateStringIter() { this->char_iter->SetString(this->buf); size_t pos = this->char_iter->SetCurPosition(this->caretpos); this->caretpos = pos == StringIterator::END ? 0 : (uint16)pos; } /** Update pixel width of the text. */ void Textbuf::UpdateWidth() { this->pixels = GetStringBoundingBox(this->buf, FS_NORMAL).width; } /** Update pixel position of the caret. */ void Textbuf::UpdateCaretPosition() { this->caretxoffs = this->chars > 1 ? GetCharPosInString(this->buf, this->buf + this->caretpos, FS_NORMAL).x : 0; } /** Update pixel positions of the marked text area. */ void Textbuf::UpdateMarkedText() { if (this->markend != 0) { this->markxoffs = GetCharPosInString(this->buf, this->buf + this->markpos, FS_NORMAL).x; this->marklength = GetCharPosInString(this->buf, this->buf + this->markend, FS_NORMAL).x - this->markxoffs; } else { this->markxoffs = this->marklength = 0; } } /** * Handle text navigation with arrow keys left/right. * This defines where the caret will blink and the next character interaction will occur * @param keycode Direction in which navigation occurs (WKC_CTRL |) WKC_LEFT, (WKC_CTRL |) WKC_RIGHT, WKC_END, WKC_HOME * @return Return true on successful change of Textbuf, or false otherwise */ bool Textbuf::MovePos(uint16 keycode) { switch (keycode) { case WKC_LEFT: case WKC_CTRL | WKC_LEFT: { if (this->caretpos == 0) break; size_t pos = this->char_iter->Prev(keycode & WKC_CTRL ? StringIterator::ITER_WORD : StringIterator::ITER_CHARACTER); if (pos == StringIterator::END) return true; this->caretpos = (uint16)pos; this->UpdateCaretPosition(); return true; } case WKC_RIGHT: case WKC_CTRL | WKC_RIGHT: { if (this->caretpos >= this->bytes - 1) break; size_t pos = this->char_iter->Next(keycode & WKC_CTRL ? StringIterator::ITER_WORD : StringIterator::ITER_CHARACTER); if (pos == StringIterator::END) return true; this->caretpos = (uint16)pos; this->UpdateCaretPosition(); return true; } case WKC_HOME: this->caretpos = 0; this->char_iter->SetCurPosition(this->caretpos); this->UpdateCaretPosition(); return true; case WKC_END: this->caretpos = this->bytes - 1; this->char_iter->SetCurPosition(this->caretpos); this->UpdateCaretPosition(); return true; default: break; } return false; } /** * Initialize the textbuffer by supplying it the buffer to write into * and the maximum length of this buffer * @param buf the buffer that will be holding the data for input * @param max_bytes maximum size in bytes, including terminating '\0' * @param max_chars maximum size in chars, including terminating '\0' */ Textbuf::Textbuf(uint16 max_bytes, uint16 max_chars) : buf(MallocT(max_bytes)) { assert(max_bytes != 0); assert(max_chars != 0); this->char_iter = StringIterator::Create(); this->afilter = CS_ALPHANUMERAL; this->max_bytes = max_bytes; this->max_chars = max_chars == UINT16_MAX ? max_bytes : max_chars; this->caret = true; this->DeleteAll(); } Textbuf::~Textbuf() { delete this->char_iter; free(this->buf); } /** * Render a string into the textbuffer. * @param string String */ void Textbuf::Assign(StringID string) { GetString(this->buf, string, &this->buf[this->max_bytes - 1]); this->UpdateSize(); } /** * Copy a string into the textbuffer. * @param text Source. */ void Textbuf::Assign(const char *text) { ttd_strlcpy(this->buf, text, this->max_bytes); this->UpdateSize(); } /** * Print a formatted string into the textbuffer. */ void Textbuf::Print(const char *format, ...) { va_list va; va_start(va, format); vsnprintf(this->buf, this->max_bytes, format, va); va_end(va); this->UpdateSize(); } /** * Update Textbuf type with its actual physical character and screenlength * Get the count of characters in the string as well as the width in pixels. * Useful when copying in a larger amount of text at once */ void Textbuf::UpdateSize() { const char *buf = this->buf; this->chars = this->bytes = 1; // terminating zero WChar c; while ((c = Utf8Consume(&buf)) != '\0') { this->bytes += Utf8CharLen(c); this->chars++; } assert(this->bytes <= this->max_bytes); assert(this->chars <= this->max_chars); this->caretpos = this->bytes - 1; this->UpdateStringIter(); this->UpdateWidth(); this->UpdateMarkedText(); this->UpdateCaretPosition(); } /** * Handle the flashing of the caret. * @return True if the caret state changes. */ bool Textbuf::HandleCaret() { /* caret changed? */ bool b = !!(_caret_timer & 0x20); if (b != this->caret) { this->caret = b; return true; } return false; } HandleKeyPressResult Textbuf::HandleKeyPress(WChar key, uint16 keycode) { bool edited = false; switch (keycode) { case WKC_ESC: return HKPR_CANCEL; case WKC_RETURN: case WKC_NUM_ENTER: return HKPR_CONFIRM; #ifdef WITH_COCOA case (WKC_META | 'V'): #endif case (WKC_CTRL | 'V'): edited = this->InsertClipboard(); break; #ifdef WITH_COCOA case (WKC_META | 'U'): #endif case (WKC_CTRL | 'U'): this->DeleteAll(); edited = true; break; case WKC_BACKSPACE: case WKC_DELETE: case WKC_CTRL | WKC_BACKSPACE: case WKC_CTRL | WKC_DELETE: edited = this->DeleteChar(keycode); break; case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME: case WKC_CTRL | WKC_LEFT: case WKC_CTRL | WKC_RIGHT: this->MovePos(keycode); break; default: if (IsValidChar(key, this->afilter)) { edited = this->InsertChar(key); } else { return HKPR_NOT_HANDLED; } break; } return edited ? HKPR_EDITING : HKPR_CURSOR; } openttd-1.3.3/src/company_base.h0000644000000000000000000001646012246102611015273 0ustar rootroot/* $Id: company_base.h 24619 2012-10-20 22:05:26Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file company_base.h Definition of stuff that is very close to a company, like the company struct itself. */ #ifndef COMPANY_BASE_H #define COMPANY_BASE_H #include "road_type.h" #include "livery.h" #include "autoreplace_type.h" #include "tile_type.h" #include "settings_type.h" #include "group.h" /** Statistics about the economy. */ struct CompanyEconomyEntry { Money income; ///< The amount of income. Money expenses; ///< The amount of expenses. CargoArray delivered_cargo; ///< The amount of delivered cargo. int32 performance_history; ///< Company score (scale 0-1000) Money company_value; ///< The value of the company. }; struct CompanyInfrastructure { uint32 road[ROADTYPE_END]; ///< Count of company owned track bits for each road type. uint32 signal; ///< Count of company owned signals. uint32 rail[RAILTYPE_END]; ///< Count of company owned track bits for each rail type. uint32 water; ///< Count of company owned track bits for canals. uint32 station; ///< Count of company owned station tiles. uint32 airport; ///< Count of company owned airports. /** Get total sum of all owned track bits. */ uint32 GetRailTotal() const { uint32 total = 0; for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) total += this->rail[rt]; return total; } }; typedef Pool CompanyPool; extern CompanyPool _company_pool; /** Statically loadable part of Company pool item */ struct CompanyProperties { uint32 name_2; ///< Parameter of #name_1. uint16 name_1; ///< Name of the company if the user did not change it. char *name; ///< Name of the company if the user changed it. uint16 president_name_1; ///< Name of the president if the user did not change it. uint32 president_name_2; ///< Parameter of #president_name_1 char *president_name; ///< Name of the president if the user changed it. CompanyManagerFace face; ///< Face description of the president. Money money; ///< Money owned by the company. byte money_fraction; ///< Fraction of money of the company, too small to represent in #money. Money current_loan; ///< Amount of money borrowed from the bank. byte colour; ///< Company colour. RailTypes avail_railtypes; ///< Rail types available to the company. byte block_preview; ///< Number of quarters that the company is not allowed to get new exclusive engine previews (see CompaniesGenStatistics). TileIndex location_of_HQ; ///< Northern tile of HQ; #INVALID_TILE when there is none. TileIndex last_build_coordinate; ///< Coordinate of the last build thing by this company. OwnerByte share_owners[4]; ///< Owners of the 4 shares of the company. #INVALID_OWNER if nobody has bought them yet. Year inaugurated_year; ///< Year of starting the company. byte months_of_bankruptcy; ///< Number of months that the company is unable to pay its debts CompanyMask bankrupt_asked; ///< which companies were asked about buying it? int16 bankrupt_timeout; ///< If bigger than \c 0, amount of time to wait for an answer on an offer to buy this company. Money bankrupt_value; uint32 terraform_limit; ///< Amount of tileheights we can (still) terraform (times 65536). uint32 clear_limit; ///< Amount of tiles we can (still) clear (times 65536). uint32 tree_limit; ///< Amount of trees we can (still) plant (times 65536). /** * If \c true, the company is (also) controlled by the computer (a NoAI program). * @note It is possible that the user is also participating in such a company. */ bool is_ai; Money yearly_expenses[3][EXPENSES_END]; ///< Expenses of the company for the last three years, in every #Expenses category. CompanyEconomyEntry cur_economy; ///< Economic data of the company of this quarter. CompanyEconomyEntry old_economy[MAX_HISTORY_QUARTERS]; ///< Economic data of the company of the last #MAX_HISTORY_QUARTERS quarters. byte num_valid_stat_ent; ///< Number of valid statistical entries in #old_economy. CompanyProperties() : name(NULL), president_name(NULL) {} ~CompanyProperties() { free(this->name); free(this->president_name); } }; struct Company : CompanyPool::PoolItem<&_company_pool>, CompanyProperties { Company(uint16 name_1 = 0, bool is_ai = false); ~Company(); Livery livery[LS_END]; RoadTypes avail_roadtypes; ///< Road types available to this company. class AIInstance *ai_instance; class AIInfo *ai_info; EngineRenewList engine_renew_list; ///< Engine renewals of this company. CompanySettings settings; ///< settings specific for each company GroupStatistics group_all[VEH_COMPANY_END]; ///< NOSAVE: Statistics for the ALL_GROUP group. GroupStatistics group_default[VEH_COMPANY_END]; ///< NOSAVE: Statistics for the DEFAULT_GROUP group. CompanyInfrastructure infrastructure; ///< NOSAVE: Counts of company owned infrastructure. /** * Is this company a valid company, controlled by the computer (a NoAI program)? * @param index Index in the pool. * @return \c true if it is a valid, computer controlled company, else \c false. */ static inline bool IsValidAiID(size_t index) { const Company *c = Company::GetIfValid(index); return c != NULL && c->is_ai; } /** * Is this company a valid company, not controlled by a NoAI program? * @param index Index in the pool. * @return \c true if it is a valid, human controlled company, else \c false. * @note If you know that \a index refers to a valid company, you can use #IsHumanID() instead. */ static inline bool IsValidHumanID(size_t index) { const Company *c = Company::GetIfValid(index); return c != NULL && !c->is_ai; } /** * Is this company a company not controlled by a NoAI program? * @param index Index in the pool. * @return \c true if it is a human controlled company, else \c false. * @pre \a index must be a valid CompanyID. * @note If you don't know whether \a index refers to a valid company, you should use #IsValidHumanID() instead. */ static inline bool IsHumanID(size_t index) { return !Company::Get(index)->is_ai; } static void PostDestructor(size_t index); }; #define FOR_ALL_COMPANIES_FROM(var, start) FOR_ALL_ITEMS_FROM(Company, company_index, var, start) #define FOR_ALL_COMPANIES(var) FOR_ALL_COMPANIES_FROM(var, 0) Money CalculateCompanyValue(const Company *c, bool including_loan = true); extern uint _next_competitor_start; extern uint _cur_company_tick_index; #endif /* COMPANY_BASE_H */ openttd-1.3.3/src/ship_gui.cpp0000644000000000000000000000577012246102611014777 0ustar rootroot/* $Id: ship_gui.cpp 25500 2013-06-28 19:29:08Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ship_gui.cpp GUI for ships. */ #include "stdafx.h" #include "vehicle_base.h" #include "window_gui.h" #include "gfx_func.h" #include "vehicle_gui.h" #include "strings_func.h" #include "vehicle_func.h" #include "spritecache.h" #include "zoom_func.h" #include "table/strings.h" /** * Draws an image of a ship * @param v Front vehicle * @param left The minimum horizontal position * @param right The maximum horizontal position * @param y Vertical position to draw at * @param selection Selected vehicle to draw a frame around */ void DrawShipImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type) { bool rtl = _current_text_dir == TD_RTL; SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); int width = UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI); int x_offs = UnScaleByZoom(real_sprite->x_offs, ZOOM_LVL_GUI); int x = rtl ? right - width - x_offs : left - x_offs; DrawSprite(sprite, GetVehiclePalette(v), x, y + 10); if (v->index == selection) { x += x_offs; y += UnScaleByZoom(real_sprite->y_offs, ZOOM_LVL_GUI) + 10; DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleByZoom(real_sprite->height, ZOOM_LVL_GUI) + 1, COLOUR_WHITE, FR_BORDERONLY); } } /** * Draw the details for the given vehicle at the given position * * @param v current vehicle * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate */ void DrawShipDetails(const Vehicle *v, int left, int right, int y) { SetDParam(0, v->engine_type); SetDParam(1, v->build_year); SetDParam(2, v->value); DrawString(left, right, y, STR_VEHICLE_INFO_BUILT_VALUE); SetDParam(0, v->cargo_type); SetDParam(1, v->cargo_cap); SetDParam(4, GetCargoSubtypeText(v)); DrawString(left, right, y + FONT_HEIGHT_NORMAL, STR_VEHICLE_INFO_CAPACITY); StringID str = STR_VEHICLE_DETAILS_CARGO_EMPTY; if (!v->cargo.Empty()) { SetDParam(0, v->cargo_type); SetDParam(1, v->cargo.Count()); SetDParam(2, v->cargo.Source()); str = STR_VEHICLE_DETAILS_CARGO_FROM; } DrawString(left, right, y + 2 * FONT_HEIGHT_NORMAL + 1, str); /* Draw Transfer credits text */ SetDParam(0, v->cargo.FeederShare()); DrawString(left, right, y + 3 * FONT_HEIGHT_NORMAL + 3, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE); } openttd-1.3.3/src/vehicle_gui.cpp0000644000000000000000000030625012246102611015450 0ustar rootroot/* $Id: vehicle_gui.cpp 25992 2013-11-13 22:03:26Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file vehicle_gui.cpp The base GUI for all vehicles. */ #include "stdafx.h" #include "debug.h" #include "company_func.h" #include "gui.h" #include "textbuf_gui.h" #include "command_func.h" #include "vehicle_gui_base.h" #include "viewport_func.h" #include "newgrf_text.h" #include "newgrf_debug.h" #include "roadveh.h" #include "train.h" #include "aircraft.h" #include "depot_map.h" #include "group_gui.h" #include "strings_func.h" #include "vehicle_func.h" #include "autoreplace_gui.h" #include "string_func.h" #include "widgets/dropdown_func.h" #include "timetable.h" #include "articulated_vehicles.h" #include "spritecache.h" #include "core/geometry_func.hpp" #include "company_base.h" #include "engine_func.h" #include "station_base.h" #include "tilehighlight_func.h" #include "zoom_func.h" Sorting _sorting; static GUIVehicleList::SortFunction VehicleNumberSorter; static GUIVehicleList::SortFunction VehicleNameSorter; static GUIVehicleList::SortFunction VehicleAgeSorter; static GUIVehicleList::SortFunction VehicleProfitThisYearSorter; static GUIVehicleList::SortFunction VehicleProfitLastYearSorter; static GUIVehicleList::SortFunction VehicleCargoSorter; static GUIVehicleList::SortFunction VehicleReliabilitySorter; static GUIVehicleList::SortFunction VehicleMaxSpeedSorter; static GUIVehicleList::SortFunction VehicleModelSorter; static GUIVehicleList::SortFunction VehicleValueSorter; static GUIVehicleList::SortFunction VehicleLengthSorter; static GUIVehicleList::SortFunction VehicleTimeToLiveSorter; static GUIVehicleList::SortFunction VehicleTimetableDelaySorter; GUIVehicleList::SortFunction * const BaseVehicleListWindow::vehicle_sorter_funcs[] = { &VehicleNumberSorter, &VehicleNameSorter, &VehicleAgeSorter, &VehicleProfitThisYearSorter, &VehicleProfitLastYearSorter, &VehicleCargoSorter, &VehicleReliabilitySorter, &VehicleMaxSpeedSorter, &VehicleModelSorter, &VehicleValueSorter, &VehicleLengthSorter, &VehicleTimeToLiveSorter, &VehicleTimetableDelaySorter, }; const StringID BaseVehicleListWindow::vehicle_sorter_names[] = { STR_SORT_BY_NUMBER, STR_SORT_BY_NAME, STR_SORT_BY_AGE, STR_SORT_BY_PROFIT_THIS_YEAR, STR_SORT_BY_PROFIT_LAST_YEAR, STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE, STR_SORT_BY_RELIABILITY, STR_SORT_BY_MAX_SPEED, STR_SORT_BY_MODEL, STR_SORT_BY_VALUE, STR_SORT_BY_LENGTH, STR_SORT_BY_LIFE_TIME, STR_SORT_BY_TIMETABLE_DELAY, INVALID_STRING_ID }; const StringID BaseVehicleListWindow::vehicle_depot_name[] = { STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT, STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT, STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT, STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR }; void BaseVehicleListWindow::BuildVehicleList() { if (!this->vehicles.NeedRebuild()) return; DEBUG(misc, 3, "Building vehicle list type %d for company %d given index %d", this->vli.type, this->vli.company, this->vli.index); GenerateVehicleSortList(&this->vehicles, this->vli); uint unitnumber = 0; for (const Vehicle **v = this->vehicles.Begin(); v != this->vehicles.End(); v++) { unitnumber = max(unitnumber, (*v)->unitnumber); } /* Because 111 is much less wide than e.g. 999 we use the * wider numbers to determine the width instead of just * the random number that it seems to be. */ if (unitnumber >= 1000) { this->unitnumber_digits = 4; } else if (unitnumber >= 100) { this->unitnumber_digits = 3; } else { this->unitnumber_digits = 2; } this->vehicles.RebuildDone(); this->vscroll->SetCount(this->vehicles.Length()); } /** * Compute the size for the Action dropdown. * @param show_autoreplace If true include the autoreplace item. * @param show_group If true include group-related stuff. * @return Required size. */ Dimension BaseVehicleListWindow::GetActionDropdownSize(bool show_autoreplace, bool show_group) { Dimension d = {0, 0}; if (show_autoreplace) d = maxdim(d, GetStringBoundingBox(STR_VEHICLE_LIST_REPLACE_VEHICLES)); d = maxdim(d, GetStringBoundingBox(STR_VEHICLE_LIST_SEND_FOR_SERVICING)); d = maxdim(d, GetStringBoundingBox(this->vehicle_depot_name[this->vli.vtype])); if (show_group) { d = maxdim(d, GetStringBoundingBox(STR_GROUP_ADD_SHARED_VEHICLE)); d = maxdim(d, GetStringBoundingBox(STR_GROUP_REMOVE_ALL_VEHICLES)); } return d; } /** * Display the Action dropdown window. * @param show_autoreplace If true include the autoreplace item. * @param show_group If true include group-related stuff. * @return Itemlist for dropdown */ DropDownList *BaseVehicleListWindow::BuildActionDropdownList(bool show_autoreplace, bool show_group) { DropDownList *list = new DropDownList(); if (show_autoreplace) list->push_back(new DropDownListStringItem(STR_VEHICLE_LIST_REPLACE_VEHICLES, ADI_REPLACE, false)); list->push_back(new DropDownListStringItem(STR_VEHICLE_LIST_SEND_FOR_SERVICING, ADI_SERVICE, false)); list->push_back(new DropDownListStringItem(this->vehicle_depot_name[this->vli.vtype], ADI_DEPOT, false)); if (show_group) { list->push_back(new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE, ADI_ADD_SHARED, false)); list->push_back(new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, ADI_REMOVE_ALL, false)); } return list; } /* cached values for VehicleNameSorter to spare many GetString() calls */ static const Vehicle *_last_vehicle[2] = { NULL, NULL }; void BaseVehicleListWindow::SortVehicleList() { if (this->vehicles.Sort()) return; /* invalidate cached values for name sorter - vehicle names could change */ _last_vehicle[0] = _last_vehicle[1] = NULL; } void DepotSortList(VehicleList *list) { if (list->Length() < 2) return; QSortT(list->Begin(), list->Length(), &VehicleNumberSorter); } /** draw the vehicle profit button in the vehicle list window. */ static void DrawVehicleProfitButton(const Vehicle *v, int x, int y) { SpriteID spr; /* draw profit-based coloured icons */ if (v->age <= VEHICLE_PROFIT_MIN_AGE) { spr = SPR_PROFIT_NA; } else if (v->GetDisplayProfitLastYear() < 0) { spr = SPR_PROFIT_NEGATIVE; } else if (v->GetDisplayProfitLastYear() < VEHICLE_PROFIT_THRESHOLD) { spr = SPR_PROFIT_SOME; } else { spr = SPR_PROFIT_LOT; } DrawSprite(spr, PAL_NONE, x, y); } /** Maximum number of refit cycles we try, to prevent infinite loops. And we store only a byte anyway */ static const uint MAX_REFIT_CYCLE = 256; /** * Get the best fitting subtype when 'cloning'/'replacing' \a v_from with \a v_for. * All articulated parts of both vehicles are tested to find a possibly shared subtype. * For \a v_for only vehicle refittable to \a dest_cargo_type are considered. * @param v_from the vehicle to match the subtype from * @param v_for the vehicle to get the subtype for * @param dest_cargo_type Destination cargo type. * @return the best sub type */ byte GetBestFittingSubType(Vehicle *v_from, Vehicle *v_for, CargoID dest_cargo_type) { v_from = v_from->GetFirstEnginePart(); v_for = v_for->GetFirstEnginePart(); /* Create a list of subtypes used by the various parts of v_for */ static SmallVector subtypes; subtypes.Clear(); for (; v_from != NULL; v_from = v_from->HasArticulatedPart() ? v_from->GetNextArticulatedPart() : NULL) { const Engine *e_from = v_from->GetEngine(); if (!e_from->CanCarryCargo() || !HasBit(e_from->info.callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) continue; subtypes.Include(GetCargoSubtypeText(v_from)); } byte ret_refit_cyc = 0; bool success = false; if (subtypes.Length() > 0) { /* Check whether any articulated part is refittable to 'dest_cargo_type' with a subtype listed in 'subtypes' */ for (Vehicle *v = v_for; v != NULL; v = v->HasArticulatedPart() ? v->GetNextArticulatedPart() : NULL) { const Engine *e = v->GetEngine(); if (!e->CanCarryCargo() || !HasBit(e->info.callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) continue; if (!HasBit(e->info.refit_mask, dest_cargo_type) && v->cargo_type != dest_cargo_type) continue; CargoID old_cargo_type = v->cargo_type; byte old_cargo_subtype = v->cargo_subtype; /* Set the 'destination' cargo */ v->cargo_type = dest_cargo_type; /* Cycle through the refits */ for (uint refit_cyc = 0; refit_cyc < MAX_REFIT_CYCLE; refit_cyc++) { v->cargo_subtype = refit_cyc; /* Make sure we don't pick up anything cached. */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); uint16 callback = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v); if (callback != CALLBACK_FAILED) { if (callback > 0x400) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_CARGO_SUFFIX, callback); if (callback >= 0x400 || (v->GetGRF()->grf_version < 8 && callback == 0xFF)) callback = CALLBACK_FAILED; } if (callback == CALLBACK_FAILED) break; if (!subtypes.Contains(GetCargoSubtypeText(v))) continue; /* We found something matching. */ ret_refit_cyc = refit_cyc; success = true; break; } /* Reset the vehicle's cargo type */ v->cargo_type = old_cargo_type; v->cargo_subtype = old_cargo_subtype; /* Make sure we don't taint the vehicle. */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); if (success) break; } } return ret_refit_cyc; } /** Option to refit a vehicle chain */ struct RefitOption { CargoID cargo; ///< Cargo to refit to byte subtype; ///< Subcargo to use uint16 value; ///< GRF-local String to display for the cargo const Engine *engine; ///< Engine for which to resolve #value /** * Inequality operator for #RefitOption. * @param other Compare to this #RefitOption. * @return True if both #RefitOption are different. */ inline bool operator != (const RefitOption &other) const { return other.cargo != this->cargo || other.value != this->value; } /** * Equality operator for #RefitOption. * @param other Compare to this #RefitOption. * @return True if both #RefitOption are equal. */ inline bool operator == (const RefitOption &other) const { return other.cargo == this->cargo && other.value == this->value; } }; typedef SmallVector SubtypeList; ///< List of refit subtypes associated to a cargo. /** * Draw the list of available refit options for a consist and highlight the selected refit option (if any). * @param list List of subtype options for each (sorted) cargo. * @param sel Selected refit cargo-type in the window * @param pos Position of the selected item in caller widow * @param rows Number of rows(capacity) in caller window * @param delta Step height in caller window * @param r Rectangle of the matrix widget. */ static void DrawVehicleRefitWindow(const SubtypeList list[NUM_CARGO], int sel, uint pos, uint rows, uint delta, const Rect &r) { uint y = r.top + WD_MATRIX_TOP; uint current = 0; /* Draw the list of subtypes for each cargo, and find the selected refit option (by its position). */ for (uint i = 0; current < pos + rows && i < NUM_CARGO; i++) { for (uint j = 0; current < pos + rows && j < list[i].Length(); j++) { /* Refit options with a position smaller than pos don't have to be drawn. */ if (current < pos) { current++; continue; } TextColour colour = (sel == (int)current) ? TC_WHITE : TC_BLACK; const RefitOption refit = list[i][j]; /* Get the cargo name. */ SetDParam(0, CargoSpec::Get(refit.cargo)->name); /* If the callback succeeded, draw the cargo suffix. */ if (refit.value != CALLBACK_FAILED && refit.value < 0x400) { SetDParam(1, GetGRFStringID(refit.engine->GetGRFID(), 0xD000 + refit.value)); DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y, STR_JUST_STRING_STRING, colour); } else { DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y, STR_JUST_STRING, colour); } y += delta; current++; } } } /** Refit cargo window. */ struct RefitWindow : public Window { int sel; ///< Index in refit options, \c -1 if nothing is selected. RefitOption *cargo; ///< Refit option selected by #sel. SubtypeList list[NUM_CARGO]; ///< List of refit subtypes available for each sorted cargo. VehicleOrderID order; ///< If not #INVALID_VEH_ORDER_ID, selection is part of a refit order (rather than execute directly). uint information_width; ///< Width required for correctly displaying all cargoes in the information panel. Scrollbar *vscroll; ///< The main scrollbar. Scrollbar *hscroll; ///< Only used for long vehicles. int vehicle_width; ///< Width of the vehicle being drawn. int sprite_left; ///< Left position of the vehicle sprite. int sprite_right; ///< Right position of the vehicle sprite. uint vehicle_margin; ///< Margin to use while selecting vehicles when the vehicle image is centered. int click_x; ///< Position of the first click while dragging. VehicleID selected_vehicle; ///< First vehicle in the current selection. uint8 num_vehicles; ///< Number of selected vehicles. bool auto_refit; ///< Select cargo for auto-refitting. /** * Collects all (cargo, subcargo) refit options of a vehicle chain. */ void BuildRefitList() { for (uint i = 0; i < NUM_CARGO; i++) this->list[i].Clear(); Vehicle *v = Vehicle::Get(this->window_number); /* Check only the selected vehicles. */ VehicleSet vehicles_to_refit; GetVehicleSet(vehicles_to_refit, Vehicle::Get(this->selected_vehicle), this->num_vehicles); do { if (v->type == VEH_TRAIN && !vehicles_to_refit.Contains(v->index)) continue; const Engine *e = v->GetEngine(); uint32 cmask = e->info.refit_mask; byte callback_mask = e->info.callback_mask; /* Skip this engine if it does not carry anything */ if (!e->CanCarryCargo()) continue; /* Skip this engine if we build the list for auto-refitting and engine doesn't allow it. */ if (this->auto_refit && !HasBit(e->info.misc_flags, EF_AUTO_REFIT)) continue; /* Loop through all cargoes in the refit mask */ int current_index = 0; const CargoSpec *cs; FOR_ALL_SORTED_CARGOSPECS(cs) { CargoID cid = cs->Index(); /* Skip cargo type if it's not listed */ if (!HasBit(cmask, cid)) { current_index++; continue; } /* Check the vehicle's callback mask for cargo suffixes */ if (HasBit(callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) { /* Make a note of the original cargo type. It has to be * changed to test the cargo & subtype... */ CargoID temp_cargo = v->cargo_type; byte temp_subtype = v->cargo_subtype; v->cargo_type = cid; for (uint refit_cyc = 0; refit_cyc < MAX_REFIT_CYCLE; refit_cyc++) { v->cargo_subtype = refit_cyc; /* Make sure we don't pick up anything cached. */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); uint16 callback = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v); if (callback != CALLBACK_FAILED) { if (callback > 0x400) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_CARGO_SUFFIX, callback); if (callback >= 0x400 || (v->GetGRF()->grf_version < 8 && callback == 0xFF)) callback = CALLBACK_FAILED; } if (refit_cyc != 0 && callback == CALLBACK_FAILED) break; RefitOption option; option.cargo = cid; option.subtype = refit_cyc; option.value = callback; option.engine = v->GetEngine(); this->list[current_index].Include(option); } /* Reset the vehicle's cargo type */ v->cargo_type = temp_cargo; v->cargo_subtype = temp_subtype; /* And make sure we haven't tainted the cache */ v->First()->InvalidateNewGRFCache(); v->InvalidateNewGRFCache(); } else { /* No cargo suffix callback -- use no subtype */ RefitOption option; option.cargo = cid; option.subtype = 0; option.value = CALLBACK_FAILED; option.engine = NULL; this->list[current_index].Include(option); } current_index++; } } while (v->IsGroundVehicle() && (v = v->Next()) != NULL); int scroll_size = 0; for (uint i = 0; i < NUM_CARGO; i++) { scroll_size += (this->list[i].Length()); } this->vscroll->SetCount(scroll_size); } /** * Gets the #RefitOption placed in the selected index. * @return Pointer to the #RefitOption currently in use. */ RefitOption *GetRefitOption() { if (this->sel < 0) return NULL; int subtype = 0; for (uint i = 0; subtype <= this->sel && i < NUM_CARGO; i++) { for (uint j = 0; subtype <= this->sel && j < this->list[i].Length(); j++) { if (subtype == this->sel) { return &this->list[i][j]; } subtype++; } } return NULL; } RefitWindow(const WindowDesc *desc, const Vehicle *v, VehicleOrderID order, bool auto_refit) : Window() { this->sel = -1; this->auto_refit = auto_refit; this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_VR_SCROLLBAR); this->hscroll = (v->IsGroundVehicle() ? this->GetScrollbar(WID_VR_HSCROLLBAR) : NULL); this->GetWidget(WID_VR_SELECT_HEADER)->tool_tip = STR_REFIT_TRAIN_LIST_TOOLTIP + v->type; this->GetWidget(WID_VR_MATRIX)->tool_tip = STR_REFIT_TRAIN_LIST_TOOLTIP + v->type; NWidgetCore *nwi = this->GetWidget(WID_VR_REFIT); nwi->widget_data = STR_REFIT_TRAIN_REFIT_BUTTON + v->type; nwi->tool_tip = STR_REFIT_TRAIN_REFIT_TOOLTIP + v->type; this->GetWidget(WID_VR_SHOW_HSCROLLBAR)->SetDisplayedPlane(v->IsGroundVehicle() ? 0 : SZSP_HORIZONTAL); this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY)->tool_tip = (v->type == VEH_TRAIN) ? STR_REFIT_SELECT_VEHICLES_TOOLTIP : STR_NULL; this->FinishInitNested(desc, v->index); this->owner = v->owner; this->order = order; this->SetWidgetDisabledState(WID_VR_REFIT, this->sel == -1); } virtual void OnInit() { if (this->cargo != NULL) { /* Store the RefitOption currently in use. */ RefitOption current_refit_option = *(this->cargo); /* Rebuild the refit list */ this->BuildRefitList(); this->sel = -1; this->cargo = NULL; int current = 0; for (uint i = 0; this->cargo == NULL && i < NUM_CARGO; i++) { for (uint j = 0; j < list[i].Length(); j++) { if (list[i][j] == current_refit_option) { this->sel = current; this->cargo = &list[i][j]; this->vscroll->ScrollTowards(current); break; } current++; } } this->SetWidgetDisabledState(WID_VR_REFIT, this->sel == -1); /* If the selected refit option was not found, scroll the window to the initial position. */ if (this->sel == -1) this->vscroll->ScrollTowards(0); } else { /* Rebuild the refit list */ this->OnInvalidateData(VIWD_CONSIST_CHANGED); } } virtual void OnPaint() { /* Determine amount of items for scroller. */ if (this->hscroll != NULL) this->hscroll->SetCount(this->vehicle_width); /* Calculate sprite position. */ NWidgetCore *vehicle_panel_display = this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY); int sprite_width = max(0, ((int)vehicle_panel_display->current_x - this->vehicle_width) / 2); this->sprite_left = vehicle_panel_display->pos_x; this->sprite_right = vehicle_panel_display->pos_x + vehicle_panel_display->current_x - 1; if (_current_text_dir == TD_RTL) { this->sprite_right -= sprite_width; this->vehicle_margin = vehicle_panel_display->current_x - sprite_right; } else { this->sprite_left += sprite_width; this->vehicle_margin = sprite_left; } this->DrawWidgets(); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_VR_MATRIX: resize->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; size->height = resize->height * 8; break; case WID_VR_VEHICLE_PANEL_DISPLAY: size->height = GetVehicleHeight(Vehicle::Get(this->window_number)->type); break; case WID_VR_INFO: size->width = WD_FRAMERECT_LEFT + this->information_width + WD_FRAMERECT_RIGHT; break; } } virtual void SetStringParameters(int widget) const { if (widget == WID_VR_CAPTION) SetDParam(0, Vehicle::Get(this->window_number)->index); } /** * Gets the #StringID to use for displaying capacity. * @param Cargo and cargo subtype to check for capacity. * @return INVALID_STRING_ID if there is no capacity. StringID to use in any other case. * @post String parameters have been set. */ StringID GetCapacityString(RefitOption *option) const { assert(_current_company == _local_company); Vehicle *v = Vehicle::Get(this->window_number); CommandCost cost = DoCommand(v->tile, this->selected_vehicle, option->cargo | (int)this->auto_refit << 6 | option->subtype << 8 | this->num_vehicles << 16, DC_QUERY_COST, GetCmdRefitVeh(v->type)); if (cost.Failed()) return INVALID_STRING_ID; SetDParam(0, option->cargo); SetDParam(1, _returned_refit_capacity); Money money = cost.GetCost(); if (_returned_mail_refit_capacity > 0) { SetDParam(2, CT_MAIL); SetDParam(3, _returned_mail_refit_capacity); if (money <= 0) { SetDParam(4, -money); return STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT; } else { SetDParam(4, money); return STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT; } } else { if (money <= 0) { SetDParam(2, -money); return STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT; } else { SetDParam(2, money); return STR_REFIT_NEW_CAPACITY_COST_OF_REFIT; } } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_VR_VEHICLE_PANEL_DISPLAY: { Vehicle *v = Vehicle::Get(this->window_number); DrawVehicleImage(v, this->sprite_left + WD_FRAMERECT_LEFT, this->sprite_right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, INVALID_VEHICLE, EIT_IN_DETAILS, this->hscroll != NULL ? this->hscroll->GetPosition() : 0); /* Highlight selected vehicles. */ if (this->order != INVALID_VEH_ORDER_ID) break; int x = 0; switch (v->type) { case VEH_TRAIN: { VehicleSet vehicles_to_refit; GetVehicleSet(vehicles_to_refit, Vehicle::Get(this->selected_vehicle), this->num_vehicles); int left = INT32_MIN; int width = 0; for (Train *u = Train::From(v); u != NULL; u = u->Next()) { /* Start checking. */ if (vehicles_to_refit.Contains(u->index) && left == INT32_MIN) { left = x - this->hscroll->GetPosition() + r.left + this->vehicle_margin; width = 0; } /* Draw a selection. */ if ((!vehicles_to_refit.Contains(u->index) || u->Next() == NULL) && left != INT32_MIN) { if (u->Next() == NULL && vehicles_to_refit.Contains(u->index)) { int current_width = u->GetDisplayImageWidth(); width += current_width; x += current_width; } int right = Clamp(left + width, 0, r.right); left = max(0, left); if (_current_text_dir == TD_RTL) { right = this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY)->current_x - left; left = right - width; } if (left != right) { DrawFrameRect(left, r.top + WD_FRAMERECT_TOP, right, r.top + WD_FRAMERECT_TOP + 13, COLOUR_WHITE, FR_BORDERONLY); } left = INT32_MIN; } int current_width = u->GetDisplayImageWidth(); width += current_width; x += current_width; } break; } default: break; } break; } case WID_VR_MATRIX: DrawVehicleRefitWindow(this->list, this->sel, this->vscroll->GetPosition(), this->vscroll->GetCapacity(), this->resize.step_height, r); break; case WID_VR_INFO: if (this->cargo != NULL) { StringID string = this->GetCapacityString(this->cargo); if (string != INVALID_STRING_ID) { DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM, string); } } break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { switch (data) { case VIWD_AUTOREPLACE: // Autoreplace replaced the vehicle; selected_vehicle became invalid. case VIWD_CONSIST_CHANGED: { // The consist has changed; rebuild the entire list. /* Clear the selection. */ Vehicle *v = Vehicle::Get(this->window_number); this->selected_vehicle = v->index; this->num_vehicles = UINT8_MAX; /* FALL THROUGH */ } case 2: { // The vehicle selection has changed; rebuild the entire list. if (!gui_scope) break; this->BuildRefitList(); /* The vehicle width has changed too. */ this->vehicle_width = GetVehicleWidth(Vehicle::Get(this->window_number), EIT_IN_DETAILS); uint max_width = 0; /* Check the width of all cargo information strings. */ for (uint i = 0; i < NUM_CARGO; i++) { for (uint j = 0; j < this->list[i].Length(); j++) { StringID string = this->GetCapacityString(&list[i][j]); if (string != INVALID_STRING_ID) { Dimension dim = GetStringBoundingBox(string); max_width = max(dim.width, max_width); } } } if (this->information_width < max_width) { this->information_width = max_width; this->ReInit(); } /* FALL THROUGH */ } case 1: // A new cargo has been selected. if (!gui_scope) break; this->cargo = GetRefitOption(); break; } } int GetClickPosition(int click_x) { const NWidgetCore *matrix_widget = this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY); if (_current_text_dir == TD_RTL) click_x = matrix_widget->current_x - click_x; click_x -= this->vehicle_margin; if (this->hscroll != NULL) click_x += this->hscroll->GetPosition(); return click_x; } void SetSelectedVehicles(int drag_x) { drag_x = GetClickPosition(drag_x); int left_x = min(this->click_x, drag_x); int right_x = max(this->click_x, drag_x); this->num_vehicles = 0; Vehicle *v = Vehicle::Get(this->window_number); /* Find the vehicle part that was clicked. */ switch (v->type) { case VEH_TRAIN: { /* Don't select anything if we are not clicking in the vehicle. */ if (left_x >= 0) { const Train *u = Train::From(v); bool start_counting = false; for (; u != NULL; u = u->Next()) { int current_width = u->GetDisplayImageWidth(); left_x -= current_width; right_x -= current_width; if (left_x < 0 && !start_counting) { this->selected_vehicle = u->index; start_counting = true; /* Count the first vehicle, even if articulated part */ this->num_vehicles++; } else if (start_counting && !u->IsArticulatedPart()) { /* Do not count articulated parts */ this->num_vehicles++; } if (right_x < 0) break; } } /* If the selection is not correct, clear it. */ if (this->num_vehicles != 0) { if (_ctrl_pressed) this->num_vehicles = UINT8_MAX; break; } /* FALL THROUGH */ } default: /* Clear the selection. */ this->selected_vehicle = v->index; this->num_vehicles = UINT8_MAX; break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_VR_VEHICLE_PANEL_DISPLAY: { // Vehicle image. if (this->order != INVALID_VEH_ORDER_ID) break; NWidgetBase *nwi = this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY); this->click_x = GetClickPosition(pt.x - nwi->pos_x); this->SetSelectedVehicles(pt.x - nwi->pos_x); this->SetWidgetDirty(WID_VR_VEHICLE_PANEL_DISPLAY); if (!_ctrl_pressed) { SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); } else { /* The vehicle selection has changed. */ this->InvalidateData(2); } break; } case WID_VR_MATRIX: { // listbox this->sel = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_VR_MATRIX); if (this->sel == INT_MAX) this->sel = -1; this->SetWidgetDisabledState(WID_VR_REFIT, this->sel == -1); this->InvalidateData(1); if (click_count == 1) break; /* FALL THROUGH */ } case WID_VR_REFIT: // refit button if (this->cargo != NULL) { const Vehicle *v = Vehicle::Get(this->window_number); if (this->order == INVALID_VEH_ORDER_ID) { bool delete_window = this->selected_vehicle == v->index && this->num_vehicles == UINT8_MAX; if (DoCommandP(v->tile, this->selected_vehicle, this->cargo->cargo | this->cargo->subtype << 8 | this->num_vehicles << 16, GetCmdRefitVeh(v)) && delete_window) delete this; } else { if (DoCommandP(v->tile, v->index, this->cargo->cargo | this->cargo->subtype << 8 | this->order << 16, CMD_ORDER_REFIT)) delete this; } } break; } } virtual void OnMouseDrag(Point pt, int widget) { switch (widget) { case WID_VR_VEHICLE_PANEL_DISPLAY: { // Vehicle image. if (this->order != INVALID_VEH_ORDER_ID) break; NWidgetBase *nwi = this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY); this->SetSelectedVehicles(pt.x - nwi->pos_x); this->SetWidgetDirty(WID_VR_VEHICLE_PANEL_DISPLAY); break; } } } virtual void OnDragDrop(Point pt, int widget) { switch (widget) { case WID_VR_VEHICLE_PANEL_DISPLAY: { // Vehicle image. if (this->order != INVALID_VEH_ORDER_ID) break; NWidgetBase *nwi = this->GetWidget(WID_VR_VEHICLE_PANEL_DISPLAY); this->SetSelectedVehicles(pt.x - nwi->pos_x); this->InvalidateData(2); break; } } } virtual void OnResize() { this->vehicle_width = GetVehicleWidth(Vehicle::Get(this->window_number), EIT_IN_DETAILS); this->vscroll->SetCapacityFromWidget(this, WID_VR_MATRIX); if (this->hscroll != NULL) this->hscroll->SetCapacityFromWidget(this, WID_VR_VEHICLE_PANEL_DISPLAY); this->GetWidget(WID_VR_MATRIX)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } }; static const NWidgetPart _nested_vehicle_refit_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VR_CAPTION), SetDataTip(STR_REFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), /* Vehicle display + scrollbar. */ NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_VR_VEHICLE_PANEL_DISPLAY), SetMinimalSize(228, 14), SetResize(1, 0), SetScrollbar(WID_VR_HSCROLLBAR), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VR_SHOW_HSCROLLBAR), NWidget(NWID_HSCROLLBAR, COLOUR_GREY, WID_VR_HSCROLLBAR), EndContainer(), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_VR_SELECT_HEADER), SetDataTip(STR_REFIT_TITLE, STR_NULL), SetResize(1, 0), /* Matrix + scrollbar. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_VR_MATRIX), SetMinimalSize(228, 112), SetResize(1, 14), SetFill(1, 1), SetDataTip(0x801, STR_NULL), SetScrollbar(WID_VR_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VR_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VR_INFO), SetMinimalTextLines(2, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VR_REFIT), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; static const WindowDesc _vehicle_refit_desc( WDP_AUTO, 240, 174, WC_VEHICLE_REFIT, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_vehicle_refit_widgets, lengthof(_nested_vehicle_refit_widgets) ); /** * Show the refit window for a vehicle * @param *v The vehicle to show the refit window for * @param order of the vehicle ( ? ) * @param parent the parent window of the refit window * @param auto_refit Choose cargo for auto-refitting */ void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order, Window *parent, bool auto_refit) { DeleteWindowById(WC_VEHICLE_REFIT, v->index); RefitWindow *w = new RefitWindow(&_vehicle_refit_desc, v, order, auto_refit); w->parent = parent; } /** Display list of cargo types of the engine, for the purchase information window */ uint ShowRefitOptionsList(int left, int right, int y, EngineID engine) { /* List of cargo types of this engine */ uint32 cmask = GetUnionOfArticulatedRefitMasks(engine, false); /* List of cargo types available in this climate */ uint32 lmask = _cargo_mask; /* Draw nothing if the engine is not refittable */ if (HasAtMostOneBit(cmask)) return y; if (cmask == lmask) { /* Engine can be refitted to all types in this climate */ SetDParam(0, STR_PURCHASE_INFO_ALL_TYPES); } else { /* Check if we are able to refit to more cargo types and unable to. If * so, invert the cargo types to list those that we can't refit to. */ if (CountBits(cmask ^ lmask) < CountBits(cmask) && CountBits(cmask ^ lmask) <= 7) { cmask ^= lmask; SetDParam(0, STR_PURCHASE_INFO_ALL_BUT); } else { SetDParam(0, STR_JUST_CARGO_LIST); } SetDParam(1, cmask); } return DrawStringMultiLine(left, right, y, INT32_MAX, STR_PURCHASE_INFO_REFITTABLE_TO); } /** Get the cargo subtype text from NewGRF for the vehicle details window. */ StringID GetCargoSubtypeText(const Vehicle *v) { if (HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) { uint16 cb = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v); if (cb != CALLBACK_FAILED) { if (cb > 0x400) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_CARGO_SUFFIX, cb); if (cb >= 0x400 || (v->GetGRF()->grf_version < 8 && cb == 0xFF)) cb = CALLBACK_FAILED; } if (cb != CALLBACK_FAILED) { return GetGRFStringID(v->GetGRFID(), 0xD000 + cb); } } return STR_EMPTY; } /** Sort vehicles by their number */ static int CDECL VehicleNumberSorter(const Vehicle * const *a, const Vehicle * const *b) { return (*a)->unitnumber - (*b)->unitnumber; } /** Sort vehicles by their name */ static int CDECL VehicleNameSorter(const Vehicle * const *a, const Vehicle * const *b) { static char last_name[2][64]; if (*a != _last_vehicle[0]) { _last_vehicle[0] = *a; SetDParam(0, (*a)->index); GetString(last_name[0], STR_VEHICLE_NAME, lastof(last_name[0])); } if (*b != _last_vehicle[1]) { _last_vehicle[1] = *b; SetDParam(0, (*b)->index); GetString(last_name[1], STR_VEHICLE_NAME, lastof(last_name[1])); } int r = strnatcmp(last_name[0], last_name[1]); // Sort by name (natural sorting). return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by their age */ static int CDECL VehicleAgeSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = (*a)->age - (*b)->age; return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by this year profit */ static int CDECL VehicleProfitThisYearSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = ClampToI32((*a)->GetDisplayProfitThisYear() - (*b)->GetDisplayProfitThisYear()); return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by last year profit */ static int CDECL VehicleProfitLastYearSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = ClampToI32((*a)->GetDisplayProfitLastYear() - (*b)->GetDisplayProfitLastYear()); return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by their cargo */ static int CDECL VehicleCargoSorter(const Vehicle * const *a, const Vehicle * const *b) { const Vehicle *v; CargoArray diff; /* Append the cargo of the connected waggons */ for (v = *a; v != NULL; v = v->Next()) diff[v->cargo_type] += v->cargo_cap; for (v = *b; v != NULL; v = v->Next()) diff[v->cargo_type] -= v->cargo_cap; int r = 0; for (CargoID i = 0; i < NUM_CARGO; i++) { r = diff[i]; if (r != 0) break; } return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by their reliability */ static int CDECL VehicleReliabilitySorter(const Vehicle * const *a, const Vehicle * const *b) { int r = (*a)->reliability - (*b)->reliability; return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by their max speed */ static int CDECL VehicleMaxSpeedSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = (*a)->vcache.cached_max_speed - (*b)->vcache.cached_max_speed; return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by model */ static int CDECL VehicleModelSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = (*a)->engine_type - (*b)->engine_type; return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by their value */ static int CDECL VehicleValueSorter(const Vehicle * const *a, const Vehicle * const *b) { const Vehicle *u; Money diff = 0; for (u = *a; u != NULL; u = u->Next()) diff += u->value; for (u = *b; u != NULL; u = u->Next()) diff -= u->value; int r = ClampToI32(diff); return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by their length */ static int CDECL VehicleLengthSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = (*a)->GetGroundVehicleCache()->cached_total_length - (*b)->GetGroundVehicleCache()->cached_total_length; return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by the time they can still live */ static int CDECL VehicleTimeToLiveSorter(const Vehicle * const *a, const Vehicle * const *b) { int r = ClampToI32(((*a)->max_age - (*a)->age) - ((*b)->max_age - (*b)->age)); return (r != 0) ? r : VehicleNumberSorter(a, b); } /** Sort vehicles by the timetable delay */ static int CDECL VehicleTimetableDelaySorter(const Vehicle * const *a, const Vehicle * const *b) { int r = (*a)->lateness_counter - (*b)->lateness_counter; return (r != 0) ? r : VehicleNumberSorter(a, b); } void InitializeGUI() { MemSetT(&_sorting, 0); } /** * Assign a vehicle window a new vehicle * @param window_class WindowClass to search for * @param from_index the old vehicle ID * @param to_index the new vehicle ID */ static inline void ChangeVehicleWindow(WindowClass window_class, VehicleID from_index, VehicleID to_index) { Window *w = FindWindowById(window_class, from_index); if (w != NULL) { /* Update window_number */ w->window_number = to_index; if (w->viewport != NULL) w->viewport->follow_vehicle = to_index; /* Update vehicle drag data */ if (_thd.window_class == window_class && _thd.window_number == (WindowNumber)from_index) { _thd.window_number = to_index; } /* Notify the window. */ w->InvalidateData(VIWD_AUTOREPLACE, false); } } /** * Report a change in vehicle IDs (due to autoreplace) to affected vehicle windows. * @param from_index the old vehicle ID * @param to_index the new vehicle ID */ void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index) { ChangeVehicleWindow(WC_VEHICLE_VIEW, from_index, to_index); ChangeVehicleWindow(WC_VEHICLE_ORDERS, from_index, to_index); ChangeVehicleWindow(WC_VEHICLE_REFIT, from_index, to_index); ChangeVehicleWindow(WC_VEHICLE_DETAILS, from_index, to_index); ChangeVehicleWindow(WC_VEHICLE_TIMETABLE, from_index, to_index); } static const NWidgetPart _nested_vehicle_list[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VL_CAPTION), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VL_SORT_ORDER), SetMinimalSize(81, 12), SetFill(0, 1), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VL_SORT_BY_PULLDOWN), SetMinimalSize(167, 12), SetFill(0, 1), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA), NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(12, 12), SetFill(1, 1), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_VL_LIST), SetMinimalSize(248, 0), SetFill(1, 0), SetResize(1, 1), SetScrollbar(WID_VL_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VL_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VL_HIDE_BUTTONS), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VL_AVAILABLE_VEHICLES), SetMinimalSize(106, 12), SetFill(0, 1), SetDataTip(STR_BLACK_STRING, STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetResize(1, 0), SetFill(1, 1), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VL_MANAGE_VEHICLES_DROPDOWN), SetMinimalSize(118, 12), SetFill(0, 1), SetDataTip(STR_VEHICLE_LIST_MANAGE_LIST, STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VL_STOP_ALL), SetMinimalSize(12, 12), SetFill(0, 1), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VL_START_ALL), SetMinimalSize(12, 12), SetFill(0, 1), SetDataTip(SPR_FLAG_VEH_RUNNING, STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP), EndContainer(), /* Widget to be shown for other companies hiding the previous 5 widgets. */ NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; static void DrawSmallOrderList(const Vehicle *v, int left, int right, int y, VehicleOrderID start = 0) { const Order *order = v->GetOrder(start); if (order == NULL) return; int i = 0; VehicleOrderID oid = start; do { if (oid == v->cur_real_order_index) DrawString(left, right, y, STR_TINY_RIGHT_ARROW, TC_BLACK); if (order->IsType(OT_GOTO_STATION)) { SetDParam(0, order->GetDestination()); DrawString(left + 6, right - 6, y, STR_TINY_BLACK_STATION); y += FONT_HEIGHT_SMALL; if (++i == 4) break; } oid++; order = order->next; if (order == NULL) { order = v->orders.list->GetFirstOrder(); oid = 0; } } while (oid != start); } /** * Draws an image of a vehicle chain * @param v Front vehicle * @param left The minimum horizontal position * @param right The maximum horizontal position * @param y Vertical position to draw at * @param selection Selected vehicle to draw a frame around * @param skip Number of pixels to skip at the front (for scrolling) */ void DrawVehicleImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip) { switch (v->type) { case VEH_TRAIN: DrawTrainImage(Train::From(v), left, right, y, selection, image_type, skip); break; case VEH_ROAD: DrawRoadVehImage(v, left, right, y, selection, image_type, skip); break; case VEH_SHIP: DrawShipImage(v, left, right, y, selection, image_type); break; case VEH_AIRCRAFT: DrawAircraftImage(v, left, right, y, selection, image_type); break; default: NOT_REACHED(); } } /** * Get the height of a vehicle in the vehicle list GUIs. * @param type the vehicle type to look at * @param divisor the resulting height must be dividable by this * @return the height */ uint GetVehicleListHeight(VehicleType type, uint divisor) { /* Name + vehicle + profit */ uint base = GetVehicleHeight(type) + 2 * FONT_HEIGHT_SMALL; /* Drawing of the 4 small orders + profit*/ if (type >= VEH_SHIP) base = max(base, 5U * FONT_HEIGHT_SMALL); if (divisor == 1) return base; /* Make sure the height is dividable by divisor */ uint rem = base % divisor; return base + (rem == 0 ? 0 : divisor - rem); } /** * Draw all the vehicle list items. * @param selected_vehicle The vehicle that is to be highlighted. * @param line_height Height of a single item line. * @param r Rectangle with edge positions of the matrix widget. */ void BaseVehicleListWindow::DrawVehicleListItems(VehicleID selected_vehicle, int line_height, const Rect &r) const { int left = r.left + WD_MATRIX_LEFT; int right = r.right - WD_MATRIX_RIGHT; int width = right - left; bool rtl = _current_text_dir == TD_RTL; int text_offset = GetDigitWidth() * this->unitnumber_digits + WD_FRAMERECT_RIGHT; int text_left = left + (rtl ? 0 : text_offset); int text_right = right - (rtl ? text_offset : 0); bool show_orderlist = this->vli.vtype >= VEH_SHIP; int orderlist_left = left + (rtl ? 0 : max(100 + text_offset, width / 2)); int orderlist_right = right - (rtl ? max(100 + text_offset, width / 2) : 0); int image_left = (rtl && show_orderlist) ? orderlist_right : text_left; int image_right = (!rtl && show_orderlist) ? orderlist_left : text_right; int vehicle_button_x = rtl ? right - GetSpriteSize(SPR_PROFIT_LOT).width : left; int y = r.top; uint max = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->vehicles.Length()); for (uint i = this->vscroll->GetPosition(); i < max; ++i) { const Vehicle *v = this->vehicles[i]; StringID str; SetDParam(0, v->GetDisplayProfitThisYear()); SetDParam(1, v->GetDisplayProfitLastYear()); DrawVehicleImage(v, image_left, image_right, y + FONT_HEIGHT_SMALL - 1, selected_vehicle, EIT_IN_LIST, 0); DrawString(text_left, text_right, y + line_height - FONT_HEIGHT_SMALL - WD_FRAMERECT_BOTTOM - 1, STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR); if (v->name != NULL) { /* The vehicle got a name so we will print it */ SetDParam(0, v->index); DrawString(text_left, text_right, y, STR_TINY_BLACK_VEHICLE); } else if (v->group_id != DEFAULT_GROUP) { /* The vehicle has no name, but is member of a group, so print group name */ SetDParam(0, v->group_id); DrawString(text_left, text_right, y, STR_TINY_GROUP, TC_BLACK); } if (show_orderlist) DrawSmallOrderList(v, orderlist_left, orderlist_right, y, v->cur_real_order_index); if (v->IsChainInDepot()) { str = STR_BLUE_COMMA; } else { str = (v->age > v->max_age - DAYS_IN_LEAP_YEAR) ? STR_RED_COMMA : STR_BLACK_COMMA; } SetDParam(0, v->unitnumber); DrawString(left, right, y + 2, str); DrawVehicleProfitButton(v, vehicle_button_x, y + FONT_HEIGHT_NORMAL + 3); y += line_height; } } /** * Window for the (old) vehicle listing. * * bitmask for w->window_number * 0-7 CompanyID (owner) * 8-10 window type (use flags in vehicle_gui.h) * 11-15 vehicle type (using VEH_, but can be compressed to fewer bytes if needed) * 16-31 StationID or OrderID depending on window type (bit 8-10) */ struct VehicleListWindow : public BaseVehicleListWindow { private: /** Enumeration of planes of the button row at the bottom. */ enum ButtonPlanes { BP_SHOW_BUTTONS, ///< Show the buttons. BP_HIDE_BUTTONS, ///< Show the empty panel. }; public: VehicleListWindow(const WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(window_number) { /* Set up sorting. Make the window-specific _sorting variable * point to the correct global _sorting struct so we are freed * from having conditionals during window operation */ switch (this->vli.vtype) { case VEH_TRAIN: this->sorting = &_sorting.train; break; case VEH_ROAD: this->sorting = &_sorting.roadveh; break; case VEH_SHIP: this->sorting = &_sorting.ship; break; case VEH_AIRCRAFT: this->sorting = &_sorting.aircraft; break; default: NOT_REACHED(); } this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_VL_SCROLLBAR); this->vehicles.SetListing(*this->sorting); this->vehicles.ForceRebuild(); this->vehicles.NeedResort(); this->BuildVehicleList(); this->SortVehicleList(); /* Set up the window widgets */ this->GetWidget(WID_VL_LIST)->tool_tip = STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP + this->vli.vtype; if (this->vli.type == VL_SHARED_ORDERS) { this->GetWidget(WID_VL_CAPTION)->widget_data = STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION; } else { this->GetWidget(WID_VL_CAPTION)->widget_data = STR_VEHICLE_LIST_TRAIN_CAPTION + this->vli.vtype; } this->FinishInitNested(desc, window_number); if (this->vli.company != OWNER_NONE) this->owner = this->vli.company; if (this->vli.vtype == VEH_TRAIN) ResizeWindow(this, 65, 0); } ~VehicleListWindow() { *this->sorting = this->vehicles.GetListing(); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_VL_LIST: resize->height = GetVehicleListHeight(this->vli.vtype, 1); switch (this->vli.vtype) { case VEH_TRAIN: case VEH_ROAD: size->height = 6 * resize->height; break; case VEH_SHIP: case VEH_AIRCRAFT: size->height = 4 * resize->height; break; default: NOT_REACHED(); } break; case WID_VL_SORT_ORDER: { Dimension d = GetStringBoundingBox(this->GetWidget(widget)->widget_data); d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the string is centred and it also looks better. d.height += padding.height; *size = maxdim(*size, d); break; } case WID_VL_MANAGE_VEHICLES_DROPDOWN: { Dimension d = this->GetActionDropdownSize(this->vli.type == VL_STANDARD, false); d.height += padding.height; d.width += padding.width; *size = maxdim(*size, d); break; } } } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_VL_AVAILABLE_VEHICLES: SetDParam(0, STR_VEHICLE_LIST_AVAILABLE_TRAINS + this->vli.vtype); break; case WID_VL_CAPTION: { switch (this->vli.type) { case VL_SHARED_ORDERS: // Shared Orders if (this->vehicles.Length() == 0) { /* We can't open this window without vehicles using this order * and we should close the window when deleting the order. */ NOT_REACHED(); } SetDParam(0, this->vscroll->GetCount()); break; case VL_STANDARD: // Company Name SetDParam(0, STR_COMPANY_NAME); SetDParam(1, this->vli.index); SetDParam(3, this->vscroll->GetCount()); break; case VL_STATION_LIST: // Station/Waypoint Name SetDParam(0, Station::IsExpected(BaseStation::Get(this->vli.index)) ? STR_STATION_NAME : STR_WAYPOINT_NAME); SetDParam(1, this->vli.index); SetDParam(3, this->vscroll->GetCount()); break; case VL_DEPOT_LIST: SetDParam(0, STR_DEPOT_CAPTION); SetDParam(1, this->vli.vtype); SetDParam(2, this->vli.index); SetDParam(3, this->vscroll->GetCount()); break; default: NOT_REACHED(); } break; } } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_VL_SORT_ORDER: /* draw arrow pointing up/down for ascending/descending sorting */ this->DrawSortButtonState(widget, this->vehicles.IsDescSortOrder() ? SBS_DOWN : SBS_UP); break; case WID_VL_LIST: this->DrawVehicleListItems(INVALID_VEHICLE, this->resize.step_height, r); break; } } virtual void OnPaint() { this->BuildVehicleList(); this->SortVehicleList(); if (this->vehicles.Length() == 0 && this->IsWidgetLowered(WID_VL_MANAGE_VEHICLES_DROPDOWN)) { HideDropDownMenu(this); } /* Hide the widgets that we will not use in this window * Some windows contains actions only fit for the owner */ int plane_to_show = (this->owner == _local_company) ? BP_SHOW_BUTTONS : BP_HIDE_BUTTONS; NWidgetStacked *nwi = this->GetWidget(WID_VL_HIDE_BUTTONS); if (plane_to_show != nwi->shown_plane) { nwi->SetDisplayedPlane(plane_to_show); nwi->SetDirty(this); } if (this->owner == _local_company) { this->SetWidgetDisabledState(WID_VL_AVAILABLE_VEHICLES, this->vli.type != VL_STANDARD); this->SetWidgetsDisabledState(this->vehicles.Length() == 0, WID_VL_MANAGE_VEHICLES_DROPDOWN, WID_VL_STOP_ALL, WID_VL_START_ALL, WIDGET_LIST_END); } /* Set text of sort by dropdown widget. */ this->GetWidget(WID_VL_SORT_BY_PULLDOWN)->widget_data = this->vehicle_sorter_names[this->vehicles.SortType()]; this->DrawWidgets(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_VL_SORT_ORDER: // Flip sorting method ascending/descending this->vehicles.ToggleSortOrder(); this->SetDirty(); break; case WID_VL_SORT_BY_PULLDOWN:// Select sorting criteria dropdown menu ShowDropDownMenu(this, this->vehicle_sorter_names, this->vehicles.SortType(), WID_VL_SORT_BY_PULLDOWN, 0, (this->vli.vtype == VEH_TRAIN || this->vli.vtype == VEH_ROAD) ? 0 : (1 << 10)); return; case WID_VL_LIST: { // Matrix to show vehicles uint id_v = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_VL_LIST); if (id_v >= this->vehicles.Length()) return; // click out of list bound const Vehicle *v = this->vehicles[id_v]; if (!VehicleClicked(v)) ShowVehicleViewWindow(v); break; } case WID_VL_AVAILABLE_VEHICLES: ShowBuildVehicleWindow(INVALID_TILE, this->vli.vtype); break; case WID_VL_MANAGE_VEHICLES_DROPDOWN: { DropDownList *list = this->BuildActionDropdownList(VehicleListIdentifier(this->window_number).type == VL_STANDARD, false); ShowDropDownList(this, list, 0, WID_VL_MANAGE_VEHICLES_DROPDOWN); break; } case WID_VL_STOP_ALL: case WID_VL_START_ALL: DoCommandP(0, (1 << 1) | (widget == WID_VL_START_ALL ? (1 << 0) : 0), this->window_number, CMD_MASS_START_STOP); break; } } virtual void OnDropdownSelect(int widget, int index) { switch (widget) { case WID_VL_SORT_BY_PULLDOWN: this->vehicles.SetSortType(index); break; case WID_VL_MANAGE_VEHICLES_DROPDOWN: assert(this->vehicles.Length() != 0); switch (index) { case ADI_REPLACE: // Replace window ShowReplaceGroupVehicleWindow(ALL_GROUP, this->vli.vtype); break; case ADI_SERVICE: // Send for servicing case ADI_DEPOT: // Send to Depots DoCommandP(0, DEPOT_MASS_SEND | (index == ADI_SERVICE ? DEPOT_SERVICE : (DepotCommand)0), this->window_number, GetCmdSendToDepot(this->vli.vtype)); break; default: NOT_REACHED(); } break; default: NOT_REACHED(); } this->SetDirty(); } virtual void OnTick() { if (_pause_mode != PM_UNPAUSED) return; if (this->vehicles.NeedResort()) { StationID station = (this->vli.type == VL_STATION_LIST) ? this->vli.index : INVALID_STATION; DEBUG(misc, 3, "Periodic resort %d list company %d at station %d", this->vli.vtype, this->owner, station); this->SetDirty(); } } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_VL_LIST); this->GetWidget(WID_VL_LIST)->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope && HasBit(data, 31) && this->vli.type == VL_SHARED_ORDERS) { /* Needs to be done in command-scope, so everything stays valid */ this->vli.index = GB(data, 0, 20); this->window_number = this->vli.Pack(); this->vehicles.ForceRebuild(); return; } if (data == 0) { /* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */ this->vehicles.ForceRebuild(); } else { this->vehicles.ForceResort(); } } }; static WindowDesc _vehicle_list_desc( WDP_AUTO, 260, 246, WC_INVALID, WC_NONE, 0, _nested_vehicle_list, lengthof(_nested_vehicle_list) ); static void ShowVehicleListWindowLocal(CompanyID company, VehicleListType vlt, VehicleType vehicle_type, uint32 unique_number) { if (!Company::IsValidID(company) && company != OWNER_NONE) return; _vehicle_list_desc.cls = GetWindowClassForVehicleType(vehicle_type); AllocateWindowDescFront(&_vehicle_list_desc, VehicleListIdentifier(vlt, vehicle_type, company, unique_number).Pack()); } void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type) { /* If _settings_client.gui.advanced_vehicle_list > 1, display the Advanced list * if _settings_client.gui.advanced_vehicle_list == 1, display Advanced list only for local company * if _ctrl_pressed, do the opposite action (Advanced list x Normal list) */ if ((_settings_client.gui.advanced_vehicle_list > (uint)(company != _local_company)) != _ctrl_pressed) { ShowCompanyGroup(company, vehicle_type); } else { ShowVehicleListWindowLocal(company, VL_STANDARD, vehicle_type, company); } } void ShowVehicleListWindow(const Vehicle *v) { ShowVehicleListWindowLocal(v->owner, VL_SHARED_ORDERS, v->type, v->FirstShared()->index); } void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station) { _vehicle_list_desc.flags &= ~WDF_CONSTRUCTION; ShowVehicleListWindowLocal(company, VL_STATION_LIST, vehicle_type, station); } void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, TileIndex depot_tile) { uint16 depot_airport_index; if (vehicle_type == VEH_AIRCRAFT) { depot_airport_index = GetStationIndex(depot_tile); } else { depot_airport_index = GetDepotIndex(depot_tile); } ShowVehicleListWindowLocal(company, VL_DEPOT_LIST, vehicle_type, depot_airport_index); } /* Unified vehicle GUI - Vehicle Details Window */ assert_compile(WID_VD_DETAILS_CARGO_CARRIED == WID_VD_DETAILS_CARGO_CARRIED + TDW_TAB_CARGO ); assert_compile(WID_VD_DETAILS_TRAIN_VEHICLES == WID_VD_DETAILS_CARGO_CARRIED + TDW_TAB_INFO ); assert_compile(WID_VD_DETAILS_CAPACITY_OF_EACH == WID_VD_DETAILS_CARGO_CARRIED + TDW_TAB_CAPACITY); assert_compile(WID_VD_DETAILS_TOTAL_CARGO == WID_VD_DETAILS_CARGO_CARRIED + TDW_TAB_TOTALS ); /** Vehicle details widgets (other than train). */ static const NWidgetPart _nested_nontrain_vehicle_details_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VD_CAPTION), SetDataTip(STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_RENAME_VEHICLE), SetMinimalSize(40, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_TOP_DETAILS), SetMinimalSize(405, 42), SetResize(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_MIDDLE_DETAILS), SetMinimalSize(405, 45), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_VD_DECREASE_SERVICING_INTERVAL), SetFill(0, 1), SetDataTip(AWV_DECREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_VD_INCREASE_SERVICING_INTERVAL), SetFill(0, 1), SetDataTip(AWV_INCREASE, STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VD_SERVICE_INTERVAL_DROPDOWN), SetFill(0, 1), SetDataTip(STR_EMPTY, STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_SERVICING_INTERVAL), SetFill(1, 1), SetResize(1, 0), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; /** Train details widgets. */ static const NWidgetPart _nested_train_vehicle_details_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VD_CAPTION), SetDataTip(STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_RENAME_VEHICLE), SetMinimalSize(40, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_TOP_DETAILS), SetResize(1, 0), SetMinimalSize(405, 42), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_GREY, WID_VD_MATRIX), SetResize(1, 1), SetMinimalSize(393, 45), SetDataTip(0x701, STR_NULL), SetFill(1, 0), SetScrollbar(WID_VD_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VD_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_VD_DECREASE_SERVICING_INTERVAL), SetFill(0, 1), SetDataTip(AWV_DECREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_VD_INCREASE_SERVICING_INTERVAL), SetFill(0, 1), SetDataTip(AWV_INCREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_VD_SERVICE_INTERVAL_DROPDOWN), SetFill(0, 1), SetDataTip(STR_EMPTY, STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY, WID_VD_SERVICING_INTERVAL), SetFill(1, 1), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_DETAILS_CARGO_CARRIED), SetMinimalSize(96, 12), SetDataTip(STR_VEHICLE_DETAIL_TAB_CARGO, STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_DETAILS_TRAIN_VEHICLES), SetMinimalSize(99, 12), SetDataTip(STR_VEHICLE_DETAIL_TAB_INFORMATION, STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_DETAILS_CAPACITY_OF_EACH), SetMinimalSize(99, 12), SetDataTip(STR_VEHICLE_DETAIL_TAB_CAPACITIES, STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VD_DETAILS_TOTAL_CARGO), SetMinimalSize(99, 12), SetDataTip(STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO, STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; extern int GetTrainDetailsWndVScroll(VehicleID veh_id, TrainDetailsWindowTabs det_tab); extern void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_pos, uint16 vscroll_cap, TrainDetailsWindowTabs det_tab); extern void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y); extern void DrawShipDetails(const Vehicle *v, int left, int right, int y); extern void DrawAircraftDetails(const Aircraft *v, int left, int right, int y); static StringID _service_interval_dropdown[] = { STR_VEHICLE_DETAILS_DEFAULT, STR_VEHICLE_DETAILS_DAYS, STR_VEHICLE_DETAILS_PERCENT, INVALID_STRING_ID, }; /** Class for managing the vehicle details window. */ struct VehicleDetailsWindow : Window { TrainDetailsWindowTabs tab; ///< For train vehicles: which tab is displayed. Scrollbar *vscroll; /** Initialize a newly created vehicle details window */ VehicleDetailsWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { const Vehicle *v = Vehicle::Get(window_number); this->CreateNestedTree(desc); this->vscroll = (v->type == VEH_TRAIN ? this->GetScrollbar(WID_VD_SCROLLBAR) : NULL); this->FinishInitNested(desc, window_number); this->GetWidget(WID_VD_RENAME_VEHICLE)->tool_tip = STR_VEHICLE_DETAILS_TRAIN_RENAME + v->type; this->owner = v->owner; this->tab = TDW_TAB_CARGO; } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (data == VIWD_AUTOREPLACE) { /* Autoreplace replaced the vehicle. * Nothing to do for this window. */ return; } if (!gui_scope) return; const Vehicle *v = Vehicle::Get(this->window_number); if (v->type == VEH_ROAD) { const NWidgetBase *nwid_info = this->GetWidget(WID_VD_MIDDLE_DETAILS); uint aimed_height = this->GetRoadVehDetailsHeight(v); /* If the number of articulated parts changes, the size of the window must change too. */ if (aimed_height != nwid_info->current_y) { this->ReInit(); } } } /** * Gets the desired height for the road vehicle details panel. * @param v Road vehicle being shown. * @return Desired height in pixels. */ uint GetRoadVehDetailsHeight(const Vehicle *v) { uint desired_height; if (v->HasArticulatedPart()) { /* An articulated RV has its text drawn under the sprite instead of after it, hence 15 pixels extra. */ desired_height = WD_FRAMERECT_TOP + 15 + 3 * FONT_HEIGHT_NORMAL + 2 + WD_FRAMERECT_BOTTOM; /* Add space for the cargo amount for each part. */ for (const Vehicle *u = v; u != NULL; u = u->Next()) { if (u->cargo_cap != 0) desired_height += FONT_HEIGHT_NORMAL + 1; } } else { desired_height = WD_FRAMERECT_TOP + 4 * FONT_HEIGHT_NORMAL + 3 + WD_FRAMERECT_BOTTOM; } return desired_height; } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_VD_TOP_DETAILS: { Dimension dim = { 0, 0 }; size->height = WD_FRAMERECT_TOP + 4 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; for (uint i = 0; i < 4; i++) SetDParamMaxValue(i, INT16_MAX); static const StringID info_strings[] = { STR_VEHICLE_INFO_MAX_SPEED, STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED, STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE, STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR, STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS }; for (uint i = 0; i < lengthof(info_strings); i++) { dim = maxdim(dim, GetStringBoundingBox(info_strings[i])); } SetDParam(0, STR_VEHICLE_INFO_AGE); dim = maxdim(dim, GetStringBoundingBox(STR_VEHICLE_INFO_AGE_RUNNING_COST_YR)); size->width = dim.width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; break; } case WID_VD_MIDDLE_DETAILS: { const Vehicle *v = Vehicle::Get(this->window_number); switch (v->type) { case VEH_ROAD: size->height = this->GetRoadVehDetailsHeight(v); break; case VEH_SHIP: size->height = WD_FRAMERECT_TOP + 4 * FONT_HEIGHT_NORMAL + 3 + WD_FRAMERECT_BOTTOM; break; case VEH_AIRCRAFT: size->height = WD_FRAMERECT_TOP + 5 * FONT_HEIGHT_NORMAL + 4 + WD_FRAMERECT_BOTTOM; break; default: NOT_REACHED(); // Train uses WID_VD_MATRIX instead. } break; } case WID_VD_MATRIX: resize->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM; size->height = 4 * resize->height; break; case WID_VD_SERVICE_INTERVAL_DROPDOWN: { StringID *strs = _service_interval_dropdown; while (*strs != INVALID_STRING_ID) { *size = maxdim(*size, GetStringBoundingBox(*strs++)); } size->width += padding.width; size->height = FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM; break; } case WID_VD_SERVICING_INTERVAL: SetDParamMaxValue(0, MAX_SERVINT_DAYS); // Roughly the maximum interval SetDParamMaxValue(1, MAX_YEAR * DAYS_IN_YEAR); // Roughly the maximum year size->width = max(GetStringBoundingBox(STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT).width, GetStringBoundingBox(STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS).width) + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; size->height = WD_FRAMERECT_TOP + FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; break; } } /** Checks whether service interval is enabled for the vehicle. */ static bool IsVehicleServiceIntervalEnabled(const VehicleType vehicle_type, CompanyID company_id) { const VehicleDefaultSettings *vds = &Company::Get(company_id)->settings.vehicle; switch (vehicle_type) { default: NOT_REACHED(); case VEH_TRAIN: return vds->servint_trains != 0; case VEH_ROAD: return vds->servint_roadveh != 0; case VEH_SHIP: return vds->servint_ships != 0; case VEH_AIRCRAFT: return vds->servint_aircraft != 0; } } /** * Draw the details for the given vehicle at the position of the Details windows * * @param v current vehicle * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate * @param vscroll_pos Position of scrollbar (train only) * @param vscroll_cap Number of lines currently displayed (train only) * @param det_tab Selected details tab (train only) */ static void DrawVehicleDetails(const Vehicle *v, int left, int right, int y, int vscroll_pos, uint vscroll_cap, TrainDetailsWindowTabs det_tab) { switch (v->type) { case VEH_TRAIN: DrawTrainDetails(Train::From(v), left, right, y, vscroll_pos, vscroll_cap, det_tab); break; case VEH_ROAD: DrawRoadVehDetails(v, left, right, y); break; case VEH_SHIP: DrawShipDetails(v, left, right, y); break; case VEH_AIRCRAFT: DrawAircraftDetails(Aircraft::From(v), left, right, y); break; default: NOT_REACHED(); } } virtual void SetStringParameters(int widget) const { if (widget == WID_VD_CAPTION) SetDParam(0, Vehicle::Get(this->window_number)->index); } virtual void DrawWidget(const Rect &r, int widget) const { const Vehicle *v = Vehicle::Get(this->window_number); switch (widget) { case WID_VD_TOP_DETAILS: { int y = r.top + WD_FRAMERECT_TOP; /* Draw running cost */ SetDParam(1, v->age / DAYS_IN_LEAP_YEAR); SetDParam(0, (v->age + DAYS_IN_YEAR < v->max_age) ? STR_VEHICLE_INFO_AGE : STR_VEHICLE_INFO_AGE_RED); SetDParam(2, v->max_age / DAYS_IN_LEAP_YEAR); SetDParam(3, v->GetDisplayRunningCost()); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_VEHICLE_INFO_AGE_RUNNING_COST_YR); y += FONT_HEIGHT_NORMAL; /* Draw max speed */ StringID string; if (v->type == VEH_TRAIN || (v->type == VEH_ROAD && _settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL)) { const GroundVehicleCache *gcache = v->GetGroundVehicleCache(); SetDParam(2, v->GetDisplayMaxSpeed()); SetDParam(1, gcache->cached_power); SetDParam(0, gcache->cached_weight); SetDParam(3, gcache->cached_max_te / 1000); if (v->type == VEH_TRAIN && (_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL || GetRailTypeInfo(Train::From(v)->railtype)->acceleration_type == 2)) { string = STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED; } else { string = STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE; } } else { SetDParam(0, v->GetDisplayMaxSpeed()); if (v->type == VEH_AIRCRAFT && Aircraft::From(v)->GetRange() > 0) { SetDParam(1, Aircraft::From(v)->GetRange()); string = STR_VEHICLE_INFO_MAX_SPEED_RANGE; } else { string = STR_VEHICLE_INFO_MAX_SPEED; } } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, string); y += FONT_HEIGHT_NORMAL; /* Draw profit */ SetDParam(0, v->GetDisplayProfitThisYear()); SetDParam(1, v->GetDisplayProfitLastYear()); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR); y += FONT_HEIGHT_NORMAL; /* Draw breakdown & reliability */ SetDParam(0, ToPercent16(v->reliability)); SetDParam(1, v->breakdowns_since_last_service); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS); break; } case WID_VD_MATRIX: /* For trains only. */ DrawVehicleDetails(v, r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, r.top + WD_MATRIX_TOP, this->vscroll->GetPosition(), this->vscroll->GetCapacity(), this->tab); break; case WID_VD_MIDDLE_DETAILS: { /* For other vehicles, at the place of the matrix. */ bool rtl = _current_text_dir == TD_RTL; uint sprite_width = max(UnScaleByZoom(GetSprite(v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DETAILS), ST_NORMAL)->width, ZOOM_LVL_GUI), 70U) + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT; uint text_left = r.left + (rtl ? 0 : sprite_width); uint text_right = r.right - (rtl ? sprite_width : 0); /* Articulated road vehicles use a complete line. */ if (v->type == VEH_ROAD && v->HasArticulatedPart()) { DrawVehicleImage(v, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, INVALID_VEHICLE, EIT_IN_DETAILS, 0); } else { uint sprite_left = rtl ? text_right : r.left; uint sprite_right = rtl ? r.right : text_left; DrawVehicleImage(v, sprite_left + WD_FRAMERECT_LEFT, sprite_right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, INVALID_VEHICLE, EIT_IN_DETAILS, 0); } DrawVehicleDetails(v, text_left + WD_FRAMERECT_LEFT, text_right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, 0, 0, this->tab); break; } case WID_VD_SERVICING_INTERVAL: /* Draw service interval text */ SetDParam(0, v->GetServiceInterval()); SetDParam(1, v->date_of_last_service); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + (r.bottom - r.top + 1 - FONT_HEIGHT_NORMAL) / 2, v->ServiceIntervalIsPercent() ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS); break; } } /** Repaint vehicle details window. */ virtual void OnPaint() { const Vehicle *v = Vehicle::Get(this->window_number); this->SetWidgetDisabledState(WID_VD_RENAME_VEHICLE, v->owner != _local_company); if (v->type == VEH_TRAIN) { this->DisableWidget(this->tab + WID_VD_DETAILS_CARGO_CARRIED); this->vscroll->SetCount(GetTrainDetailsWndVScroll(v->index, this->tab)); } /* Disable service-scroller when interval is set to disabled */ this->SetWidgetsDisabledState(!IsVehicleServiceIntervalEnabled(v->type, v->owner), WID_VD_INCREASE_SERVICING_INTERVAL, WID_VD_DECREASE_SERVICING_INTERVAL, WIDGET_LIST_END); StringID str = v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? STR_VEHICLE_DETAILS_PERCENT : STR_VEHICLE_DETAILS_DAYS) : STR_VEHICLE_DETAILS_DEFAULT; this->GetWidget(WID_VD_SERVICE_INTERVAL_DROPDOWN)->widget_data = str; this->DrawWidgets(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_VD_RENAME_VEHICLE: { // rename const Vehicle *v = Vehicle::Get(this->window_number); SetDParam(0, v->index); ShowQueryString(STR_VEHICLE_NAME, STR_QUERY_RENAME_TRAIN_CAPTION + v->type, MAX_LENGTH_VEHICLE_NAME_CHARS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT | QSF_LEN_IN_CHARS); break; } case WID_VD_INCREASE_SERVICING_INTERVAL: // increase int case WID_VD_DECREASE_SERVICING_INTERVAL: { // decrease int int mod = _ctrl_pressed ? 5 : 10; const Vehicle *v = Vehicle::Get(this->window_number); mod = (widget == WID_VD_DECREASE_SERVICING_INTERVAL) ? -mod : mod; mod = GetServiceIntervalClamped(mod + v->GetServiceInterval(), v->ServiceIntervalIsPercent()); if (mod == v->GetServiceInterval()) return; DoCommandP(v->tile, v->index, mod | (1 << 16) | (v->ServiceIntervalIsPercent() << 17), CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_SERVICING)); break; } case WID_VD_SERVICE_INTERVAL_DROPDOWN: { const Vehicle *v = Vehicle::Get(this->window_number); ShowDropDownMenu(this, _service_interval_dropdown, v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? 2 : 1) : 0, widget, 0, 0); break; } case WID_VD_DETAILS_CARGO_CARRIED: case WID_VD_DETAILS_TRAIN_VEHICLES: case WID_VD_DETAILS_CAPACITY_OF_EACH: case WID_VD_DETAILS_TOTAL_CARGO: this->SetWidgetsDisabledState(false, WID_VD_DETAILS_CARGO_CARRIED, WID_VD_DETAILS_TRAIN_VEHICLES, WID_VD_DETAILS_CAPACITY_OF_EACH, WID_VD_DETAILS_TOTAL_CARGO, widget, WIDGET_LIST_END); this->tab = (TrainDetailsWindowTabs)(widget - WID_VD_DETAILS_CARGO_CARRIED); this->SetDirty(); break; } } virtual void OnDropdownSelect(int widget, int index) { switch (widget) { case WID_VD_SERVICE_INTERVAL_DROPDOWN: { const Vehicle *v = Vehicle::Get(this->window_number); bool iscustom = index != 0; bool ispercent = iscustom ? (index == 2) : Company::Get(v->owner)->settings.vehicle.servint_ispercent; uint16 interval = GetServiceIntervalClamped(v->GetServiceInterval(), ispercent); DoCommandP(v->tile, v->index, interval | (iscustom << 16) | (ispercent << 17), CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_SERVICING)); break; } } } virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; DoCommandP(0, this->window_number, 0, CMD_RENAME_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_RENAME_TRAIN + Vehicle::Get(this->window_number)->type), NULL, str); } virtual void OnResize() { NWidgetCore *nwi = this->GetWidget(WID_VD_MATRIX); if (nwi != NULL) { this->vscroll->SetCapacityFromWidget(this, WID_VD_MATRIX); nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } } }; /** Vehicle details window descriptor. */ static const WindowDesc _train_vehicle_details_desc( WDP_AUTO, 405, 178, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, 0, _nested_train_vehicle_details_widgets, lengthof(_nested_train_vehicle_details_widgets) ); /** Vehicle details window descriptor for other vehicles than a train. */ static const WindowDesc _nontrain_vehicle_details_desc( WDP_AUTO, 405, 113, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, 0, _nested_nontrain_vehicle_details_widgets, lengthof(_nested_nontrain_vehicle_details_widgets) ); /** Shows the vehicle details window of the given vehicle. */ static void ShowVehicleDetailsWindow(const Vehicle *v) { DeleteWindowById(WC_VEHICLE_ORDERS, v->index, false); DeleteWindowById(WC_VEHICLE_TIMETABLE, v->index, false); AllocateWindowDescFront((v->type == VEH_TRAIN) ? &_train_vehicle_details_desc : &_nontrain_vehicle_details_desc, v->index); } /* Unified vehicle GUI - Vehicle View Window */ /** Vehicle view widgets. */ static const NWidgetPart _nested_vehicle_view_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VV_CAPTION), SetDataTip(STR_VEHICLE_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_DEBUGBOX, COLOUR_GREY), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(WWT_INSET, COLOUR_GREY), SetPadding(2, 2, 2, 2), NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_VV_VIEWPORT), SetMinimalSize(226, 84), SetResize(1, 1), SetPadding(1, 1, 1, 1), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_CENTER_MAIN_VIEW), SetMinimalSize(18, 18), SetFill(1, 1), SetDataTip(SPR_CENTRE_VIEW_VEHICLE, 0x0 /* filled later */), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VV_SELECT_DEPOT_CLONE), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_GOTO_DEPOT), SetMinimalSize(18, 18), SetFill(1, 1), SetDataTip(0x0 /* filled later */, 0x0 /* filled later */), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_CLONE), SetMinimalSize(18, 18), SetFill(1, 1), SetDataTip(0x0 /* filled later */, 0x0 /* filled later */), EndContainer(), /* For trains only, 'ignore signal' button. */ NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_FORCE_PROCEED), SetMinimalSize(18, 18), SetFill(1, 1), SetDataTip(SPR_IGNORE_SIGNALS, STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VV_SELECT_REFIT_TURN), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_REFIT), SetMinimalSize(18, 18), SetFill(1, 1), SetDataTip(SPR_REFIT_VEHICLE, 0x0 /* filled later */), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_TURN_AROUND), SetMinimalSize(18, 18), SetFill(1, 1), SetDataTip(SPR_FORCE_VEHICLE_TURN, STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_SHOW_ORDERS), SetFill(1, 1), SetMinimalSize(18, 18), SetDataTip(SPR_SHOW_ORDERS, 0x0 /* filled later */), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VV_SHOW_DETAILS), SetFill(1, 1), SetMinimalSize(18, 18), SetDataTip(SPR_SHOW_VEHICLE_DETAILS, 0x0 /* filled later */), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetMinimalSize(18, 0), SetResize(0, 1), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHBTN, COLOUR_GREY, WID_VV_START_STOP), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetResize(1, 0), SetFill(1, 0), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; /** Vehicle view window descriptor for all vehicles but trains. */ static const WindowDesc _vehicle_view_desc( WDP_AUTO, 250, 116, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets) ); /** * Vehicle view window descriptor for trains. Only minimum_height and * default_height are different for train view. */ static const WindowDesc _train_view_desc( WDP_AUTO, 250, 134, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets) ); /* Just to make sure, nobody has changed the vehicle type constants, as we are using them for array indexing in a number of places here. */ assert_compile(VEH_TRAIN == 0); assert_compile(VEH_ROAD == 1); assert_compile(VEH_SHIP == 2); assert_compile(VEH_AIRCRAFT == 3); /** Zoom levels for vehicle views indexed by vehicle type. */ static const ZoomLevel _vehicle_view_zoom_levels[] = { ZOOM_LVL_TRAIN, ZOOM_LVL_ROADVEH, ZOOM_LVL_SHIP, ZOOM_LVL_AIRCRAFT, }; /* Constants for geometry of vehicle view viewport */ static const int VV_INITIAL_VIEWPORT_WIDTH = 226; static const int VV_INITIAL_VIEWPORT_HEIGHT = 84; static const int VV_INITIAL_VIEWPORT_HEIGHT_TRAIN = 102; /** Command indices for the _vehicle_command_translation_table. */ enum VehicleCommandTranslation { VCT_CMD_START_STOP = 0, VCT_CMD_CLONE_VEH, VCT_CMD_TURN_AROUND, }; /** Command codes for the shared buttons indexed by VehicleCommandTranslation and vehicle type. */ static const uint32 _vehicle_command_translation_table[][4] = { { // VCT_CMD_START_STOP CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_TRAIN), CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE), CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_SHIP), CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_AIRCRAFT) }, { // VCT_CMD_CLONE_VEH CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN), CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_ROAD_VEHICLE), CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_SHIP), CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_AIRCRAFT) }, { // VCT_CMD_TURN_AROUND CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN), CMD_TURN_ROADVEH | CMD_MSG(STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN), 0xffffffff, // invalid for ships 0xffffffff // invalid for aircrafts }, }; /** * This is the Callback method after the cloning attempt of a vehicle * @param result the result of the cloning command * @param tile unused * @param p1 vehicle ID * @param p2 unused */ void CcStartStopVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; const Vehicle *v = Vehicle::GetIfValid(p1); if (v == NULL || !v->IsPrimaryVehicle() || v->owner != _local_company) return; StringID msg = (v->vehstatus & VS_STOPPED) ? STR_VEHICLE_COMMAND_STOPPED : STR_VEHICLE_COMMAND_STARTED; Point pt = RemapCoords(v->x_pos, v->y_pos, v->z_pos); AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING); } /** * Executes #CMD_START_STOP_VEHICLE for given vehicle. * @param v Vehicle to start/stop * @param texteffect Should a texteffect be shown? */ void StartStopVehicle(const Vehicle *v, bool texteffect) { assert(v->IsPrimaryVehicle()); DoCommandP(v->tile, v->index, 0, _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type], texteffect ? CcStartStopVehicle : NULL); } /** Checks whether the vehicle may be refitted at the moment.*/ static bool IsVehicleRefitable(const Vehicle *v) { if (!v->IsStoppedInDepot()) return false; do { if (IsEngineRefittable(v->engine_type)) return true; } while (v->IsGroundVehicle() && (v = v->Next()) != NULL); return false; } /** Window manager class for viewing a vehicle. */ struct VehicleViewWindow : Window { private: /** Display planes available in the vehicle view window. */ enum PlaneSelections { SEL_DC_GOTO_DEPOT, ///< Display 'goto depot' button in #WID_VV_SELECT_DEPOT_CLONE stacked widget. SEL_DC_CLONE, ///< Display 'clone vehicle' button in #WID_VV_SELECT_DEPOT_CLONE stacked widget. SEL_RT_REFIT, ///< Display 'refit' button in #WID_VV_SELECT_REFIT_TURN stacked widget. SEL_RT_TURN_AROUND, ///< Display 'turn around' button in #WID_VV_SELECT_REFIT_TURN stacked widget. SEL_DC_BASEPLANE = SEL_DC_GOTO_DEPOT, ///< First plane of the #WID_VV_SELECT_DEPOT_CLONE stacked widget. SEL_RT_BASEPLANE = SEL_RT_REFIT, ///< First plane of the #WID_VV_SELECT_REFIT_TURN stacked widget. }; /** * Display a plane in the window. * @param plane Plane to show. */ void SelectPlane(PlaneSelections plane) { switch (plane) { case SEL_DC_GOTO_DEPOT: case SEL_DC_CLONE: this->GetWidget(WID_VV_SELECT_DEPOT_CLONE)->SetDisplayedPlane(plane - SEL_DC_BASEPLANE); break; case SEL_RT_REFIT: case SEL_RT_TURN_AROUND: this->GetWidget(WID_VV_SELECT_REFIT_TURN)->SetDisplayedPlane(plane - SEL_RT_BASEPLANE); break; default: NOT_REACHED(); } } public: VehicleViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->CreateNestedTree(desc); /* Sprites for the 'send to depot' button indexed by vehicle type. */ static const SpriteID vehicle_view_goto_depot_sprites[] = { SPR_SEND_TRAIN_TODEPOT, SPR_SEND_ROADVEH_TODEPOT, SPR_SEND_SHIP_TODEPOT, SPR_SEND_AIRCRAFT_TODEPOT, }; const Vehicle *v = Vehicle::Get(window_number); this->GetWidget(WID_VV_GOTO_DEPOT)->widget_data = vehicle_view_goto_depot_sprites[v->type]; /* Sprites for the 'clone vehicle' button indexed by vehicle type. */ static const SpriteID vehicle_view_clone_sprites[] = { SPR_CLONE_TRAIN, SPR_CLONE_ROADVEH, SPR_CLONE_SHIP, SPR_CLONE_AIRCRAFT, }; this->GetWidget(WID_VV_CLONE)->widget_data = vehicle_view_clone_sprites[v->type]; switch (v->type) { case VEH_TRAIN: this->GetWidget(WID_VV_TURN_AROUND)->tool_tip = STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP; break; case VEH_ROAD: break; case VEH_SHIP: case VEH_AIRCRAFT: this->SelectPlane(SEL_RT_REFIT); break; default: NOT_REACHED(); } this->FinishInitNested(desc, window_number); this->owner = v->owner; this->GetWidget(WID_VV_VIEWPORT)->InitializeViewport(this, this->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]); this->GetWidget(WID_VV_START_STOP)->tool_tip = STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP + v->type; this->GetWidget(WID_VV_CENTER_MAIN_VIEW)->tool_tip = STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP + v->type; this->GetWidget(WID_VV_REFIT)->tool_tip = STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP + v->type; this->GetWidget(WID_VV_GOTO_DEPOT)->tool_tip = STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP + v->type; this->GetWidget(WID_VV_SHOW_ORDERS)->tool_tip = STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP + v->type; this->GetWidget(WID_VV_SHOW_DETAILS)->tool_tip = STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP + v->type; this->GetWidget(WID_VV_CLONE)->tool_tip = STR_VEHICLE_VIEW_CLONE_TRAIN_INFO + v->type; } ~VehicleViewWindow() { DeleteWindowById(WC_VEHICLE_ORDERS, this->window_number, false); DeleteWindowById(WC_VEHICLE_REFIT, this->window_number, false); DeleteWindowById(WC_VEHICLE_DETAILS, this->window_number, false); DeleteWindowById(WC_VEHICLE_TIMETABLE, this->window_number, false); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { const Vehicle *v = Vehicle::Get(this->window_number); switch (widget) { case WID_VV_START_STOP: size->height = max(size->height, max(GetSpriteSize(SPR_FLAG_VEH_STOPPED).height, GetSpriteSize(SPR_FLAG_VEH_RUNNING).height) + WD_IMGBTN_TOP + WD_IMGBTN_BOTTOM); break; case WID_VV_FORCE_PROCEED: if (v->type != VEH_TRAIN) { size->height = 0; size->width = 0; } break; case WID_VV_VIEWPORT: size->width = VV_INITIAL_VIEWPORT_WIDTH; size->height = (v->type == VEH_TRAIN) ? VV_INITIAL_VIEWPORT_HEIGHT_TRAIN : VV_INITIAL_VIEWPORT_HEIGHT; break; } } virtual void OnPaint() { const Vehicle *v = Vehicle::Get(this->window_number); bool is_localcompany = v->owner == _local_company; bool refitable_and_stopped_in_depot = IsVehicleRefitable(v); this->SetWidgetDisabledState(WID_VV_GOTO_DEPOT, !is_localcompany); this->SetWidgetDisabledState(WID_VV_REFIT, !refitable_and_stopped_in_depot || !is_localcompany); this->SetWidgetDisabledState(WID_VV_CLONE, !is_localcompany); if (v->type == VEH_TRAIN) { this->SetWidgetLoweredState(WID_VV_FORCE_PROCEED, Train::From(v)->force_proceed == TFP_SIGNAL); this->SetWidgetDisabledState(WID_VV_FORCE_PROCEED, !is_localcompany); this->SetWidgetDisabledState(WID_VV_TURN_AROUND, !is_localcompany); } this->DrawWidgets(); } virtual void SetStringParameters(int widget) const { if (widget != WID_VV_CAPTION) return; const Vehicle *v = Vehicle::Get(this->window_number); SetDParam(0, v->index); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_VV_START_STOP) return; const Vehicle *v = Vehicle::Get(this->window_number); StringID str; if (v->vehstatus & VS_CRASHED) { str = STR_VEHICLE_STATUS_CRASHED; } else if (v->type != VEH_AIRCRAFT && v->breakdown_ctr == 1) { // check for aircraft necessary? str = STR_VEHICLE_STATUS_BROKEN_DOWN; } else if (v->vehstatus & VS_STOPPED) { if (v->type == VEH_TRAIN) { if (v->cur_speed == 0) { if (Train::From(v)->gcache.cached_power == 0) { str = STR_VEHICLE_STATUS_TRAIN_NO_POWER; } else { str = STR_VEHICLE_STATUS_STOPPED; } } else { SetDParam(0, v->GetDisplaySpeed()); str = STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL; } } else { // no train str = STR_VEHICLE_STATUS_STOPPED; } } else if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_TRAIN_STUCK) && !v->current_order.IsType(OT_LOADING)) { str = STR_VEHICLE_STATUS_TRAIN_STUCK; } else if (v->type == VEH_AIRCRAFT && HasBit(Aircraft::From(v)->flags, VAF_DEST_TOO_FAR) && !v->current_order.IsType(OT_LOADING)) { str = STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR; } else { // vehicle is in a "normal" state, show current order switch (v->current_order.GetType()) { case OT_GOTO_STATION: { SetDParam(0, v->current_order.GetDestination()); SetDParam(1, v->GetDisplaySpeed()); str = STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL; break; } case OT_GOTO_DEPOT: { SetDParam(0, v->type); SetDParam(1, v->current_order.GetDestination()); SetDParam(2, v->GetDisplaySpeed()); if (v->current_order.GetDepotActionType() & ODATFB_NEAREST_DEPOT) { /* This case *only* happens when multiple nearest depot orders * follow each other (including an order list only one order: a * nearest depot order) and there are no reachable depots. * It is primarily to guard for the case that there is no * depot with index 0, which would be used as fallback for * evaluating the string in the status bar. */ str = STR_EMPTY; } else if (v->current_order.GetDepotActionType() & ODATFB_HALT) { str = STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL; } else { str = STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL; } break; } case OT_LOADING: str = STR_VEHICLE_STATUS_LOADING_UNLOADING; break; case OT_GOTO_WAYPOINT: { assert(v->type == VEH_TRAIN || v->type == VEH_SHIP); SetDParam(0, v->current_order.GetDestination()); str = STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL; SetDParam(1, v->GetDisplaySpeed()); break; } case OT_LEAVESTATION: if (v->type != VEH_AIRCRAFT) { str = STR_VEHICLE_STATUS_LEAVING; break; } /* FALL THROUGH, if aircraft. Does this even happen? */ default: if (v->GetNumManualOrders() == 0) { str = STR_VEHICLE_STATUS_NO_ORDERS_VEL; SetDParam(0, v->GetDisplaySpeed()); } else { str = STR_EMPTY; } break; } } /* Draw the flag plus orders. */ bool rtl = (_current_text_dir == TD_RTL); uint text_offset = max(GetSpriteSize(SPR_FLAG_VEH_STOPPED).width, GetSpriteSize(SPR_FLAG_VEH_RUNNING).width) + WD_IMGBTN_LEFT + WD_IMGBTN_RIGHT; int text_left = r.left + (rtl ? (uint)WD_FRAMERECT_LEFT : text_offset); int text_right = r.right - (rtl ? text_offset : (uint)WD_FRAMERECT_RIGHT); int image_left = (rtl ? text_right + 1 : r.left) + WD_IMGBTN_LEFT; int image = ((v->vehstatus & VS_STOPPED) != 0) ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING; int lowered = this->IsWidgetLowered(WID_VV_START_STOP) ? 1 : 0; DrawSprite(image, PAL_NONE, image_left + lowered, r.top + WD_IMGBTN_TOP + lowered); DrawString(text_left + lowered, text_right + lowered, r.top + WD_FRAMERECT_TOP + lowered, str, TC_FROMSTRING, SA_HOR_CENTER); } virtual void OnClick(Point pt, int widget, int click_count) { const Vehicle *v = Vehicle::Get(this->window_number); switch (widget) { case WID_VV_START_STOP: // start stop if (_ctrl_pressed) { /* Scroll to current order destination */ TileIndex tile = v->current_order.GetLocation(v); if (tile != INVALID_TILE) ScrollMainWindowToTile(tile); } else { /* Start/Stop */ StartStopVehicle(v, false); } break; case WID_VV_CENTER_MAIN_VIEW: {// center main view const Window *mainwindow = FindWindowById(WC_MAIN_WINDOW, 0); /* code to allow the main window to 'follow' the vehicle if the ctrl key is pressed */ if (_ctrl_pressed && mainwindow->viewport->zoom <= ZOOM_LVL_OUT_4X) { mainwindow->viewport->follow_vehicle = v->index; } else { ScrollMainWindowTo(v->x_pos, v->y_pos, v->z_pos); } break; } case WID_VV_GOTO_DEPOT: // goto hangar DoCommandP(v->tile, v->index | (_ctrl_pressed ? DEPOT_SERVICE : 0U), 0, GetCmdSendToDepot(v)); break; case WID_VV_REFIT: // refit ShowVehicleRefitWindow(v, INVALID_VEH_ORDER_ID, this); break; case WID_VV_SHOW_ORDERS: // show orders if (_ctrl_pressed) { ShowTimetableWindow(v); } else { ShowOrdersWindow(v); } break; case WID_VV_SHOW_DETAILS: // show details ShowVehicleDetailsWindow(v); break; case WID_VV_CLONE: // clone vehicle /* Suppress the vehicle GUI when share-cloning. * There is no point to it except for starting the vehicle. * For starting the vehicle the player has to open the depot GUI, which is * most likely already open, but is also visible in the vehicle viewport. */ DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, _vehicle_command_translation_table[VCT_CMD_CLONE_VEH][v->type], _ctrl_pressed ? NULL : CcCloneVehicle); break; case WID_VV_TURN_AROUND: // turn around assert(v->IsGroundVehicle()); DoCommandP(v->tile, v->index, 0, _vehicle_command_translation_table[VCT_CMD_TURN_AROUND][v->type]); break; case WID_VV_FORCE_PROCEED: // force proceed assert(v->type == VEH_TRAIN); DoCommandP(v->tile, v->index, 0, CMD_FORCE_TRAIN_PROCEED | CMD_MSG(STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL)); break; } } virtual void OnResize() { if (this->viewport != NULL) { NWidgetViewport *nvp = this->GetWidget(WID_VV_VIEWPORT); nvp->UpdateViewportCoordinates(this); } } virtual void OnTick() { const Vehicle *v = Vehicle::Get(this->window_number); bool veh_stopped = v->IsStoppedInDepot(); /* Widget WID_VV_GOTO_DEPOT must be hidden if the vehicle is already stopped in depot. * Widget WID_VV_CLONE_VEH should then be shown, since cloning is allowed only while in depot and stopped. */ PlaneSelections plane = veh_stopped ? SEL_DC_CLONE : SEL_DC_GOTO_DEPOT; NWidgetStacked *nwi = this->GetWidget(WID_VV_SELECT_DEPOT_CLONE); // Selection widget 'send to depot' / 'clone'. if (nwi->shown_plane + SEL_DC_BASEPLANE != plane) { this->SelectPlane(plane); this->SetWidgetDirty(WID_VV_SELECT_DEPOT_CLONE); } /* The same system applies to widget WID_VV_REFIT_VEH and VVW_WIDGET_TURN_AROUND.*/ if (v->IsGroundVehicle()) { PlaneSelections plane = veh_stopped ? SEL_RT_REFIT : SEL_RT_TURN_AROUND; NWidgetStacked *nwi = this->GetWidget(WID_VV_SELECT_REFIT_TURN); if (nwi->shown_plane + SEL_RT_BASEPLANE != plane) { this->SelectPlane(plane); this->SetWidgetDirty(WID_VV_SELECT_REFIT_TURN); } } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (data == VIWD_AUTOREPLACE) { /* Autoreplace replaced the vehicle. * Nothing to do for this window. */ return; } } virtual bool IsNewGRFInspectable() const { return ::IsNewGRFInspectable(GetGrfSpecFeature(Vehicle::Get(this->window_number)->type), this->window_number); } virtual void ShowNewGRFInspectWindow() const { ::ShowNewGRFInspectWindow(GetGrfSpecFeature(Vehicle::Get(this->window_number)->type), this->window_number); } }; /** Shows the vehicle view window of the given vehicle. */ void ShowVehicleViewWindow(const Vehicle *v) { AllocateWindowDescFront((v->type == VEH_TRAIN) ? &_train_view_desc : &_vehicle_view_desc, v->index); } /** * Dispatch a "vehicle selected" event if any window waits for it. * @param v selected vehicle; * @return did any window accept vehicle selection? */ bool VehicleClicked(const Vehicle *v) { assert(v != NULL); if (!(_thd.place_mode & HT_VEHICLE)) return false; v = v->First(); if (!v->IsPrimaryVehicle()) return false; return _thd.GetCallbackWnd()->OnVehicleSelect(v); } void StopGlobalFollowVehicle(const Vehicle *v) { Window *w = FindWindowById(WC_MAIN_WINDOW, 0); if (w != NULL && w->viewport->follow_vehicle == v->index) { ScrollMainWindowTo(v->x_pos, v->y_pos, v->z_pos, true); // lock the main view on the vehicle's last position w->viewport->follow_vehicle = INVALID_VEHICLE; } } /** * This is the Callback method after the construction attempt of a primary vehicle * @param result indicates completion (or not) of the operation * @param tile unused * @param p1 unused * @param p2 unused */ void CcBuildPrimaryVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; const Vehicle *v = Vehicle::Get(_new_vehicle_id); ShowVehicleViewWindow(v); } /** * Get the width of a vehicle (including all parts of the consist) in pixels. * @param v Vehicle to get the width for. * @return Width of the vehicle. */ int GetVehicleWidth(Vehicle *v, EngineImageType image_type) { int vehicle_width = 0; switch (v->type) { case VEH_TRAIN: for (const Train *u = Train::From(v); u != NULL; u = u->Next()) { vehicle_width += u->GetDisplayImageWidth(); } break; case VEH_ROAD: for (const RoadVehicle *u = RoadVehicle::From(v); u != NULL; u = u->Next()) { vehicle_width += u->GetDisplayImageWidth(); } break; default: bool rtl = _current_text_dir == TD_RTL; SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); vehicle_width = UnScaleByZoom(real_sprite->width, ZOOM_LVL_GUI); break; } return vehicle_width; } openttd-1.3.3/src/group_cmd.cpp0000644000000000000000000004447412246102610015152 0ustar rootroot/* $Id: group_cmd.cpp 24933 2013-01-22 14:31:01Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file group_cmd.cpp Handling of the engine groups */ #include "stdafx.h" #include "cmd_helper.h" #include "command_func.h" #include "train.h" #include "vehiclelist.h" #include "vehicle_func.h" #include "autoreplace_base.h" #include "autoreplace_func.h" #include "string_func.h" #include "company_func.h" #include "core/pool_func.hpp" #include "order_backup.h" #include "table/strings.h" GroupID _new_group_id; GroupPool _group_pool("Group"); INSTANTIATE_POOL_METHODS(Group) GroupStatistics::GroupStatistics() { this->num_engines = CallocT(Engine::GetPoolSize()); } GroupStatistics::~GroupStatistics() { free(this->num_engines); } /** * Clear all caches. */ void GroupStatistics::Clear() { this->num_vehicle = 0; this->num_profit_vehicle = 0; this->profit_last_year = 0; /* This is also called when NewGRF change. So the number of engines might have changed. Reallocate. */ free(this->num_engines); this->num_engines = CallocT(Engine::GetPoolSize()); } /** * Returns the GroupStatistics for a specific group. * @param company Owner of the group. * @param id_g GroupID of the group. * @param type VehicleType of the vehicles in the group. * @return Statistics for the group. */ /* static */ GroupStatistics &GroupStatistics::Get(CompanyID company, GroupID id_g, VehicleType type) { if (Group::IsValidID(id_g)) { Group *g = Group::Get(id_g); assert(g->owner == company); assert(g->vehicle_type == type); return g->statistics; } if (IsDefaultGroupID(id_g)) return Company::Get(company)->group_default[type]; if (IsAllGroupID(id_g)) return Company::Get(company)->group_all[type]; NOT_REACHED(); } /** * Returns the GroupStatistic for the group of a vehicle. * @param v Vehicle. * @return GroupStatistics for the group of the vehicle. */ /* static */ GroupStatistics &GroupStatistics::Get(const Vehicle *v) { return GroupStatistics::Get(v->owner, v->group_id, v->type); } /** * Returns the GroupStatistic for the ALL_GROUPO of a vehicle type. * @param v Vehicle. * @return GroupStatistics for the ALL_GROUP of the vehicle type. */ /* static */ GroupStatistics &GroupStatistics::GetAllGroup(const Vehicle *v) { return GroupStatistics::Get(v->owner, ALL_GROUP, v->type); } /** * Update all caches after loading a game, changing NewGRF etc.. */ /* static */ void GroupStatistics::UpdateAfterLoad() { /* Set up the engine count for all companies */ Company *c; FOR_ALL_COMPANIES(c) { for (VehicleType type = VEH_BEGIN; type < VEH_COMPANY_END; type++) { c->group_all[type].Clear(); c->group_default[type].Clear(); } } /* Recalculate */ Group *g; FOR_ALL_GROUPS(g) { g->statistics.Clear(); } const Vehicle *v; FOR_ALL_VEHICLES(v) { if (!v->IsEngineCountable()) continue; GroupStatistics::CountEngine(v, 1); if (v->IsPrimaryVehicle()) GroupStatistics::CountVehicle(v, 1); } FOR_ALL_COMPANIES(c) { GroupStatistics::UpdateAutoreplace(c->index); } } /** * Update num_vehicle when adding or removing a vehicle. * @param v Vehicle to count. * @param delta +1 to add, -1 to remove. */ /* static */ void GroupStatistics::CountVehicle(const Vehicle *v, int delta) { assert(delta == 1 || delta == -1); GroupStatistics &stats_all = GroupStatistics::GetAllGroup(v); GroupStatistics &stats = GroupStatistics::Get(v); stats_all.num_vehicle += delta; stats.num_vehicle += delta; if (v->age > VEHICLE_PROFIT_MIN_AGE) { stats_all.num_profit_vehicle += delta; stats_all.profit_last_year += v->GetDisplayProfitLastYear() * delta; stats.num_profit_vehicle += delta; stats.profit_last_year += v->GetDisplayProfitLastYear() * delta; } } /** * Update num_engines when adding/removing an engine. * @param v Engine to count. * @param delta +1 to add, -1 to remove. */ /* static */ void GroupStatistics::CountEngine(const Vehicle *v, int delta) { assert(delta == 1 || delta == -1); GroupStatistics::GetAllGroup(v).num_engines[v->engine_type] += delta; GroupStatistics::Get(v).num_engines[v->engine_type] += delta; } /** * Add a vehicle to the profit sum of its group. */ /* static */ void GroupStatistics::VehicleReachedProfitAge(const Vehicle *v) { GroupStatistics &stats_all = GroupStatistics::GetAllGroup(v); GroupStatistics &stats = GroupStatistics::Get(v); stats_all.num_profit_vehicle++; stats_all.profit_last_year += v->GetDisplayProfitLastYear(); stats.num_profit_vehicle++; stats.profit_last_year += v->GetDisplayProfitLastYear(); } /** * Recompute the profits for all groups. */ /* static */ void GroupStatistics::UpdateProfits() { /* Set up the engine count for all companies */ Company *c; FOR_ALL_COMPANIES(c) { for (VehicleType type = VEH_BEGIN; type < VEH_COMPANY_END; type++) { c->group_all[type].ClearProfits(); c->group_default[type].ClearProfits(); } } /* Recalculate */ Group *g; FOR_ALL_GROUPS(g) { g->statistics.ClearProfits(); } const Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->IsPrimaryVehicle() && v->age > VEHICLE_PROFIT_MIN_AGE) GroupStatistics::VehicleReachedProfitAge(v); } } /** * Update autoreplace_defined and autoreplace_finished of all statistics of a company. * @param company Company to update statistics for. */ /* static */ void GroupStatistics::UpdateAutoreplace(CompanyID company) { /* Set up the engine count for all companies */ Company *c = Company::Get(company); for (VehicleType type = VEH_BEGIN; type < VEH_COMPANY_END; type++) { c->group_all[type].ClearAutoreplace(); c->group_default[type].ClearAutoreplace(); } /* Recalculate */ Group *g; FOR_ALL_GROUPS(g) { if (g->owner != company) continue; g->statistics.ClearAutoreplace(); } for (EngineRenewList erl = c->engine_renew_list; erl != NULL; erl = erl->next) { const Engine *e = Engine::Get(erl->from); GroupStatistics &stats = GroupStatistics::Get(company, erl->group_id, e->type); if (!stats.autoreplace_defined) { stats.autoreplace_defined = true; stats.autoreplace_finished = true; } if (stats.num_engines[erl->from] > 0) stats.autoreplace_finished = false; } } /** * Update the num engines of a groupID. Decrease the old one and increase the new one * @note called in SetTrainGroupID and UpdateTrainGroupID * @param v Vehicle we have to update * @param old_g index of the old group * @param new_g index of the new group */ static inline void UpdateNumEngineGroup(const Vehicle *v, GroupID old_g, GroupID new_g) { if (old_g != new_g) { /* Decrease the num engines in the old group */ GroupStatistics::Get(v->owner, old_g, v->type).num_engines[v->engine_type]--; /* Increase the num engines in the new group */ GroupStatistics::Get(v->owner, new_g, v->type).num_engines[v->engine_type]++; } } Group::Group(Owner owner) { this->owner = owner; } Group::~Group() { free(this->name); } /** * Create a new vehicle group. * @param tile unused * @param flags type of operation * @param p1 vehicle type * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdCreateGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleType vt = Extract(p1); if (!IsCompanyBuildableVehicleType(vt)) return CMD_ERROR; if (!Group::CanAllocateItem()) return CMD_ERROR; if (flags & DC_EXEC) { Group *g = new Group(_current_company); g->replace_protection = false; g->vehicle_type = vt; _new_group_id = g->index; InvalidateWindowData(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_GROUP_LIST, vt, _current_company).Pack()); } return CommandCost(); } /** * Add all vehicles in the given group to the default group and then deletes the group. * @param tile unused * @param flags type of operation * @param p1 index of array group * - p1 bit 0-15 : GroupID * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdDeleteGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Group *g = Group::GetIfValid(p1); if (g == NULL || g->owner != _current_company) return CMD_ERROR; /* Remove all vehicles from the group */ DoCommand(0, p1, 0, flags, CMD_REMOVE_ALL_VEHICLES_GROUP); if (flags & DC_EXEC) { /* Update backupped orders if needed */ OrderBackup::ClearGroup(g->index); /* If we set an autoreplace for the group we delete, remove it. */ if (_current_company < MAX_COMPANIES) { Company *c; EngineRenew *er; c = Company::Get(_current_company); FOR_ALL_ENGINE_RENEWS(er) { if (er->group_id == g->index) RemoveEngineReplacementForCompany(c, er->from, g->index, flags); } } VehicleType vt = g->vehicle_type; /* Delete the Replace Vehicle Windows */ DeleteWindowById(WC_REPLACE_VEHICLE, g->vehicle_type); delete g; InvalidateWindowData(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_GROUP_LIST, vt, _current_company).Pack()); } return CommandCost(); } static bool IsUniqueGroupNameForVehicleType(const char *name, VehicleType type) { const Group *g; FOR_ALL_GROUPS(g) { if (g->name != NULL && g->vehicle_type == type && strcmp(g->name, name) == 0) return false; } return true; } /** * Rename a group * @param tile unused * @param flags type of operation * @param p1 index of array group * - p1 bit 0-15 : GroupID * @param p2 unused * @param text the new name or an empty string when resetting to the default * @return the cost of this operation or an error */ CommandCost CmdRenameGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Group *g = Group::GetIfValid(p1); if (g == NULL || g->owner != _current_company) return CMD_ERROR; bool reset = StrEmpty(text); if (!reset) { if (Utf8StringLength(text) >= MAX_LENGTH_GROUP_NAME_CHARS) return CMD_ERROR; if (!IsUniqueGroupNameForVehicleType(text, g->vehicle_type)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE); } if (flags & DC_EXEC) { /* Delete the old name */ free(g->name); /* Assign the new one */ g->name = reset ? NULL : strdup(text); SetWindowDirty(WC_REPLACE_VEHICLE, g->vehicle_type); InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack()); } return CommandCost(); } /** * Do add a vehicle to a group. * @param v Vehicle to add. * @param new_g Group to add to. */ static void AddVehicleToGroup(Vehicle *v, GroupID new_g) { GroupStatistics::CountVehicle(v, -1); switch (v->type) { default: NOT_REACHED(); case VEH_TRAIN: SetTrainGroupID(Train::From(v), new_g); break; case VEH_ROAD: case VEH_SHIP: case VEH_AIRCRAFT: if (v->IsEngineCountable()) UpdateNumEngineGroup(v, v->group_id, new_g); v->group_id = new_g; break; } GroupStatistics::CountVehicle(v, 1); } /** * Add a vehicle to a group * @param tile unused * @param flags type of operation * @param p1 index of array group * - p1 bit 0-15 : GroupID * @param p2 vehicle to add to a group * - p2 bit 0-19 : VehicleID * - p2 bit 31 : Add shared vehicles as well. * @param text unused * @return the cost of this operation or an error */ CommandCost CmdAddVehicleGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Vehicle *v = Vehicle::GetIfValid(GB(p2, 0, 20)); GroupID new_g = p1; if (v == NULL || (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g) && new_g != NEW_GROUP)) return CMD_ERROR; if (Group::IsValidID(new_g)) { Group *g = Group::Get(new_g); if (g->owner != _current_company || g->vehicle_type != v->type) return CMD_ERROR; } if (v->owner != _current_company || !v->IsPrimaryVehicle()) return CMD_ERROR; if (new_g == NEW_GROUP) { /* Create new group. */ CommandCost ret = CmdCreateGroup(0, flags, v->type, 0, NULL); if (ret.Failed()) return ret; new_g = _new_group_id; } if (flags & DC_EXEC) { AddVehicleToGroup(v, new_g); if (HasBit(p2, 31)) { /* Add vehicles in the shared order list as well. */ for (Vehicle *v2 = v->FirstShared(); v2 != NULL; v2 = v2->NextShared()) { if (v2->group_id != new_g) AddVehicleToGroup(v2, new_g); } } GroupStatistics::UpdateAutoreplace(v->owner); /* Update the Replace Vehicle Windows */ SetWindowDirty(WC_REPLACE_VEHICLE, v->type); InvalidateWindowData(GetWindowClassForVehicleType(v->type), VehicleListIdentifier(VL_GROUP_LIST, v->type, _current_company).Pack()); } return CommandCost(); } /** * Add all shared vehicles of all vehicles from a group * @param tile unused * @param flags type of operation * @param p1 index of group array * - p1 bit 0-15 : GroupID * @param p2 type of vehicles * @param text unused * @return the cost of this operation or an error */ CommandCost CmdAddSharedVehicleGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleType type = Extract(p2); GroupID id_g = p1; if (!Group::IsValidID(id_g) || !IsCompanyBuildableVehicleType(type)) return CMD_ERROR; if (flags & DC_EXEC) { Vehicle *v; /* Find the first front engine which belong to the group id_g * then add all shared vehicles of this front engine to the group id_g */ FOR_ALL_VEHICLES(v) { if (v->type == type && v->IsPrimaryVehicle()) { if (v->group_id != id_g) continue; /* For each shared vehicles add it to the group */ for (Vehicle *v2 = v->FirstShared(); v2 != NULL; v2 = v2->NextShared()) { if (v2->group_id != id_g) DoCommand(tile, id_g, v2->index, flags, CMD_ADD_VEHICLE_GROUP, text); } } } InvalidateWindowData(GetWindowClassForVehicleType(type), VehicleListIdentifier(VL_GROUP_LIST, type, _current_company).Pack()); } return CommandCost(); } /** * Remove all vehicles from a group * @param tile unused * @param flags type of operation * @param p1 index of group array * - p1 bit 0-15 : GroupID * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdRemoveAllVehiclesGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { GroupID old_g = p1; Group *g = Group::GetIfValid(old_g); if (g == NULL || g->owner != _current_company) return CMD_ERROR; if (flags & DC_EXEC) { Vehicle *v; /* Find each Vehicle that belongs to the group old_g and add it to the default group */ FOR_ALL_VEHICLES(v) { if (v->IsPrimaryVehicle()) { if (v->group_id != old_g) continue; /* Add The Vehicle to the default group */ DoCommand(tile, DEFAULT_GROUP, v->index, flags, CMD_ADD_VEHICLE_GROUP, text); } } InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack()); } return CommandCost(); } /** * (Un)set global replace protection from a group * @param tile unused * @param flags type of operation * @param p1 index of group array * - p1 bit 0-15 : GroupID * @param p2 * - p2 bit 0 : 1 to set or 0 to clear protection. * @param text unused * @return the cost of this operation or an error */ CommandCost CmdSetGroupReplaceProtection(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Group *g = Group::GetIfValid(p1); if (g == NULL || g->owner != _current_company) return CMD_ERROR; if (flags & DC_EXEC) { g->replace_protection = HasBit(p2, 0); SetWindowDirty(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack()); InvalidateWindowData(WC_REPLACE_VEHICLE, g->vehicle_type); } return CommandCost(); } /** * Decrease the num_vehicle variable before delete an front engine from a group * @note Called in CmdSellRailWagon and DeleteLasWagon, * @param v FrontEngine of the train we want to remove. */ void RemoveVehicleFromGroup(const Vehicle *v) { if (!v->IsPrimaryVehicle()) return; if (!IsDefaultGroupID(v->group_id)) GroupStatistics::CountVehicle(v, -1); } /** * Affect the groupID of a train to new_g. * @note called in CmdAddVehicleGroup and CmdMoveRailVehicle * @param v First vehicle of the chain. * @param new_g index of array group */ void SetTrainGroupID(Train *v, GroupID new_g) { if (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g)) return; assert(v->IsFrontEngine() || IsDefaultGroupID(new_g)); for (Vehicle *u = v; u != NULL; u = u->Next()) { if (u->IsEngineCountable()) UpdateNumEngineGroup(u, u->group_id, new_g); u->group_id = new_g; } /* Update the Replace Vehicle Windows */ GroupStatistics::UpdateAutoreplace(v->owner); SetWindowDirty(WC_REPLACE_VEHICLE, VEH_TRAIN); } /** * Recalculates the groupID of a train. Should be called each time a vehicle is added * to/removed from the chain,. * @note this needs to be called too for 'wagon chains' (in the depot, without an engine) * @note Called in CmdBuildRailVehicle, CmdBuildRailWagon, CmdMoveRailVehicle, CmdSellRailWagon * @param v First vehicle of the chain. */ void UpdateTrainGroupID(Train *v) { assert(v->IsFrontEngine() || v->IsFreeWagon()); GroupID new_g = v->IsFrontEngine() ? v->group_id : (GroupID)DEFAULT_GROUP; for (Vehicle *u = v; u != NULL; u = u->Next()) { if (u->IsEngineCountable()) UpdateNumEngineGroup(u, u->group_id, new_g); u->group_id = new_g; } /* Update the Replace Vehicle Windows */ GroupStatistics::UpdateAutoreplace(v->owner); SetWindowDirty(WC_REPLACE_VEHICLE, VEH_TRAIN); } /** * Get the number of engines with EngineID id_e in the group with GroupID * id_g * @param company The company the group belongs to * @param id_g The GroupID of the group used * @param id_e The EngineID of the engine to count * @return The number of engines with EngineID id_e in the group */ uint GetGroupNumEngines(CompanyID company, GroupID id_g, EngineID id_e) { const Engine *e = Engine::Get(id_e); return GroupStatistics::Get(company, id_g, e->type).num_engines[id_e]; } void RemoveAllGroupsForCompany(const CompanyID company) { Group *g; FOR_ALL_GROUPS(g) { if (company == g->owner) delete g; } } openttd-1.3.3/src/rail_type.h0000644000000000000000000000511012246102611014611 0ustar rootroot/* $Id: rail_type.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file rail_type.h The different types of rail */ #ifndef RAIL_TYPE_H #define RAIL_TYPE_H #include "core/enum_type.hpp" typedef uint32 RailTypeLabel; static const RailTypeLabel RAILTYPE_RAIL_LABEL = 'RAIL'; static const RailTypeLabel RAILTYPE_ELECTRIC_LABEL = 'ELRL'; static const RailTypeLabel RAILTYPE_MONO_LABEL = 'MONO'; static const RailTypeLabel RAILTYPE_MAGLEV_LABEL = 'MGLV'; /** * Enumeration for all possible railtypes. * * This enumeration defines all 4 possible railtypes. */ enum RailType { RAILTYPE_BEGIN = 0, ///< Used for iterations RAILTYPE_RAIL = 0, ///< Standard non-electric rails RAILTYPE_ELECTRIC = 1, ///< Electric rails RAILTYPE_MONO = 2, ///< Monorail RAILTYPE_MAGLEV = 3, ///< Maglev RAILTYPE_END = 16, ///< Used for iterations INVALID_RAILTYPE = 0xFF, ///< Flag for invalid railtype DEF_RAILTYPE_FIRST = RAILTYPE_END, ///< Default railtype: first available DEF_RAILTYPE_LAST, ///< Default railtype: last available DEF_RAILTYPE_MOST_USED, ///< Default railtype: most used }; /** Allow incrementing of Track variables */ DECLARE_POSTFIX_INCREMENT(RailType) /** Define basic enum properties */ template <> struct EnumPropsT : MakeEnumPropsT {}; typedef TinyEnumT RailTypeByte; /** * The different roadtypes we support, but then a bitmask of them */ enum RailTypes { RAILTYPES_NONE = 0, ///< No rail types RAILTYPES_RAIL = 1 << RAILTYPE_RAIL, ///< Non-electrified rails RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails RAILTYPES_MONO = 1 << RAILTYPE_MONO, ///< Monorail! RAILTYPES_MAGLEV = 1 << RAILTYPE_MAGLEV, ///< Ever fast maglev INVALID_RAILTYPES = UINT_MAX, ///< Invalid railtypes }; DECLARE_ENUM_AS_BIT_SET(RailTypes) #endif /* RAIL_TYPE_H */ openttd-1.3.3/src/clear_cmd.cpp0000644000000000000000000002700212246102611015071 0ustar rootroot/* $Id: clear_cmd.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file clear_cmd.cpp Commands related to clear tiles. */ #include "stdafx.h" #include "clear_map.h" #include "command_func.h" #include "landscape.h" #include "genworld.h" #include "viewport_func.h" #include "water.h" #include "core/random_func.hpp" #include "newgrf_generic.h" #include "table/strings.h" #include "table/sprites.h" #include "table/clear_land.h" static CommandCost ClearTile_Clear(TileIndex tile, DoCommandFlag flags) { static const Price clear_price_table[] = { PR_CLEAR_GRASS, PR_CLEAR_ROUGH, PR_CLEAR_ROCKS, PR_CLEAR_FIELDS, PR_CLEAR_ROUGH, PR_CLEAR_ROUGH, }; CommandCost price(EXPENSES_CONSTRUCTION); if (!IsClearGround(tile, CLEAR_GRASS) || GetClearDensity(tile) != 0) { price.AddCost(_price[clear_price_table[GetClearGround(tile)]]); } if (flags & DC_EXEC) DoClearSquare(tile); return price; } void DrawClearLandTile(const TileInfo *ti, byte set) { DrawGroundSprite(SPR_FLAT_BARE_LAND + SlopeToSpriteOffset(ti->tileh) + set * 19, PAL_NONE); } void DrawHillyLandTile(const TileInfo *ti) { if (ti->tileh != SLOPE_FLAT) { DrawGroundSprite(SPR_FLAT_ROUGH_LAND + SlopeToSpriteOffset(ti->tileh), PAL_NONE); } else { DrawGroundSprite(_landscape_clear_sprites_rough[GB(ti->x ^ ti->y, 4, 3)], PAL_NONE); } } static void DrawClearLandFence(const TileInfo *ti) { /* combine fences into one sprite object */ StartSpriteCombine(); int maxz = GetSlopeMaxPixelZ(ti->tileh); bool fence_nw = GetFenceNW(ti->tile) != 0; if (fence_nw) { int z = GetSlopePixelZInCorner(ti->tileh, CORNER_W); SpriteID sprite = _clear_land_fence_sprites[GetFenceNW(ti->tile) - 1] + _fence_mod_by_tileh_nw[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x, ti->y - 15, 16, 31, maxz - z + 4, ti->z + z, false, 0, 15, -z); } bool fence_ne = GetFenceNE(ti->tile) != 0; if (fence_ne) { int z = GetSlopePixelZInCorner(ti->tileh, CORNER_E); SpriteID sprite = _clear_land_fence_sprites[GetFenceNE(ti->tile) - 1] + _fence_mod_by_tileh_ne[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x - 15, ti->y, 31, 16, maxz - z + 4, ti->z + z, false, 15, 0, -z); } bool fence_sw = GetFenceSW(ti->tile) != 0; bool fence_se = GetFenceSE(ti->tile) != 0; if (fence_sw || fence_se) { int z = GetSlopePixelZInCorner(ti->tileh, CORNER_S); if (fence_sw) { SpriteID sprite = _clear_land_fence_sprites[GetFenceSW(ti->tile) - 1] + _fence_mod_by_tileh_sw[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x, ti->y, 16, 16, maxz - z + 4, ti->z + z, false, 0, 0, -z); } if (fence_se) { SpriteID sprite = _clear_land_fence_sprites[GetFenceSE(ti->tile) - 1] + _fence_mod_by_tileh_se[ti->tileh]; AddSortableSpriteToDraw(sprite, PAL_NONE, ti->x, ti->y, 16, 16, maxz - z + 4, ti->z + z, false, 0, 0, -z); } } EndSpriteCombine(); } static void DrawTile_Clear(TileInfo *ti) { switch (GetClearGround(ti->tile)) { case CLEAR_GRASS: DrawClearLandTile(ti, GetClearDensity(ti->tile)); break; case CLEAR_ROUGH: DrawHillyLandTile(ti); break; case CLEAR_ROCKS: DrawGroundSprite(SPR_FLAT_ROCKY_LAND_1 + SlopeToSpriteOffset(ti->tileh), PAL_NONE); break; case CLEAR_FIELDS: DrawGroundSprite(_clear_land_sprites_farmland[GetFieldType(ti->tile)] + SlopeToSpriteOffset(ti->tileh), PAL_NONE); DrawClearLandFence(ti); break; case CLEAR_SNOW: case CLEAR_DESERT: DrawGroundSprite(_clear_land_sprites_snow_desert[GetClearDensity(ti->tile)] + SlopeToSpriteOffset(ti->tileh), PAL_NONE); break; } DrawBridgeMiddle(ti); } static int GetSlopePixelZ_Clear(TileIndex tile, uint x, uint y) { int z; Slope tileh = GetTilePixelSlope(tile, &z); return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh); } static Foundation GetFoundation_Clear(TileIndex tile, Slope tileh) { return FOUNDATION_NONE; } static void UpdateFences(TileIndex tile) { assert(IsTileType(tile, MP_CLEAR) && IsClearGround(tile, CLEAR_FIELDS)); bool dirty = false; bool neighbour = (IsTileType(TILE_ADDXY(tile, 1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 1, 0), CLEAR_FIELDS)); if (!neighbour && GetFenceSW(tile) == 0) { SetFenceSW(tile, 3); dirty = true; } neighbour = (IsTileType(TILE_ADDXY(tile, 0, 1), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 0, 1), CLEAR_FIELDS)); if (!neighbour && GetFenceSE(tile) == 0) { SetFenceSE(tile, 3); dirty = true; } neighbour = (IsTileType(TILE_ADDXY(tile, -1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, -1, 0), CLEAR_FIELDS)); if (!neighbour && GetFenceNE(tile) == 0) { SetFenceNE(tile, 3); dirty = true; } neighbour = (IsTileType(TILE_ADDXY(tile, 0, -1), MP_CLEAR) && IsClearGround(TILE_ADDXY(tile, 0, -1), CLEAR_FIELDS)); if (!neighbour && GetFenceNW(tile) == 0) { SetFenceNW(tile, 3); dirty = true; } if (dirty) MarkTileDirtyByTile(tile); } /** Convert to or from snowy tiles. */ static void TileLoopClearAlps(TileIndex tile) { int k = GetTileZ(tile) - GetSnowLine() + 1; if (k < 0) { /* Below the snow line, do nothing if no snow. */ if (!IsSnowTile(tile)) return; } else { /* At or above the snow line, make snow tile if needed. */ if (!IsSnowTile(tile)) { MakeSnow(tile); MarkTileDirtyByTile(tile); return; } } /* Update snow density. */ uint current_density = GetClearDensity(tile); uint req_density = (k < 0) ? 0u : min((uint)k, 3); if (current_density < req_density) { AddClearDensity(tile, 1); } else if (current_density > req_density) { AddClearDensity(tile, -1); } else { /* Density at the required level. */ if (k >= 0) return; ClearSnow(tile); } MarkTileDirtyByTile(tile); } /** * Tests if at least one surrounding tile is desert * @param tile tile to check * @return does this tile have at least one desert tile around? */ static inline bool NeighbourIsDesert(TileIndex tile) { return GetTropicZone(tile + TileDiffXY( 1, 0)) == TROPICZONE_DESERT || GetTropicZone(tile + TileDiffXY( -1, 0)) == TROPICZONE_DESERT || GetTropicZone(tile + TileDiffXY( 0, 1)) == TROPICZONE_DESERT || GetTropicZone(tile + TileDiffXY( 0, -1)) == TROPICZONE_DESERT; } static void TileLoopClearDesert(TileIndex tile) { /* Current desert level - 0 if it is not desert */ uint current = 0; if (IsClearGround(tile, CLEAR_DESERT)) current = GetClearDensity(tile); /* Expected desert level - 0 if it shouldn't be desert */ uint expected = 0; if (GetTropicZone(tile) == TROPICZONE_DESERT) { expected = 3; } else if (NeighbourIsDesert(tile)) { expected = 1; } if (current == expected) return; if (expected == 0) { SetClearGroundDensity(tile, CLEAR_GRASS, 3); } else { /* Transition from clear to desert is not smooth (after clearing desert tile) */ SetClearGroundDensity(tile, CLEAR_DESERT, expected); } MarkTileDirtyByTile(tile); } static void TileLoop_Clear(TileIndex tile) { /* If the tile is at any edge flood it to prevent maps without water. */ if (_settings_game.construction.freeform_edges && DistanceFromEdge(tile) == 1) { int z; Slope slope = GetTileSlope(tile, &z); if (z == 0 && slope == SLOPE_FLAT) { DoFloodTile(tile); MarkTileDirtyByTile(tile); return; } } AmbientSoundEffect(tile); switch (_settings_game.game_creation.landscape) { case LT_TROPIC: TileLoopClearDesert(tile); break; case LT_ARCTIC: TileLoopClearAlps(tile); break; } switch (GetClearGround(tile)) { case CLEAR_GRASS: if (GetClearDensity(tile) == 3) return; if (_game_mode != GM_EDITOR) { if (GetClearCounter(tile) < 7) { AddClearCounter(tile, 1); return; } else { SetClearCounter(tile, 0); AddClearDensity(tile, 1); } } else { SetClearGroundDensity(tile, GB(Random(), 0, 8) > 21 ? CLEAR_GRASS : CLEAR_ROUGH, 3); } break; case CLEAR_FIELDS: UpdateFences(tile); if (_game_mode == GM_EDITOR) return; if (GetClearCounter(tile) < 7) { AddClearCounter(tile, 1); return; } else { SetClearCounter(tile, 0); } if (GetIndustryIndexOfField(tile) == INVALID_INDUSTRY && GetFieldType(tile) >= 7) { /* This farmfield is no longer farmfield, so make it grass again */ MakeClear(tile, CLEAR_GRASS, 2); } else { uint field_type = GetFieldType(tile); field_type = (field_type < 8) ? field_type + 1 : 0; SetFieldType(tile, field_type); } break; default: return; } MarkTileDirtyByTile(tile); } void GenerateClearTile() { uint i, gi; TileIndex tile; /* add rough tiles */ i = ScaleByMapSize(GB(Random(), 0, 10) + 0x400); gi = ScaleByMapSize(GB(Random(), 0, 7) + 0x80); SetGeneratingWorldProgress(GWP_ROUGH_ROCKY, gi + i); do { IncreaseGeneratingWorldProgress(GWP_ROUGH_ROCKY); tile = RandomTile(); if (IsTileType(tile, MP_CLEAR) && !IsClearGround(tile, CLEAR_DESERT)) SetClearGroundDensity(tile, CLEAR_ROUGH, 3); } while (--i); /* add rocky tiles */ i = gi; do { uint32 r = Random(); tile = RandomTileSeed(r); IncreaseGeneratingWorldProgress(GWP_ROUGH_ROCKY); if (IsTileType(tile, MP_CLEAR) && !IsClearGround(tile, CLEAR_DESERT)) { uint j = GB(r, 16, 4) + 5; for (;;) { TileIndex tile_new; SetClearGroundDensity(tile, CLEAR_ROCKS, 3); do { if (--j == 0) goto get_out; tile_new = tile + TileOffsByDiagDir((DiagDirection)GB(Random(), 0, 2)); } while (!IsTileType(tile_new, MP_CLEAR) || IsClearGround(tile_new, CLEAR_DESERT)); tile = tile_new; } get_out:; } } while (--i); } static TrackStatus GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { return 0; } static const StringID _clear_land_str[] = { STR_LAI_CLEAR_DESCRIPTION_GRASS, STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND, STR_LAI_CLEAR_DESCRIPTION_ROCKS, STR_LAI_CLEAR_DESCRIPTION_FIELDS, STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND, STR_LAI_CLEAR_DESCRIPTION_DESERT }; static void GetTileDesc_Clear(TileIndex tile, TileDesc *td) { if (IsClearGround(tile, CLEAR_GRASS) && GetClearDensity(tile) == 0) { td->str = STR_LAI_CLEAR_DESCRIPTION_BARE_LAND; } else { td->str = _clear_land_str[GetClearGround(tile)]; } td->owner[0] = GetTileOwner(tile); } static void ChangeTileOwner_Clear(TileIndex tile, Owner old_owner, Owner new_owner) { return; } static CommandCost TerraformTile_Clear(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } extern const TileTypeProcs _tile_type_clear_procs = { DrawTile_Clear, ///< draw_tile_proc GetSlopePixelZ_Clear, ///< get_slope_z_proc ClearTile_Clear, ///< clear_tile_proc NULL, ///< add_accepted_cargo_proc GetTileDesc_Clear, ///< get_tile_desc_proc GetTileTrackStatus_Clear, ///< get_tile_track_status_proc NULL, ///< click_tile_proc NULL, ///< animate_tile_proc TileLoop_Clear, ///< tile_loop_proc ChangeTileOwner_Clear, ///< change_tile_owner_proc NULL, ///< add_produced_cargo_proc NULL, ///< vehicle_enter_tile_proc GetFoundation_Clear, ///< get_foundation_proc TerraformTile_Clear, ///< terraform_tile_proc }; openttd-1.3.3/src/tile_type.h0000644000000000000000000000662512246102611014633 0ustar rootroot/* $Id: tile_type.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tile_type.h Types related to tiles. */ #ifndef TILE_TYPE_H #define TILE_TYPE_H static const uint TILE_SIZE = 16; ///< Tiles are 16x16 "units" in size static const uint TILE_UNIT_MASK = TILE_SIZE - 1; ///< For masking in/out the inner-tile units. static const uint TILE_PIXELS = 32; ///< a tile is 32x32 pixels static const uint TILE_HEIGHT = 8; ///< The standard height-difference between tiles on two levels is 8 (z-diff 8) static const uint MAX_TILE_HEIGHT = 15; ///< Maximum allowed tile height static const uint MIN_SNOWLINE_HEIGHT = 2; ///< Minimum snowline height static const uint DEF_SNOWLINE_HEIGHT = 7; ///< Default snowline height static const uint MAX_SNOWLINE_HEIGHT = (MAX_TILE_HEIGHT - 2); ///< Maximum allowed snowline height /** * The different types of tiles. * * Each tile belongs to one type, according whatever is build on it. * * @note A railway with a crossing street is marked as MP_ROAD. */ enum TileType { MP_CLEAR, ///< A tile without any structures, i.e. grass, rocks, farm fields etc. MP_RAILWAY, ///< A railway MP_ROAD, ///< A tile with road (or tram tracks) MP_HOUSE, ///< A house by a town MP_TREES, ///< Tile got trees MP_STATION, ///< A tile of a station MP_WATER, ///< Water tile MP_VOID, ///< Invisible tiles at the SW and SE border MP_INDUSTRY, ///< Part of an industry MP_TUNNELBRIDGE, ///< Tunnel entry/exit and bridge heads MP_OBJECT, ///< Contains objects such as transmitters and owned land }; /** * Additional infos of a tile on a tropic game. * * The tropiczone is not modified during gameplay. It mainly affects tree growth. (desert tiles are visible though) * * In randomly generated maps: * TROPICZONE_DESERT: Generated everywhere, if there is neither water nor mountains (TileHeight >= 4) in a certain distance from the tile. * TROPICZONE_RAINFOREST: Generated everywhere, if there is no desert in a certain distance from the tile. * TROPICZONE_NORMAL: Everywhere else, i.e. between desert and rainforest and on sea (if you clear the water). * * In scenarios: * TROPICZONE_NORMAL: Default value. * TROPICZONE_DESERT: Placed manually. * TROPICZONE_RAINFOREST: Placed if you plant certain rainforest-trees. */ enum TropicZone { TROPICZONE_NORMAL = 0, ///< Normal tropiczone TROPICZONE_DESERT = 1, ///< Tile is desert TROPICZONE_RAINFOREST = 2, ///< Rainforest tile }; /** * The index/ID of a Tile. */ typedef uint32 TileIndex; /** * The very nice invalid tile marker */ static const TileIndex INVALID_TILE = (TileIndex)-1; #endif /* TILE_TYPE_H */ openttd-1.3.3/src/textbuf_type.h0000644000000000000000000000637212246102611015356 0ustar rootroot/* $Id: textbuf_type.h 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file textbuf_type.h Stuff related to text buffers. */ #ifndef TEXTBUF_TYPE_H #define TEXTBUF_TYPE_H #include "string_type.h" #include "strings_type.h" #include "string_base.h" /** * Return values for Textbuf::HandleKeypress */ enum HandleKeyPressResult { HKPR_EDITING, ///< Textbuf content changed. HKPR_CURSOR, ///< Non-text change, e.g. cursor position. HKPR_CONFIRM, ///< Return or enter key pressed. HKPR_CANCEL, ///< Escape key pressed. HKPR_NOT_HANDLED, ///< Key does not affect editboxes. }; /** Helper/buffer for input fields. */ struct Textbuf { CharSetFilter afilter; ///< Allowed characters char * const buf; ///< buffer in which text is saved uint16 max_bytes; ///< the maximum size of the buffer in bytes (including terminating '\0') uint16 max_chars; ///< the maximum size of the buffer in characters (including terminating '\0') uint16 bytes; ///< the current size of the string in bytes (including terminating '\0') uint16 chars; ///< the current size of the string in characters (including terminating '\0') uint16 pixels; ///< the current size of the string in pixels bool caret; ///< is the caret ("_") visible or not uint16 caretpos; ///< the current position of the caret in the buffer, in bytes uint16 caretxoffs; ///< the current position of the caret in pixels uint16 markpos; ///< the start position of the marked area in the buffer, in bytes uint16 markend; ///< the end position of the marked area in the buffer, in bytes uint16 markxoffs; ///< the start position of the marked area in pixels uint16 marklength; ///< the length of the marked area in pixels explicit Textbuf(uint16 max_bytes, uint16 max_chars = UINT16_MAX); ~Textbuf(); void Assign(StringID string); void Assign(const char *text); void CDECL Print(const char *format, ...) WARN_FORMAT(2, 3); void DeleteAll(); bool InsertClipboard(); bool InsertChar(uint32 key); bool InsertString(const char *str, bool marked, const char *caret = NULL, const char *insert_location = NULL, const char *replacement_end = NULL); bool DeleteChar(uint16 keycode); bool MovePos(uint16 keycode); HandleKeyPressResult HandleKeyPress(WChar key, uint16 keycode); bool HandleCaret(); void UpdateSize(); void DiscardMarkedText(bool update = true); private: StringIterator *char_iter; bool CanDelChar(bool backspace); void DeleteText(uint16 from, uint16 to, bool update); void UpdateStringIter(); void UpdateWidth(); void UpdateCaretPosition(); void UpdateMarkedText(); }; #endif /* TEXTBUF_TYPE_H */ openttd-1.3.3/src/gui.h0000644000000000000000000000374212246102611013416 0ustar rootroot/* $Id: gui.h 24791 2012-12-05 19:37:15Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gui.h GUI functions that shouldn't be here. */ #ifndef GUI_H #define GUI_H #include "vehicle_type.h" #include "economy_type.h" #include "tile_type.h" #include "transport_type.h" struct Window; /* main_gui.cpp */ void HandleOnEditText(const char *str); void InitializeGUI(); /* settings_gui.cpp */ void ShowGameOptions(); void ShowGameSettings(); /* train_gui.cpp */ void ShowOrdersWindow(const Vehicle *v); /* dock_gui.cpp */ Window *ShowBuildDocksToolbar(); Window *ShowBuildDocksScenToolbar(); /* airport_gui.cpp */ Window *ShowBuildAirToolbar(); /* tgp_gui.cpp */ void ShowGenerateLandscape(); void ShowHeightmapLoad(); /* misc_gui.cpp */ void ShowLandInfo(TileIndex tile); void ShowAboutWindow(); void ShowBuildTreesToolbar(); void ShowTownDirectory(); void ShowIndustryDirectory(); void ShowIndustryCargoesWindow(); void ShowSubsidiesList(); void ShowGoalsList(); void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question); void ShowEstimatedCostOrIncome(Money cost, int x, int y); void ShowExtraViewPortWindow(TileIndex tile = INVALID_TILE); void ShowExtraViewPortWindowForTileUnderCursor(); /* bridge_gui.cpp */ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, byte bridge_type); void ShowBuildIndustryWindow(); void ShowFoundTownWindow(); void ShowMusicWindow(); #endif /* GUI_H */ openttd-1.3.3/src/order_backup.h0000644000000000000000000000605612246102611015273 0ustar rootroot/* $Id: order_backup.h 24444 2012-07-29 16:45:34Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_backup.h Functions related to order backups. */ #ifndef ORDER_BACKUP_H #define ORDER_BACKUP_H #include "core/pool_type.hpp" #include "group_type.h" #include "tile_type.h" #include "vehicle_type.h" #include "base_consist.h" /** Unique identifier for an order backup. */ typedef uint8 OrderBackupID; struct OrderBackup; /** The pool type for order backups. */ typedef Pool OrderBackupPool; /** The pool with order backups. */ extern OrderBackupPool _order_backup_pool; /** Flag to pass to the vehicle construction command when an order should be preserved. */ static const uint32 MAKE_ORDER_BACKUP_FLAG = 1U << 31; /** * Data for backing up an order of a vehicle so it can be * restored after a vehicle is rebuilt in the same depot. */ struct OrderBackup : OrderBackupPool::PoolItem<&_order_backup_pool>, BaseConsist { private: friend const struct SaveLoad *GetOrderBackupDescription(); ///< Saving and loading of order backups. friend void Load_BKOR(); ///< Creating empty orders upon savegame loading. uint32 user; ///< The user that requested the backup. TileIndex tile; ///< Tile of the depot where the order was changed. GroupID group; ///< The group the vehicle was part of. const Vehicle *clone; ///< Vehicle this vehicle was a clone of. Order *orders; ///< The actual orders if the vehicle was not a clone. /** Creation for savegame restoration. */ OrderBackup() {} OrderBackup(const Vehicle *v, uint32 user); void DoRestore(Vehicle *v); public: ~OrderBackup(); static void Backup(const Vehicle *v, uint32 user); static void Restore(Vehicle *v, uint32 user); static void ResetOfUser(TileIndex tile, uint32 user); static void ResetUser(uint32 user); static void Reset(TileIndex tile = INVALID_TILE, bool from_gui = true); static void ClearGroup(GroupID group); static void ClearVehicle(const Vehicle *v); static void RemoveOrder(OrderType type, DestinationID destination); }; /** * Iterator over all order backups from a given ID. * @param var The variable to iterate with. * @param start The start of the iteration. */ #define FOR_ALL_ORDER_BACKUPS_FROM(var, start) FOR_ALL_ITEMS_FROM(OrderBackup, order_backup_index, var, start) /** * Iterator over all order backups. * @param var The variable to iterate with. */ #define FOR_ALL_ORDER_BACKUPS(var) FOR_ALL_ORDER_BACKUPS_FROM(var, 0) #endif /* ORDER_BACKUP_H */ openttd-1.3.3/src/newgrf_engine.cpp0000644000000000000000000012772312246102611016010 0ustar rootroot/* $Id: newgrf_engine.cpp 24994 2013-02-14 17:04:01Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_engine.cpp NewGRF handling of engines. */ #include "stdafx.h" #include "debug.h" #include "train.h" #include "roadveh.h" #include "company_func.h" #include "newgrf_cargo.h" #include "newgrf_spritegroup.h" #include "date_func.h" #include "vehicle_func.h" #include "core/random_func.hpp" #include "aircraft.h" #include "station_base.h" #include "company_base.h" #include "newgrf_railtype.h" #include "ship.h" struct WagonOverride { EngineID *train_id; uint trains; CargoID cargo; const SpriteGroup *group; }; void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const SpriteGroup *group, EngineID *train_id, uint trains) { Engine *e = Engine::Get(engine); WagonOverride *wo; assert(cargo < NUM_CARGO + 2); // Include CT_DEFAULT and CT_PURCHASE pseudo cargoes. e->overrides_count++; e->overrides = ReallocT(e->overrides, e->overrides_count); wo = &e->overrides[e->overrides_count - 1]; wo->group = group; wo->cargo = cargo; wo->trains = trains; wo->train_id = MallocT(trains); memcpy(wo->train_id, train_id, trains * sizeof *train_id); } const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, EngineID overriding_engine) { const Engine *e = Engine::Get(engine); /* XXX: This could turn out to be a timesink on profiles. We could * always just dedicate 65535 bytes for an [engine][train] trampoline * for O(1). Or O(logMlogN) and searching binary tree or smt. like * that. --pasky */ for (uint i = 0; i < e->overrides_count; i++) { const WagonOverride *wo = &e->overrides[i]; if (wo->cargo != cargo && wo->cargo != CT_DEFAULT) continue; for (uint j = 0; j < wo->trains; j++) { if (wo->train_id[j] == overriding_engine) return wo->group; } } return NULL; } /** * Unload all wagon override sprite groups. */ void UnloadWagonOverrides(Engine *e) { for (uint i = 0; i < e->overrides_count; i++) { WagonOverride *wo = &e->overrides[i]; free(wo->train_id); } free(e->overrides); e->overrides_count = 0; e->overrides = NULL; } void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *group) { Engine *e = Engine::Get(engine); assert(cargo < lengthof(e->grf_prop.spritegroup)); if (e->grf_prop.spritegroup[cargo] != NULL) { grfmsg(6, "SetCustomEngineSprites: engine %d cargo %d already has group -- replacing", engine, cargo); } e->grf_prop.spritegroup[cargo] = group; } /** * Tie a GRFFile entry to an engine, to allow us to retrieve GRF parameters * etc during a game. * @param engine Engine ID to tie the GRFFile to. * @param file Pointer of GRFFile to tie. */ void SetEngineGRF(EngineID engine, const GRFFile *file) { Engine *e = Engine::Get(engine); e->grf_prop.grffile = file; } static int MapOldSubType(const Vehicle *v) { switch (v->type) { case VEH_TRAIN: if (Train::From(v)->IsEngine()) return 0; if (Train::From(v)->IsFreeWagon()) return 4; return 2; case VEH_ROAD: case VEH_SHIP: return 0; case VEH_AIRCRAFT: case VEH_DISASTER: return v->subtype; case VEH_EFFECT: return v->subtype << 1; default: NOT_REACHED(); } } /* TTDP style aircraft movement states for GRF Action 2 Var 0xE2 */ enum TTDPAircraftMovementStates { AMS_TTDP_HANGAR, AMS_TTDP_TO_HANGAR, AMS_TTDP_TO_PAD1, AMS_TTDP_TO_PAD2, AMS_TTDP_TO_PAD3, AMS_TTDP_TO_ENTRY_2_AND_3, AMS_TTDP_TO_ENTRY_2_AND_3_AND_H, AMS_TTDP_TO_JUNCTION, AMS_TTDP_LEAVE_RUNWAY, AMS_TTDP_TO_INWAY, AMS_TTDP_TO_RUNWAY, AMS_TTDP_TO_OUTWAY, AMS_TTDP_WAITING, AMS_TTDP_TAKEOFF, AMS_TTDP_TO_TAKEOFF, AMS_TTDP_CLIMBING, AMS_TTDP_FLIGHT_APPROACH, AMS_TTDP_UNUSED_0x11, AMS_TTDP_FLIGHT_TO_TOWER, AMS_TTDP_UNUSED_0x13, AMS_TTDP_FLIGHT_FINAL, AMS_TTDP_FLIGHT_DESCENT, AMS_TTDP_BRAKING, AMS_TTDP_HELI_TAKEOFF_AIRPORT, AMS_TTDP_HELI_TO_TAKEOFF_AIRPORT, AMS_TTDP_HELI_LAND_AIRPORT, AMS_TTDP_HELI_TAKEOFF_HELIPORT, AMS_TTDP_HELI_TO_TAKEOFF_HELIPORT, AMS_TTDP_HELI_LAND_HELIPORT, }; /** * Map OTTD aircraft movement states to TTDPatch style movement states * (VarAction 2 Variable 0xE2) */ static byte MapAircraftMovementState(const Aircraft *v) { const Station *st = GetTargetAirportIfValid(v); if (st == NULL) return AMS_TTDP_FLIGHT_TO_TOWER; const AirportFTAClass *afc = st->airport.GetFTA(); uint16 amdflag = afc->MovingData(v->pos)->flag; switch (v->state) { case HANGAR: /* The international airport is a special case as helicopters can land in * front of the hanger. Helicopters also change their air.state to * AMED_HELI_LOWER some time before actually descending. */ /* This condition only occurs for helicopters, during descent, * to a landing by the hanger of an international airport. */ if (amdflag & AMED_HELI_LOWER) return AMS_TTDP_HELI_LAND_AIRPORT; /* This condition only occurs for helicopters, before starting descent, * to a landing by the hanger of an international airport. */ if (amdflag & AMED_SLOWTURN) return AMS_TTDP_FLIGHT_TO_TOWER; /* The final two conditions apply to helicopters or aircraft. * Has reached hanger? */ if (amdflag & AMED_EXACTPOS) return AMS_TTDP_HANGAR; /* Still moving towards hanger. */ return AMS_TTDP_TO_HANGAR; case TERM1: if (amdflag & AMED_EXACTPOS) return AMS_TTDP_TO_PAD1; return AMS_TTDP_TO_JUNCTION; case TERM2: if (amdflag & AMED_EXACTPOS) return AMS_TTDP_TO_PAD2; return AMS_TTDP_TO_ENTRY_2_AND_3_AND_H; case TERM3: case TERM4: case TERM5: case TERM6: case TERM7: case TERM8: /* TTDPatch only has 3 terminals, so treat these states the same */ if (amdflag & AMED_EXACTPOS) return AMS_TTDP_TO_PAD3; return AMS_TTDP_TO_ENTRY_2_AND_3_AND_H; case HELIPAD1: case HELIPAD2: case HELIPAD3: /* Will only occur for helicopters.*/ if (amdflag & AMED_HELI_LOWER) return AMS_TTDP_HELI_LAND_AIRPORT; // Descending. if (amdflag & AMED_SLOWTURN) return AMS_TTDP_FLIGHT_TO_TOWER; // Still hasn't started descent. return AMS_TTDP_TO_JUNCTION; // On the ground. case TAKEOFF: // Moving to takeoff position. return AMS_TTDP_TO_OUTWAY; case STARTTAKEOFF: // Accelerating down runway. return AMS_TTDP_TAKEOFF; case ENDTAKEOFF: // Ascent return AMS_TTDP_CLIMBING; case HELITAKEOFF: // Helicopter is moving to take off position. if (afc->delta_z == 0) { return amdflag & AMED_HELI_RAISE ? AMS_TTDP_HELI_TAKEOFF_AIRPORT : AMS_TTDP_TO_JUNCTION; } else { return AMS_TTDP_HELI_TAKEOFF_HELIPORT; } case FLYING: return amdflag & AMED_HOLD ? AMS_TTDP_FLIGHT_APPROACH : AMS_TTDP_FLIGHT_TO_TOWER; case LANDING: // Descent return AMS_TTDP_FLIGHT_DESCENT; case ENDLANDING: // On the runway braking if (amdflag & AMED_BRAKE) return AMS_TTDP_BRAKING; /* Landed - moving off runway */ return AMS_TTDP_TO_INWAY; case HELILANDING: case HELIENDLANDING: // Helicoptor is decending. if (amdflag & AMED_HELI_LOWER) { return afc->delta_z == 0 ? AMS_TTDP_HELI_LAND_AIRPORT : AMS_TTDP_HELI_LAND_HELIPORT; } else { return AMS_TTDP_FLIGHT_TO_TOWER; } default: return AMS_TTDP_HANGAR; } } /* TTDP style aircraft movement action for GRF Action 2 Var 0xE6 */ enum TTDPAircraftMovementActions { AMA_TTDP_IN_HANGAR, AMA_TTDP_ON_PAD1, AMA_TTDP_ON_PAD2, AMA_TTDP_ON_PAD3, AMA_TTDP_HANGAR_TO_PAD1, AMA_TTDP_HANGAR_TO_PAD2, AMA_TTDP_HANGAR_TO_PAD3, AMA_TTDP_LANDING_TO_PAD1, AMA_TTDP_LANDING_TO_PAD2, AMA_TTDP_LANDING_TO_PAD3, AMA_TTDP_PAD1_TO_HANGAR, AMA_TTDP_PAD2_TO_HANGAR, AMA_TTDP_PAD3_TO_HANGAR, AMA_TTDP_PAD1_TO_TAKEOFF, AMA_TTDP_PAD2_TO_TAKEOFF, AMA_TTDP_PAD3_TO_TAKEOFF, AMA_TTDP_HANGAR_TO_TAKOFF, AMA_TTDP_LANDING_TO_HANGAR, AMA_TTDP_IN_FLIGHT, }; /** * Map OTTD aircraft movement states to TTDPatch style movement actions * (VarAction 2 Variable 0xE6) * This is not fully supported yet but it's enough for Planeset. */ static byte MapAircraftMovementAction(const Aircraft *v) { switch (v->state) { case HANGAR: return (v->cur_speed > 0) ? AMA_TTDP_LANDING_TO_HANGAR : AMA_TTDP_IN_HANGAR; case TERM1: case HELIPAD1: return (v->current_order.IsType(OT_LOADING)) ? AMA_TTDP_ON_PAD1 : AMA_TTDP_LANDING_TO_PAD1; case TERM2: case HELIPAD2: return (v->current_order.IsType(OT_LOADING)) ? AMA_TTDP_ON_PAD2 : AMA_TTDP_LANDING_TO_PAD2; case TERM3: case TERM4: case TERM5: case TERM6: case TERM7: case TERM8: case HELIPAD3: return (v->current_order.IsType(OT_LOADING)) ? AMA_TTDP_ON_PAD3 : AMA_TTDP_LANDING_TO_PAD3; case TAKEOFF: // Moving to takeoff position case STARTTAKEOFF: // Accelerating down runway case ENDTAKEOFF: // Ascent case HELITAKEOFF: /* @todo Need to find which terminal (or hanger) we've come from. How? */ return AMA_TTDP_PAD1_TO_TAKEOFF; case FLYING: return AMA_TTDP_IN_FLIGHT; case LANDING: // Descent case ENDLANDING: // On the runway braking case HELILANDING: case HELIENDLANDING: /* @todo Need to check terminal we're landing to. Is it known yet? */ return (v->current_order.IsType(OT_GOTO_DEPOT)) ? AMA_TTDP_LANDING_TO_HANGAR : AMA_TTDP_LANDING_TO_PAD1; default: return AMA_TTDP_IN_HANGAR; } } /* virtual */ uint32 VehicleScopeResolver::GetRandomBits() const { return this->v == NULL ? 0 : this->v->random_bits; } /* virtual */ uint32 VehicleScopeResolver::GetTriggers() const { return this->v == NULL ? 0 : this->v->waiting_triggers; } /* virtual */ void VehicleScopeResolver::SetTriggers(int triggers) const { /* Evil cast to get around const-ness. This used to be achieved by an * innocent looking function pointer cast... Currently I cannot see a * way of avoiding this without removing consts deep within gui code. */ Vehicle *v = const_cast(this->v); /* This function must only be called when processing triggers -- any * other time is an error. */ assert(this->ro->trigger != 0); if (v != NULL) v->waiting_triggers = triggers; } /* virtual */ ScopeResolver *VehicleResolverObject::GetScope(VarSpriteGroupScope scope, byte relative) { switch (scope) { case VSG_SCOPE_SELF: return &this->self_scope; case VSG_SCOPE_PARENT: return &this->parent_scope; case VSG_SCOPE_RELATIVE: { int32 count = GB(relative, 0, 4); if (this->self_scope.v != NULL && (relative != this->cached_relative_count || count == 0)) { /* Note: This caching only works as long as the VSG_SCOPE_RELATIVE cannot be used in * VarAct2 with procedure calls. */ if (count == 0) count = GetRegister(0x100); const Vehicle *v = NULL; switch (GB(relative, 6, 2)) { default: NOT_REACHED(); case 0x00: // count back (away from the engine), starting at this vehicle v = this->self_scope.v; break; case 0x01: // count forward (toward the engine), starting at this vehicle v = this->self_scope.v; count = -count; break; case 0x02: // count back, starting at the engine v = this->parent_scope.v; break; case 0x03: { // count back, starting at the first vehicle in this chain of vehicles with the same ID, as for vehicle variable 41 const Vehicle *self = this->self_scope.v; for (const Vehicle *u = self->First(); u != self; u = u->Next()) { if (u->engine_type != self->engine_type) { v = NULL; } else { if (v == NULL) v = u; } } if (v == NULL) v = self; break; } } this->relative_scope.SetVehicle(v->Move(count)); } return &this->relative_scope; } default: return ResolverObject::GetScope(scope, relative); } } /** * Determines the livery of an engine. * * This always uses dual company colours independent of GUI settings. So it is desync-safe. * * @param engine Engine type * @param v Vehicle, NULL in purchase list. * @return Livery to use */ static const Livery *LiveryHelper(EngineID engine, const Vehicle *v) { const Livery *l; if (v == NULL) { if (!Company::IsValidID(_current_company)) return NULL; l = GetEngineLivery(engine, _current_company, INVALID_ENGINE, NULL, LIT_ALL); } else if (v->IsGroundVehicle()) { l = GetEngineLivery(v->engine_type, v->owner, v->GetGroundVehicleCache()->first_engine, v, LIT_ALL); } else { l = GetEngineLivery(v->engine_type, v->owner, INVALID_ENGINE, v, LIT_ALL); } return l; } /** * Helper to get the position of a vehicle within a chain of vehicles. * @param v the vehicle to get the position of. * @param consecutive whether to look at the whole chain or the vehicles * with the same 'engine type'. * @return the position in the chain from front and tail and chain length. */ static uint32 PositionHelper(const Vehicle *v, bool consecutive) { const Vehicle *u; byte chain_before = 0; byte chain_after = 0; for (u = v->First(); u != v; u = u->Next()) { chain_before++; if (consecutive && u->engine_type != v->engine_type) chain_before = 0; } while (u->Next() != NULL && (!consecutive || u->Next()->engine_type == v->engine_type)) { chain_after++; u = u->Next(); } return chain_before | chain_after << 8 | (chain_before + chain_after + consecutive) << 16; } static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, byte variable, uint32 parameter, bool *available) { /* Calculated vehicle parameters */ switch (variable) { case 0x25: // Get engine GRF ID return v->GetGRFID(); case 0x40: // Get length of consist if (!HasBit(v->grf_cache.cache_valid, NCVV_POSITION_CONSIST_LENGTH)) { v->grf_cache.position_consist_length = PositionHelper(v, false); SetBit(v->grf_cache.cache_valid, NCVV_POSITION_CONSIST_LENGTH); } return v->grf_cache.position_consist_length; case 0x41: // Get length of same consecutive wagons if (!HasBit(v->grf_cache.cache_valid, NCVV_POSITION_SAME_ID_LENGTH)) { v->grf_cache.position_same_id_length = PositionHelper(v, true); SetBit(v->grf_cache.cache_valid, NCVV_POSITION_SAME_ID_LENGTH); } return v->grf_cache.position_same_id_length; case 0x42: { // Consist cargo information if (!HasBit(v->grf_cache.cache_valid, NCVV_CONSIST_CARGO_INFORMATION)) { const Vehicle *u; byte cargo_classes = 0; uint8 common_cargoes[NUM_CARGO]; uint8 common_subtypes[256]; byte user_def_data = 0; CargoID common_cargo_type = CT_INVALID; uint8 common_subtype = 0xFF; // Return 0xFF if nothing is carried /* Reset our arrays */ memset(common_cargoes, 0, sizeof(common_cargoes)); memset(common_subtypes, 0, sizeof(common_subtypes)); for (u = v; u != NULL; u = u->Next()) { if (v->type == VEH_TRAIN) user_def_data |= Train::From(u)->tcache.user_def_data; /* Skip empty engines */ if (!u->GetEngine()->CanCarryCargo()) continue; cargo_classes |= CargoSpec::Get(u->cargo_type)->classes; common_cargoes[u->cargo_type]++; } /* Pick the most common cargo type */ uint common_cargo_best_amount = 0; for (CargoID cargo = 0; cargo < NUM_CARGO; cargo++) { if (common_cargoes[cargo] > common_cargo_best_amount) { common_cargo_best_amount = common_cargoes[cargo]; common_cargo_type = cargo; } } /* Count subcargo types of common_cargo_type */ for (u = v; u != NULL; u = u->Next()) { /* Skip empty engines and engines not carrying common_cargo_type */ if (u->cargo_type != common_cargo_type || !u->GetEngine()->CanCarryCargo()) continue; common_subtypes[u->cargo_subtype]++; } /* Pick the most common subcargo type*/ uint common_subtype_best_amount = 0; for (uint i = 0; i < lengthof(common_subtypes); i++) { if (common_subtypes[i] > common_subtype_best_amount) { common_subtype_best_amount = common_subtypes[i]; common_subtype = i; } } /* Note: We have to store the untranslated cargotype in the cache as the cache can be read by different NewGRFs, * which will need different translations */ v->grf_cache.consist_cargo_information = cargo_classes | (common_cargo_type << 8) | (common_subtype << 16) | (user_def_data << 24); SetBit(v->grf_cache.cache_valid, NCVV_CONSIST_CARGO_INFORMATION); } /* The cargo translation is specific to the accessing GRF, and thus cannot be cached. */ CargoID common_cargo_type = (v->grf_cache.consist_cargo_information >> 8) & 0xFF; /* Unlike everywhere else the cargo translation table is only used since grf version 8, not 7. * Note: The grffile == NULL case only happens if this function is called for default vehicles. * And this is only done by CheckCaches(). */ const GRFFile *grffile = object->ro->grffile; uint8 common_bitnum = (common_cargo_type == CT_INVALID) ? 0xFF : (grffile == NULL || grffile->grf_version < 8) ? CargoSpec::Get(common_cargo_type)->bitnum : grffile->cargo_map[common_cargo_type]; return (v->grf_cache.consist_cargo_information & 0xFFFF00FF) | common_bitnum << 8; } case 0x43: // Company information if (!HasBit(v->grf_cache.cache_valid, NCVV_COMPANY_INFORMATION)) { v->grf_cache.company_information = GetCompanyInfo(v->owner, LiveryHelper(v->engine_type, v)); SetBit(v->grf_cache.cache_valid, NCVV_COMPANY_INFORMATION); } return v->grf_cache.company_information; case 0x44: // Aircraft information if (v->type != VEH_AIRCRAFT || !Aircraft::From(v)->IsNormalAircraft()) return UINT_MAX; { const Vehicle *w = v->Next(); uint16 altitude = v->z_pos - w->z_pos; // Aircraft height - shadow height byte airporttype = ATP_TTDP_LARGE; const Station *st = GetTargetAirportIfValid(Aircraft::From(v)); if (st != NULL && st->airport.tile != INVALID_TILE) { airporttype = st->airport.GetSpec()->ttd_airport_type; } return (Clamp(altitude, 0, 0xFF) << 8) | airporttype; } case 0x45: { // Curvature info /* Format: xxxTxBxF * F - previous wagon to current wagon, 0 if vehicle is first * B - current wagon to next wagon, 0 if wagon is last * T - previous wagon to next wagon, 0 in an S-bend */ if (!v->IsGroundVehicle()) return 0; const Vehicle *u_p = v->Previous(); const Vehicle *u_n = v->Next(); DirDiff f = (u_p == NULL) ? DIRDIFF_SAME : DirDifference(u_p->direction, v->direction); DirDiff b = (u_n == NULL) ? DIRDIFF_SAME : DirDifference(v->direction, u_n->direction); DirDiff t = ChangeDirDiff(f, b); return ((t > DIRDIFF_REVERSE ? t | 8 : t) << 16) | ((b > DIRDIFF_REVERSE ? b | 8 : b) << 8) | ( f > DIRDIFF_REVERSE ? f | 8 : f); } case 0x46: // Motion counter return v->motion_counter; case 0x47: { // Vehicle cargo info /* Format: ccccwwtt * tt - the cargo type transported by the vehicle, * translated if a translation table has been installed. * ww - cargo unit weight in 1/16 tons, same as cargo prop. 0F. * cccc - the cargo class value of the cargo transported by the vehicle. */ const CargoSpec *cs = CargoSpec::Get(v->cargo_type); return (cs->classes << 16) | (cs->weight << 8) | v->GetGRF()->cargo_map[v->cargo_type]; } case 0x48: return v->GetEngine()->flags; // Vehicle Type Info case 0x49: return v->build_year; case 0x4A: { if (v->type != VEH_TRAIN) return 0; RailType rt = GetTileRailType(v->tile); return (HasPowerOnRail(Train::From(v)->railtype, rt) ? 0x100 : 0) | GetReverseRailTypeTranslation(rt, object->ro->grffile); } case 0x4B: // Long date of last service return v->date_of_last_service; case 0x4C: // Current maximum speed in NewGRF units if (!v->IsPrimaryVehicle()) return 0; return v->GetCurrentMaxSpeed(); /* Variables which use the parameter */ case 0x60: // Count consist's engine ID occurrence if (v->type != VEH_TRAIN) return v->GetEngine()->grf_prop.local_id == parameter ? 1 : 0; { uint count = 0; for (; v != NULL; v = v->Next()) { if (v->GetEngine()->grf_prop.local_id == parameter) count++; } return count; } case 0x61: // Get variable of n-th vehicle in chain [signed number relative to vehicle] if (!v->IsGroundVehicle() || parameter == 0x61) return 0; /* Only allow callbacks that don't change properties to avoid circular dependencies. */ if (object->ro->callback == CBID_NO_CALLBACK || object->ro->callback == CBID_RANDOM_TRIGGER || object->ro->callback == CBID_TRAIN_ALLOW_WAGON_ATTACH || object->ro->callback == CBID_VEHICLE_START_STOP_CHECK || object->ro->callback == CBID_VEHICLE_32DAY_CALLBACK || object->ro->callback == CBID_VEHICLE_COLOUR_MAPPING) { Vehicle *u = v->Move((int32)GetRegister(0x10F)); if (u == NULL) return 0; if (parameter == 0x5F) { /* This seems to be the only variable that makes sense to access via var 61, but is not handled by VehicleGetVariable */ return (u->random_bits << 8) | u->waiting_triggers; } else { return VehicleGetVariable(u, object, parameter, GetRegister(0x10E), available); } } return 0; case 0x62: { // Curvature/position difference for n-th vehicle in chain [signed number relative to vehicle] /* Format: zzyyxxFD * zz - Signed difference of z position between the selected and this vehicle. * yy - Signed difference of y position between the selected and this vehicle. * xx - Signed difference of x position between the selected and this vehicle. * F - Flags, bit 7 corresponds to VS_HIDDEN. * D - Dir difference, like in 0x45. */ if (!v->IsGroundVehicle()) return 0; const Vehicle *u = v->Move((int8)parameter); if (u == NULL) return 0; /* Get direction difference. */ bool prev = (int8)parameter < 0; uint32 ret = prev ? DirDifference(u->direction, v->direction) : DirDifference(v->direction, u->direction); if (ret > DIRDIFF_REVERSE) ret |= 0x08; if (u->vehstatus & VS_HIDDEN) ret |= 0x80; /* Get position difference. */ ret |= ((prev ? u->x_pos - v->x_pos : v->x_pos - u->x_pos) & 0xFF) << 8; ret |= ((prev ? u->y_pos - v->y_pos : v->y_pos - u->y_pos) & 0xFF) << 16; ret |= ((prev ? u->z_pos - v->z_pos : v->z_pos - u->z_pos) & 0xFF) << 24; return ret; } case 0xFE: case 0xFF: { uint16 modflags = 0; if (v->type == VEH_TRAIN) { const Train *t = Train::From(v); bool is_powered_wagon = HasBit(t->flags, VRF_POWEREDWAGON); const Train *u = is_powered_wagon ? t->First() : t; // for powered wagons the engine defines the type of engine (i.e. railtype) RailType railtype = GetRailType(v->tile); bool powered = t->IsEngine() || is_powered_wagon; bool has_power = HasPowerOnRail(u->railtype, railtype); if (powered && has_power) SetBit(modflags, 5); if (powered && !has_power) SetBit(modflags, 6); if (HasBit(t->flags, VRF_TOGGLE_REVERSE)) SetBit(modflags, 8); } if (HasBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE)) SetBit(modflags, 10); return variable == 0xFE ? modflags : GB(modflags, 8, 8); } } /* General vehicle properties */ switch (variable - 0x80) { case 0x00: return v->type + 0x10; case 0x01: return MapOldSubType(v); case 0x04: return v->index; case 0x05: return GB(v->index, 8, 8); case 0x0A: return v->current_order.MapOldOrder(); case 0x0B: return v->current_order.GetDestination(); case 0x0C: return v->GetNumOrders(); case 0x0D: return v->cur_real_order_index; case 0x10: case 0x11: { uint ticks; if (v->current_order.IsType(OT_LOADING)) { ticks = v->load_unload_ticks; } else { switch (v->type) { case VEH_TRAIN: ticks = Train::From(v)->wait_counter; break; case VEH_AIRCRAFT: ticks = Aircraft::From(v)->turn_counter; break; default: ticks = 0; break; } } return (variable - 0x80) == 0x10 ? ticks : GB(ticks, 8, 8); } case 0x12: return Clamp(v->date_of_last_service - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 0xFFFF); case 0x13: return GB(Clamp(v->date_of_last_service - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 0xFFFF), 8, 8); case 0x14: return v->GetServiceInterval(); case 0x15: return GB(v->GetServiceInterval(), 8, 8); case 0x16: return v->last_station_visited; case 0x17: return v->tick_counter; case 0x18: case 0x19: { uint max_speed; switch (v->type) { case VEH_AIRCRAFT: max_speed = Aircraft::From(v)->GetSpeedOldUnits(); // Convert to old units. break; default: max_speed = v->vcache.cached_max_speed; break; } return (variable - 0x80) == 0x18 ? max_speed : GB(max_speed, 8, 8); } case 0x1A: return v->x_pos; case 0x1B: return GB(v->x_pos, 8, 8); case 0x1C: return v->y_pos; case 0x1D: return GB(v->y_pos, 8, 8); case 0x1E: return v->z_pos; case 0x1F: return object->info_view ? DIR_W : v->direction; case 0x28: return 0; // cur_image is a potential desyncer due to Action1 in static NewGRFs. case 0x29: return 0; // cur_image is a potential desyncer due to Action1 in static NewGRFs. case 0x32: return v->vehstatus; case 0x33: return 0; // non-existent high byte of vehstatus case 0x34: return v->type == VEH_AIRCRAFT ? (v->cur_speed * 10) / 128 : v->cur_speed; case 0x35: return GB(v->type == VEH_AIRCRAFT ? (v->cur_speed * 10) / 128 : v->cur_speed, 8, 8); case 0x36: return v->subspeed; case 0x37: return v->acceleration; case 0x39: return v->cargo_type; case 0x3A: return v->cargo_cap; case 0x3B: return GB(v->cargo_cap, 8, 8); case 0x3C: return ClampToU16(v->cargo.Count()); case 0x3D: return GB(ClampToU16(v->cargo.Count()), 8, 8); case 0x3E: return v->cargo.Source(); case 0x3F: return ClampU(v->cargo.DaysInTransit(), 0, 0xFF); case 0x40: return ClampToU16(v->age); case 0x41: return GB(ClampToU16(v->age), 8, 8); case 0x42: return ClampToU16(v->max_age); case 0x43: return GB(ClampToU16(v->max_age), 8, 8); case 0x44: return Clamp(v->build_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; case 0x45: return v->unitnumber; case 0x46: return v->GetEngine()->grf_prop.local_id; case 0x47: return GB(v->GetEngine()->grf_prop.local_id, 8, 8); case 0x48: if (v->type != VEH_TRAIN || v->spritenum != 0xFD) return v->spritenum; return HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION) ? 0xFE : 0xFD; case 0x49: return v->day_counter; case 0x4A: return v->breakdowns_since_last_service; case 0x4B: return v->breakdown_ctr; case 0x4C: return v->breakdown_delay; case 0x4D: return v->breakdown_chance; case 0x4E: return v->reliability; case 0x4F: return GB(v->reliability, 8, 8); case 0x50: return v->reliability_spd_dec; case 0x51: return GB(v->reliability_spd_dec, 8, 8); case 0x52: return ClampToI32(v->GetDisplayProfitThisYear()); case 0x53: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 8, 24); case 0x54: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 16, 16); case 0x55: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 24, 8); case 0x56: return ClampToI32(v->GetDisplayProfitLastYear()); case 0x57: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 8, 24); case 0x58: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 16, 16); case 0x59: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 24, 8); case 0x5A: return v->Next() == NULL ? INVALID_VEHICLE : v->Next()->index; case 0x5C: return ClampToI32(v->value); case 0x5D: return GB(ClampToI32(v->value), 8, 24); case 0x5E: return GB(ClampToI32(v->value), 16, 16); case 0x5F: return GB(ClampToI32(v->value), 24, 8); case 0x72: return v->cargo_subtype; case 0x7A: return v->random_bits; case 0x7B: return v->waiting_triggers; } /* Vehicle specific properties */ switch (v->type) { case VEH_TRAIN: { Train *t = Train::From(v); switch (variable - 0x80) { case 0x62: return t->track; case 0x66: return t->railtype; case 0x73: return 0x80 + VEHICLE_LENGTH - t->gcache.cached_veh_length; case 0x74: return t->gcache.cached_power; case 0x75: return GB(t->gcache.cached_power, 8, 24); case 0x76: return GB(t->gcache.cached_power, 16, 16); case 0x77: return GB(t->gcache.cached_power, 24, 8); case 0x7C: return t->First()->index; case 0x7D: return GB(t->First()->index, 8, 8); case 0x7F: return 0; // Used for vehicle reversing hack in TTDP } break; } case VEH_ROAD: { RoadVehicle *rv = RoadVehicle::From(v); switch (variable - 0x80) { case 0x62: return rv->state; case 0x64: return rv->blocked_ctr; case 0x65: return GB(rv->blocked_ctr, 8, 8); case 0x66: return rv->overtaking; case 0x67: return rv->overtaking_ctr; case 0x68: return rv->crashed_ctr; case 0x69: return GB(rv->crashed_ctr, 8, 8); } break; } case VEH_SHIP: { Ship *s = Ship::From(v); switch (variable - 0x80) { case 0x62: return s->state; } break; } case VEH_AIRCRAFT: { Aircraft *a = Aircraft::From(v); switch (variable - 0x80) { case 0x62: return MapAircraftMovementState(a); // Current movement state case 0x63: return a->targetairport; // Airport to which the action refers case 0x66: return MapAircraftMovementAction(a); // Current movement action } break; } default: break; } DEBUG(grf, 1, "Unhandled vehicle variable 0x%X, type 0x%X", variable, (uint)v->type); *available = false; return UINT_MAX; } /* virtual */ uint32 VehicleScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { if (this->v == NULL) { /* Vehicle does not exist, so we're in a purchase list */ switch (variable) { case 0x43: return GetCompanyInfo(_current_company, LiveryHelper(this->self_type, NULL)); // Owner information case 0x46: return 0; // Motion counter case 0x47: { // Vehicle cargo info const Engine *e = Engine::Get(this->self_type); CargoID cargo_type = e->GetDefaultCargoType(); if (cargo_type != CT_INVALID) { const CargoSpec *cs = CargoSpec::Get(cargo_type); return (cs->classes << 16) | (cs->weight << 8) | e->GetGRF()->cargo_map[cargo_type]; } else { return 0x000000FF; } } case 0x48: return Engine::Get(this->self_type)->flags; // Vehicle Type Info case 0x49: return _cur_year; // 'Long' format build year case 0x4B: return _date; // Long date of last service case 0x92: return Clamp(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 0xFFFF); // Date of last service case 0x93: return GB(Clamp(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 0xFFFF), 8, 8); case 0xC4: return Clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; // Build year case 0xDA: return INVALID_VEHICLE; // Next vehicle case 0xF2: return 0; // Cargo subtype } *available = false; return UINT_MAX; } return VehicleGetVariable(const_cast(this->v), this, variable, parameter, available); } /* virtual */ const SpriteGroup *VehicleResolverObject::ResolveReal(const RealSpriteGroup *group) const { const Vehicle *v = this->self_scope.v; if (v == NULL) { if (group->num_loading > 0) return group->loading[0]; if (group->num_loaded > 0) return group->loaded[0]; return NULL; } bool in_motion = !v->First()->current_order.IsType(OT_LOADING); uint totalsets = in_motion ? group->num_loaded : group->num_loading; if (totalsets == 0) return NULL; uint set = (v->cargo.Count() * totalsets) / max((uint16)1, v->cargo_cap); set = min(set, totalsets - 1); return in_motion ? group->loaded[set] : group->loading[set]; } /** * Scope resolver of a single vehicle. * @param ro Surrounding resolver. * @param engine_type Engine type * @param v %Vehicle being resolved. * @param info_view Indicates if the item is being drawn in an info window. */ VehicleScopeResolver::VehicleScopeResolver(ResolverObject *ro, EngineID engine_type, const Vehicle *v, bool info_view) : ScopeResolver(ro) { this->v = v; this->self_type = engine_type; this->info_view = info_view; } /** * Get the grf file associated with an engine type. * @param engine_type Engine to query. * @return grf file associated with the engine. */ static const GRFFile *GetEngineGrfFile(EngineID engine_type) { const Engine *e = Engine::Get(engine_type); return (e != NULL) ? e->GetGRF() : NULL; } /** * Resolver of a vehicle (chain). * @param engine_type Engine type * @param v %Vehicle being resolved. * @param info_view Indicates if the item is being drawn in an info window. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ VehicleResolverObject::VehicleResolverObject(EngineID engine_type, const Vehicle *v, bool info_view, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(GetEngineGrfFile(engine_type), callback, callback_param1, callback_param2), self_scope(this, engine_type, v, info_view), parent_scope(this, engine_type, ((v != NULL) ? v->First() : v), info_view), relative_scope(this, engine_type, v, info_view), cached_relative_count(0) { } /** * Retrieve the SpriteGroup for the specified vehicle. * If the vehicle is not specified, the purchase list group for the engine is * chosen. For trains, an additional engine override lookup is performed. * @param engine Engine type of the vehicle. * @param v The vehicle itself. * @param use_cache Use cached override * @returns The selected SpriteGroup for the vehicle. */ static const SpriteGroup *GetVehicleSpriteGroup(EngineID engine, const Vehicle *v, bool use_cache = true) { const SpriteGroup *group; CargoID cargo; if (v == NULL) { cargo = CT_PURCHASE; } else { cargo = v->cargo_type; if (v->IsGroundVehicle()) { /* For trains we always use cached value, except for callbacks because the override spriteset * to use may be different than the one cached. It happens for callback 0x15 (refit engine), * as v->cargo_type is temporary changed to the new type */ if (use_cache && v->type == VEH_TRAIN) { group = Train::From(v)->tcache.cached_override; } else { group = GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, v->GetGroundVehicleCache()->first_engine); } if (group != NULL) return group; } } const Engine *e = Engine::Get(engine); assert(cargo < lengthof(e->grf_prop.spritegroup)); group = e->grf_prop.spritegroup[cargo]; if (group != NULL) return group; /* Fall back to the default set if the selected cargo type is not defined */ return e->grf_prop.spritegroup[CT_DEFAULT]; } SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type) { VehicleResolverObject object(engine, v, false, CBID_NO_CALLBACK, image_type); const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(engine, v), &object); if (group == NULL || group->GetNumResults() == 0) return 0; return group->GetResult() + (direction % group->GetNumResults()); } SpriteID GetRotorOverrideSprite(EngineID engine, const Aircraft *v, bool info_view, EngineImageType image_type) { const Engine *e = Engine::Get(engine); /* Only valid for helicopters */ assert(e->type == VEH_AIRCRAFT); assert(!(e->u.air.subtype & AIR_CTOL)); VehicleResolverObject object(engine, v, info_view, CBID_NO_CALLBACK, image_type); const SpriteGroup *group = GetWagonOverrideSpriteSet(engine, CT_DEFAULT, engine); group = SpriteGroup::Resolve(group, &object); if (group == NULL || group->GetNumResults() == 0) return 0; if (v == NULL) return group->GetResult(); return group->GetResult() + (info_view ? 0 : (v->Next()->Next()->state % group->GetNumResults())); } /** * Check if a wagon is currently using a wagon override * @param v The wagon to check * @return true if it is using an override, false otherwise */ bool UsesWagonOverride(const Vehicle *v) { assert(v->type == VEH_TRAIN); return Train::From(v)->tcache.cached_override != NULL; } /** * Evaluate a newgrf callback for vehicles * @param callback The callback to evaluate * @param param1 First parameter of the callback * @param param2 Second parameter of the callback * @param engine Engine type of the vehicle to evaluate the callback for * @param v The vehicle to evaluate the callback for, or NULL if it doesnt exist yet * @return The value the callback returned, or CALLBACK_FAILED if it failed */ uint16 GetVehicleCallback(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v) { VehicleResolverObject object(engine, v, false, callback, param1, param2); const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(engine, v, false), &object); if (group == NULL) return CALLBACK_FAILED; return group->GetCallbackResult(); } /** * Evaluate a newgrf callback for vehicles with a different vehicle for parent scope. * @param callback The callback to evaluate * @param param1 First parameter of the callback * @param param2 Second parameter of the callback * @param engine Engine type of the vehicle to evaluate the callback for * @param v The vehicle to evaluate the callback for, or NULL if it doesn't exist yet * @param parent The vehicle to use for parent scope * @return The value the callback returned, or CALLBACK_FAILED if it failed */ uint16 GetVehicleCallbackParent(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent) { VehicleResolverObject object(engine, v, false, callback, param1, param2); object.parent_scope.SetVehicle(parent); const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(engine, v, false), &object); if (group == NULL) return CALLBACK_FAILED; return group->GetCallbackResult(); } /* Callback 36 handlers */ uint GetVehicleProperty(const Vehicle *v, PropertyID property, uint orig_value) { return GetEngineProperty(v->engine_type, property, orig_value, v); } uint GetEngineProperty(EngineID engine, PropertyID property, uint orig_value, const Vehicle *v) { uint16 callback = GetVehicleCallback(CBID_VEHICLE_MODIFY_PROPERTY, property, 0, engine, v); if (callback != CALLBACK_FAILED) return callback; return orig_value; } static void DoTriggerVehicle(Vehicle *v, VehicleTrigger trigger, byte base_random_bits, bool first) { /* We can't trigger a non-existent vehicle... */ assert(v != NULL); VehicleResolverObject object(v->engine_type, v, false, CBID_RANDOM_TRIGGER); object.trigger = trigger; const SpriteGroup *group = SpriteGroup::Resolve(GetVehicleSpriteGroup(v->engine_type, v), &object); if (group == NULL) return; byte new_random_bits = Random(); uint32 reseed = object.GetReseedSum(); // The scope only affects triggers, not the reseeding v->random_bits &= ~reseed; v->random_bits |= (first ? new_random_bits : base_random_bits) & reseed; switch (trigger) { case VEHICLE_TRIGGER_NEW_CARGO: /* All vehicles in chain get ANY_NEW_CARGO trigger now. * So we call it for the first one and they will recurse. * Indexing part of vehicle random bits needs to be * same for all triggered vehicles in the chain (to get * all the random-cargo wagons carry the same cargo, * i.e.), so we give them all the NEW_CARGO triggered * vehicle's portion of random bits. */ assert(first); DoTriggerVehicle(v->First(), VEHICLE_TRIGGER_ANY_NEW_CARGO, new_random_bits, false); break; case VEHICLE_TRIGGER_DEPOT: /* We now trigger the next vehicle in chain recursively. * The random bits portions may be different for each * vehicle in chain. */ if (v->Next() != NULL) DoTriggerVehicle(v->Next(), trigger, 0, true); break; case VEHICLE_TRIGGER_EMPTY: /* We now trigger the next vehicle in chain * recursively. The random bits portions must be same * for each vehicle in chain, so we give them all * first chained vehicle's portion of random bits. */ if (v->Next() != NULL) DoTriggerVehicle(v->Next(), trigger, first ? new_random_bits : base_random_bits, false); break; case VEHICLE_TRIGGER_ANY_NEW_CARGO: /* Now pass the trigger recursively to the next vehicle * in chain. */ assert(!first); if (v->Next() != NULL) DoTriggerVehicle(v->Next(), VEHICLE_TRIGGER_ANY_NEW_CARGO, base_random_bits, false); break; case VEHICLE_TRIGGER_CALLBACK_32: /* Do not do any recursion */ break; } } void TriggerVehicle(Vehicle *v, VehicleTrigger trigger) { if (trigger == VEHICLE_TRIGGER_DEPOT) { /* store that the vehicle entered a depot this tick */ VehicleEnteredDepotThisTick(v); } v->InvalidateNewGRFCacheOfChain(); DoTriggerVehicle(v, trigger, 0, true); v->InvalidateNewGRFCacheOfChain(); } /* Functions for changing the order of vehicle purchase lists */ struct ListOrderChange { EngineID engine; uint target; ///< local ID }; static SmallVector _list_order_changes; /** * Record a vehicle ListOrderChange. * @param engine Engine to move * @param target Local engine ID to move \a engine in front of * @note All sorting is done later in CommitVehicleListOrderChanges */ void AlterVehicleListOrder(EngineID engine, uint target) { /* Add the list order change to a queue */ ListOrderChange *loc = _list_order_changes.Append(); loc->engine = engine; loc->target = target; } /** * Comparator function to sort engines via scope-GRFID and local ID. * @param a left side * @param b right side * @return comparison result */ static int CDECL EnginePreSort(const EngineID *a, const EngineID *b) { const EngineIDMapping *id_a = _engine_mngr.Get(*a); const EngineIDMapping *id_b = _engine_mngr.Get(*b); /* 1. Sort by engine type */ if (id_a->type != id_b->type) return (int)id_a->type - (int)id_b->type; /* 2. Sort by scope-GRFID */ if (id_a->grfid != id_b->grfid) return id_a->grfid < id_b->grfid ? -1 : 1; /* 3. Sort by local ID */ return (int)id_a->internal_id - (int)id_b->internal_id; } /** * Deternine default engine sorting and execute recorded ListOrderChanges from AlterVehicleListOrder. */ void CommitVehicleListOrderChanges() { /* Pre-sort engines by scope-grfid and local index */ SmallVector ordering; Engine *e; FOR_ALL_ENGINES(e) { *ordering.Append() = e->index; } QSortT(ordering.Begin(), ordering.Length(), EnginePreSort); /* Apply Insertion-Sort operations */ const ListOrderChange *end = _list_order_changes.End(); for (const ListOrderChange *it = _list_order_changes.Begin(); it != end; ++it) { EngineID source = it->engine; uint local_target = it->target; const EngineIDMapping *id_source = _engine_mngr.Get(source); if (id_source->internal_id == local_target) continue; EngineID target = _engine_mngr.GetID(id_source->type, local_target, id_source->grfid); if (target == INVALID_ENGINE) continue; int source_index = ordering.FindIndex(source); int target_index = ordering.FindIndex(target); assert(source_index >= 0 && target_index >= 0); assert(source_index != target_index); EngineID *list = ordering.Begin(); if (source_index < target_index) { --target_index; for (int i = source_index; i < target_index; ++i) list[i] = list[i + 1]; list[target_index] = source; } else { for (int i = source_index; i > target_index; --i) list[i] = list[i - 1]; list[target_index] = source; } } /* Store final sort-order */ const EngineID *idend = ordering.End(); uint index = 0; for (const EngineID *it = ordering.Begin(); it != idend; ++it, ++index) { Engine::Get(*it)->list_position = index; } /* Clear out the queue */ _list_order_changes.Reset(); } /** * Fill the grf_cache of the given vehicle. * @param v The vehicle to fill the cache for. */ void FillNewGRFVehicleCache(const Vehicle *v) { VehicleResolverObject ro(v->engine_type, v); /* These variables we have to check; these are the ones with a cache. */ static const int cache_entries[][2] = { { 0x40, NCVV_POSITION_CONSIST_LENGTH }, { 0x41, NCVV_POSITION_SAME_ID_LENGTH }, { 0x42, NCVV_CONSIST_CARGO_INFORMATION }, { 0x43, NCVV_COMPANY_INFORMATION }, }; assert_compile(NCVV_END == lengthof(cache_entries)); /* Resolve all the variables, so their caches are set. */ for (size_t i = 0; i < lengthof(cache_entries); i++) { /* Only resolve when the cache isn't valid. */ if (HasBit(v->grf_cache.cache_valid, cache_entries[i][1])) continue; bool stub; ro.GetScope(VSG_SCOPE_SELF)->GetVariable(cache_entries[i][0], 0, &stub); } /* Make sure really all bits are set. */ assert(v->grf_cache.cache_valid == (1 << NCVV_END) - 1); } openttd-1.3.3/src/settings_internal.h0000644000000000000000000001522712246102611016367 0ustar rootroot/* $Id: settings_internal.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file settings_internal.h Functions and types used internally for the settings configurations. */ #ifndef SETTINGS_INTERNAL_H #define SETTINGS_INTERNAL_H #include "saveload/saveload.h" /** * Convention/Type of settings. This is then further specified if necessary * with the SLE_ (SLE_VAR/SLE_FILE) enums in saveload.h * @see VarTypes * @see SettingDescBase */ enum SettingDescTypeLong { /* 4 bytes allocated a maximum of 16 types for GenericType */ SDT_BEGIN = 0, SDT_NUMX = 0, ///< any number-type SDT_BOOLX = 1, ///< a boolean number SDT_ONEOFMANY = 2, ///< bitmasked number where only ONE bit may be set SDT_MANYOFMANY = 3, ///< bitmasked number where MULTIPLE bits may be set SDT_INTLIST = 4, ///< list of integers separated by a comma ',' SDT_STRING = 5, ///< string with a pre-allocated buffer SDT_END, /* 10 more possible primitives */ }; typedef SimpleTinyEnumT SettingDescType; enum SettingGuiFlagLong { /* 1 byte allocated for a maximum of 8 flags * Flags directing saving/loading of a variable */ SGF_NONE = 0, SGF_0ISDISABLED = 1 << 0, ///< a value of zero means the feature is disabled SGF_DISPLAY_ABS = 1 << 1, ///< display absolute value of the setting SGF_MULTISTRING = 1 << 2, ///< the value represents a limited number of string-options (internally integer) SGF_NETWORK_ONLY = 1 << 3, ///< this setting only applies to network games SGF_CURRENCY = 1 << 4, ///< the number represents money, so when reading value multiply by exchange rate SGF_NO_NETWORK = 1 << 5, ///< this setting does not apply to network games; it may not be changed during the game SGF_NEWGAME_ONLY = 1 << 6, ///< this setting cannot be changed in a game SGF_SCENEDIT_TOO = 1 << 7, ///< this setting can be changed in the scenario editor (only makes sense when SGF_NEWGAME_ONLY is set) SGF_PER_COMPANY = 1 << 8, ///< this setting can be different for each company (saved in company struct) }; DECLARE_ENUM_AS_BIT_SET(SettingGuiFlagLong) typedef SimpleTinyEnumT SettingGuiFlag; /** * A SettingCategory defines a grouping of the settings. * The group #SC_BASIC is intended for settings which also a novice player would like to change and is able to understand. * The group #SC_ADVANCED is intended for settings which an experienced player would like to use. This is the case for most settings. * Finally #SC_EXPERT settings only few people want to see in rare cases. * The grouping is meant to be inclusive, i.e. all settings in #SC_BASIC also will be included * in the set of settings in #SC_ADVANCED. The group #SC_EXPERT contains all settings. */ enum SettingCategory { SC_NONE = 0, /* Filters for the list */ SC_BASIC_LIST = 1 << 0, ///< Settings displayed in the list of basic settings. SC_ADVANCED_LIST = 1 << 1, ///< Settings displayed in the list of advanced settings. SC_EXPERT_LIST = 1 << 2, ///< Settings displayed in the list of expert settings. /* Setting classification */ SC_BASIC = SC_BASIC_LIST | SC_ADVANCED_LIST | SC_EXPERT_LIST, ///< Basic settings are part of all lists. SC_ADVANCED = SC_ADVANCED_LIST | SC_EXPERT_LIST, ///< Advanced settings are part of advanced and expert list. SC_EXPERT = SC_EXPERT_LIST, ///< Expert settings can only be seen in the expert list. SC_END, }; /** * Type of settings for filtering. */ enum SettingType { ST_GAME, ///< Game setting. ST_COMPANY, ///< Company setting. ST_CLIENT, ///< Client setting. ST_ALL, ///< Used in setting filter to match all types. }; typedef bool OnChange(int32 var); ///< callback prototype on data modification typedef size_t OnConvert(const char *value); ///< callback prototype for conversion error /** Properties of config file settings. */ struct SettingDescBase { const char *name; ///< name of the setting. Used in configuration file and for console const void *def; ///< default value given when none is present SettingDescType cmd; ///< various flags for the variable SettingGuiFlag flags; ///< handles how a setting would show up in the GUI (text/currency, etc.) int32 min; ///< minimum values uint32 max; ///< maximum values int32 interval; ///< the interval to use between settings in the 'settings' window. If interval is '0' the interval is dynamically determined const char *many; ///< ONE/MANY_OF_MANY: string of possible values for this type StringID str; ///< (translated) string with descriptive text; gui and console StringID str_help; ///< (Translated) string with help text; gui only. StringID str_val; ///< (Translated) first string describing the value. OnChange *proc; ///< callback procedure for when the value is changed OnConvert *proc_cnvt; ///< callback procedure when loading value mechanism fails SettingCategory cat; ///< assigned categories of the setting }; struct SettingDesc { SettingDescBase desc; ///< Settings structure (going to configuration file) SaveLoad save; ///< Internal structure (going to savegame, parts to config) bool IsEditable(bool do_command = false) const; SettingType GetType() const; }; /* NOTE: The only difference between SettingDesc and SettingDescGlob is * that one uses global variables as a source and the other offsets * in a struct which are bound to a certain variable during runtime. * The only way to differentiate between these two is to check if an object * has been passed to the function or not. If not, then it is a global variable * and save->variable has its address, otherwise save->variable only holds the * offset in a certain struct */ typedef SettingDesc SettingDescGlobVarList; const SettingDesc *GetSettingFromName(const char *name, uint *i); bool SetSettingValue(uint index, int32 value, bool force_newgame = false); bool SetSettingValue(uint index, const char *value, bool force_newgame = false); void SetCompanySetting(uint index, int32 value); #endif /* SETTINGS_INTERNAL_H */ openttd-1.3.3/src/saveload/0000755000000000000000000000000012246102757014264 5ustar rootrootopenttd-1.3.3/src/saveload/misc_sl.cpp0000644000000000000000000001373012246102606016416 0ustar rootroot/* $Id: misc_sl.cpp 23740 2012-01-03 21:32:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file misc_sl.cpp Saving and loading of things that didn't fit anywhere else */ #include "../stdafx.h" #include "../date_func.h" #include "../zoom_func.h" #include "../window_gui.h" #include "../window_func.h" #include "../viewport_func.h" #include "../gfx_func.h" #include "../core/random_func.hpp" #include "../fios.h" #include "saveload.h" extern TileIndex _cur_tileloop_tile; extern uint16 _disaster_delay; extern byte _trees_tick_ctr; /* Keep track of current game position */ int _saved_scrollpos_x; int _saved_scrollpos_y; ZoomLevelByte _saved_scrollpos_zoom; void SaveViewportBeforeSaveGame() { const Window *w = FindWindowById(WC_MAIN_WINDOW, 0); if (w != NULL) { _saved_scrollpos_x = w->viewport->scrollpos_x; _saved_scrollpos_y = w->viewport->scrollpos_y; _saved_scrollpos_zoom = w->viewport->zoom; } } void ResetViewportAfterLoadGame() { Window *w = FindWindowById(WC_MAIN_WINDOW, 0); w->viewport->scrollpos_x = _saved_scrollpos_x; w->viewport->scrollpos_y = _saved_scrollpos_y; w->viewport->dest_scrollpos_x = _saved_scrollpos_x; w->viewport->dest_scrollpos_y = _saved_scrollpos_y; ViewPort *vp = w->viewport; vp->zoom = (ZoomLevel)min(_saved_scrollpos_zoom, ZOOM_LVL_MAX); vp->virtual_width = ScaleByZoom(vp->width, vp->zoom); vp->virtual_height = ScaleByZoom(vp->height, vp->zoom); /* If zoom_max is ZOOM_LVL_MIN then the setting has not been loaded yet, therefore all levels are allowed. */ if (_settings_client.gui.zoom_max != ZOOM_LVL_MIN) { /* Ensure zoom level is allowed */ while (vp->zoom < _settings_client.gui.zoom_min) DoZoomInOutWindow(ZOOM_OUT, w); while (vp->zoom > _settings_client.gui.zoom_max) DoZoomInOutWindow(ZOOM_IN, w); } DoZoomInOutWindow(ZOOM_NONE, w); // update button status MarkWholeScreenDirty(); } byte _age_cargo_skip_counter; ///< Skip aging of cargo? Used before savegame version 162. static const SaveLoadGlobVarList _date_desc[] = { SLEG_CONDVAR(_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLEG_CONDVAR(_date, SLE_INT32, 31, SL_MAX_VERSION), SLEG_VAR(_date_fract, SLE_UINT16), SLEG_VAR(_tick_counter, SLE_UINT16), SLE_CONDNULL(2, 0, 156), // _vehicle_id_ctr_day SLEG_CONDVAR(_age_cargo_skip_counter, SLE_UINT8, 0, 161), SLE_CONDNULL(1, 0, 45), SLEG_CONDVAR(_cur_tileloop_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLEG_CONDVAR(_cur_tileloop_tile, SLE_UINT32, 6, SL_MAX_VERSION), SLEG_VAR(_disaster_delay, SLE_UINT16), SLE_CONDNULL(2, 0, 119), SLEG_VAR(_random.state[0], SLE_UINT32), SLEG_VAR(_random.state[1], SLE_UINT32), SLE_CONDNULL(1, 0, 9), SLE_CONDNULL(4, 10, 119), SLEG_VAR(_cur_company_tick_index, SLE_FILE_U8 | SLE_VAR_U32), SLEG_CONDVAR(_next_competitor_start, SLE_FILE_U16 | SLE_VAR_U32, 0, 108), SLEG_CONDVAR(_next_competitor_start, SLE_UINT32, 109, SL_MAX_VERSION), SLEG_VAR(_trees_tick_ctr, SLE_UINT8), SLEG_CONDVAR(_pause_mode, SLE_UINT8, 4, SL_MAX_VERSION), SLE_CONDNULL(4, 11, 119), SLEG_END() }; static const SaveLoadGlobVarList _date_check_desc[] = { SLEG_CONDVAR(_load_check_data.current_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLEG_CONDVAR(_load_check_data.current_date, SLE_INT32, 31, SL_MAX_VERSION), SLE_NULL(2), // _date_fract SLE_NULL(2), // _tick_counter SLE_CONDNULL(2, 0, 156), // _vehicle_id_ctr_day SLE_CONDNULL(1, 0, 161), // _age_cargo_skip_counter SLE_CONDNULL(1, 0, 45), SLE_CONDNULL(2, 0, 5), // _cur_tileloop_tile SLE_CONDNULL(4, 6, SL_MAX_VERSION), // _cur_tileloop_tile SLE_NULL(2), // _disaster_delay SLE_CONDNULL(2, 0, 119), SLE_NULL(4), // _random.state[0] SLE_NULL(4), // _random.state[1] SLE_CONDNULL(1, 0, 9), SLE_CONDNULL(4, 10, 119), SLE_NULL(1), // _cur_company_tick_index SLE_CONDNULL(2, 0, 108), // _next_competitor_start SLE_CONDNULL(4, 109, SL_MAX_VERSION), // _next_competitor_start SLE_NULL(1), // _trees_tick_ctr SLE_CONDNULL(1, 4, SL_MAX_VERSION), // _pause_mode SLE_CONDNULL(4, 11, 119), SLEG_END() }; /* Save load date related variables as well as persistent tick counters * XXX: currently some unrelated stuff is just put here */ static void SaveLoad_DATE() { SlGlobList(_date_desc); } static void Check_DATE() { SlGlobList(_date_check_desc); if (IsSavegameVersionBefore(31)) { _load_check_data.current_date += DAYS_TILL_ORIGINAL_BASE_YEAR; } } static const SaveLoadGlobVarList _view_desc[] = { SLEG_CONDVAR(_saved_scrollpos_x, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), SLEG_CONDVAR(_saved_scrollpos_x, SLE_INT32, 6, SL_MAX_VERSION), SLEG_CONDVAR(_saved_scrollpos_y, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), SLEG_CONDVAR(_saved_scrollpos_y, SLE_INT32, 6, SL_MAX_VERSION), SLEG_VAR(_saved_scrollpos_zoom, SLE_UINT8), SLEG_END() }; static void SaveLoad_VIEW() { SlGlobList(_view_desc); } extern const ChunkHandler _misc_chunk_handlers[] = { { 'DATE', SaveLoad_DATE, SaveLoad_DATE, NULL, Check_DATE, CH_RIFF}, { 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, NULL, NULL, CH_RIFF | CH_LAST}, }; openttd-1.3.3/src/saveload/waypoint_sl.cpp0000644000000000000000000001665712246102605017347 0ustar rootroot/* $Id: waypoint_sl.cpp 24166 2012-04-22 16:28:14Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file waypoint_sl.cpp Code handling saving and loading of waypoints */ #include "../stdafx.h" #include "../waypoint_base.h" #include "../newgrf_station.h" #include "../vehicle_base.h" #include "../town.h" #include "../newgrf.h" #include "table/strings.h" #include "saveload_internal.h" /** Helper structure to convert from the old waypoint system. */ struct OldWaypoint { size_t index; TileIndex xy; TownID town_index; Town *town; uint16 town_cn; StringID string_id; char *name; uint8 delete_ctr; Date build_date; uint8 localidx; uint32 grfid; const StationSpec *spec; OwnerByte owner; size_t new_index; }; /** Temporary array with old waypoints. */ static SmallVector _old_waypoints; /** * Update the waypoint orders to get the new waypoint ID. * @param o the order 'list' to check. */ static void UpdateWaypointOrder(Order *o) { if (!o->IsType(OT_GOTO_WAYPOINT)) return; for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { if (wp->index != o->GetDestination()) continue; o->SetDestination((DestinationID)wp->new_index); return; } } /** * Perform all steps to upgrade from the old waypoints to the new version * that uses station. This includes some old saveload mechanics. */ void MoveWaypointsToBaseStations() { /* In version 17, ground type is moved from m2 to m4 for depots and * waypoints to make way for storing the index in m2. The custom graphics * id which was stored in m4 is now saved as a grf/id reference in the * waypoint struct. */ if (IsSavegameVersionBefore(17)) { for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { if (wp->delete_ctr != 0) continue; // The waypoint was deleted /* Waypoint indices were not added to the map prior to this. */ _m[wp->xy].m2 = (StationID)wp->index; if (HasBit(_m[wp->xy].m3, 4)) { wp->spec = StationClass::Get(STAT_CLASS_WAYP)->GetSpec(_m[wp->xy].m4 + 1); } } } else { /* As of version 17, we recalculate the custom graphic ID of waypoints * from the GRF ID / station index. */ for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { StationClass* stclass = StationClass::Get(STAT_CLASS_WAYP); for (uint i = 0; i < stclass->GetSpecCount(); i++) { const StationSpec *statspec = stclass->GetSpec(i); if (statspec != NULL && statspec->grf_prop.grffile->grfid == wp->grfid && statspec->grf_prop.local_id == wp->localidx) { wp->spec = statspec; break; } } } } if (!Waypoint::CanAllocateItem(_old_waypoints.Length())) SlError(STR_ERROR_TOO_MANY_STATIONS_LOADING); /* All saveload conversions have been done. Create the new waypoints! */ for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { Waypoint *new_wp = new Waypoint(wp->xy); new_wp->town = wp->town; new_wp->town_cn = wp->town_cn; new_wp->name = wp->name; new_wp->delete_ctr = 0; // Just reset delete counter for once. new_wp->build_date = wp->build_date; new_wp->owner = wp->owner; new_wp->string_id = STR_SV_STNAME_WAYPOINT; TileIndex t = wp->xy; if (IsTileType(t, MP_RAILWAY) && GetRailTileType(t) == 2 /* RAIL_TILE_WAYPOINT */ && _m[t].m2 == wp->index) { /* The tile might've been reserved! */ bool reserved = !IsSavegameVersionBefore(100) && HasBit(_m[t].m5, 4); /* The tile really has our waypoint, so reassign the map array */ MakeRailWaypoint(t, GetTileOwner(t), new_wp->index, (Axis)GB(_m[t].m5, 0, 1), 0, GetRailType(t)); new_wp->facilities |= FACIL_TRAIN; new_wp->owner = GetTileOwner(t); SetRailStationReservation(t, reserved); if (wp->spec != NULL) { SetCustomStationSpecIndex(t, AllocateSpecToStation(wp->spec, new_wp, true)); } new_wp->rect.BeforeAddTile(t, StationRect::ADD_FORCE); } wp->new_index = new_wp->index; } /* Update the orders of vehicles */ OrderList *ol; FOR_ALL_ORDER_LISTS(ol) { if (ol->GetFirstSharedVehicle()->type != VEH_TRAIN) continue; for (Order *o = ol->GetFirstOrder(); o != NULL; o = o->next) UpdateWaypointOrder(o); } Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->type != VEH_TRAIN) continue; UpdateWaypointOrder(&v->current_order); } _old_waypoints.Reset(); } static const SaveLoad _old_waypoint_desc[] = { SLE_CONDVAR(OldWaypoint, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(OldWaypoint, xy, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(OldWaypoint, town_index, SLE_UINT16, 12, 121), SLE_CONDREF(OldWaypoint, town, REF_TOWN, 122, SL_MAX_VERSION), SLE_CONDVAR(OldWaypoint, town_cn, SLE_FILE_U8 | SLE_VAR_U16, 12, 88), SLE_CONDVAR(OldWaypoint, town_cn, SLE_UINT16, 89, SL_MAX_VERSION), SLE_CONDVAR(OldWaypoint, string_id, SLE_STRINGID, 0, 83), SLE_CONDSTR(OldWaypoint, name, SLE_STR, 0, 84, SL_MAX_VERSION), SLE_VAR(OldWaypoint, delete_ctr, SLE_UINT8), SLE_CONDVAR(OldWaypoint, build_date, SLE_FILE_U16 | SLE_VAR_I32, 3, 30), SLE_CONDVAR(OldWaypoint, build_date, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDVAR(OldWaypoint, localidx, SLE_UINT8, 3, SL_MAX_VERSION), SLE_CONDVAR(OldWaypoint, grfid, SLE_UINT32, 17, SL_MAX_VERSION), SLE_CONDVAR(OldWaypoint, owner, SLE_UINT8, 101, SL_MAX_VERSION), SLE_END() }; static void Load_WAYP() { /* Precaution for when loading failed and it didn't get cleared */ _old_waypoints.Clear(); int index; while ((index = SlIterateArray()) != -1) { OldWaypoint *wp = _old_waypoints.Append(); memset(wp, 0, sizeof(*wp)); wp->index = index; SlObject(wp, _old_waypoint_desc); } } static void Ptrs_WAYP() { for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { SlObject(wp, _old_waypoint_desc); if (IsSavegameVersionBefore(12)) { wp->town_cn = (wp->string_id & 0xC000) == 0xC000 ? (wp->string_id >> 8) & 0x3F : 0; wp->town = ClosestTownFromTile(wp->xy, UINT_MAX); } else if (IsSavegameVersionBefore(122)) { /* Only for versions 12 .. 122 */ if (!Town::IsValidID(wp->town_index)) { /* Upon a corrupted waypoint we'll likely get here. The next step will be to * loop over all Ptrs procs to NULL the pointers. However, we don't know * whether we're in the NULL or "normal" Ptrs proc. So just clear the list * of old waypoints we constructed and then this waypoint (and the other * possibly corrupt ones) will not be queried in the NULL Ptrs proc run. */ _old_waypoints.Clear(); SlErrorCorrupt("Referencing invalid Town"); } wp->town = Town::Get(wp->town_index); } if (IsSavegameVersionBefore(84)) { wp->name = CopyFromOldName(wp->string_id); } } } extern const ChunkHandler _waypoint_chunk_handlers[] = { { 'CHKP', NULL, Load_WAYP, Ptrs_WAYP, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/map_sl.cpp0000644000000000000000000001552712246102605016245 0ustar rootroot/* $Id: map_sl.cpp 21284 2010-11-21 12:47:04Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file map_sl.cpp Code handling saving and loading of map */ #include "../stdafx.h" #include "../map_func.h" #include "../core/bitmath_func.hpp" #include "../fios.h" #include "saveload.h" static uint32 _map_dim_x; static uint32 _map_dim_y; static const SaveLoadGlobVarList _map_dimensions[] = { SLEG_CONDVAR(_map_dim_x, SLE_UINT32, 6, SL_MAX_VERSION), SLEG_CONDVAR(_map_dim_y, SLE_UINT32, 6, SL_MAX_VERSION), SLEG_END() }; static void Save_MAPS() { _map_dim_x = MapSizeX(); _map_dim_y = MapSizeY(); SlGlobList(_map_dimensions); } static void Load_MAPS() { SlGlobList(_map_dimensions); AllocateMap(_map_dim_x, _map_dim_y); } static void Check_MAPS() { SlGlobList(_map_dimensions); _load_check_data.map_size_x = _map_dim_x; _load_check_data.map_size_y = _map_dim_y; } static const uint MAP_SL_BUF_SIZE = 4096; static void Load_MAPT() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].type_height = buf[j]; } } static void Save_MAPT() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].type_height; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } static void Load_MAP1() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m1 = buf[j]; } } static void Save_MAP1() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m1; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } static void Load_MAP2() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, /* In those versions the m2 was 8 bits */ IsSavegameVersionBefore(5) ? SLE_FILE_U8 | SLE_VAR_U16 : SLE_UINT16 ); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m2 = buf[j]; } } static void Save_MAP2() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size * sizeof(uint16)); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m2; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT16); } } static void Load_MAP3() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m3 = buf[j]; } } static void Save_MAP3() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m3; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } static void Load_MAP4() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m4 = buf[j]; } } static void Save_MAP4() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m4; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } static void Load_MAP5() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m5 = buf[j]; } } static void Save_MAP5() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m5; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } static void Load_MAP6() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); if (IsSavegameVersionBefore(42)) { for (TileIndex i = 0; i != size;) { /* 1024, otherwise we overflow on 64x64 maps! */ SlArray(buf, 1024, SLE_UINT8); for (uint j = 0; j != 1024; j++) { _m[i++].m6 = GB(buf[j], 0, 2); _m[i++].m6 = GB(buf[j], 2, 2); _m[i++].m6 = GB(buf[j], 4, 2); _m[i++].m6 = GB(buf[j], 6, 2); } } } else { for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m6 = buf[j]; } } } static void Save_MAP6() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _m[i++].m6; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } static void Load_MAP7() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _me[i++].m7 = buf[j]; } } static void Save_MAP7() { SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); SlSetLength(size); for (TileIndex i = 0; i != size;) { for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _me[i++].m7; SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8); } } extern const ChunkHandler _map_chunk_handlers[] = { { 'MAPS', Save_MAPS, Load_MAPS, NULL, Check_MAPS, CH_RIFF }, { 'MAPT', Save_MAPT, Load_MAPT, NULL, NULL, CH_RIFF }, { 'MAPO', Save_MAP1, Load_MAP1, NULL, NULL, CH_RIFF }, { 'MAP2', Save_MAP2, Load_MAP2, NULL, NULL, CH_RIFF }, { 'M3LO', Save_MAP3, Load_MAP3, NULL, NULL, CH_RIFF }, { 'M3HI', Save_MAP4, Load_MAP4, NULL, NULL, CH_RIFF }, { 'MAP5', Save_MAP5, Load_MAP5, NULL, NULL, CH_RIFF }, { 'MAPE', Save_MAP6, Load_MAP6, NULL, NULL, CH_RIFF }, { 'MAP7', Save_MAP7, Load_MAP7, NULL, NULL, CH_RIFF | CH_LAST }, }; openttd-1.3.3/src/saveload/oldloader_sl.cpp0000644000000000000000000016637612246102605017446 0ustar rootroot/* $Id: oldloader_sl.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file oldloader_sl.cpp Chunks and fix-ups for TTO/TTD/TTDP savegames. TTO loader code is based on SVXConverter by Roman Vetter. */ #include "../stdafx.h" #include "../town.h" #include "../industry.h" #include "../company_func.h" #include "../aircraft.h" #include "../roadveh.h" #include "../ship.h" #include "../train.h" #include "../signs_base.h" #include "../station_base.h" #include "../subsidy_base.h" #include "../debug.h" #include "../depot_base.h" #include "../date_func.h" #include "../vehicle_func.h" #include "../effectvehicle_base.h" #include "../engine_func.h" #include "../company_base.h" #include "saveload_internal.h" #include "oldloader.h" #include "table/strings.h" #include "../table/engines.h" #include "../table/townname.h" static bool _read_ttdpatch_flags; ///< Have we (tried to) read TTDPatch extra flags? static uint16 _old_extra_chunk_nums; ///< Number of extra TTDPatch chunks static byte _old_vehicle_multiplier; ///< TTDPatch vehicle multiplier static uint8 *_old_map3; void FixOldMapArray() { /* TTO/TTD/TTDP savegames could have buoys at tile 0 * (without assigned station struct) */ MemSetT(&_m[0], 0); SetTileType(0, MP_WATER); SetTileOwner(0, OWNER_WATER); } static void FixTTDMapArray() { /* _old_map3 is moved to _m::m3 and _m::m4 */ for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { _m[t].m3 = _old_map3[t * 2]; _m[t].m4 = _old_map3[t * 2 + 1]; } for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { switch (GetTileType(t)) { case MP_STATION: _m[t].m4 = 0; // We do not understand this TTDP station mapping (yet) switch (_m[t].m5) { /* We have drive through stops at a totally different place */ case 0x53: case 0x54: _m[t].m5 += 170 - 0x53; break; // Bus drive through case 0x57: case 0x58: _m[t].m5 += 168 - 0x57; break; // Truck drive through case 0x55: case 0x56: _m[t].m5 += 170 - 0x55; break; // Bus tram stop case 0x59: case 0x5A: _m[t].m5 += 168 - 0x59; break; // Truck tram stop default: break; } break; case MP_RAILWAY: /* We save presignals different from TTDPatch, convert them */ if (GB(_m[t].m5, 6, 2) == 1) { // RAIL_TILE_SIGNALS /* This byte is always zero in TTD for this type of tile */ if (_m[t].m4) { // Convert the presignals to our own format _m[t].m4 = (_m[t].m4 >> 1) & 7; } } /* TTDPatch stores PBS things in L6 and all elsewhere; so we'll just * clear it for ourselves and let OTTD's rebuild PBS itself */ _m[t].m4 &= 0xF; // Only keep the lower four bits; upper four is PBS break; case MP_WATER: /* if water class == 3, make river there */ if (GB(_m[t].m3, 0, 2) == 3) { SetTileType(t, MP_WATER); SetTileOwner(t, OWNER_WATER); _m[t].m2 = 0; _m[t].m3 = 2; // WATER_CLASS_RIVER _m[t].m4 = Random(); _m[t].m5 = 0; } break; default: break; } } FixOldMapArray(); } static void FixTTDDepots() { const Depot *d; FOR_ALL_DEPOTS_FROM(d, 252) { if (!IsDepotTile(d->xy) || GetDepotIndex(d->xy) != d->index) { /** Workaround for SVXConverter bug, depots 252-255 could be invalid */ delete d; } } } #define FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z) static uint32 RemapOldTownName(uint32 townnameparts, byte old_town_name_type) { switch (old_town_name_type) { case 0: case 3: // English, American /* Already OK */ return townnameparts; case 1: // French /* For some reason 86 needs to be subtracted from townnameparts * 0000 0000 0000 0000 0000 0000 1111 1111 */ return FIXNUM(townnameparts - 86, lengthof(_name_french_real), 0); case 2: // German DEBUG(misc, 0, "German Townnames are buggy (%d)", townnameparts); return townnameparts; case 4: // Latin-American /* 0000 0000 0000 0000 0000 0000 1111 1111 */ return FIXNUM(townnameparts, lengthof(_name_spanish_real), 0); case 5: // Silly /* NUM_SILLY_1 - lower 16 bits * NUM_SILLY_2 - upper 16 bits without leading 1 (first 8 bytes) * 1000 0000 2222 2222 0000 0000 1111 1111 */ return FIXNUM(townnameparts, lengthof(_name_silly_1), 0) | FIXNUM(GB(townnameparts, 16, 8), lengthof(_name_silly_2), 16); } return 0; } #undef FIXNUM static void FixOldTowns() { Town *town; /* Convert town-names if needed */ FOR_ALL_TOWNS(town) { if (IsInsideMM(town->townnametype, 0x20C1, 0x20C3)) { town->townnametype = SPECSTR_TOWNNAME_ENGLISH + _settings_game.game_creation.town_name; town->townnameparts = RemapOldTownName(town->townnameparts, _settings_game.game_creation.town_name); } } } static StringID *_old_vehicle_names; /** * Convert the old style vehicles into something that resembles * the old new style savegames. Then #AfterLoadGame can handle * the rest of the conversion. */ void FixOldVehicles() { Vehicle *v; FOR_ALL_VEHICLES(v) { if ((size_t)v->next == 0xFFFF) { v->next = NULL; } else { v->next = Vehicle::GetIfValid((size_t)v->next); } /* For some reason we need to correct for this */ switch (v->spritenum) { case 0xfd: break; case 0xff: v->spritenum = 0xfe; break; default: v->spritenum >>= 1; break; } /* Vehicle-subtype is different in TTD(Patch) */ if (v->type == VEH_EFFECT) v->subtype = v->subtype >> 1; v->name = CopyFromOldName(_old_vehicle_names[v->index]); /* We haven't used this bit for stations for ages */ if (v->type == VEH_ROAD) { RoadVehicle *rv = RoadVehicle::From(v); if (rv->state != RVSB_IN_DEPOT && rv->state != RVSB_WORMHOLE) { ClrBit(rv->state, 2); if (IsTileType(rv->tile, MP_STATION) && _m[rv->tile].m5 >= 168) { /* Update the vehicle's road state to show we're in a drive through road stop. */ SetBit(rv->state, RVS_IN_DT_ROAD_STOP); } } } /* The subtype should be 0, but it sometimes isn't :( */ if (v->type == VEH_ROAD || v->type == VEH_SHIP) v->subtype = 0; /* Sometimes primary vehicles would have a nothing (invalid) order * or vehicles that could not have an order would still have a * (loading) order which causes assertions and the like later on. */ if (!IsCompanyBuildableVehicleType(v) || (v->IsPrimaryVehicle() && v->current_order.IsType(OT_NOTHING))) { v->current_order.MakeDummy(); } /* Shared orders are fixed in AfterLoadVehicles now */ } } static bool FixTTOMapArray() { for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { TileType tt = GetTileType(t); if (tt == 11) { /* TTO has a different way of storing monorail. * Instead of using bits in m3 it uses a different tile type. */ _m[t].m3 = 1; // rail type = monorail (in TTD) SetTileType(t, MP_RAILWAY); _m[t].m2 = 1; // set monorail ground to RAIL_GROUND_GRASS tt = MP_RAILWAY; } switch (tt) { case MP_CLEAR: break; case MP_RAILWAY: switch (GB(_m[t].m5, 6, 2)) { case 0: // RAIL_TILE_NORMAL break; case 1: // RAIL_TILE_SIGNALS _m[t].m4 = (~_m[t].m5 & 1) << 2; // signal variant (present only in OTTD) SB(_m[t].m2, 6, 2, GB(_m[t].m5, 3, 2)); // signal status _m[t].m3 |= 0xC0; // both signals are present _m[t].m5 = HasBit(_m[t].m5, 5) ? 2 : 1; // track direction (only X or Y) _m[t].m5 |= 0x40; // RAIL_TILE_SIGNALS break; case 3: // RAIL_TILE_DEPOT _m[t].m2 = 0; break; default: return false; } break; case MP_ROAD: // road (depot) or level crossing switch (GB(_m[t].m5, 4, 4)) { case 0: // ROAD_TILE_NORMAL if (_m[t].m2 == 4) _m[t].m2 = 5; // 'small trees' -> ROADSIDE_TREES break; case 1: // ROAD_TILE_CROSSING (there aren't monorail crossings in TTO) _m[t].m3 = _m[t].m1; // set owner of road = owner of rail break; case 2: // ROAD_TILE_DEPOT break; default: return false; } break; case MP_HOUSE: _m[t].m3 = _m[t].m2 & 0xC0; // construction stage _m[t].m2 &= 0x3F; // building type if (_m[t].m2 >= 5) _m[t].m2++; // skip "large office block on snow" break; case MP_TREES: _m[t].m3 = GB(_m[t].m5, 3, 3); // type of trees _m[t].m5 &= 0xC7; // number of trees and growth status break; case MP_STATION: _m[t].m3 = (_m[t].m5 >= 0x08 && _m[t].m5 <= 0x0F) ? 1 : 0; // monorail -> 1, others 0 (rail, road, airport, dock) if (_m[t].m5 >= 8) _m[t].m5 -= 8; // shift for monorail if (_m[t].m5 >= 0x42) _m[t].m5++; // skip heliport break; case MP_WATER: _m[t].m3 = _m[t].m2 = 0; break; case MP_VOID: _m[t].m2 = _m[t].m3 = _m[t].m5 = 0; break; case MP_INDUSTRY: _m[t].m3 = 0; switch (_m[t].m5) { case 0x24: // farm silo _m[t].m5 = 0x25; break; case 0x25: case 0x27: // farm case 0x28: case 0x29: case 0x2A: case 0x2B: // factory _m[t].m5--; break; default: if (_m[t].m5 >= 0x2C) _m[t].m5 += 3; // iron ore mine, steel mill or bank break; } break; case MP_TUNNELBRIDGE: if (HasBit(_m[t].m5, 7)) { // bridge byte m5 = _m[t].m5; _m[t].m5 = m5 & 0xE1; // copy bits 7..5, 1 if (GB(m5, 1, 2) == 1) _m[t].m5 |= 0x02; // road bridge if (GB(m5, 1, 2) == 3) _m[t].m2 |= 0xA0; // monorail bridge -> tubular, steel bridge if (!HasBit(m5, 6)) { // bridge head _m[t].m3 = (GB(m5, 1, 2) == 3) ? 1 : 0; // track subtype (1 for monorail, 0 for others) } else { // middle bridge part _m[t].m3 = HasBit(m5, 2) ? 0x10 : 0; // track subtype on bridge if (GB(m5, 3, 2) == 3) _m[t].m3 |= 1; // track subtype under bridge if (GB(m5, 3, 2) == 1) _m[t].m5 |= 0x08; // set for road/water under (0 for rail/clear) } } else { // tunnel entrance/exit _m[t].m2 = 0; _m[t].m3 = HasBit(_m[t].m5, 3); // monorail _m[t].m5 &= HasBit(_m[t].m5, 3) ? 0x03 : 0x07 ; // direction, transport type (== 0 for rail) } break; case MP_OBJECT: _m[t].m2 = 0; _m[t].m3 = 0; break; default: return false; } } FixOldMapArray(); return true; } static Engine *_old_engines; static bool FixTTOEngines() { /** TTD->TTO remapping of engines; 255 means there is no equivalent. SVXConverter uses (almost) the same table. */ static const EngineID ttd_to_tto[] = { 0, 255, 255, 255, 255, 255, 255, 255, 5, 7, 8, 9, 10, 11, 12, 13, 255, 255, 255, 255, 255, 255, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 28, 30, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 255, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 45, 46, 255, 255, 255, 255, 47, 48, 255, 49, 50, 255, 255, 255, 255, 51, 52, 255, 53, 54, 255, 55, 56, 255, 57, 59, 255, 58, 60, 255, 61, 62, 255, 63, 64, 255, 65, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 68, 69, 70, 71, 255, 255, 76, 77, 255, 255, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 255, 255 }; /** TTO->TTD remapping of engines. SVXConverter uses the same table. */ static const EngineID tto_to_ttd[] = { 0, 0, 8, 8, 8, 8, 8, 9, 10, 11, 12, 13, 14, 15, 15, 22, 23, 24, 25, 26, 27, 29, 28, 30, 31, 32, 33, 34, 35, 36, 37, 55, 57, 59, 58, 60, 61, 62, 63, 64, 65, 66, 67, 116, 116, 117, 118, 123, 124, 126, 127, 132, 133, 135, 136, 138, 139, 141, 142, 144, 145, 147, 148, 150, 151, 153, 154, 204, 205, 206, 207, 208, 211, 212, 211, 212, 211, 212, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 253 }; Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->engine_type >= lengthof(tto_to_ttd)) return false; v->engine_type = tto_to_ttd[v->engine_type]; } /* Load the default engine set. Many of them will be overridden later */ uint j = 0; for (uint i = 0; i < lengthof(_orig_rail_vehicle_info); i++, j++) new (GetTempDataEngine(j)) Engine(VEH_TRAIN, i); for (uint i = 0; i < lengthof(_orig_road_vehicle_info); i++, j++) new (GetTempDataEngine(j)) Engine(VEH_ROAD, i); for (uint i = 0; i < lengthof(_orig_ship_vehicle_info); i++, j++) new (GetTempDataEngine(j)) Engine(VEH_SHIP, i); for (uint i = 0; i < lengthof(_orig_aircraft_vehicle_info); i++, j++) new (GetTempDataEngine(j)) Engine(VEH_AIRCRAFT, i); Date aging_date = min(_date + DAYS_TILL_ORIGINAL_BASE_YEAR, ConvertYMDToDate(2050, 0, 1)); for (EngineID i = 0; i < 256; i++) { int oi = ttd_to_tto[i]; Engine *e = GetTempDataEngine(i); if (oi == 255) { /* Default engine is used */ _date += DAYS_TILL_ORIGINAL_BASE_YEAR; StartupOneEngine(e, aging_date); e->intro_date -= DAYS_TILL_ORIGINAL_BASE_YEAR; _date -= DAYS_TILL_ORIGINAL_BASE_YEAR; /* Make sure for example monorail and maglev are available when they should be */ if (_date >= e->intro_date && HasBit(e->info.climates, 0)) { e->flags |= ENGINE_AVAILABLE; e->company_avail = (CompanyMask)0xFF; e->age = _date > e->intro_date ? (_date - e->intro_date) / 30 : 0; } } else { /* Using data from TTO savegame */ Engine *oe = &_old_engines[oi]; e->intro_date = oe->intro_date; e->age = oe->age; e->reliability = oe->reliability; e->reliability_spd_dec = oe->reliability_spd_dec; e->reliability_start = oe->reliability_start; e->reliability_max = oe->reliability_max; e->reliability_final = oe->reliability_final; e->duration_phase_1 = oe->duration_phase_1; e->duration_phase_2 = oe->duration_phase_2; e->duration_phase_3 = oe->duration_phase_3; e->flags = oe->flags; e->company_avail = 0; /* One or more engines were remapped to this one. Make this engine available * if at least one of them was available. */ for (uint j = 0; j < lengthof(tto_to_ttd); j++) { if (tto_to_ttd[j] == i && _old_engines[j].company_avail != 0) { e->company_avail = (CompanyMask)0xFF; e->flags |= ENGINE_AVAILABLE; break; } } e->info.climates = 1; } e->preview_company = INVALID_COMPANY; e->preview_asked = (CompanyMask)-1; e->preview_wait = 0; e->name = NULL; } return true; } static void FixTTOCompanies() { Company *c; FOR_ALL_COMPANIES(c) { c->cur_economy.company_value = CalculateCompanyValue(c); // company value history is zeroed } } static inline byte RemapTTOColour(byte tto) { /** Lossy remapping of TTO colours to TTD colours. SVXConverter uses the same conversion. */ static const byte tto_colour_remap[] = { COLOUR_DARK_BLUE, COLOUR_GREY, COLOUR_YELLOW, COLOUR_RED, COLOUR_PURPLE, COLOUR_DARK_GREEN, COLOUR_ORANGE, COLOUR_PALE_GREEN, COLOUR_BLUE, COLOUR_GREEN, COLOUR_CREAM, COLOUR_BROWN, COLOUR_WHITE, COLOUR_LIGHT_BLUE, COLOUR_MAUVE, COLOUR_PINK }; if ((size_t)tto >= lengthof(tto_colour_remap)) return COLOUR_GREY; // this shouldn't happen return tto_colour_remap[tto]; } static inline uint RemapTownIndex(uint x) { return _savegame_type == SGT_TTO ? (x - 0x264) / 78 : (x - 0x264) / 94; } static inline uint RemapOrderIndex(uint x) { return _savegame_type == SGT_TTO ? (x - 0x1AC4) / 2 : (x - 0x1C18) / 2; } extern TileIndex *_animated_tile_list; extern uint _animated_tile_count; extern char *_old_name_array; static uint32 _old_town_index; static uint16 _old_string_id; static uint16 _old_string_id_2; static void ReadTTDPatchFlags() { if (_read_ttdpatch_flags) return; _read_ttdpatch_flags = true; /* Set default values */ _old_vehicle_multiplier = 1; _ttdp_version = 0; _old_extra_chunk_nums = 0; _bump_assert_value = 0; if (_savegame_type == SGT_TTO) return; /* TTDPatch misuses _old_map3 for flags.. read them! */ _old_vehicle_multiplier = _old_map3[0]; /* Somehow.... there was an error in some savegames, so 0 becomes 1 * and 1 becomes 2. The rest of the values are okay */ if (_old_vehicle_multiplier < 2) _old_vehicle_multiplier++; _old_vehicle_names = MallocT(_old_vehicle_multiplier * 850); /* TTDPatch increases the Vehicle-part in the middle of the game, * so if the multiplier is anything else but 1, the assert fails.. * bump the assert value so it doesn't! * (1 multiplier == 850 vehicles * 1 vehicle == 128 bytes */ _bump_assert_value = (_old_vehicle_multiplier - 1) * 850 * 128; for (uint i = 0; i < 17; i++) { // check tile 0, too if (_old_map3[i] != 0) _savegame_type = SGT_TTDP1; } /* Check if we have a modern TTDPatch savegame (has extra data all around) */ if (memcmp(&_old_map3[0x1FFFA], "TTDp", 4) == 0) _savegame_type = SGT_TTDP2; _old_extra_chunk_nums = _old_map3[_savegame_type == SGT_TTDP2 ? 0x1FFFE : 0x2]; /* Clean the misused places */ for (uint i = 0; i < 17; i++) _old_map3[i] = 0; for (uint i = 0x1FE00; i < 0x20000; i++) _old_map3[i] = 0; if (_savegame_type == SGT_TTDP2) DEBUG(oldloader, 2, "Found TTDPatch game"); DEBUG(oldloader, 3, "Vehicle-multiplier is set to %d (%d vehicles)", _old_vehicle_multiplier, _old_vehicle_multiplier * 850); } static const OldChunks town_chunk[] = { OCL_SVAR( OC_TILE, Town, xy ), OCL_NULL( 2 ), ///< population, no longer in use OCL_SVAR( OC_UINT16, Town, townnametype ), OCL_SVAR( OC_UINT32, Town, townnameparts ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, grow_counter ), OCL_NULL( 1 ), ///< sort_index, no longer in use OCL_NULL( 4 ), ///< sign-coordinates, no longer in use OCL_NULL( 2 ), ///< namewidth, no longer in use OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, Town, flags ), OCL_NULL( 10 ), ///< radius, no longer in use OCL_SVAR( OC_INT16, Town, ratings[0] ), OCL_SVAR( OC_INT16, Town, ratings[1] ), OCL_SVAR( OC_INT16, Town, ratings[2] ), OCL_SVAR( OC_INT16, Town, ratings[3] ), OCL_SVAR( OC_INT16, Town, ratings[4] ), OCL_SVAR( OC_INT16, Town, ratings[5] ), OCL_SVAR( OC_INT16, Town, ratings[6] ), OCL_SVAR( OC_INT16, Town, ratings[7] ), OCL_SVAR( OC_FILE_U32 | OC_VAR_U16, Town, have_ratings ), OCL_SVAR( OC_FILE_U32 | OC_VAR_U16, Town, statues ), OCL_NULL( 2 ), ///< num_houses, no longer in use OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, time_until_rebuild ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, growth_rate ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].new_max ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].new_max ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].new_act ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].new_act ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].old_max ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].old_max ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_PASSENGERS].old_act ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, supplied[CT_MAIL].old_act ), OCL_NULL( 2 ), ///< pct_pass_transported / pct_mail_transported, now computed on the fly OCL_SVAR( OC_TTD | OC_UINT16, Town, received[TE_FOOD].new_act ), OCL_SVAR( OC_TTD | OC_UINT16, Town, received[TE_WATER].new_act ), OCL_SVAR( OC_TTD | OC_UINT16, Town, received[TE_FOOD].old_act ), OCL_SVAR( OC_TTD | OC_UINT16, Town, received[TE_WATER].old_act ), OCL_SVAR( OC_UINT8, Town, road_build_months ), OCL_SVAR( OC_UINT8, Town, fund_buildings_months ), OCL_CNULL( OC_TTD, 8 ), ///< some junk at the end of the record OCL_END() }; static bool LoadOldTown(LoadgameState *ls, int num) { Town *t = new (num) Town(); if (!LoadChunk(ls, t, town_chunk)) return false; if (t->xy != 0) { if (_savegame_type == SGT_TTO) { /* 0x10B6 is auto-generated name, others are custom names */ t->townnametype = t->townnametype == 0x10B6 ? 0x20C1 : t->townnametype + 0x2A00; } } else { delete t; } return true; } static uint16 _old_order; static const OldChunks order_chunk[] = { OCL_VAR ( OC_UINT16, 1, &_old_order ), OCL_END() }; static bool LoadOldOrder(LoadgameState *ls, int num) { if (!LoadChunk(ls, NULL, order_chunk)) return false; Order *o = new (num) Order(); o->AssignOrder(UnpackOldOrder(_old_order)); if (o->IsType(OT_NOTHING)) { delete o; } else { /* Relink the orders to each other (in the orders for one vehicle are behind each other, * with an invalid order (OT_NOTHING) as indication that it is the last order */ Order *prev = Order::GetIfValid(num - 1); if (prev != NULL) prev->next = o; } return true; } static bool LoadOldAnimTileList(LoadgameState *ls, int num) { /* This is slightly hackish - we must load a chunk into an array whose * address isn't static, but instead pointed to by _animated_tile_list. * To achieve that, create an OldChunks list on the stack on the fly. * The list cannot be static because the value of _animated_tile_list * can change between calls. */ const OldChunks anim_chunk[] = { OCL_VAR ( OC_TILE, 256, _animated_tile_list ), OCL_END () }; if (!LoadChunk(ls, NULL, anim_chunk)) return false; /* Update the animated tile counter by counting till the first zero in the array */ for (_animated_tile_count = 0; _animated_tile_count < 256; _animated_tile_count++) { if (_animated_tile_list[_animated_tile_count] == 0) break; } return true; } static const OldChunks depot_chunk[] = { OCL_SVAR( OC_TILE, Depot, xy ), OCL_VAR ( OC_UINT32, 1, &_old_town_index ), OCL_END() }; static bool LoadOldDepot(LoadgameState *ls, int num) { Depot *d = new (num) Depot(); if (!LoadChunk(ls, d, depot_chunk)) return false; if (d->xy != 0) { /* In some cases, there could be depots referencing invalid town. */ Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index)); if (t == NULL) t = Town::GetRandom(); d->town = t; } else { delete d; } return true; } static StationID _current_station_id; static uint16 _waiting_acceptance; static uint8 _cargo_source; static uint8 _cargo_days; static const OldChunks goods_chunk[] = { OCL_VAR ( OC_UINT16, 1, &_waiting_acceptance ), OCL_SVAR( OC_UINT8, GoodsEntry, time_since_pickup ), OCL_SVAR( OC_UINT8, GoodsEntry, rating ), OCL_VAR ( OC_UINT8, 1, &_cargo_source ), OCL_VAR ( OC_UINT8, 1, &_cargo_days ), OCL_SVAR( OC_UINT8, GoodsEntry, last_speed ), OCL_SVAR( OC_UINT8, GoodsEntry, last_age ), OCL_END() }; static bool LoadOldGood(LoadgameState *ls, int num) { /* for TTO games, 12th (num == 11) goods entry is created in the Station constructor */ if (_savegame_type == SGT_TTO && num == 11) return true; Station *st = Station::Get(_current_station_id); GoodsEntry *ge = &st->goods[num]; if (!LoadChunk(ls, ge, goods_chunk)) return false; SB(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); SB(ge->acceptance_pickup, GoodsEntry::GES_PICKUP, 1, _cargo_source != 0xFF); if (GB(_waiting_acceptance, 0, 12) != 0 && CargoPacket::CanAllocateItem()) { ge->cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source, 0, 0)); } return true; } static const OldChunks station_chunk[] = { OCL_SVAR( OC_TILE, Station, xy ), OCL_VAR ( OC_UINT32, 1, &_old_town_index ), OCL_NULL( 4 ), ///< bus/lorry tile OCL_SVAR( OC_TILE, Station, train_station.tile ), OCL_SVAR( OC_TILE, Station, airport.tile ), OCL_SVAR( OC_TILE, Station, dock_tile ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Station, train_station.w ), OCL_NULL( 1 ), ///< sort-index, no longer in use OCL_NULL( 2 ), ///< sign-width, no longer in use OCL_VAR ( OC_UINT16, 1, &_old_string_id ), OCL_NULL( 4 ), ///< sign left/top, no longer in use OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, Station, had_vehicle_of_type ), OCL_CHUNK( 12, LoadOldGood ), OCL_SVAR( OC_UINT8, Station, time_since_load ), OCL_SVAR( OC_UINT8, Station, time_since_unload ), OCL_SVAR( OC_UINT8, Station, delete_ctr ), OCL_SVAR( OC_UINT8, Station, owner ), OCL_SVAR( OC_UINT8, Station, facilities ), OCL_SVAR( OC_TTD | OC_UINT8, Station, airport.type ), OCL_SVAR( OC_TTO | OC_FILE_U16 | OC_VAR_U64, Station, airport.flags ), OCL_NULL( 3 ), ///< bus/truck status, blocked months, no longer in use OCL_CNULL( OC_TTD, 1 ), ///< unknown OCL_SVAR( OC_TTD | OC_FILE_U16 | OC_VAR_U64, Station, airport.flags ), OCL_CNULL( OC_TTD, 2 ), ///< last_vehicle. now last_vehicle_type OCL_CNULL( OC_TTD, 4 ), ///< junk at end of chunk OCL_END() }; static bool LoadOldStation(LoadgameState *ls, int num) { Station *st = new (num) Station(); _current_station_id = num; if (!LoadChunk(ls, st, station_chunk)) return false; if (st->xy != 0) { st->town = Town::Get(RemapTownIndex(_old_town_index)); if (_savegame_type == SGT_TTO) { if (IsInsideBS(_old_string_id, 0x180F, 32)) { st->string_id = STR_SV_STNAME + (_old_string_id - 0x180F); // automatic name } else { st->string_id = _old_string_id + 0x2800; // custom name } if (HasBit(st->airport.flags, 8)) { st->airport.type = 1; // large airport } else if (HasBit(st->airport.flags, 6)) { st->airport.type = 3; // oil rig } else { st->airport.type = 0; // small airport } } else { st->string_id = RemapOldStringID(_old_string_id); } } else { delete st; } return true; } static const OldChunks industry_chunk[] = { OCL_SVAR( OC_TILE, Industry, location.tile ), OCL_VAR ( OC_UINT32, 1, &_old_town_index ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Industry, location.w ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Industry, location.h ), OCL_NULL( 2 ), ///< used to be industry's produced_cargo OCL_SVAR( OC_TTD | OC_UINT16, Industry, produced_cargo_waiting[0] ), OCL_SVAR( OC_TTD | OC_UINT16, Industry, produced_cargo_waiting[1] ), OCL_SVAR( OC_TTO | OC_FILE_U8 | OC_VAR_U16, Industry, produced_cargo_waiting[0] ), OCL_SVAR( OC_TTO | OC_FILE_U8 | OC_VAR_U16, Industry, produced_cargo_waiting[1] ), OCL_SVAR( OC_UINT8, Industry, production_rate[0] ), OCL_SVAR( OC_UINT8, Industry, production_rate[1] ), OCL_NULL( 3 ), ///< used to be industry's accepts_cargo OCL_SVAR( OC_UINT8, Industry, prod_level ), OCL_SVAR( OC_UINT16, Industry, this_month_production[0] ), OCL_SVAR( OC_UINT16, Industry, this_month_production[1] ), OCL_SVAR( OC_UINT16, Industry, this_month_transported[0] ), OCL_SVAR( OC_UINT16, Industry, this_month_transported[1] ), OCL_SVAR( OC_UINT8, Industry, last_month_pct_transported[0] ), OCL_SVAR( OC_UINT8, Industry, last_month_pct_transported[1] ), OCL_SVAR( OC_UINT16, Industry, last_month_production[0] ), OCL_SVAR( OC_UINT16, Industry, last_month_production[1] ), OCL_SVAR( OC_UINT16, Industry, last_month_transported[0] ), OCL_SVAR( OC_UINT16, Industry, last_month_transported[1] ), OCL_SVAR( OC_UINT8, Industry, type ), OCL_SVAR( OC_TTO | OC_FILE_U8 | OC_VAR_U16, Industry, counter ), OCL_SVAR( OC_UINT8, Industry, owner ), OCL_SVAR( OC_UINT8, Industry, random_colour ), OCL_SVAR( OC_TTD | OC_FILE_U8 | OC_VAR_I32, Industry, last_prod_year ), OCL_SVAR( OC_TTD | OC_UINT16, Industry, counter ), OCL_SVAR( OC_TTD | OC_UINT8, Industry, was_cargo_delivered ), OCL_CNULL( OC_TTD, 9 ), ///< Random junk at the end of this chunk OCL_END() }; static bool LoadOldIndustry(LoadgameState *ls, int num) { Industry *i = new (num) Industry(); if (!LoadChunk(ls, i, industry_chunk)) return false; if (i->location.tile != 0) { i->town = Town::Get(RemapTownIndex(_old_town_index)); if (_savegame_type == SGT_TTO) { if (i->type > 0x06) i->type++; // Printing Works were added if (i->type == 0x0A) i->type = 0x12; // Iron Ore Mine has different ID YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); i->last_prod_year = ymd.year; i->random_colour = RemapTTOColour(i->random_colour); } Industry::IncIndustryTypeCount(i->type); } else { delete i; } return true; } static CompanyID _current_company_id; static int32 _old_yearly; static const OldChunks _company_yearly_chunk[] = { OCL_VAR( OC_INT32, 1, &_old_yearly ), OCL_END() }; static bool LoadOldCompanyYearly(LoadgameState *ls, int num) { Company *c = Company::Get(_current_company_id); for (uint i = 0; i < 13; i++) { if (_savegame_type == SGT_TTO && i == 6) { _old_yearly = 0; // property maintenance } else { if (!LoadChunk(ls, NULL, _company_yearly_chunk)) return false; } c->yearly_expenses[num][i] = _old_yearly; } return true; } static const OldChunks _company_economy_chunk[] = { OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, income ), OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, expenses ), OCL_SVAR( OC_INT32, CompanyEconomyEntry, delivered_cargo[NUM_CARGO - 1] ), OCL_SVAR( OC_INT32, CompanyEconomyEntry, performance_history ), OCL_SVAR( OC_TTD | OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, company_value ), OCL_END() }; static bool LoadOldCompanyEconomy(LoadgameState *ls, int num) { Company *c = Company::Get(_current_company_id); if (!LoadChunk(ls, &c->cur_economy, _company_economy_chunk)) return false; /* Don't ask, but the number in TTD(Patch) are inversed to OpenTTD */ c->cur_economy.income = -c->cur_economy.income; c->cur_economy.expenses = -c->cur_economy.expenses; for (uint i = 0; i < 24; i++) { if (!LoadChunk(ls, &c->old_economy[i], _company_economy_chunk)) return false; c->old_economy[i].income = -c->old_economy[i].income; c->old_economy[i].expenses = -c->old_economy[i].expenses; } return true; } static const OldChunks _company_chunk[] = { OCL_VAR ( OC_UINT16, 1, &_old_string_id ), OCL_SVAR( OC_UINT32, Company, name_2 ), OCL_SVAR( OC_UINT32, Company, face ), OCL_VAR ( OC_UINT16, 1, &_old_string_id_2 ), OCL_SVAR( OC_UINT32, Company, president_name_2 ), OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Company, money ), OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Company, current_loan ), OCL_SVAR( OC_UINT8, Company, colour ), OCL_SVAR( OC_UINT8, Company, money_fraction ), OCL_SVAR( OC_UINT8, Company, months_of_bankruptcy ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Company, bankrupt_asked ), OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Company, bankrupt_value ), OCL_SVAR( OC_UINT16, Company, bankrupt_timeout ), OCL_CNULL( OC_TTD, 4 ), // cargo_types OCL_CNULL( OC_TTO, 2 ), // cargo_types OCL_CHUNK( 3, LoadOldCompanyYearly ), OCL_CHUNK( 1, LoadOldCompanyEconomy ), OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Company, inaugurated_year), OCL_SVAR( OC_TILE, Company, last_build_coordinate ), OCL_SVAR( OC_UINT8, Company, num_valid_stat_ent ), OCL_NULL( 230 ), // Old AI OCL_SVAR( OC_UINT8, Company, block_preview ), OCL_CNULL( OC_TTD, 1 ), // Old AI OCL_SVAR( OC_TTD | OC_UINT8, Company, avail_railtypes ), OCL_SVAR( OC_TILE, Company, location_of_HQ ), OCL_SVAR( OC_TTD | OC_UINT8, Company, share_owners[0] ), OCL_SVAR( OC_TTD | OC_UINT8, Company, share_owners[1] ), OCL_SVAR( OC_TTD | OC_UINT8, Company, share_owners[2] ), OCL_SVAR( OC_TTD | OC_UINT8, Company, share_owners[3] ), OCL_CNULL( OC_TTD, 8 ), ///< junk at end of chunk OCL_END() }; static bool LoadOldCompany(LoadgameState *ls, int num) { Company *c = new (num) Company(); _current_company_id = (CompanyID)num; if (!LoadChunk(ls, c, _company_chunk)) return false; if (_old_string_id == 0) { delete c; return true; } if (_savegame_type == SGT_TTO) { /* adjust manager's face */ if (HasBit(c->face, 27) && GB(c->face, 26, 1) == GB(c->face, 19, 1)) { /* if face would be black in TTD, adjust tie colour and thereby face colour */ ClrBit(c->face, 27); } /* Company name */ if (_old_string_id == 0 || _old_string_id == 0x4C00) { _old_string_id = STR_SV_UNNAMED; // "Unnamed" } else if (GB(_old_string_id, 8, 8) == 0x52) { _old_string_id += 0x2A00; // Custom name } else { _old_string_id = RemapOldStringID(_old_string_id += 0x240D); // Automatic name } c->name_1 = _old_string_id; /* Manager name */ switch (_old_string_id_2) { case 0x4CDA: _old_string_id_2 = SPECSTR_PRESIDENT_NAME; break; // automatic name case 0x0006: _old_string_id_2 = STR_SV_EMPTY; break; // empty name default: _old_string_id_2 = _old_string_id_2 + 0x2A00; break; // custom name } c->president_name_1 = _old_string_id_2; c->colour = RemapTTOColour(c->colour); if (num != 0) c->is_ai = true; } else { c->name_1 = RemapOldStringID(_old_string_id); c->president_name_1 = RemapOldStringID(_old_string_id_2); if (num == 0) { /* If the first company has no name, make sure we call it UNNAMED */ if (c->name_1 == 0) { c->name_1 = STR_SV_UNNAMED; } } else { /* Beside some multiplayer maps (1 on 1), which we don't official support, * all other companies are an AI.. mark them as such */ c->is_ai = true; } /* Sometimes it is better to not ask.. in old scenarios, the money * was always 893288 pounds. In the newer versions this is correct, * but correct for those oldies * Ps: this also means that if you had exact 893288 pounds, you will go back * to 100000.. this is a very VERY small chance ;) */ if (c->money == 893288) c->money = c->current_loan = 100000; } _company_colours[num] = (Colours)c->colour; c->inaugurated_year -= ORIGINAL_BASE_YEAR; return true; } static uint32 _old_order_ptr; static uint16 _old_next_ptr; static VehicleID _current_vehicle_id; static const OldChunks vehicle_train_chunk[] = { OCL_SVAR( OC_UINT8, Train, track ), OCL_SVAR( OC_UINT8, Train, force_proceed ), OCL_SVAR( OC_UINT16, Train, crash_anim_pos ), OCL_SVAR( OC_UINT8, Train, railtype ), OCL_NULL( 5 ), ///< Junk OCL_END() }; static const OldChunks vehicle_road_chunk[] = { OCL_SVAR( OC_UINT8, RoadVehicle, state ), OCL_SVAR( OC_UINT8, RoadVehicle, frame ), OCL_SVAR( OC_UINT16, RoadVehicle, blocked_ctr ), OCL_SVAR( OC_UINT8, RoadVehicle, overtaking ), OCL_SVAR( OC_UINT8, RoadVehicle, overtaking_ctr ), OCL_SVAR( OC_UINT16, RoadVehicle, crashed_ctr ), OCL_SVAR( OC_UINT8, RoadVehicle, reverse_ctr ), OCL_NULL( 1 ), ///< Junk OCL_END() }; static const OldChunks vehicle_ship_chunk[] = { OCL_SVAR( OC_UINT8, Ship, state ), OCL_NULL( 9 ), ///< Junk OCL_END() }; static const OldChunks vehicle_air_chunk[] = { OCL_SVAR( OC_UINT8, Aircraft, pos ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Aircraft, targetairport ), OCL_SVAR( OC_UINT16, Aircraft, crashed_counter ), OCL_SVAR( OC_UINT8, Aircraft, state ), OCL_NULL( 5 ), ///< Junk OCL_END() }; static const OldChunks vehicle_effect_chunk[] = { OCL_SVAR( OC_UINT16, EffectVehicle, animation_state ), OCL_SVAR( OC_UINT8, EffectVehicle, animation_substate ), OCL_NULL( 7 ), // Junk OCL_END() }; static const OldChunks vehicle_disaster_chunk[] = { OCL_SVAR( OC_UINT16, DisasterVehicle, image_override ), OCL_SVAR( OC_UINT16, DisasterVehicle, big_ufo_destroyer_target ), OCL_NULL( 6 ), ///< Junk OCL_END() }; static const OldChunks vehicle_empty_chunk[] = { OCL_NULL( 10 ), ///< Junk OCL_END() }; static bool LoadOldVehicleUnion(LoadgameState *ls, int num) { Vehicle *v = Vehicle::GetIfValid(_current_vehicle_id); uint temp = ls->total_read; bool res; if (v == NULL) { res = LoadChunk(ls, NULL, vehicle_empty_chunk); } else { switch (v->type) { default: SlErrorCorrupt("Invalid vehicle type"); case VEH_TRAIN : res = LoadChunk(ls, v, vehicle_train_chunk); break; case VEH_ROAD : res = LoadChunk(ls, v, vehicle_road_chunk); break; case VEH_SHIP : res = LoadChunk(ls, v, vehicle_ship_chunk); break; case VEH_AIRCRAFT: res = LoadChunk(ls, v, vehicle_air_chunk); break; case VEH_EFFECT : res = LoadChunk(ls, v, vehicle_effect_chunk); break; case VEH_DISASTER: res = LoadChunk(ls, v, vehicle_disaster_chunk); break; } } /* This chunk size should always be 10 bytes */ if (ls->total_read - temp != 10) { DEBUG(oldloader, 0, "Assert failed in VehicleUnion: invalid chunk size"); return false; } return res; } static uint16 _cargo_count; static const OldChunks vehicle_chunk[] = { OCL_SVAR( OC_UINT8, Vehicle, subtype ), OCL_NULL( 2 ), ///< Hash, calculated automatically OCL_NULL( 2 ), ///< Index, calculated automatically OCL_VAR ( OC_UINT32, 1, &_old_order_ptr ), OCL_VAR ( OC_UINT16, 1, &_old_order ), OCL_NULL ( 1 ), ///< num_orders, now calculated OCL_SVAR( OC_UINT8, Vehicle, cur_implicit_order_index ), OCL_SVAR( OC_TILE, Vehicle, dest_tile ), OCL_SVAR( OC_UINT16, Vehicle, load_unload_ticks ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, date_of_last_service ), OCL_SVAR( OC_UINT16, Vehicle, service_interval ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Vehicle, last_station_visited ), OCL_SVAR( OC_TTD | OC_UINT8, Vehicle, tick_counter ), OCL_CNULL( OC_TTD, 2 ), ///< max_speed, now it is calculated. OCL_CNULL( OC_TTO, 1 ), ///< max_speed, now it is calculated. OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Vehicle, x_pos ), OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Vehicle, y_pos ), OCL_SVAR( OC_FILE_U8 | OC_VAR_I32, Vehicle, z_pos ), OCL_SVAR( OC_UINT8, Vehicle, direction ), OCL_NULL( 2 ), ///< x_offs and y_offs, calculated automatically OCL_NULL( 2 ), ///< x_extent and y_extent, calculated automatically OCL_NULL( 1 ), ///< z_extent, calculated automatically OCL_SVAR( OC_UINT8, Vehicle, owner ), OCL_SVAR( OC_TILE, Vehicle, tile ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, cur_image ), OCL_NULL( 8 ), ///< Vehicle sprite box, calculated automatically OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, Vehicle, vehstatus ), OCL_SVAR( OC_TTD | OC_UINT16, Vehicle, cur_speed ), OCL_SVAR( OC_TTO | OC_FILE_U8 | OC_VAR_U16, Vehicle, cur_speed ), OCL_SVAR( OC_UINT8, Vehicle, subspeed ), OCL_SVAR( OC_UINT8, Vehicle, acceleration ), OCL_SVAR( OC_UINT8, Vehicle, progress ), OCL_SVAR( OC_UINT8, Vehicle, cargo_type ), OCL_SVAR( OC_TTD | OC_UINT16, Vehicle, cargo_cap ), OCL_SVAR( OC_TTO | OC_FILE_U8 | OC_VAR_U16, Vehicle, cargo_cap ), OCL_VAR ( OC_TTD | OC_UINT16, 1, &_cargo_count ), OCL_VAR ( OC_TTO | OC_FILE_U8 | OC_VAR_U16, 1, &_cargo_count ), OCL_VAR ( OC_UINT8, 1, &_cargo_source ), OCL_VAR ( OC_UINT8, 1, &_cargo_days ), OCL_SVAR( OC_TTO | OC_UINT8, Vehicle, tick_counter ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, age ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, max_age ), OCL_SVAR( OC_FILE_U8 | OC_VAR_I32, Vehicle, build_year ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Vehicle, unitnumber ), OCL_SVAR( OC_TTD | OC_UINT16, Vehicle, engine_type ), OCL_SVAR( OC_TTO | OC_FILE_U8 | OC_VAR_U16, Vehicle, engine_type ), OCL_SVAR( OC_UINT8, Vehicle, spritenum ), OCL_SVAR( OC_UINT8, Vehicle, day_counter ), OCL_SVAR( OC_UINT8, Vehicle, breakdowns_since_last_service ), OCL_SVAR( OC_UINT8, Vehicle, breakdown_ctr ), OCL_SVAR( OC_UINT8, Vehicle, breakdown_delay ), OCL_SVAR( OC_UINT8, Vehicle, breakdown_chance ), OCL_CNULL( OC_TTO, 1 ), OCL_SVAR( OC_UINT16, Vehicle, reliability ), OCL_SVAR( OC_UINT16, Vehicle, reliability_spd_dec ), OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Vehicle, profit_this_year ), OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Vehicle, profit_last_year ), OCL_VAR ( OC_UINT16, 1, &_old_next_ptr ), OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Vehicle, value ), OCL_VAR ( OC_UINT16, 1, &_old_string_id ), OCL_CHUNK( 1, LoadOldVehicleUnion ), OCL_CNULL( OC_TTO, 24 ), ///< junk OCL_CNULL( OC_TTD, 20 ), ///< junk at end of struct (TTDPatch has some data in it) OCL_END() }; /** * Load the vehicles of an old style savegame. * @param ls State (buffer) of the currently loaded game. * @param num The number of vehicles to load. * @return True iff loading went without problems. */ bool LoadOldVehicle(LoadgameState *ls, int num) { /* Read the TTDPatch flags, because we need some info from it */ ReadTTDPatchFlags(); for (uint i = 0; i < _old_vehicle_multiplier; i++) { _current_vehicle_id = num * _old_vehicle_multiplier + i; Vehicle *v; if (_savegame_type == SGT_TTO) { uint type = ReadByte(ls); switch (type) { default: return false; case 0x00 /* VEH_INVALID */: v = NULL; break; case 0x25 /* MONORAIL */: case 0x20 /* VEH_TRAIN */: v = new (_current_vehicle_id) Train(); break; case 0x21 /* VEH_ROAD */: v = new (_current_vehicle_id) RoadVehicle(); break; case 0x22 /* VEH_SHIP */: v = new (_current_vehicle_id) Ship(); break; case 0x23 /* VEH_AIRCRAFT */: v = new (_current_vehicle_id) Aircraft(); break; case 0x24 /* VEH_EFFECT */: v = new (_current_vehicle_id) EffectVehicle(); break; case 0x26 /* VEH_DISASTER */: v = new (_current_vehicle_id) DisasterVehicle(); break; } if (!LoadChunk(ls, v, vehicle_chunk)) return false; if (v == NULL) continue; SpriteID sprite = v->cur_image; /* no need to override other sprites */ if (IsInsideMM(sprite, 1460, 1465)) { sprite += 580; // aircraft smoke puff } else if (IsInsideMM(sprite, 2096, 2115)) { sprite += 977; // special effects part 1 } else if (IsInsideMM(sprite, 2396, 2436)) { sprite += 1305; // special effects part 2 } else if (IsInsideMM(sprite, 2516, 2539)) { sprite += 1385; // rotor or disaster-related vehicles } v->cur_image = sprite; switch (v->type) { case VEH_TRAIN: { static const byte spriteset_rail[] = { 0, 2, 4, 4, 8, 10, 12, 14, 16, 18, 20, 22, 40, 42, 44, 46, 48, 52, 54, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140 }; if (v->spritenum / 2 >= lengthof(spriteset_rail)) return false; v->spritenum = spriteset_rail[v->spritenum / 2]; // adjust railway sprite set offset Train::From(v)->railtype = type == 0x25 ? 1 : 0; // monorail / rail break; } case VEH_ROAD: if (v->spritenum >= 22) v->spritenum += 12; break; case VEH_SHIP: v->spritenum += 2; switch (v->spritenum) { case 2: // oil tanker && cargo type != oil if (v->cargo_type != CT_OIL) v->spritenum = 0; // make it a coal/goods ship break; case 4: // passenger ship && cargo type == mail if (v->cargo_type == CT_MAIL) v->spritenum = 0; // make it a mail ship break; default: break; } break; default: break; } switch (_old_string_id) { case 0x0000: break; // empty (invalid vehicles) case 0x0006: _old_string_id = STR_SV_EMPTY; break; // empty (special vehicles) case 0x8495: _old_string_id = STR_SV_TRAIN_NAME; break; // "Train X" case 0x8842: _old_string_id = STR_SV_ROAD_VEHICLE_NAME; break; // "Road Vehicle X" case 0x8C3B: _old_string_id = STR_SV_SHIP_NAME; break; // "Ship X" case 0x9047: _old_string_id = STR_SV_AIRCRAFT_NAME; break; // "Aircraft X" default: _old_string_id += 0x2A00; break; // custom name } _old_vehicle_names[_current_vehicle_id] = _old_string_id; } else { /* Read the vehicle type and allocate the right vehicle */ switch (ReadByte(ls)) { default: SlErrorCorrupt("Invalid vehicle type"); case 0x00 /* VEH_INVALID */: v = NULL; break; case 0x10 /* VEH_TRAIN */: v = new (_current_vehicle_id) Train(); break; case 0x11 /* VEH_ROAD */: v = new (_current_vehicle_id) RoadVehicle(); break; case 0x12 /* VEH_SHIP */: v = new (_current_vehicle_id) Ship(); break; case 0x13 /* VEH_AIRCRAFT*/: v = new (_current_vehicle_id) Aircraft(); break; case 0x14 /* VEH_EFFECT */: v = new (_current_vehicle_id) EffectVehicle(); break; case 0x15 /* VEH_DISASTER*/: v = new (_current_vehicle_id) DisasterVehicle(); break; } if (!LoadChunk(ls, v, vehicle_chunk)) return false; if (v == NULL) continue; _old_vehicle_names[_current_vehicle_id] = RemapOldStringID(_old_string_id); /* This should be consistent, else we have a big problem... */ if (v->index != _current_vehicle_id) { DEBUG(oldloader, 0, "Loading failed - vehicle-array is invalid"); return false; } } if (_old_order_ptr != 0 && _old_order_ptr != 0xFFFFFFFF) { uint max = _savegame_type == SGT_TTO ? 3000 : 5000; uint old_id = RemapOrderIndex(_old_order_ptr); if (old_id < max) v->orders.old = Order::Get(old_id); // don't accept orders > max number of orders } v->current_order.AssignOrder(UnpackOldOrder(_old_order)); v->next = (Vehicle *)(size_t)_old_next_ptr; if (_cargo_count != 0 && CargoPacket::CanAllocateItem()) { StationID source = (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source; TileIndex source_xy = (source != INVALID_STATION) ? Station::Get(source)->xy : 0; v->cargo.Append(new CargoPacket(_cargo_count, _cargo_days, source, source_xy, source_xy)); } } return true; } static const OldChunks sign_chunk[] = { OCL_VAR ( OC_UINT16, 1, &_old_string_id ), OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, x ), OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, y ), OCL_SVAR( OC_FILE_U16 | OC_VAR_I8, Sign, z ), OCL_NULL( 6 ), ///< Width of sign, no longer in use OCL_END() }; static bool LoadOldSign(LoadgameState *ls, int num) { Sign *si = new (num) Sign(); if (!LoadChunk(ls, si, sign_chunk)) return false; if (_old_string_id != 0) { if (_savegame_type == SGT_TTO) { if (_old_string_id != 0x140A) si->name = CopyFromOldName(_old_string_id + 0x2A00); } else { si->name = CopyFromOldName(RemapOldStringID(_old_string_id)); } si->owner = OWNER_NONE; } else { delete si; } return true; } static const OldChunks engine_chunk[] = { OCL_SVAR( OC_UINT16, Engine, company_avail ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, intro_date ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, age ), OCL_SVAR( OC_UINT16, Engine, reliability ), OCL_SVAR( OC_UINT16, Engine, reliability_spd_dec ), OCL_SVAR( OC_UINT16, Engine, reliability_start ), OCL_SVAR( OC_UINT16, Engine, reliability_max ), OCL_SVAR( OC_UINT16, Engine, reliability_final ), OCL_SVAR( OC_UINT16, Engine, duration_phase_1 ), OCL_SVAR( OC_UINT16, Engine, duration_phase_2 ), OCL_SVAR( OC_UINT16, Engine, duration_phase_3 ), OCL_NULL( 1 ), // lifelength OCL_SVAR( OC_UINT8, Engine, flags ), OCL_NULL( 1 ), // preview_company_rank OCL_SVAR( OC_UINT8, Engine, preview_wait ), OCL_CNULL( OC_TTD, 2 ), ///< railtype + junk OCL_END() }; static bool LoadOldEngine(LoadgameState *ls, int num) { Engine *e = _savegame_type == SGT_TTO ? &_old_engines[num] : GetTempDataEngine(num); return LoadChunk(ls, e, engine_chunk); } static bool LoadOldEngineName(LoadgameState *ls, int num) { Engine *e = GetTempDataEngine(num); e->name = CopyFromOldName(RemapOldStringID(ReadUint16(ls))); return true; } static const OldChunks subsidy_chunk[] = { OCL_SVAR( OC_UINT8, Subsidy, cargo_type ), OCL_SVAR( OC_UINT8, Subsidy, remaining ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Subsidy, src ), OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Subsidy, dst ), OCL_END() }; static bool LoadOldSubsidy(LoadgameState *ls, int num) { Subsidy *s = new (num) Subsidy(); bool ret = LoadChunk(ls, s, subsidy_chunk); if (s->cargo_type == CT_INVALID) delete s; return ret; } static const OldChunks game_difficulty_chunk[] = { OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, max_no_competitors ), OCL_NULL( 2), // competitor_start_time OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, number_towns ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, industry_density ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, DifficultySettings, max_loan ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, initial_interest ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_costs ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, competitor_speed ), OCL_NULL( 2), // competitor_intelligence OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_breakdowns ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, subsidy_multiplier ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, construction_cost ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, terrain_type ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, quantity_sea_lakes ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, economy ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, line_reverse_mode ), OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, disasters ), OCL_END() }; static bool LoadOldGameDifficulty(LoadgameState *ls, int num) { bool ret = LoadChunk(ls, &_settings_game.difficulty, game_difficulty_chunk); _settings_game.difficulty.max_loan *= 1000; return ret; } static bool LoadOldMapPart1(LoadgameState *ls, int num) { if (_savegame_type == SGT_TTO) { MemSetT(_m, 0, OLD_MAP_SIZE); MemSetT(_me, 0, OLD_MAP_SIZE); } for (uint i = 0; i < OLD_MAP_SIZE; i++) { _m[i].m1 = ReadByte(ls); } for (uint i = 0; i < OLD_MAP_SIZE; i++) { _m[i].m2 = ReadByte(ls); } if (_savegame_type != SGT_TTO) { for (uint i = 0; i < OLD_MAP_SIZE; i++) { _old_map3[i * 2] = ReadByte(ls); _old_map3[i * 2 + 1] = ReadByte(ls); } for (uint i = 0; i < OLD_MAP_SIZE / 4; i++) { byte b = ReadByte(ls); _m[i * 4 + 0].m6 = GB(b, 0, 2); _m[i * 4 + 1].m6 = GB(b, 2, 2); _m[i * 4 + 2].m6 = GB(b, 4, 2); _m[i * 4 + 3].m6 = GB(b, 6, 2); } } return true; } static bool LoadOldMapPart2(LoadgameState *ls, int num) { uint i; for (i = 0; i < OLD_MAP_SIZE; i++) { _m[i].type_height = ReadByte(ls); } for (i = 0; i < OLD_MAP_SIZE; i++) { _m[i].m5 = ReadByte(ls); } return true; } static bool LoadTTDPatchExtraChunks(LoadgameState *ls, int num) { ReadTTDPatchFlags(); DEBUG(oldloader, 2, "Found %d extra chunk(s)", _old_extra_chunk_nums); for (int i = 0; i != _old_extra_chunk_nums; i++) { uint16 id = ReadUint16(ls); uint32 len = ReadUint32(ls); switch (id) { /* List of GRFIDs, used in the savegame. 0x8004 is the new ID * They are saved in a 'GRFID:4 active:1' format, 5 bytes for each entry */ case 0x2: case 0x8004: { /* Skip the first element: TTDP hack for the Action D special variables (FFFF0000 01) */ ReadUint32(ls); ReadByte(ls); len -= 5; ClearGRFConfigList(&_grfconfig); while (len != 0) { uint32 grfid = ReadUint32(ls); if (ReadByte(ls) == 1) { GRFConfig *c = new GRFConfig("TTDP game, no information"); c->ident.grfid = grfid; AppendToGRFConfigList(&_grfconfig, c); DEBUG(oldloader, 3, "TTDPatch game using GRF file with GRFID %0X", BSWAP32(c->ident.grfid)); } len -= 5; } /* Append static NewGRF configuration */ AppendStaticGRFConfigs(&_grfconfig); break; } /* TTDPatch version and configuration */ case 0x3: _ttdp_version = ReadUint32(ls); DEBUG(oldloader, 3, "Game saved with TTDPatch version %d.%d.%d r%d", GB(_ttdp_version, 24, 8), GB(_ttdp_version, 20, 4), GB(_ttdp_version, 16, 4), GB(_ttdp_version, 0, 16)); len -= 4; while (len-- != 0) ReadByte(ls); // skip the configuration break; default: DEBUG(oldloader, 4, "Skipping unknown extra chunk %X", id); while (len-- != 0) ReadByte(ls); break; } } return true; } extern TileIndex _cur_tileloop_tile; extern uint16 _disaster_delay; extern byte _trees_tick_ctr; extern byte _age_cargo_skip_counter; // From misc_sl.cpp extern uint8 _old_diff_level; static const OldChunks main_chunk[] = { OCL_ASSERT( OC_TTD, 0 ), OCL_ASSERT( OC_TTO, 0 ), OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_date ), OCL_VAR ( OC_UINT16, 1, &_date_fract ), OCL_NULL( 600 ), ///< TextEffects OCL_VAR ( OC_UINT32, 2, &_random.state ), OCL_ASSERT( OC_TTD, 0x264 ), OCL_ASSERT( OC_TTO, 0x264 ), OCL_CCHUNK( OC_TTD, 70, LoadOldTown ), OCL_CCHUNK( OC_TTO, 80, LoadOldTown ), OCL_ASSERT( OC_TTD, 0x1C18 ), OCL_ASSERT( OC_TTO, 0x1AC4 ), OCL_CCHUNK( OC_TTD, 5000, LoadOldOrder ), OCL_CCHUNK( OC_TTO, 3000, LoadOldOrder ), OCL_ASSERT( OC_TTD, 0x4328 ), OCL_ASSERT( OC_TTO, 0x3234 ), OCL_CHUNK( 1, LoadOldAnimTileList ), OCL_NULL( 4 ), ///< old end-of-order-list-pointer, no longer in use OCL_ASSERT( OC_TTO, 0x3438 ), OCL_CCHUNK( OC_TTD, 255, LoadOldDepot ), OCL_CCHUNK( OC_TTO, 252, LoadOldDepot ), OCL_ASSERT( OC_TTD, 0x4B26 ), OCL_ASSERT( OC_TTO, 0x3A20 ), OCL_NULL( 4 ), ///< town counter, no longer in use OCL_NULL( 2 ), ///< timer_counter, no longer in use OCL_NULL( 2 ), ///< land_code, no longer in use OCL_VAR ( OC_FILE_U16 | OC_VAR_U8, 1, &_age_cargo_skip_counter ), OCL_VAR ( OC_UINT16, 1, &_tick_counter ), OCL_VAR ( OC_TILE, 1, &_cur_tileloop_tile ), OCL_ASSERT( OC_TTO, 0x3A2E ), OCL_CNULL( OC_TTO, 48 * 6 ), ///< prices OCL_CNULL( OC_TTD, 49 * 6 ), ///< prices OCL_ASSERT( OC_TTO, 0x3B4E ), OCL_CNULL( OC_TTO, 11 * 8 ), ///< cargo payment rates OCL_CNULL( OC_TTD, 12 * 8 ), ///< cargo payment rates OCL_ASSERT( OC_TTD, 0x4CBA ), OCL_ASSERT( OC_TTO, 0x3BA6 ), OCL_CHUNK( 1, LoadOldMapPart1 ), OCL_ASSERT( OC_TTD, 0x48CBA ), OCL_ASSERT( OC_TTO, 0x23BA6 ), OCL_CCHUNK( OC_TTD, 250, LoadOldStation ), OCL_CCHUNK( OC_TTO, 200, LoadOldStation ), OCL_ASSERT( OC_TTO, 0x29E16 ), OCL_CCHUNK( OC_TTD, 90, LoadOldIndustry ), OCL_CCHUNK( OC_TTO, 100, LoadOldIndustry ), OCL_ASSERT( OC_TTO, 0x2ADB6 ), OCL_CHUNK( 8, LoadOldCompany ), OCL_ASSERT( OC_TTD, 0x547F2 ), OCL_ASSERT( OC_TTO, 0x2C746 ), OCL_CCHUNK( OC_TTD, 850, LoadOldVehicle ), OCL_CCHUNK( OC_TTO, 800, LoadOldVehicle ), OCL_ASSERT( OC_TTD, 0x6F0F2 ), OCL_ASSERT( OC_TTO, 0x45746 ), OCL_VAR ( OC_TTD | OC_UINT8 | OC_DEREFERENCE_POINTER, 32 * 500, &_old_name_array ), OCL_VAR ( OC_TTO | OC_UINT8 | OC_DEREFERENCE_POINTER, 24 * 200, &_old_name_array ), OCL_ASSERT( OC_TTO, 0x46A06 ), OCL_NULL( 0x2000 ), ///< Old hash-table, no longer in use OCL_CHUNK( 40, LoadOldSign ), OCL_ASSERT( OC_TTO, 0x48C36 ), OCL_CCHUNK( OC_TTD, 256, LoadOldEngine ), OCL_CCHUNK( OC_TTO, 103, LoadOldEngine ), OCL_ASSERT( OC_TTO, 0x496AC ), OCL_NULL ( 2 ), // _vehicle_id_ctr_day OCL_CHUNK( 8, LoadOldSubsidy ), OCL_ASSERT( OC_TTO, 0x496CE ), OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_next_competitor_start ), OCL_CNULL( OC_TTO, 2 ), ///< available monorail bitmask OCL_VAR ( OC_FILE_I16 | OC_VAR_I32, 1, &_saved_scrollpos_x ), OCL_VAR ( OC_FILE_I16 | OC_VAR_I32, 1, &_saved_scrollpos_y ), OCL_VAR ( OC_FILE_U16 | OC_VAR_U8, 1, &_saved_scrollpos_zoom ), OCL_NULL( 4 ), ///< max_loan OCL_VAR ( OC_FILE_U32 | OC_VAR_I64, 1, &_economy.old_max_loan_unround ), OCL_VAR ( OC_INT16, 1, &_economy.fluct ), OCL_VAR ( OC_UINT16, 1, &_disaster_delay ), OCL_ASSERT( OC_TTO, 0x496E4 ), OCL_CNULL( OC_TTD, 144 ), ///< cargo-stuff OCL_CCHUNK( OC_TTD, 256, LoadOldEngineName ), OCL_CNULL( OC_TTD, 144 ), ///< AI cargo-stuff OCL_NULL( 2 ), ///< Company indexes of companies, no longer in use OCL_NULL( 1 ), ///< Station tick counter, no longer in use OCL_VAR ( OC_UINT8, 1, &_settings_game.locale.currency ), OCL_VAR ( OC_UINT8, 1, &_settings_game.locale.units ), OCL_VAR ( OC_FILE_U8 | OC_VAR_U32, 1, &_cur_company_tick_index ), OCL_NULL( 2 ), ///< Date stuff, calculated automatically OCL_NULL( 8 ), ///< Company colours, calculated automatically OCL_VAR ( OC_UINT8, 1, &_economy.infl_amount ), OCL_VAR ( OC_UINT8, 1, &_economy.infl_amount_pr ), OCL_VAR ( OC_UINT8, 1, &_economy.interest_rate ), OCL_NULL( 1 ), // available airports OCL_VAR ( OC_UINT8, 1, &_settings_game.vehicle.road_side ), OCL_VAR ( OC_UINT8, 1, &_settings_game.game_creation.town_name ), OCL_CHUNK( 1, LoadOldGameDifficulty ), OCL_ASSERT( OC_TTD, 0x77130 ), OCL_VAR ( OC_UINT8, 1, &_old_diff_level ), OCL_VAR ( OC_TTD | OC_UINT8, 1, &_settings_game.game_creation.landscape ), OCL_VAR ( OC_TTD | OC_UINT8, 1, &_trees_tick_ctr ), OCL_CNULL( OC_TTD, 1 ), ///< Custom vehicle types yes/no, no longer used OCL_VAR ( OC_TTD | OC_UINT8, 1, &_settings_game.game_creation.snow_line_height ), OCL_CNULL( OC_TTD, 32 ), ///< new_industry_randtable, no longer used (because of new design) OCL_CNULL( OC_TTD, 36 ), ///< cargo-stuff OCL_ASSERT( OC_TTD, 0x77179 ), OCL_ASSERT( OC_TTO, 0x4971D ), OCL_CHUNK( 1, LoadOldMapPart2 ), OCL_ASSERT( OC_TTD, 0x97179 ), OCL_ASSERT( OC_TTO, 0x6971D ), /* Below any (if available) extra chunks from TTDPatch can follow */ OCL_CHUNK(1, LoadTTDPatchExtraChunks), OCL_END() }; bool LoadTTDMain(LoadgameState *ls) { DEBUG(oldloader, 3, "Reading main chunk..."); _read_ttdpatch_flags = false; /* Load the biggest chunk */ SmallStackSafeStackAlloc map3; _old_map3 = map3.data; _old_vehicle_names = NULL; try { if (!LoadChunk(ls, NULL, main_chunk)) { DEBUG(oldloader, 0, "Loading failed"); free(_old_vehicle_names); return false; } } catch (...) { free(_old_vehicle_names); throw; } DEBUG(oldloader, 3, "Done, converting game data..."); FixTTDMapArray(); FixTTDDepots(); /* Fix some general stuff */ _settings_game.game_creation.landscape = _settings_game.game_creation.landscape & 0xF; /* Fix the game to be compatible with OpenTTD */ FixOldTowns(); FixOldVehicles(); /* We have a new difficulty setting */ _settings_game.difficulty.town_council_tolerance = Clamp(_old_diff_level, 0, 2); DEBUG(oldloader, 3, "Finished converting game data"); DEBUG(oldloader, 1, "TTD(Patch) savegame successfully converted"); free(_old_vehicle_names); return true; } bool LoadTTOMain(LoadgameState *ls) { DEBUG(oldloader, 3, "Reading main chunk..."); _read_ttdpatch_flags = false; SmallStackSafeStackAlloc engines; // we don't want to call Engine constructor here _old_engines = (Engine *)engines.data; SmallStackSafeStackAlloc vehnames; _old_vehicle_names = vehnames.data; /* Load the biggest chunk */ if (!LoadChunk(ls, NULL, main_chunk)) { DEBUG(oldloader, 0, "Loading failed"); return false; } DEBUG(oldloader, 3, "Done, converting game data..."); if (_settings_game.game_creation.town_name != 0) _settings_game.game_creation.town_name++; _settings_game.game_creation.landscape = 0; _trees_tick_ctr = 0xFF; if (!FixTTOMapArray() || !FixTTOEngines()) { DEBUG(oldloader, 0, "Conversion failed"); return false; } FixOldTowns(); FixOldVehicles(); FixTTOCompanies(); /* We have a new difficulty setting */ _settings_game.difficulty.town_council_tolerance = Clamp(_old_diff_level, 0, 2); /* SVXConverter about cargo payment rates correction: * "increase them to compensate for the faster time advance in TTD compared to TTO * which otherwise would cause much less income while the annual running costs of * the vehicles stay the same" */ _economy.inflation_payment = min(_economy.inflation_payment * 124 / 74, MAX_INFLATION); DEBUG(oldloader, 3, "Finished converting game data"); DEBUG(oldloader, 1, "TTO savegame successfully converted"); return true; } openttd-1.3.3/src/saveload/economy_sl.cpp0000644000000000000000000000743612246102605017141 0ustar rootroot/* $Id: economy_sl.cpp 21284 2010-11-21 12:47:04Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file economy_sl.cpp Code handling saving and loading of economy data */ #include "../stdafx.h" #include "../economy_func.h" #include "../economy_base.h" #include "saveload.h" /** Prices in pre 126 savegames */ static void Load_PRIC() { /* Old games store 49 base prices, very old games store them as int32 */ int vt = IsSavegameVersionBefore(65) ? SLE_FILE_I32 : SLE_FILE_I64; SlArray(NULL, 49, vt | SLE_VAR_NULL); SlArray(NULL, 49, SLE_FILE_U16 | SLE_VAR_NULL); } /** Cargo payment rates in pre 126 savegames */ static void Load_CAPR() { uint num_cargo = IsSavegameVersionBefore(55) ? 12 : NUM_CARGO; int vt = IsSavegameVersionBefore(65) ? SLE_FILE_I32 : SLE_FILE_I64; SlArray(NULL, num_cargo, vt | SLE_VAR_NULL); SlArray(NULL, num_cargo, SLE_FILE_U16 | SLE_VAR_NULL); } static const SaveLoad _economy_desc[] = { SLE_CONDNULL(4, 0, 64), // max_loan SLE_CONDNULL(8, 65, 143), // max_loan SLE_CONDVAR(Economy, old_max_loan_unround, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Economy, old_max_loan_unround, SLE_INT64, 65, 125), SLE_CONDVAR(Economy, old_max_loan_unround_fract, SLE_UINT16, 70, 125), SLE_CONDVAR(Economy, inflation_prices, SLE_UINT64, 126, SL_MAX_VERSION), SLE_CONDVAR(Economy, inflation_payment, SLE_UINT64, 126, SL_MAX_VERSION), SLE_VAR(Economy, fluct, SLE_INT16), SLE_VAR(Economy, interest_rate, SLE_UINT8), SLE_VAR(Economy, infl_amount, SLE_UINT8), SLE_VAR(Economy, infl_amount_pr, SLE_UINT8), SLE_CONDVAR(Economy, industry_daily_change_counter, SLE_UINT32, 102, SL_MAX_VERSION), SLE_END() }; /** Economy variables */ static void Save_ECMY() { SlObject(&_economy, _economy_desc); } /** Economy variables */ static void Load_ECMY() { SlObject(&_economy, _economy_desc); StartupIndustryDailyChanges(IsSavegameVersionBefore(102)); // old savegames will need to be initialized } static const SaveLoad _cargopayment_desc[] = { SLE_REF(CargoPayment, front, REF_VEHICLE), SLE_VAR(CargoPayment, route_profit, SLE_INT64), SLE_VAR(CargoPayment, visual_profit, SLE_INT64), SLE_END() }; static void Save_CAPY() { CargoPayment *cp; FOR_ALL_CARGO_PAYMENTS(cp) { SlSetArrayIndex(cp->index); SlObject(cp, _cargopayment_desc); } } static void Load_CAPY() { int index; while ((index = SlIterateArray()) != -1) { CargoPayment *cp = new (index) CargoPayment(); SlObject(cp, _cargopayment_desc); } } static void Ptrs_CAPY() { CargoPayment *cp; FOR_ALL_CARGO_PAYMENTS(cp) { SlObject(cp, _cargopayment_desc); } } extern const ChunkHandler _economy_chunk_handlers[] = { { 'CAPY', Save_CAPY, Load_CAPY, Ptrs_CAPY, NULL, CH_ARRAY}, { 'PRIC', NULL, Load_PRIC, NULL, NULL, CH_RIFF | CH_AUTO_LENGTH}, { 'CAPR', NULL, Load_CAPR, NULL, NULL, CH_RIFF | CH_AUTO_LENGTH}, { 'ECMY', Save_ECMY, Load_ECMY, NULL, NULL, CH_RIFF | CH_LAST}, }; openttd-1.3.3/src/saveload/ai_sl.cpp0000644000000000000000000001107712246102606016056 0ustar rootroot/* $Id: ai_sl.cpp 24033 2012-03-17 11:14:25Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_sl.cpp Handles the saveload part of the AIs */ #include "../stdafx.h" #include "../company_base.h" #include "../debug.h" #include "saveload.h" #include "../string_func.h" #include "../ai/ai.hpp" #include "../ai/ai_config.hpp" #include "../network/network.h" #include "../ai/ai_instance.hpp" static char _ai_saveload_name[64]; static int _ai_saveload_version; static char _ai_saveload_settings[1024]; static bool _ai_saveload_is_random; static const SaveLoad _ai_company[] = { SLEG_STR(_ai_saveload_name, SLE_STRB), SLEG_STR(_ai_saveload_settings, SLE_STRB), SLEG_CONDVAR(_ai_saveload_version, SLE_UINT32, 108, SL_MAX_VERSION), SLEG_CONDVAR(_ai_saveload_is_random, SLE_BOOL, 136, SL_MAX_VERSION), SLE_END() }; static void SaveReal_AIPL(int *index_ptr) { CompanyID index = (CompanyID)*index_ptr; AIConfig *config = AIConfig::GetConfig(index); if (config->HasScript()) { ttd_strlcpy(_ai_saveload_name, config->GetName(), lengthof(_ai_saveload_name)); _ai_saveload_version = config->GetVersion(); } else { /* No AI is configured for this so store an empty string as name. */ _ai_saveload_name[0] = '\0'; _ai_saveload_version = -1; } _ai_saveload_is_random = config->IsRandom(); _ai_saveload_settings[0] = '\0'; config->SettingsToString(_ai_saveload_settings, lengthof(_ai_saveload_settings)); SlObject(NULL, _ai_company); /* If the AI was active, store his data too */ if (Company::IsValidAiID(index)) AI::Save(index); } static void Load_AIPL() { /* Free all current data */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { AIConfig::GetConfig(c, AIConfig::SSS_FORCE_GAME)->Change(NULL); } CompanyID index; while ((index = (CompanyID)SlIterateArray()) != (CompanyID)-1) { if (index >= MAX_COMPANIES) SlErrorCorrupt("Too many AI configs"); _ai_saveload_is_random = 0; _ai_saveload_version = -1; SlObject(NULL, _ai_company); if (_networking && !_network_server) { if (Company::IsValidAiID(index)) AIInstance::LoadEmpty(); continue; } AIConfig *config = AIConfig::GetConfig(index, AIConfig::SSS_FORCE_GAME); if (StrEmpty(_ai_saveload_name)) { /* A random AI. */ config->Change(NULL, -1, false, true); } else { config->Change(_ai_saveload_name, _ai_saveload_version, false, _ai_saveload_is_random); if (!config->HasScript()) { /* No version of the AI available that can load the data. Try to load the * latest version of the AI instead. */ config->Change(_ai_saveload_name, -1, false, _ai_saveload_is_random); if (!config->HasScript()) { if (strcmp(_ai_saveload_name, "%_dummy") != 0) { DEBUG(script, 0, "The savegame has an AI by the name '%s', version %d which is no longer available.", _ai_saveload_name, _ai_saveload_version); DEBUG(script, 0, "A random other AI will be loaded in its place."); } else { DEBUG(script, 0, "The savegame had no AIs available at the time of saving."); DEBUG(script, 0, "A random available AI will be loaded now."); } } else { DEBUG(script, 0, "The savegame has an AI by the name '%s', version %d which is no longer available.", _ai_saveload_name, _ai_saveload_version); DEBUG(script, 0, "The latest version of that AI has been loaded instead, but it'll not get the savegame data as it's incompatible."); } /* Make sure the AI doesn't get the saveload data, as he was not the * writer of the saveload data in the first place */ _ai_saveload_version = -1; } } config->StringToSettings(_ai_saveload_settings); /* Start the AI directly if it was active in the savegame */ if (Company::IsValidAiID(index)) { AI::StartNew(index, false); AI::Load(index, _ai_saveload_version); } } } static void Save_AIPL() { for (int i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { SlSetArrayIndex(i); SlAutolength((AutolengthProc *)SaveReal_AIPL, &i); } } extern const ChunkHandler _ai_chunk_handlers[] = { { 'AIPL', Save_AIPL, Load_AIPL, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/oldloader.cpp0000644000000000000000000002207512246102605016733 0ustar rootroot/* $Id: oldloader.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file oldloader.cpp Functions for handling of TTO/TTD/TTDP savegames. */ #include "../stdafx.h" #include "../debug.h" #include "../strings_type.h" #include "../string_func.h" #include "../settings_type.h" #include "../fileio_func.h" #include "table/strings.h" #include "saveload_internal.h" #include "oldloader.h" #include static const int TTO_HEADER_SIZE = 41; static const int TTD_HEADER_SIZE = 49; uint32 _bump_assert_value; static inline OldChunkType GetOldChunkType(OldChunkType type) {return (OldChunkType)GB(type, 0, 4);} static inline OldChunkType GetOldChunkVarType(OldChunkType type) {return (OldChunkType)(GB(type, 8, 8) << 8);} static inline OldChunkType GetOldChunkFileType(OldChunkType type) {return (OldChunkType)(GB(type, 16, 8) << 16);} static inline byte CalcOldVarLen(OldChunkType type) { static const byte type_mem_size[] = {0, 1, 1, 2, 2, 4, 4, 8}; byte length = GB(type, 8, 8); assert(length != 0 && length < lengthof(type_mem_size)); return type_mem_size[length]; } /** * * Reads a byte from a file (do not call yourself, use ReadByte()) * */ static byte ReadByteFromFile(LoadgameState *ls) { /* To avoid slow reads, we read BUFFER_SIZE of bytes per time and just return a byte per time */ if (ls->buffer_cur >= ls->buffer_count) { /* Read some new bytes from the file */ int count = (int)fread(ls->buffer, 1, BUFFER_SIZE, ls->file); /* We tried to read, but there is nothing in the file anymore.. */ if (count == 0) { DEBUG(oldloader, 0, "Read past end of file, loading failed"); throw std::exception(); } ls->buffer_count = count; ls->buffer_cur = 0; } return ls->buffer[ls->buffer_cur++]; } /** * * Reads a byte from the buffer and decompress if needed * */ byte ReadByte(LoadgameState *ls) { /* Old savegames have a nice compression algorithm (RLE) which means that we have a chunk, which starts with a length byte. If that byte is negative, we have to repeat the next byte that many times ( + 1). Else, we need to read that amount of bytes. Works pretty well if you have many zeros behind each other */ if (ls->chunk_size == 0) { /* Read new chunk */ int8 new_byte = ReadByteFromFile(ls); if (new_byte < 0) { /* Repeat next char for new_byte times */ ls->decoding = true; ls->decode_char = ReadByteFromFile(ls); ls->chunk_size = -new_byte + 1; } else { ls->decoding = false; ls->chunk_size = new_byte + 1; } } ls->total_read++; ls->chunk_size--; return ls->decoding ? ls->decode_char : ReadByteFromFile(ls); } /** * * Loads a chunk from the old savegame * */ bool LoadChunk(LoadgameState *ls, void *base, const OldChunks *chunks) { byte *base_ptr = (byte*)base; for (const OldChunks *chunk = chunks; chunk->type != OC_END; chunk++) { if (((chunk->type & OC_TTD) && _savegame_type == SGT_TTO) || ((chunk->type & OC_TTO) && _savegame_type != SGT_TTO)) { /* TTD(P)-only chunk, but TTO savegame || TTO-only chunk, but TTD/TTDP savegame */ continue; } byte *ptr = (byte*)chunk->ptr; if (chunk->type & OC_DEREFERENCE_POINTER) ptr = *(byte**)ptr; for (uint i = 0; i < chunk->amount; i++) { /* Handle simple types */ if (GetOldChunkType(chunk->type) != 0) { switch (GetOldChunkType(chunk->type)) { /* Just read the byte and forget about it */ case OC_NULL: ReadByte(ls); break; case OC_CHUNK: /* Call function, with 'i' as parameter to tell which item we * are going to read */ if (!chunk->proc(ls, i)) return false; break; case OC_ASSERT: DEBUG(oldloader, 4, "Assert point: 0x%X / 0x%X", ls->total_read, chunk->offset + _bump_assert_value); if (ls->total_read != chunk->offset + _bump_assert_value) throw std::exception(); default: break; } } else { uint64 res = 0; /* Reading from the file: bits 16 to 23 have the FILE type */ switch (GetOldChunkFileType(chunk->type)) { case OC_FILE_I8: res = (int8)ReadByte(ls); break; case OC_FILE_U8: res = ReadByte(ls); break; case OC_FILE_I16: res = (int16)ReadUint16(ls); break; case OC_FILE_U16: res = ReadUint16(ls); break; case OC_FILE_I32: res = (int32)ReadUint32(ls); break; case OC_FILE_U32: res = ReadUint32(ls); break; default: NOT_REACHED(); } /* When both pointers are NULL, we are just skipping data */ if (base_ptr == NULL && chunk->ptr == NULL) continue; /* Writing to the var: bits 8 to 15 have the VAR type */ if (chunk->ptr == NULL) ptr = base_ptr + chunk->offset; /* Write the data */ switch (GetOldChunkVarType(chunk->type)) { case OC_VAR_I8: *(int8 *)ptr = GB(res, 0, 8); break; case OC_VAR_U8: *(uint8 *)ptr = GB(res, 0, 8); break; case OC_VAR_I16:*(int16 *)ptr = GB(res, 0, 16); break; case OC_VAR_U16:*(uint16*)ptr = GB(res, 0, 16); break; case OC_VAR_I32:*(int32 *)ptr = res; break; case OC_VAR_U32:*(uint32*)ptr = res; break; case OC_VAR_I64:*(int64 *)ptr = res; break; case OC_VAR_U64:*(uint64*)ptr = res; break; default: NOT_REACHED(); } /* Increase pointer base for arrays when looping */ if (chunk->amount > 1 && chunk->ptr != NULL) ptr += CalcOldVarLen(chunk->type); } } } return true; } /** * * Initialize some data before reading * */ static void InitLoading(LoadgameState *ls) { ls->chunk_size = 0; ls->total_read = 0; ls->decoding = false; ls->decode_char = 0; ls->buffer_cur = 0; ls->buffer_count = 0; memset(ls->buffer, 0, BUFFER_SIZE); _bump_assert_value = 0; _settings_game.construction.freeform_edges = false; // disable so we can convert map array (SetTileType is still used) } /** * Verifies the title has a valid checksum * @param title title and checksum * @param len the length of the title to read/checksum * @return true iff the title is valid * @note the title (incl. checksum) has to be at least 41/49 (HEADER_SIZE) bytes long! */ static bool VerifyOldNameChecksum(char *title, uint len) { uint16 sum = 0; for (uint i = 0; i < len - 2; i++) { sum += title[i]; sum = ROL(sum, 1); } sum ^= 0xAAAA; // computed checksum uint16 sum2 = title[len - 2]; // checksum in file SB(sum2, 8, 8, title[len - 1]); return sum == sum2; } static inline bool CheckOldSavegameType(FILE *f, char *temp, const char *last, uint len) { assert(last - temp + 1 >= (int)len); if (fread(temp, 1, len, f) != len) { temp[0] = '\0'; // if reading failed, make the name empty return false; } bool ret = VerifyOldNameChecksum(temp, len); temp[len - 2] = '\0'; // name is null-terminated in savegame, but it's better to be sure str_validate(temp, last); return ret; } static SavegameType DetermineOldSavegameType(FILE *f, char *title, const char *last) { assert_compile(TTD_HEADER_SIZE >= TTO_HEADER_SIZE); char temp[TTD_HEADER_SIZE]; SavegameType type = SGT_TTO; /* Can't fseek to 0 as in tar files that is not correct */ long pos = ftell(f); if (!CheckOldSavegameType(f, temp, lastof(temp), TTO_HEADER_SIZE)) { type = SGT_TTD; fseek(f, pos, SEEK_SET); if (!CheckOldSavegameType(f, temp, lastof(temp), TTD_HEADER_SIZE)) { type = SGT_INVALID; } } if (title != NULL) { switch (type) { case SGT_TTO: title = strecpy(title, "(TTO) ", last); break; case SGT_TTD: title = strecpy(title, "(TTD) ", last); break; default: title = strecpy(title, "(broken) ", last); break; } title = strecpy(title, temp, last); } return type; } typedef bool LoadOldMainProc(LoadgameState *ls); bool LoadOldSaveGame(const char *file) { LoadgameState ls; DEBUG(oldloader, 3, "Trying to load a TTD(Patch) savegame"); InitLoading(&ls); /* Open file */ ls.file = FioFOpenFile(file, "rb", NO_DIRECTORY); if (ls.file == NULL) { DEBUG(oldloader, 0, "Cannot open file '%s'", file); return false; } SavegameType type = DetermineOldSavegameType(ls.file, NULL, NULL); LoadOldMainProc *proc = NULL; switch (type) { case SGT_TTO: proc = &LoadTTOMain; break; case SGT_TTD: proc = &LoadTTDMain; break; default: break; } _savegame_type = type; bool game_loaded; try { game_loaded = proc != NULL && proc(&ls); } catch (...) { game_loaded = false; } if (!game_loaded) { SetSaveLoadError(STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED); fclose(ls.file); return false; } _pause_mode = 2; return true; } void GetOldSaveGameName(const char *file, char *title, const char *last) { FILE *f = FioFOpenFile(file, "rb", NO_DIRECTORY); if (f == NULL) { *title = '\0'; return; } DetermineOldSavegameType(f, title, last); fclose(f); } openttd-1.3.3/src/saveload/goal_sl.cpp0000644000000000000000000000261212246102605016401 0ustar rootroot/* $Id: goal_sl.cpp 23737 2012-01-03 20:37:56Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file goal_sl.cpp Code handling saving and loading of goals */ #include "../stdafx.h" #include "../goal_base.h" #include "saveload.h" static const SaveLoad _goals_desc[] = { SLE_VAR(Goal, company, SLE_UINT16), SLE_VAR(Goal, type, SLE_UINT16), SLE_VAR(Goal, dst, SLE_UINT32), SLE_STR(Goal, text, SLE_STR | SLF_ALLOW_CONTROL, 0), SLE_END() }; static void Save_GOAL() { Goal *s; FOR_ALL_GOALS(s) { SlSetArrayIndex(s->index); SlObject(s, _goals_desc); } } static void Load_GOAL() { int index; while ((index = SlIterateArray()) != -1) { Goal *s = new (index) Goal(); SlObject(s, _goals_desc); } } extern const ChunkHandler _goal_chunk_handlers[] = { { 'GOAL', Save_GOAL, Load_GOAL, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/depot_sl.cpp0000644000000000000000000000421312246102605016571 0ustar rootroot/* $Id: depot_sl.cpp 21284 2010-11-21 12:47:04Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot_sl.cpp Code handling saving and loading of depots */ #include "../stdafx.h" #include "../depot_base.h" #include "../town.h" #include "saveload.h" static TownID _town_index; static const SaveLoad _depot_desc[] = { SLE_CONDVAR(Depot, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Depot, xy, SLE_UINT32, 6, SL_MAX_VERSION), SLEG_CONDVAR(_town_index, SLE_UINT16, 0, 140), SLE_CONDREF(Depot, town, REF_TOWN, 141, SL_MAX_VERSION), SLE_CONDVAR(Depot, town_cn, SLE_UINT16, 141, SL_MAX_VERSION), SLE_CONDSTR(Depot, name, SLE_STR, 0, 141, SL_MAX_VERSION), SLE_CONDVAR(Depot, build_date, SLE_INT32, 142, SL_MAX_VERSION), SLE_END() }; static void Save_DEPT() { Depot *depot; FOR_ALL_DEPOTS(depot) { SlSetArrayIndex(depot->index); SlObject(depot, _depot_desc); } } static void Load_DEPT() { int index; while ((index = SlIterateArray()) != -1) { Depot *depot = new (index) Depot(); SlObject(depot, _depot_desc); /* Set the town 'pointer' so we can restore it later. */ if (IsSavegameVersionBefore(141)) depot->town = (Town *)(size_t)_town_index; } } static void Ptrs_DEPT() { Depot *depot; FOR_ALL_DEPOTS(depot) { SlObject(depot, _depot_desc); if (IsSavegameVersionBefore(141)) depot->town = Town::Get((size_t)depot->town); } } extern const ChunkHandler _depot_chunk_handlers[] = { { 'DEPT', Save_DEPT, Load_DEPT, Ptrs_DEPT, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/oldloader.h0000644000000000000000000001122612246102605016374 0ustar rootroot/* $Id: oldloader.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file oldloader.h Declarations of strctures and function used in loader of old savegames */ #ifndef OLDLOADER_H #define OLDLOADER_H #include "saveload.h" #include "../tile_type.h" static const uint BUFFER_SIZE = 4096; static const uint OLD_MAP_SIZE = 256 * 256; struct LoadgameState { FILE *file; uint chunk_size; bool decoding; byte decode_char; uint buffer_count; uint buffer_cur; byte buffer[BUFFER_SIZE]; uint total_read; }; /* OldChunk-Type */ enum OldChunkType { OC_SIMPLE = 0, OC_NULL = 1, OC_CHUNK = 2, OC_ASSERT = 3, /* 4 bits allocated (16 max) */ OC_TTD = 1 << 4, ///< chunk is valid ONLY for TTD savegames OC_TTO = 1 << 5, ///< -//- TTO (default is neither of these) /* 4 bits allocated */ OC_VAR_I8 = 1 << 8, OC_VAR_U8 = 2 << 8, OC_VAR_I16 = 3 << 8, OC_VAR_U16 = 4 << 8, OC_VAR_I32 = 5 << 8, OC_VAR_U32 = 6 << 8, OC_VAR_I64 = 7 << 8, OC_VAR_U64 = 8 << 8, /* 8 bits allocated (256 max) */ OC_FILE_I8 = 1 << 16, OC_FILE_U8 = 2 << 16, OC_FILE_I16 = 3 << 16, OC_FILE_U16 = 4 << 16, OC_FILE_I32 = 5 << 16, OC_FILE_U32 = 6 << 16, /* 8 bits allocated (256 max) */ OC_INT8 = OC_VAR_I8 | OC_FILE_I8, OC_UINT8 = OC_VAR_U8 | OC_FILE_U8, OC_INT16 = OC_VAR_I16 | OC_FILE_I16, OC_UINT16 = OC_VAR_U16 | OC_FILE_U16, OC_INT32 = OC_VAR_I32 | OC_FILE_I32, OC_UINT32 = OC_VAR_U32 | OC_FILE_U32, OC_TILE = OC_VAR_U32 | OC_FILE_U16, /** * Dereference the pointer once before writing to it, * so we do not have to use big static arrays. */ OC_DEREFERENCE_POINTER = 1 << 31, OC_END = 0, ///< End of the whole chunk, all 32 bits set to zero }; DECLARE_ENUM_AS_BIT_SET(OldChunkType) typedef bool OldChunkProc(LoadgameState *ls, int num); struct OldChunks { OldChunkType type; ///< Type of field uint32 amount; ///< Amount of fields void *ptr; ///< Pointer where to save the data (may only be set if offset is 0) uint offset; ///< Offset from basepointer (may only be set if ptr is NULL) OldChunkProc *proc; ///< Pointer to function that is called with OC_CHUNK }; /* If it fails, check lines above.. */ assert_compile(sizeof(TileIndex) == 4); extern uint _bump_assert_value; byte ReadByte(LoadgameState *ls); bool LoadChunk(LoadgameState *ls, void *base, const OldChunks *chunks); bool LoadTTDMain(LoadgameState *ls); bool LoadTTOMain(LoadgameState *ls); static inline uint16 ReadUint16(LoadgameState *ls) { byte x = ReadByte(ls); return x | ReadByte(ls) << 8; } static inline uint32 ReadUint32(LoadgameState *ls) { uint16 x = ReadUint16(ls); return x | ReadUint16(ls) << 16; } /* Help: * - OCL_SVAR: load 'type' to offset 'offset' in a struct of type 'base', which must also * be given via base in LoadChunk() as real pointer * - OCL_VAR: load 'type' to a global var * - OCL_END: every struct must end with this * - OCL_NULL: read 'amount' of bytes and send them to /dev/null or something * - OCL_CHUNK: load another proc to load a part of the savegame, 'amount' times * - OCL_ASSERT: to check if we are really at the place we expect to be.. because old savegames are too binary to be sure ;) */ #define OCL_SVAR(type, base, offset) { type, 1, NULL, (uint)cpp_offsetof(base, offset), NULL } #define OCL_VAR(type, amount, pointer) { type, amount, pointer, 0, NULL } #define OCL_END() { OC_END, 0, NULL, 0, NULL } #define OCL_CNULL(type, amount) { OC_NULL | type, amount, NULL, 0, NULL } #define OCL_CCHUNK(type, amount, proc) { OC_CHUNK | type, amount, NULL, 0, proc } #define OCL_ASSERT(type, size) { OC_ASSERT | type, 1, NULL, size, NULL } #define OCL_NULL(amount) OCL_CNULL((OldChunkType)0, amount) #define OCL_CHUNK(amount, proc) OCL_CCHUNK((OldChunkType)0, amount, proc) #endif /* OLDLOADER_H */ openttd-1.3.3/src/saveload/cargopacket_sl.cpp0000644000000000000000000001114012246102605017736 0ustar rootroot/* $Id: cargopacket_sl.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargopacket_sl.cpp Code handling saving and loading of cargo packets */ #include "../stdafx.h" #include "../vehicle_base.h" #include "../station_base.h" #include "saveload.h" /** * Savegame conversion for cargopackets. */ /* static */ void CargoPacket::AfterLoad() { if (IsSavegameVersionBefore(44)) { Vehicle *v; /* If we remove a station while cargo from it is still en route, payment calculation will assume * 0, 0 to be the source of the cargo, resulting in very high payments usually. v->source_xy * stores the coordinates, preserving them even if the station is removed. However, if a game is loaded * where this situation exists, the cargo-source information is lost. in this case, we set the source * to the current tile of the vehicle to prevent excessive profits */ FOR_ALL_VEHICLES(v) { const VehicleCargoList::List *packets = v->cargo.Packets(); for (VehicleCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { CargoPacket *cp = *it; cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : v->tile; cp->loaded_at_xy = cp->source_xy; } } /* Store position of the station where the goods come from, so there * are no very high payments when stations get removed. However, if the * station where the goods came from is already removed, the source * information is lost. In that case we set it to the position of this * station */ Station *st; FOR_ALL_STATIONS(st) { for (CargoID c = 0; c < NUM_CARGO; c++) { GoodsEntry *ge = &st->goods[c]; const StationCargoList::List *packets = ge->cargo.Packets(); for (StationCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { CargoPacket *cp = *it; cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : st->xy; cp->loaded_at_xy = cp->source_xy; } } } } if (IsSavegameVersionBefore(120)) { /* CargoPacket's source should be either INVALID_STATION or a valid station */ CargoPacket *cp; FOR_ALL_CARGOPACKETS(cp) { if (!Station::IsValidID(cp->source)) cp->source = INVALID_STATION; } } if (!IsSavegameVersionBefore(68)) { /* Only since version 68 we have cargo packets. Savegames from before used * 'new CargoPacket' + cargolist.Append so their caches are already * correct and do not need rebuilding. */ Vehicle *v; FOR_ALL_VEHICLES(v) v->cargo.InvalidateCache(); Station *st; FOR_ALL_STATIONS(st) { for (CargoID c = 0; c < NUM_CARGO; c++) st->goods[c].cargo.InvalidateCache(); } } } /** * Wrapper function to get the CargoPacket's internal structure while * some of the variables itself are private. * @return the saveload description for CargoPackets. */ const SaveLoad *GetCargoPacketDesc() { static const SaveLoad _cargopacket_desc[] = { SLE_VAR(CargoPacket, source, SLE_UINT16), SLE_VAR(CargoPacket, source_xy, SLE_UINT32), SLE_VAR(CargoPacket, loaded_at_xy, SLE_UINT32), SLE_VAR(CargoPacket, count, SLE_UINT16), SLE_VAR(CargoPacket, days_in_transit, SLE_UINT8), SLE_VAR(CargoPacket, feeder_share, SLE_INT64), SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, 125, SL_MAX_VERSION), SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, 125, SL_MAX_VERSION), /* Used to be paid_for, but that got changed. */ SLE_CONDNULL(1, 0, 120), SLE_END() }; return _cargopacket_desc; } /** * Save the cargo packets. */ static void Save_CAPA() { CargoPacket *cp; FOR_ALL_CARGOPACKETS(cp) { SlSetArrayIndex(cp->index); SlObject(cp, GetCargoPacketDesc()); } } /** * Load the cargo packets. */ static void Load_CAPA() { int index; while ((index = SlIterateArray()) != -1) { CargoPacket *cp = new (index) CargoPacket(); SlObject(cp, GetCargoPacketDesc()); } } /** Chunk handlers related to cargo packets. */ extern const ChunkHandler _cargopacket_chunk_handlers[] = { { 'CAPA', Save_CAPA, Load_CAPA, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/town_sl.cpp0000644000000000000000000003055012246102606016451 0ustar rootroot/* $Id: town_sl.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file town_sl.cpp Code handling saving and loading of towns and houses */ #include "../stdafx.h" #include "../newgrf_house.h" #include "../town.h" #include "../landscape.h" #include "../subsidy_func.h" #include "saveload.h" #include "newgrf_sl.h" /** * Rebuild all the cached variables of towns. */ void RebuildTownCaches() { Town *town; InitializeBuildingCounts(); /* Reset town population and num_houses */ FOR_ALL_TOWNS(town) { town->cache.population = 0; town->cache.num_houses = 0; } for (TileIndex t = 0; t < MapSize(); t++) { if (!IsTileType(t, MP_HOUSE)) continue; HouseID house_id = GetHouseType(t); town = Town::GetByTile(t); IncreaseBuildingCount(town, house_id); if (IsHouseCompleted(t)) town->cache.population += HouseSpec::Get(house_id)->population; /* Increase the number of houses for every house, but only once. */ if (GetHouseNorthPart(house_id) == 0) town->cache.num_houses++; } /* Update the population and num_house dependent values */ FOR_ALL_TOWNS(town) { UpdateTownRadius(town); UpdateTownCargoes(town); } UpdateTownCargoBitmap(); } /** * Check and update town and house values. * * Checked are the HouseIDs. Updated are the * town population the number of houses per * town, the town radius and the max passengers * of the town. */ void UpdateHousesAndTowns() { for (TileIndex t = 0; t < MapSize(); t++) { if (!IsTileType(t, MP_HOUSE)) continue; HouseID house_id = GetCleanHouseType(t); if (!HouseSpec::Get(house_id)->enabled && house_id >= NEW_HOUSE_OFFSET) { /* The specs for this type of house are not available any more, so * replace it with the substitute original house type. */ house_id = _house_mngr.GetSubstituteID(house_id); SetHouseType(t, house_id); } } /* Check for cases when a NewGRF has set a wrong house substitute type. */ for (TileIndex t = 0; t < MapSize(); t++) { if (!IsTileType(t, MP_HOUSE)) continue; HouseID house_type = GetCleanHouseType(t); TileIndex north_tile = t + GetHouseNorthPart(house_type); // modifies 'house_type'! if (t == north_tile) { const HouseSpec *hs = HouseSpec::Get(house_type); bool valid_house = true; if (hs->building_flags & TILE_SIZE_2x1) { TileIndex tile = t + TileDiffXY(1, 0); if (!IsTileType(tile, MP_HOUSE) || GetCleanHouseType(tile) != house_type + 1) valid_house = false; } else if (hs->building_flags & TILE_SIZE_1x2) { TileIndex tile = t + TileDiffXY(0, 1); if (!IsTileType(tile, MP_HOUSE) || GetCleanHouseType(tile) != house_type + 1) valid_house = false; } else if (hs->building_flags & TILE_SIZE_2x2) { TileIndex tile = t + TileDiffXY(0, 1); if (!IsTileType(tile, MP_HOUSE) || GetCleanHouseType(tile) != house_type + 1) valid_house = false; tile = t + TileDiffXY(1, 0); if (!IsTileType(tile, MP_HOUSE) || GetCleanHouseType(tile) != house_type + 2) valid_house = false; tile = t + TileDiffXY(1, 1); if (!IsTileType(tile, MP_HOUSE) || GetCleanHouseType(tile) != house_type + 3) valid_house = false; } /* If not all tiles of this house are present remove the house. * The other tiles will get removed later in this loop because * their north tile is not the correct type anymore. */ if (!valid_house) DoClearSquare(t); } else if (!IsTileType(north_tile, MP_HOUSE) || GetCleanHouseType(north_tile) != house_type) { /* This tile should be part of a multi-tile building but the * north tile of this house isn't on the map. */ DoClearSquare(t); } } RebuildTownCaches(); } /** Save and load of towns. */ static const SaveLoad _town_desc[] = { SLE_CONDVAR(Town, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Town, xy, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDNULL(2, 0, 2), ///< population, no longer in use SLE_CONDNULL(4, 3, 84), ///< population, no longer in use SLE_CONDNULL(2, 0, 91), ///< num_houses, no longer in use SLE_CONDVAR(Town, townnamegrfid, SLE_UINT32, 66, SL_MAX_VERSION), SLE_VAR(Town, townnametype, SLE_UINT16), SLE_VAR(Town, townnameparts, SLE_UINT32), SLE_CONDSTR(Town, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_VAR(Town, flags, SLE_UINT8), SLE_CONDVAR(Town, statues, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), SLE_CONDVAR(Town, statues, SLE_UINT16, 104, SL_MAX_VERSION), SLE_CONDNULL(1, 0, 1), ///< sort_index, no longer in use SLE_CONDVAR(Town, have_ratings, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), SLE_CONDVAR(Town, have_ratings, SLE_UINT16, 104, SL_MAX_VERSION), SLE_CONDARR(Town, ratings, SLE_INT16, 8, 0, 103), SLE_CONDARR(Town, ratings, SLE_INT16, MAX_COMPANIES, 104, SL_MAX_VERSION), /* failed bribe attempts are stored since savegame format 4 */ SLE_CONDARR(Town, unwanted, SLE_INT8, 8, 4, 103), SLE_CONDARR(Town, unwanted, SLE_INT8, MAX_COMPANIES, 104, SL_MAX_VERSION), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_UINT32, 9, 164), SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_UINT32, 9, 164), SLE_CONDNULL(2, 0, 163), ///< pct_pass_transported / pct_mail_transported, now computed on the fly SLE_CONDVAR(Town, received[TE_FOOD].old_act, SLE_UINT16, 0, 164), SLE_CONDVAR(Town, received[TE_WATER].old_act, SLE_UINT16, 0, 164), SLE_CONDVAR(Town, received[TE_FOOD].new_act, SLE_UINT16, 0, 164), SLE_CONDVAR(Town, received[TE_WATER].new_act, SLE_UINT16, 0, 164), SLE_CONDARR(Town, goal, SLE_UINT32, NUM_TE, 165, SL_MAX_VERSION), SLE_CONDSTR(Town, text, SLE_STR | SLF_ALLOW_CONTROL, 0, 168, SL_MAX_VERSION), SLE_CONDVAR(Town, time_until_rebuild, SLE_FILE_U8 | SLE_VAR_U16, 0, 53), SLE_CONDVAR(Town, grow_counter, SLE_FILE_U8 | SLE_VAR_U16, 0, 53), SLE_CONDVAR(Town, growth_rate, SLE_FILE_U8 | SLE_VAR_I16, 0, 53), SLE_CONDVAR(Town, time_until_rebuild, SLE_UINT16, 54, SL_MAX_VERSION), SLE_CONDVAR(Town, grow_counter, SLE_UINT16, 54, SL_MAX_VERSION), SLE_CONDVAR(Town, growth_rate, SLE_FILE_I16 | SLE_VAR_U16, 54, 164), SLE_CONDVAR(Town, growth_rate, SLE_UINT16, 165, SL_MAX_VERSION), SLE_VAR(Town, fund_buildings_months, SLE_UINT8), SLE_VAR(Town, road_build_months, SLE_UINT8), SLE_CONDVAR(Town, exclusivity, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Town, exclusive_counter, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Town, larger_town, SLE_BOOL, 56, SL_MAX_VERSION), SLE_CONDVAR(Town, layout, SLE_UINT8, 113, SL_MAX_VERSION), SLE_CONDLST(Town, psa_list, REF_STORAGE, 161, SL_MAX_VERSION), SLE_CONDVAR(Town, cargo_produced, SLE_UINT32, 166, SL_MAX_VERSION), /* reserve extra space in savegame here. (currently 30 bytes) */ SLE_CONDNULL(30, 2, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _town_supplied_desc[] = { SLE_CONDVAR(TransportedCargoStat, old_max, SLE_UINT32, 165, SL_MAX_VERSION), SLE_CONDVAR(TransportedCargoStat, new_max, SLE_UINT32, 165, SL_MAX_VERSION), SLE_CONDVAR(TransportedCargoStat, old_act, SLE_UINT32, 165, SL_MAX_VERSION), SLE_CONDVAR(TransportedCargoStat, new_act, SLE_UINT32, 165, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _town_received_desc[] = { SLE_CONDVAR(TransportedCargoStat, old_max, SLE_UINT16, 165, SL_MAX_VERSION), SLE_CONDVAR(TransportedCargoStat, new_max, SLE_UINT16, 165, SL_MAX_VERSION), SLE_CONDVAR(TransportedCargoStat, old_act, SLE_UINT16, 165, SL_MAX_VERSION), SLE_CONDVAR(TransportedCargoStat, new_act, SLE_UINT16, 165, SL_MAX_VERSION), SLE_END() }; static void Save_HIDS() { Save_NewGRFMapping(_house_mngr); } static void Load_HIDS() { Load_NewGRFMapping(_house_mngr); } const SaveLoad *GetTileMatrixDesc() { /* Here due to private member vars. */ static const SaveLoad _tilematrix_desc[] = { SLE_VAR(AcceptanceMatrix, area.tile, SLE_UINT32), SLE_VAR(AcceptanceMatrix, area.w, SLE_UINT16), SLE_VAR(AcceptanceMatrix, area.h, SLE_UINT16), SLE_END() }; return _tilematrix_desc; } static void RealSave_Town(Town *t) { SlObject(t, _town_desc); for (CargoID i = 0; i < NUM_CARGO; i++) { SlObject(&t->supplied[i], _town_supplied_desc); } for (int i = TE_BEGIN; i < NUM_TE; i++) { SlObject(&t->received[i], _town_received_desc); } if (IsSavegameVersionBefore(166)) return; SlObject(&t->cargo_accepted, GetTileMatrixDesc()); if (t->cargo_accepted.area.w != 0) { uint arr_len = t->cargo_accepted.area.w / AcceptanceMatrix::GRID * t->cargo_accepted.area.h / AcceptanceMatrix::GRID; SlArray(t->cargo_accepted.data, arr_len, SLE_UINT32); } } static void Save_TOWN() { Town *t; FOR_ALL_TOWNS(t) { SlSetArrayIndex(t->index); SlAutolength((AutolengthProc*)RealSave_Town, t); } } static void Load_TOWN() { int index; while ((index = SlIterateArray()) != -1) { Town *t = new (index) Town(); SlObject(t, _town_desc); for (CargoID i = 0; i < NUM_CARGO; i++) { SlObject(&t->supplied[i], _town_supplied_desc); } for (int i = TE_BEGIN; i < TE_END; i++) { SlObject(&t->received[i], _town_received_desc); } if (t->townnamegrfid == 0 && !IsInsideMM(t->townnametype, SPECSTR_TOWNNAME_START, SPECSTR_TOWNNAME_LAST + 1) && GB(t->townnametype, 11, 5) != 15) { SlErrorCorrupt("Invalid town name generator"); } if (IsSavegameVersionBefore(166)) continue; SlObject(&t->cargo_accepted, GetTileMatrixDesc()); if (t->cargo_accepted.area.w != 0) { uint arr_len = t->cargo_accepted.area.w / AcceptanceMatrix::GRID * t->cargo_accepted.area.h / AcceptanceMatrix::GRID; t->cargo_accepted.data = MallocT(arr_len); SlArray(t->cargo_accepted.data, arr_len, SLE_UINT32); /* Rebuild total cargo acceptance. */ UpdateTownCargoTotal(t); } } } /** Fix pointers when loading town data. */ static void Ptrs_TOWN() { /* Don't run when savegame version lower than 161. */ if (IsSavegameVersionBefore(161)) return; Town *t; FOR_ALL_TOWNS(t) { SlObject(t, _town_desc); } } /** Chunk handler for towns. */ extern const ChunkHandler _town_chunk_handlers[] = { { 'HIDS', Save_HIDS, Load_HIDS, NULL, NULL, CH_ARRAY }, { 'CITY', Save_TOWN, Load_TOWN, Ptrs_TOWN, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/industry_sl.cpp0000644000000000000000000001472012246102605017343 0ustar rootroot/* $Id: industry_sl.cpp 23740 2012-01-03 21:32:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file industry_sl.cpp Code handling saving and loading of industries */ #include "../stdafx.h" #include "../industry.h" #include "saveload.h" #include "newgrf_sl.h" static OldPersistentStorage _old_ind_persistent_storage; static const SaveLoad _industry_desc[] = { SLE_CONDVAR(Industry, location.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Industry, location.tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_VAR(Industry, location.w, SLE_FILE_U8 | SLE_VAR_U16), SLE_VAR(Industry, location.h, SLE_FILE_U8 | SLE_VAR_U16), SLE_REF(Industry, town, REF_TOWN), SLE_CONDNULL( 2, 0, 60), ///< used to be industry's produced_cargo SLE_CONDARR(Industry, produced_cargo, SLE_UINT8, 2, 78, SL_MAX_VERSION), SLE_CONDARR(Industry, incoming_cargo_waiting, SLE_UINT16, 3, 70, SL_MAX_VERSION), SLE_ARR(Industry, produced_cargo_waiting, SLE_UINT16, 2), SLE_ARR(Industry, production_rate, SLE_UINT8, 2), SLE_CONDNULL( 3, 0, 60), ///< used to be industry's accepts_cargo SLE_CONDARR(Industry, accepts_cargo, SLE_UINT8, 3, 78, SL_MAX_VERSION), SLE_VAR(Industry, prod_level, SLE_UINT8), SLE_ARR(Industry, this_month_production, SLE_UINT16, 2), SLE_ARR(Industry, this_month_transported, SLE_UINT16, 2), SLE_ARR(Industry, last_month_pct_transported, SLE_UINT8, 2), SLE_ARR(Industry, last_month_production, SLE_UINT16, 2), SLE_ARR(Industry, last_month_transported, SLE_UINT16, 2), SLE_VAR(Industry, counter, SLE_UINT16), SLE_VAR(Industry, type, SLE_UINT8), SLE_VAR(Industry, owner, SLE_UINT8), SLE_VAR(Industry, random_colour, SLE_UINT8), SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, 31, SL_MAX_VERSION), SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8), SLE_CONDVAR(Industry, founder, SLE_UINT8, 70, SL_MAX_VERSION), SLE_CONDVAR(Industry, construction_date, SLE_INT32, 70, SL_MAX_VERSION), SLE_CONDVAR(Industry, construction_type, SLE_UINT8, 70, SL_MAX_VERSION), SLE_CONDVAR(Industry, last_cargo_accepted_at, SLE_INT32, 70, SL_MAX_VERSION), SLE_CONDVAR(Industry, selected_layout, SLE_UINT8, 73, SL_MAX_VERSION), SLEG_CONDARR(_old_ind_persistent_storage.storage, SLE_UINT32, 16, 76, 160), SLE_CONDREF(Industry, psa, REF_STORAGE, 161, SL_MAX_VERSION), SLE_CONDVAR(Industry, random_triggers, SLE_UINT8, 82, SL_MAX_VERSION), SLE_CONDVAR(Industry, random, SLE_UINT16, 82, SL_MAX_VERSION), SLE_CONDNULL(32, 2, 143), // old reserved space SLE_END() }; static void Save_INDY() { Industry *ind; /* Write the industries */ FOR_ALL_INDUSTRIES(ind) { SlSetArrayIndex(ind->index); SlObject(ind, _industry_desc); } } static void Save_IIDS() { Save_NewGRFMapping(_industry_mngr); } static void Save_TIDS() { Save_NewGRFMapping(_industile_mngr); } static void Load_INDY() { int index; Industry::ResetIndustryCounts(); while ((index = SlIterateArray()) != -1) { Industry *i = new (index) Industry(); SlObject(i, _industry_desc); /* Before savegame version 161, persistent storages were not stored in a pool. */ if (IsSavegameVersionBefore(161) && !IsSavegameVersionBefore(76)) { /* Store the old persistent storage. The GRFID will be added later. */ assert(PersistentStorage::CanAllocateItem()); i->psa = new PersistentStorage(0); memcpy(i->psa->storage, _old_ind_persistent_storage.storage, sizeof(i->psa->storage)); } Industry::IncIndustryTypeCount(i->type); } } static void Load_IIDS() { Load_NewGRFMapping(_industry_mngr); } static void Load_TIDS() { Load_NewGRFMapping(_industile_mngr); } static void Ptrs_INDY() { Industry *i; FOR_ALL_INDUSTRIES(i) { SlObject(i, _industry_desc); } } /** Description of the data to save and load in #IndustryBuildData. */ static const SaveLoad _industry_builder_desc[] = { SLEG_VAR(_industry_builder.wanted_inds, SLE_UINT32), SLEG_END() }; /** Load/save industry builder. */ static void LoadSave_IBLD() { SlGlobList(_industry_builder_desc); } /** Description of the data to save and load in #IndustryTypeBuildData. */ static const SaveLoad _industrytype_builder_desc[] = { SLE_VAR(IndustryTypeBuildData, probability, SLE_UINT32), SLE_VAR(IndustryTypeBuildData, min_number, SLE_UINT8), SLE_VAR(IndustryTypeBuildData, target_count, SLE_UINT16), SLE_VAR(IndustryTypeBuildData, max_wait, SLE_UINT16), SLE_VAR(IndustryTypeBuildData, wait_count, SLE_UINT16), SLE_END() }; /** Save industry-type build data. */ static void Save_ITBL() { for (int i = 0; i < NUM_INDUSTRYTYPES; i++) { SlSetArrayIndex(i); SlObject(_industry_builder.builddata + i, _industrytype_builder_desc); } } /** Load industry-type build data. */ static void Load_ITBL() { int index; for (int i = 0; i < NUM_INDUSTRYTYPES; i++) { index = SlIterateArray(); assert(index == i); SlObject(_industry_builder.builddata + i, _industrytype_builder_desc); } index = SlIterateArray(); assert(index == -1); } extern const ChunkHandler _industry_chunk_handlers[] = { { 'INDY', Save_INDY, Load_INDY, Ptrs_INDY, NULL, CH_ARRAY}, { 'IIDS', Save_IIDS, Load_IIDS, NULL, NULL, CH_ARRAY}, { 'TIDS', Save_TIDS, Load_TIDS, NULL, NULL, CH_ARRAY}, { 'IBLD', LoadSave_IBLD, LoadSave_IBLD, NULL, NULL, CH_RIFF}, { 'ITBL', Save_ITBL, Load_ITBL, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/signs_sl.cpp0000644000000000000000000000536112246102605016606 0ustar rootroot/* $Id: signs_sl.cpp 23835 2012-01-22 13:54:02Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file signs_sl.cpp Code handling saving and loading of economy data */ #include "../stdafx.h" #include "../signs_base.h" #include "../fios.h" #include "saveload.h" /** Description of a sign within the savegame. */ static const SaveLoad _sign_desc[] = { SLE_CONDVAR(Sign, name, SLE_NAME, 0, 83), SLE_CONDSTR(Sign, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_CONDVAR(Sign, x, SLE_FILE_I16 | SLE_VAR_I32, 0, 4), SLE_CONDVAR(Sign, y, SLE_FILE_I16 | SLE_VAR_I32, 0, 4), SLE_CONDVAR(Sign, x, SLE_INT32, 5, SL_MAX_VERSION), SLE_CONDVAR(Sign, y, SLE_INT32, 5, SL_MAX_VERSION), SLE_CONDVAR(Sign, owner, SLE_UINT8, 6, SL_MAX_VERSION), SLE_CONDVAR(Sign, z, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), SLE_CONDVAR(Sign, z, SLE_INT32, 164, SL_MAX_VERSION), SLE_END() }; /** Save all signs */ static void Save_SIGN() { Sign *si; FOR_ALL_SIGNS(si) { SlSetArrayIndex(si->index); SlObject(si, _sign_desc); } } /** Load all signs */ static void Load_SIGN() { int index; while ((index = SlIterateArray()) != -1) { Sign *si = new (index) Sign(); SlObject(si, _sign_desc); /* Before version 6.1, signs didn't have owner. * Before version 83, invalid signs were determined by si->str == 0. * Before version 103, owner could be a bankrupted company. * - we can't use IsValidCompany() now, so this is fixed in AfterLoadGame() * All signs that were saved are valid (including those with just 'Sign' and INVALID_OWNER). * - so set owner to OWNER_NONE if needed (signs from pre-version 6.1 would be lost) */ if (IsSavegameVersionBefore(6, 1) || (IsSavegameVersionBefore(83) && si->owner == INVALID_OWNER)) { si->owner = OWNER_NONE; } /* Signs placed in scenario editor shall now be OWNER_DEITY */ if (IsSavegameVersionBefore(171) && si->owner == OWNER_NONE && _saveload_mode == SLD_LOAD_SCENARIO) { si->owner = OWNER_DEITY; } } } /** Chunk handlers related to signs. */ extern const ChunkHandler _sign_chunk_handlers[] = { { 'SIGN', Save_SIGN, Load_SIGN, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/labelmaps_sl.cpp0000644000000000000000000000624212246102605017422 0ustar rootroot/* $Id: labelmaps_sl.cpp 20860 2010-10-01 16:42:28Z smatz $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file labelmaps_sl.cpp Code handling saving and loading of rail type label mappings */ #include "../stdafx.h" #include "../station_map.h" #include "../tunnelbridge_map.h" #include "saveload.h" static SmallVector _railtype_list; /** * Test if any saved rail type labels are different to the currently loaded * rail types, which therefore requires conversion. * @return true if (and only if) conversion due to rail type changes is needed. */ static bool NeedRailTypeConversion() { for (uint i = 0; i < _railtype_list.Length(); i++) { if ((RailType)i < RAILTYPE_END) { const RailtypeInfo *rti = GetRailTypeInfo((RailType)i); if (rti->label != _railtype_list[i]) return true; } else { if (_railtype_list[i] != 0) return true; } } /* No rail type conversion is necessary */ return false; } void AfterLoadLabelMaps() { if (NeedRailTypeConversion()) { SmallVector railtype_conversion_map; for (uint i = 0; i < _railtype_list.Length(); i++) { RailType r = GetRailTypeByLabel(_railtype_list[i]); if (r == INVALID_RAILTYPE) r = RAILTYPE_BEGIN; *railtype_conversion_map.Append() = r; } for (TileIndex t = 0; t < MapSize(); t++) { switch (GetTileType(t)) { case MP_RAILWAY: SetRailType(t, railtype_conversion_map[GetRailType(t)]); break; case MP_ROAD: if (IsLevelCrossing(t)) { SetRailType(t, railtype_conversion_map[GetRailType(t)]); } break; case MP_STATION: if (HasStationRail(t)) { SetRailType(t, railtype_conversion_map[GetRailType(t)]); } break; case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) { SetRailType(t, railtype_conversion_map[GetRailType(t)]); } break; default: break; } } } _railtype_list.Clear(); } /** Container for a label for SaveLoad system */ struct LabelObject { uint32 label; }; static const SaveLoad _label_object_desc[] = { SLE_VAR(LabelObject, label, SLE_UINT32), SLE_END(), }; static void Save_RAIL() { LabelObject lo; for (RailType r = RAILTYPE_BEGIN; r != RAILTYPE_END; r++) { lo.label = GetRailTypeInfo(r)->label; SlSetArrayIndex(r); SlObject(&lo, _label_object_desc); } } static void Load_RAIL() { _railtype_list.Clear(); LabelObject lo; while (SlIterateArray() != -1) { SlObject(&lo, _label_object_desc); *_railtype_list.Append() = (RailTypeLabel)lo.label; } } extern const ChunkHandler _labelmaps_chunk_handlers[] = { { 'RAIL', Save_RAIL, Load_RAIL, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/object_sl.cpp0000644000000000000000000000451112246102605016725 0ustar rootroot/* $Id: object_sl.cpp 21453 2010-12-10 21:32:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_sl.cpp Code handling saving and loading of objects */ #include "../stdafx.h" #include "../object_base.h" #include "../object_map.h" #include "saveload.h" #include "newgrf_sl.h" static const SaveLoad _object_desc[] = { SLE_VAR(Object, location.tile, SLE_UINT32), SLE_VAR(Object, location.w, SLE_FILE_U8 | SLE_VAR_U16), SLE_VAR(Object, location.h, SLE_FILE_U8 | SLE_VAR_U16), SLE_REF(Object, town, REF_TOWN), SLE_VAR(Object, build_date, SLE_UINT32), SLE_CONDVAR(Object, colour, SLE_UINT8, 148, SL_MAX_VERSION), SLE_CONDVAR(Object, view, SLE_UINT8, 155, SL_MAX_VERSION), SLE_END() }; static void Save_OBJS() { Object *o; /* Write the objects */ FOR_ALL_OBJECTS(o) { SlSetArrayIndex(o->index); SlObject(o, _object_desc); } } static void Load_OBJS() { int index; while ((index = SlIterateArray()) != -1) { Object *o = new (index) Object(); SlObject(o, _object_desc); } } static void Ptrs_OBJS() { Object *o; FOR_ALL_OBJECTS(o) { SlObject(o, _object_desc); if (IsSavegameVersionBefore(148) && !IsTileType(o->location.tile, MP_OBJECT)) { /* Due to a small bug stale objects could remain. */ delete o; } else { Object::IncTypeCount(GetObjectType(o->location.tile)); } } } static void Save_OBID() { Save_NewGRFMapping(_object_mngr); } static void Load_OBID() { Load_NewGRFMapping(_object_mngr); } extern const ChunkHandler _object_chunk_handlers[] = { { 'OBID', Save_OBID, Load_OBID, NULL, NULL, CH_ARRAY }, { 'OBJS', Save_OBJS, Load_OBJS, Ptrs_OBJS, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/company_sl.cpp0000644000000000000000000004704512246102605017136 0ustar rootroot/* $Id: company_sl.cpp 24619 2012-10-20 22:05:26Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file company_sl.cpp Code handling saving and loading of company data */ #include "../stdafx.h" #include "../company_func.h" #include "../company_manager_face.h" #include "../fios.h" #include "../tunnelbridge_map.h" #include "../tunnelbridge.h" #include "../station_base.h" #include "saveload.h" #include "table/strings.h" /** * Converts an old company manager's face format to the new company manager's face format * * Meaning of the bits in the old face (some bits are used in several times): * - 4 and 5: chin * - 6 to 9: eyebrows * - 10 to 13: nose * - 13 to 15: lips (also moustache for males) * - 16 to 19: hair * - 20 to 22: eye colour * - 20 to 27: tie, ear rings etc. * - 28 to 30: glasses * - 19, 26 and 27: race (bit 27 set and bit 19 equal to bit 26 = black, otherwise white) * - 31: gender (0 = male, 1 = female) * * @param face the face in the old format * @return the face in the new format */ CompanyManagerFace ConvertFromOldCompanyManagerFace(uint32 face) { CompanyManagerFace cmf = 0; GenderEthnicity ge = GE_WM; if (HasBit(face, 31)) SetBit(ge, GENDER_FEMALE); if (HasBit(face, 27) && (HasBit(face, 26) == HasBit(face, 19))) SetBit(ge, ETHNICITY_BLACK); SetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN, ge, ge); SetCompanyManagerFaceBits(cmf, CMFV_HAS_GLASSES, ge, GB(face, 28, 3) <= 1); SetCompanyManagerFaceBits(cmf, CMFV_EYE_COLOUR, ge, HasBit(ge, ETHNICITY_BLACK) ? 0 : ClampU(GB(face, 20, 3), 5, 7) - 5); SetCompanyManagerFaceBits(cmf, CMFV_CHIN, ge, ScaleCompanyManagerFaceValue(CMFV_CHIN, ge, GB(face, 4, 2))); SetCompanyManagerFaceBits(cmf, CMFV_EYEBROWS, ge, ScaleCompanyManagerFaceValue(CMFV_EYEBROWS, ge, GB(face, 6, 4))); SetCompanyManagerFaceBits(cmf, CMFV_HAIR, ge, ScaleCompanyManagerFaceValue(CMFV_HAIR, ge, GB(face, 16, 4))); SetCompanyManagerFaceBits(cmf, CMFV_JACKET, ge, ScaleCompanyManagerFaceValue(CMFV_JACKET, ge, GB(face, 20, 2))); SetCompanyManagerFaceBits(cmf, CMFV_COLLAR, ge, ScaleCompanyManagerFaceValue(CMFV_COLLAR, ge, GB(face, 22, 2))); SetCompanyManagerFaceBits(cmf, CMFV_GLASSES, ge, GB(face, 28, 1)); uint lips = GB(face, 10, 4); if (!HasBit(ge, GENDER_FEMALE) && lips < 4) { SetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE, ge, true); SetCompanyManagerFaceBits(cmf, CMFV_MOUSTACHE, ge, max(lips, 1U) - 1); } else { if (!HasBit(ge, GENDER_FEMALE)) { lips = lips * 15 / 16; lips -= 3; if (HasBit(ge, ETHNICITY_BLACK) && lips > 8) lips = 0; } else { lips = ScaleCompanyManagerFaceValue(CMFV_LIPS, ge, lips); } SetCompanyManagerFaceBits(cmf, CMFV_LIPS, ge, lips); uint nose = GB(face, 13, 3); if (ge == GE_WF) { nose = (nose * 3 >> 3) * 3 >> 2; // There is 'hole' in the nose sprites for females } else { nose = ScaleCompanyManagerFaceValue(CMFV_NOSE, ge, nose); } SetCompanyManagerFaceBits(cmf, CMFV_NOSE, ge, nose); } uint tie_earring = GB(face, 24, 4); if (!HasBit(ge, GENDER_FEMALE) || tie_earring < 3) { // Not all females have an earring if (HasBit(ge, GENDER_FEMALE)) SetCompanyManagerFaceBits(cmf, CMFV_HAS_TIE_EARRING, ge, true); SetCompanyManagerFaceBits(cmf, CMFV_TIE_EARRING, ge, HasBit(ge, GENDER_FEMALE) ? tie_earring : ScaleCompanyManagerFaceValue(CMFV_TIE_EARRING, ge, tie_earring / 2)); } return cmf; } /** Rebuilding of company statistics after loading a savegame. */ void AfterLoadCompanyStats() { /* Reset infrastructure statistics to zero. */ Company *c; FOR_ALL_COMPANIES(c) MemSetT(&c->infrastructure, 0); /* Collect airport count. */ Station *st; FOR_ALL_STATIONS(st) { if ((st->facilities & FACIL_AIRPORT) && Company::IsValidID(st->owner)) { Company::Get(st->owner)->infrastructure.airport++; } } for (TileIndex tile = 0; tile < MapSize(); tile++) { switch (GetTileType(tile)) { case MP_RAILWAY: c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) { uint pieces = 1; if (IsPlainRail(tile)) { TrackBits bits = GetTrackBits(tile); pieces = CountBits(bits); if (TracksOverlap(bits)) pieces *= pieces; } c->infrastructure.rail[GetRailType(tile)] += pieces; if (HasSignals(tile)) c->infrastructure.signal += CountBits(GetPresentSignals(tile)); } break; case MP_ROAD: { if (IsLevelCrossing(tile)) { c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) c->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR; } /* Iterate all present road types as each can have a different owner. */ RoadType rt; FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) { c = Company::GetIfValid(IsRoadDepot(tile) ? GetTileOwner(tile) : GetRoadOwner(tile, rt)); /* A level crossings and depots have two road bits. */ if (c != NULL) c->infrastructure.road[rt] += IsNormalRoad(tile) ? CountBits(GetRoadBits(tile, rt)) : 2; } break; } case MP_STATION: c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL && GetStationType(tile) != STATION_AIRPORT && !IsBuoy(tile)) c->infrastructure.station++; switch (GetStationType(tile)) { case STATION_RAIL: case STATION_WAYPOINT: if (c != NULL && !IsStationTileBlocked(tile)) c->infrastructure.rail[GetRailType(tile)]++; break; case STATION_BUS: case STATION_TRUCK: { /* Iterate all present road types as each can have a different owner. */ RoadType rt; FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) { c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) c->infrastructure.road[rt] += 2; // A road stop has two road bits. } break; } case STATION_DOCK: case STATION_BUOY: if (GetWaterClass(tile) == WATER_CLASS_CANAL) { if (c != NULL) c->infrastructure.water++; } break; default: break; } break; case MP_WATER: if (IsShipDepot(tile) || IsLock(tile)) { c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) { if (IsShipDepot(tile)) c->infrastructure.water += LOCK_DEPOT_TILE_FACTOR; if (IsLock(tile) && GetLockPart(tile) == LOCK_PART_MIDDLE) { /* The middle tile specifies the owner of the lock. */ c->infrastructure.water += 3 * LOCK_DEPOT_TILE_FACTOR; // the middle tile specifies the owner of the break; // do not count the middle tile as canal } } } /* FALL THROUGH */ case MP_OBJECT: if (GetWaterClass(tile) == WATER_CLASS_CANAL) { c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) c->infrastructure.water++; } break; case MP_TUNNELBRIDGE: { /* Only count the tunnel/bridge if we're on the northern end tile. */ TileIndex other_end = GetOtherTunnelBridgeEnd(tile); if (tile < other_end) { /* Count each tunnel/bridge TUNNELBRIDGE_TRACKBIT_FACTOR times to simulate * the higher structural maintenance needs, and don't forget the end tiles. */ uint len = (GetTunnelBridgeLength(tile, other_end) + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR; switch (GetTunnelBridgeTransportType(tile)) { case TRANSPORT_RAIL: c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) c->infrastructure.rail[GetRailType(tile)] += len; break; case TRANSPORT_ROAD: { /* Iterate all present road types as each can have a different owner. */ RoadType rt; FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) { c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) c->infrastructure.road[rt] += len * 2; // A full diagonal road has two road bits. } break; } case TRANSPORT_WATER: c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) c->infrastructure.water += len; break; default: break; } } break; } default: break; } } } /* Save/load of companies */ static const SaveLoad _company_desc[] = { SLE_VAR(CompanyProperties, name_2, SLE_UINT32), SLE_VAR(CompanyProperties, name_1, SLE_STRINGID), SLE_CONDSTR(CompanyProperties, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_VAR(CompanyProperties, president_name_1, SLE_UINT16), SLE_VAR(CompanyProperties, president_name_2, SLE_UINT32), SLE_CONDSTR(CompanyProperties, president_name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_VAR(CompanyProperties, face, SLE_UINT32), /* money was changed to a 64 bit field in savegame version 1. */ SLE_CONDVAR(CompanyProperties, money, SLE_VAR_I64 | SLE_FILE_I32, 0, 0), SLE_CONDVAR(CompanyProperties, money, SLE_INT64, 1, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, current_loan, SLE_VAR_I64 | SLE_FILE_I32, 0, 64), SLE_CONDVAR(CompanyProperties, current_loan, SLE_INT64, 65, SL_MAX_VERSION), SLE_VAR(CompanyProperties, colour, SLE_UINT8), SLE_VAR(CompanyProperties, money_fraction, SLE_UINT8), SLE_CONDVAR(CompanyProperties, avail_railtypes, SLE_UINT8, 0, 57), SLE_VAR(CompanyProperties, block_preview, SLE_UINT8), SLE_CONDNULL(2, 0, 93), ///< cargo_types SLE_CONDNULL(4, 94, 169), ///< cargo_types SLE_CONDVAR(CompanyProperties, location_of_HQ, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(CompanyProperties, location_of_HQ, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, inaugurated_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(CompanyProperties, inaugurated_year, SLE_INT32, 31, SL_MAX_VERSION), SLE_ARR(CompanyProperties, share_owners, SLE_UINT8, 4), SLE_VAR(CompanyProperties, num_valid_stat_ent, SLE_UINT8), SLE_VAR(CompanyProperties, months_of_bankruptcy, SLE_UINT8), SLE_CONDVAR(CompanyProperties, bankrupt_asked, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), SLE_CONDVAR(CompanyProperties, bankrupt_asked, SLE_UINT16, 104, SL_MAX_VERSION), SLE_VAR(CompanyProperties, bankrupt_timeout, SLE_INT16), SLE_CONDVAR(CompanyProperties, bankrupt_value, SLE_VAR_I64 | SLE_FILE_I32, 0, 64), SLE_CONDVAR(CompanyProperties, bankrupt_value, SLE_INT64, 65, SL_MAX_VERSION), /* yearly expenses was changed to 64-bit in savegame version 2. */ SLE_CONDARR(CompanyProperties, yearly_expenses, SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, 0, 1), SLE_CONDARR(CompanyProperties, yearly_expenses, SLE_INT64, 3 * 13, 2, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, is_ai, SLE_BOOL, 2, SL_MAX_VERSION), SLE_CONDNULL(1, 107, 111), ///< is_noai SLE_CONDNULL(1, 4, 99), SLE_CONDVAR(CompanyProperties, terraform_limit, SLE_UINT32, 156, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, clear_limit, SLE_UINT32, 156, SL_MAX_VERSION), SLE_CONDVAR(CompanyProperties, tree_limit, SLE_UINT32, 175, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _company_settings_desc[] = { /* Engine renewal settings */ SLE_CONDNULL(512, 16, 18), SLE_CONDREF(Company, engine_renew_list, REF_ENGINE_RENEWS, 19, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.engine_renew, SLE_BOOL, 16, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.engine_renew_months, SLE_INT16, 16, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.engine_renew_money, SLE_UINT32, 16, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.renew_keep_length, SLE_BOOL, 2, SL_MAX_VERSION), /* Default vehicle settings */ SLE_CONDVAR(Company, settings.vehicle.servint_ispercent, SLE_BOOL, 120, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.vehicle.servint_trains, SLE_UINT16, 120, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.vehicle.servint_roadveh, SLE_UINT16, 120, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.vehicle.servint_aircraft, SLE_UINT16, 120, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.vehicle.servint_ships, SLE_UINT16, 120, SL_MAX_VERSION), SLE_CONDNULL(63, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _company_settings_skip_desc[] = { /* Engine renewal settings */ SLE_CONDNULL(512, 16, 18), SLE_CONDNULL(2, 19, 68), // engine_renew_list SLE_CONDNULL(4, 69, SL_MAX_VERSION), // engine_renew_list SLE_CONDNULL(1, 16, SL_MAX_VERSION), // settings.engine_renew SLE_CONDNULL(2, 16, SL_MAX_VERSION), // settings.engine_renew_months SLE_CONDNULL(4, 16, SL_MAX_VERSION), // settings.engine_renew_money SLE_CONDNULL(1, 2, SL_MAX_VERSION), // settings.renew_keep_length /* Default vehicle settings */ SLE_CONDNULL(1, 120, SL_MAX_VERSION), // settings.vehicle.servint_ispercent SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_trains SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_roadveh SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_aircraft SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_ships SLE_CONDNULL(63, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _company_economy_desc[] = { /* these were changed to 64-bit in savegame format 2 */ SLE_CONDVAR(CompanyEconomyEntry, income, SLE_FILE_I32 | SLE_VAR_I64, 0, 1), SLE_CONDVAR(CompanyEconomyEntry, income, SLE_INT64, 2, SL_MAX_VERSION), SLE_CONDVAR(CompanyEconomyEntry, expenses, SLE_FILE_I32 | SLE_VAR_I64, 0, 1), SLE_CONDVAR(CompanyEconomyEntry, expenses, SLE_INT64, 2, SL_MAX_VERSION), SLE_CONDVAR(CompanyEconomyEntry, company_value, SLE_FILE_I32 | SLE_VAR_I64, 0, 1), SLE_CONDVAR(CompanyEconomyEntry, company_value, SLE_INT64, 2, SL_MAX_VERSION), SLE_CONDVAR(CompanyEconomyEntry, delivered_cargo[NUM_CARGO - 1], SLE_INT32, 0, 169), SLE_CONDARR(CompanyEconomyEntry, delivered_cargo, SLE_UINT32, NUM_CARGO, 170, SL_MAX_VERSION), SLE_VAR(CompanyEconomyEntry, performance_history, SLE_INT32), SLE_END() }; /* We do need to read this single value, as the bigger it gets, the more data is stored */ struct CompanyOldAI { uint8 num_build_rec; }; static const SaveLoad _company_ai_desc[] = { SLE_CONDNULL(2, 0, 106), SLE_CONDNULL(2, 0, 12), SLE_CONDNULL(4, 13, 106), SLE_CONDNULL(8, 0, 106), SLE_CONDVAR(CompanyOldAI, num_build_rec, SLE_UINT8, 0, 106), SLE_CONDNULL(3, 0, 106), SLE_CONDNULL(2, 0, 5), SLE_CONDNULL(4, 6, 106), SLE_CONDNULL(2, 0, 5), SLE_CONDNULL(4, 6, 106), SLE_CONDNULL(2, 0, 106), SLE_CONDNULL(2, 0, 5), SLE_CONDNULL(4, 6, 106), SLE_CONDNULL(2, 0, 5), SLE_CONDNULL(4, 6, 106), SLE_CONDNULL(2, 0, 106), SLE_CONDNULL(2, 0, 68), SLE_CONDNULL(4, 69, 106), SLE_CONDNULL(18, 0, 106), SLE_CONDNULL(20, 0, 106), SLE_CONDNULL(32, 0, 106), SLE_CONDNULL(64, 2, 106), SLE_END() }; static const SaveLoad _company_ai_build_rec_desc[] = { SLE_CONDNULL(2, 0, 5), SLE_CONDNULL(4, 6, 106), SLE_CONDNULL(2, 0, 5), SLE_CONDNULL(4, 6, 106), SLE_CONDNULL(8, 0, 106), SLE_END() }; static const SaveLoad _company_livery_desc[] = { SLE_CONDVAR(Livery, in_use, SLE_BOOL, 34, SL_MAX_VERSION), SLE_CONDVAR(Livery, colour1, SLE_UINT8, 34, SL_MAX_VERSION), SLE_CONDVAR(Livery, colour2, SLE_UINT8, 34, SL_MAX_VERSION), SLE_END() }; static void SaveLoad_PLYR_common(Company *c, CompanyProperties *cprops) { int i; SlObject(cprops, _company_desc); if (c != NULL) { SlObject(c, _company_settings_desc); } else { char nothing; SlObject(¬hing, _company_settings_skip_desc); } /* Keep backwards compatible for savegames, so load the old AI block */ if (IsSavegameVersionBefore(107) && cprops->is_ai) { CompanyOldAI old_ai; char nothing; SlObject(&old_ai, _company_ai_desc); for (i = 0; i != old_ai.num_build_rec; i++) { SlObject(¬hing, _company_ai_build_rec_desc); } } /* Write economy */ SlObject(&cprops->cur_economy, _company_economy_desc); /* Write old economy entries. */ if (cprops->num_valid_stat_ent > lengthof(cprops->old_economy)) SlErrorCorrupt("Too many old economy entries"); for (i = 0; i < cprops->num_valid_stat_ent; i++) { SlObject(&cprops->old_economy[i], _company_economy_desc); } /* Write each livery entry. */ int num_liveries = IsSavegameVersionBefore(63) ? LS_END - 4 : (IsSavegameVersionBefore(85) ? LS_END - 2: LS_END); if (c != NULL) { for (i = 0; i < num_liveries; i++) { SlObject(&c->livery[i], _company_livery_desc); } if (num_liveries < LS_END) { /* We want to insert some liveries somewhere in between. This means some have to be moved. */ memmove(&c->livery[LS_FREIGHT_WAGON], &c->livery[LS_PASSENGER_WAGON_MONORAIL], (LS_END - LS_FREIGHT_WAGON) * sizeof(c->livery[0])); c->livery[LS_PASSENGER_WAGON_MONORAIL] = c->livery[LS_MONORAIL]; c->livery[LS_PASSENGER_WAGON_MAGLEV] = c->livery[LS_MAGLEV]; } if (num_liveries == LS_END - 4) { /* Copy bus/truck liveries over to trams */ c->livery[LS_PASSENGER_TRAM] = c->livery[LS_BUS]; c->livery[LS_FREIGHT_TRAM] = c->livery[LS_TRUCK]; } } else { /* Skip liveries */ Livery dummy_livery; for (i = 0; i < num_liveries; i++) { SlObject(&dummy_livery, _company_livery_desc); } } } static void SaveLoad_PLYR(Company *c) { SaveLoad_PLYR_common(c, c); } static void Save_PLYR() { Company *c; FOR_ALL_COMPANIES(c) { SlSetArrayIndex(c->index); SlAutolength((AutolengthProc*)SaveLoad_PLYR, c); } } static void Load_PLYR() { int index; while ((index = SlIterateArray()) != -1) { Company *c = new (index) Company(); SaveLoad_PLYR(c); _company_colours[index] = (Colours)c->colour; } } static void Check_PLYR() { int index; while ((index = SlIterateArray()) != -1) { CompanyProperties *cprops = new CompanyProperties(); memset(cprops, 0, sizeof(*cprops)); SaveLoad_PLYR_common(NULL, cprops); /* We do not load old custom names */ if (IsSavegameVersionBefore(84)) { if (GB(cprops->name_1, 11, 5) == 15) { cprops->name_1 = STR_GAME_SAVELOAD_NOT_AVAILABLE; } if (GB(cprops->president_name_1, 11, 5) == 15) { cprops->president_name_1 = STR_GAME_SAVELOAD_NOT_AVAILABLE; } } if (cprops->name == NULL && !IsInsideMM(cprops->name_1, SPECSTR_COMPANY_NAME_START, SPECSTR_COMPANY_NAME_LAST + 1) && cprops->name_1 != STR_GAME_SAVELOAD_NOT_AVAILABLE && cprops->name_1 != STR_SV_UNNAMED && cprops->name_1 != SPECSTR_ANDCO_NAME && cprops->name_1 != SPECSTR_PRESIDENT_NAME && cprops->name_1 != SPECSTR_SILLY_NAME) { cprops->name_1 = STR_GAME_SAVELOAD_NOT_AVAILABLE; } if (!_load_check_data.companies.Insert(index, cprops)) delete cprops; } } static void Ptrs_PLYR() { Company *c; FOR_ALL_COMPANIES(c) { SlObject(c, _company_settings_desc); } } extern const ChunkHandler _company_chunk_handlers[] = { { 'PLYR', Save_PLYR, Load_PLYR, Ptrs_PLYR, Check_PLYR, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/group_sl.cpp0000644000000000000000000000321712246102606016616 0ustar rootroot/* $Id: group_sl.cpp 24878 2013-01-01 11:08:22Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file group_sl.cpp Code handling saving and loading of economy data */ #include "../stdafx.h" #include "../group.h" #include "saveload.h" static const SaveLoad _group_desc[] = { SLE_CONDVAR(Group, name, SLE_NAME, 0, 83), SLE_CONDSTR(Group, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_CONDNULL(2, 0, 163), // num_vehicle SLE_VAR(Group, owner, SLE_UINT8), SLE_VAR(Group, vehicle_type, SLE_UINT8), SLE_VAR(Group, replace_protection, SLE_BOOL), SLE_END() }; static void Save_GRPS() { Group *g; FOR_ALL_GROUPS(g) { SlSetArrayIndex(g->index); SlObject(g, _group_desc); } } static void Load_GRPS() { int index; while ((index = SlIterateArray()) != -1) { Group *g = new (index) Group(); SlObject(g, _group_desc); } } extern const ChunkHandler _group_chunk_handlers[] = { { 'GRPS', Save_GRPS, Load_GRPS, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/strings_sl.cpp0000644000000000000000000001076312246102605017156 0ustar rootroot/* $Id: strings_sl.cpp 22957 2011-09-23 19:27:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file strings_sl.cpp Code handling saving and loading of strings */ #include "../stdafx.h" #include "../string_func.h" #include "saveload_internal.h" #include "table/strings.h" static const int NUM_OLD_STRINGS = 512; ///< The number of custom strings stored in old savegames. static const int LEN_OLD_STRINGS = 32; ///< The number of characters per string. static const int LEN_OLD_STRINGS_TTO = 24; ///< The number of characters per string in TTO savegames. /** * Remap a string ID from the old format to the new format * @param s StringID that requires remapping * @return translated ID */ StringID RemapOldStringID(StringID s) { switch (s) { case 0x0006: return STR_SV_EMPTY; case 0x7000: return STR_SV_UNNAMED; case 0x70E4: return SPECSTR_COMPANY_NAME_START; case 0x70E9: return SPECSTR_COMPANY_NAME_START; case 0x8864: return STR_SV_TRAIN_NAME; case 0x902B: return STR_SV_ROAD_VEHICLE_NAME; case 0x9830: return STR_SV_SHIP_NAME; case 0xA02F: return STR_SV_AIRCRAFT_NAME; default: if (IsInsideMM(s, 0x300F, 0x3030)) { return s - 0x300F + STR_SV_STNAME; } else { return s; } } } /** Location to load the old names to. */ char *_old_name_array = NULL; /** * Copy and convert old custom names to UTF-8. * They were all stored in a 512 by 32 (200 by 24 for TTO) long string array * and are now stored with stations, waypoints and other places with names. * @param id the StringID of the custom name to clone. * @return the clones custom name. */ char *CopyFromOldName(StringID id) { /* Is this name an (old) custom name? */ if (GB(id, 11, 5) != 15) return NULL; if (IsSavegameVersionBefore(37)) { /* Allow for expansion when converted to UTF-8. */ char tmp[LEN_OLD_STRINGS * MAX_CHAR_LENGTH]; uint offs = _savegame_type == SGT_TTO ? LEN_OLD_STRINGS_TTO * GB(id, 0, 8) : LEN_OLD_STRINGS * GB(id, 0, 9); const char *strfrom = &_old_name_array[offs]; char *strto = tmp; for (; *strfrom != '\0'; strfrom++) { WChar c = (byte)*strfrom; /* Map from non-ISO8859-15 characters to UTF-8. */ switch (c) { case 0xA4: c = 0x20AC; break; // Euro case 0xA6: c = 0x0160; break; // S with caron case 0xA8: c = 0x0161; break; // s with caron case 0xB4: c = 0x017D; break; // Z with caron case 0xB8: c = 0x017E; break; // z with caron case 0xBC: c = 0x0152; break; // OE ligature case 0xBD: c = 0x0153; break; // oe ligature case 0xBE: c = 0x0178; break; // Y with diaresis default: break; } /* Check character will fit into our buffer. */ if (strto + Utf8CharLen(c) > lastof(tmp)) break; strto += Utf8Encode(strto, c); } /* Terminate the new string and copy it back to the name array */ *strto = '\0'; return strdup(tmp); } else { /* Name will already be in UTF-8. */ return strdup(&_old_name_array[LEN_OLD_STRINGS * GB(id, 0, 9)]); } } /** * Free the memory of the old names array. * Should be called once the old names have all been converted. */ void ResetOldNames() { free(_old_name_array); _old_name_array = NULL; } /** * Initialize the old names table memory. */ void InitializeOldNames() { free(_old_name_array); _old_name_array = CallocT(NUM_OLD_STRINGS * LEN_OLD_STRINGS); // 200 * 24 would be enough for TTO savegames } /** * Load the NAME chunk. */ static void Load_NAME() { int index; while ((index = SlIterateArray()) != -1) { if (index >= NUM_OLD_STRINGS) SlErrorCorrupt("Invalid old name index"); if (SlGetFieldLength() > (uint)LEN_OLD_STRINGS) SlErrorCorrupt("Invalid old name length"); SlArray(&_old_name_array[LEN_OLD_STRINGS * index], SlGetFieldLength(), SLE_UINT8); /* Make sure the old name is null terminated */ _old_name_array[LEN_OLD_STRINGS * index + LEN_OLD_STRINGS - 1] = '\0'; } } /** Chunk handlers related to strings. */ extern const ChunkHandler _name_chunk_handlers[] = { { 'NAME', NULL, Load_NAME, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/game_sl.cpp0000644000000000000000000001413612246102605016374 0ustar rootroot/* $Id: game_sl.cpp 25986 2013-11-13 21:49:31Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_sl.cpp Handles the saveload part of the GameScripts */ #include "../stdafx.h" #include "../debug.h" #include "saveload.h" #include "../string_func.h" #include "../game/game.hpp" #include "../game/game_config.hpp" #include "../network/network.h" #include "../game/game_instance.hpp" #include "../game/game_text.hpp" static char _game_saveload_name[64]; static int _game_saveload_version; static char _game_saveload_settings[1024]; static bool _game_saveload_is_random; static const SaveLoad _game_script[] = { SLEG_STR(_game_saveload_name, SLE_STRB), SLEG_STR(_game_saveload_settings, SLE_STRB), SLEG_VAR(_game_saveload_version, SLE_UINT32), SLEG_VAR(_game_saveload_is_random, SLE_BOOL), SLE_END() }; static void SaveReal_GSDT(int *index_ptr) { GameConfig *config = GameConfig::GetConfig(); if (config->HasScript()) { ttd_strlcpy(_game_saveload_name, config->GetName(), lengthof(_game_saveload_name)); _game_saveload_version = config->GetVersion(); } else { /* No GameScript is configured for this so store an empty string as name. */ _game_saveload_name[0] = '\0'; _game_saveload_version = -1; } _game_saveload_is_random = config->IsRandom(); _game_saveload_settings[0] = '\0'; config->SettingsToString(_game_saveload_settings, lengthof(_game_saveload_settings)); SlObject(NULL, _game_script); Game::Save(); } static void Load_GSDT() { /* Free all current data */ GameConfig::GetConfig(GameConfig::SSS_FORCE_GAME)->Change(NULL); if ((CompanyID)SlIterateArray() == (CompanyID)-1) return; _game_saveload_version = -1; SlObject(NULL, _game_script); if (_networking && !_network_server) { GameInstance::LoadEmpty(); if ((CompanyID)SlIterateArray() != (CompanyID)-1) SlErrorCorrupt("Too many GameScript configs"); return; } GameConfig *config = GameConfig::GetConfig(GameConfig::SSS_FORCE_GAME); if (StrEmpty(_game_saveload_name)) { } else { config->Change(_game_saveload_name, _game_saveload_version, false, _game_saveload_is_random); if (!config->HasScript()) { /* No version of the GameScript available that can load the data. Try to load the * latest version of the GameScript instead. */ config->Change(_game_saveload_name, -1, false, _game_saveload_is_random); if (!config->HasScript()) { if (strcmp(_game_saveload_name, "%_dummy") != 0) { DEBUG(script, 0, "The savegame has an GameScript by the name '%s', version %d which is no longer available.", _game_saveload_name, _game_saveload_version); DEBUG(script, 0, "This game wil continue to run without GameScript."); } else { DEBUG(script, 0, "The savegame had no GameScript available at the time of saving."); DEBUG(script, 0, "This game wil continue to run without GameScript."); } } else { DEBUG(script, 0, "The savegame has an GameScript by the name '%s', version %d which is no longer available.", _game_saveload_name, _game_saveload_version); DEBUG(script, 0, "The latest version of that GameScript has been loaded instead, but it'll not get the savegame data as it's incompatible."); } /* Make sure the GameScript doesn't get the saveload data, as he was not the * writer of the saveload data in the first place */ _game_saveload_version = -1; } } config->StringToSettings(_game_saveload_settings); /* Start the GameScript directly if it was active in the savegame */ Game::StartNew(); Game::Load(_game_saveload_version); if ((CompanyID)SlIterateArray() != (CompanyID)-1) SlErrorCorrupt("Too many GameScript configs"); } static void Save_GSDT() { SlSetArrayIndex(0); SlAutolength((AutolengthProc *)SaveReal_GSDT, NULL); } extern GameStrings *_current_data; static const char *_game_saveload_string; static uint _game_saveload_strings; static const SaveLoad _game_language_header[] = { SLEG_STR(_game_saveload_string, SLE_STR), SLEG_VAR(_game_saveload_strings, SLE_UINT32), SLE_END() }; static const SaveLoad _game_language_string[] = { SLEG_STR(_game_saveload_string, SLE_STR | SLF_ALLOW_CONTROL), SLE_END() }; static void SaveReal_GSTR(LanguageStrings *ls) { _game_saveload_string = ls->language; _game_saveload_strings = ls->lines.Length(); SlObject(NULL, _game_language_header); for (uint i = 0; i < _game_saveload_strings; i++) { _game_saveload_string = ls->lines[i]; SlObject(NULL, _game_language_string); } } static void Load_GSTR() { delete _current_data; _current_data = new GameStrings(); while (SlIterateArray() != -1) { _game_saveload_string = NULL; SlObject(NULL, _game_language_header); LanguageStrings *ls = new LanguageStrings(_game_saveload_string != NULL ? _game_saveload_string : ""); for (uint i = 0; i < _game_saveload_strings; i++) { SlObject(NULL, _game_language_string); *ls->lines.Append() = strdup(_game_saveload_string != NULL ? _game_saveload_string : ""); } *_current_data->raw_strings.Append() = ls; } /* If there were no strings in the savegame, set GameStrings to NULL */ if (_current_data->raw_strings.Length() == 0) { delete _current_data; _current_data = NULL; return; } _current_data->Compile(); ReconsiderGameScriptLanguage(); } static void Save_GSTR() { if (_current_data == NULL) return; for (uint i = 0; i < _current_data->raw_strings.Length(); i++) { SlSetArrayIndex(i); SlAutolength((AutolengthProc *)SaveReal_GSTR, _current_data->raw_strings[i]); } } extern const ChunkHandler _game_chunk_handlers[] = { { 'GSTR', Save_GSTR, Load_GSTR, NULL, NULL, CH_ARRAY }, { 'GSDT', Save_GSDT, Load_GSDT, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/airport_sl.cpp0000644000000000000000000000233212246102605017136 0ustar rootroot/* $Id: airport_sl.cpp 20450 2010-08-11 19:09:26Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airport_sl.cpp Code handling saving and loading airport ids */ #include "../stdafx.h" #include "saveload.h" #include "newgrf_sl.h" static void Save_APID() { Save_NewGRFMapping(_airport_mngr); } static void Load_APID() { Load_NewGRFMapping(_airport_mngr); } static void Save_ATID() { Save_NewGRFMapping(_airporttile_mngr); } static void Load_ATID() { Load_NewGRFMapping(_airporttile_mngr); } extern const ChunkHandler _airport_chunk_handlers[] = { { 'ATID', Save_ATID, Load_ATID, NULL, NULL, CH_ARRAY }, { 'APID', Save_APID, Load_APID, NULL, NULL, CH_ARRAY | CH_LAST }, }; openttd-1.3.3/src/saveload/station_sl.cpp0000644000000000000000000004471712246102605017154 0ustar rootroot/* $Id: station_sl.cpp 25340 2013-06-09 09:38:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file station_sl.cpp Code handling saving and loading of stations. */ #include "../stdafx.h" #include "../station_base.h" #include "../waypoint_base.h" #include "../roadstop_base.h" #include "../vehicle_base.h" #include "../newgrf_station.h" #include "saveload.h" #include "table/strings.h" /** * Update the buoy orders to be waypoint orders. * @param o the order 'list' to check. */ static void UpdateWaypointOrder(Order *o) { if (!o->IsType(OT_GOTO_STATION)) return; const Station *st = Station::Get(o->GetDestination()); if ((st->had_vehicle_of_type & HVOT_WAYPOINT) == 0) return; o->MakeGoToWaypoint(o->GetDestination()); } /** * Perform all steps to upgrade from the old station buoys to the new version * that uses waypoints. This includes some old saveload mechanics. */ void MoveBuoysToWaypoints() { /* Buoy orders become waypoint orders */ OrderList *ol; FOR_ALL_ORDER_LISTS(ol) { VehicleType vt = ol->GetFirstSharedVehicle()->type; if (vt != VEH_SHIP && vt != VEH_TRAIN) continue; for (Order *o = ol->GetFirstOrder(); o != NULL; o = o->next) UpdateWaypointOrder(o); } Vehicle *v; FOR_ALL_VEHICLES(v) { VehicleType vt = v->type; if (vt != VEH_SHIP && vt != VEH_TRAIN) continue; UpdateWaypointOrder(&v->current_order); } /* Now make the stations waypoints */ Station *st; FOR_ALL_STATIONS(st) { if ((st->had_vehicle_of_type & HVOT_WAYPOINT) == 0) continue; StationID index = st->index; TileIndex xy = st->xy; Town *town = st->town; StringID string_id = st->string_id; char *name = st->name; st->name = NULL; Date build_date = st->build_date; /* TTDPatch could use "buoys with rail station" for rail waypoints */ bool train = st->train_station.tile != INVALID_TILE; TileArea train_st = st->train_station; /* Delete the station, so we can make it a real waypoint. */ delete st; /* Stations and waypoints are in the same pool, so if a station * is deleted there must be place for a Waypoint. */ assert(Waypoint::CanAllocateItem()); Waypoint *wp = new (index) Waypoint(xy); wp->town = town; wp->string_id = train ? STR_SV_STNAME_WAYPOINT : STR_SV_STNAME_BUOY; wp->name = name; wp->delete_ctr = 0; // Just reset delete counter for once. wp->build_date = build_date; wp->owner = train ? GetTileOwner(xy) : OWNER_NONE; if (IsInsideBS(string_id, STR_SV_STNAME_BUOY, 9)) wp->town_cn = string_id - STR_SV_STNAME_BUOY; if (train) { /* When we make a rail waypoint of the station, convert the map as well. */ TILE_AREA_LOOP(t, train_st) { if (!IsTileType(t, MP_STATION) || GetStationIndex(t) != index) continue; SB(_m[t].m6, 3, 3, STATION_WAYPOINT); wp->rect.BeforeAddTile(t, StationRect::ADD_FORCE); } wp->train_station = train_st; wp->facilities |= FACIL_TRAIN; } else if (IsBuoyTile(xy) && GetStationIndex(xy) == index) { wp->rect.BeforeAddTile(xy, StationRect::ADD_FORCE); wp->facilities |= FACIL_DOCK; } } } void AfterLoadStations() { /* Update the speclists of all stations to point to the currently loaded custom stations. */ BaseStation *st; FOR_ALL_BASE_STATIONS(st) { for (uint i = 0; i < st->num_specs; i++) { if (st->speclist[i].grfid == 0) continue; st->speclist[i].spec = StationClass::GetByGrf(st->speclist[i].grfid, st->speclist[i].localidx, NULL); } if (Station::IsExpected(st)) { Station *sta = Station::From(st); for (const RoadStop *rs = sta->bus_stops; rs != NULL; rs = rs->next) sta->bus_station.Add(rs->xy); for (const RoadStop *rs = sta->truck_stops; rs != NULL; rs = rs->next) sta->truck_station.Add(rs->xy); } StationUpdateCachedTriggers(st); } } /** * (Re)building of road stop caches after loading a savegame. */ void AfterLoadRoadStops() { /* First construct the drive through entries */ RoadStop *rs; FOR_ALL_ROADSTOPS(rs) { if (IsDriveThroughStopTile(rs->xy)) rs->MakeDriveThrough(); } /* And then rebuild the data in those entries */ FOR_ALL_ROADSTOPS(rs) { if (!HasBit(rs->status, RoadStop::RSSFB_BASE_ENTRY)) continue; rs->GetEntry(DIAGDIR_NE)->Rebuild(rs); rs->GetEntry(DIAGDIR_NW)->Rebuild(rs); } } static const SaveLoad _roadstop_desc[] = { SLE_VAR(RoadStop, xy, SLE_UINT32), SLE_CONDNULL(1, 0, 44), SLE_VAR(RoadStop, status, SLE_UINT8), /* Index was saved in some versions, but this is not needed */ SLE_CONDNULL(4, 0, 8), SLE_CONDNULL(2, 0, 44), SLE_CONDNULL(1, 0, 25), SLE_REF(RoadStop, next, REF_ROADSTOPS), SLE_CONDNULL(2, 0, 44), SLE_CONDNULL(4, 0, 24), SLE_CONDNULL(1, 25, 25), SLE_END() }; static const SaveLoad _old_station_desc[] = { SLE_CONDVAR(Station, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Station, xy, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDNULL(4, 0, 5), ///< bus/lorry tile SLE_CONDVAR(Station, train_station.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Station, train_station.tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Station, airport.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Station, airport.tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Station, dock_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Station, dock_tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_REF(Station, town, REF_TOWN), SLE_VAR(Station, train_station.w, SLE_FILE_U8 | SLE_VAR_U16), SLE_CONDVAR(Station, train_station.h, SLE_FILE_U8 | SLE_VAR_U16, 2, SL_MAX_VERSION), SLE_CONDNULL(1, 0, 3), ///< alpha_order SLE_VAR(Station, string_id, SLE_STRINGID), SLE_CONDSTR(Station, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_CONDVAR(Station, indtype, SLE_UINT8, 103, SL_MAX_VERSION), SLE_CONDVAR(Station, had_vehicle_of_type, SLE_FILE_U16 | SLE_VAR_U8, 0, 121), SLE_CONDVAR(Station, had_vehicle_of_type, SLE_UINT8, 122, SL_MAX_VERSION), SLE_VAR(Station, time_since_load, SLE_UINT8), SLE_VAR(Station, time_since_unload, SLE_UINT8), SLE_VAR(Station, delete_ctr, SLE_UINT8), SLE_VAR(Station, owner, SLE_UINT8), SLE_VAR(Station, facilities, SLE_UINT8), SLE_VAR(Station, airport.type, SLE_UINT8), SLE_CONDNULL(2, 0, 5), ///< Truck/bus stop status SLE_CONDNULL(1, 0, 4), ///< Blocked months SLE_CONDVAR(Station, airport.flags, SLE_VAR_U64 | SLE_FILE_U16, 0, 2), SLE_CONDVAR(Station, airport.flags, SLE_VAR_U64 | SLE_FILE_U32, 3, 45), SLE_CONDVAR(Station, airport.flags, SLE_UINT64, 46, SL_MAX_VERSION), SLE_CONDNULL(2, 0, 25), ///< last-vehicle SLE_CONDVAR(Station, last_vehicle_type, SLE_UINT8, 26, SL_MAX_VERSION), SLE_CONDNULL(2, 3, 25), ///< custom station class and id SLE_CONDVAR(Station, build_date, SLE_FILE_U16 | SLE_VAR_I32, 3, 30), SLE_CONDVAR(Station, build_date, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDREF(Station, bus_stops, REF_ROADSTOPS, 6, SL_MAX_VERSION), SLE_CONDREF(Station, truck_stops, REF_ROADSTOPS, 6, SL_MAX_VERSION), /* Used by newstations for graphic variations */ SLE_CONDVAR(Station, random_bits, SLE_UINT16, 27, SL_MAX_VERSION), SLE_CONDVAR(Station, waiting_triggers, SLE_UINT8, 27, SL_MAX_VERSION), SLE_CONDVAR(Station, num_specs, SLE_UINT8, 27, SL_MAX_VERSION), SLE_CONDLST(Station, loading_vehicles, REF_VEHICLE, 57, SL_MAX_VERSION), /* reserve extra space in savegame here. (currently 32 bytes) */ SLE_CONDNULL(32, 2, SL_MAX_VERSION), SLE_END() }; static uint16 _waiting_acceptance; static uint16 _cargo_source; static uint32 _cargo_source_xy; static uint8 _cargo_days; static Money _cargo_feeder_share; static const SaveLoad _station_speclist_desc[] = { SLE_CONDVAR(StationSpecList, grfid, SLE_UINT32, 27, SL_MAX_VERSION), SLE_CONDVAR(StationSpecList, localidx, SLE_UINT8, 27, SL_MAX_VERSION), SLE_END() }; /** * Wrapper function to get the GoodsEntry's internal structure while * some of the variables itself are private. * @return the saveload description for GoodsEntry. */ const SaveLoad *GetGoodsDesc() { static const SaveLoad goods_desc[] = { SLEG_CONDVAR( _waiting_acceptance, SLE_UINT16, 0, 67), SLE_CONDVAR(GoodsEntry, acceptance_pickup, SLE_UINT8, 68, SL_MAX_VERSION), SLE_CONDNULL(2, 51, 67), SLE_VAR(GoodsEntry, time_since_pickup, SLE_UINT8), SLE_VAR(GoodsEntry, rating, SLE_UINT8), SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), SLEG_CONDVAR( _cargo_days, SLE_UINT8, 0, 67), SLE_VAR(GoodsEntry, last_speed, SLE_UINT8), SLE_VAR(GoodsEntry, last_age, SLE_UINT8), SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, 14, 64), SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, 65, 67), SLE_CONDVAR(GoodsEntry, amount_fract, SLE_UINT8, 150, SL_MAX_VERSION), SLE_CONDLST(GoodsEntry, cargo.packets, REF_CARGO_PACKET, 68, SL_MAX_VERSION), SLE_END() }; return goods_desc; } static void Load_STNS() { int index; while ((index = SlIterateArray()) != -1) { Station *st = new (index) Station(); SlObject(st, _old_station_desc); _waiting_acceptance = 0; uint num_cargo = IsSavegameVersionBefore(55) ? 12 : NUM_CARGO; for (CargoID i = 0; i < num_cargo; i++) { GoodsEntry *ge = &st->goods[i]; SlObject(ge, GetGoodsDesc()); if (IsSavegameVersionBefore(68)) { SB(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); if (GB(_waiting_acceptance, 0, 12) != 0) { /* In old versions, enroute_from used 0xFF as INVALID_STATION */ StationID source = (IsSavegameVersionBefore(7) && _cargo_source == 0xFF) ? INVALID_STATION : _cargo_source; /* Make sure we can allocate the CargoPacket. This is safe * as there can only be ~64k stations and 32 cargoes in these * savegame versions. As the CargoPacketPool has more than * 16 million entries; it fits by an order of magnitude. */ assert(CargoPacket::CanAllocateItem()); ge->cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, source, _cargo_source_xy, _cargo_source_xy, _cargo_feeder_share)); SB(ge->acceptance_pickup, GoodsEntry::GES_PICKUP, 1, 1); } } } if (st->num_specs != 0) { /* Allocate speclist memory when loading a game */ st->speclist = CallocT(st->num_specs); for (uint i = 0; i < st->num_specs; i++) { SlObject(&st->speclist[i], _station_speclist_desc); } } } } static void Ptrs_STNS() { /* Don't run when savegame version is higher than or equal to 123. */ if (!IsSavegameVersionBefore(123)) return; Station *st; FOR_ALL_STATIONS(st) { if (!IsSavegameVersionBefore(68)) { for (CargoID i = 0; i < NUM_CARGO; i++) { GoodsEntry *ge = &st->goods[i]; SlObject(ge, GetGoodsDesc()); } } SlObject(st, _old_station_desc); } } static const SaveLoad _base_station_desc[] = { SLE_VAR(BaseStation, xy, SLE_UINT32), SLE_REF(BaseStation, town, REF_TOWN), SLE_VAR(BaseStation, string_id, SLE_STRINGID), SLE_STR(BaseStation, name, SLE_STR | SLF_ALLOW_CONTROL, 0), SLE_VAR(BaseStation, delete_ctr, SLE_UINT8), SLE_VAR(BaseStation, owner, SLE_UINT8), SLE_VAR(BaseStation, facilities, SLE_UINT8), SLE_VAR(BaseStation, build_date, SLE_INT32), /* Used by newstations for graphic variations */ SLE_VAR(BaseStation, random_bits, SLE_UINT16), SLE_VAR(BaseStation, waiting_triggers, SLE_UINT8), SLE_VAR(BaseStation, num_specs, SLE_UINT8), SLE_END() }; static OldPersistentStorage _old_st_persistent_storage; static const SaveLoad _station_desc[] = { SLE_WRITEBYTE(Station, facilities, FACIL_NONE), SLE_ST_INCLUDE(), SLE_VAR(Station, train_station.tile, SLE_UINT32), SLE_VAR(Station, train_station.w, SLE_FILE_U8 | SLE_VAR_U16), SLE_VAR(Station, train_station.h, SLE_FILE_U8 | SLE_VAR_U16), SLE_REF(Station, bus_stops, REF_ROADSTOPS), SLE_REF(Station, truck_stops, REF_ROADSTOPS), SLE_VAR(Station, dock_tile, SLE_UINT32), SLE_VAR(Station, airport.tile, SLE_UINT32), SLE_CONDVAR(Station, airport.w, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION), SLE_CONDVAR(Station, airport.h, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION), SLE_VAR(Station, airport.type, SLE_UINT8), SLE_CONDVAR(Station, airport.layout, SLE_UINT8, 145, SL_MAX_VERSION), SLE_VAR(Station, airport.flags, SLE_UINT64), SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, 145, SL_MAX_VERSION), SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, 145, 160), SLE_CONDREF(Station, airport.psa, REF_STORAGE, 161, SL_MAX_VERSION), SLE_VAR(Station, indtype, SLE_UINT8), SLE_VAR(Station, time_since_load, SLE_UINT8), SLE_VAR(Station, time_since_unload, SLE_UINT8), SLE_VAR(Station, last_vehicle_type, SLE_UINT8), SLE_VAR(Station, had_vehicle_of_type, SLE_UINT8), SLE_LST(Station, loading_vehicles, REF_VEHICLE), SLE_CONDVAR(Station, always_accepted, SLE_UINT32, 127, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _waypoint_desc[] = { SLE_WRITEBYTE(Waypoint, facilities, FACIL_WAYPOINT), SLE_ST_INCLUDE(), SLE_VAR(Waypoint, town_cn, SLE_UINT16), SLE_CONDVAR(Waypoint, train_station.tile, SLE_UINT32, 124, SL_MAX_VERSION), SLE_CONDVAR(Waypoint, train_station.w, SLE_FILE_U8 | SLE_VAR_U16, 124, SL_MAX_VERSION), SLE_CONDVAR(Waypoint, train_station.h, SLE_FILE_U8 | SLE_VAR_U16, 124, SL_MAX_VERSION), SLE_END() }; /** * Get the base station description to be used for SL_ST_INCLUDE * @return the base station description. */ const SaveLoad *GetBaseStationDescription() { return _base_station_desc; } static void RealSave_STNN(BaseStation *bst) { bool waypoint = (bst->facilities & FACIL_WAYPOINT) != 0; SlObject(bst, waypoint ? _waypoint_desc : _station_desc); if (!waypoint) { Station *st = Station::From(bst); for (CargoID i = 0; i < NUM_CARGO; i++) { SlObject(&st->goods[i], GetGoodsDesc()); } } for (uint i = 0; i < bst->num_specs; i++) { SlObject(&bst->speclist[i], _station_speclist_desc); } } static void Save_STNN() { BaseStation *st; /* Write the stations */ FOR_ALL_BASE_STATIONS(st) { SlSetArrayIndex(st->index); SlAutolength((AutolengthProc*)RealSave_STNN, st); } } static void Load_STNN() { int index; while ((index = SlIterateArray()) != -1) { bool waypoint = (SlReadByte() & FACIL_WAYPOINT) != 0; BaseStation *bst = waypoint ? (BaseStation *)new (index) Waypoint() : new (index) Station(); SlObject(bst, waypoint ? _waypoint_desc : _station_desc); if (!waypoint) { Station *st = Station::From(bst); /* Before savegame version 161, persistent storages were not stored in a pool. */ if (IsSavegameVersionBefore(161) && !IsSavegameVersionBefore(145) && st->facilities & FACIL_AIRPORT) { /* Store the old persistent storage. The GRFID will be added later. */ assert(PersistentStorage::CanAllocateItem()); st->airport.psa = new PersistentStorage(0); memcpy(st->airport.psa->storage, _old_st_persistent_storage.storage, sizeof(st->airport.psa->storage)); } for (CargoID i = 0; i < NUM_CARGO; i++) { SlObject(&st->goods[i], GetGoodsDesc()); } } if (bst->num_specs != 0) { /* Allocate speclist memory when loading a game */ bst->speclist = CallocT(bst->num_specs); for (uint i = 0; i < bst->num_specs; i++) { SlObject(&bst->speclist[i], _station_speclist_desc); } } } } static void Ptrs_STNN() { /* Don't run when savegame version lower than 123. */ if (IsSavegameVersionBefore(123)) return; Station *st; FOR_ALL_STATIONS(st) { for (CargoID i = 0; i < NUM_CARGO; i++) { GoodsEntry *ge = &st->goods[i]; SlObject(ge, GetGoodsDesc()); } SlObject(st, _station_desc); } Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { SlObject(wp, _waypoint_desc); } } static void Save_ROADSTOP() { RoadStop *rs; FOR_ALL_ROADSTOPS(rs) { SlSetArrayIndex(rs->index); SlObject(rs, _roadstop_desc); } } static void Load_ROADSTOP() { int index; while ((index = SlIterateArray()) != -1) { RoadStop *rs = new (index) RoadStop(INVALID_TILE); SlObject(rs, _roadstop_desc); } } static void Ptrs_ROADSTOP() { RoadStop *rs; FOR_ALL_ROADSTOPS(rs) { SlObject(rs, _roadstop_desc); } } extern const ChunkHandler _station_chunk_handlers[] = { { 'STNS', NULL, Load_STNS, Ptrs_STNS, NULL, CH_ARRAY }, { 'STNN', Save_STNN, Load_STNN, Ptrs_STNN, NULL, CH_ARRAY }, { 'ROAD', Save_ROADSTOP, Load_ROADSTOP, Ptrs_ROADSTOP, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/vehicle_sl.cpp0000644000000000000000000010771612246102605017111 0ustar rootroot/* $Id: vehicle_sl.cpp 24998 2013-02-14 17:24:55Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file vehicle_sl.cpp Code handling saving and loading of vehicles */ #include "../stdafx.h" #include "../vehicle_func.h" #include "../train.h" #include "../roadveh.h" #include "../ship.h" #include "../aircraft.h" #include "../station_base.h" #include "../effectvehicle_base.h" #include "../company_base.h" #include "../company_func.h" #include "saveload.h" #include /** * Link front and rear multiheaded engines to each other * This is done when loading a savegame */ void ConnectMultiheadedTrains() { Train *v; FOR_ALL_TRAINS(v) { v->other_multiheaded_part = NULL; } FOR_ALL_TRAINS(v) { if (v->IsFrontEngine() || v->IsFreeWagon()) { /* Two ways to associate multiheaded parts to each other: * sequential-matching: Trains shall be arranged to look like <..>..<..>..<..>.. * bracket-matching: Free vehicle chains shall be arranged to look like ..<..<..>..<..>..>.. * * Note: Old savegames might contain chains which do not comply with these rules, e.g. * - the front and read parts have invalid orders * - different engine types might be combined * - there might be different amounts of front and rear parts. * * Note: The multiheaded parts need to be matched exactly like they are matched on the server, else desyncs will occur. * This is why two matching strategies are needed. */ bool sequential_matching = v->IsFrontEngine(); for (Train *u = v; u != NULL; u = u->GetNextVehicle()) { if (u->other_multiheaded_part != NULL) continue; // we already linked this one if (u->IsMultiheaded()) { if (!u->IsEngine()) { /* we got a rear car without a front car. We will convert it to a front one */ u->SetEngine(); u->spritenum--; } /* Find a matching back part */ EngineID eid = u->engine_type; Train *w; if (sequential_matching) { for (w = u->GetNextVehicle(); w != NULL; w = w->GetNextVehicle()) { if (w->engine_type != eid || w->other_multiheaded_part != NULL || !w->IsMultiheaded()) continue; /* we found a car to partner with this engine. Now we will make sure it face the right way */ if (w->IsEngine()) { w->ClearEngine(); w->spritenum++; } break; } } else { uint stack_pos = 0; for (w = u->GetNextVehicle(); w != NULL; w = w->GetNextVehicle()) { if (w->engine_type != eid || w->other_multiheaded_part != NULL || !w->IsMultiheaded()) continue; if (w->IsEngine()) { stack_pos++; } else { if (stack_pos == 0) break; stack_pos--; } } } if (w != NULL) { w->other_multiheaded_part = u; u->other_multiheaded_part = w; } else { /* we got a front car and no rear cars. We will fake this one for forget that it should have been multiheaded */ u->ClearMultiheaded(); } } } } } } /** * Converts all trains to the new subtype format introduced in savegame 16.2 * It also links multiheaded engines or make them forget they are multiheaded if no suitable partner is found */ void ConvertOldMultiheadToNew() { Train *t; FOR_ALL_TRAINS(t) SetBit(t->subtype, 7); // indicates that it's the old format and needs to be converted in the next loop FOR_ALL_TRAINS(t) { if (HasBit(t->subtype, 7) && ((t->subtype & ~0x80) == 0 || (t->subtype & ~0x80) == 4)) { for (Train *u = t; u != NULL; u = u->Next()) { const RailVehicleInfo *rvi = RailVehInfo(u->engine_type); ClrBit(u->subtype, 7); switch (u->subtype) { case 0: // TS_Front_Engine if (rvi->railveh_type == RAILVEH_MULTIHEAD) u->SetMultiheaded(); u->SetFrontEngine(); u->SetEngine(); break; case 1: // TS_Artic_Part u->subtype = 0; u->SetArticulatedPart(); break; case 2: // TS_Not_First u->subtype = 0; if (rvi->railveh_type == RAILVEH_WAGON) { /* normal wagon */ u->SetWagon(); break; } if (rvi->railveh_type == RAILVEH_MULTIHEAD && rvi->image_index == u->spritenum - 1) { /* rear end of a multiheaded engine */ u->SetMultiheaded(); break; } if (rvi->railveh_type == RAILVEH_MULTIHEAD) u->SetMultiheaded(); u->SetEngine(); break; case 4: // TS_Free_Car u->subtype = 0; u->SetWagon(); u->SetFreeWagon(); break; default: SlErrorCorrupt("Invalid train subtype"); } } } } } /** need to be called to load aircraft from old version */ void UpdateOldAircraft() { /* set airport_flags to 0 for all airports just to be sure */ Station *st; FOR_ALL_STATIONS(st) { st->airport.flags = 0; // reset airport } Aircraft *a; FOR_ALL_AIRCRAFT(a) { /* airplane has another vehicle with subtype 4 (shadow), helicopter also has 3 (rotor) * skip those */ if (a->IsNormalAircraft()) { /* airplane in terminal stopped doesn't hurt anyone, so goto next */ if ((a->vehstatus & VS_STOPPED) && a->state == 0) { a->state = HANGAR; continue; } AircraftLeaveHangar(a, a->direction); // make airplane visible if it was in a depot for example a->vehstatus &= ~VS_STOPPED; // make airplane moving UpdateAircraftCache(a); a->cur_speed = a->vcache.cached_max_speed; // so aircraft don't have zero speed while in air if (!a->current_order.IsType(OT_GOTO_STATION) && !a->current_order.IsType(OT_GOTO_DEPOT)) { /* reset current order so aircraft doesn't have invalid "station-only" order */ a->current_order.MakeDummy(); } a->state = FLYING; AircraftNextAirportPos_and_Order(a); // move it to the entry point of the airport GetNewVehiclePosResult gp = GetNewVehiclePos(a); a->tile = 0; // aircraft in air is tile=0 /* correct speed of helicopter-rotors */ if (a->subtype == AIR_HELICOPTER) a->Next()->Next()->cur_speed = 32; /* set new position x,y,z */ SetAircraftPosition(a, gp.x, gp.y, GetAircraftFlyingAltitude(a)); } } } /** * Check all vehicles to ensure their engine type is valid * for the currently loaded NewGRFs (that includes none...) * This only makes a difference if NewGRFs are missing, otherwise * all vehicles will be valid. This does not make such a game * playable, it only prevents crash. */ static void CheckValidVehicles() { size_t total_engines = Engine::GetPoolSize(); EngineID first_engine[4] = { INVALID_ENGINE, INVALID_ENGINE, INVALID_ENGINE, INVALID_ENGINE }; Engine *e; FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { first_engine[VEH_TRAIN] = e->index; break; } FOR_ALL_ENGINES_OF_TYPE(e, VEH_ROAD) { first_engine[VEH_ROAD] = e->index; break; } FOR_ALL_ENGINES_OF_TYPE(e, VEH_SHIP) { first_engine[VEH_SHIP] = e->index; break; } FOR_ALL_ENGINES_OF_TYPE(e, VEH_AIRCRAFT) { first_engine[VEH_AIRCRAFT] = e->index; break; } Vehicle *v; FOR_ALL_VEHICLES(v) { /* Test if engine types match */ switch (v->type) { case VEH_TRAIN: case VEH_ROAD: case VEH_SHIP: case VEH_AIRCRAFT: if (v->engine_type >= total_engines || v->type != v->GetEngine()->type) { v->engine_type = first_engine[v->type]; } break; default: break; } } } extern byte _age_cargo_skip_counter; // From misc_sl.cpp /** Called after load to update coordinates */ void AfterLoadVehicles(bool part_of_load) { Vehicle *v; FOR_ALL_VEHICLES(v) { /* Reinstate the previous pointer */ if (v->Next() != NULL) v->Next()->previous = v; if (v->NextShared() != NULL) v->NextShared()->previous_shared = v; if (part_of_load) v->fill_percent_te_id = INVALID_TE_ID; v->first = NULL; if (v->IsGroundVehicle()) v->GetGroundVehicleCache()->first_engine = INVALID_ENGINE; } /* AfterLoadVehicles may also be called in case of NewGRF reload, in this * case we may not convert orders again. */ if (part_of_load) { /* Create shared vehicle chain for very old games (pre 5,2) and create * OrderList from shared vehicle chains. For this to work correctly, the * following conditions must be fulfilled: * a) both next_shared and previous_shared are not set for pre 5,2 games * b) both next_shared and previous_shared are set for later games */ std::map mapping; FOR_ALL_VEHICLES(v) { if (v->orders.old != NULL) { if (IsSavegameVersionBefore(105)) { // Pre-105 didn't save an OrderList if (mapping[v->orders.old] == NULL) { /* This adds the whole shared vehicle chain for case b */ /* Creating an OrderList here is safe because the number of vehicles * allowed in these savegames matches the number of OrderLists. As * such each vehicle can get an OrderList and it will (still) fit. */ assert(OrderList::CanAllocateItem()); v->orders.list = mapping[v->orders.old] = new OrderList(v->orders.old, v); } else { v->orders.list = mapping[v->orders.old]; /* For old games (case a) we must create the shared vehicle chain */ if (IsSavegameVersionBefore(5, 2)) { v->AddToShared(v->orders.list->GetFirstSharedVehicle()); } } } else { // OrderList was saved as such, only recalculate not saved values if (v->PreviousShared() == NULL) { v->orders.list->Initialize(v->orders.list->first, v); } } } } } FOR_ALL_VEHICLES(v) { /* Fill the first pointers */ if (v->Previous() == NULL) { for (Vehicle *u = v; u != NULL; u = u->Next()) { u->first = v; } } } if (part_of_load) { if (IsSavegameVersionBefore(105)) { /* Before 105 there was no order for shared orders, thus it messed up horribly */ FOR_ALL_VEHICLES(v) { if (v->First() != v || v->orders.list != NULL || v->previous_shared != NULL || v->next_shared == NULL) continue; /* As above, allocating OrderList here is safe. */ assert(OrderList::CanAllocateItem()); v->orders.list = new OrderList(NULL, v); for (Vehicle *u = v; u != NULL; u = u->next_shared) { u->orders.list = v->orders.list; } } } if (IsSavegameVersionBefore(157)) { /* The road vehicle subtype was converted to a flag. */ RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->subtype == 0) { /* The road vehicle is at the front. */ rv->SetFrontEngine(); } else if (rv->subtype == 1) { /* The road vehicle is an articulated part. */ rv->subtype = 0; rv->SetArticulatedPart(); } else { SlErrorCorrupt("Invalid road vehicle subtype"); } } } if (IsSavegameVersionBefore(160)) { /* In some old savegames there might be some "crap" stored. */ FOR_ALL_VEHICLES(v) { if (!v->IsPrimaryVehicle() && v->type != VEH_DISASTER) { v->current_order.Free(); v->unitnumber = 0; } } } if (IsSavegameVersionBefore(162)) { /* Set the vehicle-local cargo age counter from the old global counter. */ FOR_ALL_VEHICLES(v) { v->cargo_age_counter = _age_cargo_skip_counter; } } if (IsSavegameVersionBefore(180)) { /* Set service interval flags */ FOR_ALL_VEHICLES(v) { if (!v->IsPrimaryVehicle()) continue; const Company *c = Company::Get(v->owner); int interval = CompanyServiceInterval(c, v->type); v->SetServiceIntervalIsCustom(v->GetServiceInterval() != interval); v->SetServiceIntervalIsPercent(c->settings.vehicle.servint_ispercent); } } } CheckValidVehicles(); FOR_ALL_VEHICLES(v) { assert(v->first != NULL); switch (v->type) { case VEH_TRAIN: { Train *t = Train::From(v); if (t->IsFrontEngine() || t->IsFreeWagon()) { t->gcache.last_speed = t->cur_speed; // update displayed train speed t->ConsistChanged(false); } break; } case VEH_ROAD: { RoadVehicle *rv = RoadVehicle::From(v); if (rv->IsFrontEngine()) { rv->gcache.last_speed = rv->cur_speed; // update displayed road vehicle speed RoadVehUpdateCache(rv); if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) { rv->CargoChanged(); } } break; } case VEH_SHIP: Ship::From(v)->UpdateCache(); break; default: break; } } /* Stop non-front engines */ if (part_of_load && IsSavegameVersionBefore(112)) { FOR_ALL_VEHICLES(v) { if (v->type == VEH_TRAIN) { Train *t = Train::From(v); if (!t->IsFrontEngine()) { if (t->IsEngine()) t->vehstatus |= VS_STOPPED; /* cur_speed is now relevant for non-front parts - nonzero breaks * moving-wagons-inside-depot- and autoreplace- code */ t->cur_speed = 0; } } /* trains weren't stopping gradually in old OTTD versions (and TTO/TTD) * other vehicle types didn't have zero speed while stopped (even in 'recent' OTTD versions) */ if ((v->vehstatus & VS_STOPPED) && (v->type != VEH_TRAIN || IsSavegameVersionBefore(2, 1))) { v->cur_speed = 0; } } } FOR_ALL_VEHICLES(v) { switch (v->type) { case VEH_ROAD: { RoadVehicle *rv = RoadVehicle::From(v); rv->roadtype = HasBit(EngInfo(v->First()->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD; rv->compatible_roadtypes = RoadTypeToRoadTypes(rv->roadtype); /* FALL THROUGH */ } case VEH_TRAIN: case VEH_SHIP: v->cur_image = v->GetImage(v->direction, EIT_ON_MAP); break; case VEH_AIRCRAFT: if (Aircraft::From(v)->IsNormalAircraft()) { v->cur_image = v->GetImage(v->direction, EIT_ON_MAP); /* The plane's shadow will have the same image as the plane */ Vehicle *shadow = v->Next(); shadow->cur_image = v->cur_image; /* In the case of a helicopter we will update the rotor sprites */ if (v->subtype == AIR_HELICOPTER) { Vehicle *rotor = shadow->Next(); rotor->cur_image = GetRotorImage(Aircraft::From(v), EIT_ON_MAP); } UpdateAircraftCache(Aircraft::From(v), true); } break; default: break; } v->UpdateDeltaXY(v->direction); v->coord.left = INVALID_COORD; VehicleUpdatePosition(v); VehicleUpdateViewport(v, false); } } bool TrainController(Train *v, Vehicle *nomove, bool reverse = true); // From train_cmd.cpp void ReverseTrainDirection(Train *v); void ReverseTrainSwapVeh(Train *v, int l, int r); /** Fixup old train spacing. */ void FixupTrainLengths() { /* Vehicle center was moved from 4 units behind the front to half the length * behind the front. Move vehicles so they end up on the same spot. */ Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->type == VEH_TRAIN && v->IsPrimaryVehicle()) { /* The vehicle center is now more to the front depending on vehicle length, * so we need to move all vehicles forward to cover the difference to the * old center, otherwise wagon spacing in trains would be broken upon load. */ for (Train *u = Train::From(v); u != NULL; u = u->Next()) { if (u->track == TRACK_BIT_DEPOT || (u->vehstatus & VS_CRASHED)) continue; Train *next = u->Next(); /* Try to pull the vehicle half its length forward. */ int diff = (VEHICLE_LENGTH - u->gcache.cached_veh_length) / 2; int done; for (done = 0; done < diff; done++) { if (!TrainController(u, next, false)) break; } if (next != NULL && done < diff && u->IsFrontEngine()) { /* Pulling the front vehicle forwards failed, we either encountered a dead-end * or a red signal. To fix this, we try to move the whole train the required * space backwards and re-do the fix up of the front vehicle. */ /* Ignore any signals when backtracking. */ TrainForceProceeding old_tfp = u->force_proceed; u->force_proceed = TFP_SIGNAL; /* Swap start<>end, start+1<>end-1, ... */ int r = CountVehiclesInChain(u) - 1; // number of vehicles - 1 int l = 0; do ReverseTrainSwapVeh(u, l++, r--); while (l <= r); /* We moved the first vehicle which is now the last. Move it back to the * original position as we will fix up the last vehicle later in the loop. */ for (int i = 0; i < done; i++) TrainController(u->Last(), NULL); /* Move the train backwards to get space for the first vehicle. As the stopping * distance from a line end is rounded up, move the train one unit more to cater * for front vehicles with odd lengths. */ int moved; for (moved = 0; moved < diff + 1; moved++) { if (!TrainController(u, NULL, false)) break; } /* Swap start<>end, start+1<>end-1, ... again. */ r = CountVehiclesInChain(u) - 1; // number of vehicles - 1 l = 0; do ReverseTrainSwapVeh(u, l++, r--); while (l <= r); u->force_proceed = old_tfp; /* Tracks are too short to fix the train length. The player has to fix the * train in a depot. Bail out so we don't damage the vehicle chain any more. */ if (moved < diff + 1) break; /* Re-do the correction for the first vehicle. */ for (done = 0; done < diff; done++) TrainController(u, next, false); /* We moved one unit more backwards than needed for even-length front vehicles, * try to move that unit forward again. We don't care if this step fails. */ TrainController(u, NULL, false); } /* If the next wagon is still in a depot, check if it shouldn't be outside already. */ if (next != NULL && next->track == TRACK_BIT_DEPOT) { int d = TicksToLeaveDepot(u); if (d <= 0) { /* Next vehicle should have left the depot already, show it and pull forward. */ next->vehstatus &= ~VS_HIDDEN; next->track = TrackToTrackBits(GetRailDepotTrack(next->tile)); for (int i = 0; i >= d; i--) TrainController(next, NULL); } } } /* Update all cached properties after moving the vehicle chain around. */ Train::From(v)->ConsistChanged(true); } } } static uint8 _cargo_days; static uint16 _cargo_source; static uint32 _cargo_source_xy; static uint16 _cargo_count; static uint16 _cargo_paid_for; static Money _cargo_feeder_share; static uint32 _cargo_loaded_at_xy; /** * Make it possible to make the saveload tables "friends" of other classes. * @param vt the vehicle type. Can be VEH_END for the common vehicle description data * @return the saveload description */ const SaveLoad *GetVehicleDescription(VehicleType vt) { /** Save and load of vehicles */ static const SaveLoad _common_veh_desc[] = { SLE_VAR(Vehicle, subtype, SLE_UINT8), SLE_REF(Vehicle, next, REF_VEHICLE_OLD), SLE_CONDVAR(Vehicle, name, SLE_NAME, 0, 83), SLE_CONDSTR(Vehicle, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, unitnumber, SLE_FILE_U8 | SLE_VAR_U16, 0, 7), SLE_CONDVAR(Vehicle, unitnumber, SLE_UINT16, 8, SL_MAX_VERSION), SLE_VAR(Vehicle, owner, SLE_UINT8), SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, dest_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, dest_tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, x_pos, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, y_pos, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, 164, SL_MAX_VERSION), SLE_VAR(Vehicle, direction, SLE_UINT8), SLE_CONDNULL(2, 0, 57), SLE_VAR(Vehicle, spritenum, SLE_UINT8), SLE_CONDNULL(5, 0, 57), SLE_VAR(Vehicle, engine_type, SLE_UINT16), SLE_CONDNULL(2, 0, 151), SLE_VAR(Vehicle, cur_speed, SLE_UINT16), SLE_VAR(Vehicle, subspeed, SLE_UINT8), SLE_VAR(Vehicle, acceleration, SLE_UINT8), SLE_VAR(Vehicle, progress, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), SLE_CONDVAR(Vehicle, last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), SLE_CONDVAR(Vehicle, last_station_visited, SLE_UINT16, 5, SL_MAX_VERSION), SLE_VAR(Vehicle, cargo_type, SLE_UINT8), SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, 35, SL_MAX_VERSION), SLEG_CONDVAR( _cargo_days, SLE_UINT8, 0, 67), SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), SLE_VAR(Vehicle, cargo_cap, SLE_UINT16), SLEG_CONDVAR( _cargo_count, SLE_UINT16, 0, 67), SLE_CONDLST(Vehicle, cargo.packets, REF_CARGO_PACKET, 68, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, cargo_age_counter, SLE_UINT16, 162, SL_MAX_VERSION), SLE_VAR(Vehicle, day_counter, SLE_UINT8), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), SLE_CONDVAR(Vehicle, running_ticks, SLE_UINT8, 88, SL_MAX_VERSION), SLE_VAR(Vehicle, cur_implicit_order_index, SLE_UINT8), SLE_CONDVAR(Vehicle, cur_real_order_index, SLE_UINT8, 158, SL_MAX_VERSION), /* num_orders is now part of OrderList and is not saved but counted */ SLE_CONDNULL(1, 0, 104), /* This next line is for version 4 and prior compatibility.. it temporarily reads type and flags (which were both 4 bits) into type. Later on this is converted correctly */ SLE_CONDVAR(Vehicle, current_order.type, SLE_UINT8, 0, 4), SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), /* Orders for version 5 and on */ SLE_CONDVAR(Vehicle, current_order.type, SLE_UINT8, 5, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, current_order.flags, SLE_UINT8, 5, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, 5, SL_MAX_VERSION), /* Refit in current order */ SLE_CONDVAR(Vehicle, current_order.refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, current_order.refit_subtype, SLE_UINT8, 36, SL_MAX_VERSION), /* Timetable in current order */ SLE_CONDVAR(Vehicle, current_order.wait_time, SLE_UINT16, 67, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, current_order.travel_time, SLE_UINT16, 67, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, current_order.max_speed, SLE_UINT16, 174, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, timetable_start, SLE_INT32, 129, SL_MAX_VERSION), SLE_CONDREF(Vehicle, orders, REF_ORDER, 0, 104), SLE_CONDREF(Vehicle, orders, REF_ORDERLIST, 105, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Vehicle, age, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, max_age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Vehicle, max_age, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, date_of_last_service, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Vehicle, date_of_last_service, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, 0, 30), SLE_CONDVAR(Vehicle, service_interval, SLE_FILE_U32 | SLE_VAR_U16, 31, 179), SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, 180, SL_MAX_VERSION), SLE_VAR(Vehicle, reliability, SLE_UINT16), SLE_VAR(Vehicle, reliability_spd_dec, SLE_UINT16), SLE_VAR(Vehicle, breakdown_ctr, SLE_UINT8), SLE_VAR(Vehicle, breakdown_delay, SLE_UINT8), SLE_VAR(Vehicle, breakdowns_since_last_service, SLE_UINT8), SLE_VAR(Vehicle, breakdown_chance, SLE_UINT8), SLE_CONDVAR(Vehicle, build_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Vehicle, build_year, SLE_INT32, 31, SL_MAX_VERSION), SLE_VAR(Vehicle, load_unload_ticks, SLE_UINT16), SLEG_CONDVAR( _cargo_paid_for, SLE_UINT16, 45, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, 40, 179), SLE_CONDVAR(Vehicle, vehicle_flags, SLE_UINT16, 180, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, profit_this_year, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Vehicle, profit_this_year, SLE_INT64, 65, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, profit_last_year, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Vehicle, profit_last_year, SLE_INT64, 65, SL_MAX_VERSION), SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_I32 | SLE_VAR_I64, 51, 64), SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, 65, 67), SLEG_CONDVAR( _cargo_loaded_at_xy, SLE_UINT32, 51, 67), SLE_CONDVAR(Vehicle, value, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Vehicle, value, SLE_INT64, 65, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, random_bits, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, waiting_triggers, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDREF(Vehicle, next_shared, REF_VEHICLE, 2, SL_MAX_VERSION), SLE_CONDNULL(2, 2, 68), SLE_CONDNULL(4, 69, 100), SLE_CONDVAR(Vehicle, group_id, SLE_UINT16, 60, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, current_order_time, SLE_UINT32, 67, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, lateness_counter, SLE_INT32, 67, SL_MAX_VERSION), SLE_CONDNULL(10, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _train_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_TRAIN), SLE_VEH_INCLUDE(), SLE_VAR(Train, crash_anim_pos, SLE_UINT16), SLE_VAR(Train, force_proceed, SLE_UINT8), SLE_VAR(Train, railtype, SLE_UINT8), SLE_VAR(Train, track, SLE_UINT8), SLE_CONDVAR(Train, flags, SLE_FILE_U8 | SLE_VAR_U16, 2, 99), SLE_CONDVAR(Train, flags, SLE_UINT16, 100, SL_MAX_VERSION), SLE_CONDNULL(2, 2, 59), SLE_CONDVAR(Train, wait_counter, SLE_UINT16, 136, SL_MAX_VERSION), SLE_CONDNULL(2, 2, 19), SLE_CONDVAR(Train, gv_flags, SLE_UINT16, 139, SL_MAX_VERSION), SLE_CONDNULL(11, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _roadveh_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_ROAD), SLE_VEH_INCLUDE(), SLE_VAR(RoadVehicle, state, SLE_UINT8), SLE_VAR(RoadVehicle, frame, SLE_UINT8), SLE_VAR(RoadVehicle, blocked_ctr, SLE_UINT16), SLE_VAR(RoadVehicle, overtaking, SLE_UINT8), SLE_VAR(RoadVehicle, overtaking_ctr, SLE_UINT8), SLE_VAR(RoadVehicle, crashed_ctr, SLE_UINT16), SLE_VAR(RoadVehicle, reverse_ctr, SLE_UINT8), SLE_CONDNULL(2, 6, 68), SLE_CONDVAR(RoadVehicle, gv_flags, SLE_UINT16, 139, SL_MAX_VERSION), SLE_CONDNULL(4, 69, 130), SLE_CONDNULL(2, 6, 130), SLE_CONDNULL(16, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _ship_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_SHIP), SLE_VEH_INCLUDE(), SLE_VAR(Ship, state, SLE_UINT8), SLE_CONDNULL(16, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _aircraft_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_AIRCRAFT), SLE_VEH_INCLUDE(), SLE_VAR(Aircraft, crashed_counter, SLE_UINT16), SLE_VAR(Aircraft, pos, SLE_UINT8), SLE_CONDVAR(Aircraft, targetairport, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), SLE_CONDVAR(Aircraft, targetairport, SLE_UINT16, 5, SL_MAX_VERSION), SLE_VAR(Aircraft, state, SLE_UINT8), SLE_CONDVAR(Aircraft, previous_pos, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Aircraft, last_direction, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Aircraft, number_consecutive_turns, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDVAR(Aircraft, turn_counter, SLE_UINT8, 136, SL_MAX_VERSION), SLE_CONDVAR(Aircraft, flags, SLE_UINT8, 167, SL_MAX_VERSION), SLE_CONDNULL(13, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _special_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_EFFECT), SLE_VAR(Vehicle, subtype, SLE_UINT8), SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), SLE_CONDVAR(Vehicle, x_pos, SLE_INT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), SLE_CONDVAR(Vehicle, y_pos, SLE_INT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, 164, SL_MAX_VERSION), SLE_VAR(Vehicle, cur_image, SLE_FILE_U16 | SLE_VAR_U32), SLE_CONDNULL(5, 0, 57), SLE_VAR(Vehicle, progress, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), SLE_VAR(EffectVehicle, animation_state, SLE_UINT16), SLE_VAR(EffectVehicle, animation_substate, SLE_UINT8), SLE_CONDVAR(Vehicle, spritenum, SLE_UINT8, 2, SL_MAX_VERSION), SLE_CONDNULL(15, 2, 143), // old reserved space SLE_END() }; static const SaveLoad _disaster_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_DISASTER), SLE_REF(Vehicle, next, REF_VEHICLE_OLD), SLE_VAR(Vehicle, subtype, SLE_UINT8), SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, dest_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), SLE_CONDVAR(Vehicle, dest_tile, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), SLE_CONDVAR(Vehicle, x_pos, SLE_INT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), SLE_CONDVAR(Vehicle, y_pos, SLE_INT32, 6, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, 164, SL_MAX_VERSION), SLE_VAR(Vehicle, direction, SLE_UINT8), SLE_CONDNULL(5, 0, 57), SLE_VAR(Vehicle, owner, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, 5, SL_MAX_VERSION), SLE_VAR(Vehicle, cur_image, SLE_FILE_U16 | SLE_VAR_U32), SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Vehicle, age, SLE_INT32, 31, SL_MAX_VERSION), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), SLE_VAR(DisasterVehicle, image_override, SLE_UINT16), SLE_VAR(DisasterVehicle, big_ufo_destroyer_target, SLE_UINT16), SLE_CONDNULL(16, 2, 143), // old reserved space SLE_END() }; static const SaveLoad * const _veh_descs[] = { _train_desc, _roadveh_desc, _ship_desc, _aircraft_desc, _special_desc, _disaster_desc, _common_veh_desc, }; return _veh_descs[vt]; } /** Will be called when the vehicles need to be saved. */ static void Save_VEHS() { Vehicle *v; /* Write the vehicles */ FOR_ALL_VEHICLES(v) { SlSetArrayIndex(v->index); SlObject(v, GetVehicleDescription(v->type)); } } /** Will be called when vehicles need to be loaded. */ void Load_VEHS() { int index; _cargo_count = 0; while ((index = SlIterateArray()) != -1) { Vehicle *v; VehicleType vtype = (VehicleType)SlReadByte(); switch (vtype) { case VEH_TRAIN: v = new (index) Train(); break; case VEH_ROAD: v = new (index) RoadVehicle(); break; case VEH_SHIP: v = new (index) Ship(); break; case VEH_AIRCRAFT: v = new (index) Aircraft(); break; case VEH_EFFECT: v = new (index) EffectVehicle(); break; case VEH_DISASTER: v = new (index) DisasterVehicle(); break; case VEH_INVALID: // Savegame shouldn't contain invalid vehicles default: SlErrorCorrupt("Invalid vehicle type"); } SlObject(v, GetVehicleDescription(vtype)); if (_cargo_count != 0 && IsCompanyBuildableVehicleType(v) && CargoPacket::CanAllocateItem()) { /* Don't construct the packet with station here, because that'll fail with old savegames */ CargoPacket *cp = new CargoPacket(_cargo_count, _cargo_days, _cargo_source, _cargo_source_xy, _cargo_loaded_at_xy, _cargo_feeder_share); v->cargo.Append(cp); } /* Old savegames used 'last_station_visited = 0xFF' */ if (IsSavegameVersionBefore(5) && v->last_station_visited == 0xFF) { v->last_station_visited = INVALID_STATION; } if (IsSavegameVersionBefore(5)) { /* Convert the current_order.type (which is a mix of type and flags, because * in those versions, they both were 4 bits big) to type and flags */ v->current_order.flags = GB(v->current_order.type, 4, 4); v->current_order.type &= 0x0F; } /* Advanced vehicle lists got added */ if (IsSavegameVersionBefore(60)) v->group_id = DEFAULT_GROUP; } } static void Ptrs_VEHS() { Vehicle *v; FOR_ALL_VEHICLES(v) { SlObject(v, GetVehicleDescription(v->type)); } } extern const ChunkHandler _veh_chunk_handlers[] = { { 'VEHS', Save_VEHS, Load_VEHS, Ptrs_VEHS, NULL, CH_SPARSE_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/saveload.cpp0000644000000000000000000024024312246102605016563 0ustar rootroot/* $Id: saveload.cpp 25168 2013-04-08 20:52:32Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file saveload.cpp * All actions handling saving and loading goes on in this file. The general actions * are as follows for saving a game (loading is analogous): *
    *
  1. initialize the writer by creating a temporary memory-buffer for it *
  2. go through all to-be saved elements, each 'chunk' (#ChunkHandler) prefixed by a label *
  3. use their description array (#SaveLoad) to know what elements to save and in what version * of the game it was active (used when loading) *
  4. write all data byte-by-byte to the temporary buffer so it is endian-safe *
  5. when the buffer is full; flush it to the output (eg save to file) (_sl.buf, _sl.bufp, _sl.bufe) *
  6. repeat this until everything is done, and flush any remaining output to file *
*/ #include "../stdafx.h" #include "../debug.h" #include "../station_base.h" #include "../thread/thread.h" #include "../town.h" #include "../network/network.h" #include "../window_func.h" #include "../strings_func.h" #include "../core/endian_func.hpp" #include "../vehicle_base.h" #include "../company_func.h" #include "../date_func.h" #include "../autoreplace_base.h" #include "../roadstop_base.h" #include "../statusbar_gui.h" #include "../fileio_func.h" #include "../gamelog.h" #include "../string_func.h" #include "../fios.h" #include "../error.h" #include "table/strings.h" #include "saveload_internal.h" #include "saveload_filter.h" /* * Previous savegame versions, the trunk revision where they were * introduced and the released version that had that particular * savegame version. * Up to savegame version 18 there is a minor version as well. * * 1.0 0.1.x, 0.2.x * 2.0 0.3.0 * 2.1 0.3.1, 0.3.2 * 3.x lost * 4.0 1 * 4.1 122 0.3.3, 0.3.4 * 4.2 1222 0.3.5 * 4.3 1417 * 4.4 1426 * 5.0 1429 * 5.1 1440 * 5.2 1525 0.3.6 * 6.0 1721 * 6.1 1768 * 7.0 1770 * 8.0 1786 * 9.0 1909 * 10.0 2030 * 11.0 2033 * 11.1 2041 * 12.1 2046 * 13.1 2080 0.4.0, 0.4.0.1 * 14.0 2441 * 15.0 2499 * 16.0 2817 * 16.1 3155 * 17.0 3212 * 17.1 3218 * 18 3227 * 19 3396 * 20 3403 * 21 3472 0.4.x * 22 3726 * 23 3915 * 24 4150 * 25 4259 * 26 4466 * 27 4757 * 28 4987 * 29 5070 * 30 5946 * 31 5999 * 32 6001 * 33 6440 * 34 6455 * 35 6602 * 36 6624 * 37 7182 * 38 7195 * 39 7269 * 40 7326 * 41 7348 0.5.x * 42 7573 * 43 7642 * 44 8144 * 45 8501 * 46 8705 * 47 8735 * 48 8935 * 49 8969 * 50 8973 * 51 8978 * 52 9066 * 53 9316 * 54 9613 * 55 9638 * 56 9667 * 57 9691 * 58 9762 * 59 9779 * 60 9874 * 61 9892 * 62 9905 * 63 9956 * 64 10006 * 65 10210 * 66 10211 * 67 10236 * 68 10266 * 69 10319 * 70 10541 * 71 10567 * 72 10601 * 73 10903 * 74 11030 * 75 11107 * 76 11139 * 77 11172 * 78 11176 * 79 11188 * 80 11228 * 81 11244 * 82 11410 * 83 11589 * 84 11822 * 85 11874 * 86 12042 * 87 12129 * 88 12134 * 89 12160 * 90 12293 * 91 12347 * 92 12381 0.6.x * 93 12648 * 94 12816 * 95 12924 * 96 13226 * 97 13256 * 98 13375 * 99 13838 * 100 13952 * 101 14233 * 102 14332 * 103 14598 * 104 14735 * 105 14803 * 106 14919 * 107 15027 * 108 15045 * 109 15075 * 110 15148 * 111 15190 * 112 15290 * 113 15340 * 114 15601 * 115 15695 * 116 15893 0.7.x * 117 16037 * 118 16129 * 119 16242 * 120 16439 * 121 16694 * 122 16855 * 123 16909 * 124 16993 * 125 17113 * 126 17433 * 127 17439 * 128 18281 * 129 18292 * 130 18404 * 131 18481 * 132 18522 * 133 18674 * 134 18703 * 135 18719 * 136 18764 * 137 18912 * 138 18942 1.0.x * 139 19346 * 140 19382 * 141 19799 * 142 20003 * 143 20048 * 144 20334 * 145 20376 * 146 20446 * 147 20621 * 148 20659 * 149 20832 * 150 20857 * 151 20918 * 152 21171 * 153 21263 * 154 21426 * 155 21453 * 156 21728 * 157 21862 * 158 21933 * 159 21962 * 160 21974 1.1.x * 161 22567 * 162 22713 * 163 22767 * 164 23290 * 165 23304 * 166 23415 * 167 23504 * 168 23637 * 169 23816 * 170 23826 * 171 23835 * 172 23947 * 173 23967 1.2.0-RC1 * 174 23973 1.2.x * 175 24136 * 176 24446 * 177 24619 * 178 24789 * 179 24810 * 180 24998 1.3.x */ extern const uint16 SAVEGAME_VERSION = 180; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading uint32 _ttdp_version; ///< version of TTDP savegame (if applicable) uint16 _sl_version; ///< the major savegame version identifier byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! char _savegame_format[8]; ///< how to compress savegames bool _do_autosave; ///< are we doing an autosave at the moment? /** What are we currently doing? */ enum SaveLoadAction { SLA_LOAD, ///< loading SLA_SAVE, ///< saving SLA_PTRS, ///< fixing pointers SLA_NULL, ///< null all pointers (on loading error) SLA_LOAD_CHECK, ///< partial loading into #_load_check_data }; enum NeedLength { NL_NONE = 0, ///< not working in NeedLength mode NL_WANTLENGTH = 1, ///< writing length and data NL_CALCLENGTH = 2, ///< need to calculate the length }; /** Save in chunks of 128 KiB. */ static const size_t MEMORY_CHUNK_SIZE = 128 * 1024; /** A buffer for reading (and buffering) savegame data. */ struct ReadBuffer { byte buf[MEMORY_CHUNK_SIZE]; ///< Buffer we're going to read from. byte *bufp; ///< Location we're at reading the buffer. byte *bufe; ///< End of the buffer we can read from. LoadFilter *reader; ///< The filter used to actually read. size_t read; ///< The amount of read bytes so far from the filter. /** * Initialise our variables. * @param reader The filter to actually read data. */ ReadBuffer(LoadFilter *reader) : bufp(NULL), bufe(NULL), reader(reader), read(0) { } inline byte ReadByte() { if (this->bufp == this->bufe) { size_t len = this->reader->Read(this->buf, lengthof(this->buf)); if (len == 0) SlErrorCorrupt("Unexpected end of chunk"); this->read += len; this->bufp = this->buf; this->bufe = this->buf + len; } return *this->bufp++; } /** * Get the size of the memory dump made so far. * @return The size. */ size_t GetSize() const { return this->read - (this->bufe - this->bufp); } }; /** Container for dumping the savegame (quickly) to memory. */ struct MemoryDumper { AutoFreeSmallVector blocks; ///< Buffer with blocks of allocated memory. byte *buf; ///< Buffer we're going to write to. byte *bufe; ///< End of the buffer we write to. /** Initialise our variables. */ MemoryDumper() : buf(NULL), bufe(NULL) { } /** * Write a single byte into the dumper. * @param b The byte to write. */ inline void WriteByte(byte b) { /* Are we at the end of this chunk? */ if (this->buf == this->bufe) { this->buf = CallocT(MEMORY_CHUNK_SIZE); *this->blocks.Append() = this->buf; this->bufe = this->buf + MEMORY_CHUNK_SIZE; } *this->buf++ = b; } /** * Flush this dumper into a writer. * @param writer The filter we want to use. */ void Flush(SaveFilter *writer) { uint i = 0; size_t t = this->GetSize(); while (t > 0) { size_t to_write = min(MEMORY_CHUNK_SIZE, t); writer->Write(this->blocks[i++], to_write); t -= to_write; } writer->Finish(); } /** * Get the size of the memory dump made so far. * @return The size. */ size_t GetSize() const { return this->blocks.Length() * MEMORY_CHUNK_SIZE - (this->bufe - this->buf); } }; /** The saveload struct, containing reader-writer functions, buffer, version, etc. */ struct SaveLoadParams { SaveLoadAction action; ///< are we doing a save or a load atm. NeedLength need_length; ///< working in NeedLength (Autolength) mode? byte block_mode; ///< ??? bool error; ///< did an error occur or not size_t obj_len; ///< the length of the current object we are busy with int array_index, last_array_index; ///< in the case of an array, the current and last positions MemoryDumper *dumper; ///< Memory dumper to write the savegame to. SaveFilter *sf; ///< Filter to write the savegame to. ReadBuffer *reader; ///< Savegame reading buffer. LoadFilter *lf; ///< Filter to read the savegame from. StringID error_str; ///< the translatable error message to show char *extra_msg; ///< the error message byte ff_state; ///< The state of fast-forward when saving started. bool saveinprogress; ///< Whether there is currently a save in progress. }; static SaveLoadParams _sl; ///< Parameters used for/at saveload. /* these define the chunks */ extern const ChunkHandler _gamelog_chunk_handlers[]; extern const ChunkHandler _map_chunk_handlers[]; extern const ChunkHandler _misc_chunk_handlers[]; extern const ChunkHandler _name_chunk_handlers[]; extern const ChunkHandler _cheat_chunk_handlers[] ; extern const ChunkHandler _setting_chunk_handlers[]; extern const ChunkHandler _company_chunk_handlers[]; extern const ChunkHandler _engine_chunk_handlers[]; extern const ChunkHandler _veh_chunk_handlers[]; extern const ChunkHandler _waypoint_chunk_handlers[]; extern const ChunkHandler _depot_chunk_handlers[]; extern const ChunkHandler _order_chunk_handlers[]; extern const ChunkHandler _town_chunk_handlers[]; extern const ChunkHandler _sign_chunk_handlers[]; extern const ChunkHandler _station_chunk_handlers[]; extern const ChunkHandler _industry_chunk_handlers[]; extern const ChunkHandler _economy_chunk_handlers[]; extern const ChunkHandler _subsidy_chunk_handlers[]; extern const ChunkHandler _cargomonitor_chunk_handlers[]; extern const ChunkHandler _goal_chunk_handlers[]; extern const ChunkHandler _ai_chunk_handlers[]; extern const ChunkHandler _game_chunk_handlers[]; extern const ChunkHandler _animated_tile_chunk_handlers[]; extern const ChunkHandler _newgrf_chunk_handlers[]; extern const ChunkHandler _group_chunk_handlers[]; extern const ChunkHandler _cargopacket_chunk_handlers[]; extern const ChunkHandler _autoreplace_chunk_handlers[]; extern const ChunkHandler _labelmaps_chunk_handlers[]; extern const ChunkHandler _airport_chunk_handlers[]; extern const ChunkHandler _object_chunk_handlers[]; extern const ChunkHandler _persistent_storage_chunk_handlers[]; /** Array of all chunks in a savegame, \c NULL terminated. */ static const ChunkHandler * const _chunk_handlers[] = { _gamelog_chunk_handlers, _map_chunk_handlers, _misc_chunk_handlers, _name_chunk_handlers, _cheat_chunk_handlers, _setting_chunk_handlers, _veh_chunk_handlers, _waypoint_chunk_handlers, _depot_chunk_handlers, _order_chunk_handlers, _industry_chunk_handlers, _economy_chunk_handlers, _subsidy_chunk_handlers, _cargomonitor_chunk_handlers, _goal_chunk_handlers, _engine_chunk_handlers, _town_chunk_handlers, _sign_chunk_handlers, _station_chunk_handlers, _company_chunk_handlers, _ai_chunk_handlers, _game_chunk_handlers, _animated_tile_chunk_handlers, _newgrf_chunk_handlers, _group_chunk_handlers, _cargopacket_chunk_handlers, _autoreplace_chunk_handlers, _labelmaps_chunk_handlers, _airport_chunk_handlers, _object_chunk_handlers, _persistent_storage_chunk_handlers, NULL, }; /** * Iterate over all chunk handlers. * @param ch the chunk handler iterator */ #define FOR_ALL_CHUNK_HANDLERS(ch) \ for (const ChunkHandler * const *chsc = _chunk_handlers; *chsc != NULL; chsc++) \ for (const ChunkHandler *ch = *chsc; ch != NULL; ch = (ch->flags & CH_LAST) ? NULL : ch + 1) /** Null all pointers (convert index -> NULL) */ static void SlNullPointers() { _sl.action = SLA_NULL; /* We don't want any savegame conversion code to run * during NULLing; especially those that try to get * pointers from other pools. */ _sl_version = SAVEGAME_VERSION; DEBUG(sl, 1, "Nulling pointers"); FOR_ALL_CHUNK_HANDLERS(ch) { if (ch->ptrs_proc != NULL) { DEBUG(sl, 2, "Nulling pointers for %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id); ch->ptrs_proc(); } } DEBUG(sl, 1, "All pointers nulled"); assert(_sl.action == SLA_NULL); } /** * Error handler. Sets everything up to show an error message and to clean * up the mess of a partial savegame load. * @param string The translatable error message to show. * @param extra_msg An extra error message coming from one of the APIs. * @note This function does never return as it throws an exception to * break out of all the saveload code. */ void NORETURN SlError(StringID string, const char *extra_msg) { /* Distinguish between loading into _load_check_data vs. normal save/load. */ if (_sl.action == SLA_LOAD_CHECK) { _load_check_data.error = string; free(_load_check_data.error_data); _load_check_data.error_data = (extra_msg == NULL) ? NULL : strdup(extra_msg); } else { _sl.error_str = string; free(_sl.extra_msg); _sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg); } /* We have to NULL all pointers here; we might be in a state where * the pointers are actually filled with indices, which means that * when we access them during cleaning the pool dereferences of * those indices will be made with segmentation faults as result. */ if (_sl.action == SLA_LOAD || _sl.action == SLA_PTRS) SlNullPointers(); throw std::exception(); } /** * Error handler for corrupt savegames. Sets everything up to show the * error message and to clean up the mess of a partial savegame load. * @param msg Location the corruption has been spotted. * @note This function does never return as it throws an exception to * break out of all the saveload code. */ void NORETURN SlErrorCorrupt(const char *msg) { SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, msg); } typedef void (*AsyncSaveFinishProc)(); ///< Callback for when the savegame loading is finished. static AsyncSaveFinishProc _async_save_finish = NULL; ///< Callback to call when the savegame loading is finished. static ThreadObject *_save_thread; ///< The thread we're using to compress and write a savegame /** * Called by save thread to tell we finished saving. * @param proc The callback to call when saving is done. */ static void SetAsyncSaveFinish(AsyncSaveFinishProc proc) { if (_exit_game) return; while (_async_save_finish != NULL) CSleep(10); _async_save_finish = proc; } /** * Handle async save finishes. */ void ProcessAsyncSaveFinish() { if (_async_save_finish == NULL) return; _async_save_finish(); _async_save_finish = NULL; if (_save_thread != NULL) { _save_thread->Join(); delete _save_thread; _save_thread = NULL; } } /** * Wrapper for reading a byte from the buffer. * @return The read byte. */ byte SlReadByte() { return _sl.reader->ReadByte(); } /** * Wrapper for writing a byte to the dumper. * @param b The byte to write. */ void SlWriteByte(byte b) { _sl.dumper->WriteByte(b); } static inline int SlReadUint16() { int x = SlReadByte() << 8; return x | SlReadByte(); } static inline uint32 SlReadUint32() { uint32 x = SlReadUint16() << 16; return x | SlReadUint16(); } static inline uint64 SlReadUint64() { uint32 x = SlReadUint32(); uint32 y = SlReadUint32(); return (uint64)x << 32 | y; } static inline void SlWriteUint16(uint16 v) { SlWriteByte(GB(v, 8, 8)); SlWriteByte(GB(v, 0, 8)); } static inline void SlWriteUint32(uint32 v) { SlWriteUint16(GB(v, 16, 16)); SlWriteUint16(GB(v, 0, 16)); } static inline void SlWriteUint64(uint64 x) { SlWriteUint32((uint32)(x >> 32)); SlWriteUint32((uint32)x); } /** * Read in bytes from the file/data structure but don't do * anything with them, discarding them in effect * @param length The amount of bytes that is being treated this way */ static inline void SlSkipBytes(size_t length) { for (; length != 0; length--) SlReadByte(); } /** * Read in the header descriptor of an object or an array. * If the highest bit is set (7), then the index is bigger than 127 * elements, so use the next byte to read in the real value. * The actual value is then both bytes added with the first shifted * 8 bits to the left, and dropping the highest bit (which only indicated a big index). * x = ((x & 0x7F) << 8) + SlReadByte(); * @return Return the value of the index */ static uint SlReadSimpleGamma() { uint i = SlReadByte(); if (HasBit(i, 7)) { i &= ~0x80; if (HasBit(i, 6)) { i &= ~0x40; if (HasBit(i, 5)) { i &= ~0x20; if (HasBit(i, 4)) { SlErrorCorrupt("Unsupported gamma"); } i = (i << 8) | SlReadByte(); } i = (i << 8) | SlReadByte(); } i = (i << 8) | SlReadByte(); } return i; } /** * Write the header descriptor of an object or an array. * If the element is bigger than 127, use 2 bytes for saving * and use the highest byte of the first written one as a notice * that the length consists of 2 bytes, etc.. like this: * 0xxxxxxx * 10xxxxxx xxxxxxxx * 110xxxxx xxxxxxxx xxxxxxxx * 1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx * @param i Index being written */ static void SlWriteSimpleGamma(size_t i) { if (i >= (1 << 7)) { if (i >= (1 << 14)) { if (i >= (1 << 21)) { assert(i < (1 << 28)); SlWriteByte((byte)(0xE0 | (i >> 24))); SlWriteByte((byte)(i >> 16)); } else { SlWriteByte((byte)(0xC0 | (i >> 16))); } SlWriteByte((byte)(i >> 8)); } else { SlWriteByte((byte)(0x80 | (i >> 8))); } } SlWriteByte((byte)i); } /** Return how many bytes used to encode a gamma value */ static inline uint SlGetGammaLength(size_t i) { return 1 + (i >= (1 << 7)) + (i >= (1 << 14)) + (i >= (1 << 21)); } static inline uint SlReadSparseIndex() { return SlReadSimpleGamma(); } static inline void SlWriteSparseIndex(uint index) { SlWriteSimpleGamma(index); } static inline uint SlReadArrayLength() { return SlReadSimpleGamma(); } static inline void SlWriteArrayLength(size_t length) { SlWriteSimpleGamma(length); } static inline uint SlGetArrayLength(size_t length) { return SlGetGammaLength(length); } /** * Return the size in bytes of a certain type of normal/atomic variable * as it appears in memory. See VarTypes * @param conv VarType type of variable that is used for calculating the size * @return Return the size of this type in bytes */ static inline uint SlCalcConvMemLen(VarType conv) { static const byte conv_mem_size[] = {1, 1, 1, 2, 2, 4, 4, 8, 8, 0}; byte length = GB(conv, 4, 4); switch (length << 4) { case SLE_VAR_STRB: case SLE_VAR_STRBQ: case SLE_VAR_STR: case SLE_VAR_STRQ: return SlReadArrayLength(); default: assert(length < lengthof(conv_mem_size)); return conv_mem_size[length]; } } /** * Return the size in bytes of a certain type of normal/atomic variable * as it appears in a saved game. See VarTypes * @param conv VarType type of variable that is used for calculating the size * @return Return the size of this type in bytes */ static inline byte SlCalcConvFileLen(VarType conv) { static const byte conv_file_size[] = {1, 1, 2, 2, 4, 4, 8, 8, 2}; byte length = GB(conv, 0, 4); assert(length < lengthof(conv_file_size)); return conv_file_size[length]; } /** Return the size in bytes of a reference (pointer) */ static inline size_t SlCalcRefLen() { return IsSavegameVersionBefore(69) ? 2 : 4; } void SlSetArrayIndex(uint index) { _sl.need_length = NL_WANTLENGTH; _sl.array_index = index; } static size_t _next_offs; /** * Iterate through the elements of an array and read the whole thing * @return The index of the object, or -1 if we have reached the end of current block */ int SlIterateArray() { int index; /* After reading in the whole array inside the loop * we must have read in all the data, so we must be at end of current block. */ if (_next_offs != 0 && _sl.reader->GetSize() != _next_offs) SlErrorCorrupt("Invalid chunk size"); for (;;) { uint length = SlReadArrayLength(); if (length == 0) { _next_offs = 0; return -1; } _sl.obj_len = --length; _next_offs = _sl.reader->GetSize() + length; switch (_sl.block_mode) { case CH_SPARSE_ARRAY: index = (int)SlReadSparseIndex(); break; case CH_ARRAY: index = _sl.array_index++; break; default: DEBUG(sl, 0, "SlIterateArray error"); return -1; // error } if (length != 0) return index; } } /** * Skip an array or sparse array */ void SlSkipArray() { while (SlIterateArray() != -1) { SlSkipBytes(_next_offs - _sl.reader->GetSize()); } } /** * Sets the length of either a RIFF object or the number of items in an array. * This lets us load an object or an array of arbitrary size * @param length The length of the sought object/array */ void SlSetLength(size_t length) { assert(_sl.action == SLA_SAVE); switch (_sl.need_length) { case NL_WANTLENGTH: _sl.need_length = NL_NONE; switch (_sl.block_mode) { case CH_RIFF: /* Ugly encoding of >16M RIFF chunks * The lower 24 bits are normal * The uppermost 4 bits are bits 24:27 */ assert(length < (1 << 28)); SlWriteUint32((uint32)((length & 0xFFFFFF) | ((length >> 24) << 28))); break; case CH_ARRAY: assert(_sl.last_array_index <= _sl.array_index); while (++_sl.last_array_index <= _sl.array_index) { SlWriteArrayLength(1); } SlWriteArrayLength(length + 1); break; case CH_SPARSE_ARRAY: SlWriteArrayLength(length + 1 + SlGetArrayLength(_sl.array_index)); // Also include length of sparse index. SlWriteSparseIndex(_sl.array_index); break; default: NOT_REACHED(); } break; case NL_CALCLENGTH: _sl.obj_len += (int)length; break; default: NOT_REACHED(); } } /** * Save/Load bytes. These do not need to be converted to Little/Big Endian * so directly write them or read them to/from file * @param ptr The source or destination of the object being manipulated * @param length number of bytes this fast CopyBytes lasts */ static void SlCopyBytes(void *ptr, size_t length) { byte *p = (byte *)ptr; switch (_sl.action) { case SLA_LOAD_CHECK: case SLA_LOAD: for (; length != 0; length--) *p++ = SlReadByte(); break; case SLA_SAVE: for (; length != 0; length--) SlWriteByte(*p++); break; default: NOT_REACHED(); } } /** Get the length of the current object */ size_t SlGetFieldLength() { return _sl.obj_len; } /** * Return a signed-long version of the value of a setting * @param ptr pointer to the variable * @param conv type of variable, can be a non-clean * type, eg one with other flags because it is parsed * @return returns the value of the pointer-setting */ int64 ReadValue(const void *ptr, VarType conv) { switch (GetVarMemType(conv)) { case SLE_VAR_BL: return (*(const bool *)ptr != 0); case SLE_VAR_I8: return *(const int8 *)ptr; case SLE_VAR_U8: return *(const byte *)ptr; case SLE_VAR_I16: return *(const int16 *)ptr; case SLE_VAR_U16: return *(const uint16*)ptr; case SLE_VAR_I32: return *(const int32 *)ptr; case SLE_VAR_U32: return *(const uint32*)ptr; case SLE_VAR_I64: return *(const int64 *)ptr; case SLE_VAR_U64: return *(const uint64*)ptr; case SLE_VAR_NULL:return 0; default: NOT_REACHED(); } } /** * Write the value of a setting * @param ptr pointer to the variable * @param conv type of variable, can be a non-clean type, eg * with other flags. It is parsed upon read * @param val the new value being given to the variable */ void WriteValue(void *ptr, VarType conv, int64 val) { switch (GetVarMemType(conv)) { case SLE_VAR_BL: *(bool *)ptr = (val != 0); break; case SLE_VAR_I8: *(int8 *)ptr = val; break; case SLE_VAR_U8: *(byte *)ptr = val; break; case SLE_VAR_I16: *(int16 *)ptr = val; break; case SLE_VAR_U16: *(uint16*)ptr = val; break; case SLE_VAR_I32: *(int32 *)ptr = val; break; case SLE_VAR_U32: *(uint32*)ptr = val; break; case SLE_VAR_I64: *(int64 *)ptr = val; break; case SLE_VAR_U64: *(uint64*)ptr = val; break; case SLE_VAR_NAME: *(char**)ptr = CopyFromOldName(val); break; case SLE_VAR_NULL: break; default: NOT_REACHED(); } } /** * Handle all conversion and typechecking of variables here. * In the case of saving, read in the actual value from the struct * and then write them to file, endian safely. Loading a value * goes exactly the opposite way * @param ptr The object being filled/read * @param conv VarType type of the current element of the struct */ static void SlSaveLoadConv(void *ptr, VarType conv) { switch (_sl.action) { case SLA_SAVE: { int64 x = ReadValue(ptr, conv); /* Write the value to the file and check if its value is in the desired range */ switch (GetVarFileType(conv)) { case SLE_FILE_I8: assert(x >= -128 && x <= 127); SlWriteByte(x);break; case SLE_FILE_U8: assert(x >= 0 && x <= 255); SlWriteByte(x);break; case SLE_FILE_I16:assert(x >= -32768 && x <= 32767); SlWriteUint16(x);break; case SLE_FILE_STRINGID: case SLE_FILE_U16:assert(x >= 0 && x <= 65535); SlWriteUint16(x);break; case SLE_FILE_I32: case SLE_FILE_U32: SlWriteUint32((uint32)x);break; case SLE_FILE_I64: case SLE_FILE_U64: SlWriteUint64(x);break; default: NOT_REACHED(); } break; } case SLA_LOAD_CHECK: case SLA_LOAD: { int64 x; /* Read a value from the file */ switch (GetVarFileType(conv)) { case SLE_FILE_I8: x = (int8 )SlReadByte(); break; case SLE_FILE_U8: x = (byte )SlReadByte(); break; case SLE_FILE_I16: x = (int16 )SlReadUint16(); break; case SLE_FILE_U16: x = (uint16)SlReadUint16(); break; case SLE_FILE_I32: x = (int32 )SlReadUint32(); break; case SLE_FILE_U32: x = (uint32)SlReadUint32(); break; case SLE_FILE_I64: x = (int64 )SlReadUint64(); break; case SLE_FILE_U64: x = (uint64)SlReadUint64(); break; case SLE_FILE_STRINGID: x = RemapOldStringID((uint16)SlReadUint16()); break; default: NOT_REACHED(); } /* Write The value to the struct. These ARE endian safe. */ WriteValue(ptr, conv, x); break; } case SLA_PTRS: break; case SLA_NULL: break; default: NOT_REACHED(); } } /** * Calculate the net length of a string. This is in almost all cases * just strlen(), but if the string is not properly terminated, we'll * resort to the maximum length of the buffer. * @param ptr pointer to the stringbuffer * @param length maximum length of the string (buffer). If -1 we don't care * about a maximum length, but take string length as it is. * @return return the net length of the string */ static inline size_t SlCalcNetStringLen(const char *ptr, size_t length) { if (ptr == NULL) return 0; return min(strlen(ptr), length - 1); } /** * Calculate the gross length of the string that it * will occupy in the savegame. This includes the real length, returned * by SlCalcNetStringLen and the length that the index will occupy. * @param ptr pointer to the stringbuffer * @param length maximum length of the string (buffer size, etc.) * @param conv type of data been used * @return return the gross length of the string */ static inline size_t SlCalcStringLen(const void *ptr, size_t length, VarType conv) { size_t len; const char *str; switch (GetVarMemType(conv)) { default: NOT_REACHED(); case SLE_VAR_STR: case SLE_VAR_STRQ: str = *(const char * const *)ptr; len = SIZE_MAX; break; case SLE_VAR_STRB: case SLE_VAR_STRBQ: str = (const char *)ptr; len = length; break; } len = SlCalcNetStringLen(str, len); return len + SlGetArrayLength(len); // also include the length of the index } /** * Save/Load a string. * @param ptr the string being manipulated * @param length of the string (full length) * @param conv must be SLE_FILE_STRING */ static void SlString(void *ptr, size_t length, VarType conv) { switch (_sl.action) { case SLA_SAVE: { size_t len; switch (GetVarMemType(conv)) { default: NOT_REACHED(); case SLE_VAR_STRB: case SLE_VAR_STRBQ: len = SlCalcNetStringLen((char *)ptr, length); break; case SLE_VAR_STR: case SLE_VAR_STRQ: ptr = *(char **)ptr; len = SlCalcNetStringLen((char *)ptr, SIZE_MAX); break; } SlWriteArrayLength(len); SlCopyBytes(ptr, len); break; } case SLA_LOAD_CHECK: case SLA_LOAD: { size_t len = SlReadArrayLength(); switch (GetVarMemType(conv)) { default: NOT_REACHED(); case SLE_VAR_STRB: case SLE_VAR_STRBQ: if (len >= length) { DEBUG(sl, 1, "String length in savegame is bigger than buffer, truncating"); SlCopyBytes(ptr, length); SlSkipBytes(len - length); len = length - 1; } else { SlCopyBytes(ptr, len); } break; case SLE_VAR_STR: case SLE_VAR_STRQ: // Malloc'd string, free previous incarnation, and allocate free(*(char **)ptr); if (len == 0) { *(char **)ptr = NULL; return; } else { *(char **)ptr = MallocT(len + 1); // terminating '\0' ptr = *(char **)ptr; SlCopyBytes(ptr, len); } break; } ((char *)ptr)[len] = '\0'; // properly terminate the string StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK; if ((conv & SLF_ALLOW_CONTROL) != 0) { settings = settings | SVS_ALLOW_CONTROL_CODE; if (IsSavegameVersionBefore(169)) { str_fix_scc_encoded((char *)ptr, (char *)ptr + len); } } if ((conv & SLF_ALLOW_NEWLINE) != 0) { settings = settings | SVS_ALLOW_NEWLINE; } str_validate((char *)ptr, (char *)ptr + len, settings); break; } case SLA_PTRS: break; case SLA_NULL: break; default: NOT_REACHED(); } } /** * Return the size in bytes of a certain type of atomic array * @param length The length of the array counted in elements * @param conv VarType type of the variable that is used in calculating the size */ static inline size_t SlCalcArrayLen(size_t length, VarType conv) { return SlCalcConvFileLen(conv) * length; } /** * Save/Load an array. * @param array The array being manipulated * @param length The length of the array in elements * @param conv VarType type of the atomic array (int, byte, uint64, etc.) */ void SlArray(void *array, size_t length, VarType conv) { if (_sl.action == SLA_PTRS || _sl.action == SLA_NULL) return; /* Automatically calculate the length? */ if (_sl.need_length != NL_NONE) { SlSetLength(SlCalcArrayLen(length, conv)); /* Determine length only? */ if (_sl.need_length == NL_CALCLENGTH) return; } /* NOTICE - handle some buggy stuff, in really old versions everything was saved * as a byte-type. So detect this, and adjust array size accordingly */ if (_sl.action != SLA_SAVE && _sl_version == 0) { /* all arrays except difficulty settings */ if (conv == SLE_INT16 || conv == SLE_UINT16 || conv == SLE_STRINGID || conv == SLE_INT32 || conv == SLE_UINT32) { SlCopyBytes(array, length * SlCalcConvFileLen(conv)); return; } /* used for conversion of Money 32bit->64bit */ if (conv == (SLE_FILE_I32 | SLE_VAR_I64)) { for (uint i = 0; i < length; i++) { ((int64*)array)[i] = (int32)BSWAP32(SlReadUint32()); } return; } } /* If the size of elements is 1 byte both in file and memory, no special * conversion is needed, use specialized copy-copy function to speed up things */ if (conv == SLE_INT8 || conv == SLE_UINT8) { SlCopyBytes(array, length); } else { byte *a = (byte*)array; byte mem_size = SlCalcConvMemLen(conv); for (; length != 0; length --) { SlSaveLoadConv(a, conv); a += mem_size; // get size } } } /** * Pointers cannot be saved to a savegame, so this functions gets * the index of the item, and if not available, it hussles with * pointers (looks really bad :() * Remember that a NULL item has value 0, and all * indices have +1, so vehicle 0 is saved as index 1. * @param obj The object that we want to get the index of * @param rt SLRefType type of the object the index is being sought of * @return Return the pointer converted to an index of the type pointed to */ static size_t ReferenceToInt(const void *obj, SLRefType rt) { assert(_sl.action == SLA_SAVE); if (obj == NULL) return 0; switch (rt) { case REF_VEHICLE_OLD: // Old vehicles we save as new ones case REF_VEHICLE: return ((const Vehicle*)obj)->index + 1; case REF_STATION: return ((const Station*)obj)->index + 1; case REF_TOWN: return ((const Town*)obj)->index + 1; case REF_ORDER: return ((const Order*)obj)->index + 1; case REF_ROADSTOPS: return ((const RoadStop*)obj)->index + 1; case REF_ENGINE_RENEWS: return ((const EngineRenew*)obj)->index + 1; case REF_CARGO_PACKET: return ((const CargoPacket*)obj)->index + 1; case REF_ORDERLIST: return ((const OrderList*)obj)->index + 1; case REF_STORAGE: return ((const PersistentStorage*)obj)->index + 1; default: NOT_REACHED(); } } /** * Pointers cannot be loaded from a savegame, so this function * gets the index from the savegame and returns the appropriate * pointer from the already loaded base. * Remember that an index of 0 is a NULL pointer so all indices * are +1 so vehicle 0 is saved as 1. * @param index The index that is being converted to a pointer * @param rt SLRefType type of the object the pointer is sought of * @return Return the index converted to a pointer of any type */ static void *IntToReference(size_t index, SLRefType rt) { assert_compile(sizeof(size_t) <= sizeof(void *)); assert(_sl.action == SLA_PTRS); /* After version 4.3 REF_VEHICLE_OLD is saved as REF_VEHICLE, * and should be loaded like that */ if (rt == REF_VEHICLE_OLD && !IsSavegameVersionBefore(4, 4)) { rt = REF_VEHICLE; } /* No need to look up NULL pointers, just return immediately */ if (index == (rt == REF_VEHICLE_OLD ? 0xFFFF : 0)) return NULL; /* Correct index. Old vehicles were saved differently: * invalid vehicle was 0xFFFF, now we use 0x0000 for everything invalid. */ if (rt != REF_VEHICLE_OLD) index--; switch (rt) { case REF_ORDERLIST: if (OrderList::IsValidID(index)) return OrderList::Get(index); SlErrorCorrupt("Referencing invalid OrderList"); case REF_ORDER: if (Order::IsValidID(index)) return Order::Get(index); /* in old versions, invalid order was used to mark end of order list */ if (IsSavegameVersionBefore(5, 2)) return NULL; SlErrorCorrupt("Referencing invalid Order"); case REF_VEHICLE_OLD: case REF_VEHICLE: if (Vehicle::IsValidID(index)) return Vehicle::Get(index); SlErrorCorrupt("Referencing invalid Vehicle"); case REF_STATION: if (Station::IsValidID(index)) return Station::Get(index); SlErrorCorrupt("Referencing invalid Station"); case REF_TOWN: if (Town::IsValidID(index)) return Town::Get(index); SlErrorCorrupt("Referencing invalid Town"); case REF_ROADSTOPS: if (RoadStop::IsValidID(index)) return RoadStop::Get(index); SlErrorCorrupt("Referencing invalid RoadStop"); case REF_ENGINE_RENEWS: if (EngineRenew::IsValidID(index)) return EngineRenew::Get(index); SlErrorCorrupt("Referencing invalid EngineRenew"); case REF_CARGO_PACKET: if (CargoPacket::IsValidID(index)) return CargoPacket::Get(index); SlErrorCorrupt("Referencing invalid CargoPacket"); case REF_STORAGE: if (PersistentStorage::IsValidID(index)) return PersistentStorage::Get(index); SlErrorCorrupt("Referencing invalid PersistentStorage"); default: NOT_REACHED(); } } /** * Return the size in bytes of a list * @param list The std::list to find the size of */ static inline size_t SlCalcListLen(const void *list) { const std::list *l = (const std::list *) list; int type_size = IsSavegameVersionBefore(69) ? 2 : 4; /* Each entry is saved as type_size bytes, plus type_size bytes are used for the length * of the list */ return l->size() * type_size + type_size; } /** * Save/Load a list. * @param list The list being manipulated * @param conv SLRefType type of the list (Vehicle *, Station *, etc) */ static void SlList(void *list, SLRefType conv) { /* Automatically calculate the length? */ if (_sl.need_length != NL_NONE) { SlSetLength(SlCalcListLen(list)); /* Determine length only? */ if (_sl.need_length == NL_CALCLENGTH) return; } typedef std::list PtrList; PtrList *l = (PtrList *)list; switch (_sl.action) { case SLA_SAVE: { SlWriteUint32((uint32)l->size()); PtrList::iterator iter; for (iter = l->begin(); iter != l->end(); ++iter) { void *ptr = *iter; SlWriteUint32((uint32)ReferenceToInt(ptr, conv)); } break; } case SLA_LOAD_CHECK: case SLA_LOAD: { size_t length = IsSavegameVersionBefore(69) ? SlReadUint16() : SlReadUint32(); /* Load each reference and push to the end of the list */ for (size_t i = 0; i < length; i++) { size_t data = IsSavegameVersionBefore(69) ? SlReadUint16() : SlReadUint32(); l->push_back((void *)data); } break; } case SLA_PTRS: { PtrList temp = *l; l->clear(); PtrList::iterator iter; for (iter = temp.begin(); iter != temp.end(); ++iter) { void *ptr = IntToReference((size_t)*iter, conv); l->push_back(ptr); } break; } case SLA_NULL: l->clear(); break; default: NOT_REACHED(); } } /** Are we going to save this object or not? */ static inline bool SlIsObjectValidInSavegame(const SaveLoad *sld) { if (_sl_version < sld->version_from || _sl_version > sld->version_to) return false; if (sld->conv & SLF_NOT_IN_SAVE) return false; return true; } /** * Are we going to load this variable when loading a savegame or not? * @note If the variable is skipped it is skipped in the savegame * bytestream itself as well, so there is no need to skip it somewhere else */ static inline bool SlSkipVariableOnLoad(const SaveLoad *sld) { if ((sld->conv & SLF_NO_NETWORK_SYNC) && _sl.action != SLA_SAVE && _networking && !_network_server) { SlSkipBytes(SlCalcConvMemLen(sld->conv) * sld->length); return true; } return false; } /** * Calculate the size of an object. * @param object to be measured * @param sld The SaveLoad description of the object so we know how to manipulate it * @return size of given object */ size_t SlCalcObjLength(const void *object, const SaveLoad *sld) { size_t length = 0; /* Need to determine the length and write a length tag. */ for (; sld->cmd != SL_END; sld++) { length += SlCalcObjMemberLength(object, sld); } return length; } size_t SlCalcObjMemberLength(const void *object, const SaveLoad *sld) { assert(_sl.action == SLA_SAVE); switch (sld->cmd) { case SL_VAR: case SL_REF: case SL_ARR: case SL_STR: case SL_LST: /* CONDITIONAL saveload types depend on the savegame version */ if (!SlIsObjectValidInSavegame(sld)) break; switch (sld->cmd) { case SL_VAR: return SlCalcConvFileLen(sld->conv); case SL_REF: return SlCalcRefLen(); case SL_ARR: return SlCalcArrayLen(sld->length, sld->conv); case SL_STR: return SlCalcStringLen(GetVariableAddress(object, sld), sld->length, sld->conv); case SL_LST: return SlCalcListLen(GetVariableAddress(object, sld)); default: NOT_REACHED(); } break; case SL_WRITEBYTE: return 1; // a byte is logically of size 1 case SL_VEH_INCLUDE: return SlCalcObjLength(object, GetVehicleDescription(VEH_END)); case SL_ST_INCLUDE: return SlCalcObjLength(object, GetBaseStationDescription()); default: NOT_REACHED(); } return 0; } bool SlObjectMember(void *ptr, const SaveLoad *sld) { VarType conv = GB(sld->conv, 0, 8); switch (sld->cmd) { case SL_VAR: case SL_REF: case SL_ARR: case SL_STR: case SL_LST: /* CONDITIONAL saveload types depend on the savegame version */ if (!SlIsObjectValidInSavegame(sld)) return false; if (SlSkipVariableOnLoad(sld)) return false; switch (sld->cmd) { case SL_VAR: SlSaveLoadConv(ptr, conv); break; case SL_REF: // Reference variable, translate switch (_sl.action) { case SLA_SAVE: SlWriteUint32((uint32)ReferenceToInt(*(void **)ptr, (SLRefType)conv)); break; case SLA_LOAD_CHECK: case SLA_LOAD: *(size_t *)ptr = IsSavegameVersionBefore(69) ? SlReadUint16() : SlReadUint32(); break; case SLA_PTRS: *(void **)ptr = IntToReference(*(size_t *)ptr, (SLRefType)conv); break; case SLA_NULL: *(void **)ptr = NULL; break; default: NOT_REACHED(); } break; case SL_ARR: SlArray(ptr, sld->length, conv); break; case SL_STR: SlString(ptr, sld->length, sld->conv); break; case SL_LST: SlList(ptr, (SLRefType)conv); break; default: NOT_REACHED(); } break; /* SL_WRITEBYTE translates a value of a variable to another one upon * saving or loading. * XXX - variable renaming abuse * game_value: the value of the variable ingame is abused by sld->version_from * file_value: the value of the variable in the savegame is abused by sld->version_to */ case SL_WRITEBYTE: switch (_sl.action) { case SLA_SAVE: SlWriteByte(sld->version_to); break; case SLA_LOAD_CHECK: case SLA_LOAD: *(byte *)ptr = sld->version_from; break; case SLA_PTRS: break; case SLA_NULL: break; default: NOT_REACHED(); } break; /* SL_VEH_INCLUDE loads common code for vehicles */ case SL_VEH_INCLUDE: SlObject(ptr, GetVehicleDescription(VEH_END)); break; case SL_ST_INCLUDE: SlObject(ptr, GetBaseStationDescription()); break; default: NOT_REACHED(); } return true; } /** * Main SaveLoad function. * @param object The object that is being saved or loaded * @param sld The SaveLoad description of the object so we know how to manipulate it */ void SlObject(void *object, const SaveLoad *sld) { /* Automatically calculate the length? */ if (_sl.need_length != NL_NONE) { SlSetLength(SlCalcObjLength(object, sld)); if (_sl.need_length == NL_CALCLENGTH) return; } for (; sld->cmd != SL_END; sld++) { void *ptr = sld->global ? sld->address : GetVariableAddress(object, sld); SlObjectMember(ptr, sld); } } /** * Save or Load (a list of) global variables * @param sldg The global variable that is being loaded or saved */ void SlGlobList(const SaveLoadGlobVarList *sldg) { SlObject(NULL, (const SaveLoad*)sldg); } /** * Do something of which I have no idea what it is :P * @param proc The callback procedure that is called * @param arg The variable that will be used for the callback procedure */ void SlAutolength(AutolengthProc *proc, void *arg) { size_t offs; assert(_sl.action == SLA_SAVE); /* Tell it to calculate the length */ _sl.need_length = NL_CALCLENGTH; _sl.obj_len = 0; proc(arg); /* Setup length */ _sl.need_length = NL_WANTLENGTH; SlSetLength(_sl.obj_len); offs = _sl.dumper->GetSize() + _sl.obj_len; /* And write the stuff */ proc(arg); if (offs != _sl.dumper->GetSize()) SlErrorCorrupt("Invalid chunk size"); } /** * Load a chunk of data (eg vehicles, stations, etc.) * @param ch The chunkhandler that will be used for the operation */ static void SlLoadChunk(const ChunkHandler *ch) { byte m = SlReadByte(); size_t len; size_t endoffs; _sl.block_mode = m; _sl.obj_len = 0; switch (m) { case CH_ARRAY: _sl.array_index = 0; ch->load_proc(); break; case CH_SPARSE_ARRAY: ch->load_proc(); break; default: if ((m & 0xF) == CH_RIFF) { /* Read length */ len = (SlReadByte() << 16) | ((m >> 4) << 24); len += SlReadUint16(); _sl.obj_len = len; endoffs = _sl.reader->GetSize() + len; ch->load_proc(); if (_sl.reader->GetSize() != endoffs) SlErrorCorrupt("Invalid chunk size"); } else { SlErrorCorrupt("Invalid chunk type"); } break; } } /** * Load a chunk of data for checking savegames. * If the chunkhandler is NULL, the chunk is skipped. * @param ch The chunkhandler that will be used for the operation */ static void SlLoadCheckChunk(const ChunkHandler *ch) { byte m = SlReadByte(); size_t len; size_t endoffs; _sl.block_mode = m; _sl.obj_len = 0; switch (m) { case CH_ARRAY: _sl.array_index = 0; if (ch->load_check_proc) { ch->load_check_proc(); } else { SlSkipArray(); } break; case CH_SPARSE_ARRAY: if (ch->load_check_proc) { ch->load_check_proc(); } else { SlSkipArray(); } break; default: if ((m & 0xF) == CH_RIFF) { /* Read length */ len = (SlReadByte() << 16) | ((m >> 4) << 24); len += SlReadUint16(); _sl.obj_len = len; endoffs = _sl.reader->GetSize() + len; if (ch->load_check_proc) { ch->load_check_proc(); } else { SlSkipBytes(len); } if (_sl.reader->GetSize() != endoffs) SlErrorCorrupt("Invalid chunk size"); } else { SlErrorCorrupt("Invalid chunk type"); } break; } } /** * Stub Chunk handlers to only calculate length and do nothing else. * The intended chunk handler that should be called. */ static ChunkSaveLoadProc *_stub_save_proc; /** * Stub Chunk handlers to only calculate length and do nothing else. * Actually call the intended chunk handler. * @param arg ignored parameter. */ static inline void SlStubSaveProc2(void *arg) { _stub_save_proc(); } /** * Stub Chunk handlers to only calculate length and do nothing else. * Call SlAutoLenth with our stub save proc that will eventually * call the intended chunk handler. */ static void SlStubSaveProc() { SlAutolength(SlStubSaveProc2, NULL); } /** * Save a chunk of data (eg. vehicles, stations, etc.). Each chunk is * prefixed by an ID identifying it, followed by data, and terminator where appropriate * @param ch The chunkhandler that will be used for the operation */ static void SlSaveChunk(const ChunkHandler *ch) { ChunkSaveLoadProc *proc = ch->save_proc; /* Don't save any chunk information if there is no save handler. */ if (proc == NULL) return; SlWriteUint32(ch->id); DEBUG(sl, 2, "Saving chunk %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id); if (ch->flags & CH_AUTO_LENGTH) { /* Need to calculate the length. Solve that by calling SlAutoLength in the save_proc. */ _stub_save_proc = proc; proc = SlStubSaveProc; } _sl.block_mode = ch->flags & CH_TYPE_MASK; switch (ch->flags & CH_TYPE_MASK) { case CH_RIFF: _sl.need_length = NL_WANTLENGTH; proc(); break; case CH_ARRAY: _sl.last_array_index = 0; SlWriteByte(CH_ARRAY); proc(); SlWriteArrayLength(0); // Terminate arrays break; case CH_SPARSE_ARRAY: SlWriteByte(CH_SPARSE_ARRAY); proc(); SlWriteArrayLength(0); // Terminate arrays break; default: NOT_REACHED(); } } /** Save all chunks */ static void SlSaveChunks() { FOR_ALL_CHUNK_HANDLERS(ch) { SlSaveChunk(ch); } /* Terminator */ SlWriteUint32(0); } /** * Find the ChunkHandler that will be used for processing the found * chunk in the savegame or in memory * @param id the chunk in question * @return returns the appropriate chunkhandler */ static const ChunkHandler *SlFindChunkHandler(uint32 id) { FOR_ALL_CHUNK_HANDLERS(ch) if (ch->id == id) return ch; return NULL; } /** Load all chunks */ static void SlLoadChunks() { uint32 id; const ChunkHandler *ch; for (id = SlReadUint32(); id != 0; id = SlReadUint32()) { DEBUG(sl, 2, "Loading chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id); ch = SlFindChunkHandler(id); if (ch == NULL) SlErrorCorrupt("Unknown chunk type"); SlLoadChunk(ch); } } /** Load all chunks for savegame checking */ static void SlLoadCheckChunks() { uint32 id; const ChunkHandler *ch; for (id = SlReadUint32(); id != 0; id = SlReadUint32()) { DEBUG(sl, 2, "Loading chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id); ch = SlFindChunkHandler(id); if (ch == NULL) SlErrorCorrupt("Unknown chunk type"); SlLoadCheckChunk(ch); } } /** Fix all pointers (convert index -> pointer) */ static void SlFixPointers() { _sl.action = SLA_PTRS; DEBUG(sl, 1, "Fixing pointers"); FOR_ALL_CHUNK_HANDLERS(ch) { if (ch->ptrs_proc != NULL) { DEBUG(sl, 2, "Fixing pointers for %c%c%c%c", ch->id >> 24, ch->id >> 16, ch->id >> 8, ch->id); ch->ptrs_proc(); } } DEBUG(sl, 1, "All pointers fixed"); assert(_sl.action == SLA_PTRS); } /** Yes, simply reading from a file. */ struct FileReader : LoadFilter { FILE *file; ///< The file to read from. long begin; ///< The begin of the file. /** * Create the file reader, so it reads from a specific file. * @param file The file to read from. */ FileReader(FILE *file) : LoadFilter(NULL), file(file), begin(ftell(file)) { } /** Make sure everything is cleaned up. */ ~FileReader() { if (this->file != NULL) fclose(this->file); this->file = NULL; /* Make sure we don't double free. */ _sl.sf = NULL; } /* virtual */ size_t Read(byte *buf, size_t size) { /* We're in the process of shutting down, i.e. in "failure" mode. */ if (this->file == NULL) return 0; return fread(buf, 1, size, this->file); } /* virtual */ void Reset() { clearerr(this->file); fseek(this->file, this->begin, SEEK_SET); } }; /** Yes, simply writing to a file. */ struct FileWriter : SaveFilter { FILE *file; ///< The file to write to. /** * Create the file writer, so it writes to a specific file. * @param file The file to write to. */ FileWriter(FILE *file) : SaveFilter(NULL), file(file) { } /** Make sure everything is cleaned up. */ ~FileWriter() { this->Finish(); /* Make sure we don't double free. */ _sl.sf = NULL; } /* virtual */ void Write(byte *buf, size_t size) { /* We're in the process of shutting down, i.e. in "failure" mode. */ if (this->file == NULL) return; if (fwrite(buf, 1, size, this->file) != size) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE); } /* virtual */ void Finish() { if (this->file != NULL) fclose(this->file); this->file = NULL; } }; /******************************************* ********** START OF LZO CODE ************** *******************************************/ #ifdef WITH_LZO #include /** Buffer size for the LZO compressor */ static const uint LZO_BUFFER_SIZE = 8192; /** Filter using LZO compression. */ struct LZOLoadFilter : LoadFilter { /** * Initialise this filter. * @param chain The next filter in this chain. */ LZOLoadFilter(LoadFilter *chain) : LoadFilter(chain) { if (lzo_init() != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor"); } /* virtual */ size_t Read(byte *buf, size_t ssize) { assert(ssize >= LZO_BUFFER_SIZE); /* Buffer size is from the LZO docs plus the chunk header size. */ byte out[LZO_BUFFER_SIZE + LZO_BUFFER_SIZE / 16 + 64 + 3 + sizeof(uint32) * 2]; uint32 tmp[2]; uint32 size; lzo_uint len; /* Read header*/ if (this->chain->Read((byte*)tmp, sizeof(tmp)) != sizeof(tmp)) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE, "File read failed"); /* Check if size is bad */ ((uint32*)out)[0] = size = tmp[1]; if (_sl_version != 0) { tmp[0] = TO_BE32(tmp[0]); size = TO_BE32(size); } if (size >= sizeof(out)) SlErrorCorrupt("Inconsistent size"); /* Read block */ if (this->chain->Read(out + sizeof(uint32), size) != size) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); /* Verify checksum */ if (tmp[0] != lzo_adler32(0, out, size + sizeof(uint32))) SlErrorCorrupt("Bad checksum"); /* Decompress */ lzo1x_decompress_safe(out + sizeof(uint32) * 1, size, buf, &len, NULL); return len; } }; /** Filter using LZO compression. */ struct LZOSaveFilter : SaveFilter { /** * Initialise this filter. * @param chain The next filter in this chain. * @param compression_level The requested level of compression. */ LZOSaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain) { if (lzo_init() != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); } /* virtual */ void Write(byte *buf, size_t size) { const lzo_bytep in = buf; /* Buffer size is from the LZO docs plus the chunk header size. */ byte out[LZO_BUFFER_SIZE + LZO_BUFFER_SIZE / 16 + 64 + 3 + sizeof(uint32) * 2]; byte wrkmem[LZO1X_1_MEM_COMPRESS]; lzo_uint outlen; do { /* Compress up to LZO_BUFFER_SIZE bytes at once. */ lzo_uint len = size > LZO_BUFFER_SIZE ? LZO_BUFFER_SIZE : (lzo_uint)size; lzo1x_1_compress(in, len, out + sizeof(uint32) * 2, &outlen, wrkmem); ((uint32*)out)[1] = TO_BE32((uint32)outlen); ((uint32*)out)[0] = TO_BE32(lzo_adler32(0, out + sizeof(uint32), outlen + sizeof(uint32))); this->chain->Write(out, outlen + sizeof(uint32) * 2); /* Move to next data chunk. */ size -= len; in += len; } while (size > 0); } }; #endif /* WITH_LZO */ /********************************************* ******** START OF NOCOMP CODE (uncompressed)* *********************************************/ /** Filter without any compression. */ struct NoCompLoadFilter : LoadFilter { /** * Initialise this filter. * @param chain The next filter in this chain. */ NoCompLoadFilter(LoadFilter *chain) : LoadFilter(chain) { } /* virtual */ size_t Read(byte *buf, size_t size) { return this->chain->Read(buf, size); } }; /** Filter without any compression. */ struct NoCompSaveFilter : SaveFilter { /** * Initialise this filter. * @param chain The next filter in this chain. * @param compression_level The requested level of compression. */ NoCompSaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain) { } /* virtual */ void Write(byte *buf, size_t size) { this->chain->Write(buf, size); } }; /******************************************** ********** START OF ZLIB CODE ************** ********************************************/ #if defined(WITH_ZLIB) #include /** Filter using Zlib compression. */ struct ZlibLoadFilter : LoadFilter { z_stream z; ///< Stream state we are reading from. byte fread_buf[MEMORY_CHUNK_SIZE]; ///< Buffer for reading from the file. /** * Initialise this filter. * @param chain The next filter in this chain. */ ZlibLoadFilter(LoadFilter *chain) : LoadFilter(chain) { memset(&this->z, 0, sizeof(this->z)); if (inflateInit(&this->z) != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor"); } /** Clean everything up. */ ~ZlibLoadFilter() { inflateEnd(&this->z); } /* virtual */ size_t Read(byte *buf, size_t size) { this->z.next_out = buf; this->z.avail_out = (uint)size; do { /* read more bytes from the file? */ if (this->z.avail_in == 0) { this->z.next_in = this->fread_buf; this->z.avail_in = (uint)this->chain->Read(this->fread_buf, sizeof(this->fread_buf)); } /* inflate the data */ int r = inflate(&this->z, 0); if (r == Z_STREAM_END) break; if (r != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "inflate() failed"); } while (this->z.avail_out != 0); return size - this->z.avail_out; } }; /** Filter using Zlib compression. */ struct ZlibSaveFilter : SaveFilter { z_stream z; ///< Stream state we are writing to. /** * Initialise this filter. * @param chain The next filter in this chain. * @param compression_level The requested level of compression. */ ZlibSaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain) { memset(&this->z, 0, sizeof(this->z)); if (deflateInit(&this->z, compression_level) != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); } /** Clean up what we allocated. */ ~ZlibSaveFilter() { deflateEnd(&this->z); } /** * Helper loop for writing the data. * @param p The bytes to write. * @param len Amount of bytes to write. * @param mode Mode for deflate. */ void WriteLoop(byte *p, size_t len, int mode) { byte buf[MEMORY_CHUNK_SIZE]; // output buffer uint n; this->z.next_in = p; this->z.avail_in = (uInt)len; do { this->z.next_out = buf; this->z.avail_out = sizeof(buf); /** * For the poor next soul who sees many valgrind warnings of the * "Conditional jump or move depends on uninitialised value(s)" kind: * According to the author of zlib it is not a bug and it won't be fixed. * http://groups.google.com/group/comp.compression/browse_thread/thread/b154b8def8c2a3ef/cdf9b8729ce17ee2 * [Mark Adler, Feb 24 2004, 'zlib-1.2.1 valgrind warnings' in the newsgroup comp.compression] */ int r = deflate(&this->z, mode); /* bytes were emitted? */ if ((n = sizeof(buf) - this->z.avail_out) != 0) { this->chain->Write(buf, n); } if (r == Z_STREAM_END) break; if (r != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "zlib returned error code"); } while (this->z.avail_in || !this->z.avail_out); } /* virtual */ void Write(byte *buf, size_t size) { this->WriteLoop(buf, size, 0); } /* virtual */ void Finish() { this->WriteLoop(NULL, 0, Z_FINISH); this->chain->Finish(); } }; #endif /* WITH_ZLIB */ /******************************************** ********** START OF LZMA CODE ************** ********************************************/ #if defined(WITH_LZMA) #include /** * Have a copy of an initialised LZMA stream. We need this as it's * impossible to "re"-assign LZMA_STREAM_INIT to a variable in some * compilers, i.e. LZMA_STREAM_INIT can't be used to set something. * This var has to be used instead. */ static const lzma_stream _lzma_init = LZMA_STREAM_INIT; /** Filter without any compression. */ struct LZMALoadFilter : LoadFilter { lzma_stream lzma; ///< Stream state that we are reading from. byte fread_buf[MEMORY_CHUNK_SIZE]; ///< Buffer for reading from the file. /** * Initialise this filter. * @param chain The next filter in this chain. */ LZMALoadFilter(LoadFilter *chain) : LoadFilter(chain), lzma(_lzma_init) { /* Allow saves up to 256 MB uncompressed */ if (lzma_auto_decoder(&this->lzma, 1 << 28, 0) != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor"); } /** Clean everything up. */ ~LZMALoadFilter() { lzma_end(&this->lzma); } /* virtual */ size_t Read(byte *buf, size_t size) { this->lzma.next_out = buf; this->lzma.avail_out = size; do { /* read more bytes from the file? */ if (this->lzma.avail_in == 0) { this->lzma.next_in = this->fread_buf; this->lzma.avail_in = this->chain->Read(this->fread_buf, sizeof(this->fread_buf)); } /* inflate the data */ lzma_ret r = lzma_code(&this->lzma, LZMA_RUN); if (r == LZMA_STREAM_END) break; if (r != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "liblzma returned error code"); } while (this->lzma.avail_out != 0); return size - this->lzma.avail_out; } }; /** Filter using LZMA compression. */ struct LZMASaveFilter : SaveFilter { lzma_stream lzma; ///< Stream state that we are writing to. /** * Initialise this filter. * @param chain The next filter in this chain. * @param compression_level The requested level of compression. */ LZMASaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain), lzma(_lzma_init) { if (lzma_easy_encoder(&this->lzma, compression_level, LZMA_CHECK_CRC32) != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); } /** Clean up what we allocated. */ ~LZMASaveFilter() { lzma_end(&this->lzma); } /** * Helper loop for writing the data. * @param p The bytes to write. * @param len Amount of bytes to write. * @param action Action for lzma_code. */ void WriteLoop(byte *p, size_t len, lzma_action action) { byte buf[MEMORY_CHUNK_SIZE]; // output buffer size_t n; this->lzma.next_in = p; this->lzma.avail_in = len; do { this->lzma.next_out = buf; this->lzma.avail_out = sizeof(buf); lzma_ret r = lzma_code(&this->lzma, action); /* bytes were emitted? */ if ((n = sizeof(buf) - this->lzma.avail_out) != 0) { this->chain->Write(buf, n); } if (r == LZMA_STREAM_END) break; if (r != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "liblzma returned error code"); } while (this->lzma.avail_in || !this->lzma.avail_out); } /* virtual */ void Write(byte *buf, size_t size) { this->WriteLoop(buf, size, LZMA_RUN); } /* virtual */ void Finish() { this->WriteLoop(NULL, 0, LZMA_FINISH); this->chain->Finish(); } }; #endif /* WITH_LZMA */ /******************************************* ************* END OF CODE ***************** *******************************************/ /** The format for a reader/writer type of a savegame */ struct SaveLoadFormat { const char *name; ///< name of the compressor/decompressor (debug-only) uint32 tag; ///< the 4-letter tag by which it is identified in the savegame LoadFilter *(*init_load)(LoadFilter *chain); ///< Constructor for the load filter. SaveFilter *(*init_write)(SaveFilter *chain, byte compression); ///< Constructor for the save filter. byte min_compression; ///< the minimum compression level of this format byte default_compression; ///< the default compression level of this format byte max_compression; ///< the maximum compression level of this format }; /** The different saveload formats known/understood by OpenTTD. */ static const SaveLoadFormat _saveload_formats[] = { #if defined(WITH_LZO) /* Roughly 75% larger than zlib level 6 at only ~7% of the CPU usage. */ {"lzo", TO_BE32X('OTTD'), CreateLoadFilter, CreateSaveFilter, 0, 0, 0}, #else {"lzo", TO_BE32X('OTTD'), NULL, NULL, 0, 0, 0}, #endif /* Roughly 5 times larger at only 1% of the CPU usage over zlib level 6. */ {"none", TO_BE32X('OTTN'), CreateLoadFilter, CreateSaveFilter, 0, 0, 0}, #if defined(WITH_ZLIB) /* After level 6 the speed reduction is significant (1.5x to 2.5x slower per level), but the reduction in filesize is * fairly insignificant (~1% for each step). Lower levels become ~5-10% bigger by each level than level 6 while level * 1 is "only" 3 times as fast. Level 0 results in uncompressed savegames at about 8 times the cost of "none". */ {"zlib", TO_BE32X('OTTZ'), CreateLoadFilter, CreateSaveFilter, 0, 6, 9}, #else {"zlib", TO_BE32X('OTTZ'), NULL, NULL, 0, 0, 0}, #endif #if defined(WITH_LZMA) /* Level 2 compression is speed wise as fast as zlib level 6 compression (old default), but results in ~10% smaller saves. * Higher compression levels are possible, and might improve savegame size by up to 25%, but are also up to 10 times slower. * The next significant reduction in file size is at level 4, but that is already 4 times slower. Level 3 is primarily 50% * slower while not improving the filesize, while level 0 and 1 are faster, but don't reduce savegame size much. * It's OTTX and not e.g. OTTL because liblzma is part of xz-utils and .tar.xz is preferred over .tar.lzma. */ {"lzma", TO_BE32X('OTTX'), CreateLoadFilter, CreateSaveFilter, 0, 2, 9}, #else {"lzma", TO_BE32X('OTTX'), NULL, NULL, 0, 0, 0}, #endif }; /** * Return the savegameformat of the game. Whether it was created with ZLIB compression * uncompressed, or another type * @param s Name of the savegame format. If NULL it picks the first available one * @param compression_level Output for telling what compression level we want. * @return Pointer to SaveLoadFormat struct giving all characteristics of this type of savegame */ static const SaveLoadFormat *GetSavegameFormat(char *s, byte *compression_level) { const SaveLoadFormat *def = lastof(_saveload_formats); /* find default savegame format, the highest one with which files can be written */ while (!def->init_write) def--; if (!StrEmpty(s)) { /* Get the ":..." of the compression level out of the way */ char *complevel = strrchr(s, ':'); if (complevel != NULL) *complevel = '\0'; for (const SaveLoadFormat *slf = &_saveload_formats[0]; slf != endof(_saveload_formats); slf++) { if (slf->init_write != NULL && strcmp(s, slf->name) == 0) { *compression_level = slf->default_compression; if (complevel != NULL) { /* There is a compression level in the string. * First restore the : we removed to do proper name matching, * then move the the begin of the actual version. */ *complevel = ':'; complevel++; /* Get the version and determine whether all went fine. */ char *end; long level = strtol(complevel, &end, 10); if (end == complevel || level != Clamp(level, slf->min_compression, slf->max_compression)) { SetDParamStr(0, complevel); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL, WL_CRITICAL); } else { *compression_level = level; } } return slf; } } SetDParamStr(0, s); SetDParamStr(1, def->name); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM, WL_CRITICAL); /* Restore the string by adding the : back */ if (complevel != NULL) *complevel = ':'; } *compression_level = def->default_compression; return def; } /* actual loader/saver function */ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settings); extern bool AfterLoadGame(); extern bool LoadOldSaveGame(const char *file); /** * Clear/free saveload state. */ static inline void ClearSaveLoadState() { delete _sl.dumper; _sl.dumper = NULL; delete _sl.sf; _sl.sf = NULL; delete _sl.reader; _sl.reader = NULL; delete _sl.lf; _sl.lf = NULL; } /** * Update the gui accordingly when starting saving * and set locks on saveload. Also turn off fast-forward cause with that * saving takes Aaaaages */ static void SaveFileStart() { _sl.ff_state = _fast_forward; _fast_forward = 0; if (_cursor.sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE); InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SAVELOAD_START); _sl.saveinprogress = true; } /** Update the gui accordingly when saving is done and release locks on saveload. */ static void SaveFileDone() { if (_game_mode != GM_MENU) _fast_forward = _sl.ff_state; if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); InvalidateWindowData(WC_STATUS_BAR, 0, SBI_SAVELOAD_FINISH); _sl.saveinprogress = false; } /** Set the error message from outside of the actual loading/saving of the game (AfterLoadGame and friends) */ void SetSaveLoadError(StringID str) { _sl.error_str = str; } /** Get the string representation of the error message */ const char *GetSaveLoadErrorString() { SetDParam(0, _sl.error_str); SetDParamStr(1, _sl.extra_msg); static char err_str[512]; GetString(err_str, _sl.action == SLA_SAVE ? STR_ERROR_GAME_SAVE_FAILED : STR_ERROR_GAME_LOAD_FAILED, lastof(err_str)); return err_str; } /** Show a gui message when saving has failed */ static void SaveFileError() { SetDParamStr(0, GetSaveLoadErrorString()); ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_ERROR); SaveFileDone(); } /** * We have written the whole game into memory, _memory_savegame, now find * and appropriate compressor and start writing to file. */ static SaveOrLoadResult SaveFileToDisk(bool threaded) { try { byte compression; const SaveLoadFormat *fmt = GetSavegameFormat(_savegame_format, &compression); /* We have written our stuff to memory, now write it to file! */ uint32 hdr[2] = { fmt->tag, TO_BE32(SAVEGAME_VERSION << 16) }; _sl.sf->Write((byte*)hdr, sizeof(hdr)); _sl.sf = fmt->init_write(_sl.sf, compression); _sl.dumper->Flush(_sl.sf); ClearSaveLoadState(); if (threaded) SetAsyncSaveFinish(SaveFileDone); return SL_OK; } catch (...) { ClearSaveLoadState(); AsyncSaveFinishProc asfp = SaveFileDone; /* We don't want to shout when saving is just * cancelled due to a client disconnecting. */ if (_sl.error_str != STR_NETWORK_ERROR_LOSTCONNECTION) { /* Skip the "colour" character */ DEBUG(sl, 0, "%s", GetSaveLoadErrorString() + 3); asfp = SaveFileError; } if (threaded) { SetAsyncSaveFinish(asfp); } else { asfp(); } return SL_ERROR; } } /** Thread run function for saving the file to disk. */ static void SaveFileToDiskThread(void *arg) { SaveFileToDisk(true); } void WaitTillSaved() { if (_save_thread == NULL) return; _save_thread->Join(); delete _save_thread; _save_thread = NULL; /* Make sure every other state is handled properly as well. */ ProcessAsyncSaveFinish(); } /** * Actually perform the saving of the savegame. * General tactics is to first save the game to memory, then write it to file * using the writer, either in threaded mode if possible, or single-threaded. * @param writer The filter to write the savegame to. * @param threaded Whether to try to perform the saving asynchronously. * @return Return the result of the action. #SL_OK or #SL_ERROR */ static SaveOrLoadResult DoSave(SaveFilter *writer, bool threaded) { assert(!_sl.saveinprogress); _sl.dumper = new MemoryDumper(); _sl.sf = writer; _sl_version = SAVEGAME_VERSION; SaveViewportBeforeSaveGame(); SlSaveChunks(); SaveFileStart(); if (!threaded || !ThreadObject::New(&SaveFileToDiskThread, NULL, &_save_thread)) { if (threaded) DEBUG(sl, 1, "Cannot create savegame thread, reverting to single-threaded mode..."); SaveOrLoadResult result = SaveFileToDisk(false); SaveFileDone(); return result; } return SL_OK; } /** * Save the game using a (writer) filter. * @param writer The filter to write the savegame to. * @param threaded Whether to try to perform the saving asynchronously. * @return Return the result of the action. #SL_OK or #SL_ERROR */ SaveOrLoadResult SaveWithFilter(SaveFilter *writer, bool threaded) { try { _sl.action = SLA_SAVE; return DoSave(writer, threaded); } catch (...) { ClearSaveLoadState(); return SL_ERROR; } } /** * Actually perform the loading of a "non-old" savegame. * @param reader The filter to read the savegame from. * @param load_check Whether to perform the checking ("preview") or actually load the game. * @return Return the result of the action. #SL_OK or #SL_REINIT ("unload" the game) */ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) { _sl.lf = reader; if (load_check) { /* Clear previous check data */ _load_check_data.Clear(); /* Mark SL_LOAD_CHECK as supported for this savegame. */ _load_check_data.checkable = true; } uint32 hdr[2]; if (_sl.lf->Read((byte*)hdr, sizeof(hdr)) != sizeof(hdr)) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); /* see if we have any loader for this type. */ const SaveLoadFormat *fmt = _saveload_formats; for (;;) { /* No loader found, treat as version 0 and use LZO format */ if (fmt == endof(_saveload_formats)) { DEBUG(sl, 0, "Unknown savegame type, trying to load it as the buggy format"); _sl.lf->Reset(); _sl_version = 0; _sl_minor_version = 0; /* Try to find the LZO savegame format; it uses 'OTTD' as tag. */ fmt = _saveload_formats; for (;;) { if (fmt == endof(_saveload_formats)) { /* Who removed LZO support? Bad bad boy! */ NOT_REACHED(); } if (fmt->tag == TO_BE32X('OTTD')) break; fmt++; } break; } if (fmt->tag == hdr[0]) { /* check version number */ _sl_version = TO_BE32(hdr[1]) >> 16; /* Minor is not used anymore from version 18.0, but it is still needed * in versions before that (4 cases) which can't be removed easy. * Therefore it is loaded, but never saved (or, it saves a 0 in any scenario). */ _sl_minor_version = (TO_BE32(hdr[1]) >> 8) & 0xFF; DEBUG(sl, 1, "Loading savegame version %d", _sl_version); /* Is the version higher than the current? */ if (_sl_version > SAVEGAME_VERSION) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME); break; } fmt++; } /* loader for this savegame type is not implemented? */ if (fmt->init_load == NULL) { char err_str[64]; snprintf(err_str, lengthof(err_str), "Loader for '%s' is not available.", fmt->name); SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str); } _sl.lf = fmt->init_load(_sl.lf); _sl.reader = new ReadBuffer(_sl.lf); _next_offs = 0; if (!load_check) { /* Old maps were hardcoded to 256x256 and thus did not contain * any mapsize information. Pre-initialize to 256x256 to not to * confuse old games */ InitializeGame(256, 256, true, true); GamelogReset(); if (IsSavegameVersionBefore(4)) { /* * NewGRFs were introduced between 0.3,4 and 0.3.5, which both * shared savegame version 4. Anything before that 'obviously' * does not have any NewGRFs. Between the introduction and * savegame version 41 (just before 0.5) the NewGRF settings * were not stored in the savegame and they were loaded by * using the settings from the main menu. * So, to recap: * - savegame version < 4: do not load any NewGRFs. * - savegame version >= 41: load NewGRFs from savegame, which is * already done at this stage by * overwriting the main menu settings. * - other savegame versions: use main menu settings. * * This means that users *can* crash savegame version 4..40 * savegames if they set incompatible NewGRFs in the main menu, * but can't crash anymore for savegame version < 4 savegames. * * Note: this is done here because AfterLoadGame is also called * for TTO/TTD/TTDP savegames which have their own NewGRF logic. */ ClearGRFConfigList(&_grfconfig); } } if (load_check) { /* Load chunks into _load_check_data. * No pools are loaded. References are not possible, and thus do not need resolving. */ SlLoadCheckChunks(); } else { /* Load chunks and resolve references */ SlLoadChunks(); SlFixPointers(); } ClearSaveLoadState(); _savegame_type = SGT_OTTD; if (load_check) { /* The only part from AfterLoadGame() we need */ _load_check_data.grf_compatibility = IsGoodGRFConfigList(_load_check_data.grfconfig); } else { GamelogStartAction(GLAT_LOAD); /* After loading fix up savegame for any internal changes that * might have occurred since then. If it fails, load back the old game. */ if (!AfterLoadGame()) { GamelogStopAction(); return SL_REINIT; } GamelogStopAction(); } return SL_OK; } /** * Load the game using a (reader) filter. * @param reader The filter to read the savegame from. * @return Return the result of the action. #SL_OK or #SL_REINIT ("unload" the game) */ SaveOrLoadResult LoadWithFilter(LoadFilter *reader) { try { _sl.action = SLA_LOAD; return DoLoad(reader, false); } catch (...) { ClearSaveLoadState(); return SL_REINIT; } } /** * Main Save or Load function where the high-level saveload functions are * handled. It opens the savegame, selects format and checks versions * @param filename The name of the savegame being created/loaded * @param mode Save or load mode. Load can also be a TTD(Patch) game. Use #SL_LOAD, #SL_OLD_LOAD, #SL_LOAD_CHECK, or #SL_SAVE. * @param sb The sub directory to save the savegame in * @param threaded True when threaded saving is allowed * @return Return the result of the action. #SL_OK, #SL_ERROR, or #SL_REINIT ("unload" the game) */ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb, bool threaded) { /* An instance of saving is already active, so don't go saving again */ if (_sl.saveinprogress && mode == SL_SAVE && threaded) { /* if not an autosave, but a user action, show error message */ if (!_do_autosave) ShowErrorMessage(STR_ERROR_SAVE_STILL_IN_PROGRESS, INVALID_STRING_ID, WL_ERROR); return SL_OK; } WaitTillSaved(); /* Load a TTDLX or TTDPatch game */ if (mode == SL_OLD_LOAD) { InitializeGame(256, 256, true, true); // set a mapsize of 256x256 for TTDPatch games or it might get confused /* TTD/TTO savegames have no NewGRFs, TTDP savegame have them * and if so a new NewGRF list will be made in LoadOldSaveGame. * Note: this is done here because AfterLoadGame is also called * for OTTD savegames which have their own NewGRF logic. */ ClearGRFConfigList(&_grfconfig); GamelogReset(); if (!LoadOldSaveGame(filename)) return SL_REINIT; _sl_version = 0; _sl_minor_version = 0; GamelogStartAction(GLAT_LOAD); if (!AfterLoadGame()) { GamelogStopAction(); return SL_REINIT; } GamelogStopAction(); return SL_OK; } switch (mode) { case SL_LOAD_CHECK: _sl.action = SLA_LOAD_CHECK; break; case SL_LOAD: _sl.action = SLA_LOAD; break; case SL_SAVE: _sl.action = SLA_SAVE; break; default: NOT_REACHED(); } try { FILE *fh = (mode == SL_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb); /* Make it a little easier to load savegames from the console */ if (fh == NULL && mode != SL_SAVE) fh = FioFOpenFile(filename, "rb", SAVE_DIR); if (fh == NULL && mode != SL_SAVE) fh = FioFOpenFile(filename, "rb", BASE_DIR); if (fh == NULL && mode != SL_SAVE) fh = FioFOpenFile(filename, "rb", SCENARIO_DIR); if (fh == NULL) { SlError(mode == SL_SAVE ? STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE : STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); } if (mode == SL_SAVE) { // SAVE game DEBUG(desync, 1, "save: %08x; %02x; %s", _date, _date_fract, filename); if (_network_server || !_settings_client.gui.threaded_saves) threaded = false; return DoSave(new FileWriter(fh), threaded); } /* LOAD game */ assert(mode == SL_LOAD || mode == SL_LOAD_CHECK); DEBUG(desync, 1, "load: %s", filename); return DoLoad(new FileReader(fh), mode == SL_LOAD_CHECK); } catch (...) { ClearSaveLoadState(); /* Skip the "colour" character */ if (mode != SL_LOAD_CHECK) DEBUG(sl, 0, "%s", GetSaveLoadErrorString() + 3); /* A saver/loader exception!! reinitialize all variables to prevent crash! */ return (mode == SL_LOAD) ? SL_REINIT : SL_ERROR; } } /** Do a save when exiting the game (_settings_client.gui.autosave_on_exit) */ void DoExitSave() { SaveOrLoad("exit.sav", SL_SAVE, AUTOSAVE_DIR); } /** * Fill the buffer with the default name for a savegame *or* screenshot. * @param buf the buffer to write to. * @param last the last element in the buffer. */ void GenerateDefaultSaveName(char *buf, const char *last) { /* Check if we have a name for this map, which is the name of the first * available company. When there's no company available we'll use * 'Spectator' as "company" name. */ CompanyID cid = _local_company; if (!Company::IsValidID(cid)) { const Company *c; FOR_ALL_COMPANIES(c) { cid = c->index; break; } } SetDParam(0, cid); /* Insert current date */ switch (_settings_client.gui.date_format_in_default_names) { case 0: SetDParam(1, STR_JUST_DATE_LONG); break; case 1: SetDParam(1, STR_JUST_DATE_TINY); break; case 2: SetDParam(1, STR_JUST_DATE_ISO); break; default: NOT_REACHED(); } SetDParam(2, _date); /* Get the correct string (special string for when there's not company) */ GetString(buf, !Company::IsValidID(cid) ? STR_SAVEGAME_NAME_SPECTATOR : STR_SAVEGAME_NAME_DEFAULT, last); SanitizeFilename(buf); } #if 0 /** * Function to get the type of the savegame by looking at the file header. * NOTICE: Not used right now, but could be used if extensions of savegames are garbled * @param file Savegame to be checked * @return SL_OLD_LOAD or SL_LOAD of the file */ int GetSavegameType(char *file) { const SaveLoadFormat *fmt; uint32 hdr; FILE *f; int mode = SL_OLD_LOAD; f = fopen(file, "rb"); if (fread(&hdr, sizeof(hdr), 1, f) != 1) { DEBUG(sl, 0, "Savegame is obsolete or invalid format"); mode = SL_LOAD; // don't try to get filename, just show name as it is written } else { /* see if we have any loader for this type. */ for (fmt = _saveload_formats; fmt != endof(_saveload_formats); fmt++) { if (fmt->tag == hdr) { mode = SL_LOAD; // new type of savegame break; } } } fclose(f); return mode; } #endif openttd-1.3.3/src/saveload/newgrf_sl.cpp0000644000000000000000000000642312246102605016753 0ustar rootroot/* $Id: newgrf_sl.cpp 23740 2012-01-03 21:32:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_sl.cpp Code handling saving and loading of newgrf config */ #include "../stdafx.h" #include "../fios.h" #include "saveload.h" #include "newgrf_sl.h" /** Save and load the mapping between a spec and the NewGRF it came from. */ static const SaveLoad _newgrf_mapping_desc[] = { SLE_VAR(EntityIDMapping, grfid, SLE_UINT32), SLE_VAR(EntityIDMapping, entity_id, SLE_UINT8), SLE_VAR(EntityIDMapping, substitute_id, SLE_UINT8), SLE_END() }; /** * Save a GRF ID + local id -> OpenTTD's id mapping. * @param mapping The mapping to save. */ void Save_NewGRFMapping(const OverrideManagerBase &mapping) { for (uint i = 0; i < mapping.GetMaxMapping(); i++) { SlSetArrayIndex(i); SlObject(&mapping.mapping_ID[i], _newgrf_mapping_desc); } } /** * Load a GRF ID + local id -> OpenTTD's id mapping. * @param mapping The mapping to load. */ void Load_NewGRFMapping(OverrideManagerBase &mapping) { /* Clear the current mapping stored. * This will create the manager if ever it is not yet done */ mapping.ResetMapping(); uint max_id = mapping.GetMaxMapping(); int index; while ((index = SlIterateArray()) != -1) { if ((uint)index >= max_id) break; SlObject(&mapping.mapping_ID[index], _newgrf_mapping_desc); } } static const SaveLoad _grfconfig_desc[] = { SLE_STR(GRFConfig, filename, SLE_STR, 0x40), SLE_VAR(GRFConfig, ident.grfid, SLE_UINT32), SLE_ARR(GRFConfig, ident.md5sum, SLE_UINT8, 16), SLE_CONDVAR(GRFConfig, version, SLE_UINT32, 151, SL_MAX_VERSION), SLE_ARR(GRFConfig, param, SLE_UINT32, 0x80), SLE_VAR(GRFConfig, num_params, SLE_UINT8), SLE_CONDVAR(GRFConfig, palette, SLE_UINT8, 101, SL_MAX_VERSION), SLE_END() }; static void Save_NGRF() { int index = 0; for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) { if (HasBit(c->flags, GCF_STATIC)) continue; SlSetArrayIndex(index++); SlObject(c, _grfconfig_desc); } } static void Load_NGRF_common(GRFConfig *&grfconfig) { ClearGRFConfigList(&grfconfig); while (SlIterateArray() != -1) { GRFConfig *c = new GRFConfig(); SlObject(c, _grfconfig_desc); if (IsSavegameVersionBefore(101)) c->SetSuitablePalette(); AppendToGRFConfigList(&grfconfig, c); } } static void Load_NGRF() { Load_NGRF_common(_grfconfig); /* Append static NewGRF configuration, but only if there are some NewGRFs. */ if (_game_mode != GM_MENU || _all_grfs != NULL) AppendStaticGRFConfigs(&_grfconfig); } static void Check_NGRF() { Load_NGRF_common(_load_check_data.grfconfig); } extern const ChunkHandler _newgrf_chunk_handlers[] = { { 'NGRF', Save_NGRF, Load_NGRF, NULL, Check_NGRF, CH_ARRAY | CH_LAST } }; openttd-1.3.3/src/saveload/newgrf_sl.h0000644000000000000000000000170512246102606016417 0ustar rootroot/* $Id: newgrf_sl.h 21886 2011-01-22 09:53:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_sl.h Code handling saving and loading of NewGRF mappings. */ #ifndef SAVELOAD_NEWGRF_SL_H #define SAVELOAD_NEWGRF_SL_H #include "../newgrf_commons.h" void Save_NewGRFMapping(const OverrideManagerBase &mapping); void Load_NewGRFMapping(OverrideManagerBase &mapping); #endif /* SAVELOAD_NEWGRF_SL_H */ openttd-1.3.3/src/saveload/saveload_internal.h0000644000000000000000000000356412246102605020127 0ustar rootroot/* $Id: saveload_internal.h 23411 2011-12-03 23:40:13Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file saveload_internal.h Declaration of functions used in more save/load files */ #ifndef SAVELOAD_INTERNAL_H #define SAVELOAD_INTERNAL_H #include "../company_manager_face.h" #include "../order_base.h" #include "../engine_type.h" #include "saveload.h" void InitializeOldNames(); StringID RemapOldStringID(StringID s); char *CopyFromOldName(StringID id); void ResetOldNames(); void MoveBuoysToWaypoints(); void MoveWaypointsToBaseStations(); const SaveLoad *GetBaseStationDescription(); void AfterLoadVehicles(bool part_of_load); void FixupTrainLengths(); void AfterLoadStations(); void AfterLoadRoadStops(); void AfterLoadLabelMaps(); void AfterLoadCompanyStats(); void UpdateHousesAndTowns(); void UpdateOldAircraft(); void SaveViewportBeforeSaveGame(); void ResetViewportAfterLoadGame(); void ConvertOldMultiheadToNew(); void ConnectMultiheadedTrains(); Engine *GetTempDataEngine(EngineID index); void CopyTempEngineData(); extern int32 _saved_scrollpos_x; extern int32 _saved_scrollpos_y; extern ZoomLevelByte _saved_scrollpos_zoom; extern SavegameType _savegame_type; extern uint32 _ttdp_version; CompanyManagerFace ConvertFromOldCompanyManagerFace(uint32 face); Order UnpackOldOrder(uint16 packed); #endif /* SAVELOAD_INTERNAL_H */ openttd-1.3.3/src/saveload/animated_tile_sl.cpp0000644000000000000000000000454612246102606020267 0ustar rootroot/* $Id: animated_tile_sl.cpp 21284 2010-11-21 12:47:04Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file animated_tile_sl.cpp Code handling saving and loading of animated tiles */ #include "../stdafx.h" #include "../tile_type.h" #include "../core/alloc_func.hpp" #include "saveload.h" extern TileIndex *_animated_tile_list; extern uint _animated_tile_count; extern uint _animated_tile_allocated; /** * Save the ANIT chunk. */ static void Save_ANIT() { SlSetLength(_animated_tile_count * sizeof(*_animated_tile_list)); SlArray(_animated_tile_list, _animated_tile_count, SLE_UINT32); } /** * Load the ANIT chunk; the chunk containing the animated tiles. */ static void Load_ANIT() { /* Before version 80 we did NOT have a variable length animated tile table */ if (IsSavegameVersionBefore(80)) { /* In pre version 6, we has 16bit per tile, now we have 32bit per tile, convert it ;) */ SlArray(_animated_tile_list, 256, IsSavegameVersionBefore(6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32); for (_animated_tile_count = 0; _animated_tile_count < 256; _animated_tile_count++) { if (_animated_tile_list[_animated_tile_count] == 0) break; } return; } _animated_tile_count = (uint)SlGetFieldLength() / sizeof(*_animated_tile_list); /* Determine a nice rounded size for the amount of allocated tiles */ _animated_tile_allocated = 256; while (_animated_tile_allocated < _animated_tile_count) _animated_tile_allocated *= 2; _animated_tile_list = ReallocT(_animated_tile_list, _animated_tile_allocated); SlArray(_animated_tile_list, _animated_tile_count, SLE_UINT32); } /** * "Definition" imported by the saveload code to be able to load and save * the animated tile table. */ extern const ChunkHandler _animated_tile_chunk_handlers[] = { { 'ANIT', Save_ANIT, Load_ANIT, NULL, NULL, CH_RIFF | CH_LAST}, }; openttd-1.3.3/src/saveload/afterload.cpp0000644000000000000000000026427712246102605016743 0ustar rootroot/* $Id: afterload.cpp 25991 2013-11-13 22:00:46Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file afterload.cpp Code updating data after game load */ #include "../stdafx.h" #include "../void_map.h" #include "../signs_base.h" #include "../depot_base.h" #include "../fios.h" #include "../gamelog_internal.h" #include "../network/network.h" #include "../gfxinit.h" #include "../viewport_func.h" #include "../industry.h" #include "../clear_map.h" #include "../vehicle_func.h" #include "../string_func.h" #include "../date_func.h" #include "../roadveh.h" #include "../train.h" #include "../station_base.h" #include "../waypoint_base.h" #include "../roadstop_base.h" #include "../tunnelbridge_map.h" #include "../pathfinder/yapf/yapf_cache.h" #include "../elrail_func.h" #include "../signs_func.h" #include "../aircraft.h" #include "../object_map.h" #include "../object_base.h" #include "../tree_map.h" #include "../company_func.h" #include "../road_cmd.h" #include "../ai/ai.hpp" #include "../ai/ai_gui.hpp" #include "../town.h" #include "../economy_base.h" #include "../animated_tile_func.h" #include "../subsidy_base.h" #include "../subsidy_func.h" #include "../newgrf.h" #include "../engine_func.h" #include "../rail_gui.h" #include "../core/backup_type.hpp" #include "../smallmap_gui.h" #include "../news_func.h" #include "../error.h" #include "saveload_internal.h" #include extern Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY); /** * Makes a tile canal or water depending on the surroundings. * * Must only be used for converting old savegames. Use WaterClass now. * * This as for example docks and shipdepots do not store * whether the tile used to be canal or 'normal' water. * @param t the tile to change. * @param include_invalid_water_class Also consider WATER_CLASS_INVALID, i.e. industry tiles on land */ void SetWaterClassDependingOnSurroundings(TileIndex t, bool include_invalid_water_class) { /* If the slope is not flat, we always assume 'land' (if allowed). Also for one-corner-raised-shores. * Note: Wrt. autosloping under industry tiles this is the most fool-proof behaviour. */ if (GetTileSlope(t) != SLOPE_FLAT) { if (include_invalid_water_class) { SetWaterClass(t, WATER_CLASS_INVALID); return; } else { SlErrorCorrupt("Invalid water class for dry tile"); } } /* Mark tile dirty in all cases */ MarkTileDirtyByTile(t); if (TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() - 1 || TileY(t) == MapMaxY() - 1) { /* tiles at map borders are always WATER_CLASS_SEA */ SetWaterClass(t, WATER_CLASS_SEA); return; } bool has_water = false; bool has_canal = false; bool has_river = false; for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) { TileIndex neighbour = TileAddByDiagDir(t, dir); switch (GetTileType(neighbour)) { case MP_WATER: /* clear water and shipdepots have already a WaterClass associated */ if (IsCoast(neighbour)) { has_water = true; } else if (!IsLock(neighbour)) { switch (GetWaterClass(neighbour)) { case WATER_CLASS_SEA: has_water = true; break; case WATER_CLASS_CANAL: has_canal = true; break; case WATER_CLASS_RIVER: has_river = true; break; default: SlErrorCorrupt("Invalid water class for tile"); } } break; case MP_RAILWAY: /* Shore or flooded halftile */ has_water |= (GetRailGroundType(neighbour) == RAIL_GROUND_WATER); break; case MP_TREES: /* trees on shore */ has_water |= (GB(_m[neighbour].m2, 4, 2) == TREE_GROUND_SHORE); break; default: break; } } if (!has_water && !has_canal && !has_river && include_invalid_water_class) { SetWaterClass(t, WATER_CLASS_INVALID); return; } if (has_river && !has_canal) { SetWaterClass(t, WATER_CLASS_RIVER); } else if (has_canal || !has_water) { SetWaterClass(t, WATER_CLASS_CANAL); } else { SetWaterClass(t, WATER_CLASS_SEA); } } static void ConvertTownOwner() { for (TileIndex tile = 0; tile != MapSize(); tile++) { switch (GetTileType(tile)) { case MP_ROAD: if (GB(_m[tile].m5, 4, 2) == ROAD_TILE_CROSSING && HasBit(_m[tile].m3, 7)) { _m[tile].m3 = OWNER_TOWN; } /* FALL THROUGH */ case MP_TUNNELBRIDGE: if (_m[tile].m1 & 0x80) SetTileOwner(tile, OWNER_TOWN); break; default: break; } } } /* since savegame version 4.1, exclusive transport rights are stored at towns */ static void UpdateExclusiveRights() { Town *t; FOR_ALL_TOWNS(t) { t->exclusivity = INVALID_COMPANY; } /* FIXME old exclusive rights status is not being imported (stored in s->blocked_months_obsolete) * could be implemented this way: * 1.) Go through all stations * Build an array town_blocked[ town_id ][ company_id ] * that stores if at least one station in that town is blocked for a company * 2.) Go through that array, if you find a town that is not blocked for * one company, but for all others, then give him exclusivity. */ } static const byte convert_currency[] = { 0, 1, 12, 8, 3, 10, 14, 19, 4, 5, 9, 11, 13, 6, 17, 16, 22, 21, 7, 15, 18, 2, 20, }; /* since savegame version 4.2 the currencies are arranged differently */ static void UpdateCurrencies() { _settings_game.locale.currency = convert_currency[_settings_game.locale.currency]; } /* Up to revision 1413 the invisible tiles at the southern border have not been * MP_VOID, even though they should have. This is fixed by this function */ static void UpdateVoidTiles() { uint i; for (i = 0; i < MapMaxY(); ++i) MakeVoid(i * MapSizeX() + MapMaxX()); for (i = 0; i < MapSizeX(); ++i) MakeVoid(MapSizeX() * MapMaxY() + i); } static inline RailType UpdateRailType(RailType rt, RailType min) { return rt >= min ? (RailType)(rt + 1): rt; } /** * Update the viewport coordinates of all signs. */ void UpdateAllVirtCoords() { UpdateAllStationVirtCoords(); UpdateAllSignVirtCoords(); UpdateAllTownVirtCoords(); } /** * Initialization of the windows and several kinds of caches. * This is not done directly in AfterLoadGame because these * functions require that all saveload conversions have been * done. As people tend to add savegame conversion stuff after * the intialization of the windows and caches quite some bugs * had been made. * Moving this out of there is both cleaner and less bug-prone. */ static void InitializeWindowsAndCaches() { /* Initialize windows */ ResetWindowSystem(); SetupColoursAndInitialWindow(); /* Update coordinates of the signs. */ UpdateAllVirtCoords(); ResetViewportAfterLoadGame(); Company *c; FOR_ALL_COMPANIES(c) { /* For each company, verify (while loading a scenario) that the inauguration date is the current year and set it * accordingly if it is not the case. No need to set it on companies that are not been used already, * thus the MIN_YEAR (which is really nothing more than Zero, initialized value) test */ if (_file_to_saveload.filetype == FT_SCENARIO && c->inaugurated_year != MIN_YEAR) { c->inaugurated_year = _cur_year; } } RecomputePrices(); GroupStatistics::UpdateAfterLoad(); Station::RecomputeIndustriesNearForAll(); RebuildSubsidisedSourceAndDestinationCache(); /* Towns have a noise controlled number of airports system * So each airport's noise value must be added to the town->noise_reached value * Reset each town's noise_reached value to '0' before. */ UpdateAirportsNoise(); CheckTrainsLengths(); ShowNewGRFError(); ShowAIDebugWindowIfAIError(); /* Rebuild the smallmap list of owners. */ BuildOwnerLegend(); } typedef void (CDECL *SignalHandlerPointer)(int); static SignalHandlerPointer _prev_segfault = NULL; static SignalHandlerPointer _prev_abort = NULL; static SignalHandlerPointer _prev_fpe = NULL; static void CDECL HandleSavegameLoadCrash(int signum); /** * Replaces signal handlers of SIGSEGV and SIGABRT * and stores pointers to original handlers in memory. */ static void SetSignalHandlers() { _prev_segfault = signal(SIGSEGV, HandleSavegameLoadCrash); _prev_abort = signal(SIGABRT, HandleSavegameLoadCrash); _prev_fpe = signal(SIGFPE, HandleSavegameLoadCrash); } /** * Resets signal handlers back to original handlers. */ static void ResetSignalHandlers() { signal(SIGSEGV, _prev_segfault); signal(SIGABRT, _prev_abort); signal(SIGFPE, _prev_fpe); } /** * Try to find the overridden GRF identifier of the given GRF. * @param c the GRF to get the 'previous' version of. * @return the GRF identifier or \a c if none could be found. */ static const GRFIdentifier *GetOverriddenIdentifier(const GRFConfig *c) { const LoggedAction *la = &_gamelog_action[_gamelog_actions - 1]; if (la->at != GLAT_LOAD) return &c->ident; const LoggedChange *lcend = &la->change[la->changes]; for (const LoggedChange *lc = la->change; lc != lcend; lc++) { if (lc->ct == GLCT_GRFCOMPAT && lc->grfcompat.grfid == c->ident.grfid) return &lc->grfcompat; } return &c->ident; } /** Was the saveload crash because of missing NewGRFs? */ static bool _saveload_crash_with_missing_newgrfs = false; /** * Did loading the savegame cause a crash? If so, * were NewGRFs missing? * @return when the saveload crashed due to missing NewGRFs. */ bool SaveloadCrashWithMissingNewGRFs() { return _saveload_crash_with_missing_newgrfs; } /** * Signal handler used to give a user a more useful report for crashes during * the savegame loading process; especially when there's problems with the * NewGRFs that are required by the savegame. * @param signum received signal */ static void CDECL HandleSavegameLoadCrash(int signum) { ResetSignalHandlers(); char buffer[8192]; char *p = buffer; p += seprintf(p, lastof(buffer), "Loading your savegame caused OpenTTD to crash.\n"); for (const GRFConfig *c = _grfconfig; !_saveload_crash_with_missing_newgrfs && c != NULL; c = c->next) { _saveload_crash_with_missing_newgrfs = HasBit(c->flags, GCF_COMPATIBLE) || c->status == GCS_NOT_FOUND; } if (_saveload_crash_with_missing_newgrfs) { p += seprintf(p, lastof(buffer), "This is most likely caused by a missing NewGRF or a NewGRF that\n" "has been loaded as replacement for a missing NewGRF. OpenTTD\n" "cannot easily determine whether a replacement NewGRF is of a newer\n" "or older version.\n" "It will load a NewGRF with the same GRF ID as the missing NewGRF.\n" "This means that if the author makes incompatible NewGRFs with the\n" "same GRF ID OpenTTD cannot magically do the right thing. In most\n" "cases OpenTTD will load the savegame and not crash, but this is an\n" "exception.\n" "Please load the savegame with the appropriate NewGRFs installed.\n" "The missing/compatible NewGRFs are:\n"); for (const GRFConfig *c = _grfconfig; c != NULL; c = c->next) { if (HasBit(c->flags, GCF_COMPATIBLE)) { const GRFIdentifier *replaced = GetOverriddenIdentifier(c); char buf[40]; md5sumToString(buf, lastof(buf), replaced->md5sum); p += seprintf(p, lastof(buffer), "NewGRF %08X (checksum %s) not found.\n Loaded NewGRF \"%s\" with same GRF ID instead.\n", BSWAP32(c->ident.grfid), buf, c->filename); } if (c->status == GCS_NOT_FOUND) { char buf[40]; md5sumToString(buf, lastof(buf), c->ident.md5sum); p += seprintf(p, lastof(buffer), "NewGRF %08X (%s) not found; checksum %s.\n", BSWAP32(c->ident.grfid), c->filename, buf); } } } else { p += seprintf(p, lastof(buffer), "This is probably caused by a corruption in the savegame.\n" "Please file a bug report and attach this savegame.\n"); } ShowInfo(buffer); SignalHandlerPointer call = NULL; switch (signum) { case SIGSEGV: call = _prev_segfault; break; case SIGABRT: call = _prev_abort; break; case SIGFPE: call = _prev_fpe; break; default: NOT_REACHED(); } if (call != NULL) call(signum); } /** * Tries to change owner of this rail tile to a valid owner. In very old versions it could happen that * a rail track had an invalid owner. When conversion isn't possible, track is removed. * @param t tile to update */ static void FixOwnerOfRailTrack(TileIndex t) { assert(!Company::IsValidID(GetTileOwner(t)) && (IsLevelCrossingTile(t) || IsPlainRailTile(t))); /* remove leftover rail piece from crossing (from very old savegames) */ Train *v = NULL, *w; FOR_ALL_TRAINS(w) { if (w->tile == t) { v = w; break; } } if (v != NULL) { /* when there is a train on crossing (it could happen in TTD), set owner of crossing to train owner */ SetTileOwner(t, v->owner); return; } /* try to find any connected rail */ for (DiagDirection dd = DIAGDIR_BEGIN; dd < DIAGDIR_END; dd++) { TileIndex tt = t + TileOffsByDiagDir(dd); if (GetTileTrackStatus(t, TRANSPORT_RAIL, 0, dd) != 0 && GetTileTrackStatus(tt, TRANSPORT_RAIL, 0, ReverseDiagDir(dd)) != 0 && Company::IsValidID(GetTileOwner(tt))) { SetTileOwner(t, GetTileOwner(tt)); return; } } if (IsLevelCrossingTile(t)) { /* else change the crossing to normal road (road vehicles won't care) */ MakeRoadNormal(t, GetCrossingRoadBits(t), GetRoadTypes(t), GetTownIndex(t), GetRoadOwner(t, ROADTYPE_ROAD), GetRoadOwner(t, ROADTYPE_TRAM)); return; } /* if it's not a crossing, make it clean land */ MakeClear(t, CLEAR_GRASS, 0); } /** * Fixes inclination of a vehicle. Older OpenTTD versions didn't update the bits correctly. * @param v vehicle * @param dir vehicle's direction, or # INVALID_DIR if it can be ignored * @return inclination bits to set */ static uint FixVehicleInclination(Vehicle *v, Direction dir) { /* Compute place where this vehicle entered the tile */ int entry_x = v->x_pos; int entry_y = v->y_pos; switch (dir) { case DIR_NE: entry_x |= TILE_UNIT_MASK; break; case DIR_NW: entry_y |= TILE_UNIT_MASK; break; case DIR_SW: entry_x &= ~TILE_UNIT_MASK; break; case DIR_SE: entry_y &= ~TILE_UNIT_MASK; break; case INVALID_DIR: break; default: NOT_REACHED(); } byte entry_z = GetSlopePixelZ(entry_x, entry_y); /* Compute middle of the tile. */ int middle_x = (v->x_pos & ~TILE_UNIT_MASK) + TILE_SIZE / 2; int middle_y = (v->y_pos & ~TILE_UNIT_MASK) + TILE_SIZE / 2; byte middle_z = GetSlopePixelZ(middle_x, middle_y); /* middle_z == entry_z, no height change. */ if (middle_z == entry_z) return 0; /* middle_z < entry_z, we are going downwards. */ if (middle_z < entry_z) return 1U << GVF_GOINGDOWN_BIT; /* middle_z > entry_z, we are going upwards. */ return 1U << GVF_GOINGUP_BIT; } /** * Perform a (large) amount of savegame conversion *magic* in order to * load older savegames and to fill the caches for various purposes. * @return True iff conversion went without a problem. */ bool AfterLoadGame() { SetSignalHandlers(); TileIndex map_size = MapSize(); extern TileIndex _cur_tileloop_tile; // From landscape.cpp. /* The LFSR used in RunTileLoop iteration cannot have a zeroed state, make it non-zeroed. */ if (_cur_tileloop_tile == 0) _cur_tileloop_tile = 1; if (IsSavegameVersionBefore(98)) GamelogOldver(); GamelogTestRevision(); GamelogTestMode(); if (IsSavegameVersionBefore(98)) GamelogGRFAddList(_grfconfig); if (IsSavegameVersionBefore(119)) { _pause_mode = (_pause_mode == 2) ? PM_PAUSED_NORMAL : PM_UNPAUSED; } else if (_network_dedicated && (_pause_mode & PM_PAUSED_ERROR) != 0) { DEBUG(net, 0, "The loading savegame was paused due to an error state."); DEBUG(net, 0, " The savegame cannot be used for multiplayer!"); /* Restore the signals */ ResetSignalHandlers(); return false; } else if (!_networking || _network_server) { /* If we are in single player, i.e. not networking, and loading the * savegame or we are loading the savegame as network server we do * not want to be bothered by being paused because of the automatic * reason of a network server, e.g. joining clients or too few * active clients. Note that resetting these values for a network * client are very bad because then the client is going to execute * the game loop when the server is not, i.e. it desyncs. */ _pause_mode &= ~PMB_PAUSED_NETWORK; } /* In very old versions, size of train stations was stored differently. * They had swapped width and height if station was built along the Y axis. * TTO and TTD used 3 bits for width/height, while OpenTTD used 4. * Because the data stored by TTDPatch are unusable for rail stations > 7x7, * recompute the width and height. Doing this unconditionally for all old * savegames simplifies the code. */ if (IsSavegameVersionBefore(2)) { Station *st; FOR_ALL_STATIONS(st) { st->train_station.w = st->train_station.h = 0; } for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_STATION)) continue; if (_m[t].m5 > 7) continue; // is it a rail station tile? st = Station::Get(_m[t].m2); assert(st->train_station.tile != 0); int dx = TileX(t) - TileX(st->train_station.tile); int dy = TileY(t) - TileY(st->train_station.tile); assert(dx >= 0 && dy >= 0); st->train_station.w = max(st->train_station.w, dx + 1); st->train_station.h = max(st->train_station.h, dy + 1); } } /* in version 2.1 of the savegame, town owner was unified. */ if (IsSavegameVersionBefore(2, 1)) ConvertTownOwner(); /* from version 4.1 of the savegame, exclusive rights are stored at towns */ if (IsSavegameVersionBefore(4, 1)) UpdateExclusiveRights(); /* from version 4.2 of the savegame, currencies are in a different order */ if (IsSavegameVersionBefore(4, 2)) UpdateCurrencies(); /* In old version there seems to be a problem that water is owned by * OWNER_NONE, not OWNER_WATER.. I can't replicate it for the current * (4.3) version, so I just check when versions are older, and then * walk through the whole map.. */ if (IsSavegameVersionBefore(4, 3)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_WATER) && GetTileOwner(t) >= MAX_COMPANIES) { SetTileOwner(t, OWNER_WATER); } } } if (IsSavegameVersionBefore(84)) { Company *c; FOR_ALL_COMPANIES(c) { c->name = CopyFromOldName(c->name_1); if (c->name != NULL) c->name_1 = STR_SV_UNNAMED; c->president_name = CopyFromOldName(c->president_name_1); if (c->president_name != NULL) c->president_name_1 = SPECSTR_PRESIDENT_NAME; } Station *st; FOR_ALL_STATIONS(st) { st->name = CopyFromOldName(st->string_id); /* generating new name would be too much work for little effect, use the station name fallback */ if (st->name != NULL) st->string_id = STR_SV_STNAME_FALLBACK; } Town *t; FOR_ALL_TOWNS(t) { t->name = CopyFromOldName(t->townnametype); if (t->name != NULL) t->townnametype = SPECSTR_TOWNNAME_START + _settings_game.game_creation.town_name; } } /* From this point the old names array is cleared. */ ResetOldNames(); if (IsSavegameVersionBefore(106)) { /* no station is determined by 'tile == INVALID_TILE' now (instead of '0') */ Station *st; FOR_ALL_STATIONS(st) { if (st->airport.tile == 0) st->airport.tile = INVALID_TILE; if (st->dock_tile == 0) st->dock_tile = INVALID_TILE; if (st->train_station.tile == 0) st->train_station.tile = INVALID_TILE; } /* the same applies to Company::location_of_HQ */ Company *c; FOR_ALL_COMPANIES(c) { if (c->location_of_HQ == 0 || (IsSavegameVersionBefore(4) && c->location_of_HQ == 0xFFFF)) { c->location_of_HQ = INVALID_TILE; } } } /* convert road side to my format. */ if (_settings_game.vehicle.road_side) _settings_game.vehicle.road_side = 1; /* Check if all NewGRFs are present, we are very strict in MP mode */ GRFListCompatibility gcf_res = IsGoodGRFConfigList(_grfconfig); for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) { if (c->status == GCS_NOT_FOUND) { GamelogGRFRemove(c->ident.grfid); } else if (HasBit(c->flags, GCF_COMPATIBLE)) { GamelogGRFCompatible(&c->ident); } } if (_networking && gcf_res != GLC_ALL_GOOD) { SetSaveLoadError(STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH); /* Restore the signals */ ResetSignalHandlers(); return false; } switch (gcf_res) { case GLC_COMPATIBLE: ShowErrorMessage(STR_NEWGRF_COMPATIBLE_LOAD_WARNING, INVALID_STRING_ID, WL_CRITICAL); break; case GLC_NOT_FOUND: ShowErrorMessage(STR_NEWGRF_DISABLED_WARNING, INVALID_STRING_ID, WL_CRITICAL); _pause_mode = PM_PAUSED_ERROR; break; default: break; } /* The value of _date_fract got divided, so make sure that old games are converted correctly. */ if (IsSavegameVersionBefore(11, 1) || (IsSavegameVersionBefore(147) && _date_fract > DAY_TICKS)) _date_fract /= 885; /* Update current year * must be done before loading sprites as some newgrfs check it */ SetDate(_date, _date_fract); /* * Force the old behaviour for compatibility reasons with old savegames. * * Note that there is no non-stop in here. This is because the setting could have * either value in TTDPatch. To convert it properly the user has to make sure the * right value has been chosen in the settings. Otherwise we will be converting * it incorrectly in half of the times without a means to correct that. */ if (IsSavegameVersionBefore(4, 2)) _settings_game.station.modified_catchment = false; if (IsSavegameVersionBefore(6, 1)) _settings_game.pf.forbid_90_deg = false; if (IsSavegameVersionBefore(21)) _settings_game.vehicle.train_acceleration_model = 0; if (IsSavegameVersionBefore(90)) _settings_game.vehicle.plane_speed = 4; if (IsSavegameVersionBefore(95)) _settings_game.vehicle.dynamic_engines = 0; if (IsSavegameVersionBefore(133)) _settings_game.vehicle.roadveh_acceleration_model = 0; if (IsSavegameVersionBefore(159)) _settings_game.vehicle.max_train_length = 50; if (IsSavegameVersionBefore(166)) _settings_game.economy.infrastructure_maintenance = false; /* Load the sprites */ GfxLoadSprites(); LoadStringWidthTable(); /* Copy temporary data to Engine pool */ CopyTempEngineData(); /* Connect front and rear engines of multiheaded trains and converts * subtype to the new format */ if (IsSavegameVersionBefore(17, 1)) ConvertOldMultiheadToNew(); /* Connect front and rear engines of multiheaded trains */ ConnectMultiheadedTrains(); /* Fix the CargoPackets *and* fix the caches of CargoLists. * If this isn't done before Stations and especially Vehicles are * running their AfterLoad we might get in trouble. In the case of * vehicles we could give the wrong (cached) count of items in a * vehicle which causes different results when getting their caches * filled; and that could eventually lead to desyncs. */ CargoPacket::AfterLoad(); /* Oilrig was moved from id 15 to 9. We have to do this conversion * here as AfterLoadVehicles can check it indirectly via the newgrf * code. */ if (IsSavegameVersionBefore(139)) { Station *st; FOR_ALL_STATIONS(st) { if (st->airport.tile != INVALID_TILE && st->airport.type == 15) { st->airport.type = AT_OILRIG; } } } /* Update all vehicles */ AfterLoadVehicles(true); /* Make sure there is an AI attached to an AI company */ { Company *c; FOR_ALL_COMPANIES(c) { if (c->is_ai && c->ai_instance == NULL) AI::StartNew(c->index); } } /* make sure there is a town in the game */ if (_game_mode == GM_NORMAL && Town::GetNumItems() == 0) { SetSaveLoadError(STR_ERROR_NO_TOWN_IN_SCENARIO); /* Restore the signals */ ResetSignalHandlers(); return false; } /* The void tiles on the southern border used to belong to a wrong class (pre 4.3). * This problem appears in savegame version 21 too, see r3455. But after loading the * savegame and saving again, the buggy map array could be converted to new savegame * version. It didn't show up before r12070. */ if (IsSavegameVersionBefore(87)) UpdateVoidTiles(); /* If Load Scenario / New (Scenario) Game is used, * a company does not exist yet. So create one here. * 1 exception: network-games. Those can have 0 companies * But this exception is not true for non-dedicated network servers! */ if (!Company::IsValidID(COMPANY_FIRST) && (!_networking || (_networking && _network_server && !_network_dedicated))) { DoStartupNewCompany(false); Company *c = Company::Get(COMPANY_FIRST); c->settings = _settings_client.company; } /* Fix the cache for cargo payments. */ CargoPayment *cp; FOR_ALL_CARGO_PAYMENTS(cp) { cp->front->cargo_payment = cp; cp->current_station = cp->front->last_station_visited; } if (IsSavegameVersionBefore(72)) { /* Locks in very old savegames had OWNER_WATER as owner */ for (TileIndex t = 0; t < MapSize(); t++) { switch (GetTileType(t)) { default: break; case MP_WATER: if (GetWaterTileType(t) == WATER_TILE_LOCK && GetTileOwner(t) == OWNER_WATER) SetTileOwner(t, OWNER_NONE); break; case MP_STATION: { if (HasBit(_m[t].m6, 3)) SetBit(_m[t].m6, 2); StationGfx gfx = GetStationGfx(t); StationType st; if ( IsInsideMM(gfx, 0, 8)) { // Rail station st = STATION_RAIL; SetStationGfx(t, gfx - 0); } else if (IsInsideMM(gfx, 8, 67)) { // Airport st = STATION_AIRPORT; SetStationGfx(t, gfx - 8); } else if (IsInsideMM(gfx, 67, 71)) { // Truck st = STATION_TRUCK; SetStationGfx(t, gfx - 67); } else if (IsInsideMM(gfx, 71, 75)) { // Bus st = STATION_BUS; SetStationGfx(t, gfx - 71); } else if (gfx == 75) { // Oil rig st = STATION_OILRIG; SetStationGfx(t, gfx - 75); } else if (IsInsideMM(gfx, 76, 82)) { // Dock st = STATION_DOCK; SetStationGfx(t, gfx - 76); } else if (gfx == 82) { // Buoy st = STATION_BUOY; SetStationGfx(t, gfx - 82); } else if (IsInsideMM(gfx, 83, 168)) { // Extended airport st = STATION_AIRPORT; SetStationGfx(t, gfx - 83 + 67 - 8); } else if (IsInsideMM(gfx, 168, 170)) { // Drive through truck st = STATION_TRUCK; SetStationGfx(t, gfx - 168 + GFX_TRUCK_BUS_DRIVETHROUGH_OFFSET); } else if (IsInsideMM(gfx, 170, 172)) { // Drive through bus st = STATION_BUS; SetStationGfx(t, gfx - 170 + GFX_TRUCK_BUS_DRIVETHROUGH_OFFSET); } else { /* Restore the signals */ ResetSignalHandlers(); return false; } SB(_m[t].m6, 3, 3, st); break; } } } } for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_STATION: { BaseStation *bst = BaseStation::GetByTile(t); /* Set up station spread */ bst->rect.BeforeAddTile(t, StationRect::ADD_FORCE); /* Waypoints don't have road stops/oil rigs in the old format */ if (!Station::IsExpected(bst)) break; Station *st = Station::From(bst); switch (GetStationType(t)) { case STATION_TRUCK: case STATION_BUS: if (IsSavegameVersionBefore(6)) { /* Before version 5 you could not have more than 250 stations. * Version 6 adds large maps, so you could only place 253*253 * road stops on a map (no freeform edges) = 64009. So, yes * someone could in theory create such a full map to trigger * this assertion, it's safe to assume that's only something * theoretical and does not happen in normal games. */ assert(RoadStop::CanAllocateItem()); /* From this version on there can be multiple road stops of the * same type per station. Convert the existing stops to the new * internal data structure. */ RoadStop *rs = new RoadStop(t); RoadStop **head = IsTruckStop(t) ? &st->truck_stops : &st->bus_stops; *head = rs; } break; case STATION_OILRIG: { /* Very old savegames sometimes have phantom oil rigs, i.e. * an oil rig which got shut down, but not completely removed from * the map */ TileIndex t1 = TILE_ADDXY(t, 0, 1); if (IsTileType(t1, MP_INDUSTRY) && GetIndustryGfx(t1) == GFX_OILRIG_1) { /* The internal encoding of oil rigs was changed twice. * It was 3 (till 2.2) and later 5 (till 5.1). * Setting it unconditionally does not hurt. */ Station::GetByTile(t)->airport.type = AT_OILRIG; } else { DeleteOilRig(t); } break; } default: break; } break; } default: break; } } /* In version 2.2 of the savegame, we have new airports, so status of all aircraft is reset. * This has to be called after the oilrig airport_type update above ^^^ ! */ if (IsSavegameVersionBefore(2, 2)) UpdateOldAircraft(); /* In version 6.1 we put the town index in the map-array. To do this, we need * to use m2 (16bit big), so we need to clean m2, and that is where this is * all about ;) */ if (IsSavegameVersionBefore(6, 1)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_HOUSE: _m[t].m4 = _m[t].m2; SetTownIndex(t, CalcClosestTownFromTile(t)->index); break; case MP_ROAD: _m[t].m4 |= (_m[t].m2 << 4); if ((GB(_m[t].m5, 4, 2) == ROAD_TILE_CROSSING ? (Owner)_m[t].m3 : GetTileOwner(t)) == OWNER_TOWN) { SetTownIndex(t, CalcClosestTownFromTile(t)->index); } else { SetTownIndex(t, 0); } break; default: break; } } } /* Force the freeform edges to false for old savegames. */ if (IsSavegameVersionBefore(111)) { _settings_game.construction.freeform_edges = false; } /* From version 9.0, we update the max passengers of a town (was sometimes negative * before that. */ if (IsSavegameVersionBefore(9)) { Town *t; FOR_ALL_TOWNS(t) UpdateTownMaxPass(t); } /* From version 16.0, we included autorenew on engines, which are now saved, but * of course, we do need to initialize them for older savegames. */ if (IsSavegameVersionBefore(16)) { Company *c; FOR_ALL_COMPANIES(c) { c->engine_renew_list = NULL; c->settings.engine_renew = false; c->settings.engine_renew_months = 6; c->settings.engine_renew_money = 100000; } /* When loading a game, _local_company is not yet set to the correct value. * However, in a dedicated server we are a spectator, so nothing needs to * happen. In case we are not a dedicated server, the local company always * becomes company 0, unless we are in the scenario editor where all the * companies are 'invalid'. */ c = Company::GetIfValid(COMPANY_FIRST); if (!_network_dedicated && c != NULL) { c->settings = _settings_client.company; } } if (IsSavegameVersionBefore(48)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: if (IsPlainRail(t)) { /* Swap ground type and signal type for plain rail tiles, so the * ground type uses the same bits as for depots and waypoints. */ uint tmp = GB(_m[t].m4, 0, 4); SB(_m[t].m4, 0, 4, GB(_m[t].m2, 0, 4)); SB(_m[t].m2, 0, 4, tmp); } else if (HasBit(_m[t].m5, 2)) { /* Split waypoint and depot rail type and remove the subtype. */ ClrBit(_m[t].m5, 2); ClrBit(_m[t].m5, 6); } break; case MP_ROAD: /* Swap m3 and m4, so the track type for rail crossings is the * same as for normal rail. */ Swap(_m[t].m3, _m[t].m4); break; default: break; } } } if (IsSavegameVersionBefore(61)) { /* Added the RoadType */ bool old_bridge = IsSavegameVersionBefore(42); for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_ROAD: SB(_m[t].m5, 6, 2, GB(_m[t].m5, 4, 2)); switch (GetRoadTileType(t)) { default: SlErrorCorrupt("Invalid road tile type"); case ROAD_TILE_NORMAL: SB(_m[t].m4, 0, 4, GB(_m[t].m5, 0, 4)); SB(_m[t].m4, 4, 4, 0); SB(_m[t].m6, 2, 4, 0); break; case ROAD_TILE_CROSSING: SB(_m[t].m4, 5, 2, GB(_m[t].m5, 2, 2)); break; case ROAD_TILE_DEPOT: break; } SetRoadTypes(t, ROADTYPES_ROAD); break; case MP_STATION: if (IsRoadStop(t)) SetRoadTypes(t, ROADTYPES_ROAD); break; case MP_TUNNELBRIDGE: /* Middle part of "old" bridges */ if (old_bridge && IsBridge(t) && HasBit(_m[t].m5, 6)) break; if (((old_bridge && IsBridge(t)) ? (TransportType)GB(_m[t].m5, 1, 2) : GetTunnelBridgeTransportType(t)) == TRANSPORT_ROAD) { SetRoadTypes(t, ROADTYPES_ROAD); } break; default: break; } } } if (IsSavegameVersionBefore(114)) { bool fix_roadtypes = !IsSavegameVersionBefore(61); bool old_bridge = IsSavegameVersionBefore(42); for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_ROAD: if (fix_roadtypes) SetRoadTypes(t, (RoadTypes)GB(_me[t].m7, 5, 3)); SB(_me[t].m7, 5, 1, GB(_m[t].m3, 7, 1)); // snow/desert switch (GetRoadTileType(t)) { default: SlErrorCorrupt("Invalid road tile type"); case ROAD_TILE_NORMAL: SB(_me[t].m7, 0, 4, GB(_m[t].m3, 0, 4)); // road works SB(_m[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground SB(_m[t].m3, 0, 4, GB(_m[t].m4, 4, 4)); // tram bits SB(_m[t].m3, 4, 4, GB(_m[t].m5, 0, 4)); // tram owner SB(_m[t].m5, 0, 4, GB(_m[t].m4, 0, 4)); // road bits break; case ROAD_TILE_CROSSING: SB(_me[t].m7, 0, 5, GB(_m[t].m4, 0, 5)); // road owner SB(_m[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground SB(_m[t].m3, 4, 4, GB(_m[t].m5, 0, 4)); // tram owner SB(_m[t].m5, 0, 1, GB(_m[t].m4, 6, 1)); // road axis SB(_m[t].m5, 5, 1, GB(_m[t].m4, 5, 1)); // crossing state break; case ROAD_TILE_DEPOT: break; } if (!IsRoadDepot(t) && !HasTownOwnedRoad(t)) { const Town *town = CalcClosestTownFromTile(t); if (town != NULL) SetTownIndex(t, town->index); } _m[t].m4 = 0; break; case MP_STATION: if (!IsRoadStop(t)) break; if (fix_roadtypes) SetRoadTypes(t, (RoadTypes)GB(_m[t].m3, 0, 3)); SB(_me[t].m7, 0, 5, HasBit(_m[t].m6, 2) ? OWNER_TOWN : GetTileOwner(t)); SB(_m[t].m3, 4, 4, _m[t].m1); _m[t].m4 = 0; break; case MP_TUNNELBRIDGE: if (old_bridge && IsBridge(t) && HasBit(_m[t].m5, 6)) break; if (((old_bridge && IsBridge(t)) ? (TransportType)GB(_m[t].m5, 1, 2) : GetTunnelBridgeTransportType(t)) == TRANSPORT_ROAD) { if (fix_roadtypes) SetRoadTypes(t, (RoadTypes)GB(_m[t].m3, 0, 3)); Owner o = GetTileOwner(t); SB(_me[t].m7, 0, 5, o); // road owner SB(_m[t].m3, 4, 4, o == OWNER_NONE ? OWNER_TOWN : o); // tram owner } SB(_m[t].m6, 2, 4, GB(_m[t].m2, 4, 4)); // bridge type SB(_me[t].m7, 5, 1, GB(_m[t].m4, 7, 1)); // snow/desert _m[t].m2 = 0; _m[t].m4 = 0; break; default: break; } } } if (IsSavegameVersionBefore(42)) { Vehicle *v; for (TileIndex t = 0; t < map_size; t++) { if (MayHaveBridgeAbove(t)) ClearBridgeMiddle(t); if (IsBridgeTile(t)) { if (HasBit(_m[t].m5, 6)) { // middle part Axis axis = (Axis)GB(_m[t].m5, 0, 1); if (HasBit(_m[t].m5, 5)) { // transport route under bridge? if (GB(_m[t].m5, 3, 2) == TRANSPORT_RAIL) { MakeRailNormal( t, GetTileOwner(t), axis == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X, GetRailType(t) ); } else { TownID town = IsTileOwner(t, OWNER_TOWN) ? ClosestTownFromTile(t, UINT_MAX)->index : 0; MakeRoadNormal( t, axis == AXIS_X ? ROAD_Y : ROAD_X, ROADTYPES_ROAD, town, GetTileOwner(t), OWNER_NONE ); } } else { if (GB(_m[t].m5, 3, 2) == 0) { MakeClear(t, CLEAR_GRASS, 3); } else { if (GetTileSlope(t) != SLOPE_FLAT) { MakeShore(t); } else { if (GetTileOwner(t) == OWNER_WATER) { MakeSea(t); } else { MakeCanal(t, GetTileOwner(t), Random()); } } } } SetBridgeMiddle(t, axis); } else { // ramp Axis axis = (Axis)GB(_m[t].m5, 0, 1); uint north_south = GB(_m[t].m5, 5, 1); DiagDirection dir = ReverseDiagDir(XYNSToDiagDir(axis, north_south)); TransportType type = (TransportType)GB(_m[t].m5, 1, 2); _m[t].m5 = 1 << 7 | type << 2 | dir; } } } FOR_ALL_VEHICLES(v) { if (!v->IsGroundVehicle()) continue; if (IsBridgeTile(v->tile)) { DiagDirection dir = GetTunnelBridgeDirection(v->tile); if (dir != DirToDiagDir(v->direction)) continue; switch (dir) { default: SlErrorCorrupt("Invalid vehicle direction"); case DIAGDIR_NE: if ((v->x_pos & 0xF) != 0) continue; break; case DIAGDIR_SE: if ((v->y_pos & 0xF) != TILE_SIZE - 1) continue; break; case DIAGDIR_SW: if ((v->x_pos & 0xF) != TILE_SIZE - 1) continue; break; case DIAGDIR_NW: if ((v->y_pos & 0xF) != 0) continue; break; } } else if (v->z_pos > GetSlopePixelZ(v->x_pos, v->y_pos)) { v->tile = GetNorthernBridgeEnd(v->tile); } else { continue; } if (v->type == VEH_TRAIN) { Train::From(v)->track = TRACK_BIT_WORMHOLE; } else { RoadVehicle::From(v)->state = RVSB_WORMHOLE; } } } /* Elrails got added in rev 24 */ if (IsSavegameVersionBefore(24)) { RailType min_rail = RAILTYPE_ELECTRIC; Train *v; FOR_ALL_TRAINS(v) { RailType rt = RailVehInfo(v->engine_type)->railtype; v->railtype = rt; if (rt == RAILTYPE_ELECTRIC) min_rail = RAILTYPE_RAIL; } /* .. so we convert the entire map from normal to elrail (so maintain "fairness") */ for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: SetRailType(t, UpdateRailType(GetRailType(t), min_rail)); break; case MP_ROAD: if (IsLevelCrossing(t)) { SetRailType(t, UpdateRailType(GetRailType(t), min_rail)); } break; case MP_STATION: if (HasStationRail(t)) { SetRailType(t, UpdateRailType(GetRailType(t), min_rail)); } break; case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) { SetRailType(t, UpdateRailType(GetRailType(t), min_rail)); } break; default: break; } } FOR_ALL_TRAINS(v) { if (v->IsFrontEngine() || v->IsFreeWagon()) v->ConsistChanged(true); } } /* In version 16.1 of the savegame a company can decide if trains, which get * replaced, shall keep their old length. In all prior versions, just default * to false */ if (IsSavegameVersionBefore(16, 1)) { Company *c; FOR_ALL_COMPANIES(c) c->settings.renew_keep_length = false; } if (IsSavegameVersionBefore(123)) { /* Waypoints became subclasses of stations ... */ MoveWaypointsToBaseStations(); /* ... and buoys were moved to waypoints. */ MoveBuoysToWaypoints(); } /* From version 15, we moved a semaphore bit from bit 2 to bit 3 in m4, making * room for PBS. Now in version 21 move it back :P. */ if (IsSavegameVersionBefore(21) && !IsSavegameVersionBefore(15)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: if (HasSignals(t)) { /* Original signal type/variant was stored in m4 but since saveload * version 48 they are in m2. The bits has been already moved to m2 * (see the code somewhere above) so don't use m4, use m2 instead. */ /* convert PBS signals to combo-signals */ if (HasBit(_m[t].m2, 2)) SB(_m[t].m2, 0, 2, SIGTYPE_COMBO); /* move the signal variant back */ SB(_m[t].m2, 2, 1, HasBit(_m[t].m2, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC); ClrBit(_m[t].m2, 3); } /* Clear PBS reservation on track */ if (!IsRailDepotTile(t)) { SB(_m[t].m4, 4, 4, 0); } else { ClrBit(_m[t].m3, 6); } break; case MP_STATION: // Clear PBS reservation on station ClrBit(_m[t].m3, 6); break; default: break; } } } if (IsSavegameVersionBefore(25)) { RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { rv->vehstatus &= ~0x40; } } if (IsSavegameVersionBefore(26)) { Station *st; FOR_ALL_STATIONS(st) { st->last_vehicle_type = VEH_INVALID; } } YapfNotifyTrackLayoutChange(INVALID_TILE, INVALID_TRACK); if (IsSavegameVersionBefore(34)) { Company *c; FOR_ALL_COMPANIES(c) ResetCompanyLivery(c); } Company *c; FOR_ALL_COMPANIES(c) { c->avail_railtypes = GetCompanyRailtypes(c->index); c->avail_roadtypes = GetCompanyRoadtypes(c->index); } if (!IsSavegameVersionBefore(27)) AfterLoadStations(); /* Time starts at 0 instead of 1920. * Account for this in older games by adding an offset */ if (IsSavegameVersionBefore(31)) { Station *st; Waypoint *wp; Engine *e; Industry *i; Vehicle *v; _date += DAYS_TILL_ORIGINAL_BASE_YEAR; _cur_year += ORIGINAL_BASE_YEAR; FOR_ALL_STATIONS(st) st->build_date += DAYS_TILL_ORIGINAL_BASE_YEAR; FOR_ALL_WAYPOINTS(wp) wp->build_date += DAYS_TILL_ORIGINAL_BASE_YEAR; FOR_ALL_ENGINES(e) e->intro_date += DAYS_TILL_ORIGINAL_BASE_YEAR; FOR_ALL_COMPANIES(c) c->inaugurated_year += ORIGINAL_BASE_YEAR; FOR_ALL_INDUSTRIES(i) i->last_prod_year += ORIGINAL_BASE_YEAR; FOR_ALL_VEHICLES(v) { v->date_of_last_service += DAYS_TILL_ORIGINAL_BASE_YEAR; v->build_year += ORIGINAL_BASE_YEAR; } } /* From 32 on we save the industry who made the farmland. * To give this prettiness to old savegames, we remove all farmfields and * plant new ones. */ if (IsSavegameVersionBefore(32)) { Industry *i; for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_FIELDS)) { /* remove fields */ MakeClear(t, CLEAR_GRASS, 3); } } FOR_ALL_INDUSTRIES(i) { uint j; if (GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_PLANT_ON_BUILT) { for (j = 0; j != 50; j++) PlantRandomFarmField(i); } } } /* Setting no refit flags to all orders in savegames from before refit in orders were added */ if (IsSavegameVersionBefore(36)) { Order *order; Vehicle *v; FOR_ALL_ORDERS(order) { order->SetRefit(CT_NO_REFIT); } FOR_ALL_VEHICLES(v) { v->current_order.SetRefit(CT_NO_REFIT); } } /* from version 38 we have optional elrails, since we cannot know the * preference of a user, let elrails enabled; it can be disabled manually */ if (IsSavegameVersionBefore(38)) _settings_game.vehicle.disable_elrails = false; /* do the same as when elrails were enabled/disabled manually just now */ SettingsDisableElrail(_settings_game.vehicle.disable_elrails); InitializeRailGUI(); /* From version 53, the map array was changed for house tiles to allow * space for newhouses grf features. A new byte, m7, was also added. */ if (IsSavegameVersionBefore(53)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_HOUSE)) { if (GB(_m[t].m3, 6, 2) != TOWN_HOUSE_COMPLETED) { /* Move the construction stage from m3[7..6] to m5[5..4]. * The construction counter does not have to move. */ SB(_m[t].m5, 3, 2, GB(_m[t].m3, 6, 2)); SB(_m[t].m3, 6, 2, 0); /* The "house is completed" bit is now in m6[2]. */ SetHouseCompleted(t, false); } else { /* The "lift has destination" bit has been moved from * m5[7] to m7[0]. */ SB(_me[t].m7, 0, 1, HasBit(_m[t].m5, 7)); ClrBit(_m[t].m5, 7); /* The "lift is moving" bit has been removed, as it does * the same job as the "lift has destination" bit. */ ClrBit(_m[t].m1, 7); /* The position of the lift goes from m1[7..0] to m6[7..2], * making m1 totally free, now. The lift position does not * have to be a full byte since the maximum value is 36. */ SetLiftPosition(t, GB(_m[t].m1, 0, 6 )); _m[t].m1 = 0; _m[t].m3 = 0; SetHouseCompleted(t, true); } } } } /* Check and update house and town values */ UpdateHousesAndTowns(); if (IsSavegameVersionBefore(43)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_INDUSTRY)) { switch (GetIndustryGfx(t)) { case GFX_POWERPLANT_SPARKS: _m[t].m3 = GB(_m[t].m1, 2, 5); break; case GFX_OILWELL_ANIMATED_1: case GFX_OILWELL_ANIMATED_2: case GFX_OILWELL_ANIMATED_3: _m[t].m3 = GB(_m[t].m1, 0, 2); break; case GFX_COAL_MINE_TOWER_ANIMATED: case GFX_COPPER_MINE_TOWER_ANIMATED: case GFX_GOLD_MINE_TOWER_ANIMATED: _m[t].m3 = _m[t].m1; break; default: // No animation states to change break; } } } } if (IsSavegameVersionBefore(45)) { Vehicle *v; /* Originally just the fact that some cargo had been paid for was * stored to stop people cheating and cashing in several times. This * wasn't enough though as it was cleared when the vehicle started * loading again, even if it didn't actually load anything, so now the * amount that has been paid is stored. */ FOR_ALL_VEHICLES(v) { ClrBit(v->vehicle_flags, 2); } } /* Buoys do now store the owner of the previous water tile, which can never * be OWNER_NONE. So replace OWNER_NONE with OWNER_WATER. */ if (IsSavegameVersionBefore(46)) { Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { if ((wp->facilities & FACIL_DOCK) != 0 && IsTileOwner(wp->xy, OWNER_NONE) && TileHeight(wp->xy) == 0) SetTileOwner(wp->xy, OWNER_WATER); } } if (IsSavegameVersionBefore(50)) { Aircraft *v; /* Aircraft units changed from 8 mph to 1 km-ish/h */ FOR_ALL_AIRCRAFT(v) { if (v->subtype <= AIR_AIRCRAFT) { const AircraftVehicleInfo *avi = AircraftVehInfo(v->engine_type); v->cur_speed *= 128; v->cur_speed /= 10; v->acceleration = avi->acceleration; } } } if (IsSavegameVersionBefore(49)) FOR_ALL_COMPANIES(c) c->face = ConvertFromOldCompanyManagerFace(c->face); if (IsSavegameVersionBefore(52)) { for (TileIndex t = 0; t < map_size; t++) { if (IsStatueTile(t)) { _m[t].m2 = CalcClosestTownFromTile(t)->index; } } } /* A setting containing the proportion of towns that grow twice as * fast was added in version 54. From version 56 this is now saved in the * town as cities can be built specifically in the scenario editor. */ if (IsSavegameVersionBefore(56)) { Town *t; FOR_ALL_TOWNS(t) { if (_settings_game.economy.larger_towns != 0 && (t->index % _settings_game.economy.larger_towns) == 0) { t->larger_town = true; } } } if (IsSavegameVersionBefore(57)) { Vehicle *v; /* Added a FIFO queue of vehicles loading at stations */ FOR_ALL_VEHICLES(v) { if ((v->type != VEH_TRAIN || Train::From(v)->IsFrontEngine()) && // for all locs !(v->vehstatus & (VS_STOPPED | VS_CRASHED)) && // not stopped or crashed v->current_order.IsType(OT_LOADING)) { // loading Station::Get(v->last_station_visited)->loading_vehicles.push_back(v); /* The loading finished flag is *only* set when actually completely * finished. Because the vehicle is loading, it is not finished. */ ClrBit(v->vehicle_flags, VF_LOADING_FINISHED); } } } else if (IsSavegameVersionBefore(59)) { /* For some reason non-loading vehicles could be in the station's loading vehicle list */ Station *st; FOR_ALL_STATIONS(st) { std::list::iterator iter; for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end();) { Vehicle *v = *iter; iter++; if (!v->current_order.IsType(OT_LOADING)) st->loading_vehicles.remove(v); } } } if (IsSavegameVersionBefore(58)) { /* Setting difficulty industry_density other than zero get bumped to +1 * since a new option (very low at position 1) has been added */ if (_settings_game.difficulty.industry_density > 0) { _settings_game.difficulty.industry_density++; } /* Same goes for number of towns, although no test is needed, just an increment */ _settings_game.difficulty.number_towns++; } if (IsSavegameVersionBefore(64)) { /* Since now we allow different signal types and variants on a single tile. * Move signal states to m4 to make room and clone the signal type/variant. */ for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) { /* move signal states */ SetSignalStates(t, GB(_m[t].m2, 4, 4)); SB(_m[t].m2, 4, 4, 0); /* clone signal type and variant */ SB(_m[t].m2, 4, 3, GB(_m[t].m2, 0, 3)); } } } if (IsSavegameVersionBefore(69)) { /* In some old savegames a bit was cleared when it should not be cleared */ RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->state == 250 || rv->state == 251) { SetBit(rv->state, 2); } } } if (IsSavegameVersionBefore(70)) { /* Added variables to support newindustries */ Industry *i; FOR_ALL_INDUSTRIES(i) i->founder = OWNER_NONE; } /* From version 82, old style canals (above sealevel (0), WATER owner) are no longer supported. Replace the owner for those by OWNER_NONE. */ if (IsSavegameVersionBefore(82)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_WATER) && GetWaterTileType(t) == WATER_TILE_CLEAR && GetTileOwner(t) == OWNER_WATER && TileHeight(t) != 0) { SetTileOwner(t, OWNER_NONE); } } } /* * Add the 'previous' owner to the ship depots so we can reset it with * the correct values when it gets destroyed. This prevents that * someone can remove canals owned by somebody else and it prevents * making floods using the removal of ship depots. */ if (IsSavegameVersionBefore(83)) { for (TileIndex t = 0; t < map_size; t++) { if (IsShipDepotTile(t)) { _m[t].m4 = (TileHeight(t) == 0) ? OWNER_WATER : OWNER_NONE; } } } if (IsSavegameVersionBefore(74)) { Station *st; FOR_ALL_STATIONS(st) { for (CargoID c = 0; c < NUM_CARGO; c++) { st->goods[c].last_speed = 0; if (st->goods[c].cargo.Count() != 0) SetBit(st->goods[c].acceptance_pickup, GoodsEntry::GES_PICKUP); } } } if (IsSavegameVersionBefore(78)) { Industry *i; uint j; FOR_ALL_INDUSTRIES(i) { const IndustrySpec *indsp = GetIndustrySpec(i->type); for (j = 0; j < lengthof(i->produced_cargo); j++) { i->produced_cargo[j] = indsp->produced_cargo[j]; } for (j = 0; j < lengthof(i->accepts_cargo); j++) { i->accepts_cargo[j] = indsp->accepts_cargo[j]; } } } /* Before version 81, the density of grass was always stored as zero, and * grassy trees were always drawn fully grassy. Furthermore, trees on rough * land used to have zero density, now they have full density. Therefore, * make all grassy/rough land trees have a density of 3. */ if (IsSavegameVersionBefore(81)) { for (TileIndex t = 0; t < map_size; t++) { if (GetTileType(t) == MP_TREES) { TreeGround groundType = (TreeGround)GB(_m[t].m2, 4, 2); if (groundType != TREE_GROUND_SNOW_DESERT) SB(_m[t].m2, 6, 2, 3); } } } if (IsSavegameVersionBefore(93)) { /* Rework of orders. */ Order *order; FOR_ALL_ORDERS(order) order->ConvertFromOldSavegame(); Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->orders.list != NULL && v->orders.list->GetFirstOrder() != NULL && v->orders.list->GetFirstOrder()->IsType(OT_NOTHING)) { v->orders.list->FreeChain(); v->orders.list = NULL; } v->current_order.ConvertFromOldSavegame(); if (v->type == VEH_ROAD && v->IsPrimaryVehicle() && v->FirstShared() == v) { FOR_VEHICLE_ORDERS(v, order) order->SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } } } else if (IsSavegameVersionBefore(94)) { /* Unload and transfer are now mutual exclusive. */ Order *order; FOR_ALL_ORDERS(order) { if ((order->GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) == (OUFB_UNLOAD | OUFB_TRANSFER)) { order->SetUnloadType(OUFB_TRANSFER); order->SetLoadType(OLFB_NO_LOAD); } } Vehicle *v; FOR_ALL_VEHICLES(v) { if ((v->current_order.GetUnloadType() & (OUFB_UNLOAD | OUFB_TRANSFER)) == (OUFB_UNLOAD | OUFB_TRANSFER)) { v->current_order.SetUnloadType(OUFB_TRANSFER); v->current_order.SetLoadType(OLFB_NO_LOAD); } } } if (IsSavegameVersionBefore(84)) { /* Set all share owners to INVALID_COMPANY for * 1) all inactive companies * (when inactive companies were stored in the savegame - TTD, TTDP and some * *really* old revisions of OTTD; else it is already set in InitializeCompanies()) * 2) shares that are owned by inactive companies or self * (caused by cheating clients in earlier revisions) */ FOR_ALL_COMPANIES(c) { for (uint i = 0; i < 4; i++) { CompanyID company = c->share_owners[i]; if (company == INVALID_COMPANY) continue; if (!Company::IsValidID(company) || company == c->index) c->share_owners[i] = INVALID_COMPANY; } } } /* The water class was moved/unified. */ if (IsSavegameVersionBefore(146)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_STATION: switch (GetStationType(t)) { case STATION_OILRIG: case STATION_DOCK: case STATION_BUOY: SetWaterClass(t, (WaterClass)GB(_m[t].m3, 0, 2)); SB(_m[t].m3, 0, 2, 0); break; default: SetWaterClass(t, WATER_CLASS_INVALID); break; } break; case MP_WATER: SetWaterClass(t, (WaterClass)GB(_m[t].m3, 0, 2)); SB(_m[t].m3, 0, 2, 0); break; case MP_OBJECT: SetWaterClass(t, WATER_CLASS_INVALID); break; default: /* No water class. */ break; } } } if (IsSavegameVersionBefore(86)) { for (TileIndex t = 0; t < map_size; t++) { /* Move river flag and update canals to use water class */ if (IsTileType(t, MP_WATER)) { if (GetWaterClass(t) != WATER_CLASS_RIVER) { if (IsWater(t)) { Owner o = GetTileOwner(t); if (o == OWNER_WATER) { MakeSea(t); } else { MakeCanal(t, o, Random()); } } else if (IsShipDepot(t)) { Owner o = (Owner)_m[t].m4; // Original water owner SetWaterClass(t, o == OWNER_WATER ? WATER_CLASS_SEA : WATER_CLASS_CANAL); } } } } /* Update locks, depots, docks and buoys to have a water class based * on its neighbouring tiles. Done after river and canal updates to * ensure neighbours are correct. */ for (TileIndex t = 0; t < map_size; t++) { if (GetTileSlope(t) != SLOPE_FLAT) continue; if (IsTileType(t, MP_WATER) && IsLock(t)) SetWaterClassDependingOnSurroundings(t, false); if (IsTileType(t, MP_STATION) && (IsDock(t) || IsBuoy(t))) SetWaterClassDependingOnSurroundings(t, false); } } if (IsSavegameVersionBefore(87)) { for (TileIndex t = 0; t < map_size; t++) { /* skip oil rigs at borders! */ if ((IsTileType(t, MP_WATER) || IsBuoyTile(t)) && (TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() - 1 || TileY(t) == MapMaxY() - 1)) { /* Some version 86 savegames have wrong water class at map borders (under buoy, or after removing buoy). * This conversion has to be done before buoys with invalid owner are removed. */ SetWaterClass(t, WATER_CLASS_SEA); } if (IsBuoyTile(t) || IsDriveThroughStopTile(t) || IsTileType(t, MP_WATER)) { Owner o = GetTileOwner(t); if (o < MAX_COMPANIES && !Company::IsValidID(o)) { Backup cur_company(_current_company, o, FILE_LINE); ChangeTileOwner(t, o, INVALID_OWNER); cur_company.Restore(); } if (IsBuoyTile(t)) { /* reset buoy owner to OWNER_NONE in the station struct * (even if it is owned by active company) */ Waypoint::GetByTile(t)->owner = OWNER_NONE; } } else if (IsTileType(t, MP_ROAD)) { /* works for all RoadTileType */ for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) { /* update even non-existing road types to update tile owner too */ Owner o = GetRoadOwner(t, rt); if (o < MAX_COMPANIES && !Company::IsValidID(o)) SetRoadOwner(t, rt, OWNER_NONE); } if (IsLevelCrossing(t)) { if (!Company::IsValidID(GetTileOwner(t))) FixOwnerOfRailTrack(t); } } else if (IsPlainRailTile(t)) { if (!Company::IsValidID(GetTileOwner(t))) FixOwnerOfRailTrack(t); } } /* Convert old PF settings to new */ if (_settings_game.pf.yapf.rail_use_yapf || IsSavegameVersionBefore(28)) { _settings_game.pf.pathfinder_for_trains = VPF_YAPF; } else { _settings_game.pf.pathfinder_for_trains = VPF_NPF; } if (_settings_game.pf.yapf.road_use_yapf || IsSavegameVersionBefore(28)) { _settings_game.pf.pathfinder_for_roadvehs = VPF_YAPF; } else { _settings_game.pf.pathfinder_for_roadvehs = VPF_NPF; } if (_settings_game.pf.yapf.ship_use_yapf) { _settings_game.pf.pathfinder_for_ships = VPF_YAPF; } else { _settings_game.pf.pathfinder_for_ships = (_settings_game.pf.new_pathfinding_all ? VPF_NPF : VPF_OPF); } } if (IsSavegameVersionBefore(88)) { /* Profits are now with 8 bit fract */ Vehicle *v; FOR_ALL_VEHICLES(v) { v->profit_this_year <<= 8; v->profit_last_year <<= 8; v->running_ticks = 0; } } if (IsSavegameVersionBefore(91)) { /* Increase HouseAnimationFrame from 5 to 7 bits */ for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_HOUSE) && GetHouseType(t) >= NEW_HOUSE_OFFSET) { SB(_m[t].m6, 2, 6, GB(_m[t].m6, 3, 5)); SB(_m[t].m3, 5, 1, 0); } } } if (IsSavegameVersionBefore(62)) { /* Remove all trams from savegames without tram support. * There would be trams without tram track under causing crashes sooner or later. */ RoadVehicle *v; FOR_ALL_ROADVEHICLES(v) { if (v->First() == v && HasBit(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM)) { ShowErrorMessage(STR_WARNING_LOADGAME_REMOVED_TRAMS, INVALID_STRING_ID, WL_CRITICAL); delete v; } } } if (IsSavegameVersionBefore(99)) { for (TileIndex t = 0; t < map_size; t++) { /* Set newly introduced WaterClass of industry tiles */ if (IsTileType(t, MP_STATION) && IsOilRig(t)) { SetWaterClassDependingOnSurroundings(t, true); } if (IsTileType(t, MP_INDUSTRY)) { if ((GetIndustrySpec(GetIndustryType(t))->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0) { SetWaterClassDependingOnSurroundings(t, true); } else { SetWaterClass(t, WATER_CLASS_INVALID); } } /* Replace "house construction year" with "house age" */ if (IsTileType(t, MP_HOUSE) && IsHouseCompleted(t)) { _m[t].m5 = Clamp(_cur_year - (_m[t].m5 + ORIGINAL_BASE_YEAR), 0, 0xFF); } } } /* Move the signal variant back up one bit for PBS. We don't convert the old PBS * format here, as an old layout wouldn't work properly anyway. To be safe, we * clear any possible PBS reservations as well. */ if (IsSavegameVersionBefore(100)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: if (HasSignals(t)) { /* move the signal variant */ SetSignalVariant(t, TRACK_UPPER, HasBit(_m[t].m2, 2) ? SIG_SEMAPHORE : SIG_ELECTRIC); SetSignalVariant(t, TRACK_LOWER, HasBit(_m[t].m2, 6) ? SIG_SEMAPHORE : SIG_ELECTRIC); ClrBit(_m[t].m2, 2); ClrBit(_m[t].m2, 6); } /* Clear PBS reservation on track */ if (IsRailDepot(t)) { SetDepotReservation(t, false); } else { SetTrackReservation(t, TRACK_BIT_NONE); } break; case MP_ROAD: // Clear PBS reservation on crossing if (IsLevelCrossing(t)) SetCrossingReservation(t, false); break; case MP_STATION: // Clear PBS reservation on station if (HasStationRail(t)) SetRailStationReservation(t, false); break; case MP_TUNNELBRIDGE: // Clear PBS reservation on tunnels/bridges if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) SetTunnelBridgeReservation(t, false); break; default: break; } } } /* Reserve all tracks trains are currently on. */ if (IsSavegameVersionBefore(101)) { const Train *t; FOR_ALL_TRAINS(t) { if (t->First() == t) t->ReserveTrackUnderConsist(); } } if (IsSavegameVersionBefore(102)) { for (TileIndex t = 0; t < map_size; t++) { /* Now all crossings should be in correct state */ if (IsLevelCrossingTile(t)) UpdateLevelCrossing(t, false); } } if (IsSavegameVersionBefore(103)) { /* Non-town-owned roads now store the closest town */ UpdateNearestTownForRoadTiles(false); /* signs with invalid owner left from older savegames */ Sign *si; FOR_ALL_SIGNS(si) { if (si->owner != OWNER_NONE && !Company::IsValidID(si->owner)) si->owner = OWNER_NONE; } /* Station can get named based on an industry type, but the current ones * are not, so mark them as if they are not named by an industry. */ Station *st; FOR_ALL_STATIONS(st) { st->indtype = IT_INVALID; } } if (IsSavegameVersionBefore(104)) { Aircraft *a; FOR_ALL_AIRCRAFT(a) { /* Set engine_type of shadow and rotor */ if (!a->IsNormalAircraft()) { a->engine_type = a->First()->engine_type; } } /* More companies ... */ Company *c; FOR_ALL_COMPANIES(c) { if (c->bankrupt_asked == 0xFF) c->bankrupt_asked = 0xFFFF; } Engine *e; FOR_ALL_ENGINES(e) { if (e->company_avail == 0xFF) e->company_avail = 0xFFFF; } Town *t; FOR_ALL_TOWNS(t) { if (t->have_ratings == 0xFF) t->have_ratings = 0xFFFF; for (uint i = 8; i != MAX_COMPANIES; i++) t->ratings[i] = RATING_INITIAL; } } if (IsSavegameVersionBefore(112)) { for (TileIndex t = 0; t < map_size; t++) { /* Check for HQ bit being set, instead of using map accessor, * since we've already changed it code-wise */ if (IsTileType(t, MP_OBJECT) && HasBit(_m[t].m5, 7)) { /* Move size and part identification of HQ out of the m5 attribute, * on new locations */ _m[t].m3 = GB(_m[t].m5, 0, 5); _m[t].m5 = OBJECT_HQ; } } } if (IsSavegameVersionBefore(144)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_OBJECT)) continue; /* Reordering/generalisation of the object bits. */ ObjectType type = GetObjectType(t); SB(_m[t].m6, 2, 4, type == OBJECT_HQ ? GB(_m[t].m3, 2, 3) : 0); _m[t].m3 = type == OBJECT_HQ ? GB(_m[t].m3, 1, 1) | GB(_m[t].m3, 0, 1) << 4 : 0; /* Make sure those bits are clear as well! */ _m[t].m4 = 0; _me[t].m7 = 0; } } if (IsSavegameVersionBefore(147) && Object::GetNumItems() == 0) { /* Make real objects for object tiles. */ for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_OBJECT)) continue; if (Town::GetNumItems() == 0) { /* No towns, so remove all objects! */ DoClearSquare(t); } else { uint offset = _m[t].m3; /* Also move the animation state. */ _m[t].m3 = GB(_m[t].m6, 2, 4); SB(_m[t].m6, 2, 4, 0); if (offset == 0) { /* No offset, so make the object. */ ObjectType type = GetObjectType(t); int size = type == OBJECT_HQ ? 2 : 1; if (!Object::CanAllocateItem()) { /* Nice... you managed to place 64k lighthouses and * antennae on the map... boohoo. */ SlError(STR_ERROR_TOO_MANY_OBJECTS); } Object *o = new Object(); o->location.tile = t; o->location.w = size; o->location.h = size; o->build_date = _date; o->town = type == OBJECT_STATUE ? Town::Get(_m[t].m2) : CalcClosestTownFromTile(t, UINT_MAX); _m[t].m2 = o->index; Object::IncTypeCount(type); } else { /* We're at an offset, so get the ID from our "root". */ TileIndex northern_tile = t - TileXY(GB(offset, 0, 4), GB(offset, 4, 4)); assert(IsTileType(northern_tile, MP_OBJECT)); _m[t].m2 = _m[northern_tile].m2; } } } } if (IsSavegameVersionBefore(113)) { /* allow_town_roads is added, set it if town_layout wasn't TL_NO_ROADS */ if (_settings_game.economy.town_layout == 0) { // was TL_NO_ROADS _settings_game.economy.allow_town_roads = false; _settings_game.economy.town_layout = TL_BETTER_ROADS; } else { _settings_game.economy.allow_town_roads = true; _settings_game.economy.town_layout = _settings_game.economy.town_layout - 1; } /* Initialize layout of all towns. Older versions were using different * generator for random town layout, use it if needed. */ Town *t; FOR_ALL_TOWNS(t) { if (_settings_game.economy.town_layout != TL_RANDOM) { t->layout = _settings_game.economy.town_layout; continue; } /* Use old layout randomizer code */ byte layout = TileHash(TileX(t->xy), TileY(t->xy)) % 6; switch (layout) { default: break; case 5: layout = 1; break; case 0: layout = 2; break; } t->layout = layout - 1; } } if (IsSavegameVersionBefore(114)) { /* There could be (deleted) stations with invalid owner, set owner to OWNER NONE. * The conversion affects oil rigs and buoys too, but it doesn't matter as * they have st->owner == OWNER_NONE already. */ Station *st; FOR_ALL_STATIONS(st) { if (!Company::IsValidID(st->owner)) st->owner = OWNER_NONE; } } /* Trains could now stop in a specific location. */ if (IsSavegameVersionBefore(117)) { Order *o; FOR_ALL_ORDERS(o) { if (o->IsType(OT_GOTO_STATION)) o->SetStopLocation(OSL_PLATFORM_FAR_END); } } if (IsSavegameVersionBefore(120)) { extern VehicleDefaultSettings _old_vds; Company *c; FOR_ALL_COMPANIES(c) { c->settings.vehicle = _old_vds; } } if (IsSavegameVersionBefore(121)) { /* Delete small ufos heading for non-existing vehicles */ Vehicle *v; FOR_ALL_DISASTERVEHICLES(v) { if (v->subtype == 2/*ST_SMALL_UFO*/ && v->current_order.GetDestination() != 0) { const Vehicle *u = Vehicle::GetIfValid(v->dest_tile); if (u == NULL || u->type != VEH_ROAD || !RoadVehicle::From(u)->IsFrontEngine()) { delete v; } } } /* We didn't store cargo payment yet, so make them for vehicles that are * currently at a station and loading/unloading. If they don't get any * payment anymore they just removed in the next load/unload cycle. * However, some 0.7 versions might have cargo payment. For those we just * add cargopayment for the vehicles that don't have it. */ Station *st; FOR_ALL_STATIONS(st) { std::list::iterator iter; for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end(); ++iter) { /* There are always as many CargoPayments as Vehicles. We need to make the * assert() in Pool::GetNew() happy by calling CanAllocateItem(). */ assert_compile(CargoPaymentPool::MAX_SIZE == VehiclePool::MAX_SIZE); assert(CargoPayment::CanAllocateItem()); Vehicle *v = *iter; if (v->cargo_payment == NULL) v->cargo_payment = new CargoPayment(v); } } } if (IsSavegameVersionBefore(122)) { /* Animated tiles would sometimes not be actually animated or * in case of old savegames duplicate. */ extern TileIndex *_animated_tile_list; extern uint _animated_tile_count; for (uint i = 0; i < _animated_tile_count; /* Nothing */) { /* Remove if tile is not animated */ bool remove = _tile_type_procs[GetTileType(_animated_tile_list[i])]->animate_tile_proc == NULL; /* and remove if duplicate */ for (uint j = 0; !remove && j < i; j++) { remove = _animated_tile_list[i] == _animated_tile_list[j]; } if (remove) { DeleteAnimatedTile(_animated_tile_list[i]); } else { i++; } } } if (IsSavegameVersionBefore(124) && !IsSavegameVersionBefore(1)) { /* The train station tile area was added, but for really old (TTDPatch) it's already valid. */ Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { if (wp->facilities & FACIL_TRAIN) { wp->train_station.tile = wp->xy; wp->train_station.w = 1; wp->train_station.h = 1; } else { wp->train_station.tile = INVALID_TILE; wp->train_station.w = 0; wp->train_station.h = 0; } } } if (IsSavegameVersionBefore(125)) { /* Convert old subsidies */ Subsidy *s; FOR_ALL_SUBSIDIES(s) { if (s->remaining < 12) { /* Converting nonawarded subsidy */ s->remaining = 12 - s->remaining; // convert "age" to "remaining" s->awarded = INVALID_COMPANY; // not awarded to anyone const CargoSpec *cs = CargoSpec::Get(s->cargo_type); switch (cs->town_effect) { case TE_PASSENGERS: case TE_MAIL: /* Town -> Town */ s->src_type = s->dst_type = ST_TOWN; if (Town::IsValidID(s->src) && Town::IsValidID(s->dst)) continue; break; case TE_GOODS: case TE_FOOD: /* Industry -> Town */ s->src_type = ST_INDUSTRY; s->dst_type = ST_TOWN; if (Industry::IsValidID(s->src) && Town::IsValidID(s->dst)) continue; break; default: /* Industry -> Industry */ s->src_type = s->dst_type = ST_INDUSTRY; if (Industry::IsValidID(s->src) && Industry::IsValidID(s->dst)) continue; break; } } else { /* Do our best for awarded subsidies. The original source or destination industry * can't be determined anymore for awarded subsidies, so invalidate them. * Town -> Town subsidies are converted using simple heuristic */ s->remaining = 24 - s->remaining; // convert "age of awarded subsidy" to "remaining" const CargoSpec *cs = CargoSpec::Get(s->cargo_type); switch (cs->town_effect) { case TE_PASSENGERS: case TE_MAIL: { /* Town -> Town */ const Station *ss = Station::GetIfValid(s->src); const Station *sd = Station::GetIfValid(s->dst); if (ss != NULL && sd != NULL && ss->owner == sd->owner && Company::IsValidID(ss->owner)) { s->src_type = s->dst_type = ST_TOWN; s->src = ss->town->index; s->dst = sd->town->index; s->awarded = ss->owner; continue; } break; } default: break; } } /* Awarded non-town subsidy or invalid source/destination, invalidate */ delete s; } } if (IsSavegameVersionBefore(126)) { /* Recompute inflation based on old unround loan limit * Note: Max loan is 500000. With an inflation of 4% across 170 years * that results in a max loan of about 0.7 * 2^31. * So taking the 16 bit fractional part into account there are plenty of bits left * for unmodified savegames ... */ uint64 aimed_inflation = (_economy.old_max_loan_unround << 16 | _economy.old_max_loan_unround_fract) / _settings_game.difficulty.max_loan; /* ... well, just clamp it then. */ if (aimed_inflation > MAX_INFLATION) aimed_inflation = MAX_INFLATION; /* Simulate the inflation, so we also get the payment inflation */ while (_economy.inflation_prices < aimed_inflation) { if (AddInflation(false)) break; } } if (IsSavegameVersionBefore(127)) { Station *st; FOR_ALL_STATIONS(st) UpdateStationAcceptance(st, false); } if (IsSavegameVersionBefore(128)) { const Depot *d; FOR_ALL_DEPOTS(d) { _m[d->xy].m2 = d->index; if (IsTileType(d->xy, MP_WATER)) _m[GetOtherShipDepotTile(d->xy)].m2 = d->index; } } /* The behaviour of force_proceed has been changed. Now * it counts signals instead of some random time out. */ if (IsSavegameVersionBefore(131)) { Train *t; FOR_ALL_TRAINS(t) { if (t->force_proceed != TFP_NONE) { t->force_proceed = TFP_STUCK; } } } /* The bits for the tree ground and tree density have * been swapped (m2 bits 7..6 and 5..4. */ if (IsSavegameVersionBefore(135)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_CLEAR)) { if (GetRawClearGround(t) == CLEAR_SNOW) { SetClearGroundDensity(t, CLEAR_GRASS, GetClearDensity(t)); SetBit(_m[t].m3, 4); } else { ClrBit(_m[t].m3, 4); } } if (IsTileType(t, MP_TREES)) { uint density = GB(_m[t].m2, 6, 2); uint ground = GB(_m[t].m2, 4, 2); uint counter = GB(_m[t].m2, 0, 4); _m[t].m2 = ground << 6 | density << 4 | counter; } } } /* Wait counter and load/unload ticks got split. */ if (IsSavegameVersionBefore(136)) { Aircraft *a; FOR_ALL_AIRCRAFT(a) { a->turn_counter = a->current_order.IsType(OT_LOADING) ? 0 : a->load_unload_ticks; } Train *t; FOR_ALL_TRAINS(t) { t->wait_counter = t->current_order.IsType(OT_LOADING) ? 0 : t->load_unload_ticks; } } /* Airport tile animation uses animation frame instead of other graphics id */ if (IsSavegameVersionBefore(137)) { struct AirportTileConversion { byte old_start; byte num_frames; }; static const AirportTileConversion atc[] = { {31, 12}, // APT_RADAR_GRASS_FENCE_SW {50, 4}, // APT_GRASS_FENCE_NE_FLAG {62, 2}, // 1 unused tile {66, 12}, // APT_RADAR_FENCE_SW {78, 12}, // APT_RADAR_FENCE_NE {101, 10}, // 9 unused tiles {111, 8}, // 7 unused tiles {119, 15}, // 14 unused tiles (radar) {140, 4}, // APT_GRASS_FENCE_NE_FLAG_2 }; for (TileIndex t = 0; t < map_size; t++) { if (IsAirportTile(t)) { StationGfx old_gfx = GetStationGfx(t); byte offset = 0; for (uint i = 0; i < lengthof(atc); i++) { if (old_gfx < atc[i].old_start) { SetStationGfx(t, old_gfx - offset); break; } if (old_gfx < atc[i].old_start + atc[i].num_frames) { SetAnimationFrame(t, old_gfx - atc[i].old_start); SetStationGfx(t, atc[i].old_start - offset); break; } offset += atc[i].num_frames - 1; } } } } if (IsSavegameVersionBefore(140)) { Station *st; FOR_ALL_STATIONS(st) { if (st->airport.tile != INVALID_TILE) { st->airport.w = st->airport.GetSpec()->size_x; st->airport.h = st->airport.GetSpec()->size_y; } } } if (IsSavegameVersionBefore(141)) { for (TileIndex t = 0; t < map_size; t++) { /* Reset tropic zone for VOID tiles, they shall not have any. */ if (IsTileType(t, MP_VOID)) SetTropicZone(t, TROPICZONE_NORMAL); } /* We need to properly number/name the depots. * The first step is making sure none of the depots uses the * 'default' names, after that we can assign the names. */ Depot *d; FOR_ALL_DEPOTS(d) d->town_cn = UINT16_MAX; FOR_ALL_DEPOTS(d) MakeDefaultName(d); } if (IsSavegameVersionBefore(142)) { Depot *d; FOR_ALL_DEPOTS(d) d->build_date = _date; } /* In old versions it was possible to remove an airport while a plane was * taking off or landing. This gives all kind of problems when building * another airport in the same station so we don't allow that anymore. * For old savegames with such aircraft we just throw them in the air and * treat the aircraft like they were flying already. */ if (IsSavegameVersionBefore(146)) { Aircraft *v; FOR_ALL_AIRCRAFT(v) { if (!v->IsNormalAircraft()) continue; Station *st = GetTargetAirportIfValid(v); if (st == NULL && v->state != FLYING) { v->state = FLYING; UpdateAircraftCache(v); AircraftNextAirportPos_and_Order(v); /* get aircraft back on running altitude */ if ((v->vehstatus & VS_CRASHED) == 0) SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlyingAltitude(v)); } } } /* Move the animation frame to the same location (m7) for all objects. */ if (IsSavegameVersionBefore(147)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_HOUSE: if (GetHouseType(t) >= NEW_HOUSE_OFFSET) { uint per_proc = _me[t].m7; _me[t].m7 = GB(_m[t].m6, 2, 6) | (GB(_m[t].m3, 5, 1) << 6); SB(_m[t].m3, 5, 1, 0); SB(_m[t].m6, 2, 6, min(per_proc, 63)); } break; case MP_INDUSTRY: { uint rand = _me[t].m7; _me[t].m7 = _m[t].m3; _m[t].m3 = rand; break; } case MP_OBJECT: _me[t].m7 = _m[t].m3; _m[t].m3 = 0; break; default: /* For stations/airports it's already at m7 */ break; } } } /* Add (random) colour to all objects. */ if (IsSavegameVersionBefore(148)) { Object *o; FOR_ALL_OBJECTS(o) { Owner owner = GetTileOwner(o->location.tile); o->colour = (owner == OWNER_NONE) ? Random() & 0xF : Company::Get(owner)->livery->colour1; } } if (IsSavegameVersionBefore(149)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_STATION)) continue; if (!IsBuoy(t) && !IsOilRig(t) && !(IsDock(t) && GetTileSlope(t) == SLOPE_FLAT)) { SetWaterClass(t, WATER_CLASS_INVALID); } } /* Waypoints with custom name may have a non-unique town_cn, * renumber those. First set all affected waypoints to the * highest possible number to get them numbered in the * order they have in the pool. */ Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { if (wp->name != NULL) wp->town_cn = UINT16_MAX; } FOR_ALL_WAYPOINTS(wp) { if (wp->name != NULL) MakeDefaultName(wp); } } if (IsSavegameVersionBefore(152)) { _industry_builder.Reset(); // Initialize industry build data. /* The moment vehicles go from hidden to visible changed. This means * that vehicles don't always get visible anymore causing things to * get messed up just after loading the savegame. This fixes that. */ Vehicle *v; FOR_ALL_VEHICLES(v) { /* Not all vehicle types can be inside a tunnel. Furthermore, * testing IsTunnelTile() for invalid tiles causes a crash. */ if (!v->IsGroundVehicle()) continue; /* Is the vehicle in a tunnel? */ if (!IsTunnelTile(v->tile)) continue; /* Is the vehicle actually at a tunnel entrance/exit? */ TileIndex vtile = TileVirtXY(v->x_pos, v->y_pos); if (!IsTunnelTile(vtile)) continue; /* Are we actually in this tunnel? Or maybe a lower tunnel? */ if (GetSlopePixelZ(v->x_pos, v->y_pos) != v->z_pos) continue; /* What way are we going? */ const DiagDirection dir = GetTunnelBridgeDirection(vtile); const DiagDirection vdir = DirToDiagDir(v->direction); /* Have we passed the visibility "switch" state already? */ byte pos = (DiagDirToAxis(vdir) == AXIS_X ? v->x_pos : v->y_pos) & TILE_UNIT_MASK; byte frame = (vdir == DIAGDIR_NE || vdir == DIAGDIR_NW) ? TILE_SIZE - 1 - pos : pos; extern const byte _tunnel_visibility_frame[DIAGDIR_END]; /* Should the vehicle be hidden or not? */ bool hidden; if (dir == vdir) { // Entering tunnel hidden = frame >= _tunnel_visibility_frame[dir]; v->tile = vtile; } else if (dir == ReverseDiagDir(vdir)) { // Leaving tunnel hidden = frame < TILE_SIZE - _tunnel_visibility_frame[dir]; /* v->tile changes at the moment when the vehicle leaves the tunnel. */ v->tile = hidden ? GetOtherTunnelBridgeEnd(vtile) : vtile; } else { /* We could get here in two cases: * - for road vehicles, it is reversing at the end of the tunnel * - it is crashed in the tunnel entry (both train or RV destroyed by UFO) * Whatever case it is, do not change anything and use the old values. * Especially changing RV's state would break its reversing in the middle. */ continue; } if (hidden) { v->vehstatus |= VS_HIDDEN; switch (v->type) { case VEH_TRAIN: Train::From(v)->track = TRACK_BIT_WORMHOLE; break; case VEH_ROAD: RoadVehicle::From(v)->state = RVSB_WORMHOLE; break; default: NOT_REACHED(); } } else { v->vehstatus &= ~VS_HIDDEN; switch (v->type) { case VEH_TRAIN: Train::From(v)->track = DiagDirToDiagTrackBits(vdir); break; case VEH_ROAD: RoadVehicle::From(v)->state = DiagDirToDiagTrackdir(vdir); RoadVehicle::From(v)->frame = frame; break; default: NOT_REACHED(); } } } } if (IsSavegameVersionBefore(153)) { RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->state == RVSB_IN_DEPOT || rv->state == RVSB_WORMHOLE) continue; bool loading = rv->current_order.IsType(OT_LOADING) || rv->current_order.IsType(OT_LEAVESTATION); if (HasBit(rv->state, RVS_IN_ROAD_STOP)) { extern const byte _road_stop_stop_frame[]; SB(rv->state, RVS_ENTERED_STOP, 1, loading || rv->frame > _road_stop_stop_frame[rv->state - RVSB_IN_ROAD_STOP + (_settings_game.vehicle.road_side << RVS_DRIVE_SIDE)]); } else if (HasBit(rv->state, RVS_IN_DT_ROAD_STOP)) { SB(rv->state, RVS_ENTERED_STOP, 1, loading || rv->frame > RVC_DRIVE_THROUGH_STOP_FRAME); } } } if (IsSavegameVersionBefore(156)) { /* The train's pathfinder lost flag got moved. */ Train *t; FOR_ALL_TRAINS(t) { if (!HasBit(t->flags, 5)) continue; ClrBit(t->flags, 5); SetBit(t->vehicle_flags, VF_PATHFINDER_LOST); } /* Introduced terraform/clear limits. */ Company *c; FOR_ALL_COMPANIES(c) { c->terraform_limit = _settings_game.construction.terraform_frame_burst << 16; c->clear_limit = _settings_game.construction.clear_frame_burst << 16; } } if (IsSavegameVersionBefore(158)) { Vehicle *v; FOR_ALL_VEHICLES(v) { switch (v->type) { case VEH_TRAIN: { Train *t = Train::From(v); /* Clear old GOINGUP / GOINGDOWN flags. * It was changed in savegame version 139, but savegame * version 158 doesn't use these bits, so it doesn't hurt * to clear them unconditionally. */ ClrBit(t->flags, 1); ClrBit(t->flags, 2); /* Clear both bits first. */ ClrBit(t->gv_flags, GVF_GOINGUP_BIT); ClrBit(t->gv_flags, GVF_GOINGDOWN_BIT); /* Crashed vehicles can't be going up/down. */ if (t->vehstatus & VS_CRASHED) break; /* Only X/Y tracks can be sloped. */ if (t->track != TRACK_BIT_X && t->track != TRACK_BIT_Y) break; t->gv_flags |= FixVehicleInclination(t, t->direction); break; } case VEH_ROAD: { RoadVehicle *rv = RoadVehicle::From(v); ClrBit(rv->gv_flags, GVF_GOINGUP_BIT); ClrBit(rv->gv_flags, GVF_GOINGDOWN_BIT); /* Crashed vehicles can't be going up/down. */ if (rv->vehstatus & VS_CRASHED) break; if (rv->state == RVSB_IN_DEPOT || rv->state == RVSB_WORMHOLE) break; TrackStatus ts = GetTileTrackStatus(rv->tile, TRANSPORT_ROAD, rv->compatible_roadtypes); TrackBits trackbits = TrackStatusToTrackBits(ts); /* Only X/Y tracks can be sloped. */ if (trackbits != TRACK_BIT_X && trackbits != TRACK_BIT_Y) break; Direction dir = rv->direction; /* Test if we are reversing. */ Axis a = trackbits == TRACK_BIT_X ? AXIS_X : AXIS_Y; if (AxisToDirection(a) != dir && AxisToDirection(a) != ReverseDir(dir)) { /* When reversing, the road vehicle is on the edge of the tile, * so it can be safely compared to the middle of the tile. */ dir = INVALID_DIR; } rv->gv_flags |= FixVehicleInclination(rv, dir); break; } case VEH_SHIP: break; default: continue; } if (IsBridgeTile(v->tile) && TileVirtXY(v->x_pos, v->y_pos) == v->tile) { /* In old versions, z_pos was 1 unit lower on bridge heads. * However, this invalid state could be converted to new savegames * by loading and saving the game in a new version. */ v->z_pos = GetSlopePixelZ(v->x_pos, v->y_pos); DiagDirection dir = GetTunnelBridgeDirection(v->tile); if (v->type == VEH_TRAIN && !(v->vehstatus & VS_CRASHED) && v->direction != DiagDirToDir(dir)) { /* If the train has left the bridge, it shouldn't have * track == TRACK_BIT_WORMHOLE - this could happen * when the train was reversed while on the last "tick" * on the ramp before leaving the ramp to the bridge. */ Train::From(v)->track = DiagDirToDiagTrackBits(dir); } } /* If the vehicle is really above v->tile (not in a wormhole), * it should have set v->z_pos correctly. */ assert(v->tile != TileVirtXY(v->x_pos, v->y_pos) || v->z_pos == GetSlopePixelZ(v->x_pos, v->y_pos)); } /* Fill Vehicle::cur_real_order_index */ FOR_ALL_VEHICLES(v) { if (!v->IsPrimaryVehicle()) continue; /* Older versions are less strict with indices being in range and fix them on the fly */ if (v->cur_implicit_order_index >= v->GetNumOrders()) v->cur_implicit_order_index = 0; v->cur_real_order_index = v->cur_implicit_order_index; v->UpdateRealOrderIndex(); } } if (IsSavegameVersionBefore(159)) { /* If the savegame is old (before version 100), then the value of 255 * for these settings did not mean "disabled". As such everything * before then did reverse. * To simplify stuff we disable all turning around or we do not * disable anything at all. So, if some reversing was disabled we * will keep reversing disabled, otherwise it'll be turned on. */ _settings_game.pf.reverse_at_signals = IsSavegameVersionBefore(100) || (_settings_game.pf.wait_oneway_signal != 255 && _settings_game.pf.wait_twoway_signal != 255 && _settings_game.pf.wait_for_pbs_path != 255); Train *t; FOR_ALL_TRAINS(t) { _settings_game.vehicle.max_train_length = max(_settings_game.vehicle.max_train_length, CeilDiv(t->gcache.cached_total_length, TILE_SIZE)); } } if (IsSavegameVersionBefore(160)) { /* Setting difficulty industry_density other than zero get bumped to +1 * since a new option (minimal at position 1) has been added */ if (_settings_game.difficulty.industry_density > 0) { _settings_game.difficulty.industry_density++; } } if (IsSavegameVersionBefore(161)) { /* Before savegame version 161, persistent storages were not stored in a pool. */ if (!IsSavegameVersionBefore(76)) { Industry *ind; FOR_ALL_INDUSTRIES(ind) { assert(ind->psa != NULL); /* Check if the old storage was empty. */ bool is_empty = true; for (uint i = 0; i < sizeof(ind->psa->storage); i++) { if (ind->psa->GetValue(i) != 0) { is_empty = false; break; } } if (!is_empty) { ind->psa->grfid = _industry_mngr.GetGRFID(ind->type); } else { delete ind->psa; ind->psa = NULL; } } } if (!IsSavegameVersionBefore(145)) { Station *st; FOR_ALL_STATIONS(st) { if (!(st->facilities & FACIL_AIRPORT)) continue; assert(st->airport.psa != NULL); /* Check if the old storage was empty. */ bool is_empty = true; for (uint i = 0; i < sizeof(st->airport.psa->storage); i++) { if (st->airport.psa->GetValue(i) != 0) { is_empty = false; break; } } if (!is_empty) { st->airport.psa->grfid = _airport_mngr.GetGRFID(st->airport.type); } else { delete st->airport.psa; st->airport.psa = NULL; } } } } /* This triggers only when old snow_lines were copied into the snow_line_height. */ if (IsSavegameVersionBefore(164) && _settings_game.game_creation.snow_line_height >= MIN_SNOWLINE_HEIGHT * TILE_HEIGHT) { _settings_game.game_creation.snow_line_height /= TILE_HEIGHT; } if (IsSavegameVersionBefore(164) && !IsSavegameVersionBefore(32)) { /* We store 4 fences in the field tiles instead of only SE and SW. */ for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_CLEAR) && !IsTileType(t, MP_TREES)) continue; if (IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_FIELDS)) continue; uint fence = GB(_m[t].m4, 5, 3); if (fence != 0 && IsTileType(TILE_ADDXY(t, 1, 0), MP_CLEAR) && IsClearGround(TILE_ADDXY(t, 1, 0), CLEAR_FIELDS)) { SetFenceNE(TILE_ADDXY(t, 1, 0), fence); } fence = GB(_m[t].m4, 2, 3); if (fence != 0 && IsTileType(TILE_ADDXY(t, 0, 1), MP_CLEAR) && IsClearGround(TILE_ADDXY(t, 0, 1), CLEAR_FIELDS)) { SetFenceNW(TILE_ADDXY(t, 0, 1), fence); } SB(_m[t].m4, 2, 3, 0); SB(_m[t].m4, 5, 3, 0); } } /* The center of train vehicles was changed, fix up spacing. */ if (IsSavegameVersionBefore(164)) FixupTrainLengths(); if (IsSavegameVersionBefore(165)) { Town *t; FOR_ALL_TOWNS(t) { /* Set the default cargo requirement for town growth */ switch (_settings_game.game_creation.landscape) { case LT_ARCTIC: if (FindFirstCargoWithTownEffect(TE_FOOD) != NULL) t->goal[TE_FOOD] = TOWN_GROWTH_WINTER; break; case LT_TROPIC: if (FindFirstCargoWithTownEffect(TE_FOOD) != NULL) t->goal[TE_FOOD] = TOWN_GROWTH_DESERT; if (FindFirstCargoWithTownEffect(TE_WATER) != NULL) t->goal[TE_WATER] = TOWN_GROWTH_DESERT; break; } } } if (IsSavegameVersionBefore(165)) { /* Adjust zoom level to account for new levels */ _saved_scrollpos_zoom = _saved_scrollpos_zoom + ZOOM_LVL_SHIFT; _saved_scrollpos_x *= ZOOM_LVL_BASE; _saved_scrollpos_y *= ZOOM_LVL_BASE; } /* When any NewGRF has been changed the availability of some vehicles might * have been changed too. e->company_avail must be set to 0 in that case * which is done by StartupEngines(). */ if (gcf_res != GLC_ALL_GOOD) StartupEngines(); if (IsSavegameVersionBefore(166)) { /* Update cargo acceptance map of towns. */ for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_HOUSE)) continue; Town::Get(GetTownIndex(t))->cargo_accepted.Add(t); } Town *town; FOR_ALL_TOWNS(town) { UpdateTownCargoes(town); } } /* The road owner of standard road stops was not properly accounted for. */ if (IsSavegameVersionBefore(172)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsStandardRoadStopTile(t)) continue; Owner o = GetTileOwner(t); SetRoadOwner(t, ROADTYPE_ROAD, o); SetRoadOwner(t, ROADTYPE_TRAM, o); } } if (IsSavegameVersionBefore(175)) { /* Introduced tree planting limit. */ Company *c; FOR_ALL_COMPANIES(c) c->tree_limit = _settings_game.construction.tree_frame_burst << 16; } if (IsSavegameVersionBefore(177)) { /* Fix too high inflation rates */ if (_economy.inflation_prices > MAX_INFLATION) _economy.inflation_prices = MAX_INFLATION; if (_economy.inflation_payment > MAX_INFLATION) _economy.inflation_payment = MAX_INFLATION; /* We have to convert the quarters of bankruptcy into months of bankruptcy */ FOR_ALL_COMPANIES(c) { c->months_of_bankruptcy = 3 * c->months_of_bankruptcy; } } if (IsSavegameVersionBefore(178)) { extern uint8 _old_diff_level; /* Initialise script settings profile */ _settings_game.script.settings_profile = IsInsideMM(_old_diff_level, SP_BEGIN, SP_END) ? _old_diff_level : (uint)SP_MEDIUM; } if (IsSavegameVersionBefore(182)) { Aircraft *v; /* Aircraft acceleration variable was bonkers */ FOR_ALL_AIRCRAFT(v) { if (v->subtype <= AIR_AIRCRAFT) { const AircraftVehicleInfo *avi = AircraftVehInfo(v->engine_type); v->acceleration = avi->acceleration; } } /* Blocked tiles could be reserved due to a bug, which causes * other places to assert upon e.g. station reconstruction. */ for (TileIndex t = 0; t < map_size; t++) { if (HasStationTileRail(t) && IsStationTileBlocked(t)) { SetRailStationReservation(t, false); } } } /* Road stops is 'only' updating some caches */ AfterLoadRoadStops(); AfterLoadLabelMaps(); AfterLoadCompanyStats(); GamelogPrintDebug(1); InitializeWindowsAndCaches(); /* Restore the signals */ ResetSignalHandlers(); return true; } /** * Reload all NewGRF files during a running game. This is a cut-down * version of AfterLoadGame(). * XXX - We need to reset the vehicle position hash because with a non-empty * hash AfterLoadVehicles() will loop infinitely. We need AfterLoadVehicles() * to recalculate vehicle data as some NewGRF vehicle sets could have been * removed or added and changed statistics */ void ReloadNewGRFData() { /* reload grf data */ GfxLoadSprites(); LoadStringWidthTable(); RecomputePrices(); /* reload vehicles */ ResetVehicleHash(); AfterLoadVehicles(false); StartupEngines(); GroupStatistics::UpdateAfterLoad(); /* update station graphics */ AfterLoadStations(); /* Update company statistics. */ AfterLoadCompanyStats(); /* Check and update house and town values */ UpdateHousesAndTowns(); /* Delete news referring to no longer existing entities */ DeleteInvalidEngineNews(); /* Update livery selection windows */ for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) InvalidateWindowData(WC_COMPANY_COLOUR, i); /* Update company infrastructure counts. */ InvalidateWindowClassesData(WC_COMPANY_INFRASTRUCTURE); /* redraw the whole screen */ MarkWholeScreenDirty(); CheckTrainsLengths(); } openttd-1.3.3/src/saveload/subsidy_sl.cpp0000644000000000000000000000357312246102605017150 0ustar rootroot/* $Id: subsidy_sl.cpp 19973 2010-06-13 14:11:59Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file subsidy_sl.cpp Code handling saving and loading of subsidies */ #include "../stdafx.h" #include "../subsidy_base.h" #include "saveload.h" static const SaveLoad _subsidies_desc[] = { SLE_VAR(Subsidy, cargo_type, SLE_UINT8), SLE_VAR(Subsidy, remaining, SLE_UINT8), SLE_CONDVAR(Subsidy, awarded, SLE_UINT8, 125, SL_MAX_VERSION), SLE_CONDVAR(Subsidy, src_type, SLE_UINT8, 125, SL_MAX_VERSION), SLE_CONDVAR(Subsidy, dst_type, SLE_UINT8, 125, SL_MAX_VERSION), SLE_CONDVAR(Subsidy, src, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), SLE_CONDVAR(Subsidy, src, SLE_UINT16, 5, SL_MAX_VERSION), SLE_CONDVAR(Subsidy, dst, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), SLE_CONDVAR(Subsidy, dst, SLE_UINT16, 5, SL_MAX_VERSION), SLE_END() }; static void Save_SUBS() { Subsidy *s; FOR_ALL_SUBSIDIES(s) { SlSetArrayIndex(s->index); SlObject(s, _subsidies_desc); } } static void Load_SUBS() { int index; while ((index = SlIterateArray()) != -1) { Subsidy *s = new (index) Subsidy(); SlObject(s, _subsidies_desc); } } extern const ChunkHandler _subsidy_chunk_handlers[] = { { 'SUBS', Save_SUBS, Load_SUBS, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/cargomonitor_sl.cpp0000644000000000000000000000546512246102605020173 0ustar rootroot/* $Id: cargomonitor_sl.cpp 24405 2012-07-15 17:07:06Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargomonitor_sl.cpp Code handling saving and loading of Cargo monitoring. */ #include "../stdafx.h" #include "../cargomonitor.h" #include "saveload.h" /** Temporary storage of cargo monitoring data for loading or saving it. */ struct TempStorage { CargoMonitorID number; uint32 amount; }; /** Description of the #TempStorage structure for the purpose of load and save. */ static const SaveLoad _cargomonitor_pair_desc[] = { SLE_VAR(TempStorage, number, SLE_UINT32), SLE_VAR(TempStorage, amount, SLE_UINT32), SLE_END() }; /** Save the #_cargo_deliveries monitoring map. */ static void SaveDelivery() { TempStorage storage; int i = 0; CargoMonitorMap::const_iterator iter = _cargo_deliveries.begin(); while (iter != _cargo_deliveries.end()) { storage.number = iter->first; storage.amount = iter->second; SlSetArrayIndex(i); SlObject(&storage, _cargomonitor_pair_desc); i++; iter++; } } /** Load the #_cargo_deliveries monitoring map. */ static void LoadDelivery() { TempStorage storage; ClearCargoDeliveryMonitoring(); for (;;) { if (SlIterateArray() < 0) break; SlObject(&storage, _cargomonitor_pair_desc); std::pair p(storage.number, storage.amount); _cargo_deliveries.insert(p); } } /** Save the #_cargo_pickups monitoring map. */ static void SavePickup() { TempStorage storage; int i = 0; CargoMonitorMap::const_iterator iter = _cargo_pickups.begin(); while (iter != _cargo_pickups.end()) { storage.number = iter->first; storage.amount = iter->second; SlSetArrayIndex(i); SlObject(&storage, _cargomonitor_pair_desc); i++; iter++; } } /** Load the #_cargo_pickups monitoring map. */ static void LoadPickup() { TempStorage storage; ClearCargoPickupMonitoring(); for (;;) { if (SlIterateArray() < 0) break; SlObject(&storage, _cargomonitor_pair_desc); std::pair p(storage.number, storage.amount); _cargo_pickups.insert(p); } } /** Chunk definition of the cargomonitoring maps. */ extern const ChunkHandler _cargomonitor_chunk_handlers[] = { { 'CMDL', SaveDelivery, LoadDelivery, NULL, NULL, CH_ARRAY}, { 'CMPU', SavePickup, LoadPickup, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/saveload.h0000644000000000000000000005576012246102605016240 0ustar rootroot/* $Id: saveload.h 23603 2011-12-19 20:50:44Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file saveload.h Functions/types related to saving and loading games. */ #ifndef SAVELOAD_H #define SAVELOAD_H #include "../fileio_type.h" #include "../strings_type.h" /** Save or load result codes. */ enum SaveOrLoadResult { SL_OK = 0, ///< completed successfully SL_ERROR = 1, ///< error that was caught before internal structures were modified SL_REINIT = 2, ///< error that was caught in the middle of updating game state, need to clear it. (can only happen during load) }; /** Save or load mode. @see SaveOrLoad */ enum SaveOrLoadMode { SL_INVALID = -1, ///< Invalid mode. SL_LOAD = 0, ///< Load game. SL_SAVE = 1, ///< Save game. SL_OLD_LOAD = 2, ///< Load old game. SL_PNG = 3, ///< Load PNG file (height map). SL_BMP = 4, ///< Load BMP file (height map). SL_LOAD_CHECK = 5, ///< Load for game preview. }; /** Types of save games. */ enum SavegameType { SGT_TTD, ///< TTD savegame (can be detected incorrectly) SGT_TTDP1, ///< TTDP savegame ( -//- ) (data at NW border) SGT_TTDP2, ///< TTDP savegame in new format (data at SE border) SGT_OTTD, ///< OTTD savegame SGT_TTO, ///< TTO savegame SGT_INVALID = 0xFF, ///< broken savegame (used internally) }; void GenerateDefaultSaveName(char *buf, const char *last); void SetSaveLoadError(uint16 str); const char *GetSaveLoadErrorString(); SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb, bool threaded = true); void WaitTillSaved(); void ProcessAsyncSaveFinish(); void DoExitSave(); SaveOrLoadResult SaveWithFilter(struct SaveFilter *writer, bool threaded); SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader); typedef void ChunkSaveLoadProc(); typedef void AutolengthProc(void *arg); /** Handlers and description of chunk. */ struct ChunkHandler { uint32 id; ///< Unique ID (4 letters). ChunkSaveLoadProc *save_proc; ///< Save procedure of the chunk. ChunkSaveLoadProc *load_proc; ///< Load procedure of the chunk. ChunkSaveLoadProc *ptrs_proc; ///< Manipulate pointers in the chunk. ChunkSaveLoadProc *load_check_proc; ///< Load procedure for game preview. uint32 flags; ///< Flags of the chunk. @see ChunkType }; struct NullStruct { byte null; }; /** Type of reference (#SLE_REF, #SLE_CONDREF). */ enum SLRefType { REF_ORDER = 0, ///< Load/save a reference to an order. REF_VEHICLE = 1, ///< Load/save a reference to a vehicle. REF_STATION = 2, ///< Load/save a reference to a station. REF_TOWN = 3, ///< Load/save a reference to a town. REF_VEHICLE_OLD = 4, ///< Load/save an old-style reference to a vehicle (for pre-4.4 savegames). REF_ROADSTOPS = 5, ///< Load/save a reference to a bus/truck stop. REF_ENGINE_RENEWS = 6, ///< Load/save a reference to an engine renewal (autoreplace). REF_CARGO_PACKET = 7, ///< Load/save a reference to a cargo packet. REF_ORDERLIST = 8, ///< Load/save a reference to an orderlist. REF_STORAGE = 9, ///< Load/save a reference to a persistent storage. }; /** Highest possible savegame version. */ #define SL_MAX_VERSION 255 /** Flags of a chunk. */ enum ChunkType { CH_RIFF = 0, CH_ARRAY = 1, CH_SPARSE_ARRAY = 2, CH_TYPE_MASK = 3, CH_LAST = 8, ///< Last chunk in this array. CH_AUTO_LENGTH = 16, }; /** * VarTypes is the general bitmasked magic type that tells us * certain characteristics about the variable it refers to. For example * SLE_FILE_* gives the size(type) as it would be in the savegame and * SLE_VAR_* the size(type) as it is in memory during runtime. These are * the first 8 bits (0-3 SLE_FILE, 4-7 SLE_VAR). * Bits 8-15 are reserved for various flags as explained below */ enum VarTypes { /* 4 bits allocated a maximum of 16 types for NumberType */ SLE_FILE_I8 = 0, SLE_FILE_U8 = 1, SLE_FILE_I16 = 2, SLE_FILE_U16 = 3, SLE_FILE_I32 = 4, SLE_FILE_U32 = 5, SLE_FILE_I64 = 6, SLE_FILE_U64 = 7, SLE_FILE_STRINGID = 8, ///< StringID offset into strings-array SLE_FILE_STRING = 9, /* 6 more possible file-primitives */ /* 4 bits allocated a maximum of 16 types for NumberType */ SLE_VAR_BL = 0 << 4, SLE_VAR_I8 = 1 << 4, SLE_VAR_U8 = 2 << 4, SLE_VAR_I16 = 3 << 4, SLE_VAR_U16 = 4 << 4, SLE_VAR_I32 = 5 << 4, SLE_VAR_U32 = 6 << 4, SLE_VAR_I64 = 7 << 4, SLE_VAR_U64 = 8 << 4, SLE_VAR_NULL = 9 << 4, ///< useful to write zeros in savegame. SLE_VAR_STRB = 10 << 4, ///< string (with pre-allocated buffer) SLE_VAR_STRBQ = 11 << 4, ///< string enclosed in quotes (with pre-allocated buffer) SLE_VAR_STR = 12 << 4, ///< string pointer SLE_VAR_STRQ = 13 << 4, ///< string pointer enclosed in quotes SLE_VAR_NAME = 14 << 4, ///< old custom name to be converted to a char pointer /* 1 more possible memory-primitives */ /* Shortcut values */ SLE_VAR_CHAR = SLE_VAR_I8, /* Default combinations of variables. As savegames change, so can variables * and thus it is possible that the saved value and internal size do not * match and you need to specify custom combo. The defaults are listed here */ SLE_BOOL = SLE_FILE_I8 | SLE_VAR_BL, SLE_INT8 = SLE_FILE_I8 | SLE_VAR_I8, SLE_UINT8 = SLE_FILE_U8 | SLE_VAR_U8, SLE_INT16 = SLE_FILE_I16 | SLE_VAR_I16, SLE_UINT16 = SLE_FILE_U16 | SLE_VAR_U16, SLE_INT32 = SLE_FILE_I32 | SLE_VAR_I32, SLE_UINT32 = SLE_FILE_U32 | SLE_VAR_U32, SLE_INT64 = SLE_FILE_I64 | SLE_VAR_I64, SLE_UINT64 = SLE_FILE_U64 | SLE_VAR_U64, SLE_CHAR = SLE_FILE_I8 | SLE_VAR_CHAR, SLE_STRINGID = SLE_FILE_STRINGID | SLE_VAR_U16, SLE_STRINGBUF = SLE_FILE_STRING | SLE_VAR_STRB, SLE_STRINGBQUOTE = SLE_FILE_STRING | SLE_VAR_STRBQ, SLE_STRING = SLE_FILE_STRING | SLE_VAR_STR, SLE_STRINGQUOTE = SLE_FILE_STRING | SLE_VAR_STRQ, SLE_NAME = SLE_FILE_STRINGID | SLE_VAR_NAME, /* Shortcut values */ SLE_UINT = SLE_UINT32, SLE_INT = SLE_INT32, SLE_STRB = SLE_STRINGBUF, SLE_STRBQ = SLE_STRINGBQUOTE, SLE_STR = SLE_STRING, SLE_STRQ = SLE_STRINGQUOTE, /* 8 bits allocated for a maximum of 8 flags * Flags directing saving/loading of a variable */ SLF_NOT_IN_SAVE = 1 << 8, ///< do not save with savegame, basically client-based SLF_NOT_IN_CONFIG = 1 << 9, ///< do not save to config file SLF_NO_NETWORK_SYNC = 1 << 10, ///< do not synchronize over network (but it is saved if SLF_NOT_IN_SAVE is not set) SLF_ALLOW_CONTROL = 1 << 11, ///< allow control codes in the strings SLF_ALLOW_NEWLINE = 1 << 12, ///< allow new lines in the strings /* 3 more possible flags */ }; typedef uint32 VarType; /** Type of data saved. */ enum SaveLoadTypes { SL_VAR = 0, ///< Save/load a variable. SL_REF = 1, ///< Save/load a reference. SL_ARR = 2, ///< Save/load an array. SL_STR = 3, ///< Save/load a string. SL_LST = 4, ///< Save/load a list. /* non-normal save-load types */ SL_WRITEBYTE = 8, SL_VEH_INCLUDE = 9, SL_ST_INCLUDE = 10, SL_END = 15 }; typedef byte SaveLoadType; ///< Save/load type. @see SaveLoadTypes /** SaveLoad type struct. Do NOT use this directly but use the SLE_ macros defined just below! */ struct SaveLoad { bool global; ///< should we load a global variable or a non-global one SaveLoadType cmd; ///< the action to take with the saved/loaded type, All types need different action VarType conv; ///< type of the variable to be saved, int uint16 length; ///< (conditional) length of the variable (eg. arrays) (max array size is 65536 elements) uint16 version_from; ///< save/load the variable starting from this savegame version uint16 version_to; ///< save/load the variable until this savegame version /* NOTE: This element either denotes the address of the variable for a global * variable, or the offset within a struct which is then bound to a variable * during runtime. Decision on which one to use is controlled by the function * that is called to save it. address: global=true, offset: global=false */ void *address; ///< address of variable OR offset of variable in the struct (max offset is 65536) }; /** Same as #SaveLoad but global variables are used (for better readability); */ typedef SaveLoad SaveLoadGlobVarList; /** * Storage of simple variables, references (pointers), and arrays. * @param cmd Load/save type. @see SaveLoadType * @param base Name of the class or struct containing the variable. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. * @note In general, it is better to use one of the SLE_* macros below. */ #define SLE_GENERAL(cmd, base, variable, type, length, from, to) {false, cmd, type, length, from, to, (void*)cpp_offsetof(base, variable)} /** * Storage of a variable in some savegame versions. * @param base Name of the class or struct containing the variable. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. */ #define SLE_CONDVAR(base, variable, type, from, to) SLE_GENERAL(SL_VAR, base, variable, type, 0, from, to) /** * Storage of a reference in some savegame versions. * @param base Name of the class or struct containing the variable. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Type of the reference, a value from #SLRefType. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. */ #define SLE_CONDREF(base, variable, type, from, to) SLE_GENERAL(SL_REF, base, variable, type, 0, from, to) /** * Storage of an array in some savegame versions. * @param base Name of the class or struct containing the array. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the array. * @param from First savegame version that has the array. * @param to Last savegame version that has the array. */ #define SLE_CONDARR(base, variable, type, length, from, to) SLE_GENERAL(SL_ARR, base, variable, type, length, from, to) /** * Storage of a string in some savegame versions. * @param base Name of the class or struct containing the string. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the string (only used for fixed size buffers). * @param from First savegame version that has the string. * @param to Last savegame version that has the string. */ #define SLE_CONDSTR(base, variable, type, length, from, to) SLE_GENERAL(SL_STR, base, variable, type, length, from, to) /** * Storage of a list in some savegame versions. * @param base Name of the class or struct containing the list. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the list. * @param to Last savegame version that has the list. */ #define SLE_CONDLST(base, variable, type, from, to) SLE_GENERAL(SL_LST, base, variable, type, 0, from, to) /** * Storage of a variable in every version of a savegame. * @param base Name of the class or struct containing the variable. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ #define SLE_VAR(base, variable, type) SLE_CONDVAR(base, variable, type, 0, SL_MAX_VERSION) /** * Storage of a reference in every version of a savegame. * @param base Name of the class or struct containing the variable. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Type of the reference, a value from #SLRefType. */ #define SLE_REF(base, variable, type) SLE_CONDREF(base, variable, type, 0, SL_MAX_VERSION) /** * Storage of an array in every version of a savegame. * @param base Name of the class or struct containing the array. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the array. */ #define SLE_ARR(base, variable, type, length) SLE_CONDARR(base, variable, type, length, 0, SL_MAX_VERSION) /** * Storage of a string in every savegame version. * @param base Name of the class or struct containing the string. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the string (only used for fixed size buffers). */ #define SLE_STR(base, variable, type, length) SLE_CONDSTR(base, variable, type, length, 0, SL_MAX_VERSION) /** * Storage of a list in every savegame version. * @param base Name of the class or struct containing the list. * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ #define SLE_LST(base, variable, type) SLE_CONDLST(base, variable, type, 0, SL_MAX_VERSION) /** * Empty space in every savegame version. * @param length Length of the empty space. */ #define SLE_NULL(length) SLE_CONDNULL(length, 0, SL_MAX_VERSION) /** * Empty space in some savegame versions. * @param length Length of the empty space. * @param from First savegame version that has the empty space. * @param to Last savegame version that has the empty space. */ #define SLE_CONDNULL(length, from, to) SLE_CONDARR(NullStruct, null, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to) /** Translate values ingame to different values in the savegame and vv. */ #define SLE_WRITEBYTE(base, variable, value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, value, value) #define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL} #define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL} /** End marker of a struct/class save or load. */ #define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL} /** * Storage of global simple variables, references (pointers), and arrays. * @param cmd Load/save type. @see SaveLoadType * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. * @note In general, it is better to use one of the SLEG_* macros below. */ #define SLEG_GENERAL(cmd, variable, type, length, from, to) {true, cmd, type, length, from, to, (void*)&variable} /** * Storage of a global variable in some savegame versions. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. */ #define SLEG_CONDVAR(variable, type, from, to) SLEG_GENERAL(SL_VAR, variable, type, 0, from, to) /** * Storage of a global reference in some savegame versions. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the field. * @param to Last savegame version that has the field. */ #define SLEG_CONDREF(variable, type, from, to) SLEG_GENERAL(SL_REF, variable, type, 0, from, to) /** * Storage of a global array in some savegame versions. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the array. * @param from First savegame version that has the array. * @param to Last savegame version that has the array. */ #define SLEG_CONDARR(variable, type, length, from, to) SLEG_GENERAL(SL_ARR, variable, type, length, from, to) /** * Storage of a global string in some savegame versions. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the string (only used for fixed size buffers). * @param from First savegame version that has the string. * @param to Last savegame version that has the string. */ #define SLEG_CONDSTR(variable, type, length, from, to) SLEG_GENERAL(SL_STR, variable, type, length, from, to) /** * Storage of a global list in some savegame versions. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. * @param from First savegame version that has the list. * @param to Last savegame version that has the list. */ #define SLEG_CONDLST(variable, type, from, to) SLEG_GENERAL(SL_LST, variable, type, 0, from, to) /** * Storage of a global variable in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ #define SLEG_VAR(variable, type) SLEG_CONDVAR(variable, type, 0, SL_MAX_VERSION) /** * Storage of a global reference in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ #define SLEG_REF(variable, type) SLEG_CONDREF(variable, type, 0, SL_MAX_VERSION) /** * Storage of a global array in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ #define SLEG_ARR(variable, type) SLEG_CONDARR(variable, type, lengthof(variable), 0, SL_MAX_VERSION) /** * Storage of a global string in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ #define SLEG_STR(variable, type) SLEG_CONDSTR(variable, type, lengthof(variable), 0, SL_MAX_VERSION) /** * Storage of a global list in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ #define SLEG_LST(variable, type) SLEG_CONDLST(variable, type, 0, SL_MAX_VERSION) /** * Empty global space in some savegame versions. * @param length Length of the empty space. * @param from First savegame version that has the empty space. * @param to Last savegame version that has the empty space. */ #define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL} /** End marker of global variables save or load. */ #define SLEG_END() {true, SL_END, 0, 0, 0, 0, NULL} /** * Checks whether the savegame is below \a major.\a minor. * @param major Major number of the version to check against. * @param minor Minor number of the version to check against. If \a minor is 0 or not specified, only the major number is checked. * @return Savegame version is earlier than the specified version. */ static inline bool IsSavegameVersionBefore(uint16 major, byte minor = 0) { extern uint16 _sl_version; extern byte _sl_minor_version; return _sl_version < major || (minor > 0 && _sl_version == major && _sl_minor_version < minor); } /** * Checks if some version from/to combination falls within the range of the * active savegame version. * @param version_from Lowest version number that falls within the range. * @param version_to Highest version number that falls within the range. * @return Active savegame version falls within the given range. */ static inline bool SlIsObjectCurrentlyValid(uint16 version_from, uint16 version_to) { extern const uint16 SAVEGAME_VERSION; if (SAVEGAME_VERSION < version_from || SAVEGAME_VERSION > version_to) return false; return true; } /** * Get the NumberType of a setting. This describes the integer type * as it is represented in memory * @param type VarType holding information about the variable-type * @return return the SLE_VAR_* part of a variable-type description */ static inline VarType GetVarMemType(VarType type) { return type & 0xF0; // GB(type, 4, 4) << 4; } /** * Get the #FileType of a setting. This describes the integer type * as it is represented in a savegame/file * @param type VarType holding information about the file-type * @param return the SLE_FILE_* part of a variable-type description */ static inline VarType GetVarFileType(VarType type) { return type & 0xF; // GB(type, 0, 4); } /** * Check if the given saveload type is a numeric type. * @param conv the type to check * @return True if it's a numeric type. */ static inline bool IsNumericType(VarType conv) { return GetVarMemType(conv) <= SLE_VAR_U64; } /** * Get the address of the variable. Which one to pick depends on the object * pointer. If it is NULL we are dealing with global variables so the address * is taken. If non-null only the offset is stored in the union and we need * to add this to the address of the object */ static inline void *GetVariableAddress(const void *object, const SaveLoad *sld) { return const_cast((const byte*)(sld->global ? NULL : object) + (ptrdiff_t)sld->address); } int64 ReadValue(const void *ptr, VarType conv); void WriteValue(void *ptr, VarType conv, int64 val); void SlSetArrayIndex(uint index); int SlIterateArray(); void SlAutolength(AutolengthProc *proc, void *arg); size_t SlGetFieldLength(); void SlSetLength(size_t length); size_t SlCalcObjMemberLength(const void *object, const SaveLoad *sld); size_t SlCalcObjLength(const void *object, const SaveLoad *sld); byte SlReadByte(); void SlWriteByte(byte b); void SlGlobList(const SaveLoadGlobVarList *sldg); void SlArray(void *array, size_t length, VarType conv); void SlObject(void *object, const SaveLoad *sld); bool SlObjectMember(void *object, const SaveLoad *sld); void NORETURN SlError(StringID string, const char *extra_msg = NULL); void NORETURN SlErrorCorrupt(const char *msg); bool SaveloadCrashWithMissingNewGRFs(); extern char _savegame_format[8]; extern bool _do_autosave; #endif /* SAVELOAD_H */ openttd-1.3.3/src/saveload/cheat_sl.cpp0000644000000000000000000000331212246102605016541 0ustar rootroot/* $Id: cheat_sl.cpp 22737 2011-08-12 18:36:47Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cheat_sl.cpp Code handling saving and loading of cheats */ #include "../stdafx.h" #include "../cheat_type.h" #include "saveload.h" /** * Save the cheat values. */ static void Save_CHTS() { /* Cannot use lengthof because _cheats is of type Cheats, not Cheat */ byte count = sizeof(_cheats) / sizeof(Cheat); Cheat *cht = (Cheat*) &_cheats; Cheat *cht_last = &cht[count]; SlSetLength(count * 2); for (; cht != cht_last; cht++) { SlWriteByte(cht->been_used); SlWriteByte(cht->value); } } /** * Load the cheat values. */ static void Load_CHTS() { Cheat *cht = (Cheat*)&_cheats; size_t count = SlGetFieldLength() / 2; /* Cannot use lengthof because _cheats is of type Cheats, not Cheat */ if (count > sizeof(_cheats) / sizeof(Cheat)) SlErrorCorrupt("Too many cheat values"); for (uint i = 0; i < count; i++) { cht[i].been_used = (SlReadByte() != 0); cht[i].value = (SlReadByte() != 0); } } /** Chunk handlers related to cheats. */ extern const ChunkHandler _cheat_chunk_handlers[] = { { 'CHTS', Save_CHTS, Load_CHTS, NULL, NULL, CH_RIFF | CH_LAST}, }; openttd-1.3.3/src/saveload/order_sl.cpp0000644000000000000000000002250012246102605016570 0ustar rootroot/* $Id: order_sl.cpp 24998 2013-02-14 17:24:55Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_sl.cpp Code handling saving and loading of orders */ #include "../stdafx.h" #include "../order_backup.h" #include "../settings_type.h" #include "../network/network.h" #include "saveload_internal.h" /** * Converts this order from an old savegame's version; * it moves all bits to the new location. */ void Order::ConvertFromOldSavegame() { uint8 old_flags = this->flags; this->flags = 0; /* First handle non-stop - use value from savegame if possible, else use value from config file */ if (_settings_client.gui.sg_new_nonstop || (IsSavegameVersionBefore(22) && _savegame_type != SGT_TTO && _savegame_type != SGT_TTD && _settings_client.gui.new_nonstop)) { /* OFB_NON_STOP */ this->SetNonStopType((old_flags & 8) ? ONSF_NO_STOP_AT_ANY_STATION : ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } else { this->SetNonStopType((old_flags & 8) ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); } switch (this->GetType()) { /* Only a few types need the other savegame conversions. */ case OT_GOTO_DEPOT: case OT_GOTO_STATION: case OT_LOADING: break; default: return; } if (this->GetType() != OT_GOTO_DEPOT) { /* Then the load flags */ if ((old_flags & 2) != 0) { // OFB_UNLOAD this->SetLoadType(OLFB_NO_LOAD); } else if ((old_flags & 4) == 0) { // !OFB_FULL_LOAD this->SetLoadType(OLF_LOAD_IF_POSSIBLE); } else { /* old OTTD versions stored full_load_any in config file - assume it was enabled when loading */ this->SetLoadType(_settings_client.gui.sg_full_load_any || IsSavegameVersionBefore(22) ? OLF_FULL_LOAD_ANY : OLFB_FULL_LOAD); } if (this->IsType(OT_GOTO_STATION)) this->SetStopLocation(OSL_PLATFORM_FAR_END); /* Finally fix the unload flags */ if ((old_flags & 1) != 0) { // OFB_TRANSFER this->SetUnloadType(OUFB_TRANSFER); } else if ((old_flags & 2) != 0) { // OFB_UNLOAD this->SetUnloadType(OUFB_UNLOAD); } else { this->SetUnloadType(OUF_UNLOAD_IF_POSSIBLE); } } else { /* Then the depot action flags */ this->SetDepotActionType(((old_flags & 6) == 4) ? ODATFB_HALT : ODATF_SERVICE_ONLY); /* Finally fix the depot type flags */ uint t = ((old_flags & 6) == 6) ? ODTFB_SERVICE : ODTF_MANUAL; if ((old_flags & 2) != 0) t |= ODTFB_PART_OF_ORDERS; this->SetDepotOrderType((OrderDepotTypeFlags)t); } } /** * Unpacks a order from savegames with version 4 and lower * @param packed packed order * @return unpacked order */ static Order UnpackVersion4Order(uint16 packed) { return Order(GB(packed, 8, 8) << 16 | GB(packed, 4, 4) << 8 | GB(packed, 0, 4)); } /** * Unpacks a order from savegames made with TTD(Patch) * @param packed packed order * @return unpacked order */ Order UnpackOldOrder(uint16 packed) { Order order = UnpackVersion4Order(packed); /* * Sanity check * TTD stores invalid orders as OT_NOTHING with non-zero flags/station */ if (order.IsType(OT_NOTHING) && packed != 0) order.MakeDummy(); return order; } const SaveLoad *GetOrderDescription() { static const SaveLoad _order_desc[] = { SLE_VAR(Order, type, SLE_UINT8), SLE_VAR(Order, flags, SLE_UINT8), SLE_VAR(Order, dest, SLE_UINT16), SLE_REF(Order, next, REF_ORDER), SLE_CONDVAR(Order, refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION), SLE_CONDVAR(Order, refit_subtype, SLE_UINT8, 36, SL_MAX_VERSION), SLE_CONDVAR(Order, wait_time, SLE_UINT16, 67, SL_MAX_VERSION), SLE_CONDVAR(Order, travel_time, SLE_UINT16, 67, SL_MAX_VERSION), SLE_CONDVAR(Order, max_speed, SLE_UINT16, 172, SL_MAX_VERSION), /* Leftover from the minor savegame version stuff * We will never use those free bytes, but we have to keep this line to allow loading of old savegames */ SLE_CONDNULL(10, 5, 35), SLE_END() }; return _order_desc; } static void Save_ORDR() { Order *order; FOR_ALL_ORDERS(order) { SlSetArrayIndex(order->index); SlObject(order, GetOrderDescription()); } } static void Load_ORDR() { if (IsSavegameVersionBefore(5, 2)) { /* Version older than 5.2 did not have a ->next pointer. Convert them * (in the old days, the orderlist was 5000 items big) */ size_t len = SlGetFieldLength(); if (IsSavegameVersionBefore(5)) { /* Pre-version 5 had another layout for orders * (uint16 instead of uint32) */ len /= sizeof(uint16); uint16 *orders = MallocT(len + 1); SlArray(orders, len, SLE_UINT16); for (size_t i = 0; i < len; ++i) { Order *o = new (i) Order(); o->AssignOrder(UnpackVersion4Order(orders[i])); } free(orders); } else if (IsSavegameVersionBefore(5, 2)) { len /= sizeof(uint32); uint32 *orders = MallocT(len + 1); SlArray(orders, len, SLE_UINT32); for (size_t i = 0; i < len; ++i) { new (i) Order(orders[i]); } free(orders); } /* Update all the next pointer */ Order *o; FOR_ALL_ORDERS(o) { /* Delete invalid orders */ if (o->IsType(OT_NOTHING)) { delete o; continue; } /* The orders were built like this: * While the order is valid, set the previous will get its next pointer set */ Order *prev = Order::GetIfValid(order_index - 1); if (prev != NULL) prev->next = o; } } else { int index; while ((index = SlIterateArray()) != -1) { Order *order = new (index) Order(); SlObject(order, GetOrderDescription()); } } } static void Ptrs_ORDR() { /* Orders from old savegames have pointers corrected in Load_ORDR */ if (IsSavegameVersionBefore(5, 2)) return; Order *o; FOR_ALL_ORDERS(o) { SlObject(o, GetOrderDescription()); } } const SaveLoad *GetOrderListDescription() { static const SaveLoad _orderlist_desc[] = { SLE_REF(OrderList, first, REF_ORDER), SLE_END() }; return _orderlist_desc; } static void Save_ORDL() { OrderList *list; FOR_ALL_ORDER_LISTS(list) { SlSetArrayIndex(list->index); SlObject(list, GetOrderListDescription()); } } static void Load_ORDL() { int index; while ((index = SlIterateArray()) != -1) { /* set num_orders to 0 so it's a valid OrderList */ OrderList *list = new (index) OrderList(0); SlObject(list, GetOrderListDescription()); } } static void Ptrs_ORDL() { OrderList *list; FOR_ALL_ORDER_LISTS(list) { SlObject(list, GetOrderListDescription()); } } const SaveLoad *GetOrderBackupDescription() { static const SaveLoad _order_backup_desc[] = { SLE_VAR(OrderBackup, user, SLE_UINT32), SLE_VAR(OrderBackup, tile, SLE_UINT32), SLE_VAR(OrderBackup, group, SLE_UINT16), SLE_VAR(OrderBackup, service_interval, SLE_UINT32), SLE_STR(OrderBackup, name, SLE_STR, 0), SLE_VAR(OrderBackup, clone, SLE_UINT16), SLE_VAR(OrderBackup, cur_real_order_index, SLE_UINT8), SLE_CONDVAR(OrderBackup, cur_implicit_order_index, SLE_UINT8, 176, SL_MAX_VERSION), SLE_CONDVAR(OrderBackup, current_order_time, SLE_UINT32, 176, SL_MAX_VERSION), SLE_CONDVAR(OrderBackup, lateness_counter, SLE_INT32, 176, SL_MAX_VERSION), SLE_CONDVAR(OrderBackup, timetable_start, SLE_INT32, 176, SL_MAX_VERSION), SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, 176, 179), SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_UINT16, 180, SL_MAX_VERSION), SLE_REF(OrderBackup, orders, REF_ORDER), SLE_END() }; return _order_backup_desc; } static void Save_BKOR() { /* We only save this when we're a network server * as we want this information on our clients. For * normal games this information isn't needed. */ if (!_networking || !_network_server) return; OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { SlSetArrayIndex(ob->index); SlObject(ob, GetOrderBackupDescription()); } } void Load_BKOR() { int index; while ((index = SlIterateArray()) != -1) { /* set num_orders to 0 so it's a valid OrderList */ OrderBackup *ob = new (index) OrderBackup(); SlObject(ob, GetOrderBackupDescription()); } /* Only load order-backups for network clients. * If we are a network server or not networking, then we just loaded * a previously saved-by-server savegame. There are * no clients with a backup anymore, so clear it. */ if (!_networking || _network_server) { _order_backup_pool.CleanPool(); } } static void Ptrs_BKOR() { OrderBackup *ob; FOR_ALL_ORDER_BACKUPS(ob) { SlObject(ob, GetOrderBackupDescription()); } } extern const ChunkHandler _order_chunk_handlers[] = { { 'BKOR', Save_BKOR, Load_BKOR, Ptrs_BKOR, NULL, CH_ARRAY}, { 'ORDR', Save_ORDR, Load_ORDR, Ptrs_ORDR, NULL, CH_ARRAY}, { 'ORDL', Save_ORDL, Load_ORDL, Ptrs_ORDL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/saveload_filter.h0000644000000000000000000000554312246102605017577 0ustar rootroot/* $Id: saveload_filter.h 21395 2010-12-05 14:41:34Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file saveload_filter.h Declaration of filters used for saving and loading savegames. */ #ifndef SAVELOAD_FILTER_H #define SAVELOAD_FILTER_H /** Interface for filtering a savegame till it is loaded. */ struct LoadFilter { /** Chained to the (savegame) filters. */ LoadFilter *chain; /** * Initialise this filter. * @param chain The next filter in this chain. */ LoadFilter(LoadFilter *chain) : chain(chain) { } /** Make sure the writers are properly closed. */ virtual ~LoadFilter() { delete this->chain; } /** * Read a given number of bytes from the savegame. * @param buf The bytes to read. * @param len The number of bytes to read. * @return The number of actually read bytes. */ virtual size_t Read(byte *buf, size_t len) = 0; /** * Reset this filter to read from the beginning of the file. */ virtual void Reset() { this->chain->Reset(); } }; /** * Instantiator for a load filter. * @param chain The next filter in this chain. * @tparam T The type of load filter to create. */ template LoadFilter *CreateLoadFilter(LoadFilter *chain) { return new T(chain); } /** Interface for filtering a savegame till it is written. */ struct SaveFilter { /** Chained to the (savegame) filters. */ SaveFilter *chain; /** * Initialise this filter. * @param chain The next filter in this chain. */ SaveFilter(SaveFilter *chain) : chain(chain) { } /** Make sure the writers are properly closed. */ virtual ~SaveFilter() { delete this->chain; } /** * Write a given number of bytes into the savegame. * @param buf The bytes to write. * @param len The number of bytes to write. */ virtual void Write(byte *buf, size_t len) = 0; /** * Prepare everything to finish writing the savegame. */ virtual void Finish() { if (this->chain != NULL) this->chain->Finish(); } }; /** * Instantiator for a save filter. * @param chain The next filter in this chain. * @param compression_level The requested level of compression. * @tparam T The type of save filter to create. */ template SaveFilter *CreateSaveFilter(SaveFilter *chain, byte compression_level) { return new T(chain, compression_level); } #endif /* SAVELOAD_FILTER_H */ openttd-1.3.3/src/saveload/engine_sl.cpp0000644000000000000000000001361212246102605016726 0ustar rootroot/* $Id: engine_sl.cpp 24810 2012-12-09 16:55:03Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file engine_sl.cpp Code handling saving and loading of engines */ #include "../stdafx.h" #include "saveload_internal.h" #include "../engine_base.h" #include static const SaveLoad _engine_desc[] = { SLE_CONDVAR(Engine, intro_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Engine, intro_date, SLE_INT32, 31, SL_MAX_VERSION), SLE_CONDVAR(Engine, age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), SLE_CONDVAR(Engine, age, SLE_INT32, 31, SL_MAX_VERSION), SLE_VAR(Engine, reliability, SLE_UINT16), SLE_VAR(Engine, reliability_spd_dec, SLE_UINT16), SLE_VAR(Engine, reliability_start, SLE_UINT16), SLE_VAR(Engine, reliability_max, SLE_UINT16), SLE_VAR(Engine, reliability_final, SLE_UINT16), SLE_VAR(Engine, duration_phase_1, SLE_UINT16), SLE_VAR(Engine, duration_phase_2, SLE_UINT16), SLE_VAR(Engine, duration_phase_3, SLE_UINT16), SLE_CONDNULL(1, 0, 120), SLE_VAR(Engine, flags, SLE_UINT8), SLE_CONDNULL(1, 0, 178), // old preview_company_rank SLE_CONDVAR(Engine, preview_asked, SLE_UINT16, 179, SL_MAX_VERSION), SLE_CONDVAR(Engine, preview_company, SLE_UINT8, 179, SL_MAX_VERSION), SLE_VAR(Engine, preview_wait, SLE_UINT8), SLE_CONDNULL(1, 0, 44), SLE_CONDVAR(Engine, company_avail, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), SLE_CONDVAR(Engine, company_avail, SLE_UINT16, 104, SL_MAX_VERSION), SLE_CONDSTR(Engine, name, SLE_STR, 0, 84, SL_MAX_VERSION), SLE_CONDNULL(16, 2, 143), // old reserved space SLE_END() }; static std::map _temp_engine; Engine *GetTempDataEngine(EngineID index) { return &_temp_engine[index]; } static void Save_ENGN() { Engine *e; FOR_ALL_ENGINES(e) { SlSetArrayIndex(e->index); SlObject(e, _engine_desc); } } static void Load_ENGN() { /* As engine data is loaded before engines are initialized we need to load * this information into a temporary array. This is then copied into the * engine pool after processing NewGRFs by CopyTempEngineData(). */ int index; while ((index = SlIterateArray()) != -1) { Engine *e = GetTempDataEngine(index); SlObject(e, _engine_desc); if (IsSavegameVersionBefore(179)) { /* preview_company_rank was replaced with preview_company and preview_asked. * Just cancel any previews. */ e->flags &= ~4; // ENGINE_OFFER_WINDOW_OPEN e->preview_company = INVALID_COMPANY; e->preview_asked = (CompanyMask)-1; } } } /** * Copy data from temporary engine array into the real engine pool. */ void CopyTempEngineData() { Engine *e; FOR_ALL_ENGINES(e) { if (e->index >= _temp_engine.size()) break; const Engine *se = GetTempDataEngine(e->index); e->intro_date = se->intro_date; e->age = se->age; e->reliability = se->reliability; e->reliability_spd_dec = se->reliability_spd_dec; e->reliability_start = se->reliability_start; e->reliability_max = se->reliability_max; e->reliability_final = se->reliability_final; e->duration_phase_1 = se->duration_phase_1; e->duration_phase_2 = se->duration_phase_2; e->duration_phase_3 = se->duration_phase_3; e->flags = se->flags; e->preview_asked = se->preview_asked; e->preview_company = se->preview_company; e->preview_wait = se->preview_wait; e->company_avail = se->company_avail; if (se->name != NULL) e->name = strdup(se->name); } /* Get rid of temporary data */ _temp_engine.clear(); } static void Load_ENGS() { /* Load old separate String ID list into a temporary array. This * was always 256 entries. */ StringID names[256]; SlArray(names, lengthof(names), SLE_STRINGID); /* Copy each string into the temporary engine array. */ for (EngineID engine = 0; engine < lengthof(names); engine++) { Engine *e = GetTempDataEngine(engine); e->name = CopyFromOldName(names[engine]); } } /** Save and load the mapping between the engine id in the pool, and the grf file it came from. */ static const SaveLoad _engine_id_mapping_desc[] = { SLE_VAR(EngineIDMapping, grfid, SLE_UINT32), SLE_VAR(EngineIDMapping, internal_id, SLE_UINT16), SLE_VAR(EngineIDMapping, type, SLE_UINT8), SLE_VAR(EngineIDMapping, substitute_id, SLE_UINT8), SLE_END() }; static void Save_EIDS() { const EngineIDMapping *end = _engine_mngr.End(); uint index = 0; for (EngineIDMapping *eid = _engine_mngr.Begin(); eid != end; eid++, index++) { SlSetArrayIndex(index); SlObject(eid, _engine_id_mapping_desc); } } static void Load_EIDS() { _engine_mngr.Clear(); while (SlIterateArray() != -1) { EngineIDMapping *eid = _engine_mngr.Append(); SlObject(eid, _engine_id_mapping_desc); } } extern const ChunkHandler _engine_chunk_handlers[] = { { 'EIDS', Save_EIDS, Load_EIDS, NULL, NULL, CH_ARRAY }, { 'ENGN', Save_ENGN, Load_ENGN, NULL, NULL, CH_ARRAY }, { 'ENGS', NULL, Load_ENGS, NULL, NULL, CH_RIFF | CH_LAST }, }; openttd-1.3.3/src/saveload/gamelog_sl.cpp0000644000000000000000000001220112246102605017065 0ustar rootroot/* $Id: gamelog_sl.cpp 23065 2011-10-30 13:47:45Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gamelog_sl.cpp Code handling saving and loading of gamelog data */ #include "../stdafx.h" #include "../gamelog_internal.h" #include "../fios.h" #include "saveload.h" static const SaveLoad _glog_action_desc[] = { SLE_VAR(LoggedAction, tick, SLE_UINT16), SLE_END() }; static const SaveLoad _glog_mode_desc[] = { SLE_VAR(LoggedChange, mode.mode, SLE_UINT8), SLE_VAR(LoggedChange, mode.landscape, SLE_UINT8), SLE_END() }; static const SaveLoad _glog_revision_desc[] = { SLE_ARR(LoggedChange, revision.text, SLE_UINT8, NETWORK_REVISION_LENGTH), SLE_VAR(LoggedChange, revision.newgrf, SLE_UINT32), SLE_VAR(LoggedChange, revision.slver, SLE_UINT16), SLE_VAR(LoggedChange, revision.modified, SLE_UINT8), SLE_END() }; static const SaveLoad _glog_oldver_desc[] = { SLE_VAR(LoggedChange, oldver.type, SLE_UINT32), SLE_VAR(LoggedChange, oldver.version, SLE_UINT32), SLE_END() }; static const SaveLoad _glog_setting_desc[] = { SLE_STR(LoggedChange, setting.name, SLE_STR, 128), SLE_VAR(LoggedChange, setting.oldval, SLE_INT32), SLE_VAR(LoggedChange, setting.newval, SLE_INT32), SLE_END() }; static const SaveLoad _glog_grfadd_desc[] = { SLE_VAR(LoggedChange, grfadd.grfid, SLE_UINT32 ), SLE_ARR(LoggedChange, grfadd.md5sum, SLE_UINT8, 16), SLE_END() }; static const SaveLoad _glog_grfrem_desc[] = { SLE_VAR(LoggedChange, grfrem.grfid, SLE_UINT32), SLE_END() }; static const SaveLoad _glog_grfcompat_desc[] = { SLE_VAR(LoggedChange, grfcompat.grfid, SLE_UINT32 ), SLE_ARR(LoggedChange, grfcompat.md5sum, SLE_UINT8, 16), SLE_END() }; static const SaveLoad _glog_grfparam_desc[] = { SLE_VAR(LoggedChange, grfparam.grfid, SLE_UINT32), SLE_END() }; static const SaveLoad _glog_grfmove_desc[] = { SLE_VAR(LoggedChange, grfmove.grfid, SLE_UINT32), SLE_VAR(LoggedChange, grfmove.offset, SLE_INT32), SLE_END() }; static const SaveLoad _glog_grfbug_desc[] = { SLE_VAR(LoggedChange, grfbug.data, SLE_UINT64), SLE_VAR(LoggedChange, grfbug.grfid, SLE_UINT32), SLE_VAR(LoggedChange, grfbug.bug, SLE_UINT8), SLE_END() }; static const SaveLoad _glog_emergency_desc[] = { SLE_END() }; static const SaveLoad * const _glog_desc[] = { _glog_mode_desc, _glog_revision_desc, _glog_oldver_desc, _glog_setting_desc, _glog_grfadd_desc, _glog_grfrem_desc, _glog_grfcompat_desc, _glog_grfparam_desc, _glog_grfmove_desc, _glog_grfbug_desc, _glog_emergency_desc, }; assert_compile(lengthof(_glog_desc) == GLCT_END); static void Load_GLOG_common(LoggedAction *&gamelog_action, uint &gamelog_actions) { assert(gamelog_action == NULL); assert(gamelog_actions == 0); GamelogActionType at; while ((at = (GamelogActionType)SlReadByte()) != GLAT_NONE) { gamelog_action = ReallocT(gamelog_action, gamelog_actions + 1); LoggedAction *la = &gamelog_action[gamelog_actions++]; la->at = at; SlObject(la, _glog_action_desc); // has to be saved after 'DATE'! la->change = NULL; la->changes = 0; GamelogChangeType ct; while ((ct = (GamelogChangeType)SlReadByte()) != GLCT_NONE) { la->change = ReallocT(la->change, la->changes + 1); LoggedChange *lc = &la->change[la->changes++]; /* for SLE_STR, pointer has to be valid! so make it NULL */ memset(lc, 0, sizeof(*lc)); lc->ct = ct; assert((uint)ct < GLCT_END); SlObject(lc, _glog_desc[ct]); } } } static void Save_GLOG() { const LoggedAction *laend = &_gamelog_action[_gamelog_actions]; size_t length = 0; for (const LoggedAction *la = _gamelog_action; la != laend; la++) { const LoggedChange *lcend = &la->change[la->changes]; for (LoggedChange *lc = la->change; lc != lcend; lc++) { assert((uint)lc->ct < lengthof(_glog_desc)); length += SlCalcObjLength(lc, _glog_desc[lc->ct]) + 1; } length += 4; } length++; SlSetLength(length); for (LoggedAction *la = _gamelog_action; la != laend; la++) { SlWriteByte(la->at); SlObject(la, _glog_action_desc); const LoggedChange *lcend = &la->change[la->changes]; for (LoggedChange *lc = la->change; lc != lcend; lc++) { SlWriteByte(lc->ct); assert((uint)lc->ct < GLCT_END); SlObject(lc, _glog_desc[lc->ct]); } SlWriteByte(GLCT_NONE); } SlWriteByte(GLAT_NONE); } static void Load_GLOG() { Load_GLOG_common(_gamelog_action, _gamelog_actions); } static void Check_GLOG() { Load_GLOG_common(_load_check_data.gamelog_action, _load_check_data.gamelog_actions); } extern const ChunkHandler _gamelog_chunk_handlers[] = { { 'GLOG', Save_GLOG, Load_GLOG, NULL, Check_GLOG, CH_RIFF | CH_LAST } }; openttd-1.3.3/src/saveload/storage_sl.cpp0000644000000000000000000000336112246102605017125 0ustar rootroot/* $Id: storage_sl.cpp 23853 2012-01-25 22:10:14Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file storage_sl.cpp Code handling saving and loading of persistent storages. */ #include "../stdafx.h" #include "../newgrf_storage.h" #include "saveload.h" /** Description of the data to save and load in #PersistentStorage. */ static const SaveLoad _storage_desc[] = { SLE_CONDVAR(PersistentStorage, grfid, SLE_UINT32, 6, SL_MAX_VERSION), SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 16, 161, SL_MAX_VERSION), SLE_END() }; /** Load persistent storage data. */ static void Load_PSAC() { int index; while ((index = SlIterateArray()) != -1) { assert(PersistentStorage::CanAllocateItem()); PersistentStorage *ps = new (index) PersistentStorage(0); SlObject(ps, _storage_desc); } } /** Save persistent storage data. */ static void Save_PSAC() { PersistentStorage *ps; /* Write the industries */ FOR_ALL_STORAGES(ps) { SlSetArrayIndex(ps->index); SlObject(ps, _storage_desc); } } /** Chunk handler for persistent storages. */ extern const ChunkHandler _persistent_storage_chunk_handlers[] = { { 'PSAC', Save_PSAC, Load_PSAC, NULL, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/saveload/autoreplace_sl.cpp0000644000000000000000000000370412246102605017766 0ustar rootroot/* $Id: autoreplace_sl.cpp 24136 2012-04-17 19:44:02Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file autoreplace_sl.cpp Code handling saving and loading of autoreplace rules */ #include "../stdafx.h" #include "../autoreplace_base.h" #include "saveload.h" static const SaveLoad _engine_renew_desc[] = { SLE_VAR(EngineRenew, from, SLE_UINT16), SLE_VAR(EngineRenew, to, SLE_UINT16), SLE_REF(EngineRenew, next, REF_ENGINE_RENEWS), SLE_CONDVAR(EngineRenew, group_id, SLE_UINT16, 60, SL_MAX_VERSION), SLE_CONDVAR(EngineRenew, replace_when_old, SLE_BOOL, 175, SL_MAX_VERSION), SLE_END() }; static void Save_ERNW() { EngineRenew *er; FOR_ALL_ENGINE_RENEWS(er) { SlSetArrayIndex(er->index); SlObject(er, _engine_renew_desc); } } static void Load_ERNW() { int index; while ((index = SlIterateArray()) != -1) { EngineRenew *er = new (index) EngineRenew(); SlObject(er, _engine_renew_desc); /* Advanced vehicle lists, ungrouped vehicles got added */ if (IsSavegameVersionBefore(60)) { er->group_id = ALL_GROUP; } else if (IsSavegameVersionBefore(71)) { if (er->group_id == DEFAULT_GROUP) er->group_id = ALL_GROUP; } } } static void Ptrs_ERNW() { EngineRenew *er; FOR_ALL_ENGINE_RENEWS(er) { SlObject(er, _engine_renew_desc); } } extern const ChunkHandler _autoreplace_chunk_handlers[] = { { 'ERNW', Save_ERNW, Load_ERNW, Ptrs_ERNW, NULL, CH_ARRAY | CH_LAST}, }; openttd-1.3.3/src/bmp.h0000644000000000000000000000311012246102611013375 0ustar rootroot/* $Id: bmp.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file bmp.h Read and write support for bmps. */ #ifndef BMP_H #define BMP_H #include "gfx_type.h" struct BmpInfo { uint32 offset; ///< offset of bitmap data from .bmp file begining uint32 width; ///< bitmap width uint32 height; ///< bitmap height bool os2_bmp; ///< true if OS/2 1.x or windows 2.x bitmap uint16 bpp; ///< bits per pixel uint32 compression; ///< compression method (0 = none, 1 = 8-bit RLE, 2 = 4-bit RLE) uint32 palette_size; ///< number of colours in palette }; struct BmpData { Colour *palette; byte *bitmap; }; #define BMP_BUFFER_SIZE 1024 struct BmpBuffer { byte data[BMP_BUFFER_SIZE]; int pos; int read; FILE *file; uint real_pos; }; void BmpInitializeBuffer(BmpBuffer *buffer, FILE *file); bool BmpReadHeader(BmpBuffer *buffer, BmpInfo *info, BmpData *data); bool BmpReadBitmap(BmpBuffer *buffer, BmpInfo *info, BmpData *data); void BmpDestroyData(BmpData *data); #endif /* BMP_H */ openttd-1.3.3/src/sprite.h0000644000000000000000000001514312246102610014135 0ustar rootroot/* $Id: sprite.h 23706 2012-01-01 17:36:19Z smatz $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sprite.h Base for drawing complex sprites. */ #ifndef SPRITE_H #define SPRITE_H #include "transparency.h" #include "table/sprites.h" #define GENERAL_SPRITE_COLOUR(colour) ((colour) + PALETTE_RECOLOUR_START) #define COMPANY_SPRITE_COLOUR(owner) (GENERAL_SPRITE_COLOUR(_company_colours[owner])) /* The following describes bunch of sprites to be drawn together in a single 3D * bounding box. Used especially for various multi-sprite buildings (like * depots or stations): */ /** A tile child sprite and palette to draw for stations etc, with 3D bounding box */ struct DrawTileSeqStruct { int8 delta_x; ///< \c 0x80 is sequence terminator int8 delta_y; int8 delta_z; ///< \c 0x80 identifies child sprites byte size_x; byte size_y; byte size_z; PalSpriteID image; /** Make this struct a sequence terminator. */ void MakeTerminator() { this->delta_x = (int8)0x80; } /** Check whether this is a sequence terminator. */ bool IsTerminator() const { return (byte)this->delta_x == 0x80; } /** Check whether this is a parent sprite with a boundingbox. */ bool IsParentSprite() const { return (byte)this->delta_z != 0x80; } }; /** * Ground palette sprite of a tile, together with its sprite layout. * This struct is used for static sprite layouts in the code. * For allocated ones from NewGRF see #NewGRFSpriteLayout. */ struct DrawTileSprites { PalSpriteID ground; ///< Palette and sprite for the ground const DrawTileSeqStruct *seq; ///< Array of child sprites. Terminated with a terminator entry }; /** * This structure is the same for both Industries and Houses. * Buildings here reference a general type of construction */ struct DrawBuildingsTileStruct { PalSpriteID ground; PalSpriteID building; byte subtile_x; byte subtile_y; byte width; byte height; byte dz; byte draw_proc; // this allows to specify a special drawing procedure. }; /** Iterate through all DrawTileSeqStructs in DrawTileSprites. */ #define foreach_draw_tile_seq(idx, list) for (idx = list; !idx->IsTerminator(); idx++) void DrawCommonTileSeq(const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, int32 orig_offset, uint32 newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned); void DrawCommonTileSeqInGUI(int x, int y, const DrawTileSprites *dts, int32 orig_offset, uint32 newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned); /** * Draw tile sprite sequence on tile with railroad specifics. * @param total_offset Spriteoffset from normal rail to current railtype. * @param newgrf_offset Startsprite of the Action1 to use. */ static inline void DrawRailTileSeq(const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, int32 total_offset, uint32 newgrf_offset, PaletteID default_palette) { DrawCommonTileSeq(ti, dts, to, total_offset, newgrf_offset, default_palette, false); } /** * Draw tile sprite sequence in GUI with railroad specifics. * @param total_offset Spriteoffset from normal rail to current railtype. * @param newgrf_offset Startsprite of the Action1 to use. */ static inline void DrawRailTileSeqInGUI(int x, int y, const DrawTileSprites *dts, int32 total_offset, uint32 newgrf_offset, PaletteID default_palette) { DrawCommonTileSeqInGUI(x, y, dts, total_offset, newgrf_offset, default_palette, false); } /** * Draw TTD sprite sequence on tile. */ static inline void DrawOrigTileSeq(const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, PaletteID default_palette) { DrawCommonTileSeq(ti, dts, to, 0, 0, default_palette, false); } /** * Draw TTD sprite sequence in GUI. */ static inline void DrawOrigTileSeqInGUI(int x, int y, const DrawTileSprites *dts, PaletteID default_palette) { DrawCommonTileSeqInGUI(x, y, dts, 0, 0, default_palette, false); } /** * Draw NewGRF industrytile or house sprite layout * @param stage Sprite inside the Action1 spritesets to use, i.e. construction stage. */ static inline void DrawNewGRFTileSeq(const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, uint32 stage, PaletteID default_palette) { DrawCommonTileSeq(ti, dts, to, 0, stage, default_palette, true); } /** * Draw NewGRF object in GUI * @param stage Sprite inside the Action1 spritesets to use, i.e. construction stage. */ static inline void DrawNewGRFTileSeqInGUI(int x, int y, const DrawTileSprites *dts, uint32 stage, PaletteID default_palette) { DrawCommonTileSeqInGUI(x, y, dts, 0, stage, default_palette, true); } /** * Applies PALETTE_MODIFIER_TRANSPARENT and PALETTE_MODIFIER_COLOUR to a palette entry of a sprite layout entry * @note for ground sprites use #GroundSpritePaletteTransform * @note Not useable for OTTD internal spritelayouts from table/xxx_land.h as PALETTE_MODIFIER_TRANSPARENT is only set * when to use the default palette. * * @param image The sprite to draw * @param pal The palette from the sprite layout * @param default_pal The default recolour sprite to use (typically company colour resp. random industry/house colour) * @return The palette to use */ static inline PaletteID SpriteLayoutPaletteTransform(SpriteID image, PaletteID pal, PaletteID default_pal) { if (HasBit(image, PALETTE_MODIFIER_TRANSPARENT) || HasBit(image, PALETTE_MODIFIER_COLOUR)) { return (pal != 0 ? pal : default_pal); } else { return PAL_NONE; } } /** * Applies PALETTE_MODIFIER_COLOUR to a palette entry of a ground sprite * @note Not useable for OTTD internal spritelayouts from table/xxx_land.h as PALETTE_MODIFIER_TRANSPARENT is only set * when to use the default palette. * * @param image The sprite to draw * @param pal The palette from the sprite layout * @param default_pal The default recolour sprite to use (typically company colour resp. random industry/house colour) * @return The palette to use */ static inline PaletteID GroundSpritePaletteTransform(SpriteID image, PaletteID pal, PaletteID default_pal) { if (HasBit(image, PALETTE_MODIFIER_COLOUR)) { return (pal != 0 ? pal : default_pal); } else { return PAL_NONE; } } #endif /* SPRITE_H */ openttd-1.3.3/src/newgrf_airporttiles.cpp0000644000000000000000000002765612246102611017270 0ustar rootroot/* $Id: newgrf_airporttiles.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_airporttiles.cpp NewGRF handling of airport tiles. */ #include "stdafx.h" #include "debug.h" #include "newgrf_airporttiles.h" #include "newgrf_spritegroup.h" #include "newgrf_sound.h" #include "station_base.h" #include "water.h" #include "landscape.h" #include "company_base.h" #include "town.h" #include "table/strings.h" #include "table/airporttiles.h" #include "newgrf_animation_base.h" AirportTileSpec AirportTileSpec::tiles[NUM_AIRPORTTILES]; AirportTileOverrideManager _airporttile_mngr(NEW_AIRPORTTILE_OFFSET, NUM_AIRPORTTILES, INVALID_AIRPORTTILE); /** * Retrieve airport tile spec for the given airport tile * @param gfx index of airport tile * @return A pointer to the corresponding AirportTileSpec */ /* static */ const AirportTileSpec *AirportTileSpec::Get(StationGfx gfx) { /* should be assert(gfx < lengthof(tiles)), but that gives compiler warnings * since it's always true if the following holds: */ assert_compile(MAX_UVALUE(StationGfx) + 1 == lengthof(tiles)); return &AirportTileSpec::tiles[gfx]; } /** * Retrieve airport tile spec for the given airport tile. * @param tile The airport tile. * @return A pointer to the corresponding AirportTileSpec. */ /* static */ const AirportTileSpec *AirportTileSpec::GetByTile(TileIndex tile) { return AirportTileSpec::Get(GetAirportGfx(tile)); } /** * This function initializes the tile array of AirportTileSpec */ void AirportTileSpec::ResetAirportTiles() { memset(&AirportTileSpec::tiles, 0, sizeof(AirportTileSpec::tiles)); memcpy(&AirportTileSpec::tiles, &_origin_airporttile_specs, sizeof(_origin_airporttile_specs)); /* Reset any overrides that have been set. */ _airporttile_mngr.ResetOverride(); } void AirportTileOverrideManager::SetEntitySpec(const AirportTileSpec *airpts) { StationGfx airpt_id = this->AddEntityID(airpts->grf_prop.local_id, airpts->grf_prop.grffile->grfid, airpts->grf_prop.subst_id); if (airpt_id == invalid_ID) { grfmsg(1, "AirportTile.SetEntitySpec: Too many airport tiles allocated. Ignoring."); return; } memcpy(&AirportTileSpec::tiles[airpt_id], airpts, sizeof(*airpts)); /* Now add the overrides. */ for (int i = 0; i < max_offset; i++) { AirportTileSpec *overridden_airpts = &AirportTileSpec::tiles[i]; if (entity_overrides[i] != airpts->grf_prop.local_id || grfid_overrides[i] != airpts->grf_prop.grffile->grfid) continue; overridden_airpts->grf_prop.override = airpt_id; overridden_airpts->enabled = false; entity_overrides[i] = invalid_ID; grfid_overrides[i] = 0; } } /** * Do airporttile gfx ID translation for NewGRFs. * @param gfx the type to get the override for. * @return the gfx to actually work with. */ StationGfx GetTranslatedAirportTileID(StationGfx gfx) { const AirportTileSpec *it = AirportTileSpec::Get(gfx); return it->grf_prop.override == INVALID_AIRPORTTILE ? gfx : it->grf_prop.override; } /** * Based on newhouses/newindustries equivalent, but adapted for airports. * @param parameter from callback. It's in fact a pair of coordinates * @param tile TileIndex from which the callback was initiated * @param index of the industry been queried for * @param grf_version8 True, if we are dealing with a new NewGRF which uses GRF version >= 8. * @return a construction of bits obeying the newgrf format */ static uint32 GetNearbyAirportTileInformation(byte parameter, TileIndex tile, StationID index, bool grf_version8) { if (parameter != 0) tile = GetNearbyTile(parameter, tile); // only perform if it is required bool is_same_airport = (IsTileType(tile, MP_STATION) && IsAirport(tile) && GetStationIndex(tile) == index); return GetNearbyTileInformation(tile, grf_version8) | (is_same_airport ? 1 : 0) << 8; } /** * Make an analysis of a tile and check whether it belongs to the same * airport, and/or the same grf file * @param tile TileIndex of the tile to query * @param st Station to which to compare the tile to * @param cur_grfid GRFID of the current callback * @return value encoded as per NFO specs */ static uint32 GetAirportTileIDAtOffset(TileIndex tile, const Station *st, uint32 cur_grfid) { if (!st->TileBelongsToAirport(tile)) { return 0xFFFF; } StationGfx gfx = GetAirportGfx(tile); const AirportTileSpec *ats = AirportTileSpec::Get(gfx); if (gfx < NEW_AIRPORTTILE_OFFSET) { // Does it belongs to an old type? /* It is an old tile. We have to see if it's been overridden */ if (ats->grf_prop.override == INVALID_AIRPORTTILE) { // has it been overridden? return 0xFF << 8 | gfx; // no. Tag FF + the gfx id of that tile } /* Overridden */ const AirportTileSpec *tile_ovr = AirportTileSpec::Get(ats->grf_prop.override); if (tile_ovr->grf_prop.grffile->grfid == cur_grfid) { return tile_ovr->grf_prop.local_id; // same grf file } else { return 0xFFFE; // not the same grf file } } /* Not an 'old type' tile */ if (ats->grf_prop.spritegroup[0] != NULL) { // tile has a spritegroup ? if (ats->grf_prop.grffile->grfid == cur_grfid) { // same airport, same grf ? return ats->grf_prop.local_id; } else { return 0xFFFE; // Defined in another grf file } } /* The tile has no spritegroup */ return 0xFF << 8 | ats->grf_prop.subst_id; // so just give him the substitute } /* virtual */ uint32 AirportTileScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { assert(this->st != NULL); extern uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile); switch (variable) { /* Terrain type */ case 0x41: return GetTerrainType(this->tile); /* Current town zone of the tile in the nearest town */ case 0x42: return GetTownRadiusGroup(ClosestTownFromTile(this->tile, UINT_MAX), this->tile); /* Position relative to most northern airport tile. */ case 0x43: return GetRelativePosition(this->tile, this->st->airport.tile); /* Animation frame of tile */ case 0x44: return GetAnimationFrame(this->tile); /* Land info of nearby tiles */ case 0x60: return GetNearbyAirportTileInformation(parameter, this->tile, this->st->index, this->ro->grffile->grf_version >= 8); /* Animation stage of nearby tiles */ case 0x61: { TileIndex tile = GetNearbyTile(parameter, this->tile); if (this->st->TileBelongsToAirport(tile)) { return GetAnimationFrame(tile); } return UINT_MAX; } /* Get airport tile ID at offset */ case 0x62: return GetAirportTileIDAtOffset(GetNearbyTile(parameter, this->tile), this->st, this->ro->grffile->grfid); } DEBUG(grf, 1, "Unhandled airport tile variable 0x%X", variable); *available = false; return UINT_MAX; } /* virtual */ uint32 AirportTileScopeResolver::GetRandomBits() const { return (this->st == NULL ? 0 : this->st->random_bits) | (this->tile == INVALID_TILE ? 0 : GetStationTileRandomBits(this->tile) << 16); } /** * Constructor of the resolver for airport tiles. * @param ats Specification of the airport tiles. * @param tile %Tile for the callback, only valid for airporttile callbacks. * @param st Station of the airport for which the callback is run, or \c NULL for build gui. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats, TileIndex tile, Station *st, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(ats->grf_prop.grffile, callback, callback_param1, callback_param2), tiles_scope(this, ats, tile, st) { } /** * Constructor of the scope resolver specific for airport tiles. * @param ats Specification of the airport tiles. * @param tile %Tile for the callback, only valid for airporttile callbacks. * @param st Station of the airport for which the callback is run, or \c NULL for build gui. */ AirportTileScopeResolver::AirportTileScopeResolver(ResolverObject *ro, const AirportTileSpec *ats, TileIndex tile, Station *st) : ScopeResolver(ro) { assert(st != NULL); this->st = st; this->airport_id = st->airport.type; this->tile = tile; } uint16 GetAirportTileCallback(CallbackID callback, uint32 param1, uint32 param2, const AirportTileSpec *ats, Station *st, TileIndex tile, int extra_data = 0) { AirportTileResolverObject object(ats, tile, st, callback, param1, param2); const SpriteGroup *group = SpriteGroup::Resolve(ats->grf_prop.spritegroup[0], &object); if (group == NULL) return CALLBACK_FAILED; return group->GetCallbackResult(); } static void AirportDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte colour, StationGfx gfx) { const DrawTileSprites *dts = group->ProcessRegisters(NULL); SpriteID image = dts->ground.sprite; SpriteID pal = dts->ground.pal; if (GB(image, 0, SPRITE_WIDTH) != 0) { if (image == SPR_FLAT_WATER_TILE && IsTileOnWater(ti->tile)) { DrawWaterClassGround(ti); } else { DrawGroundSprite(image, GroundSpritePaletteTransform(image, pal, GENERAL_SPRITE_COLOUR(colour))); } } DrawNewGRFTileSeq(ti, dts, TO_BUILDINGS, 0, GENERAL_SPRITE_COLOUR(colour)); } bool DrawNewAirportTile(TileInfo *ti, Station *st, StationGfx gfx, const AirportTileSpec *airts) { if (ti->tileh != SLOPE_FLAT) { bool draw_old_one = true; if (HasBit(airts->callback_mask, CBM_AIRT_DRAW_FOUNDATIONS)) { /* Called to determine the type (if any) of foundation to draw */ uint32 callback_res = GetAirportTileCallback(CBID_AIRPTILE_DRAW_FOUNDATIONS, 0, 0, airts, st, ti->tile); if (callback_res != CALLBACK_FAILED) draw_old_one = ConvertBooleanCallback(airts->grf_prop.grffile, CBID_AIRPTILE_DRAW_FOUNDATIONS, callback_res); } if (draw_old_one) DrawFoundation(ti, FOUNDATION_LEVELED); } AirportTileResolverObject object(airts, ti->tile, st); const SpriteGroup *group = SpriteGroup::Resolve(airts->grf_prop.spritegroup[0], &object); if (group == NULL || group->type != SGT_TILELAYOUT) { return false; } const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; AirportDrawTileLayout(ti, tlgroup, Company::Get(st->owner)->colour, gfx); return true; } /** Helper class for animation control. */ struct AirportTileAnimationBase : public AnimationBase { static const CallbackID cb_animation_speed = CBID_AIRPTILE_ANIMATION_SPEED; static const CallbackID cb_animation_next_frame = CBID_AIRPTILE_ANIM_NEXT_FRAME; static const AirportTileCallbackMask cbm_animation_speed = CBM_AIRT_ANIM_SPEED; static const AirportTileCallbackMask cbm_animation_next_frame = CBM_AIRT_ANIM_NEXT_FRAME; }; void AnimateAirportTile(TileIndex tile) { const AirportTileSpec *ats = AirportTileSpec::GetByTile(tile); if (ats == NULL) return; AirportTileAnimationBase::AnimateTile(ats, Station::GetByTile(tile), tile, HasBit(ats->animation_special_flags, 0)); } void AirportTileAnimationTrigger(Station *st, TileIndex tile, AirpAnimationTrigger trigger, CargoID cargo_type) { const AirportTileSpec *ats = AirportTileSpec::GetByTile(tile); if (!HasBit(ats->animation.triggers, trigger)) return; AirportTileAnimationBase::ChangeAnimationFrame(CBID_AIRPTILE_ANIM_START_STOP, ats, st, tile, Random(), (uint8)trigger | (cargo_type << 8)); } void AirportAnimationTrigger(Station *st, AirpAnimationTrigger trigger, CargoID cargo_type) { if (st->airport.tile == INVALID_TILE) return; TILE_AREA_LOOP(tile, st->airport) { if (st->TileBelongsToAirport(tile)) AirportTileAnimationTrigger(st, tile, trigger, cargo_type); } } openttd-1.3.3/src/goal_type.h0000644000000000000000000000317712246102611014617 0ustar rootroot/* $Id: goal_type.h 23827 2012-01-21 12:03:55Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file goal_type.h basic types related to goals */ #ifndef GOAL_TYPE_H #define GOAL_TYPE_H #include "core/enum_type.hpp" static const uint32 GOAL_QUESTION_BUTTON_COUNT = 18; ///< Amount of buttons available. static const byte GOAL_QUESTION_TYPE_COUNT = 4; ///< Amount of question types. /** Types of goal destinations */ enum GoalType { GT_NONE, ///< Destination is not linked GT_TILE, ///< Destination is a tile GT_INDUSTRY, ///< Destination is an industry GT_TOWN, ///< Destination is a town GT_COMPANY, ///< Destination is a company }; typedef SimpleTinyEnumT GoalTypeByte; ///< The GoalType packed into a byte for savegame purposes. typedef uint32 GoalTypeID; ///< Contains either tile, industry ID, town ID or company ID (or INVALID_GOALTYPE) static const GoalTypeID INVALID_GOALTYPE = 0xFFFFFFFF; ///< Invalid/unknown index of GoalType typedef uint16 GoalID; ///< ID of a goal struct Goal; extern GoalID _new_goal_id; #endif /* GOAL_TYPE_H */ openttd-1.3.3/src/newgrf_commons.h0000644000000000000000000003163712246102611015661 0ustar rootroot/* $Id: newgrf_commons.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file newgrf_commons.h This file simplyfies and embeds a common mechanism of * loading/saving and mapping of grf entities. */ #ifndef NEWGRF_COMMONS_H #define NEWGRF_COMMONS_H #include "sprite.h" #include "core/alloc_type.hpp" #include "core/smallvec_type.hpp" #include "command_type.h" #include "direction_type.h" #include "company_type.h" /** Context for tile accesses */ enum TileContext { TCX_NORMAL, ///< Nothing special. TCX_UPPER_HALFTILE, ///< Querying information about the upper part of a tile with halftile foundation. TCX_ON_BRIDGE, ///< Querying information about stuff on the bridge (via some bridgehead). }; /** * Flags to enable register usage in sprite layouts. */ enum TileLayoutFlags { TLF_NOTHING = 0x00, TLF_DODRAW = 0x01, ///< Only draw sprite if value of register TileLayoutRegisters::dodraw is non-zero. TLF_SPRITE = 0x02, ///< Add signed offset to sprite from register TileLayoutRegisters::sprite. TLF_PALETTE = 0x04, ///< Add signed offset to palette from register TileLayoutRegisters::palette. TLF_CUSTOM_PALETTE = 0x08, ///< Palette is from Action 1 (moved to SPRITE_MODIFIER_CUSTOM_SPRITE in palette during loading). TLF_BB_XY_OFFSET = 0x10, ///< Add signed offset to bounding box X and Y positions from register TileLayoutRegisters::delta.parent[0..1]. TLF_BB_Z_OFFSET = 0x20, ///< Add signed offset to bounding box Z positions from register TileLayoutRegisters::delta.parent[2]. TLF_CHILD_X_OFFSET = 0x10, ///< Add signed offset to child sprite X positions from register TileLayoutRegisters::delta.child[0]. TLF_CHILD_Y_OFFSET = 0x20, ///< Add signed offset to child sprite Y positions from register TileLayoutRegisters::delta.child[1]. TLF_SPRITE_VAR10 = 0x40, ///< Resolve sprite with a specific value in variable 10. TLF_PALETTE_VAR10 = 0x80, ///< Resolve palette with a specific value in variable 10. TLF_KNOWN_FLAGS = 0x7F, ///< Known flags. Any unknown set flag will disable the GRF. /** Flags which are still required after loading the GRF. */ TLF_DRAWING_FLAGS = ~TLF_CUSTOM_PALETTE, /** Flags which do not work for the (first) ground sprite. */ TLF_NON_GROUND_FLAGS = TLF_BB_XY_OFFSET | TLF_BB_Z_OFFSET | TLF_CHILD_X_OFFSET | TLF_CHILD_Y_OFFSET, /** Flags which refer to using multiple action-1-2-3 chains. */ TLF_VAR10_FLAGS = TLF_SPRITE_VAR10 | TLF_PALETTE_VAR10, /** Flags which require resolving the action-1-2-3 chain for the sprite, even if it is no action-1 sprite. */ TLF_SPRITE_REG_FLAGS = TLF_DODRAW | TLF_SPRITE | TLF_BB_XY_OFFSET | TLF_BB_Z_OFFSET | TLF_CHILD_X_OFFSET | TLF_CHILD_Y_OFFSET, /** Flags which require resolving the action-1-2-3 chain for the palette, even if it is no action-1 palette. */ TLF_PALETTE_REG_FLAGS = TLF_PALETTE, }; DECLARE_ENUM_AS_BIT_SET(TileLayoutFlags) /** * Determines which sprite to use from a spriteset for a specific construction stage. * @param construction_stage Construction stage 0 - 3. * @param num_sprites Number of available sprites to select stage from. * @return Sprite to use */ static inline uint GetConstructionStageOffset(uint construction_stage, uint num_sprites) { assert(num_sprites > 0); if (num_sprites > 4) num_sprites = 4; switch (construction_stage) { case 0: return 0; case 1: return num_sprites > 2 ? 1 : 0; case 2: return num_sprites > 2 ? num_sprites - 2 : 0; case 3: return num_sprites - 1; default: NOT_REACHED(); } } /** * Additional modifiers for items in sprite layouts. */ struct TileLayoutRegisters { TileLayoutFlags flags; ///< Flags defining which members are valid and to be used. uint8 dodraw; ///< Register deciding whether the sprite shall be drawn at all. Non-zero means drawing. uint8 sprite; ///< Register specifying a signed offset for the sprite. uint8 palette; ///< Register specifying a signed offset for the palette. uint16 max_sprite_offset; ///< Maximum offset to add to the sprite. (limited by size of the spriteset) uint16 max_palette_offset; ///< Maximum offset to add to the palette. (limited by size of the spriteset) union { uint8 parent[3]; ///< Registers for signed offsets for the bounding box position of parent sprites. uint8 child[2]; ///< Registers for signed offsets for the position of child sprites. } delta; uint8 sprite_var10; ///< Value for variable 10 when resolving the sprite. uint8 palette_var10; ///< Value for variable 10 when resolving the palette. }; static const uint TLR_MAX_VAR10 = 7; ///< Maximum value for var 10. /** * NewGRF supplied spritelayout. * In contrast to #DrawTileSprites this struct is for allocated * layouts on the heap. It allocates data and frees them on destruction. */ struct NewGRFSpriteLayout : ZeroedMemoryAllocator, DrawTileSprites { const TileLayoutRegisters *registers; /** * Number of sprites in all referenced spritesets. * If these numbers are inconsistent, then this is 0 and the real values are in \c registers. */ uint consistent_max_offset; void Allocate(uint num_sprites); void AllocateRegisters(); void Clone(const DrawTileSeqStruct *source); void Clone(const NewGRFSpriteLayout *source); /** * Clone a spritelayout. * @param source The spritelayout to copy. */ void Clone(const DrawTileSprites *source) { assert(source != NULL && this != source); this->ground = source->ground; this->Clone(source->seq); } virtual ~NewGRFSpriteLayout() { free(this->seq); free(this->registers); } /** * Tests whether this spritelayout needs preprocessing by * #PrepareLayout() and #ProcessRegisters(), or whether it can be * used directly. * @return true if preprocessing is needed */ bool NeedsPreprocessing() const { return this->registers != NULL; } uint32 PrepareLayout(uint32 orig_offset, uint32 newgrf_ground_offset, uint32 newgrf_offset, uint constr_stage, bool separate_ground) const; void ProcessRegisters(uint8 resolved_var10, uint32 resolved_sprite, bool separate_ground) const; /** * Returns the result spritelayout after preprocessing. * @pre #PrepareLayout() and #ProcessRegisters() need calling first. * @return result spritelayout */ const DrawTileSeqStruct *GetLayout(PalSpriteID *ground) const { DrawTileSeqStruct *front = result_seq.Begin(); *ground = front->image; return front + 1; } private: static SmallVector result_seq; ///< Temporary storage when preprocessing spritelayouts. }; /** * Maps an entity id stored on the map to a GRF file. * Entities are objects used ingame (houses, industries, industry tiles) for * which we need to correlate the ids from the grf files with the ones in the * the savegames themselves. * An array of EntityIDMapping structs is saved with the savegame so * that those GRFs can be loaded in a different order, or removed safely. The * index in the array is the entity's ID stored on the map. * * The substitute ID is the ID of an original entity that should be used instead * if the GRF containing the new entity is not available. */ struct EntityIDMapping { uint32 grfid; ///< The GRF ID of the file the entity belongs to uint8 entity_id; ///< The entity ID within the GRF file uint8 substitute_id; ///< The (original) entity ID to use if this GRF is not available }; class OverrideManagerBase { protected: uint16 *entity_overrides; uint32 *grfid_overrides; uint16 max_offset; ///< what is the length of the original entity's array of specs uint16 max_new_entities; ///< what is the amount of entities, old and new summed uint16 invalid_ID; ///< ID used to detected invalid entities; virtual bool CheckValidNewID(uint16 testid) { return true; } public: EntityIDMapping *mapping_ID; ///< mapping of ids from grf files. Public out of convenience OverrideManagerBase(uint16 offset, uint16 maximum, uint16 invalid); virtual ~OverrideManagerBase(); void ResetOverride(); void ResetMapping(); void Add(uint8 local_id, uint32 grfid, uint entity_type); virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id); uint32 GetGRFID(uint16 entity_id) const; uint16 GetSubstituteID(uint16 entity_id) const; virtual uint16 GetID(uint8 grf_local_id, uint32 grfid) const; inline uint16 GetMaxMapping() const { return max_new_entities; } inline uint16 GetMaxOffset() const { return max_offset; } }; struct HouseSpec; class HouseOverrideManager : public OverrideManagerBase { public: HouseOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} void SetEntitySpec(const HouseSpec *hs); }; struct IndustrySpec; class IndustryOverrideManager : public OverrideManagerBase { public: IndustryOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id); virtual uint16 GetID(uint8 grf_local_id, uint32 grfid) const; void SetEntitySpec(IndustrySpec *inds); }; struct IndustryTileSpec; class IndustryTileOverrideManager : public OverrideManagerBase { protected: virtual bool CheckValidNewID(uint16 testid) { return testid != 0xFF; } public: IndustryTileOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} void SetEntitySpec(const IndustryTileSpec *indts); }; struct AirportSpec; class AirportOverrideManager : public OverrideManagerBase { public: AirportOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} void SetEntitySpec(AirportSpec *inds); }; struct AirportTileSpec; class AirportTileOverrideManager : public OverrideManagerBase { protected: virtual bool CheckValidNewID(uint16 testid) { return testid != 0xFF; } public: AirportTileOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} void SetEntitySpec(const AirportTileSpec *ats); }; struct ObjectSpec; class ObjectOverrideManager : public OverrideManagerBase { protected: virtual bool CheckValidNewID(uint16 testid) { return testid != 0xFF; } public: ObjectOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} void SetEntitySpec(ObjectSpec *spec); }; extern HouseOverrideManager _house_mngr; extern IndustryOverrideManager _industry_mngr; extern IndustryTileOverrideManager _industile_mngr; extern AirportOverrideManager _airport_mngr; extern AirportTileOverrideManager _airporttile_mngr; extern ObjectOverrideManager _object_mngr; uint32 GetTerrainType(TileIndex tile, TileContext context = TCX_NORMAL); TileIndex GetNearbyTile(byte parameter, TileIndex tile, bool signed_offsets = true, Axis axis = INVALID_AXIS); uint32 GetNearbyTileInformation(TileIndex tile, bool grf_version8); uint32 GetCompanyInfo(CompanyID owner, const struct Livery *l = NULL); CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfid, StringID default_error); void ErrorUnknownCallbackResult(uint32 grfid, uint16 cbid, uint16 cb_res); bool ConvertBooleanCallback(const struct GRFFile *grffile, uint16 cbid, uint16 cb_res); bool Convert8bitBooleanCallback(const struct GRFFile *grffile, uint16 cbid, uint16 cb_res); /** * Data related to the handling of grf files. * @tparam Tcnt Number of spritegroups */ template struct GRFFilePropsBase { GRFFilePropsBase() : local_id(0), grffile(0) { /* The lack of some compilers to provide default constructors complying to the specs * requires us to zero the stuff ourself. */ memset(spritegroup, 0, sizeof(spritegroup)); } uint16 local_id; ///< id defined by the grf file for this entity const struct GRFFile *grffile; ///< grf file that introduced this entity const struct SpriteGroup *spritegroup[Tcnt]; ///< pointer to the different sprites of the entity }; /** Data related to the handling of grf files. */ struct GRFFileProps : GRFFilePropsBase<1> { /** Set all default data constructor for the props. */ GRFFileProps(uint16 subst_id) : GRFFilePropsBase<1>(), subst_id(subst_id), override(subst_id) { } /** Simple constructor for the props. */ GRFFileProps() : GRFFilePropsBase<1>() {} uint16 subst_id; uint16 override; ///< id of the entity been replaced by }; #endif /* NEWGRF_COMMONS_H */ openttd-1.3.3/src/strings_func.h0000644000000000000000000001507712246102611015342 0ustar rootroot/* $Id: strings_func.h 25340 2013-06-09 09:38:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file strings_func.h Functions related to OTTD's strings. */ #ifndef STRINGS_FUNC_H #define STRINGS_FUNC_H #include "strings_type.h" #include "string_type.h" #include "gfx_type.h" class StringParameters { StringParameters *parent; ///< If not NULL, this instance references data from this parent instance. uint64 *data; ///< Array with the actual data. WChar *type; ///< Array with type information about the data. Can be NULL when no type information is needed. See #StringControlCode. public: uint offset; ///< Current offset in the data/type arrays. uint num_param; ///< Length of the data array. /** Create a new StringParameters instance. */ StringParameters(uint64 *data, uint num_param, WChar *type) : parent(NULL), data(data), type(type), offset(0), num_param(num_param) { } /** Create a new StringParameters instance. */ template StringParameters(int64 (&data)[Tnum_param]) : parent(NULL), data((uint64 *)data), type(NULL), offset(0), num_param(Tnum_param) { assert_compile(sizeof(data[0]) == sizeof(uint64)); } /** * Create a new StringParameters instance that can reference part of the data of * the given partent instance. */ StringParameters(StringParameters &parent, uint size) : parent(&parent), data(parent.data + parent.offset), offset(0), num_param(size) { assert(size <= parent.num_param - parent.offset); if (parent.type == NULL) { this->type = NULL; } else { this->type = parent.type + parent.offset; } } ~StringParameters() { if (this->parent != NULL) { this->parent->offset += this->num_param; } } void ClearTypeInformation(); int64 GetInt64(WChar type = 0); /** Read an int32 from the argument array. @see GetInt64. */ int32 GetInt32(WChar type = 0) { return (int32)this->GetInt64(type); } void ShiftParameters(uint amount); /** Get a pointer to the current element in the data array. */ uint64 *GetDataPointer() const { return &this->data[this->offset]; } /** Get a pointer to a specific element in the data array. */ uint64 *GetPointerToOffset(uint offset) const { assert(offset < this->num_param); return &this->data[offset]; } /** Does this instance store information about the type of the parameters. */ bool HasTypeInformation() const { return this->type != NULL; } /** Get the type of a specific element. */ WChar GetTypeAtOffset(uint offset) const { assert(offset < this->num_param); assert(this->HasTypeInformation()); return this->type[offset]; } void SetParam(uint n, uint64 v) { assert(n < this->num_param); this->data[n] = v; } uint64 GetParam(uint n) const { assert(n < this->num_param); return this->data[n]; } }; extern StringParameters _global_string_params; char *InlineString(char *buf, StringID string); char *GetString(char *buffr, StringID string, const char *last); char *GetStringWithArgs(char *buffr, StringID string, StringParameters *args, const char *last, uint case_index = 0, bool game_script = false); const char *GetStringPtr(StringID string); uint ConvertKmhishSpeedToDisplaySpeed(uint speed); uint ConvertDisplaySpeedToKmhishSpeed(uint speed); void InjectDParam(uint amount); /** * Set a string parameter \a v at index \a n in a given array \a s. * @param s Array of string parameters. * @param n Index of the string parameter. * @param v Value of the string parameter. */ static inline void SetDParamX(uint64 *s, uint n, uint64 v) { s[n] = v; } /** * Set a string parameter \a v at index \a n in the global string parameter array. * @param n Index of the string parameter. * @param v Value of the string parameter. */ static inline void SetDParam(uint n, uint64 v) { _global_string_params.SetParam(n, v); } void SetDParamMaxValue(uint n, uint64 max_value, uint min_count = 0, FontSize size = FS_NORMAL); void SetDParamMaxDigits(uint n, uint count, FontSize size = FS_NORMAL); void SetDParamStr(uint n, const char *str); void CopyInDParam(int offs, const uint64 *src, int num); void CopyOutDParam(uint64 *dst, int offs, int num); void CopyOutDParam(uint64 *dst, const char **strings, StringID string, int num); /** * Get the current string parameter at index \a n from parameter array \a s. * @param s Array of string parameters. * @param n Index of the string parameter. * @return Value of the requested string parameter. */ static inline uint64 GetDParamX(const uint64 *s, uint n) { return s[n]; } /** * Get the current string parameter at index \a n from the global string parameter array. * @param n Index of the string parameter. * @return Value of the requested string parameter. */ static inline uint64 GetDParam(uint n) { return _global_string_params.GetParam(n); } extern TextDirection _current_text_dir; ///< Text direction of the currently selected language void InitializeLanguagePacks(); const char *GetCurrentLanguageIsoCode(); int CDECL StringIDSorter(const StringID *a, const StringID *b); /** * A searcher for missing glyphs. */ class MissingGlyphSearcher { public: /** Make sure everything gets destructed right. */ virtual ~MissingGlyphSearcher() {} /** * Get the next string to search through. * @return The next string or NULL if there is none. */ virtual const char *NextString() = 0; /** * Get the default (font) size of the string. * @return The font size. */ virtual FontSize DefaultSize() = 0; /** * Reset the search, i.e. begin from the beginning again. */ virtual void Reset() = 0; /** * Whether to search for a monospace font or not. * @return True if searching for monospace. */ virtual bool Monospace() = 0; /** * Set the right font names. * @param settings The settings to modify. * @param font_name The new font name. */ virtual void SetFontNames(struct FreeTypeSettings *settings, const char *font_name) = 0; bool FindMissingGlyphs(const char **str); }; void CheckForMissingGlyphs(bool base_font = true, MissingGlyphSearcher *search = NULL); #endif /* STRINGS_FUNC_H */ openttd-1.3.3/src/void_map.h0000644000000000000000000000203612246102611014423 0ustar rootroot/* $Id: void_map.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file void_map.h Map accessors for void tiles. */ #ifndef VOID_MAP_H #define VOID_MAP_H #include "tile_map.h" /** * Make a nice void tile ;) * @param t the tile to make void */ static inline void MakeVoid(TileIndex t) { SetTileType(t, MP_VOID); SetTileHeight(t, 0); _m[t].m1 = 0; _m[t].m2 = 0; _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = 0; _m[t].m6 = 0; _me[t].m7 = 0; } #endif /* VOID_MAP_H */ openttd-1.3.3/src/sound/0000755000000000000000000000000012246102757013616 5ustar rootrootopenttd-1.3.3/src/sound/allegro_s.cpp0000644000000000000000000000535412246102565016275 0ustar rootroot/* $Id: allegro_s.cpp 20286 2010-08-01 19:44:49Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file allegro_s.cpp Playing sound via Allegro. */ #ifdef WITH_ALLEGRO #include "../stdafx.h" #include "../mixer.h" #include "../debug.h" #include "allegro_s.h" #include static FSoundDriver_Allegro iFSoundDriver_Allegro; /** The stream we are writing too */ static AUDIOSTREAM *_stream = NULL; /** The number of samples in the buffer */ static int _buffer_size; void SoundDriver_Allegro::MainLoop() { /* We haven't opened a stream yet */ if (_stream == NULL) return; void *data = get_audio_stream_buffer(_stream); /* We don't have to fill the stream yet */ if (data == NULL) return; /* Mix the samples */ MxMixSamples(data, _buffer_size); /* Allegro sound is always unsigned, so we need to correct that */ uint16 *snd = (uint16*)data; for (int i = 0; i < _buffer_size * 2; i++) snd[i] ^= 0x8000; /* Tell we've filled the stream */ free_audio_stream_buffer(_stream); } /** * There are multiple modules that might be using Allegro and * Allegro can only be initiated once. */ extern int _allegro_instance_count; const char *SoundDriver_Allegro::Start(const char * const *parm) { if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) { DEBUG(driver, 0, "allegro: install_allegro failed '%s'", allegro_error); return "Failed to set up Allegro"; } _allegro_instance_count++; /* Initialise the sound */ if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) { DEBUG(driver, 0, "allegro: install_sound failed '%s'", allegro_error); return "Failed to set up Allegro sound"; } /* Okay, there's no soundcard */ if (digi_card == DIGI_NONE) { DEBUG(driver, 0, "allegro: no sound card found"); return "No sound card found"; } int hz = GetDriverParamInt(parm, "hz", 44100); _buffer_size = GetDriverParamInt(parm, "samples", 1024) * hz / 11025; _stream = play_audio_stream(_buffer_size, 16, true, hz, 255, 128); MxInitialize(hz); return NULL; } void SoundDriver_Allegro::Stop() { if (_stream != NULL) { stop_audio_stream(_stream); _stream = NULL; } remove_sound(); if (--_allegro_instance_count == 0) allegro_exit(); } #endif /* WITH_ALLEGRO */ openttd-1.3.3/src/sound/win32_s.h0000644000000000000000000000264612246102565015260 0ustar rootroot/* $Id: win32_s.h 22410 2011-05-02 16:14:23Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file win32_s.h Base for Windows sound handling. */ #ifndef SOUND_WIN32_H #define SOUND_WIN32_H #include "sound_driver.hpp" /** Implementation of the sound driver for Windows. */ class SoundDriver_Win32: public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); /* virtual */ void Stop(); /* virtual */ const char *GetName() const { return "win32"; } }; /** Factory for the sound driver for Windows. */ class FSoundDriver_Win32: public SoundDriverFactory { public: static const int priority = 10; /* virtual */ const char *GetName() { return "win32"; } /* virtual */ const char *GetDescription() { return "Win32 WaveOut Driver"; } /* virtual */ Driver *CreateInstance() { return new SoundDriver_Win32(); } }; #endif /* SOUND_WIN32_H */ openttd-1.3.3/src/sound/sdl_s.cpp0000644000000000000000000000333412246102565015426 0ustar rootroot/* $Id: sdl_s.cpp 22406 2011-05-01 19:51:52Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sdl_s.cpp Playing sound via SDL. */ #ifdef WITH_SDL #include "../stdafx.h" #include "../mixer.h" #include "../sdl.h" #include "sdl_s.h" #include /** Factory for the SDL sound driver. */ static FSoundDriver_SDL iFSoundDriver_SDL; /** * Callback that fills the sound buffer. * @param userdata Ignored. * @param stream The stream to put data into. * @param len The length of the stream in bytes. */ static void CDECL fill_sound_buffer(void *userdata, Uint8 *stream, int len) { MxMixSamples(stream, len / 4); } const char *SoundDriver_SDL::Start(const char * const *parm) { SDL_AudioSpec spec; const char *s = SdlOpen(SDL_INIT_AUDIO); if (s != NULL) return s; spec.freq = GetDriverParamInt(parm, "hz", 44100); spec.format = AUDIO_S16SYS; spec.channels = 2; spec.samples = GetDriverParamInt(parm, "samples", 1024); spec.callback = fill_sound_buffer; MxInitialize(spec.freq); SDL_CALL SDL_OpenAudio(&spec, &spec); SDL_CALL SDL_PauseAudio(0); return NULL; } void SoundDriver_SDL::Stop() { SDL_CALL SDL_CloseAudio(); SdlClose(SDL_INIT_AUDIO); } #endif /* WITH_SDL */ openttd-1.3.3/src/sound/sdl_s.h0000644000000000000000000000257112246102565015075 0ustar rootroot/* $Id: sdl_s.h 22410 2011-05-02 16:14:23Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sdl_s.h Base fo playing sound via SDL. */ #ifndef SOUND_SDL_H #define SOUND_SDL_H #include "sound_driver.hpp" /** Implementation of the SDL sound driver. */ class SoundDriver_SDL: public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); /* virtual */ void Stop(); /* virtual */ const char *GetName() const { return "sdl"; } }; /** Factory for the SDL sound driver. */ class FSoundDriver_SDL: public SoundDriverFactory { public: static const int priority = 5; /* virtual */ const char *GetName() { return "sdl"; } /* virtual */ const char *GetDescription() { return "SDL Sound Driver"; } /* virtual */ Driver *CreateInstance() { return new SoundDriver_SDL(); } }; #endif /* SOUND_SDL_H */ openttd-1.3.3/src/sound/null_s.h0000644000000000000000000000263212246102565015263 0ustar rootroot/* $Id: null_s.h 22410 2011-05-02 16:14:23Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file null_s.h Base for the sound of silence. */ #ifndef SOUND_NULL_H #define SOUND_NULL_H #include "sound_driver.hpp" /** Implementation of the null sound driver. */ class SoundDriver_Null: public SoundDriver { public: /* virtual */ const char *Start(const char * const *param) { return NULL; } /* virtual */ void Stop() { } /* virtual */ const char *GetName() const { return "null"; } }; /** Factory for the null sound driver. */ class FSoundDriver_Null: public SoundDriverFactory { public: static const int priority = 1; /* virtual */ const char *GetName() { return "null"; } /* virtual */ const char *GetDescription() { return "Null Sound Driver"; } /* virtual */ Driver *CreateInstance() { return new SoundDriver_Null(); } }; #endif /* SOUND_NULL_H */ openttd-1.3.3/src/sound/sound_driver.hpp0000644000000000000000000000301212246102565017023 0ustar rootroot/* $Id: sound_driver.hpp 22410 2011-05-02 16:14:23Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sound_driver.hpp Base for all sound drivers. */ #ifndef SOUND_SOUND_DRIVER_HPP #define SOUND_SOUND_DRIVER_HPP #include "../driver.h" /** Base for all sound drivers. */ class SoundDriver: public Driver { public: /** Called once every tick */ virtual void MainLoop() {} }; /** Base of the factory for the sound drivers. */ class SoundDriverFactoryBase: public DriverFactoryBase { }; /** * Factory for the sound drivers. * @tparam T The type of the sound factory to register. */ template class SoundDriverFactory: public SoundDriverFactoryBase { public: SoundDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_SOUND, ((T *)this)->priority); } /** * Get the long, human readable, name for the Driver-class. */ const char *GetName(); }; extern SoundDriver *_sound_driver; extern char *_ini_sounddriver; #endif /* SOUND_SOUND_DRIVER_HPP */ openttd-1.3.3/src/sound/null_s.cpp0000644000000000000000000000152012246102565015611 0ustar rootroot/* $Id: null_s.cpp 22406 2011-05-01 19:51:52Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file null_s.cpp The sound driver that doesn't produce sound. */ #include "../stdafx.h" #include "null_s.h" /** The factory for the null sound driver. */ static FSoundDriver_Null iFSoundDriver_Null; openttd-1.3.3/src/sound/cocoa_s.h0000644000000000000000000000247212246102565015377 0ustar rootroot/* $Id: cocoa_s.h 17428 2009-09-05 21:26:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cocoa_s.h Base for Cocoa sound handling. */ #ifndef SOUND_COCOA_H #define SOUND_COCOA_H #include "sound_driver.hpp" class SoundDriver_Cocoa: public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); /* virtual */ void Stop(); /* virtual */ const char *GetName() const { return "cocoa"; } }; class FSoundDriver_Cocoa: public SoundDriverFactory { public: static const int priority = 10; /* virtual */ const char *GetName() { return "cocoa"; } /* virtual */ const char *GetDescription() { return "Cocoa Sound Driver"; } /* virtual */ Driver *CreateInstance() { return new SoundDriver_Cocoa(); } }; #endif /* SOUND_COCOA_H */ openttd-1.3.3/src/sound/allegro_s.h0000644000000000000000000000272612246102565015742 0ustar rootroot/* $Id: allegro_s.h 22410 2011-05-02 16:14:23Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file allegro_s.h Base fo playing sound via Allegro. */ #ifndef SOUND_ALLEGRO_H #define SOUND_ALLEGRO_H #include "sound_driver.hpp" /** Implementation of the allegro sound driver. */ class SoundDriver_Allegro: public SoundDriver { public: /* virtual */ const char *Start(const char * const *param); /* virtual */ void Stop(); /* virtual */ void MainLoop(); /* virtual */ const char *GetName() const { return "allegro"; } }; /** Factory for the allegro sound driver. */ class FSoundDriver_Allegro: public SoundDriverFactory { public: static const int priority = 4; /* virtual */ const char *GetName() { return "allegro"; } /* virtual */ const char *GetDescription() { return "Allegro Sound Driver"; } /* virtual */ Driver *CreateInstance() { return new SoundDriver_Allegro(); } }; #endif /* SOUND_ALLEGRO_H */ openttd-1.3.3/src/sound/cocoa_s.cpp0000644000000000000000000001210012246102565015717 0ustar rootroot/* $Id: cocoa_s.cpp 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cocoa_s.cpp Sound driver for cocoa. */ /***************************************************************************** * Cocoa sound driver * * Known things left to do: * * - Might need to do endian checking for it to work on both ppc and x86 * *****************************************************************************/ #ifdef WITH_COCOA #include "../stdafx.h" #include "../debug.h" #include "../driver.h" #include "../mixer.h" #include "../core/endian_type.hpp" #include "cocoa_s.h" #define Rect OTTDRect #define Point OTTDPoint #include #undef Rect #undef Point static FSoundDriver_Cocoa iFSoundDriver_Cocoa; static AudioUnit _outputAudioUnit; /* The CoreAudio callback */ static OSStatus audioCallback(void *inRefCon, AudioUnitRenderActionFlags *inActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList * ioData) { MxMixSamples(ioData->mBuffers[0].mData, ioData->mBuffers[0].mDataByteSize / 4); return noErr; } const char *SoundDriver_Cocoa::Start(const char * const *parm) { Component comp; ComponentDescription desc; struct AURenderCallbackStruct callback; AudioStreamBasicDescription requestedDesc; /* Setup a AudioStreamBasicDescription with the requested format */ requestedDesc.mFormatID = kAudioFormatLinearPCM; requestedDesc.mFormatFlags = kLinearPCMFormatFlagIsPacked; requestedDesc.mChannelsPerFrame = 2; requestedDesc.mSampleRate = GetDriverParamInt(parm, "hz", 44100); requestedDesc.mBitsPerChannel = 16; requestedDesc.mFormatFlags |= kLinearPCMFormatFlagIsSignedInteger; #if TTD_ENDIAN == TTD_BIG_ENDIAN requestedDesc.mFormatFlags |= kLinearPCMFormatFlagIsBigEndian; #endif /* TTD_ENDIAN == TTD_BIG_ENDIAN */ requestedDesc.mFramesPerPacket = 1; requestedDesc.mBytesPerFrame = requestedDesc.mBitsPerChannel * requestedDesc.mChannelsPerFrame / 8; requestedDesc.mBytesPerPacket = requestedDesc.mBytesPerFrame * requestedDesc.mFramesPerPacket; MxInitialize((uint)requestedDesc.mSampleRate); /* Locate the default output audio unit */ desc.componentType = kAudioUnitType_Output; desc.componentSubType = kAudioUnitSubType_HALOutput; desc.componentManufacturer = kAudioUnitManufacturer_Apple; desc.componentFlags = 0; desc.componentFlagsMask = 0; comp = FindNextComponent (NULL, &desc); if (comp == NULL) { return "cocoa_s: Failed to start CoreAudio: FindNextComponent returned NULL"; } /* Open & initialize the default output audio unit */ if (OpenAComponent(comp, &_outputAudioUnit) != noErr) { return "cocoa_s: Failed to start CoreAudio: OpenAComponent"; } if (AudioUnitInitialize(_outputAudioUnit) != noErr) { return "cocoa_s: Failed to start CoreAudio: AudioUnitInitialize"; } /* Set the input format of the audio unit. */ if (AudioUnitSetProperty(_outputAudioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &requestedDesc, sizeof(requestedDesc)) != noErr) { return "cocoa_s: Failed to start CoreAudio: AudioUnitSetProperty (kAudioUnitProperty_StreamFormat)"; } /* Set the audio callback */ callback.inputProc = audioCallback; callback.inputProcRefCon = NULL; if (AudioUnitSetProperty(_outputAudioUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &callback, sizeof(callback)) != noErr) { return "cocoa_s: Failed to start CoreAudio: AudioUnitSetProperty (kAudioUnitProperty_SetRenderCallback)"; } /* Finally, start processing of the audio unit */ if (AudioOutputUnitStart(_outputAudioUnit) != noErr) { return "cocoa_s: Failed to start CoreAudio: AudioOutputUnitStart"; } /* We're running! */ return NULL; } void SoundDriver_Cocoa::Stop() { struct AURenderCallbackStruct callback; /* stop processing the audio unit */ if (AudioOutputUnitStop(_outputAudioUnit) != noErr) { DEBUG(driver, 0, "cocoa_s: Core_CloseAudio: AudioOutputUnitStop failed"); return; } /* Remove the input callback */ callback.inputProc = 0; callback.inputProcRefCon = 0; if (AudioUnitSetProperty(_outputAudioUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &callback, sizeof(callback)) != noErr) { DEBUG(driver, 0, "cocoa_s: Core_CloseAudio: AudioUnitSetProperty (kAudioUnitProperty_SetRenderCallback) failed"); return; } if (CloseComponent(_outputAudioUnit) != noErr) { DEBUG(driver, 0, "cocoa_s: Core_CloseAudio: CloseComponent failed"); return; } } #endif /* WITH_COCOA */ openttd-1.3.3/src/sound/win32_s.cpp0000644000000000000000000000656412246102565015616 0ustar rootroot/* $Id: win32_s.cpp 22877 2011-09-03 10:31:28Z terkhen $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file win32_s.cpp Handling of sound for Windows. */ #include "../stdafx.h" #include "../openttd.h" #include "../driver.h" #include "../mixer.h" #include "../core/alloc_func.hpp" #include "../core/bitmath_func.hpp" #include "../core/math_func.hpp" #include "win32_s.h" #include #include static FSoundDriver_Win32 iFSoundDriver_Win32; static HWAVEOUT _waveout; static WAVEHDR _wave_hdr[2]; static int _bufsize; static HANDLE _thread; static DWORD _threadId; static HANDLE _event; static void PrepareHeader(WAVEHDR *hdr) { hdr->dwBufferLength = _bufsize * 4; hdr->dwFlags = 0; hdr->lpData = MallocT(_bufsize * 4); if (waveOutPrepareHeader(_waveout, hdr, sizeof(WAVEHDR)) != MMSYSERR_NOERROR) throw "waveOutPrepareHeader failed"; } static DWORD WINAPI SoundThread(LPVOID arg) { do { for (WAVEHDR *hdr = _wave_hdr; hdr != endof(_wave_hdr); hdr++) { if ((hdr->dwFlags & WHDR_INQUEUE) != 0) continue; MxMixSamples(hdr->lpData, hdr->dwBufferLength / 4); if (waveOutWrite(_waveout, hdr, sizeof(WAVEHDR)) != MMSYSERR_NOERROR) { MessageBox(NULL, _T("Sounds are disabled until restart."), _T("waveOutWrite failed"), MB_ICONINFORMATION); return 0; } } WaitForSingleObject(_event, INFINITE); } while (_waveout != NULL); return 0; } const char *SoundDriver_Win32::Start(const char * const *parm) { WAVEFORMATEX wfex; wfex.wFormatTag = WAVE_FORMAT_PCM; wfex.nChannels = 2; wfex.wBitsPerSample = 16; wfex.nSamplesPerSec = GetDriverParamInt(parm, "hz", 44100); wfex.nBlockAlign = (wfex.nChannels * wfex.wBitsPerSample) / 8; wfex.nAvgBytesPerSec = wfex.nSamplesPerSec * wfex.nBlockAlign; /* Limit buffer size to prevent overflows. */ _bufsize = GetDriverParamInt(parm, "bufsize", (GB(GetVersion(), 0, 8) > 5) ? 8192 : 4096); _bufsize = min(_bufsize, UINT16_MAX); try { if (NULL == (_event = CreateEvent(NULL, FALSE, FALSE, NULL))) throw "Failed to create event"; if (waveOutOpen(&_waveout, WAVE_MAPPER, &wfex, (DWORD_PTR)_event, 0, CALLBACK_EVENT) != MMSYSERR_NOERROR) throw "waveOutOpen failed"; MxInitialize(wfex.nSamplesPerSec); PrepareHeader(&_wave_hdr[0]); PrepareHeader(&_wave_hdr[1]); if (NULL == (_thread = CreateThread(NULL, 8192, SoundThread, 0, 0, &_threadId))) throw "Failed to create thread"; } catch (char *error) { this->Stop(); return error; } return NULL; } void SoundDriver_Win32::Stop() { HWAVEOUT waveout = _waveout; /* Stop the sound thread. */ _waveout = NULL; SetEvent(_event); WaitForSingleObject(_thread, INFINITE); /* Close the sound device. */ waveOutReset(waveout); waveOutUnprepareHeader(waveout, &_wave_hdr[0], sizeof(WAVEHDR)); waveOutUnprepareHeader(waveout, &_wave_hdr[1], sizeof(WAVEHDR)); waveOutClose(waveout); CloseHandle(_thread); CloseHandle(_event); } openttd-1.3.3/src/base_media_base.h0000644000000000000000000002411012246102611015665 0ustar rootroot/* $Id: base_media_base.h 24487 2012-08-20 21:01:40Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file base_media_base.h Generic functions for replacing base data (graphics, sounds). */ #ifndef BASE_MEDIA_BASE_H #define BASE_MEDIA_BASE_H #include "fileio_func.h" #include "core/smallmap_type.hpp" #include "gfx_type.h" #include "textfile_type.h" #include "textfile_gui.h" /* Forward declare these; can't do 'struct X' in functions as older GCCs barf on that */ struct IniFile; struct ContentInfo; /** Structure holding filename and MD5 information about a single file */ struct MD5File { /** The result of a checksum check */ enum ChecksumResult { CR_MATCH, ///< The file did exist and the md5 checksum did match CR_MISMATCH, ///< The file did exist, just the md5 checksum did not match CR_NO_FILE, ///< The file did not exist }; const char *filename; ///< filename uint8 hash[16]; ///< md5 sum of the file const char *missing_warning; ///< warning when this file is missing ChecksumResult CheckMD5(Subdirectory subdir, size_t max_size) const; }; /** * Information about a single base set. * @tparam T the real class we're going to be * @tparam Tnum_files the number of files in the set * @tparam Tsearch_in_tars whether to search in the tars or not */ template struct BaseSet { typedef SmallMap TranslatedStrings; /** Number of files in this set */ static const size_t NUM_FILES = Tnum_files; /** Whether to search in the tars or not. */ static const bool SEARCH_IN_TARS = Tsearch_in_tars; /** Internal names of the files in this set. */ static const char * const *file_names; const char *name; ///< The name of the base set TranslatedStrings description; ///< Description of the base set uint32 shortname; ///< Four letter short variant of the name uint32 version; ///< The version of this base set bool fallback; ///< This set is a fallback set, i.e. it should be used only as last resort MD5File files[NUM_FILES]; ///< All files part of this set uint found_files; ///< Number of the files that could be found uint valid_files; ///< Number of the files that could be found and are valid T *next; ///< The next base set in this list /** Free everything we allocated */ ~BaseSet() { free(this->name); for (TranslatedStrings::iterator iter = this->description.Begin(); iter != this->description.End(); iter++) { free(iter->first); free(iter->second); } for (uint i = 0; i < NUM_FILES; i++) { free(this->files[i].filename); free(this->files[i].missing_warning); } delete this->next; } /** * Get the number of missing files. * @return the number */ int GetNumMissing() const { return Tnum_files - this->found_files; } /** * Get the number of invalid files. * @note a missing file is invalid too! * @return the number */ int GetNumInvalid() const { return Tnum_files - this->valid_files; } bool FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename = true); /** * Get the description for the given ISO code. * It falls back to the first two characters of the ISO code in case * no match could be made with the full ISO code. If even then the * matching fails the default is returned. * @param isocode the isocode to search for * @return the description */ const char *GetDescription(const char *isocode = NULL) const { if (isocode != NULL) { /* First the full ISO code */ for (TranslatedStrings::const_iterator iter = this->description.Begin(); iter != this->description.End(); iter++) { if (strcmp(iter->first, isocode) == 0) return iter->second; } /* Then the first two characters */ for (TranslatedStrings::const_iterator iter = this->description.Begin(); iter != this->description.End(); iter++) { if (strncmp(iter->first, isocode, 2) == 0) return iter->second; } } /* Then fall back */ return this->description.Begin()->second; } /** * Calculate and check the MD5 hash of the supplied file. * @param file The file get the hash of. * @param subdir The sub directory to get the files from. * @return * - #CR_MATCH if the MD5 hash matches * - #CR_MISMATCH if the MD5 does not match * - #CR_NO_FILE if the file misses */ static MD5File::ChecksumResult CheckMD5(const MD5File *file, Subdirectory subdir) { return file->CheckMD5(subdir, SIZE_MAX); } /** * Search a textfile file next to this base media. * @param type The type of the textfile to search for. * @return The filename for the textfile, \c NULL otherwise. */ const char *GetTextfile(TextfileType type) const { for (uint i = 0; i < NUM_FILES; i++) { const char *textfile = ::GetTextfile(type, BASESET_DIR, this->files[i].filename); if (textfile != NULL) { return textfile; } } return NULL; } }; /** * Base for all base media (graphics, sounds) * @tparam Tbase_set the real set we're going to be */ template class BaseMedia : FileScanner { protected: static Tbase_set *available_sets; ///< All available sets static Tbase_set *duplicate_sets; ///< All sets that aren't available, but needed for not downloading base sets when a newer version than the one on BaNaNaS is loaded. static const Tbase_set *used_set; ///< The currently used set /* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename); /** * Get the extension that is used to identify this set. * @return the extension */ static const char *GetExtension(); public: /** The set as saved in the config file. */ static const char *ini_set; /** * Determine the graphics pack that has to be used. * The one with the most correct files wins. * @return true if a best set has been found. */ static bool DetermineBestSet(); /** Do the scan for files. */ static uint FindSets() { BaseMedia fs; /* Searching in tars is only done in the old "data" directories basesets. */ uint num = fs.Scan(GetExtension(), Tbase_set::SEARCH_IN_TARS ? OLD_DATA_DIR : OLD_GM_DIR, Tbase_set::SEARCH_IN_TARS); return num + fs.Scan(GetExtension(), BASESET_DIR, Tbase_set::SEARCH_IN_TARS); } static Tbase_set *GetAvailableSets(); static bool SetSet(const char *name); static char *GetSetsList(char *p, const char *last); static int GetNumSets(); static int GetIndexOfUsedSet(); static const Tbase_set *GetSet(int index); static const Tbase_set *GetUsedSet(); /** * Check whether we have an set with the exact characteristics as ci. * @param ci the characteristics to search on (shortname and md5sum) * @param md5sum whether to check the MD5 checksum * @return true iff we have an set matching. */ static bool HasSet(const ContentInfo *ci, bool md5sum); }; /** * Check whether there's a base set matching some information. * @param ci The content info to compare it to. * @param md5sum Should the MD5 checksum be tested as well? * @param s The list with sets. * @return The filename of the first file of the base set, or \c NULL if there is no match. */ template const char *TryGetBaseSetFile(const ContentInfo *ci, bool md5sum, const Tbase_set *s); /** Types of graphics in the base graphics set */ enum GraphicsFileType { GFT_BASE, ///< Base sprites for all climates GFT_LOGOS, ///< Logos, landscape icons and original terrain generator sprites GFT_ARCTIC, ///< Landscape replacement sprites for arctic GFT_TROPICAL, ///< Landscape replacement sprites for tropical GFT_TOYLAND, ///< Landscape replacement sprites for toyland GFT_EXTRA, ///< Extra sprites that were not part of the original sprites MAX_GFT, ///< We are looking for this amount of GRFs }; /** Blitter type for base graphics sets. */ enum BlitterType { BLT_8BPP, ///< Base set has 8 bpp sprites only. BLT_32BPP, ///< Base set has both 8 bpp and 32 bpp sprites. }; /** All data of a graphics set. */ struct GraphicsSet : BaseSet { PaletteType palette; ///< Palette of this graphics set BlitterType blitter; ///< Blitter of this graphics set bool FillSetDetails(struct IniFile *ini, const char *path, const char *full_filename); static MD5File::ChecksumResult CheckMD5(const MD5File *file, Subdirectory subdir); }; /** All data/functions related with replacing the base graphics. */ class BaseGraphics : public BaseMedia { public: }; /** All data of a sounds set. */ struct SoundsSet : BaseSet { }; /** All data/functions related with replacing the base sounds */ class BaseSounds : public BaseMedia { public: }; /** Maximum number of songs in the 'class' playlists. */ static const uint NUM_SONGS_CLASS = 10; /** Number of classes for songs */ static const uint NUM_SONG_CLASSES = 3; /** Maximum number of songs in the full playlist; theme song + the classes */ static const uint NUM_SONGS_AVAILABLE = 1 + NUM_SONG_CLASSES * NUM_SONGS_CLASS; /** Maximum number of songs in the (custom) playlist */ static const uint NUM_SONGS_PLAYLIST = 32; /** All data of a music set. */ struct MusicSet : BaseSet { /** The name of the different songs. */ char song_name[NUM_SONGS_AVAILABLE][32]; byte track_nr[NUM_SONGS_AVAILABLE]; byte num_available; bool FillSetDetails(struct IniFile *ini, const char *path, const char *full_filename); }; /** All data/functions related with replacing the base music */ class BaseMusic : public BaseMedia { public: }; #endif /* BASE_MEDIA_BASE_H */ openttd-1.3.3/src/gfxinit.cpp0000644000000000000000000003214612246102611014635 0ustar rootroot/* $Id: gfxinit.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gfxinit.cpp Initializing of the (GRF) graphics. */ #include "stdafx.h" #include "fios.h" #include "newgrf.h" #include "3rdparty/md5/md5.h" #include "fontcache.h" #include "gfx_func.h" #include "blitter/factory.hpp" #include "video/video_driver.hpp" /* The type of set we're replacing */ #define SET_TYPE "graphics" #include "base_media_func.h" #include "table/sprites.h" /** Whether the given NewGRFs must get a palette remap from windows to DOS or not. */ bool _palette_remap_grf[MAX_FILE_SLOTS]; #include "table/landscape_sprite.h" /** Offsets for loading the different "replacement" sprites in the files. */ static const SpriteID * const _landscape_spriteindexes[] = { _landscape_spriteindexes_arctic, _landscape_spriteindexes_tropic, _landscape_spriteindexes_toyland, }; /** * Load an old fashioned GRF file. * @param filename The name of the file to open. * @param load_index The offset of the first sprite. * @param file_index The Fio offset to load the file in. * @return The number of loaded sprites. */ static uint LoadGrfFile(const char *filename, uint load_index, int file_index) { uint load_index_org = load_index; uint sprite_id = 0; FioOpenFile(file_index, filename, BASESET_DIR); DEBUG(sprite, 2, "Reading grf-file '%s'", filename); byte container_ver = GetGRFContainerVersion(); if (container_ver == 0) usererror("Base grf '%s' is corrupt", filename); ReadGRFSpriteOffsets(container_ver); if (container_ver >= 2) { /* Read compression. */ byte compression = FioReadByte(); if (compression != 0) usererror("Unsupported compression format"); } while (LoadNextSprite(load_index, file_index, sprite_id, container_ver)) { load_index++; sprite_id++; if (load_index >= MAX_SPRITES) { usererror("Too many sprites. Recompile with higher MAX_SPRITES value or remove some custom GRF files."); } } DEBUG(sprite, 2, "Currently %i sprites are loaded", load_index); return load_index - load_index_org; } /** * Load an old fashioned GRF file to replace already loaded sprites. * @param filename The name of the file to open. * @param index_tlb The offsets of each of the sprites. * @param file_index The Fio offset to load the file in. * @return The number of loaded sprites. */ static void LoadGrfFileIndexed(const char *filename, const SpriteID *index_tbl, int file_index) { uint start; uint sprite_id = 0; FioOpenFile(file_index, filename, BASESET_DIR); DEBUG(sprite, 2, "Reading indexed grf-file '%s'", filename); byte container_ver = GetGRFContainerVersion(); if (container_ver == 0) usererror("Base grf '%s' is corrupt", filename); ReadGRFSpriteOffsets(container_ver); if (container_ver >= 2) { /* Read compression. */ byte compression = FioReadByte(); if (compression != 0) usererror("Unsupported compression format"); } while ((start = *index_tbl++) != END) { uint end = *index_tbl++; do { bool b = LoadNextSprite(start, file_index, sprite_id, container_ver); assert(b); sprite_id++; } while (++start <= end); } } /** * Checks whether the MD5 checksums of the files are correct. * * @note Also checks sample.cat and other required non-NewGRF GRFs for corruption. */ void CheckExternalFiles() { if (BaseGraphics::GetUsedSet() == NULL || BaseSounds::GetUsedSet() == NULL) return; const GraphicsSet *used_set = BaseGraphics::GetUsedSet(); DEBUG(grf, 1, "Using the %s base graphics set", used_set->name); static const size_t ERROR_MESSAGE_LENGTH = 256; static const size_t MISSING_FILE_MESSAGE_LENGTH = 128; /* Allocate for a message for each missing file and for one error * message per set. */ char error_msg[MISSING_FILE_MESSAGE_LENGTH * (GraphicsSet::NUM_FILES + SoundsSet::NUM_FILES) + 2 * ERROR_MESSAGE_LENGTH]; error_msg[0] = '\0'; char *add_pos = error_msg; const char *last = lastof(error_msg); if (used_set->GetNumInvalid() != 0) { /* Not all files were loaded successfully, see which ones */ add_pos += seprintf(add_pos, last, "Trying to load graphics set '%s', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of readme.txt.\n\nThe following files are corrupted or missing:\n", used_set->name); for (uint i = 0; i < GraphicsSet::NUM_FILES; i++) { MD5File::ChecksumResult res = GraphicsSet::CheckMD5(&used_set->files[i], BASESET_DIR); if (res != MD5File::CR_MATCH) add_pos += seprintf(add_pos, last, "\t%s is %s (%s)\n", used_set->files[i].filename, res == MD5File::CR_MISMATCH ? "corrupt" : "missing", used_set->files[i].missing_warning); } add_pos += seprintf(add_pos, last, "\n"); } const SoundsSet *sounds_set = BaseSounds::GetUsedSet(); if (sounds_set->GetNumInvalid() != 0) { add_pos += seprintf(add_pos, last, "Trying to load sound set '%s', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of readme.txt.\n\nThe following files are corrupted or missing:\n", sounds_set->name); assert_compile(SoundsSet::NUM_FILES == 1); /* No need to loop each file, as long as there is only a single * sound file. */ add_pos += seprintf(add_pos, last, "\t%s is %s (%s)\n", sounds_set->files->filename, SoundsSet::CheckMD5(sounds_set->files, BASESET_DIR) == MD5File::CR_MISMATCH ? "corrupt" : "missing", sounds_set->files->missing_warning); } if (add_pos != error_msg) ShowInfoF("%s", error_msg); } /** Actually load the sprite tables. */ static void LoadSpriteTables() { memset(_palette_remap_grf, 0, sizeof(_palette_remap_grf)); uint i = FIRST_GRF_SLOT; const GraphicsSet *used_set = BaseGraphics::GetUsedSet(); _palette_remap_grf[i] = (PAL_DOS != used_set->palette); LoadGrfFile(used_set->files[GFT_BASE].filename, 0, i++); /* * The second basic file always starts at the given location and does * contain a different amount of sprites depending on the "type"; DOS * has a few sprites less. However, we do not care about those missing * sprites as they are not shown anyway (logos in intro game). */ _palette_remap_grf[i] = (PAL_DOS != used_set->palette); LoadGrfFile(used_set->files[GFT_LOGOS].filename, 4793, i++); /* * Load additional sprites for climates other than temperate. * This overwrites some of the temperate sprites, such as foundations * and the ground sprites. */ if (_settings_game.game_creation.landscape != LT_TEMPERATE) { _palette_remap_grf[i] = (PAL_DOS != used_set->palette); LoadGrfFileIndexed( used_set->files[GFT_ARCTIC + _settings_game.game_creation.landscape - 1].filename, _landscape_spriteindexes[_settings_game.game_creation.landscape - 1], i++ ); } /* Initialize the unicode to sprite mapping table */ InitializeUnicodeGlyphMap(); /* * Load the base NewGRF with OTTD required graphics as first NewGRF. * However, we do not want it to show up in the list of used NewGRFs, * so we have to manually add it, and then remove it later. */ GRFConfig *top = _grfconfig; GRFConfig *master = new GRFConfig(used_set->files[GFT_EXTRA].filename); /* We know the palette of the base set, so if the base NewGRF is not * setting one, use the palette of the base set and not the global * one which might be the wrong palette for this base NewGRF. * The value set here might be overridden via action14 later. */ switch (used_set->palette) { case PAL_DOS: master->palette |= GRFP_GRF_DOS; break; case PAL_WINDOWS: master->palette |= GRFP_GRF_WINDOWS; break; default: break; } FillGRFDetails(master, false, BASESET_DIR); ClrBit(master->flags, GCF_INIT_ONLY); master->next = top; _grfconfig = master; LoadNewGRF(SPR_NEWGRFS_BASE, i); /* Free and remove the top element. */ delete master; _grfconfig = top; } /** * Check blitter needed by NewGRF config and switch if needed. */ static void SwitchNewGRFBlitter() { /* Get blitter of base set. */ bool is_32bpp = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP; /* Get combined blitter mode of all NewGRFs. */ for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) { if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_INIT_ONLY)) continue; if (c->palette & GRFP_BLT_32BPP) is_32bpp = true; } /* A GRF would like a 32 bpp blitter, switch blitter if needed. Never switch if the blitter was specified by the user. */ if (_blitter_autodetected && is_32bpp && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 0 && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() < 16) { const char *cur_blitter = BlitterFactoryBase::GetCurrentBlitter()->GetName(); if (BlitterFactoryBase::SelectBlitter("32bpp-anim") != NULL) { if (!_video_driver->AfterBlitterChange()) { /* Failed to switch blitter, let's hope we can return to the old one. */ if (BlitterFactoryBase::SelectBlitter(cur_blitter) == NULL || !_video_driver->AfterBlitterChange()) usererror("Failed to reinitialize video driver for 32 bpp blitter. Specify a fixed blitter in the config"); } } } } /** Initialise and load all the sprites. */ void GfxLoadSprites() { DEBUG(sprite, 2, "Loading sprite set %d", _settings_game.game_creation.landscape); SwitchNewGRFBlitter(); ClearFontCache(); GfxInitSpriteMem(); LoadSpriteTables(); GfxInitPalettes(); UpdateCursorSize(); } bool GraphicsSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename) { bool ret = this->BaseSet::FillSetDetails(ini, path, full_filename, false); if (ret) { IniGroup *metadata = ini->GetGroup("metadata"); IniItem *item; fetch_metadata("palette"); this->palette = (*item->value == 'D' || *item->value == 'd') ? PAL_DOS : PAL_WINDOWS; /* Get optional blitter information. */ item = metadata->GetItem("blitter", false); this->blitter = (item != NULL && *item->value == '3') ? BLT_32BPP : BLT_8BPP; } return ret; } /** * Calculate and check the MD5 hash of the supplied GRF. * @param file The file get the hash of. * @param subdir The sub directory to get the files from. * @return * - #CR_MATCH if the MD5 hash matches * - #CR_MISMATCH if the MD5 does not match * - #CR_NO_FILE if the file misses */ /* static */ MD5File::ChecksumResult GraphicsSet::CheckMD5(const MD5File *file, Subdirectory subdir) { size_t size = 0; FILE *f = FioFOpenFile(file->filename, "rb", subdir, &size); if (f == NULL) return MD5File::CR_NO_FILE; size_t max = GRFGetSizeOfDataSection(f); FioFCloseFile(f); return file->CheckMD5(subdir, max); } /** * Calculate and check the MD5 hash of the supplied filename. * @param subdir The sub directory to get the files from * @param max_size Only calculate the hash for this many bytes from the file start. * @return * - #CR_MATCH if the MD5 hash matches * - #CR_MISMATCH if the MD5 does not match * - #CR_NO_FILE if the file misses */ MD5File::ChecksumResult MD5File::CheckMD5(Subdirectory subdir, size_t max_size) const { size_t size; FILE *f = FioFOpenFile(this->filename, "rb", subdir, &size); if (f == NULL) return CR_NO_FILE; size = min(size, max_size); Md5 checksum; uint8 buffer[1024]; uint8 digest[16]; size_t len; while ((len = fread(buffer, 1, (size > sizeof(buffer)) ? sizeof(buffer) : size, f)) != 0 && size != 0) { size -= len; checksum.Append(buffer, len); } FioFCloseFile(f); checksum.Finish(digest); return memcmp(this->hash, digest, sizeof(this->hash)) == 0 ? CR_MATCH : CR_MISMATCH; } /** Names corresponding to the GraphicsFileType */ static const char * const _graphics_file_names[] = { "base", "logos", "arctic", "tropical", "toyland", "extra" }; /** Implementation */ template /* static */ const char * const *BaseSet::file_names = _graphics_file_names; template /* static */ bool BaseMedia::DetermineBestSet() { if (BaseMedia::used_set != NULL) return true; const Tbase_set *best = NULL; for (const Tbase_set *c = BaseMedia::available_sets; c != NULL; c = c->next) { /* Skip unusable sets */ if (c->GetNumMissing() != 0) continue; if (best == NULL || (best->fallback && !c->fallback) || best->valid_files < c->valid_files || (best->valid_files == c->valid_files && ( (best->shortname == c->shortname && best->version < c->version) || (best->palette != PAL_DOS && c->palette == PAL_DOS)))) { best = c; } } BaseMedia::used_set = best; return BaseMedia::used_set != NULL; } template /* static */ const char *BaseMedia::GetExtension() { return ".obg"; // OpenTTD Base Graphics } INSTANTIATE_BASE_MEDIA_METHODS(BaseMedia, GraphicsSet) openttd-1.3.3/src/order_cmd.cpp0000644000000000000000000020743712246102611015132 0ustar rootroot/* $Id: order_cmd.cpp 25582 2013-07-10 19:38:53Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_cmd.cpp Handling of orders. */ #include "stdafx.h" #include "debug.h" #include "cmd_helper.h" #include "command_func.h" #include "company_func.h" #include "news_func.h" #include "strings_func.h" #include "timetable.h" #include "vehicle_func.h" #include "depot_base.h" #include "core/pool_func.hpp" #include "aircraft.h" #include "roadveh.h" #include "station_base.h" #include "waypoint_base.h" #include "company_base.h" #include "order_backup.h" #include "table/strings.h" /* DestinationID must be at least as large as every these below, because it can * be any of them */ assert_compile(sizeof(DestinationID) >= sizeof(DepotID)); assert_compile(sizeof(DestinationID) >= sizeof(StationID)); OrderPool _order_pool("Order"); INSTANTIATE_POOL_METHODS(Order) OrderListPool _orderlist_pool("OrderList"); INSTANTIATE_POOL_METHODS(OrderList) /** Clean everything up. */ Order::~Order() { if (CleaningPool()) return; /* We can visit oil rigs and buoys that are not our own. They will be shown in * the list of stations. So, we need to invalidate that window if needed. */ if (this->IsType(OT_GOTO_STATION) || this->IsType(OT_GOTO_WAYPOINT)) { BaseStation *bs = BaseStation::GetIfValid(this->GetDestination()); if (bs != NULL && bs->owner == OWNER_NONE) InvalidateWindowClassesData(WC_STATION_LIST, 0); } } /** * 'Free' the order * @note ONLY use on "current_order" vehicle orders! */ void Order::Free() { this->type = OT_NOTHING; this->flags = 0; this->dest = 0; this->next = NULL; } /** * Makes this order a Go To Station order. * @param destination the station to go to. */ void Order::MakeGoToStation(StationID destination) { this->type = OT_GOTO_STATION; this->flags = 0; this->dest = destination; } /** * Makes this order a Go To Depot order. * @param destination the depot to go to. * @param order is this order a 'default' order, or an overridden vehicle order? * @param non_stop_type how to get to the depot? * @param action what to do in the depot? * @param cargo the cargo type to change to. * @param subtype the subtype to change to. */ void Order::MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderNonStopFlags non_stop_type, OrderDepotActionFlags action, CargoID cargo, byte subtype) { this->type = OT_GOTO_DEPOT; this->SetDepotOrderType(order); this->SetDepotActionType(action); this->SetNonStopType(non_stop_type); this->dest = destination; this->SetRefit(cargo, subtype); } /** * Makes this order a Go To Waypoint order. * @param destination the waypoint to go to. */ void Order::MakeGoToWaypoint(StationID destination) { this->type = OT_GOTO_WAYPOINT; this->flags = 0; this->dest = destination; } /** * Makes this order a Loading order. * @param ordered is this an ordered stop? */ void Order::MakeLoading(bool ordered) { this->type = OT_LOADING; if (!ordered) this->flags = 0; } /** * Makes this order a Leave Station order. */ void Order::MakeLeaveStation() { this->type = OT_LEAVESTATION; this->flags = 0; } /** * Makes this order a Dummy order. */ void Order::MakeDummy() { this->type = OT_DUMMY; this->flags = 0; } /** * Makes this order an conditional order. * @param order the order to jump to. */ void Order::MakeConditional(VehicleOrderID order) { this->type = OT_CONDITIONAL; this->flags = order; this->dest = 0; } /** * Makes this order an implicit order. * @param destination the station to go to. */ void Order::MakeImplicit(StationID destination) { this->type = OT_IMPLICIT; this->dest = destination; } /** * Make this depot/station order also a refit order. * @param cargo the cargo type to change to. * @param subtype the subtype to change to. * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION). */ void Order::SetRefit(CargoID cargo, byte subtype) { this->refit_cargo = cargo; this->refit_subtype = subtype; } /** * Does this order have the same type, flags and destination? * @param other the second order to compare to. * @return true if the type, flags and destination match. */ bool Order::Equals(const Order &other) const { /* In case of go to nearest depot orders we need "only" compare the flags * with the other and not the nearest depot order bit or the actual * destination because those get clear/filled in during the order * evaluation. If we do not do this the order will continuously be seen as * a different order and it will try to find a "nearest depot" every tick. */ if ((this->IsType(OT_GOTO_DEPOT) && this->type == other.type) && ((this->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0 || (other.GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0)) { return this->GetDepotOrderType() == other.GetDepotOrderType() && (this->GetDepotActionType() & ~ODATFB_NEAREST_DEPOT) == (other.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT); } return this->type == other.type && this->flags == other.flags && this->dest == other.dest; } /** * Pack this order into a 32 bits integer, or actually only * the type, flags and destination. * @return the packed representation. * @note unpacking is done in the constructor. */ uint32 Order::Pack() const { return this->dest << 16 | this->flags << 8 | this->type; } /** * Pack this order into a 16 bits integer as close to the TTD * representation as possible. * @return the TTD-like packed representation. */ uint16 Order::MapOldOrder() const { uint16 order = this->GetType(); switch (this->type) { case OT_GOTO_STATION: if (this->GetUnloadType() & OUFB_UNLOAD) SetBit(order, 5); if (this->GetLoadType() & OLFB_FULL_LOAD) SetBit(order, 6); if (this->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS) SetBit(order, 7); order |= GB(this->GetDestination(), 0, 8) << 8; break; case OT_GOTO_DEPOT: if (!(this->GetDepotOrderType() & ODTFB_PART_OF_ORDERS)) SetBit(order, 6); SetBit(order, 7); order |= GB(this->GetDestination(), 0, 8) << 8; break; case OT_LOADING: if (this->GetLoadType() & OLFB_FULL_LOAD) SetBit(order, 6); break; } return order; } /** * Create an order based on a packed representation of that order. * @param packed the packed representation. */ Order::Order(uint32 packed) { this->type = (OrderType)GB(packed, 0, 8); this->flags = GB(packed, 8, 8); this->dest = GB(packed, 16, 16); this->next = NULL; this->refit_cargo = CT_NO_REFIT; this->refit_subtype = 0; this->wait_time = 0; this->travel_time = 0; this->max_speed = UINT16_MAX; } /** * * Updates the widgets of a vehicle which contains the order-data * */ void InvalidateVehicleOrder(const Vehicle *v, int data) { SetWindowDirty(WC_VEHICLE_VIEW, v->index); if (data != 0) { /* Calls SetDirty() too */ InvalidateWindowData(WC_VEHICLE_ORDERS, v->index, data); InvalidateWindowData(WC_VEHICLE_TIMETABLE, v->index, data); return; } SetWindowDirty(WC_VEHICLE_ORDERS, v->index); SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index); } /** * * Assign data to an order (from another order) * This function makes sure that the index is maintained correctly * @param other the data to copy (except next pointer). * */ void Order::AssignOrder(const Order &other) { this->type = other.type; this->flags = other.flags; this->dest = other.dest; this->refit_cargo = other.refit_cargo; this->refit_subtype = other.refit_subtype; this->wait_time = other.wait_time; this->travel_time = other.travel_time; this->max_speed = other.max_speed; } /** * Recomputes everything. * @param chain first order in the chain * @param v one of vehicle that is using this orderlist */ void OrderList::Initialize(Order *chain, Vehicle *v) { this->first = chain; this->first_shared = v; this->num_orders = 0; this->num_manual_orders = 0; this->num_vehicles = 1; this->timetable_duration = 0; for (Order *o = this->first; o != NULL; o = o->next) { ++this->num_orders; if (!o->IsType(OT_IMPLICIT)) ++this->num_manual_orders; this->timetable_duration += o->wait_time + o->travel_time; } for (Vehicle *u = this->first_shared->PreviousShared(); u != NULL; u = u->PreviousShared()) { ++this->num_vehicles; this->first_shared = u; } for (const Vehicle *u = v->NextShared(); u != NULL; u = u->NextShared()) ++this->num_vehicles; } /** * Free a complete order chain. * @param keep_orderlist If this is true only delete the orders, otherwise also delete the OrderList. * @note do not use on "current_order" vehicle orders! */ void OrderList::FreeChain(bool keep_orderlist) { Order *next; for (Order *o = this->first; o != NULL; o = next) { next = o->next; delete o; } if (keep_orderlist) { this->first = NULL; this->num_orders = 0; this->num_manual_orders = 0; this->timetable_duration = 0; } else { delete this; } } /** * Get a certain order of the order chain. * @param index zero-based index of the order within the chain. * @return the order at position index. */ Order *OrderList::GetOrderAt(int index) const { if (index < 0) return NULL; Order *order = this->first; while (order != NULL && index-- > 0) { order = order->next; } return order; } /** * Insert a new order into the order chain. * @param new_order is the order to insert into the chain. * @param index is the position where the order is supposed to be inserted. */ void OrderList::InsertOrderAt(Order *new_order, int index) { if (this->first == NULL) { this->first = new_order; } else { if (index == 0) { /* Insert as first or only order */ new_order->next = this->first; this->first = new_order; } else if (index >= this->num_orders) { /* index is after the last order, add it to the end */ this->GetLastOrder()->next = new_order; } else { /* Put the new order in between */ Order *order = this->GetOrderAt(index - 1); new_order->next = order->next; order->next = new_order; } } ++this->num_orders; if (!new_order->IsType(OT_IMPLICIT)) ++this->num_manual_orders; this->timetable_duration += new_order->wait_time + new_order->travel_time; /* We can visit oil rigs and buoys that are not our own. They will be shown in * the list of stations. So, we need to invalidate that window if needed. */ if (new_order->IsType(OT_GOTO_STATION) || new_order->IsType(OT_GOTO_WAYPOINT)) { BaseStation *bs = BaseStation::Get(new_order->GetDestination()); if (bs->owner == OWNER_NONE) InvalidateWindowClassesData(WC_STATION_LIST, 0); } } /** * Remove an order from the order list and delete it. * @param index is the position of the order which is to be deleted. */ void OrderList::DeleteOrderAt(int index) { if (index >= this->num_orders) return; Order *to_remove; if (index == 0) { to_remove = this->first; this->first = to_remove->next; } else { Order *prev = GetOrderAt(index - 1); to_remove = prev->next; prev->next = to_remove->next; } --this->num_orders; if (!to_remove->IsType(OT_IMPLICIT)) --this->num_manual_orders; this->timetable_duration -= (to_remove->wait_time + to_remove->travel_time); delete to_remove; } /** * Move an order to another position within the order list. * @param from is the zero-based position of the order to move. * @param to is the zero-based position where the order is moved to. */ void OrderList::MoveOrder(int from, int to) { if (from >= this->num_orders || to >= this->num_orders || from == to) return; Order *moving_one; /* Take the moving order out of the pointer-chain */ if (from == 0) { moving_one = this->first; this->first = moving_one->next; } else { Order *one_before = GetOrderAt(from - 1); moving_one = one_before->next; one_before->next = moving_one->next; } /* Insert the moving_order again in the pointer-chain */ if (to == 0) { moving_one->next = this->first; this->first = moving_one; } else { Order *one_before = GetOrderAt(to - 1); moving_one->next = one_before->next; one_before->next = moving_one; } } /** * Removes the vehicle from the shared order list. * @note This is supposed to be called when the vehicle is still in the chain * @param v vehicle to remove from the list */ void OrderList::RemoveVehicle(Vehicle *v) { --this->num_vehicles; if (v == this->first_shared) this->first_shared = v->NextShared(); } /** * Checks whether a vehicle is part of the shared vehicle chain. * @param v is the vehicle to search in the shared vehicle chain. */ bool OrderList::IsVehicleInSharedOrdersList(const Vehicle *v) const { for (const Vehicle *v_shared = this->first_shared; v_shared != NULL; v_shared = v_shared->NextShared()) { if (v_shared == v) return true; } return false; } /** * Gets the position of the given vehicle within the shared order vehicle list. * @param v is the vehicle of which to get the position * @return position of v within the shared vehicle chain. */ int OrderList::GetPositionInSharedOrderList(const Vehicle *v) const { int count = 0; for (const Vehicle *v_shared = v->PreviousShared(); v_shared != NULL; v_shared = v_shared->PreviousShared()) count++; return count; } /** * Checks whether all orders of the list have a filled timetable. * @return whether all orders have a filled timetable. */ bool OrderList::IsCompleteTimetable() const { for (Order *o = this->first; o != NULL; o = o->next) { /* Implicit orders are, by definition, not timetabled. */ if (o->IsType(OT_IMPLICIT)) continue; if (!o->IsCompletelyTimetabled()) return false; } return true; } /** * Checks for internal consistency of order list. Triggers assertion if something is wrong. */ void OrderList::DebugCheckSanity() const { VehicleOrderID check_num_orders = 0; VehicleOrderID check_num_manual_orders = 0; uint check_num_vehicles = 0; Ticks check_timetable_duration = 0; DEBUG(misc, 6, "Checking OrderList %hu for sanity...", this->index); for (const Order *o = this->first; o != NULL; o = o->next) { ++check_num_orders; if (!o->IsType(OT_IMPLICIT)) ++check_num_manual_orders; check_timetable_duration += o->wait_time + o->travel_time; } assert(this->num_orders == check_num_orders); assert(this->num_manual_orders == check_num_manual_orders); assert(this->timetable_duration == check_timetable_duration); for (const Vehicle *v = this->first_shared; v != NULL; v = v->NextShared()) { ++check_num_vehicles; assert(v->orders.list == this); } assert(this->num_vehicles == check_num_vehicles); DEBUG(misc, 6, "... detected %u orders (%u manual), %u vehicles, %i ticks", (uint)this->num_orders, (uint)this->num_manual_orders, this->num_vehicles, this->timetable_duration); } /** * Checks whether the order goes to a station or not, i.e. whether the * destination is a station * @param v the vehicle to check for * @param o the order to check * @return true if the destination is a station */ static inline bool OrderGoesToStation(const Vehicle *v, const Order *o) { return o->IsType(OT_GOTO_STATION) || (v->type == VEH_AIRCRAFT && o->IsType(OT_GOTO_DEPOT) && !(o->GetDepotActionType() & ODATFB_NEAREST_DEPOT)); } /** * Delete all news items regarding defective orders about a vehicle * This could kill still valid warnings (for example about void order when just * another order gets added), but assume the company will notice the problems, * when (s)he's changing the orders. */ static void DeleteOrderWarnings(const Vehicle *v) { DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS); DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_VOID_ORDER); DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY); DeleteVehicleNews(v->index, STR_NEWS_VEHICLE_HAS_INVALID_ENTRY); } /** * Returns a tile somewhat representing the order destination (not suitable for pathfinding). * @param v The vehicle to get the location for. * @param airport Get the airport tile and not the station location for aircraft. * @return destination of order, or INVALID_TILE if none. */ TileIndex Order::GetLocation(const Vehicle *v, bool airport) const { switch (this->GetType()) { case OT_GOTO_WAYPOINT: case OT_GOTO_STATION: case OT_IMPLICIT: if (airport && v->type == VEH_AIRCRAFT) return Station::Get(this->GetDestination())->airport.tile; return BaseStation::Get(this->GetDestination())->xy; case OT_GOTO_DEPOT: if ((this->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) return INVALID_TILE; return (v->type == VEH_AIRCRAFT) ? Station::Get(this->GetDestination())->xy : Depot::Get(this->GetDestination())->xy; default: return INVALID_TILE; } } /** * Get the distance between two orders of a vehicle. Conditional orders are resolved * and the bigger distance of the two order branches is returned. * @param prev Origin order. * @param cur Destination order. * @param v The vehicle to get the distance for. * @param conditional_depth Internal param for resolving conditional orders. * @return Maximum distance between the two orders. */ uint GetOrderDistance(const Order *prev, const Order *cur, const Vehicle *v, int conditional_depth) { if (cur->IsType(OT_CONDITIONAL)) { if (conditional_depth > v->GetNumOrders()) return 0; conditional_depth++; int dist1 = GetOrderDistance(prev, v->GetOrder(cur->GetConditionSkipToOrder()), v, conditional_depth); int dist2 = GetOrderDistance(prev, cur->next == NULL ? v->orders.list->GetFirstOrder() : cur->next, v, conditional_depth); return max(dist1, dist2); } TileIndex prev_tile = prev->GetLocation(v, true); TileIndex cur_tile = cur->GetLocation(v, true); if (prev_tile == INVALID_TILE || cur_tile == INVALID_TILE) return 0; return v->type == VEH_AIRCRAFT ? DistanceSquare(prev_tile, cur_tile) : DistanceManhattan(prev_tile, cur_tile); } /** * Add an order to the orderlist of a vehicle. * @param tile unused * @param flags operation to perform * @param p1 various bitstuffed elements * - p1 = (bit 0 - 19) - ID of the vehicle * - p1 = (bit 24 - 31) - the selected order (if any). If the last order is given, * the order will be inserted before that one * the maximum vehicle order id is 254. * @param p2 packed order to insert * @param text unused * @return the cost of this operation or an error */ CommandCost CmdInsertOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh = GB(p1, 0, 20); VehicleOrderID sel_ord = GB(p1, 20, 8); Order new_order(p2); Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; /* Check if the inserted order is to the correct destination (owner, type), * and has the correct flags if any */ switch (new_order.GetType()) { case OT_GOTO_STATION: { const Station *st = Station::GetIfValid(new_order.GetDestination()); if (st == NULL) return CMD_ERROR; if (st->owner != OWNER_NONE) { CommandCost ret = CheckOwnership(st->owner); if (ret.Failed()) return ret; } if (!CanVehicleUseStation(v, st)) return_cmd_error(STR_ERROR_CAN_T_ADD_ORDER); for (Vehicle *u = v->FirstShared(); u != NULL; u = u->NextShared()) { if (!CanVehicleUseStation(u, st)) return_cmd_error(STR_ERROR_CAN_T_ADD_ORDER_SHARED); } /* Non stop only allowed for ground vehicles. */ if (new_order.GetNonStopType() != ONSF_STOP_EVERYWHERE && !v->IsGroundVehicle()) return CMD_ERROR; /* Filter invalid load/unload types. */ switch (new_order.GetLoadType()) { case OLF_LOAD_IF_POSSIBLE: case OLFB_FULL_LOAD: case OLF_FULL_LOAD_ANY: case OLFB_NO_LOAD: break; default: return CMD_ERROR; } switch (new_order.GetUnloadType()) { case OUF_UNLOAD_IF_POSSIBLE: case OUFB_UNLOAD: case OUFB_TRANSFER: case OUFB_NO_UNLOAD: break; default: return CMD_ERROR; } /* Filter invalid stop locations */ switch (new_order.GetStopLocation()) { case OSL_PLATFORM_NEAR_END: case OSL_PLATFORM_MIDDLE: if (v->type != VEH_TRAIN) return CMD_ERROR; /* FALL THROUGH */ case OSL_PLATFORM_FAR_END: break; default: return CMD_ERROR; } break; } case OT_GOTO_DEPOT: { if ((new_order.GetDepotActionType() & ODATFB_NEAREST_DEPOT) == 0) { if (v->type == VEH_AIRCRAFT) { const Station *st = Station::GetIfValid(new_order.GetDestination()); if (st == NULL) return CMD_ERROR; CommandCost ret = CheckOwnership(st->owner); if (ret.Failed()) return ret; if (!CanVehicleUseStation(v, st) || !st->airport.HasHangar()) { return CMD_ERROR; } } else { const Depot *dp = Depot::GetIfValid(new_order.GetDestination()); if (dp == NULL) return CMD_ERROR; CommandCost ret = CheckOwnership(GetTileOwner(dp->xy)); if (ret.Failed()) return ret; switch (v->type) { case VEH_TRAIN: if (!IsRailDepotTile(dp->xy)) return CMD_ERROR; break; case VEH_ROAD: if (!IsRoadDepotTile(dp->xy)) return CMD_ERROR; break; case VEH_SHIP: if (!IsShipDepotTile(dp->xy)) return CMD_ERROR; break; default: return CMD_ERROR; } } } if (new_order.GetNonStopType() != ONSF_STOP_EVERYWHERE && !v->IsGroundVehicle()) return CMD_ERROR; if (new_order.GetDepotOrderType() & ~(ODTFB_PART_OF_ORDERS | ((new_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) != 0 ? ODTFB_SERVICE : 0))) return CMD_ERROR; if (new_order.GetDepotActionType() & ~(ODATFB_HALT | ODATFB_NEAREST_DEPOT)) return CMD_ERROR; if ((new_order.GetDepotOrderType() & ODTFB_SERVICE) && (new_order.GetDepotActionType() & ODATFB_HALT)) return CMD_ERROR; break; } case OT_GOTO_WAYPOINT: { const Waypoint *wp = Waypoint::GetIfValid(new_order.GetDestination()); if (wp == NULL) return CMD_ERROR; switch (v->type) { default: return CMD_ERROR; case VEH_TRAIN: { if (!(wp->facilities & FACIL_TRAIN)) return_cmd_error(STR_ERROR_CAN_T_ADD_ORDER); CommandCost ret = CheckOwnership(wp->owner); if (ret.Failed()) return ret; break; } case VEH_SHIP: if (!(wp->facilities & FACIL_DOCK)) return_cmd_error(STR_ERROR_CAN_T_ADD_ORDER); if (wp->owner != OWNER_NONE) { CommandCost ret = CheckOwnership(wp->owner); if (ret.Failed()) return ret; } break; } /* Order flags can be any of the following for waypoints: * [non-stop] * non-stop orders (if any) are only valid for trains */ if (new_order.GetNonStopType() != ONSF_STOP_EVERYWHERE && v->type != VEH_TRAIN) return CMD_ERROR; break; } case OT_CONDITIONAL: { VehicleOrderID skip_to = new_order.GetConditionSkipToOrder(); if (skip_to != 0 && skip_to >= v->GetNumOrders()) return CMD_ERROR; // Always allow jumping to the first (even when there is no order). if (new_order.GetConditionVariable() >= OCV_END) return CMD_ERROR; OrderConditionComparator occ = new_order.GetConditionComparator(); if (occ >= OCC_END) return CMD_ERROR; switch (new_order.GetConditionVariable()) { case OCV_REQUIRES_SERVICE: if (occ != OCC_IS_TRUE && occ != OCC_IS_FALSE) return CMD_ERROR; break; case OCV_UNCONDITIONALLY: if (occ != OCC_EQUALS) return CMD_ERROR; if (new_order.GetConditionValue() != 0) return CMD_ERROR; break; case OCV_LOAD_PERCENTAGE: case OCV_RELIABILITY: if (new_order.GetConditionValue() > 100) return CMD_ERROR; /* FALL THROUGH */ default: if (occ == OCC_IS_TRUE || occ == OCC_IS_FALSE) return CMD_ERROR; break; } break; } default: return CMD_ERROR; } if (sel_ord > v->GetNumOrders()) return CMD_ERROR; if (v->GetNumOrders() >= MAX_VEH_ORDER_ID) return_cmd_error(STR_ERROR_TOO_MANY_ORDERS); if (!Order::CanAllocateItem()) return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS); if (v->orders.list == NULL && !OrderList::CanAllocateItem()) return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS); if (v->type == VEH_SHIP && _settings_game.pf.pathfinder_for_ships != VPF_NPF) { /* Make sure the new destination is not too far away from the previous */ const Order *prev = NULL; uint n = 0; /* Find the last goto station or depot order before the insert location. * If the order is to be inserted at the beginning of the order list this * finds the last order in the list. */ const Order *o; FOR_VEHICLE_ORDERS(v, o) { switch (o->GetType()) { case OT_GOTO_STATION: case OT_GOTO_DEPOT: case OT_GOTO_WAYPOINT: prev = o; break; default: break; } if (++n == sel_ord && prev != NULL) break; } if (prev != NULL) { uint dist; if (new_order.IsType(OT_CONDITIONAL)) { /* The order is not yet inserted, so we have to do the first iteration here. */ dist = GetOrderDistance(prev, v->GetOrder(new_order.GetConditionSkipToOrder()), v); } else { dist = GetOrderDistance(prev, &new_order, v); } if (dist >= 130) { return_cmd_error(STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION); } } } if (flags & DC_EXEC) { Order *new_o = new Order(); new_o->AssignOrder(new_order); InsertOrder(v, new_o, sel_ord); } return CommandCost(); } /** * Insert a new order but skip the validation. * @param v The vehicle to insert the order to. * @param new_o The new order. * @param sel_ord The position the order should be inserted at. */ void InsertOrder(Vehicle *v, Order *new_o, VehicleOrderID sel_ord) { /* Create new order and link in list */ if (v->orders.list == NULL) { v->orders.list = new OrderList(new_o, v); } else { v->orders.list->InsertOrderAt(new_o, sel_ord); } Vehicle *u = v->FirstShared(); DeleteOrderWarnings(u); for (; u != NULL; u = u->NextShared()) { assert(v->orders.list == u->orders.list); /* If there is added an order before the current one, we need * to update the selected order. We do not change implicit/real order indices though. * If the new order is between the current implicit order and real order, the implicit order will * later skip the inserted order. */ if (sel_ord <= u->cur_real_order_index) { uint cur = u->cur_real_order_index + 1; /* Check if we don't go out of bound */ if (cur < u->GetNumOrders()) { u->cur_real_order_index = cur; } } if (sel_ord == u->cur_implicit_order_index && u->IsGroundVehicle()) { /* We are inserting an order just before the current implicit order. * We do not know whether we will reach current implicit or the newly inserted order first. * So, disable creation of implicit orders until we are on track again. */ uint16 &gv_flags = u->GetGroundVehicleFlags(); SetBit(gv_flags, GVF_SUPPRESS_IMPLICIT_ORDERS); } if (sel_ord <= u->cur_implicit_order_index) { uint cur = u->cur_implicit_order_index + 1; /* Check if we don't go out of bound */ if (cur < u->GetNumOrders()) { u->cur_implicit_order_index = cur; } } /* Update any possible open window of the vehicle */ InvalidateVehicleOrder(u, INVALID_VEH_ORDER_ID | (sel_ord << 8)); } /* As we insert an order, the order to skip to will be 'wrong'. */ VehicleOrderID cur_order_id = 0; Order *order; FOR_VEHICLE_ORDERS(v, order) { if (order->IsType(OT_CONDITIONAL)) { VehicleOrderID order_id = order->GetConditionSkipToOrder(); if (order_id >= sel_ord) { order->SetConditionSkipToOrder(order_id + 1); } if (order_id == cur_order_id) { order->SetConditionSkipToOrder((order_id + 1) % v->GetNumOrders()); } } cur_order_id++; } /* Make sure to rebuild the whole list */ InvalidateWindowClassesData(GetWindowClassForVehicleType(v->type), 0); } /** * Declone an order-list * @param *dst delete the orders of this vehicle * @param flags execution flags */ static CommandCost DecloneOrder(Vehicle *dst, DoCommandFlag flags) { if (flags & DC_EXEC) { DeleteVehicleOrders(dst); InvalidateVehicleOrder(dst, VIWD_REMOVE_ALL_ORDERS); InvalidateWindowClassesData(GetWindowClassForVehicleType(dst->type), 0); } return CommandCost(); } /** * Delete an order from the orderlist of a vehicle. * @param tile unused * @param flags operation to perform * @param p1 the ID of the vehicle * @param p2 the order to delete (max 255) * @param text unused * @return the cost of this operation or an error */ CommandCost CmdDeleteOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh_id = GB(p1, 0, 20); VehicleOrderID sel_ord = GB(p2, 0, 8); Vehicle *v = Vehicle::GetIfValid(veh_id); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; /* If we did not select an order, we maybe want to de-clone the orders */ if (sel_ord >= v->GetNumOrders()) return DecloneOrder(v, flags); if (v->GetOrder(sel_ord) == NULL) return CMD_ERROR; if (flags & DC_EXEC) DeleteOrder(v, sel_ord); return CommandCost(); } /** * Cancel the current loading order of the vehicle as the order was deleted. * @param v the vehicle */ static void CancelLoadingDueToDeletedOrder(Vehicle *v) { assert(v->current_order.IsType(OT_LOADING)); /* NON-stop flag is misused to see if a train is in a station that is * on his order list or not */ v->current_order.SetNonStopType(ONSF_STOP_EVERYWHERE); /* When full loading, "cancel" that order so the vehicle doesn't * stay indefinitely at this station anymore. */ if (v->current_order.GetLoadType() & OLFB_FULL_LOAD) v->current_order.SetLoadType(OLF_LOAD_IF_POSSIBLE); } /** * Delete an order but skip the parameter validation. * @param v The vehicle to delete the order from. * @param sel_ord The id of the order to be deleted. */ void DeleteOrder(Vehicle *v, VehicleOrderID sel_ord) { v->orders.list->DeleteOrderAt(sel_ord); Vehicle *u = v->FirstShared(); DeleteOrderWarnings(u); for (; u != NULL; u = u->NextShared()) { assert(v->orders.list == u->orders.list); if (sel_ord == u->cur_real_order_index && u->current_order.IsType(OT_LOADING)) { CancelLoadingDueToDeletedOrder(u); } if (sel_ord < u->cur_real_order_index) { u->cur_real_order_index--; } else if (sel_ord == u->cur_real_order_index) { u->UpdateRealOrderIndex(); } if (sel_ord < u->cur_implicit_order_index) { u->cur_implicit_order_index--; } else if (sel_ord == u->cur_implicit_order_index) { /* Make sure the index is valid */ if (u->cur_implicit_order_index >= u->GetNumOrders()) u->cur_implicit_order_index = 0; /* Skip non-implicit orders for the implicit-order-index (e.g. if the current implicit order was deleted */ while (u->cur_implicit_order_index != u->cur_real_order_index && !u->GetOrder(u->cur_implicit_order_index)->IsType(OT_IMPLICIT)) { u->cur_implicit_order_index++; if (u->cur_implicit_order_index >= u->GetNumOrders()) u->cur_implicit_order_index = 0; } } /* Update any possible open window of the vehicle */ InvalidateVehicleOrder(u, sel_ord | (INVALID_VEH_ORDER_ID << 8)); } /* As we delete an order, the order to skip to will be 'wrong'. */ VehicleOrderID cur_order_id = 0; Order *order = NULL; FOR_VEHICLE_ORDERS(v, order) { if (order->IsType(OT_CONDITIONAL)) { VehicleOrderID order_id = order->GetConditionSkipToOrder(); if (order_id >= sel_ord) { order_id = max(order_id - 1, 0); } if (order_id == cur_order_id) { order_id = (order_id + 1) % v->GetNumOrders(); } order->SetConditionSkipToOrder(order_id); } cur_order_id++; } InvalidateWindowClassesData(GetWindowClassForVehicleType(v->type), 0); } /** * Goto order of order-list. * @param tile unused * @param flags operation to perform * @param p1 The ID of the vehicle which order is skipped * @param p2 the selected order to which we want to skip * @param text unused * @return the cost of this operation or an error */ CommandCost CmdSkipToOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh_id = GB(p1, 0, 20); VehicleOrderID sel_ord = GB(p2, 0, 8); Vehicle *v = Vehicle::GetIfValid(veh_id); if (v == NULL || !v->IsPrimaryVehicle() || sel_ord == v->cur_implicit_order_index || sel_ord >= v->GetNumOrders() || v->GetNumOrders() < 2) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; if (flags & DC_EXEC) { v->cur_implicit_order_index = v->cur_real_order_index = sel_ord; v->UpdateRealOrderIndex(); if (v->current_order.IsType(OT_LOADING)) v->LeaveStation(); InvalidateVehicleOrder(v, VIWD_MODIFY_ORDERS); } /* We have an aircraft/ship, they have a mini-schedule, so update them all */ if (v->type == VEH_AIRCRAFT) SetWindowClassesDirty(WC_AIRCRAFT_LIST); if (v->type == VEH_SHIP) SetWindowClassesDirty(WC_SHIPS_LIST); return CommandCost(); } /** * Move an order inside the orderlist * @param tile unused * @param flags operation to perform * @param p1 the ID of the vehicle * @param p2 order to move and target * bit 0-15 : the order to move * bit 16-31 : the target order * @param text unused * @return the cost of this operation or an error * @note The target order will move one place down in the orderlist * if you move the order upwards else it'll move it one place down */ CommandCost CmdMoveOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh = GB(p1, 0, 20); VehicleOrderID moving_order = GB(p2, 0, 16); VehicleOrderID target_order = GB(p2, 16, 16); Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; /* Don't make senseless movements */ if (moving_order >= v->GetNumOrders() || target_order >= v->GetNumOrders() || moving_order == target_order || v->GetNumOrders() <= 1) return CMD_ERROR; Order *moving_one = v->GetOrder(moving_order); /* Don't move an empty order */ if (moving_one == NULL) return CMD_ERROR; if (flags & DC_EXEC) { v->orders.list->MoveOrder(moving_order, target_order); /* Update shared list */ Vehicle *u = v->FirstShared(); DeleteOrderWarnings(u); for (; u != NULL; u = u->NextShared()) { /* Update the current order. * There are multiple ways to move orders, which result in cur_implicit_order_index * and cur_real_order_index to not longer make any sense. E.g. moving another * real order between them. * * Basically one could choose to preserve either of them, but not both. * While both ways are suitable in this or that case from a human point of view, neither * of them makes really sense. * However, from an AI point of view, preserving cur_real_order_index is the most * predictable and transparent behaviour. * * With that decision it basically does not matter what we do to cur_implicit_order_index. * If we change orders between the implicit- and real-index, the implicit orders are mostly likely * completely out-dated anyway. So, keep it simple and just keep cur_implicit_order_index as well. * The worst which can happen is that a lot of implicit orders are removed when reaching current_order. */ if (u->cur_real_order_index == moving_order) { u->cur_real_order_index = target_order; } else if (u->cur_real_order_index > moving_order && u->cur_real_order_index <= target_order) { u->cur_real_order_index--; } else if (u->cur_real_order_index < moving_order && u->cur_real_order_index >= target_order) { u->cur_real_order_index++; } if (u->cur_implicit_order_index == moving_order) { u->cur_implicit_order_index = target_order; } else if (u->cur_implicit_order_index > moving_order && u->cur_implicit_order_index <= target_order) { u->cur_implicit_order_index--; } else if (u->cur_implicit_order_index < moving_order && u->cur_implicit_order_index >= target_order) { u->cur_implicit_order_index++; } assert(v->orders.list == u->orders.list); /* Update any possible open window of the vehicle */ InvalidateVehicleOrder(u, moving_order | (target_order << 8)); } /* As we move an order, the order to skip to will be 'wrong'. */ Order *order; FOR_VEHICLE_ORDERS(v, order) { if (order->IsType(OT_CONDITIONAL)) { VehicleOrderID order_id = order->GetConditionSkipToOrder(); if (order_id == moving_order) { order_id = target_order; } else if (order_id > moving_order && order_id <= target_order) { order_id--; } else if (order_id < moving_order && order_id >= target_order) { order_id++; } order->SetConditionSkipToOrder(order_id); } } /* Make sure to rebuild the whole list */ InvalidateWindowClassesData(GetWindowClassForVehicleType(v->type), 0); } return CommandCost(); } /** * Modify an order in the orderlist of a vehicle. * @param tile unused * @param flags operation to perform * @param p1 various bitstuffed elements * - p1 = (bit 0 - 19) - ID of the vehicle * - p1 = (bit 24 - 31) - the selected order (if any). If the last order is given, * the order will be inserted before that one * the maximum vehicle order id is 254. * @param p2 various bitstuffed elements * - p2 = (bit 0 - 3) - what data to modify (@see ModifyOrderFlags) * - p2 = (bit 4 - 15) - the data to modify * @param text unused * @return the cost of this operation or an error */ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleOrderID sel_ord = GB(p1, 20, 8); VehicleID veh = GB(p1, 0, 20); ModifyOrderFlags mof = Extract(p2); uint16 data = GB(p2, 4, 11); if (mof >= MOF_END) return CMD_ERROR; Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; /* Is it a valid order? */ if (sel_ord >= v->GetNumOrders()) return CMD_ERROR; Order *order = v->GetOrder(sel_ord); switch (order->GetType()) { case OT_GOTO_STATION: if (mof == MOF_COND_VARIABLE || mof == MOF_COND_COMPARATOR || mof == MOF_DEPOT_ACTION || mof == MOF_COND_VALUE) return CMD_ERROR; break; case OT_GOTO_DEPOT: if (mof != MOF_NON_STOP && mof != MOF_DEPOT_ACTION) return CMD_ERROR; break; case OT_GOTO_WAYPOINT: if (mof != MOF_NON_STOP) return CMD_ERROR; break; case OT_CONDITIONAL: if (mof != MOF_COND_VARIABLE && mof != MOF_COND_COMPARATOR && mof != MOF_COND_VALUE && mof != MOF_COND_DESTINATION) return CMD_ERROR; break; default: return CMD_ERROR; } switch (mof) { default: NOT_REACHED(); case MOF_NON_STOP: if (!v->IsGroundVehicle()) return CMD_ERROR; if (data >= ONSF_END) return CMD_ERROR; if (data == order->GetNonStopType()) return CMD_ERROR; break; case MOF_STOP_LOCATION: if (v->type != VEH_TRAIN) return CMD_ERROR; if (data >= OSL_END) return CMD_ERROR; break; case MOF_UNLOAD: if ((data & ~(OUFB_UNLOAD | OUFB_TRANSFER | OUFB_NO_UNLOAD)) != 0) return CMD_ERROR; /* Unload and no-unload are mutual exclusive and so are transfer and no unload. */ if (data != 0 && ((data & (OUFB_UNLOAD | OUFB_TRANSFER)) != 0) == ((data & OUFB_NO_UNLOAD) != 0)) return CMD_ERROR; if (data == order->GetUnloadType()) return CMD_ERROR; break; case MOF_LOAD: if (data > OLFB_NO_LOAD || data == 1) return CMD_ERROR; if (data == order->GetLoadType()) return CMD_ERROR; break; case MOF_DEPOT_ACTION: if (data >= DA_END) return CMD_ERROR; break; case MOF_COND_VARIABLE: if (data >= OCV_END) return CMD_ERROR; break; case MOF_COND_COMPARATOR: if (data >= OCC_END) return CMD_ERROR; switch (order->GetConditionVariable()) { case OCV_UNCONDITIONALLY: return CMD_ERROR; case OCV_REQUIRES_SERVICE: if (data != OCC_IS_TRUE && data != OCC_IS_FALSE) return CMD_ERROR; break; default: if (data == OCC_IS_TRUE || data == OCC_IS_FALSE) return CMD_ERROR; break; } break; case MOF_COND_VALUE: switch (order->GetConditionVariable()) { case OCV_UNCONDITIONALLY: return CMD_ERROR; case OCV_LOAD_PERCENTAGE: case OCV_RELIABILITY: if (data > 100) return CMD_ERROR; break; default: if (data > 2047) return CMD_ERROR; break; } break; case MOF_COND_DESTINATION: if (data >= v->GetNumOrders()) return CMD_ERROR; break; } if (flags & DC_EXEC) { switch (mof) { case MOF_NON_STOP: order->SetNonStopType((OrderNonStopFlags)data); if (data & ONSF_NO_STOP_AT_DESTINATION_STATION) order->SetRefit(CT_NO_REFIT); break; case MOF_STOP_LOCATION: order->SetStopLocation((OrderStopLocation)data); break; case MOF_UNLOAD: order->SetUnloadType((OrderUnloadFlags)data); break; case MOF_LOAD: order->SetLoadType((OrderLoadFlags)data); if (data & OLFB_NO_LOAD) order->SetRefit(CT_NO_REFIT); break; case MOF_DEPOT_ACTION: { switch (data) { case DA_ALWAYS_GO: order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE)); order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT)); break; case DA_SERVICE: order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() | ODTFB_SERVICE)); order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT)); order->SetRefit(CT_NO_REFIT); break; case DA_STOP: order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE)); order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() | ODATFB_HALT)); order->SetRefit(CT_NO_REFIT); break; default: NOT_REACHED(); } break; } case MOF_COND_VARIABLE: { order->SetConditionVariable((OrderConditionVariable)data); OrderConditionComparator occ = order->GetConditionComparator(); switch (order->GetConditionVariable()) { case OCV_UNCONDITIONALLY: order->SetConditionComparator(OCC_EQUALS); order->SetConditionValue(0); break; case OCV_REQUIRES_SERVICE: if (occ != OCC_IS_TRUE && occ != OCC_IS_FALSE) order->SetConditionComparator(OCC_IS_TRUE); break; case OCV_LOAD_PERCENTAGE: case OCV_RELIABILITY: if (order->GetConditionValue() > 100) order->SetConditionValue(100); /* FALL THROUGH */ default: if (occ == OCC_IS_TRUE || occ == OCC_IS_FALSE) order->SetConditionComparator(OCC_EQUALS); break; } break; } case MOF_COND_COMPARATOR: order->SetConditionComparator((OrderConditionComparator)data); break; case MOF_COND_VALUE: order->SetConditionValue(data); break; case MOF_COND_DESTINATION: order->SetConditionSkipToOrder(data); break; default: NOT_REACHED(); } /* Update the windows and full load flags, also for vehicles that share the same order list */ Vehicle *u = v->FirstShared(); DeleteOrderWarnings(u); for (; u != NULL; u = u->NextShared()) { /* Toggle u->current_order "Full load" flag if it changed. * However, as the same flag is used for depot orders, check * whether we are not going to a depot as there are three * cases where the full load flag can be active and only * one case where the flag is used for depot orders. In the * other cases for the OrderTypeByte the flags are not used, * so do not care and those orders should not be active * when this function is called. */ if (sel_ord == u->cur_real_order_index && (u->current_order.IsType(OT_GOTO_STATION) || u->current_order.IsType(OT_LOADING)) && u->current_order.GetLoadType() != order->GetLoadType()) { u->current_order.SetLoadType(order->GetLoadType()); } InvalidateVehicleOrder(u, VIWD_MODIFY_ORDERS); } } return CommandCost(); } /** * Check if an aircraft has enough range for an order list. * @param v_new Aircraft to check. * @param v_order Vehicle currently holding the order list. * @param first First order in the source order list. * @return True if the aircraft has enough range for the orders, false otherwise. */ static bool CheckAircraftOrderDistance(const Aircraft *v_new, const Vehicle *v_order, const Order *first) { if (first == NULL || v_new->acache.cached_max_range == 0) return true; /* Iterate over all orders to check the distance between all * 'goto' orders and their respective next order (of any type). */ for (const Order *o = first; o != NULL; o = o->next) { switch (o->GetType()) { case OT_GOTO_STATION: case OT_GOTO_DEPOT: case OT_GOTO_WAYPOINT: /* If we don't have a next order, we've reached the end and must check the first order instead. */ if (GetOrderDistance(o, o->next != NULL ? o->next : first, v_order) > v_new->acache.cached_max_range_sqr) return false; break; default: break; } } return true; } /** * Clone/share/copy an order-list of another vehicle. * @param tile unused * @param flags operation to perform * @param p1 various bitstuffed elements * - p1 = (bit 0-19) - destination vehicle to clone orders to * - p1 = (bit 30-31) - action to perform * @param p2 source vehicle to clone orders from, if any (none for CO_UNSHARE) * @param text unused * @return the cost of this operation or an error */ CommandCost CmdCloneOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh_src = GB(p2, 0, 20); VehicleID veh_dst = GB(p1, 0, 20); Vehicle *dst = Vehicle::GetIfValid(veh_dst); if (dst == NULL || !dst->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(dst->owner); if (ret.Failed()) return ret; switch (GB(p1, 30, 2)) { case CO_SHARE: { Vehicle *src = Vehicle::GetIfValid(veh_src); /* Sanity checks */ if (src == NULL || !src->IsPrimaryVehicle() || dst->type != src->type || dst == src) return CMD_ERROR; CommandCost ret = CheckOwnership(src->owner); if (ret.Failed()) return ret; /* Trucks can't share orders with busses (and visa versa) */ if (src->type == VEH_ROAD && RoadVehicle::From(src)->IsBus() != RoadVehicle::From(dst)->IsBus()) { return CMD_ERROR; } /* Is the vehicle already in the shared list? */ if (src->FirstShared() == dst->FirstShared()) return CMD_ERROR; const Order *order; FOR_VEHICLE_ORDERS(src, order) { if (!OrderGoesToStation(dst, order)) continue; /* Allow copying unreachable destinations if they were already unreachable for the source. * This is basically to allow cloning / autorenewing / autoreplacing vehicles, while the stations * are temporarily invalid due to reconstruction. */ const Station *st = Station::Get(order->GetDestination()); if (CanVehicleUseStation(src, st) && !CanVehicleUseStation(dst, st)) { return_cmd_error(STR_ERROR_CAN_T_COPY_SHARE_ORDER); } } /* Check for aircraft range limits. */ if (dst->type == VEH_AIRCRAFT && !CheckAircraftOrderDistance(Aircraft::From(dst), src, src->GetFirstOrder())) { return_cmd_error(STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE); } if (src->orders.list == NULL && !OrderList::CanAllocateItem()) { return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS); } if (flags & DC_EXEC) { /* If the destination vehicle had a OrderList, destroy it. * We only reset the order indices, if the new orders are obviously different. * (We mainly do this to keep the order indices valid and in range.) */ DeleteVehicleOrders(dst, false, dst->GetNumOrders() != src->GetNumOrders()); dst->orders.list = src->orders.list; /* Link this vehicle in the shared-list */ dst->AddToShared(src); InvalidateVehicleOrder(dst, VIWD_REMOVE_ALL_ORDERS); InvalidateVehicleOrder(src, VIWD_MODIFY_ORDERS); InvalidateWindowClassesData(GetWindowClassForVehicleType(dst->type), 0); } break; } case CO_COPY: { Vehicle *src = Vehicle::GetIfValid(veh_src); /* Sanity checks */ if (src == NULL || !src->IsPrimaryVehicle() || dst->type != src->type || dst == src) return CMD_ERROR; CommandCost ret = CheckOwnership(src->owner); if (ret.Failed()) return ret; /* Trucks can't copy all the orders from busses (and visa versa), * and neither can helicopters and aircraft. */ const Order *order; FOR_VEHICLE_ORDERS(src, order) { if (OrderGoesToStation(dst, order) && !CanVehicleUseStation(dst, Station::Get(order->GetDestination()))) { return_cmd_error(STR_ERROR_CAN_T_COPY_SHARE_ORDER); } } /* Check for aircraft range limits. */ if (dst->type == VEH_AIRCRAFT && !CheckAircraftOrderDistance(Aircraft::From(dst), src, src->GetFirstOrder())) { return_cmd_error(STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE); } /* make sure there are orders available */ if (!Order::CanAllocateItem(src->GetNumOrders()) || !OrderList::CanAllocateItem()) { return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS); } if (flags & DC_EXEC) { const Order *order; Order *first = NULL; Order **order_dst; /* If the destination vehicle had an order list, destroy the chain but keep the OrderList. * We only reset the order indices, if the new orders are obviously different. * (We mainly do this to keep the order indices valid and in range.) */ DeleteVehicleOrders(dst, true, dst->GetNumOrders() != src->GetNumOrders()); order_dst = &first; FOR_VEHICLE_ORDERS(src, order) { *order_dst = new Order(); (*order_dst)->AssignOrder(*order); order_dst = &(*order_dst)->next; } if (dst->orders.list == NULL) { dst->orders.list = new OrderList(first, dst); } else { assert(dst->orders.list->GetFirstOrder() == NULL); assert(!dst->orders.list->IsShared()); delete dst->orders.list; assert(OrderList::CanAllocateItem()); dst->orders.list = new OrderList(first, dst); } InvalidateVehicleOrder(dst, VIWD_REMOVE_ALL_ORDERS); InvalidateWindowClassesData(GetWindowClassForVehicleType(dst->type), 0); } break; } case CO_UNSHARE: return DecloneOrder(dst, flags); default: return CMD_ERROR; } return CommandCost(); } /** * Add/remove refit orders from an order * @param tile Not used * @param flags operation to perform * @param p1 VehicleIndex of the vehicle having the order * @param p2 bitmask * - bit 0-7 CargoID * - bit 8-15 Cargo subtype * - bit 16-23 number of order to modify * @param text unused * @return the cost of this operation or an error */ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { VehicleID veh = GB(p1, 0, 20); VehicleOrderID order_number = GB(p2, 16, 8); CargoID cargo = GB(p2, 0, 8); byte subtype = GB(p2, 8, 8); if (cargo >= NUM_CARGO && cargo != CT_NO_REFIT && cargo != CT_AUTO_REFIT) return CMD_ERROR; const Vehicle *v = Vehicle::GetIfValid(veh); if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; Order *order = v->GetOrder(order_number); if (order == NULL) return CMD_ERROR; /* Automatic refit cargo is only supported for goto station orders. */ if (cargo == CT_AUTO_REFIT && !order->IsType(OT_GOTO_STATION)) return CMD_ERROR; if (order->GetLoadType() & OLFB_NO_LOAD) return CMD_ERROR; if (flags & DC_EXEC) { order->SetRefit(cargo, subtype); /* Make the depot order an 'always go' order. */ if (cargo != CT_NO_REFIT && order->IsType(OT_GOTO_DEPOT)) { order->SetDepotOrderType((OrderDepotTypeFlags)(order->GetDepotOrderType() & ~ODTFB_SERVICE)); order->SetDepotActionType((OrderDepotActionFlags)(order->GetDepotActionType() & ~ODATFB_HALT)); } for (Vehicle *u = v->FirstShared(); u != NULL; u = u->NextShared()) { /* Update any possible open window of the vehicle */ InvalidateVehicleOrder(u, VIWD_MODIFY_ORDERS); /* If the vehicle already got the current depot set as current order, then update current order as well */ if (u->cur_real_order_index == order_number && (u->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS)) { u->current_order.SetRefit(cargo, subtype); } } } return CommandCost(); } /** * * Check the orders of a vehicle, to see if there are invalid orders and stuff * */ void CheckOrders(const Vehicle *v) { /* Does the user wants us to check things? */ if (_settings_client.gui.order_review_system == 0) return; /* Do nothing for crashed vehicles */ if (v->vehstatus & VS_CRASHED) return; /* Do nothing for stopped vehicles if setting is '1' */ if (_settings_client.gui.order_review_system == 1 && (v->vehstatus & VS_STOPPED)) return; /* do nothing we we're not the first vehicle in a share-chain */ if (v->FirstShared() != v) return; /* Only check every 20 days, so that we don't flood the message log */ if (v->owner == _local_company && v->day_counter % 20 == 0) { int n_st, problem_type = -1; const Order *order; int message = 0; /* Check the order list */ n_st = 0; FOR_VEHICLE_ORDERS(v, order) { /* Dummy order? */ if (order->IsType(OT_DUMMY)) { problem_type = 1; break; } /* Does station have a load-bay for this vehicle? */ if (order->IsType(OT_GOTO_STATION)) { const Station *st = Station::Get(order->GetDestination()); n_st++; if (!CanVehicleUseStation(v, st)) problem_type = 3; } } /* Check if the last and the first order are the same */ if (v->GetNumOrders() > 1) { const Order *last = v->GetLastOrder(); if (v->orders.list->GetFirstOrder()->Equals(*last)) { problem_type = 2; } } /* Do we only have 1 station in our order list? */ if (n_st < 2 && problem_type == -1) problem_type = 0; #ifndef NDEBUG if (v->orders.list != NULL) v->orders.list->DebugCheckSanity(); #endif /* We don't have a problem */ if (problem_type < 0) return; message = STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS + problem_type; //DEBUG(misc, 3, "Triggered News Item for vehicle %d", v->index); SetDParam(0, v->index); AddVehicleAdviceNewsItem(message, v->index); } } /** * Removes an order from all vehicles. Triggers when, say, a station is removed. * @param type The type of the order (OT_GOTO_[STATION|DEPOT|WAYPOINT]). * @param destination The destination. Can be a StationID, DepotID or WaypointID. */ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination) { Vehicle *v; /* Aircraft have StationIDs for depot orders and never use DepotIDs * This fact is handled specially below */ /* Go through all vehicles */ FOR_ALL_VEHICLES(v) { Order *order; order = &v->current_order; if ((v->type == VEH_AIRCRAFT && order->IsType(OT_GOTO_DEPOT) ? OT_GOTO_STATION : order->GetType()) == type && v->current_order.GetDestination() == destination) { order->MakeDummy(); SetWindowDirty(WC_VEHICLE_VIEW, v->index); } /* Clear the order from the order-list */ int id = -1; FOR_VEHICLE_ORDERS(v, order) { id++; restart: OrderType ot = order->GetType(); if (ot == OT_GOTO_DEPOT && (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) continue; if (ot == OT_IMPLICIT || (v->type == VEH_AIRCRAFT && ot == OT_GOTO_DEPOT)) ot = OT_GOTO_STATION; if (ot == type && order->GetDestination() == destination) { /* We want to clear implicit orders, but we don't want to make them * dummy orders. They should just vanish. Also check the actual order * type as ot is currently OT_GOTO_STATION. */ if (order->IsType(OT_IMPLICIT)) { order = order->next; // DeleteOrder() invalidates current order DeleteOrder(v, id); if (order != NULL) goto restart; break; } order->MakeDummy(); for (const Vehicle *w = v->FirstShared(); w != NULL; w = w->NextShared()) { /* In GUI, simulate by removing the order and adding it back */ InvalidateVehicleOrder(w, id | (INVALID_VEH_ORDER_ID << 8)); InvalidateVehicleOrder(w, (INVALID_VEH_ORDER_ID << 8) | id); } } } } OrderBackup::RemoveOrder(type, destination); } /** * Checks if a vehicle has a depot in its order list. * @return True iff at least one order is a depot order. */ bool Vehicle::HasDepotOrder() const { const Order *order; FOR_VEHICLE_ORDERS(this, order) { if (order->IsType(OT_GOTO_DEPOT)) return true; } return false; } /** * Delete all orders from a vehicle * @param v Vehicle whose orders to reset * @param keep_orderlist If true, do not free the order list, only empty it. * @param reset_order_indices If true, reset cur_implicit_order_index and cur_real_order_index * and cancel the current full load order (if the vehicle is loading). * If false, _you_ have to make sure the order indices are valid after * your messing with them! */ void DeleteVehicleOrders(Vehicle *v, bool keep_orderlist, bool reset_order_indices) { DeleteOrderWarnings(v); if (v->IsOrderListShared()) { /* Remove ourself from the shared order list. */ v->RemoveFromShared(); v->orders.list = NULL; } else if (v->orders.list != NULL) { /* Remove the orders */ v->orders.list->FreeChain(keep_orderlist); if (!keep_orderlist) v->orders.list = NULL; } if (reset_order_indices) { v->cur_implicit_order_index = v->cur_real_order_index = 0; if (v->current_order.IsType(OT_LOADING)) { CancelLoadingDueToDeletedOrder(v); } } } /** * Clamp the service interval to the correct min/max. The actual min/max values * depend on whether it's in percent or days. * @param interval proposed service interval * @param company_id the owner of the vehicle * @return Clamped service interval */ uint16 GetServiceIntervalClamped(uint interval, bool ispercent) { return ispercent ? Clamp(interval, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : Clamp(interval, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS); } /** * * Check if a vehicle has any valid orders * * @return false if there are no valid orders * @note Conditional orders are not considered valid destination orders * */ static bool CheckForValidOrders(const Vehicle *v) { const Order *order; FOR_VEHICLE_ORDERS(v, order) { switch (order->GetType()) { case OT_GOTO_STATION: case OT_GOTO_DEPOT: case OT_GOTO_WAYPOINT: return true; default: break; } } return false; } /** * Compare the variable and value based on the given comparator. */ static bool OrderConditionCompare(OrderConditionComparator occ, int variable, int value) { switch (occ) { case OCC_EQUALS: return variable == value; case OCC_NOT_EQUALS: return variable != value; case OCC_LESS_THAN: return variable < value; case OCC_LESS_EQUALS: return variable <= value; case OCC_MORE_THAN: return variable > value; case OCC_MORE_EQUALS: return variable >= value; case OCC_IS_TRUE: return variable != 0; case OCC_IS_FALSE: return variable == 0; default: NOT_REACHED(); } } /** * Process a conditional order and determine the next order. * @param order the order the vehicle currently has * @param v the vehicle to update * @return index of next order to jump to, or INVALID_VEH_ORDER_ID to use the next order */ VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v) { if (order->GetType() != OT_CONDITIONAL) return INVALID_VEH_ORDER_ID; bool skip_order = false; OrderConditionComparator occ = order->GetConditionComparator(); uint16 value = order->GetConditionValue(); switch (order->GetConditionVariable()) { case OCV_LOAD_PERCENTAGE: skip_order = OrderConditionCompare(occ, CalcPercentVehicleFilled(v, NULL), value); break; case OCV_RELIABILITY: skip_order = OrderConditionCompare(occ, ToPercent16(v->reliability), value); break; case OCV_MAX_SPEED: skip_order = OrderConditionCompare(occ, v->GetDisplayMaxSpeed() * 10 / 16, value); break; case OCV_AGE: skip_order = OrderConditionCompare(occ, v->age / DAYS_IN_LEAP_YEAR, value); break; case OCV_REQUIRES_SERVICE: skip_order = OrderConditionCompare(occ, v->NeedsServicing(), value); break; case OCV_UNCONDITIONALLY: skip_order = true; break; case OCV_REMAINING_LIFETIME: skip_order = OrderConditionCompare(occ, max(v->max_age - v->age + DAYS_IN_LEAP_YEAR - 1, 0) / DAYS_IN_LEAP_YEAR, value); break; default: NOT_REACHED(); } return skip_order ? order->GetConditionSkipToOrder() : (VehicleOrderID)INVALID_VEH_ORDER_ID; } /** * Update the vehicle's destination tile from an order. * @param order the order the vehicle currently has * @param v the vehicle to update * @param conditional_depth the depth (amount of steps) to go with conditional orders. This to prevent infinite loops. * @param pbs_look_ahead Whether we are forecasting orders for pbs reservations in advance. If true, the order indices must not be modified. */ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth, bool pbs_look_ahead) { if (conditional_depth > v->GetNumOrders()) { v->current_order.Free(); v->dest_tile = 0; return false; } switch (order->GetType()) { case OT_GOTO_STATION: v->dest_tile = v->GetOrderStationLocation(order->GetDestination()); return true; case OT_GOTO_DEPOT: if ((order->GetDepotOrderType() & ODTFB_SERVICE) && !v->NeedsServicing()) { assert(!pbs_look_ahead); UpdateVehicleTimetable(v, true); v->IncrementRealOrderIndex(); break; } if (v->current_order.GetDepotActionType() & ODATFB_NEAREST_DEPOT) { /* We need to search for the nearest depot (hangar). */ TileIndex location; DestinationID destination; bool reverse; if (v->FindClosestDepot(&location, &destination, &reverse)) { /* PBS reservations cannot reverse */ if (pbs_look_ahead && reverse) return false; v->dest_tile = location; v->current_order.MakeGoToDepot(destination, v->current_order.GetDepotOrderType(), v->current_order.GetNonStopType(), (OrderDepotActionFlags)(v->current_order.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT), v->current_order.GetRefitCargo(), v->current_order.GetRefitSubtype()); /* If there is no depot in front, reverse automatically (trains only) */ if (v->type == VEH_TRAIN && reverse) DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION); if (v->type == VEH_AIRCRAFT) { Aircraft *a = Aircraft::From(v); if (a->state == FLYING && a->targetairport != destination) { /* The aircraft is now heading for a different hangar than the next in the orders */ extern void AircraftNextAirportPos_and_Order(Aircraft *a); AircraftNextAirportPos_and_Order(a); } } return true; } /* If there is no depot, we cannot help PBS either. */ if (pbs_look_ahead) return false; UpdateVehicleTimetable(v, true); v->IncrementRealOrderIndex(); } else { if (v->type != VEH_AIRCRAFT) { v->dest_tile = Depot::Get(order->GetDestination())->xy; } return true; } break; case OT_GOTO_WAYPOINT: v->dest_tile = Waypoint::Get(order->GetDestination())->xy; return true; case OT_CONDITIONAL: { assert(!pbs_look_ahead); VehicleOrderID next_order = ProcessConditionalOrder(order, v); if (next_order != INVALID_VEH_ORDER_ID) { /* Jump to next_order. cur_implicit_order_index becomes exactly that order, * cur_real_order_index might come after next_order. */ UpdateVehicleTimetable(v, false); v->cur_implicit_order_index = v->cur_real_order_index = next_order; v->UpdateRealOrderIndex(); v->current_order_time += v->GetOrder(v->cur_real_order_index)->travel_time; /* Disable creation of implicit orders. * When inserting them we do not know that we would have to make the conditional orders point to them. */ if (v->IsGroundVehicle()) { uint16 &gv_flags = v->GetGroundVehicleFlags(); SetBit(gv_flags, GVF_SUPPRESS_IMPLICIT_ORDERS); } } else { UpdateVehicleTimetable(v, true); v->IncrementRealOrderIndex(); } break; } default: v->dest_tile = 0; return false; } assert(v->cur_implicit_order_index < v->GetNumOrders()); assert(v->cur_real_order_index < v->GetNumOrders()); /* Get the current order */ order = v->GetOrder(v->cur_real_order_index); if (order != NULL && order->IsType(OT_IMPLICIT)) { assert(v->GetNumManualOrders() == 0); order = NULL; } if (order == NULL) { v->current_order.Free(); v->dest_tile = 0; return false; } v->current_order = *order; return UpdateOrderDest(v, order, conditional_depth + 1, pbs_look_ahead); } /** * Handle the orders of a vehicle and determine the next place * to go to if needed. * @param v the vehicle to do this for. * @return true *if* the vehicle is eligible for reversing * (basically only when leaving a station). */ bool ProcessOrders(Vehicle *v) { switch (v->current_order.GetType()) { case OT_GOTO_DEPOT: /* Let a depot order in the orderlist interrupt. */ if (!(v->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS)) return false; break; case OT_LOADING: return false; case OT_LEAVESTATION: if (v->type != VEH_AIRCRAFT) return false; break; default: break; } /** * Reversing because of order change is allowed only just after leaving a * station (and the difficulty setting to allowed, of course) * this can be detected because only after OT_LEAVESTATION, current_order * will be reset to nothing. (That also happens if no order, but in that case * it won't hit the point in code where may_reverse is checked) */ bool may_reverse = v->current_order.IsType(OT_NOTHING); /* Check if we've reached a 'via' destination. */ if (((v->current_order.IsType(OT_GOTO_STATION) && (v->current_order.GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) || v->current_order.IsType(OT_GOTO_WAYPOINT)) && IsTileType(v->tile, MP_STATION) && v->current_order.GetDestination() == GetStationIndex(v->tile)) { v->DeleteUnreachedImplicitOrders(); /* We set the last visited station here because we do not want * the train to stop at this 'via' station if the next order * is a no-non-stop order; in that case not setting the last * visited station will cause the vehicle to still stop. */ v->last_station_visited = v->current_order.GetDestination(); UpdateVehicleTimetable(v, true); v->IncrementImplicitOrderIndex(); } /* Get the current order */ assert(v->cur_implicit_order_index == 0 || v->cur_implicit_order_index < v->GetNumOrders()); v->UpdateRealOrderIndex(); const Order *order = v->GetOrder(v->cur_real_order_index); if (order != NULL && order->IsType(OT_IMPLICIT)) { assert(v->GetNumManualOrders() == 0); order = NULL; } /* If no order, do nothing. */ if (order == NULL || (v->type == VEH_AIRCRAFT && !CheckForValidOrders(v))) { if (v->type == VEH_AIRCRAFT) { /* Aircraft do something vastly different here, so handle separately */ extern void HandleMissingAircraftOrders(Aircraft *v); HandleMissingAircraftOrders(Aircraft::From(v)); return false; } v->current_order.Free(); v->dest_tile = 0; return false; } /* If it is unchanged, keep it. */ if (order->Equals(v->current_order) && (v->type == VEH_AIRCRAFT || v->dest_tile != 0) && (v->type != VEH_SHIP || !order->IsType(OT_GOTO_STATION) || Station::Get(order->GetDestination())->dock_tile != INVALID_TILE)) { return false; } /* Otherwise set it, and determine the destination tile. */ v->current_order = *order; InvalidateVehicleOrder(v, VIWD_MODIFY_ORDERS); switch (v->type) { default: NOT_REACHED(); case VEH_ROAD: case VEH_TRAIN: break; case VEH_AIRCRAFT: case VEH_SHIP: SetWindowClassesDirty(GetWindowClassForVehicleType(v->type)); break; } return UpdateOrderDest(v, order) && may_reverse; } /** * Check whether the given vehicle should stop at the given station * based on this order and the non-stop settings. * @param v the vehicle that might be stopping. * @param station the station to stop at. * @return true if the vehicle should stop. */ bool Order::ShouldStopAtStation(const Vehicle *v, StationID station) const { bool is_dest_station = this->IsType(OT_GOTO_STATION) && this->dest == station; return (!this->IsType(OT_GOTO_DEPOT) || (this->GetDepotOrderType() & ODTFB_PART_OF_ORDERS) != 0) && v->last_station_visited != station && // Do stop only when we've not just been there /* Finally do stop when there is no non-stop flag set for this type of station. */ !(this->GetNonStopType() & (is_dest_station ? ONSF_NO_STOP_AT_DESTINATION_STATION : ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS)); } openttd-1.3.3/src/osk_gui.cpp0000644000000000000000000003430512246102611014624 0ustar rootroot/* $Id: osk_gui.cpp 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file osk_gui.cpp The On Screen Keyboard GUI */ #include "stdafx.h" #include "string_func.h" #include "strings_func.h" #include "debug.h" #include "window_func.h" #include "gfx_func.h" #include "querystring_gui.h" #include "video/video_driver.hpp" #include "widgets/osk_widget.h" #include "table/sprites.h" #include "table/strings.h" char _keyboard_opt[2][OSK_KEYBOARD_ENTRIES * 4 + 1]; static WChar _keyboard[2][OSK_KEYBOARD_ENTRIES]; enum KeyStateBits { KEYS_NONE, KEYS_SHIFT, KEYS_CAPS }; static byte _keystate = KEYS_NONE; struct OskWindow : public Window { StringID caption; ///< the caption for this window. QueryString *qs; ///< text-input int text_btn; ///< widget number of parent's text field Textbuf *text; ///< pointer to parent's textbuffer (to update caret position) char *orig_str_buf; ///< Original string. bool shift; ///< Is the shift effectively pressed? OskWindow(const WindowDesc *desc, Window *parent, int button) : Window() { this->parent = parent; assert(parent != NULL); NWidgetCore *par_wid = parent->GetWidget(button); assert(par_wid != NULL); assert(parent->querystrings.Contains(button)); this->qs = parent->querystrings.Find(button)->second; this->caption = (par_wid->widget_data != STR_NULL) ? par_wid->widget_data : this->qs->caption; this->text_btn = button; this->text = &this->qs->text; this->querystrings[WID_OSK_TEXT] = this->qs; /* make a copy in case we need to reset later */ this->orig_str_buf = strdup(this->qs->text.buf); this->InitNested(desc, 0); this->SetFocusedWidget(WID_OSK_TEXT); /* Not needed by default. */ this->DisableWidget(WID_OSK_SPECIAL); this->UpdateOskState(); } ~OskWindow() { free(this->orig_str_buf); } /** * Only show valid characters; do not show characters that would * only insert a space when we have a spacebar to do that or * characters that are not allowed to be entered. */ void UpdateOskState() { this->shift = HasBit(_keystate, KEYS_CAPS) ^ HasBit(_keystate, KEYS_SHIFT); for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) { this->SetWidgetDisabledState(WID_OSK_LETTERS + i, !IsValidChar(_keyboard[this->shift][i], this->qs->text.afilter) || _keyboard[this->shift][i] == ' '); } this->SetWidgetDisabledState(WID_OSK_SPACE, !IsValidChar(' ', this->qs->text.afilter)); this->SetWidgetLoweredState(WID_OSK_SHIFT, HasBit(_keystate, KEYS_SHIFT)); this->SetWidgetLoweredState(WID_OSK_CAPS, HasBit(_keystate, KEYS_CAPS)); } virtual void SetStringParameters(int widget) const { if (widget == WID_OSK_CAPTION) SetDParam(0, this->caption); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget < WID_OSK_LETTERS) return; widget -= WID_OSK_LETTERS; DrawCharCentered(_keyboard[this->shift][widget], r.left + 8, r.top + 3, TC_BLACK); } virtual void OnClick(Point pt, int widget, int click_count) { /* clicked a letter */ if (widget >= WID_OSK_LETTERS) { WChar c = _keyboard[this->shift][widget - WID_OSK_LETTERS]; if (!IsValidChar(c, this->qs->text.afilter)) return; if (this->qs->text.InsertChar(c)) this->OnEditboxChanged(WID_OSK_TEXT); if (HasBit(_keystate, KEYS_SHIFT)) { ToggleBit(_keystate, KEYS_SHIFT); this->UpdateOskState(); this->SetDirty(); } return; } switch (widget) { case WID_OSK_BACKSPACE: if (this->qs->text.DeleteChar(WKC_BACKSPACE)) this->OnEditboxChanged(WID_OSK_TEXT); break; case WID_OSK_SPECIAL: /* * Anything device specific can go here. * The button itself is hidden by default, and when you need it you * can not hide it in the create event. */ break; case WID_OSK_CAPS: ToggleBit(_keystate, KEYS_CAPS); this->UpdateOskState(); this->SetDirty(); break; case WID_OSK_SHIFT: ToggleBit(_keystate, KEYS_SHIFT); this->UpdateOskState(); this->SetDirty(); break; case WID_OSK_SPACE: if (this->qs->text.InsertChar(' ')) this->OnEditboxChanged(WID_OSK_TEXT); break; case WID_OSK_LEFT: if (this->qs->text.MovePos(WKC_LEFT)) this->InvalidateData(); break; case WID_OSK_RIGHT: if (this->qs->text.MovePos(WKC_RIGHT)) this->InvalidateData(); break; case WID_OSK_OK: if (this->qs->orig == NULL || strcmp(this->qs->text.buf, this->qs->orig) != 0) { /* pass information by simulating a button press on parent window */ if (this->qs->ok_button >= 0) { this->parent->OnClick(pt, this->qs->ok_button, 1); /* Window gets deleted when the parent window removes itself. */ return; } } delete this; break; case WID_OSK_CANCEL: if (this->qs->cancel_button >= 0) { // pass a cancel event to the parent window this->parent->OnClick(pt, this->qs->cancel_button, 1); /* Window gets deleted when the parent window removes itself. */ return; } else { // or reset to original string qs->text.Assign(this->orig_str_buf); qs->text.MovePos(WKC_END); this->OnEditboxChanged(WID_OSK_TEXT); delete this; } break; } } virtual void OnEditboxChanged(int widget) { this->SetWidgetDirty(WID_OSK_TEXT); this->parent->OnEditboxChanged(this->text_btn); this->parent->SetWidgetDirty(this->text_btn); } virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->SetWidgetDirty(WID_OSK_TEXT); this->parent->SetWidgetDirty(this->text_btn); } virtual void OnFocusLost() { _video_driver->EditBoxLostFocus(); delete this; } }; static const int HALF_KEY_WIDTH = 7; // Width of 1/2 key in pixels. static const int INTER_KEY_SPACE = 2; // Number of pixels between two keys. /** * Add a key widget to a row of the keyboard. * @param hor Row container to add key widget to. * @param height Height of the key (all keys in a row should have equal height). * @param num_half Number of 1/2 key widths that this key has. * @param widtype Widget type of the key. Must be either \c NWID_SPACER for an invisible key, or a \c WWT_* widget. * @param widnum Widget number of the key. * @param widdata Data value of the key widget. * @param biggest_index Collected biggest widget index so far. * @note Key width is measured in 1/2 keys to allow for 1/2 key shifting between rows. */ static void AddKey(NWidgetHorizontal *hor, int height, int num_half, WidgetType widtype, int widnum, uint16 widdata, int *biggest_index) { int key_width = HALF_KEY_WIDTH + (INTER_KEY_SPACE + HALF_KEY_WIDTH) * (num_half - 1); if (widtype == NWID_SPACER) { if (!hor->IsEmpty()) key_width += INTER_KEY_SPACE; NWidgetSpacer *spc = new NWidgetSpacer(key_width, height); hor->Add(spc); } else { if (!hor->IsEmpty()) { NWidgetSpacer *spc = new NWidgetSpacer(INTER_KEY_SPACE, height); hor->Add(spc); } NWidgetLeaf *leaf = new NWidgetLeaf(widtype, COLOUR_GREY, widnum, widdata, STR_NULL); leaf->SetMinimalSize(key_width, height); hor->Add(leaf); } *biggest_index = max(*biggest_index, widnum); } /** Construct the top row keys (cancel, ok, backspace). */ static NWidgetBase *MakeTopKeys(int *biggest_index) { NWidgetHorizontal *hor = new NWidgetHorizontal(); int key_height = FONT_HEIGHT_NORMAL + 2; AddKey(hor, key_height, 6 * 2, WWT_TEXTBTN, WID_OSK_CANCEL, STR_BUTTON_CANCEL, biggest_index); AddKey(hor, key_height, 6 * 2, WWT_TEXTBTN, WID_OSK_OK, STR_BUTTON_OK, biggest_index); AddKey(hor, key_height, 2 * 2, WWT_PUSHIMGBTN, WID_OSK_BACKSPACE, SPR_OSK_BACKSPACE, biggest_index); return hor; } /** Construct the row containing the digit keys. */ static NWidgetBase *MakeNumberKeys(int *biggest_index) { NWidgetHorizontal *hor = new NWidgetHorizontalLTR(); int key_height = FONT_HEIGHT_NORMAL + 6; for (int widnum = WID_OSK_NUMBERS_FIRST; widnum <= WID_OSK_NUMBERS_LAST; widnum++) { AddKey(hor, key_height, 2, WWT_PUSHBTN, widnum, 0x0, biggest_index); } return hor; } /** Construct the qwerty row keys. */ static NWidgetBase *MakeQwertyKeys(int *biggest_index) { NWidgetHorizontal *hor = new NWidgetHorizontalLTR(); int key_height = FONT_HEIGHT_NORMAL + 6; AddKey(hor, key_height, 3, WWT_PUSHIMGBTN, WID_OSK_SPECIAL, SPR_OSK_SPECIAL, biggest_index); for (int widnum = WID_OSK_QWERTY_FIRST; widnum <= WID_OSK_QWERTY_LAST; widnum++) { AddKey(hor, key_height, 2, WWT_PUSHBTN, widnum, 0x0, biggest_index); } AddKey(hor, key_height, 1, NWID_SPACER, 0, 0, biggest_index); return hor; } /** Construct the asdfg row keys. */ static NWidgetBase *MakeAsdfgKeys(int *biggest_index) { NWidgetHorizontal *hor = new NWidgetHorizontalLTR(); int key_height = FONT_HEIGHT_NORMAL + 6; AddKey(hor, key_height, 4, WWT_IMGBTN, WID_OSK_CAPS, SPR_OSK_CAPS, biggest_index); for (int widnum = WID_OSK_ASDFG_FIRST; widnum <= WID_OSK_ASDFG_LAST; widnum++) { AddKey(hor, key_height, 2, WWT_PUSHBTN, widnum, 0x0, biggest_index); } return hor; } /** Construct the zxcvb row keys. */ static NWidgetBase *MakeZxcvbKeys(int *biggest_index) { NWidgetHorizontal *hor = new NWidgetHorizontalLTR(); int key_height = FONT_HEIGHT_NORMAL + 6; AddKey(hor, key_height, 3, WWT_IMGBTN, WID_OSK_SHIFT, SPR_OSK_SHIFT, biggest_index); for (int widnum = WID_OSK_ZXCVB_FIRST; widnum <= WID_OSK_ZXCVB_LAST; widnum++) { AddKey(hor, key_height, 2, WWT_PUSHBTN, widnum, 0x0, biggest_index); } AddKey(hor, key_height, 1, NWID_SPACER, 0, 0, biggest_index); return hor; } /** Construct the spacebar row keys. */ static NWidgetBase *MakeSpacebarKeys(int *biggest_index) { NWidgetHorizontal *hor = new NWidgetHorizontal(); int key_height = FONT_HEIGHT_NORMAL + 6; AddKey(hor, key_height, 8, NWID_SPACER, 0, 0, biggest_index); AddKey(hor, key_height, 13, WWT_PUSHTXTBTN, WID_OSK_SPACE, STR_EMPTY, biggest_index); AddKey(hor, key_height, 3, NWID_SPACER, 0, 0, biggest_index); AddKey(hor, key_height, 2, WWT_PUSHIMGBTN, WID_OSK_LEFT, SPR_OSK_LEFT, biggest_index); AddKey(hor, key_height, 2, WWT_PUSHIMGBTN, WID_OSK_RIGHT, SPR_OSK_RIGHT, biggest_index); return hor; } static const NWidgetPart _nested_osk_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY, WID_OSK_CAPTION), SetDataTip(STR_WHITE_STRING, STR_NULL), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(WWT_EDITBOX, COLOUR_GREY, WID_OSK_TEXT), SetMinimalSize(252, 12), SetPadding(2, 2, 2, 2), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), SetPIP(5, 2, 3), NWidgetFunction(MakeTopKeys), SetPadding(0, 3, 0, 3), NWidgetFunction(MakeNumberKeys), SetPadding(0, 3, 0, 3), NWidgetFunction(MakeQwertyKeys), SetPadding(0, 3, 0, 3), NWidgetFunction(MakeAsdfgKeys), SetPadding(0, 3, 0, 3), NWidgetFunction(MakeZxcvbKeys), SetPadding(0, 3, 0, 3), NWidgetFunction(MakeSpacebarKeys), SetPadding(0, 3, 0, 3), EndContainer(), }; static const WindowDesc _osk_desc( WDP_CENTER, 0, 0, WC_OSK, WC_NONE, 0, _nested_osk_widgets, lengthof(_nested_osk_widgets) ); /** * Retrieve keyboard layout from language string or (if set) config file. * Also check for invalid characters. */ void GetKeyboardLayout() { char keyboard[2][OSK_KEYBOARD_ENTRIES * 4 + 1]; char errormark[2][OSK_KEYBOARD_ENTRIES + 1]; // used for marking invalid chars bool has_error = false; // true when an invalid char is detected if (StrEmpty(_keyboard_opt[0])) { GetString(keyboard[0], STR_OSK_KEYBOARD_LAYOUT, lastof(keyboard[0])); } else { strecpy(keyboard[0], _keyboard_opt[0], lastof(keyboard[0])); } if (StrEmpty(_keyboard_opt[1])) { GetString(keyboard[1], STR_OSK_KEYBOARD_LAYOUT_CAPS, lastof(keyboard[1])); } else { strecpy(keyboard[1], _keyboard_opt[1], lastof(keyboard[1])); } for (uint j = 0; j < 2; j++) { const char *kbd = keyboard[j]; bool ended = false; for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) { _keyboard[j][i] = Utf8Consume(&kbd); /* Be lenient when the last characters are missing (is quite normal) */ if (_keyboard[j][i] == '\0' || ended) { ended = true; _keyboard[j][i] = ' '; continue; } if (IsPrintable(_keyboard[j][i])) { errormark[j][i] = ' '; } else { has_error = true; errormark[j][i] = '^'; _keyboard[j][i] = ' '; } } } if (has_error) { ShowInfoF("The keyboard layout you selected contains invalid chars. Please check those chars marked with ^."); ShowInfoF("Normal keyboard: %s", keyboard[0]); ShowInfoF(" %s", errormark[0]); ShowInfoF("Caps Lock: %s", keyboard[1]); ShowInfoF(" %s", errormark[1]); } } /** * Show the on-screen keyboard (osk) associated with a given textbox * @param parent pointer to the Window where this keyboard originated from * @param button widget number of parent's textbox */ void ShowOnScreenKeyboard(Window *parent, int button) { DeleteWindowById(WC_OSK, 0); GetKeyboardLayout(); new OskWindow(&_osk_desc, parent, button); } /** * Updates the original text of the OSK so when the 'parent' changes the * original and you press on cancel you won't get the 'old' original text * but the updated one. * @param parent window that just updated its orignal text * @param button widget number of parent's textbox to update */ void UpdateOSKOriginalText(const Window *parent, int button) { OskWindow *osk = dynamic_cast(FindWindowById(WC_OSK, 0)); if (osk == NULL || osk->parent != parent || osk->text_btn != button) return; free(osk->orig_str_buf); osk->orig_str_buf = strdup(osk->qs->text.buf); osk->SetDirty(); } /** * Check whether the OSK is opened for a specific editbox. * @parent w Window to check for * @param button Editbox of \a w to check for * @return true if the OSK is oppened for \a button. */ bool IsOSKOpenedFor(const Window *w, int button) { OskWindow *osk = dynamic_cast(FindWindowById(WC_OSK, 0)); return osk != NULL && osk->parent == w && osk->text_btn == button; } openttd-1.3.3/src/animated_tile_func.h0000644000000000000000000000170212246102611016436 0ustar rootroot/* $Id: animated_tile_func.h 23704 2012-01-01 17:22:32Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file animated_tile_func.h %Tile animation! */ #ifndef ANIMATED_TILE_FUNC_H #define ANIMATED_TILE_FUNC_H #include "tile_type.h" void AddAnimatedTile(TileIndex tile); void DeleteAnimatedTile(TileIndex tile); void AnimateAnimatedTiles(); void InitializeAnimatedTiles(); #endif /* ANIMATED_TILE_FUNC_H */ openttd-1.3.3/src/textfile_type.h0000644000000000000000000000204712246102611015514 0ustar rootroot/* $Id: textfile_type.h 25339 2013-06-09 09:33:06Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file textfile_type.h Types related to textfiles. */ #ifndef TEXTFILE_TYPE_H #define TEXTFILE_TYPE_H /** Additional text files accompanying Tar archives */ enum TextfileType { TFT_BEGIN, TFT_README = TFT_BEGIN, ///< NewGRF readme TFT_CHANGELOG, ///< NewGRF changelog TFT_LICENSE, ///< NewGRF license TFT_END, }; DECLARE_POSTFIX_INCREMENT(TextfileType) #endif /* TEXTFILE_TYPE_H */ openttd-1.3.3/src/ini_type.h0000644000000000000000000000731512246102611014452 0ustar rootroot/* $Id: ini_type.h 22824 2011-08-24 13:38:26Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ini_type.h Types related to reading/writing '*.ini' files. */ #ifndef INI_TYPE_H #define INI_TYPE_H #include "fileio_type.h" /** Types of groups */ enum IniGroupType { IGT_VARIABLES = 0, ///< Values of the form "landscape = hilly". IGT_LIST = 1, ///< A list of values, separated by \n and terminated by the next group block. IGT_SEQUENCE = 2, ///< A list of uninterpreted lines, terminated by the next group block. }; /** A single "line" in an ini file. */ struct IniItem { IniItem *next; ///< The next item in this group char *name; ///< The name of this item char *value; ///< The value of this item char *comment; ///< The comment associated with this item IniItem(struct IniGroup *parent, const char *name, size_t len = 0); ~IniItem(); void SetValue(const char *value); }; /** A group within an ini file. */ struct IniGroup { IniGroup *next; ///< the next group within this file IniGroupType type; ///< type of group IniItem *item; ///< the first item in the group IniItem **last_item; ///< the last item in the group char *name; ///< name of group char *comment; ///< comment for group IniGroup(struct IniLoadFile *parent, const char *name, size_t len = 0); ~IniGroup(); IniItem *GetItem(const char *name, bool create); void Clear(); }; /** Ini file that only supports loading. */ struct IniLoadFile { IniGroup *group; ///< the first group in the ini IniGroup **last_group; ///< the last group in the ini char *comment; ///< last comment in file const char * const *list_group_names; ///< NULL terminated list with group names that are lists const char * const *seq_group_names; ///< NULL terminated list with group names that are sequences. IniLoadFile(const char * const *list_group_names = NULL, const char * const *seq_group_names = NULL); virtual ~IniLoadFile(); IniGroup *GetGroup(const char *name, size_t len = 0, bool create_new = true); void RemoveGroup(const char *name); void LoadFromDisk(const char *filename, Subdirectory subdir); /** * Open the INI file. * @param filename Name of the INI file. * @param subdir The subdir to load the file from. * @param size [out] Size of the opened file. * @return File handle of the opened file, or \c NULL. */ virtual FILE *OpenFile(const char *filename, Subdirectory subdir, size_t *size) = 0; /** * Report an error about the file contents. * @param pre Prefix text of the \a buffer part. * @param buffer Part of the file with the error. * @param post Suffix text of the \a buffer part. */ virtual void ReportFileError(const char * const pre, const char * const buffer, const char * const post) = 0; }; /** Ini file that supports both loading and saving. */ struct IniFile : IniLoadFile { IniFile(const char * const *list_group_names = NULL); bool SaveToDisk(const char *filename); virtual FILE *OpenFile(const char *filename, Subdirectory subdir, size_t *size); virtual void ReportFileError(const char * const pre, const char * const buffer, const char * const post); }; #endif /* INI_TYPE_H */ openttd-1.3.3/src/graph_gui.h0000644000000000000000000000175712246102611014603 0ustar rootroot/* $Id: graph_gui.h 21610 2010-12-23 16:54:41Z smatz $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file graph_gui.h Graph GUI functions. */ #ifndef GRAPH_GUI_H #define GRAPH_GUI_H void ShowOperatingProfitGraph(); void ShowIncomeGraph(); void ShowDeliveredCargoGraph(); void ShowPerformanceHistoryGraph(); void ShowCompanyValueGraph(); void ShowCargoPaymentRates(); void ShowCompanyLeagueTable(); void ShowPerformanceRatingDetail(); #endif /* GRAPH_GUI_H */ openttd-1.3.3/src/goal_gui.cpp0000644000000000000000000002533312246102610014752 0ustar rootroot/* $Id: goal_gui.cpp 24829 2012-12-20 18:35:13Z zuu $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file goal_gui.cpp GUI for goals. */ #include "stdafx.h" #include "industry.h" #include "town.h" #include "window_gui.h" #include "strings_func.h" #include "date_func.h" #include "viewport_func.h" #include "gui.h" #include "goal_base.h" #include "core/geometry_func.hpp" #include "company_func.h" #include "command_func.h" #include "widgets/goal_widget.h" #include "table/strings.h" struct GoalListWindow : Window { Scrollbar *vscroll; GoalListWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_GL_SCROLLBAR); this->FinishInitNested(desc, window_number); this->OnInvalidateData(0); } virtual void OnClick(Point pt, int widget, int click_count) { if (widget != WID_GL_PANEL) return; int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GL_PANEL, WD_FRAMERECT_TOP); int num = 0; const Goal *s; FOR_ALL_GOALS(s) { if (s->company == INVALID_COMPANY) { y--; if (y == 0) { this->HandleClick(s); return; } num++; } } if (num == 0) { y--; // "None" if (y < 0) return; } y -= 2; // "Company specific goals:" if (y < 0) return; FOR_ALL_GOALS(s) { if (s->company == _local_company) { y--; if (y == 0) { this->HandleClick(s); return; } } } } void HandleClick(const Goal *s) { /* determine dst coordinate for goal and try to scroll to it */ TileIndex xy; switch (s->type) { case GT_NONE: return; case GT_COMPANY: return; case GT_TILE: if (!IsValidTile(s->dst)) return; xy = s->dst; break; case GT_INDUSTRY: if (!Industry::IsValidID(s->dst)) return; xy = Industry::Get(s->dst)->location.tile; break; case GT_TOWN: if (!Town::IsValidID(s->dst)) return; xy = Town::Get(s->dst)->xy; break; default: NOT_REACHED(); } if (_ctrl_pressed) { ShowExtraViewPortWindow(xy); } else { ScrollMainWindowToTile(xy); } } /** * Count the number of lines in this window. * @return the number of lines */ uint CountLines() { /* Count number of (non) awarded goals */ uint num_global = 0; uint num_company = 0; const Goal *s; FOR_ALL_GOALS(s) { if (s->company == INVALID_COMPANY) { num_global++; } else if (s->company == _local_company) { num_company++; } } /* Count the 'none' lines */ if (num_global == 0) num_global = 1; if (num_company == 0) num_company = 1; /* Global, company and an empty line before the accepted ones. */ return 3 + num_global + num_company; } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_GL_PANEL) return; Dimension d = maxdim(GetStringBoundingBox(STR_GOALS_GLOBAL_TITLE), GetStringBoundingBox(STR_GOALS_COMPANY_TITLE)); resize->height = d.height; d.height *= 5; d.width += padding.width + WD_FRAMERECT_RIGHT + WD_FRAMERECT_LEFT; d.height += padding.height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; *size = maxdim(*size, d); } /** * Draws either the global goals or the company goal section. * This is a helper method for DrawWidget. */ void DrawPartialGoalList(int &pos, const int cap, int x, int y, int right, bool global_section) const { if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, global_section ? STR_GOALS_GLOBAL_TITLE : STR_GOALS_COMPANY_TITLE); pos++; uint num = 0; const Goal *s; FOR_ALL_GOALS(s) { if (global_section ? s->company == INVALID_COMPANY : s->company == _local_company && s->company != INVALID_COMPANY) { if (IsInsideMM(pos, 0, cap)) { /* Display the goal */ SetDParamStr(0, s->text); DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_GOALS_TEXT); } pos++; num++; } } if (num == 0) { if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_GOALS_NONE); pos++; } } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_GL_PANEL) return; YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); int right = r.right - WD_FRAMERECT_RIGHT; int y = r.top + WD_FRAMERECT_TOP; int x = r.left + WD_FRAMERECT_LEFT; int pos = -this->vscroll->GetPosition(); const int cap = this->vscroll->GetCapacity(); /* Draw partial list with global goals */ DrawPartialGoalList(pos, cap, x, y, right, true); /* Draw partial list with company goals */ pos++; DrawPartialGoalList(pos, cap, x, y, right, false); } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_GL_PANEL); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; this->vscroll->SetCount(this->CountLines()); } }; static const NWidgetPart _nested_goals_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GOALS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_BROWN, WID_GL_PANEL), SetDataTip(0x0, STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER), SetResize(1, 1), SetScrollbar(WID_GL_SCROLLBAR), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VSCROLLBAR, COLOUR_BROWN, WID_GL_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_BROWN), EndContainer(), EndContainer(), }; static const WindowDesc _goals_list_desc( WDP_AUTO, 500, 127, WC_GOALS_LIST, WC_NONE, 0, _nested_goals_list_widgets, lengthof(_nested_goals_list_widgets) ); void ShowGoalsList() { AllocateWindowDescFront(&_goals_list_desc, 0); } struct GoalQuestionWindow : Window { char *question; int buttons; int button[3]; byte type; GoalQuestionWindow(const WindowDesc *desc, WindowNumber window_number, byte type, uint32 button_mask, const char *question) : Window(), type(type) { assert(type < GOAL_QUESTION_TYPE_COUNT); this->question = strdup(question); /* Figure out which buttons we have to enable */ uint bit; int n = 0; FOR_EACH_SET_BIT(bit, button_mask) { if (bit >= GOAL_QUESTION_BUTTON_COUNT) break; this->button[n++] = bit; if (n == 3) break; } this->buttons = n; assert(this->buttons > 0 && this->buttons < 4); this->CreateNestedTree(desc); this->GetWidget(WID_GQ_BUTTONS)->SetDisplayedPlane(this->buttons - 1); this->FinishInitNested(desc, window_number); } ~GoalQuestionWindow() { free(this->question); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_GQ_CAPTION: SetDParam(0, STR_GOAL_QUESTION_CAPTION_QUESTION + this->type); break; case WID_GQ_BUTTON_1: SetDParam(0, STR_GOAL_QUESTION_BUTTON_CANCEL + this->button[0]); break; case WID_GQ_BUTTON_2: SetDParam(0, STR_GOAL_QUESTION_BUTTON_CANCEL + this->button[1]); break; case WID_GQ_BUTTON_3: SetDParam(0, STR_GOAL_QUESTION_BUTTON_CANCEL + this->button[2]); break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_GQ_BUTTON_1: DoCommandP(0, this->window_number, this->button[0], CMD_GOAL_QUESTION_ANSWER); delete this; break; case WID_GQ_BUTTON_2: DoCommandP(0, this->window_number, this->button[1], CMD_GOAL_QUESTION_ANSWER); delete this; break; case WID_GQ_BUTTON_3: DoCommandP(0, this->window_number, this->button[2], CMD_GOAL_QUESTION_ANSWER); delete this; break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_GQ_QUESTION) return; SetDParamStr(0, this->question); size->height = GetStringHeight(STR_JUST_RAW_STRING, size->width) + WD_PAR_VSEP_WIDE; } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_GQ_QUESTION) return; SetDParamStr(0, this->question); DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK, SA_TOP | SA_HOR_CENTER); } }; static const NWidgetPart _nested_goal_question_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, WID_GQ_CAPTION), SetDataTip(STR_WHITE_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GQ_QUESTION), SetMinimalSize(300, 0), SetPadding(8, 8, 8, 8), SetFill(1, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GQ_BUTTONS), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(85, 10, 85), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(65, 10, 65), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(25, 10, 25), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_3), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 8), EndContainer(), }; static const WindowDesc _goal_question_list_desc( WDP_CENTER, 0, 0, WC_GOAL_QUESTION, WC_NONE, WDF_CONSTRUCTION, _nested_goal_question_widgets, lengthof(_nested_goal_question_widgets) ); void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question) { new GoalQuestionWindow(&_goal_question_list_desc, id, type, button_mask, question); } openttd-1.3.3/src/tar_type.h0000644000000000000000000000322112246102611014451 0ustar rootroot/* $Id: tar_type.h 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tar_type.h Structs, typedefs and macros used for TAR file handling. */ #ifndef TAR_TYPE_H #define TAR_TYPE_H #include #include #include "fileio_type.h" /** The define of a TarList. */ struct TarListEntry { const char *filename; const char *dirname; /* MSVC goes copying around this struct after initialisation, so it tries * to free filename, which isn't set at that moment... but because it * initializes the variable with garbage, it's going to segfault. */ TarListEntry() : filename(NULL), dirname(NULL) {} ~TarListEntry() { free(this->filename); free(this->dirname); } }; struct TarFileListEntry { const char *tar_filename; size_t size; size_t position; }; typedef std::map TarList; typedef std::map TarFileList; extern TarList _tar_list[NUM_SUBDIRS]; extern TarFileList _tar_filelist[NUM_SUBDIRS]; #define FOR_ALL_TARS(tar, sd) for (tar = _tar_filelist[sd].begin(); tar != _tar_filelist[sd].end(); tar++) #endif /* TAR_TYPE_H */ openttd-1.3.3/src/ai/0000755000000000000000000000000012246102757013057 5ustar rootrootopenttd-1.3.3/src/ai/ai_core.cpp0000644000000000000000000002637312246102573015173 0ustar rootroot/* $Id: ai_core.cpp 25599 2013-07-13 10:13:55Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_core.cpp Implementation of AI. */ #include "../stdafx.h" #include "../core/backup_type.hpp" #include "../core/bitmath_func.hpp" #include "../company_base.h" #include "../company_func.h" #include "../network/network.h" #include "../window_func.h" #include "ai_scanner.hpp" #include "ai_instance.hpp" #include "ai_config.hpp" #include "ai_info.hpp" #include "ai.hpp" /* static */ uint AI::frame_counter = 0; /* static */ AIScannerInfo *AI::scanner_info = NULL; /* static */ AIScannerLibrary *AI::scanner_library = NULL; /* static */ bool AI::CanStartNew() { /* Only allow new AIs on the server and only when that is allowed in multiplayer */ return !_networking || (_network_server && _settings_game.ai.ai_in_multiplayer); } /* static */ void AI::StartNew(CompanyID company, bool rerandomise_ai) { assert(Company::IsValidID(company)); /* Clients shouldn't start AIs */ if (_networking && !_network_server) return; AIConfig *config = AIConfig::GetConfig(company, AIConfig::SSS_FORCE_GAME); AIInfo *info = config->GetInfo(); if (info == NULL || (rerandomise_ai && config->IsRandom())) { info = AI::scanner_info->SelectRandomAI(); assert(info != NULL); /* Load default data and store the name in the settings */ config->Change(info->GetName(), -1, false, true); } config->AnchorUnchangeableSettings(); Backup cur_company(_current_company, company, FILE_LINE); Company *c = Company::Get(company); c->ai_info = info; assert(c->ai_instance == NULL); c->ai_instance = new AIInstance(); c->ai_instance->Initialize(info); cur_company.Restore(); InvalidateWindowData(WC_AI_DEBUG, 0, -1); return; } /* static */ void AI::GameLoop() { /* If we are in networking, only servers run this function, and that only if it is allowed */ if (_networking && (!_network_server || !_settings_game.ai.ai_in_multiplayer)) return; /* The speed with which AIs go, is limited by the 'competitor_speed' */ AI::frame_counter++; assert(_settings_game.difficulty.competitor_speed <= 4); if ((AI::frame_counter & ((1 << (4 - _settings_game.difficulty.competitor_speed)) - 1)) != 0) return; Backup cur_company(_current_company, FILE_LINE); const Company *c; FOR_ALL_COMPANIES(c) { if (c->is_ai) { cur_company.Change(c->index); c->ai_instance->GameLoop(); } } cur_company.Restore(); /* Occasionally collect garbage; every 255 ticks do one company. * Effectively collecting garbage once every two months per AI. */ if ((AI::frame_counter & 255) == 0) { CompanyID cid = (CompanyID)GB(AI::frame_counter, 8, 4); if (Company::IsValidAiID(cid)) Company::Get(cid)->ai_instance->CollectGarbage(); } } /* static */ uint AI::GetTick() { return AI::frame_counter; } /* static */ void AI::Stop(CompanyID company) { if (_networking && !_network_server) return; Backup cur_company(_current_company, company, FILE_LINE); Company *c = Company::Get(company); delete c->ai_instance; c->ai_instance = NULL; c->ai_info = NULL; cur_company.Restore(); InvalidateWindowData(WC_AI_DEBUG, 0, -1); DeleteWindowById(WC_AI_SETTINGS, company); } /* static */ void AI::Pause(CompanyID company) { /* The reason why dedicated servers are forbidden to execute this * command is not because it is unsafe, but because there is no way * for the server owner to unpause the script again. */ if (_network_dedicated) return; Backup cur_company(_current_company, company, FILE_LINE); Company::Get(company)->ai_instance->Pause(); cur_company.Restore(); } /* static */ void AI::Unpause(CompanyID company) { Backup cur_company(_current_company, company, FILE_LINE); Company::Get(company)->ai_instance->Unpause(); cur_company.Restore(); } /* static */ bool AI::IsPaused(CompanyID company) { Backup cur_company(_current_company, company, FILE_LINE); bool paused = Company::Get(company)->ai_instance->IsPaused(); cur_company.Restore(); return paused; } /* static */ void AI::KillAll() { /* It might happen there are no companies .. than we have nothing to loop */ if (Company::GetPoolSize() == 0) return; const Company *c; FOR_ALL_COMPANIES(c) { if (c->is_ai) AI::Stop(c->index); } } /* static */ void AI::Initialize() { if (AI::scanner_info != NULL) AI::Uninitialize(true); AI::frame_counter = 0; if (AI::scanner_info == NULL) { TarScanner::DoScan(TarScanner::AI); AI::scanner_info = new AIScannerInfo(); AI::scanner_info->Initialize(); AI::scanner_library = new AIScannerLibrary(); AI::scanner_library->Initialize(); } } /* static */ void AI::Uninitialize(bool keepConfig) { AI::KillAll(); if (keepConfig) { /* Run a rescan, which indexes all AIInfos again, and check if we can * still load all the AIS, while keeping the configs in place */ Rescan(); } else { delete AI::scanner_info; delete AI::scanner_library; AI::scanner_info = NULL; AI::scanner_library = NULL; for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (_settings_game.ai_config[c] != NULL) { delete _settings_game.ai_config[c]; _settings_game.ai_config[c] = NULL; } if (_settings_newgame.ai_config[c] != NULL) { delete _settings_newgame.ai_config[c]; _settings_newgame.ai_config[c] = NULL; } } } } /* static */ void AI::ResetConfig() { /* Check for both newgame as current game if we can reload the AIInfo inside * the AIConfig. If not, remove the AI from the list (which will assign * a random new AI on reload). */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (_settings_game.ai_config[c] != NULL && _settings_game.ai_config[c]->HasScript()) { if (!_settings_game.ai_config[c]->ResetInfo(true)) { DEBUG(script, 0, "After a reload, the AI by the name '%s' was no longer found, and removed from the list.", _settings_game.ai_config[c]->GetName()); _settings_game.ai_config[c]->Change(NULL); if (Company::IsValidAiID(c)) { /* The code belonging to an already running AI was deleted. We can only do * one thing here to keep everything sane and that is kill the AI. After * killing the offending AI we start a random other one in it's place, just * like what would happen if the AI was missing during loading. */ AI::Stop(c); AI::StartNew(c, false); } } else if (Company::IsValidAiID(c)) { /* Update the reference in the Company struct. */ Company::Get(c)->ai_info = _settings_game.ai_config[c]->GetInfo(); } } if (_settings_newgame.ai_config[c] != NULL && _settings_newgame.ai_config[c]->HasScript()) { if (!_settings_newgame.ai_config[c]->ResetInfo(false)) { DEBUG(script, 0, "After a reload, the AI by the name '%s' was no longer found, and removed from the list.", _settings_newgame.ai_config[c]->GetName()); _settings_newgame.ai_config[c]->Change(NULL); } } } } /* static */ void AI::NewEvent(CompanyID company, ScriptEvent *event) { /* AddRef() and Release() need to be called at least once, so do it here */ event->AddRef(); /* Clients should ignore events */ if (_networking && !_network_server) { event->Release(); return; } /* Only AIs can have an event-queue */ if (!Company::IsValidAiID(company)) { event->Release(); return; } /* Queue the event */ Backup cur_company(_current_company, company, FILE_LINE); Company::Get(_current_company)->ai_instance->InsertEvent(event); cur_company.Restore(); event->Release(); } /* static */ void AI::BroadcastNewEvent(ScriptEvent *event, CompanyID skip_company) { /* AddRef() and Release() need to be called at least once, so do it here */ event->AddRef(); /* Clients should ignore events */ if (_networking && !_network_server) { event->Release(); return; } /* Try to send the event to all AIs */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (c != skip_company) AI::NewEvent(c, event); } event->Release(); } /* static */ void AI::Save(CompanyID company) { if (!_networking || _network_server) { Company *c = Company::GetIfValid(company); assert(c != NULL && c->ai_instance != NULL); Backup cur_company(_current_company, company, FILE_LINE); c->ai_instance->Save(); cur_company.Restore(); } else { AIInstance::SaveEmpty(); } } /* static */ void AI::Load(CompanyID company, int version) { if (!_networking || _network_server) { Company *c = Company::GetIfValid(company); assert(c != NULL && c->ai_instance != NULL); Backup cur_company(_current_company, company, FILE_LINE); c->ai_instance->Load(version); cur_company.Restore(); } else { /* Read, but ignore, the load data */ AIInstance::LoadEmpty(); } } /* static */ int AI::GetStartNextTime() { /* Find the first company which doesn't exist yet */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { if (!Company::IsValidID(c)) return AIConfig::GetConfig(c, AIConfig::SSS_FORCE_GAME)->GetSetting("start_date"); } /* Currently no AI can be started, check again in a year. */ return DAYS_IN_YEAR; } /* static */ char *AI::GetConsoleList(char *p, const char *last, bool newest_only) { return AI::scanner_info->GetConsoleList(p, last, newest_only); } /* static */ char *AI::GetConsoleLibraryList(char *p, const char *last) { return AI::scanner_library->GetConsoleList(p, last, true); } /* static */ const ScriptInfoList *AI::GetInfoList() { return AI::scanner_info->GetInfoList(); } /* static */ const ScriptInfoList *AI::GetUniqueInfoList() { return AI::scanner_info->GetUniqueInfoList(); } /* static */ AIInfo *AI::FindInfo(const char *name, int version, bool force_exact_match) { return AI::scanner_info->FindInfo(name, version, force_exact_match); } /* static */ AILibrary *AI::FindLibrary(const char *library, int version) { return AI::scanner_library->FindLibrary(library, version); } /* static */ void AI::Rescan() { TarScanner::DoScan(TarScanner::AI); AI::scanner_info->RescanDir(); AI::scanner_library->RescanDir(); ResetConfig(); InvalidateWindowData(WC_AI_LIST, 0, 1); SetWindowClassesDirty(WC_AI_DEBUG); InvalidateWindowClassesData(WC_AI_SETTINGS); } #if defined(ENABLE_NETWORK) /** * Check whether we have an AI (library) with the exact characteristics as ci. * @param ci the characteristics to search on (shortname and md5sum) * @param md5sum whether to check the MD5 checksum * @return true iff we have an AI (library) matching. */ /* static */ bool AI::HasAI(const ContentInfo *ci, bool md5sum) { return AI::scanner_info->HasScript(ci, md5sum); } /* static */ bool AI::HasAILibrary(const ContentInfo *ci, bool md5sum) { return AI::scanner_library->HasScript(ci, md5sum); } #endif /* defined(ENABLE_NETWORK) */ /* static */ AIScannerInfo *AI::GetScannerInfo() { return AI::scanner_info; } /* static */ AIScannerLibrary *AI::GetScannerLibrary() { return AI::scanner_library; } openttd-1.3.3/src/ai/ai_config.cpp0000644000000000000000000000657512246102573015512 0ustar rootroot/* $Id: ai_config.cpp 24789 2012-12-05 19:36:04Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_config.cpp Implementation of AIConfig. */ #include "../stdafx.h" #include "../settings_type.h" #include "ai.hpp" #include "ai_config.hpp" #include "ai_info.hpp" /** Configuration for AI start date, every AI has this setting. */ ScriptConfigItem _start_date_config = { "start_date", "", // STR_AI_SETTINGS_START_DELAY AI::START_NEXT_MIN, AI::START_NEXT_MAX, AI::START_NEXT_MEDIUM, AI::START_NEXT_EASY, AI::START_NEXT_MEDIUM, AI::START_NEXT_HARD, AI::START_NEXT_DEVIATION, 30, SCRIPTCONFIG_NONE, NULL, false }; /* static */ AIConfig *AIConfig::GetConfig(CompanyID company, ScriptSettingSource source) { AIConfig **config; if (source == SSS_FORCE_NEWGAME || (source == SSS_DEFAULT && _game_mode == GM_MENU)) { config = &_settings_newgame.ai_config[company]; } else { config = &_settings_game.ai_config[company]; } if (*config == NULL) *config = new AIConfig(); return *config; } class AIInfo *AIConfig::GetInfo() const { return static_cast(ScriptConfig::GetInfo()); } ScriptInfo *AIConfig::FindInfo(const char *name, int version, bool force_exact_match) { return static_cast(AI::FindInfo(name, version, force_exact_match)); } bool AIConfig::ResetInfo(bool force_exact_match) { this->info = (ScriptInfo *)AI::FindInfo(this->name, force_exact_match ? this->version : -1, force_exact_match); return this->info != NULL; } void AIConfig::PushExtraConfigList() { this->config_list->push_back(_start_date_config); } void AIConfig::ClearConfigList() { /* The special casing for start_date is here to ensure that the * start_date setting won't change even if you chose another Script. */ int start_date = this->GetSetting("start_date"); ScriptConfig::ClearConfigList(); this->SetSetting("start_date", start_date); } int AIConfig::GetSetting(const char *name) const { if (this->info == NULL) { SettingValueList::const_iterator it = this->settings.find(name); if (it == this->settings.end()) { assert(strcmp("start_date", name) == 0); switch (GetGameSettings().script.settings_profile) { case SP_EASY: return AI::START_NEXT_EASY; case SP_MEDIUM: return AI::START_NEXT_MEDIUM; case SP_HARD: return AI::START_NEXT_HARD; case SP_CUSTOM: return AI::START_NEXT_MEDIUM; default: NOT_REACHED(); } } return (*it).second; } return ScriptConfig::GetSetting(name); } void AIConfig::SetSetting(const char *name, int value) { if (this->info == NULL) { if (strcmp("start_date", name) != 0) return; value = Clamp(value, AI::START_NEXT_MIN, AI::START_NEXT_MAX); SettingValueList::iterator it = this->settings.find(name); if (it != this->settings.end()) { (*it).second = value; } else { this->settings[strdup(name)] = value; } return; } ScriptConfig::SetSetting(name, value); } openttd-1.3.3/src/ai/ai_info.hpp0000644000000000000000000000462312246102573015175 0ustar rootroot/* $Id: ai_info.hpp 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_info.hpp AIInfo keeps track of all information of an AI, like Author, Description, ... */ #ifndef AI_INFO_HPP #define AI_INFO_HPP #include "../script/script_info.hpp" /** All static information from an AI like name, version, etc. */ class AIInfo : public ScriptInfo { public: AIInfo(); ~AIInfo(); /** * Register the functions of this class. */ static void RegisterAPI(Squirrel *engine); /** * Create an AI, using this AIInfo as start-template. */ static SQInteger Constructor(HSQUIRRELVM vm); /** * Create a dummy-AI. */ static SQInteger DummyConstructor(HSQUIRRELVM vm); /** * Check if we can start this AI. */ bool CanLoadFromVersion(int version) const; /** * Use this AI as a random AI. */ bool UseAsRandomAI() const { return this->use_as_random; } /** * Get the API version this AI is written for. */ const char *GetAPIVersion() const { return this->api_version; } private: int min_loadable_version; ///< The AI can load savegame data if the version is equal or greater than this. bool use_as_random; ///< Should this AI be used when the user wants a "random AI"? const char *api_version; ///< API version used by this AI. }; /** All static information from an AI library like name, version, etc. */ class AILibrary : public ScriptInfo { public: AILibrary() : ScriptInfo(), category(NULL) {}; ~AILibrary(); /** * Register the functions of this class. */ static void RegisterAPI(Squirrel *engine); /** * Create an AI, using this AIInfo as start-template. */ static SQInteger Constructor(HSQUIRRELVM vm); /** * Get the category this library is in. */ const char *GetCategory() const { return this->category; } private: const char *category; ///< The category this library is in. }; #endif /* AI_INFO_HPP */ openttd-1.3.3/src/ai/ai_gui.cpp0000644000000000000000000016340412246102573015024 0ustar rootroot/* $Id: ai_gui.cpp 26025 2013-11-17 13:53:33Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_gui.cpp %Window for configuring the AIs */ #include "../stdafx.h" #include "../table/sprites.h" #include "../error.h" #include "../settings_gui.h" #include "../querystring_gui.h" #include "../stringfilter_type.h" #include "../company_base.h" #include "../company_gui.h" #include "../strings_func.h" #include "../window_func.h" #include "../gfx_func.h" #include "../command_func.h" #include "../network/network.h" #include "../settings_func.h" #include "../network/network_content.h" #include "../textfile_gui.h" #include "../widgets/dropdown_type.h" #include "../widgets/dropdown_func.h" #include "../hotkeys.h" #include "ai.hpp" #include "../script/api/script_log.hpp" #include "ai_config.hpp" #include "ai_info.hpp" #include "ai_instance.hpp" #include "../game/game.hpp" #include "../game/game_config.hpp" #include "../game/game_info.hpp" #include "../game/game_instance.hpp" #include "table/strings.h" #include static ScriptConfig *GetConfig(CompanyID slot) { if (slot == OWNER_DEITY) return GameConfig::GetConfig(); return AIConfig::GetConfig(slot); } /** * Window that let you choose an available AI. */ struct AIListWindow : public Window { const ScriptInfoList *info_list; ///< The list of Scripts. int selected; ///< The currently selected Script. CompanyID slot; ///< The company we're selecting a new Script for. int line_height; ///< Height of a row in the matrix widget. Scrollbar *vscroll; ///< Cache of the vertical scrollbar. /** * Constructor for the window. * @param desc The description of the window. * @param slot The company we're changing the AI for. */ AIListWindow(const WindowDesc *desc, CompanyID slot) : Window(), slot(slot) { if (slot == OWNER_DEITY) { this->info_list = Game::GetUniqueInfoList(); } else { this->info_list = AI::GetUniqueInfoList(); } this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_AIL_SCROLLBAR); this->FinishInitNested(desc); // Initializes 'this->line_height' as side effect. this->vscroll->SetCount((int)this->info_list->size() + 1); /* Try if we can find the currently selected AI */ this->selected = -1; if (GetConfig(slot)->HasScript()) { ScriptInfo *info = GetConfig(slot)->GetInfo(); int i = 0; for (ScriptInfoList::const_iterator it = this->info_list->begin(); it != this->info_list->end(); it++, i++) { if ((*it).second == info) { this->selected = i; break; } } } } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_AIL_CAPTION: SetDParam(0, (this->slot == OWNER_DEITY) ? STR_AI_LIST_CAPTION_GAMESCRIPT : STR_AI_LIST_CAPTION_AI); break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget == WID_AIL_LIST) { this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; resize->width = 1; resize->height = this->line_height; size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_AIL_LIST: { /* Draw a list of all available AIs. */ int y = this->GetWidget(WID_AIL_LIST)->pos_y; /* First AI in the list is hardcoded to random */ if (this->vscroll->IsVisible(0)) { DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_LEFT, y + WD_MATRIX_TOP, this->slot == OWNER_DEITY ? STR_AI_CONFIG_NONE : STR_AI_CONFIG_RANDOM_AI, this->selected == -1 ? TC_WHITE : TC_ORANGE); y += this->line_height; } ScriptInfoList::const_iterator it = this->info_list->begin(); for (int i = 1; it != this->info_list->end(); i++, it++) { if (this->vscroll->IsVisible(i)) { DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, (*it).second->GetName(), (this->selected == i - 1) ? TC_WHITE : TC_ORANGE); y += this->line_height; } } break; } case WID_AIL_INFO_BG: { AIInfo *selected_info = NULL; ScriptInfoList::const_iterator it = this->info_list->begin(); for (int i = 1; selected_info == NULL && it != this->info_list->end(); i++, it++) { if (this->selected == i - 1) selected_info = static_cast((*it).second); } /* Some info about the currently selected AI. */ if (selected_info != NULL) { int y = r.top + WD_FRAMERECT_TOP; SetDParamStr(0, selected_info->GetAuthor()); DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, STR_AI_LIST_AUTHOR); y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; SetDParam(0, selected_info->GetVersion()); DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, STR_AI_LIST_VERSION); y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; if (selected_info->GetURL() != NULL) { SetDParamStr(0, selected_info->GetURL()); DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, STR_AI_LIST_URL); y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; } SetDParamStr(0, selected_info->GetDescription()); DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, r.bottom - WD_FRAMERECT_BOTTOM, STR_JUST_RAW_STRING, TC_WHITE); } break; } } } /** * Changes the AI of the current slot. */ void ChangeAI() { if (this->selected == -1) { GetConfig(slot)->Change(NULL); } else { ScriptInfoList::const_iterator it = this->info_list->begin(); for (int i = 0; i < this->selected; i++) it++; GetConfig(slot)->Change((*it).second->GetName(), (*it).second->GetVersion()); } InvalidateWindowData(WC_GAME_OPTIONS, WN_GAME_OPTIONS_AI); InvalidateWindowClassesData(WC_AI_SETTINGS); DeleteWindowByClass(WC_QUERY_STRING); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_AIL_LIST: { // Select one of the AIs int sel = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_AIL_LIST, 0, this->line_height) - 1; if (sel < (int)this->info_list->size()) { this->selected = sel; this->SetDirty(); if (click_count > 1) { this->ChangeAI(); delete this; } } break; } case WID_AIL_ACCEPT: { this->ChangeAI(); delete this; break; } case WID_AIL_CANCEL: delete this; break; } } virtual void OnResize() { NWidgetCore *nwi = this->GetWidget(WID_AIL_LIST); this->vscroll->SetCapacity(nwi->current_y / this->line_height); nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (_game_mode == GM_NORMAL && Company::IsValidID(this->slot)) { delete this; return; } if (!gui_scope) return; this->vscroll->SetCount((int)this->info_list->size() + 1); /* selected goes from -1 .. length of ai list - 1. */ this->selected = min(this->selected, this->vscroll->GetCount() - 2); } }; /** Widgets for the AI list window. */ static const NWidgetPart _nested_ai_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_AIL_CAPTION), SetDataTip(STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIL_LIST), SetMinimalSize(188, 112), SetFill(1, 1), SetResize(1, 1), SetDataTip(0x501, STR_AI_LIST_TOOLTIP), SetScrollbar(WID_AIL_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIL_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, WID_AIL_INFO_BG), SetMinimalTextLines(8, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIL_ACCEPT), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_LIST_ACCEPT, STR_AI_LIST_ACCEPT_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIL_CANCEL), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_LIST_CANCEL, STR_AI_LIST_CANCEL_TOOLTIP), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_MAUVE), EndContainer(), }; /** Window definition for the ai list window. */ static const WindowDesc _ai_list_desc( WDP_CENTER, 200, 234, WC_AI_LIST, WC_NONE, 0, _nested_ai_list_widgets, lengthof(_nested_ai_list_widgets) ); /** * Open the AI list window to chose an AI for the given company slot. * @param slot The slot to change the AI of. */ static void ShowAIListWindow(CompanyID slot) { DeleteWindowByClass(WC_AI_LIST); new AIListWindow(&_ai_list_desc, slot); } /** * Window for settings the parameters of an AI. */ struct AISettingsWindow : public Window { CompanyID slot; ///< The currently show company's setting. ScriptConfig *ai_config; ///< The configuration we're modifying. int clicked_button; ///< The button we clicked. bool clicked_increase; ///< Whether we clicked the increase or decrease button. bool clicked_dropdown; ///< Whether the dropdown is open. bool closing_dropdown; ///< True, if the dropdown list is currently closing. int timeout; ///< Timeout for unclicking the button. int clicked_row; ///< The clicked row of settings. int line_height; ///< Height of a row in the matrix widget. Scrollbar *vscroll; ///< Cache of the vertical scrollbar. typedef std::vector VisibleSettingsList; VisibleSettingsList visible_settings; ///< List of visible AI settings /** * Constructor for the window. * @param desc The description of the window. * @param slot The company we're changing the settings for. */ AISettingsWindow(const WindowDesc *desc, CompanyID slot) : Window(), slot(slot), clicked_button(-1), clicked_dropdown(false), closing_dropdown(false), timeout(0) { this->ai_config = GetConfig(slot); this->RebuildVisibleSettings(); this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR); this->FinishInitNested(desc, slot); // Initializes 'this->line_height' as side effect. this->SetWidgetDisabledState(WID_AIS_RESET, _game_mode != GM_MENU && Company::IsValidID(this->slot)); this->vscroll->SetCount((int)this->visible_settings.size()); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_AIS_CAPTION: SetDParam(0, (this->slot == OWNER_DEITY) ? STR_AI_SETTINGS_CAPTION_GAMESCRIPT : STR_AI_SETTINGS_CAPTION_AI); break; } } /** * Rebuilds the list of visible settings. AI settings with the flag * AICONFIG_AI_DEVELOPER set will only be visible if the game setting * gui.ai_developer_tools is enabled. */ void RebuildVisibleSettings() { visible_settings.clear(); ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin(); for (; it != this->ai_config->GetConfigList()->end(); it++) { bool no_hide = (it->flags & SCRIPTCONFIG_DEVELOPER) == 0; if (no_hide || _settings_client.gui.ai_developer_tools) { visible_settings.push_back(&(*it)); } } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget == WID_AIS_BACKGROUND) { this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; resize->width = 1; resize->height = this->line_height; size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; } } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_AIS_BACKGROUND) return; ScriptConfig *config = this->ai_config; VisibleSettingsList::const_iterator it = this->visible_settings.begin(); int i = 0; for (; !this->vscroll->IsVisible(i); i++) it++; bool rtl = _current_text_dir == TD_RTL; uint buttons_left = rtl ? r.right - SETTING_BUTTON_WIDTH - 3 : r.left + 4; uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : SETTING_BUTTON_WIDTH + 8); uint text_right = r.right - (rtl ? SETTING_BUTTON_WIDTH + 8 : WD_FRAMERECT_RIGHT); int y = r.top; int button_y_offset = (this->line_height - SETTING_BUTTON_HEIGHT) / 2; for (; this->vscroll->IsVisible(i) && it != visible_settings.end(); i++, it++) { const ScriptConfigItem &config_item = **it; int current_value = config->GetSetting((config_item).name); bool editable = _game_mode == GM_MENU || ((this->slot != OWNER_DEITY) && !Company::IsValidID(this->slot)) || (config_item.flags & SCRIPTCONFIG_INGAME) != 0; StringID str; TextColour colour; uint idx = 0; if (StrEmpty(config_item.description)) { if (!strcmp(config_item.name, "start_date")) { /* Build-in translation */ str = STR_AI_SETTINGS_START_DELAY; colour = TC_LIGHT_BLUE; } else { str = STR_JUST_STRING; colour = TC_ORANGE; } } else { str = STR_AI_SETTINGS_SETTING; colour = TC_LIGHT_BLUE; SetDParamStr(idx++, config_item.description); } if ((config_item.flags & SCRIPTCONFIG_BOOLEAN) != 0) { DrawBoolButton(buttons_left, y + button_y_offset, current_value != 0, editable); SetDParam(idx++, current_value == 0 ? STR_CONFIG_SETTING_OFF : STR_CONFIG_SETTING_ON); } else { if (config_item.complete_labels) { DrawDropDownButton(buttons_left, y + button_y_offset, COLOUR_YELLOW, this->clicked_row == i && clicked_dropdown, editable); } else { DrawArrowButtons(buttons_left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, editable && current_value > config_item.min_value, editable && current_value < config_item.max_value); } if (config_item.labels != NULL && config_item.labels->Contains(current_value)) { SetDParam(idx++, STR_JUST_RAW_STRING); SetDParamStr(idx++, config_item.labels->Find(current_value)->second); } else { SetDParam(idx++, STR_JUST_INT); SetDParam(idx++, current_value); } } DrawString(text_left, text_right, y + WD_MATRIX_TOP, str, colour); y += this->line_height; } } virtual void OnPaint() { if (this->closing_dropdown) { this->closing_dropdown = false; this->clicked_dropdown = false; } this->DrawWidgets(); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_AIS_BACKGROUND: { const NWidgetBase *wid = this->GetWidget(WID_AIS_BACKGROUND); int num = (pt.y - wid->pos_y) / this->line_height + this->vscroll->GetPosition(); if (num >= (int)this->visible_settings.size()) break; VisibleSettingsList::const_iterator it = this->visible_settings.begin(); for (int i = 0; i < num; i++) it++; const ScriptConfigItem config_item = **it; if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (config_item.flags & SCRIPTCONFIG_INGAME) == 0) return; if (this->clicked_row != num) { DeleteChildWindows(WC_QUERY_STRING); HideDropDownMenu(this); this->clicked_row = num; this->clicked_dropdown = false; } bool bool_item = (config_item.flags & SCRIPTCONFIG_BOOLEAN) != 0; int x = pt.x - wid->pos_x; if (_current_text_dir == TD_RTL) x = wid->current_x - 1 - x; x -= 4; /* One of the arrows is clicked (or green/red rect in case of bool value) */ int old_val = this->ai_config->GetSetting(config_item.name); if (!bool_item && IsInsideMM(x, 0, SETTING_BUTTON_WIDTH) && config_item.complete_labels) { if (this->clicked_dropdown) { /* unclick the dropdown */ HideDropDownMenu(this); this->clicked_dropdown = false; this->closing_dropdown = false; } else { const NWidgetBase *wid = this->GetWidget(WID_AIS_BACKGROUND); int rel_y = (pt.y - (int)wid->pos_y) % this->line_height; Rect wi_rect; wi_rect.left = pt.x - (_current_text_dir == TD_RTL ? SETTING_BUTTON_WIDTH - 1 - x : x); wi_rect.right = wi_rect.left + SETTING_BUTTON_WIDTH - 1; wi_rect.top = pt.y - rel_y + (this->line_height - SETTING_BUTTON_HEIGHT) / 2; wi_rect.bottom = wi_rect.top + SETTING_BUTTON_HEIGHT - 1; /* For dropdowns we also have to check the y position thoroughly, the mouse may not above the just opening dropdown */ if (pt.y >= wi_rect.top && pt.y <= wi_rect.bottom) { this->clicked_dropdown = true; this->closing_dropdown = false; DropDownList *list = new DropDownList(); for (int i = config_item.min_value; i <= config_item.max_value; i++) { list->push_back(new DropDownListCharStringItem(config_item.labels->Find(i)->second, i, false)); } ShowDropDownListAt(this, list, old_val, -1, wi_rect, COLOUR_ORANGE, true); } } } else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) { int new_val = old_val; if (bool_item) { new_val = !new_val; } else if (x >= SETTING_BUTTON_WIDTH / 2) { /* Increase button clicked */ new_val += config_item.step_size; if (new_val > config_item.max_value) new_val = config_item.max_value; this->clicked_increase = true; } else { /* Decrease button clicked */ new_val -= config_item.step_size; if (new_val < config_item.min_value) new_val = config_item.min_value; this->clicked_increase = false; } if (new_val != old_val) { this->ai_config->SetSetting(config_item.name, new_val); this->clicked_button = num; this->timeout = 5; } } else if (!bool_item && !config_item.complete_labels) { /* Display a query box so users can enter a custom value. */ SetDParam(0, old_val); ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, this, CS_NUMERAL, QSF_NONE); } this->SetDirty(); break; } case WID_AIS_ACCEPT: delete this; break; case WID_AIS_RESET: if (_game_mode == GM_MENU || !Company::IsValidID(this->slot)) { this->ai_config->ResetSettings(); this->SetDirty(); } break; } } virtual void OnQueryTextFinished(char *str) { if (StrEmpty(str)) return; ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin(); for (int i = 0; i < this->clicked_row; i++) it++; if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (it->flags & SCRIPTCONFIG_INGAME) == 0) return; int32 value = atoi(str); this->ai_config->SetSetting((*it).name, value); this->SetDirty(); } virtual void OnDropdownSelect(int widget, int index) { assert(this->clicked_dropdown); ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin(); for (int i = 0; i < this->clicked_row; i++) it++; if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (it->flags & SCRIPTCONFIG_INGAME) == 0) return; this->ai_config->SetSetting((*it).name, index); this->SetDirty(); } virtual void OnDropdownClose(Point pt, int widget, int index, bool instant_close) { /* We cannot raise the dropdown button just yet. OnClick needs some hint, whether * the same dropdown button was clicked again, and then not open the dropdown again. * So, we only remember that it was closed, and process it on the next OnPaint, which is * after OnClick. */ assert(this->clicked_dropdown); this->closing_dropdown = true; this->SetDirty(); } virtual void OnResize() { NWidgetCore *nwi = this->GetWidget(WID_AIS_BACKGROUND); this->vscroll->SetCapacity(nwi->current_y / this->line_height); nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); } virtual void OnTick() { if (--this->timeout == 0) { this->clicked_button = -1; this->SetDirty(); } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { this->RebuildVisibleSettings(); } }; /** Widgets for the AI settings window. */ static const NWidgetPart _nested_ai_settings_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_AIS_CAPTION), SetDataTip(STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIS_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetDataTip(0x501, STR_NULL), SetScrollbar(WID_AIS_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIS_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIS_ACCEPT), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIS_RESET), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_SETTINGS_RESET, STR_NULL), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_MAUVE), EndContainer(), }; /** Window definition for the AI settings window. */ static const WindowDesc _ai_settings_desc( WDP_CENTER, 500, 208, WC_AI_SETTINGS, WC_NONE, 0, _nested_ai_settings_widgets, lengthof(_nested_ai_settings_widgets) ); /** * Open the AI settings window to change the AI settings for an AI. * @param slot The CompanyID of the AI to change the settings. */ static void ShowAISettingsWindow(CompanyID slot) { DeleteWindowByClass(WC_AI_LIST); DeleteWindowByClass(WC_AI_SETTINGS); new AISettingsWindow(&_ai_settings_desc, slot); } /** Window for displaying the textfile of a AI. */ struct ScriptTextfileWindow : public TextfileWindow { CompanyID slot; ///< View the textfile of this CompanyID slot. ScriptTextfileWindow(TextfileType file_type, CompanyID slot) : TextfileWindow(file_type), slot(slot) { const char *textfile = GetConfig(slot)->GetTextfile(file_type, slot); this->LoadTextfile(textfile, (slot == OWNER_DEITY) ? GAME_DIR : AI_DIR); } /* virtual */ void SetStringParameters(int widget) const { if (widget == WID_TF_CAPTION) { SetDParam(0, (slot == OWNER_DEITY) ? STR_CONTENT_TYPE_GAME_SCRIPT : STR_CONTENT_TYPE_AI); SetDParamStr(1, GetConfig(slot)->GetName()); } } }; /** * Open the AI version of the textfile window. * @param file_type The type of textfile to display. * @param slot The slot the Script is using. */ void ShowScriptTextfileWindow(TextfileType file_type, CompanyID slot) { DeleteWindowByClass(WC_TEXTFILE); new ScriptTextfileWindow(file_type, slot); } /** Widgets for the configure AI window. */ static const NWidgetPart _nested_ai_config_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE), NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, WID_AIC_BACKGROUND), NWidget(NWID_VERTICAL), SetPIP(4, 4, 4), NWidget(NWID_HORIZONTAL), SetPIP(7, 0, 7), NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE), SetFill(0, 1), SetDataTip(AWV_DECREASE, STR_NULL), NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE), SetFill(0, 1), SetDataTip(AWV_INCREASE, STR_NULL), NWidget(NWID_SPACER), SetMinimalSize(6, 0), NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_NUMBER), SetDataTip(STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS, STR_NULL), SetFill(1, 0), SetPadding(1, 0, 0, 0), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_UP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_UP, STR_AI_CONFIG_MOVE_UP_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_DOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_DOWN, STR_AI_CONFIG_MOVE_DOWN_TOOLTIP), EndContainer(), EndContainer(), NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_AI, STR_NULL), SetPadding(0, 5, 0, 5), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_LIST), SetMinimalSize(288, 112), SetFill(1, 0), SetDataTip(0x801, STR_AI_CONFIG_AILIST_TOOLTIP), SetScrollbar(WID_AIC_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIC_SCROLLBAR), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 9), NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT, STR_NULL), SetPadding(0, 5, 4, 5), NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_GAMELIST), SetMinimalSize(288, 14), SetFill(1, 0), SetDataTip(0x101, STR_AI_CONFIG_GAMELIST_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_CONFIG_CHANGE, STR_AI_CONFIG_CHANGE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CLOSE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), EndContainer(), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 0), SetMinimalSize(279, 12), SetPadding(0, 7, 9, 7), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), EndContainer(), }; /** Window definition for the configure AI window. */ static const WindowDesc _ai_config_desc( WDP_CENTER, 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, _nested_ai_config_widgets, lengthof(_nested_ai_config_widgets) ); /** * Window to configure which AIs will start. */ struct AIConfigWindow : public Window { CompanyID selected_slot; ///< The currently selected AI slot or \c INVALID_COMPANY. int line_height; ///< Height of a single AI-name line. Scrollbar *vscroll; ///< Cache of the vertical scrollbar. AIConfigWindow() : Window() { this->InitNested(&_ai_config_desc, WN_GAME_OPTIONS_AI); // Initializes 'this->line_height' as a side effect. this->vscroll = this->GetScrollbar(WID_AIC_SCROLLBAR); this->selected_slot = INVALID_COMPANY; NWidgetCore *nwi = this->GetWidget(WID_AIC_LIST); this->vscroll->SetCapacity(nwi->current_y / this->line_height); this->vscroll->SetCount(MAX_COMPANIES); nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START); this->OnInvalidateData(0); } ~AIConfigWindow() { DeleteWindowByClass(WC_AI_LIST); DeleteWindowByClass(WC_AI_SETTINGS); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_AIC_NUMBER: SetDParam(0, GetGameSettings().difficulty.max_no_competitors); break; case WID_AIC_CHANGE: switch (selected_slot) { case OWNER_DEITY: SetDParam(0, STR_AI_CONFIG_CHANGE_GAMESCRIPT); break; case INVALID_COMPANY: SetDParam(0, STR_AI_CONFIG_CHANGE_NONE); break; default: SetDParam(0, STR_AI_CONFIG_CHANGE_AI); break; } break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_AIC_GAMELIST: case WID_AIC_LIST: this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM; size->height = GB(this->GetWidget(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height; break; } } /** * Can the AI config in the given company slot be edited? * @param slot The slot to query. * @return True if and only if the given AI Config slot can e edited. */ static bool IsEditable(CompanyID slot) { if (slot == OWNER_DEITY) return _game_mode != GM_NORMAL; if (_game_mode != GM_NORMAL) { return slot > 0 && slot <= GetGameSettings().difficulty.max_no_competitors; } if (Company::IsValidID(slot) || slot < 0) return false; int max_slot = GetGameSettings().difficulty.max_no_competitors; for (CompanyID cid = COMPANY_FIRST; cid < (CompanyID)max_slot && cid < MAX_COMPANIES; cid++) { if (Company::IsValidHumanID(cid)) max_slot++; } return slot < max_slot; } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_AIC_GAMELIST: { StringID text = STR_AI_CONFIG_NONE; if (GameConfig::GetConfig()->GetInfo() != NULL) { SetDParamStr(0, GameConfig::GetConfig()->GetInfo()->GetName()); text = STR_JUST_RAW_STRING; } DrawString(r.left + 10, r.right - 10, r.top + WD_MATRIX_TOP, text, (this->selected_slot == OWNER_DEITY) ? TC_WHITE : (IsEditable(OWNER_DEITY) ? TC_ORANGE : TC_SILVER)); break; } case WID_AIC_LIST: { int y = r.top; for (int i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < MAX_COMPANIES; i++) { StringID text; if ((_game_mode != GM_NORMAL && i == 0) || (_game_mode == GM_NORMAL && Company::IsValidHumanID(i))) { text = STR_AI_CONFIG_HUMAN_PLAYER; } else if (AIConfig::GetConfig((CompanyID)i)->GetInfo() != NULL) { SetDParamStr(0, AIConfig::GetConfig((CompanyID)i)->GetInfo()->GetName()); text = STR_JUST_RAW_STRING; } else { text = STR_AI_CONFIG_RANDOM_AI; } DrawString(r.left + 10, r.right - 10, y + WD_MATRIX_TOP, text, (this->selected_slot == i) ? TC_WHITE : (IsEditable((CompanyID)i) ? TC_ORANGE : TC_SILVER)); y += this->line_height; } break; } } } virtual void OnClick(Point pt, int widget, int click_count) { if (widget >= WID_AIC_TEXTFILE && widget < WID_AIC_TEXTFILE + TFT_END) { if (this->selected_slot == INVALID_COMPANY || GetConfig(this->selected_slot) == NULL) return; ShowScriptTextfileWindow((TextfileType)(widget - WID_AIC_TEXTFILE), this->selected_slot); return; } switch (widget) { case WID_AIC_DECREASE: case WID_AIC_INCREASE: { int new_value; if (widget == WID_AIC_DECREASE) { new_value = max(0, GetGameSettings().difficulty.max_no_competitors - 1); } else { new_value = min(MAX_COMPANIES - 1, GetGameSettings().difficulty.max_no_competitors + 1); } IConsoleSetSetting("difficulty.max_no_competitors", new_value); this->InvalidateData(); break; } case WID_AIC_GAMELIST: { this->selected_slot = OWNER_DEITY; this->InvalidateData(); if (click_count > 1 && this->selected_slot != INVALID_COMPANY) ShowAIListWindow((CompanyID)this->selected_slot); break; } case WID_AIC_LIST: { // Select a slot this->selected_slot = (CompanyID)this->vscroll->GetScrolledRowFromWidget(pt.y, this, widget, 0, this->line_height); this->InvalidateData(); if (click_count > 1 && this->selected_slot != INVALID_COMPANY) ShowAIListWindow((CompanyID)this->selected_slot); break; } case WID_AIC_MOVE_UP: if (IsEditable(this->selected_slot) && IsEditable((CompanyID)(this->selected_slot - 1))) { Swap(GetGameSettings().ai_config[this->selected_slot], GetGameSettings().ai_config[this->selected_slot - 1]); this->selected_slot--; this->vscroll->ScrollTowards(this->selected_slot); this->InvalidateData(); } break; case WID_AIC_MOVE_DOWN: if (IsEditable(this->selected_slot) && IsEditable((CompanyID)(this->selected_slot + 1))) { Swap(GetGameSettings().ai_config[this->selected_slot], GetGameSettings().ai_config[this->selected_slot + 1]); this->selected_slot++; this->vscroll->ScrollTowards(this->selected_slot); this->InvalidateData(); } break; case WID_AIC_CHANGE: // choose other AI ShowAIListWindow((CompanyID)this->selected_slot); break; case WID_AIC_CONFIGURE: // change the settings for an AI ShowAISettingsWindow((CompanyID)this->selected_slot); break; case WID_AIC_CLOSE: delete this; break; case WID_AIC_CONTENT_DOWNLOAD: if (!_network_available) { ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR); } else { #if defined(ENABLE_NETWORK) ShowNetworkContentListWindow(NULL, CONTENT_TYPE_AI); _network_content_client.RequestContentList(CONTENT_TYPE_GAME); #endif } break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!IsEditable(this->selected_slot)) { this->selected_slot = INVALID_COMPANY; } if (!gui_scope) return; this->SetWidgetDisabledState(WID_AIC_DECREASE, GetGameSettings().difficulty.max_no_competitors == 0); this->SetWidgetDisabledState(WID_AIC_INCREASE, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES - 1); this->SetWidgetDisabledState(WID_AIC_CHANGE, this->selected_slot == INVALID_COMPANY); this->SetWidgetDisabledState(WID_AIC_CONFIGURE, this->selected_slot == INVALID_COMPANY || GetConfig(this->selected_slot)->GetConfigList()->size() == 0); this->SetWidgetDisabledState(WID_AIC_MOVE_UP, this->selected_slot == OWNER_DEITY || this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot - 1))); this->SetWidgetDisabledState(WID_AIC_MOVE_DOWN, this->selected_slot == OWNER_DEITY || this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot + 1))); for (TextfileType tft = TFT_BEGIN; tft < TFT_END; tft++) { this->SetWidgetDisabledState(WID_AIC_TEXTFILE + tft, this->selected_slot == INVALID_COMPANY || (GetConfig(this->selected_slot)->GetTextfile(tft, this->selected_slot) == NULL)); } } }; /** Open the AI config window. */ void ShowAIConfigWindow() { DeleteWindowByClass(WC_GAME_OPTIONS); new AIConfigWindow(); } /** * Set the widget colour of a button based on the * state of the script. (dead or alive) * @param button the button to update. * @param dead true if the script is dead, otherwise false. * @param paused true if the script is paused, otherwise false. * @return true if the colour was changed and the window need to be marked as dirty. */ static bool SetScriptButtonColour(NWidgetCore &button, bool dead, bool paused) { /* Dead scripts are indicated with red background and * paused scripts are indicated with yellow background. */ Colours colour = dead ? COLOUR_RED : (paused ? COLOUR_YELLOW : COLOUR_GREY); if (button.colour != colour) { button.colour = colour; return true; } return false; } /** * Window with everything an AI prints via ScriptLog. */ struct AIDebugWindow : public Window { static const int top_offset; ///< Offset of the text at the top of the WID_AID_LOG_PANEL. static const int bottom_offset; ///< Offset of the text at the bottom of the WID_AID_LOG_PANEL. static const unsigned int MAX_BREAK_STR_STRING_LENGTH = 256; ///< Maximum length of the break string. static CompanyID ai_debug_company; ///< The AI that is (was last) being debugged. int redraw_timer; ///< Timer for redrawing the window, otherwise it'll happen every tick. int last_vscroll_pos; ///< Last position of the scrolling. bool autoscroll; ///< Whether automatically scrolling should be enabled or not. bool show_break_box; ///< Whether the break/debug box is visible. static bool break_check_enabled; ///< Stop an AI when it prints a matching string static char break_string[MAX_BREAK_STR_STRING_LENGTH]; ///< The string to match to the AI output QueryString break_editbox; ///< Break editbox static StringFilter break_string_filter; ///< Log filter for break. static bool case_sensitive_break_check; ///< Is the matching done case-sensitive int highlight_row; ///< The output row that matches the given string, or -1 Scrollbar *vscroll; ///< Cache of the vertical scrollbar. ScriptLog::LogData *GetLogPointer() const { if (ai_debug_company == OWNER_DEITY) return (ScriptLog::LogData *)Game::GetInstance()->GetLogPointer(); return (ScriptLog::LogData *)Company::Get(ai_debug_company)->ai_instance->GetLogPointer(); } /** * Check whether the currently selected AI/GS is dead. * @return true if dead. */ bool IsDead() const { if (ai_debug_company == OWNER_DEITY) { GameInstance *game = Game::GetInstance(); return game == NULL || game->IsDead(); } return !Company::IsValidAiID(ai_debug_company) || Company::Get(ai_debug_company)->ai_instance->IsDead(); } /** * Check whether a company is a valid AI company or GS. * @param company Company to check for validity. * @return true if company is valid for debugging. */ bool IsValidDebugCompany(CompanyID company) const { switch (company) { case INVALID_COMPANY: return false; case OWNER_DEITY: return Game::GetInstance() != NULL; default: return Company::IsValidAiID(company); } } /** * Ensure that \c ai_debug_company refers to a valid AI company or GS, or is set to #INVALID_COMPANY. * If no valid company is selected, it selects the first valid AI or GS if any. */ void SelectValidDebugCompany() { /* Check if the currently selected company is still active. */ if (this->IsValidDebugCompany(ai_debug_company)) return; ai_debug_company = INVALID_COMPANY; const Company *c; FOR_ALL_COMPANIES(c) { if (c->is_ai) { ChangeToAI(c->index); return; } } /* If no AI is available, see if there is a game script. */ if (Game::GetInstance() != NULL) ChangeToAI(OWNER_DEITY); } /** * Constructor for the window. * @param desc The description of the window. * @param number The window number (actually unused). */ AIDebugWindow(const WindowDesc *desc, WindowNumber number) : break_editbox(MAX_BREAK_STR_STRING_LENGTH) { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_AID_SCROLLBAR); this->show_break_box = _settings_client.gui.ai_developer_tools; this->GetWidget(WID_AID_BREAK_STRING_WIDGETS)->SetDisplayedPlane(this->show_break_box ? 0 : SZSP_HORIZONTAL); this->FinishInitNested(desc, number); if (!this->show_break_box) break_check_enabled = false; this->last_vscroll_pos = 0; this->autoscroll = true; this->highlight_row = -1; this->querystrings[WID_AID_BREAK_STR_EDIT_BOX] = &this->break_editbox; /* Restore the break string value from static variable */ this->break_editbox.text.Assign(this->break_string); this->SelectValidDebugCompany(); this->InvalidateData(-1); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget == WID_AID_LOG_PANEL) { resize->height = FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL; size->height = 14 * resize->height + this->top_offset + this->bottom_offset; } } virtual void OnPaint() { this->SelectValidDebugCompany(); /* Draw standard stuff */ this->DrawWidgets(); if (this->IsShaded()) return; // Don't draw anything when the window is shaded. bool dirty = false; /* Paint the company icons */ for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { NWidgetCore *button = this->GetWidget(i + WID_AID_COMPANY_BUTTON_START); bool valid = Company::IsValidAiID(i); /* Check whether the validity of the company changed */ dirty |= (button->IsDisabled() == valid); /* Mark dead/paused AIs by setting the background colour. */ bool dead = valid && Company::Get(i)->ai_instance->IsDead(); bool paused = valid && Company::Get(i)->ai_instance->IsPaused(); /* Re-paint if the button was updated. * (note that it is intentional that SetScriptButtonColour is always called) */ dirty |= SetScriptButtonColour(*button, dead, paused); /* Draw company icon only for valid AI companies */ if (!valid) continue; byte offset = (i == ai_debug_company) ? 1 : 0; DrawCompanyIcon(i, button->pos_x + button->current_x / 2 - 7 + offset, this->GetWidget(WID_AID_COMPANY_BUTTON_START + i)->pos_y + 2 + offset); } /* Set button colour for Game Script. */ GameInstance *game = Game::GetInstance(); bool valid = game != NULL; bool dead = valid && game->IsDead(); bool paused = valid && game->IsPaused(); NWidgetCore *button = this->GetWidget(WID_AID_SCRIPT_GAME); dirty |= (button->IsDisabled() == valid) || SetScriptButtonColour(*button, dead, paused); if (dirty) this->InvalidateData(-1); /* If there are no active companies, don't display anything else. */ if (ai_debug_company == INVALID_COMPANY) return; ScriptLog::LogData *log = this->GetLogPointer(); int scroll_count = (log == NULL) ? 0 : log->used; if (this->vscroll->GetCount() != scroll_count) { this->vscroll->SetCount(scroll_count); /* We need a repaint */ this->SetWidgetDirty(WID_AID_SCROLLBAR); } if (log == NULL) return; /* Detect when the user scrolls the window. Enable autoscroll when the * bottom-most line becomes visible. */ if (this->last_vscroll_pos != this->vscroll->GetPosition()) { this->autoscroll = this->vscroll->GetPosition() >= log->used - this->vscroll->GetCapacity(); } if (this->autoscroll) { int scroll_pos = max(0, log->used - this->vscroll->GetCapacity()); if (scroll_pos != this->vscroll->GetPosition()) { this->vscroll->SetPosition(scroll_pos); /* We need a repaint */ this->SetWidgetDirty(WID_AID_SCROLLBAR); this->SetWidgetDirty(WID_AID_LOG_PANEL); } } this->last_vscroll_pos = this->vscroll->GetPosition(); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_AID_NAME_TEXT: if (ai_debug_company == OWNER_DEITY) { const GameInfo *info = Game::GetInfo(); assert(info != NULL); SetDParam(0, STR_AI_DEBUG_NAME_AND_VERSION); SetDParamStr(1, info->GetName()); SetDParam(2, info->GetVersion()); } else if (ai_debug_company == INVALID_COMPANY || !Company::IsValidAiID(ai_debug_company)) { SetDParam(0, STR_EMPTY); } else { const AIInfo *info = Company::Get(ai_debug_company)->ai_info; assert(info != NULL); SetDParam(0, STR_AI_DEBUG_NAME_AND_VERSION); SetDParamStr(1, info->GetName()); SetDParam(2, info->GetVersion()); } break; } } virtual void DrawWidget(const Rect &r, int widget) const { if (ai_debug_company == INVALID_COMPANY) return; switch (widget) { case WID_AID_LOG_PANEL: { ScriptLog::LogData *log = this->GetLogPointer(); if (log == NULL) return; int y = this->top_offset; for (int i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < log->used; i++) { int pos = (i + log->pos + 1 - log->used + log->count) % log->count; if (log->lines[pos] == NULL) break; TextColour colour; switch (log->type[pos]) { case ScriptLog::LOG_SQ_INFO: colour = TC_BLACK; break; case ScriptLog::LOG_SQ_ERROR: colour = TC_RED; break; case ScriptLog::LOG_INFO: colour = TC_BLACK; break; case ScriptLog::LOG_WARNING: colour = TC_YELLOW; break; case ScriptLog::LOG_ERROR: colour = TC_RED; break; default: colour = TC_BLACK; break; } /* Check if the current line should be highlighted */ if (pos == this->highlight_row) { GfxFillRect(r.left + 1, r.top + y, r.right - 1, r.top + y + this->resize.step_height - WD_PAR_VSEP_NORMAL, PC_BLACK); if (colour == TC_BLACK) colour = TC_WHITE; // Make black text readable by inverting it to white. } DrawString(r.left + 7, r.right - 7, r.top + y, log->lines[pos], colour, SA_LEFT | SA_FORCE); y += this->resize.step_height; } break; } } } /** * Change all settings to select another AI. * @param show_ai The new AI to show. */ void ChangeToAI(CompanyID show_ai) { if (!this->IsValidDebugCompany(show_ai)) return; ai_debug_company = show_ai; this->highlight_row = -1; // The highlight of one AI make little sense for another AI. /* Close AI settings window to prevent confusion */ DeleteWindowByClass(WC_AI_SETTINGS); this->InvalidateData(-1); this->autoscroll = true; this->last_vscroll_pos = this->vscroll->GetPosition(); } virtual void OnClick(Point pt, int widget, int click_count) { /* Also called for hotkeys, so check for disabledness */ if (this->IsWidgetDisabled(widget)) return; /* Check which button is clicked */ if (IsInsideMM(widget, WID_AID_COMPANY_BUTTON_START, WID_AID_COMPANY_BUTTON_END + 1)) { ChangeToAI((CompanyID)(widget - WID_AID_COMPANY_BUTTON_START)); } switch (widget) { case WID_AID_SCRIPT_GAME: ChangeToAI(OWNER_DEITY); break; case WID_AID_RELOAD_TOGGLE: if (ai_debug_company == OWNER_DEITY) break; /* First kill the company of the AI, then start a new one. This should start the current AI again */ DoCommandP(0, 2 | ai_debug_company << 16, CRR_MANUAL, CMD_COMPANY_CTRL); DoCommandP(0, 1 | ai_debug_company << 16, 0, CMD_COMPANY_CTRL); break; case WID_AID_SETTINGS: ShowAISettingsWindow(ai_debug_company); break; case WID_AID_BREAK_STR_ON_OFF_BTN: this->break_check_enabled = !this->break_check_enabled; this->InvalidateData(-1); break; case WID_AID_MATCH_CASE_BTN: this->case_sensitive_break_check = !this->case_sensitive_break_check; this->InvalidateData(-1); break; case WID_AID_CONTINUE_BTN: /* Unpause current AI / game script and mark the corresponding script button dirty. */ if (!this->IsDead()) { if (ai_debug_company == OWNER_DEITY) { Game::Unpause(); } else { AI::Unpause(ai_debug_company); } } /* If the last AI/Game Script is unpaused, unpause the game too. */ if ((_pause_mode & PM_PAUSED_NORMAL) == PM_PAUSED_NORMAL) { bool all_unpaused = !Game::IsPaused(); if (all_unpaused) { Company *c; FOR_ALL_COMPANIES(c) { if (c->is_ai && AI::IsPaused(c->index)) { all_unpaused = false; break; } } if (all_unpaused) { /* All scripts have been unpaused => unpause the game. */ DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); } } } this->highlight_row = -1; this->InvalidateData(-1); break; } } virtual EventState OnKeyPress(WChar key, uint16 keycode) { EventState state = ES_NOT_HANDLED; int num = CheckHotkeyMatch(aidebug_hotkeys, keycode, this); if (num != -1) { if (this->show_break_box && num == WID_AID_BREAK_STR_EDIT_BOX) { this->SetFocusedWidget(WID_AID_BREAK_STR_EDIT_BOX); SetFocusedWindow(this); state = ES_HANDLED; } else if (this->show_break_box || num < WID_AID_BREAK_STRING_WIDGETS) { this->OnClick(Point(), num, 1); state = ES_HANDLED; } } return state; } virtual void OnEditboxChanged(int wid) { if (wid == WID_AID_BREAK_STR_EDIT_BOX) { /* Save the current string to static member so it can be restored next time the window is opened. */ strecpy(this->break_string, this->break_editbox.text.buf, lastof(this->break_string)); break_string_filter.SetFilterTerm(this->break_string); } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * This is the company ID of the AI/GS which wrote a new log message, or -1 in other cases. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { /* If the log message is related to the active company tab, check the break string. * This needs to be done in gameloop-scope, so the AI is suspended immediately. */ if (!gui_scope && data == ai_debug_company && this->IsValidDebugCompany(ai_debug_company) && this->break_check_enabled && !this->break_string_filter.IsEmpty()) { /* Get the log instance of the active company */ ScriptLog::LogData *log = this->GetLogPointer(); if (log != NULL) { this->break_string_filter.ResetState(); this->break_string_filter.AddLine(log->lines[log->pos]); if (this->break_string_filter.GetState()) { /* Pause execution of script. */ if (!this->IsDead()) { if (ai_debug_company == OWNER_DEITY) { Game::Pause(); } else { AI::Pause(ai_debug_company); } } /* Pause the game. */ if ((_pause_mode & PM_PAUSED_NORMAL) == PM_UNPAUSED) { DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); } /* Highlight row that matched */ this->highlight_row = log->pos; } } } if (!gui_scope) return; this->SelectValidDebugCompany(); ScriptLog::LogData *log = ai_debug_company != INVALID_COMPANY ? this->GetLogPointer() : NULL; this->vscroll->SetCount((log == NULL) ? 0 : log->used); /* Update company buttons */ for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) { this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i)); this->SetWidgetLoweredState(i + WID_AID_COMPANY_BUTTON_START, ai_debug_company == i); } this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL); this->SetWidgetLoweredState(WID_AID_SCRIPT_GAME, ai_debug_company == OWNER_DEITY); this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled); this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check); this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY); this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY); this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, ai_debug_company == INVALID_COMPANY || (ai_debug_company == OWNER_DEITY ? !Game::IsPaused() : !AI::IsPaused(ai_debug_company))); } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_AID_LOG_PANEL); } static Hotkey aidebug_hotkeys[]; }; const int AIDebugWindow::top_offset = WD_FRAMERECT_TOP + 2; const int AIDebugWindow::bottom_offset = WD_FRAMERECT_BOTTOM; CompanyID AIDebugWindow::ai_debug_company = INVALID_COMPANY; char AIDebugWindow::break_string[MAX_BREAK_STR_STRING_LENGTH] = ""; bool AIDebugWindow::break_check_enabled = true; bool AIDebugWindow::case_sensitive_break_check = false; StringFilter AIDebugWindow::break_string_filter(&AIDebugWindow::case_sensitive_break_check); /** Make a number of rows with buttons for each company for the AI debug window. */ NWidgetBase *MakeCompanyButtonRowsAIDebug(int *biggest_index) { return MakeCompanyButtonRows(biggest_index, WID_AID_COMPANY_BUTTON_START, WID_AID_COMPANY_BUTTON_END, 8, STR_AI_DEBUG_SELECT_AI_TOOLTIP); } Hotkey AIDebugWindow::aidebug_hotkeys[] = { Hotkey('1', "company_1", WID_AID_COMPANY_BUTTON_START), Hotkey('2', "company_2", WID_AID_COMPANY_BUTTON_START + 1), Hotkey('3', "company_3", WID_AID_COMPANY_BUTTON_START + 2), Hotkey('4', "company_4", WID_AID_COMPANY_BUTTON_START + 3), Hotkey('5', "company_5", WID_AID_COMPANY_BUTTON_START + 4), Hotkey('6', "company_6", WID_AID_COMPANY_BUTTON_START + 5), Hotkey('7', "company_7", WID_AID_COMPANY_BUTTON_START + 6), Hotkey('8', "company_8", WID_AID_COMPANY_BUTTON_START + 7), Hotkey('9', "company_9", WID_AID_COMPANY_BUTTON_START + 8), Hotkey((uint16)0, "company_10", WID_AID_COMPANY_BUTTON_START + 9), Hotkey((uint16)0, "company_11", WID_AID_COMPANY_BUTTON_START + 10), Hotkey((uint16)0, "company_12", WID_AID_COMPANY_BUTTON_START + 11), Hotkey((uint16)0, "company_13", WID_AID_COMPANY_BUTTON_START + 12), Hotkey((uint16)0, "company_14", WID_AID_COMPANY_BUTTON_START + 13), Hotkey((uint16)0, "company_15", WID_AID_COMPANY_BUTTON_START + 14), Hotkey('S', "settings", WID_AID_SETTINGS), Hotkey('0', "game_script", WID_AID_SCRIPT_GAME), Hotkey((uint16)0, "reload", WID_AID_RELOAD_TOGGLE), Hotkey('B', "break_toggle", WID_AID_BREAK_STR_ON_OFF_BTN), Hotkey('F', "break_string", WID_AID_BREAK_STR_EDIT_BOX), Hotkey('C', "match_case", WID_AID_MATCH_CASE_BTN), Hotkey(WKC_RETURN, "continue", WID_AID_CONTINUE_BTN), HOTKEY_LIST_END(AIDebugWindow) }; Hotkey *_aidebug_hotkeys = AIDebugWindow::aidebug_hotkeys; /** Widgets for the AI debug window. */ static const NWidgetPart _nested_ai_debug_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_AI_DEBUG, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_AID_VIEW), NWidgetFunction(MakeCompanyButtonRowsAIDebug), SetPadding(0, 2, 1, 2), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AID_SCRIPT_GAME), SetMinimalSize(100, 20), SetResize(1, 0), SetDataTip(STR_AI_GAME_SCRIPT, STR_AI_GAME_SCRIPT_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AID_NAME_TEXT), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING, STR_AI_DEBUG_NAME_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_AID_SETTINGS), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_AID_RELOAD_TOGGLE), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_RELOAD, STR_AI_DEBUG_RELOAD_TOOLTIP), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), /* Log panel */ NWidget(WWT_PANEL, COLOUR_GREY, WID_AID_LOG_PANEL), SetMinimalSize(287, 180), SetResize(1, 1), SetScrollbar(WID_AID_SCROLLBAR), EndContainer(), /* Break string widgets */ NWidget(NWID_SELECTION, INVALID_COLOUR, WID_AID_BREAK_STRING_WIDGETS), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN_2, COLOUR_GREY, WID_AID_BREAK_STR_ON_OFF_BTN), SetFill(0, 1), SetDataTip(SPR_FLAG_VEH_STOPPED, STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), NWidget(WWT_LABEL, COLOUR_GREY), SetPadding(2, 2, 2, 4), SetDataTip(STR_AI_DEBUG_BREAK_ON_LABEL, 0x0), NWidget(WWT_EDITBOX, COLOUR_GREY, WID_AID_BREAK_STR_EDIT_BOX), SetFill(1, 1), SetResize(1, 0), SetPadding(2, 2, 2, 2), SetDataTip(STR_AI_DEBUG_BREAK_STR_OSKTITLE, STR_AI_DEBUG_BREAK_STR_TOOLTIP), EndContainer(), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AID_MATCH_CASE_BTN), SetMinimalSize(100, 0), SetFill(0, 1), SetDataTip(STR_AI_DEBUG_MATCH_CASE, STR_AI_DEBUG_MATCH_CASE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_AID_CONTINUE_BTN), SetMinimalSize(100, 0), SetFill(0, 1), SetDataTip(STR_AI_DEBUG_CONTINUE, STR_AI_DEBUG_CONTINUE_TOOLTIP), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_AID_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), }; /** Window definition for the AI debug window. */ static const WindowDesc _ai_debug_desc( WDP_AUTO, 600, 450, WC_AI_DEBUG, WC_NONE, 0, _nested_ai_debug_widgets, lengthof(_nested_ai_debug_widgets) ); /** * Open the AI debug window and select the given company. * @param show_company Display debug information about this AI company. */ Window *ShowAIDebugWindow(CompanyID show_company) { if (!_networking || _network_server) { AIDebugWindow *w = (AIDebugWindow *)BringWindowToFrontById(WC_AI_DEBUG, 0); if (w == NULL) w = new AIDebugWindow(&_ai_debug_desc, 0); if (show_company != INVALID_COMPANY) w->ChangeToAI(show_company); return w; } else { ShowErrorMessage(STR_ERROR_AI_DEBUG_SERVER_ONLY, INVALID_STRING_ID, WL_INFO); } return NULL; } /** * Handler for global AI debug window hotkeys. */ EventState AIDebugGlobalHotkeys(WChar key, uint16 keycode) { int num = CheckHotkeyMatch(_aidebug_hotkeys, keycode, NULL, true); if (num == -1) return ES_NOT_HANDLED; Window *w = ShowAIDebugWindow(INVALID_COMPANY); if (w == NULL) return ES_NOT_HANDLED; return w->OnKeyPress(key, keycode); } /** * Reset the AI windows to their initial state. */ void InitializeAIGui() { AIDebugWindow::ai_debug_company = INVALID_COMPANY; } /** Open the AI debug window if one of the AI scripts has crashed. */ void ShowAIDebugWindowIfAIError() { /* Network clients can't debug AIs. */ if (_networking && !_network_server) return; Company *c; FOR_ALL_COMPANIES(c) { if (c->is_ai && c->ai_instance->IsDead()) { ShowAIDebugWindow(c->index); break; } } GameInstance *g = Game::GetGameInstance(); if (g != NULL && g->IsDead()) { ShowAIDebugWindow(OWNER_DEITY); } } openttd-1.3.3/src/ai/ai_instance.cpp0000644000000000000000000002320712246102573016040 0ustar rootroot/* $Id: ai_instance.cpp 25241 2013-05-13 19:22:08Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_instance.cpp Implementation of AIInstance. */ #include "../stdafx.h" #include "../debug.h" #include "../error.h" #include "../script/squirrel_class.hpp" #include "ai_config.hpp" #include "ai_gui.hpp" #include "ai.hpp" #include "../script/script_storage.hpp" #include "ai_info.hpp" #include "ai_instance.hpp" /* Manually include the Text glue. */ #include "../script/api/template/template_text.hpp.sq" /* Convert all AI related classes to Squirrel data. * Note: this line is a marker in squirrel_export.sh. Do not change! */ #include "../script/api/ai/ai_accounting.hpp.sq" #include "../script/api/ai/ai_airport.hpp.sq" #include "../script/api/ai/ai_base.hpp.sq" #include "../script/api/ai/ai_basestation.hpp.sq" #include "../script/api/ai/ai_bridge.hpp.sq" #include "../script/api/ai/ai_bridgelist.hpp.sq" #include "../script/api/ai/ai_cargo.hpp.sq" #include "../script/api/ai/ai_cargolist.hpp.sq" #include "../script/api/ai/ai_company.hpp.sq" #include "../script/api/ai/ai_controller.hpp.sq" #include "../script/api/ai/ai_date.hpp.sq" #include "../script/api/ai/ai_depotlist.hpp.sq" #include "../script/api/ai/ai_engine.hpp.sq" #include "../script/api/ai/ai_enginelist.hpp.sq" #include "../script/api/ai/ai_error.hpp.sq" #include "../script/api/ai/ai_event.hpp.sq" #include "../script/api/ai/ai_event_types.hpp.sq" #include "../script/api/ai/ai_execmode.hpp.sq" #include "../script/api/ai/ai_gamesettings.hpp.sq" #include "../script/api/ai/ai_group.hpp.sq" #include "../script/api/ai/ai_grouplist.hpp.sq" #include "../script/api/ai/ai_industry.hpp.sq" #include "../script/api/ai/ai_industrylist.hpp.sq" #include "../script/api/ai/ai_industrytype.hpp.sq" #include "../script/api/ai/ai_industrytypelist.hpp.sq" #include "../script/api/ai/ai_infrastructure.hpp.sq" #include "../script/api/ai/ai_list.hpp.sq" #include "../script/api/ai/ai_log.hpp.sq" #include "../script/api/ai/ai_map.hpp.sq" #include "../script/api/ai/ai_marine.hpp.sq" #include "../script/api/ai/ai_order.hpp.sq" #include "../script/api/ai/ai_rail.hpp.sq" #include "../script/api/ai/ai_railtypelist.hpp.sq" #include "../script/api/ai/ai_road.hpp.sq" #include "../script/api/ai/ai_sign.hpp.sq" #include "../script/api/ai/ai_signlist.hpp.sq" #include "../script/api/ai/ai_station.hpp.sq" #include "../script/api/ai/ai_stationlist.hpp.sq" #include "../script/api/ai/ai_subsidy.hpp.sq" #include "../script/api/ai/ai_subsidylist.hpp.sq" #include "../script/api/ai/ai_testmode.hpp.sq" #include "../script/api/ai/ai_tile.hpp.sq" #include "../script/api/ai/ai_tilelist.hpp.sq" #include "../script/api/ai/ai_town.hpp.sq" #include "../script/api/ai/ai_townlist.hpp.sq" #include "../script/api/ai/ai_tunnel.hpp.sq" #include "../script/api/ai/ai_vehicle.hpp.sq" #include "../script/api/ai/ai_vehiclelist.hpp.sq" #include "../script/api/ai/ai_waypoint.hpp.sq" #include "../script/api/ai/ai_waypointlist.hpp.sq" #include "../company_base.h" #include "../company_func.h" AIInstance::AIInstance() : ScriptInstance("AI") {} void AIInstance::Initialize(AIInfo *info) { this->versionAPI = info->GetAPIVersion(); /* Register the AIController (including the "import" command) */ SQAIController_Register(this->engine); ScriptInstance::Initialize(info->GetMainScript(), info->GetInstanceName(), _current_company); } void AIInstance::RegisterAPI() { ScriptInstance::RegisterAPI(); /* Register all classes */ SQAIList_Register(this->engine); SQAIAccounting_Register(this->engine); SQAIAirport_Register(this->engine); SQAIBase_Register(this->engine); SQAIBaseStation_Register(this->engine); SQAIBridge_Register(this->engine); SQAIBridgeList_Register(this->engine); SQAIBridgeList_Length_Register(this->engine); SQAICargo_Register(this->engine); SQAICargoList_Register(this->engine); SQAICargoList_IndustryAccepting_Register(this->engine); SQAICargoList_IndustryProducing_Register(this->engine); SQAICargoList_StationAccepting_Register(this->engine); SQAICompany_Register(this->engine); SQAIDate_Register(this->engine); SQAIDepotList_Register(this->engine); SQAIEngine_Register(this->engine); SQAIEngineList_Register(this->engine); SQAIError_Register(this->engine); SQAIEvent_Register(this->engine); SQAIEventAircraftDestTooFar_Register(this->engine); SQAIEventCompanyAskMerger_Register(this->engine); SQAIEventCompanyBankrupt_Register(this->engine); SQAIEventCompanyInTrouble_Register(this->engine); SQAIEventCompanyMerger_Register(this->engine); SQAIEventCompanyNew_Register(this->engine); SQAIEventCompanyTown_Register(this->engine); SQAIEventController_Register(this->engine); SQAIEventDisasterZeppelinerCleared_Register(this->engine); SQAIEventDisasterZeppelinerCrashed_Register(this->engine); SQAIEventEngineAvailable_Register(this->engine); SQAIEventEnginePreview_Register(this->engine); SQAIEventExclusiveTransportRights_Register(this->engine); SQAIEventIndustryClose_Register(this->engine); SQAIEventIndustryOpen_Register(this->engine); SQAIEventRoadReconstruction_Register(this->engine); SQAIEventStationFirstVehicle_Register(this->engine); SQAIEventSubsidyAwarded_Register(this->engine); SQAIEventSubsidyExpired_Register(this->engine); SQAIEventSubsidyOffer_Register(this->engine); SQAIEventSubsidyOfferExpired_Register(this->engine); SQAIEventTownFounded_Register(this->engine); SQAIEventVehicleCrashed_Register(this->engine); SQAIEventVehicleLost_Register(this->engine); SQAIEventVehicleUnprofitable_Register(this->engine); SQAIEventVehicleWaitingInDepot_Register(this->engine); SQAIExecMode_Register(this->engine); SQAIGameSettings_Register(this->engine); SQAIGroup_Register(this->engine); SQAIGroupList_Register(this->engine); SQAIIndustry_Register(this->engine); SQAIIndustryList_Register(this->engine); SQAIIndustryList_CargoAccepting_Register(this->engine); SQAIIndustryList_CargoProducing_Register(this->engine); SQAIIndustryType_Register(this->engine); SQAIIndustryTypeList_Register(this->engine); SQAIInfrastructure_Register(this->engine); SQAILog_Register(this->engine); SQAIMap_Register(this->engine); SQAIMarine_Register(this->engine); SQAIOrder_Register(this->engine); SQAIRail_Register(this->engine); SQAIRailTypeList_Register(this->engine); SQAIRoad_Register(this->engine); SQAISign_Register(this->engine); SQAISignList_Register(this->engine); SQAIStation_Register(this->engine); SQAIStationList_Register(this->engine); SQAIStationList_Vehicle_Register(this->engine); SQAISubsidy_Register(this->engine); SQAISubsidyList_Register(this->engine); SQAITestMode_Register(this->engine); SQAITile_Register(this->engine); SQAITileList_Register(this->engine); SQAITileList_IndustryAccepting_Register(this->engine); SQAITileList_IndustryProducing_Register(this->engine); SQAITileList_StationType_Register(this->engine); SQAITown_Register(this->engine); SQAITownEffectList_Register(this->engine); SQAITownList_Register(this->engine); SQAITunnel_Register(this->engine); SQAIVehicle_Register(this->engine); SQAIVehicleList_Register(this->engine); SQAIVehicleList_DefaultGroup_Register(this->engine); SQAIVehicleList_Depot_Register(this->engine); SQAIVehicleList_Group_Register(this->engine); SQAIVehicleList_SharedOrders_Register(this->engine); SQAIVehicleList_Station_Register(this->engine); SQAIWaypoint_Register(this->engine); SQAIWaypointList_Register(this->engine); SQAIWaypointList_Vehicle_Register(this->engine); if (!this->LoadCompatibilityScripts(this->versionAPI, AI_DIR)) this->Died(); } void AIInstance::Died() { ScriptInstance::Died(); ShowAIDebugWindow(_current_company); const AIInfo *info = AIConfig::GetConfig(_current_company, AIConfig::SSS_FORCE_GAME)->GetInfo(); if (info != NULL) { ShowErrorMessage(STR_ERROR_AI_PLEASE_REPORT_CRASH, INVALID_STRING_ID, WL_WARNING); if (info->GetURL() != NULL) { ScriptLog::Info("Please report the error to the following URL:"); ScriptLog::Info(info->GetURL()); } } } void AIInstance::LoadDummyScript() { extern void Script_CreateDummy(HSQUIRRELVM vm, StringID string, const char *type); Script_CreateDummy(this->engine->GetVM(), STR_ERROR_AI_NO_AI_FOUND, "AI"); } int AIInstance::GetSetting(const char *name) { return AIConfig::GetConfig(_current_company)->GetSetting(name); } ScriptInfo *AIInstance::FindLibrary(const char *library, int version) { return (ScriptInfo *)AI::FindLibrary(library, version); } /** * DoCommand callback function for all commands executed by AIs. * @param result The result of the command. * @param tile The tile on which the command was executed. * @param p1 p1 as given to DoCommandPInternal. * @param p2 p2 as given to DoCommandPInternal. */ void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { /* * The company might not exist anymore. Check for this. * The command checks are not useful since this callback * is also called when the command fails, which is does * when the company does not exist anymore. */ const Company *c = Company::GetIfValid(_current_company); if (c == NULL || c->ai_instance == NULL) return; c->ai_instance->DoCommandCallback(result, tile, p1, p2); c->ai_instance->Continue(); } CommandCallback *AIInstance::GetDoCommandCallback() { return &CcAI; } openttd-1.3.3/src/ai/ai_scanner.cpp0000644000000000000000000001176012246102573015666 0ustar rootroot/* $Id: ai_scanner.cpp 23740 2012-01-03 21:32:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_scanner.cpp allows scanning AI scripts */ #include "../stdafx.h" #include "../debug.h" #include "../network/network.h" #include "../core/random_func.hpp" #include "../script/squirrel_class.hpp" #include "ai_info.hpp" #include "ai_scanner.hpp" AIScannerInfo::AIScannerInfo() : ScriptScanner(), info_dummy(NULL) { } void AIScannerInfo::Initialize() { ScriptScanner::Initialize("AIScanner"); /* Create the dummy AI */ free(this->main_script); this->main_script = strdup("%_dummy"); extern void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir); Script_CreateDummyInfo(this->engine->GetVM(), "AI", "ai"); } void AIScannerInfo::SetDummyAI(class AIInfo *info) { this->info_dummy = info; } AIScannerInfo::~AIScannerInfo() { delete this->info_dummy; } void AIScannerInfo::GetScriptName(ScriptInfo *info, char *name, int len) { snprintf(name, len, "%s", info->GetName()); } void AIScannerInfo::RegisterAPI(class Squirrel *engine) { AIInfo::RegisterAPI(engine); } AIInfo *AIScannerInfo::SelectRandomAI() const { uint num_random_ais = 0; for (ScriptInfoList::const_iterator it = this->info_single_list.begin(); it != this->info_single_list.end(); it++) { AIInfo *i = static_cast((*it).second); if (i->UseAsRandomAI()) num_random_ais++; } if (num_random_ais == 0) { DEBUG(script, 0, "No suitable AI found, loading 'dummy' AI."); return this->info_dummy; } /* Find a random AI */ uint pos; if (_networking) { pos = InteractiveRandomRange(num_random_ais); } else { pos = RandomRange(num_random_ais); } /* Find the Nth item from the array */ ScriptInfoList::const_iterator it = this->info_single_list.begin(); #define GetAIInfo(it) static_cast((*it).second) while (!GetAIInfo(it)->UseAsRandomAI()) it++; for (; pos > 0; pos--) { it++; while (!GetAIInfo(it)->UseAsRandomAI()) it++; } return GetAIInfo(it); #undef GetAIInfo } AIInfo *AIScannerInfo::FindInfo(const char *nameParam, int versionParam, bool force_exact_match) { if (this->info_list.size() == 0) return NULL; if (nameParam == NULL) return NULL; char ai_name[1024]; ttd_strlcpy(ai_name, nameParam, sizeof(ai_name)); strtolower(ai_name); AIInfo *info = NULL; int version = -1; if (versionParam == -1) { /* We want to load the latest version of this AI; so find it */ if (this->info_single_list.find(ai_name) != this->info_single_list.end()) return static_cast(this->info_single_list[ai_name]); /* If we didn't find a match AI, maybe the user included a version */ char *e = strrchr(ai_name, '.'); if (e == NULL) return NULL; *e = '\0'; e++; versionParam = atoi(e); /* FALL THROUGH, like we were calling this function with a version. */ } if (force_exact_match) { /* Try to find a direct 'name.version' match */ char ai_name_tmp[1024]; snprintf(ai_name_tmp, sizeof(ai_name_tmp), "%s.%d", ai_name, versionParam); strtolower(ai_name_tmp); if (this->info_list.find(ai_name_tmp) != this->info_list.end()) return static_cast(this->info_list[ai_name_tmp]); } /* See if there is a compatible AI which goes by that name, with the highest * version which allows loading the requested version */ ScriptInfoList::iterator it = this->info_list.begin(); for (; it != this->info_list.end(); it++) { AIInfo *i = static_cast((*it).second); if (strcasecmp(ai_name, i->GetName()) == 0 && i->CanLoadFromVersion(versionParam) && (version == -1 || i->GetVersion() > version)) { version = (*it).second->GetVersion(); info = i; } } return info; } void AIScannerLibrary::Initialize() { ScriptScanner::Initialize("AIScanner"); } void AIScannerLibrary::GetScriptName(ScriptInfo *info, char *name, int len) { AILibrary *library = static_cast(info); snprintf(name, len, "%s.%s", library->GetCategory(), library->GetInstanceName()); } void AIScannerLibrary::RegisterAPI(class Squirrel *engine) { AILibrary::RegisterAPI(engine); } AILibrary *AIScannerLibrary::FindLibrary(const char *library, int version) { /* Internally we store libraries as 'library.version' */ char library_name[1024]; snprintf(library_name, sizeof(library_name), "%s.%d", library, version); strtolower(library_name); /* Check if the library + version exists */ ScriptInfoList::iterator iter = this->info_list.find(library_name); if (iter == this->info_list.end()) return NULL; return static_cast((*iter).second); } openttd-1.3.3/src/ai/ai_instance.hpp0000644000000000000000000000263412246102573016046 0ustar rootroot/* $Id: ai_instance.hpp 24468 2012-08-13 19:22:26Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_instance.hpp The AIInstance tracks an AI. */ #ifndef AI_INSTANCE_HPP #define AI_INSTANCE_HPP #include "../script/script_instance.hpp" /** Runtime information about an AI like a pointer to the squirrel vm and the current state. */ class AIInstance : public ScriptInstance { public: AIInstance(); /** * Initialize the AI and prepare it for its first run. * @param info The AI to create the instance of. */ void Initialize(class AIInfo *info); /* virtual */ int GetSetting(const char *name); /* virtual */ ScriptInfo *FindLibrary(const char *library, int version); private: /* virtual */ void RegisterAPI(); /* virtual */ void Died(); /* virtual */ CommandCallback *GetDoCommandCallback(); /* virtual */ void LoadDummyScript(); }; #endif /* AI_INSTANCE_HPP */ openttd-1.3.3/src/ai/ai_config.hpp0000644000000000000000000000351712246102573015510 0ustar rootroot/* $Id: ai_config.hpp 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_config.hpp AIConfig stores the configuration settings of every AI. */ #ifndef AI_CONFIG_HPP #define AI_CONFIG_HPP #include "../script/script_config.hpp" #include "../company_type.h" class AIConfig : public ScriptConfig { public: /** * Get the config of a company. */ static AIConfig *GetConfig(CompanyID company, ScriptSettingSource source = SSS_DEFAULT); AIConfig() : ScriptConfig() {} AIConfig(const AIConfig *config) : ScriptConfig(config) {} class AIInfo *GetInfo() const; /* virtual */ int GetSetting(const char *name) const; /* virtual */ void SetSetting(const char *name, int value); /** * When ever the AI Scanner is reloaded, all infos become invalid. This * function tells AIConfig about this. * @param force_exact_match If true try to find the exact same version * as specified. If false any version is ok. * @return \c true if the reset was successful, \c false if the AI was no longer * found. */ bool ResetInfo(bool force_exact_match); protected: /* virtual */ void PushExtraConfigList(); /* virtual */ void ClearConfigList(); /* virtual */ ScriptInfo *FindInfo(const char *name, int version, bool force_exact_match); }; #endif /* AI_CONFIG_HPP */ openttd-1.3.3/src/ai/ai_gui.hpp0000644000000000000000000000166112246102573015025 0ustar rootroot/* $Id: ai_gui.hpp 24554 2012-09-23 14:37:59Z zuu $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_gui.hpp %Window for configuring the AIs */ #ifndef AI_GUI_HPP #define AI_GUI_HPP #include "../company_type.h" Window* ShowAIDebugWindow(CompanyID show_company = INVALID_COMPANY); void ShowAIConfigWindow(); void ShowAIDebugWindowIfAIError(); void InitializeAIGui(); #endif /* AI_GUI_HPP */ openttd-1.3.3/src/ai/ai.hpp0000644000000000000000000001311012246102573014151 0ustar rootroot/* $Id: ai.hpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai.hpp Base functions for all AIs. */ #ifndef AI_HPP #define AI_HPP #include "../script/api/script_event_types.hpp" #include "../core/string_compare_type.hpp" #include "ai_scanner.hpp" #include /** A list that maps AI names to their AIInfo object. */ typedef std::map ScriptInfoList; /** * Main AI class. Contains all functions needed to start, stop, save and load AIs. */ class AI { public: /** * The default months AIs start after each other. */ enum StartNext { START_NEXT_EASY = DAYS_IN_YEAR * 2, START_NEXT_MEDIUM = DAYS_IN_YEAR, START_NEXT_HARD = DAYS_IN_YEAR / 2, START_NEXT_MIN = 1, START_NEXT_MAX = 3600, START_NEXT_DEVIATION = 60, }; /** * Is it possible to start a new AI company? * @return True if a new AI company can be started. */ static bool CanStartNew(); /** * Start a new AI company. * @param company At which slot the AI company should start. * @param rerandomise_ai Whether to rerandomise the configured AI. */ static void StartNew(CompanyID company, bool rerandomise_ai = true); /** * Called every game-tick to let AIs do something. */ static void GameLoop(); /** * Get the current AI tick. */ static uint GetTick(); /** * Stop a company to be controlled by an AI. * @param company The company from which the AI needs to detach. * @pre Company::IsValidAiID(company) */ static void Stop(CompanyID company); /** * Suspend the AI and then pause execution of the script. The script * will not be resumed from its suspended state until the script has * been unpaused. * @param company The company for which the AI should be paused. * @pre Company::IsValidAiID(company) */ static void Pause(CompanyID company); /** * Resume execution of the AI. This function will not actually execute * the script, but set a flag so that the script is executed my the usual * mechanism that executes the script. * @param company The company for which the AI should be unpaused. * @pre Company::IsValidAiID(company) */ static void Unpause(CompanyID company); /** * Checks if the AI is paused. * @param company The company for which to check if the AI is paused. * @pre Company::IsValidAiID(company) * @return true if the AI is paused, otherwise false. */ static bool IsPaused(CompanyID company); /** * Kill any and all AIs we manage. */ static void KillAll(); /** * Initialize the AI system. */ static void Initialize(); /** * Uninitialize the AI system * @param keepConfig Should we keep AIConfigs, or can we free that memory? */ static void Uninitialize(bool keepConfig); /** * Reset all AIConfigs, and make them reload their AIInfo. * If the AIInfo could no longer be found, an error is reported to the user. */ static void ResetConfig(); /** * Queue a new event for an AI. */ static void NewEvent(CompanyID company, ScriptEvent *event); /** * Broadcast a new event to all active AIs. */ static void BroadcastNewEvent(ScriptEvent *event, CompanyID skip_company = MAX_COMPANIES); /** * Save data from an AI to a savegame. */ static void Save(CompanyID company); /** * Load data for an AI from a savegame. */ static void Load(CompanyID company, int version); /** * Get the number of days before the next AI should start. */ static int GetStartNextTime(); /** Wrapper function for AIScanner::GetAIConsoleList */ static char *GetConsoleList(char *p, const char *last, bool newest_only = false); /** Wrapper function for AIScanner::GetAIConsoleLibraryList */ static char *GetConsoleLibraryList(char *p, const char *last); /** Wrapper function for AIScanner::GetAIInfoList */ static const ScriptInfoList *GetInfoList(); /** Wrapper function for AIScanner::GetUniqueAIInfoList */ static const ScriptInfoList *GetUniqueInfoList(); /** Wrapper function for AIScanner::FindInfo */ static class AIInfo *FindInfo(const char *name, int version, bool force_exact_match); /** Wrapper function for AIScanner::FindLibrary */ static class AILibrary *FindLibrary(const char *library, int version); /** * Rescans all searchpaths for available AIs. If a used AI is no longer * found it is removed from the config. */ static void Rescan(); /** Gets the ScriptScanner instance that is used to find AIs */ static AIScannerInfo *GetScannerInfo(); /** Gets the ScriptScanner instance that is used to find AI Libraries */ static AIScannerLibrary *GetScannerLibrary(); #if defined(ENABLE_NETWORK) /** Wrapper function for AIScanner::HasAI */ static bool HasAI(const struct ContentInfo *ci, bool md5sum); static bool HasAILibrary(const ContentInfo *ci, bool md5sum); #endif private: static uint frame_counter; ///< Tick counter for the AI code static class AIScannerInfo *scanner_info; ///< ScriptScanner instance that is used to find AIs static class AIScannerLibrary *scanner_library; ///< ScriptScanner instance that is used to find AI Libraries }; #endif /* AI_HPP */ openttd-1.3.3/src/ai/ai_info.cpp0000644000000000000000000001437312246102573015173 0ustar rootroot/* $Id: ai_info.cpp 23969 2012-02-19 19:14:17Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_info.cpp Implementation of AIInfo and AILibrary */ #include "../stdafx.h" #include "../script/squirrel_class.hpp" #include "ai_info.hpp" #include "ai_scanner.hpp" #include "../debug.h" #include "../rev.h" /** * Check if the API version provided by the AI is supported. * @param api_version The API version as provided by the AI. */ static bool CheckAPIVersion(const char *api_version) { return strcmp(api_version, "0.7") == 0 || strcmp(api_version, "1.0") == 0 || strcmp(api_version, "1.1") == 0 || strcmp(api_version, "1.2") == 0 || strcmp(api_version, "1.3") == 0; } #if defined(WIN32) #undef GetClassName #endif /* WIN32 */ template <> const char *GetClassName() { return "AIInfo"; } /* static */ void AIInfo::RegisterAPI(Squirrel *engine) { /* Create the AIInfo class, and add the RegisterAI function */ DefSQClass SQAIInfo("AIInfo"); SQAIInfo.PreRegister(engine); SQAIInfo.AddConstructor(engine, "x"); SQAIInfo.DefSQAdvancedMethod(engine, &AIInfo::AddSetting, "AddSetting"); SQAIInfo.DefSQAdvancedMethod(engine, &AIInfo::AddLabels, "AddLabels"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_NONE, "CONFIG_NONE"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_RANDOM, "CONFIG_RANDOM"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_BOOLEAN, "CONFIG_BOOLEAN"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_INGAME, "CONFIG_INGAME"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_DEVELOPER, "CONFIG_DEVELOPER"); /* Pre 1.2 had an AI prefix */ SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_NONE, "AICONFIG_NONE"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_RANDOM, "AICONFIG_RANDOM"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_BOOLEAN, "AICONFIG_BOOLEAN"); SQAIInfo.DefSQConst(engine, SCRIPTCONFIG_INGAME, "AICONFIG_INGAME"); SQAIInfo.PostRegister(engine); engine->AddMethod("RegisterAI", &AIInfo::Constructor, 2, "tx"); engine->AddMethod("RegisterDummyAI", &AIInfo::DummyConstructor, 2, "tx"); } /* static */ SQInteger AIInfo::Constructor(HSQUIRRELVM vm) { /* Get the AIInfo */ SQUserPointer instance = NULL; if (SQ_FAILED(sq_getinstanceup(vm, 2, &instance, 0)) || instance == NULL) return sq_throwerror(vm, _SC("Pass an instance of a child class of AIInfo to RegisterAI")); AIInfo *info = (AIInfo *)instance; SQInteger res = ScriptInfo::Constructor(vm, info); if (res != 0) return res; ScriptConfigItem config = _start_date_config; config.name = strdup(config.name); config.description = strdup(config.description); info->config_list.push_front(config); if (info->engine->MethodExists(*info->SQ_instance, "MinVersionToLoad")) { if (!info->engine->CallIntegerMethod(*info->SQ_instance, "MinVersionToLoad", &info->min_loadable_version, MAX_GET_OPS)) return SQ_ERROR; } else { info->min_loadable_version = info->GetVersion(); } /* When there is an UseAsRandomAI function, call it. */ if (info->engine->MethodExists(*info->SQ_instance, "UseAsRandomAI")) { if (!info->engine->CallBoolMethod(*info->SQ_instance, "UseAsRandomAI", &info->use_as_random, MAX_GET_OPS)) return SQ_ERROR; } else { info->use_as_random = true; } /* Try to get the API version the AI is written for. */ if (info->engine->MethodExists(*info->SQ_instance, "GetAPIVersion")) { if (!info->engine->CallStringMethodStrdup(*info->SQ_instance, "GetAPIVersion", &info->api_version, MAX_GET_OPS)) return SQ_ERROR; if (!CheckAPIVersion(info->api_version)) { DEBUG(script, 1, "Loading info.nut from (%s.%d): GetAPIVersion returned invalid version", info->GetName(), info->GetVersion()); return SQ_ERROR; } } else { info->api_version = strdup("0.7"); } /* Remove the link to the real instance, else it might get deleted by RegisterAI() */ sq_setinstanceup(vm, 2, NULL); /* Register the AI to the base system */ info->GetScanner()->RegisterScript(info); return 0; } /* static */ SQInteger AIInfo::DummyConstructor(HSQUIRRELVM vm) { /* Get the AIInfo */ SQUserPointer instance; sq_getinstanceup(vm, 2, &instance, 0); AIInfo *info = (AIInfo *)instance; info->api_version = NULL; SQInteger res = ScriptInfo::Constructor(vm, info); if (res != 0) return res; char buf[8]; seprintf(buf, lastof(buf), "%d.%d", GB(_openttd_newgrf_version, 28, 4), GB(_openttd_newgrf_version, 24, 4)); info->api_version = strdup(buf); /* Remove the link to the real instance, else it might get deleted by RegisterAI() */ sq_setinstanceup(vm, 2, NULL); /* Register the AI to the base system */ static_cast(info->GetScanner())->SetDummyAI(info); return 0; } AIInfo::AIInfo() : min_loadable_version(0), use_as_random(false), api_version(NULL) { } AIInfo::~AIInfo() { free(this->api_version); } bool AIInfo::CanLoadFromVersion(int version) const { if (version == -1) return true; return version >= this->min_loadable_version && version <= this->GetVersion(); } AILibrary::~AILibrary() { free(this->category); } /* static */ void AILibrary::RegisterAPI(Squirrel *engine) { /* Create the AILibrary class, and add the RegisterLibrary function */ engine->AddClassBegin("AILibrary"); engine->AddClassEnd(); engine->AddMethod("RegisterLibrary", &AILibrary::Constructor, 2, "tx"); } /* static */ SQInteger AILibrary::Constructor(HSQUIRRELVM vm) { /* Create a new library */ AILibrary *library = new AILibrary(); SQInteger res = ScriptInfo::Constructor(vm, library); if (res != 0) { delete library; return res; } /* Cache the category */ if (!library->CheckMethod("GetCategory") || !library->engine->CallStringMethodStrdup(*library->SQ_instance, "GetCategory", &library->category, MAX_GET_OPS)) { delete library; return SQ_ERROR; } /* Register the Library to the base system */ library->GetScanner()->RegisterScript(library); return 0; } openttd-1.3.3/src/ai/ai_scanner.hpp0000644000000000000000000000522612246102573015673 0ustar rootroot/* $Id: ai_scanner.hpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_scanner.hpp declarations of the class for AI scanner */ #ifndef AI_SCANNER_HPP #define AI_SCANNER_HPP #include "../script/script_scanner.hpp" class AIScannerInfo : public ScriptScanner { public: AIScannerInfo(); ~AIScannerInfo(); /* virtual */ void Initialize(); /** * Select a random AI. * @return A random AI from the pool. */ class AIInfo *SelectRandomAI() const; /** * Check if we have an AI by name and version available in our list. * @param nameParam The name of the AI. * @param versionParam The version of the AI, or -1 if you want the latest. * @param force_exact_match Only match name+version, never latest. * @return NULL if no match found, otherwise the AI that matched. */ class AIInfo *FindInfo(const char *nameParam, int versionParam, bool force_exact_match); /** * Set the Dummy AI. */ void SetDummyAI(class AIInfo *info); protected: /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); /* virtual */ const char *GetFileName() const { return PATHSEP "info.nut"; } /* virtual */ Subdirectory GetDirectory() const { return AI_DIR; } /* virtual */ const char *GetScannerName() const { return "AIs"; } /* virtual */ void RegisterAPI(class Squirrel *engine); private: AIInfo *info_dummy; ///< The dummy AI. }; class AIScannerLibrary : public ScriptScanner { public: /* virtual */ void Initialize(); /** * Find a library in the pool. * @param library The library name to find. * @param version The version the library should have. * @return The library if found, NULL otherwise. */ class AILibrary *FindLibrary(const char *library, int version); protected: /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); /* virtual */ const char *GetFileName() const { return PATHSEP "library.nut"; } /* virtual */ Subdirectory GetDirectory() const { return AI_LIBRARY_DIR; } /* virtual */ const char *GetScannerName() const { return "AI Libraries"; } /* virtual */ void RegisterAPI(class Squirrel *engine); }; #endif /* AI_SCANNER_HPP */ openttd-1.3.3/src/track_type.h0000644000000000000000000001625512246102611015002 0ustar rootroot/* $Id: track_type.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file track_type.h All types related to tracks */ #ifndef TRACK_TYPE_H #define TRACK_TYPE_H #include "core/enum_type.hpp" /** * These are used to specify a single track. * Can be translated to a trackbit with TrackToTrackbit */ enum Track { TRACK_BEGIN = 0, ///< Used for iterations TRACK_X = 0, ///< Track along the x-axis (north-east to south-west) TRACK_Y = 1, ///< Track along the y-axis (north-west to south-east) TRACK_UPPER = 2, ///< Track in the upper corner of the tile (north) TRACK_LOWER = 3, ///< Track in the lower corner of the tile (south) TRACK_LEFT = 4, ///< Track in the left corner of the tile (west) TRACK_RIGHT = 5, ///< Track in the right corner of the tile (east) TRACK_END, ///< Used for iterations INVALID_TRACK = 0xFF, ///< Flag for an invalid track }; /** Allow incrementing of Track variables */ DECLARE_POSTFIX_INCREMENT(Track) /** Define basic enum properties */ template <> struct EnumPropsT : MakeEnumPropsT {}; typedef TinyEnumT TrackByte; /** Bitfield corresponding to Track */ enum TrackBits { TRACK_BIT_NONE = 0U, ///< No track TRACK_BIT_X = 1U << TRACK_X, ///< X-axis track TRACK_BIT_Y = 1U << TRACK_Y, ///< Y-axis track TRACK_BIT_UPPER = 1U << TRACK_UPPER, ///< Upper track TRACK_BIT_LOWER = 1U << TRACK_LOWER, ///< Lower track TRACK_BIT_LEFT = 1U << TRACK_LEFT, ///< Left track TRACK_BIT_RIGHT = 1U << TRACK_RIGHT, ///< Right track TRACK_BIT_CROSS = TRACK_BIT_X | TRACK_BIT_Y, ///< X-Y-axis cross TRACK_BIT_HORZ = TRACK_BIT_UPPER | TRACK_BIT_LOWER, ///< Upper and lower track TRACK_BIT_VERT = TRACK_BIT_LEFT | TRACK_BIT_RIGHT, ///< Left and right track TRACK_BIT_3WAY_NE = TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT,///< "Arrow" to the north-east TRACK_BIT_3WAY_SE = TRACK_BIT_Y | TRACK_BIT_LOWER | TRACK_BIT_RIGHT,///< "Arrow" to the south-east TRACK_BIT_3WAY_SW = TRACK_BIT_X | TRACK_BIT_LOWER | TRACK_BIT_LEFT, ///< "Arrow" to the south-west TRACK_BIT_3WAY_NW = TRACK_BIT_Y | TRACK_BIT_UPPER | TRACK_BIT_LEFT, ///< "Arrow" to the north-west TRACK_BIT_ALL = TRACK_BIT_CROSS | TRACK_BIT_HORZ | TRACK_BIT_VERT, ///< All possible tracks TRACK_BIT_MASK = 0x3FU, ///< Bitmask for the first 6 bits TRACK_BIT_WORMHOLE = 0x40U, ///< Bitflag for a wormhole (used for tunnels) TRACK_BIT_DEPOT = 0x80U, ///< Bitflag for a depot INVALID_TRACK_BIT = 0xFF, ///< Flag for an invalid trackbits value }; DECLARE_ENUM_AS_BIT_SET(TrackBits) typedef SimpleTinyEnumT TrackBitsByte; /** * Enumeration for tracks and directions. * * These are a combination of tracks and directions. Values are 0-5 in one * direction (corresponding to the Track enum) and 8-13 in the other direction. * 6, 7, 14 and 15 are used to encode the reversing of road vehicles. Those * reversing track dirs are not considered to be 'valid' except in a small * corner in the road vehicle controller. */ enum Trackdir { TRACKDIR_BEGIN = 0, ///< Used for iterations TRACKDIR_X_NE = 0, ///< X-axis and direction to north-east TRACKDIR_Y_SE = 1, ///< Y-axis and direction to south-east TRACKDIR_UPPER_E = 2, ///< Upper track and direction to east TRACKDIR_LOWER_E = 3, ///< Lower track and direction to east TRACKDIR_LEFT_S = 4, ///< Left track and direction to south TRACKDIR_RIGHT_S = 5, ///< Right track and direction to south TRACKDIR_RVREV_NE = 6, ///< (Road vehicle) reverse direction north-east TRACKDIR_RVREV_SE = 7, ///< (Road vehicle) reverse direction south-east TRACKDIR_X_SW = 8, ///< X-axis and direction to south-west TRACKDIR_Y_NW = 9, ///< Y-axis and direction to north-west TRACKDIR_UPPER_W = 10, ///< Upper track and direction to west TRACKDIR_LOWER_W = 11, ///< Lower track and direction to west TRACKDIR_LEFT_N = 12, ///< Left track and direction to north TRACKDIR_RIGHT_N = 13, ///< Right track and direction to north TRACKDIR_RVREV_SW = 14, ///< (Road vehicle) reverse direction south-west TRACKDIR_RVREV_NW = 15, ///< (Road vehicle) reverse direction north-west TRACKDIR_END, ///< Used for iterations INVALID_TRACKDIR = 0xFF, ///< Flag for an invalid trackdir }; /** Define basic enum properties */ template <> struct EnumPropsT : MakeEnumPropsT {}; typedef TinyEnumT TrackdirByte; /** * Enumeration of bitmasks for the TrackDirs * * These are a combination of tracks and directions. Values are 0-5 in one * direction (corresponding to the Track enum) and 8-13 in the other direction. */ enum TrackdirBits { TRACKDIR_BIT_NONE = 0x0000, ///< No track build TRACKDIR_BIT_X_NE = 0x0001, ///< Track x-axis, direction north-east TRACKDIR_BIT_Y_SE = 0x0002, ///< Track y-axis, direction south-east TRACKDIR_BIT_UPPER_E = 0x0004, ///< Track upper, direction east TRACKDIR_BIT_LOWER_E = 0x0008, ///< Track lower, direction east TRACKDIR_BIT_LEFT_S = 0x0010, ///< Track left, direction south TRACKDIR_BIT_RIGHT_S = 0x0020, ///< Track right, direction south /* Again, note the two missing values here. This enables trackdir -> track conversion by doing (trackdir & 0xFF) */ TRACKDIR_BIT_X_SW = 0x0100, ///< Track x-axis, direction south-west TRACKDIR_BIT_Y_NW = 0x0200, ///< Track y-axis, direction north-west TRACKDIR_BIT_UPPER_W = 0x0400, ///< Track upper, direction west TRACKDIR_BIT_LOWER_W = 0x0800, ///< Track lower, direction west TRACKDIR_BIT_LEFT_N = 0x1000, ///< Track left, direction north TRACKDIR_BIT_RIGHT_N = 0x2000, ///< Track right, direction north TRACKDIR_BIT_MASK = 0x3F3F, ///< Bitmask for bit-operations INVALID_TRACKDIR_BIT = 0xFFFF, ///< Flag for an invalid trackdirbit value }; DECLARE_ENUM_AS_BIT_SET(TrackdirBits) typedef SimpleTinyEnumT TrackdirBitsShort; typedef uint32 TrackStatus; #endif /* TRACK_TYPE_H */ openttd-1.3.3/src/tunnel_map.cpp0000644000000000000000000000436312246102611015327 0ustar rootroot/* $Id: tunnel_map.cpp 23167 2011-11-08 19:44:41Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tunnel_map.cpp Map accessors for tunnels. */ #include "stdafx.h" #include "tunnelbridge_map.h" /** * Gets the other end of the tunnel. Where a vehicle would reappear when it * enters at the given tile. * @param tile the tile to search from. * @return the tile of the other end of the tunnel. */ TileIndex GetOtherTunnelEnd(TileIndex tile) { DiagDirection dir = GetTunnelBridgeDirection(tile); TileIndexDiff delta = TileOffsByDiagDir(dir); int z = GetTileZ(tile); dir = ReverseDiagDir(dir); do { tile += delta; } while ( !IsTunnelTile(tile) || GetTunnelBridgeDirection(tile) != dir || GetTileZ(tile) != z ); return tile; } /** * Is there a tunnel in the way in the given direction? * @param tile the tile to search from. * @param z the 'z' to search on. * @param dir the direction to start searching to. * @return true if and only if there is a tunnel. */ bool IsTunnelInWayDir(TileIndex tile, int z, DiagDirection dir) { TileIndexDiff delta = TileOffsByDiagDir(dir); int height; do { tile -= delta; if (!IsValidTile(tile)) return false; height = GetTileZ(tile); } while (z < height); return z == height && IsTunnelTile(tile) && GetTunnelBridgeDirection(tile) == dir; } /** * Is there a tunnel in the way in any direction? * @param tile the tile to search from. * @param z the 'z' to search on. * @return true if and only if there is a tunnel. */ bool IsTunnelInWay(TileIndex tile, int z) { return IsTunnelInWayDir(tile, z, (TileX(tile) > (MapMaxX() / 2)) ? DIAGDIR_NE : DIAGDIR_SW) || IsTunnelInWayDir(tile, z, (TileY(tile) > (MapMaxY() / 2)) ? DIAGDIR_NW : DIAGDIR_SE); } openttd-1.3.3/src/signs_gui.cpp0000644000000000000000000004471212246102611015156 0ustar rootroot/* $Id: signs_gui.cpp 26025 2013-11-17 13:53:33Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file signs_gui.cpp The GUI for signs. */ #include "stdafx.h" #include "company_gui.h" #include "company_func.h" #include "signs_base.h" #include "signs_func.h" #include "debug.h" #include "command_func.h" #include "strings_func.h" #include "window_func.h" #include "map_func.h" #include "viewport_func.h" #include "querystring_gui.h" #include "sortlist_type.h" #include "stringfilter_type.h" #include "string_func.h" #include "core/geometry_func.hpp" #include "hotkeys.h" #include "transparency.h" #include "widgets/sign_widget.h" #include "table/strings.h" #include "table/sprites.h" struct SignList { /** * A GUIList contains signs and uses a StringFilter for filtering. */ typedef GUIList GUISignList; static const Sign *last_sign; GUISignList signs; StringFilter string_filter; ///< The match string to be used when the GUIList is (re)-sorted. static bool match_case; ///< Should case sensitive matching be used? /** * Creates a SignList with filtering disabled by default. */ SignList() : string_filter(&match_case) { } void BuildSignsList() { if (!this->signs.NeedRebuild()) return; DEBUG(misc, 3, "Building sign list"); this->signs.Clear(); const Sign *si; FOR_ALL_SIGNS(si) *this->signs.Append() = si; this->signs.SetFilterState(true); this->FilterSignList(); this->signs.Compact(); this->signs.RebuildDone(); } /** Sort signs by their name */ static int CDECL SignNameSorter(const Sign * const *a, const Sign * const *b) { static char buf_cache[64]; char buf[64]; SetDParam(0, (*a)->index); GetString(buf, STR_SIGN_NAME, lastof(buf)); if (*b != last_sign) { last_sign = *b; SetDParam(0, (*b)->index); GetString(buf_cache, STR_SIGN_NAME, lastof(buf_cache)); } int r = strnatcmp(buf, buf_cache); // Sort by name (natural sorting). return r != 0 ? r : ((*a)->index - (*b)->index); } void SortSignsList() { if (!this->signs.Sort(&SignNameSorter)) return; /* Reset the name sorter sort cache */ this->last_sign = NULL; } /** Filter sign list by sign name */ static bool CDECL SignNameFilter(const Sign * const *a, StringFilter &filter) { /* Get sign string */ char buf1[MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH]; SetDParam(0, (*a)->index); GetString(buf1, STR_SIGN_NAME, lastof(buf1)); filter.ResetState(); filter.AddLine(buf1); return filter.GetState(); } /** Filter sign list excluding OWNER_DEITY */ static bool CDECL OwnerDeityFilter(const Sign * const *a, StringFilter &filter) { /* You should never be able to edit signs of owner DEITY */ return (*a)->owner != OWNER_DEITY; } /** Filter sign list by owner */ static bool CDECL OwnerVisibilityFilter(const Sign * const *a, StringFilter &filter) { assert(!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS)); /* Hide sign if non-own signs are hidden in the viewport */ return (*a)->owner == _local_company || (*a)->owner == OWNER_DEITY; } /** Filter out signs from the sign list that does not match the name filter */ void FilterSignList() { this->signs.Filter(&SignNameFilter, this->string_filter); if (_game_mode != GM_EDITOR) this->signs.Filter(&OwnerDeityFilter, this->string_filter); if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS)) { this->signs.Filter(&OwnerVisibilityFilter, this->string_filter); } } }; const Sign *SignList::last_sign = NULL; bool SignList::match_case = false; /** Enum referring to the Hotkeys in the sign list window */ enum SignListHotkeys { SLHK_FOCUS_FILTER_BOX, ///< Focus the edit box for editing the filter string }; struct SignListWindow : Window, SignList { QueryString filter_editbox; ///< Filter editbox; int text_offset; ///< Offset of the sign text relative to the left edge of the WID_SIL_LIST widget. Scrollbar *vscroll; SignListWindow(const WindowDesc *desc, WindowNumber window_number) : filter_editbox(MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_SIGN_NAME_CHARS) { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_SIL_SCROLLBAR); this->FinishInitNested(desc, window_number); this->SetWidgetLoweredState(WID_SIL_FILTER_MATCH_CASE_BTN, SignList::match_case); /* Initialize the text edit widget */ this->querystrings[WID_SIL_FILTER_TEXT] = &this->filter_editbox; this->filter_editbox.ok_button = WID_SIL_FILTER_ENTER_BTN; this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; /* Initialize the filtering variables */ this->SetFilterString(""); /* Create initial list. */ this->signs.ForceRebuild(); this->signs.ForceResort(); this->BuildSortSignList(); } /** * This function sets the filter string of the sign list. The contents of * the edit widget is not updated by this function. Depending on if the * new string is zero-length or not the clear button is made * disabled/enabled. The sign list is updated according to the new filter. */ void SetFilterString(const char *new_filter_string) { /* check if there is a new filter string */ this->string_filter.SetFilterTerm(new_filter_string); /* Rebuild the list of signs */ this->InvalidateData(); } virtual void OnPaint() { if (this->signs.NeedRebuild()) this->BuildSortSignList(); this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_SIL_LIST: { uint y = r.top + WD_FRAMERECT_TOP; // Offset from top of widget. /* No signs? */ if (this->vscroll->GetCount() == 0) { DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, STR_STATION_LIST_NONE); return; } bool rtl = _current_text_dir == TD_RTL; int sprite_offset_y = (FONT_HEIGHT_NORMAL - 10) / 2 + 1; uint icon_left = 4 + (rtl ? r.right - this->text_offset : r.left); uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : this->text_offset); uint text_right = r.right - (rtl ? this->text_offset : WD_FRAMERECT_RIGHT); /* At least one sign available. */ for (uint16 i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < this->vscroll->GetCount(); i++) { const Sign *si = this->signs[i]; if (si->owner != OWNER_NONE) DrawCompanyIcon(si->owner, icon_left, y + sprite_offset_y); SetDParam(0, si->index); DrawString(text_left, text_right, y, STR_SIGN_NAME, TC_YELLOW); y += this->resize.step_height; } break; } } } virtual void SetStringParameters(int widget) const { if (widget == WID_SIL_CAPTION) SetDParam(0, this->vscroll->GetCount()); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_SIL_LIST: { uint id_v = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SIL_LIST, WD_FRAMERECT_TOP); if (id_v == INT_MAX) return; const Sign *si = this->signs[id_v]; ScrollMainWindowToTile(TileVirtXY(si->x, si->y)); break; } case WID_SIL_FILTER_ENTER_BTN: if (this->signs.Length() >= 1) { const Sign *si = this->signs[0]; ScrollMainWindowToTile(TileVirtXY(si->x, si->y)); } break; case WID_SIL_FILTER_MATCH_CASE_BTN: SignList::match_case = !SignList::match_case; // Toggle match case this->SetWidgetLoweredState(WID_SIL_FILTER_MATCH_CASE_BTN, SignList::match_case); // Toggle button pushed state this->InvalidateData(); // Rebuild the list of signs break; } } virtual void OnResize() { this->vscroll->SetCapacityFromWidget(this, WID_SIL_LIST, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_SIL_LIST: { Dimension spr_dim = GetSpriteSize(SPR_COMPANY_ICON); this->text_offset = WD_FRAMETEXT_LEFT + spr_dim.width + 2; // 2 pixels space between icon and the sign text. resize->height = max(FONT_HEIGHT_NORMAL, spr_dim.height); Dimension d = {this->text_offset + WD_FRAMETEXT_RIGHT, WD_FRAMERECT_TOP + 5 * resize->height + WD_FRAMERECT_BOTTOM}; *size = maxdim(*size, d); break; } case WID_SIL_CAPTION: SetDParamMaxValue(0, Sign::GetPoolSize(), 3); *size = GetStringBoundingBox(STR_SIGN_LIST_CAPTION); size->height += padding.height; size->width += padding.width; break; } } virtual EventState OnKeyPress(WChar key, uint16 keycode) { EventState state = ES_NOT_HANDLED; if (CheckHotkeyMatch(signlist_hotkeys, keycode, this) == SLHK_FOCUS_FILTER_BOX) { this->SetFocusedWidget(WID_SIL_FILTER_TEXT); SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused. state = ES_HANDLED; } return state; } virtual void OnEditboxChanged(int widget) { if (widget == WID_SIL_FILTER_TEXT) this->SetFilterString(this->filter_editbox.text.buf); } void BuildSortSignList() { if (this->signs.NeedRebuild()) { this->BuildSignsList(); this->vscroll->SetCount(this->signs.Length()); this->SetWidgetDirty(WID_SIL_CAPTION); } this->SortSignsList(); } virtual void OnHundredthTick() { this->BuildSortSignList(); this->SetDirty(); } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { /* When there is a filter string, we always need to rebuild the list even if * the amount of signs in total is unchanged, as the subset of signs that is * accepted by the filter might has changed. */ if (data == 0 || data == -1 || !this->string_filter.IsEmpty()) { // New or deleted sign, changed visibility setting or there is a filter string /* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */ this->signs.ForceRebuild(); } else { // Change of sign contents while there is no filter string this->signs.ForceResort(); } } static Hotkey signlist_hotkeys[]; }; Hotkey SignListWindow::signlist_hotkeys[] = { Hotkey('F', "focus_filter_box", SLHK_FOCUS_FILTER_BOX), HOTKEY_LIST_END(SignListWindow) }; Hotkey *_signlist_hotkeys = SignListWindow::signlist_hotkeys; static const NWidgetPart _nested_sign_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_SIL_CAPTION), SetDataTip(STR_SIGN_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_SIL_LIST), SetMinimalSize(WD_FRAMETEXT_LEFT + 16 + 255 + WD_FRAMETEXT_RIGHT, 50), SetResize(1, 10), SetFill(1, 0), SetScrollbar(WID_SIL_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), NWidget(WWT_EDITBOX, COLOUR_GREY, WID_SIL_FILTER_TEXT), SetMinimalSize(80, 12), SetResize(1, 0), SetFill(1, 0), SetPadding(2, 2, 2, 2), SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SIL_FILTER_MATCH_CASE_BTN), SetDataTip(STR_SIGN_LIST_MATCH_CASE, STR_SIGN_LIST_MATCH_CASE_TOOLTIP), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VERTICAL), SetFill(0, 1), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SIL_SCROLLBAR), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), }; static const WindowDesc _sign_list_desc( WDP_AUTO, 358, 138, WC_SIGN_LIST, WC_NONE, 0, _nested_sign_list_widgets, lengthof(_nested_sign_list_widgets) ); /** * Open the sign list window * * @return newly opened sign list window, or NULL if the window could not be opened. */ Window *ShowSignList() { return AllocateWindowDescFront(&_sign_list_desc, 0); } EventState SignListGlobalHotkeys(WChar key, uint16 keycode) { int num = CheckHotkeyMatch(_signlist_hotkeys, keycode, NULL, true); if (num == -1) return ES_NOT_HANDLED; Window *w = ShowSignList(); if (w == NULL) return ES_NOT_HANDLED; return w->OnKeyPress(key, keycode); } /** * Actually rename the sign. * @param index the sign to rename. * @param text the new name. * @return true if the window will already be removed after returning. */ static bool RenameSign(SignID index, const char *text) { bool remove = StrEmpty(text); DoCommandP(0, index, 0, CMD_RENAME_SIGN | (StrEmpty(text) ? CMD_MSG(STR_ERROR_CAN_T_DELETE_SIGN) : CMD_MSG(STR_ERROR_CAN_T_CHANGE_SIGN_NAME)), NULL, text); return remove; } struct SignWindow : Window, SignList { QueryString name_editbox; SignID cur_sign; SignWindow(const WindowDesc *desc, const Sign *si) : name_editbox(MAX_LENGTH_SIGN_NAME_CHARS * MAX_CHAR_LENGTH, MAX_LENGTH_SIGN_NAME_CHARS) { this->querystrings[WID_QES_TEXT] = &this->name_editbox; this->name_editbox.caption = STR_EDIT_SIGN_CAPTION; this->name_editbox.cancel_button = WID_QES_CANCEL; this->name_editbox.ok_button = WID_QES_OK; this->InitNested(desc, WN_QUERY_STRING_SIGN); UpdateSignEditWindow(si); this->SetFocusedWidget(WID_QES_TEXT); } void UpdateSignEditWindow(const Sign *si) { /* Display an empty string when the sign hasn't been edited yet */ if (si->name != NULL) { SetDParam(0, si->index); this->name_editbox.text.Assign(STR_SIGN_NAME); } else { this->name_editbox.text.DeleteAll(); } this->cur_sign = si->index; this->SetWidgetDirty(WID_QES_TEXT); this->SetFocusedWidget(WID_QES_TEXT); } /** * Returns a pointer to the (alphabetically) previous or next sign of the current sign. * @param next false if the previous sign is wanted, true if the next sign is wanted * @return pointer to the previous/next sign */ const Sign *PrevNextSign(bool next) { /* Rebuild the sign list */ this->signs.ForceRebuild(); this->signs.NeedResort(); this->BuildSignsList(); this->SortSignsList(); /* Search through the list for the current sign, excluding * - the first sign if we want the previous sign or * - the last sign if we want the next sign */ uint end = this->signs.Length() - (next ? 1 : 0); for (uint i = next ? 0 : 1; i < end; i++) { if (this->cur_sign == this->signs[i]->index) { /* We've found the current sign, so return the sign before/after it */ return this->signs[i + (next ? 1 : -1)]; } } /* If we haven't found the current sign by now, return the last/first sign */ return this->signs[next ? 0 : this->signs.Length() - 1]; } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_QES_CAPTION: SetDParam(0, this->name_editbox.caption); break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_QES_PREVIOUS: case WID_QES_NEXT: { const Sign *si = this->PrevNextSign(widget == WID_QES_NEXT); /* Rebuild the sign list */ this->signs.ForceRebuild(); this->signs.NeedResort(); this->BuildSignsList(); this->SortSignsList(); /* Scroll to sign and reopen window */ ScrollMainWindowToTile(TileVirtXY(si->x, si->y)); UpdateSignEditWindow(si); break; } case WID_QES_DELETE: /* Only need to set the buffer to null, the rest is handled as the OK button */ RenameSign(this->cur_sign, ""); /* don't delete this, we are deleted in Sign::~Sign() -> DeleteRenameSignWindow() */ break; case WID_QES_OK: if (RenameSign(this->cur_sign, this->name_editbox.text.buf)) break; /* FALL THROUGH */ case WID_QES_CANCEL: delete this; break; } } }; static const NWidgetPart _nested_query_sign_edit_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_QES_CAPTION), SetDataTip(STR_WHITE_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(WWT_EDITBOX, COLOUR_GREY, WID_QES_TEXT), SetMinimalSize(256, 12), SetDataTip(STR_EDIT_SIGN_SIGN_OSKTITLE, STR_NULL), SetPadding(2, 2, 2, 2), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_QES_OK), SetMinimalSize(61, 12), SetDataTip(STR_BUTTON_OK, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_QES_CANCEL), SetMinimalSize(60, 12), SetDataTip(STR_BUTTON_CANCEL, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_QES_DELETE), SetMinimalSize(60, 12), SetDataTip(STR_TOWN_VIEW_DELETE_BUTTON, STR_NULL), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), EndContainer(), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_QES_PREVIOUS), SetMinimalSize(11, 12), SetDataTip(AWV_DECREASE, STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP), NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_QES_NEXT), SetMinimalSize(11, 12), SetDataTip(AWV_INCREASE, STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP), EndContainer(), }; static const WindowDesc _query_sign_edit_desc( WDP_CENTER, 0, 0, WC_QUERY_STRING, WC_NONE, WDF_CONSTRUCTION, _nested_query_sign_edit_widgets, lengthof(_nested_query_sign_edit_widgets) ); /** * Handle clicking on a sign. * @param si The sign that was clicked on. */ void HandleClickOnSign(const Sign *si) { if (_ctrl_pressed && (si->owner == _local_company || (si->owner == OWNER_DEITY && _game_mode == GM_EDITOR))) { RenameSign(si->index, NULL); return; } ShowRenameSignWindow(si); } /** * Show the window to change the text of a sign. * @param si The sign to show the window for. */ void ShowRenameSignWindow(const Sign *si) { /* Delete all other edit windows */ DeleteWindowByClass(WC_QUERY_STRING); new SignWindow(&_query_sign_edit_desc, si); } /** * Close the sign window associated with the given sign. * @param sign The sign to close the window for. */ void DeleteRenameSignWindow(SignID sign) { SignWindow *w = dynamic_cast(FindWindowById(WC_QUERY_STRING, WN_QUERY_STRING_SIGN)); if (w != NULL && w->cur_sign == sign) delete w; } openttd-1.3.3/src/gfx_layout.h0000644000000000000000000001421112246102611015004 0ustar rootroot/* $Id: gfx_layout.h 26032 2013-11-17 17:31:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gfx_layout.h Functions related to laying out the texts. */ #ifndef GFX_LAYOUT_H #define GFX_LAYOUT_H #include "fontcache.h" #include "gfx_func.h" #include "core/smallmap_type.hpp" #include #include #ifdef WITH_ICU #include "layout/ParagraphLayout.h" #define ICU_FONTINSTANCE : public LEFontInstance #else /* WITH_ICU */ #define ICU_FONTINSTANCE #endif /* WITH_ICU */ /** * Text drawing parameters, which can change while drawing a line, but are kept between multiple parts * of the same text, e.g. on line breaks. */ struct FontState { FontSize fontsize; ///< Current font size. TextColour cur_colour; ///< Current text colour. TextColour prev_colour; ///< Text colour from before the last colour switch. FontState() : fontsize(FS_END), cur_colour(TC_INVALID), prev_colour(TC_INVALID) {} FontState(TextColour colour, FontSize fontsize) : fontsize(fontsize), cur_colour(colour), prev_colour(colour) {} /** * Switch to new colour \a c. * @param c New colour to use. */ inline void SetColour(TextColour c) { assert(c >= TC_BLUE && c <= TC_BLACK); this->prev_colour = this->cur_colour; this->cur_colour = c; } /** Switch to previous colour. */ inline void SetPreviousColour() { Swap(this->cur_colour, this->prev_colour); } /** * Switch to using a new font \a f. * @param f New font to use. */ inline void SetFontSize(FontSize f) { this->fontsize = f; } }; /** * Container with information about a font. */ class Font ICU_FONTINSTANCE { public: FontCache *fc; ///< The font we are using. TextColour colour; ///< The colour this font has to be. Font(FontSize size, TextColour colour); #ifdef WITH_ICU /* Implementation details of LEFontInstance */ le_int32 getUnitsPerEM() const; le_int32 getAscent() const; le_int32 getDescent() const; le_int32 getLeading() const; float getXPixelsPerEm() const; float getYPixelsPerEm() const; float getScaleFactorX() const; float getScaleFactorY() const; const void *getFontTable(LETag tableTag) const; const void *getFontTable(LETag tableTag, size_t &length) const; LEGlyphID mapCharToGlyph(LEUnicode32 ch) const; void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const; le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const; #endif /* WITH_ICU */ }; /** Mapping from index to font. */ typedef SmallMap FontMap; /** * Interface to glue fallback and normal layouter into one. */ class ParagraphLayouter { public: virtual ~ParagraphLayouter() {} /** Visual run contains data about the bit of text with the same font. */ class VisualRun { public: virtual ~VisualRun() {} virtual const Font *GetFont() const = 0; virtual int GetGlyphCount() const = 0; virtual const GlyphID *GetGlyphs() const = 0; virtual const float *GetPositions() const = 0; virtual int GetLeading() const = 0; virtual const int *GetGlyphToCharMap() const = 0; }; /** A single line worth of VisualRuns. */ class Line { public: virtual ~Line() {} virtual int GetLeading() const = 0; virtual int GetWidth() const = 0; virtual int CountRuns() const = 0; virtual const VisualRun *GetVisualRun(int run) const = 0; virtual int GetInternalCharLength(WChar c) const = 0; }; virtual void Reflow() = 0; virtual const Line *NextLine(int max_width) = 0; }; /** * The layouter performs all the layout work. * * It also accounts for the memory allocations and frees. */ class Layouter : public AutoDeleteSmallVector { const char *string; ///< Pointer to the original string. /** Key into the linecache */ struct LineCacheKey { FontState state_before; ///< Font state at the beginning of the line. std::string str; ///< Source string of the line (including colour and font size codes). /** Comparison operator for std::map */ bool operator<(const LineCacheKey &other) const { if (this->state_before.fontsize != other.state_before.fontsize) return this->state_before.fontsize < other.state_before.fontsize; if (this->state_before.cur_colour != other.state_before.cur_colour) return this->state_before.cur_colour < other.state_before.cur_colour; if (this->state_before.prev_colour != other.state_before.prev_colour) return this->state_before.prev_colour < other.state_before.prev_colour; return this->str < other.str; } }; public: /** Item in the linecache */ struct LineCacheItem { /* Stuff that cannot be freed until the ParagraphLayout is freed */ void *buffer; ///< Accessed by both ICU's and our ParagraphLayout::nextLine. FontMap runs; ///< Accessed by our ParagraphLayout::nextLine. FontState state_after; ///< Font state after the line. ParagraphLayouter *layout; ///< Layout of the line. LineCacheItem() : buffer(NULL), layout(NULL) {} ~LineCacheItem() { delete layout; free(buffer); } }; private: typedef std::map LineCache; static LineCache *linecache; static LineCacheItem &GetCachedParagraphLayout(const char *str, size_t len, const FontState &state); typedef SmallMap FontColourMap; static FontColourMap fonts[FS_END]; public: static Font *GetFont(FontSize size, TextColour colour); Layouter(const char *str, int maxw = INT32_MAX, TextColour colour = TC_FROMSTRING, FontSize fontsize = FS_NORMAL); Dimension GetBounds(); Point GetCharPosition(const char *ch) const; const char *GetCharAtPosition(int x) const; static void ResetFontCache(FontSize size); static void ResetLineCache(); static void ReduceLineCache(); }; #endif /* GFX_LAYOUT_H */ openttd-1.3.3/src/transparency.h0000644000000000000000000000772612246102611015351 0ustar rootroot/* $Id: transparency.h 22506 2011-05-28 09:46:37Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file transparency.h Functions related to transparency. */ #ifndef TRANSPARENCY_H #define TRANSPARENCY_H #include "gfx_func.h" #include "openttd.h" #include "core/bitmath_func.hpp" /** * Transparency option bits: which position in _transparency_opt stands for which transparency. * If you change the order, change the order of the ShowTransparencyToolbar() stuff in transparency_gui.cpp too. * If you add or remove an option don't forget to change the transparency 'hot keys' in main_gui.cpp. */ enum TransparencyOption { TO_SIGNS = 0, ///< signs TO_TREES, ///< trees TO_HOUSES, ///< town buildings TO_INDUSTRIES, ///< industries TO_BUILDINGS, ///< company buildings - depots, stations, HQ, ... TO_BRIDGES, ///< bridges TO_STRUCTURES, ///< other objects such as transmitters and lighthouses TO_CATENARY, ///< catenary TO_LOADING, ///< loading indicators TO_END, TO_INVALID, ///< Invalid transparency option }; typedef uint TransparencyOptionBits; ///< transparency option bits extern TransparencyOptionBits _transparency_opt; extern TransparencyOptionBits _transparency_lock; extern TransparencyOptionBits _invisibility_opt; extern byte _display_opt; /** * Check if the transparency option bit is set * and if we aren't in the game menu (there's never transparency) * * @param to the structure which transparency option is ask for */ static inline bool IsTransparencySet(TransparencyOption to) { return (HasBit(_transparency_opt, to) && _game_mode != GM_MENU); } /** * Check if the invisibility option bit is set * and if we aren't in the game menu (there's never transparency) * * @param to the structure which invisibility option is ask for */ static inline bool IsInvisibilitySet(TransparencyOption to) { return (HasBit(_transparency_opt & _invisibility_opt, to) && _game_mode != GM_MENU); } /** * Toggle the transparency option bit * * @param to the transparency option to be toggled */ static inline void ToggleTransparency(TransparencyOption to) { ToggleBit(_transparency_opt, to); } /** * Toggle the invisibility option bit * * @param to the structure which invisibility option is toggle */ static inline void ToggleInvisibility(TransparencyOption to) { ToggleBit(_invisibility_opt, to); } /** * Toggles between invisible and solid state. * If object is transparent, then it is made invisible. * Used by the keyboard shortcuts. * * @param to the object type which invisibility option to toggle */ static inline void ToggleInvisibilityWithTransparency(TransparencyOption to) { if (IsInvisibilitySet(to)) { ClrBit(_invisibility_opt, to); ClrBit(_transparency_opt, to); } else { SetBit(_invisibility_opt, to); SetBit(_transparency_opt, to); } } /** * Toggle the transparency lock bit * * @param to the transparency option to be locked or unlocked */ static inline void ToggleTransparencyLock(TransparencyOption to) { ToggleBit(_transparency_lock, to); } /** Set or clear all non-locked transparency options */ static inline void ResetRestoreAllTransparency() { /* if none of the non-locked options are set */ if ((_transparency_opt & ~_transparency_lock) == 0) { /* set all non-locked options */ _transparency_opt |= GB(~_transparency_lock, 0, TO_END); } else { /* clear all non-locked options */ _transparency_opt &= _transparency_lock; } MarkWholeScreenDirty(); } #endif /* TRANSPARENCY_H */ openttd-1.3.3/src/date_func.h0000644000000000000000000000247012246102611014557 0ustar rootroot/* $Id: date_func.h 22411 2011-05-02 17:42:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file date_func.h Functions related to dates. */ #ifndef DATE_FUNC_H #define DATE_FUNC_H #include "date_type.h" extern Year _cur_year; extern Month _cur_month; extern Date _date; extern DateFract _date_fract; extern uint16 _tick_counter; void SetDate(Date date, DateFract fract); void ConvertDateToYMD(Date date, YearMonthDay *ymd); Date ConvertYMDToDate(Year year, Month month, Day day); /** * Checks whether the given year is a leap year or not. * @param yr The year to check. * @return True if \c yr is a leap year, otherwise false. */ static inline bool IsLeapYear(Year yr) { return yr % 4 == 0 && (yr % 100 != 0 || yr % 400 == 0); } #endif /* DATE_FUNC_H */ openttd-1.3.3/src/economy_base.h0000644000000000000000000000460312246102611015272 0ustar rootroot/* $Id: economy_base.h 22411 2011-05-02 17:42:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file economy_base.h Base classes related to the economy. */ #ifndef ECONOMY_BASE_H #define ECONOMY_BASE_H #include "cargopacket.h" #include "company_type.h" /** Type of pool to store cargo payments in; little over 1 million. */ typedef Pool CargoPaymentPool; /** The actual pool to store cargo payments in. */ extern CargoPaymentPool _cargo_payment_pool; /** * Helper class to perform the cargo payment. */ struct CargoPayment : CargoPaymentPool::PoolItem<&_cargo_payment_pool> { Vehicle *front; ///< The front vehicle to do the payment of Money route_profit; ///< The amount of money to add/remove from the bank account Money visual_profit; ///< The visual profit to show /* Unsaved variables */ Company *owner; ///< The owner of the vehicle StationID current_station; ///< The current station CargoID ct; ///< The currently handled cargo type /** Constructor for pool saveload */ CargoPayment() {} CargoPayment(Vehicle *front); ~CargoPayment(); Money PayTransfer(const CargoPacket *cp, uint count); void PayFinalDelivery(const CargoPacket *cp, uint count); /** * Sets the currently handled cargo type. * @param ct the cargo type to handle from now on. */ void SetCargo(CargoID ct) { this->ct = ct; } }; /** * Iterate over all cargo payments from a given start position. * @param var The variable used for iterating. * @param start The start of the iteration. */ #define FOR_ALL_CARGO_PAYMENTS_FROM(var, start) FOR_ALL_ITEMS_FROM(CargoPayment, cargo_payment_index, var, start) /** * Iterate over all cargo payments. * @param var The variable used for iterating. */ #define FOR_ALL_CARGO_PAYMENTS(var) FOR_ALL_CARGO_PAYMENTS_FROM(var, 0) #endif /* ECONOMY_BASE_H */ openttd-1.3.3/src/depot.cpp0000644000000000000000000000350312246102611014273 0ustar rootroot/* $Id: depot.cpp 22411 2011-05-02 17:42:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot.cpp Handling of depots. */ #include "stdafx.h" #include "depot_base.h" #include "order_backup.h" #include "order_func.h" #include "window_func.h" #include "core/pool_func.hpp" #include "vehicle_gui.h" #include "vehiclelist.h" /** All our depots tucked away in a pool. */ DepotPool _depot_pool("Depot"); INSTANTIATE_POOL_METHODS(Depot) /** * Clean up a depot */ Depot::~Depot() { if (CleaningPool()) return; if (!IsDepotTile(this->xy) || GetDepotIndex(this->xy) != this->index) { /* It can happen there is no depot here anymore (TTO/TTD savegames) */ return; } /* Clear the order backup. */ OrderBackup::Reset(this->xy, false); /* Clear the depot from all order-lists */ RemoveOrderFromAllVehicles(OT_GOTO_DEPOT, this->index); /* Delete the depot-window */ DeleteWindowById(WC_VEHICLE_DEPOT, this->xy); /* Delete the depot list */ VehicleType vt; switch (GetTileType(this->xy)) { default: NOT_REACHED(); case MP_RAILWAY: vt = VEH_TRAIN; break; case MP_ROAD: vt = VEH_ROAD; break; case MP_WATER: vt = VEH_SHIP; break; } DeleteWindowById(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_DEPOT_LIST, vt, GetTileOwner(this->xy), this->index).Pack()); } openttd-1.3.3/src/newgrf_engine.h0000644000000000000000000001213212246102611015440 0ustar rootroot/* $Id: newgrf_engine.h 24693 2012-11-10 20:46:39Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_engine.h Functions for NewGRF engines. */ #ifndef NEWGRF_ENGINE_H #define NEWGRF_ENGINE_H #include "direction_type.h" #include "newgrf_callbacks.h" #include "newgrf_properties.h" #include "vehicle_type.h" #include "engine_type.h" #include "gfx_type.h" #include "newgrf_spritegroup.h" /** Resolver for a vehicle scope. */ struct VehicleScopeResolver : public ScopeResolver { const struct Vehicle *v; ///< The vehicle being resolved. EngineID self_type; ///< Type of the vehicle. bool info_view; ///< Indicates if the item is being drawn in an info window. VehicleScopeResolver(ResolverObject *ro, EngineID engine_type, const Vehicle *v, bool info_view); void SetVehicle(const Vehicle *v) { this->v = v; } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; /* virtual */ void SetTriggers(int triggers) const; }; /** Resolver for a vehicle (chain) */ struct VehicleResolverObject : public ResolverObject { VehicleScopeResolver self_scope; ///< Scope resolver for the indicated vehicle. VehicleScopeResolver parent_scope; ///< Scope resolver for its parent vehicle. VehicleScopeResolver relative_scope; ///< Scope resolver for an other vehicle in the chain. byte cached_relative_count; ///< Relative position of the other vehicle. VehicleResolverObject(EngineID engine_type, const Vehicle *v, bool info_view = false, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); /* virtual */ ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0); /* virtual */ const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const; }; static const uint TRAININFO_DEFAULT_VEHICLE_WIDTH = 29; static const uint ROADVEHINFO_DEFAULT_VEHICLE_WIDTH = 32; static const uint VEHICLEINFO_FULL_VEHICLE_WIDTH = 32; void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const struct SpriteGroup *group, EngineID *train_id, uint trains); const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, EngineID overriding_engine); void SetCustomEngineSprites(EngineID engine, byte cargo, const struct SpriteGroup *group); SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type); SpriteID GetRotorOverrideSprite(EngineID engine, const struct Aircraft *v, bool info_view, EngineImageType image_type); #define GetCustomRotorSprite(v, i, image_type) GetRotorOverrideSprite(v->engine_type, v, i, image_type) #define GetCustomRotorIcon(et, image_type) GetRotorOverrideSprite(et, NULL, true, image_type) /* Forward declaration of GRFFile, to avoid unnecessary inclusion of newgrf.h * elsewhere... */ struct GRFFile; void SetEngineGRF(EngineID engine, const struct GRFFile *file); uint16 GetVehicleCallback(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v); uint16 GetVehicleCallbackParent(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent); bool UsesWagonOverride(const Vehicle *v); #define GetCustomVehicleSprite(v, direction, image_type) GetCustomEngineSprite(v->engine_type, v, direction, image_type) #define GetCustomVehicleIcon(et, direction, image_type) GetCustomEngineSprite(et, NULL, direction, image_type) /* Handler to Evaluate callback 36. If the callback fails (i.e. most of the * time) orig_value is returned */ uint GetVehicleProperty(const Vehicle *v, PropertyID property, uint orig_value); uint GetEngineProperty(EngineID engine, PropertyID property, uint orig_value, const Vehicle *v = NULL); enum VehicleTrigger { VEHICLE_TRIGGER_NEW_CARGO = 0x01, /* Externally triggered only for the first vehicle in chain */ VEHICLE_TRIGGER_DEPOT = 0x02, /* Externally triggered only for the first vehicle in chain, only if whole chain is empty */ VEHICLE_TRIGGER_EMPTY = 0x04, /* Not triggered externally (called for the whole chain if we got NEW_CARGO) */ VEHICLE_TRIGGER_ANY_NEW_CARGO = 0x08, /* Externally triggered for each vehicle in chain */ VEHICLE_TRIGGER_CALLBACK_32 = 0x10, }; void TriggerVehicle(Vehicle *veh, VehicleTrigger trigger); void UnloadWagonOverrides(Engine *e); void AlterVehicleListOrder(EngineID engine, uint target); void CommitVehicleListOrderChanges(); EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_id); #endif /* NEWGRF_ENGINE_H */ openttd-1.3.3/src/pbs.h0000644000000000000000000000506712246102611013420 0ustar rootroot/* $Id: pbs.h 24905 2013-01-11 07:39:25Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file pbs.h PBS support routines */ #ifndef PBS_H #define PBS_H #include "tile_type.h" #include "direction_type.h" #include "track_type.h" #include "vehicle_type.h" TrackBits GetReservedTrackbits(TileIndex t); void SetRailStationPlatformReservation(TileIndex start, DiagDirection dir, bool b); bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations = true); void UnreserveRailTrack(TileIndex tile, Track t); /** This struct contains information about the end of a reserved path. */ struct PBSTileInfo { TileIndex tile; ///< Tile the path ends, INVALID_TILE if no valid path was found. Trackdir trackdir; ///< The reserved trackdir on the tile. bool okay; ///< True if tile is a safe waiting position, false otherwise. /** * Create an empty PBSTileInfo. */ PBSTileInfo() : tile(INVALID_TILE), trackdir(INVALID_TRACKDIR), okay(false) {} /** * Create a PBSTileInfo with given tile, track direction and safe waiting position information. * @param _t The tile where the path ends. * @param _td The reserved track dir on the tile. * @param _okay Whether the tile is a safe waiting point or not. */ PBSTileInfo(TileIndex _t, Trackdir _td, bool _okay) : tile(_t), trackdir(_td), okay(_okay) {} }; PBSTileInfo FollowTrainReservation(const Train *v, Vehicle **train_on_res = NULL); bool IsSafeWaitingPosition(const Train *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg = false); bool IsWaitingPositionFree(const Train *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg = false); Train *GetTrainForReservation(TileIndex tile, Track track); /** * Check whether some of tracks is reserved on a tile. * * @param tile the tile * @param tracks the tracks to test * @return true if at least on of tracks is reserved */ static inline bool HasReservedTracks(TileIndex tile, TrackBits tracks) { return (GetReservedTrackbits(tile) & tracks) != TRACK_BIT_NONE; } #endif /* PBS_H */ openttd-1.3.3/src/crashlog.h0000644000000000000000000001131412246102611014426 0ustar rootroot/* $Id: crashlog.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file crashlog.h Functions to be called to log a crash */ #ifndef CRASHLOG_H #define CRASHLOG_H /** * Helper class for creating crash logs. */ class CrashLog { private: /** Pointer to the error message. */ static const char *message; /** Temporary 'local' location of the buffer. */ static char *gamelog_buffer; /** Temporary 'local' location of the end of the buffer. */ static const char *gamelog_last; static void GamelogFillCrashLog(const char *s); protected: /** * Writes OS' version to the buffer. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ virtual char *LogOSVersion(char *buffer, const char *last) const = 0; /** * Writes compiler (and its version, if available) to the buffer. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ virtual char *LogCompiler(char *buffer, const char *last) const; /** * Writes actually encountered error to the buffer. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @param message Message passed to use for possible errors. Can be NULL. * @return the position of the \c '\0' character after the buffer. */ virtual char *LogError(char *buffer, const char *last, const char *message) const = 0; /** * Writes the stack trace to the buffer, if there is information about it * available. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ virtual char *LogStacktrace(char *buffer, const char *last) const = 0; /** * Writes information about the data in the registers, if there is * information about it available. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ virtual char *LogRegisters(char *buffer, const char *last) const; /** * Writes the dynamically linked libraries/modules to the buffer, if there * is information about it available. * @param buffer The begin where to write at. * @param last The last position in the buffer to write to. * @return the position of the \c '\0' character after the buffer. */ virtual char *LogModules(char *buffer, const char *last) const; char *LogOpenTTDVersion(char *buffer, const char *last) const; char *LogConfiguration(char *buffer, const char *last) const; char *LogLibraries(char *buffer, const char *last) const; char *LogGamelog(char *buffer, const char *last) const; public: /** Stub destructor to silence some compilers. */ virtual ~CrashLog() {} char *FillCrashLog(char *buffer, const char *last) const; bool WriteCrashLog(const char *buffer, char *filename, const char *filename_last) const; /** * Write the (crash) dump to a file. * @note On success the filename will be filled with the full path of the * crash dump file. Make sure filename is at least \c MAX_PATH big. * @param filename Output for the filename of the written file. * @param filename_last The last position in the filename buffer. * @return if less than 0, error. If 0 no dump is made, otherwise the dump * was successful (not all OSes support dumping files). */ virtual int WriteCrashDump(char *filename, const char *filename_last) const; bool WriteSavegame(char *filename, const char *filename_last) const; bool WriteScreenshot(char *filename, const char *filename_last) const; bool MakeCrashLog() const; /** * Initialiser for crash logs; do the appropriate things so crashes are * handled by our crash handler instead of returning straight to the OS. * @note must be implemented by all implementers of CrashLog. */ static void InitialiseCrashLog(); static void SetErrorMessage(const char *message); static void AfterCrashLogCleanup(); }; #endif /* CRASHLOG_H */ openttd-1.3.3/src/road_map.cpp0000644000000000000000000000466412246102611014753 0ustar rootroot/* $Id: road_map.cpp 21846 2011-01-18 23:09:43Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_map.cpp Complex road accessors. */ #include "stdafx.h" #include "station_map.h" #include "tunnelbridge_map.h" /** * Returns the RoadBits on an arbitrary tile * Special behaviour: * - road depots: entrance is treated as road piece * - road tunnels: entrance is treated as road piece * - bridge ramps: start of the ramp is treated as road piece * - bridge middle parts: bridge itself is ignored * * If straight_tunnel_bridge_entrance is set a ROAD_X or ROAD_Y * for bridge ramps and tunnel entrances is returned depending * on the orientation of the tunnel or bridge. * @param tile the tile to get the road bits for * @param rt the road type to get the road bits form * @param straight_tunnel_bridge_entrance whether to return straight road bits for tunnels/bridges. * @return the road bits of the given tile */ RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance) { if (!HasTileRoadType(tile, rt)) return ROAD_NONE; switch (GetTileType(tile)) { case MP_ROAD: switch (GetRoadTileType(tile)) { default: case ROAD_TILE_NORMAL: return GetRoadBits(tile, rt); case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile); case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); } case MP_STATION: if (!IsRoadStopTile(tile)) return ROAD_NONE; if (IsDriveThroughStopTile(tile)) return (GetRoadStopDir(tile) == DIAGDIR_NE) ? ROAD_X : ROAD_Y; return DiagDirToRoadBits(GetRoadStopDir(tile)); case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return ROAD_NONE; return straight_tunnel_bridge_entrance ? AxisToRoadBits(DiagDirToAxis(GetTunnelBridgeDirection(tile))) : DiagDirToRoadBits(ReverseDiagDir(GetTunnelBridgeDirection(tile))); default: return ROAD_NONE; } } openttd-1.3.3/src/window.cpp0000644000000000000000000031523512246102611014477 0ustar rootroot/* $Id: window.cpp 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file window.cpp Windowing system, widgets and events */ #include "stdafx.h" #include #include "company_func.h" #include "gfx_func.h" #include "console_func.h" #include "console_gui.h" #include "viewport_func.h" #include "progress.h" #include "blitter/factory.hpp" #include "zoom_func.h" #include "vehicle_base.h" #include "window_func.h" #include "tilehighlight_func.h" #include "network/network.h" #include "querystring_gui.h" #include "widgets/dropdown_func.h" #include "strings_func.h" #include "settings_type.h" #include "newgrf_debug.h" #include "hotkeys.h" #include "toolbar_gui.h" #include "statusbar_gui.h" #include "error.h" #include "game/game.hpp" #include "video/video_driver.hpp" /** Values for _settings_client.gui.auto_scrolling */ enum ViewportAutoscrolling { VA_DISABLED, //!< Do not autoscroll when mouse is at edge of viewport. VA_MAIN_VIEWPORT_FULLSCREEN, //!< Scroll main viewport at edge when using fullscreen. VA_MAIN_VIEWPORT, //!< Scroll main viewport at edge. VA_EVERY_VIEWPORT, //!< Scroll all viewports at their edges. }; static Point _drag_delta; ///< delta between mouse cursor and upper left corner of dragged window static Window *_mouseover_last_w = NULL; ///< Window of the last #MOUSEOVER event. static Window *_last_scroll_window = NULL; ///< Window of the last scroll event. /** List of windows opened at the screen sorted from the front. */ Window *_z_front_window = NULL; /** List of windows opened at the screen sorted from the back. */ Window *_z_back_window = NULL; /** If false, highlight is white, otherwise the by the widget defined colour. */ bool _window_highlight_colour = false; /* * Window that currently has focus. - The main purpose is to generate * #FocusLost events, not to give next window in z-order focus when a * window is closed. */ Window *_focused_window; Point _cursorpos_drag_start; int _scrollbar_start_pos; int _scrollbar_size; byte _scroller_click_timeout = 0; bool _scrolling_viewport; ///< A viewport is being scrolled with the mouse. bool _mouse_hovering; ///< The mouse is hovering over the same point. SpecialMouseMode _special_mouse_mode; ///< Mode of the mouse. /** Window description constructor. */ WindowDesc::WindowDesc(WindowPosition def_pos, int16 def_width, int16 def_height, WindowClass window_class, WindowClass parent_class, uint32 flags, const NWidgetPart *nwid_parts, int16 nwid_length) : default_pos(def_pos), default_width(def_width), default_height(def_height), cls(window_class), parent_cls(parent_class), flags(flags), nwid_parts(nwid_parts), nwid_length(nwid_length) { } WindowDesc::~WindowDesc() { } /** * Compute the row of a widget that a user clicked in. * @param clickpos Vertical position of the mouse click. * @param widget Widget number of the widget clicked in. * @param padding Amount of empty space between the widget edge and the top of the first row. * @param line_height Height of a single row. A negative value means using the vertical resize step of the widget. * @return Row number clicked at. If clicked at a wrong position, #INT_MAX is returned. * @note The widget does not know where a list printed at the widget ends, so below a list is not a wrong position. */ int Window::GetRowFromWidget(int clickpos, int widget, int padding, int line_height) const { const NWidgetBase *wid = this->GetWidget(widget); if (line_height < 0) line_height = wid->resize_y; if (clickpos < (int)wid->pos_y + padding) return INT_MAX; return (clickpos - (int)wid->pos_y - padding) / line_height; } /** * Disable the highlighted status of all widgets. */ void Window::DisableAllWidgetHighlight() { for (uint i = 0; i < this->nested_array_size; i++) { NWidgetBase *nwid = this->GetWidget(i); if (nwid == NULL) continue; if (nwid->IsHighlighted()) { nwid->SetHighlighted(TC_INVALID); this->SetWidgetDirty(i); } } CLRBITS(this->flags, WF_HIGHLIGHTED); } /** * Sets the highlighted status of a widget. * @param widget_index index of this widget in the window * @param highlighted_colour Colour of highlight, or TC_INVALID to disable. */ void Window::SetWidgetHighlight(byte widget_index, TextColour highlighted_colour) { assert(widget_index < this->nested_array_size); NWidgetBase *nwid = this->GetWidget(widget_index); if (nwid == NULL) return; nwid->SetHighlighted(highlighted_colour); this->SetWidgetDirty(widget_index); if (highlighted_colour != TC_INVALID) { /* If we set a highlight, the window has a highlight */ this->flags |= WF_HIGHLIGHTED; } else { /* If we disable a highlight, check all widgets if anyone still has a highlight */ bool valid = false; for (uint i = 0; i < this->nested_array_size; i++) { NWidgetBase *nwid = this->GetWidget(i); if (nwid == NULL) continue; if (!nwid->IsHighlighted()) continue; valid = true; } /* If nobody has a highlight, disable the flag on the window */ if (!valid) CLRBITS(this->flags, WF_HIGHLIGHTED); } } /** * Gets the highlighted status of a widget. * @param widget_index index of this widget in the window * @return status of the widget ie: highlighted = true, not highlighted = false */ bool Window::IsWidgetHighlighted(byte widget_index) const { assert(widget_index < this->nested_array_size); const NWidgetBase *nwid = this->GetWidget(widget_index); if (nwid == NULL) return false; return nwid->IsHighlighted(); } /** * A dropdown window associated to this window has been closed. * @param pt the point inside the window the mouse resides on after closure. * @param widget the widget (button) that the dropdown is associated with. * @param index the element in the dropdown that is selected. * @param instant_close whether the dropdown was configured to close on mouse up. */ void Window::OnDropdownClose(Point pt, int widget, int index, bool instant_close) { if (widget < 0) return; if (instant_close) { /* Send event for selected option if we're still * on the parent button of the dropdown (behaviour of the dropdowns in the main toolbar). */ if (GetWidgetFromPos(this, pt.x, pt.y) == widget) { this->OnDropdownSelect(widget, index); } } /* Raise the dropdown button */ if (this->nested_array != NULL) { NWidgetCore *nwi2 = this->GetWidget(widget); if ((nwi2->type & WWT_MASK) == NWID_BUTTON_DROPDOWN) { nwi2->disp_flags &= ~ND_DROPDOWN_ACTIVE; } else { this->RaiseWidget(widget); } } else { this->RaiseWidget(widget); } this->SetWidgetDirty(widget); } /** * Return the Scrollbar to a widget index. * @param widnum Scrollbar widget index * @return Scrollbar to the widget */ const Scrollbar *Window::GetScrollbar(uint widnum) const { return this->GetWidget(widnum); } /** * Return the Scrollbar to a widget index. * @param widnum Scrollbar widget index * @return Scrollbar to the widget */ Scrollbar *Window::GetScrollbar(uint widnum) { return this->GetWidget(widnum); } /** * Return the querystring associated to a editbox. * @param widnum Editbox widget index * @return QueryString or NULL. */ const QueryString *Window::GetQueryString(uint widnum) const { const SmallMap::Pair *query = this->querystrings.Find(widnum); return query != this->querystrings.End() ? query->second : NULL; } /** * Return the querystring associated to a editbox. * @param widnum Editbox widget index * @return QueryString or NULL. */ QueryString *Window::GetQueryString(uint widnum) { SmallMap::Pair *query = this->querystrings.Find(widnum); return query != this->querystrings.End() ? query->second : NULL; } /** * Get the current input text if an edit box has the focus. * @return The currently focused input text or NULL if no input focused. */ /* virtual */ const char *Window::GetFocusedText() const { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { return this->GetQueryString(this->nested_focus->index)->GetText(); } return NULL; } /** * Get the string at the caret if an edit box has the focus. * @return The text at the caret or NULL if no edit box is focused. */ /* virtual */ const char *Window::GetCaret() const { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { return this->GetQueryString(this->nested_focus->index)->GetCaret(); } return NULL; } /** * Get the range of the currently marked input text. * @param[out] length Length of the marked text. * @return Pointer to the start of the marked text or NULL if no text is marked. */ /* virtual */ const char *Window::GetMarkedText(size_t *length) const { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { return this->GetQueryString(this->nested_focus->index)->GetMarkedText(length); } return NULL; } /** * Get the current caret position if an edit box has the focus. * @return Top-left location of the caret, relative to the window. */ /* virtual */ Point Window::GetCaretPosition() const { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { return this->GetQueryString(this->nested_focus->index)->GetCaretPosition(this, this->nested_focus->index); } Point pt = {0, 0}; return pt; } /** * Get the bounding rectangle for a text range if an edit box has the focus. * @param from Start of the string range. * @param to End of the string range. * @return Rectangle encompassing the string range, relative to the window. */ /* virtual */ Rect Window::GetTextBoundingRect(const char *from, const char *to) const { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { return this->GetQueryString(this->nested_focus->index)->GetBoundingRect(this, this->nested_focus->index, from, to); } Rect r = {0, 0, 0, 0}; return r; } /** * Get the character that is rendered at a position by the focused edit box. * @param pt The position to test. * @return Pointer to the character at the position or NULL if no character is at the position. */ /* virtual */ const char *Window::GetTextCharacterAtPosition(const Point &pt) const { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) { return this->GetQueryString(this->nested_focus->index)->GetCharAtPosition(this, this->nested_focus->index, pt); } return NULL; } /** * Set the window that has the focus * @param w The window to set the focus on */ void SetFocusedWindow(Window *w) { if (_focused_window == w) return; /* Invalidate focused widget */ if (_focused_window != NULL) { if (_focused_window->nested_focus != NULL) _focused_window->nested_focus->SetDirty(_focused_window); } /* Remember which window was previously focused */ Window *old_focused = _focused_window; _focused_window = w; /* So we can inform it that it lost focus */ if (old_focused != NULL) old_focused->OnFocusLost(); if (_focused_window != NULL) _focused_window->OnFocus(); } /** * Check if an edit box is in global focus. That is if focused window * has a edit box as focused widget, or if a console is focused. * @return returns true if an edit box is in global focus or if the focused window is a console, else false */ bool EditBoxInGlobalFocus() { if (_focused_window == NULL) return false; /* The console does not have an edit box so a special case is needed. */ if (_focused_window->window_class == WC_CONSOLE) return true; return _focused_window->nested_focus != NULL && _focused_window->nested_focus->type == WWT_EDITBOX; } /** * Makes no widget on this window have focus. The function however doesn't change which window has focus. */ void Window::UnfocusFocusedWidget() { if (this->nested_focus != NULL) { if (this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); /* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */ this->nested_focus->SetDirty(this); this->nested_focus = NULL; } } /** * Set focus within this window to the given widget. The function however doesn't change which window has focus. * @param widget_index Index of the widget in the window to set the focus to. * @return Focus has changed. */ bool Window::SetFocusedWidget(int widget_index) { /* Do nothing if widget_index is already focused, or if it wasn't a valid widget. */ if ((uint)widget_index >= this->nested_array_size) return false; assert(this->nested_array[widget_index] != NULL); // Setting focus to a non-existing widget is a bad idea. if (this->nested_focus != NULL) { if (this->GetWidget(widget_index) == this->nested_focus) return false; /* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */ this->nested_focus->SetDirty(this); if (this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); } this->nested_focus = this->GetWidget(widget_index); return true; } /** * Called when window looses focus */ void Window::OnFocusLost() { if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); } /** * Sets the enabled/disabled status of a list of widgets. * By default, widgets are enabled. * On certain conditions, they have to be disabled. * @param disab_stat status to use ie: disabled = true, enabled = false * @param widgets list of widgets ended by WIDGET_LIST_END */ void CDECL Window::SetWidgetsDisabledState(bool disab_stat, int widgets, ...) { va_list wdg_list; va_start(wdg_list, widgets); while (widgets != WIDGET_LIST_END) { SetWidgetDisabledState(widgets, disab_stat); widgets = va_arg(wdg_list, int); } va_end(wdg_list); } /** * Sets the lowered/raised status of a list of widgets. * @param lowered_stat status to use ie: lowered = true, raised = false * @param widgets list of widgets ended by WIDGET_LIST_END */ void CDECL Window::SetWidgetsLoweredState(bool lowered_stat, int widgets, ...) { va_list wdg_list; va_start(wdg_list, widgets); while (widgets != WIDGET_LIST_END) { SetWidgetLoweredState(widgets, lowered_stat); widgets = va_arg(wdg_list, int); } va_end(wdg_list); } /** * Raise the buttons of the window. * @param autoraise Raise only the push buttons of the window. */ void Window::RaiseButtons(bool autoraise) { for (uint i = 0; i < this->nested_array_size; i++) { if (this->nested_array[i] == NULL) continue; WidgetType type = this->nested_array[i]->type; if (((type & ~WWB_PUSHBUTTON) < WWT_LAST || type == NWID_PUSHBUTTON_DROPDOWN) && (!autoraise || (type & WWB_PUSHBUTTON) || type == WWT_EDITBOX) && this->IsWidgetLowered(i)) { this->RaiseWidget(i); this->SetWidgetDirty(i); } } } /** * Invalidate a widget, i.e. mark it as being changed and in need of redraw. * @param widget_index the widget to redraw. */ void Window::SetWidgetDirty(byte widget_index) const { /* Sometimes this function is called before the window is even fully initialized */ if (this->nested_array == NULL) return; this->nested_array[widget_index]->SetDirty(this); } /** * Do all things to make a button look clicked and mark it to be * unclicked in a few ticks. * @param widget the widget to "click" */ void Window::HandleButtonClick(byte widget) { this->LowerWidget(widget); this->SetTimeout(); this->SetWidgetDirty(widget); } static void StartWindowDrag(Window *w); static void StartWindowSizing(Window *w, bool to_left); /** * Dispatch left mouse-button (possibly double) click in window. * @param w Window to dispatch event in * @param x X coordinate of the click * @param y Y coordinate of the click * @param click_count Number of fast consecutive clicks at same position */ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count) { NWidgetCore *nw = w->nested_root->GetWidgetFromPos(x, y); WidgetType widget_type = (nw != NULL) ? nw->type : WWT_EMPTY; bool focused_widget_changed = false; /* If clicked on a window that previously did dot have focus */ if (_focused_window != w && // We already have focus, right? (w->desc_flags & WDF_NO_FOCUS) == 0 && // Don't lose focus to toolbars widget_type != WWT_CLOSEBOX) { // Don't change focused window if 'X' (close button) was clicked focused_widget_changed = true; SetFocusedWindow(w); w->OnFocus(); } if (nw == NULL) return; // exit if clicked outside of widgets /* don't allow any interaction if the button has been disabled */ if (nw->IsDisabled()) return; int widget_index = nw->index; ///< Index of the widget /* Clicked on a widget that is not disabled. * So unless the clicked widget is the caption bar, change focus to this widget. * Exception: In the OSK we always want the editbox to stay focussed. */ if (widget_type != WWT_CAPTION && w->window_class != WC_OSK) { /* focused_widget_changed is 'now' only true if the window this widget * is in gained focus. In that case it must remain true, also if the * local widget focus did not change. As such it's the logical-or of * both changed states. * * If this is not preserved, then the OSK window would be opened when * a user has the edit box focused and then click on another window and * then back again on the edit box (to type some text). */ focused_widget_changed |= w->SetFocusedWidget(widget_index); } /* Close any child drop down menus. If the button pressed was the drop down * list's own button, then we should not process the click any further. */ if (HideDropDownMenu(w) == widget_index && widget_index >= 0) return; if ((widget_type & ~WWB_PUSHBUTTON) < WWT_LAST && (widget_type & WWB_PUSHBUTTON)) w->HandleButtonClick(widget_index); Point pt = { x, y }; switch (widget_type) { case NWID_VSCROLLBAR: case NWID_HSCROLLBAR: ScrollbarClickHandler(w, nw, x, y); break; case WWT_EDITBOX: { QueryString *query = w->GetQueryString(widget_index); if (query != NULL) query->ClickEditBox(w, pt, widget_index, click_count, focused_widget_changed); break; } case WWT_CLOSEBOX: // 'X' delete w; return; case WWT_CAPTION: // 'Title bar' StartWindowDrag(w); return; case WWT_RESIZEBOX: /* When the resize widget is on the left size of the window * we assume that that button is used to resize to the left. */ StartWindowSizing(w, (int)nw->pos_x < (w->width / 2)); nw->SetDirty(w); return; case WWT_DEBUGBOX: w->ShowNewGRFInspectWindow(); break; case WWT_SHADEBOX: nw->SetDirty(w); w->SetShaded(!w->IsShaded()); return; case WWT_STICKYBOX: w->flags ^= WF_STICKY; nw->SetDirty(w); return; default: break; } /* Widget has no index, so the window is not interested in it. */ if (widget_index < 0) return; /* Check if the widget is highlighted; if so, disable highlight and dispatch an event to the GameScript */ if (w->IsWidgetHighlighted(widget_index)) { w->SetWidgetHighlight(widget_index, TC_INVALID); Game::NewEvent(new ScriptEventWindowWidgetClick((ScriptWindow::WindowClass)w->window_class, w->window_number, widget_index)); } w->OnClick(pt, widget_index, click_count); } /** * Dispatch right mouse-button click in window. * @param w Window to dispatch event in * @param x X coordinate of the click * @param y Y coordinate of the click */ static void DispatchRightClickEvent(Window *w, int x, int y) { NWidgetCore *wid = w->nested_root->GetWidgetFromPos(x, y); if (wid == NULL) return; /* No widget to handle, or the window is not interested in it. */ if (wid->index >= 0) { Point pt = { x, y }; if (w->OnRightClick(pt, wid->index)) return; } if (_settings_client.gui.hover_delay == 0 && wid->tool_tip != 0) GuiShowTooltips(w, wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK); } /** * Dispatch hover of the mouse over a window. * @param w Window to dispatch event in. * @param x X coordinate of the click. * @param y Y coordinate of the click. */ static void DispatchHoverEvent(Window *w, int x, int y) { NWidgetCore *wid = w->nested_root->GetWidgetFromPos(x, y); /* No widget to handle */ if (wid == NULL) return; /* Show the tooltip if there is any */ if (wid->tool_tip != 0) { GuiShowTooltips(w, wid->tool_tip); return; } /* Widget has no index, so the window is not interested in it. */ if (wid->index < 0) return; Point pt = { x, y }; w->OnHover(pt, wid->index); } /** * Dispatch the mousewheel-action to the window. * The window will scroll any compatible scrollbars if the mouse is pointed over the bar or its contents * @param w Window * @param nwid the widget where the scrollwheel was used * @param wheel scroll up or down */ static void DispatchMouseWheelEvent(Window *w, NWidgetCore *nwid, int wheel) { if (nwid == NULL) return; /* Using wheel on caption/shade-box shades or unshades the window. */ if (nwid->type == WWT_CAPTION || nwid->type == WWT_SHADEBOX) { w->SetShaded(wheel < 0); return; } /* Wheeling a vertical scrollbar. */ if (nwid->type == NWID_VSCROLLBAR) { NWidgetScrollbar *sb = static_cast(nwid); if (sb->GetCount() > sb->GetCapacity()) { sb->UpdatePosition(wheel); w->SetDirty(); } return; } /* Scroll the widget attached to the scrollbar. */ Scrollbar *sb = (nwid->scrollbar_index >= 0 ? w->GetScrollbar(nwid->scrollbar_index) : NULL); if (sb != NULL && sb->GetCount() > sb->GetCapacity()) { sb->UpdatePosition(wheel); w->SetDirty(); } } /** * Returns whether a window may be shown or not. * @param w The window to consider. * @return True iff it may be shown, otherwise false. */ static bool MayBeShown(const Window *w) { /* If we're not modal, everything is okay. */ if (!HasModalProgress()) return true; switch (w->window_class) { case WC_MAIN_WINDOW: ///< The background, i.e. the game. case WC_MODAL_PROGRESS: ///< The actual progress window. case WC_CONFIRM_POPUP_QUERY: ///< The abort window. return true; default: return false; } } /** * Generate repaint events for the visible part of window w within the rectangle. * * The function goes recursively upwards in the window stack, and splits the rectangle * into multiple pieces at the window edges, so obscured parts are not redrawn. * * @param w Window that needs to be repainted * @param left Left edge of the rectangle that should be repainted * @param top Top edge of the rectangle that should be repainted * @param right Right edge of the rectangle that should be repainted * @param bottom Bottom edge of the rectangle that should be repainted */ static void DrawOverlappedWindow(Window *w, int left, int top, int right, int bottom) { const Window *v; FOR_ALL_WINDOWS_FROM_BACK_FROM(v, w->z_front) { if (MayBeShown(v) && right > v->left && bottom > v->top && left < v->left + v->width && top < v->top + v->height) { /* v and rectangle intersect with each other */ int x; if (left < (x = v->left)) { DrawOverlappedWindow(w, left, top, x, bottom); DrawOverlappedWindow(w, x, top, right, bottom); return; } if (right > (x = v->left + v->width)) { DrawOverlappedWindow(w, left, top, x, bottom); DrawOverlappedWindow(w, x, top, right, bottom); return; } if (top < (x = v->top)) { DrawOverlappedWindow(w, left, top, right, x); DrawOverlappedWindow(w, left, x, right, bottom); return; } if (bottom > (x = v->top + v->height)) { DrawOverlappedWindow(w, left, top, right, x); DrawOverlappedWindow(w, left, x, right, bottom); return; } return; } } /* Setup blitter, and dispatch a repaint event to window *wz */ DrawPixelInfo *dp = _cur_dpi; dp->width = right - left; dp->height = bottom - top; dp->left = left - w->left; dp->top = top - w->top; dp->pitch = _screen.pitch; dp->dst_ptr = BlitterFactoryBase::GetCurrentBlitter()->MoveTo(_screen.dst_ptr, left, top); dp->zoom = ZOOM_LVL_NORMAL; w->OnPaint(); } /** * From a rectangle that needs redrawing, find the windows that intersect with the rectangle. * These windows should be re-painted. * @param left Left edge of the rectangle that should be repainted * @param top Top edge of the rectangle that should be repainted * @param right Right edge of the rectangle that should be repainted * @param bottom Bottom edge of the rectangle that should be repainted */ void DrawOverlappedWindowForAll(int left, int top, int right, int bottom) { Window *w; DrawPixelInfo bk; _cur_dpi = &bk; FOR_ALL_WINDOWS_FROM_BACK(w) { if (MayBeShown(w) && right > w->left && bottom > w->top && left < w->left + w->width && top < w->top + w->height) { /* Window w intersects with the rectangle => needs repaint */ DrawOverlappedWindow(w, left, top, right, bottom); } } } /** * Mark entire window as dirty (in need of re-paint) * @ingroup dirty */ void Window::SetDirty() const { SetDirtyBlocks(this->left, this->top, this->left + this->width, this->top + this->height); } /** * Re-initialize a window, and optionally change its size. * @param rx Horizontal resize of the window. * @param ry Vertical resize of the window. * @note For just resizing the window, use #ResizeWindow instead. */ void Window::ReInit(int rx, int ry) { this->SetDirty(); // Mark whole current window as dirty. /* Save current size. */ int window_width = this->width; int window_height = this->height; this->OnInit(); /* Re-initialize the window from the ground up. No need to change the nested_array, as all widgets stay where they are. */ this->nested_root->SetupSmallestSize(this, false); this->nested_root->AssignSizePosition(ST_SMALLEST, 0, 0, this->nested_root->smallest_x, this->nested_root->smallest_y, _current_text_dir == TD_RTL); this->width = this->nested_root->smallest_x; this->height = this->nested_root->smallest_y; this->resize.step_width = this->nested_root->resize_x; this->resize.step_height = this->nested_root->resize_y; /* Resize as close to the original size + requested resize as possible. */ window_width = max(window_width + rx, this->width); window_height = max(window_height + ry, this->height); int dx = (this->resize.step_width == 0) ? 0 : window_width - this->width; int dy = (this->resize.step_height == 0) ? 0 : window_height - this->height; /* dx and dy has to go by step.. calculate it. * The cast to int is necessary else dx/dy are implicitly casted to unsigned int, which won't work. */ if (this->resize.step_width > 1) dx -= dx % (int)this->resize.step_width; if (this->resize.step_height > 1) dy -= dy % (int)this->resize.step_height; ResizeWindow(this, dx, dy); /* ResizeWindow() does this->SetDirty() already, no need to do it again here. */ } /** * Set the shaded state of the window to \a make_shaded. * @param make_shaded If \c true, shade the window (roll up until just the title bar is visible), else unshade/unroll the window to its original size. * @note The method uses #Window::ReInit(), thus after the call, the whole window should be considered changed. */ void Window::SetShaded(bool make_shaded) { if (this->shade_select == NULL) return; int desired = make_shaded ? SZSP_HORIZONTAL : 0; if (this->shade_select->shown_plane != desired) { if (make_shaded) { this->unshaded_size.width = this->width; this->unshaded_size.height = this->height; this->shade_select->SetDisplayedPlane(desired); this->ReInit(0, -this->height); } else { this->shade_select->SetDisplayedPlane(desired); int dx = ((int)this->unshaded_size.width > this->width) ? (int)this->unshaded_size.width - this->width : 0; int dy = ((int)this->unshaded_size.height > this->height) ? (int)this->unshaded_size.height - this->height : 0; this->ReInit(dx, dy); } } } /** * Find the Window whose parent pointer points to this window * @param w parent Window to find child of * @param wc Window class of the window to remove; #WC_INVALID if class does not matter * @return a Window pointer that is the child of \a w, or \c NULL otherwise */ static Window *FindChildWindow(const Window *w, WindowClass wc) { Window *v; FOR_ALL_WINDOWS_FROM_BACK(v) { if ((wc == WC_INVALID || wc == v->window_class) && v->parent == w) return v; } return NULL; } /** * Delete all children a window might have in a head-recursive manner * @param wc Window class of the window to remove; #WC_INVALID if class does not matter */ void Window::DeleteChildWindows(WindowClass wc) const { Window *child = FindChildWindow(this, wc); while (child != NULL) { delete child; child = FindChildWindow(this, wc); } } /** * Remove window and all its child windows from the window stack. */ Window::~Window() { if (_thd.window_class == this->window_class && _thd.window_number == this->window_number) { ResetObjectToPlace(); } /* Prevent Mouseover() from resetting mouse-over coordinates on a non-existing window */ if (_mouseover_last_w == this) _mouseover_last_w = NULL; /* We can't scroll the window when it's closed. */ if (_last_scroll_window == this) _last_scroll_window = NULL; /* Make sure we don't try to access this window as the focused window when it doesn't exist anymore. */ if (_focused_window == this) { this->OnFocusLost(); _focused_window = NULL; } this->DeleteChildWindows(); if (this->viewport != NULL) DeleteWindowViewport(this); this->SetDirty(); free(this->nested_array); // Contents is released through deletion of #nested_root. delete this->nested_root; this->window_class = WC_INVALID; } /** * Find a window by its class and window number * @param cls Window class * @param number Number of the window within the window class * @return Pointer to the found window, or \c NULL if not available */ Window *FindWindowById(WindowClass cls, WindowNumber number) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls && w->window_number == number) return w; } return NULL; } /** * Find any window by its class. Useful when searching for a window that uses * the window number as a #WindowType, like #WC_SEND_NETWORK_MSG. * @param cls Window class * @return Pointer to the found window, or \c NULL if not available */ Window *FindWindowByClass(WindowClass cls) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls) return w; } return NULL; } /** * Delete a window by its class and window number (if it is open). * @param cls Window class * @param number Number of the window within the window class * @param force force deletion; if false don't delete when stickied */ void DeleteWindowById(WindowClass cls, WindowNumber number, bool force) { Window *w = FindWindowById(cls, number); if (force || w == NULL || (w->flags & WF_STICKY) == 0) { delete w; } } /** * Delete all windows of a given class * @param cls Window class of windows to delete */ void DeleteWindowByClass(WindowClass cls) { Window *w; restart_search: /* When we find the window to delete, we need to restart the search * as deleting this window could cascade in deleting (many) others * anywhere in the z-array */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls) { delete w; goto restart_search; } } } /** * Delete all windows of a company. We identify windows of a company * by looking at the caption colour. If it is equal to the company ID * then we say the window belongs to the company and should be deleted * @param id company identifier */ void DeleteCompanyWindows(CompanyID id) { Window *w; restart_search: /* When we find the window to delete, we need to restart the search * as deleting this window could cascade in deleting (many) others * anywhere in the z-array */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->owner == id) { delete w; goto restart_search; } } /* Also delete the company specific windows that don't have a company-colour. */ DeleteWindowById(WC_BUY_COMPANY, id); } /** * Change the owner of all the windows one company can take over from another * company in the case of a company merger. Do not change ownership of windows * that need to be deleted once takeover is complete * @param old_owner original owner of the window * @param new_owner the new owner of the window */ void ChangeWindowOwner(Owner old_owner, Owner new_owner) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->owner != old_owner) continue; switch (w->window_class) { case WC_COMPANY_COLOUR: case WC_FINANCES: case WC_STATION_LIST: case WC_TRAINS_LIST: case WC_ROADVEH_LIST: case WC_SHIPS_LIST: case WC_AIRCRAFT_LIST: case WC_BUY_COMPANY: case WC_COMPANY: case WC_COMPANY_INFRASTRUCTURE: continue; default: w->owner = new_owner; break; } } } static void BringWindowToFront(Window *w); /** * Find a window and make it the relative top-window on the screen. * The window gets unshaded if it was shaded, and a white border is drawn at its edges for a brief period of time to visualize its "activation". * @param cls WindowClass of the window to activate * @param number WindowNumber of the window to activate * @return a pointer to the window thus activated */ Window *BringWindowToFrontById(WindowClass cls, WindowNumber number) { Window *w = FindWindowById(cls, number); if (w != NULL) { if (w->IsShaded()) w->SetShaded(false); // Restore original window size if it was shaded. w->SetWhiteBorder(); BringWindowToFront(w); w->SetDirty(); } return w; } static inline bool IsVitalWindow(const Window *w) { switch (w->window_class) { case WC_MAIN_TOOLBAR: case WC_STATUS_BAR: case WC_NEWS_WINDOW: case WC_SEND_NETWORK_MSG: return true; default: return false; } } /** * Get the z-priority for a given window. This is used in comparison with other z-priority values; * a window with a given z-priority will appear above other windows with a lower value, and below * those with a higher one (the ordering within z-priorities is arbitrary). * @param w The window to get the z-priority for * @pre w->window_class != WC_INVALID * @return The window's z-priority */ static uint GetWindowZPriority(const Window *w) { assert(w->window_class != WC_INVALID); uint z_priority = 0; switch (w->window_class) { case WC_ENDSCREEN: ++z_priority; case WC_HIGHSCORE: ++z_priority; case WC_TOOLTIPS: ++z_priority; case WC_DROPDOWN_MENU: ++z_priority; case WC_MAIN_TOOLBAR: case WC_STATUS_BAR: ++z_priority; case WC_OSK: ++z_priority; case WC_QUERY_STRING: case WC_SEND_NETWORK_MSG: ++z_priority; case WC_ERRMSG: case WC_CONFIRM_POPUP_QUERY: case WC_MODAL_PROGRESS: case WC_NETWORK_STATUS_WINDOW: ++z_priority; case WC_GENERATE_LANDSCAPE: case WC_SAVELOAD: case WC_GAME_OPTIONS: case WC_CUSTOM_CURRENCY: case WC_NETWORK_WINDOW: case WC_GRF_PARAMETERS: case WC_AI_LIST: case WC_AI_SETTINGS: case WC_TEXTFILE: ++z_priority; case WC_CONSOLE: ++z_priority; case WC_NEWS_WINDOW: ++z_priority; default: ++z_priority; case WC_MAIN_WINDOW: return z_priority; } } /** * Adds a window to the z-ordering, according to its z-priority. * @param w Window to add */ static void AddWindowToZOrdering(Window *w) { assert(w->z_front == NULL && w->z_back == NULL); if (_z_front_window == NULL) { /* It's the only window. */ _z_front_window = _z_back_window = w; w->z_front = w->z_back = NULL; } else { /* Search down the z-ordering for its location. */ Window *v = _z_front_window; uint last_z_priority = UINT_MAX; while (v != NULL && (v->window_class == WC_INVALID || GetWindowZPriority(v) > GetWindowZPriority(w))) { if (v->window_class != WC_INVALID) { /* Sanity check z-ordering, while we're at it. */ assert(last_z_priority >= GetWindowZPriority(v)); last_z_priority = GetWindowZPriority(v); } v = v->z_back; } if (v == NULL) { /* It's the new back window. */ w->z_front = _z_back_window; w->z_back = NULL; _z_back_window->z_back = w; _z_back_window = w; } else if (v == _z_front_window) { /* It's the new front window. */ w->z_front = NULL; w->z_back = _z_front_window; _z_front_window->z_front = w; _z_front_window = w; } else { /* It's somewhere else in the z-ordering. */ w->z_front = v->z_front; w->z_back = v; v->z_front->z_back = w; v->z_front = w; } } } /** * Removes a window from the z-ordering. * @param w Window to remove */ static void RemoveWindowFromZOrdering(Window *w) { if (w->z_front == NULL) { assert(_z_front_window == w); _z_front_window = w->z_back; } else { w->z_front->z_back = w->z_back; } if (w->z_back == NULL) { assert(_z_back_window == w); _z_back_window = w->z_front; } else { w->z_back->z_front = w->z_front; } w->z_front = w->z_back = NULL; } /** * On clicking on a window, make it the frontmost window of all windows with an equal * or lower z-priority. The window is marked dirty for a repaint * @param w window that is put into the relative foreground */ static void BringWindowToFront(Window *w) { RemoveWindowFromZOrdering(w); AddWindowToZOrdering(w); w->SetDirty(); } /** * Initializes the data (except the position and initial size) of a new Window. * @param desc Window description. * @param window_number Number being assigned to the new window * @return Window pointer of the newly created window * @pre If nested widgets are used (\a widget is \c NULL), #nested_root and #nested_array_size must be initialized. * In addition, #nested_array is either \c NULL, or already initialized. */ void Window::InitializeData(const WindowDesc *desc, WindowNumber window_number) { /* Set up window properties; some of them are needed to set up smallest size below */ this->window_class = desc->cls; this->SetWhiteBorder(); if (desc->default_pos == WDP_CENTER) this->flags |= WF_CENTERED; this->owner = INVALID_OWNER; this->nested_focus = NULL; this->window_number = window_number; this->desc_flags = desc->flags; this->OnInit(); /* Initialize nested widget tree. */ if (this->nested_array == NULL) { this->nested_array = CallocT(this->nested_array_size); this->nested_root->SetupSmallestSize(this, true); } else { this->nested_root->SetupSmallestSize(this, false); } /* Initialize to smallest size. */ this->nested_root->AssignSizePosition(ST_SMALLEST, 0, 0, this->nested_root->smallest_x, this->nested_root->smallest_y, _current_text_dir == TD_RTL); /* Further set up window properties, * this->left, this->top, this->width, this->height, this->resize.width, and this->resize.height are initialized later. */ this->resize.step_width = this->nested_root->resize_x; this->resize.step_height = this->nested_root->resize_y; /* Give focus to the opened window unless a text box * of focused window has focus (so we don't interrupt typing). But if the new * window has a text box, then take focus anyway. */ if (!EditBoxInGlobalFocus() || this->nested_root->GetWidgetOfType(WWT_EDITBOX) != NULL) SetFocusedWindow(this); /* Insert the window into the correct location in the z-ordering. */ AddWindowToZOrdering(this); } /** * Set the position and smallest size of the window. * @param x Offset in pixels from the left of the screen of the new window. * @param y Offset in pixels from the top of the screen of the new window. * @param sm_width Smallest width in pixels of the window. * @param sm_height Smallest height in pixels of the window. */ void Window::InitializePositionSize(int x, int y, int sm_width, int sm_height) { this->left = x; this->top = y; this->width = sm_width; this->height = sm_height; } /** * Resize window towards the default size. * Prior to construction, a position for the new window (for its default size) * has been found with LocalGetWindowPlacement(). Initially, the window is * constructed with minimal size. Resizing the window to its default size is * done here. * @param def_width default width in pixels of the window * @param def_height default height in pixels of the window * @see Window::Window(), Window::InitializeData(), Window::InitializePositionSize() */ void Window::FindWindowPlacementAndResize(int def_width, int def_height) { def_width = max(def_width, this->width); // Don't allow default size to be smaller than smallest size def_height = max(def_height, this->height); /* Try to make windows smaller when our window is too small. * w->(width|height) is normally the same as min_(width|height), * but this way the GUIs can be made a little more dynamic; * one can use the same spec for multiple windows and those * can then determine the real minimum size of the window. */ if (this->width != def_width || this->height != def_height) { /* Think about the overlapping toolbars when determining the minimum window size */ int free_height = _screen.height; const Window *wt = FindWindowById(WC_STATUS_BAR, 0); if (wt != NULL) free_height -= wt->height; wt = FindWindowById(WC_MAIN_TOOLBAR, 0); if (wt != NULL) free_height -= wt->height; int enlarge_x = max(min(def_width - this->width, _screen.width - this->width), 0); int enlarge_y = max(min(def_height - this->height, free_height - this->height), 0); /* X and Y has to go by step.. calculate it. * The cast to int is necessary else x/y are implicitly casted to * unsigned int, which won't work. */ if (this->resize.step_width > 1) enlarge_x -= enlarge_x % (int)this->resize.step_width; if (this->resize.step_height > 1) enlarge_y -= enlarge_y % (int)this->resize.step_height; ResizeWindow(this, enlarge_x, enlarge_y); /* ResizeWindow() calls this->OnResize(). */ } else { /* Always call OnResize; that way the scrollbars and matrices get initialized. */ this->OnResize(); } int nx = this->left; int ny = this->top; if (nx + this->width > _screen.width) nx -= (nx + this->width - _screen.width); const Window *wt = FindWindowById(WC_MAIN_TOOLBAR, 0); ny = max(ny, (wt == NULL || this == wt || this->top == 0) ? 0 : wt->height); nx = max(nx, 0); if (this->viewport != NULL) { this->viewport->left += nx - this->left; this->viewport->top += ny - this->top; } this->left = nx; this->top = ny; this->SetDirty(); } /** * Decide whether a given rectangle is a good place to open a completely visible new window. * The new window should be within screen borders, and not overlap with another already * existing window (except for the main window in the background). * @param left Left edge of the rectangle * @param top Top edge of the rectangle * @param width Width of the rectangle * @param height Height of the rectangle * @param pos If rectangle is good, use this parameter to return the top-left corner of the new window * @return Boolean indication that the rectangle is a good place for the new window */ static bool IsGoodAutoPlace1(int left, int top, int width, int height, Point &pos) { int right = width + left; int bottom = height + top; const Window *main_toolbar = FindWindowByClass(WC_MAIN_TOOLBAR); if (left < 0 || (main_toolbar != NULL && top < main_toolbar->height) || right > _screen.width || bottom > _screen.height) return false; /* Make sure it is not obscured by any window. */ const Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == WC_MAIN_WINDOW) continue; if (right > w->left && w->left + w->width > left && bottom > w->top && w->top + w->height > top) { return false; } } pos.x = left; pos.y = top; return true; } /** * Decide whether a given rectangle is a good place to open a mostly visible new window. * The new window should be mostly within screen borders, and not overlap with another already * existing window (except for the main window in the background). * @param left Left edge of the rectangle * @param top Top edge of the rectangle * @param width Width of the rectangle * @param height Height of the rectangle * @param pos If rectangle is good, use this parameter to return the top-left corner of the new window * @return Boolean indication that the rectangle is a good place for the new window */ static bool IsGoodAutoPlace2(int left, int top, int width, int height, Point &pos) { /* Left part of the rectangle may be at most 1/4 off-screen, * right part of the rectangle may be at most 1/2 off-screen */ if (left < -(width >> 2) || left > _screen.width - (width >> 1)) return false; /* Bottom part of the rectangle may be at most 1/4 off-screen */ if (top < 22 || top > _screen.height - (height >> 2)) return false; /* Make sure it is not obscured by any window. */ const Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == WC_MAIN_WINDOW) continue; if (left + width > w->left && w->left + w->width > left && top + height > w->top && w->top + w->height > top) { return false; } } pos.x = left; pos.y = top; return true; } /** * Find a good place for opening a new window of a given width and height. * @param width Width of the new window * @param height Height of the new window * @return Top-left coordinate of the new window */ static Point GetAutoPlacePosition(int width, int height) { Point pt; /* First attempt, try top-left of the screen */ const Window *main_toolbar = FindWindowByClass(WC_MAIN_TOOLBAR); if (IsGoodAutoPlace1(0, main_toolbar != NULL ? main_toolbar->height + 2 : 2, width, height, pt)) return pt; /* Second attempt, try around all existing windows with a distance of 2 pixels. * The new window must be entirely on-screen, and not overlap with an existing window. * Eight starting points are tried, two at each corner. */ const Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == WC_MAIN_WINDOW) continue; if (IsGoodAutoPlace1(w->left + w->width + 2, w->top, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left - width - 2, w->top, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left, w->top + w->height + 2, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left, w->top - height - 2, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left + w->width + 2, w->top + w->height - height, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left - width - 2, w->top + w->height - height, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left + w->width - width, w->top + w->height + 2, width, height, pt)) return pt; if (IsGoodAutoPlace1(w->left + w->width - width, w->top - height - 2, width, height, pt)) return pt; } /* Third attempt, try around all existing windows with a distance of 2 pixels. * The new window may be partly off-screen, and must not overlap with an existing window. * Only four starting points are tried. */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == WC_MAIN_WINDOW) continue; if (IsGoodAutoPlace2(w->left + w->width + 2, w->top, width, height, pt)) return pt; if (IsGoodAutoPlace2(w->left - width - 2, w->top, width, height, pt)) return pt; if (IsGoodAutoPlace2(w->left, w->top + w->height + 2, width, height, pt)) return pt; if (IsGoodAutoPlace2(w->left, w->top - height - 2, width, height, pt)) return pt; } /* Fourth and final attempt, put window at diagonal starting from (0, 24), try multiples * of (+5, +5) */ int left = 0, top = 24; restart: FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->left == left && w->top == top) { left += 5; top += 5; goto restart; } } pt.x = left; pt.y = top; return pt; } /** * Computer the position of the top-left corner of a window to be opened right * under the toolbar. * @param window_width the width of the window to get the position for * @return Coordinate of the top-left corner of the new window. */ Point GetToolbarAlignedWindowPosition(int window_width) { const Window *w = FindWindowById(WC_MAIN_TOOLBAR, 0); assert(w != NULL); Point pt = { _current_text_dir == TD_RTL ? w->left : (w->left + w->width) - window_width, w->top + w->height }; return pt; } /** * Compute the position of the top-left corner of a new window that is opened. * * By default position a child window at an offset of 10/10 of its parent. * With the exception of WC_BUILD_TOOLBAR (build railway/roads/ship docks/airports) * and WC_SCEN_LAND_GEN (landscaping). Whose child window has an offset of 0/toolbar-height of * its parent. So it's exactly under the parent toolbar and no buttons will be covered. * However if it falls too extremely outside window positions, reposition * it to an automatic place. * * @param *desc The pointer to the WindowDesc to be created. * @param sm_width Smallest width of the window. * @param sm_height Smallest height of the window. * @param window_number The window number of the new window. * * @return Coordinate of the top-left corner of the new window. */ static Point LocalGetWindowPlacement(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) { Point pt; const Window *w; int16 default_width = max(desc->default_width, sm_width); int16 default_height = max(desc->default_height, sm_height); if (desc->parent_cls != 0 /* WC_MAIN_WINDOW */ && (w = FindWindowById(desc->parent_cls, window_number)) != NULL && w->left < _screen.width - 20 && w->left > -60 && w->top < _screen.height - 20) { pt.x = w->left + ((desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) ? 0 : 10); if (pt.x > _screen.width + 10 - default_width) { pt.x = (_screen.width + 10 - default_width) - 20; } pt.y = w->top + ((desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) ? w->height : 10); return pt; } switch (desc->default_pos) { case WDP_ALIGN_TOOLBAR: // Align to the toolbar return GetToolbarAlignedWindowPosition(default_width); case WDP_AUTO: // Find a good automatic position for the window return GetAutoPlacePosition(default_width, default_height); case WDP_CENTER: // Centre the window horizontally pt.x = (_screen.width - default_width) / 2; pt.y = (_screen.height - default_height) / 2; break; case WDP_MANUAL: pt.x = 0; pt.y = 0; break; default: NOT_REACHED(); } return pt; } /* virtual */ Point Window::OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) { return LocalGetWindowPlacement(desc, sm_width, sm_height, window_number); } /** * Perform the first part of the initialization of a nested widget tree. * Construct a nested widget tree in #nested_root, and optionally fill the #nested_array array to provide quick access to the uninitialized widgets. * This is mainly useful for setting very basic properties. * @param desc Window description. * @param fill_nested Fill the #nested_array (enabling is expensive!). * @note Filling the nested array requires an additional traversal through the nested widget tree, and is best performed by #FinishInitNested rather than here. */ void Window::CreateNestedTree(const WindowDesc *desc, bool fill_nested) { int biggest_index = -1; this->nested_root = MakeWindowNWidgetTree(desc->nwid_parts, desc->nwid_length, &biggest_index, &this->shade_select); this->nested_array_size = (uint)(biggest_index + 1); if (fill_nested) { this->nested_array = CallocT(this->nested_array_size); this->nested_root->FillNestedArray(this->nested_array, this->nested_array_size); } } /** * Perform the second part of the initialization of a nested widget tree. * @param desc Window description. * @param window_number Number of the new window. */ void Window::FinishInitNested(const WindowDesc *desc, WindowNumber window_number) { this->InitializeData(desc, window_number); Point pt = this->OnInitialPosition(desc, this->nested_root->smallest_x, this->nested_root->smallest_y, window_number); this->InitializePositionSize(pt.x, pt.y, this->nested_root->smallest_x, this->nested_root->smallest_y); this->FindWindowPlacementAndResize(desc->default_width, desc->default_height); } /** * Perform complete initialization of the #Window with nested widgets, to allow use. * @param desc Window description. * @param window_number Number of the new window. */ void Window::InitNested(const WindowDesc *desc, WindowNumber window_number) { this->CreateNestedTree(desc, false); this->FinishInitNested(desc, window_number); } /** Empty constructor, initialization has been moved to #InitNested() called from the constructor of the derived class. */ Window::Window() : scrolling_scrollbar(-1) { } /** * Do a search for a window at specific coordinates. For this we start * at the topmost window, obviously and work our way down to the bottom * @param x position x to query * @param y position y to query * @return a pointer to the found window if any, NULL otherwise */ Window *FindWindowFromPt(int x, int y) { Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (MayBeShown(w) && IsInsideBS(x, w->left, w->width) && IsInsideBS(y, w->top, w->height)) { return w; } } return NULL; } /** * (re)initialize the windowing system */ void InitWindowSystem() { IConsoleClose(); _z_back_window = NULL; _z_front_window = NULL; _focused_window = NULL; _mouseover_last_w = NULL; _last_scroll_window = NULL; _scrolling_viewport = false; _mouse_hovering = false; NWidgetLeaf::InvalidateDimensionCache(); // Reset cached sizes of several widgets. NWidgetScrollbar::InvalidateDimensionCache(); ShowFirstError(); } /** * Close down the windowing system */ void UnInitWindowSystem() { UnshowCriticalError(); Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) delete w; for (w = _z_front_window; w != NULL; /* nothing */) { Window *to_del = w; w = w->z_back; free(to_del); } _z_front_window = NULL; _z_back_window = NULL; } /** * Reset the windowing system, by means of shutting it down followed by re-initialization */ void ResetWindowSystem() { UnInitWindowSystem(); InitWindowSystem(); _thd.Reset(); } static void DecreaseWindowCounters() { Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (_scroller_click_timeout == 0) { /* Unclick scrollbar buttons if they are pressed. */ for (uint i = 0; i < w->nested_array_size; i++) { NWidgetBase *nwid = w->nested_array[i]; if (nwid != NULL && (nwid->type == NWID_HSCROLLBAR || nwid->type == NWID_VSCROLLBAR)) { NWidgetScrollbar *sb = static_cast(nwid); if (sb->disp_flags & (ND_SCROLLBAR_UP | ND_SCROLLBAR_DOWN)) { sb->disp_flags &= ~(ND_SCROLLBAR_UP | ND_SCROLLBAR_DOWN); w->scrolling_scrollbar = -1; sb->SetDirty(w); } } } } /* Handle editboxes */ for (SmallMap::Pair *it = w->querystrings.Begin(); it != w->querystrings.End(); ++it) { it->second->HandleEditBox(w, it->first); } w->OnMouseLoop(); } FOR_ALL_WINDOWS_FROM_FRONT(w) { if ((w->flags & WF_TIMEOUT) && --w->timeout_timer == 0) { CLRBITS(w->flags, WF_TIMEOUT); w->OnTimeout(); w->RaiseButtons(true); } } } static void HandlePlacePresize() { if (_special_mouse_mode != WSM_PRESIZE) return; Window *w = _thd.GetCallbackWnd(); if (w == NULL) return; Point pt = GetTileBelowCursor(); if (pt.x == -1) { _thd.selend.x = -1; return; } w->OnPlacePresize(pt, TileVirtXY(pt.x, pt.y)); } /** * Handle dragging and dropping in mouse dragging mode (#WSM_DRAGDROP). * @return State of handling the event. */ static EventState HandleMouseDragDrop() { if (_special_mouse_mode != WSM_DRAGDROP) return ES_NOT_HANDLED; if (_left_button_down && _cursor.delta.x == 0 && _cursor.delta.y == 0) return ES_HANDLED; // Dragging, but the mouse did not move. Window *w = _thd.GetCallbackWnd(); if (w != NULL) { /* Send an event in client coordinates. */ Point pt; pt.x = _cursor.pos.x - w->left; pt.y = _cursor.pos.y - w->top; if (_left_button_down) { w->OnMouseDrag(pt, GetWidgetFromPos(w, pt.x, pt.y)); } else { w->OnDragDrop(pt, GetWidgetFromPos(w, pt.x, pt.y)); } } if (!_left_button_down) ResetObjectToPlace(); // Button released, finished dragging. return ES_HANDLED; } /** Report position of the mouse to the underlying window. */ static void HandleMouseOver() { Window *w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y); /* We changed window, put a MOUSEOVER event to the last window */ if (_mouseover_last_w != NULL && _mouseover_last_w != w) { /* Reset mouse-over coordinates of previous window */ Point pt = { -1, -1 }; _mouseover_last_w->OnMouseOver(pt, 0); } /* _mouseover_last_w will get reset when the window is deleted, see DeleteWindow() */ _mouseover_last_w = w; if (w != NULL) { /* send an event in client coordinates. */ Point pt = { _cursor.pos.x - w->left, _cursor.pos.y - w->top }; const NWidgetCore *widget = w->nested_root->GetWidgetFromPos(pt.x, pt.y); if (widget != NULL) w->OnMouseOver(pt, widget->index); } } /** The minimum number of pixels of the title bar must be visible in both the X or Y direction */ static const int MIN_VISIBLE_TITLE_BAR = 13; /** Direction for moving the window. */ enum PreventHideDirection { PHD_UP, ///< Above v is a safe position. PHD_DOWN, ///< Below v is a safe position. }; /** * Do not allow hiding of the rectangle with base coordinates \a nx and \a ny behind window \a v. * If needed, move the window base coordinates to keep it visible. * @param nx Base horizontal coordinate of the rectangle. * @param ny Base vertical coordinate of the rectangle. * @param rect Rectangle that must stay visible for #MIN_VISIBLE_TITLE_BAR pixels (horizontally, vertically, or both) * @param v Window lying in front of the rectangle. * @param px Previous horizontal base coordinate. * @param dir If no room horizontally, move the rectangle to the indicated position. */ static void PreventHiding(int *nx, int *ny, const Rect &rect, const Window *v, int px, PreventHideDirection dir) { if (v == NULL) return; int v_bottom = v->top + v->height; int v_right = v->left + v->width; int safe_y = (dir == PHD_UP) ? (v->top - MIN_VISIBLE_TITLE_BAR - rect.top) : (v_bottom + MIN_VISIBLE_TITLE_BAR - rect.bottom); // Compute safe vertical position. if (*ny + rect.top <= v->top - MIN_VISIBLE_TITLE_BAR) return; // Above v is enough space if (*ny + rect.bottom >= v_bottom + MIN_VISIBLE_TITLE_BAR) return; // Below v is enough space /* Vertically, the rectangle is hidden behind v. */ if (*nx + rect.left + MIN_VISIBLE_TITLE_BAR < v->left) { // At left of v. if (v->left < MIN_VISIBLE_TITLE_BAR) *ny = safe_y; // But enough room, force it to a safe position. return; } if (*nx + rect.right - MIN_VISIBLE_TITLE_BAR > v_right) { // At right of v. if (v_right > _screen.width - MIN_VISIBLE_TITLE_BAR) *ny = safe_y; // Not enough room, force it to a safe position. return; } /* Horizontally also hidden, force movement to a safe area. */ if (px + rect.left < v->left && v->left >= MIN_VISIBLE_TITLE_BAR) { // Coming from the left, and enough room there. *nx = v->left - MIN_VISIBLE_TITLE_BAR - rect.left; } else if (px + rect.right > v_right && v_right <= _screen.width - MIN_VISIBLE_TITLE_BAR) { // Coming from the right, and enough room there. *nx = v_right + MIN_VISIBLE_TITLE_BAR - rect.right; } else { *ny = safe_y; } } /** * Make sure at least a part of the caption bar is still visible by moving * the window if necessary. * @param w The window to check. * @param nx The proposed new x-location of the window. * @param ny The proposed new y-location of the window. */ static void EnsureVisibleCaption(Window *w, int nx, int ny) { /* Search for the title bar rectangle. */ Rect caption_rect; const NWidgetBase *caption = w->nested_root->GetWidgetOfType(WWT_CAPTION); if (caption != NULL) { caption_rect.left = caption->pos_x; caption_rect.right = caption->pos_x + caption->current_x; caption_rect.top = caption->pos_y; caption_rect.bottom = caption->pos_y + caption->current_y; /* Make sure the window doesn't leave the screen */ nx = Clamp(nx, MIN_VISIBLE_TITLE_BAR - caption_rect.right, _screen.width - MIN_VISIBLE_TITLE_BAR - caption_rect.left); ny = Clamp(ny, 0, _screen.height - MIN_VISIBLE_TITLE_BAR); /* Make sure the title bar isn't hidden behind the main tool bar or the status bar. */ PreventHiding(&nx, &ny, caption_rect, FindWindowById(WC_MAIN_TOOLBAR, 0), w->left, PHD_DOWN); PreventHiding(&nx, &ny, caption_rect, FindWindowById(WC_STATUS_BAR, 0), w->left, PHD_UP); } if (w->viewport != NULL) { w->viewport->left += nx - w->left; w->viewport->top += ny - w->top; } w->left = nx; w->top = ny; } /** * Resize the window. * Update all the widgets of a window based on their resize flags * Both the areas of the old window and the new sized window are set dirty * ensuring proper redrawal. * @param w Window to resize * @param delta_x Delta x-size of changed window (positive if larger, etc.) * @param delta_y Delta y-size of changed window * @param clamp_to_screen Whether to make sure the whole window stays visible */ void ResizeWindow(Window *w, int delta_x, int delta_y, bool clamp_to_screen) { if (delta_x != 0 || delta_y != 0) { if (clamp_to_screen) { /* Determine the new right/bottom position. If that is outside of the bounds of * the resolution clamp it in such a manner that it stays within the bounds. */ int new_right = w->left + w->width + delta_x; int new_bottom = w->top + w->height + delta_y; if (new_right >= (int)_cur_resolution.width) delta_x -= Ceil(new_right - _cur_resolution.width, max(1U, w->nested_root->resize_x)); if (new_bottom >= (int)_cur_resolution.height) delta_y -= Ceil(new_bottom - _cur_resolution.height, max(1U, w->nested_root->resize_y)); } w->SetDirty(); uint new_xinc = max(0, (w->nested_root->resize_x == 0) ? 0 : (int)(w->nested_root->current_x - w->nested_root->smallest_x) + delta_x); uint new_yinc = max(0, (w->nested_root->resize_y == 0) ? 0 : (int)(w->nested_root->current_y - w->nested_root->smallest_y) + delta_y); assert(w->nested_root->resize_x == 0 || new_xinc % w->nested_root->resize_x == 0); assert(w->nested_root->resize_y == 0 || new_yinc % w->nested_root->resize_y == 0); w->nested_root->AssignSizePosition(ST_RESIZE, 0, 0, w->nested_root->smallest_x + new_xinc, w->nested_root->smallest_y + new_yinc, _current_text_dir == TD_RTL); w->width = w->nested_root->current_x; w->height = w->nested_root->current_y; } EnsureVisibleCaption(w, w->left, w->top); /* Always call OnResize to make sure everything is initialised correctly if it needs to be. */ w->OnResize(); w->SetDirty(); } /** * Return the top of the main view available for general use. * @return Uppermost vertical coordinate available. * @note Above the upper y coordinate is often the main toolbar. */ int GetMainViewTop() { Window *w = FindWindowById(WC_MAIN_TOOLBAR, 0); return (w == NULL) ? 0 : w->top + w->height; } /** * Return the bottom of the main view available for general use. * @return The vertical coordinate of the first unusable row, so 'top + height <= bottom' gives the correct result. * @note At and below the bottom y coordinate is often the status bar. */ int GetMainViewBottom() { Window *w = FindWindowById(WC_STATUS_BAR, 0); return (w == NULL) ? _screen.height : w->top; } static bool _dragging_window; ///< A window is being dragged or resized. /** * Handle dragging/resizing of a window. * @return State of handling the event. */ static EventState HandleWindowDragging() { /* Get out immediately if no window is being dragged at all. */ if (!_dragging_window) return ES_NOT_HANDLED; /* If button still down, but cursor hasn't moved, there is nothing to do. */ if (_left_button_down && _cursor.delta.x == 0 && _cursor.delta.y == 0) return ES_HANDLED; /* Otherwise find the window... */ Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->flags & WF_DRAGGING) { /* Stop the dragging if the left mouse button was released */ if (!_left_button_down) { w->flags &= ~WF_DRAGGING; break; } w->SetDirty(); int x = _cursor.pos.x + _drag_delta.x; int y = _cursor.pos.y + _drag_delta.y; int nx = x; int ny = y; if (_settings_client.gui.window_snap_radius != 0) { const Window *v; int hsnap = _settings_client.gui.window_snap_radius; int vsnap = _settings_client.gui.window_snap_radius; int delta; FOR_ALL_WINDOWS_FROM_BACK(v) { if (v == w) continue; // Don't snap at yourself if (y + w->height > v->top && y < v->top + v->height) { /* Your left border <-> other right border */ delta = abs(v->left + v->width - x); if (delta <= hsnap) { nx = v->left + v->width; hsnap = delta; } /* Your right border <-> other left border */ delta = abs(v->left - x - w->width); if (delta <= hsnap) { nx = v->left - w->width; hsnap = delta; } } if (w->top + w->height >= v->top && w->top <= v->top + v->height) { /* Your left border <-> other left border */ delta = abs(v->left - x); if (delta <= hsnap) { nx = v->left; hsnap = delta; } /* Your right border <-> other right border */ delta = abs(v->left + v->width - x - w->width); if (delta <= hsnap) { nx = v->left + v->width - w->width; hsnap = delta; } } if (x + w->width > v->left && x < v->left + v->width) { /* Your top border <-> other bottom border */ delta = abs(v->top + v->height - y); if (delta <= vsnap) { ny = v->top + v->height; vsnap = delta; } /* Your bottom border <-> other top border */ delta = abs(v->top - y - w->height); if (delta <= vsnap) { ny = v->top - w->height; vsnap = delta; } } if (w->left + w->width >= v->left && w->left <= v->left + v->width) { /* Your top border <-> other top border */ delta = abs(v->top - y); if (delta <= vsnap) { ny = v->top; vsnap = delta; } /* Your bottom border <-> other bottom border */ delta = abs(v->top + v->height - y - w->height); if (delta <= vsnap) { ny = v->top + v->height - w->height; vsnap = delta; } } } } EnsureVisibleCaption(w, nx, ny); w->SetDirty(); return ES_HANDLED; } else if (w->flags & WF_SIZING) { /* Stop the sizing if the left mouse button was released */ if (!_left_button_down) { w->flags &= ~WF_SIZING; w->SetDirty(); break; } /* Compute difference in pixels between cursor position and reference point in the window. * If resizing the left edge of the window, moving to the left makes the window bigger not smaller. */ int x, y = _cursor.pos.y - _drag_delta.y; if (w->flags & WF_SIZING_LEFT) { x = _drag_delta.x - _cursor.pos.x; } else { x = _cursor.pos.x - _drag_delta.x; } /* resize.step_width and/or resize.step_height may be 0, which means no resize is possible. */ if (w->resize.step_width == 0) x = 0; if (w->resize.step_height == 0) y = 0; /* Check the resize button won't go past the bottom of the screen */ if (w->top + w->height + y > _screen.height) { y = _screen.height - w->height - w->top; } /* X and Y has to go by step.. calculate it. * The cast to int is necessary else x/y are implicitly casted to * unsigned int, which won't work. */ if (w->resize.step_width > 1) x -= x % (int)w->resize.step_width; if (w->resize.step_height > 1) y -= y % (int)w->resize.step_height; /* Check that we don't go below the minimum set size */ if ((int)w->width + x < (int)w->nested_root->smallest_x) { x = w->nested_root->smallest_x - w->width; } if ((int)w->height + y < (int)w->nested_root->smallest_y) { y = w->nested_root->smallest_y - w->height; } /* Window already on size */ if (x == 0 && y == 0) return ES_HANDLED; /* Now find the new cursor pos.. this is NOT _cursor, because we move in steps. */ _drag_delta.y += y; if ((w->flags & WF_SIZING_LEFT) && x != 0) { _drag_delta.x -= x; // x > 0 -> window gets longer -> left-edge moves to left -> subtract x to get new position. w->SetDirty(); w->left -= x; // If dragging left edge, move left window edge in opposite direction by the same amount. /* ResizeWindow() below ensures marking new position as dirty. */ } else { _drag_delta.x += x; } /* ResizeWindow sets both pre- and after-size to dirty for redrawal */ ResizeWindow(w, x, y); return ES_HANDLED; } } _dragging_window = false; return ES_HANDLED; } /** * Start window dragging * @param w Window to start dragging */ static void StartWindowDrag(Window *w) { w->flags |= WF_DRAGGING; w->flags &= ~WF_CENTERED; _dragging_window = true; _drag_delta.x = w->left - _cursor.pos.x; _drag_delta.y = w->top - _cursor.pos.y; BringWindowToFront(w); DeleteWindowById(WC_DROPDOWN_MENU, 0); } /** * Start resizing a window. * @param w Window to start resizing. * @param to_left Whether to drag towards the left or not */ static void StartWindowSizing(Window *w, bool to_left) { w->flags |= to_left ? WF_SIZING_LEFT : WF_SIZING_RIGHT; w->flags &= ~WF_CENTERED; _dragging_window = true; _drag_delta.x = _cursor.pos.x; _drag_delta.y = _cursor.pos.y; BringWindowToFront(w); DeleteWindowById(WC_DROPDOWN_MENU, 0); } /** * handle scrollbar scrolling with the mouse. * @return State of handling the event. */ static EventState HandleScrollbarScrolling() { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->scrolling_scrollbar >= 0) { /* Abort if no button is clicked any more. */ if (!_left_button_down) { w->scrolling_scrollbar = -1; w->SetDirty(); return ES_HANDLED; } int i; NWidgetScrollbar *sb = w->GetWidget(w->scrolling_scrollbar); bool rtl = false; if (sb->type == NWID_HSCROLLBAR) { i = _cursor.pos.x - _cursorpos_drag_start.x; rtl = _current_text_dir == TD_RTL; } else { i = _cursor.pos.y - _cursorpos_drag_start.y; } if (sb->disp_flags & ND_SCROLLBAR_BTN) { if (_scroller_click_timeout == 1) { _scroller_click_timeout = 3; sb->UpdatePosition(rtl == HasBit(sb->disp_flags, NDB_SCROLLBAR_UP) ? 1 : -1); w->SetDirty(); } return ES_HANDLED; } /* Find the item we want to move to and make sure it's inside bounds. */ int pos = min(max(0, i + _scrollbar_start_pos) * sb->GetCount() / _scrollbar_size, max(0, sb->GetCount() - sb->GetCapacity())); if (rtl) pos = max(0, sb->GetCount() - sb->GetCapacity() - pos); if (pos != sb->GetPosition()) { sb->SetPosition(pos); w->SetDirty(); } return ES_HANDLED; } } return ES_NOT_HANDLED; } /** * Handle viewport scrolling with the mouse. * @return State of handling the event. */ static EventState HandleViewportScroll() { bool scrollwheel_scrolling = _settings_client.gui.scrollwheel_scrolling == 1 && (_cursor.v_wheel != 0 || _cursor.h_wheel != 0); if (!_scrolling_viewport) return ES_NOT_HANDLED; /* When we don't have a last scroll window we are starting to scroll. * When the last scroll window and this are not the same we went * outside of the window and should not left-mouse scroll anymore. */ if (_last_scroll_window == NULL) _last_scroll_window = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y); if (_last_scroll_window == NULL || !(_right_button_down || scrollwheel_scrolling || (_settings_client.gui.left_mouse_btn_scrolling && _left_button_down))) { _cursor.fix_at = false; _scrolling_viewport = false; _last_scroll_window = NULL; return ES_NOT_HANDLED; } if (_last_scroll_window == FindWindowById(WC_MAIN_WINDOW, 0) && _last_scroll_window->viewport->follow_vehicle != INVALID_VEHICLE) { /* If the main window is following a vehicle, then first let go of it! */ const Vehicle *veh = Vehicle::Get(_last_scroll_window->viewport->follow_vehicle); ScrollMainWindowTo(veh->x_pos, veh->y_pos, veh->z_pos, true); // This also resets follow_vehicle return ES_NOT_HANDLED; } Point delta; if (_settings_client.gui.reverse_scroll || (_settings_client.gui.left_mouse_btn_scrolling && _left_button_down)) { delta.x = -_cursor.delta.x; delta.y = -_cursor.delta.y; } else { delta.x = _cursor.delta.x; delta.y = _cursor.delta.y; } if (scrollwheel_scrolling) { /* We are using scrollwheels for scrolling */ delta.x = _cursor.h_wheel; delta.y = _cursor.v_wheel; _cursor.v_wheel = 0; _cursor.h_wheel = 0; } /* Create a scroll-event and send it to the window */ if (delta.x != 0 || delta.y != 0) _last_scroll_window->OnScroll(delta); _cursor.delta.x = 0; _cursor.delta.y = 0; return ES_HANDLED; } /** * Check if a window can be made relative top-most window, and if so do * it. If a window does not obscure any other windows, it will not * be brought to the foreground. Also if the only obscuring windows * are so-called system-windows, the window will not be moved. * The function will return false when a child window of this window is a * modal-popup; function returns a false and child window gets a white border * @param w Window to bring relatively on-top * @return false if the window has an active modal child, true otherwise */ static bool MaybeBringWindowToFront(Window *w) { bool bring_to_front = false; if (w->window_class == WC_MAIN_WINDOW || IsVitalWindow(w) || w->window_class == WC_TOOLTIPS || w->window_class == WC_DROPDOWN_MENU) { return true; } /* Use unshaded window size rather than current size for shaded windows. */ int w_width = w->width; int w_height = w->height; if (w->IsShaded()) { w_width = w->unshaded_size.width; w_height = w->unshaded_size.height; } Window *u; FOR_ALL_WINDOWS_FROM_BACK_FROM(u, w->z_front) { /* A modal child will prevent the activation of the parent window */ if (u->parent == w && (u->desc_flags & WDF_MODAL)) { u->SetWhiteBorder(); u->SetDirty(); return false; } if (u->window_class == WC_MAIN_WINDOW || IsVitalWindow(u) || u->window_class == WC_TOOLTIPS || u->window_class == WC_DROPDOWN_MENU) { continue; } /* Window sizes don't interfere, leave z-order alone */ if (w->left + w_width <= u->left || u->left + u->width <= w->left || w->top + w_height <= u->top || u->top + u->height <= w->top) { continue; } bring_to_front = true; } if (bring_to_front) BringWindowToFront(w); return true; } /** * Process keypress for editbox widget. * @param wid Editbox widget. * @param key the Unicode value of the key. * @param keycode the untranslated key code including shift state. * @return #ES_HANDLED if the key press has been handled and no other * window should receive the event. */ EventState Window::HandleEditBoxKey(int wid, WChar key, uint16 keycode) { QueryString *query = this->GetQueryString(wid); if (query == NULL) return ES_NOT_HANDLED; int action = QueryString::ACTION_NOTHING; switch (query->text.HandleKeyPress(key, keycode)) { case HKPR_EDITING: this->SetWidgetDirty(wid); this->OnEditboxChanged(wid); break; case HKPR_CURSOR: this->SetWidgetDirty(wid); /* For the OSK also invalidate the parent window */ if (this->window_class == WC_OSK) this->InvalidateData(); break; case HKPR_CONFIRM: if (this->window_class == WC_OSK) { this->OnClick(Point(), WID_OSK_OK, 1); } else if (query->ok_button >= 0) { this->OnClick(Point(), query->ok_button, 1); } else { action = query->ok_button; } break; case HKPR_CANCEL: if (this->window_class == WC_OSK) { this->OnClick(Point(), WID_OSK_CANCEL, 1); } else if (query->cancel_button >= 0) { this->OnClick(Point(), query->cancel_button, 1); } else { action = query->cancel_button; } break; case HKPR_NOT_HANDLED: return ES_NOT_HANDLED; default: break; } switch (action) { case QueryString::ACTION_DESELECT: this->UnfocusFocusedWidget(); break; case QueryString::ACTION_CLEAR: if (query->text.bytes <= 1) { /* If already empty, unfocus instead */ this->UnfocusFocusedWidget(); } else { query->text.DeleteAll(); this->SetWidgetDirty(wid); this->OnEditboxChanged(wid); } break; default: break; } return ES_HANDLED; } /** * Handle keyboard input. * @param keycode Virtual keycode of the key. * @param key Unicode character of the key. */ void HandleKeypress(uint keycode, WChar key) { /* World generation is multithreaded and messes with companies. * But there is no company related window open anyway, so _current_company is not used. */ assert(HasModalProgress() || IsLocalCompany()); /* * The Unicode standard defines an area called the private use area. Code points in this * area are reserved for private use and thus not portable between systems. For instance, * Apple defines code points for the arrow keys in this area, but these are only printable * on a system running OS X. We don't want these keys to show up in text fields and such, * and thus we have to clear the unicode character when we encounter such a key. */ if (key >= 0xE000 && key <= 0xF8FF) key = 0; /* * If both key and keycode is zero, we don't bother to process the event. */ if (key == 0 && keycode == 0) return; /* Check if the focused window has a focused editbox */ if (EditBoxInGlobalFocus()) { /* All input will in this case go to the focused editbox */ if (_focused_window->window_class == WC_CONSOLE) { if (_focused_window->OnKeyPress(key, keycode) == ES_HANDLED) return; } else { if (_focused_window->HandleEditBoxKey(_focused_window->nested_focus->index, key, keycode) == ES_HANDLED) return; } } /* Call the event, start with the uppermost window, but ignore the toolbar. */ Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (w->window_class == WC_MAIN_TOOLBAR) continue; if (w->OnKeyPress(key, keycode) == ES_HANDLED) return; } w = FindWindowById(WC_MAIN_TOOLBAR, 0); /* When there is no toolbar w is null, check for that */ if (w != NULL && w->OnKeyPress(key, keycode) == ES_HANDLED) return; HandleGlobalHotkeys(key, keycode); } /** * State of CONTROL key has changed */ void HandleCtrlChanged() { /* Call the event, start with the uppermost window. */ Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (w->OnCTRLStateChange() == ES_HANDLED) return; } } /** * Insert a text string at the cursor position into the edit box widget. * @param wid Edit box widget. * @param str Text string to insert. */ /* virtual */ void Window::InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) { QueryString *query = this->GetQueryString(wid); if (query == NULL) return; if (query->text.InsertString(str, marked, caret, insert_location, replacement_end) || marked) { this->SetWidgetDirty(wid); this->OnEditboxChanged(wid); } } /** * Handle text input. * @param str Text string to input. * @param marked Is the input a marked composition string from an IME? * @param caret Move the caret to this point in the insertion string. */ void HandleTextInput(const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) { if (!EditBoxInGlobalFocus()) return; _focused_window->InsertTextString(_focused_window->window_class == WC_CONSOLE ? 0 : _focused_window->nested_focus->index, str, marked, caret, insert_location, replacement_end); } /** * Local counter that is incremented each time an mouse input event is detected. * The counter is used to stop auto-scrolling. * @see HandleAutoscroll() * @see HandleMouseEvents() */ static int _input_events_this_tick = 0; /** * If needed and switched on, perform auto scrolling (automatically * moving window contents when mouse is near edge of the window). */ static void HandleAutoscroll() { if (_game_mode == GM_MENU || HasModalProgress()) return; if (_settings_client.gui.auto_scrolling == VA_DISABLED) return; if (_settings_client.gui.auto_scrolling == VA_MAIN_VIEWPORT_FULLSCREEN && !_fullscreen) return; int x = _cursor.pos.x; int y = _cursor.pos.y; Window *w = FindWindowFromPt(x, y); if (w == NULL || w->flags & WF_DISABLE_VP_SCROLL) return; if (_settings_client.gui.auto_scrolling != VA_EVERY_VIEWPORT && w->window_class != WC_MAIN_WINDOW) return; ViewPort *vp = IsPtInWindowViewport(w, x, y); if (vp == NULL) return; x -= vp->left; y -= vp->top; /* here allows scrolling in both x and y axis */ #define scrollspeed 3 if (x - 15 < 0) { w->viewport->dest_scrollpos_x += ScaleByZoom((x - 15) * scrollspeed, vp->zoom); } else if (15 - (vp->width - x) > 0) { w->viewport->dest_scrollpos_x += ScaleByZoom((15 - (vp->width - x)) * scrollspeed, vp->zoom); } if (y - 15 < 0) { w->viewport->dest_scrollpos_y += ScaleByZoom((y - 15) * scrollspeed, vp->zoom); } else if (15 - (vp->height - y) > 0) { w->viewport->dest_scrollpos_y += ScaleByZoom((15 - (vp->height - y)) * scrollspeed, vp->zoom); } #undef scrollspeed } enum MouseClick { MC_NONE = 0, MC_LEFT, MC_RIGHT, MC_DOUBLE_LEFT, MC_HOVER, MAX_OFFSET_DOUBLE_CLICK = 5, ///< How much the mouse is allowed to move to call it a double click TIME_BETWEEN_DOUBLE_CLICK = 500, ///< Time between 2 left clicks before it becoming a double click, in ms MAX_OFFSET_HOVER = 5, ///< Maximum mouse movement before stopping a hover event. }; extern EventState VpHandlePlaceSizingDrag(); static void ScrollMainViewport(int x, int y) { if (_game_mode != GM_MENU) { Window *w = FindWindowById(WC_MAIN_WINDOW, 0); assert(w); w->viewport->dest_scrollpos_x += ScaleByZoom(x, w->viewport->zoom); w->viewport->dest_scrollpos_y += ScaleByZoom(y, w->viewport->zoom); } } /** * Describes all the different arrow key combinations the game allows * when it is in scrolling mode. * The real arrow keys are bitwise numbered as * 1 = left * 2 = up * 4 = right * 8 = down */ static const int8 scrollamt[16][2] = { { 0, 0}, ///< no key specified {-2, 0}, ///< 1 : left { 0, -2}, ///< 2 : up {-2, -1}, ///< 3 : left + up { 2, 0}, ///< 4 : right { 0, 0}, ///< 5 : left + right = nothing { 2, -1}, ///< 6 : right + up { 0, -2}, ///< 7 : right + left + up = up { 0, 2}, ///< 8 : down {-2, 1}, ///< 9 : down + left { 0, 0}, ///< 10 : down + up = nothing {-2, 0}, ///< 11 : left + up + down = left { 2, 1}, ///< 12 : down + right { 0, 2}, ///< 13 : left + right + down = down { 2, 0}, ///< 14 : right + up + down = right { 0, 0}, ///< 15 : left + up + right + down = nothing }; static void HandleKeyScrolling() { /* * Check that any of the dirkeys is pressed and that the focused window * doesn't have an edit-box as focused widget. */ if (_dirkeys && !EditBoxInGlobalFocus()) { int factor = _shift_pressed ? 50 : 10; ScrollMainViewport(scrollamt[_dirkeys][0] * factor, scrollamt[_dirkeys][1] * factor); } } static void MouseLoop(MouseClick click, int mousewheel) { /* World generation is multithreaded and messes with companies. * But there is no company related window open anyway, so _current_company is not used. */ assert(HasModalProgress() || IsLocalCompany()); HandlePlacePresize(); UpdateTileSelection(); if (VpHandlePlaceSizingDrag() == ES_HANDLED) return; if (HandleMouseDragDrop() == ES_HANDLED) return; if (HandleWindowDragging() == ES_HANDLED) return; if (HandleScrollbarScrolling() == ES_HANDLED) return; if (HandleViewportScroll() == ES_HANDLED) return; HandleMouseOver(); bool scrollwheel_scrolling = _settings_client.gui.scrollwheel_scrolling == 1 && (_cursor.v_wheel != 0 || _cursor.h_wheel != 0); if (click == MC_NONE && mousewheel == 0 && !scrollwheel_scrolling) return; int x = _cursor.pos.x; int y = _cursor.pos.y; Window *w = FindWindowFromPt(x, y); if (w == NULL) return; if (click != MC_HOVER && !MaybeBringWindowToFront(w)) return; ViewPort *vp = IsPtInWindowViewport(w, x, y); /* Don't allow any action in a viewport if either in menu or when having a modal progress window */ if (vp != NULL && (_game_mode == GM_MENU || HasModalProgress())) return; if (mousewheel != 0) { /* Send mousewheel event to window */ w->OnMouseWheel(mousewheel); /* Dispatch a MouseWheelEvent for widgets if it is not a viewport */ if (vp == NULL) DispatchMouseWheelEvent(w, w->nested_root->GetWidgetFromPos(x - w->left, y - w->top), mousewheel); } if (vp != NULL) { if (scrollwheel_scrolling) click = MC_RIGHT; // we are using the scrollwheel in a viewport, so we emulate right mouse button switch (click) { case MC_DOUBLE_LEFT: case MC_LEFT: DEBUG(misc, 2, "Cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite); if (!HandleViewportClicked(vp, x, y) && !(w->flags & WF_DISABLE_VP_SCROLL) && _settings_client.gui.left_mouse_btn_scrolling) { _scrolling_viewport = true; _cursor.fix_at = false; } break; case MC_RIGHT: if (!(w->flags & WF_DISABLE_VP_SCROLL)) { _scrolling_viewport = true; _cursor.fix_at = true; /* clear 2D scrolling caches before we start a 2D scroll */ _cursor.h_wheel = 0; _cursor.v_wheel = 0; } break; default: break; } } else { switch (click) { case MC_LEFT: case MC_DOUBLE_LEFT: DispatchLeftClickEvent(w, x - w->left, y - w->top, click == MC_DOUBLE_LEFT ? 2 : 1); break; default: if (!scrollwheel_scrolling || w == NULL || w->window_class != WC_SMALLMAP) break; /* We try to use the scrollwheel to scroll since we didn't touch any of the buttons. * Simulate a right button click so we can get started. */ /* FALL THROUGH */ case MC_RIGHT: DispatchRightClickEvent(w, x - w->left, y - w->top); break; case MC_HOVER: DispatchHoverEvent(w, x - w->left, y - w->top); break; } } } /** * Handle a mouse event from the video driver */ void HandleMouseEvents() { /* World generation is multithreaded and messes with companies. * But there is no company related window open anyway, so _current_company is not used. */ assert(HasModalProgress() || IsLocalCompany()); static int double_click_time = 0; static Point double_click_pos = {0, 0}; /* Mouse event? */ MouseClick click = MC_NONE; if (_left_button_down && !_left_button_clicked) { click = MC_LEFT; if (double_click_time != 0 && _realtime_tick - double_click_time < TIME_BETWEEN_DOUBLE_CLICK && double_click_pos.x != 0 && abs(_cursor.pos.x - double_click_pos.x) < MAX_OFFSET_DOUBLE_CLICK && double_click_pos.y != 0 && abs(_cursor.pos.y - double_click_pos.y) < MAX_OFFSET_DOUBLE_CLICK) { click = MC_DOUBLE_LEFT; } double_click_time = _realtime_tick; double_click_pos = _cursor.pos; _left_button_clicked = true; _input_events_this_tick++; } else if (_right_button_clicked) { _right_button_clicked = false; click = MC_RIGHT; _input_events_this_tick++; } int mousewheel = 0; if (_cursor.wheel) { mousewheel = _cursor.wheel; _cursor.wheel = 0; _input_events_this_tick++; } static uint32 hover_time = 0; static Point hover_pos = {0, 0}; if (_settings_client.gui.hover_delay > 0) { if (!_cursor.in_window || click != MC_NONE || mousewheel != 0 || _left_button_down || _right_button_down || hover_pos.x == 0 || abs(_cursor.pos.x - hover_pos.x) >= MAX_OFFSET_HOVER || hover_pos.y == 0 || abs(_cursor.pos.y - hover_pos.y) >= MAX_OFFSET_HOVER) { hover_pos = _cursor.pos; hover_time = _realtime_tick; _mouse_hovering = false; } else { if (hover_time != 0 && _realtime_tick > hover_time + _settings_client.gui.hover_delay * 1000) { click = MC_HOVER; _input_events_this_tick++; _mouse_hovering = true; } } } /* Handle sprite picker before any GUI interaction */ if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && _newgrf_debug_sprite_picker.click_time != _realtime_tick) { /* Next realtime tick? Then redraw has finished */ _newgrf_debug_sprite_picker.mode = SPM_NONE; InvalidateWindowData(WC_SPRITE_ALIGNER, 0, 1); } if (click == MC_LEFT && _newgrf_debug_sprite_picker.mode == SPM_WAIT_CLICK) { /* Mark whole screen dirty, and wait for the next realtime tick, when drawing is finished. */ Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); _newgrf_debug_sprite_picker.clicked_pixel = blitter->MoveTo(_screen.dst_ptr, _cursor.pos.x, _cursor.pos.y); _newgrf_debug_sprite_picker.click_time = _realtime_tick; _newgrf_debug_sprite_picker.sprites.Clear(); _newgrf_debug_sprite_picker.mode = SPM_REDRAW; MarkWholeScreenDirty(); } else { MouseLoop(click, mousewheel); } /* We have moved the mouse the required distance, * no need to move it at any later time. */ _cursor.delta.x = 0; _cursor.delta.y = 0; } /** * Check the soft limit of deletable (non vital, non sticky) windows. */ static void CheckSoftLimit() { if (_settings_client.gui.window_soft_limit == 0) return; for (;;) { uint deletable_count = 0; Window *w, *last_deletable = NULL; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (w->window_class == WC_MAIN_WINDOW || IsVitalWindow(w) || (w->flags & WF_STICKY)) continue; last_deletable = w; deletable_count++; } /* We've not reached the soft limit yet. */ if (deletable_count <= _settings_client.gui.window_soft_limit) break; assert(last_deletable != NULL); delete last_deletable; } } /** * Regular call from the global game loop */ void InputLoop() { /* World generation is multithreaded and messes with companies. * But there is no company related window open anyway, so _current_company is not used. */ assert(HasModalProgress() || IsLocalCompany()); CheckSoftLimit(); HandleKeyScrolling(); /* Do the actual free of the deleted windows. */ for (Window *v = _z_front_window; v != NULL; /* nothing */) { Window *w = v; v = v->z_back; if (w->window_class != WC_INVALID) continue; RemoveWindowFromZOrdering(w); free(w); } if (_scroller_click_timeout != 0) _scroller_click_timeout--; DecreaseWindowCounters(); if (_input_events_this_tick != 0) { /* The input loop is called only once per GameLoop() - so we can clear the counter here */ _input_events_this_tick = 0; /* there were some inputs this tick, don't scroll ??? */ return; } /* HandleMouseEvents was already called for this tick */ HandleMouseEvents(); HandleAutoscroll(); } /** * Update the continuously changing contents of the windows, such as the viewports */ void UpdateWindows() { Window *w; static int highlight_timer = 1; if (--highlight_timer == 0) { highlight_timer = 15; _window_highlight_colour = !_window_highlight_colour; } FOR_ALL_WINDOWS_FROM_FRONT(w) { w->ProcessScheduledInvalidations(); w->ProcessHighlightedInvalidations(); } static int we4_timer = 0; int t = we4_timer + 1; if (t >= 100) { FOR_ALL_WINDOWS_FROM_FRONT(w) { w->OnHundredthTick(); } t = 0; } we4_timer = t; FOR_ALL_WINDOWS_FROM_FRONT(w) { if ((w->flags & WF_WHITE_BORDER) && --w->white_border_timer == 0) { CLRBITS(w->flags, WF_WHITE_BORDER); w->SetDirty(); } } DrawDirtyBlocks(); FOR_ALL_WINDOWS_FROM_BACK(w) { /* Update viewport only if window is not shaded. */ if (w->viewport != NULL && !w->IsShaded()) UpdateViewportPosition(w); } NetworkDrawChatMessage(); /* Redraw mouse cursor in case it was hidden */ DrawMouseCursor(); } /** * Mark window as dirty (in need of repainting) * @param cls Window class * @param number Window number in that class */ void SetWindowDirty(WindowClass cls, WindowNumber number) { const Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls && w->window_number == number) w->SetDirty(); } } /** * Mark a particular widget in a particular window as dirty (in need of repainting) * @param cls Window class * @param number Window number in that class * @param widget_index Index number of the widget that needs repainting */ void SetWindowWidgetDirty(WindowClass cls, WindowNumber number, byte widget_index) { const Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls && w->window_number == number) { w->SetWidgetDirty(widget_index); } } } /** * Mark all windows of a particular class as dirty (in need of repainting) * @param cls Window class */ void SetWindowClassesDirty(WindowClass cls) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls) w->SetDirty(); } } /** * Mark this window's data as invalid (in need of re-computing) * @param data The data to invalidate with * @param gui_scope Whether the function is called from GUI scope. */ void Window::InvalidateData(int data, bool gui_scope) { this->SetDirty(); if (!gui_scope) { /* Schedule GUI-scope invalidation for next redraw. */ *this->scheduled_invalidation_data.Append() = data; } this->OnInvalidateData(data, gui_scope); } /** * Process all scheduled invalidations. */ void Window::ProcessScheduledInvalidations() { for (int *data = this->scheduled_invalidation_data.Begin(); this->window_class != WC_INVALID && data != this->scheduled_invalidation_data.End(); data++) { this->OnInvalidateData(*data, true); } this->scheduled_invalidation_data.Clear(); } /** * Process all invalidation of highlighted widgets. */ void Window::ProcessHighlightedInvalidations() { if ((this->flags & WF_HIGHLIGHTED) == 0) return; for (uint i = 0; i < this->nested_array_size; i++) { if (this->IsWidgetHighlighted(i)) this->SetWidgetDirty(i); } } /** * Mark window data of the window of a given class and specific window number as invalid (in need of re-computing) * * Note that by default the invalidation is not considered to be called from GUI scope. * That means only a part of invalidation is executed immediately. The rest is scheduled for the next redraw. * The asynchronous execution is important to prevent GUI code being executed from command scope. * When not in GUI-scope: * - OnInvalidateData() may not do test-runs on commands, as they might affect the execution of * the command which triggered the invalidation. (town rating and such) * - OnInvalidateData() may not rely on _current_company == _local_company. * This implies that no NewGRF callbacks may be run. * * However, when invalidations are scheduled, then multiple calls may be scheduled before execution starts. Earlier scheduled * invalidations may be called with invalidation-data, which is already invalid at the point of execution. * That means some stuff requires to be executed immediately in command scope, while not everything may be executed in command * scope. While GUI-scope calls have no restrictions on what they may do, they cannot assume the game to still be in the state * when the invalidation was scheduled; passed IDs may have got invalid in the mean time. * * Finally, note that invalidations triggered from commands or the game loop result in OnInvalidateData() being called twice. * Once in command-scope, once in GUI-scope. So make sure to not process differential-changes twice. * * @param cls Window class * @param number Window number within the class * @param data The data to invalidate with * @param gui_scope Whether the call is done from GUI scope */ void InvalidateWindowData(WindowClass cls, WindowNumber number, int data, bool gui_scope) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls && w->window_number == number) { w->InvalidateData(data, gui_scope); } } } /** * Mark window data of all windows of a given class as invalid (in need of re-computing) * Note that by default the invalidation is not considered to be called from GUI scope. * See InvalidateWindowData() for details on GUI-scope vs. command-scope. * @param cls Window class * @param data The data to invalidate with * @param gui_scope Whether the call is done from GUI scope */ void InvalidateWindowClassesData(WindowClass cls, int data, bool gui_scope) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == cls) { w->InvalidateData(data, gui_scope); } } } /** * Dispatch WE_TICK event over all windows */ void CallWindowTickEvent() { Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { w->OnTick(); } } /** * Try to delete a non-vital window. * Non-vital windows are windows other than the game selection, main toolbar, * status bar, toolbar menu, and tooltip windows. Stickied windows are also * considered vital. */ void DeleteNonVitalWindows() { Window *w; restart_search: /* When we find the window to delete, we need to restart the search * as deleting this window could cascade in deleting (many) others * anywhere in the z-array */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class != WC_MAIN_WINDOW && w->window_class != WC_SELECT_GAME && w->window_class != WC_MAIN_TOOLBAR && w->window_class != WC_STATUS_BAR && w->window_class != WC_TOOLTIPS && (w->flags & WF_STICKY) == 0) { // do not delete windows which are 'pinned' delete w; goto restart_search; } } } /** * It is possible that a stickied window gets to a position where the * 'close' button is outside the gaming area. You cannot close it then; except * with this function. It closes all windows calling the standard function, * then, does a little hacked loop of closing all stickied windows. Note * that standard windows (status bar, etc.) are not stickied, so these aren't affected */ void DeleteAllNonVitalWindows() { Window *w; /* Delete every window except for stickied ones, then sticky ones as well */ DeleteNonVitalWindows(); restart_search: /* When we find the window to delete, we need to restart the search * as deleting this window could cascade in deleting (many) others * anywhere in the z-array */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->flags & WF_STICKY) { delete w; goto restart_search; } } } /** * Delete all windows that are used for construction of vehicle etc. * Once done with that invalidate the others to ensure they get refreshed too. */ void DeleteConstructionWindows() { Window *w; restart_search: /* When we find the window to delete, we need to restart the search * as deleting this window could cascade in deleting (many) others * anywhere in the z-array */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->desc_flags & WDF_CONSTRUCTION) { delete w; goto restart_search; } } FOR_ALL_WINDOWS_FROM_BACK(w) w->SetDirty(); } /** Delete all always on-top windows to get an empty screen */ void HideVitalWindows() { DeleteWindowById(WC_MAIN_TOOLBAR, 0); DeleteWindowById(WC_STATUS_BAR, 0); } /** Re-initialize all windows. */ void ReInitAllWindows() { NWidgetLeaf::InvalidateDimensionCache(); // Reset cached sizes of several widgets. NWidgetScrollbar::InvalidateDimensionCache(); Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { w->ReInit(); } #ifdef ENABLE_NETWORK void NetworkReInitChatBoxSize(); NetworkReInitChatBoxSize(); #endif /* Make sure essential parts of all windows are visible */ RelocateAllWindows(_cur_resolution.width, _cur_resolution.height); MarkWholeScreenDirty(); } /** * (Re)position a window at the screen. * @param w Window structure of the window, may also be \c NULL. * @param clss The class of the window to position. * @param setting The actual setting used for the window's position. * @return X coordinate of left edge of the repositioned window. */ static int PositionWindow(Window *w, WindowClass clss, int setting) { if (w == NULL || w->window_class != clss) { w = FindWindowById(clss, 0); } if (w == NULL) return 0; int old_left = w->left; switch (setting) { case 1: w->left = (_screen.width - w->width) / 2; break; case 2: w->left = _screen.width - w->width; break; default: w->left = 0; break; } if (w->viewport != NULL) w->viewport->left += w->left - old_left; SetDirtyBlocks(0, w->top, _screen.width, w->top + w->height); // invalidate the whole row return w->left; } /** * (Re)position main toolbar window at the screen. * @param w Window structure of the main toolbar window, may also be \c NULL. * @return X coordinate of left edge of the repositioned toolbar window. */ int PositionMainToolbar(Window *w) { DEBUG(misc, 5, "Repositioning Main Toolbar..."); return PositionWindow(w, WC_MAIN_TOOLBAR, _settings_client.gui.toolbar_pos); } /** * (Re)position statusbar window at the screen. * @param w Window structure of the statusbar window, may also be \c NULL. * @return X coordinate of left edge of the repositioned statusbar. */ int PositionStatusbar(Window *w) { DEBUG(misc, 5, "Repositioning statusbar..."); return PositionWindow(w, WC_STATUS_BAR, _settings_client.gui.statusbar_pos); } /** * (Re)position news message window at the screen. * @param w Window structure of the news message window, may also be \c NULL. * @return X coordinate of left edge of the repositioned news message. */ int PositionNewsMessage(Window *w) { DEBUG(misc, 5, "Repositioning news message..."); return PositionWindow(w, WC_NEWS_WINDOW, _settings_client.gui.statusbar_pos); } /** * (Re)position network chat window at the screen. * @param w Window structure of the network chat window, may also be \c NULL. * @return X coordinate of left edge of the repositioned network chat window. */ int PositionNetworkChatWindow(Window *w) { DEBUG(misc, 5, "Repositioning network chat window..."); return PositionWindow(w, WC_SEND_NETWORK_MSG, _settings_client.gui.statusbar_pos); } /** * Switches viewports following vehicles, which get autoreplaced * @param from_index the old vehicle ID * @param to_index the new vehicle ID */ void ChangeVehicleViewports(VehicleID from_index, VehicleID to_index) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->viewport != NULL && w->viewport->follow_vehicle == from_index) { w->viewport->follow_vehicle = to_index; w->SetDirty(); } } } /** * Relocate all windows to fit the new size of the game application screen * @param neww New width of the game application screen * @param newh New height of the game application screen. */ void RelocateAllWindows(int neww, int newh) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { int left, top; if (w->window_class == WC_MAIN_WINDOW) { ViewPort *vp = w->viewport; vp->width = w->width = neww; vp->height = w->height = newh; vp->virtual_width = ScaleByZoom(neww, vp->zoom); vp->virtual_height = ScaleByZoom(newh, vp->zoom); continue; // don't modify top,left } /* XXX - this probably needs something more sane. For example specifying * in a 'backup'-desc that the window should always be centered. */ switch (w->window_class) { case WC_BOOTSTRAP: ResizeWindow(w, neww, newh); continue; case WC_MAIN_TOOLBAR: ResizeWindow(w, min(neww, *_preferred_toolbar_size) - w->width, 0, false); top = w->top; left = PositionMainToolbar(w); // changes toolbar orientation break; case WC_NEWS_WINDOW: top = newh - w->height; left = PositionNewsMessage(w); break; case WC_STATUS_BAR: ResizeWindow(w, min(neww, *_preferred_statusbar_size) - w->width, 0, false); top = newh - w->height; left = PositionStatusbar(w); break; case WC_SEND_NETWORK_MSG: ResizeWindow(w, Clamp(neww, 320, 640) - w->width, 0, false); top = newh - w->height - FindWindowById(WC_STATUS_BAR, 0)->height; left = PositionNetworkChatWindow(w); break; case WC_CONSOLE: IConsoleResize(w); continue; default: { if (w->flags & WF_CENTERED) { top = (newh - w->height) >> 1; left = (neww - w->width) >> 1; break; } left = w->left; if (left + (w->width >> 1) >= neww) left = neww - w->width; if (left < 0) left = 0; top = w->top; if (top + (w->height >> 1) >= newh) top = newh - w->height; break; } } EnsureVisibleCaption(w, left, top); } } /** * Destructor of the base class PickerWindowBase * Main utility is to stop the base Window destructor from triggering * a free while the child will already be free, in this case by the ResetObjectToPlace(). */ PickerWindowBase::~PickerWindowBase() { this->window_class = WC_INVALID; // stop the ancestor from freeing the already (to be) child ResetObjectToPlace(); } openttd-1.3.3/src/console_internal.h0000644000000000000000000000706112246102611016166 0ustar rootroot/* $Id: console_internal.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file console_internal.h Internally used functions for the console. */ #ifndef CONSOLE_INTERNAL_H #define CONSOLE_INTERNAL_H #include "gfx_type.h" static const uint ICON_CMDLN_SIZE = 1024; ///< maximum length of a typed in command static const uint ICON_MAX_STREAMSIZE = 2048; ///< maximum length of a totally expanded command /** Return values of console hooks (#IConsoleHook). */ enum ConsoleHookResult { CHR_ALLOW, ///< Allow command execution. CHR_DISALLOW, ///< Disallow command execution. CHR_HIDE, ///< Hide the existence of the command. }; /** * --Commands-- * Commands are commands, or functions. They get executed once and any * effect they produce are carried out. The arguments to the commands * are given to them, each input word separated by a double-quote (") is an argument * If you want to handle multiple words as one, enclose them in double-quotes * eg. 'say "hello sexy boy"' */ typedef bool IConsoleCmdProc(byte argc, char *argv[]); typedef ConsoleHookResult IConsoleHook(bool echo); struct IConsoleCmd { char *name; ///< name of command IConsoleCmd *next; ///< next command in list IConsoleCmdProc *proc; ///< process executed when command is typed IConsoleHook *hook; ///< any special trigger action that needs executing }; /** * --Aliases-- * Aliases are like shortcuts for complex functions, variable assignments, * etc. You can use a simple alias to rename a longer command (eg 'set' for * 'setting' for example), or concatenate more commands into one * (eg. 'ng' for 'load %A; unpause; debug_level 5'). Aliases can parse the arguments * given to them in the command line. * - "%A - %Z" substitute arguments 1 t/m 26 * - "%+" lists all parameters keeping them separated * - "%!" also lists all parameters but presenting them to the aliased command as one argument * - ";" allows for combining commands (see example 'ng') */ struct IConsoleAlias { char *name; ///< name of the alias IConsoleAlias *next; ///< next alias in list char *cmdline; ///< command(s) that is/are being aliased }; /* console parser */ extern IConsoleCmd *_iconsole_cmds; ///< List of registered commands. extern IConsoleAlias *_iconsole_aliases; ///< List of registered aliases. /* console functions */ void IConsoleClearBuffer(); /* Commands */ void IConsoleCmdRegister(const char *name, IConsoleCmdProc *proc, IConsoleHook *hook = NULL); void IConsoleAliasRegister(const char *name, const char *cmd); IConsoleCmd *IConsoleCmdGet(const char *name); IConsoleAlias *IConsoleAliasGet(const char *name); /* console std lib (register ingame commands/aliases) */ void IConsoleStdLibRegister(); /* Supporting functions */ bool GetArgumentInteger(uint32 *value, const char *arg); void IConsoleGUIInit(); void IConsoleGUIFree(); void IConsoleGUIPrint(TextColour colour_code, char *string); char *RemoveUnderscores(char *name); #endif /* CONSOLE_INTERNAL_H */ openttd-1.3.3/src/error_gui.cpp0000644000000000000000000003576312246102611015172 0ustar rootroot/* $Id: error_gui.cpp 25982 2013-11-13 21:35:44Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file error_gui.cpp GUI related to errors. */ #include "stdafx.h" #include "landscape.h" #include "newgrf_text.h" #include "error.h" #include "viewport_func.h" #include "gfx_func.h" #include "string_func.h" #include "company_base.h" #include "company_manager_face.h" #include "strings_func.h" #include "zoom_func.h" #include "window_func.h" #include "console_func.h" #include "window_gui.h" #include "widgets/error_widget.h" #include "table/strings.h" #include static const NWidgetPart _nested_errmsg_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED), NWidget(WWT_CAPTION, COLOUR_RED, WID_EM_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_RED), NWidget(WWT_EMPTY, COLOUR_RED, WID_EM_MESSAGE), SetPadding(0, 2, 0, 2), SetMinimalSize(236, 32), EndContainer(), }; static const WindowDesc _errmsg_desc( WDP_MANUAL, 0, 0, WC_ERRMSG, WC_NONE, 0, _nested_errmsg_widgets, lengthof(_nested_errmsg_widgets) ); static const NWidgetPart _nested_errmsg_face_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED), NWidget(WWT_CAPTION, COLOUR_RED, WID_EM_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_RED), NWidget(NWID_HORIZONTAL), SetPIP(2, 1, 2), NWidget(WWT_EMPTY, COLOUR_RED, WID_EM_FACE), SetMinimalSize(92, 119), SetFill(0, 1), SetPadding(2, 0, 1, 0), NWidget(WWT_EMPTY, COLOUR_RED, WID_EM_MESSAGE), SetFill(0, 1), SetMinimalSize(238, 123), EndContainer(), EndContainer(), }; static const WindowDesc _errmsg_face_desc( WDP_MANUAL, 0, 0, WC_ERRMSG, WC_NONE, 0, _nested_errmsg_face_widgets, lengthof(_nested_errmsg_face_widgets) ); /** * Copy the given data into our instance. * @param data The data to copy. */ ErrorMessageData::ErrorMessageData(const ErrorMessageData &data) { *this = data; for (size_t i = 0; i < lengthof(this->strings); i++) { if (this->strings[i] != NULL) { this->strings[i] = strdup(this->strings[i]); this->decode_params[i] = (size_t)this->strings[i]; } } } /** Free all the strings. */ ErrorMessageData::~ErrorMessageData() { for (size_t i = 0; i < lengthof(this->strings); i++) free(this->strings[i]); } /** * Display an error message in a window. * @param summary_msg General error message showed in first line. Must be valid. * @param detailed_msg Detailed error message showed in second line. Can be INVALID_STRING_ID. * @param duration The amount of time to show this error message. * @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. * @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. * @param textref_stack_size Number of uint32 values to put on the #TextRefStack for the error message; 0 if the #TextRefStack shall not be used. * @param textref_stack Values to put on the #TextRefStack. */ ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration, int x, int y, uint textref_stack_size, const uint32 *textref_stack) : duration(duration), textref_stack_size(textref_stack_size), summary_msg(summary_msg), detailed_msg(detailed_msg), face(INVALID_COMPANY) { this->position.x = x; this->position.y = y; memset(this->decode_params, 0, sizeof(this->decode_params)); memset(this->strings, 0, sizeof(this->strings)); if (textref_stack_size > 0) MemCpyT(this->textref_stack, textref_stack, textref_stack_size); assert(summary_msg != INVALID_STRING_ID); } /** * Copy error parameters from current DParams. */ void ErrorMessageData::CopyOutDParams() { /* Reset parameters */ for (size_t i = 0; i < lengthof(this->strings); i++) free(this->strings[i]); memset(this->decode_params, 0, sizeof(this->decode_params)); memset(this->strings, 0, sizeof(this->strings)); /* Get parameters using type information */ if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack); CopyOutDParam(this->decode_params, this->strings, this->detailed_msg == INVALID_STRING_ID ? this->summary_msg : this->detailed_msg, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StopTextRefStackUsage(); if (this->detailed_msg == STR_ERROR_OWNED_BY) { CompanyID company = (CompanyID)GetDParamX(this->decode_params, 2); if (company < MAX_COMPANIES) face = company; } } /** * Set a error string parameter. * @param n Parameter index * @param v Parameter value */ void ErrorMessageData::SetDParam(uint n, uint64 v) { this->decode_params[n] = v; } /** * Set a rawstring parameter. * @param n Parameter index * @param str Raw string */ void ErrorMessageData::SetDParamStr(uint n, const char *str) { free(this->strings[n]); this->strings[n] = strdup(str); } /** Define a queue with errors. */ typedef std::list ErrorList; /** The actual queue with errors. */ ErrorList _error_list; /** Whether the window system is initialized or not. */ bool _window_system_initialized = false; /** Window class for displaying an error message window. */ struct ErrmsgWindow : public Window, ErrorMessageData { private: uint height_summary; ///< Height of the #summary_msg string in pixels in the #WID_EM_MESSAGE widget. uint height_detailed; ///< Height of the #detailed_msg string in pixels in the #WID_EM_MESSAGE widget. public: ErrmsgWindow(const ErrorMessageData &data) : Window(), ErrorMessageData(data) { this->InitNested((this->face == INVALID_COMPANY) ? &_errmsg_desc : &_errmsg_face_desc); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { if (widget != WID_EM_MESSAGE) return; CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack); int text_width = max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT); this->height_summary = GetStringHeight(this->summary_msg, text_width); this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, text_width); if (this->textref_stack_size > 0) StopTextRefStackUsage(); uint panel_height = WD_FRAMERECT_TOP + this->height_summary + WD_FRAMERECT_BOTTOM; if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WD_PAR_VSEP_WIDE; size->height = max(size->height, panel_height); } virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) { /* Position (0, 0) given, center the window. */ if (this->position.x == 0 && this->position.y == 0) { Point pt = {(_screen.width - sm_width) >> 1, (_screen.height - sm_height) >> 1}; return pt; } /* Find the free screen space between the main toolbar at the top, and the statusbar at the bottom. * Add a fixed distance 20 to make it less cluttered. */ int scr_top = GetMainViewTop() + 20; int scr_bot = GetMainViewBottom() - 20; Point pt = RemapCoords2(this->position.x, this->position.y); const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; if (this->face == INVALID_COMPANY) { /* move x pos to opposite corner */ pt.x = UnScaleByZoom(pt.x - vp->virtual_left, vp->zoom) + vp->left; pt.x = (pt.x < (_screen.width >> 1)) ? _screen.width - sm_width - 20 : 20; // Stay 20 pixels away from the edge of the screen. /* move y pos to opposite corner */ pt.y = UnScaleByZoom(pt.y - vp->virtual_top, vp->zoom) + vp->top; pt.y = (pt.y < (_screen.height >> 1)) ? scr_bot - sm_height : scr_top; } else { pt.x = Clamp(UnScaleByZoom(pt.x - vp->virtual_left, vp->zoom) + vp->left - (sm_width / 2), 0, _screen.width - sm_width); pt.y = Clamp(UnScaleByZoom(pt.y - vp->virtual_top, vp->zoom) + vp->top - (sm_height / 2), scr_top, scr_bot - sm_height); } return pt; } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { /* If company gets shut down, while displaying an error about it, remove the error message. */ if (this->face != INVALID_COMPANY && !Company::IsValidID(this->face)) delete this; } virtual void SetStringParameters(int widget) const { if (widget == WID_EM_CAPTION) CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_EM_FACE: { const Company *c = Company::Get(this->face); DrawCompanyManagerFace(c->face, c->colour, r.left, r.top); break; } case WID_EM_MESSAGE: CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack); if (this->detailed_msg == INVALID_STRING_ID) { DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM, this->summary_msg, TC_FROMSTRING, SA_CENTER); } else { int extra = (r.bottom - r.top + 1 - this->height_summary - this->height_detailed - WD_PAR_VSEP_WIDE) / 2; /* Note: NewGRF supplied error message often do not start with a colour code, so default to white. */ int top = r.top + WD_FRAMERECT_TOP; int bottom = top + this->height_summary + extra; DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, top, bottom, this->summary_msg, TC_WHITE, SA_CENTER); bottom = r.bottom - WD_FRAMERECT_BOTTOM; top = bottom - this->height_detailed - extra; DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, top, bottom, this->detailed_msg, TC_WHITE, SA_CENTER); } if (this->textref_stack_size > 0) StopTextRefStackUsage(); break; default: break; } } virtual void OnMouseLoop() { /* Disallow closing the window too easily, if timeout is disabled */ if (_right_button_down && this->duration != 0) delete this; } virtual void OnHundredthTick() { /* Timeout enabled? */ if (this->duration != 0) { this->duration--; if (this->duration == 0) delete this; } } ~ErrmsgWindow() { SetRedErrorSquare(INVALID_TILE); if (_window_system_initialized) ShowFirstError(); } virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (keycode != WKC_SPACE) return ES_NOT_HANDLED; delete this; return ES_HANDLED; } /** * Check whether the currently shown error message was critical or not. * @return True iff the message was critical. */ bool IsCritical() { return this->duration == 0; } }; /** * Clear all errors from the queue. */ void ClearErrorMessages() { UnshowCriticalError(); _error_list.clear(); } /** Show the first error of the queue. */ void ShowFirstError() { _window_system_initialized = true; if (!_error_list.empty()) { new ErrmsgWindow(_error_list.front()); _error_list.pop_front(); } } /** * Unshow the critical error. This has to happen when a critical * error is shown and we uninitialise the window system, i.e. * remove all the windows. */ void UnshowCriticalError() { ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); if (_window_system_initialized && w != NULL) { if (w->IsCritical()) _error_list.push_front(*w); _window_system_initialized = false; delete w; } } /** * Display an error message in a window. * @param summary_msg General error message showed in first line. Must be valid. * @param detailed_msg Detailed error message showed in second line. Can be INVALID_STRING_ID. * @param wl Message severity. * @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. * @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile. * @param textref_stack_size Number of uint32 values to put on the #TextRefStack for the error message; 0 if the #TextRefStack shall not be used. * @param textref_stack Values to put on the #TextRefStack. */ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x, int y, uint textref_stack_size, const uint32 *textref_stack) { assert(textref_stack_size == 0 || textref_stack != NULL); if (summary_msg == STR_NULL) summary_msg = STR_EMPTY; if (wl != WL_INFO) { /* Print message to console */ char buf[DRAW_STRING_BUFFER]; if (textref_stack_size > 0) StartTextRefStackUsage(textref_stack_size, textref_stack); char *b = GetString(buf, summary_msg, lastof(buf)); if (detailed_msg != INVALID_STRING_ID) { b += seprintf(b, lastof(buf), " "); GetString(b, detailed_msg, lastof(buf)); } if (textref_stack_size > 0) StopTextRefStackUsage(); switch (wl) { case WL_WARNING: IConsolePrint(CC_WARNING, buf); break; default: IConsoleError(buf); break; } } bool no_timeout = wl == WL_CRITICAL; if (_settings_client.gui.errmsg_duration == 0 && !no_timeout) return; ErrorMessageData data(summary_msg, detailed_msg, no_timeout ? 0 : _settings_client.gui.errmsg_duration, x, y, textref_stack_size, textref_stack); data.CopyOutDParams(); ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); if (w != NULL && w->IsCritical()) { /* A critical error is currently shown. */ if (wl == WL_CRITICAL) { /* Push another critical error in the queue of errors, * but do not put other errors in the queue. */ _error_list.push_back(data); } } else { /* Nothing or a non-critical error was shown. */ delete w; new ErrmsgWindow(data); } } /** * Schedule a list of errors. * Note: This does not try to display the error now. This is useful if the window system is not yet running. * @param data Error message datas; cleared afterwards */ void ScheduleErrorMessage(ErrorList &datas) { _error_list.splice(_error_list.end(), datas); } /** * Schedule an error. * Note: This does not try to display the error now. This is useful if the window system is not yet running. * @param data Error message data; cleared afterwards */ void ScheduleErrorMessage(const ErrorMessageData &data) { _error_list.push_back(data); } openttd-1.3.3/src/townname_type.h0000644000000000000000000000303212246102611015513 0ustar rootroot/* $Id: townname_type.h 22405 2011-05-01 19:14:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file townname_type.h * Definition of structures used for generating town names. */ #ifndef TOWNNAME_TYPE_H #define TOWNNAME_TYPE_H #include "newgrf_townname.h" #include "town_type.h" /** * Struct holding a parameters used to generate town name. * Speeds things up a bit because these values are computed only once per name generation. */ struct TownNameParams { uint32 grfid; ///< newgrf ID (0 if not used) uint16 type; ///< town name style /** * Initializes this struct from language ID * @param town_name town name 'language' ID */ TownNameParams(byte town_name) { extern int _nb_orig_names; bool grf = town_name >= _nb_orig_names; this->grfid = grf ? GetGRFTownNameId(town_name - _nb_orig_names) : 0; this->type = grf ? GetGRFTownNameType(town_name - _nb_orig_names) : SPECSTR_TOWNNAME_START + town_name; } TownNameParams(const Town *t); }; #endif /* TOWNNAME_TYPE_H */ openttd-1.3.3/src/depot_cmd.cpp0000644000000000000000000000516312246102610015121 0ustar rootroot/* $Id: depot_cmd.cpp 23704 2012-01-01 17:22:32Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot_cmd.cpp %Command Handling for depots. */ #include "stdafx.h" #include "command_func.h" #include "depot_base.h" #include "company_func.h" #include "string_func.h" #include "town.h" #include "vehicle_gui.h" #include "vehiclelist.h" #include "window_func.h" #include "table/strings.h" /** * Check whether the given name is globally unique amongst depots. * @param name The name to check. * @return True if there is no depot with the given name. */ static bool IsUniqueDepotName(const char *name) { const Depot *d; FOR_ALL_DEPOTS(d) { if (d->name != NULL && strcmp(d->name, name) == 0) return false; } return true; } /** * Rename a depot. * @param tile unused * @param flags type of operation * @param p1 id of depot * @param p2 unused * @param text the new name or an empty string when resetting to the default * @return the cost of this operation or an error */ CommandCost CmdRenameDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Depot *d = Depot::GetIfValid(p1); if (d == NULL) return CMD_ERROR; CommandCost ret = CheckTileOwnership(d->xy); if (ret.Failed()) return ret; bool reset = StrEmpty(text); if (!reset) { if (Utf8StringLength(text) >= MAX_LENGTH_DEPOT_NAME_CHARS) return CMD_ERROR; if (!IsUniqueDepotName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE); } if (flags & DC_EXEC) { free(d->name); if (reset) { d->name = NULL; MakeDefaultName(d); } else { d->name = strdup(text); } /* Update the orders and depot */ SetWindowClassesDirty(WC_VEHICLE_ORDERS); SetWindowDirty(WC_VEHICLE_DEPOT, d->xy); /* Update the depot list */ VehicleType vt; switch (GetTileType(d->xy)) { default: NOT_REACHED(); case MP_RAILWAY: vt = VEH_TRAIN; break; case MP_ROAD: vt = VEH_ROAD; break; case MP_WATER: vt = VEH_SHIP; break; } SetWindowDirty(GetWindowClassForVehicleType(vt), VehicleListIdentifier(VL_DEPOT_LIST, vt, GetTileOwner(d->xy), d->index).Pack()); } return CommandCost(); } openttd-1.3.3/src/depend/0000755000000000000000000000000012246102757013725 5ustar rootrootopenttd-1.3.3/src/depend/depend.cpp0000644000000000000000000006774612246102566015712 0ustar rootroot/* $Id: depend.cpp 24432 2012-07-22 18:56:16Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file depend/depend.cpp Custom implementation of Makedepend. * * We previously used makedepend, but that could not handle the amount of * files we have and does not handle conditional includes in a sane manner. * This caused many link problems because not enough files were recompiled. * This has lead to the development of our own dependency generator. It is * meant to be a substitute to the (relatively slow) dependency generation * via gcc. It thus helps speeding up compilation. It will also ignore * system headers making it less error prone when system headers are moved * or renamed. */ #include #include #include #include #include #include #include #include #include /** * Version of the standard free that accepts const pointers. * @param ptr The data to free. */ static inline void free(const void *ptr) { free(const_cast(ptr)); } #ifndef PATH_MAX /** The maximum length of paths, if we don't know it. */ # define PATH_MAX 260 #endif /** Simple string comparator using strcmp as implementation */ struct StringCompare { /** * Compare a to b using strcmp. * @param a string to compare. * @param b string to compare. * @return whether a is less than b. */ bool operator () (const char *a, const char *b) const { return strcmp(a, b) < 0; } }; /** Set of C-style strings. */ typedef std::set StringSet; /** Mapping of C-style string to a set of C-style strings. */ typedef std::map StringMap; /** Pair of C-style string and a set of C-style strings. */ typedef std::pair StringMapItem; /** Include directory to search in. */ static StringSet _include_dirs; /** Files that have been parsed/handled with their dependencies. */ static StringMap _files; /** Dependencies of headers. */ static StringMap _headers; /** The current 'active' defines. */ static StringSet _defines; /** * Helper class to read a file. */ class File { public: /** * Create the helper by opening the given file. * @param filename the file to open * @post the file is open; otherwise the application is killed. */ File(const char *filename) : filename(filename) { this->fp = fopen(filename, "r"); if (this->fp == NULL) { fprintf(stdout, "Could not open %s for reading\n", filename); exit(1); } this->dirname = strdup(filename); char *last = strrchr(this->dirname, '/'); if (last != NULL) { *last = '\0'; } else { *this->dirname = '\0'; } } /** Free everything we have allocated. */ ~File() { fclose(this->fp); free(this->dirname); } /** * Get a single character from the file. * If we are reading beyond the end of the file '\0' is returned. * @return the read character. */ char GetChar() const { int c = fgetc(this->fp); return (c == EOF) ? '\0' : c; } /** * Get the directory name of the file. * @return the directory name. */ const char *GetDirname() const { return this->dirname; } private: FILE *fp; ///< The currently opened file. char *dirname; ///< The directory of the file. const char *filename; ///< The name of the file. }; /** A token returned by the tokenizer. */ enum Token { TOKEN_UNKNOWN, ///< Unknown token TOKEN_END, ///< End of document TOKEN_EOL, ///< End of line TOKEN_SHARP, ///< # character, usually telling something important comes. TOKEN_LOCAL, ///< Read a local include TOKEN_GLOBAL, ///< Read a global include TOKEN_IDENTIFIER, ///< Identifier within the data. TOKEN_DEFINE, ///< (#)define in code TOKEN_IF, ///< (#)if in code TOKEN_IFDEF, ///< (#)ifdef in code TOKEN_IFNDEF, ///< (#)ifndef in code TOKEN_ELIF, ///< (#)elif in code TOKEN_ELSE, ///< (#)else in code TOKEN_ENDIF, ///< (#)endif in code TOKEN_UNDEF, ///< (#)undef in code TOKEN_OR, ///< '||' within #if expression TOKEN_AND, ///< '&&' within #if expression TOKEN_DEFINED, ///< 'defined' within #if expression TOKEN_OPEN, ///< '(' within #if expression TOKEN_CLOSE, ///< ')' within #if expression TOKEN_NOT, ///< '!' within #if expression TOKEN_ZERO, ///< '0' within #if expression TOKEN_INCLUDE, ///< (#)include in code }; /** Mapping from a C-style keyword representation to a Token. */ typedef std::map KeywordList; /** * Lexer of a file. */ class Lexer { public: /** * Create the lexer and fill the keywords table. * @param file the file to read from. */ Lexer(const File *file) : file(file), current_char('\0'), string(NULL), token(TOKEN_UNKNOWN) { this->keywords["define"] = TOKEN_DEFINE; this->keywords["defined"] = TOKEN_DEFINED; this->keywords["if"] = TOKEN_IF; this->keywords["ifdef"] = TOKEN_IFDEF; this->keywords["ifndef"] = TOKEN_IFNDEF; this->keywords["include"] = TOKEN_INCLUDE; this->keywords["elif"] = TOKEN_ELIF; this->keywords["else"] = TOKEN_ELSE; this->keywords["endif"] = TOKEN_ENDIF; this->keywords["undef"] = TOKEN_UNDEF; /* Initialise currently read character. */ this->Next(); /* Allocate the buffer. */ this->buf_len = 32; this->buf = (char*)malloc(sizeof(*this->buf) * this->buf_len); } /** Free everything */ ~Lexer() { free(this->buf); } /** * Read the next character into 'current_char'. */ void Next() { this->current_char = this->file->GetChar(); } /** * Get the current token. * @return the token. */ Token GetToken() const { return this->token; } /** * Read the currenty processed string. * @return the string, can be NULL. */ const char *GetString() const { return this->string; } /** * Perform the lexing/tokenizing of the file till we can return something * that must be parsed. */ void Lex() { for (;;) { free(this->string); this->string = NULL; this->token = TOKEN_UNKNOWN; switch (this->current_char) { /* '\0' means End-Of-File */ case '\0': this->token = TOKEN_END; return; /* Skip some chars, as they don't do anything */ case '\t': this->Next(); break; case '\r': this->Next(); break; case ' ': this->Next(); break; case '\\': this->Next(); if (this->current_char == '\n') this->Next(); break; case '\n': this->token = TOKEN_EOL; this->Next(); return; case '#': this->token = TOKEN_SHARP; this->Next(); return; case '"': this->ReadString('"', TOKEN_LOCAL); this->Next(); return; case '<': this->ReadString('>', TOKEN_GLOBAL); this->Next(); return; case '&': this->Next(); if (this->current_char == '&') { this->Next(); this->token = TOKEN_AND; return; } break; case '|': this->Next(); if (this->current_char == '|') { this->Next(); this->token = TOKEN_OR; return; } break; case '(': this->Next(); this->token = TOKEN_OPEN; return; case ')': this->Next(); this->token = TOKEN_CLOSE; return; case '!': this->Next(); if (this->current_char != '=') { this->token = TOKEN_NOT; return; } break; /* Possible begin of comment */ case '/': this->Next(); switch (this->current_char) { case '*': { this->Next(); char previous_char = '\0'; while ((this->current_char != '/' || previous_char != '*') && this->current_char != '\0') { previous_char = this->current_char; this->Next(); } this->Next(); break; } case '/': while (this->current_char != '\n' && this->current_char != '\0') this->Next(); break; default: break; } break; default: if (isalpha(this->current_char) || this->current_char == '_') { /* If the name starts with a letter, it is an identifier */ this->ReadIdentifier(); return; } if (isdigit(this->current_char)) { bool zero = this->current_char == '0'; this->Next(); if (this->current_char == 'x' || this->current_char == 'X') Next(); while (isdigit(this->current_char) || this->current_char == '.' || (this->current_char >= 'a' && this->current_char <= 'f') || (this->current_char >= 'A' && this->current_char <= 'F')) { zero &= this->current_char == '0'; this->Next(); } if (zero) this->token = TOKEN_ZERO; return; } this->Next(); break; } } } private: /** * The token based on keyword with a given name. * @param name the actual keyword. * @return the token of the keyword. */ Token FindKeyword(const char *name) const { KeywordList::const_iterator it = this->keywords.find(name); if (it == this->keywords.end()) return TOKEN_IDENTIFIER; return (*it).second; } /** * Read an identifier. */ void ReadIdentifier() { size_t count = 0; /* Read the rest of the identifier */ do { this->buf[count++] = this->current_char; this->Next(); if (count >= buf_len) { /* Scale the buffer if required */ this->buf_len *= 2; this->buf = (char *)realloc(this->buf, sizeof(*this->buf) * this->buf_len); } } while ((isalpha(this->current_char) || this->current_char == '_' || isdigit(this->current_char))); this->buf[count] = '\0'; free(this->string); this->string = strdup(this->buf); this->token = FindKeyword(this->string); } /** * Read a string up to a given character, then set the given token. * @param end the 'marker' for the end of the string. * @param token the token to set after returning. */ void ReadString(char end, Token token) { size_t count = 0; this->Next(); while (this->current_char != end && this->current_char != ')' && this->current_char != '\n' && this->current_char != '\0') { this->buf[count++] = this->current_char; this->Next(); if (count >= this->buf_len) { /* Scale the buffer if required */ this->buf_len *= 2; this->buf = (char *)realloc(this->buf, sizeof(*this->buf) * this->buf_len); } } this->buf[count] = '\0'; free(this->string); this->string = strdup(this->buf); this->token = token; } const File *file; ///< The file to read from. char current_char; ///< The current character to process. char *string; ///< Currently processed string. Token token; ///< The current token to process. char *buf; ///< Temporary buffer. size_t buf_len; ///< Length of the temporary buffer. KeywordList keywords; ///< All keywords we know of. }; /** * Generate a path from a directory name and a relative filename. * If the file is not local the include directory names will be used instead * of the passed parameter with directory name. If the file is local both will * be queried where the parameter takes precedence. * @param dirname the directory to look in. * @param filename the file to look for. * @param local whether to look locally (in dirname) for the file. * @return the absolute path, or NULL if the file doesn't exist. */ const char *GeneratePath(const char *dirname, const char *filename, bool local) { if (local) { if (access(filename, R_OK) == 0) return strdup(filename); char path[PATH_MAX]; strcpy(path, dirname); const char *p = filename; /* Remove '..' from the begin of the filename. */ while (*p == '.') { if (*(++p) == '.') { char *s = strrchr(path, '/'); if (s != NULL) *s = '\0'; p += 2; } } strcat(path, "/"); strcat(path, p); if (access(path, R_OK) == 0) return strdup(path); } for (StringSet::iterator it = _include_dirs.begin(); it != _include_dirs.end(); it++) { char path[PATH_MAX]; strcpy(path, *it); const char *p = filename; /* Remove '..' from the begin of the filename. */ while (*p == '.') { if (*(++p) == '.') { char *s = strrchr(path, '/'); if (s != NULL) *s = '\0'; p += 2; } } strcat(path, "/"); strcat(path, p); if (access(path, R_OK) == 0) return strdup(path); } return NULL; } /** * Try to parse a 'defined(expr)' expression. * @param lexer the lexer to get tokens from. * @param defines the set of known defines. * @param verbose whether to give verbose debugging information. * @return the value of the expression. */ bool ExpressionDefined(Lexer *lexer, StringSet *defines, bool verbose); /** * Try to parse a 'expr || expr' expression. * @param lexer the lexer to get tokens from. * @param defines the set of known defines. * @param verbose whether to give verbose debugging information. * @return the value of the expression. */ bool ExpressionOr(Lexer *lexer, StringSet *defines, bool verbose); /** * Try to parse a '!expr' expression. Also parses the '(expr)', '0' and * identifiers. Finally it also consumes any unknown tokens. * @param lexer the lexer to get tokens from. * @param defines the set of known defines. * @param verbose whether to give verbose debugging information. * @return the value of the expression. */ bool ExpressionNot(Lexer *lexer, StringSet *defines, bool verbose) { if (lexer->GetToken() == TOKEN_NOT) { if (verbose) fprintf(stderr, "!"); lexer->Lex(); bool value = !ExpressionDefined(lexer, defines, verbose); if (verbose) fprintf(stderr, "[%d]", value); return value; } if (lexer->GetToken() == TOKEN_OPEN) { if (verbose) fprintf(stderr, "("); lexer->Lex(); bool value = ExpressionOr(lexer, defines, verbose); if (verbose) fprintf(stderr, ")[%d]", value); lexer->Lex(); return value; } if (lexer->GetToken() == TOKEN_ZERO) { if (verbose) fprintf(stderr, "0"); lexer->Lex(); if (verbose) fprintf(stderr, "[0]"); return false; } bool first = true; while (lexer->GetToken() == TOKEN_UNKNOWN || lexer->GetToken() == TOKEN_IDENTIFIER) { if (verbose && first) fprintf(stderr, ""); first = false; lexer->Lex(); } return true; } /** * Try to parse a 'defined(expr)' expression. * @param lexer the lexer to get tokens from. * @param defines the set of known defines. * @param verbose whether to give verbose debugging information. * @return the value of the expression. */ bool ExpressionDefined(Lexer *lexer, StringSet *defines, bool verbose) { bool value = ExpressionNot(lexer, defines, verbose); if (lexer->GetToken() != TOKEN_DEFINED) return value; lexer->Lex(); if (verbose) fprintf(stderr, "defined"); bool open = (lexer->GetToken() == TOKEN_OPEN); if (open) lexer->Lex(); if (verbose) fprintf(stderr, open ? "(" : " "); if (lexer->GetToken() == TOKEN_IDENTIFIER) { if (verbose) fprintf(stderr, "%s", lexer->GetString()); value = defines->find(lexer->GetString()) != defines->end(); } if (open) { if (verbose) fprintf(stderr, ")"); lexer->Lex(); } lexer->Lex(); if (verbose) fprintf(stderr, "[%d]", value); return value; } /** * Try to parse a 'expr && expr' expression. * @param lexer the lexer to get tokens from. * @param defines the set of known defines. * @param verbose whether to give verbose debugging information. * @return the value of the expression. */ bool ExpressionAnd(Lexer *lexer, StringSet *defines, bool verbose) { bool value = ExpressionDefined(lexer, defines, verbose); for (;;) { if (lexer->GetToken() != TOKEN_AND) return value; if (verbose) fprintf(stderr, " && "); lexer->Lex(); value = value && ExpressionDefined(lexer, defines, verbose); } } /** * Try to parse a 'expr || expr' expression. * @param lexer the lexer to get tokens from. * @param defines the set of known defines. * @param verbose whether to give verbose debugging information. * @return the value of the expression. */ bool ExpressionOr(Lexer *lexer, StringSet *defines, bool verbose) { bool value = ExpressionAnd(lexer, defines, verbose); for (;;) { if (lexer->GetToken() != TOKEN_OR) return value; if (verbose) fprintf(stderr, " || "); lexer->Lex(); value = value || ExpressionAnd(lexer, defines, verbose); } } /** Enumerator to tell how long to ignore 'stuff'. */ enum Ignore { NOT_IGNORE, ///< No ignoring. IGNORE_UNTIL_ELSE, ///< Ignore till a #else is reached. IGNORE_UNTIL_ENDIF, ///< Ignore till a #endif is reached. }; /** * Scan a file for includes, defines and the lot. * @param filename the name of the file to scan. * @param ext the extension of the filename. * @param header whether the file is a header or not. * @param verbose whether to give verbose debugging information. */ void ScanFile(const char *filename, const char *ext, bool header, bool verbose) { static StringSet defines; static std::stack ignore; /* Copy in the default defines (parameters of depend) */ if (!header) { for (StringSet::iterator it = _defines.begin(); it != _defines.end(); it++) { defines.insert(strdup(*it)); } } File file(filename); Lexer lexer(&file); /* Start the lexing! */ lexer.Lex(); while (lexer.GetToken() != TOKEN_END) { switch (lexer.GetToken()) { /* We reached the end of the file... yay, we're done! */ case TOKEN_END: break; /* The line started with a # (minus whitespace) */ case TOKEN_SHARP: lexer.Lex(); switch (lexer.GetToken()) { case TOKEN_INCLUDE: if (verbose) fprintf(stderr, "%s #include ", filename); lexer.Lex(); switch (lexer.GetToken()) { case TOKEN_LOCAL: case TOKEN_GLOBAL: { if (verbose) fprintf(stderr, "%s", lexer.GetString()); if (!ignore.empty() && ignore.top() != NOT_IGNORE) { if (verbose) fprintf(stderr, " (ignored)"); break; } const char *h = GeneratePath(file.GetDirname(), lexer.GetString(), lexer.GetToken() == TOKEN_LOCAL); if (h != NULL) { StringMap::iterator it = _headers.find(h); if (it == _headers.end()) { it = (_headers.insert(StringMapItem(strdup(h), new StringSet()))).first; if (verbose) fprintf(stderr, "\n"); ScanFile(h, ext, true, verbose); } StringMap::iterator curfile; if (header) { curfile = _headers.find(filename); } else { /* Replace the extension with the provided extension of '.o'. */ char path[PATH_MAX]; strcpy(path, filename); *(strrchr(path, '.')) = '\0'; strcat(path, ext != NULL ? ext : ".o"); curfile = _files.find(path); if (curfile == _files.end()) { curfile = (_files.insert(StringMapItem(strdup(path), new StringSet()))).first; } } if (it != _headers.end()) { for (StringSet::iterator header = it->second->begin(); header != it->second->end(); header++) { if (curfile->second->find(*header) == curfile->second->end()) curfile->second->insert(strdup(*header)); } } if (curfile->second->find(h) == curfile->second->end()) curfile->second->insert(strdup(h)); free(h); } } /* FALL THROUGH */ default: break; } break; case TOKEN_DEFINE: if (verbose) fprintf(stderr, "%s #define ", filename); lexer.Lex(); if (lexer.GetToken() == TOKEN_IDENTIFIER) { if (verbose) fprintf(stderr, "%s", lexer.GetString()); if (!ignore.empty() && ignore.top() != NOT_IGNORE) { if (verbose) fprintf(stderr, " (ignored)"); break; } if (defines.find(lexer.GetString()) == defines.end()) defines.insert(strdup(lexer.GetString())); lexer.Lex(); } break; case TOKEN_UNDEF: if (verbose) fprintf(stderr, "%s #undef ", filename); lexer.Lex(); if (lexer.GetToken() == TOKEN_IDENTIFIER) { if (verbose) fprintf(stderr, "%s", lexer.GetString()); if (!ignore.empty() && ignore.top() != NOT_IGNORE) { if (verbose) fprintf(stderr, " (ignored)"); break; } StringSet::iterator it = defines.find(lexer.GetString()); if (it != defines.end()) { free(*it); defines.erase(it); } lexer.Lex(); } break; case TOKEN_ENDIF: if (verbose) fprintf(stderr, "%s #endif", filename); lexer.Lex(); if (!ignore.empty()) ignore.pop(); if (verbose) fprintf(stderr, " -> %signore", (!ignore.empty() && ignore.top() != NOT_IGNORE) ? "" : "not "); break; case TOKEN_ELSE: { if (verbose) fprintf(stderr, "%s #else", filename); lexer.Lex(); Ignore last = ignore.empty() ? NOT_IGNORE : ignore.top(); if (!ignore.empty()) ignore.pop(); if (ignore.empty() || ignore.top() == NOT_IGNORE) { ignore.push(last == IGNORE_UNTIL_ELSE ? NOT_IGNORE : IGNORE_UNTIL_ENDIF); } else { ignore.push(IGNORE_UNTIL_ENDIF); } if (verbose) fprintf(stderr, " -> %signore", (!ignore.empty() && ignore.top() != NOT_IGNORE) ? "" : "not "); break; } case TOKEN_ELIF: { if (verbose) fprintf(stderr, "%s #elif ", filename); lexer.Lex(); Ignore last = ignore.empty() ? NOT_IGNORE : ignore.top(); if (!ignore.empty()) ignore.pop(); if (ignore.empty() || ignore.top() == NOT_IGNORE) { bool value = ExpressionOr(&lexer, &defines, verbose); ignore.push(last == IGNORE_UNTIL_ELSE ? (value ? NOT_IGNORE : IGNORE_UNTIL_ELSE) : IGNORE_UNTIL_ENDIF); } else { ignore.push(IGNORE_UNTIL_ENDIF); } if (verbose) fprintf(stderr, " -> %signore", (!ignore.empty() && ignore.top() != NOT_IGNORE) ? "" : "not "); break; } case TOKEN_IF: { if (verbose) fprintf(stderr, "%s #if ", filename); lexer.Lex(); if (ignore.empty() || ignore.top() == NOT_IGNORE) { bool value = ExpressionOr(&lexer, &defines, verbose); ignore.push(value ? NOT_IGNORE : IGNORE_UNTIL_ELSE); } else { ignore.push(IGNORE_UNTIL_ENDIF); } if (verbose) fprintf(stderr, " -> %signore", (!ignore.empty() && ignore.top() != NOT_IGNORE) ? "" : "not "); break; } case TOKEN_IFDEF: if (verbose) fprintf(stderr, "%s #ifdef ", filename); lexer.Lex(); if (lexer.GetToken() == TOKEN_IDENTIFIER) { bool value = defines.find(lexer.GetString()) != defines.end(); if (verbose) fprintf(stderr, "%s[%d]", lexer.GetString(), value); if (ignore.empty() || ignore.top() == NOT_IGNORE) { ignore.push(value ? NOT_IGNORE : IGNORE_UNTIL_ELSE); } else { ignore.push(IGNORE_UNTIL_ENDIF); } } if (verbose) fprintf(stderr, " -> %signore", (!ignore.empty() && ignore.top() != NOT_IGNORE) ? "" : "not "); break; case TOKEN_IFNDEF: if (verbose) fprintf(stderr, "%s #ifndef ", filename); lexer.Lex(); if (lexer.GetToken() == TOKEN_IDENTIFIER) { bool value = defines.find(lexer.GetString()) != defines.end(); if (verbose) fprintf(stderr, "%s[%d]", lexer.GetString(), value); if (ignore.empty() || ignore.top() == NOT_IGNORE) { ignore.push(!value ? NOT_IGNORE : IGNORE_UNTIL_ELSE); } else { ignore.push(IGNORE_UNTIL_ENDIF); } } if (verbose) fprintf(stderr, " -> %signore", (!ignore.empty() && ignore.top() != NOT_IGNORE) ? "" : "not "); break; default: if (verbose) fprintf(stderr, "%s #", filename); lexer.Lex(); break; } if (verbose) fprintf(stderr, "\n"); /* FALL THROUGH */ default: /* Ignore the rest of the garbage on this line */ while (lexer.GetToken() != TOKEN_EOL && lexer.GetToken() != TOKEN_END) lexer.Lex(); lexer.Lex(); break; } } if (!header) { for (StringSet::iterator it = defines.begin(); it != defines.end(); it++) { free(*it); } defines.clear(); while (!ignore.empty()) ignore.pop(); } } /** * Entry point. Arguably the most common function in all applications. * @param argc the number of arguments. * @param argv the actual arguments. * @return return value for the caller to tell we succeed or not. */ int main(int argc, char *argv[]) { bool ignorenext = true; char *filename = NULL; char *ext = NULL; char *delimiter = NULL; bool append = false; bool verbose = false; for (int i = 0; i < argc; i++) { if (ignorenext) { ignorenext = false; continue; } if (argv[i][0] == '-') { /* Append */ if (strncmp(argv[i], "-a", 2) == 0) append = true; /* Include dir */ if (strncmp(argv[i], "-I", 2) == 0) { if (argv[i][2] == '\0') { i++; _include_dirs.insert(strdup(argv[i])); } else { _include_dirs.insert(strdup(&argv[i][2])); } continue; } /* Define */ if (strncmp(argv[i], "-D", 2) == 0) { char *p = strchr(argv[i], '='); if (p != NULL) *p = '\0'; _defines.insert(strdup(&argv[i][2])); continue; } /* Output file */ if (strncmp(argv[i], "-f", 2) == 0) { if (filename != NULL) continue; filename = strdup(&argv[i][2]); continue; } /* Object file extension */ if (strncmp(argv[i], "-o", 2) == 0) { if (ext != NULL) continue; ext = strdup(&argv[i][2]); continue; } /* Starting string delimiter */ if (strncmp(argv[i], "-s", 2) == 0) { if (delimiter != NULL) continue; delimiter = strdup(&argv[i][2]); continue; } /* Verbose */ if (strncmp(argv[i], "-v", 2) == 0) verbose = true; continue; } ScanFile(argv[i], ext, false, verbose); } /* Default output file is Makefile */ if (filename == NULL) filename = strdup("Makefile"); /* Default delimiter string */ if (delimiter == NULL) delimiter = strdup("# DO NOT DELETE"); char backup[PATH_MAX]; strcpy(backup, filename); strcat(backup, ".bak"); char *content = NULL; long size = 0; /* Read in the current file; so we can overwrite everything from the * end of non-depend data marker down till the end. */ FILE *src = fopen(filename, "rb"); if (src != NULL) { fseek(src, 0, SEEK_END); size = ftell(src); rewind(src); content = (char*)malloc(size * sizeof(*content)); if (fread(content, 1, size, src) != (size_t)size) { fprintf(stderr, "Could not read %s\n", filename); exit(-2); } fclose(src); } FILE *dst = fopen(filename, "w"); bool found_delimiter = false; if (size != 0) { src = fopen(backup, "wb"); if (fwrite(content, 1, size, src) != (size_t)size) { fprintf(stderr, "Could not write %s\n", filename); exit(-2); } fclose(src); /* Then append it to the real file. */ src = fopen(backup, "rb"); while (fgets(content, size, src) != NULL) { fputs(content, dst); if (!strncmp(content, delimiter, strlen(delimiter))) found_delimiter = true; if (!append && found_delimiter) break; } fclose(src); } if (!found_delimiter) fprintf(dst, "\n%s\n", delimiter); for (StringMap::iterator it = _files.begin(); it != _files.end(); it++) { for (StringSet::iterator h = it->second->begin(); h != it->second->end(); h++) { fprintf(dst, "%s: %s\n", it->first, *h); } } /* Clean up our mess. */ fclose(dst); free(delimiter); free(filename); free(ext); free(content); for (StringMap::iterator it = _files.begin(); it != _files.end(); it++) { for (StringSet::iterator h = it->second->begin(); h != it->second->end(); h++) { free(*h); } it->second->clear(); delete it->second; free(it->first); } _files.clear(); for (StringMap::iterator it = _headers.begin(); it != _headers.end(); it++) { for (StringSet::iterator h = it->second->begin(); h != it->second->end(); h++) { free(*h); } it->second->clear(); delete it->second; free(it->first); } _headers.clear(); for (StringSet::iterator it = _defines.begin(); it != _defines.end(); it++) { free(*it); } _defines.clear(); for (StringSet::iterator it = _include_dirs.begin(); it != _include_dirs.end(); it++) { free(*it); } _include_dirs.clear(); return 0; } openttd-1.3.3/src/table/0000755000000000000000000000000012246102757013555 5ustar rootrootopenttd-1.3.3/src/table/palettes.h0000644000000000000000000002142412246102566015550 0ustar rootroot/* $Id: palettes.h 24111 2012-04-10 20:16:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file palettes.h The colour translation of the GRF palettes. */ #include "../core/endian_type.hpp" #define M(r, g, b) Colour(r, g, b) /** Colour palette (DOS) */ static const Palette _palette = { { /* transparent */ Colour(0, 0, 0, 0), /* grey scale */ M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48), M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115), /* regular colours */ M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184), M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252), M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132), M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220), M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28), M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168), M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72), M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176), M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52), M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144), M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60), M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28), M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136), M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16), M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0), M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8), M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56), M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128), M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4), M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44), M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60), M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124), M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88), M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200), M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 4), M( 88, 52, 12), M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88), M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56), M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112), M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20), M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136), M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116), M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224), M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196), M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252), M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184), M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240), M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108), M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192), M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52), M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160), M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140), M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252), M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0), M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0), M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0), M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0), M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48), M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104), M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188), M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64), M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252), M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), /* unused pink */ M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), /* Palette animated colours (filled with data from #ExtraPaletteValues) */ M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), /* pure white */ M(252, 252, 252) }, 0, // First dirty 256 // Dirty count }; /** Description of the length of the palette cycle animations */ static const uint EPV_CYCLES_DARK_WATER = 5; ///< length of the dark blue water animation static const uint EPV_CYCLES_LIGHTHOUSE = 4; ///< length of the lighthouse/stadium animation static const uint EPV_CYCLES_OIL_REFINERY = 7; ///< length of the oil refinery's fire animation static const uint EPV_CYCLES_FIZZY_DRINK = 5; ///< length of the fizzy drinks animation static const uint EPV_CYCLES_GLITTER_WATER = 15; ///< length of the glittery water animation /** Description of tables for the palette animation */ struct ExtraPaletteValues { Colour dark_water[EPV_CYCLES_DARK_WATER]; ///< dark blue water Colour dark_water_toyland[EPV_CYCLES_DARK_WATER]; ///< dark blue water Toyland Colour lighthouse[EPV_CYCLES_LIGHTHOUSE]; ///< lighthouse & stadium Colour oil_refinery[EPV_CYCLES_OIL_REFINERY]; ///< oil refinery Colour fizzy_drink[EPV_CYCLES_FIZZY_DRINK]; ///< fizzy drinks Colour glitter_water[EPV_CYCLES_GLITTER_WATER]; ///< glittery water Colour glitter_water_toyland[EPV_CYCLES_GLITTER_WATER]; ///< glittery water Toyland }; /** Actual palette animation tables */ static const ExtraPaletteValues _extra_palette_values = { /* dark blue water */ { M( 32, 68, 112), M( 36, 72, 116), M( 40, 76, 120), M( 44, 80, 124), M( 48, 84, 128) }, /* dark blue water Toyland */ { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136), M( 44, 124, 140) }, /* lighthouse & stadium */ { M(240, 208, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0) }, /* oil refinery */ { M(252, 60, 0), M(252, 84, 0), M(252, 108, 0), M(252, 124, 0), M(252, 148, 0), M(252, 172, 0), M(252, 196, 0) }, /* fizzy drinks */ { M( 76, 24, 8), M(108, 44, 24), M(144, 72, 52), M(176, 108, 84), M(212, 148, 128) }, /* glittery water */ { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) }, /* glittery water Toyland */ { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) } }; #undef M /** Colour mapping for the TextColours. */ static const byte _string_colourmap[17] = { 150, // TC_BLUE 12, // TC_SILVER 189, // TC_GOLD 184, // TC_RED 174, // TC_PURPLE 30, // TC_LIGHT_BROWN 195, // TC_ORANGE 209, // TC_GREEN 68, // TC_YELLOW 95, // TC_DARK_GREEN 79, // TC_CREAM 116, // TC_BROWN 15, // TC_WHITE 152, // TC_LIGHT_BLUE 6, // TC_GREY 133, // TC_DARK_BLUE 1, // TC_BLACK }; openttd-1.3.3/src/table/townname.h0000644000000000000000000014155712246102566015571 0ustar rootroot/* $Id: townname.h 25984 2013-11-13 21:43:16Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file table/townname.h Namepart tables for the town name generator */ #include "../core/enum_type.hpp" static const char * const _name_original_english_1[] = { "Great ", "Little ", "New ", "Fort ", }; static const char * const _name_original_english_2[] = { "Wr", "B", "C", "Ch", "Br", "D", "Dr", "F", "Fr", "Fl", "G", "Gr", "H", "L", "M", "N", "P", "Pr", "Pl", "R", "S", "S", "Sl", "T", "Tr", "W", }; static const char * const _name_original_english_3[] = { "ar", "a", "e", "in", "on", "u", "un", "en", }; static const char * const _name_original_english_4[] = { "n", "ning", "ding", "d", "", "t", "fing", }; static const char * const _name_original_english_5[] = { "ville", "ham", "field", "ton", "town", "bridge", "bury", "wood", "ford", "hall", "ston", "way", "stone", "borough", "ley", "head", "bourne", "pool", "worth", "hill", "well", "hattan", "burg", }; static const char * const _name_original_english_6[] = { "-on-sea", " Bay", " Market", " Cross", " Bridge", " Falls", " City", " Ridge", " Springs", }; static const char * const _name_additional_english_prefix[] = { "Great ", "Little ", "New ", "Fort ", "St. ", "Old ", }; static const char * const _name_additional_english_1a[] = { "Pen", "Lough", "Stam", "Aber", "Acc", "Ex", "Ax", "Bre", "Cum", "Dun", "Fin", "Inver", "Kin", "Mon", "Nan", "Nant", "Pit", "Pol", "Pont", "Strath", "Tre", "Tilly", "Beck", "Canter", "Bath", "Liver", "Mal", "Ox", "Bletch", "Maccles", "Grim", "Wind", "Sher", "Gates", "Orp", "Brom", "Lewis", "Whit", "White", "Worm", "Tyne", "Avon", "Stan", }; static const char * const _name_additional_english_1b1[] = { "Wr", "B", "C", "Ch", "Br", "D", "Dr", "F", "Fr", "Fl", "G", "Gr", "H", "L", "M", "N", "P", "Pr", "Pl", "R", "S", "S", "Sl", "T", "Tr", "W", }; static const char * const _name_additional_english_1b2[] = { "ar", "a", "e", "in", "on", "u", "o", "ee", "es", "ea", "un", "en", }; static const char * const _name_additional_english_1b3a[] = { "n", "d", "", "t", "", "", }; static const char * const _name_additional_english_1b3b[] = { "ning", "ding", "fing", }; static const char * const _name_additional_english_2[] = { "ville", "ham", "field", "ton", "town", "borough", "bridge", "bury", "wood", "ditch", "ford", "hall", "dean", "leigh", "dore", "ston", "stow", "church", "wich", "low", "way", "stone", "minster", "ley", "head", "bourne", "pool", "worth", "hill", "well", "hattan", "burg", "berg", "burgh", "port", "stoke", "haven", "stable", "stock", "side", "brook", "don", "den", "down", "nor", "grove", "combe", "by", "say", "ney", "chester", "dale", "ness", "shaw", "thwaite", }; static const char * const _name_additional_english_3[] = { "-on-sea", " Bay", " Market", " Beeches", " Common", " Park", " Heath", " Marsh", " Green", " Castle", " End", " Rivers", " Cross", " Bridge", " Falls", " City", " Ridge", " Springs", }; static const char * const _name_austrian_a1[] = { "Bad ", "Deutsch ", "Gross ", "Klein ", "Markt ", "Maria ", }; static const char * const _name_austrian_a2[] = { "Aus", "Alten", "Braun", "V\xC3\xB6sl", "Mittern", "Nuss", "Neu", "Walters", "Breiten", "Eisen", "Feld", "Mittern", "Gall", "Obern", "Grat", "Heiligen", "Hof", "Holla", "Stein", "Eber", "Eggen", "Enzers", "Frauen", "Herren", "Hof", "H\xC3\xBCtt", "Kaisers", "K\xC3\xB6nigs", "Knittel", "Lang", "Ober", "Ollers", "Pfaffen", "Potten", "Salz", "Schwarz", "Stocker", "Unter", "Utten", "V\xC3\xB6sen", "Vill", "Weissen", }; static const char * const _name_austrian_a3[] = { "see", "bach", "dorf", "ach", "stein", "hofen", "au", "ach", "kirch", "kirchen", "kreuz", "brunn", "siedl", "markt", "wang", "haag", }; static const char * const _name_austrian_a4[] = { "Bruck", "Brunn", "Gams", "Grein", "Ried", "Faak", "Zell", "Spital", "Kirchberg", "Saal", "Taferl", "Wald", }; static const char * const _name_austrian_a5[] = { "St. ", "Sankt ", }; static const char * const _name_austrian_a6[] = { "Aegyd", "Andr\xC3\xA4", "Georgen", "Jakob", "Johann", "Leonhard", "Marein", "Lorenzen", "Margarethen", "Martin", "Michael", "Nikolai", "Oswald", "Peter", "P\xC3\xB6lten", "Stefan", "Stephan", "Thomas", "Veit", "Wolfgang", }; static const char * const _name_austrian_f1[] = { " an der ", " ob der ", }; static const char * const _name_austrian_f2[] = { "Donau", "Steyr", "Lafnitz", "Leitha", "Thaya", "Gail", "Drau", "Salzach", "Ybbs", "Traisen", "Enns", "Mur", "Ill", }; static const char * const _name_austrian_b1[] = { " am ", }; static const char * const _name_austrian_b2[] = { "Brenner", "Dachstein", "Gebirge", "Grossglockner", "Hausruck", "Semmering", "Wagram", "Wechsel", "Wilden Kaiser", "Ziller", }; static const char * const _name_german_real[] = { "Berlin", "Bonn", "Bremen", "Cottbus", "Chemnitz", "Dortmund", "Dresden", "Erfurt", "Erlangen", "Essen", "Fulda", "Gera", "Kassel", "Kiel", "K\xC3\xB6ln", "L\xC3\xBC""beck", "Magdeburg", "M\xC3\xBCnchen", "Potsdam", "Stuttgart", "Wiesbaden", }; static const char * const _name_german_pre[] = { "Bad ", "Klein ", "Neu ", }; static const char * const _name_german_1[] = { "Alb", "Als", "Ander", "Arns", "Bruns", "Bam", "Biele", "Cloppen", "Co", "Duis", "D\xC3\xBCssel", "Dannen", "Elb", "Els", "Elster", "Eichen", "Ems", "Fahr", "Falken", "Flens", "Frank", "Frei", "Freuden", "Fried", "F\xC3\xBCrsten", "Hahn", "Ham", "Harz", "Heidel", "Hers", "Herz", "Holz", "Hildes", "Inns", "Ilsen", "Ingols", "Kel", "Kies", "Korn", "Kor", "Kreuz", "Kulm", "Langen", "Lim", "Lohr", "L\xC3\xBCne", "Mel", "Michels", "M\xC3\xBChl", "Naum", "Nest", "Nord", "Nort", "Nien", "Nidda", "Nieder", "N\xC3\xBCrn", "Ober", "Offen", "Osna", "Olden", "Ols", "Oranien", "Pader", "Quedlin", "Quer", "Ravens", "Regens", "Rott", "Ros", "R\xC3\xBCssels", "Saal", "Saar", "Salz", "Sch\xC3\xB6ne", "Schwein", "Sonder", "Sonnen", "Stein", "Strals", "Straus", "S\xC3\xBC""d", "Ton", "Unter", "Ur", "Vor", "Wald", "War", "Wert", "Wester", "Witten", "Wolfs", "W\xC3\xBCrz", }; static const char * const _name_german_2[] = { "bach", "berg", "br\xC3\xBC""ck", "br\xC3\xBC""cken", "burg", "dorf", "feld", "furt", "hausen", "haven", "heim", "horst", "mund", "m\xC3\xBCnster", "stadt", "wald", }; static const char * const _name_german_3_an_der[] = { " an der ", }; static const char * const _name_german_3_am[] = { " am ", }; static const char * const _name_german_4_an_der[] = { "Oder", "Spree", "Donau", "Saale", "Elbe", }; static const char * const _name_german_4_am[] = { "Main", }; static const char * const _name_spanish_real[] = { "Caracas", "Maracay", "Maracaibo", "Valencia", "El Dorado", "Morrocoy", "Cata", "Cataito", "Ciudad Bol\xC3\xADvar", "Barquisimeto", "M\xC3\xA9rida", "Puerto Ordaz", "Santa Elena", "San Juan", "San Luis", "San Rafael", "Santiago", "Barcelona", "Barinas", "San Crist\xC3\xB3""bal", "San Fransisco", "San Mart\xC3\xADn", "Guayana", "San Carlos", "El Lim\xC3\xB3n", "Coro", "Corocoro", "Puerto Ayacucho", "Elorza", "Arismendi", "Trujillo", "Carupano", "Anaco", "Lima", "Cuzco", "Iquitos", "Callao", "Huacho", "Camana", "Puerto Chala", "Santa Cruz", "Quito", "Cuenca", "Huacho", "Tulc\xC3\xA1n", "Esmeraldas", "Ibarra", "San Lorenzo", "Macas", "Morana", "Machala", "Zamora", "Latacunga", "Tena", "Cochabamba", "Ascensi\xC3\xB3n", "Magdalena", "Santa Ana", "Manoa", "Sucre", "Oruro", "Uyuni", "Potos\xC3\xAD", "Tupiza", "La Quiaca", "Yacuiba", "San Borja", "Fuerte Olimpio", "Fort\xC3\xADn Esteros", "Campo Grande", "Bogota", "El Banco", "Zaragoza", "Neiva", "Mariano", "Cali", "La Palma", "Andoas", "Barranca", "Montevideo", "Valdivia", "Arica", "Temuco", "Tocopilla", "Mendoza", "Santa Rosa", }; static const char * const _name_french_real[] = { "Agincourt", "Lille", "Dinan", "Aubusson", "Rodez", "Bergerac", "Bordeaux", "Bayonne", "Montpellier", "Mont\xC3\xA9limar", "Valence", "Digne", "Nice", "Cannes", "St. Tropez", "Marseille", "Narbonne", "S\xC3\xA8te", "Aurillac", "Gu\xC3\xA9ret", "Le Creusot", "Nevers", "Auxerre", "Versailles", "Meaux", "Ch\xC3\xA2lons", "Compi\xC3\xA8gne", "Metz", "Chaumont", "Langres", "Bourg", "Lyon", "Vienne", "Grenoble", "Toulon", "Rennes", "Le Mans", "Angers", "Nantes", "Ch\xC3\xA2teauroux", "Orl\xC3\xA9""ans", "Lisieux", "Cherbourg", "Morlaix", "Cognac", "Agen", "Tulle", "Blois", "Troyes", "Charolles", "Grenoble", "Chamb\xC3\xA9ry", "Tours", "St. Brieuc", "St. Malo", "La Rochelle", "St. Flour", "Le Puy", "Vichy", "St. Valery", "Beaujolais", "Narbonne", "Albi", "Paris", "Biarritz", "B\xC3\xA9ziers", "N\xC3\xAEmes", "Chamonix", "Angoul\xC3\xA8me", "Alen\xC3\xA7on", }; static const char * const _name_silly_1[] = { "Binky", "Blubber", "Bumble", "Crinkle", "Crusty", "Dangle", "Dribble", "Flippety", "Google", "Muffin", "Nosey", "Pinker", "Quack", "Rumble", "Sleepy", "Sliggles", "Snooze", "Teddy", "Tinkle", "Twister", "Pinker", "Hippo", "Itchy", "Jelly", "Jingle", "Jolly", "Kipper", "Lazy", "Frogs", "Mouse", "Quack", "Cheeky", "Lumpy", "Grumpy", "Mangle", "Fiddle", "Slugs", "Noodles", "Poodles", "Shiver", "Rumble", "Pixie", "Puddle", "Riddle", "Rattle", "Rickety", "Waffle", "Sagging", "Sausage", "Egg", "Sleepy", "Scatter", "Scramble", "Silly", "Simple", "Trickle", "Slippery", "Slimey", "Slumber", "Soggy", "Sliggles", "Splutter", "Sulky", "Swindle", "Swivel", "Tasty", "Tangle", "Toggle", "Trotting", "Tumble", "Snooze", "Water", "Windy", "Amble", "Bubble", "Cheery", "Cheese", "Cockle", "Cracker", "Crumple", "Teddy", "Evil", "Fairy", "Falling", "Fishy", "Fizzle", "Frosty", "Griddle", }; static const char * const _name_silly_2[] = { "ton", "bury", "bottom", "ville", "well", "weed", "worth", "wig", "wick", "wood", "pool", "head", "burg", "gate", "bridge", }; static const char * const _name_swedish_1[] = { "Gamla ", "Lilla ", "Nya ", "Stora ", }; static const char * const _name_swedish_2[] = { "Boll", "Bor", "Ed", "En", "Erik", "Es", "Fin", "Fisk", "Gr\xC3\xB6n", "Hag", "Halm", "Karl", "Kram", "Kung", "Land", "Lid", "Lin", "Mal", "Malm", "Marie", "Ner", "Norr", "Oskar", "Sand", "Skog", "Stock", "Stor", "Str\xC3\xB6m", "Sund", "S\xC3\xB6""der", "Tall", "Tratt", "Troll", "Upp", "Var", "V\xC3\xA4ster", "\xC3\x84ngel", "\xC3\x96ster", }; static const char * const _name_swedish_2a[] = { "B", "Br", "D", "Dr", "Dv", "F", "Fj", "Fl", "Fr", "G", "Gl", "Gn", "Gr", "H", "J", "K", "Kl", "Kn", "Kr", "Kv", "L", "M", "N", "P", "Pl", "Pr", "R", "S", "Sk", "Skr", "Sl", "Sn", "Sp", "Spr", "St", "Str", "Sv", "T", "Tr", "Tv", "V", "Vr", }; static const char * const _name_swedish_2b[] = { "a", "e", "i", "o", "u", "y", "\xC3\xA5", "\xC3\xA4", "\xC3\xB6", }; static const char * const _name_swedish_2c[] = { "ck", "d", "dd", "g", "gg", "l", "ld", "m", "n", "nd", "ng", "nn", "p", "pp", "r", "rd", "rk", "rp", "rr", "rt", "s", "sk", "st", "t", "tt", "v", }; static const char * const _name_swedish_3[] = { "arp", "berg", "boda", "borg", "bro", "bukten", "by", "byn", "fors", "hammar", "hamn", "holm", "hus", "h\xC3\xA4ttan", "kulle", "k\xC3\xB6ping", "lund", "l\xC3\xB6v", "sala", "skrona", "sl\xC3\xA4tt", "sp\xC3\xA5ng", "stad", "sund", "svall", "svik", "s\xC3\xA5ker", "udde", "valla", "viken", "\xC3\xA4lv", "\xC3\xA5s", }; static const char * const _name_dutch_1[] = { "Nieuw ", "Oud ", "Groot ", "Zuid ", "Noord ", "Oost ", "West ", "Klein ", }; static const char * const _name_dutch_2[] = { "Hoog", "Laag", "Zuider", "Zuid", "Ooster", "Oost", "Wester", "West", "Hoofd", "Midden", "Eind", "Amster", "Amstel", "Dord", "Rotter", "Haar", "Til", "Enk", "Dok", "Veen", "Leidsch", "Lely", "En", "Kaats", "U", "Maas", "Mar", "Bla", "Al", "Alk", "Eer", "Drie", "Ter", "Groes", "Goes", "Soest", "Coe", "Uit", "Zwaag", "Hellen", "Slie", "IJ", "Grubben", "Groen", "Lek", "Ridder", "Schie", "Olde", "Roose", "Haar", "Til", "Loos", "Hil", }; static const char * const _name_dutch_3[] = { "Drog", "Nat", "Valk", "Bob", "Dedem", "Kollum", "Best", "Hoend", "Leeuw", "Graaf", "Uithuis", "Purm", "Hard", "Hell", "Werk", "Spijk", "Vink", "Wams", "Heerhug", "Koning", }; static const char * const _name_dutch_4[] = { "e", "er", "el", "en", "o", "s", }; static const char * const _name_dutch_5[] = { "stad", "vorst", "dorp", "dam", "beek", "doorn", "zijl", "zijlen", "lo", "muiden", "meden", "vliet", "nisse", "daal", "vorden", "vaart", "mond", "zaal", "water", "duinen", "heuvel", "geest", "kerk", "meer", "maar", "hoorn", "rade", "wijk", "berg", "heim", "sum", "richt", "burg", "recht", "drecht", "trecht", "tricht", "dricht", "lum", "rum", "halen", "oever", "wolde", "veen", "hoven", "gast", "kum", "hage", "dijk", "zwaag", "pomp", "huizen", "bergen", "schede", "mere", "end", }; static const char * const _name_finnish_real[] = { "Aijala", "Kisko", "Espoo", "Helsinki", "Tapiola", "J\xC3\xA4rvel\xC3\xA4", "Lahti", "Kotka", "Hamina", "Loviisa", "Kouvola", "Tampere", "Oulu", "Salo", "Malmi", "Pelto", "Koski", "Iisalmi", "Raisio", "Taavetti", "Joensuu", "Imatra", "Tapanila", "Pasila", "Turku", "Kupittaa", "Vaasa", "Pori", "Rauma", "Kolari", "Lieksa", }; static const char * const _name_finnish_1[] = { "Hiekka", "Haapa", "Mylly", "Sauna", "Uusi", "Vanha", "Kes\xC3\xA4", "Kuusi", "Pelto", "Tuomi", "Terva", "Olki", "Hein\xC3\xA4", "Sein\xC3\xA4", "Rova", "Koivu", "Kokko", "M\xC3\xA4nty", "Pihlaja", "Pet\xC3\xA4j\xC3\xA4", "Kielo", "Kauha", "Viita", "Kivi", "Riihi", "\xC3\x84\xC3\xA4ne", "Niini", }; static const char * const _name_finnish_2[] = { "Lappeen", "Lohjan", "Savon", "Lapin", "Pit\xC3\xA4j\xC3\xA4n", "Martin", "Kuusan", "Kemi", "Keri", "H\xC3\xA4meen", "Kangas", }; static const char * const _name_finnish_3[] = { "harju", "linna", "j\xC3\xA4rvi", "kallio", "m\xC3\xA4ki", "nummi", "joki", "kyl\xC3\xA4", "lampi", "lahti", "mets\xC3\xA4", "suo", "laakso", "niitty", "luoto", "hovi", "ranta", "koski", "salo", }; static const char * const _name_polish_1_m[] = { "Wielki ", "Ma\xC5\x82y ", "Z\xC5\x82y ", "Dobry ", "Nowy ", "Stary ", "Z\xC5\x82oty ", "Zielony ", "Bia\xC5\x82y ", "Modry ", "D\xC4\x99""bowy ", }; static const char * const _name_polish_1_f[] = { "Wielka ", "Ma\xC5\x82""a ", "Z\xC5\x82""a ", "Dobra ", "Nowa ", "Stara ", "Z\xC5\x82ota ", "Zielona ", "Bia\xC5\x82""a ", "Modra ", "D\xC4\x99""bowa ", }; static const char * const _name_polish_1_n[] = { "Wielkie ", "Ma\xC5\x82""e ", "Z\xC5\x82""e ", "Dobre ", "Nowe ", "Stare ", "Z\xC5\x82ote ", "Zielone ", "Bia\xC5\x82""e ", "Modre ", "D\xC4\x99""bowe ", }; static const char * const _name_polish_2_o[] = { "Frombork", "Gniezno", "Olsztyn", "Toru\xC5\x84", "Bydgoszcz", "Terespol", "Krak\xC3\xB3w", "Pozna\xC5\x84", "Wroc\xC5\x82""aw", "Katowice", "Cieszyn", "Bytom", "Frombork", "Hel", "Konin", "Lublin", "Malbork", "Sopot", "Sosnowiec", "Gda\xC5\x84sk", "Gdynia", "Sieradz", "Sandomierz", "Szczyrk", "Szczytno", "Szczecin", "Zakopane", "Szklarska Por\xC4\x99""ba", "Bochnia", "Golub-Dobrzyn", "Chojnice", "Ostrowiec", "Otwock", "Wolsztyn", }; static const char * const _name_polish_2_m[] = { "Jarocin", "Gogolin", "Tomasz\xC3\xB3w", "Piotrk\xC3\xB3w", "Lidzbark", "Rypin", "Radzymin", "Wo\xC5\x82omin", "Pruszk\xC3\xB3w", "Olsztynek", "Rypin", "Cisek", "Krotoszyn", "Stoczek", "Lubin", "Lubicz", "Milicz", "Targ", "Ostr\xC3\xB3w", "Ozimek", "Puck", "Rzepin", "Siewierz", "Stargard", "Starogard", "Turek", "Tymbark", "Wolsztyn", "Strzepcz", "Strzebielin", "Sochaczew", "Gr\xC4\x99""bocin", "Gniew", "Lubliniec", "Lubasz", "Lutomiersk", "Niemodlin", "Przeworsk", "Ursus", "Tyczyn", "Sztum", "Szczebrzeszyn", "Wolin", "Wrzeszcz", "Zgierz", "Zieleniec", "Drobin", "Garwolin", }; static const char * const _name_polish_2_f[] = { "Szprotawa", "Pogorzelica", "Mot\xC5\x82""awa", "Lubawa", "Nidzica", "Kruszwica", "Bierawa", "Brodnica", "Chojna", "Krzepica", "Ruda", "Rumia", "Tuchola", "Trzebinia", "Ustka", "Warszawa", "Bobowa", "Dukla", "Krynica", "Murowana", "Niemcza", "Zaspa", "Zawoja", "Wola", "Limanowa", "Rabka", "Skawina", "Pilawa", }; static const char * const _name_polish_2_n[] = { "Lipsko", "Pilzno", "Przodkowo", "Strzelno", "Susz", "Jaworzno", "Choszczno", "Mogilno", "Luzino", "Miasto", "Dziadowo", "Kowalewo", "Legionowo", "Miastko", "Zabrze", "Zawiercie", "Kochanowo", "Miechucino", "Mirachowo", "Robakowo", "Kosakowo", "Borne", "Braniewo", "Sulinowo", "Chmielno", "Jastrz\xC4\x99""bie", "Gryfino", "Koronowo", "Lubichowo", "Opoczno", }; static const char * const _name_polish_3_m[] = { " Wybudowanie", " \xC5\x9Awi\xC4\x99tokrzyski", " G\xC3\xB3rski", " Morski", " Zdr\xC3\xB3j", " Wody", " Bajoro", " Kraje\xC5\x84ski", " \xC5\x9Al\xC4\x85ski", " Mazowiecki", " Pomorski", " Wielki", " Maly", " Warmi\xC5\x84ski", " Mazurski", " Mniejszy", " Wi\xC4\x99kszy", " G\xC3\xB3rny", " Dolny", " Wielki", " Stary", " Nowy", " Wielkopolski", " Wzg\xC3\xB3rze", " Mosty", " Kujawski", " Ma\xC5\x82opolski", " Podlaski", " Lesny", }; static const char * const _name_polish_3_f[] = { " Wybudowanie", " \xC5\x9Awi\xC4\x99tokrzyska", " G\xC3\xB3rska", " Morska", " Zdr\xC3\xB3j", " Woda", " Bajoro", " Kraje\xC5\x84ska", " \xC5\x9Al\xC4\x85ska", " Mazowiecka", " Pomorska", " Wielka", " Ma\xC5\x82""a", " Warmi\xC5\x84ska", " Mazurska", " Mniejsza", " Wi\xC4\x99ksza", " G\xC3\xB3rna", " Dolna", " Wielka", " Stara", " Nowa", " Wielkopolska", " Wzg\xC3\xB3rza", " Mosty", " Kujawska", " Malopolska", " Podlaska", " Le\xC5\x9Bna", }; static const char * const _name_polish_3_n[] = { " Wybudowanie", " \xC5\x9Awietokrzyskie", " G\xC3\xB3rskie", " Morskie", " Zdr\xC3\xB3j", " Wody", " Bajoro", " Kraje\xC5\x84skie", " \xC5\x9Al\xC4\x85skie", " Mazowieckie", " Pomorskie", " Wielkie", " Ma\xC5\x82""e", " Warmi\xC5\x84skie ", " Mazurskie ", " Mniejsze", " Wi\xC4\x99ksze", " G\xC3\xB3rne", " Dolne", " Wielkie", " Stare", " Nowe", " Wielkopolskie", " Wzg\xC3\xB3rze", " Mosty", " Kujawskie", " Ma\xC5\x82opolskie", " Podlaskie", " Le\xC5\x9Bne", }; static const char * const _name_czech_real[] = { "A\xC5\xA1", "Bene\xC5\xA1ov", "Beroun", "Bezdru\xC5\xBEice", "Blansko", "B\xC5\x99""eclav", "Brno", "Brunt\xC3\xA1l", "\xC4\x8C""esk\xC3\xA1 L\xC3\xADpa", "\xC4\x8C""esk\xC3\xA9 Bud\xC4\x9Bjovice", "\xC4\x8C""esk\xC3\xBD Krumlov", "D\xC4\x9B\xC4\x8D\xC3\xADn", "Doma\xC5\xBElice", "Dub\xC3\xAD", "Fr\xC3\xBD""dek-M\xC3\xADstek", "Havl\xC3\xAD\xC4\x8Dk\xC5\xAFv Brod", "Hodon\xC3\xADn", "Hradec Kr\xC3\xA1lov\xC3\xA9", "Humpolec", "Cheb", "Chomutov", "Chrudim", "Jablonec nad Nisou", "Jesen\xC3\xADk", "Ji\xC4\x8D\xC3\xADn", "Jihlava", "Jind\xC5\x99ich\xC5\xAFv Hradec", "Karlovy Vary", "Karvin\xC3\xA1", "Kladno", "Klatovy", "Kol\xC3\xADn", "Kosmonosy", "Krom\xC4\x9B\xC5\x99\xC3\xAD\xC5\xBE", "Kutn\xC3\xA1 Hora", "Liberec", "Litom\xC4\x9B\xC5\x99ice", "Louny", "Man\xC4\x9Bt\xC3\xADn", "M\xC4\x9Bln\xC3\xADk", "Mlad\xC3\xA1 Boleslav", "Most", "N\xC3\xA1""chod", "Nov\xC3\xBD Ji\xC4\x8D\xC3\xADn", "Nymburk", "Olomouc", "Opava", "Or\xC3\xA1\xC4\x8Dov", "Ostrava", "Pardubice", "Pelh\xC5\x99imov", "Pol\xC5\xBEice", "P\xC3\xADsek", "Plze\xC5\x88", "Praha", "Prachatice", "P\xC5\x99""erov", "P\xC5\x99\xC3\xAD""bram", "Prost\xC4\x9Bjov", "Rakovn\xC3\xADk", "Rokycany", "Rudn\xC3\xA1", "Rychnov nad Kn\xC4\x9B\xC5\xBEnou", "Semily", "Sokolov", "Strakonice", "St\xC5\x99""edokluky", "\xC5\xA0umperk", "Svitavy", "T\xC3\xA1""bor", "Tachov", "Teplice", "T\xC5\x99""eb\xC3\xAD\xC4\x8D", "Trutnov", "Uhersk\xC3\xA9 Hradi\xC5\xA1t\xC4\x9B", "\xC3\x9Ast\xC3\xAD nad Labem", "\xC3\x9Ast\xC3\xAD nad Orlic\xC3\xAD", "Vset\xC3\xADn", "Vy\xC5\xA1kov", "\xC5\xBD\xC4\x8F\xC3\xA1r nad S\xC3\xA1zavou", "Zl\xC3\xADn", "Znojmo", }; /* The advanced hyperintelligent Czech town names generator! * The tables and MakeCzechTownName() is (c) Petr Baudis 2005 (GPL'd) * Feel free to ask me about anything unclear or if you need help * with cloning this for your own language. */ /* Sing., pl. */ enum CzechGender { CZG_SMASC, CZG_SFEM, CZG_SNEUT, CZG_PMASC, CZG_PFEM, CZG_PNEUT, /* Special for substantive stems - the ending chooses the gender. */ CZG_FREE, /* Like CZG_FREE, but disallow CZG_SNEUT. */ CZG_NFREE }; enum CzechPattern { CZP_JARNI, CZP_MLADY, CZP_PRIVL }; /* [CzechGender][CzechPattern] - replaces the last character of the adjective * by this. * XXX: [CZG_SMASC][CZP_PRIVL] needs special handling: -ovX -> -uv. */ static const char * const _name_czech_patmod[][3] = { /* CZG_SMASC */ { "\xC3\xAD", "\xC3\xBD", "X" }, /* CZG_SFEM */ { "\xC3\xAD", "\xC3\xA1", "a" }, /* CZG_SNEUT */ { "\xC3\xAD", "\xC3\xA9", "o" }, /* CZG_PMASC */ { "\xC3\xAD", "\xC3\xA9", "y" }, /* CZG_PFEM */ { "\xC3\xAD", "\xC3\xA9", "y" }, /* CZG_PNEUT */ { "\xC3\xAD", "\xC3\xA1", "a" } }; /* This way the substantive can choose only some adjectives/endings: * At least one of these flags must be satisfied: */ enum CzechAllow { CZA_SHORT = 1, CZA_MIDDLE = 2, CZA_LONG = 4, CZA_ALL = ~0 }; DECLARE_ENUM_AS_BIT_SET(CzechAllow) /* All these flags must be satisfied (in the stem->others direction): */ enum CzechChoose { CZC_NONE = 0, // No requirements. CZC_COLOR = 1, CZC_POSTFIX = 2, // Matched if postfix was inserted. CZC_NOPOSTFIX = 4, // Matched if no postfix was inserted. CZC_ANY = ~0 }; DECLARE_ENUM_AS_BIT_SET(CzechChoose) struct CzechNameSubst { CzechGender gender; CzechAllow allow; CzechChoose choose; const char *name; }; struct CzechNameAdj { CzechPattern pattern; CzechChoose choose; const char *name; }; /* Some of items which should be common are doubled. */ static const CzechNameAdj _name_czech_adj[] = { { CZP_JARNI, CZC_ANY, "Horn\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Horn\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Doln\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Doln\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "P\xC5\x99""edn\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Zadn\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Kosteln\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Havran\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "\xC5\x98\xC3\xAD\xC4\x8Dn\xC3\xAD" }, { CZP_JARNI, CZC_ANY, "Jezern\xC3\xAD" }, { CZP_MLADY, CZC_ANY, "Velk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Velk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Mal\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Mal\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Vysok\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "\xC4\x8C""esk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Moravsk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Slov\xC3\xA1""ck\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Slezsk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Uhersk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Star\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Star\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Nov\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Nov\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Mlad\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Kr\xC3\xA1lovsk\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Kamenn\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Cihlov\xC3\xBD" }, { CZP_MLADY, CZC_ANY, "Divn\xC3\xBD" }, { CZP_MLADY, CZC_COLOR, "\xC4\x8C""erven\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "\xC4\x8C""erven\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "\xC4\x8C""erven\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "Zelen\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "\xC5\xBDlut\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "Siv\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "\xC5\xA0""ed\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "B\xC3\xADl\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "B\xC3\xADl\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "Modr\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "R\xC5\xAF\xC5\xBEov\xC3\xA1" }, { CZP_MLADY, CZC_COLOR, "\xC4\x8C""ern\xC3\xA1" }, { CZP_PRIVL, CZC_ANY, "Kr\xC3\xA1lova" }, { CZP_PRIVL, CZC_ANY, "Janova" }, { CZP_PRIVL, CZC_ANY, "Karlova" }, { CZP_PRIVL, CZC_ANY, "Kry\xC5\xA1tofova" }, { CZP_PRIVL, CZC_ANY, "Ji\xC5\x99\xC3\xADkova" }, { CZP_PRIVL, CZC_ANY, "Petrova" }, { CZP_PRIVL, CZC_ANY, "Sudovo" }, }; /* Considered a stem for choose/allow matching purposes. */ static const CzechNameSubst _name_czech_subst_full[] = { { CZG_SMASC, CZA_ALL, CZC_COLOR, "Sedlec" }, { CZG_SMASC, CZA_ALL, CZC_COLOR, "Brod" }, { CZG_SMASC, CZA_ALL, CZC_COLOR, "Brod" }, { CZG_SMASC, CZA_ALL, CZC_NONE, "\xC3\x9Aval" }, { CZG_SMASC, CZA_ALL, CZC_COLOR, "\xC5\xBD\xC4\x8F\xC3\xA1r" }, { CZG_SMASC, CZA_ALL, CZC_COLOR, "Smrk" }, { CZG_SFEM, CZA_ALL, CZC_COLOR, "Hora" }, { CZG_SFEM, CZA_ALL, CZC_COLOR, "Lhota" }, { CZG_SFEM, CZA_ALL, CZC_COLOR, "Lhota" }, { CZG_SFEM, CZA_ALL, CZC_COLOR, "Hlava" }, { CZG_SFEM, CZA_ALL, CZC_COLOR, "L\xC3\xADpa" }, { CZG_SNEUT, CZA_ALL, CZC_COLOR, "Pole" }, { CZG_SNEUT, CZA_ALL, CZC_COLOR, "\xC3\x9A""dol\xC3\xAD" }, { CZG_PMASC, CZA_ALL, CZC_NONE, "\xC3\x9Avaly" }, { CZG_PFEM, CZA_ALL, CZC_COLOR, "Luka" }, { CZG_PNEUT, CZA_ALL, CZC_COLOR, "Pole" }, }; /* TODO: More stems needed. --pasky */ static const CzechNameSubst _name_czech_subst_stem[] = { { CZG_SMASC, CZA_MIDDLE, CZC_COLOR, "Kostel" }, { CZG_SMASC, CZA_MIDDLE, CZC_COLOR, "Kl\xC3\xA1\xC5\xA1ter" }, { CZG_SMASC, CZA_SHORT, CZC_COLOR, "Lhot" }, { CZG_SFEM, CZA_SHORT, CZC_COLOR, "Lhot" }, { CZG_SFEM, CZA_SHORT, CZC_COLOR, "Hur" }, { CZG_FREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Sedl" }, { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_COLOR, "Hrad" }, { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Pras" }, { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Ba\xC5\xBE" }, { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Tes" }, { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "U\xC5\xBE" }, { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_POSTFIX, "B\xC5\x99" }, { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Vod" }, { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Jan" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Prach" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Kunr" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Strak" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "V\xC3\xADt" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Vy\xC5\xA1" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "\xC5\xBD""at" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "\xC5\xBD""er" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "St\xC5\x99""ed" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Harv" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Pruh" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Tach" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "P\xC3\xADsn" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Jin" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Jes" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Jar" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Sok" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Hod" }, { CZG_NFREE, CZA_LONG, CZC_NONE, "Net" }, { CZG_FREE, CZA_LONG, CZC_NONE, "Pra\xC5\xBE" }, { CZG_FREE, CZA_LONG, CZC_NONE, "Nerat" }, { CZG_FREE, CZA_LONG, CZC_NONE, "Kral" }, { CZG_FREE, CZA_LONG, CZC_NONE, "Hut" }, { CZG_FREE, CZA_LONG, CZC_NOPOSTFIX, "Pan" }, { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_NOPOSTFIX, "Odst\xC5\x99""ed" }, { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_COLOR, "Mrat" }, { CZG_FREE, CZA_LONG, CZC_COLOR, "Hlav" }, { CZG_FREE, CZA_SHORT | CZA_MIDDLE, CZC_NONE, "M\xC4\x9B\xC5\x99" }, { CZG_FREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Lip" }, }; /* Optional postfix inserted between stem and ending. */ static const char * const _name_czech_subst_postfix[] = { "av", "an", "at", "ov", "on", "ot", "ev", "en", "et", }; /* This array must have the both neutral genders at the end! */ static const CzechNameSubst _name_czech_subst_ending[] = { { CZG_SMASC, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "ec" }, { CZG_SMASC, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "\xC3\xADn" }, { CZG_SMASC, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ov" }, { CZG_SMASC, CZA_SHORT | CZA_LONG, CZC_ANY, "kov" }, { CZG_SMASC, CZA_LONG, CZC_POSTFIX, "\xC3\xADn" }, { CZG_SMASC, CZA_LONG, CZC_POSTFIX, "n\xC3\xADk" }, { CZG_SMASC, CZA_LONG, CZC_ANY, "burk" }, { CZG_SFEM, CZA_SHORT, CZC_ANY, "ka" }, { CZG_SFEM, CZA_MIDDLE, CZC_ANY, "inka" }, { CZG_SFEM, CZA_MIDDLE, CZC_ANY, "n\xC3\xA1" }, { CZG_SFEM, CZA_LONG, CZC_ANY, "ava" }, { CZG_PMASC, CZA_LONG, CZC_POSTFIX, "\xC3\xADky" }, { CZG_PMASC, CZA_LONG, CZC_ANY, "upy" }, { CZG_PMASC, CZA_LONG, CZC_ANY, "olupy" }, { CZG_PFEM, CZA_LONG, CZC_ANY, "avy" }, { CZG_PFEM, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ice" }, { CZG_PFEM, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "i\xC4\x8Dky" }, { CZG_PNEUT, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "na" }, { CZG_SNEUT, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "no" }, { CZG_SNEUT, CZA_LONG, CZC_ANY, "i\xC5\xA1t\xC4\x9B" }, }; static const char * const _name_czech_suffix[] = { "nad Cidlinou", "nad Dyj\xC3\xAD", "nad Jihlavou", "nad Labem", "nad Lesy", "nad Moravou", "nad Nisou", "nad Odrou", "nad Ostravic\xC3\xAD", "nad S\xC3\xA1zavou", "nad Vltavou", "pod Prad\xC4\x9B""dem", "pod Radho\xC5\xA1t\xC4\x9Bm", "pod \xC5\x98\xC3\xADpem", "pod Sn\xC4\x9B\xC5\xBEkou", "pod \xC5\xA0pi\xC4\x8D\xC3\xA1kem", "pod Sedlem", "v \xC4\x8C""ech\xC3\xA1""ch", "na Morav\xC4\x9B", }; static const char * const _name_romanian_real[] = { "Adjud", "Alba Iulia", "Alexandria", "Babadag", "Bac\xC3\xA3u", "Baia Mare", "B\xC3\xA3ile Herculane", "B\xC3\xA3ilesti", "B\xC3\xA2rlad", "Bicaz", "Bistrita", "Blaj", "Borsec", "Botosani", "Br\xC3\xA3ila", "Brasov", "Bucuresti", "Buftea", "Buz\xC3\xA3u", "C\xC3\xA3l\xC3\xA3rasi", "Caransebes", "Cernavod\xC3\xA3", "Cluj-Napoca", "Constanta", "Covasna", "Craiova", "Dej", "Deva", "Dorohoi", "Dr.-Tr. Severin", "Dr\xC3\xA3g\xC3\xA3sani", "F\xC3\xA3g\xC3\xA3ras", "F\xC3\xA3lticeni", "Fetesti", "Focsani", "Galati", "Gheorgheni", "Giurgiu", "H\xC3\xA2rsova", "Hunedoara", "Husi", "Iasi", "Isaccea", "Lugoj", "M\xC3\xA3""cin", "Mangalia", "Medgidia", "Medias", "Miercurea Ciuc", "Mizil", "Motru", "N\xC3\xA3s\xC3\xA3ud", "N\xC3\xA3vodari", "Odobesti", "Oltenita", "Onesti", "Oradea", "Orsova", "Petrosani", "Piatra Neamt", "Pitesti", "Ploiesti", "Predeal", "R\xC3\xA2mnicu V\xC3\xA2lcea", "Reghin", "Resita", "Roman", "Rosiorii de Vede", "Satu Mare", "Sebes", "Sf\xC3\xA2ntu Gheorghe", "Sibiu", "Sighisoara", "Sinaia", "Slatina", "Slobozia", "Sovata", "Suceava", "Sulina", "T\xC3\xA3nd\xC3\xA3rei", "T\xC3\xA2rgoviste", "T\xC3\xA2rgu Jiu", "T\xC3\xA2rgu Mures", "Tecuci", "Timisoara", "Tulcea", "Turda", "Turnu M\xC3\xA3gurele", "Urziceni", "Vaslui", "Vatra Dornei", "Victoria", "Videle", "Zal\xC3\xA3u", }; static const char * const _name_slovak_real[] = { "Bratislava", "Banovce nad Bebravou", "Banska Bystrica", "Banska Stiavnica", "Bardejov", "Brezno", "Brezova pod Bradlom", "Bytca", "Cadca", "Cierna nad Tisou", "Detva", "Detva", "Dolny Kubin", "Dolny Kubin", "Dunajska Streda", "Gabcikovo", "Galanta", "Gbely", "Gelnica", "Handlova", "Hlohovec", "Holic", "Humenne", "Hurbanovo", "Kezmarok", "Komarno", "Kosice", "Kremnica", "Krompachy", "Kuty", "Leopoldov", "Levoca", "Liptovsky Mikulas", "Lucenec", "Malacky", "Martin", "Medzilaborce", "Michalovce", "Modra", "Myjava", "Namestovo", "Nitra", "Nova Bana", "Nove Mesto nad Vahom", "Nove Zamky", "Partizanske", "Pezinok", "Piestany", "Poltar", "Poprad", "Povazska Bystrica", "Prievidza", "Puchov", "Revuca", "Rimavska Sobota", "Roznava", "Ruzomberok", "Sabinov", "Sala", "Senec", "Senica", "Sered", "Skalica", "Sladkovicovo", "Smolenice", "Snina", "Stara Lubovna", "Stara Tura", "Strazske", "Stropkov", "Stupava", "Sturovo", "Sulekovo", "Topolcany", "Trebisov", "Trencin", "Trnava", "Turcianske Teplice", "Tvrdosin", "Vrable", "Vranov nad Toplou", "Zahorska Bystrica", "Zdiar", "Ziar nad Hronom", "Zilina", "Zlate Moravce", "Zvolen", }; static const char * const _name_norwegian_1[] = { "Arna", "Aust", "Bj\xC3\xB8rk", "Bj\xC3\xB8rn", "Brand", "B\xC3\xB8ver", "Drag", "Dr\xC3\xB8", "Eids", "Egge", "Fager", "Finns", "Flat", "Foll", "Foss", "Fugle", "Furu", "Gaus", "Galte", "Geir", "Gl\xC3\xB8s", "Gran", "Grind", "Grims", "Gr\xC3\xB8n", "Gr\xC3\xB8t", "Gulle", "Haka", "Hammer", "Haug", "Hol", "Hon", "Hop", "Hov", "Jess", "Kabel", "Kjerns", "Kjerring", "Knatte", "Krok", "K\xC3\xB8y", "Lang", "Lauv", "Leir", "Lund", "Logn", "Lo", "Lyng", "L\xC3\xB8n", "Mesna", "Mel", "Mo", "Nar", "Nitte", "Nord", "Odd", "Ola", "Otte", "Ran", "Rev", "Rog", "Roms", "Rosen", "Sand", "Sau", "Sel", "Sol", "Sjur", "Sk\xC3\xA5r", "Sl\xC3\xA5tt", "Stj\xC3\xB8r", "Stor", "Svart", "Svens", "Svin", "Sylte", "Syn", "Tran", "Vass", "Ved", "Vest", "Vesle", "Vik", "V\xC3\xA5g", }; static const char * const _name_norwegian_2[] = { "aker", "anger", "bakken", "bekk", "berg", "botn", "breen", "bu", "bugen", "by", "bygd", "b\xC3\xB8", "dal", "egga", "eid", "elv", "enga", "foss", "fjell", "fjord", "foten", "gard", "grend", "hammer", "haug", "havn", "heim", "hella", "hovda", "h\xC3\xB8""a", "h\xC3\xB8gda", "kampen", "kj\xC3\xB8len", "kollen", "kroken", "land", "lia", "mark", "moen", "myr", "nes", "nuten", "osen", "rike", "rud", "sand", "set", "sj\xC3\xB8""en", "skogen", "slette", "snipa", "stad", "stua", "stulen", "sund", "svingen", "s\xC3\xA6tra", "tinden", "tun", "vang", "vatn", "veid", "vik", "voll", "v\xC3\xA5g", "um", "\xC3\xA5sen", }; static const char * const _name_norwegian_real[] = { "Alta", "Arendal", "Askim", "Bergen", "Bod\xC3\xB8", "Brevik", "Bryne", "Br\xC3\xB8nn\xC3\xB8ysund", "Drammen", "Dr\xC3\xB8""bak", "Egersund", "Elverum", "Farsund", "Fauske", "Finnsnes", "Flekkefjord", "Flora", "Fosnav\xC3\xA5g", "Fredrikstad", "F\xC3\xB8rde", "Gj\xC3\xB8vik", "Grimstad", "Halden", "Hamar", "Hammerfest", "Harstad", "Haugesund", "Holmestrand", "Horten", "J\xC3\xB8rpeland", "Kirkenes", "Kolvereid", "Kongsberg", "Kongsvinger", "Kopervik", "Krager\xC3\xB8", "Kristiansand", "Kristiansund", "Langesund", "Larvik", "Leirvik", "Leknes", "Levanger", "Lillehammer", "Lillesand", "Lillestr\xC3\xB8m", "Lyngdal", "L\xC3\xB8renskog", "Mandal", "Mo i Rana", "Molde", "Mosj\xC3\xB8""en", "Moss", "Mysen", "M\xC3\xA5l\xC3\xB8y", "Namsos", "Narvik", "Notodden", "Odda", "Oslo", "Otta", "Porsgrunn", "Ringerike", "Ris\xC3\xB8r", "Rjukan", "Sandefjord", "Sandnes", "Sandnessj\xC3\xB8""en", "Sandvika", "Sarpsborg", "Sauda", "Ski", "Skien", "Skudeneshavn", "Sortland", "Stathelle", "Stavanger", "Steinkjer", "Stj\xC3\xB8rdal", "Stokmarknes", "Stord", "Svelvik", "Svolv\xC3\xA6r", "Troms\xC3\xB8", "Trondheim", "Tvedestrand", "T\xC3\xB8nsberg", "Ulsteinvik", "Vads\xC3\xB8", "Vard\xC3\xB8", "Verdals\xC3\xB8ra", "\xC3\x85krehamn", "\xC3\x85lesund", "\xC3\x85ndalsnes", }; static const char * const _name_hungarian_1[] = { "Nagy-", "Kis-", "Fels\xC5\x91-", "Als\xC3\xB3-", "\xC3\x9Aj-", }; static const char * const _name_hungarian_2[] = { "Bodrog", "Dr\xC3\xA1va", "Duna", "Hej\xC5\x91", "Hern\xC3\xA1""d", "R\xC3\xA1""ba", "Saj\xC3\xB3", "Szamos", "Tisza", "Zala", "Balaton", "Fert\xC5\x91", "Bakony", "Cserh\xC3\xA1t", "Bihar", "Hajd\xC3\xBA", "J\xC3\xA1sz", "Kun", "Magyar", "N\xC3\xB3gr\xC3\xA1""d", "Ny\xC3\xADr", "Somogy", "Sz\xC3\xA9kely", "Buda", "Gy\xC5\x91r", "Pest", "Feh\xC3\xA9r", "Cser\xC3\xA9p", "Erd\xC5\x91", "Hegy", "Homok", "Mez\xC5\x91", "Puszta", "S\xC3\xA1r", "Cs\xC3\xA1sz\xC3\xA1r", "Herceg", "Kir\xC3\xA1ly", "Nemes", "P\xC3\xBCsp\xC3\xB6k", "Szent", "Alm\xC3\xA1s", "Szilv\xC3\xA1s", "Agg", "Aranyos", "B\xC3\xA9k\xC3\xA9s", "Egyh\xC3\xA1zas", "Gagy", "Heves", "Kapos", "T\xC3\xA1pi\xC3\xB3", "Torna", "Vas", "V\xC3\xA1mos", "V\xC3\xA1s\xC3\xA1ros", }; static const char * const _name_hungarian_3[] = { "ap\xC3\xA1ti", "b\xC3\xA1""ba", "bikk", "dob", "fa", "f\xC3\xB6ld", "hegyes", "kak", "kereszt", "k\xC3\xBCrt", "lad\xC3\xA1ny", "m\xC3\xA9rges", "szalonta", "telek", "vas", "v\xC3\xB6lgy", }; static const char * const _name_hungarian_4[] = { "alja", "egyh\xC3\xA1za", "h\xC3\xA1za", "\xC3\xBAr", "v\xC3\xA1r", }; static const char * const _name_hungarian_real[] = { "Ajka", "Asz\xC3\xB3""d", "Badacsony", "Baja", "Budapest", "Debrecen", "Eger", "Fony\xC3\xB3""d", "G\xC3\xB6""d\xC3\xB6ll\xC5\x91", "Gy\xC5\x91r", "Gyula", "Karcag", "Kecskem\xC3\xA9t", "Keszthely", "Kisk\xC3\xB6re", "Kocsord", "Kom\xC3\xA1rom", "K\xC5\x91szeg", "Mak\xC3\xB3", "Moh\xC3\xA1""cs", "Miskolc", "\xC3\x93zd", "Paks", "P\xC3\xA1pa", "P\xC3\xA9""cs", "Polg\xC3\xA1r", "Sarkad", "Si\xC3\xB3""fok", "Szeged", "Szentes", "Szolnok", "Tihany", "Tokaj", "V\xC3\xA1""c", "Z\xC3\xA1hony", "Zirc", }; static const char * const _name_swiss_real[] = { "Aarau", "Aesch", "Altdorf", "Arosa", "Appenzell", "Arbon", "Altst\xC3\xA4tten", "Baar", "Baden", "Bellinzona", "Brig-Glis", "Bienne", "Bulle", "Binningen", "Burgdorf", "Bern", "Basel", "B\xC3\xBClach", "Carouge", "Cham", "Chiasso", "Chur", "Davos", "Del\xC3\xA9mont", "Dietikon", "D\xC3\xBC""bendorf", "Emmen", "Freienbach-Pf\xC3\xA4""ffikon", "Fribourg", "Frauenfeld", "Gen\xC3\xA8ve", "Glarus", "Gossau", "Grenchen", "Herisau", "Horgen", "Horw", "Illnau-Effretikon", "Ittigen", "Jona", "Kriens", "Kloten", "K\xC3\xB6niz", "Kreuzlingen", "K\xC3\xBCsnacht", "Agen", "Lancy", "La Chaux-de-Fonds", "Lenzburg", "Lugano", "Langenthal", "Littau", "Le Locle", "La Neuveville", "Locarno", "Liestal", "La Tour-de-Peilz", "Lausanne", "Lyss", "Luzern", "Martigny", "M\xC3\xBCnchenstein", "Meyrin", "Montreux", "Monthey", "Morges", "Murten", "Moutier", "Muttenz", "Neuch\xC3\xA2tel", "Neuhausen am Rheinfall", "Nyon", "Olten", "Onex", "Opfikon", "Ostermundigen", "Payerne", "Peseux", "Prilly", "Pully", "Rapperswil", "Richterswil", "Regensdorf", "Rheinfelden", "Riehen", "Renens", "Romanshorn", "Rorschach", "Stans", "Schaffhausen", "Steffisburg", "St. Gallen", "Schlieren", "Sierre", "Solothurn", "St. Moritz", "Sion", "Spiez", "St\xC3\xA4""fa", "Sursee", "Schwyz", "Thalwil", "Thônex", "Thun", "Uster", "Uzwil", "Vernier", "Volketswil", "Versoix", "Vevey", "W\xC3\xA4""denswil", "Wettingen", "Wil", "Wallisellen", "Winterthur", "Wohlen", "Worb", "Wetzikon", "Yverdon-les-Bains", "Zollikon", "Zofingen", "Z\xC3\xBCrich", "Zug", }; static const char * const _name_danish_1[] = { "Gamle ", "Lille ", "Nye ", "Store ", "Kirke ", "N\xC3\xB8rre ", "Vester ", "S\xC3\xB8nder ", "\xC3\x98ster ", "Hvide ", "H\xC3\xB8je ", "Kongens ", }; static const char * const _name_danish_2[] = { "Ager", "Alle", "Aske", "Balle", "Bede", "Birke", "Bjerring", "Bj\xC3\xA6ver", "Blommens", "Blok", "Bolder", "Bred", "Charlotten", "Christians", "Danne", "Diana", "Es", "Fredens", "Frederiks", "Fugle", "F\xC3\xA5re", "Gille", "Gis", "Givs", "Glams", "Glo", "Guld", "Had", "Haralds", "Hassel", "Hede", "Helle", "Hessel", "Hjorts", "Hol", "Horn", "Humle", "H\xC3\xB8j", "H\xC3\xB8r", "Is", "Jyde", "J\xC3\xA6gers", "Karls", "Klov", "Kokke", "Kvist", "Lang", "Lange", "Mari", "Nord", "Ny", "Oks", "Ring", "R\xC3\xB8""de", "Rung", "R\xC3\xB8r", "Rud", "Saks", "Salt", "Skam", "Silke", "Skod", "Sk\xC3\xA6l", "Sk\xC3\xA6r", "Sol", "Svend", "Svine", "Strand", "Stubbe", "Ting", "Tj\xC3\xA6re", "Tore", "Uger", "Ulf", "Val", "Vand", "Vej", "Vor", "V\xC3\xA6r", "\xC3\x98r", "\xC3\x85l", }; static const char * const _name_danish_3[] = { "basse", "borg", "berg", "bro", "by", "havn", "strup", "holm", "hus", "k\xC3\xB8""bing", "lund", "lunde", "sund", "ovre", "h\xC3\xB8j", "dal", "sted", "sten", "l\xC3\xB8se", "r\xC3\xB8""d", "magle", "s\xC3\xB8", "bjerg", "b\xC3\xA6k", "drup", "lev", "bo", "lyst", "feld", "skov", }; static const char * const _name_turkish_prefix[] = { "Ak\xC3\xA7""a", "Alt\xC4\xB1n", "Bah\xC3\xA7""e", "Boz", "B\xC3\xBCy\xC3\xBCk", "\xC3\x87""ay", "Do\xC4\x9Fu", "Eski", "G\xC3\xBCzel", "K\xC4\xB1z\xC4\xB1l", "K\xC3\xBC\xC3\xA7\xC3\xBCk", "Orta", "Sar\xC4\xB1", "Sultan", "Ulu", "Yeni", }; static const char * const _name_turkish_middle[] = { "aga\xC3\xA7", "ayva", "\xC3\xA7""am", "elma", "kurt", "pazar", "yal\xC4\xB1", }; static const char * const _name_turkish_suffix[] = { "dere", "hisar", "kale", "kaya", "kent", "k\xC3\xB6y", "ova", "\xC3\xB6z\xC3\xBC", "\xC3\xB6ren", "pazar", "saray", "tepe", "yer", "yurt", }; static const char * const _name_turkish_real[] = { "Adana", "Ad\xC4\xB1yaman", "Afyon", "A\xC4\x9Fr\xC4\xB1", "Amasya", "Antalya", "Artvin", "Bal\xC4\xB1kesir", "Bilecik", "Bitlis", "Bolu", "Burdur", "Bursa", "\xC3\x87""anakkale", "\xC3\x87""ank\xC4\xB1r\xC4\xB1", "Denizli", "Diyarbak\xC4\xB1r", "Edirne", "Elaz\xC4\xB1\xC4\x9F", "Erzurum", "Eskisehir", "Giresun", "G\xC3\xBCm\xC3\xBC\xC5\x9Fhane", "Hatay", "Isparta", "\xC4\xB0\xC3\xA7""el", "\xC4\xB0stanbul", "\xC4\xB0zmir", "Kars", "Kastamonu", "Kayseri", "Kirklareli", "Kocaeli", "Konya", "K\xC3\xBCtahya", "Malatya", "Manisa", "Kahramanmara\xC5\x9F", "Mardin", "Mu\xC4\x9Fla", "Mu\xC5\x9F", "Nev\xC5\x9F""ehir", "Ni\xC4\x9F""de", "Rize", "Sakarya", "Samsun", "Siirt", "Sinop", "Sivas", "Trabzon", "\xC5\x9E""anl\xC4\xB1urfa", "Van", "Yozgat", "Zonguldak", "Aksaray", "Bayburt", "Karaman", "\xC5\x9E\xC4\xB1rnak", "Bart\xC4\xB1n", "Ardahan", "I\xC4\x9F""d\xC4\xB1r", "Yalova", "Karab\xC3\xBCk", "Osmaniye", "D\xC3\xBCzce", }; static const char * const _name_italian_real[] = { "Roma", "Milano", "Napoli", "Torino", "Venezia", "Firenze", "Palermo", "Genova", "Parma", "Bologna", "Bari", "Cagliari", "Sassari", "Pisa", "Aosta", "Brescia", "Verona", "Bolzano", "Padova", "Udine", "Trieste", "Livorno", "Ancona", "Perugia", "Pescara", "L'Aquila", "Campobasso", "Potenza", "Cosenza", "Reggio Calabria", "Catania", "Caltanisetta", "Agrigento", "La Spezia", "Modena", "Vicenza", "Mantova", "Cremona", "Piacenza", "Reggio Emilia", "Foggia", "Benevento", "Salerno", "Catanzaro", "Lecce", "Como", "Lecco", "Sondrio", "Trento", "Desenzano", "Cuneo", "Asti", "Lodi", "Novara", "Biella", "Vercelli", "Rieti", "Nuoro", "Oristano", "Matera", "Taranto", "Varese", "Bergamo", "Pavia", "Caserta", "Frosinone", "Latina", "Enna", "Ragusa", "Siracusa", "Pordenone", "Imperia", "Verbania", "Alessandria", "Messina", "Siena", "Arezzo", "Grosseto", }; static const char * const _name_italian_pref[] = { "Alpe ", "Borgo ", "Cascina ", "Castel ", "Fonte ", "Forte ", "Malga ", "Pieve ", "Poggio ", "Rocca ", "Villa ", "Villar ", }; static const char * const _name_italian_1m[] = { "Bel", "Borgo", "Bosco", "Campo", "Capo", "Casal", "Castel", "Colle", "Fiume", "Fonte", "Lago", "Mezzo", "Monte", "Mon", "Orto", "Passo", "Prato", "Poggio", "Ponte", "Pozzo", "Sasso", "Tra", "Tre", "Ver", "Vico", }; static const char * const _name_italian_1f[] = { "Acqua", "Bra", "Cala", "Casa", "Chiesa", "Citta", "Civita", "Corte", "Costa", "Croce", "Fontana", "Grotta", "Guardia", "Mezza", "Palma", "Pietra", "Ripa", "Rocca", "Serra", "Torre", "Val", "Valle", "Villa", }; static const char * const _name_italian_2[] = { "bell", "bianc", "cald", "chiar", "cort", "ferrat", "fier", "fredd", "gioios", "grec", "guzz", "lung", "long", "migli", "negr", "ner", "nov", "nuov", "ross", "rotond", "scur", "secc", "sett", "vecchi", "ventos", "vers", "viv", }; static const char * const _name_italian_2i[] = { "", "breve", "brevi", "chiari", "ferro", "fieschi", "fiore", "fonte", "forte", "gate", "leone", "maggiore", "minore", "mole", "monte", "poli", "scuri", "terra", "te", "torrione", "vento", "verde", "versiere", }; static const char * const _name_italian_3[] = { " Marittimo", " Marittima", " del Capo", " del Monte", " di Sopra", " di Sotto", " sui Monti", " dei Marmi", " dei Sassi", " delle Fonti", " sui Prati", " a Mare", " Superiore", " Inferiore", " Terme", " Alta", " Bassa", " Brianza", " Vesuviano", " Scrivia", " Ticino", }; static const char * const _name_italian_river1[] = { " del", " sul", " al", " nel", }; static const char * const _name_italian_river2[] = { "l'Adda", "l'Adige", "le Alpi", "l'Arno", " Bormida", " Brenta", "la Dora Baltea", " Lambro", " Mincio", " Naviglio", "l'Oglio", "l'Olona", "l'Ombrone", " Panaro", " Piave", " Po", " Reno", " Scrivia", " Secchia", " Serio", " Tagliamento", " Tanaro", " Taro", " Ticino", " Tevere", }; static const char * const _name_catalan_real[] = { "Barcelona", "L'Hospitalet de Llobregat", "Cerdanyola", "Martorell", "Badalona", "Tarragona", "Lleida", "Girona", "Sabadell", "Terrassa", "Reus", "Valls", "Vic", "Vielha e Mijaran", "Amposta", "Tortosa", "Berga", "Olot", "Mollerussa", "Banyoles", "Figueres", "Balaguer", "Vilafranca del Pened\xC3\xA8s", "La Seu d'Urgell", "El Pont de Suert", "Igualada", "Manresa", "Solsona", "Les Borges Blanques", "Tremp", "Sort", "Colera", "Portbou", "El Vendrell", "Falset", "Ripoll", "Cervera", "Gandesa", "Matar\xC3\xB3", "Montblanc", "Vilanova i la Geltr\xC3\xBA", "T\xC3\xA0rrega", "Camprodon", "Campdev\xC3\xA0nol", "Cambrils", "Begur", "Setcases", "Palafrugell", "Begues", "El Bruc", "Cadaqu\xC3\xA9s", "Collbat\xC3\xB3", "Cervell\xC3\xB3", "Esparreguera", "Abrera", "Alp", "Das", "Cercs", "Manlleu", "El Masnou", "Molins de Rei", "Monistrol", "Rocallaura", "Rub\xC3\xAD", "Ripollet", "Sitges", "Roses", }; static const char * const _name_catalan_pref[] = { "El Pont de ", "Parets de ", "Canet de ", "Castellar de ", "Corbera de ", "Arenys de ", "Calella de ", "La Seu de ", "La Bisbal de ", "Torroella de ", "Port de ", "Vilafranca de ", "Vilanova de ", "Caldes de ", "La Conca de ", "Olesa de ", "La Roca de ", "Sant Esteve de ", "Sant Andreu de ", "Sant Jordi de ", "Sant Joan de ", "Sant Feliu de ", "Sant Quirze de ", "Sant Sadurn\xC3\xAD de ", "Santa Coloma de ", "Santa Margarida de ", "Santa Maria de ", "Sant Mart\xC3\xAD de ", "Sant Pere de ", "Sant Juli\xC3\xA0 de ", "Sant Vicen\xC3\xA7 de ", }; static const char * const _name_catalan_1m[] = { "Torrent", "Cami", "Mont", "Bell", "Puig", "Riu", }; static const char * const _name_catalan_1f[] = { "Pala", "Selva", "Vall", "Serra", "Torre", "Riba", "Cova", "Terra", }; static const char * const _name_catalan_2m[] = { "alt", "baix", "fosc", "pelat", "vent\xC3\xB3s", "negre", "roig", "gr\xC3\xADs", }; static const char * const _name_catalan_2f[] = { "baixa", "alta", "fosca", "clara", "negra", "roja", "grisa", "freda", }; static const char * const _name_catalan_3[] = { " Desp\xC3\xAD", " Desvern", " del Cam\xC3\xAD", " de Mar", " de Dalt", " de Baix", " del Vall\xC3\xA8s", " de Bergued\xC3\xA0", " de Conflent", " de la Plana", }; static const char * const _name_catalan_river1[] = { " d'Anoia", " de Ter", " de Llobregat", " d'Ebre", " de Segre", " de Francol\xC3\xAD", }; openttd-1.3.3/src/table/object_land.h0000644000000000000000000001365212246102566016177 0ustar rootroot/* $Id: object_land.h 25988 2013-11-13 21:56:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_land.h Sprites to use and how to display them for object tiles. */ #define TILE_SEQ_LINE(sz, img) { 0, 0, 0, 16, 16, sz, {img, PAL_NONE} }, #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} } static const DrawTileSeqStruct _object_nothing[] = { TILE_SEQ_END() }; static const DrawTileSeqStruct _object_transmitter_seq[] = { { 7, 7, 0, 2, 2, 70, {SPR_TRANSMITTER, PAL_NONE}}, TILE_SEQ_END() }; static const DrawTileSeqStruct _object_lighthouse_seq[] = { { 4, 4, 0, 7, 7, 61, {SPR_LIGHTHOUSE, PAL_NONE}}, TILE_SEQ_END() }; static const DrawTileSeqStruct _object_statue_seq[] = { { 0, 0, 0, 16, 16, 25, {SPR_STATUE_COMPANY | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}}, TILE_SEQ_END() }; static const DrawTileSeqStruct _object_owned_land_seq[] = { { 8, 8, 0, 1, 1, 6, {SPR_BOUGHT_LAND | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}}, TILE_SEQ_END() }; extern const DrawTileSprites _objects[] = { { { SPR_FLAT_2_THIRD_GRASS_TILE, PAL_NONE }, _object_transmitter_seq }, { { SPR_FLAT_2_THIRD_GRASS_TILE, PAL_NONE }, _object_lighthouse_seq }, { { SPR_CONCRETE_GROUND, PAL_NONE }, _object_statue_seq }, { { SPR_FLAT_BARE_LAND, PAL_NONE }, _object_owned_land_seq }, }; static const DrawTileSeqStruct _object_hq_medium_north[] = { TILE_SEQ_LINE(20, SPR_MEDIUMHQ_NORTH_WALL | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_medium_east[] = { TILE_SEQ_LINE(20, SPR_MEDIUMHQ_EAST_WALL | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_medium_west[] = { TILE_SEQ_LINE(20, SPR_MEDIUMHQ_WEST_WALL | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_large_north[] = { TILE_SEQ_LINE(50, SPR_LARGEHQ_NORTH_BUILD | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_large_east[] = { TILE_SEQ_LINE(50, SPR_LARGEHQ_EAST_BUILD | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_large_west[] = { TILE_SEQ_LINE(50, SPR_LARGEHQ_WEST_BUILD | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_huge_north[] = { TILE_SEQ_LINE(60, SPR_HUGEHQ_NORTH_BUILD | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_huge_east[] = { TILE_SEQ_LINE(60, SPR_HUGEHQ_EAST_BUILD | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _object_hq_huge_west[] = { TILE_SEQ_LINE(60, SPR_HUGEHQ_WEST_BUILD | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; #undef TILE_SEQ_LINE #undef TILE_SEQ_END #define TILE_SPRITE_LINE(img, dtss) { {img | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}, dtss }, static const DrawTileSprites _object_hq[] = { TILE_SPRITE_LINE(SPR_TINYHQ_NORTH, _object_nothing) TILE_SPRITE_LINE(SPR_TINYHQ_WEST, _object_nothing) TILE_SPRITE_LINE(SPR_TINYHQ_EAST, _object_nothing) TILE_SPRITE_LINE(SPR_TINYHQ_SOUTH, _object_nothing) TILE_SPRITE_LINE(SPR_SMALLHQ_NORTH, _object_nothing) TILE_SPRITE_LINE(SPR_SMALLHQ_WEST, _object_nothing) TILE_SPRITE_LINE(SPR_SMALLHQ_EAST, _object_nothing) TILE_SPRITE_LINE(SPR_SMALLHQ_SOUTH, _object_nothing) TILE_SPRITE_LINE(SPR_MEDIUMHQ_NORTH, _object_hq_medium_north) TILE_SPRITE_LINE(SPR_MEDIUMHQ_WEST, _object_hq_medium_west) TILE_SPRITE_LINE(SPR_MEDIUMHQ_EAST, _object_hq_medium_east) TILE_SPRITE_LINE(SPR_MEDIUMHQ_SOUTH, _object_nothing) TILE_SPRITE_LINE(SPR_LARGEHQ_NORTH_GROUND, _object_hq_large_north) TILE_SPRITE_LINE(SPR_LARGEHQ_WEST_GROUND, _object_hq_large_west) TILE_SPRITE_LINE(SPR_LARGEHQ_EAST_GROUND, _object_hq_large_east) TILE_SPRITE_LINE(SPR_LARGEHQ_SOUTH, _object_nothing) TILE_SPRITE_LINE(SPR_HUGEHQ_NORTH_GROUND, _object_hq_huge_north) TILE_SPRITE_LINE(SPR_HUGEHQ_WEST_GROUND, _object_hq_huge_west) TILE_SPRITE_LINE(SPR_HUGEHQ_EAST_GROUND, _object_hq_huge_east) TILE_SPRITE_LINE(SPR_HUGEHQ_SOUTH, _object_nothing) }; #undef TILE_SPRITE_LINE #define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, 0xF, size, build_cost_multiplier, clear_cost_multiplier, 0, 0, flags, {0, 0, 0, 0}, 0, height, 1, true } /** Specification of the original object structures. */ extern const ObjectSpec _original_objects[] = { M(STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER, 0x11, 0, 0, 10, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT), M(STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE, 0x11, 0, 0, 8, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_SCENEDIT), M(STR_TOWN_BUILDING_NAME_STATUE_1, 0x11, 0, 0, 5, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_ONLY_IN_SCENEDIT), // Yes, we disallow building this everywhere. Happens in "special" case! M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND, 0x11, 10, 10, 0, OBJECT_FLAG_AUTOREMOVE | OBJECT_FLAG_ONLY_IN_GAME | OBJECT_FLAG_CLEAR_INCOME | OBJECT_FLAG_HAS_NO_FOUNDATION ), // Only non-silly use case is to use it when you cannot build a station, so disallow bridges M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS, 0x22, 0, 0, 7, OBJECT_FLAG_CANNOT_REMOVE | OBJECT_FLAG_ONLY_IN_GAME), }; #undef M openttd-1.3.3/src/table/railtypes.h0000644000000000000000000001740112246102566015743 0ustar rootroot/* $Id: railtypes.h 24368 2012-07-02 15:55:13Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file railtypes.h * All the railtype-specific information is stored here. */ #ifndef RAILTYPES_H #define RAILTYPES_H /** * Global Railtype definition */ static const RailtypeInfo _original_railtypes[] = { /** Railway */ { // Main Sprites { SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_Y, SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST, SPR_TRACKS_FOR_SLOPES_RAIL_BASE, SPR_CROSSING_OFF_X_RAIL, SPR_TUNNEL_ENTRY_REAR_RAIL }, /* GUI sprites */ { 0x4E3, 0x4E4, 0x4E5, 0x4E6, SPR_IMG_AUTORAIL, SPR_IMG_DEPOT_RAIL, SPR_IMG_TUNNEL_RAIL, SPR_IMG_CONVERT_RAIL, {} }, { SPR_CURSOR_NS_TRACK, SPR_CURSOR_SWNE_TRACK, SPR_CURSOR_EW_TRACK, SPR_CURSOR_NWSE_TRACK, SPR_CURSOR_AUTORAIL, SPR_CURSOR_RAIL_DEPOT, SPR_CURSOR_TUNNEL_RAIL, SPR_CURSOR_CONVERT_RAIL }, /* strings */ { STR_RAIL_NAME_RAILROAD, STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION, STR_RAIL_MENU_RAILROAD_CONSTRUCTION, STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION, STR_REPLACE_RAIL_VEHICLES, STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE, }, /* Offset of snow tiles */ SPR_RAIL_SNOW_OFFSET, /* Powered railtypes */ RAILTYPES_RAIL | RAILTYPES_ELECTRIC, /* Compatible railtypes */ RAILTYPES_RAIL | RAILTYPES_ELECTRIC, /* bridge offset */ 0, /* fallback_railtype */ 0, /* curve speed advantage (multiplier) */ 0, /* flags */ RTFB_NONE, /* cost multiplier */ 8, /* maintenance cost multiplier */ 8, /* acceleration type */ 0, /* max speed */ 0, /* rail type label */ 'RAIL', /* alternate labels */ RailTypeLabelList(), /* map colour */ 0x0A, /* introduction date */ INVALID_DATE, /* railtypes required for this to be introduced */ RAILTYPES_NONE, /* introduction rail types */ RAILTYPES_RAIL, /* sort order */ 0 << 4 | 7, { NULL }, { NULL }, }, /** Electrified railway */ { // Main Sprites { SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_Y, SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST, SPR_TRACKS_FOR_SLOPES_RAIL_BASE, SPR_CROSSING_OFF_X_RAIL, SPR_TUNNEL_ENTRY_REAR_RAIL }, /* GUI sprites */ { SPR_BUILD_NS_ELRAIL, SPR_BUILD_X_ELRAIL, SPR_BUILD_EW_ELRAIL, SPR_BUILD_Y_ELRAIL, SPR_IMG_AUTOELRAIL, SPR_IMG_DEPOT_ELRAIL, SPR_BUILD_TUNNEL_ELRAIL, SPR_IMG_CONVERT_ELRAIL, {} }, { SPR_CURSOR_NS_ELRAIL, SPR_CURSOR_SWNE_ELRAIL, SPR_CURSOR_EW_ELRAIL, SPR_CURSOR_NWSE_ELRAIL, SPR_CURSOR_AUTOELRAIL, SPR_CURSOR_ELRAIL_DEPOT, SPR_CURSOR_TUNNEL_ELRAIL, SPR_CURSOR_CONVERT_ELRAIL }, /* strings */ { STR_RAIL_NAME_ELRAIL, STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION, STR_RAIL_MENU_ELRAIL_CONSTRUCTION, STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION, STR_REPLACE_ELRAIL_VEHICLES, STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE, }, /* Offset of snow tiles */ SPR_RAIL_SNOW_OFFSET, /* Powered railtypes */ RAILTYPES_ELECTRIC, /* Compatible railtypes */ RAILTYPES_ELECTRIC | RAILTYPES_RAIL, /* bridge offset */ 0, /* fallback_railtype */ 0, /* curve speed advantage (multiplier) */ 0, /* flags */ RTFB_CATENARY, /* cost multiplier */ 12, /* maintenance cost multiplier */ 12, /* acceleration type */ 0, /* max speed */ 0, /* rail type label */ 'ELRL', /* alternate labels */ RailTypeLabelList(), /* map colour */ 0x0A, /* introduction date */ INVALID_DATE, /* railtypes required for this to be introduced */ RAILTYPES_NONE, /* introduction rail types */ RAILTYPES_ELECTRIC, /* sort order */ 1 << 4 | 7, { NULL }, { NULL }, }, /** Monorail */ { // Main Sprites { SPR_MONO_TRACK_Y, SPR_MONO_TRACK_N_S, SPR_MONO_TRACK_BASE, SPR_MONO_SINGLE_X, SPR_MONO_SINGLE_Y, SPR_MONO_SINGLE_NORTH, SPR_MONO_SINGLE_SOUTH, SPR_MONO_SINGLE_EAST, SPR_MONO_SINGLE_WEST, SPR_TRACKS_FOR_SLOPES_MONO_BASE, SPR_CROSSING_OFF_X_MONO, SPR_TUNNEL_ENTRY_REAR_MONO }, /* GUI sprites */ { 0x4E7, 0x4E8, 0x4E9, 0x4EA, SPR_IMG_AUTOMONO, SPR_IMG_DEPOT_MONO, SPR_IMG_TUNNEL_MONO, SPR_IMG_CONVERT_MONO, {} }, { SPR_CURSOR_NS_MONO, SPR_CURSOR_SWNE_MONO, SPR_CURSOR_EW_MONO, SPR_CURSOR_NWSE_MONO, SPR_CURSOR_AUTOMONO, SPR_CURSOR_MONO_DEPOT, SPR_CURSOR_TUNNEL_MONO, SPR_CURSOR_CONVERT_MONO }, /* strings */ { STR_RAIL_NAME_MONORAIL, STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION, STR_RAIL_MENU_MONORAIL_CONSTRUCTION, STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION, STR_REPLACE_MONORAIL_VEHICLES, STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE, }, /* Offset of snow tiles */ SPR_MONO_SNOW_OFFSET, /* Powered railtypes */ RAILTYPES_MONO, /* Compatible Railtypes */ RAILTYPES_MONO, /* bridge offset */ 16, /* fallback_railtype */ 1, /* curve speed advantage (multiplier) */ 1, /* flags */ RTFB_NONE, /* cost multiplier */ 16, /* maintenance cost multiplier */ 16, /* acceleration type */ 1, /* max speed */ 0, /* rail type label */ 'MONO', /* alternate labels */ RailTypeLabelList(), /* map colour */ 0x0A, /* introduction date */ INVALID_DATE, /* railtypes required for this to be introduced */ RAILTYPES_NONE, /* introduction rail types */ RAILTYPES_MONO, /* sort order */ 2 << 4 | 7, { NULL }, { NULL }, }, /** Maglev */ { // Main sprites { SPR_MGLV_TRACK_Y, SPR_MGLV_TRACK_N_S, SPR_MGLV_TRACK_BASE, SPR_MGLV_SINGLE_X, SPR_MGLV_SINGLE_Y, SPR_MGLV_SINGLE_NORTH, SPR_MGLV_SINGLE_SOUTH, SPR_MGLV_SINGLE_EAST, SPR_MGLV_SINGLE_WEST, SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE, SPR_CROSSING_OFF_X_MAGLEV, SPR_TUNNEL_ENTRY_REAR_MAGLEV }, /* GUI sprites */ { 0x4EB, 0x4EC, 0x4EE, 0x4ED, SPR_IMG_AUTOMAGLEV, SPR_IMG_DEPOT_MAGLEV, SPR_IMG_TUNNEL_MAGLEV, SPR_IMG_CONVERT_MAGLEV, {} }, { SPR_CURSOR_NS_MAGLEV, SPR_CURSOR_SWNE_MAGLEV, SPR_CURSOR_EW_MAGLEV, SPR_CURSOR_NWSE_MAGLEV, SPR_CURSOR_AUTOMAGLEV, SPR_CURSOR_MAGLEV_DEPOT, SPR_CURSOR_TUNNEL_MAGLEV, SPR_CURSOR_CONVERT_MAGLEV }, /* strings */ { STR_RAIL_NAME_MAGLEV, STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION, STR_RAIL_MENU_MAGLEV_CONSTRUCTION, STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION, STR_REPLACE_MAGLEV_VEHICLES, STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE, }, /* Offset of snow tiles */ SPR_MGLV_SNOW_OFFSET, /* Powered railtypes */ RAILTYPES_MAGLEV, /* Compatible Railtypes */ RAILTYPES_MAGLEV, /* bridge offset */ 24, /* fallback_railtype */ 2, /* curve speed advantage (multiplier) */ 2, /* flags */ RTFB_NONE, /* cost multiplier */ 24, /* maintenance cost multiplier */ 24, /* acceleration type */ 2, /* max speed */ 0, /* rail type label */ 'MGLV', /* alternate labels */ RailTypeLabelList(), /* map colour */ 0x0A, /* introduction date */ INVALID_DATE, /* railtypes required for this to be introduced */ RAILTYPES_NONE, /* introduction rail types */ RAILTYPES_MAGLEV, /* sort order */ 3 << 4 | 7, { NULL }, { NULL }, }, }; #endif /* RAILTYPES_H */ openttd-1.3.3/src/table/sprites.h0000644000000000000000000025260212246102566015424 0ustar rootroot/* $Id: sprites.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file sprites.h * This file contains all sprite-related enums and defines. These consist mainly of * the sprite numbers and a bunch of masks and macros to handle sprites and to get * rid of all the magic numbers in the code. * * @note * ALL SPRITE NUMBERS BELOW 5126 are in the main files * * All elements which consist of two elements should * have the same name and then suffixes * _GROUND and _BUILD for building-type sprites * _REAR and _FRONT for transport-type sprites (tiles where vehicles are on) * These sprites are split because of the Z order of the elements * (like some parts of a bridge are behind the vehicle, while others are before) * * * All sprites which are described here are referenced only one to a handful of times * throughout the code. When introducing new sprite enums, use meaningful names. * Don't be lazy and typing, and only use abbreviations when their meaning is clear or * the length of the enum would get out of hand. In that case EXPLAIN THE ABBREVATION * IN THIS FILE, and perhaps add some comments in the code where it is used. * Now, don't whine about this being too much typing work if the enums are like * 30 characters in length. If your editor doen't help you simplifying your work, * get a proper editor. If your Operating Systems don't have any decent editors, * get a proper Operating System. * * @todo Split the "Sprites" enum into smaller chunks and document them */ #ifndef SPRITES_H #define SPRITES_H #include "../gfx_type.h" static const SpriteID SPR_SELECT_TILE = 752; static const SpriteID SPR_DOT = 774; // corner marker for lower/raise land static const SpriteID SPR_DOT_SMALL = 4078; static const SpriteID SPR_WHITE_POINT = 4079; /* ASCII */ static const SpriteID SPR_ASCII_SPACE = 2; static const SpriteID SPR_ASCII_SPACE_SMALL = 226; static const SpriteID SPR_ASCII_SPACE_BIG = 450; static const SpriteID SPR_LARGE_SMALL_WINDOW = 682; /** Extra graphic spritenumbers */ static const SpriteID SPR_OPENTTD_BASE = 4896; static const uint16 OPENTTD_SPRITE_COUNT = 168; /* Halftile-selection sprites */ static const SpriteID SPR_HALFTILE_SELECTION_FLAT = SPR_OPENTTD_BASE; static const SpriteID SPR_HALFTILE_SELECTION_DOWN = SPR_OPENTTD_BASE + 4; static const SpriteID SPR_HALFTILE_SELECTION_UP = SPR_OPENTTD_BASE + 8; static const SpriteID SPR_SQUARE = SPR_OPENTTD_BASE + 38; // coloured square (used for newgrf compatibility) static const SpriteID SPR_BLOT = SPR_OPENTTD_BASE + 39; // coloured circle (used for server compatibility and installed content) static const SpriteID SPR_LOCK = SPR_OPENTTD_BASE + 40; // lock icon (for password protected servers) static const SpriteID SPR_BOX_EMPTY = SPR_OPENTTD_BASE + 41; static const SpriteID SPR_BOX_CHECKED = SPR_OPENTTD_BASE + 42; static const SpriteID SPR_WARNING_SIGN = SPR_OPENTTD_BASE + 43; // warning sign (shown if there are any newgrf errors) static const SpriteID SPR_WINDOW_RESIZE_RIGHT= SPR_OPENTTD_BASE + 44; // resize icon to the right static const SpriteID SPR_WINDOW_RESIZE_LEFT = SPR_OPENTTD_BASE + 149; // resize icon to the left static const SpriteID SPR_WINDOW_SHADE = SPR_OPENTTD_BASE + 151; // shade the window icon static const SpriteID SPR_WINDOW_UNSHADE = SPR_OPENTTD_BASE + 152; // unshade the window icon static const SpriteID SPR_WINDOW_DEBUG = SPR_OPENTTD_BASE + 153; // NewGRF debug window icon static const SpriteID SPR_IMG_PLAY_MUSIC_RTL = SPR_OPENTTD_BASE + 150; // play music button, but then for RTL users /* Arrow icons pointing in all 4 directions */ static const SpriteID SPR_ARROW_DOWN = SPR_OPENTTD_BASE + 45; static const SpriteID SPR_ARROW_UP = SPR_OPENTTD_BASE + 46; static const SpriteID SPR_ARROW_LEFT = SPR_OPENTTD_BASE + 47; static const SpriteID SPR_ARROW_RIGHT = SPR_OPENTTD_BASE + 48; static const SpriteID SPR_HOUSE_ICON = SPR_OPENTTD_BASE + 49; static const SpriteID SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 50; static const SpriteID SPR_PIN_UP = SPR_OPENTTD_BASE + 51; // pin icon static const SpriteID SPR_PIN_DOWN = SPR_OPENTTD_BASE + 52; static const SpriteID SPR_CIRCLE_FOLDED = SPR_OPENTTD_BASE + 147; // (+) icon static const SpriteID SPR_CIRCLE_UNFOLDED = SPR_OPENTTD_BASE + 148; // (-) icon /* on screen keyboard icons */ static const SpriteID SPR_OSK_LEFT = SPR_OPENTTD_BASE + 138; static const SpriteID SPR_OSK_RIGHT = SPR_OPENTTD_BASE + 139; static const SpriteID SPR_OSK_CAPS = SPR_OPENTTD_BASE + 140; static const SpriteID SPR_OSK_SHIFT = SPR_OPENTTD_BASE + 141; static const SpriteID SPR_OSK_BACKSPACE = SPR_OPENTTD_BASE + 142; static const SpriteID SPR_OSK_SPECIAL = SPR_OPENTTD_BASE + 143; /** Clone vehicles stuff */ static const SpriteID SPR_CLONE_TRAIN = SPR_OPENTTD_BASE + 106; static const SpriteID SPR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 107; static const SpriteID SPR_CLONE_SHIP = SPR_OPENTTD_BASE + 108; static const SpriteID SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 109; static const SpriteID SPR_SELL_TRAIN = SPR_OPENTTD_BASE + 93; static const SpriteID SPR_SELL_ROADVEH = SPR_OPENTTD_BASE + 94; static const SpriteID SPR_SELL_SHIP = SPR_OPENTTD_BASE + 95; static const SpriteID SPR_SELL_AIRCRAFT = SPR_OPENTTD_BASE + 96; static const SpriteID SPR_SELL_ALL_TRAIN = SPR_OPENTTD_BASE + 97; static const SpriteID SPR_SELL_ALL_ROADVEH = SPR_OPENTTD_BASE + 98; static const SpriteID SPR_SELL_ALL_SHIP = SPR_OPENTTD_BASE + 99; static const SpriteID SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 100; static const SpriteID SPR_REPLACE_TRAIN = SPR_OPENTTD_BASE + 101; static const SpriteID SPR_REPLACE_ROADVEH = SPR_OPENTTD_BASE + 102; static const SpriteID SPR_REPLACE_SHIP = SPR_OPENTTD_BASE + 103; static const SpriteID SPR_REPLACE_AIRCRAFT = SPR_OPENTTD_BASE + 104; static const SpriteID SPR_SELL_CHAIN_TRAIN = SPR_OPENTTD_BASE + 105; static const SpriteID SPR_PROFIT_NA = SPR_OPENTTD_BASE + 154; static const SpriteID SPR_PROFIT_NEGATIVE = SPR_OPENTTD_BASE + 155; static const SpriteID SPR_PROFIT_SOME = SPR_OPENTTD_BASE + 156; static const SpriteID SPR_PROFIT_LOT = SPR_OPENTTD_BASE + 157; static const SpriteID SPR_UNREAD_NEWS = SPR_OPENTTD_BASE + 158; static const SpriteID SPR_EXCLUSIVE_TRANSPORT = SPR_OPENTTD_BASE + 159; static const SpriteID SPR_GROUP_REPLACE_PROTECT = SPR_OPENTTD_BASE + 160; static const SpriteID SPR_GROUP_REPLACE_ACTIVE = SPR_OPENTTD_BASE + 161; static const SpriteID SPR_GROUP_CREATE_TRAIN = SPR_OPENTTD_BASE + 114; static const SpriteID SPR_GROUP_CREATE_ROADVEH = SPR_OPENTTD_BASE + 115; static const SpriteID SPR_GROUP_CREATE_SHIP = SPR_OPENTTD_BASE + 116; static const SpriteID SPR_GROUP_CREATE_AIRCRAFT = SPR_OPENTTD_BASE + 117; static const SpriteID SPR_GROUP_DELETE_TRAIN = SPR_OPENTTD_BASE + 118; static const SpriteID SPR_GROUP_DELETE_ROADVEH = SPR_OPENTTD_BASE + 119; static const SpriteID SPR_GROUP_DELETE_SHIP = SPR_OPENTTD_BASE + 120; static const SpriteID SPR_GROUP_DELETE_AIRCRAFT = SPR_OPENTTD_BASE + 121; static const SpriteID SPR_GROUP_RENAME_TRAIN = SPR_OPENTTD_BASE + 122; static const SpriteID SPR_GROUP_RENAME_ROADVEH = SPR_OPENTTD_BASE + 123; static const SpriteID SPR_GROUP_RENAME_SHIP = SPR_OPENTTD_BASE + 124; static const SpriteID SPR_GROUP_RENAME_AIRCRAFT = SPR_OPENTTD_BASE + 125; static const SpriteID SPR_GROUP_REPLACE_ON_TRAIN = SPR_OPENTTD_BASE + 126; static const SpriteID SPR_GROUP_REPLACE_ON_ROADVEH = SPR_OPENTTD_BASE + 127; static const SpriteID SPR_GROUP_REPLACE_ON_SHIP = SPR_OPENTTD_BASE + 128; static const SpriteID SPR_GROUP_REPLACE_ON_AIRCRAFT = SPR_OPENTTD_BASE + 129; static const SpriteID SPR_GROUP_REPLACE_OFF_TRAIN = SPR_OPENTTD_BASE + 130; static const SpriteID SPR_GROUP_REPLACE_OFF_ROADVEH = SPR_OPENTTD_BASE + 131; static const SpriteID SPR_GROUP_REPLACE_OFF_SHIP = SPR_OPENTTD_BASE + 132; static const SpriteID SPR_GROUP_REPLACE_OFF_AIRCRAFT = SPR_OPENTTD_BASE + 133; static const SpriteID SPR_TOWN_RATING_NA = SPR_OPENTTD_BASE + 162; static const SpriteID SPR_TOWN_RATING_APALLING = SPR_OPENTTD_BASE + 163; static const SpriteID SPR_TOWN_RATING_MEDIOCRE = SPR_OPENTTD_BASE + 164; static const SpriteID SPR_TOWN_RATING_GOOD = SPR_OPENTTD_BASE + 165; static const SpriteID SPR_IMG_SWITCH_TOOLBAR = SPR_OPENTTD_BASE + 144; static const SpriteID SPR_IMG_DELETE_LEFT = SPR_OPENTTD_BASE + 166; static const SpriteID SPR_IMG_DELETE_RIGHT = SPR_OPENTTD_BASE + 167; static const SpriteID SPR_SIGNALS_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITE_COUNT; static const uint16 PRESIGNAL_SPRITE_COUNT = 48; static const uint16 PRESIGNAL_AND_SEMAPHORE_SPRITE_COUNT = 112; static const uint16 PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT = 240; static const SpriteID SPR_CANALS_BASE = SPR_SIGNALS_BASE + PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT; static const uint16 CANALS_SPRITE_COUNT = 65; /** Sprites for the Aqueduct. */ static const SpriteID SPR_AQUEDUCT_BASE = SPR_CANALS_BASE + CANALS_SPRITE_COUNT; static const SpriteID SPR_AQUEDUCT_RAMP_SW = SPR_AQUEDUCT_BASE + 0; static const SpriteID SPR_AQUEDUCT_RAMP_SE = SPR_AQUEDUCT_BASE + 1; static const SpriteID SPR_AQUEDUCT_RAMP_NE = SPR_AQUEDUCT_BASE + 2; static const SpriteID SPR_AQUEDUCT_RAMP_NW = SPR_AQUEDUCT_BASE + 3; static const SpriteID SPR_AQUEDUCT_MIDDLE_X = SPR_AQUEDUCT_BASE + 4; static const SpriteID SPR_AQUEDUCT_MIDDLE_Y = SPR_AQUEDUCT_BASE + 5; static const SpriteID SPR_AQUEDUCT_PILLAR_X = SPR_AQUEDUCT_BASE + 6; static const SpriteID SPR_AQUEDUCT_PILLAR_Y = SPR_AQUEDUCT_BASE + 7; static const uint16 AQUEDUCT_SPRITE_COUNT = 8; /** Sprites for 'highlighting' tracks on sloped land. */ static const SpriteID SPR_TRACKS_FOR_SLOPES_BASE = SPR_AQUEDUCT_BASE + AQUEDUCT_SPRITE_COUNT; static const SpriteID SPR_TRACKS_FOR_SLOPES_RAIL_BASE = SPR_TRACKS_FOR_SLOPES_BASE + 0; static const SpriteID SPR_TRACKS_FOR_SLOPES_MONO_BASE = SPR_TRACKS_FOR_SLOPES_BASE + 4; static const SpriteID SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE = SPR_TRACKS_FOR_SLOPES_BASE + 8; static const uint16 TRACKS_FOR_SLOPES_SPRITE_COUNT = 12; static const SpriteID SPR_SLOPES_BASE = SPR_TRACKS_FOR_SLOPES_BASE + TRACKS_FOR_SLOPES_SPRITE_COUNT; static const SpriteID SPR_SLOPES_INCLINED_OFFSET = 15; static const SpriteID SPR_SLOPES_VIRTUAL_BASE = SPR_SLOPES_BASE - SPR_SLOPES_INCLINED_OFFSET; // The original foundations (see SPR_FOUNDATION_BASE below) are mapped before the additional foundations. static const SpriteID SPR_TRKFOUND_BLOCK_SIZE = 22; // The normal track foundation sprites are organized in blocks of 22. static const uint16 NORMAL_FOUNDATION_SPRITE_COUNT = 74; /** Halftile foundations */ static const SpriteID SPR_HALFTILE_FOUNDATION_BASE = SPR_SLOPES_BASE + NORMAL_FOUNDATION_SPRITE_COUNT; static const SpriteID SPR_HALFTILE_BLOCK_SIZE = 4; // The half tile foundation sprites are organized in blocks of 4. static const uint16 NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT = 90; static const SpriteID SPR_AUTORAIL_BASE = SPR_HALFTILE_FOUNDATION_BASE + NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT; static const uint16 AUTORAIL_SPRITE_COUNT = 55; static const SpriteID SPR_ELRAIL_BASE = SPR_AUTORAIL_BASE + AUTORAIL_SPRITE_COUNT; static const uint16 ELRAIL_SPRITE_COUNT = 48; static const SpriteID SPR_2CCMAP_BASE = SPR_ELRAIL_BASE + ELRAIL_SPRITE_COUNT; static const uint16 TWOCCMAP_SPRITE_COUNT = 256; /** shore tiles - action 05-0D */ static const SpriteID SPR_SHORE_BASE = SPR_2CCMAP_BASE + TWOCCMAP_SPRITE_COUNT; static const SpriteID SPR_SHORE_SPRITE_COUNT = 18; static const SpriteID SPR_ORIGINALSHORE_START = 4062; static const SpriteID SPR_ORIGINALSHORE_END = 4069; static const SpriteID SPR_AIRPORTX_BASE = SPR_SHORE_BASE + SPR_SHORE_SPRITE_COUNT; // The sprites used for other airport angles static const SpriteID SPR_NEWAIRPORT_TARMAC = SPR_AIRPORTX_BASE; static const SpriteID SPR_NSRUNWAY1 = SPR_AIRPORTX_BASE + 1; static const SpriteID SPR_NSRUNWAY2 = SPR_AIRPORTX_BASE + 2; static const SpriteID SPR_NSRUNWAY3 = SPR_AIRPORTX_BASE + 3; static const SpriteID SPR_NSRUNWAY4 = SPR_AIRPORTX_BASE + 4; static const SpriteID SPR_NSRUNWAY_END = SPR_AIRPORTX_BASE + 5; static const SpriteID SPR_NEWHANGAR_S = SPR_AIRPORTX_BASE + 6; static const SpriteID SPR_NEWHANGAR_S_WALL = SPR_AIRPORTX_BASE + 7; static const SpriteID SPR_NEWHANGAR_W = SPR_AIRPORTX_BASE + 8; static const SpriteID SPR_NEWHANGAR_W_WALL = SPR_AIRPORTX_BASE + 9; static const SpriteID SPR_NEWHANGAR_N = SPR_AIRPORTX_BASE + 10; static const SpriteID SPR_NEWHANGAR_E = SPR_AIRPORTX_BASE + 11; static const SpriteID SPR_NEWHELIPAD = SPR_AIRPORTX_BASE + 12; static const SpriteID SPR_GRASS_RIGHT = SPR_AIRPORTX_BASE + 13; static const SpriteID SPR_GRASS_LEFT = SPR_AIRPORTX_BASE + 14; static const uint16 AIRPORTX_SPRITE_COUNT = 15; /** Airport preview sprites */ static const SpriteID SPR_AIRPORT_PREVIEW_BASE = SPR_AIRPORTX_BASE + AIRPORTX_SPRITE_COUNT; static const SpriteID SPR_AIRPORT_PREVIEW_SMALL = SPR_AIRPORT_PREVIEW_BASE; static const SpriteID SPR_AIRPORT_PREVIEW_LARGE = SPR_AIRPORT_PREVIEW_BASE + 1; static const SpriteID SPR_AIRPORT_PREVIEW_HELIPORT = SPR_AIRPORT_PREVIEW_BASE + 2; static const SpriteID SPR_AIRPORT_PREVIEW_METROPOLITAN = SPR_AIRPORT_PREVIEW_BASE + 3; static const SpriteID SPR_AIRPORT_PREVIEW_INTERNATIONAL = SPR_AIRPORT_PREVIEW_BASE + 4; static const SpriteID SPR_AIRPORT_PREVIEW_COMMUTER = SPR_AIRPORT_PREVIEW_BASE + 5; static const SpriteID SPR_AIRPORT_PREVIEW_HELIDEPOT = SPR_AIRPORT_PREVIEW_BASE + 6; static const SpriteID SPR_AIRPORT_PREVIEW_INTERCONTINENTAL = SPR_AIRPORT_PREVIEW_BASE + 7; static const SpriteID SPR_AIRPORT_PREVIEW_HELISTATION = SPR_AIRPORT_PREVIEW_BASE + 8; static const SpriteID SPR_AIRPORT_PREVIEW_COUNT = 9; static const SpriteID SPR_ROADSTOP_BASE = SPR_AIRPORT_PREVIEW_BASE + SPR_AIRPORT_PREVIEW_COUNT; // The sprites used for drive-through road stops static const SpriteID SPR_BUS_STOP_DT_Y_W = SPR_ROADSTOP_BASE; static const SpriteID SPR_BUS_STOP_DT_Y_E = SPR_ROADSTOP_BASE + 1; static const SpriteID SPR_BUS_STOP_DT_X_W = SPR_ROADSTOP_BASE + 2; static const SpriteID SPR_BUS_STOP_DT_X_E = SPR_ROADSTOP_BASE + 3; static const SpriteID SPR_TRUCK_STOP_DT_Y_W = SPR_ROADSTOP_BASE + 4; static const SpriteID SPR_TRUCK_STOP_DT_Y_E = SPR_ROADSTOP_BASE + 5; static const SpriteID SPR_TRUCK_STOP_DT_X_W = SPR_ROADSTOP_BASE + 6; static const SpriteID SPR_TRUCK_STOP_DT_X_E = SPR_ROADSTOP_BASE + 7; static const uint16 ROADSTOP_SPRITE_COUNT = 8; /** Tramway sprites */ static const SpriteID SPR_TRAMWAY_BASE = SPR_ROADSTOP_BASE + ROADSTOP_SPRITE_COUNT; static const SpriteID SPR_TRAMWAY_OVERLAY = SPR_TRAMWAY_BASE + 4; static const SpriteID SPR_TRAMWAY_TRAM = SPR_TRAMWAY_BASE + 27; static const SpriteID SPR_TRAMWAY_SLOPED_OFFSET = 11; static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_Y_W = SPR_TRAMWAY_BASE + 25; static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_Y_E = SPR_TRAMWAY_BASE + 23; static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_X_W = SPR_TRAMWAY_BASE + 24; static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_X_E = SPR_TRAMWAY_BASE + 26; static const SpriteID SPR_TRAMWAY_PAVED_STRAIGHT_Y = SPR_TRAMWAY_BASE + 46; static const SpriteID SPR_TRAMWAY_PAVED_STRAIGHT_X = SPR_TRAMWAY_BASE + 47; static const SpriteID SPR_TRAMWAY_BACK_WIRES_STRAIGHT = SPR_TRAMWAY_BASE + 55; static const SpriteID SPR_TRAMWAY_FRONT_WIRES_STRAIGHT = SPR_TRAMWAY_BASE + 56; static const SpriteID SPR_TRAMWAY_BACK_WIRES_SLOPED = SPR_TRAMWAY_BASE + 72; static const SpriteID SPR_TRAMWAY_FRONT_WIRES_SLOPED = SPR_TRAMWAY_BASE + 68; static const SpriteID SPR_TRAMWAY_TUNNEL_WIRES = SPR_TRAMWAY_BASE + 80; static const SpriteID SPR_TRAMWAY_BRIDGE = SPR_TRAMWAY_BASE + 107; static const uint16 TRAMWAY_SPRITE_COUNT = 113; /** One way road sprites */ static const SpriteID SPR_ONEWAY_BASE = SPR_TRAMWAY_BASE + TRAMWAY_SPRITE_COUNT; static const uint16 ONEWAY_SPRITE_COUNT = 6; /** Flags sprites (in same order as enum NetworkLanguage) */ static const SpriteID SPR_FLAGS_BASE = SPR_ONEWAY_BASE + ONEWAY_SPRITE_COUNT; static const uint16 FLAGS_SPRITE_COUNT = 36; /** Tunnel sprites with grass only for custom railtype tunnel. */ static const SpriteID SPR_RAILTYPE_TUNNEL_BASE = SPR_FLAGS_BASE + FLAGS_SPRITE_COUNT; static const uint16 RAILTYPE_TUNNEL_BASE_COUNT = 16; /* Not really a sprite, but an empty bounding box. Used to construct bounding boxes that help sorting the sprites, but do not have a sprite associated. */ static const SpriteID SPR_EMPTY_BOUNDING_BOX = SPR_RAILTYPE_TUNNEL_BASE + RAILTYPE_TUNNEL_BASE_COUNT; static const uint16 EMPTY_BOUNDING_BOX_SPRITE_COUNT = 1; /* From where can we start putting NewGRFs? */ static const SpriteID SPR_NEWGRFS_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT; /* Manager face sprites */ static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face /* Icon showing company colour. */ static const SpriteID SPR_COMPANY_ICON = 747; /* is itself no foundation sprite, because tileh 0 has no foundation */ static const SpriteID SPR_FOUNDATION_BASE = 989; /* Shadow cell */ static const SpriteID SPR_SHADOW_CELL = 1004; /* Objects spritenumbers */ static const SpriteID SPR_TRANSMITTER = 2601; static const SpriteID SPR_LIGHTHOUSE = 2602; static const SpriteID SPR_TINYHQ_NORTH = 2603; static const SpriteID SPR_TINYHQ_EAST = 2604; static const SpriteID SPR_TINYHQ_WEST = 2605; static const SpriteID SPR_TINYHQ_SOUTH = 2606; static const SpriteID SPR_SMALLHQ_NORTH = 2607; static const SpriteID SPR_SMALLHQ_EAST = 2608; static const SpriteID SPR_SMALLHQ_WEST = 2609; static const SpriteID SPR_SMALLHQ_SOUTH = 2610; static const SpriteID SPR_MEDIUMHQ_NORTH = 2611; static const SpriteID SPR_MEDIUMHQ_NORTH_WALL = 2612; static const SpriteID SPR_MEDIUMHQ_EAST = 2613; static const SpriteID SPR_MEDIUMHQ_EAST_WALL = 2614; static const SpriteID SPR_MEDIUMHQ_WEST = 2615; static const SpriteID SPR_MEDIUMHQ_WEST_WALL = 2616; // very tiny piece of wall static const SpriteID SPR_MEDIUMHQ_SOUTH = 2617; static const SpriteID SPR_LARGEHQ_NORTH_GROUND = 2618; static const SpriteID SPR_LARGEHQ_NORTH_BUILD = 2619; static const SpriteID SPR_LARGEHQ_EAST_GROUND = 2620; static const SpriteID SPR_LARGEHQ_EAST_BUILD = 2621; static const SpriteID SPR_LARGEHQ_WEST_GROUND = 2622; static const SpriteID SPR_LARGEHQ_WEST_BUILD = 2623; static const SpriteID SPR_LARGEHQ_SOUTH = 2624; static const SpriteID SPR_HUGEHQ_NORTH_GROUND = 2625; static const SpriteID SPR_HUGEHQ_NORTH_BUILD = 2626; static const SpriteID SPR_HUGEHQ_EAST_GROUND = 2627; static const SpriteID SPR_HUGEHQ_EAST_BUILD = 2628; static const SpriteID SPR_HUGEHQ_WEST_GROUND = 2629; static const SpriteID SPR_HUGEHQ_WEST_BUILD = 2630; static const SpriteID SPR_HUGEHQ_SOUTH = 2631; static const SpriteID SPR_CONCRETE_GROUND = 1420; static const SpriteID SPR_STATUE_COMPANY = 2632; static const SpriteID SPR_BOUGHT_LAND = 4790; /* sprites for rail and rail stations*/ static const SpriteID SPR_RAIL_SNOW_OFFSET = 26; static const SpriteID SPR_MONO_SNOW_OFFSET = 26; static const SpriteID SPR_MGLV_SNOW_OFFSET = 26; static const SpriteID SPR_ORIGINAL_SIGNALS_BASE = 1275; static const SpriteID SPR_RAIL_SINGLE_X = 1005; static const SpriteID SPR_RAIL_SINGLE_Y = 1006; static const SpriteID SPR_RAIL_SINGLE_NORTH = 1007; static const SpriteID SPR_RAIL_SINGLE_SOUTH = 1008; static const SpriteID SPR_RAIL_SINGLE_EAST = 1009; static const SpriteID SPR_RAIL_SINGLE_WEST = 1010; static const SpriteID SPR_RAIL_TRACK_Y = 1011; static const SpriteID SPR_RAIL_TRACK_X = 1012; static const SpriteID SPR_RAIL_TRACK_BASE = 1018; static const SpriteID SPR_RAIL_TRACK_N_S = 1035; static const SpriteID SPR_RAIL_TRACK_Y_SNOW = 1037; static const SpriteID SPR_RAIL_TRACK_X_SNOW = 1038; static const SpriteID SPR_RAIL_DEPOT_SE_1 = 1063; static const SpriteID SPR_RAIL_DEPOT_SE_2 = 1064; static const SpriteID SPR_RAIL_DEPOT_SW_1 = 1065; static const SpriteID SPR_RAIL_DEPOT_SW_2 = 1066; static const SpriteID SPR_RAIL_DEPOT_NE = 1067; static const SpriteID SPR_RAIL_DEPOT_NW = 1068; static const SpriteID SPR_RAIL_PLATFORM_Y_FRONT = 1069; static const SpriteID SPR_RAIL_PLATFORM_X_REAR = 1070; static const SpriteID SPR_RAIL_PLATFORM_Y_REAR = 1071; static const SpriteID SPR_RAIL_PLATFORM_X_FRONT = 1072; static const SpriteID SPR_RAIL_PLATFORM_BUILDING_X = 1073; static const SpriteID SPR_RAIL_PLATFORM_BUILDING_Y = 1074; static const SpriteID SPR_RAIL_PLATFORM_PILLARS_Y_FRONT = 1075; static const SpriteID SPR_RAIL_PLATFORM_PILLARS_X_REAR = 1076; static const SpriteID SPR_RAIL_PLATFORM_PILLARS_Y_REAR = 1077; static const SpriteID SPR_RAIL_PLATFORM_PILLARS_X_FRONT = 1078; static const SpriteID SPR_RAIL_ROOF_STRUCTURE_X_TILE_A = 1079; // First half of the roof structure static const SpriteID SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A = 1080; static const SpriteID SPR_RAIL_ROOF_STRUCTURE_X_TILE_B = 1081; // Second half of the roof structure static const SpriteID SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B = 1082; static const SpriteID SPR_RAIL_ROOF_GLASS_X_TILE_A = 1083; // First half of the roof glass static const SpriteID SPR_RAIL_ROOF_GLASS_Y_TILE_A = 1084; static const SpriteID SPR_RAIL_ROOF_GLASS_X_TILE_B = 1085; // second half of the roof glass static const SpriteID SPR_RAIL_ROOF_GLASS_Y_TILE_B = 1086; static const SpriteID SPR_MONO_SINGLE_X = 1087; static const SpriteID SPR_MONO_SINGLE_Y = 1088; static const SpriteID SPR_MONO_SINGLE_NORTH = 1089; static const SpriteID SPR_MONO_SINGLE_SOUTH = 1090; static const SpriteID SPR_MONO_SINGLE_EAST = 1091; static const SpriteID SPR_MONO_SINGLE_WEST = 1092; static const SpriteID SPR_MONO_TRACK_Y = 1093; static const SpriteID SPR_MONO_TRACK_BASE = 1100; static const SpriteID SPR_MONO_TRACK_N_S = 1117; static const SpriteID SPR_MGLV_SINGLE_X = 1169; static const SpriteID SPR_MGLV_SINGLE_Y = 1170; static const SpriteID SPR_MGLV_SINGLE_NORTH = 1171; static const SpriteID SPR_MGLV_SINGLE_SOUTH = 1172; static const SpriteID SPR_MGLV_SINGLE_EAST = 1173; static const SpriteID SPR_MGLV_SINGLE_WEST = 1174; static const SpriteID SPR_MGLV_TRACK_Y = 1175; static const SpriteID SPR_MGLV_TRACK_BASE = 1182; static const SpriteID SPR_MGLV_TRACK_N_S = 1199; static const SpriteID SPR_WAYPOINT_X_1 = SPR_OPENTTD_BASE + 78; static const SpriteID SPR_WAYPOINT_X_2 = SPR_OPENTTD_BASE + 79; static const SpriteID SPR_WAYPOINT_Y_1 = SPR_OPENTTD_BASE + 80; static const SpriteID SPR_WAYPOINT_Y_2 = SPR_OPENTTD_BASE + 81; /* see _track_sloped_sprites in rail_cmd.cpp for slope offsets */ /* Track fences */ static const SpriteID SPR_TRACK_FENCE_FLAT_X = 1301; static const SpriteID SPR_TRACK_FENCE_FLAT_Y = 1302; static const SpriteID SPR_TRACK_FENCE_FLAT_VERT = 1303; static const SpriteID SPR_TRACK_FENCE_FLAT_HORZ = 1304; static const SpriteID SPR_TRACK_FENCE_SLOPE_SW = 1305; static const SpriteID SPR_TRACK_FENCE_SLOPE_SE = 1306; static const SpriteID SPR_TRACK_FENCE_SLOPE_NE = 1307; static const SpriteID SPR_TRACK_FENCE_SLOPE_NW = 1308; /* Base sprites for elrail. * Offsets via an enum are used so a complete list of absolute * sprite numbers is unnecessary. */ static const SpriteID SPR_WIRE_BASE = SPR_ELRAIL_BASE + 0; static const SpriteID SPR_PYLON_BASE = SPR_ELRAIL_BASE + 28; /* sprites for roads */ static const SpriteID SPR_ROAD_PAVED_STRAIGHT_Y = 1313; static const SpriteID SPR_ROAD_PAVED_STRAIGHT_X = 1314; /* sprites for airports and airfields*/ /* Small airports are AIRFIELD, everything else is AIRPORT */ static const SpriteID SPR_HELIPORT = 2633; static const SpriteID SPR_AIRPORT_APRON = 2634; static const SpriteID SPR_AIRPORT_AIRCRAFT_STAND = 2635; static const SpriteID SPR_AIRPORT_TAXIWAY_NS_WEST = 2636; static const SpriteID SPR_AIRPORT_TAXIWAY_EW_SOUTH = 2637; static const SpriteID SPR_AIRPORT_TAXIWAY_XING_SOUTH = 2638; static const SpriteID SPR_AIRPORT_TAXIWAY_XING_WEST = 2639; static const SpriteID SPR_AIRPORT_TAXIWAY_NS_CTR = 2640; static const SpriteID SPR_AIRPORT_TAXIWAY_XING_EAST = 2641; static const SpriteID SPR_AIRPORT_TAXIWAY_NS_EAST = 2642; static const SpriteID SPR_AIRPORT_TAXIWAY_EW_NORTH = 2643; static const SpriteID SPR_AIRPORT_TAXIWAY_EW_CTR = 2644; static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_A = 2645; static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_B = 2646; static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_C = 2647; static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_D = 2648; static const SpriteID SPR_AIRPORT_RUNWAY_END = 2649; // We should have different ends static const SpriteID SPR_AIRPORT_TERMINAL_A = 2650; static const SpriteID SPR_AIRPORT_TOWER = 2651; static const SpriteID SPR_AIRPORT_CONCOURSE = 2652; static const SpriteID SPR_AIRPORT_TERMINAL_B = 2653; static const SpriteID SPR_AIRPORT_TERMINAL_C = 2654; static const SpriteID SPR_AIRPORT_HANGAR_FRONT = 2655; static const SpriteID SPR_AIRPORT_HANGAR_REAR = 2656; static const SpriteID SPR_AIRFIELD_HANGAR_FRONT = 2657; static const SpriteID SPR_AIRFIELD_HANGAR_REAR = 2658; static const SpriteID SPR_AIRPORT_JETWAY_1 = 2659; static const SpriteID SPR_AIRPORT_JETWAY_2 = 2660; static const SpriteID SPR_AIRPORT_JETWAY_3 = 2661; static const SpriteID SPR_AIRPORT_PASSENGER_TUNNEL = 2662; static const SpriteID SPR_AIRPORT_FENCE_Y = 2663; static const SpriteID SPR_AIRPORT_FENCE_X = 2664; static const SpriteID SPR_AIRFIELD_TERM_A = 2665; static const SpriteID SPR_AIRFIELD_TERM_B = 2666; static const SpriteID SPR_AIRFIELD_TERM_C_GROUND = 2667; static const SpriteID SPR_AIRFIELD_TERM_C_BUILD = 2668; static const SpriteID SPR_AIRFIELD_APRON_A = 2669; static const SpriteID SPR_AIRFIELD_APRON_B = 2670; static const SpriteID SPR_AIRFIELD_APRON_C = 2671; static const SpriteID SPR_AIRFIELD_APRON_D = 2672; static const SpriteID SPR_AIRFIELD_RUNWAY_NEAR_END = 2673; static const SpriteID SPR_AIRFIELD_RUNWAY_MIDDLE = 2674; static const SpriteID SPR_AIRFIELD_RUNWAY_FAR_END = 2675; static const SpriteID SPR_AIRFIELD_WIND_1 = 2676; static const SpriteID SPR_AIRFIELD_WIND_2 = 2677; static const SpriteID SPR_AIRFIELD_WIND_3 = 2678; static const SpriteID SPR_AIRFIELD_WIND_4 = 2679; static const SpriteID SPR_AIRPORT_RADAR_1 = 2680; static const SpriteID SPR_AIRPORT_RADAR_2 = 2681; static const SpriteID SPR_AIRPORT_RADAR_3 = 2682; static const SpriteID SPR_AIRPORT_RADAR_4 = 2683; static const SpriteID SPR_AIRPORT_RADAR_5 = 2684; static const SpriteID SPR_AIRPORT_RADAR_6 = 2685; static const SpriteID SPR_AIRPORT_RADAR_7 = 2686; static const SpriteID SPR_AIRPORT_RADAR_8 = 2687; static const SpriteID SPR_AIRPORT_RADAR_9 = 2688; static const SpriteID SPR_AIRPORT_RADAR_A = 2689; static const SpriteID SPR_AIRPORT_RADAR_B = 2690; static const SpriteID SPR_AIRPORT_RADAR_C = 2691; static const SpriteID SPR_AIRPORT_HELIPAD = SPR_OPENTTD_BASE + 86; static const SpriteID SPR_AIRPORT_HELIDEPOT_OFFICE = 2095; /* Road Stops * Road stops have a ground tile and 3 buildings, one on each side * (except the side where the entry is). These are marked _A _B and _C */ static const SpriteID SPR_BUS_STOP_NE_GROUND = 2692; static const SpriteID SPR_BUS_STOP_SE_GROUND = 2693; static const SpriteID SPR_BUS_STOP_SW_GROUND = 2694; static const SpriteID SPR_BUS_STOP_NW_GROUND = 2695; static const SpriteID SPR_BUS_STOP_NE_BUILD_A = 2696; static const SpriteID SPR_BUS_STOP_SE_BUILD_A = 2697; static const SpriteID SPR_BUS_STOP_SW_BUILD_A = 2698; static const SpriteID SPR_BUS_STOP_NW_BUILD_A = 2699; static const SpriteID SPR_BUS_STOP_NE_BUILD_B = 2700; static const SpriteID SPR_BUS_STOP_SE_BUILD_B = 2701; static const SpriteID SPR_BUS_STOP_SW_BUILD_B = 2702; static const SpriteID SPR_BUS_STOP_NW_BUILD_B = 2703; static const SpriteID SPR_BUS_STOP_NE_BUILD_C = 2704; static const SpriteID SPR_BUS_STOP_SE_BUILD_C = 2705; static const SpriteID SPR_BUS_STOP_SW_BUILD_C = 2706; static const SpriteID SPR_BUS_STOP_NW_BUILD_C = 2707; static const SpriteID SPR_TRUCK_STOP_NE_GROUND = 2708; static const SpriteID SPR_TRUCK_STOP_SE_GROUND = 2709; static const SpriteID SPR_TRUCK_STOP_SW_GROUND = 2710; static const SpriteID SPR_TRUCK_STOP_NW_GROUND = 2711; static const SpriteID SPR_TRUCK_STOP_NE_BUILD_A = 2712; static const SpriteID SPR_TRUCK_STOP_SE_BUILD_A = 2713; static const SpriteID SPR_TRUCK_STOP_SW_BUILD_A = 2714; static const SpriteID SPR_TRUCK_STOP_NW_BUILD_A = 2715; static const SpriteID SPR_TRUCK_STOP_NE_BUILD_B = 2716; static const SpriteID SPR_TRUCK_STOP_SE_BUILD_B = 2717; static const SpriteID SPR_TRUCK_STOP_SW_BUILD_B = 2718; static const SpriteID SPR_TRUCK_STOP_NW_BUILD_B = 2719; static const SpriteID SPR_TRUCK_STOP_NE_BUILD_C = 2720; static const SpriteID SPR_TRUCK_STOP_SE_BUILD_C = 2721; static const SpriteID SPR_TRUCK_STOP_SW_BUILD_C = 2722; static const SpriteID SPR_TRUCK_STOP_NW_BUILD_C = 2723; /* Sprites for docks * Docks consist of two tiles, the sloped one and the flat one */ static const SpriteID SPR_DOCK_SLOPE_NE = 2727; static const SpriteID SPR_DOCK_SLOPE_SE = 2728; static const SpriteID SPR_DOCK_SLOPE_SW = 2729; static const SpriteID SPR_DOCK_SLOPE_NW = 2730; static const SpriteID SPR_DOCK_FLAT_X = 2731; // for NE and SW static const SpriteID SPR_DOCK_FLAT_Y = 2732; // for NW and SE static const SpriteID SPR_BUOY = 4076; // XXX this sucks, because it displays wrong stuff on canals /* Sprites for road */ static const SpriteID SPR_ROAD_Y = 1332; static const SpriteID SPR_ROAD_X = 1333; static const SpriteID SPR_ROAD_SLOPE_START = 1343; static const SpriteID SPR_ROAD_Y_SNOW = 1351; static const SpriteID SPR_ROAD_X_SNOW = 1352; /* see _road_sloped_sprites_offset in road_cmd.cpp for offsets for sloped road tiles */ static const SpriteID SPR_EXCAVATION_X = 1414; static const SpriteID SPR_EXCAVATION_Y = 1415; /* Landscape sprites */ static const SpriteID SPR_FLAT_BARE_LAND = 3924; static const SpriteID SPR_FLAT_1_THIRD_GRASS_TILE = 3943; static const SpriteID SPR_FLAT_2_THIRD_GRASS_TILE = 3962; static const SpriteID SPR_FLAT_GRASS_TILE = 3981; static const SpriteID SPR_FLAT_ROUGH_LAND = 4000; static const SpriteID SPR_FLAT_ROUGH_LAND_1 = 4019; static const SpriteID SPR_FLAT_ROUGH_LAND_2 = 4020; static const SpriteID SPR_FLAT_ROUGH_LAND_3 = 4021; static const SpriteID SPR_FLAT_ROUGH_LAND_4 = 4022; static const SpriteID SPR_FLAT_ROCKY_LAND_1 = 4023; static const SpriteID SPR_FLAT_ROCKY_LAND_2 = 4042; static const SpriteID SPR_FLAT_WATER_TILE = 4061; static const SpriteID SPR_FLAT_1_QUART_SNOW_DESERT_TILE = 4493; static const SpriteID SPR_FLAT_2_QUART_SNOW_DESERT_TILE = 4512; static const SpriteID SPR_FLAT_3_QUART_SNOW_DESERT_TILE = 4531; static const SpriteID SPR_FLAT_SNOW_DESERT_TILE = 4550; /* Hedge, Farmland-fence sprites */ static const SpriteID SPR_HEDGE_BUSHES = 4090; static const SpriteID SPR_HEDGE_BUSHES_WITH_GATE = 4096; static const SpriteID SPR_HEDGE_FENCE = 4102; static const SpriteID SPR_HEDGE_BLOOMBUSH_YELLOW = 4108; static const SpriteID SPR_HEDGE_BLOOMBUSH_RED = 4114; static const SpriteID SPR_HEDGE_STONE = 4120; /* Farmland sprites, only flat tiles listed, various stages */ static const SpriteID SPR_FARMLAND_BARE = 4126; static const SpriteID SPR_FARMLAND_STATE_1 = 4145; static const SpriteID SPR_FARMLAND_STATE_2 = 4164; static const SpriteID SPR_FARMLAND_STATE_3 = 4183; static const SpriteID SPR_FARMLAND_STATE_4 = 4202; static const SpriteID SPR_FARMLAND_STATE_5 = 4221; static const SpriteID SPR_FARMLAND_STATE_6 = 4240; static const SpriteID SPR_FARMLAND_STATE_7 = 4259; static const SpriteID SPR_FARMLAND_HAYPACKS = 4278; /* Water-related sprites */ static const SpriteID SPR_SHIP_DEPOT_SE_FRONT = 4070; static const SpriteID SPR_SHIP_DEPOT_SW_FRONT = 4071; static const SpriteID SPR_SHIP_DEPOT_NW = 4072; static const SpriteID SPR_SHIP_DEPOT_NE = 4073; static const SpriteID SPR_SHIP_DEPOT_SE_REAR = 4074; static const SpriteID SPR_SHIP_DEPOT_SW_REAR = 4075; /* here come sloped water sprites */ static const SpriteID SPR_WATER_SLOPE_Y_UP = SPR_CANALS_BASE + 0; // Water flowing negative Y direction static const SpriteID SPR_WATER_SLOPE_X_DOWN = SPR_CANALS_BASE + 1; // positive X static const SpriteID SPR_WATER_SLOPE_X_UP = SPR_CANALS_BASE + 2; // negative X static const SpriteID SPR_WATER_SLOPE_Y_DOWN = SPR_CANALS_BASE + 3; // positive Y /* sprites for the locks * there are 4 kinds of locks, each of them is 3 tiles long. * the four kinds are running in the X and Y direction and * are "lowering" either in the "+" or the "-" direction. * the three tiles are the center tile (where the slope is) * and a bottom and a top tile */ static const SpriteID SPR_LOCK_BASE = SPR_CANALS_BASE + 4; static const SpriteID SPR_LOCK_Y_UP_CENTER_REAR = SPR_CANALS_BASE + 4; static const SpriteID SPR_LOCK_X_DOWN_CENTER_REAR = SPR_CANALS_BASE + 5; static const SpriteID SPR_LOCK_X_UP_CENTER_REAR = SPR_CANALS_BASE + 6; static const SpriteID SPR_LOCK_Y_DOWN_CENTER_REAR = SPR_CANALS_BASE + 7; static const SpriteID SPR_LOCK_Y_UP_CENTER_FRONT = SPR_CANALS_BASE + 8; static const SpriteID SPR_LOCK_X_DOWN_CENTER_FRONT = SPR_CANALS_BASE + 9; static const SpriteID SPR_LOCK_X_UP_CENTER_FRONT = SPR_CANALS_BASE + 10; static const SpriteID SPR_LOCK_Y_DOWN_CENTER_FRONT = SPR_CANALS_BASE + 11; static const SpriteID SPR_LOCK_Y_UP_BOTTOM_REAR = SPR_CANALS_BASE + 12; static const SpriteID SPR_LOCK_X_DOWN_BOTTOM_REAR = SPR_CANALS_BASE + 13; static const SpriteID SPR_LOCK_X_UP_BOTTOM_REAR = SPR_CANALS_BASE + 14; static const SpriteID SPR_LOCK_Y_DOWN_BOTTOM_REAR = SPR_CANALS_BASE + 15; static const SpriteID SPR_LOCK_Y_UP_BOTTOM_FRONT = SPR_CANALS_BASE + 16; static const SpriteID SPR_LOCK_X_DOWN_BOTTOM_FRONT = SPR_CANALS_BASE + 17; static const SpriteID SPR_LOCK_X_UP_BOTTOM_FRONT = SPR_CANALS_BASE + 18; static const SpriteID SPR_LOCK_Y_DOWN_BOTTOM_FRONT = SPR_CANALS_BASE + 19; static const SpriteID SPR_LOCK_Y_UP_TOP_REAR = SPR_CANALS_BASE + 20; static const SpriteID SPR_LOCK_X_DOWN_TOP_REAR = SPR_CANALS_BASE + 21; static const SpriteID SPR_LOCK_X_UP_TOP_REAR = SPR_CANALS_BASE + 22; static const SpriteID SPR_LOCK_Y_DOWN_TOP_REAR = SPR_CANALS_BASE + 23; static const SpriteID SPR_LOCK_Y_UP_TOP_FRONT = SPR_CANALS_BASE + 24; static const SpriteID SPR_LOCK_X_DOWN_TOP_FRONT = SPR_CANALS_BASE + 25; static const SpriteID SPR_LOCK_X_UP_TOP_FRONT = SPR_CANALS_BASE + 26; static const SpriteID SPR_LOCK_Y_DOWN_TOP_FRONT = SPR_CANALS_BASE + 27; static const SpriteID SPR_CANAL_DIKES_BASE = SPR_CANALS_BASE + 52; /* Sprites for tunnels and bridges */ static const SpriteID SPR_TUNNEL_ENTRY_REAR_RAIL = 2365; static const SpriteID SPR_TUNNEL_ENTRY_REAR_MONO = 2373; static const SpriteID SPR_TUNNEL_ENTRY_REAR_MAGLEV = 2381; static const SpriteID SPR_TUNNEL_ENTRY_REAR_ROAD = 2389; /* Level crossings */ static const SpriteID SPR_CROSSING_OFF_X_RAIL = 1370; static const SpriteID SPR_CROSSING_OFF_X_MONO = 1382; static const SpriteID SPR_CROSSING_OFF_X_MAGLEV = 1394; /* bridge type sprites */ static const SpriteID SPR_PILLARS_BASE = SPR_OPENTTD_BASE + 14; /* Wooden bridge (type 0) */ static const SpriteID SPR_BTWDN_RAIL_Y_REAR = 2545; static const SpriteID SPR_BTWDN_RAIL_X_REAR = 2546; static const SpriteID SPR_BTWDN_ROAD_Y_REAR = 2547; static const SpriteID SPR_BTWDN_ROAD_X_REAR = 2548; static const SpriteID SPR_BTWDN_Y_FRONT = 2549; static const SpriteID SPR_BTWDN_X_FRONT = 2550; static const SpriteID SPR_BTWDN_Y_PILLAR = 2551; static const SpriteID SPR_BTWDN_X_PILLAR = 2552; static const SpriteID SPR_BTWDN_MONO_Y_REAR = 4360; static const SpriteID SPR_BTWDN_MONO_X_REAR = 4361; static const SpriteID SPR_BTWDN_MGLV_Y_REAR = 4400; static const SpriteID SPR_BTWDN_MGLV_X_REAR = 4401; /* ramps */ static const SpriteID SPR_BTWDN_ROAD_RAMP_Y_DOWN = 2529; static const SpriteID SPR_BTWDN_ROAD_RAMP_X_DOWN = 2530; static const SpriteID SPR_BTWDN_ROAD_RAMP_X_UP = 2531; // for some weird reason the order is swapped static const SpriteID SPR_BTWDN_ROAD_RAMP_Y_UP = 2532; // between X and Y. static const SpriteID SPR_BTWDN_ROAD_Y_SLOPE_UP = 2533; static const SpriteID SPR_BTWDN_ROAD_X_SLOPE_UP = 2534; static const SpriteID SPR_BTWDN_ROAD_Y_SLOPE_DOWN = 2535; static const SpriteID SPR_BTWDN_ROAD_X_SLOPE_DOWN = 2536; static const SpriteID SPR_BTWDN_RAIL_RAMP_Y_DOWN = 2537; static const SpriteID SPR_BTWDN_RAIL_RAMP_X_DOWN = 2538; static const SpriteID SPR_BTWDN_RAIL_RAMP_X_UP = 2539; // for some weird reason the order is swapped static const SpriteID SPR_BTWDN_RAIL_RAMP_Y_UP = 2540; // between X and Y. static const SpriteID SPR_BTWDN_RAIL_Y_SLOPE_UP = 2541; static const SpriteID SPR_BTWDN_RAIL_X_SLOPE_UP = 2542; static const SpriteID SPR_BTWDN_RAIL_Y_SLOPE_DOWN = 2543; static const SpriteID SPR_BTWDN_RAIL_X_SLOPE_DOWN = 2544; static const SpriteID SPR_BTWDN_MONO_RAMP_Y_DOWN = 4352; static const SpriteID SPR_BTWDN_MONO_RAMP_X_DOWN = 4353; static const SpriteID SPR_BTWDN_MONO_RAMP_X_UP = 4354; // for some weird reason the order is swapped static const SpriteID SPR_BTWDN_MONO_RAMP_Y_UP = 4355; // between X and Y. static const SpriteID SPR_BTWDN_MONO_Y_SLOPE_UP = 4356; static const SpriteID SPR_BTWDN_MONO_X_SLOPE_UP = 4357; static const SpriteID SPR_BTWDN_MONO_Y_SLOPE_DOWN = 4358; static const SpriteID SPR_BTWDN_MONO_X_SLOPE_DOWN = 4359; static const SpriteID SPR_BTWDN_MGLV_RAMP_Y_DOWN = 4392; static const SpriteID SPR_BTWDN_MGLV_RAMP_X_DOWN = 4393; static const SpriteID SPR_BTWDN_MGLV_RAMP_X_UP = 4394; // for some weird reason the order is swapped static const SpriteID SPR_BTWDN_MGLV_RAMP_Y_UP = 4395; // between X and Y. static const SpriteID SPR_BTWDN_MGLV_Y_SLOPE_UP = 4396; static const SpriteID SPR_BTWDN_MGLV_X_SLOPE_UP = 4397; static const SpriteID SPR_BTWDN_MGLV_Y_SLOPE_DOWN = 4398; static const SpriteID SPR_BTWDN_MGLV_X_SLOPE_DOWN = 4399; /* Steel Girder with arches * BTSGA == Bridge Type Steel Girder Arched * This is bridge type number 2 */ static const SpriteID SPR_BTSGA_RAIL_X_REAR = 2499; static const SpriteID SPR_BTSGA_RAIL_Y_REAR = 2500; static const SpriteID SPR_BTSGA_ROAD_X_REAR = 2501; static const SpriteID SPR_BTSGA_ROAD_Y_REAR = 2502; static const SpriteID SPR_BTSGA_X_FRONT = 2503; static const SpriteID SPR_BTSGA_Y_FRONT = 2504; static const SpriteID SPR_BTSGA_X_PILLAR = 2505; static const SpriteID SPR_BTSGA_Y_PILLAR = 2506; static const SpriteID SPR_BTSGA_MONO_X_REAR = 4324; static const SpriteID SPR_BTSGA_MONO_Y_REAR = 4325; static const SpriteID SPR_BTSGA_MGLV_X_REAR = 4364; static const SpriteID SPR_BTSGA_MGLV_Y_REAR = 4365; /* BTSUS == Suspension bridge * TILE_* denotes the different tiles a suspension bridge * can have * TILE_A and TILE_B are the "beginnings" and "ends" of the * suspension system. They have small rectangular endcaps * TILE_C and TILE_D look almost identical to TILE_A and * TILE_B, but they do not have the "endcaps". They form the * middle part * TILE_E is a condensed configuration of two pillars. while they * are usually 2 pillars apart, they only have 1 pillar separation * here * TILE_F is an extended configuration of pillars. They are * plugged in when pillars should be 3 tiles apart */ static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_A = 2453; static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_B = 2454; static const SpriteID SPR_BTSUS_Y_FRONT_TILE_A = 2455; static const SpriteID SPR_BTSUS_Y_FRONT_TILE_B = 2456; static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_D = 2457; static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_C = 2458; static const SpriteID SPR_BTSUS_Y_FRONT_TILE_D = 2459; static const SpriteID SPR_BTSUS_Y_FRONT_TILE_C = 2460; static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_A = 2461; static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_B = 2462; static const SpriteID SPR_BTSUS_X_FRONT_TILE_A = 2463; static const SpriteID SPR_BTSUS_X_FRONT_TILE_B = 2464; static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_D = 2465; static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_C = 2466; static const SpriteID SPR_BTSUS_X_FRONT_TILE_D = 2467; static const SpriteID SPR_BTSUS_X_FRONT_TILE_C = 2468; static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_A = 2469; static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_B = 2470; static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_D = 2471; static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_C = 2472; static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_A = 2473; static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_B = 2474; static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_D = 2475; static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_C = 2476; static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_A = 2477; static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_B = 2478; static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_D = 2479; static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_C = 2480; static const SpriteID SPR_BTSUS_X_PILLAR_TILE_A = 2481; static const SpriteID SPR_BTSUS_X_PILLAR_TILE_B = 2482; static const SpriteID SPR_BTSUS_X_PILLAR_TILE_D = 2483; static const SpriteID SPR_BTSUS_X_PILLAR_TILE_C = 2484; static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_E = 2485; static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_E = 2486; static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_E = 2487; static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_E = 2488; static const SpriteID SPR_BTSUS_Y_FRONT_TILE_E = 2489; static const SpriteID SPR_BTSUS_X_FRONT_TILE_E = 2490; static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_E = 2491; static const SpriteID SPR_BTSUS_X_PILLAR_TILE_E = 2492; static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_F = 2493; static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_F = 2494; static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_F = 2495; static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_F = 2496; static const SpriteID SPR_BTSUS_X_FRONT = 2497; static const SpriteID SPR_BTSUS_Y_FRONT = 2498; static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_A = 4334; static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_B = 4335; static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_D = 4336; static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_C = 4337; static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_A = 4338; static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_B = 4339; static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_D = 4340; static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_C = 4341; static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_E = 4342; static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_E = 4343; static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_F = 4344; static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_F = 4345; static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_A = 4374; static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_B = 4375; static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_D = 4376; static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_C = 4377; static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_A = 4378; static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_B = 4379; static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_D = 4380; static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_C = 4381; static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_E = 4382; static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_E = 4383; static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_F = 4384; static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_F = 4385; /* cantilever bridges * They have three different kinds of tiles: * END(ing), MID(dle), BEG(ginning) */ static const SpriteID SPR_BTCAN_RAIL_X_BEG = 2507; static const SpriteID SPR_BTCAN_RAIL_X_MID = 2508; static const SpriteID SPR_BTCAN_RAIL_X_END = 2509; static const SpriteID SPR_BTCAN_RAIL_Y_END = 2510; static const SpriteID SPR_BTCAN_RAIL_Y_MID = 2511; static const SpriteID SPR_BTCAN_RAIL_Y_BEG = 2512; static const SpriteID SPR_BTCAN_ROAD_X_BEG = 2513; static const SpriteID SPR_BTCAN_ROAD_X_MID = 2514; static const SpriteID SPR_BTCAN_ROAD_X_END = 2515; static const SpriteID SPR_BTCAN_ROAD_Y_END = 2516; static const SpriteID SPR_BTCAN_ROAD_Y_MID = 2517; static const SpriteID SPR_BTCAN_ROAD_Y_BEG = 2518; static const SpriteID SPR_BTCAN_X_FRONT_BEG = 2519; static const SpriteID SPR_BTCAN_X_FRONT_MID = 2520; static const SpriteID SPR_BTCAN_X_FRONT_END = 2521; static const SpriteID SPR_BTCAN_Y_FRONT_END = 2522; static const SpriteID SPR_BTCAN_Y_FRONT_MID = 2523; static const SpriteID SPR_BTCAN_Y_FRONT_BEG = 2524; static const SpriteID SPR_BTCAN_X_PILLAR_BEG = 2525; static const SpriteID SPR_BTCAN_X_PILLAR_MID = 2526; static const SpriteID SPR_BTCAN_Y_PILLAR_MID = 2527; static const SpriteID SPR_BTCAN_Y_PILLAR_BEG = 2528; static const SpriteID SPR_BTCAN_MONO_X_BEG = 4346; static const SpriteID SPR_BTCAN_MONO_X_MID = 4347; static const SpriteID SPR_BTCAN_MONO_X_END = 4348; static const SpriteID SPR_BTCAN_MONO_Y_END = 4349; static const SpriteID SPR_BTCAN_MONO_Y_MID = 4350; static const SpriteID SPR_BTCAN_MONO_Y_BEG = 4351; static const SpriteID SPR_BTCAN_MGLV_X_BEG = 4386; static const SpriteID SPR_BTCAN_MGLV_X_MID = 4387; static const SpriteID SPR_BTCAN_MGLV_X_END = 4388; static const SpriteID SPR_BTCAN_MGLV_Y_END = 4389; static const SpriteID SPR_BTCAN_MGLV_Y_MID = 4390; static const SpriteID SPR_BTCAN_MGLV_Y_BEG = 4391; /* little concrete bridge */ static const SpriteID SPR_BTCON_RAIL_X = 2493; static const SpriteID SPR_BTCON_RAIL_Y = 2494; static const SpriteID SPR_BTCON_ROAD_X = 2495; static const SpriteID SPR_BTCON_ROAD_Y = 2496; static const SpriteID SPR_BTCON_X_FRONT = 2497; static const SpriteID SPR_BTCON_Y_FRONT = 2498; static const SpriteID SPR_BTCON_X_PILLAR = 2505; static const SpriteID SPR_BTCON_Y_PILLAR = 2506; static const SpriteID SPR_BTCON_MONO_X = 4344; static const SpriteID SPR_BTCON_MONO_Y = 4345; static const SpriteID SPR_BTCON_MGLV_X = 4384; static const SpriteID SPR_BTCON_MGLV_Y = 4385; /* little steel girder bridge */ static const SpriteID SPR_BTGIR_RAIL_X = 2553; static const SpriteID SPR_BTGIR_RAIL_Y = 2554; static const SpriteID SPR_BTGIR_ROAD_X = 2555; static const SpriteID SPR_BTGIR_ROAD_Y = 2556; static const SpriteID SPR_BTGIR_X_FRONT = 2557; static const SpriteID SPR_BTGIR_Y_FRONT = 2558; static const SpriteID SPR_BTGIR_X_PILLAR = 2505; static const SpriteID SPR_BTGIR_Y_PILLAR = 2506; static const SpriteID SPR_BTGIR_MONO_X = 4362; static const SpriteID SPR_BTGIR_MONO_Y = 4363; static const SpriteID SPR_BTGIR_MGLV_X = 4402; static const SpriteID SPR_BTGIR_MGLV_Y = 4403; /* tubular bridges * tubular bridges have 3 kinds of tiles: * a start tile (with only half a tube on the far side, marked _BEG * a middle tile (full tunnel), marked _MID * and an end tile (half a tube on the near side, marked _END */ static const SpriteID SPR_BTTUB_X_FRONT_BEG = 2559; static const SpriteID SPR_BTTUB_X_FRONT_MID = 2560; static const SpriteID SPR_BTTUB_X_FRONT_END = 2561; static const SpriteID SPR_BTTUB_Y_FRONT_END = 2562; static const SpriteID SPR_BTTUB_Y_FRONT_MID = 2563; static const SpriteID SPR_BTTUB_Y_FRONT_BEG = 2564; static const SpriteID SPR_BTTUB_X_PILLAR_BEG = 2565; static const SpriteID SPR_BTTUB_X_PILLAR_MID = 2566; static const SpriteID SPR_BTTUB_Y_PILLAR_MID = 2567; static const SpriteID SPR_BTTUB_Y_PILLAR_BEG = 2568; static const SpriteID SPR_BTTUB_X_RAIL_REAR_BEG = 2569; static const SpriteID SPR_BTTUB_X_RAIL_REAR_MID = 2570; static const SpriteID SPR_BTTUB_X_RAIL_REAR_END = 2571; static const SpriteID SPR_BTTUB_Y_RAIL_REAR_BEG = 2572; static const SpriteID SPR_BTTUB_Y_RAIL_REAR_MID = 2573; static const SpriteID SPR_BTTUB_Y_RAIL_REAR_END = 2574; static const SpriteID SPR_BTTUB_X_ROAD_REAR_BEG = 2575; static const SpriteID SPR_BTTUB_X_ROAD_REAR_MID = 2576; static const SpriteID SPR_BTTUB_X_ROAD_REAR_END = 2577; static const SpriteID SPR_BTTUB_Y_ROAD_REAR_BEG = 2578; static const SpriteID SPR_BTTUB_Y_ROAD_REAR_MID = 2579; static const SpriteID SPR_BTTUB_Y_ROAD_REAR_END = 2580; static const SpriteID SPR_BTTUB_X_MONO_REAR_BEG = 2581; static const SpriteID SPR_BTTUB_X_MONO_REAR_MID = 2582; static const SpriteID SPR_BTTUB_X_MONO_REAR_END = 2583; static const SpriteID SPR_BTTUB_Y_MONO_REAR_BEG = 2584; static const SpriteID SPR_BTTUB_Y_MONO_REAR_MID = 2585; static const SpriteID SPR_BTTUB_Y_MONO_REAR_END = 2586; static const SpriteID SPR_BTTUB_X_MGLV_REAR_BEG = 2587; static const SpriteID SPR_BTTUB_X_MGLV_REAR_MID = 2588; static const SpriteID SPR_BTTUB_X_MGLV_REAR_END = 2589; static const SpriteID SPR_BTTUB_Y_MGLV_REAR_BEG = 2590; static const SpriteID SPR_BTTUB_Y_MGLV_REAR_MID = 2591; static const SpriteID SPR_BTTUB_Y_MGLV_REAR_END = 2592; /* ramps (for all bridges except wood and tubular?)*/ static const SpriteID SPR_BTGEN_RAIL_X_SLOPE_DOWN = 2437; static const SpriteID SPR_BTGEN_RAIL_X_SLOPE_UP = 2438; static const SpriteID SPR_BTGEN_RAIL_Y_SLOPE_DOWN = 2439; static const SpriteID SPR_BTGEN_RAIL_Y_SLOPE_UP = 2440; static const SpriteID SPR_BTGEN_RAIL_RAMP_X_UP = 2441; static const SpriteID SPR_BTGEN_RAIL_RAMP_X_DOWN = 2442; static const SpriteID SPR_BTGEN_RAIL_RAMP_Y_UP = 2443; static const SpriteID SPR_BTGEN_RAIL_RAMP_Y_DOWN = 2444; static const SpriteID SPR_BTGEN_ROAD_X_SLOPE_DOWN = 2445; static const SpriteID SPR_BTGEN_ROAD_X_SLOPE_UP = 2446; static const SpriteID SPR_BTGEN_ROAD_Y_SLOPE_DOWN = 2447; static const SpriteID SPR_BTGEN_ROAD_Y_SLOPE_UP = 2448; static const SpriteID SPR_BTGEN_ROAD_RAMP_X_UP = 2449; static const SpriteID SPR_BTGEN_ROAD_RAMP_X_DOWN = 2450; static const SpriteID SPR_BTGEN_ROAD_RAMP_Y_UP = 2451; static const SpriteID SPR_BTGEN_ROAD_RAMP_Y_DOWN = 2452; static const SpriteID SPR_BTGEN_MONO_X_SLOPE_DOWN = 4326; static const SpriteID SPR_BTGEN_MONO_X_SLOPE_UP = 4327; static const SpriteID SPR_BTGEN_MONO_Y_SLOPE_DOWN = 4328; static const SpriteID SPR_BTGEN_MONO_Y_SLOPE_UP = 4329; static const SpriteID SPR_BTGEN_MONO_RAMP_X_UP = 4330; static const SpriteID SPR_BTGEN_MONO_RAMP_X_DOWN = 4331; static const SpriteID SPR_BTGEN_MONO_RAMP_Y_UP = 4332; static const SpriteID SPR_BTGEN_MONO_RAMP_Y_DOWN = 4333; static const SpriteID SPR_BTGEN_MGLV_X_SLOPE_DOWN = 4366; static const SpriteID SPR_BTGEN_MGLV_X_SLOPE_UP = 4367; static const SpriteID SPR_BTGEN_MGLV_Y_SLOPE_DOWN = 4368; static const SpriteID SPR_BTGEN_MGLV_Y_SLOPE_UP = 4369; static const SpriteID SPR_BTGEN_MGLV_RAMP_X_UP = 4370; static const SpriteID SPR_BTGEN_MGLV_RAMP_X_DOWN = 4371; static const SpriteID SPR_BTGEN_MGLV_RAMP_Y_UP = 4372; static const SpriteID SPR_BTGEN_MGLV_RAMP_Y_DOWN = 4373; /* Vehicle view sprites */ static const SpriteID SPR_CENTRE_VIEW_VEHICLE = 683; static const SpriteID SPR_SEND_TRAIN_TODEPOT = 685; static const SpriteID SPR_SEND_ROADVEH_TODEPOT = 686; static const SpriteID SPR_SEND_AIRCRAFT_TODEPOT = 687; static const SpriteID SPR_SEND_SHIP_TODEPOT = 688; static const SpriteID SPR_IGNORE_SIGNALS = 689; static const SpriteID SPR_SHOW_ORDERS = 690; static const SpriteID SPR_SHOW_VEHICLE_DETAILS = 691; static const SpriteID SPR_REFIT_VEHICLE = 692; static const SpriteID SPR_FORCE_VEHICLE_TURN = 715; /* Vehicle sprite-flags (red/green) */ static const SpriteID SPR_FLAG_VEH_STOPPED = 3090; static const SpriteID SPR_FLAG_VEH_RUNNING = 3091; static const SpriteID SPR_VEH_BUS_SW_VIEW = 3097; static const SpriteID SPR_VEH_BUS_SIDE_VIEW = 3098; /* Rotor sprite numbers */ static const SpriteID SPR_ROTOR_STOPPED = 3901; static const SpriteID SPR_ROTOR_MOVING_1 = 3902; static const SpriteID SPR_ROTOR_MOVING_3 = 3904; /* Town/house sprites */ static const SpriteID SPR_LIFT = 1443; /* used in town_land.h * CNST1..3 = Those are the different stages of construction * The last 2 hexas correspond to the type of building it represent, if any */ static const SpriteID SPR_CNST1_TALLOFFICE_00 = 1421; static const SpriteID SPR_CNST2_TALLOFFICE_00 = 1422; static const SpriteID SPR_CNST3_TALLOFFICE_00 = 1423; static const SpriteID SPR_GROUND_TALLOFFICE_00 = 1424; static const SpriteID SPR_BUILD_TALLOFFICE_00 = 1425; // temperate static const SpriteID SPR_CNST1_OFFICE_01 = 1426; static const SpriteID SPR_CNST2_OFFICE_01 = 1427; static const SpriteID SPR_BUILD_OFFICE_01 = 1428; // temperate static const SpriteID SPR_GROUND_OFFICE_01 = 1429; static const SpriteID SPR_CNST1_SMLBLCKFLATS_02 = 1430; // Small Block of Flats static const SpriteID SPR_CNST2_SMLBLCKFLATS_02 = 1431; static const SpriteID SPR_BUILD_SMLBLCKFLATS_02 = 1432; // temperate static const SpriteID SPR_GROUND_SMLBLCKFLATS_02 = 1433; static const SpriteID SPR_CNST1_TEMPCHURCH = 1434; static const SpriteID SPR_CNST2_TEMPCHURCH = 1435; static const SpriteID SPR_BUILD_TEMPCHURCH = 1436; static const SpriteID SPR_GROUND_TEMPCHURCH = 1437; static const SpriteID SPR_CNST1_LARGEOFFICE_04 = 1440; static const SpriteID SPR_CNST2_LARGEOFFICE_04 = 1441; static const SpriteID SPR_BUILD_LARGEOFFICE_04 = 1442; // temperate, sub-arctic, subtropical static const SpriteID SPR_BUILD_LARGEOFFICE_04_SNOW = 4569; // same, with snow /* These are in fact two houses for the same houseID. so V1 and V2 */ static const SpriteID SPR_CNST1_TOWNHOUSE_06_V1 = 1444; static const SpriteID SPR_CNST2_TOWNHOUSE_06_V1 = 1445; static const SpriteID SPR_BUILD_TOWNHOUSE_06_V1 = 1446; // 1st variation static const SpriteID SPR_GRND_TOWNHOUSE_06_V1 = 1447; static const SpriteID SPR_GRND_STADIUM_N = 1479; //stadium ground at north static const SpriteID SPR_GRND_STADIUM_E = 1480; //stadium ground at east static const SpriteID SPR_GRND_STADIUM_W = 1481; //stadium ground at west static const SpriteID SPR_GRND_STADIUM_S = 1482; //stadium ground at south static const SpriteID SPR_CNST1_TOWNHOUSE_06_V2 = 1501; // used as ground, but is stage1 static const SpriteID SPR_CNST1_TOWNHOUSE_06_V2_P = 1502; // pipes extensions for previous static const SpriteID SPR_CNST2_TOWNHOUSE_06_V2_G = 1503; // Ground of cnst stage 2 static const SpriteID SPR_CNST2_TOWNHOUSE_06_V2 = 1504; // real cnst stage 2 static const SpriteID SPR_GRND_TOWNHOUSE_06_V2 = 1505; static const SpriteID SPR_BUILD_TOWNHOUSE_06_V2 = 1506; // 2nd variation static const SpriteID SPR_CNST1_HOTEL_07_NW = 1448; static const SpriteID SPR_CNST2_HOTEL_07_NW = 1449; static const SpriteID SPR_BUILD_HOTEL_07_NW = 1450; static const SpriteID SPR_CNST1_HOTEL_07_SE = 1451; static const SpriteID SPR_CNST2_HOTEL_07_SE = 1452; static const SpriteID SPR_BUILD_HOTEL_07_SE = 1453; static const SpriteID SPR_STATUE_HORSERIDER_09 = 1454; static const SpriteID SPR_FOUNTAIN_0A = 1455; static const SpriteID SPR_PARKSTATUE_0B = 1456; static const SpriteID SPR_PARKALLEY_0C = 1457; static const SpriteID SPR_CNST1_OFFICE_0D = 1458; static const SpriteID SPR_CNST2_OFFICE_0D = 1459; static const SpriteID SPR_BUILD_OFFICE_0D = 1460; static const SpriteID SPR_CNST1_SHOPOFFICE_0E = 1461; static const SpriteID SPR_CNST2_SHOPOFFICE_0E = 1462; static const SpriteID SPR_BUILD_SHOPOFFICE_0E = 1463; static const SpriteID SPR_CNST1_SHOPOFFICE_0F = 1464; static const SpriteID SPR_CNST2_SHOPOFFICE_0F = 1465; static const SpriteID SPR_BUILD_SHOPOFFICE_0F = 1466; static const SpriteID SPR_GRND_HOUSE_TOY1 = 4675; static const SpriteID SPR_GRND_HOUSE_TOY2 = 4676; /* Easter egg/disaster sprites */ static const SpriteID SPR_BLIMP = 3905; // Zeppelin static const SpriteID SPR_BLIMP_CRASHING = 3906; static const SpriteID SPR_BLIMP_CRASHED = 3907; static const SpriteID SPR_UFO_SMALL_SCOUT = 3908; // XCOM - UFO Defense static const SpriteID SPR_UFO_SMALL_SCOUT_DARKER = 3909; static const SpriteID SPR_SUB_SMALL_NE = 3910; // Silent Service static const SpriteID SPR_SUB_SMALL_SE = 3911; static const SpriteID SPR_SUB_SMALL_SW = 3912; static const SpriteID SPR_SUB_SMALL_NW = 3913; static const SpriteID SPR_SUB_LARGE_NE = 3914; static const SpriteID SPR_SUB_LARGE_SE = 3915; static const SpriteID SPR_SUB_LARGE_SW = 3916; static const SpriteID SPR_SUB_LARGE_NW = 3917; static const SpriteID SPR_F_15 = 3918; // F-15 Strike Eagle static const SpriteID SPR_F_15_FIRING = 3919; static const SpriteID SPR_UFO_HARVESTER = 3920; // XCOM - UFO Defense static const SpriteID SPR_XCOM_SKYRANGER = 3921; static const SpriteID SPR_AH_64A = 3922; // Gunship static const SpriteID SPR_AH_64A_FIRING = 3923; /* main_gui.cpp */ static const SpriteID SPR_IMG_TERRAFORM_UP = 694; static const SpriteID SPR_IMG_TERRAFORM_DOWN = 695; static const SpriteID SPR_IMG_DYNAMITE = 703; static const SpriteID SPR_IMG_ROCKS = 4084; static const SpriteID SPR_IMG_DESERT = 4085; static const SpriteID SPR_IMG_TRANSMITTER = 4086; static const SpriteID SPR_IMG_LEVEL_LAND = SPR_OPENTTD_BASE + 91; static const SpriteID SPR_IMG_BUILD_CANAL = SPR_OPENTTD_BASE + 88; static const SpriteID SPR_IMG_BUILD_RIVER = SPR_OPENTTD_BASE + 136; static const SpriteID SPR_IMG_BUILD_LOCK = SPR_CANALS_BASE + 64; static const SpriteID SPR_IMG_PAUSE = 726; static const SpriteID SPR_IMG_FASTFORWARD = SPR_OPENTTD_BASE + 90; static const SpriteID SPR_IMG_SETTINGS = 751; static const SpriteID SPR_IMG_SAVE = 724; static const SpriteID SPR_IMG_SMALLMAP = 708; static const SpriteID SPR_IMG_TOWN = 4077; static const SpriteID SPR_IMG_SUBSIDIES = 679; static const SpriteID SPR_IMG_COMPANY_LIST = 1299; static const SpriteID SPR_IMG_COMPANY_FINANCE = 737; static const SpriteID SPR_IMG_COMPANY_GENERAL = 743; static const SpriteID SPR_IMG_GRAPHS = 745; static const SpriteID SPR_IMG_COMPANY_LEAGUE = 684; static const SpriteID SPR_IMG_SHOW_COUNTOURS = 738; static const SpriteID SPR_IMG_SHOW_VEHICLES = 739; static const SpriteID SPR_IMG_SHOW_ROUTES = 740; static const SpriteID SPR_IMG_INDUSTRY = 741; static const SpriteID SPR_IMG_PLANTTREES = 742; static const SpriteID SPR_IMG_TRAINLIST = 731; static const SpriteID SPR_IMG_TRUCKLIST = 732; static const SpriteID SPR_IMG_SHIPLIST = 733; static const SpriteID SPR_IMG_AIRPLANESLIST = 734; static const SpriteID SPR_IMG_ZOOMIN = 735; static const SpriteID SPR_IMG_ZOOMOUT = 736; static const SpriteID SPR_IMG_BUILDRAIL = 727; static const SpriteID SPR_IMG_BUILDROAD = 728; static const SpriteID SPR_IMG_BUILDWATER = 729; static const SpriteID SPR_IMG_BUILDAIR = 730; static const SpriteID SPR_IMG_LANDSCAPING = 4083; static const SpriteID SPR_IMG_MUSIC = 713; static const SpriteID SPR_IMG_MESSAGES = 680; static const SpriteID SPR_IMG_QUERY = 723; static const SpriteID SPR_IMG_SIGN = 4082; static const SpriteID SPR_IMG_BUY_LAND = 4791; /* OpenTTD in gamescreen */ static const SpriteID SPR_OTTD_O = 4842; static const SpriteID SPR_OTTD_P = 4841; static const SpriteID SPR_OTTD_E = SPR_OPENTTD_BASE + 12; static const SpriteID SPR_OTTD_D = SPR_OPENTTD_BASE + 13; static const SpriteID SPR_OTTD_N = 4839; static const SpriteID SPR_OTTD_T = 4836; /* Letters not used: R,A,S,Y,C (4837, 4838, 4840, 4843, 4844) */ static const SpriteID SPR_HIGHSCORE_CHART_BEGIN = 4804; static const SpriteID SPR_TYCOON_IMG1_BEGIN = 4814; static const SpriteID SPR_TYCOON_IMG2_BEGIN = 4824; /* Industry sprites */ static const SpriteID SPR_IT_SUGAR_MINE_SIEVE = 4775; static const SpriteID SPR_IT_SUGAR_MINE_CLOUDS = 4784; static const SpriteID SPR_IT_SUGAR_MINE_PILE = 4780; static const SpriteID SPR_IT_TOFFEE_QUARRY_TOFFEE = 4766; static const SpriteID SPR_IT_TOFFEE_QUARRY_SHOVEL = 4767; static const SpriteID SPR_IT_BUBBLE_GENERATOR_SPRING = 4746; static const SpriteID SPR_IT_BUBBLE_GENERATOR_BUBBLE = 4747; static const SpriteID SPR_IT_TOY_FACTORY_STAMP_HOLDER = 4717; static const SpriteID SPR_IT_TOY_FACTORY_STAMP = 4718; static const SpriteID SPR_IT_TOY_FACTORY_CLAY = 4719; static const SpriteID SPR_IT_TOY_FACTORY_ROBOT = 4720; static const SpriteID SPR_IT_POWER_PLANT_TRANSFORMERS = 2054; /* small icons of cargo available in station waiting*/ static const SpriteID SPR_CARGO_PASSENGER = 4297; static const SpriteID SPR_CARGO_COAL = 4298; static const SpriteID SPR_CARGO_MAIL = 4299; static const SpriteID SPR_CARGO_OIL = 4300; static const SpriteID SPR_CARGO_LIVESTOCK = 4301; static const SpriteID SPR_CARGO_GOODS = 4302; static const SpriteID SPR_CARGO_GRAIN = 4303; static const SpriteID SPR_CARGO_WOOD = 4304; static const SpriteID SPR_CARGO_IRON_ORE = 4305; static const SpriteID SPR_CARGO_STEEL = 4306; static const SpriteID SPR_CARGO_VALUES_GOLD = 4307; // shared between temperate and arctic static const SpriteID SPR_CARGO_FRUIT = 4308; static const SpriteID SPR_CARGO_COPPER_ORE = 4309; static const SpriteID SPR_CARGO_WATERCOLA = 4310; // shared between desert and toyland static const SpriteID SPR_CARGO_DIAMONDS = 4311; static const SpriteID SPR_CARGO_FOOD = 4312; static const SpriteID SPR_CARGO_PAPER = 4313; static const SpriteID SPR_CARGO_RUBBER = 4314; static const SpriteID SPR_CARGO_CANDY = 4315; static const SpriteID SPR_CARGO_SUGAR = 4316; static const SpriteID SPR_CARGO_TOYS = 4317; static const SpriteID SPR_CARGO_COTTONCANDY = 4318; static const SpriteID SPR_CARGO_FIZZYDRINK = 4319; static const SpriteID SPR_CARGO_TOFFEE = 4320; static const SpriteID SPR_CARGO_BUBBLES = 4321; static const SpriteID SPR_CARGO_PLASTIC = 4322; static const SpriteID SPR_CARGO_BATTERIES = 4323; /* Effect vehicles */ static const SpriteID SPR_BULLDOZER_NE = 1416; static const SpriteID SPR_BULLDOZER_SE = 1417; static const SpriteID SPR_BULLDOZER_SW = 1418; static const SpriteID SPR_BULLDOZER_NW = 1419; static const SpriteID SPR_SMOKE_0 = 2040; static const SpriteID SPR_SMOKE_1 = 2041; static const SpriteID SPR_SMOKE_2 = 2042; static const SpriteID SPR_SMOKE_3 = 2043; static const SpriteID SPR_SMOKE_4 = 2044; static const SpriteID SPR_DIESEL_SMOKE_0 = 3073; static const SpriteID SPR_DIESEL_SMOKE_1 = 3074; static const SpriteID SPR_DIESEL_SMOKE_2 = 3075; static const SpriteID SPR_DIESEL_SMOKE_3 = 3076; static const SpriteID SPR_DIESEL_SMOKE_4 = 3077; static const SpriteID SPR_DIESEL_SMOKE_5 = 3078; static const SpriteID SPR_STEAM_SMOKE_0 = 3079; static const SpriteID SPR_STEAM_SMOKE_1 = 3080; static const SpriteID SPR_STEAM_SMOKE_2 = 3081; static const SpriteID SPR_STEAM_SMOKE_3 = 3082; static const SpriteID SPR_STEAM_SMOKE_4 = 3083; static const SpriteID SPR_ELECTRIC_SPARK_0 = 3084; static const SpriteID SPR_ELECTRIC_SPARK_1 = 3085; static const SpriteID SPR_ELECTRIC_SPARK_2 = 3086; static const SpriteID SPR_ELECTRIC_SPARK_3 = 3087; static const SpriteID SPR_ELECTRIC_SPARK_4 = 3088; static const SpriteID SPR_ELECTRIC_SPARK_5 = 3089; static const SpriteID SPR_CHIMNEY_SMOKE_0 = 3701; static const SpriteID SPR_CHIMNEY_SMOKE_1 = 3702; static const SpriteID SPR_CHIMNEY_SMOKE_2 = 3703; static const SpriteID SPR_CHIMNEY_SMOKE_3 = 3704; static const SpriteID SPR_CHIMNEY_SMOKE_4 = 3705; static const SpriteID SPR_CHIMNEY_SMOKE_5 = 3706; static const SpriteID SPR_CHIMNEY_SMOKE_6 = 3707; static const SpriteID SPR_CHIMNEY_SMOKE_7 = 3708; static const SpriteID SPR_EXPLOSION_LARGE_0 = 3709; static const SpriteID SPR_EXPLOSION_LARGE_1 = 3710; static const SpriteID SPR_EXPLOSION_LARGE_2 = 3711; static const SpriteID SPR_EXPLOSION_LARGE_3 = 3712; static const SpriteID SPR_EXPLOSION_LARGE_4 = 3713; static const SpriteID SPR_EXPLOSION_LARGE_5 = 3714; static const SpriteID SPR_EXPLOSION_LARGE_6 = 3715; static const SpriteID SPR_EXPLOSION_LARGE_7 = 3716; static const SpriteID SPR_EXPLOSION_LARGE_8 = 3717; static const SpriteID SPR_EXPLOSION_LARGE_9 = 3718; static const SpriteID SPR_EXPLOSION_LARGE_A = 3719; static const SpriteID SPR_EXPLOSION_LARGE_B = 3720; static const SpriteID SPR_EXPLOSION_LARGE_C = 3721; static const SpriteID SPR_EXPLOSION_LARGE_D = 3722; static const SpriteID SPR_EXPLOSION_LARGE_E = 3723; static const SpriteID SPR_EXPLOSION_LARGE_F = 3724; static const SpriteID SPR_EXPLOSION_SMALL_0 = 3725; static const SpriteID SPR_EXPLOSION_SMALL_1 = 3726; static const SpriteID SPR_EXPLOSION_SMALL_2 = 3727; static const SpriteID SPR_EXPLOSION_SMALL_3 = 3728; static const SpriteID SPR_EXPLOSION_SMALL_4 = 3729; static const SpriteID SPR_EXPLOSION_SMALL_5 = 3730; static const SpriteID SPR_EXPLOSION_SMALL_6 = 3731; static const SpriteID SPR_EXPLOSION_SMALL_7 = 3732; static const SpriteID SPR_EXPLOSION_SMALL_8 = 3733; static const SpriteID SPR_EXPLOSION_SMALL_9 = 3734; static const SpriteID SPR_EXPLOSION_SMALL_A = 3735; static const SpriteID SPR_EXPLOSION_SMALL_B = 3736; static const SpriteID SPR_BREAKDOWN_SMOKE_0 = 3737; static const SpriteID SPR_BREAKDOWN_SMOKE_1 = 3738; static const SpriteID SPR_BREAKDOWN_SMOKE_2 = 3739; static const SpriteID SPR_BREAKDOWN_SMOKE_3 = 3740; static const SpriteID SPR_BUBBLE_0 = 4748; static const SpriteID SPR_BUBBLE_1 = 4749; static const SpriteID SPR_BUBBLE_2 = 4750; static const SpriteID SPR_BUBBLE_GENERATE_0 = 4751; static const SpriteID SPR_BUBBLE_GENERATE_1 = 4752; static const SpriteID SPR_BUBBLE_GENERATE_2 = 4753; static const SpriteID SPR_BUBBLE_GENERATE_3 = 4754; static const SpriteID SPR_BUBBLE_BURST_0 = 4755; static const SpriteID SPR_BUBBLE_BURST_1 = 4756; static const SpriteID SPR_BUBBLE_BURST_2 = 4757; static const SpriteID SPR_BUBBLE_ABSORB_0 = 4758; static const SpriteID SPR_BUBBLE_ABSORB_1 = 4759; static const SpriteID SPR_BUBBLE_ABSORB_2 = 4760; static const SpriteID SPR_BUBBLE_ABSORB_3 = 4761; static const SpriteID SPR_BUBBLE_ABSORB_4 = 4762; /* Electrified rail build menu */ static const SpriteID SPR_BUILD_NS_ELRAIL = SPR_ELRAIL_BASE + 36; static const SpriteID SPR_BUILD_X_ELRAIL = SPR_ELRAIL_BASE + 37; static const SpriteID SPR_BUILD_EW_ELRAIL = SPR_ELRAIL_BASE + 38; static const SpriteID SPR_BUILD_Y_ELRAIL = SPR_ELRAIL_BASE + 39; static const SpriteID SPR_BUILD_TUNNEL_ELRAIL = SPR_ELRAIL_BASE + 44; /* airport_gui.cpp */ static const SpriteID SPR_IMG_AIRPORT = 744; /* dock_gui.cpp */ static const SpriteID SPR_IMG_SHIP_DEPOT = 748; static const SpriteID SPR_IMG_SHIP_DOCK = 746; static const SpriteID SPR_IMG_BUOY = 693; static const SpriteID SPR_IMG_AQUEDUCT = SPR_OPENTTD_BASE + 145; /* music_gui.cpp */ static const SpriteID SPR_IMG_SKIP_TO_PREV = 709; static const SpriteID SPR_IMG_SKIP_TO_NEXT = 710; static const SpriteID SPR_IMG_STOP_MUSIC = 711; static const SpriteID SPR_IMG_PLAY_MUSIC = 712; /* road_gui.cpp */ static const SpriteID SPR_IMG_ROAD_Y_DIR = 1309; static const SpriteID SPR_IMG_ROAD_X_DIR = 1310; static const SpriteID SPR_IMG_AUTOROAD = SPR_OPENTTD_BASE + 82; static const SpriteID SPR_IMG_ROAD_DEPOT = 1295; static const SpriteID SPR_IMG_BUS_STATION = 749; static const SpriteID SPR_IMG_TRUCK_BAY = 750; static const SpriteID SPR_IMG_BRIDGE = 2594; static const SpriteID SPR_IMG_ROAD_TUNNEL = 2429; static const SpriteID SPR_IMG_REMOVE = 714; static const SpriteID SPR_IMG_ROAD_ONE_WAY = SPR_OPENTTD_BASE + 134; static const SpriteID SPR_IMG_TRAMWAY_Y_DIR = SPR_TRAMWAY_BASE + 0; static const SpriteID SPR_IMG_TRAMWAY_X_DIR = SPR_TRAMWAY_BASE + 1; static const SpriteID SPR_IMG_AUTOTRAM = SPR_OPENTTD_BASE + 84; /* rail_gui.cpp */ static const SpriteID SPR_IMG_RAIL_NS = 1251; static const SpriteID SPR_IMG_RAIL_NE = 1252; static const SpriteID SPR_IMG_RAIL_EW = 1253; static const SpriteID SPR_IMG_RAIL_NW = 1254; static const SpriteID SPR_IMG_AUTORAIL = SPR_OPENTTD_BASE + 53; static const SpriteID SPR_IMG_AUTOELRAIL = SPR_OPENTTD_BASE + 57; static const SpriteID SPR_IMG_AUTOMONO = SPR_OPENTTD_BASE + 63; static const SpriteID SPR_IMG_AUTOMAGLEV = SPR_OPENTTD_BASE + 69; static const SpriteID SPR_IMG_WAYPOINT = SPR_OPENTTD_BASE + 76; static const SpriteID SPR_IMG_DEPOT_RAIL = 1294; static const SpriteID SPR_IMG_DEPOT_ELRAIL = SPR_OPENTTD_BASE + 61; static const SpriteID SPR_IMG_DEPOT_MONO = SPR_OPENTTD_BASE + 67; static const SpriteID SPR_IMG_DEPOT_MAGLEV = SPR_OPENTTD_BASE + 73; static const SpriteID SPR_IMG_RAIL_STATION = 1298; static const SpriteID SPR_IMG_RAIL_SIGNALS = 1291; static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_NORM = 1287; static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_ENTRY = SPR_SIGNALS_BASE + 12; static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_EXIT = SPR_SIGNALS_BASE + 28; static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_COMBO = SPR_SIGNALS_BASE + 44; static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_PBS = SPR_SIGNALS_BASE + 124; static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_PBS_OWAY = SPR_SIGNALS_BASE + 140; static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_NORM = SPR_SIGNALS_BASE + 60; static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_ENTRY = SPR_SIGNALS_BASE + 76; static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_EXIT = SPR_SIGNALS_BASE + 92; static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_COMBO = SPR_SIGNALS_BASE + 108; static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_PBS = SPR_SIGNALS_BASE + 188; static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_PBS_OWAY= SPR_SIGNALS_BASE + 204; static const SpriteID SPR_IMG_SIGNAL_CONVERT = SPR_OPENTTD_BASE + 135; static const SpriteID SPR_IMG_TUNNEL_RAIL = 2430; static const SpriteID SPR_IMG_TUNNEL_MONO = 2431; static const SpriteID SPR_IMG_TUNNEL_MAGLEV = 2432; static const SpriteID SPR_IMG_CONVERT_RAIL = SPR_OPENTTD_BASE + 55; static const SpriteID SPR_IMG_CONVERT_ELRAIL = SPR_OPENTTD_BASE + 59; static const SpriteID SPR_IMG_CONVERT_MONO = SPR_OPENTTD_BASE + 65; static const SpriteID SPR_IMG_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 71; /* intro_gui.cpp, genworld_gui.cpp */ static const SpriteID SPR_SELECT_TEMPERATE = 4882; static const SpriteID SPR_SELECT_TEMPERATE_PUSHED = 4883; static const SpriteID SPR_SELECT_SUB_ARCTIC = 4884; static const SpriteID SPR_SELECT_SUB_ARCTIC_PUSHED = 4885; static const SpriteID SPR_SELECT_SUB_TROPICAL = 4886; static const SpriteID SPR_SELECT_SUB_TROPICAL_PUSHED = 4887; static const SpriteID SPR_SELECT_TOYLAND = 4888; static const SpriteID SPR_SELECT_TOYLAND_PUSHED = 4889; /** Cursor sprite numbers */ /* Terraform * Cursors */ static const CursorID SPR_CURSOR_MOUSE = 0; static const CursorID SPR_CURSOR_ZZZ = 1; static const CursorID SPR_CURSOR_BUOY = 702; static const CursorID SPR_CURSOR_QUERY = 719; static const CursorID SPR_CURSOR_HQ = 720; static const CursorID SPR_CURSOR_SHIP_DEPOT = 721; static const CursorID SPR_CURSOR_SIGN = 722; static const CursorID SPR_CURSOR_TREE = 2010; static const CursorID SPR_CURSOR_BUY_LAND = 4792; static const CursorID SPR_CURSOR_LEVEL_LAND = SPR_OPENTTD_BASE + 92; static const CursorID SPR_CURSOR_TOWN = 4080; static const CursorID SPR_CURSOR_INDUSTRY = 4081; static const CursorID SPR_CURSOR_ROCKY_AREA = 4087; static const CursorID SPR_CURSOR_DESERT = 4088; static const CursorID SPR_CURSOR_TRANSMITTER = 4089; /* airport cursors */ static const CursorID SPR_CURSOR_AIRPORT = 2724; /* dock cursors */ static const CursorID SPR_CURSOR_DOCK = 3668; static const CursorID SPR_CURSOR_CANAL = SPR_OPENTTD_BASE + 89; static const CursorID SPR_CURSOR_LOCK = SPR_OPENTTD_BASE + 87; static const CursorID SPR_CURSOR_RIVER = SPR_OPENTTD_BASE + 137; static const CursorID SPR_CURSOR_AQUEDUCT = SPR_OPENTTD_BASE + 146; /* shared road & rail cursors */ static const CursorID SPR_CURSOR_BRIDGE = 2593; /* rail cursors */ static const CursorID SPR_CURSOR_NS_TRACK = 1263; static const CursorID SPR_CURSOR_SWNE_TRACK = 1264; static const CursorID SPR_CURSOR_EW_TRACK = 1265; static const CursorID SPR_CURSOR_NWSE_TRACK = 1266; static const CursorID SPR_CURSOR_NS_MONO = 1267; static const CursorID SPR_CURSOR_SWNE_MONO = 1268; static const CursorID SPR_CURSOR_EW_MONO = 1269; static const CursorID SPR_CURSOR_NWSE_MONO = 1270; static const CursorID SPR_CURSOR_NS_MAGLEV = 1271; static const CursorID SPR_CURSOR_SWNE_MAGLEV = 1272; static const CursorID SPR_CURSOR_EW_MAGLEV = 1273; static const CursorID SPR_CURSOR_NWSE_MAGLEV = 1274; static const CursorID SPR_CURSOR_NS_ELRAIL = SPR_ELRAIL_BASE + 40; static const CursorID SPR_CURSOR_SWNE_ELRAIL = SPR_ELRAIL_BASE + 41; static const CursorID SPR_CURSOR_EW_ELRAIL = SPR_ELRAIL_BASE + 42; static const CursorID SPR_CURSOR_NWSE_ELRAIL = SPR_ELRAIL_BASE + 43; static const CursorID SPR_CURSOR_RAIL_STATION = 1300; static const CursorID SPR_CURSOR_TUNNEL_RAIL = 2434; static const CursorID SPR_CURSOR_TUNNEL_ELRAIL = SPR_ELRAIL_BASE + 45; static const CursorID SPR_CURSOR_TUNNEL_MONO = 2435; static const CursorID SPR_CURSOR_TUNNEL_MAGLEV = 2436; static const CursorID SPR_CURSOR_AUTORAIL = SPR_OPENTTD_BASE + 54; static const CursorID SPR_CURSOR_AUTOELRAIL = SPR_OPENTTD_BASE + 58; static const CursorID SPR_CURSOR_AUTOMONO = SPR_OPENTTD_BASE + 64; static const CursorID SPR_CURSOR_AUTOMAGLEV = SPR_OPENTTD_BASE + 70; static const CursorID SPR_CURSOR_WAYPOINT = SPR_OPENTTD_BASE + 77; static const CursorID SPR_CURSOR_RAIL_DEPOT = 1296; static const CursorID SPR_CURSOR_ELRAIL_DEPOT = SPR_OPENTTD_BASE + 62; static const CursorID SPR_CURSOR_MONO_DEPOT = SPR_OPENTTD_BASE + 68; static const CursorID SPR_CURSOR_MAGLEV_DEPOT = SPR_OPENTTD_BASE + 74; static const CursorID SPR_CURSOR_CONVERT_RAIL = SPR_OPENTTD_BASE + 56; static const CursorID SPR_CURSOR_CONVERT_ELRAIL = SPR_OPENTTD_BASE + 60; static const CursorID SPR_CURSOR_CONVERT_MONO = SPR_OPENTTD_BASE + 66; static const CursorID SPR_CURSOR_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 72; /* road cursors */ static const CursorID SPR_CURSOR_ROAD_NESW = 1311; static const CursorID SPR_CURSOR_ROAD_NWSE = 1312; static const CursorID SPR_CURSOR_AUTOROAD = SPR_OPENTTD_BASE + 83; static const CursorID SPR_CURSOR_TRAMWAY_NESW = SPR_TRAMWAY_BASE + 2; static const CursorID SPR_CURSOR_TRAMWAY_NWSE = SPR_TRAMWAY_BASE + 3; static const CursorID SPR_CURSOR_AUTOTRAM = SPR_OPENTTD_BASE + 85; static const CursorID SPR_CURSOR_ROAD_DEPOT = 1297; static const CursorID SPR_CURSOR_BUS_STATION = 2725; static const CursorID SPR_CURSOR_TRUCK_STATION = 2726; static const CursorID SPR_CURSOR_ROAD_TUNNEL = 2433; static const CursorID SPR_CURSOR_CLONE_TRAIN = SPR_OPENTTD_BASE + 110; static const CursorID SPR_CURSOR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 111; static const CursorID SPR_CURSOR_CLONE_SHIP = SPR_OPENTTD_BASE + 112; static const CursorID SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 113; /** Animation macro in table/animcursors.h (_animcursors[]) */ static const CursorID SPR_CURSOR_DEMOLISH_FIRST = 704; static const CursorID SPR_CURSOR_DEMOLISH_1 = 705; static const CursorID SPR_CURSOR_DEMOLISH_2 = 706; static const CursorID SPR_CURSOR_DEMOLISH_LAST = 707; static const CursorID SPR_CURSOR_LOWERLAND_FIRST = 699; static const CursorID SPR_CURSOR_LOWERLAND_1 = 700; static const CursorID SPR_CURSOR_LOWERLAND_LAST = 701; static const CursorID SPR_CURSOR_RAISELAND_FIRST = 696; static const CursorID SPR_CURSOR_RAISELAND_1 = 697; static const CursorID SPR_CURSOR_RAISELAND_LAST = 698; static const CursorID SPR_CURSOR_PICKSTATION_FIRST = 716; static const CursorID SPR_CURSOR_PICKSTATION_1 = 717; static const CursorID SPR_CURSOR_PICKSTATION_LAST = 718; static const CursorID SPR_CURSOR_BUILDSIGNALS_FIRST = 1292; static const CursorID SPR_CURSOR_BUILDSIGNALS_LAST = 1293; /** Flag for saying a cursor sprite is an animated cursor. */ static const CursorID ANIMCURSOR_FLAG = 1U << 31; static const CursorID ANIMCURSOR_DEMOLISH = ANIMCURSOR_FLAG | 0; ///< 704 - 707 - demolish dynamite static const CursorID ANIMCURSOR_LOWERLAND = ANIMCURSOR_FLAG | 1; ///< 699 - 701 - lower land tool static const CursorID ANIMCURSOR_RAISELAND = ANIMCURSOR_FLAG | 2; ///< 696 - 698 - raise land tool static const CursorID ANIMCURSOR_PICKSTATION = ANIMCURSOR_FLAG | 3; ///< 716 - 718 - goto-order icon static const CursorID ANIMCURSOR_BUILDSIGNALS = ANIMCURSOR_FLAG | 4; ///< 1292 - 1293 - build signal /** * Bitmask setup. For the graphics system, 32 bits are used to define * the sprite to be displayed. This variable contains various information:

*

  • SPRITE_WIDTH is the number of bits used for the actual sprite to be displayed. * This always starts at bit 0.
  • *
  • TRANSPARENT_BIT is the bit number which toggles sprite transparency
  • *
  • RECOLOUR_BIT toggles the recolouring system
  • *
  • PALETTE_SPRITE_WIDTH and PALETTE_SPRITE_START determine the position and number of * bits used for the recolouring process. For transparency, it must be 0x322.
*/ enum SpriteSetup { TRANSPARENT_BIT = 31, ///< toggles transparency in the sprite RECOLOUR_BIT = 30, ///< toggles recolouring in the sprite CUSTOM_BIT = 29, OPAQUE_BIT = 28, PALETTE_WIDTH = 24, ///< number of bits of the sprite containing the recolour palette SPRITE_WIDTH = 24, ///< number of bits for the sprite number }; /** * these masks change the colours of the palette for a sprite. * Apart from this bit, a sprite number is needed to define * the palette used for recolouring. This palette is stored * in the bits marked by PALETTE_SPRITE_MASK. * @note Do not modify this enum. Alter SpriteSetup instead * @see SpriteSetup */ enum Modifiers { SPRITE_MODIFIER_CUSTOM_SPRITE = CUSTOM_BIT, ///< Set when a sprite originates from an Action 1 SPRITE_MODIFIER_OPAQUE = OPAQUE_BIT, ///< Set when a sprite must not ever be displayed transparently PALETTE_MODIFIER_TRANSPARENT = TRANSPARENT_BIT, ///< when a sprite is to be displayed transparently, this bit needs to be set. PALETTE_MODIFIER_COLOUR = RECOLOUR_BIT, ///< this bit is set when a recolouring process is in action }; /** * Masks needed for sprite operations. * @note Do not modify this enum. Alter SpriteSetup instead * @see SpriteSetup */ enum SpriteMasks { MAX_SPRITES = 1 << SPRITE_WIDTH, ///< Maximum number of sprites that can be loaded at a given time SPRITE_MASK = MAX_SPRITES - 1, ///< The mask to for the main sprite MAX_PALETTES = 1 << PALETTE_WIDTH, PALETTE_MASK = MAX_PALETTES - 1, ///< The mask for the auxiliary sprite (the one that takes care of recolouring) }; assert_compile( (1 << TRANSPARENT_BIT & SPRITE_MASK) == 0 ); assert_compile( (1 << RECOLOUR_BIT & SPRITE_MASK) == 0 ); assert_compile( TRANSPARENT_BIT != RECOLOUR_BIT ); assert_compile( (1 << TRANSPARENT_BIT & PALETTE_MASK) == 0); assert_compile( (1 << RECOLOUR_BIT & PALETTE_MASK) == 0 ); static const PaletteID PAL_NONE = 0; static const PaletteID PALETTE_TILE_RED_PULSATING = 771; ///< pulsating red tile drawn if you try to build a wrong tunnel or raise/lower land where it is not possible static const PaletteID PALETTE_SEL_TILE_RED = 772; ///< makes a square red. is used when removing rails or other stuff static const PaletteID PALETTE_SEL_TILE_BLUE = 773; ///< This draws a blueish square (catchment areas for example) /* Company re-colour sprites */ static const PaletteID PALETTE_RECOLOUR_START = 775; ///< First recolour sprite for company colours static const PaletteID PALETTE_TO_DARK_BLUE = 775; static const PaletteID PALETTE_TO_PALE_GREEN = 776; static const PaletteID PALETTE_TO_PINK = 777; static const PaletteID PALETTE_TO_YELLOW = 778; static const PaletteID PALETTE_TO_RED = 779; static const PaletteID PALETTE_TO_LIGHT_BLUE = 780; static const PaletteID PALETTE_TO_GREEN = 781; static const PaletteID PALETTE_TO_DARK_GREEN = 782; static const PaletteID PALETTE_TO_BLUE = 783; static const PaletteID PALETTE_TO_CREAM = 784; /* maybe don't use as company colour because it doesn't display in the graphs? */ static const PaletteID PALETTE_TO_MAUVE = 785; static const PaletteID PALETTE_TO_PURPLE = 786; static const PaletteID PALETTE_TO_ORANGE = 787; static const PaletteID PALETTE_TO_BROWN = 788; static const PaletteID PALETTE_TO_GREY = 789; static const PaletteID PALETTE_TO_WHITE = 790; static const PaletteID PALETTE_TO_BARE_LAND = 791; ///< sets colour to bare land stuff for rail, road and crossings /* recolour sprites 792-794 are not used */ static const PaletteID PALETTE_TO_STRUCT_BLUE = 795; ///< sets bridge or structure to blue (e.g. some town houses) static const PaletteID PALETTE_TO_STRUCT_BROWN = 796; ///< sets bridge or structure to brown (e.g. cantilever bridge) static const PaletteID PALETTE_TO_STRUCT_WHITE = 797; ///< sets bridge or structure to white (e.g. some town houses) static const PaletteID PALETTE_TO_STRUCT_RED = 798; ///< sets bridge or structure to red (e.g. concrete and cantilever bridge) static const PaletteID PALETTE_TO_STRUCT_GREEN = 799; ///< sets bridge or structure to green (e.g. bridge) static const PaletteID PALETTE_TO_STRUCT_CONCRETE = 800; ///< Sets the suspension bridge to concrete, also other structures use it static const PaletteID PALETTE_TO_STRUCT_YELLOW = 801; ///< Sets the bridge colour to yellow (suspension and tubular) static const PaletteID PALETTE_TO_TRANSPARENT = 802; ///< This sets the sprite to transparent static const PaletteID PALETTE_NEWSPAPER = 803; ///< Recolour sprite for newspaper-greying. static const PaletteID PALETTE_CRASH = 804; ///< Recolour sprite greying of crashed vehicles. /* Two recolourings only used by the church */ static const PaletteID PALETTE_CHURCH_RED = 1438; ///< Recolour sprite for reddish churches static const PaletteID PALETTE_CHURCH_CREAM = 1439; ///< Recolour sprite for white churches #endif /* SPRITES_H */ openttd-1.3.3/src/table/engines.h0000644000000000000000000014522512246102566015365 0ustar rootroot/* $Id: engines.h 25168 2013-04-08 20:52:32Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file table/engines.h * This file contains all the data for vehicles */ #ifndef ENGINES_H #define ENGINES_H /** * Writes the properties of a train into the EngineInfo struct. * @see EngineInfo * @param a base introduction date (days since 1920-01-01) * @param b decay speed * @param c life length (years) * @param d base life (years) * @param e cargo type * @param f Bitmask of the climates * @note the 5 between b and f is the load amount */ #define MT(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_FLIPS, 0, 0, STR_EMPTY, CARGO_AGING_TICKS } /** * Writes the properties of a train carriage into the EngineInfo struct. * @param a base introduction date (days since 1920-01-01) * @param b decay speed * @param c life length (years) * @param d base life (years) * @param e cargo type * @param f Bitmask of the climates * @see MT * @note the 5 between b and f is the load amount */ #define MW(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 1 << EF_RAIL_FLIPS, 0, 0, STR_EMPTY, CARGO_AGING_TICKS } /** * Writes the properties of a road vehicle into the EngineInfo struct. * @see EngineInfo * @param a base introduction date (days since 1920-01-01) * @param b decay speed * @param c life length (years) * @param d base life (years) * @param e cargo type * @param f Bitmask of the climates * @note the 5 between b and f is the load amount */ #define MR(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 5, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS } /** * Writes the properties of a ship into the EngineInfo struct. * @param a base introduction date (days since 1920-01-01) * @param b decay speed * @param c life length (years) * @param d base life (years) * @param e cargo type * @param f Bitmask of the climates * @note the 10 between b and f is the load amount */ #define MS(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 10, f, e, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS } /** * Writes the properties of an aeroplane into the EngineInfo struct. * @param a base introduction date (days since 1920-01-01) * @param b decay speed * @param c life length (years) * @param d base life (years) * @param e Bitmask of the climates * @note the 20 between b and e is the load amount */ #define MA(a, b, c, d, e) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, c, d, b, 20, e, CT_INVALID, 0, 8, 0, 0, 0, STR_EMPTY, CARGO_AGING_TICKS } /* Climates * T = Temperate * A = Sub-Arctic * S = Sub-Tropic * Y = Toyland */ #define T 1 #define A 2 #define S 4 #define Y 8 static const EngineInfo _orig_engine_info[] = { /* base_intro base_life * | decay_speed cargo_type * | | lifelength | climates * | | | | | | */ MT( 1827, 20, 15, 30, 0 , T ), // 0 Kirby Paul Tank (Steam) MT( 12784, 20, 22, 30, 0 , A|S ), // 1 MJS 250 (Diesel) MT( 9497, 20, 20, 50, 0 , Y), // 2 Ploddyphut Choo-Choo MT( 11688, 20, 20, 30, 0 , Y), // 3 Powernaut Choo-Choo MT( 16802, 20, 20, 30, 0 , Y), // 4 Mightymover Choo-Choo MT( 18993, 20, 20, 30, 0 , Y), // 5 Ploddyphut Diesel MT( 20820, 20, 20, 30, 0 , Y), // 6 Powernaut Diesel MT( 8766, 20, 20, 30, 0 , A|S ), // 7 Wills 2-8-0 (Steam) MT( 5114, 20, 21, 30, 0 , T ), // 8 Chaney 'Jubilee' (Steam) MT( 5479, 20, 20, 30, 0 , T ), // 9 Ginzu 'A4' (Steam) MT( 12419, 20, 23, 25, 0 , T ), // 10 SH '8P' (Steam) MT( 13149, 20, 12, 30, CT_PASSENGERS , T ), // 11 Manley-Morel DMU (Diesel) MT( 23376, 20, 15, 35, CT_PASSENGERS , T ), // 12 'Dash' (Diesel) MT( 14976, 20, 18, 28, 0 , T ), // 13 SH/Hendry '25' (Diesel) MT( 14245, 20, 20, 30, 0 , T ), // 14 UU '37' (Diesel) MT( 15341, 20, 22, 33, 0 , T ), // 15 Floss '47' (Diesel) MT( 14976, 20, 20, 25, 0 , A|S ), // 16 CS 4000 (Diesel) MT( 16437, 20, 20, 30, 0 , A|S ), // 17 CS 2400 (Diesel) MT( 18993, 20, 22, 30, 0 , A|S ), // 18 Centennial (Diesel) MT( 13880, 20, 22, 30, 0 , A|S ), // 19 Kelling 3100 (Diesel) MT( 20454, 20, 22, 30, 0 , A|S ), // 20 Turner Turbo (Diesel) MT( 16071, 20, 22, 30, 0 , A|S ), // 21 MJS 1000 (Diesel) MT( 20820, 20, 20, 25, CT_MAIL , T ), // 22 SH '125' (Diesel) MT( 16437, 20, 23, 30, 0 , T ), // 23 SH '30' (Electric) MT( 19359, 20, 23, 80, 0 , T ), // 24 SH '40' (Electric) MT( 23376, 20, 25, 30, 0 , T ), // 25 'T.I.M.' (Electric) MT( 26298, 20, 25, 50, 0 , T ), // 26 'AsiaStar' (Electric) MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 27 Passenger Carriage MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 28 Mail Van MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 29 Coal Truck MW( 1827, 20, 20, 50, CT_OIL , T|A|S ), // 30 Oil Tanker MW( 1827, 20, 20, 50, CT_LIVESTOCK , T|A ), // 31 Livestock Van MW( 1827, 20, 20, 50, CT_GOODS , T|A|S ), // 32 Goods Van MW( 1827, 20, 20, 50, CT_GRAIN , T|A|S ), // 33 Grain Hopper MW( 1827, 20, 20, 50, CT_WOOD , T|A|S ), // 34 Wood Truck MW( 1827, 20, 20, 50, CT_IRON_ORE , T ), // 35 Iron Ore Hopper MW( 1827, 20, 20, 50, CT_STEEL , T ), // 36 Steel Truck MW( 1827, 20, 20, 50, CT_VALUABLES , T|A|S ), // 37 Armoured Van MW( 1827, 20, 20, 50, CT_FOOD , A|S ), // 38 Food Van MW( 1827, 20, 20, 50, CT_PAPER , A ), // 39 Paper Truck MW( 1827, 20, 20, 50, CT_COPPER_ORE , S ), // 40 Copper Ore Hopper MW( 1827, 20, 20, 50, CT_WATER , S ), // 41 Water Tanker MW( 1827, 20, 20, 50, CT_FRUIT , S ), // 42 Fruit Truck MW( 1827, 20, 20, 50, CT_RUBBER , S ), // 43 Rubber Truck MW( 1827, 20, 20, 50, CT_SUGAR , Y), // 44 Sugar Truck MW( 1827, 20, 20, 50, CT_COTTON_CANDY, Y), // 45 Candyfloss Hopper MW( 1827, 20, 20, 50, CT_TOFFEE , Y), // 46 Toffee Hopper MW( 1827, 20, 20, 50, CT_BUBBLES , Y), // 47 Bubble Van MW( 1827, 20, 20, 50, CT_COLA , Y), // 48 Cola Tanker MW( 1827, 20, 20, 50, CT_CANDY , Y), // 49 Sweet Van MW( 1827, 20, 20, 50, CT_TOYS , Y), // 50 Toy Van MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 51 Battery Truck MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 52 Fizzy Drink Truck MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 53 Plastic Truck MT( 28490, 20, 20, 50, 0 , T|A|S ), // 54 'X2001' (Electric) MT( 31047, 20, 20, 50, CT_PASSENGERS , T|A|S ), // 55 'Millennium Z1' (Electric) MT( 28855, 20, 20, 50, 0 , Y), // 56 Wizzowow Z99 MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 57 Passenger Carriage MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 58 Mail Van MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 59 Coal Truck MW( 1827, 20, 20, 50, CT_OIL , T|A|S ), // 60 Oil Tanker MW( 1827, 20, 20, 50, CT_LIVESTOCK , T|A ), // 61 Livestock Van MW( 1827, 20, 20, 50, CT_GOODS , T|A|S ), // 62 Goods Van MW( 1827, 20, 20, 50, CT_GRAIN , T|A|S ), // 63 Grain Hopper MW( 1827, 20, 20, 50, CT_WOOD , T|A|S ), // 64 Wood Truck MW( 1827, 20, 20, 50, CT_IRON_ORE , T ), // 65 Iron Ore Hopper MW( 1827, 20, 20, 50, CT_STEEL , T ), // 66 Steel Truck MW( 1827, 20, 20, 50, CT_VALUABLES , T|A|S ), // 67 Armoured Van MW( 1827, 20, 20, 50, CT_FOOD , A|S ), // 68 Food Van MW( 1827, 20, 20, 50, CT_PAPER , A ), // 69 Paper Truck MW( 1827, 20, 20, 50, CT_COPPER_ORE , S ), // 70 Copper Ore Hopper MW( 1827, 20, 20, 50, CT_WATER , S ), // 71 Water Tanker MW( 1827, 20, 20, 50, CT_FRUIT , S ), // 72 Fruit Truck MW( 1827, 20, 20, 50, CT_RUBBER , S ), // 73 Rubber Truck MW( 1827, 20, 20, 50, CT_SUGAR , Y), // 74 Sugar Truck MW( 1827, 20, 20, 50, CT_COTTON_CANDY, Y), // 75 Candyfloss Hopper MW( 1827, 20, 20, 50, CT_TOFFEE , Y), // 76 Toffee Hopper MW( 1827, 20, 20, 50, CT_BUBBLES , Y), // 77 Bubble Van MW( 1827, 20, 20, 50, CT_COLA , Y), // 78 Cola Tanker MW( 1827, 20, 20, 50, CT_CANDY , Y), // 79 Sweet Van MW( 1827, 20, 20, 50, CT_TOYS , Y), // 80 Toy Van MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 81 Battery Truck MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 82 Fizzy Drink Truck MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 83 Plastic Truck MT( 36525, 20, 20, 50, 0 , T|A|S ), // 84 Lev1 'Leviathan' (Electric) MT( 39447, 20, 20, 50, 0 , T|A|S ), // 85 Lev2 'Cyclops' (Electric) MT( 42004, 20, 20, 50, 0 , T|A|S ), // 86 Lev3 'Pegasus' (Electric) MT( 42735, 20, 20, 50, 0 , T|A|S ), // 87 Lev4 'Chimaera' (Electric) MT( 36891, 20, 20, 60, 0 , Y), // 88 Wizzowow Rocketeer MW( 1827, 20, 20, 50, CT_PASSENGERS , T|A|S|Y), // 89 Passenger Carriage MW( 1827, 20, 20, 50, CT_MAIL , T|A|S|Y), // 90 Mail Van MW( 1827, 20, 20, 50, CT_COAL , T|A ), // 91 Coal Truck MW( 1827, 20, 20, 50, CT_OIL , T|A|S ), // 92 Oil Tanker MW( 1827, 20, 20, 50, CT_LIVESTOCK , T|A ), // 93 Livestock Van MW( 1827, 20, 20, 50, CT_GOODS , T|A|S ), // 94 Goods Van MW( 1827, 20, 20, 50, CT_GRAIN , T|A|S ), // 95 Grain Hopper MW( 1827, 20, 20, 50, CT_WOOD , T|A|S ), // 96 Wood Truck MW( 1827, 20, 20, 50, CT_IRON_ORE , T ), // 97 Iron Ore Hopper MW( 1827, 20, 20, 50, CT_STEEL , T ), // 98 Steel Truck MW( 1827, 20, 20, 50, CT_VALUABLES , T|A|S ), // 99 Armoured Van MW( 1827, 20, 20, 50, CT_FOOD , A|S ), // 100 Food Van MW( 1827, 20, 20, 50, CT_PAPER , A ), // 101 Paper Truck MW( 1827, 20, 20, 50, CT_COPPER_ORE , S ), // 102 Copper Ore Hopper MW( 1827, 20, 20, 50, CT_WATER , S ), // 103 Water Tanker MW( 1827, 20, 20, 50, CT_FRUIT , S ), // 104 Fruit Truck MW( 1827, 20, 20, 50, CT_RUBBER , S ), // 105 Rubber Truck MW( 1827, 20, 20, 50, CT_SUGAR , Y), // 106 Sugar Truck MW( 1827, 20, 20, 50, CT_COTTON_CANDY, Y), // 107 Candyfloss Hopper MW( 1827, 20, 20, 50, CT_TOFFEE , Y), // 108 Toffee Hopper MW( 1827, 20, 20, 50, CT_BUBBLES , Y), // 109 Bubble Van MW( 1827, 20, 20, 50, CT_COLA , Y), // 110 Cola Tanker MW( 1827, 20, 20, 50, CT_CANDY , Y), // 111 Sweet Van MW( 1827, 20, 20, 50, CT_TOYS , Y), // 112 Toy Van MW( 1827, 20, 20, 50, CT_BATTERIES , Y), // 113 Battery Truck MW( 1827, 20, 20, 50, CT_FIZZY_DRINKS, Y), // 114 Fizzy Drink Truck MW( 1827, 20, 20, 50, CT_PLASTIC , Y), // 115 Plastic Truck MR( 3378, 20, 12, 40, CT_PASSENGERS , T|A|S ), // 116 MPS Regal Bus MR( 16071, 20, 15, 30, CT_PASSENGERS , T|A|S ), // 117 Hereford Leopard Bus MR( 24107, 20, 15, 40, CT_PASSENGERS , T|A|S ), // 118 Foster Bus MR( 32142, 20, 15, 80, CT_PASSENGERS , T|A|S ), // 119 Foster MkII Superbus MR( 9132, 20, 15, 40, CT_PASSENGERS , Y), // 120 Ploddyphut MkI Bus MR( 18993, 20, 15, 40, CT_PASSENGERS , Y), // 121 Ploddyphut MkII Bus MR( 32873, 20, 15, 80, CT_PASSENGERS , Y), // 122 Ploddyphut MkIII Bus MR( 5479, 20, 15, 55, CT_COAL , T|A ), // 123 Balogh Coal Truck MR( 20089, 20, 15, 55, CT_COAL , T|A ), // 124 Uhl Coal Truck MR( 33969, 20, 15, 85, CT_COAL , T|A ), // 125 DW Coal Truck MR( 5479, 20, 15, 55, CT_MAIL , T|A|S ), // 126 MPS Mail Truck MR( 21550, 20, 15, 55, CT_MAIL , T|A|S ), // 127 Reynard Mail Truck MR( 35795, 20, 15, 85, CT_MAIL , T|A|S ), // 128 Perry Mail Truck MR( 5479, 20, 15, 55, CT_MAIL , Y), // 129 MightyMover Mail Truck MR( 21550, 20, 15, 55, CT_MAIL , Y), // 130 Powernaught Mail Truck MR( 35795, 20, 15, 85, CT_MAIL , Y), // 131 Wizzowow Mail Truck MR( 5479, 20, 15, 55, CT_OIL , T|A|S ), // 132 Witcombe Oil Tanker MR( 19359, 20, 15, 55, CT_OIL , T|A|S ), // 133 Foster Oil Tanker MR( 31047, 20, 15, 85, CT_OIL , T|A|S ), // 134 Perry Oil Tanker MR( 5479, 20, 15, 55, CT_LIVESTOCK , T|A ), // 135 Talbott Livestock Van MR( 21915, 20, 15, 55, CT_LIVESTOCK , T|A ), // 136 Uhl Livestock Van MR( 37256, 20, 15, 85, CT_LIVESTOCK , T|A ), // 137 Foster Livestock Van MR( 5479, 20, 15, 55, CT_GOODS , T|A|S ), // 138 Balogh Goods Truck MR( 19724, 20, 15, 55, CT_GOODS , T|A|S ), // 139 Craighead Goods Truck MR( 31047, 20, 15, 85, CT_GOODS , T|A|S ), // 140 Goss Goods Truck MR( 5479, 20, 15, 55, CT_GRAIN , T|A|S ), // 141 Hereford Grain Truck MR( 21185, 20, 15, 55, CT_GRAIN , T|A|S ), // 142 Thomas Grain Truck MR( 32873, 20, 15, 85, CT_GRAIN , T|A|S ), // 143 Goss Grain Truck MR( 5479, 20, 15, 55, CT_WOOD , T|A|S ), // 144 Witcombe Wood Truck MR( 19724, 20, 15, 55, CT_WOOD , T|A|S ), // 145 Foster Wood Truck MR( 35430, 20, 15, 85, CT_WOOD , T|A|S ), // 146 Moreland Wood Truck MR( 5479, 20, 15, 55, CT_IRON_ORE , T ), // 147 MPS Iron Ore Truck MR( 20820, 20, 15, 55, CT_IRON_ORE , T ), // 148 Uhl Iron Ore Truck MR( 33238, 20, 15, 85, CT_IRON_ORE , T ), // 149 Chippy Iron Ore Truck MR( 5479, 20, 15, 55, CT_STEEL , T ), // 150 Balogh Steel Truck MR( 21185, 20, 15, 55, CT_STEEL , T ), // 151 Uhl Steel Truck MR( 31777, 20, 15, 85, CT_STEEL , T ), // 152 Kelling Steel Truck MR( 5479, 20, 15, 55, CT_VALUABLES , T|A|S ), // 153 Balogh Armoured Truck MR( 22281, 20, 15, 55, CT_VALUABLES , T|A|S ), // 154 Uhl Armoured Truck MR( 33603, 20, 15, 85, CT_VALUABLES , T|A|S ), // 155 Foster Armoured Truck MR( 5479, 20, 15, 55, CT_FOOD , A|S ), // 156 Foster Food Van MR( 18628, 20, 15, 55, CT_FOOD , A|S ), // 157 Perry Food Van MR( 30681, 20, 15, 85, CT_FOOD , A|S ), // 158 Chippy Food Van MR( 5479, 20, 15, 55, CT_PAPER , A ), // 159 Uhl Paper Truck MR( 21185, 20, 15, 55, CT_PAPER , A ), // 160 Balogh Paper Truck MR( 31777, 20, 15, 85, CT_PAPER , A ), // 161 MPS Paper Truck MR( 5479, 20, 15, 55, CT_COPPER_ORE , S ), // 162 MPS Copper Ore Truck MR( 20820, 20, 15, 55, CT_COPPER_ORE , S ), // 163 Uhl Copper Ore Truck MR( 33238, 20, 15, 85, CT_COPPER_ORE , S ), // 164 Goss Copper Ore Truck MR( 5479, 20, 15, 55, CT_WATER , S ), // 165 Uhl Water Tanker MR( 20970, 20, 15, 55, CT_WATER , S ), // 166 Balogh Water Tanker MR( 33388, 20, 15, 85, CT_WATER , S ), // 167 MPS Water Tanker MR( 5479, 20, 15, 55, CT_FRUIT , S ), // 168 Balogh Fruit Truck MR( 21335, 20, 15, 55, CT_FRUIT , S ), // 169 Uhl Fruit Truck MR( 33753, 20, 15, 85, CT_FRUIT , S ), // 170 Kelling Fruit Truck MR( 5479, 20, 15, 55, CT_RUBBER , S ), // 171 Balogh Rubber Truck MR( 20604, 20, 15, 55, CT_RUBBER , S ), // 172 Uhl Rubber Truck MR( 33023, 20, 15, 85, CT_RUBBER , S ), // 173 RMT Rubber Truck MR( 5479, 20, 15, 55, CT_SUGAR , Y), // 174 MightyMover Sugar Truck MR( 19724, 20, 15, 55, CT_SUGAR , Y), // 175 Powernaught Sugar Truck MR( 33238, 20, 15, 85, CT_SUGAR , Y), // 176 Wizzowow Sugar Truck MR( 5479, 20, 15, 55, CT_COLA , Y), // 177 MightyMover Cola Truck MR( 20089, 20, 15, 55, CT_COLA , Y), // 178 Powernaught Cola Truck MR( 33603, 20, 15, 85, CT_COLA , Y), // 179 Wizzowow Cola Truck MR( 5479, 20, 15, 55, CT_COTTON_CANDY, Y), // 180 MightyMover Candyfloss Truck MR( 20454, 20, 15, 55, CT_COTTON_CANDY, Y), // 181 Powernaught Candyfloss Truck MR( 33969, 20, 15, 85, CT_COTTON_CANDY, Y), // 182 Wizzowow Candyfloss Truck MR( 5479, 20, 15, 55, CT_TOFFEE , Y), // 183 MightyMover Toffee Truck MR( 20820, 20, 15, 55, CT_TOFFEE , Y), // 184 Powernaught Toffee Truck MR( 34334, 20, 15, 85, CT_TOFFEE , Y), // 185 Wizzowow Toffee Truck MR( 5479, 20, 15, 55, CT_TOYS , Y), // 186 MightyMover Toy Van MR( 21185, 20, 15, 55, CT_TOYS , Y), // 187 Powernaught Toy Van MR( 34699, 20, 15, 85, CT_TOYS , Y), // 188 Wizzowow Toy Van MR( 5479, 20, 15, 55, CT_CANDY , Y), // 189 MightyMover Sweet Truck MR( 21550, 20, 15, 55, CT_CANDY , Y), // 190 Powernaught Sweet Truck MR( 35064, 20, 15, 85, CT_CANDY , Y), // 191 Wizzowow Sweet Truck MR( 5479, 20, 15, 55, CT_BATTERIES , Y), // 192 MightyMover Battery Truck MR( 19874, 20, 15, 55, CT_BATTERIES , Y), // 193 Powernaught Battery Truck MR( 35430, 20, 15, 85, CT_BATTERIES , Y), // 194 Wizzowow Battery Truck MR( 5479, 20, 15, 55, CT_FIZZY_DRINKS, Y), // 195 MightyMover Fizzy Drink Truck MR( 20239, 20, 15, 55, CT_FIZZY_DRINKS, Y), // 196 Powernaught Fizzy Drink Truck MR( 35795, 20, 15, 85, CT_FIZZY_DRINKS, Y), // 197 Wizzowow Fizzy Drink Truck MR( 5479, 20, 15, 55, CT_PLASTIC , Y), // 198 MightyMover Plastic Truck MR( 20604, 20, 15, 55, CT_PLASTIC , Y), // 199 Powernaught Plastic Truck MR( 32873, 20, 15, 85, CT_PLASTIC , Y), // 200 Wizzowow Plastic Truck MR( 5479, 20, 15, 55, CT_BUBBLES , Y), // 201 MightyMover Bubble Truck MR( 20970, 20, 15, 55, CT_BUBBLES , Y), // 202 Powernaught Bubble Truck MR( 33023, 20, 15, 85, CT_BUBBLES , Y), // 203 Wizzowow Bubble Truck MS( 2922, 5, 30, 50, CT_OIL , T|A|S ), // 204 MPS Oil Tanker MS( 17167, 5, 30, 90, CT_OIL , T|A|S ), // 205 CS-Inc. Oil Tanker MS( 2192, 5, 30, 55, CT_PASSENGERS , T|A|S ), // 206 MPS Passenger Ferry MS( 18628, 5, 30, 90, CT_PASSENGERS , T|A|S ), // 207 FFP Passenger Ferry MS( 17257, 10, 25, 90, CT_PASSENGERS , T|A|S ), // 208 Bakewell 300 Hovercraft MS( 9587, 5, 30, 40, CT_PASSENGERS , Y), // 209 Chugger-Chug Passenger Ferry MS( 20544, 5, 30, 90, CT_PASSENGERS , Y), // 210 Shivershake Passenger Ferry MS( 2557, 5, 30, 55, CT_GOODS , T|A|S ), // 211 Yate Cargo ship MS( 19724, 5, 30, 98, CT_GOODS , T|A|S ), // 212 Bakewell Cargo ship MS( 9587, 5, 30, 45, CT_GOODS , Y), // 213 Mightymover Cargo ship MS( 22371, 5, 30, 90, CT_GOODS , Y), // 214 Powernaut Cargo ship MA( 2922, 20, 20, 20, T|A|S ), // 215 Sampson U52 MA( 9922, 20, 24, 20, T|A|S ), // 216 Coleman Count MA( 12659, 20, 18, 20, T|A|S ), // 217 FFP Dart MA( 17652, 20, 25, 35, T|A|S ), // 218 Yate Haugan MA( 4929, 20, 30, 30, T|A|S ), // 219 Bakewell Cotswald LB-3 MA( 13695, 20, 23, 25, T|A|S ), // 220 Bakewell Luckett LB-8 MA( 16341, 20, 26, 30, T|A|S ), // 221 Bakewell Luckett LB-9 MA( 21395, 20, 25, 30, T|A|S ), // 222 Bakewell Luckett LB80 MA( 18263, 20, 20, 30, T|A|S ), // 223 Bakewell Luckett LB-10 MA( 25233, 20, 25, 30, T|A|S ), // 224 Bakewell Luckett LB-11 MA( 15371, 20, 22, 25, T|A|S ), // 225 Yate Aerospace YAC 1-11 MA( 15461, 20, 25, 25, T|A|S ), // 226 Darwin 100 MA( 16952, 20, 22, 25, T|A|S ), // 227 Darwin 200 MA( 17227, 20, 25, 30, T|A|S ), // 228 Darwin 300 MA( 22371, 20, 25, 35, T|A|S ), // 229 Darwin 400 MA( 22341, 20, 25, 30, T|A|S ), // 230 Darwin 500 MA( 27209, 20, 25, 30, T|A|S ), // 231 Darwin 600 MA( 17988, 20, 20, 30, T|A|S ), // 232 Guru Galaxy MA( 18993, 20, 24, 35, T|A|S ), // 233 Airtaxi A21 MA( 22401, 20, 24, 30, T|A|S ), // 234 Airtaxi A31 MA( 24472, 20, 24, 30, T|A|S ), // 235 Airtaxi A32 MA( 26724, 20, 24, 30, T|A|S ), // 236 Airtaxi A33 MA( 22005, 20, 25, 30, T|A|S ), // 237 Yate Aerospace YAe46 MA( 24107, 20, 20, 35, T|A|S ), // 238 Dinger 100 MA( 29310, 20, 25, 60, T|A|S ), // 239 AirTaxi A34-1000 MA( 35520, 20, 22, 30, T|A|S ), // 240 Yate Z-Shuttle MA( 36981, 20, 22, 30, T|A|S ), // 241 Kelling K1 MA( 38807, 20, 22, 50, T|A|S ), // 242 Kelling K6 MA( 42094, 20, 25, 30, T|A|S ), // 243 Kelling K7 MA( 44651, 20, 23, 30, T|A|S ), // 244 Darwin 700 MA( 40268, 20, 25, 30, T|A|S ), // 245 FFP Hyperdart 2 MA( 33693, 20, 25, 50, T|A|S ), // 246 Dinger 200 MA( 32963, 20, 20, 60, T|A|S ), // 247 Dinger 1000 MA( 9222, 20, 20, 35, Y), // 248 Ploddyphut 100 MA( 12874, 20, 20, 35, Y), // 249 Ploddyphut 500 MA( 16892, 20, 20, 35, Y), // 250 Flashbang X1 MA( 21275, 20, 20, 99, Y), // 251 Juggerplane M1 MA( 23832, 20, 20, 99, Y), // 252 Flashbang Wizzer MA( 13575, 20, 20, 40, T|A|S ), // 253 Tricario Helicopter MA( 28215, 20, 20, 30, T|A|S ), // 254 Guru X2 Helicopter MA( 13575, 20, 20, 99, Y), // 255 Powernaut Helicopter }; #undef Y #undef S #undef A #undef T #undef MT #undef MW #undef MR #undef MS #undef MA /** * Writes the properties of a rail vehicle into the RailVehicleInfo struct. * @see RailVehicleInfo * @param a image_index * @param b type * @param c cost_factor * @param d max_speed (1 unit = 1/1.6 mph = 1 km-ish/h) * @param e power (hp) * @param f weight (tons) * @param g running_cost * @param h running_cost_class * @param i capacity (persons, bags, tons, pieces, items, cubic metres, ...) * @param j railtype * @param k engclass * Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76 * Air drag value depends on the top speed of the vehicle. */ #define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, {j}, d, e, f, g, h, k, i, 0, 0, 0, VE_DEFAULT, 0, 76, 0, 0 } #define M RAILVEH_MULTIHEAD #define W RAILVEH_WAGON #define G RAILVEH_SINGLEHEAD #define S EC_STEAM #define D EC_DIESEL #define E EC_ELECTRIC #define N EC_MONORAIL #define V EC_MAGLEV /* Wagons always have engine type 0, i.e. steam. */ #define A EC_STEAM #define R RAILTYPE_RAIL #define C RAILTYPE_ELECTRIC #define O RAILTYPE_MONO #define L RAILTYPE_MAGLEV #define RC_S PR_RUNNING_TRAIN_STEAM #define RC_D PR_RUNNING_TRAIN_DIESEL #define RC_E PR_RUNNING_TRAIN_ELECTRIC #define RC_W INVALID_PRICE static const RailVehicleInfo _orig_rail_vehicle_info[] = { /* image_index max_speed running_cost engclass * | type | power | running_cost_class * | | cost_factor | weight | | capacity * | | | | | | | | | railtype * | | | | | | | | | | | */ /* Rail */ RVI( 2, G, 7, 64, 300, 47, 50, RC_S, 0, R, S), // 0 Kirby Paul Tank (Steam) RVI(19, G, 8, 80, 600, 65, 65, RC_D, 0, R, D), // 1 MJS 250 (Diesel) RVI( 2, G, 10, 72, 400, 85, 90, RC_S, 0, R, S), // 2 Ploddyphut Choo-Choo RVI( 0, G, 15, 96, 900, 130, 130, RC_S, 0, R, S), // 3 Powernaut Choo-Choo RVI( 1, G, 19, 112, 1000, 140, 145, RC_S, 0, R, S), // 4 Mightymover Choo-Choo RVI(12, G, 16, 120, 1400, 95, 125, RC_D, 0, R, D), // 5 Ploddyphut Diesel RVI(14, G, 20, 152, 2000, 120, 135, RC_D, 0, R, D), // 6 Powernaut Diesel RVI( 3, G, 14, 88, 1100, 145, 130, RC_S, 0, R, S), // 7 Wills 2-8-0 (Steam) RVI( 0, G, 13, 112, 1000, 131, 120, RC_S, 0, R, S), // 8 Chaney 'Jubilee' (Steam) RVI( 1, G, 19, 128, 1200, 162, 140, RC_S, 0, R, S), // 9 Ginzu 'A4' (Steam) RVI( 0, G, 22, 144, 1600, 170, 130, RC_S, 0, R, S), // 10 SH '8P' (Steam) RVI( 8, M, 11, 112, 600, 32, 85, RC_D, 38, R, D), // 11 Manley-Morel DMU (Diesel) RVI(10, M, 14, 120, 700, 38, 70, RC_D, 40, R, D), // 12 'Dash' (Diesel) RVI( 4, G, 15, 128, 1250, 72, 95, RC_D, 0, R, D), // 13 SH/Hendry '25' (Diesel) RVI( 5, G, 17, 144, 1750, 101, 120, RC_D, 0, R, D), // 14 UU '37' (Diesel) RVI( 4, G, 18, 160, 2580, 112, 140, RC_D, 0, R, D), // 15 Floss '47' (Diesel) RVI(14, G, 23, 96, 4000, 150, 135, RC_D, 0, R, D), // 16 CS 4000 (Diesel) RVI(12, G, 16, 112, 2400, 120, 105, RC_D, 0, R, D), // 17 CS 2400 (Diesel) RVI(13, G, 30, 112, 6600, 207, 155, RC_D, 0, R, D), // 18 Centennial (Diesel) RVI(15, G, 18, 104, 1500, 110, 105, RC_D, 0, R, D), // 19 Kelling 3100 (Diesel) RVI(16, M, 35, 160, 3500, 95, 205, RC_D, 0, R, D), // 20 Turner Turbo (Diesel) RVI(18, G, 21, 104, 2200, 120, 145, RC_D, 0, R, D), // 21 MJS 1000 (Diesel) RVI( 6, M, 20, 200, 4500, 70, 190, RC_D, 4, R, D), // 22 SH '125' (Diesel) RVI(20, G, 26, 160, 3600, 84, 180, RC_E, 0, C, E), // 23 SH '30' (Electric) RVI(20, G, 30, 176, 5000, 82, 205, RC_E, 0, C, E), // 24 SH '40' (Electric) RVI(21, M, 40, 240, 7000, 90, 240, RC_E, 0, C, E), // 25 'T.I.M.' (Electric) RVI(23, M, 43, 264, 8000, 95, 250, RC_E, 0, C, E), // 26 'AsiaStar' (Electric) RVI(33, W, 247, 0, 0, 25, 0, RC_W, 40, R, A), // 27 Passenger Carriage RVI(35, W, 228, 0, 0, 21, 0, RC_W, 30, R, A), // 28 Mail Van RVI(34, W, 176, 0, 0, 18, 0, RC_W, 30, R, A), // 29 Coal Truck RVI(36, W, 200, 0, 0, 24, 0, RC_W, 30, R, A), // 30 Oil Tanker RVI(37, W, 192, 0, 0, 20, 0, RC_W, 25, R, A), // 31 Livestock Van RVI(38, W, 190, 0, 0, 21, 0, RC_W, 25, R, A), // 32 Goods Van RVI(39, W, 182, 0, 0, 19, 0, RC_W, 30, R, A), // 33 Grain Hopper RVI(40, W, 181, 0, 0, 16, 0, RC_W, 30, R, A), // 34 Wood Truck RVI(41, W, 179, 0, 0, 19, 0, RC_W, 30, R, A), // 35 Iron Ore Hopper RVI(42, W, 196, 0, 0, 18, 0, RC_W, 20, R, A), // 36 Steel Truck RVI(43, W, 255, 0, 0, 30, 0, RC_W, 20, R, A), // 37 Armoured Van RVI(44, W, 191, 0, 0, 22, 0, RC_W, 25, R, A), // 38 Food Van RVI(45, W, 196, 0, 0, 18, 0, RC_W, 20, R, A), // 39 Paper Truck RVI(46, W, 179, 0, 0, 19, 0, RC_W, 30, R, A), // 40 Copper Ore Hopper RVI(47, W, 199, 0, 0, 25, 0, RC_W, 25, R, A), // 41 Water Tanker RVI(48, W, 182, 0, 0, 18, 0, RC_W, 25, R, A), // 42 Fruit Truck RVI(49, W, 185, 0, 0, 19, 0, RC_W, 21, R, A), // 43 Rubber Truck RVI(50, W, 176, 0, 0, 19, 0, RC_W, 30, R, A), // 44 Sugar Truck RVI(51, W, 178, 0, 0, 20, 0, RC_W, 30, R, A), // 45 Candyfloss Hopper RVI(52, W, 192, 0, 0, 20, 0, RC_W, 30, R, A), // 46 Toffee Hopper RVI(53, W, 190, 0, 0, 21, 0, RC_W, 20, R, A), // 47 Bubble Van RVI(54, W, 182, 0, 0, 24, 0, RC_W, 25, R, A), // 48 Cola Tanker RVI(55, W, 181, 0, 0, 21, 0, RC_W, 25, R, A), // 49 Sweet Van RVI(56, W, 183, 0, 0, 21, 0, RC_W, 20, R, A), // 50 Toy Van RVI(57, W, 196, 0, 0, 18, 0, RC_W, 22, R, A), // 51 Battery Truck RVI(58, W, 193, 0, 0, 18, 0, RC_W, 25, R, A), // 52 Fizzy Drink Truck RVI(59, W, 191, 0, 0, 18, 0, RC_W, 30, R, A), // 53 Plastic Truck /* Monorail */ RVI(25, G, 52, 304, 9000, 95, 230, RC_E, 0, O, N), // 54 'X2001' (Electric) RVI(26, M, 60, 336, 10000, 85, 240, RC_E, 25, O, N), // 55 'Millennium Z1' (Electric) RVI(26, G, 53, 320, 5000, 95, 230, RC_E, 0, O, N), // 56 Wizzowow Z99 RVI(60, W, 247, 0, 0, 25, 0, RC_W, 45, O, A), // 57 Passenger Carriage RVI(62, W, 228, 0, 0, 21, 0, RC_W, 35, O, A), // 58 Mail Van RVI(61, W, 176, 0, 0, 18, 0, RC_W, 35, O, A), // 59 Coal Truck RVI(63, W, 200, 0, 0, 24, 0, RC_W, 35, O, A), // 60 Oil Tanker RVI(64, W, 192, 0, 0, 20, 0, RC_W, 30, O, A), // 61 Livestock Van RVI(65, W, 190, 0, 0, 21, 0, RC_W, 30, O, A), // 62 Goods Van RVI(66, W, 182, 0, 0, 19, 0, RC_W, 35, O, A), // 63 Grain Hopper RVI(67, W, 181, 0, 0, 16, 0, RC_W, 35, O, A), // 64 Wood Truck RVI(68, W, 179, 0, 0, 19, 0, RC_W, 35, O, A), // 65 Iron Ore Hopper RVI(69, W, 196, 0, 0, 18, 0, RC_W, 25, O, A), // 66 Steel Truck RVI(70, W, 255, 0, 0, 30, 0, RC_W, 25, O, A), // 67 Armoured Van RVI(71, W, 191, 0, 0, 22, 0, RC_W, 30, O, A), // 68 Food Van RVI(72, W, 196, 0, 0, 18, 0, RC_W, 25, O, A), // 69 Paper Truck RVI(73, W, 179, 0, 0, 19, 0, RC_W, 35, O, A), // 70 Copper Ore Hopper RVI(47, W, 199, 0, 0, 25, 0, RC_W, 30, O, A), // 71 Water Tanker RVI(48, W, 182, 0, 0, 18, 0, RC_W, 30, O, A), // 72 Fruit Truck RVI(49, W, 185, 0, 0, 19, 0, RC_W, 26, O, A), // 73 Rubber Truck RVI(50, W, 176, 0, 0, 19, 0, RC_W, 35, O, A), // 74 Sugar Truck RVI(51, W, 178, 0, 0, 20, 0, RC_W, 35, O, A), // 75 Candyfloss Hopper RVI(52, W, 192, 0, 0, 20, 0, RC_W, 35, O, A), // 76 Toffee Hopper RVI(53, W, 190, 0, 0, 21, 0, RC_W, 25, O, A), // 77 Bubble Van RVI(54, W, 182, 0, 0, 24, 0, RC_W, 30, O, A), // 78 Cola Tanker RVI(55, W, 181, 0, 0, 21, 0, RC_W, 30, O, A), // 79 Sweet Van RVI(56, W, 183, 0, 0, 21, 0, RC_W, 25, O, A), // 80 Toy Van RVI(57, W, 196, 0, 0, 18, 0, RC_W, 27, O, A), // 81 Battery Truck RVI(58, W, 193, 0, 0, 18, 0, RC_W, 30, O, A), // 82 Fizzy Drink Truck RVI(59, W, 191, 0, 0, 18, 0, RC_W, 35, O, A), // 83 Plastic Truck /* Maglev */ RVI(28, G, 70, 400, 10000, 105, 250, RC_E, 0, L, V), // 84 Lev1 'Leviathan' (Electric) RVI(29, G, 74, 448, 12000, 120, 253, RC_E, 0, L, V), // 85 Lev2 'Cyclops' (Electric) RVI(30, G, 82, 480, 15000, 130, 254, RC_E, 0, L, V), // 86 Lev3 'Pegasus' (Electric) RVI(31, M, 95, 640, 20000, 150, 255, RC_E, 0, L, V), // 87 Lev4 'Chimaera' (Electric) RVI(28, G, 70, 480, 10000, 120, 250, RC_E, 0, L, V), // 88 Wizzowow Rocketeer RVI(60, W, 247, 0, 0, 25, 0, RC_W, 47, L, A), // 89 Passenger Carriage RVI(62, W, 228, 0, 0, 21, 0, RC_W, 37, L, A), // 90 Mail Van RVI(61, W, 176, 0, 0, 18, 0, RC_W, 37, L, A), // 91 Coal Truck RVI(63, W, 200, 0, 0, 24, 0, RC_W, 37, L, A), // 92 Oil Tanker RVI(64, W, 192, 0, 0, 20, 0, RC_W, 32, L, A), // 93 Livestock Van RVI(65, W, 190, 0, 0, 21, 0, RC_W, 32, L, A), // 94 Goods Van RVI(66, W, 182, 0, 0, 19, 0, RC_W, 37, L, A), // 95 Grain Hopper RVI(67, W, 181, 0, 0, 16, 0, RC_W, 37, L, A), // 96 Wood Truck RVI(68, W, 179, 0, 0, 19, 0, RC_W, 37, L, A), // 97 Iron Ore Hopper RVI(69, W, 196, 0, 0, 18, 0, RC_W, 27, L, A), // 98 Steel Truck RVI(70, W, 255, 0, 0, 30, 0, RC_W, 27, L, A), // 99 Armoured Van RVI(71, W, 191, 0, 0, 22, 0, RC_W, 32, L, A), // 100 Food Van RVI(72, W, 196, 0, 0, 18, 0, RC_W, 27, L, A), // 101 Paper Truck RVI(73, W, 179, 0, 0, 19, 0, RC_W, 37, L, A), // 102 Copper Ore Hopper RVI(47, W, 199, 0, 0, 25, 0, RC_W, 32, L, A), // 103 Water Tanker RVI(48, W, 182, 0, 0, 18, 0, RC_W, 32, L, A), // 104 Fruit Truck RVI(49, W, 185, 0, 0, 19, 0, RC_W, 28, L, A), // 105 Rubber Truck RVI(50, W, 176, 0, 0, 19, 0, RC_W, 37, L, A), // 106 Sugar Truck RVI(51, W, 178, 0, 0, 20, 0, RC_W, 37, L, A), // 107 Candyfloss Hopper RVI(52, W, 192, 0, 0, 20, 0, RC_W, 37, L, A), // 108 Toffee Hopper RVI(53, W, 190, 0, 0, 21, 0, RC_W, 27, L, A), // 109 Bubble Van RVI(54, W, 182, 0, 0, 24, 0, RC_W, 32, L, A), // 110 Cola Tanker RVI(55, W, 181, 0, 0, 21, 0, RC_W, 32, L, A), // 111 Sweet Van RVI(56, W, 183, 0, 0, 21, 0, RC_W, 27, L, A), // 112 Toy Van RVI(57, W, 196, 0, 0, 18, 0, RC_W, 29, L, A), // 113 Battery Truck RVI(58, W, 193, 0, 0, 18, 0, RC_W, 32, L, A), // 114 Fizzy Drink Truck RVI(59, W, 191, 0, 0, 18, 0, RC_W, 37, L, A), // 115 Plastic Truck }; #undef RC_W #undef RC_E #undef RC_D #undef RC_S #undef L #undef O #undef C #undef R #undef V #undef N #undef E #undef D #undef S #undef G #undef W #undef M #undef RVI /** * Writes the properties of a ship into the ShipVehicleInfo struct. * @see ShipVehicleInfo * @param a image_index * @param b cost_factor * @param c max_speed (1 unit = 1/3.2 mph = 0.5 km-ish/h) * @param d capacity (persons, bags, tons, pieces, items, cubic metres, ...) * @param e running_cost * @param f sound effect * @param g refittable */ #define SVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g, VE_DEFAULT, 0, 0 } static const ShipVehicleInfo _orig_ship_vehicle_info[] = { /* image_index capacity refittable * | cost_factor running_cost | * | | max_speed | sfx | * | | | | | | | */ SVI( 1, 160, 48, 220, 140, SND_06_SHIP_HORN, 0 ), // 0 MPS Oil Tanker SVI( 1, 176, 80, 350, 125, SND_06_SHIP_HORN, 0 ), // 1 CS-Inc. Oil Tanker SVI( 2, 96, 64, 100, 90, SND_07_FERRY_HORN, 0 ), // 2 MPS Passenger Ferry SVI( 2, 112, 128, 130, 80, SND_07_FERRY_HORN, 0 ), // 3 FFP Passenger Ferry SVI( 3, 148, 224, 100, 190, SND_07_FERRY_HORN, 0 ), // 4 Bakewell 300 Hovercraft SVI( 2, 96, 64, 100, 90, SND_07_FERRY_HORN, 0 ), // 5 Chugger-Chug Passenger Ferry SVI( 2, 112, 128, 130, 80, SND_07_FERRY_HORN, 0 ), // 6 Shivershake Passenger Ferry SVI( 0, 128, 48, 160, 150, SND_06_SHIP_HORN, 1 ), // 7 Yate Cargo ship SVI( 0, 144, 80, 190, 113, SND_06_SHIP_HORN, 1 ), // 8 Bakewell Cargo ship SVI( 0, 128, 48, 160, 150, SND_06_SHIP_HORN, 1 ), // 9 Mightymover Cargo ship SVI( 0, 144, 80, 190, 113, SND_06_SHIP_HORN, 1 ), // 10 Powernaut Cargo ship }; #undef SVI /** * Writes the properties of an aircraft into the AircraftVehicleInfo struct. * @see AircraftVehicleInfo * @param a image_index * @param b cost_factor * @param c running_Cost * @param d subtype (bit 0 - plane, bit 1 - large plane) * @param e sound effect * @param f acceleration (1 unit = 3/8 mph/tick = 3/5 km-ish/h/tick) (stays the same in the variable) * @param g max_speed (1 unit = 8 mph = 12.8 km-ish/h) (is converted to km-ish/h by the macro) * @param h mail_capacity (bags) * @param i passenger_capacity (persons) */ #define AVI(a, b, c, d, e, f, g, h, i) { a, b, c, d, e, f, (g * 128) / 10, h, i, 0 } #define H AIR_HELI #define P AIR_CTOL #define J AIR_CTOL | AIR_FAST static const AircraftVehicleInfo _orig_aircraft_vehicle_info[] = { /* image_index sfx acceleration * | cost_factor | | max_speed * | | running_cost | | mail_capacity * | | | subtype | | | | passenger_capacity * | | | | | | | | | */ AVI( 1, 14, 85, P, SND_08_PLANE_TAKE_OFF, 18, 37, 4, 25 ), // 0 Sampson U52 AVI( 0, 15, 100, P, SND_08_PLANE_TAKE_OFF, 20, 37, 8, 65 ), // 1 Coleman Count AVI( 2, 16, 130, J, SND_09_JET, 35, 74, 10, 90 ), // 2 FFP Dart AVI( 8, 75, 250, J, SND_3B_JET_OVERHEAD, 50, 181, 20, 100 ), // 3 Yate Haugan AVI( 5, 15, 98, P, SND_08_PLANE_TAKE_OFF, 20, 37, 6, 30 ), // 4 Bakewell Cotswald LB-3 AVI( 6, 18, 240, J, SND_09_JET, 40, 74, 30, 200 ), // 5 Bakewell Luckett LB-8 AVI( 2, 17, 150, P, SND_09_JET, 35, 74, 15, 100 ), // 6 Bakewell Luckett LB-9 AVI( 2, 18, 245, J, SND_09_JET, 40, 74, 30, 150 ), // 7 Bakewell Luckett LB80 AVI( 3, 19, 192, J, SND_09_JET, 40, 74, 40, 220 ), // 8 Bakewell Luckett LB-10 AVI( 3, 20, 190, J, SND_09_JET, 40, 74, 25, 230 ), // 9 Bakewell Luckett LB-11 AVI( 2, 16, 135, J, SND_09_JET, 35, 74, 10, 95 ), // 10 Yate Aerospace YAC 1-11 AVI( 2, 18, 240, J, SND_09_JET, 40, 74, 35, 170 ), // 11 Darwin 100 AVI( 4, 17, 155, J, SND_09_JET, 40, 74, 15, 110 ), // 12 Darwin 200 AVI( 7, 30, 253, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 50, 300 ), // 13 Darwin 300 AVI( 4, 18, 210, J, SND_09_JET, 40, 74, 25, 200 ), // 14 Darwin 400 AVI( 4, 19, 220, J, SND_09_JET, 40, 74, 25, 240 ), // 15 Darwin 500 AVI( 4, 27, 230, J, SND_09_JET, 40, 74, 40, 260 ), // 16 Darwin 600 AVI( 3, 25, 225, J, SND_09_JET, 40, 74, 35, 240 ), // 17 Guru Galaxy AVI( 4, 20, 235, J, SND_09_JET, 40, 74, 30, 260 ), // 18 Airtaxi A21 AVI( 4, 19, 220, J, SND_09_JET, 40, 74, 25, 210 ), // 19 Airtaxi A31 AVI( 4, 18, 170, J, SND_09_JET, 40, 74, 20, 160 ), // 20 Airtaxi A32 AVI( 4, 26, 210, J, SND_09_JET, 40, 74, 20, 220 ), // 21 Airtaxi A33 AVI( 6, 16, 125, P, SND_09_JET, 50, 74, 10, 80 ), // 22 Yate Aerospace YAe46 AVI( 2, 17, 145, P, SND_09_JET, 40, 74, 10, 85 ), // 23 Dinger 100 AVI( 11, 16, 130, P, SND_09_JET, 40, 74, 10, 75 ), // 24 AirTaxi A34-1000 AVI( 10, 16, 149, P, SND_09_JET, 40, 74, 10, 85 ), // 25 Yate Z-Shuttle AVI( 15, 17, 170, P, SND_09_JET, 40, 74, 18, 65 ), // 26 Kelling K1 AVI( 12, 18, 210, J, SND_09_JET, 40, 74, 25, 110 ), // 27 Kelling K6 AVI( 13, 20, 230, J, SND_09_JET, 40, 74, 60, 180 ), // 28 Kelling K7 AVI( 14, 21, 220, J, SND_09_JET, 40, 74, 65, 150 ), // 29 Darwin 700 AVI( 16, 19, 160, J, SND_09_JET, 40, 181, 45, 85 ), // 30 FFP Hyperdart 2 AVI( 17, 24, 248, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 80, 400 ), // 31 Dinger 200 AVI( 18, 80, 251, J, SND_3B_JET_OVERHEAD, 50, 181, 45, 130 ), // 32 Dinger 1000 AVI( 20, 13, 85, P, SND_45_PLANE_CRASHING, 18, 37, 5, 25 ), // 33 Ploddyphut 100 AVI( 21, 18, 100, P, SND_46_PLANE_ENGINE_SPUTTERING, 20, 37, 9, 60 ), // 34 Ploddyphut 500 AVI( 22, 25, 140, P, SND_09_JET, 40, 74, 12, 90 ), // 35 Flashbang X1 AVI( 23, 32, 220, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 40, 200 ), // 36 Juggerplane M1 AVI( 24, 80, 255, J, SND_3B_JET_OVERHEAD, 50, 181, 30, 100 ), // 37 Flashbang Wizzer AVI( 9, 15, 81, H, SND_09_JET, 20, 25, 15, 40 ), // 38 Tricario Helicopter AVI( 19, 17, 77, H, SND_09_JET, 20, 40, 20, 55 ), // 39 Guru X2 Helicopter AVI( 25, 15, 80, H, SND_09_JET, 20, 25, 10, 40 ), // 40 Powernaut Helicopter }; #undef J #undef P #undef H #undef AVI /** * Writes the properties of a road vehicle into the RoadVehicleInfo struct. * @see RoadVehicleInfo * @param a image_index * @param b cost_factor * @param c running_cost * @param d sound effect * @param e max_speed (1 unit = 1/3.2 mph = 0.5 km-ish/h) * @param f capacity (persons, bags, tons, pieces, items, cubic metres, ...) * @param g weight (1/4 ton) * @param h power (10 hp) * Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76 * Air drag value depends on the top speed of the vehicle. */ #define ROV(a, b, c, d, e, f, g, h) { a, b, c, PR_RUNNING_ROADVEH, d, e, f, g, h, 76, 0, VE_DEFAULT, 0 } static const RoadVehicleInfo _orig_road_vehicle_info[] = { /* image_index sfx max_speed power * | cost_factor | | capacity | * | | running_cost | | weight * | | | | | | | |*/ ROV( 0, 120, 91, SND_19_BUS_START_PULL_AWAY, 112, 31, 42, 9), // 0 MPS Regal Bus ROV( 17, 140, 128, SND_1C_TRUCK_START_2, 176, 35, 60, 12), // 1 Hereford Leopard Bus ROV( 17, 150, 178, SND_1B_TRUCK_START, 224, 37, 70, 15), // 2 Foster Bus ROV( 34, 160, 240, SND_1B_TRUCK_START, 255, 40, 100, 25), // 3 Foster MkII Superbus ROV( 51, 120, 91, SND_3C_COMEDY_CAR, 112, 30, 42, 9), // 4 Ploddyphut MkI Bus ROV( 51, 140, 171, SND_3E_COMEDY_CAR_2, 192, 35, 60, 15), // 5 Ploddyphut MkII Bus ROV( 51, 160, 240, SND_3C_COMEDY_CAR, 240, 38, 90, 25), // 6 Ploddyphut MkIII Bus ROV( 1, 108, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, 38, 12), // 7 Balogh Coal Truck ROV( 18, 128, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 8 Uhl Coal Truck ROV( 35, 138, 240, SND_19_BUS_START_PULL_AWAY, 224, 28, 69, 45), // 9 DW Coal Truck ROV( 2, 115, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, 38, 12), // 10 MPS Mail Truck ROV( 19, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 28, 48, 22), // 11 Reynard Mail Truck ROV( 36, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 30, 69, 45), // 12 Perry Mail Truck ROV( 57, 115, 90, SND_3E_COMEDY_CAR_2, 96, 22, 38, 12), // 13 MightyMover Mail Truck ROV( 57, 135, 168, SND_3C_COMEDY_CAR, 176, 28, 48, 22), // 14 Powernaught Mail Truck ROV( 57, 145, 240, SND_3E_COMEDY_CAR_2, 224, 30, 69, 45), // 15 Wizzowow Mail Truck ROV( 3, 110, 90, SND_19_BUS_START_PULL_AWAY, 96, 21, 38, 12), // 16 Witcombe Oil Tanker ROV( 20, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 17 Foster Oil Tanker ROV( 37, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 18 Perry Oil Tanker ROV( 4, 105, 90, SND_19_BUS_START_PULL_AWAY, 96, 14, 38, 12), // 19 Talbott Livestock Van ROV( 21, 130, 168, SND_19_BUS_START_PULL_AWAY, 176, 16, 48, 22), // 20 Uhl Livestock Van ROV( 38, 140, 240, SND_19_BUS_START_PULL_AWAY, 224, 18, 69, 45), // 21 Foster Livestock Van ROV( 5, 107, 90, SND_19_BUS_START_PULL_AWAY, 96, 14, 38, 12), // 22 Balogh Goods Truck ROV( 22, 130, 168, SND_19_BUS_START_PULL_AWAY, 176, 16, 48, 22), // 23 Craighead Goods Truck ROV( 39, 140, 240, SND_19_BUS_START_PULL_AWAY, 224, 18, 69, 45), // 24 Goss Goods Truck ROV( 6, 114, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, 38, 12), // 25 Hereford Grain Truck ROV( 23, 133, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 26 Thomas Grain Truck ROV( 40, 143, 240, SND_19_BUS_START_PULL_AWAY, 224, 30, 69, 45), // 27 Goss Grain Truck ROV( 7, 118, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, 38, 12), // 28 Witcombe Wood Truck ROV( 24, 137, 168, SND_19_BUS_START_PULL_AWAY, 176, 22, 48, 22), // 29 Foster Wood Truck ROV( 41, 147, 240, SND_19_BUS_START_PULL_AWAY, 224, 24, 69, 45), // 30 Moreland Wood Truck ROV( 8, 121, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, 38, 12), // 31 MPS Iron Ore Truck ROV( 25, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 32 Uhl Iron Ore Truck ROV( 42, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 33 Chippy Iron Ore Truck ROV( 9, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 15, 38, 12), // 34 Balogh Steel Truck ROV( 26, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 18, 48, 22), // 35 Uhl Steel Truck ROV( 43, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 20, 69, 45), // 36 Kelling Steel Truck ROV( 10, 145, 90, SND_19_BUS_START_PULL_AWAY, 96, 12, 38, 12), // 37 Balogh Armoured Truck ROV( 27, 170, 168, SND_19_BUS_START_PULL_AWAY, 176, 15, 48, 22), // 38 Uhl Armoured Truck ROV( 44, 180, 240, SND_19_BUS_START_PULL_AWAY, 224, 16, 69, 45), // 39 Foster Armoured Truck ROV( 11, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 17, 38, 12), // 40 Foster Food Van ROV( 28, 134, 168, SND_19_BUS_START_PULL_AWAY, 176, 20, 48, 22), // 41 Perry Food Van ROV( 45, 144, 240, SND_19_BUS_START_PULL_AWAY, 224, 22, 69, 45), // 42 Chippy Food Van ROV( 12, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 15, 38, 12), // 43 Uhl Paper Truck ROV( 29, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 18, 48, 22), // 44 Balogh Paper Truck ROV( 46, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 20, 69, 45), // 45 MPS Paper Truck ROV( 13, 121, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, 38, 12), // 46 MPS Copper Ore Truck ROV( 30, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 47 Uhl Copper Ore Truck ROV( 47, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 48 Goss Copper Ore Truck ROV( 14, 111, 90, SND_19_BUS_START_PULL_AWAY, 96, 21, 38, 12), // 49 Uhl Water Tanker ROV( 31, 141, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, 48, 22), // 50 Balogh Water Tanker ROV( 48, 151, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, 69, 45), // 51 MPS Water Tanker ROV( 15, 118, 90, SND_19_BUS_START_PULL_AWAY, 96, 18, 38, 12), // 52 Balogh Fruit Truck ROV( 32, 148, 168, SND_19_BUS_START_PULL_AWAY, 176, 20, 48, 22), // 53 Uhl Fruit Truck ROV( 49, 158, 240, SND_19_BUS_START_PULL_AWAY, 224, 23, 69, 45), // 54 Kelling Fruit Truck ROV( 16, 117, 90, SND_19_BUS_START_PULL_AWAY, 96, 17, 38, 12), // 55 Balogh Rubber Truck ROV( 33, 147, 168, SND_19_BUS_START_PULL_AWAY, 176, 19, 48, 22), // 56 Uhl Rubber Truck ROV( 50, 157, 240, SND_19_BUS_START_PULL_AWAY, 224, 22, 69, 45), // 57 RMT Rubber Truck ROV( 52, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 58 MightyMover Sugar Truck ROV( 52, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 59 Powernaught Sugar Truck ROV( 52, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 60 Wizzowow Sugar Truck ROV( 53, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 61 MightyMover Cola Truck ROV( 53, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 62 Powernaught Cola Truck ROV( 53, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 63 Wizzowow Cola Truck ROV( 54, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 64 MightyMover Candyfloss Truck ROV( 54, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 65 Powernaught Candyfloss Truck ROV( 54, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 66 Wizzowow Candyfloss Truck ROV( 55, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 67 MightyMover Toffee Truck ROV( 55, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 68 Powernaught Toffee Truck ROV( 55, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 69 Wizzowow Toffee Truck ROV( 56, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 70 MightyMover Toy Van ROV( 56, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 71 Powernaught Toy Van ROV( 56, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 72 Wizzowow Toy Van ROV( 58, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 73 MightyMover Sweet Truck ROV( 58, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 74 Powernaught Sweet Truck ROV( 58, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 75 Wizzowow Sweet Truck ROV( 59, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 76 MightyMover Battery Truck ROV( 59, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 77 Powernaught Battery Truck ROV( 59, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 78 Wizzowow Battery Truck ROV( 60, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 79 MightyMover Fizzy Drink Truck ROV( 60, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 80 Powernaught Fizzy Drink Truck ROV( 60, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 81 Wizzowow Fizzy Drink Truck ROV( 61, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, 38, 12), // 82 MightyMover Plastic Truck ROV( 61, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, 48, 22), // 83 Powernaught Plastic Truck ROV( 61, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, 69, 45), // 84 Wizzowow Plastic Truck ROV( 62, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, 38, 12), // 85 MightyMover Bubble Truck ROV( 62, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, 48, 22), // 86 Powernaught Bubble Truck ROV( 62, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, 69, 45), // 87 Wizzowow Bubble Truck }; #undef ROV #endif /* ENGINES_H */ openttd-1.3.3/src/table/roadveh_movement.h0000644000000000000000000005106612246102566017276 0ustar rootroot/* $Id: roadveh_movement.h 21263 2010-11-20 09:09:57Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file table/roadveh_movement.h Data about how a road vehicle must drive on a tile */ static const RoadDriveEntry _roadveh_drive_data_0[] = { {15, 5}, {14, 5}, {13, 5}, {12, 5}, {11, 5}, {10, 5}, { 9, 5}, { 8, 5}, { 7, 5}, { 6, 5}, { 5, 5}, { 4, 5}, { 3, 5}, { 2, 5}, { 1, 5}, { 0, 5}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_1[] = { {5, 0}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}, {5, 6}, {5, 7}, {5, 8}, {5, 9}, {5, 10}, {5, 11}, {5, 12}, {5, 13}, {5, 14}, {5, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_2[] = { {5, 0}, {5, 1}, {5, 2}, {4, 3}, {3, 4}, {2, 5}, {1, 5}, {0, 5}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_3[] = { {15, 5}, {14, 5}, {13, 5}, {12, 5}, {11, 5}, {10, 5}, { 9, 6}, { 8, 7}, { 7, 8}, { 6, 9}, { 5, 10}, { 5, 11}, { 5, 12}, { 5, 13}, { 5, 14}, { 5, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_4[] = { { 5, 0}, { 5, 1}, { 5, 2}, { 5, 3}, { 5, 4}, { 5, 5}, { 6, 6}, { 7, 7}, { 8, 8}, { 9, 9}, {10, 9}, {11, 9}, {12, 9}, {13, 9}, {14, 9}, {15, 9}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_5[] = { {0, 9}, {1, 9}, {2, 9}, {3, 10}, {4, 11}, {5, 12}, {5, 13}, {5, 14}, {5, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_6[] = { {0, 6}, {0, 7}, {0, 8}, {0, 9}, {RDE_TURNED | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_7[] = { {6, 15}, {7, 15}, {8, 15}, {9, 15}, {RDE_TURNED | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_8[] = { { 0, 9}, { 1, 9}, { 2, 9}, { 3, 9}, { 4, 9}, { 5, 9}, { 6, 9}, { 7, 9}, { 8, 9}, { 9, 9}, {10, 9}, {11, 9}, {12, 9}, {13, 9}, {14, 9}, {15, 9}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_9[] = { {9, 15}, {9, 14}, {9, 13}, {9, 12}, {9, 11}, {9, 10}, {9, 9}, {9, 8}, {9, 7}, {9, 6}, {9, 5}, {9, 4}, {9, 3}, {9, 2}, {9, 1}, {9, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_10[] = { {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 8}, {7, 7}, {8, 6}, {9, 5}, {9, 4}, {9, 3}, {9, 2}, {9, 1}, {9, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_11[] = { { 9, 15}, { 9, 14}, { 9, 13}, {10, 12}, {11, 11}, {12, 10}, {13, 9}, {14, 9}, {15, 9}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_12[] = { {15, 5}, {14, 5}, {13, 5}, {12, 4}, {11, 3}, {10, 2}, { 9, 1}, { 9, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_13[] = { {9, 15}, {9, 14}, {9, 13}, {9, 12}, {9, 11}, {9, 10}, {8, 9}, {7, 8}, {6, 7}, {5, 6}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_14[] = { {15, 8}, {15, 7}, {15, 6}, {15, 5}, {RDE_TURNED | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_15[] = { {8, 0}, {7, 0}, {6, 0}, {5, 0}, {RDE_TURNED | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_16[] = { {15, 9}, {14, 9}, {13, 9}, {12, 9}, {11, 9}, {10, 9}, { 9, 9}, { 8, 9}, { 7, 9}, { 6, 9}, { 5, 9}, { 4, 9}, { 3, 9}, { 2, 9}, { 1, 9}, { 0, 9}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_17[] = { {9, 0}, {9, 1}, {9, 2}, {9, 3}, {9, 4}, {9, 5}, {9, 6}, {9, 7}, {9, 8}, {9, 9}, {9, 10}, {9, 11}, {9, 12}, {9, 13}, {9, 14}, {9, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_18[] = { {9, 0}, {9, 1}, {9, 2}, {9, 3}, {9, 4}, {9, 5}, {8, 6}, {7, 7}, {6, 8}, {5, 9}, {4, 9}, {3, 9}, {2, 9}, {1, 9}, {0, 9}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_19[] = { {15, 9}, {14, 9}, {13, 9}, {12, 10}, {11, 11}, {10, 12}, { 9, 13}, { 9, 14}, { 9, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_20[] = { { 9, 0}, { 9, 1}, {10, 2}, {11, 3}, {12, 4}, {13, 5}, {14, 5}, {15, 5}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_21[] = { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 6}, {6, 7}, {7, 8}, {8, 9}, {9, 10}, {9, 11}, {9, 12}, {9, 13}, {9, 14}, {9, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_drive_data_22[] = { {0, 8}, {0, 7}, {0, 6}, {0, 5}, {RDE_TURNED | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_23[] = { {8, 15}, {7, 15}, {6, 15}, {5, 15}, {RDE_TURNED | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_24[] = { { 0, 5}, { 1, 5}, { 2, 5}, { 3, 5}, { 4, 5}, { 5, 5}, { 6, 5}, { 7, 5}, { 8, 5}, { 9, 5}, {10, 5}, {11, 5}, {12, 5}, {13, 5}, {14, 5}, {15, 5}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_25[] = { {5, 15}, {5, 14}, {5, 13}, {5, 12}, {5, 11}, {5, 10}, {5, 9}, {5, 8}, {5, 7}, {5, 6}, {5, 5}, {5, 4}, {5, 3}, {5, 2}, {5, 1}, {5, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_26[] = { {0, 5}, {1, 5}, {2, 5}, {3, 4}, {4, 3}, {5, 2}, {5, 1}, {5, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_27[] = { { 5, 15}, { 5, 14}, { 5, 13}, { 5, 12}, { 5, 11}, { 5, 10}, { 6, 9}, { 7, 8}, { 8, 7}, { 9, 6}, {10, 5}, {11, 5}, {12, 5}, {13, 5}, {14, 5}, {15, 5}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_drive_data_28[] = { {15, 9}, {14, 9}, {13, 9}, {12, 9}, {11, 9}, {10, 9}, { 9, 9}, { 8, 8}, { 7, 7}, { 6, 6}, { 5, 5}, { 5, 4}, { 5, 3}, { 5, 2}, { 5, 1}, { 5, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_drive_data_29[] = { {5, 15}, {5, 14}, {5, 13}, {5, 12}, {4, 11}, {3, 10}, {2, 9}, {1, 9}, {0, 9}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_30[] = { {15, 6}, {15, 7}, {15, 8}, {15, 9}, {RDE_TURNED | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_drive_data_31[] = { {6, 0}, {7, 0}, {8, 0}, {9, 0}, {RDE_TURNED | DIAGDIR_SE, 0} }; static const RoadDriveEntry _rv_station_left_sw_far[] = { {15, 5}, {14, 5}, {13, 6}, {13, 7}, {13, 8}, {13, 9}, {13, 10}, {13, 11}, {12, 12}, {11, 12}, {10, 12}, { 9, 12}, { 8, 12}, { 7, 12}, { 6, 12}, { 5, 11}, { 5, 10}, { 5, 9}, { 5, 8}, { 5, 7}, { 5, 6}, { 5, 7}, { 5, 8}, { 5, 9}, { 5, 10}, { 5, 11}, { 6, 12}, { 7, 12}, { 8, 12}, { 9, 12}, {10, 12}, {11, 12}, {12, 12}, {13, 11}, {13, 10}, {14, 9}, {15, 9}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _rv_station_left_nw_far[] = { { 5, 0}, { 5, 1}, { 6, 2}, { 7, 2}, { 8, 2}, { 9, 2}, {10, 2}, {11, 2}, {12, 3}, {12, 4}, {12, 5}, {12, 6}, {12, 7}, {12, 8}, {12, 9}, {11, 10}, {10, 10}, { 9, 10}, { 8, 10}, { 7, 10}, { 6, 10}, { 7, 10}, { 8, 10}, { 9, 10}, {10, 10}, {11, 10}, {12, 9}, {12, 8}, {12, 7}, {12, 6}, {12, 5}, {12, 4}, {12, 3}, {11, 2}, {10, 2}, { 9, 1}, { 9, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _rv_station_left_sw_near[] = { {15, 5}, {14, 5}, {13, 6}, {13, 7}, {13, 8}, {13, 9}, {13, 10}, {13, 11}, {12, 12}, {11, 12}, {10, 12}, { 9, 11}, { 9, 10}, { 9, 9}, { 9, 8}, { 9, 7}, { 9, 6}, { 9, 7}, { 9, 8}, { 9, 9}, { 9, 10}, { 9, 11}, {10, 12}, {11, 12}, {12, 12}, {13, 11}, {13, 10}, {14, 9}, {15, 9}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _rv_station_left_nw_near[] = { { 5, 0}, { 5, 1}, { 6, 2}, { 7, 2}, { 8, 2}, { 9, 2}, {10, 2}, {11, 2}, {12, 3}, {12, 4}, {12, 5}, {11, 6}, {10, 6}, { 9, 6}, { 8, 6}, { 7, 6}, { 6, 6}, { 7, 6}, { 8, 6}, { 9, 6}, {10, 6}, {11, 6}, {12, 5}, {12, 4}, {12, 3}, {11, 2}, {10, 2}, { 9, 1}, { 9, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _rv_station_left_ne_far[] = { { 0, 9}, { 1, 9}, { 2, 8}, { 2, 7}, { 2, 6}, { 2, 5}, { 2, 4}, { 3, 3}, { 4, 3}, { 5, 3}, { 6, 3}, { 7, 3}, { 8, 3}, { 9, 3}, {10, 4}, {10, 5}, {10, 6}, {10, 7}, {10, 8}, {10, 9}, {10, 8}, {10, 7}, {10, 6}, {10, 5}, {10, 4}, { 9, 3}, { 8, 3}, { 7, 3}, { 6, 3}, { 5, 3}, { 4, 3}, { 3, 3}, { 2, 4}, { 1, 5}, { 0, 5}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _rv_station_left_se_far[] = { {9, 15}, {9, 14}, {8, 13}, {7, 13}, {6, 13}, {5, 13}, {4, 13}, {3, 12}, {3, 11}, {3, 10}, {3, 9}, {3, 8}, {3, 7}, {3, 6}, {4, 5}, {5, 5}, {6, 5}, {7, 5}, {8, 5}, {9, 5}, {8, 5}, {7, 5}, {6, 5}, {5, 5}, {4, 5}, {3, 6}, {3, 7}, {3, 8}, {3, 9}, {3, 10}, {3, 11}, {3, 12}, {4, 13}, {5, 14}, {5, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _rv_station_left_ne_near[] = { {0, 9}, {1, 9}, {2, 8}, {2, 7}, {2, 6}, {2, 5}, {2, 4}, {3, 3}, {4, 3}, {5, 3}, {6, 4}, {6, 5}, {6, 6}, {6, 7}, {6, 8}, {6, 9}, {6, 8}, {6, 7}, {6, 6}, {6, 5}, {6, 4}, {5, 3}, {4, 3}, {3, 3}, {2, 4}, {1, 5}, {0, 5}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _rv_station_left_se_near[] = { {9, 15}, {9, 14}, {8, 13}, {7, 13}, {6, 13}, {5, 13}, {4, 13}, {3, 12}, {3, 11}, {3, 10}, {4, 9}, {5, 9}, {6, 9}, {7, 9}, {8, 9}, {9, 9}, {8, 9}, {7, 9}, {6, 9}, {5, 9}, {4, 9}, {3, 10}, {3, 11}, {3, 12}, {4, 13}, {5, 14}, {5, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _rv_station_right_sw_far[] = { {15, 9}, {14, 9}, {13, 10}, {13, 11}, {12, 12}, {11, 12}, {10, 12}, { 9, 12}, { 8, 12}, { 7, 12}, { 6, 12}, { 5, 11}, { 5, 10}, { 5, 9}, { 5, 8}, { 5, 7}, { 5, 6}, { 5, 7}, { 5, 8}, { 5, 9}, { 5, 10}, { 5, 11}, { 6, 12}, { 7, 12}, { 8, 12}, { 9, 12}, {10, 12}, {11, 12}, {12, 12}, {13, 11}, {13, 10}, {13, 9}, {13, 8}, {13, 7}, {13, 6}, {14, 5}, {15, 5}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _rv_station_right_nw_far[] = { { 9, 0}, { 9, 1}, {10, 2}, {11, 2}, {12, 3}, {12, 4}, {12, 5}, {12, 6}, {12, 7}, {12, 8}, {12, 9}, {11, 10}, {10, 10}, { 9, 10}, { 8, 10}, { 7, 10}, { 6, 10}, { 7, 10}, { 8, 10}, { 9, 10}, {10, 10}, {11, 10}, {12, 9}, {12, 8}, {12, 7}, {12, 6}, {12, 5}, {12, 4}, {12, 3}, {11, 2}, {10, 2}, { 9, 2}, { 8, 2}, { 7, 2}, { 6, 2}, { 5, 1}, { 5, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _rv_station_right_sw_near[] = { {15, 9}, {14, 9}, {13, 10}, {13, 11}, {12, 12}, {11, 12}, {10, 12}, { 9, 11}, { 9, 10}, { 9, 9}, { 9, 8}, { 9, 7}, { 9, 6}, { 9, 7}, { 9, 8}, { 9, 9}, { 9, 10}, { 9, 11}, {10, 12}, {11, 12}, {12, 12}, {13, 11}, {13, 10}, {13, 9}, {13, 8}, {13, 7}, {13, 6}, {14, 5}, {15, 5}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _rv_station_right_nw_near[] = { { 9, 0}, { 9, 1}, {10, 2}, {11, 2}, {12, 3}, {12, 4}, {12, 5}, {11, 6}, {10, 6}, { 9, 6}, { 8, 6}, { 7, 6}, { 6, 6}, { 7, 6}, { 8, 6}, { 9, 6}, {10, 6}, {11, 6}, {12, 5}, {12, 4}, {12, 3}, {11, 2}, {10, 2}, { 9, 2}, { 8, 2}, { 7, 2}, { 6, 2}, { 5, 1}, { 5, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _rv_station_right_ne_far[] = { { 0, 5}, { 1, 5}, { 2, 4}, { 3, 3}, { 4, 3}, { 5, 3}, { 6, 3}, { 7, 3}, { 8, 3}, { 9, 3}, {10, 4}, {10, 5}, {10, 6}, {10, 7}, {10, 8}, {10, 9}, {10, 8}, {10, 7}, {10, 6}, {10, 5}, {10, 4}, { 9, 3}, { 8, 3}, { 7, 3}, { 6, 3}, { 5, 3}, { 4, 3}, { 3, 3}, { 2, 4}, { 2, 5}, { 2, 6}, { 2, 7}, { 2, 8}, { 1, 9}, { 0, 9}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _rv_station_right_se_far[] = { {5, 15}, {5, 14}, {4, 13}, {3, 12}, {3, 11}, {3, 10}, {3, 9}, {3, 8}, {3, 7}, {3, 6}, {4, 5}, {5, 5}, {6, 5}, {7, 5}, {8, 5}, {9, 5}, {8, 5}, {7, 5}, {6, 5}, {5, 5}, {4, 5}, {3, 6}, {3, 7}, {3, 8}, {3, 9}, {3, 10}, {3, 11}, {3, 12}, {4, 13}, {5, 13}, {6, 13}, {7, 13}, {8, 13}, {9, 14}, {9, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _rv_station_right_ne_near[] = { {0, 5}, {1, 5}, {2, 4}, {3, 3}, {4, 3}, {5, 3}, {6, 4}, {6, 5}, {6, 6}, {6, 7}, {6, 8}, {6, 9}, {6, 8}, {6, 7}, {6, 6}, {6, 5}, {6, 4}, {5, 3}, {4, 3}, {3, 3}, {2, 4}, {2, 5}, {2, 6}, {2, 7}, {2, 8}, {1, 9}, {0, 9}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _rv_station_right_se_near[] = { {5, 15}, {5, 14}, {4, 13}, {3, 12}, {3, 11}, {3, 10}, {4, 9}, {5, 9}, {6, 9}, {7, 9}, {8, 9}, {9, 9}, {8, 9}, {7, 9}, {6, 9}, {5, 9}, {4, 9}, {3, 10}, {3, 11}, {3, 12}, {4, 13}, {5, 13}, {6, 13}, {7, 13}, {8, 13}, {9, 14}, {9, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry * const _road_road_drive_data[] = { _roadveh_drive_data_0, _roadveh_drive_data_1, _roadveh_drive_data_2, _roadveh_drive_data_3, _roadveh_drive_data_4, _roadveh_drive_data_5, _roadveh_drive_data_6, _roadveh_drive_data_7, _roadveh_drive_data_8, _roadveh_drive_data_9, _roadveh_drive_data_10, _roadveh_drive_data_11, _roadveh_drive_data_12, _roadveh_drive_data_13, _roadveh_drive_data_14, _roadveh_drive_data_15, _roadveh_drive_data_16, _roadveh_drive_data_17, _roadveh_drive_data_18, _roadveh_drive_data_19, _roadveh_drive_data_20, _roadveh_drive_data_21, _roadveh_drive_data_22, _roadveh_drive_data_23, _roadveh_drive_data_24, _roadveh_drive_data_25, _roadveh_drive_data_26, _roadveh_drive_data_27, _roadveh_drive_data_28, _roadveh_drive_data_29, _roadveh_drive_data_30, _roadveh_drive_data_31, _rv_station_left_sw_far, _rv_station_left_nw_far, _rv_station_left_sw_near, _rv_station_left_nw_near, _rv_station_left_sw_far, _rv_station_left_nw_far, _rv_station_left_sw_near, _rv_station_left_nw_near, _rv_station_left_ne_far, _rv_station_left_se_far, _rv_station_left_ne_near, _rv_station_left_se_near, _rv_station_left_ne_far, _rv_station_left_se_far, _rv_station_left_ne_near, _rv_station_left_se_near, _rv_station_right_sw_far, _rv_station_right_nw_far, _rv_station_right_sw_near, _rv_station_right_nw_near, _rv_station_right_sw_far, _rv_station_right_nw_far, _rv_station_right_sw_near, _rv_station_right_nw_near, _rv_station_right_ne_far, _rv_station_right_se_far, _rv_station_right_ne_near, _rv_station_right_se_near, _rv_station_right_ne_far, _rv_station_right_se_far, _rv_station_right_ne_near, _rv_station_right_se_near, }; /** Table of road stop stop frames, when to stop at a road stop. */ extern const byte _road_stop_stop_frame[] = { /* Duplicated left and right because of "entered stop" bit */ 20, 20, 16, 16, 20, 20, 16, 16, 19, 19, 15, 15, 19, 19, 15, 15, 16, 16, 12, 12, 16, 16, 12, 12, 15, 15, 11, 11, 15, 15, 11, 11 }; static const RoadDriveEntry _roadveh_tram_turn_ne_0[] = { {15, 5}, {14, 5}, {13, 5}, {12, 5}, {11, 5}, {10, 5}, { 9, 5}, { 8, 5}, { 7, 5}, { 6, 5}, { 5, 5}, { 4, 5}, { 3, 5}, { 2, 5}, { 1, 5}, { 0, 5}, { 0, 6}, { 0, 7}, { 0, 8}, { 0, 9}, {RDE_TURNED | DIAGDIR_SW, 0}, { 1, 9}, { 2, 9}, { 3, 9}, { 4, 9}, { 5, 9}, { 6, 9}, { 7, 9}, { 8, 9}, { 9, 9}, {10, 9}, {11, 9}, {12, 9}, {13, 9}, {14, 9}, {15, 9}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_tram_turn_ne_1[] = { {15, 9}, {14, 9}, {13, 9}, {12, 9}, {11, 9}, {10, 9}, { 9, 9}, { 8, 9}, { 7, 9}, { 6, 9}, { 5, 9}, { 4, 9}, { 3, 9}, { 2, 9}, { 1, 9}, { 0, 9}, { 0, 8}, { 0, 7}, { 0, 6}, { 0, 5}, {RDE_TURNED | DIAGDIR_SW, 0}, { 1, 5}, { 2, 5}, { 3, 5}, { 4, 5}, { 5, 5}, { 6, 5}, { 7, 5}, { 8, 5}, { 9, 5}, {10, 5}, {11, 5}, {12, 5}, {13, 5}, {14, 5}, {15, 5}, {RDE_NEXT_TILE | DIAGDIR_SW, 0} }; static const RoadDriveEntry _roadveh_tram_turn_se_0[] = { {5, 0}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}, {5, 6}, {5, 7}, {5, 8}, {5, 9}, {5, 10}, {5, 11}, {5, 12}, {5, 13}, {5, 14}, {5, 15}, {6, 15}, {7, 15}, {8, 15}, {9, 15}, {RDE_TURNED | DIAGDIR_NW, 0}, {9, 14}, {9, 13}, {9, 12}, {9, 11}, {9, 10}, {9, 9}, {9, 8}, {9, 7}, {9, 6}, {9, 5}, {9, 4}, {9, 3}, {9, 2}, {9, 1}, {9, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_tram_turn_se_1[] = { {9, 0}, {9, 1}, {9, 2}, {9, 3}, {9, 4}, {9, 5}, {9, 6}, {9, 7}, {9, 8}, {9, 9}, {9, 10}, {9, 11}, {9, 12}, {9, 13}, {9, 14}, {9, 15}, {8, 15}, {7, 15}, {6, 15}, {5, 15}, {RDE_TURNED | DIAGDIR_NW, 0}, {5, 14}, {5, 13}, {5, 12}, {5, 11}, {5, 10}, {5, 9}, {5, 8}, {5, 7}, {5, 6}, {5, 5}, {5, 4}, {5, 3}, {5, 2}, {5, 1}, {5, 0}, {RDE_NEXT_TILE | DIAGDIR_NW, 0} }; static const RoadDriveEntry _roadveh_tram_turn_sw_0[] = { { 0, 9}, { 1, 9}, { 2, 9}, { 3, 9}, { 4, 9}, { 5, 9}, { 6, 9}, { 7, 9}, { 8, 9}, { 9, 9}, {10, 9}, {11, 9}, {12, 9}, {13, 9}, {14, 9}, {15, 9}, {15, 8}, {15, 7}, {15, 6}, {15, 5}, {RDE_TURNED | DIAGDIR_NE, 0}, {14, 5}, {13, 5}, {12, 5}, {11, 5}, {10, 5}, { 9, 5}, { 8, 5}, { 7, 5}, { 6, 5}, { 5, 5}, { 4, 5}, { 3, 5}, { 2, 5}, { 1, 5}, { 0, 5}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_tram_turn_sw_1[] = { { 0, 5}, { 1, 5}, { 2, 5}, { 3, 5}, { 4, 5}, { 5, 5}, { 6, 5}, { 7, 5}, { 8, 5}, { 9, 5}, {10, 5}, {11, 5}, {12, 5}, {13, 5}, {14, 5}, {15, 5}, {15, 6}, {15, 7}, {15, 8}, {15, 9}, {RDE_TURNED | DIAGDIR_NE, 0}, {14, 9}, {13, 9}, {12, 9}, {11, 9}, {10, 9}, { 9, 9}, { 8, 9}, { 7, 9}, { 6, 9}, { 5, 9}, { 4, 9}, { 3, 9}, { 2, 9}, { 1, 9}, { 0, 9}, {RDE_NEXT_TILE | DIAGDIR_NE, 0} }; static const RoadDriveEntry _roadveh_tram_turn_nw_0[] = { {9, 15}, {9, 14}, {9, 13}, {9, 12}, {9, 11}, {9, 10}, {9, 9}, {9, 8}, {9, 7}, {9, 6}, {9, 5}, {9, 4}, {9, 3}, {9, 2}, {9, 1}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {RDE_TURNED | DIAGDIR_SE, 0}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}, {5, 6}, {5, 7}, {5, 8}, {5, 9}, {5, 10}, {5, 11}, {5, 12}, {5, 13}, {5, 14}, {5, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry _roadveh_tram_turn_nw_1[] = { {5, 15}, {5, 14}, {5, 13}, {5, 12}, {5, 11}, {5, 10}, {5, 9}, {5, 8}, {5, 7}, {5, 6}, {5, 5}, {5, 4}, {5, 3}, {5, 2}, {5, 1}, {5, 0}, {6, 0}, {7, 0}, {8, 0}, {9, 0}, {RDE_TURNED | DIAGDIR_SE, 0}, {9, 1}, {9, 2}, {9, 3}, {9, 4}, {9, 5}, {9, 6}, {9, 7}, {9, 8}, {9, 9}, {9, 10}, {9, 11}, {9, 12}, {9, 13}, {9, 14}, {9, 15}, {RDE_NEXT_TILE | DIAGDIR_SE, 0} }; static const RoadDriveEntry * const _road_tram_drive_data[] = { _roadveh_drive_data_0, _roadveh_drive_data_1, _roadveh_drive_data_2, _roadveh_drive_data_3, _roadveh_drive_data_4, _roadveh_drive_data_5, _roadveh_tram_turn_ne_0, _roadveh_tram_turn_se_0, _roadveh_drive_data_8, _roadveh_drive_data_9, _roadveh_drive_data_10, _roadveh_drive_data_11, _roadveh_drive_data_12, _roadveh_drive_data_13, _roadveh_tram_turn_sw_0, _roadveh_tram_turn_nw_0, _roadveh_drive_data_16, _roadveh_drive_data_17, _roadveh_drive_data_18, _roadveh_drive_data_19, _roadveh_drive_data_20, _roadveh_drive_data_21, _roadveh_tram_turn_ne_1, _roadveh_tram_turn_se_1, _roadveh_drive_data_24, _roadveh_drive_data_25, _roadveh_drive_data_26, _roadveh_drive_data_27, _roadveh_drive_data_28, _roadveh_drive_data_29, _roadveh_tram_turn_sw_1, _roadveh_tram_turn_nw_1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; static const RoadDriveEntry * const * const _road_drive_data[2] = { _road_road_drive_data, _road_tram_drive_data, }; openttd-1.3.3/src/table/elrail_data.h0000644000000000000000000004347612246102566016203 0ustar rootroot/* $Id: elrail_data.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file elrail_data.h Stores all the data for overhead wire and pylon drawing. * @see elrail.c */ #ifndef ELRAIL_DATA_H #define ELRAIL_DATA_H /** * Tile Location group. * This defines whether the X and or Y coordinate of a tile is even */ enum TLG { XEVEN_YEVEN = 0, XEVEN_YODD = 1, XODD_YEVEN = 2, XODD_YODD = 3, TLG_END }; /** * When determining the pylon configuration on the edge, two tiles are taken * into account: the tile being drawn itself (the home tile, the one in * ti->tile), and the neighbouring tile */ enum TileSource { TS_HOME = 0, TS_NEIGHBOUR = 1, TS_END }; static const uint NUM_TRACKS_AT_PCP = 6; /** Which PPPs are possible at all on a given PCP */ static const byte AllowedPPPonPCP[DIAGDIR_END] = { 1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW, 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W, 1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW, 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W, }; /** * Which of the PPPs are inside the tile. For the two PPPs on the tile border * the following system is used: if you rotate the PCP so that it is in the * north, the eastern PPP belongs to the tile. */ static const byte OwnedPPPonPCP[DIAGDIR_END] = { 1 << DIR_SE | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W, 1 << DIR_N | 1 << DIR_SW | 1 << DIR_W | 1 << DIR_NW, 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_NW, 1 << DIR_NE | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S }; /** Maps a track bit onto two PCP positions */ static const DiagDirection PCPpositions[TRACK_END][2] = { {DIAGDIR_NE, DIAGDIR_SW}, // X {DIAGDIR_SE, DIAGDIR_NW}, // Y {DIAGDIR_NW, DIAGDIR_NE}, // UPPER {DIAGDIR_SE, DIAGDIR_SW}, // LOWER {DIAGDIR_SW, DIAGDIR_NW}, // LEFT {DIAGDIR_NE, DIAGDIR_SE}, // RIGHT }; #define PCP_NOT_ON_TRACK 0xFF /** * Preferred points of each trackbit. Those are the ones perpendicular to the * track, plus the point in extension of the track (to mark end-of-track). PCPs * which are not on either end of the track are fully preferred. * @see PCPpositions */ static const byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = { { // X 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW, // NE PCP_NOT_ON_TRACK, // SE 1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW, // SW PCP_NOT_ON_TRACK // NE }, { // Y PCP_NOT_ON_TRACK, 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_SW, PCP_NOT_ON_TRACK, 1 << DIR_SW | 1 << DIR_NW | 1 << DIR_NE }, { // UPPER 1 << DIR_E | 1 << DIR_N | 1 << DIR_S, PCP_NOT_ON_TRACK, PCP_NOT_ON_TRACK, 1 << DIR_W | 1 << DIR_N | 1 << DIR_S }, { // LOWER PCP_NOT_ON_TRACK, 1 << DIR_E | 1 << DIR_N | 1 << DIR_S, 1 << DIR_W | 1 << DIR_N | 1 << DIR_S, PCP_NOT_ON_TRACK }, { // LEFT PCP_NOT_ON_TRACK, PCP_NOT_ON_TRACK, 1 << DIR_S | 1 << DIR_E | 1 << DIR_W, 1 << DIR_N | 1 << DIR_E | 1 << DIR_W }, { // RIGHT 1 << DIR_N | 1 << DIR_E | 1 << DIR_W, 1 << DIR_S | 1 << DIR_E | 1 << DIR_W, PCP_NOT_ON_TRACK, PCP_NOT_ON_TRACK } }; #undef PCP_NOT_ON_TRACK #define NUM_IGNORE_GROUPS 3 #define IGNORE_NONE 0xFF /** * In case we have a straight line, we place pylon only every two tiles, * so there are certain tiles which we ignore. A straight line is found if * we have exactly two PPPs. */ static const byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = { { // Ignore group 1, X and Y tracks { // X even, Y even IGNORE_NONE, 1 << DIR_NE | 1 << DIR_SW, 1 << DIR_NW | 1 << DIR_SE, IGNORE_NONE }, { // X even, Y odd IGNORE_NONE, IGNORE_NONE, 1 << DIR_NW | 1 << DIR_SE, 1 << DIR_NE | 1 << DIR_SW }, { // X odd, Y even 1 << DIR_NW | 1 << DIR_SE, 1 << DIR_NE | 1 << DIR_SW, IGNORE_NONE, IGNORE_NONE }, { // X odd, Y odd 1 << DIR_NW | 1 << DIR_SE, IGNORE_NONE, IGNORE_NONE, 1 << DIR_NE | 1 << DIR_SW } }, { // Ignore group 2, LEFT and RIGHT tracks { 1 << DIR_E | 1 << DIR_W, IGNORE_NONE, IGNORE_NONE, 1 << DIR_E | 1 << DIR_W }, { IGNORE_NONE, 1 << DIR_E | 1 << DIR_W, 1 << DIR_E | 1 << DIR_W, IGNORE_NONE }, { IGNORE_NONE, 1 << DIR_E | 1 << DIR_W, 1 << DIR_E | 1 << DIR_W, IGNORE_NONE }, { 1 << DIR_E | 1 << DIR_W, IGNORE_NONE, IGNORE_NONE, 1 << DIR_E | 1 << DIR_W } }, { // Ignore group 3, UPPER and LOWER tracks { 1 << DIR_N | 1 << DIR_S, 1 << DIR_N | 1 << DIR_S, IGNORE_NONE, IGNORE_NONE }, { IGNORE_NONE, IGNORE_NONE, 1 << DIR_N | 1 << DIR_S, 1 << DIR_N | 1 << DIR_S }, { IGNORE_NONE, IGNORE_NONE, 1 << DIR_N | 1 << DIR_S , 1 << DIR_N | 1 << DIR_S }, { 1 << DIR_N | 1 << DIR_S, 1 << DIR_N | 1 << DIR_S, IGNORE_NONE, IGNORE_NONE } } }; #undef NO_IGNORE /** Which pylons can definitely NOT be built */ static const byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = { {1 << DIR_SW | 1 << DIR_NE, 0, 1 << DIR_SW | 1 << DIR_NE, 0 }, // X {0, 1 << DIR_NW | 1 << DIR_SE, 0, 1 << DIR_NW | 1 << DIR_SE}, // Y {1 << DIR_W | 1 << DIR_E, 0, 0, 1 << DIR_W | 1 << DIR_E }, // UPPER {0, 1 << DIR_W | 1 << DIR_E, 1 << DIR_W | 1 << DIR_E, 0 }, // LOWER {0, 0, 1 << DIR_S | 1 << DIR_N, 1 << DIR_N | 1 << DIR_S }, // LEFT {1 << DIR_S | 1 << DIR_N, 1 << DIR_S | 1 << DIR_N, 0, 0, }, // RIGHT }; /* This array stores which track bits can meet at a tile edge */ static const Track TracksAtPCP[DIAGDIR_END][NUM_TRACKS_AT_PCP] = { {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT}, {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT}, {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT}, {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT}, }; /* takes each of the 6 track bits from the array above and * assigns it to the home tile or neighbour tile */ static const TileSource TrackSourceTile[DIAGDIR_END][NUM_TRACKS_AT_PCP] = { {TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME }, {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME }, {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_HOME , TS_NEIGHBOUR}, {TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR}, }; /* Several PPPs maybe exist, here they are sorted in order of preference. */ static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = { // X - Y { // PCP 0 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W}, // evn - evn {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, // evn - odd {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E}, // odd - evn {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, // odd - odd }, {// PCP 1 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W}, // evn - evn {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, // evn - odd {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E}, // odd - evn {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, // odd - odd }, {// PCP 2 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E}, // evn - evn {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, // evn - odd {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W}, // odd - evn {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, // odd - odd }, {// PCP 3 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E}, // evn - evn {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, // evn - odd {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W}, // odd - evn {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, // odd - odd } }; /* Geometric placement of the PCP relative to the tile origin */ static const int8 x_pcp_offsets[DIAGDIR_END] = {0, 8, 16, 8}; static const int8 y_pcp_offsets[DIAGDIR_END] = {8, 16, 8, 0}; /* Geometric placement of the PPP relative to the PCP*/ static const int8 x_ppp_offsets[DIR_END] = {-2, -4, -2, 0, 2, 4, 2, 0}; static const int8 y_ppp_offsets[DIR_END] = {-2, 0, 2, 4, 2, 0, -2, -4}; /** * Offset for pylon sprites from the base pylon sprite. */ enum PylonSpriteOffset { PSO_Y_NE, PSO_Y_SW, PSO_X_NW, PSO_X_SE, PSO_EW_N, PSO_EW_S, PSO_NS_W, PSO_NS_E, }; /* The type of pylon to draw at each PPP */ static const uint8 pylon_sprites[] = { PSO_EW_N, PSO_Y_NE, PSO_NS_E, PSO_X_SE, PSO_EW_S, PSO_Y_SW, PSO_NS_W, PSO_X_NW, }; /** * Offset for wire sprites from the base wire sprite. */ enum WireSpriteOffset { WSO_X_SHORT, WSO_Y_SHORT, WSO_EW_SHORT, WSO_NS_SHORT, WSO_X_SHORT_DOWN, WSO_Y_SHORT_UP, WSO_X_SHORT_UP, WSO_Y_SHORT_DOWN, WSO_X_SW, WSO_Y_SE, WSO_EW_E, WSO_NS_S, WSO_X_SW_DOWN, WSO_Y_SE_UP, WSO_X_SW_UP, WSO_Y_SE_DOWN, WSO_X_NE, WSO_Y_NW, WSO_EW_W, WSO_NS_N, WSO_X_NE_DOWN, WSO_Y_NW_UP, WSO_X_NE_UP, WSO_Y_NW_DOWN, WSO_ENTRANCE_NE, WSO_ENTRANCE_SE, WSO_ENTRANCE_SW, WSO_ENTRANCE_NW, }; struct SortableSpriteStruct { uint8 image_offset; int8 x_offset; int8 y_offset; int8 x_size; int8 y_size; int8 z_size; int8 z_offset; }; /** Distance between wire and rail */ static const uint ELRAIL_ELEVATION = 10; /** Wires that a draw one level higher than the north corner. */ static const uint ELRAIL_ELEVRAISE = ELRAIL_ELEVATION + TILE_HEIGHT; static const SortableSpriteStruct CatenarySpriteData[] = { /* X direction * Flat tiles: * Wires */ { WSO_X_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! 0: Wire in X direction, pylon on the SW end only { WSO_X_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! 1: Wire in X direction, pylon on the NE end { WSO_X_SHORT, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! 2: Wire in X direction, pylon on both ends /* "up" tiles * Wires */ { WSO_X_SW_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE }, //! 3: Wire in X pitch up, pylon on the SW end only { WSO_X_NE_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE }, //! 4: Wire in X pitch up, pylon on the NE end { WSO_X_SHORT_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE }, //! 5: Wire in X pitch up, pylon on both ends /* "down" tiles * Wires */ { WSO_X_SW_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION }, //! 6: Wire in X pitch down, pylon on the SW end { WSO_X_NE_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION }, //! 7: Wire in X pitch down, pylon on the NE end { WSO_X_SHORT_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION }, //! 8: Wire in X pitch down, pylon on both ends /* Y direction * Flat tiles: * Wires */ { WSO_Y_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! 9: Wire in Y direction, pylon on the SE end only { WSO_Y_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //!10: Wire in Y direction, pylon on the NW end { WSO_Y_SHORT, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //!11: Wire in Y direction, pylon on both ends /* "up" tiles * Wires */ { WSO_Y_SE_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE }, //!12: Wire in Y pitch up, pylon on the SE end only { WSO_Y_NW_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE }, //!13: Wire in Y pitch up, pylon on the NW end { WSO_Y_SHORT_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE }, //!14: Wire in Y pitch up, pylon on both ends /* "down" tiles * Wires */ { WSO_Y_SE_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION }, //!15: Wire in Y pitch down, pylon on the SE end { WSO_Y_NW_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION }, //!16: Wire in Y pitch down, pylon on the NW end { WSO_Y_SHORT_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION }, //!17: Wire in Y pitch down, pylon on both ends /* NS Direction */ { WSO_NS_SHORT, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!18: LEFT trackbit wire, pylon on both ends { WSO_NS_SHORT, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!19: RIGHT trackbit wire, pylon on both ends { WSO_NS_N, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!20: LEFT trackbit wire, pylon on N end { WSO_NS_N, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!21: RIGHT trackbit wire, pylon on N end { WSO_NS_S, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!22: LEFT trackbit wire, pylon on S end { WSO_NS_S, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!23: RIGHT trackbit wire, pylon on S end /* EW Direction */ { WSO_EW_SHORT, 7, 0, 1, 1, 1, ELRAIL_ELEVATION }, //!24: UPPER trackbit wire, pylon on both ends { WSO_EW_SHORT, 15, 8, 3, 3, 1, ELRAIL_ELEVATION }, //!25: LOWER trackbit wire, pylon on both ends { WSO_EW_W, 7, 0, 1, 1, 1, ELRAIL_ELEVATION }, //!28: UPPER trackbit wire, pylon on both ends { WSO_EW_W, 15, 8, 3, 3, 1, ELRAIL_ELEVATION }, //!29: LOWER trackbit wire, pylon on both ends { WSO_EW_E, 7, 0, 1, 1, 1, ELRAIL_ELEVATION }, //!32: UPPER trackbit wire, pylon on both ends { WSO_EW_E, 15, 8, 3, 3, 1, ELRAIL_ELEVATION } //!33: LOWER trackbit wire, pylon on both ends }; static const SortableSpriteStruct CatenarySpriteData_Depot[] = { { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE depot exit { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE depot exit { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW depot exit { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW depot exit }; static const SortableSpriteStruct CatenarySpriteData_Tunnel[] = { { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel exit { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel exit { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel exit { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel exit }; /** * Refers to a certain element of the catenary. * Identifiers for Wires: *
  1. Direction of the wire
  2. *
  3. Slope of the tile for diagonals, placement inside the track for horiz/vertical pieces
  4. *
  5. Place where a pylon shoule be
* Identifiers for Pylons: *
  1. Direction of the wire
  2. *
  3. Slope of the tile
  4. *
  5. Position of the Pylon relative to the track
  6. *
  7. Position of the Pylon inside the tile
*/ enum CatenarySprite { WIRE_X_FLAT_SW, WIRE_X_FLAT_NE, WIRE_X_FLAT_BOTH, WIRE_X_UP_SW, WIRE_X_UP_NE, WIRE_X_UP_BOTH, WIRE_X_DOWN_SW, WIRE_X_DOWN_NE, WIRE_X_DOWN_BOTH, WIRE_Y_FLAT_SE, WIRE_Y_FLAT_NW, WIRE_Y_FLAT_BOTH, WIRE_Y_UP_SE, WIRE_Y_UP_NW, WIRE_Y_UP_BOTH, WIRE_Y_DOWN_SE, WIRE_Y_DOWN_NW, WIRE_Y_DOWN_BOTH, WIRE_NS_W_BOTH, WIRE_NS_E_BOTH, WIRE_NS_W_N, WIRE_NS_E_N, WIRE_NS_W_S, WIRE_NS_E_S, WIRE_EW_N_BOTH, WIRE_EW_S_BOTH, WIRE_EW_N_W, WIRE_EW_S_W, WIRE_EW_N_E, WIRE_EW_S_E, INVALID_CATENARY = 0xFF }; /* Selects a Wire (with white and grey ends) depending on whether: * a) none (should never happen) * b) the first * c) the second * d) both * PCP exists.*/ static const CatenarySprite Wires[5][TRACK_END][4] = { { // Tileh == 0 {INVALID_CATENARY, WIRE_X_FLAT_NE, WIRE_X_FLAT_SW, WIRE_X_FLAT_BOTH}, {INVALID_CATENARY, WIRE_Y_FLAT_SE, WIRE_Y_FLAT_NW, WIRE_Y_FLAT_BOTH}, {INVALID_CATENARY, WIRE_EW_N_W, WIRE_EW_N_E, WIRE_EW_N_BOTH}, {INVALID_CATENARY, WIRE_EW_S_E, WIRE_EW_S_W, WIRE_EW_S_BOTH}, {INVALID_CATENARY, WIRE_NS_W_S, WIRE_NS_W_N, WIRE_NS_W_BOTH}, {INVALID_CATENARY, WIRE_NS_E_N, WIRE_NS_E_S, WIRE_NS_E_BOTH}, }, { // Tileh == 3 {INVALID_CATENARY, WIRE_X_UP_NE, WIRE_X_UP_SW, WIRE_X_UP_BOTH}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, }, { // Tileh == 6 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, WIRE_Y_UP_SE, WIRE_Y_UP_NW, WIRE_Y_UP_BOTH}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, }, { // Tileh == 9 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, WIRE_Y_DOWN_SE, WIRE_Y_DOWN_NW, WIRE_Y_DOWN_BOTH}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, }, { // Tileh == 12 {INVALID_CATENARY, WIRE_X_DOWN_NE, WIRE_X_DOWN_SW, WIRE_X_DOWN_BOTH}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY}, } }; #endif /* ELRAIL_DATA_H */ openttd-1.3.3/src/table/track_land.h0000644000000000000000000000427412246102566016035 0ustar rootroot/* $Id: track_land.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file track_land.h Sprites to use and how to display them for train depot tiles. */ #define TILE_SEQ_LINE(img, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 23, {img, PAL_NONE} }, #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} } static const DrawTileSeqStruct _depot_gfx_NE[] = { TILE_SEQ_LINE(SPR_RAIL_DEPOT_NE | (1 << PALETTE_MODIFIER_COLOUR), 2, 13, 13, 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _depot_gfx_SE[] = { TILE_SEQ_LINE(SPR_RAIL_DEPOT_SE_1 | (1 << PALETTE_MODIFIER_COLOUR), 2, 2, 1, 13) TILE_SEQ_LINE(SPR_RAIL_DEPOT_SE_2 | (1 << PALETTE_MODIFIER_COLOUR), 13, 2, 1, 13) TILE_SEQ_END() }; static const DrawTileSeqStruct _depot_gfx_SW[] = { TILE_SEQ_LINE(SPR_RAIL_DEPOT_SW_1 | (1 << PALETTE_MODIFIER_COLOUR), 2, 2, 13, 1) TILE_SEQ_LINE(SPR_RAIL_DEPOT_SW_2 | (1 << PALETTE_MODIFIER_COLOUR), 2, 13, 13, 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _depot_gfx_NW[] = { TILE_SEQ_LINE(SPR_RAIL_DEPOT_NW | (1 << PALETTE_MODIFIER_COLOUR), 13, 2, 1, 13) TILE_SEQ_END() }; static const DrawTileSprites _depot_gfx_table[] = { { {SPR_FLAT_GRASS_TILE, PAL_NONE}, _depot_gfx_NE }, { {SPR_RAIL_TRACK_Y, PAL_NONE}, _depot_gfx_SE }, { {SPR_RAIL_TRACK_X, PAL_NONE}, _depot_gfx_SW }, { {SPR_FLAT_GRASS_TILE, PAL_NONE}, _depot_gfx_NW } }; static const DrawTileSprites _depot_invisible_gfx_table[] = { { {SPR_RAIL_TRACK_X, PAL_NONE}, _depot_gfx_NE }, { {SPR_RAIL_TRACK_Y, PAL_NONE}, _depot_gfx_SE }, { {SPR_RAIL_TRACK_X, PAL_NONE}, _depot_gfx_SW }, { {SPR_RAIL_TRACK_Y, PAL_NONE}, _depot_gfx_NW } }; #undef TILE_SEQ_LINE #undef TILE_SEQ_END openttd-1.3.3/src/table/build_industry.h0000644000000000000000000021467612246102566017004 0ustar rootroot/* $Id: build_industry.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file build_industry.h Tables with default industry layouts and behaviours. */ #ifndef BUILD_INDUSTRY_H #define BUILD_INDUSTRY_H /** * Definition of an industry tiles layout. * @param x offset x of this tile * @param y offset y of this tile * @param m index of the tile. * @see _industry_specs * @see IndustryTileTable */ #define MK(x, y, m) {{x, y}, m} /** * Terminator of industry tiles layout definition */ #define MKEND {{-0x80, 0}, 0} static const IndustryTileTable _tile_table_coal_mine_0[] = { MK(1, 1, 0), MK(1, 2, 2), MK(0, 0, 5), MK(1, 0, 6), MK(2, 0, 3), MK(2, 2, 3), MKEND }; static const IndustryTileTable _tile_table_coal_mine_1[] = { MK(1, 1, 0), MK(1, 2, 2), MK(2, 0, 0), MK(2, 1, 2), MK(1, 0, 3), MK(0, 0, 3), MK(0, 1, 4), MK(0, 2, 4), MK(2, 2, 4), MKEND }; static const IndustryTileTable _tile_table_coal_mine_2[] = { MK(0, 0, 0), MK(0, 1, 2), MK(0, 2, 5), MK(1, 0, 3), MK(1, 1, 3), MK(1, 2, 6), MKEND }; static const IndustryTileTable _tile_table_coal_mine_3[] = { MK(0, 1, 0), MK(0, 2, 2), MK(0, 3, 4), MK(1, 0, 5), MK(1, 1, 0), MK(1, 2, 2), MK(1, 3, 3), MK(2, 0, 6), MK(2, 1, 4), MK(2, 2, 3), MKEND }; static const IndustryTileTable * const _tile_table_coal_mine[] = { _tile_table_coal_mine_0, _tile_table_coal_mine_1, _tile_table_coal_mine_2, _tile_table_coal_mine_3, }; static const IndustryTileTable _tile_table_power_station_0[] = { MK(0, 0, 7), MK(0, 1, 9), MK(1, 0, 7), MK(1, 1, 8), MK(2, 0, 7), MK(2, 1, 8), MK(3, 0, 10), MK(3, 1, 10), MKEND }; static const IndustryTileTable _tile_table_power_station_1[] = { MK(0, 1, 7), MK(0, 2, 7), MK(1, 0, 8), MK(1, 1, 8), MK(1, 2, 7), MK(2, 0, 9), MK(2, 1, 10), MK(2, 2, 9), MKEND }; static const IndustryTileTable _tile_table_power_station_2[] = { MK(0, 0, 7), MK(0, 1, 7), MK(1, 0, 9), MK(1, 1, 8), MK(2, 0, 10), MK(2, 1, 9), MKEND }; static const IndustryTileTable * const _tile_table_power_station[] = { _tile_table_power_station_0, _tile_table_power_station_1, _tile_table_power_station_2, }; static const IndustryTileTable _tile_table_sawmill_0[] = { MK(1, 0, 14), MK(1, 1, 12), MK(1, 2, 11), MK(2, 0, 14), MK(2, 1, 13), MK(0, 0, 15), MK(0, 1, 15), MK(0, 2, 12), MKEND }; static const IndustryTileTable _tile_table_sawmill_1[] = { MK(0, 0, 15), MK(0, 1, 11), MK(0, 2, 14), MK(1, 0, 15), MK(1, 1, 13), MK(1, 2, 12), MK(2, 0, 11), MK(2, 1, 13), MKEND }; static const IndustryTileTable * const _tile_table_sawmill[] = { _tile_table_sawmill_0, _tile_table_sawmill_1, }; static const IndustryTileTable _tile_table_forest_0[] = { MK(0, 0, 16), MK(0, 1, 16), MK(0, 2, 16), MK(0, 3, 16), MK(1, 0, 16), MK(1, 1, 16), MK(1, 2, 16), MK(1, 3, 16), MK(2, 0, 16), MK(2, 1, 16), MK(2, 2, 16), MK(2, 3, 16), MK(3, 0, 16), MK(3, 1, 16), MK(3, 2, 16), MK(3, 3, 16), MK(1, 4, 16), MK(2, 4, 16), MKEND }; static const IndustryTileTable _tile_table_forest_1[] = { MK(0, 0, 16), MK(1, 0, 16), MK(2, 0, 16), MK(3, 0, 16), MK(4, 0, 16), MK(0, 1, 16), MK(1, 1, 16), MK(2, 1, 16), MK(3, 1, 16), MK(4, 1, 16), MK(0, 2, 16), MK(1, 2, 16), MK(2, 2, 16), MK(3, 2, 16), MK(4, 2, 16), MK(0, 3, 16), MK(1, 3, 16), MK(2, 3, 16), MK(3, 3, 16), MK(4, 3, 16), MK(1, 4, 16), MK(2, 4, 16), MK(3, 4, 16), MKEND }; static const IndustryTileTable * const _tile_table_forest[] = { _tile_table_forest_0, _tile_table_forest_1, }; static const IndustryTileTable _tile_table_oil_refinery_0[] = { MK(0, 0, 20), MK(0, 1, 21), MK(0, 2, 22), MK(0, 3, 21), MK(1, 0, 20), MK(1, 1, 19), MK(1, 2, 22), MK(1, 3, 20), MK(2, 1, 18), MK(2, 2, 18), MK(2, 3, 18), MK(3, 2, 18), MK(3, 3, 18), MK(2, 0, 23), MK(3, 1, 23), MKEND }; static const IndustryTileTable _tile_table_oil_refinery_1[] = { MK(0, 0, 18), MK(0, 1, 18), MK(0, 2, 21), MK(0, 3, 22), MK(0, 4, 20), MK(1, 0, 18), MK(1, 1, 18), MK(1, 2, 19), MK(1, 3, 20), MK(2, 0, 18), MK(2, 1, 18), MK(2, 2, 19), MK(2, 3, 22), MK(1, 4, 23), MK(2, 4, 23), MKEND }; static const IndustryTileTable * const _tile_table_oil_refinery[] = { _tile_table_oil_refinery_0, _tile_table_oil_refinery_1, }; static const IndustryTileTable _tile_table_oil_rig_0[] = { MK(0, 0, 24), MK(0, 1, 24), MK(0, 2, 25), MK(1, 0, 26), MK(1, 1, 27), MK(1, 2, 28), MK(-4, -5, 255), MK(-4, -4, 255), MK(-4, -3, 255), MK(-4, -2, 255), MK(-4, -1, 255), MK(-4, 0, 255), MK(-4, 1, 255), MK(-4, 2, 255), MK(-4, 3, 255), MK(-4, 4, 255), MK(-4, 5, 255), MK(-3, 5, 255), MK(-2, 5, 255), MK(-1, 5, 255), MK(0, 6, 255), MK(1, 6, 255), MK(2, 6, 255), MK(3, 6, 255), MK(4, 6, 255), MK(5, 6, 255), MK(5, 5, 255), MK(5, 4, 255), MK(5, 3, 255), MK(5, 2, 255), MK(5, 1, 255), MK(5, 0, 255), MK(5, -1, 255), MK(5, -2, 255), MK(5, -3, 255), MK(5, -4, 255), MK(4, -4, 255), MK(3, -4, 255), MK(2, -4, 255), MK(1, -4, 255), MK(0, -4, 255), MK(-1, -5, 255), MK(-2, -5, 255), MK(-3, -5, 255), MK(2, 0, 255), MKEND }; static const IndustryTileTable * const _tile_table_oil_rig[] = { _tile_table_oil_rig_0, }; static const IndustryTileTable _tile_table_factory_0[] = { MK(0, 0, 39), MK(0, 1, 40), MK(1, 0, 41), MK(1, 1, 42), MK(0, 2, 39), MK(0, 3, 40), MK(1, 2, 41), MK(1, 3, 42), MK(2, 1, 39), MK(2, 2, 40), MK(3, 1, 41), MK(3, 2, 42), MKEND }; static const IndustryTileTable _tile_table_factory_1[] = { MK(0, 0, 39), MK(0, 1, 40), MK(1, 0, 41), MK(1, 1, 42), MK(2, 0, 39), MK(2, 1, 40), MK(3, 0, 41), MK(3, 1, 42), MK(1, 2, 39), MK(1, 3, 40), MK(2, 2, 41), MK(2, 3, 42), MKEND }; static const IndustryTileTable * const _tile_table_factory[] = { _tile_table_factory_0, _tile_table_factory_1, }; static const IndustryTileTable _tile_table_printing_works_0[] = { MK(0, 0, 43), MK(0, 1, 44), MK(1, 0, 45), MK(1, 1, 46), MK(0, 2, 43), MK(0, 3, 44), MK(1, 2, 45), MK(1, 3, 46), MK(2, 1, 43), MK(2, 2, 44), MK(3, 1, 45), MK(3, 2, 46), MKEND }; static const IndustryTileTable _tile_table_printing_works_1[] = { MK(0, 0, 43), MK(0, 1, 44), MK(1, 0, 45), MK(1, 1, 46), MK(2, 0, 43), MK(2, 1, 44), MK(3, 0, 45), MK(3, 1, 46), MK(1, 2, 43), MK(1, 3, 44), MK(2, 2, 45), MK(2, 3, 46), MKEND }; static const IndustryTileTable * const _tile_table_printing_works[] = { _tile_table_printing_works_0, _tile_table_printing_works_1, }; static const IndustryTileTable _tile_table_steel_mill_0[] = { MK(2, 1, 52), MK(2, 2, 53), MK(3, 1, 54), MK(3, 2, 55), MK(0, 0, 56), MK(1, 0, 57), MK(0, 1, 56), MK(1, 1, 57), MK(0, 2, 56), MK(1, 2, 57), MK(2, 0, 56), MK(3, 0, 57), MKEND }; static const IndustryTileTable _tile_table_steel_mill_1[] = { MK(0, 0, 52), MK(0, 1, 53), MK(1, 0, 54), MK(1, 1, 55), MK(2, 0, 52), MK(2, 1, 53), MK(3, 0, 54), MK(3, 1, 55), MK(0, 2, 56), MK(1, 2, 57), MK(2, 2, 56), MK(3, 2, 57), MK(1, 3, 56), MK(2, 3, 57), MKEND }; static const IndustryTileTable * const _tile_table_steel_mill[] = { _tile_table_steel_mill_0, _tile_table_steel_mill_1, }; static const IndustryTileTable _tile_table_farm_0[] = { MK(1, 0, 33), MK(1, 1, 34), MK(1, 2, 36), MK(0, 0, 37), MK(0, 1, 37), MK(0, 2, 36), MK(2, 0, 35), MK(2, 1, 38), MK(2, 2, 38), MKEND }; static const IndustryTileTable _tile_table_farm_1[] = { MK(1, 1, 33), MK(1, 2, 34), MK(0, 0, 35), MK(0, 1, 36), MK(0, 2, 36), MK(0, 3, 35), MK(1, 0, 37), MK(1, 3, 38), MK(2, 0, 37), MK(2, 1, 37), MK(2, 2, 38), MK(2, 3, 38), MKEND }; static const IndustryTileTable _tile_table_farm_2[] = { MK(2, 0, 33), MK(2, 1, 34), MK(0, 0, 36), MK(0, 1, 36), MK(0, 2, 37), MK(0, 3, 37), MK(1, 0, 35), MK(1, 1, 38), MK(1, 2, 38), MK(1, 3, 37), MK(2, 2, 37), MK(2, 3, 35), MKEND }; static const IndustryTileTable * const _tile_table_farm[] = { _tile_table_farm_0, _tile_table_farm_1, _tile_table_farm_2, }; static const IndustryTileTable _tile_table_copper_mine_0[] = { MK(0, 0, 47), MK(0, 1, 49), MK(0, 2, 51), MK(1, 0, 47), MK(1, 1, 49), MK(1, 2, 50), MK(2, 0, 51), MK(2, 1, 51), MKEND }; static const IndustryTileTable _tile_table_copper_mine_1[] = { MK(0, 0, 50), MK(0, 1, 47), MK(0, 2, 49), MK(1, 0, 47), MK(1, 1, 49), MK(1, 2, 51), MK(2, 0, 51), MK(2, 1, 47), MK(2, 2, 49), MKEND }; static const IndustryTileTable * const _tile_table_copper_mine[] = { _tile_table_copper_mine_0, _tile_table_copper_mine_1, }; static const IndustryTileTable _tile_table_oil_well_0[] = { MK(0, 0, 29), MK(1, 0, 29), MK(2, 0, 29), MK(0, 1, 29), MK(0, 2, 29), MKEND }; static const IndustryTileTable _tile_table_oil_well_1[] = { MK(0, 0, 29), MK(1, 0, 29), MK(1, 1, 29), MK(2, 2, 29), MK(2, 3, 29), MKEND }; static const IndustryTileTable * const _tile_table_oil_well[] = { _tile_table_oil_well_0, _tile_table_oil_well_1, }; static const IndustryTileTable _tile_table_bank_0[] = { MK(0, 0, 58), MK(1, 0, 59), MKEND }; static const IndustryTileTable * const _tile_table_bank[] = { _tile_table_bank_0, }; static const IndustryTileTable _tile_table_food_process_0[] = { MK(0, 0, 60), MK(1, 0, 60), MK(2, 0, 60), MK(0, 1, 60), MK(1, 1, 60), MK(2, 1, 60), MK(0, 2, 61), MK(1, 2, 61), MK(2, 2, 63), MK(0, 3, 62), MK(1, 3, 62), MK(2, 3, 63), MKEND }; static const IndustryTileTable _tile_table_food_process_1[] = { MK(0, 0, 61), MK(1, 0, 60), MK(2, 0, 61), MK(3, 0, 61), MK(0, 1, 62), MK(1, 1, 63), MK(2, 1, 63), MK(3, 1, 63), MK(0, 2, 60), MK(1, 2, 60), MK(2, 2, 60), MK(3, 2, 60), MK(0, 3, 62), MK(1, 3, 62), MKEND }; static const IndustryTileTable * const _tile_table_food_process[] = { _tile_table_food_process_0, _tile_table_food_process_1, }; static const IndustryTileTable _tile_table_paper_mill_0[] = { MK(0, 0, 64), MK(1, 0, 65), MK(2, 0, 66), MK(3, 0, 67), MK(0, 1, 68), MK(1, 1, 69), MK(2, 1, 67), MK(3, 1, 67), MK(0, 2, 66), MK(1, 2, 71), MK(2, 2, 71), MK(3, 2, 70), MKEND }; static const IndustryTileTable * const _tile_table_paper_mill[] = { _tile_table_paper_mill_0, }; static const IndustryTileTable _tile_table_gold_mine_0[] = { MK(0, 0, 72), MK(0, 1, 73), MK(0, 2, 74), MK(0, 3, 75), MK(1, 0, 76), MK(1, 1, 77), MK(1, 2, 78), MK(1, 3, 79), MK(2, 0, 80), MK(2, 1, 81), MK(2, 2, 82), MK(2, 3, 83), MK(3, 0, 84), MK(3, 1, 85), MK(3, 2, 86), MK(3, 3, 87), MKEND }; static const IndustryTileTable * const _tile_table_gold_mine[] = { _tile_table_gold_mine_0, }; static const IndustryTileTable _tile_table_bank2_0[] = { MK(0, 0, 89), MK(1, 0, 90), MKEND }; static const IndustryTileTable * const _tile_table_bank2[] = { _tile_table_bank2_0, }; static const IndustryTileTable _tile_table_diamond_mine_0[] = { MK(0, 0, 91), MK(0, 1, 92), MK(0, 2, 93), MK(1, 0, 94), MK(1, 1, 95), MK(1, 2, 96), MK(2, 0, 97), MK(2, 1, 98), MK(2, 2, 99), MKEND }; static const IndustryTileTable * const _tile_table_diamond_mine[] = { _tile_table_diamond_mine_0, }; static const IndustryTileTable _tile_table_iron_mine_0[] = { MK(0, 0, 100), MK(0, 1, 101), MK(0, 2, 102), MK(0, 3, 103), MK(1, 0, 104), MK(1, 1, 105), MK(1, 2, 106), MK(1, 3, 107), MK(2, 0, 108), MK(2, 1, 109), MK(2, 2, 110), MK(2, 3, 111), MK(3, 0, 112), MK(3, 1, 113), MK(3, 2, 114), MK(3, 3, 115), MKEND }; static const IndustryTileTable * const _tile_table_iron_mine[] = { _tile_table_iron_mine_0, }; static const IndustryTileTable _tile_table_fruit_plantation_0[] = { MK(0, 0, 116), MK(0, 1, 116), MK(0, 2, 116), MK(0, 3, 116), MK(1, 0, 116), MK(1, 1, 116), MK(1, 2, 116), MK(1, 3, 116), MK(2, 0, 116), MK(2, 1, 116), MK(2, 2, 116), MK(2, 3, 116), MK(3, 0, 116), MK(3, 1, 116), MK(3, 2, 116), MK(3, 3, 116), MK(4, 0, 116), MK(4, 1, 116), MK(4, 2, 116), MK(4, 3, 116), MKEND }; static const IndustryTileTable * const _tile_table_fruit_plantation[] = { _tile_table_fruit_plantation_0, }; static const IndustryTileTable _tile_table_rubber_plantation_0[] = { MK(0, 0, 117), MK(0, 1, 117), MK(0, 2, 117), MK(0, 3, 117), MK(1, 0, 117), MK(1, 1, 117), MK(1, 2, 117), MK(1, 3, 117), MK(2, 0, 117), MK(2, 1, 117), MK(2, 2, 117), MK(2, 3, 117), MK(3, 0, 117), MK(3, 1, 117), MK(3, 2, 117), MK(3, 3, 117), MK(4, 0, 117), MK(4, 1, 117), MK(4, 2, 117), MK(4, 3, 117), MKEND }; static const IndustryTileTable * const _tile_table_rubber_plantation[] = { _tile_table_rubber_plantation_0, }; static const IndustryTileTable _tile_table_water_supply_0[] = { MK(0, 0, 118), MK(0, 1, 119), MK(1, 0, 118), MK(1, 1, 119), MKEND }; static const IndustryTileTable * const _tile_table_water_supply[] = { _tile_table_water_supply_0, }; static const IndustryTileTable _tile_table_water_tower_0[] = { MK(0, 0, 120), MKEND }; static const IndustryTileTable * const _tile_table_water_tower[] = { _tile_table_water_tower_0, }; static const IndustryTileTable _tile_table_factory2_0[] = { MK(0, 0, 121), MK(0, 1, 122), MK(1, 0, 123), MK(1, 1, 124), MK(0, 2, 121), MK(0, 3, 122), MK(1, 2, 123), MK(1, 3, 124), MKEND }; static const IndustryTileTable _tile_table_factory2_1[] = { MK(0, 0, 121), MK(0, 1, 122), MK(1, 0, 123), MK(1, 1, 124), MK(2, 0, 121), MK(2, 1, 122), MK(3, 0, 123), MK(3, 1, 124), MKEND }; static const IndustryTileTable * const _tile_table_factory2[] = { _tile_table_factory2_0, _tile_table_factory2_1, }; static const IndustryTileTable _tile_table_farm2_0[] = { MK(1, 0, 33), MK(1, 1, 34), MK(1, 2, 36), MK(0, 0, 37), MK(0, 1, 37), MK(0, 2, 36), MK(2, 0, 35), MK(2, 1, 38), MK(2, 2, 38), MKEND }; static const IndustryTileTable _tile_table_farm2_1[] = { MK(1, 1, 33), MK(1, 2, 34), MK(0, 0, 35), MK(0, 1, 36), MK(0, 2, 36), MK(0, 3, 35), MK(1, 0, 37), MK(1, 3, 38), MK(2, 0, 37), MK(2, 1, 37), MK(2, 2, 38), MK(2, 3, 38), MKEND }; static const IndustryTileTable _tile_table_farm2_2[] = { MK(2, 0, 33), MK(2, 1, 34), MK(0, 0, 36), MK(0, 1, 36), MK(0, 2, 37), MK(0, 3, 37), MK(1, 0, 35), MK(1, 1, 38), MK(1, 2, 38), MK(1, 3, 37), MK(2, 2, 37), MK(2, 3, 35), MKEND }; static const IndustryTileTable * const _tile_table_farm2[] = { _tile_table_farm2_0, _tile_table_farm2_1, _tile_table_farm2_2, }; static const IndustryTileTable _tile_table_lumber_mill_0[] = { MK(0, 0, 125), MK(0, 1, 126), MK(1, 0, 127), MK(1, 1, 128), MKEND }; static const IndustryTileTable * const _tile_table_lumber_mill[] = { _tile_table_lumber_mill_0, }; static const IndustryTileTable _tile_table_cotton_candy_0[] = { MK(0, 0, 129), MK(0, 1, 129), MK(0, 2, 129), MK(0, 3, 129), MK(1, 0, 129), MK(1, 1, 129), MK(1, 2, 129), MK(1, 3, 129), MK(2, 0, 129), MK(2, 1, 129), MK(2, 2, 129), MK(2, 3, 129), MK(3, 0, 129), MK(3, 1, 129), MK(3, 2, 129), MK(3, 3, 129), MK(1, 4, 129), MK(2, 4, 129), MKEND }; static const IndustryTileTable _tile_table_cotton_candy_1[] = { MK(0, 0, 129), MK(1, 0, 129), MK(2, 0, 129), MK(3, 0, 129), MK(4, 0, 129), MK(0, 1, 129), MK(1, 1, 129), MK(2, 1, 129), MK(3, 1, 129), MK(4, 1, 129), MK(0, 2, 129), MK(1, 2, 129), MK(2, 2, 129), MK(3, 2, 129), MK(4, 2, 129), MK(0, 3, 129), MK(1, 3, 129), MK(2, 3, 129), MK(3, 3, 129), MK(4, 3, 129), MK(1, 4, 129), MK(2, 4, 129), MK(3, 4, 129), MKEND }; static const IndustryTileTable * const _tile_table_cotton_candy[] = { _tile_table_cotton_candy_0, _tile_table_cotton_candy_1, }; static const IndustryTileTable _tile_table_candy_factory_0[] = { MK(0, 0, 131), MK(0, 1, 132), MK(1, 0, 133), MK(1, 1, 134), MK(0, 2, 131), MK(0, 3, 132), MK(1, 2, 133), MK(1, 3, 134), MK(2, 1, 131), MK(2, 2, 132), MK(3, 1, 133), MK(3, 2, 134), MKEND }; static const IndustryTileTable _tile_table_candy_factory_1[] = { MK(0, 0, 131), MK(0, 1, 132), MK(1, 0, 133), MK(1, 1, 134), MK(2, 0, 131), MK(2, 1, 132), MK(3, 0, 133), MK(3, 1, 134), MK(1, 2, 131), MK(1, 3, 132), MK(2, 2, 133), MK(2, 3, 134), MKEND }; static const IndustryTileTable * const _tile_table_candy_factory[] = { _tile_table_candy_factory_0, _tile_table_candy_factory_1, }; static const IndustryTileTable _tile_table_battery_farm_0[] = { MK(0, 0, 135), MK(0, 1, 135), MK(0, 2, 135), MK(0, 3, 135), MK(1, 0, 135), MK(1, 1, 135), MK(1, 2, 135), MK(1, 3, 135), MK(2, 0, 135), MK(2, 1, 135), MK(2, 2, 135), MK(2, 3, 135), MK(3, 0, 135), MK(3, 1, 135), MK(3, 2, 135), MK(3, 3, 135), MK(4, 0, 135), MK(4, 1, 135), MK(4, 2, 135), MK(4, 3, 135), MKEND }; static const IndustryTileTable * const _tile_table_battery_farm[] = { _tile_table_battery_farm_0, }; static const IndustryTileTable _tile_table_cola_wells_0[] = { MK(0, 0, 137), MK(0, 1, 137), MK(0, 2, 137), MK(1, 0, 137), MK(1, 1, 137), MK(1, 2, 137), MK(2, 1, 137), MK(2, 2, 137), MKEND }; static const IndustryTileTable _tile_table_cola_wells_1[] = { MK(0, 1, 137), MK(0, 2, 137), MK(0, 3, 137), MK(1, 0, 137), MK(1, 1, 137), MK(1, 2, 137), MK(2, 1, 137), MKEND }; static const IndustryTileTable * const _tile_table_cola_wells[] = { _tile_table_cola_wells_0, _tile_table_cola_wells_1, }; static const IndustryTileTable _tile_table_toy_shop_0[] = { MK(0, 0, 138), MK(0, 1, 139), MK(1, 0, 140), MK(1, 1, 141), MKEND }; static const IndustryTileTable * const _tile_table_toy_shop[] = { _tile_table_toy_shop_0, }; static const IndustryTileTable _tile_table_toy_factory_0[] = { MK(0, 0, 147), MK(0, 1, 142), MK(1, 0, 147), MK(1, 1, 143), MK(2, 0, 147), MK(2, 1, 144), MK(3, 0, 146), MK(3, 1, 145), MKEND }; static const IndustryTileTable * const _tile_table_toy_factory[] = { _tile_table_toy_factory_0, }; static const IndustryTileTable _tile_table_plastic_fountain_0[] = { MK(0, 0, 148), MK(0, 1, 151), MK(0, 2, 154), MKEND }; static const IndustryTileTable _tile_table_plastic_fountain_1[] = { MK(0, 0, 148), MK(1, 0, 151), MK(2, 0, 154), MKEND }; static const IndustryTileTable * const _tile_table_plastic_fountain[] = { _tile_table_plastic_fountain_0, _tile_table_plastic_fountain_1, }; static const IndustryTileTable _tile_table_fizzy_drink_0[] = { MK(0, 0, 156), MK(0, 1, 157), MK(1, 0, 158), MK(1, 1, 159), MKEND }; static const IndustryTileTable * const _tile_table_fizzy_drink[] = { _tile_table_fizzy_drink_0, }; static const IndustryTileTable _tile_table_bubble_generator_0[] = { MK(0, 0, 163), MK(0, 1, 160), MK(1, 0, 163), MK(1, 1, 161), MK(2, 0, 163), MK(2, 1, 162), MK(0, 2, 163), MK(0, 3, 160), MK(1, 2, 163), MK(1, 3, 161), MK(2, 2, 163), MK(2, 3, 162), MKEND }; static const IndustryTileTable * const _tile_table_bubble_generator[] = { _tile_table_bubble_generator_0, }; static const IndustryTileTable _tile_table_toffee_quarry_0[] = { MK(0, 0, 164), MK(1, 0, 165), MK(2, 0, 166), MKEND }; static const IndustryTileTable * const _tile_table_toffee_quarry[] = { _tile_table_toffee_quarry_0, }; static const IndustryTileTable _tile_table_sugar_mine_0[] = { MK(0, 0, 167), MK(0, 1, 168), MK(1, 0, 169), MK(1, 1, 170), MK(2, 0, 171), MK(2, 1, 172), MK(3, 0, 173), MK(3, 1, 174), MKEND }; static const IndustryTileTable * const _tile_table_sugar_mine[] = { _tile_table_sugar_mine_0, }; #undef MK #undef MKEND /** Array with saw sound, for sawmill */ static const uint8 _sawmill_sounds[] = { SND_28_SAWMILL }; /** Array with whistle sound, for factory */ static const uint8 _factory_sounds[] = { SND_03_FACTORY_WHISTLE }; /** Array with 3 animal sounds, for farms */ static const uint8 _farm_sounds[] = { SND_24_SHEEP, SND_25_COW, SND_26_HORSE }; /** Array with... hem... a sound of toyland */ static const uint8 _plastic_mine_sounds[] = { SND_33_PLASTIC_MINE }; enum IndustryTypes { IT_COAL_MINE = 0, IT_POWER_STATION = 1, IT_SAWMILL = 2, IT_FOREST = 3, IT_OIL_REFINERY = 4, IT_OIL_RIG = 5, IT_FACTORY = 6, IT_PRINTING_WORKS = 7, IT_STEEL_MILL = 8, IT_FARM = 9, IT_COPPER_MINE = 10, IT_OIL_WELL = 11, IT_BANK_TEMP = 12, IT_FOOD_PROCESS = 13, IT_PAPER_MILL = 14, IT_GOLD_MINE = 15, IT_BANK_TROPIC_ARCTIC = 16, IT_DIAMOND_MINE = 17, IT_IRON_MINE = 18, IT_FRUIT_PLANTATION = 19, IT_RUBBER_PLANTATION = 20, IT_WATER_SUPPLY = 21, IT_WATER_TOWER = 22, IT_FACTORY_2 = 23, IT_FARM_2 = 24, IT_LUMBER_MILL = 25, IT_COTTON_CANDY = 26, IT_CANDY_FACTORY = 27, IT_BATTERY_FARM = 28, IT_COLA_WELLS = 29, IT_TOY_SHOP = 30, IT_TOY_FACTORY = 31, IT_PLASTIC_FOUNTAINS = 32, IT_FIZZY_DRINK_FACTORY = 33, IT_BUBBLE_GENERATOR = 34, IT_TOFFEE_QUARRY = 35, IT_SUGAR_MINE = 36, IT_END, }; /** * Writes the properties of an industry into the IndustrySpec struct. * @param tbl tile table * @param sndc number of sounds * @param snd sounds table * @param d cost multiplier * @param pc prospecting chance * @param ai1 appear chance ingame - temperate * @param ai2 appear chance ingame - arctic * @param ai3 appear chance ingame - tropic * @param ai4 appear chance ingame - toyland * @param ag1 appear chance random creation - temperate * @param ag2 appear chance random creation - arctic * @param ag3 appear chance random creation - tropic * @param ag4 appear chance random creation - toyland * @param col map colour * @param c1 industry proximity refusal - 1st * @param c2 industry proximity refusal - 2nd * @param c3 industry proximity refusal - 3th * @param proc check procedure index * @param p1 produce cargo 1 * @param r1 rate of production 1 * @param p2 produce cargo 2 * @param r2 rate of production 1 * @param m minimum cargo moved to station * @param a1 accepted cargo 1 * @param im1 input multiplier for cargo 1 * @param a2 accepted cargo 2 * @param im2 input multiplier for cargo 2 * @param a3 accepted cargo 3 * @param im3 input multiplier for cargo 3 * @param pr industry life (actually, the same as extractive, organic, processing in ttdpatch's specs) * @param clim climate availability * @param bev industry behaviour * @param in name * @param intx text while building * @param s1 text for closure * @param s2 text for production up * @param s3 text for production down */ #define MI(tbl, sndc, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \ c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \ {tbl, lengthof(tbl), d, 0, pc, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m, \ {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \ sndc, snd, 0, 0, true, GRFFileProps(INVALID_INDUSTRYTYPE)} /* Format: tile table count and sounds table cost multiplier appear chances(4ingame, 4random) map colour cannot be close to these industries (3 times) check proc (produced cargo + rate) (twice) minimum cargo moved to station 3 accepted cargo and their corresponding input multiplier industry life climate availability industry behaviours industry name building text messages : Closure production up production down */ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { MI(_tile_table_coal_mine, 0, NULL, 210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1, IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COAL, 15, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_CAN_SUBSIDENCE, STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_power_station, 0, NULL, 240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184, IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_INVALID, 0, CT_INVALID, 0, 5, CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_sawmill, 1, _sawmill_sounds, 224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194, IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_GOODS, 0, CT_INVALID, 0, 5, CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_forest, 0, NULL, 200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86, IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST, CT_WOOD, 13, CT_INVALID, 0, 30, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_oil_refinery, 0, NULL, 244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191, IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY, CT_GOODS, 0, CT_INVALID, 0, 5, CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_AIRPLANE_ATTACKS, STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_oil_rig, 0, NULL, 240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152, IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG, CT_OIL, 15, CT_PASSENGERS, 2, 5, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE, INDUSTRYBEH_BUILT_ONWATER | INDUSTRYBEH_AFTER_1960 | INDUSTRYBEH_AI_AIRSHIP_ROUTES, STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_factory, 1, _factory_sounds, 208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174, IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING, CT_GOODS, 0, CT_INVALID, 0, 5, CT_LIVESTOCK, 256, CT_GRAIN, 256, CT_STEEL, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE, INDUSTRYBEH_CHOPPER_ATTACKS, STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_printing_works, 1, _factory_sounds, 208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174, IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_GOODS, 0, CT_INVALID, 0, 5, CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_steel_mill, 0, NULL, 215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10, IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING, CT_STEEL, 0, CT_INVALID, 0, 5, CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_farm, 3, _farm_sounds, 250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48, IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM, CT_GRAIN, 10, CT_LIVESTOCK, 10, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT, STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_copper_mine, 0, NULL, 205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10, IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COPPER_ORE, 10, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_oil_well, 0, NULL, 220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152, IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_OIL, 12, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_DONT_INCR_PROD | INDUSTRYBEH_BEFORE_1950, STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_bank, 0, NULL, 255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15, IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_VALUABLES, 6, CT_INVALID, 0, 5, CT_VALUABLES, 0, CT_INVALID, 0, CT_INVALID, 0, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE, INDUSTRYBEH_TOWN1200_MORE, STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_food_process, 0, NULL, 206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55, IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING, CT_FOOD, 0, CT_INVALID, 0, 5, CT_FRUIT, 256, CT_MAIZE, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_paper_mill, 1, _sawmill_sounds, 227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10, IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING, CT_PAPER, 0, CT_INVALID, 0, 5, CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_gold_mine, 0, NULL, 208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194, IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_GOLD, 7, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_ARCTIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_bank2, 0, NULL, 151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15, IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING, CT_INVALID, 0, CT_INVALID, 0, 5, CT_GOLD, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_ONLY_INTOWN, STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_diamond_mine, 0, NULL, 213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184, IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_DIAMONDS, 7, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_iron_mine, 0, NULL, 220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55, IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_IRON_ORE, 10, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_fruit_plantation, 0, NULL, 225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86, IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION, CT_FRUIT, 10, CT_INVALID, 0, 15, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_rubber_plantation, 0, NULL, 218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39, IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION, CT_RUBBER, 10, CT_INVALID, 0, 15, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_water_supply, 0, NULL, 199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37, IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER, CT_WATER, 12, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_water_tower, 0, NULL, 115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208, IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER, CT_INVALID, 0, CT_INVALID, 0, 5, CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TROPIC, INDUSTRYBEH_ONLY_INTOWN, STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_factory2, 1, _factory_sounds, 208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174, IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION, CT_GOODS, 0, CT_INVALID, 0, 5, CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_farm2, 0, NULL, 250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48, IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION, CT_MAIZE, 11, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC, INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT, STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_lumber_mill, 0, NULL, 135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194, IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL, CT_WOOD, 0, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC, INDUSTRYBEH_CUT_TREES, STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_cotton_candy, 0, NULL, 195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48, IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COTTON_CANDY, 13, CT_INVALID, 0, 30, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_candy_factory, 0, NULL, 206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174, IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING, CT_CANDY, 0, CT_INVALID, 0, 5, CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_battery_farm, 0, NULL, 187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39, IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_BATTERIES, 11, CT_INVALID, 0, 30, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_cola_wells, 0, NULL, 193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55, IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COLA, 12, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_toy_shop, 0, NULL, 133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208, IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_INVALID, 0, CT_INVALID, 0, 5, CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TOYLAND, INDUSTRYBEH_ONLY_NEARTOWN, STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_toy_factory, 0, NULL, 163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10, IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING, CT_TOYS, 0, CT_INVALID, 0, 5, CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_plastic_fountain, 1, _plastic_mine_sounds, 192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37, IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_PLASTIC, 14, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_fizzy_drink, 0, NULL, 177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184, IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING, CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5, CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_bubble_generator, 0, NULL, 203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152, IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN, CT_BUBBLES, 13, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_toffee_quarry, 0, NULL, 213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194, IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_TOFFEE, 10, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_sugar_mine, 0, NULL, 210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15, IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_SUGAR, 11, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), }; #undef MI /** * Writes the properties of an industry tile into the IndustryTileSpec struct. * @param ca1 acceptance of first cargo * @param c1 first type of cargo accepted for this tile * @param ca2 acceptance of second cargo * @param c2 second cargo * @param ca3 acceptance of third cargo * @param c3 and third cargo. Those three are in an array * @param sl slope refused upon choosing a place to build * @param a1 animation frame on production * @param a2 next frame of animation * @param a3 chooses between animation or construction state */ #define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{c1, c2, c3}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE)} static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = { /* Coal Mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Power Station */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_COAL, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Sawmill */ MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Forest Artic, temperate */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, 17, INDUSTRYTILE_NOANIM, false), ///< Chopping forest MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, 16, false), ///< Growing forest /* Oil refinery */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_OIL, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Oil Rig */ MT(0, CT_INVALID, 8, CT_PASSENGERS, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_MAIL, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Oil Wells artic, temperate and sub-tropical */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true ), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true ), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true ), /* Farm tropic, arctic and temperate */ MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Factory temperate */ MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Printing works */ MT(0, CT_INVALID, 8, CT_PAPER, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_PAPER, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_PAPER, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_PAPER, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Copper ore mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true ), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Steel mill */ MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Bank temperate*/ MT(1, CT_PASSENGERS, 8, CT_VALUABLES, 0, CT_INVALID, SLOPE_E, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(1, CT_PASSENGERS, 8, CT_VALUABLES, 0, CT_INVALID, SLOPE_S, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/ MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Paper mill */ MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Gold mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, true), /* Bank Sub Arctic */ MT(0, CT_INVALID, 8, CT_GOLD, 0, CT_INVALID, SLOPE_E, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_GOLD, 0, CT_INVALID, SLOPE_S, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Diamond mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Iron ore Mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Fruit plantation */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Rubber plantation */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Water supply */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Water tower */ MT(0, CT_INVALID, 8, CT_WATER, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Factory (sub-tropical) */ MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Lumber mill */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Candyfloss forest */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, 130, INDUSTRYTILE_NOANIM, false), ///< Chopping candyfloss MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, 129, false), ///< Growing candyfloss /* Sweet factory */ MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Battery farm */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, 136, INDUSTRYTILE_NOANIM, false), ///< Reaping batteries MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, 135, false), ///< Growing batteries /* Cola wells */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Toy shop */ MT(0, CT_INVALID, 8, CT_TOYS, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_TOYS, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_TOYS, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 8, CT_TOYS, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Toy factory */ MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Plastic Fountain */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Fizzy drink factory */ MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Bubble generator */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Toffee quarry */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), /* Sugar mine */ MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), MT(0, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false), }; #undef MT #endif /* BUILD_INDUSTRY_H */ openttd-1.3.3/src/table/pricebase.h0000644000000000000000000001703012246102566015662 0ustar rootroot/* $Id: pricebase.h 23931 2012-02-11 22:43:39Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file pricebase.h Price Bases */ extern const PriceBaseSpec _price_base_specs[] = { { 100, PCAT_NONE, GSF_END, INVALID_PRICE }, ///< PR_STATION_VALUE { 100, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_RAIL { 95, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_ROAD { 65, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_SIGNALS { 275, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_BRIDGE { 600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_TRAIN { 500, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_ROAD { 700, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_DEPOT_SHIP { 450, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_TUNNEL { 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_RAIL { 180, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_RAIL_LENGTH { 600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_AIRPORT { 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_BUS { 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_TRUCK { 350, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_STATION_DOCK { 400000, PCAT_CONSTRUCTION, GSF_TRAINS, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_TRAIN { 2000, PCAT_CONSTRUCTION, GSF_TRAINS, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_WAGON { 700000, PCAT_CONSTRUCTION, GSF_AIRCRAFT, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_AIRCRAFT { 14000, PCAT_CONSTRUCTION, GSF_ROADVEHICLES, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_ROAD { 65000, PCAT_CONSTRUCTION, GSF_SHIPS, INVALID_PRICE }, ///< PR_BUILD_VEHICLE_SHIP { 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_TREES { 250, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_TERRAFORM { 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_GRASS { 40, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROUGH { 200, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROCKS { 500, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_FIELDS { 20, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_TREES { -70, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_RAIL { 10, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_SIGNALS { 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_BRIDGE { 80, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_TRAIN { 80, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_ROAD { 90, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_DEPOT_SHIP { 30, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_TUNNEL { 10000, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_WATER { 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_RAIL { 30, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_AIRPORT { 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_BUS { 50, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_TRUCK { 55, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_STATION_DOCK { 1600, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_HOUSE { 40, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_CLEAR_ROAD { 5600, PCAT_RUNNING, GSF_TRAINS, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_STEAM { 5200, PCAT_RUNNING, GSF_TRAINS, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_DIESEL { 4800, PCAT_RUNNING, GSF_TRAINS, INVALID_PRICE }, ///< PR_RUNNING_TRAIN_ELECTRIC { 9600, PCAT_RUNNING, GSF_AIRCRAFT, INVALID_PRICE }, ///< PR_RUNNING_AIRCRAFT { 1600, PCAT_RUNNING, GSF_ROADVEHICLES, INVALID_PRICE }, ///< PR_RUNNING_ROADVEH { 5600, PCAT_RUNNING, GSF_SHIPS, INVALID_PRICE }, ///< PR_RUNNING_SHIP {1000000, PCAT_CONSTRUCTION, GSF_END, INVALID_PRICE }, ///< PR_BUILD_INDUSTRY { 1600, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_HOUSE }, ///< PR_CLEAR_INDUSTRY { 40, PCAT_CONSTRUCTION, GSF_OBJECTS, PR_CLEAR_ROUGH }, ///< PR_BUILD_OBJECT { 40, PCAT_CONSTRUCTION, GSF_OBJECTS, PR_CLEAR_ROUGH }, ///< PR_CLEAR_OBJECT { 600, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_DEPOT_TRAIN }, ///< PR_BUILD_WAYPOINT_RAIL { 80, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_DEPOT_TRAIN }, ///< PR_CLEAR_WAYPOINT_RAIL { 350, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_STATION_DOCK }, ///< PR_BUILD_WAYPOINT_BUOY { 50, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_STATION_TRUCK}, ///< PR_CLEAR_WAYPOINT_BUOY {1000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_TOWN_ACTION { 250, PCAT_CONSTRUCTION, GSF_END, PR_TERRAFORM }, ///< PR_BUILD_FOUNDATION {8000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_BUILD_INDUSTRY_RAW {1000000, PCAT_CONSTRUCTION, GSF_END, PR_BUILD_INDUSTRY }, ///< PR_BUILD_TOWN { 5000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_BUILD_CANAL { 5000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_CLEAR_CANAL { 10000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_BUILD_AQUEDUCT { 2000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_BRIDGE }, ///< PR_CLEAR_AQUEDUCT { 7500, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_BUILD_LOCK { 2000, PCAT_CONSTRUCTION, GSF_END, PR_CLEAR_WATER }, ///< PR_CLEAR_LOCK { 10, PCAT_RUNNING, GSF_END, PR_BUILD_RAIL }, ///< PR_INFRASTRUCTURE_RAIL { 10, PCAT_RUNNING, GSF_END, PR_BUILD_ROAD }, ///< PR_INFRASTRUCTURE_ROAD { 8, PCAT_RUNNING, GSF_END, PR_BUILD_CANAL }, ///< PR_INFRASTRUCTURE_WATER { 100, PCAT_RUNNING, GSF_END, PR_STATION_VALUE }, ///< PR_INFRASTRUCTURE_STATION { 5000, PCAT_RUNNING, GSF_END, PR_BUILD_STATION_AIRPORT}, ///< PR_INFRASTRUCTURE_AIRPORT }; assert_compile(lengthof(_price_base_specs) == PR_END); openttd-1.3.3/src/table/station_land.h0000644000000000000000000014267512246102566016422 0ustar rootroot/* $Id: station_land.h 23010 2011-10-07 07:56:30Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file station_land.h Sprites to use and how to display them for station tiles. */ /** * Constructor macro for an image without a palette in a DrawTileSeqStruct array. * @param dx Offset in x direction * @param dy Offset in y direction * @param dz Offset in z direction * @param sx Size in x direction * @param sy Size in y direction * @param sz Size in z direction * @param img Sprite to draw */ #define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img) TILE_SEQ_LINE_PAL(dx, dy, dz, sx, sy, sz, img, PAL_NONE) /** * Constructor macro for an image with a palette in a DrawTileSeqStruct array. * @param dx Offset in x direction * @param dy Offset in y direction * @param dz Offset in z direction * @param sx Size in x direction * @param sy Size in y direction * @param sz Size in z direction * @param img Sprite to draw * @param pal Palette sprite */ #define TILE_SEQ_LINE_PAL(dx, dy, dz, sx, sy, sz, img, pal) { dx, dy, dz, sx, sy, sz, {img, pal} }, /** * Constructor macro for an image without bounding box. * @param dx Screen X offset from parent sprite * @param dy Screen Y offset from parent sprite * @param img Sprite to draw * @param pal Palette sprite */ #define TILE_SEQ_CHILD(dx, dy, img, pal) TILE_SEQ_LINE_PAL(dx, dy, (int8)0x80, 0, 0, 0, img, pal) /** * Constructor macro for additional ground sprites. * These need to be at the front of a DrawTileSeqStruct sequence. * @param dx Offset in x direction * @param dy Offset in y direction * @param dz Offset in z direction * @param img Sprite to draw */ #define TILE_SEQ_GROUND(dx, dy, dz, img) TILE_SEQ_CHILD(2 * (dy - dx), dx + dy - dz, img, PAL_NONE) /** Constructor macro for a terminating DrawTileSeqStruct entry in an array */ #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} } static const DrawTileSeqStruct _station_display_nothing[] = { TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_0[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_1[] = { TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_2[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_BUILDING_X | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_3[] = { TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_BUILDING_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_4[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 7, SPR_RAIL_PLATFORM_PILLARS_X_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_X_TILE_A | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_5[] = { TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_PILLARS_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_Y_TILE_A | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_6[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_PILLARS_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_X_TILE_B | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_7[] = { TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_PILLARS_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_Y_TILE_B | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_fence_nw[] = { TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_fence_ne[] = { TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_fence_sw[] = { TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_fence_se[] = { TILE_SEQ_GROUND( 0, 15, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_terminal_a[] = { TILE_SEQ_LINE( 2, 0, 0, 11, 16, 40, SPR_AIRPORT_TERMINAL_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_tower_fence_sw[] = { TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_TOWER | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_concourse[] = { TILE_SEQ_LINE( 0, 1, 0, 14, 14, 30, SPR_AIRPORT_CONCOURSE | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_terminal_b[] = { TILE_SEQ_LINE( 3, 3, 0, 10, 11, 35, SPR_AIRPORT_TERMINAL_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_terminal_c[] = { TILE_SEQ_LINE( 0, 3, 0, 16, 11, 40, SPR_AIRPORT_TERMINAL_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_hangar_se[] = { TILE_SEQ_LINE(14, 0, 0, 2, 17, 28, SPR_AIRPORT_HANGAR_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 2, 17, 28, SPR_AIRPORT_HANGAR_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_jetway_1[] = { TILE_SEQ_LINE( 7, 11, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_1 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_jetway_2[] = { TILE_SEQ_LINE( 2, 7, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_2 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_jetway_3[] = { TILE_SEQ_LINE( 3, 2, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_3 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_passenger_tunnel[] = { TILE_SEQ_LINE( 0, 8, 0, 14, 3, 14, SPR_AIRPORT_PASSENGER_TUNNEL | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_1_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_2_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_3_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_4_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_5_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_6_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_7_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_8_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_9_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_10_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_11_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_12_fence_sw[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_transmitter_fence_ne[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 70, SPR_TRANSMITTER) TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_terminal_c_2[] = { TILE_SEQ_LINE( 0, 0, 0, 15, 15, 30, SPR_AIRFIELD_TERM_C_BUILD | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_flag_1_fence_ne[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_1 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_flag_2_fence_ne[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_2 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_flag_3_fence_ne[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_3 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_flag_4_fence_ne[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_4 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_small_depot_se[] = { TILE_SEQ_LINE(14, 0, 0, 2, 17, 28, SPR_AIRFIELD_HANGAR_FRONT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 2, 17, 28, SPR_AIRFIELD_HANGAR_REAR | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_heliport[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 16, 60, SPR_HELIPORT | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_67[] = { TILE_SEQ_LINE( 0, 15, 0, 13, 1, 10, SPR_TRUCK_STOP_NE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(13, 0, 0, 3, 16, 10, SPR_TRUCK_STOP_NE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 2, 0, 0, 11, 1, 10, SPR_TRUCK_STOP_NE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_68[] = { TILE_SEQ_LINE(15, 3, 0, 1, 13, 10, SPR_TRUCK_STOP_SE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 16, 3, 10, SPR_TRUCK_STOP_SE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 3, 0, 1, 11, 10, SPR_TRUCK_STOP_SE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_69[] = { TILE_SEQ_LINE( 3, 0, 0, 13, 1, 10, SPR_TRUCK_STOP_SW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 3, 16, 10, SPR_TRUCK_STOP_SW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 3, 15, 0, 11, 1, 10, SPR_TRUCK_STOP_SW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_70[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 13, 10, SPR_TRUCK_STOP_NW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 13, 0, 16, 3, 10, SPR_TRUCK_STOP_NW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(15, 2, 0, 1, 11, 10, SPR_TRUCK_STOP_NW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_71[] = { TILE_SEQ_LINE( 2, 0, 0, 11, 1, 10, SPR_BUS_STOP_NE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(13, 0, 0, 3, 16, 10, SPR_BUS_STOP_NE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 13, 0, 13, 3, 10, SPR_BUS_STOP_NE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_72[] = { TILE_SEQ_LINE( 0, 3, 0, 1, 11, 10, SPR_BUS_STOP_SE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 16, 3, 10, SPR_BUS_STOP_SE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(13, 3, 0, 3, 13, 10, SPR_BUS_STOP_SE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_73[] = { TILE_SEQ_LINE( 3, 15, 0, 11, 1, 10, SPR_BUS_STOP_SW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 3, 16, 10, SPR_BUS_STOP_SW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 3, 0, 0, 13, 3, 10, SPR_BUS_STOP_SW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_74[] = { TILE_SEQ_LINE(15, 2, 0, 1, 11, 10, SPR_BUS_STOP_NW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 13, 0, 16, 3, 10, SPR_BUS_STOP_NW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 3, 13, 10, SPR_BUS_STOP_NW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_76[] = { TILE_SEQ_LINE( 0, 4, 0, 16, 8, 8, SPR_DOCK_SLOPE_NE | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_77[] = { TILE_SEQ_LINE( 4, 0, 0, 8, 16, 8, SPR_DOCK_SLOPE_SE | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_78[] = { TILE_SEQ_LINE( 0, 4, 0, 16, 8, 8, SPR_DOCK_SLOPE_SW | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_79[] = { TILE_SEQ_LINE( 4, 0, 0, 8, 16, 8, SPR_DOCK_SLOPE_NW | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_80[] = { TILE_SEQ_LINE( 0, 4, 0, 16, 8, 8, SPR_DOCK_FLAT_X | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_81[] = { TILE_SEQ_LINE( 4, 0, 0, 8, 16, 8, SPR_DOCK_FLAT_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* Buoy, which will _always_ drown under the ship */ static const DrawTileSeqStruct _station_display_datas_82[] = { TILE_SEQ_LINE( 4, -1, 0, 0, 0, 0, SPR_IMG_BUOY) TILE_SEQ_END() }; /* control tower without fence */ static const DrawTileSeqStruct _station_display_tower[] = { TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_TOWER | (1U << PALETTE_MODIFIER_COLOUR)) // control tower TILE_SEQ_END() }; /* turning radar with fences on north -- needs 12 tiles *BEGIN */ static const DrawTileSeqStruct _station_display_radar_1_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1) // turning radar TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_2_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_3_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_4_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_5_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_6_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_7_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_8_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_9_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_10_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_11_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_12_fence_ne[] = { TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C) TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* END */ /* helipad for international airport */ static const DrawTileSeqStruct _station_display_helipad_fence_sw[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences bottom TILE_SEQ_END() }; /* helipad for commuter airport */ static const DrawTileSeqStruct _station_display_helipad_fence_nw[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences left TILE_SEQ_END() }; /* helipad for continental airport */ static const DrawTileSeqStruct _station_display_helipad[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_END() }; /* asphalt tile with fences in north and south */ static const DrawTileSeqStruct _station_display_fence_ne_sw[] = { TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* runway tiles with 2 corner fences */ static const DrawTileSeqStruct _station_display_fence_nw_sw[] = { TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_END() }; /* runway tiles with 2 corner fences */ static const DrawTileSeqStruct _station_display_fence_se_sw[] = { TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_GROUND( 0, 15, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; /* runway tiles with 2 corner fences */ static const DrawTileSeqStruct _station_display_fence_ne_nw[] = { TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east TILE_SEQ_END() }; /* runway tiles with 2 corner fences */ static const DrawTileSeqStruct _station_display_fence_ne_se[] = { TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east TILE_SEQ_GROUND( 0, 15, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; /* helipad tiles with 2 corner fences top+right */ static const DrawTileSeqStruct _station_display_helipad_fence_NE_SE[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; /* helidepot office with fences top + left */ static const DrawTileSeqStruct _station_display_low_building_fence_ne_nw[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences left TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office TILE_SEQ_END() }; /* West facing hangar */ static const DrawTileSeqStruct _station_display_hangar_sw[] = { TILE_SEQ_LINE(14, 0, 0, 2, 17, 28, SPR_NEWHANGAR_W | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 2, 17, 28, SPR_NEWHANGAR_W_WALL | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* North facing hangar */ static const DrawTileSeqStruct _station_display_hangar_nw[] = { TILE_SEQ_LINE(14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_N | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* East facing hangar */ static const DrawTileSeqStruct _station_display_hangar_ne[] = { TILE_SEQ_LINE(14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_E | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* helipad for district airport NS */ static const DrawTileSeqStruct _station_display_helipad_fence_se_sw[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences bottom TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences right TILE_SEQ_END() }; /* helipad for district airport NS */ static const DrawTileSeqStruct _station_display_helipad_fence_se[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; /* helidepot office with fence north */ static const DrawTileSeqStruct _station_display_low_building_fence_nw[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office TILE_SEQ_END() }; /* helidepot office with fence east */ static const DrawTileSeqStruct _station_display_low_building_fence_ne[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office TILE_SEQ_END() }; /* helidepot office with fence west */ static const DrawTileSeqStruct _station_display_low_building_fence_sw[] = { TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office TILE_SEQ_END() }; /* helidepot office with fence south */ static const DrawTileSeqStruct _station_display_low_building_fence_se[] = { TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office TILE_SEQ_END() }; /* helipad for district airport EW*/ static const DrawTileSeqStruct _station_display_helipad_fence_nw_sw[] = { TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_END() }; /* turning radar with fences on south -- needs 12 tiles *BEGIN */ static const DrawTileSeqStruct _station_display_radar_1_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1) // turning radar TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_2_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_3_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_4_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_5_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_6_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_7_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_8_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_9_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_10_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_11_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_radar_12_fence_se[] = { TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; /* END */ /* helipad for helistation */ static const DrawTileSeqStruct _station_display_newhelipad_fence_se_sw[] = { TILE_SEQ_LINE( 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south TILE_SEQ_END() }; /* helipad for helistation */ static const DrawTileSeqStruct _station_display_newhelipad_fence_nw_sw[] = { TILE_SEQ_LINE( 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD) TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_END() }; /* helipad for helistation */ static const DrawTileSeqStruct _station_display_newhelipad_fence_nw[] = { TILE_SEQ_LINE( 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD) TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north TILE_SEQ_END() }; /* helidepot office without fence */ static const DrawTileSeqStruct _station_display_low_building[] = { TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office TILE_SEQ_END() }; /* half grass half SPR_AIRPORT_APRON */ static const DrawTileSeqStruct _station_display_grass_west[] = { TILE_SEQ_LINE(0, 0, 0, 0, 0, 0, SPR_GRASS_LEFT) TILE_SEQ_END() }; /* half grass half SPR_AIRPORT_APRON */ static const DrawTileSeqStruct _station_display_grass_east[] = { TILE_SEQ_LINE(0, 0, 0, 0, 0, 0, SPR_GRASS_RIGHT) TILE_SEQ_END() }; /* drive-through truck stop X */ static const DrawTileSeqStruct _station_display_datas_0168[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_TRUCK_STOP_DT_X_W | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_TRUCK_STOP_DT_X_E | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* drive-through truck stop Y */ static const DrawTileSeqStruct _station_display_datas_0169[] = { TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_TRUCK_STOP_DT_Y_W | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_TRUCK_STOP_DT_Y_E | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* drive-through bus stop X */ static const DrawTileSeqStruct _station_display_datas_0170[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_BUS_STOP_DT_X_W | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_BUS_STOP_DT_X_E | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; /* drive-through bus stop Y */ static const DrawTileSeqStruct _station_display_datas_0171[] = { TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_BUS_STOP_DT_Y_W | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_BUS_STOP_DT_Y_E | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_waypoint_X[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 23, SPR_WAYPOINT_X_1 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 23, SPR_WAYPOINT_X_2 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _station_display_datas_waypoint_Y[] = { TILE_SEQ_LINE( 0, 0, 0, 5, 16, 23, SPR_WAYPOINT_Y_1 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE(11, 0, 0, 5, 16, 23, SPR_WAYPOINT_Y_2 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; #undef TILE_SEQ_END #undef TILE_SEQ_LINE #undef TILE_SEQ_LINE_PAL #undef TILE_SEQ_CHILD #undef TILE_SEQ_GROUND /** * Constructor macro of a DrawTileSprites structure * @param img Ground sprite without palette of the tile * @param dtss Sequence child sprites of the tile */ #define TILE_SPRITE_LINE(img, dtss) { {img, PAL_NONE}, dtss }, #define TILE_SPRITE_NULL() { {0, 0}, NULL }, extern const DrawTileSprites _station_display_datas_rail[] = { TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_0) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_1) TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_2) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_3) TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_4) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_5) TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_6) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_7) }; static const DrawTileSprites _station_display_datas_airport[] = { TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_nothing) // APT_APRON TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_nw) // APT_APRON_FENCE_NW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_sw) // APT_APRON_FENCE_SW TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND, _station_display_nothing) // APT_STAND TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_NS_WEST, _station_display_nothing) // APT_APRON_W TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_SOUTH, _station_display_nothing) // APT_APRON_S TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_XING_SOUTH, _station_display_nothing) // APT_APRON_VER_CROSSING_S TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_XING_WEST, _station_display_nothing) // APT_APRON_HOR_CROSSING_W TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_NS_CTR, _station_display_nothing) // APT_APRON_VER_CROSSING_N TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_XING_EAST, _station_display_nothing) // APT_APRON_HOR_CROSSING_E TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_NS_EAST, _station_display_nothing) // APT_APRON_E TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_NORTH, _station_display_nothing) // APT_ARPON_N TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_CTR, _station_display_nothing) // APT_APRON_HOR TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_NORTH, _station_display_fence_sw) // APT_APRON_N_FENCE_SW TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_A, _station_display_fence_se) // APT_RUNWAY_1 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_fence_se) // APT_RUNWAY_2 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_C, _station_display_fence_se) // APT_RUNWAY_3 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_D, _station_display_fence_se) // APT_RUNWAY_4 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_se) // APT_RUNWAY_END_FENCE_SE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_terminal_a) // APT_BUILDING_2 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_tower_fence_sw) // APT_TOWER_FENCE_SW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_concourse) // APT_ROUND_TERMINAL TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_datas_terminal_b) // APT_BUILDING_3 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_datas_terminal_c) // APT_BUILDING_1 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_hangar_se) // APT_DEPOT_SE TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND, _station_display_jetway_1) // APT_STAND_1 TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND, _station_display_jetway_2) // APT_STAND_PIER_NE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_jetway_3) // APT_PIER_NW_NE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_passenger_tunnel) // APT_PIER TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_nothing) // APT_EMPTY TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_fence_ne) // APT_EMPTY_FENCE_NE TILE_SPRITE_NULL() // APT_RADAR_GRASS_FENCE_SW TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_transmitter_fence_ne) // APT_RADIO_TOWER_FENCE_NE TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_A, _station_display_nothing) // APT_SMALL_BUILDING_3 TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_B, _station_display_nothing) // APT_SMALL_BUILDING_2 TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_C_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_terminal_c_2) // APT_SMALL_BUILDING_1 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_A, _station_display_fence_sw) // APT_GRASS_FENCE_SW TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_B, _station_display_nothing) // APT_GRASS_2 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_C, _station_display_nothing) // APT_GRASS_1 TILE_SPRITE_NULL() // APT_GRASS_FENCE_NE_FLAG TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_NEAR_END, _station_display_fence_se) // APT_RUNWAY_SMALL_NEAR_END TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_MIDDLE, _station_display_fence_se) // APT_RUNWAY_SMALL_MIDDLE TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_FAR_END, _station_display_fence_se) // APT_RUNWAY_SMALL_FAR_END TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_small_depot_se) // APT_SMALL_DEPOT_SE TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_heliport) // APT_HELIPORT TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_nothing) // APT_RUNWAY_END TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_nothing) // APT_RUNWAY_5 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_tower) // APT_TOWER TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_ne) // APT_APRON_FENCE_NE TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_nw) // APT_RUNWAY_END_FENCE_NW TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_fence_nw) // APT_RUNWAY_FENCE_NW TILE_SPRITE_NULL() // APT_RADAR_FENCE_SW TILE_SPRITE_NULL() // APT_RADAR_FENCE_NE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad_fence_sw) // APT_HELIPAD_1 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad_fence_nw) // APT_HELIPAD_2_FENCE_NW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad) // APT_HELIPAD_2 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_ne_sw) // APT_APRON_FENCE_NE_SW TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_nw_sw) // APT_RUNWAY_END_FENCE_NW_SW TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_se_sw) // APT_RUNWAY_END_FENCE_SE_SW TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_ne_nw) // APT_RUNWAY_END_FENCE_NE_NW TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_ne_se) // APT_RUNWAY_END_FENCE_NE_SE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad_fence_NE_SE) // APT_HELIPAD_2_FENCE_NE_SE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_se_sw) // APT_APRON_FENCE_SE_SW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_low_building_fence_ne_nw) // APT_LOW_BUILDING_FENCE_N TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_low_building_fence_nw) // APT_LOW_BUILDING_FENCE_NW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_se) // APT_APRON_FENCE_SE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_newhelipad_fence_se_sw) // APT_HELIPAD_3_FENCE_SE_SW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_newhelipad_fence_nw_sw) // APT_HELIPAD_3_FENCE_NW_SW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_newhelipad_fence_nw) // APT_HELIPAD_3_FENCE_NW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_low_building) // APT_LOW_BUILDING TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_ne_se) // APT_APRON_FENCE_NE_SE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_grass_west) // APT_APRON_HALF_EAST TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_grass_east) // APT_APRON_HALF_WEST TILE_SPRITE_NULL() // APT_GRASS_FENCE_NE_FLAG_2 }; static const DrawTileSprites _station_display_datas_airport_radar_grass_fence_sw[] = { TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_1_fence_sw) // APT_RADAR_GRASS_FENCE_SW TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_2_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_3_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_4_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_5_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_6_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_7_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_8_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_9_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_10_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_11_fence_sw) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_12_fence_sw) }; static const DrawTileSprites _station_display_datas_airport_flag_grass_fence_ne[] = { TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_1_fence_ne) // APT_GRASS_FENCE_NE_FLAG TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_2_fence_ne) TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_3_fence_ne) TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_4_fence_ne) }; static const DrawTileSprites _station_display_datas_airport_radar_fence_sw[] = { TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_1_fence_sw) // APT_RADAR_FENCE_SW TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_2_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_3_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_4_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_5_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_6_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_7_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_8_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_9_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_10_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_11_fence_sw) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_12_fence_sw) }; static const DrawTileSprites _station_display_datas_airport_radar_fence_ne[] = { TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_1_fence_ne) // APT_RADAR_FENCE_NE TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_2_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_3_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_4_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_5_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_6_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_7_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_8_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_9_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_10_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_11_fence_ne) TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_12_fence_ne) }; static const DrawTileSprites _station_display_datas_airport_flag_grass_fence_ne_2[] = { TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_1_fence_ne) // APT_GRASS_FENCE_NE_FLAG_2 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_2_fence_ne) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_3_fence_ne) TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_4_fence_ne) }; static const DrawTileSprites _station_display_datas_truck[] = { TILE_SPRITE_LINE(SPR_TRUCK_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_67) TILE_SPRITE_LINE(SPR_TRUCK_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_68) TILE_SPRITE_LINE(SPR_TRUCK_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_69) TILE_SPRITE_LINE(SPR_TRUCK_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_70) TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0168) TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0169) }; static const DrawTileSprites _station_display_datas_bus[] = { TILE_SPRITE_LINE(SPR_BUS_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_71) TILE_SPRITE_LINE(SPR_BUS_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_72) TILE_SPRITE_LINE(SPR_BUS_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_73) TILE_SPRITE_LINE(SPR_BUS_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_74) TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0170) TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0171) }; static const DrawTileSprites _station_display_datas_oilrig[] = { TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_nothing) }; static const DrawTileSprites _station_display_datas_dock[] = { TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_SW, _station_display_datas_76) TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_NW, _station_display_datas_77) TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_NE, _station_display_datas_78) TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_SE, _station_display_datas_79) TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_datas_80) TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_datas_81) }; static const DrawTileSprites _station_display_datas_buoy[] = { TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_datas_82) }; static const DrawTileSprites _station_display_datas_waypoint[] = { TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y) TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y) TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y) TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X) TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y) }; #undef TILE_SPRITE_LINE #undef TILE_SPRITE_NULL /* Default waypoint is also drawn as fallback for NewGRF waypoints. * As these are drawn/build like stations, they may use the same number of layouts. */ assert_compile(lengthof(_station_display_datas_rail) == lengthof(_station_display_datas_waypoint)); static const DrawTileSprites * const _station_display_datas[] = { _station_display_datas_rail, _station_display_datas_airport, _station_display_datas_truck, _station_display_datas_bus, _station_display_datas_oilrig, _station_display_datas_dock, _station_display_datas_buoy, _station_display_datas_waypoint, }; openttd-1.3.3/src/table/win32_settings.ini0000644000000000000000000000377212246102566017147 0ustar rootroot; $Id: win32_settings.ini 24671 2012-11-08 10:04:00Z frosch $ ; ; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; [pre-amble] /* win32_v.cpp only settings */ #if defined(WIN32) && !defined(DEDICATED) extern bool _force_full_redraw, _window_maximize; extern uint _display_hz, _fullscreen_bpp; static const SettingDescGlobVarList _win32_settings[] = { [post-amble] }; #endif /* WIN32 */ [templates] SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_END = SDTG_END() [defaults] flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = 0 interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED [SDTG_VAR] name = ""display_hz"" type = SLE_UINT var = _display_hz def = 0 min = 0 max = 120 cat = SC_EXPERT [SDTG_BOOL] name = ""force_full_redraw"" var = _force_full_redraw def = false cat = SC_EXPERT [SDTG_VAR] name = ""fullscreen_bpp"" type = SLE_UINT var = _fullscreen_bpp def = 8 min = 8 max = 32 cat = SC_EXPERT [SDTG_BOOL] name = ""window_maximize"" var = _window_maximize def = false cat = SC_BASIC [SDTG_END] openttd-1.3.3/src/table/road_land.h0000644000000000000000000001755712246102566015666 0ustar rootroot/* $Id: road_land.h 19056 2010-02-07 22:22:54Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_land.h Sprite constructs for road depots. */ #define TILE_SEQ_LINE(img, pal, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 20, {img, pal} }, #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} } static const DrawTileSeqStruct _road_depot_NE[] = { TILE_SEQ_LINE(0x584 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _road_depot_SE[] = { TILE_SEQ_LINE(0x580 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 1, 16) TILE_SEQ_LINE(0x581 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16) TILE_SEQ_END() }; static const DrawTileSeqStruct _road_depot_SW[] = { TILE_SEQ_LINE(0x582 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 1) TILE_SEQ_LINE(0x583 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _road_depot_NW[] = { TILE_SEQ_LINE(0x585 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16) TILE_SEQ_END() }; static const DrawTileSprites _road_depot[] = { { {0xA4A, PAL_NONE}, _road_depot_NE }, { {0xA4A, PAL_NONE}, _road_depot_SE }, { {0xA4A, PAL_NONE}, _road_depot_SW }, { {0xA4A, PAL_NONE}, _road_depot_NW } }; static const DrawTileSeqStruct _tram_depot_NE[] = { TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x35) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _tram_depot_SE[] = { TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x31) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 1, 16) TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x32) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16) TILE_SEQ_END() }; static const DrawTileSeqStruct _tram_depot_SW[] = { TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x33) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 1) TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x34) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _tram_depot_NW[] = { TILE_SEQ_LINE((SPR_TRAMWAY_BASE + 0x36) | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16) TILE_SEQ_END() }; static const DrawTileSprites _tram_depot[] = { { {0xA4A, PAL_NONE}, _tram_depot_NE }, { {0xA4A, PAL_NONE}, _tram_depot_SE }, { {0xA4A, PAL_NONE}, _tram_depot_SW }, { {0xA4A, PAL_NONE}, _tram_depot_NW } }; /* Sprite layout for level crossings. The SpriteIDs are actually offsets * from the base SpriteID returned from the NewGRF sprite resolver. */ static const DrawTileSeqStruct _crossing_layout_ALL[] = { TILE_SEQ_LINE(2, PAL_NONE, 0, 0, 3, 3) TILE_SEQ_LINE(4, PAL_NONE, 0, 13, 3, 3) TILE_SEQ_LINE(6, PAL_NONE, 13, 0, 3, 3) TILE_SEQ_LINE(8, PAL_NONE, 13, 13, 3, 3) TILE_SEQ_END() }; static const DrawTileSprites _crossing_layout = { {0, PAL_NONE}, _crossing_layout_ALL }; #undef TILE_SEQ_LINE #undef TILE_SEQ_END static const SpriteID _road_tile_sprites_1[16] = { 0, 0x546, 0x545, 0x53B, 0x544, 0x534, 0x53E, 0x539, 0x543, 0x53C, 0x535, 0x538, 0x53D, 0x537, 0x53A, 0x536 }; static const SpriteID _road_frontwire_sprites_1[16] = { 0, 0x54, 0x55, 0x5B, 0x54, 0x54, 0x5E, 0x5A, 0x55, 0x5C, 0x55, 0x58, 0x5D, 0x57, 0x59, 0x56 }; static const SpriteID _road_backpole_sprites_1[16] = { 0, 0x38, 0x39, 0x40, 0x38, 0x38, 0x43, 0x3E, 0x39, 0x41, 0x39, 0x3C, 0x42, 0x3B, 0x3D, 0x3A }; #define MAKELINE(a, b, c) { a, b, c }, #define ENDLINE { 0, 0, 0 } static const DrawRoadTileStruct _roadside_nothing[] = { ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_3[] = { MAKELINE(0x57f, 1, 8) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_5[] = { MAKELINE(0x57f, 1, 8) MAKELINE(0x57e, 14, 8) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_6[] = { MAKELINE(0x57e, 8, 1) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_7[] = { MAKELINE(0x57f, 1, 8) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_9[] = { MAKELINE(0x57f, 8, 14) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_10[] = { MAKELINE(0x57f, 8, 14) MAKELINE(0x57e, 8, 1) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_11[] = { MAKELINE(0x57f, 8, 14) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_12[] = { MAKELINE(0x57e, 8, 1) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_13[] = { MAKELINE(0x57e, 14, 8) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_14[] = { MAKELINE(0x57e, 8, 1) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_19[] = { MAKELINE(0x1212, 0, 2) MAKELINE(0x1212, 3, 9) MAKELINE(0x1212, 10, 12) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_21[] = { MAKELINE(0x1212, 0, 2) MAKELINE(0x1212, 0, 10) MAKELINE(0x1212, 12, 2) MAKELINE(0x1212, 12, 10) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_22[] = { MAKELINE(0x1212, 10, 0) MAKELINE(0x1212, 3, 3) MAKELINE(0x1212, 0, 10) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_23[] = { MAKELINE(0x1212, 0, 2) MAKELINE(0x1212, 0, 10) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_25[] = { MAKELINE(0x1212, 12, 2) MAKELINE(0x1212, 9, 9) MAKELINE(0x1212, 2, 12) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_26[] = { MAKELINE(0x1212, 2, 0) MAKELINE(0x1212, 10, 0) MAKELINE(0x1212, 2, 12) MAKELINE(0x1212, 10, 12) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_27[] = { MAKELINE(0x1212, 2, 12) MAKELINE(0x1212, 10, 12) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_28[] = { MAKELINE(0x1212, 2, 0) MAKELINE(0x1212, 9, 3) MAKELINE(0x1212, 12, 10) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_29[] = { MAKELINE(0x1212, 12, 2) MAKELINE(0x1212, 12, 10) ENDLINE }; static const DrawRoadTileStruct _road_display_datas2_30[] = { MAKELINE(0x1212, 2, 0) MAKELINE(0x1212, 10, 0) ENDLINE }; #undef MAKELINE #undef ENDLINE static const DrawRoadTileStruct * const _roadside_none[] = { _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing, _roadside_nothing }; static const DrawRoadTileStruct * const _roadside_lamps[] = { _roadside_nothing, _roadside_nothing, _roadside_nothing, _road_display_datas2_3, _roadside_nothing, _road_display_datas2_5, _road_display_datas2_6, _road_display_datas2_7, _roadside_nothing, _road_display_datas2_9, _road_display_datas2_10, _road_display_datas2_11, _road_display_datas2_12, _road_display_datas2_13, _road_display_datas2_14, _roadside_nothing, }; static const DrawRoadTileStruct * const _roadside_trees[] = { _roadside_nothing, _roadside_nothing, _roadside_nothing, _road_display_datas2_19, _roadside_nothing, _road_display_datas2_21, _road_display_datas2_22, _road_display_datas2_23, _roadside_nothing, _road_display_datas2_25, _road_display_datas2_26, _road_display_datas2_27, _road_display_datas2_28, _road_display_datas2_29, _road_display_datas2_30, _roadside_nothing, }; static const DrawRoadTileStruct * const * const _road_display_table[] = { _roadside_none, _roadside_none, _roadside_none, _roadside_lamps, _roadside_none, _roadside_trees, }; openttd-1.3.3/src/table/clear_land.h0000644000000000000000000000430612246102566016013 0ustar rootroot/* $Id: clear_land.h 23188 2011-11-11 18:01:41Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file clear_land.h Tables with sprites for clear land and fences. */ static const SpriteID _landscape_clear_sprites_rough[8] = { SPR_FLAT_ROUGH_LAND, SPR_FLAT_ROUGH_LAND_1, SPR_FLAT_ROUGH_LAND_2, SPR_FLAT_ROUGH_LAND_3, SPR_FLAT_ROUGH_LAND_4, SPR_FLAT_ROUGH_LAND, SPR_FLAT_ROUGH_LAND_1, SPR_FLAT_ROUGH_LAND_2, }; static const byte _fence_mod_by_tileh_sw[32] = { 0, 2, 4, 0, 0, 2, 4, 0, 0, 2, 4, 0, 0, 2, 4, 0, 0, 2, 4, 0, 0, 2, 4, 4, 0, 2, 4, 2, 0, 2, 4, 0, }; static const byte _fence_mod_by_tileh_se[32] = { 1, 1, 5, 5, 3, 3, 1, 1, 1, 1, 5, 5, 3, 3, 1, 1, 1, 1, 5, 5, 3, 3, 1, 5, 1, 1, 5, 5, 3, 3, 3, 1, }; static const byte _fence_mod_by_tileh_ne[32] = { 0, 0, 0, 0, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 2, 2, 2, 2, 0, 2, 4, 0, }; static const byte _fence_mod_by_tileh_nw[32] = { 1, 5, 1, 5, 1, 5, 1, 5, 3, 1, 3, 1, 3, 1, 3, 1, 1, 5, 1, 5, 1, 5, 1, 5, 3, 1, 3, 5, 3, 3, 3, 1, }; static const SpriteID _clear_land_fence_sprites[7] = { SPR_HEDGE_BUSHES, SPR_HEDGE_BUSHES_WITH_GATE, SPR_HEDGE_FENCE, SPR_HEDGE_BLOOMBUSH_YELLOW, SPR_HEDGE_BLOOMBUSH_RED, SPR_HEDGE_STONE, }; static const SpriteID _clear_land_sprites_farmland[16] = { SPR_FARMLAND_BARE, SPR_FARMLAND_STATE_1, SPR_FARMLAND_STATE_2, SPR_FARMLAND_STATE_3, SPR_FARMLAND_STATE_4, SPR_FARMLAND_STATE_5, SPR_FARMLAND_STATE_6, SPR_FARMLAND_STATE_7, SPR_FARMLAND_HAYPACKS, }; static const SpriteID _clear_land_sprites_snow_desert[8] = { SPR_FLAT_1_QUART_SNOW_DESERT_TILE, SPR_FLAT_2_QUART_SNOW_DESERT_TILE, SPR_FLAT_3_QUART_SNOW_DESERT_TILE, SPR_FLAT_SNOW_DESERT_TILE, }; openttd-1.3.3/src/table/industry_land.h0000644000000000000000000017174512246102566016622 0ustar rootroot/* $Id: industry_land.h 20286 2010-08-01 19:44:49Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file industry_land.h Information about the behaviour of the default industry tiles. */ /** * This is used to gather some data about animation * drawing in the industry code * Image_1-2-3 are in fact only offset in the sprites * used by the industry. * To specify an invalid one, either 255 or 0 is used, * depending of the industry. */ struct DrawIndustryAnimationStruct { int x; ///< coordinate x of the first image offset byte image_1; ///< image offset 1 byte image_2; ///< image offset 2 byte image_3; ///< image offset 3 }; /** * Simple structure gathering x,y coordinates for * industries animations */ struct DrawIndustryCoordinates { byte x; ///< coordinate x of the pair byte y; ///< coordinate y of the pair }; /** * Macro to ease the declaration of the array * @param s1 sprite ID of ground sprite * @param p1 palette ID of ground sprite * @param s2 sprite ID of building sprite * @param p2 palette ID of building sprite * @param sx coordinate x of the sprite * @param sy coordinate y of the sprite * @param w width of the sprite * @param h height of the sprite * @param dz virtual height of the sprite * @param p this allows to specify a special drawing procedure. * @see DrawBuildingsTileStruct */ #define M(s1, p1, s2, p2, sx, sy, w, h, dz, p) { { s1, p1 }, { s2, p2 }, sx, sy, w, h, dz, p } /** Structure for industry tiles drawing */ static const DrawBuildingsTileStruct _industry_draw_tile_data[NEW_INDUSTRYTILEOFFSET * 4] = { M( 0xf54, PAL_NONE, 0x7db, PAL_NONE, 7, 0, 9, 9, 10, 0), M( 0xf54, PAL_NONE, 0x7dc, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7dd, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7dd, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7dd, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7de, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7df, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7df, PAL_NONE, 7, 0, 9, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7e0, PAL_NONE, 1, 2, 15, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7e1, PAL_NONE, 1, 2, 15, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7e2, PAL_NONE, 1, 2, 15, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7e2, PAL_NONE, 1, 2, 15, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7e3, PAL_NONE, 4, 4, 9, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7e4, PAL_NONE, 4, 4, 9, 9, 30, 0), M( 0xf54, PAL_NONE, 0x7e5, PAL_NONE, 4, 4, 9, 9, 30, 0), M( 0x7e6, PAL_NONE, 0x7e5, PAL_NONE, 4, 4, 9, 9, 30, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x7fd, PAL_NONE, 1, 1, 14, 14, 5, 0), M( 0xf54, PAL_NONE, 0x7fe, PAL_NONE, 1, 1, 14, 14, 44, 0), M( 0xf54, PAL_NONE, 0x7ff, PAL_NONE, 1, 1, 14, 14, 44, 0), M( 0xf54, PAL_NONE, 0x7ff, PAL_NONE, 1, 1, 14, 14, 44, 0), M( 0xf54, PAL_NONE, 0x800, PAL_NONE, 0, 2, 16, 12, 6, 0), M( 0xf54, PAL_NONE, 0x801, PAL_NONE, 0, 2, 16, 12, 47, 0), M( 0xf54, PAL_NONE, 0x802, PAL_NONE, 0, 2, 16, 12, 50, 0), M( 0xf54, PAL_NONE, 0x802, PAL_NONE, 0, 2, 16, 12, 50, 0), M( 0xf54, PAL_NONE, 0x803, PAL_NONE, 1, 0, 14, 15, 5, 0), M( 0xf54, PAL_NONE, 0x804, PAL_NONE, 1, 0, 14, 15, 19, 0), M( 0xf54, PAL_NONE, 0x805, PAL_NONE, 1, 0, 14, 15, 21, 0), M( 0xf54, PAL_NONE, 0x805, PAL_NONE, 1, 0, 14, 15, 21, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x806, PAL_NONE, 1, 2, 14, 11, 32, 5), M( 0xf54, PAL_NONE, 0x80d, PAL_NONE, 1, 0, 13, 16, 8, 0), M( 0xf54, PAL_NONE, 0x80e, PAL_NONE, 1, 0, 13, 16, 20, 0), M( 0xf54, PAL_NONE, 0x80f, PAL_NONE, 1, 0, 13, 16, 20, 0), M( 0xf54, PAL_NONE, 0x80f, PAL_NONE, 1, 0, 13, 16, 20, 0), M( 0xf54, PAL_NONE, 0x810, PAL_NONE, 0, 1, 16, 14, 8, 0), M( 0xf54, PAL_NONE, 0x811, PAL_NONE, 0, 1, 16, 14, 21, 0), M( 0xf54, PAL_NONE, 0x812, PAL_NONE, 0, 1, 16, 14, 21, 0), M( 0xf54, PAL_NONE, 0x812, PAL_NONE, 0, 1, 16, 14, 21, 0), M( 0xf54, PAL_NONE, 0x813, PAL_NONE, 1, 1, 14, 14, 12, 0), M( 0xf54, PAL_NONE, 0x814, PAL_NONE, 1, 1, 14, 14, 15, 0), M( 0xf54, PAL_NONE, 0x815, PAL_NONE, 1, 1, 14, 14, 22, 0), M( 0xf54, PAL_NONE, 0x815, PAL_NONE, 1, 1, 14, 14, 22, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x816, PAL_NONE, 0, 0, 16, 15, 20, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x817, PAL_NONE, 0, 1, 16, 13, 19, 0), M( 0x81d, PAL_NONE, 0x818, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x819, PAL_NONE, 0, 0, 16, 16, 15, 0), M( 0x81d, PAL_NONE, 0x81a, PAL_NONE, 0, 0, 16, 16, 31, 0), M( 0x81d, PAL_NONE, 0x81b, PAL_NONE, 0, 0, 16, 16, 39, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0xf54, PAL_NONE, 0x81e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 4, 0), M( 0xf54, PAL_NONE, 0x81f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 24, 0), M( 0xf54, PAL_NONE, 0x820 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 27, 0), M( 0x58c, PAL_NONE, 0x820 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 1, 1, 14, 14, 27, 0), M( 0xf54, PAL_NONE, 0x821 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 3, 0), M( 0xf54, PAL_NONE, 0x822 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 63, 0), M( 0xf54, PAL_NONE, 0x823 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 62, 0), M( 0x58c, PAL_NONE, 0x823 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 3, 3, 10, 9, 62, 0), M( 0xf54, PAL_NONE, 0x824 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 3, 0), M( 0xf54, PAL_NONE, 0x825 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 72, 0), M( 0xf54, PAL_NONE, 0x825 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 72, 0), M( 0x58c, PAL_NONE, 0x826 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 4, 4, 7, 7, 80, 0), M( 0xf54, PAL_NONE, 0x827 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0), M( 0xf54, PAL_NONE, 0x828 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0), M( 0xf54, PAL_NONE, 0x829 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0), M( 0x58c, PAL_NONE, 0x829 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 2, 0, 12, 16, 51, 0), M( 0xf54, PAL_NONE, 0x82a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 26, 0), M( 0xf54, PAL_NONE, 0x82b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 44, 0), M( 0xf54, PAL_NONE, 0x82c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 46, 0), M( 0x58c, PAL_NONE, 0x82c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 46, 0), M( 0xf54, PAL_NONE, 0x82d, PAL_NONE, 3, 1, 10, 13, 2, 0), M( 0xf54, PAL_NONE, 0x82e, PAL_NONE, 3, 1, 10, 13, 11, 0), M( 0xf54, PAL_NONE, 0x82f, PAL_NONE, 3, 1, 10, 13, 11, 0), M( 0x58c, PAL_NONE, 0x82f, PAL_NONE, 3, 1, 10, 13, 11, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xfdd, PAL_NONE, 0x833, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x837, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x834, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x834, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x830, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x838, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x835, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x835, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x831, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x839, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x836, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x836, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0xfdd, PAL_NONE, 0x832, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x87f, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x880, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x881, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x882, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x883, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x883, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x882, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x881, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x880, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x87f, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x87d, PAL_NONE, 0x87e, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83a, PAL_NONE, 0x83c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83b, PAL_NONE, 0x83d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x83e, PAL_NONE, 0x83f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83e, PAL_NONE, 0x83f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x83e, PAL_NONE, 0x83f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x840, PAL_NONE, 0x841, PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x840, PAL_NONE, 0x841, PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x840, PAL_NONE, 0x841, PAL_NONE, 0, 0, 16, 16, 18, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x842, PAL_NONE, 0x843, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x842, PAL_NONE, 0x843, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x842, PAL_NONE, 0x843, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x844, PAL_NONE, 0x845, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x844, PAL_NONE, 0x845, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x844, PAL_NONE, 0x845, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x7e6, PAL_NONE, 0x869, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x862 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x866 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86a, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x863 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x867 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x864 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x868 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86c, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x865 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0xf54, PAL_NONE, 0x871 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x875 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x875 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x879 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x872 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x876 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x876 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x87a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x873 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x877 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x877 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x87b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x874 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x878 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x878 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x87c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf54, PAL_NONE, 0x7ea, PAL_NONE, 3, 2, 8, 8, 18, 0), M( 0xf54, PAL_NONE, 0x7eb, PAL_NONE, 3, 2, 8, 8, 37, 0), M( 0xf54, PAL_NONE, 0x7ec, PAL_NONE, 3, 2, 8, 8, 49, 0), M( 0x7e6, PAL_NONE, 0x7ec, PAL_NONE, 3, 2, 8, 8, 49, 0), M( 0x7e6, PAL_NONE, 0x7ec, PAL_NONE, 3, 2, 8, 8, 49, 0), M( 0x7e6, PAL_NONE, 0x7ed, PAL_NONE, 3, 2, 8, 8, 49, 0), M( 0x7e6, PAL_NONE, 0x7ee, PAL_NONE, 3, 2, 8, 8, 49, 0), M( 0x7e6, PAL_NONE, 0x7ee, PAL_NONE, 3, 2, 8, 8, 49, 0), M( 0xf54, PAL_NONE, 0x7ef, PAL_NONE, 3, 2, 10, 7, 20, 0), M( 0xf54, PAL_NONE, 0x7f0, PAL_NONE, 3, 2, 10, 7, 40, 0), M( 0xf54, PAL_NONE, 0x7f1, PAL_NONE, 3, 2, 10, 7, 40, 0), M( 0x7e6, PAL_NONE, 0x7f1, PAL_NONE, 3, 2, 10, 7, 40, 0), M( 0xf54, PAL_NONE, 0x7f2, PAL_NONE, 4, 4, 7, 8, 22, 0), M( 0xf54, PAL_NONE, 0x7f3, PAL_NONE, 4, 4, 7, 8, 22, 0), M( 0xf54, PAL_NONE, 0x7f4, PAL_NONE, 4, 4, 7, 8, 22, 0), M( 0x7e6, PAL_NONE, 0x7f4, PAL_NONE, 4, 4, 7, 8, 22, 0), M( 0xf54, PAL_NONE, 0x7f5, PAL_NONE, 2, 1, 11, 13, 12, 0), M( 0xf54, PAL_NONE, 0x7f6, PAL_NONE, 2, 1, 11, 13, 12, 0), M( 0xf54, PAL_NONE, 0x7f7, PAL_NONE, 2, 1, 11, 13, 12, 0), M( 0x7e6, PAL_NONE, 0x7f7, PAL_NONE, 2, 1, 11, 13, 12, 0), M( 0x7e6, PAL_NONE, 0x85c, PAL_NONE, 0, 0, 1, 1, 1, 0), M( 0x851, PAL_NONE, 0x852, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x851, PAL_NONE, 0x852, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x846 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x847 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x7e6, PAL_NONE, 0x85d, PAL_NONE, 0, 0, 1, 1, 1, 0), M( 0x853, PAL_NONE, 0x854, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x853, PAL_NONE, 0x854, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x848 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x849 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x7e6, PAL_NONE, 0x85e, PAL_NONE, 0, 0, 1, 1, 1, 0), M( 0x855, PAL_NONE, 0x856, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x855, PAL_NONE, 0x856, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x84a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x84b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x7e6, PAL_NONE, 0x85f, PAL_NONE, 0, 0, 1, 1, 1, 0), M( 0x857, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x857, PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x84c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e6, PAL_NONE, 0x860, PAL_NONE, 0, 0, 1, 1, 1, 0), M( 0x858, PAL_NONE, 0x859, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x858, PAL_NONE, 0x859, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x84d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x84e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x7e6, PAL_NONE, 0x861, PAL_NONE, 0, 0, 1, 1, 1, 0), M( 0x85a, PAL_NONE, 0x85b, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x85a, PAL_NONE, 0x85b, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x84f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x850 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x7e6, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x886, PAL_NONE, 0x884, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x887, PAL_NONE, 0x885, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x890 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x890 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x891 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x892 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x893 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x893 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x894 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x895 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x896 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x896 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x897 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x898, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x899, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x899, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89a, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a6, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89b, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89c, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89c, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89d, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89e, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89f, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x89f, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a1, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a2, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a3, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a4, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a2, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a3, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8a5, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8a7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8b7, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8b7, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8c7, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8a8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8a9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8b9, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8b9, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8c9, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8aa, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ba, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ba, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ca, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ab, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8cb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ac, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8cc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ad, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8cd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ae, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8be, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8be, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ce, PAL_NONE, 0x8d7, PAL_NONE, 0, 0, 16, 16, 35, 0), M( 0x8af, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bf, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8bf, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8cf, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8b6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8c6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8d6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ce, PAL_NONE, 0x8d7, PAL_NONE, 0, 0, 16, 16, 35, 0), M( 0x8ce, PAL_NONE, 0x8d8, PAL_NONE, 0, 0, 16, 16, 35, 0), M( 0x8ce, PAL_NONE, 0x8d9, PAL_NONE, 0, 0, 16, 16, 35, 0), M( 0x8ce, PAL_NONE, 0x8d9, PAL_NONE, 0, 0, 16, 16, 35, 0), M( 0x7e6, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x888, PAL_NONE, 0x88a, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x889, PAL_NONE, 0x88b, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8da, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e3, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e3, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ec, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8db, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e4, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e4, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ed, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8dc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e5, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e5, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ee, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8dd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e6, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e6, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8ef, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8de, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8df, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e0, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e9, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8e9, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x8f2, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ea, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ea, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f3, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8e2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8eb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8eb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f4, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f5, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x905, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x905, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x915, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x906, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x906, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x916, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f7, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x907, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x907, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x917, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f8, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x908, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x908, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x918, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8f9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x909, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x909, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x919, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8fa, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x91a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8fb, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x91b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8fc, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90c, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90c, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x91c, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8fd, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x91d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8fe, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90e, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90e, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x91e, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x8ff, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x90f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x91f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x900, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x910, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x910, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x920, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x901, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x911, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x911, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x921, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x902, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x912, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x912, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x922, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x903, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x913, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x913, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x923, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x904, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x914, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x914, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x924, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x925, PAL_NONE, 0x926, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x925, PAL_NONE, 0x926, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x925, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x925, PAL_NONE, 0x927, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x925, PAL_NONE, 0x927, PAL_NONE, 0, 0, 16, 16, 30, 0), M( 0x11c6, PAL_NONE, 0x92b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92e | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92f | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x930 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x928 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x929 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x929 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x11c6, PAL_NONE, 0x92a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x7e6, PAL_NONE, 0x869, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x862 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x866 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86a, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x863 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x867 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x864 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x868 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x86c, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x870, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x865 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 1, 1, 0, 0), M( 0x7e6, PAL_NONE, 0x931, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x935, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x935, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x939, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x932, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x936, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x936, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x93a, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x933, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x937, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x937, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x93b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x934, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x938, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x938, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x93c, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x81d, PAL_NONE, 0x818, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x819, PAL_NONE, 0, 0, 16, 16, 15, 0), M( 0x81d, PAL_NONE, 0x81a, PAL_NONE, 0, 0, 16, 16, 31, 0), M( 0x81d, PAL_NONE, 0x81b, PAL_NONE, 0, 0, 16, 16, 39, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x81d, PAL_NONE, 0x81c, PAL_NONE, 0, 0, 16, 16, 7, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1245 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1248 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1248 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x124b | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1247 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x124a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x124a | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x124d | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1246 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1249 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1249 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x124c | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x81d, PAL_NONE, 0x124e, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x124f, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1250, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1251, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1252, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1253, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1254, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1254, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x81d, PAL_NONE, 0x1255, PAL_NONE, 0, 0, 16, 16, 10, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1261, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125c, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1262, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x125d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1260, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1260, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x7e6, PAL_NONE, 0x1263, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1264, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1264, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1268, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1265, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1265, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1269, PAL_NONE, 0, 0, 16, 16, 50, 4), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1266, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1266, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x126a, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1267, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1267, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x126b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x126c, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1271, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1271, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1271, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1271, PAL_NONE, 0x1279, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1272, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1272, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1272, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1272, PAL_NONE, 0x127a, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1273, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1273, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1273, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1273, PAL_NONE, 0x127b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1274, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1274, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1274, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1274, PAL_NONE, 0x127c, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1275, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1275, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1275, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1275, PAL_NONE, 0x127d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1276, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1276, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1276, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1276, PAL_NONE, 0x127e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1277, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1277, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1277, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1277, PAL_NONE, 0x127f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1278, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1278, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1278, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1278, PAL_NONE, 0x1280, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1284 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1283 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1283 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1286 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1281 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1282 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1282 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1285 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1287 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1287 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1287 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1288 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1288 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x1288 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1243, PAL_NONE, 0x1289 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 3), M( 0x1243, PAL_NONE, 0x1289 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 3), M( 0x1243, PAL_NONE, 0x1289 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 3), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x1244, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129b, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2), M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2), M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2), M( 0xf8d, PAL_NONE, 0x129c, PAL_NONE, 0, 0, 16, 16, 50, 2), M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x129d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a0 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a1 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a2 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0x12a3 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a4 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a6 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 0), M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1), M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1), M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1), M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 16, 50, 1), }; #undef M /* this is ONLY used for Sugar Mine*/ static const DrawIndustryAnimationStruct _draw_industry_spec1[96] = { { 8, 4, 0, 0}, { 6, 0, 1, 0}, { 4, 0, 2, 0}, { 6, 0, 3, 0}, { 8, 0, 4, 0}, { 10, 0, 5, 0}, { 12, 0, 6, 0}, { 10, 0, 1, 0}, { 8, 0, 2, 0}, { 6, 0, 3, 0}, { 4, 0, 4, 0}, { 6, 0, 5, 1}, { 8, 0, 6, 1}, { 10, 0, 1, 1}, { 12, 0, 2, 1}, { 10, 0, 3, 1}, { 8, 1, 4, 1}, { 6, 1, 5, 1}, { 4, 1, 6, 1}, { 6, 1, 1, 1}, { 8, 1, 2, 1}, { 10, 1, 3, 1}, { 12, 1, 4, 1}, { 10, 1, 5, 2}, { 8, 1, 6, 2}, { 6, 1, 1, 2}, { 4, 1, 2, 2}, { 6, 1, 3, 2}, { 8, 1, 4, 2}, { 10, 1, 5, 2}, { 12, 1, 6, 2}, { 10, 1, 1, 2}, { 8, 2, 2, 2}, { 6, 2, 3, 2}, { 4, 2, 4, 3}, { 6, 2, 5, 3}, { 8, 2, 6, 3}, { 10, 2, 1, 3}, { 12, 2, 2, 3}, { 10, 2, 3, 3}, { 8, 2, 4, 3}, { 6, 2, 5, 3}, { 4, 2, 6, 3}, { 6, 2, 1, 3}, { 8, 2, 2, 3}, { 10, 2, 3, 4}, { 12, 2, 4, 4}, { 10, 2, 5, 4}, { 8, 3, 6, 4}, { 6, 3, 1, 4}, { 4, 3, 2, 4}, { 6, 3, 3, 4}, { 8, 3, 4, 4}, { 10, 3, 5, 4}, { 12, 3, 6, 4}, { 10, 3, 1, 4}, { 8, 3, 2, 4}, { 6, 3, 3, 4}, { 4, 3, 4, 4}, { 6, 3, 5, 4}, { 8, 3, 6, 4}, { 10, 3, 1, 4}, { 12, 3, 2, 4}, { 10, 3, 3, 4}, { 8, 4, 4, 4}, { 6, 4, 5, 4}, { 4, 4, 6, 4}, { 6, 4, 0, 4}, { 8, 4, 0, 4}, { 10, 4, 0, 4}, { 12, 4, 0, 4}, { 10, 4, 0, 4}, { 8, 4, 0, 4}, { 6, 4, 0, 4}, { 4, 4, 0, 4}, { 6, 4, 0, 4}, { 8, 4, 0, 4}, { 10, 4, 0, 4}, { 12, 4, 0, 4}, { 10, 4, 0, 4}, { 8, 4, 0, 4}, { 6, 4, 0, 4}, { 4, 4, 0, 4}, { 6, 4, 0, 4}, { 8, 4, 0, 4}, { 10, 4, 0, 4}, { 12, 4, 0, 4}, { 10, 4, 0, 4}, { 8, 4, 0, 4}, { 6, 4, 0, 4}, { 4, 4, 0, 4}, { 6, 4, 0, 4}, { 8, 4, 0, 4}, { 10, 4, 0, 4}, { 12, 4, 0, 4}, { 10, 4, 0, 4}, }; /* this is ONLY used for Sugar Mine*/ static const DrawIndustryCoordinates _drawtile_proc1[5] = { {22, 73}, {17, 70}, {14, 69}, {10, 66}, { 8, 41}, }; /** * this is ONLY used for Toy Factory. * 255 means no drawing * @param img1 offset from base sprite SPR_IT_SUGAR_MINE_SIEVE * @param img2 offset from base sprite SPR_IT_SUGAR_MINE_CLOUDS * @param img3 offset from base sprite SPR_IT_SUGAR_MINE_PILE */ #define MD( img1, img2, img3) { (50 - img1 * 2), img1, img2, img3 } static const DrawIndustryAnimationStruct _industry_anim_offs_toys[] = { MD(255, 255, 0), MD( 0, 255, 0), MD( 1, 255, 0), MD( 2, 255, 0), MD( 3, 255, 0), MD( 4, 255, 0), MD( 5, 255, 0), MD( 6, 255, 0), MD( 7, 255, 0), MD( 8, 255, 0), MD( 9, 255, 0), MD( 10, 255, 0), MD( 11, 255, 0), MD( 12, 255, 0), MD( 13, 255, 0), MD( 14, 255, 0), MD( 15, 255, 0), MD( 16, 255, 0), MD( 17, 255, 0), MD( 18, 255, 0), MD( 18, 255, 1), MD( 18, 255, 2), MD( 18, 255, 4), MD( 18, 255, 6), MD( 18, 255, 8), MD( 18, 255, 11), MD( 18, 255, 14), MD( 18, 255, 17), MD( 18, 255, 20), MD( 18, 255, 24), MD(255, 0, 29), MD(255, 0, 24), MD(255, 0, 20), MD(255, 0, 17), MD(255, 0, 14), MD(255, 0, 11), MD(255, 0, 8), MD(255, 0, 6), MD(255, 0, 4), MD(255, 0, 2), MD(255, 0, 1), MD(255, 1, 0), MD(255, 2, 0), MD(255, 3, 0), MD(255, 4, 0), MD(255, 5, 0), MD(255, 6, 0), MD(255, 7, 0), MD(255, 8, 0), MD(255, 255, 0), }; #undef MD /* this is ONLY used for Toffee Quarry*/ static const byte _industry_anim_offs_toffee[] = { 255, 0, 0, 0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1, 255, 0, 0, 0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1, 255, 0, 0, 0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1, 255, 0, 0, 0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1, 255, 0, 0, 0, 2, 4, 6, 8, 10, 9, 7, 5, 3, 1 }; /* this is ONLY used for the Bubble Generator*/ static const byte _industry_anim_offs_bubbles[] = { 68, 69, 71, 74, 77, 80, 83, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, }; /** * Movement of the sparks , only used for Power Station */ static const DrawIndustryCoordinates _coal_plant_sparks[] = { {11, 23}, {11, 11}, {14, 6}, {13, 3}, {18, 1}, {15, 0}, }; openttd-1.3.3/src/table/landscape_sprite.h0000644000000000000000000000574512246102566017257 0ustar rootroot/* $Id: landscape_sprite.h 24877 2013-01-01 10:52:32Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file landscape_sprite.h Offsets of sprites to replace for non-temperate landscapes. */ static const SpriteID END = 0xFFFF; static const SpriteID _landscape_spriteindexes_arctic[] = { 0xF67, 0xF9F, 0xAAD, 0xAB0, 0x83A, 0x845, 0xFA0, 0xFC9, 0x43F, 0x45E, 0x566, 0x56D, 0x945, 0x94C, 0x3ED, 0x40C, 0x515, 0x51C, 0x55A, 0x561, 0x534, 0x546, 0x93D, 0x944, 0x955, 0x95C, 0xFDD, 0xFEC, 0x87D, 0x883, 0xA2B, 0xA39, 0x497, 0x4B0, 0x572, 0x575, 0x94D, 0x954, 0x818, 0x81D, 0x3DE, 0x3EB, 0x1212, 0x1212, END }; static const SpriteID _landscape_spriteindexes_tropic[] = { 0xF67, 0xF9F, 0xAAD, 0xAB0, 0xFA0, 0xFC9, 0x43F, 0x45E, 0x566, 0x56D, 0x945, 0x94C, 0x3ED, 0x40C, 0x515, 0x51C, 0x55A, 0x561, 0x547, 0x559, 0x93D, 0x944, 0x955, 0x95C, 0xFDD, 0xFEC, 0x87D, 0x883, 0xA2B, 0xA39, 0x497, 0x4B0, 0x572, 0x575, 0x94D, 0x954, 0x5AE, 0x5AF, 0x118D, 0x11D8, 0x534, 0x546, 0x40D, 0x426, 0x45F, 0x478, 0x4B1, 0x4CA, 0x95D, 0x97C, 0x3DE, 0x3EB, 0x562, 0x565, 0x56E, 0x571, 0x57A, 0x57D, 0x83A, 0x845, 0xFF5, 0xFF5, 0xFF8, 0xFF8, 0x1212, 0x1212, END }; static const SpriteID _landscape_spriteindexes_toyland[] = { 0xF54, 0xF9F, 0xFDD, 0xFE5, 0xFEC, 0xFEC, 0xFA0, 0xFC9, 0x818, 0x81D, 0x521, 0x546, 0x57E, 0x57F, 0x3ED, 0x40C, 0x43F, 0x45E, 0x491, 0x4B0, 0xA48, 0xA48, 0x4FB, 0x50A, 0x55A, 0x561, 0x566, 0x56D, 0x572, 0x579, 0x427, 0x42C, 0x479, 0x47E, 0x4CB, 0x4D0, 0x4EF, 0x4FA, 0xE9D, 0xECC, 0xF3D, 0xF40, 0xB59, 0xB60, 0xE5D, 0xE6C, 0xA49, 0xA59, 0xA63, 0xA68, 0xA5A, 0xA62, 0xA78, 0xA83, 0xA69, 0xA77, 0xA84, 0xAA3, 0xAA7, 0xAAC, 0xA2B, 0xA47, 0x3DE, 0x3EB, 0x47F, 0x488, 0x4D1, 0x4DA, 0x42D, 0x436, 0x515, 0x51C, 0x580, 0x585, 0xC14, 0xCB3, 0xAAD, 0xAB0, 0xAB5, 0xB00, 0xB69, 0xB70, 0xB61, 0xB68, 0xBC9, 0xBD0, 0xBD9, 0xBE0, 0xBA9, 0xBB0, 0xBC1, 0xBC4, 0x2D0, 0x2D0, 0xAA5, 0xAA6, 0x50F, 0x50F, 0x2EA, 0x2EA, 0x2ED, 0x2EE, 0x512, 0x513, 0x4EB, 0x4EE, 0x4E7, 0x4EA, 0x985, 0xA28, 0x10E4, 0x1133, 0x93D, 0x95C, 0x97D, 0x984, 0x7DA, 0x7DA, 0x2E6, 0x2E6, 0x1, 0x1, 0xE54, 0xE54, 0x51F, 0x520, 0x514, 0x514, 0x511, 0x511, 0x322, 0x322, END }; openttd-1.3.3/src/table/currency_settings.ini0000644000000000000000000000370612246102566020034 0ustar rootroot; $Id: currency_settings.ini 24671 2012-11-08 10:04:00Z frosch $ ; ; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; [pre-amble] static const SettingDesc _currency_settings[] = { [post-amble] }; [templates] SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_CHR = SDT_CHR($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_END = SDT_END() [defaults] flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = 0 interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED [SDT_VAR] base = CurrencySpec var = rate type = SLE_UINT16 def = 1 min = 0 max = UINT16_MAX [SDT_CHR] base = CurrencySpec var = separator def = ""."" cat = SC_BASIC [SDT_VAR] base = CurrencySpec var = to_euro type = SLE_INT32 def = 0 min = MIN_YEAR max = MAX_YEAR [SDT_STR] base = CurrencySpec var = prefix type = SLE_STRBQ def = NULL [SDT_STR] base = CurrencySpec var = suffix type = SLE_STRBQ def = "" credits"" [SDT_END] openttd-1.3.3/src/table/airporttile_ids.h0000644000000000000000000000450212246102566017122 0ustar rootroot/* $Id: airporttile_ids.h 19099 2010-02-11 20:52:56Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airporttile_ids.h Enum of the default airport tiles. */ #ifndef AIRPORTTILE_IDS_H #define AIRPORTTILE_IDS_H enum AirportTiles { APT_APRON, APT_APRON_FENCE_NW, APT_APRON_FENCE_SW, APT_STAND, APT_APRON_W, APT_APRON_S, APT_APRON_VER_CROSSING_S, APT_APRON_HOR_CROSSING_W, APT_APRON_VER_CROSSING_N, APT_APRON_HOR_CROSSING_E, APT_APRON_E, APT_ARPON_N, APT_APRON_HOR, APT_APRON_N_FENCE_SW, APT_RUNWAY_1, APT_RUNWAY_2, APT_RUNWAY_3, APT_RUNWAY_4, APT_RUNWAY_END_FENCE_SE, APT_BUILDING_2, APT_TOWER_FENCE_SW, APT_ROUND_TERMINAL, APT_BUILDING_3, APT_BUILDING_1, APT_DEPOT_SE, APT_STAND_1, APT_STAND_PIER_NE, APT_PIER_NW_NE, APT_PIER, APT_EMPTY, APT_EMPTY_FENCE_NE, APT_RADAR_GRASS_FENCE_SW, APT_RADIO_TOWER_FENCE_NE, APT_SMALL_BUILDING_3, APT_SMALL_BUILDING_2, APT_SMALL_BUILDING_1, APT_GRASS_FENCE_SW, APT_GRASS_2, APT_GRASS_1, APT_GRASS_FENCE_NE_FLAG, APT_RUNWAY_SMALL_NEAR_END, APT_RUNWAY_SMALL_MIDDLE, APT_RUNWAY_SMALL_FAR_END, APT_SMALL_DEPOT_SE, APT_HELIPORT, APT_RUNWAY_END, APT_RUNWAY_5, APT_TOWER, APT_APRON_FENCE_NE, APT_RUNWAY_END_FENCE_NW, APT_RUNWAY_FENCE_NW, APT_RADAR_FENCE_SW, APT_RADAR_FENCE_NE, APT_HELIPAD_1, APT_HELIPAD_2_FENCE_NW, APT_HELIPAD_2, APT_APRON_FENCE_NE_SW, APT_RUNWAY_END_FENCE_NW_SW, APT_RUNWAY_END_FENCE_SE_SW, APT_RUNWAY_END_FENCE_NE_NW, APT_RUNWAY_END_FENCE_NE_SE, APT_HELIPAD_2_FENCE_NE_SE, APT_APRON_FENCE_SE_SW, APT_LOW_BUILDING_FENCE_N, APT_LOW_BUILDING_FENCE_NW, APT_APRON_FENCE_SE, APT_HELIPAD_3_FENCE_SE_SW, APT_HELIPAD_3_FENCE_NW_SW, APT_HELIPAD_3_FENCE_NW, APT_LOW_BUILDING, APT_APRON_FENCE_NE_SE, APT_APRON_HALF_EAST, APT_APRON_HALF_WEST, APT_GRASS_FENCE_NE_FLAG_2, }; #endif /* AIRPORTTILE_IDS_H */ openttd-1.3.3/src/table/cargo_const.h0000644000000000000000000002512612246102566016233 0ustar rootroot/* $Id: cargo_const.h 23862 2012-01-28 14:12:42Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cargo_const.h Table of all default cargo types */ /** Construction macro for a #CargoSpec structure. */ #define MK(bt, label, c, e, f, g, h, fr, te, ks1, ks2, ks3, ks4, ks5, l, m, cmult) \ {bt, label, c, c, e, cmult, f, {g, h}, fr, te, 0, 0, ks1, ks2, ks3, ks4, ks5, l, m, NULL, NULL, 0} /** Cargo types available by default. */ static const CargoSpec _default_cargo[] = { MK( 0, 'PASS', 152, 1, 3185, 0, 24, false, TE_PASSENGERS, STR_CARGO_PLURAL_PASSENGERS, STR_CARGO_SINGULAR_PASSENGER, STR_PASSENGERS, STR_QUANTITY_PASSENGERS, STR_ABBREV_PASSENGERS, SPR_CARGO_PASSENGER, CC_PASSENGERS, 0x400), MK( 1, 'COAL', 6, 16, 5916, 7, 255, true, TE_NONE, STR_CARGO_PLURAL_COAL, STR_CARGO_SINGULAR_COAL, STR_TONS, STR_QUANTITY_COAL, STR_ABBREV_COAL, SPR_CARGO_COAL, CC_BULK, 0x100), MK( 2, 'MAIL', 15, 4, 4550, 20, 90, false, TE_MAIL, STR_CARGO_PLURAL_MAIL, STR_CARGO_SINGULAR_MAIL, STR_BAGS, STR_QUANTITY_MAIL, STR_ABBREV_MAIL, SPR_CARGO_MAIL, CC_MAIL, 0x200), /* Oil in temperate and arctic */ MK( 3, 'OIL_', 174, 16, 4437, 25, 255, true, TE_NONE, STR_CARGO_PLURAL_OIL, STR_CARGO_SINGULAR_OIL, STR_LITERS, STR_QUANTITY_OIL, STR_ABBREV_OIL, SPR_CARGO_OIL, CC_LIQUID, 0x100), /* Oil in subtropic */ MK( 3, 'OIL_', 174, 16, 4892, 25, 255, true, TE_NONE, STR_CARGO_PLURAL_OIL, STR_CARGO_SINGULAR_OIL, STR_LITERS, STR_QUANTITY_OIL, STR_ABBREV_OIL, SPR_CARGO_OIL, CC_LIQUID, 0x100), MK( 4, 'LVST', 208, 3, 4322, 4, 18, true, TE_NONE, STR_CARGO_PLURAL_LIVESTOCK, STR_CARGO_SINGULAR_LIVESTOCK, STR_ITEMS, STR_QUANTITY_LIVESTOCK, STR_ABBREV_LIVESTOCK, SPR_CARGO_LIVESTOCK, CC_PIECE_GOODS, 0x100), MK( 5, 'GOOD', 194, 8, 6144, 5, 28, true, TE_GOODS, STR_CARGO_PLURAL_GOODS, STR_CARGO_SINGULAR_GOODS, STR_CRATES, STR_QUANTITY_GOODS, STR_ABBREV_GOODS, SPR_CARGO_GOODS, CC_EXPRESS, 0x200), MK( 6, 'GRAI', 191, 16, 4778, 4, 40, true, TE_NONE, STR_CARGO_PLURAL_GRAIN, STR_CARGO_SINGULAR_GRAIN, STR_TONS, STR_QUANTITY_GRAIN, STR_ABBREV_GRAIN, SPR_CARGO_GRAIN, CC_BULK, 0x100), MK( 6, 'WHEA', 191, 16, 4778, 4, 40, true, TE_NONE, STR_CARGO_PLURAL_WHEAT, STR_CARGO_SINGULAR_WHEAT, STR_TONS, STR_QUANTITY_WHEAT, STR_ABBREV_WHEAT, SPR_CARGO_GRAIN, CC_BULK, 0x100), MK( 6, 'MAIZ', 191, 16, 4322, 4, 40, true, TE_NONE, STR_CARGO_PLURAL_MAIZE, STR_CARGO_SINGULAR_MAIZE, STR_TONS, STR_QUANTITY_MAIZE, STR_ABBREV_MAIZE, SPR_CARGO_GRAIN, CC_BULK, 0x100), /* Wood in temperate and arctic */ MK( 7, 'WOOD', 84, 16, 5005, 15, 255, true, TE_NONE, STR_CARGO_PLURAL_WOOD, STR_CARGO_SINGULAR_WOOD, STR_TONS, STR_QUANTITY_WOOD, STR_ABBREV_WOOD, SPR_CARGO_WOOD, CC_PIECE_GOODS, 0x100), /* Wood in subtropic */ MK( 7, 'WOOD', 84, 16, 7964, 15, 255, true, TE_NONE, STR_CARGO_PLURAL_WOOD, STR_CARGO_SINGULAR_WOOD, STR_TONS, STR_QUANTITY_WOOD, STR_ABBREV_WOOD, SPR_CARGO_WOOD, CC_PIECE_GOODS, 0x100), MK( 8, 'IORE', 184, 16, 5120, 9, 255, true, TE_NONE, STR_CARGO_PLURAL_IRON_ORE, STR_CARGO_SINGULAR_IRON_ORE, STR_TONS, STR_QUANTITY_IRON_ORE, STR_ABBREV_IRON_ORE, SPR_CARGO_IRON_ORE, CC_BULK, 0x100), MK( 9, 'STEL', 10, 16, 5688, 7, 255, true, TE_NONE, STR_CARGO_PLURAL_STEEL, STR_CARGO_SINGULAR_STEEL, STR_TONS, STR_QUANTITY_STEEL, STR_ABBREV_STEEL, SPR_CARGO_STEEL, CC_PIECE_GOODS, 0x100), MK( 10, 'VALU', 202, 2, 7509, 1, 32, true, TE_NONE, STR_CARGO_PLURAL_VALUABLES, STR_CARGO_SINGULAR_VALUABLES, STR_BAGS, STR_QUANTITY_VALUABLES, STR_ABBREV_VALUABLES, SPR_CARGO_VALUES_GOLD, CC_ARMOURED, 0x100), MK( 10, 'GOLD', 202, 8, 5802, 10, 40, true, TE_NONE, STR_CARGO_PLURAL_GOLD, STR_CARGO_SINGULAR_GOLD, STR_BAGS, STR_QUANTITY_GOLD, STR_ABBREV_GOLD, SPR_CARGO_VALUES_GOLD, CC_ARMOURED, 0x100), MK( 10, 'DIAM', 202, 2, 5802, 10, 255, true, TE_NONE, STR_CARGO_PLURAL_DIAMONDS, STR_CARGO_SINGULAR_DIAMOND, STR_BAGS, STR_QUANTITY_DIAMONDS, STR_ABBREV_DIAMONDS, SPR_CARGO_DIAMONDS, CC_ARMOURED, 0x100), MK( 11, 'PAPR', 10, 16, 5461, 7, 60, true, TE_NONE, STR_CARGO_PLURAL_PAPER, STR_CARGO_SINGULAR_PAPER, STR_TONS, STR_QUANTITY_PAPER, STR_ABBREV_PAPER, SPR_CARGO_PAPER, CC_PIECE_GOODS, 0x100), MK( 12, 'FOOD', 48, 16, 5688, 0, 30, true, TE_FOOD, STR_CARGO_PLURAL_FOOD, STR_CARGO_SINGULAR_FOOD, STR_TONS, STR_QUANTITY_FOOD, STR_ABBREV_FOOD, SPR_CARGO_FOOD, CC_EXPRESS | CC_REFRIGERATED, 0x100), MK( 13, 'FRUT', 208, 16, 4209, 0, 15, true, TE_NONE, STR_CARGO_PLURAL_FRUIT, STR_CARGO_SINGULAR_FRUIT, STR_TONS, STR_QUANTITY_FRUIT, STR_ABBREV_FRUIT, SPR_CARGO_FRUIT, CC_BULK | CC_REFRIGERATED, 0x100), MK( 14, 'CORE', 184, 16, 4892, 12, 255, true, TE_NONE, STR_CARGO_PLURAL_COPPER_ORE, STR_CARGO_SINGULAR_COPPER_ORE, STR_TONS, STR_QUANTITY_COPPER_ORE, STR_ABBREV_COPPER_ORE, SPR_CARGO_COPPER_ORE, CC_BULK, 0x100), MK( 15, 'WATR', 10, 16, 4664, 20, 80, true, TE_WATER, STR_CARGO_PLURAL_WATER, STR_CARGO_SINGULAR_WATER, STR_LITERS, STR_QUANTITY_WATER, STR_ABBREV_WATER, SPR_CARGO_WATERCOLA, CC_LIQUID, 0x100), MK( 16, 'RUBR', 6, 16, 4437, 2, 20, true, TE_NONE, STR_CARGO_PLURAL_RUBBER, STR_CARGO_SINGULAR_RUBBER, STR_LITERS, STR_QUANTITY_RUBBER, STR_ABBREV_RUBBER, SPR_CARGO_RUBBER, CC_LIQUID, 0x100), MK( 17, 'SUGR', 6, 16, 4437, 20, 255, true, TE_NONE, STR_CARGO_PLURAL_SUGAR, STR_CARGO_SINGULAR_SUGAR, STR_TONS, STR_QUANTITY_SUGAR, STR_ABBREV_SUGAR, SPR_CARGO_SUGAR, CC_BULK, 0x100), MK( 18, 'TOYS', 174, 2, 5574, 25, 255, true, TE_NONE, STR_CARGO_PLURAL_TOYS, STR_CARGO_SINGULAR_TOY, STR_ITEMS, STR_QUANTITY_TOYS, STR_ABBREV_TOYS, SPR_CARGO_TOYS, CC_PIECE_GOODS, 0x100), MK( 19, 'BATT', 208, 4, 4322, 2, 30, true, TE_NONE, STR_CARGO_PLURAL_BATTERIES, STR_CARGO_SINGULAR_BATTERY, STR_ITEMS, STR_QUANTITY_BATTERIES, STR_ABBREV_BATTERIES, SPR_CARGO_BATTERIES, CC_PIECE_GOODS, 0x100), MK( 20, 'SWET', 194, 5, 6144, 8, 40, true, TE_GOODS, STR_CARGO_PLURAL_CANDY, STR_CARGO_SINGULAR_CANDY, STR_BAGS, STR_QUANTITY_SWEETS, STR_ABBREV_SWEETS, SPR_CARGO_CANDY, CC_EXPRESS, 0x200), MK( 21, 'TOFF', 191, 16, 4778, 14, 60, true, TE_NONE, STR_CARGO_PLURAL_TOFFEE, STR_CARGO_SINGULAR_TOFFEE, STR_TONS, STR_QUANTITY_TOFFEE, STR_ABBREV_TOFFEE, SPR_CARGO_TOFFEE, CC_BULK, 0x100), MK( 22, 'COLA', 84, 16, 4892, 5, 75, true, TE_NONE, STR_CARGO_PLURAL_COLA, STR_CARGO_SINGULAR_COLA, STR_LITERS, STR_QUANTITY_COLA, STR_ABBREV_COLA, SPR_CARGO_WATERCOLA, CC_LIQUID, 0x100), MK( 23, 'CTCD', 184, 16, 5005, 10, 25, true, TE_NONE, STR_CARGO_PLURAL_COTTON_CANDY, STR_CARGO_SINGULAR_COTTON_CANDY, STR_TONS, STR_QUANTITY_CANDYFLOSS, STR_ABBREV_CANDYFLOSS, SPR_CARGO_COTTONCANDY, CC_BULK, 0x100), MK( 24, 'BUBL', 10, 1, 5077, 20, 80, true, TE_NONE, STR_CARGO_PLURAL_BUBBLES, STR_CARGO_SINGULAR_BUBBLE, STR_ITEMS, STR_QUANTITY_BUBBLES, STR_ABBREV_BUBBLES, SPR_CARGO_BUBBLES, CC_PIECE_GOODS, 0x100), MK( 25, 'PLST', 202, 16, 4664, 30, 255, true, TE_NONE, STR_CARGO_PLURAL_PLASTIC, STR_CARGO_SINGULAR_PLASTIC, STR_LITERS, STR_QUANTITY_PLASTIC, STR_ABBREV_PLASTIC, SPR_CARGO_PLASTIC, CC_LIQUID, 0x100), MK( 26, 'FZDR', 48, 2, 6250, 30, 50, true, TE_FOOD, STR_CARGO_PLURAL_FIZZY_DRINKS, STR_CARGO_SINGULAR_FIZZY_DRINK, STR_ITEMS, STR_QUANTITY_FIZZY_DRINKS, STR_ABBREV_FIZZY_DRINKS, SPR_CARGO_FIZZYDRINK, CC_PIECE_GOODS, 0x100), /* Void slot in temperate */ MK( 0xFF, 0, 1, 0, 5688, 0, 30, true, TE_NONE, STR_CARGO_PLURAL_NOTHING, STR_CARGO_SINGULAR_NOTHING, STR_TONS, STR_QUANTITY_NOTHING, STR_ABBREV_NOTHING, SPR_ASCII_SPACE, CC_NOAVAILABLE, 0x100), /* Void slot in arctic */ MK( 0xFF, 0, 184, 0, 5120, 9, 255, true, TE_NONE, STR_CARGO_PLURAL_NOTHING, STR_CARGO_SINGULAR_NOTHING, STR_TONS, STR_QUANTITY_NOTHING, STR_ABBREV_NOTHING, SPR_ASCII_SPACE, CC_NOAVAILABLE, 0x100), }; /** Table of cargo types available in each climate, by default */ static const CargoLabel _default_climate_cargo[NUM_LANDSCAPE][12] = { { 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'GRAI', 'WOOD', 'IORE', 'STEL', 'VALU', 33, }, { 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'WHEA', 'WOOD', 34, 'PAPR', 'GOLD', 'FOOD', }, { 'PASS', 'RUBR', 'MAIL', 4, 'FRUT', 'GOOD', 'MAIZ', 11, 'CORE', 'WATR', 'DIAM', 'FOOD', }, { 'PASS', 'SUGR', 'MAIL', 'TOYS', 'BATT', 'SWET', 'TOFF', 'COLA', 'CTCD', 'BUBL', 'PLST', 'FZDR', }, }; openttd-1.3.3/src/table/settings.ini0000644000000000000000000025461712246102566016133 0ustar rootroot; $Id: settings.ini 24968 2013-02-04 20:29:38Z rubidium $ ; ; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; [pre-amble] /* Begin - Callback Functions for the various settings */ static bool v_PositionMainToolbar(int32 p1); static bool v_PositionStatusbar(int32 p1); static bool PopulationInLabelActive(int32 p1); static bool RedrawScreen(int32 p1); static bool RedrawSmallmap(int32 p1); static bool StationSpreadChanged(int32 p1); static bool InvalidateBuildIndustryWindow(int32 p1); static bool CloseSignalGUI(int32 p1); static bool InvalidateTownViewWindow(int32 p1); static bool DeleteSelectStationWindow(int32 p1); static bool UpdateConsists(int32 p1); static bool TrainAccelerationModelChanged(int32 p1); static bool RoadVehAccelerationModelChanged(int32 p1); static bool TrainSlopeSteepnessChanged(int32 p1); static bool RoadVehSlopeSteepnessChanged(int32 p1); static bool DragSignalsDensityChanged(int32); static bool TownFoundingChanged(int32 p1); static bool DifficultyNoiseChange(int32 i); static bool MaxNoAIsChange(int32 i); static bool CheckRoadSide(int p1); static bool CheckFreeformEdges(int32 p1); static bool ChangeDynamicEngines(int32 p1); static bool StationCatchmentChanged(int32 p1); static bool InvalidateVehTimetableWindow(int32 p1); static bool InvalidateCompanyLiveryWindow(int32 p1); static bool InvalidateNewGRFChangeWindows(int32 p1); static bool InvalidateIndustryViewWindow(int32 p1); static bool InvalidateAISettingsWindow(int32 p1); static bool RedrawTownAuthority(int32 p1); static bool InvalidateCompanyInfrastructureWindow(int32 p1); static bool InvalidateCompanyWindow(int32 p1); static bool ZoomMinMaxChanged(int32 p1); #ifdef ENABLE_NETWORK static bool UpdateClientName(int32 p1); static bool UpdateServerPassword(int32 p1); static bool UpdateRconPassword(int32 p1); static bool UpdateClientConfigValues(int32 p1); #endif /* ENABLE_NETWORK */ /* End - Callback Functions for the various settings */ /* Some settings do not need to be synchronised when playing in multiplayer. * These include for example the GUI settings and will not be saved with the * savegame. * It is also a bit tricky since you would think that service_interval * for example doesn't need to be synched. Every client assigns the * service_interval value to the v->service_interval, meaning that every client * assigns his value. If the setting was company-based, that would mean that * vehicles could decide on different moments that they are heading back to a * service depot, causing desyncs on a massive scale. */ const SettingDesc _settings[] = { [post-amble] }; [templates] SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTC_BOOL = SDTC_BOOL( $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTC_LIST = SDTC_LIST( $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTC_STR = SDTC_STR( $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTC_VAR = SDTC_VAR( $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat), SDT_STR = SDT_STR($base, $var, $type, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_NULL = SDT_NULL($length, $from, $to), SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_END = SDT_END() [defaults] flags = 0 guiflags = 0 interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED ; Saved settings variables. ; Do not ADD or REMOVE something in this "difficulty.XXX" table or before it. It breaks savegame compatability. [SDT_VAR] base = GameSettings var = difficulty.max_no_competitors type = SLE_UINT8 from = 97 def = 0 min = 0 max = MAX_COMPANIES - 1 interval = 1 proc = MaxNoAIsChange cat = SC_BASIC [SDT_NULL] length = 1 from = 97 to = 109 [SDT_VAR] base = GameSettings var = difficulty.number_towns type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY def = 2 min = 0 max = 4 interval = 1 strval = STR_NUM_VERY_LOW cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.industry_density type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY def = ID_END - 1 min = 0 max = ID_END - 1 interval = 1 strval = STR_FUNDING_ONLY cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.max_loan type = SLE_UINT32 from = 97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_CURRENCY def = 300000 min = 100000 max = 500000 interval = 50000 str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT strval = STR_JUST_CURRENCY_LONG cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.initial_interest type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO def = 2 min = 2 max = 4 interval = 1 str = STR_CONFIG_SETTING_INTEREST_RATE strhelp = STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT strval = STR_CONFIG_SETTING_PERCENTAGE [SDT_VAR] base = GameSettings var = difficulty.vehicle_costs type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_MULTISTRING def = 0 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_RUNNING_COSTS strhelp = STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT strval = STR_SEA_LEVEL_LOW cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.competitor_speed type = SLE_UINT8 from = 97 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 4 interval = 1 str = STR_CONFIG_SETTING_CONSTRUCTION_SPEED strhelp = STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT strval = STR_AI_SPEED_VERY_SLOW cat = SC_BASIC [SDT_NULL] length = 1 from = 97 to = 109 [SDT_VAR] base = GameSettings var = difficulty.vehicle_breakdowns type = SLE_UINT8 from = 97 guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS strhelp = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT strval = STR_DISASTER_NONE cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.subsidy_multiplier type = SLE_UINT8 from = 97 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 3 interval = 1 str = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER strhelp = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT strval = STR_SUBSIDY_X1_5 [SDT_VAR] base = GameSettings var = difficulty.construction_cost type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_MULTISTRING def = 0 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_CONSTRUCTION_COSTS strhelp = STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT strval = STR_SEA_LEVEL_LOW cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.terrain_type type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY def = 1 min = 0 max = 3 interval = 1 strval = STR_TERRAIN_TYPE_VERY_FLAT cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.quantity_sea_lakes type = SLE_UINT8 from = 97 guiflags = SGF_NEWGAME_ONLY def = 0 min = 0 max = 4 interval = 1 strval = STR_SEA_LEVEL_VERY_LOW cat = SC_BASIC [SDT_BOOL] base = GameSettings var = difficulty.economy from = 97 def = false str = STR_CONFIG_SETTING_RECESSIONS strhelp = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT [SDT_BOOL] base = GameSettings var = difficulty.line_reverse_mode from = 97 def = false str = STR_CONFIG_SETTING_TRAIN_REVERSING strhelp = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT [SDT_BOOL] base = GameSettings var = difficulty.disasters from = 97 def = false str = STR_CONFIG_SETTING_DISASTERS strhelp = STR_CONFIG_SETTING_DISASTERS_HELPTEXT cat = SC_BASIC [SDT_VAR] base = GameSettings var = difficulty.town_council_tolerance type = SLE_UINT8 from = 97 guiflags = SGF_MULTISTRING def = 0 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_CITY_APPROVAL strhelp = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT strval = STR_CITY_APPROVAL_PERMISSIVE proc = DifficultyNoiseChange [SDTG_VAR] name = ""diff_level"" var = _old_diff_level type = SLE_UINT8 flags = SLF_NOT_IN_CONFIG from = 97 to = 177 def = 3 min = 0 max = 3 cat = SC_BASIC ; There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow ; these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI. [SDT_OMANY] base = GameSettings var = game_creation.town_name type = SLE_UINT8 from = 97 guiflags = SGF_NO_NETWORK def = 0 max = 255 full = _town_names cat = SC_BASIC [SDT_OMANY] base = GameSettings var = game_creation.landscape type = SLE_UINT8 from = 97 guiflags = SGF_NO_NETWORK def = 0 max = 3 full = _climates load = ConvertLandscape cat = SC_BASIC ; Snow line (or snow_line_height * TILE_HEIGHT) [SDT_NULL] length = 1 from = 97 to = 163 [SDT_OMANY] base = GameSettings var = vehicle.road_side type = SLE_UINT8 from = 97 guiflags = SGF_NO_NETWORK def = 1 max = 1 full = _roadsides proc = CheckRoadSide ; Construction [SDT_BOOL] base = GameSettings var = construction.build_on_slopes guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_BUILDONSLOPES strhelp = STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT cat = SC_EXPERT [SDT_VAR] base = GameSettings var = construction.command_pause_level type = SLE_UINT8 from = 154 guiflags = SGF_MULTISTRING | SGF_NO_NETWORK def = 1 min = 0 max = 3 interval = 1 str = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL strhelp = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT strval = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS [SDT_VAR] base = GameSettings var = construction.terraform_per_64k_frames type = SLE_UINT32 from = 156 def = 64 << 16 min = 0 max = 1 << 30 interval = 1 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = construction.terraform_frame_burst type = SLE_UINT16 from = 156 def = 4096 min = 0 max = 1 << 30 interval = 1 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = construction.clear_per_64k_frames type = SLE_UINT32 from = 156 def = 64 << 16 min = 0 max = 1 << 30 interval = 1 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = construction.clear_frame_burst type = SLE_UINT16 from = 156 def = 4096 min = 0 max = 1 << 30 interval = 1 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = construction.tree_per_64k_frames type = SLE_UINT32 from = 175 def = 64 << 16 min = 0 max = 1 << 30 interval = 1 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = construction.tree_frame_burst type = SLE_UINT16 from = 175 def = 4096 min = 0 max = 1 << 30 interval = 1 cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = construction.autoslope from = 75 def = true str = STR_CONFIG_SETTING_AUTOSLOPE strhelp = STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = construction.extra_dynamite def = true str = STR_CONFIG_SETTING_EXTRADYNAMITE strhelp = STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT [SDT_VAR] base = GameSettings var = construction.max_bridge_length type = SLE_UINT16 from = 159 guiflags = SGF_NO_NETWORK def = 64 min = 1 max = 2048 interval = 1 str = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH [SDT_VAR] base = GameSettings var = construction.max_tunnel_length type = SLE_UINT16 from = 159 guiflags = SGF_NO_NETWORK def = 64 min = 1 max = 2048 interval = 1 str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH strhelp = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH # construction.longbridges [SDT_NULL] length = 1 to = 158 [SDT_VAR] base = GameSettings var = construction.train_signal_side type = SLE_UINT8 guiflags = SGF_MULTISTRING | SGF_NO_NETWORK def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_SIGNALSIDE strhelp = STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT strval = STR_CONFIG_SETTING_SIGNALSIDE_LEFT proc = RedrawScreen cat = SC_BASIC [SDT_BOOL] base = GameSettings var = station.never_expire_airports guiflags = SGF_NO_NETWORK def = false str = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT [SDT_VAR] base = GameSettings var = economy.town_layout type = SLE_UINT8 from = 59 guiflags = SGF_MULTISTRING def = TL_ORIGINAL min = TL_BEGIN max = NUM_TLS - 1 interval = 1 str = STR_CONFIG_SETTING_TOWN_LAYOUT strhelp = STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT strval = STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT proc = TownFoundingChanged [SDT_BOOL] base = GameSettings var = economy.allow_town_roads from = 113 guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT [SDT_VAR] base = GameSettings var = economy.found_town type = SLE_UINT8 from = 128 guiflags = SGF_MULTISTRING def = TF_FORBIDDEN min = TF_BEGIN max = TF_END - 1 interval = 1 str = STR_CONFIG_SETTING_TOWN_FOUNDING strhelp = STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT strval = STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN proc = TownFoundingChanged cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.allow_town_level_crossings from = 143 guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT ; Vehicles [SDT_VAR] base = GameSettings var = vehicle.train_acceleration_model type = SLE_UINT8 guiflags = SGF_MULTISTRING def = 0 min = 0 max = 1 interval = 1 str = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL strhelp = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT strval = STR_CONFIG_SETTING_ORIGINAL proc = TrainAccelerationModelChanged [SDT_VAR] base = GameSettings var = vehicle.roadveh_acceleration_model type = SLE_UINT8 from = 139 guiflags = SGF_MULTISTRING def = 0 min = 0 max = 1 interval = 1 str = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT strval = STR_CONFIG_SETTING_ORIGINAL proc = RoadVehAccelerationModelChanged [SDT_VAR] base = GameSettings var = vehicle.train_slope_steepness type = SLE_UINT8 from = 133 def = 3 min = 0 max = 10 interval = 1 str = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS strhelp = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT strval = STR_CONFIG_SETTING_PERCENTAGE proc = TrainSlopeSteepnessChanged cat = SC_EXPERT [SDT_VAR] base = GameSettings var = vehicle.roadveh_slope_steepness type = SLE_UINT8 from = 139 def = 7 min = 0 max = 10 interval = 1 str = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT strval = STR_CONFIG_SETTING_PERCENTAGE proc = RoadVehSlopeSteepnessChanged cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.forbid_90_deg def = false str = STR_CONFIG_SETTING_FORBID_90_DEG strhelp = STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT cat = SC_EXPERT [SDT_VAR] base = GameSettings var = vehicle.max_train_length type = SLE_UINT8 from = 159 def = 7 min = 1 max = 64 interval = 1 str = STR_CONFIG_SETTING_TRAIN_LENGTH strhelp = STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH cat = SC_BASIC ; vehicle.mammoth_trains [SDT_NULL] length = 1 to = 158 [SDT_VAR] base = GameSettings var = vehicle.smoke_amount type = SLE_UINT8 from = 145 guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_SMOKE_AMOUNT strhelp = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT strval = STR_CONFIG_SETTING_NONE ; order.gotodepot [SDT_NULL] length = 1 to = 158 ; path finder [SDT_BOOL] base = GameSettings var = pf.roadveh_queue def = true str = STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.new_pathfinding_all to = 86 def = false cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.ship_use_yapf from = 28 to = 86 def = false cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.road_use_yapf from = 28 to = 86 def = true cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.rail_use_yapf from = 28 to = 86 def = true cat = SC_EXPERT ## [SDT_VAR] base = GameSettings var = pf.pathfinder_for_trains type = SLE_UINT8 from = 87 guiflags = SGF_MULTISTRING def = 2 min = 1 max = 2 interval = 1 str = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT strval = STR_CONFIG_SETTING_PATHFINDER_NPF cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.pathfinder_for_roadvehs type = SLE_UINT8 from = 87 guiflags = SGF_MULTISTRING def = 2 min = 1 max = 2 interval = 1 str = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT strval = STR_CONFIG_SETTING_PATHFINDER_NPF cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.pathfinder_for_ships type = SLE_UINT8 from = 87 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT strval = STR_CONFIG_SETTING_PATHFINDER_OPF cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = vehicle.never_expire_vehicles guiflags = SGF_NO_NETWORK def = false str = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT [SDT_VAR] base = GameSettings var = vehicle.max_trains type = SLE_UINT16 def = 500 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_TRAINS strhelp = STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT strval = STR_JUST_COMMA proc = RedrawScreen cat = SC_BASIC [SDT_VAR] base = GameSettings var = vehicle.max_roadveh type = SLE_UINT16 def = 500 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT strval = STR_JUST_COMMA proc = RedrawScreen cat = SC_BASIC [SDT_VAR] base = GameSettings var = vehicle.max_aircraft type = SLE_UINT16 def = 200 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_AIRCRAFT strhelp = STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT strval = STR_JUST_COMMA proc = RedrawScreen cat = SC_BASIC [SDT_VAR] base = GameSettings var = vehicle.max_ships type = SLE_UINT16 def = 300 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_SHIPS strhelp = STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT strval = STR_JUST_COMMA proc = RedrawScreen cat = SC_BASIC [SDTG_BOOL] name = NULL guiflags = SGF_NO_NETWORK var = _old_vds.servint_ispercent def = false to = 119 [SDTG_VAR] name = NULL type = SLE_UINT16 guiflags = SGF_0ISDISABLED var = _old_vds.servint_trains def = 150 min = 5 max = 800 to = 119 [SDTG_VAR] name = NULL type = SLE_UINT16 guiflags = SGF_0ISDISABLED var = _old_vds.servint_roadveh def = 150 min = 5 max = 800 to = 119 [SDTG_VAR] name = NULL type = SLE_UINT16 guiflags = SGF_0ISDISABLED var = _old_vds.servint_ships def = 360 min = 5 max = 800 to = 119 [SDTG_VAR] name = NULL type = SLE_UINT16 guiflags = SGF_0ISDISABLED var = _old_vds.servint_aircraft def = 150 min = 5 max = 800 to = 119 [SDT_BOOL] base = GameSettings var = order.no_servicing_if_no_breakdowns def = true str = STR_CONFIG_SETTING_NOSERVICE strhelp = STR_CONFIG_SETTING_NOSERVICE_HELPTEXT [SDT_BOOL] base = GameSettings var = vehicle.wagon_speed_limits guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_WAGONSPEEDLIMITS strhelp = STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT proc = UpdateConsists [SDT_BOOL] base = GameSettings var = vehicle.disable_elrails from = 38 guiflags = SGF_NO_NETWORK def = false str = STR_CONFIG_SETTING_DISABLE_ELRAILS strhelp = STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT proc = SettingsDisableElrail cat = SC_EXPERT [SDT_VAR] base = GameSettings var = vehicle.freight_trains type = SLE_UINT8 from = 39 guiflags = SGF_NO_NETWORK def = 1 min = 1 max = 255 interval = 1 str = STR_CONFIG_SETTING_FREIGHT_TRAINS strhelp = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT strval = STR_JUST_COMMA proc = UpdateConsists ; order.timetabling [SDT_NULL] length = 1 from = 67 to = 158 [SDT_VAR] base = GameSettings var = vehicle.plane_speed type = SLE_UINT8 from = 90 guiflags = SGF_NO_NETWORK def = 4 min = 1 max = 4 str = STR_CONFIG_SETTING_PLANE_SPEED strhelp = STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT strval = STR_CONFIG_SETTING_PLANE_SPEED_VALUE [SDT_BOOL] base = GameSettings var = vehicle.dynamic_engines from = 95 guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_DYNAMIC_ENGINES strhelp = STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT proc = ChangeDynamicEngines cat = SC_EXPERT [SDT_VAR] base = GameSettings var = vehicle.plane_crashes type = SLE_UINT8 from = 138 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_PLANE_CRASHES strhelp = STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT strval = STR_CONFIG_SETTING_PLANE_CRASHES_NONE cat = SC_BASIC ; station.join_stations [SDT_NULL] length = 1 to = 158 [SDTC_BOOL] var = gui.sg_full_load_any from = 22 to = 92 def = true [SDT_BOOL] base = GameSettings var = order.improved_load guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_IMPROVEDLOAD strhelp = STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = order.selectgoods def = true str = STR_CONFIG_SETTING_SELECTGOODS strhelp = STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT [SDTC_BOOL] var = gui.sg_new_nonstop from = 22 to = 92 def = false ; station.nonuniform_stations [SDT_NULL] length = 1 to = 158 [SDT_VAR] base = GameSettings var = station.station_spread type = SLE_UINT8 def = 12 min = 4 max = 64 str = STR_CONFIG_SETTING_STATION_SPREAD strhelp = STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH proc = StationSpreadChanged cat = SC_BASIC [SDT_BOOL] base = GameSettings var = order.serviceathelipad def = true str = STR_CONFIG_SETTING_SERVICEATHELIPAD strhelp = STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = station.modified_catchment def = true str = STR_CONFIG_SETTING_CATCHMENT strhelp = STR_CONFIG_SETTING_CATCHMENT_HELPTEXT proc = StationCatchmentChanged cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = order.gradual_loading from = 40 guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_GRADUAL_LOADING strhelp = STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = construction.road_stop_on_town_road from = 47 def = true str = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD strhelp = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT cat = SC_BASIC [SDT_BOOL] base = GameSettings var = construction.road_stop_on_competitor_road from = 114 def = true str = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD strhelp = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT cat = SC_BASIC [SDT_BOOL] base = GameSettings var = station.adjacent_stations from = 62 def = true str = STR_CONFIG_SETTING_ADJACENT_STATIONS strhelp = STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = economy.station_noise_level from = 96 guiflags = SGF_NO_NETWORK def = false str = STR_CONFIG_SETTING_NOISE_LEVEL strhelp = STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT proc = InvalidateTownViewWindow [SDT_BOOL] base = GameSettings var = station.distant_join_stations from = 106 def = true str = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS strhelp = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT proc = DeleteSelectStationWindow ## [SDT_BOOL] base = GameSettings var = economy.inflation def = true str = STR_CONFIG_SETTING_INFLATION strhelp = STR_CONFIG_SETTING_INFLATION_HELPTEXT cat = SC_BASIC [SDT_VAR] base = GameSettings var = construction.raw_industry_construction type = SLE_UINT8 guiflags = SGF_MULTISTRING def = 0 min = 0 max = 2 str = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD strhelp = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT strval = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE proc = InvalidateBuildIndustryWindow cat = SC_BASIC [SDT_VAR] base = GameSettings var = construction.industry_platform type = SLE_UINT8 from = 148 def = 1 min = 0 max = 4 str = STR_CONFIG_SETTING_INDUSTRY_PLATFORM strhelp = STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = economy.multiple_industry_per_town def = false str = STR_CONFIG_SETTING_MULTIPINDTOWN strhelp = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT [SDT_NULL] length = 1 to = 140 [SDT_BOOL] base = GameSettings var = economy.bribe def = true str = STR_CONFIG_SETTING_BRIBE strhelp = STR_CONFIG_SETTING_BRIBE_HELPTEXT proc = RedrawTownAuthority cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.exclusive_rights from = 79 def = true str = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE strhelp = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT proc = RedrawTownAuthority cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.fund_buildings from = 165 def = true str = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS strhelp = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT proc = RedrawTownAuthority cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.fund_roads from = 160 def = true str = STR_CONFIG_SETTING_ALLOW_FUND_ROAD strhelp = STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT proc = RedrawTownAuthority cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.give_money from = 79 def = true str = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY strhelp = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.snow_line_height type = SLE_UINT8 def = DEF_SNOWLINE_HEIGHT min = MIN_SNOWLINE_HEIGHT max = MAX_SNOWLINE_HEIGHT str = STR_CONFIG_SETTING_SNOWLINE_HEIGHT strval = STR_JUST_COMMA cat = SC_BASIC [SDT_NULL] length = 4 to = 143 [SDT_VAR] base = GameSettings var = game_creation.starting_year type = SLE_INT32 def = DEF_START_YEAR min = MIN_YEAR max = MAX_YEAR interval = 1 str = STR_CONFIG_SETTING_STARTING_YEAR strval = STR_JUST_INT cat = SC_BASIC [SDT_NULL] length = 4 to = 104 [SDT_BOOL] base = GameSettings var = economy.smooth_economy def = true str = STR_CONFIG_SETTING_SMOOTH_ECONOMY strhelp = STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT proc = InvalidateIndustryViewWindow cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.allow_shares def = false str = STR_CONFIG_SETTING_ALLOW_SHARES strhelp = STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT proc = InvalidateCompanyWindow [SDT_VAR] base = GameSettings var = economy.feeder_payment_share type = SLE_UINT8 from = 134 def = 75 min = 0 max = 100 str = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE strhelp = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT strval = STR_CONFIG_SETTING_PERCENTAGE cat = SC_EXPERT [SDT_VAR] base = GameSettings var = economy.town_growth_rate type = SLE_UINT8 from = 54 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 4 str = STR_CONFIG_SETTING_TOWN_GROWTH strhelp = STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT strval = STR_CONFIG_SETTING_TOWN_GROWTH_NONE [SDT_VAR] base = GameSettings var = economy.larger_towns type = SLE_UINT8 from = 54 guiflags = SGF_0ISDISABLED def = 4 min = 0 max = 255 interval = 1 str = STR_CONFIG_SETTING_LARGER_TOWNS strhelp = STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT strval = STR_CONFIG_SETTING_LARGER_TOWNS_VALUE [SDT_VAR] base = GameSettings var = economy.initial_city_size type = SLE_UINT8 from = 56 def = 2 min = 1 max = 10 interval = 1 str = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER strhelp = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT strval = STR_JUST_COMMA [SDT_BOOL] base = GameSettings var = economy.mod_road_rebuild from = 77 def = true str = STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD strhelp = STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT cat = SC_EXPERT ; previously ai-new setting. [SDT_NULL] length = 1 to = 106 [SDT_OMANY] base = GameSettings var = script.settings_profile type = SLE_UINT8 from = 178 guiflags = SGF_MULTISTRING def = SP_EASY min = SP_EASY max = SP_HARD full = _settings_profiles str = STR_CONFIG_SETTING_AI_PROFILE strhelp = STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT strval = STR_CONFIG_SETTING_AI_PROFILE_EASY cat = SC_BASIC [SDT_BOOL] base = GameSettings var = ai.ai_in_multiplayer def = true str = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER strhelp = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT cat = SC_BASIC [SDT_BOOL] base = GameSettings var = ai.ai_disable_veh_train def = false str = STR_CONFIG_SETTING_AI_BUILDS_TRAINS strhelp = STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT [SDT_BOOL] base = GameSettings var = ai.ai_disable_veh_roadveh def = false str = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT [SDT_BOOL] base = GameSettings var = ai.ai_disable_veh_aircraft def = false str = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT strhelp = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT [SDT_BOOL] base = GameSettings var = ai.ai_disable_veh_ship def = false str = STR_CONFIG_SETTING_AI_BUILDS_SHIPS strhelp = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT [SDT_VAR] base = GameSettings var = script.script_max_opcode_till_suspend type = SLE_UINT32 from = 107 guiflags = SGF_NEWGAME_ONLY def = 10000 min = 5000 max = 250000 interval = 2500 str = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES strhelp = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT strval = STR_JUST_COMMA cat = SC_EXPERT ## [SDT_VAR] base = GameSettings var = vehicle.extend_vehicle_life type = SLE_UINT8 def = 0 min = 0 max = 100 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = economy.dist_local_authority type = SLE_UINT8 def = 20 min = 5 max = 60 cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.reverse_at_signals from = 159 def = false str = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS strhelp = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT [SDT_VAR] base = GameSettings var = pf.wait_oneway_signal type = SLE_UINT8 def = 15 min = 2 max = 255 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.wait_twoway_signal type = SLE_UINT8 def = 41 min = 2 max = 255 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = economy.town_noise_population[0] type = SLE_UINT16 from = 96 def = 800 min = 200 max = 65535 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = economy.town_noise_population[1] type = SLE_UINT16 from = 96 def = 2000 min = 400 max = 65535 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = economy.town_noise_population[2] type = SLE_UINT16 from = 96 def = 4000 min = 800 max = 65535 cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = economy.infrastructure_maintenance from = 166 def = false str = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE strhelp = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT proc = InvalidateCompanyInfrastructureWindow cat = SC_BASIC ## [SDT_VAR] base = GameSettings var = pf.wait_for_pbs_path type = SLE_UINT8 from = 100 def = 30 min = 2 max = 255 cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.reserve_paths from = 100 def = false cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.path_backoff_interval type = SLE_UINT8 from = 100 def = 20 min = 1 max = 255 cat = SC_EXPERT ## [SDT_VAR] base = GameSettings var = pf.opf.pf_maxlength type = SLE_UINT16 def = 4096 min = 64 max = 65535 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.opf.pf_maxdepth type = SLE_UINT8 def = 48 min = 4 max = 255 cat = SC_EXPERT ## [SDT_VAR] base = GameSettings var = pf.npf.npf_max_search_nodes type = SLE_UINT def = 10000 min = 500 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_firstred_penalty type = SLE_UINT def = 10 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_firstred_exit_penalty type = SLE_UINT def = 100 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_lastred_penalty type = SLE_UINT def = 10 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_station_penalty type = SLE_UINT def = 1 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_slope_penalty type = SLE_UINT def = 1 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_curve_penalty type = SLE_UINT def = 1 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_depot_reverse_penalty type = SLE_UINT def = 50 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_pbs_cross_penalty type = SLE_UINT from = 100 def = 3 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_rail_pbs_signal_back_penalty type = SLE_UINT from = 100 def = 15 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_buoy_penalty type = SLE_UINT def = 2 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_water_curve_penalty type = SLE_UINT def = 1 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_road_curve_penalty type = SLE_UINT def = 1 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_crossing_penalty type = SLE_UINT def = 3 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_road_drive_through_penalty type = SLE_UINT from = 47 def = 8 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_road_dt_occupied_penalty type = SLE_UINT from = 130 def = 8 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.npf_road_bay_occupied_penalty type = SLE_UINT from = 130 def = 15 * NPF_TILE_LENGTH min = 0 max = 100000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.npf.maximum_go_to_depot_penalty type = SLE_UINT from = 131 def = 20 * NPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT ## [SDT_BOOL] base = GameSettings var = pf.yapf.disable_node_optimization from = 28 def = false cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.max_search_nodes type = SLE_UINT from = 28 def = 10000 min = 500 max = 1000000 cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.rail_firstred_twoway_eol from = 28 def = false cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_firstred_penalty type = SLE_UINT from = 28 def = 10 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_firstred_exit_penalty type = SLE_UINT from = 28 def = 100 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_lastred_penalty type = SLE_UINT from = 28 def = 10 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_lastred_exit_penalty type = SLE_UINT from = 28 def = 100 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_station_penalty type = SLE_UINT from = 28 def = 10 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_slope_penalty type = SLE_UINT from = 28 def = 2 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_curve45_penalty type = SLE_UINT from = 28 def = 1 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_curve90_penalty type = SLE_UINT from = 28 def = 6 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_depot_reverse_penalty type = SLE_UINT from = 28 def = 50 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_crossing_penalty type = SLE_UINT from = 28 def = 3 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_look_ahead_max_signals type = SLE_UINT from = 28 def = 10 min = 1 max = 100 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_look_ahead_signal_p0 type = SLE_INT from = 28 def = 500 min = -1000000 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_look_ahead_signal_p1 type = SLE_INT from = 28 def = -100 min = -1000000 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_look_ahead_signal_p2 type = SLE_INT from = 28 def = 5 min = -1000000 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_pbs_cross_penalty type = SLE_UINT from = 100 def = 3 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_pbs_station_penalty type = SLE_UINT from = 100 def = 8 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_pbs_signal_back_penalty type = SLE_UINT from = 100 def = 15 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_doubleslip_penalty type = SLE_UINT from = 100 def = 1 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_longer_platform_penalty type = SLE_UINT from = 33 def = 8 * YAPF_TILE_LENGTH min = 0 max = 20000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_longer_platform_per_tile_penalty type = SLE_UINT from = 33 def = 0 * YAPF_TILE_LENGTH min = 0 max = 20000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_shorter_platform_penalty type = SLE_UINT from = 33 def = 40 * YAPF_TILE_LENGTH min = 0 max = 20000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.rail_shorter_platform_per_tile_penalty type = SLE_UINT from = 33 def = 0 * YAPF_TILE_LENGTH min = 0 max = 20000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.road_slope_penalty type = SLE_UINT from = 33 def = 2 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.road_curve_penalty type = SLE_UINT from = 33 def = 1 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.road_crossing_penalty type = SLE_UINT from = 33 def = 3 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.road_stop_penalty type = SLE_UINT from = 47 def = 8 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.road_stop_occupied_penalty type = SLE_UINT from = 130 def = 8 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.road_stop_bay_occupied_penalty type = SLE_UINT from = 130 def = 15 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = pf.yapf.maximum_go_to_depot_penalty type = SLE_UINT from = 131 def = 20 * YAPF_TILE_LENGTH min = 0 max = 1000000 cat = SC_EXPERT ## [SDT_VAR] base = GameSettings var = game_creation.land_generator type = SLE_UINT8 from = 30 guiflags = SGF_MULTISTRING def = 1 min = 0 max = 1 str = STR_CONFIG_SETTING_LAND_GENERATOR strval = STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL [SDT_VAR] base = GameSettings var = game_creation.oil_refinery_limit type = SLE_UINT8 from = 30 def = 32 min = 12 max = 48 str = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE strval = STR_CONFIG_SETTING_TILE_LENGTH strhelp = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT [SDT_VAR] base = GameSettings var = game_creation.tgen_smoothness type = SLE_UINT8 from = 30 guiflags = SGF_MULTISTRING def = 1 min = 0 max = 3 str = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN strval = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.variety type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 0 min = 0 max = 5 [SDT_VAR] base = GameSettings var = game_creation.generation_seed type = SLE_UINT32 from = 30 def = GENERATE_NEW_SEED min = 0 max = UINT32_MAX cat = SC_EXPERT [SDT_VAR] base = GameSettings var = game_creation.tree_placer type = SLE_UINT8 from = 30 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 str = STR_CONFIG_SETTING_TREE_PLACER strval = STR_CONFIG_SETTING_TREE_PLACER_NONE [SDT_VAR] base = GameSettings var = game_creation.heightmap_rotation type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 min = 0 max = 1 str = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION strval = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.se_flat_world_height type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1 min = 0 max = 15 str = STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT strval = STR_JUST_COMMA cat = SC_BASIC ## [SDT_VAR] base = GameSettings var = game_creation.map_x type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 8 min = MIN_MAP_SIZE_BITS max = MAX_MAP_SIZE_BITS cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.map_y type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 8 min = MIN_MAP_SIZE_BITS max = MAX_MAP_SIZE_BITS cat = SC_BASIC [SDT_BOOL] base = GameSettings var = construction.freeform_edges from = 111 def = true str = STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES strhelp = STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT proc = CheckFreeformEdges cat = SC_EXPERT [SDT_VAR] base = GameSettings var = game_creation.water_borders type = SLE_UINT8 from = 111 def = 15 min = 0 max = 16 [SDT_VAR] base = GameSettings var = game_creation.custom_town_number type = SLE_UINT16 from = 115 def = 1 min = 1 max = 5000 cat = SC_BASIC [SDT_VAR] base = GameSettings var = construction.extra_tree_placement type = SLE_UINT8 from = 132 guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 str = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT strhelp = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT strval = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.custom_sea_level type = SLE_UINT8 from = 149 def = 1 min = 2 max = 90 cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.min_river_length type = SLE_UINT8 from = 163 def = 16 min = 2 max = 255 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = game_creation.river_route_random type = SLE_UINT8 from = 163 def = 5 min = 1 max = 255 cat = SC_EXPERT [SDT_VAR] base = GameSettings var = game_creation.amount_of_rivers type = SLE_UINT8 from = 163 def = 2 min = 0 max = 3 ; locale [SDT_OMANY] base = GameSettings var = locale.currency type = SLE_UINT8 from = 97 flags = SLF_NO_NETWORK_SYNC def = 0 max = CUSTOM_CURRENCY_ID full = _locale_currencies proc = RedrawScreen cat = SC_BASIC [SDT_OMANY] base = GameSettings var = locale.units type = SLE_UINT8 from = 97 flags = SLF_NO_NETWORK_SYNC def = 1 max = 2 full = _locale_units proc = RedrawScreen cat = SC_BASIC [SDT_STR] base = GameSettings var = locale.digit_group_separator type = SLE_STRQ from = 118 flags = SLF_NO_NETWORK_SYNC def = NULL proc = RedrawScreen cat = SC_BASIC [SDT_STR] base = GameSettings var = locale.digit_group_separator_currency type = SLE_STRQ from = 118 flags = SLF_NO_NETWORK_SYNC def = NULL proc = RedrawScreen cat = SC_BASIC [SDT_STR] base = GameSettings var = locale.digit_decimal_separator type = SLE_STRQ from = 126 flags = SLF_NO_NETWORK_SYNC def = NULL proc = RedrawScreen cat = SC_BASIC ;*************************************************************************** ; Unsaved setting variables. [SDTC_OMANY] var = gui.autosave type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1 max = 4 full = _autosave_interval cat = SC_BASIC [SDTC_BOOL] var = gui.threaded_saves flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true cat = SC_EXPERT [SDTC_OMANY] var = gui.date_format_in_default_names type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 max = 2 full = _savegame_date str = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES strhelp = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT strval = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG [SDTC_BOOL] var = gui.show_finances flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SHOWFINANCES strhelp = STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.auto_scrolling type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 min = 0 max = 3 str = STR_CONFIG_SETTING_AUTOSCROLL strhelp = STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT strval = STR_CONFIG_SETTING_AUTOSCROLL_DISABLED cat = SC_BASIC [SDTC_BOOL] var = gui.reverse_scroll flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_REVERSE_SCROLLING strhelp = STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT cat = SC_BASIC [SDTC_BOOL] var = gui.smooth_scroll flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_SMOOTH_SCROLLING strhelp = STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT [SDTC_BOOL] var = gui.left_mouse_btn_scrolling flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING strhelp = STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT cat = SC_BASIC [SDTC_BOOL] var = gui.measure_tooltip flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_MEASURE_TOOLTIP strhelp = STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.errmsg_duration type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 5 min = 0 max = 20 str = STR_CONFIG_SETTING_ERRMSG_DURATION strhelp = STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT strval = STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE [SDTC_VAR] var = gui.hover_delay type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED def = 2 min = 1 max = 5 str = STR_CONFIG_SETTING_HOVER_DELAY strhelp = STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT strval = STR_CONFIG_SETTING_HOVER_DELAY_VALUE [SDTC_OMANY] var = gui.osk_activation type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC str = STR_CONFIG_SETTING_OSK_ACTIVATION strhelp = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT strval = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED guiflags = SGF_MULTISTRING full = _osk_activation def = 1 min = 0 max = 3 cat = SC_BASIC [SDTC_VAR] var = gui.toolbar_pos type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_TOOLBAR_POS strhelp = STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT strval = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT proc = v_PositionMainToolbar cat = SC_BASIC [SDTC_VAR] var = gui.statusbar_pos type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_STATUSBAR_POS strhelp = STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT strval = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT proc = v_PositionStatusbar cat = SC_BASIC [SDTC_VAR] var = gui.window_snap_radius type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED def = 10 min = 1 max = 32 str = STR_CONFIG_SETTING_SNAP_RADIUS strhelp = STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT strval = STR_CONFIG_SETTING_SNAP_RADIUS_VALUE cat = SC_EXPERT [SDTC_VAR] var = gui.window_soft_limit type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED def = 20 min = 5 max = 255 interval = 1 str = STR_CONFIG_SETTING_SOFT_LIMIT strhelp = STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT strval = STR_CONFIG_SETTING_SOFT_LIMIT_VALUE cat = SC_EXPERT [SDTC_VAR] var = gui.zoom_min type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = ZOOM_LVL_MIN min = ZOOM_LVL_MIN max = ZOOM_LVL_GUI str = STR_CONFIG_SETTING_ZOOM_MIN strhelp = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT strval = STR_CONFIG_SETTING_ZOOM_LVL_MIN proc = ZoomMinMaxChanged [SDTC_VAR] var = gui.zoom_max type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = ZOOM_LVL_MAX min = ZOOM_LVL_OUT_8X max = ZOOM_LVL_MAX str = STR_CONFIG_SETTING_ZOOM_MAX strhelp = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT strval = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X proc = ZoomMinMaxChanged [SDTC_BOOL] var = gui.population_in_label flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_POPULATION_IN_LABEL strhelp = STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT proc = PopulationInLabelActive [SDTC_BOOL] var = gui.link_terraform_toolbar flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR strhelp = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT [SDTC_VAR] var = gui.smallmap_land_colour type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 min = 0 max = 2 str = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR strhelp = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT strval = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN proc = RedrawSmallmap [SDTC_VAR] var = gui.liveries type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 str = STR_CONFIG_SETTING_LIVERIES strhelp = STR_CONFIG_SETTING_LIVERIES_HELPTEXT strval = STR_CONFIG_SETTING_LIVERIES_NONE proc = InvalidateCompanyLiveryWindow [SDTC_BOOL] var = gui.prefer_teamchat flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_PREFER_TEAMCHAT strhelp = STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.scrollwheel_scrolling type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 min = 0 max = 2 str = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING strhelp = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT strval = STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM cat = SC_BASIC [SDTC_VAR] var = gui.scrollwheel_multiplier type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 5 min = 1 max = 15 interval = 1 str = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER strhelp = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT strval = STR_JUST_COMMA cat = SC_BASIC [SDTC_BOOL] var = gui.pause_on_newgame flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME strhelp = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.advanced_vehicle_list type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS strhelp = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT strval = STR_CONFIG_SETTING_COMPANIES_OFF [SDTC_BOOL] var = gui.timetable_in_ticks flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS strhelp = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT proc = InvalidateVehTimetableWindow cat = SC_EXPERT [SDTC_BOOL] var = gui.timetable_arrival_departure flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE strhelp = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT proc = InvalidateVehTimetableWindow [SDTC_BOOL] var = gui.quick_goto flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_QUICKGOTO strhelp = STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.loading_indicators type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_LOADING_INDICATORS strhelp = STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT strval = STR_CONFIG_SETTING_COMPANIES_OFF proc = RedrawScreen cat = SC_BASIC [SDTC_VAR] var = gui.default_rail_type type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 min = 0 max = 2 str = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE strhelp = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT strval = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST cat = SC_BASIC [SDTC_BOOL] var = gui.enable_signal_gui flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI strhelp = STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT proc = CloseSignalGUI cat = SC_EXPERT [SDTC_VAR] var = gui.coloured_news_year type = SLE_INT32 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 2000 min = MIN_YEAR max = MAX_YEAR interval = 1 str = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR strhelp = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT strval = STR_JUST_INT cat = SC_EXPERT [SDTC_VAR] var = gui.drag_signals_density type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 4 min = 1 max = 20 str = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY strhelp = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT strval = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE proc = DragSignalsDensityChanged cat = SC_BASIC [SDTC_BOOL] var = gui.drag_signals_fixed_distance flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE strhelp = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT cat = SC_EXPERT [SDTC_VAR] var = gui.semaphore_build_before type = SLE_INT32 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1950 min = MIN_YEAR max = MAX_YEAR interval = 1 str = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE strhelp = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT strval = STR_JUST_INT proc = ResetSignalVariant [SDTC_BOOL] var = gui.vehicle_income_warn flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_WARN_INCOME_LESS strhelp = STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.order_review_system type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 str = STR_CONFIG_SETTING_ORDER_REVIEW strhelp = STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT strval = STR_CONFIG_SETTING_ORDER_REVIEW_OFF cat = SC_BASIC [SDTC_BOOL] var = gui.lost_vehicle_warn flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_WARN_LOST_VEHICLE strhelp = STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT [SDTC_BOOL] var = gui.disable_unsuitable_building flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING strhelp = STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT proc = RedrawScreen cat = SC_EXPERT [SDTC_BOOL] var = gui.new_nonstop flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT strhelp = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT cat = SC_BASIC [SDTC_VAR] var = gui.stop_location type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_STOP_LOCATION strhelp = STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT strval = STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END cat = SC_BASIC [SDTC_BOOL] var = gui.keep_all_autosave flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false [SDTC_BOOL] var = gui.autosave_on_exit flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false cat = SC_BASIC [SDTC_VAR] var = gui.max_num_autosaves type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 16 min = 0 max = 255 [SDTC_BOOL] var = gui.auto_euro flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true [SDTC_VAR] var = gui.news_message_timeout type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 2 min = 1 max = 255 [SDTC_BOOL] var = gui.show_track_reservation flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION strhelp = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT proc = RedrawScreen cat = SC_BASIC [SDTC_VAR] var = gui.default_signal_type type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE strhelp = STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT strval = STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL cat = SC_BASIC [SDTC_VAR] var = gui.cycle_signal_types type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES strhelp = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT strval = STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL [SDTC_VAR] var = gui.station_numtracks type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1 min = 1 max = 7 [SDTC_VAR] var = gui.station_platlength type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 5 min = 1 max = 7 cat = SC_BASIC [SDTC_BOOL] var = gui.station_dragdrop flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true cat = SC_BASIC [SDTC_BOOL] var = gui.station_show_coverage flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false cat = SC_BASIC [SDTC_BOOL] var = gui.persistent_buildingtools flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS strhelp = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT cat = SC_BASIC [SDTC_BOOL] var = gui.expenses_layout flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_EXPENSES_LAYOUT strhelp = STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT proc = RedrawScreen [SDTC_VAR] var = gui.missing_strings_threshold type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 25 min = 1 max = UINT8_MAX cat = SC_EXPERT [SDTC_VAR] var = gui.graph_line_thickness type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 3 min = 1 max = 5 str = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS strhelp = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT strval = STR_JUST_COMMA proc = RedrawScreen ; For the dedicated build we'll enable dates in logs by default. [SDTC_BOOL] ifdef = DEDICATED var = gui.show_date_in_logs flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true [SDTC_BOOL] ifndef = DEDICATED var = gui.show_date_in_logs flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false [SDTC_VAR] var = gui.settings_restriction_mode type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 0 min = 0 max = 2 [SDTC_VAR] var = gui.developer type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1 min = 0 max = 2 cat = SC_EXPERT [SDTC_BOOL] var = gui.newgrf_developer_tools flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false proc = InvalidateNewGRFChangeWindows cat = SC_EXPERT [SDTC_BOOL] var = gui.ai_developer_tools flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false proc = InvalidateAISettingsWindow cat = SC_EXPERT [SDTC_BOOL] var = gui.scenario_developer flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false proc = InvalidateNewGRFChangeWindows [SDTC_BOOL] var = gui.newgrf_show_old_versions flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false cat = SC_EXPERT [SDTC_VAR] var = gui.newgrf_default_palette type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 min = 0 max = 1 str = STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE strhelp = STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT strval = STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS proc = UpdateNewGRFConfigPalette cat = SC_EXPERT [SDTC_VAR] var = gui.console_backlog_timeout type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 100 min = 10 max = 65500 [SDTC_VAR] var = gui.console_backlog_length type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 100 min = 10 max = 65500 [SDTC_BOOL] var = sound.news_ticker flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_TICKER strhelp = STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT [SDTC_BOOL] var = sound.news_full flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_NEWS strhelp = STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT [SDTC_BOOL] var = sound.new_year flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_NEW_YEAR strhelp = STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT [SDTC_BOOL] var = sound.confirm flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_CONFIRM strhelp = STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT [SDTC_BOOL] var = sound.click_beep flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_CLICK strhelp = STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT [SDTC_BOOL] var = sound.disaster flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_DISASTER strhelp = STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT [SDTC_BOOL] var = sound.vehicle flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_VEHICLE strhelp = STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT [SDTC_BOOL] var = sound.ambient flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true str = STR_CONFIG_SETTING_SOUND_AMBIENT strhelp = STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT [SDTC_VAR] var = music.playlist type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 0 min = 0 max = 5 interval = 1 cat = SC_BASIC [SDTC_VAR] var = music.music_vol type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 127 min = 0 max = 127 interval = 1 cat = SC_BASIC [SDTC_VAR] var = music.effect_vol type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 127 min = 0 max = 127 interval = 1 cat = SC_BASIC [SDTC_LIST] var = music.custom_1 type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = NULL cat = SC_BASIC [SDTC_LIST] var = music.custom_2 type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = NULL cat = SC_BASIC [SDTC_BOOL] var = music.playing flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = true cat = SC_BASIC [SDTC_BOOL] var = music.shuffle flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false cat = SC_BASIC [SDTC_OMANY] var = news_display.arrival_player type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.arrival_other type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.accident type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS strhelp = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.company_info type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION strhelp = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.open type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.close type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.economy type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES strhelp = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.production_player type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.production_other type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.production_nobody type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.advice type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_ADVICE strhelp = STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.new_vehicles type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES strhelp = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.acceptance type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE strhelp = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.subsidies type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_SUBSIDIES strhelp = STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_OMANY] var = news_display.general type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 max = 2 full = _news_display str = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION strhelp = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF [SDTC_VAR] ifdef = ENABLE_NETWORK var = gui.network_chat_box_width type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 620 min = 200 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = gui.network_chat_box_height type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 25 min = 5 max = 255 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = gui.network_chat_timeout type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 20 min = 1 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.sync_freq type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NOT_IN_CONFIG | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 100 min = 0 max = 100 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.frame_freq type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NOT_IN_CONFIG | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 0 min = 0 max = 100 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.commands_per_frame type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 2 min = 1 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_commands_in_queue type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 16 min = 1 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.bytes_per_frame type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 8 min = 1 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.bytes_per_frame_burst type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 256 min = 1 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_init_time type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 100 min = 0 max = 32000 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_join_time type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 500 min = 0 max = 32000 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_download_time type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 1000 min = 0 max = 32000 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_password_time type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 2000 min = 0 max = 32000 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_lag_time type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 500 min = 0 max = 32000 [SDTC_BOOL] ifdef = ENABLE_NETWORK var = network.pause_on_join flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = true [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.server_port type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NETWORK_DEFAULT_PORT min = 0 max = 65535 cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.server_admin_port type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NETWORK_ADMIN_PORT min = 0 max = 65535 cat = SC_EXPERT [SDTC_BOOL] ifdef = ENABLE_NETWORK var = network.server_admin_chat flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = true cat = SC_EXPERT [SDTC_BOOL] ifdef = ENABLE_NETWORK var = network.server_advertise flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = false [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.lan_internet type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 0 min = 0 max = 1 [SDTC_STR] ifdef = ENABLE_NETWORK var = network.client_name type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = NULL proc = UpdateClientName cat = SC_BASIC [SDTC_STR] ifdef = ENABLE_NETWORK var = network.server_password type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NULL proc = UpdateServerPassword cat = SC_BASIC [SDTC_STR] ifdef = ENABLE_NETWORK var = network.rcon_password type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NULL proc = UpdateRconPassword cat = SC_BASIC [SDTC_STR] ifdef = ENABLE_NETWORK var = network.admin_password type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NULL cat = SC_BASIC [SDTC_STR] ifdef = ENABLE_NETWORK var = network.default_company_pass type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = NULL [SDTC_STR] ifdef = ENABLE_NETWORK var = network.server_name type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NULL cat = SC_BASIC [SDTC_STR] ifdef = ENABLE_NETWORK var = network.connect_to_ip type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = NULL [SDTC_STR] ifdef = ENABLE_NETWORK var = network.network_id type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = NULL [SDTC_BOOL] ifdef = ENABLE_NETWORK var = network.autoclean_companies flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = false [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.autoclean_unprotected type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY def = 12 min = 0 max = 240 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.autoclean_protected type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY def = 36 min = 0 max = 240 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.autoclean_novehicles type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY def = 0 min = 0 max = 240 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_companies type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 15 min = 1 max = MAX_COMPANIES proc = UpdateClientConfigValues cat = SC_BASIC [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_clients type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 25 min = 2 max = MAX_CLIENTS cat = SC_BASIC [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.max_spectators type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 15 min = 0 max = MAX_CLIENTS proc = UpdateClientConfigValues cat = SC_BASIC [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.restart_game_year type = SLE_INT32 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY def = 0 min = MIN_YEAR max = MAX_YEAR interval = 1 [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.min_active_clients type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 0 min = 0 max = MAX_CLIENTS [SDTC_OMANY] ifdef = ENABLE_NETWORK var = network.server_lang type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = 0 max = 35 full = _server_langs cat = SC_BASIC [SDTC_BOOL] ifdef = ENABLE_NETWORK var = network.reload_cfg flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_NETWORK_ONLY def = false cat = SC_EXPERT [SDTC_STR] ifdef = ENABLE_NETWORK var = network.last_host type = SLE_STRB flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = """" cat = SC_EXPERT [SDTC_VAR] ifdef = ENABLE_NETWORK var = network.last_port type = SLE_UINT16 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 0 min = 0 max = UINT16_MAX cat = SC_EXPERT [SDTC_BOOL] ifdef = ENABLE_NETWORK var = network.no_http_content_downloads flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false cat = SC_EXPERT ; Since the network code (CmdChangeSetting and friends) use the index in this array to decide ; which setting the server is talking about all conditional compilation of this array must be at the ; end. This isn't really the best solution, the settings the server can tell the client about should ; either use a seperate array or some other form of identifier. ; ; We might need to emulate a right mouse button on mac [SDTC_VAR] ifdef = __APPLE__ var = gui.right_mouse_btn_emulation type = SLE_UINT8 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 0 min = 0 max = 2 str = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU strhelp = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT strval = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND cat = SC_BASIC [SDT_END] openttd-1.3.3/src/table/strgen_tables.h0000644000000000000000000003247712246102566016575 0ustar rootroot/* $Id: strgen_tables.h 25204 2013-04-24 17:54:43Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file table/strgen_tables.h Tables of commands for strgen */ #include "../core/enum_type.hpp" enum CmdFlags { C_NONE = 0x0, ///< Nothing special about this command C_DONTCOUNT = 0x1, ///< These commands aren't counted for comparison C_CASE = 0x2, ///< These commands support cases C_GENDER = 0x4, ///< These commands support genders }; DECLARE_ENUM_AS_BIT_SET(CmdFlags) struct Buffer; typedef void (*ParseCmdProc)(Buffer *buffer, char *buf, int value); struct CmdStruct { const char *cmd; ParseCmdProc proc; long value; uint8 consumes; CmdFlags flags; }; extern void EmitSingleChar(Buffer *buffer, char *buf, int value); extern void EmitPlural(Buffer *buffer, char *buf, int value); extern void EmitGender(Buffer *buffer, char *buf, int value); static const CmdStruct _cmd_structs[] = { /* Font size */ {"TINY_FONT", EmitSingleChar, SCC_TINYFONT, 0, C_NONE}, {"BIG_FONT", EmitSingleChar, SCC_BIGFONT, 0, C_NONE}, /* Colours */ {"BLUE", EmitSingleChar, SCC_BLUE, 0, C_DONTCOUNT}, {"SILVER", EmitSingleChar, SCC_SILVER, 0, C_DONTCOUNT}, {"GOLD", EmitSingleChar, SCC_GOLD, 0, C_DONTCOUNT}, {"RED", EmitSingleChar, SCC_RED, 0, C_DONTCOUNT}, {"PURPLE", EmitSingleChar, SCC_PURPLE, 0, C_DONTCOUNT}, {"LTBROWN", EmitSingleChar, SCC_LTBROWN, 0, C_DONTCOUNT}, {"ORANGE", EmitSingleChar, SCC_ORANGE, 0, C_DONTCOUNT}, {"GREEN", EmitSingleChar, SCC_GREEN, 0, C_DONTCOUNT}, {"YELLOW", EmitSingleChar, SCC_YELLOW, 0, C_DONTCOUNT}, {"DKGREEN", EmitSingleChar, SCC_DKGREEN, 0, C_DONTCOUNT}, {"CREAM", EmitSingleChar, SCC_CREAM, 0, C_DONTCOUNT}, {"BROWN", EmitSingleChar, SCC_BROWN, 0, C_DONTCOUNT}, {"WHITE", EmitSingleChar, SCC_WHITE, 0, C_DONTCOUNT}, {"LTBLUE", EmitSingleChar, SCC_LTBLUE, 0, C_DONTCOUNT}, {"GRAY", EmitSingleChar, SCC_GRAY, 0, C_DONTCOUNT}, {"DKBLUE", EmitSingleChar, SCC_DKBLUE, 0, C_DONTCOUNT}, {"BLACK", EmitSingleChar, SCC_BLACK, 0, C_DONTCOUNT}, {"REV", EmitSingleChar, SCC_REVISION, 0, C_NONE}, // openttd revision string {"STRING1", EmitSingleChar, SCC_STRING1, 2, C_CASE | C_GENDER}, // included string that consumes the string id and ONE argument {"STRING2", EmitSingleChar, SCC_STRING2, 3, C_CASE | C_GENDER}, // included string that consumes the string id and TWO arguments {"STRING3", EmitSingleChar, SCC_STRING3, 4, C_CASE | C_GENDER}, // included string that consumes the string id and THREE arguments {"STRING4", EmitSingleChar, SCC_STRING4, 5, C_CASE | C_GENDER}, // included string that consumes the string id and FOUR arguments {"STRING5", EmitSingleChar, SCC_STRING5, 6, C_CASE | C_GENDER}, // included string that consumes the string id and FIVE arguments {"STRING6", EmitSingleChar, SCC_STRING6, 7, C_CASE | C_GENDER}, // included string that consumes the string id and SIX arguments {"STRING7", EmitSingleChar, SCC_STRING7, 8, C_CASE | C_GENDER}, // included string that consumes the string id and SEVEN arguments {"STATION_FEATURES", EmitSingleChar, SCC_STATION_FEATURES, 1, C_NONE}, // station features string, icons of the features {"INDUSTRY", EmitSingleChar, SCC_INDUSTRY_NAME, 1, C_CASE | C_GENDER}, // industry, takes an industry #, can have cases {"CARGO_LONG", EmitSingleChar, SCC_CARGO_LONG, 2, C_NONE | C_GENDER}, {"CARGO_SHORT", EmitSingleChar, SCC_CARGO_SHORT, 2, C_NONE}, // short cargo description, only ### tons, or ### litres {"CARGO_TINY", EmitSingleChar, SCC_CARGO_TINY, 2, C_NONE}, // tiny cargo description with only the amount, not a specifier for the amount or the actual cargo name {"CARGO_LIST", EmitSingleChar, SCC_CARGO_LIST, 1, C_CASE}, {"POWER", EmitSingleChar, SCC_POWER, 1, C_NONE}, {"VOLUME_LONG", EmitSingleChar, SCC_VOLUME_LONG, 1, C_NONE}, {"VOLUME_SHORT", EmitSingleChar, SCC_VOLUME_SHORT, 1, C_NONE}, {"WEIGHT_LONG", EmitSingleChar, SCC_WEIGHT_LONG, 1, C_NONE}, {"WEIGHT_SHORT", EmitSingleChar, SCC_WEIGHT_SHORT, 1, C_NONE}, {"FORCE", EmitSingleChar, SCC_FORCE, 1, C_NONE}, {"VELOCITY", EmitSingleChar, SCC_VELOCITY, 1, C_NONE}, {"HEIGHT", EmitSingleChar, SCC_HEIGHT, 1, C_NONE}, {"P", EmitPlural, 0, 0, C_DONTCOUNT}, // plural specifier {"G", EmitGender, 0, 0, C_DONTCOUNT}, // gender specifier {"DATE_TINY", EmitSingleChar, SCC_DATE_TINY, 1, C_NONE}, {"DATE_SHORT", EmitSingleChar, SCC_DATE_SHORT, 1, C_CASE}, {"DATE_LONG", EmitSingleChar, SCC_DATE_LONG, 1, C_CASE}, {"DATE_ISO", EmitSingleChar, SCC_DATE_ISO, 1, C_NONE}, {"STRING", EmitSingleChar, SCC_STRING, 1, C_CASE | C_GENDER}, {"RAW_STRING", EmitSingleChar, SCC_RAW_STRING_POINTER, 1, C_NONE | C_GENDER}, /* Numbers */ {"COMMA", EmitSingleChar, SCC_COMMA, 1, C_NONE}, // Number with comma {"DECIMAL", EmitSingleChar, SCC_DECIMAL, 2, C_NONE}, // Number with comma and fractional part. Second parameter is number of fractional digits, first parameter is number times 10**(second parameter). {"NUM", EmitSingleChar, SCC_NUM, 1, C_NONE}, // Signed number {"ZEROFILL_NUM", EmitSingleChar, SCC_ZEROFILL_NUM, 2, C_NONE}, // Unsigned number with zero fill, e.g. "02". First parameter is number, second minimum length {"BYTES", EmitSingleChar, SCC_BYTES, 1, C_NONE}, // Unsigned number with "bytes", i.e. "1.02 MiB or 123 KiB" {"HEX", EmitSingleChar, SCC_HEX, 1, C_NONE}, // Hexadecimally printed number {"CURRENCY_LONG", EmitSingleChar, SCC_CURRENCY_LONG, 1, C_NONE}, {"CURRENCY_SHORT", EmitSingleChar, SCC_CURRENCY_SHORT, 1, C_NONE}, // compact currency {"WAYPOINT", EmitSingleChar, SCC_WAYPOINT_NAME, 1, C_NONE | C_GENDER}, // waypoint name {"STATION", EmitSingleChar, SCC_STATION_NAME, 1, C_NONE | C_GENDER}, {"DEPOT", EmitSingleChar, SCC_DEPOT_NAME, 2, C_NONE | C_GENDER}, {"TOWN", EmitSingleChar, SCC_TOWN_NAME, 1, C_NONE | C_GENDER}, {"GROUP", EmitSingleChar, SCC_GROUP_NAME, 1, C_NONE | C_GENDER}, {"SIGN", EmitSingleChar, SCC_SIGN_NAME, 1, C_NONE | C_GENDER}, {"ENGINE", EmitSingleChar, SCC_ENGINE_NAME, 1, C_NONE | C_GENDER}, {"VEHICLE", EmitSingleChar, SCC_VEHICLE_NAME, 1, C_NONE | C_GENDER}, {"COMPANY", EmitSingleChar, SCC_COMPANY_NAME, 1, C_NONE | C_GENDER}, {"COMPANY_NUM", EmitSingleChar, SCC_COMPANY_NUM, 1, C_NONE}, {"PRESIDENT_NAME", EmitSingleChar, SCC_PRESIDENT_NAME, 1, C_NONE | C_GENDER}, {"", EmitSingleChar, '\n', 0, C_DONTCOUNT}, {"{", EmitSingleChar, '{', 0, C_DONTCOUNT}, {"UP_ARROW", EmitSingleChar, SCC_UP_ARROW, 0, C_DONTCOUNT}, {"SMALL_UP_ARROW", EmitSingleChar, SCC_SMALL_UP_ARROW, 0, C_DONTCOUNT}, {"SMALL_DOWN_ARROW", EmitSingleChar, SCC_SMALL_DOWN_ARROW, 0, C_DONTCOUNT}, {"TRAIN", EmitSingleChar, SCC_TRAIN, 0, C_DONTCOUNT}, {"LORRY", EmitSingleChar, SCC_LORRY, 0, C_DONTCOUNT}, {"BUS", EmitSingleChar, SCC_BUS, 0, C_DONTCOUNT}, {"PLANE", EmitSingleChar, SCC_PLANE, 0, C_DONTCOUNT}, {"SHIP", EmitSingleChar, SCC_SHIP, 0, C_DONTCOUNT}, {"NBSP", EmitSingleChar, 0xA0, 0, C_DONTCOUNT}, {"COPYRIGHT", EmitSingleChar, 0xA9, 0, C_DONTCOUNT}, {"DOWN_ARROW", EmitSingleChar, SCC_DOWN_ARROW, 0, C_DONTCOUNT}, {"CHECKMARK", EmitSingleChar, SCC_CHECKMARK, 0, C_DONTCOUNT}, {"CROSS", EmitSingleChar, SCC_CROSS, 0, C_DONTCOUNT}, {"RIGHT_ARROW", EmitSingleChar, SCC_RIGHT_ARROW, 0, C_DONTCOUNT}, {"SMALL_LEFT_ARROW", EmitSingleChar, SCC_LESS_THAN, 0, C_DONTCOUNT}, {"SMALL_RIGHT_ARROW", EmitSingleChar, SCC_GREATER_THAN, 0, C_DONTCOUNT}, /* The following are directional formatting codes used to get the RTL strings right: * http://www.unicode.org/unicode/reports/tr9/#Directional_Formatting_Codes */ {"LRM", EmitSingleChar, CHAR_TD_LRM, 0, C_DONTCOUNT}, {"RLM", EmitSingleChar, CHAR_TD_RLM, 0, C_DONTCOUNT}, {"LRE", EmitSingleChar, CHAR_TD_LRE, 0, C_DONTCOUNT}, {"RLE", EmitSingleChar, CHAR_TD_RLE, 0, C_DONTCOUNT}, {"LRO", EmitSingleChar, CHAR_TD_LRO, 0, C_DONTCOUNT}, {"RLO", EmitSingleChar, CHAR_TD_RLO, 0, C_DONTCOUNT}, {"PDF", EmitSingleChar, CHAR_TD_PDF, 0, C_DONTCOUNT}, }; /** Description of a plural form */ struct PluralForm { int plural_count; ///< The number of plural forms const char *description; ///< Human readable description of the form const char *names; ///< Plural names }; /** All plural forms used */ static const PluralForm _plural_forms[] = { { 2, "Two forms: special case for 1.", "\"1\" \"other\"" }, { 1, "Only one form.", "\"other\"" }, { 2, "Two forms: special case for 0 to 1.", "\"0..1\" \"other\"" }, { 3, "Three forms: special cases for 0, and numbers ending in 1 except when ending in 11.", "\"1,21,31,...\" \"other\" \"0\"" }, { 5, "Five forms: special cases for 1, 2, 3 to 6, and 7 to 10.", "\"1\" \"2\" \"3..6\" \"7..10\" \"other\"" }, { 3, "Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 9 except when ending in 12 to 19.", "\"1,21,31,...\" \"2..9,22..29,32..39,...\" \"other\"" }, { 3, "Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 4 except when ending in 12 to 14.", "\"1,21,31,...\" \"2..4,22..24,32..34,...\" \"other\"" }, { 3, "Three forms: special cases for 1, and numbers ending in 2 to 4 except when ending in 12 to 14.", "\"1\" \"2..4,22..24,32..34,...\" \"other\"" }, { 4, "Four forms: special cases for numbers ending in 01, 02, and 03 to 04.", "\"1,101,201,...\" \"2,102,202,...\" \"3..4,103..104,203..204,...\" \"other\"" }, { 2, "Two forms: special case for numbers ending in 1 except when ending in 11.", "\"1,21,31,...\" \"other\"" }, { 3, "Three forms: special cases for 1, and 2 to 4.", "\"1\" \"2..4\" \"other\"" }, { 2, "Two forms: cases for numbers ending with a consonant, and with a vowel.", "\"yeong,il,sam,yuk,chil,pal\" \"i,sa,o,gu\"" }, { 4, "Four forms: special cases for 1, 0 and numbers ending in 02 to 10, and numbers ending in 11 to 19.", "\"1\" \"0,2..10,102..110,202..210,...\" \"11..19,111..119,211..219,...\" \"other\"" }, { 4, "Four forms: special cases for 1 and 11, 2 and 12, 3..10 and 13..19.", "\"1,11\" \"2,12\" \"3..10,13..19\" \"other\"" }, }; /* Flags: * 0 = nothing * t = translator editable * l = ltr/rtl choice * p = plural choice * d = separator char (replace spaces with {NBSP}) * x1 = hexadecimal number of 1 byte * x2 = hexadecimal number of 2 bytes * g = gender * c = cases * a = array, i.e. list of strings */ /** All pragmas used */ static const char * const _pragmas[][4] = { /* name flags default description */ { "name", "0", "", "English name for the language" }, { "ownname", "t", "", "Localised name for the language" }, { "isocode", "0", "", "ISO code for the language" }, { "plural", "tp", "0", "Plural form to use" }, { "textdir", "tl", "ltr", "Text direction. Either ltr (left-to-right) or rtl (right-to-left)" }, { "digitsep", "td", ",", "Digit grouping separator for non-currency numbers" }, { "digitsepcur", "td", ",", "Digit grouping separator for currency numbers" }, { "decimalsep", "td", ".", "Decimal separator" }, { "winlangid", "x2", "0x0000", "Language ID for Windows" }, { "grflangid", "x1", "0x00", "Language ID for NewGRFs" }, { "gender", "tag", "", "List of genders" }, { "case", "tac", "", "List of cases" }, }; openttd-1.3.3/src/table/unicode.h0000644000000000000000000000366112246102566015360 0ustar rootroot/* $Id: unicode.h 23582 2011-12-17 21:42:11Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file unicode.h Character mapping for using Unicode characters in OTTD. */ struct DefaultUnicodeMapping { WChar code; ///< Unicode value byte key; ///< Character index of sprite }; static const byte CLRA = 0; ///< Identifier to clear all glyphs at this codepoint /* Default unicode mapping table for sprite based glyphs. * This table allows us use unicode characters even though the glyphs don't * exist, or are in the wrong place, in the standard sprite fonts. * This is not used for FreeType rendering */ static const DefaultUnicodeMapping _default_unicode_map[] = { { 0x00A0, 0x20 }, // Non-breaking space / Up arrow { 0x00AA, CLRA }, // Feminine ordinal indicator / Down arrow { 0x00AC, CLRA }, // Not sign / Tick mark { 0x00AD, 0x20 }, // Soft hyphen / X mark { 0x00AF, CLRA }, // Macron / Right arrow { 0x00B4, CLRA }, // Acute accent / Train symbol { 0x00B5, CLRA }, // Micro sign / Truck symbol { 0x00B6, CLRA }, // Pilcrow sign / Bus symbol { 0x00B7, CLRA }, // Middle dot / Aircraft symbol { 0x00B8, CLRA }, // Cedilla / Ship symbol { 0x00B9, CLRA }, // Superscript 1 / Superscript -1 { 0x00BC, CLRA }, // One quarter / Small up arrow { 0x00BD, CLRA }, // One half / Small down arrow { 0x0178, 0x9F }, // Capital letter Y with diaeresis { 0x010D, 0x63 }, // Small letter c with caron }; openttd-1.3.3/src/table/newgrf_debug_data.h0000644000000000000000000005636712246102566017374 0ustar rootroot/* $Id: newgrf_debug_data.h 24695 2012-11-11 12:57:27Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_debug_data.h Data 'tables' for NewGRF debugging. */ #include "../newgrf_house.h" #include "../newgrf_engine.h" /* Helper for filling property tables */ #define NIP(prop, base, variable, type, name) { name, cpp_offsetof(base, variable), cpp_sizeof(base, variable), prop, type } #define NIP_END() { NULL, 0, 0, 0, 0 } /* Helper for filling callback tables */ #define NIC(cb_id, base, variable, bit) { #cb_id, cpp_offsetof(base, variable), cpp_sizeof(base, variable), bit, cb_id } #define NIC_END() { NULL, 0, 0, 0, 0 } /* Helper for filling variable tables */ #define NIV(var, name) { name, var } #define NIV_END() { NULL, 0 } /*** NewGRF Vehicles ***/ #define NICV(cb_id, bit) NIC(cb_id, Engine, info.callback_mask, bit) static const NICallback _nic_vehicles[] = { NICV(CBID_VEHICLE_VISUAL_EFFECT, CBM_VEHICLE_VISUAL_EFFECT), NICV(CBID_VEHICLE_LENGTH, CBM_VEHICLE_LENGTH), NICV(CBID_VEHICLE_LOAD_AMOUNT, CBM_VEHICLE_LOAD_AMOUNT), NICV(CBID_VEHICLE_REFIT_CAPACITY, CBM_VEHICLE_REFIT_CAPACITY), NICV(CBID_VEHICLE_ARTIC_ENGINE, CBM_VEHICLE_ARTIC_ENGINE), NICV(CBID_VEHICLE_CARGO_SUFFIX, CBM_VEHICLE_CARGO_SUFFIX), NICV(CBID_TRAIN_ALLOW_WAGON_ATTACH, CBM_NO_BIT), NICV(CBID_VEHICLE_ADDITIONAL_TEXT, CBM_NO_BIT), NICV(CBID_VEHICLE_COLOUR_MAPPING, CBM_VEHICLE_COLOUR_REMAP), NICV(CBID_VEHICLE_START_STOP_CHECK, CBM_NO_BIT), NICV(CBID_VEHICLE_32DAY_CALLBACK, CBM_NO_BIT), NICV(CBID_VEHICLE_SOUND_EFFECT, CBM_VEHICLE_SOUND_EFFECT), NICV(CBID_VEHICLE_AUTOREPLACE_SELECTION, CBM_NO_BIT), NICV(CBID_VEHICLE_MODIFY_PROPERTY, CBM_NO_BIT), NIC_END() }; static const NIVariable _niv_vehicles[] = { NIV(0x40, "position in consist and length"), NIV(0x41, "position and length of chain of same vehicles"), NIV(0x42, "transported cargo types"), NIV(0x43, "player info"), NIV(0x44, "aircraft info"), NIV(0x45, "curvature info"), NIV(0x46, "motion counter"), NIV(0x47, "vehicle cargo info"), NIV(0x48, "vehicle type info"), NIV(0x49, "year of construction"), NIV(0x4A, "current rail type info"), NIV(0x60, "count vehicle id occurrences"), NIV_END() }; class NIHVehicle : public NIHelper { bool IsInspectable(uint index) const { return Vehicle::Get(index)->GetGRF() != NULL; } uint GetParent(uint index) const { const Vehicle *first = Vehicle::Get(index)->First(); return GetInspectWindowNumber(GetGrfSpecFeature(first->type), first->index); } const void *GetInstance(uint index)const { return Vehicle::Get(index); } const void *GetSpec(uint index) const { return Vehicle::Get(index)->GetEngine(); } void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_VEHICLE_NAME, index); } uint32 GetGRFID(uint index) const { return Vehicle::Get(index)->GetGRFID(); } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { Vehicle *v = Vehicle::Get(index); VehicleResolverObject ro(v->engine_type, v); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_vehicle = { NULL, _nic_vehicles, _niv_vehicles, new NIHVehicle(), }; /*** NewGRF station (tiles) ***/ #define NICS(cb_id, bit) NIC(cb_id, StationSpec, callback_mask, bit) static const NICallback _nic_stations[] = { NICS(CBID_STATION_AVAILABILITY, CBM_STATION_AVAIL), NICS(CBID_STATION_SPRITE_LAYOUT, CBM_NO_BIT), NICS(CBID_STATION_TILE_LAYOUT, CBM_STATION_SPRITE_LAYOUT), NICS(CBID_STATION_ANIM_START_STOP, CBM_NO_BIT), NICS(CBID_STATION_ANIM_NEXT_FRAME, CBM_STATION_ANIMATION_NEXT_FRAME), NICS(CBID_STATION_ANIMATION_SPEED, CBM_STATION_ANIMATION_SPEED), NICS(CBID_STATION_LAND_SLOPE_CHECK, CBM_STATION_SLOPE_CHECK), NIC_END() }; static const NIVariable _niv_stations[] = { NIV(0x40, "platform info and relative position"), NIV(0x41, "platform info and relative position for individually built sections"), NIV(0x42, "terrain and track type"), NIV(0x43, "player info"), NIV(0x44, "path signalling info"), NIV(0x45, "rail continuation info"), NIV(0x46, "platform info and relative position from middle"), NIV(0x47, "platform info and relative position from middle for individually built sections"), NIV(0x48, "bitmask of accepted cargoes"), NIV(0x49, "platform info and relative position of same-direction section"), NIV(0x4A, "current animation frame"), NIV(0x60, "amount of cargo waiting"), NIV(0x61, "time since last cargo pickup"), NIV(0x62, "rating of cargo"), NIV(0x63, "time spent on route"), NIV(0x64, "information about last vehicle picking cargo up"), NIV(0x65, "amount of cargo acceptance"), NIV(0x66, "animation frame of nearby tile"), NIV(0x67, "land info of nearby tiles"), NIV(0x68, "station info of nearby tiles"), NIV(0x69, "information about cargo accepted in the past"), NIV_END() }; class NIHStation : public NIHelper { bool IsInspectable(uint index) const { return GetStationSpec(index) != NULL; } uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); } const void *GetInstance(uint index)const { return NULL; } const void *GetSpec(uint index) const { return GetStationSpec(index); } void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); } uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetStationSpec(index)->grf_prop.grffile->grfid : 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { StationResolverObject ro(GetStationSpec(index), Station::GetByTile(index), index); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_station = { NULL, _nic_stations, _niv_stations, new NIHStation(), }; /*** NewGRF house tiles ***/ #define NICH(cb_id, bit) NIC(cb_id, HouseSpec, callback_mask, bit) static const NICallback _nic_house[] = { NICH(CBID_HOUSE_ALLOW_CONSTRUCTION, CBM_HOUSE_ALLOW_CONSTRUCTION), NICH(CBID_HOUSE_ANIMATION_NEXT_FRAME, CBM_HOUSE_ANIMATION_NEXT_FRAME), NICH(CBID_HOUSE_ANIMATION_START_STOP, CBM_HOUSE_ANIMATION_START_STOP), NICH(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, CBM_HOUSE_CONSTRUCTION_STATE_CHANGE), NICH(CBID_HOUSE_COLOUR, CBM_HOUSE_COLOUR), NICH(CBID_HOUSE_CARGO_ACCEPTANCE, CBM_HOUSE_CARGO_ACCEPTANCE), NICH(CBID_HOUSE_ANIMATION_SPEED, CBM_HOUSE_ANIMATION_SPEED), NICH(CBID_HOUSE_DESTRUCTION, CBM_HOUSE_DESTRUCTION), NICH(CBID_HOUSE_ACCEPT_CARGO, CBM_HOUSE_ACCEPT_CARGO), NICH(CBID_HOUSE_PRODUCE_CARGO, CBM_HOUSE_PRODUCE_CARGO), NICH(CBID_HOUSE_DENY_DESTRUCTION, CBM_HOUSE_DENY_DESTRUCTION), NICH(CBID_HOUSE_WATCHED_CARGO_ACCEPTED, CBM_NO_BIT), NICH(CBID_HOUSE_CUSTOM_NAME, CBM_NO_BIT), NICH(CBID_HOUSE_DRAW_FOUNDATIONS, CBM_HOUSE_DRAW_FOUNDATIONS), NICH(CBID_HOUSE_AUTOSLOPE, CBM_HOUSE_AUTOSLOPE), NIC_END() }; static const NIVariable _niv_house[] = { NIV(0x40, "construction state of tile and pseudo-random value"), NIV(0x41, "age of building in years"), NIV(0x42, "town zone"), NIV(0x43, "terrain type"), NIV(0x44, "building counts"), NIV(0x45, "town expansion bits"), NIV(0x46, "current animation frame"), NIV(0x47, "xy coordinate of the building"), NIV(0x60, "other building counts (old house type)"), NIV(0x61, "other building counts (new house type)"), NIV(0x62, "land info of nearby tiles"), NIV(0x63, "current animation frame of nearby house tile"), NIV(0x64, "cargo acceptance history of nearby stations"), NIV(0x65, "distance of nearest house matching a given criterion"), NIV(0x66, "class and ID of nearby house tile"), NIV(0x67, "GRFID of nearby house tile"), NIV_END() }; class NIHHouse : public NIHelper { bool IsInspectable(uint index) const { return HouseSpec::Get(GetHouseType(index))->grf_prop.grffile != NULL; } uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, GetTownIndex(index)); } const void *GetInstance(uint index)const { return NULL; } const void *GetSpec(uint index) const { return HouseSpec::Get(GetHouseType(index)); } void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_TOWN_NAME, GetTownIndex(index), index); } uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? HouseSpec::Get(GetHouseType(index))->grf_prop.grffile->grfid : 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { HouseResolverObject ro(GetHouseType(index), index, Town::GetByTile(index)); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_house = { NULL, _nic_house, _niv_house, new NIHHouse(), }; /*** NewGRF industry tiles ***/ #define NICIT(cb_id, bit) NIC(cb_id, IndustryTileSpec, callback_mask, bit) static const NICallback _nic_industrytiles[] = { NICIT(CBID_INDTILE_ANIM_START_STOP, CBM_NO_BIT), NICIT(CBID_INDTILE_ANIM_NEXT_FRAME, CBM_INDT_ANIM_NEXT_FRAME), NICIT(CBID_INDTILE_ANIMATION_SPEED, CBM_INDT_ANIM_SPEED), NICIT(CBID_INDTILE_CARGO_ACCEPTANCE, CBM_INDT_CARGO_ACCEPTANCE), NICIT(CBID_INDTILE_ACCEPT_CARGO, CBM_INDT_ACCEPT_CARGO), NICIT(CBID_INDTILE_SHAPE_CHECK, CBM_INDT_SHAPE_CHECK), NICIT(CBID_INDTILE_DRAW_FOUNDATIONS, CBM_INDT_DRAW_FOUNDATIONS), NICIT(CBID_INDTILE_AUTOSLOPE, CBM_INDT_AUTOSLOPE), NIC_END() }; static const NIVariable _niv_industrytiles[] = { NIV(0x40, "construction state of tile"), NIV(0x41, "ground type"), NIV(0x42, "current town zone in nearest town"), NIV(0x43, "relative position"), NIV(0x44, "animation frame"), NIV(0x60, "land info of nearby tiles"), NIV(0x61, "animation stage of nearby tiles"), NIV(0x62, "get industry or airport tile ID at offset"), NIV_END() }; class NIHIndustryTile : public NIHelper { bool IsInspectable(uint index) const { return GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile != NULL; } uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_INDUSTRIES, GetIndustryIndex(index)); } const void *GetInstance(uint index)const { return NULL; } const void *GetSpec(uint index) const { return GetIndustryTileSpec(GetIndustryGfx(index)); } void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_INDUSTRY_NAME, GetIndustryIndex(index), index); } uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile->grfid : 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { IndustryTileResolverObject ro(GetIndustryGfx(index), index, Industry::GetByTile(index)); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_industrytile = { NULL, _nic_industrytiles, _niv_industrytiles, new NIHIndustryTile(), }; /*** NewGRF industries ***/ static const NIProperty _nip_industries[] = { NIP(0x10, Industry, produced_cargo[0], NIT_CARGO, "produced cargo 0"), NIP(0x10, Industry, produced_cargo[1], NIT_CARGO, "produced cargo 1"), NIP(0x11, Industry, accepts_cargo[0], NIT_CARGO, "accepted cargo 0"), NIP(0x11, Industry, accepts_cargo[1], NIT_CARGO, "accepted cargo 1"), NIP(0x11, Industry, accepts_cargo[2], NIT_CARGO, "accepted cargo 2"), NIP_END() }; #define NICI(cb_id, bit) NIC(cb_id, IndustrySpec, callback_mask, bit) static const NICallback _nic_industries[] = { NICI(CBID_INDUSTRY_PROBABILITY, CBM_IND_PROBABILITY), NICI(CBID_INDUSTRY_LOCATION, CBM_IND_LOCATION), NICI(CBID_INDUSTRY_PRODUCTION_CHANGE, CBM_IND_PRODUCTION_CHANGE), NICI(CBID_INDUSTRY_MONTHLYPROD_CHANGE, CBM_IND_MONTHLYPROD_CHANGE), NICI(CBID_INDUSTRY_CARGO_SUFFIX, CBM_IND_CARGO_SUFFIX), NICI(CBID_INDUSTRY_FUND_MORE_TEXT, CBM_IND_FUND_MORE_TEXT), NICI(CBID_INDUSTRY_WINDOW_MORE_TEXT, CBM_IND_WINDOW_MORE_TEXT), NICI(CBID_INDUSTRY_SPECIAL_EFFECT, CBM_IND_SPECIAL_EFFECT), NICI(CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO), NICI(CBID_INDUSTRY_DECIDE_COLOUR, CBM_IND_DECIDE_COLOUR), NICI(CBID_INDUSTRY_INPUT_CARGO_TYPES, CBM_IND_INPUT_CARGO_TYPES), NICI(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, CBM_IND_OUTPUT_CARGO_TYPES), NICI(CBID_INDUSTRY_PROD_CHANGE_BUILD, CBM_IND_PROD_CHANGE_BUILD), NIC_END() }; static const NIVariable _niv_industries[] = { NIV(0x40, "waiting cargo 0"), NIV(0x41, "waiting cargo 1"), NIV(0x42, "waiting cargo 2"), NIV(0x43, "distance to closest dry/land tile"), NIV(0x44, "layout number"), NIV(0x45, "player info"), NIV(0x46, "industry construction date"), NIV(0x60, "get industry tile ID at offset"), NIV(0x61, "get random tile bits at offset"), NIV(0x62, "land info of nearby tiles"), NIV(0x63, "animation stage of nearby tiles"), NIV(0x64, "distance on nearest industry with given type"), NIV(0x65, "get town zone and Manhattan distance of closest town"), NIV(0x66, "get square of Euclidean distance of closes town"), NIV(0x67, "count of industry and distance of closest instance"), NIV(0x68, "count of industry and distance of closest instance with layout filter"), NIV_END() }; class NIHIndustry : public NIHelper { bool IsInspectable(uint index) const { return GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile != NULL; } uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Industry::Get(index)->town->index); } const void *GetInstance(uint index)const { return Industry::Get(index); } const void *GetSpec(uint index) const { return GetIndustrySpec(Industry::Get(index)->type); } void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_INDUSTRY_NAME, index); } uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile->grfid : 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { Industry *i = Industry::Get(index); IndustriesResolverObject ro(i->location.tile, i, i->type); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } uint GetPSASize(uint index, uint32 grfid) const { return cpp_lengthof(PersistentStorage, storage); } const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const { const Industry *i = (const Industry *)this->GetInstance(index); if (i->psa == NULL) return NULL; return (int32 *)(&i->psa->storage); } }; static const NIFeature _nif_industry = { _nip_industries, _nic_industries, _niv_industries, new NIHIndustry(), }; /*** NewGRF objects ***/ #define NICO(cb_id, bit) NIC(cb_id, ObjectSpec, callback_mask, bit) static const NICallback _nic_objects[] = { NICO(CBID_OBJECT_LAND_SLOPE_CHECK, CBM_OBJ_SLOPE_CHECK), NICO(CBID_OBJECT_ANIMATION_NEXT_FRAME, CBM_OBJ_ANIMATION_NEXT_FRAME), NICO(CBID_OBJECT_ANIMATION_START_STOP, CBM_NO_BIT), NICO(CBID_OBJECT_ANIMATION_SPEED, CBM_OBJ_ANIMATION_SPEED), NICO(CBID_OBJECT_COLOUR, CBM_OBJ_COLOUR), NICO(CBID_OBJECT_FUND_MORE_TEXT, CBM_OBJ_FUND_MORE_TEXT), NICO(CBID_OBJECT_AUTOSLOPE, CBM_OBJ_AUTOSLOPE), NIC_END() }; static const NIVariable _niv_objects[] = { NIV(0x40, "relative position"), NIV(0x41, "tile information"), NIV(0x42, "construction date"), NIV(0x43, "animation counter"), NIV(0x44, "object founder"), NIV(0x45, "get town zone and Manhattan distance of closest town"), NIV(0x46, "get square of Euclidean distance of closes town"), NIV(0x47, "colour"), NIV(0x48, "view"), NIV(0x60, "get object ID at offset"), NIV(0x61, "get random tile bits at offset"), NIV(0x62, "land info of nearby tiles"), NIV(0x63, "animation stage of nearby tiles"), NIV(0x64, "distance on nearest object with given type"), NIV_END() }; class NIHObject : public NIHelper { bool IsInspectable(uint index) const { return ObjectSpec::GetByTile(index)->grf_prop.grffile != NULL; } uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Object::GetByTile(index)->town->index); } const void *GetInstance(uint index)const { return Object::GetByTile(index); } const void *GetSpec(uint index) const { return ObjectSpec::GetByTile(index); } void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT, INVALID_STRING_ID, index); } uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? ObjectSpec::GetByTile(index)->grf_prop.grffile->grfid : 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { ObjectResolverObject ro(ObjectSpec::GetByTile(index), Object::GetByTile(index), index); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_object = { NULL, _nic_objects, _niv_objects, new NIHObject(), }; /*** NewGRF rail types ***/ static const NIVariable _niv_railtypes[] = { NIV(0x40, "terrain type"), NIV(0x41, "enhanced tunnels"), NIV(0x42, "level crossing status"), NIV_END() }; class NIHRailType : public NIHelper { bool IsInspectable(uint index) const { return true; } uint GetParent(uint index) const { return UINT32_MAX; } const void *GetInstance(uint index)const { return NULL; } const void *GetSpec(uint index) const { return NULL; } void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE, INVALID_STRING_ID, index); } uint32 GetGRFID(uint index) const { return 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { /* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype. * However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */ RailTypeResolverObject ro(index, TCX_NORMAL, NULL); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_railtype = { NULL, NULL, _niv_railtypes, new NIHRailType(), }; /*** NewGRF airport tiles ***/ #define NICAT(cb_id, bit) NIC(cb_id, AirportTileSpec, callback_mask, bit) static const NICallback _nic_airporttiles[] = { NICAT(CBID_AIRPTILE_DRAW_FOUNDATIONS, CBM_AIRT_DRAW_FOUNDATIONS), NICAT(CBID_AIRPTILE_ANIM_START_STOP, CBM_NO_BIT), NICAT(CBID_AIRPTILE_ANIM_NEXT_FRAME, CBM_AIRT_ANIM_NEXT_FRAME), NICAT(CBID_AIRPTILE_ANIMATION_SPEED, CBM_AIRT_ANIM_SPEED), NIC_END() }; class NIHAirportTile : public NIHelper { bool IsInspectable(uint index) const { return AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile != NULL; } uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); } const void *GetInstance(uint index)const { return NULL; } const void *GetSpec(uint index) const { return AirportTileSpec::Get(GetAirportGfx(index)); } void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); } uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile->grfid : 0; } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { AirportTileResolverObject ro(AirportTileSpec::GetByTile(index), index, Station::GetByTile(index)); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } }; static const NIFeature _nif_airporttile = { NULL, _nic_airporttiles, _niv_industrytiles, // Yes, they share this (at least now) new NIHAirportTile(), }; /*** NewGRF towns ***/ static const NIVariable _niv_towns[] = { NIV(0x40, "larger town effect on this town"), NIV(0x41, "town index"), NIV(0x82, "population"), NIV(0x94, "zone radius 0"), NIV(0x96, "zone radius 1"), NIV(0x98, "zone radius 2"), NIV(0x9A, "zone radius 3"), NIV(0x9C, "zone radius 4"), NIV(0xB6, "number of buildings"), NIV_END() }; class NIHTown : public NIHelper { bool IsInspectable(uint index) const { return Town::IsValidID(index); } uint GetParent(uint index) const { return UINT32_MAX; } const void *GetInstance(uint index)const { return Town::Get(index); } const void *GetSpec(uint index) const { return NULL; } void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_TOWN_NAME, index); } uint32 GetGRFID(uint index) const { return 0; } bool PSAWithParameter() const { return true; } uint GetPSASize(uint index, uint32 grfid) const { return cpp_lengthof(PersistentStorage, storage); } /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const { TownResolverObject ro(NULL, Town::Get(index), true); return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail); } const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const { Town *t = Town::Get(index); std::list::iterator iter; for (iter = t->psa_list.begin(); iter != t->psa_list.end(); iter++) { if ((*iter)->grfid == grfid) return (int32 *)(&(*iter)->storage[0]); } return NULL; } }; static const NIFeature _nif_town = { NULL, NULL, _niv_towns, new NIHTown(), }; /** Table with all NIFeatures. */ static const NIFeature * const _nifeatures[] = { &_nif_vehicle, // GSF_TRAINS &_nif_vehicle, // GSF_ROADVEHICLES &_nif_vehicle, // GSF_SHIPS &_nif_vehicle, // GSF_AIRCRAFT &_nif_station, // GSF_STATIONS NULL, // GSF_CANALS (no callbacks/action2 implemented) NULL, // GSF_BRIDGES (no callbacks/action2) &_nif_house, // GSF_HOUSES NULL, // GSF_GLOBALVAR (has no "physical" objects) &_nif_industrytile, // GSF_INDUSTRYTILES &_nif_industry, // GSF_INDUSTRIES NULL, // GSF_CARGOES (has no "physical" objects) NULL, // GSF_SOUNDFX (has no "physical" objects) NULL, // GSF_AIRPORTS (feature not implemented) NULL, // GSF_SIGNALS (feature not implemented) &_nif_object, // GSF_OBJECTS &_nif_railtype, // GSF_RAILTYPES &_nif_airporttile, // GSF_AIRPORTTILES &_nif_town, // GSF_FAKE_TOWNS }; assert_compile(lengthof(_nifeatures) == GSF_FAKE_END); openttd-1.3.3/src/table/settings.h.preamble0000644000000000000000000002224612246102566017360 0ustar rootroot/* $Id: settings.h.preamble 24991 2013-02-14 11:06:01Z matthijs $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file table/settings.h Settings to save in the savegame and config file. */ /* Callback function used in _settings[] as well as _company_settings[] */ static size_t ConvertLandscape(const char *value); /**************************** * OTTD specific INI stuff ****************************/ /** * Settings-macro usage: * The list might look daunting at first, but is in general easy to understand. * The macros can be grouped depending on where the config variable is * stored: * 1. SDTG_something * These are for global variables, so this is the one you will use * for a #SettingDescGlobVarList section. Here 'var' refers to a * global variable. * 2. SDTC_something * These are for client-only variables. Here the 'var' refers to an * entry inside _settings_client. * 3. SDT_something * Thse are for members in the struct described by the current * #SettingDesc list / .ini file. Here, 'base' specifies type of the * struct while 'var' points out the member of the struct (the actual * struct to store it in is implicitely defined by the #SettingDesc * list / .ini file preamble the entry is in). * * The something part defines the type of variable to store. There are a * lot of types. Easy ones are: * - VAR: any number type, 'type' field specifies what number. eg int8 or uint32 * - BOOL: a boolean number type * - STR: a string or character. 'type' field specifies what string. Normal, string, or quoted * A bit more difficult to use are MMANY (meaning ManyOfMany) and OMANY (OneOfMany) * These are actually normal numbers, only bitmasked. In MMANY several bits can * be set, in the other only one. * If nothing fits you, you can use the GENERAL macros, but it exposes the * internal structure somewhat so it needs a little looking. There are _NULL() * macros as well, these fill up space so you can add more settings there (in * place) and you DON'T have to increase the savegame version. * * While reading values from openttd.cfg, some values may not be converted * properly, for any kind of reasons. In order to allow a process of self-cleaning * mechanism, a callback procedure is made available. You will have to supply the function, which * will work on a string, one function per setting. And of course, enable the callback param * on the appropriate macro. */ #define NSD_GENERAL(name, def, cmd, guiflags, min, max, interval, many, str, strhelp, strval, proc, load, cat)\ {name, (const void*)(size_t)(def), {(byte)cmd}, {(uint16)guiflags}, min, max, interval, many, str, strhelp, strval, proc, load, cat} /* Macros for various objects to go in the configuration file. * This section is for global variables */ #define SDTG_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, var, length, def, min, max, interval, full, str, strhelp, strval, proc, from, to, cat)\ {NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, NULL, cat), SLEG_GENERAL(sle_cmd, var, type | flags, length, from, to)} #define SDTG_VAR(name, type, flags, guiflags, var, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(name, SDT_NUMX, SL_VAR, type, flags, guiflags, var, 0, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTG_BOOL(name, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(name, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, var, 0, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTG_LIST(name, type, length, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(name, SDT_INTLIST, SL_ARR, type, flags, guiflags, var, length, def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTG_STR(name, type, flags, guiflags, var, def, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(name, SDT_STRING, SL_STR, type, flags, guiflags, var, lengthof(var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTG_OMANY(name, type, flags, guiflags, var, def, max, full, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(name, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat) #define SDTG_MMANY(name, type, flags, guiflags, var, def, full, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(name, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, var, 0, def, 0, 0, 0, full, str, strhelp, strval, proc, from, to, cat) #define SDTG_NULL(length, from, to)\ {{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_NULL(length, from, to)} #define SDTG_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLEG_END()} /* Macros for various objects to go in the configuration file. * This section is for structures where their various members are saved */ #define SDT_GENERAL(name, sdt_cmd, sle_cmd, type, flags, guiflags, base, var, length, def, min, max, interval, full, str, strhelp, strval, proc, load, from, to, cat)\ {NSD_GENERAL(name, def, sdt_cmd, guiflags, min, max, interval, full, str, strhelp, strval, proc, load, cat), SLE_GENERAL(sle_cmd, base, var, type | flags, length, from, to)} #define SDT_VAR(base, var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\ SDT_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, base, var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, NULL, from, to, cat) #define SDT_BOOL(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDT_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, base, var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) #define SDT_LIST(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDT_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) #define SDT_STR(base, var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDT_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, base, var, lengthof(((base*)8)->var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) #define SDT_CHR(base, var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDT_GENERAL(#var, SDT_STRING, SL_VAR, SLE_CHAR, flags, guiflags, base, var, 1, def, 0, 0, 0, NULL, str, strhelp, strval, proc, NULL, from, to, cat) #define SDT_OMANY(base, var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, load, cat)\ SDT_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, load, from, to, cat) #define SDT_MMANY(base, var, type, flags, guiflags, def, full, str, proc, strhelp, strval, from, to, cat)\ SDT_GENERAL(#var, SDT_MANYOFMANY, SL_VAR, type, flags, guiflags, base, var, 1, def, 0, 0, 0, full, str, strhelp, strval, proc, NULL, from, to, cat) #define SDT_NULL(length, from, to)\ {{"", NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_CONDNULL(length, from, to)} #define SDTC_VAR(var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(#var, SDT_NUMX, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, min, max, interval, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTC_BOOL(var, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(#var, SDT_BOOLX, SL_VAR, SLE_BOOL, flags, guiflags, _settings_client.var, 1, def, 0, 1, 0, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTC_LIST(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(#var, SDT_INTLIST, SL_ARR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTC_STR(var, type, flags, guiflags, def, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(#var, SDT_STRING, SL_STR, type, flags, guiflags, _settings_client.var, lengthof(_settings_client.var), def, 0, 0, 0, NULL, str, strhelp, strval, proc, from, to, cat) #define SDTC_OMANY(var, type, flags, guiflags, def, max, full, str, strhelp, strval, proc, from, to, cat)\ SDTG_GENERAL(#var, SDT_ONEOFMANY, SL_VAR, type, flags, guiflags, _settings_client.var, 1, def, 0, max, 0, full, str, strhelp, strval, proc, from, to, cat) #define SDT_END() {{NULL, NULL, {0}, {0}, 0, 0, 0, NULL, STR_NULL, STR_NULL, STR_NULL, NULL, NULL, SC_NONE}, SLE_END()} openttd-1.3.3/src/table/train_cmd.h0000644000000000000000000000450512246102566015670 0ustar rootroot/* $Id: train_cmd.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file train_cmd.h Sprites to use for trains. */ static const SpriteID _engine_sprite_base[] = { 0x0B59, 0x0B61, 0x0B69, 0x0BE1, 0x0B71, 0x0B75, 0x0B7D, 0x0B7D, 0x0B85, 0x0B85, 0x0B8D, 0x0B8D, 0x0BC9, 0x0BD1, 0x0BD9, 0x0BE9, 0x0BED, 0x0BED, 0x0BF5, 0x0BF9, 0x0B79, 0x0B9D, 0x0B9D, 0x0B95, 0x0B95, 0x0BA5, 0x0BA9, 0x0BA9, 0x0BC1, 0x0BC5, 0x0BB1, 0x0BB9, 0x0BB9, 0x0AAD, 0x0AB1, 0x0AB5, 0x0AB9, 0x0ABD, 0x0AC1, 0x0AC9, 0x0ACD, 0x0AD5, 0x0AD1, 0x0AD9, 0x0AC5, 0x0AD1, 0x0AD5, 0x0AF9, 0x0AFD, 0x0B05, 0x0AB9, 0x0AC1, 0x0AC9, 0x0AD1, 0x0AD9, 0x0AE1, 0x0AE5, 0x0AE9, 0x0AF1, 0x0AF9, 0x0B0D, 0x0B11, 0x0B15, 0x0B19, 0x0B1D, 0x0B21, 0x0B29, 0x0B2D, 0x0B35, 0x0B31, 0x0B39, 0x0B25, 0x0B31, 0x0B35, }; /* For how many directions do we have sprites? (8 or 4; if 4, the other 4 * directions are symmetric. */ static const byte _engine_sprite_and[] = { 7, 7, 7, 7, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 7, 3, 7, 7, 7, 7, 3, 7, 7, 3, 3, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }; /* Non-zero for multihead trains. */ static const byte _engine_sprite_add[] = { 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static const byte _wagon_full_adder[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 24, 24, 24, 24, 0, 0, 32, 32, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 0, 44, 0, 0, 0, 0, 24, 24, 24, 24, 0, 0, 32, 32 }; openttd-1.3.3/src/table/airport_movement.h0000644000000000000000000016322112246102566017323 0ustar rootroot/* $Id: airport_movement.h 22741 2011-08-13 12:43:05Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airport_movement.h Heart of the airports and their finite state machines */ #ifndef AIRPORT_MOVEMENT_H #define AIRPORT_MOVEMENT_H /** * State machine input struct (from external file, etc.) * Finite sTate mAchine --> FTA */ struct AirportFTAbuildup { byte position; ///< The position that an airplane is at. byte heading; ///< The current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.). uint64 block; ///< The block this position is on on the airport (st->airport.flags). byte next; ///< Next position from this position. }; /////////////////////////////////////////////////////////////////////// /////*********Movement Positions on Airports********************/////// /** * Airport movement data creation macro. * @param x X position. * @param y Y position. * @param flags Movement flags. * @param dir Direction. */ #define AMD(x, y, flags, dir) { x, y, flags, {dir} } /** Dummy airport. */ static const AirportMovingData _airport_moving_data_dummy[] = { AMD( 0, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), AMD( 0, 96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), AMD( 96, 96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), AMD( 96, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), }; /** Country Airfield (small) 4x3. */ static const AirportMovingData _airport_moving_data_country[22] = { AMD( 53, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar AMD( 53, 27, 0, DIR_N ), // 01 Taxi to right outside depot AMD( 32, 23, AMED_EXACTPOS, DIR_NW), // 02 Terminal 1 AMD( 10, 23, AMED_EXACTPOS, DIR_NW), // 03 Terminal 2 AMD( 43, 37, 0, DIR_N ), // 04 Going towards terminal 2 AMD( 24, 37, 0, DIR_N ), // 05 Going towards terminal 2 AMD( 53, 37, 0, DIR_N ), // 06 Going for takeoff AMD( 61, 40, AMED_EXACTPOS, DIR_NE), // 07 Taxi to start of runway (takeoff) AMD( 3, 40, AMED_NOSPDCLAMP, DIR_N ), // 08 Accelerate to end of runway AMD( -79, 40, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 09 Take off AMD( 177, 40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 10 Fly to landing position in air AMD( 56, 40, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 11 Going down for land AMD( 3, 40, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 12 Just landed, brake until end of runway AMD( 7, 40, 0, DIR_N ), // 13 Just landed, turn around and taxi 1 square AMD( 53, 40, 0, DIR_N ), // 14 Taxi from runway to crossing AMD( 1, 193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Fly around waiting for a landing spot (north-east) AMD( 1, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly around waiting for a landing spot (north-west) AMD( 257, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Fly around waiting for a landing spot (south-west) AMD( 273, 47, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (south) AMD( 44, 37, AMED_HELI_RAISE, DIR_N ), // 19 Helicopter takeoff AMD( 44, 40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 In position above landing spot helicopter AMD( 44, 40, AMED_HELI_LOWER, DIR_N ), // 21 Helicopter landing }; /** Commuter Airfield (small) 5x4. */ static const AirportMovingData _airport_moving_data_commuter[37] = { AMD( 69, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar AMD( 72, 22, 0, DIR_N ), // 01 Taxi to right outside depot AMD( 8, 22, AMED_EXACTPOS, DIR_SW), // 01 Taxi to right outside depot AMD( 24, 36, AMED_EXACTPOS, DIR_SE), // 03 Terminal 1 AMD( 40, 36, AMED_EXACTPOS, DIR_SE), // 04 Terminal 2 AMD( 56, 36, AMED_EXACTPOS, DIR_SE), // 05 Terminal 3 AMD( 40, 8, AMED_EXACTPOS, DIR_NE), // 06 Helipad 1 AMD( 56, 8, AMED_EXACTPOS, DIR_NE), // 07 Helipad 2 AMD( 24, 22, 0, DIR_SW), // 08 Taxiing AMD( 40, 22, 0, DIR_SW), // 09 Taxiing AMD( 56, 22, 0, DIR_SW), // 10 Taxiing AMD( 72, 40, 0, DIR_SE), // 11 Airport OUTWAY AMD( 72, 54, AMED_EXACTPOS, DIR_NE), // 12 Accelerate to end of runway AMD( 7, 54, AMED_NOSPDCLAMP, DIR_N ), // 13 Release control of runway, for smoother movement AMD( 5, 54, AMED_NOSPDCLAMP, DIR_N ), // 14 End of runway AMD( -79, 54, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 15 Take off AMD( 145, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly to landing position in air AMD( 73, 54, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 17 Going down for land AMD( 3, 54, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 18 Just landed, brake until end of runway AMD( 12, 54, AMED_SLOWTURN, DIR_NW), // 19 Just landed, turn around and taxi AMD( 8, 32, 0, DIR_NW), // 20 Taxi from runway to crossing AMD( 1, 149, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (north-east) AMD( 1, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (north-west) AMD( 193, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Fly around waiting for a landing spot (south-west) AMD( 225, 62, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 24 Fly around waiting for a landing spot (south) /* Helicopter */ AMD( 80, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Bufferspace before helipad AMD( 80, 0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Bufferspace before helipad AMD( 32, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Get in position for Helipad1 AMD( 48, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Get in position for Helipad2 AMD( 32, 8, AMED_HELI_LOWER, DIR_N ), // 29 Land at Helipad1 AMD( 48, 8, AMED_HELI_LOWER, DIR_N ), // 30 Land at Helipad2 AMD( 32, 8, AMED_HELI_RAISE, DIR_N ), // 31 Takeoff Helipad1 AMD( 48, 8, AMED_HELI_RAISE, DIR_N ), // 32 Takeoff Helipad2 AMD( 64, 22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 33 Go to position for Hangarentrance in air AMD( 64, 22, AMED_HELI_LOWER, DIR_N ), // 34 Land in front of hangar AMD( 40, 8, AMED_EXACTPOS, DIR_N ), // pre-helitakeoff helipad 1 AMD( 56, 8, AMED_EXACTPOS, DIR_N ), // pre-helitakeoff helipad 2 }; /** City Airport (large) 6x6. */ static const AirportMovingData _airport_moving_data_city[] = { AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1 AMD( 56, 22, AMED_EXACTPOS, DIR_SE), // 03 Terminal 2 AMD( 38, 8, AMED_EXACTPOS, DIR_SW), // 04 Terminal 3 AMD( 65, 6, 0, DIR_N ), // 05 Taxi to right in infront of terminal 2/3 AMD( 80, 27, 0, DIR_N ), // 06 Taxiway terminals 2-3 AMD( 44, 63, 0, DIR_N ), // 07 Taxi to Airport center AMD( 58, 71, 0, DIR_N ), // 08 Towards takeoff AMD( 72, 85, 0, DIR_N ), // 09 Taxi to runway (takeoff) AMD( 89, 85, AMED_EXACTPOS, DIR_NE), // 10 Taxi to start of runway (takeoff) AMD( 3, 85, AMED_NOSPDCLAMP, DIR_N ), // 11 Accelerate to end of runway AMD( -79, 85, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 12 Take off AMD( 177, 87, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air AMD( 89, 87, AMED_HOLD | AMED_LAND, DIR_N ), // 14 Going down for land AMD( 20, 87, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 15 Just landed, brake until end of runway AMD( 20, 87, 0, DIR_N ), // 16 Just landed, turn around and taxi 1 square // NOT USED AMD( 36, 71, 0, DIR_N ), // 17 Taxi from runway to crossing AMD( 160, 87, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (north-east) AMD( 140, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Final approach fix AMD( 257, 1, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (south-west) AMD( 273, 49, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south) AMD( 44, 63, AMED_HELI_RAISE, DIR_N ), // 22 Helicopter takeoff AMD( 28, 74, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 In position above landing spot helicopter AMD( 28, 74, AMED_HELI_LOWER, DIR_N ), // 24 Helicopter landing AMD( 145, 1, AMED_HOLD | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (north-west) AMD( -32, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Initial approach fix (north) AMD( 300, -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Initial approach fix (south) AMD( 140, -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Intermediate Approach fix (south), IAF (west) AMD( -32, 120, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Initial approach fix (east) }; /** Metropolitan Airport (metropolitan) - 2 runways. */ static const AirportMovingData _airport_moving_data_metropolitan[28] = { AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1 AMD( 56, 22, AMED_EXACTPOS, DIR_SE), // 03 Terminal 2 AMD( 38, 8, AMED_EXACTPOS, DIR_SW), // 04 Terminal 3 AMD( 65, 6, 0, DIR_N ), // 05 Taxi to right in infront of terminal 2/3 AMD( 80, 27, 0, DIR_N ), // 06 Taxiway terminals 2-3 AMD( 49, 58, 0, DIR_N ), // 07 Taxi to Airport center AMD( 72, 58, 0, DIR_N ), // 08 Towards takeoff AMD( 72, 69, 0, DIR_N ), // 09 Taxi to runway (takeoff) AMD( 89, 69, AMED_EXACTPOS, DIR_NE), // 10 Taxi to start of runway (takeoff) AMD( 3, 69, AMED_NOSPDCLAMP, DIR_N ), // 11 Accelerate to end of runway AMD( -79, 69, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 12 Take off AMD( 177, 85, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air AMD( 89, 85, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 14 Going down for land AMD( 3, 85, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 15 Just landed, brake until end of runway AMD( 21, 85, 0, DIR_N ), // 16 Just landed, turn around and taxi 1 square AMD( 21, 69, 0, DIR_N ), // 17 On Runway-out taxiing to In-Way AMD( 21, 58, AMED_EXACTPOS, DIR_SW), // 18 Taxi from runway to crossing AMD( 1, 193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Fly around waiting for a landing spot (north-east) AMD( 1, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (north-west) AMD( 257, 1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south-west) AMD( 273, 49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (south) AMD( 44, 58, 0, DIR_N ), // 23 Helicopter takeoff spot on ground (to clear airport sooner) AMD( 44, 63, AMED_HELI_RAISE, DIR_N ), // 24 Helicopter takeoff AMD( 15, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Get in position above landing spot helicopter AMD( 15, 54, AMED_HELI_LOWER, DIR_N ), // 26 Helicopter landing AMD( 21, 58, AMED_EXACTPOS, DIR_SW), // 27 Transitions after landing to on-ground movement }; /** International Airport (international) - 2 runways, 6 terminals, dedicated helipad. */ static const AirportMovingData _airport_moving_data_international[51] = { AMD( 7, 55, AMED_EXACTPOS, DIR_SE), // 00 In Hangar 1 AMD( 100, 21, AMED_EXACTPOS, DIR_SE), // 01 In Hangar 2 AMD( 7, 70, 0, DIR_N ), // 02 Taxi to right outside depot AMD( 100, 36, 0, DIR_N ), // 03 Taxi to right outside depot AMD( 38, 70, AMED_EXACTPOS, DIR_SW), // 04 Terminal 1 AMD( 38, 54, AMED_EXACTPOS, DIR_SW), // 05 Terminal 2 AMD( 38, 38, AMED_EXACTPOS, DIR_SW), // 06 Terminal 3 AMD( 70, 70, AMED_EXACTPOS, DIR_NE), // 07 Terminal 4 AMD( 70, 54, AMED_EXACTPOS, DIR_NE), // 08 Terminal 5 AMD( 70, 38, AMED_EXACTPOS, DIR_NE), // 09 Terminal 6 AMD( 104, 71, AMED_EXACTPOS, DIR_NE), // 10 Helipad 1 AMD( 104, 55, AMED_EXACTPOS, DIR_NE), // 11 Helipad 2 AMD( 22, 87, 0, DIR_N ), // 12 Towards Terminals 4/5/6, Helipad 1/2 AMD( 60, 87, 0, DIR_N ), // 13 Towards Terminals 4/5/6, Helipad 1/2 AMD( 66, 87, 0, DIR_N ), // 14 Towards Terminals 4/5/6, Helipad 1/2 AMD( 86, 87, AMED_EXACTPOS, DIR_NW), // 15 Towards Terminals 4/5/6, Helipad 1/2 AMD( 86, 70, 0, DIR_N ), // 16 In Front of Terminal 4 / Helipad 1 AMD( 86, 54, 0, DIR_N ), // 17 In Front of Terminal 5 / Helipad 2 AMD( 86, 38, 0, DIR_N ), // 18 In Front of Terminal 6 AMD( 86, 22, 0, DIR_N ), // 19 Towards Terminals Takeoff (Taxiway) AMD( 66, 22, 0, DIR_N ), // 20 Towards Terminals Takeoff (Taxiway) AMD( 60, 22, 0, DIR_N ), // 21 Towards Terminals Takeoff (Taxiway) AMD( 38, 22, 0, DIR_N ), // 22 Towards Terminals Takeoff (Taxiway) AMD( 22, 70, 0, DIR_N ), // 23 In Front of Terminal 1 AMD( 22, 58, 0, DIR_N ), // 24 In Front of Terminal 2 AMD( 22, 38, 0, DIR_N ), // 25 In Front of Terminal 3 AMD( 22, 22, AMED_EXACTPOS, DIR_NW), // 26 Going for Takeoff AMD( 22, 6, 0, DIR_N ), // 27 On Runway-out, prepare for takeoff AMD( 3, 6, AMED_EXACTPOS, DIR_SW), // 28 Accelerate to end of runway AMD( 60, 6, AMED_NOSPDCLAMP, DIR_N ), // 29 Release control of runway, for smoother movement AMD( 105, 6, AMED_NOSPDCLAMP, DIR_N ), // 30 End of runway AMD( 190, 6, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 31 Take off AMD( 193, 104, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly to landing position in air AMD( 105, 104, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 33 Going down for land AMD( 3, 104, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 34 Just landed, brake until end of runway AMD( 12, 104, AMED_SLOWTURN, DIR_N ), // 35 Just landed, turn around and taxi 1 square AMD( 7, 84, 0, DIR_N ), // 36 Taxi from runway to crossing AMD( 1, 209, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 37 Fly around waiting for a landing spot (north-east) AMD( 1, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 38 Fly around waiting for a landing spot (north-west) AMD( 273, 6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 39 Fly around waiting for a landing spot (south-west) AMD( 305, 81, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 40 Fly around waiting for a landing spot (south) /* Helicopter */ AMD( 128, 80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 41 Bufferspace before helipad AMD( 128, 80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 42 Bufferspace before helipad AMD( 96, 71, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Get in position for Helipad1 AMD( 96, 55, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Get in position for Helipad2 AMD( 96, 71, AMED_HELI_LOWER, DIR_N ), // 45 Land at Helipad1 AMD( 96, 55, AMED_HELI_LOWER, DIR_N ), // 46 Land at Helipad2 AMD( 104, 71, AMED_HELI_RAISE, DIR_N ), // 47 Takeoff Helipad1 AMD( 104, 55, AMED_HELI_RAISE, DIR_N ), // 48 Takeoff Helipad2 AMD( 104, 32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Go to position for Hangarentrance in air AMD( 104, 32, AMED_HELI_LOWER, DIR_N ), // 50 Land in HANGAR2_AREA to go to hangar }; /** Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads. */ static const AirportMovingData _airport_moving_data_intercontinental[77] = { AMD( 8, 87, AMED_EXACTPOS, DIR_SE), // 00 In Hangar 1 AMD( 136, 72, AMED_EXACTPOS, DIR_SE), // 01 In Hangar 2 AMD( 8, 104, 0, DIR_N ), // 02 Taxi to right outside depot 1 AMD( 136, 88, 0, DIR_N ), // 03 Taxi to right outside depot 2 AMD( 56, 120, AMED_EXACTPOS, DIR_W ), // 04 Terminal 1 AMD( 56, 104, AMED_EXACTPOS, DIR_SW), // 05 Terminal 2 AMD( 56, 88, AMED_EXACTPOS, DIR_SW), // 06 Terminal 3 AMD( 56, 72, AMED_EXACTPOS, DIR_SW), // 07 Terminal 4 AMD( 88, 120, AMED_EXACTPOS, DIR_N ), // 08 Terminal 5 AMD( 88, 104, AMED_EXACTPOS, DIR_NE), // 09 Terminal 6 AMD( 88, 88, AMED_EXACTPOS, DIR_NE), // 10 Terminal 7 AMD( 88, 72, AMED_EXACTPOS, DIR_NE), // 11 Terminal 8 AMD( 88, 56, AMED_EXACTPOS, DIR_SE), // 12 Helipad 1 AMD( 72, 56, AMED_EXACTPOS, DIR_NE), // 13 Helipad 2 AMD( 40, 136, 0, DIR_N ), // 14 Term group 2 enter 1 a AMD( 56, 136, 0, DIR_N ), // 15 Term group 2 enter 1 b AMD( 88, 136, 0, DIR_N ), // 16 Term group 2 enter 2 a AMD( 104, 136, 0, DIR_N ), // 17 Term group 2 enter 2 b AMD( 104, 120, 0, DIR_N ), // 18 Term group 2 - opp term 5 AMD( 104, 104, 0, DIR_N ), // 19 Term group 2 - opp term 6 & exit2 AMD( 104, 88, 0, DIR_N ), // 20 Term group 2 - opp term 7 & hangar area 2 AMD( 104, 72, 0, DIR_N ), // 21 Term group 2 - opp term 8 AMD( 104, 56, 0, DIR_N ), // 22 Taxi Term group 2 exit a AMD( 104, 40, 0, DIR_N ), // 23 Taxi Term group 2 exit b AMD( 56, 40, 0, DIR_N ), // 24 Term group 2 exit 2a AMD( 40, 40, 0, DIR_N ), // 25 Term group 2 exit 2b AMD( 40, 120, 0, DIR_N ), // 26 Term group 1 - opp term 1 AMD( 40, 104, 0, DIR_N ), // 27 Term group 1 - opp term 2 & hangar area 1 AMD( 40, 88, 0, DIR_N ), // 28 Term group 1 - opp term 3 AMD( 40, 72, 0, DIR_N ), // 29 Term group 1 - opp term 4 AMD( 18, 72, 0, DIR_NW), // 30 Outway 1 AMD( 8, 40, 0, DIR_NW), // 31 Airport OUTWAY AMD( 8, 24, AMED_EXACTPOS, DIR_SW), // 32 Accelerate to end of runway AMD( 119, 24, AMED_NOSPDCLAMP, DIR_N ), // 33 Release control of runway, for smoother movement AMD( 117, 24, AMED_NOSPDCLAMP, DIR_N ), // 34 End of runway AMD( 197, 24, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 35 Take off AMD( 254, 84, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 36 Flying to landing position in air AMD( 117, 168, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 37 Going down for land AMD( 8, 168, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 38 Just landed, brake until end of runway AMD( 8, 168, 0, DIR_N ), // 39 Just landed, turn around and taxi AMD( 8, 144, 0, DIR_NW), // 40 Taxi from runway AMD( 8, 128, 0, DIR_NW), // 41 Taxi from runway AMD( 8, 120, AMED_EXACTPOS, DIR_NW), // 42 Airport entrance AMD( 56, 344, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Fly around waiting for a landing spot (north-east) AMD( -200, 88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Fly around waiting for a landing spot (north-west) AMD( 56, -168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 45 Fly around waiting for a landing spot (south-west) AMD( 312, 88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 46 Fly around waiting for a landing spot (south) /* Helicopter */ AMD( 96, 40, AMED_NOSPDCLAMP, DIR_N ), // 47 Bufferspace before helipad AMD( 96, 40, AMED_NOSPDCLAMP, DIR_N ), // 48 Bufferspace before helipad AMD( 82, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Get in position for Helipad1 AMD( 64, 56, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 50 Get in position for Helipad2 AMD( 81, 55, AMED_HELI_LOWER, DIR_N ), // 51 Land at Helipad1 AMD( 64, 56, AMED_HELI_LOWER, DIR_N ), // 52 Land at Helipad2 AMD( 80, 56, AMED_HELI_RAISE, DIR_N ), // 53 Takeoff Helipad1 AMD( 64, 56, AMED_HELI_RAISE, DIR_N ), // 54 Takeoff Helipad2 AMD( 136, 96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 55 Go to position for Hangarentrance in air AMD( 136, 96, AMED_HELI_LOWER, DIR_N ), // 56 Land in front of hangar2 AMD( 126, 104, 0, DIR_SE), // 57 Outway 2 AMD( 136, 136, 0, DIR_NE), // 58 Airport OUTWAY 2 AMD( 136, 152, AMED_EXACTPOS, DIR_NE), // 59 Accelerate to end of runway2 AMD( 16, 152, AMED_NOSPDCLAMP, DIR_N ), // 60 Release control of runway2, for smoother movement AMD( 20, 152, AMED_NOSPDCLAMP, DIR_N ), // 61 End of runway2 AMD( -56, 152, AMED_NOSPDCLAMP | AMED_TAKEOFF, DIR_N ), // 62 Take off2 AMD( 24, 8, AMED_NOSPDCLAMP | AMED_LAND, DIR_N ), // 63 Going down for land2 AMD( 136, 8, AMED_NOSPDCLAMP | AMED_BRAKE, DIR_N ), // 64 Just landed, brake until end of runway2in AMD( 136, 8, 0, DIR_N ), // 65 Just landed, turn around and taxi AMD( 136, 24, 0, DIR_SE), // 66 Taxi from runway 2in AMD( 136, 40, 0, DIR_SE), // 67 Taxi from runway 2in AMD( 136, 56, AMED_EXACTPOS, DIR_NE), // 68 Airport entrance2 AMD( -56, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 69 Fly to landing position in air2 AMD( 88, 40, 0, DIR_N ), // 70 Taxi Term group 2 exit - opp heli1 AMD( 72, 40, 0, DIR_N ), // 71 Taxi Term group 2 exit - opp heli2 AMD( 88, 57, AMED_EXACTPOS, DIR_SE), // 72 pre-helitakeoff helipad 1 AMD( 71, 56, AMED_EXACTPOS, DIR_NE), // 73 pre-helitakeoff helipad 2 AMD( 8, 120, AMED_HELI_RAISE, DIR_N ), // 74 Helitakeoff outside depot 1 AMD( 136, 104, AMED_HELI_RAISE, DIR_N ), // 75 Helitakeoff outside depot 2 AMD( 197, 168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 76 Fly to landing position in air1 }; /** Heliport (heliport). */ static const AirportMovingData _airport_moving_data_heliport[9] = { AMD( 5, 9, AMED_EXACTPOS, DIR_NE), // 0 - At heliport terminal AMD( 2, 9, AMED_HELI_RAISE, DIR_N ), // 1 - Take off (play sound) AMD( -3, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter AMD( -3, 9, AMED_HELI_LOWER, DIR_N ), // 3 - Land AMD( 2, 9, 0, DIR_N ), // 4 - Goto terminal on ground AMD( -31, 59, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #1 (north-east) AMD( -31, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #2 (north-west) AMD( 49, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - Circle #3 (south-west) AMD( 70, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - Circle #4 (south) }; /** HeliDepot 2x2 (heliport). */ static const AirportMovingData _airport_moving_data_helidepot[18] = { AMD( 24, 4, AMED_EXACTPOS, DIR_NE), // 0 - At depot AMD( 24, 28, 0, DIR_N ), // 1 Taxi to right outside depot AMD( 5, 38, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 Flying AMD( -15, -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 3 - Circle #1 (north-east) AMD( -15, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 4 - Circle #2 (north-west) AMD( 49, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #3 (south-west) AMD( 49, -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #4 (south-east) AMD( 8, 32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 7 - PreHelipad AMD( 8, 32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 8 - Helipad AMD( 8, 16, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 9 - Land AMD( 8, 16, AMED_HELI_LOWER, DIR_NW), // 10 - Land AMD( 8, 24, AMED_HELI_RAISE, DIR_N ), // 11 - Take off (play sound) AMD( 32, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 12 Air to above hangar area AMD( 32, 24, AMED_HELI_LOWER, DIR_NW), // 13 Taxi to right outside depot AMD( 8, 24, AMED_EXACTPOS, DIR_NW), // 14 - on helipad1 AMD( 24, 28, AMED_HELI_RAISE, DIR_N ), // 15 Takeoff right outside depot AMD( 8, 24, AMED_HELI_RAISE, DIR_SW), // 16 - Take off (play sound) AMD( 8, 24, AMED_SLOWTURN | AMED_EXACTPOS, DIR_E ), // 17 - turn on helipad1 for takeoff }; /** HeliDepot 2x2 (heliport). */ static const AirportMovingData _airport_moving_data_helistation[33] = { AMD( 8, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar2 AMD( 8, 22, 0, DIR_N ), // 01 outside hangar 2 AMD( 116, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 02 Fly to landing position in air AMD( 14, 22, AMED_HELI_RAISE, DIR_N ), // 03 Helitakeoff outside hangar1(play sound) AMD( 24, 22, 0, DIR_N ), // 04 taxiing AMD( 40, 22, 0, DIR_N ), // 05 taxiing AMD( 40, 8, AMED_EXACTPOS, DIR_NE), // 06 Helipad 1 AMD( 56, 8, AMED_EXACTPOS, DIR_NE), // 07 Helipad 2 AMD( 56, 24, AMED_EXACTPOS, DIR_NE), // 08 Helipad 3 AMD( 40, 8, AMED_EXACTPOS, DIR_N ), // 09 pre-helitakeoff helipad 1 AMD( 56, 8, AMED_EXACTPOS, DIR_N ), // 10 pre-helitakeoff helipad 2 AMD( 56, 24, AMED_EXACTPOS, DIR_N ), // 11 pre-helitakeoff helipad 3 AMD( 32, 8, AMED_HELI_RAISE, DIR_N ), // 12 Takeoff Helipad1 AMD( 48, 8, AMED_HELI_RAISE, DIR_N ), // 13 Takeoff Helipad2 AMD( 48, 24, AMED_HELI_RAISE, DIR_N ), // 14 Takeoff Helipad3 AMD( 84, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Bufferspace before helipad AMD( 68, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Bufferspace before helipad AMD( 32, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Get in position for Helipad1 AMD( 48, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Get in position for Helipad2 AMD( 48, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NE), // 19 Get in position for Helipad3 AMD( 40, 8, AMED_HELI_LOWER, DIR_N ), // 20 Land at Helipad1 AMD( 48, 8, AMED_HELI_LOWER, DIR_N ), // 21 Land at Helipad2 AMD( 48, 24, AMED_HELI_LOWER, DIR_N ), // 22 Land at Helipad3 AMD( 0, 22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Go to position for Hangarentrance in air AMD( 0, 22, AMED_HELI_LOWER, DIR_N ), // 24 Land in front of hangar AMD( 148, -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (south-east) AMD( 148, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Fly around waiting for a landing spot (south-west) AMD( 132, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Fly around waiting for a landing spot (south-west) AMD( 100, 24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Fly around waiting for a landing spot (north-east) AMD( 84, 8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Fly around waiting for a landing spot (south-east) AMD( 84, -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 30 Fly around waiting for a landing spot (south-west) AMD( 100, -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 31 Fly around waiting for a landing spot (north-west) AMD( 132, -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly around waiting for a landing spot (north-east) }; /** Oilrig. */ static const AirportMovingData _airport_moving_data_oilrig[9] = { AMD( 31, 9, AMED_EXACTPOS, DIR_NE), // 0 - At oilrig terminal AMD( 28, 9, AMED_HELI_RAISE, DIR_N ), // 1 - Take off (play sound) AMD( 23, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter AMD( 23, 9, AMED_HELI_LOWER, DIR_N ), // 3 - Land AMD( 28, 9, 0, DIR_N ), // 4 - Goto terminal on ground AMD( -31, 69, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - circle #1 (north-east) AMD( -31, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - circle #2 (north-west) AMD( 69, -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - circle #3 (south-west) AMD( 69, 9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - circle #4 (south) }; #undef AMD /////////////////////////////////////////////////////////////////////// /////**********Movement Machine on Airports*********************/////// static const byte _airport_entries_dummy[] = {0, 1, 2, 3}; static const AirportFTAbuildup _airport_fta_dummy[] = { { 0, 0, 0, 3}, { 1, 0, 0, 0}, { 2, 0, 0, 1}, { 3, 0, 0, 2}, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; /* First element of terminals 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 HangarTileTable _airport_depots_country[] = { {{3, 0}, DIR_SE, 0} }; static const byte _airport_terminal_country[] = {1, 2}; static const byte _airport_entries_country[] = {16, 15, 18, 17}; 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 }, { 2, TERM1, TERM1_block, 1 }, { 3, TERM2, TERM2_block, 5 }, { 4, 255, AIRPORT_BUSY_block, 0 }, { 4, TERM2, 0, 5 }, { 4, HANGAR, 0, 1 }, { 4, TAKEOFF, 0, 6 }, { 4, HELITAKEOFF, 0, 1 }, { 5, 255, AIRPORT_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, 0, 0, 4 }, { 6, 0, AIRPORT_BUSY_block, 7 }, /* takeoff */ { 7, TAKEOFF, AIRPORT_BUSY_block, 8 }, { 8, STARTTAKEOFF, NOTHING_block, 9 }, { 9, ENDTAKEOFF, NOTHING_block, 0 }, /* landing */ { 10, FLYING, NOTHING_block, 15 }, { 10, LANDING, 0, 11 }, { 10, HELILANDING, 0, 20 }, { 11, LANDING, AIRPORT_BUSY_block, 12 }, { 12, 0, AIRPORT_BUSY_block, 13 }, { 13, ENDLANDING, AIRPORT_BUSY_block, 14 }, { 13, TERM2, 0, 5 }, { 13, 0, 0, 14 }, { 14, 0, AIRPORT_BUSY_block, 1 }, /* In air */ { 15, 0, NOTHING_block, 16 }, { 16, 0, NOTHING_block, 17 }, { 17, 0, NOTHING_block, 18 }, { 18, 0, NOTHING_block, 10 }, { 19, HELITAKEOFF, NOTHING_block, 0 }, { 20, HELILANDING, AIRPORT_BUSY_block, 21 }, { 21, HELIENDLANDING, AIRPORT_BUSY_block, 1 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; static const HangarTileTable _airport_depots_commuter[] = { {{4, 0}, DIR_SE, 0} }; static const byte _airport_terminal_commuter[] = { 1, 3 }; static const byte _airport_entries_commuter[] = {22, 21, 24, 23}; static const AirportFTAbuildup _airport_fta_commuter[] = { { 0, HANGAR, NOTHING_block, 1 }, { 0, HELITAKEOFF, HELIPAD2_block, 1 }, { 0, 0, 0, 1 }, { 1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TAKEOFF, 0, 11 }, { 1, TERM1, TAXIWAY_BUSY_block, 10 }, { 1, TERM2, TAXIWAY_BUSY_block, 10 }, { 1, TERM3, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD1, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD2, TAXIWAY_BUSY_block, 10 }, { 1, HELITAKEOFF, TAXIWAY_BUSY_block, 10 }, { 1, 0, 0, 0 }, { 2, 255, AIRPORT_ENTRANCE_block, 2 }, { 2, HANGAR, 0, 8 }, { 2, TERM1, 0, 8 }, { 2, TERM2, 0, 8 }, { 2, TERM3, 0, 8 }, { 2, HELIPAD1, 0, 8 }, { 2, HELIPAD2, 0, 8 }, { 2, HELITAKEOFF, 0, 8 }, { 2, 0, 0, 2 }, { 3, TERM1, TERM1_block, 8 }, { 3, HANGAR, 0, 8 }, { 3, TAKEOFF, 0, 8 }, { 3, 0, 0, 3 }, { 4, TERM2, TERM2_block, 9 }, { 4, HANGAR, 0, 9 }, { 4, TAKEOFF, 0, 9 }, { 4, 0, 0, 4 }, { 5, TERM3, TERM3_block, 10 }, { 5, HANGAR, 0, 10 }, { 5, TAKEOFF, 0, 10 }, { 5, 0, 0, 5 }, { 6, HELIPAD1, HELIPAD1_block, 6 }, { 6, HANGAR, TAXIWAY_BUSY_block, 9 }, { 6, HELITAKEOFF, 0, 35 }, { 7, HELIPAD2, HELIPAD2_block, 7 }, { 7, HANGAR, TAXIWAY_BUSY_block, 10 }, { 7, HELITAKEOFF, 0, 36 }, { 8, 255, TAXIWAY_BUSY_block, 8 }, { 8, TAKEOFF, TAXIWAY_BUSY_block, 9 }, { 8, HANGAR, TAXIWAY_BUSY_block, 9 }, { 8, TERM1, TERM1_block, 3 }, { 8, 0, TAXIWAY_BUSY_block, 9 }, { 9, 255, TAXIWAY_BUSY_block, 9 }, { 9, TAKEOFF, TAXIWAY_BUSY_block, 10 }, { 9, HANGAR, TAXIWAY_BUSY_block, 10 }, { 9, TERM2, TERM2_block, 4 }, { 9, HELIPAD1, HELIPAD1_block, 6 }, { 9, HELITAKEOFF, HELIPAD1_block, 6 }, { 9, TERM1, TAXIWAY_BUSY_block, 8 }, { 9, 0, TAXIWAY_BUSY_block, 10 }, { 10, 255, TAXIWAY_BUSY_block, 10 }, { 10, TERM3, TERM3_block, 5 }, { 10, HELIPAD1, 0, 9 }, { 10, HELIPAD2, HELIPAD2_block, 7 }, { 10, HELITAKEOFF, HELIPAD2_block, 7 }, { 10, TAKEOFF, TAXIWAY_BUSY_block, 1 }, { 10, HANGAR, TAXIWAY_BUSY_block, 1 }, { 10, 0, TAXIWAY_BUSY_block, 9 }, { 11, 0, OUT_WAY_block, 12 }, /* takeoff */ { 12, TAKEOFF, RUNWAY_IN_OUT_block, 13 }, { 13, 0, RUNWAY_IN_OUT_block, 14 }, { 14, STARTTAKEOFF, RUNWAY_IN_OUT_block, 15 }, { 15, ENDTAKEOFF, NOTHING_block, 0 }, /* landing */ { 16, FLYING, NOTHING_block, 21 }, { 16, LANDING, IN_WAY_block, 17 }, { 16, HELILANDING, 0, 25 }, { 17, LANDING, RUNWAY_IN_OUT_block, 18 }, { 18, 0, RUNWAY_IN_OUT_block, 19 }, { 19, 0, RUNWAY_IN_OUT_block, 20 }, { 20, ENDLANDING, IN_WAY_block, 2 }, /* In Air */ { 21, 0, NOTHING_block, 22 }, { 22, 0, NOTHING_block, 23 }, { 23, 0, NOTHING_block, 24 }, { 24, 0, NOTHING_block, 16 }, /* Helicopter -- stay in air in special place as a buffer to choose from helipads */ { 25, HELILANDING, PRE_HELIPAD_block, 26 }, { 26, HELIENDLANDING, PRE_HELIPAD_block, 26 }, { 26, HELIPAD1, 0, 27 }, { 26, HELIPAD2, 0, 28 }, { 26, HANGAR, 0, 33 }, { 27, 0, NOTHING_block, 29 }, // helipad1 approach { 28, 0, NOTHING_block, 30 }, /* landing */ { 29, 255, NOTHING_block, 0 }, { 29, HELIPAD1, HELIPAD1_block, 6 }, { 30, 255, NOTHING_block, 0 }, { 30, HELIPAD2, HELIPAD2_block, 7 }, /* Helicopter -- takeoff */ { 31, HELITAKEOFF, NOTHING_block, 0 }, { 32, HELITAKEOFF, NOTHING_block, 0 }, { 33, 0, TAXIWAY_BUSY_block, 34 }, // need to go to hangar when waiting in air { 34, 0, TAXIWAY_BUSY_block, 1 }, { 35, 0, HELIPAD1_block, 31 }, { 36, 0, HELIPAD2_block, 32 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; static const HangarTileTable _airport_depots_city[] = { {{5, 0}, DIR_SE, 0} }; static const byte _airport_terminal_city[] = { 1, 3 }; static const byte _airport_entries_city[] = {26, 29, 27, 28}; 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 { 2, TERM1, TERM1_block, 7 }, { 2, TAKEOFF, OUT_WAY_block, 7 }, { 2, 0, 0, 7 }, { 3, TERM2, TERM2_block, 5 }, { 3, TAKEOFF, OUT_WAY_block, 6 }, { 3, 0, 0, 6 }, { 4, TERM3, TERM3_block, 5 }, { 4, TAKEOFF, OUT_WAY_block, 5 }, { 4, 0, 0, 5 }, { 5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 }, { 6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 }, { 7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, OUT_WAY_block, 8 }, { 7, HELITAKEOFF, 0, 22 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 }, { 8, 0, OUT_WAY_block, 9 }, { 9, 0, RUNWAY_IN_OUT_block, 10 }, /* takeoff */ { 10, TAKEOFF, RUNWAY_IN_OUT_block, 11 }, { 11, STARTTAKEOFF, NOTHING_block, 12 }, { 12, ENDTAKEOFF, NOTHING_block, 0 }, /* landing */ { 13, FLYING, NOTHING_block, 18 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 23 }, { 14, LANDING, RUNWAY_IN_OUT_block, 15 }, { 15, 0, RUNWAY_IN_OUT_block, 17 }, { 16, 0, RUNWAY_IN_OUT_block, 17 }, // not used, left for compatibility { 17, ENDLANDING, IN_WAY_block, 7 }, /* In Air */ { 18, 0, NOTHING_block, 25 }, { 19, 0, NOTHING_block, 20 }, { 20, 0, NOTHING_block, 21 }, { 21, 0, NOTHING_block, 13 }, /* helicopter */ { 22, HELITAKEOFF, NOTHING_block, 0 }, { 23, HELILANDING, IN_WAY_block, 24 }, { 24, HELIENDLANDING, IN_WAY_block, 17 }, { 25, 0, NOTHING_block, 20}, { 26, 0, NOTHING_block, 19}, { 27, 0, NOTHING_block, 28}, { 28, 0, NOTHING_block, 19}, { 29, 0, NOTHING_block, 26}, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; static const HangarTileTable _airport_depots_metropolitan[] = { {{5, 0}, DIR_SE, 0} }; static const byte _airport_terminal_metropolitan[] = { 1, 3 }; static const byte _airport_entries_metropolitan[] = {20, 19, 22, 21}; 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 { 2, TERM1, TERM1_block, 7 }, { 3, TERM2, TERM2_block, 6 }, { 4, TERM3, TERM3_block, 5 }, { 5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 }, { 6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 }, { 7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, 0, 8 }, { 7, HELITAKEOFF, 0, 23 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 }, { 8, 0, OUT_WAY_block, 9 }, { 9, 0, RUNWAY_OUT_block, 10 }, /* takeoff */ { 10, TAKEOFF, RUNWAY_OUT_block, 11 }, { 11, STARTTAKEOFF, NOTHING_block, 12 }, { 12, ENDTAKEOFF, NOTHING_block, 0 }, /* landing */ { 13, FLYING, NOTHING_block, 19 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 25 }, { 14, LANDING, RUNWAY_IN_block, 15 }, { 15, 0, RUNWAY_IN_block, 16 }, { 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 }, { 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 }, { 18, ENDLANDING, IN_WAY_block, 27 }, /* In Air */ { 19, 0, NOTHING_block, 20 }, { 20, 0, NOTHING_block, 21 }, { 21, 0, NOTHING_block, 22 }, { 22, 0, NOTHING_block, 13 }, /* helicopter */ { 23, 0, NOTHING_block, 24 }, { 24, HELITAKEOFF, NOTHING_block, 0 }, { 25, HELILANDING, IN_WAY_block, 26 }, { 26, HELIENDLANDING, IN_WAY_block, 18 }, { 27, 255, TAXIWAY_BUSY_block, 27 }, { 27, TERM1, TERM1_block, 2 }, { 27, 0, 0, 7 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; static const HangarTileTable _airport_depots_international[] = { {{0, 3}, DIR_SE, 0}, {{6, 1}, DIR_SE, 1} }; static const byte _airport_terminal_international[] = { 2, 3, 3 }; static const byte _airport_entries_international[] = { 38, 37, 40, 39 }; 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 }, { 2, 255, AIRPORT_ENTRANCE_block, 0 }, { 2, HANGAR, 0, 0 }, { 2, TERM4, 0, 12 }, { 2, TERM5, 0, 12 }, { 2, TERM6, 0, 12 }, { 2, HELIPAD1, 0, 12 }, { 2, HELIPAD2, 0, 12 }, { 2, HELITAKEOFF, 0, 12 }, { 2, 0, 0, 23 }, { 3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, 0, 0, 18 }, { 4, TERM1, TERM1_block, 23 }, { 4, HANGAR, AIRPORT_ENTRANCE_block, 23 }, { 4, 0, 0, 23 }, { 5, TERM2, TERM2_block, 24 }, { 5, HANGAR, AIRPORT_ENTRANCE_block, 24 }, { 5, 0, 0, 24 }, { 6, TERM3, TERM3_block, 25 }, { 6, HANGAR, AIRPORT_ENTRANCE_block, 25 }, { 6, 0, 0, 25 }, { 7, TERM4, TERM4_block, 16 }, { 7, HANGAR, HANGAR2_AREA_block, 16 }, { 7, 0, 0, 16 }, { 8, TERM5, TERM5_block, 17 }, { 8, HANGAR, HANGAR2_AREA_block, 17 }, { 8, 0, 0, 17 }, { 9, TERM6, TERM6_block, 18 }, { 9, HANGAR, HANGAR2_AREA_block, 18 }, { 9, 0, 0, 18 }, { 10, HELIPAD1, HELIPAD1_block, 10 }, { 10, HANGAR, HANGAR2_AREA_block, 16 }, { 10, HELITAKEOFF, 0, 47 }, { 11, HELIPAD2, HELIPAD2_block, 11 }, { 11, HANGAR, HANGAR2_AREA_block, 17 }, { 11, HELITAKEOFF, 0, 48 }, { 12, 0, TERM_GROUP2_ENTER1_block, 13 }, { 13, 0, TERM_GROUP2_ENTER1_block, 14 }, { 14, 0, TERM_GROUP2_ENTER2_block, 15 }, { 15, 0, TERM_GROUP2_ENTER2_block, 16 }, { 16, 255, TERM_GROUP2_block, 0 }, { 16, TERM4, TERM4_block, 7 }, { 16, HELIPAD1, HELIPAD1_block, 10 }, { 16, HELITAKEOFF, HELIPAD1_block, 10 }, { 16, 0, 0, 17 }, { 17, 255, TERM_GROUP2_block, 0 }, { 17, TERM5, TERM5_block, 8 }, { 17, TERM4, 0, 16 }, { 17, HELIPAD1, 0, 16 }, { 17, HELIPAD2, HELIPAD2_block, 11 }, { 17, HELITAKEOFF, HELIPAD2_block, 11 }, { 17, 0, 0, 18 }, { 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM6, TERM6_block, 9 }, { 18, TAKEOFF, 0, 19 }, { 18, HANGAR, HANGAR2_AREA_block, 3 }, { 18, 0, 0, 17 }, { 19, 0, TERM_GROUP2_EXIT1_block, 20 }, { 20, 0, TERM_GROUP2_EXIT1_block, 21 }, { 21, 0, TERM_GROUP2_EXIT2_block, 22 }, { 22, 0, TERM_GROUP2_EXIT2_block, 26 }, { 23, 255, TERM_GROUP1_block, 0 }, { 23, TERM1, TERM1_block, 4 }, { 23, HANGAR, AIRPORT_ENTRANCE_block, 2 }, { 23, 0, 0, 24 }, { 24, 255, TERM_GROUP1_block, 0 }, { 24, TERM2, TERM2_block, 5 }, { 24, TERM1, 0, 23 }, { 24, HANGAR, 0, 23 }, { 24, 0, 0, 25 }, { 25, 255, TERM_GROUP1_block, 0 }, { 25, TERM3, TERM3_block, 6 }, { 25, TAKEOFF, 0, 26 }, { 25, 0, 0, 24 }, { 26, 255, TAXIWAY_BUSY_block, 0 }, { 26, TAKEOFF, 0, 27 }, { 26, 0, 0, 25 }, { 27, 0, OUT_WAY_block, 28 }, /* takeoff */ { 28, TAKEOFF, OUT_WAY_block, 29 }, { 29, 0, RUNWAY_OUT_block, 30 }, { 30, STARTTAKEOFF, NOTHING_block, 31 }, { 31, ENDTAKEOFF, NOTHING_block, 0 }, /* landing */ { 32, FLYING, NOTHING_block, 37 }, { 32, LANDING, 0, 33 }, { 32, HELILANDING, 0, 41 }, { 33, LANDING, RUNWAY_IN_block, 34 }, { 34, 0, RUNWAY_IN_block, 35 }, { 35, 0, RUNWAY_IN_block, 36 }, { 36, ENDLANDING, IN_WAY_block, 36 }, { 36, 255, TERM_GROUP1_block, 0 }, { 36, 255, TERM_GROUP2_ENTER1_block, 1 }, { 36, TERM4, 0, 12 }, { 36, TERM5, 0, 12 }, { 36, TERM6, 0, 12 }, { 36, 0, 0, 2 }, /* In Air */ { 37, 0, NOTHING_block, 38 }, { 38, 0, NOTHING_block, 39 }, { 39, 0, NOTHING_block, 40 }, { 40, 0, NOTHING_block, 32 }, /* Helicopter -- stay in air in special place as a buffer to choose from helipads */ { 41, HELILANDING, PRE_HELIPAD_block, 42 }, { 42, HELIENDLANDING, PRE_HELIPAD_block, 42 }, { 42, HELIPAD1, 0, 43 }, { 42, HELIPAD2, 0, 44 }, { 42, HANGAR, 0, 49 }, { 43, 0, NOTHING_block, 45 }, { 44, 0, NOTHING_block, 46 }, /* landing */ { 45, 255, NOTHING_block, 0 }, { 45, HELIPAD1, HELIPAD1_block, 10 }, { 46, 255, NOTHING_block, 0 }, { 46, HELIPAD2, HELIPAD2_block, 11 }, /* Helicopter -- takeoff */ { 47, HELITAKEOFF, NOTHING_block, 0 }, { 48, HELITAKEOFF, NOTHING_block, 0 }, { 49, 0, HANGAR2_AREA_block, 50 }, // need to go to hangar when waiting in air { 50, 0, HANGAR2_AREA_block, 3 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; /* intercontinental */ static const HangarTileTable _airport_depots_intercontinental[] = { {{0, 5}, DIR_SE, 0}, {{8, 4}, DIR_SE, 1} }; static const byte _airport_terminal_intercontinental[] = { 2, 4, 4 }; static const byte _airport_entries_intercontinental[] = { 44, 43, 46, 45 }; static const AirportFTAbuildup _airport_fta_intercontinental[] = { { 0, HANGAR, NOTHING_block, 2 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 0 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 1 }, { 0, TAKEOFF, HANGAR1_AREA_block | TERM_GROUP1_block, 2 }, { 0, 0, 0, 2 }, { 1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, 0, 0, 3 }, { 2, 255, HANGAR1_AREA_block, 0 }, { 2, 255, TERM_GROUP1_block, 0 }, { 2, 255, TERM_GROUP1_block, 1 }, { 2, HANGAR, 0, 0 }, { 2, TAKEOFF, TERM_GROUP1_block, 27 }, { 2, TERM5, 0, 26 }, { 2, TERM6, 0, 26 }, { 2, TERM7, 0, 26 }, { 2, TERM8, 0, 26 }, { 2, HELIPAD1, 0, 26 }, { 2, HELIPAD2, 0, 26 }, { 2, HELITAKEOFF, 0, 74 }, { 2, 0, 0, 27 }, { 3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, HELITAKEOFF, 0, 75 }, {3, TAKEOFF, 0, 59}, { 3, 0, 0, 20 }, { 4, TERM1, TERM1_block, 26 }, { 4, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 26 }, { 4, 0, 0, 26 }, { 5, TERM2, TERM2_block, 27 }, { 5, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 27 }, { 5, 0, 0, 27 }, { 6, TERM3, TERM3_block, 28 }, { 6, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 28 }, { 6, 0, 0, 28 }, { 7, TERM4, TERM4_block, 29 }, { 7, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 7, 0, 0, 29 }, { 8, TERM5, TERM5_block, 18 }, { 8, HANGAR, HANGAR2_AREA_block, 18 }, { 8, 0, 0, 18 }, { 9, TERM6, TERM6_block, 19 }, { 9, HANGAR, HANGAR2_AREA_block, 19 }, { 9, 0, 0, 19 }, { 10, TERM7, TERM7_block, 20 }, { 10, HANGAR, HANGAR2_AREA_block, 20 }, { 10, 0, 0, 20 }, { 11, TERM8, TERM8_block, 21 }, { 11, HANGAR, HANGAR2_AREA_block, 21 }, { 11, 0, 0, 21 }, { 12, HELIPAD1, HELIPAD1_block, 12 }, { 12, HANGAR, 0, 70 }, { 12, HELITAKEOFF, 0, 72 }, { 13, HELIPAD2, HELIPAD2_block, 13 }, { 13, HANGAR, 0, 71 }, { 13, HELITAKEOFF, 0, 73 }, { 14, 0, TERM_GROUP2_ENTER1_block, 15 }, { 15, 0, TERM_GROUP2_ENTER1_block, 16 }, { 16, 0, TERM_GROUP2_ENTER2_block, 17 }, { 17, 0, TERM_GROUP2_ENTER2_block, 18 }, { 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM5, TERM5_block, 8 }, { 18, TAKEOFF, 0, 19 }, { 18, HELITAKEOFF, HELIPAD1_block, 19 }, { 18, 0, TERM_GROUP2_EXIT1_block, 19 }, { 19, 255, TERM_GROUP2_block, 0 }, { 19, TERM6, TERM6_block, 9 }, { 19, TERM5, 0, 18 }, { 19, TAKEOFF, 0, 57 }, { 19, HELITAKEOFF, HELIPAD1_block, 20 }, { 19, 0, TERM_GROUP2_EXIT1_block, 20 }, // add exit to runway out 2 { 20, 255, TERM_GROUP2_block, 0 }, { 20, TERM7, TERM7_block, 10 }, { 20, TERM5, 0, 19 }, { 20, TERM6, 0, 19 }, { 20, HANGAR, HANGAR2_AREA_block, 3 }, { 20, TAKEOFF, 0, 19 }, { 20, 0, TERM_GROUP2_EXIT1_block, 21 }, { 21, 255, TERM_GROUP2_block, 0 }, { 21, TERM8, TERM8_block, 11 }, { 21, HANGAR, HANGAR2_AREA_block, 20 }, { 21, TERM5, 0, 20 }, { 21, TERM6, 0, 20 }, { 21, TERM7, 0, 20 }, { 21, TAKEOFF, 0, 20 }, { 21, 0, TERM_GROUP2_EXIT1_block, 22 }, { 22, 255, TERM_GROUP2_block, 0 }, { 22, HANGAR, 0, 21 }, { 22, TERM5, 0, 21 }, { 22, TERM6, 0, 21 }, { 22, TERM7, 0, 21 }, { 22, TERM8, 0, 21 }, { 22, TAKEOFF, 0, 21 }, { 22, 0, 0, 23 }, { 23, 0, TERM_GROUP2_EXIT1_block, 70 }, { 24, 0, TERM_GROUP2_EXIT2_block, 25 }, { 25, 255, TERM_GROUP2_EXIT2_block, 0 }, { 25, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 25, 0, 0, 29 }, { 26, 255, TERM_GROUP1_block, 0 }, { 26, TERM1, TERM1_block, 4 }, { 26, HANGAR, HANGAR1_AREA_block, 27 }, { 26, TERM5, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM6, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM7, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM8, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD1, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD2, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELITAKEOFF, TERM_GROUP2_ENTER1_block, 14 }, { 26, 0, 0, 27 }, { 27, 255, TERM_GROUP1_block, 0 }, { 27, TERM2, TERM2_block, 5 }, { 27, HANGAR, HANGAR1_AREA_block, 2 }, { 27, TERM1, 0, 26 }, { 27, TERM5, 0, 26 }, { 27, TERM6, 0, 26 }, { 27, TERM7, 0, 26 }, { 27, TERM8, 0, 26 }, { 27, HELIPAD1, 0, 14 }, { 27, HELIPAD2, 0, 14 }, { 27, 0, 0, 28 }, { 28, 255, TERM_GROUP1_block, 0 }, { 28, TERM3, TERM3_block, 6 }, { 28, HANGAR, HANGAR1_AREA_block, 27 }, { 28, TERM1, 0, 27 }, { 28, TERM2, 0, 27 }, { 28, TERM4, 0, 29 }, { 28, TERM5, 0, 14 }, { 28, TERM6, 0, 14 }, { 28, TERM7, 0, 14 }, { 28, TERM8, 0, 14 }, { 28, HELIPAD1, 0, 14 }, { 28, HELIPAD2, 0, 14 }, { 28, 0, 0, 29 }, { 29, 255, TERM_GROUP1_block, 0 }, { 29, TERM4, TERM4_block, 7 }, { 29, HANGAR, HANGAR1_AREA_block, 27 }, { 29, TAKEOFF, 0, 30 }, { 29, 0, 0, 28 }, { 30, 0, OUT_WAY_block2, 31 }, { 31, 0, OUT_WAY_block, 32 }, /* takeoff */ { 32, TAKEOFF, RUNWAY_OUT_block, 33 }, { 33, 0, RUNWAY_OUT_block, 34 }, { 34, STARTTAKEOFF, NOTHING_block, 35 }, { 35, ENDTAKEOFF, NOTHING_block, 0 }, /* landing */ { 36, 0, 0, 0 }, { 37, LANDING, RUNWAY_IN_block, 38 }, { 38, 0, RUNWAY_IN_block, 39 }, { 39, 0, RUNWAY_IN_block, 40 }, { 40, ENDLANDING, RUNWAY_IN_block, 41 }, { 41, 0, IN_WAY_block, 42 }, { 42, 255, IN_WAY_block, 0 }, { 42, 255, TERM_GROUP1_block, 0 }, { 42, 255, TERM_GROUP1_block, 1 }, { 42, HANGAR, 0, 2 }, { 42, 0, 0, 26 }, /* In Air */ { 43, 0, 0, 44 }, { 44, FLYING, 0, 45 }, { 44, HELILANDING, 0, 47 }, { 44, LANDING, 0, 69 }, { 44, 0, 0, 45 }, { 45, 0, 0, 46 }, { 46, FLYING, 0, 43 }, { 46, LANDING, 0, 76 }, { 46, 0, 0, 43 }, /* Helicopter -- stay in air in special place as a buffer to choose from helipads */ { 47, HELILANDING, PRE_HELIPAD_block, 48 }, { 48, HELIENDLANDING, PRE_HELIPAD_block, 48 }, { 48, HELIPAD1, 0, 49 }, { 48, HELIPAD2, 0, 50 }, { 48, HANGAR, 0, 55 }, { 49, 0, NOTHING_block, 51 }, { 50, 0, NOTHING_block, 52 }, /* landing */ { 51, 255, NOTHING_block, 0 }, { 51, HELIPAD1, HELIPAD1_block, 12 }, { 51, HANGAR, 0, 55 }, { 51, 0, 0, 12 }, { 52, 255, NOTHING_block, 0 }, { 52, HELIPAD2, HELIPAD2_block, 13 }, { 52, HANGAR, 0, 55 }, { 52, 0, 0, 13 }, /* Helicopter -- takeoff */ { 53, HELITAKEOFF, NOTHING_block, 0 }, { 54, HELITAKEOFF, NOTHING_block, 0 }, { 55, 0, HANGAR2_AREA_block, 56 }, // need to go to hangar when waiting in air { 56, 0, HANGAR2_AREA_block, 3 }, /* runway 2 out support */ { 57, 255, OUT_WAY2_block, 0 }, { 57, TAKEOFF, 0, 58 }, { 57, 0, 0, 58 }, { 58, 0, OUT_WAY2_block, 59 }, { 59, TAKEOFF, RUNWAY_OUT2_block, 60 }, // takeoff { 60, 0, RUNWAY_OUT2_block, 61 }, { 61, STARTTAKEOFF, NOTHING_block, 62 }, { 62, ENDTAKEOFF, NOTHING_block, 0 }, /* runway 2 in support */ { 63, LANDING, RUNWAY_IN2_block, 64 }, { 64, 0, RUNWAY_IN2_block, 65 }, { 65, 0, RUNWAY_IN2_block, 66 }, { 66, ENDLANDING, RUNWAY_IN2_block, 0 }, { 66, 255, 0, 1 }, { 66, 255, 0, 0 }, { 66, 0, 0, 67 }, { 67, 0, IN_WAY2_block, 68 }, { 68, 255, IN_WAY2_block, 0 }, { 68, 255, TERM_GROUP2_block, 1 }, { 68, 255, TERM_GROUP1_block, 0 }, { 68, HANGAR, HANGAR2_AREA_block, 22 }, { 68, 0, 0, 22 }, { 69, 255, RUNWAY_IN2_block, 0 }, { 69, 0, RUNWAY_IN2_block, 63 }, { 70, 255, TERM_GROUP2_EXIT1_block, 0 }, { 70, HELIPAD1, HELIPAD1_block, 12 }, { 70, HELITAKEOFF, HELIPAD1_block, 12 }, { 70, 0, 0, 71 }, { 71, 255, TERM_GROUP2_EXIT1_block, 0 }, { 71, HELIPAD2, HELIPAD2_block, 13 }, { 71, HELITAKEOFF, HELIPAD1_block, 12 }, { 71, 0, 0, 24 }, { 72, 0, HELIPAD1_block, 53 }, { 73, 0, HELIPAD2_block, 54 }, { 74, HELITAKEOFF, NOTHING_block, 0 }, { 75, HELITAKEOFF, NOTHING_block, 0 }, { 76, 255, RUNWAY_IN_block, 0 }, { 76, 0, RUNWAY_IN_block, 37 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; /* heliports, oilrigs don't have depots */ static const byte _airport_entries_heliport[] = { 7, 7, 7, 7 }; static const AirportFTAbuildup _airport_fta_heliport[] = { { 0, HELIPAD1, HELIPAD1_block, 1 }, { 1, HELITAKEOFF, NOTHING_block, 0 }, // takeoff { 2, 255, AIRPORT_BUSY_block, 0 }, { 2, HELILANDING, 0, 3 }, { 2, HELITAKEOFF, 0, 1 }, { 3, HELILANDING, AIRPORT_BUSY_block, 4 }, { 4, HELIENDLANDING, AIRPORT_BUSY_block, 4 }, { 4, HELIPAD1, HELIPAD1_block, 0 }, { 4, HELITAKEOFF, 0, 2 }, /* In Air */ { 5, 0, NOTHING_block, 6 }, { 6, 0, NOTHING_block, 7 }, { 7, 0, NOTHING_block, 8 }, { 8, FLYING, NOTHING_block, 5 }, { 8, HELILANDING, HELIPAD1_block, 2 }, // landing { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; #define _airport_entries_oilrig _airport_entries_heliport #define _airport_fta_oilrig _airport_fta_heliport /* helidepots */ static const HangarTileTable _airport_depots_helidepot[] = { {{1, 0}, DIR_SE, 0} }; static const byte _airport_entries_helidepot[] = { 4, 4, 4, 4 }; static const AirportFTAbuildup _airport_fta_helidepot[] = { { 0, HANGAR, NOTHING_block, 1 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELIPAD1, HELIPAD1_block, 14 }, { 1, HELITAKEOFF, 0, 15 }, { 1, 0, 0, 0 }, { 2, FLYING, NOTHING_block, 3 }, { 2, HELILANDING, PRE_HELIPAD_block, 7 }, { 2, HANGAR, 0, 12 }, { 2, HELITAKEOFF, NOTHING_block, 16 }, /* In Air */ { 3, 0, NOTHING_block, 4 }, { 4, 0, NOTHING_block, 5 }, { 5, 0, NOTHING_block, 6 }, { 6, 0, NOTHING_block, 2 }, /* Helicopter -- stay in air in special place as a buffer to choose from helipads */ { 7, HELILANDING, PRE_HELIPAD_block, 8 }, { 8, HELIENDLANDING, PRE_HELIPAD_block, 8 }, { 8, HELIPAD1, 0, 9 }, { 8, HANGAR, 0, 12 }, { 8, 0, 0, 2 }, { 9, 0, NOTHING_block, 10 }, /* landing */ { 10, 255, NOTHING_block, 10 }, { 10, HELIPAD1, HELIPAD1_block, 14 }, { 10, HANGAR, 0, 1 }, { 10, 0, 0, 14 }, /* Helicopter -- takeoff */ { 11, HELITAKEOFF, NOTHING_block, 0 }, { 12, 0, HANGAR2_AREA_block, 13 }, // need to go to hangar when waiting in air { 13, 0, HANGAR2_AREA_block, 1 }, { 14, HELIPAD1, HELIPAD1_block, 14 }, { 14, HANGAR, 0, 1 }, { 14, HELITAKEOFF, 0, 17 }, { 15, HELITAKEOFF, NOTHING_block, 0 }, // takeoff outside depot { 16, HELITAKEOFF, 0, 14 }, { 17, 0, NOTHING_block, 11 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; /* helistation */ static const HangarTileTable _airport_depots_helistation[] = { {{0, 0}, DIR_SE, 0} }; static const byte _airport_entries_helistation[] = { 25, 25, 25, 25 }; static const AirportFTAbuildup _airport_fta_helistation[] = { { 0, HANGAR, NOTHING_block, 8 }, { 0, HELIPAD1, 0, 1 }, { 0, HELIPAD2, 0, 1 }, { 0, HELIPAD3, 0, 1 }, { 0, HELITAKEOFF, 0, 1 }, { 0, 0, 0, 0 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELITAKEOFF, 0, 3 }, { 1, 0, 0, 4 }, /* landing */ { 2, FLYING, NOTHING_block, 28 }, { 2, HELILANDING, 0, 15 }, { 2, 0, 0, 28 }, /* helicopter side */ { 3, HELITAKEOFF, NOTHING_block, 0 }, // helitakeoff outside hangar2 { 4, 255, TAXIWAY_BUSY_block, 0 }, { 4, HANGAR, HANGAR2_AREA_block, 1 }, { 4, HELITAKEOFF, 0, 1 }, { 4, 0, 0, 5 }, { 5, 255, TAXIWAY_BUSY_block, 0 }, { 5, HELIPAD1, HELIPAD1_block, 6 }, { 5, HELIPAD2, HELIPAD2_block, 7 }, { 5, HELIPAD3, HELIPAD3_block, 8 }, { 5, 0, 0, 4 }, { 6, HELIPAD1, HELIPAD1_block, 5 }, { 6, HANGAR, HANGAR2_AREA_block, 5 }, { 6, HELITAKEOFF, 0, 9 }, { 6, 0, 0, 6 }, { 7, HELIPAD2, HELIPAD2_block, 5 }, { 7, HANGAR, HANGAR2_AREA_block, 5 }, { 7, HELITAKEOFF, 0, 10 }, { 7, 0, 0, 7 }, { 8, HELIPAD3, HELIPAD3_block, 5 }, { 8, HANGAR, HANGAR2_AREA_block, 5 }, { 8, HELITAKEOFF, 0, 11 }, { 8, 0, 0, 8 }, { 9, 0, HELIPAD1_block, 12 }, { 10, 0, HELIPAD2_block, 13 }, { 11, 0, HELIPAD3_block, 14 }, { 12, HELITAKEOFF, NOTHING_block, 0 }, { 13, HELITAKEOFF, NOTHING_block, 0 }, { 14, HELITAKEOFF, NOTHING_block, 0 }, /* heli - in flight moves */ { 15, HELILANDING, PRE_HELIPAD_block, 16 }, { 16, HELIENDLANDING, PRE_HELIPAD_block, 16 }, { 16, HELIPAD1, 0, 17 }, { 16, HELIPAD2, 0, 18 }, { 16, HELIPAD3, 0, 19 }, { 16, HANGAR, 0, 23 }, { 17, 0, NOTHING_block, 20 }, { 18, 0, NOTHING_block, 21 }, { 19, 0, NOTHING_block, 22 }, /* heli landing */ { 20, 255, NOTHING_block, 0 }, { 20, HELIPAD1, HELIPAD1_block, 6 }, { 20, HANGAR, 0, 23 }, { 20, 0, 0, 6 }, { 21, 255, NOTHING_block, 0 }, { 21, HELIPAD2, HELIPAD2_block, 7 }, { 21, HANGAR, 0, 23 }, { 21, 0, 0, 7 }, { 22, 255, NOTHING_block, 0 }, { 22, HELIPAD3, HELIPAD3_block, 8 }, { 22, HANGAR, 0, 23 }, { 22, 0, 0, 8 }, { 23, 0, HANGAR2_AREA_block, 24 }, // need to go to helihangar when waiting in air { 24, 0, HANGAR2_AREA_block, 1 }, { 25, 0, NOTHING_block, 26 }, { 26, 0, NOTHING_block, 27 }, { 27, 0, NOTHING_block, 2 }, { 28, 0, NOTHING_block, 29 }, { 29, 0, NOTHING_block, 30 }, { 30, 0, NOTHING_block, 31 }, { 31, 0, NOTHING_block, 32 }, { 32, 0, NOTHING_block, 25 }, { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; #endif /* AIRPORT_MOVEMENT_H */ openttd-1.3.3/src/table/animcursors.h0000644000000000000000000000602512246102566016274 0ustar rootroot/* $Id: animcursors.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file animcursors.h * This file defines all the the animated cursors. * Animated cursors consist of the number of sprites that are * displayed in a round-robin manner. Each sprite also has a time * associated that indicates how many ticks the corresponding sprite * is to be displayed. */ /** * Creates two array entries that define one * status of the cursor. * @param Sprite The Sprite to be displayed * @param display_time The Number of ticks to display the sprite */ #define ANIM_CURSOR_LINE(Sprite, display_time) { Sprite, display_time }, /** * This indicates the termination of the cursor list */ #define ANIM_CURSOR_END() ANIM_CURSOR_LINE(AnimCursor::LAST, 0) /** * Animated cursor elements for demolition */ static const AnimCursor _demolish_animcursor[] = { ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_FIRST, 8) ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_1, 8) ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_2, 8) ANIM_CURSOR_LINE(SPR_CURSOR_DEMOLISH_LAST, 8) ANIM_CURSOR_END() }; /** * Animated cursor elements for lower land */ static const AnimCursor _lower_land_animcursor[] = { ANIM_CURSOR_LINE(SPR_CURSOR_LOWERLAND_FIRST, 10) ANIM_CURSOR_LINE(SPR_CURSOR_LOWERLAND_1, 10) ANIM_CURSOR_LINE(SPR_CURSOR_LOWERLAND_LAST, 29) ANIM_CURSOR_END() }; /** * Animated cursor elements for raise land */ static const AnimCursor _raise_land_animcursor[] = { ANIM_CURSOR_LINE(SPR_CURSOR_RAISELAND_FIRST, 10) ANIM_CURSOR_LINE(SPR_CURSOR_RAISELAND_1, 10) ANIM_CURSOR_LINE(SPR_CURSOR_RAISELAND_LAST, 29) ANIM_CURSOR_END() }; /** * Animated cursor elements for the goto icon */ static const AnimCursor _order_goto_animcursor[] = { ANIM_CURSOR_LINE(SPR_CURSOR_PICKSTATION_FIRST, 10) ANIM_CURSOR_LINE(SPR_CURSOR_PICKSTATION_1, 10) ANIM_CURSOR_LINE(SPR_CURSOR_PICKSTATION_LAST, 29) ANIM_CURSOR_END() }; /** * Animated cursor elements for the build signal icon */ static const AnimCursor _build_signals_animcursor[] = { ANIM_CURSOR_LINE(SPR_CURSOR_BUILDSIGNALS_FIRST, 20) ANIM_CURSOR_LINE(SPR_CURSOR_BUILDSIGNALS_LAST, 20) ANIM_CURSOR_END() }; /** * This is an array of pointers to all the animated cursor * definitions we have above. This is the only thing that is * accessed directly from other files */ static const AnimCursor * const _animcursors[] = { _demolish_animcursor, _lower_land_animcursor, _raise_land_animcursor, _order_goto_animcursor, _build_signals_animcursor }; openttd-1.3.3/src/table/settings.h.postamble0000644000000000000000000000000012246102566017537 0ustar rootrootopenttd-1.3.3/src/table/palette_convert.h0000644000000000000000000001031312246102566017120 0ustar rootroot/* $Id: palette_convert.h 23433 2011-12-04 19:07:24Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file palette_convert.h Translation tables from one GRF to another GRF. */ /** Converting from the Windows palette to the DOS palette */ extern const byte _palmap_w2d[] = { 0, 1, 2, 3, 4, 5, 6, 7, // 0..7 8, 9, 10, 11, 12, 13, 14, 15, // 8..15 16, 17, 18, 19, 20, 21, 22, 23, // 16..23 24, 25, 26, 27, 28, 29, 30, 31, // 24..31 6, 7, 34, 35, 36, 37, 38, 39, // 32..39 8, 41, 42, 43, 44, 45, 46, 47, // 40..47 48, 49, 50, 51, 52, 53, 54, 55, // 48..55 56, 57, 58, 59, 60, 61, 62, 63, // 56..63 64, 65, 66, 67, 68, 69, 70, 71, // 64..71 72, 73, 74, 75, 76, 77, 78, 79, // 72..79 80, 81, 82, 83, 84, 85, 86, 87, // 80..87 4, 89, 90, 91, 92, 93, 94, 95, // 88..95 96, 97, 98, 99, 100, 101, 102, 103, // 96..103 104, 105, 5, 107, 108, 109, 110, 111, // 104..111 112, 113, 114, 115, 116, 117, 118, 119, // 112..119 120, 121, 122, 123, 124, 125, 126, 127, // 120..127 128, 129, 130, 131, 132, 133, 134, 135, // 128..135 3, 137, 138, 139, 140, 141, 142, 143, // 136..143 144, 145, 146, 147, 148, 149, 150, 151, // 144..151 152, 153, 154, 155, 156, 157, 158, 159, // 152..159 160, 161, 162, 163, 164, 165, 166, 167, // 160..167 168, 169, 170, 171, 172, 173, 174, 175, // 168..175 176, 177, 178, 179, 180, 181, 182, 183, // 176..183 184, 185, 186, 187, 188, 189, 190, 191, // 184..191 192, 193, 194, 195, 196, 197, 198, 199, // 192..199 200, 201, 202, 203, 204, 205, 206, 207, // 200..207 208, 209, 210, 211, 212, 213, 214, 1, // 208..215 2, 245, 246, 247, 248, 249, 250, 251, // 216..223 252, 253, 254, 227, 228, 229, 230, 231, // 224..231 232, 233, 234, 235, 236, 237, 238, 239, // 232..239 240, 241, 242, 243, 244, 9, 218, 219, // 240..247 220, 221, 222, 223, 224, 225, 226, 255, // 248..255 }; /** Converting from the DOS palette to the Windows palette */ static const byte _palmap_d2w[] = { 0, 215, 216, 136, 88, 106, 32, 33, // 0..7 40, 245, 10, 11, 12, 13, 14, 15, // 8..15 16, 17, 18, 19, 20, 21, 22, 23, // 16..23 24, 25, 26, 27, 28, 29, 30, 31, // 24..31 53, 54, 34, 35, 36, 37, 38, 39, // 32..39 178, 41, 42, 43, 44, 45, 46, 47, // 40..47 48, 49, 50, 51, 52, 53, 54, 55, // 48..55 56, 57, 58, 59, 60, 61, 62, 63, // 56..63 64, 65, 66, 67, 68, 69, 70, 71, // 64..71 72, 73, 74, 75, 76, 77, 78, 79, // 72..79 80, 81, 82, 83, 84, 85, 86, 87, // 80..87 96, 89, 90, 91, 92, 93, 94, 95, // 88..95 96, 97, 98, 99, 100, 101, 102, 103, // 96..103 104, 105, 53, 107, 108, 109, 110, 111, // 104..111 112, 113, 114, 115, 116, 117, 118, 119, // 112..119 120, 121, 122, 123, 124, 125, 126, 127, // 120..127 128, 129, 130, 131, 132, 133, 134, 135, // 128..135 170, 137, 138, 139, 140, 141, 142, 143, // 136..143 144, 145, 146, 147, 148, 149, 150, 151, // 144..151 152, 153, 154, 155, 156, 157, 158, 159, // 152..159 160, 161, 162, 163, 164, 165, 166, 167, // 160..167 168, 169, 170, 171, 172, 173, 174, 175, // 168..175 176, 177, 178, 179, 180, 181, 182, 183, // 176..183 184, 185, 186, 187, 188, 189, 190, 191, // 184..191 192, 193, 194, 195, 196, 197, 198, 199, // 192..199 200, 201, 202, 203, 204, 205, 206, 207, // 200..207 208, 209, 210, 211, 212, 213, 214, 215, // 208..215 216, 217, 246, 247, 248, 249, 250, 251, // 216..223 252, 253, 254, 227, 228, 229, 230, 231, // 224..231 232, 233, 234, 235, 236, 237, 238, 239, // 232..239 240, 241, 242, 243, 244, 217, 218, 219, // 240..247 220, 221, 222, 223, 224, 225, 226, 255, // 248..255 }; openttd-1.3.3/src/table/autorail.h0000644000000000000000000001466312246102566015556 0ustar rootroot/* $Id: autorail.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file autorail.h Highlight/sprite information for autorail. */ /* Rail selection types (directions): * / \ / \ / \ / \ / \ / \ * / /\ /\ \ /===\ / \ /| \ / |\ * \/ / \ \/ \ / \===/ \| / \ |/ * \ / \ / \ / \ / \ / \ / * 0 1 2 3 4 5 */ /* mark invalid tiles red */ #define RED(c) -c /* table maps each of the six rail directions and tileh combinations to a sprite * invalid entries are required to make sure that this array can be quickly accessed */ static const int _AutorailTilehSprite[][6] = { /* type 0 1 2 3 4 5 */ { 0, 8, 16, 25, 34, 42 }, // tileh = 0 { 5, 13, RED(22), RED(31), 35, 42 }, // tileh = 1 { 5, 10, 16, 26, RED(38), RED(46) }, // tileh = 2 { 5, 9, RED(23), 26, 35, RED(46) }, // tileh = 3 { 2, 10, RED(19), RED(28), 34, 43 }, // tileh = 4 { 1, 9, 17, 26, 35, 43 }, // tileh = 5 { 1, 10, RED(20), 26, RED(38), 43 }, // tileh = 6 { 1, 9, 17, 26, 35, 43 }, // tileh = 7 { 2, 13, 17, 25, RED(40), RED(48) }, // tileh = 8 { 1, 13, 17, RED(32), 35, RED(48) }, // tileh = 9 { 1, 9, 17, 26, 35, 43 }, // tileh = 10 { 1, 9, 17, 26, 35, 43 }, // tileh = 11 { 2, 9, 17, RED(29), RED(40), 43 }, // tileh = 12 { 1, 9, 17, 26, 35, 43 }, // tileh = 13 { 1, 9, 17, 26, 35, 43 }, // tileh = 14 { 0, 1, 2, 3, 4, 5 }, // invalid (15) { 0, 1, 2, 3, 4, 5 }, // invalid (16) { 0, 1, 2, 3, 4, 5 }, // invalid (17) { 0, 1, 2, 3, 4, 5 }, // invalid (18) { 0, 1, 2, 3, 4, 5 }, // invalid (19) { 0, 1, 2, 3, 4, 5 }, // invalid (20) { 0, 1, 2, 3, 4, 5 }, // invalid (21) { 0, 1, 2, 3, 4, 5 }, // invalid (22) { 6, 11, 17, 27, RED(39), RED(47) }, // tileh = 23 { 0, 1, 2, 3, 4, 5 }, // invalid (24) { 0, 1, 2, 3, 4, 5 }, // invalid (25) { 0, 1, 2, 3, 4, 5 }, // invalid (26) { 7, 15, RED(24), RED(33), 36, 44 }, // tileh = 27 { 0, 1, 2, 3, 4, 5 }, // invalid (28) { 3, 14, 18, 26, RED(41), RED(49) }, // tileh = 29 { 4, 12, RED(21), RED(30), 37, 45 } // tileh = 30 }; #undef RED /* maps each pixel of a tile (16x16) to a selection type * (0,0) is the top corner, (16,16) the bottom corner */ static const HighLightStyle _autorail_piece[][16] = { { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR }, { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR }, { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR }, { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR }, { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR }, { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR }, { HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y }, { HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y }, { HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y }, { HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y }, { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }, { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }, { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }, { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }, { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }, { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL } }; openttd-1.3.3/src/table/bridge_land.h0000644000000000000000000016525612246102566016175 0ustar rootroot/* $Id: bridge_land.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file bridge_land.h This file contains all the sprites for bridges * It consists of a number of arrays. *
  • _bridge_sprite_table_n_m. Defines all the sprites of a bridge besides the pylons. * n defines the number of the bridge type, m the number of the section. the highest m for * each bridge set defines the heads.
    * Sprites for middle sections are arranged in groups of four, the elements are: *
    1. Element containing the track. This element is logically behind the vehicle.
    2. *
    3. Element containing the structure that is logically between the vehicle and the camera
    4. *
    5. Element containing the pylons.
    * First group is for railway in X direction, second for railway in Y direction, two groups each follow for road, monorail and maglev

    *
    Elements for heads are arranged in groups of eight: *

    1. X direction, north end, flat
    2. *
    3. Y direction, north end, flat
    4. *
    5. X direction, south end, flat
    6. *
    7. Y direction, south end, flat
    8. *
    9. X direction, north end, sloped
    10. *
    11. Y direction, north end, sloped
    12. *
    13. X direction, south end, sloped
    14. *
    15. Y direction, south end, sloped
    * This is repeated 4 times, for rail, road, monorail, maglev
  • *
*/ # define MN(a) {a, PAL_NONE} # define MR(a) {a, PALETTE_TO_STRUCT_RED} # define MW(a) {a, PALETTE_TO_STRUCT_WHITE} # define MC(a) {a, PALETTE_TO_STRUCT_CONCRETE} static const PalSpriteID _aqueduct_sprites[] = { { SPR_AQUEDUCT_MIDDLE_X, PAL_NONE }, { 0x0, PAL_NONE }, { SPR_AQUEDUCT_PILLAR_X, PAL_NONE }, { 0x0, PAL_NONE }, { SPR_AQUEDUCT_MIDDLE_Y, PAL_NONE }, { 0x0, PAL_NONE }, { SPR_AQUEDUCT_PILLAR_Y, PAL_NONE }, { 0x0, PAL_NONE }, { SPR_AQUEDUCT_RAMP_SW, PAL_NONE }, { SPR_AQUEDUCT_RAMP_SE, PAL_NONE }, { SPR_AQUEDUCT_RAMP_NE, PAL_NONE }, { SPR_AQUEDUCT_RAMP_NW, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_0[] = { { 0x9A9, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9A5, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x99D, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x995, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F2, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10EE, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x111A, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1116, PAL_NONE }, { 0x997, PAL_NONE }, { 0x9AD, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_1[] = { { 0x9AA, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9A6, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x99E, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x996, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F3, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10EF, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x111B, PAL_NONE }, { 0x9A0, PAL_NONE }, { 0x9B2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1117, PAL_NONE }, { 0x998, PAL_NONE }, { 0x9AE, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_2[] = { { 0x9AC, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9A8, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9A2, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE }, { 0x99A, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F5, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F1, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x111D, PAL_NONE }, { 0x9A4, PAL_NONE }, { 0x9B4, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1119, PAL_NONE }, { 0x99C, PAL_NONE }, { 0x9B0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_3[] = { { 0x9AB, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9A7, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9A1, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE }, { 0x999, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F4, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F0, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE }, { 0x111C, PAL_NONE }, { 0x9A3, PAL_NONE }, { 0x9B3, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1118, PAL_NONE }, { 0x99B, PAL_NONE }, { 0x9AF, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_4[] = { { 0x9B6, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9B5, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9B8, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9B7, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F7, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F6, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE }, { 0x111F, PAL_NONE }, { 0x9BA, PAL_NONE }, { 0x9BC, PAL_NONE }, { 0x0, PAL_NONE }, { 0x111E, PAL_NONE }, { 0x9B9, PAL_NONE }, { 0x9BB, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_5[] = { { 0x9BD, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9BE, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9BF, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9C0, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F8, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F9, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1120, PAL_NONE }, { 0x9C1, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1121, PAL_NONE }, { 0x9C2, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_4_6[] = { { 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE }, { 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE }, { 0x98E, PAL_NONE }, { 0x990, PAL_NONE }, { 0x98D, PAL_NONE }, { 0x98F, PAL_NONE }, { 0x992, PAL_NONE }, { 0x994, PAL_NONE }, { 0x991, PAL_NONE }, { 0x993, PAL_NONE }, { 0x10E7, PAL_NONE }, { 0x10E9, PAL_NONE }, { 0x10E6, PAL_NONE }, { 0x10E8, PAL_NONE }, { 0x10EB, PAL_NONE }, { 0x10ED, PAL_NONE }, { 0x10EA, PAL_NONE }, { 0x10EC, PAL_NONE }, { 0x110F, PAL_NONE }, { 0x1111, PAL_NONE }, { 0x110E, PAL_NONE }, { 0x1110, PAL_NONE }, { 0x1113, PAL_NONE }, { 0x1115, PAL_NONE }, { 0x1112, PAL_NONE }, { 0x1114, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_0[] = { { 0x9A9, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9A5, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x99D, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x995, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F2, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10EE, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x111A, PALETTE_TO_STRUCT_YELLOW }, { 0x99F, PALETTE_TO_STRUCT_YELLOW }, { 0x9B1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x1116, PALETTE_TO_STRUCT_YELLOW }, { 0x997, PALETTE_TO_STRUCT_YELLOW }, { 0x9AD, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_1[] = { { 0x9AA, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9A6, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x99E, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x996, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F3, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10EF, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x111B, PALETTE_TO_STRUCT_YELLOW }, { 0x9A0, PALETTE_TO_STRUCT_YELLOW }, { 0x9B2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x1117, PALETTE_TO_STRUCT_YELLOW }, { 0x998, PALETTE_TO_STRUCT_YELLOW }, { 0x9AE, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_2[] = { { 0x9AC, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9A8, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9A2, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x99A, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F5, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F1, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x111D, PALETTE_TO_STRUCT_YELLOW }, { 0x9A4, PALETTE_TO_STRUCT_YELLOW }, { 0x9B4, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x1119, PALETTE_TO_STRUCT_YELLOW }, { 0x99C, PALETTE_TO_STRUCT_YELLOW }, { 0x9B0, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_3[] = { { 0x9AB, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9A7, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9A1, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x999, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F4, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F0, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x111C, PALETTE_TO_STRUCT_YELLOW }, { 0x9A3, PALETTE_TO_STRUCT_YELLOW }, { 0x9B3, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x1118, PALETTE_TO_STRUCT_YELLOW }, { 0x99B, PALETTE_TO_STRUCT_YELLOW }, { 0x9AF, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_4[] = { { 0x9B6, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9B5, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9B8, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x9B7, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F7, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x10F6, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x111F, PALETTE_TO_STRUCT_YELLOW }, { 0x9BA, PALETTE_TO_STRUCT_YELLOW }, { 0x9BC, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x111E, PALETTE_TO_STRUCT_YELLOW }, { 0x9B9, PALETTE_TO_STRUCT_YELLOW }, { 0x9BB, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_5[] = { { 0x9BD, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9BE, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9BF, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9C0, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F8, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10F9, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1120, PALETTE_TO_STRUCT_YELLOW }, { 0x9C1, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1121, PALETTE_TO_STRUCT_YELLOW }, { 0x9C2, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_5_6[] = { { 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE }, { 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE }, { 0x98E, PALETTE_TO_STRUCT_YELLOW }, { 0x990, PALETTE_TO_STRUCT_YELLOW }, { 0x98D, PALETTE_TO_STRUCT_YELLOW }, { 0x98F, PALETTE_TO_STRUCT_YELLOW }, { 0x992, PALETTE_TO_STRUCT_YELLOW }, { 0x994, PALETTE_TO_STRUCT_YELLOW }, { 0x991, PALETTE_TO_STRUCT_YELLOW }, { 0x993, PALETTE_TO_STRUCT_YELLOW }, { 0x10E7, PALETTE_TO_STRUCT_YELLOW }, { 0x10E9, PALETTE_TO_STRUCT_YELLOW }, { 0x10E6, PALETTE_TO_STRUCT_YELLOW }, { 0x10E8, PALETTE_TO_STRUCT_YELLOW }, { 0x10EB, PALETTE_TO_STRUCT_YELLOW }, { 0x10ED, PALETTE_TO_STRUCT_YELLOW }, { 0x10EA, PALETTE_TO_STRUCT_YELLOW }, { 0x10EC, PALETTE_TO_STRUCT_YELLOW }, { 0x110F, PALETTE_TO_STRUCT_YELLOW }, { 0x1111, PALETTE_TO_STRUCT_YELLOW }, { 0x110E, PALETTE_TO_STRUCT_YELLOW }, { 0x1110, PALETTE_TO_STRUCT_YELLOW }, { 0x1113, PALETTE_TO_STRUCT_YELLOW }, { 0x1115, PALETTE_TO_STRUCT_YELLOW }, { 0x1112, PALETTE_TO_STRUCT_YELLOW }, { 0x1114, PALETTE_TO_STRUCT_YELLOW }, }; static const PalSpriteID _bridge_sprite_table_6_0[] = { { 0x9CD, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9CE, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D3, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D4, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FC, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FD, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1124, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1125, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_6_1[] = { { 0x9CB, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D0, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D1, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D6, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FA, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FF, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1122, PAL_NONE }, { 0x9D7, PAL_NONE }, { 0x9DD, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1127, PAL_NONE }, { 0x9DC, PAL_NONE }, { 0x9E0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_6_2[] = { { 0x9CC, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9CF, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D2, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D5, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FB, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FE, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1123, PAL_NONE }, { 0x9D8, PAL_NONE }, { 0x9DE, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1126, PAL_NONE }, { 0x9DB, PAL_NONE }, { 0x9DF, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_6_3[] = { { 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE }, { 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE }, { 0x98E, PAL_NONE }, { 0x990, PAL_NONE }, { 0x98D, PAL_NONE }, { 0x98F, PAL_NONE }, { 0x992, PAL_NONE }, { 0x994, PAL_NONE }, { 0x991, PAL_NONE }, { 0x993, PAL_NONE }, { 0x10E7, PAL_NONE }, { 0x10E9, PAL_NONE }, { 0x10E6, PAL_NONE }, { 0x10E8, PAL_NONE }, { 0x10EB, PAL_NONE }, { 0x10ED, PAL_NONE }, { 0x10EA, PAL_NONE }, { 0x10EC, PAL_NONE }, { 0x110F, PAL_NONE }, { 0x1111, PAL_NONE }, { 0x110E, PAL_NONE }, { 0x1110, PAL_NONE }, { 0x1113, PAL_NONE }, { 0x1115, PAL_NONE }, { 0x1112, PAL_NONE }, { 0x1114, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_7_0[] = { { 0x9CD, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9CE, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D3, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D4, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FC, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FD, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1124, PALETTE_TO_STRUCT_BROWN }, { 0x9D9, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1125, PALETTE_TO_STRUCT_BROWN }, { 0x9DA, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_7_1[] = { { 0x9CB, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x9D0, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x9D1, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x9D6, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x10FA, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x10FF, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x1122, PALETTE_TO_STRUCT_BROWN }, { 0x9D7, PALETTE_TO_STRUCT_BROWN }, { 0x9DD, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x1127, PALETTE_TO_STRUCT_BROWN }, { 0x9DC, PALETTE_TO_STRUCT_BROWN }, { 0x9E0, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_7_2[] = { { 0x9CC, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x9CF, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x9D2, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x9D5, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x10FB, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x10FE, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x1123, PALETTE_TO_STRUCT_BROWN }, { 0x9D8, PALETTE_TO_STRUCT_BROWN }, { 0x9DE, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, { 0x1126, PALETTE_TO_STRUCT_BROWN }, { 0x9DB, PALETTE_TO_STRUCT_BROWN }, { 0x9DF, PALETTE_TO_STRUCT_BROWN }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_7_3[] = { { 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE }, { 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE }, { 0x98E, PALETTE_TO_STRUCT_BROWN }, { 0x990, PALETTE_TO_STRUCT_BROWN }, { 0x98D, PALETTE_TO_STRUCT_BROWN }, { 0x98F, PALETTE_TO_STRUCT_BROWN }, { 0x992, PALETTE_TO_STRUCT_BROWN }, { 0x994, PALETTE_TO_STRUCT_BROWN }, { 0x991, PALETTE_TO_STRUCT_BROWN }, { 0x993, PALETTE_TO_STRUCT_BROWN }, { 0x10E7, PALETTE_TO_STRUCT_BROWN }, { 0x10E9, PALETTE_TO_STRUCT_BROWN }, { 0x10E6, PALETTE_TO_STRUCT_BROWN }, { 0x10E8, PALETTE_TO_STRUCT_BROWN }, { 0x10EB, PALETTE_TO_STRUCT_BROWN }, { 0x10ED, PALETTE_TO_STRUCT_BROWN }, { 0x10EA, PALETTE_TO_STRUCT_BROWN }, { 0x10EC, PALETTE_TO_STRUCT_BROWN }, { 0x110F, PALETTE_TO_STRUCT_BROWN }, { 0x1111, PALETTE_TO_STRUCT_BROWN }, { 0x110E, PALETTE_TO_STRUCT_BROWN }, { 0x1110, PALETTE_TO_STRUCT_BROWN }, { 0x1113, PALETTE_TO_STRUCT_BROWN }, { 0x1115, PALETTE_TO_STRUCT_BROWN }, { 0x1112, PALETTE_TO_STRUCT_BROWN }, { 0x1114, PALETTE_TO_STRUCT_BROWN }, }; static const PalSpriteID _bridge_sprite_table_8_0[] = { { 0x9CD, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9CE, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D3, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9D4, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FC, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x10FD, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1124, PALETTE_TO_STRUCT_RED }, { 0x9D9, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1125, PALETTE_TO_STRUCT_RED }, { 0x9DA, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_8_1[] = { { 0x9CB, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x9D0, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x9D1, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x9D6, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x10FA, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x10FF, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x1122, PALETTE_TO_STRUCT_RED }, { 0x9D7, PALETTE_TO_STRUCT_RED }, { 0x9DD, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x1127, PALETTE_TO_STRUCT_RED }, { 0x9DC, PALETTE_TO_STRUCT_RED }, { 0x9E0, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_8_2[] = { { 0x9CC, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x9CF, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x9D2, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x9D5, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x10FB, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x10FE, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x1123, PALETTE_TO_STRUCT_RED }, { 0x9D8, PALETTE_TO_STRUCT_RED }, { 0x9DE, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, { 0x1126, PALETTE_TO_STRUCT_RED }, { 0x9DB, PALETTE_TO_STRUCT_RED }, { 0x9DF, PALETTE_TO_STRUCT_RED }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_8_3[] = { { 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE }, { 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE }, { 0x98E, PALETTE_TO_STRUCT_RED }, { 0x990, PALETTE_TO_STRUCT_RED }, { 0x98D, PALETTE_TO_STRUCT_RED }, { 0x98F, PALETTE_TO_STRUCT_RED }, { 0x992, PALETTE_TO_STRUCT_RED }, { 0x994, PALETTE_TO_STRUCT_RED }, { 0x991, PALETTE_TO_STRUCT_RED }, { 0x993, PALETTE_TO_STRUCT_RED }, { 0x10E7, PALETTE_TO_STRUCT_RED }, { 0x10E9, PALETTE_TO_STRUCT_RED }, { 0x10E6, PALETTE_TO_STRUCT_RED }, { 0x10E8, PALETTE_TO_STRUCT_RED }, { 0x10EB, PALETTE_TO_STRUCT_RED }, { 0x10ED, PALETTE_TO_STRUCT_RED }, { 0x10EA, PALETTE_TO_STRUCT_RED }, { 0x10EC, PALETTE_TO_STRUCT_RED }, { 0x110F, PALETTE_TO_STRUCT_RED }, { 0x1111, PALETTE_TO_STRUCT_RED }, { 0x110E, PALETTE_TO_STRUCT_RED }, { 0x1110, PALETTE_TO_STRUCT_RED }, { 0x1113, PALETTE_TO_STRUCT_RED }, { 0x1115, PALETTE_TO_STRUCT_RED }, { 0x1112, PALETTE_TO_STRUCT_RED }, { 0x1114, PALETTE_TO_STRUCT_RED }, }; static const PalSpriteID _bridge_sprite_table_wood_middle[] = { MN( SPR_BTWDN_RAIL_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_RAIL_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_ROAD_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_ROAD_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_MONO_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_MONO_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_MGLV_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ), MN( SPR_BTWDN_MGLV_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_wood_heads[] = { MN( SPR_BTWDN_RAIL_X_SLOPE_UP ), MN( SPR_BTWDN_RAIL_Y_SLOPE_UP ), MN( SPR_BTWDN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTWDN_RAIL_Y_SLOPE_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_X_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_X_UP ), MN( SPR_BTWDN_RAIL_RAMP_Y_UP ), MN( SPR_BTWDN_ROAD_X_SLOPE_UP ), MN( SPR_BTWDN_ROAD_Y_SLOPE_UP ), MN( SPR_BTWDN_ROAD_X_SLOPE_DOWN ), MN( SPR_BTWDN_ROAD_Y_SLOPE_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_X_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_Y_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_X_UP ), MN( SPR_BTWDN_ROAD_RAMP_Y_UP ), MN( SPR_BTWDN_MONO_X_SLOPE_UP ), MN( SPR_BTWDN_MONO_Y_SLOPE_UP ), MN( SPR_BTWDN_MONO_X_SLOPE_DOWN ), MN( SPR_BTWDN_MONO_Y_SLOPE_DOWN ), MN( SPR_BTWDN_MONO_RAMP_X_DOWN ), MN( SPR_BTWDN_MONO_RAMP_Y_DOWN ), MN( SPR_BTWDN_MONO_RAMP_X_UP ), MN( SPR_BTWDN_MONO_RAMP_Y_UP ), MN( SPR_BTWDN_MGLV_X_SLOPE_UP ), MN( SPR_BTWDN_MGLV_Y_SLOPE_UP ), MN( SPR_BTWDN_MGLV_X_SLOPE_DOWN ), MN( SPR_BTWDN_MGLV_Y_SLOPE_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_X_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_Y_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_X_UP ), MN( SPR_BTWDN_MGLV_RAMP_Y_UP ), }; static const PalSpriteID _bridge_sprite_table_concrete_middle[] = { MR( SPR_BTCON_RAIL_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_RAIL_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_ROAD_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_ROAD_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_MONO_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_MONO_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_MGLV_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ), MR( SPR_BTCON_MGLV_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_heads[] = { MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ), MR( SPR_BTGEN_ROAD_X_SLOPE_UP ), MR( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MR( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MR( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_X_UP ), MR( SPR_BTGEN_ROAD_RAMP_Y_UP ), MR( SPR_BTGEN_MONO_X_SLOPE_UP ), MR( SPR_BTGEN_MONO_Y_SLOPE_UP ), MR( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MR( SPR_BTGEN_MONO_Y_SLOPE_DOWN ), MR( SPR_BTGEN_MONO_RAMP_X_DOWN ), MR( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MR( SPR_BTGEN_MONO_RAMP_X_UP ), MR( SPR_BTGEN_MONO_RAMP_Y_UP ), MR( SPR_BTGEN_MGLV_X_SLOPE_UP ), MR( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MR( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MR( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_X_UP ), MR( SPR_BTGEN_MGLV_RAMP_Y_UP ), }; static const PalSpriteID _bridge_sprite_table_archgirder_middle[] = { MN( SPR_BTSGA_RAIL_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_RAIL_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_ROAD_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_ROAD_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_MONO_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_MONO_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_MGLV_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ), MN( SPR_BTSGA_MGLV_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_archgirder_heads[] = { MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ), MW( SPR_BTGEN_ROAD_X_SLOPE_UP ), MW( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MW( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MW( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_X_UP ), MW( SPR_BTGEN_ROAD_RAMP_Y_UP ), MW( SPR_BTGEN_MONO_X_SLOPE_UP ), MW( SPR_BTGEN_MONO_Y_SLOPE_UP ), MW( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MW( SPR_BTGEN_MONO_Y_SLOPE_DOWN ), MW( SPR_BTGEN_MONO_RAMP_X_DOWN ), MW( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MW( SPR_BTGEN_MONO_RAMP_X_UP ), MW( SPR_BTGEN_MONO_RAMP_Y_UP ), MW( SPR_BTGEN_MGLV_X_SLOPE_UP ), MW( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MW( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MW( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_X_UP ), MW( SPR_BTGEN_MGLV_RAMP_Y_UP ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_A[] = { MC( SPR_BTSUS_RAIL_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_RAIL_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_MONO_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_MONO_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_B[] = { MC( SPR_BTSUS_RAIL_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_RAIL_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_MONO_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_MONO_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_C[] = { MC( SPR_BTSUS_RAIL_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_RAIL_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_MONO_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_MONO_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_D[] = { MC( SPR_BTSUS_RAIL_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_RAIL_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_MONO_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_MONO_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_E[] = { MC( SPR_BTSUS_RAIL_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_RAIL_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_MONO_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_MONO_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_F[] = { MC( SPR_BTSUS_RAIL_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_RAIL_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_ROAD_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_MONO_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_MONO_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ), MC( SPR_BTSUS_MGLV_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ), }; static const PalSpriteID _bridge_sprite_table_concrete_suspended_heads[] = { MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ), MC( SPR_BTGEN_ROAD_X_SLOPE_UP ), MC( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MC( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MC( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_X_UP ), MC( SPR_BTGEN_ROAD_RAMP_Y_UP ), MC( SPR_BTGEN_MONO_X_SLOPE_UP ), MC( SPR_BTGEN_MONO_Y_SLOPE_UP ), MC( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MC( SPR_BTGEN_MONO_Y_SLOPE_DOWN ), MC( SPR_BTGEN_MONO_RAMP_X_DOWN ), MC( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MC( SPR_BTGEN_MONO_RAMP_X_UP ), MC( SPR_BTGEN_MONO_RAMP_Y_UP ), MC( SPR_BTGEN_MGLV_X_SLOPE_UP ), MC( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MC( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MC( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_X_UP ), MC( SPR_BTGEN_MGLV_RAMP_Y_UP ), }; static const PalSpriteID _bridge_sprite_table_9_0[] = { { 0x9F9, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9FA, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9FB, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x9FC, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x110A, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x110B, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1132, PAL_NONE }, { 0x9FD, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x1133, PAL_NONE }, { 0x9FE, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_10_0[] = { { 0xA0B, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA0C, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA11, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA12, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA17, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA18, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1D, PAL_NONE }, { 0xA01, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1E, PAL_NONE }, { 0xA02, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_10_1[] = { { 0xA09, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA0E, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA0F, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA14, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA15, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1A, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1B, PAL_NONE }, { 0x9FF, PAL_NONE }, { 0xA05, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA20, PAL_NONE }, { 0xA04, PAL_NONE }, { 0xA08, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_10_2[] = { { 0xA0A, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA0D, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA10, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA13, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA16, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA19, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1C, PAL_NONE }, { 0xA00, PAL_NONE }, { 0xA06, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1F, PAL_NONE }, { 0xA03, PAL_NONE }, { 0xA07, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_11_0[] = { { 0xA0B, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA0C, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA11, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA12, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA17, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA18, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1D, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1E, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_11_1[] = { { 0xA09, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA0E, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA0F, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA14, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA15, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA1A, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA1B, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA20, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_11_2[] = { { 0xA0A, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA0D, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA10, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA13, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA16, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA19, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA1C, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0xA1F, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_12_0[] = { { 0xA0B, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA0C, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA11, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA12, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA17, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA18, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1D, PALETTE_TO_STRUCT_CONCRETE }, { 0xA01, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, { 0xA1E, PALETTE_TO_STRUCT_CONCRETE }, { 0xA02, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_12_1[] = { { 0xA09, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA0E, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA0F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA14, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA15, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA1A, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA1B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9FF, PALETTE_TO_STRUCT_CONCRETE }, { 0xA05, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA20, PALETTE_TO_STRUCT_CONCRETE }, { 0xA04, PALETTE_TO_STRUCT_CONCRETE }, { 0xA08, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, }; static const PalSpriteID _bridge_sprite_table_12_2[] = { { 0xA0A, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA0D, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA10, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA13, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA16, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA19, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA1C, PALETTE_TO_STRUCT_CONCRETE }, { 0xA00, PALETTE_TO_STRUCT_CONCRETE }, { 0xA06, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0xA1F, PALETTE_TO_STRUCT_CONCRETE }, { 0xA03, PALETTE_TO_STRUCT_CONCRETE }, { 0xA07, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, }; static const PalSpriteID * const _bridge_sprite_table_archgirder[] = { _bridge_sprite_table_archgirder_middle, _bridge_sprite_table_archgirder_middle, _bridge_sprite_table_archgirder_middle, _bridge_sprite_table_archgirder_middle, _bridge_sprite_table_archgirder_middle, _bridge_sprite_table_archgirder_middle, _bridge_sprite_table_archgirder_heads, }; static const PalSpriteID * const _bridge_sprite_table_4[] = { _bridge_sprite_table_4_0, _bridge_sprite_table_4_1, _bridge_sprite_table_4_2, _bridge_sprite_table_4_3, _bridge_sprite_table_4_4, _bridge_sprite_table_4_5, _bridge_sprite_table_4_6, }; static const PalSpriteID * const _bridge_sprite_table_5[] = { _bridge_sprite_table_5_0, _bridge_sprite_table_5_1, _bridge_sprite_table_5_2, _bridge_sprite_table_5_3, _bridge_sprite_table_5_4, _bridge_sprite_table_5_5, _bridge_sprite_table_5_6, }; static const PalSpriteID * const _bridge_sprite_table_concrete_suspended[] = { _bridge_sprite_table_concrete_suspended_A, _bridge_sprite_table_concrete_suspended_B, _bridge_sprite_table_concrete_suspended_C, _bridge_sprite_table_concrete_suspended_D, _bridge_sprite_table_concrete_suspended_E, _bridge_sprite_table_concrete_suspended_F, _bridge_sprite_table_concrete_suspended_heads, }; static const PalSpriteID * const _bridge_sprite_table_6[] = { _bridge_sprite_table_6_0, _bridge_sprite_table_6_1, _bridge_sprite_table_6_2, _bridge_sprite_table_6_2, _bridge_sprite_table_6_2, _bridge_sprite_table_6_2, _bridge_sprite_table_6_3, }; static const PalSpriteID * const _bridge_sprite_table_7[] = { _bridge_sprite_table_7_0, _bridge_sprite_table_7_1, _bridge_sprite_table_7_2, _bridge_sprite_table_7_2, _bridge_sprite_table_7_2, _bridge_sprite_table_7_2, _bridge_sprite_table_7_3, }; static const PalSpriteID * const _bridge_sprite_table_8[] = { _bridge_sprite_table_8_0, _bridge_sprite_table_8_1, _bridge_sprite_table_8_2, _bridge_sprite_table_8_2, _bridge_sprite_table_8_2, _bridge_sprite_table_8_2, _bridge_sprite_table_8_3, }; static const PalSpriteID * const _bridge_sprite_table_wood[] = { _bridge_sprite_table_wood_middle, _bridge_sprite_table_wood_middle, _bridge_sprite_table_wood_middle, _bridge_sprite_table_wood_middle, _bridge_sprite_table_wood_middle, _bridge_sprite_table_wood_middle, _bridge_sprite_table_wood_heads, }; static const PalSpriteID * const _bridge_sprite_table_concrete[] = { _bridge_sprite_table_concrete_middle, _bridge_sprite_table_concrete_middle, _bridge_sprite_table_concrete_middle, _bridge_sprite_table_concrete_middle, _bridge_sprite_table_concrete_middle, _bridge_sprite_table_concrete_middle, _bridge_sprite_table_concrete_heads, }; static const PalSpriteID * const _bridge_sprite_table_9[] = { _bridge_sprite_table_9_0, _bridge_sprite_table_9_0, _bridge_sprite_table_9_0, _bridge_sprite_table_9_0, _bridge_sprite_table_9_0, _bridge_sprite_table_9_0, _bridge_sprite_table_4_6, }; static const PalSpriteID * const _bridge_sprite_table_10[] = { _bridge_sprite_table_10_0, _bridge_sprite_table_10_1, _bridge_sprite_table_10_2, _bridge_sprite_table_10_2, _bridge_sprite_table_10_2, _bridge_sprite_table_10_2, _bridge_sprite_table_4_6, }; static const PalSpriteID * const _bridge_sprite_table_11[] = { _bridge_sprite_table_11_0, _bridge_sprite_table_11_1, _bridge_sprite_table_11_2, _bridge_sprite_table_11_2, _bridge_sprite_table_11_2, _bridge_sprite_table_11_2, _bridge_sprite_table_5_6, }; static const PalSpriteID * const _bridge_sprite_table_12[] = { _bridge_sprite_table_12_0, _bridge_sprite_table_12_1, _bridge_sprite_table_12_2, _bridge_sprite_table_12_2, _bridge_sprite_table_12_2, _bridge_sprite_table_12_2, _bridge_sprite_table_concrete_suspended_heads, }; static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = { _bridge_sprite_table_wood, _bridge_sprite_table_concrete, _bridge_sprite_table_archgirder, _bridge_sprite_table_concrete_suspended, _bridge_sprite_table_4, _bridge_sprite_table_5, _bridge_sprite_table_6, _bridge_sprite_table_7, _bridge_sprite_table_8, _bridge_sprite_table_9, _bridge_sprite_table_10, _bridge_sprite_table_11, _bridge_sprite_table_12 }; /** * Describes the data that defines each bridge in the game * @param y year of availability * @param mnl minimum length (not counting bridge heads) * @param mxl maximum length (not counting bridge heads) * @param p price multiplier * @param mxs maximum speed allowed (1 unit = 1/1.6 mph = 1 km-ish/h) * @param spr sprite to use in purchase GUI * @param plt palette for the sprite in purchase GUI * @param dsc description of the bridge in purchase GUI * @param nrl description of the rail bridge in query tool * @param nrd description of the road bridge in query tool */ #define MBR(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \ {y, mnl, mxl, p, mxs, spr, plt, dsc, { nrl, nrd }, NULL, 0} const BridgeSpec _orig_bridge[] = { /* year of availability | minimum length | | maximum length | | | price multiplier | | | | maximum speed | | | | | sprite to use in GUI | | | | | | palette in GUI string with description name on rail name on road | | | | */ MBR( 0, 0, 0xFFFF, 80, 32, 0xA24, PAL_NONE, STR_BRIDGE_NAME_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN, STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN), MBR( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED, STR_BRIDGE_NAME_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE), MBR(1930, 0, 5, 144, 64, 0xA25, PAL_NONE, STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL), MBR( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE, STR_BRIDGE_NAME_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE), MBR(1930, 3, 0xFFFF, 185, 96, 0xA22, PAL_NONE, STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL), MBR(1930, 3, 0xFFFF, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW, STR_BRIDGE_NAME_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL), MBR(1930, 3, 7, 224, 160, 0xA23, PAL_NONE, STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL), MBR(1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN, STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL), MBR(1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED, STR_BRIDGE_NAME_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL), MBR(1930, 0, 2, 240, 256, 0xA27, PAL_NONE, STR_BRIDGE_NAME_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL), MBR(1995, 2, 0xFFFF, 255, 320, 0xA28, PAL_NONE, STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL), MBR(2005, 2, 0xFFFF, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW, STR_BRIDGE_NAME_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL), MBR(2010, 2, 0xFFFF, 510, 608, 0xA28, PALETTE_TO_STRUCT_CONCRETE, STR_BRIDGE_TUBULAR_SILICON, STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL, STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL) }; #undef MBR #undef MN #undef MR #undef MW #undef MC openttd-1.3.3/src/table/gameopt_settings.ini0000644000000000000000000001457312246102566017642 0ustar rootroot; $Id: gameopt_settings.ini 24843 2012-12-23 21:07:12Z frosch $ ; ; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; [pre-amble] static const uint GAME_DIFFICULTY_NUM = 18; static uint16 _old_diff_custom[GAME_DIFFICULTY_NUM]; uint8 _old_diff_level; ///< Old difficulty level from old savegames /* Most of these strings are used both for gameopt-backward compatability * and the settings tables. The rest is here for consistency. */ static const char *_locale_currencies = "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|RON|RUR|SIT|SEK|YTL|SKK|BRL|EEK|custom"; static const char *_locale_units = "imperial|metric|si"; static const char *_town_names = "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovak|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish|italian|catalan"; static const char *_climates = "temperate|arctic|tropic|toyland"; static const char *_autosave_interval = "off|monthly|quarterly|half year|yearly"; static const char *_roadsides = "left|right"; static const char *_savegame_date = "long|short|iso"; #ifdef ENABLE_NETWORK static const char *_server_langs = "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN|AFRIKAANS|CROATIAN|CATALAN|ESTONIAN|GALICIAN|GREEK|LATVIAN"; #endif /* ENABLE_NETWORK */ static const char *_osk_activation = "disabled|double|single|immediately"; static const char *_settings_profiles = "easy|medium|hard"; static const char *_news_display = "off|summarized|full"; static const SettingDesc _gameopt_settings[] = { /* In version 4 a new difficulty setting has been added to the difficulty settings, * town attitude towards demolishing. Needs special handling because some dimwit thought * it funny to have the GameDifficulty struct be an array while it is a struct of * same-sized members * XXX - To save file-space and since values are never bigger than about 10? only * save the first 16 bits in the savegame. Question is why the values are still int32 * and why not byte for example? * 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack * for savegames version 0 - though it is an array, it has to go through the byteswap process */ [post-amble] }; [templates] SDTG_GENERAL = SDTG_GENERAL($name, $sdt_cmd, $sle_cmd, $type, $flags, $guiflags, $var, $length, $def, $min, $max, $interval, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_NULL = SDT_NULL($length, $from, $to), SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $proc, $from, $to, $load, $cat), SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_END = SDT_END() [defaults] flags = 0 guiflags = 0 interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED [SDTG_GENERAL] name = ""diff_custom"" sdt_cmd = SDT_INTLIST sle_cmd = SL_ARR type = SLE_FILE_I16 | SLE_VAR_U16 flags = SLF_NOT_IN_CONFIG var = _old_diff_custom length = 17 def = 0 min = 0 max = 0 full = NULL to = 3 [SDTG_GENERAL] name = ""diff_custom"" sdt_cmd = SDT_INTLIST sle_cmd = SL_ARR type = SLE_UINT16 flags = SLF_NOT_IN_CONFIG var = _old_diff_custom length = 18 def = 0 min = 0 max = 0 full = NULL from = 4 ## [SDTG_VAR] name = ""diff_level"" var = _old_diff_level type = SLE_UINT8 flags = SLF_NOT_IN_CONFIG def = SP_CUSTOM min = SP_EASY max = SP_CUSTOM cat = SC_BASIC [SDT_OMANY] base = GameSettings var = locale.currency type = SLE_UINT8 flags = SLF_NO_NETWORK_SYNC def = 0 max = CUSTOM_CURRENCY_ID full = _locale_currencies cat = SC_BASIC [SDT_OMANY] base = GameSettings var = locale.units type = SLE_UINT8 flags = SLF_NO_NETWORK_SYNC def = 1 max = 2 full = _locale_units cat = SC_BASIC # There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow # these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI. [SDT_OMANY] base = GameSettings var = game_creation.town_name type = SLE_UINT8 def = 0 max = 255 full = _town_names cat = SC_BASIC [SDT_OMANY] base = GameSettings var = game_creation.landscape type = SLE_UINT8 def = 0 max = 3 full = _climates load = ConvertLandscape cat = SC_BASIC [SDT_VAR] base = GameSettings var = game_creation.snow_line_height type = SLE_UINT8 def = DEF_SNOWLINE_HEIGHT * TILE_HEIGHT min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT max = MAX_SNOWLINE_HEIGHT * TILE_HEIGHT to = 21 [SDT_NULL] length = 1 from = 22 to = 164 [SDT_NULL] length = 1 to = 22 [SDTC_OMANY] var = gui.autosave type = SLE_UINT8 from = 23 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1 max = 4 full = _autosave_interval cat = SC_BASIC [SDT_OMANY] base = GameSettings var = vehicle.road_side type = SLE_UINT8 def = 1 max = 1 full = _roadsides cat = SC_BASIC [SDT_END] openttd-1.3.3/src/table/control_codes.h0000644000000000000000000001425512246102566016570 0ustar rootroot/* $Id: control_codes.h 25500 2013-06-28 19:29:08Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file control_codes.h Control codes that are embedded in the translation strings. */ #ifndef CONTROL_CODES_H #define CONTROL_CODES_H /** * List of string control codes used for string formatting, displaying, and * by strgen to generate the language files. */ enum StringControlCode { SCC_CONTROL_START = 0xE000, SCC_CONTROL_END = 0xE1FF, SCC_SPRITE_START = 0xE200, SCC_SPRITE_END = SCC_SPRITE_START + 0xFF, /* This must be the first entry. It's encoded in strings that are saved. */ SCC_ENCODED = SCC_CONTROL_START, /* Display control codes */ SCC_TINYFONT, ///< Switch to small font SCC_BIGFONT, ///< Switch to large font /* Formatting control codes */ SCC_REVISION, SCC_COMPANY_NUM, SCC_STATION_FEATURES, SCC_INDUSTRY_NAME, SCC_WAYPOINT_NAME, SCC_STATION_NAME, SCC_DEPOT_NAME, SCC_TOWN_NAME, SCC_GROUP_NAME, SCC_VEHICLE_NAME, SCC_SIGN_NAME, SCC_COMPANY_NAME, SCC_PRESIDENT_NAME, SCC_ENGINE_NAME, SCC_CURRENCY_SHORT, SCC_CURRENCY_LONG, SCC_CARGO_LONG, SCC_CARGO_SHORT, SCC_CARGO_TINY, SCC_CARGO_LIST, SCC_POWER, SCC_VOLUME_LONG, SCC_VOLUME_SHORT, SCC_WEIGHT_LONG, SCC_WEIGHT_SHORT, SCC_FORCE, SCC_VELOCITY, SCC_HEIGHT, SCC_DATE_TINY, SCC_DATE_SHORT, SCC_DATE_LONG, SCC_DATE_ISO, /* Must be consecutive */ SCC_STRING1, SCC_STRING2, SCC_STRING3, SCC_STRING4, SCC_STRING5, SCC_STRING6, SCC_STRING7, SCC_STRING, SCC_COMMA, SCC_DECIMAL, SCC_NUM, SCC_ZEROFILL_NUM, SCC_HEX, SCC_BYTES, SCC_STRING_ID, SCC_RAW_STRING_POINTER, SCC_PLURAL_LIST, SCC_GENDER_LIST, SCC_GENDER_INDEX, SCC_ARG_INDEX, SCC_SET_CASE, SCC_SWITCH_CASE, /* Colour codes */ SCC_BLUE, SCC_SILVER, SCC_GOLD, SCC_RED, SCC_PURPLE, SCC_LTBROWN, SCC_ORANGE, SCC_GREEN, SCC_YELLOW, SCC_DKGREEN, SCC_CREAM, SCC_BROWN, SCC_WHITE, SCC_LTBLUE, SCC_GRAY, SCC_DKBLUE, SCC_BLACK, SCC_PREVIOUS_COLOUR, /** * The next variables are part of a NewGRF subsystem for creating text strings. * It uses a "stack" of bytes and reads from there. */ SCC_NEWGRF_FIRST, SCC_NEWGRF_PRINT_DWORD_SIGNED = SCC_NEWGRF_FIRST, ///< Read 4 bytes from the stack SCC_NEWGRF_PRINT_WORD_SIGNED, ///< Read 2 bytes from the stack as signed value SCC_NEWGRF_PRINT_BYTE_SIGNED, ///< Read 1 byte from the stack as signed value SCC_NEWGRF_PRINT_WORD_UNSIGNED, ///< Read 2 bytes from the stack as unsigned value SCC_NEWGRF_PRINT_DWORD_CURRENCY, ///< Read 4 bytes from the stack as currency SCC_NEWGRF_PRINT_WORD_STRING_ID, ///< Read 2 bytes from the stack as String ID SCC_NEWGRF_PRINT_WORD_DATE_LONG, ///< Read 2 bytes from the stack as base 1920 date SCC_NEWGRF_PRINT_WORD_DATE_SHORT, ///< Read 2 bytes from the stack as base 1920 date SCC_NEWGRF_PRINT_WORD_SPEED, ///< Read 2 bytes from the stack as signed speed SCC_NEWGRF_PRINT_WORD_VOLUME_LONG, ///< Read 2 bytes from the stack as long signed volume SCC_NEWGRF_PRINT_WORD_WEIGHT_LONG, ///< Read 2 bytes from the stack as long unsigned weight SCC_NEWGRF_PRINT_WORD_STATION_NAME, ///< Read 2 bytes from the stack as station name SCC_NEWGRF_PRINT_QWORD_CURRENCY, ///< Read 8 bytes from the stack as currency SCC_NEWGRF_PRINT_BYTE_HEX, ///< Read 1 byte from the stack and print it as hex SCC_NEWGRF_PRINT_WORD_HEX, ///< Read 2 bytes from the stack and print it as hex SCC_NEWGRF_PRINT_DWORD_HEX, ///< Read 4 bytes from the stack and print it as hex SCC_NEWGRF_PRINT_QWORD_HEX, ///< Read 8 bytes from the stack and print it as hex SCC_NEWGRF_PRINT_DWORD_DATE_LONG, ///< Read 4 bytes from the stack as base 0 date SCC_NEWGRF_PRINT_DWORD_DATE_SHORT, ///< Read 4 bytes from the stack as base 0 date SCC_NEWGRF_PRINT_WORD_POWER, ///< Read 2 bytes from the stack as unsigned power SCC_NEWGRF_PRINT_WORD_VOLUME_SHORT, ///< Read 2 bytes from the stack as short signed volume SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT, ///< Read 2 bytes from the stack as short unsigned weight SCC_NEWGRF_PUSH_WORD, ///< Pushes 2 bytes onto the stack SCC_NEWGRF_UNPRINT, ///< "Unprints" the given number of bytes from the string SCC_NEWGRF_DISCARD_WORD, ///< Discard the next two bytes SCC_NEWGRF_ROTATE_TOP_4_WORDS, ///< Rotate the top 4 words of the stack (W4 W1 W2 W3) SCC_NEWGRF_LAST = SCC_NEWGRF_ROTATE_TOP_4_WORDS, SCC_NEWGRF_STRINL, ///< Inline another string at the current position, StringID is encoded in the string /* Special printable symbols. * These are mapped to the original glyphs */ SCC_LESS_THAN = SCC_SPRITE_START + 0x3C, SCC_GREATER_THAN = SCC_SPRITE_START + 0x3E, SCC_UP_ARROW = SCC_SPRITE_START + 0xA0, SCC_DOWN_ARROW = SCC_SPRITE_START + 0xAA, SCC_CHECKMARK = SCC_SPRITE_START + 0xAC, SCC_CROSS = SCC_SPRITE_START + 0xAD, SCC_RIGHT_ARROW = SCC_SPRITE_START + 0xAF, SCC_TRAIN = SCC_SPRITE_START + 0xB4, SCC_LORRY = SCC_SPRITE_START + 0xB5, SCC_BUS = SCC_SPRITE_START + 0xB6, SCC_PLANE = SCC_SPRITE_START + 0xB7, SCC_SHIP = SCC_SPRITE_START + 0xB8, SCC_SUPERSCRIPT_M1 = SCC_SPRITE_START + 0xB9, SCC_SMALL_UP_ARROW = SCC_SPRITE_START + 0xBC, SCC_SMALL_DOWN_ARROW = SCC_SPRITE_START + 0xBD, }; #endif /* CONTROL_CODES_H */ openttd-1.3.3/src/table/genland.h0000644000000000000000000000506312246102566015340 0ustar rootroot/* $Id: genland.h 17248 2009-08-21 20:21:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file genland.h Table used to generate deserts and/or rain forests. */ #define M(x, y) {x, y} static const TileIndexDiffC _make_desert_or_rainforest_data[] = { M(-5, -6), M(-4, -6), M(-3, -6), M(-2, -6), M(-1, -6), M( 0, -5), M( 1, -5), M( 2, -5), M( 3, -5), M( 4, -5), M( 5, -5), M(-5, -5), M(-4, -5), M(-3, -5), M(-2, -5), M(-1, -5), M( 0, -4), M( 1, -4), M( 2, -4), M( 3, -4), M( 4, -4), M( 5, -4), M(-5, -4), M(-4, -4), M(-3, -4), M(-2, -4), M(-1, -4), M( 0, -3), M( 1, -3), M( 2, -3), M( 3, -3), M( 4, -3), M( 5, -3), M(-5, -3), M(-4, -3), M(-3, -3), M(-2, -3), M(-1, -3), M( 0, -2), M( 1, -2), M( 2, -2), M( 3, -2), M( 4, -2), M( 5, -2), M(-5, -2), M(-4, -2), M(-3, -2), M(-2, -2), M(-1, -2), M( 0, -1), M( 1, -1), M( 2, -1), M( 3, -1), M( 4, -1), M( 5, -1), M(-5, -1), M(-4, -1), M(-3, -1), M(-2, -1), M(-1, -1), M( 0, 0), M( 1, 0), M( 2, 0), M( 3, 0), M( 4, 0), M( 5, 0), M(-5, 0), M(-4, 0), M(-3, 0), M(-2, 0), M(-1, 0), M( 0, 1), M( 1, 1), M( 2, 1), M( 3, 1), M( 4, 1), M( 5, 1), M(-5, 1), M(-4, 1), M(-3, 1), M(-2, 1), M(-1, 1), M( 0, 2), M( 1, 2), M( 2, 2), M( 3, 2), M( 4, 2), M( 5, 2), M(-5, 2), M(-4, 2), M(-3, 2), M(-2, 2), M(-1, 2), M( 0, 3), M( 1, 3), M( 2, 3), M( 3, 3), M( 4, 3), M( 5, 3), M(-5, 3), M(-4, 3), M(-3, 3), M(-2, 3), M(-1, 3), M( 0, 4), M( 1, 4), M( 2, 4), M( 3, 4), M( 4, 4), M( 5, 4), M(-5, 4), M(-4, 4), M(-3, 4), M(-2, 4), M(-1, 4), M( 0, 5), M( 1, 5), M( 2, 5), M( 3, 5), M( 4, 5), M( 5, 5), M( 6, -3), M(-6, -4), M(-3, 5), M(-3, -7), M( 6, -2), M(-6, -3), M(-2, 5), M(-2, -7), M( 6, -1), M(-6, -2), M(-1, 5), M(-1, -7), M( 6, 0), M(-6, -1), M( 0, 6), M( 0, -6), M( 6, 1), M(-6, 0), M( 1, 6), M( 1, -6), M( 6, 2), M(-6, 1), M( 2, 6), M( 2, -6), M( 6, 3), M(-6, 2), M( 3, 6), M( 3, -6) }; #undef M openttd-1.3.3/src/table/tree_land.h0000644000000000000000000005204612246102566015670 0ustar rootroot/* $Id: tree_land.h 17455 2009-09-07 13:38:57Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tree_land.h Sprites to use and how to display them for tree tiles. */ #ifndef TREE_LAND_H #define TREE_LAND_H static const byte _tree_base_by_landscape[4] = {0, 12, 20, 32}; static const byte _tree_count_by_landscape[4] = {12, 8, 12, 9}; struct TreePos { uint8 x; uint8 y; }; static const TreePos _tree_layout_xy[][4] = { { { 9, 3 }, { 1, 8 }, { 0, 0 }, { 8, 9 } }, { { 4, 4 }, { 9, 1 }, { 6, 9 }, { 0, 9 } }, { { 9, 1 }, { 0, 9 }, { 6, 6 }, { 3, 0 } }, { { 3, 9 }, { 8, 2 }, { 9, 9 }, { 1, 5 } } }; static const PalSpriteID _tree_layout_sprite[164 + (79 - 48 + 1)][4] = { { { 0x652, PAL_NONE }, { 0x659, PAL_NONE }, { 0x660, PAL_NONE }, { 0x667, PAL_NONE } }, // 0 { { 0x652, PAL_NONE }, { 0x667, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x675, PAL_NONE } }, // 1 { { 0x652, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x659, PAL_NONE }, { 0x675, PAL_NONE } }, // 2 { { 0x652, PAL_NONE }, { 0x652, PAL_NONE }, { 0x660, PAL_NONE }, { 0x66e, PAL_NONE } }, // 3 { { 0x660, PAL_NONE }, { 0x667, PAL_NONE }, { 0x659, PAL_NONE }, { 0x652, PAL_NONE } }, // 4 { { 0x660, PAL_NONE }, { 0x675, PAL_NONE }, { 0x660, PAL_NONE }, { 0x660, PAL_NONE } }, // 5 { { 0x660, PAL_NONE }, { 0x652, PAL_NONE }, { 0x652, PAL_NONE }, { 0x66e, PAL_NONE } }, // 6 { { 0x660, PAL_NONE }, { 0x675, PAL_NONE }, { 0x667, PAL_NONE }, { 0x659, PAL_NONE } }, // 7 { { 0x675, PAL_NONE }, { 0x660, PAL_NONE }, { 0x675, PAL_NONE }, { 0x675, PAL_NONE } }, // 8 { { 0x675, PAL_NONE }, { 0x659, PAL_NONE }, { 0x652, PAL_NONE }, { 0x652, PAL_NONE } }, // 9 { { 0x675, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x652, PAL_NONE }, { 0x652, PAL_NONE } }, // 10 { { 0x675, PAL_NONE }, { 0x667, PAL_NONE }, { 0x659, PAL_NONE }, { 0x667, PAL_NONE } }, // 11 { { 0x628, PAL_NONE }, { 0x652, PAL_NONE }, { 0x660, PAL_NONE }, { 0x62f, PAL_NONE } }, // 12 { { 0x628, PAL_NONE }, { 0x636, PAL_NONE }, { 0x675, PAL_NONE }, { 0x644, PAL_NONE } }, // 13 { { 0x628, PAL_NONE }, { 0x652, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x66e, PAL_NONE } }, // 14 { { 0x628, PAL_NONE }, { 0x667, PAL_NONE }, { 0x644, PAL_NONE }, { 0x652, PAL_NONE } }, // 15 { { 0x644, PAL_NONE }, { 0x659, PAL_NONE }, { 0x660, PAL_NONE }, { 0x628, PAL_NONE } }, // 16 { { 0x644, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x659, PAL_NONE }, { 0x636, PAL_NONE } }, // 17 { { 0x644, PAL_NONE }, { 0x675, PAL_NONE }, { 0x652, PAL_NONE }, { 0x63d, PAL_NONE } }, // 18 { { 0x644, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x652, PAL_NONE } }, // 19 { { 0x636, PAL_NONE }, { 0x636, PAL_NONE }, { 0x628, PAL_NONE }, { 0x636, PAL_NONE } }, // 20 { { 0x636, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 21 { { 0x636, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 22 { { 0x636, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 23 { { 0x64b, PAL_NONE }, { 0x628, PAL_NONE }, { 0x62f, PAL_NONE }, { 0x636, PAL_NONE } }, // 24 { { 0x64b, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x644, PAL_NONE }, { 0x636, PAL_NONE } }, // 25 { { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x63d, PAL_NONE }, { 0x628, PAL_NONE } }, // 26 { { 0x64b, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x63d, PAL_NONE } }, // 27 { { 0x62f, PAL_NONE }, { 0x644, PAL_NONE }, { 0x644, PAL_NONE }, { 0x636, PAL_NONE } }, // 28 { { 0x62f, PAL_NONE }, { 0x62f, PAL_NONE }, { 0x636, PAL_NONE }, { 0x628, PAL_NONE } }, // 29 { { 0x62f, PAL_NONE }, { 0x64b, PAL_NONE }, { 0x636, PAL_NONE }, { 0x636, PAL_NONE } }, // 30 { { 0x62f, PAL_NONE }, { 0x636, PAL_NONE }, { 0x62f, PAL_NONE }, { 0x636, PAL_NONE } }, // 31 { { 0x67c, PAL_NONE }, { 0x675, PAL_NONE }, { 0x683, PAL_NONE }, { 0x67c, PAL_NONE } }, // 32 { { 0x67c, PAL_NONE }, { 0x69f, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x659, PAL_NONE } }, // 33 { { 0x67c, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x6a6, PAL_NONE } }, // 34 { { 0x67c, PAL_NONE }, { 0x691, PAL_NONE }, { 0x66e, PAL_NONE }, { 0x68a, PAL_NONE } }, // 35 { { 0x68a, PAL_NONE }, { 0x68a, PAL_NONE }, { 0x698, PAL_NONE }, { 0x68a, PAL_NONE } }, // 36 { { 0x68a, PAL_NONE }, { 0x698, PAL_NONE }, { 0x683, PAL_NONE }, { 0x68a, PAL_NONE } }, // 37 { { 0x68a, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x691, PAL_NONE }, { 0x68a, PAL_NONE } }, // 38 { { 0x68a, PAL_NONE }, { 0x683, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x69f, PAL_NONE } }, // 39 { { 0x698, PAL_NONE }, { 0x68a, PAL_NONE }, { 0x698, PAL_NONE }, { 0x652, PAL_NONE } }, // 40 { { 0x698, PAL_NONE }, { 0x698, PAL_NONE }, { 0x660, PAL_NONE }, { 0x667, PAL_NONE } }, // 41 { { 0x698, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x698, PAL_NONE } }, // 42 { { 0x698, PAL_NONE }, { 0x698, PAL_NONE }, { 0x698, PAL_NONE }, { 0x691, PAL_NONE } }, // 43 { { 0x6a6, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x660, PAL_NONE } }, // 44 { { 0x6a6, PAL_NONE }, { 0x69f, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x652, PAL_NONE } }, // 45 { { 0x6a6, PAL_NONE }, { 0x67c, PAL_NONE }, { 0x6a6, PAL_NONE }, { 0x691, PAL_NONE } }, // 46 { { 0x6a6, PAL_NONE }, { 0x691, PAL_NONE }, { 0x69f, PAL_NONE }, { 0x6a6, PAL_NONE } }, // 47 { { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 48 { { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6d0, PAL_NONE } }, // 49 { { 0x6ad, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 50 { { 0x6ad, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 51 { { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 52 { { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6c9, PAL_NONE } }, // 53 { { 0x6d0, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 54 { { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 55 { { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE } }, // 56 { { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 57 { { 0x6d7, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 58 { { 0x6d7, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 59 { { 0x6c2, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 60 { { 0x6c2, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 61 { { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 62 { { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6c9, PAL_NONE } }, // 63 { { 0x6c9, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6b4, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 64 { { 0x6c9, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6d7, PAL_NONE } }, // 65 { { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 66 { { 0x6c9, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 67 { { 0x6b4, PAL_NONE }, { 0x6b4, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6c9, PAL_NONE } }, // 68 { { 0x6b4, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6ad, PAL_NONE } }, // 69 { { 0x6b4, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 70 { { 0x6b4, PAL_NONE }, { 0x6ad, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 71 { { 0x6bb, PAL_NONE }, { 0x6d0, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 72 { { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6d7, PAL_NONE } }, // 73 { { 0x6bb, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 74 { { 0x6bb, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 75 { { 0x6de, PAL_NONE }, { 0x6d7, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6c2, PAL_NONE } }, // 76 { { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6d0, PAL_NONE } }, // 77 { { 0x6de, PAL_NONE }, { 0x6de, PAL_NONE }, { 0x6bb, PAL_NONE }, { 0x6b4, PAL_NONE } }, // 78 { { 0x6de, PAL_NONE }, { 0x6c9, PAL_NONE }, { 0x6c2, PAL_NONE }, { 0x6de, PAL_NONE } }, // 79 { { 0x72b, PAL_NONE }, { 0x732, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x739, PAL_NONE } }, // 80 { { 0x72b, PAL_NONE }, { 0x747, PAL_NONE }, { 0x755, PAL_NONE }, { 0x72b, PAL_NONE } }, // 81 { { 0x72b, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x76a, PAL_NONE }, { 0x786, PAL_NONE } }, // 82 { { 0x72b, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x72b, PAL_NONE } }, // 83 { { 0x732, PAL_NONE }, { 0x732, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x739, PAL_NONE } }, // 84 { { 0x732, PAL_NONE }, { 0x747, PAL_NONE }, { 0x732, PAL_NONE }, { 0x732, PAL_NONE } }, // 85 { { 0x732, PAL_NONE }, { 0x732, PAL_NONE }, { 0x755, PAL_NONE }, { 0x794, PAL_NONE } }, // 86 { { 0x732, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x732, PAL_NONE }, { 0x78d, PAL_NONE } }, // 87 { { 0x747, PAL_NONE }, { 0x732, PAL_NONE }, { 0x747, PAL_NONE }, { 0x740, PAL_NONE } }, // 88 { { 0x747, PAL_NONE }, { 0x747, PAL_NONE }, { 0x732, PAL_NONE }, { 0x76a, PAL_NONE } }, // 89 { { 0x747, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x755, PAL_NONE }, { 0x747, PAL_NONE } }, // 90 { { 0x747, PAL_NONE }, { 0x786, PAL_NONE }, { 0x732, PAL_NONE }, { 0x747, PAL_NONE } }, // 91 { { 0x74e, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x794, PAL_NONE } }, // 92 { { 0x74e, PAL_NONE }, { 0x755, PAL_NONE }, { 0x732, PAL_NONE }, { 0x74e, PAL_NONE } }, // 93 { { 0x74e, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x786, PAL_NONE }, { 0x747, PAL_NONE } }, // 94 { { 0x74e, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x732, PAL_NONE }, { 0x794, PAL_NONE } }, // 95 { { 0x76a, PAL_NONE }, { 0x76a, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x74e, PAL_NONE } }, // 96 { { 0x76a, PAL_NONE }, { 0x794, PAL_NONE }, { 0x732, PAL_NONE }, { 0x76a, PAL_NONE } }, // 97 { { 0x76a, PAL_NONE }, { 0x732, PAL_NONE }, { 0x786, PAL_NONE }, { 0x76a, PAL_NONE } }, // 98 { { 0x76a, PAL_NONE }, { 0x786, PAL_NONE }, { 0x732, PAL_NONE }, { 0x78d, PAL_NONE } }, // 99 { { 0x78d, PAL_NONE }, { 0x78d, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x794, PAL_NONE } }, // 100 { { 0x78d, PAL_NONE }, { 0x732, PAL_NONE }, { 0x739, PAL_NONE }, { 0x747, PAL_NONE } }, // 101 { { 0x78d, PAL_NONE }, { 0x732, PAL_NONE }, { 0x786, PAL_NONE }, { 0x76a, PAL_NONE } }, // 102 { { 0x78d, PAL_NONE }, { 0x786, PAL_NONE }, { 0x78d, PAL_NONE }, { 0x794, PAL_NONE } }, // 103 { { 0x786, PAL_NONE }, { 0x786, PAL_NONE }, { 0x740, PAL_NONE }, { 0x732, PAL_NONE } }, // 104 { { 0x786, PAL_NONE }, { 0x786, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x732, PAL_NONE } }, // 105 { { 0x786, PAL_NONE }, { 0x732, PAL_NONE }, { 0x786, PAL_NONE }, { 0x786, PAL_NONE } }, // 106 { { 0x786, PAL_NONE }, { 0x786, PAL_NONE }, { 0x78d, PAL_NONE }, { 0x794, PAL_NONE } }, // 107 { { 0x778, PAL_NONE }, { 0x778, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x778, PAL_NONE } }, // 108 { { 0x778, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x778, PAL_NONE }, { 0x77f, PAL_NONE } }, // 109 { { 0x778, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x77f, PAL_NONE }, { 0x778, PAL_NONE } }, // 110 { { 0x778, PAL_NONE }, { 0x778, PAL_NONE }, { 0x778, PAL_NONE }, { 0x77f, PAL_NONE } }, // 111 { { 0x75c, PAL_NONE }, { 0x71d, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x724, PAL_NONE } }, // 112 { { 0x75c, PAL_NONE }, { 0x72b, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x763, PAL_NONE } }, // 113 { { 0x75c, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x771, PAL_NONE }, { 0x71d, PAL_NONE } }, // 114 { { 0x75c, PAL_NONE }, { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x75c, PAL_NONE } }, // 115 { { 0x771, PAL_NONE }, { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x71d, PAL_NONE } }, // 116 { { 0x771, PAL_NONE }, { 0x747, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x771, PAL_NONE } }, // 117 { { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x771, PAL_NONE }, { 0x724, PAL_NONE } }, // 118 { { 0x771, PAL_NONE }, { 0x771, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x763, PAL_NONE } }, // 119 { { 0x71d, PAL_NONE }, { 0x71d, PAL_NONE }, { 0x771, PAL_NONE }, { 0x724, PAL_NONE } }, // 120 { { 0x71d, PAL_NONE }, { 0x74e, PAL_NONE }, { 0x763, PAL_NONE }, { 0x71d, PAL_NONE } }, // 121 { { 0x71d, PAL_NONE }, { 0x724, PAL_NONE }, { 0x794, PAL_NONE }, { 0x71d, PAL_NONE } }, // 122 { { 0x71d, PAL_NONE }, { 0x71d, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x78d, PAL_NONE } }, // 123 { { 0x794, PAL_NONE }, { 0x724, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x794, PAL_NONE } }, // 124 { { 0x794, PAL_NONE }, { 0x794, PAL_NONE }, { 0x75c, PAL_NONE }, { 0x71d, PAL_NONE } }, // 125 { { 0x794, PAL_NONE }, { 0x724, PAL_NONE }, { 0x794, PAL_NONE }, { 0x71d, PAL_NONE } }, // 126 { { 0x794, PAL_NONE }, { 0x794, PAL_NONE }, { 0x771, PAL_NONE }, { 0x78d, PAL_NONE } }, // 127 { { 0x79b, PALETTE_TO_RED }, { 0x79b, PALETTE_TO_PALE_GREEN }, { 0x79b, PALETTE_TO_MAUVE }, { 0x79b, PALETTE_TO_PURPLE } }, // 128 { { 0x79b, PAL_NONE }, { 0x79b, PALETTE_TO_GREY }, { 0x79b, PALETTE_TO_GREEN }, { 0x79b, PALETTE_TO_WHITE } }, // 129 { { 0x79b, PALETTE_TO_GREEN }, { 0x79b, PALETTE_TO_ORANGE }, { 0x79b, PALETTE_TO_PINK }, { 0x79b, PAL_NONE } }, // 130 { { 0x79b, PALETTE_TO_YELLOW }, { 0x79b, PALETTE_TO_RED }, { 0x79b, PALETTE_TO_CREAM }, { 0x79b, PALETTE_TO_RED } }, // 131 { { 0x7a2, PAL_NONE }, { 0x7a2, PALETTE_TO_RED }, { 0x7a2, PALETTE_TO_PINK }, { 0x7a2, PALETTE_TO_PURPLE } }, // 132 { { 0x7a2, PALETTE_TO_MAUVE }, { 0x7a2, PALETTE_TO_GREEN }, { 0x7a2, PALETTE_TO_PINK }, { 0x7a2, PALETTE_TO_GREY } }, // 133 { { 0x7a2, PALETTE_TO_RED }, { 0x7a2, PALETTE_TO_PALE_GREEN }, { 0x7a2, PALETTE_TO_YELLOW }, { 0x7a2, PALETTE_TO_WHITE } }, // 134 { { 0x7a2, PALETTE_TO_ORANGE }, { 0x7a2, PALETTE_TO_MAUVE }, { 0x7a2, PALETTE_TO_CREAM }, { 0x7a2, PALETTE_TO_BROWN } }, // 135 { { 0x7a9, PALETTE_TO_RED }, { 0x7a9, PAL_NONE }, { 0x7a9, PALETTE_TO_ORANGE }, { 0x7a9, PALETTE_TO_GREY } }, // 136 { { 0x7a9, PALETTE_TO_ORANGE }, { 0x7a9, PALETTE_TO_GREEN }, { 0x7a9, PALETTE_TO_PALE_GREEN }, { 0x7a9, PALETTE_TO_MAUVE } }, // 137 { { 0x7a9, PALETTE_TO_PINK }, { 0x7a9, PALETTE_TO_RED }, { 0x7a9, PALETTE_TO_GREEN }, { 0x7a9, PALETTE_TO_BROWN } }, // 138 { { 0x7a9, PALETTE_TO_GREEN }, { 0x7a9, PAL_NONE }, { 0x7a9, PALETTE_TO_RED }, { 0x7a9, PALETTE_TO_CREAM } }, // 139 { { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 140 { { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 141 { { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 142 { { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE }, { 0x7b0, PAL_NONE } }, // 143 { { 0x7b7, PALETTE_TO_PINK }, { 0x7b7, PALETTE_TO_RED }, { 0x7b7, PALETTE_TO_ORANGE }, { 0x7b7, PALETTE_TO_MAUVE } }, // 144 { { 0x7b7, PALETTE_TO_RED }, { 0x7b7, PAL_NONE }, { 0x7b7, PALETTE_TO_GREY }, { 0x7b7, PALETTE_TO_CREAM } }, // 145 { { 0x7b7, PALETTE_TO_GREEN }, { 0x7b7, PALETTE_TO_BROWN }, { 0x7b7, PALETTE_TO_PINK }, { 0x7b7, PALETTE_TO_RED } }, // 146 { { 0x7b7, PAL_NONE }, { 0x7b7, PALETTE_TO_PALE_GREEN }, { 0x7b7, PALETTE_TO_ORANGE }, { 0x7b7, PALETTE_TO_RED } }, // 147 { { 0x7be, PALETTE_TO_RED }, { 0x7be, PALETTE_TO_PINK }, { 0x7be, PALETTE_TO_GREEN }, { 0x7be, PAL_NONE } }, // 148 { { 0x7be, PALETTE_TO_GREEN }, { 0x7be, PALETTE_TO_BROWN }, { 0x7be, PALETTE_TO_PURPLE }, { 0x7be, PALETTE_TO_GREY } }, // 149 { { 0x7be, PALETTE_TO_MAUVE }, { 0x7be, PALETTE_TO_CREAM }, { 0x7be, PALETTE_TO_ORANGE }, { 0x7be, PALETTE_TO_RED } }, // 150 { { 0x7be, PAL_NONE }, { 0x7be, PALETTE_TO_RED }, { 0x7be, PALETTE_TO_PALE_GREEN }, { 0x7be, PALETTE_TO_PINK } }, // 151 { { 0x7c5, PALETTE_TO_YELLOW }, { 0x7c5, PALETTE_TO_RED }, { 0x7c5, PALETTE_TO_WHITE }, { 0x7c5, PALETTE_TO_CREAM } }, // 152 { { 0x7c5, PALETTE_TO_RED }, { 0x7c5, PALETTE_TO_PALE_GREEN }, { 0x7c5, PALETTE_TO_BROWN }, { 0x7c5, PALETTE_TO_YELLOW } }, // 153 { { 0x7c5, PAL_NONE }, { 0x7c5, PALETTE_TO_PURPLE }, { 0x7c5, PALETTE_TO_GREEN }, { 0x7c5, PALETTE_TO_YELLOW } }, // 154 { { 0x7c5, PALETTE_TO_PINK }, { 0x7c5, PALETTE_TO_CREAM }, { 0x7c5, PAL_NONE }, { 0x7c5, PALETTE_TO_GREY } }, // 155 { { 0x7cc, PALETTE_TO_YELLOW }, { 0x7cc, PALETTE_TO_GREY }, { 0x7cc, PALETTE_TO_PURPLE }, { 0x7cc, PALETTE_TO_BROWN } }, // 156 { { 0x7cc, PALETTE_TO_GREEN }, { 0x7cc, PAL_NONE }, { 0x7cc, PALETTE_TO_CREAM }, { 0x7cc, PALETTE_TO_WHITE } }, // 157 { { 0x7cc, PALETTE_TO_RED }, { 0x7cc, PALETTE_TO_PALE_GREEN }, { 0x7cc, PALETTE_TO_MAUVE }, { 0x7cc, PALETTE_TO_RED } }, // 158 { { 0x7cc, PALETTE_TO_PINK }, { 0x7cc, PALETTE_TO_ORANGE }, { 0x7cc, PALETTE_TO_GREEN }, { 0x7cc, PALETTE_TO_YELLOW } }, // 159 { { 0x7d3, PALETTE_TO_RED }, { 0x7d3, PALETTE_TO_PINK }, { 0x7d3, PALETTE_TO_BROWN }, { 0x7d3, PALETTE_TO_WHITE } }, // 160 { { 0x7d3, PALETTE_TO_GREEN }, { 0x7d3, PALETTE_TO_ORANGE }, { 0x7d3, PALETTE_TO_GREY }, { 0x7d3, PALETTE_TO_MAUVE } }, // 161 { { 0x7d3, PALETTE_TO_YELLOW }, { 0x7d3, PALETTE_TO_PALE_GREEN }, { 0x7d3, PAL_NONE }, { 0x7d3, PALETTE_TO_CREAM } }, // 162 { { 0x7d3, PALETTE_TO_GREY }, { 0x7d3, PALETTE_TO_RED }, { 0x7d3, PALETTE_TO_WHITE }, { 0x7d3, PAL_NONE } }, // 163 /* the extra things follow */ { { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 0 { { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x708, PAL_NONE } }, // 1 { { 0x6e5, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 2 { { 0x6e5, PAL_NONE }, { 0x708, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 3 { { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 4 { { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x701, PAL_NONE } }, // 5 { { 0x708, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 6 { { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 7 { { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE } }, // 8 { { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 9 { { 0x70f, PAL_NONE }, { 0x708, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 10 { { 0x70f, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 11 { { 0x6fa, PAL_NONE }, { 0x708, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 12 { { 0x6fa, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 13 { { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 14 { { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x701, PAL_NONE } }, // 15 { { 0x701, PAL_NONE }, { 0x708, PAL_NONE }, { 0x6ec, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 16 { { 0x701, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x716, PAL_NONE }, { 0x70f, PAL_NONE } }, // 17 { { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 18 { { 0x701, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 19 { { 0x6ec, PAL_NONE }, { 0x6ec, PAL_NONE }, { 0x716, PAL_NONE }, { 0x701, PAL_NONE } }, // 20 { { 0x6ec, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6e5, PAL_NONE } }, // 21 { { 0x6ec, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 22 { { 0x6ec, PAL_NONE }, { 0x6e5, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 23 { { 0x6f3, PAL_NONE }, { 0x708, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 24 { { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x70f, PAL_NONE } }, // 25 { { 0x6f3, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 26 { { 0x6f3, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 27 { { 0x716, PAL_NONE }, { 0x70f, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6fa, PAL_NONE } }, // 28 { { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x716, PAL_NONE }, { 0x708, PAL_NONE } }, // 29 { { 0x716, PAL_NONE }, { 0x716, PAL_NONE }, { 0x6f3, PAL_NONE }, { 0x6ec, PAL_NONE } }, // 30 { { 0x716, PAL_NONE }, { 0x701, PAL_NONE }, { 0x6fa, PAL_NONE }, { 0x716, PAL_NONE } }, // 31 }; #endif /* TREE_LAND_H */ openttd-1.3.3/src/table/town_land.h0000644000000000000000000050604112246102566015717 0ustar rootroot/* $Id: town_land.h 24177 2012-04-24 19:19:57Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file town_land.h Sprites to use and how to display them for town tiles. */ /** * Writes the data into the Town Tile Drawing Struct * @param s1 The first sprite of the building, mostly the ground sprite * @param p1 The first sprite's palette of the building, mostly the ground sprite * @param s2 The second sprite of the building. * @param p2 The second sprite's palette of the building. * @param sx The x-position of the sprite within the tile * @param sy the y-position of the sprite within the tile * @param w the width of the sprite * @param h the height of the sprite * @param dz the virtual height of the sprite * @param p set to 1 if a lift is present () * @see DrawBuildingsTileStruct */ #define M(s1, p1, s2, p2, sx, sy, w, h, dz, p) { { s1, p1 }, { s2, p2 }, sx, sy, w, h, dz, p} /** structure of houses graphics*/ static const DrawBuildingsTileStruct _town_draw_tile_data[] = { M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PAL_NONE, 0, 0, 14, 14, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PAL_NONE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58f, PAL_NONE, 0, 0, 14, 14, 60, 0), M( 0x590, PAL_NONE, 0x58f, PAL_NONE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PAL_NONE, 0, 0, 14, 14, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PAL_NONE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PAL_NONE, 0, 0, 14, 14, 60, 0), M( 0x590, PAL_NONE, 0x591, PAL_NONE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), M( 0x590, PAL_NONE, 0x591, PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58d, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x58e, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x591, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), M( 0x590, PAL_NONE, 0x591, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PAL_NONE, 0, 0, 14, 16, 11, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PAL_NONE, 0, 0, 14, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PAL_NONE, 0, 0, 14, 16, 33, 0), M( 0x595, PAL_NONE, 0x594, PAL_NONE, 0, 0, 14, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 11, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 11, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x592, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 11, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x593, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x594, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), M( 0x595, PAL_NONE, 0x594, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x596, PAL_NONE, 0, 0, 12, 12, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x597, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( 0x599, PAL_NONE, 0x598, PAL_NONE, 0, 0, 12, 12, 17, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PAL_NONE, 0, 0, 14, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PAL_NONE, 0, 0, 14, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PAL_NONE, 0, 0, 14, 16, 35, 0), M( 0x59d, PAL_NONE, 0x59c, PAL_NONE, 0, 0, 14, 16, 35, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_RED, 0, 0, 14, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_RED, 0, 0, 14, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_RED, 0, 0, 14, 16, 35, 0), M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_RED, 0, 0, 14, 16, 35, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59a, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59b, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), M( 0x59d, PAL_NONE, 0x59c, PALETTE_CHURCH_CREAM, 0, 0, 14, 16, 35, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5a2, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a0, PAL_NONE, 0, 0, 15, 15, 5, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a1, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11d9, PAL_NONE, 0, 0, 15, 15, 53, 1), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a4, PAL_NONE, 0, 0, 16, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a5, PAL_NONE, 0, 0, 16, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5a7, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a4, PAL_NONE, 0, 0, 16, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a5, PAL_NONE, 0, 0, 16, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5a7, PAL_NONE, 0x5a6, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5dd, PAL_NONE, 0x5de, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5df, PAL_NONE, 0x5e0, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5dd, PAL_NONE, 0x5de, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5df, PAL_NONE, 0x5e0, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), M( 0x5e1, PAL_NONE, 0x5e2, PAL_NONE, 0, 0, 16, 16, 16, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a8, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5a9, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5aa, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ab, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ac, PAL_NONE, 0, 0, 16, 16, 38, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ad, PAL_NONE, 0, 0, 16, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ae, PAL_NONE, 6, 5, 3, 6, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x0, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5af, PAL_NONE, 3, 3, 9, 9, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_GRASS_TILE,PAL_NONE, 0x5b1, PAL_NONE, 0, 0, 16, 16, 15, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PAL_NONE, 0, 0, 16, 16, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PAL_NONE, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PAL_NONE, 0, 0, 16, 16, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PAL_NONE, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b2, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 8, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b3, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b4, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b5, PAL_NONE, 1, 3, 14, 11, 7, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b6, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5b7, PAL_NONE, 1, 3, 14, 11, 53, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b8, PAL_NONE, 3, 1, 11, 14, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5b9, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5ba, PAL_NONE, 3, 1, 11, 14, 28, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PAL_NONE, 2, 0, 13, 16, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PAL_NONE, 2, 0, 13, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PAL_NONE, 2, 0, 13, 16, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PAL_NONE, 2, 0, 13, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PAL_NONE, 2, 0, 13, 16, 46, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bb, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 6, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bc, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 45, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5bd, PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_RED, 2, 0, 13, 16, 13, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_RED, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_BLUE, 2, 0, 13, 16, 13, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_ORANGE, 2, 0, 13, 16, 13, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5be, PALETTE_TO_GREEN, 2, 0, 13, 16, 13, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5bf, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c0, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c0, PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c1, PAL_NONE, 1, 2, 15, 12, 4, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c2, PAL_NONE, 1, 2, 15, 12, 24, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c3, PAL_NONE, 1, 2, 15, 12, 31, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c4, PAL_NONE, 1, 0, 14, 15, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c5, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x5c6, PAL_NONE, 1, 0, 14, 15, 42, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_N, PAL_NONE, 0x5cb, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_E, PAL_NONE, 0x5cc, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_W, PAL_NONE, 0x5cd, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_GRND_STADIUM_S, PAL_NONE, 0x5ce, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d3, PAL_NONE, 0x5d4, PAL_NONE, 0, 0, 16, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d5, PAL_NONE, 0x5d6, PAL_NONE, 0, 0, 16, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), M( 0x5cf, PAL_NONE, 0x5d0, PAL_NONE, 0, 0, 16, 16, 21, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), M( 0x5d1, PAL_NONE, 0x5d2, PAL_NONE, 0, 0, 16, 16, 11, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d7, PAL_NONE, 0x5d8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5d9, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5da, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5db, PAL_NONE, 0x5dc, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5db, PAL_NONE, 0x5dc, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x622, PAL_NONE, 0x623, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x624, PAL_NONE, 0x625, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x626, PAL_NONE, 0x627, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x626, PAL_NONE, 0x627, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5e3, PAL_NONE, 0x5e4, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5e5, PAL_NONE, 0x5e6, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5e7, PAL_NONE, 0x5e8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5e7, PAL_NONE, 0x5e8, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5e9, PAL_NONE, 0x5ea, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5eb, PAL_NONE, 0x5ec, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5ed, PAL_NONE, 0x5ee, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5ed, PAL_NONE, 0x5ee, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5ef, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f0, PAL_NONE, 0x5f1, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5ef, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f0, PAL_NONE, 0x5f1, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f2, PAL_NONE, 0x5f3, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f4, PAL_NONE, 0x5f5, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f6, PAL_NONE, 0x5f7, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f4, PAL_NONE, 0x5f5, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f6, PAL_NONE, 0x5f7, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5f8, PAL_NONE, 0x5f9, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x5fa, PAL_NONE, 0x5fb, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fc, PAL_NONE, 0x5fd, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fa, PAL_NONE, 0x5fb, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fc, PAL_NONE, 0x5fd, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x5fe, PAL_NONE, 0x5ff, PAL_NONE, 0, 0, 16, 16, 85, 0), M( 0x60a, PAL_NONE, 0x60b, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60c, PAL_NONE, 0x60d, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60a, PAL_NONE, 0x60b, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60c, PAL_NONE, 0x60d, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), M( 0x60e, PAL_NONE, 0x60f, PAL_NONE, 0, 0, 16, 16, 95, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), M( 0x600, PAL_NONE, 0x601, PAL_NONE, 0, 0, 16, 16, 55, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), M( 0x600, PALETTE_TO_STRUCT_WHITE, 0x601, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), M( 0x602, PAL_NONE, 0x603, PAL_NONE, 0, 0, 16, 16, 42, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), M( 0x602, PALETTE_TO_STRUCT_CONCRETE, 0x603, PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0), M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x604, PAL_NONE, 0x605, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x606, PAL_NONE, 0x607, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( 0x608, PAL_NONE, 0x609, PAL_NONE, 0, 0, 16, 16, 88, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x610, PAL_NONE, 0x611, PAL_NONE, 0, 0, 16, 16, 40, 0), M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x612, PAL_NONE, 0x616, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x613, PAL_NONE, 0x617, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x614, PAL_NONE, 0x618, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( 0x615, PAL_NONE, 0x619, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61a, PAL_NONE, 0x61b, PAL_NONE, 0, 0, 16, 16, 100, 0), M( 0x61c, PAL_NONE, 0x61d, PAL_NONE, 0, 0, 16, 16, 100, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x61e, PAL_NONE, 0x61f, PAL_NONE, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), M( 0x61e, PALETTE_TO_STRUCT_WHITE, 0x61f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), M( 0x620, PAL_NONE, 0x621, PAL_NONE, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), M( 0x620, PALETTE_TO_CREAM, 0x621, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), M(0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), M(0x11da, PAL_NONE, 0x11db, PAL_NONE, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), M(0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), M(0x11da, PALETTE_TO_STRUCT_WHITE, 0x11db, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), M(0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), M(0x11dc, PAL_NONE, 0x11dd, PAL_NONE, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), M(0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), M(0x11dc, PALETTE_TO_CREAM, 0x11dd, PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 22, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1134, PAL_NONE, 0x1135, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1136, PAL_NONE, 0x1137, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113b, PAL_NONE, 0x113c, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1138, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113d, PAL_NONE, 0x113e, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1139, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113f, PAL_NONE, 0x1140, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x113a, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1141, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1144, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1145, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1146, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x1147, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1142, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1148, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1149, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114a, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1143, PAL_NONE, 0x114b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x114c, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M(0x114c, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M(0x114c, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M(0x114c, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x114d, PAL_NONE, 0x1151, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M(0x114d, PAL_NONE, 0x1151, PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M(0x114d, PAL_NONE, 0x1151, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114e, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x114f, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1150, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M(0x114d, PAL_NONE, 0x1151, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PAL_NONE, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x1155, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x1155, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x1155, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1155, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x1155, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PAL_NONE, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x11de, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x11de, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x11de, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1153, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1154, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11de, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1152, PAL_NONE, 0x11de, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PAL_NONE, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x1159, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x1159, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x1159, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1159, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x1159, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PAL_NONE, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x11df, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x11df, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x11df, PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1157, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1158, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11df, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M(0x1156, PAL_NONE, 0x11df, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PAL_NONE, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x115d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x115d, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x115d, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115d, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x115d, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PAL_NONE, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x11e0, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x11e0, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x11e0, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115b, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x115c, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e0, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x115a, PAL_NONE, 0x11e0, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x115e, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x115e, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1164, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1164, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x115f, PAL_NONE, 0x1163, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1160, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1161, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1162, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x115f, PAL_NONE, 0x1163, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1165, PAL_NONE, 0x1169, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1166, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1167, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1168, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x1165, PAL_NONE, 0x1169, PAL_NONE, 0, 0, 16, 16, 20, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x116d, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116b, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x116c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116a, PAL_NONE, 0x11e2, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x1171, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116f, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1170, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x116e, PAL_NONE, 0x11e3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1172, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M(0x1172, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M(0x1172, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M(0x1172, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x11e4, PAL_NONE, 0x11e5, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M(0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M(0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1173, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1174, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1175, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M(0x11e4, PAL_NONE, 0x11e5, PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1176, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e6, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117b, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117c, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1177, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1179, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e7, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M(0x1178, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117a, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e8, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x117f, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117d, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x117e, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M( SPR_CONCRETE_GROUND,PAL_NONE, 0x11e1, PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1184, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0), M(0x1180, PAL_NONE, 0x1181, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x1182, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1183, PAL_NONE, 0x11e9, PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x118b, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118c, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1187, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x1189, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1185, PAL_NONE, 0x11ea, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x1188, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x118a, PAL_NONE, 0, 0, 16, 16, 10, 0), M(0x1186, PAL_NONE, 0x11eb, PAL_NONE, 0, 0, 16, 16, 10, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ec, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ed, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ee, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ef, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f1, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f2, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f3, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f4, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f5, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f6, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f7, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f8, PAL_NONE, 0, 0, 16, 16, 20, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11f9, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fa, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fb, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fc, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fd, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11fe, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x11ff, PAL_NONE, 0, 0, 16, 16, 40, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1200, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1201, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1202, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1203, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1204, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1205, PALETTE_TO_RED, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1206, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1208, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120a, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1207, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1209, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120b, PAL_NONE, 0, 0, 16, 16, 80, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120c, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120d, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120e, PAL_NONE, 0, 0, 16, 16, 60, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x120f, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1210, PAL_NONE, 0, 0, 16, 16, 50, 0), M( SPR_FLAT_BARE_LAND, PAL_NONE, 0x1211, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1213, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1215, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1213, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1215, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1213, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1214, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1215, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1213, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1214, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1215, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1216, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1217, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1218, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1219, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1221, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121f, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1221, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x121f, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1220, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1221, PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x121f, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1220, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1221, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1222, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1224, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1222, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1224, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1222, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1223, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1224, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1222, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1223, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1224, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1225, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1227, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1225, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1227, PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1225, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1226, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1227, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1225, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1226, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1227, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1228, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1229, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x122f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x122e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1230, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1231, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1232, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1233, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1234, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1235, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1236, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1237, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1238, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1239, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123b, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x123c, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123d, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123e, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x123f, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1240, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1241, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1242, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1256, PALETTE_TO_RED, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x1256, PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1257, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1258, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY1, PAL_NONE, 0x1259, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x0, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), M(SPR_GRND_HOUSE_TOY2, PAL_NONE, 0x125a, PAL_NONE, 0, 0, 16, 16, 50, 0), }; #undef M /** Make sure we have the right number of elements: 4 variants * 4 build stages for each house */ assert_compile(lengthof(_town_draw_tile_data) == (NEW_HOUSE_OFFSET) * 4 * 4); /** * Describes the data that defines each house in the game * @param mnd introduction year of the house * @param mxd last year it can be built * @param p population * @param rc cost multiplier for removing it * @param bn building name * @param rr rating decrease if removed * @param mg mail generation multiplier * @param ca1 acceptance for 1st CargoID * @param ca2 acceptance for 2nd CargoID * @param ca3 acceptance for 3rd CargoID * @param bf building flags (size, stadium etc...) * @param ba building availability (zone, climate...) * @param cg1 1st CargoID available * @param cg2 2nd CargoID available * @param cg3 3rd CargoID available * @see HouseSpec */ #define MS(mnd, mxd, p, rc, bn, rr, mg, ca1, ca2, ca3, bf, ba, cg1, cg2, cg3) \ {mnd, mxd, p, rc, bn, rr, mg, {ca1, ca2, ca3}, {cg1, cg2, cg3}, bf, ba, true, \ GRFFileProps(INVALID_HOUSE_ID), 0, {0, 0, 0, 0}, 16, NO_EXTRA_FLAG, HOUSE_NO_CLASS, {0, 2, 0, 0}, 0, 0, 0} /** House specifications from original data */ static const HouseSpec _original_house_specs[] = { /** * remove_rating_decrease * | mail_generation * min_year | | 1st CargoID acceptance * | max_year | | | 2nd CargoID acceptance * | | population | | | | 3th CargoID acceptance * | | | removal_cost | | | | | * | | | | building_name | | | | | * | | | | | | | | | | * | | | | | | | | | | * +-building_flags | | | | | | | | * +-building_availability | | | | | | | * +-cargoID accepted | | | | | | | | * | | | | | | | | | | | */ MS(1963, MAX_YEAR, 187, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 70, 8, 3, 4, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 00 MS(1957, MAX_YEAR, 85, 140, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1, 130, 55, 8, 3, 4, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 01 MS(1968, MAX_YEAR, 40, 100, STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1, 90, 20, 8, 3, 1, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 02 MS( 0, MAX_YEAR, 5, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0, BUILDING_IS_CHURCH | TILE_SIZE_1x1, HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 03 MS(1975, MAX_YEAR, 220, 160, STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1, 160, 85, 10, 4, 6, BUILDING_IS_ANIMATED | TILE_SIZE_1x1, HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 04 MS(1975, MAX_YEAR, 220, 160, STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1, 160, 85, 10, 4, 6, BUILDING_IS_ANIMATED | TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 05 MS( 0, MAX_YEAR, 30, 80, STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1, 80, 12, 4, 1, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 06 MS(1959, MAX_YEAR, 140, 180, STR_TOWN_BUILDING_NAME_HOTEL_1, 150, 22, 6, 1, 2, TILE_SIZE_1x2, HZ_TEMP | HZ_ZON5 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 07 MS(1959, MAX_YEAR, 0, 180, STR_TOWN_BUILDING_NAME_HOTEL_1, 150, 22, 6, 1, 2, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 08 MS(1945, MAX_YEAR, 0, 65, STR_TOWN_BUILDING_NAME_STATUE_1, 40, 0, 2, 0, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 09 MS(1945, MAX_YEAR, 0, 65, STR_TOWN_BUILDING_NAME_FOUNTAIN_1, 40, 0, 2, 0, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0A MS( 0, MAX_YEAR, 0, 60, STR_TOWN_BUILDING_NAME_PARK_1, 75, 0, 2, 0, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0B MS(1935, MAX_YEAR, 0, 60, STR_TOWN_BUILDING_NAME_PARK_1, 75, 0, 2, 0, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0C MS(1951, MAX_YEAR, 150, 130, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2, 110, 65, 8, 2, 4, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0D MS(1930, 1960, 95, 110, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 100, 48, 6, 2, 3, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0E MS(1930, 1960, 95, 105, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 100, 48, 6, 2, 3, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 0F MS(1930, 1960, 95, 107, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 100, 48, 6, 2, 3, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 10 MS(1977, MAX_YEAR, 130, 200, STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1, 150, 50, 10, 3, 6, TILE_SIZE_1x1, HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 11 MS(1983, MAX_YEAR, 6, 145, STR_TOWN_BUILDING_NAME_WAREHOUSE_1, 110, 10, 6, 3, 8, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 12 MS(1985, MAX_YEAR, 110, 155, STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3, 110, 55, 6, 2, 6, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 13 MS( 0, MAX_YEAR, 65, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0, BUILDING_IS_STADIUM | TILE_SIZE_2x2, HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 14 MS( 0, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 15 MS( 0, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 16 MS( 0, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_1, 300, 5, 4, 0, 0, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 17 MS( 0, 1951, 15, 70, STR_TOWN_BUILDING_NAME_OLD_HOUSES_1, 75, 6, 3, 1, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 18 MS( 0, 1952, 12, 75, STR_TOWN_BUILDING_NAME_COTTAGES_1, 75, 7, 3, 1, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 19 MS(1931, MAX_YEAR, 13, 71, STR_TOWN_BUILDING_NAME_HOUSES_1, 75, 8, 3, 1, 0, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1A MS(1935, MAX_YEAR, 100, 135, STR_TOWN_BUILDING_NAME_FLATS_1, 100, 35, 7, 2, 2, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1B MS(1963, MAX_YEAR, 170, 145, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2, 170, 50, 8, 3, 3, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1C MS( 0, 1955, 100, 132, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2, 135, 40, 6, 2, 3, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1D MS(1973, MAX_YEAR, 180, 155, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3, 180, 64, 8, 3, 3, TILE_SIZE_1x1, HZ_TEMP | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1E MS( 0, MAX_YEAR, 35, 220, STR_TOWN_BUILDING_NAME_THEATER_1, 230, 23, 8, 2, 2, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 1F MS(1958, MAX_YEAR, 65, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0, BUILDING_IS_STADIUM | TILE_SIZE_2x2, HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 20 MS(1958, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 21 MS(1958, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 22 MS(1958, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_STADIUM_2, 300, 5, 4, 0, 0, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 23 MS(2000, MAX_YEAR, 140, 170, STR_TOWN_BUILDING_NAME_OFFICES_1, 250, 65, 8, 3, 2, TILE_SIZE_1x1, HZ_TEMP | HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 24 MS( 0, 1960, 15, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 25 MS( 0, 1960, 15, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 26 MS(1945, MAX_YEAR, 35, 210, STR_TOWN_BUILDING_NAME_CINEMA_1, 230, 23, 8, 2, 2, TILE_SIZE_1x1, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 27 MS(1983, MAX_YEAR, 180, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3, TILE_SIZE_2x2, HZ_TEMP | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 |HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 28 MS(1983, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 29 MS(1983, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 2A MS(1983, MAX_YEAR, 0, 250, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1, 300, 5, 8, 2, 3, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 2B MS( 0, MAX_YEAR, 80, 100, STR_TOWN_BUILDING_NAME_FLATS_1, 90, 20, 5, 2, 2, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2C MS( 0, MAX_YEAR, 80, 100, STR_TOWN_BUILDING_NAME_FLATS_1, 90, 20, 5, 2, 2, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2D MS( 0, MAX_YEAR, 16, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2E MS( 0, MAX_YEAR, 16, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 2F MS( 0, 1963, 14, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 30 MS( 0, 1963, 14, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 70, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 31 MS(1966, MAX_YEAR, 135, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 120, 60, 8, 3, 4, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 32 MS(1966, MAX_YEAR, 135, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 120, 60, 8, 3, 4, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 33 MS(1970, MAX_YEAR, 170, 170, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 70, 9, 3, 4, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 34 MS(1970, MAX_YEAR, 170, 170, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 70, 9, 3, 4, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 35 MS(1974, MAX_YEAR, 210, 200, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 10, 3, 5, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 36 MS(1974, MAX_YEAR, 210, 200, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 10, 3, 5, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 37 MS( 0, MAX_YEAR, 10, 60, STR_TOWN_BUILDING_NAME_HOUSES_2, 60, 5, 2, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 38 MS( 0, MAX_YEAR, 10, 60, STR_TOWN_BUILDING_NAME_HOUSES_2, 60, 5, 2, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 39 MS( 0, MAX_YEAR, 25, 100, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 80, 20, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3A MS( 0, MAX_YEAR, 25, 100, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 80, 20, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3B MS( 0, MAX_YEAR, 6, 85, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0, BUILDING_IS_CHURCH | TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 3C MS( 0, MAX_YEAR, 6, 85, STR_TOWN_BUILDING_NAME_CHURCH_1, 230, 2, 2, 0, 0, BUILDING_IS_CHURCH | TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 3D MS( 0, MAX_YEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3E MS( 0, MAX_YEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 3F MS( 0, 1960, 90, 140, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 110, 45, 6, 2, 3, TILE_SIZE_1x1, HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 40 MS( 0, 1960, 90, 140, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 110, 45, 6, 2, 3, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 41 MS(1972, MAX_YEAR, 140, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 3, TILE_SIZE_1x2, HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 42 MS(1972, MAX_YEAR, 0, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 2, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 43 MS(1972, MAX_YEAR, 140, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 3, TILE_SIZE_1x2, HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 44 MS(1972, MAX_YEAR, 0, 160, STR_TOWN_BUILDING_NAME_HOTEL_1, 160, 25, 6, 1, 2, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 45 MS(1963, MAX_YEAR, 105, 130, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 105, 50, 7, 2, 3, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 46 MS(1963, MAX_YEAR, 105, 130, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 105, 50, 7, 2, 3, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE| HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 47 MS(1978, MAX_YEAR, 190, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 135, 75, 9, 3, 4, TILE_SIZE_1x1, HZ_SUBARTC_BELOW | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 48 MS(1978, MAX_YEAR, 190, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 135, 75, 9, 3, 4, TILE_SIZE_1x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 49 MS(1967, MAX_YEAR, 250, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2, TILE_SIZE_2x1, HZ_SUBARTC_BELOW| HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4A MS(1967, MAX_YEAR, 0, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4B MS(1967, MAX_YEAR, 250, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2, TILE_SIZE_2x1, HZ_SUBARTC_ABOVE | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4C MS(1967, MAX_YEAR, 0, 140, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 200, 60, 7, 2, 2, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 4D MS( 0, MAX_YEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 4E MS( 0, MAX_YEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 4F MS( 0, MAX_YEAR, 16, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 5, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 50 MS( 0, MAX_YEAR, 7, 30, STR_TOWN_BUILDING_NAME_HOUSES_2, 30, 4, 3, 1, 1, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 51 MS( 0, MAX_YEAR, 45, 130, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 15, 6, 2, 1, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 52 MS( 0, MAX_YEAR, 8, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 200, 3, 2, 0, 0, BUILDING_IS_CHURCH | TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 53 MS( 0, MAX_YEAR, 18, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 7, 3, 1, 2, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2, CT_PASSENGERS, CT_MAIL, CT_FOOD), // 54 MS(1973, MAX_YEAR, 90, 110, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 24, 6, 2, 1, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 55 MS(1962, MAX_YEAR, 120, 120, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 25, 6, 2, 1, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 56 MS(1984, MAX_YEAR, 250, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 8, 3, 4, TILE_SIZE_2x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 57 MS(1984, MAX_YEAR, 0, 190, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 140, 80, 8, 3, 4, TILE_NO_FLAG, HZ_SUBTROPIC, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 58 MS( 0, MAX_YEAR, 80, 110, STR_TOWN_BUILDING_NAME_FLATS_1, 95, 23, 6, 2, 1, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 59 MS(1993, MAX_YEAR, 180, 180, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 150, 90, 8, 3, 4, TILE_SIZE_1x1, HZ_SUBTROPIC | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_GOODS), // 5A MS( 0, MAX_YEAR, 8, 90, STR_TOWN_BUILDING_NAME_CHURCH_1, 200, 3, 2, 0, 0, BUILDING_IS_CHURCH | TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5B MS( 0, MAX_YEAR, 18, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 90, 5, 6, 2, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5C MS( 0, MAX_YEAR, 7, 70, STR_TOWN_BUILDING_NAME_HOUSES_2, 50, 3, 3, 1, 1, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5D MS( 0, MAX_YEAR, 15, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5E MS( 0, MAX_YEAR, 17, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 5F MS( 0, MAX_YEAR, 19, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 60 MS( 0, MAX_YEAR, 21, 80, STR_TOWN_BUILDING_NAME_HOUSES_2, 75, 6, 3, 1, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 61 MS( 0, MAX_YEAR, 75, 160, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 20, 8, 4, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 62 MS( 0, MAX_YEAR, 35, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 9, 4, 1, 2, TILE_SIZE_1x2, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 63 MS( 0, MAX_YEAR, 0, 90, STR_TOWN_BUILDING_NAME_HOUSES_2, 80, 0, 4, 1, 2, TILE_NO_FLAG, HZ_NOZNS, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 64 MS( 0, MAX_YEAR, 85, 150, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 18, 8, 4, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 65 MS( 0, MAX_YEAR, 11, 60, STR_TOWN_BUILDING_NAME_IGLOO_1, 45, 3, 3, 1, 1, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 66 MS( 0, MAX_YEAR, 10, 60, STR_TOWN_BUILDING_NAME_TEPEES_1, 45, 3, 3, 1, 1, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 67 MS( 0, MAX_YEAR, 67, 140, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 130, 22, 8, 4, 4, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_FIZZY_DRINKS), // 68 MS( 0, MAX_YEAR, 86, 145, STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1, 130, 23, 8, 4, 4, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_FIZZY_DRINKS), // 69 MS( 0, MAX_YEAR, 95, 165, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, 130, 28, 8, 4, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 6A MS( 0, MAX_YEAR, 30, 90, STR_TOWN_BUILDING_NAME_STATUE_1, 70, 10, 4, 1, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 6B MS( 0, MAX_YEAR, 25, 75, STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1, 65, 8, 3, 1, 2, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_CANDY), // 6C MS( 0, MAX_YEAR, 18, 85, STR_TOWN_BUILDING_NAME_PIGGY_BANK_1, 95, 7, 3, 2, 4, TILE_SIZE_1x1, HZ_TOYLND | HZ_ZON5 | HZ_ZON4 | HZ_ZON3 | HZ_ZON2 | HZ_ZON1, CT_PASSENGERS, CT_MAIL, CT_FIZZY_DRINKS), // 6D }; #undef MS /** Make sure we have the right number of elements: one entry for each house */ assert_compile(lengthof(_original_house_specs) == NEW_HOUSE_OFFSET); openttd-1.3.3/src/table/water_land.h0000644000000000000000000001277512246102566016060 0ustar rootroot/* $Id: water_land.h 22646 2011-07-10 13:04:04Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file water_land.h Sprites to use and how to display them for water tiles (depots/locks). */ /** * Constructor macro for an image without a palette in a DrawTileSeqStruct array. * @param dx Offset in x direction * @param dy Offset in y direction * @param dz Offset in z direction * @param sx Size in x direction * @param sy Size in y direction * @param sz Size in z direction * @param img Sprite to draw */ #define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img) { dx, dy, dz, sx, sy, sz, {img, PAL_NONE} }, /** Constructor macro for a terminating DrawTileSeqStruct entry in an array */ #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} } /** * Constructor macro of a DrawTileSprites structure * @param img Ground sprite without palette of the tile * @param dtss Sequence child sprites of the tile */ #define TILE_SPRITE_LINE(img, dtss) { {img, PAL_NONE}, dtss }, static const DrawTileSeqStruct _shipdepot_display_seq_1[] = { TILE_SEQ_LINE( 0, 15, 0, 16, 1, 0x14, 0xFE8 | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _shipdepot_display_seq_2[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 1, 0x14, 0xFEA) TILE_SEQ_LINE( 0, 15, 0, 16, 1, 0x14, 0xFE6 | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _shipdepot_display_seq_3[] = { TILE_SEQ_LINE( 15, 0, 0, 1, 0x10, 0x14, 0xFE9 | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSeqStruct _shipdepot_display_seq_4[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 16, 0x14, 0xFEB) TILE_SEQ_LINE( 15, 0, 0, 1, 16, 0x14, 0xFE7 | (1 << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_END() }; static const DrawTileSprites _shipdepot_display_data[][DEPOT_PART_END] = { { // AXIS_X TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_1) // DEPOT_PART_NORTH TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_2) // DEPOT_PART_SOUTH }, { // AXIS_Y TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_3) // DEPOT_PART_NORTH TILE_SPRITE_LINE(0xFDD, _shipdepot_display_seq_4) // DEPOT_PART_SOUTH }, }; static const DrawTileSeqStruct _lock_display_seq_0[] = { TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 0 + 1) TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 4 + 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_1[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 0) TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 4) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_2[] = { TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 0 + 2) TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 4 + 2) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_3[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 0 + 3) TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 4 + 3) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_0b[] = { TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 8 + 1) TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 12 + 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_1b[] = { TILE_SEQ_LINE( 0, 0, 0, 0x1, 0x10, 0x14, 8) TILE_SEQ_LINE( 0xF, 0, 0, 0x1, 0x10, 0x14, 12) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_2b[] = { TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 8 + 2) TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 12 + 2) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_3b[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 8 + 3) TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 12 + 3) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_0t[] = { TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 16 + 1) TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 20 + 1) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_1t[] = { TILE_SEQ_LINE( 0, 0, 0, 0x1, 0x10, 0x14, 16) TILE_SEQ_LINE( 0xF, 0, 0, 0x1, 0x10, 0x14, 20) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_2t[] = { TILE_SEQ_LINE( 0, 0, 0, 0x10, 1, 0x14, 16 + 2) TILE_SEQ_LINE( 0, 0xF, 0, 0x10, 1, 0x14, 20 + 2) TILE_SEQ_END() }; static const DrawTileSeqStruct _lock_display_seq_3t[] = { TILE_SEQ_LINE( 0, 0, 0, 1, 0x10, 0x14, 16 + 3) TILE_SEQ_LINE( 0xF, 0, 0, 1, 0x10, 0x14, 20 + 3) TILE_SEQ_END() }; static const DrawTileSprites _lock_display_data[][DIAGDIR_END] = { { // LOCK_PART_MIDDLE TILE_SPRITE_LINE(1, _lock_display_seq_0) // NE TILE_SPRITE_LINE(0, _lock_display_seq_1) // SE TILE_SPRITE_LINE(2, _lock_display_seq_2) // SW TILE_SPRITE_LINE(3, _lock_display_seq_3) // NW }, { // LOCK_PART_LOWER TILE_SPRITE_LINE(0xFDD, _lock_display_seq_0b) // NE TILE_SPRITE_LINE(0xFDD, _lock_display_seq_1b) // SE TILE_SPRITE_LINE(0xFDD, _lock_display_seq_2b) // SW TILE_SPRITE_LINE(0xFDD, _lock_display_seq_3b) // NW }, { // LOCK_PART_UPPER TILE_SPRITE_LINE(0xFDD, _lock_display_seq_0t) // NE TILE_SPRITE_LINE(0xFDD, _lock_display_seq_1t) // SE TILE_SPRITE_LINE(0xFDD, _lock_display_seq_2t) // SW TILE_SPRITE_LINE(0xFDD, _lock_display_seq_3t) // NW }, }; #undef TILE_SEQ_LINE #undef TILE_SEQ_END #undef TILE_SPRITE_LINE openttd-1.3.3/src/table/airport_defaults.h0000644000000000000000000003266512246102566017307 0ustar rootroot/* $Id: airport_defaults.h 23415 2011-12-03 23:40:46Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airport_defaults.h Tables with default values for airports and airport tiles. */ #ifndef AIRPORT_DEFAULTS_H #define AIRPORT_DEFAULTS_H /** * Definition of an airport tiles layout. * @param x offset x of this tile * @param y offset y of this tile * @param m StationGfx of the tile * @see _airport_specs * @see AirportTileTable */ #define MK(x, y, m) {{x, y}, m} /** * Terminator of airport tiles layout definition */ #define MKEND {{-0x80, 0}, 0} /** Tiles for Country Airfield (small) */ static AirportTileTable _tile_table_country_0[] = { MK(0, 0, APT_SMALL_BUILDING_1), MK(1, 0, APT_SMALL_BUILDING_2), MK(2, 0, APT_SMALL_BUILDING_3), MK(3, 0, APT_SMALL_DEPOT_SE), MK(0, 1, APT_GRASS_FENCE_NE_FLAG), MK(1, 1, APT_GRASS_1), MK(2, 1, APT_GRASS_2), MK(3, 1, APT_GRASS_FENCE_SW), MK(0, 2, APT_RUNWAY_SMALL_FAR_END), MK(1, 2, APT_RUNWAY_SMALL_MIDDLE), MK(2, 2, APT_RUNWAY_SMALL_MIDDLE), MK(3, 2, APT_RUNWAY_SMALL_NEAR_END), MKEND }; static AirportTileTable *_tile_table_country[] = { _tile_table_country_0, }; /** Tiles for Commuter Airfield (small) */ static AirportTileTable _tile_table_commuter_0[] = { MK(0, 0, APT_TOWER), MK(1, 0, APT_BUILDING_3), MK(2, 0, APT_HELIPAD_2_FENCE_NW), MK(3, 0, APT_HELIPAD_2_FENCE_NW), MK(4, 0, APT_DEPOT_SE), MK(0, 1, APT_APRON_FENCE_NE), MK(1, 1, APT_APRON), MK(2, 1, APT_APRON), MK(3, 1, APT_APRON), MK(4, 1, APT_APRON_FENCE_SW), MK(0, 2, APT_APRON_FENCE_NE), MK(1, 2, APT_STAND), MK(2, 2, APT_STAND), MK(3, 2, APT_STAND), MK(4, 2, APT_APRON_FENCE_SW), MK(0, 3, APT_RUNWAY_END_FENCE_SE), MK(1, 3, APT_RUNWAY_2), MK(2, 3, APT_RUNWAY_2), MK(3, 3, APT_RUNWAY_2), MK(4, 3, APT_RUNWAY_END_FENCE_SE), MKEND }; static AirportTileTable *_tile_table_commuter[] = { _tile_table_commuter_0, }; /** Tiles for City Airport (large) */ static AirportTileTable _tile_table_city_0[] = { MK(0, 0, APT_BUILDING_1), MK(1, 0, APT_APRON_FENCE_NW), MK(2, 0, APT_STAND_1), MK(3, 0, APT_APRON_FENCE_NW), MK(4, 0, APT_APRON_FENCE_NW), MK(5, 0, APT_DEPOT_SE), MK(0, 1, APT_BUILDING_2), MK(1, 1, APT_PIER), MK(2, 1, APT_ROUND_TERMINAL), MK(3, 1, APT_STAND_PIER_NE), MK(4, 1, APT_APRON), MK(5, 1, APT_APRON_FENCE_SW), MK(0, 2, APT_BUILDING_3), MK(1, 2, APT_STAND), MK(2, 2, APT_PIER_NW_NE), MK(3, 2, APT_APRON_S), MK(4, 2, APT_APRON_HOR), MK(5, 2, APT_APRON_N_FENCE_SW), MK(0, 3, APT_RADIO_TOWER_FENCE_NE), MK(1, 3, APT_APRON_W), MK(2, 3, APT_APRON_VER_CROSSING_S), MK(3, 3, APT_APRON_HOR_CROSSING_E), MK(4, 3, APT_ARPON_N), MK(5, 3, APT_TOWER_FENCE_SW), MK(0, 4, APT_EMPTY_FENCE_NE), MK(1, 4, APT_APRON_S), MK(2, 4, APT_APRON_HOR_CROSSING_W), MK(3, 4, APT_APRON_VER_CROSSING_N), MK(4, 4, APT_APRON_E), MK(5, 4, APT_RADAR_GRASS_FENCE_SW), MK(0, 5, APT_RUNWAY_END_FENCE_SE), MK(1, 5, APT_RUNWAY_1), MK(2, 5, APT_RUNWAY_2), MK(3, 5, APT_RUNWAY_3), MK(4, 5, APT_RUNWAY_4), MK(5, 5, APT_RUNWAY_END_FENCE_SE), MKEND }; static AirportTileTable *_tile_table_city[] = { _tile_table_city_0, }; /** Tiles for Metropolitain Airport (large) - 2 runways */ static AirportTileTable _tile_table_metropolitan_0[] = { MK(0, 0, APT_BUILDING_1), MK(1, 0, APT_APRON_FENCE_NW), MK(2, 0, APT_STAND_1), MK(3, 0, APT_APRON_FENCE_NW), MK(4, 0, APT_APRON_FENCE_NW), MK(5, 0, APT_DEPOT_SE), MK(0, 1, APT_BUILDING_2), MK(1, 1, APT_PIER), MK(2, 1, APT_ROUND_TERMINAL), MK(3, 1, APT_STAND_PIER_NE), MK(4, 1, APT_APRON), MK(5, 1, APT_APRON_FENCE_SW), MK(0, 2, APT_BUILDING_3), MK(1, 2, APT_STAND), MK(2, 2, APT_PIER_NW_NE), MK(3, 2, APT_APRON_S), MK(4, 2, APT_APRON_HOR), MK(5, 2, APT_APRON_N_FENCE_SW), MK(0, 3, APT_RADAR_FENCE_NE), MK(1, 3, APT_APRON), MK(2, 3, APT_APRON), MK(3, 3, APT_APRON), MK(4, 3, APT_APRON), MK(5, 3, APT_TOWER_FENCE_SW), MK(0, 4, APT_RUNWAY_END), MK(1, 4, APT_RUNWAY_5), MK(2, 4, APT_RUNWAY_5), MK(3, 4, APT_RUNWAY_5), MK(4, 4, APT_RUNWAY_5), MK(5, 4, APT_RUNWAY_END), MK(0, 5, APT_RUNWAY_END_FENCE_SE), MK(1, 5, APT_RUNWAY_2), MK(2, 5, APT_RUNWAY_2), MK(3, 5, APT_RUNWAY_2), MK(4, 5, APT_RUNWAY_2), MK(5, 5, APT_RUNWAY_END_FENCE_SE), MKEND }; static AirportTileTable *_tile_table_metropolitan[] = { _tile_table_metropolitan_0, }; /** Tiles for International Airport (large) - 2 runways */ static AirportTileTable _tile_table_international_0[] = { MK(0, 0, APT_RUNWAY_END_FENCE_NW), MK(1, 0, APT_RUNWAY_FENCE_NW), MK(2, 0, APT_RUNWAY_FENCE_NW), MK(3, 0, APT_RUNWAY_FENCE_NW), MK(4, 0, APT_RUNWAY_FENCE_NW), MK(5, 0, APT_RUNWAY_FENCE_NW), MK(6, 0, APT_RUNWAY_END_FENCE_NW), MK(0, 1, APT_RADIO_TOWER_FENCE_NE), MK(1, 1, APT_APRON), MK(2, 1, APT_APRON), MK(3, 1, APT_APRON), MK(4, 1, APT_APRON), MK(5, 1, APT_APRON), MK(6, 1, APT_DEPOT_SE), MK(0, 2, APT_BUILDING_3), MK(1, 2, APT_APRON), MK(2, 2, APT_STAND), MK(3, 2, APT_BUILDING_2), MK(4, 2, APT_STAND), MK(5, 2, APT_APRON), MK(6, 2, APT_APRON_FENCE_SW), MK(0, 3, APT_DEPOT_SE), MK(1, 3, APT_APRON), MK(2, 3, APT_STAND), MK(3, 3, APT_BUILDING_2), MK(4, 3, APT_STAND), MK(5, 3, APT_APRON), MK(6, 3, APT_HELIPAD_1), MK(0, 4, APT_APRON_FENCE_NE), MK(1, 4, APT_APRON), MK(2, 4, APT_STAND), MK(3, 4, APT_TOWER), MK(4, 4, APT_STAND), MK(5, 4, APT_APRON), MK(6, 4, APT_HELIPAD_1), MK(0, 5, APT_APRON_FENCE_NE), MK(1, 5, APT_APRON), MK(2, 5, APT_APRON), MK(3, 5, APT_APRON), MK(4, 5, APT_APRON), MK(5, 5, APT_APRON), MK(6, 5, APT_RADAR_FENCE_SW), MK(0, 6, APT_RUNWAY_END_FENCE_SE), MK(1, 6, APT_RUNWAY_2), MK(2, 6, APT_RUNWAY_2), MK(3, 6, APT_RUNWAY_2), MK(4, 6, APT_RUNWAY_2), MK(5, 6, APT_RUNWAY_2), MK(6, 6, APT_RUNWAY_END_FENCE_SE), MKEND }; static AirportTileTable *_tile_table_international[] = { _tile_table_international_0, }; /** Tiles for International Airport (large) - 2 runways */ static AirportTileTable _tile_table_intercontinental_0[] = { MK(0, 0, APT_RADAR_FENCE_NE), MK(1, 0, APT_RUNWAY_END_FENCE_NE_NW), MK(2, 0, APT_RUNWAY_FENCE_NW), MK(3, 0, APT_RUNWAY_FENCE_NW), MK(4, 0, APT_RUNWAY_FENCE_NW), MK(5, 0, APT_RUNWAY_FENCE_NW), MK(6, 0, APT_RUNWAY_FENCE_NW), MK(7, 0, APT_RUNWAY_FENCE_NW), MK(8, 0, APT_RUNWAY_END_FENCE_NW_SW), MK(0, 1, APT_RUNWAY_END_FENCE_NE_NW), MK(1, 1, APT_RUNWAY_2), MK(2, 1, APT_RUNWAY_2), MK(3, 1, APT_RUNWAY_2), MK(4, 1, APT_RUNWAY_2), MK(5, 1, APT_RUNWAY_2), MK(6, 1, APT_RUNWAY_2), MK(7, 1, APT_RUNWAY_END_FENCE_SE_SW), MK(8, 1, APT_APRON_FENCE_NE_SW), MK(0, 2, APT_APRON_FENCE_NE_SW), MK(1, 2, APT_EMPTY), MK(2, 2, APT_APRON_FENCE_NE), MK(3, 2, APT_APRON), MK(4, 2, APT_APRON), MK(5, 2, APT_APRON), MK(6, 2, APT_APRON), MK(7, 2, APT_RADIO_TOWER_FENCE_NE), MK(8, 2, APT_APRON_FENCE_NE_SW), MK(0, 3, APT_APRON_FENCE_NE), MK(1, 3, APT_APRON_HALF_EAST), MK(2, 3, APT_APRON_FENCE_NE), MK(3, 3, APT_TOWER), MK(4, 3, APT_HELIPAD_2), MK(5, 3, APT_HELIPAD_2), MK(6, 3, APT_APRON), MK(7, 3, APT_APRON_FENCE_NW), MK(8, 3, APT_APRON_FENCE_SW), MK(0, 4, APT_APRON_FENCE_NE), MK(1, 4, APT_APRON), MK(2, 4, APT_APRON), MK(3, 4, APT_STAND), MK(4, 4, APT_BUILDING_1), MK(5, 4, APT_STAND), MK(6, 4, APT_APRON), MK(7, 4, APT_LOW_BUILDING), MK(8, 4, APT_DEPOT_SE), MK(0, 5, APT_DEPOT_SE), MK(1, 5, APT_LOW_BUILDING), MK(2, 5, APT_APRON), MK(3, 5, APT_STAND), MK(4, 5, APT_BUILDING_2), MK(5, 5, APT_STAND), MK(6, 5, APT_APRON), MK(7, 5, APT_APRON), MK(8, 5, APT_APRON_FENCE_SW), MK(0, 6, APT_APRON_FENCE_NE), MK(1, 6, APT_APRON), MK(2, 6, APT_APRON), MK(3, 6, APT_STAND), MK(4, 6, APT_BUILDING_3), MK(5, 6, APT_STAND), MK(6, 6, APT_APRON), MK(7, 6, APT_APRON), MK(8, 6, APT_APRON_FENCE_SW), MK(0, 7, APT_APRON_FENCE_NE), MK(1, 7, APT_APRON_FENCE_SE), MK(2, 7, APT_APRON), MK(3, 7, APT_STAND), MK(4, 7, APT_ROUND_TERMINAL), MK(5, 7, APT_STAND), MK(6, 7, APT_APRON_FENCE_SW), MK(7, 7, APT_APRON_HALF_WEST), MK(8, 7, APT_APRON_FENCE_SW), MK(0, 8, APT_APRON_FENCE_NE), MK(1, 8, APT_GRASS_FENCE_NE_FLAG_2), MK(2, 8, APT_APRON_FENCE_NE), MK(3, 8, APT_APRON), MK(4, 8, APT_APRON), MK(5, 8, APT_APRON), MK(6, 8, APT_APRON_FENCE_SW), MK(7, 8, APT_EMPTY), MK(8, 8, APT_APRON_FENCE_NE_SW), MK(0, 9, APT_APRON_FENCE_NE), MK(1, 9, APT_RUNWAY_END_FENCE_NE_NW), MK(2, 9, APT_RUNWAY_FENCE_NW), MK(3, 9, APT_RUNWAY_FENCE_NW), MK(4, 9, APT_RUNWAY_FENCE_NW), MK(5, 9, APT_RUNWAY_FENCE_NW), MK(6, 9, APT_RUNWAY_FENCE_NW), MK(7, 9, APT_RUNWAY_FENCE_NW), MK(8, 9, APT_RUNWAY_END_FENCE_SE_SW), MK(0, 10, APT_RUNWAY_END_FENCE_NE_SE), MK(1, 10, APT_RUNWAY_2), MK(2, 10, APT_RUNWAY_2), MK(3, 10, APT_RUNWAY_2), MK(4, 10, APT_RUNWAY_2), MK(5, 10, APT_RUNWAY_2), MK(6, 10, APT_RUNWAY_2), MK(7, 10, APT_RUNWAY_END_FENCE_SE_SW), MK(8, 10, APT_EMPTY), MKEND }; static AirportTileTable *_tile_table_intercontinental[] = { _tile_table_intercontinental_0, }; /** Tiles for Heliport */ static AirportTileTable _tile_table_heliport_0[] = { MK(0, 0, APT_HELIPORT), MKEND }; static AirportTileTable *_tile_table_heliport[] = { _tile_table_heliport_0, }; /** Tiles for Helidepot */ static AirportTileTable _tile_table_helidepot_0[] = { MK(0, 0, APT_LOW_BUILDING_FENCE_N), MK(1, 0, APT_DEPOT_SE), MK(0, 1, APT_HELIPAD_2_FENCE_NE_SE), MK(1, 1, APT_APRON_FENCE_SE_SW), MKEND }; static AirportTileTable *_tile_table_helidepot[] = { _tile_table_helidepot_0, }; /** Tiles for Helistation */ static AirportTileTable _tile_table_helistation_0[] = { MK(0, 0, APT_DEPOT_SE), MK(1, 0, APT_LOW_BUILDING_FENCE_NW), MK(2, 0, APT_HELIPAD_3_FENCE_NW), MK(3, 0, APT_HELIPAD_3_FENCE_NW_SW), MK(0, 1, APT_APRON_FENCE_NE_SE), MK(1, 1, APT_APRON_FENCE_SE), MK(2, 1, APT_APRON_FENCE_SE), MK(3, 1, APT_HELIPAD_3_FENCE_SE_SW), MKEND }; static AirportTileTable *_tile_table_helistation[] = { _tile_table_helistation_0, }; static Direction _default_airports_rotation[] = { DIR_N, }; #undef MK #undef MKEND /** General AirportSpec definition. */ #define AS_GENERIC(fsm, att, rot, att_len, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, maint_cost, ttdpatch_type, class_id, name, preview, enabled) \ {fsm, att, rot, att_len, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, name, ttdpatch_type, class_id, preview, maint_cost, enabled, GRFFileProps(AT_INVALID)} /** AirportSpec definition for airports without any depot. */ #define AS_ND(ap_name, size_x, size_y, min_year, max_year, catchment, noise, maint_cost, ttdpatch_type, class_id, name, preview) \ AS_GENERIC(&_airportfta_##ap_name, _tile_table_##ap_name, _default_airports_rotation, lengthof(_tile_table_##ap_name), NULL, 0, \ size_x, size_y, noise, catchment, min_year, max_year, maint_cost, ttdpatch_type, class_id, name, preview, true) /** AirportSpec definition for airports with at least one depot. */ #define AS(ap_name, size_x, size_y, min_year, max_year, catchment, noise, maint_cost, ttdpatch_type, class_id, name, preview) \ AS_GENERIC(&_airportfta_##ap_name, _tile_table_##ap_name, _default_airports_rotation, lengthof(_tile_table_##ap_name), _airport_depots_##ap_name, lengthof(_airport_depots_##ap_name), \ size_x, size_y, noise, catchment, min_year, max_year, maint_cost, ttdpatch_type, class_id, name, preview, true) /* The helidepot and helistation have ATP_TTDP_SMALL because they are at ground level */ extern const AirportSpec _origin_airport_specs[] = { AS(country, 4, 3, 0, 1959, 4, 3, 7, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_SMALL, SPR_AIRPORT_PREVIEW_SMALL), AS(city, 6, 6, 1955, MAX_YEAR, 5, 5, 24, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_CITY, SPR_AIRPORT_PREVIEW_LARGE), AS_ND(heliport, 1, 1, 1963, MAX_YEAR, 4, 1, 4, ATP_TTDP_HELIPORT, APC_HELIPORT, STR_AIRPORT_HELIPORT, SPR_AIRPORT_PREVIEW_HELIPORT), AS(metropolitan, 6, 6, 1980, MAX_YEAR, 6, 8, 28, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_METRO, SPR_AIRPORT_PREVIEW_METROPOLITAN), AS(international, 7, 7, 1990, MAX_YEAR, 8, 17, 42, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERNATIONAL, SPR_AIRPORT_PREVIEW_INTERNATIONAL), AS(commuter, 5, 4, 1983, MAX_YEAR, 4, 4, 20, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_COMMUTER, SPR_AIRPORT_PREVIEW_COMMUTER), AS(helidepot, 2, 2, 1976, MAX_YEAR, 4, 2, 7, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELIDEPOT, SPR_AIRPORT_PREVIEW_HELIDEPOT), AS(intercontinental, 9, 11, 2002, MAX_YEAR, 10, 25, 72, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERCONTINENTAL, SPR_AIRPORT_PREVIEW_INTERCONTINENTAL), AS(helistation, 4, 2, 1980, MAX_YEAR, 4, 3, 14, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELISTATION, SPR_AIRPORT_PREVIEW_HELISTATION), AS_GENERIC(&_airportfta_oilrig, NULL, _default_airports_rotation, 0, NULL, 0, 1, 1, 0, 4, 0, 0, 0, ATP_TTDP_OILRIG, APC_HELIPORT, STR_NULL, 0, false), }; assert_compile(NEW_AIRPORT_OFFSET == lengthof(_origin_airport_specs)); AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, NULL, _default_airports_rotation, 0, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, 0, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false); #undef AS #undef AS_ND #undef AS_GENERIC #endif /* AIRPORT_DEFAULTS_H */ openttd-1.3.3/src/table/company_settings.ini0000644000000000000000000001011112246102566017634 0ustar rootroot; $Id: company_settings.ini 24996 2013-02-14 17:08:56Z rubidium $ ; ; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; [pre-amble] static bool CheckInterval(int32 p1); static bool InvalidateDetailsWindow(int32 p1); static bool UpdateIntervalTrains(int32 p1); static bool UpdateIntervalRoadVeh(int32 p1); static bool UpdateIntervalShips(int32 p1); static bool UpdateIntervalAircraft(int32 p1); static const SettingDesc _company_settings[] = { [post-amble] }; [templates] SDT_BOOL = SDT_BOOL($base, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDT_END = SDT_END() [defaults] flags = 0 guiflags = SGF_PER_COMPANY interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED [SDT_BOOL] base = CompanySettings var = engine_renew def = false str = STR_CONFIG_SETTING_AUTORENEW_VEHICLE strhelp = STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT [SDT_VAR] base = CompanySettings var = engine_renew_months type = SLE_INT16 guiflags = SGF_PER_COMPANY | SGF_DISPLAY_ABS def = 6 min = -12 max = 12 str = STR_CONFIG_SETTING_AUTORENEW_MONTHS strhelp = STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT strval = STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE [SDT_VAR] base = CompanySettings var = engine_renew_money type = SLE_UINT guiflags = SGF_PER_COMPANY | SGF_CURRENCY def = 100000 min = 0 max = 2000000 str = STR_CONFIG_SETTING_AUTORENEW_MONEY strhelp = STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT strval = STR_JUST_CURRENCY_LONG [SDT_BOOL] base = CompanySettings var = renew_keep_length def = false [SDT_BOOL] base = CompanySettings var = vehicle.servint_ispercent def = false str = STR_CONFIG_SETTING_SERVINT_ISPERCENT strhelp = STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT proc = CheckInterval [SDT_VAR] base = CompanySettings var = vehicle.servint_trains type = SLE_UINT16 guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED def = 150 min = 5 max = 800 str = STR_CONFIG_SETTING_SERVINT_TRAINS strhelp = STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE proc = UpdateIntervalTrains [SDT_VAR] base = CompanySettings var = vehicle.servint_roadveh type = SLE_UINT16 guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED def = 150 min = 5 max = 800 str = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE proc = UpdateIntervalRoadVeh [SDT_VAR] base = CompanySettings var = vehicle.servint_ships type = SLE_UINT16 guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED def = 360 min = 5 max = 800 str = STR_CONFIG_SETTING_SERVINT_SHIPS strhelp = STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE proc = UpdateIntervalShips [SDT_VAR] base = CompanySettings var = vehicle.servint_aircraft type = SLE_UINT16 guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED def = 100 min = 5 max = 800 str = STR_CONFIG_SETTING_SERVINT_AIRCRAFT strhelp = STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE proc = UpdateIntervalAircraft [SDT_END] }; openttd-1.3.3/src/table/airporttiles.h0000644000000000000000000000464612246102566016457 0ustar rootroot/* $Id: airporttiles.h 20623 2010-08-26 15:31:40Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airporttiles.h Tables with airporttile defaults. */ #ifndef AIRPORTTILES_H #define AIRPORTTILES_H /** Writes all airport tile properties in the AirportTile struct */ #define AT(num_frames, anim_speed) {{num_frames, ANIM_STATUS_LOOPING, anim_speed, 0}, STR_NULL, 0, 0, true, GRFFileProps(INVALID_AIRPORTTILE)} /** Writes an airport tile without animation in the AirportTile struct */ #define AT_NOANIM {{0, ANIM_STATUS_NO_ANIMATION, 2, 0}, STR_NULL, 0, 0, true, GRFFileProps(INVALID_AIRPORTTILE)} /** * All default airport tiles. * @see AirportTiles for a list of names. */ static const AirportTileSpec _origin_airporttile_specs[] = { /* 0..9 */ AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT(11, 2), // APT_RADAR_GRASS_FENCE_SW AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT(3, 1), // APT_GRASS_FENCE_NE_FLAG AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT(11, 2), // APT_RADAR_FENCE_SW AT(11, 2), // APT_RADAR_FENCE_NE AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT_NOANIM, AT(3, 1), // APT_GRASS_FENCE_NE_FLAG_2 }; assert_compile(NEW_AIRPORTTILE_OFFSET == lengthof(_origin_airporttile_specs)); #undef AT_NOANIM #undef AT #endif /* AIRPORTTILES_H */ openttd-1.3.3/src/table/misc_settings.ini0000644000000000000000000001512012246102566017126 0ustar rootroot; $Id: misc_settings.ini 25502 2013-06-28 19:44:28Z rubidium $ ; ; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; [pre-amble] extern char _config_language_file[MAX_PATH]; static const SettingDescGlobVarList _misc_settings[] = { [post-amble] }; [templates] SDTG_LIST = SDTG_LIST($name, $type, $length, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_MMANY = SDTG_MMANY($name, $type, $flags, $guiflags, $var, $def, $full, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_STR = SDTG_STR($name, $type, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $proc, $from, $to, $cat), SDTG_END = SDTG_END() [defaults] flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC guiflags = 0 interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION cat = SC_ADVANCED [SDTG_MMANY] name = ""display_opt"" type = SLE_UINT8 var = _display_opt def = (1 << DO_SHOW_TOWN_NAMES | 1 << DO_SHOW_STATION_NAMES | 1 << DO_SHOW_SIGNS | 1 << DO_FULL_ANIMATION | 1 << DO_FULL_DETAIL | 1 << DO_SHOW_WAYPOINT_NAMES | 1 << DO_SHOW_COMPETITOR_SIGNS) full = ""SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION||FULL_DETAIL|WAYPOINTS|SHOW_COMPETITOR_SIGNS"" [SDTG_BOOL] name = ""fullscreen"" var = _fullscreen def = false cat = SC_BASIC [SDTG_STR] name = ""graphicsset"" type = SLE_STRQ var = BaseGraphics::ini_set def = NULL cat = SC_BASIC [SDTG_STR] name = ""soundsset"" type = SLE_STRQ var = BaseSounds::ini_set def = NULL cat = SC_BASIC [SDTG_STR] name = ""musicset"" type = SLE_STRQ var = BaseMusic::ini_set def = NULL cat = SC_BASIC [SDTG_STR] name = ""videodriver"" type = SLE_STRQ var = _ini_videodriver def = NULL cat = SC_EXPERT [SDTG_STR] name = ""musicdriver"" type = SLE_STRQ var = _ini_musicdriver def = NULL cat = SC_EXPERT [SDTG_STR] name = ""sounddriver"" type = SLE_STRQ var = _ini_sounddriver def = NULL cat = SC_EXPERT [SDTG_STR] name = ""blitter"" type = SLE_STRQ var = _ini_blitter def = NULL [SDTG_STR] name = ""language"" type = SLE_STRB var = _config_language_file def = NULL cat = SC_BASIC ; workaround for implicit lengthof() in SDTG_LIST [SDTG_LIST] name = ""resolution"" type = SLE_INT length = 2 var = _cur_resolution def = ""640,480"" cat = SC_BASIC [SDTG_STR] name = ""screenshot_format"" type = SLE_STRB var = _screenshot_format_name def = NULL cat = SC_EXPERT [SDTG_STR] name = ""savegame_format"" type = SLE_STRB var = _savegame_format def = NULL cat = SC_EXPERT [SDTG_BOOL] name = ""rightclick_emulate"" var = _rightclick_emulate def = false [SDTG_STR] ifdef = WITH_FREETYPE name = ""small_font"" type = SLE_STRB var = _freetype.small.font def = NULL [SDTG_STR] ifdef = WITH_FREETYPE name = ""medium_font"" type = SLE_STRB var = _freetype.medium.font def = NULL [SDTG_STR] ifdef = WITH_FREETYPE name = ""large_font"" type = SLE_STRB var = _freetype.large.font def = NULL [SDTG_STR] ifdef = WITH_FREETYPE name = ""mono_font"" type = SLE_STRB var = _freetype.mono.font def = NULL [SDTG_VAR] ifdef = WITH_FREETYPE name = ""small_size"" type = SLE_UINT var = _freetype.small.size def = 0 min = 0 max = 72 [SDTG_VAR] ifdef = WITH_FREETYPE name = ""medium_size"" type = SLE_UINT var = _freetype.medium.size def = 0 min = 0 max = 72 [SDTG_VAR] ifdef = WITH_FREETYPE name = ""large_size"" type = SLE_UINT var = _freetype.large.size def = 0 min = 0 max = 72 [SDTG_VAR] ifdef = WITH_FREETYPE name = ""mono_size"" type = SLE_UINT var = _freetype.mono.size def = 0 min = 0 max = 72 [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""small_aa"" var = _freetype.small.aa def = false [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""medium_aa"" var = _freetype.medium.aa def = false [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""large_aa"" var = _freetype.large.aa def = false [SDTG_BOOL] ifdef = WITH_FREETYPE name = ""mono_aa"" var = _freetype.mono.aa def = false [SDTG_VAR] name = ""sprite_cache_size_px"" type = SLE_UINT var = _sprite_cache_size def = 128 min = 1 max = 512 cat = SC_EXPERT [SDTG_VAR] name = ""player_face"" type = SLE_UINT32 var = _company_manager_face def = 0 min = 0 max = 0xFFFFFFFF cat = SC_BASIC [SDTG_VAR] name = ""transparency_options"" type = SLE_UINT var = _transparency_opt def = 0 min = 0 max = 0x1FF cat = SC_BASIC [SDTG_VAR] name = ""transparency_locks"" type = SLE_UINT var = _transparency_lock def = 0 min = 0 max = 0x1FF cat = SC_BASIC [SDTG_VAR] name = ""invisibility_options"" type = SLE_UINT var = _invisibility_opt def = 0 min = 0 max = 0xFF cat = SC_BASIC [SDTG_STR] name = ""keyboard"" type = SLE_STRB var = _keyboard_opt[0] def = NULL cat = SC_EXPERT [SDTG_STR] name = ""keyboard_caps"" type = SLE_STRB var = _keyboard_opt[1] def = NULL cat = SC_EXPERT [SDTG_VAR] name = ""last_newgrf_count"" type = SLE_UINT32 var = _settings_client.gui.last_newgrf_count def = 100 min = 0 max = UINT32_MAX cat = SC_EXPERT [SDTG_END] openttd-1.3.3/src/highscore_gui.cpp0000644000000000000000000002041212246102611015775 0ustar rootroot/* $Id: highscore_gui.cpp 25982 2013-11-13 21:35:44Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file highscore_gui.cpp Definition of the HighScore and EndGame windows */ #include "stdafx.h" #include "highscore.h" #include "table/strings.h" #include "gfx_func.h" #include "table/sprites.h" #include "window_gui.h" #include "window_func.h" #include "network/network.h" #include "command_func.h" #include "company_func.h" #include "company_base.h" #include "strings_func.h" #include "hotkeys.h" #include "widgets/highscore_widget.h" struct EndGameHighScoreBaseWindow : Window { uint32 background_img; int8 rank; EndGameHighScoreBaseWindow(const WindowDesc *desc) : Window() { this->InitNested(desc); CLRBITS(this->flags, WF_WHITE_BORDER); ResizeWindow(this, _screen.width - this->width, _screen.height - this->height); } /* Always draw a maximized window and within it the centered background */ void SetupHighScoreEndWindow() { /* Resize window to "full-screen". */ if (this->width != _screen.width || this->height != _screen.height) ResizeWindow(this, _screen.width - this->width, _screen.height - this->height); this->DrawWidgets(); Point pt = this->GetTopLeft640x480(); /* Center Highscore/Endscreen background */ for (uint i = 0; i < 10; i++) { // the image is split into 10 50px high parts DrawSprite(this->background_img + i, PAL_NONE, pt.x, pt.y + (i * 50)); } } /** Return the coordinate of the screen such that a window of 640x480 is centered at the screen. */ Point GetTopLeft640x480() { Point pt = {max(0, (_screen.width / 2) - (640 / 2)), max(0, (_screen.height / 2) - (480 / 2))}; return pt; } virtual void OnClick(Point pt, int widget, int click_count) { delete this; } virtual EventState OnKeyPress(WChar key, uint16 keycode) { /* All keys are 'handled' by this window but we want to make * sure that 'quit' still works correctly. Not handling the * quit key is enough so the main toolbar can handle it. */ if (IsQuitKey(keycode)) return ES_NOT_HANDLED; switch (keycode) { /* Keys for telling we want to go on */ case WKC_RETURN: case WKC_ESC: case WKC_SPACE: delete this; return ES_HANDLED; default: /* We want to handle all keys; we don't want windows in * the background to open. Especially the ones that do * locate themselves based on the status-/toolbars. */ return ES_HANDLED; } } }; /** End game window shown at the end of the game */ struct EndGameWindow : EndGameHighScoreBaseWindow { EndGameWindow(const WindowDesc *desc) : EndGameHighScoreBaseWindow(desc) { /* Pause in single-player to have a look at the highscore at your own leisure */ if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); this->background_img = SPR_TYCOON_IMG1_BEGIN; if (_local_company != COMPANY_SPECTATOR) { const Company *c = Company::Get(_local_company); if (c->old_economy[0].performance_history == SCORE_MAX) { this->background_img = SPR_TYCOON_IMG2_BEGIN; } } /* In a network game show the endscores of the custom difficulty 'network' which is * a TOP5 of that game, and not an all-time TOP5. */ if (_networking) { this->window_number = SP_MULTIPLAYER; this->rank = SaveHighScoreValueNetwork(); } else { /* in single player _local company is always valid */ const Company *c = Company::Get(_local_company); this->window_number = SP_CUSTOM; this->rank = SaveHighScoreValue(c); } MarkWholeScreenDirty(); } ~EndGameWindow() { if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause ShowHighscoreTable(this->window_number, this->rank); } virtual void OnPaint() { this->SetupHighScoreEndWindow(); Point pt = this->GetTopLeft640x480(); const Company *c = Company::GetIfValid(_local_company); if (c == NULL) return; /* We need to get performance from last year because the image is shown * at the start of the new year when these things have already been copied */ if (this->background_img == SPR_TYCOON_IMG2_BEGIN) { // Tycoon of the century \o/ SetDParam(0, c->index); SetDParam(1, c->index); SetDParam(2, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history)); DrawStringMultiLine(pt.x + 15, pt.x + 640 - 25, pt.y + 90, pt.y + 160, STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER); } else { SetDParam(0, c->index); SetDParam(1, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history)); DrawStringMultiLine(pt.x + 36, pt.x + 640, pt.y + 140, pt.y + 206, STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER); } } }; struct HighScoreWindow : EndGameHighScoreBaseWindow { bool game_paused_by_player; ///< True if the game was paused by the player when the highscore window was opened. HighScoreWindow(const WindowDesc *desc, int difficulty, int8 ranking) : EndGameHighScoreBaseWindow(desc) { /* pause game to show the chart */ this->game_paused_by_player = _pause_mode == PM_PAUSED_NORMAL; if (!_networking && !this->game_paused_by_player) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); /* Close all always on-top windows to get a clean screen */ if (_game_mode != GM_MENU) HideVitalWindows(); MarkWholeScreenDirty(); this->window_number = difficulty; // show highscore chart for difficulty... this->background_img = SPR_HIGHSCORE_CHART_BEGIN; // which background to show this->rank = ranking; } ~HighScoreWindow() { if (_game_mode != GM_MENU) ShowVitalWindows(); if (!_networking && !this->game_paused_by_player) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause } virtual void OnPaint() { const HighScore *hs = _highscore_table[this->window_number]; this->SetupHighScoreEndWindow(); Point pt = this->GetTopLeft640x480(); SetDParam(0, ORIGINAL_END_YEAR); DrawStringMultiLine(pt.x + 70, pt.x + 570, pt.y, pt.y + 140, !_networking ? STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED : STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME, TC_FROMSTRING, SA_CENTER); /* Draw Highscore peepz */ for (uint8 i = 0; i < lengthof(_highscore_table[0]); i++) { SetDParam(0, i + 1); DrawString(pt.x + 40, pt.x + 600, pt.y + 140 + (i * 55), STR_HIGHSCORE_POSITION); if (hs[i].company[0] != '\0') { TextColour colour = (this->rank == i) ? TC_RED : TC_BLACK; // draw new highscore in red SetDParamStr(0, hs[i].company); DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + (i * 55), STR_JUST_BIG_RAW_STRING, colour); SetDParam(0, hs[i].title); SetDParam(1, hs[i].score); DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + FONT_HEIGHT_LARGE + (i * 55), STR_HIGHSCORE_STATS, colour); } } } }; static const NWidgetPart _nested_highscore_widgets[] = { NWidget(WWT_PANEL, COLOUR_BROWN, WID_H_BACKGROUND), SetMinimalSize(641, 481), SetResize(1, 1), EndContainer(), }; static const WindowDesc _highscore_desc( WDP_MANUAL, 0, 0, WC_HIGHSCORE, WC_NONE, 0, _nested_highscore_widgets, lengthof(_nested_highscore_widgets) ); static const WindowDesc _endgame_desc( WDP_MANUAL, 0, 0, WC_ENDSCREEN, WC_NONE, 0, _nested_highscore_widgets, lengthof(_nested_highscore_widgets) ); /** * Show the highscore table for a given difficulty. When called from * endgame ranking is set to the top5 element that was newly added * and is thus highlighted */ void ShowHighscoreTable(int difficulty, int8 ranking) { DeleteWindowByClass(WC_HIGHSCORE); new HighScoreWindow(&_highscore_desc, difficulty, ranking); } /** * Show the endgame victory screen in 2050. Update the new highscore * if it was high enough */ void ShowEndGameChart() { /* Dedicated server doesn't need the highscore window and neither does -v null. */ if (_network_dedicated || (!_networking && !Company::IsValidID(_local_company))) return; HideVitalWindows(); DeleteWindowByClass(WC_ENDSCREEN); new EndGameWindow(&_endgame_desc); } openttd-1.3.3/src/misc_cmd.cpp0000644000000000000000000001675312246102611014751 0ustar rootroot/* $Id: misc_cmd.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file misc_cmd.cpp Some misc functions that are better fitted in other files, but never got moved there... */ #include "stdafx.h" #include "command_func.h" #include "economy_func.h" #include "window_func.h" #include "textbuf_gui.h" #include "network/network.h" #include "network/network_func.h" #include "strings_func.h" #include "company_func.h" #include "company_gui.h" #include "company_base.h" #include "core/backup_type.hpp" #include "table/strings.h" /** * Increase the loan of your company. * @param tile unused * @param flags operation to perform * @param p1 amount to increase the loan with, multitude of LOAN_INTERVAL. Only used when p2 == 2. * @param p2 when 0: loans LOAN_INTERVAL * when 1: loans the maximum loan permitting money (press CTRL), * when 2: loans the amount specified in p1 * @param text unused * @return the cost of this operation or an error */ CommandCost CmdIncreaseLoan(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Company *c = Company::Get(_current_company); if (c->current_loan >= _economy.max_loan) { SetDParam(0, _economy.max_loan); return_cmd_error(STR_ERROR_MAXIMUM_PERMITTED_LOAN); } Money loan; switch (p2) { default: return CMD_ERROR; // Invalid method case 0: // Take some extra loan loan = LOAN_INTERVAL; break; case 1: // Take a loan as big as possible loan = _economy.max_loan - c->current_loan; break; case 2: // Take the given amount of loan if ((int32)p1 < LOAN_INTERVAL || c->current_loan + (int32)p1 > _economy.max_loan || p1 % LOAN_INTERVAL != 0) return CMD_ERROR; loan = p1; break; } /* Overflow protection */ if (c->money + c->current_loan + loan < c->money) return CMD_ERROR; if (flags & DC_EXEC) { c->money += loan; c->current_loan += loan; InvalidateCompanyWindows(c); } return CommandCost(EXPENSES_OTHER); } /** * Decrease the loan of your company. * @param tile unused * @param flags operation to perform * @param p1 amount to decrease the loan with, multitude of LOAN_INTERVAL. Only used when p2 == 2. * @param p2 when 0: pays back LOAN_INTERVAL * when 1: pays back the maximum loan permitting money (press CTRL), * when 2: pays back the amount specified in p1 * @param text unused * @return the cost of this operation or an error */ CommandCost CmdDecreaseLoan(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Company *c = Company::Get(_current_company); if (c->current_loan == 0) return_cmd_error(STR_ERROR_LOAN_ALREADY_REPAYED); Money loan; switch (p2) { default: return CMD_ERROR; // Invalid method case 0: // Pay back one step loan = min(c->current_loan, (Money)LOAN_INTERVAL); break; case 1: // Pay back as much as possible loan = max(min(c->current_loan, c->money), (Money)LOAN_INTERVAL); loan -= loan % LOAN_INTERVAL; break; case 2: // Repay the given amount of loan if (p1 % LOAN_INTERVAL != 0 || (int32)p1 < LOAN_INTERVAL || p1 > c->current_loan) return CMD_ERROR; // Invalid amount to loan loan = p1; break; } if (c->money < loan) { SetDParam(0, loan); return_cmd_error(STR_ERROR_CURRENCY_REQUIRED); } if (flags & DC_EXEC) { c->money -= loan; c->current_loan -= loan; InvalidateCompanyWindows(c); } return CommandCost(); } /** * In case of an unsafe unpause, we want the * user to confirm that it might crash. * @param w unused * @param confirmed whether the user confirms his/her action */ static void AskUnsafeUnpauseCallback(Window *w, bool confirmed) { if (confirmed) { DoCommandP(0, PM_PAUSED_ERROR, 0, CMD_PAUSE); } } /** * Pause/Unpause the game (server-only). * Set or unset a bit in the pause mode. If pause mode is zero the game is * unpaused. A bitset is used instead of a boolean value/counter to have * more control over the game when saving/loading, etc. * @param tile unused * @param flags operation to perform * @param p1 the pause mode to change * @param p2 1 pauses, 0 unpauses this mode * @param text unused * @return the cost of this operation or an error */ CommandCost CmdPause(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { switch (p1) { case PM_PAUSED_SAVELOAD: case PM_PAUSED_ERROR: case PM_PAUSED_NORMAL: case PM_PAUSED_GAME_SCRIPT: break; #ifdef ENABLE_NETWORK case PM_PAUSED_JOIN: case PM_PAUSED_ACTIVE_CLIENTS: if (!_networking) return CMD_ERROR; break; #endif /* ENABLE_NETWORK */ default: return CMD_ERROR; } if (flags & DC_EXEC) { if (p1 == PM_PAUSED_NORMAL && _pause_mode & PM_PAUSED_ERROR) { ShowQuery( STR_NEWGRF_UNPAUSE_WARNING_TITLE, STR_NEWGRF_UNPAUSE_WARNING, NULL, AskUnsafeUnpauseCallback ); } else { #ifdef ENABLE_NETWORK PauseMode prev_mode = _pause_mode; #endif /* ENABLE_NETWORK */ if (p2 == 0) { _pause_mode = _pause_mode & ~p1; } else { _pause_mode = _pause_mode | p1; } #ifdef ENABLE_NETWORK NetworkHandlePauseChange(prev_mode, (PauseMode)p1); #endif /* ENABLE_NETWORK */ } SetWindowDirty(WC_STATUS_BAR, 0); SetWindowDirty(WC_MAIN_TOOLBAR, 0); } return CommandCost(); } /** * Change the financial flow of your company. * @param tile unused * @param flags operation to perform * @param p1 the amount of money to receive (if negative), or spend (if positive) * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdMoneyCheat(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { return CommandCost(EXPENSES_OTHER, -(int32)p1); } /** * Transfer funds (money) from one company to another. * To prevent abuse in multiplayer games you can only send money to other * companies if you have paid off your loan (either explicitly, or implicitly * given the fact that you have more money than loan). * @param tile unused * @param flags operation to perform * @param p1 the amount of money to transfer; max 20.000.000 * @param p2 the company to transfer the money to * @param text unused * @return the cost of this operation or an error */ CommandCost CmdGiveMoney(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (!_settings_game.economy.give_money) return CMD_ERROR; const Company *c = Company::Get(_current_company); CommandCost amount(EXPENSES_OTHER, min((Money)p1, (Money)20000000LL)); CompanyID dest_company = (CompanyID)p2; /* You can only transfer funds that is in excess of your loan */ if (c->money - c->current_loan < amount.GetCost() || amount.GetCost() < 0) return CMD_ERROR; if (!_networking || !Company::IsValidID(dest_company)) return CMD_ERROR; if (flags & DC_EXEC) { /* Add money to company */ Backup cur_company(_current_company, dest_company, FILE_LINE); SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -amount.GetCost())); cur_company.Restore(); } /* Subtract money from local-company */ return amount; } openttd-1.3.3/src/order_gui.cpp0000644000000000000000000020000112246102611015127 0ustar rootroot/* $Id: order_gui.cpp 26025 2013-11-17 13:53:33Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_gui.cpp GUI related to orders. */ #include "stdafx.h" #include "command_func.h" #include "viewport_func.h" #include "depot_map.h" #include "roadveh.h" #include "timetable.h" #include "strings_func.h" #include "company_func.h" #include "widgets/dropdown_type.h" #include "widgets/dropdown_func.h" #include "textbuf_gui.h" #include "string_func.h" #include "tilehighlight_func.h" #include "network/network.h" #include "station_base.h" #include "waypoint_base.h" #include "core/geometry_func.hpp" #include "hotkeys.h" #include "aircraft.h" #include "engine_func.h" #include "widgets/order_widget.h" /** Order load types that could be given to station orders. */ static const StringID _station_load_types[][5][5] = { { /* No refitting. */ { STR_EMPTY, INVALID_STRING_ID, STR_ORDER_FULL_LOAD, STR_ORDER_FULL_LOAD_ANY, STR_ORDER_NO_LOAD, }, { STR_ORDER_UNLOAD, INVALID_STRING_ID, STR_ORDER_UNLOAD_FULL_LOAD, STR_ORDER_UNLOAD_FULL_LOAD_ANY, STR_ORDER_UNLOAD_NO_LOAD, }, { STR_ORDER_TRANSFER, INVALID_STRING_ID, STR_ORDER_TRANSFER_FULL_LOAD, STR_ORDER_TRANSFER_FULL_LOAD_ANY, STR_ORDER_TRANSFER_NO_LOAD, }, { /* Unload and transfer do not work together. */ INVALID_STRING_ID, INVALID_STRING_ID, INVALID_STRING_ID, INVALID_STRING_ID, }, { STR_ORDER_NO_UNLOAD, INVALID_STRING_ID, STR_ORDER_NO_UNLOAD_FULL_LOAD, STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY, STR_ORDER_NO_UNLOAD_NO_LOAD, } }, { /* With auto-refitting. No loading and auto-refitting do not work together. */ { STR_ORDER_AUTO_REFIT, INVALID_STRING_ID, STR_ORDER_FULL_LOAD_REFIT, STR_ORDER_FULL_LOAD_ANY_REFIT, INVALID_STRING_ID, }, { STR_ORDER_UNLOAD_REFIT, INVALID_STRING_ID, STR_ORDER_UNLOAD_FULL_LOAD_REFIT, STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT, INVALID_STRING_ID, }, { STR_ORDER_TRANSFER_REFIT, INVALID_STRING_ID, STR_ORDER_TRANSFER_FULL_LOAD_REFIT, STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT, INVALID_STRING_ID, }, { /* Unload and transfer do not work together. */ INVALID_STRING_ID, INVALID_STRING_ID, INVALID_STRING_ID, INVALID_STRING_ID, }, { STR_ORDER_NO_UNLOAD_REFIT, INVALID_STRING_ID, STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT, STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT, INVALID_STRING_ID, } } }; static const StringID _order_non_stop_drowdown[] = { STR_ORDER_GO_TO, STR_ORDER_GO_NON_STOP_TO, STR_ORDER_GO_VIA, STR_ORDER_GO_NON_STOP_VIA, INVALID_STRING_ID }; static const StringID _order_full_load_drowdown[] = { STR_ORDER_DROP_LOAD_IF_POSSIBLE, STR_EMPTY, STR_ORDER_DROP_FULL_LOAD_ALL, STR_ORDER_DROP_FULL_LOAD_ANY, STR_ORDER_DROP_NO_LOADING, INVALID_STRING_ID }; static const StringID _order_unload_drowdown[] = { STR_ORDER_DROP_UNLOAD_IF_ACCEPTED, STR_ORDER_DROP_UNLOAD, STR_ORDER_DROP_TRANSFER, STR_EMPTY, STR_ORDER_DROP_NO_UNLOADING, INVALID_STRING_ID }; static const StringID _order_goto_dropdown[] = { STR_ORDER_GO_TO, STR_ORDER_GO_TO_NEAREST_DEPOT, STR_ORDER_CONDITIONAL, STR_ORDER_SHARE, INVALID_STRING_ID }; static const StringID _order_goto_dropdown_aircraft[] = { STR_ORDER_GO_TO, STR_ORDER_GO_TO_NEAREST_HANGAR, STR_ORDER_CONDITIONAL, STR_ORDER_SHARE, INVALID_STRING_ID }; /** Variables for conditional orders; this defines the order of appearance in the dropdown box */ static const OrderConditionVariable _order_conditional_variable[] = { OCV_LOAD_PERCENTAGE, OCV_RELIABILITY, OCV_MAX_SPEED, OCV_AGE, OCV_REMAINING_LIFETIME, OCV_REQUIRES_SERVICE, OCV_UNCONDITIONALLY, }; static const StringID _order_conditional_condition[] = { STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS, STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS, STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN, STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS, STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN, STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS, STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE, STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE, INVALID_STRING_ID, }; extern uint ConvertSpeedToDisplaySpeed(uint speed); extern uint ConvertDisplaySpeedToSpeed(uint speed); static const StringID _order_depot_action_dropdown[] = { STR_ORDER_DROP_GO_ALWAYS_DEPOT, STR_ORDER_DROP_SERVICE_DEPOT, STR_ORDER_DROP_HALT_DEPOT, INVALID_STRING_ID }; static int DepotActionStringIndex(const Order *order) { if (order->GetDepotActionType() & ODATFB_HALT) { return DA_STOP; } else if (order->GetDepotOrderType() & ODTFB_SERVICE) { return DA_SERVICE; } else { return DA_ALWAYS_GO; } } static const StringID _order_refit_action_dropdown[] = { STR_ORDER_DROP_REFIT_AUTO, STR_ORDER_DROP_REFIT_AUTO_ANY, INVALID_STRING_ID }; /** * Draws an order in order or timetable GUI * @param v Vehicle the order belongs to * @param order The order to draw * @param order_index Index of the order in the orders of the vehicle * @param y Y position for drawing * @param selected True, if the order is selected * @param timetable True, when drawing in the timetable GUI * @param left Left border for text drawing * @param middle X position between order index and order text * @param right Right border for text drawing */ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int left, int middle, int right) { bool rtl = _current_text_dir == TD_RTL; SpriteID sprite = rtl ? SPR_ARROW_LEFT : SPR_ARROW_RIGHT; Dimension sprite_size = GetSpriteSize(sprite); if (v->cur_real_order_index == order_index) { DrawSprite(sprite, PAL_NONE, rtl ? right - sprite_size.width : left, y + ((int)FONT_HEIGHT_NORMAL - (int)sprite_size.height) / 2); DrawSprite(sprite, PAL_NONE, rtl ? right - 2 * sprite_size.width : left + sprite_size.width, y + ((int)FONT_HEIGHT_NORMAL - (int)sprite_size.height) / 2); } else if (v->cur_implicit_order_index == order_index) { DrawSprite(sprite, PAL_NONE, rtl ? right - sprite_size.width : left, y + ((int)FONT_HEIGHT_NORMAL - (int)sprite_size.height) / 2); } TextColour colour = TC_BLACK; if (order->IsType(OT_IMPLICIT)) { colour = (selected ? TC_SILVER : TC_GREY) | TC_NO_SHADE; } else if (selected) { colour = TC_WHITE; } SetDParam(0, order_index + 1); DrawString(left, rtl ? right - 2 * sprite_size.width - 3 : middle, y, STR_ORDER_INDEX, colour, SA_RIGHT | SA_FORCE); SetDParam(5, STR_EMPTY); SetDParam(8, STR_EMPTY); /* Check range for aircraft. */ if (v->type == VEH_AIRCRAFT && Aircraft::From(v)->GetRange() > 0 && order->IsGotoOrder()) { const Order *next = order->next != NULL ? order->next : v->GetFirstOrder(); if (GetOrderDistance(order, next, v) > Aircraft::From(v)->acache.cached_max_range_sqr) SetDParam(8, STR_ORDER_OUT_OF_RANGE); } switch (order->GetType()) { case OT_DUMMY: SetDParam(0, STR_INVALID_ORDER); SetDParam(1, order->GetDestination()); break; case OT_IMPLICIT: SetDParam(0, STR_ORDER_GO_TO_STATION); SetDParam(1, STR_ORDER_GO_TO); SetDParam(2, order->GetDestination()); SetDParam(3, timetable ? STR_EMPTY : STR_ORDER_IMPLICIT); break; case OT_GOTO_STATION: { OrderLoadFlags load = order->GetLoadType(); OrderUnloadFlags unload = order->GetUnloadType(); SetDParam(0, STR_ORDER_GO_TO_STATION); SetDParam(1, STR_ORDER_GO_TO + (v->IsGroundVehicle() ? order->GetNonStopType() : 0)); SetDParam(2, order->GetDestination()); if (timetable) { SetDParam(3, STR_EMPTY); if (order->wait_time > 0) { SetDParam(5, STR_TIMETABLE_STAY_FOR); SetTimetableParams(6, 7, order->wait_time); } } else { SetDParam(3, (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) ? STR_EMPTY : _station_load_types[order->IsRefit()][unload][load]); if (order->IsRefit()) { SetDParam(4, order->IsAutoRefit() ? STR_ORDER_AUTO_REFIT_ANY : CargoSpec::Get(order->GetRefitCargo())->name); } if (v->type == VEH_TRAIN && (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) { SetDParam(5, order->GetStopLocation() + STR_ORDER_STOP_LOCATION_NEAR_END); } } break; } case OT_GOTO_DEPOT: if (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) { SetDParam(0, STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT); if (v->type == VEH_AIRCRAFT) { SetDParam(2, STR_ORDER_NEAREST_HANGAR); SetDParam(3, STR_EMPTY); } else { SetDParam(2, STR_ORDER_NEAREST_DEPOT); SetDParam(3, STR_ORDER_TRAIN_DEPOT + v->type); } } else { SetDParam(0, STR_ORDER_GO_TO_DEPOT_FORMAT); SetDParam(2, v->type); SetDParam(3, order->GetDestination()); } if (order->GetDepotOrderType() & ODTFB_SERVICE) { SetDParam(1, (order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS) ? STR_ORDER_SERVICE_NON_STOP_AT : STR_ORDER_SERVICE_AT); } else { SetDParam(1, (order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS) ? STR_ORDER_GO_NON_STOP_TO : STR_ORDER_GO_TO); } if (!timetable && (order->GetDepotActionType() & ODATFB_HALT)) { SetDParam(5, STR_ORDER_STOP_ORDER); } if (!timetable && order->IsRefit()) { SetDParam(5, (order->GetDepotActionType() & ODATFB_HALT) ? STR_ORDER_REFIT_STOP_ORDER : STR_ORDER_REFIT_ORDER); SetDParam(6, CargoSpec::Get(order->GetRefitCargo())->name); } break; case OT_GOTO_WAYPOINT: SetDParam(0, (order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS) ? STR_ORDER_GO_NON_STOP_TO_WAYPOINT : STR_ORDER_GO_TO_WAYPOINT); SetDParam(1, order->GetDestination()); break; case OT_CONDITIONAL: SetDParam(1, order->GetConditionSkipToOrder() + 1); if (order->GetConditionVariable() == OCV_UNCONDITIONALLY) { SetDParam(0, STR_ORDER_CONDITIONAL_UNCONDITIONAL); } else { OrderConditionComparator occ = order->GetConditionComparator(); SetDParam(0, (occ == OCC_IS_TRUE || occ == OCC_IS_FALSE) ? STR_ORDER_CONDITIONAL_TRUE_FALSE : STR_ORDER_CONDITIONAL_NUM); SetDParam(2, STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + order->GetConditionVariable()); SetDParam(3, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + occ); uint value = order->GetConditionValue(); if (order->GetConditionVariable() == OCV_MAX_SPEED) value = ConvertSpeedToDisplaySpeed(value); SetDParam(4, value); } if (timetable && order->wait_time > 0) { SetDParam(5, STR_TIMETABLE_AND_TRAVEL_FOR); SetTimetableParams(6, 7, order->wait_time); } else { SetDParam(5, STR_EMPTY); } break; default: NOT_REACHED(); } DrawString(rtl ? left : middle, rtl ? middle : right, y, STR_ORDER_TEXT, colour); } static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile) { Order order; order.next = NULL; order.index = 0; /* check depot first */ switch (GetTileType(tile)) { case MP_RAILWAY: if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_company)) { if (IsRailDepot(tile)) { order.MakeGoToDepot(GetDepotIndex(tile), ODTFB_PART_OF_ORDERS, _settings_client.gui.new_nonstop ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); return order; } } break; case MP_ROAD: if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_company)) { order.MakeGoToDepot(GetDepotIndex(tile), ODTFB_PART_OF_ORDERS, _settings_client.gui.new_nonstop ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); return order; } break; case MP_STATION: if (v->type != VEH_AIRCRAFT) break; if (IsHangar(tile) && IsTileOwner(tile, _local_company)) { order.MakeGoToDepot(GetStationIndex(tile), ODTFB_PART_OF_ORDERS, ONSF_STOP_EVERYWHERE); if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); return order; } break; case MP_WATER: if (v->type != VEH_SHIP) break; if (IsShipDepot(tile) && IsTileOwner(tile, _local_company)) { order.MakeGoToDepot(GetDepotIndex(tile), ODTFB_PART_OF_ORDERS, ONSF_STOP_EVERYWHERE); if (_ctrl_pressed) order.SetDepotOrderType((OrderDepotTypeFlags)(order.GetDepotOrderType() ^ ODTFB_SERVICE)); return order; } break; default: break; } /* check waypoint */ if (IsRailWaypointTile(tile) && v->type == VEH_TRAIN && IsTileOwner(tile, _local_company)) { order.MakeGoToWaypoint(Waypoint::GetByTile(tile)->index); if (_settings_client.gui.new_nonstop != _ctrl_pressed) order.SetNonStopType(ONSF_NO_STOP_AT_ANY_STATION); return order; } if ((IsBuoyTile(tile) && v->type == VEH_SHIP) || (IsRailWaypointTile(tile) && v->type == VEH_TRAIN)) { order.MakeGoToWaypoint(GetStationIndex(tile)); return order; } if (IsTileType(tile, MP_STATION)) { StationID st_index = GetStationIndex(tile); const Station *st = Station::Get(st_index); if (st->owner == _local_company || st->owner == OWNER_NONE) { byte facil; (facil = FACIL_DOCK, v->type == VEH_SHIP) || (facil = FACIL_TRAIN, v->type == VEH_TRAIN) || (facil = FACIL_AIRPORT, v->type == VEH_AIRCRAFT) || (facil = FACIL_BUS_STOP, v->type == VEH_ROAD && RoadVehicle::From(v)->IsBus()) || (facil = FACIL_TRUCK_STOP, 1); if (st->facilities & facil) { order.MakeGoToStation(st_index); if (_ctrl_pressed) order.SetLoadType(OLF_FULL_LOAD_ANY); if (_settings_client.gui.new_nonstop && v->IsGroundVehicle()) order.SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); order.SetStopLocation(v->type == VEH_TRAIN ? (OrderStopLocation)(_settings_client.gui.stop_location) : OSL_PLATFORM_FAR_END); return order; } } } /* not found */ order.Free(); return order; } /** * %Order window code for all vehicles. * * At the bottom of the window two button rows are located for changing the orders of the vehicle. * * \section top-row Top row * The top-row is for manipulating an individual order. What row is displayed depends on the type of vehicle, and whether or not you are the owner of the vehicle. * * The top-row buttons of one of your trains or road vehicles is one of the following three cases: * \verbatim * +-----------------+-----------------+-----------------+-----------------+ * | NON-STOP | FULL_LOAD | UNLOAD | REFIT | (normal) * +-----------------+-----+-----------+-----------+-----+-----------------+ * | COND_VAR | COND_COMPARATOR | COND_VALUE | (for conditional orders) * +-----------------+-----+-----------+-----------+-----+-----------------+ * | NON-STOP | REFIT | SERVICE | (empty) | (for depot orders) * +-----------------+-----------------+-----------------+-----------------+ * \endverbatim * * Airplanes and ships have one of the following three top-row button rows: * \verbatim * +-----------------+-----------------+-----------------+ * | FULL_LOAD | UNLOAD | REFIT | (normal) * +-----------------+-----------------+-----------------+ * | COND_VAR | COND_COMPARATOR | COND_VALUE | (for conditional orders) * +-----------------+--------+--------+-----------------+ * | REFIT | SERVICE | (for depot order) * +--------------------------+--------------------------+ * \endverbatim * * \section bottom-row Bottom row * The second row (the bottom row) is for manipulating the list of orders: * \verbatim * +-----------------+-----------------+-----------------+ * | SKIP | DELETE | GOTO | * +-----------------+-----------------+-----------------+ * \endverbatim * * For vehicles of other companies, both button rows are not displayed. */ struct OrdersWindow : public Window { private: /** Under what reason are we using the PlaceObject functionality? */ enum OrderPlaceObjectState { OPOS_NONE, OPOS_GOTO, OPOS_CONDITIONAL, OPOS_SHARE, }; /** Displayed planes of the #NWID_SELECTION widgets. */ enum DisplayPane { /* WID_O_SEL_TOP_ROW_GROUNDVEHICLE */ DP_GROUNDVEHICLE_ROW_NORMAL = 0, ///< Display the row for normal/depot orders in the top row of the train/rv order window. DP_GROUNDVEHICLE_ROW_CONDITIONAL = 1, ///< Display the row for conditional orders in the top row of the train/rv order window. /* WID_O_SEL_TOP_LEFT */ DP_LEFT_LOAD = 0, ///< Display 'load' in the left button of the top row of the train/rv order window. DP_LEFT_REFIT = 1, ///< Display 'refit' in the left button of the top row of the train/rv order window. /* WID_O_SEL_TOP_MIDDLE */ DP_MIDDLE_UNLOAD = 0, ///< Display 'unload' in the middle button of the top row of the train/rv order window. DP_MIDDLE_SERVICE = 1, ///< Display 'service' in the middle button of the top row of the train/rv order window. /* WID_O_SEL_TOP_RIGHT */ DP_RIGHT_EMPTY = 0, ///< Display an empty panel in the right button of the top row of the train/rv order window. DP_RIGHT_REFIT = 1, ///< Display 'refit' in the right button of the top row of the train/rv order window. /* WID_O_SEL_TOP_ROW */ DP_ROW_LOAD = 0, ///< Display 'load' / 'unload' / 'refit' buttons in the top row of the ship/airplane order window. DP_ROW_DEPOT = 1, ///< Display 'refit' / 'service' buttons in the top row of the ship/airplane order window. DP_ROW_CONDITIONAL = 2, ///< Display the conditional order buttons in the top row of the ship/airplane order window. /* WID_O_SEL_BOTTOM_MIDDLE */ DP_BOTTOM_MIDDLE_DELETE = 0, ///< Display 'delete' in the middle button of the bottom row of the vehicle order window. DP_BOTTOM_MIDDLE_STOP_SHARING = 1, ///< Display 'stop sharing' in the middle button of the bottom row of the vehicle order window. }; int selected_order; VehicleOrderID order_over; ///< Order over which another order is dragged, \c INVALID_VEH_ORDER_ID if none. OrderPlaceObjectState goto_type; const Vehicle *vehicle; ///< Vehicle owning the orders being displayed and manipulated. Scrollbar *vscroll; bool can_do_refit; ///< Vehicle chain can be refitted in depot. bool can_do_autorefit; ///< Vehicle chain can be auto-refitted. /** * Return the memorised selected order. * @return the memorised order if it is a valid one * else return the number of orders */ VehicleOrderID OrderGetSel() const { int num = this->selected_order; return (num >= 0 && num < vehicle->GetNumOrders()) ? num : vehicle->GetNumOrders(); } /** * Calculate the selected order. * The calculation is based on the relative (to the window) y click position and * the position of the scrollbar. * * @param y Y-value of the click relative to the window origin * @return The selected order if the order is valid, else return \c INVALID_VEH_ORDER_ID. */ VehicleOrderID GetOrderFromPt(int y) { NWidgetBase *nwid = this->GetWidget(WID_O_ORDER_LIST); int sel = (y - nwid->pos_y - WD_FRAMERECT_TOP) / nwid->resize_y; // Selected line in the WID_O_ORDER_LIST panel. if ((uint)sel >= this->vscroll->GetCapacity()) return INVALID_VEH_ORDER_ID; sel += this->vscroll->GetPosition(); return (sel <= vehicle->GetNumOrders() && sel >= 0) ? sel : INVALID_VEH_ORDER_ID; } /** * Handle the click on the goto button. * @param i Dummy parameter. */ void OrderClick_Goto(int i) { this->SetWidgetDirty(WID_O_GOTO); this->ToggleWidgetLoweredState(WID_O_GOTO); if (this->IsWidgetLowered(WID_O_GOTO)) { SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, HT_RECT | HT_VEHICLE, this); this->goto_type = OPOS_GOTO; } else { ResetObjectToPlace(); } } /** * Handle the click on the full load button. * @param load_type the way to load. */ void OrderClick_FullLoad(int load_type) { VehicleOrderID sel_ord = this->OrderGetSel(); const Order *order = this->vehicle->GetOrder(sel_ord); if (order == NULL || order->GetLoadType() == load_type) return; if (load_type < 0) { load_type = order->GetLoadType() == OLF_LOAD_IF_POSSIBLE ? OLF_FULL_LOAD_ANY : OLF_LOAD_IF_POSSIBLE; } DoCommandP(this->vehicle->tile, this->vehicle->index + (sel_ord << 20), MOF_LOAD | (load_type << 4), CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); } /** * Handle the 'no loading' hotkey */ void OrderHotkey_NoLoad(int i) { this->OrderClick_FullLoad(OLFB_NO_LOAD); } /** * Handle the click on the service. */ void OrderClick_Service(int i) { VehicleOrderID sel_ord = this->OrderGetSel(); if (i < 0) { const Order *order = this->vehicle->GetOrder(sel_ord); if (order == NULL) return; i = (order->GetDepotOrderType() & ODTFB_SERVICE) ? DA_ALWAYS_GO : DA_SERVICE; } DoCommandP(this->vehicle->tile, this->vehicle->index + (sel_ord << 20), MOF_DEPOT_ACTION | (i << 4), CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); } /** * Handle the click on the service in nearest depot button. * @param i Dummy parameter. */ void OrderClick_NearestDepot(int i) { Order order; order.next = NULL; order.index = 0; order.MakeGoToDepot(0, ODTFB_PART_OF_ORDERS, _settings_client.gui.new_nonstop && this->vehicle->IsGroundVehicle() ? ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS : ONSF_STOP_EVERYWHERE); order.SetDepotActionType(ODATFB_NEAREST_DEPOT); DoCommandP(this->vehicle->tile, this->vehicle->index + (this->OrderGetSel() << 20), order.Pack(), CMD_INSERT_ORDER | CMD_MSG(STR_ERROR_CAN_T_INSERT_NEW_ORDER)); } /** * Handle the click on the conditional order button. * @param i Dummy parameter. */ void OrderClick_Conditional(int i) { this->SetWidgetDirty(WID_O_GOTO); SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, HT_NONE, this); this->goto_type = OPOS_CONDITIONAL; } /** * Handle the click on the share button. * @param i Dummy parameter. */ void OrderClick_Share(int i) { this->SetWidgetDirty(WID_O_GOTO); SetObjectToPlaceWnd(ANIMCURSOR_PICKSTATION, PAL_NONE, HT_VEHICLE, this); this->goto_type = OPOS_SHARE; } /** * Handle the click on the unload button. */ void OrderClick_Unload(int unload_type) { VehicleOrderID sel_ord = this->OrderGetSel(); const Order *order = this->vehicle->GetOrder(sel_ord); if (order == NULL || order->GetUnloadType() == unload_type) return; if (unload_type < 0) { unload_type = order->GetUnloadType() == OUF_UNLOAD_IF_POSSIBLE ? OUFB_UNLOAD : OUF_UNLOAD_IF_POSSIBLE; } DoCommandP(this->vehicle->tile, this->vehicle->index + (sel_ord << 20), MOF_UNLOAD | (unload_type << 4), CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); /* Transfer orders with leave empty as default */ if (unload_type == OUFB_TRANSFER) { DoCommandP(this->vehicle->tile, this->vehicle->index + (sel_ord << 20), MOF_LOAD | (OLFB_NO_LOAD << 4), CMD_MODIFY_ORDER); this->SetWidgetDirty(WID_O_FULL_LOAD); } } /** * Handle the transfer hotkey */ void OrderHotkey_Transfer(int i) { this->OrderClick_Unload(OUFB_TRANSFER); } /** * Handle the 'no unload' hotkey */ void OrderHotkey_NoUnload(int i) { this->OrderClick_Unload(OUFB_NO_UNLOAD); } /** * Handle the click on the nonstop button. * @param non_stop what non-stop type to use; -1 to use the 'next' one. */ void OrderClick_Nonstop(int non_stop) { if (!this->vehicle->IsGroundVehicle()) return; VehicleOrderID sel_ord = this->OrderGetSel(); const Order *order = this->vehicle->GetOrder(sel_ord); if (order == NULL || order->GetNonStopType() == non_stop) return; /* Keypress if negative, so 'toggle' to the next */ if (non_stop < 0) { non_stop = order->GetNonStopType() ^ ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS; } this->SetWidgetDirty(WID_O_NON_STOP); DoCommandP(this->vehicle->tile, this->vehicle->index + (sel_ord << 20), MOF_NON_STOP | non_stop << 4, CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); } /** * Handle the click on the skip button. * If ctrl is pressed, skip to selected order, else skip to current order + 1 * @param i Dummy parameter. */ void OrderClick_Skip(int i) { /* Don't skip when there's nothing to skip */ if (_ctrl_pressed && this->vehicle->cur_implicit_order_index == this->OrderGetSel()) return; if (this->vehicle->GetNumOrders() <= 1) return; DoCommandP(this->vehicle->tile, this->vehicle->index, _ctrl_pressed ? this->OrderGetSel() : ((this->vehicle->cur_implicit_order_index + 1) % this->vehicle->GetNumOrders()), CMD_SKIP_TO_ORDER | CMD_MSG(_ctrl_pressed ? STR_ERROR_CAN_T_SKIP_TO_ORDER : STR_ERROR_CAN_T_SKIP_ORDER)); } /** * Handle the click on the delete button. * @param i Dummy parameter. */ void OrderClick_Delete(int i) { /* When networking, move one order lower */ int selected = this->selected_order + (int)_networking; if (DoCommandP(this->vehicle->tile, this->vehicle->index, this->OrderGetSel(), CMD_DELETE_ORDER | CMD_MSG(STR_ERROR_CAN_T_DELETE_THIS_ORDER))) { this->selected_order = selected >= this->vehicle->GetNumOrders() ? -1 : selected; this->UpdateButtonState(); } } /** * Handle the click on the 'stop sharing' button. * If 'End of Shared Orders' isn't selected, do nothing. If Ctrl is pressed, call OrderClick_Delete and exit. * To stop sharing this vehicle order list, we copy the orders of a vehicle that share this order list. That way we * exit the group of shared vehicles while keeping the same order list. * @param i Dummy parameter. */ void OrderClick_StopSharing(int i) { /* Don't try to stop sharing orders if 'End of Shared Orders' isn't selected. */ if (!this->vehicle->IsOrderListShared() || this->selected_order != this->vehicle->GetNumOrders()) return; /* If Ctrl is pressed, delete the order list as if we clicked the 'Delete' button. */ if (_ctrl_pressed) { this->OrderClick_Delete(0); return; } /* Get another vehicle that share orders with this vehicle. */ Vehicle *other_shared = (this->vehicle->FirstShared() == this->vehicle) ? this->vehicle->NextShared() : this->vehicle->PreviousShared(); /* Copy the order list of the other vehicle. */ if (DoCommandP(this->vehicle->tile, this->vehicle->index | CO_COPY << 30, other_shared->index, CMD_CLONE_ORDER | CMD_MSG(STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST))) { this->UpdateButtonState(); } } /** * Handle the click on the refit button. * If ctrl is pressed, cancel refitting, else show the refit window. * @param i Selected refit command. * @param auto_refit Select refit for auto-refitting. */ void OrderClick_Refit(int i, bool auto_refit) { if (_ctrl_pressed) { /* Cancel refitting */ DoCommandP(this->vehicle->tile, this->vehicle->index, (this->OrderGetSel() << 16) | (CT_NO_REFIT << 8) | CT_NO_REFIT, CMD_ORDER_REFIT); } else { if (i == 1) { // Auto-refit to available cargo type. DoCommandP(this->vehicle->tile, this->vehicle->index, (this->OrderGetSel() << 16) | CT_AUTO_REFIT, CMD_ORDER_REFIT); } else { ShowVehicleRefitWindow(this->vehicle, this->OrderGetSel(), this, auto_refit); } } } /** Cache auto-refittability of the vehicle chain. */ void UpdateAutoRefitState() { this->can_do_refit = false; this->can_do_autorefit = false; for (const Vehicle *w = this->vehicle; w != NULL; w = w->IsGroundVehicle() ? w->Next() : NULL) { if (IsEngineRefittable(w->engine_type)) this->can_do_refit = true; if (HasBit(Engine::Get(w->engine_type)->info.misc_flags, EF_AUTO_REFIT)) this->can_do_autorefit = true; } } public: OrdersWindow(const WindowDesc *desc, const Vehicle *v) : Window() { this->vehicle = v; this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_O_SCROLLBAR); this->FinishInitNested(desc, v->index); if (v->owner == _local_company) { this->DisableWidget(WID_O_EMPTY); } this->selected_order = -1; this->order_over = INVALID_VEH_ORDER_ID; this->goto_type = OPOS_NONE; this->owner = v->owner; this->UpdateAutoRefitState(); if (_settings_client.gui.quick_goto && v->owner == _local_company) { /* If there are less than 2 station, make Go To active. */ int station_orders = 0; const Order *order; FOR_VEHICLE_ORDERS(v, order) { if (order->IsType(OT_GOTO_STATION)) station_orders++; } if (station_orders < 2) this->OrderClick_Goto(0); } this->OnInvalidateData(VIWD_MODIFY_ORDERS); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_O_ORDER_LIST: resize->height = FONT_HEIGHT_NORMAL; size->height = 6 * resize->height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; break; case WID_O_COND_VARIABLE: { Dimension d = {0, 0}; for (uint i = 0; i < lengthof(_order_conditional_variable); i++) { d = maxdim(d, GetStringBoundingBox(STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + _order_conditional_variable[i])); } d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } case WID_O_COND_COMPARATOR: { Dimension d = {0, 0}; for (int i = 0; _order_conditional_condition[i] != INVALID_STRING_ID; i++) { d = maxdim(d, GetStringBoundingBox(_order_conditional_condition[i])); } d.width += padding.width; d.height += padding.height; *size = maxdim(*size, d); break; } } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { VehicleOrderID from = INVALID_VEH_ORDER_ID; VehicleOrderID to = INVALID_VEH_ORDER_ID; switch (data) { case VIWD_AUTOREPLACE: /* Autoreplace replaced the vehicle */ this->vehicle = Vehicle::Get(this->window_number); /* FALL THROUGH */ case VIWD_CONSIST_CHANGED: /* Vehicle composition was changed. */ this->UpdateAutoRefitState(); break; case VIWD_REMOVE_ALL_ORDERS: /* Removed / replaced all orders (after deleting / sharing) */ if (this->selected_order == -1) break; this->DeleteChildWindows(); HideDropDownMenu(this); this->selected_order = -1; break; case VIWD_MODIFY_ORDERS: /* Some other order changes */ break; default: if (data < 0) break; if (gui_scope) break; // only do this once; from command scope from = GB(data, 0, 8); to = GB(data, 8, 8); /* Moving an order. If one of these is INVALID_VEH_ORDER_ID, then * the order is being created / removed */ if (this->selected_order == -1) break; if (from == to) break; // no need to change anything if (from != this->selected_order) { /* Moving from preceding order? */ this->selected_order -= (int)(from <= this->selected_order); /* Moving to preceding order? */ this->selected_order += (int)(to <= this->selected_order); break; } /* Now we are modifying the selected order */ if (to == INVALID_VEH_ORDER_ID) { /* Deleting selected order */ this->DeleteChildWindows(); HideDropDownMenu(this); this->selected_order = -1; break; } /* Moving selected order */ this->selected_order = to; break; } this->vscroll->SetCount(this->vehicle->GetNumOrders() + 1); if (gui_scope) this->UpdateButtonState(); /* Scroll to the new order. */ if (from == INVALID_VEH_ORDER_ID && to != INVALID_VEH_ORDER_ID && !this->vscroll->IsVisible(to)) { this->vscroll->ScrollTowards(to); } } void UpdateButtonState() { if (this->vehicle->owner != _local_company) return; // No buttons are displayed with competitor order windows. bool shared_orders = this->vehicle->IsOrderListShared(); VehicleOrderID sel = this->OrderGetSel(); const Order *order = this->vehicle->GetOrder(sel); /* Second row. */ /* skip */ this->SetWidgetDisabledState(WID_O_SKIP, this->vehicle->GetNumOrders() <= 1); /* delete / stop sharing */ NWidgetStacked *delete_sel = this->GetWidget(WID_O_SEL_BOTTOM_MIDDLE); if (shared_orders && this->selected_order == this->vehicle->GetNumOrders()) { /* The 'End of Shared Orders' order is selected, show the 'stop sharing' button. */ delete_sel->SetDisplayedPlane(DP_BOTTOM_MIDDLE_STOP_SHARING); } else { /* The 'End of Shared Orders' order isn't selected, show the 'delete' button. */ delete_sel->SetDisplayedPlane(DP_BOTTOM_MIDDLE_DELETE); this->SetWidgetDisabledState(WID_O_DELETE, (uint)this->vehicle->GetNumOrders() + ((shared_orders || this->vehicle->GetNumOrders() != 0) ? 1 : 0) <= (uint)this->selected_order); /* Set the tooltip of the 'delete' button depending on whether the * 'End of Orders' order or a regular order is selected. */ NWidgetCore *nwi = this->GetWidget(WID_O_DELETE); if (this->selected_order == this->vehicle->GetNumOrders()) { nwi->SetDataTip(STR_ORDERS_DELETE_BUTTON, STR_ORDERS_DELETE_ALL_TOOLTIP); } else { nwi->SetDataTip(STR_ORDERS_DELETE_BUTTON, STR_ORDERS_DELETE_TOOLTIP); } } /* First row. */ this->RaiseWidget(WID_O_FULL_LOAD); this->RaiseWidget(WID_O_UNLOAD); this->RaiseWidget(WID_O_SERVICE); /* Selection widgets. */ /* Train or road vehicle. */ NWidgetStacked *train_row_sel = this->GetWidget(WID_O_SEL_TOP_ROW_GROUNDVEHICLE); NWidgetStacked *left_sel = this->GetWidget(WID_O_SEL_TOP_LEFT); NWidgetStacked *middle_sel = this->GetWidget(WID_O_SEL_TOP_MIDDLE); NWidgetStacked *right_sel = this->GetWidget(WID_O_SEL_TOP_RIGHT); /* Ship or airplane. */ NWidgetStacked *row_sel = this->GetWidget(WID_O_SEL_TOP_ROW); assert(row_sel != NULL || (train_row_sel != NULL && left_sel != NULL && middle_sel != NULL && right_sel != NULL)); if (order == NULL) { if (row_sel != NULL) { row_sel->SetDisplayedPlane(DP_ROW_LOAD); } else { train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL); left_sel->SetDisplayedPlane(DP_LEFT_LOAD); middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD); right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY); this->DisableWidget(WID_O_NON_STOP); this->RaiseWidget(WID_O_NON_STOP); } this->DisableWidget(WID_O_FULL_LOAD); this->DisableWidget(WID_O_UNLOAD); this->DisableWidget(WID_O_REFIT_DROPDOWN); } else { this->SetWidgetDisabledState(WID_O_FULL_LOAD, (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0); // full load this->SetWidgetDisabledState(WID_O_UNLOAD, (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0); // unload switch (order->GetType()) { case OT_GOTO_STATION: if (row_sel != NULL) { row_sel->SetDisplayedPlane(DP_ROW_LOAD); } else { train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL); left_sel->SetDisplayedPlane(DP_LEFT_LOAD); middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD); right_sel->SetDisplayedPlane(DP_RIGHT_REFIT); this->EnableWidget(WID_O_NON_STOP); this->SetWidgetLoweredState(WID_O_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } this->SetWidgetLoweredState(WID_O_FULL_LOAD, order->GetLoadType() == OLF_FULL_LOAD_ANY); this->SetWidgetLoweredState(WID_O_UNLOAD, order->GetUnloadType() == OUFB_UNLOAD); /* Can only do refitting when stopping at the destination and loading cargo. * Also enable the button if a refit is already set to allow clearing it. */ this->SetWidgetDisabledState(WID_O_REFIT_DROPDOWN, order->GetLoadType() == OLFB_NO_LOAD || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) || ((!this->can_do_refit || !this->can_do_autorefit) && !order->IsRefit())); break; case OT_GOTO_WAYPOINT: if (row_sel != NULL) { row_sel->SetDisplayedPlane(DP_ROW_LOAD); } else { train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL); left_sel->SetDisplayedPlane(DP_LEFT_LOAD); middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD); right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY); this->EnableWidget(WID_O_NON_STOP); this->SetWidgetLoweredState(WID_O_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } this->DisableWidget(WID_O_FULL_LOAD); this->DisableWidget(WID_O_UNLOAD); this->DisableWidget(WID_O_REFIT_DROPDOWN); break; case OT_GOTO_DEPOT: if (row_sel != NULL) { row_sel->SetDisplayedPlane(DP_ROW_DEPOT); } else { train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL); left_sel->SetDisplayedPlane(DP_LEFT_REFIT); middle_sel->SetDisplayedPlane(DP_MIDDLE_SERVICE); right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY); this->EnableWidget(WID_O_NON_STOP); this->SetWidgetLoweredState(WID_O_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } /* Disable refit button if the order is no 'always go' order. * However, keep the service button enabled for refit-orders to allow clearing refits (without knowing about ctrl). */ this->SetWidgetDisabledState(WID_O_REFIT, (order->GetDepotOrderType() & ODTFB_SERVICE) || (order->GetDepotActionType() & ODATFB_HALT) || (!this->can_do_refit && !order->IsRefit())); this->SetWidgetLoweredState(WID_O_SERVICE, order->GetDepotOrderType() & ODTFB_SERVICE); break; case OT_CONDITIONAL: { if (row_sel != NULL) { row_sel->SetDisplayedPlane(DP_ROW_CONDITIONAL); } else { train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_CONDITIONAL); } OrderConditionVariable ocv = order->GetConditionVariable(); /* Set the strings for the dropdown boxes. */ this->GetWidget(WID_O_COND_VARIABLE)->widget_data = STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + (order == NULL ? 0 : ocv); this->GetWidget(WID_O_COND_COMPARATOR)->widget_data = _order_conditional_condition[order == NULL ? 0 : order->GetConditionComparator()]; this->SetWidgetDisabledState(WID_O_COND_COMPARATOR, ocv == OCV_UNCONDITIONALLY); this->SetWidgetDisabledState(WID_O_COND_VALUE, ocv == OCV_REQUIRES_SERVICE || ocv == OCV_UNCONDITIONALLY); break; } default: // every other order if (row_sel != NULL) { row_sel->SetDisplayedPlane(DP_ROW_LOAD); } else { train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL); left_sel->SetDisplayedPlane(DP_LEFT_LOAD); middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD); right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY); this->DisableWidget(WID_O_NON_STOP); } this->DisableWidget(WID_O_FULL_LOAD); this->DisableWidget(WID_O_UNLOAD); this->DisableWidget(WID_O_REFIT_DROPDOWN); break; } } /* Disable list of vehicles with the same shared orders if there is no list */ this->SetWidgetDisabledState(WID_O_SHARED_ORDER_LIST, !shared_orders); this->SetDirty(); } virtual void OnPaint() { if (this->vehicle->owner != _local_company) { this->selected_order = -1; // Disable selection any selected row at a competitor order window. } else { this->SetWidgetLoweredState(WID_O_GOTO, this->goto_type != OPOS_NONE); } this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_O_ORDER_LIST) return; bool rtl = _current_text_dir == TD_RTL; SetDParamMaxValue(0, this->vehicle->GetNumOrders(), 2); int index_column_width = GetStringBoundingBox(STR_ORDER_INDEX).width + 2 * GetSpriteSize(rtl ? SPR_ARROW_RIGHT : SPR_ARROW_LEFT).width + 3; int middle = rtl ? r.right - WD_FRAMETEXT_RIGHT - index_column_width : r.left + WD_FRAMETEXT_LEFT + index_column_width; int y = r.top + WD_FRAMERECT_TOP; int line_height = this->GetWidget(WID_O_ORDER_LIST)->resize_y; int i = this->vscroll->GetPosition(); const Order *order = this->vehicle->GetOrder(i); /* First draw the highlighting underground if it exists. */ if (this->order_over != INVALID_VEH_ORDER_ID) { while (order != NULL) { /* Don't draw anything if it extends past the end of the window. */ if (!this->vscroll->IsVisible(i)) break; if (i != this->selected_order && i == this->order_over) { /* Highlight dragged order destination. */ int top = (this->order_over < this->selected_order ? y : y + line_height) - WD_FRAMERECT_TOP; int bottom = min(top + 2, r.bottom - WD_FRAMERECT_BOTTOM); top = max(top - 3, r.top + WD_FRAMERECT_TOP); GfxFillRect(r.left + WD_FRAMETEXT_LEFT, top, r.right - WD_FRAMETEXT_RIGHT, bottom, _colour_gradient[COLOUR_GREY][7]); break; } y += line_height; i++; order = order->next; } /* Reset counters for drawing the orders. */ y = r.top + WD_FRAMERECT_TOP; i = this->vscroll->GetPosition(); order = this->vehicle->GetOrder(i); } /* Draw the orders. */ while (order != NULL) { /* Don't draw anything if it extends past the end of the window. */ if (!this->vscroll->IsVisible(i)) break; DrawOrderString(this->vehicle, order, i, y, i == this->selected_order, false, r.left + WD_FRAMETEXT_LEFT, middle, r.right - WD_FRAMETEXT_RIGHT); y += line_height; i++; order = order->next; } if (this->vscroll->IsVisible(i)) { StringID str = this->vehicle->IsOrderListShared() ? STR_ORDERS_END_OF_SHARED_ORDERS : STR_ORDERS_END_OF_ORDERS; DrawString(rtl ? r.left + WD_FRAMETEXT_LEFT : middle, rtl ? middle : r.right - WD_FRAMETEXT_RIGHT, y, str, (i == this->selected_order) ? TC_WHITE : TC_BLACK); } } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_O_COND_VALUE: { VehicleOrderID sel = this->OrderGetSel(); const Order *order = this->vehicle->GetOrder(sel); if (order != NULL && order->IsType(OT_CONDITIONAL)) { uint value = order->GetConditionValue(); if (order->GetConditionVariable() == OCV_MAX_SPEED) value = ConvertSpeedToDisplaySpeed(value); SetDParam(0, value); } break; } case WID_O_CAPTION: SetDParam(0, this->vehicle->index); break; } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_O_ORDER_LIST: { if (this->goto_type == OPOS_CONDITIONAL) { VehicleOrderID order_id = this->GetOrderFromPt(_cursor.pos.y - this->top); if (order_id != INVALID_VEH_ORDER_ID) { Order order; order.next = NULL; order.index = 0; order.MakeConditional(order_id); DoCommandP(this->vehicle->tile, this->vehicle->index + (this->OrderGetSel() << 20), order.Pack(), CMD_INSERT_ORDER | CMD_MSG(STR_ERROR_CAN_T_INSERT_NEW_ORDER)); } ResetObjectToPlace(); break; } VehicleOrderID sel = this->GetOrderFromPt(pt.y); if (_ctrl_pressed && sel < this->vehicle->GetNumOrders()) { TileIndex xy = this->vehicle->GetOrder(sel)->GetLocation(this->vehicle); if (xy != INVALID_TILE) ScrollMainWindowToTile(xy); return; } /* This order won't be selected any more, close all child windows and dropdowns */ this->DeleteChildWindows(); HideDropDownMenu(this); if (sel == INVALID_VEH_ORDER_ID || this->vehicle->owner != _local_company) { /* Deselect clicked order */ this->selected_order = -1; } else if (sel == this->selected_order) { if (this->vehicle->type == VEH_TRAIN && sel < this->vehicle->GetNumOrders()) { DoCommandP(this->vehicle->tile, this->vehicle->index + (sel << 20), MOF_STOP_LOCATION | ((this->vehicle->GetOrder(sel)->GetStopLocation() + 1) % OSL_END) << 4, CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); } } else { /* Select clicked order */ this->selected_order = sel; if (this->vehicle->owner == _local_company) { /* Activate drag and drop */ SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); } } this->UpdateButtonState(); break; } case WID_O_SKIP: this->OrderClick_Skip(0); break; case WID_O_DELETE: this->OrderClick_Delete(0); break; case WID_O_STOP_SHARING: this->OrderClick_StopSharing(0); break; case WID_O_NON_STOP: if (this->GetWidget(widget)->ButtonHit(pt)) { this->OrderClick_Nonstop(-1); } else { const Order *o = this->vehicle->GetOrder(this->OrderGetSel()); ShowDropDownMenu(this, _order_non_stop_drowdown, o->GetNonStopType(), WID_O_NON_STOP, 0, o->IsType(OT_GOTO_STATION) ? 0 : (o->IsType(OT_GOTO_WAYPOINT) ? 3 : 12)); } break; case WID_O_GOTO: if (this->GetWidget(widget)->ButtonHit(pt)) { this->OrderClick_Goto(0); } else { ShowDropDownMenu(this, this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, 0, WID_O_GOTO, 0, 0); } break; case WID_O_FULL_LOAD: if (this->GetWidget(widget)->ButtonHit(pt)) { this->OrderClick_FullLoad(-1); } else { ShowDropDownMenu(this, _order_full_load_drowdown, this->vehicle->GetOrder(this->OrderGetSel())->GetLoadType(), WID_O_FULL_LOAD, 0, 2); } break; case WID_O_UNLOAD: if (this->GetWidget(widget)->ButtonHit(pt)) { this->OrderClick_Unload(-1); } else { ShowDropDownMenu(this, _order_unload_drowdown, this->vehicle->GetOrder(this->OrderGetSel())->GetUnloadType(), WID_O_UNLOAD, 0, 8); } break; case WID_O_REFIT: this->OrderClick_Refit(0, false); break; case WID_O_SERVICE: if (this->GetWidget(widget)->ButtonHit(pt)) { this->OrderClick_Service(-1); } else { ShowDropDownMenu(this, _order_depot_action_dropdown, DepotActionStringIndex(this->vehicle->GetOrder(this->OrderGetSel())), WID_O_SERVICE, 0, 0); } break; case WID_O_REFIT_DROPDOWN: if (this->GetWidget(widget)->ButtonHit(pt)) { this->OrderClick_Refit(0, true); } else { ShowDropDownMenu(this, _order_refit_action_dropdown, 0, WID_O_REFIT_DROPDOWN, 0, 0); } break; case WID_O_TIMETABLE_VIEW: ShowTimetableWindow(this->vehicle); break; case WID_O_COND_VARIABLE: { DropDownList *list = new DropDownList(); for (uint i = 0; i < lengthof(_order_conditional_variable); i++) { list->push_back(new DropDownListStringItem(STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE + _order_conditional_variable[i], _order_conditional_variable[i], false)); } ShowDropDownList(this, list, this->vehicle->GetOrder(this->OrderGetSel())->GetConditionVariable(), WID_O_COND_VARIABLE); break; } case WID_O_COND_COMPARATOR: { const Order *o = this->vehicle->GetOrder(this->OrderGetSel()); ShowDropDownMenu(this, _order_conditional_condition, o->GetConditionComparator(), WID_O_COND_COMPARATOR, 0, (o->GetConditionVariable() == OCV_REQUIRES_SERVICE) ? 0x3F : 0xC0); break; } case WID_O_COND_VALUE: { const Order *order = this->vehicle->GetOrder(this->OrderGetSel()); uint value = order->GetConditionValue(); if (order->GetConditionVariable() == OCV_MAX_SPEED) value = ConvertSpeedToDisplaySpeed(value); SetDParam(0, value); ShowQueryString(STR_JUST_INT, STR_ORDER_CONDITIONAL_VALUE_CAPT, 5, this, CS_NUMERAL, QSF_NONE); break; } case WID_O_SHARED_ORDER_LIST: ShowVehicleListWindow(this->vehicle); break; } } virtual void OnQueryTextFinished(char *str) { if (!StrEmpty(str)) { VehicleOrderID sel = this->OrderGetSel(); uint value = atoi(str); switch (this->vehicle->GetOrder(sel)->GetConditionVariable()) { case OCV_MAX_SPEED: value = ConvertDisplaySpeedToSpeed(value); break; case OCV_RELIABILITY: case OCV_LOAD_PERCENTAGE: value = Clamp(value, 0, 100); break; default: break; } DoCommandP(this->vehicle->tile, this->vehicle->index + (sel << 20), MOF_COND_VALUE | Clamp(value, 0, 2047) << 4, CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); } } virtual void OnDropdownSelect(int widget, int index) { switch (widget) { case WID_O_NON_STOP: this->OrderClick_Nonstop(index); break; case WID_O_FULL_LOAD: this->OrderClick_FullLoad(index); break; case WID_O_UNLOAD: this->OrderClick_Unload(index); break; case WID_O_GOTO: switch (index) { case 0: this->OrderClick_Goto(0); break; case 1: this->OrderClick_NearestDepot(0); break; case 2: this->OrderClick_Conditional(0); break; case 3: this->OrderClick_Share(0); break; default: NOT_REACHED(); } break; case WID_O_SERVICE: this->OrderClick_Service(index); break; case WID_O_REFIT_DROPDOWN: this->OrderClick_Refit(index, true); break; case WID_O_COND_VARIABLE: DoCommandP(this->vehicle->tile, this->vehicle->index + (this->OrderGetSel() << 20), MOF_COND_VARIABLE | index << 4, CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); break; case WID_O_COND_COMPARATOR: DoCommandP(this->vehicle->tile, this->vehicle->index + (this->OrderGetSel() << 20), MOF_COND_COMPARATOR | index << 4, CMD_MODIFY_ORDER | CMD_MSG(STR_ERROR_CAN_T_MODIFY_THIS_ORDER)); break; } } virtual void OnDragDrop(Point pt, int widget) { switch (widget) { case WID_O_ORDER_LIST: { VehicleOrderID from_order = this->OrderGetSel(); VehicleOrderID to_order = this->GetOrderFromPt(pt.y); if (!(from_order == to_order || from_order == INVALID_VEH_ORDER_ID || from_order > this->vehicle->GetNumOrders() || to_order == INVALID_VEH_ORDER_ID || to_order > this->vehicle->GetNumOrders()) && DoCommandP(this->vehicle->tile, this->vehicle->index, from_order | (to_order << 16), CMD_MOVE_ORDER | CMD_MSG(STR_ERROR_CAN_T_MOVE_THIS_ORDER))) { this->selected_order = -1; this->UpdateButtonState(); } break; } case WID_O_DELETE: this->OrderClick_Delete(0); break; case WID_O_STOP_SHARING: this->OrderClick_StopSharing(0); break; } ResetObjectToPlace(); if (this->order_over != INVALID_VEH_ORDER_ID) { /* End of drag-and-drop, hide dragged order destination highlight. */ this->order_over = INVALID_VEH_ORDER_ID; this->SetWidgetDirty(WID_O_ORDER_LIST); } } virtual EventState OnKeyPress(WChar key, uint16 keycode) { if (this->vehicle->owner != _local_company) return ES_NOT_HANDLED; return CheckHotkeyMatch(order_hotkeys, keycode, this) != -1 ? ES_HANDLED : ES_NOT_HANDLED; } virtual void OnPlaceObject(Point pt, TileIndex tile) { if (this->goto_type == OPOS_GOTO) { const Order cmd = GetOrderCmdFromTile(this->vehicle, tile); if (cmd.IsType(OT_NOTHING)) return; if (DoCommandP(this->vehicle->tile, this->vehicle->index + (this->OrderGetSel() << 20), cmd.Pack(), CMD_INSERT_ORDER | CMD_MSG(STR_ERROR_CAN_T_INSERT_NEW_ORDER))) { /* With quick goto the Go To button stays active */ if (!_settings_client.gui.quick_goto) ResetObjectToPlace(); } } } virtual bool OnVehicleSelect(const Vehicle *v) { /* v is vehicle getting orders. Only copy/clone orders if vehicle doesn't have any orders yet. * We disallow copying orders of other vehicles if we already have at least one order entry * ourself as it easily copies orders of vehicles within a station when we mean the station. * Obviously if you press CTRL on a non-empty orders vehicle you know what you are doing * TODO: give a warning message */ bool share_order = _ctrl_pressed || this->goto_type == OPOS_SHARE; if (this->vehicle->GetNumOrders() != 0 && !share_order) return false; if (DoCommandP(this->vehicle->tile, this->vehicle->index | (share_order ? CO_SHARE : CO_COPY) << 30, v->index, share_order ? CMD_CLONE_ORDER | CMD_MSG(STR_ERROR_CAN_T_SHARE_ORDER_LIST) : CMD_CLONE_ORDER | CMD_MSG(STR_ERROR_CAN_T_COPY_ORDER_LIST))) { this->selected_order = -1; ResetObjectToPlace(); } return true; } virtual void OnPlaceObjectAbort() { this->goto_type = OPOS_NONE; this->SetWidgetDirty(WID_O_GOTO); /* Remove drag highlighting if it exists. */ if (this->order_over != INVALID_VEH_ORDER_ID) { this->order_over = INVALID_VEH_ORDER_ID; this->SetWidgetDirty(WID_O_ORDER_LIST); } } virtual void OnMouseDrag(Point pt, int widget) { if (this->selected_order != -1 && widget == WID_O_ORDER_LIST) { /* An order is dragged.. */ VehicleOrderID from_order = this->OrderGetSel(); VehicleOrderID to_order = this->GetOrderFromPt(pt.y); uint num_orders = this->vehicle->GetNumOrders(); if (from_order != INVALID_VEH_ORDER_ID && from_order <= num_orders) { if (to_order != INVALID_VEH_ORDER_ID && to_order <= num_orders) { // ..over an existing order. this->order_over = to_order; this->SetWidgetDirty(widget); } else if (from_order != to_order && this->order_over != INVALID_VEH_ORDER_ID) { // ..outside of the order list. this->order_over = INVALID_VEH_ORDER_ID; this->SetWidgetDirty(widget); } } } } virtual void OnResize() { /* Update the scroll bar */ this->vscroll->SetCapacityFromWidget(this, WID_O_ORDER_LIST); } static Hotkey order_hotkeys[]; }; Hotkey OrdersWindow::order_hotkeys[] = { Hotkey('D', "skip", 0, &OrdersWindow::OrderClick_Skip), Hotkey('F', "delete", 0, &OrdersWindow::OrderClick_Delete), Hotkey('G', "goto", 0, &OrdersWindow::OrderClick_Goto), Hotkey('H', "nonstop", 0, &OrdersWindow::OrderClick_Nonstop), Hotkey('J', "fullload", 0, &OrdersWindow::OrderClick_FullLoad), Hotkey('K', "unload", 0, &OrdersWindow::OrderClick_Unload), Hotkey((uint16)0, "nearest_depot", 0, &OrdersWindow::OrderClick_NearestDepot), Hotkey((uint16)0, "always_service", 0, &OrdersWindow::OrderClick_Service), Hotkey((uint16)0, "transfer", 0, &OrdersWindow::OrderHotkey_Transfer), Hotkey((uint16)0, "no_unload", 0, &OrdersWindow::OrderHotkey_NoUnload), Hotkey((uint16)0, "no_load", 0, &OrdersWindow::OrderHotkey_NoLoad), HOTKEY_LIST_END(OrdersWindow) }; Hotkey *_order_hotkeys = OrdersWindow::order_hotkeys; /** Nested widget definition for "your" train orders. */ static const NWidgetPart _nested_orders_train_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_O_ORDER_LIST), SetMinimalSize(372, 62), SetDataTip(0x0, STR_ORDERS_LIST_TOOLTIP), SetResize(1, 1), SetScrollbar(WID_O_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_O_SCROLLBAR), EndContainer(), /* First button row. */ NWidget(NWID_HORIZONTAL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_TOP_ROW_GROUNDVEHICLE), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_NON_STOP), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_NON_STOP, STR_ORDER_TOOLTIP_NON_STOP), SetResize(1, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_TOP_LEFT), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_FULL_LOAD), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_TOGGLE_FULL_LOAD, STR_ORDER_TOOLTIP_FULL_LOAD), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_REFIT), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_TOP_MIDDLE), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_UNLOAD), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_SERVICE), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_SERVICE, STR_ORDER_SERVICE_TOOLTIP), SetResize(1, 0), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_TOP_RIGHT), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_O_EMPTY), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_REFIT_DROPDOWN), SetMinimalSize(93, 12), SetFill(1, 0), SetDataTip(STR_ORDER_REFIT_AUTO, STR_ORDER_REFIT_AUTO_TOOLTIP), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_O_COND_VARIABLE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP), SetResize(1, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_O_COND_COMPARATOR), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_COND_VALUE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_BLACK_COMMA, STR_ORDER_CONDITIONAL_VALUE_TOOLTIP), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_O_SHARED_ORDER_LIST), SetMinimalSize(12, 12), SetDataTip(SPR_SHARED_ORDERS_ICON, STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP), EndContainer(), /* Second button row. */ NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_SKIP), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_SKIP_BUTTON, STR_ORDERS_SKIP_TOOLTIP), SetResize(1, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_BOTTOM_MIDDLE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_DELETE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_DELETE_BUTTON, STR_ORDERS_DELETE_TOOLTIP), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_STOP_SHARING), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_STOP_SHARING_BUTTON, STR_ORDERS_STOP_SHARING_TOOLTIP), SetResize(1, 0), EndContainer(), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_GOTO), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_GO_TO_BUTTON, STR_ORDERS_GO_TO_TOOLTIP), SetResize(1, 0), EndContainer(), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; static const WindowDesc _orders_train_desc( WDP_AUTO, 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_orders_train_widgets, lengthof(_nested_orders_train_widgets) ); /** Nested widget definition for "your" orders (non-train). */ static const NWidgetPart _nested_orders_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_O_ORDER_LIST), SetMinimalSize(372, 62), SetDataTip(0x0, STR_ORDERS_LIST_TOOLTIP), SetResize(1, 1), SetScrollbar(WID_O_SCROLLBAR), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_O_SCROLLBAR), EndContainer(), /* First button row. */ NWidget(NWID_HORIZONTAL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_TOP_ROW), /* Load + unload + refit buttons. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_FULL_LOAD), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDER_TOGGLE_FULL_LOAD, STR_ORDER_TOOLTIP_FULL_LOAD), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_UNLOAD), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_REFIT_DROPDOWN), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDER_REFIT_AUTO, STR_ORDER_REFIT_AUTO_TOOLTIP), SetResize(1, 0), EndContainer(), /* Refit + service buttons. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_REFIT), SetMinimalSize(186, 12), SetFill(1, 0), SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_SERVICE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDER_SERVICE, STR_ORDER_SERVICE_TOOLTIP), SetResize(1, 0), EndContainer(), /* Buttons for setting a condition. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_O_COND_VARIABLE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP), SetResize(1, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_O_COND_COMPARATOR), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_COND_VALUE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_BLACK_COMMA, STR_ORDER_CONDITIONAL_VALUE_TOOLTIP), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_O_SHARED_ORDER_LIST), SetMinimalSize(12, 12), SetDataTip(SPR_SHARED_ORDERS_ICON, STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP), EndContainer(), /* Second button row. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_SKIP), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_SKIP_BUTTON, STR_ORDERS_SKIP_TOOLTIP), SetResize(1, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_BOTTOM_MIDDLE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_DELETE), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_DELETE_BUTTON, STR_ORDERS_DELETE_TOOLTIP), SetResize(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_STOP_SHARING), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_STOP_SHARING_BUTTON, STR_ORDERS_STOP_SHARING_TOOLTIP), SetResize(1, 0), EndContainer(), NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, WID_O_GOTO), SetMinimalSize(124, 12), SetFill(1, 0), SetDataTip(STR_ORDERS_GO_TO_BUTTON, STR_ORDERS_GO_TO_TOOLTIP), SetResize(1, 0), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), }; static const WindowDesc _orders_desc( WDP_AUTO, 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_orders_widgets, lengthof(_nested_orders_widgets) ); /** Nested widget definition for competitor orders. */ static const NWidgetPart _nested_other_orders_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_O_ORDER_LIST), SetMinimalSize(372, 72), SetDataTip(0x0, STR_ORDERS_LIST_TOOLTIP), SetResize(1, 1), SetScrollbar(WID_O_SCROLLBAR), EndContainer(), NWidget(NWID_VERTICAL), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_O_SCROLLBAR), NWidget(WWT_RESIZEBOX, COLOUR_GREY), EndContainer(), EndContainer(), }; static const WindowDesc _other_orders_desc( WDP_AUTO, 384, 86, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_other_orders_widgets, lengthof(_nested_other_orders_widgets) ); void ShowOrdersWindow(const Vehicle *v) { DeleteWindowById(WC_VEHICLE_DETAILS, v->index, false); DeleteWindowById(WC_VEHICLE_TIMETABLE, v->index, false); if (BringWindowToFrontById(WC_VEHICLE_ORDERS, v->index) != NULL) return; if (v->owner != _local_company) { new OrdersWindow(&_other_orders_desc, v); } else { new OrdersWindow(v->IsGroundVehicle() ? &_orders_train_desc : &_orders_desc, v); } } openttd-1.3.3/src/string.cpp0000644000000000000000000006376612246102610014506 0ustar rootroot/* $Id: string.cpp 25991 2013-11-13 22:00:46Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file string.cpp Handling of C-type strings (char*). */ #include "stdafx.h" #include "debug.h" #include "core/alloc_func.hpp" #include "core/math_func.hpp" #include "string_func.h" #include "string_base.h" #include "table/control_codes.h" #include #include /* required for tolower() */ #ifdef _MSC_VER #include // required by vsnprintf implementation for MSVC #endif #ifdef WITH_ICU /* Required by strnatcmp. */ #include #include "language.h" #include "gfx_func.h" #endif /* WITH_ICU */ /** * Safer implementation of vsnprintf; same as vsnprintf except: * - last instead of size, i.e. replace sizeof with lastof. * - return gives the amount of characters added, not what it would add. * @param str buffer to write to up to last * @param last last character we may write to * @param format the formatting (see snprintf) * @param ap the list of arguments for the format * @return the number of added characters */ static int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) { ptrdiff_t diff = last - str; if (diff < 0) return 0; return min((int)diff, vsnprintf(str, diff + 1, format, ap)); } /** * Appends characters from one string to another. * * Appends the source string to the destination string with respect of the * terminating null-character and the maximum size of the destination * buffer. * * @note usage ttd_strlcat(dst, src, lengthof(dst)); * @note lengthof() applies only to fixed size arrays * * @param dst The buffer containing the target string * @param src The buffer containing the string to append * @param size The maximum size of the destination buffer */ void ttd_strlcat(char *dst, const char *src, size_t size) { assert(size > 0); while (size > 0 && *dst != '\0') { size--; dst++; } ttd_strlcpy(dst, src, size); } /** * Copies characters from one buffer to another. * * Copies the source string to the destination buffer with respect of the * terminating null-character and the maximum size of the destination * buffer. * * @note usage ttd_strlcpy(dst, src, lengthof(dst)); * @note lengthof() applies only to fixed size arrays * * @param dst The destination buffer * @param src The buffer containing the string to copy * @param size The maximum size of the destination buffer */ void ttd_strlcpy(char *dst, const char *src, size_t size) { assert(size > 0); while (--size > 0 && *src != '\0') { *dst++ = *src++; } *dst = '\0'; } /** * Appends characters from one string to another. * * Appends the source string to the destination string with respect of the * terminating null-character and and the last pointer to the last element * in the destination buffer. If the last pointer is set to NULL no * boundary check is performed. * * @note usage: strecat(dst, src, lastof(dst)); * @note lastof() applies only to fixed size arrays * * @param dst The buffer containing the target string * @param src The buffer containing the string to append * @param last The pointer to the last element of the destination buffer * @return The pointer to the terminating null-character in the destination buffer */ char *strecat(char *dst, const char *src, const char *last) { assert(dst <= last); while (*dst != '\0') { if (dst == last) return dst; dst++; } return strecpy(dst, src, last); } /** * Copies characters from one buffer to another. * * Copies the source string to the destination buffer with respect of the * terminating null-character and the last pointer to the last element in * the destination buffer. If the last pointer is set to NULL no boundary * check is performed. * * @note usage: strecpy(dst, src, lastof(dst)); * @note lastof() applies only to fixed size arrays * * @param dst The destination buffer * @param src The buffer containing the string to copy * @param last The pointer to the last element of the destination buffer * @return The pointer to the terminating null-character in the destination buffer */ char *strecpy(char *dst, const char *src, const char *last) { assert(dst <= last); while (dst != last && *src != '\0') { *dst++ = *src++; } *dst = '\0'; if (dst == last && *src != '\0') { #if defined(STRGEN) || defined(SETTINGSGEN) error("String too long for destination buffer"); #else /* STRGEN || SETTINGSGEN */ DEBUG(misc, 0, "String too long for destination buffer"); #endif /* STRGEN || SETTINGSGEN */ } return dst; } /** * Format, "printf", into a newly allocated string. * @param str The formatting string. * @return The formatted string. You must free this! */ char *CDECL str_fmt(const char *str, ...) { char buf[4096]; va_list va; va_start(va, str); int len = vseprintf(buf, lastof(buf), str, va); va_end(va); char *p = MallocT(len + 1); memcpy(p, buf, len + 1); return p; } /** * Scan the string for old values of SCC_ENCODED and fix it to * it's new, static value. * @param str the string to scan * @param last the last valid character of str */ void str_fix_scc_encoded(char *str, const char *last) { while (str <= last && *str != '\0') { size_t len = Utf8EncodedCharLen(*str); if ((len == 0 && str + 4 > last) || str + len > last) break; WChar c; len = Utf8Decode(&c, str); if (c == '\0') break; if (c == 0xE028 || c == 0xE02A) { c = SCC_ENCODED; } str += Utf8Encode(str, c); } *str = '\0'; } /** * Scans the string for valid characters and if it finds invalid ones, * replaces them with a question mark '?' (if not ignored) * @param str the string to validate * @param last the last valid character of str * @param settings the settings for the string validation. */ void str_validate(char *str, const char *last, StringValidationSettings settings) { /* Assume the ABSOLUTE WORST to be in str as it comes from the outside. */ char *dst = str; while (str <= last && *str != '\0') { size_t len = Utf8EncodedCharLen(*str); /* If the character is unknown, i.e. encoded length is 0 * we assume worst case for the length check. * The length check is needed to prevent Utf8Decode to read * over the terminating '\0' if that happens to be placed * within the encoding of an UTF8 character. */ if ((len == 0 && str + 4 > last) || str + len > last) break; WChar c; len = Utf8Decode(&c, str); /* It's possible to encode the string termination character * into a multiple bytes. This prevents those termination * characters to be skipped */ if (c == '\0') break; if ((IsPrintable(c) && (c < SCC_SPRITE_START || c > SCC_SPRITE_END)) || ((settings & SVS_ALLOW_CONTROL_CODE) != 0 && c == SCC_ENCODED)) { /* Copy the character back. Even if dst is current the same as str * (i.e. no characters have been changed) this is quicker than * moving the pointers ahead by len */ do { *dst++ = *str++; } while (--len != 0); } else if ((settings & SVS_ALLOW_NEWLINE) != 0 && c == '\n') { *dst++ = *str++; } else { if ((settings & SVS_ALLOW_NEWLINE) != 0 && c == '\r' && str[1] == '\n') { str += len; continue; } /* Replace the undesirable character with a question mark */ str += len; if ((settings & SVS_REPLACE_WITH_QUESTION_MARK) != 0) *dst++ = '?'; } } *dst = '\0'; } /** * Scans the string for valid characters and if it finds invalid ones, * replaces them with a question mark '?'. * @param str the string to validate */ void ValidateString(const char *str) { /* We know it is '\0' terminated. */ str_validate(const_cast(str), str + strlen(str) + 1); } /** * Checks whether the given string is valid, i.e. contains only * valid (printable) characters and is properly terminated. * @param str The string to validate. * @param last The last character of the string, i.e. the string * must be terminated here or earlier. */ bool StrValid(const char *str, const char *last) { /* Assume the ABSOLUTE WORST to be in str as it comes from the outside. */ while (str <= last && *str != '\0') { size_t len = Utf8EncodedCharLen(*str); /* Encoded length is 0 if the character isn't known. * The length check is needed to prevent Utf8Decode to read * over the terminating '\0' if that happens to be placed * within the encoding of an UTF8 character. */ if (len == 0 || str + len > last) return false; WChar c; len = Utf8Decode(&c, str); if (!IsPrintable(c) || (c >= SCC_SPRITE_START && c <= SCC_SPRITE_END)) { return false; } str += len; } return *str == '\0'; } /** Scans the string for colour codes and strips them */ void str_strip_colours(char *str) { char *dst = str; WChar c; size_t len; for (len = Utf8Decode(&c, str); c != '\0'; len = Utf8Decode(&c, str)) { if (c < SCC_BLUE || c > SCC_BLACK) { /* Copy the character back. Even if dst is current the same as str * (i.e. no characters have been changed) this is quicker than * moving the pointers ahead by len */ do { *dst++ = *str++; } while (--len != 0); } else { /* Just skip (strip) the colour codes */ str += len; } } *dst = '\0'; } /** * Get the length of an UTF-8 encoded string in number of characters * and thus not the number of bytes that the encoded string contains. * @param s The string to get the length for. * @return The length of the string in characters. */ size_t Utf8StringLength(const char *s) { size_t len = 0; const char *t = s; while (Utf8Consume(&t) != 0) len++; return len; } /** * Convert a given ASCII string to lowercase. * NOTE: only support ASCII characters, no UTF8 fancy. As currently * the function is only used to lowercase data-filenames if they are * not found, this is sufficient. If more, or general functionality is * needed, look to r7271 where it was removed because it was broken when * using certain locales: eg in Turkish the uppercase 'I' was converted to * '?', so just revert to the old functionality * @param str string to convert * @return String has changed. */ bool strtolower(char *str) { bool changed = false; for (; *str != '\0'; str++) { char new_str = tolower(*str); changed |= new_str != *str; *str = new_str; } return changed; } /** * Only allow certain keys. You can define the filter to be used. This makes * sure no invalid keys can get into an editbox, like BELL. * @param key character to be checked * @param afilter the filter to use * @return true or false depending if the character is printable/valid or not */ bool IsValidChar(WChar key, CharSetFilter afilter) { switch (afilter) { case CS_ALPHANUMERAL: return IsPrintable(key); case CS_NUMERAL: return (key >= '0' && key <= '9'); case CS_NUMERAL_SPACE: return (key >= '0' && key <= '9') || key == ' '; case CS_ALPHA: return IsPrintable(key) && !(key >= '0' && key <= '9'); case CS_HEXADECIMAL: return (key >= '0' && key <= '9') || (key >= 'a' && key <= 'f') || (key >= 'A' && key <= 'F'); } return false; } #ifdef WIN32 /* Since version 3.14, MinGW Runtime has snprintf() and vsnprintf() conform to C99 but it's not the case for older versions */ #if (__MINGW32_MAJOR_VERSION < 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 14)) int CDECL snprintf(char *str, size_t size, const char *format, ...) { va_list ap; int ret; va_start(ap, format); ret = vsnprintf(str, size, format, ap); va_end(ap); return ret; } #endif /* MinGW Runtime < 3.14 */ #ifdef _MSC_VER /** * Almost POSIX compliant implementation of \c vsnprintf for VC compiler. * The difference is in the value returned on output truncation. This * implementation returns size whereas a POSIX implementation returns * size or more (the number of bytes that would be written to str * had size been sufficiently large excluding the terminating null byte). */ int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap) { if (size == 0) return 0; errno = 0; int ret = _vsnprintf(str, size, format, ap); if (ret < 0) { if (errno != ERANGE) { /* There's a formatting error, better get that looked * at properly instead of ignoring it. */ NOT_REACHED(); } } else if ((size_t)ret < size) { /* The buffer is big enough for the number of * characters stored (excluding null), i.e. * the string has been null-terminated. */ return ret; } /* The buffer is too small for _vsnprintf to write the * null-terminator at its end and return size. */ str[size - 1] = '\0'; return (int)size; } #endif /* _MSC_VER */ #endif /* WIN32 */ /** * Safer implementation of snprintf; same as snprintf except: * - last instead of size, i.e. replace sizeof with lastof. * - return gives the amount of characters added, not what it would add. * @param str buffer to write to up to last * @param last last character we may write to * @param format the formatting (see snprintf) * @return the number of added characters */ int CDECL seprintf(char *str, const char *last, const char *format, ...) { va_list ap; va_start(ap, format); int ret = vseprintf(str, last, format, ap); va_end(ap); return ret; } /** * Convert the md5sum to a hexadecimal string representation * @param buf buffer to put the md5sum into * @param last last character of buffer (usually lastof(buf)) * @param md5sum the md5sum itself * @return a pointer to the next character after the md5sum */ char *md5sumToString(char *buf, const char *last, const uint8 md5sum[16]) { char *p = buf; for (uint i = 0; i < 16; i++) { p += seprintf(p, last, "%02X", md5sum[i]); } return p; } /* UTF-8 handling routines */ /** * Decode and consume the next UTF-8 encoded character. * @param c Buffer to place decoded character. * @param s Character stream to retrieve character from. * @return Number of characters in the sequence. */ size_t Utf8Decode(WChar *c, const char *s) { assert(c != NULL); if (!HasBit(s[0], 7)) { /* Single byte character: 0xxxxxxx */ *c = s[0]; return 1; } else if (GB(s[0], 5, 3) == 6) { if (IsUtf8Part(s[1])) { /* Double byte character: 110xxxxx 10xxxxxx */ *c = GB(s[0], 0, 5) << 6 | GB(s[1], 0, 6); if (*c >= 0x80) return 2; } } else if (GB(s[0], 4, 4) == 14) { if (IsUtf8Part(s[1]) && IsUtf8Part(s[2])) { /* Triple byte character: 1110xxxx 10xxxxxx 10xxxxxx */ *c = GB(s[0], 0, 4) << 12 | GB(s[1], 0, 6) << 6 | GB(s[2], 0, 6); if (*c >= 0x800) return 3; } } else if (GB(s[0], 3, 5) == 30) { if (IsUtf8Part(s[1]) && IsUtf8Part(s[2]) && IsUtf8Part(s[3])) { /* 4 byte character: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ *c = GB(s[0], 0, 3) << 18 | GB(s[1], 0, 6) << 12 | GB(s[2], 0, 6) << 6 | GB(s[3], 0, 6); if (*c >= 0x10000 && *c <= 0x10FFFF) return 4; } } /* DEBUG(misc, 1, "[utf8] invalid UTF-8 sequence"); */ *c = '?'; return 1; } /** * Encode a unicode character and place it in the buffer. * @param buf Buffer to place character. * @param c Unicode character to encode. * @return Number of characters in the encoded sequence. */ size_t Utf8Encode(char *buf, WChar c) { if (c < 0x80) { *buf = c; return 1; } else if (c < 0x800) { *buf++ = 0xC0 + GB(c, 6, 5); *buf = 0x80 + GB(c, 0, 6); return 2; } else if (c < 0x10000) { *buf++ = 0xE0 + GB(c, 12, 4); *buf++ = 0x80 + GB(c, 6, 6); *buf = 0x80 + GB(c, 0, 6); return 3; } else if (c < 0x110000) { *buf++ = 0xF0 + GB(c, 18, 3); *buf++ = 0x80 + GB(c, 12, 6); *buf++ = 0x80 + GB(c, 6, 6); *buf = 0x80 + GB(c, 0, 6); return 4; } /* DEBUG(misc, 1, "[utf8] can't UTF-8 encode value 0x%X", c); */ *buf = '?'; return 1; } /** * Properly terminate an UTF8 string to some maximum length * @param s string to check if it needs additional trimming * @param maxlen the maximum length the buffer can have. * @return the new length in bytes of the string (eg. strlen(new_string)) * @note maxlen is the string length _INCLUDING_ the terminating '\0' */ size_t Utf8TrimString(char *s, size_t maxlen) { size_t length = 0; for (const char *ptr = strchr(s, '\0'); *s != '\0';) { size_t len = Utf8EncodedCharLen(*s); /* Silently ignore invalid UTF8 sequences, our only concern trimming */ if (len == 0) len = 1; /* Take care when a hard cutoff was made for the string and * the last UTF8 sequence is invalid */ if (length + len >= maxlen || (s + len > ptr)) break; s += len; length += len; } *s = '\0'; return length; } #ifdef DEFINE_STRNDUP char *strndup(const char *s, size_t len) { len = ttd_strnlen(s, len); char *tmp = CallocT(len + 1); memcpy(tmp, s, len); return tmp; } #endif /* DEFINE_STRNDUP */ #ifdef DEFINE_STRCASESTR char *strcasestr(const char *haystack, const char *needle) { size_t hay_len = strlen(haystack); size_t needle_len = strlen(needle); while (hay_len >= needle_len) { if (strncasecmp(haystack, needle, needle_len) == 0) return const_cast(haystack); haystack++; hay_len--; } return NULL; } #endif /* DEFINE_STRCASESTR */ /** * Skip some of the 'garbage' in the string that we don't want to use * to sort on. This way the alphabetical sorting will work better as * we would be actually using those characters instead of some other * characters such as spaces and tildes at the begin of the name. * @param str The string to skip the initial garbage of. * @return The string with the garbage skipped. */ static const char *SkipGarbage(const char *str) { while (*str != '\0' && (*str < '0' || IsInsideMM(*str, ';', '@' + 1) || IsInsideMM(*str, '[', '`' + 1) || IsInsideMM(*str, '{', '~' + 1))) str++; return str; } /** * Compares two strings using case insensitive natural sort. * * @param s1 First string to compare. * @param s2 Second string to compare. * @param ignore_garbage_at_front Skip punctuation characters in the front * @return Less than zero if s1 < s2, zero if s1 == s2, greater than zero if s1 > s2. */ int strnatcmp(const char *s1, const char *s2, bool ignore_garbage_at_front) { if (ignore_garbage_at_front) { s1 = SkipGarbage(s1); s2 = SkipGarbage(s2); } #ifdef WITH_ICU if (_current_collator != NULL) { UErrorCode status = U_ZERO_ERROR; int result; /* We want to use the new faster method for ICU 4.2 and higher. */ #if U_ICU_VERSION_MAJOR_NUM > 4 || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 2) /* The StringPiece parameter gets implicitly constructed from the char *. */ result = _current_collator->compareUTF8(s1, s2, status); #else /* The following for 4.0 and lower. */ UChar buffer1[DRAW_STRING_BUFFER]; u_strFromUTF8Lenient(buffer1, lengthof(buffer1), NULL, s1, -1, &status); UChar buffer2[DRAW_STRING_BUFFER]; u_strFromUTF8Lenient(buffer2, lengthof(buffer2), NULL, s2, -1, &status); result = _current_collator->compare(buffer1, buffer2, status); #endif /* ICU version check. */ if (U_SUCCESS(status)) return result; } #endif /* WITH_ICU */ /* Do a normal comparison if ICU is missing or if we cannot create a collator. */ return strcasecmp(s1, s2); } #ifdef WITH_ICU #include #include /** String iterator using ICU as a backend. */ class IcuStringIterator : public StringIterator { icu::BreakIterator *char_itr; ///< ICU iterator for characters. icu::BreakIterator *word_itr; ///< ICU iterator for words. const char *string; ///< Iteration string in UTF-8. SmallVector utf16_str; ///< UTF-16 copy of the string. SmallVector utf16_to_utf8; ///< Mapping from UTF-16 code point position to index in the UTF-8 source string. public: IcuStringIterator() : char_itr(NULL), word_itr(NULL) { UErrorCode status = U_ZERO_ERROR; this->char_itr = icu::BreakIterator::createCharacterInstance(icu::Locale(_current_language != NULL ? _current_language->isocode : "en"), status); this->word_itr = icu::BreakIterator::createWordInstance(icu::Locale(_current_language != NULL ? _current_language->isocode : "en"), status); *this->utf16_str.Append() = '\0'; *this->utf16_to_utf8.Append() = 0; } virtual ~IcuStringIterator() { delete this->char_itr; delete this->word_itr; } virtual void SetString(const char *s) { this->string = s; /* Unfortunately current ICU versions only provide rudimentary support * for word break iterators (especially for CJK languages) in combination * with UTF-8 input. As a work around we have to convert the input to * UTF-16 and create a mapping back to UTF-8 character indices. */ this->utf16_str.Clear(); this->utf16_to_utf8.Clear(); while (*s != '\0') { size_t idx = s - this->string; WChar c = Utf8Consume(&s); if (c < 0x10000) { *this->utf16_str.Append() = (UChar)c; } else { /* Make a surrogate pair. */ *this->utf16_str.Append() = (UChar)(0xD800 + ((c - 0x10000) >> 10)); *this->utf16_str.Append() = (UChar)(0xDC00 + ((c - 0x10000) & 0x3FF)); *this->utf16_to_utf8.Append() = idx; } *this->utf16_to_utf8.Append() = idx; } *this->utf16_str.Append() = '\0'; *this->utf16_to_utf8.Append() = s - this->string; UText text = UTEXT_INITIALIZER; UErrorCode status = U_ZERO_ERROR; utext_openUChars(&text, this->utf16_str.Begin(), this->utf16_str.Length() - 1, &status); this->char_itr->setText(&text, status); this->word_itr->setText(&text, status); this->char_itr->first(); this->word_itr->first(); } virtual size_t SetCurPosition(size_t pos) { /* Convert incoming position to an UTF-16 string index. */ uint utf16_pos = 0; for (uint i = 0; i < this->utf16_to_utf8.Length(); i++) { if (this->utf16_to_utf8[i] == pos) { utf16_pos = i; break; } } /* isBoundary has the documented side-effect of setting the current * position to the first valid boundary equal to or greater than * the passed value. */ this->char_itr->isBoundary(utf16_pos); return this->utf16_to_utf8[this->char_itr->current()]; } virtual size_t Next(IterType what) { int32_t pos; switch (what) { case ITER_CHARACTER: pos = this->char_itr->next(); break; case ITER_WORD: pos = this->word_itr->following(this->char_itr->current()); /* The ICU word iterator considers both the start and the end of a word a valid * break point, but we only want word starts. Move to the next location in * case the new position points to whitespace. */ while (pos != icu::BreakIterator::DONE && IsWhitespace(Utf16DecodeChar((const uint16 *)&this->utf16_str[pos]))) pos = this->word_itr->next(); this->char_itr->isBoundary(pos); break; default: NOT_REACHED(); } return pos == icu::BreakIterator::DONE ? END : this->utf16_to_utf8[pos]; } virtual size_t Prev(IterType what) { int32_t pos; switch (what) { case ITER_CHARACTER: pos = this->char_itr->previous(); break; case ITER_WORD: pos = this->word_itr->preceding(this->char_itr->current()); /* The ICU word iterator considers both the start and the end of a word a valid * break point, but we only want word starts. Move to the previous location in * case the new position points to whitespace. */ while (pos != icu::BreakIterator::DONE && IsWhitespace(Utf16DecodeChar((const uint16 *)&this->utf16_str[pos]))) pos = this->word_itr->previous(); this->char_itr->isBoundary(pos); break; default: NOT_REACHED(); } return pos == icu::BreakIterator::DONE ? END : this->utf16_to_utf8[pos]; } }; /* static */ StringIterator *StringIterator::Create() { return new IcuStringIterator(); } #else /** Fallback simple string iterator. */ class DefaultStringIterator : public StringIterator { const char *string; ///< Current string. size_t len; ///< String length. size_t cur_pos; ///< Current iteration position. public: DefaultStringIterator() : string(NULL) { } virtual void SetString(const char *s) { this->string = s; this->len = strlen(s); this->cur_pos = 0; } virtual size_t SetCurPosition(size_t pos) { assert(this->string != NULL && pos <= this->len); /* Sanitize in case we get a position inside an UTF-8 sequence. */ while (pos > 0 && IsUtf8Part(this->string[pos])) pos--; return this->cur_pos = pos; } virtual size_t Next(IterType what) { assert(this->string != NULL); /* Already at the end? */ if (this->cur_pos >= this->len) return END; switch (what) { case ITER_CHARACTER: { WChar c; this->cur_pos += Utf8Decode(&c, this->string + this->cur_pos); return this->cur_pos; } case ITER_WORD: { WChar c; /* Consume current word. */ size_t offs = Utf8Decode(&c, this->string + this->cur_pos); while (this->cur_pos < this->len && !IsWhitespace(c)) { this->cur_pos += offs; offs = Utf8Decode(&c, this->string + this->cur_pos); } /* Consume whitespace to the next word. */ while (this->cur_pos < this->len && IsWhitespace(c)) { this->cur_pos += offs; offs = Utf8Decode(&c, this->string + this->cur_pos); } return this->cur_pos; } default: NOT_REACHED(); } return END; } virtual size_t Prev(IterType what) { assert(this->string != NULL); /* Already at the beginning? */ if (this->cur_pos == 0) return END; switch (what) { case ITER_CHARACTER: return this->cur_pos = Utf8PrevChar(this->string + this->cur_pos) - this->string; case ITER_WORD: { const char *s = this->string + this->cur_pos; WChar c; /* Consume preceding whitespace. */ do { s = Utf8PrevChar(s); Utf8Decode(&c, s); } while (s > this->string && IsWhitespace(c)); /* Consume preceding word. */ while (s > this->string && !IsWhitespace(c)) { s = Utf8PrevChar(s); Utf8Decode(&c, s); } /* Move caret back to the beginning of the word. */ if (IsWhitespace(c)) Utf8Consume(&s); return this->cur_pos = s - this->string; } default: NOT_REACHED(); } return END; } }; /* static */ StringIterator *StringIterator::Create() { return new DefaultStringIterator(); } #endif openttd-1.3.3/src/industry_type.h0000644000000000000000000000351312246102611015550 0ustar rootroot/* $Id: industry_type.h 19812 2010-05-13 09:44:44Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file industry_type.h Types related to the industry. */ #ifndef INDUSTRY_TYPE_H #define INDUSTRY_TYPE_H typedef uint16 IndustryID; typedef uint16 IndustryGfx; typedef uint8 IndustryType; struct Industry; struct IndustrySpec; struct IndustryTileSpec; static const IndustryID INVALID_INDUSTRY = 0xFFFF; static const IndustryType NEW_INDUSTRYOFFSET = 37; ///< original number of industries static const IndustryType NUM_INDUSTRYTYPES = 64; ///< total number of industries, new and old static const IndustryType INVALID_INDUSTRYTYPE = NUM_INDUSTRYTYPES; ///< one above amount is considered invalid static const IndustryGfx INDUSTRYTILE_NOANIM = 0xFF; ///< flag to mark industry tiles as having no animation static const IndustryGfx NEW_INDUSTRYTILEOFFSET = 175; ///< original number of tiles static const IndustryGfx NUM_INDUSTRYTILES = 512; ///< total number of industry tiles, new and old static const IndustryGfx INVALID_INDUSTRYTILE = NUM_INDUSTRYTILES; ///< one above amount is considered invalid static const int INDUSTRY_COMPLETED = 3; ///< final stage of industry construction. #endif /* INDUSTRY_TYPE_H */ openttd-1.3.3/src/fios.h0000644000000000000000000001251512246102611013570 0ustar rootroot/* $Id: fios.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fios.h Declarations for savegames operations */ #ifndef FIOS_H #define FIOS_H #include "gfx_type.h" #include "company_base.h" #include "newgrf_config.h" #include "network/core/tcp_content.h" typedef SmallMap CompanyPropertiesMap; /** * Container for loading in mode SL_LOAD_CHECK. */ struct LoadCheckData { bool checkable; ///< True if the savegame could be checked by SL_LOAD_CHECK. (Old savegames are not checkable.) StringID error; ///< Error message from loading. INVALID_STRING_ID if no error. char *error_data; ///< Data to pass to SetDParamStr when displaying #error. uint32 map_size_x, map_size_y; Date current_date; GameSettings settings; CompanyPropertiesMap companies; ///< Company information. GRFConfig *grfconfig; ///< NewGrf configuration from save. GRFListCompatibility grf_compatibility; ///< Summary state of NewGrfs, whether missing files or only compatible found. struct LoggedAction *gamelog_action; ///< Gamelog actions uint gamelog_actions; ///< Number of gamelog actions LoadCheckData() : error_data(NULL), grfconfig(NULL), gamelog_action(NULL) { this->Clear(); } /** * Don't leak memory at program exit */ ~LoadCheckData() { this->Clear(); } /** * Check whether loading the game resulted in errors. * @return true if errors were encountered. */ bool HasErrors() { return this->checkable && this->error != INVALID_STRING_ID; } /** * Check whether the game uses any NewGrfs. * @return true if NewGrfs are used. */ bool HasNewGrfs() { return this->checkable && this->error == INVALID_STRING_ID && this->grfconfig != NULL; } void Clear(); }; extern LoadCheckData _load_check_data; enum FileSlots { /** * Slot used for the GRF scanning and such. This slot cannot be reused * as it will otherwise cause issues when pressing "rescan directories". * It can furthermore not be larger than LAST_GRF_SLOT as that complicates * the testing for "too much NewGRFs". */ CONFIG_SLOT = 0, /** Slot for the sound. */ SOUND_SLOT = 1, /** First slot usable for (New)GRFs used during the game. */ FIRST_GRF_SLOT = 2, /** Last slot usable for (New)GRFs used during the game. */ LAST_GRF_SLOT = 63, /** Maximum number of slots. */ MAX_FILE_SLOTS = 64 }; /** Mode of the file dialogue window. */ enum SaveLoadDialogMode { SLD_LOAD_GAME, ///< Load a game. SLD_LOAD_SCENARIO, ///< Load a scenario. SLD_SAVE_GAME, ///< Save a game. SLD_SAVE_SCENARIO, ///< Save a scenario. SLD_LOAD_HEIGHTMAP, ///< Load a heightmap. SLD_SAVE_HEIGHTMAP, ///< Save a heightmap. }; /** The different types of files that the system knows about. */ enum FileType { FT_NONE, ///< nothing to do FT_SAVEGAME, ///< old or new savegame FT_SCENARIO, ///< old or new scenario FT_HEIGHTMAP, ///< heightmap file }; enum FiosType { FIOS_TYPE_DRIVE, FIOS_TYPE_PARENT, FIOS_TYPE_DIR, FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE, FIOS_TYPE_SCENARIO, FIOS_TYPE_OLD_SCENARIO, FIOS_TYPE_DIRECT, FIOS_TYPE_PNG, FIOS_TYPE_BMP, FIOS_TYPE_INVALID = 255, }; /** Deals with finding savegames */ struct FiosItem { FiosType type; uint64 mtime; char title[64]; char name[MAX_PATH]; }; /** Deals with the type of the savegame, independent of extension */ struct SmallFiosItem { int mode; ///< savegame/scenario type (old, new) FileType filetype; ///< what type of file are we dealing with char name[MAX_PATH]; ///< name char title[255]; ///< internal name of the game }; enum SortingBits { SORT_ASCENDING = 0, SORT_DESCENDING = 1, SORT_BY_DATE = 0, SORT_BY_NAME = 2 }; DECLARE_ENUM_AS_BIT_SET(SortingBits) /* Variables to display file lists */ extern SmallVector _fios_items; extern SmallFiosItem _file_to_saveload; extern SaveLoadDialogMode _saveload_mode; extern SortingBits _savegame_sort_order; void ShowSaveLoadDialog(SaveLoadDialogMode mode); void FiosGetSavegameList(SaveLoadDialogMode mode); void FiosGetScenarioList(SaveLoadDialogMode mode); void FiosGetHeightmapList(SaveLoadDialogMode mode); void FiosFreeSavegameList(); const char *FiosBrowseTo(const FiosItem *item); StringID FiosGetDescText(const char **path, uint64 *total_free); bool FiosDelete(const char *name); void FiosMakeHeightmapName(char *buf,const char *name, size_t size); void FiosMakeSavegameName(char *buf, const char *name, size_t size); FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title, const char *last); int CDECL CompareFiosItems(const FiosItem *a, const FiosItem *b); extern const TextColour _fios_colours[]; void BuildFileList(); void SetFiosType(const byte fiostype); #endif /* FIOS_H */ openttd-1.3.3/src/landscape.h0000644000000000000000000001162312246102611014561 0ustar rootroot/* $Id: landscape.h 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file landscape.h Functions related to OTTD's landscape. */ #ifndef LANDSCAPE_H #define LANDSCAPE_H #include "core/geometry_type.hpp" #include "tile_cmd.h" static const uint SNOW_LINE_MONTHS = 12; ///< Number of months in the snow line table. static const uint SNOW_LINE_DAYS = 32; ///< Number of days in each month in the snow line table. /** * Structure describing the height of the snow line each day of the year * @ingroup SnowLineGroup */ struct SnowLine { byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; ///< Height of the snow line each day of the year byte highest_value; ///< Highest snow line of the year byte lowest_value; ///< Lowest snow line of the year }; bool IsSnowLineSet(); void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]); byte GetSnowLine(); byte HighestSnowLine(); byte LowestSnowLine(); void ClearSnowLine(); int GetSlopeZInCorner(Slope tileh, Corner corner); Slope GetFoundationSlope(TileIndex tile, int *z = NULL); uint GetPartialPixelZ(int x, int y, Slope corners); int GetSlopePixelZ(int x, int y); void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2); /** * Determine the Z height of a corner relative to TileZ. * * @pre The slope must not be a halftile slope. * * @param tileh The slope. * @param corner The corner. * @return Z position of corner relative to TileZ. */ static inline int GetSlopePixelZInCorner(Slope tileh, Corner corner) { return GetSlopeZInCorner(tileh, corner) * TILE_HEIGHT; } /** * Get slope of a tile on top of a (possible) foundation * If a tile does not have a foundation, the function returns the same as GetTilePixelSlope. * * @param tile The tile of interest. * @param z returns the z of the foundation slope. (Can be NULL, if not needed) * @return The slope on top of the foundation. */ static inline Slope GetFoundationPixelSlope(TileIndex tile, int *z) { assert(z != NULL); Slope s = GetFoundationSlope(tile, z); *z *= TILE_HEIGHT; return s; } /** * Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap. * @param x X world or tile coordinate (runs in SW direction in the 2D view). * @param y Y world or tile coordinate (runs in SE direction in the 2D view). * @param z Z world or tile coordinate (runs in N direction in the 2D view). * @return Equivalent coordinate in the 2D view. * @see RemapCoords2 */ static inline Point RemapCoords(int x, int y, int z) { Point pt; pt.x = (y - x) * 2 * ZOOM_LVL_BASE; pt.y = (y + x - z) * ZOOM_LVL_BASE; return pt; } /** * Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap. * Same as #RemapCoords, except the Z coordinate is read from the map. * @param x X world or tile coordinate (runs in SW direction in the 2D view). * @param y Y world or tile coordinate (runs in SE direction in the 2D view). * @return Equivalent coordinate in the 2D view. * @see RemapCoords */ static inline Point RemapCoords2(int x, int y) { return RemapCoords(x, y, GetSlopePixelZ(x, y)); } /** * Map 2D viewport or smallmap coordinate to 3D world or tile coordinate. * Function assumes z == 0. For other values of \p z, add \p z to \a y before the call. * @param x X coordinate of the 2D coordinate. * @param y Y coordinate of the 2D coordinate. * @return X and Y components of equivalent world or tile coordinate. * @note Inverse of #RemapCoords function. Smaller values may get rounded. */ static inline Point InverseRemapCoords(int x, int y) { Point pt = {(y * 2 - x) >> (2 + ZOOM_LVL_SHIFT), (y * 2 + x) >> (2 + ZOOM_LVL_SHIFT)}; return pt; } uint ApplyFoundationToSlope(Foundation f, Slope *s); /** * Applies a foundation to a slope. * * @pre Foundation and slope must be valid combined. * @param f The #Foundation. * @param s The #Slope to modify. * @return Increment to the tile Z coordinate. */ static inline uint ApplyPixelFoundationToSlope(Foundation f, Slope *s) { return ApplyFoundationToSlope(f, s) * TILE_HEIGHT; } void DrawFoundation(TileInfo *ti, Foundation f); bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here); bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here); void DoClearSquare(TileIndex tile); void RunTileLoop(); void InitializeLandscape(); void GenerateLandscape(byte mode); #endif /* LANDSCAPE_H */ openttd-1.3.3/src/gamelog.h0000644000000000000000000000456112246102611014245 0ustar rootroot/* $Id: gamelog.h 23901 2012-02-05 15:51:13Z smatz $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gamelog.h Functions to be called to log possibly unsafe game events */ #ifndef GAMELOG_H #define GAMELOG_H #include "newgrf_config.h" /** The actions we log. */ enum GamelogActionType { GLAT_START, ///< Game created GLAT_LOAD, ///< Game loaded GLAT_GRF, ///< GRF changed GLAT_CHEAT, ///< Cheat was used GLAT_SETTING, ///< Setting changed GLAT_GRFBUG, ///< GRF bug was triggered GLAT_EMERGENCY, ///< Emergency savegame GLAT_END, ///< So we know how many GLATs are there GLAT_NONE = 0xFF, ///< No logging active; in savegames, end of list }; void GamelogStartAction(GamelogActionType at); void GamelogStopAction(); void GamelogFree(struct LoggedAction *gamelog_action, uint gamelog_actions); void GamelogReset(); /** * Callback for printing text. * @param s The string to print. */ typedef void GamelogPrintProc(const char *s); void GamelogPrint(GamelogPrintProc *proc); // needed for WIN32 / WINCE crash.log void GamelogPrintDebug(int level); void GamelogPrintConsole(); void GamelogEmergency(); bool GamelogTestEmergency(); void GamelogRevision(); void GamelogMode(); void GamelogOldver(); void GamelogSetting(const char *name, int32 oldval, int32 newval); void GamelogGRFUpdate(const GRFConfig *oldg, const GRFConfig *newg); void GamelogGRFAddList(const GRFConfig *newg); void GamelogGRFRemove(uint32 grfid); void GamelogGRFAdd(const GRFConfig *newg); void GamelogGRFCompatible(const GRFIdentifier *newg); void GamelogTestRevision(); void GamelogTestMode(); bool GamelogGRFBugReverse(uint32 grfid, uint16 internal_id); void GamelogInfo(struct LoggedAction *gamelog_action, uint gamelog_actions, uint32 *last_ottd_rev, byte *ever_modified, bool *removed_newgrfs); #endif /* GAMELOG_H */ openttd-1.3.3/src/articulated_vehicles.h0000644000000000000000000000313112246102611017005 0ustar rootroot/* $Id: articulated_vehicles.h 24029 2012-03-14 20:49:54Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file articulated_vehicles.h Functions related to articulated vehicles. */ #ifndef ARTICULATED_VEHICLES_H #define ARTICULATED_VEHICLES_H #include "vehicle_type.h" #include "engine_type.h" uint CountArticulatedParts(EngineID engine_type, bool purchase_window); CargoArray GetCapacityOfArticulatedParts(EngineID engine); void AddArticulatedParts(Vehicle *first); void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type, uint32 *union_mask, uint32 *intersection_mask); uint32 GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type); uint32 GetIntersectionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type); bool IsArticulatedVehicleCarryingDifferentCargoes(const Vehicle *v, CargoID *cargo_type); bool IsArticulatedVehicleRefittable(EngineID engine); bool IsArticulatedEngine(EngineID engine_type); void CheckConsistencyOfArticulatedVehicle(const Vehicle *v); #endif /* ARTICULATED_VEHICLES_H */ openttd-1.3.3/src/roadveh_gui.cpp0000644000000000000000000001221312246102611015452 0ustar rootroot/* $Id: roadveh_gui.cpp 25500 2013-06-28 19:29:08Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file roadveh_gui.cpp GUI for road vehicles. */ #include "stdafx.h" #include "roadveh.h" #include "window_gui.h" #include "strings_func.h" #include "vehicle_func.h" #include "string_func.h" #include "table/strings.h" /** * Draw the details for the given vehicle at the given position * * @param v current vehicle * @param left The left most coordinate to draw * @param right The right most coordinate to draw * @param y The y coordinate */ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y) { uint y_offset = v->HasArticulatedPart() ? 15 : 0; // Draw the first line below the sprite of an articulated RV instead of after it. StringID str; Money feeder_share = 0; SetDParam(0, v->engine_type); SetDParam(1, v->build_year); SetDParam(2, v->value); DrawString(left, right, y + y_offset, STR_VEHICLE_INFO_BUILT_VALUE); if (v->HasArticulatedPart()) { CargoArray max_cargo; StringID subtype_text[NUM_CARGO]; char capacity[512]; memset(subtype_text, 0, sizeof(subtype_text)); for (const Vehicle *u = v; u != NULL; u = u->Next()) { max_cargo[u->cargo_type] += u->cargo_cap; if (u->cargo_cap > 0) { StringID text = GetCargoSubtypeText(u); if (text != STR_EMPTY) subtype_text[u->cargo_type] = text; } } GetString(capacity, STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY, lastof(capacity)); bool first = true; for (CargoID i = 0; i < NUM_CARGO; i++) { if (max_cargo[i] > 0) { char buffer[128]; SetDParam(0, i); SetDParam(1, max_cargo[i]); GetString(buffer, STR_JUST_CARGO, lastof(buffer)); if (!first) strecat(capacity, ", ", lastof(capacity)); strecat(capacity, buffer, lastof(capacity)); if (subtype_text[i] != 0) { GetString(buffer, subtype_text[i], lastof(buffer)); strecat(capacity, buffer, lastof(capacity)); } first = false; } } DrawString(left, right, y + FONT_HEIGHT_NORMAL + y_offset, capacity, TC_BLUE); for (const Vehicle *u = v; u != NULL; u = u->Next()) { if (u->cargo_cap == 0) continue; str = STR_VEHICLE_DETAILS_CARGO_EMPTY; if (!u->cargo.Empty()) { SetDParam(0, u->cargo_type); SetDParam(1, u->cargo.Count()); SetDParam(2, u->cargo.Source()); str = STR_VEHICLE_DETAILS_CARGO_FROM; feeder_share += u->cargo.FeederShare(); } DrawString(left, right, y + 2 * FONT_HEIGHT_NORMAL + 1 + y_offset, str); y_offset += FONT_HEIGHT_NORMAL + 1; } y_offset -= FONT_HEIGHT_NORMAL + 1; } else { SetDParam(0, v->cargo_type); SetDParam(1, v->cargo_cap); SetDParam(4, GetCargoSubtypeText(v)); DrawString(left, right, y + FONT_HEIGHT_NORMAL + y_offset, STR_VEHICLE_INFO_CAPACITY); str = STR_VEHICLE_DETAILS_CARGO_EMPTY; if (!v->cargo.Empty()) { SetDParam(0, v->cargo_type); SetDParam(1, v->cargo.Count()); SetDParam(2, v->cargo.Source()); str = STR_VEHICLE_DETAILS_CARGO_FROM; feeder_share += v->cargo.FeederShare(); } DrawString(left, right, y + 2 * FONT_HEIGHT_NORMAL + 1 + y_offset, str); } /* Draw Transfer credits text */ SetDParam(0, feeder_share); DrawString(left, right, y + 3 * FONT_HEIGHT_NORMAL + 3 + y_offset, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE); } /** * Draws an image of a road vehicle chain * @param v Front vehicle * @param left The minimum horizontal position * @param right The maximum horizontal position * @param y Vertical position to draw at * @param selection Selected vehicle to draw a frame around * @param skip Number of pixels to skip at the front (for scrolling) */ void DrawRoadVehImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip) { bool rtl = _current_text_dir == TD_RTL; Direction dir = rtl ? DIR_E : DIR_W; const RoadVehicle *u = RoadVehicle::From(v); DrawPixelInfo tmp_dpi, *old_dpi; int max_width = right - left + 1; if (!FillDrawPixelInfo(&tmp_dpi, left, y, max_width, 14)) return; old_dpi = _cur_dpi; _cur_dpi = &tmp_dpi; int px = rtl ? max_width + skip : -skip; for (; u != NULL && (rtl ? px > 0 : px < max_width); u = u->Next()) { Point offset; int width = u->GetDisplayImageWidth(&offset); if (rtl ? px + width > 0 : px - width < max_width) { PaletteID pal = (u->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(u); DrawSprite(u->GetImage(dir, image_type), pal, px + (rtl ? -offset.x : offset.x), 6 + offset.y); } px += rtl ? -width : width; } if (v->index == selection) { DrawFrameRect((rtl ? px : 0), 0, (rtl ? max_width : px) - 1, 12, COLOUR_WHITE, FR_BORDERONLY); } _cur_dpi = old_dpi; } openttd-1.3.3/src/livery.h0000644000000000000000000000436412246102611014145 0ustar rootroot/* $Id: livery.h 22411 2011-05-02 17:42:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file livery.h Functions/types related to livery colours. */ #ifndef LIVERY_H #define LIVERY_H #include "company_type.h" static const byte LIT_NONE = 0; ///< Don't show the liveries at all static const byte LIT_COMPANY = 1; ///< Show the liveries of your own company static const byte LIT_ALL = 2; ///< Show the liveries of all companies /** List of different livery schemes. */ enum LiveryScheme { LS_BEGIN = 0, LS_DEFAULT = 0, /* Rail vehicles */ LS_STEAM, LS_DIESEL, LS_ELECTRIC, LS_MONORAIL, LS_MAGLEV, LS_DMU, LS_EMU, LS_PASSENGER_WAGON_STEAM, LS_PASSENGER_WAGON_DIESEL, LS_PASSENGER_WAGON_ELECTRIC, LS_PASSENGER_WAGON_MONORAIL, LS_PASSENGER_WAGON_MAGLEV, LS_FREIGHT_WAGON, /* Road vehicles */ LS_BUS, LS_TRUCK, /* Ships */ LS_PASSENGER_SHIP, LS_FREIGHT_SHIP, /* Aircraft */ LS_HELICOPTER, LS_SMALL_PLANE, LS_LARGE_PLANE, /* Trams (appear on Road Vehicles tab) */ LS_PASSENGER_TRAM, LS_FREIGHT_TRAM, LS_END }; DECLARE_POSTFIX_INCREMENT(LiveryScheme) /** Helper information for extract tool. */ template <> struct EnumPropsT : MakeEnumPropsT {}; /** List of different livery classes, used only by the livery GUI. */ enum LiveryClass { LC_OTHER, LC_RAIL, LC_ROAD, LC_SHIP, LC_AIRCRAFT, LC_END }; /** Information about a particular livery. */ struct Livery { bool in_use; ///< Set if this livery should be used instead of the default livery. byte colour1; ///< First colour, for all vehicles. byte colour2; ///< Second colour, for vehicles with 2CC support. }; void ResetCompanyLivery(Company *c); #endif /* LIVERY_H */ openttd-1.3.3/src/house.h0000644000000000000000000001452612246102611013757 0ustar rootroot/* $Id: house.h 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file house.h definition of HouseSpec and accessors */ #ifndef HOUSE_H #define HOUSE_H #include "cargo_type.h" #include "date_type.h" #include "house_type.h" #include "newgrf_animation_type.h" #include "newgrf_commons.h" /** * Simple value that indicates the house has reached the final stage of * construction. */ static const byte TOWN_HOUSE_COMPLETED = 3; static const uint HOUSE_NO_CLASS = 0; static const HouseID NEW_HOUSE_OFFSET = 110; static const HouseID HOUSE_MAX = 512; static const HouseID INVALID_HOUSE_ID = 0xFFFF; /** * There can only be as many classes as there are new houses, plus one for * NO_CLASS, as the original houses don't have classes. */ static const uint HOUSE_CLASS_MAX = HOUSE_MAX - NEW_HOUSE_OFFSET + 1; enum BuildingFlags { TILE_NO_FLAG = 0, TILE_SIZE_1x1 = 1U << 0, TILE_NOT_SLOPED = 1U << 1, TILE_SIZE_2x1 = 1U << 2, TILE_SIZE_1x2 = 1U << 3, TILE_SIZE_2x2 = 1U << 4, BUILDING_IS_ANIMATED = 1U << 5, BUILDING_IS_CHURCH = 1U << 6, BUILDING_IS_STADIUM = 1U << 7, BUILDING_HAS_1_TILE = TILE_SIZE_1x1 | TILE_SIZE_2x1 | TILE_SIZE_1x2 | TILE_SIZE_2x2, BUILDING_HAS_2_TILES = TILE_SIZE_2x1 | TILE_SIZE_1x2 | TILE_SIZE_2x2, BUILDING_2_TILES_X = TILE_SIZE_2x1 | TILE_SIZE_2x2, BUILDING_2_TILES_Y = TILE_SIZE_1x2 | TILE_SIZE_2x2, BUILDING_HAS_4_TILES = TILE_SIZE_2x2, }; DECLARE_ENUM_AS_BIT_SET(BuildingFlags) enum HouseZonesBits { HZB_BEGIN = 0, HZB_TOWN_EDGE = 0, HZB_TOWN_OUTSKIRT, HZB_TOWN_OUTER_SUBURB, HZB_TOWN_INNER_SUBURB, HZB_TOWN_CENTRE, HZB_END, }; assert_compile(HZB_END == 5); DECLARE_POSTFIX_INCREMENT(HouseZonesBits) enum HouseZones { ///< Bit Value Meaning HZ_NOZNS = 0x0000, ///< 0 This is just to get rid of zeros, meaning none HZ_ZON1 = 1U << HZB_TOWN_EDGE, ///< 0..4 1,2,4,8,10 which town zones the building can be built in, Zone1 been the further suburb HZ_ZON2 = 1U << HZB_TOWN_OUTSKIRT, HZ_ZON3 = 1U << HZB_TOWN_OUTER_SUBURB, HZ_ZON4 = 1U << HZB_TOWN_INNER_SUBURB, HZ_ZON5 = 1U << HZB_TOWN_CENTRE, ///< center of town HZ_ZONALL = 0x001F, ///< 1F This is just to englobe all above types at once HZ_SUBARTC_ABOVE = 0x0800, ///< 11 800 can appear in sub-arctic climate above the snow line HZ_TEMP = 0x1000, ///< 12 1000 can appear in temperate climate HZ_SUBARTC_BELOW = 0x2000, ///< 13 2000 can appear in sub-arctic climate below the snow line HZ_SUBTROPIC = 0x4000, ///< 14 4000 can appear in subtropical climate HZ_TOYLND = 0x8000, ///< 15 8000 can appear in toyland climate HZ_CLIMALL = 0xF800, ///< Bitmask of all climate bits }; DECLARE_ENUM_AS_BIT_SET(HouseZones) enum HouseExtraFlags { NO_EXTRA_FLAG = 0, BUILDING_IS_HISTORICAL = 1U << 0, ///< this house will only appear during town generation in random games, thus the historical BUILDING_IS_PROTECTED = 1U << 1, ///< towns and AI will not remove this house, while human players will be able to SYNCHRONISED_CALLBACK_1B = 1U << 2, ///< synchronized callback 1B will be performed, on multi tile houses CALLBACK_1A_RANDOM_BITS = 1U << 3, ///< callback 1A needs random bits }; DECLARE_ENUM_AS_BIT_SET(HouseExtraFlags) struct HouseSpec { /* Standard properties */ Year min_year; ///< introduction year of the house Year max_year; ///< last year it can be built byte population; ///< population (Zero on other tiles in multi tile house.) byte removal_cost; ///< cost multiplier for removing it StringID building_name; ///< building name uint16 remove_rating_decrease; ///< rating decrease if removed byte mail_generation; ///< mail generation multiplier (tile based, as the acceptances below) byte cargo_acceptance[3]; ///< acceptance level for the cargo slots CargoID accepts_cargo[3]; ///< 3 input cargo slots BuildingFlags building_flags; ///< some flags that describe the house (size, stadium etc...) HouseZones building_availability; ///< where can it be built (climates, zones) bool enabled; ///< the house is available to build (true by default, but can be disabled by newgrf) /* NewHouses properties */ GRFFileProps grf_prop; ///< Properties related the the grf file uint16 callback_mask; ///< Bitmask of house callbacks that have to be called byte random_colour[4]; ///< 4 "random" colours byte probability; ///< Relative probability of appearing (16 is the standard value) HouseExtraFlags extra_flags; ///< some more flags HouseClassID class_id; ///< defines the class this house has (not grf file based) AnimationInfo animation; ///< information about the animation. byte processing_time; ///< Periodic refresh multiplier byte minimum_life; ///< The minimum number of years this house will survive before the town rebuilds it uint32 watched_cargoes; ///< Cargo types watched for acceptance. Money GetRemovalCost() const; static inline HouseSpec *Get(size_t house_id) { assert(house_id < HOUSE_MAX); extern HouseSpec _house_specs[]; return &_house_specs[house_id]; } }; /** * Do HouseID translation for NewGRFs. * @param hid the HouseID to get the override for. * @return the HouseID to actually work with. */ static inline HouseID GetTranslatedHouseID(HouseID hid) { const HouseSpec *hs = HouseSpec::Get(hid); return hs->grf_prop.override == INVALID_HOUSE_ID ? hid : hs->grf_prop.override; } #endif /* HOUSE_H */ openttd-1.3.3/src/viewport.cpp0000644000000000000000000030556212246102611015051 0ustar rootroot/* $Id: viewport.cpp 24975 2013-02-06 17:51:05Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file viewport.cpp Handling of all viewports. * * \verbatim * The in-game coordinate system looks like this * * * * ^ Z * * | * * | * * | * * | * * / \ * * / \ * * / \ * * / \ * * X < > Y * * \endverbatim */ #include "stdafx.h" #include "landscape.h" #include "viewport_func.h" #include "station_base.h" #include "waypoint_base.h" #include "town.h" #include "signs_base.h" #include "signs_func.h" #include "vehicle_base.h" #include "vehicle_gui.h" #include "blitter/factory.hpp" #include "strings_func.h" #include "zoom_func.h" #include "vehicle_func.h" #include "company_func.h" #include "waypoint_func.h" #include "window_func.h" #include "tilehighlight_func.h" #include "window_gui.h" #include "table/strings.h" #include "table/palettes.h" Point _tile_fract_coords; struct StringSpriteToDraw { StringID string; Colours colour; int32 x; int32 y; uint64 params[2]; uint16 width; }; struct TileSpriteToDraw { SpriteID image; PaletteID pal; const SubSprite *sub; ///< only draw a rectangular part of the sprite int32 x; ///< screen X coordinate of sprite int32 y; ///< screen Y coordinate of sprite }; struct ChildScreenSpriteToDraw { SpriteID image; PaletteID pal; const SubSprite *sub; ///< only draw a rectangular part of the sprite int32 x; int32 y; int next; ///< next child to draw (-1 at the end) }; /** Parent sprite that should be drawn */ struct ParentSpriteToDraw { SpriteID image; ///< sprite to draw PaletteID pal; ///< palette to use const SubSprite *sub; ///< only draw a rectangular part of the sprite int32 x; ///< screen X coordinate of sprite int32 y; ///< screen Y coordinate of sprite int32 left; ///< minimal screen X coordinate of sprite (= x + sprite->x_offs), reference point for child sprites int32 top; ///< minimal screen Y coordinate of sprite (= y + sprite->y_offs), reference point for child sprites int32 xmin; ///< minimal world X coordinate of bounding box int32 xmax; ///< maximal world X coordinate of bounding box int32 ymin; ///< minimal world Y coordinate of bounding box int32 ymax; ///< maximal world Y coordinate of bounding box int zmin; ///< minimal world Z coordinate of bounding box int zmax; ///< maximal world Z coordinate of bounding box int first_child; ///< the first child to draw. bool comparison_done; ///< Used during sprite sorting: true if sprite has been compared with all other sprites }; /** Enumeration of multi-part foundations */ enum FoundationPart { FOUNDATION_PART_NONE = 0xFF, ///< Neither foundation nor groundsprite drawn yet. FOUNDATION_PART_NORMAL = 0, ///< First part (normal foundation or no foundation) FOUNDATION_PART_HALFTILE = 1, ///< Second part (halftile foundation) FOUNDATION_PART_END }; /** * Mode of "sprite combining" * @see StartSpriteCombine */ enum SpriteCombineMode { SPRITE_COMBINE_NONE, ///< Every #AddSortableSpriteToDraw start its own bounding box SPRITE_COMBINE_PENDING, ///< %Sprite combining will start with the next unclipped sprite. SPRITE_COMBINE_ACTIVE, ///< %Sprite combining is active. #AddSortableSpriteToDraw outputs child sprites. }; typedef SmallVector TileSpriteToDrawVector; typedef SmallVector StringSpriteToDrawVector; typedef SmallVector ParentSpriteToDrawVector; typedef SmallVector ParentSpriteToSortVector; typedef SmallVector ChildScreenSpriteToDrawVector; /** Data structure storing rendering information */ struct ViewportDrawer { DrawPixelInfo dpi; StringSpriteToDrawVector string_sprites_to_draw; TileSpriteToDrawVector tile_sprites_to_draw; ParentSpriteToDrawVector parent_sprites_to_draw; ParentSpriteToSortVector parent_sprites_to_sort; ///< Parent sprite pointer array used for sorting ChildScreenSpriteToDrawVector child_screen_sprites_to_draw; int *last_child; SpriteCombineMode combine_sprites; ///< Current mode of "sprite combining". @see StartSpriteCombine int foundation[FOUNDATION_PART_END]; ///< Foundation sprites (index into parent_sprites_to_draw). FoundationPart foundation_part; ///< Currently active foundation for ground sprite drawing. int *last_foundation_child[FOUNDATION_PART_END]; ///< Tail of ChildSprite list of the foundations. (index into child_screen_sprites_to_draw) Point foundation_offset[FOUNDATION_PART_END]; ///< Pixel offset for ground sprites on the foundations. }; static void MarkViewportDirty(const ViewPort *vp, int left, int top, int right, int bottom); static ViewportDrawer _vd; TileHighlightData _thd; static TileInfo *_cur_ti; bool _draw_bounding_boxes = false; bool _draw_dirty_blocks = false; uint _dirty_block_colour = 0; static Point MapXYZToViewport(const ViewPort *vp, int x, int y, int z) { Point p = RemapCoords(x, y, z); p.x -= vp->virtual_width / 2; p.y -= vp->virtual_height / 2; return p; } void DeleteWindowViewport(Window *w) { free(w->viewport); w->viewport = NULL; } /** * Initialize viewport of the window for use. * @param w Window to use/display the viewport in * @param x Offset of left edge of viewport with respect to left edge window \a w * @param y Offset of top edge of viewport with respect to top edge window \a w * @param width Width of the viewport * @param height Height of the viewport * @param follow_flags Flags controlling the viewport. * - If bit 31 is set, the lower 20 bits are the vehicle that the viewport should follow. * - If bit 31 is clear, it is a #TileIndex. * @param zoom Zoomlevel to display */ void InitializeWindowViewport(Window *w, int x, int y, int width, int height, uint32 follow_flags, ZoomLevel zoom) { assert(w->viewport == NULL); ViewportData *vp = CallocT(1); vp->left = x + w->left; vp->top = y + w->top; vp->width = width; vp->height = height; vp->zoom = static_cast(Clamp(zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max)); vp->virtual_width = ScaleByZoom(width, zoom); vp->virtual_height = ScaleByZoom(height, zoom); Point pt; if (follow_flags & 0x80000000) { const Vehicle *veh; vp->follow_vehicle = (VehicleID)(follow_flags & 0xFFFFF); veh = Vehicle::Get(vp->follow_vehicle); pt = MapXYZToViewport(vp, veh->x_pos, veh->y_pos, veh->z_pos); } else { uint x = TileX(follow_flags) * TILE_SIZE; uint y = TileY(follow_flags) * TILE_SIZE; vp->follow_vehicle = INVALID_VEHICLE; pt = MapXYZToViewport(vp, x, y, GetSlopePixelZ(x, y)); } vp->scrollpos_x = pt.x; vp->scrollpos_y = pt.y; vp->dest_scrollpos_x = pt.x; vp->dest_scrollpos_y = pt.y; w->viewport = vp; vp->virtual_left = 0;//pt.x; vp->virtual_top = 0;//pt.y; } static Point _vp_move_offs; static void DoSetViewportPosition(const Window *w, int left, int top, int width, int height) { FOR_ALL_WINDOWS_FROM_BACK_FROM(w, w) { if (left + width > w->left && w->left + w->width > left && top + height > w->top && w->top + w->height > top) { if (left < w->left) { DoSetViewportPosition(w, left, top, w->left - left, height); DoSetViewportPosition(w, left + (w->left - left), top, width - (w->left - left), height); return; } if (left + width > w->left + w->width) { DoSetViewportPosition(w, left, top, (w->left + w->width - left), height); DoSetViewportPosition(w, left + (w->left + w->width - left), top, width - (w->left + w->width - left), height); return; } if (top < w->top) { DoSetViewportPosition(w, left, top, width, (w->top - top)); DoSetViewportPosition(w, left, top + (w->top - top), width, height - (w->top - top)); return; } if (top + height > w->top + w->height) { DoSetViewportPosition(w, left, top, width, (w->top + w->height - top)); DoSetViewportPosition(w, left, top + (w->top + w->height - top), width, height - (w->top + w->height - top)); return; } return; } } { int xo = _vp_move_offs.x; int yo = _vp_move_offs.y; if (abs(xo) >= width || abs(yo) >= height) { /* fully_outside */ RedrawScreenRect(left, top, left + width, top + height); return; } GfxScroll(left, top, width, height, xo, yo); if (xo > 0) { RedrawScreenRect(left, top, xo + left, top + height); left += xo; width -= xo; } else if (xo < 0) { RedrawScreenRect(left + width + xo, top, left + width, top + height); width += xo; } if (yo > 0) { RedrawScreenRect(left, top, width + left, top + yo); } else if (yo < 0) { RedrawScreenRect(left, top + height + yo, width + left, top + height); } } } static void SetViewportPosition(Window *w, int x, int y) { ViewPort *vp = w->viewport; int old_left = vp->virtual_left; int old_top = vp->virtual_top; int i; int left, top, width, height; vp->virtual_left = x; vp->virtual_top = y; /* Viewport is bound to its left top corner, so it must be rounded down (UnScaleByZoomLower) * else glitch described in FS#1412 will happen (offset by 1 pixel with zoom level > NORMAL) */ old_left = UnScaleByZoomLower(old_left, vp->zoom); old_top = UnScaleByZoomLower(old_top, vp->zoom); x = UnScaleByZoomLower(x, vp->zoom); y = UnScaleByZoomLower(y, vp->zoom); old_left -= x; old_top -= y; if (old_top == 0 && old_left == 0) return; _vp_move_offs.x = old_left; _vp_move_offs.y = old_top; left = vp->left; top = vp->top; width = vp->width; height = vp->height; if (left < 0) { width += left; left = 0; } i = left + width - _screen.width; if (i >= 0) width -= i; if (width > 0) { if (top < 0) { height += top; top = 0; } i = top + height - _screen.height; if (i >= 0) height -= i; if (height > 0) DoSetViewportPosition(w->z_front, left, top, width, height); } } /** * Is a xy position inside the viewport of the window? * @param w Window to examine its viewport * @param x X coordinate of the xy position * @param y Y coordinate of the xy position * @return Pointer to the viewport if the xy position is in the viewport of the window, * otherwise \c NULL is returned. */ ViewPort *IsPtInWindowViewport(const Window *w, int x, int y) { ViewPort *vp = w->viewport; if (vp != NULL && IsInsideMM(x, vp->left, vp->left + vp->width) && IsInsideMM(y, vp->top, vp->top + vp->height)) return vp; return NULL; } /** * Translate screen coordinate in a viewport to a tile coordinate * @param vp Viewport that contains the (\a x, \a y) screen coordinate * @param x Screen x coordinate * @param y Screen y coordinate * @return Tile coordinate */ static Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y) { Point pt; int a, b; int z; if ( (uint)(x -= vp->left) >= (uint)vp->width || (uint)(y -= vp->top) >= (uint)vp->height) { Point pt = {-1, -1}; return pt; } x = (ScaleByZoom(x, vp->zoom) + vp->virtual_left) >> (2 + ZOOM_LVL_SHIFT); y = (ScaleByZoom(y, vp->zoom) + vp->virtual_top) >> (1 + ZOOM_LVL_SHIFT); a = y - x; b = y + x; /* we need to move variables in to the valid range, as the * GetTileZoomCenterWindow() function can call here with invalid x and/or y, * when the user tries to zoom out along the sides of the map */ a = Clamp(a, -4 * (int)TILE_SIZE, (int)(MapMaxX() * TILE_SIZE) - 1); b = Clamp(b, -4 * (int)TILE_SIZE, (int)(MapMaxY() * TILE_SIZE) - 1); /* (a, b) is the X/Y-world coordinate that belongs to (x,y) if the landscape would be completely flat on height 0. * Now find the Z-world coordinate by fix point iteration. * This is a bit tricky because the tile height is non-continuous at foundations. * The clicked point should be approached from the back, otherwise there are regions that are not clickable. * (FOUNDATION_HALFTILE_LOWER on SLOPE_STEEP_S hides north halftile completely) * So give it a z-malus of 4 in the first iterations. */ z = 0; int min_coord = _settings_game.construction.freeform_edges ? TILE_SIZE : 0; for (int i = 0; i < 5; i++) z = GetSlopePixelZ(Clamp(a + max(z, 4) - 4, min_coord, MapMaxX() * TILE_SIZE - 1), Clamp(b + max(z, 4) - 4, min_coord, MapMaxY() * TILE_SIZE - 1)) / 2; for (int malus = 3; malus > 0; malus--) z = GetSlopePixelZ(Clamp(a + max(z, malus) - malus, min_coord, MapMaxX() * TILE_SIZE - 1), Clamp(b + max(z, malus) - malus, min_coord, MapMaxY() * TILE_SIZE - 1)) / 2; for (int i = 0; i < 5; i++) z = GetSlopePixelZ(Clamp(a + z, min_coord, MapMaxX() * TILE_SIZE - 1), Clamp(b + z, min_coord, MapMaxY() * TILE_SIZE - 1)) / 2; pt.x = Clamp(a + z, min_coord, MapMaxX() * TILE_SIZE - 1); pt.y = Clamp(b + z, min_coord, MapMaxY() * TILE_SIZE - 1); return pt; } /* When used for zooming, check area below current coordinates (x,y) * and return the tile of the zoomed out/in position (zoom_x, zoom_y) * when you just want the tile, make x = zoom_x and y = zoom_y */ static Point GetTileFromScreenXY(int x, int y, int zoom_x, int zoom_y) { Window *w; ViewPort *vp; Point pt; if ( (w = FindWindowFromPt(x, y)) != NULL && (vp = IsPtInWindowViewport(w, x, y)) != NULL) return TranslateXYToTileCoord(vp, zoom_x, zoom_y); pt.y = pt.x = -1; return pt; } Point GetTileBelowCursor() { return GetTileFromScreenXY(_cursor.pos.x, _cursor.pos.y, _cursor.pos.x, _cursor.pos.y); } Point GetTileZoomCenterWindow(bool in, Window * w) { int x, y; ViewPort *vp = w->viewport; if (in) { x = ((_cursor.pos.x - vp->left) >> 1) + (vp->width >> 2); y = ((_cursor.pos.y - vp->top) >> 1) + (vp->height >> 2); } else { x = vp->width - (_cursor.pos.x - vp->left); y = vp->height - (_cursor.pos.y - vp->top); } /* Get the tile below the cursor and center on the zoomed-out center */ return GetTileFromScreenXY(_cursor.pos.x, _cursor.pos.y, x + vp->left, y + vp->top); } /** * Update the status of the zoom-buttons according to the zoom-level * of the viewport. This will update their status and invalidate accordingly * @param w Window pointer to the window that has the zoom buttons * @param vp pointer to the viewport whose zoom-level the buttons represent * @param widget_zoom_in widget index for window with zoom-in button * @param widget_zoom_out widget index for window with zoom-out button */ void HandleZoomMessage(Window *w, const ViewPort *vp, byte widget_zoom_in, byte widget_zoom_out) { w->SetWidgetDisabledState(widget_zoom_in, vp->zoom <= _settings_client.gui.zoom_min); w->SetWidgetDirty(widget_zoom_in); w->SetWidgetDisabledState(widget_zoom_out, vp->zoom >= _settings_client.gui.zoom_max); w->SetWidgetDirty(widget_zoom_out); } /** * Schedules a tile sprite for drawing. * * @param image the image to draw. * @param pal the provided palette. * @param x position x (world coordinates) of the sprite. * @param y position y (world coordinates) of the sprite. * @param z position z (world coordinates) of the sprite. * @param sub Only draw a part of the sprite. * @param extra_offs_x Pixel X offset for the sprite position. * @param extra_offs_y Pixel Y offset for the sprite position. */ static void AddTileSpriteToDraw(SpriteID image, PaletteID pal, int32 x, int32 y, int z, const SubSprite *sub = NULL, int extra_offs_x = 0, int extra_offs_y = 0) { assert((image & SPRITE_MASK) < MAX_SPRITES); TileSpriteToDraw *ts = _vd.tile_sprites_to_draw.Append(); ts->image = image; ts->pal = pal; ts->sub = sub; Point pt = RemapCoords(x, y, z); ts->x = pt.x + extra_offs_x; ts->y = pt.y + extra_offs_y; } /** * Adds a child sprite to the active foundation. * * The pixel offset of the sprite relative to the ParentSprite is the sum of the offset passed to OffsetGroundSprite() and extra_offs_?. * * @param image the image to draw. * @param pal the provided palette. * @param sub Only draw a part of the sprite. * @param foundation_part Foundation part. * @param extra_offs_x Pixel X offset for the sprite position. * @param extra_offs_y Pixel Y offset for the sprite position. */ static void AddChildSpriteToFoundation(SpriteID image, PaletteID pal, const SubSprite *sub, FoundationPart foundation_part, int extra_offs_x, int extra_offs_y) { assert(IsInsideMM(foundation_part, 0, FOUNDATION_PART_END)); assert(_vd.foundation[foundation_part] != -1); Point offs = _vd.foundation_offset[foundation_part]; /* Change the active ChildSprite list to the one of the foundation */ int *old_child = _vd.last_child; _vd.last_child = _vd.last_foundation_child[foundation_part]; AddChildSpriteScreen(image, pal, offs.x + extra_offs_x, offs.y + extra_offs_y, false, sub, false); /* Switch back to last ChildSprite list */ _vd.last_child = old_child; } /** * Draws a ground sprite at a specific world-coordinate relative to the current tile. * If the current tile is drawn on top of a foundation the sprite is added as child sprite to the "foundation"-ParentSprite. * * @param image the image to draw. * @param pal the provided palette. * @param x position x (world coordinates) of the sprite relative to current tile. * @param y position y (world coordinates) of the sprite relative to current tile. * @param z position z (world coordinates) of the sprite relative to current tile. * @param sub Only draw a part of the sprite. * @param extra_offs_x Pixel X offset for the sprite position. * @param extra_offs_y Pixel Y offset for the sprite position. */ void DrawGroundSpriteAt(SpriteID image, PaletteID pal, int32 x, int32 y, int z, const SubSprite *sub, int extra_offs_x, int extra_offs_y) { /* Switch to first foundation part, if no foundation was drawn */ if (_vd.foundation_part == FOUNDATION_PART_NONE) _vd.foundation_part = FOUNDATION_PART_NORMAL; if (_vd.foundation[_vd.foundation_part] != -1) { Point pt = RemapCoords(x, y, z); AddChildSpriteToFoundation(image, pal, sub, _vd.foundation_part, pt.x + extra_offs_x * ZOOM_LVL_BASE, pt.y + extra_offs_y * ZOOM_LVL_BASE); } else { AddTileSpriteToDraw(image, pal, _cur_ti->x + x, _cur_ti->y + y, _cur_ti->z + z, sub, extra_offs_x * ZOOM_LVL_BASE, extra_offs_y * ZOOM_LVL_BASE); } } /** * Draws a ground sprite for the current tile. * If the current tile is drawn on top of a foundation the sprite is added as child sprite to the "foundation"-ParentSprite. * * @param image the image to draw. * @param pal the provided palette. * @param sub Only draw a part of the sprite. * @param extra_offs_x Pixel X offset for the sprite position. * @param extra_offs_y Pixel Y offset for the sprite position. */ void DrawGroundSprite(SpriteID image, PaletteID pal, const SubSprite *sub, int extra_offs_x, int extra_offs_y) { DrawGroundSpriteAt(image, pal, 0, 0, 0, sub, extra_offs_x, extra_offs_y); } /** * Called when a foundation has been drawn for the current tile. * Successive ground sprites for the current tile will be drawn as child sprites of the "foundation"-ParentSprite, not as TileSprites. * * @param x sprite x-offset (screen coordinates) of ground sprites relative to the "foundation"-ParentSprite. * @param y sprite y-offset (screen coordinates) of ground sprites relative to the "foundation"-ParentSprite. */ void OffsetGroundSprite(int x, int y) { /* Switch to next foundation part */ switch (_vd.foundation_part) { case FOUNDATION_PART_NONE: _vd.foundation_part = FOUNDATION_PART_NORMAL; break; case FOUNDATION_PART_NORMAL: _vd.foundation_part = FOUNDATION_PART_HALFTILE; break; default: NOT_REACHED(); } /* _vd.last_child == NULL if foundation sprite was clipped by the viewport bounds */ if (_vd.last_child != NULL) _vd.foundation[_vd.foundation_part] = _vd.parent_sprites_to_draw.Length() - 1; _vd.foundation_offset[_vd.foundation_part].x = x * ZOOM_LVL_BASE; _vd.foundation_offset[_vd.foundation_part].y = y * ZOOM_LVL_BASE; _vd.last_foundation_child[_vd.foundation_part] = _vd.last_child; } /** * Adds a child sprite to a parent sprite. * In contrast to "AddChildSpriteScreen()" the sprite position is in world coordinates * * @param image the image to draw. * @param pal the provided palette. * @param x position x of the sprite. * @param y position y of the sprite. * @param z position z of the sprite. * @param sub Only draw a part of the sprite. */ static void AddCombinedSprite(SpriteID image, PaletteID pal, int x, int y, int z, const SubSprite *sub) { Point pt = RemapCoords(x, y, z); const Sprite *spr = GetSprite(image & SPRITE_MASK, ST_NORMAL); if (pt.x + spr->x_offs >= _vd.dpi.left + _vd.dpi.width || pt.x + spr->x_offs + spr->width <= _vd.dpi.left || pt.y + spr->y_offs >= _vd.dpi.top + _vd.dpi.height || pt.y + spr->y_offs + spr->height <= _vd.dpi.top) return; const ParentSpriteToDraw *pstd = _vd.parent_sprites_to_draw.End() - 1; AddChildSpriteScreen(image, pal, pt.x - pstd->left, pt.y - pstd->top, false, sub, false); } /** * Draw a (transparent) sprite at given coordinates with a given bounding box. * The bounding box extends from (x + bb_offset_x, y + bb_offset_y, z + bb_offset_z) to (x + w - 1, y + h - 1, z + dz - 1), both corners included. * Bounding boxes with bb_offset_x == w or bb_offset_y == h or bb_offset_z == dz are allowed and produce thin slices. * * @note Bounding boxes are normally specified with bb_offset_x = bb_offset_y = bb_offset_z = 0. The extent of the bounding box in negative direction is * defined by the sprite offset in the grf file. * However if modifying the sprite offsets is not suitable (e.g. when using existing graphics), the bounding box can be tuned by bb_offset. * * @pre w >= bb_offset_x, h >= bb_offset_y, dz >= bb_offset_z. Else w, h or dz are ignored. * * @param image the image to combine and draw, * @param pal the provided palette, * @param x position X (world) of the sprite, * @param y position Y (world) of the sprite, * @param w bounding box extent towards positive X (world), * @param h bounding box extent towards positive Y (world), * @param dz bounding box extent towards positive Z (world), * @param z position Z (world) of the sprite, * @param transparent if true, switch the palette between the provided palette and the transparent palette, * @param bb_offset_x bounding box extent towards negative X (world), * @param bb_offset_y bounding box extent towards negative Y (world), * @param bb_offset_z bounding box extent towards negative Z (world) * @param sub Only draw a part of the sprite. */ void AddSortableSpriteToDraw(SpriteID image, PaletteID pal, int x, int y, int w, int h, int dz, int z, bool transparent, int bb_offset_x, int bb_offset_y, int bb_offset_z, const SubSprite *sub) { int32 left, right, top, bottom; assert((image & SPRITE_MASK) < MAX_SPRITES); /* make the sprites transparent with the right palette */ if (transparent) { SetBit(image, PALETTE_MODIFIER_TRANSPARENT); pal = PALETTE_TO_TRANSPARENT; } if (_vd.combine_sprites == SPRITE_COMBINE_ACTIVE) { AddCombinedSprite(image, pal, x, y, z, sub); return; } _vd.last_child = NULL; Point pt = RemapCoords(x, y, z); int tmp_left, tmp_top, tmp_x = pt.x, tmp_y = pt.y; /* Compute screen extents of sprite */ if (image == SPR_EMPTY_BOUNDING_BOX) { left = tmp_left = RemapCoords(x + w , y + bb_offset_y, z + bb_offset_z).x; right = RemapCoords(x + bb_offset_x, y + h , z + bb_offset_z).x + 1; top = tmp_top = RemapCoords(x + bb_offset_x, y + bb_offset_y, z + dz ).y; bottom = RemapCoords(x + w , y + h , z + bb_offset_z).y + 1; } else { const Sprite *spr = GetSprite(image & SPRITE_MASK, ST_NORMAL); left = tmp_left = (pt.x += spr->x_offs); right = (pt.x + spr->width ); top = tmp_top = (pt.y += spr->y_offs); bottom = (pt.y + spr->height); } if (_draw_bounding_boxes && (image != SPR_EMPTY_BOUNDING_BOX)) { /* Compute maximal extents of sprite and its bounding box */ left = min(left , RemapCoords(x + w , y + bb_offset_y, z + bb_offset_z).x); right = max(right , RemapCoords(x + bb_offset_x, y + h , z + bb_offset_z).x + 1); top = min(top , RemapCoords(x + bb_offset_x, y + bb_offset_y, z + dz ).y); bottom = max(bottom, RemapCoords(x + w , y + h , z + bb_offset_z).y + 1); } /* Do not add the sprite to the viewport, if it is outside */ if (left >= _vd.dpi.left + _vd.dpi.width || right <= _vd.dpi.left || top >= _vd.dpi.top + _vd.dpi.height || bottom <= _vd.dpi.top) { return; } ParentSpriteToDraw *ps = _vd.parent_sprites_to_draw.Append(); ps->x = tmp_x; ps->y = tmp_y; ps->left = tmp_left; ps->top = tmp_top; ps->image = image; ps->pal = pal; ps->sub = sub; ps->xmin = x + bb_offset_x; ps->xmax = x + max(bb_offset_x, w) - 1; ps->ymin = y + bb_offset_y; ps->ymax = y + max(bb_offset_y, h) - 1; ps->zmin = z + bb_offset_z; ps->zmax = z + max(bb_offset_z, dz) - 1; ps->comparison_done = false; ps->first_child = -1; _vd.last_child = &ps->first_child; if (_vd.combine_sprites == SPRITE_COMBINE_PENDING) _vd.combine_sprites = SPRITE_COMBINE_ACTIVE; } /** * Starts a block of sprites, which are "combined" into a single bounding box. * * Subsequent calls to #AddSortableSpriteToDraw will be drawn into the same bounding box. * That is: The first sprite that is not clipped by the viewport defines the bounding box, and * the following sprites will be child sprites to that one. * * That implies: * - The drawing order is definite. No other sprites will be sorted between those of the block. * - You have to provide a valid bounding box for all sprites, * as you won't know which one is the first non-clipped one. * Preferable you use the same bounding box for all. * - You cannot use #AddChildSpriteScreen inside the block, as its result will be indefinite. * * The block is terminated by #EndSpriteCombine. * * You cannot nest "combined" blocks. */ void StartSpriteCombine() { assert(_vd.combine_sprites == SPRITE_COMBINE_NONE); _vd.combine_sprites = SPRITE_COMBINE_PENDING; } /** * Terminates a block of sprites started by #StartSpriteCombine. * Take a look there for details. */ void EndSpriteCombine() { assert(_vd.combine_sprites != SPRITE_COMBINE_NONE); _vd.combine_sprites = SPRITE_COMBINE_NONE; } /** * Check if the parameter "check" is inside the interval between * begin and end, including both begin and end. * @note Whether \c begin or \c end is the biggest does not matter. * This method will account for that. * @param begin The begin of the interval. * @param end The end of the interval. * @param check The value to check. */ static bool IsInRangeInclusive(int begin, int end, int check) { if (begin > end) Swap(begin, end); return begin <= check && check <= end; } /** * Checks whether a point is inside the selected a diagonal rectangle given by _thd.size and _thd.pos * @param x The x coordinate of the point to be checked. * @param y The y coordinate of the point to be checked. * @return True if the point is inside the rectangle, else false. */ bool IsInsideRotatedRectangle(int x, int y) { int dist_a = (_thd.size.x + _thd.size.y); // Rotated coordinate system for selected rectangle. int dist_b = (_thd.size.x - _thd.size.y); // We don't have to divide by 2. It's all relative! int a = ((x - _thd.pos.x) + (y - _thd.pos.y)); // Rotated coordinate system for the point under scrutiny. int b = ((x - _thd.pos.x) - (y - _thd.pos.y)); /* Check if a and b are between 0 and dist_a or dist_b respectively. */ return IsInRangeInclusive(dist_a, 0, a) && IsInRangeInclusive(dist_b, 0, b); } /** * Add a child sprite to a parent sprite. * * @param image the image to draw. * @param pal the provided palette. * @param x sprite x-offset (screen coordinates) relative to parent sprite. * @param y sprite y-offset (screen coordinates) relative to parent sprite. * @param transparent if true, switch the palette between the provided palette and the transparent palette, * @param sub Only draw a part of the sprite. */ void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent, const SubSprite *sub, bool scale) { assert((image & SPRITE_MASK) < MAX_SPRITES); /* If the ParentSprite was clipped by the viewport bounds, do not draw the ChildSprites either */ if (_vd.last_child == NULL) return; /* make the sprites transparent with the right palette */ if (transparent) { SetBit(image, PALETTE_MODIFIER_TRANSPARENT); pal = PALETTE_TO_TRANSPARENT; } *_vd.last_child = _vd.child_screen_sprites_to_draw.Length(); ChildScreenSpriteToDraw *cs = _vd.child_screen_sprites_to_draw.Append(); cs->image = image; cs->pal = pal; cs->sub = sub; cs->x = scale ? x * ZOOM_LVL_BASE : x; cs->y = scale ? y * ZOOM_LVL_BASE : y; cs->next = -1; /* Append the sprite to the active ChildSprite list. * If the active ParentSprite is a foundation, update last_foundation_child as well. * Note: ChildSprites of foundations are NOT sequential in the vector, as selection sprites are added at last. */ if (_vd.last_foundation_child[0] == _vd.last_child) _vd.last_foundation_child[0] = &cs->next; if (_vd.last_foundation_child[1] == _vd.last_child) _vd.last_foundation_child[1] = &cs->next; _vd.last_child = &cs->next; } static void AddStringToDraw(int x, int y, StringID string, uint64 params_1, uint64 params_2, Colours colour, uint16 width) { assert(width != 0); StringSpriteToDraw *ss = _vd.string_sprites_to_draw.Append(); ss->string = string; ss->x = x; ss->y = y; ss->params[0] = params_1; ss->params[1] = params_2; ss->width = width; ss->colour = colour; } /** * Draws sprites between ground sprite and everything above. * * The sprite is either drawn as TileSprite or as ChildSprite of the active foundation. * * @param image the image to draw. * @param pal the provided palette. * @param ti TileInfo Tile that is being drawn * @param z_offset Z offset relative to the groundsprite. Only used for the sprite position, not for sprite sorting. * @param foundation_part Foundation part the sprite belongs to. */ static void DrawSelectionSprite(SpriteID image, PaletteID pal, const TileInfo *ti, int z_offset, FoundationPart foundation_part) { /* FIXME: This is not totally valid for some autorail highlights that extend over the edges of the tile. */ if (_vd.foundation[foundation_part] == -1) { /* draw on real ground */ AddTileSpriteToDraw(image, pal, ti->x, ti->y, ti->z + z_offset); } else { /* draw on top of foundation */ AddChildSpriteToFoundation(image, pal, NULL, foundation_part, 0, -z_offset * ZOOM_LVL_BASE); } } /** * Draws a selection rectangle on a tile. * * @param ti TileInfo Tile that is being drawn * @param pal Palette to apply. */ static void DrawTileSelectionRect(const TileInfo *ti, PaletteID pal) { if (!IsValidTile(ti->tile)) return; SpriteID sel; if (IsHalftileSlope(ti->tileh)) { Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh); SpriteID sel2 = SPR_HALFTILE_SELECTION_FLAT + halftile_corner; DrawSelectionSprite(sel2, pal, ti, 7 + TILE_HEIGHT, FOUNDATION_PART_HALFTILE); Corner opposite_corner = OppositeCorner(halftile_corner); if (IsSteepSlope(ti->tileh)) { sel = SPR_HALFTILE_SELECTION_DOWN; } else { sel = ((ti->tileh & SlopeWithOneCornerRaised(opposite_corner)) != 0 ? SPR_HALFTILE_SELECTION_UP : SPR_HALFTILE_SELECTION_FLAT); } sel += opposite_corner; } else { sel = SPR_SELECT_TILE + SlopeToSpriteOffset(ti->tileh); } DrawSelectionSprite(sel, pal, ti, 7, FOUNDATION_PART_NORMAL); } static bool IsPartOfAutoLine(int px, int py) { px -= _thd.selstart.x; py -= _thd.selstart.y; if ((_thd.drawstyle & HT_DRAG_MASK) != HT_LINE) return false; switch (_thd.drawstyle & HT_DIR_MASK) { case HT_DIR_X: return py == 0; // x direction case HT_DIR_Y: return px == 0; // y direction case HT_DIR_HU: return px == -py || px == -py - 16; // horizontal upper case HT_DIR_HL: return px == -py || px == -py + 16; // horizontal lower case HT_DIR_VL: return px == py || px == py + 16; // vertical left case HT_DIR_VR: return px == py || px == py - 16; // vertical right default: NOT_REACHED(); } } /* [direction][side] */ static const HighLightStyle _autorail_type[6][2] = { { HT_DIR_X, HT_DIR_X }, { HT_DIR_Y, HT_DIR_Y }, { HT_DIR_HU, HT_DIR_HL }, { HT_DIR_HL, HT_DIR_HU }, { HT_DIR_VL, HT_DIR_VR }, { HT_DIR_VR, HT_DIR_VL } }; #include "table/autorail.h" /** * Draws autorail highlights. * * @param *ti TileInfo Tile that is being drawn * @param autorail_type Offset into _AutorailTilehSprite[][] */ static void DrawAutorailSelection(const TileInfo *ti, uint autorail_type) { SpriteID image; PaletteID pal; int offset; FoundationPart foundation_part = FOUNDATION_PART_NORMAL; Slope autorail_tileh = RemoveHalftileSlope(ti->tileh); if (IsHalftileSlope(ti->tileh)) { static const uint _lower_rail[4] = { 5U, 2U, 4U, 3U }; Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh); if (autorail_type != _lower_rail[halftile_corner]) { foundation_part = FOUNDATION_PART_HALFTILE; /* Here we draw the highlights of the "three-corners-raised"-slope. That looks ok to me. */ autorail_tileh = SlopeWithThreeCornersRaised(OppositeCorner(halftile_corner)); } } offset = _AutorailTilehSprite[autorail_tileh][autorail_type]; if (offset >= 0) { image = SPR_AUTORAIL_BASE + offset; pal = PAL_NONE; } else { image = SPR_AUTORAIL_BASE - offset; pal = PALETTE_SEL_TILE_RED; } DrawSelectionSprite(image, _thd.make_square_red ? PALETTE_SEL_TILE_RED : pal, ti, 7, foundation_part); } /** * Checks if the specified tile is selected and if so draws selection using correct selectionstyle. * @param *ti TileInfo Tile that is being drawn */ static void DrawTileSelection(const TileInfo *ti) { /* Draw a red error square? */ bool is_redsq = _thd.redsq == ti->tile; if (is_redsq) DrawTileSelectionRect(ti, PALETTE_TILE_RED_PULSATING); /* No tile selection active? */ if ((_thd.drawstyle & HT_DRAG_MASK) == HT_NONE) return; if (_thd.diagonal) { // We're drawing a 45 degrees rotated (diagonal) rectangle if (IsInsideRotatedRectangle((int)ti->x, (int)ti->y)) goto draw_inner; return; } /* Inside the inner area? */ if (IsInsideBS(ti->x, _thd.pos.x, _thd.size.x) && IsInsideBS(ti->y, _thd.pos.y, _thd.size.y)) { draw_inner: if (_thd.drawstyle & HT_RECT) { if (!is_redsq) DrawTileSelectionRect(ti, _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE); } else if (_thd.drawstyle & HT_POINT) { /* Figure out the Z coordinate for the single dot. */ int z = 0; FoundationPart foundation_part = FOUNDATION_PART_NORMAL; if (ti->tileh & SLOPE_N) { z += TILE_HEIGHT; if (RemoveHalftileSlope(ti->tileh) == SLOPE_STEEP_N) z += TILE_HEIGHT; } if (IsHalftileSlope(ti->tileh)) { Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh); if ((halftile_corner == CORNER_W) || (halftile_corner == CORNER_E)) z += TILE_HEIGHT; if (halftile_corner != CORNER_S) { foundation_part = FOUNDATION_PART_HALFTILE; if (IsSteepSlope(ti->tileh)) z -= TILE_HEIGHT; } } DrawSelectionSprite(_cur_dpi->zoom <= ZOOM_LVL_DETAIL ? SPR_DOT : SPR_DOT_SMALL, PAL_NONE, ti, z, foundation_part); } else if (_thd.drawstyle & HT_RAIL) { /* autorail highlight piece under cursor */ HighLightStyle type = _thd.drawstyle & HT_DIR_MASK; assert(type < HT_DIR_END); DrawAutorailSelection(ti, _autorail_type[type][0]); } else if (IsPartOfAutoLine(ti->x, ti->y)) { /* autorail highlighting long line */ HighLightStyle dir = _thd.drawstyle & HT_DIR_MASK; uint side; if (dir == HT_DIR_X || dir == HT_DIR_Y) { side = 0; } else { TileIndex start = TileVirtXY(_thd.selstart.x, _thd.selstart.y); side = Delta(Delta(TileX(start), TileX(ti->tile)), Delta(TileY(start), TileY(ti->tile))); } DrawAutorailSelection(ti, _autorail_type[dir][side]); } return; } /* Check if it's inside the outer area? */ if (!is_redsq && _thd.outersize.x > 0 && IsInsideBS(ti->x, _thd.pos.x + _thd.offs.x, _thd.size.x + _thd.outersize.x) && IsInsideBS(ti->y, _thd.pos.y + _thd.offs.y, _thd.size.y + _thd.outersize.y)) { /* Draw a blue rect. */ DrawTileSelectionRect(ti, PALETTE_SEL_TILE_BLUE); return; } } static void ViewportAddLandscape() { int x, y, width, height; TileInfo ti; bool direction; _cur_ti = &ti; /* Transform into tile coordinates and round to closest full tile */ x = ((_vd.dpi.top >> (1 + ZOOM_LVL_SHIFT)) - (_vd.dpi.left >> (2 + ZOOM_LVL_SHIFT))) & ~TILE_UNIT_MASK; y = ((_vd.dpi.top >> (1 + ZOOM_LVL_SHIFT)) + (_vd.dpi.left >> (2 + ZOOM_LVL_SHIFT)) - TILE_SIZE) & ~TILE_UNIT_MASK; /* determine size of area */ { Point pt = RemapCoords(x, y, 241); width = (_vd.dpi.left + _vd.dpi.width - pt.x + 96 * ZOOM_LVL_BASE - 1) >> (6 + ZOOM_LVL_SHIFT); height = (_vd.dpi.top + _vd.dpi.height - pt.y) >> (5 + ZOOM_LVL_SHIFT) << 1; } assert(width > 0); assert(height > 0); direction = false; do { int width_cur = width; uint x_cur = x; uint y_cur = y; do { TileType tt = MP_VOID; ti.x = x_cur; ti.y = y_cur; ti.z = 0; ti.tileh = SLOPE_FLAT; ti.tile = INVALID_TILE; if (x_cur < MapMaxX() * TILE_SIZE && y_cur < MapMaxY() * TILE_SIZE) { TileIndex tile = TileVirtXY(x_cur, y_cur); if (!_settings_game.construction.freeform_edges || (TileX(tile) != 0 && TileY(tile) != 0)) { if (x_cur == ((int)MapMaxX() - 1) * TILE_SIZE || y_cur == ((int)MapMaxY() - 1) * TILE_SIZE) { uint maxh = max(TileHeight(tile), 1); for (uint h = 0; h < maxh; h++) { AddTileSpriteToDraw(SPR_SHADOW_CELL, PAL_NONE, ti.x, ti.y, h * TILE_HEIGHT); } } ti.tile = tile; ti.tileh = GetTilePixelSlope(tile, &ti.z); tt = GetTileType(tile); } } _vd.foundation_part = FOUNDATION_PART_NONE; _vd.foundation[0] = -1; _vd.foundation[1] = -1; _vd.last_foundation_child[0] = NULL; _vd.last_foundation_child[1] = NULL; _tile_type_procs[tt]->draw_tile_proc(&ti); if ((x_cur == (int)MapMaxX() * TILE_SIZE && IsInsideMM(y_cur, 0, MapMaxY() * TILE_SIZE + 1)) || (y_cur == (int)MapMaxY() * TILE_SIZE && IsInsideMM(x_cur, 0, MapMaxX() * TILE_SIZE + 1))) { TileIndex tile = TileVirtXY(x_cur, y_cur); ti.tile = tile; ti.tileh = GetTilePixelSlope(tile, &ti.z); tt = GetTileType(tile); } if (ti.tile != INVALID_TILE) DrawTileSelection(&ti); y_cur += 0x10; x_cur -= 0x10; } while (--width_cur); if ((direction ^= 1) != 0) { y += 0x10; } else { x += 0x10; } } while (--height); } /** * Add a string to draw in the viewport * @param dpi current viewport area * @param small_from Zoomlevel from when the small font should be used * @param sign sign position and dimension * @param string_normal String for normal and 2x zoom level * @param string_small String for 4x and 8x zoom level * @param string_small_shadow Shadow string for 4x and 8x zoom level; or #STR_NULL if no shadow * @param colour colour of the sign background; or INVALID_COLOUR if transparent */ void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, uint64 params_1, uint64 params_2, Colours colour) { bool small = dpi->zoom >= small_from; int left = dpi->left; int top = dpi->top; int right = left + dpi->width; int bottom = top + dpi->height; int sign_height = ScaleByZoom(VPSM_TOP + FONT_HEIGHT_NORMAL + VPSM_BOTTOM, dpi->zoom); int sign_half_width = ScaleByZoom((small ? sign->width_small : sign->width_normal) / 2, dpi->zoom); if (bottom < sign->top || top > sign->top + sign_height || right < sign->center - sign_half_width || left > sign->center + sign_half_width) { return; } if (!small) { AddStringToDraw(sign->center - sign_half_width, sign->top, string_normal, params_1, params_2, colour, sign->width_normal); } else { int shadow_offset = 0; if (string_small_shadow != STR_NULL) { shadow_offset = 4; AddStringToDraw(sign->center - sign_half_width + shadow_offset, sign->top, string_small_shadow, params_1, params_2, INVALID_COLOUR, sign->width_small); } AddStringToDraw(sign->center - sign_half_width, sign->top - shadow_offset, string_small, params_1, params_2, colour, sign->width_small | 0x8000); } } static void ViewportAddTownNames(DrawPixelInfo *dpi) { if (!HasBit(_display_opt, DO_SHOW_TOWN_NAMES) || _game_mode == GM_MENU) return; const Town *t; FOR_ALL_TOWNS(t) { ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &t->cache.sign, _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN, STR_VIEWPORT_TOWN_TINY_WHITE, STR_VIEWPORT_TOWN_TINY_BLACK, t->index, t->cache.population); } } static void ViewportAddStationNames(DrawPixelInfo *dpi) { if (!(HasBit(_display_opt, DO_SHOW_STATION_NAMES) || HasBit(_display_opt, DO_SHOW_WAYPOINT_NAMES)) || _game_mode == GM_MENU) return; const BaseStation *st; FOR_ALL_BASE_STATIONS(st) { /* Check whether the base station is a station or a waypoint */ bool is_station = Station::IsExpected(st); /* Don't draw if the display options are disabled */ if (!HasBit(_display_opt, is_station ? DO_SHOW_STATION_NAMES : DO_SHOW_WAYPOINT_NAMES)) continue; /* Don't draw if station is owned by another company and competitor station names are hidden. Stations owned by none are never ignored. */ if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS) && _local_company != st->owner && st->owner != OWNER_NONE) continue; ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &st->sign, is_station ? STR_VIEWPORT_STATION : STR_VIEWPORT_WAYPOINT, (is_station ? STR_VIEWPORT_STATION : STR_VIEWPORT_WAYPOINT) + 1, STR_NULL, st->index, st->facilities, (st->owner == OWNER_NONE || !st->IsInUse()) ? COLOUR_GREY : _company_colours[st->owner]); } } static void ViewportAddSigns(DrawPixelInfo *dpi) { /* Signs are turned off or are invisible */ if (!HasBit(_display_opt, DO_SHOW_SIGNS) || IsInvisibilitySet(TO_SIGNS)) return; const Sign *si; FOR_ALL_SIGNS(si) { /* Don't draw if sign is owned by another company and competitor signs should be hidden. * Note: It is intentional that also signs owned by OWNER_NONE are hidden. Bankrupt * companies can leave OWNER_NONE signs after them. */ if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS) && _local_company != si->owner && si->owner != OWNER_DEITY) continue; ViewportAddString(dpi, ZOOM_LVL_OUT_16X, &si->sign, STR_WHITE_SIGN, (IsTransparencySet(TO_SIGNS) || si->owner == OWNER_DEITY) ? STR_VIEWPORT_SIGN_SMALL_WHITE : STR_VIEWPORT_SIGN_SMALL_BLACK, STR_NULL, si->index, 0, (si->owner == OWNER_NONE) ? COLOUR_GREY : (si->owner == OWNER_DEITY ? INVALID_COLOUR : _company_colours[si->owner])); } } /** * Update the position of the viewport sign. * @param center the (preferred) center of the viewport sign * @param top the new top of the sign * @param str the string to show in the sign */ void ViewportSign::UpdatePosition(int center, int top, StringID str) { if (this->width_normal != 0) this->MarkDirty(); this->top = top; char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); this->width_normal = VPSM_LEFT + Align(GetStringBoundingBox(buffer).width, 2) + VPSM_RIGHT; this->center = center; /* zoomed out version */ this->width_small = VPSM_LEFT + Align(GetStringBoundingBox(buffer, FS_SMALL).width, 2) + VPSM_RIGHT; this->MarkDirty(); } /** * Mark the sign dirty in all viewports. * @param maxzoom Maximum %ZoomLevel at which the text is visible. * * @ingroup dirty */ void ViewportSign::MarkDirty(ZoomLevel maxzoom) const { Rect zoomlevels[ZOOM_LVL_COUNT]; for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) { /* FIXME: This doesn't switch to width_small when appropriate. */ zoomlevels[zoom].left = this->center - ScaleByZoom(this->width_normal / 2 + 1, zoom); zoomlevels[zoom].top = this->top - ScaleByZoom(1, zoom); zoomlevels[zoom].right = this->center + ScaleByZoom(this->width_normal / 2 + 1, zoom); zoomlevels[zoom].bottom = this->top + ScaleByZoom(VPSM_TOP + FONT_HEIGHT_NORMAL + VPSM_BOTTOM + 1, zoom); } Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { ViewPort *vp = w->viewport; if (vp != NULL && vp->zoom <= maxzoom) { assert(vp->width != 0); Rect &zl = zoomlevels[vp->zoom]; MarkViewportDirty(vp, zl.left, zl.top, zl.right, zl.bottom); } } } static void ViewportDrawTileSprites(const TileSpriteToDrawVector *tstdv) { const TileSpriteToDraw *tsend = tstdv->End(); for (const TileSpriteToDraw *ts = tstdv->Begin(); ts != tsend; ++ts) { DrawSpriteViewport(ts->image, ts->pal, ts->x, ts->y, ts->sub); } } /** Sort parent sprites pointer array */ static void ViewportSortParentSprites(ParentSpriteToSortVector *psdv) { ParentSpriteToDraw **psdvend = psdv->End(); ParentSpriteToDraw **psd = psdv->Begin(); while (psd != psdvend) { ParentSpriteToDraw *ps = *psd; if (ps->comparison_done) { psd++; continue; } ps->comparison_done = true; for (ParentSpriteToDraw **psd2 = psd + 1; psd2 != psdvend; psd2++) { ParentSpriteToDraw *ps2 = *psd2; if (ps2->comparison_done) continue; /* Decide which comparator to use, based on whether the bounding * boxes overlap */ if (ps->xmax >= ps2->xmin && ps->xmin <= ps2->xmax && // overlap in X? ps->ymax >= ps2->ymin && ps->ymin <= ps2->ymax && // overlap in Y? ps->zmax >= ps2->zmin && ps->zmin <= ps2->zmax) { // overlap in Z? /* Use X+Y+Z as the sorting order, so sprites closer to the bottom of * the screen and with higher Z elevation, are drawn in front. * Here X,Y,Z are the coordinates of the "center of mass" of the sprite, * i.e. X=(left+right)/2, etc. * However, since we only care about order, don't actually divide / 2 */ if (ps->xmin + ps->xmax + ps->ymin + ps->ymax + ps->zmin + ps->zmax <= ps2->xmin + ps2->xmax + ps2->ymin + ps2->ymax + ps2->zmin + ps2->zmax) { continue; } } else { /* We only change the order, if it is definite. * I.e. every single order of X, Y, Z says ps2 is behind ps or they overlap. * That is: If one partial order says ps behind ps2, do not change the order. */ if (ps->xmax < ps2->xmin || ps->ymax < ps2->ymin || ps->zmax < ps2->zmin) { continue; } } /* Move ps2 in front of ps */ ParentSpriteToDraw *temp = ps2; for (ParentSpriteToDraw **psd3 = psd2; psd3 > psd; psd3--) { *psd3 = *(psd3 - 1); } *psd = temp; } } } static void ViewportDrawParentSprites(const ParentSpriteToSortVector *psd, const ChildScreenSpriteToDrawVector *csstdv) { const ParentSpriteToDraw * const *psd_end = psd->End(); for (const ParentSpriteToDraw * const *it = psd->Begin(); it != psd_end; it++) { const ParentSpriteToDraw *ps = *it; if (ps->image != SPR_EMPTY_BOUNDING_BOX) DrawSpriteViewport(ps->image, ps->pal, ps->x, ps->y, ps->sub); int child_idx = ps->first_child; while (child_idx >= 0) { const ChildScreenSpriteToDraw *cs = csstdv->Get(child_idx); child_idx = cs->next; DrawSpriteViewport(cs->image, cs->pal, ps->left + cs->x, ps->top + cs->y, cs->sub); } } } /** * Draws the bounding boxes of all ParentSprites * @param psd Array of ParentSprites */ static void ViewportDrawBoundingBoxes(const ParentSpriteToSortVector *psd) { const ParentSpriteToDraw * const *psd_end = psd->End(); for (const ParentSpriteToDraw * const *it = psd->Begin(); it != psd_end; it++) { const ParentSpriteToDraw *ps = *it; Point pt1 = RemapCoords(ps->xmax + 1, ps->ymax + 1, ps->zmax + 1); // top front corner Point pt2 = RemapCoords(ps->xmin , ps->ymax + 1, ps->zmax + 1); // top left corner Point pt3 = RemapCoords(ps->xmax + 1, ps->ymin , ps->zmax + 1); // top right corner Point pt4 = RemapCoords(ps->xmax + 1, ps->ymax + 1, ps->zmin ); // bottom front corner DrawBox( pt1.x, pt1.y, pt2.x - pt1.x, pt2.y - pt1.y, pt3.x - pt1.x, pt3.y - pt1.y, pt4.x - pt1.x, pt4.y - pt1.y); } } /** * Draw/colour the blocks that have been redrawn. */ static void ViewportDrawDirtyBlocks() { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); const DrawPixelInfo *dpi = _cur_dpi; void *dst; int right = UnScaleByZoom(dpi->width, dpi->zoom); int bottom = UnScaleByZoom(dpi->height, dpi->zoom); int colour = _string_colourmap[_dirty_block_colour & 0xF]; dst = dpi->dst_ptr; byte bo = UnScaleByZoom(dpi->left + dpi->top, dpi->zoom) & 1; do { for (int i = (bo ^= 1); i < right; i += 2) blitter->SetPixel(dst, i, 0, (uint8)colour); dst = blitter->MoveTo(dst, 0, 1); } while (--bottom > 0); } static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDrawVector *sstdv) { DrawPixelInfo dp; ZoomLevel zoom; _cur_dpi = &dp; dp = *dpi; zoom = dp.zoom; dp.zoom = ZOOM_LVL_NORMAL; dp.left = UnScaleByZoom(dp.left, zoom); dp.top = UnScaleByZoom(dp.top, zoom); dp.width = UnScaleByZoom(dp.width, zoom); dp.height = UnScaleByZoom(dp.height, zoom); const StringSpriteToDraw *ssend = sstdv->End(); for (const StringSpriteToDraw *ss = sstdv->Begin(); ss != ssend; ++ss) { TextColour colour = TC_BLACK; bool small = HasBit(ss->width, 15); int w = GB(ss->width, 0, 15); int x = UnScaleByZoom(ss->x, zoom); int y = UnScaleByZoom(ss->y, zoom); int h = VPSM_TOP + (small ? FONT_HEIGHT_SMALL : FONT_HEIGHT_NORMAL) + VPSM_BOTTOM; SetDParam(0, ss->params[0]); SetDParam(1, ss->params[1]); if (ss->colour != INVALID_COLOUR) { /* Do not draw signs nor station names if they are set invisible */ if (IsInvisibilitySet(TO_SIGNS) && ss->string != STR_WHITE_SIGN) continue; /* if we didn't draw a rectangle, or if transperant building is on, * draw the text in the colour the rectangle would have */ if (IsTransparencySet(TO_SIGNS) && ss->string != STR_WHITE_SIGN) { /* Real colours need the TC_IS_PALETTE_COLOUR flag * otherwise colours from _string_colourmap are assumed. */ colour = (TextColour)_colour_gradient[ss->colour][6] | TC_IS_PALETTE_COLOUR; } /* Draw the rectangle if 'transparent station signs' is off, * or if we are drawing a general text sign (STR_WHITE_SIGN) */ if (!IsTransparencySet(TO_SIGNS) || ss->string == STR_WHITE_SIGN) { DrawFrameRect( x, y, x + w, y + h, ss->colour, IsTransparencySet(TO_SIGNS) ? FR_TRANSPARENT : FR_NONE ); } } DrawString(x + VPSM_LEFT, x + w - 1 - VPSM_RIGHT, y + VPSM_TOP, ss->string, colour, SA_HOR_CENTER); } } void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom) { DrawPixelInfo *old_dpi = _cur_dpi; _cur_dpi = &_vd.dpi; _vd.dpi.zoom = vp->zoom; int mask = ScaleByZoom(-1, vp->zoom); _vd.combine_sprites = SPRITE_COMBINE_NONE; _vd.dpi.width = (right - left) & mask; _vd.dpi.height = (bottom - top) & mask; _vd.dpi.left = left & mask; _vd.dpi.top = top & mask; _vd.dpi.pitch = old_dpi->pitch; _vd.last_child = NULL; int x = UnScaleByZoom(_vd.dpi.left - (vp->virtual_left & mask), vp->zoom) + vp->left; int y = UnScaleByZoom(_vd.dpi.top - (vp->virtual_top & mask), vp->zoom) + vp->top; _vd.dpi.dst_ptr = BlitterFactoryBase::GetCurrentBlitter()->MoveTo(old_dpi->dst_ptr, x - old_dpi->left, y - old_dpi->top); ViewportAddLandscape(); ViewportAddVehicles(&_vd.dpi); ViewportAddTownNames(&_vd.dpi); ViewportAddStationNames(&_vd.dpi); ViewportAddSigns(&_vd.dpi); DrawTextEffects(&_vd.dpi); if (_vd.tile_sprites_to_draw.Length() != 0) ViewportDrawTileSprites(&_vd.tile_sprites_to_draw); ParentSpriteToDraw *psd_end = _vd.parent_sprites_to_draw.End(); for (ParentSpriteToDraw *it = _vd.parent_sprites_to_draw.Begin(); it != psd_end; it++) { *_vd.parent_sprites_to_sort.Append() = it; } ViewportSortParentSprites(&_vd.parent_sprites_to_sort); ViewportDrawParentSprites(&_vd.parent_sprites_to_sort, &_vd.child_screen_sprites_to_draw); if (_draw_bounding_boxes) ViewportDrawBoundingBoxes(&_vd.parent_sprites_to_sort); if (_draw_dirty_blocks) ViewportDrawDirtyBlocks(); if (_vd.string_sprites_to_draw.Length() != 0) ViewportDrawStrings(&_vd.dpi, &_vd.string_sprites_to_draw); _cur_dpi = old_dpi; _vd.string_sprites_to_draw.Clear(); _vd.tile_sprites_to_draw.Clear(); _vd.parent_sprites_to_draw.Clear(); _vd.parent_sprites_to_sort.Clear(); _vd.child_screen_sprites_to_draw.Clear(); } /** * Make sure we don't draw a too big area at a time. * If we do, the sprite memory will overflow. */ static void ViewportDrawChk(const ViewPort *vp, int left, int top, int right, int bottom) { if (ScaleByZoom(bottom - top, vp->zoom) * ScaleByZoom(right - left, vp->zoom) > 180000 * ZOOM_LVL_BASE * ZOOM_LVL_BASE) { if ((bottom - top) > (right - left)) { int t = (top + bottom) >> 1; ViewportDrawChk(vp, left, top, right, t); ViewportDrawChk(vp, left, t, right, bottom); } else { int t = (left + right) >> 1; ViewportDrawChk(vp, left, top, t, bottom); ViewportDrawChk(vp, t, top, right, bottom); } } else { ViewportDoDraw(vp, ScaleByZoom(left - vp->left, vp->zoom) + vp->virtual_left, ScaleByZoom(top - vp->top, vp->zoom) + vp->virtual_top, ScaleByZoom(right - vp->left, vp->zoom) + vp->virtual_left, ScaleByZoom(bottom - vp->top, vp->zoom) + vp->virtual_top ); } } static inline void ViewportDraw(const ViewPort *vp, int left, int top, int right, int bottom) { if (right <= vp->left || bottom <= vp->top) return; if (left >= vp->left + vp->width) return; if (left < vp->left) left = vp->left; if (right > vp->left + vp->width) right = vp->left + vp->width; if (top >= vp->top + vp->height) return; if (top < vp->top) top = vp->top; if (bottom > vp->top + vp->height) bottom = vp->top + vp->height; ViewportDrawChk(vp, left, top, right, bottom); } /** * Draw the viewport of this window. */ void Window::DrawViewport() const { DrawPixelInfo *dpi = _cur_dpi; dpi->left += this->left; dpi->top += this->top; ViewportDraw(this->viewport, dpi->left, dpi->top, dpi->left + dpi->width, dpi->top + dpi->height); dpi->left -= this->left; dpi->top -= this->top; } static inline void ClampViewportToMap(const ViewPort *vp, int &x, int &y) { /* Centre of the viewport is hot spot */ x += vp->virtual_width / 2; y += vp->virtual_height / 2; /* Convert viewport coordinates to map coordinates * Calculation is scaled by 4 to avoid rounding errors */ int vx = -x + y * 2; int vy = x + y * 2; /* clamp to size of map */ vx = Clamp(vx, 0, MapMaxX() * TILE_SIZE * 4 * ZOOM_LVL_BASE); vy = Clamp(vy, 0, MapMaxY() * TILE_SIZE * 4 * ZOOM_LVL_BASE); /* Convert map coordinates to viewport coordinates */ x = (-vx + vy) / 2; y = ( vx + vy) / 4; /* Remove centering */ x -= vp->virtual_width / 2; y -= vp->virtual_height / 2; } /** * Update the viewport position being displayed. * @param w %Window owning the viewport. */ void UpdateViewportPosition(Window *w) { const ViewPort *vp = w->viewport; if (w->viewport->follow_vehicle != INVALID_VEHICLE) { const Vehicle *veh = Vehicle::Get(w->viewport->follow_vehicle); Point pt = MapXYZToViewport(vp, veh->x_pos, veh->y_pos, veh->z_pos); w->viewport->scrollpos_x = pt.x; w->viewport->scrollpos_y = pt.y; SetViewportPosition(w, pt.x, pt.y); } else { /* Ensure the destination location is within the map */ ClampViewportToMap(vp, w->viewport->dest_scrollpos_x, w->viewport->dest_scrollpos_y); int delta_x = w->viewport->dest_scrollpos_x - w->viewport->scrollpos_x; int delta_y = w->viewport->dest_scrollpos_y - w->viewport->scrollpos_y; if (delta_x != 0 || delta_y != 0) { if (_settings_client.gui.smooth_scroll) { int max_scroll = ScaleByMapSize1D(512 * ZOOM_LVL_BASE); /* Not at our desired position yet... */ w->viewport->scrollpos_x += Clamp(delta_x / 4, -max_scroll, max_scroll); w->viewport->scrollpos_y += Clamp(delta_y / 4, -max_scroll, max_scroll); } else { w->viewport->scrollpos_x = w->viewport->dest_scrollpos_x; w->viewport->scrollpos_y = w->viewport->dest_scrollpos_y; } } ClampViewportToMap(vp, w->viewport->scrollpos_x, w->viewport->scrollpos_y); SetViewportPosition(w, w->viewport->scrollpos_x, w->viewport->scrollpos_y); } } /** * Marks a viewport as dirty for repaint if it displays (a part of) the area the needs to be repainted. * @param vp The viewport to mark as dirty * @param left Left edge of area to repaint * @param top Top edge of area to repaint * @param right Right edge of area to repaint * @param bottom Bottom edge of area to repaint * @ingroup dirty */ static void MarkViewportDirty(const ViewPort *vp, int left, int top, int right, int bottom) { right -= vp->virtual_left; if (right <= 0) return; bottom -= vp->virtual_top; if (bottom <= 0) return; left = max(0, left - vp->virtual_left); if (left >= vp->virtual_width) return; top = max(0, top - vp->virtual_top); if (top >= vp->virtual_height) return; SetDirtyBlocks( UnScaleByZoomLower(left, vp->zoom) + vp->left, UnScaleByZoomLower(top, vp->zoom) + vp->top, UnScaleByZoom(right, vp->zoom) + vp->left + 1, UnScaleByZoom(bottom, vp->zoom) + vp->top + 1 ); } /** * Mark all viewports that display an area as dirty (in need of repaint). * @param left Left edge of area to repaint * @param top Top edge of area to repaint * @param right Right edge of area to repaint * @param bottom Bottom edge of area to repaint * @ingroup dirty */ void MarkAllViewportsDirty(int left, int top, int right, int bottom) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { ViewPort *vp = w->viewport; if (vp != NULL) { assert(vp->width != 0); MarkViewportDirty(vp, left, top, right, bottom); } } } void ConstrainAllViewportsZoom() { Window *w; FOR_ALL_WINDOWS_FROM_FRONT(w) { if (w->viewport == NULL) continue; ZoomLevel zoom = static_cast(Clamp(w->viewport->zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max)); if (zoom != w->viewport->zoom) { while (w->viewport->zoom < zoom) DoZoomInOutWindow(ZOOM_OUT, w); while (w->viewport->zoom > zoom) DoZoomInOutWindow(ZOOM_IN, w); } } } /** * Mark a tile given by its index dirty for repaint. * @param tile The tile to mark dirty. * @ingroup dirty */ void MarkTileDirtyByTile(TileIndex tile) { Point pt = RemapCoords(TileX(tile) * TILE_SIZE, TileY(tile) * TILE_SIZE, GetTilePixelZ(tile)); MarkAllViewportsDirty( pt.x - 31 * ZOOM_LVL_BASE, pt.y - 122 * ZOOM_LVL_BASE, pt.x - 31 * ZOOM_LVL_BASE + 67 * ZOOM_LVL_BASE, pt.y - 122 * ZOOM_LVL_BASE + 154 * ZOOM_LVL_BASE ); } /** * Marks the selected tiles as dirty. * * This function marks the selected tiles as dirty for repaint * * @ingroup dirty */ static void SetSelectionTilesDirty() { int x_size = _thd.size.x; int y_size = _thd.size.y; if (!_thd.diagonal) { // Selecting in a straight rectangle (or a single square) int x_start = _thd.pos.x; int y_start = _thd.pos.y; if (_thd.outersize.x != 0) { x_size += _thd.outersize.x; x_start += _thd.offs.x; y_size += _thd.outersize.y; y_start += _thd.offs.y; } x_size -= TILE_SIZE; y_size -= TILE_SIZE; assert(x_size >= 0); assert(y_size >= 0); int x_end = Clamp(x_start + x_size, 0, MapSizeX() * TILE_SIZE - TILE_SIZE); int y_end = Clamp(y_start + y_size, 0, MapSizeY() * TILE_SIZE - TILE_SIZE); x_start = Clamp(x_start, 0, MapSizeX() * TILE_SIZE - TILE_SIZE); y_start = Clamp(y_start, 0, MapSizeY() * TILE_SIZE - TILE_SIZE); /* make sure everything is multiple of TILE_SIZE */ assert((x_end | y_end | x_start | y_start) % TILE_SIZE == 0); /* How it works: * Suppose we have to mark dirty rectangle of 3x4 tiles: * x * xxx * xxxxx * xxxxx * xxx * x * This algorithm marks dirty columns of tiles, so it is done in 3+4-1 steps: * 1) x 2) x * xxx Oxx * Oxxxx xOxxx * xxxxx Oxxxx * xxx xxx * x x * And so forth... */ int top_x = x_end; // coordinates of top dirty tile int top_y = y_start; int bot_x = top_x; // coordinates of bottom dirty tile int bot_y = top_y; do { /* topmost dirty point */ TileIndex top_tile = TileVirtXY(top_x, top_y); Point top = RemapCoords(top_x, top_y, GetTileMaxPixelZ(top_tile)); /* bottommost point */ TileIndex bottom_tile = TileVirtXY(bot_x, bot_y); Point bot = RemapCoords(bot_x + TILE_SIZE, bot_y + TILE_SIZE, GetTilePixelZ(bottom_tile)); // bottommost point /* the 'x' coordinate of 'top' and 'bot' is the same (and always in the same distance from tile middle), * tile height/slope affects only the 'y' on-screen coordinate! */ int l = top.x - (TILE_PIXELS - 2) * ZOOM_LVL_BASE; // 'x' coordinate of left side of dirty rectangle int t = top.y; // 'y' coordinate of top side -//- int r = top.x + (TILE_PIXELS - 2) * ZOOM_LVL_BASE; // right side of dirty rectangle int b = bot.y; // bottom -//- static const int OVERLAY_WIDTH = 4 * ZOOM_LVL_BASE; // part of selection sprites is drawn outside the selected area /* For halftile foundations on SLOPE_STEEP_S the sprite extents some more towards the top */ MarkAllViewportsDirty(l - OVERLAY_WIDTH, t - OVERLAY_WIDTH - TILE_HEIGHT * ZOOM_LVL_BASE, r + OVERLAY_WIDTH, b + OVERLAY_WIDTH * ZOOM_LVL_BASE); /* haven't we reached the topmost tile yet? */ if (top_x != x_start) { top_x -= TILE_SIZE; } else { top_y += TILE_SIZE; } /* the way the bottom tile changes is different when we reach the bottommost tile */ if (bot_y != y_end) { bot_y += TILE_SIZE; } else { bot_x -= TILE_SIZE; } } while (bot_x >= top_x); } else { // Selecting in a 45 degrees rotated (diagonal) rectangle. /* a_size, b_size describe a rectangle with rotated coordinates */ int a_size = x_size + y_size, b_size = x_size - y_size; int interval_a = a_size < 0 ? -(int)TILE_SIZE : (int)TILE_SIZE; int interval_b = b_size < 0 ? -(int)TILE_SIZE : (int)TILE_SIZE; for (int a = -interval_a; a != a_size + interval_a; a += interval_a) { for (int b = -interval_b; b != b_size + interval_b; b += interval_b) { uint x = (_thd.pos.x + (a + b) / 2) / TILE_SIZE; uint y = (_thd.pos.y + (a - b) / 2) / TILE_SIZE; if (x < MapMaxX() && y < MapMaxY()) { MarkTileDirtyByTile(TileXY(x, y)); } } } } } void SetSelectionRed(bool b) { _thd.make_square_red = b; SetSelectionTilesDirty(); } /** * Test whether a sign is below the mouse * @param vp the clicked viewport * @param x X position of click * @param y Y position of click * @param sign the sign to check * @return true if the sign was hit */ static bool CheckClickOnViewportSign(const ViewPort *vp, int x, int y, const ViewportSign *sign) { bool small = (vp->zoom >= ZOOM_LVL_OUT_16X); int sign_half_width = ScaleByZoom((small ? sign->width_small : sign->width_normal) / 2, vp->zoom); int sign_height = ScaleByZoom(VPSM_TOP + (small ? FONT_HEIGHT_SMALL : FONT_HEIGHT_NORMAL) + VPSM_BOTTOM, vp->zoom); x = ScaleByZoom(x - vp->left, vp->zoom) + vp->virtual_left; y = ScaleByZoom(y - vp->top, vp->zoom) + vp->virtual_top; return y >= sign->top && y < sign->top + sign_height && x >= sign->center - sign_half_width && x < sign->center + sign_half_width; } static bool CheckClickOnTown(const ViewPort *vp, int x, int y) { if (!HasBit(_display_opt, DO_SHOW_TOWN_NAMES)) return false; const Town *t; FOR_ALL_TOWNS(t) { if (CheckClickOnViewportSign(vp, x, y, &t->cache.sign)) { ShowTownViewWindow(t->index); return true; } } return false; } static bool CheckClickOnStation(const ViewPort *vp, int x, int y) { if (!(HasBit(_display_opt, DO_SHOW_STATION_NAMES) || HasBit(_display_opt, DO_SHOW_WAYPOINT_NAMES)) || IsInvisibilitySet(TO_SIGNS)) return false; const BaseStation *st; FOR_ALL_BASE_STATIONS(st) { /* Check whether the base station is a station or a waypoint */ bool is_station = Station::IsExpected(st); /* Don't check if the display options are disabled */ if (!HasBit(_display_opt, is_station ? DO_SHOW_STATION_NAMES : DO_SHOW_WAYPOINT_NAMES)) continue; /* Don't check if competitor signs are not shown and the sign isn't owned by the local company */ if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS) && _local_company != st->owner && st->owner != OWNER_NONE) continue; if (CheckClickOnViewportSign(vp, x, y, &st->sign)) { if (is_station) { ShowStationViewWindow(st->index); } else { ShowWaypointWindow(Waypoint::From(st)); } return true; } } return false; } static bool CheckClickOnSign(const ViewPort *vp, int x, int y) { /* Signs are turned off, or they are transparent and invisibility is ON, or company is a spectator */ if (!HasBit(_display_opt, DO_SHOW_SIGNS) || IsInvisibilitySet(TO_SIGNS) || _local_company == COMPANY_SPECTATOR) return false; const Sign *si; FOR_ALL_SIGNS(si) { /* If competitor signs are hidden, don't check signs that aren't owned by local company */ if (!HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS) && _local_company != si->owner && si->owner != OWNER_DEITY) continue; if (si->owner == OWNER_DEITY && _game_mode != GM_EDITOR) continue; if (CheckClickOnViewportSign(vp, x, y, &si->sign)) { HandleClickOnSign(si); return true; } } return false; } static bool CheckClickOnLandscape(const ViewPort *vp, int x, int y) { Point pt = TranslateXYToTileCoord(vp, x, y); if (pt.x != -1) return ClickTile(TileVirtXY(pt.x, pt.y)); return true; } static void PlaceObject() { Point pt; Window *w; pt = GetTileBelowCursor(); if (pt.x == -1) return; if ((_thd.place_mode & HT_DRAG_MASK) == HT_POINT) { pt.x += TILE_SIZE / 2; pt.y += TILE_SIZE / 2; } _tile_fract_coords.x = pt.x & TILE_UNIT_MASK; _tile_fract_coords.y = pt.y & TILE_UNIT_MASK; w = _thd.GetCallbackWnd(); if (w != NULL) w->OnPlaceObject(pt, TileVirtXY(pt.x, pt.y)); } bool HandleViewportClicked(const ViewPort *vp, int x, int y) { const Vehicle *v = CheckClickOnVehicle(vp, x, y); if (_thd.place_mode & HT_VEHICLE) { if (v != NULL && VehicleClicked(v)) return true; } /* Vehicle placement mode already handled above. */ if ((_thd.place_mode & HT_DRAG_MASK) != HT_NONE) { PlaceObject(); return true; } if (CheckClickOnTown(vp, x, y)) return true; if (CheckClickOnStation(vp, x, y)) return true; if (CheckClickOnSign(vp, x, y)) return true; bool result = CheckClickOnLandscape(vp, x, y); if (v != NULL) { DEBUG(misc, 2, "Vehicle %d (index %d) at %p", v->unitnumber, v->index, v); if (IsCompanyBuildableVehicleType(v)) { v = v->First(); if (_ctrl_pressed && v->owner == _local_company) { StartStopVehicle(v, true); } else { ShowVehicleViewWindow(v); } } return true; } return result; } /** * Scrolls the viewport in a window to a given location. * @param x Desired x location of the map to scroll to (world coordinate). * @param y Desired y location of the map to scroll to (world coordinate). * @param z Desired z location of the map to scroll to (world coordinate). Use \c -1 to scroll to the height of the map at the \a x, \a y location. * @param w %Window containing the viewport. * @param instant Jump to the location instead of slowly moving to it. * @return Destination of the viewport was changed (to activate other actions when the viewport is already at the desired position). */ bool ScrollWindowTo(int x, int y, int z, Window *w, bool instant) { /* The slope cannot be acquired outside of the map, so make sure we are always within the map. */ if (z == -1) z = GetSlopePixelZ(Clamp(x, 0, MapSizeX() * TILE_SIZE - 1), Clamp(y, 0, MapSizeY() * TILE_SIZE - 1)); Point pt = MapXYZToViewport(w->viewport, x, y, z); w->viewport->follow_vehicle = INVALID_VEHICLE; if (w->viewport->dest_scrollpos_x == pt.x && w->viewport->dest_scrollpos_y == pt.y) return false; if (instant) { w->viewport->scrollpos_x = pt.x; w->viewport->scrollpos_y = pt.y; } w->viewport->dest_scrollpos_x = pt.x; w->viewport->dest_scrollpos_y = pt.y; return true; } /** * Scrolls the viewport in a window to a given location. * @param tile Desired tile to center on. * @param w %Window containing the viewport. * @param instant Jump to the location instead of slowly moving to it. * @return Destination of the viewport was changed (to activate other actions when the viewport is already at the desired position). */ bool ScrollWindowToTile(TileIndex tile, Window *w, bool instant) { return ScrollWindowTo(TileX(tile) * TILE_SIZE, TileY(tile) * TILE_SIZE, -1, w, instant); } /** * Scrolls the viewport of the main window to a given location. * @param tile Desired tile to center on. * @param instant Jump to the location instead of slowly moving to it. * @return Destination of the viewport was changed (to activate other actions when the viewport is already at the desired position). */ bool ScrollMainWindowToTile(TileIndex tile, bool instant) { return ScrollMainWindowTo(TileX(tile) * TILE_SIZE + TILE_SIZE / 2, TileY(tile) * TILE_SIZE + TILE_SIZE / 2, -1, instant); } /** * Set a tile to display a red error square. * @param tile Tile that should show the red error square. */ void SetRedErrorSquare(TileIndex tile) { TileIndex old; old = _thd.redsq; _thd.redsq = tile; if (tile != old) { if (tile != INVALID_TILE) MarkTileDirtyByTile(tile); if (old != INVALID_TILE) MarkTileDirtyByTile(old); } } /** * Highlight \a w by \a h tiles at the cursor. * @param w Width of the highlighted tiles rectangle. * @param h Height of the highlighted tiles rectangle. */ void SetTileSelectSize(int w, int h) { _thd.new_size.x = w * TILE_SIZE; _thd.new_size.y = h * TILE_SIZE; _thd.new_outersize.x = 0; _thd.new_outersize.y = 0; } void SetTileSelectBigSize(int ox, int oy, int sx, int sy) { _thd.offs.x = ox * TILE_SIZE; _thd.offs.y = oy * TILE_SIZE; _thd.new_outersize.x = sx * TILE_SIZE; _thd.new_outersize.y = sy * TILE_SIZE; } /** returns the best autorail highlight type from map coordinates */ static HighLightStyle GetAutorailHT(int x, int y) { return HT_RAIL | _autorail_piece[x & TILE_UNIT_MASK][y & TILE_UNIT_MASK]; } /** * Reset tile highlighting. */ void TileHighlightData::Reset() { this->pos.x = 0; this->pos.y = 0; this->new_pos.x = 0; this->new_pos.y = 0; } /** * Is the user dragging a 'diagonal rectangle'? * @return User is dragging a rotated rectangle. */ bool TileHighlightData::IsDraggingDiagonal() { return (this->place_mode & HT_DIAGONAL) != 0 && _ctrl_pressed && _left_button_down; } /** * Get the window that started the current highlighting. * @return The window that requested the current tile highlighting, or \c NULL if not available. */ Window *TileHighlightData::GetCallbackWnd() { return FindWindowById(this->window_class, this->window_number); } /** * Updates tile highlighting for all cases. * Uses _thd.selstart and _thd.selend and _thd.place_mode (set elsewhere) to determine _thd.pos and _thd.size * Also drawstyle is determined. Uses _thd.new.* as a buffer and calls SetSelectionTilesDirty() twice, * Once for the old and once for the new selection. * _thd is TileHighlightData, found in viewport.h */ void UpdateTileSelection() { int x1; int y1; HighLightStyle new_drawstyle = HT_NONE; bool new_diagonal = false; if ((_thd.place_mode & HT_DRAG_MASK) == HT_SPECIAL) { x1 = _thd.selend.x; y1 = _thd.selend.y; if (x1 != -1) { int x2 = _thd.selstart.x & ~TILE_UNIT_MASK; int y2 = _thd.selstart.y & ~TILE_UNIT_MASK; x1 &= ~TILE_UNIT_MASK; y1 &= ~TILE_UNIT_MASK; if (_thd.IsDraggingDiagonal()) { new_diagonal = true; } else { if (x1 >= x2) Swap(x1, x2); if (y1 >= y2) Swap(y1, y2); } _thd.new_pos.x = x1; _thd.new_pos.y = y1; _thd.new_size.x = x2 - x1; _thd.new_size.y = y2 - y1; if (!new_diagonal) { _thd.new_size.x += TILE_SIZE; _thd.new_size.y += TILE_SIZE; } new_drawstyle = _thd.next_drawstyle; } } else if ((_thd.place_mode & HT_DRAG_MASK) != HT_NONE) { Point pt = GetTileBelowCursor(); x1 = pt.x; y1 = pt.y; if (x1 != -1) { switch (_thd.place_mode & HT_DRAG_MASK) { case HT_RECT: new_drawstyle = HT_RECT; break; case HT_POINT: new_drawstyle = HT_POINT; x1 += TILE_SIZE / 2; y1 += TILE_SIZE / 2; break; case HT_RAIL: /* Draw one highlighted tile in any direction */ new_drawstyle = GetAutorailHT(pt.x, pt.y); break; case HT_LINE: switch (_thd.place_mode & HT_DIR_MASK) { case HT_DIR_X: new_drawstyle = HT_LINE | HT_DIR_X; break; case HT_DIR_Y: new_drawstyle = HT_LINE | HT_DIR_Y; break; case HT_DIR_HU: case HT_DIR_HL: new_drawstyle = (pt.x & TILE_UNIT_MASK) + (pt.y & TILE_UNIT_MASK) <= TILE_SIZE ? HT_LINE | HT_DIR_HU : HT_LINE | HT_DIR_HL; break; case HT_DIR_VL: case HT_DIR_VR: new_drawstyle = (pt.x & TILE_UNIT_MASK) > (pt.y & TILE_UNIT_MASK) ? HT_LINE | HT_DIR_VL : HT_LINE | HT_DIR_VR; break; default: NOT_REACHED(); } _thd.selstart.x = x1 & ~TILE_UNIT_MASK; _thd.selstart.y = y1 & ~TILE_UNIT_MASK; break; default: NOT_REACHED(); break; } _thd.new_pos.x = x1 & ~TILE_UNIT_MASK; _thd.new_pos.y = y1 & ~TILE_UNIT_MASK; } } /* redraw selection */ if (_thd.drawstyle != new_drawstyle || _thd.pos.x != _thd.new_pos.x || _thd.pos.y != _thd.new_pos.y || _thd.size.x != _thd.new_size.x || _thd.size.y != _thd.new_size.y || _thd.outersize.x != _thd.new_outersize.x || _thd.outersize.y != _thd.new_outersize.y || _thd.diagonal != new_diagonal) { /* Clear the old tile selection? */ if ((_thd.drawstyle & HT_DRAG_MASK) != HT_NONE) SetSelectionTilesDirty(); _thd.drawstyle = new_drawstyle; _thd.pos = _thd.new_pos; _thd.size = _thd.new_size; _thd.outersize = _thd.new_outersize; _thd.diagonal = new_diagonal; _thd.dirty = 0xff; /* Draw the new tile selection? */ if ((new_drawstyle & HT_DRAG_MASK) != HT_NONE) SetSelectionTilesDirty(); } } /** * Displays the measurement tooltips when selecting multiple tiles * @param str String to be displayed * @param paramcount number of params to deal with * @param params (optional) up to 5 pieces of additional information that may be added to a tooltip * @param close_cond Condition for closing this tooltip. */ static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_LEFT_CLICK) { if (!_settings_client.gui.measure_tooltip) return; GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, params, close_cond); } /** highlighting tiles while only going over them with the mouse */ void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process) { _thd.select_method = method; _thd.select_proc = process; _thd.selend.x = TileX(tile) * TILE_SIZE; _thd.selstart.x = TileX(tile) * TILE_SIZE; _thd.selend.y = TileY(tile) * TILE_SIZE; _thd.selstart.y = TileY(tile) * TILE_SIZE; /* Needed so several things (road, autoroad, bridges, ...) are placed correctly. * In effect, placement starts from the centre of a tile */ if (method == VPM_X_OR_Y || method == VPM_FIX_X || method == VPM_FIX_Y) { _thd.selend.x += TILE_SIZE / 2; _thd.selend.y += TILE_SIZE / 2; _thd.selstart.x += TILE_SIZE / 2; _thd.selstart.y += TILE_SIZE / 2; } HighLightStyle others = _thd.place_mode & ~(HT_DRAG_MASK | HT_DIR_MASK); if ((_thd.place_mode & HT_DRAG_MASK) == HT_RECT) { _thd.place_mode = HT_SPECIAL | others; _thd.next_drawstyle = HT_RECT | others; } else if (_thd.place_mode & (HT_RAIL | HT_LINE)) { _thd.place_mode = HT_SPECIAL | others; _thd.next_drawstyle = _thd.drawstyle | others; } else { _thd.place_mode = HT_SPECIAL | others; _thd.next_drawstyle = HT_POINT | others; } _special_mouse_mode = WSM_SIZING; } void VpSetPlaceSizingLimit(int limit) { _thd.sizelimit = limit; } /** * Highlights all tiles between a set of two tiles. Used in dock and tunnel placement * @param from TileIndex of the first tile to highlight * @param to TileIndex of the last tile to highlight */ void VpSetPresizeRange(TileIndex from, TileIndex to) { uint64 distance = DistanceManhattan(from, to) + 1; _thd.selend.x = TileX(to) * TILE_SIZE; _thd.selend.y = TileY(to) * TILE_SIZE; _thd.selstart.x = TileX(from) * TILE_SIZE; _thd.selstart.y = TileY(from) * TILE_SIZE; _thd.next_drawstyle = HT_RECT; /* show measurement only if there is any length to speak of */ if (distance > 1) ShowMeasurementTooltips(STR_MEASURE_LENGTH, 1, &distance, TCC_HOVER); } static void VpStartPreSizing() { _thd.selend.x = -1; _special_mouse_mode = WSM_PRESIZE; } /** * returns information about the 2x1 piece to be build. * The lower bits (0-3) are the track type. */ static HighLightStyle Check2x1AutoRail(int mode) { int fxpy = _tile_fract_coords.x + _tile_fract_coords.y; int sxpy = (_thd.selend.x & TILE_UNIT_MASK) + (_thd.selend.y & TILE_UNIT_MASK); int fxmy = _tile_fract_coords.x - _tile_fract_coords.y; int sxmy = (_thd.selend.x & TILE_UNIT_MASK) - (_thd.selend.y & TILE_UNIT_MASK); switch (mode) { default: NOT_REACHED(); case 0: // end piece is lower right if (fxpy >= 20 && sxpy <= 12) return HT_DIR_HL; if (fxmy < -3 && sxmy > 3) return HT_DIR_VR; return HT_DIR_Y; case 1: if (fxmy > 3 && sxmy < -3) return HT_DIR_VL; if (fxpy <= 12 && sxpy >= 20) return HT_DIR_HU; return HT_DIR_Y; case 2: if (fxmy > 3 && sxmy < -3) return HT_DIR_VL; if (fxpy >= 20 && sxpy <= 12) return HT_DIR_HL; return HT_DIR_X; case 3: if (fxmy < -3 && sxmy > 3) return HT_DIR_VR; if (fxpy <= 12 && sxpy >= 20) return HT_DIR_HU; return HT_DIR_X; } } /** * Check if the direction of start and end tile should be swapped based on * the dragging-style. Default directions are: * in the case of a line (HT_RAIL, HT_LINE): DIR_NE, DIR_NW, DIR_N, DIR_E * in the case of a rect (HT_RECT, HT_POINT): DIR_S, DIR_E * For example dragging a rectangle area from south to north should be swapped to * north-south (DIR_S) to obtain the same results with less code. This is what * the return value signifies. * @param style HighLightStyle dragging style * @param start_tile start tile of drag * @param end_tile end tile of drag * @return boolean value which when true means start/end should be swapped */ static bool SwapDirection(HighLightStyle style, TileIndex start_tile, TileIndex end_tile) { uint start_x = TileX(start_tile); uint start_y = TileY(start_tile); uint end_x = TileX(end_tile); uint end_y = TileY(end_tile); switch (style & HT_DRAG_MASK) { case HT_RAIL: case HT_LINE: return (end_x > start_x || (end_x == start_x && end_y > start_y)); case HT_RECT: case HT_POINT: return (end_x != start_x && end_y < start_y); default: NOT_REACHED(); } return false; } /** * Calculates height difference between one tile and another. * Multiplies the result to suit the standard given by #TILE_HEIGHT_STEP. * * To correctly get the height difference we need the direction we are dragging * in, as well as with what kind of tool we are dragging. For example a horizontal * autorail tool that starts in bottom and ends at the top of a tile will need the * maximum of SW, S and SE, N corners respectively. This is handled by the lookup table below * See #_tileoffs_by_dir in map.cpp for the direction enums if you can't figure out the values yourself. * @param style Highlighting style of the drag. This includes direction and style (autorail, rect, etc.) * @param distance Number of tiles dragged, important for horizontal/vertical drags, ignored for others. * @param start_tile Start tile of the drag operation. * @param end_tile End tile of the drag operation. * @return Height difference between two tiles. The tile measurement tool utilizes this value in its tooltip. */ static int CalcHeightdiff(HighLightStyle style, uint distance, TileIndex start_tile, TileIndex end_tile) { bool swap = SwapDirection(style, start_tile, end_tile); uint h0, h1; // Start height and end height. if (start_tile == end_tile) return 0; if (swap) Swap(start_tile, end_tile); switch (style & HT_DRAG_MASK) { case HT_RECT: { static const TileIndexDiffC heightdiff_area_by_dir[] = { /* Start */ {1, 0}, /* Dragging east */ {0, 0}, // Dragging south /* End */ {0, 1}, /* Dragging east */ {1, 1} // Dragging south }; /* In the case of an area we can determine whether we were dragging south or * east by checking the X-coordinates of the tiles */ byte style_t = (byte)(TileX(end_tile) > TileX(start_tile)); start_tile = TILE_ADD(start_tile, ToTileIndexDiff(heightdiff_area_by_dir[style_t])); end_tile = TILE_ADD(end_tile, ToTileIndexDiff(heightdiff_area_by_dir[2 + style_t])); /* FALL THROUGH */ } case HT_POINT: h0 = TileHeight(start_tile); h1 = TileHeight(end_tile); break; default: { // All other types, this is mostly only line/autorail static const HighLightStyle flip_style_direction[] = { HT_DIR_X, HT_DIR_Y, HT_DIR_HL, HT_DIR_HU, HT_DIR_VR, HT_DIR_VL }; static const TileIndexDiffC heightdiff_line_by_dir[] = { /* Start */ {1, 0}, {1, 1}, /* HT_DIR_X */ {0, 1}, {1, 1}, // HT_DIR_Y /* Start */ {1, 0}, {0, 0}, /* HT_DIR_HU */ {1, 0}, {1, 1}, // HT_DIR_HL /* Start */ {1, 0}, {1, 1}, /* HT_DIR_VL */ {0, 1}, {1, 1}, // HT_DIR_VR /* Start */ {0, 1}, {0, 0}, /* HT_DIR_X */ {1, 0}, {0, 0}, // HT_DIR_Y /* End */ {0, 1}, {0, 0}, /* HT_DIR_HU */ {1, 1}, {0, 1}, // HT_DIR_HL /* End */ {1, 0}, {0, 0}, /* HT_DIR_VL */ {0, 0}, {0, 1}, // HT_DIR_VR }; distance %= 2; // we're only interested if the distance is even or uneven style &= HT_DIR_MASK; /* To handle autorail, we do some magic to be able to use a lookup table. * Firstly if we drag the other way around, we switch start&end, and if needed * also flip the drag-position. Eg if it was on the left, and the distance is even * that means the end, which is now the start is on the right */ if (swap && distance == 0) style = flip_style_direction[style]; /* Use lookup table for start-tile based on HighLightStyle direction */ byte style_t = style * 2; assert(style_t < lengthof(heightdiff_line_by_dir) - 13); h0 = TileHeight(TILE_ADD(start_tile, ToTileIndexDiff(heightdiff_line_by_dir[style_t]))); uint ht = TileHeight(TILE_ADD(start_tile, ToTileIndexDiff(heightdiff_line_by_dir[style_t + 1]))); h0 = max(h0, ht); /* Use lookup table for end-tile based on HighLightStyle direction * flip around side (lower/upper, left/right) based on distance */ if (distance == 0) style_t = flip_style_direction[style] * 2; assert(style_t < lengthof(heightdiff_line_by_dir) - 13); h1 = TileHeight(TILE_ADD(end_tile, ToTileIndexDiff(heightdiff_line_by_dir[12 + style_t]))); ht = TileHeight(TILE_ADD(end_tile, ToTileIndexDiff(heightdiff_line_by_dir[12 + style_t + 1]))); h1 = max(h1, ht); break; } } if (swap) Swap(h0, h1); return (int)(h1 - h0) * TILE_HEIGHT_STEP; } static const StringID measure_strings_length[] = {STR_NULL, STR_MEASURE_LENGTH, STR_MEASURE_LENGTH_HEIGHTDIFF}; /** * Check for underflowing the map. * @param test the variable to test for underflowing * @param other the other variable to update to keep the line * @param mult the constant to multiply the difference by for \c other */ static void CheckUnderflow(int &test, int &other, int mult) { if (test >= 0) return; other += mult * test; test = 0; } /** * Check for overflowing the map. * @param test the variable to test for overflowing * @param other the other variable to update to keep the line * @param max the maximum value for the \c test variable * @param mult the constant to multiply the difference by for \c other */ static void CheckOverflow(int &test, int &other, int max, int mult) { if (test <= max) return; other += mult * (test - max); test = max; } /** while dragging */ static void CalcRaildirsDrawstyle(int x, int y, int method) { HighLightStyle b; int dx = _thd.selstart.x - (_thd.selend.x & ~TILE_UNIT_MASK); int dy = _thd.selstart.y - (_thd.selend.y & ~TILE_UNIT_MASK); uint w = abs(dx) + TILE_SIZE; uint h = abs(dy) + TILE_SIZE; if (method & ~(VPM_RAILDIRS | VPM_SIGNALDIRS)) { /* We 'force' a selection direction; first four rail buttons. */ method &= ~(VPM_RAILDIRS | VPM_SIGNALDIRS); int raw_dx = _thd.selstart.x - _thd.selend.x; int raw_dy = _thd.selstart.y - _thd.selend.y; switch (method) { case VPM_FIX_X: b = HT_LINE | HT_DIR_Y; x = _thd.selstart.x; break; case VPM_FIX_Y: b = HT_LINE | HT_DIR_X; y = _thd.selstart.y; break; case VPM_FIX_HORIZONTAL: if (dx == -dy) { /* We are on a straight horizontal line. Determine the 'rail' * to build based the sub tile location. */ b = (x & TILE_UNIT_MASK) + (y & TILE_UNIT_MASK) >= TILE_SIZE ? HT_LINE | HT_DIR_HL : HT_LINE | HT_DIR_HU; } else { /* We are not on a straight line. Determine the rail to build * based on whether we are above or below it. */ b = dx + dy >= (int)TILE_SIZE ? HT_LINE | HT_DIR_HU : HT_LINE | HT_DIR_HL; /* Calculate where a horizontal line through the start point and * a vertical line from the selected end point intersect and * use that point as the end point. */ int offset = (raw_dx - raw_dy) / 2; x = _thd.selstart.x - (offset & ~TILE_UNIT_MASK); y = _thd.selstart.y + (offset & ~TILE_UNIT_MASK); /* 'Build' the last half rail tile if needed */ if ((offset & TILE_UNIT_MASK) > (TILE_SIZE / 2)) { if (dx + dy >= (int)TILE_SIZE) { x += (dx + dy < 0) ? (int)TILE_SIZE : -(int)TILE_SIZE; } else { y += (dx + dy < 0) ? (int)TILE_SIZE : -(int)TILE_SIZE; } } /* Make sure we do not overflow the map! */ CheckUnderflow(x, y, 1); CheckUnderflow(y, x, 1); CheckOverflow(x, y, (MapMaxX() - 1) * TILE_SIZE, 1); CheckOverflow(y, x, (MapMaxY() - 1) * TILE_SIZE, 1); assert(x >= 0 && y >= 0 && x <= (int)(MapMaxX() * TILE_SIZE) && y <= (int)(MapMaxY() * TILE_SIZE)); } break; case VPM_FIX_VERTICAL: if (dx == dy) { /* We are on a straight vertical line. Determine the 'rail' * to build based the sub tile location. */ b = (x & TILE_UNIT_MASK) > (y & TILE_UNIT_MASK) ? HT_LINE | HT_DIR_VL : HT_LINE | HT_DIR_VR; } else { /* We are not on a straight line. Determine the rail to build * based on whether we are left or right from it. */ b = dx < dy ? HT_LINE | HT_DIR_VL : HT_LINE | HT_DIR_VR; /* Calculate where a vertical line through the start point and * a horizontal line from the selected end point intersect and * use that point as the end point. */ int offset = (raw_dx + raw_dy + (int)TILE_SIZE) / 2; x = _thd.selstart.x - (offset & ~TILE_UNIT_MASK); y = _thd.selstart.y - (offset & ~TILE_UNIT_MASK); /* 'Build' the last half rail tile if needed */ if ((offset & TILE_UNIT_MASK) > (TILE_SIZE / 2)) { if (dx - dy < 0) { y += (dx > dy) ? (int)TILE_SIZE : -(int)TILE_SIZE; } else { x += (dx < dy) ? (int)TILE_SIZE : -(int)TILE_SIZE; } } /* Make sure we do not overflow the map! */ CheckUnderflow(x, y, -1); CheckUnderflow(y, x, -1); CheckOverflow(x, y, (MapMaxX() - 1) * TILE_SIZE, -1); CheckOverflow(y, x, (MapMaxY() - 1) * TILE_SIZE, -1); assert(x >= 0 && y >= 0 && x <= (int)(MapMaxX() * TILE_SIZE) && y <= (int)(MapMaxY() * TILE_SIZE)); } break; default: NOT_REACHED(); } } else if (TileVirtXY(_thd.selstart.x, _thd.selstart.y) == TileVirtXY(x, y)) { // check if we're only within one tile if (method & VPM_RAILDIRS) { b = GetAutorailHT(x, y); } else { // rect for autosignals on one tile b = HT_RECT; } } else if (h == TILE_SIZE) { // Is this in X direction? if (dx == (int)TILE_SIZE) { // 2x1 special handling b = (Check2x1AutoRail(3)) | HT_LINE; } else if (dx == -(int)TILE_SIZE) { b = (Check2x1AutoRail(2)) | HT_LINE; } else { b = HT_LINE | HT_DIR_X; } y = _thd.selstart.y; } else if (w == TILE_SIZE) { // Or Y direction? if (dy == (int)TILE_SIZE) { // 2x1 special handling b = (Check2x1AutoRail(1)) | HT_LINE; } else if (dy == -(int)TILE_SIZE) { // 2x1 other direction b = (Check2x1AutoRail(0)) | HT_LINE; } else { b = HT_LINE | HT_DIR_Y; } x = _thd.selstart.x; } else if (w > h * 2) { // still count as x dir? b = HT_LINE | HT_DIR_X; y = _thd.selstart.y; } else if (h > w * 2) { // still count as y dir? b = HT_LINE | HT_DIR_Y; x = _thd.selstart.x; } else { // complicated direction int d = w - h; _thd.selend.x = _thd.selend.x & ~TILE_UNIT_MASK; _thd.selend.y = _thd.selend.y & ~TILE_UNIT_MASK; /* four cases. */ if (x > _thd.selstart.x) { if (y > _thd.selstart.y) { /* south */ if (d == 0) { b = (x & TILE_UNIT_MASK) > (y & TILE_UNIT_MASK) ? HT_LINE | HT_DIR_VL : HT_LINE | HT_DIR_VR; } else if (d >= 0) { x = _thd.selstart.x + h; b = HT_LINE | HT_DIR_VL; } else { y = _thd.selstart.y + w; b = HT_LINE | HT_DIR_VR; } } else { /* west */ if (d == 0) { b = (x & TILE_UNIT_MASK) + (y & TILE_UNIT_MASK) >= TILE_SIZE ? HT_LINE | HT_DIR_HL : HT_LINE | HT_DIR_HU; } else if (d >= 0) { x = _thd.selstart.x + h; b = HT_LINE | HT_DIR_HL; } else { y = _thd.selstart.y - w; b = HT_LINE | HT_DIR_HU; } } } else { if (y > _thd.selstart.y) { /* east */ if (d == 0) { b = (x & TILE_UNIT_MASK) + (y & TILE_UNIT_MASK) >= TILE_SIZE ? HT_LINE | HT_DIR_HL : HT_LINE | HT_DIR_HU; } else if (d >= 0) { x = _thd.selstart.x - h; b = HT_LINE | HT_DIR_HU; } else { y = _thd.selstart.y + w; b = HT_LINE | HT_DIR_HL; } } else { /* north */ if (d == 0) { b = (x & TILE_UNIT_MASK) > (y & TILE_UNIT_MASK) ? HT_LINE | HT_DIR_VL : HT_LINE | HT_DIR_VR; } else if (d >= 0) { x = _thd.selstart.x - h; b = HT_LINE | HT_DIR_VR; } else { y = _thd.selstart.y - w; b = HT_LINE | HT_DIR_VL; } } } } if (_settings_client.gui.measure_tooltip) { TileIndex t0 = TileVirtXY(_thd.selstart.x, _thd.selstart.y); TileIndex t1 = TileVirtXY(x, y); uint distance = DistanceManhattan(t0, t1) + 1; byte index = 0; uint64 params[2]; if (distance != 1) { int heightdiff = CalcHeightdiff(b, distance, t0, t1); /* If we are showing a tooltip for horizontal or vertical drags, * 2 tiles have a length of 1. To bias towards the ceiling we add * one before division. It feels more natural to count 3 lengths as 2 */ if ((b & HT_DIR_MASK) != HT_DIR_X && (b & HT_DIR_MASK) != HT_DIR_Y) { distance = CeilDiv(distance, 2); } params[index++] = distance; if (heightdiff != 0) params[index++] = heightdiff; } ShowMeasurementTooltips(measure_strings_length[index], index, params); } _thd.selend.x = x; _thd.selend.y = y; _thd.next_drawstyle = b; } /** * Selects tiles while dragging * @param x X coordinate of end of selection * @param y Y coordinate of end of selection * @param method modifies the way tiles are selected. Possible * methods are VPM_* in viewport.h */ void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method) { int sx, sy; HighLightStyle style; if (x == -1) { _thd.selend.x = -1; return; } /* Special handling of drag in any (8-way) direction */ if (method & (VPM_RAILDIRS | VPM_SIGNALDIRS)) { _thd.selend.x = x; _thd.selend.y = y; CalcRaildirsDrawstyle(x, y, method); return; } /* Needed so level-land is placed correctly */ if ((_thd.next_drawstyle & HT_DRAG_MASK) == HT_POINT) { x += TILE_SIZE / 2; y += TILE_SIZE / 2; } sx = _thd.selstart.x; sy = _thd.selstart.y; int limit = 0; switch (method) { case VPM_X_OR_Y: // drag in X or Y direction if (abs(sy - y) < abs(sx - x)) { y = sy; style = HT_DIR_X; } else { x = sx; style = HT_DIR_Y; } goto calc_heightdiff_single_direction; case VPM_X_LIMITED: // Drag in X direction (limited size). limit = (_thd.sizelimit - 1) * TILE_SIZE; /* FALL THROUGH */ case VPM_FIX_X: // drag in Y direction x = sx; style = HT_DIR_Y; goto calc_heightdiff_single_direction; case VPM_Y_LIMITED: // Drag in Y direction (limited size). limit = (_thd.sizelimit - 1) * TILE_SIZE; /* FALL THROUGH */ case VPM_FIX_Y: // drag in X direction y = sy; style = HT_DIR_X; calc_heightdiff_single_direction:; if (limit > 0) { x = sx + Clamp(x - sx, -limit, limit); y = sy + Clamp(y - sy, -limit, limit); } if (_settings_client.gui.measure_tooltip) { TileIndex t0 = TileVirtXY(sx, sy); TileIndex t1 = TileVirtXY(x, y); uint distance = DistanceManhattan(t0, t1) + 1; byte index = 0; uint64 params[2]; if (distance != 1) { /* With current code passing a HT_LINE style to calculate the height * difference is enough. However if/when a point-tool is created * with this method, function should be called with new_style (below) * instead of HT_LINE | style case HT_POINT is handled specially * new_style := (_thd.next_drawstyle & HT_RECT) ? HT_LINE | style : _thd.next_drawstyle; */ int heightdiff = CalcHeightdiff(HT_LINE | style, 0, t0, t1); params[index++] = distance; if (heightdiff != 0) params[index++] = heightdiff; } ShowMeasurementTooltips(measure_strings_length[index], index, params); } break; case VPM_X_AND_Y_LIMITED: // Drag an X by Y constrained rect area. limit = (_thd.sizelimit - 1) * TILE_SIZE; x = sx + Clamp(x - sx, -limit, limit); y = sy + Clamp(y - sy, -limit, limit); /* FALL THROUGH */ case VPM_X_AND_Y: // drag an X by Y area if (_settings_client.gui.measure_tooltip) { static const StringID measure_strings_area[] = { STR_NULL, STR_NULL, STR_MEASURE_AREA, STR_MEASURE_AREA_HEIGHTDIFF }; TileIndex t0 = TileVirtXY(sx, sy); TileIndex t1 = TileVirtXY(x, y); uint dx = Delta(TileX(t0), TileX(t1)) + 1; uint dy = Delta(TileY(t0), TileY(t1)) + 1; byte index = 0; uint64 params[3]; /* If dragging an area (eg dynamite tool) and it is actually a single * row/column, change the type to 'line' to get proper calculation for height */ style = (HighLightStyle)_thd.next_drawstyle; if (_thd.IsDraggingDiagonal()) { /* Determine the "area" of the diagonal dragged selection. * We assume the area is the number of tiles along the X * edge and the number of tiles along the Y edge. However, * multiplying these two numbers does not give the exact * number of tiles; basically we are counting the black * squares on a chess board and ignore the white ones to * make the tile counts at the edges match up. There is no * other way to make a proper count though. * * First convert to the rotated coordinate system. */ int dist_x = TileX(t0) - TileX(t1); int dist_y = TileY(t0) - TileY(t1); int a_max = dist_x + dist_y; int b_max = dist_y - dist_x; /* Now determine the size along the edge, but due to the * chess board principle this counts double. */ a_max = abs(a_max + (a_max > 0 ? 2 : -2)) / 2; b_max = abs(b_max + (b_max > 0 ? 2 : -2)) / 2; /* We get a 1x1 on normal 2x1 rectangles, due to it being * a seen as two sides. As the result for actual building * will be the same as non-diagonal dragging revert to that * behaviour to give it a more normally looking size. */ if (a_max != 1 || b_max != 1) { dx = a_max; dy = b_max; } } else if (style & HT_RECT) { if (dx == 1) { style = HT_LINE | HT_DIR_Y; } else if (dy == 1) { style = HT_LINE | HT_DIR_X; } } if (dx != 1 || dy != 1) { int heightdiff = CalcHeightdiff(style, 0, t0, t1); params[index++] = dx - (style & HT_POINT ? 1 : 0); params[index++] = dy - (style & HT_POINT ? 1 : 0); if (heightdiff != 0) params[index++] = heightdiff; } ShowMeasurementTooltips(measure_strings_area[index], index, params); } break; default: NOT_REACHED(); } _thd.selend.x = x; _thd.selend.y = y; } /** * Handle the mouse while dragging for placement/resizing. * @return State of handling the event. */ EventState VpHandlePlaceSizingDrag() { if (_special_mouse_mode != WSM_SIZING) return ES_NOT_HANDLED; /* stop drag mode if the window has been closed */ Window *w = _thd.GetCallbackWnd(); if (w == NULL) { ResetObjectToPlace(); return ES_HANDLED; } /* while dragging execute the drag procedure of the corresponding window (mostly VpSelectTilesWithMethod() ) */ if (_left_button_down) { w->OnPlaceDrag(_thd.select_method, _thd.select_proc, GetTileBelowCursor()); return ES_HANDLED; } /* mouse button released.. * keep the selected tool, but reset it to the original mode. */ _special_mouse_mode = WSM_NONE; HighLightStyle others = _thd.place_mode & ~(HT_DRAG_MASK | HT_DIR_MASK); if ((_thd.next_drawstyle & HT_DRAG_MASK) == HT_RECT) { _thd.place_mode = HT_RECT | others; } else if (_thd.select_method & VPM_SIGNALDIRS) { _thd.place_mode = HT_RECT | others; } else if (_thd.select_method & VPM_RAILDIRS) { _thd.place_mode = (_thd.select_method & ~VPM_RAILDIRS) ? _thd.next_drawstyle : (HT_RAIL | others); } else { _thd.place_mode = HT_POINT | others; } SetTileSelectSize(1, 1); w->OnPlaceMouseUp(_thd.select_method, _thd.select_proc, _thd.selend, TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y)); return ES_HANDLED; } void SetObjectToPlaceWnd(CursorID icon, PaletteID pal, HighLightStyle mode, Window *w) { SetObjectToPlace(icon, pal, mode, w->window_class, w->window_number); } #include "table/animcursors.h" void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num) { if (_thd.window_class != WC_INVALID) { /* Undo clicking on button and drag & drop */ Window *w = _thd.GetCallbackWnd(); /* Call the abort function, but set the window class to something * that will never be used to avoid infinite loops. Setting it to * the 'next' window class must not be done because recursion into * this function might in some cases reset the newly set object to * place or not properly reset the original selection. */ _thd.window_class = WC_INVALID; if (w != NULL) w->OnPlaceObjectAbort(); } /* Mark the old selection dirty, in case the selection shape or colour changes */ if ((_thd.drawstyle & HT_DRAG_MASK) != HT_NONE) SetSelectionTilesDirty(); SetTileSelectSize(1, 1); _thd.make_square_red = false; if (mode == HT_DRAG) { // HT_DRAG is for dragdropping trains in the depot window mode = HT_NONE; _special_mouse_mode = WSM_DRAGDROP; } else { _special_mouse_mode = WSM_NONE; } _thd.place_mode = mode; _thd.window_class = window_class; _thd.window_number = window_num; if ((mode & HT_DRAG_MASK) == HT_SPECIAL) { // special tools, like tunnels or docks start with presizing mode VpStartPreSizing(); } if ((icon & ANIMCURSOR_FLAG) != 0) { SetAnimatedMouseCursor(_animcursors[icon & ~ANIMCURSOR_FLAG]); } else { SetMouseCursor(icon, pal); } } void ResetObjectToPlace() { SetObjectToPlace(SPR_CURSOR_MOUSE, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0); } openttd-1.3.3/src/driver.cpp0000644000000000000000000001675512246102611014470 0ustar rootroot/* $Id: driver.cpp 23198 2011-11-12 13:00:29Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file driver.cpp Base for all driver handling. */ #include "stdafx.h" #include "debug.h" #include "sound/sound_driver.hpp" #include "music/music_driver.hpp" #include "video/video_driver.hpp" #include "string_func.h" VideoDriver *_video_driver; ///< The currently active video driver. char *_ini_videodriver; ///< The video driver a stored in the configuration file. int _num_resolutions; ///< The number of resolutions. Dimension _resolutions[32]; ///< List of resolutions. Dimension _cur_resolution; ///< The current resolution. bool _rightclick_emulate; ///< Whether right clicking is emulated. SoundDriver *_sound_driver; ///< The currently active sound driver. char *_ini_sounddriver; ///< The sound driver a stored in the configuration file. MusicDriver *_music_driver; ///< The currently active music driver. char *_ini_musicdriver; ///< The music driver a stored in the configuration file. char *_ini_blitter; ///< The blitter as stored in the configuration file. bool _blitter_autodetected; ///< Was the blitter autodetected or specified by the user? /** * Get a string parameter the list of parameters. * @param parm The parameters. * @param name The parameter name we're looking for. * @return The parameter value. */ const char *GetDriverParam(const char * const *parm, const char *name) { size_t len; if (parm == NULL) return NULL; len = strlen(name); for (; *parm != NULL; parm++) { const char *p = *parm; if (strncmp(p, name, len) == 0) { if (p[len] == '=') return p + len + 1; if (p[len] == '\0') return p + len; } } return NULL; } /** * Get a boolean parameter the list of parameters. * @param parm The parameters. * @param name The parameter name we're looking for. * @return The parameter value. */ bool GetDriverParamBool(const char * const *parm, const char *name) { return GetDriverParam(parm, name) != NULL; } /** * Get an integer parameter the list of parameters. * @param parm The parameters. * @param name The parameter name we're looking for. * @param def The default value if the parameter doesn't exist. * @return The parameter value. */ int GetDriverParamInt(const char * const *parm, const char *name, int def) { const char *p = GetDriverParam(parm, name); return p != NULL ? atoi(p) : def; } /** * Find the requested driver and return its class. * @param name the driver to select. * @param type the type of driver to select * @post Sets the driver so GetCurrentDriver() returns it too. */ Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type) { if (GetDrivers().size() == 0) return NULL; if (StrEmpty(name)) { /* Probe for this driver, but do not fall back to dedicated/null! */ for (int priority = 10; priority > 0; priority--) { Drivers::iterator it = GetDrivers().begin(); for (; it != GetDrivers().end(); ++it) { DriverFactoryBase *d = (*it).second; /* Check driver type */ if (d->type != type) continue; if (d->priority != priority) continue; Driver *newd = d->CreateInstance(); const char *err = newd->Start(NULL); if (err == NULL) { DEBUG(driver, 1, "Successfully probed %s driver '%s'", GetDriverTypeName(type), d->name); delete *GetActiveDriver(type); *GetActiveDriver(type) = newd; return newd; } DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err); delete newd; } } usererror("Couldn't find any suitable %s driver", GetDriverTypeName(type)); } else { char *parm; char buffer[256]; const char *parms[32]; /* Extract the driver name and put parameter list in parm */ strecpy(buffer, name, lastof(buffer)); parm = strchr(buffer, ':'); parms[0] = NULL; if (parm != NULL) { uint np = 0; /* Tokenize the parm. */ do { *parm++ = '\0'; if (np < lengthof(parms) - 1) parms[np++] = parm; while (*parm != '\0' && *parm != ',') parm++; } while (*parm == ','); parms[np] = NULL; } /* Find this driver */ Drivers::iterator it = GetDrivers().begin(); for (; it != GetDrivers().end(); ++it) { DriverFactoryBase *d = (*it).second; /* Check driver type */ if (d->type != type) continue; /* Check driver name */ if (strcasecmp(buffer, d->name) != 0) continue; /* Found our driver, let's try it */ Driver *newd = d->CreateInstance(); const char *err = newd->Start(parms); if (err != NULL) { delete newd; usererror("Unable to load driver '%s'. The error was: %s", d->name, err); } DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name); delete *GetActiveDriver(type); *GetActiveDriver(type) = newd; return newd; } usererror("No such %s driver: %s\n", GetDriverTypeName(type), buffer); } } /** * Register a driver internally, based on its name. * @param name the name of the driver. * @param type the type of driver to register * @param priority the priority; how badly do we want this as default? * @note an assert() will be trigger if 2 driver with the same name try to register. */ void DriverFactoryBase::RegisterDriver(const char *name, Driver::Type type, int priority) { /* Don't register nameless Drivers */ if (name == NULL) return; this->name = strdup(name); this->type = type; this->priority = priority; /* Prefix the name with driver type to make it unique */ char buf[32]; strecpy(buf, GetDriverTypeName(type), lastof(buf)); strecpy(buf + 5, name, lastof(buf)); const char *longname = strdup(buf); std::pair P = GetDrivers().insert(Drivers::value_type(longname, this)); assert(P.second); } /** * Build a human readable list of available drivers, grouped by type. * @param p The buffer to write to. * @param last The last element in the buffer. * @return The end of the written buffer. */ char *DriverFactoryBase::GetDriversInfo(char *p, const char *last) { for (Driver::Type type = Driver::DT_BEGIN; type != Driver::DT_END; type++) { p += seprintf(p, last, "List of %s drivers:\n", GetDriverTypeName(type)); for (int priority = 10; priority >= 0; priority--) { Drivers::iterator it = GetDrivers().begin(); for (; it != GetDrivers().end(); it++) { DriverFactoryBase *d = (*it).second; if (d->type != type) continue; if (d->priority != priority) continue; p += seprintf(p, last, "%18s: %s\n", d->name, d->GetDescription()); } } p += seprintf(p, last, "\n"); } return p; } /** * Frees memory used for this->name */ DriverFactoryBase::~DriverFactoryBase() { if (this->name == NULL) return; /* Prefix the name with driver type to make it unique */ char buf[32]; strecpy(buf, GetDriverTypeName(type), lastof(buf)); strecpy(buf + 5, this->name, lastof(buf)); Drivers::iterator it = GetDrivers().find(buf); assert(it != GetDrivers().end()); const char *longname = (*it).first; GetDrivers().erase(it); free(longname); if (GetDrivers().empty()) delete &GetDrivers(); free(this->name); } openttd-1.3.3/src/pbs.cpp0000644000000000000000000003641712246102611013756 0ustar rootroot/* $Id: pbs.cpp 24906 2013-01-11 11:54:12Z peter1138 $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file pbs.cpp PBS support routines */ #include "stdafx.h" #include "viewport_func.h" #include "vehicle_func.h" #include "newgrf_station.h" #include "pathfinder/follow_track.hpp" /** * Get the reserved trackbits for any tile, regardless of type. * @param t the tile * @return the reserved trackbits. TRACK_BIT_NONE on nothing reserved or * a tile without rail. */ TrackBits GetReservedTrackbits(TileIndex t) { switch (GetTileType(t)) { case MP_RAILWAY: if (IsRailDepot(t)) return GetDepotReservationTrackBits(t); if (IsPlainRail(t)) return GetRailReservationTrackBits(t); break; case MP_ROAD: if (IsLevelCrossing(t)) return GetCrossingReservationTrackBits(t); break; case MP_STATION: if (HasStationRail(t)) return GetStationReservationTrackBits(t); break; case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) return GetTunnelBridgeReservationTrackBits(t); break; default: break; } return TRACK_BIT_NONE; } /** * Set the reservation for a complete station platform. * @pre IsRailStationTile(start) * @param start starting tile of the platform * @param dir the direction in which to follow the platform * @param b the state the reservation should be set to */ void SetRailStationPlatformReservation(TileIndex start, DiagDirection dir, bool b) { TileIndex tile = start; TileIndexDiff diff = TileOffsByDiagDir(dir); assert(IsRailStationTile(start)); assert(GetRailStationAxis(start) == DiagDirToAxis(dir)); do { SetRailStationReservation(tile, b); MarkTileDirtyByTile(tile); tile = TILE_ADD(tile, diff); } while (IsCompatibleTrainStationTile(tile, start)); } /** * Try to reserve a specific track on a tile * @param tile the tile * @param t the track * @param trigger_stations whether to call station randomisation trigger * @return \c true if reservation was successful, i.e. the track was * free and didn't cross any other reserved tracks. */ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations) { assert((GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & TrackToTrackBits(t)) != 0); if (_settings_client.gui.show_track_reservation) { /* show the reserved rail if needed */ MarkTileDirtyByTile(tile); } switch (GetTileType(tile)) { case MP_RAILWAY: if (IsPlainRail(tile)) return TryReserveTrack(tile, t); if (IsRailDepot(tile)) { if (!HasDepotReservation(tile)) { SetDepotReservation(tile, true); MarkTileDirtyByTile(tile); // some GRFs change their appearance when tile is reserved return true; } } break; case MP_ROAD: if (IsLevelCrossing(tile) && !HasCrossingReservation(tile)) { SetCrossingReservation(tile, true); BarCrossing(tile); MarkTileDirtyByTile(tile); // crossing barred, make tile dirty return true; } break; case MP_STATION: if (HasStationRail(tile) && !HasStationReservation(tile)) { SetRailStationReservation(tile, true); if (trigger_stations && IsRailStation(tile)) TriggerStationRandomisation(NULL, tile, SRT_PATH_RESERVATION); MarkTileDirtyByTile(tile); // some GRFs need redraw after reserving track return true; } break; case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL && !GetTunnelBridgeReservationTrackBits(tile)) { SetTunnelBridgeReservation(tile, true); return true; } break; default: break; } return false; } /** * Lift the reservation of a specific track on a tile * @param tile the tile * @param t the track */ void UnreserveRailTrack(TileIndex tile, Track t) { assert((GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & TrackToTrackBits(t)) != 0); if (_settings_client.gui.show_track_reservation) { MarkTileDirtyByTile(tile); } switch (GetTileType(tile)) { case MP_RAILWAY: if (IsRailDepot(tile)) { SetDepotReservation(tile, false); MarkTileDirtyByTile(tile); break; } if (IsPlainRail(tile)) UnreserveTrack(tile, t); break; case MP_ROAD: if (IsLevelCrossing(tile)) { SetCrossingReservation(tile, false); UpdateLevelCrossing(tile); } break; case MP_STATION: if (HasStationRail(tile)) { SetRailStationReservation(tile, false); MarkTileDirtyByTile(tile); } break; case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL) SetTunnelBridgeReservation(tile, false); break; default: break; } } /** Follow a reservation starting from a specific tile to the end. */ static PBSTileInfo FollowReservation(Owner o, RailTypes rts, TileIndex tile, Trackdir trackdir, bool ignore_oneway = false) { TileIndex start_tile = tile; Trackdir start_trackdir = trackdir; bool first_loop = true; /* Start track not reserved? This can happen if two trains * are on the same tile. The reservation on the next tile * is not ours in this case, so exit. */ if (!HasReservedTracks(tile, TrackToTrackBits(TrackdirToTrack(trackdir)))) return PBSTileInfo(tile, trackdir, false); /* Do not disallow 90 deg turns as the setting might have changed between reserving and now. */ CFollowTrackRail ft(o, rts); while (ft.Follow(tile, trackdir)) { TrackdirBits reserved = ft.m_new_td_bits & TrackBitsToTrackdirBits(GetReservedTrackbits(ft.m_new_tile)); /* No reservation --> path end found */ if (reserved == TRACKDIR_BIT_NONE) { if (ft.m_is_station) { /* Check skipped station tiles as well, maybe our reservation ends inside the station. */ TileIndexDiff diff = TileOffsByDiagDir(ft.m_exitdir); while (ft.m_tiles_skipped-- > 0) { ft.m_new_tile -= diff; if (HasStationReservation(ft.m_new_tile)) { tile = ft.m_new_tile; trackdir = DiagDirToDiagTrackdir(ft.m_exitdir); break; } } } break; } /* Can't have more than one reserved trackdir */ Trackdir new_trackdir = FindFirstTrackdir(reserved); /* One-way signal against us. The reservation can't be ours as it is not * a safe position from our direction and we can never pass the signal. */ if (!ignore_oneway && HasOnewaySignalBlockingTrackdir(ft.m_new_tile, new_trackdir)) break; tile = ft.m_new_tile; trackdir = new_trackdir; if (first_loop) { /* Update the start tile after we followed the track the first * time. This is necessary because the track follower can skip * tiles (in stations for example) which means that we might * never visit our original starting tile again. */ start_tile = tile; start_trackdir = trackdir; first_loop = false; } else { /* Loop encountered? */ if (tile == start_tile && trackdir == start_trackdir) break; } /* Depot tile? Can't continue. */ if (IsRailDepotTile(tile)) break; /* Non-pbs signal? Reservation can't continue. */ if (IsTileType(tile, MP_RAILWAY) && HasSignalOnTrackdir(tile, trackdir) && !IsPbsSignal(GetSignalType(tile, TrackdirToTrack(trackdir)))) break; } return PBSTileInfo(tile, trackdir, false); } /** * Helper struct for finding the best matching vehicle on a specific track. */ struct FindTrainOnTrackInfo { PBSTileInfo res; ///< Information about the track. Train *best; ///< The currently "best" vehicle we have found. /** Init the best location to NULL always! */ FindTrainOnTrackInfo() : best(NULL) {} }; /** Callback for Has/FindVehicleOnPos to find a train on a specific track. */ static Vehicle *FindTrainOnTrackEnum(Vehicle *v, void *data) { FindTrainOnTrackInfo *info = (FindTrainOnTrackInfo *)data; if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL; Train *t = Train::From(v); if (t->track == TRACK_BIT_WORMHOLE || HasBit((TrackBits)t->track, TrackdirToTrack(info->res.trackdir))) { t = t->First(); /* ALWAYS return the lowest ID (anti-desync!) */ if (info->best == NULL || t->index < info->best->index) info->best = t; return t; } return NULL; } /** * Follow a train reservation to the last tile. * * @param v the vehicle * @param train_on_res Is set to a train we might encounter * @returns The last tile of the reservation or the current train tile if no reservation present. */ PBSTileInfo FollowTrainReservation(const Train *v, Vehicle **train_on_res) { assert(v->type == VEH_TRAIN); TileIndex tile = v->tile; Trackdir trackdir = v->GetVehicleTrackdir(); if (IsRailDepotTile(tile) && !GetDepotReservationTrackBits(tile)) return PBSTileInfo(tile, trackdir, false); FindTrainOnTrackInfo ftoti; ftoti.res = FollowReservation(v->owner, GetRailTypeInfo(v->railtype)->compatible_railtypes, tile, trackdir); ftoti.res.okay = IsSafeWaitingPosition(v, ftoti.res.tile, ftoti.res.trackdir, true, _settings_game.pf.forbid_90_deg); if (train_on_res != NULL) { FindVehicleOnPos(ftoti.res.tile, &ftoti, FindTrainOnTrackEnum); if (ftoti.best != NULL) *train_on_res = ftoti.best->First(); if (*train_on_res == NULL && IsRailStationTile(ftoti.res.tile)) { /* The target tile is a rail station. The track follower * has stopped on the last platform tile where we haven't * found a train. Also check all previous platform tiles * for a possible train. */ TileIndexDiff diff = TileOffsByDiagDir(TrackdirToExitdir(ReverseTrackdir(ftoti.res.trackdir))); for (TileIndex st_tile = ftoti.res.tile + diff; *train_on_res == NULL && IsCompatibleTrainStationTile(st_tile, ftoti.res.tile); st_tile += diff) { FindVehicleOnPos(st_tile, &ftoti, FindTrainOnTrackEnum); if (ftoti.best != NULL) *train_on_res = ftoti.best->First(); } } if (*train_on_res == NULL && IsTileType(ftoti.res.tile, MP_TUNNELBRIDGE)) { /* The target tile is a bridge/tunnel, also check the other end tile. */ FindVehicleOnPos(GetOtherTunnelBridgeEnd(ftoti.res.tile), &ftoti, FindTrainOnTrackEnum); if (ftoti.best != NULL) *train_on_res = ftoti.best->First(); } } return ftoti.res; } /** * Find the train which has reserved a specific path. * * @param tile A tile on the path. * @param track A reserved track on the tile. * @return The vehicle holding the reservation or NULL if the path is stray. */ Train *GetTrainForReservation(TileIndex tile, Track track) { assert(HasReservedTracks(tile, TrackToTrackBits(track))); Trackdir trackdir = TrackToTrackdir(track); RailTypes rts = GetRailTypeInfo(GetTileRailType(tile))->compatible_railtypes; /* Follow the path from tile to both ends, one of the end tiles should * have a train on it. We need FollowReservation to ignore one-way signals * here, as one of the two search directions will be the "wrong" way. */ for (int i = 0; i < 2; ++i, trackdir = ReverseTrackdir(trackdir)) { /* If the tile has a one-way block signal in the current trackdir, skip the * search in this direction as the reservation can't come from this side.*/ if (HasOnewaySignalBlockingTrackdir(tile, ReverseTrackdir(trackdir)) && !HasPbsSignalOnTrackdir(tile, trackdir)) continue; FindTrainOnTrackInfo ftoti; ftoti.res = FollowReservation(GetTileOwner(tile), rts, tile, trackdir, true); FindVehicleOnPos(ftoti.res.tile, &ftoti, FindTrainOnTrackEnum); if (ftoti.best != NULL) return ftoti.best; /* Special case for stations: check the whole platform for a vehicle. */ if (IsRailStationTile(ftoti.res.tile)) { TileIndexDiff diff = TileOffsByDiagDir(TrackdirToExitdir(ReverseTrackdir(ftoti.res.trackdir))); for (TileIndex st_tile = ftoti.res.tile + diff; IsCompatibleTrainStationTile(st_tile, ftoti.res.tile); st_tile += diff) { FindVehicleOnPos(st_tile, &ftoti, FindTrainOnTrackEnum); if (ftoti.best != NULL) return ftoti.best; } } /* Special case for bridges/tunnels: check the other end as well. */ if (IsTileType(ftoti.res.tile, MP_TUNNELBRIDGE)) { FindVehicleOnPos(GetOtherTunnelBridgeEnd(ftoti.res.tile), &ftoti, FindTrainOnTrackEnum); if (ftoti.best != NULL) return ftoti.best; } } return NULL; } /** * Determine whether a certain track on a tile is a safe position to end a path. * * @param v the vehicle to test for * @param tile The tile * @param trackdir The trackdir to test * @param include_line_end Should end-of-line tiles be considered safe? * @param forbid_90deg Don't allow trains to make 90 degree turns * @return True if it is a safe position */ bool IsSafeWaitingPosition(const Train *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg) { if (IsRailDepotTile(tile)) return true; if (IsTileType(tile, MP_RAILWAY)) { /* For non-pbs signals, stop on the signal tile. */ if (HasSignalOnTrackdir(tile, trackdir) && !IsPbsSignal(GetSignalType(tile, TrackdirToTrack(trackdir)))) return true; } /* Check next tile. For performance reasons, we check for 90 degree turns ourself. */ CFollowTrackRail ft(v, GetRailTypeInfo(v->railtype)->compatible_railtypes); /* End of track? */ if (!ft.Follow(tile, trackdir)) { /* Last tile of a terminus station is a safe position. */ if (include_line_end) return true; } /* Check for reachable tracks. */ ft.m_new_td_bits &= DiagdirReachesTrackdirs(ft.m_exitdir); if (forbid_90deg) ft.m_new_td_bits &= ~TrackdirCrossesTrackdirs(trackdir); if (ft.m_new_td_bits == TRACKDIR_BIT_NONE) return include_line_end; if (ft.m_new_td_bits != TRACKDIR_BIT_NONE && KillFirstBit(ft.m_new_td_bits) == TRACKDIR_BIT_NONE) { Trackdir td = FindFirstTrackdir(ft.m_new_td_bits); /* PBS signal on next trackdir? Safe position. */ if (HasPbsSignalOnTrackdir(ft.m_new_tile, td)) return true; /* One-way PBS signal against us? Safe if end-of-line is allowed. */ if (IsTileType(ft.m_new_tile, MP_RAILWAY) && HasSignalOnTrackdir(ft.m_new_tile, ReverseTrackdir(td)) && GetSignalType(ft.m_new_tile, TrackdirToTrack(td)) == SIGTYPE_PBS_ONEWAY) { return include_line_end; } } return false; } /** * Check if a safe position is free. * * @param v the vehicle to test for * @param tile The tile * @param trackdir The trackdir to test * @param forbid_90deg Don't allow trains to make 90 degree turns * @return True if the position is free */ bool IsWaitingPositionFree(const Train *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg) { Track track = TrackdirToTrack(trackdir); TrackBits reserved = GetReservedTrackbits(tile); /* Tile reserved? Can never be a free waiting position. */ if (TrackOverlapsTracks(reserved, track)) return false; /* Not reserved and depot or not a pbs signal -> free. */ if (IsRailDepotTile(tile)) return true; if (IsTileType(tile, MP_RAILWAY) && HasSignalOnTrackdir(tile, trackdir) && !IsPbsSignal(GetSignalType(tile, track))) return true; /* Check the next tile, if it's a PBS signal, it has to be free as well. */ CFollowTrackRail ft(v, GetRailTypeInfo(v->railtype)->compatible_railtypes); if (!ft.Follow(tile, trackdir)) return true; /* Check for reachable tracks. */ ft.m_new_td_bits &= DiagdirReachesTrackdirs(ft.m_exitdir); if (forbid_90deg) ft.m_new_td_bits &= ~TrackdirCrossesTrackdirs(trackdir); return !HasReservedTracks(ft.m_new_tile, TrackdirBitsToTrackBits(ft.m_new_td_bits)); } openttd-1.3.3/src/order_base.h0000644000000000000000000003261012246102610014732 0ustar rootroot/* $Id: order_base.h 23947 2012-02-14 17:04:06Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_base.h Base class for orders. */ #ifndef ORDER_BASE_H #define ORDER_BASE_H #include "order_type.h" #include "core/pool_type.hpp" #include "core/bitmath_func.hpp" #include "cargo_type.h" #include "depot_type.h" #include "station_type.h" #include "vehicle_type.h" #include "date_type.h" typedef Pool OrderPool; typedef Pool OrderListPool; extern OrderPool _order_pool; extern OrderListPool _orderlist_pool; /* If you change this, keep in mind that it is saved on 3 places: * - Load_ORDR, all the global orders * - Vehicle -> current_order * - REF_ORDER (all REFs are currently limited to 16 bits!!) */ struct Order : OrderPool::PoolItem<&_order_pool> { private: friend const struct SaveLoad *GetVehicleDescription(VehicleType vt); ///< Saving and loading the current order of vehicles. friend void Load_VEHS(); ///< Loading of ancient vehicles. friend const struct SaveLoad *GetOrderDescription(); ///< Saving and loading of orders. uint8 type; ///< The type of order + non-stop flags uint8 flags; ///< Load/unload types, depot order/action types. DestinationID dest; ///< The destination of the order. CargoID refit_cargo; ///< Refit CargoID byte refit_subtype; ///< Refit subtype public: Order *next; ///< Pointer to next order. If NULL, end of list uint16 wait_time; ///< How long in ticks to wait at the destination. uint16 travel_time; ///< How long in ticks the journey to this destination should take. uint16 max_speed; ///< How fast the vehicle may go on the way to the destination. Order() : refit_cargo(CT_NO_REFIT), max_speed(UINT16_MAX) {} ~Order(); Order(uint32 packed); /** * Check whether this order is of the given type. * @param type the type to check against. * @return true if the order matches. */ inline bool IsType(OrderType type) const { return this->GetType() == type; } /** * Get the type of order of this order. * @return the order type. */ inline OrderType GetType() const { return (OrderType)GB(this->type, 0, 4); } void Free(); void MakeGoToStation(StationID destination); void MakeGoToDepot(DepotID destination, OrderDepotTypeFlags order, OrderNonStopFlags non_stop_type = ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS, OrderDepotActionFlags action = ODATF_SERVICE_ONLY, CargoID cargo = CT_NO_REFIT, byte subtype = 0); void MakeGoToWaypoint(StationID destination); void MakeLoading(bool ordered); void MakeLeaveStation(); void MakeDummy(); void MakeConditional(VehicleOrderID order); void MakeImplicit(StationID destination); /** * Is this a 'goto' order with a real destination? * @return True if the type is either #OT_GOTO_WAYPOINT, #OT_GOTO_DEPOT or #OT_GOTO_STATION. */ inline bool IsGotoOrder() const { return IsType(OT_GOTO_WAYPOINT) || IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION); } /** * Gets the destination of this order. * @pre IsType(OT_GOTO_WAYPOINT) || IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION). * @return the destination of the order. */ inline DestinationID GetDestination() const { return this->dest; } /** * Sets the destination of this order. * @param destination the new destination of the order. * @pre IsType(OT_GOTO_WAYPOINT) || IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION). */ inline void SetDestination(DestinationID destination) { this->dest = destination; } /** * Is this order a refit order. * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION) * @return true if a refit should happen. */ inline bool IsRefit() const { return this->refit_cargo < NUM_CARGO || this->refit_cargo == CT_AUTO_REFIT; } /** * Is this order a auto-refit order. * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION) * @return true if a auto-refit should happen. */ inline bool IsAutoRefit() const { return this->refit_cargo == CT_AUTO_REFIT; } /** * Get the cargo to to refit to. * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION) * @return the cargo type. */ inline CargoID GetRefitCargo() const { return this->refit_cargo; } /** * Get the cargo subtype to to refit to. * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION) * @return the cargo subtype. */ inline byte GetRefitSubtype() const { return this->refit_subtype; } void SetRefit(CargoID cargo, byte subtype = 0); /** How must the consist be loaded? */ inline OrderLoadFlags GetLoadType() const { return (OrderLoadFlags)GB(this->flags, 4, 4); } /** How must the consist be unloaded? */ inline OrderUnloadFlags GetUnloadType() const { return (OrderUnloadFlags)GB(this->flags, 0, 4); } /** At which stations must we stop? */ inline OrderNonStopFlags GetNonStopType() const { return (OrderNonStopFlags)GB(this->type, 6, 2); } /** Where must we stop at the platform? */ inline OrderStopLocation GetStopLocation() const { return (OrderStopLocation)GB(this->type, 4, 2); } /** What caused us going to the depot? */ inline OrderDepotTypeFlags GetDepotOrderType() const { return (OrderDepotTypeFlags)GB(this->flags, 0, 4); } /** What are we going to do when in the depot. */ inline OrderDepotActionFlags GetDepotActionType() const { return (OrderDepotActionFlags)GB(this->flags, 4, 4); } /** What variable do we have to compare? */ inline OrderConditionVariable GetConditionVariable() const { return (OrderConditionVariable)GB(this->dest, 11, 5); } /** What is the comparator to use? */ inline OrderConditionComparator GetConditionComparator() const { return (OrderConditionComparator)GB(this->type, 5, 3); } /** Get the order to skip to. */ inline VehicleOrderID GetConditionSkipToOrder() const { return this->flags; } /** Get the value to base the skip on. */ inline uint16 GetConditionValue() const { return GB(this->dest, 0, 11); } /** Set how the consist must be loaded. */ inline void SetLoadType(OrderLoadFlags load_type) { SB(this->flags, 4, 4, load_type); } /** Set how the consist must be unloaded. */ inline void SetUnloadType(OrderUnloadFlags unload_type) { SB(this->flags, 0, 4, unload_type); } /** Set whether we must stop at stations or not. */ inline void SetNonStopType(OrderNonStopFlags non_stop_type) { SB(this->type, 6, 2, non_stop_type); } /** Set where we must stop at the platform. */ inline void SetStopLocation(OrderStopLocation stop_location) { SB(this->type, 4, 2, stop_location); } /** Set the cause to go to the depot. */ inline void SetDepotOrderType(OrderDepotTypeFlags depot_order_type) { SB(this->flags, 0, 4, depot_order_type); } /** Set what we are going to do in the depot. */ inline void SetDepotActionType(OrderDepotActionFlags depot_service_type) { SB(this->flags, 4, 4, depot_service_type); } /** Set variable we have to compare. */ inline void SetConditionVariable(OrderConditionVariable condition_variable) { SB(this->dest, 11, 5, condition_variable); } /** Set the comparator to use. */ inline void SetConditionComparator(OrderConditionComparator condition_comparator) { SB(this->type, 5, 3, condition_comparator); } /** Get the order to skip to. */ inline void SetConditionSkipToOrder(VehicleOrderID order_id) { this->flags = order_id; } /** Set the value to base the skip on. */ inline void SetConditionValue(uint16 value) { SB(this->dest, 0, 11, value); } bool ShouldStopAtStation(const Vehicle *v, StationID station) const; TileIndex GetLocation(const Vehicle *v, bool airport = false) const; /** Checks if this order has travel_time and if needed wait_time set. */ inline bool IsCompletelyTimetabled() const { if (this->travel_time == 0 && !this->IsType(OT_CONDITIONAL)) return false; if (this->wait_time == 0 && this->IsType(OT_GOTO_STATION) && !(this->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) return false; return true; } void AssignOrder(const Order &other); bool Equals(const Order &other) const; uint32 Pack() const; uint16 MapOldOrder() const; void ConvertFromOldSavegame(); }; void InsertOrder(Vehicle *v, Order *new_o, VehicleOrderID sel_ord); void DeleteOrder(Vehicle *v, VehicleOrderID sel_ord); /** * Shared order list linking together the linked list of orders and the list * of vehicles sharing this order list. */ struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> { private: friend void AfterLoadVehicles(bool part_of_load); ///< For instantiating the shared vehicle chain friend const struct SaveLoad *GetOrderListDescription(); ///< Saving and loading of order lists. Order *first; ///< First order of the order list. VehicleOrderID num_orders; ///< NOSAVE: How many orders there are in the list. VehicleOrderID num_manual_orders; ///< NOSAVE: How many manually added orders are there in the list. uint num_vehicles; ///< NOSAVE: Number of vehicles that share this order list. Vehicle *first_shared; ///< NOSAVE: pointer to the first vehicle in the shared order chain. Ticks timetable_duration; ///< NOSAVE: Total duration of the order list public: /** Default constructor producing an invalid order list. */ OrderList(VehicleOrderID num_orders = INVALID_VEH_ORDER_ID) : first(NULL), num_orders(num_orders), num_manual_orders(0), num_vehicles(0), first_shared(NULL), timetable_duration(0) { } /** * Create an order list with the given order chain for the given vehicle. * @param chain pointer to the first order of the order chain * @param v any vehicle using this orderlist */ OrderList(Order *chain, Vehicle *v) { this->Initialize(chain, v); } /** Destructor. Invalidates OrderList for re-usage by the pool. */ ~OrderList() {} void Initialize(Order *chain, Vehicle *v); /** * Get the first order of the order chain. * @return the first order of the chain. */ inline Order *GetFirstOrder() const { return this->first; } Order *GetOrderAt(int index) const; /** * Get the last order of the order chain. * @return the last order of the chain. */ inline Order *GetLastOrder() const { return this->GetOrderAt(this->num_orders - 1); } /** * Get number of orders in the order list. * @return number of orders in the chain. */ inline VehicleOrderID GetNumOrders() const { return this->num_orders; } /** * Get number of manually added orders in the order list. * @return number of manual orders in the chain. */ inline VehicleOrderID GetNumManualOrders() const { return this->num_manual_orders; } void InsertOrderAt(Order *new_order, int index); void DeleteOrderAt(int index); void MoveOrder(int from, int to); /** * Is this a shared order list? * @return whether this order list is shared among multiple vehicles */ inline bool IsShared() const { return this->num_vehicles > 1; }; /** * Get the first vehicle of this vehicle chain. * @return the first vehicle of the chain. */ inline Vehicle *GetFirstSharedVehicle() const { return this->first_shared; } /** * Return the number of vehicles that share this orders list * @return the count of vehicles that use this shared orders list */ inline uint GetNumVehicles() const { return this->num_vehicles; } bool IsVehicleInSharedOrdersList(const Vehicle *v) const; int GetPositionInSharedOrderList(const Vehicle *v) const; /** * Adds the given vehicle to this shared order list. * @note This is supposed to be called after the vehicle has been inserted * into the shared vehicle chain. * @param v vehicle to add to the list */ inline void AddVehicle(Vehicle *v) { ++this->num_vehicles; } void RemoveVehicle(Vehicle *v); bool IsCompleteTimetable() const; /** * Gets the total duration of the vehicles timetable or INVALID_TICKS is the timetable is not complete. * @return total timetable duration or INVALID_TICKS for incomplete timetables */ inline Ticks GetTimetableTotalDuration() const { return this->IsCompleteTimetable() ? this->timetable_duration : INVALID_TICKS; } /** * Gets the known duration of the vehicles timetable even if the timetable is not complete. * @return known timetable duration */ inline Ticks GetTimetableDurationIncomplete() const { return this->timetable_duration; } /** * Must be called if an order's timetable is changed to update internal book keeping. * @param delta By how many ticks has the timetable duration changed */ void UpdateOrderTimetable(Ticks delta) { this->timetable_duration += delta; } void FreeChain(bool keep_orderlist = false); void DebugCheckSanity() const; }; #define FOR_ALL_ORDERS_FROM(var, start) FOR_ALL_ITEMS_FROM(Order, order_index, var, start) #define FOR_ALL_ORDERS(var) FOR_ALL_ORDERS_FROM(var, 0) #define FOR_VEHICLE_ORDERS(v, order) for (order = (v->orders.list == NULL) ? NULL : v->orders.list->GetFirstOrder(); order != NULL; order = order->next) #define FOR_ALL_ORDER_LISTS_FROM(var, start) FOR_ALL_ITEMS_FROM(OrderList, orderlist_index, var, start) #define FOR_ALL_ORDER_LISTS(var) FOR_ALL_ORDER_LISTS_FROM(var, 0) #endif /* ORDER_BASE_H */ openttd-1.3.3/src/settings.cpp0000644000000000000000000017444012246102610015030 0ustar rootroot/* $Id: settings.cpp 24996 2013-02-14 17:08:56Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file settings.cpp * All actions handling saving and loading of the settings/configuration goes on in this file. * The file consists of three parts: *
    *
  1. Parsing the configuration file (openttd.cfg). This is achieved with the ini_ functions which * handle various types, such as normal 'key = value' pairs, lists and value combinations of * lists, strings, integers, 'bit'-masks and element selections. *
  2. Handle reading and writing to the setting-structures from inside the game either from * the console for example or through the gui with CMD_ functions. *
  3. Handle saving/loading of the PATS chunk inside the savegame. *
* @see SettingDesc * @see SaveLoad */ #include "stdafx.h" #include "currency.h" #include "screenshot.h" #include "network/network.h" #include "network/network_func.h" #include "settings_internal.h" #include "command_func.h" #include "console_func.h" #include "pathfinder/pathfinder_type.h" #include "genworld.h" #include "train.h" #include "news_func.h" #include "window_func.h" #include "sound_func.h" #include "company_func.h" #include "rev.h" #ifdef WITH_FREETYPE #include "fontcache.h" #endif #include "textbuf_gui.h" #include "rail_gui.h" #include "elrail_func.h" #include "error.h" #include "town.h" #include "video/video_driver.hpp" #include "sound/sound_driver.hpp" #include "music/music_driver.hpp" #include "blitter/factory.hpp" #include "base_media_base.h" #include "gamelog.h" #include "settings_func.h" #include "ini_type.h" #include "ai/ai_config.hpp" #include "ai/ai.hpp" #include "game/game_config.hpp" #include "game/game.hpp" #include "ship.h" #include "smallmap_gui.h" #include "roadveh.h" #include "fios.h" #include "strings_func.h" #include "void_map.h" #include "station_base.h" #include "table/strings.h" #include "table/settings.h" ClientSettings _settings_client; GameSettings _settings_game; ///< Game settings of a running game or the scenario editor. GameSettings _settings_newgame; ///< Game settings for new games (updated from the intro screen). VehicleDefaultSettings _old_vds; ///< Used for loading default vehicles settings from old savegames char *_config_file; ///< Configuration file of OpenTTD typedef std::list ErrorList; static ErrorList _settings_error_list; ///< Errors while loading minimal settings. typedef void SettingDescProc(IniFile *ini, const SettingDesc *desc, const char *grpname, void *object); typedef void SettingDescProcList(IniFile *ini, const char *grpname, StringList *list); static bool IsSignedVarMemType(VarType vt); /** * Groups in openttd.cfg that are actually lists. */ static const char * const _list_group_names[] = { "bans", "newgrf", "servers", "server_bind_addresses", NULL }; /** * Find the index value of a ONEofMANY type in a string separated by | * @param many full domain of values the ONEofMANY setting can have * @param one the current value of the setting for which a value needs found * @param onelen force calculation of the *one parameter * @return the integer index of the full-list, or -1 if not found */ static size_t LookupOneOfMany(const char *many, const char *one, size_t onelen = 0) { const char *s; size_t idx; if (onelen == 0) onelen = strlen(one); /* check if it's an integer */ if (*one >= '0' && *one <= '9') return strtoul(one, NULL, 0); idx = 0; for (;;) { /* find end of item */ s = many; while (*s != '|' && *s != 0) s++; if ((size_t)(s - many) == onelen && !memcmp(one, many, onelen)) return idx; if (*s == 0) return (size_t)-1; many = s + 1; idx++; } } /** * Find the set-integer value MANYofMANY type in a string * @param many full domain of values the MANYofMANY setting can have * @param str the current string value of the setting, each individual * of separated by a whitespace,tab or | character * @return the 'fully' set integer, or -1 if a set is not found */ static size_t LookupManyOfMany(const char *many, const char *str) { const char *s; size_t r; size_t res = 0; for (;;) { /* skip "whitespace" */ while (*str == ' ' || *str == '\t' || *str == '|') str++; if (*str == 0) break; s = str; while (*s != 0 && *s != ' ' && *s != '\t' && *s != '|') s++; r = LookupOneOfMany(many, str, s - str); if (r == (size_t)-1) return r; SetBit(res, (uint8)r); // value found, set it if (*s == 0) break; str = s + 1; } return res; } /** * Parse an integerlist string and set each found value * @param p the string to be parsed. Each element in the list is separated by a * comma or a space character * @param items pointer to the integerlist-array that will be filled with values * @param maxitems the maximum number of elements the integerlist-array has * @return returns the number of items found, or -1 on an error */ static int ParseIntList(const char *p, int *items, int maxitems) { int n = 0; // number of items read so far bool comma = false; // do we accept comma? while (*p != '\0') { switch (*p) { case ',': /* Do not accept multiple commas between numbers */ if (!comma) return -1; comma = false; /* FALL THROUGH */ case ' ': p++; break; default: { if (n == maxitems) return -1; // we don't accept that many numbers char *end; long v = strtol(p, &end, 0); if (p == end) return -1; // invalid character (not a number) if (sizeof(int) < sizeof(long)) v = ClampToI32(v); items[n++] = v; p = end; // first non-number comma = true; // we accept comma now break; } } } /* If we have read comma but no number after it, fail. * We have read comma when (n != 0) and comma is not allowed */ if (n != 0 && !comma) return -1; return n; } /** * Load parsed string-values into an integer-array (intlist) * @param str the string that contains the values (and will be parsed) * @param array pointer to the integer-arrays that will be filled * @param nelems the number of elements the array holds. Maximum is 64 elements * @param type the type of elements the array holds (eg INT8, UINT16, etc.) * @return return true on success and false on error */ static bool LoadIntList(const char *str, void *array, int nelems, VarType type) { int items[64]; int i, nitems; if (str == NULL) { memset(items, 0, sizeof(items)); nitems = nelems; } else { nitems = ParseIntList(str, items, lengthof(items)); if (nitems != nelems) return false; } switch (type) { case SLE_VAR_BL: case SLE_VAR_I8: case SLE_VAR_U8: for (i = 0; i != nitems; i++) ((byte*)array)[i] = items[i]; break; case SLE_VAR_I16: case SLE_VAR_U16: for (i = 0; i != nitems; i++) ((uint16*)array)[i] = items[i]; break; case SLE_VAR_I32: case SLE_VAR_U32: for (i = 0; i != nitems; i++) ((uint32*)array)[i] = items[i]; break; default: NOT_REACHED(); } return true; } /** * Convert an integer-array (intlist) to a string representation. Each value * is separated by a comma or a space character * @param buf output buffer where the string-representation will be stored * @param last last item to write to in the output buffer * @param array pointer to the integer-arrays that is read from * @param nelems the number of elements the array holds. * @param type the type of elements the array holds (eg INT8, UINT16, etc.) */ static void MakeIntList(char *buf, const char *last, const void *array, int nelems, VarType type) { int i, v = 0; const byte *p = (const byte *)array; for (i = 0; i != nelems; i++) { switch (type) { case SLE_VAR_BL: case SLE_VAR_I8: v = *(const int8 *)p; p += 1; break; case SLE_VAR_U8: v = *(const uint8 *)p; p += 1; break; case SLE_VAR_I16: v = *(const int16 *)p; p += 2; break; case SLE_VAR_U16: v = *(const uint16 *)p; p += 2; break; case SLE_VAR_I32: v = *(const int32 *)p; p += 4; break; case SLE_VAR_U32: v = *(const uint32 *)p; p += 4; break; default: NOT_REACHED(); } buf += seprintf(buf, last, (i == 0) ? "%d" : ",%d", v); } } /** * Convert a ONEofMANY structure to a string representation. * @param buf output buffer where the string-representation will be stored * @param last last item to write to in the output buffer * @param many the full-domain string of possible values * @param id the value of the variable and whose string-representation must be found */ static void MakeOneOfMany(char *buf, const char *last, const char *many, int id) { int orig_id = id; /* Look for the id'th element */ while (--id >= 0) { for (; *many != '|'; many++) { if (*many == '\0') { // not found seprintf(buf, last, "%d", orig_id); return; } } many++; // pass the |-character } /* copy string until next item (|) or the end of the list if this is the last one */ while (*many != '\0' && *many != '|' && buf < last) *buf++ = *many++; *buf = '\0'; } /** * Convert a MANYofMANY structure to a string representation. * @param buf output buffer where the string-representation will be stored * @param last last item to write to in the output buffer * @param many the full-domain string of possible values * @param x the value of the variable and whose string-representation must * be found in the bitmasked many string */ static void MakeManyOfMany(char *buf, const char *last, const char *many, uint32 x) { const char *start; int i = 0; bool init = true; for (; x != 0; x >>= 1, i++) { start = many; while (*many != 0 && *many != '|') many++; // advance to the next element if (HasBit(x, 0)) { // item found, copy it if (!init) buf += seprintf(buf, last, "|"); init = false; if (start == many) { buf += seprintf(buf, last, "%d", i); } else { memcpy(buf, start, many - start); buf += many - start; } } if (*many == '|') many++; } *buf = '\0'; } /** * Convert a string representation (external) of a setting to the internal rep. * @param desc SettingDesc struct that holds all information about the variable * @param orig_str input string that will be parsed based on the type of desc * @return return the parsed value of the setting */ static const void *StringToVal(const SettingDescBase *desc, const char *orig_str) { const char *str = orig_str == NULL ? "" : orig_str; switch (desc->cmd) { case SDT_NUMX: { char *end; size_t val = strtoul(str, &end, 0); if (end == str) { ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE); msg.SetDParamStr(0, str); msg.SetDParamStr(1, desc->name); _settings_error_list.push_back(msg); return desc->def; } if (*end != '\0') { ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_TRAILING_CHARACTERS); msg.SetDParamStr(0, desc->name); _settings_error_list.push_back(msg); } return (void*)val; } case SDT_ONEOFMANY: { size_t r = LookupOneOfMany(desc->many, str); /* if the first attempt of conversion from string to the appropriate value fails, * look if we have defined a converter from old value to new value. */ if (r == (size_t)-1 && desc->proc_cnvt != NULL) r = desc->proc_cnvt(str); if (r != (size_t)-1) return (void*)r; // and here goes converted value ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE); msg.SetDParamStr(0, str); msg.SetDParamStr(1, desc->name); _settings_error_list.push_back(msg); return desc->def; } case SDT_MANYOFMANY: { size_t r = LookupManyOfMany(desc->many, str); if (r != (size_t)-1) return (void*)r; ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE); msg.SetDParamStr(0, str); msg.SetDParamStr(1, desc->name); _settings_error_list.push_back(msg); return desc->def; } case SDT_BOOLX: { if (strcmp(str, "true") == 0 || strcmp(str, "on") == 0 || strcmp(str, "1") == 0) return (void*)true; if (strcmp(str, "false") == 0 || strcmp(str, "off") == 0 || strcmp(str, "0") == 0) return (void*)false; ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE); msg.SetDParamStr(0, str); msg.SetDParamStr(1, desc->name); _settings_error_list.push_back(msg); return desc->def; } case SDT_STRING: return orig_str; case SDT_INTLIST: return str; default: break; } return NULL; } /** * Set the value of a setting and if needed clamp the value to * the preset minimum and maximum. * @param ptr the variable itself * @param sd pointer to the 'information'-database of the variable * @param val signed long version of the new value * @pre SettingDesc is of type SDT_BOOLX, SDT_NUMX, * SDT_ONEOFMANY or SDT_MANYOFMANY. Other types are not supported as of now */ static void Write_ValidateSetting(void *ptr, const SettingDesc *sd, int32 val) { const SettingDescBase *sdb = &sd->desc; if (sdb->cmd != SDT_BOOLX && sdb->cmd != SDT_NUMX && sdb->cmd != SDT_ONEOFMANY && sdb->cmd != SDT_MANYOFMANY) { return; } /* We cannot know the maximum value of a bitset variable, so just have faith */ if (sdb->cmd != SDT_MANYOFMANY) { /* We need to take special care of the uint32 type as we receive from the function * a signed integer. While here also bail out on 64-bit settings as those are not * supported. Unsigned 8 and 16-bit variables are safe since they fit into a signed * 32-bit variable * TODO: Support 64-bit settings/variables */ switch (GetVarMemType(sd->save.conv)) { case SLE_VAR_NULL: return; case SLE_VAR_BL: case SLE_VAR_I8: case SLE_VAR_U8: case SLE_VAR_I16: case SLE_VAR_U16: case SLE_VAR_I32: { /* Override the minimum value. No value below sdb->min, except special value 0 */ if (!(sdb->flags & SGF_0ISDISABLED) || val != 0) val = Clamp(val, sdb->min, sdb->max); break; } case SLE_VAR_U32: { /* Override the minimum value. No value below sdb->min, except special value 0 */ uint min = ((sdb->flags & SGF_0ISDISABLED) && (uint)val <= (uint)sdb->min) ? 0 : sdb->min; WriteValue(ptr, SLE_VAR_U32, (int64)ClampU(val, min, sdb->max)); return; } case SLE_VAR_I64: case SLE_VAR_U64: default: NOT_REACHED(); } } WriteValue(ptr, sd->save.conv, (int64)val); } /** * Load values from a group of an IniFile structure into the internal representation * @param ini pointer to IniFile structure that holds administrative information * @param sd pointer to SettingDesc structure whose internally pointed variables will * be given values * @param grpname the group of the IniFile to search in for the new values * @param object pointer to the object been loaded */ static void IniLoadSettings(IniFile *ini, const SettingDesc *sd, const char *grpname, void *object) { IniGroup *group; IniGroup *group_def = ini->GetGroup(grpname); IniItem *item; const void *p; void *ptr; const char *s; for (; sd->save.cmd != SL_END; sd++) { const SettingDescBase *sdb = &sd->desc; const SaveLoad *sld = &sd->save; if (!SlIsObjectCurrentlyValid(sld->version_from, sld->version_to)) continue; /* For settings.xx.yy load the settings from [xx] yy = ? */ s = strchr(sdb->name, '.'); if (s != NULL) { group = ini->GetGroup(sdb->name, s - sdb->name); s++; } else { s = sdb->name; group = group_def; } item = group->GetItem(s, false); if (item == NULL && group != group_def) { /* For settings.xx.yy load the settings from [settingss] yy = ? in case the previous * did not exist (e.g. loading old config files with a [settings] section */ item = group_def->GetItem(s, false); } if (item == NULL) { /* For settings.xx.zz.yy load the settings from [zz] yy = ? in case the previous * did not exist (e.g. loading old config files with a [yapf] section */ const char *sc = strchr(s, '.'); if (sc != NULL) item = ini->GetGroup(s, sc - s)->GetItem(sc + 1, false); } p = (item == NULL) ? sdb->def : StringToVal(sdb, item->value); ptr = GetVariableAddress(object, sld); switch (sdb->cmd) { case SDT_BOOLX: // All four are various types of (integer) numbers case SDT_NUMX: case SDT_ONEOFMANY: case SDT_MANYOFMANY: Write_ValidateSetting(ptr, sd, (int32)(size_t)p); break; case SDT_STRING: switch (GetVarMemType(sld->conv)) { case SLE_VAR_STRB: case SLE_VAR_STRBQ: if (p != NULL) ttd_strlcpy((char*)ptr, (const char*)p, sld->length); break; case SLE_VAR_STR: case SLE_VAR_STRQ: free(*(char**)ptr); *(char**)ptr = p == NULL ? NULL : strdup((const char*)p); break; case SLE_VAR_CHAR: if (p != NULL) *(char *)ptr = *(const char *)p; break; default: NOT_REACHED(); } break; case SDT_INTLIST: { if (!LoadIntList((const char*)p, ptr, sld->length, GetVarMemType(sld->conv))) { ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_ARRAY); msg.SetDParamStr(0, sdb->name); _settings_error_list.push_back(msg); /* Use default */ LoadIntList((const char*)sdb->def, ptr, sld->length, GetVarMemType(sld->conv)); } else if (sd->desc.proc_cnvt != NULL) { sd->desc.proc_cnvt((const char*)p); } break; } default: NOT_REACHED(); } } } /** * Save the values of settings to the inifile. * @param ini pointer to IniFile structure * @param sd read-only SettingDesc structure which contains the unmodified, * loaded values of the configuration file and various information about it * @param grpname holds the name of the group (eg. [network]) where these will be saved * @param object pointer to the object been saved * The function works as follows: for each item in the SettingDesc structure we * have a look if the value has changed since we started the game (the original * values are reloaded when saving). If settings indeed have changed, we get * these and save them. */ static void IniSaveSettings(IniFile *ini, const SettingDesc *sd, const char *grpname, void *object) { IniGroup *group_def = NULL, *group; IniItem *item; char buf[512]; const char *s; void *ptr; for (; sd->save.cmd != SL_END; sd++) { const SettingDescBase *sdb = &sd->desc; const SaveLoad *sld = &sd->save; /* If the setting is not saved to the configuration * file, just continue with the next setting */ if (!SlIsObjectCurrentlyValid(sld->version_from, sld->version_to)) continue; if (sld->conv & SLF_NOT_IN_CONFIG) continue; /* XXX - wtf is this?? (group override?) */ s = strchr(sdb->name, '.'); if (s != NULL) { group = ini->GetGroup(sdb->name, s - sdb->name); s++; } else { if (group_def == NULL) group_def = ini->GetGroup(grpname); s = sdb->name; group = group_def; } item = group->GetItem(s, true); ptr = GetVariableAddress(object, sld); if (item->value != NULL) { /* check if the value is the same as the old value */ const void *p = StringToVal(sdb, item->value); /* The main type of a variable/setting is in bytes 8-15 * The subtype (what kind of numbers do we have there) is in 0-7 */ switch (sdb->cmd) { case SDT_BOOLX: case SDT_NUMX: case SDT_ONEOFMANY: case SDT_MANYOFMANY: switch (GetVarMemType(sld->conv)) { case SLE_VAR_BL: if (*(bool*)ptr == (p != NULL)) continue; break; case SLE_VAR_I8: case SLE_VAR_U8: if (*(byte*)ptr == (byte)(size_t)p) continue; break; case SLE_VAR_I16: case SLE_VAR_U16: if (*(uint16*)ptr == (uint16)(size_t)p) continue; break; case SLE_VAR_I32: case SLE_VAR_U32: if (*(uint32*)ptr == (uint32)(size_t)p) continue; break; default: NOT_REACHED(); } break; default: break; // Assume the other types are always changed } } /* Value has changed, get the new value and put it into a buffer */ switch (sdb->cmd) { case SDT_BOOLX: case SDT_NUMX: case SDT_ONEOFMANY: case SDT_MANYOFMANY: { uint32 i = (uint32)ReadValue(ptr, sld->conv); switch (sdb->cmd) { case SDT_BOOLX: strecpy(buf, (i != 0) ? "true" : "false", lastof(buf)); break; case SDT_NUMX: seprintf(buf, lastof(buf), IsSignedVarMemType(sld->conv) ? "%d" : "%u", i); break; case SDT_ONEOFMANY: MakeOneOfMany(buf, lastof(buf), sdb->many, i); break; case SDT_MANYOFMANY: MakeManyOfMany(buf, lastof(buf), sdb->many, i); break; default: NOT_REACHED(); } break; } case SDT_STRING: switch (GetVarMemType(sld->conv)) { case SLE_VAR_STRB: strecpy(buf, (char*)ptr, lastof(buf)); break; case SLE_VAR_STRBQ:seprintf(buf, lastof(buf), "\"%s\"", (char*)ptr); break; case SLE_VAR_STR: strecpy(buf, *(char**)ptr, lastof(buf)); break; case SLE_VAR_STRQ: if (*(char**)ptr == NULL) { buf[0] = '\0'; } else { seprintf(buf, lastof(buf), "\"%s\"", *(char**)ptr); } break; case SLE_VAR_CHAR: buf[0] = *(char*)ptr; buf[1] = '\0'; break; default: NOT_REACHED(); } break; case SDT_INTLIST: MakeIntList(buf, lastof(buf), ptr, sld->length, GetVarMemType(sld->conv)); break; default: NOT_REACHED(); } /* The value is different, that means we have to write it to the ini */ free(item->value); item->value = strdup(buf); } } /** * Loads all items from a 'grpname' section into a list * The list parameter can be a NULL pointer, in this case nothing will be * saved and a callback function should be defined that will take over the * list-handling and store the data itself somewhere. * @param ini IniFile handle to the ini file with the source data * @param grpname character string identifying the section-header of the ini file that will be parsed * @param list new list with entries of the given section */ static void IniLoadSettingList(IniFile *ini, const char *grpname, StringList *list) { IniGroup *group = ini->GetGroup(grpname); if (group == NULL || list == NULL) return; list->Clear(); for (const IniItem *item = group->item; item != NULL; item = item->next) { if (item->name != NULL) *list->Append() = strdup(item->name); } } /** * Saves all items from a list into the 'grpname' section * The list parameter can be a NULL pointer, in this case a callback function * should be defined that will provide the source data to be saved. * @param ini IniFile handle to the ini file where the destination data is saved * @param grpname character string identifying the section-header of the ini file * @param list pointer to an string(pointer) array that will be used as the * source to be saved into the relevant ini section */ static void IniSaveSettingList(IniFile *ini, const char *grpname, StringList *list) { IniGroup *group = ini->GetGroup(grpname); if (group == NULL || list == NULL) return; group->Clear(); for (char **iter = list->Begin(); iter != list->End(); iter++) { group->GetItem(*iter, true)->SetValue(""); } } /** * Check whether the setting is editable in the current gamemode. * @param do_command true if this is about checking a command from the server. * @return true if editable. */ bool SettingDesc::IsEditable(bool do_command) const { if (!do_command && !(this->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server && !(this->desc.flags & SGF_PER_COMPANY)) return false; if ((this->desc.flags & SGF_NETWORK_ONLY) && !_networking && _game_mode != GM_MENU) return false; if ((this->desc.flags & SGF_NO_NETWORK) && _networking) return false; if ((this->desc.flags & SGF_NEWGAME_ONLY) && (_game_mode == GM_NORMAL || (_game_mode == GM_EDITOR && !(this->desc.flags & SGF_SCENEDIT_TOO)))) return false; return true; } /** * Return the type of the setting. * @return type of setting */ SettingType SettingDesc::GetType() const { if (this->desc.flags & SGF_PER_COMPANY) return ST_COMPANY; return (this->save.conv & SLF_NOT_IN_SAVE) ? ST_CLIENT : ST_GAME; } /* Begin - Callback Functions for the various settings. */ /** Reposition the main toolbar as the setting changed. */ static bool v_PositionMainToolbar(int32 p1) { if (_game_mode != GM_MENU) PositionMainToolbar(NULL); return true; } /** Reposition the statusbar as the setting changed. */ static bool v_PositionStatusbar(int32 p1) { if (_game_mode != GM_MENU) { PositionStatusbar(NULL); PositionNewsMessage(NULL); PositionNetworkChatWindow(NULL); } return true; } static bool PopulationInLabelActive(int32 p1) { UpdateAllTownVirtCoords(); return true; } static bool RedrawScreen(int32 p1) { MarkWholeScreenDirty(); return true; } /** * Redraw the smallmap after a colour scheme change. * @param p1 Callback parameter. * @return Always true. */ static bool RedrawSmallmap(int32 p1) { BuildLandLegend(); BuildOwnerLegend(); SetWindowClassesDirty(WC_SMALLMAP); return true; } static bool InvalidateDetailsWindow(int32 p1) { SetWindowClassesDirty(WC_VEHICLE_DETAILS); return true; } static bool StationSpreadChanged(int32 p1) { InvalidateWindowData(WC_SELECT_STATION, 0); InvalidateWindowData(WC_BUILD_STATION, 0); return true; } static bool InvalidateBuildIndustryWindow(int32 p1) { InvalidateWindowData(WC_BUILD_INDUSTRY, 0); return true; } static bool CloseSignalGUI(int32 p1) { if (p1 == 0) { DeleteWindowByClass(WC_BUILD_SIGNAL); } return true; } static bool InvalidateTownViewWindow(int32 p1) { InvalidateWindowClassesData(WC_TOWN_VIEW, p1); return true; } static bool DeleteSelectStationWindow(int32 p1) { DeleteWindowById(WC_SELECT_STATION, 0); return true; } static bool UpdateConsists(int32 p1) { Train *t; FOR_ALL_TRAINS(t) { /* Update the consist of all trains so the maximum speed is set correctly. */ if (t->IsFrontEngine() || t->IsFreeWagon()) t->ConsistChanged(true); } InvalidateWindowClassesData(WC_BUILD_VEHICLE, 0); return true; } /* Check service intervals of vehicles, p1 is value of % or day based servicing */ static bool CheckInterval(int32 p1) { bool update_vehicles; VehicleDefaultSettings *vds; if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) { vds = &_settings_client.company.vehicle; update_vehicles = false; } else { vds = &Company::Get(_current_company)->settings.vehicle; update_vehicles = true; } if (p1 != 0) { vds->servint_trains = 50; vds->servint_roadveh = 50; vds->servint_aircraft = 50; vds->servint_ships = 50; } else { vds->servint_trains = 150; vds->servint_roadveh = 150; vds->servint_aircraft = 100; vds->servint_ships = 360; } if (update_vehicles) { const Company *c = Company::Get(_current_company); Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner == _current_company && v->IsPrimaryVehicle() && !v->ServiceIntervalIsCustom()) { v->SetServiceInterval(CompanyServiceInterval(c, v->type)); v->SetServiceIntervalIsPercent(p1 != 0); } } } InvalidateDetailsWindow(0); return true; } static bool UpdateInterval(VehicleType type, int32 p1) { bool update_vehicles; VehicleDefaultSettings *vds; if (_game_mode == GM_MENU || !Company::IsValidID(_current_company)) { vds = &_settings_client.company.vehicle; update_vehicles = false; } else { vds = &Company::Get(_current_company)->settings.vehicle; update_vehicles = true; } /* Test if the interval is valid */ uint16 interval = GetServiceIntervalClamped(p1, vds->servint_ispercent); if (interval != p1) return false; if (update_vehicles) { Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->owner == _current_company && v->type == type && v->IsPrimaryVehicle() && !v->ServiceIntervalIsCustom()) { v->SetServiceInterval(p1); } } } InvalidateDetailsWindow(0); return true; } static bool UpdateIntervalTrains(int32 p1) { return UpdateInterval(VEH_TRAIN, p1); } static bool UpdateIntervalRoadVeh(int32 p1) { return UpdateInterval(VEH_ROAD, p1); } static bool UpdateIntervalShips(int32 p1) { return UpdateInterval(VEH_SHIP, p1); } static bool UpdateIntervalAircraft(int32 p1) { return UpdateInterval(VEH_AIRCRAFT, p1); } static bool TrainAccelerationModelChanged(int32 p1) { Train *t; FOR_ALL_TRAINS(t) { if (t->IsFrontEngine()) { t->tcache.cached_max_curve_speed = t->GetCurveSpeedLimit(); t->UpdateAcceleration(); } } /* These windows show acceleration values only when realistic acceleration is on. They must be redrawn after a setting change. */ SetWindowClassesDirty(WC_ENGINE_PREVIEW); InvalidateWindowClassesData(WC_BUILD_VEHICLE, 0); SetWindowClassesDirty(WC_VEHICLE_DETAILS); return true; } /** * This function updates the train acceleration cache after a steepness change. * @param p1 Callback parameter. * @return Always true. */ static bool TrainSlopeSteepnessChanged(int32 p1) { Train *t; FOR_ALL_TRAINS(t) { if (t->IsFrontEngine()) t->CargoChanged(); } return true; } /** * This function updates realistic acceleration caches when the setting "Road vehicle acceleration model" is set. * @param p1 Callback parameter * @return Always true */ static bool RoadVehAccelerationModelChanged(int32 p1) { if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) { RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->IsFrontEngine()) { rv->CargoChanged(); } } } /* These windows show acceleration values only when realistic acceleration is on. They must be redrawn after a setting change. */ SetWindowClassesDirty(WC_ENGINE_PREVIEW); InvalidateWindowClassesData(WC_BUILD_VEHICLE, 0); SetWindowClassesDirty(WC_VEHICLE_DETAILS); return true; } /** * This function updates the road vehicle acceleration cache after a steepness change. * @param p1 Callback parameter. * @return Always true. */ static bool RoadVehSlopeSteepnessChanged(int32 p1) { RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->IsFrontEngine()) rv->CargoChanged(); } return true; } static bool DragSignalsDensityChanged(int32) { InvalidateWindowData(WC_BUILD_SIGNAL, 0); return true; } static bool TownFoundingChanged(int32 p1) { if (_game_mode != GM_EDITOR && _settings_game.economy.found_town == TF_FORBIDDEN) { DeleteWindowById(WC_FOUND_TOWN, 0); return true; } InvalidateWindowData(WC_FOUND_TOWN, 0); return true; } static bool InvalidateVehTimetableWindow(int32 p1) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); return true; } static bool ZoomMinMaxChanged(int32 p1) { extern void ConstrainAllViewportsZoom(); ConstrainAllViewportsZoom(); GfxClearSpriteCache(); return true; } /** * Update any possible saveload window and delete any newgrf dialogue as * its widget parts might change. Reinit all windows as it allows access to the * newgrf debug button. * @param p1 unused. * @return Always true. */ static bool InvalidateNewGRFChangeWindows(int32 p1) { InvalidateWindowClassesData(WC_SAVELOAD); DeleteWindowByClass(WC_GAME_OPTIONS); ReInitAllWindows(); return true; } static bool InvalidateCompanyLiveryWindow(int32 p1) { InvalidateWindowClassesData(WC_COMPANY_COLOUR); return RedrawScreen(p1); } static bool InvalidateIndustryViewWindow(int32 p1) { InvalidateWindowClassesData(WC_INDUSTRY_VIEW); return true; } static bool InvalidateAISettingsWindow(int32 p1) { InvalidateWindowClassesData(WC_AI_SETTINGS); return true; } /** * Update the town authority window after a town authority setting change. * @param p1 Unused. * @return Always true. */ static bool RedrawTownAuthority(int32 p1) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); return true; } /** * Invalidate the company infrastructure details window after a infrastructure maintenance setting change. * @param p1 Unused. * @return Always true. */ static bool InvalidateCompanyInfrastructureWindow(int32 p1) { InvalidateWindowClassesData(WC_COMPANY_INFRASTRUCTURE); return true; } /** * Invalidate the company details window after the shares setting changed. * @param p1 Unused. * @return Always true. */ static bool InvalidateCompanyWindow(int32 p1) { InvalidateWindowClassesData(WC_COMPANY); return true; } /** Checks if any settings are set to incorrect values, and sets them to correct values in that case. */ static void ValidateSettings() { /* Do not allow a custom sea level with the original land generator. */ if (_settings_newgame.game_creation.land_generator == 0 && _settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { _settings_newgame.difficulty.quantity_sea_lakes = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE; } } static bool DifficultyNoiseChange(int32 i) { if (_game_mode == GM_NORMAL) { UpdateAirportsNoise(); if (_settings_game.economy.station_noise_level) { InvalidateWindowClassesData(WC_TOWN_VIEW, 0); } } return true; } static bool MaxNoAIsChange(int32 i) { if (GetGameSettings().difficulty.max_no_competitors != 0 && AI::GetInfoList()->size() == 0 && (!_networking || _network_server)) { ShowErrorMessage(STR_WARNING_NO_SUITABLE_AI, INVALID_STRING_ID, WL_CRITICAL); } return true; } /** * Check whether the road side may be changed. * @param p1 unused * @return true if the road side may be changed. */ static bool CheckRoadSide(int p1) { extern bool RoadVehiclesAreBuilt(); return _game_mode == GM_MENU || !RoadVehiclesAreBuilt(); } /** * Conversion callback for _gameopt_settings_game.landscape * It converts (or try) between old values and the new ones, * without losing initial setting of the user * @param value that was read from config file * @return the "hopefully" converted value */ static size_t ConvertLandscape(const char *value) { /* try with the old values */ return LookupOneOfMany("normal|hilly|desert|candy", value); } static bool CheckFreeformEdges(int32 p1) { if (_game_mode == GM_MENU) return true; if (p1 != 0) { Ship *s; FOR_ALL_SHIPS(s) { /* Check if there is a ship on the northern border. */ if (TileX(s->tile) == 0 || TileY(s->tile) == 0) { ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_EMPTY, INVALID_STRING_ID, WL_ERROR); return false; } } BaseStation *st; FOR_ALL_BASE_STATIONS(st) { /* Check if there is a non-deleted buoy on the northern border. */ if (st->IsInUse() && (TileX(st->xy) == 0 || TileY(st->xy) == 0)) { ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_EMPTY, INVALID_STRING_ID, WL_ERROR); return false; } } for (uint i = 0; i < MapSizeX(); i++) MakeVoid(TileXY(i, 0)); for (uint i = 0; i < MapSizeY(); i++) MakeVoid(TileXY(0, i)); } else { for (uint i = 0; i < MapMaxX(); i++) { if (TileHeight(TileXY(i, 1)) != 0) { ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_WATER, INVALID_STRING_ID, WL_ERROR); return false; } } for (uint i = 1; i < MapMaxX(); i++) { if (!IsTileType(TileXY(i, MapMaxY() - 1), MP_WATER) || TileHeight(TileXY(1, MapMaxY())) != 0) { ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_WATER, INVALID_STRING_ID, WL_ERROR); return false; } } for (uint i = 0; i < MapMaxY(); i++) { if (TileHeight(TileXY(1, i)) != 0) { ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_WATER, INVALID_STRING_ID, WL_ERROR); return false; } } for (uint i = 1; i < MapMaxY(); i++) { if (!IsTileType(TileXY(MapMaxX() - 1, i), MP_WATER) || TileHeight(TileXY(MapMaxX(), i)) != 0) { ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_WATER, INVALID_STRING_ID, WL_ERROR); return false; } } /* Make tiles at the border water again. */ for (uint i = 0; i < MapMaxX(); i++) { SetTileHeight(TileXY(i, 0), 0); SetTileType(TileXY(i, 0), MP_WATER); } for (uint i = 0; i < MapMaxY(); i++) { SetTileHeight(TileXY(0, i), 0); SetTileType(TileXY(0, i), MP_WATER); } } MarkWholeScreenDirty(); return true; } /** * Changing the setting "allow multiple NewGRF sets" is not allowed * if there are vehicles. */ static bool ChangeDynamicEngines(int32 p1) { if (_game_mode == GM_MENU) return true; if (!EngineOverrideManager::ResetToCurrentNewGRFConfig()) { ShowErrorMessage(STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES, INVALID_STRING_ID, WL_ERROR); return false; } return true; } static bool StationCatchmentChanged(int32 p1) { Station::RecomputeIndustriesNearForAll(); return true; } #ifdef ENABLE_NETWORK static bool UpdateClientName(int32 p1) { NetworkUpdateClientName(); return true; } static bool UpdateServerPassword(int32 p1) { if (strcmp(_settings_client.network.server_password, "*") == 0) { _settings_client.network.server_password[0] = '\0'; } return true; } static bool UpdateRconPassword(int32 p1) { if (strcmp(_settings_client.network.rcon_password, "*") == 0) { _settings_client.network.rcon_password[0] = '\0'; } return true; } static bool UpdateClientConfigValues(int32 p1) { if (_network_server) NetworkServerSendConfigUpdate(); return true; } #endif /* ENABLE_NETWORK */ /* End - Callback Functions */ /** * Prepare for reading and old diff_custom by zero-ing the memory. */ static void PrepareOldDiffCustom() { memset(_old_diff_custom, 0, sizeof(_old_diff_custom)); } /** * Reading of the old diff_custom array and transforming it to the new format. * @param savegame is it read from the config or savegame. In the latter case * we are sure there is an array; in the former case we have * to check that. */ static void HandleOldDiffCustom(bool savegame) { uint options_to_load = GAME_DIFFICULTY_NUM - ((savegame && IsSavegameVersionBefore(4)) ? 1 : 0); if (!savegame) { /* If we did read to old_diff_custom, then at least one value must be non 0. */ bool old_diff_custom_used = false; for (uint i = 0; i < options_to_load && !old_diff_custom_used; i++) { old_diff_custom_used = (_old_diff_custom[i] != 0); } if (!old_diff_custom_used) return; } for (uint i = 0; i < options_to_load; i++) { const SettingDesc *sd = &_settings[i]; /* Skip deprecated options */ if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; void *var = GetVariableAddress(savegame ? &_settings_game : &_settings_newgame, &sd->save); Write_ValidateSetting(var, sd, (int32)((i == 4 ? 1000 : 1) * _old_diff_custom[i])); } } static void AILoadConfig(IniFile *ini, const char *grpname) { IniGroup *group = ini->GetGroup(grpname); IniItem *item; /* Clean any configured AI */ for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { AIConfig::GetConfig(c, AIConfig::SSS_FORCE_NEWGAME)->Change(NULL); } /* If no group exists, return */ if (group == NULL) return; CompanyID c = COMPANY_FIRST; for (item = group->item; c < MAX_COMPANIES && item != NULL; c++, item = item->next) { AIConfig *config = AIConfig::GetConfig(c, AIConfig::SSS_FORCE_NEWGAME); config->Change(item->name); if (!config->HasScript()) { if (strcmp(item->name, "none") != 0) { DEBUG(script, 0, "The AI by the name '%s' was no longer found, and removed from the list.", item->name); continue; } } if (item->value != NULL) config->StringToSettings(item->value); } } static void GameLoadConfig(IniFile *ini, const char *grpname) { IniGroup *group = ini->GetGroup(grpname); IniItem *item; /* Clean any configured GameScript */ GameConfig::GetConfig(GameConfig::SSS_FORCE_NEWGAME)->Change(NULL); /* If no group exists, return */ if (group == NULL) return; item = group->item; if (item == NULL) return; GameConfig *config = GameConfig::GetConfig(AIConfig::SSS_FORCE_NEWGAME); config->Change(item->name); if (!config->HasScript()) { if (strcmp(item->name, "none") != 0) { DEBUG(script, 0, "The GameScript by the name '%s' was no longer found, and removed from the list.", item->name); return; } } if (item->value != NULL) config->StringToSettings(item->value); } /** * Load a GRF configuration * @param ini The configuration to read from. * @param grpname Group name containing the configuration of the GRF. * @param is_static GRF is static. */ static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_static) { IniGroup *group = ini->GetGroup(grpname); IniItem *item; GRFConfig *first = NULL; GRFConfig **curr = &first; if (group == NULL) return NULL; for (item = group->item; item != NULL; item = item->next) { GRFConfig *c = new GRFConfig(item->name); /* Parse parameters */ if (!StrEmpty(item->value)) { c->num_params = ParseIntList(item->value, (int*)c->param, lengthof(c->param)); if (c->num_params == (byte)-1) { SetDParamStr(0, item->name); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_ARRAY, WL_CRITICAL); c->num_params = 0; } } /* Check if item is valid */ if (!FillGRFDetails(c, is_static) || HasBit(c->flags, GCF_INVALID)) { if (c->status == GCS_NOT_FOUND) { SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND); } else if (HasBit(c->flags, GCF_UNSAFE)) { SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_UNSAFE); } else if (HasBit(c->flags, GCF_SYSTEM)) { SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_SYSTEM); } else if (HasBit(c->flags, GCF_INVALID)) { SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE); } else { SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN); } SetDParamStr(0, item->name); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_GRF, WL_CRITICAL); delete c; continue; } /* Check for duplicate GRFID (will also check for duplicate filenames) */ bool duplicate = false; for (const GRFConfig *gc = first; gc != NULL; gc = gc->next) { if (gc->ident.grfid == c->ident.grfid) { SetDParamStr(0, item->name); SetDParamStr(1, gc->filename); ShowErrorMessage(STR_CONFIG_ERROR, STR_CONFIG_ERROR_DUPLICATE_GRFID, WL_CRITICAL); duplicate = true; break; } } if (duplicate) { delete c; continue; } /* Mark file as static to avoid saving in savegame. */ if (is_static) SetBit(c->flags, GCF_STATIC); /* Add item to list */ *curr = c; curr = &c->next; } return first; } static void AISaveConfig(IniFile *ini, const char *grpname) { IniGroup *group = ini->GetGroup(grpname); if (group == NULL) return; group->Clear(); for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) { AIConfig *config = AIConfig::GetConfig(c, AIConfig::SSS_FORCE_NEWGAME); const char *name; char value[1024]; config->SettingsToString(value, lengthof(value)); if (config->HasScript()) { name = config->GetName(); } else { name = "none"; } IniItem *item = new IniItem(group, name, strlen(name)); item->SetValue(value); } } static void GameSaveConfig(IniFile *ini, const char *grpname) { IniGroup *group = ini->GetGroup(grpname); if (group == NULL) return; group->Clear(); GameConfig *config = GameConfig::GetConfig(AIConfig::SSS_FORCE_NEWGAME); const char *name; char value[1024]; config->SettingsToString(value, lengthof(value)); if (config->HasScript()) { name = config->GetName(); } else { name = "none"; } IniItem *item = new IniItem(group, name, strlen(name)); item->SetValue(value); } /** * Save the version of OpenTTD to the ini file. * @param ini the ini to write to */ static void SaveVersionInConfig(IniFile *ini) { IniGroup *group = ini->GetGroup("version"); char version[9]; snprintf(version, lengthof(version), "%08X", _openttd_newgrf_version); const char * const versions[][2] = { { "version_string", _openttd_revision }, { "version_number", version } }; for (uint i = 0; i < lengthof(versions); i++) { group->GetItem(versions[i][0], true)->SetValue(versions[i][1]); } } /* Save a GRF configuration to the given group name */ static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *list) { ini->RemoveGroup(grpname); IniGroup *group = ini->GetGroup(grpname); const GRFConfig *c; for (c = list; c != NULL; c = c->next) { char params[512]; GRFBuildParamList(params, c, lastof(params)); group->GetItem(c->filename, true)->SetValue(params); } } /* Common handler for saving/loading variables to the configuration file */ static void HandleSettingDescs(IniFile *ini, SettingDescProc *proc, SettingDescProcList *proc_list, bool basic_settings = true, bool other_settings = true) { if (basic_settings) { proc(ini, (const SettingDesc*)_misc_settings, "misc", NULL); #if defined(WIN32) && !defined(DEDICATED) proc(ini, (const SettingDesc*)_win32_settings, "win32", NULL); #endif /* WIN32 */ } if (other_settings) { proc(ini, _settings, "patches", &_settings_newgame); proc(ini, _currency_settings,"currency", &_custom_currency); proc(ini, _company_settings, "company", &_settings_client.company); #ifdef ENABLE_NETWORK proc_list(ini, "server_bind_addresses", &_network_bind_list); proc_list(ini, "servers", &_network_host_list); proc_list(ini, "bans", &_network_ban_list); #endif /* ENABLE_NETWORK */ } } static IniFile *IniLoadConfig() { IniFile *ini = new IniFile(_list_group_names); ini->LoadFromDisk(_config_file, BASE_DIR); return ini; } /** * Load the values from the configuration files * @param minimal Load the minimal amount of the configuration to "bootstrap" the blitter and such. */ void LoadFromConfig(bool minimal) { IniFile *ini = IniLoadConfig(); if (!minimal) ResetCurrencies(false); // Initialize the array of currencies, without preserving the custom one /* Load basic settings only during bootstrap, load other settings not during bootstrap */ HandleSettingDescs(ini, IniLoadSettings, IniLoadSettingList, minimal, !minimal); if (!minimal) { _grfconfig_newgame = GRFLoadConfig(ini, "newgrf", false); _grfconfig_static = GRFLoadConfig(ini, "newgrf-static", true); AILoadConfig(ini, "ai_players"); GameLoadConfig(ini, "game_scripts"); PrepareOldDiffCustom(); IniLoadSettings(ini, _gameopt_settings, "gameopt", &_settings_newgame); HandleOldDiffCustom(false); ValidateSettings(); /* Display sheduled errors */ extern void ScheduleErrorMessage(ErrorList &datas); ScheduleErrorMessage(_settings_error_list); if (FindWindowById(WC_ERRMSG, 0) == NULL) ShowFirstError(); } delete ini; } /** Save the values to the configuration file */ void SaveToConfig() { IniFile *ini = IniLoadConfig(); /* Remove some obsolete groups. These have all been loaded into other groups. */ ini->RemoveGroup("patches"); ini->RemoveGroup("yapf"); ini->RemoveGroup("gameopt"); HandleSettingDescs(ini, IniSaveSettings, IniSaveSettingList); GRFSaveConfig(ini, "newgrf", _grfconfig_newgame); GRFSaveConfig(ini, "newgrf-static", _grfconfig_static); AISaveConfig(ini, "ai_players"); GameSaveConfig(ini, "game_scripts"); SaveVersionInConfig(ini); ini->SaveToDisk(_config_file); delete ini; } /** * Get the list of known NewGrf presets. * @param list[inout] Pointer to list for storing the preset names. */ void GetGRFPresetList(GRFPresetList *list) { list->Clear(); IniFile *ini = IniLoadConfig(); IniGroup *group; for (group = ini->group; group != NULL; group = group->next) { if (strncmp(group->name, "preset-", 7) == 0) { *list->Append() = strdup(group->name + 7); } } delete ini; } /** * Load a NewGRF configuration by preset-name. * @param config_name Name of the preset. * @return NewGRF configuration. * @see GetGRFPresetList */ GRFConfig *LoadGRFPresetFromConfig(const char *config_name) { char *section = (char*)alloca(strlen(config_name) + 8); sprintf(section, "preset-%s", config_name); IniFile *ini = IniLoadConfig(); GRFConfig *config = GRFLoadConfig(ini, section, false); delete ini; return config; } /** * Save a NewGRF configuration with a preset name. * @param config_name Name of the preset. * @param config NewGRF configuration to save. * @see GetGRFPresetList */ void SaveGRFPresetToConfig(const char *config_name, GRFConfig *config) { char *section = (char*)alloca(strlen(config_name) + 8); sprintf(section, "preset-%s", config_name); IniFile *ini = IniLoadConfig(); GRFSaveConfig(ini, section, config); ini->SaveToDisk(_config_file); delete ini; } /** * Delete a NewGRF configuration by preset name. * @param config_name Name of the preset. */ void DeleteGRFPresetFromConfig(const char *config_name) { char *section = (char*)alloca(strlen(config_name) + 8); sprintf(section, "preset-%s", config_name); IniFile *ini = IniLoadConfig(); ini->RemoveGroup(section); ini->SaveToDisk(_config_file); delete ini; } static const SettingDesc *GetSettingDescription(uint index) { if (index >= lengthof(_settings)) return NULL; return &_settings[index]; } /** * Network-safe changing of settings (server-only). * @param tile unused * @param flags operation to perform * @param p1 the index of the setting in the SettingDesc array which identifies it * @param p2 the new value for the setting * The new value is properly clamped to its minimum/maximum when setting * @param text unused * @return the cost of this operation or an error * @see _settings */ CommandCost CmdChangeSetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { const SettingDesc *sd = GetSettingDescription(p1); if (sd == NULL) return CMD_ERROR; if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) return CMD_ERROR; if (!sd->IsEditable(true)) return CMD_ERROR; if (flags & DC_EXEC) { void *var = GetVariableAddress(&GetGameSettings(), &sd->save); int32 oldval = (int32)ReadValue(var, sd->save.conv); int32 newval = (int32)p2; Write_ValidateSetting(var, sd, newval); newval = (int32)ReadValue(var, sd->save.conv); if (oldval == newval) return CommandCost(); if (sd->desc.proc != NULL && !sd->desc.proc(newval)) { WriteValue(var, sd->save.conv, (int64)oldval); return CommandCost(); } if (sd->desc.flags & SGF_NO_NETWORK) { GamelogStartAction(GLAT_SETTING); GamelogSetting(sd->desc.name, oldval, newval); GamelogStopAction(); } SetWindowClassesDirty(WC_GAME_OPTIONS); } return CommandCost(); } /** * Change one of the per-company settings. * @param tile unused * @param flags operation to perform * @param p1 the index of the setting in the _company_settings array which identifies it * @param p2 the new value for the setting * The new value is properly clamped to its minimum/maximum when setting * @param text unused * @return the cost of this operation or an error */ CommandCost CmdChangeCompanySetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (p1 >= lengthof(_company_settings)) return CMD_ERROR; const SettingDesc *sd = &_company_settings[p1]; if (flags & DC_EXEC) { void *var = GetVariableAddress(&Company::Get(_current_company)->settings, &sd->save); int32 oldval = (int32)ReadValue(var, sd->save.conv); int32 newval = (int32)p2; Write_ValidateSetting(var, sd, newval); newval = (int32)ReadValue(var, sd->save.conv); if (oldval == newval) return CommandCost(); if (sd->desc.proc != NULL && !sd->desc.proc(newval)) { WriteValue(var, sd->save.conv, (int64)oldval); return CommandCost(); } SetWindowClassesDirty(WC_GAME_OPTIONS); } return CommandCost(); } /** * Top function to save the new value of an element of the Settings struct * @param index offset in the SettingDesc array of the Settings struct which * identifies the setting member we want to change * @param value new value of the setting * @param force_newgame force the newgame settings */ bool SetSettingValue(uint index, int32 value, bool force_newgame) { const SettingDesc *sd = &_settings[index]; /* If an item is company-based, we do not send it over the network * (if any) to change. Also *hack*hack* we update the _newgame version * of settings because changing a company-based setting in a game also * changes its defaults. At least that is the convention we have chosen */ if (sd->save.conv & SLF_NO_NETWORK_SYNC) { void *var = GetVariableAddress(&GetGameSettings(), &sd->save); Write_ValidateSetting(var, sd, value); if (_game_mode != GM_MENU) { void *var2 = GetVariableAddress(&_settings_newgame, &sd->save); Write_ValidateSetting(var2, sd, value); } if (sd->desc.proc != NULL) sd->desc.proc((int32)ReadValue(var, sd->save.conv)); SetWindowClassesDirty(WC_GAME_OPTIONS); return true; } if (force_newgame) { void *var2 = GetVariableAddress(&_settings_newgame, &sd->save); Write_ValidateSetting(var2, sd, value); return true; } /* send non-company-based settings over the network */ if (!_networking || (_networking && _network_server)) { return DoCommandP(0, index, value, CMD_CHANGE_SETTING); } return false; } /** * Top function to save the new value of an element of the Settings struct * @param index offset in the SettingDesc array of the CompanySettings struct * which identifies the setting member we want to change * @param value new value of the setting */ void SetCompanySetting(uint index, int32 value) { const SettingDesc *sd = &_company_settings[index]; if (Company::IsValidID(_local_company) && _game_mode != GM_MENU) { DoCommandP(0, index, value, CMD_CHANGE_COMPANY_SETTING); } else { void *var = GetVariableAddress(&_settings_client.company, &sd->save); Write_ValidateSetting(var, sd, value); if (sd->desc.proc != NULL) sd->desc.proc((int32)ReadValue(var, sd->save.conv)); } } /** * Set the company settings for a new company to their default values. */ void SetDefaultCompanySettings(CompanyID cid) { Company *c = Company::Get(cid); const SettingDesc *sd; for (sd = _company_settings; sd->save.cmd != SL_END; sd++) { void *var = GetVariableAddress(&c->settings, &sd->save); Write_ValidateSetting(var, sd, (int32)(size_t)sd->desc.def); } } #if defined(ENABLE_NETWORK) /** * Sync all company settings in a multiplayer game. */ void SyncCompanySettings() { const SettingDesc *sd; uint i = 0; for (sd = _company_settings; sd->save.cmd != SL_END; sd++, i++) { const void *old_var = GetVariableAddress(&Company::Get(_current_company)->settings, &sd->save); const void *new_var = GetVariableAddress(&_settings_client.company, &sd->save); uint32 old_value = (uint32)ReadValue(old_var, sd->save.conv); uint32 new_value = (uint32)ReadValue(new_var, sd->save.conv); if (old_value != new_value) NetworkSendCommand(0, i, new_value, CMD_CHANGE_COMPANY_SETTING, NULL, NULL, _local_company); } } #endif /* ENABLE_NETWORK */ /** * Get the index in the _company_settings array of a setting * @param name The name of the setting * @return The index in the _company_settings array */ uint GetCompanySettingIndex(const char *name) { uint i; const SettingDesc *sd = GetSettingFromName(name, &i); assert(sd != NULL && (sd->desc.flags & SGF_PER_COMPANY) != 0); return i; } /** * Set a setting value with a string. * @param index the settings index. * @param value the value to write * @param force_newgame force the newgame settings * @note Strings WILL NOT be synced over the network */ bool SetSettingValue(uint index, const char *value, bool force_newgame) { const SettingDesc *sd = &_settings[index]; assert(sd->save.conv & SLF_NO_NETWORK_SYNC); if (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) { char **var = (char**)GetVariableAddress((_game_mode == GM_MENU || force_newgame) ? &_settings_newgame : &_settings_game, &sd->save); free(*var); *var = strcmp(value, "(null)") == 0 ? NULL : strdup(value); } else { char *var = (char*)GetVariableAddress(NULL, &sd->save); ttd_strlcpy(var, value, sd->save.length); } if (sd->desc.proc != NULL) sd->desc.proc(0); return true; } /** * Given a name of setting, return a setting description of it. * @param name Name of the setting to return a setting description of * @param i Pointer to an integer that will contain the index of the setting after the call, if it is successful. * @return Pointer to the setting description of setting \a name if it can be found, * \c NULL indicates failure to obtain the description */ const SettingDesc *GetSettingFromName(const char *name, uint *i) { const SettingDesc *sd; /* First check all full names */ for (*i = 0, sd = _settings; sd->save.cmd != SL_END; sd++, (*i)++) { if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; if (strcmp(sd->desc.name, name) == 0) return sd; } /* Then check the shortcut variant of the name. */ for (*i = 0, sd = _settings; sd->save.cmd != SL_END; sd++, (*i)++) { if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; const char *short_name = strchr(sd->desc.name, '.'); if (short_name != NULL) { short_name++; if (strcmp(short_name, name) == 0) return sd; } } if (strncmp(name, "company.", 8) == 0) name += 8; /* And finally the company-based settings */ for (*i = 0, sd = _company_settings; sd->save.cmd != SL_END; sd++, (*i)++) { if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; if (strcmp(sd->desc.name, name) == 0) return sd; } return NULL; } /* Those 2 functions need to be here, else we have to make some stuff non-static * and besides, it is also better to keep stuff like this at the same place */ void IConsoleSetSetting(const char *name, const char *value, bool force_newgame) { uint index; const SettingDesc *sd = GetSettingFromName(name, &index); if (sd == NULL) { IConsolePrintF(CC_WARNING, "'%s' is an unknown setting.", name); return; } bool success; if (sd->desc.cmd == SDT_STRING) { success = SetSettingValue(index, value, force_newgame); } else { uint32 val; extern bool GetArgumentInteger(uint32 *value, const char *arg); success = GetArgumentInteger(&val, value); if (!success) { IConsolePrintF(CC_ERROR, "'%s' is not an integer.", value); return; } success = SetSettingValue(index, val, force_newgame); } if (!success) { if (_network_server) { IConsoleError("This command/variable is not available during network games."); } else { IConsoleError("This command/variable is only available to a network server."); } } } void IConsoleSetSetting(const char *name, int value) { uint index; const SettingDesc *sd = GetSettingFromName(name, &index); assert(sd != NULL); SetSettingValue(index, value); } /** * Output value of a specific setting to the console * @param name Name of the setting to output its value * @param force_newgame force the newgame settings */ void IConsoleGetSetting(const char *name, bool force_newgame) { char value[20]; uint index; const SettingDesc *sd = GetSettingFromName(name, &index); const void *ptr; if (sd == NULL) { IConsolePrintF(CC_WARNING, "'%s' is an unknown setting.", name); return; } ptr = GetVariableAddress((_game_mode == GM_MENU || force_newgame) ? &_settings_newgame : &_settings_game, &sd->save); if (sd->desc.cmd == SDT_STRING) { IConsolePrintF(CC_WARNING, "Current value for '%s' is: '%s'", name, (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr); } else { if (sd->desc.cmd == SDT_BOOLX) { snprintf(value, sizeof(value), (*(const bool*)ptr != 0) ? "on" : "off"); } else { snprintf(value, sizeof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv)); } IConsolePrintF(CC_WARNING, "Current value for '%s' is: '%s' (min: %s%d, max: %u)", name, value, (sd->desc.flags & SGF_0ISDISABLED) ? "(0) " : "", sd->desc.min, sd->desc.max); } } /** * List all settings and their value to the console * * @param prefilter If not \c NULL, only list settings with names that begin with \a prefilter prefix */ void IConsoleListSettings(const char *prefilter) { IConsolePrintF(CC_WARNING, "All settings with their current value:"); for (const SettingDesc *sd = _settings; sd->save.cmd != SL_END; sd++) { if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; if (prefilter != NULL && strstr(sd->desc.name, prefilter) == NULL) continue; char value[80]; const void *ptr = GetVariableAddress(&GetGameSettings(), &sd->save); if (sd->desc.cmd == SDT_BOOLX) { snprintf(value, lengthof(value), (*(const bool *)ptr != 0) ? "on" : "off"); } else if (sd->desc.cmd == SDT_STRING) { snprintf(value, sizeof(value), "%s", (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr); } else { snprintf(value, lengthof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv)); } IConsolePrintF(CC_DEFAULT, "%s = %s", sd->desc.name, value); } IConsolePrintF(CC_WARNING, "Use 'setting' command to change a value"); } /** * Save and load handler for settings * @param osd SettingDesc struct containing all information * @param object can be either NULL in which case we load global variables or * a pointer to a struct which is getting saved */ static void LoadSettings(const SettingDesc *osd, void *object) { for (; osd->save.cmd != SL_END; osd++) { const SaveLoad *sld = &osd->save; void *ptr = GetVariableAddress(object, sld); if (!SlObjectMember(ptr, sld)) continue; if (IsNumericType(sld->conv)) Write_ValidateSetting(ptr, osd, ReadValue(ptr, sld->conv)); } } /** * Save and load handler for settings * @param sd SettingDesc struct containing all information * @param object can be either NULL in which case we load global variables or * a pointer to a struct which is getting saved */ static void SaveSettings(const SettingDesc *sd, void *object) { /* We need to write the CH_RIFF header, but unfortunately can't call * SlCalcLength() because we have a different format. So do this manually */ const SettingDesc *i; size_t length = 0; for (i = sd; i->save.cmd != SL_END; i++) { length += SlCalcObjMemberLength(object, &i->save); } SlSetLength(length); for (i = sd; i->save.cmd != SL_END; i++) { void *ptr = GetVariableAddress(object, &i->save); SlObjectMember(ptr, &i->save); } } static void Load_OPTS() { /* Copy over default setting since some might not get loaded in * a networking environment. This ensures for example that the local * autosave-frequency stays when joining a network-server */ PrepareOldDiffCustom(); LoadSettings(_gameopt_settings, &_settings_game); HandleOldDiffCustom(true); } static void Load_PATS() { /* Copy over default setting since some might not get loaded in * a networking environment. This ensures for example that the local * currency setting stays when joining a network-server */ LoadSettings(_settings, &_settings_game); } static void Check_PATS() { LoadSettings(_settings, &_load_check_data.settings); } static void Save_PATS() { SaveSettings(_settings, &_settings_game); } void CheckConfig() { /* * Increase old default values for pf_maxdepth and pf_maxlength * to support big networks. */ if (_settings_newgame.pf.opf.pf_maxdepth == 16 && _settings_newgame.pf.opf.pf_maxlength == 512) { _settings_newgame.pf.opf.pf_maxdepth = 48; _settings_newgame.pf.opf.pf_maxlength = 4096; } } extern const ChunkHandler _setting_chunk_handlers[] = { { 'OPTS', NULL, Load_OPTS, NULL, NULL, CH_RIFF}, { 'PATS', Save_PATS, Load_PATS, NULL, Check_PATS, CH_RIFF | CH_LAST}, }; static bool IsSignedVarMemType(VarType vt) { switch (GetVarMemType(vt)) { case SLE_VAR_I8: case SLE_VAR_I16: case SLE_VAR_I32: case SLE_VAR_I64: return true; } return false; } openttd-1.3.3/src/tile_map.cpp0000644000000000000000000000632112246102611014753 0ustar rootroot/* $Id: tile_map.cpp 23708 2012-01-01 19:20:08Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tile_map.cpp Global tile accessors. */ #include "stdafx.h" #include "tile_map.h" /** * Return the slope of a given tile * @param tile Tile to compute slope of * @param h If not \c NULL, pointer to storage of z height * @return Slope of the tile, except for the HALFTILE part */ Slope GetTileSlope(TileIndex tile, int *h) { assert(tile < MapSize()); uint x = TileX(tile); uint y = TileY(tile); if (x == MapMaxX() || y == MapMaxY() || ((x == 0 || y == 0) && _settings_game.construction.freeform_edges)) { if (h != NULL) *h = TileHeight(tile); return SLOPE_FLAT; } int a = TileHeight(tile); // Height of the N corner int min = a; // Minimal height of all corners examined so far int b = TileHeight(tile + TileDiffXY(1, 0)); // Height of the W corner if (min > b) min = b; int c = TileHeight(tile + TileDiffXY(0, 1)); // Height of the E corner if (min > c) min = c; int d = TileHeight(tile + TileDiffXY(1, 1)); // Height of the S corner if (min > d) min = d; /* Due to the fact that tiles must connect with each other without leaving gaps, the * biggest difference in height between any corner and 'min' is between 0, 1, or 2. * * Also, there is at most 1 corner with height difference of 2. */ uint r = SLOPE_FLAT; // Computed slope of the tile /* For each corner if not equal to minimum height: * - set the SLOPE_STEEP flag if the difference is 2 * - add the corresponding SLOPE_X constant to the computed slope */ if ((a -= min) != 0) r += (--a << 4) + SLOPE_N; if ((c -= min) != 0) r += (--c << 4) + SLOPE_E; if ((d -= min) != 0) r += (--d << 4) + SLOPE_S; if ((b -= min) != 0) r += (--b << 4) + SLOPE_W; if (h != NULL) *h = min; return (Slope)r; } /** * Get bottom height of the tile * @param tile Tile to compute height of * @return Minimum height of the tile */ int GetTileZ(TileIndex tile) { if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) return 0; int h = TileHeight(tile); // N corner h = min(h, TileHeight(tile + TileDiffXY(1, 0))); // W corner h = min(h, TileHeight(tile + TileDiffXY(0, 1))); // E corner h = min(h, TileHeight(tile + TileDiffXY(1, 1))); // S corner return h; } /** * Get top height of the tile * @param t Tile to compute height of * @return Maximum height of the tile */ int GetTileMaxZ(TileIndex t) { if (TileX(t) == MapMaxX() || TileY(t) == MapMaxY()) return 0; int h = TileHeight(t); // N corner h = max(h, TileHeight(t + TileDiffXY(1, 0))); // W corner h = max(h, TileHeight(t + TileDiffXY(0, 1))); // E corner h = max(h, TileHeight(t + TileDiffXY(1, 1))); // S corner return h; } openttd-1.3.3/src/genworld_gui.cpp0000644000000000000000000016532312246102610015655 0ustar rootroot/* $Id: genworld_gui.cpp 25102 2013-03-17 20:58:40Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file genworld_gui.cpp GUI to configure and show progress during map generation. */ #include "stdafx.h" #include "heightmap.h" #include "debug.h" #include "genworld.h" #include "network/network.h" #include "strings_func.h" #include "window_func.h" #include "date_func.h" #include "sound_func.h" #include "fios.h" #include "string_func.h" #include "widgets/dropdown_type.h" #include "widgets/dropdown_func.h" #include "querystring_gui.h" #include "town.h" #include "settings_func.h" #include "core/geometry_func.hpp" #include "core/random_func.hpp" #include "progress.h" #include "error.h" #include "widgets/genworld_widget.h" extern void MakeNewgameSettingsLive(); /** Enum for the modes we can generate in. */ enum GenenerateLandscapeWindowMode { GLWM_GENERATE, ///< Generate new game. GLWM_HEIGHTMAP, ///< Load from heightmap. GLWM_SCENARIO, ///< Generate flat land. }; /** * Changes landscape type and sets genworld window dirty * @param landscape new landscape type */ void SetNewLandscapeType(byte landscape) { _settings_newgame.game_creation.landscape = landscape; InvalidateWindowClassesData(WC_SELECT_GAME); InvalidateWindowClassesData(WC_GENERATE_LANDSCAPE); } /** Widgets of GenerateLandscapeWindow when generating world */ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MAPGEN_WORLD_GENERATION_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(NWID_SPACER), SetMinimalSize(0, 10), /* Landscape selection. */ NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 11), NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), /* Left column with labels. */ NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_LAND_GENERATOR, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RANDOM_SEED, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_SEA_LAKES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_PLACER, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_NULL), SetFill(1, 1), EndContainer(), /* Widgets at the right of the labels. */ NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), /* Mapsize X * Y. */ NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_LANDSCAPE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_EDITBOX, COLOUR_ORANGE, WID_GL_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), /* Starting date. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), EndContainer(), /* Snow line. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 30), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 4), /* Map borders buttons for each edge. */ NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_NW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHWEST), SetFill(1, 1), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_NE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHEAST), SetFill(1, 1), NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_SW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHWEST), SetFill(1, 1), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_SE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHEAST), SetFill(1, 1), NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), EndContainer(), }; /** Widgets of GenerateLandscapeWindow when loading heightmap */ static const NWidgetPart _nested_heightmap_load_widgets[] = { /* Window header. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MAPGEN_WORLD_GENERATION_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(NWID_SPACER), SetMinimalSize(0, 10), /* Landscape selection. */ NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), NWidget(NWID_SPACER), SetFill(1, 0), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), NWidget(NWID_SPACER), SetFill(1, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 11), SetFill(0, 1), NWidget(NWID_HORIZONTAL), SetPIP(10, 3, 10), /* Labels at the left side. */ NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RANDOM_SEED, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_PLACER, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), EndContainer(), /* Widgets at the right of the labels. */ NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_GL_HEIGHTMAP_NAME_TEXT), SetFill(1, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 5, 0), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), /* Mapsize X * Y. */ NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_EDITBOX, COLOUR_ORANGE, WID_GL_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 0), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), NWidget(NWID_SPACER), SetFill(1, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 30), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), EndContainer(), }; static void StartGeneratingLandscape(GenenerateLandscapeWindowMode mode) { DeleteAllNonVitalWindows(); ClearErrorMessages(); /* Copy all XXX_newgame to XXX when coming from outside the editor */ MakeNewgameSettingsLive(); ResetGRFConfig(true); if (_settings_client.sound.confirm) SndPlayFx(SND_15_BEEP); switch (mode) { case GLWM_GENERATE: _switch_mode = (_game_mode == GM_EDITOR) ? SM_GENRANDLAND : SM_NEWGAME; break; case GLWM_HEIGHTMAP: _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_HEIGHTMAP : SM_START_HEIGHTMAP; break; case GLWM_SCENARIO: _switch_mode = SM_EDITOR; break; default: NOT_REACHED(); } } static void LandscapeGenerationCallback(Window *w, bool confirmed) { if (confirmed) StartGeneratingLandscape((GenenerateLandscapeWindowMode)w->window_number); } static DropDownList *BuildMapsizeDropDown() { DropDownList *list = new DropDownList(); for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) { DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false); item->SetParam(0, 1 << i); list->push_back(item); } return list; } static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, INVALID_STRING_ID}; static const StringID _sea_lakes[] = {STR_SEA_LEVEL_VERY_LOW, STR_SEA_LEVEL_LOW, STR_SEA_LEVEL_MEDIUM, STR_SEA_LEVEL_HIGH, STR_SEA_LEVEL_CUSTOM, INVALID_STRING_ID}; static const StringID _rivers[] = {STR_RIVERS_NONE, STR_RIVERS_FEW, STR_RIVERS_MODERATE, STR_RIVERS_LOT, INVALID_STRING_ID}; static const StringID _smoothness[] = {STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID}; static const StringID _tree_placer[] = {STR_CONFIG_SETTING_TREE_PLACER_NONE, STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL, STR_CONFIG_SETTING_TREE_PLACER_IMPROVED, INVALID_STRING_ID}; static const StringID _rotation[] = {STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE, INVALID_STRING_ID}; static const StringID _landscape[] = {STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL, STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS, INVALID_STRING_ID}; static const StringID _num_towns[] = {STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM, INVALID_STRING_ID}; static const StringID _num_inds[] = {STR_FUNDING_ONLY, STR_MINIMAL, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, INVALID_STRING_ID}; static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH, INVALID_STRING_ID}; assert_compile(lengthof(_num_inds) == ID_END + 1); struct GenerateLandscapeWindow : public Window { uint widget_id; uint x; uint y; char name[64]; GenenerateLandscapeWindowMode mode; QueryString seed_editbox; GenerateLandscapeWindow(const WindowDesc *desc, WindowNumber number = 0) : seed_editbox(11) { this->InitNested(desc, number); this->LowerWidget(_settings_newgame.game_creation.landscape + WID_GL_TEMPERATE); this->querystrings[WID_GL_RANDOM_EDITBOX] = &this->seed_editbox; this->seed_editbox.text.Print("%u", _settings_newgame.game_creation.generation_seed); this->seed_editbox.caption = STR_NULL; this->seed_editbox.text.afilter = CS_NUMERAL; this->mode = (GenenerateLandscapeWindowMode)this->window_number; /* Disable town, industry and trees in SE */ this->SetWidgetDisabledState(WID_GL_TOWN_PULLDOWN, _game_mode == GM_EDITOR); this->SetWidgetDisabledState(WID_GL_INDUSTRY_PULLDOWN, _game_mode == GM_EDITOR); this->SetWidgetDisabledState(WID_GL_TREE_PULLDOWN, _game_mode == GM_EDITOR); this->OnInvalidateData(); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break; case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_x); break; case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_y); break; case WID_GL_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break; case WID_GL_TOWN_PULLDOWN: if (_game_mode == GM_EDITOR) { SetDParam(0, STR_CONFIG_SETTING_OFF); } else if (_settings_newgame.difficulty.number_towns == CUSTOM_TOWN_NUMBER_DIFFICULTY) { SetDParam(0, STR_NUM_CUSTOM_NUMBER); SetDParam(1, _settings_newgame.game_creation.custom_town_number); } else { SetDParam(0, _num_towns[_settings_newgame.difficulty.number_towns]); } break; case WID_GL_INDUSTRY_PULLDOWN: SetDParam(0, _game_mode == GM_EDITOR ? STR_CONFIG_SETTING_OFF : _num_inds[_settings_newgame.difficulty.industry_density]); break; case WID_GL_LANDSCAPE_PULLDOWN: SetDParam(0, _landscape[_settings_newgame.game_creation.land_generator]); break; case WID_GL_TREE_PULLDOWN: SetDParam(0, _tree_placer[_settings_newgame.game_creation.tree_placer]); break; case WID_GL_TERRAIN_PULLDOWN: SetDParam(0, _elevations[_settings_newgame.difficulty.terrain_type]); break; case WID_GL_WATER_PULLDOWN: if (_settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { SetDParam(0, STR_SEA_LEVEL_CUSTOM_PERCENTAGE); SetDParam(1, _settings_newgame.game_creation.custom_sea_level); } else { SetDParam(0, _sea_lakes[_settings_newgame.difficulty.quantity_sea_lakes]); } break; case WID_GL_RIVER_PULLDOWN: SetDParam(0, _rivers[_settings_newgame.game_creation.amount_of_rivers]); break; case WID_GL_SMOOTHNESS_PULLDOWN: SetDParam(0, _smoothness[_settings_newgame.game_creation.tgen_smoothness]); break; case WID_GL_VARIETY_PULLDOWN: SetDParam(0, _variety[_settings_newgame.game_creation.variety]); break; case WID_GL_BORDERS_RANDOM: SetDParam(0, (_settings_newgame.game_creation.water_borders == BORDERS_RANDOM) ? STR_MAPGEN_BORDER_RANDOMIZE : STR_MAPGEN_BORDER_MANUAL); break; case WID_GL_WATER_NE: SetDParam(0, (_settings_newgame.game_creation.water_borders == BORDERS_RANDOM) ? STR_MAPGEN_BORDER_RANDOM : HasBit(_settings_newgame.game_creation.water_borders, BORDER_NE) ? STR_MAPGEN_BORDER_WATER : STR_MAPGEN_BORDER_FREEFORM); break; case WID_GL_WATER_NW: SetDParam(0, (_settings_newgame.game_creation.water_borders == BORDERS_RANDOM) ? STR_MAPGEN_BORDER_RANDOM : HasBit(_settings_newgame.game_creation.water_borders, BORDER_NW) ? STR_MAPGEN_BORDER_WATER : STR_MAPGEN_BORDER_FREEFORM); break; case WID_GL_WATER_SE: SetDParam(0, (_settings_newgame.game_creation.water_borders == BORDERS_RANDOM) ? STR_MAPGEN_BORDER_RANDOM : HasBit(_settings_newgame.game_creation.water_borders, BORDER_SE) ? STR_MAPGEN_BORDER_WATER : STR_MAPGEN_BORDER_FREEFORM); break; case WID_GL_WATER_SW: SetDParam(0, (_settings_newgame.game_creation.water_borders == BORDERS_RANDOM) ? STR_MAPGEN_BORDER_RANDOM : HasBit(_settings_newgame.game_creation.water_borders, BORDER_SW) ? STR_MAPGEN_BORDER_WATER : STR_MAPGEN_BORDER_FREEFORM); break; case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: SetDParam(0, _rotation[_settings_newgame.game_creation.heightmap_rotation]); break; case WID_GL_HEIGHTMAP_SIZE_TEXT: if (_settings_newgame.game_creation.heightmap_rotation == HM_CLOCKWISE) { SetDParam(0, this->y); SetDParam(1, this->x); } else { SetDParam(0, this->x); SetDParam(1, this->y); } break; } } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; /* Update the climate buttons */ this->SetWidgetLoweredState(WID_GL_TEMPERATE, _settings_newgame.game_creation.landscape == LT_TEMPERATE); this->SetWidgetLoweredState(WID_GL_ARCTIC, _settings_newgame.game_creation.landscape == LT_ARCTIC); this->SetWidgetLoweredState(WID_GL_TROPICAL, _settings_newgame.game_creation.landscape == LT_TROPIC); this->SetWidgetLoweredState(WID_GL_TOYLAND, _settings_newgame.game_creation.landscape == LT_TOYLAND); /* You can't select smoothness / non-water borders if not terragenesis */ if (mode == GLWM_GENERATE) { this->SetWidgetDisabledState(WID_GL_SMOOTHNESS_PULLDOWN, _settings_newgame.game_creation.land_generator == 0); this->SetWidgetDisabledState(WID_GL_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == 0); this->SetWidgetDisabledState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges); this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges || _settings_newgame.game_creation.water_borders == BORDERS_RANDOM, WID_GL_WATER_NW, WID_GL_WATER_NE, WID_GL_WATER_SE, WID_GL_WATER_SW, WIDGET_LIST_END); this->SetWidgetLoweredState(WID_GL_BORDERS_RANDOM, _settings_newgame.game_creation.water_borders == BORDERS_RANDOM); this->SetWidgetLoweredState(WID_GL_WATER_NW, HasBit(_settings_newgame.game_creation.water_borders, BORDER_NW)); this->SetWidgetLoweredState(WID_GL_WATER_NE, HasBit(_settings_newgame.game_creation.water_borders, BORDER_NE)); this->SetWidgetLoweredState(WID_GL_WATER_SE, HasBit(_settings_newgame.game_creation.water_borders, BORDER_SE)); this->SetWidgetLoweredState(WID_GL_WATER_SW, HasBit(_settings_newgame.game_creation.water_borders, BORDER_SW)); this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == 0 && (_settings_newgame.game_creation.landscape == LT_ARCTIC || _settings_newgame.game_creation.landscape == LT_TROPIC), WID_GL_TERRAIN_PULLDOWN, WID_GL_WATER_PULLDOWN, WIDGET_LIST_END); } /* Disable snowline if not arctic */ this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_TEXT, _settings_newgame.game_creation.landscape != LT_ARCTIC); /* Update availability of decreasing / increasing start date and snow level */ this->SetWidgetDisabledState(WID_GL_START_DATE_DOWN, _settings_newgame.game_creation.starting_year <= MIN_YEAR); this->SetWidgetDisabledState(WID_GL_START_DATE_UP, _settings_newgame.game_creation.starting_year >= MAX_YEAR); this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_DOWN, _settings_newgame.game_creation.snow_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_UP, _settings_newgame.game_creation.snow_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); /* Do not allow a custom sea level with the original land generator. */ if (_settings_newgame.game_creation.land_generator == 0 && _settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { _settings_newgame.difficulty.quantity_sea_lakes = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { const StringID *strs = NULL; switch (widget) { case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(MAX_YEAR, 0, 1)); *size = GetStringBoundingBox(STR_BLACK_DATE_LONG); break; case WID_GL_MAPSIZE_X_PULLDOWN: case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParamMaxValue(0, MAX_MAP_SIZE); *size = GetStringBoundingBox(STR_JUST_INT); break; case WID_GL_SNOW_LEVEL_TEXT: SetDParamMaxValue(0, MAX_TILE_HEIGHT); *size = GetStringBoundingBox(STR_JUST_INT); break; case WID_GL_HEIGHTMAP_SIZE_TEXT: SetDParam(0, this->x); SetDParam(1, this->y); *size = GetStringBoundingBox(STR_MAPGEN_HEIGHTMAP_SIZE); break; case WID_GL_TOWN_PULLDOWN: strs = _num_towns; SetDParamMaxValue(0, CUSTOM_TOWN_MAX_NUMBER); *size = GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER); break; case WID_GL_INDUSTRY_PULLDOWN: strs = _num_inds; break; case WID_GL_LANDSCAPE_PULLDOWN: strs = _landscape; break; case WID_GL_TREE_PULLDOWN: strs = _tree_placer; break; case WID_GL_TERRAIN_PULLDOWN: strs = _elevations; break; case WID_GL_WATER_PULLDOWN: strs = _sea_lakes; SetDParamMaxValue(0, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE); *size = GetStringBoundingBox(STR_SEA_LEVEL_CUSTOM_PERCENTAGE); break; case WID_GL_RIVER_PULLDOWN: strs = _rivers; break; case WID_GL_SMOOTHNESS_PULLDOWN: strs = _smoothness; break; case WID_GL_VARIETY_PULLDOWN: strs = _variety; break; case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: strs = _rotation; break; case WID_GL_BORDERS_RANDOM: *size = maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_RANDOMIZE), GetStringBoundingBox(STR_MAPGEN_BORDER_MANUAL)); break; case WID_GL_WATER_NE: case WID_GL_WATER_NW: case WID_GL_WATER_SE: case WID_GL_WATER_SW: *size = maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_RANDOM), maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_WATER), GetStringBoundingBox(STR_MAPGEN_BORDER_FREEFORM))); break; case WID_GL_HEIGHTMAP_NAME_TEXT: size->width = 0; break; default: return; } if (strs != NULL) { while (*strs != INVALID_STRING_ID) { *size = maxdim(*size, GetStringBoundingBox(*strs++)); } } size->width += padding.width; size->height = FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM; } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_GL_HEIGHTMAP_NAME_TEXT: { DrawString(r.left, r.right, r.top, this->name, TC_ORANGE); break; } } } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_GL_TEMPERATE: case WID_GL_ARCTIC: case WID_GL_TROPICAL: case WID_GL_TOYLAND: SetNewLandscapeType(widget - WID_GL_TEMPERATE); break; case WID_GL_MAPSIZE_X_PULLDOWN: // Mapsize X ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, WID_GL_MAPSIZE_X_PULLDOWN); break; case WID_GL_MAPSIZE_Y_PULLDOWN: // Mapsize Y ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_GL_MAPSIZE_Y_PULLDOWN); break; case WID_GL_TOWN_PULLDOWN: // Number of towns ShowDropDownMenu(this, _num_towns, _settings_newgame.difficulty.number_towns, WID_GL_TOWN_PULLDOWN, 0, 0); break; case WID_GL_INDUSTRY_PULLDOWN: // Number of industries ShowDropDownMenu(this, _num_inds, _settings_newgame.difficulty.industry_density, WID_GL_INDUSTRY_PULLDOWN, 0, 0); break; case WID_GL_RANDOM_BUTTON: // Random seed _settings_newgame.game_creation.generation_seed = InteractiveRandom(); this->seed_editbox.text.Print("%u", _settings_newgame.game_creation.generation_seed); this->SetDirty(); break; case WID_GL_GENERATE_BUTTON: { // Generate /* Get rotated map size. */ uint map_x; uint map_y; if (_settings_newgame.game_creation.heightmap_rotation == HM_CLOCKWISE) { map_x = this->y; map_y = this->x; } else { map_x = this->x; map_y = this->y; } if (mode == GLWM_HEIGHTMAP && (map_x * 2 < (1U << _settings_newgame.game_creation.map_x) || map_x / 2 > (1U << _settings_newgame.game_creation.map_x) || map_y * 2 < (1U << _settings_newgame.game_creation.map_y) || map_y / 2 > (1U << _settings_newgame.game_creation.map_y))) { ShowQuery( STR_WARNING_HEIGHTMAP_SCALE_CAPTION, STR_WARNING_HEIGHTMAP_SCALE_MESSAGE, this, LandscapeGenerationCallback); } else { StartGeneratingLandscape(mode); } break; } case WID_GL_START_DATE_DOWN: case WID_GL_START_DATE_UP: // Year buttons /* Don't allow too fast scrolling */ if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) { this->HandleButtonClick(widget); _settings_newgame.game_creation.starting_year = Clamp(_settings_newgame.game_creation.starting_year + widget - WID_GL_START_DATE_TEXT, MIN_YEAR, MAX_YEAR); this->InvalidateData(); } _left_button_clicked = false; break; case WID_GL_START_DATE_TEXT: // Year text this->widget_id = WID_GL_START_DATE_TEXT; SetDParam(0, _settings_newgame.game_creation.starting_year); ShowQueryString(STR_JUST_INT, STR_MAPGEN_START_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QSF_ENABLE_DEFAULT); break; case WID_GL_SNOW_LEVEL_DOWN: case WID_GL_SNOW_LEVEL_UP: // Snow line buttons /* Don't allow too fast scrolling */ if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) { this->HandleButtonClick(widget); _settings_newgame.game_creation.snow_line_height = Clamp(_settings_newgame.game_creation.snow_line_height + widget - WID_GL_SNOW_LEVEL_TEXT, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT); this->InvalidateData(); } _left_button_clicked = false; break; case WID_GL_SNOW_LEVEL_TEXT: // Snow line text this->widget_id = WID_GL_SNOW_LEVEL_TEXT; SetDParam(0, _settings_newgame.game_creation.snow_line_height); ShowQueryString(STR_JUST_INT, STR_MAPGEN_SNOW_LINE_QUERY_CAPT, 3, this, CS_NUMERAL, QSF_ENABLE_DEFAULT); break; case WID_GL_TREE_PULLDOWN: // Tree placer ShowDropDownMenu(this, _tree_placer, _settings_newgame.game_creation.tree_placer, WID_GL_TREE_PULLDOWN, 0, 0); break; case WID_GL_LANDSCAPE_PULLDOWN: // Landscape generator ShowDropDownMenu(this, _landscape, _settings_newgame.game_creation.land_generator, WID_GL_LANDSCAPE_PULLDOWN, 0, 0); break; case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: // Heightmap rotation ShowDropDownMenu(this, _rotation, _settings_newgame.game_creation.heightmap_rotation, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0); break; case WID_GL_TERRAIN_PULLDOWN: // Terrain type ShowDropDownMenu(this, _elevations, _settings_newgame.difficulty.terrain_type, WID_GL_TERRAIN_PULLDOWN, 0, 0); break; case WID_GL_WATER_PULLDOWN: { // Water quantity uint32 hidden_mask = 0; /* Disable custom water level when the original map generator is active. */ if (_settings_newgame.game_creation.land_generator == 0) { SetBit(hidden_mask, CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY); } ShowDropDownMenu(this, _sea_lakes, _settings_newgame.difficulty.quantity_sea_lakes, WID_GL_WATER_PULLDOWN, 0, hidden_mask); break; } case WID_GL_RIVER_PULLDOWN: // Amount of rivers ShowDropDownMenu(this, _rivers, _settings_newgame.game_creation.amount_of_rivers, WID_GL_RIVER_PULLDOWN, 0, 0); break; case WID_GL_SMOOTHNESS_PULLDOWN: // Map smoothness ShowDropDownMenu(this, _smoothness, _settings_newgame.game_creation.tgen_smoothness, WID_GL_SMOOTHNESS_PULLDOWN, 0, 0); break; case WID_GL_VARIETY_PULLDOWN: // Map variety ShowDropDownMenu(this, _variety, _settings_newgame.game_creation.variety, WID_GL_VARIETY_PULLDOWN, 0, 0); break; /* Freetype map borders */ case WID_GL_WATER_NW: _settings_newgame.game_creation.water_borders = ToggleBit(_settings_newgame.game_creation.water_borders, BORDER_NW); this->InvalidateData(); break; case WID_GL_WATER_NE: _settings_newgame.game_creation.water_borders = ToggleBit(_settings_newgame.game_creation.water_borders, BORDER_NE); this->InvalidateData(); break; case WID_GL_WATER_SE: _settings_newgame.game_creation.water_borders = ToggleBit(_settings_newgame.game_creation.water_borders, BORDER_SE); this->InvalidateData(); break; case WID_GL_WATER_SW: _settings_newgame.game_creation.water_borders = ToggleBit(_settings_newgame.game_creation.water_borders, BORDER_SW); this->InvalidateData(); break; case WID_GL_BORDERS_RANDOM: _settings_newgame.game_creation.water_borders = (_settings_newgame.game_creation.water_borders == BORDERS_RANDOM) ? 0 : BORDERS_RANDOM; this->InvalidateData(); break; } } virtual void OnTimeout() { static const int raise_widgets[] = {WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WIDGET_LIST_END}; for (const int *widget = raise_widgets; *widget != WIDGET_LIST_END; widget++) { if (this->IsWidgetLowered(*widget)) { this->RaiseWidget(*widget); this->SetWidgetDirty(*widget); } } } virtual void OnEditboxChanged(int wid) { if (wid == WID_GL_RANDOM_EDITBOX) { /* the seed is unsigned, therefore atoi cannot be used. * As UINT32_MAX is a 'magic' value (use random seed) it * should not be possible to be entered into the input * field; the generate seed button can be used instead. */ _settings_newgame.game_creation.generation_seed = minu(strtoul(this->seed_editbox.text.buf, NULL, 10), UINT32_MAX - 1); } } virtual void OnDropdownSelect(int widget, int index) { switch (widget) { case WID_GL_MAPSIZE_X_PULLDOWN: _settings_newgame.game_creation.map_x = index; break; case WID_GL_MAPSIZE_Y_PULLDOWN: _settings_newgame.game_creation.map_y = index; break; case WID_GL_TREE_PULLDOWN: _settings_newgame.game_creation.tree_placer = index; break; case WID_GL_RIVER_PULLDOWN: _settings_newgame.game_creation.amount_of_rivers = index; break; case WID_GL_SMOOTHNESS_PULLDOWN: _settings_newgame.game_creation.tgen_smoothness = index; break; case WID_GL_VARIETY_PULLDOWN: _settings_newgame.game_creation.variety = index; break; case WID_GL_LANDSCAPE_PULLDOWN: _settings_newgame.game_creation.land_generator = index; break; case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break; case WID_GL_TOWN_PULLDOWN: if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) { this->widget_id = widget; SetDParam(0, _settings_newgame.game_creation.custom_town_number); ShowQueryString(STR_JUST_INT, STR_MAPGEN_NUMBER_OF_TOWNS, 5, this, CS_NUMERAL, QSF_NONE); } IConsoleSetSetting("difficulty.number_towns", index); break; case WID_GL_INDUSTRY_PULLDOWN: IConsoleSetSetting("difficulty.industry_density", index); break; case WID_GL_TERRAIN_PULLDOWN: { GameMode old_gm = _game_mode; _game_mode = GM_MENU; IConsoleSetSetting("difficulty.terrain_type", index); _game_mode = old_gm; break; } case WID_GL_WATER_PULLDOWN: { if ((uint)index == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) { this->widget_id = widget; SetDParam(0, _settings_newgame.game_creation.custom_sea_level); ShowQueryString(STR_JUST_INT, STR_MAPGEN_QUANTITY_OF_SEA_LAKES, 3, this, CS_NUMERAL, QSF_NONE); } GameMode old_gm = _game_mode; _game_mode = GM_MENU; IConsoleSetSetting("difficulty.quantity_sea_lakes", index); _game_mode = old_gm; break; } } this->InvalidateData(); } virtual void OnQueryTextFinished(char *str) { /* Was 'cancel' pressed? */ if (str == NULL) return; int32 value; if (!StrEmpty(str)) { value = atoi(str); } else { /* An empty string means revert to the default */ switch (this->widget_id) { case WID_GL_START_DATE_TEXT: value = DEF_START_YEAR; break; case WID_GL_SNOW_LEVEL_TEXT: value = DEF_SNOWLINE_HEIGHT; break; case WID_GL_TOWN_PULLDOWN: value = 1; break; case WID_GL_WATER_PULLDOWN: value = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE; break; default: NOT_REACHED(); } } switch (this->widget_id) { case WID_GL_START_DATE_TEXT: this->SetWidgetDirty(WID_GL_START_DATE_TEXT); _settings_newgame.game_creation.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR); break; case WID_GL_SNOW_LEVEL_TEXT: this->SetWidgetDirty(WID_GL_SNOW_LEVEL_TEXT); _settings_newgame.game_creation.snow_line_height = Clamp(value, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT); break; case WID_GL_TOWN_PULLDOWN: _settings_newgame.game_creation.custom_town_number = Clamp(value, 1, CUSTOM_TOWN_MAX_NUMBER); break; case WID_GL_WATER_PULLDOWN: _settings_newgame.game_creation.custom_sea_level = Clamp(value, CUSTOM_SEA_LEVEL_MIN_PERCENTAGE, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE); break; } this->InvalidateData(); } }; static const WindowDesc _generate_landscape_desc( WDP_CENTER, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, _nested_generate_landscape_widgets, lengthof(_nested_generate_landscape_widgets) ); static const WindowDesc _heightmap_load_desc( WDP_CENTER, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, _nested_heightmap_load_widgets, lengthof(_nested_heightmap_load_widgets) ); static void _ShowGenerateLandscape(GenenerateLandscapeWindowMode mode) { uint x = 0; uint y = 0; DeleteWindowByClass(WC_GENERATE_LANDSCAPE); /* Always give a new seed if not editor */ if (_game_mode != GM_EDITOR) _settings_newgame.game_creation.generation_seed = InteractiveRandom(); if (mode == GLWM_HEIGHTMAP) { /* If the function returns negative, it means there was a problem loading the heightmap */ if (!GetHeightmapDimensions(_file_to_saveload.name, &x, &y)) return; } GenerateLandscapeWindow *w = AllocateWindowDescFront((mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode); if (mode == GLWM_HEIGHTMAP) { w->x = x; w->y = y; strecpy(w->name, _file_to_saveload.title, lastof(w->name)); } SetWindowDirty(WC_GENERATE_LANDSCAPE, mode); } /** Start with a normal game. */ void ShowGenerateLandscape() { _ShowGenerateLandscape(GLWM_GENERATE); } /** Start with loading a heightmap. */ void ShowHeightmapLoad() { _ShowGenerateLandscape(GLWM_HEIGHTMAP); } /** Start with a scenario editor. */ void StartScenarioEditor() { StartGeneratingLandscape(GLWM_SCENARIO); } /** * Start a normal game without the GUI. * @param seed The seed of the new game. */ void StartNewGameWithoutGUI(uint seed) { /* GenerateWorld takes care of the possible GENERATE_NEW_SEED value in 'seed' */ _settings_newgame.game_creation.generation_seed = seed; StartGeneratingLandscape(GLWM_GENERATE); } struct CreateScenarioWindow : public Window { uint widget_id; CreateScenarioWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { this->InitNested(desc, window_number); this->LowerWidget(_settings_newgame.game_creation.landscape + WID_CS_TEMPERATE); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_CS_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break; case WID_CS_MAPSIZE_X_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_x); break; case WID_CS_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_y); break; case WID_CS_FLAT_LAND_HEIGHT_TEXT: SetDParam(0, _settings_newgame.game_creation.se_flat_world_height); break; } } virtual void OnPaint() { this->SetWidgetDisabledState(WID_CS_START_DATE_DOWN, _settings_newgame.game_creation.starting_year <= MIN_YEAR); this->SetWidgetDisabledState(WID_CS_START_DATE_UP, _settings_newgame.game_creation.starting_year >= MAX_YEAR); this->SetWidgetDisabledState(WID_CS_FLAT_LAND_HEIGHT_DOWN, _settings_newgame.game_creation.se_flat_world_height <= 0); this->SetWidgetDisabledState(WID_CS_FLAT_LAND_HEIGHT_UP, _settings_newgame.game_creation.se_flat_world_height >= MAX_TILE_HEIGHT); this->SetWidgetLoweredState(WID_CS_TEMPERATE, _settings_newgame.game_creation.landscape == LT_TEMPERATE); this->SetWidgetLoweredState(WID_CS_ARCTIC, _settings_newgame.game_creation.landscape == LT_ARCTIC); this->SetWidgetLoweredState(WID_CS_TROPICAL, _settings_newgame.game_creation.landscape == LT_TROPIC); this->SetWidgetLoweredState(WID_CS_TOYLAND, _settings_newgame.game_creation.landscape == LT_TOYLAND); this->DrawWidgets(); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { StringID str = STR_JUST_INT; switch (widget) { case WID_CS_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(MAX_YEAR, 0, 1)); str = STR_BLACK_DATE_LONG; break; case WID_CS_MAPSIZE_X_PULLDOWN: case WID_CS_MAPSIZE_Y_PULLDOWN: SetDParamMaxValue(0, MAX_MAP_SIZE); break; case WID_CS_FLAT_LAND_HEIGHT_TEXT: SetDParamMaxValue(0, MAX_TILE_HEIGHT); break; default: return; } *size = GetStringBoundingBox(str); size->width += padding.width; size->height += padding.height; } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_CS_TEMPERATE: case WID_CS_ARCTIC: case WID_CS_TROPICAL: case WID_CS_TOYLAND: this->RaiseWidget(_settings_newgame.game_creation.landscape + WID_CS_TEMPERATE); SetNewLandscapeType(widget - WID_CS_TEMPERATE); break; case WID_CS_MAPSIZE_X_PULLDOWN: // Mapsize X ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, WID_CS_MAPSIZE_X_PULLDOWN); break; case WID_CS_MAPSIZE_Y_PULLDOWN: // Mapsize Y ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, WID_CS_MAPSIZE_Y_PULLDOWN); break; case WID_CS_EMPTY_WORLD: // Empty world / flat world StartGeneratingLandscape(GLWM_SCENARIO); break; case WID_CS_RANDOM_WORLD: // Generate ShowGenerateLandscape(); break; case WID_CS_START_DATE_DOWN: case WID_CS_START_DATE_UP: // Year buttons /* Don't allow too fast scrolling */ if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) { this->HandleButtonClick(widget); this->SetDirty(); _settings_newgame.game_creation.starting_year = Clamp(_settings_newgame.game_creation.starting_year + widget - WID_CS_START_DATE_TEXT, MIN_YEAR, MAX_YEAR); } _left_button_clicked = false; break; case WID_CS_START_DATE_TEXT: // Year text this->widget_id = WID_CS_START_DATE_TEXT; SetDParam(0, _settings_newgame.game_creation.starting_year); ShowQueryString(STR_JUST_INT, STR_MAPGEN_START_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QSF_NONE); break; case WID_CS_FLAT_LAND_HEIGHT_DOWN: case WID_CS_FLAT_LAND_HEIGHT_UP: // Height level buttons /* Don't allow too fast scrolling */ if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) { this->HandleButtonClick(widget); this->SetDirty(); _settings_newgame.game_creation.se_flat_world_height = Clamp(_settings_newgame.game_creation.se_flat_world_height + widget - WID_CS_FLAT_LAND_HEIGHT_TEXT, 0, MAX_TILE_HEIGHT); } _left_button_clicked = false; break; case WID_CS_FLAT_LAND_HEIGHT_TEXT: // Height level text this->widget_id = WID_CS_FLAT_LAND_HEIGHT_TEXT; SetDParam(0, _settings_newgame.game_creation.se_flat_world_height); ShowQueryString(STR_JUST_INT, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, this, CS_NUMERAL, QSF_NONE); break; } } virtual void OnTimeout() { static const int raise_widgets[] = {WID_CS_START_DATE_DOWN, WID_CS_START_DATE_UP, WID_CS_FLAT_LAND_HEIGHT_DOWN, WID_CS_FLAT_LAND_HEIGHT_UP, WIDGET_LIST_END}; for (const int *widget = raise_widgets; *widget != WIDGET_LIST_END; widget++) { if (this->IsWidgetLowered(*widget)) { this->RaiseWidget(*widget); this->SetWidgetDirty(*widget); } } } virtual void OnDropdownSelect(int widget, int index) { switch (widget) { case WID_CS_MAPSIZE_X_PULLDOWN: _settings_newgame.game_creation.map_x = index; break; case WID_CS_MAPSIZE_Y_PULLDOWN: _settings_newgame.game_creation.map_y = index; break; } this->SetDirty(); } virtual void OnQueryTextFinished(char *str) { if (!StrEmpty(str)) { int32 value = atoi(str); switch (this->widget_id) { case WID_CS_START_DATE_TEXT: this->SetWidgetDirty(WID_CS_START_DATE_TEXT); _settings_newgame.game_creation.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR); break; case WID_CS_FLAT_LAND_HEIGHT_TEXT: this->SetWidgetDirty(WID_CS_FLAT_LAND_HEIGHT_TEXT); _settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, MAX_TILE_HEIGHT); break; } this->SetDirty(); } } }; static const NWidgetPart _nested_create_scenario_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_SE_MAPGEN_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), NWidget(NWID_SPACER), SetMinimalSize(0, 10), /* Landscape style selection. */ NWidget(NWID_HORIZONTAL), SetPIP(10, 3, 10), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(10, 8, 10), /* Green generation type buttons: 'Flat land' and 'Random land'. */ NWidget(NWID_VERTICAL), SetPIP(10, 6, 10), NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_CS_EMPTY_WORLD), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD, STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP), SetFill(1, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_CS_RANDOM_WORLD), SetDataTip(STR_SE_MAPGEN_RANDOM_LAND, STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND), SetFill(1, 1), EndContainer(), /* Labels + setting drop-downs */ NWidget(NWID_VERTICAL), SetPIP(10, 6, 10), /* Map size. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetPadding(1, 0, 0, 0), NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetPadding(0, 4, 0, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 2, 0, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), EndContainer(), /* Date. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetPadding(1, 0, 0, 0), NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), EndContainer(), /* Flat map height. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD_HEIGHT, STR_NULL), SetPadding(1, 0, 0, 0), NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN), NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP), EndContainer(), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _create_scenario_desc( WDP_CENTER, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, 0, _nested_create_scenario_widgets, lengthof(_nested_create_scenario_widgets) ); /** Show the window to create a scenario. */ void ShowCreateScenario() { DeleteWindowByClass(WC_GENERATE_LANDSCAPE); new CreateScenarioWindow(&_create_scenario_desc, GLWM_SCENARIO); } static const NWidgetPart _nested_generate_progress_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GENERATION_WORLD, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_HORIZONTAL), SetPIP(20, 0, 20), NWidget(NWID_VERTICAL), SetPIP(11, 8, 11), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GP_PROGRESS_BAR), SetFill(1, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GP_PROGRESS_TEXT), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_WHITE, WID_GP_ABORT), SetDataTip(STR_GENERATION_ABORT, STR_NULL), SetFill(1, 0), EndContainer(), EndContainer(), EndContainer(), }; static const WindowDesc _generate_progress_desc( WDP_CENTER, 0, 0, WC_MODAL_PROGRESS, WC_NONE, 0, _nested_generate_progress_widgets, lengthof(_nested_generate_progress_widgets) ); struct GenWorldStatus { uint percent; StringID cls; uint current; uint total; int timer; }; static GenWorldStatus _gws; static const StringID _generation_class_table[] = { STR_GENERATION_WORLD_GENERATION, STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION, STR_GENERATION_RIVER_GENERATION, STR_GENERATION_CLEARING_TILES, STR_SCENEDIT_TOOLBAR_TOWN_GENERATION, STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION, STR_GENERATION_OBJECT_GENERATION, STR_GENERATION_TREE_GENERATION, STR_GENERATION_SETTINGUP_GAME, STR_GENERATION_PREPARING_TILELOOP, STR_GENERATION_PREPARING_SCRIPT, STR_GENERATION_PREPARING_GAME }; assert_compile(lengthof(_generation_class_table) == GWP_CLASS_COUNT); static void AbortGeneratingWorldCallback(Window *w, bool confirmed) { if (confirmed) { AbortGeneratingWorld(); } else if (HasModalProgress() && !IsGeneratingWorldAborted()) { SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE); } } struct GenerateProgressWindow : public Window { GenerateProgressWindow() : Window() { this->InitNested(&_generate_progress_desc); } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { case WID_GP_ABORT: if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); ShowQuery( STR_GENERATION_ABORT_CAPTION, STR_GENERATION_ABORT_MESSAGE, this, AbortGeneratingWorldCallback ); break; } } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_GP_PROGRESS_BAR: { SetDParamMaxValue(0, 100); *size = GetStringBoundingBox(STR_GENERATION_PROGRESS); /* We need some spacing for the 'border' */ size->height += 8; size->width += 8; break; } case WID_GP_PROGRESS_TEXT: for (uint i = 0; i < GWP_CLASS_COUNT; i++) { size->width = max(size->width, GetStringBoundingBox(_generation_class_table[i]).width); } size->height = FONT_HEIGHT_NORMAL * 2 + WD_PAR_VSEP_NORMAL; break; } } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_GP_PROGRESS_BAR: /* Draw the % complete with a bar and a text */ DrawFrameRect(r.left, r.top, r.right, r.bottom, COLOUR_GREY, FR_BORDERONLY); DrawFrameRect(r.left + 1, r.top + 1, (int)((r.right - r.left - 2) * _gws.percent / 100) + r.left + 1, r.bottom - 1, COLOUR_MAUVE, FR_NONE); SetDParam(0, _gws.percent); DrawString(r.left, r.right, r.top + 5, STR_GENERATION_PROGRESS, TC_FROMSTRING, SA_HOR_CENTER); break; case WID_GP_PROGRESS_TEXT: /* Tell which class we are generating */ DrawString(r.left, r.right, r.top, _gws.cls, TC_FROMSTRING, SA_HOR_CENTER); /* And say where we are in that class */ SetDParam(0, _gws.current); SetDParam(1, _gws.total); DrawString(r.left, r.right, r.top + FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL, STR_GENERATION_PROGRESS_NUM, TC_FROMSTRING, SA_HOR_CENTER); } } }; /** * Initializes the progress counters to the starting point. */ void PrepareGenerateWorldProgress() { _gws.cls = STR_GENERATION_WORLD_GENERATION; _gws.current = 0; _gws.total = 0; _gws.percent = 0; _gws.timer = 0; // Forces to paint the progress window immediately } /** * Show the window where a user can follow the process of the map generation. */ void ShowGenerateWorldProgress() { if (BringWindowToFrontById(WC_MODAL_PROGRESS, 0)) return; new GenerateProgressWindow(); } static void _SetGeneratingWorldProgress(GenWorldProgress cls, uint progress, uint total) { static const int percent_table[] = {0, 5, 14, 17, 20, 40, 60, 65, 80, 85, 95, 99, 100 }; assert_compile(lengthof(percent_table) == GWP_CLASS_COUNT + 1); assert(cls < GWP_CLASS_COUNT); /* Do not run this function if we aren't in a thread */ if (!IsGenerateWorldThreaded() && !_network_dedicated) return; if (IsGeneratingWorldAborted()) HandleGeneratingWorldAbortion(); if (total == 0) { assert(_gws.cls == _generation_class_table[cls]); _gws.current += progress; assert(_gws.current <= _gws.total); } else { _gws.cls = _generation_class_table[cls]; _gws.current = progress; _gws.total = total; _gws.percent = percent_table[cls]; } /* Don't update the screen too often. So update it once in every once in a while... */ if (!_network_dedicated && _gws.timer != 0 && _realtime_tick - _gws.timer < MODAL_PROGRESS_REDRAW_TIMEOUT) return; /* Percentage is about the number of completed tasks, so 'current - 1' */ _gws.percent = percent_table[cls] + (percent_table[cls + 1] - percent_table[cls]) * (_gws.current == 0 ? 0 : _gws.current - 1) / _gws.total; if (_network_dedicated) { static uint last_percent = 0; /* Never display 0% */ if (_gws.percent == 0) return; /* Reset if percent is lower than the last recorded */ if (_gws.percent < last_percent) last_percent = 0; /* Display every 5%, but 6% is also very valid.. just not smaller steps than 5% */ if (_gws.percent % 5 != 0 && _gws.percent <= last_percent + 5) return; /* Never show steps smaller than 2%, even if it is a mod 5% */ if (_gws.percent <= last_percent + 2) return; DEBUG(net, 1, "Map generation percentage complete: %d", _gws.percent); last_percent = _gws.percent; /* Don't continue as dedicated never has a thread running */ return; } SetWindowDirty(WC_MODAL_PROGRESS, 0); MarkWholeScreenDirty(); /* Release the rights to the map generator, and acquire the rights to the * paint thread. The 'other' thread already has the paint thread rights so * this ensures us that we are waiting until the paint thread is done * before we reacquire the mapgen rights */ _modal_progress_work_mutex->EndCritical(); _modal_progress_paint_mutex->BeginCritical(); _modal_progress_work_mutex->BeginCritical(); _modal_progress_paint_mutex->EndCritical(); _gws.timer = _realtime_tick; } /** * Set the total of a stage of the world generation. * @param cls the current class we are in. * @param total Set the total expected items for this class. * * Warning: this function isn't clever. Don't go from class 4 to 3. Go upwards, always. * Also, progress works if total is zero, total works if progress is zero. */ void SetGeneratingWorldProgress(GenWorldProgress cls, uint total) { if (total == 0) return; _SetGeneratingWorldProgress(cls, 0, total); } /** * Increases the current stage of the world generation with one. * @param cls the current class we are in. * * Warning: this function isn't clever. Don't go from class 4 to 3. Go upwards, always. * Also, progress works if total is zero, total works if progress is zero. */ void IncreaseGeneratingWorldProgress(GenWorldProgress cls) { /* In fact the param 'class' isn't needed.. but for some security reasons, we want it around */ _SetGeneratingWorldProgress(cls, 1, 0); } openttd-1.3.3/src/newgrf_industrytiles.cpp0000644000000000000000000003516612246102611017464 0ustar rootroot/* $Id: newgrf_industrytiles.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_industrytiles.cpp NewGRF handling of industry tiles. */ #include "stdafx.h" #include "debug.h" #include "landscape.h" #include "newgrf_industrytiles.h" #include "newgrf_sound.h" #include "industry.h" #include "town.h" #include "command_func.h" #include "water.h" #include "newgrf_animation_base.h" #include "table/strings.h" /** * Based on newhouses equivalent, but adapted for newindustries * @param parameter from callback. It's in fact a pair of coordinates * @param tile TileIndex from which the callback was initiated * @param index of the industry been queried for * @param signed_offsets Are the x and y offset encoded in parameter signed? * @param grf_version8 True, if we are dealing with a new NewGRF which uses GRF version >= 8. * @return a construction of bits obeying the newgrf format */ uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index, bool signed_offsets, bool grf_version8) { if (parameter != 0) tile = GetNearbyTile(parameter, tile, signed_offsets); // only perform if it is required bool is_same_industry = (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == index); return GetNearbyTileInformation(tile, grf_version8) | (is_same_industry ? 1 : 0) << 8; } /** * This is the position of the tile relative to the northernmost tile of the industry. * Format: 00yxYYXX * Variable Content * x the x offset from the northernmost tile * XX same, but stored in a byte instead of a nibble * y the y offset from the northernmost tile * YY same, but stored in a byte instead of a nibble * @param tile TileIndex of the tile to evaluate * @param ind_tile northernmost tile of the industry */ uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile) { byte x = TileX(tile) - TileX(ind_tile); byte y = TileY(tile) - TileY(ind_tile); return ((y & 0xF) << 20) | ((x & 0xF) << 16) | (y << 8) | x; } /* virtual */ uint32 IndustryTileScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { switch (variable) { /* Construction state of the tile: a value between 0 and 3 */ case 0x40: return (IsTileType(this->tile, MP_INDUSTRY)) ? GetIndustryConstructionStage(this->tile) : 0; /* Terrain type */ case 0x41: return GetTerrainType(this->tile); /* Current town zone of the tile in the nearest town */ case 0x42: return GetTownRadiusGroup(ClosestTownFromTile(this->tile, UINT_MAX), this->tile); /* Relative position */ case 0x43: return GetRelativePosition(this->tile, this->industry->location.tile); /* Animation frame. Like house variable 46 but can contain anything 0..FF. */ case 0x44: return IsTileType(this->tile, MP_INDUSTRY) ? GetAnimationFrame(this->tile) : 0; /* Land info of nearby tiles */ case 0x60: return GetNearbyIndustryTileInformation(parameter, this->tile, this->industry == NULL ? (IndustryID)INVALID_INDUSTRY : this->industry->index, true, this->ro->grffile->grf_version >= 8); /* Animation stage of nearby tiles */ case 0x61: { TileIndex tile = GetNearbyTile(parameter, this->tile); if (IsTileType(tile, MP_INDUSTRY) && Industry::GetByTile(tile) == this->industry) { return GetAnimationFrame(tile); } return UINT_MAX; } /* Get industry tile ID at offset */ case 0x62: return GetIndustryIDAtOffset(GetNearbyTile(parameter, this->tile), this->industry, this->ro->grffile->grfid); } DEBUG(grf, 1, "Unhandled industry tile variable 0x%X", variable); *available = false; return UINT_MAX; } /* virtual */ uint32 IndustryTileScopeResolver::GetRandomBits() const { assert(this->industry != NULL && IsValidTile(this->tile)); assert(this->industry->index == INVALID_INDUSTRY || IsTileType(this->tile, MP_INDUSTRY)); return (this->industry->index != INVALID_INDUSTRY) ? GetIndustryRandomBits(this->tile) : 0; } /* virtual */ uint32 IndustryTileScopeResolver::GetTriggers() const { assert(this->industry != NULL && IsValidTile(this->tile)); assert(this->industry->index == INVALID_INDUSTRY || IsTileType(this->tile, MP_INDUSTRY)); if (this->industry->index == INVALID_INDUSTRY) return 0; return GetIndustryTriggers(this->tile); } /* virtual */ void IndustryTileScopeResolver::SetTriggers(int triggers) const { assert(this->industry != NULL && this->industry->index != INVALID_INDUSTRY && IsValidTile(this->tile) && IsTileType(this->tile, MP_INDUSTRY)); SetIndustryTriggers(this->tile, triggers); } /** * Get the associated NewGRF file from the industry graphics. * @param gfx Graphics to query. * @return Grf file associated with the graphics, if any. */ static const GRFFile *GetIndTileGrffile(IndustryGfx gfx) { const IndustryTileSpec *its = GetIndustryTileSpec(gfx); return (its != NULL) ? its->grf_prop.grffile : NULL; } /** * Constructor of the industry tiles scope resolver. * @param gfx Graphics of the industry. * @param tile %Tile of the industry. * @param indus %Industry owning the tile. * @param callback Callback ID. * @param callback_param1 First parameter (var 10) of the callback. * @param callback_param2 Second parameter (var 18) of the callback. */ IndustryTileResolverObject::IndustryTileResolverObject(IndustryGfx gfx, TileIndex tile, Industry *indus, CallbackID callback, uint32 callback_param1, uint32 callback_param2) : ResolverObject(GetIndTileGrffile(gfx), callback, callback_param1, callback_param2), indtile_scope(this, indus, tile), ind_scope(this, tile, indus, indus->type) { } /** * Constructor of the scope resolver for the industry tile. * @param ro Surrounding resolver. * @param industry %Industry owning the tile. * @param tile %Tile of the industry. */ IndustryTileScopeResolver::IndustryTileScopeResolver(ResolverObject *ro, Industry *industry, TileIndex tile) : ScopeResolver(ro) { this->industry = industry; this->tile = tile; } static void IndustryDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte rnd_colour, byte stage, IndustryGfx gfx) { const DrawTileSprites *dts = group->ProcessRegisters(&stage); SpriteID image = dts->ground.sprite; PaletteID pal = dts->ground.pal; if (HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE)) image += stage; if (HasBit(pal, SPRITE_MODIFIER_CUSTOM_SPRITE)) pal += stage; if (GB(image, 0, SPRITE_WIDTH) != 0) { /* If the ground sprite is the default flat water sprite, draw also canal/river borders * Do not do this if the tile's WaterClass is 'land'. */ if (image == SPR_FLAT_WATER_TILE && IsTileOnWater(ti->tile)) { DrawWaterClassGround(ti); } else { DrawGroundSprite(image, GroundSpritePaletteTransform(image, pal, GENERAL_SPRITE_COLOUR(rnd_colour))); } } DrawNewGRFTileSeq(ti, dts, TO_INDUSTRIES, stage, GENERAL_SPRITE_COLOUR(rnd_colour)); } uint16 GetIndustryTileCallback(CallbackID callback, uint32 param1, uint32 param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile) { assert(industry != NULL && IsValidTile(tile)); assert(industry->index == INVALID_INDUSTRY || IsTileType(tile, MP_INDUSTRY)); IndustryTileResolverObject object(gfx_id, tile, industry, callback, param1, param2); const SpriteGroup *group = SpriteGroup::Resolve(GetIndustryTileSpec(gfx_id)->grf_prop.spritegroup[0], &object); if (group == NULL || group->type != SGT_CALLBACK) return CALLBACK_FAILED; return group->GetCallbackResult(); } bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds) { if (ti->tileh != SLOPE_FLAT) { bool draw_old_one = true; if (HasBit(inds->callback_mask, CBM_INDT_DRAW_FOUNDATIONS)) { /* Called to determine the type (if any) of foundation to draw for industry tile */ uint32 callback_res = GetIndustryTileCallback(CBID_INDTILE_DRAW_FOUNDATIONS, 0, 0, gfx, i, ti->tile); if (callback_res != CALLBACK_FAILED) draw_old_one = ConvertBooleanCallback(inds->grf_prop.grffile, CBID_INDTILE_DRAW_FOUNDATIONS, callback_res); } if (draw_old_one) DrawFoundation(ti, FOUNDATION_LEVELED); } IndustryTileResolverObject object(gfx, ti->tile, i); const SpriteGroup *group = SpriteGroup::Resolve(inds->grf_prop.spritegroup[0], &object); if (group == NULL || group->type != SGT_TILELAYOUT) { return false; } else { /* Limit the building stage to the number of stages supplied. */ const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; byte stage = GetIndustryConstructionStage(ti->tile); IndustryDrawTileLayout(ti, tlgroup, i->random_colour, stage, gfx); return true; } } extern bool IsSlopeRefused(Slope current, Slope refused); /** * Check the slope of a tile of a new industry. * @param ind_base_tile Base tile of the industry. * @param ind_tile Tile to check. * @param its Tile specification. * @param type Industry type. * @param gfx Gfx of the tile. * @param itspec_index Layout. * @param initial_random_bits Random bits of industry after construction * @param founder Industry founder * @param creation_type The circumstances the industry is created under. * @return Succeeded or failed command. */ CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind_tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx, uint itspec_index, uint16 initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type) { Industry ind; ind.index = INVALID_INDUSTRY; ind.location.tile = ind_base_tile; ind.location.w = 0; ind.type = type; ind.random = initial_random_bits; ind.founder = founder; uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_SHAPE_CHECK, 0, creation_type << 8 | itspec_index, gfx, &ind, ind_tile); if (callback_res == CALLBACK_FAILED) { if (!IsSlopeRefused(GetTileSlope(ind_tile), its->slopes_refused)) return CommandCost(); return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } if (its->grf_prop.grffile->grf_version < 7) { if (callback_res != 0) return CommandCost(); return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } return GetErrorMessageFromLocationCallbackResult(callback_res, its->grf_prop.grffile->grfid, STR_ERROR_SITE_UNSUITABLE); } /* Simple wrapper for GetHouseCallback to keep the animation unified. */ uint16 GetSimpleIndustryCallback(CallbackID callback, uint32 param1, uint32 param2, const IndustryTileSpec *spec, Industry *ind, TileIndex tile, int extra_data) { return GetIndustryTileCallback(callback, param1, param2, spec - GetIndustryTileSpec(0), ind, tile); } /** Helper class for animation control. */ struct IndustryAnimationBase : public AnimationBase { static const CallbackID cb_animation_speed = CBID_INDTILE_ANIMATION_SPEED; static const CallbackID cb_animation_next_frame = CBID_INDTILE_ANIM_NEXT_FRAME; static const IndustryTileCallbackMask cbm_animation_speed = CBM_INDT_ANIM_SPEED; static const IndustryTileCallbackMask cbm_animation_next_frame = CBM_INDT_ANIM_NEXT_FRAME; }; void AnimateNewIndustryTile(TileIndex tile) { const IndustryTileSpec *itspec = GetIndustryTileSpec(GetIndustryGfx(tile)); if (itspec == NULL) return; IndustryAnimationBase::AnimateTile(itspec, Industry::GetByTile(tile), tile, (itspec->special_flags & INDTILE_SPECIAL_NEXTFRAME_RANDOMBITS) != 0); } bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32 random) { const IndustryTileSpec *itspec = GetIndustryTileSpec(GetIndustryGfx(tile)); if (!HasBit(itspec->animation.triggers, iat)) return false; IndustryAnimationBase::ChangeAnimationFrame(CBID_INDTILE_ANIM_START_STOP, itspec, Industry::GetByTile(tile), tile, random, iat); return true; } bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat) { bool ret = true; uint32 random = Random(); TILE_AREA_LOOP(tile, ind->location) { if (ind->TileBelongsToIndustry(tile)) { if (StartStopIndustryTileAnimation(tile, iat, random)) { SB(random, 0, 16, Random()); } else { ret = false; } } } return ret; } /** * Trigger random triggers for an industry tile and reseed its random bits. * @param tile Industry tile to trigger. * @param trigger Trigger to trigger. * @param ind Industry of the tile. * @param [in,out] reseed_industry Collects bits to reseed for the industry. */ static void DoTriggerIndustryTile(TileIndex tile, IndustryTileTrigger trigger, Industry *ind, uint32 &reseed_industry) { assert(IsValidTile(tile) && IsTileType(tile, MP_INDUSTRY)); IndustryGfx gfx = GetIndustryGfx(tile); const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx); if (itspec->grf_prop.spritegroup[0] == NULL) return; IndustryTileResolverObject object(gfx, tile, ind, CBID_RANDOM_TRIGGER); object.trigger = trigger; const SpriteGroup *group = SpriteGroup::Resolve(itspec->grf_prop.spritegroup[0], &object); if (group == NULL) return; byte new_random_bits = Random(); byte random_bits = GetIndustryRandomBits(tile); random_bits &= ~object.reseed[VSG_SCOPE_SELF]; random_bits |= new_random_bits & object.reseed[VSG_SCOPE_SELF]; SetIndustryRandomBits(tile, random_bits); MarkTileDirtyByTile(tile); reseed_industry |= object.reseed[VSG_SCOPE_PARENT]; } /** * Reseeds the random bits of an industry. * @param ind Industry. * @param reseed Bits to reseed. */ static void DoReseedIndustry(Industry *ind, uint32 reseed) { if (reseed == 0 || ind == NULL) return; uint16 random_bits = Random(); ind->random &= reseed; ind->random |= random_bits & reseed; } /** * Trigger a random trigger for a single industry tile. * @param tile Industry tile to trigger. * @param trigger Trigger to trigger. */ void TriggerIndustryTile(TileIndex tile, IndustryTileTrigger trigger) { uint32 reseed_industry = 0; Industry *ind = Industry::GetByTile(tile); DoTriggerIndustryTile(tile, trigger, ind, reseed_industry); DoReseedIndustry(ind, reseed_industry); } /** * Trigger a random trigger for all industry tiles. * @param ind Industry to trigger. * @param trigger Trigger to trigger. */ void TriggerIndustry(Industry *ind, IndustryTileTrigger trigger) { uint32 reseed_industry = 0; TILE_AREA_LOOP(tile, ind->location) { if (ind->TileBelongsToIndustry(tile)) { DoTriggerIndustryTile(tile, trigger, ind, reseed_industry); } } DoReseedIndustry(ind, reseed_industry); } openttd-1.3.3/src/game/0000755000000000000000000000000012246102757013377 5ustar rootrootopenttd-1.3.3/src/game/game_config.cpp0000644000000000000000000000321412246102554016334 0ustar rootroot/* $Id: game_config.cpp 23740 2012-01-03 21:32:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_config.cpp Implementation of GameConfig. */ #include "../stdafx.h" #include "../settings_type.h" #include "game.hpp" #include "game_config.hpp" #include "game_info.hpp" /* static */ GameConfig *GameConfig::GetConfig(ScriptSettingSource source) { GameConfig **config; if (source == SSS_FORCE_NEWGAME || (source == SSS_DEFAULT && _game_mode == GM_MENU)) { config = &_settings_newgame.game_config; } else { config = &_settings_game.game_config; } if (*config == NULL) *config = new GameConfig(); return *config; } class GameInfo *GameConfig::GetInfo() const { return static_cast(ScriptConfig::GetInfo()); } ScriptInfo *GameConfig::FindInfo(const char *name, int version, bool force_exact_match) { return static_cast(Game::FindInfo(name, version, force_exact_match)); } bool GameConfig::ResetInfo(bool force_exact_match) { this->info = (ScriptInfo *)Game::FindInfo(this->name, force_exact_match ? this->version : -1, force_exact_match); return this->info != NULL; } openttd-1.3.3/src/game/game_instance.hpp0000644000000000000000000000266612246102554016712 0ustar rootroot/* $Id: game_instance.hpp 23737 2012-01-03 20:37:56Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_instance.hpp The GameInstance tracks games. */ #ifndef GAME_INSTANCE_HPP #define GAME_INSTANCE_HPP #include "../script/script_instance.hpp" /** Runtime information about a game script like a pointer to the squirrel vm and the current state. */ class GameInstance : public ScriptInstance { public: GameInstance(); /** * Initialize the script and prepare it for its first run. * @param info The GameInfo to start. */ void Initialize(class GameInfo *info); /* virtual */ int GetSetting(const char *name); /* virtual */ ScriptInfo *FindLibrary(const char *library, int version); private: /* virtual */ void RegisterAPI(); /* virtual */ void Died(); /* virtual */ CommandCallback *GetDoCommandCallback(); /* virtual */ void LoadDummyScript() {} }; #endif /* GAME_INSTANCE_HPP */ openttd-1.3.3/src/game/game_config.hpp0000644000000000000000000000317112246102554016343 0ustar rootroot/* $Id: game_config.hpp 23737 2012-01-03 20:37:56Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_config.hpp GameConfig stores the configuration settings of every Game. */ #ifndef GAME_CONFIG_HPP #define GAME_CONFIG_HPP #include "../script/script_config.hpp" class GameConfig : public ScriptConfig { public: /** * Get the config of a company. */ static GameConfig *GetConfig(ScriptSettingSource source = SSS_DEFAULT); GameConfig() : ScriptConfig() {} GameConfig(const GameConfig *config) : ScriptConfig(config) {} class GameInfo *GetInfo() const; /** * When ever the Game Scanner is reloaded, all infos become invalid. This * function tells GameConfig about this. * @param force_exact_match If true try to find the exact same version * as specified. If false any version is ok. * @return \c true if the reset was successful, \c false if the Game was no longer * found. */ bool ResetInfo(bool force_exact_match); protected: /* virtual */ ScriptInfo *FindInfo(const char *name, int version, bool force_exact_match); }; #endif /* GAME_CONFIG_HPP */ openttd-1.3.3/src/game/game_scanner.cpp0000644000000000000000000000724512246102554016530 0ustar rootroot/* $Id: game_scanner.cpp 23740 2012-01-03 21:32:51Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_scanner.cpp allows scanning Game scripts */ #include "../stdafx.h" #include "../script/squirrel_class.hpp" #include "game_info.hpp" #include "game_scanner.hpp" void GameScannerInfo::Initialize() { ScriptScanner::Initialize("GSScanner"); } void GameScannerInfo::GetScriptName(ScriptInfo *info, char *name, int len) { snprintf(name, len, "%s", info->GetName()); } void GameScannerInfo::RegisterAPI(class Squirrel *engine) { GameInfo::RegisterAPI(engine); } GameInfo *GameScannerInfo::FindInfo(const char *nameParam, int versionParam, bool force_exact_match) { if (this->info_list.size() == 0) return NULL; if (nameParam == NULL) return NULL; char game_name[1024]; ttd_strlcpy(game_name, nameParam, sizeof(game_name)); strtolower(game_name); GameInfo *info = NULL; int version = -1; if (versionParam == -1) { /* We want to load the latest version of this Game script; so find it */ if (this->info_single_list.find(game_name) != this->info_single_list.end()) return static_cast(this->info_single_list[game_name]); /* If we didn't find a match Game script, maybe the user included a version */ char *e = strrchr(game_name, '.'); if (e == NULL) return NULL; *e = '\0'; e++; versionParam = atoi(e); /* FALL THROUGH, like we were calling this function with a version. */ } if (force_exact_match) { /* Try to find a direct 'name.version' match */ char game_name_tmp[1024]; snprintf(game_name_tmp, sizeof(game_name_tmp), "%s.%d", game_name, versionParam); strtolower(game_name_tmp); if (this->info_list.find(game_name_tmp) != this->info_list.end()) return static_cast(this->info_list[game_name_tmp]); } /* See if there is a compatible Game script which goes by that name, with the highest * version which allows loading the requested version */ ScriptInfoList::iterator it = this->info_list.begin(); for (; it != this->info_list.end(); it++) { GameInfo *i = static_cast((*it).second); if (strcasecmp(game_name, i->GetName()) == 0 && i->CanLoadFromVersion(versionParam) && (version == -1 || i->GetVersion() > version)) { version = (*it).second->GetVersion(); info = i; } } return info; } void GameScannerLibrary::Initialize() { ScriptScanner::Initialize("GSScanner"); } void GameScannerLibrary::GetScriptName(ScriptInfo *info, char *name, int len) { GameLibrary *library = static_cast(info); snprintf(name, len, "%s.%s", library->GetCategory(), library->GetInstanceName()); } void GameScannerLibrary::RegisterAPI(class Squirrel *engine) { GameLibrary::RegisterAPI(engine); } GameLibrary *GameScannerLibrary::FindLibrary(const char *library, int version) { /* Internally we store libraries as 'library.version' */ char library_name[1024]; snprintf(library_name, sizeof(library_name), "%s.%d", library, version); strtolower(library_name); /* Check if the library + version exists */ ScriptInfoList::iterator iter = this->info_list.find(library_name); if (iter == this->info_list.end()) return NULL; return static_cast((*iter).second); } openttd-1.3.3/src/game/game.hpp0000644000000000000000000001040412246102554015013 0ustar rootroot/* $Id: game.hpp 25169 2013-04-08 20:56:30Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game.hpp Base functions for all Games. */ #ifndef GAME_HPP #define GAME_HPP #include "../core/string_compare_type.hpp" #include "game_scanner.hpp" #include /** A list that maps AI names to their AIInfo object. */ typedef std::map ScriptInfoList; #include "../script/api/script_event_types.hpp" /** * Main Game class. Contains all functions needed to start, stop, save and load Game Scripts. */ class Game { public: /** * Called every game-tick to let Game do something. */ static void GameLoop(); /** * Initialize the Game system. */ static void Initialize(); /** * Start up a new GameScript. */ static void StartNew(); /** * Uninitialize the Game system. */ static void Uninitialize(bool keepConfig); /** * Suspends the Game Script and then pause the execution of the script. The * script will not be resumed from its suspended state until the script * has been unpaused. */ static void Pause(); /** * Resume execution of the Game Script. This function will not actually execute * the script, but set a flag so that the script is executed my the usual * mechanism that executes the script. */ static void Unpause(); /** * Checks if the Game Script is paused. * @return true if the Game Script is paused, otherwise false. */ static bool IsPaused(); /** * Queue a new event for a Game Script. */ static void NewEvent(class ScriptEvent *event); /** * Get the current GameScript instance. */ static class GameInstance *GetGameInstance() { return Game::instance; } /** * Get the current GameInfo. */ static class GameInfo *GetInfo() { return Game::info; } static void Rescan(); static void ResetConfig(); /** * Save data from a GameScript to a savegame. */ static void Save(); /** * Load data for a GameScript from a savegame. */ static void Load(int version); /** Wrapper function for GameScanner::GetConsoleList */ static char *GetConsoleList(char *p, const char *last, bool newest_only = false); /** Wrapper function for GameScanner::GetConsoleLibraryList */ static char *GetConsoleLibraryList(char *p, const char *last); /** Wrapper function for GameScanner::GetInfoList */ static const ScriptInfoList *GetInfoList(); /** Wrapper function for GameScanner::GetUniqueInfoList */ static const ScriptInfoList *GetUniqueInfoList(); /** Wrapper function for GameScannerInfo::FindInfo */ static class GameInfo *FindInfo(const char *name, int version, bool force_exact_match); /** Wrapper function for GameScanner::FindLibrary */ static class GameLibrary *FindLibrary(const char *library, int version); /** * Get the current active instance. */ static class GameInstance *GetInstance() { return Game::instance; } #if defined(ENABLE_NETWORK) /** Wrapper function for GameScanner::HasGame */ static bool HasGame(const struct ContentInfo *ci, bool md5sum); static bool HasGameLibrary(const ContentInfo *ci, bool md5sum); #endif /** Gets the ScriptScanner instance that is used to find Game scripts */ static GameScannerInfo *GetScannerInfo(); /** Gets the ScriptScanner instance that is used to find Game Libraries */ static GameScannerLibrary *GetScannerLibrary(); private: static uint frame_counter; ///< Tick counter for the Game code. static class GameInstance *instance; ///< Instance to the current active Game. static class GameScannerInfo *scanner_info; ///< Scanner for Game scripts. static class GameScannerLibrary *scanner_library; ///< Scanner for GS Libraries. static class GameInfo *info; ///< Current selected GameInfo. }; #endif /* GAME_HPP */ openttd-1.3.3/src/game/game_info.cpp0000644000000000000000000001162712246102554016031 0ustar rootroot/* $Id: game_info.cpp 23969 2012-02-19 19:14:17Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_info.cpp Implementation of GameInfo */ #include "../stdafx.h" #include "../script/squirrel_class.hpp" #include "game_info.hpp" #include "game_scanner.hpp" #include "../debug.h" /** * Check if the API version provided by the Game is supported. * @param api_version The API version as provided by the Game. */ static bool CheckAPIVersion(const char *api_version) { return strcmp(api_version, "1.2") == 0 || strcmp(api_version, "1.3") == 0; } #if defined(WIN32) #undef GetClassName #endif /* WIN32 */ template <> const char *GetClassName() { return "GSInfo"; } /* static */ void GameInfo::RegisterAPI(Squirrel *engine) { /* Create the GSInfo class, and add the RegisterGS function */ DefSQClass SQGSInfo("GSInfo"); SQGSInfo.PreRegister(engine); SQGSInfo.AddConstructor(engine, "x"); SQGSInfo.DefSQAdvancedMethod(engine, &GameInfo::AddSetting, "AddSetting"); SQGSInfo.DefSQAdvancedMethod(engine, &GameInfo::AddLabels, "AddLabels"); SQGSInfo.DefSQConst(engine, SCRIPTCONFIG_NONE, "CONFIG_NONE"); SQGSInfo.DefSQConst(engine, SCRIPTCONFIG_RANDOM, "CONFIG_RANDOM"); SQGSInfo.DefSQConst(engine, SCRIPTCONFIG_BOOLEAN, "CONFIG_BOOLEAN"); SQGSInfo.DefSQConst(engine, SCRIPTCONFIG_INGAME, "CONFIG_INGAME"); SQGSInfo.DefSQConst(engine, SCRIPTCONFIG_DEVELOPER, "CONFIG_DEVELOPER"); SQGSInfo.PostRegister(engine); engine->AddMethod("RegisterGS", &GameInfo::Constructor, 2, "tx"); } /* static */ SQInteger GameInfo::Constructor(HSQUIRRELVM vm) { /* Get the GameInfo */ SQUserPointer instance = NULL; if (SQ_FAILED(sq_getinstanceup(vm, 2, &instance, 0)) || instance == NULL) return sq_throwerror(vm, _SC("Pass an instance of a child class of GameInfo to RegisterGame")); GameInfo *info = (GameInfo *)instance; SQInteger res = ScriptInfo::Constructor(vm, info); if (res != 0) return res; if (info->engine->MethodExists(*info->SQ_instance, "MinVersionToLoad")) { if (!info->engine->CallIntegerMethod(*info->SQ_instance, "MinVersionToLoad", &info->min_loadable_version, MAX_GET_OPS)) return SQ_ERROR; } else { info->min_loadable_version = info->GetVersion(); } /* When there is an IsSelectable function, call it. */ if (info->engine->MethodExists(*info->SQ_instance, "IsDeveloperOnly")) { if (!info->engine->CallBoolMethod(*info->SQ_instance, "IsDeveloperOnly", &info->is_developer_only, MAX_GET_OPS)) return SQ_ERROR; } else { info->is_developer_only = false; } /* Try to get the API version the AI is written for. */ if (!info->CheckMethod("GetAPIVersion")) return SQ_ERROR; if (!info->engine->CallStringMethodStrdup(*info->SQ_instance, "GetAPIVersion", &info->api_version, MAX_GET_OPS)) return SQ_ERROR; if (!CheckAPIVersion(info->api_version)) { DEBUG(script, 1, "Loading info.nut from (%s.%d): GetAPIVersion returned invalid version", info->GetName(), info->GetVersion()); return SQ_ERROR; } /* Remove the link to the real instance, else it might get deleted by RegisterGame() */ sq_setinstanceup(vm, 2, NULL); /* Register the Game to the base system */ info->GetScanner()->RegisterScript(info); return 0; } GameInfo::GameInfo() : min_loadable_version(0), is_developer_only(false), api_version(NULL) { } GameInfo::~GameInfo() { free(this->api_version); } bool GameInfo::CanLoadFromVersion(int version) const { if (version == -1) return true; return version >= this->min_loadable_version && version <= this->GetVersion(); } GameLibrary::~GameLibrary() { free(this->category); } /* static */ void GameLibrary::RegisterAPI(Squirrel *engine) { /* Create the GameLibrary class, and add the RegisterLibrary function */ engine->AddClassBegin("GSLibrary"); engine->AddClassEnd(); engine->AddMethod("RegisterLibrary", &GameLibrary::Constructor, 2, "tx"); } /* static */ SQInteger GameLibrary::Constructor(HSQUIRRELVM vm) { /* Create a new library */ GameLibrary *library = new GameLibrary(); SQInteger res = ScriptInfo::Constructor(vm, library); if (res != 0) { delete library; return res; } /* Cache the category */ if (!library->CheckMethod("GetCategory") || !library->engine->CallStringMethodStrdup(*library->SQ_instance, "GetCategory", &library->category, MAX_GET_OPS)) { delete library; return SQ_ERROR; } /* Register the Library to the base system */ library->GetScanner()->RegisterScript(library); return 0; } openttd-1.3.3/src/game/game_scanner.hpp0000644000000000000000000000470412246102554016532 0ustar rootroot/* $Id: game_scanner.hpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_scanner.hpp declarations of the class for Game scanner */ #ifndef GAME_SCANNER_HPP #define GAME_SCANNER_HPP #include "../script/script_scanner.hpp" class GameScannerInfo : public ScriptScanner { public: /* virtual */ void Initialize(); /** * Check if we have a game by name and version available in our list. * @param nameParam The name of the game script. * @param versionParam The version of the game script, or -1 if you want the latest. * @param force_exact_match Only match name+version, never latest. * @return NULL if no match found, otherwise the game script that matched. */ class GameInfo *FindInfo(const char *nameParam, int versionParam, bool force_exact_match); protected: /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); /* virtual */ const char *GetFileName() const { return PATHSEP "info.nut"; } /* virtual */ Subdirectory GetDirectory() const { return GAME_DIR; } /* virtual */ const char *GetScannerName() const { return "Game Scripts"; } /* virtual */ void RegisterAPI(class Squirrel *engine); }; class GameScannerLibrary : public ScriptScanner { public: /* virtual */ void Initialize(); /** * Find a library in the pool. * @param library The library name to find. * @param version The version the library should have. * @return The library if found, NULL otherwise. */ class GameLibrary *FindLibrary(const char *library, int version); protected: /* virtual */ void GetScriptName(ScriptInfo *info, char *name, int len); /* virtual */ const char *GetFileName() const { return PATHSEP "library.nut"; } /* virtual */ Subdirectory GetDirectory() const { return GAME_LIBRARY_DIR; } /* virtual */ const char *GetScannerName() const { return "GS Libraries"; } /* virtual */ void RegisterAPI(class Squirrel *engine); }; #endif /* GAME_SCANNER_HPP */ openttd-1.3.3/src/game/game_instance.cpp0000644000000000000000000002251212246102554016675 0ustar rootroot/* $Id: game_instance.cpp 24468 2012-08-13 19:22:26Z yexo $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_instance.cpp Implementation of GameInstance. */ #include "../stdafx.h" #include "../error.h" #include "../script/squirrel_class.hpp" #include "../script/script_storage.hpp" #include "../ai/ai_gui.hpp" #include "game_config.hpp" #include "game_info.hpp" #include "game_instance.hpp" #include "game_text.hpp" #include "game.hpp" /* Convert all Game related classes to Squirrel data. * Note: this line is a marker in squirrel_export.sh. Do not change! */ #include "../script/api/game/game_accounting.hpp.sq" #include "../script/api/game/game_admin.hpp.sq" #include "../script/api/game/game_airport.hpp.sq" #include "../script/api/game/game_base.hpp.sq" #include "../script/api/game/game_basestation.hpp.sq" #include "../script/api/game/game_bridge.hpp.sq" #include "../script/api/game/game_bridgelist.hpp.sq" #include "../script/api/game/game_cargo.hpp.sq" #include "../script/api/game/game_cargolist.hpp.sq" #include "../script/api/game/game_cargomonitor.hpp.sq" #include "../script/api/game/game_company.hpp.sq" #include "../script/api/game/game_companymode.hpp.sq" #include "../script/api/game/game_controller.hpp.sq" #include "../script/api/game/game_date.hpp.sq" #include "../script/api/game/game_depotlist.hpp.sq" #include "../script/api/game/game_engine.hpp.sq" #include "../script/api/game/game_enginelist.hpp.sq" #include "../script/api/game/game_error.hpp.sq" #include "../script/api/game/game_event.hpp.sq" #include "../script/api/game/game_event_types.hpp.sq" #include "../script/api/game/game_execmode.hpp.sq" #include "../script/api/game/game_game.hpp.sq" #include "../script/api/game/game_gamesettings.hpp.sq" #include "../script/api/game/game_goal.hpp.sq" #include "../script/api/game/game_industry.hpp.sq" #include "../script/api/game/game_industrylist.hpp.sq" #include "../script/api/game/game_industrytype.hpp.sq" #include "../script/api/game/game_industrytypelist.hpp.sq" #include "../script/api/game/game_infrastructure.hpp.sq" #include "../script/api/game/game_list.hpp.sq" #include "../script/api/game/game_log.hpp.sq" #include "../script/api/game/game_map.hpp.sq" #include "../script/api/game/game_marine.hpp.sq" #include "../script/api/game/game_news.hpp.sq" #include "../script/api/game/game_order.hpp.sq" #include "../script/api/game/game_rail.hpp.sq" #include "../script/api/game/game_railtypelist.hpp.sq" #include "../script/api/game/game_road.hpp.sq" #include "../script/api/game/game_sign.hpp.sq" #include "../script/api/game/game_signlist.hpp.sq" #include "../script/api/game/game_station.hpp.sq" #include "../script/api/game/game_stationlist.hpp.sq" #include "../script/api/game/game_subsidy.hpp.sq" #include "../script/api/game/game_subsidylist.hpp.sq" #include "../script/api/game/game_testmode.hpp.sq" #include "../script/api/game/game_text.hpp.sq" #include "../script/api/game/game_tile.hpp.sq" #include "../script/api/game/game_tilelist.hpp.sq" #include "../script/api/game/game_town.hpp.sq" #include "../script/api/game/game_townlist.hpp.sq" #include "../script/api/game/game_tunnel.hpp.sq" #include "../script/api/game/game_vehicle.hpp.sq" #include "../script/api/game/game_vehiclelist.hpp.sq" #include "../script/api/game/game_viewport.hpp.sq" #include "../script/api/game/game_waypoint.hpp.sq" #include "../script/api/game/game_waypointlist.hpp.sq" #include "../script/api/game/game_window.hpp.sq" GameInstance::GameInstance() : ScriptInstance("GS") {} void GameInstance::Initialize(GameInfo *info) { this->versionAPI = info->GetAPIVersion(); /* Register the GameController */ SQGSController_Register(this->engine); ScriptInstance::Initialize(info->GetMainScript(), info->GetInstanceName(), OWNER_DEITY); } void GameInstance::RegisterAPI() { ScriptInstance::RegisterAPI(); /* Register all classes */ SQGSList_Register(this->engine); SQGSAccounting_Register(this->engine); SQGSAdmin_Register(this->engine); SQGSAirport_Register(this->engine); SQGSBase_Register(this->engine); SQGSBaseStation_Register(this->engine); SQGSBridge_Register(this->engine); SQGSBridgeList_Register(this->engine); SQGSBridgeList_Length_Register(this->engine); SQGSCargo_Register(this->engine); SQGSCargoList_Register(this->engine); SQGSCargoList_IndustryAccepting_Register(this->engine); SQGSCargoList_IndustryProducing_Register(this->engine); SQGSCargoList_StationAccepting_Register(this->engine); SQGSCargoMonitor_Register(this->engine); SQGSCompany_Register(this->engine); SQGSCompanyMode_Register(this->engine); SQGSDate_Register(this->engine); SQGSDepotList_Register(this->engine); SQGSEngine_Register(this->engine); SQGSEngineList_Register(this->engine); SQGSError_Register(this->engine); SQGSEvent_Register(this->engine); SQGSEventAdminPort_Register(this->engine); SQGSEventCompanyBankrupt_Register(this->engine); SQGSEventCompanyInTrouble_Register(this->engine); SQGSEventCompanyMerger_Register(this->engine); SQGSEventCompanyNew_Register(this->engine); SQGSEventCompanyTown_Register(this->engine); SQGSEventController_Register(this->engine); SQGSEventExclusiveTransportRights_Register(this->engine); SQGSEventGoalQuestionAnswer_Register(this->engine); SQGSEventIndustryClose_Register(this->engine); SQGSEventIndustryOpen_Register(this->engine); SQGSEventRoadReconstruction_Register(this->engine); SQGSEventStationFirstVehicle_Register(this->engine); SQGSEventSubsidyAwarded_Register(this->engine); SQGSEventSubsidyExpired_Register(this->engine); SQGSEventSubsidyOffer_Register(this->engine); SQGSEventSubsidyOfferExpired_Register(this->engine); SQGSEventTownFounded_Register(this->engine); SQGSEventVehicleCrashed_Register(this->engine); SQGSEventWindowWidgetClick_Register(this->engine); SQGSExecMode_Register(this->engine); SQGSGame_Register(this->engine); SQGSGameSettings_Register(this->engine); SQGSGoal_Register(this->engine); SQGSIndustry_Register(this->engine); SQGSIndustryList_Register(this->engine); SQGSIndustryList_CargoAccepting_Register(this->engine); SQGSIndustryList_CargoProducing_Register(this->engine); SQGSIndustryType_Register(this->engine); SQGSIndustryTypeList_Register(this->engine); SQGSInfrastructure_Register(this->engine); SQGSLog_Register(this->engine); SQGSMap_Register(this->engine); SQGSMarine_Register(this->engine); SQGSNews_Register(this->engine); SQGSOrder_Register(this->engine); SQGSRail_Register(this->engine); SQGSRailTypeList_Register(this->engine); SQGSRoad_Register(this->engine); SQGSSign_Register(this->engine); SQGSSignList_Register(this->engine); SQGSStation_Register(this->engine); SQGSStationList_Register(this->engine); SQGSStationList_Vehicle_Register(this->engine); SQGSSubsidy_Register(this->engine); SQGSSubsidyList_Register(this->engine); SQGSTestMode_Register(this->engine); SQGSText_Register(this->engine); SQGSTile_Register(this->engine); SQGSTileList_Register(this->engine); SQGSTileList_IndustryAccepting_Register(this->engine); SQGSTileList_IndustryProducing_Register(this->engine); SQGSTileList_StationType_Register(this->engine); SQGSTown_Register(this->engine); SQGSTownEffectList_Register(this->engine); SQGSTownList_Register(this->engine); SQGSTunnel_Register(this->engine); SQGSVehicle_Register(this->engine); SQGSVehicleList_Register(this->engine); SQGSVehicleList_Depot_Register(this->engine); SQGSVehicleList_SharedOrders_Register(this->engine); SQGSVehicleList_Station_Register(this->engine); SQGSViewport_Register(this->engine); SQGSWaypoint_Register(this->engine); SQGSWaypointList_Register(this->engine); SQGSWaypointList_Vehicle_Register(this->engine); SQGSWindow_Register(this->engine); RegisterGameTranslation(this->engine); if (!this->LoadCompatibilityScripts(this->versionAPI, GAME_DIR)) this->Died(); } int GameInstance::GetSetting(const char *name) { return GameConfig::GetConfig()->GetSetting(name); } ScriptInfo *GameInstance::FindLibrary(const char *library, int version) { return (ScriptInfo *)Game::FindLibrary(library, version); } void GameInstance::Died() { ScriptInstance::Died(); ShowAIDebugWindow(OWNER_DEITY); const GameInfo *info = Game::GetInfo(); if (info != NULL) { ShowErrorMessage(STR_ERROR_AI_PLEASE_REPORT_CRASH, INVALID_STRING_ID, WL_WARNING); if (info->GetURL() != NULL) { ScriptLog::Info("Please report the error to the following URL:"); ScriptLog::Info(info->GetURL()); } } } /** * DoCommand callback function for all commands executed by Game Scripts. * @param result The result of the command. * @param tile The tile on which the command was executed. * @param p1 p1 as given to DoCommandPInternal. * @param p2 p2 as given to DoCommandPInternal. */ void CcGame(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { Game::GetGameInstance()->DoCommandCallback(result, tile, p1, p2); Game::GetGameInstance()->Continue(); } CommandCallback *GameInstance::GetDoCommandCallback() { return &CcGame; } openttd-1.3.3/src/game/game_text.cpp0000644000000000000000000002415712246102554016064 0ustar rootroot/* $Id: game_text.cpp 25986 2013-11-13 21:49:31Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_text.cpp Implementation of handling translated strings. */ #include "../stdafx.h" #include "../strgen/strgen.h" #include "../debug.h" #include "../fileio_func.h" #include "../tar_type.h" #include "../script/squirrel_class.hpp" #include "../strings_func.h" #include "game_text.hpp" #include "game.hpp" #include "game_info.hpp" #include "table/strings.h" #include void CDECL strgen_warning(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); DEBUG(script, 0, "%s:%d: warning: %s", _file, _cur_line, buf); _warnings++; } void CDECL strgen_error(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); DEBUG(script, 0, "%s:%d: error: %s", _file, _cur_line, buf); _errors++; } void NORETURN CDECL strgen_fatal(const char *s, ...) { char buf[1024]; va_list va; va_start(va, s); vsnprintf(buf, lengthof(buf), s, va); va_end(va); DEBUG(script, 0, "%s:%d: FATAL: %s", _file, _cur_line, buf); throw std::exception(); } /** * Create a new container for language strings. * @param language The language name. * @param end If not NULL, terminate \a language at this position. */ LanguageStrings::LanguageStrings(const char *language, const char *end) { this->language = end == NULL ? strdup(language) : strndup(language, end - language); } /** Free everything. */ LanguageStrings::~LanguageStrings() { free(this->language); } /** * Read all the raw language strings from the given file. * @param file The file to read from. * @return The raw strings, or NULL upon error. */ LanguageStrings *ReadRawLanguageStrings(const char *file) { LanguageStrings *ret = NULL; try { size_t to_read; FILE *fh = FioFOpenFile(file, "rb", GAME_DIR, &to_read); if (fh == NULL) { return NULL; } const char *langname = strrchr(file, PATHSEPCHAR); if (langname == NULL) { langname = file; } else { langname++; } /* Check for invalid empty filename */ if (*langname == '.' || *langname == 0) return NULL; ret = new LanguageStrings(langname, strchr(langname, '.')); char buffer[2048]; while (to_read != 0 && fgets(buffer, sizeof(buffer), fh) != NULL) { size_t len = strlen(buffer); /* Remove trailing spaces/newlines from the string. */ size_t i = len; while (i > 0 && (buffer[i - 1] == '\r' || buffer[i - 1] == '\n' || buffer[i - 1] == ' ')) i--; buffer[i] = '\0'; *ret->lines.Append() = strndup(buffer, to_read); if (len > to_read) { to_read = 0; } else { to_read -= len; } } return ret; } catch (...) { delete ret; return NULL; } } /** A reader that simply reads using fopen. */ struct StringListReader : StringReader { const char * const *p; ///< The current location of the iteration. const char * const *end; ///< The end of the iteration. /** * Create the reader. * @param data The data to fill during reading. * @param file The file we are reading. * @param master Are we reading the master file? * @param translation Are we reading a translation? */ StringListReader(StringData &data, const LanguageStrings *strings, bool master, bool translation) : StringReader(data, strings->language, master, translation), p(strings->lines.Begin()), end(strings->lines.End()) { } /* virtual */ char *ReadLine(char *buffer, size_t size) { if (this->p == this->end) return NULL; strncpy(buffer, *this->p, size); this->p++; return buffer; } }; /** Class for writing an encoded language. */ struct TranslationWriter : LanguageWriter { StringList *strings; ///< The encoded strings. /** * Writer for the encoded data. * @param strings The string table to add the strings to. */ TranslationWriter(StringList *strings) : strings(strings) { } void WriteHeader(const LanguagePackHeader *header) { /* We don't use the header. */ } void Finalise() { /* Nothing to do. */ } void WriteLength(uint length) { /* We don't write the length. */ } void Write(const byte *buffer, size_t length) { char *dest = MallocT(length + 1); memcpy(dest, buffer, length); dest[length] = '\0'; *this->strings->Append() = dest; } }; /** Class for writing the string IDs. */ struct StringNameWriter : HeaderWriter { StringList *strings; ///< The string names. /** * Writer for the string names. * @param strings The string table to add the strings to. */ StringNameWriter(StringList *strings) : strings(strings) { } void WriteStringID(const char *name, int stringid) { if (stringid == (int)this->strings->Length()) *this->strings->Append() = strdup(name); } void Finalise(const StringData &data) { /* Nothing to do. */ } }; /** * Scanner to find language files in a GameScript directory. */ class LanguageScanner : protected FileScanner { private: GameStrings *gs; char *exclude; public: /** Initialise */ LanguageScanner(GameStrings *gs, const char *exclude) : gs(gs), exclude(strdup(exclude)) {} ~LanguageScanner() { free(exclude); } /** * Scan. */ void Scan(const char *directory) { this->FileScanner::Scan(".txt", directory, false); } /* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) { if (strcmp(filename, exclude) == 0) return true; *gs->raw_strings.Append() = ReadRawLanguageStrings(filename); return true; } }; /** * Load all translations that we know of. * @return Container with all (compiled) translations. */ GameStrings *LoadTranslations() { const GameInfo *info = Game::GetInfo(); char filename[512]; strecpy(filename, info->GetMainScript(), lastof(filename)); char *e = strrchr(filename, PATHSEPCHAR); if (e == NULL) return NULL; e++; // Make 'e' point after the PATHSEPCHAR strecpy(e, "lang" PATHSEP "english.txt", lastof(filename)); if (!FioCheckFileExists(filename, GAME_DIR)) return NULL; GameStrings *gs = new GameStrings(); try { *gs->raw_strings.Append() = ReadRawLanguageStrings(filename); /* Scan for other language files */ LanguageScanner scanner(gs, filename); strecpy(e, "lang" PATHSEP, lastof(filename)); size_t len = strlen(filename); const char *tar_filename = info->GetTarFile(); TarList::iterator iter; if (tar_filename != NULL && (iter = _tar_list[GAME_DIR].find(tar_filename)) != _tar_list[GAME_DIR].end()) { /* The main script is in a tar file, so find all files that * are in the same tar and add them to the langfile scanner. */ TarFileList::iterator tar; FOR_ALL_TARS(tar, GAME_DIR) { /* Not in the same tar. */ if (tar->second.tar_filename != iter->first) continue; /* Check the path and extension. */ if (tar->first.size() <= len || tar->first.compare(0, len, filename) != 0) continue; if (tar->first.compare(tar->first.size() - 4, 4, ".txt") != 0) continue; scanner.AddFile(tar->first.c_str(), 0, tar_filename); } } else { /* Scan filesystem */ scanner.Scan(filename); } gs->Compile(); return gs; } catch (...) { delete gs; return NULL; } } /** Compile the language. */ void GameStrings::Compile() { StringData data(1); StringListReader master_reader(data, this->raw_strings[0], true, false); master_reader.ParseFile(); if (_errors != 0) throw std::exception(); this->version = data.Version(); StringNameWriter id_writer(&this->string_names); id_writer.WriteHeader(data); for (LanguageStrings **p = this->raw_strings.Begin(); p != this->raw_strings.End(); p++) { data.FreeTranslation(); StringListReader translation_reader(data, *p, false, strcmp((*p)->language, "english") != 0); translation_reader.ParseFile(); if (_errors != 0) throw std::exception(); LanguageStrings *compiled = *this->compiled_strings.Append() = new LanguageStrings((*p)->language); TranslationWriter writer(&compiled->lines); writer.WriteLang(data); } } /** The currently loaded game strings. */ GameStrings *_current_data = NULL; /** * Get the string pointer of a particular game string. * @param id The ID of the game string. * @return The encoded string. */ const char *GetGameStringPtr(uint id) { if (id >= _current_data->cur_language->lines.Length()) return GetStringPtr(STR_UNDEFINED); return _current_data->cur_language->lines[id]; } /** * Register the current translation to the Squirrel engine. * @param engine The engine to update/ */ void RegisterGameTranslation(Squirrel *engine) { delete _current_data; _current_data = LoadTranslations(); if (_current_data == NULL) return; HSQUIRRELVM vm = engine->GetVM(); sq_pushroottable(vm); sq_pushstring(vm, _SC("GSText"), -1); if (SQ_FAILED(sq_get(vm, -2))) return; int idx = 0; for (const char * const *p = _current_data->string_names.Begin(); p != _current_data->string_names.End(); p++, idx++) { sq_pushstring(vm, OTTD2SQ(*p), -1); sq_pushinteger(vm, idx); sq_rawset(vm, -3); } sq_pop(vm, 2); ReconsiderGameScriptLanguage(); } /** * Reconsider the game script language, so we use the right one. */ void ReconsiderGameScriptLanguage() { if (_current_data == NULL) return; char temp[MAX_PATH]; strecpy(temp, _current_language->file, temp + sizeof(temp)); /* Remove the extension */ char *l = strrchr(temp, '.'); assert(l != NULL); *l = '\0'; /* Skip the path */ char *language = strrchr(temp, PATHSEPCHAR); assert(language != NULL); language++; for (LanguageStrings **p = _current_data->compiled_strings.Begin(); p != _current_data->compiled_strings.End(); p++) { if (strcmp((*p)->language, language) == 0) { _current_data->cur_language = *p; return; } } _current_data->cur_language = _current_data->compiled_strings[0]; } openttd-1.3.3/src/game/game_text.hpp0000644000000000000000000000370712246102554016067 0ustar rootroot/* $Id: game_text.hpp 25986 2013-11-13 21:49:31Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_text.hpp Base functions regarding game texts. */ #ifndef GAME_TEXT_HPP #define GAME_TEXT_HPP #include "../core/smallvec_type.hpp" /** The tab we place our strings in. */ static const uint GAME_TEXT_TAB = 18; const char *GetGameStringPtr(uint id); void RegisterGameTranslation(class Squirrel *engine); void ReconsiderGameScriptLanguage(); /** Container for the raw (unencoded) language strings of a language. */ struct LanguageStrings { const char *language; ///< Name of the language (base filename). StringList lines; ///< The lines of the file to pass into the parser/encoder. LanguageStrings(const char *language, const char *end = NULL); ~LanguageStrings(); }; /** Container for all the game strings. */ struct GameStrings { uint version; ///< The version of the language strings. LanguageStrings *cur_language; ///< The current (compiled) language. AutoDeleteSmallVector raw_strings; ///< The raw strings per language, first must be English/the master language!. AutoDeleteSmallVector compiled_strings; ///< The compiled strings per language, first must be English/the master language!. StringList string_names; ///< The names of the compiled strings. void Compile(); }; #endif /* GAME_TEXT_HPP */ openttd-1.3.3/src/game/game_info.hpp0000644000000000000000000000451312246102554016032 0ustar rootroot/* $Id: game_info.hpp 23737 2012-01-03 20:37:56Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_info.hpp GameInfo keeps track of all information of an Game, like Author, Description, ... */ #ifndef GAME_INFO_HPP #define GAME_INFO_HPP #include "../script/script_info.hpp" /** All static information from an Game like name, version, etc. */ class GameInfo : public ScriptInfo { public: GameInfo(); ~GameInfo(); /** * Register the functions of this class. */ static void RegisterAPI(Squirrel *engine); /** * Create an Game, using this GameInfo as start-template. */ static SQInteger Constructor(HSQUIRRELVM vm); /** * Check if we can start this Game. */ bool CanLoadFromVersion(int version) const; /** * Get the API version this Game is written for. */ const char *GetAPIVersion() const { return this->api_version; } /* virtual */ bool IsDeveloperOnly() const { return this->is_developer_only; } private: int min_loadable_version; ///< The Game can load savegame data if the version is equal or greater than this. bool is_developer_only; ///< Is the script selectable by non-developers? const char *api_version; ///< API version used by this Game. }; /** All static information from an Game library like name, version, etc. */ class GameLibrary : public ScriptInfo { public: GameLibrary() : ScriptInfo(), category(NULL) {}; ~GameLibrary(); /** * Register the functions of this class. */ static void RegisterAPI(Squirrel *engine); /** * Create an GSLibrary, using this GSInfo as start-template. */ static SQInteger Constructor(HSQUIRRELVM vm); /** * Get the category this library is in. */ const char *GetCategory() const { return this->category; } private: const char *category; ///< The category this library is in. }; #endif /* GAME_INFO_HPP */ openttd-1.3.3/src/game/game_core.cpp0000644000000000000000000001710712246102554016025 0ustar rootroot/* $Id: game_core.cpp 25599 2013-07-13 10:13:55Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file game_core.cpp Implementation of Game. */ #include "../stdafx.h" #include "../core/backup_type.hpp" #include "../company_base.h" #include "../company_func.h" #include "../network/network.h" #include "../window_func.h" #include "game.hpp" #include "game_scanner.hpp" #include "game_config.hpp" #include "game_instance.hpp" #include "game_info.hpp" /* static */ uint Game::frame_counter = 0; /* static */ GameInfo *Game::info = NULL; /* static */ GameInstance *Game::instance = NULL; /* static */ GameScannerInfo *Game::scanner_info = NULL; /* static */ GameScannerLibrary *Game::scanner_library = NULL; /* static */ void Game::GameLoop() { if (_networking && !_network_server) return; if (Game::instance == NULL) return; Game::frame_counter++; Backup cur_company(_current_company, FILE_LINE); cur_company.Change(OWNER_DEITY); Game::instance->GameLoop(); cur_company.Restore(); /* Occasionally collect garbage */ if ((Game::frame_counter & 255) == 0) { Game::instance->CollectGarbage(); } } /* static */ void Game::Initialize() { if (Game::instance != NULL) Game::Uninitialize(true); Game::frame_counter = 0; if (Game::scanner_info == NULL) { TarScanner::DoScan(TarScanner::GAME); Game::scanner_info = new GameScannerInfo(); Game::scanner_info->Initialize(); Game::scanner_library = new GameScannerLibrary(); Game::scanner_library->Initialize(); } } /* static */ void Game::StartNew() { if (Game::instance != NULL) return; /* Clients shouldn't start GameScripts */ if (_networking && !_network_server) return; GameConfig *config = GameConfig::GetConfig(GameConfig::SSS_FORCE_GAME); GameInfo *info = config->GetInfo(); if (info == NULL) return; config->AnchorUnchangeableSettings(); Backup cur_company(_current_company, FILE_LINE); cur_company.Change(OWNER_DEITY); Game::info = info; Game::instance = new GameInstance(); Game::instance->Initialize(info); cur_company.Restore(); InvalidateWindowData(WC_AI_DEBUG, 0, -1); } /* static */ void Game::Uninitialize(bool keepConfig) { Backup cur_company(_current_company, FILE_LINE); delete Game::instance; Game::instance = NULL; Game::info = NULL; cur_company.Restore(); if (keepConfig) { Rescan(); } else { delete Game::scanner_info; delete Game::scanner_library; Game::scanner_info = NULL; Game::scanner_library = NULL; if (_settings_game.game_config != NULL) { delete _settings_game.game_config; _settings_game.game_config = NULL; } if (_settings_newgame.game_config != NULL) { delete _settings_newgame.game_config; _settings_newgame.game_config = NULL; } } } /* static */ void Game::Pause() { if (Game::instance != NULL) Game::instance->Pause(); } /* static */ void Game::Unpause() { if (Game::instance != NULL) Game::instance->Unpause(); } /* static */ bool Game::IsPaused() { return Game::instance != NULL? Game::instance->IsPaused() : false; } /* static */ void Game::NewEvent(ScriptEvent *event) { /* AddRef() and Release() need to be called at least once, so do it here */ event->AddRef(); /* Clients should ignore events */ if (_networking && !_network_server) { event->Release(); return; } /* Check if Game instance is alive */ if (Game::instance == NULL) { event->Release(); return; } /* Queue the event */ Backup cur_company(_current_company, OWNER_DEITY, FILE_LINE); Game::instance->InsertEvent(event); cur_company.Restore(); event->Release(); } /* static */ void Game::ResetConfig() { /* Check for both newgame as current game if we can reload the GameInfo inside * the GameConfig. If not, remove the Game from the list. */ if (_settings_game.game_config != NULL && _settings_game.game_config->HasScript()) { if (!_settings_game.game_config->ResetInfo(true)) { DEBUG(script, 0, "After a reload, the GameScript by the name '%s' was no longer found, and removed from the list.", _settings_game.game_config->GetName()); _settings_game.game_config->Change(NULL); if (Game::instance != NULL) { delete Game::instance; Game::instance = NULL; Game::info = NULL; } } else if (Game::instance != NULL) { Game::info = _settings_game.game_config->GetInfo(); } } if (_settings_newgame.game_config != NULL && _settings_newgame.game_config->HasScript()) { if (!_settings_newgame.game_config->ResetInfo(false)) { DEBUG(script, 0, "After a reload, the GameScript by the name '%s' was no longer found, and removed from the list.", _settings_newgame.game_config->GetName()); _settings_newgame.game_config->Change(NULL); } } } /* static */ void Game::Rescan() { TarScanner::DoScan(TarScanner::GAME); Game::scanner_info->RescanDir(); Game::scanner_library->RescanDir(); ResetConfig(); InvalidateWindowData(WC_AI_LIST, 0, 1); SetWindowClassesDirty(WC_AI_DEBUG); InvalidateWindowClassesData(WC_AI_SETTINGS); } /* static */ void Game::Save() { if (Game::instance != NULL && (!_networking || _network_server)) { Backup cur_company(_current_company, OWNER_DEITY, FILE_LINE); Game::instance->Save(); cur_company.Restore(); } else { GameInstance::SaveEmpty(); } } /* static */ void Game::Load(int version) { if (Game::instance != NULL && (!_networking || _network_server)) { Backup cur_company(_current_company, OWNER_DEITY, FILE_LINE); Game::instance->Load(version); cur_company.Restore(); } else { /* Read, but ignore, the load data */ GameInstance::LoadEmpty(); } } /* static */ char *Game::GetConsoleList(char *p, const char *last, bool newest_only) { return Game::scanner_info->GetConsoleList(p, last, newest_only); } /* static */ char *Game::GetConsoleLibraryList(char *p, const char *last) { return Game::scanner_library->GetConsoleList(p, last, true); } /* static */ const ScriptInfoList *Game::GetInfoList() { return Game::scanner_info->GetInfoList(); } /* static */ const ScriptInfoList *Game::GetUniqueInfoList() { return Game::scanner_info->GetUniqueInfoList(); } /* static */ GameInfo *Game::FindInfo(const char *name, int version, bool force_exact_match) { return Game::scanner_info->FindInfo(name, version, force_exact_match); } /* static */ GameLibrary *Game::FindLibrary(const char *library, int version) { return Game::scanner_library->FindLibrary(library, version); } #if defined(ENABLE_NETWORK) /** * Check whether we have an Game (library) with the exact characteristics as ci. * @param ci the characteristics to search on (shortname and md5sum) * @param md5sum whether to check the MD5 checksum * @return true iff we have an Game (library) matching. */ /* static */ bool Game::HasGame(const ContentInfo *ci, bool md5sum) { return Game::scanner_info->HasScript(ci, md5sum); } /* static */ bool Game::HasGameLibrary(const ContentInfo *ci, bool md5sum) { return Game::scanner_library->HasScript(ci, md5sum); } #endif /* defined(ENABLE_NETWORK) */ /* static */ GameScannerInfo *Game::GetScannerInfo() { return Game::scanner_info; } /* static */ GameScannerLibrary *Game::GetScannerLibrary() { return Game::scanner_library; } openttd-1.3.3/src/goal.cpp0000644000000000000000000001244112246102611014103 0ustar rootroot/* $Id: goal.cpp 23950 2012-02-15 15:18:38Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file goal.cpp Handling of goals. */ #include "stdafx.h" #include "company_func.h" #include "industry.h" #include "town.h" #include "window_func.h" #include "goal_base.h" #include "core/pool_func.hpp" #include "game/game.hpp" #include "command_func.h" #include "company_base.h" #include "string_func.h" #include "gui.h" #include "network/network.h" GoalID _new_goal_id; GoalPool _goal_pool("Goal"); INSTANTIATE_POOL_METHODS(Goal) /** * Create a new goal. * @param tile unused. * @param flags type of operation * @param p1 various bitstuffed elements * - p1 = (bit 0 - 7) - GoalType of destination. * - p1 = (bit 8 - 15) - Company for which this goal is. * @param p2 GoalTypeID of destination. * @param text Text of the goal. * @return the cost of this operation or an error */ CommandCost CmdCreateGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (!Goal::CanAllocateItem()) return CMD_ERROR; GoalType type = (GoalType)GB(p1, 0, 8); CompanyID company = (CompanyID)GB(p1, 8, 8); if (_current_company != OWNER_DEITY) return CMD_ERROR; if (StrEmpty(text)) return CMD_ERROR; if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR; switch (type) { case GT_NONE: if (p2 != 0) return CMD_ERROR; break; case GT_TILE: if (!IsValidTile(p2)) return CMD_ERROR; break; case GT_INDUSTRY: if (!Industry::IsValidID(p2)) return CMD_ERROR; break; case GT_TOWN: if (!Town::IsValidID(p2)) return CMD_ERROR; break; case GT_COMPANY: if (!Company::IsValidID(p2)) return CMD_ERROR; break; default: return CMD_ERROR; } if (flags & DC_EXEC) { Goal *g = new Goal(); g->type = type; g->dst = p2; g->company = company; g->text = strdup(text); InvalidateWindowData(WC_GOALS_LIST, 0); _new_goal_id = g->index; } return CommandCost(); } /** * Remove a goal. * @param tile unused. * @param flags type of operation * @param p1 GoalID to remove. * @param p2 unused. * @param text unused. * @return the cost of this operation or an error */ CommandCost CmdRemoveGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (_current_company != OWNER_DEITY) return CMD_ERROR; if (!Goal::IsValidID(p1)) return CMD_ERROR; if (flags & DC_EXEC) { Goal *g = Goal::Get(p1); delete g; InvalidateWindowData(WC_GOALS_LIST, 0); } return CommandCost(); } /** * Ask a goal related question * @param tile unused. * @param flags type of operation * @param p1 various bitstuffed elements * - p1 = (bit 0 - 15) - Unique ID to use for this question. * - p1 = (bit 16 - 23) - Company for which this question is. * @param p2 Buttons of the question. * @param text Text of the question. * @return the cost of this operation or an error */ CommandCost CmdGoalQuestion(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { uint16 uniqueid = (GoalType)GB(p1, 0, 16); CompanyID company = (CompanyID)GB(p1, 16, 8); byte type = GB(p1, 24, 8); if (_current_company != OWNER_DEITY) return CMD_ERROR; if (StrEmpty(text)) return CMD_ERROR; if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR; if (CountBits(p2) < 1 || CountBits(p2) > 3) return CMD_ERROR; if (p2 >= (1 << GOAL_QUESTION_BUTTON_COUNT)) return CMD_ERROR; if (type >= GOAL_QUESTION_TYPE_COUNT) return CMD_ERROR; if (flags & DC_EXEC) { if ((company != INVALID_COMPANY && company == _local_company) || (company == INVALID_COMPANY && Company::IsValidID(_local_company))) ShowGoalQuestion(uniqueid, type, p2, text); } return CommandCost(); } /** * Reply to a goal question. * @param tile unused. * @param flags type of operation * @param p1 Unique ID to use for this question. * @param p2 Button the company pressed * @param text Text of the question. * @return the cost of this operation or an error */ CommandCost CmdGoalQuestionAnswer(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { if (p1 > UINT16_MAX) return CMD_ERROR; if (p2 >= GOAL_QUESTION_BUTTON_COUNT) return CMD_ERROR; if (_current_company == OWNER_DEITY) { /* It has been requested to close this specific question on all clients */ if (flags & DC_EXEC) DeleteWindowById(WC_GOAL_QUESTION, p1); return CommandCost(); } if (_networking && _local_company == _current_company) { /* Somebody in the same company answered the question. Close the window */ if (flags & DC_EXEC) DeleteWindowById(WC_GOAL_QUESTION, p1); if (!_network_server) return CommandCost(); } if (flags & DC_EXEC) { Game::NewEvent(new ScriptEventGoalQuestionAnswer(p1, (ScriptCompany::CompanyID)(byte)_current_company, (ScriptGoal::QuestionButton)(1 << p2))); } return CommandCost(); } openttd-1.3.3/src/transport_type.h0000644000000000000000000000345212246102610015724 0ustar rootroot/* $Id: transport_type.h 22405 2011-05-01 19:14:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file transport_type.h Base types related to transport. */ #ifndef TRANSPORT_TYPE_H #define TRANSPORT_TYPE_H #include "core/enum_type.hpp" /** Type for the company global vehicle unit number. */ typedef uint16 UnitID; /** Available types of transport */ enum TransportType { /* These constants are for now linked to the representation of bridges * and tunnels, so they can be used by GetTileTrackStatus_TunnelBridge. * In an ideal world, these constants would be used everywhere when * accessing tunnels and bridges. For now, you should just not change * the values for road and rail. */ TRANSPORT_BEGIN = 0, ///< Begin of the iterator. TRANSPORT_RAIL = TRANSPORT_BEGIN, ///< Transport by train TRANSPORT_ROAD, ///< Transport by road vehicle TRANSPORT_WATER, ///< Transport over water TRANSPORT_AIR, ///< Transport through air TRANSPORT_END, ///< End of iterations. INVALID_TRANSPORT = 0xff, ///< Sentinel for invalid transport types. }; /** Helper information for extract tool. */ template <> struct EnumPropsT : MakeEnumPropsT {}; #endif /* TRANSPORT_TYPE_H */ openttd-1.3.3/src/track_func.h0000644000000000000000000005073212246102611014752 0ustar rootroot/* $Id: track_func.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file track_func.h Different conversion functions from one kind of track to another. */ #ifndef TRACK_FUNC_H #define TRACK_FUNC_H #include "core/bitmath_func.hpp" #include "track_type.h" #include "slope_func.h" /** * Iterate through each set Track in a TrackBits value. * For more informations see FOR_EACH_SET_BIT_EX. * * @param var Loop index variable that stores fallowing set track. Must be of type Track. * @param track_bits The value to iterate through (any expression). * * @see FOR_EACH_SET_BIT_EX */ #define FOR_EACH_SET_TRACK(var, track_bits) FOR_EACH_SET_BIT_EX(Track, var, TrackBits, track_bits) /** * Convert an Axis to the corresponding Track * AXIS_X -> TRACK_X * AXIS_Y -> TRACK_Y * Uses the fact that they share the same internal encoding * * @param a the axis to convert * @return the track corresponding to the axis */ static inline Track AxisToTrack(Axis a) { return (Track)a; } /** * Maps a Track to the corresponding TrackBits value * @param track the track to convert * @return the converted TrackBits value of the track */ static inline TrackBits TrackToTrackBits(Track track) { return (TrackBits)(1 << track); } /** * Maps an Axis to the corresponding TrackBits value * @param a the axis to convert * @return the converted TrackBits value of the axis */ static inline TrackBits AxisToTrackBits(Axis a) { return TrackToTrackBits(AxisToTrack(a)); } /** * Returns a single horizontal/vertical trackbit that is in a specific tile corner. * * @param corner The corner of a tile. * @return The TrackBits of the track in the corner. */ static inline TrackBits CornerToTrackBits(Corner corner) { extern const TrackBits _corner_to_trackbits[]; assert(IsValidCorner(corner)); return _corner_to_trackbits[corner]; } /** * Maps a Trackdir to the corresponding TrackdirBits value * @param trackdir the track direction to convert * @return the converted TrackdirBits value */ static inline TrackdirBits TrackdirToTrackdirBits(Trackdir trackdir) { return (TrackdirBits)(1 << trackdir); } /** * Removes first Track from TrackBits and returns it * * This function searchs for the first bit in the TrackBits, * remove this bit from the parameter and returns the found * bit as Track value. It returns INVALID_TRACK if the * parameter was TRACK_BIT_NONE or INVALID_TRACK_BIT. This * is basically used in while-loops to get up to 6 possible * tracks on a tile until the parameter becomes TRACK_BIT_NONE. * * @param tracks The value with the TrackBits * @return The first Track from the TrackBits value * @see FindFirstTrack */ static inline Track RemoveFirstTrack(TrackBits *tracks) { if (*tracks != TRACK_BIT_NONE && *tracks != INVALID_TRACK_BIT) { Track first = (Track)FIND_FIRST_BIT(*tracks); ClrBit(*tracks, first); return first; } return INVALID_TRACK; } /** * Removes first Trackdir from TrackdirBits and returns it * * This function searches for the first bit in the TrackdirBits parameter, * remove this bit from the parameter and returns the fnound bit as * Trackdir value. It returns INVALID_TRACKDIR if the trackdirs is * TRACKDIR_BIT_NONE or INVALID_TRACKDIR_BIT. This is basically used in a * while-loop to get all track-directions step by step until the value * reaches TRACKDIR_BIT_NONE. * * @param trackdirs The value with the TrackdirBits * @return The first Trackdir from the TrackdirBits value * @see FindFirstTrackdir */ static inline Trackdir RemoveFirstTrackdir(TrackdirBits *trackdirs) { if (*trackdirs != TRACKDIR_BIT_NONE && *trackdirs != INVALID_TRACKDIR_BIT) { Trackdir first = (Trackdir)FindFirstBit2x64(*trackdirs); ClrBit(*trackdirs, first); return first; } return INVALID_TRACKDIR; } /** * Returns first Track from TrackBits or INVALID_TRACK * * This function returns the first Track found in the TrackBits value as Track-value. * It returns INVALID_TRACK if the parameter is TRACK_BIT_NONE or INVALID_TRACK_BIT. * * @param tracks The TrackBits value * @return The first Track found or INVALID_TRACK * @see RemoveFirstTrack */ static inline Track FindFirstTrack(TrackBits tracks) { return (tracks != TRACK_BIT_NONE && tracks != INVALID_TRACK_BIT) ? (Track)FIND_FIRST_BIT(tracks) : INVALID_TRACK; } /** * Converts TrackBits to Track. * * This function converts a TrackBits value to a Track value. As it * is not possible to convert two or more tracks to one track the * parameter must contain only one track or be the INVALID_TRACK_BIT value. * * @param tracks The TrackBits value to convert * @return The Track from the value or INVALID_TRACK * @pre tracks must contains only one Track or be INVALID_TRACK_BIT */ static inline Track TrackBitsToTrack(TrackBits tracks) { assert(tracks == INVALID_TRACK_BIT || (tracks != TRACK_BIT_NONE && KillFirstBit(tracks & TRACK_BIT_MASK) == TRACK_BIT_NONE)); return tracks != INVALID_TRACK_BIT ? (Track)FIND_FIRST_BIT(tracks & TRACK_BIT_MASK) : INVALID_TRACK; } /** * Returns first Trackdir from TrackdirBits or INVALID_TRACKDIR * * This function returns the first Trackdir in the given TrackdirBits value or * INVALID_TRACKDIR if the value is TRACKDIR_BIT_NONE. The TrackdirBits must * not be INVALID_TRACKDIR_BIT. * * @param trackdirs The TrackdirBits value * @return The first Trackdir from the TrackdirBits or INVALID_TRACKDIR on TRACKDIR_BIT_NONE. * @pre trackdirs must not be INVALID_TRACKDIR_BIT * @see RemoveFirstTrackdir */ static inline Trackdir FindFirstTrackdir(TrackdirBits trackdirs) { assert((trackdirs & ~TRACKDIR_BIT_MASK) == TRACKDIR_BIT_NONE); return (trackdirs != TRACKDIR_BIT_NONE) ? (Trackdir)FindFirstBit2x64(trackdirs) : INVALID_TRACKDIR; } /** * Checks if a Track is valid. * * @param track The value to check * @return true if the given value is a valid track. * @note Use this in an assert() */ static inline bool IsValidTrack(Track track) { return track < TRACK_END; } /** * Checks if a Trackdir is valid. * * @param trackdir The value to check * @return true if the given value is a valid Trackdir * @note Use this in an assert() */ static inline bool IsValidTrackdir(Trackdir trackdir) { return (TrackdirToTrackdirBits(trackdir) & TRACKDIR_BIT_MASK) != 0; } /* * Functions describing logical relations between Tracks, TrackBits, Trackdirs * TrackdirBits, Direction and DiagDirections. */ /** * Find the opposite track to a given track. * * TRACK_LOWER -> TRACK_UPPER and vice versa, likewise for left/right. * TRACK_X is mapped to TRACK_Y and reversed. * * @param t the track to convert * @return the opposite track */ static inline Track TrackToOppositeTrack(Track t) { assert(t != INVALID_TRACK); return (Track)(t ^ 1); } /** * Maps a trackdir to the reverse trackdir. * * Returns the reverse trackdir of a Trackdir value. The reverse trackdir * is the same track with the other direction on it. * * @param trackdir The Trackdir value * @return The reverse trackdir * @pre trackdir must not be INVALID_TRACKDIR */ static inline Trackdir ReverseTrackdir(Trackdir trackdir) { assert(trackdir != INVALID_TRACKDIR); return (Trackdir)(trackdir ^ 8); } /** * Returns the Track that a given Trackdir represents * * This function filters the Track which is used in the Trackdir value and * returns it as a Track value. * * @param trackdir The trackdir value * @return The Track which is used in the value */ static inline Track TrackdirToTrack(Trackdir trackdir) { return (Track)(trackdir & 0x7); } /** * Returns a Trackdir for the given Track * * Since every Track corresponds to two Trackdirs, we choose the * one which points between NE and S. Note that the actual * implementation is quite futile, but this might change * in the future. * * @param track The given Track * @return The Trackdir from the given Track */ static inline Trackdir TrackToTrackdir(Track track) { return (Trackdir)track; } /** * Returns a TrackdirBit mask from a given Track * * The TrackdirBit mask contains the two TrackdirBits that * correspond with the given Track (one for each direction). * * @param track The track to get the TrackdirBits from * @return The TrackdirBits which the selected tracks */ static inline TrackdirBits TrackToTrackdirBits(Track track) { Trackdir td = TrackToTrackdir(track); return (TrackdirBits)(TrackdirToTrackdirBits(td) | TrackdirToTrackdirBits(ReverseTrackdir(td))); } /** * Discards all directional information from a TrackdirBits value * * Any Track which is present in either direction will be present in the result. * * @param bits The TrackdirBits to get the TrackBits from * @return The TrackBits */ static inline TrackBits TrackdirBitsToTrackBits(TrackdirBits bits) { return (TrackBits)((bits | (bits >> 8)) & TRACK_BIT_MASK); } /** * Converts TrackBits to TrackdirBits while allowing both directions. * * @param bits The TrackBits * @return The TrackdirBits containing of bits in both directions. */ static inline TrackdirBits TrackBitsToTrackdirBits(TrackBits bits) { return (TrackdirBits)(bits * 0x101); } /** * Returns the present-trackdir-information of a TrackStatus. * * @param ts The TrackStatus returned by GetTileTrackStatus() * @return the present trackdirs */ static inline TrackdirBits TrackStatusToTrackdirBits(TrackStatus ts) { return (TrackdirBits)(ts & TRACKDIR_BIT_MASK); } /** * Returns the present-track-information of a TrackStatus. * * @param ts The TrackStatus returned by GetTileTrackStatus() * @return the present tracks */ static inline TrackBits TrackStatusToTrackBits(TrackStatus ts) { return TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(ts)); } /** * Returns the red-signal-information of a TrackStatus. * * Note: The result may contain red signals for non-present tracks. * * @param ts The TrackStatus returned by GetTileTrackStatus() * @return the The trackdirs that are blocked by red-signals */ static inline TrackdirBits TrackStatusToRedSignals(TrackStatus ts) { return (TrackdirBits)((ts >> 16) & TRACKDIR_BIT_MASK); } /** * Builds a TrackStatus * * @param trackdirbits present trackdirs * @param red_signals red signals * @return the TrackStatus representing the given information */ static inline TrackStatus CombineTrackStatus(TrackdirBits trackdirbits, TrackdirBits red_signals) { return (TrackStatus)(trackdirbits | (red_signals << 16)); } /** * Maps a trackdir to the trackdir that you will end up on if you go straight * ahead. * * This will be the same trackdir for diagonal trackdirs, but a * different (alternating) one for straight trackdirs * * @param trackdir The given trackdir * @return The next Trackdir value of the next tile. */ static inline Trackdir NextTrackdir(Trackdir trackdir) { extern const Trackdir _next_trackdir[TRACKDIR_END]; return _next_trackdir[trackdir]; } /** * Maps a track to all tracks that make 90 deg turns with it. * * For the diagonal directions these are the complement of the * direction, for the straight directions these are the * two vertical or horizontal tracks, depend on the given direction * * @param track The given track * @return The TrackBits with the tracks marked which cross the given track by 90 deg. */ static inline TrackBits TrackCrossesTracks(Track track) { extern const TrackBits _track_crosses_tracks[TRACK_END]; return _track_crosses_tracks[track]; } /** * Maps a trackdir to the (4-way) direction the tile is exited when following * that trackdir. * * For the diagonal directions these are the same directions. For * the straight directions these are the directions from the imagined * base-tile to the bordering tile which will be joined if the given * straight direction is leaved from the base-tile. * * @param trackdir The given track direction * @return The direction which points to the resulting tile if following the Trackdir */ static inline DiagDirection TrackdirToExitdir(Trackdir trackdir) { extern const DiagDirection _trackdir_to_exitdir[TRACKDIR_END]; return _trackdir_to_exitdir[trackdir]; } /** * Maps a track and an (4-way) dir to the trackdir that represents the track * with the exit in the given direction. * * For the diagonal tracks the resulting track direction are clear for a given * DiagDirection. It either matches the direction or it returns INVALID_TRACKDIR, * as a TRACK_X cannot be applied with DIAG_SE. * For the straight tracks the resulting track direction will be the * direction which the DiagDirection is pointing. But this will be INVALID_TRACKDIR * if the DiagDirection is pointing 'away' the track. * * @param track The track to apply an direction on * @param diagdir The DiagDirection to apply on * @return The resulting track direction or INVALID_TRACKDIR if not possible. */ static inline Trackdir TrackExitdirToTrackdir(Track track, DiagDirection diagdir) { extern const Trackdir _track_exitdir_to_trackdir[TRACK_END][DIAGDIR_END]; return _track_exitdir_to_trackdir[track][diagdir]; } /** * Maps a track and an (4-way) dir to the trackdir that represents the track * with the entry in the given direction. * * For the diagonal tracks the return value is clear, its either the matching * track direction or INVALID_TRACKDIR. * For the straight tracks this returns the track direction which results if * you follow the DiagDirection and then turn by 45 deg left or right on the * next tile. The new direction on the new track will be the returning Trackdir * value. If the parameters makes no sense like the track TRACK_UPPER and the * direction DIAGDIR_NE (target track cannot be reached) this function returns * INVALID_TRACKDIR. * * @param track The target track * @param diagdir The direction to "come from" * @return the resulting Trackdir or INVALID_TRACKDIR if not possible. */ static inline Trackdir TrackEnterdirToTrackdir(Track track, DiagDirection diagdir) { extern const Trackdir _track_enterdir_to_trackdir[TRACK_END][DIAGDIR_END]; return _track_enterdir_to_trackdir[track][diagdir]; } /** * Maps a track and a full (8-way) direction to the trackdir that represents * the track running in the given direction. */ static inline Trackdir TrackDirectionToTrackdir(Track track, Direction dir) { extern const Trackdir _track_direction_to_trackdir[TRACK_END][DIR_END]; return _track_direction_to_trackdir[track][dir]; } /** * Maps a (4-way) direction to the diagonal track incidating with that diagdir * * @param diagdir The direction * @return The resulting Track */ static inline Track DiagDirToDiagTrack(DiagDirection diagdir) { return (Track)(diagdir & 1); } /** * Maps a (4-way) direction to the diagonal track bits incidating with that diagdir * * @param diagdir The direction * @return The resulting TrackBits */ static inline TrackBits DiagDirToDiagTrackBits(DiagDirection diagdir) { return TrackToTrackBits(DiagDirToDiagTrack(diagdir)); } /** * Maps a (4-way) direction to the diagonal trackdir that runs in that * direction. * * @param diagdir The direction * @return The resulting Trackdir direction */ static inline Trackdir DiagDirToDiagTrackdir(DiagDirection diagdir) { extern const Trackdir _dir_to_diag_trackdir[DIAGDIR_END]; return _dir_to_diag_trackdir[diagdir]; } /** * Returns all trackdirs that can be reached when entering a tile from a given * (diagonal) direction. * * This will obviously include 90 degree turns, since no information is available * about the exact angle of entering * * @param diagdir The joining direction * @return The TrackdirBits which can be used from the given direction * @see DiagdirReachesTracks */ static inline TrackdirBits DiagdirReachesTrackdirs(DiagDirection diagdir) { extern const TrackdirBits _exitdir_reaches_trackdirs[DIAGDIR_END]; return _exitdir_reaches_trackdirs[diagdir]; } /** * Returns all tracks that can be reached when entering a tile from a given * (diagonal) direction. * * This will obviously include 90 degree turns, since no * information is available about the exact angle of entering * * @param diagdir The joining direction * @return The tracks which can be used * @see DiagdirReachesTrackdirs */ static inline TrackBits DiagdirReachesTracks(DiagDirection diagdir) { return TrackdirBitsToTrackBits(DiagdirReachesTrackdirs(diagdir)); } /** * Maps a trackdir to the trackdirs that can be reached from it (ie, when * entering the next tile. * * This will include 90 degree turns! * * @param trackdir The track direction which will be leaved * @return The track directions which can be used from this direction (in the next tile) */ static inline TrackdirBits TrackdirReachesTrackdirs(Trackdir trackdir) { extern const TrackdirBits _exitdir_reaches_trackdirs[DIAGDIR_END]; return _exitdir_reaches_trackdirs[TrackdirToExitdir(trackdir)]; } /* Note that there is no direct table for this function (there used to be), * but it uses two simpler tables to achieve the result */ /** * Maps a trackdir to all trackdirs that make 90 deg turns with it. * * For the diagonal tracks this returns the track direction bits * of the other axis in both directions, which cannot be joined by * the given track direction. * For the straight tracks this returns all possible 90 deg turns * either on the current tile (which no train can joined) or on the * bordering tiles. * * @param trackdir The track direction * @return The TrackdirBits which are (more or less) 90 deg turns. */ static inline TrackdirBits TrackdirCrossesTrackdirs(Trackdir trackdir) { extern const TrackdirBits _track_crosses_trackdirs[TRACKDIR_END]; return _track_crosses_trackdirs[TrackdirToTrack(trackdir)]; } /** * Checks if a given Track is diagonal * * @param track The given track to check * @return true if diagonal, else false */ static inline bool IsDiagonalTrack(Track track) { return (track == TRACK_X) || (track == TRACK_Y); } /** * Checks if a given Trackdir is diagonal. * * @param trackdir The given trackdir * @return true if the trackdir use a diagonal track */ static inline bool IsDiagonalTrackdir(Trackdir trackdir) { return IsDiagonalTrack(TrackdirToTrack(trackdir)); } /** * Checks if the given tracks overlap, ie form a crossing. Basically this * means when there is more than one track on the tile, exept when there are * two parallel tracks. * @param bits The tracks present. * @return Whether the tracks present overlap in any way. */ static inline bool TracksOverlap(TrackBits bits) { /* With no, or only one track, there is no overlap */ if (bits == TRACK_BIT_NONE || KillFirstBit(bits) == TRACK_BIT_NONE) return false; /* We know that there are at least two tracks present. When there are more * than 2 tracks, they will surely overlap. When there are two, they will * always overlap unless they are lower & upper or right & left. */ return bits != TRACK_BIT_HORZ && bits != TRACK_BIT_VERT; } /** * Check if a given track is contained within or overlaps some other tracks. * * @param tracks Tracks to be tested against * @param track The track to test * @return true if the track is already in the tracks or overlaps the tracks. */ static inline bool TrackOverlapsTracks(TrackBits tracks, Track track) { if (HasBit(tracks, track)) return true; return TracksOverlap(tracks | TrackToTrackBits(track)); } /** * Checks whether the trackdir means that we are reversing. * @param dir the trackdir to check * @return true if it is a reversing road trackdir */ static inline bool IsReversingRoadTrackdir(Trackdir dir) { return (dir & 0x07) >= 6; } /** * Checks whether the given trackdir is a straight road * @param dir the trackdir to check * @return true if it is a straight road trackdir */ static inline bool IsStraightRoadTrackdir(Trackdir dir) { return (dir & 0x06) == 0; } /** * Checks whether a trackdir on a specific slope is going uphill. * * Valid for rail and road tracks. * Valid for tile-slopes (under foundation) and foundation-slopes (on foundation). * * @param slope The slope of the tile. * @param dir The trackdir of interest. * @return true iff the track goes upwards. */ static inline bool IsUphillTrackdir(Slope slope, Trackdir dir) { extern const TrackdirBits _uphill_trackdirs[]; return HasBit(_uphill_trackdirs[RemoveHalftileSlope(slope)], dir); } #endif /* TRACK_FUNC_H */ openttd-1.3.3/src/cheat_func.h0000644000000000000000000000155012246102610014723 0ustar rootroot/* $Id: cheat_func.h 21844 2011-01-18 22:17:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cheat_func.h Functions related to cheating. */ #ifndef CHEAT_FUNC_H #define CHEAT_FUNC_H #include "cheat_type.h" extern Cheats _cheats; void ShowCheatWindow(); bool CheatHasBeenUsed(); #endif /* CHEAT_FUNC_H */ openttd-1.3.3/src/sdl.h0000644000000000000000000000554712246102611013421 0ustar rootroot/* $Id: sdl.h 24993 2013-02-14 11:06:12Z matthijs $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sdl.h SDL support. */ #ifndef SDL_H #define SDL_H const char *SdlOpen(uint32 x); void SdlClose(uint32 x); #ifdef WIN32 #define DYNAMICALLY_LOADED_SDL #endif #ifdef DYNAMICALLY_LOADED_SDL #include struct SDLProcs { int (SDLCALL *SDL_Init)(Uint32); int (SDLCALL *SDL_InitSubSystem)(Uint32); char *(SDLCALL *SDL_GetError)(); void (SDLCALL *SDL_QuitSubSystem)(Uint32); void (SDLCALL *SDL_UpdateRect)(SDL_Surface *, Sint32, Sint32, Uint32, Uint32); void (SDLCALL *SDL_UpdateRects)(SDL_Surface *, int, SDL_Rect *); int (SDLCALL *SDL_SetColors)(SDL_Surface *, SDL_Color *, int, int); void (SDLCALL *SDL_WM_SetCaption)(const char *, const char *); int (SDLCALL *SDL_ShowCursor)(int); void (SDLCALL *SDL_FreeSurface)(SDL_Surface *); int (SDLCALL *SDL_PollEvent)(SDL_Event *); void (SDLCALL *SDL_WarpMouse)(Uint16, Uint16); uint32 (SDLCALL *SDL_GetTicks)(); int (SDLCALL *SDL_OpenAudio)(SDL_AudioSpec *, SDL_AudioSpec*); void (SDLCALL *SDL_PauseAudio)(int); void (SDLCALL *SDL_CloseAudio)(); int (SDLCALL *SDL_LockSurface)(SDL_Surface*); void (SDLCALL *SDL_UnlockSurface)(SDL_Surface*); SDLMod (SDLCALL *SDL_GetModState)(); void (SDLCALL *SDL_Delay)(Uint32); void (SDLCALL *SDL_Quit)(); SDL_Surface *(SDLCALL *SDL_SetVideoMode)(int, int, int, Uint32); int (SDLCALL *SDL_EnableKeyRepeat)(int, int); void (SDLCALL *SDL_EnableUNICODE)(int); void (SDLCALL *SDL_VideoDriverName)(char *, int); SDL_Rect **(SDLCALL *SDL_ListModes)(void *, int); Uint8 *(SDLCALL *SDL_GetKeyState)(int *); SDL_Surface *(SDLCALL *SDL_LoadBMP_RW)(SDL_RWops *, int); SDL_RWops *(SDLCALL *SDL_RWFromFile)(const char *, const char *); int (SDLCALL *SDL_SetColorKey)(SDL_Surface *, Uint32, Uint32); void (SDLCALL *SDL_WM_SetIcon)(SDL_Surface *, Uint8 *); Uint32 (SDLCALL *SDL_MapRGB)(SDL_PixelFormat *, Uint8, Uint8, Uint8); int (SDLCALL *SDL_VideoModeOK)(int, int, int, Uint32); SDL_version *(SDLCALL *SDL_Linked_Version)(); int (SDLCALL *SDL_BlitSurface)(SDL_Surface *, SDL_Rect *, SDL_Surface *, SDL_Rect *); SDL_Surface *(SDLCALL *SDL_CreateRGBSurface)(Uint32, int, int, int, Uint32, Uint32, Uint32, Uint32); }; extern SDLProcs sdl_proc; #define SDL_CALL sdl_proc. #else #define SDL_CALL #endif #endif /* SDL_H */ openttd-1.3.3/src/timetable_gui.cpp0000644000000000000000000006565012246102611016005 0ustar rootroot/* $Id: timetable_gui.cpp 25340 2013-06-09 09:38:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file timetable_gui.cpp GUI for time tabling. */ #include "stdafx.h" #include "command_func.h" #include "gui.h" #include "window_gui.h" #include "window_func.h" #include "textbuf_gui.h" #include "strings_func.h" #include "vehicle_base.h" #include "string_func.h" #include "gfx_func.h" #include "company_func.h" #include "date_func.h" #include "date_gui.h" #include "vehicle_gui.h" #include "settings_type.h" #include "widgets/timetable_widget.h" #include "table/sprites.h" #include "table/strings.h" /** Container for the arrival/departure dates of a vehicle */ struct TimetableArrivalDeparture { Ticks arrival; ///< The arrival time Ticks departure; ///< The departure time }; /** * Set the timetable parameters in the format as described by the setting. * @param param1 the first DParam to fill * @param param2 the second DParam to fill * @param ticks the number of ticks to 'draw' */ void SetTimetableParams(int param1, int param2, Ticks ticks) { if (_settings_client.gui.timetable_in_ticks) { SetDParam(param1, STR_TIMETABLE_TICKS); SetDParam(param2, ticks); } else { SetDParam(param1, STR_TIMETABLE_DAYS); SetDParam(param2, ticks / DAY_TICKS); } } /** * Sets the arrival or departure string and parameters. * @param param1 the first DParam to fill * @param param2 the second DParam to fill * @param ticks the number of ticks to 'draw' */ static void SetArrivalDepartParams(int param1, int param2, Ticks ticks) { SetDParam(param1, STR_JUST_DATE_TINY); SetDParam(param2, _date + (ticks / DAY_TICKS)); } /** * Check whether it is possible to determine how long the order takes. * @param order the order to check. * @param travelling whether we are interested in the travel or the wait part. * @return true if the travel/wait time can be used. */ static bool CanDetermineTimeTaken(const Order *order, bool travelling) { /* Current order is conditional */ if (order->IsType(OT_CONDITIONAL) || order->IsType(OT_IMPLICIT)) return false; /* No travel time and we have not already finished travelling */ if (travelling && order->travel_time == 0) return false; /* No wait time but we are loading at this timetabled station */ if (!travelling && order->wait_time == 0 && order->IsType(OT_GOTO_STATION) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) return false; return true; } /** * Fill the table with arrivals and departures * @param v Vehicle which must have at least 2 orders. * @param start order index to start at * @param travelling Are we still in the travelling part of the start order * @param table Fill in arrival and departures including intermediate orders * @param offset Add this value to result and all arrivals and departures */ static void FillTimetableArrivalDepartureTable(const Vehicle *v, VehicleOrderID start, bool travelling, TimetableArrivalDeparture *table, Ticks offset) { assert(table != NULL); assert(v->GetNumOrders() >= 2); assert(start < v->GetNumOrders()); Ticks sum = offset; VehicleOrderID i = start; const Order *order = v->GetOrder(i); /* Pre-initialize with unknown time */ for (int i = 0; i < v->GetNumOrders(); ++i) { table[i].arrival = table[i].departure = INVALID_TICKS; } /* Cyclically loop over all orders until we reach the current one again. * As we may start at the current order, do a post-checking loop */ do { /* Automatic orders don't influence the overall timetable; * they just add some untimetabled entries, but the time till * the next non-implicit order can still be known. */ if (!order->IsType(OT_IMPLICIT)) { if (travelling || i != start) { if (!CanDetermineTimeTaken(order, true)) return; sum += order->travel_time; table[i].arrival = sum; } if (!CanDetermineTimeTaken(order, false)) return; sum += order->wait_time; table[i].departure = sum; } ++i; order = order->next; if (i >= v->GetNumOrders()) { i = 0; assert(order == NULL); order = v->orders.list->GetFirstOrder(); } } while (i != start); /* When loading at a scheduled station we still have to treat the * travelling part of the first order. */ if (!travelling) { if (!CanDetermineTimeTaken(order, true)) return; sum += order->travel_time; table[i].arrival = sum; } } /** * Callback for when a time has been chosen to start the time table * @param window the window related to the setting of the date * @param date the actually chosen date */ static void ChangeTimetableStartCallback(const Window *w, Date date) { DoCommandP(0, w->window_number, date, CMD_SET_TIMETABLE_START | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); } struct TimetableWindow : Window { int sel_index; const Vehicle *vehicle; ///< Vehicle monitored by the window. bool show_expected; ///< Whether we show expected arrival or scheduled uint deparr_time_width; ///< The width of the departure/arrival time uint deparr_abbr_width; ///< The width of the departure/arrival abbreviation Scrollbar *vscroll; bool query_is_speed_query; ///< The currently open query window is a speed query and not a time query. TimetableWindow(const WindowDesc *desc, WindowNumber window_number) : Window(), sel_index(-1), vehicle(Vehicle::Get(window_number)), show_expected(true) { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_VT_SCROLLBAR); this->UpdateSelectionStates(); this->FinishInitNested(desc, window_number); this->owner = this->vehicle->owner; } /** * Build the arrival-departure list for a given vehicle * @param v the vehicle to make the list for * @param table the table to fill * @return if next arrival will be early */ static bool BuildArrivalDepartureList(const Vehicle *v, TimetableArrivalDeparture *table) { assert(HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)); bool travelling = (!v->current_order.IsType(OT_LOADING) || v->current_order.GetNonStopType() == ONSF_STOP_EVERYWHERE); Ticks start_time = _date_fract - v->current_order_time; FillTimetableArrivalDepartureTable(v, v->cur_real_order_index % v->GetNumOrders(), travelling, table, start_time); return (travelling && v->lateness_counter < 0); } virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) { switch (widget) { case WID_VT_ARRIVAL_DEPARTURE_PANEL: SetDParamMaxValue(0, MAX_YEAR * DAYS_IN_YEAR, 0, FS_SMALL); this->deparr_time_width = GetStringBoundingBox(STR_JUST_DATE_TINY).width; this->deparr_abbr_width = max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL_ABBREVIATION).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE_ABBREVIATION).width); size->width = WD_FRAMERECT_LEFT + this->deparr_abbr_width + 10 + this->deparr_time_width + WD_FRAMERECT_RIGHT; /* FALL THROUGH */ case WID_VT_ARRIVAL_DEPARTURE_SELECTION: case WID_VT_TIMETABLE_PANEL: resize->height = FONT_HEIGHT_NORMAL; size->height = WD_FRAMERECT_TOP + 8 * resize->height + WD_FRAMERECT_BOTTOM; break; case WID_VT_SUMMARY_PANEL: size->height = WD_FRAMERECT_TOP + 2 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM; break; } } int GetOrderFromTimetableWndPt(int y, const Vehicle *v) { int sel = (y - this->GetWidget(WID_VT_TIMETABLE_PANEL)->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_NORMAL; if ((uint)sel >= this->vscroll->GetCapacity()) return INVALID_ORDER; sel += this->vscroll->GetPosition(); return (sel < v->GetNumOrders() * 2 && sel >= 0) ? sel : INVALID_ORDER; } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { switch (data) { case VIWD_AUTOREPLACE: /* Autoreplace replaced the vehicle */ this->vehicle = Vehicle::Get(this->window_number); break; case VIWD_REMOVE_ALL_ORDERS: /* Removed / replaced all orders (after deleting / sharing) */ if (this->sel_index == -1) break; this->DeleteChildWindows(); this->sel_index = -1; break; case VIWD_MODIFY_ORDERS: if (!gui_scope) break; this->UpdateSelectionStates(); this->ReInit(); break; default: { if (gui_scope) break; // only do this once; from command scope /* Moving an order. If one of these is INVALID_VEH_ORDER_ID, then * the order is being created / removed */ if (this->sel_index == -1) break; VehicleOrderID from = GB(data, 0, 8); VehicleOrderID to = GB(data, 8, 8); if (from == to) break; // no need to change anything /* if from == INVALID_VEH_ORDER_ID, one order was added; if to == INVALID_VEH_ORDER_ID, one order was removed */ uint old_num_orders = this->vehicle->GetNumOrders() - (uint)(from == INVALID_VEH_ORDER_ID) + (uint)(to == INVALID_VEH_ORDER_ID); VehicleOrderID selected_order = (this->sel_index + 1) / 2; if (selected_order == old_num_orders) selected_order = 0; // when last travel time is selected, it belongs to order 0 bool travel = HasBit(this->sel_index, 0); if (from != selected_order) { /* Moving from preceding order? */ selected_order -= (int)(from <= selected_order); /* Moving to preceding order? */ selected_order += (int)(to <= selected_order); } else { /* Now we are modifying the selected order */ if (to == INVALID_VEH_ORDER_ID) { /* Deleting selected order */ this->DeleteChildWindows(); this->sel_index = -1; break; } else { /* Moving selected order */ selected_order = to; } } /* recompute new sel_index */ this->sel_index = 2 * selected_order - (int)travel; /* travel time of first order needs special handling */ if (this->sel_index == -1) this->sel_index = this->vehicle->GetNumOrders() * 2 - 1; break; } } } virtual void OnPaint() { const Vehicle *v = this->vehicle; int selected = this->sel_index; this->vscroll->SetCount(v->GetNumOrders() * 2); if (v->owner == _local_company) { bool disable = true; if (selected != -1) { const Order *order = v->GetOrder(((selected + 1) / 2) % v->GetNumOrders()); if (selected % 2 == 1) { disable = order != NULL && (order->IsType(OT_CONDITIONAL) || order->IsType(OT_IMPLICIT)); } else { disable = order == NULL || ((!order->IsType(OT_GOTO_STATION) || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) && !order->IsType(OT_CONDITIONAL)); } } bool disable_speed = disable || selected % 2 != 1 || v->type == VEH_AIRCRAFT; this->SetWidgetDisabledState(WID_VT_CHANGE_TIME, disable); this->SetWidgetDisabledState(WID_VT_CLEAR_TIME, disable); this->SetWidgetDisabledState(WID_VT_CHANGE_SPEED, disable_speed); this->SetWidgetDisabledState(WID_VT_CLEAR_SPEED, disable_speed); this->SetWidgetDisabledState(WID_VT_SHARED_ORDER_LIST, !v->IsOrderListShared()); this->EnableWidget(WID_VT_START_DATE); this->EnableWidget(WID_VT_RESET_LATENESS); this->EnableWidget(WID_VT_AUTOFILL); } else { this->DisableWidget(WID_VT_START_DATE); this->DisableWidget(WID_VT_CHANGE_TIME); this->DisableWidget(WID_VT_CLEAR_TIME); this->DisableWidget(WID_VT_CHANGE_SPEED); this->DisableWidget(WID_VT_CLEAR_SPEED); this->DisableWidget(WID_VT_RESET_LATENESS); this->DisableWidget(WID_VT_AUTOFILL); this->DisableWidget(WID_VT_SHARED_ORDER_LIST); } this->SetWidgetLoweredState(WID_VT_AUTOFILL, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)); this->DrawWidgets(); } virtual void SetStringParameters(int widget) const { switch (widget) { case WID_VT_CAPTION: SetDParam(0, this->vehicle->index); break; case WID_VT_EXPECTED: SetDParam(0, this->show_expected ? STR_TIMETABLE_EXPECTED : STR_TIMETABLE_SCHEDULED); break; } } virtual void DrawWidget(const Rect &r, int widget) const { const Vehicle *v = this->vehicle; int selected = this->sel_index; switch (widget) { case WID_VT_TIMETABLE_PANEL: { int y = r.top + WD_FRAMERECT_TOP; int i = this->vscroll->GetPosition(); VehicleOrderID order_id = (i + 1) / 2; bool final_order = false; bool rtl = _current_text_dir == TD_RTL; SetDParamMaxValue(0, v->GetNumOrders(), 2); int index_column_width = GetStringBoundingBox(STR_ORDER_INDEX).width + 2 * GetSpriteSize(rtl ? SPR_ARROW_RIGHT : SPR_ARROW_LEFT).width + 3; int middle = rtl ? r.right - WD_FRAMERECT_RIGHT - index_column_width : r.left + WD_FRAMERECT_LEFT + index_column_width; const Order *order = v->GetOrder(order_id); while (order != NULL) { /* Don't draw anything if it extends past the end of the window. */ if (!this->vscroll->IsVisible(i)) break; if (i % 2 == 0) { DrawOrderString(v, order, order_id, y, i == selected, true, r.left + WD_FRAMERECT_LEFT, middle, r.right - WD_FRAMERECT_RIGHT); order_id++; if (order_id >= v->GetNumOrders()) { order = v->GetOrder(0); final_order = true; } else { order = order->next; } } else { StringID string; TextColour colour = (i == selected) ? TC_WHITE : TC_BLACK; if (order->IsType(OT_CONDITIONAL)) { string = STR_TIMETABLE_NO_TRAVEL; } else if (order->IsType(OT_IMPLICIT)) { string = STR_TIMETABLE_NOT_TIMETABLEABLE; colour = ((i == selected) ? TC_SILVER : TC_GREY) | TC_NO_SHADE; } else if (order->travel_time == 0) { string = order->max_speed != UINT16_MAX ? STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED : STR_TIMETABLE_TRAVEL_NOT_TIMETABLED; } else { SetTimetableParams(0, 1, order->travel_time); string = order->max_speed != UINT16_MAX ? STR_TIMETABLE_TRAVEL_FOR_SPEED : STR_TIMETABLE_TRAVEL_FOR; } SetDParam(2, order->max_speed); DrawString(rtl ? r.left + WD_FRAMERECT_LEFT : middle, rtl ? middle : r.right - WD_FRAMERECT_LEFT, y, string, colour); if (final_order) break; } i++; y += FONT_HEIGHT_NORMAL; } break; } case WID_VT_ARRIVAL_DEPARTURE_PANEL: { /* Arrival and departure times are handled in an all-or-nothing approach, * i.e. are only shown if we can calculate all times. * Excluding order lists with only one order makes some things easier. */ Ticks total_time = v->orders.list != NULL ? v->orders.list->GetTimetableDurationIncomplete() : 0; if (total_time <= 0 || v->GetNumOrders() <= 1 || !HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) break; TimetableArrivalDeparture *arr_dep = AllocaM(TimetableArrivalDeparture, v->GetNumOrders()); const VehicleOrderID cur_order = v->cur_real_order_index % v->GetNumOrders(); VehicleOrderID earlyID = BuildArrivalDepartureList(v, arr_dep) ? cur_order : (VehicleOrderID)INVALID_VEH_ORDER_ID; int y = r.top + WD_FRAMERECT_TOP; bool show_late = this->show_expected && v->lateness_counter > DAY_TICKS; Ticks offset = show_late ? 0 : -v->lateness_counter; bool rtl = _current_text_dir == TD_RTL; int abbr_left = rtl ? r.right - WD_FRAMERECT_RIGHT - this->deparr_abbr_width : r.left + WD_FRAMERECT_LEFT; int abbr_right = rtl ? r.right - WD_FRAMERECT_RIGHT : r.left + WD_FRAMERECT_LEFT + this->deparr_abbr_width; int time_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.right - WD_FRAMERECT_RIGHT - this->deparr_time_width; int time_right = rtl ? r.left + WD_FRAMERECT_LEFT + this->deparr_time_width : r.right - WD_FRAMERECT_RIGHT; for (int i = this->vscroll->GetPosition(); i / 2 < v->GetNumOrders(); ++i) { // note: i is also incremented in the loop /* Don't draw anything if it extends past the end of the window. */ if (!this->vscroll->IsVisible(i)) break; if (i % 2 == 0) { if (arr_dep[i / 2].arrival != INVALID_TICKS) { DrawString(abbr_left, abbr_right, y, STR_TIMETABLE_ARRIVAL_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK); if (this->show_expected && i / 2 == earlyID) { SetArrivalDepartParams(0, 1, arr_dep[i / 2].arrival); DrawString(time_left, time_right, y, STR_GREEN_STRING, i == selected ? TC_WHITE : TC_BLACK); } else { SetArrivalDepartParams(0, 1, arr_dep[i / 2].arrival + offset); DrawString(time_left, time_right, y, show_late ? STR_RED_STRING : STR_JUST_STRING, i == selected ? TC_WHITE : TC_BLACK); } } } else { if (arr_dep[i / 2].departure != INVALID_TICKS) { DrawString(abbr_left, abbr_right, y, STR_TIMETABLE_DEPARTURE_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK); SetArrivalDepartParams(0, 1, arr_dep[i/2].departure + offset); DrawString(time_left, time_right, y, show_late ? STR_RED_STRING : STR_JUST_STRING, i == selected ? TC_WHITE : TC_BLACK); } } y += FONT_HEIGHT_NORMAL; } break; } case WID_VT_SUMMARY_PANEL: { int y = r.top + WD_FRAMERECT_TOP; Ticks total_time = v->orders.list != NULL ? v->orders.list->GetTimetableDurationIncomplete() : 0; if (total_time != 0) { SetTimetableParams(0, 1, total_time); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, v->orders.list->IsCompleteTimetable() ? STR_TIMETABLE_TOTAL_TIME : STR_TIMETABLE_TOTAL_TIME_INCOMPLETE); } y += FONT_HEIGHT_NORMAL; if (v->timetable_start != 0) { /* We are running towards the first station so we can start the * timetable at the given time. */ SetDParam(0, STR_JUST_DATE_TINY); SetDParam(1, v->timetable_start); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_TIMETABLE_STATUS_START_AT); } else if (!HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) { /* We aren't running on a timetable yet, so how can we be "on time" * when we aren't even "on service"/"on duty"? */ DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_TIMETABLE_STATUS_NOT_STARTED); } else if (v->lateness_counter == 0 || (!_settings_client.gui.timetable_in_ticks && v->lateness_counter / DAY_TICKS == 0)) { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_TIMETABLE_STATUS_ON_TIME); } else { SetTimetableParams(0, 1, abs(v->lateness_counter)); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, v->lateness_counter < 0 ? STR_TIMETABLE_STATUS_EARLY : STR_TIMETABLE_STATUS_LATE); } break; } } } static inline uint32 PackTimetableArgs(const Vehicle *v, uint selected, bool speed) { uint order_number = (selected + 1) / 2; ModifyTimetableFlags mtf = (selected % 2 == 1) ? (speed ? MTF_TRAVEL_SPEED : MTF_TRAVEL_TIME) : MTF_WAIT_TIME; if (order_number >= v->GetNumOrders()) order_number = 0; return v->index | (order_number << 20) | (mtf << 28); } virtual void OnClick(Point pt, int widget, int click_count) { const Vehicle *v = this->vehicle; switch (widget) { case WID_VT_ORDER_VIEW: // Order view button ShowOrdersWindow(v); break; case WID_VT_TIMETABLE_PANEL: { // Main panel. int selected = GetOrderFromTimetableWndPt(pt.y, v); this->DeleteChildWindows(); this->sel_index = (selected == INVALID_ORDER || selected == this->sel_index) ? -1 : selected; break; } case WID_VT_START_DATE: // Change the date that the timetable starts. ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback); break; case WID_VT_CHANGE_TIME: { // "Wait For" button. int selected = this->sel_index; VehicleOrderID real = (selected + 1) / 2; if (real >= v->GetNumOrders()) real = 0; const Order *order = v->GetOrder(real); StringID current = STR_EMPTY; if (order != NULL) { uint time = (selected % 2 == 1) ? order->travel_time : order->wait_time; if (!_settings_client.gui.timetable_in_ticks) time /= DAY_TICKS; if (time != 0) { SetDParam(0, time); current = STR_JUST_INT; } } this->query_is_speed_query = false; ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, this, CS_NUMERAL, QSF_NONE); break; } case WID_VT_CHANGE_SPEED: { // Change max speed button. int selected = this->sel_index; VehicleOrderID real = (selected + 1) / 2; if (real >= v->GetNumOrders()) real = 0; StringID current = STR_EMPTY; const Order *order = v->GetOrder(real); if (order != NULL) { if (order->max_speed != UINT16_MAX) { SetDParam(0, ConvertKmhishSpeedToDisplaySpeed(order->max_speed)); current = STR_JUST_INT; } } this->query_is_speed_query = true; ShowQueryString(current, STR_TIMETABLE_CHANGE_SPEED, 31, this, CS_NUMERAL, QSF_NONE); break; } case WID_VT_CLEAR_TIME: { // Clear waiting time. uint32 p1 = PackTimetableArgs(v, this->sel_index, false); DoCommandP(0, p1, 0, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); break; } case WID_VT_CLEAR_SPEED: { // Clear max speed button. uint32 p1 = PackTimetableArgs(v, this->sel_index, true); DoCommandP(0, p1, UINT16_MAX, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); break; } case WID_VT_RESET_LATENESS: // Reset the vehicle's late counter. DoCommandP(0, v->index, 0, CMD_SET_VEHICLE_ON_TIME | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); break; case WID_VT_AUTOFILL: { // Autofill the timetable. uint32 p2 = 0; if (!HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)) SetBit(p2, 0); if (_ctrl_pressed) SetBit(p2, 1); DoCommandP(0, v->index, p2, CMD_AUTOFILL_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); break; } case WID_VT_EXPECTED: this->show_expected = !this->show_expected; break; case WID_VT_SHARED_ORDER_LIST: ShowVehicleListWindow(v); break; } this->SetDirty(); } virtual void OnQueryTextFinished(char *str) { if (str == NULL) return; const Vehicle *v = this->vehicle; uint32 p1 = PackTimetableArgs(v, this->sel_index, this->query_is_speed_query); uint64 val = StrEmpty(str) ? 0 : strtoul(str, NULL, 10); if (this->query_is_speed_query) { val = ConvertDisplaySpeedToKmhishSpeed(val); } else { if (!_settings_client.gui.timetable_in_ticks) val *= DAY_TICKS; } uint32 p2 = minu(val, UINT16_MAX); DoCommandP(0, p1, p2, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE)); } virtual void OnResize() { /* Update the scroll bar */ this->vscroll->SetCapacityFromWidget(this, WID_VT_TIMETABLE_PANEL, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM); } /** * Update the selection state of the arrival/departure data */ void UpdateSelectionStates() { this->GetWidget(WID_VT_ARRIVAL_DEPARTURE_SELECTION)->SetDisplayedPlane(_settings_client.gui.timetable_arrival_departure ? 0 : SZSP_NONE); this->GetWidget(WID_VT_EXPECTED_SELECTION)->SetDisplayedPlane(_settings_client.gui.timetable_arrival_departure ? 0 : 1); } }; static const NWidgetPart _nested_timetable_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_VT_CAPTION), SetDataTip(STR_TIMETABLE_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_ORDER_VIEW), SetMinimalSize(61, 14), SetDataTip( STR_TIMETABLE_ORDER_VIEW, STR_TIMETABLE_ORDER_VIEW_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_TIMETABLE_PANEL), SetMinimalSize(388, 82), SetResize(1, 10), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_VT_SCROLLBAR), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VT_ARRIVAL_DEPARTURE_SELECTION), NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_ARRIVAL_DEPARTURE_PANEL), SetMinimalSize(110, 0), SetFill(0, 1), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_VT_SCROLLBAR), EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VT_SCROLLBAR), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_SUMMARY_PANEL), SetMinimalSize(400, 22), SetResize(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_VERTICAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_CHANGE_TIME), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CHANGE_TIME, STR_TIMETABLE_WAIT_TIME_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_CLEAR_TIME), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CLEAR_TIME, STR_TIMETABLE_CLEAR_TIME_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_CHANGE_SPEED), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CHANGE_SPEED, STR_TIMETABLE_CHANGE_SPEED_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_CLEAR_SPEED), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CLEAR_SPEED, STR_TIMETABLE_CLEAR_SPEED_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_START_DATE), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_STARTING_DATE, STR_TIMETABLE_STARTING_DATE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_RESET_LATENESS), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_RESET_LATENESS, STR_TIMETABLE_RESET_LATENESS_TOOLTIP), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_AUTOFILL), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_AUTOFILL, STR_TIMETABLE_AUTOFILL_TOOLTIP), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VT_EXPECTED_SELECTION), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_EXPECTED), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_BLACK_STRING, STR_TIMETABLE_EXPECTED_TOOLTIP), NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), SetFill(1, 1), EndContainer(), EndContainer(), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VT_SHARED_ORDER_LIST), SetFill(0, 1), SetDataTip(SPR_SHARED_ORDERS_ICON, STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP), NWidget(WWT_RESIZEBOX, COLOUR_GREY), SetFill(0, 1), EndContainer(), EndContainer(), }; static const WindowDesc _timetable_desc( WDP_AUTO, 400, 130, WC_VEHICLE_TIMETABLE, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_timetable_widgets, lengthof(_nested_timetable_widgets) ); /** * Show the timetable for a given vehicle. * @param v The vehicle to show the timetable for. */ void ShowTimetableWindow(const Vehicle *v) { DeleteWindowById(WC_VEHICLE_DETAILS, v->index, false); DeleteWindowById(WC_VEHICLE_ORDERS, v->index, false); AllocateWindowDescFront(&_timetable_desc, v->index); } openttd-1.3.3/src/tilehighlight_func.h0000644000000000000000000000323512246102611016467 0ustar rootroot/* $Id: tilehighlight_func.h 21627 2010-12-24 15:08:19Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tilehighlight_func.h Functions related to tile highlights. */ #ifndef TILEHIGHLIGHT_FUNC_H #define TILEHIGHLIGHT_FUNC_H #include "gfx_type.h" #include "tilehighlight_type.h" void PlaceProc_DemolishArea(TileIndex tile); bool GUIPlaceProcDragXY(ViewportDragDropSelectionProcess proc, TileIndex start_tile, TileIndex end_tile); bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyle mode); void SetObjectToPlaceWnd(CursorID icon, PaletteID pal, HighLightStyle mode, Window *w); void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num); void ResetObjectToPlace(); void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method); void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process); void VpSetPresizeRange(TileIndex from, TileIndex to); void VpSetPlaceSizingLimit(int limit); void UpdateTileSelection(); extern TileHighlightData _thd; #endif /* TILEHIGHLIGHT_FUNC_H */ openttd-1.3.3/src/fontcache.cpp0000644000000000000000000005034712246102610015121 0ustar rootroot/* $Id: fontcache.cpp 25987 2013-11-13 21:53:40Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fontcache.cpp Cache for characters from fonts. */ #include "stdafx.h" #include "fontcache.h" #include "fontdetection.h" #include "blitter/factory.hpp" #include "core/math_func.hpp" #include "core/smallmap_type.hpp" #include "strings_func.h" #include "zoom_type.h" #include "gfx_layout.h" #include "table/sprites.h" #include "table/control_codes.h" #include "table/unicode.h" static const int ASCII_LETTERSTART = 32; ///< First printable ASCII letter. static const int MAX_FONT_SIZE = 72; ///< Maximum font size. /** Default heights for the different sizes of fonts. */ static const int _default_font_height[FS_END] = {10, 6, 18, 10}; static const int _default_font_ascender[FS_END] = { 8, 5, 15, 8}; /** * Create a new font cache. * @param fs The size of the font. */ FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_default_font_height[fs]), ascender(_default_font_ascender[fs]), descender(_default_font_ascender[fs] - _default_font_height[fs]), units_per_em(1) { assert(parent == NULL || this->fs == parent->fs); FontCache::caches[this->fs] = this; Layouter::ResetFontCache(this->fs); } /** Clean everything up. */ FontCache::~FontCache() { assert(this->fs == parent->fs); FontCache::caches[this->fs] = this->parent; Layouter::ResetFontCache(this->fs); } /** * Get height of a character for a given font size. * @param size Font size to get height of * @return Height of characters in the given font (pixels) */ int GetCharacterHeight(FontSize size) { return FontCache::Get(size)->GetHeight(); } /** Font cache for fonts that are based on a freetype font. */ class SpriteFontCache : public FontCache { private: SpriteID **glyph_to_spriteid_map; ///< Mapping of glyphs to sprite IDs. void ClearGlyphToSpriteMap(); public: SpriteFontCache(FontSize fs); ~SpriteFontCache(); virtual SpriteID GetUnicodeGlyph(WChar key); virtual void SetUnicodeGlyph(WChar key, SpriteID sprite); virtual void InitializeUnicodeGlyphMap(); virtual void ClearFontCache(); virtual const Sprite *GetGlyph(GlyphID key); virtual uint GetGlyphWidth(GlyphID key); virtual bool GetDrawGlyphShadow(); virtual GlyphID MapCharToGlyph(WChar key) { assert(IsPrintable(key)); return SPRITE_GLYPH | key; } virtual const void *GetFontTable(uint32 tag, size_t &length) { length = 0; return NULL; } }; /** * Create a new sprite font cache. * @param fs The font size to create the cache for. */ SpriteFontCache::SpriteFontCache(FontSize fs) : FontCache(fs), glyph_to_spriteid_map(NULL) { this->InitializeUnicodeGlyphMap(); } /** * Free everything we allocated. */ SpriteFontCache::~SpriteFontCache() { this->ClearGlyphToSpriteMap(); } SpriteID SpriteFontCache::GetUnicodeGlyph(GlyphID key) { if (this->glyph_to_spriteid_map[GB(key, 8, 8)] == NULL) return 0; return this->glyph_to_spriteid_map[GB(key, 8, 8)][GB(key, 0, 8)]; } void SpriteFontCache::SetUnicodeGlyph(GlyphID key, SpriteID sprite) { if (this->glyph_to_spriteid_map == NULL) this->glyph_to_spriteid_map = CallocT(256); if (this->glyph_to_spriteid_map[GB(key, 8, 8)] == NULL) this->glyph_to_spriteid_map[GB(key, 8, 8)] = CallocT(256); this->glyph_to_spriteid_map[GB(key, 8, 8)][GB(key, 0, 8)] = sprite; } void SpriteFontCache::InitializeUnicodeGlyphMap() { /* Clear out existing glyph map if it exists */ this->ClearGlyphToSpriteMap(); SpriteID base; switch (this->fs) { default: NOT_REACHED(); case FS_MONO: // Use normal as default for mono spaced font, i.e. FALL THROUGH case FS_NORMAL: base = SPR_ASCII_SPACE; break; case FS_SMALL: base = SPR_ASCII_SPACE_SMALL; break; case FS_LARGE: base = SPR_ASCII_SPACE_BIG; break; } for (uint i = ASCII_LETTERSTART; i < 256; i++) { SpriteID sprite = base + i - ASCII_LETTERSTART; if (!SpriteExists(sprite)) continue; this->SetUnicodeGlyph(i, sprite); this->SetUnicodeGlyph(i + SCC_SPRITE_START, sprite); } for (uint i = 0; i < lengthof(_default_unicode_map); i++) { byte key = _default_unicode_map[i].key; if (key == CLRA) { /* Clear the glyph. This happens if the glyph at this code point * is non-standard and should be accessed by an SCC_xxx enum * entry only. */ this->SetUnicodeGlyph(_default_unicode_map[i].code, 0); } else { SpriteID sprite = base + key - ASCII_LETTERSTART; this->SetUnicodeGlyph(_default_unicode_map[i].code, sprite); } } } /** * Clear the glyph to sprite mapping. */ void SpriteFontCache::ClearGlyphToSpriteMap() { if (this->glyph_to_spriteid_map == NULL) return; for (uint i = 0; i < 256; i++) { free(this->glyph_to_spriteid_map[i]); } free(this->glyph_to_spriteid_map); this->glyph_to_spriteid_map = NULL; } void SpriteFontCache::ClearFontCache() { Layouter::ResetFontCache(this->fs); } const Sprite *SpriteFontCache::GetGlyph(GlyphID key) { SpriteID sprite = this->GetUnicodeGlyph(key); if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); return GetSprite(sprite, ST_FONT); } uint SpriteFontCache::GetGlyphWidth(GlyphID key) { SpriteID sprite = this->GetUnicodeGlyph(key); if (sprite == 0) sprite = this->GetUnicodeGlyph('?'); return SpriteExists(sprite) ? GetSprite(sprite, ST_FONT)->width + (this->fs != FS_NORMAL) : 0; } bool SpriteFontCache::GetDrawGlyphShadow() { return false; } /*static */ FontCache *FontCache::caches[FS_END] = { new SpriteFontCache(FS_NORMAL), new SpriteFontCache(FS_SMALL), new SpriteFontCache(FS_LARGE), new SpriteFontCache(FS_MONO) }; #ifdef WITH_FREETYPE #include #include FT_FREETYPE_H #include FT_GLYPH_H #include FT_TRUETYPE_TABLES_H /** Font cache for fonts that are based on a freetype font. */ class FreeTypeFontCache : public FontCache { private: FT_Face face; ///< The font face associated with this font. typedef SmallMap > FontTable; ///< Table with font table cache FontTable font_tables; ///< Cached font tables. /** Container for information about a glyph. */ struct GlyphEntry { Sprite *sprite; ///< The loaded sprite. byte width; ///< The width of the glyph. bool duplicate; ///< Whether this glyph entry is a duplicate, i.e. may this be freed? }; /** * The glyph cache. This is structured to reduce memory consumption. * 1) There is a 'segment' table for each font size. * 2) Each segment table is a discrete block of characters. * 3) Each block contains 256 (aligned) characters sequential characters. * * The cache is accessed in the following way: * For character 0x0041 ('A'): glyph_to_sprite[0x00][0x41] * For character 0x20AC (Euro): glyph_to_sprite[0x20][0xAC] * * Currently only 256 segments are allocated, "limiting" us to 65536 characters. * This can be simply changed in the two functions Get & SetGlyphPtr. */ GlyphEntry **glyph_to_sprite; GlyphEntry *GetGlyphPtr(GlyphID key); void SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate = false); public: FreeTypeFontCache(FontSize fs, FT_Face face, int pixels); ~FreeTypeFontCache(); virtual SpriteID GetUnicodeGlyph(WChar key) { return this->parent->GetUnicodeGlyph(key); } virtual void SetUnicodeGlyph(WChar key, SpriteID sprite) { this->parent->SetUnicodeGlyph(key, sprite); } virtual void InitializeUnicodeGlyphMap() { this->parent->InitializeUnicodeGlyphMap(); } virtual void ClearFontCache(); virtual const Sprite *GetGlyph(GlyphID key); virtual uint GetGlyphWidth(GlyphID key); virtual bool GetDrawGlyphShadow(); virtual GlyphID MapCharToGlyph(WChar key); virtual const void *GetFontTable(uint32 tag, size_t &length); }; FT_Library _library = NULL; FreeTypeSettings _freetype; static const byte FACE_COLOUR = 1; static const byte SHADOW_COLOUR = 2; /** * Create a new FreeTypeFontCache. * @param fs The font size that is going to be cached. * @param face The font that has to be loaded. * @param pixels The number of pixels this font should be high. */ FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : FontCache(fs), face(face), glyph_to_sprite(NULL) { assert(face != NULL); if (pixels == 0) { /* Try to determine a good height based on the minimal height recommended by the font. */ pixels = _default_font_height[this->fs]; TT_Header *head = (TT_Header *)FT_Get_Sfnt_Table(this->face, ft_sfnt_head); if (head != NULL) { /* Font height is minimum height plus the difference between the default * height for this font size and the small size. */ int diff = _default_font_height[this->fs] - _default_font_height[FS_SMALL]; pixels = Clamp(min(head->Lowest_Rec_PPEM, 20) + diff, _default_font_height[this->fs], MAX_FONT_SIZE); } } FT_Error err = FT_Set_Pixel_Sizes(this->face, 0, pixels); if (err == FT_Err_Invalid_Pixel_Size) { /* Find nearest size to that requested */ FT_Bitmap_Size *bs = this->face->available_sizes; int i = this->face->num_fixed_sizes; int n = bs->height; for (; --i; bs++) { if (abs(pixels - bs->height) < abs(pixels - n)) n = bs->height; } FT_Set_Pixel_Sizes(this->face, 0, n); } this->units_per_em = this->face->units_per_EM; this->ascender = this->face->size->metrics.ascender >> 6; this->descender = this->face->size->metrics.descender >> 6; this->height = this->ascender - this->descender; } /** * Loads the freetype font. * First type to load the fontname as if it were a path. If that fails, * try to resolve the filename of the font using fontconfig, where the * format is 'font family name' or 'font family name, font style'. * @param fs The font size to load. */ static void LoadFreeTypeFont(FontSize fs) { FreeTypeSubSetting *settings = NULL; switch (fs) { default: NOT_REACHED(); case FS_SMALL: settings = &_freetype.small; break; case FS_NORMAL: settings = &_freetype.medium; break; case FS_LARGE: settings = &_freetype.large; break; case FS_MONO: settings = &_freetype.mono; break; } if (StrEmpty(settings->font)) return; if (_library == NULL) { if (FT_Init_FreeType(&_library) != FT_Err_Ok) { ShowInfoF("Unable to initialize FreeType, using sprite fonts instead"); return; } DEBUG(freetype, 2, "Initialized"); } FT_Face face = NULL; FT_Error error = FT_New_Face(_library, settings->font, 0, &face); if (error != FT_Err_Ok) error = GetFontByFaceName(settings->font, &face); if (error == FT_Err_Ok) { DEBUG(freetype, 2, "Requested '%s', using '%s %s'", settings->font, face->family_name, face->style_name); /* Attempt to select the unicode character map */ error = FT_Select_Charmap(face, ft_encoding_unicode); if (error == FT_Err_Ok) goto found_face; // Success if (error == FT_Err_Invalid_CharMap_Handle) { /* Try to pick a different character map instead. We default to * the first map, but platform_id 0 encoding_id 0 should also * be unicode (strange system...) */ FT_CharMap found = face->charmaps[0]; int i; for (i = 0; i < face->num_charmaps; i++) { FT_CharMap charmap = face->charmaps[i]; if (charmap->platform_id == 0 && charmap->encoding_id == 0) { found = charmap; } } if (found != NULL) { error = FT_Set_Charmap(face, found); if (error == FT_Err_Ok) goto found_face; } } } FT_Done_Face(face); static const char *SIZE_TO_NAME[] = { "medium", "small", "large", "mono" }; ShowInfoF("Unable to use '%s' for %s font, FreeType reported error 0x%X, using sprite font instead", settings->font, SIZE_TO_NAME[fs], error); return; found_face: new FreeTypeFontCache(fs, face, settings->size); } /** * Free everything that was allocated for this font cache. */ FreeTypeFontCache::~FreeTypeFontCache() { FT_Done_Face(this->face); this->ClearFontCache(); for (FontTable::iterator iter = this->font_tables.Begin(); iter != this->font_tables.End(); iter++) { free(iter->second.second); } } /** * Reset cached glyphs. */ void FreeTypeFontCache::ClearFontCache() { if (this->glyph_to_sprite == NULL) return; for (int i = 0; i < 256; i++) { if (this->glyph_to_sprite[i] == NULL) continue; for (int j = 0; j < 256; j++) { if (this->glyph_to_sprite[i][j].duplicate) continue; free(this->glyph_to_sprite[i][j].sprite); } free(this->glyph_to_sprite[i]); } free(this->glyph_to_sprite); this->glyph_to_sprite = NULL; Layouter::ResetFontCache(this->fs); } FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key) { if (this->glyph_to_sprite == NULL) return NULL; if (this->glyph_to_sprite[GB(key, 8, 8)] == NULL) return NULL; return &this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)]; } void FreeTypeFontCache::SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate) { if (this->glyph_to_sprite == NULL) { DEBUG(freetype, 3, "Allocating root glyph cache for size %u", this->fs); this->glyph_to_sprite = CallocT(256); } if (this->glyph_to_sprite[GB(key, 8, 8)] == NULL) { DEBUG(freetype, 3, "Allocating glyph cache for range 0x%02X00, size %u", GB(key, 8, 8), this->fs); this->glyph_to_sprite[GB(key, 8, 8)] = CallocT(256); } DEBUG(freetype, 4, "Set glyph for unicode character 0x%04X, size %u", key, this->fs); this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].sprite = glyph->sprite; this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].width = glyph->width; this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].duplicate = duplicate; } static void *AllocateFont(size_t size) { return MallocT(size); } /* Check if a glyph should be rendered with antialiasing */ static bool GetFontAAState(FontSize size) { /* AA is only supported for 32 bpp */ if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 32) return false; switch (size) { default: NOT_REACHED(); case FS_NORMAL: return _freetype.medium.aa; case FS_SMALL: return _freetype.small.aa; case FS_LARGE: return _freetype.large.aa; case FS_MONO: return _freetype.mono.aa; } } const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) { if ((key & SPRITE_GLYPH) != 0) return parent->GetGlyph(key); /* Check for the glyph in our cache */ GlyphEntry *glyph = this->GetGlyphPtr(key); if (glyph != NULL && glyph->sprite != NULL) return glyph->sprite; FT_GlyphSlot slot = this->face->glyph; bool aa = GetFontAAState(this->fs); GlyphEntry new_glyph; if (key == 0) { GlyphID question_glyph = this->MapCharToGlyph('?'); if (question_glyph == 0) { /* The font misses the '?' character. Use built-in sprite. * Note: We cannot use the baseset as this also has to work in the bootstrap GUI. */ #define CPSET { 0, 0, 0, 0, 1 } #define CP___ { 0, 0, 0, 0, 0 } static SpriteLoader::CommonPixel builtin_questionmark_data[10 * 8] = { CP___, CP___, CPSET, CPSET, CPSET, CPSET, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___, }; #undef CPSET #undef CP___ static const SpriteLoader::Sprite builtin_questionmark = { 10, // height 8, // width 0, // x_offs 0, // y_offs ST_FONT, builtin_questionmark_data }; Sprite *spr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont); assert(spr != NULL); new_glyph.sprite = spr; new_glyph.width = spr->width + (this->fs != FS_NORMAL); this->SetGlyphPtr(key, &new_glyph, false); return new_glyph.sprite; } else { /* Use '?' for missing characters. */ this->GetGlyph(question_glyph); glyph = this->GetGlyphPtr(question_glyph); this->SetGlyphPtr(key, glyph, true); return glyph->sprite; } } FT_Load_Glyph(this->face, key, FT_LOAD_DEFAULT); FT_Render_Glyph(this->face->glyph, aa ? FT_RENDER_MODE_NORMAL : FT_RENDER_MODE_MONO); /* Despite requesting a normal glyph, FreeType may have returned a bitmap */ aa = (slot->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY); /* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */ int width = max(1, slot->bitmap.width + (this->fs == FS_NORMAL)); int height = max(1, slot->bitmap.rows + (this->fs == FS_NORMAL)); /* Limit glyph size to prevent overflows later on. */ if (width > 256 || height > 256) usererror("Font glyph is too large"); /* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */ SpriteLoader::Sprite sprite; sprite.AllocateData(ZOOM_LVL_NORMAL, width * height); sprite.type = ST_FONT; sprite.width = width; sprite.height = height; sprite.x_offs = slot->bitmap_left; sprite.y_offs = this->ascender - slot->bitmap_top; /* Draw shadow for medium size */ if (this->fs == FS_NORMAL && !aa) { for (int y = 0; y < slot->bitmap.rows; y++) { for (int x = 0; x < slot->bitmap.width; x++) { if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { sprite.data[1 + x + (1 + y) * sprite.width].m = SHADOW_COLOUR; sprite.data[1 + x + (1 + y) * sprite.width].a = aa ? slot->bitmap.buffer[x + y * slot->bitmap.pitch] : 0xFF; } } } } for (int y = 0; y < slot->bitmap.rows; y++) { for (int x = 0; x < slot->bitmap.width; x++) { if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { sprite.data[x + y * sprite.width].m = FACE_COLOUR; sprite.data[x + y * sprite.width].a = aa ? slot->bitmap.buffer[x + y * slot->bitmap.pitch] : 0xFF; } } } new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont); new_glyph.width = slot->advance.x >> 6; this->SetGlyphPtr(key, &new_glyph); return new_glyph.sprite; } bool FreeTypeFontCache::GetDrawGlyphShadow() { return this->fs == FS_NORMAL && GetFontAAState(FS_NORMAL); } uint FreeTypeFontCache::GetGlyphWidth(GlyphID key) { if ((key & SPRITE_GLYPH) != 0) return this->parent->GetGlyphWidth(key); GlyphEntry *glyph = this->GetGlyphPtr(key); if (glyph == NULL || glyph->sprite == NULL) { this->GetGlyph(key); glyph = this->GetGlyphPtr(key); } return glyph->width; } GlyphID FreeTypeFontCache::MapCharToGlyph(WChar key) { assert(IsPrintable(key)); if (key >= SCC_SPRITE_START && key <= SCC_SPRITE_END) { return this->parent->MapCharToGlyph(key); } return FT_Get_Char_Index(this->face, key); } const void *FreeTypeFontCache::GetFontTable(uint32 tag, size_t &length) { const FontTable::iterator iter = this->font_tables.Find(tag); if (iter != this->font_tables.End()) { length = iter->second.first; return iter->second.second; } FT_ULong len = 0; FT_Byte *result = NULL; FT_Load_Sfnt_Table(this->face, tag, 0, NULL, &len); if (len > 0) { result = MallocT(len); FT_Load_Sfnt_Table(this->face, tag, 0, result, &len); } length = len; this->font_tables.Insert(tag, SmallPair(length, result)); return result; } #endif /* WITH_FREETYPE */ /** * (Re)initialize the freetype related things, i.e. load the non-sprite fonts. * @param monospace Whether to initialise the monospace or regular fonts. */ void InitFreeType(bool monospace) { for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { if (monospace != (fs == FS_MONO)) continue; FontCache *fc = FontCache::Get(fs); if (fc->HasParent()) delete fc; #ifdef WITH_FREETYPE LoadFreeTypeFont(fs); #endif } } /** * Free everything allocated w.r.t. fonts. */ void UninitFreeType() { for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { FontCache *fc = FontCache::Get(fs); if (fc->HasParent()) delete fc; } #ifdef WITH_FREETYPE FT_Done_FreeType(_library); _library = NULL; #endif /* WITH_FREETYPE */ } openttd-1.3.3/src/tilematrix_type.hpp0000644000000000000000000000770712246102611016422 0ustar rootroot/* $Id: tilematrix_type.hpp 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tilematrix_type.hpp Template for storing a value per area of the map. */ #ifndef TILEMATRIX_TYPE_HPP #define TILEMATRIX_TYPE_HPP #include "core/alloc_func.hpp" #include "tilearea_type.h" /** * A simple matrix that stores one value per N*N square of the map. * Storage is only allocated for the part of the map that has values * assigned. * * @note No constructor is called for newly allocated values, you * have to do this yourself if needed. * @tparam T The type of the stored items. * @tparam N Grid size. */ template class TileMatrix { /** Allocates space for a new tile in the matrix. * @param tile Tile to add. */ void AllocateStorage(TileIndex tile) { uint old_left = TileX(this->area.tile) / N; uint old_top = TileY(this->area.tile) / N; uint old_w = this->area.w / N; uint old_h = this->area.h / N; /* Add the square the tile is in to the tile area. We do this * by adding top-left and bottom-right of the square. */ uint grid_x = (TileX(tile) / N) * N; uint grid_y = (TileY(tile) / N) * N; this->area.Add(TileXY(grid_x, grid_y)); this->area.Add(TileXY(grid_x + N - 1, grid_y + N - 1)); /* Allocate new storage. */ T *new_data = CallocT(this->area.w / N * this->area.h / N); if (old_w > 0) { /* Copy old data if present. */ uint offs_x = old_left - TileX(this->area.tile) / N; uint offs_y = old_top - TileY(this->area.tile) / N; for (uint row = 0; row < old_h; row++) { MemCpyT(&new_data[(row + offs_y) * this->area.w / N + offs_x], &this->data[row * old_w], old_w); } } free(this->data); this->data = new_data; } public: static const uint GRID = N; TileArea area; ///< Area covered by the matrix. T *data; ///< Pointer to data array. TileMatrix() : area(INVALID_TILE, 0, 0), data(NULL) {} ~TileMatrix() { free(this->data); } /** * Get the total covered area. * @return The area covered by the matrix. */ const TileArea& GetArea() const { return this->area; } /** * Get the area of the matrix square that contains a specific tile. * @param The tile to get the map area for. * @param extend Extend the area by this many squares on all sides. * @return Tile area containing the tile. */ static TileArea GetAreaForTile(TileIndex tile, uint extend = 0) { uint tile_x = (TileX(tile) / N) * N; uint tile_y = (TileY(tile) / N) * N; uint w = N, h = N; w += min(extend * N, tile_x); h += min(extend * N, tile_y); tile_x -= min(extend * N, tile_x); tile_y -= min(extend * N, tile_y); w += min(extend * N, MapSizeX() - tile_x - w); h += min(extend * N, MapSizeY() - tile_y - h); return TileArea(TileXY(tile_x, tile_y), w, h); } /** * Extend the coverage area to include a tile. * @param tile The tile to include. */ void Add(TileIndex tile) { if (!this->area.Contains(tile)) { this->AllocateStorage(tile); } } /** * Get the value associated to a tile index. * @param tile The tile to get the value for. * @return Pointer to the value. */ T *Get(TileIndex tile) { this->Add(tile); tile -= this->area.tile; uint x = TileX(tile) / N; uint y = TileY(tile) / N; return &this->data[y * this->area.w / N + x]; } /** Array access operator, see #Get. */ inline T &operator[](TileIndex tile) { return *this->Get(tile); } }; #endif /* TILEMATRIX_TYPE_HPP */ openttd-1.3.3/src/widgets/0000755000000000000000000000000012246102757014134 5ustar rootrootopenttd-1.3.3/src/widgets/newgrf_widget.h0000644000000000000000000000734512246102564017145 0ustar rootroot/* $Id: newgrf_widget.h 23932 2012-02-12 10:32:41Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_widget.h Types related to the newgrf widgets. */ #ifndef WIDGETS_NEWGRF_WIDGET_H #define WIDGETS_NEWGRF_WIDGET_H #include "../newgrf_config.h" #include "../textfile_type.h" /** Widgets of the #NewGRFParametersWindow class. */ enum NewGRFParametersWidgets { WID_NP_SHOW_NUMPAR, ///< #NWID_SELECTION to optionally display #WID_NP_NUMPAR. WID_NP_NUMPAR_DEC, ///< Button to decrease number of parameters. WID_NP_NUMPAR_INC, ///< Button to increase number of parameters. WID_NP_NUMPAR, ///< Optional number of parameters. WID_NP_NUMPAR_TEXT, ///< Text description. WID_NP_BACKGROUND, ///< Panel to draw the settings on. WID_NP_SCROLLBAR, ///< Scrollbar to scroll through all settings. WID_NP_ACCEPT, ///< Accept button. WID_NP_RESET, ///< Reset button. WID_NP_SHOW_DESCRIPTION, ///< #NWID_SELECTION to optionally display parameter descriptions. WID_NP_DESCRIPTION, ///< Multi-line description of a parameter. }; /** Widgets of the #NewGRFWindow class. */ enum NewGRFStateWidgets { WID_NS_PRESET_LIST, ///< Active NewGRF preset. WID_NS_PRESET_SAVE, ///< Save list of active NewGRFs as presets. WID_NS_PRESET_DELETE, ///< Delete active preset. WID_NS_ADD, ///< Add NewGRF to active list. WID_NS_REMOVE, ///< Remove NewGRF from active list. WID_NS_MOVE_UP, ///< Move NewGRF up in active list. WID_NS_MOVE_DOWN, ///< Move NewGRF down in active list. WID_NS_FILTER, ///< Filter list of available NewGRFs. WID_NS_FILE_LIST, ///< List window of active NewGRFs. WID_NS_SCROLLBAR, ///< Scrollbar for active NewGRF list. WID_NS_AVAIL_LIST, ///< List window of available NewGRFs. WID_NS_SCROLL2BAR, ///< Scrollbar for available NewGRF list. WID_NS_NEWGRF_INFO_TITLE, ///< Title for Info on selected NewGRF. WID_NS_NEWGRF_INFO, ///< Panel for Info on selected NewGRF. WID_NS_OPEN_URL, ///< Open URL of NewGRF. WID_NS_NEWGRF_TEXTFILE, ///< Open NewGRF readme, changelog (+1) or license (+2). WID_NS_SET_PARAMETERS = WID_NS_NEWGRF_TEXTFILE + TFT_END, ///< Open Parameters Window for selected NewGRF for editing parameters. WID_NS_VIEW_PARAMETERS, ///< Open Parameters Window for selected NewGRF for viewing parameters. WID_NS_TOGGLE_PALETTE, ///< Toggle Palette of selected, active NewGRF. WID_NS_APPLY_CHANGES, ///< Apply changes to NewGRF config. WID_NS_RESCAN_FILES, ///< Rescan files (available NewGRFs). WID_NS_RESCAN_FILES2, ///< Rescan files (active NewGRFs). WID_NS_CONTENT_DOWNLOAD, ///< Open content download (available NewGRFs). WID_NS_CONTENT_DOWNLOAD2, ///< Open content download (active NewGRFs). WID_NS_SHOW_REMOVE, ///< Select active list buttons (0 = normal, 1 = simple layout). WID_NS_SHOW_APPLY, ///< Select display of the buttons below the 'details'. }; /** Widgets of the #ScanProgressWindow class. */ enum ScanProgressWidgets { WID_SP_PROGRESS_BAR, ///< Simple progress bar. WID_SP_PROGRESS_TEXT, ///< Text explaining what is happening. }; #endif /* WIDGETS_NEWGRF_WIDGET_H */ openttd-1.3.3/src/widgets/console_widget.h0000644000000000000000000000166212246102564017313 0ustar rootroot/* $Id: console_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file console_widget.h Types related to the console widgets. */ #ifndef WIDGETS_CONSOLE_WIDGET_H #define WIDGETS_CONSOLE_WIDGET_H /** Widgets of the #IConsoleWindow class. */ enum ConsoleWidgets { WID_C_BACKGROUND, ///< Background of the console. }; #endif /* WIDGETS_CONSOLE_WIDGET_H */ openttd-1.3.3/src/widgets/news_widget.h0000644000000000000000000000406012246102564016620 0ustar rootroot/* $Id: news_widget.h 24842 2012-12-23 21:06:37Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file news_widget.h Types related to the news widgets. */ #ifndef WIDGETS_NEWS_WIDGET_H #define WIDGETS_NEWS_WIDGET_H #include "../news_type.h" /** Widgets of the #NewsWindow class. */ enum NewsWidgets { WID_N_PANEL, ///< Panel of the window. WID_N_TITLE, ///< Title of the company news. WID_N_HEADLINE, ///< The news headline. WID_N_CLOSEBOX, ///< Close the window. WID_N_DATE, ///< Date of the news item. WID_N_CAPTION, ///< Title bar of the window. Only used in small news items. WID_N_INSET, ///< Inset around the viewport in the window. Only used in small news items. WID_N_VIEWPORT, ///< Viewport in the window. WID_N_COMPANY_MSG, ///< Message in company news items. WID_N_MESSAGE, ///< Space for displaying the message. Only used in small news items. WID_N_MGR_FACE, ///< Face of the manager. WID_N_MGR_NAME, ///< Name of the manager. WID_N_VEH_TITLE, ///< Vehicle new title. WID_N_VEH_BKGND, ///< Dark background of new vehicle news. WID_N_VEH_NAME, ///< Name of the new vehicle. WID_N_VEH_SPR, ///< Graphical display of the new vehicle. WID_N_VEH_INFO, ///< Some technical data of the new vehicle. }; /** Widgets of the #MessageHistoryWindow class. */ enum MessageHistoryWidgets { WID_MH_STICKYBOX, ///< Stickybox. WID_MH_BACKGROUND, ///< Background of the window. WID_MH_SCROLLBAR, ///< Scrollbar for the list. }; #endif /* WIDGETS_NEWS_WIDGET_H */ openttd-1.3.3/src/widgets/dock_widget.h0000644000000000000000000000310612246102564016564 0ustar rootroot/* $Id: dock_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file dock_widget.h Types related to the dock widgets. */ #ifndef WIDGETS_DOCK_WIDGET_H #define WIDGETS_DOCK_WIDGET_H /** Widgets of the #BuildDocksDepotWindow class. */ enum BuildDockDepotWidgets { WID_BDD_BACKGROUND, ///< Background of the window. WID_BDD_X, ///< X-direction button. WID_BDD_Y, ///< Y-direction button. }; /** Widgets of the #BuildDocksToolbarWindow class. */ enum DockToolbarWidgets { WID_DT_CANAL, ///< Build canal button. WID_DT_LOCK, ///< Build lock button. WID_DT_DEMOLISH, ///< Demolish aka dynamite button. WID_DT_DEPOT, ///< Build depot button. WID_DT_STATION, ///< Build station button. WID_DT_BUOY, ///< Build buoy button. WID_DT_RIVER, ///< Build river button (in scenario editor). WID_DT_BUILD_AQUEDUCT, ///< Build aqueduct button. WID_DT_INVALID, ///< Used to initialize a variable. }; #endif /* WIDGETS_DOCK_WIDGET_H */ openttd-1.3.3/src/widgets/object_widget.h0000644000000000000000000000304712246102564017116 0ustar rootroot/* $Id: object_widget.h 24178 2012-04-24 20:01:34Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_widget.h Types related to the object widgets. */ #ifndef WIDGETS_OBJECT_WIDGET_H #define WIDGETS_OBJECT_WIDGET_H /** Widgets of the #BuildObjectWindow class. */ enum BuildObjectWidgets { WID_BO_CLASS_LIST, ///< The list with classes. WID_BO_SCROLLBAR, ///< The scrollbar associated with the list. WID_BO_OBJECT_MATRIX, ///< The matrix with preview sprites. WID_BO_OBJECT_SPRITE, ///< A preview sprite of the object. WID_BO_OBJECT_NAME, ///< The name of the selected object. WID_BO_OBJECT_SIZE, ///< The size of the selected object. WID_BO_INFO, ///< Other information about the object (from the NewGRF). WID_BO_SELECT_MATRIX, ///< Selection preview matrix of objects of a given class. WID_BO_SELECT_IMAGE, ///< Preview image in the #WID_BO_SELECT_MATRIX. WID_BO_SELECT_SCROLL, ///< Scrollbar next to the #WID_BO_SELECT_MATRIX. }; #endif /* WIDGETS_OBJECT_WIDGET_H */ openttd-1.3.3/src/widgets/date_widget.h0000644000000000000000000000204412246102564016561 0ustar rootroot/* $Id: date_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file date_widget.h Types related to the date widgets. */ #ifndef WIDGETS_DATE_WIDGET_H #define WIDGETS_DATE_WIDGET_H /** Widgets of the #SetDateWindow class. */ enum SetDateWidgets { WID_SD_DAY, ///< Dropdown for the day. WID_SD_MONTH, ///< Dropdown for the month. WID_SD_YEAR, ///< Dropdown for the year. WID_SD_SET_DATE, ///< Actually set the date. }; #endif /* WIDGETS_DATE_WIDGET_H */ openttd-1.3.3/src/widgets/highscore_widget.h0000644000000000000000000000174612246102564017627 0ustar rootroot/* $Id: highscore_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file highscore_widget.h Types related to the highscore widgets. */ #ifndef WIDGETS_HIGHSCORE_WIDGET_H #define WIDGETS_HIGHSCORE_WIDGET_H /** Widgets of the #EndGameHighScoreBaseWindow class and #HighScoreWindow class. */ enum HighscoreWidgets { WID_H_BACKGROUND, ///< Background of the window. }; #endif /* WIDGETS_HIGHSCORE_WIDGET_H */ openttd-1.3.3/src/widgets/sign_widget.h0000644000000000000000000000323112246102564016603 0ustar rootroot/* $Id: sign_widget.h 24750 2012-11-14 22:51:05Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file sign_widget.h Types related to the sign widgets. */ #ifndef WIDGETS_SIGN_WIDGET_H #define WIDGETS_SIGN_WIDGET_H /** Widgets of the #SignListWindow class. */ enum SignListWidgets { /* Name starts with SI instead of S, because of collision with SaveLoadWidgets */ WID_SIL_CAPTION, ///< Caption of the window. WID_SIL_LIST, ///< List of signs. WID_SIL_SCROLLBAR, ///< Scrollbar of list. WID_SIL_FILTER_TEXT, ///< Text box for typing a filter string. WID_SIL_FILTER_MATCH_CASE_BTN, ///< Button to toggle if case sensitive filtering should be used. WID_SIL_FILTER_ENTER_BTN, ///< Scroll to first sign. }; /** Widgets of the #SignWindow class. */ enum QueryEditSignWidgets { WID_QES_CAPTION, ///< Caption of the window. WID_QES_TEXT, ///< Text of the query. WID_QES_OK, ///< OK button. WID_QES_CANCEL, ///< Cancel button. WID_QES_DELETE, ///< Delete button. WID_QES_PREVIOUS, ///< Previous button. WID_QES_NEXT, ///< Next button. }; #endif /* */ openttd-1.3.3/src/widgets/group_widget.h0000644000000000000000000000360112246102564017000 0ustar rootroot/* $Id: group_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file group_widget.h Types related to the group widgets. */ #ifndef WIDGETS_GROUP_WIDGET_H #define WIDGETS_GROUP_WIDGET_H /** Widgets of the #VehicleGroupWindow class. */ enum GroupListWidgets { WID_GL_CAPTION, ///< Caption of the window. WID_GL_SORT_BY_ORDER, ///< Sort order. WID_GL_SORT_BY_DROPDOWN, ///< Sort by dropdown list. WID_GL_LIST_VEHICLE, ///< List of the vehicles. WID_GL_LIST_VEHICLE_SCROLLBAR, ///< Scrollbar for the list. WID_GL_AVAILABLE_VEHICLES, ///< Available vehicles. WID_GL_MANAGE_VEHICLES_DROPDOWN, ///< Manage vehicles dropdown list. WID_GL_STOP_ALL, ///< Stop all button. WID_GL_START_ALL, ///< Start all button. WID_GL_ALL_VEHICLES, ///< All vehicles entry. WID_GL_DEFAULT_VEHICLES, ///< Default vehicles entry. WID_GL_LIST_GROUP, ///< List of the groups. WID_GL_LIST_GROUP_SCROLLBAR, ///< Scrollbar for the list. WID_GL_CREATE_GROUP, ///< Create group button. WID_GL_DELETE_GROUP, ///< Delete group button. WID_GL_RENAME_GROUP, ///< Rename group button. WID_GL_REPLACE_PROTECTION, ///< Replace protection button. }; #endif /* WIDGETS_GROUP_WIDGET_H */ openttd-1.3.3/src/widgets/error_widget.h0000644000000000000000000000175312246102564017003 0ustar rootroot/* $Id: error_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file error_widget.h Types related to the error widgets. */ #ifndef WIDGETS_ERROR_WIDGET_H #define WIDGETS_ERROR_WIDGET_H /** Widgets of the #ErrmsgWindow class. */ enum ErrorMessageWidgets { WID_EM_CAPTION, ///< Caption of the window. WID_EM_FACE, ///< Error title. WID_EM_MESSAGE, ///< Error message. }; #endif /* WIDGETS_ERROR_WIDGET_H */ openttd-1.3.3/src/widgets/dropdown.cpp0000644000000000000000000004144712246102564016502 0ustar rootroot/* $Id: dropdown.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file dropdown.cpp Implementation of the dropdown widget. */ #include "../stdafx.h" #include "../window_gui.h" #include "../string_func.h" #include "../strings_func.h" #include "../window_func.h" #include "dropdown_type.h" #include "dropdown_widget.h" void DropDownListItem::Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const { int c1 = _colour_gradient[bg_colour][3]; int c2 = _colour_gradient[bg_colour][7]; int mid = top + this->Height(0) / 2; GfxFillRect(left + 1, mid - 2, right - 1, mid - 2, c1); GfxFillRect(left + 1, mid - 1, right - 1, mid - 1, c2); } uint DropDownListStringItem::Width() const { char buffer[512]; GetString(buffer, this->String(), lastof(buffer)); return GetStringBoundingBox(buffer).width; } void DropDownListStringItem::Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const { DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, top, this->String(), sel ? TC_WHITE : TC_BLACK); } /** * Natural sorting comparator function for DropDownList::sort(). * @param first Left side of comparison. * @param second Right side of comparison. * @return true if \a first precedes \a second. * @warning All items in the list need to be derivates of DropDownListStringItem. */ /* static */ bool DropDownListStringItem::NatSortFunc(const DropDownListItem *first, const DropDownListItem *second) { char buffer1[512], buffer2[512]; GetString(buffer1, static_cast(first)->String(), lastof(buffer1)); GetString(buffer2, static_cast(second)->String(), lastof(buffer2)); return strnatcmp(buffer1, buffer2) < 0; } StringID DropDownListParamStringItem::String() const { for (uint i = 0; i < lengthof(this->decode_params); i++) SetDParam(i, this->decode_params[i]); return this->string; } StringID DropDownListCharStringItem::String() const { SetDParamStr(0, this->raw_string); return this->string; } /** * Delete all items of a drop down list and the list itself * @param list List to delete. */ static void DeleteDropDownList(DropDownList *list) { for (DropDownList::iterator it = list->begin(); it != list->end(); ++it) { DropDownListItem *item = *it; delete item; } delete list; } static const NWidgetPart _nested_dropdown_menu_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_END, WID_DM_ITEMS), SetMinimalSize(1, 1), SetScrollbar(WID_DM_SCROLL), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_DM_SHOW_SCROLL), NWidget(NWID_VSCROLLBAR, COLOUR_END, WID_DM_SCROLL), EndContainer(), EndContainer(), }; const WindowDesc _dropdown_desc( WDP_MANUAL, 0, 0, WC_DROPDOWN_MENU, WC_NONE, 0, _nested_dropdown_menu_widgets, lengthof(_nested_dropdown_menu_widgets) ); /** Drop-down menu window */ struct DropdownWindow : Window { WindowClass parent_wnd_class; ///< Parent window class. WindowNumber parent_wnd_num; ///< Parent window number. int parent_button; ///< Parent widget number where the window is dropped from. DropDownList *list; ///< List with dropdown menu items. int selected_index; ///< Index of the selected item in the list. byte click_delay; ///< Timer to delay selection. bool drag_mode; bool instant_close; ///< Close the window when the mouse button is raised. int scrolling; ///< If non-zero, auto-scroll the item list (one time). Point position; ///< Position of the topleft corner of the window. Scrollbar *vscroll; /** * Create a dropdown menu. * @param parent Parent window. * @param list Dropdown item list. * @param selected Index of the selected item in the list. * @param button Widget of the parent window doing the dropdown. * @param instant_close Close the window when the mouse button is raised. * @param position Topleft position of the dropdown menu window. * @param size Size of the dropdown menu window. * @param wi_colour Colour of the parent widget. * @param scroll Dropdown menu has a scrollbar. * @param widget Widgets of the dropdown menu window. */ DropdownWindow(Window *parent, DropDownList *list, int selected, int button, bool instant_close, const Point &position, const Dimension &size, Colours wi_colour, bool scroll) : Window() { this->position = position; this->CreateNestedTree(&_dropdown_desc); this->vscroll = this->GetScrollbar(WID_DM_SCROLL); uint items_width = size.width - (scroll ? NWidgetScrollbar::GetVerticalDimension().width : 0); NWidgetCore *nwi = this->GetWidget(WID_DM_ITEMS); nwi->SetMinimalSize(items_width, size.height + 4); nwi->colour = wi_colour; nwi = this->GetWidget(WID_DM_SCROLL); nwi->colour = wi_colour; this->GetWidget(WID_DM_SHOW_SCROLL)->SetDisplayedPlane(scroll ? 0 : SZSP_NONE); this->FinishInitNested(&_dropdown_desc, 0); CLRBITS(this->flags, WF_WHITE_BORDER); /* Total length of list */ int list_height = 0; for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { DropDownListItem *item = *it; list_height += item->Height(items_width); } /* Capacity is the average number of items visible */ this->vscroll->SetCapacity(size.height * (uint16)list->size() / list_height); this->vscroll->SetCount((uint16)list->size()); this->parent_wnd_class = parent->window_class; this->parent_wnd_num = parent->window_number; this->parent_button = button; this->list = list; this->selected_index = selected; this->click_delay = 0; this->drag_mode = true; this->instant_close = instant_close; } ~DropdownWindow() { /* Make the dropdown "invisible", so it doesn't affect new window placement. * Also mark it dirty in case the callback deals with the screen. (e.g. screenshots). */ this->window_class = WC_INVALID; this->SetDirty(); Window *w2 = FindWindowById(this->parent_wnd_class, this->parent_wnd_num); if (w2 != NULL) { Point pt = _cursor.pos; pt.x -= w2->left; pt.y -= w2->top; w2->OnDropdownClose(pt, this->parent_button, this->selected_index, this->instant_close); } DeleteDropDownList(this->list); } virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) { return this->position; } /** * Find the dropdown item under the cursor. * @param value [out] Selected item, if function returns \c true. * @return Cursor points to a dropdown item. */ bool GetDropDownItem(int &value) { if (GetWidgetFromPos(this, _cursor.pos.x - this->left, _cursor.pos.y - this->top) < 0) return false; NWidgetBase *nwi = this->GetWidget(WID_DM_ITEMS); int y = _cursor.pos.y - this->top - nwi->pos_y - 2; int width = nwi->current_x - 4; int pos = this->vscroll->GetPosition(); const DropDownList *list = this->list; for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { /* Skip items that are scrolled up */ if (--pos >= 0) continue; const DropDownListItem *item = *it; int item_height = item->Height(width); if (y < item_height) { if (item->masked || !item->Selectable()) return false; value = item->result; return true; } y -= item_height; } return false; } virtual void DrawWidget(const Rect &r, int widget) const { if (widget != WID_DM_ITEMS) return; TextColour colour = (TextColour)this->GetWidget(widget)->colour; int y = r.top + 2; int pos = this->vscroll->GetPosition(); for (DropDownList::const_iterator it = this->list->begin(); it != this->list->end(); ++it) { const DropDownListItem *item = *it; int item_height = item->Height(r.right - r.left + 1); /* Skip items that are scrolled up */ if (--pos >= 0) continue; if (y + item_height < r.bottom) { bool selected = (this->selected_index == item->result); if (selected) GfxFillRect(r.left + 2, y, r.right - 1, y + item_height - 1, PC_BLACK); item->Draw(r.left, r.right, y, y + item_height, selected, colour); if (item->masked) { GfxFillRect(r.left + 1, y, r.right - 1, y + item_height - 1, _colour_gradient[colour][5], FILLRECT_CHECKER); } } y += item_height; } } virtual void OnClick(Point pt, int widget, int click_count) { if (widget != WID_DM_ITEMS) return; int item; if (this->GetDropDownItem(item)) { this->click_delay = 4; this->selected_index = item; this->SetDirty(); } } virtual void OnTick() { if (this->scrolling != 0) { int pos = this->vscroll->GetPosition(); this->vscroll->UpdatePosition(this->scrolling); this->scrolling = 0; if (pos != this->vscroll->GetPosition()) { this->SetDirty(); } } } virtual void OnMouseLoop() { Window *w2 = FindWindowById(this->parent_wnd_class, this->parent_wnd_num); if (w2 == NULL) { delete this; return; } if (this->click_delay != 0 && --this->click_delay == 0) { /* Make the dropdown "invisible", so it doesn't affect new window placement. * Also mark it dirty in case the callback deals with the screen. (e.g. screenshots). */ this->window_class = WC_INVALID; this->SetDirty(); w2->OnDropdownSelect(this->parent_button, this->selected_index); delete this; return; } if (this->drag_mode) { int item; if (!_left_button_clicked) { this->drag_mode = false; if (!this->GetDropDownItem(item)) { if (this->instant_close) delete this; return; } this->click_delay = 2; } else { if (_cursor.pos.y <= this->top + 2) { /* Cursor is above the list, set scroll up */ this->scrolling = -1; return; } else if (_cursor.pos.y >= this->top + this->height - 2) { /* Cursor is below list, set scroll down */ this->scrolling = 1; return; } if (!this->GetDropDownItem(item)) return; } if (this->selected_index != item) { this->selected_index = item; this->SetDirty(); } } } }; /** * Show a drop down list. * @param w Parent window for the list. * @param list Prepopulated DropDownList. Will be deleted when the list is * closed. * @param selected The initially selected list item. * @param button The widget which is passed to Window::OnDropdownSelect and OnDropdownClose. * Unless you override those functions, this should be then widget index of the dropdown button. * @param wi_rect Coord of the parent drop down button, used to position the dropdown menu. * @param auto_width The width is determined by the widest item in the list, * in this case only one of \a left or \a right is used (depending on text direction). * @param instant_close Set to true if releasing mouse button should close the * list regardless of where the cursor is. */ void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, Rect wi_rect, Colours wi_colour, bool auto_width, bool instant_close) { DeleteWindowById(WC_DROPDOWN_MENU, 0); /* The preferred position is just below the dropdown calling widget */ int top = w->top + wi_rect.bottom + 1; /* The preferred width equals the calling widget */ uint width = wi_rect.right - wi_rect.left + 1; uint max_item_width = 0; if (auto_width) { /* Find the longest item in the list */ for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { const DropDownListItem *item = *it; max_item_width = max(max_item_width, item->Width() + 5); } } /* Total length of list */ int list_height = 0; for (DropDownList::const_iterator it = list->begin(); it != list->end(); ++it) { DropDownListItem *item = *it; list_height += item->Height(width); } /* Height of window visible */ int height = list_height; /* Check if the status bar is visible, as we don't want to draw over it */ int screen_bottom = GetMainViewBottom(); bool scroll = false; /* Check if the dropdown will fully fit below the widget */ if (top + height + 4 >= screen_bottom) { /* If not, check if it will fit above the widget */ if (w->top + wi_rect.top - height > GetMainViewTop()) { top = w->top + wi_rect.top - height - 4; } else { /* ... and lastly if it won't, enable the scroll bar and fit the * list in below the widget */ int avg_height = list_height / (int)list->size(); int rows = (screen_bottom - 4 - top) / avg_height; height = rows * avg_height; scroll = true; /* Add space for the scroll bar if we automatically determined * the width of the list. */ max_item_width += NWidgetScrollbar::GetVerticalDimension().width; } } if (auto_width) width = max(width, max_item_width); Point dw_pos = { w->left + (_current_text_dir == TD_RTL ? wi_rect.right + 1 - width : wi_rect.left), top}; Dimension dw_size = {width, height}; new DropdownWindow(w, list, selected, button, instant_close, dw_pos, dw_size, wi_colour, scroll); } /** * Show a drop down list. * @param w Parent window for the list. * @param list Prepopulated DropDownList. Will be deleted when the list is * closed. * @param selected The initially selected list item. * @param button The widget within the parent window that is used to determine * the list's location. * @param width Override the width determined by the selected widget. * @param auto_width Maximum width is determined by the widest item in the list. * @param instant_close Set to true if releasing mouse button should close the * list regardless of where the cursor is. */ void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, uint width, bool auto_width, bool instant_close) { /* Our parent's button widget is used to determine where to place the drop * down list window. */ Rect wi_rect; NWidgetCore *nwi = w->GetWidget(button); wi_rect.left = nwi->pos_x; wi_rect.right = nwi->pos_x + nwi->current_x - 1; wi_rect.top = nwi->pos_y; wi_rect.bottom = nwi->pos_y + nwi->current_y - 1; Colours wi_colour = nwi->colour; if ((nwi->type & WWT_MASK) == NWID_BUTTON_DROPDOWN) { nwi->disp_flags |= ND_DROPDOWN_ACTIVE; } else { w->LowerWidget(button); } w->SetWidgetDirty(button); if (width != 0) { if (_current_text_dir == TD_RTL) { wi_rect.left = wi_rect.right + 1 - width; } else { wi_rect.right = wi_rect.left + width - 1; } } ShowDropDownListAt(w, list, selected, button, wi_rect, wi_colour, auto_width, instant_close); } /** * Show a dropdown menu window near a widget of the parent window. * The result code of the items is their index in the \a strings list. * @param w Parent window that wants the dropdown menu. * @param strings Menu list, end with #INVALID_STRING_ID * @param selected Index of initial selected item. * @param button Button widget number of the parent window \a w that wants the dropdown menu. * @param disabled_mask Bitmask for disabled items (items with their bit set are not copied to the dropdown list). * @param hidden_mask Bitmask for hidden items (items with their bit set are displayed, but not selectable in the dropdown list). * @param width Width of the dropdown menu. If \c 0, use the width of parent widget \a button. */ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask, uint width) { DropDownList *list = new DropDownList(); for (uint i = 0; strings[i] != INVALID_STRING_ID; i++) { if (!HasBit(hidden_mask, i)) { list->push_back(new DropDownListStringItem(strings[i], i, HasBit(disabled_mask, i))); } } /* No entries in the list? */ if (list->size() == 0) { DeleteDropDownList(list); return; } ShowDropDownList(w, list, selected, button, width); } /** * Delete the drop-down menu from window \a pw * @param pw Parent window of the drop-down menu window * @return Parent widget number if the drop-down was found and closed, \c -1 if the window was not found. */ int HideDropDownMenu(Window *pw) { Window *w; FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class != WC_DROPDOWN_MENU) continue; DropdownWindow *dw = dynamic_cast(w); if (pw->window_class == dw->parent_wnd_class && pw->window_number == dw->parent_wnd_num) { int parent_button = dw->parent_button; delete dw; return parent_button; } } return -1; } openttd-1.3.3/src/widgets/autoreplace_widget.h0000644000000000000000000000377612246102564020165 0ustar rootroot/* $Id: autoreplace_widget.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file autoreplace_widget.h Types related to the autoreplace widgets. */ #ifndef WIDGETS_AUTOREPLACE_WIDGET_H #define WIDGETS_AUTOREPLACE_WIDGET_H /** Widgets of the #ReplaceVehicleWindow class. */ enum ReplaceVehicleWidgets { WID_RV_CAPTION, ///< Caption of the window. /* Left and right matrix + details. */ WID_RV_LEFT_MATRIX, ///< The matrix on the left. WID_RV_LEFT_SCROLLBAR, ///< The scrollbar for the matrix on the left. WID_RV_RIGHT_MATRIX, ///< The matrix on the right. WID_RV_RIGHT_SCROLLBAR, ///< The scrollbar for the matrix on the right. WID_RV_LEFT_DETAILS, ///< Details of the entry on the left. WID_RV_RIGHT_DETAILS, ///< Details of the entry on the right. /* Button row. */ WID_RV_START_REPLACE, ///< Start Replacing button. WID_RV_INFO_TAB, ///< Info tab. WID_RV_STOP_REPLACE, ///< Stop Replacing button. /* Train only widgets. */ WID_RV_TRAIN_ENGINEWAGON_TOGGLE, ///< Button to toggle engines and/or wagons. WID_RV_TRAIN_FLUFF_LEFT, ///< The fluff on the left. WID_RV_TRAIN_RAILTYPE_DROPDOWN, ///< Dropdown menu about the railtype. WID_RV_TRAIN_FLUFF_RIGHT, ///< The fluff on the right. WID_RV_TRAIN_WAGONREMOVE_TOGGLE, ///< Button to toggle removing wagons. }; #endif /* WIDGETS_AUTOREPLACE_WIDGET_H */ openttd-1.3.3/src/widgets/industry_widget.h0000644000000000000000000000426712246102564017536 0ustar rootroot/* $Id: industry_widget.h 24763 2012-11-25 15:24:02Z alberth $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file industry_widget.h Types related to the industry widgets. */ #ifndef WIDGETS_INDUSTRY_WIDGET_H #define WIDGETS_INDUSTRY_WIDGET_H /** Widgets of the #BuildIndustryWindow class. */ enum DynamicPlaceIndustriesWidgets { WID_DPI_MATRIX_WIDGET, ///< Matrix of the industries. WID_DPI_SCROLLBAR, ///< Scrollbar of the matrix. WID_DPI_INFOPANEL, ///< Info panel about the industry. WID_DPI_DISPLAY_WIDGET, ///< Display chain button. WID_DPI_FUND_WIDGET, ///< Fund button. }; /** Widgets of the #IndustryViewWindow class. */ enum IndustryViewWidgets { WID_IV_CAPTION, ///< Caption of the window. WID_IV_VIEWPORT, ///< Viewport of the industry. WID_IV_INFO, ///< Info of the industry. WID_IV_GOTO, ///< Goto button. WID_IV_DISPLAY, ///< Display chain button. }; /** Widgets of the #IndustryDirectoryWindow class. */ enum IndustryDirectoryWidgets { WID_ID_DROPDOWN_ORDER, ///< Dropdown for the order of the sort. WID_ID_DROPDOWN_CRITERIA, ///< Dropdown for the criteria of the sort. WID_ID_INDUSTRY_LIST, ///< Industry list. WID_ID_SCROLLBAR, ///< Scrollbar of the list. }; /** Widgets of the #IndustryCargoesWindow class */ enum IndustryCargoesWidgets { WID_IC_CAPTION, ///< Caption of the window. WID_IC_NOTIFY, ///< Row of buttons at the bottom. WID_IC_PANEL, ///< Panel that shows the chain. WID_IC_SCROLLBAR, ///< Scrollbar of the panel. WID_IC_CARGO_DROPDOWN, ///< Select cargo dropdown. WID_IC_IND_DROPDOWN, ///< Select industry dropdown. }; #endif /* WIDGETS_INDUSTRY_WIDGET_H */ openttd-1.3.3/src/widgets/misc_widget.h0000644000000000000000000000403112246102564016575 0ustar rootroot/* $Id: misc_widget.h 23932 2012-02-12 10:32:41Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file misc_widget.h Types related to the misc widgets. */ #ifndef WIDGETS_MISC_WIDGET_H #define WIDGETS_MISC_WIDGET_H /** Widgets of the #LandInfoWindow class. */ enum LandInfoWidgets { WID_LI_BACKGROUND, ///< Background of the window. }; /** Widgets of the #TooltipsWindow class. */ enum ToolTipsWidgets { WID_TT_BACKGROUND, ///< Background of the window. }; /** Widgets of the #AboutWindow class. */ enum AboutWidgets { WID_A_SCROLLING_TEXT, ///< The actually scrolling text. WID_A_WEBSITE, ///< URL of OpenTTD website. }; /** Widgets of the #QueryStringWindow class. */ enum QueryStringWidgets { WID_QS_CAPTION, ///< Caption of the window. WID_QS_TEXT, ///< Text of the query. WID_QS_DEFAULT, ///< Default button. WID_QS_CANCEL, ///< Cancel button. WID_QS_OK, ///< OK button. }; /** Widgets of the #QueryWindow class. */ enum QueryWidgets { WID_Q_CAPTION, ///< Caption of the window. WID_Q_TEXT, ///< Text of the query. WID_Q_NO, ///< Yes button. WID_Q_YES, ///< No button. }; /** Widgets of the #TextfileWindow class. */ enum TextfileWidgets { WID_TF_CAPTION, ///< The caption of the window. WID_TF_BACKGROUND, ///< Panel to draw the textfile on. WID_TF_VSCROLLBAR, ///< Vertical scrollbar to scroll through the textfile up-and-down. WID_TF_HSCROLLBAR, ///< Horizontal scrollbar to scroll through the textfile left-to-right. }; #endif /* WIDGETS_MISC_WIDGET_H */ openttd-1.3.3/src/widgets/newgrf_debug_widget.h0000644000000000000000000000345712246102564020313 0ustar rootroot/* $Id: newgrf_debug_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file newgrf_debug_widget.h Types related to the newgrf debug widgets. */ #ifndef WIDGETS_NEWGRF_DEBUG_WIDGET_H #define WIDGETS_NEWGRF_DEBUG_WIDGET_H /** Widgets of the #NewGRFInspectWindow class. */ enum NewGRFInspectWidgets { WID_NGRFI_CAPTION, ///< The caption bar of course. WID_NGRFI_PARENT, ///< Inspect the parent. WID_NGRFI_MAINPANEL, ///< Panel widget containing the actual data. WID_NGRFI_SCROLLBAR, ///< Scrollbar. }; /** Widgets of the #SpriteAlignerWindow class. */ enum SpriteAlignerWidgets { WID_SA_CAPTION, ///< Caption of the window. WID_SA_PREVIOUS, ///< Skip to the previous sprite. WID_SA_GOTO, ///< Go to a given sprite. WID_SA_NEXT, ///< Skip to the next sprite. WID_SA_UP, ///< Move the sprite up. WID_SA_LEFT, ///< Move the sprite to the left. WID_SA_RIGHT, ///< Move the sprite to the right. WID_SA_DOWN, ///< Move the sprite down. WID_SA_SPRITE, ///< The actual sprite. WID_SA_OFFSETS, ///< The sprite offsets. WID_SA_PICKER, ///< Sprite picker. WID_SA_LIST, ///< Queried sprite list. WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. }; #endif /* WIDGETS_NEWGRF_DEBUG_WIDGET_H */ openttd-1.3.3/src/widgets/vehicle_widget.h0000644000000000000000000001053512246102564017267 0ustar rootroot/* $Id: vehicle_widget.h 24997 2013-02-14 17:11:42Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file vehicle_widget.h Types related to the vehicle widgets. */ #ifndef WIDGETS_VEHICLE_WIDGET_H #define WIDGETS_VEHICLE_WIDGET_H /** Widgets of the #VehicleViewWindow class. */ enum VehicleViewWidgets { WID_VV_CAPTION, ///< Caption of window. WID_VV_VIEWPORT, ///< Viewport widget. WID_VV_START_STOP, ///< Start or stop this vehicle, and show information about the current state. WID_VV_CENTER_MAIN_VIEW, ///< Center the main view on this vehicle. WID_VV_GOTO_DEPOT, ///< Order this vehicle to go to the depot. WID_VV_REFIT, ///< Open the refit window. WID_VV_SHOW_ORDERS, ///< Show the orders of this vehicle. WID_VV_SHOW_DETAILS, ///< Show details of this vehicle. WID_VV_CLONE, ///< Clone this vehicle. WID_VV_SELECT_DEPOT_CLONE, ///< Selection widget between 'goto depot', and 'clone vehicle' buttons. WID_VV_SELECT_REFIT_TURN, ///< Selection widget between 'refit' and 'turn around' buttons. WID_VV_TURN_AROUND, ///< Turn this vehicle around. WID_VV_FORCE_PROCEED, ///< Force this vehicle to pass a signal at danger. }; /** Widgets of the #RefitWindow class. */ enum VehicleRefitWidgets { WID_VR_CAPTION, ///< Caption of window. WID_VR_VEHICLE_PANEL_DISPLAY, ///< Display with a representation of the vehicle to refit. WID_VR_SHOW_HSCROLLBAR, ///< Selection widget for the horizontal scrollbar. WID_VR_HSCROLLBAR, ///< Horizontal scrollbar or the vehicle display. WID_VR_SELECT_HEADER, ///< Header with question about the cargo to carry. WID_VR_MATRIX, ///< Options to refit to. WID_VR_SCROLLBAR, ///< Scrollbar for the refit options. WID_VR_INFO, ///< Information about the currently selected refit option. WID_VR_REFIT, ///< Perform the refit. }; /** Widgets of the #VehicleDetailsWindow class. */ enum VehicleDetailsWidgets { WID_VD_CAPTION, ///< Caption of window. WID_VD_RENAME_VEHICLE, ///< Rename this vehicle. WID_VD_TOP_DETAILS, ///< Panel with generic details. WID_VD_INCREASE_SERVICING_INTERVAL, ///< Increase the servicing interval. WID_VD_DECREASE_SERVICING_INTERVAL, ///< Decrease the servicing interval. WID_VD_SERVICE_INTERVAL_DROPDOWN, ///< Dropdown to select default/days/percent service interval. WID_VD_SERVICING_INTERVAL, ///< Information about the servicing interval. WID_VD_MIDDLE_DETAILS, ///< Details for non-trains. WID_VD_MATRIX, ///< List of details for trains. WID_VD_SCROLLBAR, ///< Scrollbar for train details. WID_VD_DETAILS_CARGO_CARRIED, ///< Show carried cargo per part of the train. WID_VD_DETAILS_TRAIN_VEHICLES, ///< Show all parts of the train with their description. WID_VD_DETAILS_CAPACITY_OF_EACH, ///< Show the capacity of all train parts. WID_VD_DETAILS_TOTAL_CARGO, ///< Show the capacity and carried cargo amounts aggregated per cargo of the train. }; /** Widgets of the #VehicleListWindow class. */ enum VehicleListWidgets { WID_VL_CAPTION, ///< Caption of window. WID_VL_SORT_ORDER, ///< Sort order. WID_VL_SORT_BY_PULLDOWN, ///< Sort by dropdown list. WID_VL_LIST, ///< List of the vehicles. WID_VL_SCROLLBAR, ///< Scrollbar for the list. WID_VL_HIDE_BUTTONS, ///< Selection to hide the buttons. WID_VL_AVAILABLE_VEHICLES, ///< Available vehicles. WID_VL_MANAGE_VEHICLES_DROPDOWN, ///< Manage vehicles dropdown list. WID_VL_STOP_ALL, ///< Stop all button. WID_VL_START_ALL, ///< Start all button. }; #endif /* WIDGETS_VEHICLE_WIDGET_H */ openttd-1.3.3/src/widgets/bootstrap_widget.h0000644000000000000000000000236412246102564017666 0ustar rootroot/* $Id: bootstrap_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file bootstrap_widget.h Types related to the bootstrap widgets. */ #ifndef WIDGETS_BOOTSTRAP_WIDGET_H #define WIDGETS_BOOTSTRAP_WIDGET_H /** Widgets of the #BootstrapBackground class. */ enum BootstrapBackgroundWidgets { WID_BB_BACKGROUND, ///< Background of the window. }; /** Widgets of the #BootstrapContentDownloadStatusWindow class. */ enum BootstrapAskForDownloadWidgets { WID_BAFD_QUESTION, ///< The question whether to download. WID_BAFD_YES, ///< An affirmative answer to the question. WID_BAFD_NO, ///< An negative answer to the question. }; #endif /* WIDGETS_BOOTSTRAP_WIDGET_H */ openttd-1.3.3/src/widgets/airport_widget.h0000644000000000000000000000340412246102564017325 0ustar rootroot/* $Id: airport_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file airport_widget.h Types related to the airport widgets. */ #ifndef WIDGETS_AIRPORT_WIDGET_H #define WIDGETS_AIRPORT_WIDGET_H /** Widgets of the #BuildAirToolbarWindow class. */ enum AirportToolbarWidgets { WID_AT_AIRPORT, ///< Build airport button. WID_AT_DEMOLISH, ///< Demolish button. }; /** Widgets of the #BuildAirportWindow class. */ enum AirportPickerWidgets { WID_AP_CLASS_DROPDOWN, ///< Dropdown of airport classes. WID_AP_AIRPORT_LIST, ///< List of airports. WID_AP_SCROLLBAR, ///< Scrollbar of the list. WID_AP_LAYOUT_NUM, ///< Current number of the layout. WID_AP_LAYOUT_DECREASE, ///< Decrease the layout number. WID_AP_LAYOUT_INCREASE, ///< Increase the layout number. WID_AP_AIRPORT_SPRITE, ///< A visual display of the airport currently selected. WID_AP_EXTRA_TEXT, ///< Additional text about the airport. WID_AP_BOTTOMPANEL, ///< Panel at the bottom. WID_AP_COVERAGE_LABEL, ///< Label if you want to see the coverage. WID_AP_BTN_DONTHILIGHT, ///< Don't show the coverage button. WID_AP_BTN_DOHILIGHT, ///< Show the coverage button. }; #endif /* WIDGETS_AIRPORT_WIDGET_H */ openttd-1.3.3/src/widgets/terraform_widget.h0000644000000000000000000000612112246102564017645 0ustar rootroot/* $Id: terraform_widget.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file terraform_widget.h Types related to the terraform widgets. */ #ifndef WIDGETS_TERRAFORM_WIDGET_H #define WIDGETS_TERRAFORM_WIDGET_H /** Widgets of the #TerraformToolbarWindow class. */ enum TerraformToolbarWidgets { WID_TT_SHOW_PLACE_OBJECT, ///< Should the place object button be shown? WID_TT_BUTTONS_START, ///< Start of pushable buttons. WID_TT_LOWER_LAND = WID_TT_BUTTONS_START, ///< Lower land button. WID_TT_RAISE_LAND, ///< Raise land button. WID_TT_LEVEL_LAND, ///< Level land button. WID_TT_DEMOLISH, ///< Demolish aka dynamite button. WID_TT_BUY_LAND, ///< Buy land button. WID_TT_PLANT_TREES, ///< Plant trees button (note: opens separate window, no place-push-button). WID_TT_PLACE_SIGN, ///< Place sign button. WID_TT_PLACE_OBJECT, ///< Place object button. }; /** Widgets of the #ScenarioEditorLandscapeGenerationWindow class. */ enum EditorTerraformToolbarWidgets { WID_ETT_SHOW_PLACE_DESERT, ///< Should the place desert button be shown? WID_ETT_START, ///< Used for iterations. WID_ETT_DOTS = WID_ETT_START, ///< Invisible widget for rendering the terraform size on. WID_ETT_BUTTONS_START, ///< Start of pushable buttons. WID_ETT_DEMOLISH = WID_ETT_BUTTONS_START, ///< Demolish aka dynamite button. WID_ETT_LOWER_LAND, ///< Lower land button. WID_ETT_RAISE_LAND, ///< Raise land button. WID_ETT_LEVEL_LAND, ///< Level land button. WID_ETT_PLACE_ROCKS, ///< Place rocks button. WID_ETT_PLACE_DESERT, ///< Place desert button (in tropical climate). WID_ETT_PLACE_OBJECT, ///< Place transmitter button. WID_ETT_BUTTONS_END, ///< End of pushable buttons. WID_ETT_INCREASE_SIZE = WID_ETT_BUTTONS_END, ///< Upwards arrow button to increase terraforming size. WID_ETT_DECREASE_SIZE, ///< Downwards arrow button to decrease terraforming size. WID_ETT_NEW_SCENARIO, ///< Button for generating a new scenario. WID_ETT_RESET_LANDSCAPE, ///< Button for removing all company-owned property. }; #endif /* WIDGETS_TERRAFORM_WIDGET_H */ openttd-1.3.3/src/widgets/tree_widget.h0000644000000000000000000000321212246102564016601 0ustar rootroot/* $Id: tree_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file tree_widget.h Types related to the tree widgets. */ #ifndef WIDGETS_TREE_WIDGET_H #define WIDGETS_TREE_WIDGET_H /** Widgets of the #BuildTreesWindow class. */ enum BuildTreesWidgets { WID_BT_TYPE_11, ///< Tree 1st column 1st row. WID_BT_TYPE_12, ///< Tree 1st column 2nd row. WID_BT_TYPE_13, ///< Tree 1st column 3rd row. WID_BT_TYPE_14, ///< Tree 1st column 4th row. WID_BT_TYPE_21, ///< Tree 2st column 1st row. WID_BT_TYPE_22, ///< Tree 2st column 2nd row. WID_BT_TYPE_23, ///< Tree 2st column 3rd row. WID_BT_TYPE_24, ///< Tree 2st column 4th row. WID_BT_TYPE_31, ///< Tree 3st column 1st row. WID_BT_TYPE_32, ///< Tree 3st column 2nd row. WID_BT_TYPE_33, ///< Tree 3st column 3rd row. WID_BT_TYPE_34, ///< Tree 3st column 4th row. WID_BT_TYPE_RANDOM, ///< Button to build random type of tree. WID_BT_MANY_RANDOM, ///< Button to build many random trees. }; #endif /* WIDGETS_TREE_WIDGET_H */ openttd-1.3.3/src/widgets/station_widget.h0000644000000000000000000000612712246102564017333 0ustar rootroot/* $Id: station_widget.h 24127 2012-04-17 19:43:18Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file station_widget.h Types related to the station widgets. */ #ifndef WIDGETS_STATION_WIDGET_H #define WIDGETS_STATION_WIDGET_H /** Widgets of the #StationViewWindow class. */ enum StationViewWidgets { WID_SV_CAPTION, ///< Caption of the window. WID_SV_WAITING, ///< List of waiting cargo. WID_SV_SCROLLBAR, ///< Scrollbar. WID_SV_ACCEPT_RATING_LIST, ///< List of accepted cargoes / rating of cargoes. WID_SV_LOCATION, ///< 'Location' button. WID_SV_ACCEPTS_RATINGS, ///< 'Accepts' / 'Ratings' button. WID_SV_RENAME, ///< 'Rename' button. WID_SV_CLOSE_AIRPORT, ///< 'Close airport' button. WID_SV_TRAINS, ///< List of scheduled trains button. WID_SV_ROADVEHS, ///< List of scheduled road vehs button. WID_SV_SHIPS, ///< List of scheduled ships button. WID_SV_PLANES, ///< List of scheduled planes button. }; /** Widgets of the #CompanyStationsWindow class. */ enum StationListWidgets { /* Name starts with ST instead of S, because of collision with SaveLoadWidgets */ WID_STL_CAPTION, ///< Caption of the window. WID_STL_LIST, ///< The main panel, list of stations. WID_STL_SCROLLBAR, ///< Scrollbar next to the main panel. /* Vehicletypes need to be in order of StationFacility due to bit magic */ WID_STL_TRAIN, ///< 'TRAIN' button - list only facilities where is a railroad station. WID_STL_TRUCK, ///< 'TRUCK' button - list only facilities where is a truck stop. WID_STL_BUS, ///< 'BUS' button - list only facilities where is a bus stop. WID_STL_AIRPLANE, ///< 'AIRPLANE' button - list only facilities where is an airport. WID_STL_SHIP, ///< 'SHIP' button - list only facilities where is a dock. WID_STL_FACILALL, ///< 'ALL' button - list all facilities. WID_STL_NOCARGOWAITING, ///< 'NO' button - list stations where no cargo is waiting. WID_STL_CARGOALL, ///< 'ALL' button - list all stations. WID_STL_SORTBY, ///< 'Sort by' button - reverse sort direction. WID_STL_SORTDROPBTN, ///< Dropdown button. WID_STL_CARGOSTART, ///< Widget numbers used for list of cargo types (not present in _company_stations_widgets). }; /** Widgets of the #SelectStationWindow class. */ enum JoinStationWidgets { WID_JS_CAPTION, // Caption of the window. WID_JS_PANEL, // Main panel. WID_JS_SCROLLBAR, // Scrollbar of the panel. }; #endif /* WIDGETS_STATION_WIDGET_H */ openttd-1.3.3/src/widgets/smallmap_widget.h0000644000000000000000000000410412246102564017451 0ustar rootroot/* $Id: smallmap_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file smallmap_widget.h Types related to the smallmap widgets. */ #ifndef WIDGETS_SMALLMAP_WIDGET_H #define WIDGETS_SMALLMAP_WIDGET_H /** Widgets of the #SmallMapWindow class. */ enum SmallMapWidgets { WID_SM_CAPTION, ///< Caption of the window. WID_SM_MAP_BORDER, ///< Border around the smallmap. WID_SM_MAP, ///< Panel containing the smallmap. WID_SM_LEGEND, ///< Bottom panel to display smallmap legends. WID_SM_ZOOM_IN, ///< Button to zoom in one step. WID_SM_ZOOM_OUT, ///< Button to zoom out one step. WID_SM_CONTOUR, ///< Button to select the contour view (height map). WID_SM_VEHICLES, ///< Button to select the vehicles view. WID_SM_INDUSTRIES, ///< Button to select the industries view. WID_SM_ROUTES, ///< Button to select the routes view. WID_SM_VEGETATION, ///< Button to select the vegetation view. WID_SM_OWNERS, ///< Button to select the owners view. WID_SM_CENTERMAP, ///< Button to move smallmap center to main window center. WID_SM_TOGGLETOWNNAME, ///< Toggle button to display town names. WID_SM_SELECT_BUTTONS, ///< Selection widget for the buttons present in some smallmap modes. WID_SM_ENABLE_ALL, ///< Button to enable display of all legend entries. WID_SM_DISABLE_ALL, ///< Button to disable display of all legend entries. WID_SM_SHOW_HEIGHT, ///< Show heightmap toggle button. }; #endif /* WIDGETS_SMALLMAP_WIDGET_H */ openttd-1.3.3/src/widgets/dropdown_type.h0000644000000000000000000000665212246102564017207 0ustar rootroot/* $Id: dropdown_type.h 24308 2012-06-01 10:43:50Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file dropdown_type.h Types related to the drop down widget. */ #ifndef WIDGETS_DROPDOWN_TYPE_H #define WIDGETS_DROPDOWN_TYPE_H #include "../window_type.h" #include "../gfx_func.h" #include "table/strings.h" #include /** * Base list item class from which others are derived. If placed in a list it * will appear as a horizontal line in the menu. */ class DropDownListItem { public: int result; ///< Result code to return to window on selection bool masked; ///< Masked and unselectable item DropDownListItem(int result, bool masked) : result(result), masked(masked) {} virtual ~DropDownListItem() {} virtual bool Selectable() const { return false; } virtual uint Height(uint width) const { return FONT_HEIGHT_NORMAL; } virtual uint Width() const { return 0; } virtual void Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const; }; /** * Common string list item. */ class DropDownListStringItem : public DropDownListItem { public: StringID string; ///< String ID of item DropDownListStringItem(StringID string, int result, bool masked) : DropDownListItem(result, masked), string(string) {} virtual ~DropDownListStringItem() {} virtual bool Selectable() const { return true; } virtual uint Width() const; virtual void Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const; virtual StringID String() const { return this->string; } static bool NatSortFunc(const DropDownListItem *first, const DropDownListItem *second); }; /** * String list item with parameters. */ class DropDownListParamStringItem : public DropDownListStringItem { public: uint64 decode_params[10]; ///< Parameters of the string DropDownListParamStringItem(StringID string, int result, bool masked) : DropDownListStringItem(string, result, masked) {} virtual ~DropDownListParamStringItem() {} virtual StringID String() const; virtual void SetParam(uint index, uint64 value) { decode_params[index] = value; } }; /** * List item containing a C char string. */ class DropDownListCharStringItem : public DropDownListStringItem { public: const char *raw_string; DropDownListCharStringItem(const char *raw_string, int result, bool masked) : DropDownListStringItem(STR_JUST_RAW_STRING, result, masked), raw_string(raw_string) {} virtual ~DropDownListCharStringItem() {} virtual StringID String() const; }; /** * A drop down list is a collection of drop down list items. */ typedef std::list DropDownList; void ShowDropDownListAt(Window *w, DropDownList *list, int selected, int button, Rect wi_rect, Colours wi_colour, bool auto_width = false, bool instant_close = false); void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, uint width = 0, bool auto_width = false, bool instant_close = false); #endif /* WIDGETS_DROPDOWN_TYPE_H */ openttd-1.3.3/src/widgets/music_widget.h0000644000000000000000000000414512246102564016770 0ustar rootroot/* $Id: music_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file music_widget.h Types related to the music widgets. */ #ifndef WIDGETS_MUSIC_WIDGET_H #define WIDGETS_MUSIC_WIDGET_H /** Widgets of the #MusicTrackSelectionWindow class. */ enum MusicTrackSelectionWidgets { WID_MTS_LIST_LEFT, ///< Left button. WID_MTS_PLAYLIST, ///< Playlist. WID_MTS_LIST_RIGHT, ///< Right button. WID_MTS_ALL, ///< All button. WID_MTS_OLD, ///< Old button. WID_MTS_NEW, ///< New button. WID_MTS_EZY, ///< Ezy button. WID_MTS_CUSTOM1, ///< Custom1 button. WID_MTS_CUSTOM2, ///< Custom2 button. WID_MTS_CLEAR, ///< Clear button. }; /** Widgets of the #MusicWindow class. */ enum MusicWidgets { WID_M_PREV, ///< Previous button. WID_M_NEXT, ///< Next button. WID_M_STOP, ///< Stop button. WID_M_PLAY, ///< Play button. WID_M_SLIDERS, ///< Sliders. WID_M_MUSIC_VOL, ///< Music volume. WID_M_EFFECT_VOL, ///< Effect volume. WID_M_BACKGROUND, ///< Background of the window. WID_M_TRACK, ///< Track playing. WID_M_TRACK_NR, ///< Track number. WID_M_TRACK_TITLE, ///< Track title. WID_M_TRACK_NAME, ///< Track name. WID_M_SHUFFLE, ///< Shuffle button. WID_M_PROGRAMME, ///< Program button. WID_M_ALL, ///< All button. WID_M_OLD, ///< Old button. WID_M_NEW, ///< New button. WID_M_EZY, ///< Ezy button. WID_M_CUSTOM1, ///< Custom1 button. WID_M_CUSTOM2, ///< Custom2 button. }; #endif /* WIDGETS_MUSIC_WIDGET_H */ openttd-1.3.3/src/widgets/bridge_widget.h0000644000000000000000000000224412246102564017102 0ustar rootroot/* $Id: bridge_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file bridge_widget.h Types related to the bridge widgets. */ #ifndef WIDGETS_BRIDGE_WIDGET_H #define WIDGETS_BRIDGE_WIDGET_H /** Widgets of the #BuildBridgeWindow class. */ enum BuildBridgeSelectionWidgets { WID_BBS_CAPTION, ///< Caption of the window. WID_BBS_DROPDOWN_ORDER, ///< Direction of sort dropdown. WID_BBS_DROPDOWN_CRITERIA, ///< Criteria of sort dropdown. WID_BBS_BRIDGE_LIST, ///< List of bridges. WID_BBS_SCROLLBAR, ///< Scrollbar of the list. }; #endif /* WIDGETS_BRIDGE_WIDGET_H */ openttd-1.3.3/src/widgets/ai_widget.h0000644000000000000000000000666312246102564016250 0ustar rootroot/* $Id: ai_widget.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file ai_widget.h Types related to the ai widgets. */ #ifndef WIDGETS_AI_WIDGET_H #define WIDGETS_AI_WIDGET_H #include "../company_type.h" #include "../textfile_type.h" /** Widgets of the #AIListWindow class. */ enum AIListWidgets { WID_AIL_CAPTION, ///< Caption of the window. WID_AIL_LIST, ///< The matrix with all available AIs. WID_AIL_SCROLLBAR, ///< Scrollbar next to the AI list. WID_AIL_INFO_BG, ///< Panel to draw some AI information on. WID_AIL_ACCEPT, ///< Accept button. WID_AIL_CANCEL, ///< Cancel button. }; /** Widgets of the #AISettingsWindow class. */ enum AISettingsWidgets { WID_AIS_CAPTION, ///< Caption of the window. WID_AIS_BACKGROUND, ///< Panel to draw the settings on. WID_AIS_SCROLLBAR, ///< Scrollbar to scroll through all settings. WID_AIS_ACCEPT, ///< Accept button. WID_AIS_RESET, ///< Reset button. }; /** Widgets of the #AIConfigWindow class. */ enum AIConfigWidgets { WID_AIC_BACKGROUND, ///< Window background. WID_AIC_DECREASE, ///< Decrease the number of AIs. WID_AIC_INCREASE, ///< Increase the number of AIs. WID_AIC_NUMBER, ///< Number of AIs. WID_AIC_GAMELIST, ///< List with current selected GameScript. WID_AIC_LIST, ///< List with currently selected AIs. WID_AIC_SCROLLBAR, ///< Scrollbar to scroll through the selected AIs. WID_AIC_MOVE_UP, ///< Move up button. WID_AIC_MOVE_DOWN, ///< Move down button. WID_AIC_CHANGE, ///< Select another AI button. WID_AIC_CONFIGURE, ///< Change AI settings button. WID_AIC_CLOSE, ///< Close window button. WID_AIC_TEXTFILE, ///< Open AI readme, changelog (+1) or license (+2). WID_AIC_CONTENT_DOWNLOAD = WID_AIC_TEXTFILE + TFT_END, ///< Download content button. }; /** Widgets of the #AIDebugWindow class. */ enum AIDebugWidgets { WID_AID_VIEW, ///< The row of company buttons. WID_AID_NAME_TEXT, ///< Name of the current selected. WID_AID_SETTINGS, ///< Settings button. WID_AID_SCRIPT_GAME, ///< Game Script button. WID_AID_RELOAD_TOGGLE, ///< Reload button. WID_AID_LOG_PANEL, ///< Panel where the log is in. WID_AID_SCROLLBAR, ///< Scrollbar of the log panel. WID_AID_COMPANY_BUTTON_START, ///< Buttons in the VIEW. WID_AID_COMPANY_BUTTON_END = WID_AID_COMPANY_BUTTON_START + MAX_COMPANIES - 1, ///< Last possible button in the VIEW. WID_AID_BREAK_STRING_WIDGETS, ///< The panel to handle the breaking on string. WID_AID_BREAK_STR_ON_OFF_BTN, ///< Enable breaking on string. WID_AID_BREAK_STR_EDIT_BOX, ///< Edit box for the string to break on. WID_AID_MATCH_CASE_BTN, ///< Checkbox to use match caching or not. WID_AID_CONTINUE_BTN, ///< Continue button. }; #endif /* WIDGETS_AI_WIDGET_H */ openttd-1.3.3/src/widgets/fios_widget.h0000644000000000000000000000406112246102564016605 0ustar rootroot/* $Id: fios_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fios_widget.h Types related to the fios widgets. */ #ifndef WIDGETS_FIOS_WIDGET_H #define WIDGETS_FIOS_WIDGET_H /** Widgets of the #SaveLoadWindow class. */ enum SaveLoadWidgets { WID_SL_CAPTION, ///< Caption of the window. WID_SL_SORT_BYNAME, ///< Sort by name button. WID_SL_SORT_BYDATE, ///< Sort by date button. WID_SL_BACKGROUND, ///< Background of window. WID_SL_FILE_BACKGROUND, ///< Background of file selection. WID_SL_HOME_BUTTON, ///< Home button. WID_SL_DRIVES_DIRECTORIES_LIST, ///< Drives list. WID_SL_SCROLLBAR, ///< Scrollbar of the file list. WID_SL_CONTENT_DOWNLOAD, ///< Content download button, only available for play scenario/heightmap. WID_SL_SAVE_OSK_TITLE, ///< Title textbox, only available for save operations. WID_SL_DELETE_SELECTION, ///< Delete button, only available for save operations. WID_SL_SAVE_GAME, ///< Save button, only available for save operations. WID_SL_CONTENT_DOWNLOAD_SEL, ///< Selection 'stack' to 'hide' the content download. WID_SL_DETAILS, ///< Panel with game details. WID_SL_NEWGRF_INFO, ///< Button to open NewGgrf configuration. WID_SL_LOAD_BUTTON, ///< Button to load game/scenario. WID_SL_MISSING_NEWGRFS, ///< Button to find missing NewGRFs online. }; #endif /* WIDGETS_FIOS_WIDGET_H */ openttd-1.3.3/src/widgets/network_content_widget.h0000644000000000000000000000435012246102564021071 0ustar rootroot/* $Id: network_content_widget.h 25028 2013-02-19 19:46:46Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file network_content_widget.h Types related to the network content widgets. */ #ifndef WIDGETS_NETWORK_CONTENT_WIDGET_H #define WIDGETS_NETWORK_CONTENT_WIDGET_H #include "../textfile_type.h" /** Widgets of the #NetworkContentDownloadStatusWindow class. */ enum NetworkContentDownloadStatusWidgets { WID_NCDS_BACKGROUND, ///< Background of the window. WID_NCDS_CANCELOK, ///< (Optional) Cancel/OK button. }; /** Widgets of the #NetworkContentListWindow class. */ enum NetworkContentListWidgets { WID_NCL_BACKGROUND, ///< Resize button. WID_NCL_FILTER_CAPT, ///< Caption for the filter editbox. WID_NCL_FILTER, ///< Filter editbox. WID_NCL_CHECKBOX, ///< Button above checkboxes. WID_NCL_TYPE, ///< 'Type' button. WID_NCL_NAME, ///< 'Name' button. WID_NCL_MATRIX, ///< Panel with list of content. WID_NCL_SCROLLBAR, ///< Scrollbar of matrix. WID_NCL_DETAILS, ///< Panel with content details. WID_NCL_TEXTFILE, ///< Open readme, changelog (+1) or license (+2) of a file in the content window. WID_NCL_SELECT_ALL = WID_NCL_TEXTFILE + TFT_END, ///< 'Select all' button. WID_NCL_SELECT_UPDATE, ///< 'Select updates' button. WID_NCL_UNSELECT, ///< 'Unselect all' button. WID_NCL_OPEN_URL, ///< 'Open url' button. WID_NCL_CANCEL, ///< 'Cancel' button. WID_NCL_DOWNLOAD, ///< 'Download' button. WID_NCL_SEL_ALL_UPDATE, ///< #NWID_SELECTION widget for select all/update buttons.. WID_NCL_SEARCH_EXTERNAL, ///< Search external sites for missing NewGRF. }; #endif /* WIDGETS_NETWORK_CONTENT_WIDGET_H */ openttd-1.3.3/src/widgets/order_widget.h0000644000000000000000000000536412246102564016767 0ustar rootroot/* $Id: order_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file order_widget.h Types related to the order widgets. */ #ifndef WIDGETS_ORDER_WIDGET_H #define WIDGETS_ORDER_WIDGET_H /** Widgets of the #OrdersWindow class. */ enum OrderWidgets { WID_O_CAPTION, ///< Caption of the window. WID_O_TIMETABLE_VIEW, ///< Toggle timetable view. WID_O_ORDER_LIST, ///< Order list panel. WID_O_SCROLLBAR, ///< Order list scrollbar. WID_O_SKIP, ///< Skip current order. WID_O_DELETE, ///< Delete selected order. WID_O_STOP_SHARING, ///< Stop sharing orders. WID_O_NON_STOP, ///< Goto non-stop to destination. WID_O_GOTO, ///< Goto destination. WID_O_FULL_LOAD, ///< Select full load. WID_O_UNLOAD, ///< Select unload. WID_O_REFIT, ///< Select refit. WID_O_SERVICE, ///< Select service (at depot). WID_O_EMPTY, ///< Placeholder for refit dropdown when not owner. WID_O_REFIT_DROPDOWN, ///< Open refit options. WID_O_COND_VARIABLE, ///< Choose condition variable. WID_O_COND_COMPARATOR, ///< Choose condition type. WID_O_COND_VALUE, ///< Choose condition value. WID_O_SEL_TOP_LEFT, ///< #NWID_SELECTION widget for left part of the top row of the 'your train' order window. WID_O_SEL_TOP_MIDDLE, ///< #NWID_SELECTION widget for middle part of the top row of the 'your train' order window. WID_O_SEL_TOP_RIGHT, ///< #NWID_SELECTION widget for right part of the top row of the 'your train' order window. WID_O_SEL_TOP_ROW_GROUNDVEHICLE, ///< #NWID_SELECTION widget for the top row of the 'your train' order window. WID_O_SEL_TOP_ROW, ///< #NWID_SELECTION widget for the top row of the 'your non-trains' order window. WID_O_SEL_BOTTOM_MIDDLE, ///< #NWID_SELECTION widget for the middle part of the bottom row of the 'your train' order window. WID_O_SHARED_ORDER_LIST, ///< Open list of shared vehicles. }; #endif /* WIDGETS_ORDER_WIDGET_H */ openttd-1.3.3/src/widgets/engine_widget.h0000644000000000000000000000200012246102564017101 0ustar rootroot/* $Id: engine_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file engine_widget.h Types related to the engine widgets. */ #ifndef WIDGETS_ENGINE_WIDGET_H #define WIDGETS_ENGINE_WIDGET_H /** Widgets of the #EnginePreviewWindow class. */ enum EnginePreviewWidgets { WID_EP_QUESTION, ///< The container for the question. WID_EP_NO, ///< No button. WID_EP_YES, ///< Yes button. }; #endif /* WIDGETS_ENGINE_WIDGET_H */ openttd-1.3.3/src/widgets/viewport_widget.h0000644000000000000000000000231412246102564017523 0ustar rootroot/* $Id: viewport_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file viewport_widget.h Types related to the viewport widgets. */ #ifndef WIDGETS_VIEWPORT_WIDGET_H #define WIDGETS_VIEWPORT_WIDGET_H /** Widgets of the #ExtraViewportWindow class. */ enum ExtraViewportWidgets { WID_EV_CAPTION, ///< Caption of window. WID_EV_VIEWPORT, ///< The viewport. WID_EV_ZOOM_IN, ///< Zoom in. WID_EV_ZOOM_OUT, ///< Zoom out. WID_EV_MAIN_TO_VIEW, ///< Center the view of this viewport on the main view. WID_EV_VIEW_TO_MAIN, ///< Center the main view on the view of this viewport. }; #endif /* WIDGETS_VIEWPORT_WIDGET_H */ openttd-1.3.3/src/widgets/statusbar_widget.h0000644000000000000000000000214112246102564017652 0ustar rootroot/* $Id: statusbar_widget.h 24663 2012-11-05 19:45:45Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file statusbar_widget.h Types related to the statusbar widgets. */ #ifndef WIDGETS_STATUSBAR_WIDGET_H #define WIDGETS_STATUSBAR_WIDGET_H /** Widgets of the #StatusBarWindow class. */ enum StatusbarWidgets { WID_S_LEFT, ///< Left part of the statusbar; date is shown there. WID_S_MIDDLE, ///< Middle part; current news or company name or *** SAVING *** or *** PAUSED ***. WID_S_RIGHT, ///< Right part; bank balance. }; #endif /* WIDGETS_STATUSBAR_WIDGET_H */ openttd-1.3.3/src/widgets/dropdown_widget.h0000644000000000000000000000205112246102564017476 0ustar rootroot/* $Id: dropdown_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file dropdown_widget.h Types related to the dropdown widgets. */ #ifndef WIDGETS_DROPDOWN_WIDGET_H #define WIDGETS_DROPDOWN_WIDGET_H /** Widgets of the #DropdownWindow class. */ enum DropdownMenuWidgets { WID_DM_ITEMS, ///< Panel showing the dropdown items. WID_DM_SHOW_SCROLL, ///< Hide scrollbar if too few items. WID_DM_SCROLL, ///< Scrollbar. }; #endif /* WIDGETS_DROPDOWN_WIDGET_H */ openttd-1.3.3/src/widgets/depot_widget.h0000644000000000000000000000331212246102564016756 0ustar rootroot/* $Id: depot_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot_widget.h Types related to the depot widgets. */ #ifndef WIDGETS_DEPOT_WIDGET_H #define WIDGETS_DEPOT_WIDGET_H /** Widgets of the #DepotWindow class. */ enum DepotWidgets { WID_D_CAPTION, ///< Caption of window. WID_D_SELL, ///< Sell button. WID_D_SHOW_SELL_CHAIN, ///< Show sell chain panel. WID_D_SELL_CHAIN, ///< Sell chain button. WID_D_SELL_ALL, ///< Sell all button. WID_D_AUTOREPLACE, ///< Autoreplace button. WID_D_MATRIX, ///< Matrix of vehicles. WID_D_V_SCROLL, ///< Vertical scrollbar. WID_D_SHOW_H_SCROLL, ///< Show horizontal scrollbar panel. WID_D_H_SCROLL, ///< Horizontal scrollbar. WID_D_BUILD, ///< Build button. WID_D_CLONE, ///< Clone button. WID_D_LOCATION, ///< Location button. WID_D_SHOW_RENAME, ///< Show rename panel. WID_D_RENAME, ///< Rename button. WID_D_VEHICLE_LIST, ///< List of vehicles. WID_D_STOP_ALL, ///< Stop all button. WID_D_START_ALL, ///< Start all button. }; #endif /* WIDGETS_DEPOT_WIDGET_H */ openttd-1.3.3/src/widgets/dropdown_func.h0000644000000000000000000000216012246102564017147 0ustar rootroot/* $Id: dropdown_func.h 18809 2010-01-15 16:41:15Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file dropdown_func.h Functions related to the drop down widget. */ #ifndef WIDGETS_DROPDOWN_FUNC_H #define WIDGETS_DROPDOWN_FUNC_H #include "../window_gui.h" /* Show drop down menu containing a fixed list of strings */ void ShowDropDownMenu(Window *w, const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask, uint width = 0); /* Hide drop down menu of a parent window */ int HideDropDownMenu(Window *pw); #endif /* WIDGETS_DROPDOWN_FUNC_H */ openttd-1.3.3/src/widgets/network_chat_widget.h0000644000000000000000000000216112246102564020334 0ustar rootroot/* $Id: network_chat_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file network_chat_widget.h Types related to the network chat widgets. */ #ifndef WIDGETS_NETWORK_CHAT_WIDGET_H #define WIDGETS_NETWORK_CHAT_WIDGET_H /** Widgets of the #NetworkChatWindow class. */ enum NetWorkChatWidgets { WID_NC_CLOSE, ///< Close button. WID_NC_BACKGROUND, ///< Background of the window. WID_NC_DESTINATION, ///< Destination. WID_NC_TEXTBOX, ///< Textbox. WID_NC_SENDBUTTON, ///< Send button. }; #endif /* WIDGETS_NETWORK_CHAT_WIDGET_H */ openttd-1.3.3/src/widgets/road_widget.h0000644000000000000000000000526712246102564016603 0ustar rootroot/* $Id: road_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_widget.h Types related to the road widgets. */ #ifndef WIDGETS_ROAD_WIDGET_H #define WIDGETS_ROAD_WIDGET_H /** Widgets of the #BuildRoadToolbarWindow class. */ enum RoadToolbarWidgets { /* Name starts with RO instead of R, because of collision with RailToolbarWidgets */ WID_ROT_ROAD_X, ///< Build road in x-direction. WID_ROT_ROAD_Y, ///< Build road in y-direction. WID_ROT_AUTOROAD, ///< Autorail. WID_ROT_DEMOLISH, ///< Demolish. WID_ROT_DEPOT, ///< Build depot. WID_ROT_BUS_STATION, ///< Build bus station. WID_ROT_TRUCK_STATION, ///< Build truck station. WID_ROT_ONE_WAY, ///< Build one-way road. WID_ROT_BUILD_BRIDGE, ///< Build bridge. WID_ROT_BUILD_TUNNEL, ///< Build tunnel. WID_ROT_REMOVE, ///< Remove road. }; /** Widgets of the #BuildRoadDepotWindow class. */ enum BuildRoadDepotWidgets { /* Name starts with BRO instead of BR, because of collision with BuildRailDepotWidgets */ WID_BROD_CAPTION, ///< Caption of the window. WID_BROD_DEPOT_NE, ///< Depot with NE entry. WID_BROD_DEPOT_SE, ///< Depot with SE entry. WID_BROD_DEPOT_SW, ///< Depot with SW entry. WID_BROD_DEPOT_NW, ///< Depot with NW entry. }; /** Widgets of the #BuildRoadStationWindow class. */ enum BuildRoadStationWidgets { /* Name starts with BRO instead of BR, because of collision with BuildRailStationWidgets */ WID_BROS_CAPTION, ///< Caption of the window. WID_BROS_BACKGROUND, ///< Background of the window. WID_BROS_STATION_NE, ///< Terminal station with NE entry. WID_BROS_STATION_SE, ///< Terminal station with SE entry. WID_BROS_STATION_SW, ///< Terminal station with SW entry. WID_BROS_STATION_NW, ///< Terminal station with NW entry. WID_BROS_STATION_X, ///< Drive-through station in x-direction. WID_BROS_STATION_Y, ///< Drive-through station in y-direction. WID_BROS_LT_OFF, ///< Turn off area highlight. WID_BROS_LT_ON, ///< Turn on area highlight. WID_BROS_INFO, ///< Station acceptance info. }; #endif /* WIDGETS_ROAD_WIDGET_H */ openttd-1.3.3/src/widgets/waypoint_widget.h0000644000000000000000000000224612246102564017522 0ustar rootroot/* $Id: waypoint_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file waypoint_widget.h Types related to the waypoint widgets. */ #ifndef WIDGETS_WAYPOINT_WIDGET_H #define WIDGETS_WAYPOINT_WIDGET_H /** Widgets of the #WaypointWindow class. */ enum WaypointWidgets { WID_W_CAPTION, ///< Caption of window. WID_W_VIEWPORT, ///< The viewport on this waypoint. WID_W_CENTER_VIEW, ///< Center the main view on this waypoint. WID_W_RENAME, ///< Rename this waypoint. WID_W_SHOW_VEHICLES, ///< Show the vehicles visiting this waypoint. }; #endif /* WIDGETS_WAYPOINT_WIDGET_H */ openttd-1.3.3/src/widgets/intro_widget.h0000644000000000000000000000372412246102564017005 0ustar rootroot/* $Id: intro_widget.h 24791 2012-12-05 19:37:15Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file intro_widget.h Types related to the intro widgets. */ #ifndef WIDGETS_INTRO_WIDGET_H #define WIDGETS_INTRO_WIDGET_H /** Widgets of the #SelectGameWindow class. */ enum SelectGameIntroWidgets { WID_SGI_GENERATE_GAME, ///< Generate game button. WID_SGI_LOAD_GAME, ///< Load game button. WID_SGI_PLAY_SCENARIO, ///< Play scenario button. WID_SGI_PLAY_HEIGHTMAP, ///< Play heightmap button. WID_SGI_EDIT_SCENARIO, ///< Edit scenario button. WID_SGI_PLAY_NETWORK, ///< Play network button. WID_SGI_TEMPERATE_LANDSCAPE, ///< Select temperate landscape button. WID_SGI_ARCTIC_LANDSCAPE, ///< Select arctic landscape button. WID_SGI_TROPIC_LANDSCAPE, ///< Select tropic landscape button. WID_SGI_TOYLAND_LANDSCAPE, ///< Select toyland landscape button. WID_SGI_TRANSLATION_SELECTION, ///< Translation selection. WID_SGI_TRANSLATION, ///< Translation. WID_SGI_OPTIONS, ///< Options button. WID_SGI_HIGHSCORE, ///< Highscore button. WID_SGI_SETTINGS_OPTIONS, ///< Settings button. WID_SGI_GRF_SETTINGS, ///< NewGRF button. WID_SGI_CONTENT_DOWNLOAD, ///< Content Download button. WID_SGI_AI_SETTINGS, ///< AI button. WID_SGI_EXIT, ///< Exit button. }; #endif /* WIDGETS_INTRO_WIDGET_H */ openttd-1.3.3/src/widgets/transparency_widget.h0000644000000000000000000000361412246102564020361 0ustar rootroot/* $Id: transparency_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file transparency_widget.h Types related to the transparency widgets. */ #ifndef WIDGETS_TRANSPARENCY_WIDGET_H #define WIDGETS_TRANSPARENCY_WIDGET_H /** Widgets of the #TransparenciesWindow class. */ enum TransparencyToolbarWidgets { /* Button row. */ WID_TT_BEGIN, ///< First toggle button. WID_TT_SIGNS = WID_TT_BEGIN, ///< Signs background transparency toggle button. WID_TT_TREES, ///< Trees transparency toggle button. WID_TT_HOUSES, ///< Houses transparency toggle button. WID_TT_INDUSTRIES, ///< industries transparency toggle button. WID_TT_BUILDINGS, ///< Company buildings and structures transparency toggle button. WID_TT_BRIDGES, ///< Bridges transparency toggle button. WID_TT_STRUCTURES, ///< Object structure transparency toggle button. WID_TT_CATENARY, ///< Catenary transparency toggle button. WID_TT_LOADING, ///< Loading indicators transparency toggle button. WID_TT_END, ///< End of toggle buttons. /* Panel with buttons for invisibility */ WID_TT_BUTTONS, ///< Panel with 'invisibility' buttons. }; #endif /* WIDGETS_TRANSPARENCY_WIDGET_H */ openttd-1.3.3/src/widgets/osk_widget.h0000644000000000000000000000411212246102564016436 0ustar rootroot/* $Id: osk_widget.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file osk_widget.h Types related to the osk widgets. */ #ifndef WIDGETS_OSK_WIDGET_H #define WIDGETS_OSK_WIDGET_H /** Widgets of the #OskWindow class. */ enum OnScreenKeyboardWidgets { WID_OSK_CAPTION, ///< Caption of window. WID_OSK_TEXT, ///< Edit box. WID_OSK_CANCEL, ///< Cancel key. WID_OSK_OK, ///< Ok key. WID_OSK_BACKSPACE, ///< Backspace key. WID_OSK_SPECIAL, ///< Special key (at keyboards often used for tab key). WID_OSK_CAPS, ///< Capslock key. WID_OSK_SHIFT, ///< Shift(lock) key. WID_OSK_SPACE, ///< Space bar. WID_OSK_LEFT, ///< Cursor left key. WID_OSK_RIGHT, ///< Cursor right key. WID_OSK_LETTERS, ///< First widget of the 'normal' keys. WID_OSK_NUMBERS_FIRST = WID_OSK_LETTERS, ///< First widget of the numbers row. WID_OSK_NUMBERS_LAST = WID_OSK_NUMBERS_FIRST + 13, ///< Last widget of the numbers row. WID_OSK_QWERTY_FIRST, ///< First widget of the qwerty row. WID_OSK_QWERTY_LAST = WID_OSK_QWERTY_FIRST + 11, ///< Last widget of the qwerty row. WID_OSK_ASDFG_FIRST, ///< First widget of the asdfg row. WID_OSK_ASDFG_LAST = WID_OSK_ASDFG_FIRST + 11, ///< Last widget of the asdfg row. WID_OSK_ZXCVB_FIRST, ///< First widget of the zxcvb row. WID_OSK_ZXCVB_LAST = WID_OSK_ZXCVB_FIRST + 11, ///< Last widget of the zxcvb row. }; #endif /* WIDGETS_OSK_WIDGET_H */ openttd-1.3.3/src/widgets/settings_widget.h0000644000000000000000000000752712246102564017517 0ustar rootroot/* $Id: settings_widget.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file settings_widget.h Types related to the settings widgets. */ #ifndef WIDGETS_SETTINGS_WIDGET_H #define WIDGETS_SETTINGS_WIDGET_H /** Widgets of the #GameOptionsWindow class. */ enum GameOptionsWidgets { WID_GO_BACKGROUND, ///< Background of the window. WID_GO_CURRENCY_DROPDOWN, ///< Currency dropdown. WID_GO_DISTANCE_DROPDOWN, ///< Measuring unit dropdown. WID_GO_ROADSIDE_DROPDOWN, ///< Dropdown to select the road side (to set the right side ;)). WID_GO_TOWNNAME_DROPDOWN, ///< Town name dropdown. WID_GO_AUTOSAVE_DROPDOWN, ///< Dropdown to say how often to autosave. WID_GO_LANG_DROPDOWN, ///< Language dropdown. WID_GO_RESOLUTION_DROPDOWN, ///< Dropdown for the resolution. WID_GO_FULLSCREEN_BUTTON, ///< Toggle fullscreen. WID_GO_SCREENSHOT_DROPDOWN, ///< Select the screenshot type... please use PNG!. WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF. WID_GO_BASE_GRF_STATUS, ///< Info about missing files etc. WID_GO_BASE_GRF_TEXTFILE, ///< Open base GRF readme, changelog (+1) or license (+2). WID_GO_BASE_GRF_DESCRIPTION = WID_GO_BASE_GRF_TEXTFILE + TFT_END, ///< Description of selected base GRF. WID_GO_BASE_SFX_DROPDOWN, ///< Use to select a base SFX. WID_GO_BASE_SFX_TEXTFILE, ///< Open base SFX readme, changelog (+1) or license (+2). WID_GO_BASE_SFX_DESCRIPTION = WID_GO_BASE_SFX_TEXTFILE + TFT_END, ///< Description of selected base SFX. WID_GO_BASE_MUSIC_DROPDOWN, ///< Use to select a base music set. WID_GO_BASE_MUSIC_STATUS, ///< Info about corrupted files etc. WID_GO_BASE_MUSIC_TEXTFILE, ///< Open base music readme, changelog (+1) or license (+2). WID_GO_BASE_MUSIC_DESCRIPTION = WID_GO_BASE_MUSIC_TEXTFILE + TFT_END, ///< Description of selected base music set. }; /** Widgets of the #GameSettingsWindow class. */ enum GameSettingsWidgets { WID_GS_FILTER, ///< Text filter. WID_GS_OPTIONSPANEL, ///< Panel widget containing the option lists. WID_GS_SCROLLBAR, ///< Scrollbar. WID_GS_HELP_TEXT, ///< Information area to display help text of the selected option. WID_GS_EXPAND_ALL, ///< Expand all button. WID_GS_COLLAPSE_ALL, ///< Collapse all button. WID_GS_RESTRICT_LABEL, ///< Label upfront to drop down box to restrict the list of settings to show WID_GS_RESTRICT_DROPDOWN, ///< The drop down box to restrict the list of settings WID_GS_TYPE_DROPDOWN, ///< The drop down box to choose client/game/company/all settings }; /** Widgets of the #CustomCurrencyWindow class. */ enum CustomCurrencyWidgets { WID_CC_RATE_DOWN, ///< Down button. WID_CC_RATE_UP, ///< Up button. WID_CC_RATE, ///< Rate of currency. WID_CC_SEPARATOR_EDIT, ///< Separator edit button. WID_CC_SEPARATOR, ///< Current separator. WID_CC_PREFIX_EDIT, ///< Prefix edit button. WID_CC_PREFIX, ///< Current prefix. WID_CC_SUFFIX_EDIT, ///< Suffix edit button. WID_CC_SUFFIX, ///< Current suffix. WID_CC_YEAR_DOWN, ///< Down button. WID_CC_YEAR_UP, ///< Up button. WID_CC_YEAR, ///< Year of introduction. WID_CC_PREVIEW, ///< Preview. }; #endif /* WIDGETS_SETTINGS_WIDGET_H */ openttd-1.3.3/src/widgets/subsidy_widget.h0000644000000000000000000000206612246102564017332 0ustar rootroot/* $Id: subsidy_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file subsidy_widget.h Types related to the subsidy widgets. */ #ifndef WIDGETS_SUBSIDY_WIDGET_H #define WIDGETS_SUBSIDY_WIDGET_H /** Widgets of the #SubsidyListWindow class. */ enum SubsidyListWidgets { /* Name starts with SU instead of S, because of collision with SaveLoadWidgets. */ WID_SUL_PANEL, ///< Main panel of window. WID_SUL_SCROLLBAR, ///< Scrollbar of panel. }; #endif /* WIDGETS_SUBSIDY_WIDGET_H */ openttd-1.3.3/src/widgets/town_widget.h0000644000000000000000000000617212246102564016641 0ustar rootroot/* $Id: town_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file town_widget.h Types related to the town widgets. */ #ifndef WIDGETS_TOWN_WIDGET_H #define WIDGETS_TOWN_WIDGET_H /** Widgets of the #TownDirectoryWindow class. */ enum TownDirectoryWidgets { WID_TD_SORT_NAME, ///< Sort by town name. WID_TD_SORT_POPULATION, ///< Sort by town population. WID_TD_LIST, ///< List of towns. WID_TD_SCROLLBAR, ///< Scrollbar for the town list. WID_TD_WORLD_POPULATION, ///< The world's population. }; /** Widgets of the #TownAuthorityWindow class. */ enum TownAuthorityWidgets { WID_TA_CAPTION, ///< Caption of window. WID_TA_RATING_INFO, ///< Overview with ratings for each company. WID_TA_COMMAND_LIST, ///< List of commands for the player. WID_TA_SCROLLBAR, ///< Scrollbar of the list of commands. WID_TA_ACTION_INFO, ///< Additional information about the action. WID_TA_EXECUTE, ///< Do-it button. }; /** Widgets of the #TownViewWindow class. */ enum TownViewWidgets { WID_TV_CAPTION, ///< Caption of window. WID_TV_VIEWPORT, ///< View of the center of the town. WID_TV_INFO, ///< General information about the town. WID_TV_CENTER_VIEW, ///< Center the main view on this town. WID_TV_SHOW_AUTHORITY, ///< Show the town authority window. WID_TV_CHANGE_NAME, ///< Change the name of this town. WID_TV_EXPAND, ///< Expand this town (scenario editor only). WID_TV_DELETE, ///< Delete this town (scenario editor only). }; /** Widgets of the #FoundTownWindow class. */ enum TownFoundingWidgets { WID_TF_NEW_TOWN, ///< Create a new town. WID_TF_RANDOM_TOWN, ///< Randomly place a town. WID_TF_MANY_RANDOM_TOWNS, ///< Randomly place many towns. WID_TF_TOWN_NAME_EDITBOX, ///< Editor for the town name. WID_TF_TOWN_NAME_RANDOM, ///< Generate a random town name. WID_TF_SIZE_SMALL, ///< Selection for a small town. WID_TF_SIZE_MEDIUM, ///< Selection for a medium town. WID_TF_SIZE_LARGE, ///< Selection for a large town. WID_TF_SIZE_RANDOM, ///< Selection for a randomly sized town. WID_TF_CITY, ///< Selection for the town's city state. WID_TF_LAYOUT_ORIGINAL, ///< Selection for the original town layout. WID_TF_LAYOUT_BETTER, ///< Selection for the better town layout. WID_TF_LAYOUT_GRID2, ///< Selection for the 2x2 grid town layout. WID_TF_LAYOUT_GRID3, ///< Selection for the 3x3 grid town layout. WID_TF_LAYOUT_RANDOM, ///< Selection for a randomly chosen town layout. }; #endif /* WIDGETS_TOWN_WIDGET_H */ openttd-1.3.3/src/widgets/main_widget.h0000644000000000000000000000162212246102564016571 0ustar rootroot/* $Id: main_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file main_widget.h Types related to the main widgets. */ #ifndef WIDGETS_MAIN_WIDGET_H #define WIDGETS_MAIN_WIDGET_H /** Widgets of the #MainWindow class. */ enum MainWidgets { WID_M_VIEWPORT, ///< Main window viewport. }; #endif /* WIDGETS_MAIN_WIDGET_H */ openttd-1.3.3/src/widgets/company_widget.h0000644000000000000000000002270412246102564017317 0ustar rootroot/* $Id: company_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file company_widget.h Types related to the company widgets. */ #ifndef WIDGETS_COMPANY_WIDGET_H #define WIDGETS_COMPANY_WIDGET_H /** Widgets of the #CompanyWindow class. */ enum CompanyWidgets { WID_C_CAPTION, ///< Caption of the window. WID_C_FACE, ///< View of the face. WID_C_FACE_TITLE, ///< Title for the face. WID_C_DESC_INAUGURATION, ///< Inauguration. WID_C_DESC_COLOUR_SCHEME, ///< Colour scheme. WID_C_DESC_COLOUR_SCHEME_EXAMPLE, ///< Colour scheme example. WID_C_DESC_VEHICLE, ///< Vehicles. WID_C_DESC_VEHICLE_COUNTS, ///< Vehicle count. WID_C_DESC_COMPANY_VALUE, ///< Company value. WID_C_DESC_INFRASTRUCTURE, ///< Infrastructure. WID_C_DESC_INFRASTRUCTURE_COUNTS, ///< Infrastructure count. WID_C_SELECT_DESC_OWNERS, ///< Owners. WID_C_DESC_OWNERS, ///< Owner in Owners. WID_C_SELECT_BUTTONS, ///< Selection widget for the button bar. WID_C_NEW_FACE, ///< Button to make new face. WID_C_COLOUR_SCHEME, ///< Button to change colour scheme. WID_C_PRESIDENT_NAME, ///< Button to change president name. WID_C_COMPANY_NAME, ///< Button to change company name. WID_C_BUY_SHARE, ///< Button to buy a share. WID_C_SELL_SHARE, ///< Button to sell a share. WID_C_SELECT_VIEW_BUILD_HQ, ///< Panel about HQ. WID_C_VIEW_HQ, ///< Button to view the HQ. WID_C_BUILD_HQ, ///< Button to build the HQ. WID_C_SELECT_RELOCATE, ///< Panel about 'Relocate HQ'. WID_C_RELOCATE_HQ, ///< Button to relocate the HQ. WID_C_VIEW_INFRASTRUCTURE, ///< Panel about infrastructure. WID_C_HAS_PASSWORD, ///< Has company password lock. WID_C_SELECT_MULTIPLAYER, ///< Multiplayer selection panel. WID_C_COMPANY_PASSWORD, ///< Button to set company password. WID_C_COMPANY_JOIN, ///< Button to join company. }; /** Widgets of the #CompanyFinancesWindow class. */ enum CompanyFinancesWidgets { WID_CF_CAPTION, ///< Caption of the window. WID_CF_TOGGLE_SIZE, ///< Toggle windows size. WID_CF_SEL_PANEL, ///< Select panel or nothing. WID_CF_EXPS_CATEGORY, ///< Column for expenses category strings. WID_CF_EXPS_PRICE1, ///< Column for year Y-2 expenses. WID_CF_EXPS_PRICE2, ///< Column for year Y-1 expenses. WID_CF_EXPS_PRICE3, ///< Column for year Y expenses. WID_CF_TOTAL_PANEL, ///< Panel for totals. WID_CF_SEL_MAXLOAN, ///< Selection of maxloan column. WID_CF_BALANCE_VALUE, ///< Bank balance value. WID_CF_LOAN_VALUE, ///< Loan. WID_CF_LOAN_LINE, ///< Line for summing bank balance and loan. WID_CF_TOTAL_VALUE, ///< Total. WID_CF_MAXLOAN_GAP, ///< Gap above max loan widget. WID_CF_MAXLOAN_VALUE, ///< Max loan widget. WID_CF_SEL_BUTTONS, ///< Selection of buttons. WID_CF_INCREASE_LOAN, ///< Increase loan. WID_CF_REPAY_LOAN, ///< Decrease loan.. WID_CF_INFRASTRUCTURE, ///< View company infrastructure. }; /** Widgets of the #SelectCompanyLiveryWindow class. */ enum SelectCompanyLiveryWidgets { WID_SCL_CAPTION, ///< Caption of window. WID_SCL_CLASS_GENERAL, ///< Class general. WID_SCL_CLASS_RAIL, ///< Class rail. WID_SCL_CLASS_ROAD, ///< Class road. WID_SCL_CLASS_SHIP, ///< Class ship. WID_SCL_CLASS_AIRCRAFT, ///< Class aircraft. WID_SCL_SPACER_DROPDOWN, ///< Spacer for dropdown. WID_SCL_PRI_COL_DROPDOWN, ///< Dropdown for primary colour. WID_SCL_SEC_COL_DROPDOWN, ///< Dropdown for secondary colour. WID_SCL_MATRIX, ///< Matrix. }; /** * Widgets of the #SelectCompanyManagerFaceWindow class. * Do not change the order of the widgets from WID_SCMF_HAS_MOUSTACHE_EARRING to WID_SCMF_GLASSES_R, * this order is needed for the WE_CLICK event of DrawFaceStringLabel(). */ enum SelectCompanyManagerFaceWidgets { WID_SCMF_CAPTION, ///< Caption of window. WID_SCMF_TOGGLE_LARGE_SMALL, ///< Toggle for large or small. WID_SCMF_SELECT_FACE, ///< Select face. WID_SCMF_CANCEL, ///< Cancel. WID_SCMF_ACCEPT, ///< Accept. WID_SCMF_MALE, ///< Male button in the simple view. WID_SCMF_FEMALE, ///< Female button in the simple view. WID_SCMF_MALE2, ///< Male button in the advanced view. WID_SCMF_FEMALE2, ///< Female button in the advanced view. WID_SCMF_SEL_LOADSAVE, ///< Selection to display the load/save/number buttons in the advanced view. WID_SCMF_SEL_MALEFEMALE, ///< Selection to display the male/female buttons in the simple view. WID_SCMF_SEL_PARTS, ///< Selection to display the buttons for setting each part of the face in the advanced view. WID_SCMF_RANDOM_NEW_FACE, ///< Create random new face. WID_SCMF_TOGGLE_LARGE_SMALL_BUTTON, ///< Toggle for large or small. WID_SCMF_FACE, ///< Current face. WID_SCMF_LOAD, ///< Load face. WID_SCMF_FACECODE, ///< Get the face code. WID_SCMF_SAVE, ///< Save face. WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT, ///< Text about moustache and earring. WID_SCMF_TIE_EARRING_TEXT, ///< Text about tie and earring. WID_SCMF_LIPS_MOUSTACHE_TEXT, ///< Text about lips and moustache. WID_SCMF_HAS_GLASSES_TEXT, ///< Text about glasses. WID_SCMF_HAIR_TEXT, ///< Text about hair. WID_SCMF_EYEBROWS_TEXT, ///< Text about eyebrows. WID_SCMF_EYECOLOUR_TEXT, ///< Text about eyecolour. WID_SCMF_GLASSES_TEXT, ///< Text about glasses. WID_SCMF_NOSE_TEXT, ///< Text about nose. WID_SCMF_CHIN_TEXT, ///< Text about chin. WID_SCMF_JACKET_TEXT, ///< Text about jacket. WID_SCMF_COLLAR_TEXT, ///< Text about collar. WID_SCMF_ETHNICITY_EUR, ///< Text about ethnicity european. WID_SCMF_ETHNICITY_AFR, ///< Text about ethnicity african. WID_SCMF_HAS_MOUSTACHE_EARRING, ///< Has moustache or earring. WID_SCMF_HAS_GLASSES, ///< Has glasses. WID_SCMF_EYECOLOUR_L, ///< Eyecolour left. WID_SCMF_EYECOLOUR, ///< Eyecolour. WID_SCMF_EYECOLOUR_R, ///< Eyecolour right. WID_SCMF_CHIN_L, ///< Chin left. WID_SCMF_CHIN, ///< Chin. WID_SCMF_CHIN_R, ///< Chin right. WID_SCMF_EYEBROWS_L, ///< Eyebrows left. WID_SCMF_EYEBROWS, ///< Eyebrows. WID_SCMF_EYEBROWS_R, ///< Eyebrows right. WID_SCMF_LIPS_MOUSTACHE_L, ///< Lips / Moustache left. WID_SCMF_LIPS_MOUSTACHE, ///< Lips / Moustache. WID_SCMF_LIPS_MOUSTACHE_R, ///< Lips / Moustache right. WID_SCMF_NOSE_L, ///< Nose left. WID_SCMF_NOSE, ///< Nose. WID_SCMF_NOSE_R, ///< Nose right. WID_SCMF_HAIR_L, ///< Hair left. WID_SCMF_HAIR, ///< Hair. WID_SCMF_HAIR_R, ///< Hair right. WID_SCMF_JACKET_L, ///< Jacket left. WID_SCMF_JACKET, ///< Jacket. WID_SCMF_JACKET_R, ///< Jacket right. WID_SCMF_COLLAR_L, ///< Collar left. WID_SCMF_COLLAR, ///< Collar. WID_SCMF_COLLAR_R, ///< Collar right. WID_SCMF_TIE_EARRING_L, ///< Tie / Earring left. WID_SCMF_TIE_EARRING, ///< Tie / Earring. WID_SCMF_TIE_EARRING_R, ///< Tie / Earring right. WID_SCMF_GLASSES_L, ///< Glasses left. WID_SCMF_GLASSES, ///< Glasses. WID_SCMF_GLASSES_R, ///< Glasses right. }; /** Widgets of the #CompanyInfrastructureWindow class. */ enum CompanyInfrastructureWidgets { WID_CI_CAPTION, ///< Caption of window. WID_CI_RAIL_DESC, ///< Description of rail. WID_CI_RAIL_COUNT, ///< Count of rail. WID_CI_ROAD_DESC, ///< Description of road. WID_CI_ROAD_COUNT, ///< Count of road. WID_CI_WATER_DESC, ///< Description of water. WID_CI_WATER_COUNT, ///< Count of water. WID_CI_STATION_DESC, ///< Description of station. WID_CI_STATION_COUNT, ///< Count of station. WID_CI_TOTAL_DESC, ///< Description of total. WID_CI_TOTAL, ///< Count of total. }; /** Widgets of the #BuyCompanyWindow class. */ enum BuyCompanyWidgets { WID_BC_CAPTION, ///< Caption of window. WID_BC_FACE, ///< Face button. WID_BC_QUESTION, ///< Question text. WID_BC_NO, ///< No button. WID_BC_YES, ///< Yes button. }; #endif /* WIDGETS_COMPANY_WIDGET_H */ openttd-1.3.3/src/widgets/cheat_widget.h0000644000000000000000000000164712246102564016740 0ustar rootroot/* $Id: cheat_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cheat_widget.h Types related to the cheat widgets. */ #ifndef WIDGETS_CHEAT_WIDGET_H #define WIDGETS_CHEAT_WIDGET_H /** Widgets of the #CheatWindow class.. */ enum CheatWidgets { WID_C_PANEL, ///< Panel where all cheats are shown in. }; #endif /* WIDGETS_CHEAT_WIDGET_H */ openttd-1.3.3/src/widgets/build_vehicle_widget.h0000644000000000000000000000276112246102564020450 0ustar rootroot/* $Id: build_vehicle_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file build_vehicle_widget.h Types related to the build_vehicle widgets. */ #ifndef WIDGETS_BUILD_VEHICLE_WIDGET_H #define WIDGETS_BUILD_VEHICLE_WIDGET_H /** Widgets of the #BuildVehicleWindow class. */ enum BuildVehicleWidgets { WID_BV_CAPTION, ///< Caption of window. WID_BV_SORT_ASSENDING_DESCENDING, ///< Sort direction. WID_BV_SORT_DROPDOWN, ///< Criteria of sorting dropdown. WID_BV_CARGO_FILTER_DROPDOWN, ///< Cargo filter dropdown. WID_BV_LIST, ///< List of vehicles. WID_BV_SCROLLBAR, ///< Scrollbar of list. WID_BV_PANEL, ///< Button panel. WID_BV_BUILD, ///< Build panel. WID_BV_BUILD_SEL, ///< Build button. WID_BV_RENAME, ///< Rename button. }; #endif /* WIDGETS_BUILD_VEHICLE_WIDGET_H */ openttd-1.3.3/src/widgets/network_widget.h0000644000000000000000000001353712246102564017346 0ustar rootroot/* $Id: network_widget.h 24769 2012-11-27 21:35:52Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file network_widget.h Types related to the network widgets. */ #ifndef WIDGETS_NETWORK_WIDGET_H #define WIDGETS_NETWORK_WIDGET_H /** Widgets of the #NetworkGameWindow class. */ enum NetworkGameWidgets { WID_NG_MAIN, ///< Main panel. WID_NG_CONNECTION, ///< Label in front of connection droplist. WID_NG_CONN_BTN, ///< 'Connection' droplist button. WID_NG_CLIENT_LABEL, ///< Label in front of client name edit box. WID_NG_CLIENT, ///< Panel with editbox to set client name. WID_NG_FILTER_LABEL, ///< Label in front of the filter/search edit box. WID_NG_FILTER, ///< Panel with the edit box to enter the search text. WID_NG_HEADER, ///< Header container of the matrix. WID_NG_NAME, ///< 'Name' button. WID_NG_CLIENTS, ///< 'Clients' button. WID_NG_MAPSIZE, ///< 'Map size' button. WID_NG_DATE, ///< 'Date' button. WID_NG_YEARS, ///< 'Years' button. WID_NG_INFO, ///< Third button in the game list panel. WID_NG_MATRIX, ///< Panel with list of games. WID_NG_SCROLLBAR, ///< Scrollbar of matrix. WID_NG_LASTJOINED_LABEL, ///< Label "Last joined server:". WID_NG_LASTJOINED, ///< Info about the last joined server. WID_NG_LASTJOINED_SPACER, ///< Spacer after last joined server panel. WID_NG_DETAILS, ///< Panel with game details. WID_NG_DETAILS_SPACER, ///< Spacer for game actual details. WID_NG_JOIN, ///< 'Join game' button. WID_NG_REFRESH, ///< 'Refresh server' button. WID_NG_NEWGRF, ///< 'NewGRF Settings' button. WID_NG_NEWGRF_SEL, ///< Selection 'widget' to hide the NewGRF settings. WID_NG_NEWGRF_MISSING, ///< 'Find missing NewGRF online' button. WID_NG_NEWGRF_MISSING_SEL, ///< Selection widget for the above button. WID_NG_FIND, ///< 'Find server' button. WID_NG_ADD, ///< 'Add server' button. WID_NG_START, ///< 'Start server' button. WID_NG_CANCEL, ///< 'Cancel' button. }; /** Widgets of the #NetworkStartServerWindow class. */ enum NetworkStartServerWidgets { WID_NSS_BACKGROUND, ///< Background of the window. WID_NSS_GAMENAME_LABEL, ///< Label for the game name. WID_NSS_GAMENAME, ///< Background for editbox to set game name. WID_NSS_SETPWD, ///< 'Set password' button. WID_NSS_CONNTYPE_LABEL, ///< Label for 'connection type'. WID_NSS_CONNTYPE_BTN, ///< 'Connection type' droplist button. WID_NSS_CLIENTS_LABEL, ///< Label for 'max clients'. WID_NSS_CLIENTS_BTND, ///< 'Max clients' downarrow. WID_NSS_CLIENTS_TXT, ///< 'Max clients' text. WID_NSS_CLIENTS_BTNU, ///< 'Max clients' uparrow. WID_NSS_COMPANIES_LABEL, ///< Label for 'max companies'. WID_NSS_COMPANIES_BTND, ///< 'Max companies' downarrow. WID_NSS_COMPANIES_TXT, ///< 'Max companies' text. WID_NSS_COMPANIES_BTNU, ///< 'Max companies' uparrow. WID_NSS_SPECTATORS_LABEL, ///< Label for 'max spectators'. WID_NSS_SPECTATORS_BTND, ///< 'Max spectators' downarrow. WID_NSS_SPECTATORS_TXT, ///< 'Max spectators' text. WID_NSS_SPECTATORS_BTNU, ///< 'Max spectators' uparrow. WID_NSS_LANGUAGE_LABEL, ///< Label for 'language spoken'. WID_NSS_LANGUAGE_BTN, ///< 'Language spoken' droplist button. WID_NSS_GENERATE_GAME, ///< New game button. WID_NSS_LOAD_GAME, ///< Load game button. WID_NSS_PLAY_SCENARIO, ///< Play scenario button. WID_NSS_PLAY_HEIGHTMAP, ///< Play heightmap button. WID_NSS_CANCEL, ///< 'Cancel' button. }; /** Widgets of the #NetworkLobbyWindow class. */ enum NetworkLobbyWidgets { WID_NL_BACKGROUND, ///< Background of the window. WID_NL_TEXT, ///< Heading text. WID_NL_HEADER, ///< Header above list of companies. WID_NL_MATRIX, ///< List of companies. WID_NL_SCROLLBAR, ///< Scroll bar. WID_NL_DETAILS, ///< Company details. WID_NL_JOIN, ///< 'Join company' button. WID_NL_NEW, ///< 'New company' button. WID_NL_SPECTATE, ///< 'Spectate game' button. WID_NL_REFRESH, ///< 'Refresh server' button. WID_NL_CANCEL, ///< 'Cancel' button. }; /** Widgets of the #NetworkClientListWindow class. */ enum ClientListWidgets { WID_CL_PANEL, ///< Panel of the window. }; /** Widgets of the #NetworkClientListPopupWindow class. */ enum ClientListPopupWidgets { WID_CLP_PANEL, ///< Panel of the window. }; /** Widgets of the #NetworkJoinStatusWindow class. */ enum NetworkJoinStatusWidgets { WID_NJS_BACKGROUND, ///< Background of the window. WID_NJS_CANCELOK, ///< Cancel / OK button. }; /** Widgets of the #NetworkCompanyPasswordWindow class. */ enum NetworkCompanyPasswordWidgets { WID_NCP_BACKGROUND, ///< Background of the window. WID_NCP_LABEL, ///< Label in front of the password field. WID_NCP_PASSWORD, ///< Input field for the password. WID_NCP_SAVE_AS_DEFAULT_PASSWORD, ///< Toggle 'button' for saving the current password as default password. WID_NCP_CANCEL, ///< Close the window without changing anything. WID_NCP_OK, ///< Safe the password etc. }; #endif /* WIDGETS_NETWORK_WIDGET_H */ openttd-1.3.3/src/widgets/timetable_widget.h0000644000000000000000000000403712246102564017616 0ustar rootroot/* $Id: timetable_widget.h 23947 2012-02-14 17:04:06Z michi_cc $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file timetable_widget.h Types related to the timetable widgets. */ #ifndef WIDGETS_TIMETABLE_WIDGET_H #define WIDGETS_TIMETABLE_WIDGET_H /** Widgets of the #TimetableWindow class. */ enum VehicleTimetableWidgets { WID_VT_CAPTION, ///< Caption of the window. WID_VT_ORDER_VIEW, ///< Order view. WID_VT_TIMETABLE_PANEL, ///< Timetable panel. WID_VT_ARRIVAL_DEPARTURE_PANEL, ///< Panel with the expected/scheduled arrivals. WID_VT_SCROLLBAR, ///< Scrollbar for the panel. WID_VT_SUMMARY_PANEL, ///< Summary panel. WID_VT_START_DATE, ///< Start date button. WID_VT_CHANGE_TIME, ///< Change time button. WID_VT_CLEAR_TIME, ///< Clear time button. WID_VT_RESET_LATENESS, ///< Reset lateness button. WID_VT_AUTOFILL, ///< Autofill button. WID_VT_EXPECTED, ///< Toggle between expected and scheduled arrivals. WID_VT_SHARED_ORDER_LIST, ///< Show the shared order list. WID_VT_ARRIVAL_DEPARTURE_SELECTION, ///< Disable/hide the arrival departure panel. WID_VT_EXPECTED_SELECTION, ///< Disable/hide the expected selection button. WID_VT_CHANGE_SPEED, ///< Change speed limit button. WID_VT_CLEAR_SPEED, ///< Clear speed limit button. }; #endif /* WIDGETS_TIMETABLE_WIDGET_H */ openttd-1.3.3/src/widgets/toolbar_widget.h0000644000000000000000000000741412246102564017314 0ustar rootroot/* $Id: toolbar_widget.h 23853 2012-01-25 22:10:14Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file toolbar_widget.h Types related to the toolbar widgets. */ #ifndef WIDGETS_TOOLBAR_WIDGET_H #define WIDGETS_TOOLBAR_WIDGET_H /** Widgets of the #MainToolbarWindow class. */ enum ToolbarNormalWidgets { WID_TN_PAUSE, ///< Pause the game. WID_TN_FAST_FORWARD, ///< Fast forward the game. WID_TN_SETTINGS, ///< Settings menu. WID_TN_SAVE, ///< Save menu. WID_TN_SMALL_MAP, ///< Small map menu. WID_TN_TOWNS, ///< Town menu. WID_TN_SUBSIDIES, ///< Subsidy menu. WID_TN_STATIONS, ///< Station menu. WID_TN_FINANCES, ///< Finance menu. WID_TN_COMPANIES, ///< Company menu. WID_TN_GRAPHS, ///< Graph menu. WID_TN_LEAGUE, ///< Company league menu. WID_TN_INDUSTRIES, ///< Industry menu. WID_TN_VEHICLE_START, ///< Helper for the offset of the vehicle menus. WID_TN_TRAINS = WID_TN_VEHICLE_START, ///< Train menu. WID_TN_ROADVEHS, ///< Road vehicle menu. WID_TN_SHIPS, ///< Ship menu. WID_TN_AIRCRAFTS, ///< Aircraft menu. WID_TN_ZOOM_IN, ///< Zoom in the main viewport. WID_TN_ZOOM_OUT, ///< Zoom out the main viewport. WID_TN_RAILS, ///< Rail building menu. WID_TN_ROADS, ///< Road building menu. WID_TN_WATER, ///< Water building toolbar. WID_TN_AIR, ///< Airport building toolbar. WID_TN_LANDSCAPE, ///< Landscaping toolbar. WID_TN_MUSIC_SOUND, ///< Music/sound configuration menu. WID_TN_MESSAGES, ///< Messages menu. WID_TN_HELP, ///< Help menu. WID_TN_SWITCH_BAR, ///< Only available when toolbar has been split to switch between different subsets. WID_TN_END, ///< Helper for knowing the amount of widgets. }; /** Widgets of the #ScenarioEditorToolbarWindow class. */ enum ToolbarEditorWidgets { WID_TE_PAUSE, ///< Pause the game. WID_TE_FAST_FORWARD, ///< Fast forward the game. WID_TE_SETTINGS, ///< Settings menu. WID_TE_SAVE, ///< Save menu. WID_TE_SPACER, ///< Spacer with "scenario editor" text. WID_TE_DATE, ///< The date of the scenario. WID_TE_DATE_BACKWARD, ///< Reduce the date of the scenario. WID_TE_DATE_FORWARD, ///< Increase the date of the scenario. WID_TE_SMALL_MAP, ///< Small map menu. WID_TE_ZOOM_IN, ///< Zoom in the main viewport. WID_TE_ZOOM_OUT, ///< Zoom out the main viewport. WID_TE_LAND_GENERATE, ///< Land generation. WID_TE_TOWN_GENERATE, ///< Town building window. WID_TE_INDUSTRY, ///< Industry building window. WID_TE_ROADS, ///< Road building menu. WID_TE_WATER, ///< Water building toolbar. WID_TE_TREES, ///< Tree building toolbar. WID_TE_SIGNS, ///< Sign building. WID_TE_DATE_PANEL, ///< Container for the date widgets. /* The following three need to have the same actual widget number as the normal toolbar due to shared code. */ WID_TE_MUSIC_SOUND = WID_TN_MUSIC_SOUND, ///< Music/sound configuration menu. WID_TE_HELP = WID_TN_HELP, ///< Help menu. WID_TE_SWITCH_BAR = WID_TN_SWITCH_BAR, ///< Only available when toolbar has been split to switch between different subsets. }; #endif /* WIDGETS_TOOLBAR_WIDGET_H */ openttd-1.3.3/src/widgets/graph_widget.h0000644000000000000000000000551512246102564016753 0ustar rootroot/* $Id: graph_widget.h 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file graph_widget.h Types related to the graph widgets. */ #ifndef WIDGETS_GRAPH_WIDGET_H #define WIDGETS_GRAPH_WIDGET_H #include "../economy_type.h" #include "../company_type.h" /** Widgets of the #GraphLegendWindow class. */ enum GraphLegendWidgets { WID_GL_BACKGROUND, ///< Background of the window. WID_GL_FIRST_COMPANY, ///< First company in the legend. WID_GL_LAST_COMPANY = WID_GL_FIRST_COMPANY + MAX_COMPANIES - 1, ///< Last company in the legend. }; /** Widgets of the #OperatingProfitGraphWindow class, #IncomeGraphWindow class, #DeliveredCargoGraphWindow class, and #CompanyValueGraphWindow class. */ enum CompanyValueWidgets { WID_CV_KEY_BUTTON, ///< Key button. WID_CV_BACKGROUND, ///< Background of the window. WID_CV_GRAPH, ///< Graph itself. WID_CV_RESIZE, ///< Resize button. }; /** Widget of the #PerformanceHistoryGraphWindow class. */ enum PerformanceHistoryGraphWidgets { WID_PHG_KEY, ///< Key button. WID_PHG_DETAILED_PERFORMANCE, ///< Detailed performance. WID_PHG_BACKGROUND, ///< Background of the window. WID_PHG_GRAPH, ///< Graph itself. WID_PHG_RESIZE, ///< Resize button. }; /** Widget of the #PaymentRatesGraphWindow class. */ enum CargoPaymentRatesWidgets { WID_CPR_BACKGROUND, ///< Background of the window. WID_CPR_HEADER, ///< Header. WID_CPR_GRAPH, ///< Graph itself. WID_CPR_RESIZE, ///< Resize button. WID_CPR_FOOTER, ///< Footer. WID_CPR_ENABLE_CARGOES, ///< Enable cargoes button. WID_CPR_DISABLE_CARGOES, ///< Disable cargoes button. WID_CPR_CARGO_FIRST, ///< First cargo in the list. }; /** Widget of the #CompanyLeagueWindow class. */ enum CompanyLeagueWidgets { WID_CL_BACKGROUND, ///< Background of the window. }; /** Widget of the #PerformanceRatingDetailWindow class. */ enum PerformanceRatingDetailsWidgets { WID_PRD_SCORE_FIRST, ///< First entry in the score list. WID_PRD_SCORE_LAST = WID_PRD_SCORE_FIRST + (SCORE_END - SCORE_BEGIN) - 1, ///< Last entry in the score list. WID_PRD_COMPANY_FIRST, ///< First company. WID_PRD_COMPANY_LAST = WID_PRD_COMPANY_FIRST + MAX_COMPANIES - 1, ///< Last company. }; #endif /* WIDGETS_GRAPH_WIDGET_H */ openttd-1.3.3/src/widgets/genworld_widget.h0000644000000000000000000001030512246102564017464 0ustar rootroot/* $Id: genworld_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file genworld_widget.h Types related to the genworld widgets. */ #ifndef WIDGETS_GENWORLD_WIDGET_H #define WIDGETS_GENWORLD_WIDGET_H /** Widgets of the #GenerateLandscapeWindow class. */ enum GenerateLandscapeWidgets { WID_GL_TEMPERATE, ///< Button with icon "Temperate". WID_GL_ARCTIC, ///< Button with icon "Arctic". WID_GL_TROPICAL, ///< Button with icon "Tropical". WID_GL_TOYLAND, ///< Button with icon "Toyland". WID_GL_MAPSIZE_X_PULLDOWN, ///< Dropdown 'map X size'. WID_GL_MAPSIZE_Y_PULLDOWN, ///< Dropdown 'map Y size'. WID_GL_TOWN_PULLDOWN, ///< Dropdown 'No. of towns'. WID_GL_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries'. WID_GL_RANDOM_EDITBOX, ///< 'Random seed' editbox. WID_GL_RANDOM_BUTTON, ///< 'Randomise' button. WID_GL_GENERATE_BUTTON, ///< 'Generate' button. WID_GL_START_DATE_DOWN, ///< Decrease start year. WID_GL_START_DATE_TEXT, ///< Start year. WID_GL_START_DATE_UP, ///< Increase start year. WID_GL_SNOW_LEVEL_DOWN, ///< Decrease snow level. WID_GL_SNOW_LEVEL_TEXT, ///< Snow level. WID_GL_SNOW_LEVEL_UP, ///< Increase snow level. WID_GL_TREE_PULLDOWN, ///< Dropdown 'Tree algorithm'. WID_GL_LANDSCAPE_PULLDOWN, ///< Dropdown 'Land generator'. WID_GL_HEIGHTMAP_NAME_TEXT, ///< Heightmap name. WID_GL_HEIGHTMAP_SIZE_TEXT, ///< Size of heightmap. WID_GL_HEIGHTMAP_ROTATION_PULLDOWN, ///< Dropdown 'Heightmap rotation'. WID_GL_TERRAIN_PULLDOWN, ///< Dropdown 'Terrain type'. WID_GL_WATER_PULLDOWN, ///< Dropdown 'Sea level'. WID_GL_RIVER_PULLDOWN, ///< Dropdown 'Rivers'. WID_GL_SMOOTHNESS_PULLDOWN, ///< Dropdown 'Smoothness'. WID_GL_VARIETY_PULLDOWN, ///< Dropdown 'Variety distribution'. WID_GL_BORDERS_RANDOM, ///< 'Random'/'Manual' borders. WID_GL_WATER_NW, ///< NW 'Water'/'Freeform'. WID_GL_WATER_NE, ///< NE 'Water'/'Freeform'. WID_GL_WATER_SE, ///< SE 'Water'/'Freeform'. WID_GL_WATER_SW, ///< SW 'Water'/'Freeform'. }; /** Widgets of the #CreateScenarioWindow class. */ enum CreateScenarioWidgets { WID_CS_TEMPERATE, ///< Select temperate landscape style. WID_CS_ARCTIC, ///< Select arctic landscape style. WID_CS_TROPICAL, ///< Select tropical landscape style. WID_CS_TOYLAND, ///< Select toy-land landscape style. WID_CS_EMPTY_WORLD, ///< Generate an empty flat world. WID_CS_RANDOM_WORLD, ///< Generate random land button WID_CS_MAPSIZE_X_PULLDOWN, ///< Pull-down arrow for x map size. WID_CS_MAPSIZE_Y_PULLDOWN, ///< Pull-down arrow for y map size. WID_CS_START_DATE_DOWN, ///< Decrease start year (start earlier). WID_CS_START_DATE_TEXT, ///< Clickable start date value. WID_CS_START_DATE_UP, ///< Increase start year (start later). WID_CS_FLAT_LAND_HEIGHT_DOWN, ///< Decrease flat land height. WID_CS_FLAT_LAND_HEIGHT_TEXT, ///< Clickable flat land height value. WID_CS_FLAT_LAND_HEIGHT_UP, ///< Increase flat land height. }; /** Widgets of the #GenerateProgressWindow class. */ enum GenerationProgressWidgets { WID_GP_PROGRESS_BAR, ///< Progress bar. WID_GP_PROGRESS_TEXT, ///< Text with the progress bar. WID_GP_ABORT, ///< Abort button. }; #endif /* WIDGETS_GENWORLD_WIDGET_H */ openttd-1.3.3/src/widgets/goal_widget.h0000644000000000000000000000243512246102564016572 0ustar rootroot /* $Id: goal_widget.h 23827 2012-01-21 12:03:55Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file goal_widget.h Types related to the goal widgets. */ #ifndef WIDGETS_GOAL_WIDGET_H #define WIDGETS_GOAL_WIDGET_H /** Widgets of the #GoalListWindow class. */ enum GoalListWidgets { WID_GL_PANEL, ///< Panel of the window. WID_GL_SCROLLBAR, ///< Scrollbar of the panel. }; /** Widgets of the #GoalQuestionWindow class. */ enum GoalQuestionWidgets { WID_GQ_CAPTION, ///< Caption of the window. WID_GQ_QUESTION, ///< Question text. WID_GQ_BUTTONS, ///< Buttons selection (between 1, 2 or 3). WID_GQ_BUTTON_1, ///< First button. WID_GQ_BUTTON_2, ///< Second button. WID_GQ_BUTTON_3, ///< Third button. }; #endif /* WIDGETS_GOAL_WIDGET_H */ openttd-1.3.3/src/widgets/rail_widget.h0000644000000000000000000001455212246102564016602 0ustar rootroot/* $Id: rail_widget.h 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file rail_widget.h Types related to the rail widgets. */ #ifndef WIDGETS_RAIL_WIDGET_H #define WIDGETS_RAIL_WIDGET_H /** Widgets of the #BuildRailToolbarWindow class. */ enum RailToolbarWidgets { /* Name starts with RA instead of R, because of collision with RoadToolbarWidgets */ WID_RAT_CAPTION, ///< Caption of the window. WID_RAT_BUILD_NS, ///< Build rail along the game view Y axis. WID_RAT_BUILD_X, ///< Build rail along the game grid X axis. WID_RAT_BUILD_EW, ///< Build rail along the game view X axis. WID_RAT_BUILD_Y, ///< Build rail along the game grid Y axis. WID_RAT_AUTORAIL, ///< Autorail tool. WID_RAT_DEMOLISH, ///< Destroy something with dynamite! WID_RAT_BUILD_DEPOT, ///< Build a depot. WID_RAT_BUILD_WAYPOINT, ///< Build a waypoint. WID_RAT_BUILD_STATION, ///< Build a station. WID_RAT_BUILD_SIGNALS, ///< Build signals. WID_RAT_BUILD_BRIDGE, ///< Build a bridge. WID_RAT_BUILD_TUNNEL, ///< Build a tunnel. WID_RAT_REMOVE, ///< Bulldozer to remove rail. WID_RAT_CONVERT_RAIL, ///< Convert other rail to this type. }; /** Widgets of the #BuildRailStationWindow class. */ enum BuildRailStationWidgets { /* Name starts with BRA instead of BR, because of collision with BuildRoadStationWidgets */ WID_BRAS_PLATFORM_DIR_X, ///< Button to select '/' view. WID_BRAS_PLATFORM_DIR_Y, ///< Button to select '\' view. WID_BRAS_PLATFORM_NUM_1, ///< Button to select stations with a single platform. WID_BRAS_PLATFORM_NUM_2, ///< Button to select stations with 2 platforms. WID_BRAS_PLATFORM_NUM_3, ///< Button to select stations with 3 platforms. WID_BRAS_PLATFORM_NUM_4, ///< Button to select stations with 4 platforms. WID_BRAS_PLATFORM_NUM_5, ///< Button to select stations with 5 platforms. WID_BRAS_PLATFORM_NUM_6, ///< Button to select stations with 6 platforms. WID_BRAS_PLATFORM_NUM_7, ///< Button to select stations with 7 platforms. WID_BRAS_PLATFORM_LEN_1, ///< Button to select single tile length station platforms. WID_BRAS_PLATFORM_LEN_2, ///< Button to select 2 tiles length station platforms. WID_BRAS_PLATFORM_LEN_3, ///< Button to select 3 tiles length station platforms. WID_BRAS_PLATFORM_LEN_4, ///< Button to select 4 tiles length station platforms. WID_BRAS_PLATFORM_LEN_5, ///< Button to select 5 tiles length station platforms. WID_BRAS_PLATFORM_LEN_6, ///< Button to select 6 tiles length station platforms. WID_BRAS_PLATFORM_LEN_7, ///< Button to select 7 tiles length station platforms. WID_BRAS_PLATFORM_DRAG_N_DROP, ///< Button to enable drag and drop type station placement. WID_BRAS_HIGHLIGHT_OFF, ///< Button for turning coverage highlighting off. WID_BRAS_HIGHLIGHT_ON, ///< Button for turning coverage highlighting on. WID_BRAS_COVERAGE_TEXTS, ///< Empty space for the coverage texts. WID_BRAS_MATRIX, ///< Matrix widget displaying the available stations. WID_BRAS_IMAGE, ///< Panel used at each cell of the matrix. WID_BRAS_MATRIX_SCROLL, ///< Scrollbar of the matrix widget. WID_BRAS_SHOW_NEWST_ADDITIONS, ///< Selection for newstation class selection list. WID_BRAS_SHOW_NEWST_MATRIX, ///< Selection for newstation image matrix. WID_BRAS_SHOW_NEWST_RESIZE, ///< Selection for panel and resize at bottom right for newstation. WID_BRAS_SHOW_NEWST_TYPE, ///< Display of selected station type. WID_BRAS_NEWST_LIST, ///< List with available newstation classes. WID_BRAS_NEWST_SCROLL, ///< Scrollbar of the #WID_BRAS_NEWST_LIST. WID_BRAS_PLATFORM_NUM_BEGIN = WID_BRAS_PLATFORM_NUM_1 - 1, ///< Helper for determining the chosen platform width. WID_BRAS_PLATFORM_LEN_BEGIN = WID_BRAS_PLATFORM_LEN_1 - 1, ///< Helper for determining the chosen platform length. }; /** Widgets of the #BuildSignalWindow class. */ enum BuildSignalWidgets { WID_BS_SEMAPHORE_NORM, ///< Build a semaphore normal block signal WID_BS_SEMAPHORE_ENTRY, ///< Build a semaphore entry block signal WID_BS_SEMAPHORE_EXIT, ///< Build a semaphore exit block signal WID_BS_SEMAPHORE_COMBO, ///< Build a semaphore combo block signal WID_BS_SEMAPHORE_PBS, ///< Build a semaphore path signal. WID_BS_SEMAPHORE_PBS_OWAY, ///< Build a semaphore one way path signal. WID_BS_ELECTRIC_NORM, ///< Build an electric normal block signal WID_BS_ELECTRIC_ENTRY, ///< Build an electric entry block signal WID_BS_ELECTRIC_EXIT, ///< Build an electric exit block signal WID_BS_ELECTRIC_COMBO, ///< Build an electric combo block signal WID_BS_ELECTRIC_PBS, ///< Build an electric path signal. WID_BS_ELECTRIC_PBS_OWAY, ///< Build an electric one way path signal. WID_BS_CONVERT, ///< Convert the signal. WID_BS_DRAG_SIGNALS_DENSITY_LABEL, ///< The current signal density. WID_BS_DRAG_SIGNALS_DENSITY_DECREASE, ///< Decrease the signal density. WID_BS_DRAG_SIGNALS_DENSITY_INCREASE, ///< Increase the signal density. }; /** Widgets of the #BuildRailDepotWindow class. */ enum BuildRailDepotWidgets { /* Name starts with BRA instead of BR, because of collision with BuildRoadDepotWidgets */ WID_BRAD_DEPOT_NE, ///< Build a depot with the entrance in the north east. WID_BRAD_DEPOT_SE, ///< Build a depot with the entrance in the south east. WID_BRAD_DEPOT_SW, ///< Build a depot with the entrance in the south west. WID_BRAD_DEPOT_NW, ///< Build a depot with the entrance in the north west. }; /** Widgets of the #BuildRailWaypointWindow class. */ enum BuildRailWaypointWidgets { WID_BRW_WAYPOINT_MATRIX, ///< Matrix with waypoints. WID_BRW_WAYPOINT, ///< A single waypoint. WID_BRW_SCROLL, ///< Scrollbar for the matrix. }; #endif /* WIDGETS_RAIL_WIDGET_H */ openttd-1.3.3/src/road_cmd.cpp0000644000000000000000000017606412246102611014745 0ustar rootroot/* $Id: road_cmd.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file road_cmd.cpp Commands related to road tiles. */ #include "stdafx.h" #include "cmd_helper.h" #include "road_internal.h" #include "viewport_func.h" #include "command_func.h" #include "pathfinder/yapf/yapf_cache.h" #include "depot_base.h" #include "newgrf.h" #include "autoslope.h" #include "tunnelbridge_map.h" #include "strings_func.h" #include "vehicle_func.h" #include "sound_func.h" #include "tunnelbridge.h" #include "cheat_type.h" #include "effectvehicle_func.h" #include "effectvehicle_base.h" #include "elrail_func.h" #include "roadveh.h" #include "town.h" #include "company_base.h" #include "core/random_func.hpp" #include "newgrf_railtype.h" #include "date_func.h" #include "genworld.h" #include "company_gui.h" #include "table/strings.h" /** * Verify whether a road vehicle is available. * @return \c true if at least one road vehicle is available, \c false if not */ bool RoadVehiclesAreBuilt() { const RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) return true; return false; } /** Invalid RoadBits on slopes. */ static const RoadBits _invalid_tileh_slopes_road[2][15] = { /* The inverse of the mixable RoadBits on a leveled slope */ { ROAD_NONE, // SLOPE_FLAT ROAD_NE | ROAD_SE, // SLOPE_W ROAD_NE | ROAD_NW, // SLOPE_S ROAD_NE, // SLOPE_SW ROAD_NW | ROAD_SW, // SLOPE_E ROAD_NONE, // SLOPE_EW ROAD_NW, // SLOPE_SE ROAD_NONE, // SLOPE_WSE ROAD_SE | ROAD_SW, // SLOPE_N ROAD_SE, // SLOPE_NW ROAD_NONE, // SLOPE_NS ROAD_NONE, // SLOPE_ENW ROAD_SW, // SLOPE_NE ROAD_NONE, // SLOPE_SEN ROAD_NONE // SLOPE_NWS }, /* The inverse of the allowed straight roads on a slope * (with and without a foundation). */ { ROAD_NONE, // SLOPE_FLAT ROAD_NONE, // SLOPE_W Foundation ROAD_NONE, // SLOPE_S Foundation ROAD_Y, // SLOPE_SW ROAD_NONE, // SLOPE_E Foundation ROAD_ALL, // SLOPE_EW ROAD_X, // SLOPE_SE ROAD_ALL, // SLOPE_WSE ROAD_NONE, // SLOPE_N Foundation ROAD_X, // SLOPE_NW ROAD_ALL, // SLOPE_NS ROAD_ALL, // SLOPE_ENW ROAD_Y, // SLOPE_NE ROAD_ALL, // SLOPE_SEN ROAD_ALL // SLOPE_NW } }; static Foundation GetRoadFoundation(Slope tileh, RoadBits bits); /** * Is it allowed to remove the given road bits from the given tile? * @param tile the tile to remove the road from * @param remove the roadbits that are going to be removed * @param owner the actual owner of the roadbits of the tile * @param rt the road type to remove the bits from * @param flags command flags * @param town_check Shall the town rating checked/affected * @return A succeeded command when it is allowed to remove the road bits, a failed command otherwise. */ CommandCost CheckAllowRemoveRoad(TileIndex tile, RoadBits remove, Owner owner, RoadType rt, DoCommandFlag flags, bool town_check) { if (_game_mode == GM_EDITOR || remove == ROAD_NONE) return CommandCost(); /* Water can always flood and towns can always remove "normal" road pieces. * Towns are not be allowed to remove non "normal" road pieces, like tram * tracks as that would result in trams that cannot turn. */ if (_current_company == OWNER_WATER || (rt == ROADTYPE_ROAD && !Company::IsValidID(_current_company))) return CommandCost(); /* Only do the special processing if the road is owned * by a town */ if (owner != OWNER_TOWN) { if (owner == OWNER_NONE) return CommandCost(); CommandCost ret = CheckOwnership(owner); return ret; } if (!town_check) return CommandCost(); if (_cheats.magic_bulldozer.value) return CommandCost(); Town *t = ClosestTownFromTile(tile, UINT_MAX); if (t == NULL) return CommandCost(); /* check if you're allowed to remove the street owned by a town * removal allowance depends on difficulty setting */ CommandCost ret = CheckforTownRating(flags, t, ROAD_REMOVE); if (ret.Failed()) return ret; /* Get a bitmask of which neighbouring roads has a tile */ RoadBits n = ROAD_NONE; RoadBits present = GetAnyRoadBits(tile, rt); if ((present & ROAD_NE) && (GetAnyRoadBits(TILE_ADDXY(tile, -1, 0), rt) & ROAD_SW)) n |= ROAD_NE; if ((present & ROAD_SE) && (GetAnyRoadBits(TILE_ADDXY(tile, 0, 1), rt) & ROAD_NW)) n |= ROAD_SE; if ((present & ROAD_SW) && (GetAnyRoadBits(TILE_ADDXY(tile, 1, 0), rt) & ROAD_NE)) n |= ROAD_SW; if ((present & ROAD_NW) && (GetAnyRoadBits(TILE_ADDXY(tile, 0, -1), rt) & ROAD_SE)) n |= ROAD_NW; int rating_decrease = RATING_ROAD_DOWN_STEP_EDGE; /* If 0 or 1 bits are set in n, or if no bits that match the bits to remove, * then allow it */ if (KillFirstBit(n) != ROAD_NONE && (n & remove) != ROAD_NONE) { /* you can remove all kind of roads with extra dynamite */ if (!_settings_game.construction.extra_dynamite) { SetDParam(0, t->index); return_cmd_error(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS); } rating_decrease = RATING_ROAD_DOWN_STEP_INNER; } ChangeTownRating(t, rating_decrease, RATING_ROAD_MINIMUM, flags); return CommandCost(); } /** * Delete a piece of road. * @param tile tile where to remove road from * @param flags operation to perform * @param pieces roadbits to remove * @param rt roadtype to remove * @param crossing_check should we check if there is a tram track when we are removing road from crossing? * @param town_check should we check if the town allows removal? */ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits pieces, RoadType rt, bool crossing_check, bool town_check = true) { RoadTypes rts = GetRoadTypes(tile); /* The tile doesn't have the given road type */ if (!HasBit(rts, rt)) return_cmd_error(rt == ROADTYPE_TRAM ? STR_ERROR_THERE_IS_NO_TRAMWAY : STR_ERROR_THERE_IS_NO_ROAD); switch (GetTileType(tile)) { case MP_ROAD: { CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; break; } case MP_STATION: { if (!IsDriveThroughStopTile(tile)) return CMD_ERROR; CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; break; } case MP_TUNNELBRIDGE: { if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return CMD_ERROR; CommandCost ret = TunnelBridgeIsFree(tile, GetOtherTunnelBridgeEnd(tile)); if (ret.Failed()) return ret; break; } default: return CMD_ERROR; } CommandCost ret = CheckAllowRemoveRoad(tile, pieces, GetRoadOwner(tile, rt), rt, flags, town_check); if (ret.Failed()) return ret; if (!IsTileType(tile, MP_ROAD)) { /* If it's the last roadtype, just clear the whole tile */ if (rts == RoadTypeToRoadTypes(rt)) return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); CommandCost cost(EXPENSES_CONSTRUCTION); if (IsTileType(tile, MP_TUNNELBRIDGE)) { /* Removing any roadbit in the bridge axis removes the roadtype (that's the behaviour remove-long-roads needs) */ if ((AxisToRoadBits(DiagDirToAxis(GetTunnelBridgeDirection(tile))) & pieces) == ROAD_NONE) return_cmd_error(rt == ROADTYPE_TRAM ? STR_ERROR_THERE_IS_NO_TRAMWAY : STR_ERROR_THERE_IS_NO_ROAD); TileIndex other_end = GetOtherTunnelBridgeEnd(tile); /* Pay for *every* tile of the bridge or tunnel */ uint len = GetTunnelBridgeLength(other_end, tile) + 2; cost.AddCost(len * _price[PR_CLEAR_ROAD]); if (flags & DC_EXEC) { Company *c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) { /* A full diagonal road tile has two road bits. */ c->infrastructure.road[rt] -= len * 2 * TUNNELBRIDGE_TRACKBIT_FACTOR; DirtyCompanyInfrastructureWindows(c->index); } SetRoadTypes(other_end, GetRoadTypes(other_end) & ~RoadTypeToRoadTypes(rt)); SetRoadTypes(tile, GetRoadTypes(tile) & ~RoadTypeToRoadTypes(rt)); /* If the owner of the bridge sells all its road, also move the ownership * to the owner of the other roadtype. */ RoadType other_rt = (rt == ROADTYPE_ROAD) ? ROADTYPE_TRAM : ROADTYPE_ROAD; Owner other_owner = GetRoadOwner(tile, other_rt); if (other_owner != GetTileOwner(tile)) { SetTileOwner(tile, other_owner); SetTileOwner(other_end, other_owner); } /* Mark tiles dirty that have been repaved */ MarkTileDirtyByTile(tile); MarkTileDirtyByTile(other_end); if (IsBridge(tile)) { TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile)); for (TileIndex t = tile + delta; t != other_end; t += delta) MarkTileDirtyByTile(t); } } } else { assert(IsDriveThroughStopTile(tile)); cost.AddCost(_price[PR_CLEAR_ROAD] * 2); if (flags & DC_EXEC) { Company *c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) { /* A full diagonal road tile has two road bits. */ c->infrastructure.road[rt] -= 2; DirtyCompanyInfrastructureWindows(c->index); } SetRoadTypes(tile, GetRoadTypes(tile) & ~RoadTypeToRoadTypes(rt)); MarkTileDirtyByTile(tile); } } return cost; } switch (GetRoadTileType(tile)) { case ROAD_TILE_NORMAL: { Slope tileh = GetTileSlope(tile); /* Steep slopes behave the same as slopes with one corner raised. */ if (IsSteepSlope(tileh)) { tileh = SlopeWithOneCornerRaised(GetHighestSlopeCorner(tileh)); } RoadBits present = GetRoadBits(tile, rt); const RoadBits other = GetOtherRoadBits(tile, rt); const Foundation f = GetRoadFoundation(tileh, present); if (HasRoadWorks(tile) && _current_company != OWNER_WATER) return_cmd_error(STR_ERROR_ROAD_WORKS_IN_PROGRESS); /* Autocomplete to a straight road * @li if the bits of the other roadtypes result in another foundation * @li if build on slopes is disabled */ if ((IsStraightRoad(other) && (other & _invalid_tileh_slopes_road[0][tileh & SLOPE_ELEVATED]) != ROAD_NONE) || (tileh != SLOPE_FLAT && !_settings_game.construction.build_on_slopes)) { pieces |= MirrorRoadBits(pieces); } /* limit the bits to delete to the existing bits. */ pieces &= present; if (pieces == ROAD_NONE) return_cmd_error(rt == ROADTYPE_TRAM ? STR_ERROR_THERE_IS_NO_TRAMWAY : STR_ERROR_THERE_IS_NO_ROAD); /* Now set present what it will be after the remove */ present ^= pieces; /* Check for invalid RoadBit combinations on slopes */ if (tileh != SLOPE_FLAT && present != ROAD_NONE && (present & _invalid_tileh_slopes_road[0][tileh & SLOPE_ELEVATED]) == present) { return CMD_ERROR; } if (flags & DC_EXEC) { if (HasRoadWorks(tile)) { /* flooding tile with road works, don't forget to remove the effect vehicle too */ assert(_current_company == OWNER_WATER); EffectVehicle *v; FOR_ALL_EFFECTVEHICLES(v) { if (TileVirtXY(v->x_pos, v->y_pos) == tile) { delete v; } } } Company *c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) { c->infrastructure.road[rt] -= CountBits(pieces); DirtyCompanyInfrastructureWindows(c->index); } if (present == ROAD_NONE) { RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt)); if (rts == ROADTYPES_NONE) { /* Includes MarkTileDirtyByTile() */ DoClearSquare(tile); } else { if (rt == ROADTYPE_ROAD && IsRoadOwner(tile, ROADTYPE_ROAD, OWNER_TOWN)) { /* Update nearest-town index */ const Town *town = CalcClosestTownFromTile(tile); SetTownIndex(tile, town == NULL ? (TownID)INVALID_TOWN : town->index); } SetRoadBits(tile, ROAD_NONE, rt); SetRoadTypes(tile, rts); MarkTileDirtyByTile(tile); } } else { /* When bits are removed, you *always* end up with something that * is not a complete straight road tile. However, trams do not have * onewayness, so they cannot remove it either. */ if (rt != ROADTYPE_TRAM) SetDisallowedRoadDirections(tile, DRD_NONE); SetRoadBits(tile, present, rt); MarkTileDirtyByTile(tile); } } CommandCost cost(EXPENSES_CONSTRUCTION, CountBits(pieces) * _price[PR_CLEAR_ROAD]); /* If we build a foundation we have to pay for it. */ if (f == FOUNDATION_NONE && GetRoadFoundation(tileh, present) != FOUNDATION_NONE) cost.AddCost(_price[PR_BUILD_FOUNDATION]); return cost; } case ROAD_TILE_CROSSING: { if (pieces & ComplementRoadBits(GetCrossingRoadBits(tile))) { return CMD_ERROR; } /* Don't allow road to be removed from the crossing when there is tram; * we can't draw the crossing without roadbits ;) */ if (rt == ROADTYPE_ROAD && HasTileRoadType(tile, ROADTYPE_TRAM) && (flags & DC_EXEC || crossing_check)) return CMD_ERROR; if (flags & DC_EXEC) { Company *c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) { /* A full diagonal road tile has two road bits. */ c->infrastructure.road[rt] -= 2; DirtyCompanyInfrastructureWindows(c->index); } Track railtrack = GetCrossingRailTrack(tile); RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt)); if (rts == ROADTYPES_NONE) { TrackBits tracks = GetCrossingRailBits(tile); bool reserved = HasCrossingReservation(tile); MakeRailNormal(tile, GetTileOwner(tile), tracks, GetRailType(tile)); if (reserved) SetTrackReservation(tile, tracks); /* Update rail count for level crossings. The plain track should still be accounted * for, so only subtract the difference to the level crossing cost. */ c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) c->infrastructure.rail[GetRailType(tile)] -= LEVELCROSSING_TRACKBIT_FACTOR - 1; } else { SetRoadTypes(tile, rts); } MarkTileDirtyByTile(tile); YapfNotifyTrackLayoutChange(tile, railtrack); } return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_ROAD] * 2); } default: case ROAD_TILE_DEPOT: return CMD_ERROR; } } /** * Calculate the costs for roads on slopes * Aside modify the RoadBits to fit on the slopes * * @note The RoadBits are modified too! * @param tileh The current slope * @param pieces The RoadBits we want to add * @param existing The existent RoadBits of the current type * @param other The other existent RoadBits * @return The costs for these RoadBits on this slope */ static CommandCost CheckRoadSlope(Slope tileh, RoadBits *pieces, RoadBits existing, RoadBits other) { /* Remove already build pieces */ CLRBITS(*pieces, existing); /* If we can't build anything stop here */ if (*pieces == ROAD_NONE) return CMD_ERROR; /* All RoadBit combos are valid on flat land */ if (tileh == SLOPE_FLAT) return CommandCost(); /* Steep slopes behave the same as slopes with one corner raised. */ if (IsSteepSlope(tileh)) { tileh = SlopeWithOneCornerRaised(GetHighestSlopeCorner(tileh)); } /* Save the merge of all bits of the current type */ RoadBits type_bits = existing | *pieces; /* Roads on slopes */ if (_settings_game.construction.build_on_slopes && (_invalid_tileh_slopes_road[0][tileh] & (other | type_bits)) == ROAD_NONE) { /* If we add leveling we've got to pay for it */ if ((other | existing) == ROAD_NONE) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); return CommandCost(); } /* Autocomplete uphill roads */ *pieces |= MirrorRoadBits(*pieces); type_bits = existing | *pieces; /* Uphill roads */ if (IsStraightRoad(type_bits) && (other == type_bits || other == ROAD_NONE) && (_invalid_tileh_slopes_road[1][tileh] & (other | type_bits)) == ROAD_NONE) { /* Slopes with foundation ? */ if (IsSlopeWithOneCornerRaised(tileh)) { /* Prevent build on slopes if it isn't allowed */ if (_settings_game.construction.build_on_slopes) { /* If we add foundation we've got to pay for it */ if ((other | existing) == ROAD_NONE) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); return CommandCost(); } } else { if (HasExactlyOneBit(existing) && GetRoadFoundation(tileh, existing) == FOUNDATION_NONE) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); return CommandCost(); } } return CMD_ERROR; } /** * Build a piece of road. * @param tile tile where to build road * @param flags operation to perform * @param p1 bit 0..3 road pieces to build (RoadBits) * bit 4..5 road type * bit 6..7 disallowed directions to toggle * @param p2 the town that is building the road (0 if not applicable) * @param text unused * @return the cost of this operation or an error */ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CompanyID company = _current_company; CommandCost cost(EXPENSES_CONSTRUCTION); RoadBits existing = ROAD_NONE; RoadBits other_bits = ROAD_NONE; /* Road pieces are max 4 bitset values (NE, NW, SE, SW) and town can only be non-zero * if a non-company is building the road */ if ((Company::IsValidID(company) && p2 != 0) || (company == OWNER_TOWN && !Town::IsValidID(p2)) || (company == OWNER_DEITY && p2 != 0)) return CMD_ERROR; if (company != OWNER_TOWN) { const Town *town = CalcClosestTownFromTile(tile); p2 = (town != NULL) ? town->index : (TownID)INVALID_TOWN; if (company == OWNER_DEITY) { company = OWNER_TOWN; /* If we are not within a town, we are not owned by the town */ if (town == NULL || DistanceSquare(tile, town->xy) > town->cache.squared_town_zone_radius[HZB_TOWN_EDGE]) { company = OWNER_NONE; } } } RoadBits pieces = Extract(p1); /* do not allow building 'zero' road bits, code wouldn't handle it */ if (pieces == ROAD_NONE) return CMD_ERROR; RoadType rt = Extract(p1); if (!IsValidRoadType(rt) || !ValParamRoadType(rt)) return CMD_ERROR; DisallowedRoadDirections toggle_drd = Extract(p1); Slope tileh = GetTileSlope(tile); bool need_to_clear = false; switch (GetTileType(tile)) { case MP_ROAD: switch (GetRoadTileType(tile)) { case ROAD_TILE_NORMAL: { if (HasRoadWorks(tile)) return_cmd_error(STR_ERROR_ROAD_WORKS_IN_PROGRESS); other_bits = GetOtherRoadBits(tile, rt); if (!HasTileRoadType(tile, rt)) break; existing = GetRoadBits(tile, rt); bool crossing = !IsStraightRoad(existing | pieces); if (rt != ROADTYPE_TRAM && (GetDisallowedRoadDirections(tile) != DRD_NONE || toggle_drd != DRD_NONE) && crossing) { /* Junctions cannot be one-way */ return_cmd_error(STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION); } if ((existing & pieces) == pieces) { /* We only want to set the (dis)allowed road directions */ if (toggle_drd != DRD_NONE && rt != ROADTYPE_TRAM) { if (crossing) return_cmd_error(STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION); Owner owner = GetRoadOwner(tile, ROADTYPE_ROAD); if (owner != OWNER_NONE) { CommandCost ret = CheckOwnership(owner, tile); if (ret.Failed()) return ret; } DisallowedRoadDirections dis_existing = GetDisallowedRoadDirections(tile); DisallowedRoadDirections dis_new = dis_existing ^ toggle_drd; /* We allow removing disallowed directions to break up * deadlocks, but adding them can break articulated * vehicles. As such, only when less is disallowed, * i.e. bits are removed, we skip the vehicle check. */ if (CountBits(dis_existing) <= CountBits(dis_new)) { CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; } /* Ignore half built tiles */ if ((flags & DC_EXEC) && rt != ROADTYPE_TRAM && IsStraightRoad(existing)) { SetDisallowedRoadDirections(tile, dis_new); MarkTileDirtyByTile(tile); } return CommandCost(); } return_cmd_error(STR_ERROR_ALREADY_BUILT); } break; } case ROAD_TILE_CROSSING: other_bits = GetCrossingRoadBits(tile); if (pieces & ComplementRoadBits(other_bits)) goto do_clear; pieces = other_bits; // we need to pay for both roadbits if (HasTileRoadType(tile, rt)) return_cmd_error(STR_ERROR_ALREADY_BUILT); break; case ROAD_TILE_DEPOT: if ((GetAnyRoadBits(tile, rt) & pieces) == pieces) return_cmd_error(STR_ERROR_ALREADY_BUILT); goto do_clear; default: NOT_REACHED(); } break; case MP_RAILWAY: { if (IsSteepSlope(tileh)) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } /* Level crossings may only be built on these slopes */ if (!HasBit(VALID_LEVEL_CROSSING_SLOPES, tileh)) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } if (GetRailTileType(tile) != RAIL_TILE_NORMAL) goto do_clear; if (RailNoLevelCrossings(GetRailType(tile))) { return_cmd_error(STR_ERROR_CROSSING_DISALLOWED); } Axis roaddir; switch (GetTrackBits(tile)) { case TRACK_BIT_X: if (pieces & ROAD_X) goto do_clear; roaddir = AXIS_Y; break; case TRACK_BIT_Y: if (pieces & ROAD_Y) goto do_clear; roaddir = AXIS_X; break; default: goto do_clear; } CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; if (flags & DC_EXEC) { Track railtrack = AxisToTrack(OtherAxis(roaddir)); YapfNotifyTrackLayoutChange(tile, railtrack); /* Update company infrastructure counts. A level crossing has two road bits. */ Company *c = Company::GetIfValid(company); if (c != NULL) { c->infrastructure.road[rt] += 2; if (rt != ROADTYPE_ROAD) c->infrastructure.road[ROADTYPE_ROAD] += 2; DirtyCompanyInfrastructureWindows(company); } /* Update rail count for level crossings. The plain track is already * counted, so only add the difference to the level crossing cost. */ c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) c->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR - 1; /* Always add road to the roadtypes (can't draw without it) */ bool reserved = HasBit(GetRailReservationTrackBits(tile), railtrack); MakeRoadCrossing(tile, company, company, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2); SetCrossingReservation(tile, reserved); UpdateLevelCrossing(tile, false); MarkTileDirtyByTile(tile); } return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_ROAD] * (rt == ROADTYPE_ROAD ? 2 : 4)); } case MP_STATION: { if ((GetAnyRoadBits(tile, rt) & pieces) == pieces) return_cmd_error(STR_ERROR_ALREADY_BUILT); if (!IsDriveThroughStopTile(tile)) goto do_clear; RoadBits curbits = AxisToRoadBits(DiagDirToAxis(GetRoadStopDir(tile))); if (pieces & ~curbits) goto do_clear; pieces = curbits; // we need to pay for both roadbits if (HasTileRoadType(tile, rt)) return_cmd_error(STR_ERROR_ALREADY_BUILT); break; } case MP_TUNNELBRIDGE: { if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) goto do_clear; /* Only allow building the outern roadbit, so building long roads stops at existing bridges */ if (MirrorRoadBits(DiagDirToRoadBits(GetTunnelBridgeDirection(tile))) != pieces) goto do_clear; if (HasTileRoadType(tile, rt)) return_cmd_error(STR_ERROR_ALREADY_BUILT); /* Don't allow adding roadtype to the bridge/tunnel when vehicles are already driving on it */ CommandCost ret = TunnelBridgeIsFree(tile, GetOtherTunnelBridgeEnd(tile)); if (ret.Failed()) return ret; break; } default: { do_clear:; need_to_clear = true; break; } } if (need_to_clear) { CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; cost.AddCost(ret); } if (other_bits != pieces) { /* Check the foundation/slopes when adding road/tram bits */ CommandCost ret = CheckRoadSlope(tileh, &pieces, existing, other_bits); /* Return an error if we need to build a foundation (ret != 0) but the * current setting is turned off */ if (ret.Failed() || (ret.GetCost() != 0 && !_settings_game.construction.build_on_slopes)) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } cost.AddCost(ret); } if (!need_to_clear) { if (IsTileType(tile, MP_ROAD)) { /* Don't put the pieces that already exist */ pieces &= ComplementRoadBits(existing); /* Check if new road bits will have the same foundation as other existing road types */ if (IsNormalRoad(tile)) { Slope slope = GetTileSlope(tile); Foundation found_new = GetRoadFoundation(slope, pieces | existing); /* Test if all other roadtypes can be built at that foundation */ for (RoadType rtest = ROADTYPE_ROAD; rtest < ROADTYPE_END; rtest++) { if (rtest != rt) { // check only other road types RoadBits bits = GetRoadBits(tile, rtest); /* do not check if there are not road bits of given type */ if (bits != ROAD_NONE && GetRoadFoundation(slope, bits) != found_new) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } } } } } CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; } uint num_pieces = (!need_to_clear && IsTileType(tile, MP_TUNNELBRIDGE)) ? /* There are 2 pieces on *every* tile of the bridge or tunnel */ 2 * (GetTunnelBridgeLength(GetOtherTunnelBridgeEnd(tile), tile) + 2) : /* Count pieces */ CountBits(pieces); cost.AddCost(num_pieces * _price[PR_BUILD_ROAD]); if (flags & DC_EXEC) { switch (GetTileType(tile)) { case MP_ROAD: { RoadTileType rtt = GetRoadTileType(tile); if (existing == ROAD_NONE || rtt == ROAD_TILE_CROSSING) { SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt)); SetRoadOwner(tile, rt, company); if (rt == ROADTYPE_ROAD) SetTownIndex(tile, p2); } if (rtt != ROAD_TILE_CROSSING) SetRoadBits(tile, existing | pieces, rt); break; } case MP_TUNNELBRIDGE: { TileIndex other_end = GetOtherTunnelBridgeEnd(tile); SetRoadTypes(other_end, GetRoadTypes(other_end) | RoadTypeToRoadTypes(rt)); SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt)); SetRoadOwner(other_end, rt, company); SetRoadOwner(tile, rt, company); /* Mark tiles dirty that have been repaved */ MarkTileDirtyByTile(other_end); MarkTileDirtyByTile(tile); if (IsBridge(tile)) { TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile)); for (TileIndex t = tile + delta; t != other_end; t += delta) MarkTileDirtyByTile(t); } break; } case MP_STATION: assert(IsDriveThroughStopTile(tile)); SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt)); SetRoadOwner(tile, rt, company); break; default: MakeRoadNormal(tile, pieces, RoadTypeToRoadTypes(rt), p2, company, company); break; } /* Update company infrastructure count. */ Company *c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) { if (IsTileType(tile, MP_TUNNELBRIDGE)) num_pieces *= TUNNELBRIDGE_TRACKBIT_FACTOR; c->infrastructure.road[rt] += num_pieces; DirtyCompanyInfrastructureWindows(c->index); } if (rt != ROADTYPE_TRAM && IsNormalRoadTile(tile)) { existing |= pieces; SetDisallowedRoadDirections(tile, IsStraightRoad(existing) ? GetDisallowedRoadDirections(tile) ^ toggle_drd : DRD_NONE); } MarkTileDirtyByTile(tile); } return cost; } /** * Checks whether a road or tram connection can be found when building a new road or tram. * @param tile Tile at which the road being built will end. * @param rt Roadtype of the road being built. * @param dir Direction that the road is following. * @return True if the next tile at dir direction is suitable for being connected directly by a second roadbit at the end of the road being built. */ static bool CanConnectToRoad(TileIndex tile, RoadType rt, DiagDirection dir) { RoadBits bits = GetAnyRoadBits(tile + TileOffsByDiagDir(dir), rt, false); return (bits & DiagDirToRoadBits(ReverseDiagDir(dir))) != 0; } /** * Build a long piece of road. * @param start_tile start tile of drag (the building cost will appear over this tile) * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0) - start tile starts in the 2nd half of tile (p2 & 1). Only used if bit 6 is set or if we are building a single tile * - p2 = (bit 1) - end tile starts in the 2nd half of tile (p2 & 2). Only used if bit 6 is set or if we are building a single tile * - p2 = (bit 2) - direction: 0 = along x-axis, 1 = along y-axis (p2 & 4) * - p2 = (bit 3 + 4) - road type * - p2 = (bit 5) - set road direction * - p2 = (bit 6) - defines two different behaviors for this command: * - 0 = Build up to an obstacle. Do not build the first and last roadbits unless they can be connected to something, or if we are building a single tile * - 1 = Fail if an obstacle is found. Always take into account bit 0 and 1. This behavior is used for scripts * @param text unused * @return the cost of this operation or an error */ CommandCost CmdBuildLongRoad(TileIndex start_tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { DisallowedRoadDirections drd = DRD_NORTHBOUND; if (p1 >= MapSize()) return CMD_ERROR; TileIndex end_tile = p1; RoadType rt = Extract(p2); if (!IsValidRoadType(rt) || !ValParamRoadType(rt)) return CMD_ERROR; Axis axis = Extract(p2); /* Only drag in X or Y direction dictated by the direction variable */ if (axis == AXIS_X && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis if (axis == AXIS_Y && TileX(start_tile) != TileX(end_tile)) return CMD_ERROR; // y-axis DiagDirection dir = AxisToDiagDir(axis); /* Swap direction, also the half-tile drag var (bit 0 and 1) */ if (start_tile > end_tile || (start_tile == end_tile && HasBit(p2, 0))) { dir = ReverseDiagDir(dir); p2 ^= 3; drd = DRD_SOUTHBOUND; } /* On the X-axis, we have to swap the initial bits, so they * will be interpreted correctly in the GTTS. Furthermore * when you just 'click' on one tile to build them. */ if ((axis == AXIS_Y) == (start_tile == end_tile && HasBit(p2, 0) == HasBit(p2, 1))) drd ^= DRD_BOTH; /* No disallowed direction bits have to be toggled */ if (!HasBit(p2, 5)) drd = DRD_NONE; CommandCost cost(EXPENSES_CONSTRUCTION); CommandCost last_error = CMD_ERROR; TileIndex tile = start_tile; bool had_bridge = false; bool had_tunnel = false; bool had_success = false; bool is_ai = HasBit(p2, 6); /* Start tile is the first tile clicked by the user. */ for (;;) { RoadBits bits = AxisToRoadBits(axis); /* Determine which road parts should be built. */ if (!is_ai && start_tile != end_tile) { /* Only build the first and last roadbit if they can connect to something. */ if (tile == end_tile && !CanConnectToRoad(tile, rt, dir)) { bits = DiagDirToRoadBits(ReverseDiagDir(dir)); } else if (tile == start_tile && !CanConnectToRoad(tile, rt, ReverseDiagDir(dir))) { bits = DiagDirToRoadBits(dir); } } else { /* Road parts only have to be built at the start tile or at the end tile. */ if (tile == end_tile && !HasBit(p2, 1)) bits &= DiagDirToRoadBits(ReverseDiagDir(dir)); if (tile == start_tile && HasBit(p2, 0)) bits &= DiagDirToRoadBits(dir); } CommandCost ret = DoCommand(tile, drd << 6 | rt << 4 | bits, 0, flags, CMD_BUILD_ROAD); if (ret.Failed()) { last_error = ret; if (last_error.GetErrorMessage() != STR_ERROR_ALREADY_BUILT) { if (is_ai) return last_error; break; } } else { had_success = true; /* Only pay for the upgrade on one side of the bridges and tunnels */ if (IsTileType(tile, MP_TUNNELBRIDGE)) { if (IsBridge(tile)) { if (!had_bridge || GetTunnelBridgeDirection(tile) == dir) { cost.AddCost(ret); } had_bridge = true; } else { // IsTunnel(tile) if (!had_tunnel || GetTunnelBridgeDirection(tile) == dir) { cost.AddCost(ret); } had_tunnel = true; } } else { cost.AddCost(ret); } } if (tile == end_tile) break; tile += TileOffsByDiagDir(dir); } return had_success ? cost : last_error; } /** * Remove a long piece of road. * @param start_tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0) - start tile starts in the 2nd half of tile (p2 & 1) * - p2 = (bit 1) - end tile starts in the 2nd half of tile (p2 & 2) * - p2 = (bit 2) - direction: 0 = along x-axis, 1 = along y-axis (p2 & 4) * - p2 = (bit 3 + 4) - road type * @param text unused * @return the cost of this operation or an error */ CommandCost CmdRemoveLongRoad(TileIndex start_tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CommandCost cost(EXPENSES_CONSTRUCTION); if (p1 >= MapSize()) return CMD_ERROR; TileIndex end_tile = p1; RoadType rt = Extract(p2); if (!IsValidRoadType(rt)) return CMD_ERROR; Axis axis = Extract(p2); /* Only drag in X or Y direction dictated by the direction variable */ if (axis == AXIS_X && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis if (axis == AXIS_Y && TileX(start_tile) != TileX(end_tile)) return CMD_ERROR; // y-axis /* Swap start and ending tile, also the half-tile drag var (bit 0 and 1) */ if (start_tile > end_tile || (start_tile == end_tile && HasBit(p2, 0))) { TileIndex t = start_tile; start_tile = end_tile; end_tile = t; p2 ^= IsInsideMM(p2 & 3, 1, 3) ? 3 : 0; } Money money = GetAvailableMoneyForCommand(); TileIndex tile = start_tile; CommandCost last_error = CMD_ERROR; bool had_success = false; /* Start tile is the small number. */ for (;;) { RoadBits bits = AxisToRoadBits(axis); if (tile == end_tile && !HasBit(p2, 1)) bits &= ROAD_NW | ROAD_NE; if (tile == start_tile && HasBit(p2, 0)) bits &= ROAD_SE | ROAD_SW; /* try to remove the halves. */ if (bits != 0) { CommandCost ret = RemoveRoad(tile, flags & ~DC_EXEC, bits, rt, true); if (ret.Succeeded()) { if (flags & DC_EXEC) { money -= ret.GetCost(); if (money < 0) { _additional_cash_required = DoCommand(start_tile, end_tile, p2, flags & ~DC_EXEC, CMD_REMOVE_LONG_ROAD).GetCost(); return cost; } RemoveRoad(tile, flags, bits, rt, true, false); } cost.AddCost(ret); had_success = true; } else { /* Ownership errors are more important. */ if (last_error.GetErrorMessage() != STR_ERROR_OWNED_BY) last_error = ret; } } if (tile == end_tile) break; tile += (axis == AXIS_Y) ? TileDiffXY(0, 1) : TileDiffXY(1, 0); } return had_success ? cost : last_error; } /** * Build a road depot. * @param tile tile where to build the depot * @param flags operation to perform * @param p1 bit 0..1 entrance direction (DiagDirection) * bit 2..3 road type * @param p2 unused * @param text unused * @return the cost of this operation or an error * * @todo When checking for the tile slope, * distinguish between "Flat land required" and "land sloped in wrong direction" */ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { DiagDirection dir = Extract(p1); RoadType rt = Extract(p1); if (!IsValidRoadType(rt) || !ValParamRoadType(rt)) return CMD_ERROR; Slope tileh = GetTileSlope(tile); if (tileh != SLOPE_FLAT && ( !_settings_game.construction.build_on_slopes || !CanBuildDepotByTileh(dir, tileh) )) { return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } CommandCost cost = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (cost.Failed()) return cost; if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); if (!Depot::CanAllocateItem()) return CMD_ERROR; if (flags & DC_EXEC) { Depot *dep = new Depot(tile); dep->build_date = _date; /* A road depot has two road bits. */ Company::Get(_current_company)->infrastructure.road[rt] += 2; DirtyCompanyInfrastructureWindows(_current_company); MakeRoadDepot(tile, _current_company, dep->index, dir, rt); MarkTileDirtyByTile(tile); MakeDefaultName(dep); } cost.AddCost(_price[PR_BUILD_DEPOT_ROAD]); return cost; } static CommandCost RemoveRoadDepot(TileIndex tile, DoCommandFlag flags) { if (_current_company != OWNER_WATER) { CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; } CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; if (flags & DC_EXEC) { Company *c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL) { /* A road depot has two road bits. */ c->infrastructure.road[FIND_FIRST_BIT(GetRoadTypes(tile))] -= 2; DirtyCompanyInfrastructureWindows(c->index); } delete Depot::GetByTile(tile); DoClearSquare(tile); } return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_DEPOT_ROAD]); } static CommandCost ClearTile_Road(TileIndex tile, DoCommandFlag flags) { switch (GetRoadTileType(tile)) { case ROAD_TILE_NORMAL: { RoadBits b = GetAllRoadBits(tile); /* Clear the road if only one piece is on the tile OR we are not using the DC_AUTO flag */ if ((HasExactlyOneBit(b) && GetRoadBits(tile, ROADTYPE_TRAM) == ROAD_NONE) || !(flags & DC_AUTO)) { CommandCost ret(EXPENSES_CONSTRUCTION); RoadType rt; FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) { CommandCost tmp_ret = RemoveRoad(tile, flags, GetRoadBits(tile, rt), rt, true); if (tmp_ret.Failed()) return tmp_ret; ret.AddCost(tmp_ret); } return ret; } return_cmd_error(STR_ERROR_MUST_REMOVE_ROAD_FIRST); } case ROAD_TILE_CROSSING: { RoadTypes rts = GetRoadTypes(tile); CommandCost ret(EXPENSES_CONSTRUCTION); if (flags & DC_AUTO) return_cmd_error(STR_ERROR_MUST_REMOVE_ROAD_FIRST); /* Must iterate over the roadtypes in a reverse manner because * tram tracks must be removed before the road bits. */ RoadType rt = ROADTYPE_TRAM; do { if (HasBit(rts, rt)) { CommandCost tmp_ret = RemoveRoad(tile, flags, GetCrossingRoadBits(tile), rt, false); if (tmp_ret.Failed()) return tmp_ret; ret.AddCost(tmp_ret); } } while (rt-- != ROADTYPE_ROAD); if (flags & DC_EXEC) { DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } return ret; } default: case ROAD_TILE_DEPOT: if (flags & DC_AUTO) { return_cmd_error(STR_ERROR_BUILDING_MUST_BE_DEMOLISHED); } return RemoveRoadDepot(tile, flags); } } struct DrawRoadTileStruct { uint16 image; byte subcoord_x; byte subcoord_y; }; #include "table/road_land.h" /** * Get the foundationtype of a RoadBits Slope combination * * @param tileh The Slope part * @param bits The RoadBits part * @return The resulting Foundation */ static Foundation GetRoadFoundation(Slope tileh, RoadBits bits) { /* Flat land and land without a road doesn't require a foundation */ if (tileh == SLOPE_FLAT || bits == ROAD_NONE) return FOUNDATION_NONE; /* Steep slopes behave the same as slopes with one corner raised. */ if (IsSteepSlope(tileh)) { tileh = SlopeWithOneCornerRaised(GetHighestSlopeCorner(tileh)); } /* Leveled RoadBits on a slope */ if ((_invalid_tileh_slopes_road[0][tileh] & bits) == ROAD_NONE) return FOUNDATION_LEVELED; /* Straight roads without foundation on a slope */ if (!IsSlopeWithOneCornerRaised(tileh) && (_invalid_tileh_slopes_road[1][tileh] & bits) == ROAD_NONE) return FOUNDATION_NONE; /* Roads on steep Slopes or on Slopes with one corner raised */ return (bits == ROAD_X ? FOUNDATION_INCLINED_X : FOUNDATION_INCLINED_Y); } const byte _road_sloped_sprites[14] = { 0, 0, 2, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0 }; /** * Whether to draw unpaved roads regardless of the town zone. * By default, OpenTTD always draws roads as unpaved if they are on a desert * tile or above the snowline. Newgrf files, however, can set a bit that allows * paved roads to be built on desert tiles as they would be on grassy tiles. * * @param tile The tile the road is on * @param roadside What sort of road this is * @return True if the road should be drawn unpaved regardless of the roadside. */ static bool AlwaysDrawUnpavedRoads(TileIndex tile, Roadside roadside) { return (IsOnSnow(tile) && !(_settings_game.game_creation.landscape == LT_TROPIC && HasGrfMiscBit(GMB_DESERT_PAVED_ROADS) && roadside != ROADSIDE_BARREN && roadside != ROADSIDE_GRASS && roadside != ROADSIDE_GRASS_ROAD_WORKS)); } /** * Draws the catenary for the given tile * @param ti information about the tile (slopes, height etc) * @param tram the roadbits for the tram */ void DrawTramCatenary(const TileInfo *ti, RoadBits tram) { /* Do not draw catenary if it is invisible */ if (IsInvisibilitySet(TO_CATENARY)) return; /* Don't draw the catenary under a low bridge */ if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_CATENARY)) { int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile)); if (height <= GetTileMaxZ(ti->tile) + 1) return; } SpriteID front; SpriteID back; if (ti->tileh != SLOPE_FLAT) { back = SPR_TRAMWAY_BACK_WIRES_SLOPED + _road_sloped_sprites[ti->tileh - 1]; front = SPR_TRAMWAY_FRONT_WIRES_SLOPED + _road_sloped_sprites[ti->tileh - 1]; } else { back = SPR_TRAMWAY_BASE + _road_backpole_sprites_1[tram]; front = SPR_TRAMWAY_BASE + _road_frontwire_sprites_1[tram]; } AddSortableSpriteToDraw(back, PAL_NONE, ti->x, ti->y, 16, 16, TILE_HEIGHT + BB_HEIGHT_UNDER_BRIDGE, ti->z, IsTransparencySet(TO_CATENARY)); AddSortableSpriteToDraw(front, PAL_NONE, ti->x, ti->y, 16, 16, TILE_HEIGHT + BB_HEIGHT_UNDER_BRIDGE, ti->z, IsTransparencySet(TO_CATENARY)); } /** * Draws details on/around the road * @param img the sprite to draw * @param ti the tile to draw on * @param dx the offset from the top of the BB of the tile * @param dy the offset from the top of the BB of the tile * @param h the height of the sprite to draw */ static void DrawRoadDetail(SpriteID img, const TileInfo *ti, int dx, int dy, int h) { int x = ti->x | dx; int y = ti->y | dy; int z = ti->z; if (ti->tileh != SLOPE_FLAT) z = GetSlopePixelZ(x, y); AddSortableSpriteToDraw(img, PAL_NONE, x, y, 2, 2, h, z); } /** * Draw ground sprite and road pieces * @param ti TileInfo */ static void DrawRoadBits(TileInfo *ti) { RoadBits road = GetRoadBits(ti->tile, ROADTYPE_ROAD); RoadBits tram = GetRoadBits(ti->tile, ROADTYPE_TRAM); SpriteID image = 0; PaletteID pal = PAL_NONE; if (ti->tileh != SLOPE_FLAT) { DrawFoundation(ti, GetRoadFoundation(ti->tileh, road | tram)); /* DrawFoundation() modifies ti. * Default sloped sprites.. */ if (ti->tileh != SLOPE_FLAT) image = _road_sloped_sprites[ti->tileh - 1] + SPR_ROAD_SLOPE_START; } if (image == 0) image = _road_tile_sprites_1[road != ROAD_NONE ? road : tram]; Roadside roadside = GetRoadside(ti->tile); if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { image += 19; } else { switch (roadside) { case ROADSIDE_BARREN: pal = PALETTE_TO_BARE_LAND; break; case ROADSIDE_GRASS: break; case ROADSIDE_GRASS_ROAD_WORKS: break; default: image -= 19; break; // Paved } } DrawGroundSprite(image, pal); /* For tram we overlay the road graphics with either tram tracks only * (when there is actual road beneath the trams) or with tram tracks * and some dirts which hides the road graphics */ if (tram != ROAD_NONE) { if (ti->tileh != SLOPE_FLAT) { image = _road_sloped_sprites[ti->tileh - 1] + SPR_TRAMWAY_SLOPED_OFFSET; } else { image = _road_tile_sprites_1[tram] - SPR_ROAD_Y; } image += (road == ROAD_NONE) ? SPR_TRAMWAY_TRAM : SPR_TRAMWAY_OVERLAY; DrawGroundSprite(image, pal); } if (road != ROAD_NONE) { DisallowedRoadDirections drd = GetDisallowedRoadDirections(ti->tile); if (drd != DRD_NONE) { DrawGroundSpriteAt(SPR_ONEWAY_BASE + drd - 1 + ((road == ROAD_X) ? 0 : 3), PAL_NONE, 8, 8, GetPartialPixelZ(8, 8, ti->tileh)); } } if (HasRoadWorks(ti->tile)) { /* Road works */ DrawGroundSprite((road | tram) & ROAD_X ? SPR_EXCAVATION_X : SPR_EXCAVATION_Y, PAL_NONE); return; } if (tram != ROAD_NONE) DrawTramCatenary(ti, tram); /* Return if full detail is disabled, or we are zoomed fully out. */ if (!HasBit(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZOOM_LVL_DETAIL) return; /* Do not draw details (street lights, trees) under low bridge */ if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && (roadside == ROADSIDE_TREES || roadside == ROADSIDE_STREET_LIGHTS)) { int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile)); int minz = GetTileMaxZ(ti->tile) + 2; if (roadside == ROADSIDE_TREES) minz++; if (height < minz) return; } /* If there are no road bits, return, as there is nothing left to do */ if (HasAtMostOneBit(road)) return; /* Draw extra details. */ for (const DrawRoadTileStruct *drts = _road_display_table[roadside][road | tram]; drts->image != 0; drts++) { DrawRoadDetail(drts->image, ti, drts->subcoord_x, drts->subcoord_y, 0x10); } } /** Tile callback function for rendering a road tile to the screen */ static void DrawTile_Road(TileInfo *ti) { switch (GetRoadTileType(ti->tile)) { case ROAD_TILE_NORMAL: DrawRoadBits(ti); break; case ROAD_TILE_CROSSING: { if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED); PaletteID pal = PAL_NONE; const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile)); if (rti->UsesOverlay()) { Axis axis = GetCrossingRailAxis(ti->tile); SpriteID road = SPR_ROAD_Y + axis; Roadside roadside = GetRoadside(ti->tile); if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { road += 19; } else { switch (roadside) { case ROADSIDE_BARREN: pal = PALETTE_TO_BARE_LAND; break; case ROADSIDE_GRASS: break; default: road -= 19; break; // Paved } } DrawGroundSprite(road, pal); SpriteID rail = GetCustomRailSprite(rti, ti->tile, RTSG_CROSSING) + axis; /* Draw tracks, but draw PBS reserved tracks darker. */ pal = (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasCrossingReservation(ti->tile)) ? PALETTE_CRASH : PAL_NONE; DrawGroundSprite(rail, pal); DrawRailTileSeq(ti, &_crossing_layout, TO_CATENARY, rail, 0, PAL_NONE); } else { SpriteID image = rti->base_sprites.crossing; if (GetCrossingRoadAxis(ti->tile) == AXIS_X) image++; if (IsCrossingBarred(ti->tile)) image += 2; Roadside roadside = GetRoadside(ti->tile); if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { image += 8; } else { switch (roadside) { case ROADSIDE_BARREN: pal = PALETTE_TO_BARE_LAND; break; case ROADSIDE_GRASS: break; default: image += 4; break; // Paved } } DrawGroundSprite(image, pal); /* PBS debugging, draw reserved tracks darker */ if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasCrossingReservation(ti->tile)) { DrawGroundSprite(GetCrossingRoadAxis(ti->tile) == AXIS_Y ? GetRailTypeInfo(GetRailType(ti->tile))->base_sprites.single_x : GetRailTypeInfo(GetRailType(ti->tile))->base_sprites.single_y, PALETTE_CRASH); } } if (HasTileRoadType(ti->tile, ROADTYPE_TRAM)) { DrawGroundSprite(SPR_TRAMWAY_OVERLAY + (GetCrossingRoadAxis(ti->tile) ^ 1), pal); DrawTramCatenary(ti, GetCrossingRoadBits(ti->tile)); } if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti); break; } default: case ROAD_TILE_DEPOT: { if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED); PaletteID palette = COMPANY_SPRITE_COLOUR(GetTileOwner(ti->tile)); const DrawTileSprites *dts; if (HasTileRoadType(ti->tile, ROADTYPE_TRAM)) { dts = &_tram_depot[GetRoadDepotDirection(ti->tile)]; } else { dts = &_road_depot[GetRoadDepotDirection(ti->tile)]; } DrawGroundSprite(dts->ground.sprite, PAL_NONE); DrawOrigTileSeq(ti, dts, TO_BUILDINGS, palette); break; } } DrawBridgeMiddle(ti); } /** * Draw the road depot sprite. * @param x The x offset to draw at. * @param y The y offset to draw at. * @param dir The direction the depot must be facing. * @param rt The road type of the depot to draw. */ void DrawRoadDepotSprite(int x, int y, DiagDirection dir, RoadType rt) { PaletteID palette = COMPANY_SPRITE_COLOUR(_local_company); const DrawTileSprites *dts = (rt == ROADTYPE_TRAM) ? &_tram_depot[dir] : &_road_depot[dir]; x += 33; y += 17; DrawSprite(dts->ground.sprite, PAL_NONE, x, y); DrawOrigTileSeqInGUI(x, y, dts, palette); } /** * Updates cached nearest town for all road tiles * @param invalidate are we just invalidating cached data? * @pre invalidate == true implies _generating_world == true */ void UpdateNearestTownForRoadTiles(bool invalidate) { assert(!invalidate || _generating_world); for (TileIndex t = 0; t < MapSize(); t++) { if (IsTileType(t, MP_ROAD) && !IsRoadDepot(t) && !HasTownOwnedRoad(t)) { TownID tid = (TownID)INVALID_TOWN; if (!invalidate) { const Town *town = CalcClosestTownFromTile(t); if (town != NULL) tid = town->index; } SetTownIndex(t, tid); } } } static int GetSlopePixelZ_Road(TileIndex tile, uint x, uint y) { if (IsNormalRoad(tile)) { int z; Slope tileh = GetTilePixelSlope(tile, &z); if (tileh == SLOPE_FLAT) return z; Foundation f = GetRoadFoundation(tileh, GetAllRoadBits(tile)); z += ApplyPixelFoundationToSlope(f, &tileh); return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh); } else { return GetTileMaxPixelZ(tile); } } static Foundation GetFoundation_Road(TileIndex tile, Slope tileh) { if (IsNormalRoad(tile)) { return GetRoadFoundation(tileh, GetAllRoadBits(tile)); } else { return FlatteningFoundation(tileh); } } static const Roadside _town_road_types[][2] = { { ROADSIDE_GRASS, ROADSIDE_GRASS }, { ROADSIDE_PAVED, ROADSIDE_PAVED }, { ROADSIDE_PAVED, ROADSIDE_PAVED }, { ROADSIDE_TREES, ROADSIDE_TREES }, { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED } }; static const Roadside _town_road_types_2[][2] = { { ROADSIDE_GRASS, ROADSIDE_GRASS }, { ROADSIDE_PAVED, ROADSIDE_PAVED }, { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED }, { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED }, { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED } }; static void TileLoop_Road(TileIndex tile) { switch (_settings_game.game_creation.landscape) { case LT_ARCTIC: if (IsOnSnow(tile) != (GetTileZ(tile) > GetSnowLine())) { ToggleSnow(tile); MarkTileDirtyByTile(tile); } break; case LT_TROPIC: if (GetTropicZone(tile) == TROPICZONE_DESERT && !IsOnDesert(tile)) { ToggleDesert(tile); MarkTileDirtyByTile(tile); } break; } if (IsRoadDepot(tile)) return; const Town *t = ClosestTownFromTile(tile, UINT_MAX); if (!HasRoadWorks(tile)) { HouseZonesBits grp = HZB_TOWN_EDGE; if (t != NULL) { grp = GetTownRadiusGroup(t, tile); /* Show an animation to indicate road work */ if (t->road_build_months != 0 && (DistanceManhattan(t->xy, tile) < 8 || grp != HZB_TOWN_EDGE) && IsNormalRoad(tile) && !HasAtMostOneBit(GetAllRoadBits(tile))) { if (GetFoundationSlope(tile) == SLOPE_FLAT && EnsureNoVehicleOnGround(tile).Succeeded() && Chance16(1, 40)) { StartRoadWorks(tile); if (_settings_client.sound.ambient) SndPlayTileFx(SND_21_JACKHAMMER, tile); CreateEffectVehicleAbove( TileX(tile) * TILE_SIZE + 7, TileY(tile) * TILE_SIZE + 7, 0, EV_BULLDOZER); MarkTileDirtyByTile(tile); return; } } } { /* Adjust road ground type depending on 'grp' (grp is the distance to the center) */ const Roadside *new_rs = (_settings_game.game_creation.landscape == LT_TOYLAND) ? _town_road_types_2[grp] : _town_road_types[grp]; Roadside cur_rs = GetRoadside(tile); /* We have our desired type, do nothing */ if (cur_rs == new_rs[0]) return; /* We have the pre-type of the desired type, switch to the desired type */ if (cur_rs == new_rs[1]) { cur_rs = new_rs[0]; /* We have barren land, install the pre-type */ } else if (cur_rs == ROADSIDE_BARREN) { cur_rs = new_rs[1]; /* We're totally off limits, remove any installation and make barren land */ } else { cur_rs = ROADSIDE_BARREN; } SetRoadside(tile, cur_rs); MarkTileDirtyByTile(tile); } } else if (IncreaseRoadWorksCounter(tile)) { TerminateRoadWorks(tile); if (_settings_game.economy.mod_road_rebuild) { /* Generate a nicer town surface */ const RoadBits old_rb = GetAnyRoadBits(tile, ROADTYPE_ROAD); const RoadBits new_rb = CleanUpRoadBits(tile, old_rb); if (old_rb != new_rb) { RemoveRoad(tile, DC_EXEC | DC_AUTO | DC_NO_WATER, (old_rb ^ new_rb), ROADTYPE_ROAD, true); } } MarkTileDirtyByTile(tile); } } static bool ClickTile_Road(TileIndex tile) { if (!IsRoadDepot(tile)) return false; ShowDepotWindow(tile, VEH_ROAD); return true; } /* Converts RoadBits to TrackBits */ static const TrackBits _road_trackbits[16] = { TRACK_BIT_NONE, // ROAD_NONE TRACK_BIT_NONE, // ROAD_NW TRACK_BIT_NONE, // ROAD_SW TRACK_BIT_LEFT, // ROAD_W TRACK_BIT_NONE, // ROAD_SE TRACK_BIT_Y, // ROAD_Y TRACK_BIT_LOWER, // ROAD_S TRACK_BIT_LEFT | TRACK_BIT_LOWER | TRACK_BIT_Y, // ROAD_Y | ROAD_SW TRACK_BIT_NONE, // ROAD_NE TRACK_BIT_UPPER, // ROAD_N TRACK_BIT_X, // ROAD_X TRACK_BIT_LEFT | TRACK_BIT_UPPER | TRACK_BIT_X, // ROAD_X | ROAD_NW TRACK_BIT_RIGHT, // ROAD_E TRACK_BIT_RIGHT | TRACK_BIT_UPPER | TRACK_BIT_Y, // ROAD_Y | ROAD_NE TRACK_BIT_RIGHT | TRACK_BIT_LOWER | TRACK_BIT_X, // ROAD_X | ROAD_SE TRACK_BIT_ALL, // ROAD_ALL }; static TrackStatus GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { TrackdirBits trackdirbits = TRACKDIR_BIT_NONE; TrackdirBits red_signals = TRACKDIR_BIT_NONE; // crossing barred switch (mode) { case TRANSPORT_RAIL: if (IsLevelCrossing(tile)) trackdirbits = TrackBitsToTrackdirBits(GetCrossingRailBits(tile)); break; case TRANSPORT_ROAD: if ((GetRoadTypes(tile) & sub_mode) == 0) break; switch (GetRoadTileType(tile)) { case ROAD_TILE_NORMAL: { const uint drd_to_multiplier[DRD_END] = { 0x101, 0x100, 0x1, 0x0 }; RoadType rt = (RoadType)FindFirstBit(sub_mode); RoadBits bits = GetRoadBits(tile, rt); /* no roadbit at this side of tile, return 0 */ if (side != INVALID_DIAGDIR && (DiagDirToRoadBits(side) & bits) == 0) break; uint multiplier = drd_to_multiplier[rt == ROADTYPE_TRAM ? DRD_NONE : GetDisallowedRoadDirections(tile)]; if (!HasRoadWorks(tile)) trackdirbits = (TrackdirBits)(_road_trackbits[bits] * multiplier); break; } case ROAD_TILE_CROSSING: { Axis axis = GetCrossingRoadAxis(tile); if (side != INVALID_DIAGDIR && axis != DiagDirToAxis(side)) break; trackdirbits = TrackBitsToTrackdirBits(AxisToTrackBits(axis)); if (IsCrossingBarred(tile)) red_signals = trackdirbits; break; } default: case ROAD_TILE_DEPOT: { DiagDirection dir = GetRoadDepotDirection(tile); if (side != INVALID_DIAGDIR && side != dir) break; trackdirbits = TrackBitsToTrackdirBits(DiagDirToDiagTrackBits(dir)); break; } } break; default: break; } return CombineTrackStatus(trackdirbits, red_signals); } static const StringID _road_tile_strings[] = { STR_LAI_ROAD_DESCRIPTION_ROAD, STR_LAI_ROAD_DESCRIPTION_ROAD, STR_LAI_ROAD_DESCRIPTION_ROAD, STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS, STR_LAI_ROAD_DESCRIPTION_ROAD, STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD, STR_LAI_ROAD_DESCRIPTION_ROAD, STR_LAI_ROAD_DESCRIPTION_ROAD, }; static void GetTileDesc_Road(TileIndex tile, TileDesc *td) { Owner rail_owner = INVALID_OWNER; Owner road_owner = INVALID_OWNER; Owner tram_owner = INVALID_OWNER; switch (GetRoadTileType(tile)) { case ROAD_TILE_CROSSING: { td->str = STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING; RoadTypes rts = GetRoadTypes(tile); rail_owner = GetTileOwner(tile); if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD); if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile)); td->rail_speed = rti->max_speed; break; } case ROAD_TILE_DEPOT: td->str = STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT; road_owner = GetTileOwner(tile); // Tile has only one owner, roadtype does not matter td->build_date = Depot::GetByTile(tile)->build_date; break; default: { RoadTypes rts = GetRoadTypes(tile); td->str = (HasBit(rts, ROADTYPE_ROAD) ? _road_tile_strings[GetRoadside(tile)] : STR_LAI_ROAD_DESCRIPTION_TRAMWAY); if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD); if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); break; } } /* Now we have to discover, if the tile has only one owner or many: * - Find a first_owner of the tile. (Currently road or tram must be present, but this will break when the third type becomes available) * - Compare the found owner with the other owners, and test if they differ. * Note: If road exists it will be the first_owner. */ Owner first_owner = (road_owner == INVALID_OWNER ? tram_owner : road_owner); bool mixed_owners = (tram_owner != INVALID_OWNER && tram_owner != first_owner) || (rail_owner != INVALID_OWNER && rail_owner != first_owner); if (mixed_owners) { /* Multiple owners */ td->owner_type[0] = (rail_owner == INVALID_OWNER ? STR_NULL : STR_LAND_AREA_INFORMATION_RAIL_OWNER); td->owner[0] = rail_owner; td->owner_type[1] = (road_owner == INVALID_OWNER ? STR_NULL : STR_LAND_AREA_INFORMATION_ROAD_OWNER); td->owner[1] = road_owner; td->owner_type[2] = (tram_owner == INVALID_OWNER ? STR_NULL : STR_LAND_AREA_INFORMATION_TRAM_OWNER); td->owner[2] = tram_owner; } else { /* One to rule them all */ td->owner[0] = first_owner; } } /** * Given the direction the road depot is pointing, this is the direction the * vehicle should be travelling in in order to enter the depot. */ static const byte _roadveh_enter_depot_dir[4] = { TRACKDIR_X_SW, TRACKDIR_Y_NW, TRACKDIR_X_NE, TRACKDIR_Y_SE }; static VehicleEnterTileStatus VehicleEnter_Road(Vehicle *v, TileIndex tile, int x, int y) { switch (GetRoadTileType(tile)) { case ROAD_TILE_DEPOT: { if (v->type != VEH_ROAD) break; RoadVehicle *rv = RoadVehicle::From(v); if (rv->frame == RVC_DEPOT_STOP_FRAME && _roadveh_enter_depot_dir[GetRoadDepotDirection(tile)] == rv->state) { rv->state = RVSB_IN_DEPOT; rv->vehstatus |= VS_HIDDEN; rv->direction = ReverseDir(rv->direction); if (rv->Next() == NULL) VehicleEnterDepot(rv->First()); rv->tile = tile; InvalidateWindowData(WC_VEHICLE_DEPOT, rv->tile); return VETSB_ENTERED_WORMHOLE; } break; } default: break; } return VETSB_CONTINUE; } static void ChangeTileOwner_Road(TileIndex tile, Owner old_owner, Owner new_owner) { if (IsRoadDepot(tile)) { if (GetTileOwner(tile) == old_owner) { if (new_owner == INVALID_OWNER) { DoCommand(tile, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR); } else { /* A road depot has two road bits. No need to dirty windows here, we'll redraw the whole screen anyway. */ RoadType rt = (RoadType)FIND_FIRST_BIT(GetRoadTypes(tile)); Company::Get(old_owner)->infrastructure.road[rt] -= 2; Company::Get(new_owner)->infrastructure.road[rt] += 2; SetTileOwner(tile, new_owner); } } return; } for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) { /* Update all roadtypes, no matter if they are present */ if (GetRoadOwner(tile, rt) == old_owner) { if (HasTileRoadType(tile, rt)) { /* A level crossing has two road bits. No need to dirty windows here, we'll redraw the whole screen anyway. */ uint num_bits = IsLevelCrossing(tile) ? 2 : CountBits(GetRoadBits(tile, rt)); Company::Get(old_owner)->infrastructure.road[rt] -= num_bits; if (new_owner != INVALID_OWNER) Company::Get(new_owner)->infrastructure.road[rt] += num_bits; } SetRoadOwner(tile, rt, new_owner == INVALID_OWNER ? OWNER_NONE : new_owner); } } if (IsLevelCrossing(tile)) { if (GetTileOwner(tile) == old_owner) { if (new_owner == INVALID_OWNER) { DoCommand(tile, 0, GetCrossingRailTrack(tile), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL); } else { /* Update infrastructure counts. No need to dirty windows here, we'll redraw the whole screen anyway. */ Company::Get(old_owner)->infrastructure.rail[GetRailType(tile)] -= LEVELCROSSING_TRACKBIT_FACTOR; Company::Get(new_owner)->infrastructure.rail[GetRailType(tile)] += LEVELCROSSING_TRACKBIT_FACTOR; SetTileOwner(tile, new_owner); } } } } static CommandCost TerraformTile_Road(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { if (_settings_game.construction.build_on_slopes && AutoslopeEnabled()) { switch (GetRoadTileType(tile)) { case ROAD_TILE_CROSSING: if (!IsSteepSlope(tileh_new) && (GetTileMaxZ(tile) == z_new + GetSlopeMaxZ(tileh_new)) && HasBit(VALID_LEVEL_CROSSING_SLOPES, tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); break; case ROAD_TILE_DEPOT: if (AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRoadDepotDirection(tile))) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); break; case ROAD_TILE_NORMAL: { RoadBits bits = GetAllRoadBits(tile); RoadBits bits_copy = bits; /* Check if the slope-road_bits combination is valid at all, i.e. it is safe to call GetRoadFoundation(). */ if (CheckRoadSlope(tileh_new, &bits_copy, ROAD_NONE, ROAD_NONE).Succeeded()) { /* CheckRoadSlope() sometimes changes the road_bits, if it does not agree with them. */ if (bits == bits_copy) { int z_old; Slope tileh_old = GetTileSlope(tile, &z_old); /* Get the slope on top of the foundation */ z_old += ApplyFoundationToSlope(GetRoadFoundation(tileh_old, bits), &tileh_old); z_new += ApplyFoundationToSlope(GetRoadFoundation(tileh_new, bits), &tileh_new); /* The surface slope must not be changed */ if ((z_old == z_new) && (tileh_old == tileh_new)) return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); } } break; } default: NOT_REACHED(); } } return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } /** Tile callback functions for road tiles */ extern const TileTypeProcs _tile_type_road_procs = { DrawTile_Road, // draw_tile_proc GetSlopePixelZ_Road, // get_slope_z_proc ClearTile_Road, // clear_tile_proc NULL, // add_accepted_cargo_proc GetTileDesc_Road, // get_tile_desc_proc GetTileTrackStatus_Road, // get_tile_track_status_proc ClickTile_Road, // click_tile_proc NULL, // animate_tile_proc TileLoop_Road, // tile_loop_proc ChangeTileOwner_Road, // change_tile_owner_proc NULL, // add_produced_cargo_proc VehicleEnter_Road, // vehicle_enter_tile_proc GetFoundation_Road, // get_foundation_proc TerraformTile_Road, // terraform_tile_proc }; openttd-1.3.3/src/clear_map.h0000644000000000000000000002422112246102611014550 0ustar rootroot/* $Id: clear_map.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file clear_map.h Map accessors for 'clear' tiles */ #ifndef CLEAR_MAP_H #define CLEAR_MAP_H #include "bridge_map.h" #include "industry_type.h" /** * Ground types. Valid densities in comments after the enum. */ enum ClearGround { CLEAR_GRASS = 0, ///< 0-3 CLEAR_ROUGH = 1, ///< 3 CLEAR_ROCKS = 2, ///< 3 CLEAR_FIELDS = 3, ///< 3 CLEAR_SNOW = 4, ///< 0-3 CLEAR_DESERT = 5, ///< 1,3 }; /** * Test if a tile is covered with snow. * @param t the tile to check * @pre IsTileType(t, MP_CLEAR) * @return whether the tile is covered with snow. */ static inline bool IsSnowTile(TileIndex t) { assert(IsTileType(t, MP_CLEAR)); return HasBit(_m[t].m3, 4); } /** * Get the type of clear tile but never return CLEAR_SNOW. * @param t the tile to get the clear ground type of * @pre IsTileType(t, MP_CLEAR) * @return the ground type */ static inline ClearGround GetRawClearGround(TileIndex t) { assert(IsTileType(t, MP_CLEAR)); return (ClearGround)GB(_m[t].m5, 2, 3); } /** * Get the type of clear tile. * @param t the tile to get the clear ground type of * @pre IsTileType(t, MP_CLEAR) * @return the ground type */ static inline ClearGround GetClearGround(TileIndex t) { if (IsSnowTile(t)) return CLEAR_SNOW; return GetRawClearGround(t); } /** * Set the type of clear tile. * @param t the tile to set the clear ground type of * @param ct the ground type * @pre IsTileType(t, MP_CLEAR) */ static inline bool IsClearGround(TileIndex t, ClearGround ct) { return GetClearGround(t) == ct; } /** * Get the density of a non-field clear tile. * @param t the tile to get the density of * @pre IsTileType(t, MP_CLEAR) * @return the density */ static inline uint GetClearDensity(TileIndex t) { assert(IsTileType(t, MP_CLEAR)); return GB(_m[t].m5, 0, 2); } /** * Increment the density of a non-field clear tile. * @param t the tile to increment the density of * @param d the amount to increment the density with * @pre IsTileType(t, MP_CLEAR) */ static inline void AddClearDensity(TileIndex t, int d) { assert(IsTileType(t, MP_CLEAR)); // XXX incomplete _m[t].m5 += d; } /** * Set the density of a non-field clear tile. * @param t the tile to set the density of * @param d the new density * @pre IsTileType(t, MP_CLEAR) */ static inline void SetClearDensity(TileIndex t, uint d) { assert(IsTileType(t, MP_CLEAR)); SB(_m[t].m5, 0, 2, d); } /** * Get the counter used to advance to the next clear density/field type. * @param t the tile to get the counter of * @pre IsTileType(t, MP_CLEAR) * @return the value of the counter */ static inline uint GetClearCounter(TileIndex t) { assert(IsTileType(t, MP_CLEAR)); return GB(_m[t].m5, 5, 3); } /** * Increments the counter used to advance to the next clear density/field type. * @param t the tile to increment the counter of * @param c the amount to increment the counter with * @pre IsTileType(t, MP_CLEAR) */ static inline void AddClearCounter(TileIndex t, int c) { assert(IsTileType(t, MP_CLEAR)); // XXX incomplete _m[t].m5 += c << 5; } /** * Sets the counter used to advance to the next clear density/field type. * @param t the tile to set the counter of * @param c the amount to set the counter to * @pre IsTileType(t, MP_CLEAR) */ static inline void SetClearCounter(TileIndex t, uint c) { assert(IsTileType(t, MP_CLEAR)); // XXX incomplete SB(_m[t].m5, 5, 3, c); } /** * Sets ground type and density in one go, also sets the counter to 0 * @param t the tile to set the ground type and density for * @param type the new ground type of the tile * @param density the density of the ground tile * @pre IsTileType(t, MP_CLEAR) */ static inline void SetClearGroundDensity(TileIndex t, ClearGround type, uint density) { assert(IsTileType(t, MP_CLEAR)); // XXX incomplete _m[t].m5 = 0 << 5 | type << 2 | density; } /** * Get the field type (production stage) of the field * @param t the field to get the type of * @pre GetClearGround(t) == CLEAR_FIELDS * @return the field type */ static inline uint GetFieldType(TileIndex t) { assert(GetClearGround(t) == CLEAR_FIELDS); return GB(_m[t].m3, 0, 4); } /** * Set the field type (production stage) of the field * @param t the field to get the type of * @param f the field type * @pre GetClearGround(t) == CLEAR_FIELDS */ static inline void SetFieldType(TileIndex t, uint f) { assert(GetClearGround(t) == CLEAR_FIELDS); // XXX incomplete SB(_m[t].m3, 0, 4, f); } /** * Get the industry (farm) that made the field * @param t the field to get creating industry of * @pre GetClearGround(t) == CLEAR_FIELDS * @return the industry that made the field */ static inline IndustryID GetIndustryIndexOfField(TileIndex t) { assert(GetClearGround(t) == CLEAR_FIELDS); return(IndustryID) _m[t].m2; } /** * Set the industry (farm) that made the field * @param t the field to get creating industry of * @param i the industry that made the field * @pre GetClearGround(t) == CLEAR_FIELDS */ static inline void SetIndustryIndexOfField(TileIndex t, IndustryID i) { assert(GetClearGround(t) == CLEAR_FIELDS); _m[t].m2 = i; } /** * Is there a fence at the south eastern border? * @param t the tile to check for fences * @pre IsClearGround(t, CLEAR_FIELDS) * @return 0 if there is no fence, otherwise the fence type */ static inline uint GetFenceSE(TileIndex t) { assert(IsClearGround(t, CLEAR_FIELDS)); return GB(_m[t].m4, 2, 3); } /** * Sets the type of fence (and whether there is one) for the south * eastern border. * @param t the tile to check for fences * @param h 0 if there is no fence, otherwise the fence type * @pre IsClearGround(t, CLEAR_FIELDS) */ static inline void SetFenceSE(TileIndex t, uint h) { assert(IsClearGround(t, CLEAR_FIELDS)); SB(_m[t].m4, 2, 3, h); } /** * Is there a fence at the south western border? * @param t the tile to check for fences * @pre IsClearGround(t, CLEAR_FIELDS) * @return 0 if there is no fence, otherwise the fence type */ static inline uint GetFenceSW(TileIndex t) { assert(IsClearGround(t, CLEAR_FIELDS)); return GB(_m[t].m4, 5, 3); } /** * Sets the type of fence (and whether there is one) for the south * western border. * @param t the tile to check for fences * @param h 0 if there is no fence, otherwise the fence type * @pre IsClearGround(t, CLEAR_FIELDS) */ static inline void SetFenceSW(TileIndex t, uint h) { assert(IsClearGround(t, CLEAR_FIELDS)); SB(_m[t].m4, 5, 3, h); } /** * Is there a fence at the north eastern border? * @param t the tile to check for fences * @pre IsClearGround(t, CLEAR_FIELDS) * @return 0 if there is no fence, otherwise the fence type */ static inline uint GetFenceNE(TileIndex t) { assert(IsClearGround(t, CLEAR_FIELDS)); return GB(_m[t].m3, 5, 3); } /** * Sets the type of fence (and whether there is one) for the north * eastern border. * @param t the tile to check for fences * @param h 0 if there is no fence, otherwise the fence type * @pre IsClearGround(t, CLEAR_FIELDS) */ static inline void SetFenceNE(TileIndex t, uint h) { assert(IsClearGround(t, CLEAR_FIELDS)); SB(_m[t].m3, 5, 3, h); } /** * Is there a fence at the north western border? * @param t the tile to check for fences * @pre IsClearGround(t, CLEAR_FIELDS) * @return 0 if there is no fence, otherwise the fence type */ static inline uint GetFenceNW(TileIndex t) { assert(IsClearGround(t, CLEAR_FIELDS)); return GB(_m[t].m6, 2, 3); } /** * Sets the type of fence (and whether there is one) for the north * western border. * @param t the tile to check for fences * @param h 0 if there is no fence, otherwise the fence type * @pre IsClearGround(t, CLEAR_FIELDS) */ static inline void SetFenceNW(TileIndex t, uint h) { assert(IsClearGround(t, CLEAR_FIELDS)); SB(_m[t].m6, 2, 3, h); } /** * Make a clear tile. * @param t the tile to make a clear tile * @param g the type of ground * @param density the density of the grass/snow/desert etc */ static inline void MakeClear(TileIndex t, ClearGround g, uint density) { /* If this is a non-bridgeable tile, clear the bridge bits while the rest * of the tile information is still here. */ if (!MayHaveBridgeAbove(t)) SB(_m[t].m6, 6, 2, 0); SetTileType(t, MP_CLEAR); _m[t].m1 = 0; SetTileOwner(t, OWNER_NONE); _m[t].m2 = 0; _m[t].m3 = 0; _m[t].m4 = 0 << 5 | 0 << 2; SetClearGroundDensity(t, g, density); // Sets m5 SB(_m[t].m6, 2, 4, 0); // Other bits are "tropic zone" and "bridge above" _me[t].m7 = 0; } /** * Make a (farm) field tile. * @param t the tile to make a farm field * @param field_type the 'growth' level of the field * @param industry the industry this tile belongs to */ static inline void MakeField(TileIndex t, uint field_type, IndustryID industry) { SetTileType(t, MP_CLEAR); _m[t].m1 = 0; SetTileOwner(t, OWNER_NONE); _m[t].m2 = industry; _m[t].m3 = field_type; _m[t].m4 = 0 << 5 | 0 << 2; SetClearGroundDensity(t, CLEAR_FIELDS, 3); SB(_m[t].m6, 2, 4, 0); _me[t].m7 = 0; } /** * Make a snow tile. * @param t the tile to make snowy * @param density The density of snowiness. * @pre GetClearGround(t) != CLEAR_SNOW */ static inline void MakeSnow(TileIndex t, uint density = 0) { assert(GetClearGround(t) != CLEAR_SNOW); SetBit(_m[t].m3, 4); if (GetRawClearGround(t) == CLEAR_FIELDS) { SetClearGroundDensity(t, CLEAR_GRASS, density); } else { SetClearDensity(t, density); } } /** * Clear the snow from a tile and return it to its previous type. * @param t the tile to clear of snow * @pre GetClearGround(t) == CLEAR_SNOW */ static inline void ClearSnow(TileIndex t) { assert(GetClearGround(t) == CLEAR_SNOW); ClrBit(_m[t].m3, 4); SetClearDensity(t, 3); } #endif /* CLEAR_MAP_H */ openttd-1.3.3/src/gfx.cpp0000644000000000000000000014600112246102611013745 0ustar rootroot/* $Id: gfx.cpp 26024 2013-11-17 13:35:48Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file gfx.cpp Handling of drawing text and other gfx related stuff. */ #include "stdafx.h" #include "gfx_layout.h" #include "progress.h" #include "zoom_func.h" #include "blitter/factory.hpp" #include "video/video_driver.hpp" #include "strings_func.h" #include "settings_type.h" #include "network/network.h" #include "network/network_func.h" #include "window_func.h" #include "newgrf_debug.h" #include "table/palettes.h" #include "table/sprites.h" #include "table/control_codes.h" byte _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down bool _fullscreen; CursorVars _cursor; bool _ctrl_pressed; ///< Is Ctrl pressed? bool _shift_pressed; ///< Is Shift pressed? byte _fast_forward; bool _left_button_down; ///< Is left mouse button pressed? bool _left_button_clicked; ///< Is left mouse button clicked? bool _right_button_down; ///< Is right mouse button pressed? bool _right_button_clicked; ///< Is right mouse button clicked? DrawPixelInfo _screen; bool _screen_disable_anim = false; ///< Disable palette animation (important for 32bpp-anim blitter during giant screenshot) bool _exit_game; GameMode _game_mode; SwitchMode _switch_mode; ///< The next mainloop command. PauseModeByte _pause_mode; Palette _cur_palette; static byte _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth() DrawPixelInfo *_cur_dpi; byte _colour_gradient[COLOUR_END][8]; static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL, SpriteID sprite_id = SPR_CURSOR_MOUSE); static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_NORMAL); static ReusableBuffer _cursor_backup; /** * The rect for repaint. * * This rectangle defines the area which should be repaint by the video driver. * * @ingroup dirty */ static Rect _invalid_rect; static const byte *_colour_remap_ptr; static byte _string_colourremap[3]; ///< Recoloursprite for stringdrawing. The grf loader ensures that #ST_FONT sprites only use colours 0 to 2. static const uint DIRTY_BLOCK_HEIGHT = 8; static const uint DIRTY_BLOCK_WIDTH = 64; static uint _dirty_bytes_per_line = 0; static byte *_dirty_blocks = NULL; extern uint _dirty_block_colour; void GfxScroll(int left, int top, int width, int height, int xo, int yo) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); if (xo == 0 && yo == 0) return; if (_cursor.visible) UndrawMouseCursor(); #ifdef ENABLE_NETWORK if (_networking) NetworkUndrawChatMessage(); #endif /* ENABLE_NETWORK */ blitter->ScrollBuffer(_screen.dst_ptr, left, top, width, height, xo, yo); /* This part of the screen is now dirty. */ _video_driver->MakeDirty(left, top, width, height); } /** * Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen. * * @pre dpi->zoom == ZOOM_LVL_NORMAL, right >= left, bottom >= top * @param left Minimum X (inclusive) * @param top Minimum Y (inclusive) * @param right Maximum X (inclusive) * @param bottom Maximum Y (inclusive) * @param colour A 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR) * @param mode * FILLRECT_OPAQUE: Fill the rectangle with the specified colour * FILLRECT_CHECKER: Like FILLRECT_OPAQUE, but only draw every second pixel (used to grey out things) * FILLRECT_RECOLOUR: Apply a recolour sprite to every pixel in the rectangle currently on screen */ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectMode mode) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); const DrawPixelInfo *dpi = _cur_dpi; void *dst; const int otop = top; const int oleft = left; if (dpi->zoom != ZOOM_LVL_NORMAL) return; if (left > right || top > bottom) return; if (right < dpi->left || left >= dpi->left + dpi->width) return; if (bottom < dpi->top || top >= dpi->top + dpi->height) return; if ( (left -= dpi->left) < 0) left = 0; right = right - dpi->left + 1; if (right > dpi->width) right = dpi->width; right -= left; assert(right > 0); if ( (top -= dpi->top) < 0) top = 0; bottom = bottom - dpi->top + 1; if (bottom > dpi->height) bottom = dpi->height; bottom -= top; assert(bottom > 0); dst = blitter->MoveTo(dpi->dst_ptr, left, top); switch (mode) { default: // FILLRECT_OPAQUE blitter->DrawRect(dst, right, bottom, (uint8)colour); break; case FILLRECT_RECOLOUR: blitter->DrawColourMappingRect(dst, right, bottom, GB(colour, 0, PALETTE_WIDTH)); break; case FILLRECT_CHECKER: { byte bo = (oleft - left + dpi->left + otop - top + dpi->top) & 1; do { for (int i = (bo ^= 1); i < right; i += 2) blitter->SetPixel(dst, i, 0, (uint8)colour); dst = blitter->MoveTo(dst, 0, 1); } while (--bottom > 0); break; } } } void GfxDrawLine(int x, int y, int x2, int y2, int colour, int width) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); DrawPixelInfo *dpi = _cur_dpi; assert(width > 0); x -= dpi->left; x2 -= dpi->left; y -= dpi->top; y2 -= dpi->top; /* Check clipping */ if (x + width / 2 < 0 && x2 + width / 2 < 0 ) return; if (y + width / 2 < 0 && y2 + width / 2 < 0 ) return; if (x - width / 2 > dpi->width && x2 - width / 2 > dpi->width ) return; if (y - width / 2 > dpi->height && y2 - width / 2 > dpi->height) return; blitter->DrawLine(dpi->dst_ptr, x, y, x2, y2, dpi->width, dpi->height, colour, width); } void GfxDrawLineUnscaled(int x, int y, int x2, int y2, int colour) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); DrawPixelInfo *dpi = _cur_dpi; x -= dpi->left; x2 -= dpi->left; y -= dpi->top; y2 -= dpi->top; /* Check clipping */ if (x < 0 && x2 < 0) return; if (y < 0 && y2 < 0) return; if (x > dpi->width && x2 > dpi->width) return; if (y > dpi->height && y2 > dpi->height) return; blitter->DrawLine(dpi->dst_ptr, UnScaleByZoom(x, dpi->zoom), UnScaleByZoom(y, dpi->zoom), UnScaleByZoom(x2, dpi->zoom), UnScaleByZoom(y2, dpi->zoom), UnScaleByZoom(dpi->width, dpi->zoom), UnScaleByZoom(dpi->height, dpi->zoom), colour, 1); } /** * Draws the projection of a parallelepiped. * This can be used to draw boxes in world coordinates. * * @param x Screen X-coordinate of top front corner. * @param y Screen Y-coordinate of top front corner. * @param dx1 Screen X-length of first edge. * @param dy1 Screen Y-length of first edge. * @param dx2 Screen X-length of second edge. * @param dy2 Screen Y-length of second edge. * @param dx3 Screen X-length of third edge. * @param dy3 Screen Y-length of third edge. */ void DrawBox(int x, int y, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3) { /* .... * .. .... * .. .... * .. ^ * <--__(dx1,dy1) /(dx2,dy2) * : --__ / : * : --__ / : * : *(x,y) : * : | : * : | .. * .... |(dx3,dy3) * .... | .. * ....V. */ static const byte colour = PC_WHITE; GfxDrawLineUnscaled(x, y, x + dx1, y + dy1, colour); GfxDrawLineUnscaled(x, y, x + dx2, y + dy2, colour); GfxDrawLineUnscaled(x, y, x + dx3, y + dy3, colour); GfxDrawLineUnscaled(x + dx1, y + dy1, x + dx1 + dx2, y + dy1 + dy2, colour); GfxDrawLineUnscaled(x + dx1, y + dy1, x + dx1 + dx3, y + dy1 + dy3, colour); GfxDrawLineUnscaled(x + dx2, y + dy2, x + dx2 + dx1, y + dy2 + dy1, colour); GfxDrawLineUnscaled(x + dx2, y + dy2, x + dx2 + dx3, y + dy2 + dy3, colour); GfxDrawLineUnscaled(x + dx3, y + dy3, x + dx3 + dx1, y + dy3 + dy1, colour); GfxDrawLineUnscaled(x + dx3, y + dy3, x + dx3 + dx2, y + dy3 + dy2, colour); } /** * Set the colour remap to be for the given colour. * @param colour the new colour of the remap. */ static void SetColourRemap(TextColour colour) { if (colour == TC_INVALID) return; /* Black strings have no shading ever; the shading is black, so it * would be invisible at best, but it actually makes it illegible. */ bool no_shade = (colour & TC_NO_SHADE) != 0 || colour == TC_BLACK; bool raw_colour = (colour & TC_IS_PALETTE_COLOUR) != 0; colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR); _string_colourremap[1] = raw_colour ? (byte)colour : _string_colourmap[colour]; _string_colourremap[2] = no_shade ? 0 : 1; _colour_remap_ptr = _string_colourremap; } /** * Drawing routine for drawing a laid out line of text. * @param line String to draw. * @param y The top most position to draw on. * @param left The left most position to draw on. * @param right The right most position to draw on. * @param align The alignment of the string when drawing left-to-right. In the * case a right-to-left language is chosen this is inverted so it * will be drawn in the right direction. * @param underline Whether to underline what has been drawn or not. * @param truncation Whether to perform string truncation or not. * * @return In case of left or center alignment the right most pixel we have drawn to. * In case of right alignment the left most pixel we have drawn to. */ static int DrawLayoutLine(const ParagraphLayouter::Line *line, int y, int left, int right, StringAlignment align, bool underline, bool truncation) { if (line->CountRuns() == 0) return 0; int w = line->GetWidth(); int h = line->GetLeading(); /* * The following is needed for truncation. * Depending on the text direction, we either remove bits at the rear * or the front. For this we shift the entire area to draw so it fits * within the left/right bounds and the side we do not truncate it on. * Then we determine the truncation location, i.e. glyphs that fall * outside of the range min_x - max_x will not be drawn; they are thus * the truncated glyphs. * * At a later step we insert the dots. */ int max_w = right - left + 1; // The maximum width. int offset_x = 0; // The offset we need for positioning the glyphs int min_x = left; // The minimum x position to draw normal glyphs on. int max_x = right; // The maximum x position to draw normal glyphs on. truncation &= max_w < w; // Whether we need to do truncation. int dot_width = 0; // Cache for the width of the dot. const Sprite *dot_sprite = NULL; // Cache for the sprite of the dot. if (truncation) { /* * Assumption may be made that all fonts of a run are of the same size. * In any case, we'll use these dots for the abbreviation, so even if * another size would be chosen it won't have truncated too little for * the truncation dots. */ FontCache *fc = ((const Font*)line->GetVisualRun(0)->GetFont())->fc; GlyphID dot_glyph = fc->MapCharToGlyph('.'); dot_width = fc->GetGlyphWidth(dot_glyph); dot_sprite = fc->GetGlyph(dot_glyph); if (_current_text_dir == TD_RTL) { min_x += 3 * dot_width; offset_x = w - 3 * dot_width - max_w; } else { max_x -= 3 * dot_width; } w = max_w; } /* In case we have a RTL language we swap the alignment. */ if (!(align & SA_FORCE) && _current_text_dir == TD_RTL && (align & SA_HOR_MASK) != SA_HOR_CENTER) align ^= SA_RIGHT; /* right is the right most position to draw on. In this case we want to do * calculations with the width of the string. In comparison right can be * seen as lastof(todraw) and width as lengthof(todraw). They differ by 1. * So most +1/-1 additions are to move from lengthof to 'indices'. */ switch (align & SA_HOR_MASK) { case SA_LEFT: /* right + 1 = left + w */ right = left + w - 1; break; case SA_HOR_CENTER: left = RoundDivSU(right + 1 + left - w, 2); /* right + 1 = left + w */ right = left + w - 1; break; case SA_RIGHT: left = right + 1 - w; break; default: NOT_REACHED(); } for (int run_index = 0; run_index < line->CountRuns(); run_index++) { const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index); const Font *f = (const Font*)run->GetFont(); FontCache *fc = f->fc; TextColour colour = f->colour; SetColourRemap(colour); DrawPixelInfo *dpi = _cur_dpi; int dpi_left = dpi->left; int dpi_right = dpi->left + dpi->width - 1; bool draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK; for (int i = 0; i < run->GetGlyphCount(); i++) { GlyphID glyph = run->GetGlyphs()[i]; /* Not a valid glyph (empty) */ if (glyph == 0xFFFF) continue; int begin_x = (int)run->GetPositions()[i * 2] + left - offset_x; int end_x = (int)run->GetPositions()[i * 2 + 2] + left - offset_x - 1; int top = (int)run->GetPositions()[i * 2 + 1] + y; /* Truncated away. */ if (truncation && (begin_x < min_x || end_x > max_x)) continue; const Sprite *sprite = fc->GetGlyph(glyph); /* Check clipping (the "+ 1" is for the shadow). */ if (begin_x + sprite->x_offs > dpi_right || begin_x + sprite->x_offs + sprite->width /* - 1 + 1 */ < dpi_left) continue; if (draw_shadow && (glyph & SPRITE_GLYPH) == 0) { SetColourRemap(TC_BLACK); GfxMainBlitter(sprite, begin_x + 1, top + 1, BM_COLOUR_REMAP); SetColourRemap(colour); } GfxMainBlitter(sprite, begin_x, top, BM_COLOUR_REMAP); } } if (truncation) { int x = (_current_text_dir == TD_RTL) ? left : (right - 3 * dot_width); for (int i = 0; i < 3; i++, x += dot_width) { GfxMainBlitter(dot_sprite, x, y, BM_COLOUR_REMAP); } } if (underline) { GfxFillRect(left, y + h, right, y + h, _string_colourremap[1]); } return (align & SA_HOR_MASK) == SA_RIGHT ? left : right; } /** * Draw string, possibly truncated to make it fit in its allocated space * * @param left The left most position to draw on. * @param right The right most position to draw on. * @param top The top most position to draw on. * @param str String to draw. * @param colour Colour used for drawing the string, see DoDrawString() for details * @param align The alignment of the string when drawing left-to-right. In the * case a right-to-left language is chosen this is inverted so it * will be drawn in the right direction. * @param underline Whether to underline what has been drawn or not. * @param fontsize The size of the initial characters. * @return In case of left or center alignment the right most pixel we have drawn to. * In case of right alignment the left most pixel we have drawn to. */ int DrawString(int left, int right, int top, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { /* The string may contain control chars to change the font, just use the biggest font for clipping. */ int max_height = max(max(FONT_HEIGHT_SMALL, FONT_HEIGHT_NORMAL), max(FONT_HEIGHT_LARGE, FONT_HEIGHT_MONO)); /* Funny glyphs may extent outside the usual bounds, so relax the clipping somewhat. */ int extra = max_height / 2; if (_cur_dpi->top + _cur_dpi->height + extra < top || _cur_dpi->top > top + max_height + extra || _cur_dpi->left + _cur_dpi->width + extra < left || _cur_dpi->left > right + extra) { return 0; } Layouter layout(str, INT32_MAX, colour, fontsize); if (layout.Length() == 0) return 0; return DrawLayoutLine(*layout.Begin(), top, left, right, align, underline, true); } /** * Draw string, possibly truncated to make it fit in its allocated space * * @param left The left most position to draw on. * @param right The right most position to draw on. * @param top The top most position to draw on. * @param str String to draw. * @param colour Colour used for drawing the string, see DoDrawString() for details * @param align The alignment of the string when drawing left-to-right. In the * case a right-to-left language is chosen this is inverted so it * will be drawn in the right direction. * @param underline Whether to underline what has been drawn or not. * @param fontsize The size of the initial characters. * @return In case of left or center alignment the right most pixel we have drawn to. * In case of right alignment the left most pixel we have drawn to. */ int DrawString(int left, int right, int top, StringID str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); return DrawString(left, right, top, buffer, colour, align, underline, fontsize); } /** * Calculates height of string (in pixels). The string is changed to a multiline string if needed. * @param str string to check * @param maxw maximum string width * @return height of pixels of string when it is drawn */ static int GetStringHeight(const char *str, int maxw) { Layouter layout(str, maxw); return layout.GetBounds().height; } /** * Calculates height of string (in pixels). The string is changed to a multiline string if needed. * @param str string to check * @param maxw maximum string width * @return height of pixels of string when it is drawn */ int GetStringHeight(StringID str, int maxw) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); return GetStringHeight(buffer, maxw); } /** * Calculates number of lines of string. The string is changed to a multiline string if needed. * @param str string to check * @param maxw maximum string width * @return number of lines of string when it is drawn */ int GetStringLineCount(StringID str, int maxw) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); Layouter layout(buffer, maxw); return layout.Length(); } /** * Calculate string bounding box for multi-line strings. * @param str String to check. * @param suggestion Suggested bounding box. * @return Bounding box for the multi-line string, may be bigger than \a suggestion. */ Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion) { Dimension box = {suggestion.width, GetStringHeight(str, suggestion.width)}; return box; } /** * Calculate string bounding box for multi-line strings. * @param str String to check. * @param suggestion Suggested bounding box. * @return Bounding box for the multi-line string, may be bigger than \a suggestion. */ Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &suggestion) { Dimension box = {suggestion.width, GetStringHeight(str, suggestion.width)}; return box; } /** * Draw string, possibly over multiple lines. * * @param left The left most position to draw on. * @param right The right most position to draw on. * @param top The top most position to draw on. * @param bottom The bottom most position to draw on. * @param str String to draw. * @param colour Colour used for drawing the string, see DoDrawString() for details * @param align The horizontal and vertical alignment of the string. * @param underline Whether to underline all strings * @param fontsize The size of the initial characters. * * @return If \a align is #SA_BOTTOM, the top to where we have written, else the bottom to where we have written. */ int DrawStringMultiLine(int left, int right, int top, int bottom, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { int maxw = right - left + 1; int maxh = bottom - top + 1; /* It makes no sense to even try if it can't be drawn anyway, or * do we really want to support fonts of 0 or less pixels high? */ if (maxh <= 0) return top; Layouter layout(str, maxw, colour, fontsize); int total_height = layout.GetBounds().height; int y; switch (align & SA_VERT_MASK) { case SA_TOP: y = top; break; case SA_VERT_CENTER: y = RoundDivSU(bottom + top - total_height, 2); break; case SA_BOTTOM: y = bottom - total_height; break; default: NOT_REACHED(); } int last_line = top; int first_line = bottom; for (const ParagraphLayouter::Line **iter = layout.Begin(); iter != layout.End(); iter++) { const ParagraphLayouter::Line *line = *iter; int line_height = line->GetLeading(); if (y >= top && y < bottom) { last_line = y + line_height; if (first_line > y) first_line = y; DrawLayoutLine(line, y, left, right, align, underline, false); } y += line_height; } return ((align & SA_VERT_MASK) == SA_BOTTOM) ? first_line : last_line; } /** * Draw string, possibly over multiple lines. * * @param left The left most position to draw on. * @param right The right most position to draw on. * @param top The top most position to draw on. * @param bottom The bottom most position to draw on. * @param str String to draw. * @param colour Colour used for drawing the string, see DoDrawString() for details * @param align The horizontal and vertical alignment of the string. * @param underline Whether to underline all strings * @param fontsize The size of the initial characters. * * @return If \a align is #SA_BOTTOM, the top to where we have written, else the bottom to where we have written. */ int DrawStringMultiLine(int left, int right, int top, int bottom, StringID str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, str, lastof(buffer)); return DrawStringMultiLine(left, right, top, bottom, buffer, colour, align, underline, fontsize); } /** * Return the string dimension in pixels. The height and width are returned * in a single Dimension value. TINYFONT, BIGFONT modifiers are only * supported as the first character of the string. The returned dimensions * are therefore a rough estimation correct for all the current strings * but not every possible combination * @param str string to calculate pixel-width * @param start_fontsize Fontsize to start the text with * @return string width and height in pixels */ Dimension GetStringBoundingBox(const char *str, FontSize start_fontsize) { Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); return layout.GetBounds(); } /** * Get bounding box of a string. Uses parameters set by #DParam if needed. * Has the same restrictions as #GetStringBoundingBox(const char *str). * @param strid String to examine. * @return Width and height of the bounding box for the string in pixels. */ Dimension GetStringBoundingBox(StringID strid) { char buffer[DRAW_STRING_BUFFER]; GetString(buffer, strid, lastof(buffer)); return GetStringBoundingBox(buffer); } /** * Get the leading corner of a character in a single-line string relative * to the start of the string. * @param str String containing the character. * @param ch Pointer to the character in the string. * @param start_fontsize Font size to start the text with. * @return Upper left corner of the glyph associated with the character. */ Point GetCharPosInString(const char *str, const char *ch, FontSize start_fontsize) { Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); return layout.GetCharPosition(ch); } /** * Get the character from a string that is drawn at a specific position. * @param str String to test. * @param x Position relative to the start of the string. * @param start_fontsize Font size to start the text with. * @return Pointer to the character at the position or NULL if there is no character at the position. */ const char *GetCharAtPosition(const char *str, int x, FontSize start_fontsize) { if (x < 0) return NULL; Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize); return layout.GetCharAtPosition(x); } /** * Draw single character horizontally centered around (x,y) * @param c Character (glyph) to draw * @param x X position to draw character * @param y Y position to draw character * @param colour Colour to use, see DoDrawString() for details */ void DrawCharCentered(WChar c, int x, int y, TextColour colour) { SetColourRemap(colour); GfxMainBlitter(GetGlyph(FS_NORMAL, c), x - GetCharacterWidth(FS_NORMAL, c) / 2, y, BM_COLOUR_REMAP); } /** * Get the size of a sprite. * @param sprid Sprite to examine. * @param [out] offset Optionally returns the sprite position offset. * @return Sprite size in pixels. * @note The size assumes (0, 0) as top-left coordinate and ignores any part of the sprite drawn at the left or above that position. */ Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom) { const Sprite *sprite = GetSprite(sprid, ST_NORMAL); if (offset != NULL) { offset->x = UnScaleByZoom(sprite->x_offs, zoom); offset->y = UnScaleByZoom(sprite->y_offs, zoom); } Dimension d; d.width = max(0, UnScaleByZoom(sprite->x_offs + sprite->width, zoom)); d.height = max(0, UnScaleByZoom(sprite->y_offs + sprite->height, zoom)); return d; } /** * Draw a sprite in a viewport. * @param img Image number to draw * @param pal Palette to use. * @param x Left coordinate of image in viewport, scaled by zoom * @param y Top coordinate of image in viewport, scaled by zoom * @param sub If available, draw only specified part of the sprite */ void DrawSpriteViewport(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub) { SpriteID real_sprite = GB(img, 0, SPRITE_WIDTH); if (HasBit(img, PALETTE_MODIFIER_TRANSPARENT)) { _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite); } else if (pal != PAL_NONE) { _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_COLOUR_REMAP, sub, real_sprite); } else { GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite); } } /** * Draw a sprite, not in a viewport * @param img Image number to draw * @param pal Palette to use. * @param x Left coordinate of image in pixels * @param y Top coordinate of image in pixels * @param sub If available, draw only specified part of the sprite * @param zoom Zoom level of sprite */ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, ZoomLevel zoom) { SpriteID real_sprite = GB(img, 0, SPRITE_WIDTH); if (HasBit(img, PALETTE_MODIFIER_TRANSPARENT)) { _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite, zoom); } else if (pal != PAL_NONE) { _colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1; GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_COLOUR_REMAP, sub, real_sprite, zoom); } else { GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite, zoom); } } static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id) { const DrawPixelInfo *dpi = _cur_dpi; Blitter::BlitterParams bp; /* Amount of pixels to clip from the source sprite */ int clip_left = (sub != NULL ? max(0, -sprite->x_offs + sub->left * ZOOM_LVL_BASE ) : 0); int clip_top = (sub != NULL ? max(0, -sprite->y_offs + sub->top * ZOOM_LVL_BASE ) : 0); int clip_right = (sub != NULL ? max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_LVL_BASE)) : 0); int clip_bottom = (sub != NULL ? max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_LVL_BASE)) : 0); if (clip_left + clip_right >= sprite->width) return; if (clip_top + clip_bottom >= sprite->height) return; /* Move to the correct offset */ x += sprite->x_offs; y += sprite->y_offs; /* Copy the main data directly from the sprite */ bp.sprite = sprite->data; bp.sprite_width = sprite->width; bp.sprite_height = sprite->height; bp.width = UnScaleByZoom(sprite->width - clip_left - clip_right, dpi->zoom); bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, dpi->zoom); bp.top = 0; bp.left = 0; bp.skip_left = UnScaleByZoomLower(clip_left, dpi->zoom); bp.skip_top = UnScaleByZoomLower(clip_top, dpi->zoom); x += ScaleByZoom(bp.skip_left, dpi->zoom); y += ScaleByZoom(bp.skip_top, dpi->zoom); bp.dst = dpi->dst_ptr; bp.pitch = dpi->pitch; bp.remap = _colour_remap_ptr; assert(sprite->width > 0); assert(sprite->height > 0); if (bp.width <= 0) return; if (bp.height <= 0) return; y -= dpi->top; /* Check for top overflow */ if (y < 0) { bp.height -= -UnScaleByZoom(y, dpi->zoom); if (bp.height <= 0) return; bp.skip_top += -UnScaleByZoom(y, dpi->zoom); y = 0; } else { bp.top = UnScaleByZoom(y, dpi->zoom); } /* Check for bottom overflow */ y += ScaleByZoom(bp.height, dpi->zoom) - dpi->height; if (y > 0) { bp.height -= UnScaleByZoom(y, dpi->zoom); if (bp.height <= 0) return; } x -= dpi->left; /* Check for left overflow */ if (x < 0) { bp.width -= -UnScaleByZoom(x, dpi->zoom); if (bp.width <= 0) return; bp.skip_left += -UnScaleByZoom(x, dpi->zoom); x = 0; } else { bp.left = UnScaleByZoom(x, dpi->zoom); } /* Check for right overflow */ x += ScaleByZoom(bp.width, dpi->zoom) - dpi->width; if (x > 0) { bp.width -= UnScaleByZoom(x, dpi->zoom); if (bp.width <= 0) return; } assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, dpi->zoom)); assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, dpi->zoom)); /* We do not want to catch the mouse. However we also use that spritenumber for unknown (text) sprites. */ if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && sprite_id != SPR_CURSOR_MOUSE) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); void *topleft = blitter->MoveTo(bp.dst, bp.left, bp.top); void *bottomright = blitter->MoveTo(topleft, bp.width - 1, bp.height - 1); void *clicked = _newgrf_debug_sprite_picker.clicked_pixel; if (topleft <= clicked && clicked <= bottomright) { uint offset = (((size_t)clicked - (size_t)topleft) / (blitter->GetScreenDepth() / 8)) % bp.pitch; if (offset < (uint)bp.width) { _newgrf_debug_sprite_picker.sprites.Include(sprite_id); } } } BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, dpi->zoom); } static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom) { const DrawPixelInfo *dpi = _cur_dpi; Blitter::BlitterParams bp; /* Amount of pixels to clip from the source sprite */ int clip_left = (sub != NULL ? max(0, -sprite->x_offs + sub->left ) : 0); int clip_top = (sub != NULL ? max(0, -sprite->y_offs + sub->top ) : 0); int clip_right = (sub != NULL ? max(0, sprite->width - (-sprite->x_offs + sub->right + 1)) : 0); int clip_bottom = (sub != NULL ? max(0, sprite->height - (-sprite->y_offs + sub->bottom + 1)) : 0); if (clip_left + clip_right >= sprite->width) return; if (clip_top + clip_bottom >= sprite->height) return; /* Scale it */ x = ScaleByZoom(x, zoom); y = ScaleByZoom(y, zoom); /* Move to the correct offset */ x += sprite->x_offs; y += sprite->y_offs; /* Copy the main data directly from the sprite */ bp.sprite = sprite->data; bp.sprite_width = sprite->width; bp.sprite_height = sprite->height; bp.width = UnScaleByZoom(sprite->width - clip_left - clip_right, zoom); bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, zoom); bp.top = 0; bp.left = 0; bp.skip_left = UnScaleByZoomLower(clip_left, zoom); bp.skip_top = UnScaleByZoomLower(clip_top, zoom); x += ScaleByZoom(bp.skip_left, zoom); y += ScaleByZoom(bp.skip_top, zoom); bp.dst = dpi->dst_ptr; bp.pitch = dpi->pitch; bp.remap = _colour_remap_ptr; assert(sprite->width > 0); assert(sprite->height > 0); if (bp.width <= 0) return; if (bp.height <= 0) return; y -= ScaleByZoom(dpi->top, zoom); /* Check for top overflow */ if (y < 0) { bp.height -= -UnScaleByZoom(y, zoom); if (bp.height <= 0) return; bp.skip_top += -UnScaleByZoom(y, zoom); y = 0; } else { bp.top = UnScaleByZoom(y, zoom); } /* Check for bottom overflow */ y += ScaleByZoom(bp.height - dpi->height, zoom); if (y > 0) { bp.height -= UnScaleByZoom(y, zoom); if (bp.height <= 0) return; } x -= ScaleByZoom(dpi->left, zoom); /* Check for left overflow */ if (x < 0) { bp.width -= -UnScaleByZoom(x, zoom); if (bp.width <= 0) return; bp.skip_left += -UnScaleByZoom(x, zoom); x = 0; } else { bp.left = UnScaleByZoom(x, zoom); } /* Check for right overflow */ x += ScaleByZoom(bp.width - dpi->width, zoom); if (x > 0) { bp.width -= UnScaleByZoom(x, zoom); if (bp.width <= 0) return; } assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, zoom)); assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, zoom)); /* We do not want to catch the mouse. However we also use that spritenumber for unknown (text) sprites. */ if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && sprite_id != SPR_CURSOR_MOUSE) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); void *topleft = blitter->MoveTo(bp.dst, bp.left, bp.top); void *bottomright = blitter->MoveTo(topleft, bp.width - 1, bp.height - 1); void *clicked = _newgrf_debug_sprite_picker.clicked_pixel; if (topleft <= clicked && clicked <= bottomright) { uint offset = (((size_t)clicked - (size_t)topleft) / (blitter->GetScreenDepth() / 8)) % bp.pitch; if (offset < (uint)bp.width) { _newgrf_debug_sprite_picker.sprites.Include(sprite_id); } } } BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, zoom); } void DoPaletteAnimations(); void GfxInitPalettes() { memcpy(&_cur_palette, &_palette, sizeof(_cur_palette)); DoPaletteAnimations(); } #define EXTR(p, q) (((uint16)(palette_animation_counter * (p)) * (q)) >> 16) #define EXTR2(p, q) (((uint16)(~palette_animation_counter * (p)) * (q)) >> 16) void DoPaletteAnimations() { /* Animation counter for the palette animation. */ static int palette_animation_counter = 0; palette_animation_counter += 8; Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); const Colour *s; const ExtraPaletteValues *ev = &_extra_palette_values; Colour old_val[PALETTE_ANIM_SIZE]; const uint old_tc = palette_animation_counter; uint i; uint j; if (blitter != NULL && blitter->UsePaletteAnimation() == Blitter::PALETTE_ANIMATION_NONE) { palette_animation_counter = 0; } Colour *palette_pos = &_cur_palette.palette[PALETTE_ANIM_START]; // Points to where animations are taking place on the palette /* Makes a copy of the current animation palette in old_val, * so the work on the current palette could be compared, see if there has been any changes */ memcpy(old_val, palette_pos, sizeof(old_val)); /* Fizzy Drink bubbles animation */ s = ev->fizzy_drink; j = EXTR2(512, EPV_CYCLES_FIZZY_DRINK); for (i = 0; i != EPV_CYCLES_FIZZY_DRINK; i++) { *palette_pos++ = s[j]; j++; if (j == EPV_CYCLES_FIZZY_DRINK) j = 0; } /* Oil refinery fire animation */ s = ev->oil_refinery; j = EXTR2(512, EPV_CYCLES_OIL_REFINERY); for (i = 0; i != EPV_CYCLES_OIL_REFINERY; i++) { *palette_pos++ = s[j]; j++; if (j == EPV_CYCLES_OIL_REFINERY) j = 0; } /* Radio tower blinking */ { byte i = (palette_animation_counter >> 1) & 0x7F; byte v; if (i < 0x3f) { v = 255; } else if (i < 0x4A || i >= 0x75) { v = 128; } else { v = 20; } palette_pos->r = v; palette_pos->g = 0; palette_pos->b = 0; palette_pos++; i ^= 0x40; if (i < 0x3f) { v = 255; } else if (i < 0x4A || i >= 0x75) { v = 128; } else { v = 20; } palette_pos->r = v; palette_pos->g = 0; palette_pos->b = 0; palette_pos++; } /* Handle lighthouse and stadium animation */ s = ev->lighthouse; j = EXTR(256, EPV_CYCLES_LIGHTHOUSE); for (i = 0; i != EPV_CYCLES_LIGHTHOUSE; i++) { *palette_pos++ = s[j]; j++; if (j == EPV_CYCLES_LIGHTHOUSE) j = 0; } /* Dark blue water */ s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->dark_water_toyland : ev->dark_water; j = EXTR(320, EPV_CYCLES_DARK_WATER); for (i = 0; i != EPV_CYCLES_DARK_WATER; i++) { *palette_pos++ = s[j]; j++; if (j == EPV_CYCLES_DARK_WATER) j = 0; } /* Glittery water */ s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->glitter_water_toyland : ev->glitter_water; j = EXTR(128, EPV_CYCLES_GLITTER_WATER); for (i = 0; i != EPV_CYCLES_GLITTER_WATER / 3; i++) { *palette_pos++ = s[j]; j += 3; if (j >= EPV_CYCLES_GLITTER_WATER) j -= EPV_CYCLES_GLITTER_WATER; } if (blitter != NULL && blitter->UsePaletteAnimation() == Blitter::PALETTE_ANIMATION_NONE) { palette_animation_counter = old_tc; } else { if (memcmp(old_val, &_cur_palette.palette[PALETTE_ANIM_START], sizeof(old_val)) != 0 && _cur_palette.count_dirty == 0) { /* Did we changed anything on the palette? Seems so. Mark it as dirty */ _cur_palette.first_dirty = PALETTE_ANIM_START; _cur_palette.count_dirty = PALETTE_ANIM_SIZE; } } } /** * Determine a contrasty text colour for a coloured background. * @param background Background colour. * @return TC_BLACK or TC_WHITE depending on what gives a better contrast. */ TextColour GetContrastColour(uint8 background) { Colour c = _cur_palette.palette[background]; /* Compute brightness according to http://www.w3.org/TR/AERT#color-contrast. * The following formula computes 1000 * brightness^2, with brightness being in range 0 to 255. */ uint sq1000_brightness = c.r * c.r * 299 + c.g * c.g * 587 + c.b * c.b * 114; /* Compare with threshold brightness 128 (50%) */ return sq1000_brightness < 128 * 128 * 1000 ? TC_WHITE : TC_BLACK; } /** * Initialize _stringwidth_table cache * @param monospace Whether to load the monospace cache or the normal fonts. */ void LoadStringWidthTable(bool monospace) { for (FontSize fs = monospace ? FS_MONO : FS_BEGIN; fs < (monospace ? FS_END : FS_MONO); fs++) { for (uint i = 0; i != 224; i++) { _stringwidth_table[fs][i] = GetGlyphWidth(fs, i + 32); } } ReInitAllWindows(); } /** * Return width of character glyph. * @param size Font of the character * @param key Character code glyph * @return Width of the character glyph */ byte GetCharacterWidth(FontSize size, WChar key) { /* Use _stringwidth_table cache if possible */ if (key >= 32 && key < 256) return _stringwidth_table[size][key - 32]; return GetGlyphWidth(size, key); } /** * Return the maximum width of single digit. * @param size Font of the digit * @return Width of the digit. */ byte GetDigitWidth(FontSize size) { byte width = 0; for (char c = '0'; c <= '9'; c++) { width = max(GetCharacterWidth(size, c), width); } return width; } /** * Determine the broadest digits for guessing the maximum width of a n-digit number. * @param [out] front Broadest digit, which is not 0. (Use this digit as first digit for numbers with more than one digit.) * @param [out] next Broadest digit, including 0. (Use this digit for all digits, except the first one; or for numbers with only one digit.) * @param size Font of the digit */ void GetBroadestDigit(uint *front, uint *next, FontSize size) { int width = -1; for (char c = '9'; c >= '0'; c--) { int w = GetCharacterWidth(size, c); if (w > width) { width = w; *next = c - '0'; if (c != '0') *front = c - '0'; } } } void ScreenSizeChanged() { _dirty_bytes_per_line = CeilDiv(_screen.width, DIRTY_BLOCK_WIDTH); _dirty_blocks = ReallocT(_dirty_blocks, _dirty_bytes_per_line * CeilDiv(_screen.height, DIRTY_BLOCK_HEIGHT)); /* check the dirty rect */ if (_invalid_rect.right >= _screen.width) _invalid_rect.right = _screen.width; if (_invalid_rect.bottom >= _screen.height) _invalid_rect.bottom = _screen.height; /* screen size changed and the old bitmap is invalid now, so we don't want to undraw it */ _cursor.visible = false; } void UndrawMouseCursor() { /* Don't undraw the mouse cursor if the screen is not ready */ if (_screen.dst_ptr == NULL) return; if (_cursor.visible) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); _cursor.visible = false; blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), _cursor_backup.GetBuffer(), _cursor.draw_size.x, _cursor.draw_size.y); _video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); } } void DrawMouseCursor() { #if defined(WINCE) /* Don't ever draw the mouse for WinCE, as we work with a stylus */ return; #endif /* Don't draw the mouse cursor if the screen is not ready */ if (_screen.dst_ptr == NULL) return; Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); int x; int y; int w; int h; /* Redraw mouse cursor but only when it's inside the window */ if (!_cursor.in_window) return; /* Don't draw the mouse cursor if it's already drawn */ if (_cursor.visible) { if (!_cursor.dirty) return; UndrawMouseCursor(); } w = _cursor.size.x; x = _cursor.pos.x + _cursor.offs.x + _cursor.short_vehicle_offset; if (x < 0) { w += x; x = 0; } if (w > _screen.width - x) w = _screen.width - x; if (w <= 0) return; _cursor.draw_pos.x = x; _cursor.draw_size.x = w; h = _cursor.size.y; y = _cursor.pos.y + _cursor.offs.y; if (y < 0) { h += y; y = 0; } if (h > _screen.height - y) h = _screen.height - y; if (h <= 0) return; _cursor.draw_pos.y = y; _cursor.draw_size.y = h; uint8 *buffer = _cursor_backup.Allocate(blitter->BufferSize(w, h)); /* Make backup of stuff below cursor */ blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), buffer, _cursor.draw_size.x, _cursor.draw_size.y); /* Draw cursor on screen */ _cur_dpi = &_screen; DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x + _cursor.short_vehicle_offset, _cursor.pos.y); _video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); _cursor.visible = true; _cursor.dirty = false; } void RedrawScreenRect(int left, int top, int right, int bottom) { assert(right <= _screen.width && bottom <= _screen.height); if (_cursor.visible) { if (right > _cursor.draw_pos.x && left < _cursor.draw_pos.x + _cursor.draw_size.x && bottom > _cursor.draw_pos.y && top < _cursor.draw_pos.y + _cursor.draw_size.y) { UndrawMouseCursor(); } } #ifdef ENABLE_NETWORK if (_networking) NetworkUndrawChatMessage(); #endif /* ENABLE_NETWORK */ DrawOverlappedWindowForAll(left, top, right, bottom); _video_driver->MakeDirty(left, top, right - left, bottom - top); } /** * Repaints the rectangle blocks which are marked as 'dirty'. * * @see SetDirtyBlocks */ void DrawDirtyBlocks() { byte *b = _dirty_blocks; const int w = Align(_screen.width, DIRTY_BLOCK_WIDTH); const int h = Align(_screen.height, DIRTY_BLOCK_HEIGHT); int x; int y; if (HasModalProgress()) { /* We are generating the world, so release our rights to the map and * painting while we are waiting a bit. */ _modal_progress_paint_mutex->EndCritical(); _modal_progress_work_mutex->EndCritical(); /* Wait a while and update _realtime_tick so we are given the rights */ if (!IsFirstModalProgressLoop()) CSleep(MODAL_PROGRESS_REDRAW_TIMEOUT); _realtime_tick += MODAL_PROGRESS_REDRAW_TIMEOUT; _modal_progress_paint_mutex->BeginCritical(); _modal_progress_work_mutex->BeginCritical(); /* When we ended with the modal progress, do not draw the blocks. * Simply let the next run do so, otherwise we would be loading * the new state (and possibly change the blitter) when we hold * the drawing lock, which we must not do. */ if (_switch_mode != SM_NONE && !HasModalProgress()) return; } y = 0; do { x = 0; do { if (*b != 0) { int left; int top; int right = x + DIRTY_BLOCK_WIDTH; int bottom = y; byte *p = b; int h2; /* First try coalescing downwards */ do { *p = 0; p += _dirty_bytes_per_line; bottom += DIRTY_BLOCK_HEIGHT; } while (bottom != h && *p != 0); /* Try coalescing to the right too. */ h2 = (bottom - y) / DIRTY_BLOCK_HEIGHT; assert(h2 > 0); p = b; while (right != w) { byte *p2 = ++p; int h = h2; /* Check if a full line of dirty flags is set. */ do { if (!*p2) goto no_more_coalesc; p2 += _dirty_bytes_per_line; } while (--h != 0); /* Wohoo, can combine it one step to the right! * Do that, and clear the bits. */ right += DIRTY_BLOCK_WIDTH; h = h2; p2 = p; do { *p2 = 0; p2 += _dirty_bytes_per_line; } while (--h != 0); } no_more_coalesc: left = x; top = y; if (left < _invalid_rect.left ) left = _invalid_rect.left; if (top < _invalid_rect.top ) top = _invalid_rect.top; if (right > _invalid_rect.right ) right = _invalid_rect.right; if (bottom > _invalid_rect.bottom) bottom = _invalid_rect.bottom; if (left < right && top < bottom) { RedrawScreenRect(left, top, right, bottom); } } } while (b++, (x += DIRTY_BLOCK_WIDTH) != w); } while (b += -(int)(w / DIRTY_BLOCK_WIDTH) + _dirty_bytes_per_line, (y += DIRTY_BLOCK_HEIGHT) != h); ++_dirty_block_colour; _invalid_rect.left = w; _invalid_rect.top = h; _invalid_rect.right = 0; _invalid_rect.bottom = 0; } /** * This function extends the internal _invalid_rect rectangle as it * now contains the rectangle defined by the given parameters. Note * the point (0,0) is top left. * * @param left The left edge of the rectangle * @param top The top edge of the rectangle * @param right The right edge of the rectangle * @param bottom The bottom edge of the rectangle * @see DrawDirtyBlocks * * @todo The name of the function should be called like @c AddDirtyBlock as * it neither set a dirty rect nor add several dirty rects although * the function name is in plural. (Progman) */ void SetDirtyBlocks(int left, int top, int right, int bottom) { byte *b; int width; int height; if (left < 0) left = 0; if (top < 0) top = 0; if (right > _screen.width) right = _screen.width; if (bottom > _screen.height) bottom = _screen.height; if (left >= right || top >= bottom) return; if (left < _invalid_rect.left ) _invalid_rect.left = left; if (top < _invalid_rect.top ) _invalid_rect.top = top; if (right > _invalid_rect.right ) _invalid_rect.right = right; if (bottom > _invalid_rect.bottom) _invalid_rect.bottom = bottom; left /= DIRTY_BLOCK_WIDTH; top /= DIRTY_BLOCK_HEIGHT; b = _dirty_blocks + top * _dirty_bytes_per_line + left; width = ((right - 1) / DIRTY_BLOCK_WIDTH) - left + 1; height = ((bottom - 1) / DIRTY_BLOCK_HEIGHT) - top + 1; assert(width > 0 && height > 0); do { int i = width; do b[--i] = 0xFF; while (i != 0); b += _dirty_bytes_per_line; } while (--height != 0); } /** * This function mark the whole screen as dirty. This results in repainting * the whole screen. Use this with care as this function will break the * idea about marking only parts of the screen as 'dirty'. * @ingroup dirty */ void MarkWholeScreenDirty() { SetDirtyBlocks(0, 0, _screen.width, _screen.height); } /** * Set up a clipping area for only drawing into a certain area. To do this, * Fill a DrawPixelInfo object with the supplied relative rectangle, backup * the original (calling) _cur_dpi and assign the just returned DrawPixelInfo * _cur_dpi. When you are done, give restore _cur_dpi's original value * @param *n the DrawPixelInfo that will be the clipping rectangle box allowed * for drawing * @param left,top,width,height the relative coordinates of the clipping * rectangle relative to the current _cur_dpi. This will most likely be the * offset from the calling window coordinates * @return return false if the requested rectangle is not possible with the * current dpi pointer. Only continue of the return value is true, or you'll * get some nasty results */ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height) { Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); const DrawPixelInfo *o = _cur_dpi; n->zoom = ZOOM_LVL_NORMAL; assert(width > 0); assert(height > 0); if ((left -= o->left) < 0) { width += left; if (width <= 0) return false; n->left = -left; left = 0; } else { n->left = 0; } if (width > o->width - left) { width = o->width - left; if (width <= 0) return false; } n->width = width; if ((top -= o->top) < 0) { height += top; if (height <= 0) return false; n->top = -top; top = 0; } else { n->top = 0; } n->dst_ptr = blitter->MoveTo(o->dst_ptr, left, top); n->pitch = o->pitch; if (height > o->height - top) { height = o->height - top; if (height <= 0) return false; } n->height = height; return true; } /** * Update cursor dimension. * Called when changing cursor sprite resp. reloading grfs. */ void UpdateCursorSize() { CursorVars *cv = &_cursor; const Sprite *p = GetSprite(GB(cv->sprite, 0, SPRITE_WIDTH), ST_NORMAL); cv->size.y = UnScaleByZoom(p->height, ZOOM_LVL_GUI); cv->size.x = UnScaleByZoom(p->width, ZOOM_LVL_GUI); cv->offs.x = UnScaleByZoom(p->x_offs, ZOOM_LVL_GUI); cv->offs.y = UnScaleByZoom(p->y_offs, ZOOM_LVL_GUI); cv->dirty = true; } /** * Switch cursor to different sprite. * @param cursor Sprite to draw for the cursor. * @param pal Palette to use for recolouring. */ static void SetCursorSprite(CursorID cursor, PaletteID pal) { CursorVars *cv = &_cursor; if (cv->sprite == cursor) return; cv->sprite = cursor; cv->pal = pal; UpdateCursorSize(); cv->short_vehicle_offset = 0; } static void SwitchAnimatedCursor() { const AnimCursor *cur = _cursor.animate_cur; if (cur == NULL || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list; SetCursorSprite(cur->sprite, _cursor.pal); _cursor.animate_timeout = cur->display_time; _cursor.animate_cur = cur + 1; } void CursorTick() { if (_cursor.animate_timeout != 0 && --_cursor.animate_timeout == 0) { SwitchAnimatedCursor(); } } /** * Assign a single non-animated sprite to the cursor. * @param sprite Sprite to draw for the cursor. * @param pal Palette to use for recolouring. * @see SetAnimatedMouseCursor */ void SetMouseCursor(CursorID sprite, PaletteID pal) { /* Turn off animation */ _cursor.animate_timeout = 0; /* Set cursor */ SetCursorSprite(sprite, pal); } /** * Assign an animation to the cursor. * @param table Array of animation states. * @see SetMouseCursor */ void SetAnimatedMouseCursor(const AnimCursor *table) { _cursor.animate_list = table; _cursor.animate_cur = NULL; _cursor.pal = PAL_NONE; SwitchAnimatedCursor(); } bool ChangeResInGame(int width, int height) { return (_screen.width == width && _screen.height == height) || _video_driver->ChangeResolution(width, height); } bool ToggleFullScreen(bool fs) { bool result = _video_driver->ToggleFullscreen(fs); if (_fullscreen != fs && _num_resolutions == 0) { DEBUG(driver, 0, "Could not find a suitable fullscreen resolution"); } return result; } static int CDECL compare_res(const Dimension *pa, const Dimension *pb) { int x = pa->width - pb->width; if (x != 0) return x; return pa->height - pb->height; } void SortResolutions(int count) { QSortT(_resolutions, count, &compare_res); } openttd-1.3.3/src/base_consist.cpp0000644000000000000000000000333712246102611015641 0ustar rootroot/* $Id: base_consist.cpp 24446 2012-07-29 16:48:00Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file base_consist.cpp Properties for front vehicles/consists. */ #include "stdafx.h" #include "base_consist.h" #include "vehicle_base.h" BaseConsist::~BaseConsist() { free(this->name); } /** * Copy properties of other BaseConsist. * @param src Source for copying */ void BaseConsist::CopyConsistPropertiesFrom(const BaseConsist *src) { if (this == src) return; free(this->name); this->name = src->name != NULL ? strdup(src->name) : NULL; this->current_order_time = src->current_order_time; this->lateness_counter = src->lateness_counter; this->timetable_start = src->timetable_start; this->service_interval = src->service_interval; this->cur_real_order_index = src->cur_real_order_index; this->cur_implicit_order_index = src->cur_implicit_order_index; if (HasBit(src->vehicle_flags, VF_TIMETABLE_STARTED)) SetBit(this->vehicle_flags, VF_TIMETABLE_STARTED); if (HasBit(src->vehicle_flags, VF_AUTOFILL_TIMETABLE)) SetBit(this->vehicle_flags, VF_AUTOFILL_TIMETABLE); if (HasBit(src->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME)) SetBit(this->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME); } openttd-1.3.3/src/rail_cmd.cpp0000644000000000000000000033006612246102610014740 0ustar rootroot/* $Id: rail_cmd.cpp 25993 2013-11-13 22:04:22Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file rail_cmd.cpp Handling of rail tiles. */ #include "stdafx.h" #include "cmd_helper.h" #include "viewport_func.h" #include "command_func.h" #include "depot_base.h" #include "pathfinder/yapf/yapf_cache.h" #include "newgrf_debug.h" #include "newgrf_railtype.h" #include "train.h" #include "autoslope.h" #include "water.h" #include "tunnelbridge_map.h" #include "vehicle_func.h" #include "sound_func.h" #include "tunnelbridge.h" #include "elrail_func.h" #include "town.h" #include "pbs.h" #include "company_base.h" #include "core/backup_type.hpp" #include "date_func.h" #include "strings_func.h" #include "company_gui.h" #include "object_map.h" #include "table/strings.h" #include "table/railtypes.h" #include "table/track_land.h" /** Helper type for lists/vectors of trains */ typedef SmallVector TrainList; RailtypeInfo _railtypes[RAILTYPE_END]; assert_compile(sizeof(_original_railtypes) <= sizeof(_railtypes)); /** Enum holding the signal offset in the sprite sheet according to the side it is representing. */ enum SignalOffsets { SIGNAL_TO_SOUTHWEST, SIGNAL_TO_NORTHEAST, SIGNAL_TO_SOUTHEAST, SIGNAL_TO_NORTHWEST, SIGNAL_TO_EAST, SIGNAL_TO_WEST, SIGNAL_TO_SOUTH, SIGNAL_TO_NORTH, }; /** * Reset all rail type information to its default values. */ void ResetRailTypes() { memset(_railtypes, 0, sizeof(_railtypes)); memcpy(_railtypes, _original_railtypes, sizeof(_original_railtypes)); } void ResolveRailTypeGUISprites(RailtypeInfo *rti) { SpriteID cursors_base = GetCustomRailSprite(rti, INVALID_TILE, RTSG_CURSORS); if (cursors_base != 0) { rti->gui_sprites.build_ns_rail = cursors_base + 0; rti->gui_sprites.build_x_rail = cursors_base + 1; rti->gui_sprites.build_ew_rail = cursors_base + 2; rti->gui_sprites.build_y_rail = cursors_base + 3; rti->gui_sprites.auto_rail = cursors_base + 4; rti->gui_sprites.build_depot = cursors_base + 5; rti->gui_sprites.build_tunnel = cursors_base + 6; rti->gui_sprites.convert_rail = cursors_base + 7; rti->cursor.rail_ns = cursors_base + 8; rti->cursor.rail_swne = cursors_base + 9; rti->cursor.rail_ew = cursors_base + 10; rti->cursor.rail_nwse = cursors_base + 11; rti->cursor.autorail = cursors_base + 12; rti->cursor.depot = cursors_base + 13; rti->cursor.tunnel = cursors_base + 14; rti->cursor.convert = cursors_base + 15; } /* Array of default GUI signal sprite numbers. */ const SpriteID _signal_lookup[2][SIGTYPE_END] = { {SPR_IMG_SIGNAL_ELECTRIC_NORM, SPR_IMG_SIGNAL_ELECTRIC_ENTRY, SPR_IMG_SIGNAL_ELECTRIC_EXIT, SPR_IMG_SIGNAL_ELECTRIC_COMBO, SPR_IMG_SIGNAL_ELECTRIC_PBS, SPR_IMG_SIGNAL_ELECTRIC_PBS_OWAY}, {SPR_IMG_SIGNAL_SEMAPHORE_NORM, SPR_IMG_SIGNAL_SEMAPHORE_ENTRY, SPR_IMG_SIGNAL_SEMAPHORE_EXIT, SPR_IMG_SIGNAL_SEMAPHORE_COMBO, SPR_IMG_SIGNAL_SEMAPHORE_PBS, SPR_IMG_SIGNAL_SEMAPHORE_PBS_OWAY}, }; for (SignalType type = SIGTYPE_NORMAL; type < SIGTYPE_END; type = (SignalType)(type + 1)) { for (SignalVariant var = SIG_ELECTRIC; var <= SIG_SEMAPHORE; var = (SignalVariant)(var + 1)) { SpriteID red = GetCustomSignalSprite(rti, INVALID_TILE, type, var, SIGNAL_STATE_RED, true); SpriteID green = GetCustomSignalSprite(rti, INVALID_TILE, type, var, SIGNAL_STATE_GREEN, true); rti->gui_sprites.signals[type][var][0] = (red != 0) ? red + SIGNAL_TO_SOUTH : _signal_lookup[var][type]; rti->gui_sprites.signals[type][var][1] = (green != 0) ? green + SIGNAL_TO_SOUTH : _signal_lookup[var][type] + 1; } } } /** * Resolve sprites of custom rail types */ void InitRailTypes() { for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { RailtypeInfo *rti = &_railtypes[rt]; ResolveRailTypeGUISprites(rti); } } /** * Allocate a new rail type label */ RailType AllocateRailType(RailTypeLabel label) { for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { RailtypeInfo *rti = &_railtypes[rt]; if (rti->label == 0) { /* Set up new rail type */ memcpy(rti, &_railtypes[RAILTYPE_RAIL], sizeof(*rti)); rti->label = label; /* Clear alternate label list. Can't use Reset() here as that would free * the data pointer of RAILTYPE_RAIL and not our new rail type. */ new (&rti->alternate_labels) RailTypeLabelList; /* Make us compatible with ourself. */ rti->powered_railtypes = (RailTypes)(1 << rt); rti->compatible_railtypes = (RailTypes)(1 << rt); /* We also introduce ourself. */ rti->introduces_railtypes = (RailTypes)(1 << rt); /* Default sort order; order of allocation, but with some * offsets so it's easier for NewGRF to pick a spot without * changing the order of other (original) rail types. * The << is so you can place other railtypes in between the * other railtypes, the 7 is to be able to place something * before the first (default) rail type. */ rti->sorting_order = rt << 4 | 7; return rt; } } return INVALID_RAILTYPE; } static const byte _track_sloped_sprites[14] = { 14, 15, 22, 13, 0, 21, 17, 12, 23, 0, 18, 20, 19, 16 }; /* 4 * --------- * |\ /| * | \ 1/ | * | \ / | * | \ / | * 16| \ |32 * | / \2 | * | / \ | * | / \ | * |/ \| * --------- * 8 */ /* MAP2 byte: abcd???? => Signal On? Same coding as map3lo * MAP3LO byte: abcd???? => Signal Exists? * a and b are for diagonals, upper and left, * one for each direction. (ie a == NE->SW, b == * SW->NE, or v.v., I don't know. b and c are * similar for lower and right. * MAP2 byte: ????abcd => Type of ground. * MAP3LO byte: ????abcd => Type of rail. * MAP5: 00abcdef => rail * 01abcdef => rail w/ signals * 10uuuuuu => unused * 11uuuudd => rail depot */ /** * Tests if a vehicle interacts with the specified track. * All track bits interact except parallel #TRACK_BIT_HORZ or #TRACK_BIT_VERT. * * @param tile The tile. * @param track The track. * @return Succeeded command (no train found), or a failed command (a train was found). */ static CommandCost EnsureNoTrainOnTrack(TileIndex tile, Track track) { TrackBits rail_bits = TrackToTrackBits(track); return EnsureNoTrainOnTrackBits(tile, rail_bits); } /** * Check that the new track bits may be built. * @param tile %Tile to build on. * @param to_build New track bits. * @param flags Flags of the operation. * @return Succeeded or failed command. */ static CommandCost CheckTrackCombination(TileIndex tile, TrackBits to_build, uint flags) { if (!IsPlainRail(tile)) return_cmd_error(STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION); /* So, we have a tile with tracks on it (and possibly signals). Let's see * what tracks first */ TrackBits current = GetTrackBits(tile); // The current track layout. TrackBits future = current | to_build; // The track layout we want to build. /* Are we really building something new? */ if (current == future) { /* Nothing new is being built */ return_cmd_error(STR_ERROR_ALREADY_BUILT); } /* Let's see if we may build this */ if ((flags & DC_NO_RAIL_OVERLAP) || HasSignals(tile)) { /* If we are not allowed to overlap (flag is on for ai companies or we have * signals on the tile), check that */ if (future != TRACK_BIT_HORZ && future != TRACK_BIT_VERT) { return_cmd_error((flags & DC_NO_RAIL_OVERLAP) ? STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION : STR_ERROR_MUST_REMOVE_SIGNALS_FIRST); } } /* Normally, we may overlap and any combination is valid */ return CommandCost(); } /** Valid TrackBits on a specific (non-steep)-slope without foundation */ static const TrackBits _valid_tracks_without_foundation[15] = { TRACK_BIT_ALL, TRACK_BIT_RIGHT, TRACK_BIT_UPPER, TRACK_BIT_X, TRACK_BIT_LEFT, TRACK_BIT_NONE, TRACK_BIT_Y, TRACK_BIT_LOWER, TRACK_BIT_LOWER, TRACK_BIT_Y, TRACK_BIT_NONE, TRACK_BIT_LEFT, TRACK_BIT_X, TRACK_BIT_UPPER, TRACK_BIT_RIGHT, }; /** Valid TrackBits on a specific (non-steep)-slope with leveled foundation */ static const TrackBits _valid_tracks_on_leveled_foundation[15] = { TRACK_BIT_NONE, TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_Y | TRACK_BIT_LOWER | TRACK_BIT_LEFT, TRACK_BIT_RIGHT, TRACK_BIT_ALL, TRACK_BIT_X | TRACK_BIT_LOWER | TRACK_BIT_RIGHT, TRACK_BIT_ALL, TRACK_BIT_UPPER, TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_LEFT, TRACK_BIT_ALL, TRACK_BIT_ALL, TRACK_BIT_Y | TRACK_BIT_UPPER | TRACK_BIT_RIGHT, TRACK_BIT_ALL, TRACK_BIT_ALL }; /** * Checks if a track combination is valid on a specific slope and returns the needed foundation. * * @param tileh Tile slope. * @param bits Trackbits. * @return Needed foundation or FOUNDATION_INVALID if track/slope combination is not allowed. */ Foundation GetRailFoundation(Slope tileh, TrackBits bits) { if (bits == TRACK_BIT_NONE) return FOUNDATION_NONE; if (IsSteepSlope(tileh)) { /* Test for inclined foundations */ if (bits == TRACK_BIT_X) return FOUNDATION_INCLINED_X; if (bits == TRACK_BIT_Y) return FOUNDATION_INCLINED_Y; /* Get higher track */ Corner highest_corner = GetHighestSlopeCorner(tileh); TrackBits higher_track = CornerToTrackBits(highest_corner); /* Only higher track? */ if (bits == higher_track) return HalftileFoundation(highest_corner); /* Overlap with higher track? */ if (TracksOverlap(bits | higher_track)) return FOUNDATION_INVALID; /* either lower track or both higher and lower track */ return ((bits & higher_track) != 0 ? FOUNDATION_STEEP_BOTH : FOUNDATION_STEEP_LOWER); } else { if ((~_valid_tracks_without_foundation[tileh] & bits) == 0) return FOUNDATION_NONE; bool valid_on_leveled = ((~_valid_tracks_on_leveled_foundation[tileh] & bits) == 0); Corner track_corner; switch (bits) { case TRACK_BIT_LEFT: track_corner = CORNER_W; break; case TRACK_BIT_LOWER: track_corner = CORNER_S; break; case TRACK_BIT_RIGHT: track_corner = CORNER_E; break; case TRACK_BIT_UPPER: track_corner = CORNER_N; break; case TRACK_BIT_HORZ: if (tileh == SLOPE_N) return HalftileFoundation(CORNER_N); if (tileh == SLOPE_S) return HalftileFoundation(CORNER_S); return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID); case TRACK_BIT_VERT: if (tileh == SLOPE_W) return HalftileFoundation(CORNER_W); if (tileh == SLOPE_E) return HalftileFoundation(CORNER_E); return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID); case TRACK_BIT_X: if (IsSlopeWithOneCornerRaised(tileh)) return FOUNDATION_INCLINED_X; return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID); case TRACK_BIT_Y: if (IsSlopeWithOneCornerRaised(tileh)) return FOUNDATION_INCLINED_Y; return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID); default: return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID); } /* Single diagonal track */ /* Track must be at least valid on leveled foundation */ if (!valid_on_leveled) return FOUNDATION_INVALID; /* If slope has three raised corners, build leveled foundation */ if (IsSlopeWithThreeCornersRaised(tileh)) return FOUNDATION_LEVELED; /* If neighboured corners of track_corner are lowered, build halftile foundation */ if ((tileh & SlopeWithThreeCornersRaised(OppositeCorner(track_corner))) == SlopeWithOneCornerRaised(track_corner)) return HalftileFoundation(track_corner); /* else special anti-zig-zag foundation */ return SpecialRailFoundation(track_corner); } } /** * Tests if a track can be build on a tile. * * @param tileh Tile slope. * @param rail_bits Tracks to build. * @param existing Tracks already built. * @param tile Tile (used for water test) * @return Error message or cost for foundation building. */ static CommandCost CheckRailSlope(Slope tileh, TrackBits rail_bits, TrackBits existing, TileIndex tile) { /* don't allow building on the lower side of a coast */ if (GetFloodingBehaviour(tile) != FLOOD_NONE) { if (!IsSteepSlope(tileh) && ((~_valid_tracks_on_leveled_foundation[tileh] & (rail_bits | existing)) != 0)) return_cmd_error(STR_ERROR_CAN_T_BUILD_ON_WATER); } Foundation f_new = GetRailFoundation(tileh, rail_bits | existing); /* check track/slope combination */ if ((f_new == FOUNDATION_INVALID) || ((f_new != FOUNDATION_NONE) && (!_settings_game.construction.build_on_slopes))) { return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); } Foundation f_old = GetRailFoundation(tileh, existing); return CommandCost(EXPENSES_CONSTRUCTION, f_new != f_old ? _price[PR_BUILD_FOUNDATION] : (Money)0); } /* Validate functions for rail building */ static inline bool ValParamTrackOrientation(Track track) { return IsValidTrack(track); } /** * Build a single piece of rail * @param tile tile to build on * @param flags operation to perform * @param p1 railtype of being built piece (normal, mono, maglev) * @param p2 rail track to build * @param text unused * @return the cost of this operation or an error */ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { RailType railtype = Extract(p1); Track track = Extract(p2); CommandCost cost(EXPENSES_CONSTRUCTION); if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; Slope tileh = GetTileSlope(tile); TrackBits trackbit = TrackToTrackBits(track); switch (GetTileType(tile)) { case MP_RAILWAY: { CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; if (!IsPlainRail(tile)) return CMD_ERROR; if (!IsCompatibleRail(GetRailType(tile), railtype)) return_cmd_error(STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION); ret = CheckTrackCombination(tile, trackbit, flags); if (ret.Succeeded()) ret = EnsureNoTrainOnTrack(tile, track); if (ret.Failed()) return ret; ret = CheckRailSlope(tileh, trackbit, GetTrackBits(tile), tile); if (ret.Failed()) return ret; cost.AddCost(ret); /* If the rail types don't match, try to convert only if engines of * the new rail type are not powered on the present rail type and engines of * the present rail type are powered on the new rail type. */ if (GetRailType(tile) != railtype && !HasPowerOnRail(railtype, GetRailType(tile))) { if (HasPowerOnRail(GetRailType(tile), railtype)) { ret = DoCommand(tile, tile, railtype, flags, CMD_CONVERT_RAIL); if (ret.Failed()) return ret; cost.AddCost(ret); } else { return CMD_ERROR; } } if (flags & DC_EXEC) { SetRailGroundType(tile, RAIL_GROUND_BARREN); TrackBits bits = GetTrackBits(tile); SetTrackBits(tile, bits | trackbit); /* Subtract old infrastructure count. */ uint pieces = CountBits(bits); if (TracksOverlap(bits)) pieces *= pieces; Company::Get(GetTileOwner(tile))->infrastructure.rail[GetRailType(tile)] -= pieces; /* Add new infrastructure count. */ pieces = CountBits(bits | trackbit); if (TracksOverlap(bits | trackbit)) pieces *= pieces; Company::Get(GetTileOwner(tile))->infrastructure.rail[GetRailType(tile)] += pieces; DirtyCompanyInfrastructureWindows(GetTileOwner(tile)); } break; } case MP_ROAD: { /* Level crossings may only be built on these slopes */ if (!HasBit(VALID_LEVEL_CROSSING_SLOPES, tileh)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION); CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; if (IsNormalRoad(tile)) { if (HasRoadWorks(tile)) return_cmd_error(STR_ERROR_ROAD_WORKS_IN_PROGRESS); if (GetDisallowedRoadDirections(tile) != DRD_NONE) return_cmd_error(STR_ERROR_CROSSING_ON_ONEWAY_ROAD); if (RailNoLevelCrossings(railtype)) return_cmd_error(STR_ERROR_CROSSING_DISALLOWED); RoadTypes roadtypes = GetRoadTypes(tile); RoadBits road = GetRoadBits(tile, ROADTYPE_ROAD); RoadBits tram = GetRoadBits(tile, ROADTYPE_TRAM); switch (roadtypes) { default: break; case ROADTYPES_TRAM: /* Tram crossings must always have road. */ if (flags & DC_EXEC) { SetRoadOwner(tile, ROADTYPE_ROAD, _current_company); Company *c = Company::GetIfValid(_current_company); if (c != NULL) { /* A full diagonal tile has two road bits. */ c->infrastructure.road[ROADTYPE_ROAD] += 2; DirtyCompanyInfrastructureWindows(c->index); } } roadtypes |= ROADTYPES_ROAD; break; case ROADTYPES_ALL: if (road != tram) return CMD_ERROR; break; } road |= tram; if ((track == TRACK_X && road == ROAD_Y) || (track == TRACK_Y && road == ROAD_X)) { if (flags & DC_EXEC) { MakeRoadCrossing(tile, GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), _current_company, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile)); UpdateLevelCrossing(tile, false); Company::Get(_current_company)->infrastructure.rail[railtype] += LEVELCROSSING_TRACKBIT_FACTOR; DirtyCompanyInfrastructureWindows(_current_company); } break; } } if (IsLevelCrossing(tile) && GetCrossingRailBits(tile) == trackbit) { return_cmd_error(STR_ERROR_ALREADY_BUILT); } /* FALL THROUGH */ } default: { /* Will there be flat water on the lower halftile? */ bool water_ground = IsTileType(tile, MP_WATER) && IsSlopeWithOneCornerRaised(tileh); CommandCost ret = CheckRailSlope(tileh, trackbit, TRACK_BIT_NONE, tile); if (ret.Failed()) return ret; cost.AddCost(ret); ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; cost.AddCost(ret); if (water_ground) { cost.AddCost(-_price[PR_CLEAR_WATER]); cost.AddCost(_price[PR_CLEAR_ROUGH]); } if (flags & DC_EXEC) { MakeRailNormal(tile, _current_company, trackbit, railtype); if (water_ground) SetRailGroundType(tile, RAIL_GROUND_WATER); Company::Get(_current_company)->infrastructure.rail[railtype]++; DirtyCompanyInfrastructureWindows(_current_company); } break; } } if (flags & DC_EXEC) { MarkTileDirtyByTile(tile); AddTrackToSignalBuffer(tile, track, _current_company); YapfNotifyTrackLayoutChange(tile, track); } cost.AddCost(RailBuildCost(railtype)); return cost; } /** * Remove a single piece of track * @param tile tile to remove track from * @param flags operation to perform * @param p1 unused * @param p2 rail orientation * @param text unused * @return the cost of this operation or an error */ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Track track = Extract(p2); CommandCost cost(EXPENSES_CONSTRUCTION); bool crossing = false; if (!ValParamTrackOrientation(track)) return CMD_ERROR; TrackBits trackbit = TrackToTrackBits(track); /* Need to read tile owner now because it may change when the rail is removed * Also, in case of floods, _current_company != owner * There may be invalid tiletype even in exec run (when removing long track), * so do not call GetTileOwner(tile) in any case here */ Owner owner = INVALID_OWNER; Train *v = NULL; switch (GetTileType(tile)) { case MP_ROAD: { if (!IsLevelCrossing(tile) || GetCrossingRailBits(tile) != trackbit) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); if (_current_company != OWNER_WATER) { CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; } if (!(flags & DC_BANKRUPT)) { CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; } cost.AddCost(RailClearCost(GetRailType(tile))); if (flags & DC_EXEC) { if (HasReservedTracks(tile, trackbit)) { v = GetTrainForReservation(tile, track); if (v != NULL) FreeTrainTrackReservation(v); } owner = GetTileOwner(tile); Company::Get(owner)->infrastructure.rail[GetRailType(tile)] -= LEVELCROSSING_TRACKBIT_FACTOR; DirtyCompanyInfrastructureWindows(owner); MakeRoadNormal(tile, GetCrossingRoadBits(tile), GetRoadTypes(tile), GetTownIndex(tile), GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM)); DeleteNewGRFInspectWindow(GSF_RAILTYPES, tile); } break; } case MP_RAILWAY: { TrackBits present; /* There are no rails present at depots. */ if (!IsPlainRail(tile)) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); if (_current_company != OWNER_WATER) { CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; } CommandCost ret = EnsureNoTrainOnTrack(tile, track); if (ret.Failed()) return ret; present = GetTrackBits(tile); if ((present & trackbit) == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); if (present == (TRACK_BIT_X | TRACK_BIT_Y)) crossing = true; cost.AddCost(RailClearCost(GetRailType(tile))); /* Charge extra to remove signals on the track, if they are there */ if (HasSignalOnTrack(tile, track)) { cost.AddCost(DoCommand(tile, track, 0, flags, CMD_REMOVE_SIGNALS)); } if (flags & DC_EXEC) { if (HasReservedTracks(tile, trackbit)) { v = GetTrainForReservation(tile, track); if (v != NULL) FreeTrainTrackReservation(v); } owner = GetTileOwner(tile); /* Subtract old infrastructure count. */ uint pieces = CountBits(present); if (TracksOverlap(present)) pieces *= pieces; Company::Get(owner)->infrastructure.rail[GetRailType(tile)] -= pieces; /* Add new infrastructure count. */ present ^= trackbit; pieces = CountBits(present); if (TracksOverlap(present)) pieces *= pieces; Company::Get(owner)->infrastructure.rail[GetRailType(tile)] += pieces; DirtyCompanyInfrastructureWindows(owner); if (present == 0) { Slope tileh = GetTileSlope(tile); /* If there is flat water on the lower halftile, convert the tile to shore so the water remains */ if (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh)) { MakeShore(tile); } else { DoClearSquare(tile); } DeleteNewGRFInspectWindow(GSF_RAILTYPES, tile); } else { SetTrackBits(tile, present); SetTrackReservation(tile, GetRailReservationTrackBits(tile) & present); } } break; } default: return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); } if (flags & DC_EXEC) { /* if we got that far, 'owner' variable is set correctly */ assert(Company::IsValidID(owner)); MarkTileDirtyByTile(tile); if (crossing) { /* crossing is set when only TRACK_BIT_X and TRACK_BIT_Y are set. As we * are removing one of these pieces, we'll need to update signals for * both directions explicitly, as after the track is removed it won't * 'connect' with the other piece. */ AddTrackToSignalBuffer(tile, TRACK_X, owner); AddTrackToSignalBuffer(tile, TRACK_Y, owner); YapfNotifyTrackLayoutChange(tile, TRACK_X); YapfNotifyTrackLayoutChange(tile, TRACK_Y); } else { AddTrackToSignalBuffer(tile, track, owner); YapfNotifyTrackLayoutChange(tile, track); } if (v != NULL) TryPathReserve(v, true); } return cost; } /** * Called from water_cmd if a non-flat rail-tile gets flooded and should be converted to shore. * The function floods the lower halftile, if the tile has a halftile foundation. * * @param t The tile to flood. * @return true if something was flooded. */ bool FloodHalftile(TileIndex t) { assert(IsPlainRailTile(t)); bool flooded = false; if (GetRailGroundType(t) == RAIL_GROUND_WATER) return flooded; Slope tileh = GetTileSlope(t); TrackBits rail_bits = GetTrackBits(t); if (IsSlopeWithOneCornerRaised(tileh)) { TrackBits lower_track = CornerToTrackBits(OppositeCorner(GetHighestSlopeCorner(tileh))); TrackBits to_remove = lower_track & rail_bits; if (to_remove != 0) { Backup cur_company(_current_company, OWNER_WATER, FILE_LINE); flooded = DoCommand(t, 0, FIND_FIRST_BIT(to_remove), DC_EXEC, CMD_REMOVE_SINGLE_RAIL).Succeeded(); cur_company.Restore(); if (!flooded) return flooded; // not yet floodable rail_bits = rail_bits & ~to_remove; if (rail_bits == 0) { MakeShore(t); MarkTileDirtyByTile(t); return flooded; } } if (IsNonContinuousFoundation(GetRailFoundation(tileh, rail_bits))) { flooded = true; SetRailGroundType(t, RAIL_GROUND_WATER); MarkTileDirtyByTile(t); } } else { /* Make shore on steep slopes and 'three-corners-raised'-slopes. */ if (ApplyFoundationToSlope(GetRailFoundation(tileh, rail_bits), &tileh) == 0) { if (IsSteepSlope(tileh) || IsSlopeWithThreeCornersRaised(tileh)) { flooded = true; SetRailGroundType(t, RAIL_GROUND_WATER); MarkTileDirtyByTile(t); } } } return flooded; } static const TileIndexDiffC _trackdelta[] = { { -1, 0 }, { 0, 1 }, { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, 1 }, { 0, 0 }, { 0, 0 }, { 1, 0 }, { 0, -1 }, { 0, -1 }, { 1, 0 }, { 0, -1 }, { -1, 0 }, { 0, 0 }, { 0, 0 } }; static CommandCost ValidateAutoDrag(Trackdir *trackdir, TileIndex start, TileIndex end) { int x = TileX(start); int y = TileY(start); int ex = TileX(end); int ey = TileY(end); if (!ValParamTrackOrientation(TrackdirToTrack(*trackdir))) return CMD_ERROR; /* calculate delta x,y from start to end tile */ int dx = ex - x; int dy = ey - y; /* calculate delta x,y for the first direction */ int trdx = _trackdelta[*trackdir].x; int trdy = _trackdelta[*trackdir].y; if (!IsDiagonalTrackdir(*trackdir)) { trdx += _trackdelta[*trackdir ^ 1].x; trdy += _trackdelta[*trackdir ^ 1].y; } /* validate the direction */ while ((trdx <= 0 && dx > 0) || (trdx >= 0 && dx < 0) || (trdy <= 0 && dy > 0) || (trdy >= 0 && dy < 0)) { if (!HasBit(*trackdir, 3)) { // first direction is invalid, try the other SetBit(*trackdir, 3); // reverse the direction trdx = -trdx; trdy = -trdy; } else { // other direction is invalid too, invalid drag return CMD_ERROR; } } /* (for diagonal tracks, this is already made sure of by above test), but: * for non-diagonal tracks, check if the start and end tile are on 1 line */ if (!IsDiagonalTrackdir(*trackdir)) { trdx = _trackdelta[*trackdir].x; trdy = _trackdelta[*trackdir].y; if (abs(dx) != abs(dy) && abs(dx) + abs(trdy) != abs(dy) + abs(trdx)) return CMD_ERROR; } return CommandCost(); } /** * Build or remove a stretch of railroad tracks. * @param tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 7) - 0 = build, 1 = remove tracks * - p2 = (bit 8) - 0 = build up to an obstacle, 1 = fail if an obstacle is found (used for AIs). * @param text unused * @return the cost of this operation or an error */ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CommandCost total_cost(EXPENSES_CONSTRUCTION); Track track = Extract(p2); bool remove = HasBit(p2, 7); RailType railtype = Extract(p2); if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; if (p1 >= MapSize()) return CMD_ERROR; TileIndex end_tile = p1; Trackdir trackdir = TrackToTrackdir(track); CommandCost ret = ValidateAutoDrag(&trackdir, tile, end_tile); if (ret.Failed()) return ret; bool had_success = false; CommandCost last_error = CMD_ERROR; for (;;) { CommandCost ret = DoCommand(tile, railtype, TrackdirToTrack(trackdir), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); if (ret.Failed()) { last_error = ret; if (last_error.GetErrorMessage() != STR_ERROR_ALREADY_BUILT && !remove) { if (HasBit(p2, 8)) return last_error; break; } /* Ownership errors are more important. */ if (last_error.GetErrorMessage() == STR_ERROR_OWNED_BY && remove) break; } else { had_success = true; total_cost.AddCost(ret); } if (tile == end_tile) break; tile += ToTileIndexDiff(_trackdelta[trackdir]); /* toggle railbit for the non-diagonal tracks */ if (!IsDiagonalTrackdir(trackdir)) ToggleBit(trackdir, 0); } if (had_success) return total_cost; return last_error; } /** * Build rail on a stretch of track. * Stub for the unified rail builder/remover * @param tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 7) - 0 = build, 1 = remove tracks * @param text unused * @return the cost of this operation or an error * @see CmdRailTrackHelper */ CommandCost CmdBuildRailroadTrack(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { return CmdRailTrackHelper(tile, flags, p1, ClrBit(p2, 7), text); } /** * Build rail on a stretch of track. * Stub for the unified rail builder/remover * @param tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 7) - 0 = build, 1 = remove tracks * @param text unused * @return the cost of this operation or an error * @see CmdRailTrackHelper */ CommandCost CmdRemoveRailroadTrack(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { return CmdRailTrackHelper(tile, flags, p1, SetBit(p2, 7), text); } /** * Build a train depot * @param tile position of the train depot * @param flags operation to perform * @param p1 rail type * @param p2 bit 0..1 entrance direction (DiagDirection) * @param text unused * @return the cost of this operation or an error * * @todo When checking for the tile slope, * distinguish between "Flat land required" and "land sloped in wrong direction" */ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { /* check railtype and valid direction for depot (0 through 3), 4 in total */ RailType railtype = Extract(p1); if (!ValParamRailtype(railtype)) return CMD_ERROR; Slope tileh = GetTileSlope(tile); DiagDirection dir = Extract(p2); /* Prohibit construction if * The tile is non-flat AND * 1) build-on-slopes is disabled * 2) the tile is steep i.e. spans two height levels * 3) the exit points in the wrong direction */ if (tileh != SLOPE_FLAT && ( !_settings_game.construction.build_on_slopes || !CanBuildDepotByTileh(dir, tileh) )) { return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } CommandCost cost = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (cost.Failed()) return cost; if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); if (!Depot::CanAllocateItem()) return CMD_ERROR; if (flags & DC_EXEC) { Depot *d = new Depot(tile); d->build_date = _date; MakeRailDepot(tile, _current_company, d->index, dir, railtype); MarkTileDirtyByTile(tile); MakeDefaultName(d); Company::Get(_current_company)->infrastructure.rail[railtype]++; DirtyCompanyInfrastructureWindows(_current_company); AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_company); YapfNotifyTrackLayoutChange(tile, DiagDirToDiagTrack(dir)); } cost.AddCost(_price[PR_BUILD_DEPOT_TRAIN]); cost.AddCost(RailBuildCost(railtype)); return cost; } /** * Build signals, alternate between double/single, signal/semaphore, * pre/exit/combo-signals, and what-else not. If the rail piece does not * have any signals, bit 4 (cycle signal-type) is ignored * @param tile tile where to build the signals * @param flags operation to perform * @param p1 various bitstuffed elements * - p1 = (bit 0-2) - track-orientation, valid values: 0-5 (Track enum) * - p1 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal or (for bit 7) toggle variant (CTRL-toggle) * - p1 = (bit 4) - 0 = signals, 1 = semaphores * - p1 = (bit 5-7) - type of the signal, for valid values see enum SignalType in rail_map.h * - p1 = (bit 8) - convert the present signal type and variant * - p1 = (bit 9-11)- start cycle from this signal type * - p1 = (bit 12-14)-wrap around after this signal type * - p1 = (bit 15-16)-cycle the signal direction this many times * - p1 = (bit 17) - 1 = don't modify an existing signal but don't fail either, 0 = always set new signal type * @param p2 used for CmdBuildManySignals() to copy direction of first signal * @param text unused * @return the cost of this operation or an error * @todo p2 should be replaced by two bits for "along" and "against" the track. */ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Track track = Extract(p1); bool ctrl_pressed = HasBit(p1, 3); // was the CTRL button pressed SignalVariant sigvar = (ctrl_pressed ^ HasBit(p1, 4)) ? SIG_SEMAPHORE : SIG_ELECTRIC; // the signal variant of the new signal SignalType sigtype = Extract(p1); // the signal type of the new signal bool convert_signal = HasBit(p1, 8); // convert button pressed SignalType cycle_start = Extract(p1); SignalType cycle_stop = Extract(p1); uint num_dir_cycle = GB(p1, 15, 2); if (sigtype > SIGTYPE_LAST) return CMD_ERROR; if (cycle_start > cycle_stop || cycle_stop > SIGTYPE_LAST) return CMD_ERROR; /* You can only build signals on plain rail tiles, and the selected track must exist */ if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) || !HasTrack(tile, track)) { return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); } /* Protect against invalid signal copying */ if (p2 != 0 && (p2 & SignalOnTrack(track)) == 0) return CMD_ERROR; CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; { /* See if this is a valid track combination for signals, (ie, no overlap) */ TrackBits trackbits = GetTrackBits(tile); if (KillFirstBit(trackbits) != TRACK_BIT_NONE && // More than one track present trackbits != TRACK_BIT_HORZ && trackbits != TRACK_BIT_VERT) { return_cmd_error(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); } } /* In case we don't want to change an existing signal, return without error. */ if (HasBit(p1, 17) && HasSignalOnTrack(tile, track)) return CommandCost(); /* you can not convert a signal if no signal is on track */ if (convert_signal && !HasSignalOnTrack(tile, track)) return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS); CommandCost cost; if (!HasSignalOnTrack(tile, track)) { /* build new signals */ cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS]); } else { if (p2 != 0 && sigvar != GetSignalVariant(tile, track)) { /* convert signals <-> semaphores */ cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] + _price[PR_CLEAR_SIGNALS]); } else if (convert_signal) { /* convert button pressed */ if (ctrl_pressed || GetSignalVariant(tile, track) != sigvar) { /* convert electric <-> semaphore */ cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] + _price[PR_CLEAR_SIGNALS]); } else { /* it is free to change signal type: normal-pre-exit-combo */ cost = CommandCost(); } } else { /* it is free to change orientation/pre-exit-combo signals */ cost = CommandCost(); } } if (flags & DC_EXEC) { Train *v = NULL; /* The new/changed signal could block our path. As this can lead to * stale reservations, we clear the path reservation here and try * to redo it later on. */ if (HasReservedTracks(tile, TrackToTrackBits(track))) { v = GetTrainForReservation(tile, track); if (v != NULL) FreeTrainTrackReservation(v); } if (!HasSignals(tile)) { /* there are no signals at all on this tile yet */ SetHasSignals(tile, true); SetSignalStates(tile, 0xF); // all signals are on SetPresentSignals(tile, 0); // no signals built by default SetSignalType(tile, track, sigtype); SetSignalVariant(tile, track, sigvar); } /* Subtract old signal infrastructure count. */ Company::Get(GetTileOwner(tile))->infrastructure.signal -= CountBits(GetPresentSignals(tile)); if (p2 == 0) { if (!HasSignalOnTrack(tile, track)) { /* build new signals */ SetPresentSignals(tile, GetPresentSignals(tile) | (IsPbsSignal(sigtype) ? KillFirstBit(SignalOnTrack(track)) : SignalOnTrack(track))); SetSignalType(tile, track, sigtype); SetSignalVariant(tile, track, sigvar); while (num_dir_cycle-- > 0) CycleSignalSide(tile, track); } else { if (convert_signal) { /* convert signal button pressed */ if (ctrl_pressed) { /* toggle the present signal variant: SIG_ELECTRIC <-> SIG_SEMAPHORE */ SetSignalVariant(tile, track, (GetSignalVariant(tile, track) == SIG_ELECTRIC) ? SIG_SEMAPHORE : SIG_ELECTRIC); /* Query current signal type so the check for PBS signals below works. */ sigtype = GetSignalType(tile, track); } else { /* convert the present signal to the chosen type and variant */ SetSignalType(tile, track, sigtype); SetSignalVariant(tile, track, sigvar); if (IsPbsSignal(sigtype) && (GetPresentSignals(tile) & SignalOnTrack(track)) == SignalOnTrack(track)) { SetPresentSignals(tile, (GetPresentSignals(tile) & ~SignalOnTrack(track)) | KillFirstBit(SignalOnTrack(track))); } } } else if (ctrl_pressed) { /* cycle between cycle_start and cycle_end */ sigtype = (SignalType)(GetSignalType(tile, track) + 1); if (sigtype < cycle_start || sigtype > cycle_stop) sigtype = cycle_start; SetSignalType(tile, track, sigtype); if (IsPbsSignal(sigtype) && (GetPresentSignals(tile) & SignalOnTrack(track)) == SignalOnTrack(track)) { SetPresentSignals(tile, (GetPresentSignals(tile) & ~SignalOnTrack(track)) | KillFirstBit(SignalOnTrack(track))); } } else { /* cycle the signal side: both -> left -> right -> both -> ... */ CycleSignalSide(tile, track); /* Query current signal type so the check for PBS signals below works. */ sigtype = GetSignalType(tile, track); } } } else { /* If CmdBuildManySignals is called with copying signals, just copy the * direction of the first signal given as parameter by CmdBuildManySignals */ SetPresentSignals(tile, (GetPresentSignals(tile) & ~SignalOnTrack(track)) | (p2 & SignalOnTrack(track))); SetSignalVariant(tile, track, sigvar); SetSignalType(tile, track, sigtype); } /* Add new signal infrastructure count. */ Company::Get(GetTileOwner(tile))->infrastructure.signal += CountBits(GetPresentSignals(tile)); DirtyCompanyInfrastructureWindows(GetTileOwner(tile)); if (IsPbsSignal(sigtype)) { /* PBS signals should show red unless they are on reserved tiles without a train. */ uint mask = GetPresentSignals(tile) & SignalOnTrack(track); SetSignalStates(tile, (GetSignalStates(tile) & ~mask) | ((HasBit(GetRailReservationTrackBits(tile), track) && EnsureNoVehicleOnGround(tile).Succeeded() ? UINT_MAX : 0) & mask)); } MarkTileDirtyByTile(tile); AddTrackToSignalBuffer(tile, track, _current_company); YapfNotifyTrackLayoutChange(tile, track); if (v != NULL) { /* Extend the train's path if it's not stopped or loading, or not at a safe position. */ if (!(((v->vehstatus & VS_STOPPED) && v->cur_speed == 0) || v->current_order.IsType(OT_LOADING)) || !IsSafeWaitingPosition(v, v->tile, v->GetVehicleTrackdir(), true, _settings_game.pf.forbid_90_deg)) { TryPathReserve(v, true); } } } return cost; } static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal_ctr, bool remove) { tile = AddTileIndexDiffCWrap(tile, _trackdelta[trackdir]); if (tile == INVALID_TILE) return false; /* Check for track bits on the new tile */ TrackdirBits trackdirbits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)); if (TracksOverlap(TrackdirBitsToTrackBits(trackdirbits))) return false; trackdirbits &= TrackdirReachesTrackdirs(trackdir); /* No track bits, must stop */ if (trackdirbits == TRACKDIR_BIT_NONE) return false; /* Get the first track dir */ trackdir = RemoveFirstTrackdir(&trackdirbits); /* Any left? It's a junction so we stop */ if (trackdirbits != TRACKDIR_BIT_NONE) return false; switch (GetTileType(tile)) { case MP_RAILWAY: if (IsRailDepot(tile)) return false; if (!remove && HasSignalOnTrack(tile, TrackdirToTrack(trackdir))) return false; signal_ctr++; if (IsDiagonalTrackdir(trackdir)) { signal_ctr++; /* Ensure signal_ctr even so X and Y pieces get signals */ ClrBit(signal_ctr, 0); } return true; case MP_ROAD: if (!IsLevelCrossing(tile)) return false; signal_ctr += 2; return true; case MP_TUNNELBRIDGE: { TileIndex orig_tile = tile; // backup old value if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false; if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir)) return false; /* Skip to end of tunnel or bridge * note that tile is a parameter by reference, so it must be updated */ tile = GetOtherTunnelBridgeEnd(tile); signal_ctr += (GetTunnelBridgeLength(orig_tile, tile) + 2) * 2; return true; } default: return false; } } /** * Build many signals by dragging; AutoSignals * @param tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) * - p2 = (bit 4) - 0 = signals, 1 = semaphores * - p2 = (bit 5) - 0 = build, 1 = remove signals * - p2 = (bit 6) - 0 = selected stretch, 1 = auto fill * - p2 = (bit 7- 9) - default signal type * - p2 = (bit 10) - 0 = keep fixed distance, 1 = minimise gaps between signals * - p2 = (bit 24-31) - user defined signals_density * @param text unused * @return the cost of this operation or an error */ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { CommandCost total_cost(EXPENSES_CONSTRUCTION); TileIndex start_tile = tile; Track track = Extract(p2); bool mode = HasBit(p2, 3); bool semaphores = HasBit(p2, 4); bool remove = HasBit(p2, 5); bool autofill = HasBit(p2, 6); bool minimise_gaps = HasBit(p2, 10); byte signal_density = GB(p2, 24, 8); if (p1 >= MapSize() || !ValParamTrackOrientation(track)) return CMD_ERROR; TileIndex end_tile = p1; if (signal_density == 0 || signal_density > 20) return CMD_ERROR; if (!IsPlainRailTile(tile)) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); /* for vertical/horizontal tracks, double the given signals density * since the original amount will be too dense (shorter tracks) */ signal_density *= 2; Trackdir trackdir = TrackToTrackdir(track); CommandCost ret = ValidateAutoDrag(&trackdir, tile, end_tile); if (ret.Failed()) return ret; track = TrackdirToTrack(trackdir); // trackdir might have changed, keep track in sync Trackdir start_trackdir = trackdir; /* Must start on a valid track to be able to avoid loops */ if (!HasTrack(tile, track)) return CMD_ERROR; SignalType sigtype = (SignalType)GB(p2, 7, 3); if (sigtype > SIGTYPE_LAST) return CMD_ERROR; byte signals; /* copy the signal-style of the first rail-piece if existing */ if (HasSignalOnTrack(tile, track)) { signals = GetPresentSignals(tile) & SignalOnTrack(track); assert(signals != 0); /* copy signal/semaphores style (independent of CTRL) */ semaphores = GetSignalVariant(tile, track) != SIG_ELECTRIC; sigtype = GetSignalType(tile, track); /* Don't but copy entry or exit-signal type */ if (sigtype == SIGTYPE_ENTRY || sigtype == SIGTYPE_EXIT) sigtype = SIGTYPE_NORMAL; } else { // no signals exist, drag a two-way signal stretch signals = IsPbsSignal(sigtype) ? SignalAlongTrackdir(trackdir) : SignalOnTrack(track); } byte signal_dir = 0; if (signals & SignalAlongTrackdir(trackdir)) SetBit(signal_dir, 0); if (signals & SignalAgainstTrackdir(trackdir)) SetBit(signal_dir, 1); /* signal_ctr - amount of tiles already processed * last_used_ctr - amount of tiles before previously placed signal * signals_density - setting to put signal on every Nth tile (double space on |, -- tracks) * last_suitable_ctr - amount of tiles before last possible signal place * last_suitable_tile - last tile where it is possible to place a signal * last_suitable_trackdir - trackdir of the last tile ********** * trackdir - trackdir to build with autorail * semaphores - semaphores or signals * signals - is there a signal/semaphore on the first tile, copy its style (two-way/single-way) * and convert all others to semaphore/signal * remove - 1 remove signals, 0 build signals */ int signal_ctr = 0; int last_used_ctr = INT_MIN; // initially INT_MIN to force building/removing at the first tile int last_suitable_ctr = 0; TileIndex last_suitable_tile = INVALID_TILE; Trackdir last_suitable_trackdir = INVALID_TRACKDIR; CommandCost last_error = CMD_ERROR; bool had_success = false; for (;;) { /* only build/remove signals with the specified density */ if (remove || minimise_gaps || signal_ctr % signal_density == 0) { uint32 p1 = GB(TrackdirToTrack(trackdir), 0, 3); SB(p1, 3, 1, mode); SB(p1, 4, 1, semaphores); SB(p1, 5, 3, sigtype); if (!remove && signal_ctr == 0) SetBit(p1, 17); /* Pick the correct orientation for the track direction */ signals = 0; if (HasBit(signal_dir, 0)) signals |= SignalAlongTrackdir(trackdir); if (HasBit(signal_dir, 1)) signals |= SignalAgainstTrackdir(trackdir); /* Test tiles in between for suitability as well if minimising gaps. */ bool test_only = !remove && minimise_gaps && signal_ctr < (last_used_ctr + signal_density); CommandCost ret = DoCommand(tile, p1, signals, test_only ? flags & ~DC_EXEC : flags, remove ? CMD_REMOVE_SIGNALS : CMD_BUILD_SIGNALS); if (ret.Succeeded()) { /* Remember last track piece where we can place a signal. */ last_suitable_ctr = signal_ctr; last_suitable_tile = tile; last_suitable_trackdir = trackdir; } else if (!test_only && last_suitable_tile != INVALID_TILE) { /* If a signal can't be placed, place it at the last possible position. */ SB(p1, 0, 3, TrackdirToTrack(last_suitable_trackdir)); ClrBit(p1, 17); /* Pick the correct orientation for the track direction. */ signals = 0; if (HasBit(signal_dir, 0)) signals |= SignalAlongTrackdir(last_suitable_trackdir); if (HasBit(signal_dir, 1)) signals |= SignalAgainstTrackdir(last_suitable_trackdir); ret = DoCommand(last_suitable_tile, p1, signals, flags, remove ? CMD_REMOVE_SIGNALS : CMD_BUILD_SIGNALS); } /* Collect cost. */ if (!test_only) { /* Be user-friendly and try placing signals as much as possible */ if (ret.Succeeded()) { had_success = true; total_cost.AddCost(ret); last_used_ctr = last_suitable_ctr; last_suitable_tile = INVALID_TILE; } else { /* The "No railway" error is the least important one. */ if (ret.GetErrorMessage() != STR_ERROR_THERE_IS_NO_RAILROAD_TRACK || last_error.GetErrorMessage() == INVALID_STRING_ID) { last_error = ret; } } } } if (autofill) { if (!CheckSignalAutoFill(tile, trackdir, signal_ctr, remove)) break; /* Prevent possible loops */ if (tile == start_tile && trackdir == start_trackdir) break; } else { if (tile == end_tile) break; tile += ToTileIndexDiff(_trackdelta[trackdir]); signal_ctr++; /* toggle railbit for the non-diagonal tracks (|, -- tracks) */ if (IsDiagonalTrackdir(trackdir)) { signal_ctr++; } else { ToggleBit(trackdir, 0); } } } return had_success ? total_cost : last_error; } /** * Build signals on a stretch of track. * Stub for the unified signal builder/remover * @param tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) * - p2 = (bit 4) - 0 = signals, 1 = semaphores * - p2 = (bit 5) - 0 = build, 1 = remove signals * - p2 = (bit 6) - 0 = selected stretch, 1 = auto fill * - p2 = (bit 7- 9) - default signal type * - p2 = (bit 24-31) - user defined signals_density * @param text unused * @return the cost of this operation or an error * @see CmdSignalTrackHelper */ CommandCost CmdBuildSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { return CmdSignalTrackHelper(tile, flags, p1, p2, text); } /** * Remove signals * @param tile coordinates where signal is being deleted from * @param flags operation to perform * @param p1 various bitstuffed elements, only track information is used * - (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) * - (bit 3) - override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) * - (bit 4) - 0 = signals, 1 = semaphores * @param p2 unused * @param text unused * @return the cost of this operation or an error */ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { Track track = Extract(p1); if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) || !HasTrack(tile, track)) { return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); } if (!HasSignalOnTrack(tile, track)) { return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS); } /* Only water can remove signals from anyone */ if (_current_company != OWNER_WATER) { CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; } /* Do it? */ if (flags & DC_EXEC) { Train *v = NULL; if (HasReservedTracks(tile, TrackToTrackBits(track))) { v = GetTrainForReservation(tile, track); } else if (IsPbsSignal(GetSignalType(tile, track))) { /* PBS signal, might be the end of a path reservation. */ Trackdir td = TrackToTrackdir(track); for (int i = 0; v == NULL && i < 2; i++, td = ReverseTrackdir(td)) { /* Only test the active signal side. */ if (!HasSignalOnTrackdir(tile, ReverseTrackdir(td))) continue; TileIndex next = TileAddByDiagDir(tile, TrackdirToExitdir(td)); TrackBits tracks = TrackdirBitsToTrackBits(TrackdirReachesTrackdirs(td)); if (HasReservedTracks(next, tracks)) { v = GetTrainForReservation(next, TrackBitsToTrack(GetReservedTrackbits(next) & tracks)); } } } Company::Get(GetTileOwner(tile))->infrastructure.signal -= CountBits(GetPresentSignals(tile)); SetPresentSignals(tile, GetPresentSignals(tile) & ~SignalOnTrack(track)); Company::Get(GetTileOwner(tile))->infrastructure.signal += CountBits(GetPresentSignals(tile)); DirtyCompanyInfrastructureWindows(GetTileOwner(tile)); /* removed last signal from tile? */ if (GetPresentSignals(tile) == 0) { SetSignalStates(tile, 0); SetHasSignals(tile, false); SetSignalVariant(tile, INVALID_TRACK, SIG_ELECTRIC); // remove any possible semaphores } AddTrackToSignalBuffer(tile, track, GetTileOwner(tile)); YapfNotifyTrackLayoutChange(tile, track); if (v != NULL) TryPathReserve(v, false); MarkTileDirtyByTile(tile); } return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_SIGNALS]); } /** * Remove signals on a stretch of track. * Stub for the unified signal builder/remover * @param tile start tile of drag * @param flags operation to perform * @param p1 end tile of drag * @param p2 various bitstuffed elements * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) * - p2 = (bit 4) - 0 = signals, 1 = semaphores * - p2 = (bit 5) - 0 = build, 1 = remove signals * - p2 = (bit 6) - 0 = selected stretch, 1 = auto fill * - p2 = (bit 7- 9) - default signal type * - p2 = (bit 24-31) - user defined signals_density * @param text unused * @return the cost of this operation or an error * @see CmdSignalTrackHelper */ CommandCost CmdRemoveSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { return CmdSignalTrackHelper(tile, flags, p1, SetBit(p2, 5), text); // bit 5 is remove bit } /** Update power of train under which is the railtype being converted */ static Vehicle *UpdateTrainPowerProc(Vehicle *v, void *data) { if (v->type != VEH_TRAIN) return NULL; TrainList *affected_trains = static_cast(data); affected_trains->Include(Train::From(v)->First()); return NULL; } /** * Convert one rail type to the other. You can convert normal rail to * monorail/maglev easily or vice-versa. * @param tile end tile of rail conversion drag * @param flags operation to perform * @param p1 start tile of drag * @param p2 various bitstuffed elements: * - p2 = (bit 0- 3) new railtype to convert to. * - p2 = (bit 4) build diagonally or not. * @param text unused * @return the cost of this operation or an error */ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) { RailType totype = Extract(p2); if (!ValParamRailtype(totype)) return CMD_ERROR; if (p1 >= MapSize()) return CMD_ERROR; TrainList affected_trains; CommandCost cost(EXPENSES_CONSTRUCTION); CommandCost error = CommandCost(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); // by default, there is no track to convert. TileArea ta(tile, p1); TileIterator *iter = HasBit(p2, 4) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(ta); for (; (tile = *iter) != INVALID_TILE; ++(*iter)) { TileType tt = GetTileType(tile); /* Check if there is any track on tile */ switch (tt) { case MP_RAILWAY: break; case MP_STATION: if (!HasStationRail(tile)) continue; break; case MP_ROAD: if (!IsLevelCrossing(tile)) continue; if (RailNoLevelCrossings(totype)) { error.MakeError(STR_ERROR_CROSSING_DISALLOWED); continue; } break; case MP_TUNNELBRIDGE: if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) continue; break; default: continue; } /* Original railtype we are converting from */ RailType type = GetRailType(tile); /* Converting to the same type or converting 'hidden' elrail -> rail */ if (type == totype || (_settings_game.vehicle.disable_elrails && totype == RAILTYPE_RAIL && type == RAILTYPE_ELECTRIC)) continue; /* Trying to convert other's rail */ CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) { error = ret; continue; } SmallVector vehicles_affected; /* Vehicle on the tile when not converting Rail <-> ElRail * Tunnels and bridges have special check later */ if (tt != MP_TUNNELBRIDGE) { if (!IsCompatibleRail(type, totype)) { CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) { error = ret; continue; } } if (flags & DC_EXEC) { // we can safely convert, too TrackBits reserved = GetReservedTrackbits(tile); Track track; while ((track = RemoveFirstTrack(&reserved)) != INVALID_TRACK) { Train *v = GetTrainForReservation(tile, track); if (v != NULL && !HasPowerOnRail(v->railtype, totype)) { /* No power on new rail type, reroute. */ FreeTrainTrackReservation(v); *vehicles_affected.Append() = v; } } /* Update the company infrastructure counters. */ if (!IsRailStationTile(tile) || !IsStationTileBlocked(tile)) { Company *c = Company::Get(GetTileOwner(tile)); uint num_pieces = IsLevelCrossingTile(tile) ? LEVELCROSSING_TRACKBIT_FACTOR : 1; if (IsPlainRailTile(tile)) { TrackBits bits = GetTrackBits(tile); num_pieces = CountBits(bits); if (TracksOverlap(bits)) num_pieces *= num_pieces; } c->infrastructure.rail[type] -= num_pieces; c->infrastructure.rail[totype] += num_pieces; DirtyCompanyInfrastructureWindows(c->index); } SetRailType(tile, totype); MarkTileDirtyByTile(tile); /* update power of train on this tile */ FindVehicleOnPos(tile, &affected_trains, &UpdateTrainPowerProc); } } switch (tt) { case MP_RAILWAY: switch (GetRailTileType(tile)) { case RAIL_TILE_DEPOT: if (flags & DC_EXEC) { /* notify YAPF about the track layout change */ YapfNotifyTrackLayoutChange(tile, GetRailDepotTrack(tile)); /* Update build vehicle window related to this depot */ InvalidateWindowData(WC_VEHICLE_DEPOT, tile); InvalidateWindowData(WC_BUILD_VEHICLE, tile); } cost.AddCost(RailConvertCost(type, totype)); break; default: // RAIL_TILE_NORMAL, RAIL_TILE_SIGNALS if (flags & DC_EXEC) { /* notify YAPF about the track layout change */ TrackBits tracks = GetTrackBits(tile); while (tracks != TRACK_BIT_NONE) { YapfNotifyTrackLayoutChange(tile, RemoveFirstTrack(&tracks)); } } cost.AddCost(RailConvertCost(type, totype) * CountBits(GetTrackBits(tile))); break; } break; case MP_TUNNELBRIDGE: { TileIndex endtile = GetOtherTunnelBridgeEnd(tile); /* If both ends of tunnel/bridge are in the range, do not try to convert twice - * it would cause assert because of different test and exec runs */ if (endtile < tile && TileX(endtile) >= TileX(ta.tile) && TileX(endtile) < TileX(ta.tile) + ta.w && TileY(endtile) >= TileY(ta.tile) && TileY(endtile) < TileY(ta.tile) + ta.h) continue; /* When not converting rail <-> el. rail, any vehicle cannot be in tunnel/bridge */ if (!IsCompatibleRail(GetRailType(tile), totype)) { CommandCost ret = TunnelBridgeIsFree(tile, endtile); if (ret.Failed()) { error = ret; continue; } } if (flags & DC_EXEC) { Track track = DiagDirToDiagTrack(GetTunnelBridgeDirection(tile)); if (HasTunnelBridgeReservation(tile)) { Train *v = GetTrainForReservation(tile, track); if (v != NULL && !HasPowerOnRail(v->railtype, totype)) { /* No power on new rail type, reroute. */ FreeTrainTrackReservation(v); *vehicles_affected.Append() = v; } } /* Update the company infrastructure counters. */ uint num_pieces = (GetTunnelBridgeLength(tile, endtile) + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR; Company *c = Company::Get(GetTileOwner(tile)); c->infrastructure.rail[GetRailType(tile)] -= num_pieces; c->infrastructure.rail[totype] += num_pieces; DirtyCompanyInfrastructureWindows(c->index); SetRailType(tile, totype); SetRailType(endtile, totype); FindVehicleOnPos(tile, &affected_trains, &UpdateTrainPowerProc); FindVehicleOnPos(endtile, &affected_trains, &UpdateTrainPowerProc); YapfNotifyTrackLayoutChange(tile, track); YapfNotifyTrackLayoutChange(endtile, track); MarkTileDirtyByTile(tile); MarkTileDirtyByTile(endtile); if (IsBridge(tile)) { TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile)); TileIndex t = tile + delta; for (; t != endtile; t += delta) MarkTileDirtyByTile(t); // TODO encapsulate this into a function } } cost.AddCost((GetTunnelBridgeLength(tile, endtile) + 2) * RailConvertCost(type, totype)); break; } default: // MP_STATION, MP_ROAD if (flags & DC_EXEC) { Track track = ((tt == MP_STATION) ? GetRailStationTrack(tile) : GetCrossingRailTrack(tile)); YapfNotifyTrackLayoutChange(tile, track); } cost.AddCost(RailConvertCost(type, totype)); break; } for (uint i = 0; i < vehicles_affected.Length(); ++i) { TryPathReserve(vehicles_affected[i], true); } } if (flags & DC_EXEC) { /* Railtype changed, update trains as when entering different track */ for (Train **v = affected_trains.Begin(); v != affected_trains.End(); v++) { (*v)->ConsistChanged(true); } } delete iter; return (cost.GetCost() == 0) ? error : cost; } static CommandCost RemoveTrainDepot(TileIndex tile, DoCommandFlag flags) { if (_current_company != OWNER_WATER) { CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; } CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; if (flags & DC_EXEC) { /* read variables before the depot is removed */ DiagDirection dir = GetRailDepotDirection(tile); Owner owner = GetTileOwner(tile); Train *v = NULL; if (HasDepotReservation(tile)) { v = GetTrainForReservation(tile, DiagDirToDiagTrack(dir)); if (v != NULL) FreeTrainTrackReservation(v); } Company::Get(owner)->infrastructure.rail[GetRailType(tile)]--; DirtyCompanyInfrastructureWindows(owner); delete Depot::GetByTile(tile); DoClearSquare(tile); AddSideToSignalBuffer(tile, dir, owner); YapfNotifyTrackLayoutChange(tile, DiagDirToDiagTrack(dir)); if (v != NULL) TryPathReserve(v, true); } return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_DEPOT_TRAIN]); } static CommandCost ClearTile_Track(TileIndex tile, DoCommandFlag flags) { CommandCost cost(EXPENSES_CONSTRUCTION); if (flags & DC_AUTO) { if (!IsTileOwner(tile, _current_company)) { return_cmd_error(STR_ERROR_AREA_IS_OWNED_BY_ANOTHER); } if (IsPlainRail(tile)) { return_cmd_error(STR_ERROR_MUST_REMOVE_RAILROAD_TRACK); } else { return_cmd_error(STR_ERROR_BUILDING_MUST_BE_DEMOLISHED); } } switch (GetRailTileType(tile)) { case RAIL_TILE_SIGNALS: case RAIL_TILE_NORMAL: { Slope tileh = GetTileSlope(tile); /* Is there flat water on the lower halftile that gets cleared expensively? */ bool water_ground = (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh)); TrackBits tracks = GetTrackBits(tile); while (tracks != TRACK_BIT_NONE) { Track track = RemoveFirstTrack(&tracks); CommandCost ret = DoCommand(tile, 0, track, flags, CMD_REMOVE_SINGLE_RAIL); if (ret.Failed()) return ret; cost.AddCost(ret); } /* When bankrupting, don't make water dirty, there could be a ship on lower halftile. * Same holds for non-companies clearing the tile, e.g. disasters. */ if (water_ground && !(flags & DC_BANKRUPT) && Company::IsValidID(_current_company)) { CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; /* The track was removed, and left a coast tile. Now also clear the water. */ if (flags & DC_EXEC) DoClearSquare(tile); cost.AddCost(_price[PR_CLEAR_WATER]); } return cost; } case RAIL_TILE_DEPOT: return RemoveTrainDepot(tile, flags); default: return CMD_ERROR; } } /** * Get surface height in point (x,y) * On tiles with halftile foundations move (x,y) to a safe point wrt. track */ static uint GetSaveSlopeZ(uint x, uint y, Track track) { switch (track) { case TRACK_UPPER: x &= ~0xF; y &= ~0xF; break; case TRACK_LOWER: x |= 0xF; y |= 0xF; break; case TRACK_LEFT: x |= 0xF; y &= ~0xF; break; case TRACK_RIGHT: x &= ~0xF; y |= 0xF; break; default: break; } return GetSlopePixelZ(x, y); } static void DrawSingleSignal(TileIndex tile, const RailtypeInfo *rti, Track track, SignalState condition, SignalOffsets image, uint pos) { bool side; switch (_settings_game.construction.train_signal_side) { case 0: side = false; break; // left case 2: side = true; break; // right default: side = _settings_game.vehicle.road_side != 0; break; // driving side } static const Point SignalPositions[2][12] = { { // Signals on the left side /* LEFT LEFT RIGHT RIGHT UPPER UPPER */ { 8, 5}, {14, 1}, { 1, 14}, { 9, 11}, { 1, 0}, { 3, 10}, /* LOWER LOWER X X Y Y */ {11, 4}, {14, 14}, {11, 3}, { 4, 13}, { 3, 4}, {11, 13} }, { // Signals on the right side /* LEFT LEFT RIGHT RIGHT UPPER UPPER */ {14, 1}, {12, 10}, { 4, 6}, { 1, 14}, {10, 4}, { 0, 1}, /* LOWER LOWER X X Y Y */ {14, 14}, { 5, 12}, {11, 13}, { 4, 3}, {13, 4}, { 3, 11} } }; uint x = TileX(tile) * TILE_SIZE + SignalPositions[side][pos].x; uint y = TileY(tile) * TILE_SIZE + SignalPositions[side][pos].y; SignalType type = GetSignalType(tile, track); SignalVariant variant = GetSignalVariant(tile, track); SpriteID sprite = GetCustomSignalSprite(rti, tile, type, variant, condition); if (sprite != 0) { sprite += image; } else { /* Normal electric signals are stored in a different sprite block than all other signals. */ sprite = (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) ? SPR_ORIGINAL_SIGNALS_BASE : SPR_SIGNALS_BASE - 16; sprite += type * 16 + variant * 64 + image * 2 + condition + (type > SIGTYPE_LAST_NOPBS ? 64 : 0); } AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track)); } static uint32 _drawtile_track_palette; static void DrawTrackFence_NW(const TileInfo *ti, SpriteID base_image) { RailFenceOffset rfo = RFO_FLAT_X; if (ti->tileh & SLOPE_NW) rfo = (ti->tileh & SLOPE_W) ? RFO_SLOPE_SW : RFO_SLOPE_NE; AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, ti->x, ti->y + 1, 16, 1, 4, ti->z); } static void DrawTrackFence_SE(const TileInfo *ti, SpriteID base_image) { RailFenceOffset rfo = RFO_FLAT_X; if (ti->tileh & SLOPE_SE) rfo = (ti->tileh & SLOPE_S) ? RFO_SLOPE_SW : RFO_SLOPE_NE; AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, ti->x, ti->y + TILE_SIZE - 1, 16, 1, 4, ti->z); } static void DrawTrackFence_NW_SE(const TileInfo *ti, SpriteID base_image) { DrawTrackFence_NW(ti, base_image); DrawTrackFence_SE(ti, base_image); } static void DrawTrackFence_NE(const TileInfo *ti, SpriteID base_image) { RailFenceOffset rfo = RFO_FLAT_Y; if (ti->tileh & SLOPE_NE) rfo = (ti->tileh & SLOPE_E) ? RFO_SLOPE_SE : RFO_SLOPE_NW; AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, ti->x + 1, ti->y, 1, 16, 4, ti->z); } static void DrawTrackFence_SW(const TileInfo *ti, SpriteID base_image) { RailFenceOffset rfo = RFO_FLAT_Y; if (ti->tileh & SLOPE_SW) rfo = (ti->tileh & SLOPE_S) ? RFO_SLOPE_SE : RFO_SLOPE_NW; AddSortableSpriteToDraw(base_image + rfo, _drawtile_track_palette, ti->x + TILE_SIZE - 1, ti->y, 1, 16, 4, ti->z); } static void DrawTrackFence_NE_SW(const TileInfo *ti, SpriteID base_image) { DrawTrackFence_NE(ti, base_image); DrawTrackFence_SW(ti, base_image); } /** * Draw fence at eastern side of track. */ static void DrawTrackFence_NS_1(const TileInfo *ti, SpriteID base_image) { int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_W); AddSortableSpriteToDraw(base_image + RFO_FLAT_VERT, _drawtile_track_palette, ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); } /** * Draw fence at western side of track. */ static void DrawTrackFence_NS_2(const TileInfo *ti, SpriteID base_image) { int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_E); AddSortableSpriteToDraw(base_image + RFO_FLAT_VERT, _drawtile_track_palette, ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); } /** * Draw fence at southern side of track. */ static void DrawTrackFence_WE_1(const TileInfo *ti, SpriteID base_image) { int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_N); AddSortableSpriteToDraw(base_image + RFO_FLAT_HORZ, _drawtile_track_palette, ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); } /** * Draw fence at northern side of track. */ static void DrawTrackFence_WE_2(const TileInfo *ti, SpriteID base_image) { int z = ti->z + GetSlopePixelZInCorner(RemoveHalftileSlope(ti->tileh), CORNER_S); AddSortableSpriteToDraw(base_image + RFO_FLAT_HORZ, _drawtile_track_palette, ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); } static void DrawTrackDetails(const TileInfo *ti, const RailtypeInfo *rti) { /* Base sprite for track fences. * Note: Halftile slopes only have fences on the upper part. */ SpriteID base_image = GetCustomRailSprite(rti, ti->tile, RTSG_FENCES, IsHalftileSlope(ti->tileh) ? TCX_UPPER_HALFTILE : TCX_NORMAL); if (base_image == 0) base_image = SPR_TRACK_FENCE_FLAT_X; switch (GetRailGroundType(ti->tile)) { case RAIL_GROUND_FENCE_NW: DrawTrackFence_NW(ti, base_image); break; case RAIL_GROUND_FENCE_SE: DrawTrackFence_SE(ti, base_image); break; case RAIL_GROUND_FENCE_SENW: DrawTrackFence_NW_SE(ti, base_image); break; case RAIL_GROUND_FENCE_NE: DrawTrackFence_NE(ti, base_image); break; case RAIL_GROUND_FENCE_SW: DrawTrackFence_SW(ti, base_image); break; case RAIL_GROUND_FENCE_NESW: DrawTrackFence_NE_SW(ti, base_image); break; case RAIL_GROUND_FENCE_VERT1: DrawTrackFence_NS_1(ti, base_image); break; case RAIL_GROUND_FENCE_VERT2: DrawTrackFence_NS_2(ti, base_image); break; case RAIL_GROUND_FENCE_HORIZ1: DrawTrackFence_WE_1(ti, base_image); break; case RAIL_GROUND_FENCE_HORIZ2: DrawTrackFence_WE_2(ti, base_image); break; case RAIL_GROUND_WATER: { Corner track_corner; if (IsHalftileSlope(ti->tileh)) { /* Steep slope or one-corner-raised slope with halftile foundation */ track_corner = GetHalftileSlopeCorner(ti->tileh); } else { /* Three-corner-raised slope */ track_corner = OppositeCorner(GetHighestSlopeCorner(ComplementSlope(ti->tileh))); } switch (track_corner) { case CORNER_W: DrawTrackFence_NS_1(ti, base_image); break; case CORNER_S: DrawTrackFence_WE_2(ti, base_image); break; case CORNER_E: DrawTrackFence_NS_2(ti, base_image); break; case CORNER_N: DrawTrackFence_WE_1(ti, base_image); break; default: NOT_REACHED(); } break; } default: break; } } /* SubSprite for drawing the track halftile of 'three-corners-raised'-sloped rail sprites. */ static const int INF = 1000; // big number compared to tilesprite size static const SubSprite _halftile_sub_sprite[4] = { { -INF , -INF , 32 - 33, INF }, // CORNER_W, clip 33 pixels from right { -INF , 0 + 7, INF , INF }, // CORNER_S, clip 7 pixels from top { -31 + 33, -INF , INF , INF }, // CORNER_E, clip 33 pixels from left { -INF , -INF , INF , 30 - 23 } // CORNER_N, clip 23 pixels from bottom }; static inline void DrawTrackSprite(SpriteID sprite, PaletteID pal, const TileInfo *ti, Slope s) { DrawGroundSprite(sprite, pal, NULL, 0, (ti->tileh & s) ? -8 : 0); } static void DrawTrackBitsOverlay(TileInfo *ti, TrackBits track, const RailtypeInfo *rti) { RailGroundType rgt = GetRailGroundType(ti->tile); Foundation f = GetRailFoundation(ti->tileh, track); Corner halftile_corner = CORNER_INVALID; if (IsNonContinuousFoundation(f)) { /* Save halftile corner */ halftile_corner = (f == FOUNDATION_STEEP_BOTH ? GetHighestSlopeCorner(ti->tileh) : GetHalftileFoundationCorner(f)); /* Draw lower part first */ track &= ~CornerToTrackBits(halftile_corner); f = (f == FOUNDATION_STEEP_BOTH ? FOUNDATION_STEEP_LOWER : FOUNDATION_NONE); } DrawFoundation(ti, f); /* DrawFoundation modifies ti */ /* Draw ground */ if (rgt == RAIL_GROUND_WATER) { if (track != TRACK_BIT_NONE || IsSteepSlope(ti->tileh)) { /* three-corner-raised slope or steep slope with track on upper part */ DrawShoreTile(ti->tileh); } else { /* single-corner-raised slope with track on upper part */ DrawGroundSprite(SPR_FLAT_WATER_TILE, PAL_NONE); } } else { SpriteID image; switch (rgt) { case RAIL_GROUND_BARREN: image = SPR_FLAT_BARE_LAND; break; case RAIL_GROUND_ICE_DESERT: image = SPR_FLAT_SNOW_DESERT_TILE; break; default: image = SPR_FLAT_GRASS_TILE; break; } image += SlopeToSpriteOffset(ti->tileh); DrawGroundSprite(image, PAL_NONE); } SpriteID overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY); SpriteID ground = GetCustomRailSprite(rti, ti->tile, RTSG_GROUND); TrackBits pbs = _settings_client.gui.show_track_reservation ? GetRailReservationTrackBits(ti->tile) : TRACK_BIT_NONE; if (track == TRACK_BIT_NONE) { /* Half-tile foundation, no track here? */ } else if (ti->tileh == SLOPE_NW && track == TRACK_BIT_Y) { DrawGroundSprite(ground + RTO_SLOPE_NW, PAL_NONE); if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 9, PALETTE_CRASH); } else if (ti->tileh == SLOPE_NE && track == TRACK_BIT_X) { DrawGroundSprite(ground + RTO_SLOPE_NE, PAL_NONE); if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 6, PALETTE_CRASH); } else if (ti->tileh == SLOPE_SE && track == TRACK_BIT_Y) { DrawGroundSprite(ground + RTO_SLOPE_SE, PAL_NONE); if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 7, PALETTE_CRASH); } else if (ti->tileh == SLOPE_SW && track == TRACK_BIT_X) { DrawGroundSprite(ground + RTO_SLOPE_SW, PAL_NONE); if (pbs != TRACK_BIT_NONE) DrawGroundSprite(overlay + 8, PALETTE_CRASH); } else { switch (track) { /* Draw single ground sprite when not overlapping. No track overlay * is necessary for these sprites. */ case TRACK_BIT_X: DrawGroundSprite(ground + RTO_X, PAL_NONE); break; case TRACK_BIT_Y: DrawGroundSprite(ground + RTO_Y, PAL_NONE); break; case TRACK_BIT_UPPER: DrawTrackSprite(ground + RTO_N, PAL_NONE, ti, SLOPE_N); break; case TRACK_BIT_LOWER: DrawTrackSprite(ground + RTO_S, PAL_NONE, ti, SLOPE_S); break; case TRACK_BIT_RIGHT: DrawTrackSprite(ground + RTO_E, PAL_NONE, ti, SLOPE_E); break; case TRACK_BIT_LEFT: DrawTrackSprite(ground + RTO_W, PAL_NONE, ti, SLOPE_W); break; case TRACK_BIT_CROSS: DrawGroundSprite(ground + RTO_CROSSING_XY, PAL_NONE); break; case TRACK_BIT_HORZ: DrawTrackSprite(ground + RTO_N, PAL_NONE, ti, SLOPE_N); DrawTrackSprite(ground + RTO_S, PAL_NONE, ti, SLOPE_S); break; case TRACK_BIT_VERT: DrawTrackSprite(ground + RTO_E, PAL_NONE, ti, SLOPE_E); DrawTrackSprite(ground + RTO_W, PAL_NONE, ti, SLOPE_W); break; default: /* We're drawing a junction tile */ if ((track & TRACK_BIT_3WAY_NE) == 0) { DrawGroundSprite(ground + RTO_JUNCTION_SW, PAL_NONE); } else if ((track & TRACK_BIT_3WAY_SW) == 0) { DrawGroundSprite(ground + RTO_JUNCTION_NE, PAL_NONE); } else if ((track & TRACK_BIT_3WAY_NW) == 0) { DrawGroundSprite(ground + RTO_JUNCTION_SE, PAL_NONE); } else if ((track & TRACK_BIT_3WAY_SE) == 0) { DrawGroundSprite(ground + RTO_JUNCTION_NW, PAL_NONE); } else { DrawGroundSprite(ground + RTO_JUNCTION_NSEW, PAL_NONE); } /* Mask out PBS bits as we shall draw them afterwards anyway. */ track &= ~pbs; /* Draw regular track bits */ if (track & TRACK_BIT_X) DrawGroundSprite(overlay + RTO_X, PAL_NONE); if (track & TRACK_BIT_Y) DrawGroundSprite(overlay + RTO_Y, PAL_NONE); if (track & TRACK_BIT_UPPER) DrawGroundSprite(overlay + RTO_N, PAL_NONE); if (track & TRACK_BIT_LOWER) DrawGroundSprite(overlay + RTO_S, PAL_NONE); if (track & TRACK_BIT_RIGHT) DrawGroundSprite(overlay + RTO_E, PAL_NONE); if (track & TRACK_BIT_LEFT) DrawGroundSprite(overlay + RTO_W, PAL_NONE); } /* Draw reserved track bits */ if (pbs & TRACK_BIT_X) DrawGroundSprite(overlay + RTO_X, PALETTE_CRASH); if (pbs & TRACK_BIT_Y) DrawGroundSprite(overlay + RTO_Y, PALETTE_CRASH); if (pbs & TRACK_BIT_UPPER) DrawTrackSprite(overlay + RTO_N, PALETTE_CRASH, ti, SLOPE_N); if (pbs & TRACK_BIT_LOWER) DrawTrackSprite(overlay + RTO_S, PALETTE_CRASH, ti, SLOPE_S); if (pbs & TRACK_BIT_RIGHT) DrawTrackSprite(overlay + RTO_E, PALETTE_CRASH, ti, SLOPE_E); if (pbs & TRACK_BIT_LEFT) DrawTrackSprite(overlay + RTO_W, PALETTE_CRASH, ti, SLOPE_W); } if (IsValidCorner(halftile_corner)) { DrawFoundation(ti, HalftileFoundation(halftile_corner)); overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY, TCX_UPPER_HALFTILE); ground = GetCustomRailSprite(rti, ti->tile, RTSG_GROUND, TCX_UPPER_HALFTILE); /* Draw higher halftile-overlay: Use the sloped sprites with three corners raised. They probably best fit the lightning. */ Slope fake_slope = SlopeWithThreeCornersRaised(OppositeCorner(halftile_corner)); SpriteID image; switch (rgt) { case RAIL_GROUND_BARREN: image = SPR_FLAT_BARE_LAND; break; case RAIL_GROUND_ICE_DESERT: case RAIL_GROUND_HALF_SNOW: image = SPR_FLAT_SNOW_DESERT_TILE; break; default: image = SPR_FLAT_GRASS_TILE; break; } image += SlopeToSpriteOffset(fake_slope); DrawGroundSprite(image, PAL_NONE, &(_halftile_sub_sprite[halftile_corner])); track = CornerToTrackBits(halftile_corner); int offset; switch (track) { default: NOT_REACHED(); case TRACK_BIT_UPPER: offset = RTO_N; break; case TRACK_BIT_LOWER: offset = RTO_S; break; case TRACK_BIT_RIGHT: offset = RTO_E; break; case TRACK_BIT_LEFT: offset = RTO_W; break; } DrawTrackSprite(ground + offset, PAL_NONE, ti, fake_slope); if (_settings_client.gui.show_track_reservation && HasReservedTracks(ti->tile, track)) { DrawTrackSprite(overlay + offset, PALETTE_CRASH, ti, fake_slope); } } } /** * Draw ground sprite and track bits * @param ti TileInfo * @param track TrackBits to draw */ static void DrawTrackBits(TileInfo *ti, TrackBits track) { const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile)); if (rti->UsesOverlay()) { DrawTrackBitsOverlay(ti, track, rti); return; } RailGroundType rgt = GetRailGroundType(ti->tile); Foundation f = GetRailFoundation(ti->tileh, track); Corner halftile_corner = CORNER_INVALID; if (IsNonContinuousFoundation(f)) { /* Save halftile corner */ halftile_corner = (f == FOUNDATION_STEEP_BOTH ? GetHighestSlopeCorner(ti->tileh) : GetHalftileFoundationCorner(f)); /* Draw lower part first */ track &= ~CornerToTrackBits(halftile_corner); f = (f == FOUNDATION_STEEP_BOTH ? FOUNDATION_STEEP_LOWER : FOUNDATION_NONE); } DrawFoundation(ti, f); /* DrawFoundation modifies ti */ SpriteID image; PaletteID pal = PAL_NONE; const SubSprite *sub = NULL; bool junction = false; /* Select the sprite to use. */ if (track == 0) { /* Clear ground (only track on halftile foundation) */ if (rgt == RAIL_GROUND_WATER) { if (IsSteepSlope(ti->tileh)) { DrawShoreTile(ti->tileh); image = 0; } else { image = SPR_FLAT_WATER_TILE; } } else { switch (rgt) { case RAIL_GROUND_BARREN: image = SPR_FLAT_BARE_LAND; break; case RAIL_GROUND_ICE_DESERT: image = SPR_FLAT_SNOW_DESERT_TILE; break; default: image = SPR_FLAT_GRASS_TILE; break; } image += SlopeToSpriteOffset(ti->tileh); } } else { if (ti->tileh != SLOPE_FLAT) { /* track on non-flat ground */ image = _track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.track_y; } else { /* track on flat ground */ (image = rti->base_sprites.track_y, track == TRACK_BIT_Y) || (image++, track == TRACK_BIT_X) || (image++, track == TRACK_BIT_UPPER) || (image++, track == TRACK_BIT_LOWER) || (image++, track == TRACK_BIT_RIGHT) || (image++, track == TRACK_BIT_LEFT) || (image++, track == TRACK_BIT_CROSS) || (image = rti->base_sprites.track_ns, track == TRACK_BIT_HORZ) || (image++, track == TRACK_BIT_VERT) || (junction = true, false) || (image = rti->base_sprites.ground, (track & TRACK_BIT_3WAY_NE) == 0) || (image++, (track & TRACK_BIT_3WAY_SW) == 0) || (image++, (track & TRACK_BIT_3WAY_NW) == 0) || (image++, (track & TRACK_BIT_3WAY_SE) == 0) || (image++, true); } switch (rgt) { case RAIL_GROUND_BARREN: pal = PALETTE_TO_BARE_LAND; break; case RAIL_GROUND_ICE_DESERT: image += rti->snow_offset; break; case RAIL_GROUND_WATER: { /* three-corner-raised slope */ DrawShoreTile(ti->tileh); Corner track_corner = OppositeCorner(GetHighestSlopeCorner(ComplementSlope(ti->tileh))); sub = &(_halftile_sub_sprite[track_corner]); break; } default: break; } } if (image != 0) DrawGroundSprite(image, pal, sub); /* Draw track pieces individually for junction tiles */ if (junction) { if (track & TRACK_BIT_X) DrawGroundSprite(rti->base_sprites.single_x, PAL_NONE); if (track & TRACK_BIT_Y) DrawGroundSprite(rti->base_sprites.single_y, PAL_NONE); if (track & TRACK_BIT_UPPER) DrawGroundSprite(rti->base_sprites.single_n, PAL_NONE); if (track & TRACK_BIT_LOWER) DrawGroundSprite(rti->base_sprites.single_s, PAL_NONE); if (track & TRACK_BIT_LEFT) DrawGroundSprite(rti->base_sprites.single_w, PAL_NONE); if (track & TRACK_BIT_RIGHT) DrawGroundSprite(rti->base_sprites.single_e, PAL_NONE); } /* PBS debugging, draw reserved tracks darker */ if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation) { /* Get reservation, but mask track on halftile slope */ TrackBits pbs = GetRailReservationTrackBits(ti->tile) & track; if (pbs & TRACK_BIT_X) { if (ti->tileh == SLOPE_FLAT || ti->tileh == SLOPE_ELEVATED) { DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH); } else { DrawGroundSprite(_track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.single_sloped - 20, PALETTE_CRASH); } } if (pbs & TRACK_BIT_Y) { if (ti->tileh == SLOPE_FLAT || ti->tileh == SLOPE_ELEVATED) { DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH); } else { DrawGroundSprite(_track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.single_sloped - 20, PALETTE_CRASH); } } if (pbs & TRACK_BIT_UPPER) DrawGroundSprite(rti->base_sprites.single_n, PALETTE_CRASH, NULL, 0, ti->tileh & SLOPE_N ? -(int)TILE_HEIGHT : 0); if (pbs & TRACK_BIT_LOWER) DrawGroundSprite(rti->base_sprites.single_s, PALETTE_CRASH, NULL, 0, ti->tileh & SLOPE_S ? -(int)TILE_HEIGHT : 0); if (pbs & TRACK_BIT_LEFT) DrawGroundSprite(rti->base_sprites.single_w, PALETTE_CRASH, NULL, 0, ti->tileh & SLOPE_W ? -(int)TILE_HEIGHT : 0); if (pbs & TRACK_BIT_RIGHT) DrawGroundSprite(rti->base_sprites.single_e, PALETTE_CRASH, NULL, 0, ti->tileh & SLOPE_E ? -(int)TILE_HEIGHT : 0); } if (IsValidCorner(halftile_corner)) { DrawFoundation(ti, HalftileFoundation(halftile_corner)); /* Draw higher halftile-overlay: Use the sloped sprites with three corners raised. They probably best fit the lightning. */ Slope fake_slope = SlopeWithThreeCornersRaised(OppositeCorner(halftile_corner)); image = _track_sloped_sprites[fake_slope - 1] + rti->base_sprites.track_y; pal = PAL_NONE; switch (rgt) { case RAIL_GROUND_BARREN: pal = PALETTE_TO_BARE_LAND; break; case RAIL_GROUND_ICE_DESERT: case RAIL_GROUND_HALF_SNOW: image += rti->snow_offset; break; // higher part has snow in this case too default: break; } DrawGroundSprite(image, pal, &(_halftile_sub_sprite[halftile_corner])); if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasReservedTracks(ti->tile, CornerToTrackBits(halftile_corner))) { static const byte _corner_to_track_sprite[] = {3, 1, 2, 0}; DrawGroundSprite(_corner_to_track_sprite[halftile_corner] + rti->base_sprites.single_n, PALETTE_CRASH, NULL, 0, -(int)TILE_HEIGHT); } } } static void DrawSignals(TileIndex tile, TrackBits rails, const RailtypeInfo *rti) { #define MAYBE_DRAW_SIGNAL(x, y, z, t) if (IsSignalPresent(tile, x)) DrawSingleSignal(tile, rti, t, GetSingleSignalState(tile, x), y, z) if (!(rails & TRACK_BIT_Y)) { if (!(rails & TRACK_BIT_X)) { if (rails & TRACK_BIT_LEFT) { MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_NORTH, 0, TRACK_LEFT); MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_SOUTH, 1, TRACK_LEFT); } if (rails & TRACK_BIT_RIGHT) { MAYBE_DRAW_SIGNAL(0, SIGNAL_TO_NORTH, 2, TRACK_RIGHT); MAYBE_DRAW_SIGNAL(1, SIGNAL_TO_SOUTH, 3, TRACK_RIGHT); } if (rails & TRACK_BIT_UPPER) { MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_WEST, 4, TRACK_UPPER); MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_EAST, 5, TRACK_UPPER); } if (rails & TRACK_BIT_LOWER) { MAYBE_DRAW_SIGNAL(1, SIGNAL_TO_WEST, 6, TRACK_LOWER); MAYBE_DRAW_SIGNAL(0, SIGNAL_TO_EAST, 7, TRACK_LOWER); } } else { MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_SOUTHWEST, 8, TRACK_X); MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_NORTHEAST, 9, TRACK_X); } } else { MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_SOUTHEAST, 10, TRACK_Y); MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_NORTHWEST, 11, TRACK_Y); } } static void DrawTile_Track(TileInfo *ti) { const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile)); _drawtile_track_palette = COMPANY_SPRITE_COLOUR(GetTileOwner(ti->tile)); if (IsPlainRail(ti->tile)) { TrackBits rails = GetTrackBits(ti->tile); DrawTrackBits(ti, rails); if (HasBit(_display_opt, DO_FULL_DETAIL)) DrawTrackDetails(ti, rti); if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti); if (HasSignals(ti->tile)) DrawSignals(ti->tile, rails, rti); } else { /* draw depot */ const DrawTileSprites *dts; PaletteID pal = PAL_NONE; SpriteID relocation; if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED); if (IsInvisibilitySet(TO_BUILDINGS)) { /* Draw rail instead of depot */ dts = &_depot_invisible_gfx_table[GetRailDepotDirection(ti->tile)]; } else { dts = &_depot_gfx_table[GetRailDepotDirection(ti->tile)]; } SpriteID image; if (rti->UsesOverlay()) { image = SPR_FLAT_GRASS_TILE; } else { image = dts->ground.sprite; if (image != SPR_FLAT_GRASS_TILE) image += rti->GetRailtypeSpriteOffset(); } /* adjust ground tile for desert * don't adjust for snow, because snow in depots looks weird */ if (IsSnowRailGround(ti->tile) && _settings_game.game_creation.landscape == LT_TROPIC) { if (image != SPR_FLAT_GRASS_TILE) { image += rti->snow_offset; // tile with tracks } else { image = SPR_FLAT_SNOW_DESERT_TILE; // flat ground } } DrawGroundSprite(image, GroundSpritePaletteTransform(image, pal, _drawtile_track_palette)); if (rti->UsesOverlay()) { SpriteID ground = GetCustomRailSprite(rti, ti->tile, RTSG_GROUND); switch (GetRailDepotDirection(ti->tile)) { case DIAGDIR_NE: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH case DIAGDIR_SW: DrawGroundSprite(ground + RTO_X, PAL_NONE); break; case DIAGDIR_NW: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH case DIAGDIR_SE: DrawGroundSprite(ground + RTO_Y, PAL_NONE); break; default: break; } if (_settings_client.gui.show_track_reservation && HasDepotReservation(ti->tile)) { SpriteID overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY); switch (GetRailDepotDirection(ti->tile)) { case DIAGDIR_NE: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH case DIAGDIR_SW: DrawGroundSprite(overlay + RTO_X, PALETTE_CRASH); break; case DIAGDIR_NW: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH case DIAGDIR_SE: DrawGroundSprite(overlay + RTO_Y, PALETTE_CRASH); break; default: break; } } } else { /* PBS debugging, draw reserved tracks darker */ if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasDepotReservation(ti->tile)) { switch (GetRailDepotDirection(ti->tile)) { case DIAGDIR_NE: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH case DIAGDIR_SW: DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH); break; case DIAGDIR_NW: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH case DIAGDIR_SE: DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH); break; default: break; } } } int depot_sprite = GetCustomRailSprite(rti, ti->tile, RTSG_DEPOT); relocation = depot_sprite != 0 ? depot_sprite - SPR_RAIL_DEPOT_SE_1 : rti->GetRailtypeSpriteOffset(); if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti); DrawRailTileSeq(ti, dts, TO_BUILDINGS, relocation, 0, _drawtile_track_palette); } DrawBridgeMiddle(ti); } void DrawTrainDepotSprite(int x, int y, int dir, RailType railtype) { const DrawTileSprites *dts = &_depot_gfx_table[dir]; const RailtypeInfo *rti = GetRailTypeInfo(railtype); SpriteID image = rti->UsesOverlay() ? SPR_FLAT_GRASS_TILE : dts->ground.sprite; uint32 offset = rti->GetRailtypeSpriteOffset(); x += 33; y += 17; if (image != SPR_FLAT_GRASS_TILE) image += offset; PaletteID palette = COMPANY_SPRITE_COLOUR(_local_company); DrawSprite(image, PAL_NONE, x, y); if (rti->UsesOverlay()) { SpriteID ground = GetCustomRailSprite(rti, INVALID_TILE, RTSG_GROUND); switch (dir) { case DIAGDIR_SW: DrawSprite(ground + RTO_X, PAL_NONE, x, y); break; case DIAGDIR_SE: DrawSprite(ground + RTO_Y, PAL_NONE, x, y); break; default: break; } } int depot_sprite = GetCustomRailSprite(rti, INVALID_TILE, RTSG_DEPOT); if (depot_sprite != 0) offset = depot_sprite - SPR_RAIL_DEPOT_SE_1; DrawRailTileSeqInGUI(x, y, dts, offset, 0, palette); } static int GetSlopePixelZ_Track(TileIndex tile, uint x, uint y) { if (IsPlainRail(tile)) { int z; Slope tileh = GetTilePixelSlope(tile, &z); if (tileh == SLOPE_FLAT) return z; z += ApplyPixelFoundationToSlope(GetRailFoundation(tileh, GetTrackBits(tile)), &tileh); return z + GetPartialPixelZ(x & 0xF, y & 0xF, tileh); } else { return GetTileMaxPixelZ(tile); } } static Foundation GetFoundation_Track(TileIndex tile, Slope tileh) { return IsPlainRail(tile) ? GetRailFoundation(tileh, GetTrackBits(tile)) : FlatteningFoundation(tileh); } static void TileLoop_Track(TileIndex tile) { RailGroundType old_ground = GetRailGroundType(tile); RailGroundType new_ground; if (old_ground == RAIL_GROUND_WATER) { TileLoop_Water(tile); return; } switch (_settings_game.game_creation.landscape) { case LT_ARCTIC: { int z; Slope slope = GetTileSlope(tile, &z); bool half = false; /* for non-flat track, use lower part of track * in other cases, use the highest part with track */ if (IsPlainRail(tile)) { TrackBits track = GetTrackBits(tile); Foundation f = GetRailFoundation(slope, track); switch (f) { case FOUNDATION_NONE: /* no foundation - is the track on the upper side of three corners raised tile? */ if (IsSlopeWithThreeCornersRaised(slope)) z++; break; case FOUNDATION_INCLINED_X: case FOUNDATION_INCLINED_Y: /* sloped track - is it on a steep slope? */ if (IsSteepSlope(slope)) z++; break; case FOUNDATION_STEEP_LOWER: /* only lower part of steep slope */ z++; break; default: /* if it is a steep slope, then there is a track on higher part */ if (IsSteepSlope(slope)) z++; z++; break; } half = IsInsideMM(f, FOUNDATION_STEEP_BOTH, FOUNDATION_HALFTILE_N + 1); } else { /* is the depot on a non-flat tile? */ if (slope != SLOPE_FLAT) z++; } /* 'z' is now the lowest part of the highest track bit - * for sloped track, it is 'z' of lower part * for two track bits, it is 'z' of higher track bit * For non-continuous foundations (and STEEP_BOTH), 'half' is set */ if (z > GetSnowLine()) { if (half && z - GetSnowLine() == 1) { /* track on non-continuous foundation, lower part is not under snow */ new_ground = RAIL_GROUND_HALF_SNOW; } else { new_ground = RAIL_GROUND_ICE_DESERT; } goto set_ground; } break; } case LT_TROPIC: if (GetTropicZone(tile) == TROPICZONE_DESERT) { new_ground = RAIL_GROUND_ICE_DESERT; goto set_ground; } break; } new_ground = RAIL_GROUND_GRASS; if (IsPlainRail(tile) && old_ground != RAIL_GROUND_BARREN) { // wait until bottom is green /* determine direction of fence */ TrackBits rail = GetTrackBits(tile); Owner owner = GetTileOwner(tile); byte fences = 0; for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) { static const TrackBits dir_to_trackbits[DIAGDIR_END] = {TRACK_BIT_3WAY_NE, TRACK_BIT_3WAY_SE, TRACK_BIT_3WAY_SW, TRACK_BIT_3WAY_NW}; /* Track bit on this edge => no fence. */ if ((rail & dir_to_trackbits[d]) != TRACK_BIT_NONE) continue; TileIndex tile2 = tile + TileOffsByDiagDir(d); /* Show fences if it's a house, industry, object, road, tunnelbridge or not owned by us. */ if (!IsValidTile(tile2) || IsTileType(tile2, MP_HOUSE) || IsTileType(tile2, MP_INDUSTRY) || IsTileType(tile2, MP_ROAD) || (IsTileType(tile2, MP_OBJECT) && !IsOwnedLand(tile2)) || IsTileType(tile2, MP_TUNNELBRIDGE) || !IsTileOwner(tile2, owner)) { fences |= 1 << d; } } switch (fences) { case 0: break; case (1 << DIAGDIR_NE): new_ground = RAIL_GROUND_FENCE_NE; break; case (1 << DIAGDIR_SE): new_ground = RAIL_GROUND_FENCE_SE; break; case (1 << DIAGDIR_SW): new_ground = RAIL_GROUND_FENCE_SW; break; case (1 << DIAGDIR_NW): new_ground = RAIL_GROUND_FENCE_NW; break; case (1 << DIAGDIR_NE) | (1 << DIAGDIR_SW): new_ground = RAIL_GROUND_FENCE_NESW; break; case (1 << DIAGDIR_SE) | (1 << DIAGDIR_NW): new_ground = RAIL_GROUND_FENCE_SENW; break; case (1 << DIAGDIR_NE) | (1 << DIAGDIR_SE): new_ground = RAIL_GROUND_FENCE_VERT1; break; case (1 << DIAGDIR_NE) | (1 << DIAGDIR_NW): new_ground = RAIL_GROUND_FENCE_HORIZ2; break; case (1 << DIAGDIR_SE) | (1 << DIAGDIR_SW): new_ground = RAIL_GROUND_FENCE_HORIZ1; break; case (1 << DIAGDIR_SW) | (1 << DIAGDIR_NW): new_ground = RAIL_GROUND_FENCE_VERT2; break; default: NOT_REACHED(); } } set_ground: if (old_ground != new_ground) { SetRailGroundType(tile, new_ground); MarkTileDirtyByTile(tile); } } static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { /* Case of half tile slope with water. */ if (mode == TRANSPORT_WATER && IsPlainRail(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(GetTileSlope(tile))) { TrackBits tb = GetTrackBits(tile); switch (tb) { default: NOT_REACHED(); case TRACK_BIT_UPPER: tb = TRACK_BIT_LOWER; break; case TRACK_BIT_LOWER: tb = TRACK_BIT_UPPER; break; case TRACK_BIT_LEFT: tb = TRACK_BIT_RIGHT; break; case TRACK_BIT_RIGHT: tb = TRACK_BIT_LEFT; break; } return CombineTrackStatus(TrackBitsToTrackdirBits(tb), TRACKDIR_BIT_NONE); } if (mode != TRANSPORT_RAIL) return 0; TrackBits trackbits = TRACK_BIT_NONE; TrackdirBits red_signals = TRACKDIR_BIT_NONE; switch (GetRailTileType(tile)) { default: NOT_REACHED(); case RAIL_TILE_NORMAL: trackbits = GetTrackBits(tile); break; case RAIL_TILE_SIGNALS: { trackbits = GetTrackBits(tile); byte a = GetPresentSignals(tile); uint b = GetSignalStates(tile); b &= a; /* When signals are not present (in neither direction), * we pretend them to be green. Otherwise, it depends on * the signal type. For signals that are only active from * one side, we set the missing signals explicitly to * `green'. Otherwise, they implicitly become `red'. */ if (!IsOnewaySignal(tile, TRACK_UPPER) || (a & SignalOnTrack(TRACK_UPPER)) == 0) b |= ~a & SignalOnTrack(TRACK_UPPER); if (!IsOnewaySignal(tile, TRACK_LOWER) || (a & SignalOnTrack(TRACK_LOWER)) == 0) b |= ~a & SignalOnTrack(TRACK_LOWER); if ((b & 0x8) == 0) red_signals |= (TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_UPPER_E); if ((b & 0x4) == 0) red_signals |= (TRACKDIR_BIT_LEFT_S | TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_UPPER_W); if ((b & 0x2) == 0) red_signals |= (TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_LOWER_E); if ((b & 0x1) == 0) red_signals |= (TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LOWER_W); break; } case RAIL_TILE_DEPOT: { DiagDirection dir = GetRailDepotDirection(tile); if (side != INVALID_DIAGDIR && side != dir) break; trackbits = DiagDirToDiagTrackBits(dir); break; } } return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), red_signals); } static bool ClickTile_Track(TileIndex tile) { if (!IsRailDepot(tile)) return false; ShowDepotWindow(tile, VEH_TRAIN); return true; } static void GetTileDesc_Track(TileIndex tile, TileDesc *td) { const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile)); td->rail_speed = rti->max_speed; td->owner[0] = GetTileOwner(tile); SetDParamX(td->dparam, 0, rti->strings.name); switch (GetRailTileType(tile)) { case RAIL_TILE_NORMAL: td->str = STR_LAI_RAIL_DESCRIPTION_TRACK; break; case RAIL_TILE_SIGNALS: { static const StringID signal_type[6][6] = { { STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS }, { STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS }, { STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS }, { STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS }, { STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS }, { STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS, STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS } }; SignalType primary_signal; SignalType secondary_signal; if (HasSignalOnTrack(tile, TRACK_UPPER)) { primary_signal = GetSignalType(tile, TRACK_UPPER); secondary_signal = HasSignalOnTrack(tile, TRACK_LOWER) ? GetSignalType(tile, TRACK_LOWER) : primary_signal; } else { secondary_signal = primary_signal = GetSignalType(tile, TRACK_LOWER); } td->str = signal_type[secondary_signal][primary_signal]; break; } case RAIL_TILE_DEPOT: td->str = STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT; if (_settings_game.vehicle.train_acceleration_model != AM_ORIGINAL) { if (td->rail_speed > 0) { td->rail_speed = min(td->rail_speed, 61); } else { td->rail_speed = 61; } } td->build_date = Depot::GetByTile(tile)->build_date; break; default: NOT_REACHED(); } } static void ChangeTileOwner_Track(TileIndex tile, Owner old_owner, Owner new_owner) { if (!IsTileOwner(tile, old_owner)) return; if (new_owner != INVALID_OWNER) { /* Update company infrastructure counts. No need to dirty windows here, we'll redraw the whole screen anyway. */ uint num_pieces = 1; if (IsPlainRail(tile)) { TrackBits bits = GetTrackBits(tile); num_pieces = CountBits(bits); if (TracksOverlap(bits)) num_pieces *= num_pieces; } RailType rt = GetRailType(tile); Company::Get(old_owner)->infrastructure.rail[rt] -= num_pieces; Company::Get(new_owner)->infrastructure.rail[rt] += num_pieces; if (HasSignals(tile)) { uint num_sigs = CountBits(GetPresentSignals(tile)); Company::Get(old_owner)->infrastructure.signal -= num_sigs; Company::Get(new_owner)->infrastructure.signal += num_sigs; } SetTileOwner(tile, new_owner); } else { DoCommand(tile, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR); } } static const byte _fractcoords_behind[4] = { 0x8F, 0x8, 0x80, 0xF8 }; static const byte _fractcoords_enter[4] = { 0x8A, 0x48, 0x84, 0xA8 }; static const int8 _deltacoord_leaveoffset[8] = { -1, 0, 1, 0, /* x */ 0, 1, 0, -1 /* y */ }; /** * Compute number of ticks when next wagon will leave a depot. * Negative means next wagon should have left depot n ticks before. * @param v vehicle outside (leaving) the depot * @return number of ticks when the next wagon will leave */ int TicksToLeaveDepot(const Train *v) { DiagDirection dir = GetRailDepotDirection(v->tile); int length = v->CalcNextVehicleOffset(); switch (dir) { case DIAGDIR_NE: return ((int)(v->x_pos & 0x0F) - ((_fractcoords_enter[dir] & 0x0F) - (length + 1))); case DIAGDIR_SE: return -((int)(v->y_pos & 0x0F) - ((_fractcoords_enter[dir] >> 4) + (length + 1))); case DIAGDIR_SW: return -((int)(v->x_pos & 0x0F) - ((_fractcoords_enter[dir] & 0x0F) + (length + 1))); default: case DIAGDIR_NW: return ((int)(v->y_pos & 0x0F) - ((_fractcoords_enter[dir] >> 4) - (length + 1))); } return 0; // make compilers happy } /** * Tile callback routine when vehicle enters tile * @see vehicle_enter_tile_proc */ static VehicleEnterTileStatus VehicleEnter_Track(Vehicle *u, TileIndex tile, int x, int y) { /* this routine applies only to trains in depot tiles */ if (u->type != VEH_TRAIN || !IsRailDepotTile(tile)) return VETSB_CONTINUE; Train *v = Train::From(u); /* depot direction */ DiagDirection dir = GetRailDepotDirection(tile); /* Calculate the point where the following wagon should be activated. */ int length = v->CalcNextVehicleOffset(); byte fract_coord_leave = ((_fractcoords_enter[dir] & 0x0F) + // x (length + 1) * _deltacoord_leaveoffset[dir]) + (((_fractcoords_enter[dir] >> 4) + // y ((length + 1) * _deltacoord_leaveoffset[dir + 4])) << 4); byte fract_coord = (x & 0xF) + ((y & 0xF) << 4); if (_fractcoords_behind[dir] == fract_coord) { /* make sure a train is not entering the tile from behind */ return VETSB_CANNOT_ENTER; } else if (_fractcoords_enter[dir] == fract_coord) { if (DiagDirToDir(ReverseDiagDir(dir)) == v->direction) { /* enter the depot */ v->track = TRACK_BIT_DEPOT, v->vehstatus |= VS_HIDDEN; // hide it v->direction = ReverseDir(v->direction); if (v->Next() == NULL) VehicleEnterDepot(v->First()); v->tile = tile; InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); return VETSB_ENTERED_WORMHOLE; } } else if (fract_coord_leave == fract_coord) { if (DiagDirToDir(dir) == v->direction) { /* leave the depot? */ if ((v = v->Next()) != NULL) { v->vehstatus &= ~VS_HIDDEN; v->track = (DiagDirToAxis(dir) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y); } } } return VETSB_CONTINUE; } /** * Tests if autoslope is allowed. * * @param tile The tile. * @param flags Terraform command flags. * @param z_old Old TileZ. * @param tileh_old Old TileSlope. * @param z_new New TileZ. * @param tileh_new New TileSlope. * @param rail_bits Trackbits. */ static CommandCost TestAutoslopeOnRailTile(TileIndex tile, uint flags, int z_old, Slope tileh_old, int z_new, Slope tileh_new, TrackBits rail_bits) { if (!_settings_game.construction.build_on_slopes || !AutoslopeEnabled()) return_cmd_error(STR_ERROR_MUST_REMOVE_RAILROAD_TRACK); /* Is the slope-rail_bits combination valid in general? I.e. is it safe to call GetRailFoundation() ? */ if (CheckRailSlope(tileh_new, rail_bits, TRACK_BIT_NONE, tile).Failed()) return_cmd_error(STR_ERROR_MUST_REMOVE_RAILROAD_TRACK); /* Get the slopes on top of the foundations */ z_old += ApplyFoundationToSlope(GetRailFoundation(tileh_old, rail_bits), &tileh_old); z_new += ApplyFoundationToSlope(GetRailFoundation(tileh_new, rail_bits), &tileh_new); Corner track_corner; switch (rail_bits) { case TRACK_BIT_LEFT: track_corner = CORNER_W; break; case TRACK_BIT_LOWER: track_corner = CORNER_S; break; case TRACK_BIT_RIGHT: track_corner = CORNER_E; break; case TRACK_BIT_UPPER: track_corner = CORNER_N; break; /* Surface slope must not be changed */ default: if (z_old != z_new || tileh_old != tileh_new) return_cmd_error(STR_ERROR_MUST_REMOVE_RAILROAD_TRACK); return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); } /* The height of the track_corner must not be changed. The rest ensures GetRailFoundation() already. */ z_old += GetSlopeZInCorner(RemoveHalftileSlope(tileh_old), track_corner); z_new += GetSlopeZInCorner(RemoveHalftileSlope(tileh_new), track_corner); if (z_old != z_new) return_cmd_error(STR_ERROR_MUST_REMOVE_RAILROAD_TRACK); CommandCost cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); /* Make the ground dirty, if surface slope has changed */ if (tileh_old != tileh_new) { /* If there is flat water on the lower halftile add the cost for clearing it */ if (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh_old)) cost.AddCost(_price[PR_CLEAR_WATER]); if ((flags & DC_EXEC) != 0) SetRailGroundType(tile, RAIL_GROUND_BARREN); } return cost; } /** * Test-procedure for HasVehicleOnPos to check for a ship. */ static Vehicle *EnsureNoShipProc(Vehicle *v, void *data) { return v->type == VEH_SHIP ? v : NULL; } static CommandCost TerraformTile_Track(TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) { int z_old; Slope tileh_old = GetTileSlope(tile, &z_old); if (IsPlainRail(tile)) { TrackBits rail_bits = GetTrackBits(tile); /* Is there flat water on the lower halftile that must be cleared expensively? */ bool was_water = (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh_old)); /* Allow clearing the water only if there is no ship */ if (was_water && HasVehicleOnPos(tile, NULL, &EnsureNoShipProc)) return_cmd_error(STR_ERROR_SHIP_IN_THE_WAY); /* First test autoslope. However if it succeeds we still have to test the rest, because non-autoslope terraforming is cheaper. */ CommandCost autoslope_result = TestAutoslopeOnRailTile(tile, flags, z_old, tileh_old, z_new, tileh_new, rail_bits); /* When there is only a single horizontal/vertical track, one corner can be terraformed. */ Corner allowed_corner; switch (rail_bits) { case TRACK_BIT_RIGHT: allowed_corner = CORNER_W; break; case TRACK_BIT_UPPER: allowed_corner = CORNER_S; break; case TRACK_BIT_LEFT: allowed_corner = CORNER_E; break; case TRACK_BIT_LOWER: allowed_corner = CORNER_N; break; default: return autoslope_result; } Foundation f_old = GetRailFoundation(tileh_old, rail_bits); /* Do not allow terraforming if allowed_corner is part of anti-zig-zag foundations */ if (tileh_old != SLOPE_NS && tileh_old != SLOPE_EW && IsSpecialRailFoundation(f_old)) return autoslope_result; /* Everything is valid, which only changes allowed_corner */ for (Corner corner = (Corner)0; corner < CORNER_END; corner = (Corner)(corner + 1)) { if (allowed_corner == corner) continue; if (z_old + GetSlopeZInCorner(tileh_old, corner) != z_new + GetSlopeZInCorner(tileh_new, corner)) return autoslope_result; } /* Make the ground dirty */ if ((flags & DC_EXEC) != 0) SetRailGroundType(tile, RAIL_GROUND_BARREN); /* allow terraforming */ return CommandCost(EXPENSES_CONSTRUCTION, was_water ? _price[PR_CLEAR_WATER] : (Money)0); } else if (_settings_game.construction.build_on_slopes && AutoslopeEnabled() && AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRailDepotDirection(tile))) { return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); } return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); } extern const TileTypeProcs _tile_type_rail_procs = { DrawTile_Track, // draw_tile_proc GetSlopePixelZ_Track, // get_slope_z_proc ClearTile_Track, // clear_tile_proc NULL, // add_accepted_cargo_proc GetTileDesc_Track, // get_tile_desc_proc GetTileTrackStatus_Track, // get_tile_track_status_proc ClickTile_Track, // click_tile_proc NULL, // animate_tile_proc TileLoop_Track, // tile_loop_proc ChangeTileOwner_Track, // change_tile_owner_proc NULL, // add_produced_cargo_proc VehicleEnter_Track, // vehicle_enter_tile_proc GetFoundation_Track, // get_foundation_proc TerraformTile_Track, // terraform_tile_proc }; openttd-1.3.3/src/string_base.h0000644000000000000000000000423112246102611015124 0ustar rootroot/* $Id: string_base.h 25979 2013-11-13 21:28:21Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ #ifndef STRING_BASE_H #define STRING_BASE_H #include "string_type.h" /** Class for iterating over different kind of parts of a string. */ class StringIterator { public: /** Type of the iterator. */ enum IterType { ITER_CHARACTER, ///< Iterate over characters (or more exactly grapheme clusters). ITER_WORD, ///< Iterate over words. }; /** Sentinel to indicate end-of-iteration. */ static const size_t END = SIZE_MAX; /** * Create a new iterator instance. * @return New iterator instance. */ static StringIterator *Create(); virtual ~StringIterator() {} /** * Set a new iteration string. Must also be called if the string contents * changed. The cursor is reset to the start of the string. * @param s New string. */ virtual void SetString(const char *s) = 0; /** * Change the current string cursor. * @param p New cursor position. * @return Actual new cursor position at the next valid character boundary. * @pre p has to be inside the current string. */ virtual size_t SetCurPosition(size_t pos) = 0; /** * Advance the cursor by one iteration unit. * @return New cursor position (in bytes) or #END if the cursor is already at the end of the string. */ virtual size_t Next(IterType what = ITER_CHARACTER) = 0; /** * Move the cursor back by one iteration unit. * @return New cursor position (in bytes) or #END if the cursor is already at the start of the string. */ virtual size_t Prev(IterType what = ITER_CHARACTER) = 0; protected: StringIterator() {} }; #endif /* STRING_BASE_H */ openttd-1.3.3/src/object_base.h0000644000000000000000000000565112246102610015072 0ustar rootroot/* $Id: object_base.h 23735 2012-01-03 20:26:05Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file object_base.h Base for all objects. */ #ifndef OBJECT_BASE_H #define OBJECT_BASE_H #include "core/pool_type.hpp" #include "object_type.h" #include "tilearea_type.h" #include "town_type.h" #include "date_type.h" typedef Pool ObjectPool; extern ObjectPool _object_pool; /** An object, such as transmitter, on the map. */ struct Object : ObjectPool::PoolItem<&_object_pool> { Town *town; ///< Town the object is built in TileArea location; ///< Location of the object Date build_date; ///< Date of construction byte colour; ///< Colour of the object, for display purpose byte view; ///< The view setting for this object /** Make sure the object isn't zeroed. */ Object() {} /** Make sure the right destructor is called as well! */ ~Object() {} static Object *GetByTile(TileIndex tile); /** * Increment the count of objects for this type. * @param type ObjectType to increment * @pre type < NUM_OBJECTS */ static inline void IncTypeCount(ObjectType type) { assert(type < NUM_OBJECTS); counts[type]++; } /** * Decrement the count of objects for this type. * @param type ObjectType to decrement * @pre type < NUM_OBJECTS */ static inline void DecTypeCount(ObjectType type) { assert(type < NUM_OBJECTS); counts[type]--; } /** * Get the count of objects for this type. * @param type ObjectType to query * @pre type < NUM_OBJECTS */ static inline uint16 GetTypeCount(ObjectType type) { assert(type < NUM_OBJECTS); return counts[type]; } /** Resets object counts. */ static inline void ResetTypeCounts() { memset(&counts, 0, sizeof(counts)); } protected: static uint16 counts[NUM_OBJECTS]; ///< Number of objects per type ingame }; #define FOR_ALL_OBJECTS_FROM(var, start) FOR_ALL_ITEMS_FROM(Object, object_index, var, start) #define FOR_ALL_OBJECTS(var) FOR_ALL_OBJECTS_FROM(var, 0) /** * Keeps track of removed objects during execution/testruns of commands. */ struct ClearedObjectArea { TileIndex first_tile; ///< The first tile being cleared, which then causes the whole object to be cleared. TileArea area; ///< The area of the object. }; ClearedObjectArea *FindClearedObject(TileIndex tile); extern SmallVector _cleared_object_areas; #endif /* OBJECT_BASE_H */ openttd-1.3.3/src/dedicated.cpp0000644000000000000000000000413312246102611015066 0ustar rootroot/* $Id: dedicated.cpp 20194 2010-07-19 17:46:53Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file dedicated.cpp Forking support for dedicated servers. */ #include "stdafx.h" #ifdef ENABLE_NETWORK char *_log_file; ///< File to reroute output of a forked OpenTTD to #if defined(UNIX) && !defined(__MORPHOS__) #include #if (defined(SUNOS) && !defined(_LP64) && !defined(_I32LPx)) || defined(__HAIKU__) /* Solaris has, in certain situation, pid_t defined as long, while in other * cases it has it defined as int... this handles all cases nicely. * Haiku has also defined pid_t as a long. */ # define PRINTF_PID_T "%ld" #else # define PRINTF_PID_T "%d" #endif void DedicatedFork() { /* Fork the program */ pid_t pid = fork(); switch (pid) { case -1: perror("Unable to fork"); exit(1); case 0: { // We're the child FILE *f; /* Open the log-file to log all stuff too */ f = fopen(_log_file, "a"); if (f == NULL) { perror("Unable to open logfile"); exit(1); } /* Redirect stdout and stderr to log-file */ if (dup2(fileno(f), fileno(stdout)) == -1) { perror("Rerouting stdout"); exit(1); } if (dup2(fileno(f), fileno(stderr)) == -1) { perror("Rerouting stderr"); exit(1); } break; } default: /* We're the parent */ printf("Loading dedicated server...\n"); printf(" - Forked to background with pid " PRINTF_PID_T "\n", pid); exit(0); } } #endif #else /** Empty helper function call for NOT(UNIX and not MORPHOS) systems */ void DedicatedFork() {} #endif /* ENABLE_NETWORK */ openttd-1.3.3/src/news_gui.h0000644000000000000000000000146412246102611014451 0ustar rootroot/* $Id: news_gui.h 24842 2012-12-23 21:06:37Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file news_gui.h GUI functions related to the news. */ #ifndef NEWS_GUI_H #define NEWS_GUI_H void ShowLastNewsMessage(); void ShowMessageHistory(); #endif /* NEWS_GUI_H */ openttd-1.3.3/src/transparency_gui.cpp0000644000000000000000000001535112246102611016541 0ustar rootroot/* $Id: transparency_gui.cpp 24900 2013-01-08 22:46:42Z planetmaker $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file transparency_gui.cpp The transparency GUI. */ #include "stdafx.h" #include "window_gui.h" #include "transparency.h" #include "sound_func.h" #include "settings_type.h" #include "widgets/transparency_widget.h" #include "table/sprites.h" #include "table/strings.h" TransparencyOptionBits _transparency_opt; ///< The bits that should be transparent. TransparencyOptionBits _transparency_lock; ///< Prevent these bits from flipping with X. TransparencyOptionBits _invisibility_opt; ///< The bits that should be invisible. byte _display_opt; ///< What do we want to draw/do? class TransparenciesWindow : public Window { public: TransparenciesWindow(const WindowDesc *desc, int window_number) : Window() { this->InitNested(desc, window_number); } virtual void OnPaint() { this->OnInvalidateData(0); // Must be sure that the widgets show the transparency variable changes, also when we use shortcuts. this->DrawWidgets(); } virtual void DrawWidget(const Rect &r, int widget) const { switch (widget) { case WID_TT_SIGNS: case WID_TT_TREES: case WID_TT_HOUSES: case WID_TT_INDUSTRIES: case WID_TT_BUILDINGS: case WID_TT_BRIDGES: case WID_TT_STRUCTURES: case WID_TT_CATENARY: case WID_TT_LOADING: { uint i = widget - WID_TT_BEGIN; if (HasBit(_transparency_lock, i)) DrawSprite(SPR_LOCK, PAL_NONE, r.left + 1, r.top + 1); break; } case WID_TT_BUTTONS: for (uint i = WID_TT_BEGIN; i < WID_TT_END; i++) { if (i == WID_TT_LOADING) continue; // Do not draw button for invisible loading indicators. const NWidgetBase *wi = this->GetWidget(i); DrawFrameRect(wi->pos_x + 1, r.top + 2, wi->pos_x + wi->current_x - 2, r.bottom - 2, COLOUR_PALE_GREEN, HasBit(_invisibility_opt, i - WID_TT_BEGIN) ? FR_LOWERED : FR_NONE); } break; } } virtual void OnClick(Point pt, int widget, int click_count) { if (widget >= WID_TT_BEGIN && widget < WID_TT_END) { if (_ctrl_pressed) { /* toggle the bit of the transparencies lock variable */ ToggleTransparencyLock((TransparencyOption)(widget - WID_TT_BEGIN)); this->SetDirty(); } else { /* toggle the bit of the transparencies variable and play a sound */ ToggleTransparency((TransparencyOption)(widget - WID_TT_BEGIN)); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); MarkWholeScreenDirty(); } } else if (widget == WID_TT_BUTTONS) { uint i; for (i = WID_TT_BEGIN; i < WID_TT_END; i++) { const NWidgetBase *nwid = this->GetWidget(i); if (IsInsideBS(pt.x, nwid->pos_x, nwid->current_x)) { break; } } if (i == WID_TT_LOADING || i == WID_TT_END) return; ToggleInvisibility((TransparencyOption)(i - WID_TT_BEGIN)); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); /* Redraw whole screen only if transparency is set */ if (IsTransparencySet((TransparencyOption)(i - WID_TT_BEGIN))) { MarkWholeScreenDirty(); } else { this->SetWidgetDirty(WID_TT_BUTTONS); } } } virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number) { Point pt = GetToolbarAlignedWindowPosition(sm_width); pt.y += 2 * (sm_height - this->GetWidget(WID_TT_BUTTONS)->current_y); return pt; } /** * Some data on this window has become invalid. * @param data Information about the changed data. * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { if (!gui_scope) return; for (uint i = WID_TT_BEGIN; i < WID_TT_END; i++) { this->SetWidgetLoweredState(i, IsTransparencySet((TransparencyOption)(i - WID_TT_BEGIN))); } } }; static const NWidgetPart _nested_transparency_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_TRANSPARENCY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_SIGNS), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_SIGN, STR_TRANSPARENT_SIGNS_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_TREES), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_PLANTTREES, STR_TRANSPARENT_TREES_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_HOUSES), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TOWN, STR_TRANSPARENT_HOUSES_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_INDUSTRIES), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_INDUSTRY, STR_TRANSPARENT_INDUSTRIES_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_BUILDINGS), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_COMPANY_LIST, STR_TRANSPARENT_BUILDINGS_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_BRIDGES), SetMinimalSize(43, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BRIDGE, STR_TRANSPARENT_BRIDGES_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_STRUCTURES), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRANSMITTER, STR_TRANSPARENT_STRUCTURES_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_CATENARY), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_BUILD_X_ELRAIL, STR_TRANSPARENT_CATENARY_TOOLTIP), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_LOADING), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRAINLIST, STR_TRANSPARENT_LOADING_TOOLTIP), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 1), EndContainer(), EndContainer(), /* Panel with 'invisibility' buttons. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_TT_BUTTONS), SetMinimalSize(219, 13), SetDataTip(0x0, STR_TRANSPARENT_INVISIBLE_TOOLTIP), EndContainer(), }; static const WindowDesc _transparency_desc( WDP_MANUAL, 0, 0, WC_TRANSPARENCY_TOOLBAR, WC_NONE, 0, _nested_transparency_widgets, lengthof(_nested_transparency_widgets) ); /** * Show the transparency toolbar. */ void ShowTransparencyToolbar() { AllocateWindowDescFront(&_transparency_desc, 0); } openttd-1.3.3/src/depot_type.h0000644000000000000000000000173312246102610015003 0ustar rootroot/* $Id: depot_type.h 22411 2011-05-02 17:42:12Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file depot_type.h Header files for depots (not hangars) */ #ifndef DEPOT_TYPE_H #define DEPOT_TYPE_H typedef uint16 DepotID; ///< Type for the unique identifier of depots. struct Depot; static const uint MAX_LENGTH_DEPOT_NAME_CHARS = 32; ///< The maximum length of a depot name in characters including '\0' #endif /* DEPOT_TYPE_H */ openttd-1.3.3/src/slope_type.h0000644000000000000000000001456312246102611015020 0ustar rootroot/* $Id: slope_type.h 23595 2011-12-19 17:48:04Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** * @file slope_type.h Definitions of a slope. * This file defines the enumeration and helper functions for handling * the slope info of a tile. */ #ifndef SLOPE_TYPE_H #define SLOPE_TYPE_H #include "core/enum_type.hpp" /** * Enumeration of tile corners */ enum Corner { CORNER_W = 0, CORNER_S = 1, CORNER_E = 2, CORNER_N = 3, CORNER_END, CORNER_INVALID = 0xFF }; /** * Enumeration for the slope-type. * * This enumeration use the chars N,E,S,W corresponding the * direction north, east, south and west. The top corner of a tile * is the north-part of the tile. The whole slope is encoded with * 5 bits, 4 bits for each corner and 1 bit for a steep-flag. * * For halftile slopes an extra 3 bits are used to represent this * properly; 1 bit for a halftile-flag and 2 bits to encode which * extra side (corner) is leveled when the slope of the first 5 * bits is applied. This means that there can only be one leveled * slope for steep slopes, which is logical because two leveled * slopes would mean that it is not a steep slope as halftile * slopes only span one height level. */ enum Slope { SLOPE_FLAT = 0x00, ///< a flat tile SLOPE_W = 0x01, ///< the west corner of the tile is raised SLOPE_S = 0x02, ///< the south corner of the tile is raised SLOPE_E = 0x04, ///< the east corner of the tile is raised SLOPE_N = 0x08, ///< the north corner of the tile is raised SLOPE_STEEP = 0x10, ///< indicates the slope is steep SLOPE_NW = SLOPE_N | SLOPE_W, ///< north and west corner are raised SLOPE_SW = SLOPE_S | SLOPE_W, ///< south and west corner are raised SLOPE_SE = SLOPE_S | SLOPE_E, ///< south and east corner are raised SLOPE_NE = SLOPE_N | SLOPE_E, ///< north and east corner are raised SLOPE_EW = SLOPE_E | SLOPE_W, ///< east and west corner are raised SLOPE_NS = SLOPE_N | SLOPE_S, ///< north and south corner are raised SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, ///< bit mask containing all 'simple' slopes SLOPE_NWS = SLOPE_N | SLOPE_W | SLOPE_S, ///< north, west and south corner are raised SLOPE_WSE = SLOPE_W | SLOPE_S | SLOPE_E, ///< west, south and east corner are raised SLOPE_SEN = SLOPE_S | SLOPE_E | SLOPE_N, ///< south, east and north corner are raised SLOPE_ENW = SLOPE_E | SLOPE_N | SLOPE_W, ///< east, north and west corner are raised SLOPE_STEEP_W = SLOPE_STEEP | SLOPE_NWS, ///< a steep slope falling to east (from west) SLOPE_STEEP_S = SLOPE_STEEP | SLOPE_WSE, ///< a steep slope falling to north (from south) SLOPE_STEEP_E = SLOPE_STEEP | SLOPE_SEN, ///< a steep slope falling to west (from east) SLOPE_STEEP_N = SLOPE_STEEP | SLOPE_ENW, ///< a steep slope falling to south (from north) SLOPE_HALFTILE = 0x20, ///< one halftile is leveled (non continuous slope) SLOPE_HALFTILE_MASK = 0xE0, ///< three bits used for halftile slopes SLOPE_HALFTILE_W = SLOPE_HALFTILE | (CORNER_W << 6), ///< the west halftile is leveled (non continuous slope) SLOPE_HALFTILE_S = SLOPE_HALFTILE | (CORNER_S << 6), ///< the south halftile is leveled (non continuous slope) SLOPE_HALFTILE_E = SLOPE_HALFTILE | (CORNER_E << 6), ///< the east halftile is leveled (non continuous slope) SLOPE_HALFTILE_N = SLOPE_HALFTILE | (CORNER_N << 6), ///< the north halftile is leveled (non continuous slope) }; DECLARE_ENUM_AS_BIT_SET(Slope) /** * Helper for creating a bitset of slopes. * @param x The slope to convert into a bitset. */ #define M(x) (1 << (x)) /** Constant bitset with safe slopes for building a level crossing. */ static const uint32 VALID_LEVEL_CROSSING_SLOPES = M(SLOPE_SEN) | M(SLOPE_ENW) | M(SLOPE_NWS) | M(SLOPE_NS) | M(SLOPE_WSE) | M(SLOPE_EW) | M(SLOPE_FLAT); #undef M /** * Enumeration for Foundations. */ enum Foundation { FOUNDATION_NONE, ///< The tile has no foundation, the slope remains unchanged. FOUNDATION_LEVELED, ///< The tile is leveled up to a flat slope. FOUNDATION_INCLINED_X, ///< The tile has an along X-axis inclined foundation. FOUNDATION_INCLINED_Y, ///< The tile has an along Y-axis inclined foundation. FOUNDATION_STEEP_LOWER, ///< The tile has a steep slope. The lowest corner is raised by a foundation to allow building railroad on the lower halftile. /* Halftile foundations */ FOUNDATION_STEEP_BOTH, ///< The tile has a steep slope. The lowest corner is raised by a foundation and the upper halftile is leveled. FOUNDATION_HALFTILE_W, ///< Level west halftile non-continuously. FOUNDATION_HALFTILE_S, ///< Level south halftile non-continuously. FOUNDATION_HALFTILE_E, ///< Level east halftile non-continuously. FOUNDATION_HALFTILE_N, ///< Level north halftile non-continuously. /* Special anti-zig-zag foundations for single horizontal/vertical track */ FOUNDATION_RAIL_W, ///< Foundation for TRACK_BIT_LEFT, but not a leveled foundation. FOUNDATION_RAIL_S, ///< Foundation for TRACK_BIT_LOWER, but not a leveled foundation. FOUNDATION_RAIL_E, ///< Foundation for TRACK_BIT_RIGHT, but not a leveled foundation. FOUNDATION_RAIL_N, ///< Foundation for TRACK_BIT_UPPER, but not a leveled foundation. FOUNDATION_INVALID = 0xFF, ///< Used inside "rail_cmd.cpp" to indicate invalid slope/track combination. }; #endif /* SLOPE_TYPE_H */ openttd-1.3.3/src/news_func.h0000644000000000000000000000520312246102610014612 0ustar rootroot/* $Id: news_func.h 24845 2012-12-23 21:08:42Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file news_func.h Functions related to news. */ #ifndef NEWS_FUNC_H #define NEWS_FUNC_H #include "news_type.h" #include "vehicle_type.h" #include "station_type.h" #include "industry_type.h" void AddNewsItem(StringID string, NewsType type, NewsFlag flags, NewsReferenceType reftype1 = NR_NONE, uint32 ref1 = UINT32_MAX, NewsReferenceType reftype2 = NR_NONE, uint32 ref2 = UINT32_MAX, void *free_data = NULL); static inline void AddCompanyNewsItem(StringID string, CompanyNewsInformation *cni) { AddNewsItem(string, NT_COMPANY_INFO, NF_COMPANY, NR_NONE, UINT32_MAX, NR_NONE, UINT32_MAX, cni); } /** * Adds a newsitem referencing a vehicle. * * @warning The DParams may not reference the vehicle due to autoreplace stuff. See AddVehicleAdviceNewsItem for how that can be done. */ static inline void AddVehicleNewsItem(StringID string, NewsType type, VehicleID vehicle, StationID station = INVALID_STATION) { AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_VEHICLE, vehicle, station == INVALID_STATION ? NR_NONE : NR_STATION, station); } /** * Adds a vehicle-advice news item. * * @warning DParam 0 must reference the vehicle! */ static inline void AddVehicleAdviceNewsItem(StringID string, VehicleID vehicle) { AddNewsItem(string, NT_ADVICE, NF_INCOLOUR | NF_SMALL | NF_VEHICLE_PARAM0, NR_VEHICLE, vehicle); } static inline void AddTileNewsItem(StringID string, NewsType type, TileIndex tile, void *free_data = NULL) { AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_TILE, tile, NR_NONE, UINT32_MAX, free_data); } static inline void AddIndustryNewsItem(StringID string, NewsType type, IndustryID industry) { AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_INDUSTRY, industry); } void NewsLoop(); void InitNewsItemStructs(); extern const NewsItem *_statusbar_news_item; void DeleteInvalidEngineNews(); void DeleteVehicleNews(VehicleID vid, StringID news); void DeleteStationNews(StationID sid); void DeleteIndustryNews(IndustryID iid); #endif /* NEWS_FUNC_H */ openttd-1.3.3/src/stringfilter_type.h0000644000000000000000000000602012246102611016377 0ustar rootroot/* $Id: stringfilter_type.h 24632 2012-10-27 15:26:17Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file stringfilter_type.h Searching and filtering using a stringterm. */ #ifndef STRINGFILTER_TYPE_H #define STRINGFILTER_TYPE_H #include "core/smallvec_type.hpp" #include "strings_type.h" /** * String filter and state. * * The filter takes a stringterm and parses it into words separated by whitespace. * The whitespace-separation can be avoided by quoting words in the searchterm using " or '. * The quotation characters can be nested or concatenated in a unix-shell style. * * When filtering an item, all words are checked for matches, and the filter matches if every word * matched. So, effectively this is a AND search for all entered words. * * Once the filter is set up using SetFilterTerm, multiple items can be filtered consecutively. * 1. For every item first call ResetState() which resets the matching-state. * 2. Pass all lines of the item via AddLine() to the filter. * 3. Check the matching-result for the item via GetState(). */ struct StringFilter { private: /** State of a single filter word */ struct WordState { const char *start; ///< Word to filter for. bool match; ///< Already matched? }; const char *filter_buffer; ///< Parsed filter string. Words separated by 0. SmallVector word_index; ///< Word index and filter state. uint word_matches; ///< Summary of filter state: Number of words matched. const bool *case_sensitive; ///< Match case-sensitively (usually a static variable). public: /** * Constructor for filter. * @param case_sensitive Pointer to a (usually static) variable controlling the case-sensitivity. NULL means always case-insensitive. */ StringFilter(const bool *case_sensitive = NULL) : filter_buffer(NULL), word_matches(0), case_sensitive(case_sensitive) {} ~StringFilter() { free(this->filter_buffer); } void SetFilterTerm(const char *str); /** * Check whether any filter words were entered. * @return true if no words were entered. */ bool IsEmpty() const { return this->word_index.Length() == 0; } void ResetState(); void AddLine(const char *str); void AddLine(StringID str); /** * Get the matching state of the current item. * @return true if matched. */ bool GetState() const { return this->word_matches == this->word_index.Length(); } }; #endif /* STRINGFILTER_TYPE_H */ openttd-1.3.3/src/cheat_type.h0000644000000000000000000000345012246102610014752 0ustar rootroot/* $Id: cheat_type.h 23733 2012-01-03 19:21:32Z rubidium $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file cheat_type.h Types related to cheating. */ #ifndef CHEAT_TYPE_H #define CHEAT_TYPE_H /** * Info about each of the cheats. */ struct Cheat { bool been_used; ///< has this cheat been used before? bool value; ///< tells if the bool cheat is active or not }; /** * WARNING! Do _not_ remove entries in Cheats struct or change the order * of the existing ones! Would break downward compatibility. * Only add new entries at the end of the struct! */ struct Cheats { Cheat magic_bulldozer; ///< dynamite industries, objects Cheat switch_company; ///< change to another company Cheat money; ///< get rich or poor Cheat crossing_tunnels; ///< allow tunnels that cross each other Cheat dummy1; ///< empty cheat (build while in pause mode) Cheat no_jetcrash; ///< no jet will crash on small airports anymore Cheat dummy2; ///< empty cheat (change the climate of the map) Cheat change_date; ///< changes date ingame Cheat setup_prod; ///< setup raw-material production in game Cheat dummy3; ///< empty cheat (enable running el-engines on normal rail) }; extern Cheats _cheats; #endif /* CHEAT_TYPE_H */ openttd-1.3.3/src/fileio_type.h0000644000000000000000000000477112246102611015145 0ustar rootroot/* $Id: fileio_type.h 24804 2012-12-09 16:52:43Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fileio_type.h Types for Standard In/Out file operations */ #ifndef FILEIO_TYPE_H #define FILEIO_TYPE_H #include "core/enum_type.hpp" /** * The different kinds of subdirectories OpenTTD uses */ enum Subdirectory { BASE_DIR, ///< Base directory for all subdirectories SAVE_DIR, ///< Base directory for all savegames AUTOSAVE_DIR, ///< Subdirectory of save for autosaves SCENARIO_DIR, ///< Base directory for all scenarios HEIGHTMAP_DIR, ///< Subdirectory of scenario for heightmaps OLD_GM_DIR, ///< Old subdirectory for the music OLD_DATA_DIR, ///< Old subdirectory for the data. BASESET_DIR, ///< Subdirectory for all base data (base sets, intro game) NEWGRF_DIR, ///< Subdirectory for all NewGRFs LANG_DIR, ///< Subdirectory for all translation files AI_DIR, ///< Subdirectory for all %AI files AI_LIBRARY_DIR,///< Subdirectory for all %AI libraries GAME_DIR, ///< Subdirectory for all game scripts GAME_LIBRARY_DIR, ///< Subdirectory for all GS libraries SCREENSHOT_DIR, ///< Subdirectory for all screenshots NUM_SUBDIRS, ///< Number of subdirectories NO_DIRECTORY, ///< A path without any base directory }; /** * Types of searchpaths OpenTTD might use */ enum Searchpath { SP_FIRST_DIR, SP_WORKING_DIR = SP_FIRST_DIR, ///< Search in the working directory SP_PERSONAL_DIR, ///< Search in the personal directory SP_SHARED_DIR, ///< Search in the shared directory, like 'Shared Files' under Windows SP_BINARY_DIR, ///< Search in the directory where the binary resides SP_INSTALLATION_DIR, ///< Search in the installation directory SP_APPLICATION_BUNDLE_DIR, ///< Search within the application bundle SP_AUTODOWNLOAD_DIR, ///< Search within the autodownload directory NUM_SEARCHPATHS }; DECLARE_POSTFIX_INCREMENT(Searchpath) #endif /* FILEIO_TYPE_H */ openttd-1.3.3/src/fileio_func.h0000644000000000000000000001313212246102611015106 0ustar rootroot/* $Id: fileio_func.h 24804 2012-12-09 16:52:43Z frosch $ */ /* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file fileio_func.h Functions for Standard In/Out file operations */ #ifndef FILEIO_FUNC_H #define FILEIO_FUNC_H #include "core/enum_type.hpp" #include "fileio_type.h" void FioSeekTo(size_t pos, int mode); void FioSeekToFile(uint8 slot, size_t pos); size_t FioGetPos(); const char *FioGetFilename(uint8 slot); byte FioReadByte(); uint16 FioReadWord(); uint32 FioReadDword(); void FioCloseAll(); void FioOpenFile(int slot, const char *filename, Subdirectory subdir); void FioReadBlock(void *ptr, size_t size); void FioSkipBytes(int n); /** * The search paths OpenTTD could search through. * At least one of the slots has to be filled with a path. * NULL paths tell that there is no such path for the * current operating system. */ extern const char *_searchpaths[NUM_SEARCHPATHS]; /** * Checks whether the given search path is a valid search path * @param sp the search path to check * @return true if the search path is valid */ static inline bool IsValidSearchPath(Searchpath sp) { return sp < NUM_SEARCHPATHS && _searchpaths[sp] != NULL; } /** Iterator for all the search paths */ #define FOR_ALL_SEARCHPATHS(sp) for (sp = SP_FIRST_DIR; sp < NUM_SEARCHPATHS; sp++) if (IsValidSearchPath(sp)) void FioFCloseFile(FILE *f); FILE *FioFOpenFile(const char *filename, const char *mode, Subdirectory subdir, size_t *filesize = NULL); bool FioCheckFileExists(const char *filename, Subdirectory subdir); char *FioGetFullPath(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir, const char *filename); char *FioFindFullPath(char *buf, size_t buflen, Subdirectory subdir, const char *filename); char *FioAppendDirectory(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir); char *FioGetDirectory(char *buf, size_t buflen, Subdirectory subdir); const char *FiosGetScreenshotDir(); void SanitizeFilename(char *filename); bool AppendPathSeparator(char *buf, size_t buflen); void DeterminePaths(const char *exe); void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize); bool FileExists(const char *filename); const char *FioTarFirstDir(const char *tarname, Subdirectory subdir); void FioTarAddLink(const char *src, const char *dest, Subdirectory subdir); bool ExtractTar(const char *tar_filename, Subdirectory subdir); extern char *_personal_dir; ///< custom directory for personal settings, saves, newgrf, etc. /** Helper for scanning for files with a given name */ class FileScanner { protected: Subdirectory subdir; ///< The current sub directory we are searching through public: /** Destruct the proper one... */ virtual ~FileScanner() {} uint Scan(const char *extension, Subdirectory sd, bool tars = true, bool recursive = true); uint Scan(const char *extension, const char *directory, bool recursive = true); /** * Add a file with the given filename. * @param filename the full path to the file to read * @param basepath_length amount of characters to chop of before to get a * filename relative to the search path. * @param tar_filename the name of the tar file the file is read from. * @return true if the file is added. */ virtual bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) = 0; }; /** Helper for scanning for files with tar as extension */ class TarScanner : FileScanner { uint DoScan(Subdirectory sd); public: /** The mode of tar scanning. */ enum Mode { NONE = 0, ///< Scan nothing. BASESET = 1 << 0, ///< Scan for base sets. NEWGRF = 1 << 1, ///< Scan for non-base sets. AI = 1 << 2, ///< Scan for AIs and its libraries. SCENARIO = 1 << 3, ///< Scan for scenarios and heightmaps. GAME = 1 << 4, ///< Scan for game scripts. ALL = BASESET | NEWGRF | AI | SCENARIO | GAME, ///< Scan for everything. }; /* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename = NULL); bool AddFile(Subdirectory sd, const char *filename); /** Do the scan for Tars. */ static uint DoScan(TarScanner::Mode mode); }; DECLARE_ENUM_AS_BIT_SET(TarScanner::Mode) /* Implementation of opendir/readdir/closedir for Windows */ #if defined(WIN32) struct DIR; struct dirent { // XXX - only d_name implemented TCHAR *d_name; // name of found file /* little hack which will point to parent DIR struct which will * save us a call to GetFileAttributes if we want information * about the file (for example in function fio_bla) */ DIR *dir; }; DIR *opendir(const TCHAR *path); struct dirent *readdir(DIR *d); int closedir(DIR *d); #else /* Use system-supplied opendir/readdir/closedir functions */ # include # include #endif /* defined(WIN32) */ /** * A wrapper around opendir() which will convert the string from * OPENTTD encoding to that of the filesystem. For all purposes this * function behaves the same as the original opendir function * @param path string to open directory of * @return DIR pointer */ static inline DIR *ttd_opendir(const char *path) { return opendir(OTTD2FS(path)); } #endif /* FILEIO_FUNC_H */ openttd-1.3.3/src/lang/0000755000000000000000000000000012246102757013407 5ustar rootrootopenttd-1.3.3/src/lang/ukrainian.txt0000644000000000000000000176263312246102561016144 0ustar rootroot##name Ukrainian ##ownname Українська ##isocode uk_UA ##plural 6 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0422 ##grflangid 0x33 ##gender m f s mn ##case r d z # $Id: ukrainian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(невизначено) STR_JUST_NOTHING :нічого # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :пасажири STR_CARGO_PLURAL_PASSENGERS.r :пасажирів STR_CARGO_PLURAL_PASSENGERS.z :пасажирів STR_CARGO_PLURAL_COAL :вугілля STR_CARGO_PLURAL_COAL.r :вугілля STR_CARGO_PLURAL_COAL.z :вугілля STR_CARGO_PLURAL_MAIL :пошта STR_CARGO_PLURAL_MAIL.r :пошти STR_CARGO_PLURAL_MAIL.z :пошту STR_CARGO_PLURAL_OIL :нафта STR_CARGO_PLURAL_OIL.r :нафти STR_CARGO_PLURAL_OIL.z :нафту STR_CARGO_PLURAL_LIVESTOCK :худоба STR_CARGO_PLURAL_LIVESTOCK.r :худоби STR_CARGO_PLURAL_LIVESTOCK.z :худобу STR_CARGO_PLURAL_GOODS :товари STR_CARGO_PLURAL_GOODS.r :товарів STR_CARGO_PLURAL_GOODS.z :товари STR_CARGO_PLURAL_GRAIN :зерно STR_CARGO_PLURAL_GRAIN.r :зерна STR_CARGO_PLURAL_GRAIN.z :зерно STR_CARGO_PLURAL_WOOD :деревина STR_CARGO_PLURAL_WOOD.r :деревини STR_CARGO_PLURAL_WOOD.z :деревину STR_CARGO_PLURAL_IRON_ORE :залізна руда STR_CARGO_PLURAL_IRON_ORE.r :залізної руди STR_CARGO_PLURAL_IRON_ORE.z :залізну руду STR_CARGO_PLURAL_STEEL :сталь STR_CARGO_PLURAL_STEEL.r :сталі STR_CARGO_PLURAL_STEEL.z :сталь STR_CARGO_PLURAL_VALUABLES :коштовності STR_CARGO_PLURAL_VALUABLES.r :коштовностей STR_CARGO_PLURAL_VALUABLES.z :коштовності STR_CARGO_PLURAL_COPPER_ORE :мідна руда STR_CARGO_PLURAL_COPPER_ORE.r :мідної руди STR_CARGO_PLURAL_COPPER_ORE.z :мідну руду STR_CARGO_PLURAL_MAIZE :кукурудза STR_CARGO_PLURAL_MAIZE.r :кукурудзи STR_CARGO_PLURAL_MAIZE.z :кукурудзу STR_CARGO_PLURAL_FRUIT :фрукти STR_CARGO_PLURAL_FRUIT.r :фруктів STR_CARGO_PLURAL_FRUIT.z :фрукти STR_CARGO_PLURAL_DIAMONDS :діаманти STR_CARGO_PLURAL_DIAMONDS.r :діамантів STR_CARGO_PLURAL_DIAMONDS.z :діаманти STR_CARGO_PLURAL_FOOD :продукти STR_CARGO_PLURAL_FOOD.r :продуктів STR_CARGO_PLURAL_FOOD.z :продукти STR_CARGO_PLURAL_PAPER :папір STR_CARGO_PLURAL_PAPER.r :паперу STR_CARGO_PLURAL_PAPER.z :папір STR_CARGO_PLURAL_GOLD :золото STR_CARGO_PLURAL_GOLD.r :золота STR_CARGO_PLURAL_GOLD.z :золото STR_CARGO_PLURAL_WATER :вода STR_CARGO_PLURAL_WATER.r :води STR_CARGO_PLURAL_WATER.z :воду STR_CARGO_PLURAL_WHEAT :пшениця STR_CARGO_PLURAL_WHEAT.r :пшениці STR_CARGO_PLURAL_WHEAT.z :пшеницю STR_CARGO_PLURAL_RUBBER :каучук STR_CARGO_PLURAL_RUBBER.z :каучук STR_CARGO_PLURAL_SUGAR :цукор STR_CARGO_PLURAL_SUGAR.r :цукру STR_CARGO_PLURAL_SUGAR.z :цукор STR_CARGO_PLURAL_TOYS :іграшки STR_CARGO_PLURAL_TOYS.r :іграшок STR_CARGO_PLURAL_TOYS.z :іграшки STR_CARGO_PLURAL_CANDY :солодощі STR_CARGO_PLURAL_CANDY.r :солодощів STR_CARGO_PLURAL_CANDY.z :солодощі STR_CARGO_PLURAL_COLA :кола STR_CARGO_PLURAL_COLA.r :коли STR_CARGO_PLURAL_COLA.z :колу STR_CARGO_PLURAL_COTTON_CANDY :солодка вата STR_CARGO_PLURAL_COTTON_CANDY.r :солодкої вати STR_CARGO_PLURAL_COTTON_CANDY.z :солодку вату STR_CARGO_PLURAL_BUBBLES :бульбашки STR_CARGO_PLURAL_BUBBLES.r :бульбашок STR_CARGO_PLURAL_BUBBLES.z :бульбашки STR_CARGO_PLURAL_TOFFEE :іриски STR_CARGO_PLURAL_TOFFEE.r :ірисок STR_CARGO_PLURAL_TOFFEE.z :іриски STR_CARGO_PLURAL_BATTERIES :батарейки STR_CARGO_PLURAL_BATTERIES.r :батарейок STR_CARGO_PLURAL_BATTERIES.z :батарейки STR_CARGO_PLURAL_PLASTIC :пластилін STR_CARGO_PLURAL_PLASTIC.r :пластиліну STR_CARGO_PLURAL_PLASTIC.z :пластилін STR_CARGO_PLURAL_FIZZY_DRINKS :газована вода STR_CARGO_PLURAL_FIZZY_DRINKS.r :газованої води STR_CARGO_PLURAL_FIZZY_DRINKS.z :газовану воду # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :пасажири STR_CARGO_SINGULAR_PASSENGER.r :пасажирів STR_CARGO_SINGULAR_PASSENGER.z :пасажирів STR_CARGO_SINGULAR_COAL :вугілля STR_CARGO_SINGULAR_COAL.r :вугілля STR_CARGO_SINGULAR_COAL.z :вугілля STR_CARGO_SINGULAR_MAIL :пошта STR_CARGO_SINGULAR_MAIL.r :пошти STR_CARGO_SINGULAR_MAIL.z :пошту STR_CARGO_SINGULAR_OIL :нафта STR_CARGO_SINGULAR_OIL.r :нафти STR_CARGO_SINGULAR_OIL.z :нафту STR_CARGO_SINGULAR_LIVESTOCK :худоба STR_CARGO_SINGULAR_LIVESTOCK.r :худоби STR_CARGO_SINGULAR_LIVESTOCK.z :худобу STR_CARGO_SINGULAR_GOODS :товари STR_CARGO_SINGULAR_GOODS.r :товарів STR_CARGO_SINGULAR_GOODS.z :товари STR_CARGO_SINGULAR_GRAIN :зерно STR_CARGO_SINGULAR_GRAIN.r :зерна STR_CARGO_SINGULAR_GRAIN.z :зерно STR_CARGO_SINGULAR_WOOD :деревина STR_CARGO_SINGULAR_WOOD.r :деревини STR_CARGO_SINGULAR_WOOD.z :деревину STR_CARGO_SINGULAR_IRON_ORE :залізна руда STR_CARGO_SINGULAR_IRON_ORE.r :залізної руди STR_CARGO_SINGULAR_IRON_ORE.z :залізну руду STR_CARGO_SINGULAR_STEEL :сталь STR_CARGO_SINGULAR_STEEL.r :сталі STR_CARGO_SINGULAR_STEEL.z :сталь STR_CARGO_SINGULAR_VALUABLES :коштовності STR_CARGO_SINGULAR_VALUABLES.r :коштовностей STR_CARGO_SINGULAR_VALUABLES.z :коштовності STR_CARGO_SINGULAR_COPPER_ORE :мідна руда STR_CARGO_SINGULAR_COPPER_ORE.r :мідної руди STR_CARGO_SINGULAR_COPPER_ORE.z :мідну руду STR_CARGO_SINGULAR_MAIZE :кукурудза STR_CARGO_SINGULAR_MAIZE.r :кукурудзи STR_CARGO_SINGULAR_MAIZE.z :кукурудзу STR_CARGO_SINGULAR_FRUIT :фрукти STR_CARGO_SINGULAR_FRUIT.r :фруктів STR_CARGO_SINGULAR_FRUIT.z :фрукти STR_CARGO_SINGULAR_DIAMOND :діаманти STR_CARGO_SINGULAR_DIAMOND.r :діамантів STR_CARGO_SINGULAR_DIAMOND.z :діаманти STR_CARGO_SINGULAR_FOOD :продукти STR_CARGO_SINGULAR_FOOD.r :продуктів STR_CARGO_SINGULAR_FOOD.z :продукти STR_CARGO_SINGULAR_PAPER :папір STR_CARGO_SINGULAR_PAPER.r :паперу STR_CARGO_SINGULAR_PAPER.z :папір STR_CARGO_SINGULAR_GOLD :золото STR_CARGO_SINGULAR_GOLD.r :золота STR_CARGO_SINGULAR_GOLD.z :золото STR_CARGO_SINGULAR_WATER :вода STR_CARGO_SINGULAR_WATER.r :води STR_CARGO_SINGULAR_WATER.z :воду STR_CARGO_SINGULAR_WHEAT :пшениця STR_CARGO_SINGULAR_WHEAT.r :пшениці STR_CARGO_SINGULAR_WHEAT.z :пшеницю STR_CARGO_SINGULAR_RUBBER :каучук STR_CARGO_SINGULAR_RUBBER.r :каучуку STR_CARGO_SINGULAR_RUBBER.z :каучук STR_CARGO_SINGULAR_SUGAR :цукор STR_CARGO_SINGULAR_SUGAR.r :цукру STR_CARGO_SINGULAR_SUGAR.z :цукор STR_CARGO_SINGULAR_TOY :іграшки STR_CARGO_SINGULAR_TOY.r :іграшок STR_CARGO_SINGULAR_TOY.z :іграшки STR_CARGO_SINGULAR_CANDY :цукерки STR_CARGO_SINGULAR_CANDY.r :цукерок STR_CARGO_SINGULAR_CANDY.z :цукерки STR_CARGO_SINGULAR_COLA :кола STR_CARGO_SINGULAR_COLA.r :коли STR_CARGO_SINGULAR_COLA.z :колу STR_CARGO_SINGULAR_COTTON_CANDY :солодка вата STR_CARGO_SINGULAR_COTTON_CANDY.r :солодкої вати STR_CARGO_SINGULAR_COTTON_CANDY.z :солодку вату STR_CARGO_SINGULAR_BUBBLE :бульбашки STR_CARGO_SINGULAR_BUBBLE.r :бульбашок STR_CARGO_SINGULAR_BUBBLE.z :бульбашки STR_CARGO_SINGULAR_TOFFEE :іриски STR_CARGO_SINGULAR_TOFFEE.r :ірисок STR_CARGO_SINGULAR_TOFFEE.z :іриски STR_CARGO_SINGULAR_BATTERY :батарейки STR_CARGO_SINGULAR_BATTERY.r :батарейок STR_CARGO_SINGULAR_BATTERY.z :батарейки STR_CARGO_SINGULAR_PLASTIC :пластилін STR_CARGO_SINGULAR_PLASTIC.r :пластиліну STR_CARGO_SINGULAR_PLASTIC.z :пластилін STR_CARGO_SINGULAR_FIZZY_DRINK :газована вода STR_CARGO_SINGULAR_FIZZY_DRINK.r :газованої води STR_CARGO_SINGULAR_FIZZY_DRINK.z :газовану воду # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} пасажир{P "" и iв} STR_QUANTITY_COAL :{WEIGHT_LONG} вугілля STR_QUANTITY_MAIL :{COMMA} сум{P ка ки ок} пошти STR_QUANTITY_OIL :{VOLUME_LONG} нафти STR_QUANTITY_LIVESTOCK :{COMMA} гол{P ова ови ів} худоби STR_QUANTITY_GOODS :{COMMA} ящи{P к ки ків} товарів STR_QUANTITY_GRAIN :{WEIGHT_LONG} зерна STR_QUANTITY_WOOD :{WEIGHT_LONG} деревини STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} залізної руди STR_QUANTITY_STEEL :{WEIGHT_LONG} сталі STR_QUANTITY_VALUABLES :{COMMA} сум{P ка ки ок} коштовностей STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} мідної руди STR_QUANTITY_MAIZE :{WEIGHT_LONG} кукурудзи STR_QUANTITY_FRUIT :{WEIGHT_LONG} фруктів STR_QUANTITY_DIAMONDS :{COMMA} сум{P ка ки ок} діамантів STR_QUANTITY_FOOD :{WEIGHT_LONG} продуктів STR_QUANTITY_PAPER :{WEIGHT_LONG} паперу STR_QUANTITY_GOLD :{COMMA} міш{P ок ки ків} золота STR_QUANTITY_WATER :{VOLUME_LONG} води STR_QUANTITY_WHEAT :{WEIGHT_LONG} пшениці STR_QUANTITY_RUBBER :{VOLUME_LONG} каучуку STR_QUANTITY_SUGAR :{WEIGHT_LONG} цукру STR_QUANTITY_TOYS :{COMMA} іграш{P ка ки ок} STR_QUANTITY_SWEETS :{COMMA} пакун{P ок ки ків} цукерок STR_QUANTITY_COLA :{VOLUME_LONG} Коли STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} солодкої вати STR_QUANTITY_BUBBLES :{COMMA} бульбаш{P ка ки ок} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} ірисок STR_QUANTITY_BATTERIES :{COMMA} батарей{P ка ки ок} STR_QUANTITY_PLASTIC :{VOLUME_LONG} пластику STR_QUANTITY_FIZZY_DRINKS :{COMMA} пляш{P ка ки ок} газованої води STR_QUANTITY_N_A :немає # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}ПС STR_ABBREV_COAL :{TINY_FONT}ВГ STR_ABBREV_MAIL :{TINY_FONT}ПШ STR_ABBREV_OIL :{TINY_FONT}НФ STR_ABBREV_LIVESTOCK :{TINY_FONT}ХД STR_ABBREV_GOODS :{TINY_FONT}ТВ STR_ABBREV_GRAIN :{TINY_FONT}ЗЕ STR_ABBREV_WOOD :{TINY_FONT}ДР STR_ABBREV_IRON_ORE :{TINY_FONT}ЗЛ STR_ABBREV_STEEL :{TINY_FONT}СТ STR_ABBREV_VALUABLES :{TINY_FONT}КШ STR_ABBREV_COPPER_ORE :{TINY_FONT}МД STR_ABBREV_MAIZE :{TINY_FONT}КУ STR_ABBREV_FRUIT :{TINY_FONT}ФР STR_ABBREV_DIAMONDS :{TINY_FONT}ДІ STR_ABBREV_FOOD :{TINY_FONT}ПР STR_ABBREV_PAPER :{TINY_FONT}ПА STR_ABBREV_GOLD :{TINY_FONT}ЗО STR_ABBREV_WATER :{TINY_FONT}ВО STR_ABBREV_WHEAT :{TINY_FONT}ПШ STR_ABBREV_RUBBER :{TINY_FONT}КА STR_ABBREV_SUGAR :{TINY_FONT}ЦК STR_ABBREV_TOYS :{TINY_FONT}ІГ STR_ABBREV_SWEETS :{TINY_FONT}СЛ STR_ABBREV_COLA :{TINY_FONT}КО STR_ABBREV_CANDYFLOSS :{TINY_FONT}ВА STR_ABBREV_BUBBLES :{TINY_FONT}БУ STR_ABBREV_TOFFEE :{TINY_FONT}ІР STR_ABBREV_BATTERIES :{TINY_FONT}БТ STR_ABBREV_PLASTIC :{TINY_FONT}ПЛ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ГЗ STR_ABBREV_NONE :{TINY_FONT}НІ STR_ABBREV_ALL :{TINY_FONT}Все # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} пасажир{P "" и ів} STR_BAGS :{COMMA} міш{P ок ка ків} STR_TONS :{COMMA} тон{P а и ""} STR_LITERS :{COMMA} літр{P "" а ів} STR_ITEMS :{COMMA} штук{P а и ""} STR_CRATES :{COMMA} ящик{P "" а ів} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Темно-синій STR_COLOUR_PALE_GREEN :Світло-зелений STR_COLOUR_PINK :Рожевий STR_COLOUR_YELLOW :Жовтий STR_COLOUR_RED :Червоний STR_COLOUR_LIGHT_BLUE :Блакитний STR_COLOUR_GREEN :Зелений STR_COLOUR_DARK_GREEN :Темно-зелений STR_COLOUR_BLUE :Синій STR_COLOUR_CREAM :Кремовий STR_COLOUR_MAUVE :Бузковий STR_COLOUR_PURPLE :Фіолетовий STR_COLOUR_ORANGE :Помаранчевий STR_COLOUR_BROWN :Коричневий STR_COLOUR_GREY :Сірий STR_COLOUR_WHITE :Білий # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} миль/год STR_UNITS_VELOCITY_METRIC :{COMMA} км/год STR_UNITS_VELOCITY_SI :{COMMA} м/с STR_UNITS_POWER_IMPERIAL :{COMMA}к.с. STR_UNITS_POWER_METRIC :{COMMA}к.с. STR_UNITS_POWER_SI :{COMMA}кВт STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}т STR_UNITS_WEIGHT_SHORT_SI :{COMMA}кг STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P а и ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}л STR_UNITS_VOLUME_SHORT_SI :{COMMA}м³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} літр{P "" а ів} STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ STR_UNITS_FORCE_SI :{COMMA} кН STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фт STR_UNITS_HEIGHT_SI :{COMMA} м # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фільтр: STR_LIST_FILTER_OSKTITLE :{BLACK}Введіть рядок фільтру STR_LIST_FILTER_TOOLTIP :{BLACK}Введіть ключове слово для фільтраціі списку STR_TOOLTIP_SORT_ORDER :{BLACK}Оберіть напрямок сортування (спадаючий/зростаючий) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Оберіть критерій сортування STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Оберіть критерій фільтру STR_BUTTON_SORT_BY :{BLACK}Сортувати STR_BUTTON_LOCATION :{BLACK}Показати STR_BUTTON_RENAME :{BLACK}Назва STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закрити вікно STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Заголовок вікна - потягніть для переміщення вікна STR_TOOLTIP_SHADE :{BLACK}Згорнути вікно - показувати тільки заголовок STR_TOOLTIP_DEBUG :{BLACK}Показати інформацію для відлагодження NewGRF STR_TOOLTIP_STICKY :{BLACK}Закріпити вікно - воно не буде закриватися командою "Закрити всі вікна" STR_TOOLTIP_RESIZE :{BLACK}Натисніть і тягніть для зміни розміру вікна STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Розмір вікна великий/малий STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Смуга прокрутки - прокручує список вверх/вниз STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Смуга прокрутки - прокручує список вліво/вправо STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Зруйнувати будинки, дороги і т.п. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу витрат на руйнування # Query window STR_BUTTON_DEFAULT :{BLACK}Стандартно STR_BUTTON_CANCEL :{BLACK}Відміна STR_BUTTON_OK :{BLACK}Так # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\йцукенгшщзхїфівапролджє ячсмитьбю. . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|ЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄ ЯЧСМИТЬБЮ, . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Довжина: {NUM} STR_MEASURE_AREA :{BLACK}Площа: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Довжина: {NUM}{}Різниця висот: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Площа: {NUM} x {NUM}{}Різниця висот: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}за населенням STR_SORT_BY_CAPTION_NAME :{BLACK}за назвою STR_SORT_BY_CAPTION_DATE :{BLACK}за датою # These are used in dropdowns STR_SORT_BY_NAME :за назвою STR_SORT_BY_PRODUCTION :за продуктивністю STR_SORT_BY_TYPE :за типом STR_SORT_BY_TRANSPORTED :за обсягом перевезень STR_SORT_BY_NUMBER :за номером STR_SORT_BY_PROFIT_LAST_YEAR :за прибутком минулого року STR_SORT_BY_PROFIT_THIS_YEAR :за прибутком цього року STR_SORT_BY_AGE :за віком STR_SORT_BY_RELIABILITY :за надійністю STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :за місткістю STR_SORT_BY_MAX_SPEED :за швидкістю STR_SORT_BY_MODEL :за моделлю STR_SORT_BY_VALUE :за ціною STR_SORT_BY_LENGTH :за довжиною STR_SORT_BY_LIFE_TIME :за залишком строку служби STR_SORT_BY_TIMETABLE_DELAY :за відхиленням від розкладу STR_SORT_BY_FACILITY :за типом станції STR_SORT_BY_WAITING :за кількістю вантажу STR_SORT_BY_RATING_MAX :за найвищим рейтингом STR_SORT_BY_RATING_MIN :за найнижчим рейтингом STR_SORT_BY_ENGINE_ID :за ID (класичний порядок) STR_SORT_BY_COST :за ціною STR_SORT_BY_POWER :за потужністю STR_SORT_BY_TRACTIVE_EFFORT :за силою тяги STR_SORT_BY_INTRO_DATE :за датою випуску STR_SORT_BY_RUNNING_COST :за вартістю експлуатації STR_SORT_BY_POWER_VS_RUNNING_COST :за потужністю/вартістю експ. STR_SORT_BY_CARGO_CAPACITY :за місткістю STR_SORT_BY_RANGE :за дальністю # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Пауза STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Прискорити гру STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Опції STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Зберегти гру, покинути гру, вихід STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Показати карту STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Показати міста STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Показати субсидії STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Показати список станцій компанії STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Фінансова інформація STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Головна інформація STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Показати графіки STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Показати таблицю компаній STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Фінансувати будівництво нової промисловості STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Показати список поїздів компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Показати список дорожнього транспорту компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Показати список кораблів компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Показати список повітряного транспорту компанії. Ctrl+клік переключає відкриття звичайного/розширенного списку. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Збільшити STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Зменшити STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будувати залізницю STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Будувати дороги STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Будувати порти STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Будувати аеропорти STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Змінити ландшафт STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Налаштувати звук/музику STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Показати останнє повідомлення. Налаштування повідомлень STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Інформація про земельну ділянку, консоль, налагодження скриптів, знімки екрану, про OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Переключити панелі # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Зберегти сценарій, завантажити сценарій, вийти з редактору сценаріїв, вихід STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Редактор сценаріїв STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Перенести початкову дату на 1 рік назад STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Перенести початкову дату на 1 рік вперед STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Натисніть, щоб ввести рік початку STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Показати карту, показати міста STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Створення ландшафту STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Створення міст STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Створення виробництва STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Будівництво доріг STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Насадження дерев. Утримуйте Shift для показу витрат на висаджування STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Встановити позначку STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Встановити об'єкт. Утримуйте Shift для показу витрат на розміщення ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Зберегти сценарій STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Завантажити сценарій STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Зберегти карту висот STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Завантажити карту висот STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Вийти з редактору сценаріїв STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Вихід ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Налаштування гри STR_SETTINGS_MENU_CONFIG_SETTINGS :Розширені налаштування STR_SETTINGS_MENU_SCRIPT_SETTINGS :Налаштування AI / Ігрового скрипта STR_SETTINGS_MENU_NEWGRF_SETTINGS :Налаштування NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Налаштування прозорості STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Показувати назви міст STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Показувати назви станцій STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Показувати назви точок маршруту STR_SETTINGS_MENU_SIGNS_DISPLAYED :Показувати позначки STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Показувати назви та імена конкурентів STR_SETTINGS_MENU_FULL_ANIMATION :Повна анімація STR_SETTINGS_MENU_FULL_DETAIL :Повна деталізація STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Прозорі будівлі STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Прозорі назви станцій ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Зберегти гру STR_FILE_MENU_LOAD_GAME :Завантажити гру STR_FILE_MENU_QUIT_GAME :Залишити гру STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Вихід ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Карта світу STR_MAP_MENU_EXTRA_VIEW_PORT :Додаткове вікно STR_MAP_MENU_SIGN_LIST :Список позначок ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Список міст STR_TOWN_MENU_FOUND_TOWN :Заснувати місто ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Субсидії STR_SUBSIDIES_MENU_GOAL :Поточні цілі ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Операційний прибуток STR_GRAPH_MENU_INCOME_GRAPH :Графік доходів STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Доставка вантажів STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Графік продуктивності STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Вартість компанії STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Вартість перевезень ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Рейтингова таблиця STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Детальний рейтинг продуктивності STR_GRAPH_MENU_HIGHSCORE :Таблиця рекордів ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Список підприємств STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Виробничі ланцюжки STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Заснувати підприємство ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Будівництво залізниці STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Будівництво електрифікованої залізниці STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Будівництво монорейкової залізниці STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Будівництво магнітної залізниці ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Будівництво автомобільних доріг STR_ROAD_MENU_TRAM_CONSTRUCTION :Будівництво трамвайних доріг ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Будівництво водних шляхів ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Будівництво аеропортів ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Ландшафт STR_LANDSCAPING_MENU_PLANT_TREES :Посадка дерев STR_LANDSCAPING_MENU_PLACE_SIGN :Встановлення позначок ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Звук/Музика ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Останнє повідомлення STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Історія повідомлень ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Інформація про ділянку STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Вкл./відкл. консоль STR_ABOUT_MENU_AI_DEBUG :Налагодження АІ / Ігрового Скрипта STR_ABOUT_MENU_SCREENSHOT :Знімок екрану STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Знімок екрану з максимальним збільшенням STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Знімок екрану зі стандартним збільшенням STR_ABOUT_MENU_GIANT_SCREENSHOT :Знімок всієї карти STR_ABOUT_MENU_ABOUT_OPENTTD :Про гру 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Вирівнювання спрайтів STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Вкл./відкл. обмежуючі рамки STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Вкл./відкл. підсвічування застарілих блоків ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 STR_ORDINAL_NUMBER_4TH :4 STR_ORDINAL_NUMBER_5TH :5 STR_ORDINAL_NUMBER_6TH :6 STR_ORDINAL_NUMBER_7TH :7 STR_ORDINAL_NUMBER_8TH :8 STR_ORDINAL_NUMBER_9TH :9 STR_ORDINAL_NUMBER_10TH :10 STR_ORDINAL_NUMBER_11TH :11 STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 STR_ORDINAL_NUMBER_16TH :16 STR_ORDINAL_NUMBER_17TH :17 STR_ORDINAL_NUMBER_18TH :18 STR_ORDINAL_NUMBER_19TH :19 STR_ORDINAL_NUMBER_20TH :20 STR_ORDINAL_NUMBER_21ST :21 STR_ORDINAL_NUMBER_22ND :22 STR_ORDINAL_NUMBER_23RD :23 STR_ORDINAL_NUMBER_24TH :24 STR_ORDINAL_NUMBER_25TH :25 STR_ORDINAL_NUMBER_26TH :26 STR_ORDINAL_NUMBER_27TH :27 STR_ORDINAL_NUMBER_28TH :28 STR_ORDINAL_NUMBER_29TH :29 STR_ORDINAL_NUMBER_30TH :30 STR_ORDINAL_NUMBER_31ST :31 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Січ STR_MONTH_ABBREV_FEB :Лют STR_MONTH_ABBREV_MAR :Бер STR_MONTH_ABBREV_APR :Кві STR_MONTH_ABBREV_MAY :Тра STR_MONTH_ABBREV_JUN :Чер STR_MONTH_ABBREV_JUL :Лип STR_MONTH_ABBREV_AUG :Сер STR_MONTH_ABBREV_SEP :Вер STR_MONTH_ABBREV_OCT :Жов STR_MONTH_ABBREV_NOV :Лис STR_MONTH_ABBREV_DEC :Гру STR_MONTH_JAN :cічень STR_MONTH_JAN.r :січня STR_MONTH_JAN.d :січневі STR_MONTH_JAN.z :січень STR_MONTH_FEB :Лютий STR_MONTH_MAR :Березень STR_MONTH_APR :Квітень STR_MONTH_MAY :Травень STR_MONTH_JUN :Червень STR_MONTH_JUL :Липень STR_MONTH_AUG :Серпень STR_MONTH_SEP :Вересень STR_MONTH_OCT :Жовтень STR_MONTH_NOV :Листопад STR_MONTH_DEC :Грудень ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Легенда STR_GRAPH_KEY_TOOLTIP :{BLACK}Показати легенду графіка STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Графік операційного прибутку STR_GRAPH_INCOME_CAPTION :{WHITE}Графік доходів STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Кількість перевезеного вантажу STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Рейтинг продуктивності компанії (найбільший рейтинг=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Вартість компанії STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Тарифи на доставку вантажів STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Днів у дорозі STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Плата за доставку 10 одиниць (або 10,000 літрів) вантажу на відстань 20 квадратів STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Включити всі STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Відключити усі STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Показувати всі види вантажів на графіку STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Не показувати ніякі типи вантажів на графіку STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Вкл/відкл графік типів вантажу STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Показати детальні оцінки ефективності # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Легенда графіків STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Натисніть тут для вкл./відкл. графіку окремої компанії # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Рейтингова таблиця STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Інженер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Регулювальник STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Диспетчер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Координатор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Директор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Генеральний директор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Голова правління STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Президент компанії STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Магнат # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Деталі рейтинга продуктивності STR_PERFORMANCE_DETAIL_KEY :{BLACK}Детально STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Проглянути деталі рейтинга цієї компанії ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Транспорт: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Станції: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Мін. дохід: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Мін. прибуток: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Макс. прибуток: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Доставлено: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Вантаж: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Кошти: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Кредит: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Підсумок: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Кількість транспорту, який приніс прибуток торік. Враховуються автомобілі, поїзди, кораблі та літаки STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Кількість нещодавно обслуговуваних частин станцій. Кожна частина станції (залізнична станція, автобусна зупинка, аеропорт) враховується окремо, навіть якщо вони об'єднані в одну станцію STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Прибуток транспорту з найменшим доходом (тільки транспорт старіший 2 років) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Найменший квартальний прибуток за останні 12 кварталів STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Найбільший квартальний прибуток за останні 12 кварталів STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Кількість одиниць вантажу, доставлених за останні 4 квартали STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Кількість видів вантажу, доставлених за останній квартал STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Сума коштів на рахунку компанії STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Розмір поточного боргу компанії STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Загальна кількість балів # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Музичний програвач STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Всі STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Старі теми STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Нові теми STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Дорожні теми STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Набір 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Набір 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Гучність музики STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Гучність ефектів STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}Мін. STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}Макс. STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Доріжка STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Заголовок STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Випадково STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Програма STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Попередня STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Наступна STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Зупинити STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Почати STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Потягніть повзунок для зміни рівня гучності STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Вибрати програму 'всі' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Вибрати 'старі теми' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Вибрати 'нові теми' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Вибрати програму 'Дорожні теми' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Вибрати програму 'Набір 1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Вибрати програму 'Набір 2' STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл./відкл. випадкову програму STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показує вікно вибору музичної програми STR_ERROR_NO_SONGS :{WHITE}Був обраний музичний набір без пісень. Пісні не будуть програватись # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Вибір музичної програми STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Назва доріжки STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Програма - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Очистити STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистити програму (тільки для Набору 1 або Набору 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Виберіть доріжку, щоб додати до програми (тільки для Набору 1 або Набору 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Клікніть на мелодії для її видалення зі списку (лише Набір1 та Набір2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Кращі компанії, які досягли {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Таблиця компаній з {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Бізнесмен STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Підприємець STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Промисловець STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капіталіст STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Магнат STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Магнат року STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Магнат сторіччя STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} досягла статусу '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Гравець {PRESIDENT_NAME} з {COMPANY} досяг статусу '{STRING}' # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Карта - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Рельєф STR_SMALLMAP_TYPE_VEHICLES :Транспорт STR_SMALLMAP_TYPE_INDUSTRIES :Підприємства STR_SMALLMAP_TYPE_ROUTES :Маршрути STR_SMALLMAP_TYPE_VEGETATION :Рослинність STR_SMALLMAP_TYPE_OWNERS :Власники STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Показати рельєф на карті STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Показати транспорт на карті STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Показати підприємства на карті STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Показати маршрути на карті STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Показати рослинність на карті STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Показати власників землі на карті STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Щоб відобразити певний вид підприємств, клацніть на ньому мишкою. Ctrl + клік мишкою вмикає/вимикає відображення всіх видів, окрім обраного. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Натисніть на компанію аби відобразити її власність. Ctrl + клік мишкою вмикає/вимикає відображення власності всіх компаній, окрім обраної. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Дороги STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Залізниці STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Станції/Аеропорти/Порти STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Будівлі/Підприємства STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Транспорт STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Поїзди STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Авто STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Кораблі STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Авіація STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Маршрути STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Ліс STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Залізничний вокзал STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Вантажна станція STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Автовокзал STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Аеропорт STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Порт STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Нерівна земля STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Трава STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Пустир STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Поля STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Дерева STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Каміння STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Вода STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Нема власника STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Міста STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Підприємства STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Пустеля STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Сніг STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Показати назви міст на карті STR_SMALLMAP_CENTER :{BLACK}Центрувати мінікарту по поточній позиції STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Вимкнути всі STR_SMALLMAP_ENABLE_ALL :{BLACK}Показувати всі STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Показати рельєф STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Не показувати жодного виду підприємств на карті STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Показати всі види підприємств на карті STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Вкл./відкл. карту висот STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Не показувати власність жодної компанії на карті STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Показати власність всіх компаній на карті # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Показати останнє повідомлення або новину STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * ПАУЗА * * STR_STATUSBAR_AUTOSAVE :{RED}АВТОЗБЕРЕЖЕННЯ STR_STATUSBAR_SAVING_GAME :{RED}* * ЗБЕРЕЖЕННЯ ГРИ * * # News message history STR_MESSAGE_HISTORY :{WHITE}Історія повідомлень STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Список останніх повідомлень STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Повідомлення STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перший поїзд з'явився на {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перший автобус з'явився на {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перша вантажівка з'явилася на {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перший пасажирський трамвай прибув на {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перший вантажний трамвай прибув на {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перший корабель з'явився на {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Жителі святкують . . .{}Перший літак з'явився на {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Аварія!{}Поїзди зіткнулися.{}{COMMA} загинуло. STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Аварія!{}Водій загинув при зіткненні авто з поїздом STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Аварія!{}{COMMA} загинуло при зіткненні авто з поїздом STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}{}{COMMA} загиблих в авіакатастрофі! Літак розбився біля {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Авіакатастрофа!{}В літака закінчилось пальне, {COMMA} людей загинуло! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Дирижабль впав на {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Автомобіль знищений внаслідок зіткнення з НЛО! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Вибухнув нафтопереробний завод біля міста {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}За невідомих обставин зруйновано фабрику біля міста {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}НЛО приземлилось біля міста {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Зсув ґрунту внаслідок обвалу на вугільній шахті біля міста {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Повінь!{}Щонайменше {COMMA} зникло безвісти та загинуло! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Компанія у скруті! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} буде продано або оголошено банкрутом, якщо найближчим часом не зросте продуктивність! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Компанії об'єдналися! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} була викуплена {STRING} за {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}БАНКРУТ! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} була закрита кредиторами і все майно продане! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Засновано нову компанію! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} починає будівництво біля {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} викуплено {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Керівник) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} субсидував спорудження нового міста {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Будується {STRING} біля {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Насаджено {STRING} біля {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} невдовзі закриється! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING}: проблеми з поставками незабаром призведуть до закриття! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Відсутність дерев поруч незабаром призведе {STRING} до закриття! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Європейська грошова одиниця!{}{}У вашій країні введено євро - єдину валюту для розрахунків! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Світова економічна криза!{}{}Фінансисти очікують спад виробництва та попиту! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Криза минула!{}{}Збільшення виробництва внаслідок стабілізації економіки надає впевненості підприємствам! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} збільшує виробництво! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Знайдені нові поклади вугілля на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Знайдені нові нафтові запаси на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Удосконалені сільськогосподарські методи на {INDUSTRY} збільшили виробництво вдвічі! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}: Виробництво {0:STRING.r} зросло на {2:COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} виробництво впало на 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Нашестя саранчі призвело до спустошення на {INDUSTRY}!{}Виробництво впало на 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}: Виробництво {0:STRING.r} впало на {2:COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} чекає в депо STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} чекає в депо STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чекає в депо STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чекає в ангарі # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} має замало завдань STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} має недійсне завдання STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} має подвоєння завдань STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} має невірну станцію в завданнях # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} застарів STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} дуже застарів STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} дуже застарів та потребує негайної заміни STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} не може знайти шлях STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} загубився STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} торік приніс {CURRENCY_LONG} прибутку STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} не може дістатися наступного місця призначення, бо воно дуже далеко STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} зупинено внаслідок збою запланованого переобладнання STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Не вдалося автоматично поновити {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Відтепер в наявності новий {STRING}! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Відтепер в наявності новий {STRING}! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} більше не приймає {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} більше не приймає {STRING} або {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} тепер приймає {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} тепер приймає {STRING} і {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Субсидія більше не пропонується:{}{}Перевезення {STRING.r} з {STRING} до {STRING} STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Субсидію скасовано:{}{}Перевезення {STRING.r} з {STRING.r} до {STRING.r} STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Пропонується річна субсидія {}{}компанії, яка першою привезе {STRING.z} з {STRING} до {STRING}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Субсидію надано {STRING}!{}{}Перевезення {STRING.r} з {STRING} до {STRING} принесе додатково 50% протягом наступного року! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Субсидію надано {STRING}!{}{}Перевезення {STRING.r} з {STRING} до {STRING} принесе вдвічі більше прибутків наступного року! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Субсидію надано {STRING}!{}{}Перевезення {STRING.r} з {STRING} до {STRING} принесе втричі більше прибутків наступного року! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Субсидію надано {STRING}!{}{}Перевезення {STRING.r} з {STRING} до {STRING} принесе вчетверо більше прибутків наступного року! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Транспортний безлад у місті {TOWN}!{}{}Реконструкція доріг, фінансована компанією {STRING} принесе транспорту незручності протягом 6 місяців! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Транспортна монополія! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Адміністрація м. {TOWN} підписала угоду з "{STRING}" щодо ексклюзивних транспортних прав строком на один рік! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Вікно {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Копіювати до вікна STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Копіювати місцеположення з основного екрану до цього вікна STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Вставити з вікна STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Перейти на основному екрані до цього місця # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Налаштування гри STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Грошова одиниця STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Виберіть грошову одиницю ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Британський фунт (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Американський долар (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Євро (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Японська ієна (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Австрійський шилінг (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Бельгійський франк (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарський франк (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Чеська крона (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Німецька марка (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Данська крона (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Іспанська песета (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Фінська марка (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Французький франк (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Грецька драхма (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Угорський форинт (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Ісландська крона (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Італійська ліра (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Нідерландський гульден (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Норвезька крона (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Польський злотий (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Румунський лей (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Російський рубель (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Словенський талер (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Шведська крона (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Турецька ліра (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Словацька крона (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Бразильський реал (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Естонська крона (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Литовський літ (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Південнокорейський вон (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Південноафриканський ранд (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Власна... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Система одиниць виміру STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Виберіть систему одиниць виміру ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Імперська STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Метрична STR_GAME_OPTIONS_MEASURING_UNITS_SI :Міжнародна ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Сторона руху транспорту STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Виберіть, по якій стороні рухається дорожній транспорт STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :лівосторонній рух STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :правосторонній рух STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Назви міст STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Виберіть стиль назв міст ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Англійські (оригінальні) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Французькі STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Німецькі STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Англійські (додаткові) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Латиноамериканські STR_GAME_OPTIONS_TOWN_NAME_SILLY :Кумедні STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Шведські STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Нідерландські STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Фінські STR_GAME_OPTIONS_TOWN_NAME_POLISH :Польські STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Словацькі STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Норвезькі STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Угорські STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Австрійські STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Румунські STR_GAME_OPTIONS_TOWN_NAME_CZECH :Чеські STR_GAME_OPTIONS_TOWN_NAME_SWISS :Швейцарські STR_GAME_OPTIONS_TOWN_NAME_DANISH :Данські STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Турецькі STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Італійські STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Каталонські ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автозбереження STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Виберіть період автозбереження гри STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :вимкнено STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :щомісяця STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :кожні три місяці STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :кожні півроку STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :щороку STR_GAME_OPTIONS_LANGUAGE :{BLACK}Мова STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Виберіть мову інтерфейса користувача STR_GAME_OPTIONS_FULLSCREEN :{BLACK}На весь екран STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Натисніть цю кнопку щоб грати на весь екран STR_GAME_OPTIONS_RESOLUTION :{BLACK}Роздільна здатність STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Виберіть роздільну здатність екрану STR_GAME_OPTIONS_RESOLUTION_OTHER :інша STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат знімків екрану STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Виберіть формат для створення копій екрану STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовий набір графіки STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} відсутн{P ій іх іх}/пошкоджен{P ий их их} файл{P "" а ів} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Додаткова інформація про базовий набір графіки STR_GAME_OPTIONS_BASE_SFX :{BLACK}Базовий набір звуків STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Оберіть базовий набір звуків для використання STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Додаткова інформація про базовий набір звуків STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Базовий музичний набір STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Оберіть базовий музичний набір для використання STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} зіпсовани{P й х х} файл{P "" а ів} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допоміжна інформація про базовий музичний набір STR_ERROR_FULLSCREEN_FAILED :{WHITE}Повноекранний режим не працює # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Вибір грошової одиниці STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Валютний курс: {ORANGE}{CURRENCY_LONG} = Ј {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Зменшити кількість своєї валюти за 1 фунт (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Збільшити кількість своєї валюти за 1 фунт (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Встановити обмінний курс своєї валюти до 1 фунта (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Роздільник: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Встановити роздільник для своєї валюти STR_CURRENCY_PREFIX :{LTBLUE}Префікс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Встановити префікс для своєї валюти STR_CURRENCY_SUFFIX :{LTBLUE}Суфікс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Встановити суфікс для своєї валюти STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Перехід на євро: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Перехід на євро: {ORANGE}ні STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Визначити рік введення Євро STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Перейти на Євро раніше STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Перейти на Євро пізніше STR_CURRENCY_PREVIEW :{LTBLUE}Відображення: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 фунтів (£) у вашій валюті STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Налаштування іншої грошової одиниці STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Кількість конкурентів: {ORANGE}{COMMA} STR_NONE :нема STR_FUNDING_ONLY :засновувати власноруч STR_MINIMAL :мінімально STR_NUM_VERY_LOW :дуже мало STR_NUM_LOW :мало STR_NUM_NORMAL :нормально STR_NUM_HIGH :багато STR_NUM_CUSTOM :вибірково STR_NUM_CUSTOM_NUMBER :вибірково ({NUM}) STR_VARIETY_NONE :немає STR_VARIETY_VERY_LOW :дуже мало STR_VARIETY_LOW :мало STR_VARIETY_MEDIUM :нормально STR_VARIETY_HIGH :багато STR_VARIETY_VERY_HIGH :дуже багато STR_AI_SPEED_VERY_SLOW :дуже повільна STR_AI_SPEED_SLOW :повільна STR_AI_SPEED_MEDIUM :середня STR_AI_SPEED_FAST :швидка STR_AI_SPEED_VERY_FAST :дуже швидка STR_SEA_LEVEL_VERY_LOW :дуже низький STR_SEA_LEVEL_LOW :низький STR_SEA_LEVEL_MEDIUM :середній STR_SEA_LEVEL_HIGH :високий STR_SEA_LEVEL_CUSTOM :вибірковий STR_SEA_LEVEL_CUSTOM_PERCENTAGE :вибірковий ({NUM}%) STR_RIVERS_NONE :Нема STR_RIVERS_FEW :Кілька STR_RIVERS_MODERATE :Середньо STR_RIVERS_LOT :Багато STR_DISASTER_NONE :відкл. STR_DISASTER_REDUCED :знижено STR_DISASTER_NORMAL :нормально STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :плаский STR_TERRAIN_TYPE_FLAT :рівнинний STR_TERRAIN_TYPE_HILLY :пагористий STR_TERRAIN_TYPE_MOUNTAINOUS :гористий STR_CITY_APPROVAL_PERMISSIVE :допустиме STR_CITY_APPROVAL_TOLERANT :терпиме STR_CITY_APPROVAL_HOSTILE :вороже STR_WARNING_NO_SUITABLE_AI :{WHITE}Немає відповідних AI...{}Ви можете завантажити кілька AI через систему 'Вмісту в Інтернеті' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Розширені налаштування STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Фільтр: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Розгорнути всі STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Згорнути всі STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(пояснення відсутнє) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Стандартне значення: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Тип: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Налаштування клієнта (не присутні в збережених іграх; впливають на будь-яку гру) STR_CONFIG_SETTING_TYPE_GAME_MENU :Налаштування гри (знаходяться в збережених іграх; впливають тільки на нову гру) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Налаштування гри (знаходяться в збережених іграх; впливають тільки на поточну гру) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Налаштування компанії (знаходяться в збережених іграх; впливають тільки на нову гру) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Налаштування компанії (знаходяться в збережених іграх; впливають тільки на поточну гру) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Показати: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Показати лише налаштування, які було змінено STR_CONFIG_SETTING_RESTRICT_BASIC :Основні налаштування STR_CONFIG_SETTING_RESTRICT_ADVANCED :Розширені налаштування STR_CONFIG_SETTING_RESTRICT_ALL :Всі / експертні налаштування STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Налаштування, що відрізняються від дефолтних STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Налаштування, що відрізняються від налаштувань нової гри STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Обмежує перелік нижче визначеними типами налаштувань STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Усі типи налаштувань STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Налаштування клієнта (не присутні в збережених іграх; впливають на всі ігри) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Налаштування гри (знаходяться в збережених іграх; впливають лише на нові ігри) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Налаштування гри (знаходяться в збережених іграх; впливають лише на поточну гру) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Налаштування компанії (знаходяться в збережених іграх; впливають лише на нові ігри) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Налаштування компанії (знаходяться у збережених іграх; впливають лише на поточну компанію) STR_CONFIG_SETTING_OFF :ні STR_CONFIG_SETTING_ON :так STR_CONFIG_SETTING_DISABLED :Вимкнено STR_CONFIG_SETTING_COMPANIES_OFF :ні STR_CONFIG_SETTING_COMPANIES_OWN :для власної компанії STR_CONFIG_SETTING_COMPANIES_ALL :для всіх компаній STR_CONFIG_SETTING_NONE :немає STR_CONFIG_SETTING_ORIGINAL :оригінальна STR_CONFIG_SETTING_REALISTIC :реалістична STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :ліворуч STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :по центру STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :праворуч STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Максимальна сума позики: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальна сума позики для компанії (без урахування інфляції) STR_CONFIG_SETTING_INTEREST_RATE :Процентна ставка: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Процентна ставка за позиками; також контролює інфляцію, якщо вона увімкнена STR_CONFIG_SETTING_RUNNING_COSTS :Експлуатаційні витрати: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Встановіть вартість обслуговування та експлуатаційні витрати на транспорт та інфраструктуру STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Швидкість будівництва: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Обмеження кількості будівельних дій для AI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Поломки транспорту: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Встановіть частоту поломок недостатньо якісно обслугованого транспорту STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Множник субсидій: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Встановіть множник оплати за субсидовані перевезення STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Вартість будівництва: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Встановити рівень витрат на будівництво та придбання STR_CONFIG_SETTING_RECESSIONS :Рецесії: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Якщо увімкнено, рецесії можуть відбуватися кожні декілька років. Під час рецессії обсяг виробництва на всіх підприємствах значно знижений (він повертається на попередній рівень, коли рецесія закінчується) STR_CONFIG_SETTING_TRAIN_REVERSING :Заборонити поїздам розвертатися на станціях: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Якщо увімкнено, поїзди не будуть розвертатися на некінцевих станціях, навіть якщо є коротший шлях до їх наступного пункту призначення, який вимагає розвороту STR_CONFIG_SETTING_DISASTERS :Стихійні лиха: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Перемкнути стихійні лиха, які можуть випадково зруйнувати транспорт або інфраструктуру STR_CONFIG_SETTING_CITY_APPROVAL :Ставлення ради міста до реструктуризації його території: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Виберіть, який рівень шуму та руйнування довкілля компаніями впливає на їх рейтинг для міст та подальші будівельні дії в їх межах STR_CONFIG_SETTING_BUILDONSLOPES :Дозволити будівництво на схилах та узбережжях: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :При включенні шляхи та станції можна будувати на більшості схилів. При відключенні допускається лише будівництво, що не потребує добудови фундаментів (шляхи за напрямом схилу, станції на повністю рівній землі) STR_CONFIG_SETTING_AUTOSLOPE :Дозволити зміну схилів під будівлями, дорогами тощо: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Можливість змінювати ландшафт під будівлями та дорогами без необхідності їх зносу STR_CONFIG_SETTING_CATCHMENT :Більш реалістічні зони покриття станцій: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :При включенні розмір зони покриття станції залежить від її типу та розміру STR_CONFIG_SETTING_EXTRADYNAMITE :Дозволити видаляти більше міських будівель: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :При включенні видалення міських будівель та інфраструктури стає біль простішим STR_CONFIG_SETTING_TRAIN_LENGTH :Максимальна довжина потягів: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Налаштування максимальної довжини потягів STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} клітин{P ка ки ок} STR_CONFIG_SETTING_SMOKE_AMOUNT :Кількість диму/іскр від транспорту: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Вібір кількості диму та іскр, що генерує транспорт під час руху STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Модель прискорення поїздів: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Вибір фізичної моделі прискорення залізничного транспорту. В "оригінальній" моделі сповільнення на схилах не залежить від характеристик транспорту. В "реалістичній" моделі сповільнення на схилах та поворатах залежить від різних характеристик, таких як довжина потяга або потужність локомотива. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Модель прискорення дорожнього транспорту: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Вибір фізичної моделі прискорення дорожнього транспорту. В "оригінальній" моделі сповільнення на схилах не залежить від характеристик транспорту. В "реалістичній" моделі сповільнення на схилах залежить від різних характеристик, таких як потужність двигуна, тощо. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Крутизна схилів для залізничного транспорту: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Налаштування крутизни схилів для залізничного транспорту. Чим вище значення, тим складніше підйом на схилах. STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Крутизна схилів для дорожнього транспорту: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Налаштування крутизни схилів для дорожнього транспорту. Чим вище значення, тим складніше підйом на схилах. STR_CONFIG_SETTING_FORBID_90_DEG :Заборонити поїздам і кораблям повертати на 90°: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :При включенні прямокутні перетини шляхів не будуть вважатися поворотами. Для повороту необходно прокладати шляхи під кутом 45°. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Станції можуть складатися з не суміжних частин: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Дозволяє об'єднання в одну станцію частин, що не примикають одна до одної. Щоб приєднати нову станцію до існуючої необхідно використовувати Ctrl+Click при будівництві. STR_CONFIG_SETTING_IMPROVEDLOAD :Використовувати поліпшений алгоритм вантаження: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :При включенні вантаження декількох транспортних засобів на станції здійснюється по черзі. Вантаження наступного транспортного засобу починається тільки після завантаження попереднього. STR_CONFIG_SETTING_GRADUAL_LOADING :Поступове вантаження: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :При включенні транспортні засоби завантажуються поступово, а час вантаження залежить від типу транспорту. Інакше весь вантаж переміщується одразу за час, що залежить від його кількості. STR_CONFIG_SETTING_INFLATION :Інфляція: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Дозволяє інфляцію в економіці. При цьому витрати з часом зростають дещо швидше за прибутки STR_CONFIG_SETTING_SELECTGOODS :Постачати вантаж на станцію тільки якщо на нього був попит: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Дозволити постачання на станцію тільки тих вантажів, які можуть перевозити транспортні засоби, що прибували до цієї станції. Це запобігає низькому рейтингу відносно вантажів, що не обслуговуються. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максимальна довжина мостів: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Максимально допустима довжина мостів STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Максимальна довжина тунелів: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Максимально допустима довжина тунелів STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Спосіб створення сировинних підприємств: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Спосіб створення сировинних підприємств:{}- заборонено: створення сировинних підприємств заборонено;{}- як інші: створюються звічайним способом у вказанному гравцем місці;{}- геологічна розвідка: створюються у випадковому місці або не створються зовсім. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Заборонено STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Як інші індустрії STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Геологічна розвідка STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Рівний простір навколо підприємств: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Розмір рівного простору навколо підприємств, що гарантує наявність вільного місця для будівництва шляхів, тощо. STR_CONFIG_SETTING_MULTIPINDTOWN :Дозволити декілька однотипних підприємств на місто: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Зазвичай, кожне місто може мати не більше одного підприємства кожного типу. Включення цієї опції дозволяє створення декількох підприємств одного типу в одному місті. STR_CONFIG_SETTING_SIGNALSIDE :Розташування сигналів: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Вкажіть з якої сторони шляху встановлювати сигнали STR_CONFIG_SETTING_SIGNALSIDE_LEFT :з лівої сторони STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :зі сторони руху STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :з правої сторони STR_CONFIG_SETTING_SHOWFINANCES :Показувати вікно фінансів в кінці року: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :При включенні на прикінці кожного року відображається вікно фінансів. STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Створювати накази з поміткою «без зупинки»: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Якщо в завданні транспортного засобу не вказана помітка «без зупинки», то воно зупиняєтся на всіх станціях на своєму шляху. Включення цієї опції призводить до того, що нові завдання будуть автоматично створюватися з поміткою «без зупинки» і транспортний засіб буде зупинятися лише на заданних станціях. Звичайно, при необхідності помітку можна зняти або встановити власноруч. STR_CONFIG_SETTING_STOP_LOCATION :Створювати накази для поїздів з зупинкою {STRING} платформи STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Задайте, який кінець платформи для зупинки поїздів вказувати у нових завданнях.{}- на початку: початок платформи в напрямку руху;{}- посередині: середина платформи;{}- наприкінці: кінець платформи в напрямку руху. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :на початку STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :посередині STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :наприкінці STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Автотранспорт шикується в чергу на зупинках: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :При включенні дорожній транспорт буде очікувати в черзі перед зайнятими зупинками. STR_CONFIG_SETTING_AUTOSCROLL :Прокручувати вікно, коли курсор з краю: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :При включенні вміст вікон огляду буде прокручуватись при підведенні курсора до краю вікна STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Вимкнено STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Головне вікно тільки в повноекранному режимі STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Головне вікно STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Кожне вікно огляду STR_CONFIG_SETTING_BRIBE :Дозволити підкуп місцевої влади: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Дозволяє компаніям давати хабарі місцевій владі. Якщо підкуп буде викрито, протягом 6 місяців компанія не матиме змоги взаємодіяти з владою міста. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Дозволити придбання ексклюзивних прав: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Якщо компанія придбає ексклюзивні транспортні права в місті, то на протязі року станції конкурентів не отримають жодного вантажа або пасажира. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Дозволити фінансування забудови міста: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Дозволяє компаніям фінансувати забудову міста, тимчасово прискорюючи його розвиток. STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Дозволити фінансування реконструкції місцевих доріг: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Дозволяє компаніям фінансувати реконструкцію міських доріг з метою саботажу дорожно-орієнтованих сервісів. STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Дозволити переказ коштів іншим компаніям: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Дозволяє переказ коштів між компаніями в колективній грі. STR_CONFIG_SETTING_FREIGHT_TRAINS :Множник ваги для імітації важких потягів: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Дає можливість підвищити вплив ваги вантажу на прискорення потягу. Чим більше значення множника, тим більший вплив вага вантажу чинить на потяг, особливо на підйомах. STR_CONFIG_SETTING_PLANE_SPEED :Множник швидкості авіатранспорту: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Налаштування співвідношення швідкості повітряного транспорту та швидкості інших видів транспорту з метою зменьшення високих прибутків від авіації. STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Частота повітряних катастроф: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Налаштування частоти повітряних катастроф STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Немає STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Низька STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Нормальна STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Дозволити встановлення зупинок на дорогах міста: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Дозволяє встановлення зупинок на дорогах, якими володіє місто. STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Дозволити встановлення зупинок на дорогах конкурентів: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Дозволяє встановлення зупинок на дорогах, якими володіють конкуренти. STR_CONFIG_SETTING_ADJACENT_STATIONS :Різні станції можуть примикати одна до одної: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Різні станції можуть примикати одна до одної STR_CONFIG_SETTING_DYNAMIC_ENGINES :Дозволити декілька NewGRF наборів транспорту: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Налаштування для сумісності зі старими файлами NewGRF. Не відключайте, якщо не впевнені в необхідності цього! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Цю настройку не можливо змінити при наявності транспорту у грі STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Витрати на утримання інфраструктури: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :При включенні інфраструктура потребує коштів для утримання. Витрати збільшуються не пропорційно з ростом розміру мережі, більше впливаючи на великі компанії ніж на малі. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аеропорти не застарівають: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :При включенні кожен аеропорт буде доступним для будівництва безстроково після його впровадження. STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Повідомляти про транспорт, що загубився: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Вмикає/вимикає повідомлення, коли транспортний засіб не в змозі знайти шлях до пункту призначення. STR_CONFIG_SETTING_ORDER_REVIEW :Перевіряти завдання транспорту: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :При включенні завдання транспортних засобів періодично перевіряються з метою своєчасного попередження про помилки або проблеми. STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Ні STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Так, крім зупиненого транспорту STR_CONFIG_SETTING_ORDER_REVIEW_ON :Так, для всього транспорту STR_CONFIG_SETTING_WARN_INCOME_LESS :Попереджувати про збиткові транспортні засоби: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Вмикає/вимикає повідомлення про транспортні засоби, що не принесли прибутку на протязі року. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспортні засоби не застарівають: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :При включенні будь-яка модель транспортного засобу буде доступна для придбання безстроково після її впровадження. STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Автозаміна зношених транспортних засобів: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :При включенні транспортні засоби з вичерпаним строком служби автоматично замінюються на нові (при виконанні умов автозаміни). STR_CONFIG_SETTING_AUTORENEW_MONTHS :Автозаміна транспрорту {STRING} закінчення строку експлуатаціі STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Момент з якого транспортний засіб підлягає автоматичній заміні. STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} місяц{P ь я ів} до STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} місяц{P ь я ів} після STR_CONFIG_SETTING_AUTORENEW_MONEY :Дозволяти автозаміну при наявності не менш ніж {STRING} на рахунку STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Мінімальна кількість коштів на рахунку, що дозволяє виконувати автозаміну транспорту. STR_CONFIG_SETTING_ERRMSG_DURATION :Тривалість повідомлення про помилку: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Тривалість відображення повідомлень про помилки (червоне вікно повідомлень). Деякі (критичні) повідомлення необхідно закривати власноруч. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} секунд{P а и ""} STR_CONFIG_SETTING_HOVER_DELAY :Відображати підказки: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Затримка перед відображенням підказок при наведенні курсором на елементи інтерфейса. Окрім того, відображення підказок можна призначити на праву кнопку миші. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :При наведенні, через {COMMA} секунд{P у и ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :По правому кліку STR_CONFIG_SETTING_POPULATION_IN_LABEL :Показувати населення в назві міста: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Відображати кількість населення міста поряд з його назвою на карті STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Товщина ліній на графіках: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Товщина ліній на графіках. Тонкі лінії дають більш точне відображення, а товстіші - більш розбірливі. STR_CONFIG_SETTING_LAND_GENERATOR :Генератор ландшафту: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :стандартний STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Макс. відстань від краю карти до нафтопереробних заводів: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нафтопереробні заводи завжди будуються не далеко від краю карти або узбережжя. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Рівень снігової шапки: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубість ландшафту (TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :дуже плавний STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :плавний STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :грубий STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :дуже грубий STR_CONFIG_SETTING_TREE_PLACER :Алгоритм розміщення дерев: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :немає STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :стандартний STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :покращений STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Поворот карти висот: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :проти годинникової стрілки STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :за годинниковою стрілкою STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Основний рівень суші плаского рельєфу: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Дозволити зміну рельєфу на краю карти: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :В разі відключення краї карти завжди будуть водними STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Одна або більше клітинок з північного краю не є вільними STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Одна або більше клітинок на одному з країв не є водними STR_CONFIG_SETTING_STATION_SPREAD :Максимальний розмір станцій: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Максимально допустимий лінійний розмір станцій. Зауважте, що занадто високе значення параметру може уповільнити гру. STR_CONFIG_SETTING_SERVICEATHELIPAD :Автоматичний техогляд гелікоптерів на площадках: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Проводити техогляд гелікоптерів кожного разу при приземленні, навіть якщо аєропорт не має депо. STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Приєднати меню рельєфу до меню будування: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Разом з панеллю інструментів будівництва також відкривається панель інструментів ландшафту. STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Колір поверхні на зменшеній карті: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Колір поверхні на зменшеній карті STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :зелений STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :темнозелений STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фіолетовий STR_CONFIG_SETTING_REVERSE_SCROLLING :Змінити напрямок прокрутки: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Налаштування переміщення по карті правою кнопкою миші. При включенні переміщується карта. При виключенні - камера. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавна прокрутка у вікні: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Налаштування способу прокрутки основного екрану при кліках по зменшенній карті, або інших діях, що призводять до переміщення по карті (кнопки "Оглянути", тощо). При включенні опції переміщення карти відбувається плавно. При виключенні - відбувається моментальне переміщення в необхідну точку. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Показувати підказки про розміри під час будівництва: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Відображати довжини та різниці висот в підказках в процесі будівництва. STR_CONFIG_SETTING_LIVERIES :Індивідуальні кольорові схеми: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Використовувати індивідуальні кольорові схеми різних типів транспорту замість загальної кольорової схеми компанії. STR_CONFIG_SETTING_LIVERIES_NONE :не використовувати STR_CONFIG_SETTING_LIVERIES_OWN :тільки для своєї компанії STR_CONFIG_SETTING_LIVERIES_ALL :для всіх компаній STR_CONFIG_SETTING_PREFER_TEAMCHAT :Командний чат по : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Налаштування того, який тип чату (приватний чи публічний) відкривати при натисненні , а який - при натисненні . STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Функція колеса миші: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Налаштування функції, що виконує колесо миші. STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :масштабування STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :прокрутка карти STR_CONFIG_SETTING_SCROLLWHEEL_OFF :немає STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Швидкість прокрутки колесом миші: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Налаштування чутливості прокрутки колесом миші STR_CONFIG_SETTING_OSK_ACTIVATION :Екранна клавіатура: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Виберіть спосіб відкриття екранної клавіатури для введення тексту у поля тільки за допомогою вказівного пристрою. Це призначено для невеликих пристроїв без фактичної клавіатури STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Вимкнено STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Подвійний клік STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Одиночний клік (коли виділено) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Одиночний клік (негайно) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Емуляція правого кліку: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Задає спосіб емуляції правого кліку STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+клік STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+клік STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :не емулювати STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Прокрутка по лівому кліку: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Дозволяє "тягати" карту утримуючи ліву кнопку миші, що дає можливість використовувати сенсорні екрани природнім способом.. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Формат дати в іменах файлів збереження: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Формат дати в іменах файлів збереження STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :довгий (31 Гру 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :короткий (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Стандартна палітра файлів NewGRF: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Налаштування палітри для файлів NewGRF, в яких вона не вказана. STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Визначена палітра (D) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Стара палітра (W) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Пауза на початку нової гри: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :При включенні на початку гри автоматично вмикається пауза. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Дозволити в режимі паузи: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Вибір дій, доступних в режимі паузи. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ніяких дій STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Всі дії, крім будівництва STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Всі дії, крім зміни ландшафту STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Всі дії STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Відкривати розширенний список транспорту: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Вмикає використання розширенного інтерфейсу списків транспорту, що має інструменти групування транспортних засобів. STR_CONFIG_SETTING_LOADING_INDICATORS :Показувати індикатори завантаження: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Вмикає\вимикає відображення індикатора процесу завантаження над транспортними засобами. STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Показувати розклад в тіках замість днів: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Відображати час руху в розкладах в тіках замість днів STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Показувати час прибуття та відправлення у розкладах: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Відображати очікуваний час прибуття та відправлення у розкладі STR_CONFIG_SETTING_QUICKGOTO :Прискорене створення наказів транспорту: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :При відображенні списка завдань транспортного засобу автоматично натискається кнопка створення нових завдань STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип колії на початку нової/завантаженної гри: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Тип коліі, що вибирається на початку нової або завантаженної гри:{} - перший доступний: перший тип в списку (найстаріший);{}- останній доступний: останній тип в списку (найновіший);{}- найбільш вживаний: тип колії, що найбільше використовувався у грі. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :перший доступний STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :останній доступний STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :найбільш вживаний STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Показувати зарезервовану колію: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Вмикає відображення зарезервованної потягом ділянки колії, що може допомогти при наявності проблем з маршрутними сигналами. STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Залишати інструменти активними після використання: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Залишати інструменти будівництва активними після використання. STR_CONFIG_SETTING_EXPENSES_LAYOUT :Групувати витрати у вікні фінансів: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Налаштування відображення інформації про вітрати у вікні фінансів STR_CONFIG_SETTING_SOUND_TICKER :Новинний рухомий рядок: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Відтворення звуку для узагальнених новинних повідомлень STR_CONFIG_SETTING_SOUND_NEWS :Газета: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Відтворювати звуковий ефект при відображенні газет STR_CONFIG_SETTING_SOUND_NEW_YEAR :Кінець року: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Грати звуковий ефект у кінці року при підбитті результатів річної діяльності компанії порівняно з попереднім роком STR_CONFIG_SETTING_SOUND_CONFIRM :Будівництво: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Відтворювати звуковий ефект при успішному будівництві споруд або інших діях STR_CONFIG_SETTING_SOUND_CLICK :Натискання кнопок: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Звуковий сигнал при натисканні кнопок STR_CONFIG_SETTING_SOUND_DISASTER :Катастрофи/аварії: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Відтворювати звукові ефекти аварій та катастроф STR_CONFIG_SETTING_SOUND_VEHICLE :Транспортні засоби: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Відтворювати звукові ефекти транспортних засобів STR_CONFIG_SETTING_SOUND_AMBIENT :Навколишнє середовище: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Відтворювати звуки довкілля: ландшафту, промисловості та міст STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Заборонити будівництво інфраструктури, для якої немає відповідного транспорту: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :При включенні будівництво тої чи іншої інфраструктури можливе тільки при доступності відповідних транспортних засобів. Це запобігає марним витратам часу та коштів на інфраструктуру, що не використовується. STR_CONFIG_SETTING_MAX_TRAINS :Максимум поїздів на одну компанію: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Максимально допустима кількість залізничного транспорту, яким може володіти компанія. STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Максимум авто на одну компанію: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Максимально допустима кількість дорожнього транспорту, яким може володіти компанія. STR_CONFIG_SETTING_MAX_AIRCRAFT :Максимум літаків на одну компанію: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Максимально допустима кількість повітряного транспорту, яким може володіти компанія. STR_CONFIG_SETTING_MAX_SHIPS :Максимум кораблів на одну компанію: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Максимально допустима кількість водного транспорту, яким може володіти компанія. STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Заборонити комп'ютеру використання потягів: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Забороняє віртуальним гравцям використання залізничного транспорту. STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Заборонити комп'ютеру використання авто: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Забороняє віртуальним гравцям використання дорожнього транспорту. STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Заборонити комп'ютеру використання літаків: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Забороняє віртуальним гравцям використання повітрянного транспорту. STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Заборонити комп'ютеру використання кораблів: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Забороняє віртуальним гравцям використання водного транспорту. STR_CONFIG_SETTING_AI_PROFILE :Параметри профілю за умовчанням: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Виберіть, який профіль налаштувань використовувати випадковому ШІ або для початкових значень при додаванні нового ШІ або сценарію гри STR_CONFIG_SETTING_AI_PROFILE_EASY :Легкий STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Середній STR_CONFIG_SETTING_AI_PROFILE_HARD :Складний STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Дозволити AI у колективній грі: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Дозволяє участь віртуальних гравців у колективній грі STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Максимально допустима кількість #opcodes: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Максимально допустима кількість розрахунків, що можуть виконати скрипти віртуальних гравців впродовж одного ходу. STR_CONFIG_SETTING_SERVINT_ISPERCENT :Інтервали техогляду вказано у відсотках: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Налаштування способу визначення необхідності проведення техогляду: через вказаний проміжок часу після попереднього техогляду чи коли поточна надійність транспортного засобу стане нижчою від максимальної його надійності на вказаний процент. STR_CONFIG_SETTING_SERVINT_TRAINS :Інтервал техогляду залізничного транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Налаштування інтервалу техогляду для нового залізничного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} д{P ень ні нів}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Відключено STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Інтервал техогляду дорожнього транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Налаштування інтервалу техогляду для нового дорожнього транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Інтервал техогляду повітряного транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Налаштування інтервалу техогляду для нового повітряного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). STR_CONFIG_SETTING_SERVINT_SHIPS :Інтервал техогляду водного транспорту: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Налаштування інтервалу техогляду для нового водного транспорту (встановлений інтервал може бути змінено окремо для кожного транспортного засобу в його інтерфейсі). STR_CONFIG_SETTING_NOSERVICE :Не відправляти на техогляд, якщо відключені аварії: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Включення цієї опції дозволяє не проводити автоматичний техогляд у разі, якщо поломки транспорту вимкнено. STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Враховувати обмеження швидкості вагонів: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :При включенні максимальна швидкість потяга враховує обмеження швидкості вагонів. STR_CONFIG_SETTING_DISABLE_ELRAILS :Скасувати електрифіковану залізницю: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :При включенні відпадає необхідність побудови електрифікованої колії для потягів на електричній тязі - вони будуть працювати на звичайній залізниці. STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Прибуття першого транспорту на станцію гравця: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Показати газету коли перший транспортний засіб прибуває на нову станцію гравця STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Прибуття першого транспорту на станцію конкурента: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Показати газету коли перший транспортний засіб прибуває на нову станцію конкурента STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Нещасні випадки / стихійні лиха: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Показати газету при аварії або катастрофі STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Інформація щодо компанії: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Показати газету коли відкривається нова компанія, або коли компанії ризикують збанкрутувати STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Відкриття підприємств: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Показати газету коли підприємство відкривається STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Закриття підприємств: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Показати газету коли виробництво припиняє роботу STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Зміни в економіці: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Показати газету про глобальні зміни в економіці STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Зміни обсягів виробництва на підприємствах, обслуговуваних компанією: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Показати газету коли змінюється рівень виробництва промисловості, що обслуговується компанією STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Зміна обсягів виробництва на підприємствах, обслуговуваних суперниками: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Показати газету коли змінюється рівень виробництва промисловості, яка обслуговується конкурентами STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Зміни обсягів виробництва на інших підприємствах: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Показати газету коли змінюється рівень виробництва промисловості, що не обслуговується компанією або конкурентами STR_CONFIG_SETTING_NEWS_ADVICE :Поради / інформація про транспорт компанії: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Показати повідомлення про засоби пересування, які потребують уваги STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Новий транспорт: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Показати газету, коли стає доступним новий засіб пересування STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Зміни в списку грузів, що приймаються: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Показати повідомлення, якщо станція змінює приймані типи вантажів STR_CONFIG_SETTING_NEWS_SUBSIDIES :Субсидії: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Показати газети про події, пов'язані з субсидіями STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Загальна інформація: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Показати газети про загальні події, такі як придбання виключних прав або фінансуванні реконструкції дороги STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Не показувати STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Скорочено STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Повністю STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Рік впровадження кольорових новин: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Починаючи з вказанного року чорно-білі новини замінять кольоровими. STR_CONFIG_SETTING_STARTING_YEAR :Початкова дата: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Стабільна економіка: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :При включенні обсяги виробництва підприємств змінюються часто, але не дуже суттєво. Зазвичай ця опція не впливає на підприємства, додані за допомогою NewGRF. STR_CONFIG_SETTING_ALLOW_SHARES :Дозволити придбання акції інших компаній: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :При включенні дозволяє придбання та продаж акцій команій. Акції компанії стають доступними після досягнення деякого віку. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Відсоток прибутку за часткове перевезення: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Налаштування проценту прибутку, що нараховується за часткове перевезення вантажу. За допомогою даної опції можна контролювати розподіл прибутків між учасниками багатоланкових перевезень. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При протягуванні встановлювати сигнали через {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Налаштування відстані між сигналами при будівництві сигналів протягуванням. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} клітин{P ку ки ок} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :При протягуванні дотримуватись фіксованої дистанціі між сигналами: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Вибрати спосіб встановлення сигналів при протягуванні з утриманням Ctrl. Якщо опція відключена, то сигнали встановлюються на кінцях мостів та тунелів. При включенні опції заданий інтервал встановлювання сигналів витримується більш строго (з метою вирівнювання сигналів на паралельних коліях). STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Автоматично будувати семафори до {STRING} року STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Налаштування року впровадження світлофорів замість семафорів. До цього року будуть встановлюватись лише семафори. STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Використовувати меню сигналів: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :При включенні відображає допоміжну панель інструментів для вибору типу сигналу при їх встановленні. При відключенні доступна лише заміна типу вже встановлених сигналів за допомогою Ctrl+кліка. STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Тип сигналів за умовчанням: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Тип сигналу, що встановлюється за замовчанням. STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :блок-сигнали STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :маршрутні STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :односторонні маршрутні STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Сигнали, доступні при циклічному переборі: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Налаштування типів сигналів, що доступні при ротації за допомогою Ctrl+кліка. STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :тільки блок-сигнали STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :тільки маршрутні STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :всі STR_CONFIG_SETTING_TOWN_LAYOUT :Тип дорожньої сітки для нових міст: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Тип дорожньої сітки міста. STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Стандартна STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Покращений алгоритм STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :сітка 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :сітка 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Випадково STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Міська влада може будувати дороги: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Дозволяє містам самостійно будувати дороги в процесі росту. Відключить, якщо хочете власноруч будувати міські дороги.. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Міська влада може будувати переїзди: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Дозволяє містам самостійно будувати залізничні переїзди. STR_CONFIG_SETTING_NOISE_LEVEL :Міська влада може контролювати рівень шуму аеропортів: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При відключенні дозволяється будувати два аеропорти на місто. Інакше кількість аеропортів буде залежати від допустимого рівня шуму, що в свою чергу залежить від населення міста, розміру аеропорта та відстані між аеропортами. STR_CONFIG_SETTING_TOWN_FOUNDING :Засновування нових міст під час гри: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Дозволяє заснування нових міст гравцями під час гри. STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Заборонено STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Дозволено STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Дозволено (з вибором дорожньої сітки) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Поява дерев під час гри: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Налаштування випадкової появи дерев на карті в процесі гри. Ця настройка також впливає на відповідні підприємства, такі як лісопилки. STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Відсутня {RED}(зупиняє лісопилки) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Тільки у тропіках STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Скрізь STR_CONFIG_SETTING_TOOLBAR_POS :Позиція головного меню: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Горизонтальна позиція основної панелі інструментів. STR_CONFIG_SETTING_STATUSBAR_POS :Позиція панелі статусу: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Горизонтальна позиція панелі статусу, що внизу екрана. STR_CONFIG_SETTING_SNAP_RADIUS :Радіус прилипання вікон: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Дистанція між вікнами, при якій вікно, що переміщують, буде автоматично вирівноватися та "прилипати" до сусідніх вікон. STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} піксел{P ь і ів} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Відключено STR_CONFIG_SETTING_SOFT_LIMIT :Максимальна кількість вікон (що не прилипають): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Максимально допустима кількість незакріплених вікон. При відкритті нових вікон зверх вказаної кількості старі вікна будуть закриватися. STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :відключено STR_CONFIG_SETTING_ZOOM_MIN :Максимальний рівень наближення: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Максимальний рівень наближення. Зауважте, що більш високі рівні наближення потребують більше оперативної пам'яті. STR_CONFIG_SETTING_ZOOM_MAX :Максимальний рівень віддалення: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Максимальний рівень віддалення. Зауважте, що використання високих рівнів віддалення потребує більше обчислювальної потужності і може викликати гальмування ігрового процесу. STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :нормальний STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Швидкість росту міста: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Налаштування швидкості росту міст STR_CONFIG_SETTING_TOWN_GROWTH_NONE :немає STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :повільна STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :середня STR_CONFIG_SETTING_TOWN_GROWTH_FAST :швидка STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :дуже швидка STR_CONFIG_SETTING_LARGER_TOWNS :Співвідношення кількості мегаполісів: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Кількість міст-мегаполісів в загальній кількості міст, що засновуються на початку гри. Мегаполіси можуть мати з самого початку значно більше населення (що контролюється налаштуванням множника населення) та ростуть швидше. STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 з {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Жодного STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Множник розміру мегаполісів: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Середньостатистичне відношення початкового розміру мегаполісів порівняно зі звичайними містами. STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Прибрати безглузді елементи доріг під час їх будівництва: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Дозволяє видаляти тупіки на дорогах міста під час рекострукції доріг. STR_CONFIG_SETTING_GUI :{ORANGE}Інтерфейс STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Будівництво STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспорт STR_CONFIG_SETTING_STATIONS :{ORANGE}Станції STR_CONFIG_SETTING_ECONOMY :{ORANGE}Економіка STR_CONFIG_SETTING_AI :{ORANGE}Конкуренти STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Параметри відображення STR_CONFIG_SETTING_INTERACTION :{ORANGE}Параметри взаємодії STR_CONFIG_SETTING_SOUND :{ORANGE}Звукові ефекти STR_CONFIG_SETTING_NEWS :{ORANGE}Новини та повідомлення STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Сигнали STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Обробка вантажів STR_CONFIG_SETTING_AI_NPC :{ORANGE}Віртуальні гравці STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автозаміна STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Техогляд STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрути STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Поїзди STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Міста STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Підприємства STR_CONFIG_SETTING_PATHFINDER_OPF :стандартний STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(рекомендовано) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Алгоритм пошуку шляху для поїздів: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Вибір алгоритма пошуку шляху для залізничного транспорту. STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Алгоритм пошуку шляху для автомобілів: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Вибір алгоритма пошуку шляху для дорожнього транспорту. STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Алгоритм пошуку шляху для кораблів: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Вибір алгоритма пошуку шляху для водного транспорту. STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Автоматично розвертатися біля сигналів: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Дозволяє поїздам розвертатися на сигналах, котрі не вдається проїхати впродовж довгого часу. STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Змініть значення # Config errors STR_CONFIG_ERROR :{WHITE}Помилка у файлі конфігурації... STR_CONFIG_ERROR_ARRAY :{WHITE}... помилка в масиві '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... невірне значення '{STRING}' для '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... лишні символи в кінці параметру '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ігнорую NewGRF '{STRING}': дублікат GRF ID з '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ігнорую невірні NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :не знайдено STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :небезпечий для статичного використання STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :системний NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :несумісний з поточною версією OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :невідомий STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... невірний рівень стискання '{STRING}' STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... формат сейвів '{STRING}' недоступний. Повертаюся до '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... базовий набір графіки '{STRING}' не знайдено STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... базовий набір звуків '{STRING}' не знайдено STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... базовий набір музики '{STRING}' не знайдено STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Не вистачає пам'яті # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Нова гра STR_INTRO_LOAD_GAME :{BLACK}Завантажити гру STR_INTRO_PLAY_SCENARIO :{BLACK}Грати за сценарієм STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Грати з картою висот STR_INTRO_SCENARIO_EDITOR :{BLACK}Редактор сценаріїв STR_INTRO_MULTIPLAYER :{BLACK}Мережева гра STR_INTRO_GAME_OPTIONS :{BLACK}Налаштування гри STR_INTRO_HIGHSCORE :{BLACK}Таблиця рекордів STR_INTRO_ADVANCED_SETTINGS :{BLACK}Розширені налаштування STR_INTRO_NEWGRF_SETTINGS :{BLACK}Налаштування NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Додатковий контент STR_INTRO_SCRIPT_SETTINGS :{BLACK}Налаштування AI / GS STR_INTRO_QUIT :{BLACK}Вихід STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Почати нову гру. Ctrl+клік пропускає конфігурацію карти STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Продовжити збережену гру STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Почати нову гру з використанням готової карти висот (рельєфу) STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Почати нову гру з використанням готового сценарію STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Створити свій сценарій STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Почати мережеву гру STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Вибрати 'помірний' клімат STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Вибрати 'субарктичний' клімат STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Вибрати 'тропічний' клімат STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Вибрати 'іграшковий' варіант STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Показати налаштування гри STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Показати таблицю рекордів STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Показати розширені налаштування STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Показати настройки NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Перевірити доступний для завантаження додатковий контент STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Показати налаштування AI / Ігрового Скрипта STR_INTRO_TOOLTIP_QUIT :{BLACK}Вийти з OpenTTD STR_INTRO_TRANSLATION :{BLACK}Переклад має {NUM} неперекладених рядків. Зареєструйтесь як перекладач вашої мови та покращіть OpenTTD. Детальніше читайте в readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Вийти STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Ви дійсно бажаєте вийти до {STRING}? STR_QUIT_YES :{BLACK}Так STR_QUIT_NO :{BLACK}Ні # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Залишити гру STR_ABANDON_GAME_QUERY :{YELLOW}Ви дійсно хочете залишити гру? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ви дійсно бажаєте вийти з цього сценарію? # Cheat window STR_CHEATS :{WHITE}Гратиму нечесно STR_CHEATS_TOOLTIP :{BLACK}Галка показує, що Ви стали грати нечесно STR_CHEATS_WARNING :{BLACK}Попередження! Ви збираєтесь обманути своїх конкурентів. Пам'ятайте, що подібне безчестя буде запам'ятовано назавжди STR_CHEAT_MONEY :{LTBLUE}Збільшити кошти на {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Грає як компанія: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Супербульдозер (руйнує все): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Тунелі перетинаються: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Реактивні літаки не будуть (часто) розбиватися в малих аеропортах: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Помірний ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Субарктичний ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Субтропічний ландшафт STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Іграшковий ландшафт STR_CHEAT_CHANGE_DATE :{LTBLUE}Змінити дату: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Змінити поточний рік STR_CHEAT_SETUP_PROD :{LTBLUE}Дозволити зміну рівня виробництва: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Нова кольорова схема STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Показати загальне фарбування STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Показати фарбування поїздів STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Показати фарбування автотранспорта STR_LIVERY_SHIP_TOOLTIP :{BLACK}Показати фарбування кораблів STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Показати фарбування авіації STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Оберіть основний колір для обраної схеми. Ctrl+клік встановить обраний колір для всіх схем. STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Оберіть другорядний колір для обраної схеми. Ctrl+клік встановить обраний колір для всіх схем. STR_LIVERY_PANEL_TOOLTIP :{BLACK}Оберіть кольорову схему для зміни, чи декілька з Ctrl+клік. Клікніть на прямокутнику, щоб ввімкнути/вимкнути використання схем STR_LIVERY_DEFAULT :Стандартний колір STR_LIVERY_STEAM :Паровоз STR_LIVERY_DIESEL :Тепловоз STR_LIVERY_ELECTRIC :Електровоз STR_LIVERY_MONORAIL :Монорейковий локомотив STR_LIVERY_MAGLEV :Магнітний локомотив STR_LIVERY_DMU :Багатосекційний тепловоз STR_LIVERY_EMU :Багатосекційний електровоз STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажирський вагон (паровоз) STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажирський вагон (тепловоз) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажирський вагон (електровоз) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажирський вагон (монорейка) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажирський вагон (маглев) STR_LIVERY_FREIGHT_WAGON :Вантажний вагон STR_LIVERY_BUS :Автобус STR_LIVERY_TRUCK :Вантажівка STR_LIVERY_PASSENGER_SHIP :Пасажирське судно STR_LIVERY_FREIGHT_SHIP :Вантажне судно STR_LIVERY_HELICOPTER :Гелікоптер STR_LIVERY_SMALL_PLANE :Малий літак STR_LIVERY_LARGE_PLANE :Великий літак STR_LIVERY_PASSENGER_TRAM :Пасажирський трамвай STR_LIVERY_FREIGHT_TRAM :Вантажний трамвай # Face selection window STR_FACE_CAPTION :{WHITE}Вибір обличчя STR_FACE_CANCEL_TOOLTIP :{BLACK}Відмінити вибір нового обличчя STR_FACE_OK_TOOLTIP :{BLACK}Підтвердити вибір нового обличчя STR_FACE_MALE_BUTTON :{BLACK}Чоловік STR_FACE_MALE_TOOLTIP :{BLACK}Вибрати чоловіче обличчя STR_FACE_FEMALE_BUTTON :{BLACK}Жінка STR_FACE_FEMALE_TOOLTIP :{BLACK}Вибрати жіноче обличчя STR_FACE_NEW_FACE_BUTTON :{BLACK}Нове обличчя STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Створити нове випадкове обличчя STR_FACE_ADVANCED :{BLACK}Детальний STR_FACE_ADVANCED_TOOLTIP :{BLACK}Детальний вибір обличчя STR_FACE_SIMPLE :{BLACK}Простий STR_FACE_SIMPLE_TOOLTIP :{BLACK}Простий вибір обличчя STR_FACE_LOAD :{BLACK}Завантажити STR_FACE_LOAD_TOOLTIP :{BLACK}Завантажити обране обличчя STR_FACE_LOAD_DONE :{WHITE}Обране обличчя було завантажене з файлу конфігурації OpenTTD STR_FACE_FACECODE :{BLACK}Обличчя № STR_FACE_FACECODE_TOOLTIP :{BLACK}Подивитись та/чи змінити номер обличчя президента компанії STR_FACE_FACECODE_CAPTION :{WHITE}Подивитись та/чи змінити номер обличчя президента STR_FACE_FACECODE_SET :{WHITE}Було встановлено новий номерний код обличчя STR_FACE_FACECODE_ERR :{WHITE}Не можна встановити номер обличчя президента - це має бути число від 0 до 4,294,967,295! STR_FACE_SAVE :{BLACK}Зберегти STR_FACE_SAVE_TOOLTIP :{BLACK}Зберегти обране обличчя STR_FACE_SAVE_DONE :{WHITE}Це обличчя буде збережене як обране у файлі конфігурації OpenTTD STR_FACE_EUROPEAN :{BLACK}Європейські STR_FACE_SELECT_EUROPEAN :{BLACK}Вибрати європейські обличчя STR_FACE_AFRICAN :{BLACK}Африканські STR_FACE_SELECT_AFRICAN :{BLACK}Вибрати африканські обличчя STR_FACE_YES :Так STR_FACE_NO :Ні STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Дозволити вуса або сережки STR_FACE_HAIR :Волосся: STR_FACE_HAIR_TOOLTIP :{BLACK}Змінити волосся STR_FACE_EYEBROWS :Брова: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Змінити брова STR_FACE_EYECOLOUR :Колір очей: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Змінити колір очей STR_FACE_GLASSES :Окуляри: STR_FACE_GLASSES_TOOLTIP :{BLACK}Дозволити окуляри STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Змінити окуляри STR_FACE_NOSE :Ніс: STR_FACE_NOSE_TOOLTIP :{BLACK}Змінити ніс STR_FACE_LIPS :Губи: STR_FACE_MOUSTACHE :Вуса: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Змінити губи або вуса STR_FACE_CHIN :Підборіддя: STR_FACE_CHIN_TOOLTIP :{BLACK}Змінити підборіддя STR_FACE_JACKET :Піджак: STR_FACE_JACKET_TOOLTIP :{BLACK}Змінити піджак STR_FACE_COLLAR :Комір STR_FACE_COLLAR_TOOLTIP :{BLACK}Змінити комір STR_FACE_TIE :Краватка: STR_FACE_EARRING :Сережки: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Змінити комір або сережки # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Мережева гра STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}З'єднання: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Виберіть гру через інтернет або через локальну мережу(ЛОМ) STR_NETWORK_SERVER_LIST_LAN :Локальна STR_NETWORK_SERVER_LIST_INTERNET :Інтернет STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ім'я гравця: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ім'я, за яким тебе розпізнаватимуть інші гравці STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Назва STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Назва гри STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Клієнти STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Клієнти в мережі/макс.клієнтів{}Компанії в мережі/макс.компаній STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Розмір карти STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Розмір карти гри{}Клікніть для сортування за районом STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Дата STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Поточна дата STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Роки STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Кількість років{}впродовж яких іде гра STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Мова, версія сервера, та інше. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Натисніть на гру із списку, щоб вибрати її STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Сервер, до якого під'єднувались востаннє STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Натисніть, щоб вибрати сервер, на якому ви грали востаннє STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}Інформація про гру STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Клієнти: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Мова: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Ландшафт: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Розмір карти: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Версія серверу: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Адреса серверу: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Дата початку: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Поточна дата: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Захищено паролем! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}Сервер відключений STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}Сервер зайнятий STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}Версія не співпадає STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF ПОМИЛКА STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Приєднатися STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Оновити сервер STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Оновити інформацію про сервер STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Знайти сервер STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Пошук мережі для сервера STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Додати сервер STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Додає сервер до списку, який завжди буде перевірятись на поточні ігри STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Створити сервер STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Створити ваш власний сервер STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Введіть ваше ім'я STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Введіть адресу сервера # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Створити нову мережеву гру STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Назва гри: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Назва гри відображатиметься іншим гравцям у меню мережевої гри STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Встановити пароль STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Захистіть вашу гру паролем, якщо не бажаєте загального доступу STR_NETWORK_START_SERVER_LAN_INTERNET :Локальна/Інтернет STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клієнт{P "" а ів} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. клієнтів: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Виберіть максимальну кількість клієнтів. Не всі слоти мають бути зайняті STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} компані{P я ї й} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Максимум компаній: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Обмежує кількість компаній на сервері STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} спостерігач{P "" і ів} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Максимум глядачів: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Обмежує кількість глядачів на сервері STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Мова: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Інші гравці будуть знати якою мовою спілкуються на сервері STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Введіть назву мережевої гри # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Будь-яка STR_NETWORK_LANG_ENGLISH :Англійська STR_NETWORK_LANG_GERMAN :Німецька STR_NETWORK_LANG_FRENCH :Французька STR_NETWORK_LANG_BRAZILIAN :Бразильська STR_NETWORK_LANG_BULGARIAN :Болгарська STR_NETWORK_LANG_CHINESE :Китайська STR_NETWORK_LANG_CZECH :Чеська STR_NETWORK_LANG_DANISH :Данська STR_NETWORK_LANG_DUTCH :Нідерландська STR_NETWORK_LANG_ESPERANTO :Есперанто STR_NETWORK_LANG_FINNISH :Фінська STR_NETWORK_LANG_HUNGARIAN :Угорська STR_NETWORK_LANG_ICELANDIC :Ісландська STR_NETWORK_LANG_ITALIAN :Італійська STR_NETWORK_LANG_JAPANESE :Японська STR_NETWORK_LANG_KOREAN :Корейська STR_NETWORK_LANG_LITHUANIAN :Литовська STR_NETWORK_LANG_NORWEGIAN :Норвезька STR_NETWORK_LANG_POLISH :Польська STR_NETWORK_LANG_PORTUGUESE :Португальська STR_NETWORK_LANG_ROMANIAN :Румунська STR_NETWORK_LANG_RUSSIAN :Російська STR_NETWORK_LANG_SLOVAK :Словацька STR_NETWORK_LANG_SLOVENIAN :Словенська STR_NETWORK_LANG_SPANISH :Іспанська STR_NETWORK_LANG_SWEDISH :Шведська STR_NETWORK_LANG_TURKISH :Турецька STR_NETWORK_LANG_UKRAINIAN :Українська STR_NETWORK_LANG_AFRIKAANS :Афрікаанс STR_NETWORK_LANG_CROATIAN :Хорватська STR_NETWORK_LANG_CATALAN :Каталонська STR_NETWORK_LANG_ESTONIAN :Естонська STR_NETWORK_LANG_GALICIAN :Галісійська STR_NETWORK_LANG_GREEK :Грецька STR_NETWORK_LANG_LATVIAN :Латвійська ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Мережева гра - кімната STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Підготовка до з'єднання: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Список всіх компаній присутніх у цій грі. Ви можете як приєднатись до компанії так і створити нову, якщо є вільне місце STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}Інформація про компанію STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Назва компанії: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Засновано: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Вартість компанії: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Поточний баланс: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Прибуток торік: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Продуктивність: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Транспорт: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Станцій: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Гравців: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Нова компанія STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Створити нову компанію STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Гра глядачем STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Спостерігати за грою як глядач STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Приєднатись до компанії STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Допомогти керувати цією компанією # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}З'єднання... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) З'єднання... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Авторизація... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Очікування... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Завантаження карти... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Обробка даних... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Реєстрація... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Запит інформації про гру... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Запит інформації про компанію... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} клієнт{P "" и ів} перед вами STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} завантажено STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} вже завантажено STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Роз'єднання STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сервер захищено паролем. Введіть пароль STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компанія захищена паролем. Введіть пароль # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Список клієнтів STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Спостерігати STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Нова компанія # Network client list STR_NETWORK_CLIENTLIST_KICK :Відключити гравця STR_NETWORK_CLIENTLIST_BAN :Бан STR_NETWORK_CLIENTLIST_GIVE_MONEY :Дати грошей STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Повідомлення всім STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Повідомлення компанії STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Приватне повідомлення STR_NETWORK_SERVER :Сервер STR_NETWORK_CLIENT :Клієнт STR_NETWORK_SPECTATORS :Спостерігачі STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Введіть суму грошей, яку Ви хочете віддати # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не запам'ятовувати введений пароль STR_COMPANY_PASSWORD_OK :{BLACK}Дати компанії новий пароль STR_COMPANY_PASSWORD_CAPTION :{WHITE}Пароль компанії STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Використовувати як стандартний STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Використовувати цей пароль для нових компаній # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Приєднатись STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Приєднатись і грати за цю компанію STR_COMPANY_VIEW_PASSWORD :{BLACK}Пароль STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Пароль захищає вашу компанію від приєднання інших гравців STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Встановлення паролю # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Відправити STR_NETWORK_CHAT_COMPANY_CAPTION :[Команда] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Приватне] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Всім] : STR_NETWORK_CHAT_COMPANY :[Команда] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Команда] до {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Приватно] {STRING}:{WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Приватно] до {STRING}:{WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Всім] {STRING}:{WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Введіть текст для мережевого чату # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Не знайдено мережевого пристрою або скомпільовано без ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Не знайдено жодної мережевої гри STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Сервер не відповів на запит STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Не можна з'єднатись внаслідок неспівпадання NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Помилка синхронізації з мережевою грою STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}З'єднання втрачено STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Неможливо завантажити гру STR_NETWORK_ERROR_SERVER_START :{WHITE}Неможливо запустити сервер STR_NETWORK_ERROR_CLIENT_START :{WHITE}Неможливо з'єднатися STR_NETWORK_ERROR_TIMEOUT :{WHITE}Тайм-аут з'єднання #{NUM} STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Помилка протоколу - з'єднання розірвано STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Версія клієнта не співпадає з версією сервера STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Пароль невірний STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Сервер переповнений STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Вас відключено від цього серверу STR_NETWORK_ERROR_KICKED :{WHITE}Вас відключено від гри STR_NETWORK_ERROR_CHEATER :{WHITE}На цьому сервері грати нечесно не можна STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Ви посилали забагато команд серверу STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Ви занадто довго вводили пароль STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ви дуже довго приєднувалися STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Ви дуже довго завантажували мапу STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Ви дуже довго приєднувалися до серверу ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :фатальна помилка STR_NETWORK_ERROR_CLIENT_DESYNC :помилка синхронізації STR_NETWORK_ERROR_CLIENT_SAVEGAME :неможливо завантажити карту STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :з'єднання втрачено STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :помилка протоколу STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Неспівпадання NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :відмова авторизації STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :отримано невірний або неочікуваний пакет STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :невірна версія гри STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :таке ім'я вже є STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :пароль невірний STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :неправильний company-id в DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :відключено сервером від гри STR_NETWORK_ERROR_CLIENT_CHEATER :спроба грати нечесно STR_NETWORK_ERROR_CLIENT_SERVER_FULL :сервер переповнений STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :посилав забагато команд STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :пароль не отримано за відведений час STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :час вийшов STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :мапа дуже довго завантажувалась STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :мапа дуже довго оброблювалась ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Можлива втрата з'єднання STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}На протязі {NUM} секунд{P и "" ""} не надійшло жодної інформації від сервера # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Гра призупинена ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Гра ще призупинена ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Гра ще призупинена ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Гра ще призупинена ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Гра ще на паузі ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Гра знята з паузи ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :кількість гравців STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :приєднання клієнтів STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :вручну STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :ігровий скрипт ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :виходжу... STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} приєднався до гри STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :{G=m}*** {STRING} приєднався до гри (Клієнт #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} приєднався до компанії №{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} став спостерігачем STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} заснував нову компанію (№{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} покинув гру ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} змінив(-ла) своє ім'я на {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} дав Вашій компанії {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Ви дали {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Сервер закрив сеанс STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Перезавантаження сервера...{}Зачекайте... # Content downloading window STR_CONTENT_TITLE :{WHITE}Завантаження вмісту STR_CONTENT_TYPE_CAPTION :{BLACK}Тип STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Тип вмісту STR_CONTENT_NAME_CAPTION :{BLACK}Назва STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Назва вмісту STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Клікніть на рядку, щоб побачити деталі{}Клікніть позначку, щоб обрати його для завантаження STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Вибрати всі STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Позначити для завантаження весь вміст STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Вибрати оновлення STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Позначити весь вміст, що є оновленням існуючого, для завантаження STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Зняти позначки STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Не завантажувати нічого STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Ви виходите з OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Фільтр за назвою: STR_CONTENT_OPEN_URL :{BLACK}Відвідати вебсайт STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Відвітати вебсайт цього контенту STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Завантажити STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Почати завантаження обраного вмісту STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Загальний розмір завантажень: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}Вміст - інформація STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Ви не обрали це для завантаження STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Ви обрали це для завантаження STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Ця залежність була обрана для завантаження STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Ви вже маєте це STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Цей вміст невідомий і не може бути завантажений до OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Це заміна існуючої {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Назва: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Версія: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Опис: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Тип: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Розмір завантаження: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Обрано, тому що: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Залежності: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Позначки: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD створений без підтримки "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... не можу завантажити вміст! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Базова графіка STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :Бібліотека AI STR_CONTENT_TYPE_SCENARIO :Сценарій STR_CONTENT_TYPE_HEIGHTMAP :Карта висот STR_CONTENT_TYPE_BASE_SOUNDS :Основні звуки STR_CONTENT_TYPE_BASE_MUSIC :Основна музика STR_CONTENT_TYPE_GAME_SCRIPT :Ігровий скрипт STR_CONTENT_TYPE_GS_LIBRARY :Бібліотека GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Завантажую вміст... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Запитую файли... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Завантажується {STRING} ({NUM} з {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Завантаження закінчене STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} з {BYTES} завантажено ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Не можна приєднатись до серверу вмісту... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Не вдалося завантажити... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... перервався зв'язок STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... файл не відкритий для запису STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Не можна розпакувати завантажений файл STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Відстуня графіка STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD потребує пакет графіки для гри. Завантажити його? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Так, завантажити графіку STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ні, вийти з OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Опції прозорості STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Переключити прозорість для знаків станцій. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Переключити прозорість для дерев. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Переключити прозорість для будинків. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Переключити прозорість для промисловості. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Переключити прозорість для споруд, таких як станції, депо тощо. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Переключити прозорість для мостів. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Переключити прозорість для споруд, таких як маяки та антени. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Переключити прозорість для ЛЕП. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Змінити прозорість індикаторів завантаження. Утримуйте Ctrl, щоб заблокувати STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Зробити об'єкти невидимими, а не прозорими # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Підсвічення зони покриття STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ні STR_STATION_BUILD_COVERAGE_ON :{BLACK}Так STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Не підсвічувати зону покриття станції STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Підсвічувати зону покриття станції STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Приймає: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Постачає: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Об'єднати станцію STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Побудувати окрему станцію STR_JOIN_WAYPOINT_CAPTION :{WHITE}З'єднати точку маршруту STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Створити окрему точку маршруту # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Будівництво залізниці STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Будівництво електрифікованої залізниці STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Будівництво монорейкової залізниці STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Будівництво магнітної залізниці STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Будувати колію. Ctrl переключає побудову/знесення для будівництва колії. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Будувати колію, використовуючи авторежим. Ctrl переключає побудову/знесення для будівництва колії. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Будувати залізничне депо (для купівлі та обслуговування поїздів). Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Перетворити колію на точку маршруту. Ctrl дозволяє об'єднання точок маршруту. Утримуйте Shift для показу очікуваних витрат STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Будувати станцію. Ctrl дозволяє об'єднання станцій. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати сигнали. Ctrl переключає семафори/світлові сигнали{}Протяжка будує сигнали вздовж прямої ділянки рейок. Ctrl будує сигнали до наступної розв'язки{}Ctrl+клік перемикає показ вікна вибору сигналів. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Будувати міст. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати тунель. Утримуйте Shift для показу витрат на будівництво STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Будувати/демонтувати колію, сигнали, точки маршруту і станції. Утримання Ctrl також демонтує колію з точок маршрутів і станцій STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Модернізувати колію. Утримуйте Shift для показу витрат на модернізацію STR_RAIL_NAME_RAILROAD :Звичайна колія STR_RAIL_NAME_ELRAIL :Електрифікована колія STR_RAIL_NAME_MONORAIL :Монорейкова колія STR_RAIL_NAME_MAGLEV :Магнітна колія # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Орієнтація депо STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Вибір орієнтації депо # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Точка маршруту STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Виберіть тип точки маршруту # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Вибір станції STR_STATION_BUILD_ORIENTATION :{BLACK}Орієнтація STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію залізничної станції STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Кількість колій STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Виберіть кількість колій залізничної станції STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Довжина платформи STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Виберіть довжину залізничної станції STR_STATION_BUILD_DRAG_DROP :{BLACK}Довільно STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Будувати станцію за методом "перетягнути й відпустити" STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Виберіть тип станції для відображення STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Виберіть тип станції для забудови STR_STATION_CLASS_DFLT :Звичайна станція STR_STATION_CLASS_WAYP :Пункт # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Вибір сигналів STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Звичайний сигнал (семафор){}Найпростіший тип сигналу, який дозволяє перебувати у сигнальному блоці тільки одному поїзду. Сигнали необхідні для того, щоб уникнути зіткнень поїздів на залізницях, де більше одного поїзда STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Вхідний сигнал (семафор){}Зелений, доки один або більше зелених вихідних сигналів з наступної блок-ділянки. Інакше червоний STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Вихідний сигнал (семафор){}Працює як звичайний сигнал, але необхідний для нормальної роботи вхідного або комбінованого пре-сигналів STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Комбінований сигнал (семафор){}Комбінований сигнал працює як об'єднаний вхідний-вихідний сигнал. Це дозволяє будувати великі "дерева" пре-сигналів STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Розширений сигнал (семафор){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Розширені сигнали дозволяють проїжджати їх з обох сторін STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Односторонній розширений сигнал (семафор){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Односторонні розширені сигнали не дозволяють вїжджати з іншої сторони STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Звичайний сигнал (електричний){}Найпростіший тип сигналу, який дозволяє перебувати у сигнальному блоці тільки одному поїзду. Сигнали необхідні для того, щоб уникнути зіткнень поїздів на залізницях, де більше одного поїзда STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Вхідний сигнал (електричний){}Зелений, доки один або більше зелених вихідних сигналів з наступної блок-дільниці. Інакше червоний STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Вихідний сигнал (електричний){}Працює як звичайний сигнал, але необхідний для нормальної роботи вхідного або комбінованого пре-сигналів STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Комбінований сигнал (електричний){}Комбінований сигнал працює як об'єднаний вхідний-вихідний сигнал. Це дозволяє будувати великі "дерева" пре-сигналів STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Розширений сигнал (електричний){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Розширені сигнали дозволяють проїжджати їх з обох сторін STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Односторонній розширений сигнал (електричний){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Односторонні розширені сигнали не дозволяють вїжджати з іншої сторони STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Заміна сигналів{}Коли обрано, натискання на існуючому сигналі замінить його на обраний тип і варіант сигналу, CTRL+натискання замінить існуючий варіант. Утримуйте Shift для показу витрат на заміну STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Частота сигналів при перетаскуванні STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Зменшити частоту сигналів STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Збільшити частоту сигналів # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Виберіть міст STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Виберіть дорожній міст STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Вибір мосту - натисніть на міст, який бажаєте збудувати STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Підвісний сталевий STR_BRIDGE_NAME_GIRDER_STEEL :Балочний сталевий STR_BRIDGE_NAME_CANTILEVER_STEEL :Каркасний сталевий STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Підвісний бетонний STR_BRIDGE_NAME_WOODEN :Дерев'яний STR_BRIDGE_NAME_CONCRETE :Бетонний STR_BRIDGE_NAME_TUBULAR_STEEL :Трубчастий сталевий STR_BRIDGE_TUBULAR_SILICON :Трубчастий кремнієвий # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Автомобільне будівництво STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Трамвайне будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Будувати дорогу. Ctrl переключає побудову/знесення для будівництва доріг. Утримуйте Shift для показу витрат STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Будувати трамвайну колію. Ctrl переключає побудову/знесення для будівництва трамвайної колії. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Будувати дорогу в режимі Автобудування. Ctrl переключає побудову/знесення для будівництва доріг. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Будувати трамвайну лінію в режимі Автобудування. Ctrl переключає побудову/знесення для будівництва трамвайної колії. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Будувати автомобільне депо (для бідівництва та обслуговування автомобілів). Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Будувати трамвайне депо (для будівництва та обслуговування трамваїв). Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Будувати автобусну зупинку. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Будувати пасажирську трамвайну станцію. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Будувати вантажний майданчик. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Побудувати товарну трамвайну станцію. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на побудову STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Вкл./відкл. односторонні дороги STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Будувати міст. Утримуйте Shift для показу витрат на придбання STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Побудувати трамвайний міст. Утримуйте Shift для показу витрат на придбання STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Будувати тунель. Утримуйте Shift для показу витрат на придбання STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Побудувати трамвайний тунель. Утримуйте Shift для показу витрат на придбання STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Будувати/зруйнувати дорогу STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Будувати/демонтувати колію # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Орієнтація депо STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Виберіть орієнтацію депо STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Орієнтація трамвайного депо STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Виберіть орієнтацію трамвайного депо # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Орієнтація зупинки STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію зупинки STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Орієнтація станції STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію вантажної станції STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Орієнтація пасажирської трамвайної станції STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію пасажирської трамвайної станції STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Орієнтація вантажної трамвайної станції STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію вантажної трамвайної станції # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Судноплавне будівництво STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Водні шляхи STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Будувати канали. Утримуйте Shift для показу витрат на будівництво STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Будувати шлюз. Утримуйте Shift для показу витрат на будівництво STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Будувати корабельні доки (для будівництва та обслуговування кораблів). Утримуйте Shift для показу витрат на будівництво STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Будувати док. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Розмістити бакен, який можна використовувати як точку маршруту. Утримуйте Shift для показу витрат на розміщення STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Побудувати акведук. Утримуйте Shift для показу витрат на будівництво STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Позначити, де буде вода.{}Робити канал, поки не натиснений Ctrl на рівні моря, - тоді будуть затоплені околиці STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Прокласти річки # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Орієнтація депо STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Виберіть орієнтацію корабельного депо # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Порт # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Аеропорти STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Будувати аеропорт. Ctrl дозволяє об'єднувати станції. Утримуйте Shift для показу витрат на будівництво # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Вибір аеропорту STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Виберіть розмір/тип аеропорту STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Клас аеропорту STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Розміщення {NUM} STR_AIRPORT_SMALL :Малий STR_AIRPORT_CITY :Міський STR_AIRPORT_METRO :Столичний STR_AIRPORT_INTERNATIONAL :Міжнародний STR_AIRPORT_COMMUTER :Приміський STR_AIRPORT_INTERCONTINENTAL :Міжконтинентальний STR_AIRPORT_HELIPORT :Гелікопорт STR_AIRPORT_HELIDEPOT :Депо STR_AIRPORT_HELISTATION :Гелікоптерна станція STR_AIRPORT_CLASS_SMALL :Малі аеропорти STR_AIRPORT_CLASS_LARGE :Великі аеропорти STR_AIRPORT_CLASS_HUB :Вузлові аеропорти STR_AIRPORT_CLASS_HELIPORTS :Геліпорт STR_STATION_BUILD_NOISE :{BLACK}Рівень шуму: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Ландшафт STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Опустити край ділянки землі. Протягування мишою опускає вибраний край і вирівнює вибрану ділянку до його нової висоти. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу очікуваних витрат STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Підняти край ділянки землі. Протягування мишою піднімає вибраний край і вирівнює вибрану ділянку до його нової висоти. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу очікуваних витрат STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Вирівняти ділянку землі до висоти першого обраного краю. Утримуйте Ctrl для виділення клітинок по діагоналі, або Shift - для показу очікуваних витрат STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Купити ділянку для використання у майбутньому. Утримуйте Shift для показу вартості ділянки # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Вибір об'єкта STR_OBJECT_BUILD_TOOLTIP :{BLACK}Виберіть об'єкт для побудови. Утримуйте Shift для показу витрат на будівництво STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Вибрати тип об'єкту для будівництва STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Попередній перегляд об'єкта STR_OBJECT_BUILD_SIZE :{BLACK}Розмір: {GOLD}{NUM} x {NUM} клітинок STR_OBJECT_CLASS_LTHS :Маяки STR_OBJECT_CLASS_TRNS :Ретранслятори # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Дерева STR_PLANT_TREE_TOOLTIP :{BLACK}Оберіть тип дерева для посадки. Клітинки, які вже містять дерева, доповнюються новими деревами різного типу незалежно від обраного. STR_TREES_RANDOM_TYPE :{BLACK}Дерева випадкового типу STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Садити дерева випадкового типу. Утримуйте Shift для показу витрат на висаджування STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Випадкові дерева STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Випадкове насадження дерев по всьому ландшафту # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Створити ландшафт STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Розміщення кам'яних ділянок STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Позначити територію пустелі.{}Натисніть і утримуйте CTRL, щоб відмінити STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Збільшити область ділянки для підняття/опускання STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Зменшити область ділянки для підняття/опускання STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Створити випадкову ділянку STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Створити новий сценарій STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Очистити ландшафт STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Видалити всю власність компанії з карти STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Очистити ландшафт STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ви впевнені, що хочете видалити всю власність компанії? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Створення міст STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Нове місто STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Заснувати нове місто. Утримуйте Shift для показу витрат на заснування STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Випадкове місто STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Заснувати місто у випадковому місці STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Багато різних міст STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Випадково розташувати міста по карті STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Назва міста: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Введіть назву міста STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Натисніть для введення назви міста STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Випадкова назва STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Створити нову випадкову назву STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Розмір міста: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Мале STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Середнє STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Велике STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Довільне STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Вибір розміру міста STR_FOUND_TOWN_CITY :{BLACK}Мегаполіс STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Мегаполіси ростуть швидше за звичайні міста{}Вони більші при заснуванні, якщо вказано у настройках STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Тип сітки міських доріг: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Оберіть тип сітки доріг для цього міста: STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Стандартний STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Покращений STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Сітка 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Сітка 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Випадковий # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Нове підприємство STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Виберіть необхідне підприємство STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Багато різної промисловості STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Випадково розташувати підприємства по карті STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Вартість: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Огляд STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Будувати STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Фінансувати # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ланцюг вантажних перевезень для {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ланцюг вантажних перевезень для {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Виробники STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Споживачі STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Будинки STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Натисніть на підприємство аби побачити його постачальників та покупців STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Натисніть на вантаж аби побачити його постачальників та покупців STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Показати ланцюг STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Показати виробників та споживачів STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Приєднати до мінікарти STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Ви також можете вибирати виробництво на мінікарті STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Вибір типу вантажів STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Оберіть тип вантажу для відображення STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Вибір виробництва STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Оберіть виробництва для відображення # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Інформація про ділянку STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Вартість очистки: {LTBLUE}неможливо STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Вартість очистки: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Дохід при очистці: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :немає STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Власник: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Власник дороги: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Власник трамвайної дороги: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Власник залізниці: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Місцева влада: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Немає STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координати: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Рік випуску: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас станції: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станції: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Клас аеропорта: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Назва аеропорта: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Назва ділянки аеропорту: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Приймає: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ліміт швидкості залізниці: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Каміння STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Нерівна земля STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Пустир STR_LAI_CLEAR_DESCRIPTION_GRASS :Трава STR_LAI_CLEAR_DESCRIPTION_FIELDS :Поле STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Засніжена земля STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустеля STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} з блок-сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} з пресигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} з вихідними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} з комбосигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} з маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} з односторонніми маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} з блок-сигналами і пресигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} з блок-сигналами і вихідними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} з блок-сигналами і комбосигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} з блок-сигналами та маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} з блок-сигналами та одност. маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} з пресигналами і вихідними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} з пресигналами і комбосигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} з пресигналами і маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} з пресигналами і одност. маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} з вихідними сигналами та комбосигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} з вихідними та маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} з вихідними та одност. маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} з комбосигналами і маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} з комбосигналами та одност. маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} з маршрутними та одност. маршрутними сигналами STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} залізничне депо STR_LAI_ROAD_DESCRIPTION_ROAD :Дорога STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Дорога з вуличними ліхтарями STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Дорога з насадженнями STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Автомобільне депо STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Залізничний переїзд STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Трамвайна дорога # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (будується) STR_LAI_TREE_NAME_TREES :Дерева STR_LAI_TREE_NAME_RAINFOREST :Джунглі STR_LAI_TREE_NAME_CACTUS_PLANTS :Кактуси STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Залізнична станція STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Ангар STR_LAI_STATION_DESCRIPTION_AIRPORT :Аеропорт STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Вантажна станція STR_LAI_STATION_DESCRIPTION_BUS_STATION :Зупинка STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Порт STR_LAI_STATION_DESCRIPTION_BUOY :Бакен STR_LAI_STATION_DESCRIPTION_WAYPOINT :Пункт STR_LAI_WATER_DESCRIPTION_WATER :Вода STR_LAI_WATER_DESCRIPTION_CANAL :Канал STR_LAI_WATER_DESCRIPTION_LOCK :Шлюз STR_LAI_WATER_DESCRIPTION_RIVER :Річка STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Берег STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Корабельне депо # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Залізничний тунель STR_LAI_TUNNEL_DESCRIPTION_ROAD :Автомобільний тунель STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Сталевий підвісний залізничний міст STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Сталевий балочний залізничний міст STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Сталевий каркасний залізничний міст STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Залізобетонний підвісний залізничний міст STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Дерев'яний залізничний міст STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Бетонний залізничний міст STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Трубчастий залізничний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Сталевий підвісний автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Сталевий балочний автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Сталевий каркасний автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Залізобетонний підвісний автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Дерев'яний автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Бетонний автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Трубчастий автомобільний міст STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Акведук STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Ретранслятор STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Маяк STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Головний офіс компанії STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ця ділянка - власність компанії # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Про OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторське право {COPYRIGHT} 1995 Кріс Сойєр, Всі права захищені STR_ABOUT_VERSION :{BLACK}OpenTTD версія {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 команда OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру STR_SAVELOAD_LOAD_CAPTION :{WHITE}Завантажити гру STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Зберегти сценарій STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Завантажити сценарій STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Завантажити ландшафт STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Зберегти карту висот STR_SAVELOAD_HOME_BUTTON :{BLACK}Натисніть для переходу до поточного каталогу збереження/завантаження STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} вільно STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Список пристроїв, каталогів і збережених файлів гри STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Поточне вибране ім'я файлу для збереження гри STR_SAVELOAD_DELETE_BUTTON :{BLACK}Видалити STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Стерти вибрану збережену гру STR_SAVELOAD_SAVE_BUTTON :{BLACK}Зберегти STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Зберегти поточну гру, використовуючи вибране ім'я файлу STR_SAVELOAD_LOAD_BUTTON :{BLACK}Завантажити STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Завантажити обрану гру STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Деталі гри STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Інформація відсутня STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Введіть назву файла збереженої гри # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Створення світу STR_MAPGEN_MAPSIZE :{BLACK}Розмір карти: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Оберіть розмір карти в клітинках. Кількість доступних клітинок буде трохи меншою STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Міста: STR_MAPGEN_DATE :{BLACK}Дата: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Кількість виробництв: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Висота лінії снігу: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Підвищити лінію снігу STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Понизити лінію снігу STR_MAPGEN_RANDOM_SEED :{BLACK}Випадкове число: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Клік для вводу значення STR_MAPGEN_RANDOM :{BLACK}Випадково STR_MAPGEN_RANDOM_HELP :{BLACK}Змінити початкове значення для генератора STR_MAPGEN_LAND_GENERATOR :{BLACK}Ландшафт: STR_MAPGEN_TREE_PLACER :{BLACK}Насадження дерев: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип ландшафту: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Рівень моря: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ріки: STR_MAPGEN_SMOOTHNESS :{BLACK}Гладкість: STR_MAPGEN_VARIETY :{BLACK}Розподіл різноманітності: STR_MAPGEN_GENERATE :{WHITE}Генерувати # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Краї карти: STR_MAPGEN_NORTHWEST :{BLACK}північно-західний STR_MAPGEN_NORTHEAST :{BLACK}північно-східний STR_MAPGEN_SOUTHEAST :{BLACK}південно-східний STR_MAPGEN_SOUTHWEST :{BLACK}південно-західний STR_MAPGEN_BORDER_FREEFORM :{BLACK}вільний формат STR_MAPGEN_BORDER_WATER :{BLACK}вода STR_MAPGEN_BORDER_RANDOM :{BLACK}довільно STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}довільно STR_MAPGEN_BORDER_MANUAL :{BLACK}вручну STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Поворот рельєфу STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назва рельєфу: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Розмір: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Введіть випадкове число STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Змінити висоту лінії снігу STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Змінити рік початку гри # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Тип сценарію STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Рівнина STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Генерувати рівнину STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Випадково STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Висота рівня моря STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Підняти рівень рівної землі на 1 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Опустити рівень рівної землі на 1 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Змінити висоту рівня рівної землі # Map generation progress STR_GENERATION_WORLD :{WHITE}Генерація світу... STR_GENERATION_ABORT :{BLACK}Перервати STR_GENERATION_ABORT_CAPTION :{WHITE}Перервати генерацію світу STR_GENERATION_ABORT_MESSAGE :{YELLOW}Ви дійсно хочете перервати генерацію світу STR_GENERATION_PROGRESS :{WHITE}{NUM}% завершено STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Створення світу STR_GENERATION_RIVER_GENERATION :{BLACK}Генерація річок STR_GENERATION_TREE_GENERATION :{BLACK}Насадження дерев STR_GENERATION_OBJECT_GENERATION :{BLACK}Генерація нерухомості STR_GENERATION_CLEARING_TILES :{BLACK}Розкидати каміння STR_GENERATION_SETTINGUP_GAME :{BLACK}Налаштування гри STR_GENERATION_PREPARING_TILELOOP :{BLACK}Виконуємо цикл STR_GENERATION_PREPARING_SCRIPT :{BLACK}Виконується скрипт STR_GENERATION_PREPARING_GAME :{BLACK}Генерується гра # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Налаштування нової графіки STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Детальна інформація про NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Активні файли NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Неактивні файли NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Обрати набір: STR_NEWGRF_FILTER_TITLE :{ORANGE}Фільтр за строкою: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Завантажити обрані настройки STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Записати настройки STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Записати поточний список як настройки STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Введіть назву настройок STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Видалити настройки STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Видалити обрані настройки STR_NEWGRF_SETTINGS_ADD :{BLACK}Додати STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Додати вибраний NewGRF файл до Вашої конфігурації STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Пересканувати файли STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Оновити список доступних NewGRF файлів STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Видалити STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Видалити обрані файли NewGRF зі списку STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Вище STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Перемістити вибрані файли вверх по списку STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Нижче STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Перемістити вибрані файли вниз по списку STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Список встановлених файлів NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Встановлення параметрів STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Показати параметри STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Переключити палітру STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Переключити палітру обраного NewGRF.{}Зробіть це, якщо графіка з цього NewGRF виглядає рожевою у грі STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Застосувати зміни STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Знайти відсутній вміст в Інтернет STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Перевірити, чи можна знайти відсутній вміст в Інтернет STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Ім'я файлу: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Версія: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Мінімальна підтримувана версія: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5сума: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Палітра: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Параметри: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Немає доступної інформації STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Таких файлів не знайдено STR_NEWGRF_SETTINGS_DISABLED :{RED}Вимкнено STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Несумісне з поточною версією OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Змінити параметри NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Закрити STR_NEWGRF_PARAMETERS_RESET :{BLACK}Очистити STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Встановити всім параметрам їх стандартні значення STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Параметр {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Кількість параметрів: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Перегляд - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Батько (parent) STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Перегляд об'єкту з погляду батька STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} в {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Об'єкт STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Тип колії STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр змінної NewGRF 60+x (шістнадцятковий) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Вирівнювання спрайту {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Наступний спрайт STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Йти до наступного нормального спрайту, пропускаючи будь-які псевдоспрайти, спрайти зі зміненими кольорами та шрифтові спрайти, а також обгортки (wrap) навколо на початку STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Йти до спрайту STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Йти до заданого спрайту. Якщо він не є нормальним, йти до наступного нормального STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Попередній спрайт STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Повернутися до попереднього нормального спрайту, пропускаючи будь-які псевдоспрайти, спрайти зі зміненими кольорами та шрифтові спрайти, а також обгортки (wrap) навколо на початку STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Відображення обраного спрайту (вирівнювання ігнорується) STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Рухайте спрайт навколо, змінюючи його зміщення за X та Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Зміщення за X: {NUM}, Зміщення за Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Вибрати спрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Оберіть будь-який спрайт на екрані STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Йти до спрайту # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Попередження: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Помилка: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Збій: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Фатальна помилка NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} не буде працювати з версією TTDPatch, вказаною OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} для {STRING}-версії TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} розроблено для {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Помилковий параметр для {1:STRING}: параметр {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} має бути завантажений до {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} має бути завантажений після {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} потребує версію OpenTTD не нижче {STRING} STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-файл, для якого це призначалось перекласти STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Завантажено забагато NewGRF-файлів STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Завантаження {1:STRING} як статичного NewGRF з {STRING} може викликати десинхронізацію STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Неочікуваний спрайт (спрайт {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Невідомий Action 0 параметр {4:HEX} (спрайт {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Спроба використання некоректного ID (спрайт {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} містить зіпсований спрайт. Усі зіпсовані спрайти будуть показані як червоний знак питання (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Містить декілька записів Action 8 (спрайт {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Вихід за границю псевдо-спрайта при читанні (спрайт {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}У базовому наборі графіки, що зараз використовується не вистачає спрайтів.{}Будь-ласка оновіть базовий набір графіки STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}В наборі графіки, який використовується на даний момент відсутній ряд спрайтів.{}Будь ласка, поновіть базовий набір графіки.{}Оскільки ви граєте у {YELLOW} тестову версію OpenTTD{WHITE}, вам також може знадобитися {YELLOW}тестовий набір базової графіки{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Недоступні необхідні ресурси GRF (спрайт {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} був вимкнений {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Некоректний або невідомий формат розміщення спрайтів (спрайт {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Обережно! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Ви хочете зробити зміни у вже запущеній грі. Це може призвести до аварійної відмови OpenTTD. Не повідомляйте про такі помилки розробникам.{}Ви точно впевнені, що хочете це зробити? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не можу додати файл: однакові GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Відповідного GRF-файлу не знайдено (завантажено сумісний файл) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Неможливо додати файл: перевищено ліміт файлів NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Для відсутніх GRF-файлів завантажені сумісні STR_NEWGRF_DISABLED_WARNING :{WHITE}Відсутні GRF-файли деактивовані STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Відсутній GRF файл(и) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Зняття з паузи може привести до аварійної відмови OpenTTD. Не рапортуйте про наступні відмови.{}Ви дійсно хочете зняти з паузи? # NewGRF status STR_NEWGRF_LIST_NONE :Немає STR_NEWGRF_LIST_ALL_FOUND :Є всі файли STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Знайдено сумісні файли STR_NEWGRF_LIST_MISSING :{RED}Відсутні файли # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Поведінка NewGRF '{0:STRING}' може спричинити розсинхронізацію та/або аварійне завершення STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Це змінило стан локомотиву '{1:ENGINE}', коли він не у депо STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Це змінило довжину транспорту для '{1:ENGINE}', якщо він не в депо STR_BROKEN_VEHICLE_LENGTH :{WHITE}Потяг '{VEHICLE}', який належить '{COMPANY}', має неправильну довжину. Можливо, це спричинено проблемами з NewGRFs. Гра може розсинхронізуватись або аварійно завершитись STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' надає невірну інформацію STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Інформація про вантаж/переобладнання для '{1:ENGINE}' відрізняється від списку покупки після побудови. Це може спричинити невідповідності під час автооновлення/заміни STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' спричинив нескінченний цикл у виклику виробництва STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Виклик {1:HEX} повернув невідомий/неправильний результат {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<невідомий вантаж> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <невідомого вантажу> STR_NEWGRF_INVALID_ENGINE :<невірна модель транспорту> STR_NEWGRF_INVALID_INDUSTRYTYPE :<невірне виробництво> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Шукаю NewGRF'и STR_NEWGRF_SCAN_MESSAGE :{BLACK}Шукаю NewGRF'и. Якщо їх багато, це може зайняти деякий час... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF проскановано з {NUM} NewGRF STR_NEWGRF_SCAN_ARCHIVES :Шукаю архіви # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Список позначень - {COMMA} Позначен{P ня ня ь} STR_SIGN_LIST_MATCH_CASE :{BLACK}Враховуючи регістр STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Перемкнути регістр при порівнянні назви позначок з фільтром # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Редагування напису STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Наступне позначення STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Попереднє позначення STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введіть назву знака # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Міста STR_TOWN_DIRECTORY_NONE :{ORANGE}- немає - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Назви міст - натисніть на назву, щоб показати місто у центрі екрану. Утримання Ctrl відкриває нове вікно з видом на місто STR_TOWN_POPULATION :{BLACK}Населення світу: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (місто) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Населення: {ORANGE}{COMMA}{BLACK} Будинки: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пасажирів за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Пошти за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Вантаж, потрібний для зростання міста: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} потрібно STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} потрібно взимку STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} доставлено STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (потрібно ще) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (доставлено) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Місто зростає кожен {ORANGE}{COMMA}{BLACK} день STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Місто зростає кожен {ORANGE}{COMMA}{BLACK} день (профінансовано) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Місто {RED}не{BLACK} зростає STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Ліміт шуму в місті: {ORANGE}{COMMA}{BLACK} макс: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Показати місто у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на місто STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Місцева влада STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Інформація про місцеву владу STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Змінити назву міста STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Розширити STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Збільшити розмір міста STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Видалити STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Видалити місто повністю STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Перейменувати # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} - місцева влада STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Рейтинги компаній: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Доступні дії: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Що можна зробити в цьому місті - виберіть пункт для детальної інформації STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Виконати STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Виконує вибрану дію зі списку STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Мала рекламна кампанія STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Середня рекламна кампанія STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Велика рекламна кампанія STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Провести реконструкцію доріг STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Збудувати монумент власника компанії STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Фінансувати нові будівлі STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Купити єдине транспортне право STR_LOCAL_AUTHORITY_ACTION_BRIBE :Підкупити місцеву владу STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Провести малу локальну рекламну кампанію, щоб залучити більше пасажирів і вантажу до послуг вашої компанії.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Провести середню локальну рекламну кампанію, щоб залучити більше пасажирів і вантажу до послуг вашої компанії.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Провести велику локальну рекламну кампанію, щоб залучити більше пасажирів і вантажу до послуг вашої компанії.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Фінансувати реконструкцію міських доріг. Призведе до значного погіршення руху на 6 місяців.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Збудувати монумент на честь вашої компанії.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Фінансувати будівництво нових офісів у місті.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Купити ексклюзивне транспортне право у місті на 1 рік. Міська влада дозволить використовувати лише станції вашої компанії.{}Вартість: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Підкупити місцеву владу для збільшення вашого рейтингу, при викритті загрожує суворим покаранням.{}Вартість: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Цілі STR_GOALS_GLOBAL_TITLE :{BLACK}Глобальні цілі: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- нема - STR_GOALS_COMPANY_TITLE :{BLACK}Цілі компанії: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Клік мишкою на цілі (меті) відобразить по центру виробництва/місто/клітинку у головному вікні. Ctrl+клік відкриє міні-вікно # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Питання STR_GOAL_QUESTION_CAPTION_INFORMATION :Інформація STR_GOAL_QUESTION_CAPTION_WARNING :Попередження STR_GOAL_QUESTION_CAPTION_ERROR :Помилка ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Відмінити STR_GOAL_QUESTION_BUTTON_OK :Гаразд STR_GOAL_QUESTION_BUTTON_NO :Ні STR_GOAL_QUESTION_BUTTON_YES :Так STR_GOAL_QUESTION_BUTTON_DECLINE :Відхилити STR_GOAL_QUESTION_BUTTON_ACCEPT :Прийняти STR_GOAL_QUESTION_BUTTON_IGNORE :Ігнорувати STR_GOAL_QUESTION_BUTTON_RETRY :Спробувати ще раз STR_GOAL_QUESTION_BUTTON_PREVIOUS :Попереднє STR_GOAL_QUESTION_BUTTON_NEXT :Наступне STR_GOAL_QUESTION_BUTTON_STOP :Стоп STR_GOAL_QUESTION_BUTTON_START :Старт STR_GOAL_QUESTION_BUTTON_GO :Вперед STR_GOAL_QUESTION_BUTTON_CONTINUE :Продовжити STR_GOAL_QUESTION_BUTTON_RESTART :Перезапустити STR_GOAL_QUESTION_BUTTON_POSTPONE :Відкласти STR_GOAL_QUESTION_BUTTON_SURRENDER :Здатися STR_GOAL_QUESTION_BUTTON_CLOSE :Закрити # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Субсидії STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Пропонуються субсидії: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}Перевезення {STRING.r} з {STRING} до {STRING}{YELLOW} ({DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- немає - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Призначені субсидії: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}Перевезення {STRING.r} з {STRING} до {STRING}{YELLOW} ({COMPANY}{YELLOW}, по {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть на субсидії, щоб показати підприємство/місто у центрі екрану. Утримання Ctrl відкриває нове вікно з видом на підприємство/місто # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Назви станцій - натисніть на назву, щоб показати станцію в центрі екрану. Утримання Ctrl відкриває нове вікно з видом на станцію STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте Ctrl для вибору декількох пунктів STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} станці{P я ї й} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- немає - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Вибрати весь транспорт STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Вибрати всі типи вантажів STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Звідси поки що нічого перевозити # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Чекає: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} з {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Приймає STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Показати список приймання вантажів STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Приймає: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ця станція має ексклюзивні права на перевезення. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} отримала ексклюзивні права на перевезення. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показати рейтинг станції STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Місцевий рейтинг транспортної компанії: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :жахливо STR_CARGO_RATING_VERY_POOR :дуже погано STR_CARGO_RATING_POOR :погано STR_CARGO_RATING_MEDIOCRE :посередньо STR_CARGO_RATING_GOOD :добре STR_CARGO_RATING_VERY_GOOD :дуже добре STR_CARGO_RATING_EXCELLENT :відмінно STR_CARGO_RATING_OUTSTANDING :найкраще ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Показати станцію в центрі екрану. Утримання Ctrl відкриє нове вікно з видом на станцію STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Перейменувати станцію STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Показати всі поїзди, які заходять на цю станцію STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Показати всі авто, які заходять на цю станцію STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Показати всі літаки, які залітають на цю станцію STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Показати всі кораблі, які запливають на цю станцію STR_STATION_VIEW_RENAME_STATION_CAPTION :Перейменування станції STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Закрити аеропорт STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Заборонити посадку авіатранспорту на цей аеропорт # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Показати точку маршруту в центрі єкрану. Ctrl+клік відкриє нове вікно у місці розташування точки маршруту STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Перейменувати точку маршруту STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Показати буй в центрі екрану. Ctrl+клік відкриє нове вікно у місці розташування буя STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Перейменувати буй STR_EDIT_WAYPOINT_NAME :{WHITE}Перейменуйте точку маршруту # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} - фінанси {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Витрати/доходи STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Будівництво STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Нова техніка STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Витрати, поїзди STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Витрати, автомобілі STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Витрати, літаки STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Витрати, кораблі STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Утримання власності STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Дохід, поїзди STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Дохід, автомобілі STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Дохід, літаки STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Дохід, кораблі STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Відсотки за позикою STR_FINANCES_SECTION_OTHER :{GOLD}Інше STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Підсумок: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Рахунок STR_FINANCES_LOAN_TITLE :{WHITE}Позика STR_FINANCES_MAX_LOAN :{WHITE}Макс. позика: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Позичити {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Збільшити розмір позики. Ctrl+клік позичає якнайбільше STR_FINANCES_REPAY_BUTTON :{BLACK}Повернути {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Повернути частину позики. Ctrl+клік повертає якнайбільше STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Інфраструктура # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Керівник) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Засновано у: {WHITE}{NUM} році STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Схема кольорів: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Транспорт: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} поїзд{P "" и ів} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} авто STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} літак{P "" и ів} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} кораб{P ель лі лів} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Немає STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Вартість компанії: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% у власності {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Інфраструктура: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} клітин{P ка ки ок} з залізничними коліями STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} клітин{P ка ки ок} з дорогами STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} клітин{P ка ки ок} з водними шляхами STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} клітин{P ка ки ок} станцій STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} аеропорт{P "" и ів} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Нема STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Будувати Офіс STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Побудувати офіс компанії STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Показати Офіс STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Показати офіс компанії STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Перенести Офіс STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перенесення Офісу в інше місце. Коштує 1% від вартості компанії. Утримуйте Shift для показу очікуваних витрат на перенесення STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Деталі STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Переглянути детальну інформацію про інфраструктуру STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Нове обличчя STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Вибрати нове обличчя керівника STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Схема кольорів STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Зміна кольору транспорту компанії STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Назва компанії STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Зміна назви компанії STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Ім'я керівника STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Зміна імені керівника STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Купити 25% акцій компанії STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Продати 25% акцій компанії STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Купити 25% акцій цієї компанії. Утримуйте Shift для показу вартості цих акцій STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Продати 25% акцій цієї компанії. Утримуйте Shift для показу вартості цих акцій STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Назва компанії STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ім'я керівника STR_BUY_COMPANY_MESSAGE :{WHITE}Ми шукаємо нового власника нашої компанії.{}{}Чи бажаєте Ви купити {COMPANY} за {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Інфраструктура {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Залізничні ділянки: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}З сигналами STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Дорожні ділянки: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Автомобільні STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Трамвайні STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Судноплавні ділянки: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Канали STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станції: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Ділянки зі станціями STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Аеропорти STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/рік ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/рік # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Підприємства STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- немає - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% перевезено) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% перевезено) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Назви підприємств - клікніть на назву, щоб показати підприємство у центрі екрану. Утримання Ctrl відкриває нове вікно з видом на підприємство # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Вироблено за місяць: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% перевезено) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Показати підприємство у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на підприємство STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Обсяг виробництва: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}, {STRING.z}{STRING.z} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}, {STRING.z}{STRING.z}, {STRING.z}{STRING.z} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Вантаж чекає на обробку: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Продукція: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Продукція: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Змінити виробництво (кратне 8, до 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Змінити обсяг виробництва (до 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} поїзд{P "" и ів} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} автомобіл{P ь і ів} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} кораб{P ель лі лів} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} літак{P "" и ів} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Поїзди - клікніть на поїзді для детальної інформації STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Авто - натисніть на авто для інформації STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Кораблі - натисніть для інформації STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Літаки - натисніть на літак для інформації STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Прибуток цього року: {CURRENCY_LONG} (торік: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Доступні поїзди STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Доступні автомобілі STR_VEHICLE_LIST_AVAILABLE_SHIPS :Доступні кораблі STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Доступні літаки STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Перелік доступних двигунів для цього типу транспорту STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Редагувати список STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Дати завдання всьому транспорту зі списку STR_VEHICLE_LIST_REPLACE_VEHICLES :Оновлення STR_VEHICLE_LIST_SEND_FOR_SERVICING :Відправити на техогляд STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Відправити до депо STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Відправити в гараж STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Відправити до депо STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Відправити в ангар STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Натисніть для зупинки всіх авто, що у списку STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Натисніть для запуску всього транспорту, що у списку STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Спільні маршрути {COMMA} трансп.засоб{P у iв ів} # Group window STR_GROUP_ALL_TRAINS :Усі поїзди STR_GROUP_ALL_ROAD_VEHICLES :Усі автомобілі STR_GROUP_ALL_SHIPS :Усі кораблі STR_GROUP_ALL_AIRCRAFTS :Усі літаки STR_GROUP_DEFAULT_TRAINS :Незгруповані поїзди STR_GROUP_DEFAULT_ROAD_VEHICLES :Незгруповані автомобілі STR_GROUP_DEFAULT_SHIPS :Незгруповані кораблі STR_GROUP_DEFAULT_AIRCRAFTS :Незгруповані літаки STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Групи - клікніть на групі, щоб побачити список транспорту цієї групи STR_GROUP_CREATE_TOOLTIP :{BLACK}Клікніть, щоб створити групу STR_GROUP_DELETE_TOOLTIP :{BLACK}Стерти вибрану групу STR_GROUP_RENAME_TOOLTIP :{BLACK}Перейменувати вибрану групу STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Клікніть, щоб захистити групу від глобальної автозаміни STR_GROUP_ADD_SHARED_VEHICLE :Додати спільний транспорт STR_GROUP_REMOVE_ALL_VEHICLES :Позбутися всього транспорту STR_GROUP_RENAME_CAPTION :{BLACK}Перейменувати групу # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Новий неелектрифікований поїзд STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Новий електрифікований поїзд STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Новий монорейковий поїзд STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Новий магнітний поїзд STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Нові потяги STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Нові автомобілі STR_BUY_VEHICLE_SHIP_CAPTION :Нові кораблі STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Нові літаки STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Ціна: {GOLD}{CURRENCY_LONG}{BLACK} Вага: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Швидкість: {GOLD}{VELOCITY}{BLACK} Потужність: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Швидкість: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Швидкість в океані: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Швидкість в каналі/річці: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Транспортні витрати: {GOLD}{CURRENCY_LONG}/рік STR_PURCHASE_INFO_CAPACITY :{BLACK}Місткість: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(змінюється) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Рік випуску: {GOLD}{NUM}{BLACK} Вік: {GOLD}{COMMA} р{P ік оки оків} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Надійність: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Ціна: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Вага: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Ціна: {GOLD}{CURRENCY_LONG}{BLACK} Швидкість: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Місткість: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Потужність: {GOLD}+{POWER}{BLACK} Вага: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Може бути переобладненим на: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Всі типи вантажів STR_PURCHASE_INFO_ALL_BUT :Всі, крім {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальна тягова сила: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальність: {GOLD}{COMMA} клітинок STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список поїздів - клацніть на поїзді для інформації STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список авто - клацніть на авто для інформації STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список вибору кораблів - клацніть на корабель для інформації STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список вибору літаків - клацніть на літак для інформації STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купити STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Купити STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Купити STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Купити STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибраний поїзд. Утримуйте Shift для показу витрат на придбання STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибране авто. Утримуйте Shift для показу витрат на придбання STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибраний корабель. Утримуйте Shift для показу витрат на придбання STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Купити вибраний літак. Утримуйте Shift для показу витрат на придбання STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Назва STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Зміна назви STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Зміна назви STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Зміна назви STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Перейменуйте тип транспорту STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Перейменувати тип авто STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Перейменувати тип корабля STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Перейменувати тип літака STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Перейменувати тип поїзда STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Перейменувати тип авто STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Перейменувати тип корабля STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Перейменувати тип літака # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Змінити назву депо STR_DEPOT_RENAME_DEPOT_CAPTION :Перейменувати депо STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} транспорт{P "" и ів}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Поїзди - перетягніть транспорт (вагон) лівою кнопкою миші, щоб додати/вилучити з поїзда. Натисніть праву кнопку миші для інформації. Утримуйте Ctrl для застосування обох функцій до всього ланцюга STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Авто - натисніть на авто для інформації STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Кораблі - натисніть для інформації STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Літаки - натисніть на літак для інформації STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Перетягніть поїзд сюди, щоб продати його STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Перетягніть автомобіль сюди, щоб продати STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Перетягніть корабель сюди, щоб продати STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Перетягніть літак сюди, щоб продати STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Перетягніть сюди поїзд для його продажу повністю STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Продати всі поїзди з депо STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Продати всі автомобілі з депо STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Продати всі кораблі з депо STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Продати всі літаки з ангару STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Оновити всі поїзди в депо STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Оновити всі автомобілі в депо STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Оновити всі кораблі в депо STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Оновити всі літаки в ангарі STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Нові потяги STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Нові автомобілі STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Нові кораблі STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Нові літаки STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Купити новий поїзд STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Купити новий автомобіль STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Купити новий корабель STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Купити новий літак STR_DEPOT_CLONE_TRAIN :{BLACK}Клонувати STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Клонувати STR_DEPOT_CLONE_SHIP :{BLACK}Клонувати STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Клонувати STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Купити копію поїзда з усіма вагонами. Натисніть на цю кнопку і потім на поїзд в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Купити копію авто. Натисніть на цю кнопку і потім на авто в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Купити копію корабля. Натисніть на цю кнопку, і потім на корабель в депо або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Купити копію літака. Натисніть на цю кнопку і потім на літак в ангарі або ззовні. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати залізничне депо у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на залізничне депо STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати гараж у центрі екрану. Утримання Ctrl вікдриває нове вікно з видом на гараж STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Показати док у центрі екрану. Утримання Ctrl відкриє нове вікно з видом на док STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати ангар в центрі екрану. Утримання Ctrl відкриє нове вікно з видом на ангар STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Отримати список усіх поїздів, що заходять до цього депо STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Отримати список усіх автомобілів, що заходять до цього депо STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Отримати список усіх кораблів, що заходять до цього депо STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Отримати список усіх літаків, що заходять до ангарів у цьому аеропорті STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Натисніть для зупинки всіх поїздів, що в депо STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Натисніть для зупинки всіх авто, що в депо STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Натисніть для зупинки всіх кораблів, що в депо STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Натисніть для зупинки всіх літаків, що в ангарі STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Натисніть для виїзду поїздів з депо STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Натисніть для виїзду всіх автомобілів з депо STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Натисніть для виїзду всіх кораблів з депо STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Натисніть для вильоту всіх літаків з ангару STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Ви впевнені, що хочете продати усі машини в депо? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Повідомлення від виробника транспорту STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Ми розробили новий {STRING} - чи бажаєте ексклюзивно користуватись ним протягом року, так ми побачимо, як він зарекомендує себе, перед тим як буде доступним для всіх? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :локомотив STR_ENGINE_PREVIEW_ROAD_VEHICLE :автомобіль STR_ENGINE_PREVIEW_AIRCRAFT :літак STR_ENGINE_PREVIEW_SHIP :корабель STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :монорейковий локомотив STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :магнітний локомотив STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Ціна: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY}{}Потужність: {POWER}{}Вартість експлуатації: {CURRENCY_LONG}/рік{}Місткість: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Вартість: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY} Потужність: {POWER} Макс. тяга: {6:FORCE}{}Вартість експлуатації: {4:CURRENCY_LONG}/рік{}Місткість: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Місткість: {CARGO_LONG}, {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Місткість: {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Ціна: {CURRENCY_LONG} Макс. швидкість: {VELOCITY} Дальність: {COMMA} клітинок{}Місткість: {CARGO_LONG}, {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY} Дальність: {COMMA} клітинок{}Місткість: {CARGO_LONG}{}Витрати від експлуатації: {CURRENCY_LONG}/рік # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Оновити {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Поїзд STR_REPLACE_VEHICLE_ROAD_VEHICLE :Авто STR_REPLACE_VEHICLE_SHIP :Корабель STR_REPLACE_VEHICLE_AIRCRAFT :Літак STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Виберіть транспорт для оновлення STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Виберіть новий транспорт, яким ви бажаєте замінити старий STR_REPLACE_VEHICLES_START :{BLACK}Почати оновлення STR_REPLACE_VEHICLES_NOW :Замінити усі ТС зараз STR_REPLACE_VEHICLES_WHEN_OLD :Замінювати лише застарілі ТС STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч, на потяги, що вибрані праворуч STR_REPLACE_NOT_REPLACING :{BLACK}Не можна оновити STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Не вибрано транспортного засобу STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} коли застаріє STR_REPLACE_VEHICLES_STOP :{BLACK}Зупинити оновлення STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натисніть для припинення процесу оновлення потягів, що вибрані ліворуч STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Оновлення: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Переключення між вікнами заміни потягів та вагонів. STR_REPLACE_ENGINES :Локомотиви STR_REPLACE_WAGONS :Вагони STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якого ви збираєтесь оновити потяги STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує, яким потягом буде замінено потяг, вибраний ліворуч STR_REPLACE_RAIL_VEHICLES :Неелектрифіковані поїзди STR_REPLACE_ELRAIL_VEHICLES :Електрифіковані поїзди STR_REPLACE_MONORAIL_VEHICLES :Монорейкові поїзди STR_REPLACE_MAGLEV_VEHICLES :Магнітні поїзди STR_REPLACE_REMOVE_WAGON :{BLACK}Ліквідація зайвих вагонів: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Дозволити автооновленню видаляти вагони, зберігаючи довжину потягу (починаючи спереду), якщо оновлення робить поїзд довшим # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Показати поїзд у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показати автомобіль у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Показати корабель у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показати літак у центрі екрану. Утримання Ctrl спричинить слідкування за ним у головному вікні STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити поїзд у депо STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити авто в депо STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити корабель в депо STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Направити літак в ангар STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Купити копію поїзда з усіма вагонами. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Купити копію авто. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Купити копію корабля. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Купити копію літака. Утримуйте Ctrl для спільного завдання. Утримуйте Shift для показу витрат на придбання STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Примусити проігнорувати сигнал! STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Переобладнати поїзд для перевезення іншого виду вантажу STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Переобладнати авто для перевезення інших вантажів STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Переобладнати корабель для перевезення іншого виду вантажу STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Переобладнати літак для перевезення іншого виду вантажу STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Розвернути поїзд STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Розвернути авто STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Показати маршрут поїзда. Ctrl+Click показує розклад поїзда STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Показати накази авто. Ctrl+Click показує розклад авто STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Показати накази корабля. Ctrl+Click показує розклад корабля STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Показати накази літака. Ctrl+Click показує розклад літака STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Показати детальну інформацію STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Показати авто детально STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Показати корабель детально STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Показати літак детально STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Поточна дія поїзда - натисніть для руху/зупинки поїзда. Утримуйте Ctrl, щоб показати пункт призначення STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Поточна дія автомобіля - натисніть для руху/зупинки автомобіля. Утримуйте Ctrl, щоб показати пункт призначення STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Поточна дія корабля - натисніть для руху/зупинки корабля. Утримуйте Ctrl, щоб показати пункт призначення STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Поточна дія літака - натисніть для руху/зупинки літака. Утримуйте Ctrl, щоб показати пункт призначення # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Вантаження STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Відходить STR_VEHICLE_STATUS_CRASHED :{RED}Аварія! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Зламався STR_VEHICLE_STATUS_STOPPED :{RED}Зупинено STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Зупиняється, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Не достатньо потужності STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Очікування вільного шляху STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Занадто далеко до наступного місця призначення STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Прямує до {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Без завдань, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Прямує до {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Прямує до {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд у {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Зупинено STR_VEHICLE_COMMAND_STOPPED :{RED}Зупинено STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Рушив STR_VEHICLE_COMMAND_STARTED :{GREEN}Рушив # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Детально) STR_VEHICLE_NAME_BUTTON :{BLACK}Назва STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Назвати поїзд STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Назвати авто STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Назвати корабель STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Назвати літак STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Вартість експлуатації: {LTBLUE}{CURRENCY_LONG}/рік # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} р{P ік оки оків} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} р{P ік оки оків} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Дальність: {LTBLUE}{COMMA} клітинок STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Макс. тяга: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Дохід цього року: {LTBLUE}{CURRENCY_LONG} (торік: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Надійність: {LTBLUE}{COMMA}% {BLACK}Аварії після останнього техогляду: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Побудований: {LTBLUE}{NUM}{BLACK} Вартість: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Місткість: {LTBLUE}нема{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Місткість: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Місткість: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Місткість: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Плата за трансфер: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA} днів{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}%{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Збільшити інтервал техогляду на 10. Ctrl+клік збільшує інтервал техогляду на 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Зменшити період техогляду на 10. Ctrl+клік зменшує інтервал техогляду на 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :Відлік інтервалу між техоглядами STR_VEHICLE_DETAILS_DAYS :Дні STR_VEHICLE_DETAILS_PERCENT :Проценти STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Назвати поїзд STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Назвати авто STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Назвати корабель STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Назвати літак # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Рік випуску: {LTBLUE}{NUM}{BLACK} Ціна: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Ціна: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Повна місткість цього поїзду: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}порожній STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} з {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} з {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Вантаж STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Показати інформацію про вантаж STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Інформація STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Показати інформацію про вагони STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Місткість STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Показати місткість кожного вагону STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Повна місткість STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Показати загальну місткість поїзда, розділену за типом вантажу STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Місткість: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Переобладнання) STR_REFIT_TITLE :{GOLD}Виберіть вид вантажу для перевезення:- STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}{}{BLACK}Вартість переобладнання: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}{}{BLACK}Прибуток від переобладнання: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Вартість переобладнання: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Нова місткість: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Прибуток від переобладнання: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Вибрати транспорт для переобладнання. Перетягування мишкою дозволяє виділити декілька одиниць транспорту. Клік на порожньому місці виділить усю одиницю транспорту. Ctrl+клік мишкою виділить транспорт та ланцюжок перевезень за ним STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Виберіть вид вантажу для перевезення STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Оберіть тип вантажу для перевезення STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Виберіть вид вантажу для переобладнання STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Виберіть вид вантажу для переобладнання STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Переобладнати STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Переобладнати авто STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Переобладнати корабель STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Переобладнати літак STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Переобладнати поїзд для перевезення вибраного виду вантажу STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Переобладнати авто для перевезення вибраного вантажу STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Переобладнати корабель для перевезення вибраного виду вантажу STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Переобладнати літак для перевезення вибраного виду вантажу # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Накази) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Розклад STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Переключитись на розклад STR_ORDERS_LIST_TOOLTIP :{BLACK}Маршрутний лист - клацніть на завданні для його вибору. CTRL+клік мишкою показує станцію STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Кінець наказів - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Кінець спільних наказів - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Без зупинки STR_ORDER_GO_TO :Прямувати в STR_ORDER_GO_NON_STOP_TO :Прямувати без зупинок в STR_ORDER_GO_VIA :Прямувати через STR_ORDER_GO_NON_STOP_VIA :Прямувати без зупинок через STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Змінити поведінку зупинки виділеного пункту STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Повне завантаж. будь-чим STR_ORDER_DROP_LOAD_IF_POSSIBLE :Завантажитись, якщо можливо STR_ORDER_DROP_FULL_LOAD_ALL :Повністю завантажити всі вантажі STR_ORDER_DROP_FULL_LOAD_ANY :Повністю завантажити будь-який вантаж STR_ORDER_DROP_NO_LOADING :Не завантажуватись STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Змінити поведінку завантаження виділеного пункту STR_ORDER_TOGGLE_UNLOAD :{BLACK}Розвантажити все STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Розвантажитись, якщо приймають STR_ORDER_DROP_UNLOAD :Розвантажити все STR_ORDER_DROP_TRANSFER :Передати STR_ORDER_DROP_NO_UNLOADING :Не розвантажуватись STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Змінити поведінку розвантаження виділеного пункту STR_ORDER_REFIT :{BLACK}Переобладнати STR_ORDER_REFIT_TOOLTIP :{BLACK}Оберіть, на який тип вантажу переобладнати у цьому завданні. Ctrl+клік для видалення команди переобладнання STR_ORDER_REFIT_AUTO :{BLACK}Авто-переобладнання STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Вибирає тип вантажу, для якого треба автопереобладнати транспорт в цьому наказі. Ctrl+клік видаляє автопереобладнання. Автопереобладнання буде виконано, тільки якщо транспорт підтримує його STR_ORDER_DROP_REFIT_AUTO :Зазначений вантаж STR_ORDER_DROP_REFIT_AUTO_ANY :Доступний вантаж STR_ORDER_SERVICE :{BLACK}Техогляд STR_ORDER_DROP_GO_ALWAYS_DEPOT :Завжди прямувати STR_ORDER_DROP_SERVICE_DEPOT :Прямувати при потребі в техогляді STR_ORDER_DROP_HALT_DEPOT :Прямувати і зупинитись STR_ORDER_SERVICE_TOOLTIP :{BLACK}Пропустити це завдання, якщо техогляд не потрібен STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Дані транспорту для базування наказу # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Процент завантаження STR_ORDER_CONDITIONAL_RELIABILITY :Надійність STR_ORDER_CONDITIONAL_MAX_SPEED :Макс. швидкість STR_ORDER_CONDITIONAL_AGE :Вік (роки) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Потребує техогляду STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Завжди STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Залишок строку служби (років) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Як порівнювати дані транспорту з заданим значенням STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :дорівнює STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :не дорівнює STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :менше ніж STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :менше або дорівнює STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :більше ніж STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :більше або дорівнює STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :- так STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :- ні STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Значення, з яким порівнювати дані транспорту STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Введіть значення для порівняння STR_ORDERS_SKIP_BUTTON :{BLACK}Пропуск STR_ORDERS_SKIP_TOOLTIP :{BLACK}Пропустити поточний наказ, і виконувати наступний. CTRL + клік переходить до вибраного наказу STR_ORDERS_DELETE_BUTTON :{BLACK}Видалити STR_ORDERS_DELETE_TOOLTIP :{BLACK}Видалити виділене завдання STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Видалити всі накази STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Відмінити спільні накази STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Перестати використовути спільні накази. Ctrl+клік мишкою видаляє всі накази для цього транспорту. STR_ORDERS_GO_TO_BUTTON :{BLACK}Прямувати STR_ORDER_GO_TO_NEAREST_DEPOT :Прямувати до найближчого депо STR_ORDER_GO_TO_NEAREST_HANGAR :Прямувати в найближчий ангар STR_ORDER_CONDITIONAL :Зміна наказу з умовою STR_ORDER_SHARE :Спільні накази STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставити новий наказ перед вибраним, або додати в кінець списку. Утримуйте Ctrl аби створити наказ як "повне завантаження будь-якого вантажу", для точок маршруту - "без зупинок", і для депо - "обслуговування". Пункт "Спільні накази" або утримування Ctrl дозволяє поділитися спільними наказами з виділеним транспортом. Клік на транспорті копіює з нього накази STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Показати транспорт з таким самим маршрутом # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Їхати через {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Їхати без зупинок через {WAYPOINT} STR_ORDER_SERVICE_AT :Прямувати на техогляд в STR_ORDER_SERVICE_NON_STOP_AT :Прямувати без зупинки на техогляд в STR_ORDER_NEAREST_DEPOT :найближчий STR_ORDER_NEAREST_HANGAR :найближчий ангар STR_ORDER_TRAIN_DEPOT :депо STR_ORDER_ROAD_VEHICLE_DEPOT :гараж STR_ORDER_SHIP_DEPOT :док STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Переобладнати до {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Переобладнати на {STRING} і зупинити) STR_ORDER_STOP_ORDER :(зупинити) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Автоматично) STR_ORDER_FULL_LOAD :(Завантажити все) STR_ORDER_FULL_LOAD_ANY :(Повністю завантажити будь-який вид вантажу) STR_ORDER_NO_LOAD :(Не завантажуватись) STR_ORDER_UNLOAD :(Розвантажити і взяти вантаж) STR_ORDER_UNLOAD_FULL_LOAD :(Розвантажитись і чекати повного завантаження) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Розвантажитись і чекати повного завантаження будь-якого виду) STR_ORDER_UNLOAD_NO_LOAD :(Розвантажитись і залишитись пустим) STR_ORDER_TRANSFER :(Передати і взяти вантаж) STR_ORDER_TRANSFER_FULL_LOAD :(Передати і чекати повного завантаження) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Передати і чекати повного завантаження будь-якого виду) STR_ORDER_TRANSFER_NO_LOAD :(Передати і залишитись пустим) STR_ORDER_NO_UNLOAD :(Не розвантажуватись і взяти вантаж) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Не розвантажуватись і чекати повного завантаження) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Не розвантажуватись і чекати повного завантаження будь-якого виду) STR_ORDER_NO_UNLOAD_NO_LOAD :(Не розвантажуватись і не завантажуватись) STR_ORDER_AUTO_REFIT :(Автоматично переобладнати в {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Завантажити все з автопереобладнанням в {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Повністю завантажити будь-який вид вантажу з автопереобладнанням в {STRING}) STR_ORDER_UNLOAD_REFIT :(Розвантажити і взяти вантаж з автопереобладнанням в {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Розвантажити і чекати повного завантаження вантажу з автопереобладнанням в {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Розвантажити і чекати повного завантаження будь-якого вантажу з автопереобладнанням в {STRING}) STR_ORDER_TRANSFER_REFIT :(Передати і взяти вантаж з автопереобладнанням в {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Передати і чекати повного завантаження з автопереобладнанням в {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Передати і чекати повного завантаження будь-якого вантажу з автопереобладнанням в {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Не розвантажуватись і взяти вантаж з автопереобладнанням в {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Не розвантажуватись і чекати повного завантаження з автопереобладнанням в {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Не розвантажуватись і чекати повного завантаження будь-якого вантажу з автопереобладнанням в {STRING}) STR_ORDER_AUTO_REFIT_ANY :доступний вантаж STR_ORDER_STOP_LOCATION_NEAR_END :[початок] STR_ORDER_STOP_LOCATION_MIDDLE :[середина] STR_ORDER_STOP_LOCATION_FAR_END :[кінець] STR_ORDER_OUT_OF_RANGE :{RED} (Наступний пункт призначення поза межею досяжності) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Перейти до наказу {COMMA} STR_ORDER_CONDITIONAL_NUM :Перейти до наказу {COMMA}, якщо {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Перейти до наказу {COMMA}, якщо {STRING} {STRING} STR_INVALID_ORDER :{RED} (Невірний наказ) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (розклад) STR_TIMETABLE_ORDER_VIEW :{BLACK}Завдання STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Переключитись до вікна завдань STR_TIMETABLE_TOOLTIP :{BLACK}Розклад - клікніть на наказ, щоб виділити його STR_TIMETABLE_NO_TRAVEL :Не прямувати STR_TIMETABLE_NOT_TIMETABLEABLE :В дорозі (час руху враховано в наступному не автоматичному наказі) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В дорозі (час не вказано) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :В дорозі зі швидкістю, що не перевищує {2:VELOCITY} (час не вказано) STR_TIMETABLE_TRAVEL_FOR :В дорозі {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :В дорозі {STRING} зі швидкістю, що не перевищує {VELOCITY} STR_TIMETABLE_STAY_FOR :і стояти {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :і прямувати до {STRING} STR_TIMETABLE_DAYS :{COMMA} д{P ень ні нів} STR_TIMETABLE_TICKS :{COMMA} одиниц{P я і ь} STR_TIMETABLE_TOTAL_TIME :{BLACK}Цей розклад займе {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Цей розклад займе якнайменше {STRING} (не все враховано) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Цей транспорт зараз прямує за розкладом STR_TIMETABLE_STATUS_LATE :{BLACK}Цей транспорт запізнюється на {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Цей транспорт випереджує розклад на {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Цей розклад ще не почався STR_TIMETABLE_STATUS_START_AT :{BLACK}Цей розклад почнеться о {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Дата початку STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Оберіть дату для початку цього розкладу STR_TIMETABLE_CHANGE_TIME :{BLACK}Змінити час STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ STR_TIMETABLE_CLEAR_TIME :{BLACK}Скасувати час STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Скасувати час виконання виділеного наказу STR_TIMETABLE_CHANGE_SPEED :{BLACK}Змінити обмеж. швидкості STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Змінити обмеження швидкості для виділеного пункту STR_TIMETABLE_CLEAR_SPEED :{BLACK}Скасувати обмеж. швидкості STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Скасувати обмеження швидкості для виділеного пункту STR_TIMETABLE_RESET_LATENESS :{BLACK}Скасувати відхилення STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Скасувати лічильник відхилення від графіка, щоб транспорт встигнув STR_TIMETABLE_AUTOFILL :{BLACK}Авторозрахунок STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Автоматично розрахувати розклад впродовж наступної поїздки (Ctrl+click - спробувати зберегти час очікування) STR_TIMETABLE_EXPECTED :{BLACK}Очікується STR_TIMETABLE_SCHEDULED :{BLACK}Призначено STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Перемкнути очікуване на заплановане STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: STR_TIMETABLE_DEPARTURE_ABBREVIATION :В: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Призначити дату STR_DATE_SET_DATE :{BLACK}Призначити дату STR_DATE_SET_DATE_TOOLTIP :{BLACK}Використовувати цю дату як початкову для цього розкладу STR_DATE_DAY_TOOLTIP :{BLACK}Оберіть день STR_DATE_MONTH_TOOLTIP :{BLACK}Оберіть місяць STR_DATE_YEAR_TOOLTIP :{BLACK}Оберіть рік # AI debug window STR_AI_DEBUG :{WHITE}Налагодження АІ / Ігрового Скрипта STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Назва скрипта STR_AI_DEBUG_SETTINGS :{BLACK}Налаштування STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Змінити налаштування скрипту STR_AI_DEBUG_RELOAD :{BLACK}Перезавантажити AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Знищити AI, перезавантажити скрипт, та рестартувати AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Увімкнути/вимкнути паузу при появі сигнального рядку в журналі АІ STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Рядок: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Рядок STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}У разі появи в журналі АІ цього рядку гра зупиняється STR_AI_DEBUG_MATCH_CASE :{BLACK}Регістр STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Перемкнути перевірку регістру при порівнянні рядків журналу АІ з сигнальним рядком STR_AI_DEBUG_CONTINUE :{BLACK}Продовжити STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Зняти з паузи і продовжити AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Відобразити результати дебагу цього АІ STR_AI_GAME_SCRIPT :{BLACK}Ігровий Скрипт STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Перевірити журнал Ігрового Скрипта STR_ERROR_AI_NO_AI_FOUND :Не знайдено відповідних AI для завантаження.{}Цей AI тимчасовий і нічого не робить.{}Ви можете завантажити кілька AI через систему 'Вмісту в Інтернет' STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Один із запущених скриптів перестав працювати. Будь ласка, повідомте про це автору скрипта (разом зі знімком вікна налагодження АІ/Ігрового Скрипта) STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Вікно налагодження АІ / Ігрового Скрипта доступне тільки серверу # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Налаштування AI / Ігрового Скрипта STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Ігровий Скрипт, який буде завантажено в наступній грі STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}АІ, які будуть завантажені в наступній грі STR_AI_CONFIG_HUMAN_PLAYER :Гравець-людина STR_AI_CONFIG_RANDOM_AI :Випадковий AI STR_AI_CONFIG_NONE :(нема) STR_AI_CONFIG_MOVE_UP :{BLACK}Перемістити вище STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Перемістити обраний AI вверх по списку STR_AI_CONFIG_MOVE_DOWN :{BLACK}Перемістити нижче STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Перемістити обраний AI вниз по списку STR_AI_CONFIG_GAMESCRIPT :{SILVER}Ігровий Скрипт STR_AI_CONFIG_AI :{SILVER}АІ STR_AI_CONFIG_CHANGE :{BLACK}Вибрати {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Ігровий Скрипт STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Завантажити інший скрипт STR_AI_CONFIG_CONFIGURE :{BLACK}Настроїти STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Настроїти параметри скрипту # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Доступні {STRING} STR_AI_LIST_CAPTION_AI :Модулі АІ STR_AI_LIST_CAPTION_GAMESCRIPT :Ігрові Скрипти STR_AI_LIST_TOOLTIP :{BLACK}Клікніть, щоб вибрати скрипт STR_AI_LIST_AUTHOR :{LTBLUE}Автор: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Версія: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Прийняти STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Вибрати виділений скрипт STR_AI_LIST_CANCEL :{BLACK}Відміна STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Не міняти скрипт # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Параметри STR_AI_SETTINGS_CAPTION_AI :АІ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Ігровий Скрипт STR_AI_SETTINGS_CLOSE :{BLACK}Закрити STR_AI_SETTINGS_RESET :{BLACK}Скидання STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Кількість днів до запуску цього АІ після запуску попереднього АІ: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}Документація до {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Зміни в {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Ліцензія до {STRING} {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Інструкція STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Зміни STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ліцензія # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Витрачено: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Витрачено: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Прибуток: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Прибуток: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Пересадка: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Пересадка: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Приблизні витрати: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Приблизний прибуток: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...{}зачекайте, доки завершиться! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Помилка автозбереження STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Неможливо прочитати пристрій STR_ERROR_GAME_SAVE_FAILED :{WHITE}Помилка запису гри{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Неможливо стерти файл STR_ERROR_GAME_LOAD_FAILED :{WHITE}Помилка завантаження гри{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутрішня помилка: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл збереженої гри пошкоджений - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Файл збереженої гри зроблений більш новою версією STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Неможливо прочитати файл STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Неможливо записати файл STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Перевірка на цілісність зазнала невдачі STR_GAME_SAVELOAD_NOT_AVAILABLE :<недоступно> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Гра була записана у версії без підтримки трамваїв. Усі трамваї були видалені # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Генерація карти перервана...{}... немає де розташувати міста STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... у цьому сценарію немає міст STR_ERROR_PNGMAP :{WHITE}Неможливо завантажити ландшафт з PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... файл не знайдено STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... неможливо перетворити цей тип зображення. Треба 8 чи 24-bit PNG формат STR_ERROR_PNGMAP_MISC :{WHITE}... помилка (можливо, зіпсований файл) STR_ERROR_BMPMAP :{WHITE}Неможливо завантажити ландшафт з BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... неможливо перетворити тип зображення STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... зображення занадто велике STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Завелике значення STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Розміри дуже великі. Продовжити генерацію? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Був знайдений тільки запасний набір звуків. Якщо вам потрібні звуки, встановіть набір звуків через систему завантаження вмісту # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Великий знімок екрану STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Знімок екрану буде мати роздільну здатність {COMMA} x {COMMA} пікселів. Створення знімка екрану може зайняти деякий час. Ви хочете продовжити? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Екран збережено в '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Помилка збереження екрану! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Повідомлення STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Повідомлення від {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}За межами карти STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Надто близько до краю карти STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Недостатньо коштів - потрібно {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Потрібна рівна ділянка STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Схил не в тому напрямку STR_ERROR_CAN_T_DO_THIS :{WHITE}Неможливо зробити це... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Спочатку зруйнуйте споруду STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Неможливо очистити цю ділянку... STR_ERROR_SITE_UNSUITABLE :{WHITE}... невідповідне місце STR_ERROR_ALREADY_BUILT :{WHITE}... вже побудовано STR_ERROR_OWNED_BY :{WHITE}... власність {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... ділянка у власності іншої компанії STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... змінювати більше ландшафт неможливо STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... неможливо очистити більше клітинок STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... досягнуто обмеження висадки дерев STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Назва має бути унікальною STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} на шляху STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Не дозволено, бо гра на паузі # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Влада міста {TOWN} проти цього STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Влада міста {TOWN} відмовляє у будівництві ще одного аеропорту. STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}: місцева влада відмовляє у дозволі на аеропорт з міркувань шуму STR_ERROR_BRIBE_FAILED :{WHITE}Хтось з місцевих сищиків дізнався про твою спробу дати хабар # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Неможливо підняти ділянку... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Неможливо опустити ділянку... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Тут не можна вирівняти землю... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Роботи пошкодять тунель STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Вже понижено до рівня моря STR_ERROR_TOO_HIGH :{WHITE}Дуже високо STR_ERROR_ALREADY_LEVELLED :{WHITE}... вже рівна # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Неможливо змінити назву компанії... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Неможливо змінити ім'я керівника... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... найбільший дозволений розмір позики {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Неможливо взяти ще позику... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... позика вже повернута STR_ERROR_CURRENCY_REQUIRED :{WHITE}... потрібно {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Неможливо повернути позику... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Неможливо передати гроші, позичені у банку... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Неможливо купити компанію... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Неможливо збудувати Офіс... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Неможливо купити 25% акцій цієї компанії... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Неможливо продати 25% акцій цієї компанії... STR_ERROR_PROTECTED :{WHITE}Ця компанія поки ще не продається... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Не можна створити місто STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Неможливо перейменувати... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Тут не можна будувати місто... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Неможливо розширити місто... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... надто близько до краю карти STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... надто близько до іншого міста STR_ERROR_TOO_MANY_TOWNS :{WHITE}... забагато міст STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... на карті немає вільного місця STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Місто не буде будувати дороги. Ви можете дозволити будівництво доріг у вікні Розширені налаштування->Економіка->Міста STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Дорога ремонтується STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Не можна видалити це місто...{}Станція або депо, що відносяться до міста або знаходяться на землі у власності міста, не можуть бути видалені STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... немає придатного місця для статуї в центрі цього міста # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... забагато промисловості STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Неможливо створити виробництво... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Неможливо будувати {STRING.z} тут... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Неможливо будувати тут... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... дуже близько до іншої промисловості STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... спочатку збудуйте місто STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... у місті може бути тільки один STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... можна будувати лише у містах з населенням не менш 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... можна будувати лише у джунглях STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... можна будувати лише у пустелі STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... можна будувати лише у містах (заміщуючи будинки) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... можна будувати тільки неподалік від центру міста STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... можна будувати лише у низинах STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... можна розмістити лише біля країв карти STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... садити ліс можна тільки вище рівня снігу STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... можна будувати тільки вище рівня снігу STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... можна будувати тільки нижче рівня снігу # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Неможливо будувати станцію тут... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Неможливо будувати зупинку тут... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Неможливо будувати вантажну станцію тут... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Не можна побудувати пасажирську трамвайну станцію... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Не можна побудувати вантажну трамвайну станцію... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Неможливо будувати порт тут... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Неможливо будувати аеропорт тут... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Граничить з іншою станцією STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... станція занадто велика STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Дуже багато станцій STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Забагато частин залізничної станції STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Дуже багато зупинок STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Дуже багато вантажних станцій STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Дуже близько до іншої станції STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Дуже близько до іншого порту STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Дуже близько до іншого аеропорту STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Неможливо перейменувати станцію... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ця дорога у власності міста STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... дорога не в тому напрямку STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... проїзні зупинки не можуть мати поворотів STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... проїзні зупинки не можуть мати перехресть # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Не можна зруйнувати частину станції... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Спочатку потрібно знести залізничну станцію STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Не можна знести автобусну станцію... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не можна знести вантажну станцію... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Не можна знести пасажирську трамвайну станцію... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Не можна знести вантажну трамвайну станцію... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Спочатку приберіть зупинку STR_ERROR_THERE_IS_NO_STATION :{WHITE}... тут немає станції STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Спочатку зруйнуйте залізничну станцію STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Спочатку зруйнуйте зупинку STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Спочатку зруйнуйте вантажну станцію STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Спочатку треба знести пасажирську трамвайну станцію STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Спочатку треба знести вантажну трамвайну станцію STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Спочатку зруйнуйте порт STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Спочатку зруйнуйте аеропорт # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Суміжне більш ніж з однією існуючою точкою маршруту STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Надто близько до іншої точки маршруту STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Тут не можна встановити точку маршруту.. STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Неможливо розмістити бакен тут... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Не можна перейменувати точку маршруту... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Тут не можна прибрати точку маршруту.. STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Спочатку приберіть точку залізничного маршруту STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... бакен на шляху STR_ERROR_BUOY_IS_IN_USE :{WHITE}... бакен використовується іншою компанією! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Неможливо будувати депо тут... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Неможливо будувати депо тут... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Тут не можна побудувати трамвайне депо... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Неможливо будувати корабельне депо тут... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Неможливо перейменувати депо... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... поїзд повинен стояти в депо STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... повинно стояти в гаражі STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... корабель має стояти в доці STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... літак повинен стояти в ангарі STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Поїзд можна змінювати тільки тоді, коли зупинений в депо STR_ERROR_TRAIN_TOO_LONG :{WHITE}Поїзд дуже довгий STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Не можна розвернути поїзд... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... складається з декількох частин STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Залізничні колій несумісні STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Неможливо перемістити транспорт... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}задній потяг буде завжди йти за переднім STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Неможливо знайти маршрут до місцевого депо STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Неможливо знайти місцеве депо STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Неправильний тип депо # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} дуже довгий після оновлення STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Правила автозаміни/оновлення не застосовувалися STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(бракує коштів) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Неможливе з'єднання колії STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Спочатку приберіть сигнали STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Невідповідний тип колії STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Спочатку приберіть колію STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Дорога з одностороннім рухом або блокована STR_ERROR_CROSSING_DISALLOWED :{WHITE}Переїзди для такого виду колії є забороненими STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Неможливо будувати сигнали тут... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Неможливо будувати колію тут... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Неможливо прибрати колію звідси... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Неможливо прибрати сигнали звідси... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Не можна конвертувати сигнали тут... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... тут немає залізничних шляхів STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... тут немає сигналів STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Тут не можна модернізувати колію... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Спочатку зруйнуйте дорогу STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... односторонні дороги не можуть перетинатись STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Неможливо тут побудувати дорогу ... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Тут не можна побудувати трамвайну колію... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Неможливо прибрати дорогу звідси... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Не можна прибрати трамвайну колію звідси... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... тут немає дороги STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... тут немає трамвайних шляхів # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Неможливо будувати канал тут... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Неможливо будувати шлюз тут... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Тут не можна зробити річку... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... має бути збудовано на воді STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... неможливо будувати на воді STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... неможливо будувати у відкритому морі STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... неможливо будувати на каналі STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... неможливо будувати на річці STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Спочатку потрібно прибрати канал STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Тут не можна побудувати акведук... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... тут вже росте дерево STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... місцевість не підходить для цього виду дерева STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Неможливо посадити тут дерево # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Неможливо збудувати міст... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Спочатку зруйнуйте міст STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Початок та кінець не можуть бути в одному місці STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Кінці мостів на різних рівнях STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Міст дуже низький для цього місця STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Початок та кінець мають бути на одній лінії STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... обидва кінці мосту мають бути на землі STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... міст надто довгий STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Міст закінчиться поза картою # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Неможливо збудувати тунель... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Невідповідне місце для початку тунелю STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Спочатку зруйнуйте тунель STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Інший тунель на шляху STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Тунель закінчиться поза картою STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Неможливо виконати будівництво іншого кінця тунелю STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... занадто довгий тунель # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... забагато об'єктів STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Неможливо побудувати об'єкт... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Об'єкт на шляху STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... на шляху Головний офіс STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Неможливо купити цю ділянку ... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... це вже ваша власність! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Не можна створити групу... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Не можна стерти групу... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Не можна перейменувати групу... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Не можна позбутися всього транспорту цієї групи... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Не можна додати цей транспорт у групу... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Не можна додати спільний транспорт у групу... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Поїзд на шляху STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}На шляху авто STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Корабель на шляху STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Літак на шляху STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Неможливо переобладнати поїзд... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Неможливо переобладнати авто STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Неможливо переобладнати корабель... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Неможливо переобладнати літак... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Неможливо назвати поїзд... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Неможливо назвати авто... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Неможливо назвати корабель... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Неможливо назвати... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Не можна зупинити/стартувати поїзд... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Неможливо зупинити авто... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Неможливо зупинити корабель... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Неможливо зупинити літак... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Неможливо відправити поїзд в депо... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Неможливо направити авто в депо... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Неможливо направити корабель в депо... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Неможливо направити літак до ангару... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Неможливо купити поїзд... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Неможливо купити авто... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Неможливо купити корабель... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Неможливо купити літак... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Неможливо перейменувати тип поїзду... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Неможливо перейменувати тип авто... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Неможливо перейменувати тип корабля... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Неможливо перейменувати тип літака... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Не можна продати поїзд... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Неможливо продати авто... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Неможливо продати корабель... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Неможливо продати літак... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Поїзд недоступний STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Автомобіль недоступний STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Корабель недоступний STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Літак недоступний STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Дуже багато транспорту у грі STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не можна змінити інтервал обслуговування... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... транспорт знищено STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Недоступний жоден транспортний засіб STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Змінити налаштування встановленого NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Жоден вид транспорту ще не став доступним STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Починайте нову гру після {DATE_SHORT} або використовуйте NewGRF, в якому транспорт з’являється раніше # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Неможливо проїхати сигнал - небезпечно... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Неможливо розвернути поїзд... STR_ERROR_TRAIN_START_NO_POWER :Поїзд не має тяги STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Неможливо розвернути машину... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Літак у польоті # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Немає місця для наказів STR_ERROR_TOO_MANY_ORDERS :{WHITE}Дуже багато наказів STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати наказ... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити наказ... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити наказ... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Не можна перемістити цей наказ... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити цей наказ... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Не можна перейти до цього наказу... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... транспорт не може йти на всі станції STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... транспорт не може йти на цю станцію STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... транспорт, що має спільний з цим розклад, не може йти на цю станцію STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Неможливо розділити список завдань... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Неможливо відмінити спільні накази... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Неможливо скопіювати список завдань... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... занадто далеко від попереднього пункту призначення STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... літак не може летіти так далеко # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Не можна встановити розклад для транспорту... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Транспорт може чекати тільки на станціях STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Цей транспорт не зупиняється на цій станції. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... дуже багато позначень STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Неможливо позначити місце STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Неможливо перейменувати місце... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не можна видалити позначку... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Гра-симулятор, заснована на Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Оригінальна графіка з Transport Tycoon Deluxe DOS edition. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького). STR_BASEGRAPHICS_WIN_DESCRIPTION :Оригінальна графіка з Transport Tycoon Deluxe Windows edition. STR_BASESOUNDS_DOS_DESCRIPTION :Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition. STR_BASESOUNDS_WIN_DESCRIPTION :Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition. STR_BASESOUNDS_NONE_DESCRIPTION :Порожній набір звуків. STR_BASEMUSIC_WIN_DESCRIPTION :Оригінальна музика з Transport Tycoon Deluxe Windows edition. STR_BASEMUSIC_NONE_DESCRIPTION :Порожній набір музики. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Великий офіс STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Офісний район STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Будинки STR_TOWN_BUILDING_NAME_CHURCH_1 :Церква STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Великий офісний район STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Міські будинки STR_TOWN_BUILDING_NAME_HOTEL_1 :Готель STR_TOWN_BUILDING_NAME_STATUE_1 :Монумент STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Фонтан STR_TOWN_BUILDING_NAME_PARK_1 :Парк STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Офісний район STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Магазини й офіси STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Сучасний офіс STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Склади STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Офісний район STR_TOWN_BUILDING_NAME_STADIUM_1 :Стадіон STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Старі будинки STR_TOWN_BUILDING_NAME_COTTAGES_1 :Котеджі STR_TOWN_BUILDING_NAME_HOUSES_1 :Будинки STR_TOWN_BUILDING_NAME_FLATS_1 :Квартири STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Хмарочоси STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Магазини і офіси STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Магазини і офіси STR_TOWN_BUILDING_NAME_THEATER_1 :Театр STR_TOWN_BUILDING_NAME_STADIUM_2 :Стадіон STR_TOWN_BUILDING_NAME_OFFICES_1 :Офіси STR_TOWN_BUILDING_NAME_HOUSES_2 :Будинки STR_TOWN_BUILDING_NAME_CINEMA_1 :Кінотеатр STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Торговий центр STR_TOWN_BUILDING_NAME_IGLOO_1 :Іглу STR_TOWN_BUILDING_NAME_TEPEES_1 :Вігвам STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Чайник-Дім STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Копилка ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=f}Вугільна шахта STR_INDUSTRY_NAME_COAL_MINE.z :{G=f}вугільну шахту STR_INDUSTRY_NAME_POWER_STATION :{G=f}Електростанція STR_INDUSTRY_NAME_POWER_STATION.z :{G=f}електростанцію STR_INDUSTRY_NAME_SAWMILL :{G=f}Лісопилка STR_INDUSTRY_NAME_SAWMILL.z :{G=f}лісопилку STR_INDUSTRY_NAME_FOREST :{G=m}Ліс STR_INDUSTRY_NAME_FOREST.z :{G=m}ліс STR_INDUSTRY_NAME_OIL_REFINERY :{G=m}Нафтопереробний завод STR_INDUSTRY_NAME_OIL_REFINERY.z :{G=m}нафтопереробний завод STR_INDUSTRY_NAME_OIL_RIG :{G=f}Нафтова платформа STR_INDUSTRY_NAME_OIL_RIG.z :{G=f}нафтову платформу STR_INDUSTRY_NAME_FACTORY :{G=f}Фабрика STR_INDUSTRY_NAME_FACTORY.z :{G=f}фабрику STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Друкарня STR_INDUSTRY_NAME_PRINTING_WORKS.z :{G=f}друкарню STR_INDUSTRY_NAME_STEEL_MILL :{G=m}Сталеварний завод STR_INDUSTRY_NAME_STEEL_MILL.z :{G=m}сталеварний завод STR_INDUSTRY_NAME_FARM :{G=f}Ферма STR_INDUSTRY_NAME_FARM.z :{G=f}ферму STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=f}Міднорудна шахта STR_INDUSTRY_NAME_COPPER_ORE_MINE.z :{G=f}міднорудну шахту STR_INDUSTRY_NAME_OIL_WELLS :{G=f}Нафтова свердловина STR_INDUSTRY_NAME_OIL_WELLS.z :{G=f}нафтову свердловину STR_INDUSTRY_NAME_BANK :{G=m}Банк STR_INDUSTRY_NAME_BANK.z :{G=m}банк STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=m}Продуктовий завод STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.z :{G=m}продуктовий завод STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Паперова фабрика STR_INDUSTRY_NAME_PAPER_MILL.z :{G=f}паперову фабрику STR_INDUSTRY_NAME_GOLD_MINE :{G=f}Золоторудна шахта STR_INDUSTRY_NAME_GOLD_MINE.z :{G=f}золоторудну шахту STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}Банк STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.z :{G=m}банк STR_INDUSTRY_NAME_DIAMOND_MINE :{G=f}Діамантова шахта STR_INDUSTRY_NAME_DIAMOND_MINE.z :{G=f}діамантову шахту STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=f}Залізорудна шахта STR_INDUSTRY_NAME_IRON_ORE_MINE.z :{G=f}залізорудну шахту STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=m}Фруктовий сад STR_INDUSTRY_NAME_FRUIT_PLANTATION.z :{G=m}фруктовий сад STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=m}Каучуковий сад STR_INDUSTRY_NAME_RUBBER_PLANTATION.z :{G=m}каучуковий сад STR_INDUSTRY_NAME_WATER_SUPPLY :Водопостачання STR_INDUSTRY_NAME_WATER_SUPPLY.z :водопостачання STR_INDUSTRY_NAME_WATER_TOWER :{G=f}Водонапірна башта STR_INDUSTRY_NAME_WATER_TOWER.z :{G=f}водонапірну башту STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Фабрика STR_INDUSTRY_NAME_FACTORY_2.z :{G=f}фабрику STR_INDUSTRY_NAME_FARM_2 :{G=f}Ферма STR_INDUSTRY_NAME_FARM_2.z :{G=f}ферму STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}Лісопилка STR_INDUSTRY_NAME_LUMBER_MILL.z :{G=f}лісопилку STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Ліс солодкої вати STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.z :{G=m}ліс солодкої вати STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Цукеркова фабрика STR_INDUSTRY_NAME_CANDY_FACTORY.z :{G=f}цукеркову фабрику STR_INDUSTRY_NAME_BATTERY_FARM :Батарейкове поле STR_INDUSTRY_NAME_BATTERY_FARM.z :батарейкове поле STR_INDUSTRY_NAME_COLA_WELLS :Джерело Кока-коли STR_INDUSTRY_NAME_COLA_WELLS.z :джерело Кока-коли STR_INDUSTRY_NAME_TOY_SHOP :Іграшковий магазин STR_INDUSTRY_NAME_TOY_SHOP.z :іграшковий магазин STR_INDUSTRY_NAME_TOY_FACTORY :Іграшкова фабрика STR_INDUSTRY_NAME_TOY_FACTORY.z :іграшкову фабрику STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Пластиліновий фонтан STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.z :пластиліновий фонтан STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Завод газованої води STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.z :завод газованої води STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Бульбашкова фабрика STR_INDUSTRY_NAME_BUBBLE_GENERATOR.z :бульбашкову фабрику STR_INDUSTRY_NAME_TOFFEE_QUARRY :Ірисковий кар'єр STR_INDUSTRY_NAME_TOFFEE_QUARRY.z :ірисковий кар'єр STR_INDUSTRY_NAME_SUGAR_MINE :Цукрова копальня STR_INDUSTRY_NAME_SUGAR_MINE.z :цукрову копальню ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Без назви STR_SV_TRAIN_NAME :Поїзд №{COMMA} STR_SV_ROAD_VEHICLE_NAME :Автотранспорт №{COMMA} STR_SV_SHIP_NAME :Судно №{COMMA} STR_SV_AIRCRAFT_NAME :Борт №{COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Північна STR_SV_STNAME_SOUTH :{STRING} Південна STR_SV_STNAME_EAST :{STRING} Східна STR_SV_STNAME_WEST :{STRING} Західна STR_SV_STNAME_CENTRAL :{STRING} Центральна STR_SV_STNAME_TRANSFER :{STRING} Транзитна STR_SV_STNAME_HALT :{STRING} Привальна STR_SV_STNAME_VALLEY :{STRING} Низинна STR_SV_STNAME_HEIGHTS :{STRING} Висотна STR_SV_STNAME_WOODS :{STRING} Лісова STR_SV_STNAME_LAKESIDE :{STRING} Озерна STR_SV_STNAME_EXCHANGE :{STRING} Сортувальна STR_SV_STNAME_AIRPORT :Аеропорт {STRING} STR_SV_STNAME_OILFIELD :Нафтовина {STRING} STR_SV_STNAME_MINES :{STRING} Шахтна STR_SV_STNAME_DOCKS :{STRING} Доки STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Додаткова STR_SV_STNAME_SIDINGS :{STRING} Запасна STR_SV_STNAME_BRANCH :{STRING} Резервна STR_SV_STNAME_UPPER :{STRING} Верхня STR_SV_STNAME_LOWER :{STRING} Нижня STR_SV_STNAME_HELIPORT :Вертодром {STRING} STR_SV_STNAME_FOREST :Ліс {STRING} STR_SV_STNAME_FALLBACK :{STRING}, станція №{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (паровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (паровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (паровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (паровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (паровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (тепловоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (електровоз) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Поштовий вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Вагон для вугілля STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Цистерна для нафти STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Вагон для худоби STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Товарний вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Вагон для зерна STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Вагон для деревини STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Вагон для залізної руди STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Платформа для сталі STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Броньований вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Вагон для продуктів STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Вагон для паперу STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Вагон для мідної руди STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Цистерна для води STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Вагон для фруктів STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Вагон для каучуку STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Вагон для цукру STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Вагон для солодощів STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Вагон для ірисок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Вагон для кульок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Цистерна для коли STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Вагон для цукерок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Вагон для іграшок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Вагон для батарейок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Вагон для пластиліну STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Поштовий вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Вагон для вугілля STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Цистерна для нафти STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Вагон для худоби STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Товарний вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Вагон для зерна STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Вагон для деревини STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Вагон для залізної руди STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Платформа для сталі STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Броньований вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Вагон для продуктів STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Вагон для паперу STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Вагон для мідної руди STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Цистерна для води STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Вагон для фруктів STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Вагон для каучуку STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Вагон для цукру STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Вагон для цукрової вати STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Вагон для ірисок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Вагон для бульбашок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Цистерна для коли STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Вагон для цукерок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Вагон для іграшок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Вагон для батарейок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Вагон для газованої води STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Вагон для пластиліну STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (електровоз) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Пасажирський вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Поштовий вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Вагон для вугілля STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Цистерна для нафти STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Вагон для худоби STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Товарний вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Вагон для зерна STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Вагон для деревини STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Вагон для залізної руди STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Платформа для сталі STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Броньований вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Вагон для продуктів STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Вагон для паперу STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Вагон для мідної руди STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Цистерна для води STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Вагон для фруктів STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Вагон для каучуку STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Вагон для цукру STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Вагон для цукрової вати STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Вагон для ірисок STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Вагон для кульок STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Вагон для коли STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Вагон для цукерок STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Вагон для іграшок STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Вагон для батарейок STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Вагон для газованої води STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Вагон для пластиліну STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Автобус MPS Regal STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Автобус Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Автобус Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Автобус Foster MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Автобус Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Автобус Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Автобус Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh вугільний фургон STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl вугільний фургон STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW вугільний фургон STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS поштовий фургон STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard поштовий фургон STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry поштовий фургон STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover поштовий фургон STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught поштовий фургон STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow поштовий фургон STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe цистерна для нафти STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster цистерна для нафти STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry цистерна для нафти STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott фургон для худоби STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl фургон для худоби STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster фургон для худоби STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh вантажівка для товарів STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead вантажівка для товарів STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss вантажівка для товарів STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford вантажівка для зерна STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas вантажівка для зерна STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss вантажівка для зерна STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe вантажівка для дерева STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster вантажівка для дерева STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland вантажівка для дерева STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS вантажівка для залізної руди STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl вантажівка для залізної руди STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy вантажівка для залізної руди STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh вантажівка для сталі STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl вантажівка для сталі STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling вантажівка для сталі STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh броньоване авто STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl броньоване авто STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster броньоване авто STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster авто для продуктів STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry авто для продуктів STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy авто для продуктів STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl вантажівка для паперу STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh вантажівка для паперу STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS вантажівка для паперу STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS вантажівка для мідної руди STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl вантажівка для мідної руди STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss вантажівка для мідної руди STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl цистерна для води STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh цистерна для води STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS цистерна для води STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh вантажівка для фруктів STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl вантажівка для фруктів STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling вантажівка для фруктів STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh вантажівка для каучуку STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl вантажівка для каучука STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMTвантажівка для каучука STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover вантажівка для цукру STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught вантажівка для цукру STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow вантажівка для цукру STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover вантажівка для коли STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught вантажівка для коли STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow вантажівка для коли STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover вантажівка для цукрової вати STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught вантажівка для цукрової вати STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow вантажівка для цукрової вати STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover вантажівка для ірисок STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught вантажівка для ірисок STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow вантажівка для ірисок STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover вагон для іграшок STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught вагон для іграшок STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow вагон для іграшок STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover вантажівка для цукерок STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught вантажівка для цукерок STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow вантажівка для цукерок STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover вантажівка для батарейок STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught вантажівка для батарейок STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow вантажівка для батарейок STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover вантажівка для газованої води STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught вантажівка для газованої води STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow вантажівка для газованої води STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover вантажівка для пластиліну STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught вантажівка для пластиліну STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow вантажівка для пластиліну STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover вантажівка для кульок STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught вантажівка для кульок STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow вантажівка для кульок STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Танкер MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Танкер CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Пасажирський пором MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Пасажирський пором FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Судно на повітряній подушці Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Пасажирский пором Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Пасажирский пором Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Вантажний корабель Яхта STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Вантажний корабель Бейквел STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Вантажний корабель MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Вантажний корабель Потужний STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Гелікоптер Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Гелікоптер Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Гелікоптер Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :Буй {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :Буй {TOWN} №{COMMA} STR_FORMAT_COMPANY_NUM :(Компанія {COMMA}) STR_FORMAT_GROUP_NAME :Група {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Пункт {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Пункт {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Депо {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Депо {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Гараж {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Гараж {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Док {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Док {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :Ангар {STATION} STR_UNKNOWN_STATION :невідома станція STR_DEFAULT_SIGN_NAME :Позначка STR_COMPANY_SOMEONE :дехто STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Спостерігач, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/hebrew.txt0000644000000000000000000155555412246102561015441 0ustar rootroot##name Hebrew ##ownname עברית ##isocode he_IL ##plural 0 ##textdir rtl ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x040d ##grflangid 0x61 ##gender m f ##case singular plural gen # $Id: hebrew.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(מחרוזת לא ידועה) STR_JUST_NOTHING :כלום # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :נוסעים STR_CARGO_PLURAL_COAL :פחם STR_CARGO_PLURAL_MAIL :דואר STR_CARGO_PLURAL_OIL :נפט STR_CARGO_PLURAL_LIVESTOCK :בקר STR_CARGO_PLURAL_GOODS :מוצרים STR_CARGO_PLURAL_GRAIN :תבואה STR_CARGO_PLURAL_WOOD :עץ STR_CARGO_PLURAL_IRON_ORE :עפרת ברזל STR_CARGO_PLURAL_STEEL :פלדה STR_CARGO_PLURAL_VALUABLES :מוצרי ערך STR_CARGO_PLURAL_COPPER_ORE :עפרת נחושת STR_CARGO_PLURAL_MAIZE :תירס STR_CARGO_PLURAL_FRUIT :פירות STR_CARGO_PLURAL_DIAMONDS :יהלומים STR_CARGO_PLURAL_FOOD :מזון STR_CARGO_PLURAL_PAPER :נייר STR_CARGO_PLURAL_GOLD :זהב STR_CARGO_PLURAL_WATER :מים STR_CARGO_PLURAL_WHEAT :חיטה STR_CARGO_PLURAL_RUBBER :גומי STR_CARGO_PLURAL_SUGAR :סוכר STR_CARGO_PLURAL_TOYS :צעצועים STR_CARGO_PLURAL_CANDY :ממתקים STR_CARGO_PLURAL_COLA :קולה STR_CARGO_PLURAL_COTTON_CANDY :שערות סבתא STR_CARGO_PLURAL_BUBBLES :בועות STR_CARGO_PLURAL_TOFFEE :טופי STR_CARGO_PLURAL_BATTERIES :סוללות STR_CARGO_PLURAL_PLASTIC :פלסטיק STR_CARGO_PLURAL_FIZZY_DRINKS :משקאות מוגזים # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :נוסע STR_CARGO_SINGULAR_PASSENGER.plural :נוסעים STR_CARGO_SINGULAR_COAL :פחם STR_CARGO_SINGULAR_MAIL :דואר STR_CARGO_SINGULAR_OIL :נפט STR_CARGO_SINGULAR_LIVESTOCK :בקר STR_CARGO_SINGULAR_GOODS :מוצר STR_CARGO_SINGULAR_GOODS.plural :מוצרים STR_CARGO_SINGULAR_GRAIN :תבואה STR_CARGO_SINGULAR_WOOD :עץ STR_CARGO_SINGULAR_IRON_ORE :עפרת ברזל STR_CARGO_SINGULAR_IRON_ORE.plural :עופרות ברזל STR_CARGO_SINGULAR_STEEL :פלדה STR_CARGO_SINGULAR_VALUABLES :מוצר ערך STR_CARGO_SINGULAR_VALUABLES.plural :מוצרי ערך STR_CARGO_SINGULAR_COPPER_ORE :עפרת נחושת STR_CARGO_SINGULAR_COPPER_ORE.plural :עופרות נחושת STR_CARGO_SINGULAR_MAIZE :תירס STR_CARGO_SINGULAR_FRUIT :פרי STR_CARGO_SINGULAR_FRUIT.plural :פירות STR_CARGO_SINGULAR_DIAMOND :יהלום STR_CARGO_SINGULAR_DIAMOND.plural :יהלומים STR_CARGO_SINGULAR_FOOD :מזון STR_CARGO_SINGULAR_PAPER :נייר STR_CARGO_SINGULAR_GOLD :זהב STR_CARGO_SINGULAR_WATER :מים STR_CARGO_SINGULAR_WHEAT :חיטה STR_CARGO_SINGULAR_RUBBER :גומי STR_CARGO_SINGULAR_SUGAR :סוכר STR_CARGO_SINGULAR_TOY :צעצוע STR_CARGO_SINGULAR_TOY.plural :צעצועים STR_CARGO_SINGULAR_CANDY :ממתק STR_CARGO_SINGULAR_CANDY.plural :ממתקים STR_CARGO_SINGULAR_COLA :קולה STR_CARGO_SINGULAR_COTTON_CANDY :צמר גפן מתוק STR_CARGO_SINGULAR_BUBBLE :בועה STR_CARGO_SINGULAR_BUBBLE.plural :בועות STR_CARGO_SINGULAR_TOFFEE :טופי STR_CARGO_SINGULAR_BATTERY :סוללה STR_CARGO_SINGULAR_BATTERY.plural :סוללות STR_CARGO_SINGULAR_PLASTIC :פלסטיק STR_CARGO_SINGULAR_FIZZY_DRINK :משקה מוגז STR_CARGO_SINGULAR_FIZZY_DRINK.plural :משקאות מוגזים # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{P 0 "נוסע " ""}{COMMA}{P "" " נוסעים"} STR_QUANTITY_COAL :{WEIGHT_LONG} של פחם STR_QUANTITY_MAIL :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של דואר STR_QUANTITY_OIL :{VOLUME_LONG} של נפט STR_QUANTITY_LIVESTOCK :{P 0 "פריט " ""}{COMMA}{P "" " פריטים"} של בקר STR_QUANTITY_GOODS :{P 0 " ארגז" ""}{COMMA}{P "" " ארגזים"} של מוצרים STR_QUANTITY_GRAIN :{WEIGHT_LONG} של חיטה STR_QUANTITY_WOOD :{WEIGHT_LONG} של עצים STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} של עפרת ברזל STR_QUANTITY_STEEL :{WEIGHT_LONG} של פלדה STR_QUANTITY_VALUABLES :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של מוצרי ערך STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} של עפרת נחושת STR_QUANTITY_MAIZE :{WEIGHT_LONG} של תירס STR_QUANTITY_FRUIT :{WEIGHT_LONG} של פירות STR_QUANTITY_DIAMONDS :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של יהלומים STR_QUANTITY_FOOD :{WEIGHT_LONG} של מזון STR_QUANTITY_PAPER :{WEIGHT_LONG} של נייר STR_QUANTITY_GOLD :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של זהב STR_QUANTITY_WATER :{VOLUME_LONG} של מים STR_QUANTITY_WHEAT :{WEIGHT_LONG} של חיטה STR_QUANTITY_RUBBER :{VOLUME_LONG} של גומי STR_QUANTITY_SUGAR :{WEIGHT_LONG} של סוכר STR_QUANTITY_TOYS :{P 0 "צעצוע " ""}{COMMA}{P "" " צעצועים"} STR_QUANTITY_SWEETS :{P 0 "שק " ""}{COMMA}{P "" " שקים"} של ממתקים STR_QUANTITY_COLA :{VOLUME_LONG} של קולה STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} של צמר גפן מתוק STR_QUANTITY_BUBBLES :{P 0 "בועה " ""}{COMMA}{P "" " בועות"} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} של טופי STR_QUANTITY_BATTERIES :{P 0 "סוללה " ""}{COMMA}{P "" " סוללות"} STR_QUANTITY_PLASTIC :{VOLUME_LONG} של פלסטיק STR_QUANTITY_FIZZY_DRINKS :{P 0 "משקה מוגז " ""}{COMMA}{P "" " משקאות מוגזים"} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}נס STR_ABBREV_COAL :{TINY_FONT}פחם STR_ABBREV_MAIL :{TINY_FONT}דו STR_ABBREV_OIL :{TINY_FONT}נפ STR_ABBREV_LIVESTOCK :{TINY_FONT}בק STR_ABBREV_GOODS :{TINY_FONT}מצ STR_ABBREV_GRAIN :{TINY_FONT}תב STR_ABBREV_WOOD :{TINY_FONT}עץ STR_ABBREV_IRON_ORE :{TINY_FONT}עב STR_ABBREV_STEEL :{TINY_FONT}בר STR_ABBREV_VALUABLES :{TINY_FONT}מע STR_ABBREV_COPPER_ORE :{TINY_FONT}ענ STR_ABBREV_MAIZE :{TINY_FONT}תי STR_ABBREV_FRUIT :{TINY_FONT}פר STR_ABBREV_DIAMONDS :{TINY_FONT}יה STR_ABBREV_FOOD :{TINY_FONT}מז STR_ABBREV_PAPER :{TINY_FONT}ני STR_ABBREV_GOLD :{TINY_FONT}זה STR_ABBREV_WATER :{TINY_FONT}מים STR_ABBREV_WHEAT :{TINY_FONT}חט STR_ABBREV_RUBBER :{TINY_FONT}גמ STR_ABBREV_SUGAR :{TINY_FONT}סכ STR_ABBREV_TOYS :{TINY_FONT}צע STR_ABBREV_SWEETS :{TINY_FONT}מם STR_ABBREV_COLA :{TINY_FONT}קולה STR_ABBREV_CANDYFLOSS :{TINY_FONT}סוכר על מקל STR_ABBREV_BUBBLES :{TINY_FONT}בועות STR_ABBREV_TOFFEE :{TINY_FONT}טפ STR_ABBREV_BATTERIES :{TINY_FONT}בטריות STR_ABBREV_PLASTIC :{TINY_FONT}פל STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ממ STR_ABBREV_NONE :{TINY_FONT}כל STR_ABBREV_ALL :{TINY_FONT}הכל # 'Mode' of transport for cargoes STR_PASSENGERS :{P 0 "נוסע " ""}{COMMA}{P "" " נוסעים"} STR_BAGS :{P 0 "שק " ""}{COMMA}{P "" " שקים"} STR_TONS :{P 0 "טון " ""}{COMMA}{P "" " טונות"} STR_LITERS :{P 0 "ליטר " ""}{COMMA}{P "" " ליטרים"} STR_ITEMS :{P 0 "פריט " ""}{COMMA}{P "" "פריטים"} STR_CRATES :{P 0 "ארגז " ""}{COMMA}{P "" "ארגזים"} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :כחול כהה STR_COLOUR_PALE_GREEN :ירוק חיוור STR_COLOUR_PINK :ורוד STR_COLOUR_YELLOW :צהוב STR_COLOUR_RED :אדום STR_COLOUR_LIGHT_BLUE :כחול בהיר STR_COLOUR_GREEN :ירוק STR_COLOUR_DARK_GREEN :ירוק כהה STR_COLOUR_BLUE :כחול STR_COLOUR_CREAM :קרם STR_COLOUR_MAUVE :חום-סגול STR_COLOUR_PURPLE :סגול STR_COLOUR_ORANGE :כתום STR_COLOUR_BROWN :חום STR_COLOUR_GREY :אפור STR_COLOUR_WHITE :לבן # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} מייל לשעה STR_UNITS_VELOCITY_METRIC :{COMMA} קמ"ש STR_UNITS_VELOCITY_SI :{COMMA} מטר\שניה STR_UNITS_POWER_IMPERIAL :{COMMA}כ"ס STR_UNITS_POWER_METRIC :{COMMA}כ"ס STR_UNITS_POWER_SI :{COMMA}קילו וואט STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}ט' STR_UNITS_WEIGHT_SHORT_SI :{COMMA}ק"ג STR_UNITS_WEIGHT_LONG_METRIC :{P 0 "טון " ""}{COMMA}{P "" " טונות"} STR_UNITS_WEIGHT_LONG_SI :{COMMA} ק"ג STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}ל' STR_UNITS_VOLUME_SHORT_SI :{COMMA}מ'³ STR_UNITS_VOLUME_LONG_METRIC :{P 0 "ליטר " ""}{COMMA}{P "" " ליטרים"} STR_UNITS_VOLUME_LONG_SI :{COMMA} ³מטר STR_UNITS_FORCE_SI :{COMMA} קילו ניוטן STR_UNITS_HEIGHT_IMPERIAL :{COMMA} רגל STR_UNITS_HEIGHT_SI :{COMMA} מ' # Common window strings STR_LIST_FILTER_TITLE :{BLACK}מחרוזת סינון: STR_LIST_FILTER_OSKTITLE :{BLACK}הכנס מחרוזת סינון STR_LIST_FILTER_TOOLTIP :{BLACK}הכנס מילת מפתח לסינון הרשימה לפיה STR_TOOLTIP_SORT_ORDER :{BLACK}(בחר(י) סדר מיון (עולה\יורד STR_TOOLTIP_SORT_CRITERIA :{BLACK}בחר\י קרטריון מיון STR_TOOLTIP_FILTER_CRITERIA :{BLACK}בחר קריטריון סינון STR_BUTTON_SORT_BY :{BLACK}מיון לפי STR_BUTTON_LOCATION :{BLACK}מיקום STR_BUTTON_RENAME :{BLACK}שנה שם STR_TOOLTIP_CLOSE_WINDOW :{BLACK}סגור חלון STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}כותרת החלון - גרור להזזה STR_TOOLTIP_SHADE :{BLACK}הצל חלון - הצג רק את שורת הכותרת STR_TOOLTIP_DEBUG :{BLACK}הצג מידע דיבאג של newGRF STR_TOOLTIP_STICKY :{BLACK}'סמן חלון זה כחלון מוגן מפני מקש 'סגור את כל החלונות STR_TOOLTIP_RESIZE :{BLACK}לחץ ומשוך כדי לשנות את גודל החלון STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}החלף בין גודל חלון קטן/גדול STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}כפתור גלילה - גולל רשימה מעלה/מטה STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}פס הגלילה - גלילה של רשימות ימינה\שמאלה STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}הסרת בניינים וכו' במשבצת קרקע. מקש Ctrl מסמן את האזור באופן אלכנסוני. מקש Shift מעביר בין בנייה לבין הצגה של הערכת העלות # Query window STR_BUTTON_DEFAULT :{BLACK}בחירת מחדל STR_BUTTON_CANCEL :{BLACK}ביטול STR_BUTTON_OK :{BLACK}אישור # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}{NUM} :אורך STR_MEASURE_AREA :{BLACK}{NUM} x {NUM} : שטח STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}אורך: {NUM}{}הפרש גבהים: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}איזור: {NUM} x {NUM}{}הפרש גבהים: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}אכלוסיה STR_SORT_BY_CAPTION_NAME :{BLACK}שם STR_SORT_BY_CAPTION_DATE :{BLACK}תאריך # These are used in dropdowns STR_SORT_BY_NAME :שם STR_SORT_BY_PRODUCTION :ייצור STR_SORT_BY_TYPE :סוג STR_SORT_BY_TRANSPORTED :סחורה שנשלחה STR_SORT_BY_NUMBER :מספר STR_SORT_BY_PROFIT_LAST_YEAR :רווח שנה שעברה STR_SORT_BY_PROFIT_THIS_YEAR :רווח השנה STR_SORT_BY_AGE :גיל STR_SORT_BY_RELIABILITY :אמינות STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :סה"כ קיבולת מכל סוג סחורה STR_SORT_BY_MAX_SPEED :מקסימום מהירות STR_SORT_BY_MODEL :דגם STR_SORT_BY_VALUE :ערך STR_SORT_BY_LENGTH :אורך STR_SORT_BY_LIFE_TIME :זמן חיים נותר STR_SORT_BY_TIMETABLE_DELAY :עיכוב בלוח זמנים STR_SORT_BY_FACILITY :סוג תחנה STR_SORT_BY_WAITING :ערך הסחורה שמחכה STR_SORT_BY_RATING_MAX :דירוג מטען גבוה ביותר STR_SORT_BY_RATING_MIN :דירוג מטען נמוך ביותר STR_SORT_BY_ENGINE_ID :מספר קטר STR_SORT_BY_COST :מחיר STR_SORT_BY_POWER :כח STR_SORT_BY_TRACTIVE_EFFORT :מאמץ גרירה STR_SORT_BY_INTRO_DATE :תאריך התחלת ייצור STR_SORT_BY_RUNNING_COST :עלות הפעלה STR_SORT_BY_POWER_VS_RUNNING_COST :כח/עלות הפעלה STR_SORT_BY_CARGO_CAPACITY :קיבולת סחורה STR_SORT_BY_RANGE :טווח # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}השהה משחק STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}הרץ את הזמן במהירות STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}אפשרויות STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}שמור, עזוב משחק, צא STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}הראה מפה,חלון תצוגה נוסף או רשימת סימניות STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}הצג מדריך ערים STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}הצג סובסידיות STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}הצג רשימת תחנות החברה STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}הצג מידע כספי על החברה STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}הצג מידע כללי על החברה STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}הצג גרפים STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}הצג את טבלת ליגת החברות STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ממן בניה של תעשייה חדשה או הצג את רשימת כל התעשיות STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}הצג את רשימת הרכבות של החברה. Ctrl+לחיצה בכדי לברור פתיחה של רשימת הקבוצה/רכבים STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}הצג את רשימת הרכבים של החברה. Ctrl+לחיצה בורר פתיחה של רשימת הרכבים/הקבוצות STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}הצג את רשימת כלי השייט של החברה. Ctrl+לחיצה בורר את פתיחת רשימת הרכבים/הקבוצות STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}הצג את רשימת כלי הטייס של החברה. Ctrl+לחיצה בורר את פתיחת רשימת הרכבים/הקבוצות STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}הגדל תצוגה STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}הקטן תצוגה STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}הנחת פסי רכבת STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}סלילת כבישים STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}בניית נתיבים ימיים STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}בניית נתיבי אויר STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}'הצג את סרגל פני השטח לעיצוב פני הקרקע, נטיעת עצים וכו STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}הצג את חלון הצלילים/מנגינת רקע STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}הצג הודעה אחרונה/מבזק חדשות אחרון, הצג הגדרות הודעה STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}מידע על איזור קרקע, קונסולה, דיבאג של סקריפטים, צילומי מסך, אודות OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}החלף סרגל כלים # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}שמור תרחיש, טען תרחיש, עזוב את עורך התרחישים, צא STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}עורך התרחישים STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}שנה את שנת ההתחלה לשנה 1 פחות STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}שנה את שנת ההתחלה לשנה 1 יותר STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}לחץ כאן להכנסת שנת ההתחלה STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}הצג מפה, מדריך עיירות STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}יצירת קרקע STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}יצירת ערים STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}יצירת תעשיות STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}סלילת כבישים STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}נטע עצים. מקש ה-Shift מעביר בין מצב בנייה לבין מצב הצגת הערכת עלות STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}מקם סימניה STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}מקם פריט. מקש ה-Shift מעביר בין מצב בנייה לבין מצב הצגת הערכת עלות ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :שמור תרחיש STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :טען תרחיש STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :שמור מפת גבהים STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :טען מפת גבהים STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :עזוב את עורך התרחישים STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :יציאה ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :אפשרויות המשחק STR_SETTINGS_MENU_CONFIG_SETTINGS :הגדרות מתקדמות STR_SETTINGS_MENU_SCRIPT_SETTINGS :הגדרות סקריפטים של משחק/שחקני מחשב STR_SETTINGS_MENU_NEWGRF_SETTINGS :הגדרות GRF חדש STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :אפשרויות שקיפות STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :שמות ערים STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :שמות תחנות STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :שמות נקודות ציון מוצגים STR_SETTINGS_MENU_SIGNS_DISPLAYED :סימניות STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :שלטי ושמות המתחרה מוצגים STR_SETTINGS_MENU_FULL_ANIMATION :אנימציה מלאה STR_SETTINGS_MENU_FULL_DETAIL :פרטים מלאים STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :בניינים שקופים STR_SETTINGS_MENU_TRANSPARENT_SIGNS :שלטים שקופים ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :שמור משחק STR_FILE_MENU_LOAD_GAME :טען משחק STR_FILE_MENU_QUIT_GAME :עזוב משחק STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :יציאה ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :מפת העולם STR_MAP_MENU_EXTRA_VIEW_PORT :השקפה נוספת STR_MAP_MENU_SIGN_LIST :רשימת שלטים ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :מדריך הערים STR_TOWN_MENU_FOUND_TOWN :ייסד עיר ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :סובסידיות STR_SUBSIDIES_MENU_GOAL :מטרות נוכחיות ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :גרף רווח תפעולי STR_GRAPH_MENU_INCOME_GRAPH :גרף הכנסות STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :גרף שינוע מטענים STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :גרף היסטוריית ביצועים STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :גרף שווי החברה STR_GRAPH_MENU_CARGO_PAYMENT_RATES :שערי תשלום עבור שירותי הובלה ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :טבלת ליגת החברות STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :דירוג ביצועים מפורט STR_GRAPH_MENU_HIGHSCORE :טבלת ניקוד מירבי ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :ספריית תעשיות STR_INDUSTRY_MENU_INDUSTRY_CHAIN :שרשראות תעשיה STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :ממן תעשיה חדשה ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :בניית מסילות STR_RAIL_MENU_ELRAIL_CONSTRUCTION :בניית מסילות רכבת מחושמלות STR_RAIL_MENU_MONORAIL_CONSTRUCTION :בניית מסילות חד פסיות STR_RAIL_MENU_MAGLEV_CONSTRUCTION :בניית מסילות מגנטיות ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :סלילת כבישים STR_ROAD_MENU_TRAM_CONSTRUCTION :בניית מסילה חשמלית ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :בניית נתיבי מים ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :בניית שדה תעופה ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :עיצוב פני השטח STR_LANDSCAPING_MENU_PLANT_TREES :נטע עצים STR_LANDSCAPING_MENU_PLACE_SIGN :מקם סימניות ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :צלילים/מנגינה ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :הודעה אחרונה/מבזק חדשות אחרון STR_NEWS_MENU_MESSAGE_HISTORY_MENU :היסטורית הודעות ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :מידע על שטח קרקע STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :פתח/סגור קונסולה STR_ABOUT_MENU_AI_DEBUG :דיבאג של סקריפטים של בינה מלאכותית או של המשחק STR_ABOUT_MENU_SCREENSHOT :צילום מסך STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :צילום מסך בהגדלה מלאה STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :ברירת מחדל של תקריב צילום מסך STR_ABOUT_MENU_GIANT_SCREENSHOT :צילום מסך ענק STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD'{NBSP}אודות STR_ABOUT_MENU_SPRITE_ALIGNER :מיישר ספרייטים STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :הדלק/כבה הצגת תיבות גבול של ספרייטים STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :הפעל/כבה צביעת בלוקים לא מעודכנים ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 STR_ORDINAL_NUMBER_4TH :4 STR_ORDINAL_NUMBER_5TH :5 STR_ORDINAL_NUMBER_6TH :6 STR_ORDINAL_NUMBER_7TH :7 STR_ORDINAL_NUMBER_8TH :8 STR_ORDINAL_NUMBER_9TH :9 STR_ORDINAL_NUMBER_10TH :10 STR_ORDINAL_NUMBER_11TH :11 STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 STR_ORDINAL_NUMBER_16TH :16 STR_ORDINAL_NUMBER_17TH :17 STR_ORDINAL_NUMBER_18TH :18 STR_ORDINAL_NUMBER_19TH :19 STR_ORDINAL_NUMBER_20TH :20 STR_ORDINAL_NUMBER_21ST :21 STR_ORDINAL_NUMBER_22ND :22 STR_ORDINAL_NUMBER_23RD :23 STR_ORDINAL_NUMBER_24TH :24 STR_ORDINAL_NUMBER_25TH :25 STR_ORDINAL_NUMBER_26TH :26 STR_ORDINAL_NUMBER_27TH :27 STR_ORDINAL_NUMBER_28TH :28 STR_ORDINAL_NUMBER_29TH :29 STR_ORDINAL_NUMBER_30TH :30 STR_ORDINAL_NUMBER_31ST :31 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :ינואר STR_MONTH_ABBREV_FEB :פברואר STR_MONTH_ABBREV_MAR :מרץ STR_MONTH_ABBREV_APR :אפריל STR_MONTH_ABBREV_MAY :מאי STR_MONTH_ABBREV_JUN :יוני STR_MONTH_ABBREV_JUL :יולי STR_MONTH_ABBREV_AUG :אוגוסט STR_MONTH_ABBREV_SEP :ספטמבר STR_MONTH_ABBREV_OCT :אוקטובר STR_MONTH_ABBREV_NOV :נובמבר STR_MONTH_ABBREV_DEC :דצמבר STR_MONTH_JAN :ינואר STR_MONTH_FEB :פברואר STR_MONTH_MAR :מרץ STR_MONTH_APR :אפריל STR_MONTH_MAY :מאי STR_MONTH_JUN :יוני STR_MONTH_JUL :יולי STR_MONTH_AUG :אוגוסט STR_MONTH_SEP :ספטמבר STR_MONTH_OCT :אוקטובר STR_MONTH_NOV :נובמבר STR_MONTH_DEC :דצמבר ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK} STR_GRAPH_KEY_TOOLTIP :{BLACK}הצג מפתחות לגרפים STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}גרף רווח תפעולי STR_GRAPH_INCOME_CAPTION :{WHITE}גרף הכנסות STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}יחידות מטען ששונעו STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}(מדד הביצועים (הציון המירבי = 1000 STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}שווי החברות STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}שיעורי התשלום עבור הובלת מטענים STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}משך ההובלה בימים STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}תשלום עבור הובלת 10 יחידות (או 10,000 ליטר) למרחק 20 משבצות STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}אפשר הכל STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}בטל הכל STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}הצג את כל המטענים בגרף שיעורי תשלום למטען STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}הצג ללא מטענים בגרף שיעורי תשלום למטען STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}הצג/הסתר סוג מטען STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}הצג דירוגי ביצועים מפורטים # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}מפתחות להשוואה בין החברות STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}לחץ כאן בכדי להוסיף/להסיר את החברה מהגרף # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}טבלת ליגת החברות STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :מהנדס זוטר STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :מהנדס בכיר STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :מנהל תחבורה זוטר STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :מנהל תחבורה בכיר STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :דירקטור STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :מנכ"ל STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :יו"ר STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :נשיא STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :טייקון # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}ניתוח ביצועים מפורט STR_PERFORMANCE_DETAIL_KEY :{BLACK}סעיף STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}צפה בפרטים אודות חברה זו ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK} : כלי תחבורה STR_PERFORMANCE_DETAIL_STATIONS :{BLACK} : תחנות STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}: רווח מינימלי STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}: הכנסה מינימלית STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}: הכנסה מקסימאלית STR_PERFORMANCE_DETAIL_DELIVERED ::{BLACK}: מטענים ששונעו STR_PERFORMANCE_DETAIL_CARGO :{BLACK} : סוגי מטענים STR_PERFORMANCE_DETAIL_MONEY :{BLACK}: מאזן STR_PERFORMANCE_DETAIL_LOAN :{BLACK} : הלוואה STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}: סה"כ ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}מספר כלי תחבורה שהציגו רווחים בשנה החולפת. נכללים רכבים, רכבות, כלי שייט וכלי טייס STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}מספר התחנות שקיבלו שירות לאחרונה. כל חלק של תחנה (למשל, תחנות רכבת, תחנות אוטובוס, נמלי תעופה) נספרים בנפרד, אפילו אם הם חלקים של תחנה אחת STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}(הרווח של כלי התחבורה בעלי ההכנסה הנמוכה ביותר (רק כלים בני שנתיים ויותר נלקחים בחשבון STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}כמות הכסף שהרוויחה החברה בחודש הגרוע ביותר ב-12 הריבעונים האחרונים STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}כמות הכסף שהרוויחה החברה בחודש המוצלח ביותר ב-12 הריבעונים האחרונים STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}מספר יחידות המטען ששונעו בארבעת הריבעונים הארונים STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}מספר יחידות המטען ששונעו בריבעון האחרון STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}מאזן חשבון הבנק של החברה STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}גודל ההלוואה שלקחה החברה STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}סה"כ נקודות מתוך 1000 נקודות אפשריות # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}הגדרות מנגינה STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}הכל STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}סגנון ישן STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}סגנון חדש STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}סגנון קליל STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}מותאם אישית 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}מותאם אישית 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}עוצמת מנגינת רקע STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}עוצמת הצלילים STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}מינ' STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}מקס' STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}רצועה STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}כותרת STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}ערבב STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}תכנית STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}דלג לרצועה הקודמת ברשימה STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}דלג לרצועה הבאה ברשימה STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}הפסק ניגון STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}התחל לנגן STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}משוך את הסמנים כדי לשנות את עצמת המנגינה/הצלילים STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}'בחר בתוכנית 'כל המנגינות STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}'בחר בתוכנית 'סגנון ישן STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}'בחר בתוכנית 'סגנון חדש STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}בחר בתוכנית מנגינה בסגנון קליל STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}(בחר בתוכנית 'מותאמת 1' (מוגדר על ידי המשתמש STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}(בחר בתוכנית 'מותאמת 2' (מוגדר על ידי המשתמש STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}עירבוב תוכניות פועל/כבוי STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}הצג את חלון בחירת המנגינה STR_ERROR_NO_SONGS :{WHITE}נבחרה ערכת מוזיקה ללא שירים. לא יושמעו שירים # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}בחירת תכנית מנגינה STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}רשימת רצועות STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}תוכנית- '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}מחק STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}מחק תוכנית נוכחית STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}(לחץ כאן כדי להוסיף לתוכנית הנוכחית(מותאם אישית1 או מותאם אישית 2 בלבד STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}(לחץ על רצועה כדי להסיר אותה מהתוכנית הנוחכית(מותאם אישית 1 או מותאם אישית 2 בלבד # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}חמש החברות שהגיעו לשנת {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}טבלת ליגה של חברות ב {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}.{COMMA} STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :איש עסקים STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :יזם STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :תעשיין STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :קפיטליסט STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :איל הון STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :איל הון STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :טיקון המאה STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} הגיעה למעמד '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}'{2:STRING}' הגיע לדרגת {NBSP}{1:COMPANY} מ {NBSP}{0:PRESIDENT_NAME} # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}{STRING} - מפה STR_SMALLMAP_TYPE_CONTOURS :קווי מיתאר STR_SMALLMAP_TYPE_VEHICLES :כלי תעבורה STR_SMALLMAP_TYPE_INDUSTRIES :תעשיות STR_SMALLMAP_TYPE_ROUTES :דרכים STR_SMALLMAP_TYPE_VEGETATION :צמחייה STR_SMALLMAP_TYPE_OWNERS :בעלים STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}הצג מתאר פני השטח STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}הצג כלי רכב STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}הצג תעשיות STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}הצג נתיבי תעבורה STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}הצג צמחיה STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}הצג פרטי בעלות על קרקע STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}הקלק על סוג תעשיה כדי לאפשר או לבטל את הצגתה. קליק תוך לחיצה על מקש Ctrl מבטל את כל הסוגים פרט לזה הנבחר. קליק נוסף תוך לחיצה על מקש Ctrl יאפשר את כל סוגי התעשיות STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}הקלק על חברה כדי לאפשר או לבטל את הצגת נכסיה. קליק תוך לחיצה על מקש Ctrl מבטל את כל החברות פרט לזו הנבחרת. קליק נוסף תוך לחיצה על מקש Ctrl יאפשר את כל החברות STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}כבישים STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}מסילות STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}תחנות/שדות תעופה/נמלים STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}בניינים/תעשיות STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}כלי תעבורה STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}רכבות STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}כלי רכב STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}כלי שייט STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}כלי טייס STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}נתיבי תחבורה STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}יער STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}תחנת רכבת STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}תחנת טעינה למשאיות STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}תחנת אוטובוס STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}שדה תעופה/מנחת מסוקים STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}מזח STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}אדמת טרשים STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}עשביה STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}אדמה חשופה STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}שדות STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}עצים STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}סלעים STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}מים STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}ללא בעלים STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}עיירות STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}תעשיות STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}מדבר STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}שלג STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}הצג/הסתר שמות ערים STR_SMALLMAP_CENTER :{BLACK}מרכז את המפה הקטנה על המיקום הנוכחי STR_SMALLMAP_INDUSTRY :{TINY_FONT}({1:NUM}){0:STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}השתק את כולן STR_SMALLMAP_ENABLE_ALL :{BLACK}הצג את כולן STR_SMALLMAP_SHOW_HEIGHT :{BLACK}הצג גובה STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}אל תציג תעשיות על המפה STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}הצג את כל התעשיות על המפה STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}שנה מצב הצגה של מפת גבהים STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}הצג נכסיה של אף חברה על גבי המפה STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}הצג את כל נכסי החברות על גבי המפה # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}הצג הודעה או חדשות אחרונים STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * המשחק מושהה * * STR_STATUSBAR_AUTOSAVE :{RED}שמירה אוטומטית STR_STATUSBAR_SAVING_GAME :{RED}* * שומר משחק * * # News message history STR_MESSAGE_HISTORY :{WHITE}היסטוריית ההודעות STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}רשימת ההודעות האחרונות STR_MESSAGE_NEWS_FORMAT :{1:STRING} - {0:STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}הודעה STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}רכבת ראשונה הגיעה ל{STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}תושבים חוגגים . . .{}אוטובוס ראשון הגיע ל{STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}משאית ראשונה הגיעה ל{STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}חשמלית נוסעים ראשונה הגיעה ל{STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}חשמלית משא ראשונה הגיעה ל{STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}ספינה ראשונה הגיעה ל{STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}התושבים חוגגים . . .{}מטוס ראשון הגיע ל{STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK} !התנגשות רכבות {}{NBSP} נספו בפיצוץ כתוצאה מהתאונה {COMMA} STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}תאונת כלי רכב!{}נהג נהרג לאחר התנגשות ברכבת STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}תאונת כלי רכב!{}{NBSP}נהרגו לאחר התנגשות עם רכבת {COMMA} STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK} !התרסקות מטוס {}{NBSP}{1:STATION} נספו בפיצוץ בשדה התעופה {NBSP}{0:COMMA} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}התרסקות מטוס!{}הדלק אזל במהלך הטיסה, {COMMA} נספו בפיצוץ STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK} אסון ספינת אוויר ב-{STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}!!! כלי רכב התרסק בהתנגשות עם עצם בלתי מזוהה STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}פיצוץ בבתי הזיקוק ליד {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}בית החרושת בסמוך ל{TOWN} הושמד בנסיבות מיסתוריות! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}עב"מ נחת בסמוך ל{TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK} שרידי פיצוץ מכרה פחם משאירים עקבות הרס ליד {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}נעדרים,חשש גדול לחייהם {COMMA} מבול ! שיטפון ! לפחות STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}!!!חברת תחבורה בקשיים STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} תימכר או תוכרז כפושטת רגל אם לא תשפר את ביצועיה בקרוב! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}!איחוד חברות STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} נמכרה ל-{STRING} עבור {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}!פשיטת רגל STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}!נסגרה ע"י הנושים וכל נכסיה נמכרו {STRING} STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}חברת תחבורה חדשה הוקמה STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}חברת {STRING} החלה בבנייה ליד {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}!{STRING} רכשה את {STRING} STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(מנהל) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} מימן הקמה של עיר חדשה בשם {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} חדש/ה בבנייה בסמוך ל{TOWN}! STR_NEWS_INDUSTRY_PLANTED :{G=m}{BIG_FONT}{BLACK}{STRING} חדש ננטע בסמוך ל{TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} הכריז/ה על סגירה בקרוב! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}בעיות בהספקת חומרי גלם גרמו ל{STRING}להכריז על סגירה בקרוב! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}מחסור בעצים בסביבה הקרובה גרם ל{STRING} להכריז על סגירה בקרוב! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}!היורו הינו המטבע היחידי המשמש לסחר חליפין בארצך {} האיחוד המוניטרי האירופאי STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}מיתון עולמי!{}{}מומחי כלכלה חוששים מהגרוע מכל בזמן שהכלכלה בשפל! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}המיתון נגמר!{}{}מגמת עלייה במסחר מעניקה בטחון בזמן שהכלכלה מתחזקת! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK} !מגביר/ה תפוקה {INDUSTRY} STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}מרבץ פחם חדש נמצא ב{INDUSTRY}!{}צפויה הכפלה בתפוקה! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}מאגרי נפט חדשים נמצאו ב{INDUSTRY}!{}צפויה הכפלה בתפוקה! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}שיטות חקלאות מתקדמות ב{INDUSTRY} צפויות להכפיל את הייצור! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK} תפוקת {STRING} ב{INDUSTRY} עלתה ב-{COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :תפוקת {BIG_FONT}{BLACK}{INDUSTRY} ירדה ב-50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}מגיפת מזיקים ב-{INDUSTRY}!{} התפוקה ירדה ב-50%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK} ייצור {STRING} חודשי ב{INDUSTRY} ירד ב-{COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}ממתין/ממתינה במוסך {VEHICLE} STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} ממתין במוסך כלי הרכב STR_NEWS_SHIP_IS_WAITING :{WHITE}ממתינה במבדוק {VEHICLE} STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}ממתין בסככת המטוסים {VEHICLE} # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}ל{VEHICLE} חסר(ים) יעד(ים) במסלול הנסיעה של STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}ל{VEHICLE} יעד שאינו קיים עוד עבור STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}ל{VEHICLE} כפילות ברשימת היעדים של STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} יעד בלתי חוקי במסלול הנסיעה של # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}מתיישן {VEHICLE} STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}מתיישן מאוד {VEHICLE} STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}מתיישן מאוד, וזקוק להחלפה בדחיפות {VEHICLE} STR_NEWS_TRAIN_IS_STUCK :אינה יכולה למצוא נתיב המשך {WHITE}{VEHICLE} STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} הל{P "ך" "כה"} לאיבוד STR_NEWS_VEHICLE_IS_UNPROFITABLE :ריווחי {WHITE}{VEHICLE} שנה שעברה הם {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE}אינ{G 0 "ו" "ה"} יכול{G 0 "" "ה"} להגיע אל היעד הבא כי הוא מחוץ לטווח STR_NEWS_ORDER_REFIT_FAILED :כשלון בהתאמה מחדש הביא לעצירה של {WHITE}{VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}{1:STRING}{}נכשל {NBSP}{0:VEHICLE} חידוש אוטומטי עבור STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}{STRING} חדש זמין! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING} חדש זמין כעת - {ENGINE}! STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} אינה מקבלת יותר {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} אינה מקבלת יותר {STRING} או {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} מקבלת כעת {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} מקבלת כעת {STRING} ו{STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}פג תוקף הצעת סובסידיה:{}{}סובסידיה של הובלת {STRING.plural} מ{STRING} אל {STRING} לא תזכה עוד בסיבסוד. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}סובסידיה הוסרה:{}{}שירות הובלת {STRING.plural} מ{STRING} אל {STRING} אינו מסובסד יותר. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}הצעה למתן סובסידיה:{}{}שירות הובלת {STRING.plural} ראשון מ{STRING} אל {STRING} יזכה לסובסידיה בת שנה מהרשות המקומית! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}סובסידיה לשירות ניתנה לחברת {STRING}!{}{}שירות הובלת {STRING.plural} מ{STRING} אל {STRING} יזכה לשיעור תשלום גדול ב-50% לשנה הקרובה STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}סובסידיה לשירות ניתנה לחברת {STRING}!{}{}שירות הובלת {STRING.plural} מ{STRING} אל {STRING} יזכה לשיעור תשלום כפול לשנה הקרובה! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}סובסידיה לשירות ניתנה לחברת {STRING}!{}{}שירות הובלת {STRING.plural} מ{STRING} אל {STRING} יזכה לשיעור תשלום משולש לשנה הקרובה! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}סובסידיה לשירות ניתנה לחברת {STRING}!{}{}שירות הובלת {STRING.plural} מ{STRING} אל {STRING} יזכה לשיעור תשלום מוכפל פי 4 לשנה הקרובה! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}פקקי תנועה ענקיים ב{TOWN}!{}{} תכנית לשיפוץ מקיף של הכבישים במימון {STRING} מביאה לקטסטרופת תנועה לשישה חודשים STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}מונופול תחבורה! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}הרשות המקומית של {TOWN} חותמת חוזה עם {STRING} המעניק זכויות תעבורה בלעדיות למשך שנה! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}השקפה {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}העתק להשקפה STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}העתק את מיקום חלון התצוגה הראשי לחלון תצוגה זה STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}עבור למיקום שנמצא בחלון התצוגה STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}העתק את מיקום חלון התצוגה הזה אל חלון התצוגה הראשי # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}אפשרויות משחק STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}מטבע STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת מטבע ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :(GBP) לירה שטרלינג STR_GAME_OPTIONS_CURRENCY_USD :(USD) דולר אמריקאי STR_GAME_OPTIONS_CURRENCY_EUR :(EUR) יורו STR_GAME_OPTIONS_CURRENCY_JPY :(JPY) ין יפני STR_GAME_OPTIONS_CURRENCY_ATS :(ATS) שילינג אוסטרלי STR_GAME_OPTIONS_CURRENCY_BEF :(BEF) פרנק בולגרי STR_GAME_OPTIONS_CURRENCY_CHF :(CHF) פרנק שוודי STR_GAME_OPTIONS_CURRENCY_CZK :(CZK) קרונה צ'כית STR_GAME_OPTIONS_CURRENCY_DEM :(DEM) מרק גרמני STR_GAME_OPTIONS_CURRENCY_DKK :(DKK) קרונה דנית STR_GAME_OPTIONS_CURRENCY_ESP :(ESP) פזטה ספרדית STR_GAME_OPTIONS_CURRENCY_FIM :(FIM) מרק פיני STR_GAME_OPTIONS_CURRENCY_FRF :(FRF) פרנק צרפתי STR_GAME_OPTIONS_CURRENCY_GRD :(GRD) דרכמה יוונית STR_GAME_OPTIONS_CURRENCY_HUF :(HUF) פורינט הונגרי STR_GAME_OPTIONS_CURRENCY_ISK :(ISK) קרונה איסלנדית STR_GAME_OPTIONS_CURRENCY_ITL :(ITL) לירה איטלקית STR_GAME_OPTIONS_CURRENCY_NLG :(NLG) גילדן הולנדי STR_GAME_OPTIONS_CURRENCY_NOK :(NOK) קרונה נורווגית STR_GAME_OPTIONS_CURRENCY_PLN :(PLN) זלוטי פולני STR_GAME_OPTIONS_CURRENCY_RON :(RON) ליו רומני STR_GAME_OPTIONS_CURRENCY_RUR :(RUR) רובל רוסי STR_GAME_OPTIONS_CURRENCY_SIT :(SIT) טולר סלובני STR_GAME_OPTIONS_CURRENCY_SEK :(SEK) קרונה שוודית STR_GAME_OPTIONS_CURRENCY_TRY :(TRY) לירה טורקית STR_GAME_OPTIONS_CURRENCY_SKK :(SKK) קורונה סלובקית STR_GAME_OPTIONS_CURRENCY_BRL :(BRL) ריל ברזילאי STR_GAME_OPTIONS_CURRENCY_EEK :(EEK) קרוני אסטוני STR_GAME_OPTIONS_CURRENCY_LTL :(LTL) ליטאס ליטאי STR_GAME_OPTIONS_CURRENCY_KRW :(KRW) וון דרום קוריאני STR_GAME_OPTIONS_CURRENCY_ZAR :(ZAR) ראנד דרום אפריקאי STR_GAME_OPTIONS_CURRENCY_CUSTOM :אחר... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}יחידות מידה STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}בחירת יחידות מדידה ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :אימפריאל STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :מטרית STR_GAME_OPTIONS_MEASURING_UNITS_SI :השיטה הבינלאומית ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}רכבי כביש STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}בחר את צד הכביש בו יסעו כלי הרכב STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :סע בצד שמאל STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :סע בצד ימין STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}שמות הערים STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}בחר סגנון של שמות הערים ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :אנגלית STR_GAME_OPTIONS_TOWN_NAME_FRENCH :צרפתית STR_GAME_OPTIONS_TOWN_NAME_GERMAN :גרמנית STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :אנגלית STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :אמריקאי-לטיני STR_GAME_OPTIONS_TOWN_NAME_SILLY :מצחיק STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :שוודית STR_GAME_OPTIONS_TOWN_NAME_DUTCH :הולנדית STR_GAME_OPTIONS_TOWN_NAME_FINNISH :פינית STR_GAME_OPTIONS_TOWN_NAME_POLISH :פולנית STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :סלובקית STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :נורבגית STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :הונגרית STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :אוסטרית STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :רומנית STR_GAME_OPTIONS_TOWN_NAME_CZECH :צ'כית STR_GAME_OPTIONS_TOWN_NAME_SWISS :שווצרית STR_GAME_OPTIONS_TOWN_NAME_DANISH :דנית STR_GAME_OPTIONS_TOWN_NAME_TURKISH :טורקית STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :איטלקית STR_GAME_OPTIONS_TOWN_NAME_CATALAN :רומאית ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}שמירה אוטומטית STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}בחר פרק זמן בין שמירות אוטומטיות STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :כבוי STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :מידי חודש STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :כל 3 חודשים STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :כל 6 חודשים STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :כל 12 חודשים STR_GAME_OPTIONS_LANGUAGE :{BLACK}שפה STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}בחר את שפת הממשק STR_GAME_OPTIONS_FULLSCREEN :{BLACK}מסך מלא STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}סמן תיבה זו כדי לשחק OpenTTD על כל המסך STR_GAME_OPTIONS_RESOLUTION :{BLACK}רזלוציית המסך STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}בחר את רזולוציית המסך STR_GAME_OPTIONS_RESOLUTION_OTHER :אחר STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}פורמט עבור צילומי מסך STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}בחר את הפורמט של צילום המסך STR_GAME_OPTIONS_BASE_GRF :{BLACK}ערכת גרפיקה בסיסית STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}בחר בערכת גרפיקה בסיסית לשימוש STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{P 0 "קובץ " ""}{NUM}{P "" " קבצים"} חסר{P 0 "" ים}/הושחט{P 0 "" ו} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת הגרפיקה הבסיסית STR_GAME_OPTIONS_BASE_SFX :{BLACK}ערכת צלילים בסיסיים STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}בחר את ערכת הצלילים הבסיסיים לשימוש STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת הצלילים הבסיסיים STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}ערכת מוזיקת בסיס STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}בחר בערכת מוזיקת הבסיס לשימוש STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} קובץ פגום{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת המוזיקה הבסיסית STR_ERROR_FULLSCREEN_FAILED :{WHITE}נכשל בשינויי למסך מלא # Custom currency window STR_CURRENCY_WINDOW :{WHITE}מטבע מותאם אישית STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}שער חליפין: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK} הקטן את ערך המטבע שלך עבור פאונד (£) אחד STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}הגדל את ערך המטבע שלך עבור פאונד (£) אחד STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}קבע את שער החליפין של המטבע שלך עם פאונד (£) אחד STR_CURRENCY_SEPARATOR :{LTBLUE}תו מפריד: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}קבע תו מפריד עבור סוג המטבע שלך STR_CURRENCY_PREFIX :{LTBLUE}תחילית: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}קבע את המחרוזת התחילית עבור המטבע שלך STR_CURRENCY_SUFFIX :{LTBLUE}סופית: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}קבע את המחזורת הסופית עבור המטבע שלך STR_CURRENCY_SWITCH_TO_EURO :{ORANGE}{NUM} {LTBLUE} :החלפה ליורו STR_CURRENCY_SWITCH_TO_EURO_NEVER :{ORANGE} ללא {LTBLUE} :החלפה ליורו STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}קבע את השנה למעבר ליורו STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}עבור ליורו מוקדם יותר STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}עבור ליורו מאוחר יותר STR_CURRENCY_PREVIEW :{ORANGE}{CURRENCY_LONG}{LTBLUE} :תצוגה מקדימה STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 ליש"ט (£) במטבע שלך STR_CURRENCY_CHANGE_PARAMETER :{BLACK}שנה פרמטר עבור מטבע מותאם אישית STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{ORANGE}{COMMA}{LTBLUE} : מספר מתחרים מירבי STR_NONE :ללא STR_FUNDING_ONLY :מימון בלבד STR_MINIMAL :מזערי STR_NUM_VERY_LOW :נמוך מאוד STR_NUM_LOW :נמוך STR_NUM_NORMAL :רגיל STR_NUM_HIGH :גבוה STR_NUM_CUSTOM :אחר STR_NUM_CUSTOM_NUMBER :אחר ({NUM}) STR_VARIETY_NONE :ללא STR_VARIETY_VERY_LOW :נמוך מאוד STR_VARIETY_LOW :נמוך STR_VARIETY_MEDIUM :בינוני STR_VARIETY_HIGH :גבוה STR_VARIETY_VERY_HIGH :גבוה מאוד STR_AI_SPEED_VERY_SLOW :איטי ביותר STR_AI_SPEED_SLOW :איטי STR_AI_SPEED_MEDIUM :בינוני STR_AI_SPEED_FAST :מהיר STR_AI_SPEED_VERY_FAST :מהיר ביותר STR_SEA_LEVEL_VERY_LOW :נמוך מאוד STR_SEA_LEVEL_LOW :נמוך STR_SEA_LEVEL_MEDIUM :בינוני STR_SEA_LEVEL_HIGH :גבוה STR_SEA_LEVEL_CUSTOM :אחר STR_SEA_LEVEL_CUSTOM_PERCENTAGE :אחר ({NUM}%) STR_RIVERS_NONE :ללא STR_RIVERS_FEW :מעט STR_RIVERS_MODERATE :בינוני STR_RIVERS_LOT :הרבה STR_DISASTER_NONE :ללא STR_DISASTER_REDUCED :מופחת STR_DISASTER_NORMAL :רגיל STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :שטוח ביותר STR_TERRAIN_TYPE_FLAT :שטוח STR_TERRAIN_TYPE_HILLY :נוף גבעות STR_TERRAIN_TYPE_MOUNTAINOUS :הררי STR_CITY_APPROVAL_PERMISSIVE :מתירני STR_CITY_APPROVAL_TOLERANT :סביר STR_CITY_APPROVAL_HOSTILE :עויין STR_WARNING_NO_SUITABLE_AI :{WHITE}אין בינות מלאכותיות מתאימות...{}באפשרותך להוריד בינות מלאכותיות בעזרת מערכת ה'תוכן המקוון' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}הגדרות מתקדמות STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}מחרוזת סינון: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}הרחב הכל STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}צמצם הכל STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(אין הסבר זמין) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}ערך ברירת מחדל: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}סוג הגדרה: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :הגדרת לקוח (לא מאוחסנת במשחקים שמורים; משפיעה על כל המשחקים) STR_CONFIG_SETTING_TYPE_GAME_MENU :הגדרת משחק (מאוחסנת במשחקים שמורים; משפיעה על משחקים חדשים בלבד) STR_CONFIG_SETTING_TYPE_GAME_INGAME :הגדרת משחק (מאוחסנת במשחק שמור; משפיעה על המשחק הנוכחי בלבד) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :הגדרת חברה (מאוחסנת במשחק שמור; משפיעה על משחקים חדשים בלבד) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :הגדרת חברה (מאוחסנת במשחק שמור; משפיעה על החברה הנוכחית בלבד) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}הצג: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}מגביל את הרשימה להלן כך שתציג רק הגדרות שהשתנו STR_CONFIG_SETTING_RESTRICT_BASIC :הגדרות בסיסיות STR_CONFIG_SETTING_RESTRICT_ADVANCED :הגדרות מתקדמות STR_CONFIG_SETTING_RESTRICT_ALL :הגדרות מומחה / כל ההגדרות STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :הגדרות בעלות ערך השונה מברירת המחדל STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :הגדרות בעלות ערך השונה מזה אשר בהגדרות המשחק החדש שלך STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}מגביל את הרשימה הבאה להגדרות מסוימות STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :כל ההגדרות STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :הגדרות משתמש(לא נמצא בשמורים; משפיע על כל המשחקים) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :הגדרות משחק (נמצא בשמורים; משפיע רק על משחקים חדשים) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :הגדרות משחק (נמצא בשמורים; משפיע רק על משחק נוכחי) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :הגדרות חברה (נמצא בשמורים; משפיע רק על משחקים חדשים) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :הגדרות חברה (נמצא בשמורים; משפיע רק על חברה נוכחית) STR_CONFIG_SETTING_OFF :כבוי STR_CONFIG_SETTING_ON :דלוק STR_CONFIG_SETTING_DISABLED :מנוטרל STR_CONFIG_SETTING_COMPANIES_OFF :כבוי STR_CONFIG_SETTING_COMPANIES_OWN :עבור החברה שלי STR_CONFIG_SETTING_COMPANIES_ALL :עבור כל החברות STR_CONFIG_SETTING_NONE :ללא STR_CONFIG_SETTING_ORIGINAL :מקורי STR_CONFIG_SETTING_REALISTIC :מציאותי STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :שמאל STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :מרכז STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :ימין STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :סכום הלוואה ראשוני: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :סכום מירבי שחברה יכולה ללוות (מבלי לקחת בחשבון אינפלציה) STR_CONFIG_SETTING_INTEREST_RATE :ריבית: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :ריבית עבור הלוואות; שולטת גם באינפלציה אם זו מאופשרות STR_CONFIG_SETTING_RUNNING_COSTS :עלויות תפעול: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :קבע את רמת התחזוקה ועלויות התפעול של רכבים ותשתיות STR_CONFIG_SETTING_CONSTRUCTION_SPEED :מהירות בנייה: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :הגבל את כמות פעולות הבנייה עבור שחקני מחשב STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :קלקולי כלי רכב: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :שלוט באיזו תדירות כלי רכב אשר אינם מתוחזקים כראוי יכולים להתקלקל STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :מכפיל עבור סובסידיה: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :קבע כמה משולם עבור חיבורים מסובסדים STR_CONFIG_SETTING_CONSTRUCTION_COSTS :עלויות בנייה: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :קבע את רמת העלויות של בנייה ורכישה STR_CONFIG_SETTING_RECESSIONS :מיתונים: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :אם מאופשר מיתונים עלולים להתרחש מדי כמה שנים. בעת מיתון כל הייצור קטן יותר באופן משמעותי (הוא חוזר לרמתו הקודמת בסוף המיתון) STR_CONFIG_SETTING_TRAIN_REVERSING :מנע החלפת כיוון רכבות בתחנות: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :אם מאופשר רכבות לא יחליפו כיוון בתחנות שאינן סופיות, אם עקב החלפת כיוון יש נתיב קצר יותר אל יעדן הבא STR_CONFIG_SETTING_DISASTERS :אסונות: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :אפשר/מנע אסונות אשר עלולים מדי פעם לחסום או להרוס כלי רכב או תשתיות STR_CONFIG_SETTING_CITY_APPROVAL :יחס מועצת העיר כלפי שינוי מבנה אזורי: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :בחר באיזו מידה רעש ונזק סביבתי ע"י חברות משפיעים על הדירוג העירוני שלהן ופעולות בנייה עתידיות באזור STR_CONFIG_SETTING_BUILDONSLOPES :אפשר לבנות על מידרונות וחופים: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :אם מאופשר, ניתן לבנות מסילות ותחנות על גבי רוב המדרונות. אם מבוטל, ניתן לבנות אותם רק על מדרונות המתאימים לכיוון המסילה וכך אינם דורשים יסודות STR_CONFIG_SETTING_AUTOSLOPE :{STRING} :'אפשר יצירת מילוי עפר תחת מבנים, פסי רכבת וכו STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :אפשר שינוי פני השטח מתחת לבניינים ולמסילות ללא הסרתם STR_CONFIG_SETTING_CATCHMENT :אפשר לאזורי אגירת מים להיראות יותר ריאליסטיים: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :אזורי אגירה בגדלים שונים עבור סוגים שונים של תחנות ונמלי תעופה STR_CONFIG_SETTING_EXTRADYNAMITE :אפשר הסרה של יותר כבישים גשרים וכו' שבבעלות עיירות: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :הקל על הסרת מבנים ותשתיות בבעלות עיירות STR_CONFIG_SETTING_TRAIN_LENGTH :אורך מירבי של רכבות: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :קבע את האורך המירבי של רכבות STR_CONFIG_SETTING_TILE_LENGTH :{P 0 " אריח" ""}{COMMA}{P 0 "" " אריחים"} STR_CONFIG_SETTING_SMOKE_AMOUNT :כמות עשן/ניצוצות של כלי רכב: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :קבע כמה עשן או כמה ניצוצות נפלטים ע"י כלי רכב STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :{STRING} :מודל האצת רכבות STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :בחר את המודל הפיסיקלי עבור האצת רכבות. המודל ה-"מקורי" מעניש עבור מדרונות באופן שווה לכל כלי הרכב. המודל ה-"מציאותי" מעניש עבור מדרונות ועיקולים בהתאם לתכונות שונות שלהם, כגון אורך ומאמץ משיכה STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :מודל האצת כלי רכב: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :בחר את המודל הפיסיקלי עבור האצת רכבות. המודל ה-"מקורי" מעניש עבור מדרונות באופן שווה לכל כלי הרכב. המודל ה-"מציאותי" מעניש עבור מדרונות ועיקולים בהתאם לתכונות שונות שלהם, כגון "מאמץ משיכה" STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :תלילות מדרון עבור רכבות: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :תלילות של משבצת מדרון עבור רכבת. ערכים גבוהים יורת הופכים טיפוס גבעה לקשה יותר STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :תלילות מדרון עבור רכבי כביש: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :תלילות של משבצת מדרון עבור רכב כביש. ערכים גבוהים יורת הופכים טיפוס גבעה לקשה יותר STR_CONFIG_SETTING_FORBID_90_DEG :אסור על רכבות וספינות לבצע פניות של 90 מעלות: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :סיבוב של 90 מעלות מתרחש כאשר מסילה אנכית באה מיד אחרי מסילה אופקית במשבצת סמוכה, וכך מאלצת את הרכבת לבצע פנייה של 90 מעלות בעת חציית גבול המשבצות במקום פניית 45 הרגילה עבור צירופי מסילות אחרים. הנ"ל תקף גם לגבי רדיוס הסיבוב של אוניות STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :{STRING} :אפשר חיבור בין תחנות שאינן צמודות זו לזו STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :אפשר הוספת חלקים לתחנה מבלי לגעת ישירות בחלקים הקיימים. דורש קליק בצירוף לחיצה על מקש Ctrl בעת מיקום החלקים החדשים STR_CONFIG_SETTING_IMPROVEDLOAD :השתמש באלגוריתם טעינה משופר: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :אם מאופר, מספר רכבים הממתינים בתחנה מוטענים בזה אחר זה. טעינת הרכב הבא מתחילה רק כאשר ממתין די מטען לצורך מילוי הרכב הראשון STR_CONFIG_SETTING_GRADUAL_LOADING :טען כלי רכב בהדרגה: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :טען רכבים בהדרגה באמצעות זמני טעינה ייחודיים לכל רכב, במקום לטעון הכל בבת אחת עם פרק זמן קבוע התלוי רק בכמות המטען הטעונה STR_CONFIG_SETTING_INFLATION :אנפלציה: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :אפשר אינפלציה בכלכלה, כך שהעלויות עולות מעט מהר יותר מאשר התשלומים STR_CONFIG_SETTING_SELECTGOODS :מסור סחורה לתחנה רק כאשר יש ביקוש: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :מסור מטען לתחנה רק אם התבקש ע"י כלי רכב טוען. זה מונע דירוגים רעים עבור מטענים אשר אינם מקבלים שירות בתחנה STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :אורך גשר מירבי: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :אורך מירבי לבניית גשרים STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :אורך מנהרה מירבי: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :אורך מירבי לבניית מנהרות STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :{STRING} :שיטת היצירה של משאבי טבע חדשים STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :אופן מימון תעשיה עיקרית. "ללא" משמע שלא ניתן לממן כאלו. "סיקור" משמע שניתן לממן כאלו, אך הבנייה מתרחשת בנקודה אקראית על גבי המפה ועלולה אף להיכשל. "כמו תעשיות אחרות" משמע שתעשיות גולמיות ניתנות לבנייה ע"י חברות כמו תעשיות עיבוד, בכל מקום שהן רוצות STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ללא STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :כמו שאר התעשיות STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :חיפוש אחר התעשיות STR_CONFIG_SETTING_INDUSTRY_PLATFORM :אזרו שטוח סביב תעשיות: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :כמות המקום השטוח סביב תעשיה. זה מבטיח שיהיה מקום פנוי סביב תעשיה לבניית מסילות וכו' STR_CONFIG_SETTING_MULTIPINDTOWN :{STRING} :אפשר יצירת מספר תעשיות זהות בשטחה של עיר אחת STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :בדרך כלל, עיירה אינה רוצה יותר מאחד מכל סוג של תעשייה. הגדרה זו תאפשר מספר תעשיות מאותו סוג באותה עיירה STR_CONFIG_SETTING_SIGNALSIDE :הצג רמזורים: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :בחר באיזה צד של המסילה למקם רמזורים STR_CONFIG_SETTING_SIGNALSIDE_LEFT :משמאל STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :בצד הנסיעה STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :מימין STR_CONFIG_SETTING_SHOWFINANCES :הראה את חלון מערך הכספים בכל סוף שנה : {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :אם מאופשר, חלון הכספים מופיע בסוף כל שנה כדי לאפשר בחינה קלה של המצב הכספי של החברה STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :הוראות חדשות הם תמיד 'לא לעצור' כבחירת מחדל: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :בדרך כלל, רכב יעצור בכל תחנה בה הוא עובר. ע"י הפעלת הגדרה זו, הוא יסע דרך כל התחנות בדרך על יעדו הסופי מבלי לעצור. שים לב, הגדרה זו רק קובעת ערך ברירת מחדל עבור הוראות חדשות. הוראות פרטניות יכולות להיות מוגדרות במפורש לכל אחת מבין ההתנהגויות בכל מקרה STR_CONFIG_SETTING_STOP_LOCATION :הוראות לרכבת חדשה לעצירת ברירת מחדל ב-{STRING} של הרציף STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :מקום בו רכבת תעצור ברציף בברירת מחדל. ה-"קצה הקרוב" משמע קרוב לנקודת הכניסה, "אמצע" משמע באמצע הרציף, ו-"קצה רחוק" משמע הרחק מנקודת הכניסה. שים לב, הגדרה זו רק קובעת ערך ברירת מחדל עבור הוראות חדשות. הוראות פרטניות יכולות להיות מוגדרות במפורש לכל אחת מבין ההתנהגויות בכל מקרה STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :קצה קרוב STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :אמצע STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :קצה רחוק STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING ::(כלי רכב ממתינים(עם אפקט קונט {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :גרום לרכבי כביש להמתין מול תחנות מלאות עד שהן מתפנות STR_CONFIG_SETTING_AUTOSCROLL :{STRING} :גלילת תצוגה בעת שסמן העכבר נמצא בסמוך לקצוות STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :כאשר מאופשר, חלונות תצוגה יתחילו לגלול כאשר העכבר קרוב לקצה החלון STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :מבוטל STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :חלון תצוגה ראשי, מסך מלא בלבד STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :חלון תצוגה ראשי STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :כל חלון תצוגה STR_CONFIG_SETTING_BRIBE :אפשר נתינת שוחד לערים מקומיים {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :השואפשר לחברות לנסות לשחד את הרשות העירונית המקומית. אם חד מתגלה ע"י פקח, החברה לא תוכל לפעול בעיירה במשך שישה חודשים STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :אפשר קנייה של אפשריות הובלה בלעדיים : {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :אם חברה קונה זכויות תעבורה בלעדיות בעיירה, תחנות (נוסעים ומטענים) של יריבים לא יקבלו מטען למשך שנה שלמה STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :אפשר מימון מבנים: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :אפשר לחברות להעניק כסף לעיירות לצורך מימון בתים חדשים STR_CONFIG_SETTING_ALLOW_FUND_ROAD :אפשר מימון סלילה מחדש של כבישים מקומיים: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :אפשר לחברות להעניק כסף לעיירות לצורך סלילה מחדש של כבישים, כדי לחבל בשירותים מבוססי כביש בעיירה STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :אפשר שלחת כספים לחברות אחרות: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :אפשר העברת כספים בין חברות במשחקים מרובי שחקנים STR_CONFIG_SETTING_FREIGHT_TRAINS :הכפלת משקל מטען כדי לחקות רכבות כבדות: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :קבע את השפעת נשיאת מטען ברכבות. ערך גבוה יותר גורם לנשיאת מטען להיות קשה יותר עבור רכבות, במיוחד בגבעות STR_CONFIG_SETTING_PLANE_SPEED :פקטור מהירות מטוסים: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :קבע את מהיורתם היחסית של מטוסים לעומת סוגים אחרים של כלי רכב, כדי להקטין את היקף ההכנסות מהובלה באמצעות מטוסים STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 חלקי {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :מספר התרסקויות מטוסים: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :קבע את הסיכוי להתרחשות של התרסקות מטוס STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ללא STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :מופחת STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :רגיל STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{STRING} :אפשר מעבר דרך תחנות על כבישים בבעלות עירונית STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :אפשר בנייה של תחנות "על הדרך" בכבישים בבעלות עיירות STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :אפשר נסיעה דרך תמרורי-עצירה על דרכים בבעלות מתחרים: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :אפשר בנייה של תחנות "על הדרך" בכבישים בבעלות חברות אחרות STR_CONFIG_SETTING_ADJACENT_STATIONS :{STRING} :אפשר בניית תחנות בשכנות STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :אפשר לתחנות שונות לדעת זו בזו STR_CONFIG_SETTING_DYNAMIC_ENGINES :אפשר מספר ערכות מנוע GRF חדשות: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :אפשרות תאימות עבור NewGRF-ים ישנים. אל תבטל/י אפשרות זו, אלא אם את/ה יודע/ת בדיוק מה את/ה עושה! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}שינוי הגדרה זו אינה אפשרית כאשר קיימים כלי רכב STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :תחזוקת תשתיות: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :כאשר מאופשר, תשתיות גורמות לעלויות תחזוקה. העלות גדלה באופן שהוא מעבר ליחסי לעומת גודל הרשת, וכך משפיע יותר על חברות גדולות מאשר על חברות קטנות STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :בטל התיישנות נמלי תעופה: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :אפשור הגדרה זו גורם לכל סוג נמל תעופה להישאר זמין לעד אחרי השקתו STR_CONFIG_SETTING_WARN_LOST_VEHICLE :התרע אם רכב אבוד: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :הפעל הודעות אודות רכבים שאינם מסוגלים למצוא מסלול אל היעד שנקבע להם STR_CONFIG_SETTING_ORDER_REVIEW :{STRING} :בדוק מסלולי נסיעה STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :כאשר מאופשר, הוראות כלי הרכב נבחנות מדי כמה זמן, וכמה בעיות ברורות מדווחות באמצעות מבזק חדשות כאשר הן מזוהות STR_CONFIG_SETTING_ORDER_REVIEW_OFF :לא STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :כן,למעט רכבים דוממים STR_CONFIG_SETTING_ORDER_REVIEW_ON :עבור כל כלי רכב STR_CONFIG_SETTING_WARN_INCOME_LESS :{STRING} :התרע על רכבים בעלי הכנסה שלילית STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :כאשר מאופשר, נשלח מבזק חדשות כאשר רכב לא הכניס שום רווח במשך שנה קלנדרית STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :{STRING} :בטל התיישנות כלי רכב STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :כאשר מאופשר, כל סוגי כלי הרכב נשארים זמינים לעד אחרי השקתם STR_CONFIG_SETTING_AUTORENEW_VEHICLE :חידוש עצמי של רכב כשהוא נהיה ישן: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :כאשר מאופשר, רכב המתקרב לסוף חייו מוחלף אוטומטית כאשר תנאי החידוש מתקיימים STR_CONFIG_SETTING_AUTORENEW_MONTHS :חדש כלי רכב באופן אוטומטי כאשר גילו הוא {STRING} לכל היותר STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :גיל יחסי בו יש לשקול חידוש אוטומטי של כלי רכב STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{P 0 "חודש " ""}{COMMA}{P "" "חודשים"} לפני STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{P 0 "חודש " ""}{COMMA}{P "" "חודשים"} אחרי STR_CONFIG_SETTING_AUTORENEW_MONEY :סכום הכסף המינימלי הנדרש בשביל חידוש: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :סכום כסף מזערי אשר חייב להשאר בבנק לפני שקילת חידוש אוטומטי של כלי רכב STR_CONFIG_SETTING_ERRMSG_DURATION :משך הצגת הודעת שגיאה: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :פרק הזמן להצגת הודעות שגיאה בחלון אדום. יש לשים לב כי כמה הודעות שגיאה (קריטיות) אינן נסגרות אוטומטית אחרי פרק זמן זה, אלא יש לסגור אותן ידנית STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{P 0 "שנייה " ""}{COMMA}{P "" " שניות"} STR_CONFIG_SETTING_HOVER_DELAY :הצג רמזים צצים: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :השהייה טרם הצגת רמזים צצים כאשר העכבר מרחף מעל חלק ממשק. לחלופין, ניתן לקשר רמזים צצים לכפתור העכבר הימני STR_CONFIG_SETTING_HOVER_DELAY_VALUE :רחף למשך {P 0 "שניה " ""}{COMMA}{P "" " שניות"} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :קליק ימני STR_CONFIG_SETTING_POPULATION_IN_LABEL :הראה את אוכלוסיית העיר בתוך תוית השם של העיר: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :הצג את אוכלוסייתן של עיירות בתווית שלהן על גבי המפה STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :עובי קווים בגרפים: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :עובי הקו בגרפים. קו דק ניתן לקריאה באופן מדויק יותר, אולם קל יותר לראות קו עבה ולהבחין בין הצבעים של קוים עבים STR_CONFIG_SETTING_LAND_GENERATOR :יוצר אדמה: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :מקורי STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :בורא הקרקע STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :מרחק מירבי מן הקצה עבור מזקקות נפט: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :מזקקות נפט נבנות רק בקרבת גבול המפה, כלומר חוף הים עבור מפות בצורת אי STR_CONFIG_SETTING_SNOWLINE_HEIGHT :גובה קו השלג: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :רמת חספוס השטח (בבורא האדמה בלבד) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :חלק מאוד STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :חלק STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :מחוספס STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :מחוספס מאוד STR_CONFIG_SETTING_TREE_PLACER :אלגוריתם של נוטע העצים: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :בכלל לא STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :מקורי STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :משופר STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :סיבוב מפת גבהים: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :נגד כיוון השעון STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :בכיוון השעון STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{STRING} :עומק הקרקע עבור מפה שטוחה STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{STRING} :אפשר יצירת קרקע בשולי המפה STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :אם מבוטל, גבולות המפה תמיד יהיו אוקיינוס STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}לפחות משבצת אחת בקצה הצפוני אינה ריקה STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}לפחות משבצת אחת באחד הקצוות אינה מכוסה מים STR_CONFIG_SETTING_STATION_SPREAD :התפרסות תחנה מירבית: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :שטח מירבי עליו יכולים להתפרס חלקיה השונים של תחנה בודדת. יש לשים לב כי ערכים גבוהים יאטו את המשחק STR_CONFIG_SETTING_SERVICEATHELIPAD :{STRING}טיפול אוטומטי במסוקים במנחת STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :תחזק מסוקים אחרי כל נחיתה, אפילו אם אין מוסך בנמל התעופה STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :{STRING}ֿ :חבר את סרגל פני השטח לסרגלי בניית כבישים/מסילות/שדות תעופה/מזחים STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :בעת פתיחת סרגל כלים של בנייה עבור סוג תעבורה, פתחג ם את סרגל הכלים עבור שינוי פני השטח STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :צבע קרקע שבשימוש מפה קטנה: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :צבע פני השטח במפה הקטנה STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :ירוק STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :ירוק כהה STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :סגול STR_CONFIG_SETTING_REVERSE_SCROLLING :{STRING} :היפוך כיוון הגלילה של התצוגה STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :התנהגות בעת גלילת המפה באמצעות כפתור העכבר האמצעי. כאשר מבוטל, העכבר מזיז את המצלמה. כאשר מאופשר, העכבר מזיז את המפה STR_CONFIG_SETTING_SMOOTH_SCROLLING :{STRING} :גלילה חלקה של התצוגה המשנית STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :שלוט כיצד התצוגה הראשית נגללת למיקום מסוים כאשר מקליקים על המפה הקטנה אן כאשר נותנים הוראה לגלול לעצם מסוים על גבי המפה. אם מאופשר, חלון התצוגה נגלל באופן חלק, אם מבוטל הוא מוקפץ ישירות אל נקודת המטרה STR_CONFIG_SETTING_MEASURE_TOOLTIP :{STRING} :'הצג מידות בעת בניית כבישים/מסילות וכיוב STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :הצג מרחק במשבצות והבדלי גבהים בעת גרירה תוך כדי פעולות בנייה STR_CONFIG_SETTING_LIVERIES :{STRING} :הצג את צבעי החברה STR_CONFIG_SETTING_LIVERIES_HELPTEXT :שלוט בשימוש בצבעים ייחודיים לסוגי כלי רכב (בניגוד לצבעים ייחודיים לחברה) STR_CONFIG_SETTING_LIVERIES_NONE :לא STR_CONFIG_SETTING_LIVERIES_OWN :החברה שלי STR_CONFIG_SETTING_LIVERIES_ALL :כל החברות STR_CONFIG_SETTING_PREFER_TEAMCHAT :{STRING} : העדפת צ'אט קבוצתי ע"י STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :החלף את שיוך הצ'טים הפנים-חברתי והפומבי למקשים ו- בהתאמה STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :{STRING} :השתמש בכפתור הגלילה בעכבר עבור STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :אפשר גלילה באמצעות גלגלי עכבר דו-מימדיים STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :הקטנת/הגדלת מרחק מהתצוגה STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :גלילה STR_CONFIG_SETTING_SCROLLWHEEL_OFF :לא בשימוש STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :{STRING} :מהירות כפתור הגלילה בעכבר STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :שלוט ברגישות הגלילה באמצעות גלגל עכבר STR_CONFIG_SETTING_OSK_ACTIVATION :מקלדת על גבי המסך: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :בחר את השיטה לפתיחת המקדלת על גבי המסך להכנסת טקסט לתוך תיבות עריכה באמצעות העכבר בלבד. זה נועד למכשירים קטנים חסרי מקלדת ממשית STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :מבוטל STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :קליק כפול STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :קליק יחיד (כאשר בפוקוס) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :קליק יחיד (מיד) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :{STRING} :הדמיית כפתור ימני בעכבר STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :בחר בשיטה לדימוי קליקים בכפתור העכבר הימני STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :כבוי STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :גלילה בלחיצה שמאלית: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :אפשר גלילת המפה באמצעות גרירתה עם כפתור העכבר השמאלי. אפשרות זו שימושית במיוחד בעת שימוש במסך מגע לצורך גלילה STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :השתמש במבנה התאריך {STRING} בשביל שמות קבצי השמירה. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :פורמט התאריך בשמות קבצים של משחקים שמורים STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :ארוך (31 בדצמבר 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :קצר (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :לוח צבעים ברירת מחדל שיש להניח עבור NewGRF-ים אשר אינם מפרטים לוח צבעים: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :לוח צבעים ברירת מחדל לשימוש עבור NewGRF-ים אשר אינם מפרטים איזה לוח צבעים הם צריכים STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :עצור משחק אוטומטית אחרי התחלת משחק חדש: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :כאשר מאופשר, המשחק יושהה אוטומטית בעת התחלת משחק חדש, דבר המאפשר בחינה מדוקדקת יותר של המפה STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :כאשר המחשק מושהה הרשה: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :בחר אילו פעולות ניתנות לביצוע בעת שהמשחק מושהה STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :שום פעולות STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :כל הפעולות שאינן פעולות בנייה STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :כל הפעולות שאינן משנות את פני השטח STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :כל הפעולות STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :השתמש ברשימת כלי הרכב המתקדמת: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :אפשר שימוש ברשימות כלי הרכב המתקדמות לצורך חלוקת כלי רכב לקבוצות STR_CONFIG_SETTING_LOADING_INDICATORS :{STRING} :הצג מצביעי הטענה STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :בחר האם מדדי טעינה יוצגו מעל רכבים בעת טעינתם או פריקתם STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :{STRING} :הצג לוח זמנים בפעימות במקום בימים STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :הצג זמני נסיעה בלוחות זמנים בפעימות משחק במקום בימים STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :הצג לוחות זמנים של הגעות ועזיבות: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :הצג זמני הגעה ויציאה צפויים בלוחות זמנים STR_CONFIG_SETTING_QUICKGOTO :{STRING} :יצירה מהירה של מסלול הנסיעה STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :בחר מראש את סמן ה-"גש אל" בעת פתיחת חלון הפקודות STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :{STRING} :(ברירת מחדל לפסי רכבת (בתחילת משחק או לאחר טעינה STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :סוג מסילה לבחירה אחרי התחלה או טעינה של משחק. "הראשון הזמין" בוחר את סוג המסילה הישן ביותר, "האחרון הזמין" בוחר את סוג המסילה החדש ביותר, ו-"הנפוץ ביותר" בוחר את הסוג אשר נמצא בשימוש רחב ביותר כרגע STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :הראשון הזמין STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :האחרון הזמין STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :הנפוץ ביותר STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :{STRING} :הדגש מסלולים שבשימוש STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :תן צבע שונה למסילות שמורות כדי לסייע בבעיות עם רכבות המסרבות להיכנס לגושים מבוססי מסלול STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :{STRING}: שמור על כלי הבנייה פעילים לאחר השימוש STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :השאר את כלי הבנייה עבור גשרים, מנהרות וכו' פתוחים אחרי השימוש STR_CONFIG_SETTING_EXPENSES_LAYOUT :{STRING} : קבץ הוצאות בחלון הכספים של החברה STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :הגדר את הסידור עבור חלון הוצאות החברה STR_CONFIG_SETTING_SOUND_TICKER :מבזקי חדשות: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :השמע צליל עבור הודעות חדשות מסוכמות STR_CONFIG_SETTING_SOUND_NEWS :עיתון: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :השמע צליל בעת הצגת עיתונים STR_CONFIG_SETTING_SOUND_NEW_YEAR :סוף שנה: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :השמע צליל בסוף שנה המסכם את תפקוד החברה בהשוואה לשנה הקודמת STR_CONFIG_SETTING_SOUND_CONFIRM :בנייה: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :השמע צליל בעת בנייה מוצלחת או פעולות אחרות STR_CONFIG_SETTING_SOUND_CLICK :הקשה על כפתורים: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :השמע צפצוף בהקשת כפתורים STR_CONFIG_SETTING_SOUND_DISASTER :אסונות/תאונות: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :השמע קולות של תאונות ואסונות STR_CONFIG_SETTING_SOUND_VEHICLE :כלי רכב: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :השמע קולות כלי רכב STR_CONFIG_SETTING_SOUND_AMBIENT :רקע: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :השמע קולות רקע של פני השטח, תעשיות וערים STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :מנע בניית תשתיות כאשר אין כלי רכב מתאימים זמינים: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :כאשר מאופשר, תשתיות זמינות רק כאשר ישנם גם כלי רכב זמינים, דבר המונע בזבוז זמן וכסף על תשתיות בלתי שמישות STR_CONFIG_SETTING_MAX_TRAINS :{STRING} :מספר רכבות מירבי לשחקן STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :מספר מירבי של רכבות בהן חברה יכולה להחזיק STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :{STRING} :מספר משאיות/אוטובוסים מירבי לשחקן STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :מספר מירבי של רכבי כביש בהם חברה יכולה להחזיק STR_CONFIG_SETTING_MAX_AIRCRAFT :{STRING} :מספר כלי טייס מירבי לשחקן STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :מספר מירבי של מטוסים בהם חברה יכולה להחזיק STR_CONFIG_SETTING_MAX_SHIPS :{STRING} :מספר כלי שייט מירבי לשחקן STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :מספר מירבי של אוניות בהן חברה יכולה להחזיק STR_CONFIG_SETTING_AI_BUILDS_TRAINS :מנע הפעלת רכבות ע”י שחקני המחשב: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :אפשור הגדרה זו הופך בניית רכבות לבלתי אפשרית עבור שחקן מחשב STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :{STRING} :מנע הפעלת אוטובוסים/משאיות ע”י שחקני המחשב STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :אפשור הגדרה זו הופך בניית רכבי כביש לבלתי אפשרית עבור שחקן מחשב STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{STRING} :מנע הפעלת כלי טייס ע”י שחקני המחשב STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :אפשור הגדרה זו הופך בניית מטוסים לבלתי אפשרית עבור שחקן מחשב STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{STRING} :מנע הפעלת כלי שייט ע”י שחקני המחשב STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :אפשור הגדרה זו הופך בניית אוניות לבלתי אפשרית עבור שחקן מחשב STR_CONFIG_SETTING_AI_PROFILE :פרופיל הגדרות ברירת מחדל: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :בחר באיזה פרופיל הגדרות להשתמש עבור שחקני מחשב אקראיים או עבור ערכים ראשוניים בעת הוספת שחקן מחשב חדש או סקריפט משחק STR_CONFIG_SETTING_AI_PROFILE_EASY :קל STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :בינוני STR_CONFIG_SETTING_AI_PROFILE_HARD :קשה STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{STRING} :אפשר שחקני מחשב במשחק רשת STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :אפשר לשחקני מחשב להשתתף במשחקים מרובי משתתפים STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#אופקודים המופעלים לפני סקריפטים מושהים: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :מספר מירבי של צעדי חישוב אשר סקריפט יכול לבצע במהלך תור אחד STR_CONFIG_SETTING_SERVINT_ISPERCENT :{STRING} :הצג מרווחי טיפול באחוזים STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :בחר האם תחזוקת כלי רכב מופעלת על פי הזמן שעבר מאז התחזוקה האחרונה או על פי ירידת האמינות באחוז מסוים ביחס לאמינות המירבית STR_CONFIG_SETTING_SERVINT_TRAINS :ברירת מחדל למרווח הזמן בין תחזוקות עבור רכבות: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור רכבות חדשות, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב STR_CONFIG_SETTING_SERVINT_VALUE :{P 0 "יום " ""}{COMMA}{P "" " ימים"}/% STR_CONFIG_SETTING_SERVINT_DISABLED :מבוטל STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :ברירת מחדל למרווח הזמן בין תחזוקות עבור רכבי כביש: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור רכבי כביש חדשים, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ברירת מחדל למרווח הזמן בין תחזוקות עבור מטוסים: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור מטוסים חדשים, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב STR_CONFIG_SETTING_SERVINT_SHIPS :ברירת מחדל למרווח הזמן בין תחזוקות עבור אוניות: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :קבע את ברירת המחדל למרווח הזמן בין תחזוקות עבור אוניות חדשות, אם לא נקבע באופן מפורש מרווח זמן עבור כלי הרכב STR_CONFIG_SETTING_NOSERVICE :{STRING} :בטל טיפולים כאשר האפשרות לביטול תקלות נבחרה STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :כאשר מאופשר, כלי רכב אינם מתוחזקים אם הם אינם יכולים להתקלקל STR_CONFIG_SETTING_WAGONSPEEDLIMITS :{STRING} :אפשר הגבלת מהירות עבור קרונות רכבת STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :כאשר מאופשר, השתמש גם במגבלות מהירות של קרונות לצורך קביעות המהירות המירבית של רכבת STR_CONFIG_SETTING_DISABLE_ELRAILS :{STRING} : בטל פסים חשמליים STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :אפשור הגדרה זו מבטל את הדרישה לחשמל מסילות כדי שקטרים חשמליים יוכלו לנסוע עליהן STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :הגעה של כלי תחבורה ראשון לתחנה של השחקן: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :הצג עיתון כאשר הרכב הראשון מגיע לתחנה של שחקן חדש STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :הגעת כלי תחבורה ראשון לתחנה של מתחרה: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :הצג עיתון כאשר הרכב הראשון מגיע לתחנה של מתחרה חדש STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :תאונות / אסונות: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :הצג עיתון כאשר מתרחשים תאונות או אסונות STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :מידע על החברה: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :הצג עיתון כאשר חברה נוסדת, או כאשר חברות בסכנת פשיטת רגל STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :פתיחת תעשיות: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :הצג עיתון כאשר תעשיות נפתחות STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :סגירת תעשיות: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :הצג עיתון כאשר תעשיות נסגרות STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :שינויים בכלכלה: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :הצג עיתון אודות שינויים גלובליים בכלכלה STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :שינויים ביצור של תעשיות בשירות החברה: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :הצג עיתון כאשר רמת הייצור של תעשיות משתנה, כאשר אלו משורתות ע"י החברה STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :שינויים ביצור של תעשיות בשירות המתחרה/ים: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :הצג עיתון כאשר רמת הייצור של תעשיות משתנה, כאשר אלו משורתות ע"י המתחרים STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :שינויים ביצור תעשיה אחרת: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :הצג עיתון כאשר רמת הייצור של תעשיות משתנה, כאשר אלו אינן משורתות ע"י החברה ומתחריה STR_CONFIG_SETTING_NEWS_ADVICE :עיצות/מידע על כלי רכב של החברה: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :הצג הודעות אודות רכבים הדורשים תשומת לב STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :דגמים חדשים: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :הצג עיתון כאשר סוג רכב חדש נהיה זמין STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :שינויים במטענים המתקבלים: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :הצג הודעות אודות שינויים בקבלת סחורות בתחנות STR_CONFIG_SETTING_NEWS_SUBSIDIES :סובסידיות: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :הצג עיתון אודות אירועים הקשורים לסובסידיות STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :מידע כללי: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :הצג עיתון אודות אירועים כללים, כגון רכישת זכויות בלעדיות או מימון סלילה מחדש של כבישים STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :כבוי STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :תמצית STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :מלא STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :{STRING} :הצג חדשות צבעוניות החל משנת STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :השנה בה הודעות העיתונות מודפסות בצבע. לפני שנה זו הן מודפסות בשחור-לבן. STR_CONFIG_SETTING_STARTING_YEAR :{STRING} :שנת התחלה STR_CONFIG_SETTING_SMOOTH_ECONOMY :אפשר כלכלה עדינה (יותר, שינויים קטנים יותר): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :כאשר מאופשר, הייצור של תעשיה משתנה לעיתים קרובות יותר, ובצעדים קטנים יותר. להגדרה זו בדרך כלל אין שום השפעה אם סוגי תעשיות מסופקים ע"י NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :אפשר קניית מניות מחברות אחרות: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :כאשר מאופשר, מתיר קנייה ומכירה של מניות של חברות. מניות יהיו זמינות רק עבור חברות המגיעות לגיל מסוים STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :אחוז הרווח מקטע נסיעה לתשלום במערכות הזנה: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :אחוז הרווח הניתן לקטעי ביניים במערכות הזנה, דבר הנותן שליטה מוגברת על ההכנסות STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :בעת גרירה, הצב רמזורים בכל: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :קבע את המרחק בו רמזורים ייבנו על מסילה עד המכשול הבא (רמזור, צומת), אם רמזורים נגררים STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{P 0 "משבצת " ""}{COMMA}{P "" " משבצות"} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :בעת גרירה, שמור על מרחק קבוע בין רמזורים: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :בחר את התנגהות הצבת הרמזורים בעת גרירת רמזורים תוך לחיצה על מקש Ctrl. אם מבוטל, רמזורים מוצבים סביב מנהרות וגשרים כדי למנוע קטעים ארוכים ללא רמזורים. אם מאופשר, רמזורים מוצבים בכל N משבצות, כך שיישור רמזורים במסילות מקבילות הוא קל יותר STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{STRING} :בנה רמזורים מכאניים לפני STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :קבע את השנה בה רמזורים חשמליים ישמשו במסילות. לפני שנה זו יהיו בשימוש רמזורים מכניים (פעולתם זהה, הם רק נראים אחרת) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{STRING} :אפשר ממשק ויזואלי עבור רמזורים STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :הצג חלון לבחירת סוג הרמזור להצבה, במקום רק מעבר בין האפשרויות ללא חלון באמצעות הקלקה על "בנה רמזורים" תוך לחיצה על מקש Ctrl STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{STRING} :ברירת מחדל לבניית רמזורי רכבת STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :סוג רמזור לשימוש בברירת מחדל STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :רמזורי בלוק STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :רמזורי נתיב STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :רמזורי נתיב חד סיטרי STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :{STRING} :הצג חלופות עבור רמזורים STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :בחר בין אילו סוגי רמזורים לעבור כאשר מקליקים על "בנה רמזור" תוך לחיצה על מקש Ctrl STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :רמזורי בלוק בלבד STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :רמזורי נתיב בלבד STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :הכל STR_CONFIG_SETTING_TOWN_LAYOUT :מתווה דרך לערים חדשות: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :פריסה עבור רשת הכבישים של עיירות STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :מקורי STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :כבישים משופרים STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 רשת STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 רשת STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :אקראי STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :ערים יכולות לבנות דרכים: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :אפשר לעיירות לסלול כבישים לצורך גדילה. בטל/י כדי למנוע מרשויות עירוניות לסלול כבישים לעצמן STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :עיירות מורשות לבנות מפגשי כביש/מסילה: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :אפשור הגדרה אז תרשה לעיירות לבנות מפגשי כביש/מסילה STR_CONFIG_SETTING_NOISE_LEVEL :{STRING} :אפשר שליטה של הערים ברמת הרעש בשדות תעופה STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :כאשר הגדרה זו מבוטלת, יכולים להיות שני נמלי תעופה בכל עיירה. כאשר הגדרה זו מאופשרת, מספר נמלי התעופה מוגבל ע"י רף קבלת הרעש של העיירה, התלוי באוכלוסיה, בגודל נמל התעופה ובמרחקו מהעיירה STR_CONFIG_SETTING_TOWN_FOUNDING :ייסוד ערים במשחק: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :אפשור הגדרה זו מרשה לשחקנים לייסד עיירות חדשות במשחק STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :אסור STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :מותר STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :מותר, מתווה עיר מותאם אישית STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :מיקום עצים במהלך המשחק: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :שלוט בהופעה אקראית של עצים במהלך המשחק. זה עלול להשפיע על תעשיות המסתמכות על צמיחת עצים, לדוגמא מנסרות STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ללא {RED}(שובר מנסרת עץ) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :רק ביערות גשם STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :בכל מקום STR_CONFIG_SETTING_TOOLBAR_POS :{STRING} :מיקום הסרגל העיקרי STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :מיקום אופקי של סרגל הכלים הראשי בראש המסך STR_CONFIG_SETTING_STATUSBAR_POS :מיקום שורת המצב: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :מיקום אופקי של שורת המצב בתחתית המסך STR_CONFIG_SETTING_SNAP_RADIUS :רדיוס הצמדת חלון: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :מרחק מירבי בין חלונות בו החלון המוזז מיושר אוטומטית אל חלונות קרובים STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{P 0 "פיקסל " ""}{COMMA}{P "" " פיקסלים"} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :מבוטל STR_CONFIG_SETTING_SOFT_LIMIT :Window soft limit (non-sticky): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :מספר חלונות לא דביקים פתוחים לפני שחלונות ישנים נסגרים אוטומטית כדי לפנות מקום לחלונות חדשים STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :מבוטל STR_CONFIG_SETTING_ZOOM_MIN :רמת הגדלה מירבית: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :רמת ההגדלה המירבית עבור חלונות תצוגה. יש לשים לב כי אפשור רמות הגדלה גבוהות יותר מגדיל את דרישות הזיכרון STR_CONFIG_SETTING_ZOOM_MAX :רמת הקטנה מירבית: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :רמת התרחקות מירבית עבור חלונות תצוגה. רמות התרחקות גבוהות עלולות לגרום לאיטיות בזמן שהן בשימוש STR_CONFIG_SETTING_ZOOM_LVL_MIN :פי 4 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :פי 2 STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :רגילה STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :פי 2 STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :פי 4 STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :פי 8 STR_CONFIG_SETTING_TOWN_GROWTH :{STRING} : קצב ההתרחבות של העיירות STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :מהירות גדילת עיירות STR_CONFIG_SETTING_TOWN_GROWTH_NONE :מבוטל STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :איטי STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :רגיל STR_CONFIG_SETTING_TOWN_GROWTH_FAST :מהיר STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :מהיר מאוד STR_CONFIG_SETTING_LARGER_TOWNS :החלק מן העיירות אשר יהפכו לערים: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :כמות העיירות אשר יהפכו לערים, כך עיירה אשר מתחילה גדולה יותר וגדלה מהר יותר STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ב-{COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ללא STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :{STRING} :מכפיל התחלתי של גודל העיירות STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :גודל ממוצע של ערים יחסית לעיירות רגילות בתחילת המשחק STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :הסר רכיבי-דרך לא הגיוניים במהלך בניית דרכים: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :הסר קצות כבישים ללא מוצא בעת סלילה מחדש ממומנת של כבישים STR_CONFIG_SETTING_GUI :{ORANGE}ממשק חזותי STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}בנייה STR_CONFIG_SETTING_VEHICLES :{ORANGE}כלי תחבורה STR_CONFIG_SETTING_STATIONS :{ORANGE}תחנות STR_CONFIG_SETTING_ECONOMY :{ORANGE}כלכלה STR_CONFIG_SETTING_AI :{ORANGE}מתחרים STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}הצג הגדרות STR_CONFIG_SETTING_INTERACTION :{ORANGE}אינטראקציה STR_CONFIG_SETTING_SOUND :{ORANGE}צלילים STR_CONFIG_SETTING_NEWS :{ORANGE}חדשות והודעות STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}רמזורים STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}טיפול במטען STR_CONFIG_SETTING_AI_NPC :{ORANGE}שחקני מחשב STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}חידוש אוטומטי STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}טיפולים STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}ניתוב STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}רכבות STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}ערים STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}תעשיות STR_CONFIG_SETTING_PATHFINDER_OPF :מקורי STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(מומלץ) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :{STRING} :אלגוריתם איתור נתיב עבור רכבות STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :אלגוריתם איתור נתיב עבור רכבות STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :{STRING} :אלגוריתם איתור נתיב עבור רכבי כביש STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :אלגוריתם איתור נתיב עבור רכבי כביש STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :{STRING} :אלגוריתם איתור נתיב עבור כלי שייט STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :אלגוריתם איתור נתיב עבור אוניות STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :החלפת כיוון אוטומטית ברמזורים: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :אפשר לרכבות להחליף כיוון ברמזור, אם הן חיכו שם זמן ממושך STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}שנה ערך # Config errors STR_CONFIG_ERROR :{WHITE}שגיאה בנוגע לקובץ התצורה... STR_CONFIG_ERROR_ARRAY :{WHITE}... שגיאה במערך '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ערך לא חוקי '{STRING}' עבור '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... תווים עוקבים בסוף ההגדרה '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... מתעלם מ-NewGRF '{STRING}': מזהה GRF משוכפל לעומת '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... מתעלם מ-NewGRF לא חוקי '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :לא נמצא STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :לא בטיחותי עבור שימוש סטטי STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF מערכת STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :לא תואם גרסה זו של OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :לא ידוע STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... רמת דחיסה '{STRING}' אינה חוקית STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... פורמט שמירת משחק '{STRING}' אינו זמין. עובר להשתמש ב-'{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... מתעלם מערכת גרפיקה בסיסית '{STRING}': לא נמצאה STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... מתעלם מערכת צלילים בסיסית '{STRING}': לא נמצאה STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... מתעלם מערכת מוסיקה בסיסית '{STRING}': לא נמצאה # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}משחק חדש STR_INTRO_LOAD_GAME :{BLACK}טען משחק STR_INTRO_PLAY_SCENARIO :{BLACK}שחק תרחיש STR_INTRO_PLAY_HEIGHTMAP :{BLACK}שחק במפת גבהים STR_INTRO_SCENARIO_EDITOR :{BLACK}עורך השלבים STR_INTRO_MULTIPLAYER :{BLACK}משחק מרובה שחקנים STR_INTRO_GAME_OPTIONS :{BLACK}אפשרויות STR_INTRO_HIGHSCORE :{BLACK}טבלת ניקוד מירבי STR_INTRO_ADVANCED_SETTINGS :{BLACK}הגדרות מתקדמות STR_INTRO_NEWGRF_SETTINGS :{BLACK}(NewGRF)הגדרות שדרוג גראפי STR_INTRO_ONLINE_CONTENT :{BLACK} בדוק תוכן מקוון STR_INTRO_SCRIPT_SETTINGS :{BLACK}הגדרות סקריפטים של משחק/שחקני מחשב STR_INTRO_QUIT :{BLACK}צא STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}התחל משחק חדש. Ctrl+לחיצה מדלג על תצורת מפה STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}טען משחק שמור STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}התחל משחק חדש בשימוש מפת גבהים כנוף. STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}התחל משחק חדש עם תרחיש מותאם אישית STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}צור עולם/תרחיש מותאמים אישית STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}התחל משחק מרובה משתתפים STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}אקלים ממוזג STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}אקלים קר STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}אקלים טרופי STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}ארץ הצעצועים STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}הצג הגדרות משחק STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}הצג טבלת ניקוד מירבי STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}הצג הגדרות מתקדמות STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}הצג הגדרות שדרוג גראפי STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} חפש תוכן חדש/מעודכן להורדה STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK} הצג הגדרות סקריפטים של משחק/שחקני מחשב STR_INTRO_TOOLTIP_QUIT :{BLACK}צא מ-'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}בתרגום זה חסרים {P 0 "מחרוזת " ""}{NUM}{P "" " מחרוזות"}. אנא עזור לשפר את OpenTTD ע"י הצטרפות כמתרגם. קרא בקובץ readme.txt לפרטים. # Quit window STR_QUIT_CAPTION :{WHITE}צא STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}אתה בטוח שברצונך לצאת ולחזור ל{STRING}? STR_QUIT_YES :{BLACK}כן STR_QUIT_NO :{BLACK}לא # Supported OSes STR_OSNAME_WINDOWS :חלונות STR_OSNAME_DOS :דוס STR_OSNAME_UNIX :יוניקס STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :מערכת הפעלה בי STR_OSNAME_HAIKU :הייקו STR_OSNAME_MORPHOS :מערכת הפעלה מורפ STR_OSNAME_AMIGAOS :מערכת הפעלה אניגמה STR_OSNAME_OS2 :מערכת הפעלה או.אס שתיים STR_OSNAME_SUNOS :סולריס # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}עזוב משחק STR_ABANDON_GAME_QUERY :{YELLOW}?האם אתה בטוח שברצונך לעזוב את המשחק STR_ABANDON_SCENARIO_QUERY :{YELLOW}האם אתה בטוח שברצונך לצאת משלב זה? # Cheat window STR_CHEATS :{WHITE}(cheats) טריקים STR_CHEATS_TOOLTIP :{BLACK}תיבות הסימון מציינות האם השתמשת בטריק הנתון בעבר STR_CHEATS_WARNING :{BLACK}אזהרה! את/ה עומ/ת לבגוד בחבריך למשחק. קח/י בחשבון שחרפה כזו תיזכר לנצח. STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG}- הגדל את כמות הכסף במאזנך ל STR_CHEAT_CHANGE_COMPANY :{ORANGE}{COMMA}{LTBLUE} :שחק כבעלי החברה STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}טרקטור אימתני (הסרת מפעלים, רכיבים שאי אפשר להזיז): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{ORANGE}{STRING}{LTBLUE} :מנהרות יכולות לחצות זו את זו STR_CHEAT_NO_JETCRASH :{LTBLUE}מטוסי סילון לא יתרסקו (לעיתים קרובות) בשדות תעופה קטנים: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :אקלים ממוזג STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :אקלים קר STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :אקלים טרופי STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :ארץ הצעצועים STR_CHEAT_CHANGE_DATE :{LTBLUE}שנה תאריך:{ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}שנה את השנה הנוכחית STR_CHEAT_SETUP_PROD :{LTBLUE}אפשר שינוי ערכי התפוקה: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}הגדרות צבע חדשות STR_LIVERY_GENERAL_TOOLTIP :{BLACK}הצג הגדרות צבע כלליות STR_LIVERY_TRAIN_TOOLTIP :{BLACK}הצג הגדרות צבע לרכבות STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}הצג הגדרות צבע לרכבים STR_LIVERY_SHIP_TOOLTIP :{BLACK}הצג הגדרות צבע לכלי שייט STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}הצג הגדרות צבע לכלי טייס STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}בחר/י צבע עיקרי עבור ערכת הצבעים המסומנת. קליק בשילוב לחיצה על מקש Ctrl יקבע את הצבע הזה עבור כל ערכת צבעים STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}בחר/י צבע משני עבור ערכת הצבעים המסומנת. קליק בשילוב לחיצה על מקש Ctrl יקבע את הצבע הזה עבור כל ערכת צבעים STR_LIVERY_PANEL_TOOLTIP :{BLACK} .CTRL+click בחר הגדרת צבע שברצונך לערוך או מספר הגדרות ע"י STR_LIVERY_DEFAULT :צבע כללי STR_LIVERY_STEAM :קטר קיטור STR_LIVERY_DIESEL :קטר דיזל STR_LIVERY_ELECTRIC :קטר חשמלי STR_LIVERY_MONORAIL :קטר חד-פס STR_LIVERY_MAGLEV :קטר פס מגנטי STR_LIVERY_DMU :די אמ יו STR_LIVERY_EMU :אי אמ יו STR_LIVERY_PASSENGER_WAGON_STEAM :(קרון נוסעים (קיטור STR_LIVERY_PASSENGER_WAGON_DIESEL :(קרון נוסעים (דיזל STR_LIVERY_PASSENGER_WAGON_ELECTRIC :(קרון נוסעים (חשמלי STR_LIVERY_PASSENGER_WAGON_MONORAIL :(קרון נוסעים (חד-פס STR_LIVERY_PASSENGER_WAGON_MAGLEV :(קרון נוסעים (פס מגנטי STR_LIVERY_FREIGHT_WAGON :קרון מטען STR_LIVERY_BUS :אוטובוס STR_LIVERY_TRUCK :משאית STR_LIVERY_PASSENGER_SHIP :מעבורת נוסעים STR_LIVERY_FREIGHT_SHIP :ספינת משא STR_LIVERY_HELICOPTER :מסוק STR_LIVERY_SMALL_PLANE :מטוס קטן STR_LIVERY_LARGE_PLANE :מטוס גדול STR_LIVERY_PASSENGER_TRAM :חשמלית נוסעים STR_LIVERY_FREIGHT_TRAM :חשמלית משא # Face selection window STR_FACE_CAPTION :{WHITE}בחירת תווי פנים STR_FACE_CANCEL_TOOLTIP :{BLACK}בטל פנים חדשות STR_FACE_OK_TOOLTIP :{BLACK}אישור תווי פנים STR_FACE_MALE_BUTTON :{BLACK}גבר STR_FACE_MALE_TOOLTIP :{BLACK}בחר תווי פנים של גברים STR_FACE_FEMALE_BUTTON :{BLACK}אישה STR_FACE_FEMALE_TOOLTIP :{BLACK}בחר תווי פנים של נשים STR_FACE_NEW_FACE_BUTTON :{BLACK}פנים חדשות STR_FACE_NEW_FACE_TOOLTIP :{BLACK}צור תווי פנים באקראי STR_FACE_ADVANCED :{BLACK}מתקדם STR_FACE_ADVANCED_TOOLTIP :{BLACK}בחירת תוי פנים מתקדמת STR_FACE_SIMPLE :{BLACK}פשוט STR_FACE_SIMPLE_TOOLTIP :{BLACK}בחירה פושטה של תוי פנים STR_FACE_LOAD :{BLACK}טען STR_FACE_LOAD_TOOLTIP :{BLACK}טען פנים מקובץ STR_FACE_LOAD_DONE :{WHITE}הפנים החביבות עליך הוטענו מהקובץ STR_FACE_FACECODE :{BLACK}תוי פנים מספר STR_FACE_FACECODE_TOOLTIP :{BLACK}צפה/שנה מספר סידורי של תוי הפנים STR_FACE_FACECODE_CAPTION ::{WHITE}צפה/שנה מספר סידורי של תוי הפנים STR_FACE_FACECODE_SET :{WHITE}המפר הסידורי של תוי הפנים הוחלף STR_FACE_FACECODE_ERR :{WHITE}לא ניתן לקבוע מספר פנים של השחקן - חייב להיות מספר בין 0 ל-4,294,967,295! STR_FACE_SAVE :{BLACK}שמור STR_FACE_SAVE_TOOLTIP :{BLACK}שמור את הפנים לקובץ STR_FACE_SAVE_DONE :{WHITE}פנים אלה ישמרו כהעדפה אישית שלך בקובץ ההגדרות של המשחק STR_FACE_EUROPEAN :{BLACK}אירופאי STR_FACE_SELECT_EUROPEAN :{BLACK}בחר תווי פנים אירופאיים STR_FACE_AFRICAN :{BLACK}אפריקני STR_FACE_SELECT_AFRICAN :{BLACK}בחר תווי פנים אפריקניים STR_FACE_YES :כן STR_FACE_NO :לא STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}אפשר זקן/עגילים STR_FACE_HAIR ::שיער STR_FACE_HAIR_TOOLTIP :{BLACK}שנה שיער STR_FACE_EYEBROWS ::גבות STR_FACE_EYEBROWS_TOOLTIP :{BLACK}שנה גבות STR_FACE_EYECOLOUR ::צבע עיניים STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}שנה צבע עיניים STR_FACE_GLASSES ::משקפיים STR_FACE_GLASSES_TOOLTIP :{BLACK}אפשר משקפיים STR_FACE_GLASSES_TOOLTIP_2 :{BLACK} שנה משקפיים STR_FACE_NOSE :: אף STR_FACE_NOSE_TOOLTIP :{BLACK}שנה אף STR_FACE_LIPS ::שפתיים STR_FACE_MOUSTACHE ::שפם STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}שנה שפתיים או שפם STR_FACE_CHIN ::סנטר STR_FACE_CHIN_TOOLTIP :{BLACK}שנה סנטר STR_FACE_JACKET ::חליפה STR_FACE_JACKET_TOOLTIP :{BLACK}שנה חליפה STR_FACE_COLLAR ::צווארון STR_FACE_COLLAR_TOOLTIP :{BLACK}שנה צווארון STR_FACE_TIE ::עניבה STR_FACE_EARRING ::עגילים STR_FACE_TIE_EARRING_TOOLTIP :{BLACK} שנה עניבה/עגילים # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}משחק רשת STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK} :חיבור STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK} :(LAN)בחר משחק באינטרנט/רשת מקומית STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :אינטרנט STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK} :שם השחקן STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}זהו שמך כפי שיצפה ע"י המשתתפים האחרים STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}שם STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}שם המשחק STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}לקוחות STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}לקוחות מחוברים / מקסימום לקוחות{}חברות מחוברות / מקסימום חברות STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}גודל המפה STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}גודל המפה במשחק{}לחץ למיון לפי שטח STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}תאריך STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}תאריך נוכחי STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}שנים STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}מספר שנים{}המשחק נמשך STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}'שפה, גירסת שרת וכו STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}בחר משחק מהרשימה STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}השרת אליו התחברת לאחרונה STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}לחץ להתחברות חוזרת לשרת אליו התחברת לאחרונה STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}מידע על המשחק STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}לקוחות: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}שפה: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}סוג הקרקע: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}גודל המפה: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}גרסת השרת: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}כתובת השרת: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}תאריך התחלה: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}תאריך נוכחי: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}מוגן בסיסמה! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}שרת מנותק STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}שרת מלא STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}גרסה לא תואמת STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}אי התאמת קבצים גרפיים STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}הצטרף למשחק STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}רענן שרת STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}רענן את המידע המוצג לגבי השרת STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}אתר שרת STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}סרוק את הרשת לאיתור שרת STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}הוסף שרת STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}מוסיף שרת לרשימה שתמיד יבדק למשחקים פעילים. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}הפעל שרת STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}הפעל שרת חדש STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK} :שמך STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}הזן את הכתובת של השרת # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}התחל משחק רב-משתתפים חדש STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}שם המשחק: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}השם שיוצג למשתתפים אחרים בתפריט משחק רשת STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}קבע סיסמה STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}הגן על המשחק שלך עם סיסמה אם אתה לא רוצה שהוא יהיה זמין לכולם STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / אינטרנט STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :(אינטרנט (פרסם STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} לקוח{P "" "ות"} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}מקסימום לקוחות: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK} :מספר משתתפים מירבי STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} חבר{P "ה" "ות"} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}מקסימום חברות: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}הגבל את השרת למספר מסויים של חברות STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} צופ{P "ה" "ים"} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK} :מספר צופים מירבי STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}הגבלת השרת למספר צופים מסויים STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}שפת דיבור: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}שחקנים אחרים ידעו איו שפה מדוברת בשרת STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}הזן שם למשחק רשת # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :כלשהו STR_NETWORK_LANG_ENGLISH :אנגלית STR_NETWORK_LANG_GERMAN :גרמנית STR_NETWORK_LANG_FRENCH :צרפתית STR_NETWORK_LANG_BRAZILIAN :ברזילאית STR_NETWORK_LANG_BULGARIAN :בולגרית STR_NETWORK_LANG_CHINESE :סינית STR_NETWORK_LANG_CZECH :צ'כית STR_NETWORK_LANG_DANISH :דנית STR_NETWORK_LANG_DUTCH :הולנדית STR_NETWORK_LANG_ESPERANTO :אספרנטו STR_NETWORK_LANG_FINNISH :פינית STR_NETWORK_LANG_HUNGARIAN :הונגרית STR_NETWORK_LANG_ICELANDIC :איסלנדית STR_NETWORK_LANG_ITALIAN :איטלקית STR_NETWORK_LANG_JAPANESE :יפנית STR_NETWORK_LANG_KOREAN :קוריאנית STR_NETWORK_LANG_LITHUANIAN :לטבית STR_NETWORK_LANG_NORWEGIAN :נורבגית STR_NETWORK_LANG_POLISH :פולנית STR_NETWORK_LANG_PORTUGUESE :פורטוגזית STR_NETWORK_LANG_ROMANIAN :רומנית STR_NETWORK_LANG_RUSSIAN :רוסית STR_NETWORK_LANG_SLOVAK :סלובקית STR_NETWORK_LANG_SLOVENIAN :סלובנית STR_NETWORK_LANG_SPANISH :ספרדית STR_NETWORK_LANG_SWEDISH :שבדית STR_NETWORK_LANG_TURKISH :טורקית STR_NETWORK_LANG_UKRAINIAN :אוקראינית STR_NETWORK_LANG_AFRIKAANS :אפריקנית STR_NETWORK_LANG_CROATIAN :קרואטית STR_NETWORK_LANG_CATALAN :קטלונית STR_NETWORK_LANG_ESTONIAN :אסטונית STR_NETWORK_LANG_GALICIAN :גליציאנית STR_NETWORK_LANG_GREEK :יוונית STR_NETWORK_LANG_LATVIAN :לטבית ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}לובי של משחק רשת STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{ORANGE}{STRING} {BLACK} :מתכונן להצטרף אל STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}רשימת החברות המשתתפות במשחק. ניתן להצטרף לחברה קיימת או ליצור חברה חדשה במידה וקיים מקום פנוי STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}פרטי חברה STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}שם החברה: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{WHITE}{NUM}{SILVER} :שנת הקמה STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}ערך החברה: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{WHITE}{CURRENCY_LONG}{SILVER} :מאזן נוכחי STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{WHITE}{CURRENCY_LONG}{SILVER} :הכנסות בשנה האחרונה STR_NETWORK_GAME_LOBBY_PERFORMANCE :{WHITE}{NUM}{SILVER} :מדד הביצועים STR_NETWORK_GAME_LOBBY_VEHICLES :{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} {SILVER} :כלי תעבורה STR_NETWORK_GAME_LOBBY_STATIONS :{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} {SILVER} :תחנות STR_NETWORK_GAME_LOBBY_PLAYERS :{WHITE}{STRING} {SILVER} :שחקנים STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}חברה חדשה STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}יצירת חברה חדשה STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}צפה במשחק STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}הצטרף למשחק כצופה STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}הצטרף לחברה STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}הצטרף להנהלת חברה זו # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}מתחבר... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) מתחבר... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) מקבל הרשאה... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) ממתין... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) טוען מפה... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) מעבד נתונים... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) נרשם... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}טוען מידע על המשחק... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}טוען מידע על החברה... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{P 0 "שחקן " ""}{NUM}{P "" " שחקנים"} לפניך STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} הורדו עד כה STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} :הורדו STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}התנתק STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}שרת מוגן. הזן סיסמה STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}חברה מוגנת. הזן סיסמה # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}רשימת משתתפים STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}צפה STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}חברה חדשה # Network client list STR_NETWORK_CLIENTLIST_KICK :בעט STR_NETWORK_CLIENTLIST_BAN :חסימה STR_NETWORK_CLIENTLIST_GIVE_MONEY :נתן כסף STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :דבר לכולם STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :דבר לחברה STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :הודעה פרטית STR_NETWORK_SERVER :שרת STR_NETWORK_CLIENT :לקוח STR_NETWORK_SPECTATORS :צופים STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}הכנס סכום כסף שברצונך לתת # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}בטל שמירת הסיסמה החדשה STR_COMPANY_PASSWORD_OK :{BLACK}שמור את הסיסמה החדשה STR_COMPANY_PASSWORD_CAPTION :{WHITE}סיסמת החברה STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}ברירת המחדל לסיסמה STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}השתמש בסיסמה זו כברירת מחדל עבור חברות חדשות # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}הצטרף STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}הצטרף ושחק כשותף בחברה STR_COMPANY_VIEW_PASSWORD :{BLACK}ססמה STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}הגן על חברתך בסיסמה בכדי למנוע הצטרפות בלתי-מורשים STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}קבע סיסמה לחברה # Network chat STR_NETWORK_CHAT_SEND :{BLACK}שלח STR_NETWORK_CHAT_COMPANY_CAPTION :[קבוצה] : STR_NETWORK_CHAT_CLIENT_CAPTION :[פרטי] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[לכולם] : STR_NETWORK_CHAT_COMPANY :[קבוצה] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[קבוצה] אל {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[פרטי] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[פרטי] ל {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[לכולם] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}הקלד טקסט לצאט ברשת # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}לא נמצאה רשת STR_NETWORK_ERROR_NOSERVER :{WHITE}לא נמצאו משחקים ברשת STR_NETWORK_ERROR_NOCONNECTION :{WHITE}השרת אינו מגיב STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Newgrf לא ניתן להתחבר עקב אי התאמת קבצי STR_NETWORK_ERROR_DESYNC :{WHITE}סינכרון משחק רשת נכשל STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}הקשר לשרת נותק STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}טעינת משחק מקובץ נכשלה STR_NETWORK_ERROR_SERVER_START :{WHITE}הפעלת השרת נכשלה STR_NETWORK_ERROR_CLIENT_START :{WHITE}ניסיון חיבור נכשל STR_NETWORK_ERROR_TIMEOUT :{WHITE}נכשל #{NUM} ניסיון התקשרות STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}שגיאת התקשרות STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}אי התאמה לגרסת השרת STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}ססמה שגוייה STR_NETWORK_ERROR_SERVER_FULL :{WHITE}השרת מלא STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}הינך מודח משרת זה STR_NETWORK_ERROR_KICKED :{WHITE}נזרקת מהמשחק ע"י המשתתפים האחרים STR_NETWORK_ERROR_CHEATER :{WHITE}שימוש בטריקים אסור בשרת זה STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}שלחת יותר מדי פקודות אל השרת STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}לקח לך יותר מדי זמן להכניס את הסיסמא STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}המחשב שלך איטי מדי כדי לעמוד בקצב של השרת STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}למחשב שלך לקח יותר מדי זמן כדי להוריד את המפה STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}למחשב שלך לקח יותר מדי זמן כדי להצטרף אל השרת ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :שגיאה כללית STR_NETWORK_ERROR_CLIENT_DESYNC :שגירת סינכרון STR_NETWORK_ERROR_CLIENT_SAVEGAME :טעינת מפה נכשלה STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :הקשר נותק STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :בעיה בפרוטוקול STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF חוסר התאמת STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :אין אישור STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :התקבלה חבילת מידע לא תקינה או לא צפויה STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :גרסא שונה STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :השם שבחרת תפוס STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :סיסמא שגוייה STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :המספר המזהה של החברה שגוי STR_NETWORK_ERROR_CLIENT_KICKED :נזרקת על ידי הסרבר STR_NETWORK_ERROR_CLIENT_CHEATER :ניסית להשתמש בקודים STR_NETWORK_ERROR_CLIENT_SERVER_FULL :השרת מלא STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :שלח יותר מדי פקודות STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :לא קיבל אף סיסמא בזמן STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :פקיעת זמן כללית STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :הורדת המפה ארכה זמן רב מדי STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :עיבוד המפה ארך זמן רב מדי ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}איבוד קשר אפשרי STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}ב- {NUM} שני{P "יה" "ות"} האחרוות לא התקבל מידע מהשרת # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :המשחק הופסק ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :המשחק עדיין מופסק ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :המשחק עדיין מופסק ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :המשחק עדיין מופסק ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :משחק עדיין מושהה ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :המשחק הומשך ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :מספר שחקנים STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :מתחבר ללקוחות STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ידני STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :סקריפט משחק ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :עוזב STR_NETWORK_MESSAGE_CLIENT_JOINED :הצטרף למשחק {STRING} *** STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} הצטרף למשחק (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :{2:NUM} .הצטרף לחברה מס {NBSP}{0:STRING} *** STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :.הצטרף למשחק כצופה {STRING} *** STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :{2:NUM} הקים חברה חדשה {NBSP}{0:STRING} *** STR_NETWORK_MESSAGE_CLIENT_LEFT :({2:STRING}) עזב את המשחק {NBSP}{0:STRING} *** STR_NETWORK_MESSAGE_NAME_CHANGE :{STRING} שינה את שמו ל {STRING} *** STR_NETWORK_MESSAGE_GIVE_MONEY :{2:CURRENCY_LONG} נתן לחברתך {NBSP}{0:STRING} *** STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :{2:CURRENCY_LONG} {1:STRING} נתת ל *** STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}השרת סגר את המשחק STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}השרת מופעל מחדש...{}אנא המתן... # Content downloading window STR_CONTENT_TITLE :{WHITE}הורדת תוכן STR_CONTENT_TYPE_CAPTION :{BLACK}סוג STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK} סוג התוכן STR_CONTENT_NAME_CAPTION :{BLACK}שם STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK} שם התוכן STR_CONTENT_MATRIX_TOOLTIP :{BLACK} לחץ על פריט לצפייה במידע, סמן להורדה STR_CONTENT_SELECT_ALL_CAPTION :{BLACK} בחר הכל STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK} בחר את כל התכנים להורדה STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK} בחר שידרוגים STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} בחר את כל התכנים המהווים שדרוג לבחירה קיימת STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} בטל בחירה STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} בטל את כל הבחירות להורדה STR_CONTENT_FILTER_TITLE :{BLACK}סינון תוית\שם: STR_CONTENT_OPEN_URL :{BLACK}בקר באתר האינטרנט STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}בקר באתר האינטרנט עבור התוכן הזה STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} הורד STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} החל בהורדת התכנים שנבחרו STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{WHITE}{BYTES}{SILVER} :גודל ההורדה STR_CONTENT_DETAIL_TITLE :{SILVER} פרטי תוכן STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}לא בחרת בפריט זה להורדה STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}בחרת בפריט זה להורדה STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER} פריט תלוי זה נבחר להורדה STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER} כבר יש לך את זה STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER} תוכן זה לא מוכר ואינו ניתן להורדה ב-OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}זוהי חלופה ל{STRING} קיים STR_CONTENT_DETAIL_NAME :{WHITE}{STRING}{SILVER} :שם STR_CONTENT_DETAIL_VERSION :{WHITE}{STRING}{SILVER} :גירסה STR_CONTENT_DETAIL_DESCRIPTION :{WHITE}{STRING}{SILVER} :תיאור STR_CONTENT_DETAIL_URL :{WHITE}{STRING}{SILVER} :כתובת STR_CONTENT_DETAIL_TYPE :{WHITE}{STRING}{SILVER} :סוג STR_CONTENT_DETAIL_FILESIZE :{WHITE}{BYTES}{SILVER} :גודל ההורדה STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{WHITE}{STRING}{SILVER} :נבחר בגלל STR_CONTENT_DETAIL_DEPENDENCIES :{WHITE}{STRING}{SILVER} :תלויות STR_CONTENT_DETAIL_TAGS :{WHITE}{STRING}{SILVER} :תגים STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD נבנה ללא תמיכה ב-"zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... הורדת תוכן אינה אפשרית # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :גרפיקה בסיסית STR_CONTENT_TYPE_NEWGRF :(NewGRF)שדרוגים גרפיים STR_CONTENT_TYPE_AI :בינה מלאכותית STR_CONTENT_TYPE_AI_LIBRARY :ספריית בינה מלאכותית STR_CONTENT_TYPE_SCENARIO :תרחיש STR_CONTENT_TYPE_HEIGHTMAP :מפת גבהים STR_CONTENT_TYPE_BASE_SOUNDS :צלילים בסיסיים STR_CONTENT_TYPE_BASE_MUSIC :מוזיקת בסיס STR_CONTENT_TYPE_GAME_SCRIPT :סקריפט משחק STR_CONTENT_TYPE_GS_LIBRARY :ספריית סקריפטי משחק # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}מוריד תוכן... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}דורש קבצים... STR_CONTENT_DOWNLOAD_FILE :{WHITE}({2:NUM} מתוך {NBSP}{1:NUM}) {NBSP}{0:STRING} :מוריד STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}הורדת קבצים הסתיימה STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}({2:NUM} %)הורדו {NBSP}{1:BYTES} מתוך {NBSP}{0:BYTES} # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}ניסיון התחברות לשרת התוכן נכשל... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}הורדת רבצים נכשלה... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... הקשר נותק STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... הקובץ לא ניתן לכתיבה STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}נכשלה פתיחה של קובץ מכווץ STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}גרפיקה חסרה STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD דורש גרפיקה כדי לפעול אבל כזו לא נמצאה. האם לאפשר ל-OpenTTD להוריד ולהתקין את הגרפיקה הזו? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}כן, הורד את הגרפיקה STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}לא, צא מ-OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}הגדרות שקיפות STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK} שנה שקיפות עבור שלטי תחנות STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}שנה שקיפות עבור עצים STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}שנה שקיפות עבור בניינים STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}שנה שקיפות עבור תעשיות STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}שנה שקיפות עבור מבני תחבורה STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}שנה שקיפות עבור גשרים STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}שנה שקיפות עבור מבנים כגון מיגדלור/אנטנה STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}שנה שקיפות עבור עמודי חשמל STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}שנה שקיפות עבור מצביעי הטענה STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}הסתר במקום הפוך לשקוף # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}הדגשת שטח הכיסוי STR_STATION_BUILD_COVERAGE_OFF :{BLACK}מופסק STR_STATION_BUILD_COVERAGE_ON :{BLACK}מופעל STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}בטל הדגשת השטח המכוסה ע"י התחנה STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}הדגש את השטח המכוסה ע"י התחנה STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}מקבלת: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}מספקת: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}חבר לתחנה קיימת STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}בנה תחנה נפרדת STR_JOIN_WAYPOINT_CAPTION :{WHITE}חבר נקודות ציון STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}בנה נקודת ציון נפרדת # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :בניית מסילות STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :בניית מסילות חשמליות STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :בניית מסילות חד פסיות STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :בניית מסילות מגנטיות STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}בניית מסילת רכבת. Ctrl בורר בניית/הסרת מסילת רכבת STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}בנה מסילה במצב בנייה אוטומטי. Ctrl בורר בניית/הסרת מסילת רכבת STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}בניית מוסך רכבות (לרכישה וטיפול ברכבות) STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}הפוך מסילה לנקודת ציון. Ctrl מאפשר איחוד נקודות ציון STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}בניית תחנת רכבת. Ctrl מאפשר איחוד תחנות STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}בניית רמזורי רכבת. Ctrl בורר בין איתות דגלים ואיתות תאורה{}גרירה בונה אותות לאורך מסילת רכבת ישרה. Ctrl בונה אותות עד להצטלבות הבאה{}Ctrl+לחיצה בורר פתיחת חלון בחירת איתותים STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}בניית גשרים למסילות STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}חציבת מנהרות למסילות STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}החלף מצב בנייה/הסרה של פסי רכבת, רמזורים, נקודות ציון ותחנות. החזקת Ctrl מסירה גם פסי רכבת מנקודות ציון ותחנות רכבת STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}שנה/שדרג את המסילה STR_RAIL_NAME_RAILROAD :מסילת ברזל STR_RAIL_NAME_ELRAIL :מסילת ברזל חשמלית STR_RAIL_NAME_MONORAIL :רכבת חד-פסית STR_RAIL_NAME_MAGLEV :מסילת ברזל מגנטית # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}כיוון המוסך STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}בחר את הכיוון של מוסך הרכבת # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}נקודת ציון STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}בחר את סוג נקודות הציון # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}בחירת תחנת רכבת STR_STATION_BUILD_ORIENTATION :{BLACK}כיווניות STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}בחר כיוון תחנת רכבת STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}מספר המסילות STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}בחר מספר של רציפים לתחנת רכבת STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}אורך רציף STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}בחר אורך של תחנת רכבת STR_STATION_BUILD_DRAG_DROP :{BLACK}גרירה ושחרור STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}בניית תחנה ע"י גרירה ושחרור STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}בחר את סוג התחנה שיוצג STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}בחר את סוג התחנה לבנייה STR_STATION_CLASS_DFLT :תחנת בחירת מחדל STR_STATION_CLASS_WAYP :נקודות דרך # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}בחירת רמזורים STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}(רמזורי בלוק (מכאניים{NBSP}{}אלו הרמזורים הפשוטים ביותר, מאפשרים לרכבת אחת בלבד להמצא בבלוק מסויים בזמן נתון STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}(רמזורי כניסה (מכאניים {}{NBSP}ירוקים כל עוד יש לפחות רמזור יציאה ירוק הקטע המסילה העוקב. אחרת-אדומים STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}(רמזורי יציאה (מכאניים {}{NBSP} מתנהגים בדומה לרמזורי הבלוק, אבל מחייבים שינוי האור ברמזור בעת כניסה STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}רמזורים משולבים (מכאניים){}מתפקדים כרמזורי כניסה ויציאה במשולב. דבר זה מאפשר יצירת "עצים" מורכבים של רמזורים STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}(רמזורי נתיב (מכאניים{}{NBSP} מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה בטוח STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}(רמזורי נתיב חד-סיטרי (מכאניים{}{NBSP} מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}(רמזורי בלוק (חשמליים{NBSP}{}אלו הרמזורים הפשוטים ביותר, מאפשרים לרכבת אחת בלבד להמצא בבלוק מסויים בזמן נתון STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}(רמזורי כניסה (חשמליים {}{NBSP}ירוקים כל עוד יש לפחות רמזור יציאה ירוק הקטע המסילה העוקב. אחרת-אדומים STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}(רמזורי יציאה (חשמליים {}{NBSP} מתנהגים בדומה לרמזורי הבלוק, אבל מחייבים שינוי האור ברמזור בעת כניסה STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}רמזורים משולבים (חשמליים){}מתפקדים כרמזורי כניסה ויציאה במשולב, מאפשרים יצירת "עצים" מורכבים של רמזורים STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}(רמזורי נתיב (חשמליים{}{NBSP} מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה בטוח STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}(רמזורי נתיב חד-סיטרי (חשמליים{}{NBSP}מאפשרים ליותר מרכבת אחת להכנס לאותו הבלוק בו זמנית, כל עוד קיים נתיב פנוי למקום עצירה STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}החלפת סוג הרמזור – בחר סוג חדש ולחץ על רמזור קיים להחלפה STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}צפיפות הרמזורים הנוצרים בעת גרירה STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}הקטן צפיפות STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}הגדל צפיפות # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}בחר סוג הגשר עליו תעבור המסילה STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}בחירת גשר לכביש STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK} בחירת סוג הגשר – בחר את הסוג שברצונך לבנות STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :גשר תלוי, ברזל STR_BRIDGE_NAME_GIRDER_STEEL :גשר קורות, ברזל STR_BRIDGE_NAME_CANTILEVER_STEEL :גשר זיז, פלדה STR_BRIDGE_NAME_SUSPENSION_CONCRETE :גשר תלוי, בטון STR_BRIDGE_NAME_WOODEN :מעץ STR_BRIDGE_NAME_CONCRETE :בטון STR_BRIDGE_NAME_TUBULAR_STEEL :צינורי, ברזל STR_BRIDGE_TUBULAR_SILICON :צינורי, סיליקון # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}סלילת כבישים STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}בניה של רכבת קלה\חשמלית STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}סלול קטע כביש. Ctrl בורר בניית/הסרת כביש STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}בנה קטע מסילת חשמלית. Ctrl בורר בניית/הסרת מסילת חשמלית STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}סלול כביש באופן אוטומטי. Ctrl בורר בניית/הריסת כביש STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}בנה מסילת חשמלית באופן אוטומטי. Ctrl בורר בניית/הסרת מסילת חשמלית STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}בנה מוסך לרכבים (כדי לבנות ולתקן משאיות ואוטובוסים) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}בנה מוסך לחשמלית (כדי לבנות ולתקן חשמליות) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}בנה תחנת אוטובוס. Ctrl מאפשר איחוד תחנות STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}בנה תחנת נוסעים לחשמלית. Ctrl מאפשר איחוד תחנות STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}בנה תחנת העמסה למשאיות. Ctrl מאפשר איחוד תחנות STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}בנה תחנת משאות לחשמלית. Ctrl מאפשר איחוד תחנות STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}הפעל\כבה כבישים חד סיטריים STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}בנה גשר כביש STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}בנה גשר לחשמלית STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}בנה מנהרה לכביש STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}בנה מנהרה לחשמלית STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}שנה מצב בנה/הסר כבישים STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}שנה מצב בנה\מחק למבני חשמלית # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}כיוון המוסך STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}כיוון המוסך STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}התמצאות מוסך חשמלית STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}בחר התמצאות למוסכי חשמלית # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}כיוון תחנת אוטובוס STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}בחר כיוון תחנת אוטובוס STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}כיוון תחנת משאיות STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}בחר כיוון תחנת טעינה למשאיות STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}התמצאות חשמלית לנוסעים STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}בחר את כיוון התחנה STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}כיוון חשמלית משא STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}בחר את כיוון התחנה # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}בניית נתיבי מים STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}נתיבי מים STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}בנה תעלות STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}בניית שערים ימיים STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}בניית מבדוק אוניות (לבניה וטיפול בכלי שייט) STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}בניית רציף לכלי שייט. Ctrl מאפשר איחוד תחנות STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}מקם מצוף שיכול לשמש כנקודת ציון לכלי שייט STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}בנה מוביל-מים STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}הגדר את שטח המים.{}הכן תעלה, אלא אם כן CTRL לחוץ בגובה הים, ואז זה יציף את הסביבה במקום STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}מקם נחלים. # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}כיוון המבדוק STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}בחר את כיוון המבדוק # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}מזח # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}שדות תעופה STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}בנה שדה תעופה. Ctrl מאפשר איחוד תחנות # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}בחירת שדה תעופה STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}בחר את גודל/סוג שדה התעופה STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}רמת שדה תעופה STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}פריסה {NUM} STR_AIRPORT_SMALL :קטן STR_AIRPORT_CITY :עירוני STR_AIRPORT_METRO :מחוזי STR_AIRPORT_INTERNATIONAL :בינלאומי STR_AIRPORT_COMMUTER :שדה תעופה מאסף STR_AIRPORT_INTERCONTINENTAL :שדה תעופה בינלאומי STR_AIRPORT_HELIPORT :מנחת מסוקים STR_AIRPORT_HELIDEPOT :מוסך מסוקים STR_AIRPORT_HELISTATION :תחנת מסוקים STR_AIRPORT_CLASS_SMALL :שדות תעופה קטנים STR_AIRPORT_CLASS_LARGE :שדות תעופה גדולים STR_AIRPORT_CLASS_HUB :נמלי תעופה STR_AIRPORT_CLASS_HELIPORTS :שדות תעופה למסוקים STR_STATION_BUILD_NOISE :{GOLD}{COMMA}{BLACK} :רמת הרעש # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}שינוי פני השטח STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}הנמכת משבצת קרקע STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}הגבהת משבצת קרקע STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}שיטוח הקרקע STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}קנה אדמה לשימוש עתידי # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}פירט נבחר STR_OBJECT_BUILD_TOOLTIP :{BLACK}בחר פריט לבנייה STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}בחר את סוג הפריט לבנייה STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}צפיה מקדימה של האובייקט STR_OBJECT_BUILD_SIZE :{BLACK}גודל: {GOLD}{NUM} x {NUM} משבצת STR_OBJECT_CLASS_LTHS :מגדלורים STR_OBJECT_CLASS_TRNS :אנטנות # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}עצים STR_PLANT_TREE_TOOLTIP :{BLACK}בחר סוג עץ לנטיעה STR_TREES_RANDOM_TYPE :{BLACK}עצים מסוג אקראי STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}נטע עצים מסוג אקראי במקום זה STR_TREES_RANDOM_TREES_BUTTON :{BLACK}עצים אקראיים STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}שתול עצים באופן אקראי על פני השטח # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}יצירת טופוגרפיה STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}מקם אזורים סלעיים במפה STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}.הגדר אזור מדברי{}.להסרה לחץ CRTL והחזק STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}הגדל מספר משבצות לעיבוד STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}הקטן מספר משבצות לעיבוד STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}צור קרקע אקראית STR_TERRAFORM_SE_NEW_WORLD :{BLACK}צור תרחיש חדש STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}אפס קרקע STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}מחק מהמפה את כל רכוש השחקן STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}אפס קרקע STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}האם אתה בטוח שאתה רוצה למחוק את כל רכושו של השחקן? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}יצירת ערים STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}עיירה חדשה STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}ייסד עיר חדשה STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}עיר אקראית STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}ייסד עיר במקום אקראי STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}ערים אקראיות STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}פזר על המפה ערים באופן אקראי STR_FOUND_TOWN_NAME_TITLE :{YELLOW}שם העיר: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}הכנס שם עיר STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}לחץ כדי להכניס שם עיר STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}שם אקראי STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}צור שם אקראי חדש STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}:גודל העיר STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}קטן STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}בינוני STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}גדול STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}אקראי STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}בחר את גודל העיר STR_FOUND_TOWN_CITY :{BLACK}עיר STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}ערים גדלות מהר יותר מאשר עיירות{}כתלות בהגדרות, הן גדולות יותר כאשר הן נוסדות STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}מתווה כביש של עיר: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}בחר מתווה כביש לשימוש עבור עיר זו STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}מקורי STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}כבישים טובים יותר STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 רשת STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 רשת STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}אקראי # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}ממן תעשיה חדשה STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}בחר תעשיה מהרשימה STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :תעשיות אקראיות STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}פזר על המפה תעשיות באופן אקראי STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{YELLOW}{CURRENCY_LONG}{BLACK} :מחיר STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}צפה STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}בנה STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}ממן # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}שרשרת תעשיות עבור תעשיה {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}שרשרת תעשיות עבור מטען {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}תעשיות מייצרות STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}תעשיות מקבלות STR_INDUSTRY_CARGOES_HOUSES :{WHITE}בתים STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}הקלק על התעשיה כדי לראות את הספקים והלקוחות שלה STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}הקלק על המטען כדי לראות את הספקים והלקוחות שלו STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}הצג שרשרת STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}הצג תעשיות המייצרות ומקבלות מטען STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}קישור למפה הקטנה STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}בחר גם את התעשיות המוצגות במפה הקטנה STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}בחר מטען STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}בחר את המטען אשר ברצונך להציג STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}בחר תעשיה STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}בחר את התעשיה אשר ברצונך להציג # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}מידע על שטח קרקע STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{LTBLUE}לא זמין {BLACK}:עלות פינוי STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{RED}{CURRENCY_LONG}{BLACK} :עלות פינוי STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}ההכנסה אחרי שפונה: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :לא זמין STR_LAND_AREA_INFORMATION_OWNER :{BLACK}{LTBLUE}{STRING} :בעלים STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}בעלי הכביש: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}:בעלי מסילת החשמלית{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}בעלי מסילת הרכבת: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{LTBLUE}{STRING}{BLACK} :רשות מקומית STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :אין STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}קואורדינטות: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{LTBLUE}{DATE_LONG}{BLACK} : תאריך בניה STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}{LTBLUE}{STRING}: אופי התחנה STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK} {LTBLUE}{STRING}: סוג התחנה STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}אופי נמל התעופה: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}שם נמל התעופה: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}שם משבצת נמל תעופה: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}{LTBLUE}{STRING}: שדרוג גראפי STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK} :מקבל {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({1:STRING} {0:COMMA}/8 ) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}מגבלת מהירות על המסילה: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :סלעים STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :אדמה קשה STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :קרקע חשופה STR_LAI_CLEAR_DESCRIPTION_GRASS :עשבייה STR_LAI_CLEAR_DESCRIPTION_FIELDS :שדות STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :אדמה מכוסה בשלג STR_LAI_CLEAR_DESCRIPTION_DESERT :מדבר STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} מסילה STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} מסילה עם רמזורים חוסמים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} מסילה עם רמזורים מקדימים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} מסילה עם רמזורי יציאה STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} מסילה עם רמזורים משולבים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} מסילה עם רמזורי נתיב STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} מסילה עם רמזורי נתיב חד-סטריים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} מסילה עם רמזורים חוסמים ומקדימים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} מסילה עם רמזורים חוסמים ורמזורי יציאה STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} מסילה עם רמזורים חוסמים ורמזורים משולבים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} מסילה עם רמזורים חוסמים ורמזורי נתיב STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} מסילה עם רמזורים חוסמים ורמזורי נתיב חד-סטריים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} מסילה עם רמזורים מקדימים ורמזורי יציאה STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} מסילה עם רמזורים מקדימים ורמזורים משולבים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} מסילה עם רמזורים מקדימים ורמזורי נתיב STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} מסילה עם רמזורים מקדימים ורמזורי נתיב חד-סטריים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} מסילה עם רמזורי יציאה ורמזורים משולבים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} מסילה עם רמזורי יציאה ורמזורי נתיב STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} מסילה עם רמזורי יציאה ורמזורי נתיב חד-סטריים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} מסילה עם רמזורים משולבים ורמזורי נתיב STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} מסילה עם רמזורים משולבים ורמזורי נתיב חד-סטריים STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} מסילה עם רמזורי נתיב ורמזורי נתיב חד-סטריים STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} מוסך רכבות STR_LAI_ROAD_DESCRIPTION_ROAD :כביש STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :כביש עם תאורת רחוב STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :שדירה STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :מוסך לרכבים STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :מפגש כביש/מסילה STR_LAI_ROAD_DESCRIPTION_TRAMWAY :חשמלית # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :(בבניה) {STRING} STR_LAI_TREE_NAME_TREES :עצים STR_LAI_TREE_NAME_RAINFOREST :יערות הגשם STR_LAI_TREE_NAME_CACTUS_PLANTS :צמחי קקטוס STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :תחנת רכבת STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :סככת מטוסים STR_LAI_STATION_DESCRIPTION_AIRPORT :שדה תעופה STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :אזור טעינה למשאיות STR_LAI_STATION_DESCRIPTION_BUS_STATION :תחנת אוטובוס STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :מזח STR_LAI_STATION_DESCRIPTION_BUOY :מצוף STR_LAI_STATION_DESCRIPTION_WAYPOINT :נקודת ציון STR_LAI_WATER_DESCRIPTION_WATER :מים STR_LAI_WATER_DESCRIPTION_CANAL :תעלה STR_LAI_WATER_DESCRIPTION_LOCK :תא שייט STR_LAI_WATER_DESCRIPTION_RIVER :נהר STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :חוף או גדה STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :מבדוק # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :מנהרה למעבר רכבות STR_LAI_TUNNEL_DESCRIPTION_ROAD :מנהרה למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :גשר פלדה תלוי למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :גשר קורות פלדה למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :גשר זיז מפלדה למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :גשר תלוי מבטון מזויין למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :גשר עץ למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :גשר בטון למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :גשר צינורי למעבר רכבות STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :גשר פלדה תלוי למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :גשר קורות פלדה למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :גשר זיז מפלדה למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :גשר תלוי מבטון מזויין למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :גשר עץ למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :גשר בטון למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :גשר צינורי למעבר רכבים STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :מוביל-מים STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :אנטנה STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :מיגדלור STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :מטה החברה STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :שטח בבעלות חברה # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}OpenTTD אודות STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - {NBSP}זכויות יוצרים מקוריות STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק STR_SAVELOAD_LOAD_CAPTION :{WHITE}טען משחק STR_SAVELOAD_SAVE_SCENARIO :{WHITE}שמור תרחיש STR_SAVELOAD_LOAD_SCENARIO :{WHITE}טען תרחיש STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}טען מפת גבהים STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}שמור מפת גבהים STR_SAVELOAD_HOME_BUTTON :{BLACK}לחץ כאן כדי לעבור לתיקית בחירת מחדל של שמירות STR_SAVELOAD_BYTES_FREE :{BLACK}בתים פנויים {BYTES} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}רשימה של כוננים, תיקיות וקובצי משחקים שמורים STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}השם שנבחר לשמירה STR_SAVELOAD_DELETE_BUTTON :{BLACK}מחק STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}מחק את קובץ השמירה שנבחר STR_SAVELOAD_SAVE_BUTTON :{BLACK}שמור STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}שמור את המשחק הנוכחי עם השם שנבחר STR_SAVELOAD_LOAD_BUTTON :{BLACK}טען STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}טען את המשחק שנבחר STR_SAVELOAD_DETAIL_CAPTION :{BLACK}פרטי משחק STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}אין מידע זמין. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}הכנס שם לשמירה # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}יצור עולם STR_MAPGEN_MAPSIZE :{BLACK}:גודל המפה STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}בחר את גודל המפה במשבצות. מספר המשבצות הזמינות תהיה קצת קטנה יותר. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK} :מספר העיירות STR_MAPGEN_DATE :{BLACK} :תאריך STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK} :מספר התעשיות STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}גובה קו השלג STR_MAPGEN_SNOW_LINE_UP :{BLACK}הגבה את קו השלג STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}הנמך את קו השלג STR_MAPGEN_RANDOM_SEED :{BLACK} :מספר אקראי STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}הכנס מספר אקראי כלשהוא STR_MAPGEN_RANDOM :{BLACK}אקראית STR_MAPGEN_RANDOM_HELP :{BLACK}בחר מספר אקראי שישמש בסיס ליצירת הקרקע STR_MAPGEN_LAND_GENERATOR :{BLACK} :יצירת קרקע STR_MAPGEN_TREE_PLACER :{BLACK}אלגוריתם העצים: STR_MAPGEN_TERRAIN_TYPE :{BLACK} :סוג הקרקע STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK} :כמות ימים/אגמים STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}נהרות: STR_MAPGEN_SMOOTHNESS :{BLACK} :חלקלקות STR_MAPGEN_VARIETY :{BLACK}הפצה מגוונת: STR_MAPGEN_GENERATE :{WHITE}יצירת קרקע # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK} :שולי המפה STR_MAPGEN_NORTHWEST :{BLACK}צפון-מערב STR_MAPGEN_NORTHEAST :{BLACK}צפון-מזרח STR_MAPGEN_SOUTHEAST :{BLACK}דרום מזרח STR_MAPGEN_SOUTHWEST :{BLACK}דרום-מערב STR_MAPGEN_BORDER_FREEFORM :{BLACK}יד חופשית STR_MAPGEN_BORDER_WATER :{BLACK}מים STR_MAPGEN_BORDER_RANDOM :{BLACK}אקראי STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}אקראי STR_MAPGEN_BORDER_MANUAL :{BLACK}ידני STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK} :סיבוב מפת הגבהים STR_MAPGEN_HEIGHTMAP_NAME :{BLACK} :שם מפת הגבהים STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}גודל: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} על {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}מספר אקראי STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}שנה את גובה קו השלג STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}שנה את שנת הפתיחה # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}סוג התרחיש STR_SE_MAPGEN_FLAT_WORLD :{WHITE}קרקע שטוחה STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}צור קרקע שטוחה STR_SE_MAPGEN_RANDOM_LAND :{WHITE}קרקע אקראית STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK} :עומק הקרקע STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}הנמך את גובה האדמה השטוחה ברמה אחת STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}הגדל את עומק הקרקע STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}שינוי עומק הקרקע # Map generation progress STR_GENERATION_WORLD :{WHITE}מחולל עולם... STR_GENERATION_ABORT :{BLACK}הפסק STR_GENERATION_ABORT_CAPTION :{WHITE}הפסק יצירת עולם חדש STR_GENERATION_ABORT_MESSAGE :{YELLOW}?בטוח שברצונך לעצור STR_GENERATION_PROGRESS :{WHITE}{NUM}% :הושלם STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}יצור עולם STR_GENERATION_RIVER_GENERATION :{BLACK}יצירת נהרות STR_GENERATION_TREE_GENERATION :{BLACK}יצירת עצים STR_GENERATION_OBJECT_GENERATION :{BLACK}יצירת מבנים בלתי ניידים STR_GENERATION_CLEARING_TILES :{BLACK}יצירת איזורים סלעיים STR_GENERATION_SETTINGUP_GAME :{BLACK}קביעת הגדרות המשחק STR_GENERATION_PREPARING_TILELOOP :{BLACK}מריץ לולאה על כל המשבצות STR_GENERATION_PREPARING_SCRIPT :{BLACK}מריץ סקריפט STR_GENERATION_PREPARING_GAME :{BLACK}מכין את המשחק לפעולה # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}(NewGRF) הגדרות שדרוג גראפי STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}מידע NewGRF מפורט STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}קבצי NewGRF פעילים STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}קבצי NewGRF לא פעילים STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}בחר הגדרות מוכנות: STR_NEWGRF_FILTER_TITLE :{ORANGE}מחרוזת סינון: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}טען סביבה גראפית STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}שמור סביבה גראפית STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}שמור את הרשימה הנוכחית כהגדרת סביבה גראפית STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}תן שם לסביבה STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}מחק סביבה גראפית STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}מוחק את הסביבה הגראפית שנבחרה STR_NEWGRF_SETTINGS_ADD :{BLACK}הוסף STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}מוסיף את הקובץ שנבחר לרשימה STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}רענן רשימת קבצים STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}מרענן את רשימת הקבצים הזמינים STR_NEWGRF_SETTINGS_REMOVE :{BLACK}הסר STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}מסיר את הקובץ שנבחר מהרשימה STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}העבר למעלה STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}מעביר את הקובץ שנבחר כלפי מעלה ברשימה STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}העבר למטה STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}מעביר את הקובץ שנבחר כלפי מטה ברשימה STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK} רשימת קבצי שדרוג גראפי מותקנים STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}קבע ערכים STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}הצג פרמטרים STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}החלף פלטת צבעים STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}מחליף את פלטת הצבעים עבור קובץ השדרוג הגראפי שנבחר. השתמש באפשרות זו אם הצבעים שהתקבלו אינם די ברורים STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}החל הגדרות STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK} מצא תוכן חסר אונליין STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK} בדוק האם ניתן לאתר את התוכן החסר בשרת STR_NEWGRF_SETTINGS_FILENAME :{SILVER}{STRING}{BLACK}: שם קובץ STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}גרסא: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}גירסה מינימלת תואמת: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{SILVER}{STRING}{BLACK}: פלטת צבעים STR_NEWGRF_SETTINGS_PARAMETER :{SILVER}{STRING}{BLACK} :פרמטריֿם STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}לא קיים מידע STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}לא נמצא קובץ מתאים STR_NEWGRF_SETTINGS_DISABLED :{RED}מושתק STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}אינו תואם גרסא זו של OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}שנה/י פרמטרים של NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}סגור STR_NEWGRF_PARAMETERS_RESET :{BLACK}אתחל STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}הגדר את כל הפרמטרים לערך ברירת המחדל שלהם STR_NEWGRF_PARAMETERS_DEFAULT_NAME :פרמטר {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}מספר הגדרות: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}בדוק - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}הורה STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}בחן את העצם של ההיקף שמעל STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ב-{HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :אוביקט STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :סוג מסילה STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}משתנה NewGRF פרמטר 60+x (הקסה-דצימלי) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}מיישר ספרייט {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}הספרייט הבא STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}עבור לספרייט הבא, כאשר נדלג על כל הספרייטים המיוחדים ולבסוף נחזור לתחילת הרשימה STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}דלג לספרייט STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}עבור לספרייט הנתון. אם הוא אינו ספרייט רגיל, עבור לספרייט הרגיל הראשון שבא אחריו STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}הספרייט הקודם STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}עבור לספרייט הקודם, כאשר נדלג על כל הספרייטים המיוחדים ונחזור בסוף לתחילת הרשימה STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}הייצוג של הספרייט הנבחר. בעת ציור הספרייט, נתעלם מהיישור שלו STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}הזז את הספרייט, תוך שינוי מיקום על צירי ה-X וה-Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X היסט: {NUM}, Y היסט: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}בחר ספרייט STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}בחר ספרייט מנקודה כלשהיא במסך STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}עבור לספרייט # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}אזהרה: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{SILVER}{STRING}{RED}: שגיאה STR_NEWGRF_ERROR_MSG_FATAL :{SILVER}{STRING}{RED} :שגיאה חמורה STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}התרחשה שגיאה קריטית ב-NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} לא יעבוד עם גרסת ה-TTDPatch שדווחה ע"י OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} היא עבור גרסת {STRING} של TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} נועד להיות בשימוש יחד עם {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :פרמטר לא חוקי עבור {1:STRING}: פרמטר {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} חייב להיטען לפני {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} חייב להיטען אחרי {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} דורש גרסת {STRING} של OpenTTD ומעלה. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :קובץ השדרוג הגראפי אותו יועד לתרגם STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :יותר מידי קבצי שדרוג גראפי פתוחים בן זמנית STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Loading {1:STRING} as static NewGRF with {STRING} could cause desyncs. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :ספרייט לא מצופה (ספרייט {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :מאפיין Action 0 לא ידוע {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :ניסיון שימוש ב-ID לא תקין (ספרייט {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?). STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :מכיל מספר רשומות Action 8 (ספרייט {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :קראת אחר סוף הפסאודו-ספרייט (ספרייט {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}בערכת גרפיקה הבסיסית חסרים מספר ספרייטים.{}אנא עדכן את הערכה הגרפית הבסיסית.{}מכיוון שהינך משחק {YELLOW}גרסת פיתוח של OpenTTD{WHITE}, אולי תצטרך {YELLOW}גרסת פיתוח של ערכת הגרפיקה הבסיסית{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :משאב GRF המבוקש אינו זמין (ספרייט {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} נהפך ללא זמין ע"י {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :מבנה פורמט ספרייט לא תקין/לא ידוע (ספרייט {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}!אזהרה STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}הנך עומד לבצע שינוייך במהלך ריצת המשחק. פעולה זו עלולה לגרום לקריסה. האם אתה בטוח לחלוטין שברצונך להמשיך? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Can't add file: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}הקובץ לא נמצא, הוטען קובץ תואם STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}לא ניתן להוסיף את הקובץ: מספר קבצי שדרוג גראפי מקסימאלי STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}קבצים תואמים נטענו במקום קבצים חסרים STR_NEWGRF_DISABLED_WARNING :{WHITE}שדרוגים גראפים אחדים לא נמצאו ולפיכך נוטרלו STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}קבצים חסרים STR_NEWGRF_UNPAUSE_WARNING :{WHITE}?הפשרת המשחק עלולה להביא לקריסה. להמשיך # NewGRF status STR_NEWGRF_LIST_NONE :ללא STR_NEWGRF_LIST_ALL_FOUND :כל הקבצים נמצאים STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}נמצאו קבצים מתאימים STR_NEWGRF_LIST_MISSING :{RED}חסרים קבצים # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}התנהגות ה-NewGRF '{STRING}' עלולה לגרום לקריסה ו/או חוסר סנכרון במשחק. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}שינה את מצב קרון מונע עבור '{1:ENGINE}' כאשר לא נמצא במוסך STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}זה שינה את אורך הרכב ל'{1:ENGINE}' כאשר לא במוסך. STR_BROKEN_VEHICLE_LENGTH :{WHITE}רכבת '{VEHICLE}' השייכת לחברת '{COMPANY}' בעלת אורך לא חוקי. דבר זה נגמר ככל הנראה בעקבות בעיות ב-NEWGRF.המשחק עלול לצאת מסנכרון או לקרוס. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' סיפק מידע לא נכון. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}מידע מטען/התאמה מחדש עבור '{1:ENGINE}' שונה מרשימת הרכישה לאחר הבניה. דבר זה עלול לגרום מילוי/חידוש אוטומטי לכישלון התאמה מחדש בצורה נכונה. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' גרם ללולאה אינסופית בהתקשרות חזרה של הייצור. STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}קריאה חוזרת {1:HEX} החזירה תוצאה לא מוכרת / לא תקינה {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<מטען לא חוקי> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} של <מטען לא חוקי> STR_NEWGRF_INVALID_ENGINE :<דגם כלי רכב לא תקין> STR_NEWGRF_INVALID_INDUSTRYTYPE :<תעשייה לא תקינה> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}סורק NewGRF-ים STR_NEWGRF_SCAN_MESSAGE :{BLACK}סורק NewGRF-ים. כתלות בכמות זה עלול לארוך זמן מה... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" "-ים"} נסרק {P 0 "" "ו"} מתוך כ-{NUM} NewGRF{P "" "-ים"} STR_NEWGRF_SCAN_ARCHIVES :סורק עבור ארכיונים # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}סימניות {COMMA} - רשימת סימניות STR_SIGN_LIST_MATCH_CASE :{BLACK}התאם רישיות STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}אפשר/בטל התאמת רישיות בעת השוואת שמות שלטים אל מחרוזת הסינון # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}שנה את המלל של הסימניה STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}עבור לסימניה הבאה STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}עבור לסימניה הקודמת STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}הכנס שם סימניה # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}ערים STR_TOWN_DIRECTORY_NONE :{ORANGE}- אין - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}שמות ערים - לחץ על שם כדי למקד את התצוגה על העיר. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום העיר STR_TOWN_POPULATION :{BLACK}אוכלוסיית העולם: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (עיר) STR_TOWN_VIEW_POPULATION_HOUSES :{ORANGE}{1:COMMA}{BLACK} :בתים {ORANGE}{0:COMMA}{BLACK} :אוכלוסיה STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{ORANGE}{1:COMMA}{BLACK} :מספר מירבי {ORANGE}{0:COMMA}{BLACK} :נוסעים בחודש שעבר STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{ORANGE}{1:COMMA}{BLACK} :מספר מירבי {ORANGE}{0:COMMA}{BLACK} :שקי דואר בחודש שעבר STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}המטען שצריך בשביל גידול עיר STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} דרוש STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} דרוש בחורף STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} נמסר STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (עדיין דרוש) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (נמסר) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}עיירה גדלה כל {P 0 " יום" ""}{ORANGE}{COMMA}{BLACK}{P "" " ימים"} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}עיירה גדלה כל {P 0 " יום" ""}{ORANGE}{COMMA}{BLACK}{P "" " ימים"} (ממומנת) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}העיירה {RED}איננה{BLACK} גדלה STR_TOWN_VIEW_NOISE_IN_TOWN :{ORANGE}{1:COMMA}{BLACK} :מירבית {ORANGE}{0:COMMA}{BLACK} :רמת הרעש המותרת בעיר זו STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}מקד את התצוגה על מיקום העיר. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום העיר STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}רשות מקומית STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}הצג מידע על הרשות המקומית STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}שנה את שם העיר STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}הרחב STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK} הרחב את העיירה STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}מחק STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}מחק את העיר STR_TOWN_VIEW_RENAME_TOWN_BUTTON :שנה את שם העיר # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}רשות מקומית {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK} :מדד הביצועים של החברות STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}: פעולות זמינות STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}רשימת דברים שניתן לעשות בעיר זאת - לחץ על פריט לפרטים נוספים STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}עשה זאת STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}ביצוע הפעולה שנבחרה STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :קמפיין פירסום קטן STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :קמפיין פירסום בינוני STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :קמפיין פירסום גדול STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :מימון של שיפוץ הכבישים המקומיים STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :בניית פסל של בעל החברה STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :ממן מבנים חדשים STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :קניית זכויות הובלה בלעדיות STR_LOCAL_AUTHORITY_ACTION_BRIBE :שחד את העיריה המקומית STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}.התחל מסע פירסום מקומי קטן, כדי למשוך יותר נוסעים וסחורה לשירותי התחבורה שלך.{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}.התחל מסע פירסום מקומי בינוני, כדי למשוך יותר נוסעים וסחורה לשירותי התחבורה שלך.{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}התחל מסע פרסום מקומי גדול, כדי למשוך יותר נוסעים וסחורות לשירותי התחבורה שלך..{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW} ממן שיפוץ של מערכת הכבישים העירונית. הדבר גורם להפרעות תנועה ניכרות במשך כ-6 חודשים.{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}.ּבנה פסל של לכבודו של בעל החברה.{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}.ממן בניית מבנים מסחריים חדשים בעיר.{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}רכוש זכויות תחבורה בלעדיות למשך שנה אחת בעיר. רשות העירייה תאפשר לנוסעים ומטען להשתמש בתחנות החברה שלך בלבד.{}עלות: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}שחד את הרשות המקומית כדי להגדיל את הדרוג שלך בעיר תוך כדי סיכון להתפס ולשלם קנס חמור.{}עלות: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}מטרות STR_GOALS_GLOBAL_TITLE :{BLACK}מטרות גלובליות: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- אין - STR_GOALS_COMPANY_TITLE :{BLACK}מטרות חברה: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}הקלק על מטרה כדי למרכז את התצוגה הראשית על תעשיה/עיירה/משבצת. קליק תוך כדי לחיצה על מקש Ctrl פותח חלון תצוגה חדש במיקום התעשיה/העיירה/המשבצת # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :שאלה STR_GOAL_QUESTION_CAPTION_INFORMATION :מידע STR_GOAL_QUESTION_CAPTION_WARNING :אזהרה STR_GOAL_QUESTION_CAPTION_ERROR :שגיאה ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :ביטול STR_GOAL_QUESTION_BUTTON_OK :אישור STR_GOAL_QUESTION_BUTTON_NO :לא STR_GOAL_QUESTION_BUTTON_YES :כן STR_GOAL_QUESTION_BUTTON_DECLINE :דחה STR_GOAL_QUESTION_BUTTON_ACCEPT :קבל/י STR_GOAL_QUESTION_BUTTON_IGNORE :התעלם/י STR_GOAL_QUESTION_BUTTON_RETRY :נסה/י שוב STR_GOAL_QUESTION_BUTTON_PREVIOUS :הקודם STR_GOAL_QUESTION_BUTTON_NEXT :הבא STR_GOAL_QUESTION_BUTTON_STOP :עצור STR_GOAL_QUESTION_BUTTON_START :התחל STR_GOAL_QUESTION_BUTTON_GO :סע STR_GOAL_QUESTION_BUTTON_CONTINUE :המשך STR_GOAL_QUESTION_BUTTON_RESTART :אתחל STR_GOAL_QUESTION_BUTTON_POSTPONE :דחה STR_GOAL_QUESTION_BUTTON_SURRENDER :היכנע STR_GOAL_QUESTION_BUTTON_CLOSE :סגור # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}סובסידיות STR_SUBSIDIES_OFFERED_TITLE :{BLACK} :סובסידיות למימון שירותי הובלה STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} מ-{STRING} אל {STRING}{YELLOW} (ב-{DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- כלום - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK} :שירותים מסובסדים STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} מ-{STRING} אל {STRING}{YELLOW} ({COMPANY}{YELLOW}, עד {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}לחץ על שירות כדי להתמקד על עיר/תעשייה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום העיר/תעשייה # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}שמות תחנות - לחץ על השם כדי להתמקד בתחנה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום התחנה STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}לחץ והחזק מקש קונטרל כדי לבחור יותר מפריט אחד STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {P 0 "תחנה " ""}{COMMA}{P "" " תחנות"} STR_STATION_LIST_STATION :{YELLOW} {1:STATION_FEATURES}{0:STATION} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- כלום - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}בחר את כל המתקנים STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}(ברח את כל סוגי הסחורה (כולל סחורה שלא מחכה STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}שום סחורה לא מחכה # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}ממתינים: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} בדרך מ{STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}מקבל STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}הצג רשימת סוגי המטען שהתחנה מקבלת STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}מקבלת: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}לתחנה זו זכויות תעבורה בלעדיות בעיירה זו. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} רכשה זכויות תעבורה בלעדיות בעיירה זו. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}דירוג STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}הצג את דירוג השירות STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK} :דירוג מקומי של שירותי הובלה STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :מחריד STR_CARGO_RATING_VERY_POOR :דל מאד STR_CARGO_RATING_POOR :דל STR_CARGO_RATING_MEDIOCRE :בינוני STR_CARGO_RATING_GOOD :טוב STR_CARGO_RATING_VERY_GOOD :טוב מאד STR_CARGO_RATING_EXCELLENT :מצויין STR_CARGO_RATING_OUTSTANDING :מדהים ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}מרכז תצוגה ראשית על מיקום תחנה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום תחנה STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}שנה שם של תחנה STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}הצג את כל הרכבות העוברות דרך תחנה זו STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}הצג את כל הרכבים העוברים דרך תחנה זו STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}הצג את כל כלי הטייס העוברים דרך תחנה זו STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}הצג את כל כלי השייט העוברים דרך תחנה זו STR_STATION_VIEW_RENAME_STATION_CAPTION :שנה שם של תחנה/אזור טעינה STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}סגור נמל תעופה STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}מנע ממטוסים לנחות בנמל תעופה זה # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}מרכז תצוגה ראשית על מיקום ציון הדרך. Ctrl+לחיצה פותח תצוגה חדשה על מיקום ציון הדרך STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}שנה שם נקודת ציון STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}מרכז תצוגה ראשית על מיקום מצוף. Ctrl+לחיצה פותח חלון תצוגה חדש על מיקום מצוף STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}שנה שם מצוף STR_EDIT_WAYPOINT_NAME :{WHITE}ערוך שם נקודת ציון # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} נתונים כלכליים {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}הוצאות/הכנסות STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}בנייה STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}כלי תחבורה חדשים STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}עלות הפעלת רכבות STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}עלות תפעול רכבים STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD} עלות הפעלת כלי טייס STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD} עלות הפעלת כלי שייט STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}הוצאות אחזקה STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}הכנסת הרכבות STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}הכנסת כלי הרכב STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}הכנסת כלי הטייס STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}הכנסת כלי השייט STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}ריבית על ההלוואה STR_FINANCES_SECTION_OTHER :{GOLD}אחר STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}:סה”כ STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}חשבון הבנק STR_FINANCES_LOAN_TITLE :{WHITE}הלוואה STR_FINANCES_MAX_LOAN :{BLACK}{CURRENCY_LONG}{WHITE}: הלוואה מירבית STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}לווה {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}הגדל את ההלוואה. Ctrl+לחיצה מלווה ככל שניתן STR_FINANCES_REPAY_BUTTON :{BLACK}החזר {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}פרע חלק מההלוואה.Ctrl+לחיצה פורע ככל שניתן STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}תשתיות # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(מנהל) STR_COMPANY_VIEW_INAUGURATED_TITLE :{WHITE}{NUM} {GOLD} :שנת הקמה STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}:הגדרות צבע STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD} :כלי רכב STR_COMPANY_VIEW_TRAINS :{WHITE}רכבות {COMMA} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}רכבים {COMMA} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}מטוסים {COMMA} STR_COMPANY_VIEW_SHIPS :{WHITE}כלי שייט {COMMA} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}אין STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}{CURRENCY_LONG}{WHITE}:שווי החברה STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({1:COMPANY} נמצאים בבעלות{NBSP} {0:COMMA}%) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}תשתיות: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{P 0 "חלק מסילה " ""}{COMMA}{P "" " חלקי מסילה"} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{P 0 "חלק כביש " ""}{COMMA}{P "" " חלקי כביש"} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{P 0 "משבצת מים " ""}{COMMA}{P "" " משבצות מים"} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{P 0 "משבצת תחנה " ""}{COMMA}{P "" " משבצות תחנה"} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{P 0 "נמל תעופה " ""}{COMMA}{P "" " נמלי תעופה"} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}ללא STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}בנה בניין מטה STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}הקם את מטה החברה STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}צפה במטה STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}צפה במטה החברה STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}שנה מיקום המטה STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}מקם מחדש את מטה החברה תמורת 1% משווי החברה STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}פרטים STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}צפה בספירות מפורטות של תשתיות STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}פנים חדשות STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}בחר פנים חדשות למנהל STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}הגדרות צבע STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}שנה את צבעי כלי הרכב שבבעלות החברה STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}שם החברה STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}שנה את שם החברה STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}שם המנהל STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}שנה את שם המנהל STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}קנה 25% ממניות החברה STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}מכור 25% ממניות החברה שברשותך STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}קנה 25% ממניות חברה זו STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}מכור 25% ממניות חברה זו STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :שם החברה STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :שם המנהל STR_BUY_COMPANY_MESSAGE :{WHITE}.אנו מחפשים אחר קונה לחברה{} ? {NBSP}{1:CURRENCY_LONG} תמורת {NBSP}{0:COMPANY} האם אתה מעוניין לקנות את # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}תתיות של {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}חלקי מסילה: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}רמזורים STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}חלקי כביש: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}כביש STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}מסילת רכבת קלה STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}משבצות מים: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}תעלות STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}תחנות: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}משבצות תחנה STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}נמלי תעופה STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/שנה ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/שנה # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}תעשיות STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- אין - STR_INDUSTRY_DIRECTORY_ITEM :{YELLOW}(שונעו {NBSP}{3:COMMA}%){BLACK} ({1:CARGO_LONG}{2:STRING}) {ORANGE}{0:INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_TWO :{YELLOW}(שונעו {NBSP} {6:COMMA}%/{5:COMMA}%) {BLACK} ({3:CARGO_LONG}{4:STRING}/{1:CARGO_LONG}{2:STRING}) {ORANGE}{0:INDUSTRY} STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}רשימת תעשיות - לחץ על שם כדי להתמקד בתעשייה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום התעשייה # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK} :תפוקה בחודש שעבר STR_INDUSTRY_VIEW_TRANSPORTED :{BLACK}(הובלו {NBSP}{2:COMMA}%) {YELLOW}{1:STRING}{0:CARGO_LONG} STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על מיקום התעשייה. Ctrl+לחיצה פותח חלונית תצוגה חדשה על מיקום התעשייה STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}רמת הפקה: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{YELLOW}{1:STRING}{0:STRING}{BLACK} : דורש STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{YELLOW}{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :דורש STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{YELLOW}{5:STRING}{4:STRING},{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :דורש ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}סחורה שמחכה לעיבוד: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{YELLOW}{1:STRING}{0:STRING}{BLACK} :מייצר STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{YELLOW}{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :מייצר ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}שנה תפוקה (כפולות של 8, עד 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}שינוי ברמת ההפקה (עד 800% אחוז) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}רכבות{NBSP} {1:COMMA} - {0:STRING} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}כלי רכב {NBSP}{1:COMMA} - {0:STRING} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}כלי שייט {NBSP}{1:COMMA} - {0:STRING} STR_VEHICLE_LIST_AIRCRAFT_CAPTION ::{WHITE}כלי טייס {NBSP}{1:COMMA} - {0:STRING} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}רכבות - בחר רכבת לצפייה במידע STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}כלי רכב - לחץ על כלי רכב למידע STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}כלי שייט – בחר כלי לצפיה במידע STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}כלי טייס – לחץ על כלי לצפיה במידע STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}{1:CURRENCY_LONG} :בשנה שעברה{NBSP} {0:CURRENCY_LONG}) :רווח השנה STR_VEHICLE_LIST_AVAILABLE_TRAINS :רכבות זמינות STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :רכבים זמינים STR_VEHICLE_LIST_AVAILABLE_SHIPS :כלי שייט זמינות STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :כלי טייס זמינים STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK} ראה רשימה של קטרים זמינים לסוג כלי הרכב הזה STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}נהל רשימה STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}שלח הוראות לכל כלי הרכב ברשימה זו STR_VEHICLE_LIST_REPLACE_VEHICLES :החלף כלי רכב STR_VEHICLE_LIST_SEND_FOR_SERVICING :שלח לטיפול STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :שלח רכבת למוסך STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :שלח כלי רכב למוסך STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :שלח אוניה למוסך STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :שלך כלי תעופה להנגר STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}לחץ כדי לעצור את כל הכלים ברשימה STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}לחץ כדי לשחרר את כל הכלים ברשימה STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}רכבים עם יעדים מצומדים {COMMA} # Group window STR_GROUP_ALL_TRAINS :כל הרכבות STR_GROUP_ALL_ROAD_VEHICLES :כל הרכבים STR_GROUP_ALL_SHIPS :כל כלי השייט STR_GROUP_ALL_AIRCRAFTS :כל כלי הטייס STR_GROUP_DEFAULT_TRAINS :רכבות לא משוייכות STR_GROUP_DEFAULT_ROAD_VEHICLES :רכבים לא משוייכים STR_GROUP_DEFAULT_SHIPS :כלי שייט לא משוייכים STR_GROUP_DEFAULT_AIRCRAFTS :כלי טייס לא משוייכים STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}קבוצות כלים – לחץ על קבוצה לצפייה בכל הכלים השייכים אליה STR_GROUP_CREATE_TOOLTIP :{BLACK}לחץ ליצירת קבוצה חדשה STR_GROUP_DELETE_TOOLTIP :{BLACK}מחק את הקבוצה שנבחרה STR_GROUP_RENAME_TOOLTIP :{BLACK}שנה את שם הקבוצה STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}לחץ על מנת להגן על הכלים בקבוצה בפני החלפה אוטומטית STR_GROUP_ADD_SHARED_VEHICLE :הוסף כלים STR_GROUP_REMOVE_ALL_VEHICLES :הסר את כל הכלים מהקבוצה STR_GROUP_RENAME_CAPTION :{BLACK}שנה שם קבוצה # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :רכבות חדשות STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :רכבות חשמליות חדשות STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION ::רכבות חד-פס חדשות STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :רכבות פס מגנטי חדשות STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :רכבות זמינות STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :כלי רכב חדשים STR_BUY_VEHICLE_SHIP_CAPTION :כלי שייט חדשים STR_BUY_VEHICLE_AIRCRAFT_CAPTION :כלי טייס חדש STR_PURCHASE_INFO_COST_WEIGHT :{GOLD}{1:WEIGHT_SHORT}{BLACK} :משקל {GOLD}{0:CURRENCY_LONG}{BLACK} :מחיר STR_PURCHASE_INFO_SPEED_POWER :{BLACK}מהירות: {GOLD}{VELOCITY}{BLACK} הספק: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{GOLD}{VELOCITY}{BLACK} :מהירות STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}מהירות על גבי אוקיינוס: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}מהחרות על גבי תעלה/נהר: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST ::לשנה {GOLD}{CURRENCY_LONG}{BLACK} :עלות תפעולית STR_PURCHASE_INFO_CAPACITY :{GOLD}{1:STRING} {0:CARGO_LONG}{BLACK} :קיבולת STR_PURCHASE_INFO_REFITTABLE :(ניתן להתאמה) STR_PURCHASE_INFO_DESIGNED_LIFE :{GOLD}{1:COMMA}{BLACK} :(משך חיים(שנים {GOLD}{0:NUM}{BLACK} :תוכנן STR_PURCHASE_INFO_RELIABILITY :{GOLD}{COMMA}%{BLACK} :אמינות מירבית STR_PURCHASE_INFO_COST :{GOLD}{CURRENCY_LONG}{BLACK} :מחיר STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}משקל: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{GOLD}{1:VELOCITY}{BLACK} : מהירות {GOLD}{0:CURRENCY_LONG} {BLACK} :מחיר STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}קיבולת: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}קרונות ממונעים: {GOLD}+{POWER}{BLACK} משקל: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK} :ניתן להתאים ל{GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :כל סוגי המטען STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST} כל סוגי המטען למעט STR_PURCHASE_INFO_MAX_TE :{BLACK}כוח סחיבה מקסימלי: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}טווח: {GOLD}{COMMA} משבצות STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK} בחירת קרונות - לחץ על קרון לקבלת מידע STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}רשימת כלי הרכב - בחר כלי רכב למידע STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}כלי שייט – בחר כלי לצפיה במידע STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}כלי טייס – בחר כלי לצפיה במידע STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}רכוש כלי רכב STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}רכוש כלי רכב STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}רכוש כלי שייט STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}רכוש כלי טייס STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את קרון הרכבת שמודגש STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי הרכב שמודגש STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי השייט שמודגש STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}רכוש את כלי הטייס שמודגש STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}שנה שם STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}שנה שם STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}החלף שם STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}החלף שם STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}שנה את שם סוג הקרון STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}שנה את שם סוג כלי הרכב STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}החלף שם סוג כלי השייט STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}החלף שם סוג כלי הטיס STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}שנה את שם סוג קרון הרכבת STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}שנה את שם סוג כלי הרכב STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}החלף שם סוג כלי השייט STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}החלף שם סוג כלי הטיס # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}שנה שם של מוסך STR_DEPOT_RENAME_DEPOT_CAPTION :שינוי שם מוסך STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{0:ENGINE}{1:STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{P 0 "כלי רכב " ""}{NUM}{P "" " כלי רכב"}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}רכבות - לחצן ימני על רכבת לקבלת מידע, גרור עם לחצן שמאלי קרון להוספתו/הסרתו מהרכבת. החזק Ctrl כדי לבצע את הפונקציות על השרשרת הבאה STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}כלי רכב - לחיצה ימנית על כלי רכב למידע STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}כלי שייט – לחיצה ימנית על כלי לצפיה במידע STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}כלי טייס – לחיצה ימנית על הכלי לצפיה במידע STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}גרור קרון/קטר לכאן כדי למכור אותו STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}גרור כלי רכב לכאן על מנת למכור אותו STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}גרור כלי שייט לכאן על מנת למכרו STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}גרור כלי טייס לכאן על מנת למכרו STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}גרור את הקטר לכאן כדי למכור את הרכבת STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}מכור את כל הרכבות שבמוסך STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}מכור את כל כלי הרכב שבמוסך STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}מכור את כל כלי השייט שבמבדוק STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}מכור את כל כלי הטייס שבסככה STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}החלף אוטומטית את כל הרכבות שבמוסך STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}החלף אוטומטית את כל הרכבים שבמוסך STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}החלף אוטומטית את כל כלי השייט שבמבדוק STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}החלף אוטומאטית את כל כלי הטייס שבסככה STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}כלים חדשים STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}כלי רכב חדשים STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}כלי שייט חדש STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}כלי טייס חדש STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}רכוש קרון חדש STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}רכוש כלי רכב חדש STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}רכוש כלי שייט חדש STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}רכוש כלי טייס חדש STR_DEPOT_CLONE_TRAIN :{BLACK}שכפל רכבת STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}שכפל רכב STR_DEPOT_CLONE_SHIP :{BLACK}שכפל כלי שייט STR_DEPOT_CLONE_AIRCRAFT :{BLACK}שכפל כלי טייס STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של הרכבת וכל קרונותיה. לחץ על כפתור זה ולאחר מכן על רכבת בתוך או מחוץ לתחנה. Ctrl+לחיצה יעתיק גם את הוראות הרכבת STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של כלי רכב. לחץ על כפתור זה ולאחר מכן על כלי רכב בתוך או מחוץ למוסך. Ctrl+לחיצה יעתיק גם את הוראות כלי הרכב STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}פעולה זו תרכוש העתק נוסף של כלי שייט חדש. לחץ על כפתור זה ולאחר מכן על כלי שייט בתוך או מחוץ למבדוק. Ctrl+לחיצה יעתיק גם את הוראות כלי השייט STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}פעולה זו תרכוש העתק נוסף של כלי הטייס. לחץ על כפתור זה ולאחר מכן על כלי טייס בתוך או מחוץ למוסך-המטוסים. Ctrl+לחיצה יעתיק גם את הוראות כלי הטייס STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}מקד את החלון הראשי על מיקום מוסך הרכבות. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום המוסך STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על מיקום מוסך כלי הרכב. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום המוסך STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על מבדוק הספינות. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום המבדוק STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על סככת המטוסים. Ctrl+לחיצה פותח חלונית תצוגה חדשה במיקום סככת המטוסים STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}מציג את רשימת הרכבות העוברות במוסך זה STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}מציג את כל הרכבים העוברים במוסך זה STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}מציג את כל האוניות העוברות במבדוק זה STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}מציג את כל כלי הטייס העוברים בסככת המטוסים בשדה תעופה זה STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}לחץ כדי לעצור את כל הרכבות במוסך STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}לחץ כדי לעצור את כל הרכבים במוסך STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}לחץ כדי לעצור את כל כלי השייט במבדוק STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}לחץ כדי לעצור את כל כלי הטייס בסככה STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}לחץ כדי לשחרר את כל הרכבות מהמוסך STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}לחץ כדי לשחרר את כל הרכבים מהמוסך STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}לחץ כדי לשחרר את כל כלי השייט מהמבדוק STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}לחץ כדי לשחרר את כל כלי הטייס מהסככה STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}?אתה עומד למכור את כל כלי הרכב במוסך. להמשיך # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}הודעה מיצרן הרכב STR_ENGINE_PREVIEW_MESSAGE :{GOLD}?חדש/ה! האם אתה מעוניין לבחון כלי זה באופן בלעדי לפני הוצאתו לשוק {STRING} זה עתה סיימנו את תכנונו של STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :קטר רכבת STR_ENGINE_PREVIEW_ROAD_VEHICLE :כלי רכב STR_ENGINE_PREVIEW_AIRCRAFT :כלי טיס STR_ENGINE_PREVIEW_SHIP :כלי שייט STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :קטר חד-פס STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :קטר פס מגנטי STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}{1:WEIGHT_SHORT} :משקל {NBSP}{0:CURRENCY_LONG} :מחיר {} {NBSP}{3:POWER} :עצמת מנוע {NBSP}{2:VELOCITY} :מהירות {NBSP}{}{5:CARGO_LONG} : קיבולת {NBSP} לשנה {NBSP}{4:CURRENCY_LONG} :עלות תפעולית STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}עלות: {CURRENCY_LONG} משקל: {WEIGHT_SHORT}{}מהירות: {VELOCITY} הספק: {POWER} מקסימלי T.E.: {6:FORCE}{}עלות תפעולית: {4:CURRENCY_LONG}/לשנה{}קיבולת: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות שוטפת: {CURRENCY_LONG}/לשנה STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}{}הוצאה שוטפת: {CURRENCY_LONG}/לשנה STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}עלות: {CURRENCY_LONG} מהירות מירבית: {VELOCITY} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעול: {CURRENCY_LONG}/שנה STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מירבית: {VELOCITY} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}{}עלות תפעול: {CURRENCY_LONG}/שנה # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}החלף {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :רכבת STR_REPLACE_VEHICLE_ROAD_VEHICLE :רכב STR_REPLACE_VEHICLE_SHIP :כלי שייט STR_REPLACE_VEHICLE_AIRCRAFT :כלי טייס STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}בחר את סוג המנוע/קטר שברצונך להחליף STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}בחר את הקטר/מנוע שברצונך לבנות במקום הקטר/מנוע הקיים STR_REPLACE_VEHICLES_START :{BLACK}החל בהחלפת הכלים STR_REPLACE_VEHICLES_NOW :החלף את כל כלי הרכב כעת STR_REPLACE_VEHICLES_WHEN_OLD :החלף כלי רכב ישנים בלבד STR_REPLACE_HELP_START_BUTTON :{BLACK}לחץ כאן על מנת להתחיל בהחלפה STR_REPLACE_NOT_REPLACING :{BLACK}לא מחליף STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}לא נבחר כלי STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} כאשר ישן STR_REPLACE_VEHICLES_STOP :{BLACK}הפסק את החלפת הכלים STR_REPLACE_HELP_STOP_BUTTON :{BLACK}לחץ כאן להפסיק את ההחלפה STR_REPLACE_ENGINE_WAGON_SELECT :{ORANGE}{STRING}{BLACK} : מחליף STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}החלף בין חלונות החלפת קרון וקטר STR_REPLACE_ENGINES :מנועים/קטרים STR_REPLACE_WAGONS :קרונות STR_REPLACE_HELP_RAILTYPE :{BLACK}בחר את סוג המסילה עבורה ברצונך להחליף קטרים STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK} מציג אילו קטרים מוחלפים זה בזה STR_REPLACE_RAIL_VEHICLES :רכבות STR_REPLACE_ELRAIL_VEHICLES :רכבות חשמליות STR_REPLACE_MONORAIL_VEHICLES :רכבות חד-פס STR_REPLACE_MAGLEV_VEHICLES :רכבות פס-מגנטי STR_REPLACE_REMOVE_WAGON :{ORANGE}{STRING}{BLACK} : הסרת קרונות STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}הסר קרונות מהסוף על מנת לשמור על האורך המקורי של הרכבת # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}מרכז את התצוגה על מיקום הרכבת. Ctrl+לחיצה יעקוב אחרי הרכבת בתצוגה הראשית STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}מרכז את התצוגה על מיקומו של כלי הרכב. Ctrl+לחיצה יעקוב אחרי כלי הרכב בתצוגה הראשית STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על כלי השייט. Ctrl+לחיצה יעקוב אחרי כל השייט בתצוגה הראשית STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}מקד את התצוגה הראשית על כלי הטייס. Ctrl+לחיצה יעקוב אחרי כלי הטייס בתצוגה הראשית STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}.שלח את הרכבת למוסך STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}.שלח את כלי הרכב למוסך STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}שלח את כלי השייט למבדוק STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sשלח את כלי הטייס לסככת המטוסים STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}פעולה זו תיצור עותק נוסף של הרכבת וכל קרונותיה. Ctrl+לחיצה יעתיק גם את ההוראות STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}.פעולה זו תיצור עותק נוסף של כלי הרכב. Ctrl+לחיצה תעתיק גם את ההוראות STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}פעולה זו תיצור עותק של כלי השייט. Ctrl+לחיצה תעתיק גם את ההוראות STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}פעולה זו תיצור עותק של כלי הטייס. Ctrl+לחיצה תעתיק גם את ההוראות STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}הכרח את הרכבת להמשיך מבלי להמתין לרמזור STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}התאם את הרכבת לנשיאת משא שונה STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}התאם מחדש כלי שייט לנשיאת מטען אחר STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}התאם מחדש כלי שייט לנשיאת מטען אחר STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}התאם כלי טייס לנשיאת מטען נתון STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}שנה את כיוון הנסיעה של הרכבת STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}הכרח את כלי הרכב להסתובב STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}הצג את הוראות הרכבת. Ctrl+לחיצה להצגת לוח הזמנים של הרכבת STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}הצג את הוראות כלי הרכב. Ctrl+לחיצה להצגת לוח הזמנים של כלי הרכב STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}הצג את הוראות כלי השייט. Ctrl+לחיצה להצגת לוח הזמנים של כלי השייט STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}הצג את הוראות כלי הטייס. Ctrl+לחיצה להצגת לוח הזמנים של כלי הטייס STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}הצג את נתוני הרכבת STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}הצג את פרטי כלי הרכב STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}הצג פרטי כלי שייט STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}הצג פרטי כלי טייס STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}פעולה רכבת נוכחית - לחץ כדי לעצור/להפעיל את הרכבת. Ctrl+לחיצה על מנת לגרור ליעד STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}פעולת כלי רכב נוכחי - לחץ כדי לעצור/להפעיל את כלי הרכב. Ctrl+לחיצה כדי לגלול ליעד STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}פעולת כלי שייט נוכחי - לחץ כדי לעצור/להפעיל את כלי השייט. Ctrl+לחיצה כדי לגלול ליעד STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}פעולת כלי טייס נוכחי - לחץ כדי לעצור/להפעיל את כלי השייט. Ctrl+לחיצה כדי לגלול ליעד # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}טעינה / פריקה STR_VEHICLE_STATUS_LEAVING :{LTBLUE} עוזב/ת STR_VEHICLE_STATUS_CRASHED :{RED}!התרסק/הֿ STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}התקלקל STR_VEHICLE_STATUS_STOPPED :{RED}נעצרה STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}{VELOCITY} ,עוצרת STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}סוג מסילה לא מתאים לרכבת זו STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}ממתינה לנתיב פנוי STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}מרחק גדול מדי עד ליעד הבא STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}פונה אל {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}אין הוראות, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE} {1:VELOCITY},{0:WAYPOINT} :בדרך אל STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}בדרך אל {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}קבלת שירות ב{DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}הופסק STR_VEHICLE_COMMAND_STOPPED :{RED}הופסק STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}הותחל STR_VEHICLE_COMMAND_STARTED :{GREEN}הותחל # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}(פרטים){VEHICLE} STR_VEHICLE_NAME_BUTTON :{BLACK}שם STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}תן שם לרכבת STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}תן שם לכלי הרכב STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}תן שם לכלי השייט STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}תן שם לכלי הטייס STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}גיל: {LTBLUE}{STRING}{BLACK} עלות שוטפת: {LTBLUE}{CURRENCY_LONG}/לשנה # The next two need to stay in this order STR_VEHICLE_INFO_AGE :({1:COMMA}) שנים {NBSP}{0:COMMA} STR_VEHICLE_INFO_AGE_RED :{RED}({1:COMMA}) שנים {NBSP}{0:COMMA} STR_VEHICLE_INFO_MAX_SPEED :{BLACK}מהירות מקסימלית: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}מהירות מירבית: {LTBLUE}{VELOCITY} {BLACK}טווח: {LTBLUE}{COMMA} משבצות STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} {BLACK}T.E. מקסימלי: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}רווח בשנה הנוכחת: {LTBLUE}{CURRENCY_LONG} (שנה שעברה: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}מהימנות: {LTBLUE}{COMMA}% {BLACK}קלקול מאז טיפול אחרון: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}נבנה: {LTBLUE}{NUM}{BLACK} ערך: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}קיבולת: {LTBLUE}אין{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}קיבולת: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}קיבולת: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}קיבולת: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}העברת סכום: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{LTBLUE}{1:DATE_LONG} :טיפול אחרוןֿ {BLACK}{LTBLUE}{0:COMMA}% {BLACK} :מרווח בין טיפולים STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{LTBLUE}{1:DATE_LONG} :טיפול אחרוןֿ {BLACK}{LTBLUE}{0:COMMA}% {BLACK} :מרווח בין טיפולים STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}הגדל את מרווח הזמן עד קבלת שירות ב-10. Ctrl+לחיצה מגדיל את המרווח ב-5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}הקטן את מרווח הזמן עד קבלת שירות ב-10. Ctrl+לחיצה מקטינה את המרווח ב-5 STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}תן שם לרכבת STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}תן שם לכלי הרכב STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}תן שם לכלי השייט STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}תן שם לכלי הטייס # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{2:CURRENCY_LONG}{BLACK} :ערך {LTBLUE}{1:NUM}{BLACK} :נבנה {LTBLUE}{0:ENGINE} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{1:CURRENCY_LONG}{BLACK} :שווי {LTBLUE}{0:ENGINE} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}:סה"כ קיבולת הסחורה ברכבת זאת STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}ריקה STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{1:STATION} מ {NBSP}{0:CARGO_LONG} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}(x{2:NUM}){1:STATION} מ {NBSP}{0:CARGO_LONG} STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}משא STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}הצג פרטי המשא STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}מידע STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}הצג פרטי הקרונות STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}קיבולות STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}הצג קיבולת לכל קרון STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}סה"כ סחורה STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}הצג את הקיבולת הכללית של הרכבת בפיצול לסוגי מטען STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK} :קיבולת {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}(התאם) {VEHICLE} STR_REFIT_TITLE :{GOLD}בחר את סוג המטען עבור כלי שייט זה STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{RED}{1:CURRENCY_LONG}{BLACK} :עלות ההתאמה {}{GOLD}{0:CARGO_LONG}{BLACK} :קיבולת STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}קיבולת חדשה: {GOLD}{CARGO_LONG}{}{BLACK}רווח מציוד מחדש: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}קיבולת חדשה: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}עלות אבזור מחדש: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}קיבולת חדשה: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}רווח מציוד מחדש: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}בחר כלי רכב לאבזור מחדש. גרירה באמצעות העכבר מאפשרת לבחור מספר כלי רכב. קליק במקום ריק יבחר את כלי הרכב כולו. קליק בשילוב לחיצה על מקש Ctrl יבחר כלי רכב ואת השרשרת העוקבת STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}בחר את סוג המשא עבור הרכבת STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}בחר את סוג המטען לנשיאה STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}בחר את סוג המטען עבור כלי שייט זה STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}בחר את סוג המטען עבור כלי טייס זה STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}התאם רכבת STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}התאם כלי רכב STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}התאם כלי שייט STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}התאם כלי טייס STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}התאם את הרכבת לנשיאת המשא שנבחר STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}התאם את כלי הרכב לנשיאת המטען שנבחר STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}}התאם את כלי השייט לנשיאת המטען שנבחר STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}התאם את כלי הטייס לנשיאת המטען שנבחר # Order view STR_ORDERS_CAPTION :{WHITE}(יעדים) {VEHICLE} STR_ORDERS_TIMETABLE_VIEW :{BLACK}לוח זמנים STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}עבור להצגת לוח זמנים STR_ORDERS_LIST_TOOLTIP :{BLACK}רשימת יעדים - לחץ על יעד על מנת להדגישו STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - סוף רשימת היעדים - - STR_ORDERS_END_OF_SHARED_ORDERS :- - סוף של הוראות משותפות - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}ללא עצירה STR_ORDER_GO_TO :לך אל STR_ORDER_GO_NON_STOP_TO :לך אל ללא עצירה STR_ORDER_GO_VIA :עבור דרך STR_ORDER_GO_NON_STOP_VIA :עבור דרך ללא עצירה STR_ORDER_TOOLTIP_NON_STOP :{BLACK}שנה את דפוס העצירה ביעד שנבחר STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}העמס מטען מסויים במלואו STR_ORDER_DROP_LOAD_IF_POSSIBLE :העמס מטען זמין STR_ORDER_DROP_FULL_LOAD_ALL :העמס כל מטען במלואו STR_ORDER_DROP_FULL_LOAD_ANY :העמס כל סוג מטען במלואו STR_ORDER_DROP_NO_LOADING :אל תעמיס STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}שנה את דפוס ההעמסה ביעד שנבחר STR_ORDER_TOGGLE_UNLOAD :{BLACK}פרוק הכל STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :פרוק אם המשא מתקבל STR_ORDER_DROP_UNLOAD :פרוק הכל STR_ORDER_DROP_TRANSFER :העבר STR_ORDER_DROP_NO_UNLOADING :אל תפרוק STR_ORDER_TOOLTIP_UNLOAD :{BLACK}שנה את דפוס הפריקה ביעד שנבחר STR_ORDER_REFIT :{BLACK}התאם מחדש STR_ORDER_REFIT_TOOLTIP :{BLACK}בחר את סוג המיטען אליו יותאם הכלי ביעד זה STR_ORDER_REFIT_AUTO :{BLACK}אבזור מחדש אוטומטי STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}בחרלאיזה סוג מטען לאבזר מחדש בפקודה זו. הקלק בשילוב לחיצה על מקש Ctrl כדי להסיר את הוראת האבזור מחדש. אבזור מחדש יתרחש רק אם כלי הרכב מאפשר זאת STR_ORDER_DROP_REFIT_AUTO :מטען קבוע STR_ORDER_DROP_REFIT_AUTO_ANY :מטען זמין STR_ORDER_SERVICE :{BLACK}טיפול STR_ORDER_DROP_GO_ALWAYS_DEPOT :עבור תמיד דרך STR_ORDER_DROP_SERVICE_DEPOT :טפל במידת הצורך STR_ORDER_DROP_HALT_DEPOT :עצור STR_ORDER_SERVICE_TOOLTIP :{BLACK}דלג על היעד שנבחר אלא אם הכלי זקוק לטיפול STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}נתוני כלי הרכב עליהם יתבסס הדילוג # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :אחוז טעינה STR_ORDER_CONDITIONAL_RELIABILITY :אמינות STR_ORDER_CONDITIONAL_MAX_SPEED :מהירות מירבית STR_ORDER_CONDITIONAL_AGE ::(גיל הכלי (שנים STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :זקוק לטיפול STR_ORDER_CONDITIONAL_UNCONDITIONALLY :תמיד STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :זמן חיים נותר (שנים) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}כיצד יושוו נתוני כלי הרכב לערך נתון מסויים STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :שווה ל STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :שונה מ STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :קטן מ STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :קטן או שווה ל STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :גדול מ STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :גדול או שווה STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :אמת STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :שקר STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}ערך להשוואה מול נתוני כלי הרכב STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}:הכנס ערך כבסיס להשוואהֿ STR_ORDERS_SKIP_BUTTON :{BLACK}דלג STR_ORDERS_SKIP_TOOLTIP :{BLACK}דלג על היעד הנוכחי, עבור ליעד הבא STR_ORDERS_DELETE_BUTTON :{BLACK}מחק STR_ORDERS_DELETE_TOOLTIP :{BLACK}מחק את היעד המודגש STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}מחק את כל הפקודות STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}הפסק שיתוף STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}הפסק את שיתוף רשימת הפקודות. קליק בשילוב לחיצה על מקש Ctrl מוחק בנוסף את כל הפקודות עבור כלי רכב זה STR_ORDERS_GO_TO_BUTTON :{BLACK}עבור אל STR_ORDER_GO_TO_NEAREST_DEPOT :עבור דרך המוסך הקרוב STR_ORDER_GO_TO_NEAREST_HANGAR :עבור דרך סככת המטוסים הקרובה STR_ORDER_CONDITIONAL :דילוג מותנה על יעד STR_ORDER_SHARE :שתף פקודות STR_ORDERS_GO_TO_TOOLTIP :{BLACK}הכנס הוראה חדשה לפני ההוראה המודגשת, או הוסף הוראה לסוף הרשימה. Ctrl גורם להוראות של תחנות להיות 'טען מטען כלשהו במלואו', נקודות ציון להיות 'ללא עצירה' והוראות מוסכים להיות 'בשירות' STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}הצג את כל הרכבים אשר עבורם יעד זה הוא מצומד # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :{WAYPOINT} :עבור דרך STR_ORDER_GO_NON_STOP_TO_WAYPOINT :{WAYPOINT} :עבור ללא עצירה דרך STR_ORDER_SERVICE_AT :טיפול ב STR_ORDER_SERVICE_NON_STOP_AT :טיפול ללא עצירה ב STR_ORDER_NEAREST_DEPOT :הקרוב STR_ORDER_NEAREST_HANGAR :סככת המטוסים הקרובה STR_ORDER_TRAIN_DEPOT :מוסך רכבות STR_ORDER_ROAD_VEHICLE_DEPOT :מוסך רכבים STR_ORDER_SHIP_DEPOT :מבדוק ספינות STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{2:STRING} {1:STRING} {0:STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :({STRING} התאם לנשיאת) STR_ORDER_REFIT_STOP_ORDER :(ועצור {STRING} התאם לנשיאת) STR_ORDER_STOP_ORDER :(עצור) STR_ORDER_GO_TO_STATION :{2:STRING} {1:STATION} {0:STRING} STR_ORDER_IMPLICIT :(משתמע) STR_ORDER_FULL_LOAD :(העמס הכל) STR_ORDER_FULL_LOAD_ANY :(העמס כל סוג מטען במלואו) STR_ORDER_NO_LOAD :(אל תעמיס) STR_ORDER_UNLOAD :(פרוק והטען מחדש) STR_ORDER_UNLOAD_FULL_LOAD :(פרוק והמתן להעמסה מלאה) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(פרוק והמתן להעמסה מלאה של כל מטען) STR_ORDER_UNLOAD_NO_LOAD :(פרוק ועזוב ריק) STR_ORDER_TRANSFER :(העבר מטען קיים, הטען מחדש) STR_ORDER_TRANSFER_FULL_LOAD :(העבר מטען קיים והמתן להעמסה מלאה) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(העבר מטען קיים והמתן עד להעמסה מלאה של כל סוג מטען) STR_ORDER_TRANSFER_NO_LOAD :(העבר מטען קיים ועזוב ריק) STR_ORDER_NO_UNLOAD :(אל תפרוק, העמס מטען זמין) STR_ORDER_NO_UNLOAD_FULL_LOAD :(אל תפרוק והמתן להעמסה מלאה) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(אל תפרוק, המתן עד להעמסה כוללת ומלאה) STR_ORDER_NO_UNLOAD_NO_LOAD :(אל תפרוק ואל תעמיס) STR_ORDER_AUTO_REFIT :(אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_FULL_LOAD_REFIT :(מטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(מטען מלא של כל מטען עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_UNLOAD_REFIT :(פרוק וקח מטען עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(פרוק והמתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(פרוק והמתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_TRANSFER_REFIT :(העבר וקח מטען עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(העבר ומתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(העבר ומתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_NO_UNLOAD_REFIT :(ללא פריקה וקח מטען עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(ללא פריקה והמתן למטען מלא עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(ללא פריקה והמתן למטען מלא כלשהו עם אבזור מחדש אוטומטי ל-{STRING}) STR_ORDER_AUTO_REFIT_ANY :מטען זמין STR_ORDER_STOP_LOCATION_NEAR_END :[קצה קרוב] STR_ORDER_STOP_LOCATION_MIDDLE :[אמצע] STR_ORDER_STOP_LOCATION_FAR_END :[קצה רחוק] STR_ORDER_OUT_OF_RANGE :{RED} (היעד הבא נמצא מחוץ לטווח) STR_ORDER_CONDITIONAL_UNCONDITIONAL :{COMMA} :דלג ליעד STR_ORDER_CONDITIONAL_NUM :{3:COMMA} {2:STRING} {1:STRING} כאשר {NBSP}{0:COMMA}{NBSP} דלג ליעד STR_ORDER_CONDITIONAL_TRUE_FALSE :{2:STRING} {1:STRING} כאשר {NBSP}{0:COMMA} דלג ליעד STR_INVALID_ORDER :{RED}(יעד שגוי) # Time table window STR_TIMETABLE_TITLE :{WHITE}(לוח זמנים){VEHICLE} STR_TIMETABLE_ORDER_VIEW :{BLACK}יעדים STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}עבור להצגת יעדים STR_TIMETABLE_TOOLTIP :{BLACK}לוח זמנים – בחר יעד STR_TIMETABLE_NO_TRAVEL :ללא מסע STR_TIMETABLE_NOT_TIMETABLEABLE :סע (אוטומטי; לוח זמנים נקבע לפי הפקודה הידנית הבאה) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :(מסע (ללא לוח זמנים STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :סע במהירות שהיא לכל היותר {2:VELOCITY} (ללא לוח זמנים) STR_TIMETABLE_TRAVEL_FOR :{STRING} ערוך מסע ל STR_TIMETABLE_TRAVEL_FOR_SPEED :סע למשך {STRING} במהירות שהיא לכל היותר {VELOCITY} STR_TIMETABLE_STAY_FOR :{STRING} והמתן למשך STR_TIMETABLE_AND_TRAVEL_FOR :{STRING} וערוך מסע ל STR_TIMETABLE_DAYS :{P 0 "יום " ""}{COMMA}{P "" " ימים"} STR_TIMETABLE_TICKS :{P 0 "פעימה " ""}{COMMA}{P "" " פעימות"} STR_TIMETABLE_TOTAL_TIME :{BLACK}{STRING} להשלמת לוח זמנים זה נדרשים STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}.(לא כל היעדים תוזמנו) {STRING} להשלמת לוח זמנים זה ידרשו לפחות STR_TIMETABLE_STATUS_ON_TIME :{BLACK}כלי זה פועל לפי לוח זמנים STR_TIMETABLE_STATUS_LATE :{BLACK}{STRING} רכב זה מאחר ב STR_TIMETABLE_STATUS_EARLY :{BLACK}{STRING} רכב זה מקדים ב STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}לוח זמנים זה עדיין לא התחיל STR_TIMETABLE_STATUS_START_AT :{BLACK}לוח זמנים זה יתחיל ב-{STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}תאריך התחלה STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}בחר תאריך להיות נקודת ההתחלה של לוח זמנים זה STR_TIMETABLE_CHANGE_TIME :{BLACK}שנה זמן STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}שנה את פרק הזמן לשהייה ביעד שנבחר STR_TIMETABLE_CLEAR_TIME :{BLACK}אפס זמן STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}אפס את פרק הזמן לשהייה ביעד שנבחר STR_TIMETABLE_CHANGE_SPEED :{BLACK}שנה מגבלת מהירות STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}שנה את מהירות הנסיעה המירבית של הפקודה המסומנת STR_TIMETABLE_CLEAR_SPEED :{BLACK}הסר מגבלת מהירות STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}הסר את מהירות הנסיעה המירבית של הפקודה המסומנת STR_TIMETABLE_RESET_LATENESS :{BLACK}אפס מונה איחורים STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}אפס את מונה האיחורים על מנת לאפשר לכלי להגיע בזמן STR_TIMETABLE_AUTOFILL :{BLACK}מילוי אוטומטי STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}מלא את לוח הזמנים אוטומטית עם הערכים מהנסיעה הבאה (Ctrl+לחיצה כדי לשמור על זמני ההמתנה) STR_TIMETABLE_EXPECTED :{BLACK}צפוי STR_TIMETABLE_SCHEDULED :{BLACK}מתוכנן STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}החלף בין מתוכנן וצפוי STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}קבע תאריך STR_DATE_SET_DATE :{BLACK}קבע תאריך STR_DATE_SET_DATE_TOOLTIP :{BLACK}השתמש בתאריך הנבחר כתאריך ההתחלה של לוח זמנים זה STR_DATE_DAY_TOOLTIP :{BLACK}בחר יום STR_DATE_MONTH_TOOLTIP :{BLACK}בחר חודש STR_DATE_YEAR_TOOLTIP :{BLACK}בחר שנה # AI debug window STR_AI_DEBUG :{WHITE}דה-באג לבינה מלאכותית STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}שם הבינה המלאכותית STR_AI_DEBUG_SETTINGS :{BLACK}הגדרות בינה מלאכותית STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}שנה את הגדרות הבינה המלאכותית STR_AI_DEBUG_RELOAD :{BLACK}טען מחדש בינה מלאכותית STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK} הטען מחדש את הסקריפט ואתחל בינה מלאכותית STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}אפשר/בטל עצירה כאשר הודעת לוג של AI מתאימה למחרוזת העצירה STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}עצירה פועלת: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}עצירה פועלת STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}כאשר הודעת לוג של ה-AI מתאימה למחרוזת זו, המשחק יופסק. STR_AI_DEBUG_MATCH_CASE :{BLACK}התאם רישיות STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}בחר התאמת רישיות בהשוואת הודעות לוג של AI כנגד מחרוזת העצירה STR_AI_DEBUG_CONTINUE :{BLACK}המשך STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}בטל הפסקה והמשך את הבינה המלאכותית STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}צפה בפלט הדיבאג עבור שחקן מחשב זה STR_AI_GAME_SCRIPT :{BLACK}סקריפט משחק STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}בדוק את הלוג של סקריפט המשחק STR_ERROR_AI_NO_AI_FOUND :לא נמצאה בינה מלאכותית מתאימה לטעינה.{}בינה מלאכותית זו הינה מדומה ולא תעשה כלום.{}באפשרותך להוריד מספר אלגורתמים של בינה מלאכותית בעזרת מערכת 'תוכן מקוון'. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}אחד מאלגורתמי הבינה המלאכותית קרס. אנא דווח זאת ליוצר האלגוריתם וצרף צילום מסך של מסך ה-Debug. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}חלון הדה-באג זמין רק עבור השרת # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}הגדרות משחק STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}סקריפט המשחק אשר יטען במשחק הבא STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}שחקני המחשב אשר יטענו במשחק הבא STR_AI_CONFIG_HUMAN_PLAYER :שחקן אנושי STR_AI_CONFIG_RANDOM_AI :בינה מלאכותית אקראית STR_AI_CONFIG_NONE :(ללא) STR_AI_CONFIG_MOVE_UP :{BLACK}הזז מעלה STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}הזז את ה-AI הנבחר מעלה ברשימה STR_AI_CONFIG_MOVE_DOWN :{BLACK}הזז מטה STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}הזז את ה-AI הנבחר למטה ברשימה STR_AI_CONFIG_GAMESCRIPT :{SILVER}סקריפט משחק STR_AI_CONFIG_AI :{SILVER}שחקני מחשב STR_AI_CONFIG_CHANGE :{BLACK}בחר {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :שחקן מחשב STR_AI_CONFIG_CHANGE_GAMESCRIPT :סקריפט משחק STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}טען סקריפט נוסף STR_AI_CONFIG_CONFIGURE :{BLACK}שנה הגדרות STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}שנה הגדרות בינה מלאכותית # Available AIs window STR_AI_LIST_CAPTION :{WHITE}זמין {STRING} STR_AI_LIST_CAPTION_AI :שחקני מחשב STR_AI_LIST_CAPTION_GAMESCRIPT :סקריפטי משחק STR_AI_LIST_TOOLTIP :{BLACK} לחץ לבחירת בינה מלאכותית STR_AI_LIST_AUTHOR :{LTBLUE}יוצר: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}גרסה: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}קישור: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}אשר STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK} בחר סוג בינה מלאכותית שהודגש STR_AI_LIST_CANCEL :{BLACK}בטל STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}אל תשנה את התסריט # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} פרמטרים STR_AI_SETTINGS_CAPTION_AI :שחקן מחשב STR_AI_SETTINGS_CAPTION_GAMESCRIPT :סקריפט משחק STR_AI_SETTINGS_CLOSE :{BLACK}סגור STR_AI_SETTINGS_RESET :{BLACK}אתחל STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :מספר הימים להתחלת שחקן מחשב זה אחרי הקודם (פחות או יותר): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} "קרא אותי" של {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} רשימת שינויים של {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} רשיון של {STRING} STR_TEXTFILE_VIEW_README :{BLACK}צפה ב-"קרא אותי" STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}רשימת שינויים STR_TEXTFILE_VIEW_LICENCE :{BLACK}רשיון # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}{CURRENCY_LONG} :מחיר STR_INCOME_FLOAT_COST :{RED}{CURRENCY_LONG} :מחיר STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN} {CURRENCY_LONG} :הכנסה STR_INCOME_FLOAT_INCOME :{GREEN} {CURRENCY_LONG} :הכנסה STR_FEEDER_TINY :{TINY_FONT}{YELLOW}העברה: {CURRENCY_LONG} STR_FEEDER :{YELLOW}העברה: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}{CURRENCY_LONG} :מחיר משוער STR_MESSAGE_ESTIMATED_INCOME :{WHITE}{CURRENCY_LONG} :הכנסה משוערת # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}!שמירה מתבצעת,{} אנא המתן עד לסיום השמירה STR_ERROR_AUTOSAVE_FAILED :{WHITE}שמירה אוטומטית נכשלה STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}לא ניתן לקרוא מהדיסק STR_ERROR_GAME_SAVE_FAILED :{WHITE}שמירת המשחק נכשלה{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}לא ניתן למחוק את הקובץ STR_ERROR_GAME_LOAD_FAILED :{WHITE}טעינת המשחק נכשלה{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :שגיאה פנימית: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :קובץ השמיקה פגום - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :קובץ השמירה נשמר עם גירסא חדישה יותר של המשחק STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :קובץ לא קריא STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :קןבץ לא כתיב STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :בדיקת שלמות נתונים נכשלה STR_GAME_SAVELOAD_NOT_AVAILABLE :<לא זמין> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}המשחק נשמר ללא תמיכה בחשמליות. כל החשמליות הוסרו. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}יצירת המפה בוטלה...{}... אין מיקומי ערים מתאימים STR_ERROR_NO_TOWN_IN_SCENARIO ::{WHITE}אין ערים בתרחיש זה... STR_ERROR_PNGMAP :{WHITE}לא יכול לטעון שטח אדמה מקובץ... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... הקובץ לא נמצא. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... לא יכול להמיר את סוג התמונה. צריך תמונת PNG של 8 או 24-ביט. STR_ERROR_PNGMAP_MISC :{WHITE}... משהו לא הלך כשורה. מצטער. (כנראה קובץ מקולקל) STR_ERROR_BMPMAP :{WHITE}לא יכול לטעון קרקע מתמונת BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... לא יכול להמיר סוג תמונה STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... התמונה גדולה מדי STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}אזהרת קנה מידה STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}?שינוי גדול של גודל המפה המקורית אינו מומלץ. להמשיך # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}נמצאה ערכת צלילים לגיבוי בלבד. אם ברצונך לשמוע צלילים במשחק, יש להתקין ערכת צלילים בעזרת מערכת הורדת תוכן. # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}צילום מסך ענק STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}צילום המסך יהיה בעל רזולוציה של {COMMA} x {COMMA} פיקסלים. תהליך הצילום עלול לארוך זמן מה. האם ברצונך להמשיך? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}תמונת המסך נשמרה בהצלחה כ-'{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}!לא יכול ליצור תמונה # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}הודעה STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING} -הודעה מ # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}מחוץ לשטח המפה STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}קרוב מדי לקצה המפה STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}{CURRENCY_LONG} אין מספיק כסף - צריך STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}דרושה קרקע שטוחה STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}שיפוע הקרקע בכיוון לא נכון STR_ERROR_CAN_T_DO_THIS :{WHITE}לא ניתן לעשות זאת... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}יש להסיר את הבניין תחילה STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}לא ניתן לפנות אזור זה... STR_ERROR_SITE_UNSUITABLE :{WHITE}... אזור לא מתאים STR_ERROR_ALREADY_BUILT :{WHITE}... כבר בנוי STR_ERROR_OWNED_BY :{WHITE}... בבעלות {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... השטח בבעלותה של חברה אחרת STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... הגעת למגבלת שינוי פני הקרקע STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... הגעת למגבלת פינוי המשבצות STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... הגעת למגבלת נטיעת העצים STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}השם חייב להיות ייחודי STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}חוסם את הדרך {1:STRING} STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}אסור בזמן שהמשחק מושהה # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}הרשות המקומית של {TOWN} מתנגדת לפעולה זו STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}הרשות המקומית של {TOWN} מתנגדת לבניית שדה תעופה נוסף בעיר STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}הרשות המקומית ב{TOWN} מתנגדת להקמת שדה תעופה בשל חשש מהרעש STR_ERROR_BRIBE_FAILED :{WHITE}נסיונך לשוחד התגלה ע"י חוקר אזורי # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}לא ניתן להגביה את הקרקע... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}לא ניתן להנמיך את הקרקע... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}לא ניתן לשטח את פני הקרקע כאן... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}חפירה תפגע במנהרה STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... כבר בגובה ים STR_ERROR_TOO_HIGH :{WHITE}... גבוה מידי STR_ERROR_ALREADY_LEVELLED :{WHITE}... הקרקע כבר שטוחה # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}לא ניתן לשנות את שם החברה... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}לא ניתן לשנות את שם המנהל... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... גודל ההלוואה המירבי הוא {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}לא ניתן לקבל הלוואה נוספת STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... אין הלוואה להחזיר STR_ERROR_CURRENCY_REQUIRED :{WHITE}... דרושים {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}לא ניתן להחזיר את ההלוואה... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}לא ניתן למסור כסף שנלווה מהבנק... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}לא ניתן לקנות את החברה... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}לא ניתן לבנות את מטה החברה באתר זה... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}אין באפשרותך לקנות 25% ממניות חברה זו... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}אין באפשרותך למכור 25% ממניות חברה זו... STR_ERROR_PROTECTED :{WHITE}חברה זו צעירה מידי ואינה יכולה לסחור במניותיה... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}לא ניתן לבנות ערים STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}לא ניתן לשנות את השם של העיר הזאת... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}לא ניתן להקים עיירה כאן... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}לא ניתן להרחיב עיירה... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... קרוב מידי לקצה המפה STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... קרוב מידי לעיר אחרת STR_ERROR_TOO_MANY_TOWNS :{WHITE}... יותר מידי ערים STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... אין יותר מקום על המפה STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}עיר זאת לא תבנה כבישים. באפשרותך לאפשר בניית כבישים בעזרת תפריט הגדרות מתקמדות->כלכלה->ערים. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}עבודות כביש בפעולה STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}לא ניתן למחוק עיר זו...{}תחנה או מוסך מקושר לעיר או שמשבצת בבעלות העיר לא ניתנת להסרה STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... אין אף מיקום מתאים לפסל במרכז עיירה זו # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... יותר מידי תעשיות STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}לא ניתן ליצור תעשיות... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}לא ניתן לבנות {STRING} כאן... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}לא ניתן לבנות כאן תעשיה מסוג זה... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... קרוב מידי לתעשיה אחרת STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... יש להקים עיר קודם STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... ניתן רק אחד בכל עיר STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... ניתן לבנות בערים עם אוכלוסייה בעלת לפחות 1200 איש STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... יכול להבנות רק ליד אזורי יערות הגשם STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... יכול להבנות רק ליד אזורי מדבר STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... יכול להבנות רק בערים STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... ניתן לבנייה רק בקרבת מרכז עיירה STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... ניתן לבנות רק באיזורים נמוכים STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... יכול להיות ממוקם בסמוך לשולי המפה בלבד STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... יער יכול להנטע רק מעל קו השלג STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... ניתן/ת לבנייה רק מעל לקו השלג STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... ניתן/ת לבנייה רק מתחת לקו השלג # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}לא ניתן לבנות תחנת רכבת כאן... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}לא ניתן לבנות תחנת אוטובוס... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}לא ניתן לבנות תחנת טעינה למשאיות... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}לא ניתן לבנות תחנת חשמלית לנוסעים... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}לא ניתן לבנות תחנת חשמלית לסחורה... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}לא ניתן לבנות מזח כאן... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}לא ניתן לבנות שדה תעופה כאן... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}ניסיון לחבר בין תחנות קיימות STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... פריסת התחנה חורגת מהמותר STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}יותר מידי תחנות/אזורי טעינה STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}התחנה מורכבת מיותר מידי חלקים STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}יותר מידי תחנות אוטובוס STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}יותר מידי תחנות משאיות STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}קרוב מידי לתחנה או איזור טעינה אחרים STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}יותר מידי קרוב למזח אחר STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}קרוב מידי לשדה תעופה אחר STR_ERROR_CAN_T_RENAME_STATION :{WHITE}לא ניתן לשנות שם תחנה... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... כביש זה בבעלות עירונית STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}הכביש פונה לכיוון לא נכון... STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... לתחנות "על הדרך" לא יכולות להיות פינות STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... לתחנות "על הדרך" לא יכולות להיות צמתים # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}... לא ניתן לבטל חלק מהתחנה STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}חייב למחוק תחנת רכבת קודם STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}לא ניתן להסיר תחנת אוטובוס... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}לא ניתן להסיר תחנת משאיות... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}לא ניתן להסיר תחנת חשמלית לנוסעים... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}לא ניתן להסיר תחנת חשמלית למטען... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}יש להסיר שלטי כביש תחילה STR_ERROR_THERE_IS_NO_STATION :{WHITE}... אין כאן תחנה STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}יש להרוס תחנת רכבת תחילה STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}יש להסיר את תחנת האוטובוס תחילה STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}יש להסיר את תחנת המשאיות תחילה STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}יש להסיר את תחנת החשמלית תחילה STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}יש להסיר את תחנת החשמלית תחילה STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}יש להסיר את המזח תחילה STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}יש להרוס את שדה התעופה תחילה # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}נוגע ביותר מנקודת ציון אחת STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}קרובה מידי לנקודת ציון אחרת STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}לא ניתן לבנות תחנת רכבת באתר זה... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}לא ניתן למקם מצוף במשבצת זו... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}שינוי שם נקודת הציון נכשל... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}לא ניתן להסיר תחנת רכבת מאתר זה... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}יש להסיר נקודת ציון של פסי רכבת תחילה STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... מצוף חוסם את הדרך STR_ERROR_BUOY_IS_IN_USE :{WHITE}... המצוף בשימוש ע"י חברה אחרת! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}לא ניתן לבנות מוסך רכבת כאן... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}לא ניתן לבנות מוסך כלי רכב כאן... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}לא ניתן לבנות מוסך לחשמלית כאן... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}לא ניתן לבנות מבדוק כאן... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}לא ניתן לשנות שם מוסך... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... חייבת להיעצר במוסך STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}חייב להיעצר בתוך מוסך לכלי רכב... STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... חייב להיעצר במבדוק STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... חייב להיעצר בסככת מטוסים STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}ניתן לשנות את הרכבת בעת עצירה במוסך בלבד STR_ERROR_TRAIN_TOO_LONG :{WHITE}רכבת ארוכה מידי STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}לא ניתן להפוך כיוון כלי הרכב... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}מורכבים ממספר יחידות... STR_ERROR_INCOMPATIBLE_RAIL_TYPES :סוג הפסים אינו מתאים STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}לא ניתן להזיז את כלי הרכב... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}הקטר האחורי עוקב תמיד אחר הקטר הקידמי STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}לא מוצא נתיב למוסך מקומי STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}לא ניתן לאתר מוסך כלי רכב מקומי STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :סוג מוסך שגוי # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}ארוכה מידי לאחר ביצוע ההחלפה {VEHICLE} STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}לא יושמו כללים להחלפה/חידוש אוטומטיים STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(הגבלת כסף) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}שילוב מסילות בלתי אפשרי STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}יש להסיר רמזורים תחילה STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}אין מסילת רכבת מתאימה STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}יש להסיר את המסילה הקיימת תחילה STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}כביש חד סיטרי או חסום STR_ERROR_CROSSING_DISALLOWED :{WHITE}מפגשי כביש/מסילה אין אפשריים עבור סוג מסילה זה STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}לא ניתן למקם רמזורים כאן... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}לא ניתן להניח פסי רכבת כאן... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}לא ניתן להסיר פסי רכבת ממשבצת זו... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}לא ניתן להסיר רמזורים מכאן... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}לא ניתן להחלף רמזורים... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... אין מסילת רכבת STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... אין רמזורים STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}לא ניתן לשנות כאן את סוג המסילה... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}יש להסיר את הכביש תחילה STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... כבישים חד סיטריים לא יכולים להכיל צמתים STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}לא ניתן לבנות כביש כאן... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}לא ניתן לבנות מסילות חשמלית כאן... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}לא ניתן להסיר כביש מכאן... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}לא ניתן להסיר מסילת רכבת חשמלית מכאן... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... אין כביש STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... אין רכבת קלה # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}לא ניתן לבנות כאן תעלה... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}לא ניתן לבנות כאן שער ימי... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}לא ניתן לבנות כאן נהר... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... חייב להיבנות על מים STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... לא ניתן לבנות על מים STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}לא ניתן לבנות על ים... STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}לא ניתן לבנות על תעלה... STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}לא ניתן לבנות על נהר... STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}חובה למחוק את התעלה קודם STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}לא ניתן לבנות מוביל-מים באתר זה... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... קיים כאן עץ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... שטח לא נכון עבור סוג עץ זה STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}לא יכול לטעת עצים במשבצת זו... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}לא ניתן לבנות גשר כאן... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}יש לפרק את הגשר תחילה STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}לא ניתן להתחיל ולסיים באותה הנקודה STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}צדדי הגשר לא באותו הגובה STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}גשר נמוך מידי עבור השטח STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}התחלה וסיום חייבים להיות באותו הקו STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... קצות הגשר צריכים להיות על קרקע STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... גשר ארוך מידי STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}הגשר יסתיים מחוץ למפה # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}לא ניתן להקים מנהרה כאן... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}אזור לא מתאים לכניסה למנהרה STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}יש להרוס את המנהרה תחילה STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}מנהרה אחרת מפריעה STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}התעלה תסתיים מחוץ למפה STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}לא ניתן היה לפנות את השטח בקצה השני של המנהרה STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... מנהרה ארוכה מדי # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... יותר מדי עצמים STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}לא ניתן לבנות עצם... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}עצם חוסם את הדרך STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... מטה חברה חוסם את הדרך STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}לא ניתן לקנות שטח זה... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... שטח זה כבר בבעלותך! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}לא ניתן ליצור קבוצה... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}לא ניתן למחוק קבוצה זו... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}לא ניתן לשנות שם קבוצה... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}לא ניתן למחוק את כל הכלים מקבוצה זו... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}לא ניתן להוסיף כלי זה לקבוצה זו... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}לא ניתן להוסיף כלים משותפים לרשימה זו... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}רכבת חוסמת את המעבר STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}כלי רכב חוסם את הדרך STR_ERROR_SHIP_IN_THE_WAY :{WHITE}כלי שייט חוסם את הדרך STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}כלי טייס חוסם את הדרך STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}לא ניתן להתאים את הרכבת לנשיאת מטען זה... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}לא ניתן להתאים את כלי הרכב לנשיאת מטען זה... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}לא ניתן להתאים את כלי השייט לנשיאת מטען זה... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}לא ניתן להתאים את כלי הטייס לנשיאת מטען זה... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}לא ניתן לתת שם לרכבת... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}... לא ניתן לשנות את שם כלי הרכב STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}לא ניתן לתת שם לכלי שייט זה... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}לא ניתן לתת שם לכלי טייס זה... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}לא ניתן לעצור/להתחיל בנסיעה... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}לא ניתן לעצור/להמשיך בנסיעה... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}לא ניתן לעצור/להתחיל את כלי השייט... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}לא ניתן לעצור/להתחיל את כלי הטייס... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}לא ניתן לשלוח רכבת למוסך... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}לא ניתן לשלוח את כלי הרכב למוסך... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}לא ניתן לשלוח את כלי השייט למבדוק... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}לא ניתן לשלוח את כלי הטייס לסככת המטוסים... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}לא ניתן לבנות רכבת... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}לא ניתן לבנות כלי רכב... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}לא ניתן לבנות כלי שייט זה... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}לא ניתן לבנות כלי טייס... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}לא ניתן לשנות את שם סוג הקרון... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}לא ניתן לשנות את שם הסוג של כלי הרכב... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}לא ניתן לשנות את שם הסוג של כלי השייט... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}לא ניתן לשנות את שם הסוג של כלי הטייס... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}לא ניתן למכור את הרכבת... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}לא ניתן למכור כלי רכב... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}לא ניתן למכור כלי שייט זה... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}לא ניתן למכור את כלי הטייס... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}קטר לא זמין STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}רכב לא זמין STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}כלי שייט לא זמין STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}כלי טייס לא זמין STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}יותר מידי כלי תעבורה במשחק STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}לא ניתן לשנות את מרווחי הטיפול... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... הרכב נהרס # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}לא ניתן להכריח את הרכבת לעבור ברמזור בעת סכנה... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}לא ניתן להפוך את כיוון הנסיעה של הרכבת... STR_ERROR_TRAIN_START_NO_POWER :לרכבת אין כוח STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}לא ניתן לבצע סיבוב של כלי הרכב... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}נמצא בטיסה # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}לא נותר מקום יעדים נוספים STR_ERROR_TOO_MANY_ORDERS :{WHITE}יותר מדי יעדים STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}לא ניתן להוסיף יעד... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}לא ניתן למחוק יעד זה... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}לא ניתן לשנות יעד זה... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}לא ניתן להזיז יעד זה... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}לא ניתן לדלג על היעד הנוכחי... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}לא ניתן לדלג על היעד שנבחר... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... כלי הרכב לא יכול להגיע לכל התחנות STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... כלי הרכב לא יכול להגיע לתחנה זו STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... כלי רכב בעל ההוראה הזו לא יכול להגיע לתחנה זו STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}לא ניתן לשתף יעדים... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}לא ניתן להפסיק לשתף רשימת פקודות... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}לא ניתן להעתיק רשימת יעדים... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... רחוק מידי מהיעד הקודם STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... למטוס אין טווח גדול מספיק # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}לא ניתן ליצור לוח זמנים עבור רכב זה... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}כלי רכב יכולים להמתין בתחנות בלבד STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}כלי הרכב אינו עוצר בתחנה זו # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... יותר מידי סימניות STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}לא ניתן להציב כאן סימניה... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}... ניתן לשנות את שם הסימניה STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}לא ניתן למחוק סימניה... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :משחק סימולציה המבוסס על תחבורה, הון ופאר # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :בניין משרדים גבוה STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :בניין משרדים STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :בניין דירות STR_TOWN_BUILDING_NAME_CHURCH_1 :בית כנסת STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :בניין משרדים גדול STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :בתים STR_TOWN_BUILDING_NAME_HOTEL_1 :מלון STR_TOWN_BUILDING_NAME_STATUE_1 :פסל STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :מזרקה STR_TOWN_BUILDING_NAME_PARK_1 :פארק STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :בניין משרדים STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :חנויות ומשרדים STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :בניין משרדים מודרני STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :מחסן סחורות STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :בניין משרדים STR_TOWN_BUILDING_NAME_STADIUM_1 :אצטדיון STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :בתים ישנים STR_TOWN_BUILDING_NAME_COTTAGES_1 :קוטג'ים STR_TOWN_BUILDING_NAME_HOUSES_1 :בתים STR_TOWN_BUILDING_NAME_FLATS_1 :דירות STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :בניין משרדים גבוה STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :חניות ומשרדים STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :חניות ומשרדים STR_TOWN_BUILDING_NAME_THEATER_1 :תאטרון STR_TOWN_BUILDING_NAME_STADIUM_2 :איצטדיון STR_TOWN_BUILDING_NAME_OFFICES_1 :משרדים STR_TOWN_BUILDING_NAME_HOUSES_2 :בתים STR_TOWN_BUILDING_NAME_CINEMA_1 :בית-קולנוע STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :קניון STR_TOWN_BUILDING_NAME_IGLOO_1 :איגלו STR_TOWN_BUILDING_NAME_TEPEES_1 :טיפי STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :בית-ספל STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :בנק דן-חסכן ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :מכרה פחם STR_INDUSTRY_NAME_POWER_STATION :תחנת כוח STR_INDUSTRY_NAME_SAWMILL :מנסרת עץ STR_INDUSTRY_NAME_FOREST :יער STR_INDUSTRY_NAME_OIL_REFINERY :בית זיקוק STR_INDUSTRY_NAME_OIL_RIG :אסדת קידוח נפט STR_INDUSTRY_NAME_FACTORY :מפעל STR_INDUSTRY_NAME_PRINTING_WORKS :בית דפוס STR_INDUSTRY_NAME_STEEL_MILL :מכרה ברזל STR_INDUSTRY_NAME_FARM :חווה STR_INDUSTRY_NAME_FARM.gen :חוות STR_INDUSTRY_NAME_COPPER_ORE_MINE :מכרה נחושת STR_INDUSTRY_NAME_OIL_WELLS :בארות נפט STR_INDUSTRY_NAME_BANK :בנק STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :מפעל עיבוד מזון STR_INDUSTRY_NAME_PAPER_MILL :מפעל ליצור נייר STR_INDUSTRY_NAME_GOLD_MINE :מכרה זהב STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :בנק STR_INDUSTRY_NAME_DIAMOND_MINE :מכרה יהלומים STR_INDUSTRY_NAME_IRON_ORE_MINE :מכרה ברזל STR_INDUSTRY_NAME_FRUIT_PLANTATION :מטע עצי פרי STR_INDUSTRY_NAME_RUBBER_PLANTATION :מטע עצי גומי STR_INDUSTRY_NAME_WATER_SUPPLY :משאבת מים STR_INDUSTRY_NAME_WATER_TOWER :מגדל מים STR_INDUSTRY_NAME_FACTORY_2 :מפעל STR_INDUSTRY_NAME_FARM_2 :חווה STR_INDUSTRY_NAME_FARM_2.gen :חוות STR_INDUSTRY_NAME_LUMBER_MILL :מנסרת עץ STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :יער צמר גפן מתוק STR_INDUSTRY_NAME_CANDY_FACTORY :מפעל ממתקים STR_INDUSTRY_NAME_BATTERY_FARM :חוות סוללות STR_INDUSTRY_NAME_COLA_WELLS :בארות קולה STR_INDUSTRY_NAME_TOY_SHOP :חנות צעצועים STR_INDUSTRY_NAME_TOY_FACTORY :מפעל צעצועים STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :מזרקות פלסטיק STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :מפעל למשקאות מוגזים STR_INDUSTRY_NAME_BUBBLE_GENERATOR :מחולל בועות STR_INDUSTRY_NAME_TOFFEE_QUARRY :מחצבת טופי STR_INDUSTRY_NAME_SUGAR_MINE :מכרה סוכר ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :ללא שם STR_SV_TRAIN_NAME :רכבת {COMMA} STR_SV_ROAD_VEHICLE_NAME :רכב {COMMA} STR_SV_SHIP_NAME :כלי שייט {COMMA} STR_SV_AIRCRAFT_NAME :כלי טייס {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :תחנת {STRING} צפון STR_SV_STNAME_SOUTH :תחנת {STRING} דרום STR_SV_STNAME_EAST :תחנת {STRING} מזרח STR_SV_STNAME_WEST :תחנת {STRING} מערב STR_SV_STNAME_CENTRAL :תחנת {STRING} מרכז STR_SV_STNAME_TRANSFER :תחנת מעבר {STRING} STR_SV_STNAME_HALT :תחנת עצירה {STRING} STR_SV_STNAME_VALLEY :תחנת עמק {STRING} STR_SV_STNAME_HEIGHTS :תחנת רמות {STRING} STR_SV_STNAME_WOODS :תחנת יער {STRING} STR_SV_STNAME_LAKESIDE :תחנת {STRING} לצד אגם STR_SV_STNAME_EXCHANGE :תחנת החלפה {STRING} STR_SV_STNAME_AIRPORT :נמל תעופה {STRING} STR_SV_STNAME_OILFIELD :שדה הנפט {STRING} STR_SV_STNAME_MINES :מכרות {STRING} STR_SV_STNAME_DOCKS :רציפי {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :תחנת מפגש {STRING} STR_SV_STNAME_SIDINGS :תחנת מסיעי {STRING} STR_SV_STNAME_BRANCH :תחנת הסתעפות {STRING} STR_SV_STNAME_UPPER :עילית {STRING} STR_SV_STNAME_LOWER :תחתית {STRING} STR_SV_STNAME_HELIPORT :מנחת מסוקי {STRING} STR_SV_STNAME_FOREST :יער {STRING} STR_SV_STNAME_FALLBACK :{STRING} תחנה מספר {NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :(קירבי-פאול' (קיטור' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :(אם-גי-אס' 250 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :'פלודיפוט' (קיטור) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :'פאוורנאוט' (קיטור) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :'מייטי מובר' (קיטור) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :(פלודיפוט' (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :'פאוורנאוט' (דיזל) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :(וויילס' 2-8-0 (קיטור' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :(צ'ייני' ג'ובילי (קיטור' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :(גינזו' אי-4 (קיטור' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :(אס-אייץ' 8-פי (קיטור' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :(מנלי-מורל די-אמ-יו' (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :(דאש' (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :(אס-אייץ' הנדרי' 25 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :(יו-יו' 37 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :(פלוס' 47 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :(סי-אס' 4000 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :(סי-אס' 2400 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :(סנטניאל' (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :'קלינג 3100' (דיזל) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :(טרנר טורבו' (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :(אמ-ג'י-אס' 1000 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :(אס-איץ' 125 (דיזל' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :(אס-איץ' 30 (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :(אס-איץ' 40 (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :(טי-אי-אם' (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :(אסיה-סטאר' (חשמלי' STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :קרון נוסעים STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :קרון דואר STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :קרון פחם STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :קרון נפט STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :קרון בקר STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :קרון מוצרים STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :קרון תבואה STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :קרון עץ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :קרון עפרת-ברזל STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :קרון פלדה STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :קרון משוריין STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :קרון אוכל STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :קרון נייר STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :קרון עפרת-נחושת STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :קרון מים STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :קרון פירות STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :קרון גומי STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :קרון סוכר STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :קרון צמר גפן מתוק STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :קרון טופי STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :קרון בועות STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :קרון קולה STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :קרון ממתקים STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :קרון צעצועים STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :קרון סוללות STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :קרון משקאות מוגזים STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :קרון פלסטיק STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :(חשמלי) 'X2001' STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :(מילניום זיד -1' (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :'ויזזוואאוו זד-99' STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :קרון נוסעים STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :קרון דואר STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :קרון פחם STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :קרון נפט STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :קרון בקר STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :קרון מוצרים STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :קרון תבואה STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :קרון עץ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :קרון עפרת-ברזל STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :קרון פלדה STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :קרון משוריין STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :קרון אוכל STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :קרון נייר STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :קרון עפרת-נחושת STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :קרון מים STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :קרון פירות STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :קרון גומי STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :קרון סוכר STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :קרון צמר גפן מתוק STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :קרון טופי STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :קרון בועות STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :קרון קולה STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :קרון ממתקים STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :קרון צעצועים STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :קרון סוללות STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :קרון משקאות מוגזים STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :קרון פלסטיק STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :(לב-1' ליוויתן (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :(לב-2' ציקלופ (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :(לב-3' פגהסוס (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :(לב-4' כימרה (חשמלי' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :'וויזוואוו רקטה' STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :קרון נוסעים STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :קרון דואר STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :קרון פחם STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :קרון נפט STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :קרון בקר STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :קרון מוצרים STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :קרון תבואה STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :קרון עץ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :קרון עפרת-ברזל STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :קרון פלדה STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :קרון משוריין STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :קרון אוכל STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :קרון נייר STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :קרון עפרת-נחושת STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :קרון מים STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :קרון פירות STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :קרון גומי STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :קרון סוכר STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :קרון צמר גפן מתוק STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :קרון טופי STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :קרון בועות STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :קרון קולה STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :קרון ממתקים STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :קרון צעצועים STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :קרון סוללות STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :קרון משקאות מוגזים STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :קרון פלסטיק STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :אוטובוס 'ריגאל' אם-פי-אס STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :'אוטובוס 'הירפורד-ליאופרד STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :'אוטובוס 'פוסטר STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :'אוטובוס 'אם-קי 2 סופרבוס STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :אוטובוס 'בינבה' 1 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :אוטובוס 'בינבה' 2 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :אוטובוס 'בינבה' 3 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :'משאית פחם 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :'משאית פחם 'יו-איץ' אל STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :'משאית פחם 'די-דבליו STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :'משאית דואר 'אם-פי-אס STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :'משאית דואר 'ריינארד STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :'משאית דואר 'פרי STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :משאית סופר-דואר STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :משאית דואר 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :משאית דואר 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :'מיכלית נפט 'וויטקומב STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :'מיכלית נפט 'פוסטר STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :'מיכלית נפט פרי STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :'משאית בקר 'טלבוט STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :'משאית בקר 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :'משאית בקר 'פוסטר STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :'משאית מוצרים 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :משאית מוצרים 'קרייגהד' STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :'משאית מוצרים 'גוס STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :'משאית תבואה 'הירפורד STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :'משאית תבואה 'תומאס STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :'משאית תבואה 'גוס STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :'משאית עץ 'וויטקומב STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :'משאית עץ 'פוסטר STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :משאית עץ 'מורלנד' STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :'משאית עפרת ברזל 'אם-פי אס STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :'משאית עפרת ברזל 'יו-איץ' -אל STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :'משאית עפרת ברזל 'צ'יפי STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :'משאית פלדה 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :'משאית פלדה 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :'משאית פלדה 'קלינג STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :'משאית משוריינת 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :'משאית משוריינת 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :'משאית משוריינת 'פוסטר STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :'משאית מזון 'פוסטר STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :'משאית מזון 'פרי STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :'משאית מזון 'צ'יפי STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :'משאית נייר 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :'משאית נייר 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :'משאית נייר 'אם-פי-אס STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :'משאית עפרת נחושת 'אם-פי אס STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :'משאית עפרת נחושת 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :'משאית עפרת נחושת 'גוס STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :'מיכלית מים 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :'מיכלית מים 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :'מיכלית מים 'אם-פי אס STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :'משאית פירות 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :'משאית פירות 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :'משאית פירות 'קלינג STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :'משאית גומי 'באלוג STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :'משאית גומי 'יו-איץ'-אל STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :'משאית גומי 'אר-אם-טי STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :משאית סוכר 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :משאית סוכר 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :משאית סוכר 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :משאית קולה 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :משאית קולה 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :משאית קולה 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :משאית צמר גפן מתוק 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :משאית צמר גפן מתוק 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :משאית צמר גפן מתוק 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :משאית טופי 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :משאית טופי 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :משאית טופי 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :משאית צעצועים 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :משאית צעצועים 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :משאית צעצועים 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :משאית ממתקים 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :משאית ממתקים 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :משאית ממתקים 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :משאית סוללות 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :משאית סוללות 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :משאית סוללות 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :משאית משקאות תוססים 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :משאית משקאות תוססים 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :משאית משקאות תוססים 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :משאית פלסטיק 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :משאית פלסטיק 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :משאית פלסטיק 'וויזוואוו' STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :משאית בועות 'מייטי מובר' STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :משאית בועות 'פאוורנאוט' STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :משאית בועות 'וויזוואוו' STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :'מיכלית נפט 'אם-פי-אס STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :'מיכלית נפט 'סי-אס בע”מ STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :מעבורת נוסעים 'MPS' STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :מעבורת נוסעים 'FFP' STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :'רחפת 'באקוול 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :'מעבורת נוסעים 'צו'גר צ'וג STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :'מעבורת נוסעים 'שיברשייק STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :'ספינת משא 'יאט STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :'ספינת משא 'באקוול' STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :ספינת משא 'מייטי מובר' STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :ספינת משא 'פאוורנאוט' STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :'סמפסון יו-52' STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :'קולמן קאונט' STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :'אף-אף-פי דארט' STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :'יאט הוגאן' STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :'באקוול קוסטוולד אל-בי 3' STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :'באקוול לוקט אל-בי 8' STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :'באקוול לוקט אל-בי 9' STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :'באקוול לוקט אל-בי 80' STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :'באקוול לוקט אל-בי 10' STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :'באקוול לוקט אל-בי 11' STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :'יאט אירוספייס יאק 1-11' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :'דארווין 100' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :'דארווין 200' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :'דארווין 300' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :'דארווין 400' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :'דארווין 500' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :'דארווין 600' STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :'גורו גאלקסי' STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :'אייר-טקסי אי-21' STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :'אייר-טקסי אי-31' STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :'אייר-טקסי אי-32' STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :'אייר-טקסי אי-33' STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :'יאט אירוספייס וי-אי-אי 46' STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :'דינגר 100' STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :'אייר-טקסי אי-34' STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :'יאט זייד-שאטל' STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :'קלינג קי-1' STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :'קלינג קי-6' STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :'קלינג קי-7' STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :'דארווין 700' STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :'אפ-אפ-פי הייפרדארט 2' STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :'דינגר 200' STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :'דינגר 1000' STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :'פלודיפוט 100' STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :'פלודיפוט 500' STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :'פלאשבאנג אקס-1' STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :'ג'וגארפליין אם-1' STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :'פלאשבאנג וייזר' STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :'הליקופטר 'טריקריו STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :'הליקופטר 'גורו אקס-2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :הליקופטר 'פאוורנאוט' ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{2:NUM} ב{1:STRING} {LRM}{0:STRING} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :מצוף {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :מצוף {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :({COMMA} חברה) STR_FORMAT_GROUP_NAME :{COMMA} קבוצה STR_FORMAT_INDUSTRY_NAME :{1:STRING.gen} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :נקודת ציון {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :נקודת ציון {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :מוסך רכבות {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} מוסך רכבות #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :מוסך כלי רכב {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} מוסך כלי רכב #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :מוסך ספינות {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} מוסך ספינות #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :סככת מטוסים {STATION} STR_UNKNOWN_STATION :תחנה לא ידועה STR_DEFAULT_SIGN_NAME :סימניה STR_COMPANY_SOMEONE :מישהו STR_SAVEGAME_NAME_DEFAULT :{1:STRING} ,{0:COMPANY} STR_SAVEGAME_NAME_SPECTATOR :{1:STRING},צופה # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{1:STATION_FEATURES}{0:STATION} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/croatian.txt0000644000000000000000000147771712246102561015771 0ustar rootroot##name Croatian ##ownname Hrvatski ##isocode hr_HR ##plural 6 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x041a ##grflangid 0x38 ##gender male female middle ##case nom gen dat aku vok lok ins # $Id: croatian.txt 26094 2013-11-24 19:57:23Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(neodređen znakovni niz) STR_JUST_NOTHING :Ništa # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Putnici STR_CARGO_PLURAL_PASSENGERS.gen :putnika STR_CARGO_PLURAL_COAL :Ugljen STR_CARGO_PLURAL_COAL.gen :ugljena STR_CARGO_PLURAL_MAIL :Pošta STR_CARGO_PLURAL_MAIL.gen :pošte STR_CARGO_PLURAL_OIL :Nafta STR_CARGO_PLURAL_OIL.gen :nafte STR_CARGO_PLURAL_LIVESTOCK :Domaće životinje STR_CARGO_PLURAL_LIVESTOCK.gen :domaćih životinja STR_CARGO_PLURAL_GOODS :Roba STR_CARGO_PLURAL_GOODS.gen :robe STR_CARGO_PLURAL_GRAIN :Žito STR_CARGO_PLURAL_GRAIN.gen :žita STR_CARGO_PLURAL_WOOD :Drvo STR_CARGO_PLURAL_WOOD.gen :drva STR_CARGO_PLURAL_IRON_ORE :Željezna ruda STR_CARGO_PLURAL_IRON_ORE.gen :željezne rude STR_CARGO_PLURAL_STEEL :Čelik STR_CARGO_PLURAL_STEEL.gen :čelika STR_CARGO_PLURAL_VALUABLES :Dragocjenosti STR_CARGO_PLURAL_VALUABLES.gen :dragocjenosti STR_CARGO_PLURAL_COPPER_ORE :Bakrena ruda STR_CARGO_PLURAL_COPPER_ORE.gen :bakrene rude STR_CARGO_PLURAL_MAIZE :Kukuruz STR_CARGO_PLURAL_MAIZE.gen :kukuruza STR_CARGO_PLURAL_FRUIT :Voće STR_CARGO_PLURAL_FRUIT.gen :voća STR_CARGO_PLURAL_DIAMONDS :Dijamanti STR_CARGO_PLURAL_DIAMONDS.gen :dijamanata STR_CARGO_PLURAL_FOOD :Hrana STR_CARGO_PLURAL_FOOD.gen :hrane STR_CARGO_PLURAL_PAPER :Papir STR_CARGO_PLURAL_PAPER.gen :papira STR_CARGO_PLURAL_GOLD :Zlato STR_CARGO_PLURAL_GOLD.gen :zlata STR_CARGO_PLURAL_WATER :Voda STR_CARGO_PLURAL_WATER.gen :vode STR_CARGO_PLURAL_WHEAT :Pšenica STR_CARGO_PLURAL_WHEAT.gen :pšenice STR_CARGO_PLURAL_RUBBER :Guma STR_CARGO_PLURAL_RUBBER.gen :gume STR_CARGO_PLURAL_SUGAR :Šećer STR_CARGO_PLURAL_SUGAR.gen :šećera STR_CARGO_PLURAL_TOYS :Igračke STR_CARGO_PLURAL_TOYS.gen :igračaka STR_CARGO_PLURAL_CANDY :Slatkiši STR_CARGO_PLURAL_CANDY.gen :slatkiša STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COLA.gen :cole STR_CARGO_PLURAL_COTTON_CANDY :Šećerna vuna STR_CARGO_PLURAL_COTTON_CANDY.gen :šećerne vune STR_CARGO_PLURAL_BUBBLES :Baloni STR_CARGO_PLURAL_BUBBLES.gen :balona STR_CARGO_PLURAL_TOFFEE :Mliječne karamele STR_CARGO_PLURAL_TOFFEE.gen :mliječne karamele STR_CARGO_PLURAL_BATTERIES :Baterije STR_CARGO_PLURAL_BATTERIES.gen :baterija STR_CARGO_PLURAL_PLASTIC :Plastika STR_CARGO_PLURAL_PLASTIC.gen :plastike STR_CARGO_PLURAL_FIZZY_DRINKS :Gazirana pića STR_CARGO_PLURAL_FIZZY_DRINKS.gen :gaziranih pića # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Putnik STR_CARGO_SINGULAR_PASSENGER.gen :putnika STR_CARGO_SINGULAR_PASSENGER.aku :putnika STR_CARGO_SINGULAR_COAL :Ugljen STR_CARGO_SINGULAR_COAL.gen :ugljena STR_CARGO_SINGULAR_COAL.aku :ugljen STR_CARGO_SINGULAR_MAIL :Pošta STR_CARGO_SINGULAR_MAIL.gen :pošte STR_CARGO_SINGULAR_MAIL.aku :poštu STR_CARGO_SINGULAR_OIL :Nafta STR_CARGO_SINGULAR_OIL.gen :nafte STR_CARGO_SINGULAR_OIL.aku :naftu STR_CARGO_SINGULAR_LIVESTOCK :Domaće životinje STR_CARGO_SINGULAR_LIVESTOCK.gen :domaćih životinja STR_CARGO_SINGULAR_LIVESTOCK.aku :domaće životinje STR_CARGO_SINGULAR_GOODS :Roba STR_CARGO_SINGULAR_GOODS.gen :robe STR_CARGO_SINGULAR_GOODS.aku :robu STR_CARGO_SINGULAR_GRAIN :Žito STR_CARGO_SINGULAR_GRAIN.gen :žita STR_CARGO_SINGULAR_GRAIN.aku :žito STR_CARGO_SINGULAR_WOOD :Drvo STR_CARGO_SINGULAR_WOOD.gen :drva STR_CARGO_SINGULAR_WOOD.aku :drvo STR_CARGO_SINGULAR_IRON_ORE :Željezna ruda STR_CARGO_SINGULAR_IRON_ORE.gen :željezne rude STR_CARGO_SINGULAR_IRON_ORE.aku :željeznu rudu STR_CARGO_SINGULAR_STEEL :Čelik STR_CARGO_SINGULAR_STEEL.gen :čelika STR_CARGO_SINGULAR_STEEL.aku :čelik STR_CARGO_SINGULAR_VALUABLES :Dragocjenosti STR_CARGO_SINGULAR_VALUABLES.gen :dragocjenosti STR_CARGO_SINGULAR_VALUABLES.aku :dragocjenosti STR_CARGO_SINGULAR_COPPER_ORE :Bakrena ruda STR_CARGO_SINGULAR_COPPER_ORE.gen :bakrene rude STR_CARGO_SINGULAR_COPPER_ORE.aku :bakrenu rudu STR_CARGO_SINGULAR_MAIZE :Kukuruz STR_CARGO_SINGULAR_MAIZE.gen :kukuruza STR_CARGO_SINGULAR_MAIZE.aku :kukuruz STR_CARGO_SINGULAR_FRUIT :Voće STR_CARGO_SINGULAR_FRUIT.gen :voća STR_CARGO_SINGULAR_FRUIT.aku :voće STR_CARGO_SINGULAR_DIAMOND :Dijamant STR_CARGO_SINGULAR_DIAMOND.gen :dijamanata STR_CARGO_SINGULAR_DIAMOND.aku :dijamant STR_CARGO_SINGULAR_FOOD :Hrana STR_CARGO_SINGULAR_FOOD.gen :hrane STR_CARGO_SINGULAR_FOOD.aku :hranu STR_CARGO_SINGULAR_PAPER :Papir STR_CARGO_SINGULAR_PAPER.gen :papira STR_CARGO_SINGULAR_PAPER.aku :papir STR_CARGO_SINGULAR_GOLD :Zlato STR_CARGO_SINGULAR_GOLD.gen :zlata STR_CARGO_SINGULAR_GOLD.aku :zlato STR_CARGO_SINGULAR_WATER :Voda STR_CARGO_SINGULAR_WATER.gen :vode STR_CARGO_SINGULAR_WATER.aku :vodu STR_CARGO_SINGULAR_WHEAT :Pšenica STR_CARGO_SINGULAR_WHEAT.gen :pšenice STR_CARGO_SINGULAR_WHEAT.aku :pšenicu STR_CARGO_SINGULAR_RUBBER :Guma STR_CARGO_SINGULAR_RUBBER.gen :gume STR_CARGO_SINGULAR_RUBBER.aku :gumu STR_CARGO_SINGULAR_SUGAR :Šećer STR_CARGO_SINGULAR_SUGAR.gen :šećera STR_CARGO_SINGULAR_SUGAR.aku :šećer STR_CARGO_SINGULAR_TOY :Igračka STR_CARGO_SINGULAR_TOY.gen :igračaka STR_CARGO_SINGULAR_TOY.aku :igračku STR_CARGO_SINGULAR_CANDY :Slatkiš STR_CARGO_SINGULAR_CANDY.gen :slatkiša STR_CARGO_SINGULAR_CANDY.aku :slatkiš STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COLA.gen :cole STR_CARGO_SINGULAR_COLA.aku :colu STR_CARGO_SINGULAR_COTTON_CANDY :Šećerna vuna STR_CARGO_SINGULAR_COTTON_CANDY.gen :šećerne vune STR_CARGO_SINGULAR_COTTON_CANDY.aku :šećernu vunu STR_CARGO_SINGULAR_BUBBLE :Balon STR_CARGO_SINGULAR_BUBBLE.gen :balona STR_CARGO_SINGULAR_BUBBLE.aku :balon STR_CARGO_SINGULAR_TOFFEE :Mliječna karamela STR_CARGO_SINGULAR_TOFFEE.gen :mliječne karamele STR_CARGO_SINGULAR_TOFFEE.aku :mliječnu karamelu STR_CARGO_SINGULAR_BATTERY :Baterija STR_CARGO_SINGULAR_BATTERY.gen :baterija STR_CARGO_SINGULAR_BATTERY.aku :bateriju STR_CARGO_SINGULAR_PLASTIC :Plastika STR_CARGO_SINGULAR_PLASTIC.gen :plastike STR_CARGO_SINGULAR_PLASTIC.aku :plastiku STR_CARGO_SINGULAR_FIZZY_DRINK :Gazirano piće STR_CARGO_SINGULAR_FIZZY_DRINK.gen :gaziranog pića STR_CARGO_SINGULAR_FIZZY_DRINK.aku :gazirano piće # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} putnik{P "" a a} STR_QUANTITY_COAL :{WEIGHT_LONG} ugljena STR_QUANTITY_MAIL :{COMMA} poštansk{P a e ih} vreć{P a e a} STR_QUANTITY_OIL :{VOLUME_LONG} nafte STR_QUANTITY_LIVESTOCK :{COMMA} grl{P o a a} domaćih životinja STR_QUANTITY_GOODS :{COMMA} sanduk{P "" a a} robe STR_QUANTITY_GRAIN :{WEIGHT_LONG} žita STR_QUANTITY_WOOD :{WEIGHT_LONG} drveta STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} željezne rude STR_QUANTITY_STEEL :{WEIGHT_LONG} čelika STR_QUANTITY_VALUABLES :{COMMA} vreć{P a e a} s vrijednostima STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} bakrene rude STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukuruza STR_QUANTITY_FRUIT :{WEIGHT_LONG} voća STR_QUANTITY_DIAMONDS :{COMMA} vreć{P a e a} dijamanata STR_QUANTITY_FOOD :{WEIGHT_LONG} hrane STR_QUANTITY_PAPER :{WEIGHT_LONG} papira STR_QUANTITY_GOLD :{COMMA} vreć{P a e a} zlata STR_QUANTITY_WATER :{VOLUME_LONG} vode STR_QUANTITY_WHEAT :{WEIGHT_LONG} pšenice STR_QUANTITY_RUBBER :{VOLUME_LONG} gume STR_QUANTITY_SUGAR :{WEIGHT_LONG} šećera STR_QUANTITY_TOYS :{COMMA} igrač{P ka ke aka} STR_QUANTITY_SWEETS :{COMMA} vreć{P a e a} slatkiša STR_QUANTITY_COLA :{VOLUME_LONG} cole STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} šećerne vune STR_QUANTITY_BUBBLES :{COMMA} balon{P "" a a} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} mliječne karamele STR_QUANTITY_BATTERIES :{COMMA} baterij{P a e a} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastike STR_QUANTITY_FIZZY_DRINKS :{COMMA} gaziran{P o a ih} pić{P e a a} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PU STR_ABBREV_COAL :{TINY_FONT}UG STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}NF STR_ABBREV_LIVESTOCK :{TINY_FONT}DŽ STR_ABBREV_GOODS :{TINY_FONT}RB STR_ABBREV_GRAIN :{TINY_FONT}ŽT STR_ABBREV_WOOD :{TINY_FONT}DV STR_ABBREV_IRON_ORE :{TINY_FONT}FE STR_ABBREV_STEEL :{TINY_FONT}ČL STR_ABBREV_VALUABLES :{TINY_FONT}DC STR_ABBREV_COPPER_ORE :{TINY_FONT}CU STR_ABBREV_MAIZE :{TINY_FONT}KK STR_ABBREV_FRUIT :{TINY_FONT}VĆ STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}HN STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}AU STR_ABBREV_WATER :{TINY_FONT}VO STR_ABBREV_WHEAT :{TINY_FONT}PŠ STR_ABBREV_RUBBER :{TINY_FONT}GM STR_ABBREV_SUGAR :{TINY_FONT}ŠĆ STR_ABBREV_TOYS :{TINY_FONT}IG STR_ABBREV_SWEETS :{TINY_FONT}SL STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}ŠV STR_ABBREV_BUBBLES :{TINY_FONT}BL STR_ABBREV_TOFFEE :{TINY_FONT}MK STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}GP STR_ABBREV_NONE :{TINY_FONT}NI STR_ABBREV_ALL :{TINY_FONT}SVE # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} putnici STR_PASSENGERS.gen :{COMMA} putnika STR_BAGS :{COMMA} vreća STR_TONS :{COMMA} tona STR_LITERS :{COMMA} litra STR_ITEMS :{COMMA} predmet STR_CRATES :{COMMA} sanduk # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tamnoplava STR_COLOUR_PALE_GREEN :Blijedozelena STR_COLOUR_PINK :Ružičasta STR_COLOUR_YELLOW :Žuta STR_COLOUR_RED :Crvena STR_COLOUR_LIGHT_BLUE :Svijetloplava STR_COLOUR_GREEN :Zelena STR_COLOUR_DARK_GREEN :Tamnozelena STR_COLOUR_BLUE :Plava STR_COLOUR_CREAM :Kremasta STR_COLOUR_MAUVE :Svijetloljubičasta STR_COLOUR_PURPLE :Ljubičasta STR_COLOUR_ORANGE :Narančasta STR_COLOUR_BROWN :Smeđa STR_COLOUR_GREY :Siva STR_COLOUR_WHITE :Bijela # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}KS STR_UNITS_POWER_METRIC :{COMMA}KS STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a e a} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ra re ara} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtriraj niz: STR_LIST_FILTER_OSKTITLE :{BLACK}Unesi znak za filter STR_LIST_FILTER_TOOLTIP :{BLACK}Unesite ključnu riječ kako bi filtrirali popis STR_TOOLTIP_SORT_ORDER :{BLACK}Izaberi način sortiranja (silazno/uzlazno) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Izaberi kriterij za sortiranje STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Odaberi kriterij filtriranja STR_BUTTON_SORT_BY :{BLACK}Sortiraj prema STR_BUTTON_LOCATION :{BLACK}Lokacija STR_BUTTON_RENAME :{BLACK}Preimenuj STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zatvori prozor STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Naslov prozora - povuci ovo za micanje prozora STR_TOOLTIP_SHADE :{BLACK}Zasjeni prozor - prikaži samo naslovnu traku STR_TOOLTIP_DEBUG :{BLACK}Prikaži NewGRF debug informacije STR_TOOLTIP_STICKY :{BLACK}Označi ovaj prozor nezatvorivim prilikom uporabe tipke 'Zatvori sve prozore' STR_TOOLTIP_RESIZE :{BLACK}Klikni i povuci za promjenu veličine ovog prozora STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Namjesti veliku/malu veličinu prozora STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Klizna traka - lista gore/dolje STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Klizna traka - lista lijevo/desno STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Sruši građevine itd. na kvadratu zemlje. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova. # Query window STR_BUTTON_DEFAULT :{BLACK}Zadano STR_BUTTON_CANCEL :{BLACK}Odustani STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Dužina: {NUM} STR_MEASURE_AREA :{BLACK}Područje: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Dužina: {NUM}{}Visinska razlika: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Područje: {NUM} x {NUM}{}Visinska razlika: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Stanovništvo STR_SORT_BY_CAPTION_NAME :{BLACK}Ime STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns STR_SORT_BY_NAME :Ime STR_SORT_BY_PRODUCTION :Proizvodnja STR_SORT_BY_TYPE :Vrsta STR_SORT_BY_TRANSPORTED :Prevezeno STR_SORT_BY_NUMBER :Broj STR_SORT_BY_PROFIT_LAST_YEAR :Dobit prošle godine STR_SORT_BY_PROFIT_THIS_YEAR :Dobit ove godine STR_SORT_BY_AGE :Godine STR_SORT_BY_RELIABILITY :Pouzdanost STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Ukupna nosivost prema vrsti tereta STR_SORT_BY_MAX_SPEED :Maksimalna brzina STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Vrijednost STR_SORT_BY_LENGTH :Dužina STR_SORT_BY_LIFE_TIME :Preostali životni vijek STR_SORT_BY_TIMETABLE_DELAY :Kašnjenje voznog reda STR_SORT_BY_FACILITY :Vrsta stanice STR_SORT_BY_WAITING :Vrijednost tereta koji čeka STR_SORT_BY_RATING_MAX :Najviša ocjena tereta STR_SORT_BY_RATING_MIN :Najniža ocjena tereta STR_SORT_BY_ENGINE_ID :MotorID (standardno sortiranje) STR_SORT_BY_COST :Cijena STR_SORT_BY_POWER :Snaga STR_SORT_BY_TRACTIVE_EFFORT :Vučna sila STR_SORT_BY_INTRO_DATE :Datum uvođenja STR_SORT_BY_RUNNING_COST :Tekući trošak STR_SORT_BY_POWER_VS_RUNNING_COST :Snaga/Tekući trošak STR_SORT_BY_CARGO_CAPACITY :Nosivost tereta STR_SORT_BY_RANGE :Domet # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Zaustavi igru STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Premotaj igru naprijed STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Postavke STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Spremi igru, napusti igru, izađi STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Prikaži kartu, dodatni pogled ili popis znakova STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Prikaži popis gradova STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Prikaži subvencije STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Prikaži popis postaja u vlasništvu tvrtke STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Prikaži financijske podatke tvrtke STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Prikaži opće podatke tvrtke STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Prikaži grafikone STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Prikaži tablicu lige tvrtki STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financiraj izgradnju nove industrije STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Prikaži popis vlakova u vlasništvu tvrtke. Ctrl+klik aktivira otvaranje grupe/liste vozila. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Prikaži popis cestovnih vozila u vlasništvu tvrtke. Ctrl+klik određuje otvaranje grupe/liste vozila. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Prikaži popis brodova u vlasništvu tvrtke. Ctrl+klik određuje otvaranje grupe/liste vozila. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Prikaži popis zrakoplova u vlasništvu tvrtke. Ctrl+klik određuje otvaranje grupe/liste vozila. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Približi pogled STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Udalji pogled STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Izgradi željezničku prugu STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Izgradi ceste STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Izgradi pristaništa za brodove STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Izgradi zračne luke STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Otvori alatnu traku za krajolik kako bi spustio/izdignuo zemlju, posadio drveće, itd. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Pokaži prozor za zvuk/glazbu STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Pokaži zadnju poruku/vijest, pokaži postavke poruka STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Podaci o zemlji, konzola, debug skripte, snimke ekrana, o OpenTTD-u STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Promijeni alatne trake # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Spremi scenarij, učitaj scenarij, napusti uređivanje scenarija, izađi STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Uređivanje scenarija STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Pomakni početni datum 1 godinu unatrag STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Pomakni početni datum 1 godinu unaprijed STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikni kako bi upisao početnu godinu STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Prikaži kartu, popis gradova STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Stvaranje krajolika STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Stvaranje gradova STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Stvaranje industrije STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Izgradnja ceste STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Posadi drveće. Shift mijenja prikaz građenje/procjena troškova. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Postavi znak STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Postavi objekt. Shift mijenja prikaz građenje/procjena troškova. ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Spremi scenarij STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Učitaj scenarij STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Spremi visinsku mapu STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Učitaj visinsku kartu STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Odustani od uređivanja scenarija STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Izlaz ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Postavke igre STR_SETTINGS_MENU_CONFIG_SETTINGS :Napredne postavke STR_SETTINGS_MENU_SCRIPT_SETTINGS :Postavke UI-ja/Skripte igre STR_SETTINGS_MENU_NEWGRF_SETTINGS :Postavke za NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Postavke prozirnosti STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Prikaži imena gradova STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Prikaži imena postaja STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Imena čvorišta su prikazana STR_SETTINGS_MENU_SIGNS_DISPLAYED :Prikaži znakove STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Prikazani znakovi i imena od konkurenata STR_SETTINGS_MENU_FULL_ANIMATION :Sve animacije STR_SETTINGS_MENU_FULL_DETAIL :Svi detalji STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Prozirne građevine STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Prozirni znakovi ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Spremi igru STR_FILE_MENU_LOAD_GAME :Učitaj igru STR_FILE_MENU_QUIT_GAME :Napusti igru STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Izlaz ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Karta svijeta STR_MAP_MENU_EXTRA_VIEW_PORT :Dodatni pogled STR_MAP_MENU_SIGN_LIST :Popis znakova ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Popis gradova STR_TOWN_MENU_FOUND_TOWN :Osnuj grad ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencije STR_SUBSIDIES_MENU_GOAL :Trenutni ciljevi ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Grafikon operativne dobiti STR_GRAPH_MENU_INCOME_GRAPH :Grafikon prihoda STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Grafikon isporučenog tereta STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Grafikon učinkovitosti STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Grafikon vrijednosti tvrtke STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Iznosi plaćanja tereta ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tablica lige tvrtki STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljna ocjena učinka STR_GRAPH_MENU_HIGHSCORE :Tablica najboljih rezultata ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Popis industrija STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industrijski lanci STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financiraj novu industriju ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Izgradnja željeznice STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Izgradnja elektrificirane željeznice STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Izgradnja jednotračne željeznice STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Izgradnja Magleva ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Izgradnja ceste STR_ROAD_MENU_TRAM_CONSTRUCTION :Izgradnja tramvaja ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Izgradnja plovnih kanala ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Izgradnja zračne luke ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Uređivanje krajolika STR_LANDSCAPING_MENU_PLANT_TREES :Posadi drveće STR_LANDSCAPING_MENU_PLACE_SIGN :Postavi znak ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Zvuk/glazba ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Poslijednja poruka/vijest STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Povijest poruka ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Podaci o zemljištu STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Otvori konzolu STR_ABOUT_MENU_AI_DEBUG :Debugiranje UI-ja/Skripte igre STR_ABOUT_MENU_SCREENSHOT :Slika zaslona STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zumirano do kraja na slici zaslona STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Standardno zumiranje slike zaslona STR_ABOUT_MENU_GIANT_SCREENSHOT :Slika zaslona cijele mape STR_ABOUT_MENU_ABOUT_OPENTTD :O 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Poravnjanje sprite-a STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Odaberi granične okvire STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Mijenjaj boju blatnih blokova ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Sij STR_MONTH_ABBREV_FEB :Velj STR_MONTH_ABBREV_MAR :Ožu STR_MONTH_ABBREV_APR :Tra STR_MONTH_ABBREV_MAY :Svi STR_MONTH_ABBREV_JUN :Lip STR_MONTH_ABBREV_JUL :Srp STR_MONTH_ABBREV_AUG :Kol STR_MONTH_ABBREV_SEP :Ruj STR_MONTH_ABBREV_OCT :Lis STR_MONTH_ABBREV_NOV :Stu STR_MONTH_ABBREV_DEC :Pro STR_MONTH_JAN :Siječanj STR_MONTH_FEB :Veljača STR_MONTH_MAR :Ožujak STR_MONTH_APR :Travanj STR_MONTH_MAY :Svibanj STR_MONTH_JUN :Lipanj STR_MONTH_JUL :Srpanj STR_MONTH_AUG :Kolovoz STR_MONTH_SEP :Rujan STR_MONTH_OCT :Listopad STR_MONTH_NOV :Studeni STR_MONTH_DEC :Prosinac ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Ključ STR_GRAPH_KEY_TOOLTIP :{BLACK}Pokaži ključeve na grafikonima STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Grafikon operativne dobiti STR_GRAPH_INCOME_CAPTION :{WHITE}Grafikon prihoda STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Dostavljenih jedinica tereta STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ocjena učinka tvrtke (najveća ocjena = 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Vrijednosti tvrtke STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Isplatne rate tereta STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dana u tranzitu STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Plaćanje za dostavu 10 jedinica (ili 10.000 litara) tereta za udaljenost od 20 kvadrata STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Uključi sve STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Isključi sve STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Prikaži sve terete na grafikonu cijena prijevoza tereta STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Prikaži bez tereta na grafikonu cijena prijevoza tereta STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Uključi/isključi grafikon za vrstu tereta STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Pokaži detaljne ocjene rezultata # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Ključ za grafikone tvrtke STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikni ovdje za uključivanje/isključivanje tvrtke s grafikona # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tablica lige tvrtki STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inženjer STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Prijevozni upravitelj STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Prijevozni koordinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Prijevozni nadzornik STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Izvršni direktor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Predsjedavajući STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Predsjednik STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tajkun # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detaljna procjena rezultata STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalji STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Pogledaj detalje za ovu kompaniju ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vozila: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Postaje: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. dobit: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. prihod: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. prihod: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Dostavljeno: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Teret: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Novac: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Zajam: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Ukupno: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Broj vozila koja su ostvarila dobit prošle godine. Ovo uključuje cestovna vozila, vlakove, brodove i zrakoplove. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Broj nedavno servisiranih dijelova postaje. Svaki dio postaje (npr. željeznički kolodvor, autobusna postaja, zračna luka) se računa, čak i ako su spojene kao jedna postaja STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Dobit vozila s najnižim prihodom (u obzir su uzeta samo vozila starija od dvije godine) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Količina gotovine uprihodovana u mjesecu s najnižom dobiti u zadnjih 12 kvartala STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Količina gotovine uprihodovana u mjesecu s najvišom dobiti u zadnjih 12 kvartala STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Jedinice tereta dostavljene u zadnja četiri kvartala STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Broj vrsta tereta dostavljenih u zadnjem kvartalu STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Količina novca koju ova tvrtka ima u banci STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Iznos novca koji je ova tvrtka pozajmila STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Ukupni broj bodova od mogućih bodova # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz glazbeni automat STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Sve STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Staromodno STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Moderno STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Laganica STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Proizvoljno 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Proizvoljno 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Glasnoća glazbe STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Glasnoća zvukova STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Traka STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Naslov STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Miješaj STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Skoči na prethodnu traku u izboru STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Skoči na sljedeću traku u izboru STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Zaustavi glazbu STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Pokreni glazbu STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Povuci klizače za namještanje glasnoće glazbe i zvukova STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Odaberi program 'sve trake' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Odaberi program 'staromodna glazba' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Odaberi program 'moderna glazba' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Odaberi glazbeni program 'Ezy Street style' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Odaberi program 'Proizvoljna glazba 1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Odaberi program 'Proizvoljna glazba 2' STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Uključi/isključi miješanje programa STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Pokaži prozor za izbor glazbenih traka STR_ERROR_NO_SONGS :{WHITE}Odabran je set glazbe bez pjesama. Ne će se puštati nikakve pjesme # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Izbor glazbenog programa STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Popis traka STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program- '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Obriši STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Obriši aktivni program (samo Proizvoljno 1 ili Proizvoljno 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikni na glazbenu traku za dodavanje u aktivni program (samo Proizvoljno 1 ili Proizvoljno 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikni na glazbenu traku kako bi ju uklonio iz trenutnog programa (samo Proizvoljno 1 ili Proizvoljno 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najbolje tvrtke koje su dosigle razinu {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tablica tvrtki u {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Privrednik STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Poduzetnik STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrijalist STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Velikaš STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Bogataš STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tajkun stoljeća STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Tvrtka {COMPANY} postigla je status '{STRING}' ! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} iz tvrtke {COMPANY} postigao je status '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Karta - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Obrisi STR_SMALLMAP_TYPE_VEHICLES :Vozila STR_SMALLMAP_TYPE_INDUSTRIES :Industrije STR_SMALLMAP_TYPE_ROUTES :Trase STR_SMALLMAP_TYPE_VEGETATION :Vegetacija STR_SMALLMAP_TYPE_OWNERS :Vlasnici STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Pokaži obrise zemlje na karti STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Pokaži vozila na karti STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Pokaži industrije na karti STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Pokaži prijevozne trase na karti STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Pokaži vegetaciju na karti STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Pokaži vlasnike zemlje na karti STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikni na tip industrije za njen prikaz. Ctrl+Klik isključuje sve tipove industrije osim odabrane. Ponovni Ctrl+Klik uključuje sve tipove industrije. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikni na kompaniju za prikaz njenog vlasništva. Ctrl+Klik isključuje sve kompanije osim odabrane. Ponovni Ctrl+Klik uključuje sve kompanije. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ceste STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Željeznice STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Postaje/Zračne luke/Pristaništa STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Građevine/Industrije STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vozila STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Vlakovi STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Cestovna vozila STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Brodovi STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Zrakoplov STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Prijevozne trase STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Šuma STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Željeznička postaja STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Kamionski terminal STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Autobusna postaja STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Zračna luka/Heliodrom STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Pristanište STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Surova zemlja STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Travnjak STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Ogoljena zemlja STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Polja STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Stabla STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Stijenje STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Voda STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Bez vlasnika STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Gradovi STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrije STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Pustinja STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snijeg STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Prikaži/sakrij imena gradova na karti STR_SMALLMAP_CENTER :{BLACK}Centriraj malu kartu na trenutni položaj STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Onemogući sve STR_SMALLMAP_ENABLE_ALL :{BLACK}Omogući sve STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Pokaži visinu STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ne prikazuj industrije na karti STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Prikaži sve industrije na karti STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Aktiviraj prikaz visinske karte STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Prikaži sve što nije vlasništvo kompanije na mapi STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Prikaži sve vlasništvo kompanije na mapi # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaži zadnju poruku ili vijest STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * STANKA * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOMATSKO SPREMANJE STR_STATUSBAR_SAVING_GAME :{RED}* * SPREMAM IGRU * * # News message history STR_MESSAGE_HISTORY :{WHITE}Povijest poruka STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Popis nedavnih novinskih poruka STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Poruka STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi vlak je stigao na postaju {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi autobus je stigao na postaju {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi kamion je stigao na postaju {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi putnički tramvaj je stigao na postaju {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi teretni tramvaj je stigao na postaju {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi brod je stigao na pristanište {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Građani slave . . .{}Prvi zrakoplov je stigao u zračnu luku {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Vlak se sudario!{}{COMMA} poginu{P o la lih} u eksploziji nakon sudara STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Sudar cestovnog vozila!{}Vozač poginuo u eksploziji nakon sudara s vlakom STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Sudar cestovnog vozila!{}{COMMA} poginu{P o la lih} u eksploziji nakon sudara s vlakom STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Pad zrakoplova!{}{COMMA} poginu{P o la lih} u eksploziji na {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Zrakoplovna nesreća!{}Zrakoplov je ostao bez goriva, {COMMA} poginu{P o la lih} u nesreći STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Cepelin je pao kod {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Cestovno vozilo uništeno u sudaru s NLO-om! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozija rafinerije nafte blizu grada {TOWN}a! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Tvornica uništena pod sumnjivim okolnostima u blizini grada {TOWN}a! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'NLO' sletio blizu grada {TOWN}a! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Urušavanje rudnika ugljena ostavilo je trag blizu grada {TOWN}a! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Poplave!{}Najmanje {COMMA} nesta{P o la lih}, pretpostavlja se poginu{P o la lih} nakon značajnih poplava! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Prijevozna tvrtka u nevoljama! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Tvrtka {STRING} će biti rasprodana ili objaviti bankrot ukoliko se rezultati uskoro ne poboljšaju! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Spajanje prijevoznih tvrtki! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}Tvrtka {STRING} je prodana tvrtki {STRING} za {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrot! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Tvrtka {STRING} je zatvorena od strane vjerovnika i sva je imovina rasprodana! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Osnovana je nova prijevozna tvrtka! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Tvrtka {STRING} započinje gradnju blizu grada {TOWN}a! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Tvrtka {STRING} je preuzeta od strane tvrtke {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Direktor) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Tvrtka {STRING} sponzorira izgradnju novoga grada {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Započela je izgradnja nove {STRING.gen} u blizini grada {TOWN}a! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nova {STRING} trenutno se sadi blizu grada {TOWN}a! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} objavljuje skoro zatvaranje! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Zbog problema u nabavi {STRING} se uskoro zatvara! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Manjak drveća u glavni je razlog što se {STRING} se uskoro zatvara! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europska Monetarna Unija!{}{}Euro je predstavljen kao jedinstvena valuta za svakodnevnu uporabu u tvojoj zemlji! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Svjetska recesija!{}{}Financijski stručnjaci strahuju od najgoreg zbog ekonomske krize! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recesija završena!{}{}Obrat u trgovanju daje samopouzdanje gospodarstvu jer ekonomija jača! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} povećava proizvodnju! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY} očekuje udvostručenje proizvodnje!{}Pronađena je nova pukotina ugljena! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY} očekuje udvostručenje proizvodnje!{}Pronađene su nove rezerve nafte! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} poboljšava metode uzgoja, očekuje se udvostručenje proizvodnje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} povećava proizvodnju {0:STRING.gen} za {2:COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} smanjuje proizvodnju za 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} pod najezdom kukaca! Havarija!{}Proizvodnja je pala za 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} smanjuje proizvodnju {0:STRING.gen} za {2:COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} čeka u spremištu STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} čeka u spremištu STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeka u brodogradilištu STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeka u zrakoplovnom hangaru # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ima premalo naredbi u rasporedu STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ima nevažeće naredbe STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ima duplicirane naredbe STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ima neispravnu postaju u svojim naredbama # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} postaje star STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} postaje vrlo star STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} postaje vrlo star i hitno treba zamjenu STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ne može naći put za nastavak. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} je izgubljeno. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} je prošle godine zaradio {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} ne može doći do sljedećeg odredišta jer je izvan dometa STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} je zaustavljen zbog neuspjele naredbe za prenamjenu STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Neuspješno automatsko obnavljanje za {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Novi {STRING} je sada dostupan! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novi {STRING} je sada dostupan! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} više ne prihvaća {STRING.aku} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} više ne prihvaća {STRING.aku} ili {STRING.aku} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} od sada prihvaća {STRING.aku} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} od sada prihvaća {STRING.aku} i {STRING.aku} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Istekla je ponuda subvencije:{}{}prijevoz {STRING.gen} od {STRING} do {STRING} više neće biti subvencioniran STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvencija je povučena:{}{}prijevoz {STRING.gen} od {STRING} do {STRING} više nije subvencioniran STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Ponuđena je subvencija:{}{}Prvi koji preveze {STRING.aku} od {STRING} do {STRING} primat će jednogodišnju subvenciju od lokalne samouprave! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se 50% više sljedećih godinu dana! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se dvostruko sljedećih godinu dana! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se trostruko sljedećih godinu dana! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencija je dodijeljena tvrtki {STRING}!{}{}Prijevoz {STRING.gen} od postaje {STRING} do postaje {STRING} plaćat će se četverostruko sljedećih godinu dana! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Grad {TOWN} zahvatio je prometni kaos!{}{}Program rekonstrukcije cesta koji financira tvrtka {STRING} sljedećih će 6 mjeseci zadavati glavobolje motoriziranima! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopol transporta! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokalna vlast {TOWN} potpisuje ugovor sa {STRING} za jednogodišnja ekskluzivna prava transporta! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Mini pogled {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiraj u mini pogled STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiraj lokaciju globalnog pogleda u ovaj mini pogled STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Zalijepi iz mini pogleda STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Zalijepi lokaciju ovog mini pogleda u globalni pogled # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Postavke igre STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Novčane jedinice STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor novčanih jedinica ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Funte (£) STR_GAME_OPTIONS_CURRENCY_USD :Američki Dolar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japanski Jen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Austrijski šiling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski franak (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Švicarski franak (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Češka kruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Njemačka marka (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Danska kruna (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Španjolska Pezeta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finska marka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Francuski Franak (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grčka drahma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Mađarski forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandska kruna (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Talijanska lira (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Nizozemski gulden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norveška kruna (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zloti (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumunjski lev (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Ruske rublje (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenski tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Švedska kruna (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turska lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovačka kruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :estonska kruna (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litvanski Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafrički Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Proizvoljno... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mjerni sustav STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor mjernog sustava ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperijalni STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrički STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestovna vozila STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Odaberi na kojoj će strani ceste vozila prometovati STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vozi na lijevoj strani STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Vozi na desnoj strani STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Imena gradova STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Odaberi stil za imena gradova ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Engleski (original) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francuski STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Njemački STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Engleski (dodatno) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinoamerički STR_GAME_OPTIONS_TOWN_NAME_SILLY :Blesavo STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Švedski STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Nizozemski STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finski STR_GAME_OPTIONS_TOWN_NAME_POLISH :Poljski STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovački STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norveški STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Mađarski STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austrijski STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumunjski STR_GAME_OPTIONS_TOWN_NAME_CZECH :Češki STR_GAME_OPTIONS_TOWN_NAME_SWISS :Švicarski STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danski STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turski STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Talijanski STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonski ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatsko spremanje STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Odaberi interval između automatskih spremanja igre STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Isključeno STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Svaki mjesec STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Svaka 3 mjeseca STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Svakih 6 mjeseci STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Svakih 12 mjeseci STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Izaberi jezično sučelje STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Cijeli ekran STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Označi ovu kućicu kako bi igrao OpenTTD preko cijelog ekrana STR_GAME_OPTIONS_RESOLUTION :{BLACK}Razlučivost ekrana STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Izaberi razlučivost ekrana STR_GAME_OPTIONS_RESOLUTION_OTHER :ostalo STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format za sliku ekrana STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Izaberi format za sliku ekrana STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni set grafike STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi osnovni grafički set za igru STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} datotek{P a e a} nedostaj{P e u e}/korumpiran{P a e o} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnom grafičkom setu STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set osnovnih zvukova STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Odaberite osnovni set zvukova STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o setu osnovnih zvukova STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set osnovne glazbe STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Odaberi set osnovne glazbe za uporabu STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} neispravn{P a e ih} datotek{P a e a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o setu osnovne glazbe STR_ERROR_FULLSCREEN_FAILED :{WHITE}Neuspješan prelazak na prikaz na cijelom ekranu # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Proizvoljna valuta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Devizni tečaj: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Smanjite iznos vaše valute za jednu funtu (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Povećajte iznos vaše valute za jednu funtu (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Postavite omjer zamjene vaše valute za jednu funtu (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Razdjelnik: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Postavite decimalni simbol vaše valute STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Postavite prefiks za vašu valutu STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Postavite sufiks za vašu valutu STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Promijeni na Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Promijeni na Euro: {ORANGE}nikad STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Postavite godinu prebacivanja na Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Prebacite se na Euro ranije STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Prebacite se na Euro kasnije STR_CURRENCY_PREVIEW :{LTBLUE}Prikaz: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 funti (£) u vašoj valuti STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Promijeni parametre proizvoljne valute STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimalan broj natjecatelja: {ORANGE}{COMMA} STR_NONE :Ništa STR_FUNDING_ONLY :Samo financiranje STR_MINIMAL :Minimalno STR_NUM_VERY_LOW :Vrlo nisko STR_NUM_LOW :Nisko STR_NUM_NORMAL :Normalno STR_NUM_HIGH :Visoko STR_NUM_CUSTOM :Proizvoljno STR_NUM_CUSTOM_NUMBER :Proizvoljno ({NUM}) STR_VARIETY_NONE :Ništa STR_VARIETY_VERY_LOW :Vrlo nisko STR_VARIETY_LOW :Nisko STR_VARIETY_MEDIUM :Srednje STR_VARIETY_HIGH :Visoko STR_VARIETY_VERY_HIGH :Vrlo visoko STR_AI_SPEED_VERY_SLOW :Vrlo sporo STR_AI_SPEED_SLOW :Sporo STR_AI_SPEED_MEDIUM :Umjereno STR_AI_SPEED_FAST :Brzo STR_AI_SPEED_VERY_FAST :Vrlo brzo STR_SEA_LEVEL_VERY_LOW :Vrlo nisko STR_SEA_LEVEL_LOW :Nisko STR_SEA_LEVEL_MEDIUM :Umjereno STR_SEA_LEVEL_HIGH :Visoko STR_SEA_LEVEL_CUSTOM :Proizvoljno STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Proizvoljno ({NUM}%) STR_RIVERS_NONE :Ništa STR_RIVERS_FEW :Malo STR_RIVERS_MODERATE :Srednje STR_RIVERS_LOT :Puno STR_DISASTER_NONE :Ništa STR_DISASTER_REDUCED :Smanjeno STR_DISASTER_NORMAL :Normalno STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Vrlo ravno STR_TERRAIN_TYPE_FLAT :Ravno STR_TERRAIN_TYPE_HILLY :Brežuljkasto STR_TERRAIN_TYPE_MOUNTAINOUS :Brdovito STR_CITY_APPROVAL_PERMISSIVE :Dopustiv STR_CITY_APPROVAL_TOLERANT :Tolerantan STR_CITY_APPROVAL_HOSTILE :Agresivan STR_WARNING_NO_SUITABLE_AI :{WHITE}Odgovarajuća UI nije dostupna...{}Možete preuzeti nekoliko UI pomoću sustava 'Online sadržaja' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Napredne postavke STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtriraj slijed: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Otvori sve STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Zatvori sve STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(nema dostupnog pojašnjenja) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Osnovna vrijednost: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Vrsta postavki: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Postavke klijenta (nisu pohranjene u snimljenoj datoteci; utječu na sve igre) STR_CONFIG_SETTING_TYPE_GAME_MENU :Postavke igre (pohranjene u snimljenoj datoteci; utječu samo na nove igre) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Postavke igre (pohranjene u snimljenoj datoteci; utječu samo na trenutnu igru) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Postavke kompanije (pohranjene u snimljenoj datoteci; utječu samo na nove igre) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Postavke kompanije (pohranjene u snimljenoj datoteci; utječu samo na trenutnu kompaniju) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Prikaži: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Sužava doljnju listu prikazom samo izmijenjenih postavki STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovne postavke STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredne postavke STR_CONFIG_SETTING_RESTRICT_ALL :Postavke za napredne korisnike / sve postavke STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Postavke sa drugačijim vrijednostima od osnovnih STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Postavke sa drugačijim vrijednostima od postavki vaše nove igre STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Dozvoljava popis samo ispod određene postavke STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sve vrste postavki STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Postavke klijenta (nisu spremljene prilikom snimanja; utječu na sve igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Postavke igre (spremljene prilikom snimanja; utječu samo na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Postavke igre (spremljene prilikom snimanja; utječu samo na tekuću igru) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Postavke kompanije (spremljene prilikom snimanja; utječu samo na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Postavke kompanije (spremljene prilikom snimanja; utječu samo na trenutnu kompaniju) STR_CONFIG_SETTING_OFF :Isključeno STR_CONFIG_SETTING_ON :Uključeno STR_CONFIG_SETTING_DISABLED :Isključeno STR_CONFIG_SETTING_COMPANIES_OFF :Isključeno STR_CONFIG_SETTING_COMPANIES_OWN :Vlastita tvrtka STR_CONFIG_SETTING_COMPANIES_ALL :Sve tvrtke STR_CONFIG_SETTING_NONE :Nema STR_CONFIG_SETTING_ORIGINAL :Original STR_CONFIG_SETTING_REALISTIC :Realističan STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Lijevo STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sredina STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Desno STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Najveći početni zajam: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najveći iznos koji kompanija može pozajmiti (bez uzimanja inflacije u obzir) STR_CONFIG_SETTING_INTEREST_RATE :Kamatna stopa: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Kamatna stopa zajmova; također kontrolira i inflaciju ako je uključena STR_CONFIG_SETTING_RUNNING_COSTS :Troškovi korištenja: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Postavi razinu troškova održavanja i korištenja za vozila i infrastrukturu STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Brzina gradnje: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitiraj količinu građevinskih akcija za UI-je STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Kvarovi vozila: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontroliraj kako često se mogu pokvariti loše servisirana vozila STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Množitelj za subvencije: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Postavi koliko se plaća za subvencionirane veze STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Građevinski troškovi: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Postavi razinu građevinskih troškova i troškova kupnje STR_CONFIG_SETTING_RECESSIONS :Recesije: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ukoliko je uključeno, recesija se može pojaviti svakih nekoliko godina. Tijekom recesije sva proizvodnja je značajno manja (vraća se na prethodnu razinu kada recesija završi) STR_CONFIG_SETTING_TRAIN_REVERSING :Zabrani okretanje vlakova na stanicama: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ukoliko je uključeno, vlakovi se neće okretati na stanicama koje nisu krajnje čak i ukoliko postoji kraći put do njihovog sljedećeg odredišta prilikom okretanja STR_CONFIG_SETTING_DISASTERS :Nesreće: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Uključivanje nesreća koje mogu povremeno blokirati ili uništiti vozila ili infrastrukturu STR_CONFIG_SETTING_CITY_APPROVAL :Stav gradske uprave prema restrukturiranju područja: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Odaberi koliko buka i ekološka šteta utječu na gradsku ocjenu pojedine kompanije i na daljnja građevinska djelovanja u njihovim područjima STR_CONFIG_SETTING_BUILDONSLOPES :Dopusti izgradnju na kosinama i obalama: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ukoliko je uključenom, tračnice i stanice se mogu graditi na većini nagiba. Ukoliko je isključeni, dozvoljava se njihova gradnja samo na nagibima koji se podudaraju smjerom tračnica i tada ne trebaju temelje STR_CONFIG_SETTING_AUTOSLOPE :Dopusti modeliranje zemlje ispod građevina, tračnica, itd (autonagib): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dozvoli uređivanje terena ispod građevina i pruga bez njihovog uklanjanja STR_CONFIG_SETTING_CATCHMENT :Dopusti realističnije veličine područja zahvaćanja: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Različiti dohvati za različite vrste stanica i zračnih luka STR_CONFIG_SETTING_EXTRADYNAMITE :Dopusti rušenje više cesta, mostova i tunela u vlasništvu grada: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Jednostavnije uklanjanje infrastrukture i građevina u vlasništvu grada STR_CONFIG_SETTING_TRAIN_LENGTH :Najveća dužina vlakova: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Odaberi najveću duljinu vlakova STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} polje STR_CONFIG_SETTING_SMOKE_AMOUNT :Količina dima/iskri za lokomotive: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Odaberi koliko dima ili iskri će vozila izbacivati STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model ubrzanja vlaka: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Odaberi fizikalni model ubrzanja vlakova. "Originalni" model penalizira nagibe jednako za sva vozila. "Realistični" model penalizira nagibe i zavoje ovisno o raznim karakteristikama vlaka, kao npr. dužini i vučnoj sili. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model ubrzavanja za cestovna vozila: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Odaberi fizikalni model za ubrzanje cestovnih vozila. "Originalni" model penalizira nagibe jednako za sva vozila. "Realistični" model penalizira nagibe ovisno o raznim karakteristikama vozila, npr. vučna sila. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Strmina nagiba za vlakove: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Kosina nagiba pločice za vlak. Više vrijednosti čine nagib težim za penjanje STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Strmina nagiba za cestovna vozila: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Kosina nagiba pločice za cestovna vozila. Veće vrijednosti čine nagib težim za penjanje STR_CONFIG_SETTING_FORBID_90_DEG :Zabrani vlakovima i brodovima skretanja pod 90 stupnjeva: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Okreti za 90 stupnjeva se događaju kada vodoravni dio pruge odmah nastavlja okomiti dio pruge na sljedećoj pločici, dakle čineći zaokret vlaka od 90 stupnjeva prelaskom ruba pločice umjesto uobičajenih 45 stupnjeva kod drugih kombinacija pruge. Ovo se primjenjuje i na radijus okretanja brodova STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Dopusti spajanje postaja koje nisu izravno jedna do druge {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Dozvoli dodavanje dijelova stanice bez direktog dodira s postojećim dijelovima. Potrebno pritisnuti Ctrl+Klik dok se dodaju novi dijelovi STR_CONFIG_SETTING_IMPROVEDLOAD :Koristi unaprijeđeni utovarni algoritam: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ukoliko je uključeno, vozila koja čekaju na stanici se utovaruju jedno po jedno. Utovarivanje sljedećeg vozila započinje tek kada ima dovoljno tereta da se napuni prethodno vozilo. STR_CONFIG_SETTING_GRADUAL_LOADING :Postupno utovaruj u vozila: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postupno utovarivanje vozila koristeći specifično trajanje utovara, umjesto utovarivanja odjednom sa stalnim vremenom ovisnom jedino o količini utovarenog tereta STR_CONFIG_SETTING_INFLATION :Inflacija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Uključi inflaciju u ekonomiji, gdje troškovi rastu malo brže od plaćanja STR_CONFIG_SETTING_SELECTGOODS :Dostavi teret na postaju samo ako na njoj postoji potražnja: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Isporuči teret jedino na stanicu gdje je zatražen od strane vozila koje se utovaruje. Ovo sprečava loše ocjene za terete koji nisu servisirani na stanici STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Najveća dužina mostova: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Najveća dužina za izgradnju mostova STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Najveća dužina tunela: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Najveća dužina za izgradnju tunela STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Ručna metoda izgradnje primarne industrije: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda financiranja primarnih industrija. "Ništa" znači da nije moguće financirati nijednu, "istraživanje" znači da je financiranje moguće ali da će se izgraditi na slučajno odabranom mjestu na mapi i da ne mora i uspjeti, "kao i druge industrije" znači da se primarne industrije mogu graditi kao i procesne industrije na bilo kojem mjestu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nijedna STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Kao i druge industrije STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Istraživanje STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Ravnina oko industija: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Količina ravnog prostora oko industrije. Ovo osigurava da će prazno mjesto ostati oko industrije na raspolaganju za izgradnju pruge itd. STR_CONFIG_SETTING_MULTIPINDTOWN :Dopusti više sličnih industrija po gradu: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalno, grad ne želi više od jedne industrije svake vrste. S ovom postavkom, to će omogućiti nekoliko industrija iste vrste u istom gradu STR_CONFIG_SETTING_SIGNALSIDE :Prikaži signale: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Odaberi s koje strane pruge će se postavljati signali STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Na lijevoj strani STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Na strani vožnje STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Na desnoj strani STR_CONFIG_SETTING_SHOWFINANCES :Pokaži financijski prozor na kraju godine: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ako je omogućeno, financijski prozor se otvara na kraju svake godine kako bi se omogućio jednostavan uvid u financijsko stanje tvrtke STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Za nove naredbe početna je vrijednost 'neprekidno': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalno, vozilo će se zaustaviti na svakoj stanici koju prolazi. Uključivanjem ove postavke, vozilo će se voziti kroz sve stanice na putu do konačnog odredišta ali bez zaustavljanja. Imajte na umu da se ova postavka samo definira zadane vrijednosti za nove naredbe. Bez obzira na to, pojedinačne naredbe mogu se postaviti na bilo koje postavke STR_CONFIG_SETTING_STOP_LOCATION :Naredbe za nove vlakove su zaustavljanje kod {STRING} platforme STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Mjesto gdje će se zaustaviti vlak na peronu po defaultu. 'Bliži kraj' znači blizu ulazne točka, "sredina" znači u sredini platforme, i "dalji kraj" znači daleko od ulaznog mjesta. Imajte na umu da ova postavka samo definira zadane vrijednosti za nove naredbe. Bez obzira na to, pojedinačne naredbe mogu se postaviti na bilo koju postavku STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :početka STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :sredine STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :kraja STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Nizanje cestovnih vozila (s kvantnim učincima): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Cestovna vozila moraju čekati ispred zauzetih raskrižja dok se ne rasčiste STR_CONFIG_SETTING_AUTOSCROLL :Pomakni prozor kada je miš na rubu: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Kada je uključeno, prikazna polja će se početi pomicati kada se miš nalazi blizu ruba prozora STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Isključeno STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Glavno prikazno polje, samo prikaz na punom ekranu STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Glavno prikazno polje STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Svako prikazno polje STR_CONFIG_SETTING_BRIBE :Dopusti potkupljivanje lokalne samouprave: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Omogućiti tvrtkama pokušavanje podmićivanja lokalne gradske vlasti. Ako mito je primjećeno od strane inspektora, tvrtka neće biti u mogućnosti djelovati u gradu na šest mjeseci STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Dopusti kupovinu ekskluzivnih prijevoznih prava: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ako kompanije kupi eksluzivna prava transporta za neki grad, protivničke stanice (putničke i teretne) neće dobivati ništa tereta tijekom cijele godine STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dozvoli financiranje zgrada: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dozvoli kompanijama davanje novca gradovima za financiranje novih kuća STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dozvoli financiranje rekonstrukcije lokalnih cesta: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Dozvoli kompanijama davanje novca gradovima za cestovnu rekonstrukciju radi sabotiranja cestovnog prijevoza u gradu STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Dopusti slanje novca drugim tvrtkama: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Dozvoli transfere novca između kompanija u načinu igre za više igrača STR_CONFIG_SETTING_FREIGHT_TRAINS :Težinski množitelj za teret za simulaciju teških vlakova: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Odredi utjecaj prijevoza tereta u vlakovima. Veća vrijednost čini prijevoz tereta zahtjevnijim za vlakove, pogotovo na brdima STR_CONFIG_SETTING_PLANE_SPEED :Faktor brzine zrakoplova: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Postavite relativnu brzinu zrakoplova u odnosu na ostale vrste vozila, kako bi se smanjio iznos prihoda od prijevoza zrakoplovom STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Broj padova zrakoplova: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Odredi šansu za događanje zrakoplovne nesreće STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ništa STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Smanjeno STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalno STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dopusti prolazne postaje na cestama u vlasništvu gradova: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dozvoli izgradnju prolaznih stanica za cestama u vlasništvu grada STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Dopusti prolazne postaje na cestama koje su u vlasništvu konkurencije: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Dozvoli izgradnju prolaznih stanica na cestama u vlasništvu drugih kompanija STR_CONFIG_SETTING_ADJACENT_STATIONS :Dopusti izgradnju pridruženih postaja: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Dozvoli dodirivanje različitih stanica STR_CONFIG_SETTING_DYNAMIC_ENGINES :Omogući više setova NewGRF strojeva: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opcija za kompatibilnost starih NewGRF-ova. Ne isključujte osim ako točno znate što radite! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Mijenjanje ovih postavki nije moguće kada postoje vozila STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Održavanje infrastrukture: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kada je omogućeno, infrastruktura uzrokuje troškove održavanja. Cijena raste više nego proporcionalno s veličinom mreže, čime utječe veće tvrtke više od manjih STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Zračne luke nikad ne ističu: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Uključivanjem ove postavke čini svaku vrstu aerodroma dostupnom zauvijek nakon uvođenja STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Upozori ako je vozilo izgubljeno: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Uključi poruke o vozilima koje ne mogu naći put do svog odredišta STR_CONFIG_SETTING_ORDER_REVIEW :Pregledaj naredbe vozila: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Kada je omogućeno, naredbe vozila redovito se provjeravaju, a neki očiti problemi biti će prikazani u poruci novosti kada budu otkriveni STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Ne STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Da ali izdvoji zaustavljena vozila STR_CONFIG_SETTING_ORDER_REVIEW_ON :Od svih vozila STR_CONFIG_SETTING_WARN_INCOME_LESS :Upozori ako prihod vozila postane negativan: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kada je uključeno, poruka vijesti se prikazuje kada vozilo nije uprihodilo ništa tijekom kalendarske godine STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozila ne zastarjevaju: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kada je uključeno, svi modeli vozila zauvijek ostaju dostupni nakon njihovog uvođenja STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatski obnovi vozilo kada postane staro: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kada je uključeno, vozilo kojem se bliži kraj vijeka trajanja se automatski obnavlja ukoliko su uvjeti za obnavljanje ispunjeni STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatska obnova kada je vozilo {STRING} najveće starosti STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativna starost kod koje bi trebalo razmotriti automatsko obnavljanje vozila STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mjeseci prije STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mjeseci nakon STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum novca potrebnih za automatsko obnavljanje: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimalni iznos novca koji mora ostati u banci prije razmatranja automatske obnove vozila STR_CONFIG_SETTING_ERRMSG_DURATION :Trajanje poruke s greškom: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trajanje prikaza poruke s greškom u crvenom prozoru. Uzmite u obzir da se neke (kritične) poruke s greškom ne zatvaraju automatski nakon isteka ovog vremena, nego ih je potrebno zatvoriti ručno STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekundi STR_CONFIG_SETTING_HOVER_DELAY :Prikaži pojašnjenja alata: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Odgoda prije prikaza objašnjenja alata kada se miš postavi iznad nekog elementa sučelja. Alternativno, objašnjena alata se mogu vezati uz desnu tipku na mišu STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Lebdi na {COMMA} sekundi STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Desni klik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Pokaži broj stanovnika u oznaci imena grada: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikaži populaciju gradova u njihovim oznakama na mapi STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debljina linija u grafikonima: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debljina linije u grafikonima. Tanja linija je preciznija za čitanje, deblja linija je lakša za vidjeti i boje su lakše za razabrati STR_CONFIG_SETTING_LAND_GENERATOR :Generator zemlje: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Izvorni STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Najveća udaljenost Rafinerija Nafte od rubova: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerije nafte se grade samo uz rubove mape odnosno na obali za otočne mape STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Visina linije snijega: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grubost terena (samo TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Vrlo glatko STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glatko STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Grubo STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Vrlo grubo STR_CONFIG_SETTING_TREE_PLACER :Algoritam za sađenje drveća: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Nijedan STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Izvorni STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Unaprijeđen STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotacija visinske karte: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Obrnuto od smjera kazaljke na satu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :U smjeru kazaljke na satu STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Visinski nivo koji ravna mapa u scenariju dobiva: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Omogući teraformiranje polja na rubovima karte: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ako je isključeno, rubovi mape će uvijek biti ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedna ili više pločica na sjevernom rubu nisu prazne STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedna ili više pločica na jednom od rubova nije voda STR_CONFIG_SETTING_STATION_SPREAD :Najveći raspon stanice: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Najveća površina na kojoj mogu biti dijelovi jedne stanice. Uzmite u obzir da visoke vrijednosti mogu usporiti igru STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatski servisiraj helikoptere na heliodromima: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Servisiraj helikoptere nakon svakog slijetanja, čak i ako nema depoa na aerodromu STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Poveži alatnu traku za krajolik s alatnim trakama za željeznicu/ceste/vodu/zračne luke: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Kada se otvara alatna traka za građenje neke vrste transporta, istodobno se otvara i alatna traka za uređivanje terena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Boja polja korištena na maloj karti: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Boja terena na maloj mapi STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :{G=female}Zelena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :{G=female}Tamno zelena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :{G=female}Ljubičasta STR_CONFIG_SETTING_REVERSE_SCROLLING :Promijeni smjer klizanja: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Ponašanje kod pomicanja mape sa desnom tipkom na mišu. Kada je isključeno, miš pomiče kameru. Kada je uključeno, miš pomiče mapu STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glatko klizanje kroz mini pogled: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontroliraj kako se glavni prikaz pomiče na neku lokaciju kada se klikne na malu mapu ili kada se izda naredba za pomicanje na određeni objekt na mapi. Ako je uključeno, prikaz se pomiče glatko, ako je isključeno, prikaz odmah preskoči na ciljnu lokaciju STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaži mjerni naputak prilikom korištenja raznih alata za izgradnju: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Prikaži udaljenosu u pločicama i visinsku razliku kod povlačenja prilikom operacija gradnje STR_CONFIG_SETTING_LIVERIES :Pokaži tvrtkine boje: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontroliraj korištenje shema boja tipa vozila za određena vozila (u suprotnosti sa shemama boja kompanija) STR_CONFIG_SETTING_LIVERIES_NONE :Nijedna STR_CONFIG_SETTING_LIVERIES_OWN :Vlastita tvrtka STR_CONFIG_SETTING_LIVERIES_ALL :Sve tvrtke STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferiraj ekipni razgovor s :{STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Prebacivanje vezivanja kompanijskog internog i javnog razgovota na odnosno STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funkcija kotačića za klizanje: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Uključi pomicanje sa dvodimenzionalnim kotačićima miša STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zumiraj kartu STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Kliži kartom STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Isključeno STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Brzina kotačića za klizanje: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroliraj osjetljivost pomicanja kotačićima miša STR_CONFIG_SETTING_OSK_ACTIVATION :Tipkovnica na ekranu: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Odaberi metodu otvaranja tipkovnice na ekranu za unošenje teksta u polja korištenjem samo pokazujući uređaj. Ovo je namijenjeno malim uređajima bez prave tipkovnice STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Isključeno STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvostruki klik STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Jedan klik (kada je usredotočen) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Jedan klik (odmah) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulacija desnog klika mišem: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Odaberi metodu imitiranja klika na desnu tipku miša STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Isključeno STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrolanje lijevim klikom: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Uključi pomicanje mape povlačenjem sa lijevom tipkom miša. Ovo je posebno korisno kada se koristi ekran na dodir za pomicanje STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Koristi {STRING} format datuma za ime snimljene pozicije STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format datuma u imenima datoteka sa snimljenom igrom STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dugo (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kratko (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Osnovna paleta će biti postavljena za NewGRFove koji ne odrede paletu: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Osnovna paleta koju će koristiti NewGRF-ovi koji nemaju specificirano koju paletu trebaju STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Osnovna (D) paleta boja STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) paleta boja STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatski pauziraj prilikom pokretanja nove igre: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kada je uključeno, igra će se automatski pauzirati priliko pokretanja nove igre, dozvoljavajući bolje proučavanje mape STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Kod pauze dozvoli: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Odaberi koje se akcije mogu koristiti dok je igra pauzirana STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nijedna akcija STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Sve ne-konstrukcijske akcije STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Sve osim akcija za izmjenu krajolika STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Sve akcije STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Koristi napredni popis vozila: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Uključi korištenje naprednih lista vozila za grupiranje vozila STR_CONFIG_SETTING_LOADING_INDICATORS :Koristi pokazatelje utovara: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Odaberi da li će prikazivači utovara biti prikazani iznad vozila koja se utovaruju ili iznad vozila koja se istovaruju STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Pokaži vozni red u otkucajima rađe nego u danima: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Prikaži trajanje putovanja u voznim redovima u otkucajima igre umjesto u danima STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Pokaži dolaske i odlaske u voznim redovima: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Prikaži predviđena vremena dolaska i odlaska u voznim redovima STR_CONFIG_SETTING_QUICKGOTO :Brzo kreiranje naredbi vozila: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pred-odaberi kursor naredbe "otiđi na" kod otvaranja prozora s naredbama STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Inicijalna vrsta pruge (poslije nove igre/podizanja igre): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Vrsta željeznice koja će biti odabrana prilikom pokretanja ili učitavanja igre. "Prva dostupna" odabire najstariju vrstu, "zadnja dostupna" odabire najnoviju vrstu, "najčešće korištena" odabire vrstu koja je trenutno najviše u upotrebi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Prva dostupna STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Zadnja dostupna STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Najčešće korištena STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Pokaži rezervirane tračnice: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Prikaži rezervirane pruge u drugoj boji kako bi se olakšalo rješavanje problema sa vlakovima koji ne žele ući u određenu dionicu puta STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Zadrži alate za izradu aktivnima nakon upotrebe: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Zadrži otvorenim alate za mostove, tunele itd. i nakon upotrebe STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupiraj troškove u financijskom prozoru tvrtke: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Odredi izgled prozora troškova kompanije STR_CONFIG_SETTING_SOUND_TICKER :Skraćene novosti: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Sviraj zvuk kod skraćenih poruka novosti STR_CONFIG_SETTING_SOUND_NEWS :Novine: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Sviraj zvuk kod prikaza novina STR_CONFIG_SETTING_SOUND_NEW_YEAR :Kraj godine: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Sviraj zvučne efekte na kraju godine sumirajući uspjeh kompanije tijekom godine uspoređujući ga sa prethodnom godinom STR_CONFIG_SETTING_SOUND_CONFIRM :Gradnja: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Sviraj zvučne efekte kod uspješne gradnje ili drugih akcija STR_CONFIG_SETTING_SOUND_CLICK :Klik na dugmadi: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Bip kod klikanja na dugmad STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofe/nesreće: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Sviraj zvučne efekte nesreća i katastrofa STR_CONFIG_SETTING_SOUND_VEHICLE :Vozila: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Sviraj zvučne efekte vozila STR_CONFIG_SETTING_SOUND_AMBIENT :Okolina: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Sviraj zvučne efekte okoline pejzaža, industrija i gradova STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Isključi gradnju infrastrukture kada odgovarajuća vozila nisu dostupna: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Kada je uključeno, infrastruktura je dostupna samo ako su dostupna i vozila za nju, sprečavajući trošenje vremena i novca na neupotrebljivu infrastrukturu STR_CONFIG_SETTING_MAX_TRAINS :Maksimalan broj vlakova po kompaniji: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Najveći broj vlakova koje može imati kompanija STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimalan broj cestovnih vozila po kompaniji: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Najveći broj cestovnih vozila koje može imati kompanija STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimalan broj zrakoplova po kompaniji: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Najveći broj zrakoplova koje može imati kompanija STR_CONFIG_SETTING_MAX_SHIPS :Maksimalan broj brodova po kompaniji: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Najveći broj brodova koje može imati kompanija STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Isključi vlakove za računalo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Uključivanjem ove postavke, računalo-igrač neće moći koristiti vlakove STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Isključi cestovna vozila za računalo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Uključivanjem ove postavke, računalo-igrač neće moći koristiti cestovna vozila STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Isključi zrakoplove za računalo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Uključivanjem ove postavke, računalo-igrač neće moći koristiti zrakoplove STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Isključi brodove za računalo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Uključivanjem ove postavke, računalo-igrač neće moći koristiti brodove STR_CONFIG_SETTING_AI_PROFILE :Profil osnovnih postavki: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Odaberi koji profil postavki će se koristiti za nasumične UI-je ili za početne vrijednosti kada se dodaje nova UI ili Skripta Igre STR_CONFIG_SETTING_AI_PROFILE_EASY :Lako STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Srednje STR_CONFIG_SETTING_AI_PROFILE_HARD :Teško STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Dopusti UI u mrežnoj igri: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Dozvoli UI računalnim-igračima da sudjeluju u igrama za više igrača STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#op-kodova prije suspendiranja skripti: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Najveći broj računalnih koraka koje skripta može poduzeti u jednom krugu STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servisni su intervali u postotcima: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Odaberi da li će se servisiranje vozila pokrenuti nakon isteka vremena od zadnjeg servisa ili padom pouzdanosti za određenu vrijednost od najveće pouzdanosti STR_CONFIG_SETTING_SERVINT_TRAINS :Zadani interval servisiranja za vlakove: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Postavi osnovni interval servisa za nova pružna vozila, ako nije postavljen drugi specifični interval za određeno vozilo STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dana/% STR_CONFIG_SETTING_SERVINT_DISABLED :Isključeno STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Zadani interval servisiranja za cestovna vozila: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Postavi osnovni interval servisa za nova cestovna vozila, ako nije postavljen drugi specifični interval za određeno vozilo STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Zadani interval servisiranja za zrakoplove: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Postavi osnovni interval servisa za nove zrakoplove, ako nije postavljen drugi specifični interval za određeno vozilo STR_CONFIG_SETTING_SERVINT_SHIPS :Zadani interval servisiranja za brodove: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Postavi osnovni interval servisa za nove brodove, ako nije postavljen drugi specifični interval za određeno vozilo STR_CONFIG_SETTING_NOSERVICE :Isključi servisiranje kada su kvarovi postavljeni na nula: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Kada je uključeno, vozila se ne servisiraju kada se ne mogu pokvariti STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Omogući ograničenje brzine za vagone: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Kada je uključeno, koristiti će se i limit brzine vagona kod određivanja najveće brzine nekog vlaka STR_CONFIG_SETTING_DISABLE_ELRAILS :Onemogući električnu prugu: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Uključivanjem ove postavke, isključuje se potreba elektrificiranja pruge da bi po njoj mogli voziti električni vlakovi STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Dolazak prvog vozila na postaju igrača: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Prikaži novine kada prvo vozilo dođe na stanicu novog igrača STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Dolazak prvog vozila na postaju suparnika: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikaži novine kada prvo vozilo dođe na suparnikovu stanicu STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Nesreće / katastrofe: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Prikaži novine kod nesreća ili katastrofa STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Podaci vezani za tvrtku: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikai novine kada se pojavi nova kompanije ili kada kompanije riskiraju bankrot STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Otvaranje industrije: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Prikaži novine kada se nove industrije otvaraju STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zatvaranje industrije: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaži novine kada se industrije zatvaraju STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Promjene u gospodarstvu: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaži novine vezano za globalne promjene u ekonomiji STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Promjene u proizvodnji industrija koje opslužuje tvrtka: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži novine kod promjene proizvodnih nivoa industrija koje servisira kompanija STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Promjene u proizvodnji industrija koje opslužuju suparnici: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Prikaži novine kod promjene proizvodnih nivoa industrija koje servisiraju suparnici STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Ostale izmjene u proizvodnji industrija: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Prikaži novine kod promjene proizvodnih nivoa industrija koje ne servisira kompanija ili suparnici STR_CONFIG_SETTING_NEWS_ADVICE :Savjeti / informacije o vozilima tvrtke: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Prikaži poruke o vozilima koje trebaju pozornost STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nova vozila: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Prikaži novine kada neki novi tip vozila postane dostupan STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Promjene u prihvaćanju tereta: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Prikaži poruke o stanicama koje mijenjaju prihvaćanje nekih tereta STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencije: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Prikaži novine vezano za događaje o subvencijama STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Opće informacije: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Prikaži novine vezano za opće događaje kao za kupnju ekskluzivnih prava ili financiranje rekonstrukcije cesta STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Isključeno STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Sažetak STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Sve STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Vijesti u boji pojavljuju se: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Godina u kojoj će se novine početi izdavati u boji. Prije ove godine, koriste se crno/bijele novine STR_CONFIG_SETTING_STARTING_YEAR :Početna godina: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Uključi tečnu ekonomiju (više manjih izazova): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kada je uključeno, promjene u industrijskoj proizvodnji su češće ali u manjim rasponima. Ova postavka obično nema efekta ukoliko su industrije postavljene iz nekog NewGRF-a STR_CONFIG_SETTING_ALLOW_SHARES :Dopusti kupovanje udjela u drugim tvrtkama: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kada je uključeno, dozvoljava se kupnja i prodaja dionica kompanija. Dionice će postati dostupne samo za kompanije određene starosti STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Postotak profita za dionicu koji se plaća kod sistema feeder-a: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Postotak prihoda koji će biti predan srednjim dionicama prijevoza feeder sustavima, daje više kontrole nad prihodima STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Kod povlačenja, postavi signale svakih: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Postavi razmak između signala koji će se graditi do sljedeće prepreke (signal, raskrižje), ukoliko se signali povlače STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} polje STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Prilikom povlačenja, zadrži odabrani razmak između signala: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Odabire ponašanje kod postavljanja signala putem Ctrl+povlačenja. Ukoliko je isključeno, signali se postavljaju oko tunela i mostova kako bi se izbjegla veća područja bez signala. Ukoliko je uključeno, signali se postavljaju svakih N pločica, olakšavajući poravnanje signala kod paralelnih pruga STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatski izgradi semafore prije: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Postavi godinu kada će se koristiti električni signali za pruge. Prije ove godine, koristiti će se ne-električni signali (imaju iste funkcije samo izgledaju drugačije) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Omogući signalni GUI: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Prikaži prozor za odabir tipova signala za gradnju, umjesto samo prikaza tipa signala bez prozora sa Ctrl+klikanjem kod gradnje STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Predodređeni signal za izgradnju: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Osnovni tip signala za korištenje STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokirajući signali STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Putni signali STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Jednosmjerni putni signali STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Kruži kroz vrste signala: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Odaberi kroz koje tipove signala se može kružiti, kod Ctrl+klikanja na izgrađeni signal uz pomoć alata za signale STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Samo blokirajući signali STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Samo putni signali STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Sve STR_CONFIG_SETTING_TOWN_LAYOUT :Dizajn ceste za nove gradove: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Izgled cestovne mreže gradova STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originalno STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bolje ceste STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 mreža STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 mreža STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Nasumično STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Gradovi mogu graditi ceste: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Dozvoli gradovima građenje cesta za rast i širenje. Isključi za sprečavanje da gradske vlasti same grade ceste STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Gradovi smiju graditi pružne prijelaze: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Uključivanje ove postavke dozvoljava se gradovima da grade cestovno-pružne prijelaze STR_CONFIG_SETTING_NOISE_LEVEL :Omogući određivanje razine buke za zračne luke od strane gradova: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kada je ova postavka isključena, mogu postojati dve zračne luke u svakom gradu. Kada je ova postavka uključena, broj zračnih luka u nekom gradu je limitirana količinom dozvoljene buke u gradu, koja ovisi o populaciji i udaljenosti i veličini zračnih luka STR_CONFIG_SETTING_TOWN_FOUNDING :Osnivanje gradova tijekom igre: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Uklučivanje ove postavke dozvoljava igračima osnivanje novih gradova tijekom igre STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zabranjeno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Dopušteno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Dopušteno, proizvoljan raspored grada STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Smještaj drveća u igri: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroliraj nasumično pojavljivanje stabala tijekom igre. Ovo može utjecati na industrije koje ovise o rastu stabala, npr. pilane STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nigdje {RED}(uništava pilanu) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Samo u kišnim šumama STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Posvuda STR_CONFIG_SETTING_TOOLBAR_POS :Položaj glavne alatne trake: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Vodoravna pozicija glavne alatne trake na vrhu ekrana STR_CONFIG_SETTING_STATUSBAR_POS :Pozicija status trake: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Vodoravna pozicija statusne trake na dnu ekrana STR_CONFIG_SETTING_SNAP_RADIUS :Radius zahvata prozora: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Razmak između prozora prije nego se pomicani prozor automatski poravna sa drugima prozorima u blizini STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksela STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Isključeno STR_CONFIG_SETTING_SOFT_LIMIT :Najveći broj neljepljivih prozora: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Broj ne-fiksnih otvorenih prozora prije nego se stariji prozori ne počnu automatski zatvarati da bi napravili mjesta za nove prozore STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :isključeno STR_CONFIG_SETTING_ZOOM_MIN :Najveći nivo zumiranja prema unutra: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Najveći nivo zumiranja prema unutra u prikazima. Uzmite u obzir da uključivanje većih nivoa zumiranja prema unutra povećava i korištenje zahtjeva za memorijom STR_CONFIG_SETTING_ZOOM_MAX :Najveći nivo zumiranja prema van: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Najveći nivo zumiranja na van za prikaze. Veći nivoi zumiranja na van mogu prouzročiti usporavanje igre kada se koriste STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normalno STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Brzina rasta gradova: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Brzina rasta gradova STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Nema STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sporo STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normalno STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Brzo STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Vrlo brzo STR_CONFIG_SETTING_LARGER_TOWNS :Postotak naselja koji će postati gradovi: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Broj naselja koji će postati grad, na taj način naselje koje počinje veći i raste brže STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 od {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nijedan STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Početni množitelj veličine grada: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Prosječna veličina gradova u donosu na naselja kod početka igre STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Ukloni besmislene cestovne elemente tijekom izgradnje prometnica: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Uklanjanje slijepih ulica kod financirane rekonstrukcije cesta STR_CONFIG_SETTING_GUI :{ORANGE}Sučelje STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Izgradnja STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila STR_CONFIG_SETTING_STATIONS :{ORANGE}Postaje STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomija STR_CONFIG_SETTING_AI :{ORANGE}Suparnici STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Postavke prikaza STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakcija STR_CONFIG_SETTING_SOUND :{ORANGE}Zvučni efekti STR_CONFIG_SETTING_NEWS :{ORANGE}Novosti i poruke STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signali STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Tretiranje tereta STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računalni igrači STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Auto-obnavljanje STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servisiranje STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Rutanje STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlakovi STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Gradovi STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrije STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Preporučljivo) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pronalaženje putanje za vlakove: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pronalazač puteva koji će se koristiti za vlakove STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pronalaženje putanje za cestovna vozila: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pronalazač puteva koji će se koristiti za cestovna vozila STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pronalaženje putanje za brodove: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pronalazač puteva koji će se koristiti za brodove STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatsko okretanje na signalima: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Dozvoli vlakovima okretanje kod signala ako tamo čekaju duže vrijeme STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Promijeni vrijednost postavke # Config errors STR_CONFIG_ERROR :{WHITE}Greška u konfiguraciji datoteke... STR_CONFIG_ERROR_ARRAY :{WHITE}... greška u nizu '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... pogrešna vrijednost '{STRING}' za '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... prateći znakovi na kraju postavki '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoriram NewGRF '{STRING}': duplikat od GRF ID sa '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoriram pogrešni NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nije pronađeno STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nesigurno za statičku uporabu STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistemski NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nekompatibilno sa ovom verzijom OpenTTD-a STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nepoznat STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nivo sažimanja '{STRING}' nije važeći STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format snimljene igre '{STRING}' nije dostupan. Vraćam u '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... zaobilazim Osnovni Grafički set '{STRING}': nije pronađen STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... zaobilazim Osnovni Zvukovni set '{STRING}': nije pronađen STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... zaobilazim Osnovni Muzički set '{STRING}': nije pronađen STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nedostaje memorije STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Dodjeljivanje {BYTES} predmemorije spriteova nije uspjelo. Predmemorija spriteova je smanjena na {BYTES}. Ovo će smanjiti performanse OpenTTD-a. Za smanjivanje potreba memorije you možete pokušati isključiti 32bpp grafiku i/ili razine zumiranja. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nova igra STR_INTRO_LOAD_GAME :{BLACK}Učitaj igru STR_INTRO_PLAY_SCENARIO :{BLACK}Igraj scenarij STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Igraj visinsku kartu STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor scenarija STR_INTRO_MULTIPLAYER :{BLACK}Više igrača STR_INTRO_GAME_OPTIONS :{BLACK}Postavke igre STR_INTRO_HIGHSCORE :{BLACK}Tablica najboljih rezultata STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredne postavke STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Postavke STR_INTRO_ONLINE_CONTENT :{BLACK}Provjeri online sadržaj STR_INTRO_SCRIPT_SETTINGS :{BLACK}Postavke UI-ja/Skripte igre STR_INTRO_QUIT :{BLACK}Izlaz STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Započni novu igru. Ctrl+klik preskače konfiguriranje karte STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Učitaj spremljenu igru STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Pokreni novu igru, koristeći visinsku kartu kao krajolik STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Započni novu igru koristeći proizvoljni scenarij STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Izradi proizvoljni igrački svijet/scenarij STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Pokreni igru sa više igrača STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Odaberi 'blagi' stil krajolika STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Odaberi 'subarktički' stil krajolika STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Odaberi 'subtropski' stil krajolika STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Odaberi 'zemlju igračaka' za stil krajolika STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikaži postavke igre STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikaži tablicu najboljih rezultata STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Prikaži napredne postavke STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikaži postavke NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Provjeri novi i nadograđeni sadržaj za preuzimanje STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikaži postavke UI-ja/Skripte igre STR_INTRO_TOOLTIP_QUIT :{BLACK}Izzađi it 'OpenTTD'-a STR_INTRO_TRANSLATION :{BLACK}Ovom prijevodu nedostaje {NUM} slijed. Molimo, pomognite učiniti OpenTTD boljim tako da se prijavite kao prevoditelj. Pogledajte readme.txt za detalje. # Quit window STR_QUIT_CAPTION :{WHITE}Izlaz STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Jesi li siguran da želiš napustiti OpenTTD i vratiti se u {STRING}e? STR_QUIT_YES :{BLACK}Da STR_QUIT_NO :{BLACK}Ne # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Napusti igru STR_ABANDON_GAME_QUERY :{YELLOW}Jesi li siguran da želiš napustiti ovu igru? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Jesi li siguran da želiš napustiti ovaj scenarij? # Cheat window STR_CHEATS :{WHITE}Varanje STR_CHEATS_TOOLTIP :{BLACK}Kvačice ukazuju na to jesi li koristio ovo varanje prije STR_CHEATS_WARNING :{BLACK}Upozorenje! Upravo se spremaš izdati svoj kolege natjecatelje. Imaj na umu da se takva sramota pamti zauvijek STR_CHEAT_MONEY :{LTBLUE}Povećaj novce za iznos {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Igraj kao tvrtka: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magični buldožer (uklanja industrije, nepokretne objekte): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneli se mogu ukrštavati međusobno: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Veliki avioni se ne će rušiti (često) na malim zračnim lukama: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Blagi krajolik STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktički krajolik STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Suptropski krajolik STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Krajolik 'zemlja igračaka' STR_CHEAT_CHANGE_DATE :{LTBLUE}Promijeni datum: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Promijeni tekuću godinu STR_CHEAT_SETUP_PROD :{LTBLUE}Omogući izmjeni produkcijskih vrijednosti: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nova boja STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Pokaži generalne sheme boja STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Pokaži sheme boja za vlak STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaži sheme boja za cestovno vozilo STR_LIVERY_SHIP_TOOLTIP :{BLACK}Pokaži sheme boja za brod STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Pokaži sheme boja za zrakoplov STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izaberi primarnu boju za odabranu shemu. Ctrl+Klik odabire tu boju za sve sheme. STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Odaberi sekundardnu boju za odabranu shemu. Ctrl+Klik odabire tu boju za sve sheme. STR_LIVERY_PANEL_TOOLTIP :{BLACK}Izaberi shemu boja za promjenu, ili višestruke sheme pomoću Ctrl+klik. Klikni na kućicu kako bi odredio uporabu sheme STR_LIVERY_DEFAULT :Standardna boja STR_LIVERY_STEAM :Parna lokomotiva STR_LIVERY_DIESEL :Dizelska lokomotiva STR_LIVERY_ELECTRIC :Električna lokomotiva STR_LIVERY_MONORAIL :Jednotračna lokomotiva STR_LIVERY_MAGLEV :Lokomotiva Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Putnička kola (parna) STR_LIVERY_PASSENGER_WAGON_DIESEL :Putnička kola (dizelska) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Putnička kola (električna) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Putnička kola (Monorail) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Putnička kola (Maglev) STR_LIVERY_FREIGHT_WAGON :Teretni vagon STR_LIVERY_BUS :Autobus STR_LIVERY_TRUCK :Kamion STR_LIVERY_PASSENGER_SHIP :Putnički trajekt STR_LIVERY_FREIGHT_SHIP :Teretni brod STR_LIVERY_HELICOPTER :Helikopter STR_LIVERY_SMALL_PLANE :Mali zrakoplov STR_LIVERY_LARGE_PLANE :Veliki zrakoplov STR_LIVERY_PASSENGER_TRAM :Putnički tramvaj STR_LIVERY_FREIGHT_TRAM :Teretni tramvaj # Face selection window STR_FACE_CAPTION :{WHITE}Izbor lica STR_FACE_CANCEL_TOOLTIP :{BLACK}Odustani od izbora novog lica STR_FACE_OK_TOOLTIP :{BLACK}Prihvati izbor novog lica STR_FACE_MALE_BUTTON :{BLACK}Muško STR_FACE_MALE_TOOLTIP :{BLACK}Odaberi muška lica STR_FACE_FEMALE_BUTTON :{BLACK}Žensko STR_FACE_FEMALE_TOOLTIP :{BLACK}Odaberi ženska lica STR_FACE_NEW_FACE_BUTTON :{BLACK}Novo lice STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Generiraj nasumično novo lice STR_FACE_ADVANCED :{BLACK}Napredno STR_FACE_ADVANCED_TOOLTIP :{BLACK}Napredan izbor lica STR_FACE_SIMPLE :{BLACK}Jednostavno STR_FACE_SIMPLE_TOOLTIP :{BLACK}Jednostavan izbor lica STR_FACE_LOAD :{BLACK}Učitaj STR_FACE_LOAD_TOOLTIP :{BLACK}Učitaj omiljeno lice STR_FACE_LOAD_DONE :{WHITE}Tvoje omiljeno lice je učitano iz OpenTTD konfiguracijske datoteke. STR_FACE_FACECODE :{BLACK}Broj igračevog lica STR_FACE_FACECODE_TOOLTIP :{BLACK}Pogledaj i/ili postavi broj lica predsjednika kompanije STR_FACE_FACECODE_CAPTION :{WHITE}Pogledaj i/ili postavi broj predsjednikovog lica STR_FACE_FACECODE_SET :{WHITE}Novi kod za broj igračevog lica je postavljen STR_FACE_FACECODE_ERR :{WHITE}Nemoguće namjestiti broj predsjednikovog lica - mora biti broj između 0 and 4,294,967,295! STR_FACE_SAVE :{BLACK}Spremi STR_FACE_SAVE_TOOLTIP :{BLACK}Izaberi omiljeno lice STR_FACE_SAVE_DONE :{WHITE}Ovo lice bit će spremljeno kao tvoje omiljeno u OpenTTD konfiguracijsku datoteku. STR_FACE_EUROPEAN :{BLACK}Europljanin STR_FACE_SELECT_EUROPEAN :{BLACK}Izaberi europska lica STR_FACE_AFRICAN :{BLACK}Afrikanac STR_FACE_SELECT_AFRICAN :{BLACK}Izaberi afrička lica STR_FACE_YES :Da STR_FACE_NO :Ne STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Uključi brkove ili naušnicu STR_FACE_HAIR :Kosa: STR_FACE_HAIR_TOOLTIP :{BLACK}Promijeni kosu STR_FACE_EYEBROWS :Obrve: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Promijeni obrve STR_FACE_EYECOLOUR :Boja očiju: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Promijeni boju očiju STR_FACE_GLASSES :Naočale: STR_FACE_GLASSES_TOOLTIP :{BLACK}Omogući naočale STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Promijeni naočale STR_FACE_NOSE :Nos: STR_FACE_NOSE_TOOLTIP :{BLACK}Promijeni nos STR_FACE_LIPS :Usne: STR_FACE_MOUSTACHE :Brkovi: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Promijeni usne ili brkove STR_FACE_CHIN :Brada: STR_FACE_CHIN_TOOLTIP :{BLACK}Promijeni bradu STR_FACE_JACKET :Jakna STR_FACE_JACKET_TOOLTIP :{BLACK}Promijeni jaknu STR_FACE_COLLAR :Kragna: STR_FACE_COLLAR_TOOLTIP :{BLACK}Promijeni kragnu STR_FACE_TIE :Kravata: STR_FACE_EARRING :Naušnica: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Promijeni kravatu ili naušnicu # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Više igrača STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Veza: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izaberi između internetske igre ili igre preko lokalne mreže (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ime igrača: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ovo je ime po kojem će te drugi igrači raspoznavati STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ime STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Ime igre STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klijenti STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klijenata online / klijenata maks{}Tvrtki online / tvrtki maks. STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Veličina karte STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Veličina karte za igru{}Klikni kako bi sortirao prema području STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Trenutni datum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Godine STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Broj godina{}koliko igra traje STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Jezik, verzija poslužitelja, itd. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikni na igru s popisa kako bi ju odabrao STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Poslužitelj kojemu si zadnji put pristupio: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klikni kako bi izabrao poslužitelj koji si igrao zadnji put STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFO O IGRI STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klijenti: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Jezik: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Krajolik: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Veličina karte: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Verzija poslužitelja: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adresa poslužitelja: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Datum početka: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Trenutni datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Zaštićeno zaporkom! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}POSLUŽITELJ NEDOSTUPAN STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}POSLUŽITELJ PUN STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}RAZLIKA U VERZIJAMA STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF RAZLIKA STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Pridruži se igri STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Osvježi poslužitelj STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Osvježi podatke o poslužitelju STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Pronađi poslužitelj STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Pronađi poslužitelje u mreži STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj poslužitelj STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Dodaje poslužitelj na popis koji će uvijek biti provjeren postoje li igre u tijeku. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Pokreni poslužitelj STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Pokreni vlastiti poslužitelj STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Upiši svoje ime STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Unesi adresu domaćina # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Započni novu igru za više igrača STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Ime igre: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Ime igre bit će prikazno drugim igračima u izborniku za odabir igre s više igrača STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Postavi zaporku STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zaštiti svoju igru pomoću zaporke ukoliko ne želiš da bude javno dostupna STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (oglasi) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klijen{P t ta ata} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks klijenata: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izaberi maksimalan broj klijenata. Ne moraju sva mjesta biti popunjena. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} tvrtk{P a e i} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks tvrtki: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ograniči poslužitelj na određeni broj tvrtki STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} gledatelj{P "" a a} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks promatrača: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ograniči poslužitelj na određeni broj gledatelja STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Jezik kojim se govori: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Drugi igrači znat će kojim se jezikom govori na poslužitelju STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Upišite ime mrežne igre # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Bilo koji STR_NETWORK_LANG_ENGLISH :Engleski STR_NETWORK_LANG_GERMAN :Njemački STR_NETWORK_LANG_FRENCH :Francuski STR_NETWORK_LANG_BRAZILIAN :Brazilski STR_NETWORK_LANG_BULGARIAN :Bugarski STR_NETWORK_LANG_CHINESE :Kineski STR_NETWORK_LANG_CZECH :Češki STR_NETWORK_LANG_DANISH :Danski STR_NETWORK_LANG_DUTCH :Nizozemski STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finski STR_NETWORK_LANG_HUNGARIAN :Mađarski STR_NETWORK_LANG_ICELANDIC :Islandski STR_NETWORK_LANG_ITALIAN :Talijanski STR_NETWORK_LANG_JAPANESE :Japanski STR_NETWORK_LANG_KOREAN :Korejski STR_NETWORK_LANG_LITHUANIAN :Litavski STR_NETWORK_LANG_NORWEGIAN :Norveški STR_NETWORK_LANG_POLISH :Poljski STR_NETWORK_LANG_PORTUGUESE :Portugalski STR_NETWORK_LANG_ROMANIAN :Rumunjski STR_NETWORK_LANG_RUSSIAN :Ruski STR_NETWORK_LANG_SLOVAK :Slovački STR_NETWORK_LANG_SLOVENIAN :Slovenski STR_NETWORK_LANG_SPANISH :Španjolski STR_NETWORK_LANG_SWEDISH :Švedski STR_NETWORK_LANG_TURKISH :Turski STR_NETWORK_LANG_UKRAINIAN :Ukrajinski STR_NETWORK_LANG_AFRIKAANS :afrikaanski STR_NETWORK_LANG_CROATIAN :hrvatski STR_NETWORK_LANG_CATALAN :katalonski STR_NETWORK_LANG_ESTONIAN :estonski STR_NETWORK_LANG_GALICIAN :galicijski STR_NETWORK_LANG_GREEK :Grčki STR_NETWORK_LANG_LATVIAN :Latvijski ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Predvorje igre za više igrača STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Pripremanje za pridruživanje: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Popis svih tvrtki trenutno u igri. Možete se pridružiti jednoj ili osnovati novu ako postoji slobodno mjesto STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}PODACI O TVRTKI STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Ime tvrtke: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Ustoličenje: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Vrijednost tvrtke: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Trenutno stanje: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Prošlogodišnji prihod: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Učinkovitost: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vozila: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Postaje: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Igrači: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nova tvrtka STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Otvori novu tvrtku STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Gledaj igru STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Promatraj igru kao gledatelj STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Pridruži se tvrtki STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Pomozi upravljati ovom tvrtkom # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Spajanje... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Spajanje u tijeku... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Provjera ovlaštenja... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Čekanje... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Preuzimanje karte... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Obrada podataka... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Prijavljivanje... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Dohvaćanje podataka o igri... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Dohvaćanje podataka o tvrtki... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klijen{P t ta ata} {P je su je} prije Vas STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} preuzeto do sada STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} preuzeto do sada STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odspoji STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Poslužitelj je zaštićen. Unesite zaporku STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Tvrtka je zaštićena. Unesite zaporku # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Popis klijenata STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Promatraj STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nova tvrtka # Network client list STR_NETWORK_CLIENTLIST_KICK :Izbaci STR_NETWORK_CLIENTLIST_BAN :Zabrana STR_NETWORK_CLIENTLIST_GIVE_MONEY :Daj novac STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Razgovaraj sa svima STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Razgovaraj s tvrtkom STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatna poruka STR_NETWORK_SERVER :Poslužitelj STR_NETWORK_CLIENT :Klijent STR_NETWORK_SPECTATORS :Promatrači STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Unesite iznos novca koji želite dati # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nemoj spremiti upisanu zaporku STR_COMPANY_PASSWORD_OK :{BLACK}Daj tvrtci novu zaporku STR_COMPANY_PASSWORD_CAPTION :{WHITE}Zaporka tvrtke STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Inicijalna zaporka tvrtke STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uporabi zaporku ove tvrtke kao inicijalnu za nove tvrtke # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridruži se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridruži se i igraj kao ova tvrtka STR_COMPANY_VIEW_PASSWORD :{BLACK}Zaporka STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Zaštiti šifrom svoju tvrtku od korištenja od strane neovlaštenih korisnika. STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Postavi zaporku tvrtke # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Pošalji STR_NETWORK_CHAT_COMPANY_CAPTION :[Ekipa]: STR_NETWORK_CHAT_CLIENT_CAPTION :[Privatno] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Svima] : STR_NETWORK_CHAT_COMPANY :[Ekipa] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Ekipa] Za {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privatno] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privatno] Za {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Svima] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Upišite tekst mrežnog razgovora # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nisu pronađeni mrežni uređaji ili je kompajlirano bez opcije ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Niti jedna mrežna igra nije pronađena STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Poslužitelj nije odgovorio na zahtjev STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Spajanje nije moguće zbog razlike u NewGRF datotekama STR_NETWORK_ERROR_DESYNC :{WHITE}Neuspješno usklađivanje s mrežnom igrom STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Izgubljena veza s mrežnom igrom STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Nije moguće učitati snimljenu igru STR_NETWORK_ERROR_SERVER_START :{WHITE}Nije moguće pokrenuti poslužitelj STR_NETWORK_ERROR_CLIENT_START :{WHITE}Nije se moguće spojiti STR_NETWORK_ERROR_TIMEOUT :{WHITE}Veza #{NUM} je istekla STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Primijećena je greška u protokolu te je veza prekinuta STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Revizija ovog klijenta ne odgovara reviziji poslužitelja STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Pogrešna zaporka STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Poslužitelj je pun STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Zabranjen ti je pristup ovom poslužitelju STR_NETWORK_ERROR_KICKED :{WHITE}Izbačen si iz igre STR_NETWORK_ERROR_CHEATER :{WHITE}Na ovome poslužitelju varanje nije dopušteno STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Slali ste previše naredbi na server STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Trebalo vam je previše vremena za unošenje lozinke STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Vaše računalo je presporo za držanje koraka sa serverom STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Vašem računalu je trebalo previše vremena za preuzimanje mape STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Vašem računalu je trebalo previše vremena za pridruživanje na server ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :opća greška STR_NETWORK_ERROR_CLIENT_DESYNC :greška u sinkronizaciji STR_NETWORK_ERROR_CLIENT_SAVEGAME :nije moguće učitati kartu STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :veza je izgubljena STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :greška u protokolu STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF nepodudaranje STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nije ovlašten STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :primljen je nepoznat ili neočekivani paket STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :pogrešna revizija STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ime se već koristi STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :pogrešna zaporka STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :krivi id tvrtke u DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :izbačen od strane poslužitelja STR_NETWORK_ERROR_CLIENT_CHEATER :je pokušao varati STR_NETWORK_ERROR_CLIENT_SERVER_FULL :poslužitelj je pun STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :slao je previše naredbi STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :lozinka nije zaprimljena na vrijeme STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :opći istek vremena STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :preuzimanje mape je predugo trajalo STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :procesiranje map je predugo trajalo ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Moguć gubitak veze STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Zadnjih {NUM} sekundi nisu primljeni podaci sa servera # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Igra zaustavljena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Igra još uvijek zaustavljena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Igra još uvijek zaustavljena ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Igra je još uvijek zaustavljena ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Igra je još pauzirana ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Igra se nastavlja ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nema dovoljno igrača STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :spajanje klijenata STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ručno STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :skripta igre ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :odlazim STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} se pridružio igri STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :{G=female}*** {STRING} se pridružila igri (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} se pridružio tvrtci #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se pridružio promatračima STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} je osnovao novu tvrtku (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} je izašao iz igre ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} je promijenio/la ime u {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je dao vašoj kompaniji {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dao si {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Poslužitelj je zatvorio sesiju STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Poslužitelj se ponovno pokreće...{}Molimo pričekajte... # Content downloading window STR_CONTENT_TITLE :{WHITE}Preuzimanje sadržaja STR_CONTENT_TYPE_CAPTION :{BLACK}Vrsta STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Vrsta sadržaja STR_CONTENT_NAME_CAPTION :{BLACK}Ime STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ime sadržaja STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Kliknite na liniju kako bi vidjeli detalje{}Kliknite na kućicu kako bi ju označili za preuzimanje STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Izaberi sve STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označi sav sadržaj za preuzimanje STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Izaberi nadogradnje STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označi sav sadržaj koji je nadogradnja postojećem sadržaju kako bi ga preuzeo STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznači sve STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označi sav sadržaj koji se ne preuzima STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Pretraži vanjske web stranice STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Traženje sadržaja nije dostupno u OpenTTD-ovom servisu za sadržaje za web stranice koje nisu pridružene OpenTTD-u STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Napuštate OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Pravila i uvjeti za preuzimanje sadržaja sa vanjskih web stranica variraju.{}Morate pogledati vanjske stranice za upute kako instalirati sadržaj u OpenTTD.{}Da li želite nastaviti? STR_CONTENT_FILTER_TITLE :{BLACK}Ime/Tag filter: STR_CONTENT_OPEN_URL :{BLACK}Posjetite web-stranicu STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Posjetite web-stranicu za ovaj sadržaj STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Preuzmi STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Počni preuzimanje označenog sadržaja STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Ukupna veličina preuzimanja: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFORMACIJA O SADRŽAJU STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Niste odabrali ovo za preuzimanje STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Odabrao si ovo za preuzimanje STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Ovaj sadržaj ovisi o prethodnim sadržajima i odabran je za preuzimanje STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Već imate ovo STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Ovaj sadržaj je nepoznat i nije ga moguće preuzeti u OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Ovo je zamjena za postojeći {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Ime: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Verzija: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Opis: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Tip: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Veličina preuzimanja: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Označeno zbog: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Ovisi o: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tagovi: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD je napravljen bez podrške za "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... preuzimanje sadržaja nije moguće! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Osnovna grafika STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :UI STR_CONTENT_TYPE_AI_LIBRARY :Zbirka UI STR_CONTENT_TYPE_SCENARIO :Scenarij STR_CONTENT_TYPE_HEIGHTMAP :Visinska mapa STR_CONTENT_TYPE_BASE_SOUNDS :Osnovni zvukovi STR_CONTENT_TYPE_BASE_MUSIC :Osnovna glazba STR_CONTENT_TYPE_GAME_SCRIPT :Skripta igre STR_CONTENT_TYPE_GS_LIBRARY :GS knjižnica # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Preuzimanje sadržaja STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Zahtjevanje datoteka STR_CONTENT_DOWNLOAD_FILE :{WHITE}Trenutno preuzimam {STRING} ({NUM} of {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Preuzimanje završeno STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} od {BYTES} preuzeto ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Nisam se mogao spojiti na poslužitelj sadržaja STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Preuzimanje nije uspjelo... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... veza izgubljena STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... datoteku nije moguće zapisati STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Nije moguća dekompresija preuzete datoteke STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Nedostaje grafika STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD treba grafiku za funkcioniranje ali nijedna nije pronađena. Da li dozvoljavate da OpenTTD preuzme i instalira potrebne grafike? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Da, preuzmi grafike STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, izađi iz OpenTTD-a # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Postavke prozirnosti STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Namjesti prozirnost za znakove. Ctrl+klik za zaključavanje STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Namjesti prozirnost za drveće. Ctrl+klik za zaključavanje STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Namjesti prozirnost za kuće. Ctrl+klik za zaključavanje STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Namjesti prozirnost za industrije. Ctrl+klik za zaključavanje STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Namjesti prozirnost za građevine poput stanica, depoa i čvorišta. Ctrl+klik za zaključavanje STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Namjesti prozirnost za mostove. Ctrl+klik za zaključavanje STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Namjesti prozirnost za strukture poput svjetionika i antena. Ctrl+klik za zaključavanje. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Aktiviraj prozirnost za viseće žice. Ctrl+klik za zaključavanje STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Namjesti prozirnost za indikatore učitavanja. Ctrl+klik za zaključavanje STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Učini objekte nevidljivima umjesto prozirnima # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Označavanje područja pokrivanja STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Isključeno STR_STATION_BUILD_COVERAGE_ON :{BLACK}Uključeno STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nemoj označiti područje koje pokriva željeno mjesto STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Označi područje koje pokriva željeno mjesto STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Prihvaća: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Zalihe: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Spoji postaju STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Izgradi odvojenu postaju STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spoji čvorište STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Izgradi zasebno čvorište # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Izgradnja željeznice STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Izgradnja elektrificirane željeznice STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Izgradnja jednotračne željeznice STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Izgradnja Magleva STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Izgradi željezničku prugu. Ctrl aktivira izgradnju/uklanjanje prilikom gradnje željeznice. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Izgradi željezničku prugu koristeći Autorail način. Ctrl aktivira izgradnju/uklanjanje prilikom gradnje željeznice. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Izgradi spremište vlakova (za kupnju i servisiranje vlakova). Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Pretvori prugu u čvorište. Ctrl omogućava spajanje čvorišta. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Izgradi željezničku postaju. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Izgradi željezničke signale. Ctrl aktivira semafore/svjetlosne signale{}Povlačenjem će se izgraditi signali uzduž ravnog dijela pruge. Ctrl će izgraditi signale do sljedećeg križanja.{}Ctrl+klik aktivira otvaranje prozora za odabir signala. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Izgradi željeznički most. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Izgradi željeznički tunel. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Aktiviraj izgradnju/uklanjanje željezničke pruge, signala, čvorišta i postaja. Držanjem tipke Ctrl također se uklanjaju tračnice na čvorištima i postajama. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Pretvori/nadogradi vrstu pruge. Shift mijenja prikaz građenje/procjena troškova. STR_RAIL_NAME_RAILROAD :Pruga STR_RAIL_NAME_ELRAIL :Elektrificirana pruga STR_RAIL_NAME_MONORAIL :Pruga s jednim kolosijekom STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Smjer spremišta vlakova STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer željezničkog spremišta # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Čvorište STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Odaberi vrstu čvorišta # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Izbor željezničke postaje STR_STATION_BUILD_ORIENTATION :{BLACK}Smjer STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer željezničke postaje STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Broj tračnica STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Odaberi broj perona na željezničkoj postaji STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Dužina platforme STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Odaberi dužinu željezničke postaje STR_STATION_BUILD_DRAG_DROP :{BLACK}Povuci i spusti STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Napravi postaju koristeći drag & drop STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Odaberi vrstu postaje za prikazivanje STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Odaberi vrstu postaje za izgradnju STR_STATION_CLASS_DFLT :Zadana postaja STR_STATION_CLASS_WAYP :Čvorišta # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Izbornik signala STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Standardni signal (semafor){}Ovo je najosnovnija vrsta signala, dozvoljava istovremeno samo jedan vlak u bloku STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ulazni signal (semafor){}Zeleno sve dok je jedan ili više zelenih izlaznih signala na sljedećem dijelu pruge. U protivnom pokazuje crveno STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Izlazni signal (semafor){}Ponaša se na isti način kao i normalni signali, ali je nužno pogoditi točnu boju na ulaznim i kombo pred-signalima STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombo signal (semafor){}Kombo signal jednostavno radi kao ulazni i izlazni signal. Ovo omogućava izgradnju velike "mreže" pred-signala. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Putni signal (semafor){}Putni signal omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Standardne putne signale moguće je proći iz suprotnog smjera. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednosmjerni putni signal (semafor){}Putni signal omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Jednosmjerne putne signale nije moguće proći iz suprotnog smjera STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standardni signal (električni){}Ovo je najosnovnija vrsta signala, dozvoljava istovremeno samo jedan vlak u bloku STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ulazni signal (električni){}Zeleno sve dok je jedan ili više zelenih izlaznih signala na sljedećem dijelu pruge. U protivnom pokazuje crveno STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izlazni signal (električni){}Ponaša se na isti način kao i normalni signali, ali je nužno pogoditi točnu boju na ulaznim i kombo pred-signalima. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombo signal (električni){}Kombo signal jednostavno radi kao ulazni i izlazni signal. Ovo omogućava izgradnju velike "mreže" pred-signala. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Putni signal (električni){}Putni signal omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Standardne putne signale moguće je proći iz suprotnog smjera STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednosmjerni putni signal (električni){}Putni znak omogućava da više od jednog vlaka uđe istovremeno u signalni blok, ako vlak može rezervirati putanju do sigurnog zaustavnog mjesta. Jednosmjerne putne signale nije moguće proći iz suprotnog smjera. STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Pretvaranje signala{}Kada je odabrano, klikanjem na postojeći signal pretvara taj signal u odabranu vrstu i varijantu, Ctrl+Klik mijenja postojeću varijantu. Shift+Klik prikazuje procjenu troška pretvorbe STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Gustoća signala prilikom izgradnje STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Smanji gustoću signala prilikom izgradnje STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Povećaj gustoću signala prilikom izgradnje # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Odaberi željeznički most STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Odaberi cestovni most STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Izbor mosta - klikni na most koji želiš izgraditi STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Viseći, čelični STR_BRIDGE_NAME_GIRDER_STEEL :Noseći, čelični STR_BRIDGE_NAME_CANTILEVER_STEEL :Konzolni, čelični STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Viseći, betonski STR_BRIDGE_NAME_WOODEN :Drveni STR_BRIDGE_NAME_CONCRETE :Betonski STR_BRIDGE_NAME_TUBULAR_STEEL :Cijevni, čelični STR_BRIDGE_TUBULAR_SILICON :Cjevni, silikonski # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Izgradnja ceste STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Izgradnja tramvaja STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Izgradi dio ceste. Ctrl aktivira izgradnju/uklanjanje prilikom gradnje ceste. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Izgradi tramvajski dio. Ctrl aktivira izgradnju/uklanjanje prilikom gradnje tramvajske pruge. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Izgradi cestu koristeći Autoroad način gradnje. Ctrl aktivira izgradnju/uklanjanje prilikom gradnje ceste. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Izgradi tramvajsku prugu koristeći Autotram način gradnje. Ctrl aktivira izgradnju/uklanjanje prilikom gradnje tramvajske pruge. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Izgradi spremište cestovnih vozila (za kupnju i servisiranje vozila). Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Izgradi spremište tramvajskih vozila (za kupnju i servisiranje vozila). Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Izgradi autobusnu postaju. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Izgradi putničku tramvajsku postaju. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Izgradi pretovarni kamionski terminal. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Izgradi teretnu tramvajsku postaju. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktiviraj/deaktiviraj jednosmjerne ceste STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Izgradi cestovni most. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Izgradi tramvajski most. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Izgradi cestovni tunel. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Izgradi tramvajski tunel. Shift mijenja prikaz građenje/procjena troškova. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Aktiviraj izgradnju/uklanjanje za izgradnju ceste STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Aktiviraj izgradnju/uklanjanje za izgradnju tramvaja # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Smjer cestovnog spremišta STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Odaberi smjer spremišta cestovnih vozila STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Smjer tramvajskog spremišta STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Odaberi smjer tramvajskog spremišta # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Smjer autobusne postaje STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer autobusne postaje STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Smjer kamionskog terminala STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer kamionskog terminala STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orijentacija stanice putničkog tramvaja STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer putničke tramvajske postaje STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orijentacija stanice teretnog tramvaja STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer teretne tramvajske postaje # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Izgradnja plovnih kanala STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Plovni kanali STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Izgradi kanale. Shift mijenja prikaz građenje/procjena troškova. STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Izgradi brane. Shift mijenja prikaz građenje/procjena troškova. STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Izgradi spremište brodova (za kupnju i servisiranje brodova). Shift mijenja prikaz građenje/procjena troškova. STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Izgradi brodsko pristanište. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Smjesti plutaču koja može biti korištena kao čvorište. Shift mijenja prikaz građenje/procjena troškova. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Izgradi akvadukt. Shift mijenja prikaz građenje/procjena troškova. STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Odredi vodeno područje.{}Napravi kanal, osim ako Ctrl nije pritisnut na morskom nivou, kada će umjesto toga potopiti okolna područja STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Postavi rijeke # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Smjer spremišta brodova STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Odaberi smjer spremišta brodova # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Pristanište # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Zračne luke STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Izgradi zračnu luku. Ctrl omogućava spajanje postaja. Shift mijenja prikaz građenje/procjena troškova. # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Izbor zračne luke STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Odaberi veličinu/vrstu zračne luke STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Klasa zračne luke STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Raspored {NUM} STR_AIRPORT_SMALL :Mala STR_AIRPORT_CITY :Grad STR_AIRPORT_METRO :Metropolitanska zračna luka STR_AIRPORT_INTERNATIONAL :Međunarodna zračna luka STR_AIRPORT_COMMUTER :Redoviti putnik STR_AIRPORT_INTERCONTINENTAL :Međukontinentalni STR_AIRPORT_HELIPORT :Heliodrom STR_AIRPORT_HELIDEPOT :Spremište helikoptera STR_AIRPORT_HELISTATION :Postaja za helikoptere STR_AIRPORT_CLASS_SMALL :Male zračne luke STR_AIRPORT_CLASS_LARGE :Velike zračne luke STR_AIRPORT_CLASS_HUB :Središnje zračne luke STR_AIRPORT_CLASS_HELIPORTS :Zračne luke za helikoptere STR_STATION_BUILD_NOISE :{BLACK}Proizvedeno buke: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Uređivanje krajolika STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Snizi jedan kut zemlje. Povlačenje snižava prvi odabrani kut i poravnava selektirano područje na novu visinu prvog kuta. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova. STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Podigni jedan kut zemlje. Povlačenje podiže prvi odabrani kut i poravnava selektirano područje na novu visinu prvog kuta. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova. STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Poravnaj područje zemlje na visinu prvog odabranog kuta. Ctrl selektira područje dijagonalno. Shift mijenja prikaz građenje/procjena troškova. STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kupi zemlju za buduću uporabu. Shift mijenja prikaz građenje/procjena troškova. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Odabir objekta STR_OBJECT_BUILD_TOOLTIP :{BLACK}Odaberi objekt za izgradnju. Shift mijenja prikaz građenje/procjena troškova. STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Odaberi vrstu objekta za izgradnju STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Pregled objekta STR_OBJECT_BUILD_SIZE :{BLACK}Veličina: {GOLD}{NUM} x {NUM} polja STR_OBJECT_CLASS_LTHS :Svjetionici STR_OBJECT_CLASS_TRNS :Odašiljači # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Drveće STR_PLANT_TREE_TOOLTIP :{BLACK}Odaberi vrstu drveta za sadnju. Ako polje već ima drvo, ovo će dodati još drveća raznih vrsta neovisno o odabranoj vrsti STR_TREES_RANDOM_TYPE :{BLACK}Raznovrsno drveće STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Posadi raznovrsno drveće. Shift mijenja prikaz građenje/procjena troškova. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nasumično odabrano drveće STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Nasumce posadi drveće po krajoliku # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Stvaranje zemljišta STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Stavi stijenje na krajolik STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Odredi pustinjsko područje.{}Pritisni i drži Ctrl za uklanjanje STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Povećaj područje koje će biti povišeno/sniženo STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Smanji područje koje će biti povišeno/sniženo STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Napravi nasumično zemljište STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Kreiraj novi scenarij STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Poništi krajolik STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Obriši sa mape sve u vlasništvu kompanije STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Poništi krajolik STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Jeste li sigurni da želite obrisati sve u vlasništvu kompanije? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Stvaranje gradova STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Novi grad STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Osnuj novi grad. Shift+Klik prikazuje samo trošak. STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Nasumičan grad STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Osnuj grad na nasumično odabranom mjestu STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Brojni nasumični gradovi STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Popuni kartu nasumično raspoređenim gradovima STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Ime grada: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Upišite ime grada STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Kliknite kako bi upisali ime grada STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nasumično ime STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generiraj novo nasumično ime STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Veličina grada: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Malo STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Srednje STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Veliko STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Nasumično STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Odaberi veličinu grada STR_FOUND_TOWN_CITY :{BLACK}Grad STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Velegradovi rastu brže od običnih gradova{}Ovisno o postavkama, veći su prilikom osnivanja STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Raspored gradskih cesta STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Odaberi raspored cesta za ovaj grad STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bolje ceste STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 mreža STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 mreža STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Nasumično # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Financiraj novu industriju STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Izaberi prikladnu industriju s ovog popisa STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Brojne nasumične industrije STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Popuni kartu nasumce smještenim industrijama STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cijena: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Izgradi STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Financiraj # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrijski slijed za {STRING} industriju STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industrijski slijed za {STRING} teret STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Proizvodne industrije STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Primateljske industrije STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Kuće STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klinkni na industriju za prikaz njenih dobavljača i klijenata STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikni na teret za prikaz dobavljača i klijenata STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Prikaži slijed STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Prikaži industrije koje dobavljaju i primaju teret STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Poveznica na malu mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Odaberi prikazane industrije također i na maloj mapi STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Odaberi teret STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Odaberi teret koji želiš prikazati STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Odaberi industriju STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Odaberi industriju koju želiš prikazati # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Podaci o zemlji STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Troškovi čišćenja: {LTBLUE}Nedostupno STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Troškovi čišćenja: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Prihod kada je očišćeno: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :NIJE DOSTUPNO STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Vlasnik: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Vlasnik ceste: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik tramvaja: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik željeznice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Područna nadležnost: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nijedan/Nitko/Ništa STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Izgrađeno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Klasa zračne luke: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Ime zračne luke: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Naziv polja zračne luke: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prihvaćeni teret: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina željeznice: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stijenje STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Surova zemlja STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Ogoljena zemlja STR_LAI_CLEAR_DESCRIPTION_GRASS :Trava STR_LAI_CLEAR_DESCRIPTION_FIELDS :Polja STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zemlja pokrivena snijegom STR_LAI_CLEAR_DESCRIPTION_DESERT :Pustinja STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} pruga STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} pruga sa blok-signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} pruga sa pred-signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} pruga sa izlaznim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} pruga sa kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} pruga sa putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} pruga sa jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} pruga sa blok-signalima i pred-signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} pruga sa blok-signalima i izlaznim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} pruga sa blok-signalima i kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} pruga sa blok-signalima i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} pruga sa blok-signalima i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} pruga sa pred-signalima i izlaznim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} pruga sa pred-signalima i kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} pruga sa pred-signalima i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} pruga sa pred-signalima i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} pruga sa izlaznim i kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} pruga sa izlaznim i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} pruga sa izlaznim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} pruga sa kombiniranim i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} pruga sa kombiniranim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} pruga sa putnim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} depo vlaka STR_LAI_ROAD_DESCRIPTION_ROAD :Cesta STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Cesta s javnom rasvjetom STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Cesta s tri trake STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Spremište cestovnih vozila STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Prijelaz ceste preko željezničke pruge STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tramvaj # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (u izgradnji) STR_LAI_TREE_NAME_TREES :Drveće STR_LAI_TREE_NAME_RAINFOREST :Kišna šuma STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusi STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Željeznička postaja STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Zrakoplovni hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Zračna luka STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ukrcajno područje STR_LAI_STATION_DESCRIPTION_BUS_STATION :Autobusna postaja STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Brodsko pristanište STR_LAI_STATION_DESCRIPTION_BUOY :Plutača STR_LAI_STATION_DESCRIPTION_WAYPOINT :Čvorište STR_LAI_WATER_DESCRIPTION_WATER :Voda STR_LAI_WATER_DESCRIPTION_CANAL :Kanal STR_LAI_WATER_DESCRIPTION_LOCK :Brana STR_LAI_WATER_DESCRIPTION_RIVER :Rijeka STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Obala ili riječni nasip STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Spremište brodova # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Željeznički tunel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Cestovni tunel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Čelični viseći željeznički most STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Čelični noseći željeznički most STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Čelični konzolni željeznički most STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Ojačani betonski viseći željeznički most STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Drveni željeznički most STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betonski željeznički most STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Cijevni željeznički most STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Čelični viseći cestovni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Čelični noseći cestovni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Čelični konzolni cestovni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ojačani betonski viseći cestovni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Drveni cestovni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonski cestovni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Cijevni cestovni most STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvadukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Odašiljač STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Svjetionik STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sjedište tvrtke STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemlja u posjedu tvrtke # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru STR_SAVELOAD_LOAD_CAPTION :{WHITE}Učitaj igru STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Spremi scenarij STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Učitaj scenarij STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Učitaj visinsku kartu STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Spremi visinsku mapu STR_SAVELOAD_HOME_BUTTON :{BLACK}Klikni ovdje za prelazak u trenutnu pretpostavljenu mapu za snimanje/učitavanje STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} slobod{P an na no} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Popis diskova, mapa i spremljenih datoteka STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Trenutno odabrano ime za spremanje igre STR_SAVELOAD_DELETE_BUTTON :{BLACK}Obriši STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Obriši trenutno odabranu spremljenu igru STR_SAVELOAD_SAVE_BUTTON :{BLACK}Spremi STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Spremi trenutnu igru koristeći odabrano ime STR_SAVELOAD_LOAD_BUTTON :{BLACK}Učitaj STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Učitaj odabranu igru STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalji o igri STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nema dostupnih informacija. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Upiši ime za spremanje igre # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Izrada svijeta STR_MAPGEN_MAPSIZE :{BLACK}Veličina karte: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Odaberi veličinu mape u poljima. Broj dostupnih polja biti će malo manji STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Broj gradova: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Broj industrija: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Visina linije snijega STR_MAPGEN_SNOW_LINE_UP :{BLACK}Pomakni visinu linije snijega za jedan gore STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pomakni visinu linije snijega za jedan dolje STR_MAPGEN_RANDOM_SEED :{BLACK}Nasumični slijed: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikni za unos nasumičnog slijeda STR_MAPGEN_RANDOM :{BLACK}Nasumično STR_MAPGEN_RANDOM_HELP :{BLACK}Promijeni slučajni slijed koji se koristi za kreiranje terena STR_MAPGEN_LAND_GENERATOR :{BLACK}Izrađivač zemljišta: STR_MAPGEN_TREE_PLACER :{BLACK} Algoritam za drveće: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Vrsta terena: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Razina mora: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rijeke: STR_MAPGEN_SMOOTHNESS :{BLACK}Graduacija: STR_MAPGEN_VARIETY :{BLACK}Distribucija raznovrsnosti: STR_MAPGEN_GENERATE :{WHITE}Izradi # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Rubovi Karte: STR_MAPGEN_NORTHWEST :{BLACK}Sjeverozapad STR_MAPGEN_NORTHEAST :{BLACK}Sjeveroistok STR_MAPGEN_SOUTHEAST :{BLACK}Jugoistok STR_MAPGEN_SOUTHWEST :{BLACK}Jugozapad STR_MAPGEN_BORDER_FREEFORM :{BLACK}Slobodni oblik STR_MAPGEN_BORDER_WATER :{BLACK}Voda STR_MAPGEN_BORDER_RANDOM :{BLACK}Nasumično STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Nasumično STR_MAPGEN_BORDER_MANUAL :{BLACK}Ručno STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotacija visinske mape: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ime visinske karte: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Veličina: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Upiši nasumično sjeme STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Promijeni visinu linije snijega STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Promijeni početnu godinu # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Vrsta scenarija STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Ravna zemlja STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Kreiraj ravan teren STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Nasumični teren STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Visina ravne površine: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Snizi ravnu površinu za jedan korak STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Povisi ravnu površinu za jedan korak STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Promijeni visinu ravne površine # Map generation progress STR_GENERATION_WORLD :{WHITE}Izrada svijeta u toku... STR_GENERATION_ABORT :{BLACK}Prekini STR_GENERATION_ABORT_CAPTION :{WHITE}Poništi izradu svijeta STR_GENERATION_ABORT_MESSAGE :{YELLOW}Želiš li zaista prekinuti izradu? STR_GENERATION_PROGRESS :{WHITE}{NUM}% gotovo STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Izrada svijeta STR_GENERATION_RIVER_GENERATION :{BLACK}Generiranje rijeka STR_GENERATION_TREE_GENERATION :{BLACK}Generiranje drveća STR_GENERATION_OBJECT_GENERATION :{BLACK}Nepomično generiranje STR_GENERATION_CLEARING_TILES :{BLACK}Generiranje grubog i stjenovitog područja STR_GENERATION_SETTINGUP_GAME :{BLACK}Pripremam igru STR_GENERATION_PREPARING_TILELOOP :{BLACK}Izvršavam tile-petlju STR_GENERATION_PREPARING_SCRIPT :{BLACK}Izvođenje skripte u tijeku STR_GENERATION_PREPARING_GAME :{BLACK}Pripremam igru # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF postavke STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detaljne NewGRF informacije STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktivne NewGRF datoteke STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Neaktivne NewGRF datoteke STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Odaberi predložak: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filter: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Učitaj unaprijed odabrane postavke STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Spremi zadano postavljanje STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Spremi trenutni popis kao zadano postavljanje STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Upiši ime zadanog postavljanja STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Obriši zadano postavljanje STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Obriši trenutno izabrano zadano postavljanje STR_NEWGRF_SETTINGS_ADD :{BLACK}Dodaj STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Dodaj odabrane NewGRF datoteke u svoju konfiguraciju STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Ponovno skeniraj datoteke STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Osvježi popis dostupnih NewGRF datoteka STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Ukloni STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Ukloni odabranu NewGRF datoteku s popisa STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Pomakni gore STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Pomakni odabranu NewGRF datoteku gore na listi STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK} Pomakni dolje STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Pomakni odabranu NewGRF datoteku dolje na listi STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Popis instaliranih NewGRF datoteka STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Postavi parametre STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Prikaži parametre STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Aktiviraj paletu STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Prilagodi paletu izabranog NewGRF-a.{}Učini ovo kada grafike iz ovog NewGRF-a izgledaju ljubičasto tijekom igre. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Potvrdi promjene STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Pronađi nedostajeći sadržaj online STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Provjeri može li se nedostajeći sadržaj pronaći online STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Datoteka: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Verzija: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatibilna verzija: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5 suma: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametri: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Nema dostupnih informacija STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nije pronađena odgovarajuća datoteka STR_NEWGRF_SETTINGS_DISABLED :{RED}Onemogućeno STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nije kompatibilno sa ovom verzijom OpenTTD-a # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Promijeni NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zatvori STR_NEWGRF_PARAMETERS_RESET :{BLACK}Resetiraj STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Namjesti sve parametre na osnovne vrijednosti STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametar {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Broj parametara: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Pregledaj - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Matični STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Pregledaj objekt matičnog djelokruga STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} na {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Vrsta željeznice STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF varijabla 60+x parametar (heksadecimalni) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Poravnanje sprite-a {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sljedeći sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Otiđi na sljedeći normalni sprite, preskačući svaki pseudo/prebojani/font sprite i nakon kraja kreni od početka STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Otiđi na sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Otiđi na određeni sprite. Ako sprite nije normalni sprite, otiđi na slijedeći normalni sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prethodni sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Otiđi na prethodni normalni sprite, preskačući svaki pseudo/prebojani/font sprite i kreni od kraja ako se dođe na početak STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prikaz trenutno odabranog spritea. Poravnjanje se ignorira kod crtanja ovog spritea. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pomakni sprite mijenjajući X i Y pomake STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X pomak: {NUM}, Y pomak: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Odaberi sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Odaberi sprite od bilo gdje na ekranu STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Otiđi na sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Upozorenje: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Greška: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Kobno: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Dogodila se kobna pogreška u NewGRF-u: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} neće raditi sa TTDPatch verzijom prijavljenom u OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} je za {STRING} verziju TTD-a. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} je napravljen da se koristi sa {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Nevažeći parametar za {1:STRING}: parametar {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} se mora učitati prije {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} se mora učitati nakon {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} zahtijeva OpenTTD verziju {STRING} ili noviju. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF datoteka je dizajnirana za prijevod STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Previše učitanih NewGRF-ova. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Učitavanjem {1:STRING} kao statičnog NewGRF s {STRING} može uzrokovati deharmonizaciju STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Neočekivani sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Nepoznata vrijednost Action 0 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Pokušaj korištenja pogrešnog ID-a (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sadrži neispravan sprite. Svi neispravni grafički znakovi bit će pokazani kao crveni upitnik (?). STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sadrži višestruke unose za Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Pročitaj nakon kraja od pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Baznom grafičkom setu u uporabi nedostaju neki spriteovi.{}Ažurirajte bazni grafički set STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Trenutno korištenom osnovnom grafičkom setu nedostaju pojedini crteži.{}Molimo da nadogradite osnovni grafički set.{}Pošto igrate {YELLOW}razvojnu inačicu OpenTTD-a{WHITE}, možda će vam trebati i {YELLOW}razvojna inačica osnovnog grafičkog seta{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Zatraženi GRF resursi nisu dostupni (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Pogrešan/nepoznat format raspored sprite-a (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Oprez! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Spremate se napraviti izmjene u pokrenutoj igri. To može srušiti OpenTTD ili uništiti status same igre. Nemojte prijavljivati moguće smetnje kao bugove.{}Jeste li potpuno sigurni da želite nastaviti? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ne mogu dodati datoteku: dupli GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Odgovarajuća datoteka nije pronađena (kompatibilni GRF podignut) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nemoguće dodati datoteku: dosegnut limit broja NewGRF datoteka STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilni GRF(ovi) učitani umjesto nepronađenih datoteka STR_NEWGRF_DISABLED_WARNING :{WHITE}Nepronađene GRF datoteke su isključene STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Nedostaje GRF datoteka(e) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Odpauziranje može uzrokovati rušenje OpenTTD-a. Nemojte slati prijave bugova za posljedična rušenja.{}Želite li stvarno odpauzirati? # NewGRF status STR_NEWGRF_LIST_NONE :Nijedan STR_NEWGRF_LIST_ALL_FOUND :Svi fajlovi prisutni STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Pronađeni kompatibilni fajlovi STR_NEWGRF_LIST_MISSING :{RED}Nedostaju fajlovi # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Ponašanje NewGRF '{0:STRING}' će vjerojatno uzrokovati deharmonizaciju i/ili rušenje igre STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Promijenjen status motoriziranog vagona za '{1:ENGINE}' kad vozilo nije u depou. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ovo mijenja dužinu vozila za '{1:ENGINE}' kada vozilo nije unutar depoa STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak'{VEHICLE}' koji pripada tvrtci '{COMPANY}' neispravne je dužine. Uzrok problema je vjerojatno u NewGRF datotekama. Igra će se možda deharmonizirati ili srušiti STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' daje netočne informacije STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacija o teretu/remontu za '{1:ENGINE}' je različita od kupovne liste nakon izgradnje. Zbog toga bi automatsko obnavljanje/zamjena mogla biti neuspješna STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{G=male}{WHITE}'{1:STRING}' je uzrokovao beskonačnu petlju u pozivu za povrat produkcije STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Povratnica {1:HEX} je vratio nepoznat/nemoguć rezultat {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} od STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE : # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Tražim NewGRFove STR_NEWGRF_SCAN_MESSAGE :{BLACK}Tražim NewGRFove. Ovisno o količini ovo može malo potrajati... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF skeniran iz procijenjenog {NUM} NewGRF STR_NEWGRF_SCAN_ARCHIVES :Tražim arhive # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Popis znakova - {COMMA} znak{P "" a ova} STR_SIGN_LIST_MATCH_CASE :{BLACK}Velika i mala slova STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Koristi/ne koristi velika i mala slova kod usporedbe imena oznaka sa imenima sa slijedom filtera # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Izmijeni tekst znaka STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Idi do sljedećeg znaka STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Idi do prethodnog znaka STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Unesi ime znaka # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Gradovi STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ništa - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Imena gradova - klikni na ime kako bi centrirao pogled na grad. Ctrl+klik otvara novi prozor sa lokacijom grada STR_TOWN_POPULATION :{BLACK}Svjetsko stanovništvo: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Metropola) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Stanovništvo: {ORANGE}{COMMA}{BLACK} Kuće: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Putnika prošli mjesec: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošte prošli mjesec: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Potrebno tereta za rast grada: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} potrebno zimi STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} isporučeno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (još potrebno) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (isporučeno) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Grad raste svaki {ORANGE}{COMMA}{BLACK} dan STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Grad raste svaki {ORANGE}{COMMA}{BLACK} dan (financirano) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Grad {RED}ne{BLACK} raste STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Ograničenje buke u gradu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju grada. Ctrl+klik otvara novi prozor sa lokacijom grada STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Lokalna samouprava STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Pokaži informacije o lokalnoj samoupravi STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Promijeni ime grada STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Proširi STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Povećaj veličinu grada STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Obriši STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Obriši ovaj grad u cjelosti STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Preimenuj grad # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Lokalna samouprava grada {TOWN}a STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ocjene prijevoznih tvrtki: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Dostupne radnje: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Popis stvari koje treba učiniti u ovom gradu - klikni za dodatne informacije STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Učini to STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Izvrši označene radnje na gornjem popisu STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Mala oglasna kampanja STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Srednja oglasna kampanja STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Velika oglasna kampanja STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Financiraj popravljanje lokalne prometnice STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Izgradi kip vlasnika tvrtke STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financiraj nove građevine STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kupi ekskluzivna prava prijevoza STR_LOCAL_AUTHORITY_ACTION_BRIBE :Podmiti lokalnu samoupravu STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Pokreni malu oglasnu kampanju, kako bi privukao više putnika i tereta za svoje prijevozne usluge.{} Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Pokreni srednju oglasnu kampanju, kako bi privukao više putnika i tereta za svoje prijevozne usluge.{} Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Pokreni veliku oglasnu kampanju, kako bi privukao više putnika i tereta za svoje prijevozne usluge.{} Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financiraj popravak gradske mreže prometnica. Uzrokuje značajne poremećaje u cestovnom prometu do 6 mjeseci.{} Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Izgradi kip u čast svoje tvrtke.{} Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Financiraj izgradnju novih poslovnih prostora u gradu.{} Trošak: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kupi jednogodišnje ekskluzivno pravo prijevoza u gradu. Gradska vlast dopustit će putnicima i teretu korištenje isključivo postaja tvoje tvrtke.{} Cijena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podmiti lokalnu samoupravu kako bi povećao ugled, riskirajući ozbiljne kazne ako te uhvate.{} Trošak: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Ciljevi STR_GOALS_GLOBAL_TITLE :{BLACK}Globalni ciljevi: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nijedan - STR_GOALS_COMPANY_TITLE :{BLACK}Ciljevi kompanije: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cilj za centriranje središnjeg pogleda na industriju/grad/pločicu. Ctrl+Klik otvara novi prozor s pogledom na lokaciju industrije/grada/pločice # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Pitanje STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacija STR_GOAL_QUESTION_CAPTION_WARNING :Upozorenje STR_GOAL_QUESTION_CAPTION_ERROR :Greška ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Poništi STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ne STR_GOAL_QUESTION_BUTTON_YES :Da STR_GOAL_QUESTION_BUTTON_DECLINE :Odbij STR_GOAL_QUESTION_BUTTON_ACCEPT :Prihvati STR_GOAL_QUESTION_BUTTON_IGNORE :Ignoriraj STR_GOAL_QUESTION_BUTTON_RETRY :Pokušaj ponovo STR_GOAL_QUESTION_BUTTON_PREVIOUS :Prethodni STR_GOAL_QUESTION_BUTTON_NEXT :Sljedeći STR_GOAL_QUESTION_BUTTON_STOP :Stani STR_GOAL_QUESTION_BUTTON_START :Kreni STR_GOAL_QUESTION_BUTTON_GO :Započni STR_GOAL_QUESTION_BUTTON_CONTINUE :Nastavi STR_GOAL_QUESTION_BUTTON_RESTART :Ponovi od početka STR_GOAL_QUESTION_BUTTON_POSTPONE :Odgodi STR_GOAL_QUESTION_BUTTON_SURRENDER :Odustani STR_GOAL_QUESTION_BUTTON_CLOSE :Zatvori # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencije STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Ponuđene subvencije za pružanje usluga: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} od {STRING} do {STRING}{YELLOW} (do {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Ništa - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Usluge koje su već subvencionirane: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} iz {STRING} prema {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na uslugu za centriranje pogleda na industriju/grad. Ctrl+klik otvara novi prozor sa lokacijom industrije/grada # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Imena postaja - klikni na ime kako bi centrirao glavni pogled na postaju. Ctrl+klik otvara novi prozor sa lokacijom postaje STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Drži Ctrl kako bi odabrao više od jedne stavke STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} postaj{P a e a} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ništa - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Odaberi sva sredstva STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Odaberi sve vrste tereta (uključujući i teret koji ne čeka) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nijedna vrsta tereta ne čeka # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čekanje: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} iz {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prihvaća STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Pokaži popis tereta koji se prihvaća STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Prihvaća: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ova stanica ima ekskluzivna prava trasnporta u ovom gradu. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kupljena ekskluzivna prava transporta u ovom gradu. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocjene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Pokaži ocjene postaje STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokalna ocjena usluge prijevoza: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Užasno STR_CARGO_RATING_VERY_POOR :Vrlo loše STR_CARGO_RATING_POOR :Loše STR_CARGO_RATING_MEDIOCRE :Osrednje STR_CARGO_RATING_GOOD :Dobro STR_CARGO_RATING_VERY_GOOD :Vrlo dobro STR_CARGO_RATING_EXCELLENT :Izvrsno STR_CARGO_RATING_OUTSTANDING :Izvanredno ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju postaje. Ctrl+klik otvara novi prozor sa lokacijom postaje STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Promijeni ime postaje STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Pokaži sve vlakove koji imaju ovu postaju u svom rasporedu STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Pokaži sva cestovna vozila koja imaju ovu postaju u svom rasporedu STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Pokaži sve zrakoplove koji imaju ovu postaju u svom rasporedu STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Pokaži sve brodove koji imaju ovu postaju u svom rasporedu STR_STATION_VIEW_RENAME_STATION_CAPTION :Preimenuj postaju/terminal STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Zatvori aerodrom STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Spriječi sletanje aviona na ovaj aerodrom # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju čvorišta. Ctrl+klik otvara novi pogled na lokaciju čvorišta. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Promijeni ime čvorišta STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju plutače. Ctrl+klik otvara novi pogled na lokaciju plutače. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Promijeni ime plutače STR_EDIT_WAYPOINT_NAME :{WHITE}Promijeni ime čvorišta # Finances window STR_FINANCES_CAPTION :Financije tvrtke {WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Rashodi/Prihodi STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Izgradnja STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nova vozila STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Troškovi uporabe vlakova STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Troškovi uporabe cestovnih vozila STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Troškovi uporabe zrakoplova STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Troškovi uporabe brodova STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Održavanje posjeda STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Prihod od vlakova STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Prihod od cestovnih vozila STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Prihod od zrakoplova STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Prihod od brodova STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Kamate STR_FINANCES_SECTION_OTHER :{GOLD}Ostalo STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Ukupno: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bankovna bilanca STR_FINANCES_LOAN_TITLE :{WHITE}Zajam STR_FINANCES_MAX_LOAN :{WHITE}Maks zajam: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pozajmi {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Povećaj iznos zajma. Ctrl+klik posuđuje najveći mogući iznos STR_FINANCES_REPAY_BUTTON :{BLACK}Otplati {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Otplati dio zajma STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Direktor) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Na poziciji od: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Boja: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vozila: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} vlak{P "" a ova} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} cestovn{P o a ih} vozil{P o a a} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} zrakoplov STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} brod{P "" a ova} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ništa STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Vrijednost tvrtke: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% u vlasništvu {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktura: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} dijelovi pruge STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} dio ceste STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} polje vode STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} polje stanice STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aerodromi STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Ništa STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Izgradi sjedište tvrtke STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Izgradi sjedište tvrtke STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Pogledaj sjedište tvrtke STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Pogledaj sjedište tvrtke STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Premjesti sjedište kompanije STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Izgradi sjedište tvrtke negdje drugdje za 1% troška od cjelokupne vrijednosti tvrtke. Shift+Klik prikazuje trošak bez premještanja sjedišta tvrtke. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalji STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Pogledaj detaljne podatke infrastrukture STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Novo lice STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Odaberi novo lice direktora STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Boja STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Promijeni shemu boja za vozila tvrtke STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Ime tvrtke STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Promijeni ime tvrtke STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Ime direktora STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Promjeni ime direktora STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kupi 25% udjela u tvrtci STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Prodaj 25% udjela u tvrtci STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kupi 25% udjela u ovoj tvrtci. Shift+Klik prikazuje trošak bez kupnje udjela. STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Prodaj 25% udjela u ovoj tvrtci. Shift+Klik prikazuje trošak bez prodaje udjela. STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Ime tvrtke STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ime direktora STR_BUY_COMPANY_MESSAGE :{WHITE}Tražimo prijevoznu tvrtku koja bi preuzela našu tvrtku.{}{}Želiš li kupiti tvrtku {COMPANY} za {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktura od {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Dijelovi pruge: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signali STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Dijelovi ceste: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Cesta STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvajska pruga STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Pločice vode: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanali STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Pločice stanice STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aerodromi STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/god ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/god # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrije STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ništa - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% prevezeno) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% prevezeno) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Imena industrija - za centriranje pogleda klikni na ime. Ctrl+klik otvara novi prozor sa lokacijom industrije # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Prošlomjesečna proizvodnja: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% prevezeno) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centriraj glavni pogled na položaj industrije. Ctrl+klik otvara novi prozor sa lokacijom industrije STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Razina proizvodnje: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Teret koji čeka obradu: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Promijeni proizvodnju (višekratnik broja 8, do 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Promijeni razinu proizvodnje (postotak, do najviše 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} vlak{P "" a ova} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} cestovn{P o a ih} vozil{P o a a} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} brod{P "" a ova} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} zrakoplova STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vlakovi - klikni na vlak za informacije STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Cestovna vozila - klikni na vozilo za informacije STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Brodovi - klikni na brod za informacije STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Zrakoplov - klikni na zrakoplov za informacije STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Ovogodišnja dobit: {CURRENCY_LONG} (prošlogodišnja: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Dostupni vlakovi STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Dostupna vozila STR_VEHICLE_LIST_AVAILABLE_SHIPS :Dostupni brodovi STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Dostupni zrakoplovi STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Pogledaj popis dostupnih dizajna motora za ovu vrstu vozila. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Uredi popis STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Pošalji upute svim vozilima na ovom popisu STR_VEHICLE_LIST_REPLACE_VEHICLES :Zamjeni vozila STR_VEHICLE_LIST_SEND_FOR_SERVICING :Pošalji na servis STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Pošalji u spremište STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Pošalji u spremište STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Pošalji u spremište STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Pošalji u hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikni za zaustavljanje svih vozila na popisu STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikni za pokretanje svih vozila na popisu STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Dijeljene naredbe za {COMMA} vozil{P o a a} # Group window STR_GROUP_ALL_TRAINS :Svi vlakovi STR_GROUP_ALL_ROAD_VEHICLES :Sva cestovna vozila STR_GROUP_ALL_SHIPS :Svi brodovi STR_GROUP_ALL_AIRCRAFTS :Svi zrakoplovi STR_GROUP_DEFAULT_TRAINS :Negrupirani vlakovi STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupirana cestovna vozila STR_GROUP_DEFAULT_SHIPS :Negrupirani brodovi STR_GROUP_DEFAULT_AIRCRAFTS :Negrupirani zrakoplovi STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groupe - klikni na grupu kako bi izlistao sva vozila ove grupe STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikni za kreiranje grupe STR_GROUP_DELETE_TOOLTIP :{BLACK}Obriši odabranu grupu STR_GROUP_RENAME_TOOLTIP :{BLACK}Preimenuj odabranu grupu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikni kako bi zaštitio ovu grupu od globalne automatske zamjene STR_GROUP_ADD_SHARED_VEHICLE :Dodaj dijeljena vozila STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozila STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj grupu # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nova željeznička vozila STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nova električna pružna vozila STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nova jednotračna željeznička vozila STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nova vozila Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nova pružna vozila STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nova cestovna vozila STR_BUY_VEHICLE_SHIP_CAPTION :Novi brodovi STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Novi zrakoplov STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cijena: {GOLD}{CURRENCY_LONG}{BLACK} Težina {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Brzina: {GOLD}{VELOCITY}{BLACK} Snaga: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Brzina: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Brzina na oceanu: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Brzina na kanalu/rijeci: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Trošak uporabe: {GOLD}{CURRENCY_LONG}/god STR_PURCHASE_INFO_CAPACITY :{BLACK}Nosivost: {GOLD}{CARGO_LONG}{STRING} STR_PURCHASE_INFO_REFITTABLE :(prenamjenjiv) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Dizajnirano: {GOLD}{NUM}{BLACK} Životni vijek: {GOLD}{COMMA} godina STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. pouzdanost: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cijena: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Težina: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Trošak: {GOLD}{CURRENCY_LONG}{BLACK} Brzina: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Nosivost: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK} Pokretni vagoni:.{GOLD}+{POWER}{BLACK} Težina: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Prenamjenjivo u: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Sve vrste tereta STR_PURCHASE_INFO_ALL_BUT :Sve osim {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK} Maks. vučni napor: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} pločica STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Popis izabranih vlakova - klikni na vlak za informacije STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Popis izabranih cestovnih vozila - klikni na vozilo za informacije STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Popis izabranih brodova - klikni na brod za informacije STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Popis izabranih zrakoplova - klikni na zrakoplov za informacije STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kupi vozilo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kupi vozilo STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kupi brod STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kupi zrakoplov STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi označeni vlak. Shift+Klik prikazuje trošak bez kupnje. STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi označeno cestovno vozilo. Shift+Klik prikazuje trošak bez kupnje. STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi označeni brod. Shift+Klik prikazuje trošak bez kupnje. STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi označeni zrakoplov. Shift+Klik prikazuje trošak bez kupnje. STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Preimenuj vrstu vagona STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Preimenuj vrstu cestovnog vozila STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Preimenuj vrstu broda STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Preimenuj vrstu zrakoplova STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Preimenuj vrstu vagona STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Preimenuj vrstu cestovnog vozila STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Preimenuj vrstu broda STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Preimenuj vrstu zrakoplova # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Promijeniti ime depoa STR_DEPOT_RENAME_DEPOT_CAPTION :Preimenovati depo STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vozil{P o a a}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlakovi - drži lijevi klik i vuci vozilo za dodavanje/skidanjed iz vlaka, desni klik za informacije. Drži tipku Ctrl da obje funkcije rade na slijedu STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vozila - desni klik na vozilo za informacije STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Brodovi - desni klik na brod za informacije STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Zrakoplov - desni klik na zrakoplov za informacije STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Ovdje povuci vlak kako bi ga prodao STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Povuci cestovno vozilo ovdje kako bi ga prodao STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Povuci brod ovdje kako bi ga prodao STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Povuci zrakoplov ovdje kako bi ga prodao STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Ovdje povuci lokomotivu kako bi prodao cijeli vlak STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Prodaj sve vlakove u spremištu STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Prodaj sva cestovna vozila u spremištu STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Prodaj sve brodove u spremištu STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Prodaj sve zrakoplove u hangaru STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Automatski zamijeni sve vlakove u spremištu STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Automatski zamijeni sva cestovna vozikla u spremištu STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Automatski zamijeni sve brodove u spremištu STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Automatski zamijeni sve zrakoplove u hangaru STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nova vozila STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nova vozila STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Novi brodovi STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Novi zrakoplov STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novo željezničko vozilo STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novo cestovno vozilo STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novi brod STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novi zrakoplov STR_DEPOT_CLONE_TRAIN :{BLACK}Kloniraj vlak STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kloniraj vozilo STR_DEPOT_CLONE_SHIP :{BLACK}Kloniraj brod STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloniraj zrakoplov STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju vlaka uključujući sve vagone. Kliknite na ovaj gumb i onda na vlak unutar ili izvan spremišta. Ctrl+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju cestovnog vozila. Klikni na ovaj gumb i onda na cestovno vozilo unutar ili izvan spremišta. CTRL+Klik će dijeliti naredbe. Shift+Klik prikazuje procijenjeni trošak bez kupnje. STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ovo će kupiti kopiju broda. Klikni na ovaj gumb i onda na brod unutar ili izvan spremišta. Ctrl+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ovo će kupiti kopiju zrakoplova. Klikni ovaj gumb i onda na zrakoplov unutar ili izvan hangara. Control+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju spremišta vlakova. Ctrl+klik otvara novi prozor s pogledom na lokaciju spremišta vlakova. STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju spremišta cestovnih vozila. Ctrl+klik otvara novi prozor s pogledom na lokaciju spremišta cestovnih vozila. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju spremišta brodova. Ctrl+klik otvara novi prozor s pogledom na lokaciju spremišta brodova. STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centriraj glavni pogled na lokaciju hangara. Ctrl+klik otvara novi prozor s pogledom na lokaciju hangara. STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Daje popis svih vlakova koji imaju trenutno spremište među svojim naredbama STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Daje popis svih cestovnih vozila koje imaju trenutno spremište među svojim naredbama STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Daje popis svih brodova koji imaju trenutno spremište među svojim naredbama STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Daje popis svih zrakoplova koji imaju bilo koji hangar ove zračne luke među svojim naredbama STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikni za zaustavljanje svih vlakova u spremištu STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikni za zaustavljanje svih cestovnih vozila u spremištu STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klikni za zaustavljanje svih brodova u spremištu STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klikni za zaustavljanje svih zrakoplova u hangaru STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikni za pokretanje svih vlakova u spremištu STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikni za pokretanje svih cestovnih vozila u spremištu STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klikni za pokretanje svih brodova u spremištu STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klikni za pokretanje svih zrakoplova u hangaru STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Upravo se spremaš prodati sva vozila u spremištu. Jesi li siguran? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Poruka od proizvođača vozila STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Upravo smo dizajnirali novi {STRING} - jeste li zainteresirani za jednogodišnje ekskluzivno pravo uporabe ovog vozila, kako bi vidjeli kako se vozilo ponaša prije nego što postane univerzalno dostupno? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :željeznička lokomotiva STR_ENGINE_PREVIEW_ROAD_VEHICLE :cestovno vozilo STR_ENGINE_PREVIEW_AIRCRAFT :zrakoplov STR_ENGINE_PREVIEW_SHIP :brod STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :jednotračna željeznička lokomotiva STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomotiva STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cijena: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER}{}Trošak uporabe: {CURRENCY_LONG}/god{}Kapacitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Trošak: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER} Maks. T.E.: {6:FORCE}{}Trošak uporabe: {4:CURRENCY_LONG}/god{}Nosivost: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}, {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cijena: {CURRENCY_LONG} Maks. brzina: {VELOCITY} Domet: {COMMA} tiles{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Trošak vožnje: {CURRENCY_LONG}/god STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cijena: {CURRENCY_LONG} Maks. Brzina: {VELOCITY} Domet: {COMMA} tiles{}Kapacitet: {CARGO_LONG}{}Trošak vožnje: {CURRENCY_LONG}/god # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zamijeni {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Vlak STR_REPLACE_VEHICLE_ROAD_VEHICLE :Cestovno vozilo STR_REPLACE_VEHICLE_SHIP :Brod STR_REPLACE_VEHICLE_AIRCRAFT :Zrakoplov STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izaberi vrstu motora koju želiš zamijeniti STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Odaberite novu vrstu lokomotive koji želite koristiti umjesto lijevo odabrane vrste lokomotive STR_REPLACE_VEHICLES_START :{BLACK}Počni zamijenjivati vozila STR_REPLACE_VEHICLES_NOW :Zamijeni sva vozila sada STR_REPLACE_VEHICLES_WHEN_OLD :Zamijeni samo stara vozila STR_REPLACE_HELP_START_BUTTON :{BLACK}Klikni za početak zamjene lijevo odabrane lokomotive sa desno odabranom vrstom STR_REPLACE_NOT_REPLACING :{BLACK}Ne zamijenjujem STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Niti jedno vozilo nije odabrano STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} kada je staro STR_REPLACE_VEHICLES_STOP :{BLACK}Prestani zamijenjivati vozila STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikni za zaustavljanje zamjene lijevo odabrane vrste lokomotive STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Zamjenjujem:{ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Prebaci između prozora za izmjenu lokomotiva i vagona STR_REPLACE_ENGINES :Lokomotive STR_REPLACE_WAGONS :Vagoni STR_REPLACE_HELP_RAILTYPE :{BLACK}Odaberite vrstu željeznice za koju želite zamijeniti lokomotive STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Prikazuje sa kojom se lokomotivom zamjenjuje lijevo odabrana lokomotiva, ako postoji koji STR_REPLACE_RAIL_VEHICLES :Pružna vozila STR_REPLACE_ELRAIL_VEHICLES :Električna pružna vozila STR_REPLACE_MONORAIL_VEHICLES :Jednotračna vozila STR_REPLACE_MAGLEV_VEHICLES :Željeznička vozila Maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Uklanjanje vagona: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Automatska zamjena zadržava istu dužinu vlaka tako da ukloni suvišne vagone (počevši od naprijed), ako bi zamjena lokomotive učinila vlak dužim # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centriranje glavnog prozora na lokaciju vlaka. Ctrl+klik slijedi vlak u glavni prozor STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centriranje glavnog prozora na lokaciju vozila. Ctrl+klik slijedi vozilo u glavni prozor STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centriranje glavnog prozora na lokaciju broda. Ctrl+klik slijedi brod u glavni prozor STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centriranje glavnog prozora na lokaciju zrakoplova. Ctrl+klik slijedi zrakoplov u glavni prozor STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošalji vlak u spremište. CTRL+klik će samo servisirati STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošalji vozilo u spremište. Ctrl+klik će samo servisirati STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošalji brod u spremište. Ctrl+klik će samo servisirati STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošalji zrakoplov u hangar. Ctrl+klik će samo servisirati STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ovo će kupiti kopiju vlaka uključujući sve vagone. Control+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ovo će kupiti kopiju cestovnog vozila. Control+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ovo će kupiti kopiju broda. Control+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ovo će kupiti kopiju zrakoplova. Control+Klik će dijeliti naredbe. Shift+Klik prikazuje trošak bez kupnje. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Natjeraj vlak da nastavi bez čekanja signala odobrenja STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Prenamijeni vlak za prijevoz neke druge vrste tereta STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Prenamijeni cestovno vozilo za prijevoz neke druge vrste tereta STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Prenamijeni teretni brod za prijevoz neke druge vrste tereta STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Prenamijeni zrakoplov za prijevoz neke druge vrste tereta STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Promijeni smjer vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Natjeraj vozila da se okrene natrag STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Pokaži naredbe vlaka. Ctrl+klik za prikazivanje voznog reda vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Pokaži naredbe vozila. Ctrl+klik za prikazivanje voznog reda vozila STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Pokaži naredbe broda. Ctrl+klik za prikazivanje voznog reda broda STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Pokaži naredbe zrakoplova. Ctrl+klik za prikazivanje voznog reda zrakoplova STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaži detalje vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaži detalje cestovnog vozila STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaži detalje broda STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaži detalje zrakoplova STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Trenutna radnja vlaka - pritisni za zaustavljanje/pokretanje vlaka. Ctrl+klik za odlazak do odredišta. STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Trenutna radnja vozila - pritisni za zaustavljanje/pokretanje vozila. Ctlr+klik za odlazak do odredišta. STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Trenutna radnja broda - pritisni za zaustavljanje/pokretanje broda. Ctrl+klik za odlazak do odredišta. STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Trenutna radnja zrakoplova - pritisni za zaustavljanje/pokretanje zrakoplova. Ctrl+klik za odlazak do odredišta. # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Utovar / Istovar STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Odlazeći STR_VEHICLE_STATUS_CRASHED :{RED}Slupan! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Pokvareno STR_VEHICLE_STATUS_STOPPED :{RED}Zaustavljen STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Zaustavljam, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nema struje STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Čekanje slobodne putanje STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Predaleko do sljedećeg odredišta STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Kreće se prema {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Nema naredbi, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ide prema {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Na putu za {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servis u {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Zaustavljen STR_VEHICLE_COMMAND_STOPPED :{RED}Zaustavljen STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Pokrenut STR_VEHICLE_COMMAND_STARTED :{GREEN}Pokrenut # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detalji) STR_VEHICLE_NAME_BUTTON :{BLACK}Ime STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Imenuj vlak STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Imenuj cestovno vozilo STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Imenuj brod STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Imenuj zrakoplov STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Godine: {LTBLUE}{STRING}{BLACK} Trošak uporabe: {LTBLUE}{CURRENCY_LONG}/god # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} godin{P a e a} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} godin{P a e a} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} pločica STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Maks. brzina: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Dobit ove godine: {LTBLUE}{CURRENCY_LONG} (prošle godine: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Pouzdanost: {LTBLUE}{COMMA}% {BLACK}Broj kvarova od posljednjeg servisa: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Izgrađen: {LTBLUE}{NUM}{BLACK} Vrijednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Nosivost: {LTBLUE}Ništa{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Nosivost: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Nosivost: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Nosivost: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Prebaci novac: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Servisni interval: {LTBLUE}{COMMA}dana{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Servisni interval: {LTBLUE}{COMMA}%{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Povećaj servisni interval za 10. Ctrl+klik povećava servisni interval za 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Smanji servisni interval za 10. Ctrl+klik smanjuje servisni interval za 5. STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Izmijeni vrstu servisnog intervala STR_VEHICLE_DETAILS_DEFAULT :Osnovno STR_VEHICLE_DETAILS_DAYS :Dani STR_VEHICLE_DETAILS_PERCENT :Postotak STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Imenuj vlak STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Imenuj cestovno vozilo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Imenuj brod STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Imenuj zrakoplov # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Izgrađen: {LTBLUE}{NUM}{BLACK} Vrijednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Vrijednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Ukupna nosivost tereta ovog vlaka: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Prazan STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} iz {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} iz {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Teret STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Pokaži detalje tereta koji se prevozi STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informacije STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Pokaži detalje vagona STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Nosivosti STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Pokaži nosivosti svakog vagona STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Ukupni teret STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Pokaži ukupnu nosivost vlaka podijeljenu prema vrsti tereta STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Nosivost: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Prenamijeni) STR_REFIT_TITLE :{GOLD}Odaberi vrstu tereta za prijevoz: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova nosivost: {GOLD}{CARGO_LONG}{}{BLACK}Cijena prenamjene: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Prihod od remonta: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Trošak remonta: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihod od remonta: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Odaberi vozila za remont. Povlačenje mišem dozvoljava odabir više vozila. Klik na prazninu će označiti cijelo vozilo. Ctrl+Klik će označiti vozilo i niz koji slijedi. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta koju će vlak prevoziti STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta koje će cestovno vozilo prevoziti STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta za prijevoz brodom STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta koju će zrakoplov prevoziti STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Prenamijeni vlak STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Prenamijeni cestovno vozilo STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Prenamijeni brod STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Prenamijeni zrakoplov STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Prenamijeni vlak za prijevoz označene vrste tereta STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Prenamijeni cestovno vozilo za prijevoz označene vrste tereta STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Prenamijeni brod za prijevoz označene vrste tereta STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Prenamijeni zrakoplov za prijevoz označene vrste tereta # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Naredbe) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Vozni red STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Promijeni na pogled voznog reda STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista naredbi - klikni na naredbu kako bi je označio. Ctrl+Klik klizi na odredište naredbe STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Kraj naredbi - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Kraj dijeljenih naredbi - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Neprekidno STR_ORDER_GO_TO :Idi prema STR_ORDER_GO_NON_STOP_TO :Idi neprekidno prema STR_ORDER_GO_VIA :Idi preko STR_ORDER_GO_NON_STOP_VIA :Idi neprekidno preko STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Promijeni zaustavno ponašanje označene naredbe STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Puni ukrcaj bilo kojeg tereta STR_ORDER_DROP_LOAD_IF_POSSIBLE :Ukrcaj ako je dostupno STR_ORDER_DROP_FULL_LOAD_ALL :Puni ukrcaj svega tereta STR_ORDER_DROP_FULL_LOAD_ANY :Puni ukrcaj bilo kojeg tereta STR_ORDER_DROP_NO_LOADING :Nema iskrcaja STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Promijeni ukrcajno ponašanje označene naredbe STR_ORDER_TOGGLE_UNLOAD :{BLACK}Iskrcaj sve STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Iskrcaj ako je prihvaćeno STR_ORDER_DROP_UNLOAD :Iskrcaj sve STR_ORDER_DROP_TRANSFER :Transferiraj STR_ORDER_DROP_NO_UNLOADING :Nema iskrcaja STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Promijeni iskrcajno ponašanje označene naredbe STR_ORDER_REFIT :{BLACK}Prenamijeni STR_ORDER_REFIT_TOOLTIP :{BLACK}Odaberi vrstu tereta za prenamijenu u ovoj naredbi. Ctrl+klik kako bi uklonio naputak za prenamjenu STR_ORDER_REFIT_AUTO :{BLACK}Auto-remont STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Odaberi za koji tip tereta odraditi auto-remont. Ctrl+Click za micanje remontnih uputa. Auto-remont će se odraditi samo ako ga vozilo dopušta. STR_ORDER_DROP_REFIT_AUTO :Popravljen teret STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupni teret STR_ORDER_SERVICE :{BLACK}Servis STR_ORDER_DROP_GO_ALWAYS_DEPOT :Idi neprekidno STR_ORDER_DROP_SERVICE_DEPOT :Servisiraj prema potrebi STR_ORDER_DROP_HALT_DEPOT :Stani STR_ORDER_SERVICE_TOOLTIP :{BLACK}Preskoči ovu narudžbu osim ako servis nije potreban STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Podaci vozila prema kojima se zasniva skok # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Postotak ukrcaja STR_ORDER_CONDITIONAL_RELIABILITY :Pouzdanost STR_ORDER_CONDITIONAL_MAX_SPEED :Maksimalna brzina STR_ORDER_CONDITIONAL_AGE :Starost vozila (godine) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Treba servis STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Uvijek STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Preostali životni vijek (godina) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kako usporediti podatke vozila sa zadanom vrijednošću STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :je jednako STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nije jednako STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :je manje od STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :je manje ili jednako STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :je više od STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :je više ili jednako STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :je istinito STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :je lažno STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Vrijednost s kojim se uspoređuju podaci vozila STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Unesi vrijednost s kojom će se porediti STR_ORDERS_SKIP_BUTTON :{BLACK}Preskoči STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskoči trenutnu naredbu i pokreni slijedeću. CTRL + klik preskače na odabranu naredbu STR_ORDERS_DELETE_BUTTON :{BLACK}Obriši STR_ORDERS_DELETE_TOOLTIP :{BLACK}Obriši označenu naredbu STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Izbriši sve naredbe STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Prekini dijeljenje STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Prekini dijeljenje liste naredbi. Ctrl+Klik dodatno briše sve naredbe za ovo vozilo STR_ORDERS_GO_TO_BUTTON :{BLACK}Idi do STR_ORDER_GO_TO_NEAREST_DEPOT :Idi do najbližeg spremišta STR_ORDER_GO_TO_NEAREST_HANGAR :Idi do najbližeg hangara STR_ORDER_CONDITIONAL :Uvjetovani skok na naredbu STR_ORDER_SHARE :Dijeli naredbe STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Umetni novu naredbu prije označene naredbe, ili dodaj na kraj liste. Ctrl određuje naredbe stanice 'napuni do kraja bilo koji teret', naredbe prolaznih točki 'non-stop', a naredbe depoa 'servisiraj'. 'Dijeli naredbe' ili Ctrl dozvoljava da ovo vozilo dijeli naredbe sa odabranim vozilom. Klik na vozilo kopira naredbe tog vozila. Naredba depoa isključuje automatsko servisiranje vozila. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Pokaži sva vozila koja dijele ovaj raspored. # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Idi preko {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Idi neprekidno preko čvorišta {WAYPOINT} STR_ORDER_SERVICE_AT :Servisiraj kod STR_ORDER_SERVICE_NON_STOP_AT :Servisiraj neprekidno kod STR_ORDER_NEAREST_DEPOT :najbliži STR_ORDER_NEAREST_HANGAR :najbliži hangar STR_ORDER_TRAIN_DEPOT :Spremište vlakova STR_ORDER_ROAD_VEHICLE_DEPOT :Spremište cestovnih vozila STR_ORDER_SHIP_DEPOT :Spremište brodova STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Prenamijeni u {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Prenamijeni u {STRING} i zaustavi se) STR_ORDER_STOP_ORDER :(Stani) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Implicitno) STR_ORDER_FULL_LOAD :(Puni ukrcaj) STR_ORDER_FULL_LOAD_ANY :(Puni ukrcaj bilo kojeg tereta) STR_ORDER_NO_LOAD :(Nema ukrcaja) STR_ORDER_UNLOAD :(Iskrcaj i preuzmi teret) STR_ORDER_UNLOAD_FULL_LOAD :(Iskrcaj i čekaj puni ukrcaj) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Iskrcaj i čekaj bilo koji puni ukrcaj) STR_ORDER_UNLOAD_NO_LOAD :(Iskcraj i otiđi prazan) STR_ORDER_TRANSFER :(Transferiraj i preuzmi teret) STR_ORDER_TRANSFER_FULL_LOAD :(Transferiraj i čekaj puni ukrcaj) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferiraj i čekaj na bilo koji puni ukrcaj) STR_ORDER_TRANSFER_NO_LOAD :(Transferiraj i otiđi prazan) STR_ORDER_NO_UNLOAD :(Preuzmi teret bez iskrcavanja) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Čekaj puni ukrcaj bez iskrcavanja) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Čekaj bilo koji puni ukrcaj bez iskrcavanja) STR_ORDER_NO_UNLOAD_NO_LOAD :(Bez iskrcaja i bez ukrcaja) STR_ORDER_AUTO_REFIT :(Auto-remont u {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Puni teret sa auto-remontom u {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Bilo koji puni teret sa auto-remontom u {STRING}) STR_ORDER_UNLOAD_REFIT :(Iskrcaj i preuzimanje tereta sa auto-remontom u {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Iskrcaj i čekanje punog tereta sa auto-remontom u {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Iskrcaj i čekanje bilo kojeg punog tereta sa auto-remontom u {STRING}) STR_ORDER_TRANSFER_REFIT :(Transfer i preuzimanje tereta sa auto-remontom u {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer i čekanje punog tereta sa auto-remontom u {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer i čekanje bilo kojeg punog tereta sa auto-remontom u {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Bez iskrcaja i preuzimanje tereta sa auto-remontom u {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Bez iskrcaja i čekanje punog tereta sa auto-remontom u {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Bez iskrcaja i čekanje bilo kojeg punog tereta sa auto-remontom u {STRING}) STR_ORDER_AUTO_REFIT_ANY :dostupan teret STR_ORDER_STOP_LOCATION_NEAR_END :[početak] STR_ORDER_STOP_LOCATION_MIDDLE :[sredina] STR_ORDER_STOP_LOCATION_FAR_END :[kraj] STR_ORDER_OUT_OF_RANGE :{RED} (Sljedeća destinacija je izvan dometa) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Skočin na naredbu {COMMA} STR_ORDER_CONDITIONAL_NUM :Skoči na naredbu {COMMA} kada {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Skoči na naredbu {COMMA} kada {STRING} {STRING} STR_INVALID_ORDER :{RED} (Neispravna naredba) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Vozni red) STR_TIMETABLE_ORDER_VIEW :{BLACK}Naredbe STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Promijeni na pregled naredbi STR_TIMETABLE_TOOLTIP :{BLACK}Vozni red - klikni na naredbu kako bi ju označio. STR_TIMETABLE_NO_TRAVEL :Nema putovanja STR_TIMETABLE_NOT_TIMETABLEABLE :Putovanje (automatsko; prema rasporedu sljedeće ručno određene naredbe) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Putovanje (izvan voznog reda) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Putuj uz najviše {2:VELOCITY} (not timetabled) STR_TIMETABLE_TRAVEL_FOR :Putovanje za {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Putuj prema {STRING} uz najviše {VELOCITY} STR_TIMETABLE_STAY_FOR :i boravak za {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :i putovanje za {STRING} STR_TIMETABLE_DAYS :{COMMA} dan{P "" a a} STR_TIMETABLE_TICKS :{COMMA} otkucaj{P "" a a} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ovaj vozni red trebat će {STRING} za završetak STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ovaj vozni red trebat će najmanje {STRING} za završetak (nije sve raspoređeno) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ovo vozilo trenutno vozi na vrijeme STR_TIMETABLE_STATUS_LATE :{BLACK}Ovo vozilo trenutno {STRING} kasni STR_TIMETABLE_STATUS_EARLY :{BLACK}Ovo vozilo trenutno stiže {STRING} ranije STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ovaj vozni red još nije započeo STR_TIMETABLE_STATUS_START_AT :{BLACK}Ovaj će vozni red početi u {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Početni datum STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Odaberi početni datum za ovaj vozni red. STR_TIMETABLE_CHANGE_TIME :{BLACK}Promijeni vrijeme STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Promijeni količinu vremena koju bi označena naredba trebala uzeti STR_TIMETABLE_CLEAR_TIME :{BLACK}Obriši vrijeme STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Obriši vrijeme potrebno za označenu naredbu STR_TIMETABLE_CHANGE_SPEED :{BLACK}Izmijeni limit brzine STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Izmijeni maksimalnu putnu brzinu za označenu naredbu STR_TIMETABLE_CLEAR_SPEED :{BLACK}Izbriši limit brzine STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Izbriši maksimalnu putnu brzinu za označenu naredbu STR_TIMETABLE_RESET_LATENESS :{BLACK}Poništi brojač kašnjenja STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Resetiraj brojač kašnjenja, kako bi vozilo stiglo na vrijeme STR_TIMETABLE_AUTOFILL :{BLACK}Automatsko punjenje STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Automatski popuni vozni red s vrijednostima iz sljedećeg putovanja (Ctrl+klik kako bi pokušali zadržati vremena čekanja) STR_TIMETABLE_EXPECTED :{BLACK}Očekivano STR_TIMETABLE_SCHEDULED :{BLACK}Raspoređeno STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Promijeni između očekivanog i zadanog STR_TIMETABLE_ARRIVAL_ABBREVIATION :D: STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Odredi datum STR_DATE_SET_DATE :{BLACK}Odredi datum STR_DATE_SET_DATE_TOOLTIP :{BLACK}Upotrijebi odabrani datum kao početni datum za vozni red STR_DATE_DAY_TOOLTIP :{BLACK}Odaberi dan STR_DATE_MONTH_TOOLTIP :{BLACK}Odaberi mjesec STR_DATE_YEAR_TOOLTIP :{BLACK}Odaberi godinu # AI debug window STR_AI_DEBUG :{WHITE}Debugiranje UI-ja/Skripte igre STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ime skripte STR_AI_DEBUG_SETTINGS :{BLACK}Postavke STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Promijeni postavke skripte STR_AI_DEBUG_RELOAD :{BLACK}Ponovno učitaj UI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Ubij UI, ponovno učitaj skriptu i ponovno pokreni UI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Uključi/isključi prekid kada neka UI poruka odgovara prekidnom nizu STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Prekid kod: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Prekid kod STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Kada zapis UI poruka odgovara ovom nizu, igra se pauzira. STR_AI_DEBUG_MATCH_CASE :{BLACK}Prilagodi veličinu slova STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Prilagodi veličinu slova kod uspoređivanja zapisa UI poruka sa prekidnim nizom STR_AI_DEBUG_CONTINUE :{BLACK}Nastavi STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Prekini pauzu i nastavi UI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Pogledaj izvještaj otklanjanja neispravnosti za ovu UI STR_AI_GAME_SCRIPT :{BLACK}Skripta Igre STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Provjeri zapis Skripte Igre STR_ERROR_AI_NO_AI_FOUND :Nema prikladne UI za učitavanje.{}Ova UI je samo model i neće ništa učiniti.{}Možete preuzeti nekoliko umjetnih inteligencija pomoću sustava 'Online sadržaji'. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jedna od pokrenutih skripti se srušila. Molimo vas da prijavite ovo autoru skripte sa slikom prozora za debugiranje UI-ja/Skripte igre. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Prozor za debugiranje UI-ja/Skripte igre je dopušten samo za poslužitelj # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Konfiguracija UI-ja/Skripte igre STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Skripta Igre koja će biti učitana u sljedećoj igri STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}UI-jevi koji će biti učitani u sljedećoj igri STR_AI_CONFIG_HUMAN_PLAYER :Ljudski igrač STR_AI_CONFIG_RANDOM_AI :Nasumična UI STR_AI_CONFIG_NONE :(nijedan) STR_AI_CONFIG_MOVE_UP :{BLACK}Pomakni gore STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Pomakni odabrani UI gore na listi STR_AI_CONFIG_MOVE_DOWN :{BLACK}Pomakni dolje STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Pomakni odabrani UI dolje na listi STR_AI_CONFIG_GAMESCRIPT :{SILVER}Skripta Igre STR_AI_CONFIG_AI :{SILVER}UI-jevi STR_AI_CONFIG_CHANGE :{BLACK}Odaberi {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :UI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Skripta Igre STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Učitaj drugu skriptu STR_AI_CONFIG_CONFIGURE :{BLACK}Konfiguriraj STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfiguriraj parametre izabrane skripte # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Dostupno {STRING} STR_AI_LIST_CAPTION_AI :UI-jevi STR_AI_LIST_CAPTION_GAMESCRIPT :Skripte Igre STR_AI_LIST_TOOLTIP :{BLACK}Klikni za izbor skripte STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Verzija: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Prihvati STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Odaberi posvijetljenu skriptu STR_AI_LIST_CANCEL :{BLACK}Odustani STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nemoj mijenjati skriptu # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametri STR_AI_SETTINGS_CAPTION_AI :UI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Skripta Igre STR_AI_SETTINGS_CLOSE :{BLACK}Zatvori STR_AI_SETTINGS_RESET :{BLACK}Resetiraj STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Broj dana za start ovog UI-ja nakon prethodnog (otprilike): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} "pročitaj me" datoteka od {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} zapis izmjena od {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licenca od {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Pogledaj "pročitaj me" datoteku STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Zapis izmjena STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenca # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cijena: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Cijena: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Prihod: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Prihod: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Prebaci: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Prebaci: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Predviđena cijena: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predviđeni prihod: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Spremanje još u tijeku,{}molimo pričekajte dok se ne završi! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatsko spremanje neuspješno STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne mogu pročitati disk STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spremanje igre nije uspjelo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne mogu obrisati datoteku STR_ERROR_GAME_LOAD_FAILED :{WHITE}Učitavanje igre nije uspjelo{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna greška: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Pokvarena spremljena igra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spremljena igra je stvorena s novijom verzijom STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Datoteka nije čitljiva STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Ne mogu pisati u datoteku STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Provjera integriteta podataka nije uspjela STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Igra je bila spremljena u verziji bez podrške za tramvaje. Svi tramvaji su uklonjeni. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generiranje mape prekinuto...{}... ne postoje pogodne lokacije za gradove STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... u ovom scenariju nema gradova STR_ERROR_PNGMAP :{WHITE}Nije moguće učitati krajolik iz PNG-a... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... datoteka nije pronađena. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... ne mogu pretvoriti vrstu slike. Potrebna je 8 ili 24-bitna PNG slika. STR_ERROR_PNGMAP_MISC :{WHITE}... nešto je otišlo u krivom smjeru (vjerojatno je pokvarena datoteka) STR_ERROR_BMPMAP :{WHITE}Nije moguće učitati krajolik iz BMP-a... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... ne mogu pretvoriti vrstu slike. STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... slika je prevelika STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Upozorenje o veličini STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Prekomjerna promjena veličine karte nije preporučena. Nastaviti sa kreiranjem? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Pronađen je samo sigurnosni zvučni sustav. Ako želite zvukove, instalirajte set zvukova kroz sustav za preuzimanje sadržaja. # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Velika slika STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Slika će imati rezoluciju od {COMMA} x {COMMA} piksela. Slikanje može potrajati. Da li želite nastaviti? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Slika zaslona uspješno spremljena kao '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Slika zaslona nije uspjela! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Poruka STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Poruka od {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Izvan rubova karte STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Preblizu rubu karte STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nedovoljno gotovine - potrebno je {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Potrebna ravna površina STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Zemlja nakošena u krivom smjeru STR_ERROR_CAN_T_DO_THIS :{WHITE}To nije moguće učiniti... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Najprije je potrebno srušiti građevinu STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nije moguće očistiti ovo područje... STR_ERROR_SITE_UNSUITABLE :{WHITE}... neprikladno mjesto STR_ERROR_ALREADY_BUILT :{WHITE}... već izgrađeno STR_ERROR_OWNED_BY :{WHITE}... u vlasništvu {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... područje je u vlasništvu druge tvrtke STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... dosegnut limit preobrazbe terena STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... dosegnut limit čišćenja polja STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... dosegnut limit sađenja drveća STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Ime mora biti jedinstveno STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} na putu STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nije dozvoljeno za vrijeme pauze # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} lokalna samouprava odbija to dopustiti STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Lokalna samouprava grada {TOWN}a odbija dopustiti izgradnju još jedne zračne luke u ovom gradu STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} ne dopušta izgradnju zračne luke zbog brige o buci STR_ERROR_BRIBE_FAILED :{WHITE}Vaš pokušaj podmićivanja je primijetio regionalni istražitelj # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Ovdje nije moguće povisiti zemlju... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Ovdje nije moguće sniziti zemlju... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Ovdje nije moguće sravniti zemlju... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Iskopavanje bi oštetilo tunel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Već je na razini mora STR_ERROR_TOO_HIGH :{WHITE}Previsoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... već je sravnjeno # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ime tvrtke nije moguće promijeniti... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Nije moguće promijeniti ime direktora... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... najveći dopušteni zajam iznosi {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Nije moguće posuditi još više novaca... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... nema zajma za otplatu STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} potrebno STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nije moguće otplatiti zajam... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nije moguće dati novac koji je pozajmljen od banke... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nije moguće kupiti tvrtku... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nije moguće izgraditi sjedište tvrtke... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nije moguće kupiti 25% udjela u ovoj tvrtci... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Nije moguće prodati 25% udjela u ovoj tvrtci... STR_ERROR_PROTECTED :{WHITE}Ova tvrtka još nije dovoljno stara da bi trgovala udjelima... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nije moguće graditi gradove STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nije moguće preimenovati grad... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Ovdje nije moguće izgraditi grad... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Nemoguće proširiti grad... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... preblizu rubu karte STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... preblizu drugome gradu STR_ERROR_TOO_MANY_TOWNS :{WHITE}... previše gradova STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nema više mjesta na karti STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Grad neće graditi ceste. Možete uključiti gradnju cesta putem Naprednih postavki -> Ekonomija -> Gradovi STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Cestovni radovi u tijeku STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nije moguće izbrisati ovaj grad...{}Postaja ili spremište se pozivaju na grad ili polja u vlasništvu grada nije moguće ukloniti STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nema odgovarajućeg mjesta za kip u središtu ovog grada # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... previše industrija STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nije moguće generirati industrije... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Ovdje nije moguće izgraditi {STRING}... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Ovdje nije moguće izgraditi ovu vrstu industrije... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... preblizu drugoj industriji STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... najprije je potrebno osnovati grad STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... dopušten je samo jedan po gradu STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{G=male}{WHITE}... može biti izgrađen samo u gradovima s najmanje 1.200 stanovnika STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... može biti izgrađen samo u predjelima kišnih šuma STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... može biti izgrađen samo u pustinjskim područjima STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... može biti izgrađen samo u gradovima (zamjenjujući kuće) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... može biti izgrađen samo blizu središta gradova STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... može biti izgrađen samo u nizinskim područjima STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... može se postaviti samo blizu rubova karte STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... šume mogu biti posađene jedino iznad linije snijega STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... moguće graditi samo iznad razine snijega STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... moguće graditi samo ispod razine snijega # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ovdje nije moguće izgraditi željezničku postaju... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nije moguće izgraditi autobusnu postaju... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nije moguće izgraditi kamionski terminal... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nije moguće izgraditi putničku tramvajsku postaju... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nije moguće izgraditi teretnu tramvajsku postaju... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Ovdje nije moguće izgraditi pristanište... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Ovdje nije moguće izgraditi zračnu luku... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Spaja više od jedne postojeće postaje/terminala STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... postaja previše proširena STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Previše postaja/terminala STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Previše dijelova željezničke postaje STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Previše autobusnih postaja STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Previše kamionskih postaja STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Preblizu drugoj postaji/terminalu STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Preblizu drugom pristaništu STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Preblizu drugoj zračnoj luci STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nije moguće preimenovati postaju... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ovo je gradska cesta STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... cesta je orijentirana u krivom smjeru STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... prolazne stanice ne mogu imati zavoje STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... prolazne stanice ne mogu imati raskrižja # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nije moguće ukloniti dio postaje... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Najprije je potrebno ukloniti željezničku postaju STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nije moguće ukloniti autobusnu postaju... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nije moguće ukloniti kamionsku postaju... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nije moguće ukloniti putničku tramvajsku postaju... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nije moguće ukloniti teretnu tramvajsku postaju... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Najprije je potrebno ukloniti cestovnu stanicu STR_ERROR_THERE_IS_NO_STATION :{WHITE}...ovdje nema stanice STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Najprije je potrebno srušiti željezničku postaju STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Najprije je potrebno srušiti autobusnu postaju STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Najprije je potrebno srušiti kamionski terminal STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Najprije je potrebno srušiti putničku tramvajsku postaju STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Najprije je potrebno srušiti teretnu tramvajsku postaju STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Najprije je potrebno srušiti pristanište STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Najprije je potrebno srušiti zračnu luku # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Pridružuje više od jednog postojećeg čvorišta. STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Preblizu drugom čvorištu STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Ovdje nije moguće izgraditi željezničko čvorište... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Ovdje nije moguće staviti plutaču... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nije moguće promijeniti ime čvorišta... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nije moguće ukloniti željezničko čvorište odavde... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Najprije je potrebno ukloniti željezničko čvorište STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... plutača na putu STR_ERROR_BUOY_IS_IN_USE :{WHITE}... plutača je u uporabi od strane druge kompanije! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Ovdje nije moguće izgraditi spremište vlakova... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Ovdje nije moguće izgraditi spremište cestovnih vozila... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Ovdje nije moguće izgraditi tramvajsko spremište... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Ovdje nije moguće izgraditi spremište brodova... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nije moguće preimenovati depo... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti zaustavljen unutar spremišta STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti zaustavljen unutar spremišta cestovnih vozila STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti zaustavljen u spremištu STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... mora biti zaustavljen u hangaru STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Vlakovi mogu biti izmjenjeni jedino kad su zaustavljeni u spremištu STR_ERROR_TRAIN_TOO_LONG :{WHITE}Predugačak vlak STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Nije moguće promjeniti smjer vozila... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... sastoji se od više jedinica STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Nekompatibilna vrsta tračnica STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Nije moguće ukloniti vozilo... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Stražnja lokomotiva će uvijek pratiti svog prednjeg dvojnika STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ne može pronaći put do lokalnog spremišta STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ne mogu pronaći lokalno spremište STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Pogrešna vrsta spremišta # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je predugačko nakon zamjene STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Pravilo bez autozamjene/obnove je primjenjeno STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(novčano ograničenje) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemoguća kombinacija tračnica STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Najprije je potrebno ukloniti signale STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nije prikladno za želježnicku prugu STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Najprije je potrebno ukloniti željezničku prugu STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Cesta je jednosmjerna ili je blokirana STR_ERROR_CROSSING_DISALLOWED :{WHITE}Pružni prijelazi nisu dozvoljeni za ovu vrstu pruge STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Ovdje nije moguće postaviti signale... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Ovdje nije moguće izgraditi željezničke tračnice... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nije moguće ukloniti željezničku prugu odavde... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Nije moguće ukloniti signale odavde... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Ovdje nije moguće pretvoriti signale... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... nema pruge STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... nema signala STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Ovdje nije moguće pretvoriti vrstu pruge... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Najprije je potrebno ukloniti cestu STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... jednosmjerne ceste ne mogu imati raskrižja STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Ovdje nije moguće izgraditi cestu... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Ovdje nije moguće izgraditi tramvaj... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nije moguće ukloniti cestu odavde... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nije moguće ukloniti tramvaj odavde... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... nema ceste STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... nema tramvajske pruge # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Ovdje nije moguće izgraditi kanale... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ovdje nije moguće izgraditi brane... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ovdje nije moguće postaviti rijeku... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... mora biti izgrađen na vodi STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nije moguće graditi na vodi STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nemoguće graditi na otvorenom moru STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nemoguće graditi na kanalu STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nemoguće graditi na rijeci STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Najprije je potrebno srušiti kanal STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ovdje nije moguće izgraditi akvadukt... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... ovdje već postoji drvo STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... pogrešan teren za tu vrstu drveća STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Ovdje nije moguće posaditi drvo... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Ovdje nije moguće izgraditi most... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Najprije je potrebno srušiti most STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Početak i kraj ne mogu biti na istom mjestu STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Glave mosta nisu na istoj razini STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizak za teren STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Početak i kraj moraju biti u ravnini STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba kraja mosta moraju biti na zemlji STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... predugačak most STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Most bi završio izvan mape # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Ovdje nije moguće izgraditi tunel... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Neprikladan teren za ulaz u tunel STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Najprije je potrebno srušiti tunel STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Smeta drugi tunel STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunel bi završio izvan karte STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Ne moguće iskopoati zemlju na drugoj strani tunela STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunel predugačak # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... previše objekata STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Nemoguće izgraditi objekt... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Smeta objekt STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... smeta sjedište tvrtke STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Ovu zemlju nije moguće kupiti... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... već je u tvom vlasništvu! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nije moguće kreirati grupu... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nije moguće obrisati ovu grupu... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nije moguće preimenovati ovu grupu... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nije moguće ukloniti sva vozila iz ove grupe... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nije moguće dodati vozila u ovu grupu STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nije moguće dodati dijeljena vozila u grupu... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Vlak na putu STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Cestovno vozilo na putu STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Smeta brod STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Smeta zrakoplov STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Nije moguće prenamijeniti vlak... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nije moguće prenamijeniti cestovno vozilo... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nije moguće prenamijeniti brod... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nije moguće prenamijeniti zrakoplov... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Nije moguće imenovati vlak... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nije moguće imenovati cestovno vozilo... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nije moguće imenovati brod... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nije moguće imenovati zrakoplov... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Nije moguće zaustaviti/pokrenuti vlak... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nije moguće zaustaviti/pokrenuti cestovno vozilo... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nije moguće pokrenuti/zaustaviti brod... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nije moguće zaustaviti/pokrenuti zrakoplov... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nije moguće poslati vlak u spremište... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nije moguće poslati vozilo u spremište... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nije moguće poslati brod u spremište... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nije moguće poslati zrakoplov u hangar STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Nije moguće kupiti željezničko vozilo... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Nije moguće kupiti cestovno vozilo... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Nije moguće kupiti brod... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Nije moguće kupiti zrakoplov... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Nije moguće preimenovati vrstu vagona... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nije moguće preimenovati vrstu cestovnog vozila... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Nije moguće preimenovati vrstu broda... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Nije moguće preimenovati vrstu zrakoplova... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Nije moguće prodati željezničko vozilo STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nije moguće prodati cestovno vozilo... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Nije moguće prodati brod... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Nije moguće prodati zrakoplov... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vozilo nije dostupno STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vozilo nije dostupno STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Brod nije dostupan STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Zrakoplov nije dostupan STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Previše vozila u igri STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nije moguće promijeniti servisni interval... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uništeno STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Neće biti dostupno nijedno vozilo STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Promijenite konfiguraciju NewGRF-a STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Još nema dostupnih vozila STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pokreni novu igru nakon {DATE_SHORT} ili upotrijebi NewGRF koji daje vrlo rana vozila # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nije moguće natjerati vlak da ignorira signale dok traje opasnost... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nije moguće promijeniti smjer vlaka... STR_ERROR_TRAIN_START_NO_POWER :Vlak nema pogonske snage STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Nije moguće okrenuti vozilo na cesti... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Zrakoplov je u letu # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Nema mjesta za nove naredbe STR_ERROR_TOO_MANY_ORDERS :{WHITE}Previše naredbi STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Nije moguće ubaciti novu naredbu... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Nije moguće obrisati ovu naredbu... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nije moguće izmijeniti ovu naredbu... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Nije moguće pomaknuti ovu naredbu... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nije moguće preskočiti trenutnu naredbu... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Nije moguće skočiti na odabranu naredbu... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vozilo ne može doći do svih postaja STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vozilo ne može doći do te postaje STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... vozilo koje dijeli ovu naredbu ne može doći do te postaje STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nije moguće dijeliti popis naredbi... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nemoguće prekinuti dijeljenje liste naredbi... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Nije moguće kopirati popis naredbi... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... predaleko od prethodnog odredišta STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... avion nema dovoljni domet # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nije moguće zadati vozni red za vozilo... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila mogu čekati samo na stanicama. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ovo vozilo se ne zaustavlja na ovoj postaji. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... previše znakova STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Ovdje nije moguće postaviti znak... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Nije moguće promijeniti ime znaka... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nije moguće obrisati znak... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulacija na osnovi Transport Tycoon Deluxea # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalna grafika za Transport Tycoon Deluxe DOS izdanje. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje. STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalna grafika za Transport Tycoon Deluxe Windows izdanje. STR_BASESOUNDS_DOS_DESCRIPTION :Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje. STR_BASESOUNDS_WIN_DESCRIPTION :Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje. STR_BASESOUNDS_NONE_DESCRIPTION :Zvučni paket bez ikakvih zvukova. STR_BASEMUSIC_WIN_DESCRIPTION :Originalna muzika za Transport Tycoon Deluxe Windows izdanje. STR_BASEMUSIC_NONE_DESCRIPTION :Muzički paket bez ikakve muzike. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Visoki uredski blok STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Uredski blok STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Mali stambeni blok STR_TOWN_BUILDING_NAME_CHURCH_1 :Crkva STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Veliki uredski blok STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Gradske kuće STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Kip STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontana STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Uredski blok STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Trgovine i uredi STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderne uredske zgrade STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Skladište STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Uredski blok STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Stare kuće STR_TOWN_BUILDING_NAME_COTTAGES_1 :Kolibe STR_TOWN_BUILDING_NAME_HOUSES_1 :Kuće STR_TOWN_BUILDING_NAME_FLATS_1 :Stanovi STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Visoki uredski blok STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Trgovine i uredi STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Trgovine i uredi STR_TOWN_BUILDING_NAME_THEATER_1 :Kazalište STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Uredi STR_TOWN_BUILDING_NAME_HOUSES_2 :Kuće STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Trgovački centar STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu STR_TOWN_BUILDING_NAME_TEPEES_1 :Indijanski šator STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Čajnik za stanovanje STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Kasica-Prasica ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Rudnik ugljena STR_INDUSTRY_NAME_COAL_MINE.gen :rudnika ugljena STR_INDUSTRY_NAME_POWER_STATION :Elektrana STR_INDUSTRY_NAME_POWER_STATION.gen :elektrane STR_INDUSTRY_NAME_SAWMILL :Pilana STR_INDUSTRY_NAME_SAWMILL.gen :pilane STR_INDUSTRY_NAME_FOREST :Šuma STR_INDUSTRY_NAME_FOREST.gen :šume STR_INDUSTRY_NAME_OIL_REFINERY :Naftna rafinerija STR_INDUSTRY_NAME_OIL_REFINERY.gen :naftne rafinerije STR_INDUSTRY_NAME_OIL_RIG :Naftna bušotina STR_INDUSTRY_NAME_OIL_RIG.gen :naftne bušotine STR_INDUSTRY_NAME_FACTORY :Tvornica STR_INDUSTRY_NAME_FACTORY.gen :tvornice STR_INDUSTRY_NAME_PRINTING_WORKS :Tiskara STR_INDUSTRY_NAME_PRINTING_WORKS.gen :tiskare STR_INDUSTRY_NAME_STEEL_MILL :Čeličana STR_INDUSTRY_NAME_STEEL_MILL.gen :čeličane STR_INDUSTRY_NAME_FARM :Farma STR_INDUSTRY_NAME_FARM.gen :farme STR_INDUSTRY_NAME_COPPER_ORE_MINE :Rudnik bakra STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :rudnika bakra STR_INDUSTRY_NAME_OIL_WELLS :Naftna polja STR_INDUSTRY_NAME_OIL_WELLS.gen :naftnih polja STR_INDUSTRY_NAME_BANK :Banka STR_INDUSTRY_NAME_BANK.gen :banke STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Tvornica hrane STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :tvornice hrane STR_INDUSTRY_NAME_PAPER_MILL :Tvornica papira STR_INDUSTRY_NAME_PAPER_MILL.gen :tvornice papira STR_INDUSTRY_NAME_GOLD_MINE :Rudnik zlata STR_INDUSTRY_NAME_GOLD_MINE.gen :rudnika zlata STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banka STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :banke STR_INDUSTRY_NAME_DIAMOND_MINE :Rudnik dijamanata STR_INDUSTRY_NAME_DIAMOND_MINE.gen :rudnika dijamanata STR_INDUSTRY_NAME_IRON_ORE_MINE :Rudnik željeza STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :rudnika željeza STR_INDUSTRY_NAME_FRUIT_PLANTATION :Plantaža voća STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :plantaže voća STR_INDUSTRY_NAME_RUBBER_PLANTATION :Plantaža gume STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :plantaže gume STR_INDUSTRY_NAME_WATER_SUPPLY :Izvor vode STR_INDUSTRY_NAME_WATER_SUPPLY.gen :izvora vode STR_INDUSTRY_NAME_WATER_TOWER :Vodotoranj STR_INDUSTRY_NAME_WATER_TOWER.gen :vodotornja STR_INDUSTRY_NAME_FACTORY_2 :Tvornica STR_INDUSTRY_NAME_FACTORY_2.gen :tvornice STR_INDUSTRY_NAME_FARM_2 :Farma STR_INDUSTRY_NAME_FARM_2.gen :farme STR_INDUSTRY_NAME_LUMBER_MILL :Pilana STR_INDUSTRY_NAME_LUMBER_MILL.gen :pilane STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Šuma šećerne vune STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :šume šećerne vune STR_INDUSTRY_NAME_CANDY_FACTORY :Tvornica slatkiša STR_INDUSTRY_NAME_CANDY_FACTORY.gen :tvornice slatkiša STR_INDUSTRY_NAME_BATTERY_FARM :Tvornica baterija STR_INDUSTRY_NAME_BATTERY_FARM.gen :tvornice baterija STR_INDUSTRY_NAME_COLA_WELLS :Izvori Cole STR_INDUSTRY_NAME_COLA_WELLS.gen :izvora cole STR_INDUSTRY_NAME_TOY_SHOP :Trgovina igračkama STR_INDUSTRY_NAME_TOY_SHOP.gen :trgovine igračkama STR_INDUSTRY_NAME_TOY_FACTORY :Tvornica igračaka STR_INDUSTRY_NAME_TOY_FACTORY.gen :tvornice igračaka STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Izvori plastike STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :izvori plastike STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Tvornica gaziranih pića STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :tvornice gaziranih pića STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Generator balona STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :generatora balona STR_INDUSTRY_NAME_TOFFEE_QUARRY :Iskop mliječne karamele STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :iskopa mliječne karamele STR_INDUSTRY_NAME_SUGAR_MINE :Rudnik šećera STR_INDUSTRY_NAME_SUGAR_MINE.gen :rudnika šećera ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Neimenovan STR_SV_TRAIN_NAME :Vlak {COMMA} STR_SV_ROAD_VEHICLE_NAME :Cestovno vozilo {COMMA} STR_SV_SHIP_NAME :Brod {COMMA} STR_SV_AIRCRAFT_NAME :Zrakoplov {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Sjever STR_SV_STNAME_SOUTH :{STRING} Jug STR_SV_STNAME_EAST :{STRING} Istok STR_SV_STNAME_WEST :{STRING} Zapad STR_SV_STNAME_CENTRAL :Centrala {STRING} STR_SV_STNAME_TRANSFER :Transfer {STRING} STR_SV_STNAME_HALT :{STRING} Zaustav STR_SV_STNAME_VALLEY :{STRING} Dolina STR_SV_STNAME_HEIGHTS :Visine {STRING} STR_SV_STNAME_WOODS :{STRING} šume STR_SV_STNAME_LAKESIDE :Jezero {STRING} STR_SV_STNAME_EXCHANGE :Kolodvor {STRING} STR_SV_STNAME_AIRPORT :Zračna luka {STRING} STR_SV_STNAME_OILFIELD :Naftno polje {STRING} STR_SV_STNAME_MINES :Rudnici {STRING} STR_SV_STNAME_DOCKS :Pristaništa {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Aneks {STRING} STR_SV_STNAME_SIDINGS :{STRING} Krak STR_SV_STNAME_BRANCH :Ogranak {STRING} STR_SV_STNAME_UPPER :Gornji {STRING} STR_SV_STNAME_LOWER :{STRING} donji STR_SV_STNAME_HELIPORT :Heliodrom {STRING} STR_SV_STNAME_FOREST :{STRING} šuma STR_SV_STNAME_FALLBACK :{STRING} Postaja #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (parni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (parni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (parni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (parni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (parni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Električni) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Putnički vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Poštanski kombi STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kamion za ugljen STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Naftna cisterna STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Kamion za domaće životinje STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Kamion za robu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Tegljač žita STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Kamion za drva STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Tegljač željeza STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Kamion za čelik STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Blindirani kombi STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Kombi za hranu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Kamion za papir STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Tegljač bakra STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Cisterna za vodu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Kamion za voće STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Kamion za gumu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Kamion za šećer STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Tegljač šećerne vune STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Tegljač mliječne karamele STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Kombi za balone STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cisterna za colu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Kombi za slatkiše STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Kombi za igračke STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Kamion za baterije STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Kamion za gazirana pića STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Kamion za plastiku STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Putnički vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Poštanski kombi STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kamion za ugljen STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Naftna cisterna STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Kamion za domaće životinje STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Kamion za robu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Tegljač žita STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Kamion za drva STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Tegljač željeza STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Kamion za čelik STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Blindirani kombi STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Kamion za hranu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Kamion za papir STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Tegljač bakra STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cisterna za vodu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Kamion za voće STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Kamion za gumu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Kamion za šećer STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Tegljač Šećerne vune STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Tegljač mliječne karamele STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Kombi za balone STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cisterna za colu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Kombi za slatkiše STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Kombi za igračke STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Kamion za baterije STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Kamion za gazirana pića STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Kamion za plastiku STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Električni) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Putnički vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Poštanski kombi STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kamion za ugljen STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Naftna cisterna STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Kamion za domaće životinje STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Kamion za robu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Tegljač žita STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Kamion za drva STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Tegljač željeza STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Kamion za čelik STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Blindirani kombi STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Kamion za hranu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Kamion za papir STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Tegljač bakra STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cisterna za vodu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Kamion za voće STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Kamion za gumu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Kamion za šećer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Tegljač šećerne vune STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Tegljač mliječne karamele STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Kombi za balone STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cisterna za colu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Kombi za slatkiše STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Kombi za igračke STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Kamion za baterije STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Kamion za gazirana pića STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Kamion za plastiku STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Kamion za ugljen Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Kamion za ugljen Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Kamion za ugljen DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Poštanski kamion MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Poštanski kamion Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Poštanski kamion Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Poštanski kamion MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Poštanski kamion Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Poštanski kamion Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Naftna cisterna Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Naftna cisterna Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Naftna cisterna Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Kamion za domaće životinje Tallbot STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Kamion za domaće životinje Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Kamion za domaće životinje Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Kamion za robu Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Kamion za robu Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Kamion za robu Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Kamion za žitarice Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Kamion za žitarice Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Kamion za žitarice Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Kamion za drva Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Kamion za drva Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Kamion za drva Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Kamion za željeznu rudu MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Kamion za željeznu rudu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Kamion za željeznu rudu Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Kamion za čelik Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Kamion za čelik Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kamion za čelik Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Blindirani kamion Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Blindirani kamion Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Blindirani kamion Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Kamion za hranu Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Kamion za hranu Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Kamion za hranu Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Kamion za papir Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Kamion za papir Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Kamion za papir MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Kamion za bakrenu rudu MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Kamion za bakrenu rudu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Kamion za bakrenu rudu Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Cisterna za vodu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Cisterna za vodu Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Cisterna za vodu MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Kamion za voće Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Kamion za voće Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kamion za voće Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Kamion za gumu Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Kamion za gumu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Kamion za gumu RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Kamion za šećer MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Kamion za šećer Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Kamion za šećer Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Kamion za colu MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Kamion za colu Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Kamion za colu Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Kamion za šećernu vatu MighyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Kamion za šećernu vatu Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Kamion za šećernu vatu Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Kamion za mliječnu karamelu MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Kamion za mliječnu karamelu Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Kamion za mliječnu karamelu Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Kamion za igračke MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Kamion za igračke Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Kamion za igračke Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Kamion za slatkiše MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Kamion za slatkiše Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Kamion za slatkiše Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Kamion za baterije MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Kamion za baterije Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Kamion za baterije Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Kamion za gazirana pića MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Kamion za gazirana pića Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Kamion za gazirana pića Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Kamion za plastiku MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Kamion za plastiku Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Kamion za plastiku Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Kamion za balone MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Kamion za balone Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Kamion za balone Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Naftna cisterna MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Naftna cisterna CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Putnički trajekt MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Putnički trajekt FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Lebdjelica Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Putnički trajekt Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Putnički trajekt Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Teretni brod Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Teretni brod Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Teretni brod MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Teretni brod Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Helikopter Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Helikopter Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikopter Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Plutača STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Plutača #{COMMA} STR_FORMAT_COMPANY_NUM :(Tvrtka {COMMA}) STR_FORMAT_GROUP_NAME :Groupa {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Čvorište {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Čvorište {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Depo za vlakove STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Depo za vlakove #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Depo za cestovna vozila STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Depo za cestovna vozila #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Depo za brodove STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Depo za brodove #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :nepoznata postaja STR_DEFAULT_SIGN_NAME :Znak STR_COMPANY_SOMEONE :netko STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Gledatelj, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/german.txt0000644000000000000000000147015412246102561015426 0ustar rootroot##name German ##ownname Deutsch ##isocode de_DE ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0407 ##grflangid 0x02 ##gender m w n p # $Id: german.txt 26094 2013-11-24 19:57:23Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nicht definierter Text) STR_JUST_NOTHING :Nichts # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :{G=p}Passagiere STR_CARGO_PLURAL_COAL :{G=w}Kohle STR_CARGO_PLURAL_MAIL :{G=w}Post STR_CARGO_PLURAL_OIL :{G=n}Öl STR_CARGO_PLURAL_LIVESTOCK :{G=n}Vieh STR_CARGO_PLURAL_GOODS :{G=p}Waren STR_CARGO_PLURAL_GRAIN :{G=n}Getreide STR_CARGO_PLURAL_WOOD :{G=n}Holz STR_CARGO_PLURAL_IRON_ORE :{G=n}Eisenerz STR_CARGO_PLURAL_STEEL :{G=m}Stahl STR_CARGO_PLURAL_VALUABLES :{G=p}Wertsachen STR_CARGO_PLURAL_COPPER_ORE :{G=n}Kupfererz STR_CARGO_PLURAL_MAIZE :{G=m}Mais STR_CARGO_PLURAL_FRUIT :{G=p}Früchte STR_CARGO_PLURAL_DIAMONDS :{G=p}Diamanten STR_CARGO_PLURAL_FOOD :{G=p}Nahrungsmittel STR_CARGO_PLURAL_PAPER :{G=n}Papier STR_CARGO_PLURAL_GOLD :{G=n}Gold STR_CARGO_PLURAL_WATER :{G=n}Wasser STR_CARGO_PLURAL_WHEAT :{G=m}Weizen STR_CARGO_PLURAL_RUBBER :{G=m}Kautschuk STR_CARGO_PLURAL_SUGAR :{G=m}Zucker STR_CARGO_PLURAL_TOYS :{G=p}Spielzeuge STR_CARGO_PLURAL_CANDY :{G=p}Bonbons STR_CARGO_PLURAL_COLA :{G=w}Cola STR_CARGO_PLURAL_COTTON_CANDY :{G=w}Zuckerwatte STR_CARGO_PLURAL_BUBBLES :{G=p}Luftblasen STR_CARGO_PLURAL_TOFFEE :{G=n}Karamell STR_CARGO_PLURAL_BATTERIES :{G=p}Batterien STR_CARGO_PLURAL_PLASTIC :{G=n}Plastik STR_CARGO_PLURAL_FIZZY_DRINKS :{G=w}Limonade # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :{G=m}Passagier STR_CARGO_SINGULAR_COAL :{G=w}Kohle STR_CARGO_SINGULAR_MAIL :{G=w}Post STR_CARGO_SINGULAR_OIL :{G=n}Öl STR_CARGO_SINGULAR_LIVESTOCK :{G=n}Vieh STR_CARGO_SINGULAR_GOODS :{G=p}Waren STR_CARGO_SINGULAR_GRAIN :{G=n}Getreide STR_CARGO_SINGULAR_WOOD :{G=n}Holz STR_CARGO_SINGULAR_IRON_ORE :{G=n}Eisenerz STR_CARGO_SINGULAR_STEEL :{G=m}Stahl STR_CARGO_SINGULAR_VALUABLES :{G=p}Wertsachen STR_CARGO_SINGULAR_COPPER_ORE :{G=n}Kupfererz STR_CARGO_SINGULAR_MAIZE :{G=m}Mais STR_CARGO_SINGULAR_FRUIT :{G=p}Früchte STR_CARGO_SINGULAR_DIAMOND :{G=p}Diamanten STR_CARGO_SINGULAR_FOOD :{G=p}Nahrungsmittel STR_CARGO_SINGULAR_PAPER :{G=n}Papier STR_CARGO_SINGULAR_GOLD :{G=n}Gold STR_CARGO_SINGULAR_WATER :{G=n}Wasser STR_CARGO_SINGULAR_WHEAT :{G=n}Weizen STR_CARGO_SINGULAR_RUBBER :{G=m}Kautschuk STR_CARGO_SINGULAR_SUGAR :{G=m}Zucker STR_CARGO_SINGULAR_TOY :{G=n}Spielzeug STR_CARGO_SINGULAR_CANDY :{G=m}Bonbon STR_CARGO_SINGULAR_COLA :{G=w}Cola STR_CARGO_SINGULAR_COTTON_CANDY :{G=w}Zuckerwatte STR_CARGO_SINGULAR_BUBBLE :{G=w}Luftblase STR_CARGO_SINGULAR_TOFFEE :{G=n}Karamell STR_CARGO_SINGULAR_BATTERY :{G=w}Batterie STR_CARGO_SINGULAR_PLASTIC :{G=n}Plastik STR_CARGO_SINGULAR_FIZZY_DRINK :{G=w}Limonade # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} Passagier{P "" e} STR_QUANTITY_COAL :{WEIGHT_LONG} Kohle STR_QUANTITY_MAIL :{COMMA} Posts{P ack äcke} STR_QUANTITY_OIL :{VOLUME_LONG} Öl STR_QUANTITY_LIVESTOCK :{COMMA} Stück Vieh STR_QUANTITY_GOODS :{COMMA} Warenkiste{P "" n} STR_QUANTITY_GRAIN :{WEIGHT_LONG} Getreide STR_QUANTITY_WOOD :{WEIGHT_LONG} Holz STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} Eisenerz STR_QUANTITY_STEEL :{WEIGHT_LONG} Stahl STR_QUANTITY_VALUABLES :{COMMA} {P Sack Säcke} Wertsachen STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} Kupfererz STR_QUANTITY_MAIZE :{WEIGHT_LONG} Mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} Früchte STR_QUANTITY_DIAMONDS :{COMMA} {P Sack Säcke} Diamanten STR_QUANTITY_FOOD :{WEIGHT_LONG} Nahrungsmittel STR_QUANTITY_PAPER :{WEIGHT_LONG} Papier STR_QUANTITY_GOLD :{COMMA} {P Sack Säcke} Gold STR_QUANTITY_WATER :{VOLUME_LONG} Wasser STR_QUANTITY_WHEAT :{WEIGHT_LONG} Weizen STR_QUANTITY_RUBBER :{VOLUME_LONG} Kautschuk STR_QUANTITY_SUGAR :{WEIGHT_LONG} Zucker STR_QUANTITY_TOYS :{COMMA} Spielzeug{P "" e} STR_QUANTITY_SWEETS :{COMMA} {P Sack Säcke} Bonbons STR_QUANTITY_COLA :{VOLUME_LONG} Cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} Zuckerwatte STR_QUANTITY_BUBBLES :{COMMA} Luftblase{P "" n} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} Karamell STR_QUANTITY_BATTERIES :{COMMA} Batterie{P "" n} STR_QUANTITY_PLASTIC :{VOLUME_LONG} Plastik STR_QUANTITY_FIZZY_DRINKS :{COMMA} Limonade{P "" n} STR_QUANTITY_N_A :k.A. # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}KL STR_ABBREV_MAIL :{TINY_FONT}PO STR_ABBREV_OIL :{TINY_FONT}ÖL STR_ABBREV_LIVESTOCK :{TINY_FONT}VI STR_ABBREV_GOODS :{TINY_FONT}WK STR_ABBREV_GRAIN :{TINY_FONT}GT STR_ABBREV_WOOD :{TINY_FONT}HO STR_ABBREV_IRON_ORE :{TINY_FONT}EE STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}WE STR_ABBREV_COPPER_ORE :{TINY_FONT}KU STR_ABBREV_MAIZE :{TINY_FONT}MA STR_ABBREV_FRUIT :{TINY_FONT}FR STR_ABBREV_DIAMONDS :{TINY_FONT}DI STR_ABBREV_FOOD :{TINY_FONT}NM STR_ABBREV_PAPER :{TINY_FONT}PA STR_ABBREV_GOLD :{TINY_FONT}GD STR_ABBREV_WATER :{TINY_FONT}WA STR_ABBREV_WHEAT :{TINY_FONT}WZ STR_ABBREV_RUBBER :{TINY_FONT}KA STR_ABBREV_SUGAR :{TINY_FONT}ZU STR_ABBREV_TOYS :{TINY_FONT}SP STR_ABBREV_SWEETS :{TINY_FONT}BO STR_ABBREV_COLA :{TINY_FONT}CO STR_ABBREV_CANDYFLOSS :{TINY_FONT}ZW STR_ABBREV_BUBBLES :{TINY_FONT}LB STR_ABBREV_TOFFEE :{TINY_FONT}KM STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}LI STR_ABBREV_NONE :{TINY_FONT}KEINE STR_ABBREV_ALL :{TINY_FONT}ALLE # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} Passagier{P "" e} STR_BAGS :{COMMA} S{P ack äcke} STR_TONS :{COMMA} Tonne{P "" n} STR_LITERS :{COMMA} Liter{P "" ""} STR_ITEMS :{COMMA} Stück{P "" ""} STR_CRATES :{COMMA} Kiste{P "" n} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dunkelblau STR_COLOUR_PALE_GREEN :Hellgrün STR_COLOUR_PINK :Rosa STR_COLOUR_YELLOW :Gelb STR_COLOUR_RED :Rot STR_COLOUR_LIGHT_BLUE :Hellblau STR_COLOUR_GREEN :Grün STR_COLOUR_DARK_GREEN :Dunkelgrün STR_COLOUR_BLUE :Blau STR_COLOUR_CREAM :Beige STR_COLOUR_MAUVE :Helllila STR_COLOUR_PURPLE :Lila STR_COLOUR_ORANGE :Orange STR_COLOUR_BROWN :Braun STR_COLOUR_GREY :Grau STR_COLOUR_WHITE :Weiß # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}PS STR_UNITS_POWER_METRIC :{COMMA}PS STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} Tonne{P "" n} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} Liter STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} Fuß STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Auswahl-Text: STR_LIST_FILTER_OSKTITLE :{BLACK}Filter eingeben STR_LIST_FILTER_TOOLTIP :{BLACK}Stichwort eingeben, mit dem die Liste gefiltert werden soll STR_TOOLTIP_SORT_ORDER :{BLACK}Sortierreihenfolge auswählen (absteigend/aufsteigend) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Sortierkriterien auswählen STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Filterkriterien auswählen STR_BUTTON_SORT_BY :{BLACK}Sortieren nach STR_BUTTON_LOCATION :{BLACK}Standort STR_BUTTON_RENAME :{BLACK}Umbenennen STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fenster schließen STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titelleiste klicken und ziehen, um das Fenster zu verschieben STR_TOOLTIP_SHADE :{BLACK}Fenster einklappen - Nur die Titelleiste zeigen STR_TOOLTIP_DEBUG :{BLACK}Zeige Daten für NewGRF-Fehlerbeseitigung STR_TOOLTIP_STICKY :{BLACK}Fenster wird nicht durch die "Schließe alle Fenster"-Taste geschlossen STR_TOOLTIP_RESIZE :{BLACK}Klicken und Ziehen zum Ändern der Größe des Fensters STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Zwischen Fenstergrößen umschalten STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bildlaufleiste: In der Liste auf- und abwärts blättern STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bildlaufleiste: In der Liste nach links und rechts blättern STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Gebäude etc. von einem Planquadrat abreißen. Strg wählt ein diagonales Gebiet aus. Shift schaltet zwischen Bauen und Kostenvoranschlag um # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Abbrechen STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :^1234567890ß'€qwertzuiopü+asdfghjklöä#YXCVBNM;:_ . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Länge: {NUM} STR_MEASURE_AREA :{BLACK}Gebiet: {NUM} × {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Länge: {NUM}{}Höhenunterschied: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Gebiet: {NUM} × {NUM}{}Höhenunterschied: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Bevölkerung STR_SORT_BY_CAPTION_NAME :{BLACK}Name STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns STR_SORT_BY_NAME :Name STR_SORT_BY_PRODUCTION :Produktion STR_SORT_BY_TYPE :Typ STR_SORT_BY_TRANSPORTED :Transportiert STR_SORT_BY_NUMBER :Nummer STR_SORT_BY_PROFIT_LAST_YEAR :Gewinn im letzten Jahr STR_SORT_BY_PROFIT_THIS_YEAR :Gewinn in diesem Jahr STR_SORT_BY_AGE :Alter STR_SORT_BY_RELIABILITY :Zuverlässigkeit STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Gesamtkapazität pro Fracht STR_SORT_BY_MAX_SPEED :Höchstgeschwindigkeit STR_SORT_BY_MODEL :Bauart STR_SORT_BY_VALUE :Wert STR_SORT_BY_LENGTH :Länge STR_SORT_BY_LIFE_TIME :Verbleibende Betriebsdauer STR_SORT_BY_TIMETABLE_DELAY :Verspätung STR_SORT_BY_FACILITY :Stationsart STR_SORT_BY_WAITING :Wert der wartenden Fracht STR_SORT_BY_RATING_MAX :Beste Bewertung STR_SORT_BY_RATING_MIN :Schlechteste Bewertung STR_SORT_BY_ENGINE_ID :Baureihe STR_SORT_BY_COST :Kosten STR_SORT_BY_POWER :Leistung STR_SORT_BY_TRACTIVE_EFFORT :Zugkraft STR_SORT_BY_INTRO_DATE :Einführungsdatum STR_SORT_BY_RUNNING_COST :Betriebskosten STR_SORT_BY_POWER_VS_RUNNING_COST :Leistung/Betriebskosten STR_SORT_BY_CARGO_CAPACITY :Frachtkapazität STR_SORT_BY_RANGE :Reichweite # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Zeitraffer (Zeit vergeht schnellstmöglich) STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Einstellungen STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Spiel speichern, Spiel laden, Spiel abbrechen, (OpenTTD) Beenden STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Weltkarte, zusätzliche Fenster oder Schilderliste anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Städteverzeichnis anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subventionen anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Liste der firmeneigenen Stationen anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Firmenfinanzen anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Allgemeine Firmeninformationen anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Diagramme anzeigen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Firmentabelle oder Punktestand anzeigen STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Liste aller Industrien oder Errichtung und Finanzierung einer neuen Industrie STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Zuglisten der Firmen anzeigen. Strg+Klick wechselt zwischen einfacher und erweiterter Liste STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Fahrzeuglisten der Firmen anzeigen. Strg+Klick wechselt zwischen einfacher und erweiterter Liste STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Schiffslisten der Firmen anzeigen. Strg+Klick wechselt zwischen einfacher und erweiterter Liste STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Flugzeuglisten der Firmen anzeigen. Strg+Klick wechselt zwischen einfacher und erweiterter Liste STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ansicht vergrößern (hineinzoomen) STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Ansicht verkleinern (herauszoomen) STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Gleise legen STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Straßen bauen STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Häfen und Wasserstraßen bauen STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Flughäfen bauen STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Landschaftsbau: Land heben/senken, Bäume pflanzen etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Sound-/Musikfenster anzeigen STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Zeige letzte Mitteilung/Nachricht, Nachrichtenoptionen anzeigen STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Gebietsinformation, Konsole, KI- und Skript-Debug, Screenshots, über OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Werkzeugleisten wechseln # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Szenario speichern, Szenario laden, Szenariobearbeitung beenden, Beenden STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Szenarieneditor STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Startdatum 1 Jahr früher setzen STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Startdatum 1 Jahr später setzen STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Startdatum eingeben STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Weltkarte anzeigen, Städteverzeichnis STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landfläche erzeugen STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Städte gründen STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrie errichten STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Straße bauen STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Bäume pflanzen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Schild aufstellen STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objekt platzieren. Shift schaltet zwischen Bauen und Kostenvoranschlag um ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Szenario speichern STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Szenario laden STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Reliefkarte speichern STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Reliefkarte laden STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Editor verlassen STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Beenden ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spieleinstellungen STR_SETTINGS_MENU_CONFIG_SETTINGS :Erweiterte Einstellungen STR_SETTINGS_MENU_SCRIPT_SETTINGS :KI- / Skripteinstellungen STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-Einstellungen STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparenzeinstellungen STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Städtenamen anzeigen STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stationsnamen anzeigen STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wegpunktnamen anzeigen STR_SETTINGS_MENU_SIGNS_DISPLAYED :Schilder anzeigen STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Fremde Stationsnamen & Schilder zeigen STR_SETTINGS_MENU_FULL_ANIMATION :Vollständige Animation STR_SETTINGS_MENU_FULL_DETAIL :Vollständige Detailansicht STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Transparenz für Gebäude STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Transparenz für Schilder ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Spiel speichern STR_FILE_MENU_LOAD_GAME :Spiel laden STR_FILE_MENU_QUIT_GAME :Spiel beenden STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :OpenTTD beenden ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Weltkarte STR_MAP_MENU_EXTRA_VIEW_PORT :Zusatzansicht STR_MAP_MENU_SIGN_LIST :Schilderliste ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Städteverzeichnis STR_TOWN_MENU_FOUND_TOWN :Stadt gründen ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subventionen STR_SUBSIDIES_MENU_GOAL :Momentane Ziele ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Betriebsgewinndiagramm STR_GRAPH_MENU_INCOME_GRAPH :Einkommensdiagramm STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Frachtlieferungsdiagramm STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Leistungskurvendiagramm STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Firmenwertdiagramm STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Frachtratendiagramm ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Firmentabelle STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Leistungsaufschlüsselung STR_GRAPH_MENU_HIGHSCORE :Bestenliste ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Industrieverzeichnis STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Wirtschaftsketten STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Neue Industrie finanzieren ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Gleisbau STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Bau elektrifizierter Strecken STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Einschienenbahnbau STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Magnetschwebebahnbau ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Straßenbau STR_ROAD_MENU_TRAM_CONSTRUCTION :Straßenbahnbau ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Wasserstraßenbau ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Flughafenbau ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Landschaftsbau STR_LANDSCAPING_MENU_PLANT_TREES :Bäume pflanzen STR_LANDSCAPING_MENU_PLACE_SIGN :Schild aufstellen ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Sound/Musik ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Letzte Mitteilung/Nachricht STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Vergangene Nachrichten ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Gebietsinformationen STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Konsole öffnen/schließen STR_ABOUT_MENU_AI_DEBUG :KI / Skript-Debug STR_ABOUT_MENU_SCREENSHOT :Screenshot (Standard: Strg+S) STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Screenshot in Nahaufnahme STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Screenshot mit normalem Zoom STR_ABOUT_MENU_GIANT_SCREENSHOT :Riesiger Screenshot (Standard: Strg+G) STR_ABOUT_MENU_ABOUT_OPENTTD :Über OpenTTD STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite-Ausrichtung STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hüllquader anzeigen/ausblenden STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Neugezeichnete Felder farbig markieren ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mär STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Mai STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dez STR_MONTH_JAN :Januar STR_MONTH_FEB :Februar STR_MONTH_MAR :März STR_MONTH_APR :April STR_MONTH_MAY :Mai STR_MONTH_JUN :Juni STR_MONTH_JUL :Juli STR_MONTH_AUG :August STR_MONTH_SEP :September STR_MONTH_OCT :Oktober STR_MONTH_NOV :November STR_MONTH_DEC :Dezember ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Legende STR_GRAPH_KEY_TOOLTIP :{BLACK}Legende des Diagramms anzeigen STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Betriebsgewinn STR_GRAPH_INCOME_CAPTION :{WHITE}Einkommen STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Beförderte Frachteinheiten STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Bewertung der Firmenleistung (Höchstwert: 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmenwert STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Frachtbeförderungspreise STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Tage unterwegs STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Zahlung für 10 gelieferte Einheiten (oder 10.000 Liter) Fracht über eine Strecke von 20 Feldern STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Alle auswählen STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Alle abwählen STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Zeige alle Frachtarten im Frachtraten-Diagramm an STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Zeige keine Fracht im Frachtraten-Diagramm an STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Diagrammschalter für Frachttyp ein/aus STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Zeige detailierte Leistungsaufschlüsselung # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Legende des Firmendiagramms STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Graph der Firma ein-/ausblenden # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmentabelle STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingenieur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Verkehrsmanager STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Fuhrparkleiter STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Streckenmanager STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Geschäftsführer STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Vorsitzender STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Manager STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Leistungsaufschlüsselung STR_PERFORMANCE_DETAIL_KEY :{BLACK}Details STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Einzelheiten zu dieser Firma anschauen ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Fahrzeuge: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationen: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. Gewinn: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. Einkommen: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. Einkommen: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Geliefert: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Fracht: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Geld: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kredit: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Gesamt: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Anzahl der Fahrzeuge (Straßenfahrzeuge, Züge, Schiffe und Flugzeuge/Hubschrauber), die im letzten Jahr Gewinn gemacht haben STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Anzahl vor kurzem genutzter Stationen (wenn Stationen verschiedener Typen verbunden sind, werden sie trotzdem einzeln gezählt) STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Geringster Gewinn der Fahrzeuge, die älter als zwei Jahre sind STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Geringste Quartalseinnahmen in den letzten 3 Jahren STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Höchste Quartalseinnahmen in den letzten 3 Jahren STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Im letzten Jahr gelieferte Frachteinheiten STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Anzahl der transportierten Frachttypen im letzten Quartal STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Kontostand dieser Firma STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Der von dieser Firma in Anspruch genommene Kredit STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Erreichte Punkte von der maximal erreichbaren Anzahl # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Musikbox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Alle STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Traditionell STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Modern STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Benutzerdef. 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Benutzerdef. 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musiklautstärke STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Soundlautstärke STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Track STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Mischen STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programm STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Springe zum vorherigen Titel STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Springe zum nächsten Titel STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Wiedergabe anhalten STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Wiedergabe starten STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Schieberegler für Musik- / Soundlautstärke STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Programm 'Alle Titel' wählen STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Programm 'Traditionell' wählen STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Programm 'Modern' wählen STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Programm 'Ezy Street' wählen STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Programm 'Benutzerdefiniert 1' wählen STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Programm 'Benutzerdefiniert 2' wählen STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zufällige Wiedergabe ein/aus STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zeige Musiktitelauswahl STR_ERROR_NO_SONGS :{WHITE}Ein Musikset ohne Musikdateien wurde ausgewählt. Es kann folglich nichts abgespielt werden. # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musik-Programmauswahl STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Inhalt STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Bereinigen STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Lösche laufendes Programm (nur für Benutzerdefiniert 1 und 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klicke auf einen Musiktitel, um ihn in das laufende Programm zu übernehmen (nur für Benutzerdefiniert 1 und 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klicke auf einen Musiktitel, um ihn aus der aktuellen Liste zu entfernen (nur für Benutzerdefiniert 1 und 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Beste Firmen, die {NUM} erreichten STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Firmentabelle in {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Geschäftsmann STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Unternehmer STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrieller STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon des Jahrhunderts STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} erreicht '{STRING}' Status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} von {COMPANY} erreicht '{STRING}' Status! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Weltkarte - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Höhenrelief STR_SMALLMAP_TYPE_VEHICLES :Fahrzeuge STR_SMALLMAP_TYPE_INDUSTRIES :Industrien STR_SMALLMAP_TYPE_ROUTES :Strecken STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Eigentümer STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Höhenlinien auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Fahrzeuge auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Industrien auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Transportwege auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vegetation auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Landeigentümer auf der Weltkarte anzeigen STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Ein Mausklick auf eine der Industriearten zeigt diese auf der Karte an bzw. blendet sie wieder aus. Bei Strg+Klick wird nur die ausgewählte Industrieart angezeigt, alle anderen werden ausgeblendet. Ein weiteres Mal Strg+Klick zeigt wieder alle Industrien an. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Anzeigeeigenschaften mit Klick auf Firma ändern. Strg+Klick deaktiviert alle Firmen außer die ausgewählte. Wiederholtes Strg+Klick aktiviert alle Firmen STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Straßen STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Gleise STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Bahnhöfe/Flughäfen/Häfen STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Gebäude/Industrien STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Fahrzeuge STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Züge STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Fahrzeuge STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Schiffe STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Flugzeuge STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportstrecken STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Wald STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Bahnhof STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Lkw-Ladestation STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Bushaltestelle STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flughafen/Hubschrauberlandeplatz STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Hafen STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Unebenes Land STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Wiesen STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Kahles Land STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Ackerland STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Bäume STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Felsen STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Wasser STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Kein Eigentümer STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Städte STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrien STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Wüste STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Schnee STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Städtenamen anzeigen ein/aus STR_SMALLMAP_CENTER :{BLACK}Zusatzansicht zur aktuellen Position scrollen STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Alles ausblenden STR_SMALLMAP_ENABLE_ALL :{BLACK}Alles einblenden STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Zeige Höhe STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Industrien ausblenden STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Industrien einblenden STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Anzeige des Höhenreliefs umschalten STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Zeige kein Eigentum des Unternehmens auf der Karte STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Zeige das ganze Eigentum des Unternehmens auf der Karte # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Letzte Nachricht oder letzten Bericht anzeigen STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * ANGEHALTEN * * STR_STATUSBAR_AUTOSAVE :{RED}Autosicherung STR_STATUSBAR_SAVING_GAME :{RED}* * SPEICHERE SPIEL * * # News message history STR_MESSAGE_HISTORY :{WHITE}Nachrichtenchronik STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Eine Liste der aktuellen Nachrichten STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Mitteilung STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Der erste Zug erreicht {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Der erste Bus erreicht {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Der erste Lkw erreicht {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Die erste Straßenbahn erreicht {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Die erste Frachtstraßenbahn erreicht {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Das erste Schiff erreicht {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Die Einwohner feiern . . .{}Das erste Flugzeug startet von {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Zugunglück!{}{COMMA} {P stirbt sterben} in einem Feuerball nach Zusammenstoß STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Fahrzeug verunglückt!{}Fahrer stirbt in Inferno nach Zusammenstoß mit Zug STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Fahrzeug verunglückt!{}{COMMA} {P stirbt sterben} in Inferno nach Zusammenstoß mit Zug STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flugzeugabsturz!{}{COMMA} {P stirbt sterben} in einem Feuerball auf {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flugzeugabsturz!{}Dem Flugzeug ging der Treibstoff aus, {COMMA} {P stirbt sterben} in einem Feuerball STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinabsturz bei {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Fahrzeug bei Zusammenstoß mit einem 'UFO' zerstört! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Explosion einer Ölraffinerie nahe {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrik nahe {TOWN} unter mysteriösen Umständen zerstört! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' landet bei {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Stolleneinbruch bei {TOWN} hinterlässt Pfad der Zerstörung! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Hochwasser!{}Mindestens {COMMA} Mensch{P "" en} vermisst oder tot nach schwerer Flut! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportfirma in der Krise! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ist von Übernahme oder Insolvenz bedroht, wenn sich das Betriebsergebnis nicht umgehend verbessert. STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportfirmen fusionieren! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ist verkauft worden an {STRING} für {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Insolvenz! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ist von den Gläubigern geschlossen worden, alles Vermögen wurde veräussert! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Neue Transportfirma gegründet! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} startet bei {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} wurde von {STRING} übernommen! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manager) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} finanziert die Gründung der Stadt {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Neue{G r "" s ""} {STRING} {G 0 wird wird wird werden} nahe {TOWN} gebaut! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Neue{G r "" s ""} {STRING} {G 0 wird wird wird werden} nahe {TOWN} angepflanzt! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} {G 0 gibt gibt gibt geben} baldige Schließung bekannt! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Wegen fehlender Rohstoffe {G 0:2 kündigt kündigt kündigt kündigen} {STRING} die baldige Schließung an! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Wegen Holzmangel {G 0:2 gibt gibt gibt geben} {STRING} die baldige Schließung bekannt! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europäische Währungsunion!{}{}Der Euro wird einzige Währung für alltägliche Zahlungsvorgänge STR_NEWS_BEGIN_OF_RECESSION :{BLACK}{BIG_FONT}Weltwirtschaftskrise!{}{}Finanzexperten befürchten schlimmsten Zusammenbruch der Wirtschaft! STR_NEWS_END_OF_RECESSION :{BLACK}{BIG_FONT}Wirtschaftskrise beendet!{}{}Aufschwung des Handels gibt Vertrauen in die Industrie und stärkt die Wirtschaft! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} {G 0 erhöht erhöht erhöht erhöhen} die Produktion! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Neue Kohlevorkommen bei {INDUSTRY} gefunden!{}Förderung verdoppelt! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Neue Ölfunde bei {INDUSTRY}!{}Förderung wird vermutlich verdoppelt! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Neue Getreideanbaumethoden bei {INDUSTRY} werden Erträge verdoppeln! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}produktion von {INDUSTRY} erhöht sich um {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Produktion bei {INDUSTRY} sinkt um 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektenplage bei {INDUSTRY} verursacht Schaden!{}Produktion sinkt um 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}produktion von {INDUSTRY} verringert sich um {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} wartet im Depot STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} wartet im Depot STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wartet im Depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wartet im Hangar # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hat zu wenige Aufträge STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hat einen ungültigen Auftrag STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hat Ziele mehrfach im Fahrplan STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hat eine ungültige Station im Fahrplan # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} wird alt STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} wird sehr alt STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} wird sehr alt und sollte dringend ersetzt werden STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} findet keinen Weg zum Vorankommen STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} hat sich verirrt STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Der Ertrag von {VEHICLE} lag im letzten Jahr bei {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kann sein Ziel nicht erreichen, da es außer Reichweite liegt STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Umrüstung fehlgeschlagen bei {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatisches Ersetzen für {VEHICLE} fehlgeschlagen{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Neue{G r "" s ""} {STRING} jetzt erhältlich! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Neue{G r "" s ""} {STRING} jetzt erhältlich! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} nimmt kein{G "en" "e" "" "e"} {STRING} mehr an STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} nimmt kein{G "en" "e" "" "e"} {STRING} und kein{G "en" "e" "" "e"} {STRING} mehr an STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} nimmt jetzt auch {STRING} an STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} nimmt jetzt auch {STRING} und {STRING} an STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subventionsangebot abgelaufen:{}{}{STRING}transport von {STRING} nach {STRING} wird nicht mehr subventioniert STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subventionsende:{}{}{STRING}transport von {STRING} nach {STRING} wird nicht mehr subventioniert STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subventionsangebot:{}{}Erster {STRING}transport von {STRING} nach {STRING} wird ein Jahr von den örtlichen Behörden subventioniert! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält im nächsten Jahr einen 50% höheren Preis! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält im nächsten Jahr den doppelten Preis! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält im nächsten Jahr den dreifachen Preis! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält im nächsten Jahr den vierfachen Preis! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Verkehrschaos in {TOWN}!{}{}Straßensanierungsprogramm finanziert durch {STRING} wird 6 Monate lang Verzögerungen im Verkehr bewirken! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopol! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Stadtverwaltung von {TOWN} unterzeichnet Vertrag mit {STRING} über ein Jahr währende exklusive Transportrechte! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ansicht {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}In Zusatzansicht kopieren STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Aktuelle Position der Hauptansicht in diese Zusatzansicht kopieren STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Aus Zusatzansicht einfügen STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Hauptansicht zur Position dieser Zusatzansicht scrollen # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spieleinstellungen STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Währung STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Währung auswählen ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Englische Pfund (GBP) STR_GAME_OPTIONS_CURRENCY_USD :US-Dollar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japanische Yen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Österreichische Schilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Francs (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Schweizer Franken (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Tschechische Kronen (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Deutsche Mark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dänische Kronen (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spanische Peseten (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finnische Mark(FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Französische Francs (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Griechische Drachmen (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungarische Forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Isländische Kronen (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italienische Lire (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Niederländische Gulden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norwegische Kronen (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polnische Zloty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumänische Lei (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russische Rubel (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenische Taler (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Schwedische Kronen (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Türkische Lire (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slowakische Kronen (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianische Reais (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estnische Kronen (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litauische Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanischer Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanischer Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigene... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Maßeinheiten STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Auswahl der Maßeinheiten ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Britisch STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :metrisch STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI-Basiseinheiten ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Fahrzeuge STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wähle, auf welcher Straßenseite der Verkehr fahren soll STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Linksverkehr STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Rechtsverkehr STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Städtenamen STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Wähle die Sprache für die Städtenamen aus ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Englisch STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Französisch STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Deutsch STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Englisch (Zusätzlich) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Lateinamerikanisch STR_GAME_OPTIONS_TOWN_NAME_SILLY :Verrückt STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Schwedisch STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Niederländisch STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnisch STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polnisch STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slowakisch STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norwegisch STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarisch STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Österreichisch STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumänisch STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tschechisch STR_GAME_OPTIONS_TOWN_NAME_SWISS :Schweizerisch STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dänisch STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Türkisch STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italienisch STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanisch ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosicherung STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Abstand zwischen den automatischen Spielesicherungen wählen STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Jeden Monat STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Alle 3 Monate STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Alle 6 Monate STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Alle 12 Monate STR_GAME_OPTIONS_LANGUAGE :{BLACK}Sprache STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Sprache für die Spieloberfläche auswählen STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Vollbild STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}OpenTTD im Vollbildmodus spielen STR_GAME_OPTIONS_RESOLUTION :{BLACK}Bildschirmauflösung STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Bildschirmauflösung auswählen STR_GAME_OPTIONS_RESOLUTION_OTHER :Andere STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshotformat STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Format auswählen, in dem Screenshots abgespeichert werden sollen STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisgrafiken STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zu benutzendes Set an Basisgrafiken auswählen STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fehlende/fehlerhafte Datei{P "" en} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Zusatzinformationen zu den Basisgrafiken STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basissounds STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Basissounds auswählen STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Zusatzinformationen zu den Basissounds STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikset STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Ein Musikset auswählen STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fehlerhafte Datei{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Zusätzliche Informationen über das Musikset STR_ERROR_FULLSCREEN_FAILED :{WHITE}Vollbildmodus nicht möglich # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Eigene Währung STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wechselkurs: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Eigene Währung gegenüber dem Pfund (£) verteuern STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Eigene Währung gegenüber dem Pfund (£) verbilligen STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Umrechnungskurs der eigenen Währung gegenüber dem Pfund (£) festlegen STR_CURRENCY_SEPARATOR :{LTBLUE}Trennsymbol: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Das Tausender-Trennzeichen für die eigene Währung festlegen STR_CURRENCY_PREFIX :{LTBLUE}Präfix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Das Zeichen für die eigene Währung festlegen (Prefix) STR_CURRENCY_SUFFIX :{LTBLUE}Suffix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Das Zeichen für die Eigene Währung setzen (Suffix) STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Umstellung auf Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Umstellung auf Euro: {ORANGE}nie STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Einführungsjahr des Euros festlegen STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Früher den Euro einführen STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Später den Euro einführen STR_CURRENCY_PREVIEW :{LTBLUE}Vorschau: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pfund (£) in der eigenen Währung STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Parameter für eigene Währung ändern STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Max. Mitbewerber-Zahl: {ORANGE}{COMMA} STR_NONE :Keine STR_FUNDING_ONLY :Nur durch Spieler STR_MINIMAL :Minimal STR_NUM_VERY_LOW :Sehr niedrig STR_NUM_LOW :Niedrig STR_NUM_NORMAL :Normal STR_NUM_HIGH :Hoch STR_NUM_CUSTOM :Eigene STR_NUM_CUSTOM_NUMBER :Individuell ({NUM}) STR_VARIETY_NONE :Minimal STR_VARIETY_VERY_LOW :Sehr klein STR_VARIETY_LOW :Klein STR_VARIETY_MEDIUM :Mittel STR_VARIETY_HIGH :Groß STR_VARIETY_VERY_HIGH :Sehr groß STR_AI_SPEED_VERY_SLOW :Sehr langsam STR_AI_SPEED_SLOW :Langsam STR_AI_SPEED_MEDIUM :Mittel STR_AI_SPEED_FAST :Schnell STR_AI_SPEED_VERY_FAST :Sehr schnell STR_SEA_LEVEL_VERY_LOW :Sehr niedrig STR_SEA_LEVEL_LOW :Niedrig STR_SEA_LEVEL_MEDIUM :Mittel STR_SEA_LEVEL_HIGH :Hoch STR_SEA_LEVEL_CUSTOM :Individuell STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Individuell ({NUM}%) STR_RIVERS_NONE :Keine STR_RIVERS_FEW :Wenige STR_RIVERS_MODERATE :einige STR_RIVERS_LOT :Viele STR_DISASTER_NONE :Keine STR_DISASTER_REDUCED :Verringert STR_DISASTER_NORMAL :Normal STR_SUBSIDY_X1_5 :x1,5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Sehr flach STR_TERRAIN_TYPE_FLAT :Flach STR_TERRAIN_TYPE_HILLY :Hügelig STR_TERRAIN_TYPE_MOUNTAINOUS :Bergig STR_CITY_APPROVAL_PERMISSIVE :Hoch STR_CITY_APPROVAL_TOLERANT :Mäßig STR_CITY_APPROVAL_HOSTILE :Gering STR_WARNING_NO_SUITABLE_AI :{WHITE}Keine KI gefunden...{}Verschiedene KI sind via 'Erweiterungen herunterladen' verfügbar # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Erweiterte Einstellungen STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Suchtext: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Alles ausklappen STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Alles einklappen STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(keine Erklärung verfügbar) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standardwert: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Art der Einstellung: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Nutzer-Einstellung (nicht in Spielständen gespeichert; beeinflußt alle Spiele) STR_CONFIG_SETTING_TYPE_GAME_MENU :Karten-Einstellung (in Spielständen gespeichert; beeinflußt nur neue Spiele) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Karten-Einstellung (im Spielstand gespeichert; beeinflußt nur aktuelles Spiel) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firmen-Einstellung (in Spielständen gespeichert; beeinflußt nur neue Spiele) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firmen-Einstellung (im Spielstand gespeichert; beeinflußt nur aktuelle Firma) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Zeige: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beschränkt die Liste auf geänderte Einstellungen STR_CONFIG_SETTING_RESTRICT_BASIC :Grundlegende Einstellungen STR_CONFIG_SETTING_RESTRICT_ADVANCED :Erweiterte Einstellungen STR_CONFIG_SETTING_RESTRICT_ALL :Alle Einstellungen STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Einstellungen mit Werten verschieden von OpenTTDs Standardwerten STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Einstellungen mit einem Wert verschieden von den eigenen Einstellungen für neue Spiele STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Schränkt die Liste auf bestimme Einstellungs-Typen ein STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle Einstellungen STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nutzer-Einstellungen (nicht in Spielständen gespeichert; beeinflußt alle Spiele) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spiel-spezifische Einstellungen (im Spielstand gespeichert; beeinflußt nur neue Spiele) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spiel-spezifische Einstellungen (im Spielstand gespeichert; beeinflußt nur aktuelles Spiel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmeneinstellungen (im Spielstand gesichert; beeinflußt nur neue Spiele) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firmeneinstellungen (im Spielstand gesichert; beeinflußt nur die aktuelle Firma) STR_CONFIG_SETTING_OFF :Aus STR_CONFIG_SETTING_ON :An STR_CONFIG_SETTING_DISABLED :ausgeschaltet STR_CONFIG_SETTING_COMPANIES_OFF :Aus STR_CONFIG_SETTING_COMPANIES_OWN :Eigene Firma STR_CONFIG_SETTING_COMPANIES_ALL :Alle Firmen STR_CONFIG_SETTING_NONE :Keine STR_CONFIG_SETTING_ORIGINAL :Original STR_CONFIG_SETTING_REALISTIC :Realistisch STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Links STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Mitte STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Rechts STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Kreditlimit bei Spielbeginn: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximaler Kredit für eine Firma (ohne Berücksichtigung der Inflation) STR_CONFIG_SETTING_INTEREST_RATE :Zinssatz: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Zinssatz für Kredite; beeinflußt auch die Inflation, falls aktiv STR_CONFIG_SETTING_RUNNING_COSTS :Betriebskosten: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stellt die Höhe der Unterhalts- und Betriebskosten für Fahrzeuge und Infrastruktur ein STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Baugeschwindigkeit: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begrenzt der eingestellten Baugeschwindigkeit entsprechend die Anzahl der Bau-Aktionen der KIs STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Fahrzeugpannen: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Einstellen wie oft unzureichend gewartete Fahrzeuge Pannen haben können STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subventions-Multiplikator: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Einstellen, wieviel für subventionierte Verbindungen gezahlt wird STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Baukosten: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Höhe der Bau- und Einkaufskosten festlegen STR_CONFIG_SETTING_RECESSIONS :Rezessionen: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Falls aktiv, können Rezessionen im Abstand von einigen Jahre auftreten. Während einer Rezession ist die Produktion aller Industrien viel niedriger (und kehrt zum Ende der Rezession zum gleichen Level zurück wie vor der Rezession) STR_CONFIG_SETTING_TRAIN_REVERSING :Zügen das Umdrehen in Bahnhöfen verbieten: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Falls aktiv, werden Züge in Durchgangsbahnhöfen nicht umdrehen, auch wenn ein kürzerer Pfad zum nächsten Zielbahnhof mittels Umdrehen verfügbar ist STR_CONFIG_SETTING_DISASTERS :Katastrophen: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ein- oder Ausschalten von Katastrophen, durch die gelegentlich Fahrzeuge oder Infrastruktur blockiert oder zerstört werden können STR_CONFIG_SETTING_CITY_APPROVAL :Toleranz der Stadtverwaltung bei Landschaftsumgestaltungen: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Auswählen, wie stark Lärm und Umweltschäden die Stadtbewertung einer Firma sinken lassen. Bei einer zu schlechten Bewertung werden dann in dieser Stadt keine Bauvorhaben mehr genehmigt STR_CONFIG_SETTING_BUILDONSLOPES :Das Bauen an Hängen und Küsten erlauben: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Falls aktiviert, können Transportwege und Stationen an die meisten Hänge gebaut werden. Falls deaktiviert, dürfen sie nur dann an einen Hang gebaut werden, wenn dafür keine Fundamente errichtet werden müssen STR_CONFIG_SETTING_AUTOSLOPE :Landschaftsbau unter Gebäuden, Gleisen, usw. erlauben: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Erlaube Erdbauarbeiten unter Gebäuden oder Infrastruktur ohne sie zu entfernen STR_CONFIG_SETTING_CATCHMENT :Verschiedene Stationstypen haben unterschiedlich große Einzugsgebiete: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Wird diese Option eingeschaltet, besitzen unterschiedliche Stationsarten bzw. Flughäfen unterschiedlich große Einzugsgebiete STR_CONFIG_SETTING_EXTRADYNAMITE :Entfernung von weiteren Straßen, Brücken usw. erlauben: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Erlaubt einfacheres Entfernen von städtischer Infrastruktur und Gebäuden STR_CONFIG_SETTING_TRAIN_LENGTH :Maximale Zuglänge: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Festlegen der maximalen Zuglänge STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} Feld{P 0 "" er} STR_CONFIG_SETTING_SMOKE_AMOUNT :Menge an Rauch/Funken von Fahrzeugen: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Lege fest, wieviel Rauch und wieviele Funken von Fahrzeugen erzeugt werden STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Beschleunigungsmodell für Züge: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Wähle das physikalische Modell für die Beschleunigung von Zügen. Im Modell 'Original' hat die Fahrzeugart keinen Einfluss auf das Verhalten bei Steigungen. Im Modell 'Realistisch' wirken sich dagegen bestimmte Fahrzeugwerte (z.B. Länge des Zuges, Zugkraft) auf das Verhalten des Zuges bei Steigungen aus STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Beschleunigungsmodell für Straßenfahrzeuge: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Wähle das physikalische Modell für die Beschleunigung von Straßenfahrzeugen. Im Modell 'Original' hat die Fahrzeugart keinen Einfluss auf das Verhalten bei Steigungen. Im Modell 'Realistisch' wirken sich dagegen bestimmte Leistungswerte (z.B. Zugkraft) auf das Verhalten des Fahrzeuges bei Steigungen aus STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Steigung für Züge: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Der Steigungsgrad, der für eine bergauf bzw. bergab verlaufende Gleisstrecke simuliert wird. Höhere Werte machen es für Züge schwieriger, die Steigung zu überwinden STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Steigung für Straßenfahrzeuge: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Der Steigungsgrad, der für einen bergauf bzw. bergab verlaufenden Straßenabschnitt simuliert wird. Höhere Werte machen es für Straßenfahrzeuge schwieriger, die Steigung zu überwinden STR_CONFIG_SETTING_FORBID_90_DEG :Zügen und Schiffen 90°-Kurven verbieten: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-Grad-Kurven entstehen, wenn horizontale Streckenabschnitte unmittelbar auf vertikale Strecken im angrenzenden Feld folgen, so dass der Zug an Stelle der üblichen 45° um eine 90°-Kurve fahren muss. Dies bezieht sich auch auf den Wenderadius von Schiffen STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Erlaube, nicht direkt benachbarte Stationen zu verbinden: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Erlaube den Bau von Stationsteilen, die nicht unmittelbar an andere Stationsfelder angrenzen. Nutze Strg+Klick, um diese mit einer existierenden Station zu verbinden. STR_CONFIG_SETTING_IMPROVEDLOAD :Verbessertes Beladeverfahren nutzen: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Belade Fahrzeuge nacheinander, wenn mehrere Fahrzeuge an einer Station auf Ladung warten. Das Beladen des zweiten Fahrzeugs wird nur dann vorgenommen, wenn genügend Fracht vorhanden ist, um das erste Fahrzeug komplett zu beladen STR_CONFIG_SETTING_GRADUAL_LOADING :Fahrzeuge schrittweise beladen: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Lade Fahrzeuge schrittweise unter Nutzung der fahrzeugspezifischen Ladezeiten, anstatt alles auf einmal zu festgelegten Zeiten, die nur von der Frachtmenge abhängen, zu laden. STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Inflation einschalten. Beim Spielen mit Inflation steigen die Kosten geringfügig schneller als die Transporteinnahmen STR_CONFIG_SETTING_SELECTGOODS :Stationen werden nur mit Fracht beliefert, wenn ein Fahrzeug sie von dort abholt: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Liefere nur Fracht an Stationen, wenn sie dort auch nachgefragt wird. Dies verhindert schlechte Bewertungen für nicht bediente Frachtarten STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximallänge für Brücken: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximale Länge für Brücken STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximallänge für Tunnel: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximale Länge für Tunnel STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manueller Bau von Rohstoffindustrien: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Methode, um Primärindustrien zu gründen. 'Nicht erlaubt' meint, dass es gar nicht möglich ist, sie zu finanzieren, 'Durch Prospektieren', dass der Ort der gewünschten Industrie zufällig gewählt wird und auch scheitern kann und 'Wie andere Industrien', dass sie wie produzierende Industrien an jeder gewünschten und für die Industrie zulässigen Stelle gegründet werden können STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nicht erlaubt STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Wie andere Industrien STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Durch Prospektion STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flaches Gelände um Industrien: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Anzahl ebener Felder um eine Industrie herum. Diese Einstellung stellt sicher, dass dieser Platz verfügbar bleibt, um um die Industrie Straßen, Haltestellen, o.Ä. bauen zu können. STR_CONFIG_SETTING_MULTIPINDTOWN :Mehrere gleichartige Industrien pro Stadt erlauben: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Erlaube den Bau mehrerer gleichartiger Industrien pro Stadt. Normalerweise erlauben Städte nur den Bau einer Industrie pro Industrietyp in ihrem Einflussbereich STR_CONFIG_SETTING_SIGNALSIDE :Zeige Signale: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Lege die Gleisseite fest, auf der Signale angezeigt werden STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Auf der linken Seite STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Auf der Straßenverkehrsseite STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Auf der rechten Seite STR_CONFIG_SETTING_SHOWFINANCES :Zeige Firmenfinanzen am Ende des Jahres: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Blende am Ende jedes Jahres automatisch die Einkommensübersicht des Unternehmes ein, um eine schnelle Übersicht über den finanziellen Status zu bekommen STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Aufträge standardmäßig ohne Zwischenhalt anfahren: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalerweise hält ein Fahrzeug an jeder Station, die es passiert. Wird diese Einstellung aktiviert, hält das Fahrzeug nur an den Stationen, die explizit in den Aufträgen angeführt sind. Bedenke, dass dieses nur das Standard-Verhalten für neue Aufträge beschreibt. Einzelne Aufträge können explizit auf jedes gewünschte Verhalten geändert werden STR_CONFIG_SETTING_STOP_LOCATION :Neue Aufträge: Zug hält standardmäßig {STRING} des Bahnsteigs STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Die Position, an der Züge standardmäßig am Bahnsteig anhalten. Bei 'am Anfang' hält der Zug an, sobald er mit allen Waggons in den Bahnhof eingefahren ist. Bei 'in der Mitte' hält er zentral in der Mitte des Bahnsteigs und bei 'am Ende' durchfährt der Zug den Bahnhof soweit wie möglich. Die hier gewählte Einstellung wird bei allen neu erstellten Aufträgen verwendet. Bei bestehenden Aufträgen kann der Haltepunkt jederzeit im Auftragsfenster verändert werden. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :am Anfang STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :in der Mitte STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :am Ende STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Fahrzeugwarteschlange (mit Überlagerung): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Lässt Straßenfahrzeuge so lange vor einer besetzten Haltestelle warten, bis sie frei wird STR_CONFIG_SETTING_AUTOSCROLL :Spielfeld scrollen, wenn die Maus am Bildrand anstößt: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Falls aktiv wird der Kartenausschnit scrollen, wenn die Maus nahe dem Fensterrand ist STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Ausgeschaltet STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hauptfenster, nur bei Vollbildschirm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hauptfenster STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Jede Ansicht STR_CONFIG_SETTING_BRIBE :Bestechen der Stadtverwaltung erlauben: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Firmen das Bestechen von lokalen Behörden erlauben. Wenn die Bestechung von einem Staatsanwalt bemerkt wird, wird die Firma für die nächsten sechs Monate in der Stadt keine weiteren Aktionen starten können. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Den Erwerb exklusiver Transportrechte erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Wenn eine Firma exklusive Transportrechte in einer Stadt kauft, wird ein Jahr lang keine Fracht an Stationen von Mitbewerbern im Stadtgebiet geliefert STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Finanzieren von Gebäuden erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Erlaubt Firmen, der Stadtverwaltung Geld für das Errichten neuer Häuser zur Verfügung zu stellen STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Finanzierung von Straßenbauarbeiten erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Erlaube Firmen, der Stadtverwaltung Geld für den Straßenbau zur Verfügung zu stellen und so insbesondere gegnerische Straßenfahrzeuge durch Staus zu blockieren STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Schenken von Geld an andere Firmen erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Erlaube, im Mehrspielermodus Geld zwischen Firmen zu transferieren STR_CONFIG_SETTING_FREIGHT_TRAINS :Frachtgewicht erhöhen, um schwere Züge zu simulieren: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Setze den Einfluss von Güterladungen auf Züge. Höhere Werte machen Frachttransport für Züge anspruchsvoller, insbesondere auf Steigungen STR_CONFIG_SETTING_PLANE_SPEED :Geschwindigkeitsfaktor für Flugzeuge: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Setze die Geschwindigkeit von Luftfahrzeugen relativ zu anderen Fahrzeugtypen, um das Einkommen von Luftfahrzeugen zu reduzieren STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1/{COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Anzahl Flugzeugabstürze: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Stellt die Wahrscheinlichkeit für Flugzeugunglücke ein STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Keine STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Verringert STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Bus- und Lkw-Haltestellen auf städtischen Straßen erlauben: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Erlaubt die Errichtung von Bus- und Lkw-Haltestellen auf städtischen Straßen STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Bus- und Lkw-Haltestellen auf Straßen von Mitbewerbern erlauben: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Erlaube die Errichtung von Bus- und Lkw-Haltestellen auf Straßen, die Mitbewerbern gehören STR_CONFIG_SETTING_ADJACENT_STATIONS :Bau angrenzender Stationen erlauben: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Den Bau von aneinandergrenzenden Stationen erlauben STR_CONFIG_SETTING_DYNAMIC_ENGINES :Mehrere NewGRF-Fahrzeugsets erlauben: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitätseinstellung für veraltete NewGRFs. NICHT deaktivieren, wenn der Einfluss dieser Einstellung nicht genau bekannt ist! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Diese Einstellung kann nicht geändert werden solange Fahrzeuge im Spiel sind STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Instandhaltung der Infrastruktur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Unterhaltskosten für Infrastruktur einschalten. Die Unterhaltskosten wachsen mit zunehmender Netzwerkgröße überproportional an, so dass sie größere Firmen stärker belasten als kleinere STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flughäfen veralten nie: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Wird diese Option aktiviert, können Flughäfen, die einmal eingeführt wurden, das ganze Spiel über gebaut werden und veralten nie STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warnen, wenn Fahrzeug sich verirrt hat: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Eine Nachricht einblenden, wenn Fahrzeuge ihr Ziel nicht erreichen können oder keinen Weg dorthin finden STR_CONFIG_SETTING_ORDER_REVIEW :Fahrpläne prüfen: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Überprüfe die Aufträge von Fahrzeugen regelmäßig und zeige Nachrichten, wenn Probleme entdeckt werden STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nein STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, außer gestoppte Fahrzeuge STR_CONFIG_SETTING_ORDER_REVIEW_ON :Für alle Fahrzeuge STR_CONFIG_SETTING_WARN_INCOME_LESS :Warnen, wenn Einnahmen eines Fahrzeuges negativ sind: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Zeige Nachrichten, wenn ein Fahrzeug im letzten Kalenderjahr keinen Gewinn erwirtschaftet hat STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Fahrzeuge veralten nie: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Erlaube, dass Fahrzeuge nach ihrem Einführungsdatum ewig verfügbar bleiben STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Fahrzeuge automatisch erneuern, wenn sie alt werden: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Erneuere Fahrzeuge automatisch gemäß der Regeln für Erneuerung, wenn sie ihr Maximalalter erreicht haben. STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatisches Erneuern, wenn das Fahrzeug {STRING} dem Maximalalter STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Berücksichtige das relative Alter für automatisches Erneuern von Fahrzeugen STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} Monat{P 0 "" e} vor STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} Monat{P 0 "" e} über STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimaler Kontostand für automatisches Erneuern: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Geldbetrag, der nach der automatischen Ersetzung eines Fahrzeuges mindestens noch übrig bleiben muss. Ansonsten findet keine automatische Ersetzung statt STR_CONFIG_SETTING_ERRMSG_DURATION :Anzeigedauer für Fehlermeldungen: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Anzeigedauer für Fehlermeldungen in einem roten Fenster. Bedenke, dass einige (kritische) Fehlermeldungen nicht automatisch nach dieser Dauer geschlossen werden sondern manuell geschlossen werden müssen STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} Sekunde{P 0 "" n} STR_CONFIG_SETTING_HOVER_DELAY :Zeige kurzen Hilfetext: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Einstellen, wie lange man zum Aufruf von Hilfetexten zur Erklärung der Funktionen im Spiel mit dem Mauszeiger über der gewünschten Stelle stehenbleiben muss, oder, als Alternative, dass die Hilfetexte bei einem Rechtsklick sofort angezeigt werden sollen STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Nach {COMMA} Sekunde{P 0 "" n} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rechtsklick STR_CONFIG_SETTING_POPULATION_IN_LABEL :Zeige die Einwohnerzahl von Städten neben ihrem Namen: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zeige die Einwohneranzahl neben den Städtenamen auf der Karte an STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linienstärke in Diagrammen: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Strichdicke der Linien in Diagrammen. Dünnere Linien sind genauer ablesbar, dickere Linien sind besser sichtbar und erlauben es, Farben leichter zu unterscheiden STR_CONFIG_SETTING_LAND_GENERATOR :Algorithmus zur Landschaftserzeugung: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximalabstand vom Kartenrand für Ölraffinerien: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ölraffinerien werden nur in der Nähe des Kartenrands gebaut, bei inselreichen Karten nahe der Küste STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Schneegrenze auf: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rauheit (nur TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sehr eben STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Eben STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rau STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sehr rau STR_CONFIG_SETTING_TREE_PLACER :Algorithmus zur Baumplatzierung: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Keiner STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Verbessert STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Drehung der Reliefkarte: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nach links STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Nach rechts STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Höhenstufe des Spielfeldes in einem flachen Szenario: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Landschaftsbau am Spielfeldrand erlauben: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Wenn aktiviert, können sowohl Wasser- als auch Landflächen am Kartenrand liegen. Ansonsten wird das Spielfeld am Rand immer von Wasser begrenzt. STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ein oder mehrere Felder am nördlichen Spielfeldrand sind nicht leer STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Eines oder mehrere Felder am Spielfeldrand sind nicht Wasser STR_CONFIG_SETTING_STATION_SPREAD :Maximale Stationsgröße: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Der maximale Bereich, über den sich eine einzelne Station erstrecken darf. Hohe Werte könnten das Spiel verlangsamen. STR_CONFIG_SETTING_SERVICEATHELIPAD :Hubschrauber auf Landeplatz automatisch warten: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Warte Helikopter nach jeder Landung, auch wenn es am Landeplatz keinen Hangar gibt STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Werkzeugleiste für Landschaftsbau an die Bauwerkzeuge binden: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Öffne gemeinsam mit der Bauleiste für eine Transportart auch die Bauleiste für Landschaftsgestaltung STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Farbe für Land auf der Weltkarte: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farbe von Landflächen auf der Weltkarte STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grün STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dunkelgrün STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Lila STR_CONFIG_SETTING_REVERSE_SCROLLING :Scrollrichtung invertieren: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Legt das Verhalten beim Scrollen der Karte mit der rechten Maustaste fest. Ist diese Option aktiviert, bewegt sich der sichtbare Kartenausschnitt in Mausrichtung. Ist sie deaktiviert, bewegt sich die Karte entgegen der Mausrichtung STR_CONFIG_SETTING_SMOOTH_SCROLLING :Weicher Bildlauf beim Springen zu einer Position: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Lege fest, auf welche Weise die Hauptansicht an eine bestimmte Position wechselt (z.B. wenn ein Punkt auf der Weltkarte angeklickt wird oder der Standort eines Bahnhofs angezeigt werden soll). Ist diese Option eingeschaltet, schwenkt die Ansicht über die Karte, bis sie am gewünschten Punkt angekommen ist. Ist sie ausgeschaltet, springt die Ansicht sofort an die gewünschte Position STR_CONFIG_SETTING_MEASURE_TOOLTIP :Beim Bauen Tooltip mit Abmessungen anzeigen: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Zeige Distanzen und Höhendifferenzen an, wenn mit der Maus während eines Bauvorgangs gezogen wird STR_CONFIG_SETTING_LIVERIES :Anzeigen der Firmenlackierungen: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Lege fahrzeugspezifische Farbgebung fest (im Gegensatz zu firmenspezifischen Farbgebungen) STR_CONFIG_SETTING_LIVERIES_NONE :Keine STR_CONFIG_SETTING_LIVERIES_OWN :Eigene Firma STR_CONFIG_SETTING_LIVERIES_ALL :Alle Firmen STR_CONFIG_SETTING_PREFER_TEAMCHAT :Bevorzuge Teamchat mit : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Mit oder mit zwischen firmeninternem und öffentlichem Chat umschalten STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funktion des Mausrads: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Erlaube Scrollen mit zweidimensionalem Mausrad STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Spielfeld vergrößern STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Hauptansicht verschieben STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Aus STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mausradgeschwindigkeit auf dem Spielfeld: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Lege die Empfindlichkeit des Mausrads beim Scrollen fest STR_CONFIG_SETTING_OSK_ACTIVATION :On-screen Tastatur: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Wählen der Methode, um die On-Screen-Tastatur für die Texteingabe in Eingabefeldern bei der Verwendung von Zeigegeräten zu aktivieren. Dieses ist für kleine Geräte ohne tatsächliche Tastatur gedacht STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deaktiviert STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Doppel-Klick STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Einfach-Klick (wenn hervorgehoben) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Einfach-Klick (sofort) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Rechtsklick-Emulation: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Lege die Methode, die rechte Maustaste zu emulieren, fest STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+Klick STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Strg+Klick STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Aus STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollen mit linker Maustaste: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Scrolle die Karte, indem mit der linken Maustaste gezogen wird. Dies ist besonders sinnvoll, wenn ein Touchscreen zum Scrollen genutzt wird STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Verwende {STRING} Datumsformat beim Benennen der Spielstände STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Lege das Datumsformat für Spielstandsdateien fest STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langes (25. Dez 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kurzes (25-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-25) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standard-Palette für NewGRFs, die keine Paletteninformationen angeben: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalette für NewGRFs, die keine Palette definieren STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Standardfarbpalette (D) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Veraltete Farbpalette (W) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatische Pause bei Spielstart: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Starte ein Spiel im Pausenmodus; dies erlaubt vor Spielstart, die Karte ausführlich zu betrachten. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Erlauben während angehaltenen Spiels: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Lege fest, welche Tätigkeiten im Pausenmodus durchgeführt werden dürfen STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Keine Tätigkeiten STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle Tätigkeiten, die keine Bautätigkeiten sind STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alle Tätigkeiten außer Landschaftsbau STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle Tätigkeiten STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Erweiterte Fahrzeugliste benutzen: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Nutze erweiterte Fahrzeuglisten für die Gruppierung von Fahrzeugen STR_CONFIG_SETTING_LOADING_INDICATORS :Ladestandanzeiger verwenden: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Auswählen, ob beim Be- oder Entladen der Ladestand in Prozent über dem Fahrzeug angezeigt werden soll STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Fahrpläne in Ticks anstatt in Tagen anzeigen: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Zeige Fahrtzeiten in Fahrplänen in Ticks statt Tagen STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Zeige Ankunft und Abfahrt im Fahrplan: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zeige geschätzte Ankunfts- und Abfahrtzeiten in Fahrplänen STR_CONFIG_SETTING_QUICKGOTO :Schnelle Erzeugung von Aufträgen für Fahrzeuge: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Setze die Vorauswahl des Mauszeigers auf 'Fahre zu', wenn ein Auftragsfenster mit weniger als zwei Einträgen geöffnet wird. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Gleistyp bei Spielbeginn/geladenem Spiel: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Vorausgewählter Schienentyp nach Spielstart. 'Erster verfügbarer' wählt den ältesten Schienentyp, 'Letzter verfügbarer' den neuesten Schienentyp und 'Meistbenutzter' denjenigen, der am meisten verbaut ist. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Erster verfügbarer STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Letzter verfügbarer STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Meistbenutzter STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Reservierte Gleise hervorheben: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Hebt reservierte Fahrabschnitte hervor, um bei der Problemanalyse zu helfen, wenn Züge die Einfahrt in Pfad-basierte Streckenabschnitte verweigern STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Belasse Bauwerkzeuge aktiv nach Benutzung: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Die Bauwerkzeuge für Brücken, Tunnel, etc. nach Benutzung weiter aktiviert lassen STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zwischensummen für Kategorien bei Firmenausgaben:{STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Lege das Layout für das Fenster mit den Firmenausgaben fest STR_CONFIG_SETTING_SOUND_TICKER :Nachrichtenticker: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Soundeffekte für Kurzfassungen von Nachrichten abspielen (Ticker) STR_CONFIG_SETTING_SOUND_NEWS :Zeitung: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Soundeffekte bei der Anzeige der Zeitung abspielen STR_CONFIG_SETTING_SOUND_NEW_YEAR :Bericht am Jahresende: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Soundeffekte beim Jahresrückblick auf die Bilanzen der vergangenen Jahre abspielen STR_CONFIG_SETTING_SOUND_CONFIRM :Baumaßnahmen: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Soundeffekte bei Baumaßnahmen oder anderen Aktionen abspielen STR_CONFIG_SETTING_SOUND_CLICK :Klick auf Knöpfe: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piepton bei Klick auf Knöpfe STR_CONFIG_SETTING_SOUND_DISASTER :Unfälle und Katastrophen: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Soundeffekte von Unfällen und Katastrophen abspielen STR_CONFIG_SETTING_SOUND_VEHICLE :Fahrzeuge: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Soundeffekte von Fahrzeugen abspielen STR_CONFIG_SETTING_SOUND_AMBIENT :Umgebungsgeräusche: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Soundeffekte für Landschaft, Industrien und Städte abspielen STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Bau von Infrastruktur verbieten, wenn dafür keine Fahrzeuge verfügbar sind: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Zeige Infrastruktur nur, wenn sie auch von Fahrzeugen genutzt werden kann, um Verschwendung von Zeit und Geld auf den Bau von unnützer Infrastruktur zu vermeiden STR_CONFIG_SETTING_MAX_TRAINS :Maximale Anzahl der Züge pro Firma: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximale Anzahl Züge pro Firma STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximale Anzahl der Straßenfahrzeuge pro Firma: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximale Anzahl Straßenfahrzeuge pro Firma STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximale Anzahl der Flugzeuge pro Firma: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximale Anzahl Luftfahrzeuge pro Firma STR_CONFIG_SETTING_MAX_SHIPS :Maximale Anzahl der Schiffe pro Firma: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximale Anzahl Schiffe pro Firma STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Züge für den Computer abschalten: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Verbiete Computerspielern, Züge zu kaufen STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Straßenfahrzeuge für den Computer abschalten: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Verbiete Computerspielern, Straßenfahrzeuge zu kaufen STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Flugzeuge für den Computer abschalten: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Verbiete Computerspielern, Luftfahrzeuge zu kaufen STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Schiffe für den Computer abschalten: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Verbiete Computerspielern, Schiffe zu kaufen STR_CONFIG_SETTING_AI_PROFILE :Standardeinstellungen: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Auswählen, welcher Schwierigkeitsgrad in den KI-Optionen von zufällig startenden Computerspielern eingestellt werden soll. Wird auch als Standardwert für einzeln ausgewählte KIs oder für Spielskripte verwendet STR_CONFIG_SETTING_AI_PROFILE_EASY :Leicht STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mittel STR_CONFIG_SETTING_AI_PROFILE_HARD :Schwierig STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :KI im Mehrspielermodus erlauben: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Erlaube die Teilnahme von Computerspielern im Mehrspielermodus STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Rechenoperationen, bevor das Skript angehalten wird: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximale Anzahl Rechenschritte, die ein Skript in einer Runde zur Verfügung hat STR_CONFIG_SETTING_SERVINT_ISPERCENT :Wartungsintervalle in Prozent: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Lege fest, ob Fahrzeuge zur Wartung geschickt werden basierend auf der verstrichenen Zeit seit der letzten Wartung oder dem Absinken der Zuverlässigkeit auf einen gewissen Prozentsatz der maximalen Zuverlässigkeit des Fahrzeugtyps STR_CONFIG_SETTING_SERVINT_TRAINS :Standard-Wartungsintervall für Züge: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Setze das Standardwartungsintervall für Schienenfahrzeuge. Dieses Wartungsintervall wird von allen Zügen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} Tag{P 0 "" e}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktiviert STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard-Wartungsintervall für Straßenfahrzeuge: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Setze das Standardwartungsintervall für Straßenfahrzeuge. Dieses Wartungsintervall wird von allen Fahrzeugen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard-Wartungsintervall für Luftfahrzeuge: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Setze das Standardwartungsintervall für Luftfahrzeuge. Dieses Wartungsintervall wird von allen Luftfahrzeugen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist STR_CONFIG_SETTING_SERVINT_SHIPS :Standard-Wartungsintervall für Schiffe: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Setze das Standardwartungsintervall für Schiffe. Dieses Wartungsintervall wird von allen Schiffen eingehalten, denen kein individuelles Wartungsintervall zugewiesen worden ist STR_CONFIG_SETTING_NOSERVICE :Wartung deaktivieren, wenn Pannen abgeschaltet: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Schicke Fahrzeuge nicht zur Wartung, wenn Pannen ausgeschaltet sind STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Berücksichtige Waggonhöchstgeschwindigkeit: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Begrenze die Höchstgeschwindigkeit eines Zuges durch die jeweiligen Höchstgeschwindigkeiten der mitgeführten Waggons STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiviere elektrifizierte Strecken: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Erlaube Elektrolokomotiven das Fahren auf nicht elektrifizierten Gleisen STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Ankunft des ersten Fahrzeugs an Station des Spielers: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Zeitung anzeigen, wenn das erste Fahrzeug an einem eigenen Bahnhof eintrifft STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Ankunft des ersten Fahrzeugs an Station eines Mitbewerbers: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Zeitung anzeigen, wenn das erste Fahrzeug am Bahnhof eines Wettbewerbers eintrifft STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Unfälle und Katastrophen: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Zeitung anzeigen, wenn Unfälle oder Katastrophen auftreten STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmenmitteilungen: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Zeitung anzeigen, wenn neue Firmen gegründet werden oder kurz vor dem Bankrott stehen STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Eröffnung von Industrien: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Zeitung anzeigen, wenn Industrien eröffnen STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Schließung von Industrien: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Zeitung anzeigen, wenn Industrien schließen STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Änderungen der Wirtschaftslage: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Zeitung bei Änderungen der globalen Konjunktur anzeigen STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produktionsänderung von Industrien, die der Spieler bedient: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Zeitung anzeigen, wenn die Produktion von Industrien sich ändert, die von der eigenen Firma bedient werden STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produktionsänderung von Industrien, die ein Mitbewerber bedient: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Zeitung anzeigen, wenn die Produktion von Industrien sich ändert, die von Wettbewerbern bedient werden STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Produktionsänderungen anderer Industrien: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Zeitung anzeigen, wenn die Produktion von Industrien sich ändert, die von keiner Firma bedient werden STR_CONFIG_SETTING_NEWS_ADVICE :Rat / Informationen zu Fahrzeugen der Firma: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Nachrichten anzeigen, wenn Fahrzeuge Aufmerksamkeit benötigen (wie fehlerhafte Aufträge, mangelnde Wartung,...) STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Neue Fahrzeuge: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Zeitung anzeigen, wenn neue Fahrzeugtypen verfügbar werden STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Änderungen angenommener Fracht: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Nachrichten anzeigen, die Änderungen der akzeptierten Fracht von Bahnhöfen betreffen STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subventionen: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Zeitung anzeigen bei Ereignissen, die Subventionen betreffen STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Allgemeine Nachrichten: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Zeitung anzeigen bei allgemeinen Ereignissen wie Erwerb exklusiver Transportrechte oder der Finanzierung von Straßenbauarbeiten STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Aus STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Ticker STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Zeitung STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farbige Nachrichten erscheinen ab: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Jahr in dem die Zeitung in Farbe herausgebracht wird. Vor diesem Jahr erscheint sie in Schwarz-Weiß-Druck STR_CONFIG_SETTING_STARTING_YEAR :Startdatum: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Feinere Wirtschaft aktivieren (mehrere, kleinere Veränderungen): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Wird diese Option ausgewählt, ändert sich die Produktionsmenge der Industrien häufiger, aber dafür in kleineren Schritten. Diese Einstellung hat gewöhnlicherweise KEINEN Effekt, wenn die Industrien von NewGRFs bereitgestellt werden STR_CONFIG_SETTING_ALLOW_SHARES :Handel mit Firmenanteilen erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Erlaube das Kaufen und Verkaufen von Firmenanteilen. Firmenanteile sind nur verfügbar für Firmen, die hinreichend lange existieren STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prozentsatz des Profits für Teilstrecken: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Um das Einkommen der einzelnen Fahrzeuge einer Lieferkette ungefähr abschätzen zu können, wird vom Transporterlös bei Ablieferung einer Fracht der gewählte Prozentsatz den Zulieferfahrzeugen zugeschlagen STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Signalabstand beim Ziehen: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Lege den Abstand fest, in dem Signale auf Gleisen bis zum nächsten Hindernis (Signal, Weiche) gebaut werden, wenn sie gezogen werden STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} Feld{P 0 "" er} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Signalabstand nach Lücken (durch Tunnel, Brücken) nicht verkürzen : {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Lege das Verhalten beim Bau von Signalen mit Strg+Ziehen fest. Wenn eingeschaltet, werden Signale immer im ausgewählten Signalabstand gebaut. Kann ein Signal wegen einer Brücke oder eines Tunnels nicht gebaut werden, wird es ausgelassen. Ist diese Option ausgeschaltet, wird das Signal in diesem Fall nicht ausgelassen, sondern vor die Brücke bzw. den Tunnel gesetzt. Allerdings verschiebt sich dadurch die Position der folgenden Signale, was bei zweigleisigen Strecken dazu führen kann, dass die Signale nicht auf gleicher Höhe gesetzt werden. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatischer Bau von Formsignalen bis: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Lege das Jahr für die Einführung von Lichtzeichen-Signalen fest. Vor diesem Jahr werden Formsignale gebaut. Die haben die gleiche Funktion, sehen aber anders aus STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktiviere Signal-Menü: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Zeige das Signalbaufenster zur Auswahl statt nur durch die Signaltypen mittels Strg+Klick auf gebaute Signale zu rotieren STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standardsignaltyp: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard-Signaltyp STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blocksignal STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Pfadsignal STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einseitiges Pfadsignal STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Durchlaufen der Signalarten: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Lege fest, durch welche Signaltypen mittels Strg-Klick auf vorhandene Signale rotiert wird STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Nur Blocksignale STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Nur Pfadsignale STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle STR_CONFIG_SETTING_TOWN_LAYOUT :Straßenanordnung für neue Städte: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Art des Straßennetzwerks für Städte STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bessere Straßen STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2×2-Gitter STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3×3-Gitter STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Zufällig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Städten das Bauen von Straßen erlauben: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Erlaube Städten, Straßen zu bauen. Deaktiviere dieses, um Städten zu verbieten, Straßen eigenständig zu bauen STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Städte dürfen Bahnübergänge bauen: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Erlaube Städten, Bahnübergänge zu bauen STR_CONFIG_SETTING_NOISE_LEVEL :Stadt kontrolliert Lärmbelastung durch Flughäfen: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Wird diese Option deaktiviert, erlaubt jede Stadt den Bau von maximal zwei Flughäfen (nicht pro Spieler, sondern insgesamt). Wenn aktiviert, ist der Bau von Flughäfen durch die Lärmbelastung begrenzt. Die maximal zumutbare Lärmbelastung hängt von der Stadtgröße, der Flughafengröße und dem Abstand des Flughafens von der Stadtmitte ab STR_CONFIG_SETTING_TOWN_FOUNDING :Städte im Spiel gründen: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Erlaube Spielern die Gründung neuer Städte während des Spiels STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Verboten STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Erlaubt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Erlaubt, mit wählbarem Straßenbauplan STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Platzierung von Bäumen während des Spiels: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Lege das Ausmaß des zufälligen Baumwachstums während des Spiels fest. Dies kann Industrien wie die Sägemühle beeinflussen, welche auf nachwachsende Bäume angewiesen sind STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nirgends {RED}(macht Sägemühle nutzlos) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Nur im Regenwald STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :überall STR_CONFIG_SETTING_TOOLBAR_POS :Position der Werkzeugleiste: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontale Position der Bauleiste am oberen Bildschirmrand STR_CONFIG_SETTING_STATUSBAR_POS :Position der Statuszeile: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontale Position der Statusleiste am unteren Bildschirmrand STR_CONFIG_SETTING_SNAP_RADIUS :Einfangradius für Fenster: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Abstand zwischen Fenstern, bevor sie automatisch aneinander ausgerichtet werden STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} Pixel STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :deaktiviert STR_CONFIG_SETTING_SOFT_LIMIT :Maximale Fensteranzahl (nicht angepinnte): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Anzahl nicht angehefteter, offener Fenster, bevor alte Fenster automatisch geschlossen werden, um Platz für neue Fenster zu schaffen STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :deaktiviert STR_CONFIG_SETTING_ZOOM_MIN :Maximale Hineinzoomstufe: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximale Vergrößerung für Kartenansichten. Bedenke, dass höhere Vergrößerungsstufen mehr Arbeitsspeicher benötigen STR_CONFIG_SETTING_ZOOM_MAX :Maximale Herauszoomstufe: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maximale Verkleinerungsstufe für Kartenansichten. Höhere Verkleinerungsstufen können Ruckeln verursachen STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Wachstumsgeschwindigkeit von Städten: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Geschwindigkeit des Städtewachstums STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Keine STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Langsam STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Mittel STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Schnell STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sehr schnell STR_CONFIG_SETTING_LARGER_TOWNS :Anteil der Städte, die Großstädte werden: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Anzahl Städte, die eine Großstadt werden, d.h. derjenigen Städte, die schon zu Beginn des Spiels größer sind und auch schneller wachsen werden STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 von {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :keine STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Größe von Großstädten bei Spielbeginn: {STRING}x STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Durchschnittliche Größe von Großstädten relativ zu normalen Städten bei Spielbeginn STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Entferne absurde Straßenteile während Straßenreparaturen: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Entferne Sackgassen, wenn Straßenbauarbeiten finanziert werden STR_CONFIG_SETTING_GUI :{ORANGE}Oberfläche STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion STR_CONFIG_SETTING_VEHICLES :{ORANGE}Fahrzeuge STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationen STR_CONFIG_SETTING_ECONOMY :{ORANGE}Wirtschaft STR_CONFIG_SETTING_AI :{ORANGE}Mitbewerber STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Darstellung STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaktion STR_CONFIG_SETTING_SOUND :{ORANGE}Soundeffekte STR_CONFIG_SETTING_NEWS :{ORANGE}Nachrichten STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signale STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Frachtbehandlung STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computerspieler STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatische Erneuerung STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Wartung STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wegsuche STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Züge STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Städte STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrien STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(empfohlen) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder für Züge: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Pfadsuch-Algorithmus für Züge STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder für Straßenfahrzeuge: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Pfadsuch-Algorithmus für Straßenfahrzeuge STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder für Schiffe: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Pfadsuch-Algorithmus für Schiffe STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisches Umdrehen an Signalen: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Erlaube Zügen, an Signalen umzudrehen, wenn sie dort zu lange gewartet haben STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Wert der Einstellung ändern # Config errors STR_CONFIG_ERROR :{WHITE}Fehler in der Konfigurations-Datei... STR_CONFIG_ERROR_ARRAY :{WHITE}... Fehler im Array '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ungültiger Wert '{STRING}' für '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... angehängte Zeichen an der Einstellung '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoriere NewGRF '{STRING}': identische GRF ID wie '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoriere ungültiges NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nicht gefunden STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ungeignet für statischen Gebrauch STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :System - NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :inkompatibel zu dieser OpenTTD - Version STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :unbekannt STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... Kompressionsgrad '{STRING}' ist ungültig STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... '{STRING}' nicht als Format für Spielstände verfügbar. Nutze stattdessen '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoriere Basisgrafiken '{STRING}': nicht gefunden STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoriere Basissounds '{STRING}': nicht gefunden STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoriere Musikset '{STRING}': nicht gefunden STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Zu wenig Arbeitsspeicher STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Reservieren von {BYTES} des Spritecaches fehlgeschlagen. Der Spritecache wurde auf {BYTES} verkleinert. Dies wird die Performance von OpenTTD verschlechtern. Um den Speicherbedarf zu verringern, kann man versuchen, 32bpp - Grafiken auszuschalten und/oder den Zoom-Level zu begrenzen # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Neues Spiel STR_INTRO_LOAD_GAME :{BLACK}Spiel laden STR_INTRO_PLAY_SCENARIO :{BLACK}Szenario spielen STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Reliefkarte spielen STR_INTRO_SCENARIO_EDITOR :{BLACK}Szenarieneditor STR_INTRO_MULTIPLAYER :{BLACK}Mehrspieler STR_INTRO_GAME_OPTIONS :{BLACK}Spieleinstellungen STR_INTRO_HIGHSCORE :{BLACK}Bestenliste STR_INTRO_ADVANCED_SETTINGS :{BLACK}Erweiterte Einstellungen STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-Einstellungen STR_INTRO_ONLINE_CONTENT :{BLACK}Erweiterungen herunterladen STR_INTRO_SCRIPT_SETTINGS :{BLACK}KI- / Skripteinstellungen STR_INTRO_QUIT :{BLACK}Beenden STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Ein neues Spiel beginnen. Strg+Klick überspringt Karteneinstellungen STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Ein gespeichertes Spiel laden STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Ein neues Spiel mit Reliefkarte als Landschaft starten STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Starte ein neues Spiel basierend auf einem Szenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Eine eigene Karte oder Szenario erstellen STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Mehrspieler-Spiel beginnen STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Landschaft mit gemäßigtem Klima auswählen STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Landschaft mit subarktischem Klima auswählen STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Landschaft mit subtropischem Klima auswählen STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Spielzeugland auswählen STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Spieleinstellungen anzeigen und/oder ändern STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zeige die Bestenliste STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Erweiterte Einstellungen anzeigen und/oder ändern STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF-Einstellungen anzeigen und/oder ändern STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Prüfe, ob neue oder aktualisierte Erweiterungen zum Herunterladen bereitstehen STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zeige KI- und Skripteinstellungen STR_INTRO_TOOLTIP_QUIT :{BLACK}OpenTTD beenden STR_INTRO_TRANSLATION :{BLACK}Dieser Übersetzung fehl{P 0 t en} {NUM} String{P "" s}. Bitte hilf, OpenTTD zu verbessern und melde Dich als Übersetzer an. Siehe readme.txt für weitere Details. # Quit window STR_QUIT_CAPTION :{WHITE}Verlassen STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}OpenTTD wirklich beenden und zu {}{STRING} zurückkehren? STR_QUIT_YES :{BLACK}Ja STR_QUIT_NO :{BLACK}Nein # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Spiel beenden STR_ABANDON_GAME_QUERY :{YELLOW}Das Spiel wirklich beenden? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Soll das Szenario wirklich verlassen werden? # Cheat window STR_CHEATS :{WHITE}Cheats STR_CHEATS_TOOLTIP :{BLACK}Die Kontrollkästchen zeigen an, ob dieser Cheat schonmal verwendet worden ist STR_CHEATS_WARNING :{BLACK}Achtung! Hiermit betrügt man seine Mitbewerber. Man sollte bedenken, dass sie das niemals verzeihen werden STR_CHEAT_MONEY :{LTBLUE}Kontostand um {CURRENCY_LONG} erhöhen STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiele die Firma: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Mächtigeres Abrisswerkzeug (entfernt Industrien und unbewegliche Objekte): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnel dürfen sich kreuzen: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Düsenflugzeuge stürzen auf kleinen Flughäfen nicht häufiger ab: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gemäßigt STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktisch STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropisch STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Spielzeugland STR_CHEAT_CHANGE_DATE :{LTBLUE}Ändere Datum: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ändert das Spieljahr STR_CHEAT_SETUP_PROD :{LTBLUE}Erlaube manuelles Ändern der Produktionsleistungen: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Neues Farbschema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Allgemeines Farbschema anzeigen STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Zugfarbschema anzeigen STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Fahrzeugfarbschema anzeigen STR_LIVERY_SHIP_TOOLTIP :{BLACK}Schiffsfarbschema anzeigen STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Flugzeugfarbschema anzeigen STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Wähle die Hauptfarbe für das gewählte Schema aus. Strg+Klick wählt diese Farbe für jedes Schema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Wähle die Nebenfarbe für das ausgewählte Schema. Strg+Klick wählt diese Farbe für jedes Schema. STR_LIVERY_PANEL_TOOLTIP :{BLACK}Wähle ein Farbschema oder mehrere Farbschemata mittels Strg+Klick aus, um diese zu ändern. Klicke in das Kästchen, um ein Schema zu aktivieren STR_LIVERY_DEFAULT :Standardlackierung STR_LIVERY_STEAM :Dampflok STR_LIVERY_DIESEL :Diesellok STR_LIVERY_ELECTRIC :E-Lok STR_LIVERY_MONORAIL :Einschienenbahn STR_LIVERY_MAGLEV :Magnetschwebebahn STR_LIVERY_DMU :VT STR_LIVERY_EMU :ET STR_LIVERY_PASSENGER_WAGON_STEAM :Passagierwaggon (Dampf) STR_LIVERY_PASSENGER_WAGON_DIESEL :Passagierwaggon (Diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passagierwaggon (elektrisch) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passagierwaggon (Einschienenbahn) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passagierwaggon (Magnetschwebebahn) STR_LIVERY_FREIGHT_WAGON :Güterwaggon STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Lastwagen STR_LIVERY_PASSENGER_SHIP :Passagierschiff STR_LIVERY_FREIGHT_SHIP :Frachter STR_LIVERY_HELICOPTER :Hubschrauber STR_LIVERY_SMALL_PLANE :Kleines Flugzeug STR_LIVERY_LARGE_PLANE :Großraumflugzeug STR_LIVERY_PASSENGER_TRAM :Straßenbahn STR_LIVERY_FREIGHT_TRAM :Frachtstraßenbahn # Face selection window STR_FACE_CAPTION :{WHITE}Gesicht auswählen STR_FACE_CANCEL_TOOLTIP :{BLACK}Gesichtswahl abbrechen STR_FACE_OK_TOOLTIP :{BLACK}Gesichtswahl übernehmen STR_FACE_MALE_BUTTON :{BLACK}Männlich STR_FACE_MALE_TOOLTIP :{BLACK}Wähle männliches Gesicht aus STR_FACE_FEMALE_BUTTON :{BLACK}Weiblich STR_FACE_FEMALE_TOOLTIP :{BLACK}Wähle weibliches Gesicht aus STR_FACE_NEW_FACE_BUTTON :{BLACK}Neues Gesicht STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Wähle zufälliges neues Gesicht STR_FACE_ADVANCED :{BLACK}Detailliert STR_FACE_ADVANCED_TOOLTIP :{BLACK}Umfangreichere Wahl des Gesichts STR_FACE_SIMPLE :{BLACK}Einfach STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einfache Wahl des Gesichts STR_FACE_LOAD :{BLACK}Laden STR_FACE_LOAD_TOOLTIP :{BLACK}Lade bevorzugtes Gesicht STR_FACE_LOAD_DONE :{WHITE}Das bevorzugte Gesicht wurde aus der OpenTTD-Konfigurationsdatei geladen STR_FACE_FACECODE :{BLACK}Gesichtsnummer STR_FACE_FACECODE_TOOLTIP :{BLACK}Nummer des Managergesichts betrachten und/oder setzen STR_FACE_FACECODE_CAPTION :{WHITE}Nummer des Gesichts betrachten / festlegen STR_FACE_FACECODE_SET :{WHITE}Neue Nummer wurde für das Gesicht registriert STR_FACE_FACECODE_ERR :{WHITE}Konnte keine Nummer für das Gesicht setzen, sie muss zwischen 0 und 4.294.967.295 liegen! STR_FACE_SAVE :{BLACK}Speichern STR_FACE_SAVE_TOOLTIP :{BLACK}Speichere bevorzugtes Gesicht STR_FACE_SAVE_DONE :{WHITE}Dieses Gesicht wird als bevorzugtes Gesicht in der OpenTTD-Konfigurationsdatei gespeichert STR_FACE_EUROPEAN :{BLACK}Europäisch STR_FACE_SELECT_EUROPEAN :{BLACK}Auswahl europäischer Gesichter STR_FACE_AFRICAN :{BLACK}Afrikanisch STR_FACE_SELECT_AFRICAN :{BLACK}Auswahl afrikanischer Gesichter STR_FACE_YES :Ja STR_FACE_NO :Nein STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Schnauzbart oder Ohrring erlauben STR_FACE_HAIR :Frisur: STR_FACE_HAIR_TOOLTIP :{BLACK}Frisur ändern STR_FACE_EYEBROWS :Augenbrauen: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Augenbrauen ändern STR_FACE_EYECOLOUR :Augenfarbe: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Augenfarbe ändern STR_FACE_GLASSES :Brille: STR_FACE_GLASSES_TOOLTIP :{BLACK}Brille aufsetzen STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Brille ändern STR_FACE_NOSE :Nase: STR_FACE_NOSE_TOOLTIP :{BLACK}Nase ändern STR_FACE_LIPS :Lippen: STR_FACE_MOUSTACHE :Schnauzbart: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Lippen oder Schnauzbart ändern STR_FACE_CHIN :Kinn: STR_FACE_CHIN_TOOLTIP :{BLACK}Kinn ändern STR_FACE_JACKET :Jackett: STR_FACE_JACKET_TOOLTIP :{BLACK}Jackett ändern STR_FACE_COLLAR :Kragen: STR_FACE_COLLAR_TOOLTIP :{BLACK}Kragen ändern STR_FACE_TIE :Krawatte: STR_FACE_EARRING :Ohrring: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Krawatte oder Ohrring ändern # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Mehrspieler STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Verbindung: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Zwischen Spiel im Internet und LAN wählen STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spielername: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dieser Name dient zur Identifizierung anderen Spielern gegenüber STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Name STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Name des Spiels STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Teilnehmer STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Teilnehmer anwesend/max.{}Firmen anwesend/max. STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Spielfeldgröße STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Spielfeldgröße{}Klick sortiert nach Fläche STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Momentanes Spieljahr STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Jahre STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Jahre seit Spielbeginn STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Sprache, Server-Version, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Ein Spiel der Liste durch Anklicken wählen STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Zuletzt besuchtes Spiel: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Zuletzt besuchten Server auswählen STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}SPIEL-INFO STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Teilnehmer: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Sprache: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landschaft: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Spielfeldgröße: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Aktuelles Datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Passwortgeschützt! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER OFFLINE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER VOLL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSIONSKONFLIKT STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF-KONFLIKT STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Spiel betreten STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Aktualisieren STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Aktualisiert die Serverinformationen STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Server suchen STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Netzwerk nach einem Server durchsuchen STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Server hinzufügen STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Fügt einen Server zu der Liste von Servern hinzu, die immer nach laufenden Spielen kontrolliert werden STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Server starten STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Einen eigenen Server starten STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Bitte eigenen Namen eingeben STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}IP-Adresse des Servers eingeben # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Neues Mehrspieler-Spiel beginnen STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spielname: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Der Name des Spieles wird anderen Spielern im Mehrspielerdialog angezeigt STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Passwort setzen STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Ein Passwort verhindert, dass unbefugte Leute beitreten STR_NETWORK_START_SERVER_LAN_INTERNET :LAN/Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (ankündigen) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} Teilnehmer STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max. Teilnehmeranzahl: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Auswahl der maximal erlaubten Anzahl von Teilnehmern. Nicht alle Slots müssen belegt werden STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} Firm{P a en} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max. Firmenanzahl: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrenzt den Server auf eine bestimmte Anzahl an Firmen STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} Zuschauer STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max. Zuschaueranzahl: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begrenzt den Server auf eine gewisse Anzahl an Zuschauern STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Gesprochene Sprache: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Damit andere Spieler wissen, welche Sprache auf diesem Server gesprochen wird STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Namen für das Netzwerkspiel eingeben # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Egal STR_NETWORK_LANG_ENGLISH :Englisch STR_NETWORK_LANG_GERMAN :Deutsch STR_NETWORK_LANG_FRENCH :Französisch STR_NETWORK_LANG_BRAZILIAN :Brasilianisch STR_NETWORK_LANG_BULGARIAN :Bulgarisch STR_NETWORK_LANG_CHINESE :Chinesisch STR_NETWORK_LANG_CZECH :Tschechisch STR_NETWORK_LANG_DANISH :Dänisch STR_NETWORK_LANG_DUTCH :Niederländisch STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finnisch STR_NETWORK_LANG_HUNGARIAN :Ungarisch STR_NETWORK_LANG_ICELANDIC :Isländisch STR_NETWORK_LANG_ITALIAN :Italienisch STR_NETWORK_LANG_JAPANESE :Japanisch STR_NETWORK_LANG_KOREAN :Koreanisch STR_NETWORK_LANG_LITHUANIAN :Litauisch STR_NETWORK_LANG_NORWEGIAN :Norwegisch STR_NETWORK_LANG_POLISH :Polnisch STR_NETWORK_LANG_PORTUGUESE :Portugiesisch STR_NETWORK_LANG_ROMANIAN :Rumänisch STR_NETWORK_LANG_RUSSIAN :Russisch STR_NETWORK_LANG_SLOVAK :Slowakisch STR_NETWORK_LANG_SLOVENIAN :Slowenisch STR_NETWORK_LANG_SPANISH :Spanisch STR_NETWORK_LANG_SWEDISH :Schwedisch STR_NETWORK_LANG_TURKISH :Türkisch STR_NETWORK_LANG_UKRAINIAN :Ukrainisch STR_NETWORK_LANG_AFRIKAANS :Afrikaans STR_NETWORK_LANG_CROATIAN :Kroatisch STR_NETWORK_LANG_CATALAN :Katalanisch STR_NETWORK_LANG_ESTONIAN :Estnisch STR_NETWORK_LANG_GALICIAN :Galizisch STR_NETWORK_LANG_GREEK :Griechisch STR_NETWORK_LANG_LATVIAN :Lettisch ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Mehrspielerlobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Spieleintritt vorbereiten: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Eine Liste aller Firmen, die sich im Spiel befinden. Man kann einer Firma beitreten oder eine eigene Firma gründen, sofern ein Platz frei ist STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}Firmenprofil STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Firmenname: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Gründung: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Firmenwert: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Kontostand: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Einkommen (letzes Jahr): {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Leistung: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Fahrzeuge: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stationen: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spieler: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Neue Firma STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Eine neue Firma gründen STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Beim Spiel zusehen STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Als Zuschauer dem Spiel zusehen STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Firma beitreten STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Beim Verwalten der ausgewählten Firma helfen # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Verbinden... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Verbinden... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorisieren... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Warten... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Herunterladen des Spielfeldes... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Spieldaten verarbeiten... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrieren... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Spielinformationen holen... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Firmeninformationen holen... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} Teilnehmer vor Ihnen STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} bis jetzt heruntergeladen STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES}/{BYTES} bisher heruntergeladen STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Trennen STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ist geschützt. Passwort eingeben: STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ist geschützt. Passwort eingeben: # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Teilnehmerliste STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Zuschauen STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Neue Firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Hinauswerfen STR_NETWORK_CLIENTLIST_BAN :Sperren STR_NETWORK_CLIENTLIST_GIVE_MONEY :Geld schenken STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mit allen sprechen STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mit Firma sprechen STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private Nachricht STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Teilnehmer STR_NETWORK_SPECTATORS :Zuschauer STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wieviel Geld soll übergeben werden? # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Eingegebenes Passwort nicht speichern STR_COMPANY_PASSWORD_OK :{BLACK}Der Firma ein Passwort zuweisen STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firmenpasswort STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard-Firmenpasswort STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Benutze dieses Firmenpasswort als Standard für neue Firmen # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Beitreten STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Beitreten und mit der ausgewählten Firma spielen STR_COMPANY_VIEW_PASSWORD :{BLACK}Passwort STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Die Firma durch ein Passwort schützen, sodass nur ausgewählte Spieler beitreten können STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Firmenpasswort setzen # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Abschicken STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privat] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Alle] : STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Team] an {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privat] an {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Alle] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Chattext eingeben # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Keine Netzwerkschnittstellen gefunden oder ohne ENABLE_NETWORK kompiliert STR_NETWORK_ERROR_NOSERVER :{WHITE}Keine Netzwerkspiele gefunden STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Der Server antwortet nicht STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Verbindung konnte nicht hergestellt werden, da die NewGRF-Versionen nicht übereinstimmen STR_NETWORK_ERROR_DESYNC :{WHITE}Synchronisation des Netzwerkspiels fehlgeschlagen STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Verbindung zum Netzwerkspiel verloren STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Spielstand konnte nicht vom Server geladen werden STR_NETWORK_ERROR_SERVER_START :{WHITE}Server konnte nicht gestartet werden STR_NETWORK_ERROR_CLIENT_START :{WHITE}Verbindung konnte nicht hergestellt werden STR_NETWORK_ERROR_TIMEOUT :{WHITE}Verbindung #{NUM} hat das Zeitlimit überschritten STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Protokollfehler: Die Verbindung musste getrennt werden STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Diese Version des Spiels entspricht nicht der des Servers STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Falsches Passwort STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Der Server ist voll STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Sie sind auf diesem Server gesperrt STR_NETWORK_ERROR_KICKED :{WHITE}Sie wurden vom Server hinausgeworfen STR_NETWORK_ERROR_CHEATER :{WHITE}Mogeln ist auf diesem Server nicht erlaubt STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Es wurden zu viele Kommandos an den Server gesendet STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Zeit für die Eingabe des Passwortes wurde überschritten STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Dieser Computer ist sehr langsam, sodass er nicht mit dem Server mithalten kann STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Das Herunterladen der Karte dauerte zu lange STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Der Beitritt zum Server dauerte zu lange ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :Allgemeiner Fehler STR_NETWORK_ERROR_CLIENT_DESYNC :Synchronisationsfehler STR_NETWORK_ERROR_CLIENT_SAVEGAME :Spielfeld konnte nicht geladen werden STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :Verbindung verloren STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :Protokollfehler STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF-Versionen stimmen nicht überein STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nicht autorisiert STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :Ungültiges oder unerwartetes Datenpaket empfangen STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :Falsche Version STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :Name wird bereits verwendet STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :Falsches Spielpasswort STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :Falsche Firmen-ID in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :vom Server hinausgeworfen STR_NETWORK_ERROR_CLIENT_CHEATER :hat versucht zu mogeln STR_NETWORK_ERROR_CLIENT_SERVER_FULL :Server voll STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendete zu viele Kommandos STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :Zeitüberschreitung beim Senden des Passworts STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :Allgemeine Zeitüberschreitung STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :das Herunterladen der Karte dauerte zu lange STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :Verarbeitung der Karte dauerte zu lange ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Möglicher Verbindungsabbruch STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Die letzte{P 0 "" n} {NUM} Sekunde{P "" n} wurden keine Daten vom Server empfangen # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spiel angehalten ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spiel weiterhin angehalten ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spiel weiterhin angehalten ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spiel weiterhin angehalten ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spiel immer noch angehalten ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spiel fortgesetzt ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Spieleranzahl STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Teilnehmer meldet sich an STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :Skript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :geht STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ist dem Spiel beigetreten STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ist dem Spiel beigetreten (Teilnehmer #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} ist der Firma #{2:NUM} beigetreten STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ist den Zuschauern beigetreten STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} hat eine neue Firma gegründet (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} hat das Spiel verlassen ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hat seinen/ihren Namen in {STRING} geändert STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gab der eigenen Firma {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Die eigene Firma übergab {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Der Server hat das Spiel beendet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Der Server startet neu...{}Bitte warten... # Content downloading window STR_CONTENT_TITLE :{WHITE}Herunterladen von Erweiterungen STR_CONTENT_TYPE_CAPTION :{BLACK}Art STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Art der Erweiterung STR_CONTENT_NAME_CAPTION :{BLACK}Name STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Name der Erweiterung STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Auf eine Zeile klicken, um Details zu sehen{}Kontrollkästchen anklicken, um zum Herunterladen auszuwählen STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Alles wählen STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Alle Erweiterungen zum Herunterladen auswählen STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Upgrades auswählen STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Wähle bei allen vorhandenen Erweiterungen, von denen eine neuere Version verfügbar ist, diese zum Herunterladen aus STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Alles abwählen STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Keine Erweiterung zum Herunterladen auswählen STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Externe Webseiten durchsuchen STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Inhalte, die nicht auf OpenTTD's Server für Online-Erweiterungen vorhanden sind, auf Webseiten suchen, die nicht mit OpenTTD in Verbindung stehen. STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD wird hiermit verlassen! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Die Bedingungen für den Download von Erweiterungen von fremden Webseiten variieren.{}Bei Problemen mit der Installation der Erweiterung in OpenTTD bitte auf der externen Webseite nach Anleitungen suchen.{}Fortfahren? STR_CONTENT_FILTER_TITLE :{BLACK}Filter für Stichworte oder Namen: STR_CONTENT_OPEN_URL :{BLACK}Webseite anzeigen STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Webseite für diesen Eintrag anzeigen STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Herunterladen STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Beginne die ausgewählten Erweiterung(en) herunterzuladen STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Gesamtgröße der ausgewählten Erweiterungen: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}Beschreibung der Erweiterung STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Diese Erweiterung ist nicht zum Herunterladen ausgewählt STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Diese Erweiterung ist zum Herunterladen ausgewählt STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Diese Erweiterung wird für eine andere Erweiterung benötigt STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Diese Erweiterung ist schon vorhanden STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Diese Erweiterung stammt aus einer unbekannten Quelle und kann von OpenTTD nicht heruntergeladen werden STR_CONTENT_DETAIL_UPDATE :{SILVER}Das ist ein Ersatz für {G einen eine ein ""} existierend{G en e es e} {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Name: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Version: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beschreibung: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Typ: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Gesamtgröße der Erweiterung: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Ausgewählt wegen: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Abhängigkeiten: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Stichworte: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD wurde ohne "zlib" erstellt... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... Herunterladen von Erweiterungen nicht möglich! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :{G=p}Basisgrafiken STR_CONTENT_TYPE_NEWGRF :{G=n}NewGRF STR_CONTENT_TYPE_AI :{G=w}KI STR_CONTENT_TYPE_AI_LIBRARY :{G=w}KI-Bibliothek STR_CONTENT_TYPE_SCENARIO :{G=n}Szenario STR_CONTENT_TYPE_HEIGHTMAP :{G=w}Reliefkarte STR_CONTENT_TYPE_BASE_SOUNDS :Basissound STR_CONTENT_TYPE_BASE_MUSIC :Musikset STR_CONTENT_TYPE_GAME_SCRIPT :Skript STR_CONTENT_TYPE_GS_LIBRARY :Skript - Bibliothek # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Lade Erweiterungen herunter... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Fordere Dateien an... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Lade momentan herunter: {STRING} ({NUM} von {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Alle Dateien heruntergeladen STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} von {BYTES} heruntergeladen ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Kann keine Verbindung mit dem Server für Online-Erweiterungen herstellen... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Herunterladen fehlgeschlagen... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... Verbindung verloren STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... kann Datei nicht schreiben STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Kann heruntergeladene Datei nicht entpacken STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Fehlende Grafiken STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD benötigt Basisgrafiken, um zu funktionieren. Es konnten aber keine gefunden werden. Darf OpenTTD diese herunterladen und installieren? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, Grafiken herunterladen STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nein, OpenTTD beenden # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Transparenzeinstellungen STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Transparenz für Schilder einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Transparenz für Bäume einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Transparenz für Häuser einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Transparenz für Industrien einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Transparenz für Bauten wie Stationen, Depots und Wegpunkte einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Transparenz für Brücken einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Transparenz für Bauten wie Leuchttürme und Sendemasten einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Transparenz für Oberleitungen einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparenz für Ladestandsanzeige einstellen. Strg+Klick, um Umschalten zu verhindern bzw. wieder zu erlauben STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Objekte unsichtbar statt transparent machen # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Einzugsgebiet anzeigen STR_STATION_BUILD_COVERAGE_OFF :{BLACK}aus STR_STATION_BUILD_COVERAGE_ON :{BLACK}an STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Einzugsgebiet nicht anzeigen STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Einzugsgebiet anzeigen STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Nimmt an: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Liefert: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Verbinde mit Station STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Errichte eine getrennte Station STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbinde mit Wegpunkt STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Errichte einen getrennten Wegpunkt # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Eisenbahnbau STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Bau elektrifizierter Strecken STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Einschienenbahnbau STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magnetschwebebahnbau STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Gleise legen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Gleise legen mit automatischer Wahl der Ausrichtung. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Zugdepot bauen (zum Kauf und zur Wartung von Zügen). Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Wegpunkt (auf vorhandenem Gleis) bauen. Strg+Klick, um Wegpunkte zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bahnhof bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Signale errichten. Strg+Klick wechselt zwischen Formsignal-/Signaltypen{}Klicken und Ziehen, um mehrere Signale entlang einer geraden Strecke zu bauen. Strg halten, um bis zur nächsten Kreuzung zu bauen{}Strg+Klick auf die Schaltfläche zeigt das Signal-Menü. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Eisenbahnbrücke bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Eisenbahntunnel bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Umschalter für Bau/Abriss mit aktuellem Bauwerkzeug. Strg+Klick um die Gleise von Wegpunkten und Bahnhöfen ebenfalls zu entfernen STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Gleistyp in den ausgewählten umwandeln. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_RAIL_NAME_RAILROAD :Schienen STR_RAIL_NAME_ELRAIL :Elektrifizierte Schienen STR_RAIL_NAME_MONORAIL :Einschienenbahn STR_RAIL_NAME_MAGLEV :Magnetschwebebahn # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Ausrichtung Zugdepot STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung des Zugdepots auswählen # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Wegpunkt STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wegpunktbauform auswählen # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Bahnhof bauen STR_STATION_BUILD_ORIENTATION :{BLACK}Ausrichtung STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung des Bahnhofs auswählen STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Anzahl der Gleise STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Anzahl der Bahnsteige wählen STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Bahnsteiglänge STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Bahnsteiglänge wählen STR_STATION_BUILD_DRAG_DROP :{BLACK}Klicken und Ziehen STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Stationsgröße durch Klicken und Ziehen frei wählbar STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eine Stationsart zum Anzeigen auswählen STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Die Stationsart auswählen, die gebaut werden soll STR_STATION_CLASS_DFLT :Standardstation STR_STATION_CLASS_WAYP :Wegpunkte # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalauswahl STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blocksignal (Formsignal){}Dies ist der einfachste Signaltyp. Bei Verwendung dieses Signaltyps darf sich immer nur ein Zug im Signalabschnitt aufhalten STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Einfahrsignal (Formsignal){}Zeigt grün, wenn im nächsten Block mindestens ein Ausfahrsignal grün zeigt. Andernfalls zeigt es rot STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Ausfahrsignal (Formsignal){}Verhält sich wie ein Blocksignal, wird jedoch benötigt, um den Einfahr- oder Kombinationssignalen des Blockes "frei" zu melden STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinationssignal (Formsignal){}Das Kombinationssignal ist gleichzeitig Aus- und Einfahrsignal. Somit werden umfangreiche Signalverschaltungen möglich STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Pfadsignal (Formsignal){}Erlaubt mehreren Zügen gleichzeitig, einen Signalabschnitt zu befahren, sofern sie separate Gleisabschnitte belegen können. Pfadsignale können von hinten durchfahren werden STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einseitiges Pfadsignal (Formsignal):{}Erlaubt mehreren Zügen, einen Signalabschnitt zu befahren, sofern sie separate Gleisabschnitte belegen können. Einseitige Pfadsignale können nicht von hinten durchfahren werden STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blocksignal (Lichtsignal){}Dies ist der einfachste Signaltyp. Bei Verwendung dieses Signaltyps darf sich immer nur ein Zug im Signalabschnitt aufhalten STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Einfahrsignal (Lichtsignal){}Zeigt grün, wenn im folgenden Block mindestens ein Ausfahrsignal grün zeigt. Andernfalls zeigt es rot STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Ausfahrsignal (Lichtsignal){}Verhält sich wie ein Blocksignal, gibt jedoch das Signal an Einfahr- und Kombinationssignale im vorherliegenden Block weiter STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinationssignal (Lichtsignal){}Das Kombinationssignal ist gleichzeitig Aus- und Einfahrsignal. Somit werden umfangreiche Signalverschaltungen möglich STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Pfadsignal (Lichtsignal){}Erlaubt mehreren Zügen gleichzeitig, einen Signalbereich zu befahren, sofern sie separate Gleisabschnitte belegen können. Normale Pfadsignale können von hinten durchfahren werden STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einseitiges Pfadsignal (Lichtsignal):{}Erlaubt mehreren Zügen, einen Signalbereich zu befahren, sofern sie separate Gleisabschnitte belegen können. Einseitige Pfadsignale können nicht von hinten durchfahren werden STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalumbau{}Wenn ausgewählt, werden bestehende Signale durch Anklicken zum ausgewählten Signaltyp umgebaut. Strg+Klick ändert die bestehende Bauform. Shift+Klick zeigt Kostenvoranschlag STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Signalabstand beim automatischen Bau durch Ziehen STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Signalabstand verringern STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Signalabstand erhöhen # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Eisenbahnbrücke auswählen STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Straßenbrücke wählen STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brückenauswahl - Auf die gewünschte Brücke klicken, um sie zu bauen STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Stahlhängebrücke STR_BRIDGE_NAME_GIRDER_STEEL :Stahlträgerbrücke STR_BRIDGE_NAME_CANTILEVER_STEEL :Auslegerbrücke (Stahl) STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Betonhängebrücke STR_BRIDGE_NAME_WOODEN :Holzbrücke STR_BRIDGE_NAME_CONCRETE :Betonbrücke STR_BRIDGE_NAME_TUBULAR_STEEL :Stahlrundbrücke STR_BRIDGE_TUBULAR_SILICON :Siliziumrundbrücke # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Straßenbau STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Straßenbahnbau STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Straße bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Straßenbahngleis bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Straße mit automatischer Wahl der Ausrichtung bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Straßenbahngleis mit automatischer Wahl der Ausrichtung bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Fahrzeugdepot bauen (zum Kauf und zur Wartung von Fahrzeugen benötigt). Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Straßenbahndepot bauen (zum Kauf und zur Wartung von Straßenbahnen benötigt). Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bushaltestelle bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Straßenbahnhaltestelle bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Lkw-Ladeplatz bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Güterstraßenbahnhaltestelle bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Einbahnstraßenbau ein/aus STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Straßenbrücke bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Straßenbahnbrücke bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Straßentunnel bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Straßenbahntunnel bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Zwischen Bau und Abriss der Straße umschalten STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Zwischen Bau und Abriss von Straßenbahngleisen umschalten # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Ausrichtung Depot STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Ausrichtung des Fahrzeugdepots wählen STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Ausrichtung Depot STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Ausrichtung des Straßenbahndepots auswählen # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Ausrichtung Bushaltestelle STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung der Bushaltestelle auswählen STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ausrichtung Lkw-Ladeplatz STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung des Lkw-Ladeplatzes auswählen STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Ausrichtung der Straßenbahnhaltestelle STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung für die Straßenbahnhaltestelle wählen STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Ausrichtung der Güterstraßenbahnhaltestelle STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung der Güterstraßenbahnhaltestelle auswählen # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Wasserstraßenbau STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Wasserstraßen STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Kanal bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Schleuse bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Werft bauen (für den Kauf und die Wartung von Schiffen benötigt). Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Hafen bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Positionsboje, wird als Wegpunkt benötigt. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Aquädukt bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Wasser erzeugen.{}Baut einen Kanal. Auf Meereshöhe wird bei gedrückter Strg-Taste ein Wasserfeld erzeugt, welches umliegendes Land flutet STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Flüsse platzieren # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Ausrichtung der Werft STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Ausrichtung der Werft auswählen # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Hafen # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flughäfen STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Flughafen bauen. Strg+Klick, um Stationen zu verbinden. Shift schaltet zwischen Bauen und Kostenvoranschlag um # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Flughafen bauen STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Wähle die Größe/den Typ des Flughafens STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Flughafentyp STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Layout {NUM} STR_AIRPORT_SMALL :Klein STR_AIRPORT_CITY :Stadt STR_AIRPORT_METRO :Großraum STR_AIRPORT_INTERNATIONAL :International STR_AIRPORT_COMMUTER :Nahverkehr STR_AIRPORT_INTERCONTINENTAL :Interkontinental STR_AIRPORT_HELIPORT :Heliport STR_AIRPORT_HELIDEPOT :Heliport mit Hangar STR_AIRPORT_HELISTATION :Flughafen mit Heliport STR_AIRPORT_CLASS_SMALL :Kleine Flughäfen STR_AIRPORT_CLASS_LARGE :Große Flughäfen STR_AIRPORT_CLASS_HUB :Luftfahrt-Drehkreuze STR_AIRPORT_CLASS_HELIPORTS :Flughäfen für Hubschrauber STR_STATION_BUILD_NOISE :{BLACK}Lärmbelastung: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landschaftsbau STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Land absenken. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Land anheben. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Höhe ausgleichen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Land für künftige Nutzung kaufen. Shift schaltet zwischen Bauen und Kostenvoranschlag um # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektauswahl STR_OBJECT_BUILD_TOOLTIP :{BLACK}Objektauswahl - Auf das gewünschte Objekt klicken, um es zu bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Objektklasse auswählen STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Vorschau des Objekts STR_OBJECT_BUILD_SIZE :{BLACK}Größe: {GOLD}{NUM} x {NUM} Felder STR_OBJECT_CLASS_LTHS :Leuchttürme STR_OBJECT_CLASS_TRNS :Sendemasten # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Bäume STR_PLANT_TREE_TOOLTIP :{BLACK}Wähle die zu pflanzende Baumart. Wenn auf dem Feld schon ein Baum steht, wird eine zufällige Baumart gepflanzt STR_TREES_RANDOM_TYPE :{BLACK}Zufällige Baumart STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Zufällige Baumart pflanzen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Zufällige Bäume STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Bäume zufällig über die Landschaft verteilen # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land erstellen STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Felsige Gebiete in der Landschaft platzieren STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Wüstengebiet platzieren{}Zum Entfernen Strg-Taste drücken STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Landfläche zum Anheben/Absenken vergrößern STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Landfläche zum Anheben/Absenken verkleinern STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Erzeuge zufällige Landfläche STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Neues Szenario erzeugen STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Landfläche zurücksetzen STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Das gesamte Firmeneigentum vom Spielfeld entfernen STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Landfläche zurücksetzen STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Soll wirklich das gesamte Firmeneigentum entfernt werden? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Stadt gründen STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Neue Stadt STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Neue Stadt gründen. Shift+Klick zeigt einen Kostenvoranschlag STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Zufällige Stadt STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stadt an zufälligem Ort gründen STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Viele zufällige Städte STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Das Spielfeld mit zufällig platzierten Städten füllen STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Stadtname STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Stadtnamen eingeben STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klicken, um einen Stadtnamen einzugeben STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Zufälliger Name STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Zufälligen neuen Namen erzeugen STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Stadtgröße: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Klein STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mittel STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Groß STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Zufällig STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Stadtgröße festlegen STR_FOUND_TOWN_CITY :{BLACK}Großstadt STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Großstädte wachsen schneller als normale Städte und sind (abhängig von den Einstellungen) bereits bei der Gründung größer STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Städtischer Straßenbauplan: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Straßenbauplan für diese Stadt auswählen STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bessere Straßen STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 Muster STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 Muster STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Zufall # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Neue Industrie finanzieren STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Gewünschte Industrie aus der Liste auswählen STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Viele zufällige Industrien STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Das Spielfeld mit zufällig platzierten Industrien füllen STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kosten: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospektieren STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bauen STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finanzieren # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Produktionskette für {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Produktionskette für {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Zulieferer STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Abnehmer STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Häuser STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Auf Industrie klicken, um ihre Lieferanten und Abnehmer anzuzeigen STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Auf Frachttyp klicken, um dessen Anbieter und Abnehmer anzuzeigen STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Produktionskette STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Zeige Industrien, die Fracht liefern oder akzeptieren STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Verweis auf Übersichtskarte STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Wähle auch die angezeigte Industrie auf der Übersichtskarte STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Fracht wählen STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Fracht wählen, die angezeigt werden soll STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Industrie wählen STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Industrie wählen, die angezeigt werden soll # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Gebietsinformation STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Räumungskosten: {LTBLUE}Keine STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Räumungskosten: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Einnahmen beim Abriss: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Niemand STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigentümer: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Straßenbesitzer: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Straßenbahnbesitzer: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Gleiseigentümer: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gehört zur Gemeinde: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Keine STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaten: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Errichtet am: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstyp: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Flughafen-Kategorie: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Name des Flughafen: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Name des Flughafenfeldes: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Angenommene Frachtarten: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Erlaubte Höchstgeschwindigkeit: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Felsen STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Unebenes Land STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Kahles Land STR_LAI_CLEAR_DESCRIPTION_GRASS :Gras STR_LAI_CLEAR_DESCRIPTION_FIELDS :Ackerland STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Schneebedecktes Land STR_LAI_CLEAR_DESCRIPTION_DESERT :Wüste STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING}: Gleise STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING}: Gleise mit Blocksignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING}: Gleise mit Vorsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING}: Gleise mit Ausfahrtsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING}: Gleise mit Kombinationssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING}: Gleise mit Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING}: Gleise mit einseitigem Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING}: Gleise mit Block- und Vorsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING}: Gleise mit Block- und Ausfahrtsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING}: Gleise mit Block- und Kombinationssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING}: Gleise mit Block- und Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING}: Gleise mit Blocksignal und einseitigem Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING}: Gleise mit Vor- und Ausfahrtsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING}: Gleise mit Vor- und Kombinationssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING}: Gleise mit Vor- und Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING}: Gleise mit Vorsignal und einseitigem Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING}: Gleise mit Ausfahrts- und Kombinationssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING}: Gleise mit Ausfahrts- und Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING}: Gleise mit Ausfahrtssignal und einseitigem Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING}: Gleise mit Kombinations- und Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING}: Gleise mit Kombinationssignal und einseitigem Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING}: Gleise mit Pfadsignal und einseitigem Pfadsignal STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING}: Zugdepot STR_LAI_ROAD_DESCRIPTION_ROAD :Straße STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Straße mit Laternen STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Straße mit Bäumen STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Fahrzeugdepot STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Bahnübergang STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Straßenbahn # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (im Bau) STR_LAI_TREE_NAME_TREES :Bäume STR_LAI_TREE_NAME_RAINFOREST :Regenwald STR_LAI_TREE_NAME_CACTUS_PLANTS :Kakteen STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Bahnhof STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Flugzeughangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Flughafen STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Lkw-Ladeplatz STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bushaltestelle STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Hafen STR_LAI_STATION_DESCRIPTION_BUOY :Boje STR_LAI_STATION_DESCRIPTION_WAYPOINT :Wegpunkt STR_LAI_WATER_DESCRIPTION_WATER :Wasser STR_LAI_WATER_DESCRIPTION_CANAL :Kanal STR_LAI_WATER_DESCRIPTION_LOCK :Schleuse STR_LAI_WATER_DESCRIPTION_RIVER :Fluss STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Küste oder Flussufer STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Werft # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Eisenbahntunnel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Straßentunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stahlhängebrücke STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stahlträgerbrücke STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Auslegerbrücke (Stahl) STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Stahlbetonbrücke STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Holzbrücke STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betonbrücke STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Stahlrundbrücke STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Stahlhängebrücke STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Stahlträgerbrücke STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Auslegerbrücke (Stahl) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Stahlbetonbrücke STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Holzbrücke STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonbrücke STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Stahlrundbrücke STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aquädukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Sendemast STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Leuchtturm STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Firmensitz STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firmeneigenes Gelände # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Transport Tycoon-Urheberrecht {COPYRIGHT} 1995 Chris Sawyer, alle Rechte vorbehalten STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-Team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spiel laden STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Szenario speichern STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Szenario laden STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Reliefkarte laden STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Reliefkarte speichern STR_SAVELOAD_HOME_BUTTON :{BLACK}Hier klicken, um zum Standardverzeichnis für Spielstände zu gehen STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} frei STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liste der Laufwerke, Verzeichnisse und gespeicherten Spiele STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Ausgewählter Spielstandsname STR_SAVELOAD_DELETE_BUTTON :{BLACK}Löschen STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Lösche gewählten Spielstand STR_SAVELOAD_SAVE_BUTTON :{BLACK}Speichern STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Speichere das Spiel unter dem gewählten Namen STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laden STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ausgewählten Spielstand laden STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spielstand-Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Keine Informationen verfügbar STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Namen für den Spielstand eingeben # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Welterstellung STR_MAPGEN_MAPSIZE :{BLACK}Spielfeldgröße: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Die Größe des Spielfelds auswählen. Die tatsächlich verfügbare Anzahl Felder wird geringfügig kleiner sein STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Städteanzahl: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industriedichte: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Schneegrenze: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Schneegrenze um eine Stufe erhöhen STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Schneegrenze um eine Stufe senken STR_MAPGEN_RANDOM_SEED :{BLACK}Zufallsstartwert: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Zufallsstartwert eingeben STR_MAPGEN_RANDOM :{BLACK}Zufällig STR_MAPGEN_RANDOM_HELP :{BLACK}Ändere den Zufallsstartwert für die Landschaftsgenerierung STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Baumalgorithmus: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Landschaftstyp: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Gewässermenge: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Flüsse: STR_MAPGEN_SMOOTHNESS :{BLACK}Gleichmäßigkeit: STR_MAPGEN_VARIETY :{BLACK}Größe der Geländeformen: STR_MAPGEN_GENERATE :{WHITE}Erzeugen # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Spielfeldränder: STR_MAPGEN_NORTHWEST :{BLACK}Nordwesten STR_MAPGEN_NORTHEAST :{BLACK}Nordosten STR_MAPGEN_SOUTHEAST :{BLACK}Südosten STR_MAPGEN_SOUTHWEST :{BLACK}Südwesten STR_MAPGEN_BORDER_FREEFORM :{BLACK}Beliebig STR_MAPGEN_BORDER_WATER :{BLACK}Wasser STR_MAPGEN_BORDER_RANDOM :{BLACK}Zufällig STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Zufällig STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuell STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Reliefkarte drehen: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Reliefkartenname: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Größe: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Zufallsstartwert eingeben STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Höhe der Schneegrenze ändern STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Startjahr ändern # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Szenariotyp STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flache Landschaft STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Flache Landschaft erzeugen STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Zufällige Landschaft STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Höhe des Flachlands: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Flachland um eine Stufe senken STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Flachland um eine Stufe erhöhen STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Flachlandhöhe ändern # Map generation progress STR_GENERATION_WORLD :{WHITE}Spielfeld wird generiert... STR_GENERATION_ABORT :{BLACK}Abbrechen STR_GENERATION_ABORT_CAPTION :{WHITE}Spielfeldgenerierung abbrechen STR_GENERATION_ABORT_MESSAGE :{YELLOW}Soll die Spielfeldgenerierung wirklich abgebrochen werden? STR_GENERATION_PROGRESS :{WHITE}{NUM}% abgeschlossen STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Spielfeld wird erzeugt STR_GENERATION_RIVER_GENERATION :{BLACK}Flussgenerierung STR_GENERATION_TREE_GENERATION :{BLACK}Bäume werden erzeugt STR_GENERATION_OBJECT_GENERATION :{BLACK}Unbewegliche Objekte werden erzeugt STR_GENERATION_CLEARING_TILES :{BLACK}Raue, felsige Landschaft wird erzeugt STR_GENERATION_SETTINGUP_GAME :{BLACK}Spiel wird vorbereitet STR_GENERATION_PREPARING_TILELOOP :{BLACK}Spielfeld wird belebt STR_GENERATION_PREPARING_SCRIPT :{BLACK}Führe Skript aus STR_GENERATION_PREPARING_GAME :{BLACK}Spiel wird vorbereitet # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF-Einstellungen STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detailierte NewGRF - Informationen STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktivierte NewGRF - Dateien STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inaktive NewGRF - Dateien STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Wähle Voreinstellung STR_NEWGRF_FILTER_TITLE :{ORANGE}Filter: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Ausgewählte Voreinstellung laden STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Voreinstellung speichern STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Aktuelle Liste als Voreinstellung speichern STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Name der Voreinstellung STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Voreinstellung löschen STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Ausgewählte Voreinstellung löschen STR_NEWGRF_SETTINGS_ADD :{BLACK}Hinzufügen STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Ausgewählte NewGRF-Datei zur Konfiguration hinzufügen STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Dateiliste aktualisieren STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Liste der verfügbaren NewGRF-Dateien aktualisieren STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Entfernen STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Die ausgewählte NewGRF-Datei von der Liste entfernen STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Nach oben STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Die ausgewählte NewGRF-Datei in der Liste nach oben verschieben STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Nach unten STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Die ausgewählte NewGRF-Datei in der Liste nach unten verschieben STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Eine Liste der installierten NewGRF-Dateien STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Parameter setzen STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Zeige Parameter STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Farbpalette ändern STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Farbpalette des ausgewählten NewGRF ändern.{}Nutze dieses, wenn die Grafiken des NewGRF im Spiel pink dargestellt werden STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Übernehmen STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Fehlende Erweiterungen online suchen STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Versuchen, fehlende Erweiterungen online zu finden STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Dateiname: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}NewGRF-ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Version: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatible Version: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5-Summe: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Farbpalette: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameter: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Keine Informationen verfügbar STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Zugehörige Datei nicht gefunden STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktiviert STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nicht mit dieser Version von OpenTTD kompatibel # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF Parameter ändern STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Schließen STR_NEWGRF_PARAMETERS_RESET :{BLACK}Zurücksetzen STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Alle Parameter auf ihre Vorgabewerte zurücksetzen STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Anzahl Parameter: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspiziere - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}übergeordnetes Objekt STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspiziere das Objekt im übergeordneten Geltungsbereich STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} bei {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Gleisart STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-Variable 60+x Parameter (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ausrichtung von Sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nächstes Sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Gehe zum nächsten normalen Sprite und überspringe alle Pseudo-, Recolour- und Schriftsprites (springt ggf. vom ersten bis zum letzten Sprite) STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gehe zu Sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gehe zum ausgewählten Sprite. Wenn dieses kein normales Sprite ist, gehe zum nächsten normalen Sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorheriges Sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gehe zum vorherigen normalen Sprite und überspringe alle Pseudo-, Recolour- und Schriftsprites (springt ggf. vom letzten bis zum ersten Sprite) STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Darstellung des aktuellen Sprites. Die Ausrichtung wird beim Zeichnen des Sprites ignoriert STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Bewege die Sprites und ändere dadurch die X- und Y-Offsets STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprite auswählen STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wähle ein Sprite vom Bildschirm aus STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Gehe zu Sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warnung: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Fehler: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Schwerer Fehler: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ein schwerer NewGRF-Fehler ist aufgetreten: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} funktioniert nicht im Zusammenhang mit der von OpenTTD ermittelten TTDPatch-Version STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ist für die {STRING}-Version von TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ist für die Nutzung mit {STRING} vorgesehen STR_NEWGRF_ERROR_INVALID_PARAMETER :Falscher Parameter für {1:STRING}: Parameter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} muss vor {STRING} geladen werden STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} muss nach {STRING} geladen werden STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} Benötigt OpenTTD-Version {STRING} oder höher STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :der NewGRF-Datei, die es übersetzen soll, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Zu viele NewGRFs geladen STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Das Laden von {1:STRING} als statisches NewGRF mit {STRING} könnte Synchronisationsfehler hervorrufen STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Unerwartetes Sprite (Sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unbekannte Action 0 - Property {4:HEX} (Sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Zugriff auf eine ungültige ID (Sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enthält fehlerhafte Grafiken. Diese werden als Fragezeichen (?) dargestellt STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Enthält mehrere Action 8 - Einträge (Sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lesezugriff über das Ende des Pseudosprites hinaus (Sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Den momentan verwendeten Basisgrafiken fehlen Sprites.{}Durch ein Update der Basisgrafiken kann dieser Fehler behoben werden STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den momentan verwendeten Basisgrafiken fehlen einige Sprites.{}Bitte update die Basisgrafiken.{}Weil dieses eine {YELLOW}Entwickler-Version von OpenTTD{WHITE} ist, ist es möglich, dass auch eine {YELLOW}Entwickler-Version der Basisgrafiken{WHITE} benötigt wird. STR_NEWGRF_ERROR_GRM_FAILED :Die angeforderte GRF-Ressource ist nicht verfügbar (Sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wurde von {STRING} deaktiviert STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ungültiges oder unbekanntes Format für Spritelayout (Sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Achtung! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Änderungen während eines laufenden Spiels können zum Absturz von OpenTTD oder sonstigem unerwünschten Verhalten führen. Bitte diesbezüglich keine Fehlerberichte verfassen.{}Trotzdem fortfahren? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Datei kann nicht hinzugefügt werden: NewGRF-ID bereits vergeben STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Passende Datei nicht gefunden (kompatible NewGRF geladen) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Datei kann nicht hinzugefügt werden: Maximale Anzahl von NewGRF-Dateien erreicht STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatible NewGRF(s) für fehlende Dateien geladen STR_NEWGRF_DISABLED_WARNING :{WHITE}Fehlende NewGRF-Dateien wurden deaktiviert STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}NewGRF-Datei(en) fehlen STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Das Beenden der Pause kann OpenTTD zum Absturz bringen. Bitte keine Fehlerberichte bei auftretenden Fehlern senden. {}Pause wirklich beenden? # NewGRF status STR_NEWGRF_LIST_NONE :Keine STR_NEWGRF_LIST_ALL_FOUND :Alle Dateien vorhanden STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Kompatible Dateien gefunden STR_NEWGRF_LIST_MISSING :{RED}Fehlende Dateien # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Verhalten des NewGRFs '{STRING}' wird voraussichtlich zu Synchronisationsfehlern und/oder Absturz des Spiels führen STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Ändert die Antriebseigenschaften für '{1:ENGINE}' außerhalb von Depots STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Verändert die Fahrzeuglänge von '{1:ENGINE}' außerhalb eines Depots STR_BROKEN_VEHICLE_LENGTH :{WHITE}Zug '{VEHICLE}' der Firma '{COMPANY}' hat eine ungültige Länge. Vermutlich ein NewGRF Problem. Spiel kann desynchronisieren oder abstürzen STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' liefert falsche Informationen STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fracht / Ersetzungs - Informationen für '{1:ENGINE}' weichen von der Einkaufsliste nach dem Kauf ab. Das kann dazu führen, dass das Umrüsten beim autmatisches Ersetzen oder Erneuern nicht korrekt funktioniert STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' verursachte eine Endlosschleife im 'Production callback' STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} lieferte des unbekannte und ungülte Resultat {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE : # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRFs werden eingelesen STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRFs werden eingelesen. Je nach deren Anzahl könnte dies eine Weile dauern... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} von geschätzten {NUM} NewGRF{P "" s} eingelesen STR_NEWGRF_SCAN_ARCHIVES :Archivdateien werden eingelesen # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Schilderliste ({COMMA} Schild{P "" er}) STR_SIGN_LIST_MATCH_CASE :{BLACK}Groß-/Kleinschreibung beachten STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Umschalten zwischen Beachtung und Nichtbeachtung der Groß- und Kleinschreibung beim Vergleich von Schildern mit dem Suchbegriff # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Schildtext ändern STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Zum nächsten Schild wechseln STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Zum vorherigen Schild wechseln STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Text für dieses Schild eingeben # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Städte STR_TOWN_DIRECTORY_NONE :{ORANGE}- Keine - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Städtenamen - Klick auf den Namen zentriert Hauptansicht auf die Stadt. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Stadt STR_TOWN_POPULATION :{BLACK}Weltbevölkerung: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Großstadt) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Einwohner: {ORANGE}{COMMA}{BLACK} Häuser: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagiere im letzten Monat: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Postsäcke im letzten Monat: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Für Stadtwachstum benötigte Fracht: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} benötigt STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} im Winter benötigt STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} geliefert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (noch benötigt) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (geliefert) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Die Stadt wächst jeden {ORANGE}{COMMA}{BLACK}-ten Tag STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Die Stadt wächst jeden {ORANGE}{COMMA}{BLACK}-ten Tag (finanziert) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Die Stadt wächst {RED}nicht{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Lärmbelastung in der Stadt: {ORANGE}{COMMA}{BLACK} Grenzwert: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Hauptansicht zur Stadt scrollen. Strg+Klick öffnet neue Zusatzansicht bei der Stadt STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Stadtverwaltung STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Öffnet Fenster zur Interaktion mit der Stadtverwaltung STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Stadt umbenennen STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Ausdehnen STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Stadt vergrößern STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Löschen STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Diese Stadt vollständig löschen STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Stadt umbenennen # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Stadtverwaltung {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Bewertung der Transportfirma: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Verfügbare Maßnahmen: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liste der verfügbaren Maßnahmen in dieser Stadt - Klick zeigt Einzelheiten an STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Ausführen STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Ausgewählte Maßnahme durchführen STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Kleine Werbekampagne STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Mittlere Werbekampagne STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Große Werbekampagne STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Straßenreparaturen des Ortes finanzieren STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Statue des Firmeneigentümers finanzieren STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Neue Gebäude finanzieren STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Exklusive Transportrechte kaufen STR_LOCAL_AUTHORITY_ACTION_BRIBE :Die Stadtverwaltung bestechen STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Im Ort eine kleine Werbekampagne starten, um mehr Passagier- und Frachtaufträge für die eigene Firma zu gewinnen.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Im Ort eine mittlere Werbekampagne starten, um mehr Passagier- und Frachtaufträge für die eigene Firma zu gewinnen.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Im Ort eine große Werbekampagne starten, um mehr Passagier- und Frachtaufträge für die eigene Firma zu gewinnen.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Die örtlichen Straßenreparaturen finanzieren. Der Straßenverkehr wird bis zu 6 Monate beeinträchtigt.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Eine Statue zu Ehren der eigenen Firma errichten.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Bau von Geschäftsgebäuden im Ort finanzieren.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Für ein Jahr die exklusiven Transportrechte in der Stadt kaufen. Die Stadtverwaltung erlaubt dann nur Passagier- und Frachttransporte der eigenen Firma.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Die Stadtverwaltung bestechen, um die eigene Bewertung zu verbessern. Dabei riskiert man allerdings eine harte Strafe, falls man ertappt wird.{}Kosten: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Ziele STR_GOALS_GLOBAL_TITLE :{BLACK}Allgemeine Spielziele: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Keine - STR_GOALS_COMPANY_TITLE :{BLACK}Firmenspezifische Ziele: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf Ziel zentriert Hauptansicht auf Industrie/Stadt/Feld. Strg+Klick öffnet eine darauf zentrierte Zusatzansicht # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Frage STR_GOAL_QUESTION_CAPTION_INFORMATION :Hinweis STR_GOAL_QUESTION_CAPTION_WARNING :Warnung STR_GOAL_QUESTION_CAPTION_ERROR :Fehler ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Abbruch STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nein STR_GOAL_QUESTION_BUTTON_YES :Ja STR_GOAL_QUESTION_BUTTON_DECLINE :Ablehnen STR_GOAL_QUESTION_BUTTON_ACCEPT :Akzeptieren STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorieren STR_GOAL_QUESTION_BUTTON_RETRY :Wiederholen STR_GOAL_QUESTION_BUTTON_PREVIOUS :Vorhergehendes STR_GOAL_QUESTION_BUTTON_NEXT :Nächstes STR_GOAL_QUESTION_BUTTON_STOP :Aufhören STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Weiter STR_GOAL_QUESTION_BUTTON_CONTINUE :Fortfahren STR_GOAL_QUESTION_BUTTON_RESTART :Neustart STR_GOAL_QUESTION_BUTTON_POSTPONE :Verschieben STR_GOAL_QUESTION_BUTTON_SURRENDER :Aufgeben STR_GOAL_QUESTION_BUTTON_CLOSE :Schließen # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subventionen STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subventionsangebot für: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} von {STRING} nach {STRING}{YELLOW} (bis {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Keine - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Bereits vergebene Subventionen: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} von {STRING} nach {STRING}{YELLOW} ({COMPANY}{YELLOW}, bis {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf subventionierte Dienstleistung zentriert Hauptansicht auf die Industrie/Stadt. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie/Stadt # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnamen - Klick auf den Namen zentriert Hauptansicht auf die Station. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Station STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Strg gedrückt halten, um mehrere Einträge auszuwählen STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Haltestelle{P "" n} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Keine - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Alle Stationstypen auswählen STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Alle Frachtarten auswählen (einschließlich keiner Fracht) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Keine Fracht jeglicher Art wartend # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Es warten: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} von {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Angenommen STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Zeige Liste der angenommenen Frachtarten STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Nimmt an: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Diese Station hat in der zugehörigen Stadt exklusive Transportrechte . STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} hat die exklusiven Transportrechte in dieser Stadt erworben. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bewertung STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Stationsbewertung anzeigen STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Örtliche Bewertung der Dienstleistungen: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Furchtbar STR_CARGO_RATING_VERY_POOR :Sehr schlecht STR_CARGO_RATING_POOR :Schlecht STR_CARGO_RATING_MEDIOCRE :Mittelmäßig STR_CARGO_RATING_GOOD :Gut STR_CARGO_RATING_VERY_GOOD :Sehr gut STR_CARGO_RATING_EXCELLENT :Ausgezeichnet STR_CARGO_RATING_OUTSTANDING :Hervorragend ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Hauptansicht zur Station scrollen. Strg+Klick öffnet neue Zusatzansicht bei der Station STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Namen der Station ändern STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Alle Züge, die diesen Bahnhof anfahren, anzeigen STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Alle Straßenfahrzeuge, die diese Station anfahren, anzeigen STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Alle Flugzeuge, die diesen Flughafen anfliegen, anzeigen STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Alle Schiffe, die diesen Hafen ansteuern, anzeigen STR_STATION_VIEW_RENAME_STATION_CAPTION :Station/Ladeplatz umbenennen STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Flughafen schließen STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Luftfahrzeugen die Landeerlaubnis verweigern # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Hauptansicht auf den Wegpunkt zentrieren. Strg+Klick öffnet neue Zusatzansicht beim Wegpunkt STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Namen der Wegpunkte ändern STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Hauptansicht zur Boje scrollen. Strg+Klick öffnet neue Zusatzansicht bei der Boje STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Namen der Boje ändern STR_EDIT_WAYPOINT_NAME :{WHITE}Namen des Wegpunkts ändern # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finanzen {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Ausgaben / Einnahmen STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Baukosten STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Neue Fahrzeuge STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Zugbetriebskosten STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Fahrzeugbetriebskosten STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Flugzeugbetriebskosten STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Schiffbetriebskosten STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Betriebskosten Gebäude STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Einnahmen Züge STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Einnahmen Straßenfahrzeuge STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Einnahmen Flugzeuge STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Einnahmen Schiffe STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Kreditzinsen STR_FINANCES_SECTION_OTHER :{GOLD}Sonstiges STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Gesamt: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Kontostand STR_FINANCES_LOAN_TITLE :{WHITE}Kredit STR_FINANCES_MAX_LOAN :{WHITE}Maximaler Kredit: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}{CURRENCY_LONG} leihen STR_FINANCES_BORROW_TOOLTIP :{BLACK}Kredit aufnehmen. Strg+Klick, um maximalen Kredit aufzunehmen STR_FINANCES_REPAY_BUTTON :{BLACK}{CURRENCY_LONG} zurückzahlen STR_FINANCES_REPAY_TOOLTIP :{BLACK}Kredit tilgen. Strg+Klick, um die größtmögliche Summe zurückzuzahlen STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktur # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Manager) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Gegründet: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Farbschema STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Fahrzeuge: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} Z{P ug üge} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} Fahrzeug{P "" e} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} Flugzeug{P "" e} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} Schiff{P "" e} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Keine STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmenwert: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% Eigentum von {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktur: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} Schienenstück{P "" e} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} Straßenfeld{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} Wasserfeld{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} Stationsfeld{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} Flugh{P afen äfen} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Keine STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Firmensitz bauen STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Firmensitz an einer freien Stelle errichten STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Firmensitz STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Firmensitz anzeigen STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Verlegen STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Errichte Firmensitz für 1% des Firmenwertes an anderer Stelle neu. Shift+Klick zeigt einen Kostenvoranschlag STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detaillierte Informationen zur Infrastruktur dieser Firma anzeigen STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Neues Gesicht STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Neues Gesicht für Manager aussuchen STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Farbschema STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Firmenfarbe ändern STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Firmenname STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Firmenname ändern STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Managername STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Managername ändern STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}25% der Aktien der Firma kaufen STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}25% der Aktien der Firma verkaufen STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}25% der Aktien dieser Firma kaufen. Shift+Klick zeigt einen Kostenvoranschlag STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}25% der Aktien dieser Firma verkaufen. Shift+Klick zeigt eine Gewinnschätzung STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Firmenname STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Name des Managers STR_BUY_COMPANY_MESSAGE :{WHITE}Wir suchen eine Transportfirma, die unsere Firma übernimmt.{}{}Besteht Interesse daran, {COMPANY} für {CURRENCY_LONG} zu übernehmen? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur von {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Schienenfelder: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signale STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Straßenfelder: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Straße STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Straßenbahnfelder STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Wasserfelder: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanäle STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationen: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stationsfelder STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flughäfen STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/a ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/a # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrien STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Keine - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportiert) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportiert) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrienamen - Klick auf den Namen zentriert Hauptansicht auf die Industrie. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produktion im letzten Monat: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% befördert) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Hauptansicht zur Industrie scrollen. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktionsrate: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Zur Verarbeitung bereitstehende Fracht: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Produktion ändern (Vielfache von 8, maximal 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Produktionsrate ändern (prozentual, bis zu 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Z{P ug üge} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Straßenfahrzeug{P "" e} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Schiff{P "" e} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Flugzeug{P "" e} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Züge - für Einzelheiten auf den Zug klicken STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Straßenfahrzeuge - für Einzelheiten auf das Fahrzeug klicken STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Schiffe - für Einzelheiten auf das Schiff klicken STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Flugzeuge - für Einzelheiten auf das Flugzeug klicken STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Gewinn im laufenden Jahr: {CURRENCY_LONG} (vergangenes Jahr: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Verfügbare Züge STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Verfügbare Fahrzeuge STR_VEHICLE_LIST_AVAILABLE_SHIPS :Verfügbare Schiffe STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Verfügbare Flugzeuge STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Verfügbare Fahrzeuge für diesen Fahrzeugtyp auflisten STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Liste verwalten STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Aufträge an alle Fahrzeuge in der Liste verschicken STR_VEHICLE_LIST_REPLACE_VEHICLES :Fahrzeuge ersetzen STR_VEHICLE_LIST_SEND_FOR_SERVICING :Zur Wartung schicken STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Ins Depot schicken STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Ins Depot schicken STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :In die Werft schicken STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :In den Hangar schicken STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Alle Fahrzeuge in der Liste anhalten STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Alle Fahrzeuge in der Liste losschicken STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Gemeinsamer Fahrplan von {COMMA} Fahrzeug{P "" en} # Group window STR_GROUP_ALL_TRAINS :Alle Züge STR_GROUP_ALL_ROAD_VEHICLES :Alle Straßenfahrzeuge STR_GROUP_ALL_SHIPS :Alle Schiffe STR_GROUP_ALL_AIRCRAFTS :Alle Flugzeuge STR_GROUP_DEFAULT_TRAINS :Ungruppierte Züge STR_GROUP_DEFAULT_ROAD_VEHICLES :Ungruppierte Straßenfahrzeuge STR_GROUP_DEFAULT_SHIPS :Ungruppierte Schiffe STR_GROUP_DEFAULT_AIRCRAFTS :Ungruppierte Flugzeuge STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppen - Klick auf eine Gruppe zeigt Liste aller Fahrzeuge der Gruppe an STR_GROUP_CREATE_TOOLTIP :{BLACK}Neue Gruppe erstellen STR_GROUP_DELETE_TOOLTIP :{BLACK}Ausgewählte Gruppe löschen STR_GROUP_RENAME_TOOLTIP :{BLACK}Ausgewählte Gruppe umbenennen STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Diese Gruppe von der automatischen Fahrzeugersetzung ausschließen STR_GROUP_ADD_SHARED_VEHICLE :Gemeinsame Fahrzeuge hinzufügen STR_GROUP_REMOVE_ALL_VEHICLES :Liste leeren STR_GROUP_RENAME_CAPTION :{BLACK}Gruppe umbenennen # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Neue Schienenfahrzeuge STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Neue elektrische Schienenfahrzeuge STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Neue Einschienenbahnfahrzeuge STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Neue Magnetbahnfahrzeuge STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Neue Eisenbahnfahrzeuge STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Neue Fahrzeuge STR_BUY_VEHICLE_SHIP_CAPTION :Neue Schiffe STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Neue Flugzeuge STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} Gewicht: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Geschw.: {GOLD}{VELOCITY}{BLACK} Leistung: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Geschwindigkeit: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Geschwindigkeit auf dem Meer: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Geschwindigkeit auf Kanälen und Flüssen: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Betriebskosten: {GOLD}{CURRENCY_LONG} pro Jahr STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapazität: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(umrüstbar) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Entworfen: {GOLD}{NUM}{BLACK} Betriebsdauer: {GOLD}{COMMA} Jahr{P "" e} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Max. Zuverlässigkeit: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Kosten: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Gewicht: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kosten: {GOLD}{CURRENCY_LONG}{BLACK} Geschw.: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapazität: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Angetriebene Waggons: {GOLD}+{POWER}{BLACK} Gewicht: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Umrüstbar auf: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Alle Frachtarten STR_PURCHASE_INFO_ALL_BUT :Alles außer {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Zugkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Reichweite: {GOLD}{COMMA} Felder STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Schienenfahrzeugsliste - Einzelheiten durch Anklicken des Fahrzeuges STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Straßenfahrzeugsliste - Klicke auf ein Fahrzeug für Einzelheiten STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schiffsliste - für Einzelheiten auf das Schiff klicken STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugzeugliste - Klick auf das Flugzeug zeigt weitere Einzelheiten an STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Fahrzeug kaufen STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Fahrzeug kaufen STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Schiff kaufen STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Flugzeug kaufen STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Angewähltes Fahrzeug kaufen. Shift+Klick zeigt einen Kostenvoranschlag STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Fahrzeug kaufen. Shift+Klick zeigt einen Kostenvoranschlag STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Schiff kaufen. Shift+Klick zeigt einen Kostenvoranschlag STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Augewähltes Flugzeug kaufen. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Umbenennen STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Umbenennen STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Umbenennen STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Umbenennen STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Umbenennen der Waggontypen STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Fahrzeug umbenennen STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Schiff umbenennen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Flugzeug umbenennen STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zugtyp umbenennen STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Fahrzeug umbenennen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Schiff umbenennen STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Flugzeug umbenennen # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Namen des Depots ändern STR_DEPOT_RENAME_DEPOT_CAPTION :Depot umbenennen STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} Fahrzeug{P "" e}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Züge - Fahrzeug ziehen, um es an-/abzukoppeln. Rechts-Klick für Fahrzeuginformationen, Rechts-Klick für Einzelheiten. Strg, um die jeweilige Funktion für das gesamte Gespann auszuführen STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Straßenfahrzeuge - Rechts-Klick für Einzelheiten STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Schiffe - Rechts-Klick für Einzelheiten STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugzeuge - Rechts-Klick für Einzelheiten STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Schienenfahrzeug hierher ziehen, um es zu verkaufen STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Ziehe Straßenfahrzeug hierher, um es zu verkaufen STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Ziehe Schiff hierher, um es zu verkaufen STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Zum Verkauf des Flugzeuges hierher ziehen STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Lok hierher ziehen, um den ganzen Zug zu verkaufen STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Alle Züge im Depot verkaufen STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Alle Fahrzeuge im Depot verkaufen STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Alle Schiffe in der Werft verkaufen STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Alle Flugzeuge im Hangar verkaufen STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Alle Züge im Depot automatisch ersetzen STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Alle Fahrzeuge im Depot automatisch ersetzen STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Alle Schiffe in der Werft automatisch ersetzen STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Alle Flugzeuge im Hangar automatisch ersetzen STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Neue Fahrzeuge STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Neue Straßenfahrzeuge STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Neue Schiffe STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Neue Flugzeuge STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Neues Schienenfahrzeug kaufen STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Neues Straßenfahrzeug kaufen STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Neues Schiff kaufen STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Neues Flugzeug kaufen STR_DEPOT_CLONE_TRAIN :{BLACK}Zug kopieren STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Fahrzeug kopieren STR_DEPOT_CLONE_SHIP :{BLACK}Schiff kopieren STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Flugzeug kopieren STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Kauft eine Kopie des Zuges mit allen Waggons. Klicke diese Schaltfläche und dann auf einen Zug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Kauft eine Kopie des Fahrzeuges. Klicke auf diese Schaltfläche und dann auf ein Fahrzeug innerhalb oder außerhalb des Depots. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Kauft eine Kopie des Schiffes. Klicke diese Schaltfläche und dann auf eine Schiff innerhalb oder außerhalb der Werft. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Kauft eine Kopie des Flugzeuges. Klicke auf diese Schaltfläche und dann auf ein Flugzeug innerhalb oder außerhalb des Hangars. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Zugdepot scrollen. Strg+Klick öffnet neue Zusatzansicht beim Zugdepot STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Fahrzeugdepot scrollen. Strg+Klick öffnet neue Zusatzansicht beim Fahrzeugdepot STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Hauptansicht zur Werft scrollen. Strg+Klick öffnet neue Zusatzansicht bei der Werft STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Hangar scrollen. Strg+Klick öffnet neue Zusatzansicht beim Hangar STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Alle Züge, die dieses Depot anfahren, auflisten STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Alle Fahrzeuge, die dieses Depot anfahren, auflisten STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Alle Schiffe, die diese Werft anfahren, auflisten STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Alle Flugzeuge, die einen Hangar dieses Flughafens ansteuern, auflisten STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Alle Züge im Depot anhalten STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Alle Fahrzeuge im Depot anhalten STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Alle Schiffe in der Werft anhalten STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Alle Flugzeuge im Hangar anhalten STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Alle Züge im Depot losschicken STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Alle Fahrzeuge im Depot losschicken STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Alle Schiffe in der Werft losschicken STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Alle Flugzeuge im Hangar losschicken STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Sollen alle Fahrzeuge in diesem Depot verkauft werden? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Nachricht vom Fahrzeughersteller STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Wir haben {G "einen" "eine" "ein" ""} neue{G n "" s ""} {0:STRING} entwickelt. {}Besteht Interesse, {G 0 den die das die} {0:STRING} ein Jahr lang exklusiv zu nutzen, so dass wir die Funktionen testen können, bevor {G 0 er sie es sie} allgemein zur Verfügung gestellt {G 0 wird wird wird werden}? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=w}Lokomotive STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}Straßenfahrzeug STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}Flugzeug STR_ENGINE_PREVIEW_SHIP :{G=n}Schiff STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=w}Einschienenbahn STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=w}Magnetschwebebahn STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kosten: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Geschwindigk.: {VELOCITY} Leistung: {POWER}{}Betriebskosten: {CURRENCY_LONG} pro Jahr{}Kapazität: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Preis: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Max. Geschwindigkeit: {VELOCITY} Leistung: {POWER} Max. Zugkraft: {6:FORCE}{}Betriebskosten: {4:CURRENCY_LONG}/yr{}Kapazität: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Preis: {CURRENCY_LONG} Höchstgeschw.: {VELOCITY}{}Kapazität: {CARGO_LONG}, {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/yr STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Preis: {CURRENCY_LONG} Höchstgeschw.: {VELOCITY}{}Kapazität: {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/Jahr STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kosten: {CURRENCY_LONG} Höchstgeschwindigkeit: {VELOCITY} Reichweite: {COMMA} Felder{}Kapazität: {CARGO_LONG}, {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/a STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Höchstgeschwindigkeit: {VELOCITY} Reichweite: {COMMA} Felder{}Kapazität: {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/a # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} ersetzen - {STRING} STR_REPLACE_VEHICLE_TRAIN :Zug STR_REPLACE_VEHICLE_ROAD_VEHICLE :Straßenfahrzeug STR_REPLACE_VEHICLE_SHIP :Schiff STR_REPLACE_VEHICLE_AIRCRAFT :Flugzeug STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Zu ersetzenden Fahrzeugtyp auswählen STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Fahrzeugtyp auswählen, der anstelle des links gewählten Typs verwendet werden soll STR_REPLACE_VEHICLES_START :{BLACK}Fahrzeugersetzung an STR_REPLACE_VEHICLES_NOW :Alle Fahrzeuge jetzt ersetzen STR_REPLACE_VEHICLES_WHEN_OLD :Ersetze nur alte Fahrzeuge STR_REPLACE_HELP_START_BUTTON :{BLACK}Klick zum Ersetzen des Fahrzeugtyps auf der linken Seite mit dem auf der rechten Seite STR_REPLACE_NOT_REPLACING :{BLACK}Keine Ersetzung STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Kein Fahrzeug gewählt STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} wenn alt STR_REPLACE_VEHICLES_STOP :{BLACK}Fahrzeugersetzung aus STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klick zum Abbrechen der Ersetzung des Fahrzeugtyps auf der linken Seite STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Ersetzen: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Umschalter für Lok- oder Waggonersetzung STR_REPLACE_ENGINES :Schienenfahrzeuge STR_REPLACE_WAGONS :Waggons STR_REPLACE_HELP_RAILTYPE :{BLACK}Gleistyp auswählen, 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_RAIL_VEHICLES :Eisenbahn STR_REPLACE_ELRAIL_VEHICLES :elektrische Schienenfahrzeuge STR_REPLACE_MONORAIL_VEHICLES :Einschienenbahn STR_REPLACE_MAGLEV_VEHICLES :Magnetschwebebahn STR_REPLACE_REMOVE_WAGON :{BLACK}Waggon-Entfernung: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Ursprüngliche Länge des Zugs beibehalten, indem (vorne beginnend) Waggons entfernt werden, falls das Ersetzen der Lokomotive den Zug verlängern würde # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Zug scrollen. Strg+Klick, um dem Zug zu folgen STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Fahrzeug scrollen. Strg+Klick, um dem Fahrzeug zu folgen STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Schiff scrollen. Strg+Klick, um dem Schiff zu folgen STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Hauptansicht zum Flugzeug scrollen. Strg+Klick, um dem Flugzeug zu folgen STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Zug ins Depot schicken. Strg+Klick, um dort nur Wartung durchzuführen STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Das Fahrzeug ins Depot schicken. Strg+Klick, um dort nur Wartung durchzuführen STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Das Schiff zur Werft schicken. Strg+Klick, um dort nur Wartung durchzuführen STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Das Flugzeug in den Hangar schicken. Strg+Klick, um dort nur Wartung durchzuführen STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Kauft eine Kopie des Zuges mit allen Waggons. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Kauft eine Kopie des Fahrzeuges. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Kauft eine Kopie des Schiffes. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Kauft eine Kopie des Flugzeuges. Strg+Klick erzeugt gemeinsamen Fahrplan. Shift schaltet zwischen Bauen und Kostenvoranschlag um STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Zug zur Weiterfahrt zwingen, ohne das Signal zu beachten STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Zug auf eine andere Fracht umrüsten STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Straßenfahrzeug auf eine andere Fracht umrüsten STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Schiff auf eine andere Fracht umrüsten STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Flugzeug auf eine andere Fracht umrüsten STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Fahrtrichtung umkehren STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Das Straßenfahrzeug zur Umkehr zwingen STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Aufträge des Zuges anzeigen. Strg+Klick öffnet den Fahrplan STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Aufträge des Fahrzeugs anzeigen. Strg+Klick öffnet den Fahrplan STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Aufträge des Schiffes anzeigen. Strg+Klick öffnet den Fahrplan STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Aufträge des Flugzeugs anzeigen. Strg+Klick öffnet den Fahrplan STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Zeige Einzelheiten des Zuges STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Einzelheiten des Straßenfahrzeuges anzeigen STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Zeige Einzelheiten des Schiffes STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Zeige Einzelheiten des Flugzeuges STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Zugbewegung - Klicke hier, um den Zug anzuhalten / zu starten. Strg + Klick scrollt zum Bestimmungsort STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Fahrzeugbewegung - Klick zum Anhalten bzw. Losschicken. Strg + Klick scrollt zum Bestimmungsort STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Schiffsbewegung - Klicke hier, um das Schiff anzuhalten / zu starten. Strg + Klick scrollt zum Bestimmungsort STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Flugzeugbewegung - Klick zum Anhalten bzw. Losschicken. Strg + Klick scrollt zum Bestimmungsort # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laden / Entladen STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Abfahrt STR_VEHICLE_STATUS_CRASHED :{RED}Unfall! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Panne STR_VEHICLE_STATUS_STOPPED :{RED}Angehalten STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Halte an, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Keine Energie STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Warte auf freie Wege STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Zu weit zum nächsten Ziel STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Unterwegs nach {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Keine Aufträge, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Fahre zu {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Fährt zu {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Wartung in {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Angehalten STR_VEHICLE_COMMAND_STOPPED :{RED}Angehalten STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Losgeschickt STR_VEHICLE_COMMAND_STARTED :{GREEN}Losgeschickt # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Details) STR_VEHICLE_NAME_BUTTON :{BLACK}Name STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Name des Zuges STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Name des Fahrzeuges STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Schiffsname STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Flugzeugname STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betriebskosten: {LTBLUE}{CURRENCY_LONG}/Jahr # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} Jahr{P "" e} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} Jahr{P "" e} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. Geschwindigkeit: {LTBLUE}{VELOCITY} {BLACK}Reichweite: {LTBLUE}{COMMA} Felder STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Leistung: {LTBLUE}{POWER}{BLACK} Max. Geschw.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Leistung: {LTBLUE}{POWER}{BLACK} Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Max. Zugkraft: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Gewinn dieses Jahr: {LTBLUE}{CURRENCY_LONG} (letztes Jahr: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Zuverlässigkeit: {LTBLUE}{COMMA}% {BLACK}Pannen seit der letzten Wartung: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Gebaut: {LTBLUE}{NUM}{BLACK} Wert: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapazität: {LTBLUE}Keine{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapazität: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapazität: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapazität: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer-Einnahmen: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}Tag{P "" e} {BLACK} Letzte Wartung: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Wartungsintervall: {LTBLUE}{COMMA}%{BLACK} Letzte Wartung: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Wartungsintervall um 10 erhöhen. Strg+Klick erhöht um 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Wartungsintervall um 10 verringern. Strg+Klick verringert um 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Art des Service-Intervalls ändern STR_VEHICLE_DETAILS_DEFAULT :Standard STR_VEHICLE_DETAILS_DAYS :Tage STR_VEHICLE_DETAILS_PERCENT :Prozent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Name des Zuges STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Name des Fahrzeuges STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Schiffsname STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Flugzeugname # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebaut: {LTBLUE}{NUM}{BLACK} Wert: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Wert: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Frachtkapazität dieses Zuges: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}{CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Leer STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} von {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} von {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Fracht STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Zeige Einzelheiten zur geladenen Fracht STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Information STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Zeige Einzelheiten zu den Schienenfahrzeugen STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapazitäten STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Zeige Kapazität jedes Fahrzeugs STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Frachtübersicht STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Frachtübersicht des Zuges anzeigen, aufgeteilt nach Frachttyp STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapazität: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Umrüsten) STR_REFIT_TITLE :{GOLD}Neue Fracht wählen: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Neue Kapazität: {GOLD}{CARGO_LONG}{}{BLACK}Kosten der Umrüstung: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Neue Kapazität: {GOLD}{CARGO_LONG}{}{BLACK}Einkommen aus Umrüstung: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Neue Kapazität: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kosten für Umrüstung: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Neue Kapazität: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Einnahmen aus Umrüstung: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Umzurüstendes Fahrzeug auswählen. Ziehen mit der Maus erlaubt das Auswählen mehrerer Fahrzeuge gleichzeitig. Freifläche anklicken wählt das gesamte Fahrzeug aus. Strg+Klick wählt das Fahrzeug und alle nachfolgenden aus. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Die Fracht auswählen, die der Zug befördern soll STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Die Fracht auswählen, die das Straßenfahrzeug befördern soll STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Die Fracht auswählen, die das Schiff befördern soll STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Die Fracht auswählen, die das Flugzeug befördern soll STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Zug umrüsten STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Straßenfahrzeug umrüsten STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Schiff umrüsten STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Flugzeug umrüsten STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Zug auf die ausgewählte Fracht umrüsten STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Straßenfahrzeug auf die ausgewählte Fracht umrüsten STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Schiff auf die markierte Fracht umrüsten STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Flugzeug auf die ausgewählte Fracht umrüsten # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Aufträge) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Fahrplan STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Zur Fahrplanansicht wechseln STR_ORDERS_LIST_TOOLTIP :{BLACK}Auftragsliste - Auftrag anklicken, um ihn zu markieren. Strg+Klick springt zum Auftragsziel STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Ende der Aufträge - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Ende des gemeinsam genutzten Fahrplans - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}ohne Zwischenhalt STR_ORDER_GO_TO :Fahre zu STR_ORDER_GO_NON_STOP_TO :Fahre ohne Zwischenhalt zu STR_ORDER_GO_VIA :Fahre über STR_ORDER_GO_NON_STOP_VIA :Fahre ohne Zwischenhalt über STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Ändert Stoppverhalten des ausgewählten Auftrags STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Vollladen einer Fracht STR_ORDER_DROP_LOAD_IF_POSSIBLE :Lade, wenn verfügbar STR_ORDER_DROP_FULL_LOAD_ALL :Vollladen jeder Fracht STR_ORDER_DROP_FULL_LOAD_ANY :Vollladen einer Fracht STR_ORDER_DROP_NO_LOADING :Nicht beladen STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Ändert Ladeverhalten des ausgewählten Auftrags STR_ORDER_TOGGLE_UNLOAD :{BLACK}Alles entladen STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Entladen, falls angenommen STR_ORDER_DROP_UNLOAD :Alles entladen STR_ORDER_DROP_TRANSFER :Umladen STR_ORDER_DROP_NO_UNLOADING :Nicht entladen STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ändert Entladeverhalten des ausgewählten Auftrags STR_ORDER_REFIT :{BLACK}Umrüsten STR_ORDER_REFIT_TOOLTIP :{BLACK}Frachtart auswählen, auf die umgerüstet werden soll. Strg+Klick, um einen Umrüstungsauftrag wieder zu entfernen STR_ORDER_REFIT_AUTO :{BLACK}Automatisches Umrüsten STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Auswählen, auf welche Frachtart automatisch umgerüstet wird. Strg+Klick um Auftrag zum Umrüsten zu entfernen. Automatisches Umrüsten wird vorgenommen, wenn das Fahrzeug es zuläßt. STR_ORDER_DROP_REFIT_AUTO :Vorgegebene Fracht STR_ORDER_DROP_REFIT_AUTO_ANY :Verfügbare Fracht STR_ORDER_SERVICE :{BLACK}Wartung STR_ORDER_DROP_GO_ALWAYS_DEPOT :Fahre immer STR_ORDER_DROP_SERVICE_DEPOT :Wartung, wenn nötig STR_ORDER_DROP_HALT_DEPOT :Stopp STR_ORDER_SERVICE_TOOLTIP :{BLACK}Überspringe diesen Auftrag, sofern keine Wartung benötigt wird STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Fahrzeuginformation, welche für den Sprung ausgewertet wird # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Ladezustand (Prozent) STR_ORDER_CONDITIONAL_RELIABILITY :Zuverlässigkeit STR_ORDER_CONDITIONAL_MAX_SPEED :Höchstgeschwindigkeit STR_ORDER_CONDITIONAL_AGE :Fahrzeugalter (Jahre) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Wartung erforderlich STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Immer STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Verbleibende Laufzeit (Jahre) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Die Bedingung, die erfüllt werden muss STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :gleich STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ungleich STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :kleiner als STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :kleiner gleich STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :größer als STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :größer gleich STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :wahr STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :falsch STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Wert, der mit Fahrzeuginformation verglichen wird STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Wert für den Vergleich eingeben STR_ORDERS_SKIP_BUTTON :{BLACK}Überspringen STR_ORDERS_SKIP_TOOLTIP :{BLACK}Den aktuellen Auftrag überspringen und den nächsten ausführen. Strg+Klick springt zum ausgewählten Auftrag STR_ORDERS_DELETE_BUTTON :{BLACK}Löschen STR_ORDERS_DELETE_TOOLTIP :{BLACK}Lösche den markierten Auftrag STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Lösche alle Aufträge STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Gemeinsame Aufträge aufheben STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Gemeinsame Auftragliste aufheben. Ctrl+Klick löscht zusätzlich die Auftragliste für dieses Fahrzeug STR_ORDERS_GO_TO_BUTTON :{BLACK}Fahre zu STR_ORDER_GO_TO_NEAREST_DEPOT :Nächstes Depot STR_ORDER_GO_TO_NEAREST_HANGAR :Nächster Hangar STR_ORDER_CONDITIONAL :Bedingter Sprung zu Auftrag STR_ORDER_SHARE :Gemeinsame Aufträge STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Einen neuen Auftrag vor dem markierten Auftrag oder am Ende der Liste einfügen. Strg halten, um für Stationen 'Vollladen einer Fracht', für Wegpunkte 'ohne Zwischenhalt' und für Depots 'Wartung' auszuwählen. 'Gemeinsame Aufträge' erlauben es, für mehrere Fahrzeuge nur einen Fahrplan und eine Auftragsliste zu verwenden. Durch Klicken auf ein Fahrzeug werden die Aufträge durch die des ausgewählten Fahrzeugs ersetzt. Wartungs- und Depotaufträge schalten die automatische Wartung aus. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Alle Fahrzeuge mit demselben Fahrplan anzeigen # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Fahre über {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Fahre ohne Zwischenhalt über {WAYPOINT} STR_ORDER_SERVICE_AT :Falls nötig, fahre zwecks Wartung zu STR_ORDER_SERVICE_NON_STOP_AT :Fahre ohne Zwischenhalt zwecks Wartung zu STR_ORDER_NEAREST_DEPOT :nächsten STR_ORDER_NEAREST_HANGAR :dem nächsten Hangar STR_ORDER_TRAIN_DEPOT :{G=n}Zugdepot STR_ORDER_ROAD_VEHICLE_DEPOT :{G=n}Straßenfahrzeugdepot STR_ORDER_SHIP_DEPOT :{G=w}Werft STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING}{G 2 m r m " den"} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(auf {STRING} umrüsten) STR_ORDER_REFIT_STOP_ORDER :(auf {STRING} umrüsten und stoppen) STR_ORDER_STOP_ORDER :(Stopp) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Implizit) STR_ORDER_FULL_LOAD :(Voll beladen) STR_ORDER_FULL_LOAD_ANY :(Mit einer Fracht voll beladen) STR_ORDER_NO_LOAD :(Nicht beladen) STR_ORDER_UNLOAD :(Entladen und laden) STR_ORDER_UNLOAD_FULL_LOAD :(Entladen und auf volle Ladung warten) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Entladen und voll beladen mit beliebiger Fracht) STR_ORDER_UNLOAD_NO_LOAD :(Entladen und leer verlassen) STR_ORDER_TRANSFER :(Umladen und laden) STR_ORDER_TRANSFER_FULL_LOAD :(Umladen und auf volle Ladung warten) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Umladen und voll beladen mit beliebiger Fracht) STR_ORDER_TRANSFER_NO_LOAD :(Umladen und leer verlassen) STR_ORDER_NO_UNLOAD :(Nicht entladen, aber laden) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Nicht entladen, aber auf volle Ladung warten) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Nicht entladen, aber voll beladen mit beliebiger Fracht) STR_ORDER_NO_UNLOAD_NO_LOAD :(Weder entladen noch beladen) STR_ORDER_AUTO_REFIT :(Automatische Umrüstung auf {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Volladen mit automatischer Umrüstung auf {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Volladen einer Frachtart und automatischer Umrüstung auf {STRING}) STR_ORDER_UNLOAD_REFIT :(Entladen und laden mit automatischer Umrüstung auf {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Umladen und warten auf volle Zuladung mit automatischer Umrüstung auf {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entladen und warten auf volle Zuladung einer Frachtart mit automatischer Umrüstung auf {STRING}) STR_ORDER_TRANSFER_REFIT :(Umladen und laden mit automatischer Umrüstung auf {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Umladen und warten auf volle Zuladung mit automatischer Umrüstung auf {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Umladen und warten auf volle Zuladung einer Frachtart mit automatischer Umrüstung auf {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Nicht entladen und laden mit automatischer Umrüstung auf {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nicht entladen und warten auf volle Zuladung mit automatischer Umrüstung auf {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nicht entladen und warten auf volle Zuladung einer Fracht mit automatischer Umrüstung auf {STRING}) STR_ORDER_AUTO_REFIT_ANY :verfügbare Fracht STR_ORDER_STOP_LOCATION_NEAR_END :[am Anfang] STR_ORDER_STOP_LOCATION_MIDDLE :[in der Mitte] STR_ORDER_STOP_LOCATION_FAR_END :[am Ende] STR_ORDER_OUT_OF_RANGE :{RED} (Nächster Auftrag ist außer Reichweite) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Springe zu Auftrag {COMMA} STR_ORDER_CONDITIONAL_NUM :Springe zu Auftrag {COMMA}, wenn {STRING} {STRING} {COMMA} ist STR_ORDER_CONDITIONAL_TRUE_FALSE :Springe zu Auftrag {COMMA}, wenn {STRING} {STRING} ist STR_INVALID_ORDER :{RED} (Ungültiger Auftrag) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Fahrplan) STR_TIMETABLE_ORDER_VIEW :{BLACK}Aufträge STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Zur Auftragsanzeige wechseln STR_TIMETABLE_TOOLTIP :{BLACK}Fahrplan - Einträge anklicken, um sie zu markieren STR_TIMETABLE_NO_TRAVEL :Nicht unterwegs STR_TIMETABLE_NOT_TIMETABLEABLE :Unterwegs (automatisch; Fahrplan abhängig vom nächsten manuellen Auftrag) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Unterwegs (ohne Fahrplan) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Fahrt mit höchstens {2:VELOCITY} (ohne Fahrplan) STR_TIMETABLE_TRAVEL_FOR :{STRING} unterwegs STR_TIMETABLE_TRAVEL_FOR_SPEED :Fahrt zu {STRING} mit höchstens {VELOCITY} STR_TIMETABLE_STAY_FOR :und {STRING} lang bleiben STR_TIMETABLE_AND_TRAVEL_FOR :und {STRING} lang unterwegs STR_TIMETABLE_DAYS :{COMMA} Tag{P "" e} STR_TIMETABLE_TICKS :{COMMA} Tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}Dieser Fahrplan benötigt {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Dieser Fahrplan benötigt mindestens {STRING} (nicht alle geplant) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Das Fahrzeug ist derzeit pünktlich STR_TIMETABLE_STATUS_LATE :{BLACK}Dieses Fahrzeug hat {STRING} Verspätung STR_TIMETABLE_STATUS_EARLY :{BLACK}Dieses Fahrzeug ist {STRING} zu früh STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Dieser Fahrplan ist noch nicht gültig STR_TIMETABLE_STATUS_START_AT :{BLACK}Dieser Fahrplan wird ab {STRING} in Kraft sein STR_TIMETABLE_STARTING_DATE :{BLACK}Anfangsdatum STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wähle ein Anfangsdatum für den Fahrplan STR_TIMETABLE_CHANGE_TIME :{BLACK}Zeit ändern STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zeitrahmen für den markierten Auftrag ändern STR_TIMETABLE_CLEAR_TIME :{BLACK}Zeit löschen STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Zeitrahmen für den markierten Auftrag löschen STR_TIMETABLE_CHANGE_SPEED :{BLACK}Tempolimit ändern STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Tempolimit beim Ausführen des ausgewählten Auftrags ändern STR_TIMETABLE_CLEAR_SPEED :{BLACK}Tempolimit löschen STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Tempolimit für das Ausführen des ausgewählten Auftrags löschen STR_TIMETABLE_RESET_LATENESS :{BLACK}Verspätung löschen STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Verspätungsmelder zurücksetzen (das Fahrzeug gilt dann als pünktlich). STR_TIMETABLE_AUTOFILL :{BLACK}Erfassen STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Zeiten automatisch bei der nächsten Fahrt eintragen (Mit Strg+Klick wird versucht, die aktuellen Wartezeiten beizubehalten) STR_TIMETABLE_EXPECTED :{BLACK}Voraussichtlich STR_TIMETABLE_SCHEDULED :{BLACK}Fahrplanmäßig STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Umschalten zwischen Anzeige der erwarteten Ankunftszeit und des Fahrplans STR_TIMETABLE_ARRIVAL_ABBREVIATION :an STR_TIMETABLE_DEPARTURE_ABBREVIATION :ab # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Datum auswählen STR_DATE_SET_DATE :{BLACK}Datum auswählen STR_DATE_SET_DATE_TOOLTIP :{BLACK}Setze den Fahrplan ab dem gewählten Datum in Kraft STR_DATE_DAY_TOOLTIP :{BLACK}Tag auswählen STR_DATE_MONTH_TOOLTIP :{BLACK}Monat auswählen STR_DATE_YEAR_TOOLTIP :{BLACK}Jahr auswählen # AI debug window STR_AI_DEBUG :{WHITE}KI- und Skript-Debug STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Name des Skripts STR_AI_DEBUG_SETTINGS :{BLACK}Einstellungen STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Einstellungen des Skripts ändern STR_AI_DEBUG_RELOAD :{BLACK}KI erneut laden STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}KI stoppen, neu laden und erneut starten STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Festlegen, ob die KI beim Auftauchen des Suchtextes in der KI-Log-Ausgabe angehalten wird STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Anhalten bei: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Anhalten bei STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Erscheint dieser Suchtext in der KI-Log-Ausgabe, werden KI und Spiel angehalten STR_AI_DEBUG_MATCH_CASE :{BLACK}Groß/Klein beachten STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Festlegen, ob bei der Suche auf Groß- und Kleinschreibung geachtet werden soll STR_AI_DEBUG_CONTINUE :{BLACK}Fortfahren STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Pause aufheben und die KI weiter ausführen STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Debug-Ausgabe dieser KI anzeigen STR_AI_GAME_SCRIPT :{BLACK}Skript STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Überprüfe die Aufzeichnungen des Skripts STR_ERROR_AI_NO_AI_FOUND :Keine passende KI gefunden.{}Diese KI ist ein Platzhalter und wird nichts tun.{}KIs können im Hauptmenü als Erweiterung heruntergeladen werden STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Eine der laufenden KIs oder ein Skript ist abgestürzt. Der Fehler sollte dem Autor der KI oder des Skripts mittels eines Screenshots vom Debug-Fenster unter Angabe der OpenTTD- Version und der KI- bzw. Skript-Versionsnummer gemeldet werden. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Debugfenster für KI oder Skripte ist nur auf dem Server verfügbar # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}KI / Skripte einstellen STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Das Skript, das im nächsten Spiel geladen wird STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Die KIs, die im nächsten Spiel geladen werden STR_AI_CONFIG_HUMAN_PLAYER :menschlicher Spieler STR_AI_CONFIG_RANDOM_AI :Zufällige KI STR_AI_CONFIG_NONE :- STR_AI_CONFIG_MOVE_UP :{BLACK}Nach oben bewegen STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Die ausgewählte KI in der Liste nach oben bewegen STR_AI_CONFIG_MOVE_DOWN :{BLACK}Nach unten bewegen STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Die ausgewählte KI in der Liste nach unten bewegen STR_AI_CONFIG_GAMESCRIPT :{SILVER}Skript STR_AI_CONFIG_AI :{SILVER}KIs STR_AI_CONFIG_CHANGE :{BLACK}Wähle {STRING} aus STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :KI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Skript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Lade ein anderes Skript STR_AI_CONFIG_CONFIGURE :{BLACK}Einstellungen STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Einstellungen des Skripts anzeigen oder ändern # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Verfügbare {STRING} STR_AI_LIST_CAPTION_AI :KIs STR_AI_LIST_CAPTION_GAMESCRIPT :Skripte STR_AI_LIST_TOOLTIP :{BLACK}Klicken, um ein Skript auszuwählen STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Version: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Anwenden STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Ausgewähltes Skript verwenden STR_AI_LIST_CANCEL :{BLACK}Abbrechen STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Skript nicht wechseln # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameter STR_AI_SETTINGS_CAPTION_AI :KI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Skript STR_AI_SETTINGS_CLOSE :{BLACK}Schließen STR_AI_SETTINGS_RESET :{BLACK}Zurücksetzen STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Wartezeit in Tagen zwischen dem Starten dieser KI und dem der vorherigen : {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}-Liesmich von {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} Änderungen von {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}-Lizenz von {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Liesmich anzeigen STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Änderungen STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lizenz # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kosten: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kosten: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Einnahmen: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Einnahmen: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Umladen: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Umladen: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Geschätzte Kosten: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Geschätzte Einnahmen: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Speichern läuft,{}bitte warten, bis es beendet ist! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosicherung fehlgeschlagen STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Laufwerk nicht betriebsbereit STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spielspeicherung fehlgeschlagen{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datei kann nicht gelöscht werden STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden des Spieles fehlgeschlagen{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interner Fehler: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Spielstandsdatei defekt - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spielstand wurde mit neuerer Version erstellt STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Datei kann nicht gelesen werden STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Datei kann nicht geschrieben werden STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Prüfung der Datenintegrität fehlgeschlagen STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spiel wurde in einer Version ohne Straßenbahnunterstützung gespeichert. Alle Straßenbahnen wurden entfernt # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Spielfeldgenerierung wurde abgebrochen...{}... kein geeigneter Platz für eine Stadt gefunden STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... in diesem Szenario gibt es keine Stadt STR_ERROR_PNGMAP :{WHITE}Landschaft kann nicht aus PNG-Datei geladen werden... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... Datei nicht gefunden STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... Bildtyp kann nicht umgewandelt werden. 8- oder 24-bit-PNG-Datei erforderlich STR_ERROR_PNGMAP_MISC :{WHITE}... irgendetwas ging schief. (Vielleicht eine kaputte Datei?) STR_ERROR_BMPMAP :{WHITE}Landschaft kann nicht aus BMP-Datei geladen werden... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... Bildtyp kann nicht umgewandelt werden STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... Bild ist zu groß STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skalierungswarnung STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Zu starke Skalierung der Karte wird nicht empfohlen. Generierung dennoch fortsetzen? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Nur ein leeres Platzhalter-Soundset wurde gefunden. Soundsets können bei Bedarf als Erweiterung heruntergeladen werden (siehe Hauptmenü) # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Riesiger Screenshot STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Der Screenshot wird die Auflösung von {COMMA} x {COMMA} Pixeln haben. Das kann einige Zeit dauern. Soll fortgefahren werden? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot gespeichert als '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot fehlgeschlagen # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Nachricht STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Nachricht von {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Zu weit vom Spielfeldrand entfernt STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Zu nahe am Spielfeldrand STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nicht genug Geld - Es werden {CURRENCY_LONG} benötigt STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Ebenes Land erforderlich STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Das Land neigt sich in die falsche Richtung STR_ERROR_CAN_T_DO_THIS :{WHITE}Befehl nicht ausführbar... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebäude muss erst abgerissen werden STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Gebiet kann nicht geräumt werden... STR_ERROR_SITE_UNSUITABLE :{WHITE}... ungeeigneter Standort STR_ERROR_ALREADY_BUILT :{WHITE}... ist bereits gebaut STR_ERROR_OWNED_BY :{WHITE}... Eigentum von {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... das Gebiet gehört einer anderen Firma STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... Obergrenze für Landschaftsbau erreicht STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... Obergrenze für Abrissarbeiten erreicht STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... Obergrenze für Baumpflanzungen erreicht STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Name bereits vergeben STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} im Weg STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nicht erlaubt, während das Spiel angehalten ist # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Die Stadtverwaltung von {TOWN} verweigert die Genehmigung STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Die Stadtverwaltung von {TOWN} verweigert die Genehmigung für den Bau eines weiteren Flughafens in der Stadt STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Die Stadtverwaltung von {TOWN} verweigert aus Lärmschutzgründen den Bau des Flughafens STR_ERROR_BRIBE_FAILED :{WHITE}Der Bestechungsversuch wurde von einem Ermittler entdeckt. # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Land kann nicht angehoben werden... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Land kann nicht abgesenkt werden... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Land kann nicht eingeebnet werden... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Die Ausschachtung würde den Tunnel zerstören STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ist bereits auf Meereshöhe STR_ERROR_TOO_HIGH :{WHITE}... zu hoch STR_ERROR_ALREADY_LEVELLED :{WHITE}... ist schon flach # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Firmenname kann nicht geändert werden... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Managername kann nicht geändert werden... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maximale Kredithöhe beträgt {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Weitere Kreditaufnahme nicht möglich ... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... Kredit bereits getilgt STR_ERROR_CURRENCY_REQUIRED :{WHITE}... erfordert {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kredit kann nicht getilgt werden... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Von der Bank geliehenes Geld kann nicht abgegeben werden... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Firmenkauf nicht möglich... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Firmensitz kann nicht gebaut werden ... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kauf von 25% der Aktien dieser Firma nicht möglich... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Verkauf von 25% der Aktien dieser Firma nicht möglich... STR_ERROR_PROTECTED :{WHITE}Diese Firma ist noch nicht alt genug, um an der Börse gehandelt zu werden... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Bau von Städten unmöglich STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Die Stadt kann nicht umbenannt werden... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Stadt kann hier nicht gegründet werden... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Stadt kann nicht vergrößert werden... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... zu dicht am Spielfeldrand STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... zu dicht an einer anderen Stadt STR_ERROR_TOO_MANY_TOWNS :{WHITE}... zu viele Städte STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... es ist kein Platz mehr auf dem Spielfeld STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Städte bauen im Moment keine Straßen. Städtischer Straßenbau kann mittels Erweiterte Einstellungen->Wirtschaft->Städte eingestellt werden STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Straßenarbeiten sind im Gange STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Stadt kann nicht gelöscht werden...{}Eine Station oder ein Depot bezieht sich auf diese Stadt oder ein Feld im städtischen Besitz kann nicht entfernt werden. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... es gibt keinen geeigneten Standort für die Statue im Zentrum dieser Stadt # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... zu viele Industrien STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Industrie kann nicht erzeugt werden... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}{STRING} kann hier nicht gebaut werden... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Industrie kann hier nicht gebaut werden... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... zu nah an einer anderen Industrie STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... erst muss eine Stadt gegründet werden STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... pro Stadt nur einmal erlaubt STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kann nur in Städten mit mehr als 1200 Einwohnern gebaut werden STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kann nur in Regenwaldgebieten errichtet werden STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kann nur in Wüstengebieten errichtet werden STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kann nur in Städten gebaut werden (muss Häuser ersetzen) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kann nur in der Nähe des Stadtzentrums gebaut werden STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kann nur im Tiefland gebaut werden STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kann nur in der Nähe des Spielfeldrandes errichtet werden STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... Wald kann nur oberhalb der Schneegrenze gepflanzt werden STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kann nur oberhalb der Schneegrenze errichtet werden STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kann nur unterhalb der Schneegrenze errichtet werden # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Bahnhof kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Bushaltestelle kann nicht gebaut werden... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Lkw-Ladeplatz kann nicht gebaut werden... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Straßenbahnhaltestelle kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Güterverladestelle kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Hafen kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Flughafen kann hier nicht gebaut werden... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenzt an mehr als eine vorhandene Station STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}...Station ist zu groß STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Zu viele Stationen im Umkreis STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Zu viele Bahnsteigteile STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Zu viele Bushaltestellen STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Zu viele Lkw-Ladeplätze STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Stationen liegen zu dicht beisammen STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Zu dicht an einem anderen Hafen STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Zu dicht an einem anderen Flughafen STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Station kann nicht umbenannt werden... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... diese Straße ist in kommunaler Trägerschaft STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... Straße verläuft in die falsche Richtung STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... Bus- und Lkw-Haltestellen können nicht um die Kurve gehen STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... Bus- und Lkw-Haltestellen können keine Abzweigung haben # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Dieser Teil der Station kann nicht entfernt werden... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Bahnhof muss erst abgerissen werden STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Bushaltestelle kann nicht entfernt werden... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}LKW-Ladestelle kann nicht entfernt werden... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Straßenbahnhaltestelle kann nicht entfernt werden... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Güterverladestelle kann nicht entfernt werden... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Haltestelle muss erst entfernt werden STR_ERROR_THERE_IS_NO_STATION :{WHITE}...hier ist keine Station STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Bahnhof muss erst abgerissen werden STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Bushaltestelle muss erst abgerissen werden STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Lkw-Ladeplatz muss erst abgerissen werden STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Straßenbahnhaltestelle muss vorher abgerissen werden STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Güterverladestelle muss vorher abgerissen werden STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Hafen muss erst entfernt werden STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Flughafen muss erst abgerissen werden # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenzt an mehr als einen vorhandenen Wegpunkt STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Zu nahe an einem anderen Wegpunkt STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Wegpunkt kann hier nicht gebaut werden... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Boje kann hier nicht platziert werden... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Wegpunktname kann nicht geändert werden... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Wegpunkt kann hier nicht entfernt werden... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Wegpunkt muss erst abgerissen werden STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... Boje ist im Weg STR_ERROR_BUOY_IS_IN_USE :{WHITE}... Boje wird von einer anderen Firma benutzt! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Zugdepot kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Fahrzeugdepot kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Straßenbahndepot kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Werft kann hier nicht gebaut werden... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Depot kann nicht umbenannt werden... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}...der Zug muss dazu im Depot halten STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}...das Straßenfahrzeug muss dazu in einem Depot halten STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}...das Schiff muss dazu in der Werft halten STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}...das Flugzeug muss dazu im Hangar halten STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Züge können nur verändert werden, wenn sie im Depot halten STR_ERROR_TRAIN_TOO_LONG :{WHITE}Zug zu lang STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Fahrzeug kann nicht umgedreht werden... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Fahrzeuge, die aus mehreren Einheiten bestehen, können nicht umgedreht werden STR_ERROR_INCOMPATIBLE_RAIL_TYPES :inkompatible Gleistypen STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Fahrzeug kann nicht bewegt werden... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Hintere Lok folgt immer der vorderen Lok STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Weg zum Depot kann nicht gefunden werden STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Fahrzeugdepot unauffindbar STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Falscher Depottyp # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} ist nach Ersetzung zu lang STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Es treffen keine Ersetzungs-/Erneuerungsregeln zu STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(Geld fehlt) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Unmögliche Gleisverbindung STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Signal muß zuerst entfernt werden STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Keine geeigneten Gleise STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Gleise müssen erst abgerissen werden STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Einbahnstraße oder blockierter Weg STR_ERROR_CROSSING_DISALLOWED :{WHITE}Bahnübergänge sind für diesen Schienentyp nicht erlaubt STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Signal kann hier nicht aufgestellt werden... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Gleise können hier nicht verlegt werden... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Gleise können nicht abgerissen werden... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Signale können hier nicht entfernt werden... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kann Signaltyp hier nicht ändern... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... hier ist kein Gleis STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... hier sind keine Signale STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Gleistyp kann hier nicht geändert werden... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Straße muss erst entfernt werden STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... Einbahnstraßen können keine Abzweigung haben STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Straße kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Straßenbahngleise können hier nicht gebaut werden... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Diese Straße kann nicht entfernt werden... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Straßenbahngleise können hier nicht entfernt werden... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...hier ist keine Straße STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...hier ist kein Straßenbahngleis # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kanal kann hier nicht gebaut werden... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Schleuse kann hier nicht gebaut werden... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Flüsse können hier nicht platziert werden... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... muss auf Wasser gebaut werden STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... kann nicht auf Wasser gebaut werden STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kann nicht auf offener See errichtet werden STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kann nicht auf Kanal errichtet werden STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kann nicht auf Fluß errichtet werden STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Kanal muss erst abgerissen werden STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Aquädukt kann hier nicht gebaut werden... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... hier sind bereits Bäume STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... falsches Gelände für die Baumart STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Baum kann hier nicht gepflanzt werden... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Brücke kann hier nicht gebaut werden... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Die Brücke muss erst abgerissen werden STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Anfang und Ende können nicht im selben Feld liegen STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brückenköpfe nicht auf der selben Höhe STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Die Brücke ist zu niedrig für diese Umgebung STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Anfang und Ende müssen auf einer Linie liegen STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... Brücke muss an beiden Seiten auf Land enden STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... Brücke zu lang STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Die Brücke würde außerhalb der Karte enden # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tunnel kann hier nicht gebaut werden... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Platz ist nicht für einen Tunnel geeignet STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Der Tunnel muss zuerst abgerissen werden STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Ein anderer Tunnel ist im Weg STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunnel würde außerhalb des Spielfelds enden STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Gebiet am anderen Ende des Tunnels kann nicht geebnet werden STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... Tunnel zu lang # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... zu viele Objekte STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Objekt kann nicht gebaut werden... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Gegenstand im Weg STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... Firmensitz ist im Weg STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Das Land kann nicht erworben werden... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ist bereits im Besitz der eigenen Firma! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Gruppe kann nicht erstellt werden... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Gruppe kann nicht gelöscht werden... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Gruppe kann nicht umbenannt werden... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Entfernen aller Fahrzeuge dieser Gruppe nicht möglich... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Fahrzeug kann nicht zu dieser Gruppe hinzugefügt werden... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Fahrzeuge mit gemeinsamen Fahrplan können nicht zur Gruppe hinzugefügt werden... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Zug ist im Weg STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Fahrzeug ist im Weg STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Schiff ist im Weg STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Flugzeug ist auf dem Weg STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Zug kann nicht umgerüstet werden... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Straßenfahrzeug kann nicht umgerüstet werden... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Schiff kann nicht umgerüstet werden... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Flugzeug kann nicht umgerüstet werden... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Zug kann nicht benannt werden... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Fahrzeug kann nicht benannt werden... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Schiff kann nicht benannt werden... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Flugzeug kann nicht benannt werden... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Zug kann nicht angehalten {} oder losgeschickt werden ... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Fahrzeug kann nicht angehalten {} oder losgeschickt werden... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Schiff kann nicht angehalten {} oder losgeschickt werden... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Flugzeug kann nicht angehalten {} oder losgeschickt werden... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Zug kann nicht ins Depot geschickt werden... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Fahrzeug kann nicht ins Depot geschickt werden... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Schiff kann nicht in die Werft geschickt werden... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Flugzeug kann nicht in den Hangar geschickt werden... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Schienenfahrzeug kann nicht gekauft werden... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Fahrzeug kann nicht gekauft werden... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Schiff kann nicht gekauft werden... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Flugzeug kann nicht gekauft werden... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Zugtyp kann nicht umbenannt werden... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Fahrzeug kann nicht umbenannt werden... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Schiffstyp kann nicht umbenannt werden... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Flugzeug kann nicht umbenannt werden... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Schienenfahrzeug kann nicht verkauft werden... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Fahrzeug kann nicht verkauft werden... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Schiff kann nicht verkauft werden... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Flugzeug kann nicht verkauft werden... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Fahrzeug nicht verfügbar STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Fahrzeug nicht verfügbar STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Schiff nicht verfügbar STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Flugzeug nicht verfügbar STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Zu viele Fahrzeuge im Spiel STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Das Wartungsintervall kann nicht geändert werden... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... Fahrzeug ist zerstört STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Es sind keine Fahrzeuge verfügbar! STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Bitte die NewGRF-Einstellungen ändern, damit Fahrzeuge früher verfügbar sind STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Noch keine Fahrzeuge verfügbar STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Ein neues Spiel nach {DATE_SHORT} beginnen oder ein NewGRF-Fahrzeugset mit früher verfügbaren Fahrzeugen verwenden # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Der Zug kann das Signal nicht gefahrlos passieren... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Die Zugbewegung kann nicht umgekehrt werden... STR_ERROR_TRAIN_START_NO_POWER :Der Zug hat keine Antriebsenergie STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Das Fahrzeug kann nicht wenden... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Das Flugzeug ist in der Luft # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Kein Platz für weitere Aufträge STR_ERROR_TOO_MANY_ORDERS :{WHITE}Zu viele Aufträge STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Neuer Auftrag kann nicht hinzugefügt werden... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Auftrag kann nicht gelöscht werden... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Auftrag kann nicht bearbeitet werden... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Auftrag kann nicht verschoben werden... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Auftrag kann nicht ausgelassen werden... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Springen zum ausgewählten Auftrag nicht möglich... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... Fahrzeug kann nicht alle Stationen erreichen STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... Fahrzeug kann diese Station nicht erreichen STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ein Fahrzeug, welches diesen gemeinsamen Fahrplan nutzt, kann die Station nicht erreichen STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Fehler beim Erstellen eines gemeinsam genutzten Fahrplans... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Gemeinsame Aufträge können nicht aufgehoben werden... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Fahrplan kann nicht kopiert werden... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... zu weit vom vorherigen Bestimmungsort entfernt STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... Luftfahrzeug hat zu geringe Reichweite # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Fahrplan kann nicht erstellt werden... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Fahrzeuge halten nur an Stationen STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Das Fahrzeug hält nicht an dieser Station # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... zu viele Schilder STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Schild kann hier nicht aufgestellt werden... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Schildtext kann nicht geändert werden... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kann Schild nicht löschen... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Ein auf der Idee von Transport Tycoon Deluxe basierendes Spiel # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS Basisgrafiken. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (Deutsch) Basisgrafiken. STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Basisgrafiken. STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS Basissounds. STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Basissounds. STR_BASESOUNDS_NONE_DESCRIPTION :Basissounds ohne Sound. STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Musikset. STR_BASEMUSIC_NONE_DESCRIPTION :Ein Musikset ohne Musik. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Hohes Geschäftshaus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Geschäftshaus STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Kleines Wohnhaus STR_TOWN_BUILDING_NAME_CHURCH_1 :Kirche STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Großes Geschäftshaus STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Stadthaus STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Statue STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Springbrunnen STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Geschäftshaus STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Läden und Büros STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modernes Geschäftshaus STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Kaufhaus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Geschäftshaus STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Alte Häuser STR_TOWN_BUILDING_NAME_COTTAGES_1 :Landhaus STR_TOWN_BUILDING_NAME_HOUSES_1 :Haus STR_TOWN_BUILDING_NAME_FLATS_1 :Wohnhaus STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Geschäftshochhaus STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Läden und Büros STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Läden und Büros STR_TOWN_BUILDING_NAME_THEATER_1 :Theater STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Büros STR_TOWN_BUILDING_NAME_HOUSES_2 :Häuser STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Einkaufszentrum STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu STR_TOWN_BUILDING_NAME_TEPEES_1 :Zelt STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Teekannenhaus STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Sparschwein ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=n}Kohlebergwerk STR_INDUSTRY_NAME_POWER_STATION :{G=n}Kraftwerk STR_INDUSTRY_NAME_SAWMILL :{G=n}Sägewerk STR_INDUSTRY_NAME_FOREST :{G=m}Wald STR_INDUSTRY_NAME_OIL_REFINERY :{G=w}Ölraffinerie STR_INDUSTRY_NAME_OIL_RIG :{G=w}Ölbohrinsel STR_INDUSTRY_NAME_FACTORY :{G=w}Fabrik STR_INDUSTRY_NAME_PRINTING_WORKS :{G=w}Druckerei STR_INDUSTRY_NAME_STEEL_MILL :{G=n}Stahlwalzwerk STR_INDUSTRY_NAME_FARM :{G=m}Bauernhof STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=n}Kupfererzbergwerk STR_INDUSTRY_NAME_OIL_WELLS :{G=p}Ölquellen STR_INDUSTRY_NAME_BANK :{G=w}Bank STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=w}Nahrungsmittelfabrik STR_INDUSTRY_NAME_PAPER_MILL :{G=w}Papiermühle STR_INDUSTRY_NAME_GOLD_MINE :{G=w}Goldmine STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=w}Bank STR_INDUSTRY_NAME_DIAMOND_MINE :{G=w}Diamantenmine STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=n}Eisenerzbergwerk STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=w}Fruchtplantage STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=w}Kautschukplantage STR_INDUSTRY_NAME_WATER_SUPPLY :{G=w}Wasserquelle STR_INDUSTRY_NAME_WATER_TOWER :{G=m}Wasserturm STR_INDUSTRY_NAME_FACTORY_2 :{G=w}Fabrik STR_INDUSTRY_NAME_FARM_2 :{G=m}Bauernhof STR_INDUSTRY_NAME_LUMBER_MILL :{G=w}Sägemühle STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Zuckerwattewald STR_INDUSTRY_NAME_CANDY_FACTORY :{G=w}Bonbonfabrik STR_INDUSTRY_NAME_BATTERY_FARM :{G=w}Batterieplantage STR_INDUSTRY_NAME_COLA_WELLS :{G=p}Colaquellen STR_INDUSTRY_NAME_TOY_SHOP :{G=n}Spielwarengeschäft STR_INDUSTRY_NAME_TOY_FACTORY :{G=w}Spielwarenfabrik STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=m}Plastikbrunnen STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=w}Limonadenfabrik STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Luftblasengenerator STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=w}Karamellgrube STR_INDUSTRY_NAME_SUGAR_MINE :{G=w}Zuckermine ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Unbenannt STR_SV_TRAIN_NAME :Zug {COMMA} STR_SV_ROAD_VEHICLE_NAME :Straßenfahrzeug {COMMA} STR_SV_SHIP_NAME :Schiff {COMMA} STR_SV_AIRCRAFT_NAME :Flugzeug {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Nord STR_SV_STNAME_SOUTH :{STRING} Süd STR_SV_STNAME_EAST :{STRING} Ost STR_SV_STNAME_WEST :{STRING} West STR_SV_STNAME_CENTRAL :{STRING} Zentrum STR_SV_STNAME_TRANSFER :{STRING} Transfer STR_SV_STNAME_HALT :{STRING} Haltepunkt STR_SV_STNAME_VALLEY :{STRING} Tal STR_SV_STNAME_HEIGHTS :{STRING} Höhe STR_SV_STNAME_WOODS :{STRING} Waldrand STR_SV_STNAME_LAKESIDE :{STRING} Seeblick STR_SV_STNAME_EXCHANGE :{STRING} Abzweigung STR_SV_STNAME_AIRPORT :{STRING} Flughafen STR_SV_STNAME_OILFIELD :{STRING} Ölfeld STR_SV_STNAME_MINES :{STRING} Mine STR_SV_STNAME_DOCKS :{STRING} Hafen STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Anbau STR_SV_STNAME_SIDINGS :{STRING} Nebengleis STR_SV_STNAME_BRANCH :{STRING} Abzweig STR_SV_STNAME_UPPER :Ober-{STRING} STR_SV_STNAME_LOWER :Unter-{STRING} STR_SV_STNAME_HELIPORT :{STRING} Landeplatz STR_SV_STNAME_FOREST :{STRING} Wald STR_SV_STNAME_FALLBACK :{STRING} Station #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Dampf) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Dampf) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Dampf) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Dampf) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Dampf) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel VT (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektrisch) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passagierwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kohlenwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Öltanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Viehtransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Güterwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Getreidetransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Holzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Eisenerzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stahltransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Sicherheitstransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Lebensmitteltransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papiertransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kupfererzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Wassertanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruchttransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Kautschukwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Zuckertransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Zuckerwattewaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karamellwaggon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Luftblasentransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colatanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Bonbontransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Spielzeugtransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterietransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Limonadentransporter STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastiktransporter STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passagierwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kohlewaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Öltanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Viehtransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Güterwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Getreidewaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Holzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Eisenerzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stahltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Sicherheitstransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Lebensmitteltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papiertransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kupfererzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Wassertanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruchttransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Kautschuktransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Zuckertransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Zuckerwattewaggon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karamelltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Luftblasentransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colatransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Bonbontransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Spielwarentransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batterietransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Limonadetransporter STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastikwaggon STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (elektrisch) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passagierwaggon (Magnetschwebebahn) STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kohlewaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Öltanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Viehtransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Güterwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Getreidetransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Holzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Eisenerzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stahltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Sicherheitstransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Lebensmitteltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papiertransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kupfererzwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Wassertanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruchttransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Kautschukwaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Zuckertransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Zuckerwattewaggon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karamelltransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Luftblasentransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colatransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Bonbontransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Spielwarentransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batterielaster STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Limonadetransporter STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikwaggon STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kohlelaster STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kohlelaster STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kohlelaster STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Öltanker STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Öltanker STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Öltanker STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Viehtransporter STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Viehtransporter STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Viehtransporter STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Gütertransporter STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Gütertransporter STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Gütertransporter STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Getreidetransporter STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Getreidetransporter STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Getreidetransporter STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Holzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Holzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Holzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Eisenerzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Eisenerzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Eisenerzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Stahltransporter STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Stahltransporter STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Stahltransporter STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Sicherheitstransporter STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Sicherheitstransporter STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Sicherheitstransporter STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Nahrungstransporter STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Nahrungstransporter STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Nahrungstransporter STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Papierlaster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Papierlaster STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Papierlaster STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Kupfererzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Kupfererzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Kupfererzlaster STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Wassertankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Wassertankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Wassertankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Früchtetransporter STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Früchtetransporter STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Früchtetransporter STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Kautschuklaster STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Kautschuklaster STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Kautschuklaster STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Zuckertransporter STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Zuckertransporter STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Zuckertransporter STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Cola-Tankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Cola-Tankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Cola-Tankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Zuckerwattelaster STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Zuckerwattelaster STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Zuckerwattelaster STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Karamelllaster STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Karamelllaster STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Karamelllaster STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Spielwarentransporter STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Spielwarentransporter STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Spielwarentransporter STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Bonbontransporter STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Bonbontransporter STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Bonbontransporter STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Batterielaster STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Batterielaster STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Batterielaster STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Limonadentanker STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Limonadentanker STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Limonadentanker STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastiktransporter STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastiktransporter STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastiktransporter STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Luftblasenlaster STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Luftblasenlaster STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Luftblasenlaster STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Öltanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Öltanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passagierschiff STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passagierschiff STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Luftkissenboot STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passagierschiff STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagierschiff STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Frachter STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Frachter STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Frachter STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Frachter STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Hubschrauber STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Hubschrauber STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Hubschrauber ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Boje STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boje #{COMMA} STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) STR_FORMAT_GROUP_NAME :Gruppe {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Wegpunkt {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Wegpunkt {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Zugdepot STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Zugdepot #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Straßenfahrzeug - Depot STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Straßenfahrzeug - Depot #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Werft STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Werft #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :unbekannte Station STR_DEFAULT_SIGN_NAME :Schild STR_COMPANY_SOMEONE :Jemand STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Zuschauer, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/norwegian_nynorsk.txt0000644000000000000000000135213312246102561017725 0ustar rootroot##name Norwegian (Nynorsk) ##ownname Norsk (nynorsk) ##isocode nn_NO ##plural 0 ##textdir ltr ##digitsep {NBSP} ##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0814 ##grflangid 0x0e ##gender masculine feminine neuter ##case small # $Id: norwegian_nynorsk.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(udefinert streng) STR_JUST_NOTHING :Ingenting # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Passasjerar STR_CARGO_PLURAL_COAL :Kol STR_CARGO_PLURAL_MAIL :Post STR_CARGO_PLURAL_OIL :Olje STR_CARGO_PLURAL_LIVESTOCK :Buskap STR_CARGO_PLURAL_GOODS :Gods STR_CARGO_PLURAL_GRAIN :Korn STR_CARGO_PLURAL_WOOD :Tømmer STR_CARGO_PLURAL_IRON_ORE :Jarnmalm STR_CARGO_PLURAL_STEEL :Stål STR_CARGO_PLURAL_VALUABLES :Verdisaker STR_CARGO_PLURAL_COPPER_ORE :Koparmalm STR_CARGO_PLURAL_MAIZE :Mais STR_CARGO_PLURAL_FRUIT :Frukt STR_CARGO_PLURAL_DIAMONDS :Diamantar STR_CARGO_PLURAL_FOOD :Mat STR_CARGO_PLURAL_PAPER :Papir STR_CARGO_PLURAL_GOLD :Gull STR_CARGO_PLURAL_WATER :Vatn STR_CARGO_PLURAL_WHEAT :Kveite STR_CARGO_PLURAL_RUBBER :Gummi STR_CARGO_PLURAL_SUGAR :Sukker STR_CARGO_PLURAL_TOYS :Leiketøy STR_CARGO_PLURAL_CANDY :Godteri STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COTTON_CANDY :Sukkerspinn STR_CARGO_PLURAL_BUBBLES :Bobler STR_CARGO_PLURAL_TOFFEE :Karamell STR_CARGO_PLURAL_BATTERIES :Batteri STR_CARGO_PLURAL_PLASTIC :Plastikk STR_CARGO_PLURAL_FIZZY_DRINKS :Brus # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Passasjer STR_CARGO_SINGULAR_COAL :Kol STR_CARGO_SINGULAR_MAIL :Post STR_CARGO_SINGULAR_OIL :Olje STR_CARGO_SINGULAR_LIVESTOCK :Buskap STR_CARGO_SINGULAR_GOODS :Gods STR_CARGO_SINGULAR_GRAIN :Korn STR_CARGO_SINGULAR_WOOD :Tømmer STR_CARGO_SINGULAR_IRON_ORE :Jarnmalm STR_CARGO_SINGULAR_STEEL :Stål STR_CARGO_SINGULAR_VALUABLES :Verdisaker STR_CARGO_SINGULAR_COPPER_ORE :Koparmalm STR_CARGO_SINGULAR_MAIZE :Mais STR_CARGO_SINGULAR_FRUIT :Frukt STR_CARGO_SINGULAR_DIAMOND :Diamant STR_CARGO_SINGULAR_FOOD :Mat STR_CARGO_SINGULAR_PAPER :Papir STR_CARGO_SINGULAR_GOLD :Gull STR_CARGO_SINGULAR_WATER :Vatn STR_CARGO_SINGULAR_WHEAT :Kveite STR_CARGO_SINGULAR_RUBBER :Gummi STR_CARGO_SINGULAR_SUGAR :Sukker STR_CARGO_SINGULAR_TOY :Leiketøy STR_CARGO_SINGULAR_CANDY :Godteri STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COTTON_CANDY :Sukkerspinn STR_CARGO_SINGULAR_BUBBLE :Boble STR_CARGO_SINGULAR_TOFFEE :Karamell STR_CARGO_SINGULAR_BATTERY :Batteri STR_CARGO_SINGULAR_PLASTIC :Plastikk STR_CARGO_SINGULAR_FIZZY_DRINK :Brus # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} passasjer{P "" ar} STR_QUANTITY_COAL :{WEIGHT_LONG} kol STR_QUANTITY_MAIL :{COMMA} postsekk{P "" er} STR_QUANTITY_OIL :{VOLUME_LONG} olje STR_QUANTITY_LIVESTOCK :{COMMA} eining{P "" ar} buskap STR_QUANTITY_GOODS :{COMMA} kasse{P "" r} gods STR_QUANTITY_GRAIN :{WEIGHT_LONG} korn STR_QUANTITY_WOOD :{WEIGHT_LONG} tømmer STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} jernmalm STR_QUANTITY_STEEL :{WEIGHT_LONG} stål STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" er} med verdisaker STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} koparmalm STR_QUANTITY_MAIZE :{WEIGHT_LONG} mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} frukt STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" er} med diamantar STR_QUANTITY_FOOD :{WEIGHT_LONG} mat STR_QUANTITY_PAPER :{WEIGHT_LONG} papir STR_QUANTITY_GOLD :{COMMA} sekk{P "" er} med gull STR_QUANTITY_WATER :{VOLUME_LONG} vatn STR_QUANTITY_WHEAT :{WEIGHT_LONG} kveite STR_QUANTITY_RUBBER :{VOLUME_LONG} gummi STR_QUANTITY_SUGAR :{WEIGHT_LONG} sukker STR_QUANTITY_TOYS :{COMMA} leike{P "" r} STR_QUANTITY_SWEETS :{COMMA} sekk{P "" er} med godteri STR_QUANTITY_COLA :{VOLUME_LONG} cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sukkerspinn STR_QUANTITY_BUBBLES :{COMMA} boble{P "" r} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} karamell STR_QUANTITY_BATTERIES :{COMMA} batteri STR_QUANTITY_PLASTIC :{VOLUME_LONG} plast STR_QUANTITY_FIZZY_DRINKS :{COMMA} brus STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}KL STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}BS STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}KN STR_ABBREV_WOOD :{TINY_FONT}TR STR_ABBREV_IRON_ORE :{TINY_FONT}JM STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VS STR_ABBREV_COPPER_ORE :{TINY_FONT}KM STR_ABBREV_MAIZE :{TINY_FONT}MS STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}MT STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GL STR_ABBREV_WATER :{TINY_FONT}VN STR_ABBREV_WHEAT :{TINY_FONT}KV STR_ABBREV_RUBBER :{TINY_FONT}GM STR_ABBREV_SUGAR :{TINY_FONT}SK STR_ABBREV_TOYS :{TINY_FONT}LT STR_ABBREV_SWEETS :{TINY_FONT}GT STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}SP STR_ABBREV_BUBBLES :{TINY_FONT}BO STR_ABBREV_TOFFEE :{TINY_FONT}KM STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}MV STR_ABBREV_NONE :{TINY_FONT}IN STR_ABBREV_ALL :{TINY_FONT}ALLE # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} passasjer{P "" ar} STR_BAGS :{COMMA} sekk{P "" er} STR_TONS :{COMMA} tonn STR_LITERS :{COMMA} liter STR_ITEMS :{COMMA} eining{P "" ar} STR_CRATES :{COMMA} kasse{P "" r} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Mørkeblå STR_COLOUR_PALE_GREEN :Lysegrøn STR_COLOUR_PINK :Rosa STR_COLOUR_YELLOW :Gul STR_COLOUR_RED :Raud STR_COLOUR_LIGHT_BLUE :Lyseblå STR_COLOUR_GREEN :Grøn STR_COLOUR_DARK_GREEN :Mørkegrøn STR_COLOUR_BLUE :Blå STR_COLOUR_CREAM :Kremgul STR_COLOUR_MAUVE :Raudlilla STR_COLOUR_PURPLE :Lilla STR_COLOUR_ORANGE :Oransje STR_COLOUR_BROWN :Brun STR_COLOUR_GREY :Grå STR_COLOUR_WHITE :Kvit # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mi/t STR_UNITS_VELOCITY_METRIC :{COMMA} km/t STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA} hk STR_UNITS_POWER_METRIC :{COMMA} hk STR_UNITS_POWER_SI :{COMMA} kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fot STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Søkefilter: STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn søkefilter STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv eit nøkkelord for filtrering av lista STR_TOOLTIP_SORT_ORDER :{BLACK}Vel sorteringsrekkefølgje (søkkande/stigande) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vel sorteringskriterium STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vel filtreringskriterium STR_BUTTON_SORT_BY :{BLACK}Sorter etter STR_BUTTON_LOCATION :{BLACK}Stad STR_BUTTON_RENAME :{BLACK}Gje nytt namn STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lukk vindauge STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tittel på vindauget - dra for å flytte vindauget STR_TOOLTIP_SHADE :{BLACK}Minimer vindauget - syn kun tittelfeltet STR_TOOLTIP_DEBUG :{BLACK}Syn NewGRF-debuggingsinformasjon STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vindauget mot 'Lukk alle vindauge'-knappen STR_TOOLTIP_RESIZE :{BLACK}Klikk og dra for å endre storleiken på vindauget STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Byt mellom stor/liten storleik på vindauga STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - blar lista opp/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - blar lista til venstre/høgre STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygningar o.a. i eit firkanta område. Ctrl vel området diagonalt. Shift syner estimert rivingskostnad # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Avbryt STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :|1234567890+\qwertyuiopå¨asdfghjkløæ'? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lengde: {NUM} STR_MEASURE_AREA :{BLACK}Område: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lengde: {NUM}{}Høgdeskilnad: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Område: {NUM} x {NUM}{}Høgdeskilnad: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Innbyggjartal STR_SORT_BY_CAPTION_NAME :{BLACK}Namn STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns STR_SORT_BY_NAME :Namn STR_SORT_BY_PRODUCTION :Produksjon STR_SORT_BY_TYPE :Type STR_SORT_BY_TRANSPORTED :Transportert STR_SORT_BY_NUMBER :Nummer STR_SORT_BY_PROFIT_LAST_YEAR :Forteneste i fjor STR_SORT_BY_PROFIT_THIS_YEAR :Forteneste i år STR_SORT_BY_AGE :Alder STR_SORT_BY_RELIABILITY :Pålitelegheit STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total kapasitet per varetype STR_SORT_BY_MAX_SPEED :Maks. hastigheit STR_SORT_BY_MODEL :Modell STR_SORT_BY_VALUE :Verdi STR_SORT_BY_LENGTH :Lengde STR_SORT_BY_LIFE_TIME :Attvarande levetid STR_SORT_BY_TIMETABLE_DELAY :Rutetabellforseining STR_SORT_BY_FACILITY :Stasjonstype STR_SORT_BY_WAITING :Verdien av ventande varer STR_SORT_BY_RATING_MAX :Høgast varevurdering STR_SORT_BY_RATING_MIN :Lågast varevurdering STR_SORT_BY_ENGINE_ID :MaskinID (klassisk type) STR_SORT_BY_COST :Kostnad STR_SORT_BY_POWER :Kraft STR_SORT_BY_TRACTIVE_EFFORT :Trekkraft STR_SORT_BY_INTRO_DATE :Introduksjonsdato STR_SORT_BY_RUNNING_COST :Driftskostnad STR_SORT_BY_POWER_VS_RUNNING_COST :Kraft/Driftskostnad STR_SORT_BY_CARGO_CAPACITY :Varekapasitet STR_SORT_BY_RANGE :Rekkevidde # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Dobbel fart på spelet STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Instillingar STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lagre, avbryt spel, avslutt OpenTTD STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Syne kart, ekstra tilleggsvindauge eller skiltliste STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Syne byoversikt STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Syne subsidiar STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Syne liste over stasjonane til firmaet STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Syne firmaenes økonomiske data STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Syne firmaenes generelle data STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Syne grafar STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Syne firmarangeringstabell STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansier bygging av ny industri STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Syne liste over toga til firmaet. CTRL+klikk opnar lista i eit nytt vindauge. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Syne liste over bilane til firmaet STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Syne liste over skipa til firmaet. CTRL+klikk opnar lista i eit nytt vindauge STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Syne liste over luftfartøya til firmaet. CTRL+klikk syner lista i eit nytt vindauge STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zoom inn STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zoom ut STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg vegar STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg kaier STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg flyplassar STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Åpne verktøylinja for å heve/senke land, plante tre, osb. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Syne lyd-/musikkinnstillingar STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Syne siste melding/nyheit, syne meldingsinstillingar STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informasjon om landområde, konsoll, AI-feilsøking, skjermbilete, om OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Byt verkty # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Lagre scenario, last inn scenario, forlat redigeringsprogrammet, avslutt STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenario-redigerar STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flytt startdatoen attende eit år STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flytt startdatoen fram eit år STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikk her for å taste inn startåret STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Syne kart og byoversikt STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskapsgenerering STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygenerering STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrigenerering STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vegbygging STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plant tre. Shift vekslar mellom planting og kostnadsoverslag STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Plasser skilt STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Plasser objekt, Shift vekslar mellom bygging og estimert kostnad ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Lagre scenario STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Last inn scenario STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Lagre høgdekart STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Last inn høgdekart STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Avbryt redigeringsprogram STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Avslutt ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spelinstillingar STR_SETTINGS_MENU_CONFIG_SETTINGS :Avanserte instillingar STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI- / Spelscript-innstillingar STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-innstillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gjennomsiktigheitsinnstillingar STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Syne bynamn STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Syne namn på stasjonar STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Syne kontrollpunktnamn STR_SETTINGS_MENU_SIGNS_DISPLAYED :Syne skilt STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Vis motstandarskilt og -navn STR_SETTINGS_MENU_FULL_ANIMATION :Full animasjon STR_SETTINGS_MENU_FULL_DETAIL :Maks. detaljar STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gjennomsiktige bygningar STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gjennomsiktige skilt ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Lagre spel STR_FILE_MENU_LOAD_GAME :Last inn spel STR_FILE_MENU_QUIT_GAME :Avslutt noverande spel STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Avslutt OpenTTD ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Verdskart STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra tilleggsvindauge STR_MAP_MENU_SIGN_LIST :Skiltliste ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Byoversikt STR_TOWN_MENU_FOUND_TOWN :Grunnlegg by ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidiar STR_SUBSIDIES_MENU_GOAL :Gjeldande mål ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Fortenestegraf STR_GRAPH_MENU_INCOME_GRAPH :Inntektsgraf STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf over leverte varer STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Prestasjonhistorikk STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf over firmaverdi STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Varetakster ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Firmarangeringstabell STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljert prestasjonsnivå STR_GRAPH_MENU_HIGHSCORE :Poengtavle ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Oversikt over industriar STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Næringskjeder STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finansier ny industri ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Bygg jernbane STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Bygg elektrisk jernbane STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Bygg monorail STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Bygg maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Bygg veg STR_ROAD_MENU_TRAM_CONSTRUCTION :Bygg trikkespor ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Bygg vannvegar ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Bygg flyplass ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Landskapsverktøy STR_LANDSCAPING_MENU_PLANT_TREES :Plant tre STR_LANDSCAPING_MENU_PLACE_SIGN :Plasser skilt ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Lyd/musikk ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Siste melding/nyheit STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Tidlegare meldingar ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Informasjon om landområde STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Syne/gøym konsoll STR_ABOUT_MENU_AI_DEBUG :AI- / Spelscriptfeilsøking STR_ABOUT_MENU_SCREENSHOT :Skjermdump STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Fullt forstørra skjermbilete STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Normalt skjermbilete STR_ABOUT_MENU_GIANT_SCREENSHOT :Stort skjermfoto STR_ABOUT_MENU_ABOUT_OPENTTD :Om 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Spriteforskyver STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Syne/gøym markeringsramme STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Slå av/på farging av skitne blokkar ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :jan STR_MONTH_ABBREV_FEB :feb STR_MONTH_ABBREV_MAR :mar STR_MONTH_ABBREV_APR :apr STR_MONTH_ABBREV_MAY :mai STR_MONTH_ABBREV_JUN :jun STR_MONTH_ABBREV_JUL :jul STR_MONTH_ABBREV_AUG :aug STR_MONTH_ABBREV_SEP :sep STR_MONTH_ABBREV_OCT :okt STR_MONTH_ABBREV_NOV :nov STR_MONTH_ABBREV_DEC :des STR_MONTH_JAN :januar STR_MONTH_FEB :februar STR_MONTH_MAR :mars STR_MONTH_APR :april STR_MONTH_MAY :mai STR_MONTH_JUN :juni STR_MONTH_JUL :juli STR_MONTH_AUG :august STR_MONTH_SEP :september STR_MONTH_OCT :oktober STR_MONTH_NOV :november STR_MONTH_DEC :desember ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Nøkkel STR_GRAPH_KEY_TOOLTIP :{BLACK}Syne nøkkel til grafer STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graf over overskot STR_GRAPH_INCOME_CAPTION :{WHITE}Graf over inntekter STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Vareeiningar levert STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Prestasjonsvurdering av firma (maks. poeng=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmaverdi STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Varetakster STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dager i transport STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Betaling for levering av ti einingar (eller 10 000 liter) over ein distanse på 20 ruter STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Syn alle STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Gøym alle STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Syn alle varer på varetakstgrafen STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Gøym alle varer på varetakstgrafen STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Syne/gøym graf for ein bestemd varetype STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Syne detaljerte ytelsesrangeringar # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Nøkkel til firmagraf STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikk her for å syne/gøyme firmaet i grafen # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmarangering STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingeniør STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Trafikkleiar STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transportkoordinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Oppsynsmann STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktør STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Sjefsleiar STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Formann STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Finansfyrste # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detaljert prestasjonsrating STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaljer STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}{NBSP}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vis detaljar om dette firmaet ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Køyrety: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasjonar: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. gevinst: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntekt: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inntekt: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Levert: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Varer: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pengar: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lån: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totalt: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Antal køyretøy med positiv forteneste i fjor. Dette inkluderer vegkøyretøy, tog, skip og luftfartøy STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Antal nyleg betjente stasjonsdelar. Kvar del av ein stasjon (t.d. togstasjon, busstopp, flyplass) vert telt, sjølv om dei er kobla saman til éin stasjon STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Fortenesta til køyretøyet med lågast inntekt (kun køyretøy eldre enn 2 år er tatt med) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Inntekt i det kvartalet med lågast forteneste dei siste 12 kvartalene STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Inntekt i det kvartalet med høgast forteneste dei siste 12 kvartalene STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Antal leverte einingar dei siste fire kvartala STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tal på vatetypar, levert dei siste fire kvartala STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Kor mykje pengar dette firmaet har i banken STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Storleiken på låna til firmaet STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total poengsum av moglege poeng # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz-jukeboks STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Alle STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Gamle slagarar STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nye godbetar STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Eigendefinert 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Eigendefinert 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musikkvolum STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Lydeffektvolum STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAKS. STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Spor STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Tittel STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Tilfeldig STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Spel førre spor STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Spel neste spor STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stopp musikken STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Start musikken STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Dra for å endre volum på musikk og lydeffektar STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Vel alle spor STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Vel 'gamle slagerar'-program STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Vel 'nye godbetar'-program STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Vel 'Ezy Street style music'-program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vel 'Eigendefinert 1'-program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vel 'Eigendefinert 2'-program STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skru tilfeldig program av/på STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Syne musikkspormeny STR_ERROR_NO_SONGS :{WHITE}Eit musikksett utan songar har blitt valt. Ingen songar vil bli spelt # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musikkprogram STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Sporregister STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Tøm STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Slett gjeldande program (gjeld berre Eigendefinert 1 og 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikk på musikkspor for å leggje til gjeldande program (gjeld berre Eigendefinert 1 og 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikk på eit musikkspor for å fjerne det frå gjeldande program (Gjeld berre eigendefinert 1 og 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Beste firma som nådde {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Firmarangering i {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Forretningsmann STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entreprenør STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrialist STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Hundreårets finansfyrste STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} oppnår status som '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} frå {COMPANY} oppnår status som '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Kart - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Konturar STR_SMALLMAP_TYPE_VEHICLES :Køyretøy STR_SMALLMAP_TYPE_INDUSTRIES :Industriar STR_SMALLMAP_TYPE_ROUTES :Ruter STR_SMALLMAP_TYPE_VEGETATION :Vegetasjon STR_SMALLMAP_TYPE_OWNERS :Eigarar STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Syne landkonturar på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Syne køyretøy på kartet STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Syne inustriar på kartet STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Syne transportruter på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Syne vegetasjon på kartet STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Syne landeigarar på kartet STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikk på ein industritype for å syne/gøyme han. Ctrl+klikk deaktiverer alle typer unnteke den valde. Ctrl+klikk på han att for å syne alle industriar. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på eit firma for å syne/ikkje syne dets eigedom. Ctrl+Klikk syner kun det valte firma. Ctrl+Klikk igjen for å syne alle firma STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegar STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jarnbaner STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stasjonar/Flyplassar/Hamner STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Bygningar/Industriar STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Køyretøy STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Tog STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Køyretøy STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skip STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Luftfartøy STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportruter STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Skog STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Jernbanestasjon STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Lasteterminal STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busstasjon STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flyplass/Helikopterplass STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Kai STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Utmark STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gras STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Bart land STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Jorde STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Tre STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Steinar STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Vatn STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Ingen eigar STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Byar STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industriar STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Ørken STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snø STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynamn på kartet STR_SMALLMAP_CENTER :{BLACK}Midtstill oversiktskartet på den gjeldande posisjonen STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Deaktiver alle STR_SMALLMAP_ENABLE_ALL :{BLACK}Aktiver alle STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Syne høgd STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ikkje syne industriar på kart STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Syne alle industriar på kart STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Byt syning av høgdekart STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikkje syn firmaeigedom på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Syn all firmaeigedom på kartet # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Syne siste melding eller nyheit STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSE * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOLAGRING STR_STATUSBAR_SAVING_GAME :{RED}* * LAGRAR SPEL * * # News message history STR_MESSAGE_HISTORY :{WHITE}Meldingshistorikk STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Ei liste over siste nyheiter STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Melding STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Innbyggjarane jublar . . .{}Første tog kjem til {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Innbyggjarane jublar . . .{}Første buss kjem til {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Innbyggjarane jublar . . .{}Første lastebil kjem til {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Innbygjarane feirer . . .{}Første passasjertrikk kjem til{STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Innbygjarane feirer . . .{}Første varektetrikk kjem til {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Innbyggjarane jublar . . .{}Første skip kjem til {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Innbyggjarane jublar . . .{}Første luftfartøy kjem til {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Togkrasj!{}{COMMA} døyr i flammehav etter kollisjon STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Køyretøykollisjon!{}Sjåfør døyr i flammehav etter kollisjon med tog STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Køyretøykollisjon!{}{COMMA} døyr i flammehav etter kollisjon med tog STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flykrasj!{}{COMMA} døyr i flammehav ved {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flystyrt!{}Fly gjekk tom for drivstoff, {COMMA} døydde i flammehav STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinerulukke på {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Køyretøy øydelagd i kollisjon med UFO! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplosjon på oljeraffineri i nærleiken av {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrikk øydelagd på mistenkeleg vis i nærleiken av {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}UFO landar i nærleiken av {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Kollaps i ein gruvegoag gjer store øydeleggingar i nærleiken av {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flaum!{}Minst {COMMA} sakna eller antatt daud{P "" e} etter valdsam oversymjing! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportfirma har problem! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vil verte seld eller nedlagt, dersom ikkje økonomien til firmaet tek seg opp! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportfirma fusjonerer! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} har blitt selt til {STRING} for {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Konkurs! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} har vorte stengd av kreditorer og alt av verdi har blitt seld! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nytt transportfirma skipa! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} startar bygging i nærleiken av {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} har vorte kjøpt opp av {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Sjef) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsa konstruksjon av ny by {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ny {STRING} byggjast i nærleiken av {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Ny {STRING} plantast i nærleiken av {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} legg ned verksemda straks! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Leveringsproblem gjer at {STRING} legg ned verksemda straks! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Mangel på tre i nærleiken gjer at {STRING} legg ned verksemda straks! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europeisk valutaunion!{}{} Euro er introdusert som den einaste gjeldande valuta for kvadagslege forretningar i landet ditt. STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Verdskrise!{}{}Økonomar fryktar det verste. Nedgangstider i kjømda. STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Verdskrise over!{}{}Opptur i marknaden gjer industrien sjølvkjensla attende. STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} aukar produksjonen! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Ny kolåre funne i {INDUSTRY}!{}Ei dobling i produksjon er venta! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nye oljereservar funne i {INDUSTRY}!{}Ei dobling i produksjon er venta! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Forbetra landbruksmetodar på {INDUSTRY} er venta å doble produksjonen! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Produksjonen av {STRING} ved {INDUSTRY} aukar med {COMMA}{NBSP}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} sin produksjon har sokke med 50{NBSP}% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektinvasjon på {INDUSTRY}!{}Produksjonen søkk med 50{NBSP}% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produksjonen av {STRING} ved {INDUSTRY} søkk med {COMMA}{NBSP}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} ventar i togstallen STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} ventar i garasjen STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} ventar i skipsdokken STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ventar i hangaren # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordrar på ruteplanen STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har ein ugyldig ordre STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har to like ordrar STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har ein ugyldig stasjon i sine ordre # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er gammal STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er veldig gammal STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er veldig gammal, og må bytast ut snarast STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kan ikkje finna spor vidare STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} har køyrt seg vill STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}'s forteneste i fjor var {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kan ikkje gå til neste destinasjon fordi han er utanfor rekkevidde. STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stoppa pga. ombygningsordre feila STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatisk fornying feila på {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Ny {STRING}type er tilgjengeleg! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ny {STRING}type er tilgjengeleg! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} godtek ikkje lenger {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} godtek ikkje lenger {STRING} eller {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} godtek no {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} godtek no {STRING} og {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Tilbod om subsidie har gått ut:{}{}{STRING} frå {STRING} til {STRING} får ikkje lenger subsidiar STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidie trekt attende:{}{}{STRING} teneste frå {STRING} til {STRING} får ikkje lenger subsidiar STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidie-tilbod:{}{}Første transport av {STRING} frå {STRING} til {STRING} vil vere subsidiert i eit år av bystyret! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsidie gjeve til {STRING}!{}{}Transport av {STRING} frå {STRING} til {STRING} vil gje 50{NBSP}% ekstra forteneste det neste året! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsidie gjeve til {STRING}!{}{}Transport av {STRING} frå {STRING} til {STRING} vil gje dobbel inntekt i eit år! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsidie gjeve til {STRING}!{}{}Transport av {STRING} frå {STRING} til {STRING} vil gje trippel inntekt i eit år! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidie gjeve til {STRING}!{}{}Transport av {STRING} frå {STRING} til {STRING} vil gje firedobbel inntekt i eit år! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trafikkaos i {TOWN}!{}{}Ombyggjing av vegen, finansiert av {STRING}, medførar 6 månaders irritasjon for bilistane! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopol! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Bystyret i {TOWN} signerer kontrakt med {STRING} om eitt års eksklusive transportrettar!! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Tilleggsvindauge {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopier til tilleggsvindauge STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopier stad i hovedvisinga til dette tilleggsvindauga STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Kopier frå tilleggsvindauge STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopier staden frå dette tilleggsvindauget til hovedvisinga # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spelinnstillingar STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaeining STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vel valutaeining ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Pund (£) STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) STR_GAME_OPTIONS_CURRENCY_JPY :Yen (¥) STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Tyske mark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Pesetas (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finske mark (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franc (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk gylden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polsk zloty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumensk lei (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkiske lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estiske kroner (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Sør-Koreanske Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Sør-Afrikanske Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigendefinert... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Einingar for mål STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Vel einingar for mål ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiell STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrisk STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Køyreretning STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Vel køyreretning STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Venstrekøyring STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Høgrekøyring STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Namn på byar STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Vel nasjonalitet på bynamn ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Engelsk STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fransk STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Tysk STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Engelsk (utvidet) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinamerikansk STR_GAME_OPTIONS_TOWN_NAME_SILLY :Tåpelige STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svensk STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Nederlandsk STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polsk STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakisk STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norsk STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarsk STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Østerriksk STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumensk STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tsjekkisk STR_GAME_OPTIONS_TOWN_NAME_SWISS :Sveitsisk STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dansk STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Tyrkisk STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiensk STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalansk ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel intervall for automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kvar månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Kvar 3. månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kvar 6. månad STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kvar 12. månad STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel språk som skal nyttast STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Fullskjerm STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Kryss av i denne boksen for å spele OpenTTD i fullskjermmodus STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skjermoppløysing STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vel skjermoppløysinga som skal nyttast STR_GAME_OPTIONS_RESOLUTION_OTHER :anna STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Filformat for skjermdump STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Vel kva format skjermdumpen skal lagrast i STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel grafikksett som skal nyttast STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manglande/øydelagd{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lydsett STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Vel lydsett som skal nyttast STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om lydsettet STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikksett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vel musikksett som skal nyttast STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} øydelagd{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om musikksettet STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermvising feila # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Eigendefinert valuta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Valutakurs: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Reduser verdien av din valuta sett opp mot eitt pund (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Auk verdien av din valuta sett opp mot eitt pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Sett valutakursen for eitt pund (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Vel desimalskiljeteikn for din valuta STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Vel prefiks for din valuta STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Vel suffiks for din valuta STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Byt til euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Byt til euro: {ORANGE}aldri STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Vel årstal for byte til Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Byt til Euro tidlegare STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Byt til Euro senere STR_CURRENCY_PREVIEW :{LTBLUE}Eksempel: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 pund (£) i din valuta STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Byt eigendefinert valutaparameter STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maks. antal konkurrentar: {ORANGE}{COMMA} STR_NONE :Ingen STR_FUNDING_ONLY :Kun finansiering STR_MINIMAL :Minimal STR_NUM_VERY_LOW :Særs låg STR_NUM_LOW :Lite STR_NUM_NORMAL :Normal STR_NUM_HIGH :Høgt STR_NUM_CUSTOM :Eigendefinert STR_NUM_CUSTOM_NUMBER :Eigendefinert ({NUM}) STR_VARIETY_NONE :Ingen STR_VARIETY_VERY_LOW :Særs lågt STR_VARIETY_LOW :Låg STR_VARIETY_MEDIUM :Middels STR_VARIETY_HIGH :Høgt STR_VARIETY_VERY_HIGH :Særs høgt STR_AI_SPEED_VERY_SLOW :Særs seint STR_AI_SPEED_SLOW :Seint STR_AI_SPEED_MEDIUM :Middels STR_AI_SPEED_FAST :Rask STR_AI_SPEED_VERY_FAST :Særs rask STR_SEA_LEVEL_VERY_LOW :Særs lågt STR_SEA_LEVEL_LOW :Lågt STR_SEA_LEVEL_MEDIUM :Middels STR_SEA_LEVEL_HIGH :Høgt STR_SEA_LEVEL_CUSTOM :Eigendefinert STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Eigendefinert ({NUM}%) STR_RIVERS_NONE :Ingen STR_RIVERS_FEW :Få STR_RIVERS_MODERATE :Middels STR_RIVERS_LOT :Mange STR_DISASTER_NONE :Ingen STR_DISASTER_REDUCED :Redusert STR_DISASTER_NORMAL :Normalt STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Særs flatt STR_TERRAIN_TYPE_FLAT :Flatt STR_TERRAIN_TYPE_HILLY :Åslendt STR_TERRAIN_TYPE_MOUNTAINOUS :Berglendt STR_CITY_APPROVAL_PERMISSIVE :Tillatande STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Fiendsleg STR_WARNING_NO_SUITABLE_AI :{WHITE}Inga passande AIer tilgjengeleg...{}Du kan lasta ned fleire AI'ar frå nettet med spelets nedlastingssystem. # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avanserte innstillingar STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Søkefilter: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Utvid alle STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skjul alle STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(inga forklaring tilgjengeleg) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standarverdi: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Type innstilling: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Klientinnstilling (ikkje lagra med enkeltspel; påverkar alle spela) STR_CONFIG_SETTING_TYPE_GAME_MENU :Spelinnstilling (lagra med enkeltspel; påverkar berre nye spel) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spelinnstilling (lagra med enkeltspel; påverkar berre gjeldande spel) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firmainnstilling (lagra med enkeltspel; påverkar berre nye spel) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firmainnstilling (lagra med enkeltspel; påverkar berre noverande firma) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vis: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Gjer at lista under berre viser innstillingar som er gjorde om STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnlegjande instillingar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanserte instillingar STR_CONFIG_SETTING_RESTRICT_ALL :Ekspertinnstillingar / alle innstillingar STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Instillingar med ein anna verdi enn standarden STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Innstillingar som skil seg frå innstillingar for nye spel STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begrenstar lista til spesifikke instillingstypar STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle innstillingar STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinstillingar (alle spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinnstillingar (nye spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spelinstillingar (gjeldande spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firmainnstillingar (nye spel) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firma instillingar (gjeldande firma) STR_CONFIG_SETTING_OFF :Av STR_CONFIG_SETTING_ON :På STR_CONFIG_SETTING_DISABLED :Deaktivert STR_CONFIG_SETTING_COMPANIES_OFF :Av STR_CONFIG_SETTING_COMPANIES_OWN :Eige firma STR_CONFIG_SETTING_COMPANIES_ALL :Alle firma STR_CONFIG_SETTING_NONE :Ingen STR_CONFIG_SETTING_ORIGINAL :Opprinneleg STR_CONFIG_SETTING_REALISTIC :Realistisk STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Venstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Midtstilt STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høgre STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimalt startlån: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksimalt lån eit firma kan ta opp (utan å reikne med inflasjon) STR_CONFIG_SETTING_INTEREST_RATE :Rente: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerar óg mogleg inflasjon STR_CONFIG_SETTING_RUNNING_COSTS :Køyrekostnadar: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set vedlikehaldsnivå og driftskostnadar for køyretøy og infrastruktur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Fart for bygging: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Avgrensing av farten AIar kan gjere konstruksjonshandlingar i. STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Køyretøy bryt saman: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontroller kor ofte køyretøy bryt saman når dei ikkje har fått nok vedlikehald STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplikator for subsidiar: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Kor mykje ekstra betaling som blir gitt ved subsidiar STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Byggjekostnadar: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nivået kostnadene for konstruksjon og kjøp ligg på STR_CONFIG_SETTING_RECESSIONS :Nedgangstider: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Skru på at det frå tid til anna kjem nedgangstider. Under nedgangstider fell all produksjon kraftig. (Han går opp att når nedgangstida er over.) STR_CONFIG_SETTING_TRAIN_REVERSING :Ikkje la tog vende om på stasjonar: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Skru på for å hindre at tog snur på andre stasjonar enn endestasjonar. STR_CONFIG_SETTING_DISASTERS :Ulukker: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skru av/på katastrofar og ulukker, som kan stogge eller øydeleggje køyretøy og øydeleggje infrastruktur. STR_CONFIG_SETTING_CITY_APPROVAL :Haldninga til bystyra når det gjeld ombygging: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vel kor mykje vurderinga frå bystyra og høvet for meir bygging i området vert påverka av støy og øydelegging frå eit firma. STR_CONFIG_SETTING_BUILDONSLOPES :Tillet bygging på skråningar og i vasskanten: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Tillet bygging av vegar, jernbanespor og stasjonar i bakkar, med hjelp av ekstra fundament. Skru av for å gjere at all bygging i bakkar må passe med kva retning terrenget skrånar STR_CONFIG_SETTING_AUTOSLOPE :Tillet landskapsendringar under bygningar, spor o.s.b.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillet å endre landskapet under bygningar, vegar og jernbanespor, utan å måtte fjerne dei fyrst. STR_CONFIG_SETTING_CATCHMENT :Meir realistisk storleik på oppfangingsområde: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Tillet fjerning av fleire vegar, bruar osb. egd av byane.: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Gjer det greiare å fjerne infrastruktur og bygningar eigd av byar. STR_CONFIG_SETTING_TRAIN_LENGTH :Maksimal toglengd: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Vel største moglege toglengde STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} rute{P 0 "" r} STR_CONFIG_SETTING_SMOKE_AMOUNT :Mengde køyretøyrøyk/-gnistar: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Mengd røyk og gnistar som kjem frå køyretøy. STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Togakselerasjonsmodell: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Vel fysikkmodell for akselerasjonen til tog. Med den opphavlege modellen vert alle toga påverka like mykje av bakkar. Med den realistiske modellen vert toga påverka ut i frå eigenskapar som lengd og trekkraft STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Køyretøyers akselerasjonstype: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Vel fysikkmodell for akselerasjonen til køyretøy på vegar. Med den opphavlege modellen vert alle køyretøya påverka like mykje av bakkar. Med den realistiske modellen vert køyretøya påverka ut i frå eigenskapar som lengd og trekkraft STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :Forby tog og skip å gjere 90-graderssvingar: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillet samanbygging av ikkje direkte tilstøtande stasjonar: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :Bruk forbetra lastingsalgoritme: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :Last køyretøy gradvis: {STRING} STR_CONFIG_SETTING_INFLATION :Inflasjon: {STRING} STR_CONFIG_SETTING_SELECTGOODS :Lever varer til ein stasjon kun hvis det er etterspørjing: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Konstruksjonsmetode for primærindustri: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andre industriar STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterar STR_CONFIG_SETTING_MULTIPINDTOWN :Tillet fleire like industriar i samme by: {STRING} STR_CONFIG_SETTING_SHOWFINANCES :Syne rekneskap ved nyttår: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nye ordre er 'direkte' som standard: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :Nye togordrar stoppar som standard på {STRING} av plattformen STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :starten STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :i andre enden STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Køyretøykøar (med kvantumseffektar): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Flytt på vindauget dersom pila er nær ytterkantane på skjermen: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert STR_CONFIG_SETTING_BRIBE :Tillet bestikkelse av bystyret: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Tillet kjøp av eksklusive transportretter: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Tillat sponsing av bygningar: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansiering av lokal ombyggjing av vegnettet: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Tillet å sende pengar til andre firma: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :Vektmultiplikator for frakt til å simulere tunge tog: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :Antal flystyrtar: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ingen STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Redusert STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalt STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillet stoppestadar med gjennomkøyring på by-eigde vegar: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillet stoppestadar med gjennomkøyring på konkurent-eigde vegar: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :Tillet å byggje stasjonar inntil andre: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktiver fleire NewGRF-kjernesett: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Endring av denne instillinga er ikkje mogleg når det finst køyretøy STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vedlikehald av infrastruktur: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flyplassar utgår aldri: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Advarsel om køyretøyet køyrer seg vill: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :Inspiser ordrane til køyretøya: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, men utelat stoppa køyretøy STR_CONFIG_SETTING_ORDER_REVIEW_ON :Alle køyretøy STR_CONFIG_SETTING_WARN_INCOME_LESS :Åtvar dersom eit køyretøy har negativ inntekt: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Køyretøy utgår aldri: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoforny køyretøy når det vert gamalt: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum formue for autofornying av køyretøy: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :Syne innbyggjartalet til byane i tittel: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Bredde på linjer i grafar: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Landskapsgenerator: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snøgrense: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Kor ulendt skal terrenget vere (kun TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Særs jamnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Jamnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ulendt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Særs ulendt STR_CONFIG_SETTING_TREE_PLACER :Treplasseringalgoritme: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Ingen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Forbetra STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Høgdekartrotering: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mot klokka STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med klokka STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Høgdenivå eit flatt scenariokart får: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Tillat endring av landskapsruter på kanten av kartet: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ei eller fleire ruter på nordkanten er ikkje tomme STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ei eller fleire ruter på ein av kantane inneheld ikkje vatn STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatisk vedlikehald ved helikopterplass: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Koble landskapsverktøylinja til bygningsverktøylinjane: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Landfarge nytta på oversiktskartet: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grøn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrøn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolett STR_CONFIG_SETTING_REVERSE_SCROLLING :Snu rulleretninga: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :Jamn rulling i tilleggsvindauge: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Syne eit målingverktøytips når ymse byggjeverktøy brukast: {STRING} STR_CONFIG_SETTING_LIVERIES :Syne firmaovertakingar: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :Ingen STR_CONFIG_SETTING_LIVERIES_OWN :Eige firma STR_CONFIG_SETTING_LIVERIES_ALL :Alle firma STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foretrekk lagchat med : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funksjonen til rullehjulet: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kart STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Rull kart STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Av STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rullehjulets hastigheit på kartet: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Høgreklikkemulering: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL+klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreknapps-rulling: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Bruk {STRING} datoformat for namning av lagra spel STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Anteke standardpalett for NewGRFer utan spesifisert palett: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatisk pause når ein startar nytt spel: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når spelet er pausa, tillet: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ingen handlingar STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle ikkje-konstruksjons-handlingar STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :alt unntatt landskapsendring-handlingar STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :alle handlingar STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk avansert køyretøyliste: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :Bruk lasteindikatorar: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Syne rutetabell i tikk i staden for dagar: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Syne ankomst og avferd i rutetabellane: {STRING} STR_CONFIG_SETTING_QUICKGOTO :Hurtig-laging av køyretøy-ordrar: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard jernbanetype (etter nytt/lasta spel): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Første tilgjengelege STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Siste tilgjengelege STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest brukte STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Syne reserverte spor: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Hold byggjeverktya aktive etter bruk: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupper utgifter i firmarekneskapen-vindauget: {STRING} STR_CONFIG_SETTING_SOUND_TICKER :Samandrag: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spel lyd for samandrag av meldingar og nyheiter STR_CONFIG_SETTING_SOUND_NEWS :Avisartiklar: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spel lyd når avisartiklar visest på skjermen STR_CONFIG_SETTING_SOUND_NEW_YEAR :Når året er slutt: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksjon: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spel lydar ved bygging og andre handlingar STR_CONFIG_SETTING_SOUND_DISASTER :Ulukker/katastrofar: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spel lydar frå ulukker og katastrofar STR_CONFIG_SETTING_SOUND_VEHICLE :Køyretøy: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spel lydar frå køyretøy STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spel lydar frå landskap, industri og byar. STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Ikkje tillet konstruksjon av infrastruktur om ingen passande køyretøy er tilgjengeleg: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Maks antal tog per firma: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalt antal tog eit firma kan eige. STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks antal bilar per firma: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalt antal bilar eit firma kan eige STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks antal luftfartøy per firma: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalt antal luftfartøy eit firma kan eige STR_CONFIG_SETTING_MAX_SHIPS :Maks antal skip per firma: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antal skip eit firma kan eige STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Hindre datamaskina i å byggje tog: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskina i å byggje køyretøy: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Hindre datamaskina i å byggje luftfartøy: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Hindre datamaskina i å byggje skip: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillet AI-spelarar i fleirspelarmodus: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes føre script er avbrotne: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :Vedlikehaldsintervall er i prosent: {STRING} STR_CONFIG_SETTING_NOSERVICE :Deaktiver vedlikehald når havari er slått av: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver fartsgrenser for vogner: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiver elektriske tog: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Første køyretøy kjem fram på stasjonen til spelaren: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vis nyheitsartiklar når første køyretøy kjem til ein stasjon hjå ein ny spelar STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første køyretøy kjem fram på stasjonen til motstandaren: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vis nyheitsartiklar når fyrste køyretøy kjem til ein ny stasjon hjå ein konkurrent STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ulykker/katastrofar: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vis nyheitsartiklar ved ulykker eller katastrofar STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmainformasjon: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vis nyheitsartiklar når nye firma startar opp, eller når firma risikerer konkurs STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Nyopning av industriar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vis nyheitsartiklar når industri opnar STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Nedlegging av industriar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vis nyheitsartiklar når industri legg ned STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Økonomiske endringar: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vis nyheitsartiklar ved forandringar i den globale økonomien STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjonsendringar i industriar betjent av firmaet: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vis nyheitsartiklar når industriar forandrar produksjonsmengd, for industriar som betenest av firmaet STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjonsendringar for industriar betente av konkurrent(ar): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vis nyheitsartiklar når industriar forandrar produksjonsmengd, for industriar som betenest av konkurrerande firma STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Produksonsendringar for andre industriar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vis nyheitsartiklar når industriar forandrar produksjonsmengd, for industriar som ikkje betenest av noko firma STR_CONFIG_SETTING_NEWS_ADVICE :Råd / informasjon om firmaet's køyretøy: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vis meldingar om køyretøy som treng tilsyn STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nye køyretøy: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vis nyheitsartiklar når nye køyretøy vert tilgjengelege STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Endringar i godtekne varer: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vis meldingar når stasjonar skifter godtekne varer STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidiar: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vis nyheitsartiklar om hendingar som har å gjere med subsidiar STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generell informasjon: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vis nyheitsartiklar om gjengse hendingar, som kjøp av eksklusive transportrettar eller finansiering av ombyggjing av vegnett STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Av STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Samandrag STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Fullt STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Avisa vert trykt i fargar i: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :Start spelet i år {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jamn økonomi (fleire, mindre endringar): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :Tillet kjøp av aksjar i andre firma: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bygg vingesignal automatisk før: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Slå på signalgrensesnittet: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standard signaltype: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokksignaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avanserte signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einvegs avanserte signaler STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Bla gjennom signaltypar: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Kun blokksignaler STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Kun avanserte signaler STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle STR_CONFIG_SETTING_TOWN_LAYOUT :Vegløysing for nye byar: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :standard STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :betre vegar STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 rutenett STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 rutenett STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :tilfeldig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byar har lov til å byggja vegar: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Let stader byggje veger for å vekse. Slå av for å hindre at myndighetene byggjer veger sjølv STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byar har lov å bygge overgangar: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :Tillet at byen kontrollerar støynivået for flyplassane: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Grunnlegga byar i spelet: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Let spelare grunnleggje nye stader STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ikkje tillete STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :tillete STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :tillete, eigendefinert oppsett av by STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Plassering av tre i spelet: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ingen {RED}(øydelegg sagbruk) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :kun i regnskogen STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :over alt STR_CONFIG_SETTING_TOOLBAR_POS :Plassering av hovudverktøylinje: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Plassering av verktøylinja øvst på skjermen STR_CONFIG_SETTING_STATUSBAR_POS :Plassering av statuslinje: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Plassering av statuslinja nederst på skjermen STR_CONFIG_SETTING_SNAP_RADIUS :Radius for at vindauge klikker på plass: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Når eit vindauge flyttast vil det automatisk verte flytta like til andre vindauge når dei er nærare enn den her lengda STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piks{P 0 "el" "lar"} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Slått av STR_CONFIG_SETTING_SOFT_LIMIT :Maks. antal vindauge (ikkje fest til andre): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antal vindauge som kan vere opne før gamle vindauge automatisk vert lukka når nye opnast STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :slått av STR_CONFIG_SETTING_ZOOM_MIN :Maksimum zoom-inn-nivå: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maksimalt zoom-in-nivå for tilleggsvindauge. Høgare zoom-inn-nivå krever meir minne STR_CONFIG_SETTING_ZOOM_MAX :Maksimum zoom-ut-nivå: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maksimalt zoom-ut-nivå for tilleggsvindauge. Høge zoom-ut-nivå kan føre til at spelet hakker STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Fart for veksten til byar: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Kor fort byar skal vekse STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ingen STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sakte STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rask STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Særs rask STR_CONFIG_SETTING_LARGER_TOWNS :Andel stader som skal vere byar: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Andel stader som vert byar i staden for tettstader. Byar veks fortare enn tettstader og er større når spelet startar STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 av {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ingen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Innleiande bystorleiksmultiplikator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Storleiken til byar på starten av spelet, jamført med tettstader STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde vegelement under vegkonstruksjon: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern blindvegar under finansiering av vegutbygging STR_CONFIG_SETTING_GUI :{ORANGE}Grensesnitt STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køyretøy STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjonar STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi STR_CONFIG_SETTING_AI :{ORANGE}Motstandarar STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Syne innstillingar STR_CONFIG_SETTING_INTERACTION :{ORANGE}Samhandling STR_CONFIG_SETTING_SOUND :{ORANGE}Lydar STR_CONFIG_SETTING_NEWS :{ORANGE}Nyheiter og meldingar STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Varehantering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datamaskinspelarar STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoforny STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Vedlikehald STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tog STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Byar STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industriar STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Anbefalt) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vegfinnar for tog: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Kva for vegfinnar som skal nyttast for tog STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Vegfinnar for køyretøy på vegar: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Kva for vegfinnar som skal nyttast for bilar og bussar STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Vegfinnar for skip: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Kva for vegfinnar som skal nyttast for skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisk reversering ved signal: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :La tog snu ved signal, når dei har venta lengje STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Byt innstillingsverdi # Config errors STR_CONFIG_ERROR :{WHITE}Feil med konfigurasjonsfila... STR_CONFIG_ERROR_ARRAY :{WHITE}... feil i liste '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ugyldig verdi '{STRING}' for '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... etterslengjande bokstavar i enden av innstilling '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorerer NewGRF '{STRING}': duplikat GRF ID med '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorerer ugyldig NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ikkje funne STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :usikker for statisk bruk STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :system NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :inkompatibel med denne versjonen av OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ukjend STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... kompresjonsnivå '{STRING}' er ikkje gyldig STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... lagra spels format '{STRING}' er ikkje tilgjengeleg. Vender attende til '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... utelèt grafikksettet "{STRING}": ikkje funne STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... utelèt lydsettet "{STRING}": ikkje funne STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... utelèt musikksettet "{STRING}": ikkje funne # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nytt spel STR_INTRO_LOAD_GAME :{BLACK}Last inn spel STR_INTRO_PLAY_SCENARIO :{BLACK}Spel scenario STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spel høgdekart STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenario-redigerar STR_INTRO_MULTIPLAYER :{BLACK}Fleirspelar STR_INTRO_GAME_OPTIONS :{BLACK}Spelinnstillingar STR_INTRO_HIGHSCORE :{BLACK}Poengtavle STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avanserte innstillingar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Sjå etter innhald på nett STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI- / Spelscriptinnstillingar STR_INTRO_QUIT :{BLACK}Avslutt STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start eit nytt spel. CTRL+klikk hoppar over kartkonfigurasjon STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Last inn eit lagra spel STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Start eit nytt spel, bruk eit høgdekart som landskap STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start eit nytt spel som nyttar eit eigendefinert scenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Opprett ei eigendefinert spelverd eller eit scenario STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Start eit fleirspelar-spel STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Vel temperert miljø STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vel subarktisk miljø STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vel subtropisk miljø STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vel leiketøyland-miljø STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Syne spelinstillingar STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Syn poengtavla STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Syne avanserte innstillingar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Syne NewGRF-instillingar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Sjå etter nytt og oppdatert innhald som kan lastas ned STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis AI- og spelscriptinnstillingar STR_INTRO_TOOLTIP_QUIT :{BLACK}Avslutt 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Denne nynorsk-oversettelsen mangler {NUM} streng{P "" er}. Vennligst hjelp til å gjøre OpenTTD bedre ved å bli med i oversettergruppen. For detaljer, sjekk readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Avslutt STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Er du sikker på at du vil avslutte OpenTTD og gå attende til {STRING}? STR_QUIT_YES :{BLACK}Ja STR_QUIT_NO :{BLACK}Nei # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Avslutt spel STR_ABANDON_GAME_QUERY :{YELLOW}Er du sikker på at du vil forlata spelet? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er du sikker på at du vil avslutte scenariet? # Cheat window STR_CHEATS :{WHITE}Juks STR_CHEATS_TOOLTIP :{BLACK}Avkrysningsbokser fortel at du har nytta denne juksekoden tidlegare STR_CHEATS_WARNING :{BLACK}Åtvaring! Du er i ferd med å forråda motspelarane. Vær klar over at denne skammelige handlinga vil bli hugsa i all framtid. STR_CHEAT_MONEY :{LTBLUE}Auk pengebehaldninga med {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speler som firma: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldoser (fjern industriar, uflyttbare ting): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnelar kan krysse kvarandre: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikkje krasje (ofte) på små flyplassar: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperert landskap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :subarktisk landskap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtropisk landskap STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :"Leikeland"-landskap STR_CHEAT_CHANGE_DATE :{LTBLUE}Byt dato: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Byt noverande år STR_CHEAT_SETUP_PROD :{LTBLUE}Tillet endring av produksjonsmengder: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Ny firmafarge STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Syne generelle fargetema STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Syne togfargetema STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Syne bilfargetema STR_LIVERY_SHIP_TOOLTIP :{BLACK}Syne skipsfargetema STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Syne luftfartøyfargartema STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vel ein primærfarge for valde tema. Ctrl+klikk veljer fargen for alle temaa STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vel sekundærfarge for valde tema. Ctrl+klikk veljer fargen for alle temaa STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vel eit fargetema å endre, eller fleire fargetema med CTRL+klikk. Klikk på boksen for å vise bruken av fargetema STR_LIVERY_DEFAULT :Standardfarger STR_LIVERY_STEAM :Damplokomotiv STR_LIVERY_DIESEL :Diesellokomotiv STR_LIVERY_ELECTRIC :Elektrisk lokomotiv STR_LIVERY_MONORAIL :Monorail-lokomotiv STR_LIVERY_MAGLEV :Maglev-lokomotiv STR_LIVERY_DMU :Dieseltogsett (DMU) STR_LIVERY_EMU :Elektrisk togsett (EMU) STR_LIVERY_PASSENGER_WAGON_STEAM :Passasjervogn (damp) STR_LIVERY_PASSENGER_WAGON_DIESEL :Passasjervogn (diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passasjervogn (elektrisk) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passasjervogn (monorail) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passasjervogn (maglev) STR_LIVERY_FREIGHT_WAGON :Varevogn STR_LIVERY_BUS :Buss STR_LIVERY_TRUCK :Lastebil STR_LIVERY_PASSENGER_SHIP :Passasjerferje STR_LIVERY_FREIGHT_SHIP :Fraktskip STR_LIVERY_HELICOPTER :Helikopter STR_LIVERY_SMALL_PLANE :Lite fly STR_LIVERY_LARGE_PLANE :Stort fly STR_LIVERY_PASSENGER_TRAM :Passasjertrikk STR_LIVERY_FREIGHT_TRAM :Varetrikk # Face selection window STR_FACE_CAPTION :{WHITE}Vel utsjånad STR_FACE_CANCEL_TOOLTIP :{BLACK}Avbryt val av utsjånad STR_FACE_OK_TOOLTIP :{BLACK}Godta ny utsjånad STR_FACE_MALE_BUTTON :{BLACK}Mann STR_FACE_MALE_TOOLTIP :{BLACK}Vel mannsandlet STR_FACE_FEMALE_BUTTON :{BLACK}Kvinne STR_FACE_FEMALE_TOOLTIP :{BLACK}Vel kvinneandlet STR_FACE_NEW_FACE_BUTTON :{BLACK}Nytt andlet STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Lag eit tilfeldig andlet STR_FACE_ADVANCED :{BLACK}Avansert STR_FACE_ADVANCED_TOOLTIP :{BLACK}Avansert val av andlet STR_FACE_SIMPLE :{BLACK}Enkel STR_FACE_SIMPLE_TOOLTIP :{BLACK}Enkelt val av andlet STR_FACE_LOAD :{BLACK}Last inn STR_FACE_LOAD_TOOLTIP :{BLACK}Last inn favoritandlet STR_FACE_LOAD_DONE :{WHITE}Favorittandletet ditt har blitt lasta inn frå OpenTTDs konfigurasjonsfil STR_FACE_FACECODE :{BLACK}Spelarandlet nummer. STR_FACE_FACECODE_TOOLTIP :{BLACK}Syne og/eller angje andletsnummer for firmapresidenten STR_FACE_FACECODE_CAPTION :{WHITE}Syne og/eller angje andletsnummer på presidenten STR_FACE_FACECODE_SET :{WHITE}Ny kode for andletsnummer er satt STR_FACE_FACECODE_ERR :{WHITE}Kunne ikkje angje andletenummer på presidenten - må vera mellom 0 og 4,294,967,295! STR_FACE_SAVE :{BLACK}Lagre STR_FACE_SAVE_TOOLTIP :{BLACK}Lagre favoritandlete STR_FACE_SAVE_DONE :{WHITE}Dette andletet vil verte lagra som favoriten din i OpenTTDs konfigurasjonfil STR_FACE_EUROPEAN :{BLACK}Europeisk STR_FACE_SELECT_EUROPEAN :{BLACK}Velg europeiske andlet STR_FACE_AFRICAN :{BLACK}Afrikans STR_FACE_SELECT_AFRICAN :{BLACK}Velg afrikanske andlet STR_FACE_YES :Ja STR_FACE_NO :Nei STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Slå på bart eller øyrering STR_FACE_HAIR :Hår: STR_FACE_HAIR_TOOLTIP :{BLACK}Byt hår STR_FACE_EYEBROWS :Augebryn: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Byt augebryn STR_FACE_EYECOLOUR :Augefarge: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Byt augefarge: STR_FACE_GLASSES :Briller: STR_FACE_GLASSES_TOOLTIP :{BLACK}Slå på briller STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Byt briller STR_FACE_NOSE :Nase: STR_FACE_NOSE_TOOLTIP :{BLACK}Byt nase STR_FACE_LIPS :Lepper: STR_FACE_MOUSTACHE :Bart: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Byt lepper eller bart STR_FACE_CHIN :Hake: STR_FACE_CHIN_TOOLTIP :{BLACK}Byt hake STR_FACE_JACKET :Jakke: STR_FACE_JACKET_TOOLTIP :{BLACK}Byt jakke STR_FACE_COLLAR :Krage: STR_FACE_COLLAR_TOOLTIP :{BLACK}Byt krage STR_FACE_TIE :Slips: STR_FACE_EARRING :Øyrering: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Byt slips eller øyrering # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Fleirspelar STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Samband: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vel mellom å spele på internett eller i lokalt nettverk (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internett STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spelarnamn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er namnet andre spelarar vil identifisere deg med STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Namn STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Namn på spelet STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klientar STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klientar på nett / maks. antal klientar{}Firma på nett / maks. antal firma STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartstorleik STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Spelets kartstorleik{}Klikk for å sortere etter område STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Aktuell dato STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}År STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Antal år{}spelet har pågått STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Språk, tenarversjon, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikk på eit spel i lista for å velje det STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Tenaren du brukte sist gong: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klikk for å velje tenaren du brukte sist gong STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}SPELOVERSIKT STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klientar: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Språk: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landskapt: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kartstorleik: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Tenarversjon: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adressa til tenaren: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Start dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Noverande dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Passordbeskytta! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}TENAREN ER KOBLA AV STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}TENAREN ER FULL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}DU HAR EIN ANNAN VERSJON ENN TENAREN STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF PASSAR IKKJE STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Bli med på spel STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Oppdater tenar STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Oppdater tenarinformasjon STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Finn tenar STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Søk på nettverket etter ein tenar STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Legg til tenar STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Legg til ein tenar i lista over tenarar som alltid vil verte sjekka for aktive spel. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start tenar STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start ein eigen tenar STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Set inn namnet ditt STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Skriv inn IP-adressa til tenaren # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start eit nytt fleirspelarspel STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spelnamn: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spelnamnet vil verte vist til andre spelarar i fleirspelarmenyen STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set passord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt spelet ditt med passord så ikkje kven som helst kan verte med på det STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internett STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internett (annonser) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks. antal tilletne klientar: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vel maks. antal klientar. Alle plassane treng ikkje å verte tekne STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} firma STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks. antal firma: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrens tenaren til eit visst antal firma STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} tilskodar{P "" ar} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks. antal tilskoderar: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begrens tenaren til eit visst antal tilskodarar STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Språk som vert tala på tenaren: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andre spelarar skal vete kva språk ein talar på denne tenaren STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Gje eit namn til nettverksspelet # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Kva som helst STR_NETWORK_LANG_ENGLISH :Engelsk STR_NETWORK_LANG_GERMAN :Tysk STR_NETWORK_LANG_FRENCH :Fransk STR_NETWORK_LANG_BRAZILIAN :Brasiliansk STR_NETWORK_LANG_BULGARIAN :Bulgarsk STR_NETWORK_LANG_CHINESE :Kinesisk STR_NETWORK_LANG_CZECH :Tsjekkisk STR_NETWORK_LANG_DANISH :Dansk STR_NETWORK_LANG_DUTCH :Nederlandsk STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finsk STR_NETWORK_LANG_HUNGARIAN :Ungarsk STR_NETWORK_LANG_ICELANDIC :Islandsk STR_NETWORK_LANG_ITALIAN :Italiensk STR_NETWORK_LANG_JAPANESE :Japansk STR_NETWORK_LANG_KOREAN :Koreansk STR_NETWORK_LANG_LITHUANIAN :Litauisk STR_NETWORK_LANG_NORWEGIAN :Norsk STR_NETWORK_LANG_POLISH :Polsk STR_NETWORK_LANG_PORTUGUESE :Portugisisk STR_NETWORK_LANG_ROMANIAN :Rumensk STR_NETWORK_LANG_RUSSIAN :Russisk STR_NETWORK_LANG_SLOVAK :Slovakisk STR_NETWORK_LANG_SLOVENIAN :Slovensk STR_NETWORK_LANG_SPANISH :Spansk STR_NETWORK_LANG_SWEDISH :Svensk STR_NETWORK_LANG_TURKISH :Tyrkisk STR_NETWORK_LANG_UKRAINIAN :Ukrainsk STR_NETWORK_LANG_AFRIKAANS :Afrikaans STR_NETWORK_LANG_CROATIAN :Kroatisk STR_NETWORK_LANG_CATALAN :Katalansk STR_NETWORK_LANG_ESTONIAN :Estisk STR_NETWORK_LANG_GALICIAN :Gælisk STR_NETWORK_LANG_GREEK :Gresk STR_NETWORK_LANG_LATVIAN :Latvisk ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Fleirspelarspel-lobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Freistar å verte med: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Ei liste over firma i spelet. Du kan anten verte med i eit eller starte eit nytt. STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}FIRMAOVERSIKT STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Firmanamn: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Skipa: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Firmaverdi: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Noverande saldo: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Inntekt i fjor: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Nettverksyting: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Køyretøy: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stasjonar: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spelarar: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nytt firma STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Skip eit nytt firma STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Vær tilskodar STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Ver tilskodar til spelet STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Ver med i firmaet STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjelp å styre dette firmaet # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Kobler til... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Koplar til... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Gjev løyve.. STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Ventar.. STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Lastar ned kart.. STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Handsamar data.. STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrerer... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Hentar spelinformasjon.. STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hentar firmainformasjon... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P "" ar} føre deg STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} nedlasta til no STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} lasta ned så langt STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Koble frå STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tenaren er beskytta. Skriv inn passord STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firmaet er beskytta. Skriv inn passord # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Liste over klientar STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Vær tilskodar STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nytt firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Kast ut STR_NETWORK_CLIENTLIST_BAN :Svartelist STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gje pengar STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Snakk til alle STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Snakk til firma STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat melding STR_NETWORK_SERVER :Tenar STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskodarar STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn kor mykje pengar du ønskar å gje # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikkje lagre passordet STR_COMPANY_PASSWORD_OK :{BLACK}Gje firmaet det nye passordet STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firmapassord STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard passord for firma STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Bruk passordet fra dette firmaet som standard for nye firma # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Knytt til STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Knytt til og spel som dette firmaet STR_COMPANY_VIEW_PASSWORD :{BLACK}Passord STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Passordbeskytt firmaet ditt slik at ikkje alle og einkvar kan verte med. STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Vel firmapassord # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send STR_NETWORK_CHAT_COMPANY_CAPTION :[Lag] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privat] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Alle] : STR_NETWORK_CHAT_COMPANY :[Lag] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Lag] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privat] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Alle] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Skriv tekst for nettverkssamtale # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Finn ikkje nettverksadapter eller kompilert utan ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Kunne ikkje finne nokon nettverksspel STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Tenaren svarte ikkje på spørringa STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Kunne ikkje koble til grunna NewGRF-filer som ikkje passar saman STR_NETWORK_ERROR_DESYNC :{WHITE}Synkronisering i nettverksspelet feila STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Mista tilkoblinga til nettverksspelet STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Kunne ikkje laste inn spel STR_NETWORK_ERROR_SERVER_START :{WHITE}Klarte ikkje å starte tenaren STR_NETWORK_ERROR_CLIENT_START :{WHITE}Klarte ikkje å opprette tilkobling STR_NETWORK_ERROR_TIMEOUT :{WHITE}Tilkobling #{NUM} vart tidsavbrote STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Det skjedde ein protokoll-feil, så tilkoblinga ble brote STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Klientversjonen er ikkje den same som tenarversjonen STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Feil passord STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tenaren er full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du er bannlyst frå denne tenaren STR_NETWORK_ERROR_KICKED :{WHITE}Du vart kasta ut frå spelet STR_NETWORK_ERROR_CHEATER :{WHITE}Juksing er forbode på denne tenaren STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du sende for mange kommandoar til serveren STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Du bruka for lang tid på å angje passord. STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Datamaskina di er for treig til å halde følge med tjenaren. STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Datamaskina di bruka for lang tid på å laste ned kartet STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Datamaskina di bruka for lang tid på å koble til tjenaren. ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :generell feil STR_NETWORK_ERROR_CLIENT_DESYNC :synkroniseringsfeil STR_NETWORK_ERROR_CLIENT_SAVEGAME :klarte ikkje å laste inn kartet STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :sambandet vart brote STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokollfeil STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF-filer passar ikkje saman STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ikkje autorisert STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :mottok ugyldig eller uventa pakke STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :feil versjon STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :namnet er brukt av nokon andre STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :feil passord for til spelet STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :feil firma i DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kasta ut av tenaren STR_NETWORK_ERROR_CLIENT_CHEATER :freista å jukse STR_NETWORK_ERROR_CLIENT_SERVER_FULL :tenaren er full STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sende for mange kommandoar STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :mottok inkje passord i tide STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :generelt tidsavbrot STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :nedlasting av kart tok for lang tid STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :prosessering av kartet tok for lang tid ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mogleg tilkoblingsbrot STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Dei siste {NUM} sekund er ingen data mottatt frå serveren # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spelet er pausa ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spelet er framleis pausa ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spelet er framleis pausa ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spelet er framleis pausa ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spelet står endå på pause ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spelet held fram ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ikkje nok spelarar STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :kobler til klienter STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuelt STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spelscript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :forlet STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} har blitt med i spelet STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} har blitt med i spelet (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} har slutta seg til firma #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} har slutta seg til tilskodarane STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har starta eit nytt firma (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har forlatt spelet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har endra namnet sitt til {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gav firmaet ditt {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du gav {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tenaren avslutta spelet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tenaren startar om att...{}Vær venleg og vent... # Content downloading window STR_CONTENT_TITLE :{WHITE}Lastar ned innhald STR_CONTENT_TYPE_CAPTION :{BLACK}Type STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Type innhald STR_CONTENT_NAME_CAPTION :{BLACK}Namn STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Namnet til innhaldet STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klikk på ei line for å syne detaljane{}Klikk på avkryssingsboksen for å merka den for nedlasting STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Vel alle STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alt innhald som skal lastast ned STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vel oppdateringar STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alt innhald som er ei oppgradering av eksisterande, og skal lastast ned STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Vel bort alle STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alt innhald som ikkje skal lastast ned STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Vilkåra for nedlasting av innhald frå eksterne nettsider varierar.{}Du må oppsøke dei eksterne nettsidane for å finne instruksjonar om korleis du innstalerar innhaldet i OpenTTD.{}Vil du fortsette? STR_CONTENT_FILTER_TITLE :{BLACK}Merke/Namnefilter: STR_CONTENT_OPEN_URL :{BLACK}Vitje nettsida STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vitje nettsida for dette innhaldet STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Last ned STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Last ned valt innhald STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Total nedlastingsstorleik: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INNHALDSINFORMASJON STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Du har ikkje valt at dette skal lastast ned STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Du har valt dette for nedlasting STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Følgjande avhengnad har blitt merka for nedlasting STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Du har allereie dette STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Dette innhaldet er ukjent og kan ikkje lastas ned i OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Dette erstattar ei eksisterande {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Namn: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versjon: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beskrivelse: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Type: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Nedlastingsstorleik: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Vald pga.: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Avheng av: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Merker: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD er bygd utan støtte for "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... det er ikkje mogeleg å laste ned innhald! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafikk STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI-bibliotek STR_CONTENT_TYPE_SCENARIO :Scenario STR_CONTENT_TYPE_HEIGHTMAP :Høgdekart STR_CONTENT_TYPE_BASE_SOUNDS :Lydar STR_CONTENT_TYPE_BASE_MUSIC :Musikk STR_CONTENT_TYPE_GAME_SCRIPT :Spelscript STR_CONTENT_TYPE_GS_LIBRARY :Scriptbibliotek # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Lastar ned innhald... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Spør etter filer... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Lastar ned {STRING} ({NUM} av {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Nedlasting ferdig STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} av {BYTES} lasta ned ({NUM}{NBSP}%) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Kunne ikkje koble til innhaldstenar... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Nedlasting mislukkast... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... mista tilkobling STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fila er ikkje skrivbar STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Kunne ikkje pakka ut den nedlasta fila STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Manglande grafikk STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD krever grafikk for å fungere, men finn han ikkje. Tillet du OpenTTD å laste ned og installere denne grafikken? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, last ned grafikken. STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, avslutt OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Gjennomsynsval STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Byt gjennomsyn for stasjonssktilt. Ctrl+klikk for å låsa STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Byt gjennomsyn for tre. Ctrl+klikk for å låsa. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Byt gjennomsyn for hus. Ctrl+klikk for å låsa. STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Byt gjennomsyn for industriar. Ctrl+klikk for å låsa. STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Byt gjennomsyn for bygningar som kan byggast, til dømes garasjar, stallar og kontrollpunkter. Ctrl+klikk for å låsa. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Byt gjennomsyn for bruer. Ctrl+klikk for å låsa. STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Byt gjennomsyn for bygningar, som fyrtårn og antenner. Ctrl+klikk for å låsa. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Byt gjennomsyn for kjeder. Ctrl+klikk for å låsa. STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Byt gjennomsyn for lasteindikatorar. Ctrl+klikk for å låsa. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gjer objekter usynlege istanden for gjennomsiktige # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Syne dekningsområde STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Av STR_STATION_BUILD_COVERAGE_ON :{BLACK}På STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Gøym dekningsområdet til den foreslåtte plasseringa STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Syne dekningsområdet til den foreslåtte plasseringa STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Godtek: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Forsyningar: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Spleisa stasjonen STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bygg ein seperat stasjon STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spleis kontrollpunkt STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg eit seperat kontrollpunkt # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Bygg jernbane STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Bygg elektrisk jernbane STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Bygg monorail STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Bygg maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor. Ctrl vekslar mellom bygg/fjern jernbanekonstruksjon. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bygg jernbanespor med automatisk jernbanemodus. Ctrl vekslar mellom bygg/fjern for jernbanekonstruksjon. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bygg togstall (trengst for bygging og vedlikehald av tog). Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Gjer om jernbane til kontrollpunkt. Ctrl mogleggjer samanhengande kontrollpunkt. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bygg jernbanestasjon. Ctrl mogleggjer samanhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bygg jernbanesignaler. Ctrl byter mellom vingesignal/lyssignal{}Dra for å bygge signaler langs ei strekke med skinner. Ctrl byggjer signaler til neste knutepunkt{}Ctrl+klikk synar/gøymer signalval-vindauget. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bygg jernbanebru. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bygg jernbanetunnel. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Byt mellom bygging/fjerning for jernbanespor, signal, kontrollpunkt og stasjonar. Hald inne CTRL for i tillegg å fjerne spor frå kontrollpunkt og stasjonar STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Gjer om/oppgrader jernbanetypen. Skift vekslar mellom byggjing/syning av prisoverslag. STR_RAIL_NAME_RAILROAD :Jernbane STR_RAIL_NAME_ELRAIL :Elektrisk jernbane STR_RAIL_NAME_MONORAIL :Monorail STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Togstallens retning STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vel retning på togstall # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Kontrollpunkt STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vel kontrollpunkttype # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Vel jernbanestasjontype STR_STATION_BUILD_ORIENTATION :{BLACK}Retning STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Vel retning på jernbanestasjon STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Antal spor STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Vel antal spor stasjonen skal ha STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Plattformlengde STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vel kor lang stasjonen skal vere STR_STATION_BUILD_DRAG_DROP :{BLACK}Dra og slipp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg stasjon med dra og slipp STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vel den stasjonstypen som skal visast STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vel stasjonen du vil byggje STR_STATION_CLASS_DFLT :Standard stasjon STR_STATION_CLASS_WAYP :Kontrollpunkt # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalval STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blokksignal (vingesignal){}Dette er den enklaste typen av signaler som tillet kun eit tog å køyre om gangen. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Inngangssignal (vingesignal){}Grønt så lenge det er eit eller fleir grøne utgangssignal i den følgande seksjonen. Ellers syner det raudt STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utgangssignal (vingesignal){}Verker på samme måte som blokksignal, men er naudsynte for å utløyse rett farge på inngangs- og kombinasjons-forsignaler STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (vingesignal){}Verker som både inn- og utgangssignal. Dette gjer det mogleg å lage store "greinar" av forsignal STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Avansert signal (vingesignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Vanlege avanserte signal kan passerast bakfrå. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einvegs avansert signal (vingesignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Einvegs avanserte signal kan ikkje passerast bakfrå. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blokksignal (lyssignal){}Dette er den enklaste typen av signal som tillet kun eit tog å køyre om gangen. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Inngangssignal (lyssignal){}Grønt så lenge det er eit eller fleire grøne utgangssignal i den påfølgjande seksjonen. Elles syner det raudt STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utgangssignal (lyssignal){}Verker på samme måte som blokksignal, men er naudsynte for å utløyse rett farge på inngangs- og kombinasjons-forsignaler STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (lyssignal){}Verker som både inn- og utgangssignal. Dette gjer det mogleg å lage store "greinar" av forsignal STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Avansert signal (lyssignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Vanlege avanserte signal kan passerast bakfrå. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einvegs avansert signal (lyssignal){}Eit avansert signal tillet fleire tog å køyre samstundes på same signalblokk, dersom toga kan reservere ei rute til ein trygg stoppestad. Einvegs avanserte signal kan ikkje passerast bakfrå. STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signalkonvertering{}Klikk på eit signal for å endra det til valde type, Ctrl+klikk byter mellom forskjellige variantar. Shift+klikk syner prisoverslag STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Tettleik for dra og slepp signalbygging STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minsk tettleik for dra og slepp signalbygging STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Auk tettleik for dra og slepp signalbygging # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Vel jernbanebrutype STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Vel type bru STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Bruval - klikk på brua du vil ha for å byggje ho STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Hengjebru, stål STR_BRIDGE_NAME_GIRDER_STEEL :Bjelkar, stål STR_BRIDGE_NAME_CANTILEVER_STEEL :Frittberande, stål STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hengjebru, betong STR_BRIDGE_NAME_WOODEN :Tre STR_BRIDGE_NAME_CONCRETE :Betong STR_BRIDGE_NAME_TUBULAR_STEEL :Hvelv, stål STR_BRIDGE_TUBULAR_SILICON :Hvelv, Silisium # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Bygg veg STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Bygg trikkespor STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bygg vegstrekning. Ctrl vekslar mellom bygg/fjern for vegkonstruksjon. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bygg trikkesporstrekning. Ctrl vekslar mellom bygg/fjern av trikkespor-konstruksjon. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Bygg veg med automatisk vegmodus. Ctrl vekslar mellom bygg/fjern av vegkonstruksjon. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bygg trikkespor med automatisk trikkemodus. Ctrl vekslar mellom bygg/fjern for trikkekonstruksjon. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bygg garasje (trengst for bygging og vedlikehald av køyretøy). Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bygg trikkestall (trengst for bygging og vedlikehald av trikker). Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bygg busstasjon. Ctrl tillet samanhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bygg passasjertrikkestasjon. Ctrl mogleggjer sammenhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bygg lasteterminal. Ctrl mogleggjer sammenhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Bygg varetrikkestasjon. Ctrl mogleggjer sammenhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktiver/Deaktiver einvegskøyrde vegar STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Bygg bru. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Bygg trikkesporbru. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Bygg tunnel. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg trikkesportunell. Skift vekslar mellom byggjing/syning av prisoverslag. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Byt mellom bygging/fjerning for vegbygging STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Byt mellom bygge/fjerne for trikkesporbygging # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Garasjens retning STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Vel retning på garasje STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Trikkestallens retning STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Vel retning på trikkestall # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bussterminalens retning STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Vel retning på bussterminal STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Lasteterminalens retning STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Vel retning på lasteterminal STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Passasjertrikkestasjonens retning STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vel retning på passasjertrikkestasjon STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Varetrikkestasjonens retning STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vel retning på varetrikkestasjon # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Bygg vannvegar STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vannvegar STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Bygg kanalar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Bygg sluser. Skift vekslar mellom byggjing/syning av prisoverslag. STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Bygg skipsdokk (trengst for bygging og vedlikehald av skip). Skift vekslar mellom byggjing/syning av prisoverslag. STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Bygg hamn. Ctrl mogleggjer sammenhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Plasser bøye, kan brukast til å lage kontrollpunkt. Skift vekslar mellom byggjing/syning av prisoverslag. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Bygg akvedukt. Skift vekslar mellom byggjing/syning av prisoverslag. STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definer vassområde.{}Lag ein kanal. Viss CTRL er halde nede ved havnivå, vil vatnet i staden fløyme over omgivnadene STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Plasser elver # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Skipsdokkens retning STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Vel retning på skipsdokk # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Hamn # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flyplassar STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Bygg flyplass. Ctrl mogleggjer sammenhengande stasjonar. Skift vekslar mellom byggjing/syning av prisoverslag. # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Vel flyplasstype STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Vel storleik og flyplasstype STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Flyplasstype STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Layout {NUM} STR_AIRPORT_SMALL :Liten STR_AIRPORT_CITY :Storby STR_AIRPORT_METRO :Storbyflyplass STR_AIRPORT_INTERNATIONAL :Internasjonal flyplass STR_AIRPORT_COMMUTER :Pendler STR_AIRPORT_INTERCONTINENTAL :Interkontinental STR_AIRPORT_HELIPORT :Helikopterplass STR_AIRPORT_HELIDEPOT :Helikopterhangar STR_AIRPORT_HELISTATION :Helikopterstasjon STR_AIRPORT_CLASS_SMALL :Små flyplassar STR_AIRPORT_CLASS_LARGE :Store flyplassar STR_AIRPORT_CLASS_HUB :Sentrumsflyplassar STR_AIRPORT_CLASS_HELIPORTS :Helikopterplassar STR_STATION_BUILD_NOISE :{BLACK}Støy generert: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landskaping STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Senk eit hjørne av et landstykke. Dra for å senke det fyrste valgte hjørnet, og jevne resten til samme høgde. Ctrl velger stykke diagonalt. Skift vekslar mellom byggjing/syning av prisoverslag. STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Hev eit hjørne av eit landstykke. Dra for å heve det fyrste valde hjørnet, og jevne resten til samme høgde. Ctrl veljer stykke diagonalt. Skift vekslar mellom byggjing/syning av prisoverslag. STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Utjamn land til samme høgde som det fyrste valde hjørnet. Ctrl vel stykke diagonalt. Skift vekslar mellom byggjing/syning av prisoverslag. STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kjøp land for framtidig bruk. Skift vekslar mellom byggjing/syning av prisoverslag. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektval STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vel objekt å byggje. Skift vekslar mellom byggjing/syning av prisoverslag. STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Velg objekttype du vil byggje STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Førehandsvisning av objektet STR_OBJECT_BUILD_SIZE :{BLACK}Storleik: {GOLD}{NUM} x {NUM} ruter STR_OBJECT_CLASS_LTHS :Fyrtårn STR_OBJECT_CLASS_TRNS :Radiosendarar # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Tre STR_PLANT_TREE_TOOLTIP :{BLACK}Vel typen tre som skal plantast. Om ruta allereie har eit tre, vil dette leggje til fleire tre av ulike typar uavhengig av den valde typen STR_TREES_RANDOM_TYPE :{BLACK}Tre av tilfeldig type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plasser tre av tilfeldig type. Skift vekslar mellom byggjing/syning av prisoverslag. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilfeldige tre STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant tilfeldige tre rundt omkring i landskapet # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landgenerering STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Plasser steinete felt i landskapet STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definer ørkenområde.{}Held inne CTRL for å fjerne det STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Auk landarealet som skal senkast/hevast STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Mink storleiken på landarealet som skal hevast/senkast STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generer tilfeldig landskap STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Lag eit nytt scenario STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Nullstill landskap STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjern all eigedom som er ått av spelar frå kartet STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Nullstill landskap STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Er du sikker på at du vil fjerne all spelarått eigedom? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bygenerering STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Ny by STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Grunnlegg ein ny by. Skift vekslar mellom byggjing/syning av prisoverslag. STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Tilfeldig by STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Grunnlegg by ein tilfeldig stad STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Mange tilfeldige byar STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte byar STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Bynamn: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Skriv inn bynamn STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klikk for å skriva inn namn på byen STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Tilfeldig namn STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generer eit nytt tilfeldig namn STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Bystorleik: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Liten STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Middels STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stor STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Tilfeldig STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vel storleik på by STR_FOUND_TOWN_CITY :{BLACK}By STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Storbyar veks raskare enn vanlege byar{}Instillingane avgjer om dei er større når dei vert grunnlagt STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Byars vegløysing: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vel vegløysing nytta for denne byen STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Orginal STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Betre vegar STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 rutenett STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 rutenett STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfeldig # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Finansier ny industri STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vel den rette industritypen frå lista STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Mange tilfeldige industriar STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte industriar STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostnad: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansier # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikjede for {STRING} industri STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industrikjede for {STRING} vare STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Vareproduserande industriar STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Vareaksepterande industriar STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hus STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikk på industrien for å sjå vareleverandørar og kundar STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikk på lasta for å sjå leverandørar og kundar STR_INDUSTRY_DISPLAY_CHAIN :{G=masculine}{BLACK}Forsyningskjede STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Syn vareleverande og varemottakande industriar STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Kople til oversiktskart STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Velg dei viste industriane på oversiktskartet også STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vel last STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vel kva for last du vil syne STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Vel industri STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vel kva for industri du vil syne # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informasjon om landområde STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Pris for å fjerne: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Pris for å fjerne: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Salsinntekt når den er nullstilt: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Veg eigar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trikkespor-eigar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jernbaneskjene-eigar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatar: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Byggd: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjontype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Flyplass klasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Flyplass namn: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Flyplassrutas namn: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Godtekne varer: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Fartsgrense for jernbanespor: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Steinar STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Ulendt terreng STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bart land STR_LAI_CLEAR_DESCRIPTION_GRASS :Gras STR_LAI_CLEAR_DESCRIPTION_FIELDS :Jorde STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snødekt land STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spor STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spor med blokksignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spor med startsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spor med sluttsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spor med kombinerte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spor med avanserte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spor med einvegssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spor med blokk- og startsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spor med blokk- og sluttsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spor med blokk- og kombinerte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spor med blokk- og avanserte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spor med blokk- og einvegssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spor med start- og sluttsignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spor med start- og kombinerte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spor med start- og avanserte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spor med start- og einvegssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spor med slutt- og kombinerte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spor med slutt- og avanserte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spor med slutt- og einvegssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spor med kombinerte og avanserte signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spor med kombinerte og einvegssignal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spor med avanserte og einvegssignal STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} togstall STR_LAI_ROAD_DESCRIPTION_ROAD :Veg STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Veg med gatelykter STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Aveny STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Garasje STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Trikkespor # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (under bygging) STR_LAI_TREE_NAME_TREES :Tre STR_LAI_TREE_NAME_RAINFOREST :Regnskog STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusplanter STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Jernbanestasjon STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Flyplass STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Lasteterminal STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bussterminal STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Hamn STR_LAI_STATION_DESCRIPTION_BUOY :Bøye STR_LAI_STATION_DESCRIPTION_WAYPOINT :Kontrollpunkt STR_LAI_WATER_DESCRIPTION_WATER :Vatn STR_LAI_WATER_DESCRIPTION_CANAL :Kanal STR_LAI_WATER_DESCRIPTION_LOCK :Sluse STR_LAI_WATER_DESCRIPTION_RIVER :Elv STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Kyst eller elvebreidd STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Skipsdokk # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Jernbanetunnel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Vegtunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Hengjebru av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Bjelkebru av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Frittberande bru av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Hengjebru av armert betong (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Trebru (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betongbru (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Hvelvbru (jernbane) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Hengjebru av stål (veg) STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Bjelkebru av stål (veg) STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Frittbærende bru av stål (veg) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Hengjebru av armert betong (veg) STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Trebru (veg) STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betongbru (veg) STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Hvelvbru (veg) STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Radiosendar STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Fyrtårn STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Hovudkontor til firma STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Feltet eigast av eit firma # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opphaveleg opphavsbeskytta av {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheiter reservert STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}. Oversett til nynorsk av Thor Morten Skogrand med fleire. STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel STR_SAVELOAD_LOAD_CAPTION :{WHITE}Last inn spel STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Lagre scenario STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Last inn scenario STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Last inn høgdekart STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Lagre høgdekart STR_SAVELOAD_HOME_BUTTON :{BLACK}Klikk her for å kome til standardmappa for lagring og innlasting STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} ledig STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liste over diskar, mapper og lagra spel STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Gjeldande namn for vald lagra spel STR_SAVELOAD_DELETE_BUTTON :{BLACK}Slett STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Slett valde lagra spel STR_SAVELOAD_SAVE_BUTTON :{BLACK}Lagre STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Lagre gjeldande spel ved å bruke det valde namnet STR_SAVELOAD_LOAD_BUTTON :{BLACK}Last inn STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Last inn det valde spelet STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Speldetaljar STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen informasjon tilgjengeleg STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Skriv inn eit namn på spelet som skal lagrast # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generer ei verd STR_MAPGEN_MAPSIZE :{BLACK}Kartstorleik: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vel storleik på kartet, i ruter. Talet på tilgjengelege ruter vert smått mindre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byar: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal industriar: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Høgd på snøgrensa: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flytt høgda på snøgrensa eitt hakk opp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flytt høgda på snøgrensa eitt hakk ned STR_MAPGEN_RANDOM_SEED :{BLACK}Såtal: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikk her for å taste inn eit såtal STR_MAPGEN_RANDOM :{BLACK}Tilferdiggjer STR_MAPGEN_RANDOM_HELP :{BLACK}Endre såtal som nyttast for terreng-generering STR_MAPGEN_LAND_GENERATOR :{BLACK}Landskapsgenerator: STR_MAPGEN_TREE_PLACER :{BLACK}Trealgoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrengtype STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Havflate: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Elver: STR_MAPGEN_SMOOTHNESS :{BLACK}Glattleik: STR_MAPGEN_VARIETY :{BLACK}Variasjonsdistrubusjon: STR_MAPGEN_GENERATE :{WHITE}Generer # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Kartkantar STR_MAPGEN_NORTHWEST :{BLACK}Nordvest STR_MAPGEN_NORTHEAST :{BLACK}Nordaust STR_MAPGEN_SOUTHEAST :{BLACK}Søraust STR_MAPGEN_SOUTHWEST :{BLACK}Sørvest STR_MAPGEN_BORDER_FREEFORM :{BLACK}Frihands STR_MAPGEN_BORDER_WATER :{BLACK}Vatn STR_MAPGEN_BORDER_RANDOM :{BLACK}Tilfeldig STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Tilfeldig STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuell STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotering av høgdekart: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Høgdekartnamn: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Storleik: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriv inn eit såtal STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Byt høgda på snøgrensa STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Byt startår # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Scenariotype STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flatt land STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generer eit flatt landskap STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tilfeldig landskap STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Høgde på flatt land: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Flytt landhøgda eitt nivå ned STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Flytt landhøgda eitt nivå opp STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Byt høgda på flatt land # Map generation progress STR_GENERATION_WORLD :{WHITE}Genererer verd... STR_GENERATION_ABORT :{BLACK}Avbryt STR_GENERATION_ABORT_CAPTION :{WHITE}Avbryt verdsgenerering STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vil du verkeleg avbryte verdsgenereringa? STR_GENERATION_PROGRESS :{WHITE}{NUM}{NBSP}% ferdig STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generer ei verd STR_GENERATION_RIVER_GENERATION :{BLACK}Elvgenerering STR_GENERATION_TREE_GENERATION :{BLACK}Tregenerering STR_GENERATION_OBJECT_GENERATION :{BLACK}Ikkje-flyttbar generering STR_GENERATION_CLEARING_TILES :{BLACK}Generering av ulendt og steinete område STR_GENERATION_SETTINGUP_GAME :{BLACK}Klargjer spelet STR_GENERATION_PREPARING_TILELOOP :{BLACK}Køyrer rute-løkkje STR_GENERATION_PREPARING_SCRIPT :{BLACK}Kjøyrande script STR_GENERATION_PREPARING_GAME :{BLACK}Gjer klart spelet # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF-Innstillingar STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detaljert NewGRF-informasjon STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktive NewGRF-filer STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inaktive NewGRF-filer STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Vel førehandsoppsett: STR_NEWGRF_FILTER_TITLE :{ORANGE}Søkefilter: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Last inn det valde førehandsoppsettet STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Lagre førehandsoppsettet STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Lagre den noverande lista som eit førehandsoppsett STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Skriv inn eit namn på førehandsoppsettet STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Slett førehandsoppsettet STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Slett det valde førehandsoppsett STR_NEWGRF_SETTINGS_ADD :{BLACK}Legg til STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Legg til den valde NewGRF-fila i konfigurasjonen din STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Søk om att STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Oppdater lista over tilgjengelege NewGRF-filer STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Fjern STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Fjern den valde NewGRF-fila frå lista STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flytt opp STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flytt den valde NewGRF-fila oppover lista STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flytt ned STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flytt den valde NewGRF-fila nedover lista STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Ei liste over NewGRF-filene som er installert. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parametrar STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Vis parametrar STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Syne/gøym palett STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Syne/gøym paletten til den valde NewGRF.{}Gjer dette når grafikken frå denne NewGRF ser rosa ut i spelet STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Bruk forandringane STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Finn manglande innhald på nettet STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Sjekk om det manglande innhaldet kan bli funne på nettet STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Filnamn: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versjon: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Tidlegaste kompatible versjon: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palett: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametrar: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Ingen informasjon tilgjengeleg STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matchande fil blei ikkje funne STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktivert STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ikkje kompatibel med denne versjonen av OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Endre NewGRF-parametrar STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lukk STR_NEWGRF_PARAMETERS_RESET :{BLACK}Nullstill STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Set alle parametrar til standardverdi STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Antal parametrar: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspiser - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Eigar STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspiser objektet til eigarvisninga STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ved {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-variabel 60+x parameter (heksadesimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over einhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved byrjinga STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gå til gitt sprite. Hvis spriten ikkje er ein normal sprite, fortsett til neste normale sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Førre sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over einhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved byrjinga STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Førehandsvisning av valgt sprite. Innrettinga ignorerast når spriten tegnes STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt spriten rundt omkring, for å endre X- og Y-forskyvningene STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskyvning: {NUM}, Y-forskyvning: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vel sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vel ein sprite frå eit vilkårleg sted på skjermen STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Gå til sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Åtvaring: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Feil: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ein fatal NewGRF-feil har oppstått: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} vil ikkje verke med den TTDPatch versjonen som OpenTTD oppgjer STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er for {STRING} utgåva av TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er laga for å brukast saman med {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Ugyldig parameter for {1:STRING}: parameter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} må vere lasta før {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} må vere lasta etter {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} Treng OpenTTD versjon {STRING} eller betre. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF fila den var laga for å omsetje STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :For mange NewGRF-er lasta inn. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Å laste inn {1:STRING} som statisk NewGRF med {STRING} kan forårsaka synkroniseringsfeil. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uventa sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ukjend handling 0 eigenskap {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Forsøk på å bruke ugyldig ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneheld øydelagd grafikk. All øydelagd grafikk vil bli vist som raude spørsmålsteikn (?). STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneheld fleire tilfelle av handling 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lest forbi slutten av pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det nåværande grafikksettet manglar ein del bilete.{}Vennligst oppdater grafikksettet. STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Det valde grafikksettet manglar nokre bilete.{}Vær venleg og forny grafikksettet.{}I og med at du spelar eit {YELLOW}utviklingsutkast av OpenTTD{WHITE} treng du òg eit {YELLOW}utviklingsutkast av grafikksettet{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Etterspurde GRF-ressursar ikkje tilgjengeleg (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} vart deaktivert av {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjend sprite layout-format (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Åtvaring! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du er i ferd med å gjere forandringar i eit køyrande spel. Det kan få OpenTTD til å krasje eller øydelegge speldata. Var vennleg og ikkje rapporter feil på dette.{}Er du heilt sikker på at du vil gjere dette? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan ikkje leggje til fil: GRF ID finns allereie STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchande fil blei ikkje funne (kompatibel GRF-fil lasta inn) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikkje leggje til fil: NyGRF fil grense nådd STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF-fil(ar) lasta inn i plassen for manglande filar STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglande GRF-fil(ar) har vorte deaktiverte STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Manglar GRF fil(er) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Å slå av pause kan medføre at OpenTTD krasjar. Ikkje rapporter feil for etterfølgjande krasjar.{}Vil du verkelig slå av pause? # NewGRF status STR_NEWGRF_LIST_NONE :Ingen STR_NEWGRF_LIST_ALL_FOUND :Alle filer tilstede STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fant kompatible filer STR_NEWGRF_LIST_MISSING :{RED}Manglar filer # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Oppførselen til NewGRF'{0:STRING}' vil sannsynlegvis forårsaka synkroniseringsfeil og/eller krasj. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Det endra tilstanden til lokomotivet til '{1:ENGINE}' mens det er utanfor ein togstall. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Det bytte køyretøylengde for '{1:ENGINE}' mens det var utanfor ein togstall. STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' eigd av '{COMPANY}' har ulovleg lengde. Dette er sansynlegvis forårsaka av eit problem med NewGRFar. Spelet kan bli usynkronisert eller krasje. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gjer gal informasjon. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Vare/ombyggjings-informasjon for '{1:ENGINE}' er forskjellig frå kjøpslista etter konstruksjon. Dette kan føra til at autofornying/erstatning ikkje tilpasser riktig. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' forårsaka ei uendelig løkkje i produksjonskallet. STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tilbakekall {1:HEX} rapporterte ukjend/ugyldig resultat {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} med STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannar NewGRF-er STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skannar NewGRF-er. Avhengig av antalet kan dette ta ei stund... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" -er} skanna, ut av {NUM} NewGRF{P "" -er} totalt STR_NEWGRF_SCAN_ARCHIVES :Skannar arkiv # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Skiltliste - {COMMA} Skilt{P "" er} STR_SIGN_LIST_MATCH_CASE :{BLACK}Skriftformgjenkjenning STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Byt mellom skriftformgjenkjennelse ved sammenligning av skiltnavn mot filterstrengen # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Skriv inn skilttekst STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Gå til neste skilt STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til førre skilt STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriv inn eit namn for skiltet # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Byar STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ingen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bynamn - Klikk på bynamnet for å sjå byen i hovedvisninga. Ctrl+klikk syner byen i eit nytt tilleggsvindauge. STR_TOWN_POPULATION :{BLACK}Verdsinnbyggjartal: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (By) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Innbyggjartal: {ORANGE}{COMMA}{BLACK} Antal hus: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasjerar førre månad: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post førre månad: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Varer naudsynt for folketalsauke: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} naudsynt STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} naudsynt om vinteren STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} levert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (fortsatt naudsynt) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (levert) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Byar veks kvar {ORANGE}{COMMA}{BLACK} dag STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Byar veks kvar {ORANGE}{COMMA}{BLACK} dag (sponsa) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}By veks {RED}ikkje{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Byens støygrense: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Midtstill hovedvisninga på byen. CTRL+klikk syner byen i eit nytt tilleggsvindauge STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Bystyre STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Syne informasjon om bystyret STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Byt namn på byen STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Utvid STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Auk bystorleik STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Slett STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Slett byen heilt STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Byt namn # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Bystyret i {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Vurdering av transportfirma: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Tilgjengelege handlingar : STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liste over ting som kan gjerast for/i byen - Klikk på val for meir informasjon STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Gjer det STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Gjer den valde handlinga frå lista over STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Liten reklamekampanje STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Middels stor reklamekampanje STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Stor reklamekampanje STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Finansier lokal ombyggjing av vegnettet STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bygg statue av grunnleggjaren til firmaet STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Finansier nye bygningar STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kjøp eksklusive transportrettar STR_LOCAL_AUTHORITY_ACTION_BRIBE :Bestikk bystyret STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Start ein liten lokal reklamekampanje for å trekkje til deg fleire passasjerar og varer til tenestene dine.{} Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Start ein middels stor lokal reklamekampanje for å trekkje til deg fleire passajerar og varer til tenestene dine.{} Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Start ein stor lokal reklamekampanje for å trekkje til deg fleire passasjerar og varer til tenestene dine.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Finansier ombyggjing av det lokale vegnettet. Vil gje vegproblem dei neste 6 månadene.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bygg ein statue for å heidre grunnleggjaren av firmaet.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Finansier bygging av nye forretningsbygg i byen.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kjøp ekslusive transportrettar for eit år i byen. Bystyret tillet då berre bruk av tenestene dine.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bestikk bystyret til å forbetre vurderinga av firmaet, du risikerer bøter dersom du vert oppdaga.{}Kostnad: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Mål STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ingen - STR_GOALS_COMPANY_TITLE :{BLACK}Målet åt firmaet: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på mål for å gå til industri/by/rute. Ctrl+klikk åpner eit nytt tilleggsvindauge over industrien/byen/ruta sin lokasjon. # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Spørsmål STR_GOAL_QUESTION_CAPTION_INFORMATION :Informasjon STR_GOAL_QUESTION_CAPTION_WARNING :Åtvaring STR_GOAL_QUESTION_CAPTION_ERROR :Feil ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nei STR_GOAL_QUESTION_BUTTON_YES :Ja STR_GOAL_QUESTION_BUTTON_DECLINE :Avslå STR_GOAL_QUESTION_BUTTON_ACCEPT :Godta STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorer STR_GOAL_QUESTION_BUTTON_RETRY :Prøv att STR_GOAL_QUESTION_BUTTON_PREVIOUS :Førre STR_GOAL_QUESTION_BUTTON_NEXT :Neste STR_GOAL_QUESTION_BUTTON_STOP :Stopp STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Køyr STR_GOAL_QUESTION_BUTTON_CONTINUE :Hald fram STR_GOAL_QUESTION_BUTTON_RESTART :Start om STR_GOAL_QUESTION_BUTTON_POSTPONE :Utsett STR_GOAL_QUESTION_BUTTON_SURRENDER :Gje opp STR_GOAL_QUESTION_BUTTON_CLOSE :Lukk # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidiar STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Tilbydde subsidiar: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} frå {STRING} til {STRING}{YELLOW} (innan {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}Ingen STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tenester som er subsidierte frå før: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} frå {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, til {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på teneste for å midtstille hovedvisninga på industri/by. Ctrl+klikk syner industri/by i eit nytt tilleggsvindauge. # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnamn - Klikk på namnet for å syne stasjonen i hovedvisninga. CTRL+klikk syner stasjonen i eit tilleggsvindauge STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hald inne CTRL for å velje fleire STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stasjon{P "" ar} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ingen - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Vel alle anlegga STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Vel alle varetypar (inkludert last som ikkje ventar) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Inga varer av noko slag ventar # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ventar: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} på veg frå {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aksepterer STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Syne liste over godtekne varer STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Godtek: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Eigaren av stasjonen har eksklusive transportrettar i den her byen. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} har kjøp eksklusive transportrettar i byen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Syne stasjonsvurdering STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokal vurdering av transporttenester: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}{NBSP}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Forferdeleg STR_CARGO_RATING_VERY_POOR :Særs skralt STR_CARGO_RATING_POOR :Dårleg STR_CARGO_RATING_MEDIOCRE :Middels STR_CARGO_RATING_GOOD :God STR_CARGO_RATING_VERY_GOOD :Særs god STR_CARGO_RATING_EXCELLENT :Utmerkt STR_CARGO_RATING_OUTSTANDING :Framifrå ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Midtstill hovedvisninga på stasjonen. CTRL+klikk syner stasjonen i eit nytt tilleggsvindauge STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Byt namn på stasjonen STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Syne alle tog som har denne stasjonen på ruteplanen sin STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Syne alle køyretøy som har denne stasjonen på ruteplanen sin STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Syne alle luftfartøy som har denne stasjonen på ruteplanen sin STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Syne alle skip som har denne stasjonen på ruteplanen sin STR_STATION_VIEW_RENAME_STATION_CAPTION :Endre namnet på stasjon/lasteterminal STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Steng flyplassen STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Hindre at luftfartøy lander på flyplassen # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Midtstill hovedvisninga på kontrollpunktet. CTRL+klikk syner kontrollpunktet i eit nytt tilleggsvindauge STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Byt namn på kontrollpunkt STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Midtstill hovedvisninga på bøyen. CTRL+klikk syner bøyen i eit nytt tilleggsvindauge STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Byt namn på bøyen STR_EDIT_WAYPOINT_NAME :{WHITE}Endre namn på kontrollpunkt # Finances window STR_FINANCES_CAPTION :{WHITE}Rekneskapen til {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Utgifter/inntekter STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruksjon STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nye køyretøy STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Driftskostnader på tog STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Driftskostnader på køyretøy STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Driftskostnader på luftfartøy STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Driftskostnader på skip STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Vedlikehald av eigedom STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Inntekter frå tog STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Inntekter frå køyretøy STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Inntekter frå luftfartøy STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Inntekter frå skip STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Renter STR_FINANCES_SECTION_OTHER :{GOLD}Anna STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Totalt: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Saldo STR_FINANCES_LOAN_TITLE :{WHITE}Lån STR_FINANCES_MAX_LOAN :{WHITE}Maks. lån: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Lån meir ({CURRENCY_LONG}) STR_FINANCES_BORROW_TOOLTIP :{BLACK}Auk storleiken på lånet. CTRL+klikk tek opp maks. lån. STR_FINANCES_REPAY_BUTTON :{BLACK}Betal attende ({CURRENCY_LONG}) STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betal attende delar av lånet. CTRL+Klikk betal attende så mykje som mogleg STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktur # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Sjef) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Grunnlagt: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Firmafarge: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Køyretøy: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tog STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} køyretøy STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} luftfartøy STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} skip STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ingen STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmaverdi: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}{NBSP}% eigast av {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktur: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} togsporruter STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} vegruter STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vannruter STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stasjonsruter STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} flyplassar STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Ingen STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bygg hovudkontor STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg firmaet's hovedkvarter STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Syne hovudkontor STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Syne firmaets hovudkontor STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Omplasser hovudkvarter STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flytt hovudkontoret til firmaet, til ein kostnad av 1{NBSP}% av firmaverdien. Shift+klikk viser prisoverslag utan å flytte hovudkontoret. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljar STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vis detaljert infrastrukturteljing STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nytt andlet STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Gje sjefen ei andletslyfting STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Firmafarge STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Byt firmafarge STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Firmanamn STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Byt firmanamn STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Namnet til sjefen STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Byt namnet på sjefen STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kjøp 25{NBSP}% av aksjane i firmaet STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sel 25{NBSP}% av aksjane i firmaet STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kjøp 25{NBSP}% av aksjane i firmaet. Skift-klikk viser prisoverslag utan å kjøpe aksjar STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sel 25{NBSP}% av aksjane i firmaet. Skift-klikk viser prisoverslag utan å selje aksjar STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Firmanamn STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Namnet til sjefen STR_BUY_COMPANY_MESSAGE :{WHITE}Me ser etter eit firma som er villig til å overta firmaet vårt.{}{}Vil du kjøpe {COMPANY} for {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktur tilhøyrer {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Togsporbitar: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signal STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vegstubbar: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Veg STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Trikkespor STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vannruter: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanalar STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjonar: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasjonsruter STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flyplassar STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/år ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/år # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industriar STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}% transportert) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}%/{COMMA}{NBSP}% transportert) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinamn - Klikk på namnet for å syne industrien i hovedvisninga. CTRL+klikk syner industrien i eit tilleggsvindauge # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksjon førre månad: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transportert) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på industrien. CTRL+klikk syner industrien i eit nytt tilleggsvindauge STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Varer som ventar på å bli behandla: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Lagar: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Lagar: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Byt produksjon (8-gongen, opptil 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Endre produksjonsnivå (prosent, opp til 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tog STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} køyretøy STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} skip STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Luftfartøy STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Tog - klikk på tog for meir informasjon STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Køyretøy - klikk på køyretøy for informasjon STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skip - klikk på skip for meir informasjon STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Luftfartøy - klikk på luftfartøy for meir informasjon STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Forteneste i år: {CURRENCY_LONG} (førre år: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Tilgjengelege tog STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Tilgjengelege køyretøy STR_VEHICLE_LIST_AVAILABLE_SHIPS :Tilgjengelege skip STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Tilgjengelege luftfartøy STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Sjå ei liste over mogelege modellar for denne køyretøytypen. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Behandle liste STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instruksjonar til alle køyretøy i denne lista STR_VEHICLE_LIST_REPLACE_VEHICLES :Byt ut køyretøy STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send til vedlikehald STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Send til togstall STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Send til garasje STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send til skipsdokk STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send til hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikk for å stoppe alle køyretøya i listen STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikk for å starte alle køyretøya på lista STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Delte ordre av {COMMA} køyretøy # Group window STR_GROUP_ALL_TRAINS :Alle tog STR_GROUP_ALL_ROAD_VEHICLES :Alle køyretøty STR_GROUP_ALL_SHIPS :Alle skip STR_GROUP_ALL_AIRCRAFTS :Alle luftfartøy STR_GROUP_DEFAULT_TRAINS :Ugrupperte tog STR_GROUP_DEFAULT_ROAD_VEHICLES :køyretøy utan gruppe STR_GROUP_DEFAULT_SHIPS :Ugrupperte skip STR_GROUP_DEFAULT_AIRCRAFTS :Luftfartøy utan gruppe STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - Klikk på ei gruppe for å få ei liste over alle køyretøya i den STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikk for å lage ei gruppe STR_GROUP_DELETE_TOOLTIP :{BLACK}Slett den valde gruppa STR_GROUP_RENAME_TOOLTIP :{BLACK}Gje den valde gruppa nytt namn STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikk for å beskytte denne gruppa frå å global automatisk erstatning STR_GROUP_ADD_SHARED_VEHICLE :Legg til delte køyretøy STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køyretøy STR_GROUP_RENAME_CAPTION :{BLACK}Gje nytt namn til ei gruppe # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye tog/vogner for jernbane STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nytt elektrisk tog STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nye tog/vogner for monorail STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nye tog/vogner for maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nye tog/vogner STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nye køyretøy STR_BUY_VEHICLE_SHIP_CAPTION :Nye skip STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nytt luftfartøy STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} Vekt: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hastigheit: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hastigheit: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Fart på hav: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Fart på kanal/elv: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Driftskostnad: {GOLD}{CURRENCY_LONG}/år STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasitet: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(ombyggbart) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Designa: {GOLD}{NUM}{BLACK} Levetid: {GOLD}{COMMA} år STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. pålitelegheit: {GOLD}{COMMA}{NBSP}% STR_PURCHASE_INFO_COST :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vekt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} Hastigheit: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapasitet: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Lokomotivvogner: {GOLD}+{POWER}{BLACK} Vekt: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Ombyggbart til: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Alle varetypar STR_PURCHASE_INFO_ALL_BUT :Alt utanom {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. trekkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rekkevidde: {GOLD}{COMMA} ruter STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Tog-/vognliste - klikk på tog/vogn for meir informasjon STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Køyretøyliste - klikk på køyretøy for meir informasjon STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skipsliste - klikk på skip for meir informasjon STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Luftfartøyliste - klikk på luftfartøy for meir informasjon STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kjøp tog/vogner STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kjøp køyretøy STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Bygg skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Bygg luftfartøy STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Bygg den valde farkosten. Skift-klikk viser prisoverslag utan å kjøpe. STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Bygg det valde køyretøyet. Skift-klikk viser prisoverslag utan å kjøpe. STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Bygg det valde skipet. Skift-klikk viser prisoverslag utan å kjøpe. STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Bygg det valde luftfartøyet. Skift-klikk viser prisoverslag utan å kjøpe. STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Gje nytt namn STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Endre namn STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Endre namn STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Endre namn STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Gje nytt namn til tog-/vogntypen STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Endre namnet til køyretøytypen STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Endre namnet til skipstypen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Endre namn til luftfartøytype STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Gje tog/vogn nytt namn STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Endre namnet til køyretøytypen STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Endre namnet til skipstypen STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Endre namn til luftfartøytype # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Byt namn på garasje/stall/hangar/dokk STR_DEPOT_RENAME_DEPOT_CAPTION :Byt namn på garasje/stall/hangar/dokk STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} køyretøy{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tog - dra vogn/tog med venstreklikk for å leggje til/fjerne frå tog, høgreklikk for meir informasjon. Held inne CTRL for å gjere begge funksjonane gjeldande for heile togkjeda STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Køyretøy - høgreklikk på køyretøy for meir informasjon STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skip - høgreklikk på skip for meir informasjon STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Luftfartøy - høgreklikk på luftfartøy for meir informasjon STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Dra tog (vogn) her for å selje STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Dra køyretøy her for å selje det STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Dra skip her for å selje det STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Dra luftfartøy her for å selje STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Dra lokomotivet hit for å selje heile toget STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sel alle toga i togstallen STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sel alle køyretøya i garasjen STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Sel alle skipa i skipsdokken STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Sel alle luftfartøya i hangaren STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Autoerstatt alle toga i togstallen STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autoerstatt alle køyretøya i garasjen STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autoerstatt alle skipa i skipsdokken STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autoerstatt alle luftfartøya i hangaren STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nye tog/vogner STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nye køyretøy STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nye skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nytt luftfartøy STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Bygg nytt tog (vogn) STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Bygg nytt køyretøy STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Bygg nytt skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Bygg nytt luftfartøy STR_DEPOT_CLONE_TRAIN :{BLACK}Klon tog STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klon køyretøy STR_DEPOT_CLONE_SHIP :{BLACK}Klon skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klon luftfartøy STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dette vil lage ein kopi av eit lokomotiv inkludert alle vognene. Klikk på denne knappen og etter det på eit anna tog. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dette vil lage ein kopi av eit køyretøy. Klikk denne knappen og etter det på eit køyretyg inni eller utanfor garasjen. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dette vil laga ein kopi av eit skip. Klikk på denne knappen og etter det på eit anna skip. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil lage ein kopi av eit luftfartøy. Klikk denne knappen og etter det på eit anna luftfartøy. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på togstallen. CTRL+klikk syner togstallen i eit nytt tilleggsvindauge STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på garasjen. CTRL+klikk syner garasjen i eit nytt tilleggsvindauge STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på skipsdokken. CTRL+klikk syner skipsdokken i eit nytt tilleggsvindauge STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på hangaren. CTRL+klikk syner hangaren i eit nytt tilleggsvindauge STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Syne ei liste over alle toga som har denne togstallen i ordrane sine. STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Syne ei liste over alle køyretøya som har denne garasjen i ordrane STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Syne ei liste over alle skipa som har denne skipsdokken i ordrane STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Syne ei liste over alle luftfartøya som har denne hangaren i ordrane STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikk for å stoppe alle toga i togstallen STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikk for å stoppe alle køyretøya i garasjen STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klikk for å stoppe alle skipa i skipsdokken STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klikk for å stoppe alle luftfartøya i hangaren STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikk for å starte alle toga i togstallen STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikk for å starte alle køyretøya i garasjen STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klikk for å starte alle skipa i skipsdokken STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klikk for å starte alle luftfartøya i hangaren STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du er i ferd med å selje alle køyretøya i garasje/stall/hangar/dokk. Er du sikker? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Melding frå køyretøysprodusent STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Me har nyleg designa eit nytt {STRING} - er du interessert i å teste denne farkosten i eit år, slik at me kan sjå korleis det verkar før me gjer han tilgjengeleg på markedet? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lokomotiv STR_ENGINE_PREVIEW_ROAD_VEHICLE :køyretøy STR_ENGINE_PREVIEW_AIRCRAFT :luftfartøy STR_ENGINE_PREVIEW_SHIP :skip STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail-lokomotiv STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-lokomotiv STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastigheit: {VELOCITY} Kraft: {POWER}{}Driftskostnader: {CURRENCY_LONG}/år{}Kapasitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pris: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastigheit: {VELOCITY} Kraft: {POWER} Maks. trekkraft: {6:FORCE}{}Driftskostnad: {4:CURRENCY_LONG}/yr{}Kapasitet: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hastigheit: {VELOCITY}{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hastigheit: {VELOCITY}{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnad: {CURRENCY_LONG} Maks. fart: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks. fart: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Erstatt {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Tog STR_REPLACE_VEHICLE_ROAD_VEHICLE :Køyretøy STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Luftfartøy STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vel lokomotivtype å byte ut STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vel den nye typen lokomotiv du vil at skal ta over for den du har vald til venstre STR_REPLACE_VEHICLES_START :{BLACK}Start utskiftinga av køyretøy STR_REPLACE_VEHICLES_NOW :Forny alle køyretøya no STR_REPLACE_VEHICLES_WHEN_OLD :Berre forny gamle køyretøy STR_REPLACE_HELP_START_BUTTON :{BLACK}Klikk denne knappen dersom du vil byte ut det valde lokomotivet på venstresida med det valde lokomotivet på høgresida STR_REPLACE_NOT_REPLACING :{BLACK}Erstatter ikkje STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ingen køyretøy vald STR_REPLACE_VEHICLES_STOP :{BLACK}Stopp utskiftinga av køyretøy STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk denne knappen for å avbryte utskiftinga av lokomotivet du har vald på venstresida STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Erstatter: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift mellom tog- og vognerstatningsvindauget STR_REPLACE_ENGINES :Lokomotiv STR_REPLACE_WAGONS :Vogner STR_REPLACE_HELP_RAILTYPE :{BLACK}Vel jernbanetypen du vil velje lokomotiv frå STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Syner kva lokomotiv som tek over for det valde lokomotivet på venstresida STR_REPLACE_RAIL_VEHICLES :Jernbanekøyretøy STR_REPLACE_ELRAIL_VEHICLES :Elektriske jernbanekøyretøy STR_REPLACE_MONORAIL_VEHICLES :Monorail-køyretøy STR_REPLACE_MAGLEV_VEHICLES :Maglev-køyretøy STR_REPLACE_REMOVE_WAGON :{BLACK}Vognfjerning: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Lat den automatiske utskiftinga behalde lengda på toget ved å fjerne vogner (frå første vogn), dersom utskiftinga gjer toget lenger. # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Syne toget sin gjeldande posisjon. CTRL+klikk vil følgja toget i hovudvindauget STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Syne køyretøyet sin gjeldande posisjon. CTRL+klikk vil følgja køyretøyet i hovudvindauget STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Syne skipet sin gjeldande posisjon. CTRL+klikk vil følgja skipet i hovudvindauget STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Syne luftfartøyet sin gjeldande posisjon. CTRL+klikk vil følgja luftfartøyet i hovudvindauget STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send toget til togstallen. CTRL+klikk for å berre utføre vedlikehald STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send køyretøyet til garasjen. CTRL+klikk for å berre sende til vedlikehald STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send skipet til skipsdokken. CTRL+klikk for å berre sende til vedlikehald STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send luftfartøyet til hangaren. CTRL+klikk for å berre utføre vedlikehald STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Dette vil lage ein kopi av eit lokomotiv inkludert alle vognene. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Dette vil lage ein kopi av eit køyretøy. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Dette vil laga ein kopi av eit skip. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Dette vil lage ein kopi av eit luftfartøy. Ctrl+klikk deler ordrane. Skift+klikk syner prisoverslag utan å kjøpe. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Tving toget til å køyre utan å ha fått klarsignal STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Bygg om toget til å frakte ein annan varetype STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Bygg om køyretøyet til å frakte ein annan varetype STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Bygg om skipet til å frakte ein annan varetype STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Bygg om luftfartøyet til å frakte ein annan varetype STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Byt køyreretning STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Byt køyreretning STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Syne ordrane til toget. CTRL+klikk syner togets rutetabell STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Syne ordrelista til køyretøyet. CTRL+klikk syner rutetabell STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Syne ordrane til skipet. CTRL+klikk syner rutetabell STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Syne ordrane til luftfartøyet. CTRL+klikk syner luftfartøyets rutetabell STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Syne detaljar om toget STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Syne køyretøydetaljar STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Syne skipsdetaljar STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Syne detaljar om luftfartøy STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldande togstatus - klikk her for å stoppe/starte tog. CTRL+klikk ruller til destinasjonen STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldande køyretøystatus - klikk her for å stoppa/starta køyretøy. CTRL+klikk ruller til destinasjonen STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldende skipsstatus - klikk her for å stoppe/starte skip. CTRL+klikk ruller til destinasjonen STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldande luftfartøystatus - klikk her for å stoppe/starte luftfartøy. CTRL+klikk ruller til destinasjonen # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lastar / Lossar STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Reiser STR_VEHICLE_STATUS_CRASHED :{RED}Krasja! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Havarert STR_VEHICLE_STATUS_STOPPED :{RED}Stoppa STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stoppar, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ingen straum STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Ventar på klart spor STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}For langt til neste destinasjon STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}På veg til {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Ingen ordre, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Har kurs mot {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}På veg mot {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Vedlikehald ved {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Stoppet STR_VEHICLE_COMMAND_STOPPED :{RED}Stoppet STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Startet STR_VEHICLE_COMMAND_STARTED :{GREEN}Startet # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detaljar) STR_VEHICLE_NAME_BUTTON :{BLACK}Namn STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Namngje tog STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Namngje køyretøy STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Namngje skip STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Namngje luftfartøy STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftskostnadar: {LTBLUE}{CURRENCY_LONG}/år # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} år ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. hastigheit: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks fart: {LTBLUE}{VELOCITY} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks. hastigheit: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks. hastigheit: {LTBLUE}{VELOCITY} {BLACK}Maks. trekkraft: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Overskudd i år: {LTBLUE}{CURRENCY_LONG} (forrige år: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Pålitelegheit: {LTBLUE}{COMMA}{NBSP}% {BLACK}Havari sidan sist vedlikehald: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Bygd: {LTBLUE}{NUM}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}Ingen{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasitet:{LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Overfør kreditt: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Vedlikehaldsintervall: {LTBLUE}{COMMA}dagar{BLACK} Førre vedlikehald: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Vedlikehaldsintervall: {LTBLUE}{COMMA}{NBSP}%{BLACK} Førre vedlikehald: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Auk vedlikehaldsintervall med 10. CTRL+klikk aukar vedlikehaldsintervallet med 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minsk vedlikehaldsintervall av tog med 10. CTRL+klikk minskar intervallet med 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Eining for vedlikehaldsintervall STR_VEHICLE_DETAILS_DEFAULT :Standard STR_VEHICLE_DETAILS_DAYS :Dagar STR_VEHICLE_DETAILS_PERCENT :Prosent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Namngje tog STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Namngje køyretøy STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Namngje skip STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Namngje luftfartøy # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Bygd: {LTBLUE}{NUM}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total varekapasitet for dette toget: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Tom STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} frå {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} frå {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Varer STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Syne detaljar om vogninnhald STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informasjon STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Syne detaljar om tog STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasitet STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Syne kapasiteten til vognene STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Total last STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Syne total kapasitet på vognene, sortert etter varetype STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasitet: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (bygg om) STR_REFIT_TITLE :{GOLD}Vel varetype: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Ombyggjingskostnader: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Inntekt frå ombygging: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kostnad for ombygging: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Inntekter frå ombygging: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Velg køyretyg for ombygging. Dra med musa for å velje fleire køyretyg. Klikk på eit tomt område for å velje heile køyretyget. Ctrl+klikk vil velje eit køyretyg og den føgjande kjeda. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vel kva type varer toget skal frakte STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vel kva type varer køyretøyet skal frakte STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Vel kva type varer skipet skal frakte STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vel kva type varer luftfartøyet skal frakte STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Bygg om toget STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Bygg om bil STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Bygg om skip STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Bygg om luftfartøy STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Bygg om toget til å frakte den valde varetypen STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Bygg om køyretøyet til å frakte den valde varetypen STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Bygg om skipet til å frakte den valde varetypen STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Bygg om luftfartøyet til å frakte den valde varetypen # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ordre) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Rutetabell STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Byt til rutetabellvising STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordreliste - klikk på ein ordre for å velje han. Ctrl+klikk ruller til stasjonen STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Slutt på ordre - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Slutt på delte ordrar - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Direkte STR_ORDER_GO_TO :Køyr til STR_ORDER_GO_NON_STOP_TO :Køyr direkte til STR_ORDER_GO_VIA :Køyr via STR_ORDER_GO_NON_STOP_VIA :Køyr direkte via STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Byt stopprutinane for den merkte ordra STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Last fullt, vilkårleg last STR_ORDER_DROP_LOAD_IF_POSSIBLE :Last på om tilgjengeleg STR_ORDER_DROP_FULL_LOAD_ALL :Last fullt av alle varetypar STR_ORDER_DROP_FULL_LOAD_ANY :Last fullt, vilkårleg last STR_ORDER_DROP_NO_LOADING :Ingen lasting STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Byt lastingsrutinane for den merkte ordren STR_ORDER_TOGGLE_UNLOAD :{BLACK}Loss av alt STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Loss av dersom godtatt STR_ORDER_DROP_UNLOAD :Loss av alt STR_ORDER_DROP_TRANSFER :Overfør STR_ORDER_DROP_NO_UNLOADING :Ingen lossing STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Byt lossingsrutinane for den merkte ordren STR_ORDER_REFIT :{BLACK}Bygg om STR_ORDER_REFIT_TOOLTIP :{BLACK}Vel hvilken varetype det skal byggjast om til i denne ordren. CTRL+klikk for å fjerne ombyggjingsordra STR_ORDER_REFIT_AUTO :{BLACK}Automatisk ombygging STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Velg kva for ein varetype det skal automatisk byggjast om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsinstruksar. Automatisk ombygging vil berre bli utført hvis køyretyget tillet det. STR_ORDER_DROP_REFIT_AUTO :Fast varetype STR_ORDER_DROP_REFIT_AUTO_ANY :Tilgjengeleg vare STR_ORDER_SERVICE :{BLACK}Vedlikehald STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alltid gå STR_ORDER_DROP_SERVICE_DEPOT :Vedlikehald om naudsynt STR_ORDER_DROP_HALT_DEPOT :Stopp STR_ORDER_SERVICE_TOOLTIP :{BLACK}Hopp over ordren dersom ikkje vedlikehald trengst STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Køyretøy-data å basere hopp på # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Lastprosent STR_ORDER_CONDITIONAL_RELIABILITY :Pålitelegheit STR_ORDER_CONDITIONAL_MAX_SPEED :Maks. hastigheit STR_ORDER_CONDITIONAL_AGE :Alder (år) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Treng vedlikehald STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alltid STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Attvarande levetid (år) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Korleis samanlikne køyretøyets data til den gjevne verdien STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er lik STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :er ikkje lik STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :er mindre enn STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er mindre eller lik STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :er meir enn STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er meir eller lik STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :er rett STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :er feil STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Verdien til å samanlikne køyretøyets data mot STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Skriv inn verdi å samanlikne med STR_ORDERS_SKIP_BUTTON :{BLACK}Hopp over STR_ORDERS_SKIP_TOOLTIP :{BLACK}Hopp over gjedande ordre, og start neste. CTRL+klikk hopper til valt ordre STR_ORDERS_DELETE_BUTTON :{BLACK}Slett STR_ORDERS_DELETE_TOOLTIP :{BLACK}Slett den valde ordren STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Slett alle ordrar STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stop deling STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stop deling av ordrelista. Ctrl+Klikk sletter i tillegg ordrane for dette køyretøyet STR_ORDERS_GO_TO_BUTTON :{BLACK}Køyr til STR_ORDER_GO_TO_NEAREST_DEPOT :Køyr til næraste garasje/stall/hangar/dokk STR_ORDER_GO_TO_NEAREST_HANGAR :Gå til næraste hangar STR_ORDER_CONDITIONAL :Betinga ordrehopp STR_ORDER_SHARE :Del ordrar STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Set inn ein ny ordre før den valde ordren, eller legg til i slutten av lista. Ctrl gjer ordren 'full last, einkvar varetype', kontrollpunktordre 'direkte' og verkstadsordre 'vedlikehald'. 'Del ordre' eller Ctrl let dette køyretyget dele ordrer med det valde køyretyget. Ved å klikke på eit køyretyg, kopierast ordrene frå dette køyretyget. Ein verkstadsordre slår av automatisk vedlikehald av kjøyretyget STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Syne alle køyretøy som delar denne ruteplanen # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Køyr om {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Køyr utan stopp om {WAYPOINT} STR_ORDER_SERVICE_AT :Vedlikehald ved STR_ORDER_SERVICE_NON_STOP_AT :Vedlikehald direkte ved STR_ORDER_NEAREST_DEPOT :næraste STR_ORDER_NEAREST_HANGAR :den næraste hangaren STR_ORDER_TRAIN_DEPOT :Togstall STR_ORDER_ROAD_VEHICLE_DEPOT :Garasje STR_ORDER_SHIP_DEPOT :Skipsdokk STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Bygg om til {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Bygg om til {STRING} og stopp) STR_ORDER_STOP_ORDER :(Stopp) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(implisitt) STR_ORDER_FULL_LOAD :(Last fullt) STR_ORDER_FULL_LOAD_ANY :(Last fullt, vilkårleg last) STR_ORDER_NO_LOAD :(Ingen lasting) STR_ORDER_UNLOAD :(Loss av og last på varer) STR_ORDER_UNLOAD_FULL_LOAD :(Loss av og vent til lasten er full) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Loss av og vent på første fulle last) STR_ORDER_UNLOAD_NO_LOAD :(Loss av og forlat tom) STR_ORDER_TRANSFER :(Overfør og last på varer) STR_ORDER_TRANSFER_FULL_LOAD :(Overfør og vent på full last) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Overfør og vent på første fulle last) STR_ORDER_TRANSFER_NO_LOAD :(Overfør og forlat tom) STR_ORDER_NO_UNLOAD :(Ingen avlessing og less på varer) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Inga avlessing og vent på full last) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Inga avlessing og vent på første fulle last) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ingen lossing og ingen lasting) STR_ORDER_AUTO_REFIT :(Automatisk ombyggjing til {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Full last med automatisk ombyggjing til {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Full last av minst ein varetype med automatisk ombyggjing til {STRING}) STR_ORDER_UNLOAD_REFIT :(Less av og ta last med automatisk ombyggjing til {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Less av og vent på full last med automatisk ombyggjing til {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Less av og vent på fyrste fulle last med automatisk ombyggjing til {STRING}) STR_ORDER_TRANSFER_REFIT :(Overfør og less på varer med automatisk ombygging til {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overfør og vent på full last med automatisk ombyggjing til {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overfør og vent på fyrste fulle last med automatisk ombyggjing til {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Inga avlessing og last på varer med automatisk ombyggjing til {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Inga avlessing og vent på full last med automatisk ombyggjing til {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Inga avlessing og vent på fyrste fulle last med automatisk ombyggjing til {STRING}) STR_ORDER_AUTO_REFIT_ANY :tilgjengeleg vare STR_ORDER_STOP_LOCATION_NEAR_END :[starten] STR_ORDER_STOP_LOCATION_MIDDLE :[midten] STR_ORDER_STOP_LOCATION_FAR_END :[andre enden] STR_ORDER_OUT_OF_RANGE :{RED} (Neste destinasjon er utanfor rekkevidde) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Hopp til rekkjefølgje {COMMA} STR_ORDER_CONDITIONAL_NUM :Hopp til rekkjefølgje {COMMA} når {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Hopp til rekkjefølgje {COMMA} når {STRING} {STRING} STR_INVALID_ORDER :{RED} (Ugyldig ordre) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Rutetabell) STR_TIMETABLE_ORDER_VIEW :{BLACK}Ordrer STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Byt til ordrevising STR_TIMETABLE_TOOLTIP :{BLACK}Rutetabell - klikk på ein ordre for å merka han STR_TIMETABLE_NO_TRAVEL :Ingen reise STR_TIMETABLE_NOT_TIMETABLEABLE :Reis (automatisk; blir sett på ruteplan med neste manuelle ordre) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reis (ikkje på rutetabell) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis med maks {2:VELOCITY} (utan rutetabell) STR_TIMETABLE_TRAVEL_FOR :Reis i {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis i {STRING} med maks {VELOCITY} STR_TIMETABLE_STAY_FOR :og bli værande i {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og reis i {STRING} STR_TIMETABLE_DAYS :{COMMA} dag{P "" ar} STR_TIMETABLE_TICKS :{COMMA} tikk STR_TIMETABLE_TOTAL_TIME :{BLACK}Det vil ta {STRING} å gjere ferdig denne rutetabellen STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Det vil ta minst {STRING} å gjere ferdig denne rutetabellen ( ikkje alle på rutetabellen STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dette køyretøyet er presis STR_TIMETABLE_STATUS_LATE :{BLACK}Dette køyretøyet er {STRING} for seint STR_TIMETABLE_STATUS_EARLY :{BLACK}Dette køyretøyet er {STRING} for tidleg STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne rutetabellen har ikkje starta enda STR_TIMETABLE_STATUS_START_AT :{BLACK}Startdato for denne rutetabellen er {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vel ein startdato for denne rutetabellen STR_TIMETABLE_CHANGE_TIME :{BLACK}Byt Tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Byt tida den merka ordra skal bruke STR_TIMETABLE_CLEAR_TIME :{BLACK}Fjern Tid STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Fjern tida den merka ordra skal bruke STR_TIMETABLE_CHANGE_SPEED :{BLACK}Byt fartsgrense STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Byt maks reisehastigheit for den merka ordra STR_TIMETABLE_CLEAR_SPEED :{BLACK}Fjern fartsgrense STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Fjern maks reisehastigheit for den merka ordra STR_TIMETABLE_RESET_LATENESS :{BLACK}Still attende teljaren for forseining STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Still attende teljaren for forseining, slik at køyretøyet vert presis STR_TIMETABLE_AUTOFILL :{BLACK}Fyll automatisk STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll timeplanen automatisk med verdiar frå neste reise (CTRL+klikk for å prøve å halde ventetider) STR_TIMETABLE_EXPECTED :{BLACK}Forventa STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Byt mellom antatt og planlagt STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Avg: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Sett dato STR_DATE_SET_DATE :{BLACK}Sett dato STR_DATE_SET_DATE_TOOLTIP :{BLACK}Nytt den valde datoen som startdato for rutetabellen STR_DATE_DAY_TOOLTIP :{BLACK}Vel dag STR_DATE_MONTH_TOOLTIP :{BLACK}Vel månad STR_DATE_YEAR_TOOLTIP :{BLACK}Vel år # AI debug window STR_AI_DEBUG :{WHITE}AI- / Spelscriptfeilsøking STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Namnet til AI-spelaren STR_AI_DEBUG_SETTINGS :{BLACK}Innstillingar STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Byt AI-innstillingar STR_AI_DEBUG_RELOAD :{BLACK}Last inn AI på ny STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Slå av AIen, last inn skriptet på ny og start AIen på ny STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Tillet/nekt bryt når ein AI-loggbeskjed tilsvarar brytstrengen STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Bryt på: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Bryt på STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Når ein AI-loggbeskjed tilsvarar denne strengen, pauses spelet. STR_AI_DEBUG_MATCH_CASE :{BLACK}Skriftformgjenkjenning STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Byt mellom skriftformgjenkjenning ved samanlikning av AI-loggbeskjedar mot bruddstrengen STR_AI_DEBUG_CONTINUE :{BLACK}Hald fram STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Slå av pause og hald fram AIen STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vis feilsøkingsresultatar frå denne AIen STR_AI_GAME_SCRIPT :{BLACK}Spelscript STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sjekk spelscriptloggen STR_ERROR_AI_NO_AI_FOUND :Ingen passande AI kunne lastast inn.{}Denne AI er ein liksom-AI og kjem ikkje til å gjera noko.{}Du kan lasta ned fleire AI'ar frå nettet med spelets nedlastingssystem. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Ein AI har krasja. Venleg rapporter dette til forfattaren av AI-en med eit skjermbilete av AI- / Spelscript-feilsøkingsvindauget. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI- / Spelscript-feilsøkingvindauget er kun tilgjengeleg for tenaren # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI- / Spelkonfigurasjonar STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spelscriptet som blir lasta i neste spel STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AIane som blir lasta i neste spel STR_AI_CONFIG_HUMAN_PLAYER :Menneskeleg spelar STR_AI_CONFIG_RANDOM_AI :Tilfeldig AI STR_AI_CONFIG_NONE :(ingen) STR_AI_CONFIG_MOVE_UP :{BLACK}Flytt oppover STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flytt valt AI oppover lista STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flytt nedover STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flytt valt AI nedover i lista STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spelscript STR_AI_CONFIG_AI :{SILVER}AIar STR_AI_CONFIG_CHANGE :{BLACK}Vel {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spelscript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Last eit anna script STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigurere STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigurer AI-parametrane # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Tilgjengeleg {STRING} STR_AI_LIST_CAPTION_AI :AIar STR_AI_LIST_CAPTION_GAMESCRIPT :Spelscript STR_AI_LIST_TOOLTIP :{BLACK}Klikk for å velje ein AI STR_AI_LIST_AUTHOR :{LTBLUE}Forfattar: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versjon: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Godta STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Merk utheva AI STR_AI_LIST_CANCEL :{BLACK}Avbryt STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ikkje endre AI # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameter STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spelscript STR_AI_SETTINGS_CLOSE :{BLACK}Lukk STR_AI_SETTINGS_RESET :{BLACK}Tilbakestill STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Antall dagar denne AIen skal starte etter den førre (ca): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} lesmeg for {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} endringslogg for {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisens for {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Vis lesmeg STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Endringslogg STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisens # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}{NBSP}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}{NBSP}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}{NBSP}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kostnad: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kostnad: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Inntekt: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Inntekt: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Overføring: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Berekna kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Berekna inntekt: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring foregår framleis,{}ver venleg å vente til det er ferdig! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autolagring gjekk gale STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikkje lese frå disk STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spelet mislukkast{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikkje slette fil STR_ERROR_GAME_LOAD_FAILED :{WHITE}Feil ved henting av spel{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Øydelagd lagra spel - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spelet er lagra i ein nyare versjon STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Kan ikkje lese fila STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Kan ikkje skrive til fila STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integritetssjekk av data mislukkast STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spelet har blitt lagra i ein versjon utan støtte for trikk. Alle trikkar har blitt fjerna # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kart-generering avbrutt...{}... ingen passande by-plasseringar STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... det er ingen byar i dette scenarioet STR_ERROR_PNGMAP :{WHITE}Kan ikkje laste inn landskap frå PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fann ikkje fila STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... kunne ikkje konvertere bilettypen. Eit 8- eller 24-bits PNG-bilete trengst STR_ERROR_PNGMAP_MISC :{WHITE}... noko gjekk akkurat gale (truleg ei øydelagd fil) STR_ERROR_BMPMAP :{WHITE}Kan ikkje laste inn landskap frå BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... kan ikkje konvertere bilettype STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... bilde er for stort STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skalaåtvaring STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Å endre storleiken på kjeldekartet for mykje er ikkje anbefalt. Vil du halde fram med genereringa? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Kun eit reservelydsett ble funne. Hvis du vil ha lyder, installer eit lydsett via innhaldsnedlastinga # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stort skjermskudd STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skjermskuddet får ei oppløysing på {COMMA} x {COMMA} pikslar. Det kan ta litt tid. Vil du fortsette? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjermdumpen vart lagra som '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skjermdump gjekk gale! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Melding STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Melding frå {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Utanfor kartet STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}For nære kanten av kartet STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Du har ikkje nok pengar - du treng {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Flatt land er naudsynt STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landet hallar feil veg STR_ERROR_CAN_T_DO_THIS :{WHITE}Kan ikkje gjere dette... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Bygningen må rivst først STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikkje rydde dette området... STR_ERROR_SITE_UNSUITABLE :{WHITE}... feltet er ikkje høveleg STR_ERROR_ALREADY_BUILT :{WHITE}... allereie bygd STR_ERROR_OWNED_BY :{WHITE}... eigd av {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... feltet er eigd av eit anna firma STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... landskapningsgrense nådd STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... rutetømminga si grense er nådd STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... øvre grense for antal tre er nådd STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Namnet må vera unikt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} er i vegen STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ikkje tillet når spelet er pausa # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Bystyret i {TOWN} nektar deg å gjere dette STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Bystyret i {TOWN} tillet ikkje fleire flyplassar i denne byen STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}s bystyre nektar deg byggjetillatelse til flyplass pga. støybekymringar STR_ERROR_BRIBE_FAILED :{WHITE}Bestikkinga du prøvde på har blitt oppdaga av ein regional etterforskar # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Kan ikkje heve land her... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Kan ikkje senke land her... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Kan ikkje jemne ut land her... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Utgraving vil skade tunnel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Allereie på havnivå STR_ERROR_TOO_HIGH :{WHITE}For høgt STR_ERROR_ALREADY_LEVELLED :{WHITE}... allereie flatt # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikkje byta firmanamn... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan ikkje byte namn på sjefen... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maks. lån er {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikkje låne meir pengar... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... lånet er allereie betalt attende STR_ERROR_CURRENCY_REQUIRED :{WHITE}... du treng {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan ikkje betale lånet attende... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan ikkje gje vekk pengar som er lånt frå banken... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan ikkje kjøpe firma... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikkje byggje hovudkontor... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan ikkje kjøpa 25{NBSP}% av aksjane... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikkje selja 25{NBSP}% av aksjane... STR_ERROR_PROTECTED :{WHITE}Det her firmaet sel ikkje aksjer enno... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikkje byggje nokon byar STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kan ikkje byte namn på byen... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kan ikkje grunnleggja by her... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kan ikkje utvida byen... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... for nært kanten på kartet STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... for nær ein annan by STR_ERROR_TOO_MANY_TOWNS :{WHITE}... for mange byar STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... det er ikkje meir plass på kartet STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Byen byggjer ikkje vegar. Du kan tillete veg-bygging i Avanserte innstillingar -> Økonomi -> Byar STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vegarbeid pågår STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan ikkje fjerne denne byen...{}Ein stasjon eller garasje/stall/hangar/dokk refererar til byen eller ei by-egd rute som ikkje kan fjernast STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... det er ingen passande plass til statue i sentrum av denne byen # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... for mange industriar STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikkje generere industriar... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kan ikkje byggja {STRING} her... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kan ikkje byggja denne typen industri her... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... for nær ein annan industri STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... må grunnleggja ein by først STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... berre ein er tillett per by STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kan berre byggjast i byar med meir enn 1200 innbyggjarar STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kan berre byggjast i regnskogområde STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kan berre byggjast i ørkenområde STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kan berre byggjast i byar STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kan berre byggjast i nærleiken av bysentrum STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kan berre byggjast i lavtliggande område STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kan berre plasserast nær kanten på kartet STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog kan berre plantast over snøgrensa STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan berre byggjast over snøgrensa STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan berre byggjast under snøgrensa # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikkje byggje jernbanestasjon her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikkje byggje busstasjon... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikkje byggje lasteterminal... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan ikkje byggje passasjertrikkestasjon... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan ikkje byggje varetrikkestasjon... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Kan ikkje byggje hamn her... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan ikkje bygge flyplass her... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grensar til meir enn éin eksisterande stasjon/lasteterminal STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stasjonen er spreidd for mykje STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}For mange stasjonar/lasteteområder STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}For mange togstasjon-delar STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}For mange busshaldeplassar STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}For mange lasteterminalar STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}For nær ein annan jernbanestasjon/lasteterminal STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}For nær ei anna hamn STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}For nær ein annan flyplass STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kan ikkje endre namnet på stasjonen... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... denne vegen eigast av ein by STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vegen peiker feil veg STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gjennomkøyring-stopp kan ikkje ha svingar STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjennomkøyring-stopp kan ikkje ha kryss # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ikkje fjerne del av stasjonen... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Må fjerne togstasjon først STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan ikkje fjerne busstasjon... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan ikkje fjerne lastebilstasjon... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan ikkje fjerne passasjertrikkestasjon... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan ikkje fjerne varetrikkestasjon... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Må fjerne stoppestad først STR_ERROR_THERE_IS_NO_STATION :{WHITE}... ingen stasjon her STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Må rive jernbanestasjon først STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Må rive bussterminal først STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Må rive lasteterminal først STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Må fjerne passasjertrikkestasjon først STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Må fjerne varetrikkestasjon først STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Må rive hamn først STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Må rive flyplass først # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grensar til meir enn eitt eksiterande kontrollpunkt STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}For nær eit anna kontrollpunkt STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan ikkje byggje kontrollpunkt for tog her... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan ikkje plassere bøye her... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan ikkje byta kontrollpunktnamnet... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikkje fjerne kontrollpunktet... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Må fjerna kontrollpunkt først STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bøya er i vegen STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bøya er i bruk av eit anna firma! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikkje byggje togstall her... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan ikkje byggje garasje her... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kan ikkje byggje trikkestall her... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kan ikkje byggje skipsdokk her... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Kan ikkje byte namn på garasje/stall/hangar/dokk... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... må vere stoppa i ein togstall STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... må vere stoppa i ein garasje STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... må vere stoppa i ein skipsdokk STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... må vere stoppa i ein hangar STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Tog kan berre endrast når dei står stille i togstallen STR_ERROR_TRAIN_TOO_LONG :{WHITE}Toget er for langt STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kan ikkje snu køyretøyet... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... samansett av fleire enhetar STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Jernbanetypane passar ikkje saman STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikkje flytte køyretøy... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Bakmaskinen vil alltid følgje det fremste motstykket STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikkje finne ein togstall i nærleiken STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan ikkje finne garasje/stall/hangar/dokk i nærleiken STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Gal type garasje/stall/hangar/dokk # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er for langt etter byte STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ingen autoutbyting-/fornyingsreglar lagt til STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(pengegrense) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Umogeleg kombinasjon av spor STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Må fjerne signaler først STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Upassande jernbanespor STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Må fjerne jernbanespor først STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vegen er einvegskøyrd eller blokkert STR_ERROR_CROSSING_DISALLOWED :{WHITE}Overgang ikkje tillate for denne typen jernbane STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan ikkje byggje signaler her... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan ikkje byggje jernbanespor her... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan ikkje fjerne jernbanespor herfrå... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan ikkje fjerne signaler herfrå... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kan ikkje konvertere signaler her... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... ingen jernbanespor STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... ingen signal STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kan ikkje konvertere jernbanetype her... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Må fjerne veg først STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... einvegskøyrde vegar kan ikkje ha kryss STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikkje byggje veg her... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan ikkje byggje trikkespor her... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikkje fjerne veg her... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan ikkje fjerne trikkespor herfrå... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... ingen veg STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... ingen trikkespor # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kan ikkje byggje kanalar her... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kan ikkje byggje sluser her... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kan ikkje plassere elver her... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... må byggjast på sjøen STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... kan ikkje byggje på vatn STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kan ikkje byggjast på åpen sjø STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kan ikkje byggjast på ein kanal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kan ikkje byggjast på ei elv STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Må fjerna kanal først STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kan ikkje bygge akvedukt her... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... det er allereie eit tre her STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... feil terreng for treslag STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Kan ikkje plante tre her... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kan ikkje byggje bru her... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Må rive bru først STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan ikkje starte og slutte på same felt STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bruhovud er ikkje på same nivå STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brua er for låg for terrenget STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må vere på linje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... endane på brua må vere på land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brua er for lang STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Brua vil ende på utsida av kartet # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan ikkje byggje tunnel her... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Feltet er uhøveleg for tunnelinngang STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Må rive tunnel først STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Annan tunnel i vegen STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunnelen vil enda utanfor kartet STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kan ikkje grave ut land til den andre tunnelutgangen STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunnel for lang # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... for mange objekt STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kan ikkje byggje objektet... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objekt er i vegen STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... hovudkontor til firma er i vegen STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan ikkje kjøpe dette landområdet... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du eig det alt! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikkje lage gruppe... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan ikkje slette denne gruppa... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan ikkje gje gruppa nytt namn... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikkje fjerne alle køyretøy fra denne gruppa... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikkje legge dette køyretøyet til denne gruppa... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikkje legge til gruppe for delte køyretøy... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tog i vegen STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Køyretøy i vegen STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Det er eit skip i vegen STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Det er eit luftfartøy i vegen STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kan ikkje byggje om toget... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kan ikkje byggje om bil... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kan ikkje bygge om skip... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kan ikkje byggje om luftfartøy... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kan ikkje namngje tog... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kan ikkje namngje køyretøy... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Kan ikkje namngje skip... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kan ikkje namngje luftfartøy... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kan ikkje stoppe/starte tog... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kan ikkje stoppe/starte køyretyg... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kan ikkje stoppe/starte skip... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kan ikkje stoppe/starte luftfartyg... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikkje sende tog til togstall... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kan ikkje sende køyretøy til garasje... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kan ikkje sende skip til skipsdokk... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kan ikkje sende luftfartyg til hangar... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kan ikkje kjøpe jernbanekøyretøy... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kan ikkje kjøpe køyretøy... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kan ikkje byggje skip... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kan ikkje byggje luftfartøy... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kan ikkje gje lokomotiv-/vogntypen nytt namn... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kan ikkje endre namnet til køyretøytypen... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kan ikkje endre namnet til skipstypen... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kan ikkje endre namn... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kan ikkje selje jernbanekøyretøy... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kan ikkje selje køyretøy... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kan ikkje selje skip... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kan ikkje selje luftfartøy... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Jernbanekøyretøyet er ikkje tilgjengeleg STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Køyretøyet er ikkje tilgjengeleg STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skipet er ikkje tilgjengeleg STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Luftfartøyet er ikkje tilgjengeleg STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}For mange køyretøy i spelet STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikkje endre vedlikehaldsintervall... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... køyretøy er øydelagd # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikkje tvinge tog til å passere signal ved fare... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikkje snu toget... STR_ERROR_TRAIN_START_NO_POWER :Toget har ikkje strøm STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kan ikkje snu køyretøyet... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Lluftfartøyet er i lufta # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ikkje plass til fleire ordrar STR_ERROR_TOO_MANY_ORDERS :{WHITE}For mange ordrar STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikkje setje inn ny ordre... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikkje slette denne ordren... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikkje endre denne ordren... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kan ikkje flytte denne ordra... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kan ikkje hoppa over gjeldande ordre... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan ikkje hoppa til valde ordre... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... køyretøyet kan ikkje fara til alle stasjonane STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... køyretøyet kan ikkje gå til den stasjonen STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... eit køyretøy som delar denne ordra kan ikkje gå til den stasjonen STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kan ikkje dele ordreliste... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kan ikkje stoppe deling av ordrar... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kan ikkje kopiere ordreliste... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... for langt borte frå førre destinasjon STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... luftfartyg har ikkje nok rekkevidde # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan ikkje lage rutetabell for køyretøyet... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Køyretøy kan kun venta på stasjonar STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dette køyretøyet stoppar ikkje på denne stasjonen # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... for mange skilt STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Kan ikkje plassere skilt her... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Kan ikkje byta teksta på skiltet... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan ikkje sletta skilt... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Eit simulatorspel basert på Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Original grafikk frå Transport Tycoon Deluxe for DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original grafikk frå Transport Tycoon Deluxe for DOS (tysk). STR_BASEGRAPHICS_WIN_DESCRIPTION :Original grafikk frå Transport Tycoon Deluxe for Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Originale lydar frå Transport Tycoon Deluxe for DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Originale lydar frå Transport Tycoon Deluxe for Windows. STR_BASESOUNDS_NONE_DESCRIPTION :Ei lydpakke utan nokon lydar. STR_BASEMUSIC_WIN_DESCRIPTION :Original musikk frå Transport Tycoon Deluxe for Windows. STR_BASEMUSIC_NONE_DESCRIPTION :Ei musikkpakke utan noko musikk. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høghus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Kontorblokk STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Leilegheitsblokk STR_TOWN_BUILDING_NAME_CHURCH_1 :Kyrkje STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Stor kontorblokk STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Byhus STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotell STR_TOWN_BUILDING_NAME_STATUE_1 :Statue STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontene STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Kontorblokk STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Butikkar og kontor STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderne kontorblokk STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Varehus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kontorblokk STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Gamle hus STR_TOWN_BUILDING_NAME_COTTAGES_1 :Hytter STR_TOWN_BUILDING_NAME_HOUSES_1 :Hus STR_TOWN_BUILDING_NAME_FLATS_1 :Leilegheiter STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Høg kontorblokk STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Butikkar og kontor STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Butikkar og kontor STR_TOWN_BUILDING_NAME_THEATER_1 :Teater STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Kontor STR_TOWN_BUILDING_NAME_HOUSES_2 :Hus STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Kjøpesenter STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglo STR_TOWN_BUILDING_NAME_TEPEES_1 :Indianertelt STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Tekjelehus STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Sparebøsse ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Kolgruve STR_INDUSTRY_NAME_POWER_STATION :Kraftstasjon STR_INDUSTRY_NAME_SAWMILL :Sagbruk STR_INDUSTRY_NAME_FOREST :Skog STR_INDUSTRY_NAME_OIL_REFINERY :Oljeraffineri STR_INDUSTRY_NAME_OIL_RIG :Oljeplattform STR_INDUSTRY_NAME_FACTORY :Fabrikk STR_INDUSTRY_NAME_PRINTING_WORKS :Trykkjeri STR_INDUSTRY_NAME_STEEL_MILL :Smelteverk STR_INDUSTRY_NAME_FARM :Gard STR_INDUSTRY_NAME_COPPER_ORE_MINE :Kopargruve STR_INDUSTRY_NAME_OIL_WELLS :Oljebrønn STR_INDUSTRY_NAME_BANK :Bank STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Matforedlingsfabrikk STR_INDUSTRY_NAME_PAPER_MILL :Papirfabrikk STR_INDUSTRY_NAME_GOLD_MINE :Gullgruve STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bank STR_INDUSTRY_NAME_DIAMOND_MINE :Diamantgruve STR_INDUSTRY_NAME_IRON_ORE_MINE :Jerngruve STR_INDUSTRY_NAME_FRUIT_PLANTATION :Fruktplantasje STR_INDUSTRY_NAME_RUBBER_PLANTATION :Gummiplantasje STR_INDUSTRY_NAME_WATER_SUPPLY :Vassreservoar STR_INDUSTRY_NAME_WATER_TOWER :Vasstårn STR_INDUSTRY_NAME_FACTORY_2 :Fabrikk STR_INDUSTRY_NAME_FARM_2 :Gard STR_INDUSTRY_NAME_LUMBER_MILL :Sagbruk STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Sukkerspinnskog STR_INDUSTRY_NAME_CANDY_FACTORY :Godterifabrikk STR_INDUSTRY_NAME_BATTERY_FARM :Batterigard STR_INDUSTRY_NAME_COLA_WELLS :Colabrønnar STR_INDUSTRY_NAME_TOY_SHOP :Leiketøysbutikk STR_INDUSTRY_NAME_TOY_FACTORY :Leiketøysfabrikk STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastfontener STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Mineralvatnfabrikk STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Boblegenerator STR_INDUSTRY_NAME_TOFFEE_QUARRY :Karamellbrudd STR_INDUSTRY_NAME_SUGAR_MINE :Sukkergruve ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Utan namn STR_SV_TRAIN_NAME :Tog {COMMA} STR_SV_ROAD_VEHICLE_NAME :Køyretøy {COMMA} STR_SV_SHIP_NAME :Skip {COMMA} STR_SV_AIRCRAFT_NAME :Luftfartøy {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} nord STR_SV_STNAME_SOUTH :{STRING} sør STR_SV_STNAME_EAST :{STRING} aust STR_SV_STNAME_WEST :{STRING} vest STR_SV_STNAME_CENTRAL :{STRING} sentrum STR_SV_STNAME_TRANSFER :{STRING}ruta STR_SV_STNAME_HALT :{STRING} haldeplass STR_SV_STNAME_VALLEY :{STRING}dalen STR_SV_STNAME_HEIGHTS :{STRING}toppen STR_SV_STNAME_WOODS :{STRING} skogholt STR_SV_STNAME_LAKESIDE :{STRING}sjøen STR_SV_STNAME_EXCHANGE :{STRING}krysset STR_SV_STNAME_AIRPORT :{STRING} flyplass STR_SV_STNAME_OILFIELD :{STRING} oljefelt STR_SV_STNAME_MINES :{STRING} gruver STR_SV_STNAME_DOCKS :{STRING} hamn STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} anneks STR_SV_STNAME_SIDINGS :{STRING}vegen STR_SV_STNAME_BRANCH :{STRING} torg STR_SV_STNAME_UPPER :Øvre {STRING} STR_SV_STNAME_LOWER :Nedre {STRING} STR_SV_STNAME_HELIPORT :{STRING} helikopterplass STR_SV_STNAME_FOREST :{STRING}skogen STR_SV_STNAME_FALLBACK :{STRING} Stasjon #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (elektrisk) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passasjervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kolvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Buskapvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Godsvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Jernmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stålvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Armert vogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Matvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papirvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Koparmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vassvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruktvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Gummivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Boblevogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colavogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Leiketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Mineralvatnvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastvogn STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passasjervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kolvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Buskapvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Godsvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Jernmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stålvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Armert vogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Matvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papirvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Koparmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vassvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruktvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Gummivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Boblevogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colavogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Leiketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Mineralvatnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastvogn STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passasjervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kolvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Buskapvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Godsvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Jernmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stålvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Armert vogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Matvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papirvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Koparmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vassvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruktvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Gummivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Boblevogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colavogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Leiketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Mineralvatnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastvogn STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal-buss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard-buss STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster-buss STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII-superbuss STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI-buss STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII-buss STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII-buss STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh-kolbil STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl-kolbil STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW-kolbil STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe-tankbil for olje STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster-tankbil for olje STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry-tankbil for olje STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh-lastebil for gods STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead-lastebil for gods STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss-lastebil for gods STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe-tømmerbil STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster-tømmerbil STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland-tømmerbil STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS-lastebil for jernmalm STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl-lastebil for jernmalm STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy-lastebil for jernmalm STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh-lastebil for stål STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl-lastebil for stål STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling-lastebil for stål STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Armert Balogh-bil STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Armert Uhl-bil STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Armert Foster-bil STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster-lastebil for mat STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry-lastebil for mat STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy-lastebil for mat STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl-lastebil for papir STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh-lastebil for papir STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS-lastebil for papir STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS-lastebil for koparmalm STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl-lastebil for koparmalm STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss-lastebil for koparmalm STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl-tankbil for vatn STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh-tankbil for vatn STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS-tankbil for vatn STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh-lastebil for frukt STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl-lastebil for frukt STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling-lastebil for frukt STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh-lastebil for gummi STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl-lastebil for gummi STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT-lastebil for gummi STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover-lastebil for sukker STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught-lastebil for sukker STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow-lastebil for sukker STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover-lastebil for cola STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught-lastebil for cola STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow-lastebil for cola STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover-lastebil for sukkerspinn STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught-lastebil for sukkerspinn STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow-lastebil for sukkerspinn STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover-lastebil for karamell STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught-lastebil for karamell STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow-lastebil for karamell STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover-lastebil for leiketøy STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught-lastebil for leiketøy STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow-lastebil for leiketøy STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover-lastebil for godteri STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught-lastebil for godteri STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow-lastebil for godteri STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover-lastebil for batteri STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught-lastebil for batteri STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow-lastebil for batteri STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover-tankbil for mineralvatn STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught-tankbil for mineralvatn STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow-tankbil for mineralvatn STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover-lastebil for plast STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught-lastebil for plast STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow-lastebil for plast STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover-lastebil for bobler STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught-lastebil for bobler STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow-lastebil for bobler STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS-oljetanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc.-oljetanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS-passasjerferje STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP-passasjerferje STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300-luftputeskip STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug-passasjerferje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-passasjerferje STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate-konteinarskip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell-konteinarskip STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover-konteinarskip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut-konteinarskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario-helikopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2-helikopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helikopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Bøye STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Bøye #{COMMA} STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) STR_FORMAT_GROUP_NAME :Gruppe {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} kontrollpunkt STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Kontrollpunkt #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Togstall STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Togstall #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Garasje STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Garasje #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Skipsdokk STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Skipsdokk #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :ukjend stasjon STR_DEFAULT_SIGN_NAME :Skilt STR_COMPANY_SOMEONE :nokon STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Tilskuar, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/russian.txt0000644000000000000000000200440012246102561015625 0ustar rootroot##name Russian ##ownname Русский ##isocode ru_RU ##plural 6 ##textdir ltr ##digitsep {NBSP} ##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0419 ##grflangid 0x07 ##gender m f n p ##case m f n p nom gen dat acc abl pre # $Id: russian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(неопределено) STR_JUST_NOTHING :Ничего # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :{G=p}Пассажиры STR_CARGO_PLURAL_PASSENGERS.gen :пассажиров STR_CARGO_PLURAL_PASSENGERS.acc :пассажиров STR_CARGO_PLURAL_COAL :{G=m}Уголь STR_CARGO_PLURAL_COAL.gen :угля STR_CARGO_PLURAL_COAL.acc :уголь STR_CARGO_PLURAL_MAIL :{G=f}Почта STR_CARGO_PLURAL_MAIL.gen :почты STR_CARGO_PLURAL_MAIL.acc :почту STR_CARGO_PLURAL_OIL :{G=f}Нефть STR_CARGO_PLURAL_OIL.gen :нефти STR_CARGO_PLURAL_OIL.acc :нефть STR_CARGO_PLURAL_LIVESTOCK :{G=m}Скот STR_CARGO_PLURAL_LIVESTOCK.gen :скота STR_CARGO_PLURAL_LIVESTOCK.acc :скот STR_CARGO_PLURAL_GOODS :{G=p}Товары STR_CARGO_PLURAL_GOODS.gen :товаров STR_CARGO_PLURAL_GOODS.acc :товары STR_CARGO_PLURAL_GRAIN :{G=n}Зерно STR_CARGO_PLURAL_GRAIN.gen :зерна STR_CARGO_PLURAL_GRAIN.acc :зерно STR_CARGO_PLURAL_WOOD :{G=f}Древесина STR_CARGO_PLURAL_WOOD.gen :древесины STR_CARGO_PLURAL_WOOD.acc :древесину STR_CARGO_PLURAL_IRON_ORE :{G=f}Железная руда STR_CARGO_PLURAL_IRON_ORE.gen :железной руды STR_CARGO_PLURAL_IRON_ORE.acc :железную руду STR_CARGO_PLURAL_STEEL :{G=f}Сталь STR_CARGO_PLURAL_STEEL.gen :стали STR_CARGO_PLURAL_STEEL.acc :сталь STR_CARGO_PLURAL_VALUABLES :{G=p}Драгоценности STR_CARGO_PLURAL_VALUABLES.gen :драгоценностей STR_CARGO_PLURAL_VALUABLES.acc :драгоценности STR_CARGO_PLURAL_COPPER_ORE :{G=f}Медная руда STR_CARGO_PLURAL_COPPER_ORE.gen :медной руды STR_CARGO_PLURAL_COPPER_ORE.acc :медную руду STR_CARGO_PLURAL_MAIZE :{G=f}Кукуруза STR_CARGO_PLURAL_MAIZE.gen :кукурузы STR_CARGO_PLURAL_MAIZE.acc :кукурузу STR_CARGO_PLURAL_FRUIT :{G=p}Фрукты STR_CARGO_PLURAL_FRUIT.gen :фруктов STR_CARGO_PLURAL_FRUIT.acc :фрукты STR_CARGO_PLURAL_DIAMONDS :{G=p}Алмазы STR_CARGO_PLURAL_DIAMONDS.gen :алмазов STR_CARGO_PLURAL_DIAMONDS.acc :алмазы STR_CARGO_PLURAL_FOOD :{G=p}Продукты STR_CARGO_PLURAL_FOOD.gen :продуктов STR_CARGO_PLURAL_FOOD.acc :продукты STR_CARGO_PLURAL_PAPER :{G=f}Бумага STR_CARGO_PLURAL_PAPER.gen :бумаги STR_CARGO_PLURAL_PAPER.acc :бумагу STR_CARGO_PLURAL_GOLD :{G=n}Золото STR_CARGO_PLURAL_GOLD.gen :золота STR_CARGO_PLURAL_GOLD.acc :золото STR_CARGO_PLURAL_WATER :{G=f}Вода STR_CARGO_PLURAL_WATER.gen :воды STR_CARGO_PLURAL_WATER.acc :воду STR_CARGO_PLURAL_WHEAT :{G=f}Пшеница STR_CARGO_PLURAL_WHEAT.gen :пшеницы STR_CARGO_PLURAL_WHEAT.acc :пшеницу STR_CARGO_PLURAL_RUBBER :{G=m}Каучук STR_CARGO_PLURAL_RUBBER.gen :каучука STR_CARGO_PLURAL_RUBBER.acc :каучук STR_CARGO_PLURAL_SUGAR :{G=m}Сахар STR_CARGO_PLURAL_SUGAR.gen :сахара STR_CARGO_PLURAL_SUGAR.acc :сахар STR_CARGO_PLURAL_TOYS :{G=p}Игрушки STR_CARGO_PLURAL_TOYS.gen :игрушек STR_CARGO_PLURAL_TOYS.acc :игрушки STR_CARGO_PLURAL_CANDY :{G=p}Конфеты STR_CARGO_PLURAL_CANDY.gen :конфет STR_CARGO_PLURAL_CANDY.acc :конфеты STR_CARGO_PLURAL_COLA :{G=f}Кола STR_CARGO_PLURAL_COLA.gen :колы STR_CARGO_PLURAL_COLA.acc :колу STR_CARGO_PLURAL_COTTON_CANDY :{G=f}Сахарная вата STR_CARGO_PLURAL_COTTON_CANDY.gen :сахарной ваты STR_CARGO_PLURAL_COTTON_CANDY.acc :сахарную вату STR_CARGO_PLURAL_BUBBLES :{G=p}Пузырьки STR_CARGO_PLURAL_BUBBLES.gen :пузырьков STR_CARGO_PLURAL_BUBBLES.acc :пузырьки STR_CARGO_PLURAL_TOFFEE :{G=p}Ириски STR_CARGO_PLURAL_TOFFEE.gen :ирисок STR_CARGO_PLURAL_TOFFEE.acc :ириски STR_CARGO_PLURAL_BATTERIES :{G=p}Батарейки STR_CARGO_PLURAL_BATTERIES.gen :батареек STR_CARGO_PLURAL_BATTERIES.acc :батарейки STR_CARGO_PLURAL_PLASTIC :{G=m}Пластик STR_CARGO_PLURAL_PLASTIC.gen :пластика STR_CARGO_PLURAL_PLASTIC.acc :пластик STR_CARGO_PLURAL_FIZZY_DRINKS :{G=f}Газировка STR_CARGO_PLURAL_FIZZY_DRINKS.gen :газировки STR_CARGO_PLURAL_FIZZY_DRINKS.acc :газировку # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :{G=p}Пассажиры STR_CARGO_SINGULAR_PASSENGER.gen :пассажиров STR_CARGO_SINGULAR_PASSENGER.acc :пассажиров STR_CARGO_SINGULAR_COAL :{G=m}Уголь STR_CARGO_SINGULAR_COAL.gen :угля STR_CARGO_SINGULAR_COAL.acc :уголь STR_CARGO_SINGULAR_MAIL :{G=f}Почта STR_CARGO_SINGULAR_MAIL.gen :почты STR_CARGO_SINGULAR_MAIL.acc :почту STR_CARGO_SINGULAR_OIL :{G=f}Нефть STR_CARGO_SINGULAR_OIL.gen :нефти STR_CARGO_SINGULAR_OIL.acc :нефть STR_CARGO_SINGULAR_LIVESTOCK :{G=m}Скот STR_CARGO_SINGULAR_LIVESTOCK.gen :скота STR_CARGO_SINGULAR_LIVESTOCK.acc :скот STR_CARGO_SINGULAR_GOODS :{G=p}Товары STR_CARGO_SINGULAR_GOODS.gen :товаров STR_CARGO_SINGULAR_GOODS.acc :товары STR_CARGO_SINGULAR_GRAIN :{G=n}Зерно STR_CARGO_SINGULAR_GRAIN.gen :зерна STR_CARGO_SINGULAR_GRAIN.acc :зерно STR_CARGO_SINGULAR_WOOD :{G=f}Древесина STR_CARGO_SINGULAR_WOOD.gen :древесины STR_CARGO_SINGULAR_WOOD.acc :древесину STR_CARGO_SINGULAR_IRON_ORE :{G=f}Железная руда STR_CARGO_SINGULAR_IRON_ORE.gen :железной руды STR_CARGO_SINGULAR_IRON_ORE.acc :железную руду STR_CARGO_SINGULAR_STEEL :{G=f}Сталь STR_CARGO_SINGULAR_STEEL.gen :стали STR_CARGO_SINGULAR_STEEL.acc :сталь STR_CARGO_SINGULAR_VALUABLES :{G=p}Драгоценности STR_CARGO_SINGULAR_VALUABLES.gen :драгоценностей STR_CARGO_SINGULAR_VALUABLES.acc :драгоценности STR_CARGO_SINGULAR_COPPER_ORE :{G=f}Медная руда STR_CARGO_SINGULAR_COPPER_ORE.gen :медной руды STR_CARGO_SINGULAR_COPPER_ORE.acc :медную руду STR_CARGO_SINGULAR_MAIZE :{G=f}Кукуруза STR_CARGO_SINGULAR_MAIZE.gen :кукурузы STR_CARGO_SINGULAR_MAIZE.acc :кукурузу STR_CARGO_SINGULAR_FRUIT :{G=p}Фрукты STR_CARGO_SINGULAR_FRUIT.gen :фруктов STR_CARGO_SINGULAR_FRUIT.acc :фрукты STR_CARGO_SINGULAR_DIAMOND :{G=p}Алмазы STR_CARGO_SINGULAR_DIAMOND.gen :алмазов STR_CARGO_SINGULAR_DIAMOND.acc :алмазы STR_CARGO_SINGULAR_FOOD :{G=p}Продукты STR_CARGO_SINGULAR_FOOD.gen :продуктов STR_CARGO_SINGULAR_FOOD.acc :продукты STR_CARGO_SINGULAR_PAPER :{G=f}Бумага STR_CARGO_SINGULAR_PAPER.gen :бумаги STR_CARGO_SINGULAR_PAPER.acc :бумагу STR_CARGO_SINGULAR_GOLD :{G=n}Золото STR_CARGO_SINGULAR_GOLD.gen :золота STR_CARGO_SINGULAR_GOLD.acc :золото STR_CARGO_SINGULAR_WATER :{G=f}Вода STR_CARGO_SINGULAR_WATER.gen :воды STR_CARGO_SINGULAR_WATER.acc :воду STR_CARGO_SINGULAR_WHEAT :{G=f}Пшеница STR_CARGO_SINGULAR_WHEAT.gen :пшеницы STR_CARGO_SINGULAR_WHEAT.acc :пшеницу STR_CARGO_SINGULAR_RUBBER :{G=m}Каучук STR_CARGO_SINGULAR_RUBBER.gen :каучука STR_CARGO_SINGULAR_RUBBER.acc :каучук STR_CARGO_SINGULAR_SUGAR :{G=m}Сахар STR_CARGO_SINGULAR_SUGAR.gen :сахара STR_CARGO_SINGULAR_SUGAR.acc :сахар STR_CARGO_SINGULAR_TOY :{G=p}Игрушки STR_CARGO_SINGULAR_TOY.gen :игрушек STR_CARGO_SINGULAR_TOY.acc :игрушки STR_CARGO_SINGULAR_CANDY :{G=p}Конфеты STR_CARGO_SINGULAR_CANDY.gen :конфет STR_CARGO_SINGULAR_CANDY.acc :конфеты STR_CARGO_SINGULAR_COLA :{G=f}Кола STR_CARGO_SINGULAR_COLA.gen :колы STR_CARGO_SINGULAR_COLA.acc :колу STR_CARGO_SINGULAR_COTTON_CANDY :{G=f}Сахарная вата STR_CARGO_SINGULAR_COTTON_CANDY.gen :сахарной ваты STR_CARGO_SINGULAR_COTTON_CANDY.acc :сахарную вату STR_CARGO_SINGULAR_BUBBLE :{G=p}Пузырьки STR_CARGO_SINGULAR_BUBBLE.gen :пузырьков STR_CARGO_SINGULAR_BUBBLE.acc :пузырьки STR_CARGO_SINGULAR_TOFFEE :{G=p}Ириски STR_CARGO_SINGULAR_TOFFEE.gen :ирисок STR_CARGO_SINGULAR_TOFFEE.acc :ириски STR_CARGO_SINGULAR_BATTERY :{G=p}Батарейки STR_CARGO_SINGULAR_BATTERY.gen :батареек STR_CARGO_SINGULAR_BATTERY.acc :батарейки STR_CARGO_SINGULAR_PLASTIC :{G=m}Пластик STR_CARGO_SINGULAR_PLASTIC.gen :пластика STR_CARGO_SINGULAR_PLASTIC.acc :пластик STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}Газировка STR_CARGO_SINGULAR_FIZZY_DRINK.gen :газировки STR_CARGO_SINGULAR_FIZZY_DRINK.acc :газировку # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} пассажир{P "" а ов} STR_QUANTITY_COAL :{WEIGHT_LONG} угля STR_QUANTITY_MAIL :{COMMA} меш{P ок ка ков} почты STR_QUANTITY_OIL :{VOLUME_LONG} нефти STR_QUANTITY_LIVESTOCK :{COMMA} голов{P а ы ""} домашнего скота STR_QUANTITY_GOODS :{COMMA} ящик{P "" а ов} товаров STR_QUANTITY_GRAIN :{WEIGHT_LONG} зерна STR_QUANTITY_WOOD :{WEIGHT_LONG} древесины STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} железной руды STR_QUANTITY_STEEL :{WEIGHT_LONG} стали STR_QUANTITY_VALUABLES :{COMMA} меш{P ок ка ков} драгоценностей STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} медной руды STR_QUANTITY_MAIZE :{WEIGHT_LONG} кукурузы STR_QUANTITY_FRUIT :{WEIGHT_LONG} фруктов STR_QUANTITY_DIAMONDS :{COMMA} меш{P ок ка ков} алмазов STR_QUANTITY_FOOD :{WEIGHT_LONG} продуктов STR_QUANTITY_PAPER :{WEIGHT_LONG} бумаги STR_QUANTITY_GOLD :{COMMA} меш{P ок ка ков} золота STR_QUANTITY_WATER :{VOLUME_LONG} воды STR_QUANTITY_WHEAT :{WEIGHT_LONG} пшеницы STR_QUANTITY_RUBBER :{VOLUME_LONG} каучука STR_QUANTITY_SUGAR :{WEIGHT_LONG} сахара STR_QUANTITY_TOYS :{COMMA} игруш{P ка ки ек} STR_QUANTITY_SWEETS :{COMMA} короб{P ка ки ок} конфет STR_QUANTITY_COLA :{VOLUME_LONG} колы STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} сахарной ваты STR_QUANTITY_BUBBLES :{COMMA} пузыр{P ёк ька ьков} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} ирисок STR_QUANTITY_BATTERIES :{COMMA} батаре{P йка йки ек} STR_QUANTITY_PLASTIC :{VOLUME_LONG} пластика STR_QUANTITY_FIZZY_DRINKS :{COMMA} бан{P ка ки ок} газировки STR_QUANTITY_N_A :отсутствует # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}ПС STR_ABBREV_COAL :{TINY_FONT}УГ STR_ABBREV_MAIL :{TINY_FONT}ПЧ STR_ABBREV_OIL :{TINY_FONT}НФ STR_ABBREV_LIVESTOCK :{TINY_FONT}СК STR_ABBREV_GOODS :{TINY_FONT}ТВ STR_ABBREV_GRAIN :{TINY_FONT}ЗР STR_ABBREV_WOOD :{TINY_FONT}ДВ STR_ABBREV_IRON_ORE :{TINY_FONT}ЖР STR_ABBREV_STEEL :{TINY_FONT}СТ STR_ABBREV_VALUABLES :{TINY_FONT}ДР STR_ABBREV_COPPER_ORE :{TINY_FONT}МР STR_ABBREV_MAIZE :{TINY_FONT}КК STR_ABBREV_FRUIT :{TINY_FONT}ФР STR_ABBREV_DIAMONDS :{TINY_FONT}АЛ STR_ABBREV_FOOD :{TINY_FONT}ПР STR_ABBREV_PAPER :{TINY_FONT}БМ STR_ABBREV_GOLD :{TINY_FONT}ЗЛ STR_ABBREV_WATER :{TINY_FONT}ВД STR_ABBREV_WHEAT :{TINY_FONT}ПШ STR_ABBREV_RUBBER :{TINY_FONT}КЧ STR_ABBREV_SUGAR :{TINY_FONT}СХ STR_ABBREV_TOYS :{TINY_FONT}ИГ STR_ABBREV_SWEETS :{TINY_FONT}КФ STR_ABBREV_COLA :{TINY_FONT}КЛ STR_ABBREV_CANDYFLOSS :{TINY_FONT}СВ STR_ABBREV_BUBBLES :{TINY_FONT}ПЗ STR_ABBREV_TOFFEE :{TINY_FONT}ИР STR_ABBREV_BATTERIES :{TINY_FONT}БТ STR_ABBREV_PLASTIC :{TINY_FONT}ПЛ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ГЗ STR_ABBREV_NONE :{TINY_FONT}НЕТ STR_ABBREV_ALL :{TINY_FONT}Все # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} пассажир{P "" а ов} STR_BAGS :{COMMA} меш{P ок ка ков} STR_TONS :{COMMA} тонн{P а ы ""} STR_LITERS :{COMMA} литр{P "" а ов} STR_ITEMS :{COMMA} штук{P а и ""} STR_CRATES :{COMMA} ящик{P "" а ов} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Тёмно-синий STR_COLOUR_PALE_GREEN :Светло-зелёный STR_COLOUR_PINK :Розовый STR_COLOUR_YELLOW :Жёлтый STR_COLOUR_RED :Красный STR_COLOUR_LIGHT_BLUE :Голубой STR_COLOUR_GREEN :Зелёный STR_COLOUR_DARK_GREEN :Тёмно-зелёный STR_COLOUR_BLUE :Синий STR_COLOUR_CREAM :Кремовый STR_COLOUR_MAUVE :Лиловый STR_COLOUR_PURPLE :Пурпурный STR_COLOUR_ORANGE :Оранжевый STR_COLOUR_BROWN :Коричневый STR_COLOUR_GREY :Серый STR_COLOUR_WHITE :Белый # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} мил{P я и ь}/ч STR_UNITS_VELOCITY_METRIC :{COMMA} км/ч STR_UNITS_VELOCITY_SI :{COMMA} м/с STR_UNITS_POWER_IMPERIAL :{COMMA} лс STR_UNITS_POWER_METRIC :{COMMA} лс STR_UNITS_POWER_SI :{COMMA} кВт STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} т STR_UNITS_WEIGHT_SHORT_SI :{COMMA} кг STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тонн{P а ы ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} л STR_UNITS_VOLUME_SHORT_SI :{COMMA} м³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} литр{P "" а ов} STR_UNITS_VOLUME_LONG_SI :{COMMA} м³ STR_UNITS_FORCE_SI :{COMMA} кН STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут{P "" а ов} STR_UNITS_HEIGHT_SI :{COMMA} м # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Фильтр: STR_LIST_FILTER_OSKTITLE :{BLACK}Введите строку фильтра STR_LIST_FILTER_TOOLTIP :{BLACK}Введите ключевое слово для фильтрации списка STR_TOOLTIP_SORT_ORDER :{BLACK}Смена направления сортировки (убывание/возрастание) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Смена критерия сортировки STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Выберите фильтр STR_BUTTON_SORT_BY :{BLACK}Сортировка STR_BUTTON_LOCATION :{BLACK}Обзор STR_BUTTON_RENAME :{BLACK}Переименовать STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закрыть окно STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Заголовок окна - тащите его для перемещения окна STR_TOOLTIP_SHADE :{BLACK}Свернуть окно, оставив заголовок STR_TOOLTIP_DEBUG :{BLACK}Показать отладочную информацию NewGRF STR_TOOLTIP_STICKY :{BLACK}Игнорировать нажатия клавиши «Закрыть все окна» STR_TOOLTIP_RESIZE :{BLACK}Нажмите и тащите для изменения размера окна STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Большое/маленькое окно STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Прокрутка вверх/вниз STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Прокрутка влево/вправо STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Полная очистка прямоугольного участка земли. Ctrl - выбор области по диагонали. При нажатом Shift - оценка стоимости очистки. # Query window STR_BUTTON_DEFAULT :{BLACK}По умолчанию STR_BUTTON_CANCEL :{BLACK}Отмена STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Длина: {NUM} STR_MEASURE_AREA :{BLACK}Площадь: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Длина: {NUM}{}Разница высот: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Площадь: {NUM} x {NUM}{}Разница высот: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Население STR_SORT_BY_CAPTION_NAME :{BLACK}Название STR_SORT_BY_CAPTION_DATE :{BLACK}Дата # These are used in dropdowns STR_SORT_BY_NAME :Название STR_SORT_BY_PRODUCTION :Производительность STR_SORT_BY_TYPE :Тип STR_SORT_BY_TRANSPORTED :Вывоз STR_SORT_BY_NUMBER :Номер STR_SORT_BY_PROFIT_LAST_YEAR :Прибыль в прошлом году STR_SORT_BY_PROFIT_THIS_YEAR :Прибыль в текущем году STR_SORT_BY_AGE :Возраст STR_SORT_BY_RELIABILITY :Надёжность STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Вместимость груза STR_SORT_BY_MAX_SPEED :Максимальная скорость STR_SORT_BY_MODEL :Модель STR_SORT_BY_VALUE :Стоимость STR_SORT_BY_LENGTH :Длина STR_SORT_BY_LIFE_TIME :Оставшийся срок службы STR_SORT_BY_TIMETABLE_DELAY :Отставание от графика STR_SORT_BY_FACILITY :Тип станции STR_SORT_BY_WAITING :Кол-во товара на станции STR_SORT_BY_RATING_MAX :Наивысший рейтинг STR_SORT_BY_RATING_MIN :Низший рейтинг STR_SORT_BY_ENGINE_ID :Идентификатор (классическая сортировка) STR_SORT_BY_COST :Цена STR_SORT_BY_POWER :Мощность STR_SORT_BY_TRACTIVE_EFFORT :Тяговое усилие STR_SORT_BY_INTRO_DATE :Время начала производства STR_SORT_BY_RUNNING_COST :Стоимость обслуживания STR_SORT_BY_POWER_VS_RUNNING_COST :Мощность/стоимость обслуж. STR_SORT_BY_CARGO_CAPACITY :Вместимость STR_SORT_BY_RANGE :Дальность полёта # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Пауза STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Ускорить игру STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Настройки STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Сохранение игры, главное меню, выход STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Показать карту STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Список городов STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Показать субсидии STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Список станций STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Показать финансовую информацию компании STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Показать основную информацию о компании STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Показать графики STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Показать рейтинги компаний STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Список существующих предприятий; создание новых STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Список поездов. Ctrl+щелчок переключает отображение по группам. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Список автотранспорта. Ctrl+щелчок переключает отображение по группам. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Список кораблей. Ctrl+щелчок переключает отображение по группам. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Список авиатранспорта. Ctrl+щелчок переключает отображение по группам. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Приблизить STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Отдалить STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Строительство железных дорог STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Строительство автомобильных дорог STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Строительство водных коммуникаций STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Строительство аэропортов STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Открыть панель ландшафта для изменения рельефа, посадки деревьев и т.д. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Настройка звука и музыки STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Показать последнее сообщение; настройки сообщений STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Информация о территории, консоль, отладка скриптов, снимки экрана, об игре STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Переключить панели инструментов # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Сохранение/загрузка сценария, выход из редактора, выход STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Редактор сценариев STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Уменьшить год начала игры на 1 STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Увеличить год начала игры на 1 STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Нажмите, чтобы изменить год начала игры STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Показать карту; список городов STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Создание ландшафта STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Создание городов STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Создание предприятий STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Строительство автомобильных дорог STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Посадить деревья. При нажатом Shift - оценка стоимости высадки. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Поставить метку STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Разместить объект. При нажатом Shift - оценка стоимости строительства. ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Сохранить сценарий STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Загрузить сценарий STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Сохранить карту высот STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Загрузить карту высот STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Выйти из редактора STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Выход ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Настройки игры STR_SETTINGS_MENU_CONFIG_SETTINGS :Расширенные настройки STR_SETTINGS_MENU_SCRIPT_SETTINGS :Настройки ИИ / скрипта STR_SETTINGS_MENU_NEWGRF_SETTINGS :Настройки NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Настройки прозрачности STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Показывать названия городов STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Показывать названия станций STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Показывать имена точек пути STR_SETTINGS_MENU_SIGNS_DISPLAYED :Показывать метки STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Показывать названия станций конкурентов STR_SETTINGS_MENU_FULL_ANIMATION :Полная анимация STR_SETTINGS_MENU_FULL_DETAIL :Полная детализация STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Прозрачные здания STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Прозрачные надписи ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Сохранить игру STR_FILE_MENU_LOAD_GAME :Загрузить игру STR_FILE_MENU_QUIT_GAME :В главное меню STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Выход ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Карта мира STR_MAP_MENU_EXTRA_VIEW_PORT :Доп. окно просмотра STR_MAP_MENU_SIGN_LIST :Список табличек ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Список городов STR_TOWN_MENU_FOUND_TOWN :Основать город ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Субсидии STR_SUBSIDIES_MENU_GOAL :Текущие задачи ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :График прибыли STR_GRAPH_MENU_INCOME_GRAPH :График дохода STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :График доставленного груза STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :График рейтинга компаний STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :График стоимости компаний STR_GRAPH_MENU_CARGO_PAYMENT_RATES :График оплаты перевозок ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Табель о рангах STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Рейтинг в деталях STR_GRAPH_MENU_HIGHSCORE :Таблица рекордов ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Список предприятий STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Производственные цепочки STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Создать новое предприятие ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Строительство неэлектрифицированной ж/д STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Строительство электрифицированной ж/д STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Строительство монорельсовой ж/д STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Строительство магнитной ж/д ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Строительство автомобильных коммуникаций STR_ROAD_MENU_TRAM_CONSTRUCTION :Строительство трамвайных коммуникаций ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Строительство водных коммуникаций ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Строительство аэропортов ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Ландшафт STR_LANDSCAPING_MENU_PLANT_TREES :Высадка деревьев STR_LANDSCAPING_MENU_PLACE_SIGN :Поставить метку ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Звук/музыка ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Последняя новость STR_NEWS_MENU_MESSAGE_HISTORY_MENU :История сообщений ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Информация о земле STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Консоль STR_ABOUT_MENU_AI_DEBUG :Отладка ИИ / скриптов STR_ABOUT_MENU_SCREENSHOT :Снимок экрана STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Снимок экрана в макс. приближении STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Снимок экрана в обычном масштабе STR_ABOUT_MENU_GIANT_SCREENSHOT :Снимок всей карты STR_ABOUT_MENU_ABOUT_OPENTTD :Об игре STR_ABOUT_MENU_SPRITE_ALIGNER :Выравнивание спрайтов STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Переключить ограничивающие рамки STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Подкрашивать блоки, требующие перерисовки ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1-е STR_ORDINAL_NUMBER_2ND :2-е STR_ORDINAL_NUMBER_3RD :3-е STR_ORDINAL_NUMBER_4TH :4-е STR_ORDINAL_NUMBER_5TH :5-е STR_ORDINAL_NUMBER_6TH :6-е STR_ORDINAL_NUMBER_7TH :7-е STR_ORDINAL_NUMBER_8TH :8-е STR_ORDINAL_NUMBER_9TH :9-е STR_ORDINAL_NUMBER_10TH :10-е STR_ORDINAL_NUMBER_11TH :11-е STR_ORDINAL_NUMBER_12TH :12-е STR_ORDINAL_NUMBER_13TH :13-е STR_ORDINAL_NUMBER_14TH :14-е STR_ORDINAL_NUMBER_15TH :15-е STR_ORDINAL_NUMBER_16TH :16-е STR_ORDINAL_NUMBER_17TH :17-е STR_ORDINAL_NUMBER_18TH :18-е STR_ORDINAL_NUMBER_19TH :19-е STR_ORDINAL_NUMBER_20TH :20-е STR_ORDINAL_NUMBER_21ST :21-е STR_ORDINAL_NUMBER_22ND :22-е STR_ORDINAL_NUMBER_23RD :23-е STR_ORDINAL_NUMBER_24TH :24-е STR_ORDINAL_NUMBER_25TH :25-е STR_ORDINAL_NUMBER_26TH :26-е STR_ORDINAL_NUMBER_27TH :27-е STR_ORDINAL_NUMBER_28TH :28-е STR_ORDINAL_NUMBER_29TH :29-е STR_ORDINAL_NUMBER_30TH :30-е STR_ORDINAL_NUMBER_31ST :31-е ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Янв STR_MONTH_ABBREV_JAN.gen :янв STR_MONTH_ABBREV_FEB :Фев STR_MONTH_ABBREV_FEB.gen :фев STR_MONTH_ABBREV_MAR :Мар STR_MONTH_ABBREV_MAR.gen :мар STR_MONTH_ABBREV_APR :Апр STR_MONTH_ABBREV_APR.gen :апр STR_MONTH_ABBREV_MAY :Май STR_MONTH_ABBREV_MAY.gen :мая STR_MONTH_ABBREV_JUN :Июн STR_MONTH_ABBREV_JUN.gen :июн STR_MONTH_ABBREV_JUL :Июл STR_MONTH_ABBREV_JUL.gen :июл STR_MONTH_ABBREV_AUG :Авг STR_MONTH_ABBREV_AUG.gen :авг STR_MONTH_ABBREV_SEP :Сен STR_MONTH_ABBREV_SEP.gen :сен STR_MONTH_ABBREV_OCT :Окт STR_MONTH_ABBREV_OCT.gen :окт STR_MONTH_ABBREV_NOV :Ноя STR_MONTH_ABBREV_NOV.gen :ноя STR_MONTH_ABBREV_DEC :Дек STR_MONTH_ABBREV_DEC.gen :дек STR_MONTH_JAN :Январь STR_MONTH_FEB :Февраль STR_MONTH_MAR :Март STR_MONTH_APR :Апрель STR_MONTH_MAY :Май STR_MONTH_JUN :Июнь STR_MONTH_JUL :Июль STR_MONTH_AUG :Август STR_MONTH_SEP :Сентябрь STR_MONTH_OCT :Октябрь STR_MONTH_NOV :Ноябрь STR_MONTH_DEC :Декабрь ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Легенда STR_GRAPH_KEY_TOOLTIP :{BLACK}Показать легенду к графикам STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}График прибыли STR_GRAPH_INCOME_CAPTION :{WHITE}График дохода STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Количество доставленного груза STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Рейтинг компании (макс=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Стоимость компании STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Оплата за перевозку грузов STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Дней в пути STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Оплата за доставку 10 единиц (10 000 литров) груза на расстояние в 20 клеток STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Показать все STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Спрятать все STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Показать все виды грузов на графике STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Скрыть все виды грузов на графике STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Включить/выключить отображение груза на графике STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Показать составляющие части рейтинга # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Легенда STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Включить/выключить отображение компании на графике # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Сравнительная таблица компаний STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} «{STRING}» STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Инженер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Регулировщик STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Диспетчер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Координатор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Директор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Топ-менеджер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Председатель STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Президент STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Магнат # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Рейтинг в деталях STR_PERFORMANCE_DETAIL_KEY :{BLACK}Детали STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Подробная информация о компании ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Кол-во ТС: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Станции: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Мин. прибыль: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Мин. доход: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Макс. доход: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Доставлено: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Груз: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Деньги: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Заём: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Всего: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Количество транспортных средств, принёсших доход в прошлом году. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Количество обслуживаемых станций. Если несколько типов станций связаны в одну, они все учитываются отдельно. STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Прибыль транспорта с самым низким доходом (среди транспортных средств старше 2-х лет) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Наименьший квартальный доход за последние 3 года STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Наибольший квартальный доход за последние 3 года STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Кол-во груза, доставленного за последние 4 квартала STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Количество типов груза, доставленного за последний квартал STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Количество денег на банковском счету компании STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Размер займа, полученного этой компанией в банке STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Всего пунктов из общего количества возможных # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Музыкальный автомат STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Все STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Старый Стиль STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Новый Стиль STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Уличный Стиль STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Пользоват. 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Пользоват. 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Громкость музыки STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Громкость звука STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}МИН STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}МАКС STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}» STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Дорожка STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Название STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Случ. выбор STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Программа STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Играть предыдущий трек в программе STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Играть следующий трек в программе STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Остановить воспроизведение STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Начать STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Перемещайте ползунки для изменения громкости STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Выбор программы «Все треки» STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Выбор программы «Старый стиль музыки» STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Выбор программы «Новый стиль музыки» STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Выбрать музыкальную программу STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Выбор программы «Пользоват. 1» STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Выбор программы «Пользоват. 2» STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл./Выкл. случайный выбор программы STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показать окно выбора музыкальных треков STR_ERROR_NO_SONGS :{WHITE}В выбранном музыкальном наборе отсутствует музыка. # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Выбор программы воспроизведения STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}» STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Номер трека STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Программа - «{STRING}» STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Очистить STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистка пользовательской программы STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Щёлкните по названию трека для добавления в пользовательскую программу STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Выберите дорожку для удаления из пользовательского списка # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Крупнейшие компании, достигшие {NUM} года STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Порядковая таблица компаний в {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Бизнесмен STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN.abl :бизнесменом STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Предприниматель STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR.abl :предпринимателем STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Промышленник STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST.abl :промышленником STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капиталист STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST.abl :капиталистом STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Магнат STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE.abl :магнатом STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Транспортный король STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL.abl :транспортным королём STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Магнат Века STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY.abl :Магнатом Века STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}«{STRING}» ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Директора компании «{COMPANY}» называют {STRING.abl}! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME}, президент компании «{COMPANY}», заслужил титул «{STRING}»! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Карта - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Рельеф STR_SMALLMAP_TYPE_VEHICLES :Транспорт STR_SMALLMAP_TYPE_INDUSTRIES :Предприятия STR_SMALLMAP_TYPE_ROUTES :Маршруты STR_SMALLMAP_TYPE_VEGETATION :Растительность STR_SMALLMAP_TYPE_OWNERS :Владельцы STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Показать контуры земли на карте STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Показать транспорт на карте STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Показать предприятия на карте STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Показать маршруты на карте STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Показать растительность на карте STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Показать владельцев земли на карте STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Щелчок по типу предприятия переключает отображение его на карте. Ctrl+щелчок отключает все типы, кроме выбранного. Повторный Ctrl+щелчок включает все типы предприятий. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Щелчок по названию компании переключает отображение её собственности на карте. Ctrl+щелчок отключает отображение всех компаний, кроме выбранной. Повторный Ctrl+щелчок включает отображение всех компаний. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Автодороги STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Железные дороги STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Станции/Аэропорты/Пристани STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Строения/Предприятия STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Транспорт STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Ж/д транспорт STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Автотранспорт STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Водный транспорт STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Авиатранспорт STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Маршруты транспорта STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Лес STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Ж/д станция STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Грузовой терминал STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Автобусная станция STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Аэропорт/Вертодром STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Пристань STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Неровность STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Трава STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Пустырь STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Поля STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Деревья STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Камни STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Вода STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Нет владельца STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Города STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Предприятия STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Пустыня STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Снег STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Включить/выключить названия городов STR_SMALLMAP_CENTER :{BLACK}Центрировать миникарту по этой позиции STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Выключить все STR_SMALLMAP_ENABLE_ALL :{BLACK}Включить все STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Рельеф STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Скрыть все предприятия на карте STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Показать все предприятия на карте STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Отображение рельефа на карте STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Скрыть собственность всех компаний STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Показать собственность всех компаний на карте # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Показать последнее сообщение или новость STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * ПАУЗА * * STR_STATUSBAR_AUTOSAVE :{RED}АВТОСОХРАНЕНИЕ STR_STATUSBAR_SAVING_GAME :{RED}* * СОХРАНЕНИЕ ИГРЫ * * # News message history STR_MESSAGE_HISTORY :{WHITE}История сообщений STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Список недавних новостей STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Сообщение STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый поезд прибыл на станцию {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый автобус прибыл на остановку {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый грузовик прибыл на терминал {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый трамвай прибыл на {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый грузовой трамвай прибыл на {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый корабль причалил к {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Жители празднуют!{}Первый самолёт прибыл в {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Столкновение поездов!{}{COMMA} человек{P "" а ""} погиб{P "" ло ло} в результате крушения! STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}АВАРИЯ!{}Водитель транспортного средства погиб при столкновении с поездом. STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}АВАРИЯ!{}{COMMA} человек{P "" а ""} погиб{P "" ло ло} при столкновении с поездом! STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Авиакатастрофа!{}{COMMA} человек{P "" а ""} погиб{P "" ло ло} в огне в {STATION}! STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Авиакатастрофа!{}В самолёте закончилось топливо, {COMMA} человек{P "" а ""} погиб{P "" ло ло} при падении! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Крушение дирижабля в {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Автомобиль уничтожен при столкновении с НЛО! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Взрыв нефтеперегонного завода вблизи г.{NBSP}{TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Взрыв завода при подозрительных обстоятельствах вблизи г.{NBSP}{TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}НЛО приземлилось возле г.{NBSP}{TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Обвал на угольной шахте вызывает оползень в районе г.{NBSP}{TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Потоп!{}По крайней мере {COMMA} человек{P "" а ""} признан{P "" о о} пропавшим{P "" и и} без вести в результате наводнения! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Транспортная компания в опасном положении! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} будет продана или объявлена банкротом, если не улучшит финансовые показатели! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Объединение компаний! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} продана {STRING} за {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Банкрот! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} была закрыта кредиторами! Все активы распроданы! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Основана новая транспортная компания! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} начинает строительство около г.{NBSP}{TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} выкуплена {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Директор) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Компания «{STRING}» профинансировала основание города {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Новое предприятие! {STRING} стро{G 0 и и и я}тся возле г.{NBSP}{TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Новое предприятие! {STRING} заложен{G 0 "" а о ы} возле г.{NBSP}{TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}Предприятие «{STRING}» объявляет о скором закрытии! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} закрывается из-за проблем с поставками сырья! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}«{STRING}» объявляет о закрытии в связи с отсутствием деревьев в округе! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Создана зона евро!{}{}Теперь в вашей стране в качестве единой валюты используется евро! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Мировой спад{}{}Финансовые эксперты дают ужасные прогнозы в связи с кризисом экономики! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Спад закончился!{}{}Увеличение объёмов торговли внушает уверенность владельцам предприятий. Экономика укрепляет свои позиции. STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}Предприятие «{INDUSTRY}» увеличивает объёмы производства! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}«{INDUSTRY}» начинает разработку нового угольного пласта! Добыча увеличена вдвое! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Обнаружены новые запасы нефти!{}«{INDUSTRY}» увеличивает темпы добычи вдвое! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}«{INDUSTRY}» внедряет новые методы ведения с/х, что позволит удвоить производительность! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Предприятие «{1:INDUSTRY}» увеличивает производство {0:STRING.gen} на{NBSP}{2:COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Производительность предприятия «{INDUSTRY}» упала на 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Из-за нашествия вредителей «{INDUSTRY}» снижает производительность на 50%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Предприятие «{1:INDUSTRY}» снижает производство {0:STRING.gen} на{NBSP}{2:COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}ТС «{VEHICLE}» ждёт в депо STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}ТС «{VEHICLE}» ждёт в гараже STR_NEWS_SHIP_IS_WAITING :{WHITE}ТС «{VEHICLE}» ждёт в доке STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}ТС «{VEHICLE}» ждёт в ангаре # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}У ТС «{VEHICLE}» мало заданий STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}У ТС «{VEHICLE}» недействительное задание STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}У ТС «{VEHICLE}» повторяющиеся задания STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}У ТС «{VEHICLE}» некорректный пункт назначения # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}ТС «{VEHICLE}» устарело STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}ТС «{VEHICLE}» сильно устарело STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}ТС «{VEHICLE}» очень сильно устарело и требует срочной замены STR_NEWS_TRAIN_IS_STUCK :{WHITE}ТС «{VEHICLE}» не может найти путь для продолжения движения STR_NEWS_VEHICLE_IS_LOST :{WHITE}ТС «{VEHICLE}» заблудилось STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Доход ТС «{VEHICLE}» в прошлом году составил {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}ТС «{VEHICLE}» не может достичь пункта назначения - слишком далеко STR_NEWS_ORDER_REFIT_FAILED :{WHITE}ТС «{VEHICLE}» остановлено из-за сбоя переоборудования STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Сбой автообновления ТС «{VEHICLE}»{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Начато серийное производство новой модели {STRING.gen}! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Начато серийное производство новой модели {STRING.gen}! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} больше не принимает {STRING.acc} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} больше не принимает {STRING.acc} и {STRING.acc} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} теперь принимает {STRING.acc} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} теперь принимает {STRING.acc} и {STRING.acc} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Предложение субсидии истекло:{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} субсидироваться не будет. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Срок субсидии истёк:{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} больше не субсидируется. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Предложена субсидия:{}{}Первая компания, которая повезёт {STRING.acc} по маршруту {STRING} - {STRING}, получит годовую субсидию от местных властей! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Компания «{STRING}» получает субсидию!{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} будет оплачиваться в полуторном размере в течение года! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Компания «{STRING}» получает субсидию!{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} будет оплачиваться в двойном размере в течение года! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Компания «{STRING}» получает субсидию!{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} будет оплачиваться в тройном размере в течение года! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Компания «{STRING}» получает субсидию!{}{}Перевозка {STRING.gen} по маршруту {STRING} - {STRING} будет оплачиваться в четырёхкратном размере в течение года! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Хаос на дорогах города{NBSP}{TOWN}!{}{}Профинансированная {STRING} реконструкция дорог на 6 месяцев парализовала работу автотранспорта! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Транспортный монополист! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Администрация г.{NBSP}{TOWN} заключила контракт с компанией «{STRING}», предоставляющий ей эксклюзивные права на транспортные услуги в городе сроком на 1{NBSP}год! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Окно просмотра {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Скопировать в окно STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Скопировать текущую позицию в окно просмотра STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Вставить из окна STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Показать в основном окне # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Настройки игры STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Валюта STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Смена используемой в игре валюты ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Английский фунт (£) STR_GAME_OPTIONS_CURRENCY_USD :Доллар США ($) STR_GAME_OPTIONS_CURRENCY_EUR :Евро (€) STR_GAME_OPTIONS_CURRENCY_JPY :Японская иена (¥) STR_GAME_OPTIONS_CURRENCY_ATS :Австрийский шиллинг (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Бельгийский франк (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Швейцарский франк (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Чешская крона (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Немецкая марка (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Датская крона (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Испанская песета (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Финская марка (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Французский франк (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Греческая драхма (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Венгерский форинт (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Исландская крона (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Итальянская лира (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Нидерландский гульден (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Норвежская крона (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Польский злотый (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Румынский лей (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Российский рубль (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Словенский толар (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Шведская крона (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Турецкая лира (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Словацкая крона (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Бразильский реал (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Эстонская крона (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Литовский лит (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейская вона (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафриканский ранд (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Своя... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Единицы измерения STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Используемая система единиц измерения ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Британские STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Метрические STR_GAME_OPTIONS_MEASURING_UNITS_SI :СИ ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Направление движения STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}По какой стороне дороги ездит автотранспорт STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Левостороннее STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Правостороннее STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Названия городов STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}На каком языке будут названы населённые пункты ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Английские STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Французские STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Немецкие STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Английские (дополн.) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Латино-американские STR_GAME_OPTIONS_TOWN_NAME_SILLY :Английские (шуточные) STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Шведские STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Нидерландские STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Финские STR_GAME_OPTIONS_TOWN_NAME_POLISH :Польские STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Словацкие STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Норвежские STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Венгерские STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Австрийские STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Румынские STR_GAME_OPTIONS_TOWN_NAME_CZECH :Чешские STR_GAME_OPTIONS_TOWN_NAME_SWISS :Швейцарские STR_GAME_OPTIONS_TOWN_NAME_DANISH :Датские STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Турецкие STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Итальянские STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Каталанские ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Автосохранение STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Интервал автосохранения игры STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Отключено STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Каждый месяц STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Каждые 3 месяца STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Каждые 6 месяцев STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Каждый год STR_GAME_OPTIONS_LANGUAGE :{BLACK}Язык STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Язык пользовательского интерфейса STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Полноэкранный режим STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Включить/выключить полноэкранный режим STR_GAME_OPTIONS_RESOLUTION :{BLACK}Разрешение экрана STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Выбор разрешения экрана STR_GAME_OPTIONS_RESOLUTION_OTHER :Другое STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат снимков экрана STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Формат, в котором будут сохраняться снимки экрана STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовый набор графики STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Выбрать базовый набор графики STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} отсутствующи{P й х х}/повреждённы{P й х х} файл{P "" а ов} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о базовом наборе графики STR_GAME_OPTIONS_BASE_SFX :{BLACK}Базовый набор звуков STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Выберите основной набор звуков для использования STR_GAME_OPTIONS_BASE_SFX_TOOLTIP.m :{BLACK}Выберите основной набор звуков STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о наборе основных звуков STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Базовый набор музыки STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выберите базовый набор музыки STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} повреждённы{P й х х} файл{P 0 "" а ов} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о наборе базовой музыки STR_ERROR_FULLSCREEN_FAILED :{WHITE}Сбой полноэкранного режима # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Своя валюта STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Обменный курс: {ORANGE}{CURRENCY_LONG} = £{COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Повысить курс вашей валюты по отношению к фунту (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Снизить курс вашей валюты по отношению к фунту (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Установить курс вашей валюты по отношению к фунту (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Разделитель: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Установить разделитель тысяч STR_CURRENCY_PREFIX :{LTBLUE}Префикс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Установить префикс вашей валюты STR_CURRENCY_SUFFIX :{LTBLUE}Суффикс: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Установить суффикс вашей валюты STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Переход на евро: {ORANGE}в {NUM} году STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Переход на евро: {ORANGE}никогда STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Установить год перехода на евро STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Перейти на евро раньше STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Перейти на евро позже STR_CURRENCY_PREVIEW :{LTBLUE}Образец: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 англ. фунтов (£) в вашей валюте STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Изменить параметр валюты STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Максимальное количество конкурентов: {ORANGE}{COMMA} STR_NONE :Нет STR_FUNDING_ONLY :Строить самому STR_MINIMAL :Минимальное STR_NUM_VERY_LOW :Очень малое STR_NUM_LOW :Малое STR_NUM_NORMAL :Среднее STR_NUM_HIGH :Большое STR_NUM_CUSTOM :Указанное STR_NUM_CUSTOM_NUMBER :Заданный ({NUM}) STR_VARIETY_NONE :Нет STR_VARIETY_VERY_LOW :Очень низкое STR_VARIETY_LOW :Низкое STR_VARIETY_MEDIUM :Среднее STR_VARIETY_HIGH :Большое STR_VARIETY_VERY_HIGH :Очень большое STR_AI_SPEED_VERY_SLOW :Очень медленная STR_AI_SPEED_SLOW :Медленная STR_AI_SPEED_MEDIUM :Средняя STR_AI_SPEED_FAST :Быстрая STR_AI_SPEED_VERY_FAST :Очень быстрая STR_SEA_LEVEL_VERY_LOW :Очень малое STR_SEA_LEVEL_VERY_LOW.p :Очень низкие STR_SEA_LEVEL_LOW :Малое STR_SEA_LEVEL_LOW.p :Малые STR_SEA_LEVEL_MEDIUM :Среднее STR_SEA_LEVEL_MEDIUM.p :Средние STR_SEA_LEVEL_HIGH :Большое STR_SEA_LEVEL_HIGH.p :Высокие STR_SEA_LEVEL_CUSTOM :Заданный STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Заданный ({NUM}%) STR_RIVERS_NONE :Нет STR_RIVERS_FEW :Малое STR_RIVERS_MODERATE :Среднее STR_RIVERS_LOT :Большое STR_DISASTER_NONE :Выключено STR_DISASTER_REDUCED :Умеренная STR_DISASTER_NORMAL :Обычная STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Очень плоский STR_TERRAIN_TYPE_FLAT :Плоский STR_TERRAIN_TYPE_HILLY :Холмистый STR_TERRAIN_TYPE_MOUNTAINOUS :Гористый STR_CITY_APPROVAL_PERMISSIVE :Дозволяющее STR_CITY_APPROVAL_TOLERANT :Терпимое STR_CITY_APPROVAL_HOSTILE :Враждебное STR_WARNING_NO_SUITABLE_AI :{WHITE}Модули ИИ отсутствуют.{}Их можно скачать через систему проверки онлайн-контента. # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Расширенные настройки STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Фильтр: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Развернуть всё STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Свернуть всё STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(нет описания) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Значение по умолчанию: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Тип настроек: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Настройки клиента (не содержатся в файлах сохранений; влияют на все игры) STR_CONFIG_SETTING_TYPE_GAME_MENU :Настройки игры (содержатся в файлах сохранений; действительны только для новых игр) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Настройки игры (содержатся в файлах сохранений; действительны только для текущей игры) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Настройки компании (содержатся в файлах сохранений; действительны только для новых игр) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Настройки компании (содержатся в файлах сохранений; действительны только для текущей игры) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Показывать: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Отображать в списке только изменённые настройки STR_CONFIG_SETTING_RESTRICT_BASIC :Основные настройки STR_CONFIG_SETTING_RESTRICT_ADVANCED :Расширенные настройки STR_CONFIG_SETTING_RESTRICT_ALL :Специальные настройки / все настройки STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Настройки со значениями, отличающимися от значений по умолчанию STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Настройки со значениями, отличающимися от настроек новой игры STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Ограничивает список ниже определёнными типами настроек STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Все настройки STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Настройки клиента (не записываются в сохранения; влияют на все игры) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Настройки игры (записываются в сохранения; влияют только на новые игры) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Настройки игры (записываются в сохранение; влияют только на текущую игру) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Настройки компании (записываются в сохранения; влияют только на новые игры) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Настройки компании (записываются в сохранение; влияют только на текущую компанию) STR_CONFIG_SETTING_OFF :нет STR_CONFIG_SETTING_ON :да STR_CONFIG_SETTING_DISABLED :отключено STR_CONFIG_SETTING_COMPANIES_OFF :нет STR_CONFIG_SETTING_COMPANIES_OWN :для своей компании STR_CONFIG_SETTING_COMPANIES_ALL :для всех компаний STR_CONFIG_SETTING_NONE :нет STR_CONFIG_SETTING_ORIGINAL :оригинальное STR_CONFIG_SETTING_ORIGINAL.f :оригинальная STR_CONFIG_SETTING_REALISTIC :реалистичное STR_CONFIG_SETTING_REALISTIC.f :реалистичная STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :слева STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :посередине STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :справа STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Максимальная сумма займа: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Максимальная сумма займа для компании (без учета инфляции) STR_CONFIG_SETTING_INTEREST_RATE :Процентная ставка: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Процентная ставка по займам; также устанавливает уровень инфляции, если та включена. STR_CONFIG_SETTING_RUNNING_COSTS :Эксплуатационные расходы: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Установите уровень стоимости обслуживания и эксплуатации транспорта и инфраструктуры STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Скорость строительства: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Ограничьте количество строительных мероприятий для ИИ STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Поломки транспорта: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Задайте частоту поломок недостаточно качественно обслуженного транспорта STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Множитель субсидий: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Установите множитель оплаты за субсидируемые перевозки STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Затраты на строительство: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Установите уровень затрат на строительство и приобретение STR_CONFIG_SETTING_RECESSIONS :Спады: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :При включении раз в несколько лет в экономике может начаться кризис. В это время объём производства значительно уменьшается (он возвращается к прежнему уровню, когда спад заканчивается). STR_CONFIG_SETTING_TRAIN_REVERSING :Запретить разворот поездов на станциях: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Если включено, поезда не будут разворачиваться на проходных станциях, даже если это позволит сократить путь к следующему пункту назначения STR_CONFIG_SETTING_DISASTERS :Катастрофы: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включение/отключение катастроф, которые могут время от времени блокировать или уничтожать транспортные средства или инфраструктуру STR_CONFIG_SETTING_CITY_APPROVAL :Отношение городского совета к реструктуризации окрестностей: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Выберите уровень влияния шума и загрязнения окружающей среды компаниями на их рейтинг в городах и возможность дальнейшего строительства около городов STR_CONFIG_SETTING_BUILDONSLOPES :Разрешить строительство на склонах и берегах: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :При включении пути и станции можно строить на склонах с использованием насыпей. При отключении пути можно строить только на склонах, ориентация которых совпадает с направлением дороги. STR_CONFIG_SETTING_AUTOSLOPE :Разрешить изм. ландшафта под зданиями, дорогами и т. д. (автоспуски): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Разрешить изменение ландшафта под домами и дорогами, не требуя их сноса STR_CONFIG_SETTING_CATCHMENT :Зона покрытия зависит от типа станции: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Установить различный размер зоны покрытия для различных типов станций и аэропортов STR_CONFIG_SETTING_EXTRADYNAMITE :Разрешить снос (почти) всех городских объектов: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Упростить снос городских зданий и инфраструктуры STR_CONFIG_SETTING_TRAIN_LENGTH :Максимальная длина состава: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Настройка максимальной длины состава STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} клет{P ка ки ок} STR_CONFIG_SETTING_SMOKE_AMOUNT :Количество дыма/искр у локомотивов: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Количество дыма или искр, появляющихся над локомотивом STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Модель ускорения поездов: {STRING.f} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Настройка модели ускорения поездов. При использовании «оригинальной» модели все поезда одинаково замедляются при движении в гору. При использовании «реалистичной» модели поезда замедляются на подъёмах и поворотах в зависимости от различных характеристик, например, длины состава и тягового усилия локомотива. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Модель ускорения автотранспорта: {STRING.f} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Настройка модели ускорения автотранспорта. При использовании «оригинальной» модели все автомобили одинаково замедляются при движении в гору. При использовании «реалистичной» модели автомобили замедляются на подъёмах в зависимости от различных характеристик двигателя, например, тягового усилия. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Крутизна склона для поездов: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Настройка крутизны склона для поездов. Высокие значения делают подъём более тяжёлым. STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Крутизна склона для автотранспорта: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Настройка крутизны склона для автотранспорта. Высокие значения делают подъём более тяжёлым. STR_CONFIG_SETTING_FORBID_90_DEG :Запретить 90-градусные повороты на ж/д и море: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Поворот на 90° происходит, когда к горизонтальному участку рельсов примыкает вертикальный. В остальных случаях поезда поворачивают на 45°. Запрет поворота на 90° относится также и к кораблям. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Разрешить объединение не примыкающих друг к другу станций: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Разрешить объединять несколько станций в одну, даже если они не примыкают друг к другу. Требуется нажать Ctrl+щелчок при расширении станции. STR_CONFIG_SETTING_IMPROVEDLOAD :Использовать улучшенный алгоритм загрузки: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :При включении транспортные средства загружаются последовательно одно за другим. Только тот груз, который не поместится на первый транспорт, будет погружен на следующий в очереди на станции. STR_CONFIG_SETTING_GRADUAL_LOADING :Постепенная загрузка транспорта: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Если включено - транспорт загружается постепенно; время погрузки зависит от типа транспорта.{}Если отключено - весь доступный груз перемещается на транспорт; время погрузки зависит от количества груза. STR_CONFIG_SETTING_INFLATION :Включить инфляцию: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Включить инфляцию, при которой затраты растут немного быстрее, чем доходы STR_CONFIG_SETTING_SELECTGOODS :Поставлять груз на станцию, только если на него был спрос: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Доставлять на станцию только тот груз, за которым хоть раз пришёл транспорт. Это позволяет избежать плохих рейтингов доставки для грузов, перевозка которых не осуществляется. STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Максимальная длина моста: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Ограничение на длину строящихся мостов STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Максимальная длина туннеля: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Ограничение на длину строящихся туннелей STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Способ создания сырьевых предприятий: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Способ создания сырьевых предприятий.{}«Не создавать» - отключить возможность их создания транспортными компаниями.{}«Геологоразведка» - предприятие будет создано в случайном месте на карте; иногда геологи не находят месторождений, и постройка предприятия отменяется.{}«Как и остальные» - сырьевые предприятия строятся как и перерабатывающие, с выбором места постройки. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :не создавать STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :как и остальные STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :геологоразведка STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Ровная поверхность вокруг предприятий: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Радиус выравниваемой местности вокруг новых предприятий. Это позволяет подготовить место для постройки станций, дорог и{NBSP}т.{NBSP}п. STR_CONFIG_SETTING_MULTIPINDTOWN :Разрешить несколько предприятий одного типа на город: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Обычно к каждому городу относится не более одного предприятия каждого типа. Включение данной настройки снимает это ограничение. STR_CONFIG_SETTING_SIGNALSIDE :Показывать сигналы: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Сторона железнодорожного полотна, на которой будут устанавливаться сигналы STR_CONFIG_SETTING_SIGNALSIDE_LEFT :слева STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :на стороне движения автотранспорта STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :справа STR_CONFIG_SETTING_SHOWFINANCES :Показывать финансовую статистику каждый год: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Показывать окно с финансовой информацией в конце каждого года для упрощения контроля финансового состояния компании STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Создавать задания с меткой «без остановок»: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Обычно транспортное средство останавливается на каждой станции, через которое проезжает. Если в задании стоит метка «без остановок», то ТС не останавливается на пути к станции назначения. Эта настройка влияет только на вновь создаваемые задания; после создания маршрута каждое задание можно настроить индивидуально. STR_CONFIG_SETTING_STOP_LOCATION :По умолчанию поезда останавливаются {STRING} станции STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Укажите, в какой части станции должны останавливаться поезда. «Начало станции» обозначает тот край платформы, куда поезд прибывает; «середина станции» - середину платформы; «конец станции» - край платформы, противоположный тому, откуда прибыл поезд. Учтите, что это значения по умолчанию; в каждом задании можно указать своё место остановки. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :в начале STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :в середине STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :в конце STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Автотранспорт строится в очередь у станции: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Если остановка или грузовой терминал заняты, то автотранспорт будет ждать своей очереди у въезда на станцию. STR_CONFIG_SETTING_AUTOSCROLL :Смещать обзор, когда курсор находится у края экрана: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Включает смещение обзора при приближении указателя мыши к краю экрана STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :нет STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :в основном окне при полноэкранном режиме STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :в основном окне STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :во всех окнах STR_CONFIG_SETTING_BRIBE :Разрешить подкупать местные власти: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Позволять компаниям подкупать городскую администрацию. Если факт подкупа раскроется, рейтинг компании в городе падает и взимодействие с местной администрацией прекращается на 6 месяцев. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Разрешить покупать эксклюзивные транспортные права: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Если компания покапает эксклюзивные транспортные права, то на станции конкурентов не будет поступать груз и не будут приходить пассажиры в течение года STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Разрешить финансирование строительства зданий: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Разрешить транспортым компаниям финансировать строительство новых городских зданий STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Разрешить финансирование реконструкции дорог: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Позволить компаниям финансировать в городах дорожные работы, парализующие работу автотранспорта STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Разрешить передачу денег другим компаниям: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Позволить компаниям в сетевой игре передавать друг другу деньги STR_CONFIG_SETTING_FREIGHT_TRAINS :Множитель веса груза для товарных поездов: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Множитель веса груза, перевозимого поездами. Высокие значения увеличат нагрузку на локомотивы, особенно при подъёме в гору. STR_CONFIG_SETTING_PLANE_SPEED :Множитель скорости самолётов: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Ограничение скорости воздушных судов относительно другого транспорта для снижения сверхприбылей от использования самолётов STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Вероятность падения самолётов: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Настройка вероятности падения самолёта STR_CONFIG_SETTING_PLANE_CRASHES_NONE :отсутствует STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :сниженная STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :обычная STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Позволять строить остановки на городских дорогах: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Разрешить компаниям строить сквозные остановки на муниципальных дорогах STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Разрешить проезд через остановки соперников по их дорогам: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Разрешить компаниям строить сквозные остановки на дорогах, принадлежащих другим транспортным компаниям STR_CONFIG_SETTING_ADJACENT_STATIONS :Разрешить строительство смежных станций: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Разрешить размещение различных станций на соседних клетках STR_CONFIG_SETTING_DYNAMIC_ENGINES :Включить поддержку нескольких наборов NewGRF с транспортом: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Эта настройка требуется для совместимости со старыми модулями NewGRF. Не отключайте её без необходимости. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Изменение этого параметра невозможно, если в игре есть транспортные средства. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Обслуживание инфраструктуры: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Включает затраты на содержание инфраструктуры. Стоимость непропорционально увеличивается с ростом транспортной сети, оказывая, таким образом, большее влияние на крупные компании, чем на малые. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аэропорты не устаревают: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :При включении все типы аэропортов доступны для строительства в любое время после их первоначального появления STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Предупреждать, если ТС потерялось: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Включает сообщения о транспортых средствах, которые не могут найти путь к месту назначения STR_CONFIG_SETTING_ORDER_REVIEW :Проверять маршруты на правильность: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Включает периодическую проверку маршрутов транспорта и сообщения о наличии некоторых очевидных проблем в них STR_CONFIG_SETTING_ORDER_REVIEW_OFF :не проверять STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :у всех запущенных STR_CONFIG_SETTING_ORDER_REVIEW_ON :у всех STR_CONFIG_SETTING_WARN_INCOME_LESS :Предупреждать, если доход ТС отрицателен: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Включает сообщения о транспортых средствах, не принёсших прибыли по итогам прошедшего года STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Транспорт не будет выходить из эксплуатации: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :При включении все транспортные средства остаются доступными для покупки в любое время после начала их производства STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Автозамена изношенного транспорта: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Включает автоматическую замену устаревших транспортных средств STR_CONFIG_SETTING_AUTORENEW_MONTHS :Автозамена транспорта {STRING} истечения срока эксплуатации STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Относительный возраст транспортного средства, после которого оно подлежит автозамене STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :за {COMMA} месяц{P "" а ев} до STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :спустя {COMMA} месяц{P "" а ев} после STR_CONFIG_SETTING_AUTORENEW_MONEY :Сумма, необходимая для автозамены: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Минимальная сумма денег на счёте компании, необходимая для начала автозамены STR_CONFIG_SETTING_ERRMSG_DURATION :Длительность сообщения об ошибке: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Длительность показа красных окон с сообщениями об ошибках. Эта настройка не действует на некоторые сообщения (о критических ошибках) - они не закрываются автоматически, только вручную. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} секунд{P а ы ""} STR_CONFIG_SETTING_HOVER_DELAY :Показывать подсказки: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Задержка между наведением указателя мыши на элемент интерфейса и появлением подсказки. Можно привязать появление подсказки к щелчку правой кнопкой мыши. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :при наведении указателя на {COMMA} секунд{P у ы ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :щелчком правой кнопкой мыши STR_CONFIG_SETTING_POPULATION_IN_LABEL :Показывать количество жителей в названии города: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Показывать количество жителей городов в названиях STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Толщина линий графиков: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Толщина линий графиков. Тонкие линии более точны; толстые линии лучше видны и их цвета лучше различимы. STR_CONFIG_SETTING_LAND_GENERATOR :Генератор ландшафта: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Оригинальный STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Максимальное расстояние от края карты до нефтезаводов: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нефтеперерабатывающие заводы всегда строятся у краёв карты или на берегах островов, находящихся недалеко от края STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Высота снеговой линии: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Неровность земли (только для TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Очень гладкий STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Гладкий STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Грубый STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Очень грубый STR_CONFIG_SETTING_TREE_PLACER :Алгоритм рассадки деревьев: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Нет STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Оригинальный STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Улучшенный STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Вращение карты высот: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Против часовой стрелки STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :По часовой стрелке STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Уровень высоты для карт с плоским рельефом: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Разрешить изменение ландшафта на краю карты: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :При отключении края карты всегда будут водными STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Одна или несколько клеток в северном углу не пусты STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Одна или несколько клеток берега без воды STR_CONFIG_SETTING_STATION_SPREAD :Максимальный размер станции: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Максимальный размер области, которую может занимать станция или её составные части.{}Имейте в виду, что большие значения замедляют игру. STR_CONFIG_SETTING_SERVICEATHELIPAD :Включить обслуживание на вертолётных площадках: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Проводить техническое обслуживание вертолётов при каждой посадке, в том числе на вертолётных площадках, где нет ангара STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Связать ландшафтную панель с транспортной: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Открывать панель инструментов для изменения ландшафта вместе с панелью создания транспортных коммуникаций STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Цвет ландшафта на миникарте: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Цвет ландшафта на миникарте STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :зелёный STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :тёмно-зелёный STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фиолетовый STR_CONFIG_SETTING_REVERSE_SCROLLING :Обратить направление перемещения обзора мышью: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Настройка смещения обзора правой кнопкой мыши.{}Если отключено, мышь двигает камеру.{}Если включено, мышь двигает карту. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавное смещение обзора: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Настройка перемещения обзора в основном окне при щелчке по миникарте или по команде обзора какого-нибудь объекта. Если включено, то обзор смещается плавно; если отключено - то мгновенно. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Показывать замеры при строительстве: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Показывать расстояния и разницу высот при строительстве STR_CONFIG_SETTING_LIVERIES :Показывать индивидуальную окраску транспорта: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Включить индивидуальную окраску различных видов транспорта вместо общего цвета компании STR_CONFIG_SETTING_LIVERIES_NONE :нет STR_CONFIG_SETTING_LIVERIES_OWN :только для своей компании STR_CONFIG_SETTING_LIVERIES_ALL :для всех компаний STR_CONFIG_SETTING_PREFER_TEAMCHAT :Предпочитать командный чат при нажатии Enter: {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Настроить внутрикорпоративный чат на клавишу «Enter», а общий - на «Ctrl+Enter» STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Использовать колесо прокрутки: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Можно настроить смещение обзора с помощью качающегося колеса прокрутки STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :для масштабирования STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :для смещения обзора STR_CONFIG_SETTING_SCROLLWHEEL_OFF :не использовать STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Скорость смещения обзора прокруткой колеса мыши: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Настройка скорости смещения обзора с помощью колеса прокрутки STR_CONFIG_SETTING_OSK_ACTIVATION :Экранная клавиатура: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Выберите способ открытия экранной клавиатуры для ввода текста с помощью указателя. Эта настройка предназначена для мобильных устройств, не имеющих клавиатуры. STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Отключено STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Двойной щелчок STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Одиночный щелчок (когда выделено) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Одиночный щелчок (немедленно) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Эмуляция нажатия правой кнопки мыши: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Выбор способа эмуляции нажатия правой кнопки мыши STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Команд. STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Контрол. STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Выкл. STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Смещение обзора по нажатию левой кнопки мыши: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Смещение обзора левой кнопкой мыши. Это удобно при использовании сенсорного экрана. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Использовать {STRING} формат даты для имён сохранений STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Формат даты, использующийся в названиях сохранённых игр STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :длинный (31-е дек 2008 г.) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :короткий (31.12.2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Если в NewGRF не указана палитра, использовать: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палитра по умолчанию для модулей NewGRF, в которых не указана требуемая палитра STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Палитра по умолчанию (DOS) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Устаревший формат палитры (Win) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Автопауза в начале игры: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Включение паузы при старте новой игры, чтобы лучше изучить карту STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Во время паузы разрешить: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Настройка допустимых действий во время паузы STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :ничего STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :все действия, кроме строительства STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :все действия, кроме изменения ландшафта STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :все действия STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Использовать расширенный список транспорта: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Включить расширенный список транспорта, позволяющий объединять транспортные средства в группы STR_CONFIG_SETTING_LOADING_INDICATORS :Показывать индикатор загрузки: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Отображение индикаторов загрузки над загружающимся и разгружающимся транспортом STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Графики движения в «тиках», а не днях: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Измерять время в графиках движения игровыми «тиками», а не днями. 1 день равен 74 «тикам». STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Показывать время прибытия и отправления в графиках: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Показывать ожидаемое время прибытия и отправления в графиках движения STR_CONFIG_SETTING_QUICKGOTO :Быстрое создание заданий транспорта: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Открывать окно маршрута с нажатой кнопкой «Следовать» STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип рельсов по умолчанию (после старта/загрузки): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Тип рельсов, выбираемый по умолчанию после старта или загрузки игры.{}«Первые доступные» - самый старый тип рельсов.{}«Последние доступные» - самый новый тип.{}«Наиболее используемые» - тип рельсов, наиболее широко используемых в игре. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :первые доступные STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :последние доступные STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :наиболее используемые STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Показывать зарезервированные пути: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Подсвечивать зарезервированные пути для решения проблем на путях с маршрутными сигналами STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Инструменты строительства активны после использования: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Инструменты строительства мостов, туннелей и{NBSP}т.{NBSP}п. не отключаются самостоятельно после использования STR_CONFIG_SETTING_EXPENSES_LAYOUT :Группировать расходы в окне финансов компании: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Разделять доходы и расходы в окне финансовой информации компании STR_CONFIG_SETTING_SOUND_TICKER :Бегущая строка: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Воспроизводить звук при появлении бегущей строки с новостями STR_CONFIG_SETTING_SOUND_NEWS :Новости: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Воспроизводить звуковые эффекты при публикации новостных статей STR_CONFIG_SETTING_SOUND_NEW_YEAR :Финансовый отчёт: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Воспроизводить звуковой эффект при отображении финансового отчёта компании за прошедшие годы STR_CONFIG_SETTING_SOUND_CONFIRM :Строительство: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Воспроизводить звуковые эффекты при строительстве и других действиях STR_CONFIG_SETTING_SOUND_CLICK :Нажатия кнопок: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Воспроизводить звук нажатий на кнопки STR_CONFIG_SETTING_SOUND_DISASTER :Аварии/катастрофы: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Воспроизводить звук аварий и катастроф STR_CONFIG_SETTING_SOUND_VEHICLE :Транспорт: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Воспроизводить звук, издаваемый транспортом STR_CONFIG_SETTING_SOUND_AMBIENT :Фон: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Воспроизводить фоновый шум ландшафта, предприятий и городов STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Отключить создание инфраструктуры, если нет подходящих доступных ТС: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Экономит время и деньги, отключая инструменты создания инфраструктуры, для которой не существует доступных транспортных средств STR_CONFIG_SETTING_MAX_TRAINS :Максимальное количество поездов на игрока: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Максимальное количество поездов, которое может иметь транспортная компания STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Максимальное количество автотранспорта на игрока: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Максимальное количество автомобилей, которое может иметь транспортная компания STR_CONFIG_SETTING_MAX_AIRCRAFT :Максимальное количество авиатранспорта на игрока: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Максимальное количество воздушных судов, которое может иметь транспортная компания STR_CONFIG_SETTING_MAX_SHIPS :Максимальное количество кораблей на игрока: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Максимальное количество кораблей, которое может иметь транспортная компания STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Не допускать постройки поездов компьютером: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Запрет строительства поездов для игроков, управляемых компьютером STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Не допускать постройки автомобилей компьютером: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Запрет строительства автомобилей для игроков, управляемых компьютером STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Не допускать постройки авиатранспорта компьютером: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Запрет строительства воздушных судов для игроков, управляемых компьютером STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Не допускать постройки кораблей компьютером: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Запрет строительства кораблей для игроков, управляемых компьютером STR_CONFIG_SETTING_AI_PROFILE :Исходный профиль настроек: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Выберите, какой профиль настроек использовать случайному ИИ или для начальных значений при добавлении нового ИИ или сценария игры STR_CONFIG_SETTING_AI_PROFILE_EASY :Лёгкий STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Средний STR_CONFIG_SETTING_AI_PROFILE_HARD :Сложный STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Разрешить ИИ в сетевой игре: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Разрешить игрокам, управляемым компьютером, участвовать в сетевых играх STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Количество операций перед остановкой скрипта: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Максимальное количество операций, которое скрипт может выполнить за один цикл STR_CONFIG_SETTING_SERVINT_ISPERCENT :Интервал обслуживания в процентах: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Выберите, должно ли техническое обслуживание транспорта выполняться через определённые промежутки времени, либо при снижении надёжности транспортного средства на определённый процент от максимума STR_CONFIG_SETTING_SERVINT_TRAINS :Интервал обслуживания по умолчанию для поездов: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Настройка периодичности тех. обслуживания для новых поездов STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} д{P ень ня ней}/% STR_CONFIG_SETTING_SERVINT_DISABLED :отключен STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Интервал обслуживания по умолчанию для автотранспорта: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Настройка периодичности тех. обслуживания для новых автомобилей STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Интервал обслуживания по умолчанию для авиатранспорта: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Настройка периодичности тех. обслуживания для новых воздушных судов STR_CONFIG_SETTING_SERVINT_SHIPS :Интервал обслуживания по умолчанию для кораблей: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Настройка периодичности тех. обслуживания для новых судов STR_CONFIG_SETTING_NOSERVICE :Не обслуживать транспорт, если отключены поломки: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Отключение технического обслуживания транспортных средств, если отключены поломки. (Если транспорт не заходит в депо, автозамена не работает). STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Учитывать ограничение скорости у вагонов: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :При наличии в составе вагонов с ограничением скорости учитывать это ограничение при определении максимальной скорости состава STR_CONFIG_SETTING_DISABLE_ELRAILS :Выключить электрифицированную железную дорогу: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :При включении этой настройки электровозы смогут ездить по неэлектрифицированной железной дороге STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Первое транспортное средство игрока на станции: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Показывать новости о первом транспортном средстве, прибывающем на станцию игрока STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Первое транспортное средство конкурента на станции: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Показывать новости о первом транспортном средстве, прибывающем на станцию конкурента STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Аварии и катастрофы: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Показывать новости об авариях и катастрофах STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Информация о Компании: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Показывать новости об основании и риске банкротства транспортных компаний STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Открытие предприятий: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Показывать новости об открывающихся предприятиях STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Закрытие предприятий: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Показывать новости о закрывающихся предприятиях STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Изменения в экономике: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Показывать новости о глобальных изменениях в экономике STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Изм. производительности предприятий, обслуж. компанией: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Показывать новости об изменении производительности предприятий, обслуживаемых компанией игрока STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Изм. производительности предприятий, обслуж. конкурентами: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Показывать новости об изменении производительности предприятий, обслуживаемых конкурентами STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Изм. производительности предпр., никем не обслуживаемых: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Показывать новости об изменении производительности никем не обслуживаемых предприятий STR_CONFIG_SETTING_NEWS_ADVICE :Советы/сведения по транспорту компании: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Показывать сообщения о транспортных средствах, на которые следует обратить внимание STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Новый транспорт: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Показывать новости о новых моделях транспортных средств STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Изменения в списке принимаемых грузов: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Показывать сообщения об изменении списка принимаемых станциями грузов STR_CONFIG_SETTING_NEWS_SUBSIDIES :Субсидии: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Показывать новости, связанные с субсидиями STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Общая информация: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Показывать общие новости, вроде покупки эксклюзивных транспортных прав или проведения реконструкции дорог STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Выкл STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Кратко STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Полно STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Цветные газеты появляются в {STRING} году STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Обычно в газетах печатают чёрно-белые изображения, а начиная с указанного года - цветные STR_CONFIG_SETTING_STARTING_YEAR :Год начала игры: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Включить плавную экономику (частые, небольшие изменения): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :При включении производительность предприятий меняется чаще и более плавно. Эта настройка обычно не влияет на предприятия, внесённые в игру модулями NewGRF. STR_CONFIG_SETTING_ALLOW_SHARES :Разрешить торговлю акциями других компаний: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Разрешает торговлю акциями транспортных компаний. Акции выпускаются компаниями через некоторое время после основания. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Процент дохода, начисляемый при частичной перевозке: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Процент прибыли, начисляемый транспорту за частичную перевозку груза. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При перетаскивании ставить сигналы каждые: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Настройка периодичности расстановки сигналов методом перетаскивания. Сигналы будут устанавливаться до первого встреченного препятствия (пересечения или другого сигнала). STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} клет{P ку ки ок} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Равномерная расстановка сигналов при перетаскивании: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Настройка метода расстановки сигналов с помощью Ctrl+перетаскивания. Если равномерная расстановка отключена, то сигналы дополнительно ставятся перед мостами, туннелями и после них. Если включена, то сигналы ставятся ровно на каждой N-й клетке. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Строить семафоры старого стиля: до {STRING} года STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Год, начиная с которого на железных дорогах начинают использоваться светофоры. До этого строятся семафоры (которые функционируют точно так же, только выглядят по-другому). STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Включить меню сигналов: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Показывать окно для выбора типа сигналов при строительстве. Иначе тип сигнала выбирается с помощью Ctrl+щелчка по установленному сигналу. STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Тип сигналов по умолчанию: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Тип сигналов, устанавливаемый по умолчанию STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :обычные STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :маршрутные STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :одностор. маршрутные STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Выбор сигналов (Ctrl+щелчок): {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Выбор предлагаемых типов сигналов при модификации с помощью Ctrl+щелчка по установленному сигналу STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :только обычные STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :только маршрутные STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :все STR_CONFIG_SETTING_TOWN_LAYOUT :Тип дорожной сети для новых городов: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Тип дорожной сети в новых городах STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :старый алгоритм STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :улучшенный алгоритм STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :решёткой 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :решёткой 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :случайно STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Городам разрешено строить дороги: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Разрешить администрации городов расширять дорожную сеть. При отключенной настройке города самостоятельно расти не будут. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Города могут создавать ж/д переезды: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Разрешить городам строить дороги через железнодорожные пути STR_CONFIG_SETTING_NOISE_LEVEL :Разрешить городам контролировать уровень шума аэропортов: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :При выключенной настройке количество аэропортов ограничено двумя на каждый город. При включенной - администрация города ограничивает только уровень допустимого шума (он зависит от количества жителей). Уровень шума, производимого аэропортом, зависит от его типа и расстояния от центра города. STR_CONFIG_SETTING_TOWN_FOUNDING :Строительство городов в игре: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Разрешить игрокам создавать новые города STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :запрещено STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :разрешено STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :разрешено с выбором сети дорог STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Размножение деревьев в игре: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Настройка возможности самостоятельного размножения деревьев в игре. Это может влиять на работоспособность некоторых предприятий, например, лесопилок. STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :отключена {RED}(лесопилки не смогут работать) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :только в тропических лесах STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :везде STR_CONFIG_SETTING_TOOLBAR_POS :Положение главной панели инструментов: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Горизонтальное расположение основной панели инструментов в верхней части экрана STR_CONFIG_SETTING_STATUSBAR_POS :Расположение строки состояния: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Горизонтальное положение строки состояния в нижней части экрана STR_CONFIG_SETTING_SNAP_RADIUS :Радиус прилипания окна: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Расстояние от перетаскиваемого окна до соседних окон, к которым оно будет «прилипать». STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} точ{P ка ки ек} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :отключен STR_CONFIG_SETTING_SOFT_LIMIT :Макс. количество открытых окон (не закреплённых): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Максимальное количество не закреплённых окон, при превышении которого старые окна будут автоматически закрываться, чтобы освободить место на экране STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :отключен STR_CONFIG_SETTING_ZOOM_MIN :Максимальный уровень приближения: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Максимальный допустимый уровень приближения. Учтите, что включение приближения требует дополнительных затрат оперативной памяти. STR_CONFIG_SETTING_ZOOM_MAX :Максимальный уровень удаления: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Максимальный допустимый уровень удаления. Использование удаления может вызывать задержки в игре. STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :нормальный STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Скорость роста городов: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Скорость роста городов STR_CONFIG_SETTING_TOWN_GROWTH_NONE :нет STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :низкая STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :обычная STR_CONFIG_SETTING_TOWN_GROWTH_FAST :высокая STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :очень высокая STR_CONFIG_SETTING_LARGER_TOWNS :Часть городов, которые станут мегаполисами: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Часть городов, которая станет мегаполисами. Изначальный размер и скорость роста мегаполисов выше, чем у остальных городов. STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 из {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :нет STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Стартовый множитель размера мегаполисов: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Средний размер мегаполисов по сравнению с остальными городами в начале игры STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Удалять бесполезные элементы дорог во время реконструкции: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Удалять тупиковые элементы дорог при реконструкции STR_CONFIG_SETTING_GUI :{ORANGE}Интерфейс STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Строительство STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспорт STR_CONFIG_SETTING_STATIONS :{ORANGE}Станции STR_CONFIG_SETTING_ECONOMY :{ORANGE}Экономика STR_CONFIG_SETTING_AI :{ORANGE}Конкуренты STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Настройки экрана STR_CONFIG_SETTING_INTERACTION :{ORANGE}Взаимодействие STR_CONFIG_SETTING_SOUND :{ORANGE}Звуковые эффекты STR_CONFIG_SETTING_NEWS :{ORANGE}Новости и сообщения STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Сигналы STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Перемещение грузов STR_CONFIG_SETTING_AI_NPC :{ORANGE}Искусственный интеллект STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автообновление STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Обслуживание STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршруты STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Поезда STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Города STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Предприятия STR_CONFIG_SETTING_PATHFINDER_OPF :оригинальный STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Рекомендуется) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Алгоритм поиска пути для поездов: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Алгоритм поиска пути, используемый поездами STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Алгоритм поиска пути для автотранспорта: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Алгоритм поиска пути, используемый автомобилями STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Алгоритм поиска пути для кораблей: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Алгоритм поиска пути, используемый кораблями STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Автоматический разворот у сигналов: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Разрешить поездам разворачиваться у светофора, если они долго ждут разрешающего сигнала STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Изменить значение # Config errors STR_CONFIG_ERROR :{WHITE}Ошибка в файле конфигурации... STR_CONFIG_ERROR_ARRAY :{WHITE}... ошибка в массиве «{STRING}» STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... неверное значение «{STRING}» параметра «{STRING}» STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... лишние символы после «{STRING}» STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... игнорируется NewGRF «{STRING}»: у него такой же идентификатор GRF, как и у «{STRING}» STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... игнорируется неверный NewGRF «{STRING}»: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :не найден STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :использование в качестве статического небезопасно STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :системный NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :несовместим с данной версией OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :неизвестный STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... уровень сжатия «{STRING}» неверный STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... алгоритм сохранения «{STRING}» недоступен. Будет использоваться «{STRING}» STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... набор графики "{STRING}" не найден STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... набор звуков "{STRING}" не найден STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... набор музыки "{STRING}" не найден STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Нехватка оперативной памяти STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Не удалось выделить {BYTES} для кэша спрайтов. Размер кэша снижен до {BYTES}. Это отрицательно скажется на производительности OpenTTD. Чтобы снизить затраты памяти, отключите 32-битную графику и снизьте максимальный уровень приближения. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Новая игра STR_INTRO_LOAD_GAME :{BLACK}Загрузить игру STR_INTRO_PLAY_SCENARIO :{BLACK}Играть сценарий STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Загрузить карту высот STR_INTRO_SCENARIO_EDITOR :{BLACK}Редактор сценариев STR_INTRO_MULTIPLAYER :{BLACK}Сетевая игра STR_INTRO_GAME_OPTIONS :{BLACK}Настройки игры STR_INTRO_HIGHSCORE :{BLACK}Таблица рекордов STR_INTRO_ADVANCED_SETTINGS :{BLACK}Расширенные настройки STR_INTRO_NEWGRF_SETTINGS :{BLACK}Настройки NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Проверить онлайн-контент STR_INTRO_SCRIPT_SETTINGS :{BLACK}Настройки ИИ / скрипта STR_INTRO_QUIT :{BLACK}Выход STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Начать новую игру. Ctrl+щелчок пропускает этап настройки карты. STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Загрузить сохранённую игру STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Начать новую игру, используя карту высот в качестве шаблона карты STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Начать новую игру, используя сценарий STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Создать собственный сценарий STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Начать сетевую игру STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Выбрать умеренный климат STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Выбрать субарктический климат STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Выбрать субтропический климат STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Выбрать игрушечный мир STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Открыть настройки игры STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Показать таблицу рекордов STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Показать расширенные настройки STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Показать настройки NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Найти новый и обновлённый контент для загрузки STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Изменить настройки ИИ / игрового скрипта STR_INTRO_TOOLTIP_QUIT :{BLACK}Выйти из OpenTTD STR_INTRO_TRANSLATION :{BLACK}На этот язык не переведен{P 0 а ы о} {NUM} строк{P а и ""}. Вы можете помочь проекту, зарегистрировавшись как переводчик. Инструкции в файле readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Выход STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Вы уверены, что хотите прервать игру и вернуться в {STRING}? STR_QUIT_YES :{BLACK}Да STR_QUIT_NO :{BLACK}Нет # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}В главное меню STR_ABANDON_GAME_QUERY :{YELLOW}Вы действительно хотите выйти из игры? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Вы уверены, что хотите выйти из этого сценария? # Cheat window STR_CHEATS :{WHITE}Читы STR_CHEATS_TOOLTIP :{BLACK}Галочки показывают, использовали ли Вы этот чит раньше STR_CHEATS_WARNING :{BLACK}Внимание, вы собираетесь предать своих соперников! Этого вам никогда не простят! STR_CHEAT_MONEY :{LTBLUE}Добавить {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Игра за компанию: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Волшебный динамит (снос ВСЕГО): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Туннели могут пересекаться: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Большие самолёты реже разбиваются в малых аэропортах: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Умеренный ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Субарктический ландшафт STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Субтропический ландшафт STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Игрушечный ландшафт STR_CHEAT_CHANGE_DATE :{LTBLUE}Изменение даты: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Изменить текущий год STR_CHEAT_SETUP_PROD :{LTBLUE}Разрешить изменение производительности: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Новая цветовая схема STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Настройка основной цветовой схемы STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Настройка цветовой схемы поездов STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Настройка цветовой схемы автотранспорта STR_LIVERY_SHIP_TOOLTIP :{BLACK}Настройка цветовой схемы судов STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Настройка цветовой схемы авиатранспорта STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Настройка основного цвета выбранного вида транспорта. Ctrl+щелчок установит выбранный цвет для всех видов транспорта. STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Настройка дополнительного цвета выбранного вида транспорта. Ctrl+щелчок установит выбранный цвет для всех видов транспорта. STR_LIVERY_PANEL_TOOLTIP :{BLACK}Выберите цветовую схему для изменения, либо несколько схем с Ctrl. Щёлкните по флажку для использования выбранной схемы. STR_LIVERY_DEFAULT :Стандарт. окраска STR_LIVERY_STEAM :Паровоз STR_LIVERY_DIESEL :Тепловоз STR_LIVERY_ELECTRIC :Электровоз STR_LIVERY_MONORAIL :Монорельсовый локомотив STR_LIVERY_MAGLEV :Магнитный локомотив STR_LIVERY_DMU :Многосекц. тепловоз STR_LIVERY_EMU :Многосекц. электровоз STR_LIVERY_PASSENGER_WAGON_STEAM :Пассаж. вагон (паровоз) STR_LIVERY_PASSENGER_WAGON_DIESEL :Пассаж. вагон (тепловоз) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пассаж. вагон (электро) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пассаж. вагон (монорельс) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пассаж. вагон (магнит.) STR_LIVERY_FREIGHT_WAGON :Грузовой вагон STR_LIVERY_BUS :Автобус STR_LIVERY_TRUCK :Грузовой автомобиль STR_LIVERY_PASSENGER_SHIP :Пассажирское судно STR_LIVERY_FREIGHT_SHIP :Грузовое судно STR_LIVERY_HELICOPTER :Вертолёт STR_LIVERY_SMALL_PLANE :Малый самолёт STR_LIVERY_LARGE_PLANE :Большой самолёт STR_LIVERY_PASSENGER_TRAM :Пассажирский трамвай STR_LIVERY_FREIGHT_TRAM :Грузовой трамвай # Face selection window STR_FACE_CAPTION :{WHITE}Внешний вид STR_FACE_CANCEL_TOOLTIP :{BLACK}Не менять внешность STR_FACE_OK_TOOLTIP :{BLACK}Применить новую внешность STR_FACE_MALE_BUTTON :{BLACK}Мужское STR_FACE_MALE_TOOLTIP :{BLACK}Выбор мужских лиц STR_FACE_FEMALE_BUTTON :{BLACK}Женское STR_FACE_FEMALE_TOOLTIP :{BLACK}Выбор женских лиц STR_FACE_NEW_FACE_BUTTON :{BLACK}Мне повезёт! STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Создание внешности случайным образом STR_FACE_ADVANCED :{BLACK}Детально STR_FACE_ADVANCED_TOOLTIP :{BLACK}Расширенная настройка внешности STR_FACE_SIMPLE :{BLACK}Просто STR_FACE_SIMPLE_TOOLTIP :{BLACK}Простое создание внешности STR_FACE_LOAD :{BLACK}Загрузить STR_FACE_LOAD_TOOLTIP :{BLACK}Загрузить внешность STR_FACE_LOAD_DONE :{WHITE}Ваша внешность загружена из файла конфигурации. STR_FACE_FACECODE :{BLACK}Числовой код лица STR_FACE_FACECODE_TOOLTIP :{BLACK}Посмотреть или установить код внешности STR_FACE_FACECODE_CAPTION :{WHITE}Числовой код внешнего вида STR_FACE_FACECODE_SET :{WHITE}Числовой код нового лица установлен. STR_FACE_FACECODE_ERR :{WHITE}Невозможно изменить внешность - значение должно быть целым и лежать в диапазоне от 0 до 4 294 967 295 STR_FACE_SAVE :{BLACK}Сохранить STR_FACE_SAVE_TOOLTIP :{BLACK}Сохранить внешность STR_FACE_SAVE_DONE :{WHITE}Внешность сохранена в файле конфигурации. STR_FACE_EUROPEAN :{BLACK}Европ. STR_FACE_SELECT_EUROPEAN :{BLACK}Выбрать европеоидный тип лица STR_FACE_AFRICAN :{BLACK}Африк. STR_FACE_SELECT_AFRICAN :{BLACK}Выбрать африканский тип лица STR_FACE_YES :Да STR_FACE_NO :Нет STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Включить усы или серьги STR_FACE_HAIR :Волосы: STR_FACE_HAIR_TOOLTIP :{BLACK}Изменить волосы STR_FACE_EYEBROWS :Брови: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Изменить брови STR_FACE_EYECOLOUR :Цвет глаз: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Изменить цвет глаз STR_FACE_GLASSES :Очки: STR_FACE_GLASSES_TOOLTIP :{BLACK}Наличие очков STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Изменить очки STR_FACE_NOSE :Нос: STR_FACE_NOSE_TOOLTIP :{BLACK}Изменить нос STR_FACE_LIPS :Губы: STR_FACE_MOUSTACHE :Усы: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Изменить губы или усы STR_FACE_CHIN :Подбородок: STR_FACE_CHIN_TOOLTIP :{BLACK}Изменить подбородок STR_FACE_JACKET :Пиджак: STR_FACE_JACKET_TOOLTIP :{BLACK}Изменить пиджак STR_FACE_COLLAR :Воротник: STR_FACE_COLLAR_TOOLTIP :{BLACK}Изменить воротник STR_FACE_TIE :Галстук: STR_FACE_EARRING :Серьга: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Изменить галстук или серьгу # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Сетевая игра STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Соединение: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Искать серверы в локальной сети или в Интернете STR_NETWORK_SERVER_LIST_LAN :Локальная сеть STR_NETWORK_SERVER_LIST_INTERNET :Интернет STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Имя игрока: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Это имя, которое будет видно другим игрокам STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Название STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Название игры STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Клиенты STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Клиентов сейчас/макс. {}Компаний сейчас/макс. STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Размер карты STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Размер карты игры{}Нажмите для сортировки по площади STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Дата STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Текущая дата STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Года STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Количество лет{}в игре STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Язык, версия сервера и т.п. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Выберите игру из списка STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Последний сервер, к которому вы подключались: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Нажмите для выбора последнего сервера STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ИНФОРМАЦИЯ ОБ ИГРЕ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Клиенты: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Язык: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Ландшафт: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Размер карты: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Версия сервера: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Адрес сервера: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Дата начала: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Текущая дата: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Защищено паролем! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}СЕРВЕР ОТКЛЮЧЕН STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}СЕРВЕР ЗАПОЛНЕН STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}ВЕРСИЯ НЕ ПОДХОДИТ STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}НЕ СОВПАДАЕТ НАБОР NEWGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Присоединиться STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Обновить сервер STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Обновить информацию о сервере STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Обновить STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Обновить список серверов, которые сейчас есть в сети STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Добавить сервер STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Добавить сервер в список, который будет автоматически проверяться на идущие игры STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Запуск сервера STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Запуск сервера на вашем компьютере. К этой игре смогут подсоединяться другие игроки. STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Введите ваше имя STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Введите адрес сервера # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Запуск новой сетевой игры STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Название игры: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Название игры, которое игроки увидят в меню выбора сетевой игры STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Установить пароль STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Защитите вашу игру паролем, если не хотите, чтобы к ней могли подключиться посторонние. STR_NETWORK_START_SERVER_LAN_INTERNET :Локальная сеть / Интернет STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Интернет (поместить в общий список) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клиент{P "" а ов} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. клиентов: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Выбор максимального числа клиентов. Не все места должны быть заняты STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} компани{P я и й} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Макс. компаний: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ограничить максимальное количество компаний на сервере STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} наблюдател{P ь я ей} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Макс. наблюдателей: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ограничить максимальное количество наблюдателей на сервере STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Язык общения: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Другие игроки будут знать, на каком языке общаются на сервере STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Введите название сетевой игры # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Любой STR_NETWORK_LANG_ENGLISH :Английский STR_NETWORK_LANG_GERMAN :Немецкий STR_NETWORK_LANG_FRENCH :Французский STR_NETWORK_LANG_BRAZILIAN :Бразильский STR_NETWORK_LANG_BULGARIAN :Болгарский STR_NETWORK_LANG_CHINESE :Китайский STR_NETWORK_LANG_CZECH :Чешский STR_NETWORK_LANG_DANISH :Датский STR_NETWORK_LANG_DUTCH :Нидерландский STR_NETWORK_LANG_ESPERANTO :Эсперанто STR_NETWORK_LANG_FINNISH :Финский STR_NETWORK_LANG_HUNGARIAN :Венгерский STR_NETWORK_LANG_ICELANDIC :Исландский STR_NETWORK_LANG_ITALIAN :Итальянский STR_NETWORK_LANG_JAPANESE :Японский STR_NETWORK_LANG_KOREAN :Корейский STR_NETWORK_LANG_LITHUANIAN :Литовский STR_NETWORK_LANG_NORWEGIAN :Норвежский STR_NETWORK_LANG_POLISH :Польский STR_NETWORK_LANG_PORTUGUESE :Португальский STR_NETWORK_LANG_ROMANIAN :Румынский STR_NETWORK_LANG_RUSSIAN :Русский STR_NETWORK_LANG_SLOVAK :Словацкий STR_NETWORK_LANG_SLOVENIAN :Словенский STR_NETWORK_LANG_SPANISH :Испанский STR_NETWORK_LANG_SWEDISH :Шведский STR_NETWORK_LANG_TURKISH :Турецкий STR_NETWORK_LANG_UKRAINIAN :Украинский STR_NETWORK_LANG_AFRIKAANS :Африкаанс STR_NETWORK_LANG_CROATIAN :Хорватский STR_NETWORK_LANG_CATALAN :Каталанский STR_NETWORK_LANG_ESTONIAN :Эстонский STR_NETWORK_LANG_GALICIAN :Галисийский STR_NETWORK_LANG_GREEK :Греческий STR_NETWORK_LANG_LATVIAN :Латвийский ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Состояние сетевой игры STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Подготовка соединения: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Список компаний в игре. Вы можете присоединиться к существующей или основать новую, если есть свободный слот STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}ИНФОРМАЦИЯ О КОМПАНИИ STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Название компании: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Основана: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Стоимость компании: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Текущий баланс: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Доход в прошлом году: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Результативность: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Транспорт: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Станции: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Игроки: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Новая компания STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Основать новую компанию STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Наблюдать за игрой STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Следить за игрой в качестве зрителя STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Присоединиться STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Присоединиться к компании и помочь в управлении ею # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Соединение... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Соединение... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Авторизация... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Ожидание... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Загрузка карты... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Обработка... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Регистрация... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Получение информации об игре... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Получение информации о компаниях... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}Готовится присоединиться {NUM} клиент{P "" а ов} STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} загружено STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}Загружено {BYTES} / {BYTES} STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Отключиться STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сервер защищён. Введите пароль. STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компания защищена. Введите пароль. # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Список клиентов STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Наблюдать STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Новая компания # Network client list STR_NETWORK_CLIENTLIST_KICK :Отключить STR_NETWORK_CLIENTLIST_BAN :Бан STR_NETWORK_CLIENTLIST_GIVE_MONEY :Передать деньги STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Сказать всем STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Говорить с компанией STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Личное сообщение STR_NETWORK_SERVER :Сервер STR_NETWORK_CLIENT :Клиент STR_NETWORK_SPECTATORS :Наблюдатели STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Введите сумму денег, которую вы хотите передать # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не сохранять пароль STR_COMPANY_PASSWORD_OK :{BLACK}Задать новый пароль компании STR_COMPANY_PASSWORD_CAPTION :{WHITE}Пароль компании STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Пароль компании по умолчанию STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Использовать этот пароль для всех новых компаний по умолчанию # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Подключиться STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Подключиться и играть за эту компанию STR_COMPANY_VIEW_PASSWORD :{BLACK}Пароль STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Защитить вашу компанию паролем, чтобы посторонние пользователи не могли присоединиться. STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Установить пароль компании # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Отправить STR_NETWORK_CHAT_COMPANY_CAPTION :[Команда] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Лично] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Всем] : STR_NETWORK_CHAT_COMPANY :[Команда] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Команде] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Лично] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Лично] для {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Всем] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Введите текст для сетевого сообщения # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Не найдены сетевые устройства или игра скомпилирована без поддержки сети STR_NETWORK_ERROR_NOSERVER :{WHITE}Не найдены сетевые игры STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Сервер не ответил на запрос STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Невозможно присоединиться из-за несоответствия NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Синхронизация сетевой игры не удалась STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Соединение сетевой игры потеряно STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Не удалось загрузить сохранение STR_NETWORK_ERROR_SERVER_START :{WHITE}Не удалось запустить сервер STR_NETWORK_ERROR_CLIENT_START :{WHITE}Не удалось соединиться STR_NETWORK_ERROR_TIMEOUT :{WHITE}Истекло время ожидания соединения #{NUM} STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Произошла ошибка протокола, и соединение было закрыто STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Версия этого клиента не совместима с версией сервера STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Неверный пароль STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Сервер переполнен STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Вас забанили на этом сервере STR_NETWORK_ERROR_KICKED :{WHITE}Вас выкинули из игры STR_NETWORK_ERROR_CHEATER :{WHITE}Чит-коды не разрешены на этом сервере STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Вы посылали на сервер слишком много команд STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Вы не успели ввести пароль STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ваш компьютер работает слишком медленно и не поспевает за сервером STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Ваш компьютер тратит много времени на загрузку карты STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Ваш компьютер тратит много времени на подключение к серверу ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :общая ошибка STR_NETWORK_ERROR_CLIENT_DESYNC :ошибка синхронизации STR_NETWORK_ERROR_CLIENT_SAVEGAME :не смог загрузить карту STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :соединение потеряно STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :ошибка протокола STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Несоответствие NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :не авторизован STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :получен неверно сформированный пакет STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :версии не совпадают STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :это имя уже используется STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :неверный пароль STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :неправильный параметр company в DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :вас выкинул сервер STR_NETWORK_ERROR_CLIENT_CHEATER :попытался применить чит STR_NETWORK_ERROR_CLIENT_SERVER_FULL :сервер переполнен STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :посылал слишком много команд STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :пароль не получен вовремя STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :время вышло STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :загрузка карты заняла слишком много времени STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :обработка карты заняла слишком много времени ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Подключение утеряно STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}В течение {NUM} секунд{P ы "" ""} не получено никаких данных со стороны сервера # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Игра остановлена ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Игра всё ещё остановлена ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Игра всё ещё остановлена ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Игра всё ещё остановлена ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Игра всё еще в паузе ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Игра продолжена ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :количество игроков STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :подключение клиентов STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :вручную STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :игровой скрипт ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :покинул STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} подключился к игре STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} подключился к игре (клиент #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} подключился к компании #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} подключился наблюдателем STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} основал новую компанию (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} покинул игру ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} изменил имя на {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} передал вашей компании {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Вы передали {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Сервер закрыл сессию STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Сервер перезапускается...{}Пожалуйста, подождите... # Content downloading window STR_CONTENT_TITLE :{WHITE}Загрузка контента STR_CONTENT_TYPE_CAPTION :{BLACK}Тип STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Тип контента STR_CONTENT_NAME_CAPTION :{BLACK}Название STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Наименование контента STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Нажмите на строке для просмотра подробностей{}Отметьте чекбокс для загрузки STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Выбрать всё STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Пометить весь контент для загрузки STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Выбрать обновл. STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Отметить для загрузки обновления для имеющегося контента STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Снять выделение STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Ничего не загружать STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Искать на сторонних сайтах STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Результаты поиска находятся на сторонних сайтах, не имеющих отношения к OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Вы покидаете OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Условия загрузки содержимого со сторонних сайтов могут различаться.{}За инструкциями по установке компонентов OpenTTD вам следует обратиться на соответствующие сайты.{}Вы желаете продолжить? STR_CONTENT_FILTER_TITLE :{BLACK}Фильтр: STR_CONTENT_OPEN_URL :{BLACK}Посетить сайт STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Посетить веб-сайт с информацией об этом модуле STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Скачать STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Начать загрузку выбранного контента STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Всего для загруки: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}ИНФОРМАЦИЯ О КОНТЕНТЕ STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Не выбран для загрузки STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Будет загружен STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Этот модуль зависит от другого и будет загружен STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Уже установлен STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Этот модуль неизвестен и не может быть загружен в OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Это обновление имеющ{G его ей его их}ся {STRING.gen} STR_CONTENT_DETAIL_NAME :{SILVER}Наименование: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Версия: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Описание: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Тип: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Размер: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Выбрано вместе с {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Зависимости: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Теги: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD собрана без поддержки библиотеки «zlib»... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... загрузка контента невозможна! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :{G=m}Базовая графика STR_CONTENT_TYPE_BASE_GRAPHICS.gen :{G=m}набора базовой графики STR_CONTENT_TYPE_BASE_GRAPHICS.acc :{G=m}набор базовой графики STR_CONTENT_TYPE_NEWGRF :{G=m}NewGRF STR_CONTENT_TYPE_NEWGRF.gen :{G=m}NewGRF STR_CONTENT_TYPE_NEWGRF.acc :{G=m}NewGRF STR_CONTENT_TYPE_AI :{G=m}ИИ STR_CONTENT_TYPE_AI.gen :{G=m}ИИ STR_CONTENT_TYPE_AI.acc :{G=m}ИИ STR_CONTENT_TYPE_AI_LIBRARY :{G=f}Библиотека ИИ STR_CONTENT_TYPE_AI_LIBRARY.gen :{G=f}библиотеки ИИ STR_CONTENT_TYPE_AI_LIBRARY.acc :{G=f}библиотеку ИИ STR_CONTENT_TYPE_SCENARIO :{G=m}Сценарий STR_CONTENT_TYPE_SCENARIO.gen :{G=m}сценария STR_CONTENT_TYPE_SCENARIO.acc :{G=m}сценарий STR_CONTENT_TYPE_HEIGHTMAP :{G=f}Карта высот STR_CONTENT_TYPE_HEIGHTMAP.gen :{G=f}карты высот STR_CONTENT_TYPE_HEIGHTMAP.acc :{G=f}карту высот STR_CONTENT_TYPE_BASE_SOUNDS :Основные звуки STR_CONTENT_TYPE_BASE_SOUNDS.gen :{G=m}набора базовых звуков STR_CONTENT_TYPE_BASE_SOUNDS.acc :{G=m}набор базовых звуков STR_CONTENT_TYPE_BASE_MUSIC :{G=f}Музыка STR_CONTENT_TYPE_BASE_MUSIC.gen :{G=f}музыки STR_CONTENT_TYPE_BASE_MUSIC.acc :{G=f}музыку STR_CONTENT_TYPE_GAME_SCRIPT :Игровой скрипт STR_CONTENT_TYPE_GS_LIBRARY :Библиотека ИС # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Загрузка контента... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Запрашиваем файлы... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Сейчас скачивается {STRING} ({NUM} из {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Загрузка завершена STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} из {BYTES} загружено ({NUM}%) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Не удалось соединиться с сервером контента... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Ошибка загрузки... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... соединение утеряно STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... невозможно записать файл STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Не удалось распаковать скачанный файл STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Отсутствует набор графики STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Для запуска OpenTTD требуется набор графики. Скачать и установить его? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Да, скачать STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Нет, выйти # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Настройки прозрачности STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Переключение прозрачности надписей. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Переключение прозрачности деревьев. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Переключение прозрачности городских зданий. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Переключение прозрачности предприятий. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Переключение прозрачности построенных игроками объектов: станций, депо, точек пути и пр. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Переключение прозрачности мостов. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Переключение прозрачности таких сооружений, как маяки и антенны. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Переключение прозрачности контактной сети. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Переключение прозрачности индикаторов загрузки. Ctrl+щелчок - заблокировать. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Сделать объекты не прозрачными, а полностью невидимыми # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Подсветка зоны покрытия STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Выкл STR_STATION_BUILD_COVERAGE_ON :{BLACK}Вкл STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Не показывать зону покрытия STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Показывать зону покрытия STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Принимается: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Отправляется: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Объединить станции STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Построить отдельную станцию STR_JOIN_WAYPOINT_CAPTION :{WHITE}Объединить точки STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Поставить отдельную точку пути # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Неэлектрифицированная ж/д STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Электрифицированная ж/д STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Монорельсовая ж/д STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Магнитная ж/д STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Строительство железной дороги. При нажатом Ctrl - удаление путей. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Строительство ж/д путей в автоматическом режиме. При нажатом Ctrl - удаление путей. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Строительство депо (для приобретения и обслуживания поездов). При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Установка на рельсах точек пути. Нажатие Ctrl позволяет объединять точки. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Строительство ж/д станций. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Установка сигналов. Ctrl переключает семафоры/светофоры.{}Перетаскиваием можно строить сигналы на прямом участке пути. Ctrl строит сигналы до ближайшего пересечения.{}Ctrl+щелчок переключает открытие окна выбора сигналов. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Строительство ж/д мостов. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Строительство ж/д туннелей. При нажатом Shift - оценка стоимости строительства. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Переключение между строительством и удалением ж/д путей, сигналов, станций. При нажатом Ctrl убирает станции с рельсами. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Преобразовать/модернизировать рельсы. При нажатом Shift - оценка стоимости преобразования. STR_RAIL_NAME_RAILROAD :Ж/д STR_RAIL_NAME_RAILROAD.m :Ж/д STR_RAIL_NAME_RAILROAD.n :Ж/д STR_RAIL_NAME_ELRAIL :Электрифиц. ж/д STR_RAIL_NAME_ELRAIL.m :Электрифиц. ж/д STR_RAIL_NAME_ELRAIL.n :Электрифиц. ж/д STR_RAIL_NAME_MONORAIL :Монорельсовый STR_RAIL_NAME_MONORAIL.m :Монорельсовый STR_RAIL_NAME_MONORAIL.n :Монорельсовое STR_RAIL_NAME_MAGLEV :Магнитный STR_RAIL_NAME_MAGLEV.m :Магнитный STR_RAIL_NAME_MAGLEV.n :Магнитное # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Направление депо STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Выбор направления депо # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Точка пути STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Выбор типа точки пути # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Выбор ж/д станции STR_STATION_BUILD_ORIENTATION :{BLACK}Направление STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Выберите направление ж/д станции STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Количество путей STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Укажите количество платформ ж/д станции STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Длина платформы STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Укажите длину ж/д станции STR_STATION_BUILD_DRAG_DROP :{BLACK}Произвольно STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Постройка станции на указанном игроком участке STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Выберите класс станций для отображения STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Выберите тип станции для постройки STR_STATION_CLASS_DFLT :По умолчанию STR_STATION_CLASS_WAYP :Точки пути # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Выбор сигналов STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Стандартный семафор{}Не позволяет нескольким поездам одновременно находиться на одном блок-участке. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Входной семафор{}Открыт, если хотя бы один из выходных сигналов на следующей секции путей открыт. В остальных случаях закрыт. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Выходной семафор{}Работает как обычный семафор, но его состояние учитывается при работе входных и комбинированных сигналов. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Комбинированный семафор{}Работает одновременно как входной и выходной семафор. Это позволяет построить большую разветвлённую сеть. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Маршрутный семафор{}Позволяет нескольким поездам находиться в одном сигнальном блоке, если каждый из них может зарезервировать безопасный путь. Допускает следование поездов в обе стороны. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Односторонний маршрутн. семафор{}Позволяет нескольким поездам находиться в одном сигнальном блоке, если каждый из них может зарезервировать безопасный путь. Не допускает следования поездов в обратную сторону. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Стандартный светофор{}Не позволяет нескольким поездам одновременно находиться на одном блок-участке. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Входной светофор{}Открыт, если хотя бы один из выходных сигналов на следующей секции путей открыт. В остальных случаях закрыт. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Выходной светофор{}Работает как обычный светофор, но его состояние учитывается при работе входных и комбинированных сигналов. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Комбинированный светофор{}Работает одновременно как входной и выходной светофор. Это позволяет построить большую разветвлённую сеть. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Маршрутный светофор{}Позволяет нескольким поездам находиться в одном сигнальном блоке, если каждый из них может зарезервировать безопасный путь. Допускает следование поездов в обе стороны. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Односторонний маршрутн. светофор{}Позволяет нескольким поездам находиться в одном сигнальном блоке, если каждый из них может зарезервировать безопасный путь. Не допускает следования поездов в обратную сторону. STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Изменение типа сигнала{}Когда кнопка нажата, щёлкните для преобразования существующего сигнала в сигнал выбранного типа и варианта, или щёлкните с нажатым Ctrl для перебора существующих вариантов. Shift+щелчок - оценка стоимости преобразования. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Плотность расстановки сигналов при протягивании. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Уменьшить плотность сигналов при протягивании STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Увеличить плотность сигналов при протягивании # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Выберите железнодорожный мост STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Выберите тип моста STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Выбор моста - щёлкните по изображению моста, который вы хотите построить STR_SELECT_BRIDGE_INFO :{GOLD}{STRING}{}{VELOCITY}; {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Висячий стальной STR_BRIDGE_NAME_GIRDER_STEEL :Балочный стальной STR_BRIDGE_NAME_CANTILEVER_STEEL :Консольный стальной STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Висячий бетонный STR_BRIDGE_NAME_WOODEN :Деревянный STR_BRIDGE_NAME_CONCRETE :Бетонный STR_BRIDGE_NAME_TUBULAR_STEEL :Трубчатый стальной STR_BRIDGE_TUBULAR_SILICON :Трубчатый кремниевый # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Автомобильные коммуникации STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Трамвайные коммуникации STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Строительство автомобильных дорог. При нажатом Ctrl - удаление дороги. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Строительство трамвайных путей. При нажатом Ctrl - удаление путей. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Строительство автодорог в автоматическом режиме. При нажатом Ctrl - удаление дороги. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Строительство трамвайных путей в автоматическом режиме. При нажатом Ctrl - удаление путей. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Строительство гаражей (для приобретения и обслуживания автомобилей). При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Строительство трамвайных депо (для приобретения и обслуживания трамваев). При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Строительство автобусных остановок. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Строительство трамвайных остановок. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Строительство грузовых терминалов. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Строительство грузовых трамвайных станций. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Включить/отключить односторонние дороги STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Строительство автомобильных мостов. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Строительство трамвайных мостов. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Строительство автомобильных туннелей. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Строительство трамвайных туннелей. При нажатом Shift - оценка стоимости строительства. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Строительство/удаление автомобильных дорог и станций STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Строительство/удаление трамвайных путей и станций # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Направление гаража STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Выбор ориентации гаража STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Ориентация трамвайного депо STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Выбор ориентации трамвайного депо # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Направление остановки STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Выберите направление автобусной остановки STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ориентация терминала STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Выберите направление грузового терминала STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Направление пассажирской трамвайной остановки STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Выберите направление пассажирской трамвайной остановки STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Направление грузовой трамвайной остановки STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Выберите направление грузовой трамвайной остановки # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Судоходные коммуникации STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Водные пути STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Строительство каналов. При нажатом Shift - оценка стоимости строительства. STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Строительство шлюзов. При нажатом Shift - оценка стоимости строительства. STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Строительство доков (для приобретения и обслуживания кораблей). При нажатом Shift - оценка стоимости строительства. STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Строительство пристаней. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Буи помогают в навигации на больших расстояниях; используйте их как маршрутные точки. При нажатом Shift - оценка стоимости строительства. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Строительство акведуков. При нажатом Shift - оценка стоимости строительства. STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Создать канал.{}При зажатом Ctrl клетка на уровне моря наполняется водой. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Разместить реки. # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Направление дока STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Выберите направление дока # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Пристань # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Аэропорты STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Строительство аэропортов. Нажатие Ctrl позволяет объединять станции. При нажатом Shift - оценка стоимости строительства. # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Выбор аэропорта STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Выберите размер/тип аэропорта STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Тип аэропорта STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Зона {NUM} STR_AIRPORT_SMALL :Малый STR_AIRPORT_CITY :Городской STR_AIRPORT_METRO :Федеральный STR_AIRPORT_INTERNATIONAL :Международный STR_AIRPORT_COMMUTER :Пригородный STR_AIRPORT_INTERCONTINENTAL :Межконтинентальный STR_AIRPORT_HELIPORT :Вертолётная площадка STR_AIRPORT_HELIDEPOT :Вертолётное депо STR_AIRPORT_HELISTATION :Вертолётная станция STR_AIRPORT_CLASS_SMALL :Малые аэропорты STR_AIRPORT_CLASS_SMALL.nom :Малый STR_AIRPORT_CLASS_LARGE :Средние аэропорты STR_AIRPORT_CLASS_LARGE.nom :Средний STR_AIRPORT_CLASS_HUB :Большие аэропорты STR_AIRPORT_CLASS_HUB.nom :Большой STR_AIRPORT_CLASS_HELIPORTS :Вертолётные площадки STR_AIRPORT_CLASS_HELIPORTS.nom :Вертолётный STR_STATION_BUILD_NOISE :{BLACK}Производимый шум: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Ландшафт STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Опустить угол земли. Перетаскивание опускает первый выбранный угол и выравнивает выбранную область до новой высоты угла. Ctrl выбирает область по диагонали. При нажатом Shift - оценка стоимости строительства. STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Поднять угол земли. Перетаскивание поднимает первый выбранный угол и выравнивает выбранную область до новой высоты угла. Ctrl выбирает область по диагонали. При нажатом Shift - оценка стоимости строительства. STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Выровнять землю до высоты первого выбранного угла. Ctrl выбирает область по диагонали. При нажатом Shift - оценка стоимости выравнивания. STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Покупка земли. При нажатом Shift - оценка стоимости покупки. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Выбор объекта STR_OBJECT_BUILD_TOOLTIP :{BLACK}Выберите создаваемый объект. При нажатом Shift - оценка стоимости постройки. STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Выберите класс объекта для строительства STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Предварительный просмотр объекта STR_OBJECT_BUILD_SIZE :{BLACK}Размер: {GOLD}{NUM} x {NUM} клеток STR_OBJECT_CLASS_LTHS :Маяки STR_OBJECT_CLASS_TRNS :Передатчики # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Деревья STR_PLANT_TREE_TOOLTIP :{BLACK}Выберите тип деревьев для посадки. Если на участке уже есть деревья, будут добавлены несколько деревьев различного типа, независимо от выбранного. STR_TREES_RANDOM_TYPE :{BLACK}Деревья случайного типа STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Высадка деревьев случайного типа. При нажатом Shift - оценка стоимости высадки. STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Расставить по карте STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Разместить деревья на местности случайным образом # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Генератор карты STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Разместить скалы на карте STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Задать площадь пустыни.{}Нажмите и держите CTRL для удаления STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Увеличить площадь изменения рельефа STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Уменьшить площадь изменения рельефа STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Создать случайную карту STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Создать новый сценарий STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Сбросить карту STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Удалить с карты всё имущество, принадлежащее игрокам STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Сбросить карту STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Вы уверены, что хотите удалить все имущество игроков? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Создание городов STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Новый город STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Построить новый город. Shift+щелчок - оценка стоимости основания. STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Случайный город STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Создать город в случайном месте STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Много случайных городов STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Случайно разместить на карте города STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Название города: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Введите название города STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Щёлкните, чтобы переименовать город STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Случайное название STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Выбрать случайное название STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Размер города: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Малый STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Средний STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Большой STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Случайно STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Выбор размера города STR_FOUND_TOWN_CITY :{BLACK}Мегаполис STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Большие города растут быстрее, чем маленькие.{}В зависимости от настроек, они при создании имеют больший размер. STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Сеть городских дорог: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Тип сети городских дорог STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Стандартная STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Улучшенная STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Решётка 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Решётка 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Случайная # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Создать новое предприятие STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Выберите тип производства из списка STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Много предприятий STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Случайно разместить предприятия на карте STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Цена: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Разведать STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Построить STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Профинансировать # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Цепочка грузоперевозок для {STRING.gen} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Цепочка грузоперевозок для {STRING.gen} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Производители STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Потребители STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Городские здания STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Щелчок по предприятию покажет его поставщиков и потребителей STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Щелчок по типу груза покажет его производителей и потребителей STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Показать цепочку STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Показать производителей сырья и потребителей продукции этого предприятия STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Показать на карте STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Показать на карте выбранные предприятия STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Выберите груз STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Выберите груз для отображения STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Выберите предприятие STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Выберите предприятие для отображения # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Информация о территории STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Стоимость очистки: {LTBLUE}(недоступна) STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Стоимость очистки: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Выручка от продажи: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :отсутствует STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Владелец: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Владелец дороги: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Владелец трамвая: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Владелец ж/д пути: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Администрация: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Нет STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Координаты: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Построено: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Класс станции: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станции: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Класс аэропорта: {LTBLUE}{STRING.nom} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Тип аэропорта: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Зона аэропорта: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Принимает: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Макс. скорость ж/д: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Камни STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Неровность STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Пустырь STR_LAI_CLEAR_DESCRIPTION_GRASS :Трава STR_LAI_CLEAR_DESCRIPTION_FIELDS :Поля STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Заснеженная земля STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустыня STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} путь STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} путь с сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} путь с входными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} путь с выходными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} путь с комбинированными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} путь с маршрутными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} путь с односторонними маршрутными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} путь с обычными и входными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} путь с обычными и выходными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} путь с обычными и комбиниров. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} путь с обычными и маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} путь с обычными и одностор. маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} путь с входными и выходными сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} путь с входными и комбинир. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} путь с входными и маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} путь с входными и одностор. маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} путь с выходными и комбиниров. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} путь с выходными и маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} путь с выходными и односторонн. маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} путь с комбинир. и маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} путь с комбинир. и односторонн. маршрутн. сигналами STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} путь с маршрутным и одностор. маршрутным сигналами STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING.n} депо STR_LAI_ROAD_DESCRIPTION_ROAD :Дорога STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Дорога с уличным освещением STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Дорога с озеленением STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Гараж STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Железнодорожный переезд STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Трамвайные пути # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (на реконструкции) STR_LAI_TREE_NAME_TREES :Деревья STR_LAI_TREE_NAME_RAINFOREST :Джунгли STR_LAI_TREE_NAME_CACTUS_PLANTS :Кактусы STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Ж/д станция STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Ангар STR_LAI_STATION_DESCRIPTION_AIRPORT :Аэропорт STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Грузовой терминал STR_LAI_STATION_DESCRIPTION_BUS_STATION :Автобусная остановка STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Пристань STR_LAI_STATION_DESCRIPTION_BUOY :Буй STR_LAI_STATION_DESCRIPTION_WAYPOINT :Точка пути STR_LAI_WATER_DESCRIPTION_WATER :Вода STR_LAI_WATER_DESCRIPTION_CANAL :Канал STR_LAI_WATER_DESCRIPTION_LOCK :Шлюз STR_LAI_WATER_DESCRIPTION_RIVER :Река STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Морской или речной берег STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Верфь # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Железнодорожный туннель STR_LAI_TUNNEL_DESCRIPTION_ROAD :Автомобильный туннель STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Стальной висячий ж/д мост STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Стальной балочный ж/д мост STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Стальной консольный ж/д мост STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Железобетонный висячий ж/д мост STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Деревянный ж/д мост STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Бетонный ж/д мост STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Трубчатый ж/д мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Стальной висячий автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Стальной балочный автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Стальной консольный автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Железобетонный висячий автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Деревянный автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Бетонный автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Трубчатый автомобильный мост STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Акведук STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Передатчик STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Маяк STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Штаб-квартира компании STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земля в собственности компании # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Об OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинальные авторские права {COPYRIGHT} 1995 Chris Sawyer. Все права защищены. STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Команда разработчиков OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру STR_SAVELOAD_LOAD_CAPTION :{WHITE}Загрузить игру STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Сохранить сценарий STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Загрузить сценарий STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Загрузить карту STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Сохранить карту высот STR_SAVELOAD_HOME_BUTTON :{BLACK}Щёлкните, чтобы перейти к текущей папке загрузки/сохранения по умолчанию STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} свободно STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Список дисков, папок и сохранённых игр STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Выбранное название для сохранения игры STR_SAVELOAD_DELETE_BUTTON :{BLACK}Удалить STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Удалить выбранную сохранённую игру STR_SAVELOAD_SAVE_BUTTON :{BLACK}Сохранить STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Сохранить игру под выбранным именем STR_SAVELOAD_LOAD_BUTTON :{BLACK}Загрузить STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Загрузить выбранную игру STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Информация об игре STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Нет информации. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Введите название сохраняемой игры # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Создание мира STR_MAPGEN_MAPSIZE :{BLACK}Размер карты: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Выберите размер карты в клетках. Размер поля, доступного игрокам, будет немного меньше. STR_MAPGEN_BY :{BLACK}× STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Количество городов: STR_MAPGEN_DATE :{BLACK}Дата: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Кол-во предпр.: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Снеговая линия: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Поднять снеговую линию STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Опустить снеговую линию STR_MAPGEN_RANDOM_SEED :{BLACK}Начальное число: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Ландшафт генерируется псевдослучайно, число - опорная точка в последовательности случайных чисел. STR_MAPGEN_RANDOM :{BLACK}Случайное STR_MAPGEN_RANDOM_HELP :{BLACK}Изменить случайный номер, используемый генератором ландшафта STR_MAPGEN_LAND_GENERATOR :{BLACK}Генератор ландшафта: STR_MAPGEN_TREE_PLACER :{BLACK}Генератор лесов: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип ландшафта: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Количество морей и озёр: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Количество рек: STR_MAPGEN_SMOOTHNESS :{BLACK}Гладкость: STR_MAPGEN_VARIETY :{BLACK}Разнообразие ландшафта: STR_MAPGEN_GENERATE :{WHITE}Создать # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Края карты: STR_MAPGEN_NORTHWEST :{BLACK}Северо-запад STR_MAPGEN_NORTHEAST :{BLACK}Северо-восток STR_MAPGEN_SOUTHEAST :{BLACK}Юго-восток STR_MAPGEN_SOUTHWEST :{BLACK}Юго-запад STR_MAPGEN_BORDER_FREEFORM :{BLACK}Свободный STR_MAPGEN_BORDER_WATER :{BLACK}Водный STR_MAPGEN_BORDER_RANDOM :{BLACK}Случайно STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Случайно STR_MAPGEN_BORDER_MANUAL :{BLACK}Вручную STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Поворот карты: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Название карты: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Размер: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Введите случайное число STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Изменить высоту снеговой линии STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Изменить год начала игры # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Тип сценария STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Плоский рельеф STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Создать ровную землю STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Случайный рельеф STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Высота над уровнем моря: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Поднять уровень ровной земли на 1 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Опустить уровень ровной земли на 1 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Изменить высоту ровной земли # Map generation progress STR_GENERATION_WORLD :{WHITE}Создание мира... STR_GENERATION_ABORT :{BLACK}Прервать STR_GENERATION_ABORT_CAPTION :{WHITE}Прервать создание игрового мира STR_GENERATION_ABORT_MESSAGE :{YELLOW}Вы серьезно хотите прервать создание мира? STR_GENERATION_PROGRESS :{WHITE}{NUM}% готово STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Создание мира STR_GENERATION_RIVER_GENERATION :{BLACK}Создание рек STR_GENERATION_TREE_GENERATION :{BLACK}Высадка лесов STR_GENERATION_OBJECT_GENERATION :{BLACK}Создание объектов STR_GENERATION_CLEARING_TILES :{BLACK}Расстановка декораций и камней STR_GENERATION_SETTINGUP_GAME :{BLACK}Настройка STR_GENERATION_PREPARING_TILELOOP :{BLACK}Подготовка к запуску... STR_GENERATION_PREPARING_SCRIPT :{BLACK}Выполняется скрипт STR_GENERATION_PREPARING_GAME :{BLACK}Подготовка игры # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Настройки NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Информация о модуле NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Активные файлы NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Неактивные файлы NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Набор файлов: STR_NEWGRF_FILTER_TITLE :{ORANGE}Фильтр: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Загрузить выбранный набор STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Сохранить набор STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Сохранить этот список как набор STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Название набора STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Удалить набор STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Удалить выбранный набор STR_NEWGRF_SETTINGS_ADD :{BLACK}Добавить STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Добавить выбранный файл NewGRF в ваш список STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Обновить STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Обновить список доступных файлов NewGRF STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Удалить STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Удалить выбранный файл NewGRF из списка STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Вверх STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Переместить выбранный файл NewGRF выше по списку STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Вниз STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Переместить выбранный файл NewGRF ниже по списку STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Список используемых файлов NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Параметры STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Показать параметры STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Переключить палитру STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Переключить палитру для выбраного NewGRF файла.{}Используйте переключение, если графика отрисовывается розовым цветом. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Применить изменения STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Найти отсутствующие файлы в сети STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Попытаться найти отсутствующие файлы в сети STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Имя файла: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Версия: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Совместимо с версией не ниже: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Палитра: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Параметры: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Нет доступной информации STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Файл не найден STR_NEWGRF_SETTINGS_DISABLED :{RED}Отключено STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Несовместимо с данной версией OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Изменить параметры NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Закрыть STR_NEWGRF_PARAMETERS_RESET :{BLACK}Сброс STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Сбросить значения всех параметров STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Параметр {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Количество параметров: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Просмотр - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Родитель STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Просмотр объекта в контексте родителя STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} в {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Объект STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Тип рельсов STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Параметр переменной NewGRF 60+x (шестнадцатеричный) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Выравнивание спрайта {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Следующий спрайт STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Перейти к следующему нормальному спрайту, пропуская псевдоспрайты, а также изм.{NBSP}цвета/шрифтовые. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Перейти к спрайту STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Перейти к заданному спрайту. Если спрайт не нормальный, переход пройзойдет к следующему нормальному. STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Предыдущий спрайт STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перейти к предыдущему нормальному спрайту, пропуская псевдоспрайты, а также изм.{NBSP}цвета/шрифтовые. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Представление выбранного спрайта. Выравнивание не учитывается при прорисовке этого спрайта. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Двигайте спрайт, изменяя смещение по X и по Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Смещение по X: {NUM}, Смещение по Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Выбрать спрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Выберите любой спрайт на экране STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Перейти к спрайту # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Внимание: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Ошибка: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Критическая ошибка: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ошибка при работе с NewGRF:{}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} не будет работать с версией TTDPatch, сообщенной OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Файл {1:STRING} требует {STRING}-версию TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} сделан для использования совместно с {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Неверный параметр {1:STRING}: параметр {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} должен быть загружен перед {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} должен быть загружен после {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} требует OpenTTD версии {STRING} или выше. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :файл GRF, который им переводится. STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Загружено слишком много модулей NewGRF STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Загрузка {1:STRING} в качестве статического NewGRF с {STRING} может вызвать рассинхронизацию. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Неверный спрайт (спрайт {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Неизвестное свойство у «Action 0» {4:HEX} (спрайт {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Попытка использования недопустимого идентификатора (спрайт {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} содержит повреждённый спрайт. Все повреждённые спрайты будут показаны красным знаком вопроса (?). STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Содержит несколько блоков «Action 8» (спрайт {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Чтение за концом псевдо-спрайта (спрайт {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}В текущем наборе базовой графики отсутствуют изображения некоторых объектов.{}Пожалуйста, обновите модуль базовой графики. STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}В используемом наборе базовой графики отсутствуют некоторые изображения.{}Пожалуйста, обновите набор изображений.{}Так как у вас {YELLOW}тестовая версия OpenTTD{WHITE}, вам может понадобиться {YELLOW}тестовая версия графического набора{WHITE}. STR_NEWGRF_ERROR_GRM_FAILED :Запрошенные ресурсы GRF недоступны (спрайт {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} был отключён из-за {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недопустимый/неизвестный формат расположения спрайтов (спрайт {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Осторожно! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Вы модифицируете запущенную игру - это может закрыть OpenTTD или привести к нестабильной работе. Не присылайте отчёты с ошибками в этом случае.{}Вы действительно хотите это сделать? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Невозможно добавить файл: дублируются GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Соответствующий файл не найден (загружен совместимый GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Не удалось добавить файл: слишком много модулей NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Вместо отсутствующих загружены совместимые файлы NewGRF STR_NEWGRF_DISABLED_WARNING :{WHITE}Отсутствующие файлы NewGRF были отключены STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Недостающие GRF файлы STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Снятие с паузы может привести к ошибке OpenTTD.{}Вы хотите запустить игру? # NewGRF status STR_NEWGRF_LIST_NONE :Нет STR_NEWGRF_LIST_ALL_FOUND :Все файлы доступны STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Найдены совместимые файлы STR_NEWGRF_LIST_MISSING :{RED}Файлы отсутствуют # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Файл NewGRF «{0:STRING}» может привести к потере синхронизации и вылету игры. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Меняется состояние локомотива «{1:ENGINE}», находящегося вне депо STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Меняется длина транспорта «{1:ENGINE}», находящегося вне депо STR_BROKEN_VEHICLE_LENGTH :{WHITE}Поезд «{VEHICLE}», принадлежащий «{COMPANY}», имеет неправильную длину. Вероятно, это вызвано проблемами в файле новой графики (NewGRF). Игра может рассинхронизироваться или вылететь. STR_NEWGRF_BUGGY :{WHITE}NewGRF «{0:STRING}» предоставляет неверную информацию. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Информация о вместимости/переоборудовании для локомотива «{1:ENGINE}» после постройки отличается от сведений в списке покупки, что может помешать функции автообновления/автозамены корректно произвести переоборудование. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Модуль «{1:STRING}» вызвал бесконечный цикл STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Функция обратного вызова {1:HEX} вернула непонятный/неверный результат {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<неизвестный груз> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <неизвестного груза> STR_NEWGRF_INVALID_ENGINE :<неправильная модель> STR_NEWGRF_INVALID_INDUSTRYTYPE :<неизвестное предприятие> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE :<недопустимое ТС> # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Сканирование NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Идёт сканирование NewGRF. Это займёт некоторое время... STR_NEWGRF_SCAN_STATUS :{BLACK}Просканирован{P 0 "" о о} {NUM} из {NUM} модул{P я ей ей} NewGRF STR_NEWGRF_SCAN_ARCHIVES :Поиск архивов # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Список табличек - {COMMA} таблич{P ка ки ек} STR_SIGN_LIST_MATCH_CASE :{BLACK}Регистр STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Переключить проверку регистра при сравнении названий табличек с фильтром # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Изменить текст таблички STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}К следующей табличке STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}К предыдущей табличке STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введите название таблички # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Города STR_TOWN_DIRECTORY_NONE :{ORANGE}- Нет - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Список городов - щелчок по названию показывает город в основном окне. Ctrl+щелчок показывает в дополнительном окне. STR_TOWN_POPULATION :{BLACK}Население: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Мегаполис) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Население: {ORANGE}{COMMA}{BLACK} Зданий: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пассажиров за прошлый месяц: {ORANGE}{COMMA}{BLACK} макс.: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Почты за прошлый месяц: {ORANGE}{COMMA}{BLACK} макс.: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Груз, необходимый для роста города: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} требу{G 0 е е е ю}тся STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} требу{G 0 е е е ю}тся зимой STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} доставлено STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (недостаточно) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (достаточно) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Город растёт раз в {ORANGE}{COMMA}{BLACK} д{P ень ня ней} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Город растёт раз в {ORANGE}{COMMA}{BLACK} д{P ень ня ней} (профинансировано) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Город {RED}не{BLACK} развивается STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Уровень шума в городе: {ORANGE}{COMMA}{BLACK} макс: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Показать город в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Местные власти STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Информация о местных властях STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Переименовать город STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Расширить STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Увеличить размер города STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Уничтожить STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Полностью уничтожить этот город STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Переименовать город # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Администрация г.{NBSP}{TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Рейтинг транспортных компаний STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Доступные действия: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Список возможных действий в этом городе - щёлкните для получения доп. сведений STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Применить STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Выполнить выделенное действие в списке выше STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Малая рекламная кампания STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Средняя рекламная кампания STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Большая рекламная кампания STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Профинансировать ремонт городских дорог STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Установить статую владельца компании STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Профинансировать строительство новых зданий STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Купить эксклюзивные транспортные права STR_LOCAL_AUTHORITY_ACTION_BRIBE :Взятка местной администрации STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Провести малую рекламную кампанию для увеличения грузо- и пассажиропотока на ваших станциях.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Провести среднюю рекламную кампанию для увеличения грузо- и пассажиропотока на ваших станциях.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Провести большую рекламную кампанию для увеличения грузо- и пассажиропотока на ваших станциях.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Профинансировать реконструкцию городских дорог. Вызывает большие нарушения движения на срок до 6 месяцев.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Установить статую в честь вашей компании.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Профинансировать строительство новых коммерческих зданий в городе.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Купить годовые эксклюзивные права на транспортные перевозки в городе. Администрация разрешит пользоваться ТОЛЬКО вашими станциями.{}Цена: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Дать взятку городской администрации для повышения рейтинга. Существует риск санкций, если факт взятки раскроется.{}Цена: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Задачи STR_GOALS_GLOBAL_TITLE :{BLACK}Общие задачи: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Нет - STR_GOALS_COMPANY_TITLE :{BLACK}Задачи компании: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Щёлкните по задаче, чтобы показать предприятие/город/клетку. Ctrl+щелчок показывает в новом окне. # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Вопрос STR_GOAL_QUESTION_CAPTION_INFORMATION :Информация STR_GOAL_QUESTION_CAPTION_WARNING :Предупреждение STR_GOAL_QUESTION_CAPTION_ERROR :Ошибка ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Отменить STR_GOAL_QUESTION_BUTTON_OK :Ok STR_GOAL_QUESTION_BUTTON_NO :Нет STR_GOAL_QUESTION_BUTTON_YES :Да STR_GOAL_QUESTION_BUTTON_DECLINE :Отклонить STR_GOAL_QUESTION_BUTTON_ACCEPT :Принять STR_GOAL_QUESTION_BUTTON_IGNORE :Пропустить STR_GOAL_QUESTION_BUTTON_RETRY :Повторить STR_GOAL_QUESTION_BUTTON_PREVIOUS :Назад STR_GOAL_QUESTION_BUTTON_NEXT :Далее STR_GOAL_QUESTION_BUTTON_STOP :Стоп STR_GOAL_QUESTION_BUTTON_START :Пуск STR_GOAL_QUESTION_BUTTON_GO :Начать STR_GOAL_QUESTION_BUTTON_CONTINUE :Продолжить STR_GOAL_QUESTION_BUTTON_RESTART :Перезапустить STR_GOAL_QUESTION_BUTTON_POSTPONE :Отсрочить STR_GOAL_QUESTION_BUTTON_SURRENDER :Сдаться STR_GOAL_QUESTION_BUTTON_CLOSE :Закрыть # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Субсидии STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Предлагаемые субсидии: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} по маршруту из {STRING} в {STRING}{YELLOW} (по {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Нет - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Субсидируемые маршруты: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} по маршруту из {STRING} в {STRING}{YELLOW} ({COMPANY}{YELLOW}, до {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Нажмите на маршрут для отображения предприятия/города. Ctrl+щелчок показывает в дополнительном окне. # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Список станций - щелчок по названию показывает станцию в основном окне. Ctrl+щелчок показывает в дополнительном окне. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Нажмите и удерживайте Ctrl для выбора более одного варианта STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} станци{P я и й} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Нет - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Показать все станции STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Выбрать все типы грузов STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}На станции нет грузов, ожидающих погрузки # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ожидает: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} транзитом из {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Принимает STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Показать список принимаемых грузов STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Принимается: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Компания-владелец этой станции обладает эксклюзивными правами перевозки пассажиров и грузов в этом городе. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} приобрела эксклюзивные права на перевозку пассажиров и грузов в этом городе. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показать рейтинг станции STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Местный рейтинг транспортной компании: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Ужасный STR_CARGO_RATING_VERY_POOR :Очень плохой STR_CARGO_RATING_POOR :Плохой STR_CARGO_RATING_MEDIOCRE :Посредственный STR_CARGO_RATING_GOOD :Хороший STR_CARGO_RATING_VERY_GOOD :Очень хороший STR_CARGO_RATING_EXCELLENT :Отличный STR_CARGO_RATING_OUTSTANDING :Великолепный ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Показать станцию в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Переименовать станцию STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Показать список поездов, маршрут которых проходит через эту станцию STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Показать список автомобилей, маршрут которых проходит через эту станцию/остановку STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Показать список воздушных судов, маршрут которых проходит через этот аэропорт STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Показать список кораблей, маршрут которых проходит через эту пристань STR_STATION_VIEW_RENAME_STATION_CAPTION :Название станции STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Закрыть аэропорт STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Запретить воздушным судам садиться в этом аэропорту # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Показать точку пути в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Переименовать точку пути STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Показать буй в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Изменить название буя STR_EDIT_WAYPOINT_NAME :{WHITE}Название точки пути # Finances window STR_FINANCES_CAPTION :{WHITE}Финансы - {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Расход/доход STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Строительство STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Новая техника STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Обслуж. поездов STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Обслуж. автомобилей STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Обслуж. авиации STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Обслуж. кораблей STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Обслуж. собственности STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Доход от поездов STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Доход от автомобилей STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Доход от авиации STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Доход от кораблей STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Проценты по займу STR_FINANCES_SECTION_OTHER :{GOLD}Прочие расходы STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}ИТОГО: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Баланс: STR_FINANCES_LOAN_TITLE :{WHITE}Заём STR_FINANCES_MAX_LOAN :{WHITE}Максимальный заём: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Занять {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Взять деньги взаймы. Ctrl+щелчок - увеличить заём до максимума. STR_FINANCES_REPAY_BUTTON :{BLACK}Отдать {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Вернуть часть займа. Ctrl+щелчок - вернуть всё, по возможности. STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Инфраструктура # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Директор) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}В должности с {WHITE}{NUM} года STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Цвет: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Транспорт: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} поезд{P "" а ов} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} автомобил{P ь я ей} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} воздушн{P ое ых ых} суд{P но на ов} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} корабл{P ь я ей} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}нет STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Стоимость компании: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% владеет {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Инфраструктура: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} ж/д участ{P ок ка ков} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} дорожны{P й х х} участ{P ок ка ков} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} водны{P й х х} участ{P ок ка ков} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} участ{P ок ка ков} занято станциями STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} аэропорт{P "" а ов} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Нет STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Построить штаб STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Построить штаб-квартиру компании STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Осмотреть штаб STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Осмотреть штаб-квартиру компании STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Переместить STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Переместить штаб-квартиру компании в другое место за 1% оценочной стоимости капитала компании. Shift+щелчок - оценка стоимости переноса. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Подробности STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Посмотреть подробный состав инфраструктуры STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Внешность STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Изменить внешность директора STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Цвет STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Изменить цвет транспортных средств компании STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Название STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Изменить название компании STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Директор STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Изменить имя директора STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Купить 25% акций компании STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Продать 25% акций компании STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Купить 25% акций этой компании. Shift+щелчок - оценка стоимости акций. STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Продать 25% акций этой компании. Shift+щелчок - оценка стоимости акций. STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Компания STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Имя директора STR_BUY_COMPANY_MESSAGE :{WHITE}Мы ищем транспортную компанию для присоединения к ней.{}{}Вы хотите купить {COMPANY} за {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Инфраструктура «{COMPANY}» STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Ж/д участки: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Сигналы STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Дорожные участки: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Автодороги STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Трамвайные пути STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Водные участки: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Каналы STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Станции: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Площадь станций STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Аэропорты STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/год ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/год # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Предприятия STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Нет - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% перевезено) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% перевезено) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Список предприятий - щелчок по названию показывает предприятие в основном окне. Ctrl+щелчок показывает в дополнительном окне. # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Произведено за прошлый месяц: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% перевезено) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Показать предприятие в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Производительность: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Требуется: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Требуется: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Требуется: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Груз, ожидающий переработки: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Изменить производительность (кратно 8, до 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Изменить производительность (в процентах, до 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} поезд{P "" а ов} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} автомобил{P ь я ей} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} корабл{P ь я ей} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} воздушн{P ое ых ых} суд{P но на ов} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Поезда - щёлкните для получения информации STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Автомобили - щёлкните для получения информации STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Корабли - щёлкните для получения информации STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Авиатранспорт - щёлкните для получения информации STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Прибыль в этом году: {CURRENCY_LONG} (в прошлом году: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Доступные поезда STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Доступные автомобили STR_VEHICLE_LIST_AVAILABLE_SHIPS :Доступные суда STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Доступные самолёты STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Список доступных двигателей для выбранного вида транспорта STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Организация STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Управление транспортом, находящимся в этом списке STR_VEHICLE_LIST_REPLACE_VEHICLES :Замена транспорта STR_VEHICLE_LIST_SEND_FOR_SERVICING :Отправить на техобслуживание STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Отправить в депо STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Отправить в гараж STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Отправить в док STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Отправить в ангар STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Нажмите для остановки всего транспорта в списке STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Нажмите для запуска всего транспорта в списке STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Общий маршрут для {COMMA} ед. транспорта # Group window STR_GROUP_ALL_TRAINS :Все поезда STR_GROUP_ALL_ROAD_VEHICLES :Весь автотранспорт STR_GROUP_ALL_SHIPS :Все корабли STR_GROUP_ALL_AIRCRAFTS :Все самолёты STR_GROUP_DEFAULT_TRAINS :Без группы STR_GROUP_DEFAULT_ROAD_VEHICLES :Без группы STR_GROUP_DEFAULT_SHIPS :Без группы STR_GROUP_DEFAULT_AIRCRAFTS :Без группы STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Щёлкните по имени группы для отображения списка транспорта STR_GROUP_CREATE_TOOLTIP :{BLACK}Создать группу STR_GROUP_DELETE_TOOLTIP :{BLACK}Удалить выбранную группу STR_GROUP_RENAME_TOOLTIP :{BLACK}Переименовать выбранную группу STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Защита транспорта в группе от глобальной автозамены STR_GROUP_ADD_SHARED_VEHICLE :Добавить транспорт с общим маршрутом STR_GROUP_REMOVE_ALL_VEHICLES :Удалить все STR_GROUP_RENAME_CAPTION :{BLACK}Название группы # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Новый поезд STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Новый электропоезд STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Новый монорельсовый поезд STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Новый магниторельсовый поезд STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Новый поезд STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Новый автомобиль STR_BUY_VEHICLE_SHIP_CAPTION :Новый корабль STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Новый авиатранспорт STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Цена: {GOLD}{CURRENCY_LONG}{BLACK} Вес: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Скорость: {GOLD}{VELOCITY}{BLACK} Мощность: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Скорость: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Скорость по океану: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Скорость по каналу/реке: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Стоимость обслуживания: {GOLD}{CURRENCY_LONG}/год STR_PURCHASE_INFO_CAPACITY :{BLACK}Ёмкость: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(переоб.) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Разработан в {GOLD}{NUM} г.{BLACK} Срок службы: {GOLD}{COMMA} {P год года лет} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Макс. надёжность: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Цена: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Вес: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Цена: {GOLD}{CURRENCY_LONG}{BLACK} Скорость: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Ёмкость: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Ведущие вагоны: {GOLD}+{POWER}{BLACK} Вес: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Может перевозить: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Все типы грузов STR_PURCHASE_INFO_ALL_BUT :Всё, кроме {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Макс. тяговое усилие: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальность: {GOLD}{COMMA} клет{P ка ки ок} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список локомотивов и вагонов - щёлкните для получения информации STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автотранспорта - щёлкните для получения информации STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Список кораблей - щёлкните для получения информации STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Список воздушных судов - щёлкните для получения информации STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Купить STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Купить STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Купить STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Купить STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Купить выбранный локомотив/вагон. Shift+щелчок - оценка стоимости покупки. STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Купить выбранный автомобиль. Shift+щелчок - оценка стоимости покупки. STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Купить выбранный корабль. Shift+щелчок - оценка стоимости покупки. STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Купить выбранный авиатранспорт. Shift+щелчок - оценка стоимости покупки. STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Переименовать STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Переименовать STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Переименовать STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Переименовать STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Изменить название модели поезда STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Изменить название модели автомобиля STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Изменить название модели корабля STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Изменить название модели возд. судна STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Название модели поезда STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Название модели автомобиля STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Название модели корабля STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Название модели возд. судна # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Переименовать депо STR_DEPOT_RENAME_DEPOT_CAPTION :Название депо STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} единиц{P а "" ""}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Поезда - используйте перетаскивание для изменения состава; нажмите ПКМ для получения информации. Удерживайте Ctrl для перетаскивания вагона вместе со всеми следующими за ним. STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Автомобили - нажмите ПКМ для получения информации STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Корабли - нажмите ПКМ для получения информации STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Авиатранспорт - нажмите ПКМ для получения информации STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Перетащите сюда транспорт, чтобы продать его STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Перетащите сюда автомобиль, чтобы продать его STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Перетащите сюда корабль, чтобы продать его STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Перетащите сюда транспорт, чтобы продать его STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Перетащите сюда локомотив для продажи всего состава STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Продать все поезда в депо STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Продать все авто в гараже STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Продать все суда в доке STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Продать весь авиатранспорт в ангаре STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Автозамена всех поездов в депо STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Автозамена всех авто в гараже STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Автозамена всех судов в доке STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Автозамена всего авиатранспорта в ангаре STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Новый состав STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Новый автомобиль STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Новое судно STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Новое возд. судно STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Купить новый поезд STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Купить новый автомобиль STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Купить новый корабль STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Купить новый авиатранспорт STR_DEPOT_CLONE_TRAIN :{BLACK}Копировать STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Копировать STR_DEPOT_CLONE_SHIP :{BLACK}Копировать STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Копировать STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Создать копию состава. Нажмите на кнопку, а затем на поезд внутри или снаружи депо. Ctrl+щелчок создаст поезд с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Создать копию автомобиля. Нажмите на кнопку, а затем на машину внутри или снаружи гаража. Ctrl+щелчок создаст автомобиль с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Создать копию корабля. Нажмите на кнопку, а затем на корабль внутри или снаружи дока. Ctrl+щелчок создаст корабль с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Создать копию воздушного судна. Нажмите на кнопку, а потом на воздушное судно внутри или снаружи ангара. Ctrl+щелчок создаст копию с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Показать депо в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показать гараж в главном окне. Ctrl+щелчок - показать в дополнительном окне. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Показать док в основном окне. Ctrl+щелчок - показать в дополнительном окне. STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показать ангар в главном окне. Ctrl+щелчок - показать в дополнительном окне. STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Показать список поездов, маршрут которых проходит через это депо STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Показать список автомобилей, маршрут которых проходит через этот гараж STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Показать список судов, маршрут которых проходит через этот док STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Показать список воздушных судов, маршрут которых проходит через этот ангар STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Нажмите для остановки всех поездов в депо STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Нажмите для остановки всех авто в гараже STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Нажмите для остановки всех кораблей в доке STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Нажмите для остановки всего авиатранспорта в ангаре STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Нажмите для запуска всех поездов в депо STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Нажмите для запуска всех авто в гараже STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Нажмите для запуска всех судов в доке STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Нажмите для запуска всего авиатранспорта в ангаре STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Весь транспорт в депо будет продан. Вы уверены? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Сообщение от производителя транспорта STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Мы создали новую модель {STRING.gen}. Заинтересованы ли вы в его годовом эксклюзивном использовании для проверки перед запуском в серийное производство? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :ж/д локомотив STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.gen :ж/д локомотива STR_ENGINE_PREVIEW_ROAD_VEHICLE :автомобиль STR_ENGINE_PREVIEW_ROAD_VEHICLE.gen :автомобиля STR_ENGINE_PREVIEW_AIRCRAFT :воздушное судно STR_ENGINE_PREVIEW_AIRCRAFT.gen :воздушного судна STR_ENGINE_PREVIEW_SHIP :корабль STR_ENGINE_PREVIEW_SHIP.gen :корабля STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :монорельсовый локомотив STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.gen :монорельсового локомотива STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :магниторельсовый локомотив STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.gen :магниторельсового локомотива STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Цена: {CURRENCY_LONG} Вес: {WEIGHT_SHORT}{}Скорость: {VELOCITY} Мощность: {POWER}{}Стоимость обслуж.: {CURRENCY_LONG}/год{}Ёмкость: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Цена: {CURRENCY_LONG} Вес: {WEIGHT_SHORT}{}Скорость: {VELOCITY} Мощность: {POWER} Макс. ТУ: {6:FORCE}{}Стоимость обслуж.: {4:CURRENCY_LONG}/год{}Ёмкость: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Ёмкость: {CARGO_LONG}, {CARGO_LONG}{}Стоимость обслуживания: {CURRENCY_LONG}/год STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Ёмкость: {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY} Дальность: {COMMA} клет{P 3 ка ки ок}{}Ёмкость: {CARGO_LONG}, {CARGO_LONG}{}Стоимость обслуживания: {CURRENCY_LONG}/год STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY} Дальность: {COMMA} клет{P 3 ка ки ок}{}Ёмкость: {CARGO_LONG}{}Стоимость обслуживания: {CURRENCY_LONG}/год # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Замена {STRING.gen} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Поезд STR_REPLACE_VEHICLE_TRAIN.gen :ж/д транспорта STR_REPLACE_VEHICLE_ROAD_VEHICLE :Автотранспорт STR_REPLACE_VEHICLE_ROAD_VEHICLE.gen :автотранспорта STR_REPLACE_VEHICLE_SHIP :Корабль STR_REPLACE_VEHICLE_SHIP.gen :кораблей STR_REPLACE_VEHICLE_AIRCRAFT :Авиатранспорт STR_REPLACE_VEHICLE_AIRCRAFT.gen :воздушного транспорта STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Выбор типа транспорта для замены STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Выбор типа транспорта, на который следует заменить STR_REPLACE_VEHICLES_START :{BLACK}Начать замену STR_REPLACE_VEHICLES_NOW :Начать замену всех ТС STR_REPLACE_VEHICLES_WHEN_OLD :Заменять только устаревшие ТС STR_REPLACE_HELP_START_BUTTON :{BLACK}Начать замену выбранных типов транспорта STR_REPLACE_NOT_REPLACING :{BLACK}Нет замены STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Транспорт не выбран STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} когда устареет STR_REPLACE_VEHICLES_STOP :{BLACK}Прекратить замену STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Прекратить замену транспорта STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Заменяем: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Переключение между окнами замены локомотивов и вагонов STR_REPLACE_ENGINES :Локомотивы STR_REPLACE_WAGONS :Вагоны STR_REPLACE_HELP_RAILTYPE :{BLACK}Тип ж/д транспорта, подлежащего замене STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Транспорт, на который происходит замена STR_REPLACE_RAIL_VEHICLES :Поезда STR_REPLACE_ELRAIL_VEHICLES :Электропоезда STR_REPLACE_MONORAIL_VEHICLES :Монорельсовые STR_REPLACE_MAGLEV_VEHICLES :Магнитные STR_REPLACE_REMOVE_WAGON :{BLACK}Удаление вагонов: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Разрешить при автозамене сохранять длину поездов путём удаления вагонов (начиная с головы поезда), если при автозамене локомотива увеличится длина поезда. # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Показать поезд в основном окне. Ctrl+щелчок включит слежение за поездом в главном окне. STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Показать автомобиль в главном окне. Ctrl+щелчок включит слежение за автомобилем в главном окне. STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Показать корабль в главном окне. Ctrl+Click будет следить за кораблем в главном окне STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Показать самолёт в главном окне. Ctrl+щелчок включит слежение за самолётом в главном окне. STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Отправить поезд в депо. Ctrl+щелчок - только для обслуживания. STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Отправить автомобиль в гараж. Ctrl+щелчок - только для обслуживания. STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Отправить корабль в док. Ctrl+щелчок - только для обслуживания. STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Отправить воздушное судно в ангар. Ctrl+щелчок - только для обслуживания. STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Создать копию состава. Ctrl+щелчок создаст поезд с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Создать копию автомобиля. Ctrl+щелчок создаст автомобиль с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Создать копию корабля. Ctrl+щелчок создаст корабль с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Создать копию воздушного судна. Ctrl+щелчок создаст копию с общим маршрутом. Shift+щелчок - оценка стоимости покупки. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Заставить поезд проехать на красный сигнал светофора STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Переоборудование поезда для перевозки иного типа груза STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Переоборудование автомобиля для перевозки иного типа груза STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Переоборудование корабля для перевозки иного типа груза STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Переоборудование возд. судна для перевозки иного типа груза STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Развернуть поезд STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Принудительно развернуть автомобиль STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Показать маршрут поезда. Ctrl+щелчок - показать график движения. STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Показать маршрут автомобиля. Ctrl+щелчок - показать график движения. STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Показать маршрут судна. Ctrl+щелчок - показать график движения. STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Показать маршрут воздушного судна. Ctrl+щелчок - показать график движения. STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Показать информацию о поезде STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Показать информацию об автомобиле STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Показать информацию о корабле STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Показать сведения об авиатранспорте. STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Текущее действие поезда; щёлкните для его остановки/запуска. Ctrl+щелчок - обзор пункта назначения. STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Текущее действие автомобиля; щёлкните для его остановки/запуска. Ctrl+щелчок - обзор пункта назначения. STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Текущее действие корабля; щёлкните для его остановки/запуска. Ctrl+щелчок - обзор пункта назначения. STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Текущее действие воздушного судна; щёлкните для его остановки/запуска. Ctrl+щелчок - обзор пункта назначения. # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Разгрузка/Погрузка STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Отъезжает STR_VEHICLE_STATUS_CRASHED :{RED}Попал в аварию! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Поломка STR_VEHICLE_STATUS_STOPPED :{RED}Остановлен STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Останавливается; {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Нет тяги STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Ожидает свободного пути STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Следующий пункт назначения слишком далеко STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Идёт к {STATION}; {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Нет заданий; {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Идёт к {WAYPOINT}; {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Идёт в {DEPOT}; {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Обслуж. в {DEPOT}; {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Остановлен STR_VEHICLE_COMMAND_STOPPED :{RED}Остановлен STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Запущен STR_VEHICLE_COMMAND_STARTED :{GREEN}Запущен # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Детали) STR_VEHICLE_NAME_BUTTON :{BLACK}Название STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Переименовать поезд STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Переименовать автомобиль STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Переименовать корабль STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Переименовать воздушное судно STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Возраст: {LTBLUE}{STRING}{BLACK} Стоимость обслуживания: {LTBLUE}{CURRENCY_LONG}/год # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} {P год года лет} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P год года лет} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY} {BLACK}Дальность: {LTBLUE}{COMMA} клет{P ка ки ок} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вес: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощность: {LTBLUE}{POWER}{BLACK} Макс. скорость: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вес: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощность: {LTBLUE}{POWER}{BLACK} Макс. скорость: {LTBLUE}{VELOCITY} {BLACK}Макс. ТУ: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Прибыль в этом году: {LTBLUE}{CURRENCY_LONG} (в прошлом году: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Надёжность: {LTBLUE}{COMMA}% {BLACK}Поломок с последнего осмотра: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Построен в {LTBLUE}{NUM} г.{BLACK} Стоимость: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Ёмкость: {LTBLUE}отсутствует{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Ёмкость: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Ёмкость: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ёмкость: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Выручка перевозки: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Осмотр каждые {LTBLUE}{COMMA} дней{BLACK} Последний раз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Осмотр каждые {LTBLUE}{COMMA}%{BLACK} Последний раз: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Увеличить интервал обслуживания на 10. Ctrl+щелчок увеличивает интервал обслуживания на 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Уменьшить интервал обслуживания на 10. Ctrl+щелчок уменьшает интервал обслуживания на 5. STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Изменить принцип расчёта интервала обслуживания STR_VEHICLE_DETAILS_DEFAULT :По умолчанию STR_VEHICLE_DETAILS_DAYS :В днях STR_VEHICLE_DETAILS_PERCENT :В процентах STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Название поезда STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Название автомобиля STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Название корабля STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Название возд. судна # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Построен в {LTBLUE}{NUM} г.{BLACK} Стоимость: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Стоимость: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Общая загруженность состава: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} (Всего: {CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Пусто STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} из {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} из {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Груз STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Показать сведения о перевозимых грузах STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Информация STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Показать сведения о вагонах STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Вместимость STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Показать вместимость вагонов STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Общий груз STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Показать общую вместимость поезда по типам грузов STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Ёмкость: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Переоборудование) STR_REFIT_TITLE :{GOLD}Выберите тип груза для перевозки: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Новая ёмкость: {GOLD}{CARGO_LONG}{}{BLACK}Стоимость переоборудования: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Новая ёмкость: {GOLD}{CARGO_LONG}{}{BLACK}Прибыль от переоборудования: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Новая ёмкость: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Стоимость переоборудования: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Новая ёмкость: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Прибыль от переоборудования: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Выберите вагоны для переоборудования. Можно обвести мышью несколько вагонов. Щелчок за пределами состава выберет весь состав. Ctrl+щелчок выберет вагоны до конца состава. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Выберите тип груза для перевозки STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Выберите тип груза для перевозки STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Выберите тип груза для перевозки STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Выберите тип груза для перевозки STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Переоборудовать поезд STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Переоборудовать авто STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Переоборудовать корабль STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Переоборудовать возд. судно STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Переоборудовать поезд для перевозки выбранного типа груза STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Переоборудовать автомобиль для перевозки выбранного типа груза STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Переоборудовать корабль для перевозки выбранного типа груза STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Переоборудовать авиатранспорт для перевозки выбранного типа груза # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Маршрут) STR_ORDERS_TIMETABLE_VIEW :{BLACK}График STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Показать график движения STR_ORDERS_LIST_TOOLTIP :{BLACK}Список заданий - щёлкните задание для выделения. Ctrl+щелчок - обзор станции назначения. STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Конец заданий - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Конец общих заданий - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Без остановок STR_ORDER_GO_TO :Идти в STR_ORDER_GO_NON_STOP_TO :Идти без остановок в STR_ORDER_GO_VIA :Идти через STR_ORDER_GO_NON_STOP_VIA :Идти без остановок через STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Изменить режим остановок при выполнении выделенного задания STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Полн. загр. любым грузом STR_ORDER_DROP_LOAD_IF_POSSIBLE :Погрузить, если доступно STR_ORDER_DROP_FULL_LOAD_ALL :Полная загрузка всего груза STR_ORDER_DROP_FULL_LOAD_ANY :Полная загрузка любым грузом STR_ORDER_DROP_NO_LOADING :Не грузиться STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Изменить способ погрузки на указанной станции STR_ORDER_TOGGLE_UNLOAD :{BLACK}Выгрузить всё STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Разгрузиться, если груз принимается STR_ORDER_DROP_UNLOAD :Выгрузить всё STR_ORDER_DROP_TRANSFER :Передать STR_ORDER_DROP_NO_UNLOADING :Не разгружаться STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Изменить способ разгрузки на указанной станции STR_ORDER_REFIT :{BLACK}Переоборудовать STR_ORDER_REFIT_TOOLTIP :{BLACK}Выберите тип груза для переоборудования. Ctrl+щелчок отменит переоборудование. STR_ORDER_REFIT_AUTO :{BLACK}Переоборудование STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Выберите тип груза для переоборудования. Оно будет проведено, если ТС позволяет это сделать. Ctrl+щелчок отменит переоборудование. STR_ORDER_DROP_REFIT_AUTO :Определённый груз STR_ORDER_DROP_REFIT_AUTO_ANY :Доступный груз STR_ORDER_SERVICE :{BLACK}Обслуживание STR_ORDER_DROP_GO_ALWAYS_DEPOT :Всегда идти STR_ORDER_DROP_SERVICE_DEPOT :Идти, если требуется обслуживание STR_ORDER_DROP_HALT_DEPOT :Стоп STR_ORDER_SERVICE_TOOLTIP :{BLACK}Пропустить это задание, если обслуживание не требуется STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Параметр транспорта для сравнения # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Процент погрузки STR_ORDER_CONDITIONAL_RELIABILITY :Надёжность STR_ORDER_CONDITIONAL_MAX_SPEED :Макс. скорость STR_ORDER_CONDITIONAL_AGE :Возраст (лет) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Требуется обслуживание STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Всегда STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Оставшийся срок службы (лет) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Условие перехода STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :равно STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :не равно STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :менее STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :не более STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :более STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :не менее STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :истина STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :ложь STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Значение для сравнения с данными транспорта STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Введите значение для сравнения STR_ORDERS_SKIP_BUTTON :{BLACK}Пропустить STR_ORDERS_SKIP_TOOLTIP :{BLACK}Перейти к следующему заданию. Ctrl+щелчок - перейти к выделенному заданию. STR_ORDERS_DELETE_BUTTON :{BLACK}Удалить STR_ORDERS_DELETE_TOOLTIP :{BLACK}Удалить выделенное задание STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Удалить все задания STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Индивидуальный список STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Сделать общий маршрут индивидуальным. Ctrl+щелчок очистит список заданий данного транспорта. STR_ORDERS_GO_TO_BUTTON :{BLACK}Следовать STR_ORDER_GO_TO_NEAREST_DEPOT :Идти к ближайшему депо STR_ORDER_GO_TO_NEAREST_HANGAR :Идти к ближайшему ангару STR_ORDER_CONDITIONAL :Условный переход к заданию STR_ORDER_SHARE :Общий маршрут STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Вставить новое задание перед выделенным, либо в конец списка. Зажатый Ctrl добавляет на станциях «полную погрузку любым грузом», на точках пути - «без остановки», на депо - «прохождение ТО». «Общий маршрут» или Ctrl+щелчок создаст общий маршрут с ТС, на которое вы укажете. Щелчок по любому ТС скопирует его задания. Если в списке заданий есть депо, автоматическое ТО для этого ТС отключается. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Показать весь транспорт с общим маршрутом # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Ехать через {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ехать без остановок через {WAYPOINT} STR_ORDER_SERVICE_AT :Если требуется ТО, идти в STR_ORDER_SERVICE_NON_STOP_AT :Если требуется ТО, идти без остановок в STR_ORDER_NEAREST_DEPOT :{NBSP} STR_ORDER_NEAREST_HANGAR :{G=m}{NBSP}ангар STR_ORDER_TRAIN_DEPOT :{G=n}депо STR_ORDER_ROAD_VEHICLE_DEPOT :{G=m}гараж STR_ORDER_SHIP_DEPOT :{G=m}док STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} ближайш{G 2 ий ую ее ие}{STRING}{STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Переоборуд. под {STRING.acc}) STR_ORDER_REFIT_STOP_ORDER :(Переоборуд. под {STRING.acc} и стоп) STR_ORDER_STOP_ORDER :(Стоп) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Автоматически) STR_ORDER_FULL_LOAD :(Полная погрузка) STR_ORDER_FULL_LOAD_ANY :(Полная погрузка любым грузом) STR_ORDER_NO_LOAD :(Не грузиться) STR_ORDER_UNLOAD :(Разгрузиться и забрать груз) STR_ORDER_UNLOAD_FULL_LOAD :(Разгрузиться и ждать полной загрузки) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Разгрузиться и ждать полной загрузки любым грузом) STR_ORDER_UNLOAD_NO_LOAD :(Разгрузиться и уйти пустым) STR_ORDER_TRANSFER :(Передать и забрать груз) STR_ORDER_TRANSFER_FULL_LOAD :(Передать и ждать полной загрузки) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Передать и ждать полной загрузки любым грузом) STR_ORDER_TRANSFER_NO_LOAD :(Передать и уйти пустым) STR_ORDER_NO_UNLOAD :(Не разгружаться и забрать груз) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Не разгружаться и ждать полной загрузки) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Не разгружаться и ждать полной загрузки любым грузом) STR_ORDER_NO_UNLOAD_NO_LOAD :(Не разгружаться и не загружаться) STR_ORDER_AUTO_REFIT :(Переоборуд. под {STRING.acc}) STR_ORDER_FULL_LOAD_REFIT :(Переоборуд. под {STRING.acc} и ждать полной загрузки) STR_ORDER_FULL_LOAD_ANY_REFIT :(Переоборуд. под {STRING.acc} и ждать полной загрузки любым грузом) STR_ORDER_UNLOAD_REFIT :(Разгрузиться, переоборуд. под {STRING.acc} и забрать груз) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Разгрузиться, переоборуд. под {STRING.acc} и ждать полной загрузки) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Разгрузиться, переоборуд. под {STRING.acc} и ждать полной загрузки любым грузом) STR_ORDER_TRANSFER_REFIT :(Передать и переоборуд. под {STRING.acc}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Передать, переоборуд. под {STRING.acc} и ждать полной загрузки) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Передать, переоборуд. под {STRING.acc} и ждать полной загрузки любым грузом) STR_ORDER_NO_UNLOAD_REFIT :(Не разгружаться, переоборуд. под {STRING.acc} и забрать груз) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Не разгружаться, переоборуд. под {STRING.acc} и ждать полной загрузки) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Не разгружаться, переоборуд. под {STRING.acc} и ждать полной загрузки любым грузом) STR_ORDER_AUTO_REFIT_ANY :доступный груз STR_ORDER_STOP_LOCATION_NEAR_END :[начало станции] STR_ORDER_STOP_LOCATION_MIDDLE :[середина станции] STR_ORDER_STOP_LOCATION_FAR_END :[конец станции] STR_ORDER_OUT_OF_RANGE :{RED} (Расстояние до след. станции слишком велико) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Перейти к заданию {COMMA} STR_ORDER_CONDITIONAL_NUM :Перейти к заданию {COMMA}, если {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Перейти к заданию {COMMA}, если {STRING} - {STRING} STR_INVALID_ORDER :{RED} (Неверное место назначения) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (График движения) STR_TIMETABLE_ORDER_VIEW :{BLACK}Маршрут STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Показать маршрут STR_TIMETABLE_TOOLTIP :{BLACK}График движения транспортного средства STR_TIMETABLE_NO_TRAVEL :Нет назначения STR_TIMETABLE_NOT_TIMETABLEABLE :В пути (время учтено в ближайшем не автоматическом задании) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :В пути (время не задано) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :В пути со скоростью не более {2:VELOCITY} (время не задано) STR_TIMETABLE_TRAVEL_FOR :В пути {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :В пути {STRING} со скоростью не более {VELOCITY} STR_TIMETABLE_STAY_FOR :и ждать {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :и идти в {STRING} STR_TIMETABLE_DAYS :{COMMA} д{P ень ня ней} STR_TIMETABLE_TICKS :{COMMA} тик{P "" а ов} STR_TIMETABLE_TOTAL_TIME :{BLACK}Весь маршрут займёт {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Движение по маршруту займёт {STRING} (не всё учтено) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Этот транспорт приходит вовремя STR_TIMETABLE_STATUS_LATE :{BLACK}Этот транспорт опаздывает на {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Этот транспорт опережает график на {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}График движения ещё не установлен STR_TIMETABLE_STATUS_START_AT :{BLACK}Отсчёт времени начнётся с {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Начальная дата STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Изменить дату начала расчёта графика движения STR_TIMETABLE_CHANGE_TIME :{BLACK}Изменить время STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Изменить время для выделенного задания STR_TIMETABLE_CLEAR_TIME :{BLACK}Сбросить время STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Сбросить время в выделенном задании STR_TIMETABLE_CHANGE_SPEED :{BLACK}Изменить огранич. скорости STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Изменить ограничение скорости движения для выбранного задания STR_TIMETABLE_CLEAR_SPEED :{BLACK}Сбросить огранич. скорости STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Сбросить ограничение скорости движения для выделенного задания STR_TIMETABLE_RESET_LATENESS :{BLACK}Сбросить счетчик опозд. STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Сбросить счётчик отклонения от графика, чтобы транспорт снова считался приходящим вовремя STR_TIMETABLE_AUTOFILL :{BLACK}Авторасчёт STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Заполнить график автоматически временем, затраченным на движение в следующей поездке. Ctrl+щелчок - не изменять время ожидания. STR_TIMETABLE_EXPECTED :{BLACK}Ожидаемое время STR_TIMETABLE_SCHEDULED :{BLACK}График STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Переключение между графиком движения и ожидаемым временем прибытия/отправления STR_TIMETABLE_ARRIVAL_ABBREVIATION :П: STR_TIMETABLE_DEPARTURE_ABBREVIATION :О: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Выбор даты STR_DATE_SET_DATE :{BLACK}Установить STR_DATE_SET_DATE_TOOLTIP :{BLACK}Установить дату начала расчёта графика движения STR_DATE_DAY_TOOLTIP :{BLACK}Выбор дня STR_DATE_MONTH_TOOLTIP :{BLACK}Выбор месяца STR_DATE_YEAR_TOOLTIP :{BLACK}Выбор года # AI debug window STR_AI_DEBUG :{WHITE}Отладка ИИ / скрипта STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Имя скрипта STR_AI_DEBUG_SETTINGS :{BLACK}Настройки STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Изменить настройки скрипта STR_AI_DEBUG_RELOAD :{BLACK}Перезагрузить ИИ STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Удалить ИИ, перезагрузить скрипт и перезапустить ИИ STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Включить/отключить паузу при появлении в журнале сигнальной строки STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Строка: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Строка для включения паузы STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Когда в журнале ИИ появляется данная строка, включается пауза STR_AI_DEBUG_MATCH_CASE :{BLACK}Регистр STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Переключить проверку регистра при сравнении строк STR_AI_DEBUG_CONTINUE :{BLACK}Продолжить STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Продолжить игру STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Просмотр отладочной информации модуля ИИ STR_AI_GAME_SCRIPT :{BLACK}Игровой скрипт STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Показать журнал работы игрового скрипта STR_ERROR_AI_NO_AI_FOUND :Не найдено подходящих модулей ИИ, поэтому конкуренты ничего делать не будут.{}Вы можете скачать модули ИИ через систему онлайн-контента. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Один из запущенных ИИ / скриптов завершил свою работу аварийно. Пожалуйста, сообщите об этом автору скрипта, приложив снимок окна отладки. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Окно отладки ИИ / скрипта доступно только для сервера # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Конфигурация ИИ / скрипта STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Игровой скрипт, который будет загружен в следующей игре STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Модули ИИ, которые будут загружены в следующей игре STR_AI_CONFIG_HUMAN_PLAYER :Человек STR_AI_CONFIG_RANDOM_AI :Случайный ИИ STR_AI_CONFIG_NONE :(нет) STR_AI_CONFIG_MOVE_UP :{BLACK}Вверх STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Переместить этот модуль ИИ вверх по списку STR_AI_CONFIG_MOVE_DOWN :{BLACK}Вниз STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Переместить этот модуль ИИ вниз по списку STR_AI_CONFIG_GAMESCRIPT :{SILVER}Игровой скрипт STR_AI_CONFIG_AI :{SILVER}ИИ STR_AI_CONFIG_CHANGE :{BLACK}Выбрать {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :ИИ STR_AI_CONFIG_CHANGE_GAMESCRIPT :Игровой скрипт STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Загрузить другой скрипт STR_AI_CONFIG_CONFIGURE :{BLACK}Конфигурация STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Настроить параметры скрипта # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Доступные {STRING} STR_AI_LIST_CAPTION_AI :модули ИИ STR_AI_LIST_CAPTION_GAMESCRIPT :игровые скрипты STR_AI_LIST_TOOLTIP :{BLACK}Щёлкните для выбора скрипта STR_AI_LIST_AUTHOR :{LTBLUE}Автор: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Версия: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Выбрать STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Выбрать подсвеченный скрипт STR_AI_LIST_CANCEL :{BLACK}Отмена STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Не менять скрипт # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}Параметры {STRING} STR_AI_SETTINGS_CAPTION_AI :ИИ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Игровой скрипт STR_AI_SETTINGS_CLOSE :{BLACK}Закрыть STR_AI_SETTINGS_RESET :{BLACK}Сброс STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Запускать этот ИИ через {ORANGE}{STRING} д{P 0:1 ень ня ней} после предыдущего # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}Инструкция к {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Список изменений к {STRING} {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Лицензия к {STRING} {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Посмотреть инструкцию STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Список изменений STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лицензия # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Расход: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Расход: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Доход: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Доход: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Трансфер: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Трансфер: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Предполагаемая цена: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Предполагаемый доход: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Идёт сохранение,{}пожалуйста, дождитесь завершения! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ошибка автосохранения STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Не удалось прочитать диск STR_ERROR_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Невозможно удалить файл STR_ERROR_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Внутренняя ошибка: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Файл повреждён - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Сохранение сделано в более новой версии STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Файл не читается STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Незаписываемый файл STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Нарушена целостность STR_GAME_SAVELOAD_NOT_AVAILABLE :<недоступно> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Игра была сохранена в версии без поддержки трамваев. Все трамваи удалены. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Генерация карты остановлена...{}... нет доступных мест для размещения городов STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... в этом сценарии нет городов STR_ERROR_PNGMAP :{WHITE}Не удалось загрузить ландшафт из PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... файл не найден. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... не удалось преобразовать изображение. Поддерживаются 8-битные и 24-битные PNG. STR_ERROR_PNGMAP_MISC :{WHITE}... что-то пошло не так. Возможно, файл повреждён. STR_ERROR_BMPMAP :{WHITE}Не удалось загрузить ландшафт из BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... невозможно преобразовать изображение STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... изображение слишком большое STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Выход за пределы доступных значений STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Изменение размеров исходной карты до таких значений не рекомендуется. Продолжить? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Текущая звуковая схема выбрана системой автоматически. Дополнительные наборы звуков можно загрузить через систему онлайн контента. # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Огромный снимок экрана STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Снимок экрана будет иметь размер {COMMA} х {COMMA} пикселей. Его создание займёт некоторое время. Продолжить? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Снимок экрана сохранён под именем «{STRING}» STR_ERROR_SCREENSHOT_FAILED :{WHITE}Не удалось сохранить снимок экрана # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Сообщение STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Сообщение от {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}За краем карты STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Слишком близко к краю карты STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Недостаточно денег - требуется {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Необходимо ровное место STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Неверный уклон земли STR_ERROR_CAN_T_DO_THIS :{WHITE}Это невозможно... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Сначала снесите здания STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Невозможно расчистить данный участок... STR_ERROR_SITE_UNSUITABLE :{WHITE}... неподходящее место STR_ERROR_ALREADY_BUILT :{WHITE}... уже построено STR_ERROR_OWNED_BY :{WHITE}... принадлежит {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... участок принадлежит другой компании STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... достигнуто ограничение по изменению ландшафта STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... достигнуто ограничение по количеству очищаемых клеток STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... достигнут лимит высадки деревьев STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Имя должно быть уникальным STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} на пути STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Запрещено во время паузы # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}... администрация города {TOWN} запрещает вам это делать STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Администрация г.{NBSP}{TOWN} запрещает постройку ещё одного аэропорта в городе STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Администрация г.{NBSP}{TOWN} не разрешает строительство аэропорта из-за высокого уровня шума. STR_ERROR_BRIBE_FAILED :{WHITE}Ваша попытка дать взятку была раскрыта местным следователем # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Здесь невозможно повысить уровень земли... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Здесь невозможно понизить уровень земли... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Здесь невозможно выровнять землю... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Земляные работы повредят туннель STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Уже на уровне моря STR_ERROR_TOO_HIGH :{WHITE}Слишком высоко STR_ERROR_ALREADY_LEVELLED :{WHITE}... уже ровно # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Невозможно изменить название компании... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Невозможно изменить имя директора... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... максимально допустимый размер займа - {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Невозможно занять больше денег... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... заём полностью погашен STR_ERROR_CURRENCY_REQUIRED :{WHITE}... требуется {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Невозможно погасить заём... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Невозможно отдать занятые у банка деньги... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Невозможно приобрести компанию... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Невозможно построить штаб-квартиру компании... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Невозможно купить 25% акций этой компании... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Невозможно продать 25% акций этой компании... STR_ERROR_PROTECTED :{WHITE}Эта компания ещё не выпускает акции... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Невозможно построить города... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Невозможно переименовать город... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Здесь невозможно построить город... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Невозможно расширить город... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... слишком близко к краю карты STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... слишком близко к другому городу STR_ERROR_TOO_MANY_TOWNS :{WHITE}... слишком много городов STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... нет места на карте STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Города не будут строить дороги. Вы можете включить строительство дорог в Расш. настройки->Экономика->Города STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Идут дорожные работы... STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Невозможно уничтожить город:{}к нему относится станция или депо, либо невозможно очистить одну из занимаемых им клеток. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}...в центре города нет места для статуи # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... слишком много предприятий STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Невозможно создать предприятия... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Здесь нельзя создать {STRING}... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Построить это предприятие невозможно... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... слишком близко к другому предприятию STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... сначала постройте город STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... такой объект уже есть в городе STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... можно построить в городах с населением не менее 1200 жителей STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... можно строить только в тропиках STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... можно строить только в пустыне STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... можно строить только в городах (на месте домов) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... можно строить только около центра города STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... можно строить только в низинах STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... может находиться только у края карты STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... лес можно сажать только выше линии снега STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... можно строить только выше снеговой линии STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... можно строить только ниже снеговой линии # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Здесь невозможно построить станцию... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Здесь невозможно построить остановку... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Невозможно построить грузовой терминал... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Невозможно построить пассажирскую трамвайную остановку... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Невозможно построить грузовую трамвайную остановку... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Здесь невозможно построить пристань... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Здесь невозможно построить аэропорт... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Присоединяется более чем к одной существующей станции STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... станция слишком большая STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Слишком много станций и остановок STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Слишком большая ж/д станция STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Слишком много автобусных остановок STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Слишком много грузовых терминалов STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Слишком близко к другой станции STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Слишком близко к другой пристани STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Слишком близко к другому аэропорту STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Невозможно переименовать станцию... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... эта дорога принадлежит городу STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... неверное направление дороги STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... на проходных остановках нельзя делать повороты STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... на проходных остановках нельзя делать перекрёстки # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Невозможно удалить часть станции... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Сначала удалите ж/д станцию STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Невозможно удалить автобусную остановку... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Невозможно удалить грузовой терминал... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Невозможно удалить пассажирскую трамвайную остановку... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Невозможно удалить грузовую трамвайную остановку... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Сначала удалите остановку STR_ERROR_THERE_IS_NO_STATION :{WHITE}...здесь нет станции STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Сначала снесите ж/д станцию STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Сначала снесите автобусную остановку STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Сначала снесите грузовой терминал STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Сначала снесите пассажирскую трамвайную остановку STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Сначала снесите грузовую трамвайную остановку STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Сначала снесите пристань STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Сначала снесите аэропорт # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Примыкает к нескольким точкам пути STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Слишком близко к другой точке пути STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Здесь невозможно поставить точку пути... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Не удалось установить здесь буй... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Невозможно переименовать точку пути... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Невозможно удалить точку пути... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Сначала удалите точку пути STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... буй на пути STR_ERROR_BUOY_IS_IN_USE :{WHITE}... этот буй используется другой компанией! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Здесь невозможно построить депо... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Здесь невозможно построить гараж... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Здесь невозможно построить трамвайное депо... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Здесь невозможно построить док... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Не удалось переименовать депо... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... должен быть остановлен в депо STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... должен быть остановлен в гараже STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... должен быть остановлен в доке STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... должен быть остановлен в ангаре STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Структуру поезда можно менять только в депо STR_ERROR_TRAIN_TOO_LONG :{WHITE}Поезд слишком длинный STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Не удалось развернуть поезд... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... состоит из нескольких элементов STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Несовместимый тип рельс STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Невозможно переместить транспортное средство... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Тыловой локомотив всегда следует за его передней частью STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Невозможно найти маршрут к депо STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Невозможно найти гараж STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Неверный тип депо # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}ТС «{VEHICLE}» слишком длинное после замены STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Правила автозамены/обновления не были применены STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(денег мало) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Недопустимая комбинация путей STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Сначала удалите сигналы STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Нет подходящих рельсов STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Сначала удалите рельсы STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Дорога односторонняя или блокирована STR_ERROR_CROSSING_DISALLOWED :{WHITE}Через этот вид рельсов запрещено строить переезды STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Здесь невозможно поставить сигнал... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Здесь невозможно проложить рельсы... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Не удалось удалить рельсы... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Не удалось удалить сигнал... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Невозможно преобразовать здесь сигнал... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}...здесь нет железной дороги STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}...сигналы отсутствуют STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Здесь невозможно преобразовать тип рельса... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Сначала удалите дорогу STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... односторонние дороги не могут иметь такое пересечение STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Здесь невозможно построить дорогу... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Здесь невозможно проложить трамвайные пути... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Не удалось удалить дорогу... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Не удалось удалить трамвайные пути... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...здесь нет дороги STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...здесь нет трамвайных путей # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Здесь невозможно построить канал... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Здесь невозможно построить шлюз... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Здесь невозможно расположить реку... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... нужно строить в воде STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... нельзя строить в воде STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... нельзя строить в открытом море STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... нельзя строить на канале STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... нельзя строить на реке STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Сначала снесите канал STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Здесь невозможно построить акведук... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... уже есть дерево STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... эти деревья здесь не растут STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Невозможно высадить деревья... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Здесь невозможно построить мост... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Сначала снесите мост STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Не может начинаться и заканчиваться в той же точке STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Опоры моста должны быть на одном уровне STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Слишком низкий мост STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Начало и конец должны быть на одной линии STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... оба конца моста должны опираться на землю STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... мост слишком длинный STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Мост выходит за пределы карты # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Здесь невозможно построить туннель... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Неподходящее место для строительства туннеля STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Сначала снесите туннель STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Другой туннель на пути STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Туннель заканчивается за пределами карты STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Невозможно поднять/опустить землю для другого конца туннеля STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... туннель слишком длинный # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... слишком много объектов STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Невозможно построить объект... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Объект на пути STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... штаб-квартира компании на пути STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Невозможно купить эту землю... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... вы и так уже владеете этим! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Не удалось создать группу... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Не удалось удалить группу... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Не удалось переименовать группу... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Не удалось удалить весь транспорт из группы... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Не удалось добавить транспорт в группу... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Не удалось добавить транспорт с общим маршрутом в группу... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Поезд мешает STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Автомобиль на пути STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Корабль на пути STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}ОН ЛЕТИТ! STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Невозможно переоборудовать поезд... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Невозможно переоборудовать автомобиль... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Не удалось переоборудовать корабль... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Не удалось переоборудовать самолёт... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Невозможно переименовать поезд... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Невозможно переименовать автомобиль... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Невозможно переименовать корабль... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Невозможно переименовать воздушное судно... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Невозможно остановить/запустить поезд... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Невозможно остановить/запустить автомобиль... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Не удалось остановить/запустить корабль... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Не удалось остановить/запустить авиатранспорт... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Не удалось отправить поезд в депо... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Невозможно отправить автомобиль в гараж... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Не удалось отправить корабль в док... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Не удалось отправить самолёт в ангар... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Не удалось купить ж/д транспорт... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Невозможно купить автомобиль... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Не удалось купить корабль... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Не удалось купить воздушное судно... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Невозможно изменить название модели поезда... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Невозможно изменить название модели автомобиля... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Невозможно изменить название модели корабля... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Невозможно изменить название модели возд. судна... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Не удалось продать поезд... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Не удалось продать автомобиль... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Не удалось продать корабль... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Не удалось продать самолёт... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Локомотив и/или вагон недоступен STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Автотранспорт недоступен STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Корабль недоступен STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Авиатранспорт недоступен STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Слишком много транспорта в игре STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не удалось изменить частоту обслуживания... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... транспортное средство уничтожено STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Все транспортные средства будут недоступны STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Измените конфигурацию модуля NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Нет доступных транспортных средств STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Начните игру не ранее {DATE_SHORT} либо подключите NewGRF, добавляющий транспортные средства, использовавшиеся в это время. # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Невозможно игнорировать светофор. Опасно... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Не удалось развернуть поезд... STR_ERROR_TRAIN_START_NO_POWER :У поезда нет тяги STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Невозможно развернуть автомобиль... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Самолёт в воздухе # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Список заданий заполнен STR_ERROR_TOO_MANY_ORDERS :{WHITE}Слишком много заданий STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Невозможно вставить новое задание... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Невозможно удалить это задание... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Невозможно изменить это задание... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Не удалось переместить это задание... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Не удалось пропустить текущее задание... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Не удалось перейти к выделенному заданию... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... ТС не может достигнуть всех станций STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... ТС не может достигнуть этой станции STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}...ТС с общим маршрутом не может достигнуть этой станции STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Невозможно использовать общий маршрут... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Невозможно создать индивидуальный маршрут... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Невозможно скопировать маршрут... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... слишком далеко от предыдущей точки STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... дальность полёта воздушного судна недостаточна # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Не удалось составить график движения для этого транспорта... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Транспорт может ждать только на станции STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Этот транспорт не останавливается на этой станции # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... слишком много меток STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Не удалось поставить табличку... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Не удалось изменить табличку... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не удалось удалить метку... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Экономический симулятор на основе игры «Transport Tycoon Deluxe» # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Оригинальная графика из Transport Tycoon Deluxe для DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS. STR_BASEGRAPHICS_WIN_DESCRIPTION :Оригинальная графика из Transport Tycoon Deluxe для Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows. STR_BASESOUNDS_NONE_DESCRIPTION :"Пустой" набор звукового оформления, не содержащий никаких звуков. STR_BASEMUSIC_WIN_DESCRIPTION :Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows. STR_BASEMUSIC_NONE_DESCRIPTION :"Пустой" набор музыкального оформления, не содержащий никакой музыки. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Высотное офисное здание STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Офисное здание STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Жилой дом STR_TOWN_BUILDING_NAME_CHURCH_1 :Церковь STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Большое офисное здание STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Городские здания STR_TOWN_BUILDING_NAME_HOTEL_1 :Отель STR_TOWN_BUILDING_NAME_STATUE_1 :Статуя STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Фонтан STR_TOWN_BUILDING_NAME_PARK_1 :Парк STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Офисное здание STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Торгово-офисный центр STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Современный деловой центр STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Склад STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Офисное здание STR_TOWN_BUILDING_NAME_STADIUM_1 :Стадион STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Старые дома STR_TOWN_BUILDING_NAME_COTTAGES_1 :Коттеджи STR_TOWN_BUILDING_NAME_HOUSES_1 :Дома STR_TOWN_BUILDING_NAME_FLATS_1 :Многоквартирный дом STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Высотное офисное здание STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Торгово-офисный центр STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Торгово-офисный центр STR_TOWN_BUILDING_NAME_THEATER_1 :Театр STR_TOWN_BUILDING_NAME_STADIUM_2 :Стадион STR_TOWN_BUILDING_NAME_OFFICES_1 :Офисы STR_TOWN_BUILDING_NAME_HOUSES_2 :Дома STR_TOWN_BUILDING_NAME_CINEMA_1 :Кинотеатр STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Торговый центр STR_TOWN_BUILDING_NAME_IGLOO_1 :Иглу STR_TOWN_BUILDING_NAME_TEPEES_1 :Хижины STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Домик-Чайник STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Хрюшка-Копилка ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=f}Угольная шахта STR_INDUSTRY_NAME_COAL_MINE.gen :угольной шахты STR_INDUSTRY_NAME_POWER_STATION :{G=f}Электростанция STR_INDUSTRY_NAME_POWER_STATION.gen :электростанции STR_INDUSTRY_NAME_SAWMILL :{G=f}Лесопилка STR_INDUSTRY_NAME_SAWMILL.gen :лесопилки STR_INDUSTRY_NAME_FOREST :{G=m}Лес STR_INDUSTRY_NAME_FOREST.gen :леса STR_INDUSTRY_NAME_OIL_REFINERY :{G=m}Нефтезавод STR_INDUSTRY_NAME_OIL_REFINERY.gen :нефтезавода STR_INDUSTRY_NAME_OIL_RIG :{G=f}Нефтяная вышка STR_INDUSTRY_NAME_OIL_RIG.gen :нефтяной вышки STR_INDUSTRY_NAME_FACTORY :{G=m}Завод STR_INDUSTRY_NAME_FACTORY.gen :завода STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Типография STR_INDUSTRY_NAME_PRINTING_WORKS.gen :типографии STR_INDUSTRY_NAME_STEEL_MILL :{G=m}Сталелитейный завод STR_INDUSTRY_NAME_STEEL_MILL.gen :сталелитейного завода STR_INDUSTRY_NAME_FARM :{G=f}Ферма STR_INDUSTRY_NAME_FARM.gen :фермы STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=f}Шахта медной руды STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :шахты медной руды STR_INDUSTRY_NAME_OIL_WELLS :{G=f}Нефтяная скважина STR_INDUSTRY_NAME_OIL_WELLS.gen :нефтяной скважины STR_INDUSTRY_NAME_BANK :{G=m}Банк STR_INDUSTRY_NAME_BANK.gen :банка STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=m}Продуктовый завод STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :продуктового завода STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Бумажная фабрика STR_INDUSTRY_NAME_PAPER_MILL.gen :бумажной фабрики STR_INDUSTRY_NAME_GOLD_MINE :{G=f}Золотая шахта STR_INDUSTRY_NAME_GOLD_MINE.gen :золотой шахты STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}Банк STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :банка STR_INDUSTRY_NAME_DIAMOND_MINE :{G=p}Алмазные копи STR_INDUSTRY_NAME_DIAMOND_MINE.gen :алмазных копей STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=f}Шахта железной руды STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :шахты железной руды STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Фруктовая плантация STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :фруктовой плантации STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Плантация гевеи STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :плантации гевеи STR_INDUSTRY_NAME_WATER_SUPPLY :{G=f}Водная скважина STR_INDUSTRY_NAME_WATER_SUPPLY.gen :водной скважины STR_INDUSTRY_NAME_WATER_TOWER :{G=f}Водонапорная башня STR_INDUSTRY_NAME_WATER_TOWER.gen :водонапорной башни STR_INDUSTRY_NAME_FACTORY_2 :{G=m}Завод STR_INDUSTRY_NAME_FACTORY_2.gen :завода STR_INDUSTRY_NAME_FARM_2 :{G=f}Ферма STR_INDUSTRY_NAME_FARM_2.gen :фермы STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}Лесопилка STR_INDUSTRY_NAME_LUMBER_MILL.gen :лесопилки STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Лес сахарной ваты STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :леса сахарной ваты STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Конфетная фабрика STR_INDUSTRY_NAME_CANDY_FACTORY.gen :конфетной фабрики STR_INDUSTRY_NAME_BATTERY_FARM :{G=n}Поле батареек STR_INDUSTRY_NAME_BATTERY_FARM.gen :поля батареек STR_INDUSTRY_NAME_COLA_WELLS :{G=p}Колодцы колы STR_INDUSTRY_NAME_COLA_WELLS.gen :колодцев колы STR_INDUSTRY_NAME_TOY_SHOP :{G=m}Магазин игрушек STR_INDUSTRY_NAME_TOY_SHOP.gen :магазина игрушек STR_INDUSTRY_NAME_TOY_FACTORY :{G=m}Завод игрушек STR_INDUSTRY_NAME_TOY_FACTORY.gen :завода игрушек STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=p}Фонтаны пластика STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :фонтанов пластика STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=m}Завод газировки STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :завода газировки STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Генератор пузырьков STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :генератора пузырьков STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=m}Ирисовый карьер STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :ирисового карьера STR_INDUSTRY_NAME_SUGAR_MINE :{G=f}Сахарная шахта STR_INDUSTRY_NAME_SUGAR_MINE.gen :сахарной шахты ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Без имени STR_SV_TRAIN_NAME :Поезд №{COMMA} STR_SV_ROAD_VEHICLE_NAME :Автомобиль №{COMMA} STR_SV_SHIP_NAME :Судно №{COMMA} STR_SV_AIRCRAFT_NAME :Борт №{COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Северная STR_SV_STNAME_SOUTH :{STRING} Южная STR_SV_STNAME_EAST :{STRING} Восточная STR_SV_STNAME_WEST :{STRING} Западная STR_SV_STNAME_CENTRAL :{STRING} Центральная STR_SV_STNAME_TRANSFER :{STRING} Транзитная STR_SV_STNAME_HALT :{STRING} Привальная STR_SV_STNAME_VALLEY :{STRING} Долинная STR_SV_STNAME_HEIGHTS :{STRING} Высотная STR_SV_STNAME_WOODS :{STRING} Лесная STR_SV_STNAME_LAKESIDE :{STRING} Озёрная STR_SV_STNAME_EXCHANGE :{STRING} Сортировочная STR_SV_STNAME_AIRPORT :Аэропорт {STRING} STR_SV_STNAME_OILFIELD :Нефтяная вышка {STRING} STR_SV_STNAME_MINES :Шахты {STRING} STR_SV_STNAME_DOCKS :Пристань {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Дополнительная STR_SV_STNAME_SIDINGS :{STRING} Запасная STR_SV_STNAME_BRANCH :{STRING} Резервная STR_SV_STNAME_UPPER :{STRING} Верхняя STR_SV_STNAME_LOWER :{STRING} Нижняя STR_SV_STNAME_HELIPORT :Вертодром {STRING} STR_SV_STNAME_FOREST :Лес {STRING} STR_SV_STNAME_FALLBACK :{STRING}, станция №{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Паровоз Kirby Paul Tank STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :Тепловоз MJS 250 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Паровоз Ploddyphut «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Паровоз Powernaut «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паровоз MightyMover «Чу-Чу» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Тепловоз Ploddyphut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Тепловоз Powernaut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Паровоз Wills 2-8-0 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Паровоз Chaney «Юбилей» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Паровоз Ginzu «A4» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :Паровоз SH «8P» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Дизель-поезд Manley-Morel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :Дизель-поезд «Dash» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :Тепловоз SH/Hendry «25» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :Тепловоз UU «37» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Тепловоз Floss «47» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :Тепловоз CS 4000 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :Тепловоз CS 2400 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Тепловоз «Centennial» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Тепловоз «Kelling 3100» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Тепловоз «Turner Турбо» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :Тепловоз MJS 1000 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :Тепловоз SH «125» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :Электровоз SH «30» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :Электровоз SH «40» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :Электровоз «T.I.M.» STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :Электровоз «AsiaStar» STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Пассажирский вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Почтовый вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Угольная платформа STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Нефтяная цистерна STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Вагон для скота STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Товарный вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Хоппер для зерна STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Вагон для дерева STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Хоппер для железной руды STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Вагон для стали STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Бронированный вагон STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Рефрижератор (продукты) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Вагон для бумаги STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Хоппер для медной руды STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Водная цистерна STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Рефрижератор (фрукты) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Вагон для каучука STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Вагон для сахара STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Хоппер для сахарной ваты STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Хоппер для ирисок STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Вагон для пузырьков STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Цистерна для колы STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Вагон для конфет STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Вагон для игрушек STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Вагон для батареек STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Вагон для газировки STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Вагон для пластика STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :Электровоз «X2001» STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :Электровоз «Millennium Z1» STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Пассажирский вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Почтовый вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Угольная платформа STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Нефтяная цистерна STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Вагон для скота STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Товарный вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Хоппер для зерна STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Вагон для древесины STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Хоппер для железной руды STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Вагон для стали STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Бронированный вагон STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Рефрижератор (продукты) STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Вагон для бумаги STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Хоппер для медной руды STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Водная цистерна STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Рефрижератор (фрукты) STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Вагон для каучука STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Вагон для сахара STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Хоппер для сахарной ваты STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Хоппер для ирисок STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Вагон для пузырьков STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Цистерна для колы STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Вагон для конфет STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Вагон для игрушек STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Вагон для батареек STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Вагон для газировки STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Вагон для пластика STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 «Левиафан» STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 «Циклоп» STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 «Пегас» STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 «Химера» STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow «Ракета» STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Пассажирский вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Почтовый вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Угольная платформа STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Нефтяная цистерна STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Вагон для скота STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Товарный вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Хоппер для зерна STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Вагон для древесины STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Хоппер для железной руды STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Вагон для стали STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Бронированный вагон STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Рефрижератор (продукты) STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Вагон для бумаги STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Хоппер для медной руды STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Водная цистерна STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Рефрижератор (фрукты) STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Вагон для каучука STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Вагон для сахара STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Хоппер для сахарной ваты STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Хоппер для ирисок STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Вагон для пузырьков STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Цистерна для колы STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Вагон для конфет STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Вагон для игрушек STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Вагон для батареек STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Вагон для газировки STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Вагон для пластика STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Автобус MPS Regal STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Автобус Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Автобус Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Автобус Foster MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Автобус Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Автобус Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Автобус Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Грузовик Balogh (уголь) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Грузовик Uhl (уголь) STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Грузовик DW (уголь) STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Почтовый фургон MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Почтовый фургон Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Почтовый фургон Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Почтовый фургон «MightyMover» STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Почтовый фургон Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Почтовый фургон Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Цистерна Witcombe (нефть) STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Цистерна Foster (нефть) STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Цистерна Perry (нефть) STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Скотовозка Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Скотовозка Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Скотовозка Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Грузовик Balogh (товары) STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Грузовик Craighead (товары) STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Грузовик Goss (товары) STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Зерновозка Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Зерновозка Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Зерновозка Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Грузовик Witcombe (древесина) STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Грузовик Foster (древесина) STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Грузовик Moreland (древесина) STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Грузовик MPS (жел. руда) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Грузовик Uhl (жел. руда) STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Грузовик Chippy (жел. руда) STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Грузовик Balogh (сталь) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Грузовик Uhl (сталь) STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Грузовик Kelling (сталь) STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Броневик Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Броневик Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Броневик Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Рефрижератор Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Рефрижератор Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Рефрижератор Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Грузовик Uhl (бумага) STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Грузовик Balogh (бумага) STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Грузовик MPS (бумага) STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Грузовик MPS (медн. руда) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Грузовик Uhl (медн. руда) STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Грузовик Goss (медн. руда) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Водная цистерна Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Водная цистерна Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Водная цистерна MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Рефрижератор Balogh (фрукты) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Рефрижератор Uhl (фрукты) STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Рефрижератор Kelling (фрукты) STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Грузовик Balogh (каучук) STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Грузовик Uhl (каучук) STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Грузовик RMT (каучук) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Грузовик MightyMover (сахар) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Грузовик Powernaught (сахар) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Грузовик Wizzowow (сахар) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Цистерна MightyMover (кола) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Цистерна Powernaught (кола) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Цистерна Wizzowow (кола) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Грузовик MightyMover (сах. вата) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Грузовик Powernaught (сах. вата) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Грузовик Wizzowow (сах. вата) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Грузовик MightyMover (ириски) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Грузовик Powernaught (ириски) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Грузовик Wizzowow (ириски) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Грузовик MightyMover (игрушки) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Грузовик Powernaught (игрушки) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Грузовик Wizzowow (игрушки) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Грузовик MightyMover (конфеты) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Грузовик Powernaught (конфеты) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Грузовик Wizzowow (конфеты) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Грузовик MightyMover (батарейки) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Грузовик Powernaught (батарейки) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Грузовик Wizzowow (батарейки) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Грузовик MightyMover (газировка) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Грузовик Powernaught (газировка) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Грузовик Wizzowow (газировка) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Грузовик MightyMover (пластик) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Грузовик Powernaught (пластик) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Грузовик Wizzowow (пластик) STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Грузовик MightyMover (пузырьки) STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Грузовик Powernaught (пузырьки) STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Грузовик Wizzowow (пузырьки) STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Нефт. танкер MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Нефт. танкер CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Пассажир. судно MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Пассажир. судно FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Судно на возд. подушке Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Пассажир. судно Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Пассажир. судно Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Сухогруз Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Сухогруз Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухогруз MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Сухогруз Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Дарвин 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Дарвин 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Дарвин 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Дарвин 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Дарвин 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Дарвин 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Гуру «Галактика» STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Аэротакси A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Аэротакси A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Аэротакси A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Аэротакси A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Дингер 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :Аэротакси A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Шаттл STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Дарвин 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Джаггерлёт M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Вертолёт Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Вертолёт Гуру X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Вертолёт Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} г. STR_FORMAT_DATE_LONG :{STRING} {STRING.gen} {NUM} г. STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :Буй {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :Буй {TOWN} №{COMMA} STR_FORMAT_COMPANY_NUM :(Компания {COMMA}) STR_FORMAT_GROUP_NAME :Группа {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :Точка пути {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Точка пути {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Депо {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Депо {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Гараж {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Гараж {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Док {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Док {TOWN} №{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :Ангар ({STATION}) STR_UNKNOWN_STATION :неизвестная станция STR_DEFAULT_SIGN_NAME :Табличка STR_COMPANY_SOMEONE :кто-то STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Наблюдатель, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/simplified_chinese.txt0000644000000000000000000137530712246102561020004 0ustar rootroot##name Chinese (Simplified) ##ownname 简体中文 ##isocode zh_CN ##plural 1 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x0804 ##grflangid 0x56 # $Id: simplified_chinese.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(未定义字符串) STR_JUST_NOTHING :无 # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :旅客 STR_CARGO_PLURAL_COAL :煤炭 STR_CARGO_PLURAL_MAIL :邮件 STR_CARGO_PLURAL_OIL :原油 STR_CARGO_PLURAL_LIVESTOCK :牲畜 STR_CARGO_PLURAL_GOODS :货物 STR_CARGO_PLURAL_GRAIN :谷物 STR_CARGO_PLURAL_WOOD :木材 STR_CARGO_PLURAL_IRON_ORE :铁矿石 STR_CARGO_PLURAL_STEEL :钢材 STR_CARGO_PLURAL_VALUABLES :贵重品 STR_CARGO_PLURAL_COPPER_ORE :铜矿石 STR_CARGO_PLURAL_MAIZE :玉米 STR_CARGO_PLURAL_FRUIT :水果 STR_CARGO_PLURAL_DIAMONDS :钻石 STR_CARGO_PLURAL_FOOD :食品 STR_CARGO_PLURAL_PAPER :纸张 STR_CARGO_PLURAL_GOLD :黄金 STR_CARGO_PLURAL_WATER :饮用水 STR_CARGO_PLURAL_WHEAT :小麦 STR_CARGO_PLURAL_RUBBER :橡胶 STR_CARGO_PLURAL_SUGAR :蔗糖 STR_CARGO_PLURAL_TOYS :玩具 STR_CARGO_PLURAL_CANDY :糖果 STR_CARGO_PLURAL_COLA :可乐 STR_CARGO_PLURAL_COTTON_CANDY :棉花糖 STR_CARGO_PLURAL_BUBBLES :泡泡 STR_CARGO_PLURAL_TOFFEE :太妃糖 STR_CARGO_PLURAL_BATTERIES :电池 STR_CARGO_PLURAL_PLASTIC :塑料块 STR_CARGO_PLURAL_FIZZY_DRINKS :跳跳水 # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :旅客 STR_CARGO_SINGULAR_COAL :煤炭 STR_CARGO_SINGULAR_MAIL :邮件 STR_CARGO_SINGULAR_OIL :原油 STR_CARGO_SINGULAR_LIVESTOCK :牲畜 STR_CARGO_SINGULAR_GOODS :货物 STR_CARGO_SINGULAR_GRAIN :谷物 STR_CARGO_SINGULAR_WOOD :木材 STR_CARGO_SINGULAR_IRON_ORE :铁矿石 STR_CARGO_SINGULAR_STEEL :钢材 STR_CARGO_SINGULAR_VALUABLES :金块 STR_CARGO_SINGULAR_COPPER_ORE :铜矿石 STR_CARGO_SINGULAR_MAIZE :玉米 STR_CARGO_SINGULAR_FRUIT :水果 STR_CARGO_SINGULAR_DIAMOND :钻石 STR_CARGO_SINGULAR_FOOD :食品 STR_CARGO_SINGULAR_PAPER :纸张 STR_CARGO_SINGULAR_GOLD :黄金 STR_CARGO_SINGULAR_WATER :饮用水 STR_CARGO_SINGULAR_WHEAT :小麦 STR_CARGO_SINGULAR_RUBBER :橡胶 STR_CARGO_SINGULAR_SUGAR :蔗糖 STR_CARGO_SINGULAR_TOY :玩具 STR_CARGO_SINGULAR_CANDY :糖果 STR_CARGO_SINGULAR_COLA :可乐 STR_CARGO_SINGULAR_COTTON_CANDY :棉花糖 STR_CARGO_SINGULAR_BUBBLE :泡泡 STR_CARGO_SINGULAR_TOFFEE :太妃糖 STR_CARGO_SINGULAR_BATTERY :电池 STR_CARGO_SINGULAR_PLASTIC :塑料 STR_CARGO_SINGULAR_FIZZY_DRINK :跳跳水 # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} 位旅客 STR_QUANTITY_COAL :{WEIGHT_LONG} 煤炭 STR_QUANTITY_MAIL :{COMMA} 包邮件 STR_QUANTITY_OIL :{VOLUME_LONG} 原油 STR_QUANTITY_LIVESTOCK :{COMMA} 头牲畜 STR_QUANTITY_GOODS :{COMMA} 件货物 STR_QUANTITY_GRAIN :{WEIGHT_LONG} 谷物 STR_QUANTITY_WOOD :{WEIGHT_LONG} 木材 STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} 铁矿石 STR_QUANTITY_STEEL :{WEIGHT_LONG} 钢材 STR_QUANTITY_VALUABLES :{COMMA} 包贵重品 STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} 铜矿石 STR_QUANTITY_MAIZE :{WEIGHT_LONG} 玉米 STR_QUANTITY_FRUIT :{WEIGHT_LONG} 水果 STR_QUANTITY_DIAMONDS :{COMMA} 包钻石 STR_QUANTITY_FOOD :{WEIGHT_LONG} 食品 STR_QUANTITY_PAPER :{WEIGHT_LONG} 纸张 STR_QUANTITY_GOLD :{COMMA} 包黄金 STR_QUANTITY_WATER :{VOLUME_LONG} 饮用水 STR_QUANTITY_WHEAT :{WEIGHT_LONG} 小麦 STR_QUANTITY_RUBBER :{VOLUME_LONG} 橡胶 STR_QUANTITY_SUGAR :{WEIGHT_LONG} 蔗糖 STR_QUANTITY_TOYS :{COMMA} 件玩具 STR_QUANTITY_SWEETS :{COMMA} 包糖果 STR_QUANTITY_COLA :{VOLUME_LONG} 可乐 STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} 棉花糖 STR_QUANTITY_BUBBLES :{COMMA} 个泡泡 STR_QUANTITY_TOFFEE :{WEIGHT_LONG} 太妃糖 STR_QUANTITY_BATTERIES :{COMMA} 箱电池 STR_QUANTITY_PLASTIC :{VOLUME_LONG} 塑料 STR_QUANTITY_FIZZY_DRINKS :{COMMA} 瓶跳跳水 STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}客 STR_ABBREV_COAL :{TINY_FONT}煤 STR_ABBREV_MAIL :{TINY_FONT}邮 STR_ABBREV_OIL :{TINY_FONT}油 STR_ABBREV_LIVESTOCK :{TINY_FONT}畜 STR_ABBREV_GOODS :{TINY_FONT}货 STR_ABBREV_GRAIN :{TINY_FONT}谷 STR_ABBREV_WOOD :{TINY_FONT}木 STR_ABBREV_IRON_ORE :{TINY_FONT}铁 STR_ABBREV_STEEL :{TINY_FONT}钢 STR_ABBREV_VALUABLES :{TINY_FONT}贵 STR_ABBREV_COPPER_ORE :{TINY_FONT}铜 STR_ABBREV_MAIZE :{TINY_FONT}黍 STR_ABBREV_FRUIT :{TINY_FONT}果 STR_ABBREV_DIAMONDS :{TINY_FONT}钻 STR_ABBREV_FOOD :{TINY_FONT}食 STR_ABBREV_PAPER :{TINY_FONT}纸 STR_ABBREV_GOLD :{TINY_FONT}金 STR_ABBREV_WATER :{TINY_FONT}水 STR_ABBREV_WHEAT :{TINY_FONT}麦 STR_ABBREV_RUBBER :{TINY_FONT}胶 STR_ABBREV_SUGAR :{TINY_FONT}蔗 STR_ABBREV_TOYS :{TINY_FONT}玩 STR_ABBREV_SWEETS :{TINY_FONT}糖 STR_ABBREV_COLA :{TINY_FONT}可 STR_ABBREV_CANDYFLOSS :{TINY_FONT}棉 STR_ABBREV_BUBBLES :{TINY_FONT}泡 STR_ABBREV_TOFFEE :{TINY_FONT}太 STR_ABBREV_BATTERIES :{TINY_FONT}电 STR_ABBREV_PLASTIC :{TINY_FONT}塑 STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}跳 STR_ABBREV_NONE :{TINY_FONT}无 STR_ABBREV_ALL :{TINY_FONT}全 # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} 旅客 STR_BAGS :{COMMA} 包 STR_TONS :{COMMA} 英吨 STR_LITERS :{COMMA} 升 STR_ITEMS :{COMMA} 件 STR_CRATES :{COMMA} 件 # Colours, do not shuffle STR_COLOUR_DARK_BLUE :深蓝色 STR_COLOUR_PALE_GREEN :浅绿色 STR_COLOUR_PINK :粉红色 STR_COLOUR_YELLOW :明黄色 STR_COLOUR_RED :红 色 STR_COLOUR_LIGHT_BLUE :淡蓝色 STR_COLOUR_GREEN :绿 色 STR_COLOUR_DARK_GREEN :深绿色 STR_COLOUR_BLUE :蓝 色 STR_COLOUR_CREAM :奶油色 STR_COLOUR_MAUVE :深紫色 STR_COLOUR_PURPLE :紫 色 STR_COLOUR_ORANGE :橘黄色 STR_COLOUR_BROWN :棕 色 STR_COLOUR_GREY :浅灰色 STR_COLOUR_WHITE :白 色 # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} 英里/小时 STR_UNITS_VELOCITY_METRIC :{COMMA} 千米/小时 STR_UNITS_VELOCITY_SI :{COMMA} 米/秒 STR_UNITS_POWER_IMPERIAL :{COMMA} 马力 STR_UNITS_POWER_METRIC :{COMMA} 马力 STR_UNITS_POWER_SI :{COMMA} 千瓦 STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} 吨 STR_UNITS_WEIGHT_SHORT_SI :{COMMA} 千克 STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} 公吨 STR_UNITS_WEIGHT_LONG_SI :{COMMA} 千克 STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} 升 STR_UNITS_VOLUME_SHORT_SI :{COMMA} 立方米 STR_UNITS_VOLUME_LONG_METRIC :{COMMA} 升 STR_UNITS_VOLUME_LONG_SI :{COMMA} 立方米 STR_UNITS_FORCE_SI :{COMMA} 千牛顿 STR_UNITS_HEIGHT_IMPERIAL :{COMMA} 英呎 STR_UNITS_HEIGHT_SI :{COMMA} 公尺 # Common window strings STR_LIST_FILTER_TITLE :{BLACK}过滤字串: STR_LIST_FILTER_OSKTITLE :{BLACK}输入过滤器字符串 STR_LIST_FILTER_TOOLTIP :{BLACK}输入用以过滤此列表的关键词 STR_TOOLTIP_SORT_ORDER :{BLACK}选择排序方法 (降序/升序) STR_TOOLTIP_SORT_CRITERIA :{BLACK}选择排序标准 STR_TOOLTIP_FILTER_CRITERIA :{BLACK}选择过滤标准 STR_BUTTON_SORT_BY :{BLACK}排序 STR_BUTTON_LOCATION :{BLACK}定位 STR_BUTTON_RENAME :{BLACK}重命名 STR_TOOLTIP_CLOSE_WINDOW :{BLACK}关闭窗口 STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}窗口标题 - 拖动这里可以移动该窗口 STR_TOOLTIP_SHADE :{BLACK}阴影窗口 - 仅显示标题栏 STR_TOOLTIP_DEBUG :{BLACK}显示 NewGRF 纠错信息 STR_TOOLTIP_STICKY :{BLACK}锁定窗口 使用“关闭所有窗口”快捷键时保留此窗口 STR_TOOLTIP_RESIZE :{BLACK}点击并拖动这里可以缩放窗口 STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}切换窗口大小 STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 上下滚动列表 STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 左右滚动列表 STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}拆除地块上的建筑物等设施,按住Ctrl键选择对角线区域,按住Shift键操作只提示预计成本 # Query window STR_BUTTON_DEFAULT :{BLACK}默认 STR_BUTTON_CANCEL :{BLACK}取消 STR_BUTTON_OK :{BLACK}确定 # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}长度:{NUM} STR_MEASURE_AREA :{BLACK}面积:{NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}长度:{NUM}{}高度差:{HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}面积:{NUM} x {NUM}{}高度差:{HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}人口 STR_SORT_BY_CAPTION_NAME :{BLACK}名称 STR_SORT_BY_CAPTION_DATE :{BLACK}日期 # These are used in dropdowns STR_SORT_BY_NAME :名称 STR_SORT_BY_PRODUCTION :产量 STR_SORT_BY_TYPE :类型 STR_SORT_BY_TRANSPORTED :已运输 STR_SORT_BY_NUMBER :序号 STR_SORT_BY_PROFIT_LAST_YEAR :去年利润 STR_SORT_BY_PROFIT_THIS_YEAR :今年利润 STR_SORT_BY_AGE :年龄 STR_SORT_BY_RELIABILITY :可靠性 STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :每种货物的总装载能力 STR_SORT_BY_MAX_SPEED :最大速度 STR_SORT_BY_MODEL :型号 STR_SORT_BY_VALUE :价值 STR_SORT_BY_LENGTH :长度 STR_SORT_BY_LIFE_TIME :剩余寿命年限 STR_SORT_BY_TIMETABLE_DELAY :晚点 STR_SORT_BY_FACILITY :车站类型 STR_SORT_BY_WAITING :等待的货物数量 STR_SORT_BY_RATING_MAX :车站中最高的货物评价 STR_SORT_BY_RATING_MIN :车站中最低的货物评价 STR_SORT_BY_ENGINE_ID :引擎ID (默认方式) STR_SORT_BY_COST :售价 STR_SORT_BY_POWER :功率 STR_SORT_BY_TRACTIVE_EFFORT :牵引力 STR_SORT_BY_INTRO_DATE :面世日期 STR_SORT_BY_RUNNING_COST :运行费用 STR_SORT_BY_POWER_VS_RUNNING_COST :功率/运行费用 比值 STR_SORT_BY_CARGO_CAPACITY :运载能力 STR_SORT_BY_RANGE :航行距离 # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}暂停游戏 STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}快速游戏模式 STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}选项 STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}保存游戏、放弃游戏、退出 STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}显示地图、附加视点或标志列表 STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}显示城镇列表 STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}显示财政补贴 STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}显示公司所有的车站列表 STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}显示公司财务状况 STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}显示公司综合信息 STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}显示图表 STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}显示公司名次表 STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}建设新的工业设施 STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}显示公司的火车列表。按住 Ctrl 键单击可以切换组群和车辆列表。 STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}显示公司的汽车列表。按住 Ctrl 键单击可以切换组群和汽车列表。 STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}显示公司的船只列表。按住 Ctrl 键单击可以切换组群和船只列表。 STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}显示公司的飞机列表。按住 Ctrl 键单击可以切换组群和飞机列表。 STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}放大视图 STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}缩小视图 STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设铁路 STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}建设公路 STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}建设港口 STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}建设机场 STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}打开景观美化工具栏{}以修改地形、设置地貌等 STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}显示 声音/音乐 控制菜单 STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}显示最新消息新闻,消息选项,消息历史 STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}地块信息查询,控制台,脚本调试,截图,关于OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}切换工具栏 # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}保存场景,读取场景,放弃场景,退出 STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}场景编辑器 STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}将开始年份向前调整 1 年 STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}将开始年份向后调整 1 年 STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}点击输入开始年份 STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}显示地图和城镇列表 STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}生成地形 STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}生成城镇 STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}生成工业 STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}公路建设 STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}植树。Shift显示预计花费。 STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}放置标志 STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}放置物体,按住Shift键操作显示预计费用 ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :保存场景 STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :读取场景 STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :保存高度图 STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :读取高度图 STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :退出编辑器 STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :退出 ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :游戏选项 STR_SETTINGS_MENU_CONFIG_SETTINGS :高级设置 STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / 游戏脚本设定 STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF 设置 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透明选项 STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :显示城镇名称 STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :显示车站名称 STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :显示路点 STR_SETTINGS_MENU_SIGNS_DISPLAYED :显示标志 STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :显示其他公司放置的标志 STR_SETTINGS_MENU_FULL_ANIMATION :完全动画 STR_SETTINGS_MENU_FULL_DETAIL :完全细节 STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :透明建筑 STR_SETTINGS_MENU_TRANSPARENT_SIGNS :透明车站标志 ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :保存游戏 STR_FILE_MENU_LOAD_GAME :读取存档 STR_FILE_MENU_QUIT_GAME :放弃游戏 STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :退出 ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :缩略地图 STR_MAP_MENU_EXTRA_VIEW_PORT :额外视点 STR_MAP_MENU_SIGN_LIST :标志列表 ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :城镇列表 STR_TOWN_MENU_FOUND_TOWN :建立城镇 ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :财政补贴 STR_SUBSIDIES_MENU_GOAL :当前目标 ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :利润图表 STR_GRAPH_MENU_INCOME_GRAPH :收入图表 STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :运输货物图表 STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :公司评价图表 STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :公司市值图表 STR_GRAPH_MENU_CARGO_PAYMENT_RATES :货物运费图表 ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :公司评价排名 STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :公司评价明细 STR_GRAPH_MENU_HIGHSCORE :高分榜 ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :工业列表 STR_INDUSTRY_MENU_INDUSTRY_CHAIN :产业链 STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :新建工业设施 ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :铁路建设 STR_RAIL_MENU_ELRAIL_CONSTRUCTION :电气化铁路建设 STR_RAIL_MENU_MONORAIL_CONSTRUCTION :单轨铁路建设 STR_RAIL_MENU_MAGLEV_CONSTRUCTION :磁悬浮铁路建设 ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :道路建设 STR_ROAD_MENU_TRAM_CONSTRUCTION :电车建设 ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :水运建设 ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :机场建设 ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :景观美化 STR_LANDSCAPING_MENU_PLANT_TREES :植树 STR_LANDSCAPING_MENU_PLACE_SIGN :放置标志 ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :声音/音乐 ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :最新消息/新闻 STR_NEWS_MENU_MESSAGE_HISTORY_MENU :消息历史 ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :查询地块信息 STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :切换到控制台模式 STR_ABOUT_MENU_AI_DEBUG :AI /游戏脚本调试 STR_ABOUT_MENU_SCREENSHOT :屏幕截图 STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :高清截图 STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :默认缩放模式下的屏幕截图 STR_ABOUT_MENU_GIANT_SCREENSHOT :全地图截图 STR_ABOUT_MENU_ABOUT_OPENTTD :关于 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite 对齐 STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :切换边界框 STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :切换脏方块的颜色 ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1号 STR_ORDINAL_NUMBER_2ND :2号 STR_ORDINAL_NUMBER_3RD :3号 STR_ORDINAL_NUMBER_4TH :4号 STR_ORDINAL_NUMBER_5TH :5号 STR_ORDINAL_NUMBER_6TH :6号 STR_ORDINAL_NUMBER_7TH :7号 STR_ORDINAL_NUMBER_8TH :8号 STR_ORDINAL_NUMBER_9TH :9号 STR_ORDINAL_NUMBER_10TH :10号 STR_ORDINAL_NUMBER_11TH :11号 STR_ORDINAL_NUMBER_12TH :12号 STR_ORDINAL_NUMBER_13TH :13号 STR_ORDINAL_NUMBER_14TH :14号 STR_ORDINAL_NUMBER_15TH :15号 STR_ORDINAL_NUMBER_16TH :16号 STR_ORDINAL_NUMBER_17TH :17号 STR_ORDINAL_NUMBER_18TH :18号 STR_ORDINAL_NUMBER_19TH :19号 STR_ORDINAL_NUMBER_20TH :20号 STR_ORDINAL_NUMBER_21ST :21号 STR_ORDINAL_NUMBER_22ND :22号 STR_ORDINAL_NUMBER_23RD :23号 STR_ORDINAL_NUMBER_24TH :24号 STR_ORDINAL_NUMBER_25TH :25号 STR_ORDINAL_NUMBER_26TH :26号 STR_ORDINAL_NUMBER_27TH :27号 STR_ORDINAL_NUMBER_28TH :28号 STR_ORDINAL_NUMBER_29TH :29号 STR_ORDINAL_NUMBER_30TH :30号 STR_ORDINAL_NUMBER_31ST :31号 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :1月 STR_MONTH_ABBREV_FEB :2月 STR_MONTH_ABBREV_MAR :3月 STR_MONTH_ABBREV_APR :4月 STR_MONTH_ABBREV_MAY :5月 STR_MONTH_ABBREV_JUN :6月 STR_MONTH_ABBREV_JUL :7月 STR_MONTH_ABBREV_AUG :8月 STR_MONTH_ABBREV_SEP :9月 STR_MONTH_ABBREV_OCT :10月 STR_MONTH_ABBREV_NOV :11月 STR_MONTH_ABBREV_DEC :12月 STR_MONTH_JAN :1月 STR_MONTH_FEB :2月 STR_MONTH_MAR :3月 STR_MONTH_APR :4月 STR_MONTH_MAY :5月 STR_MONTH_JUN :6月 STR_MONTH_JUL :7月 STR_MONTH_AUG :8月 STR_MONTH_SEP :9月 STR_MONTH_OCT :10月 STR_MONTH_NOV :11月 STR_MONTH_DEC :12月 ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}索引 STR_GRAPH_KEY_TOOLTIP :{BLACK}显示图表的公司索引 STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}利润图表 STR_GRAPH_INCOME_CAPTION :{WHITE}收入图表 STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}运输的货物总数 STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}公司评价表现指数 (最大指数为1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}公司市值 STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}货物运输价格 STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}运输时间(天) STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}将 10 单位 (或 10,000 升) 货物运输 20 个方格 STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}全部启用 STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}全部禁用 STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}在货物运输价格表中显示所有货物 STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}在货物运费表中隐藏所有货物 STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}切换是否显示某种货物 STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}查看详细数据 # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}公司图表索引 STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}点击这里切换显示公司 # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}公司评价排名 STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :车库主管 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :线路经理 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :运输代理 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :运输总监 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :运输经理 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :首席执行官 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :公司董事 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :董事长 STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :运输大亨 # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}公司评价明细 STR_PERFORMANCE_DETAIL_KEY :{BLACK}详情 STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}查看该公司详情 ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}车船数量: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}站台数量: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}最小利润: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}最小收入: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}最大收入: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}运输总量: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}运输种类: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}现金: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}贷款: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}总表现值: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}上一年盈利的车船总数;包括火车、汽车、船只和飞机 STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}最近仍然使用的车站组件数量。车站的每个组件(火车站、公交站、机场)即使是连接成为一个车站,也会被独立计数。 STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}单一运输工具最低年利润(只计算使用两年以上的车辆、船只和飞机) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}在过去 12 个季度中{}利润最少的季度的现金收入 STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}在过去 12 个季度中{}利润最多的季度的现金收入 STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}在过去 4 个季度中运输的货物总数 STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}在上一个季度中运输的货物种类数 STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}银行中存款的数量 STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}向银行贷款的数量 STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}总的评价点数 # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}音乐点唱机 STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}全部 STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}旧风格 STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}新风格 STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy街头 STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}自定义1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}自定义2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}音乐音量 STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}音效音量 STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}音轨 STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}乐曲主题 STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}随机播放 STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}列表播放 STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}跳到上一首 STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}跳到下一首 STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}停止播放音乐 STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}开始播放音乐 STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}拖动滑块以调节音乐和音效的音量 STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}选择全部乐曲 STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}选择'旧的风格'音乐列表 STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}选择'新的风格'音乐列表 STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}选择'Ezy街头'风格的音乐列表 STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}选择'自定义1'(用户定义)的列表 STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}选择'自定义2'(用户定义)的列表 STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}开启/关闭 随机播放列表中的曲目 STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}打开音乐选单窗口 STR_ERROR_NO_SONGS :{WHITE}选择了没有歌曲的音乐组。不会播放歌曲。 # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}音乐选单 STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}全部音轨列表 STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}当前选用'{STRING}'列表 STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}清除 STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}清除当前列表中曲目{}(仅限自定义1或自定义2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}点击音乐曲目以加入当前播放列表{}(仅限自定义1或自定义2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}点击音乐曲目以从当前播放列表中删除{}(仅限自定义1或自定义2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}达到 {NUM} 的顶级公司! STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}在{NUM}年,公司表现值排名 STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :运输个体户 STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :运输代理商 STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :运输企业主 STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :运输资本家 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :运输行业巨子 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :运输行业领袖 STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :世纪大亨 STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} 达到 '{STRING}' 的状态! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} 在 {COMPANY} 达到 '{STRING}' 状态! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}地图 - {STRING} STR_SMALLMAP_TYPE_CONTOURS :地形 STR_SMALLMAP_TYPE_VEHICLES :车辆 STR_SMALLMAP_TYPE_INDUSTRIES :工业 STR_SMALLMAP_TYPE_ROUTES :路线 STR_SMALLMAP_TYPE_VEGETATION :植被 STR_SMALLMAP_TYPE_OWNERS :所有者 STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}在地图上显示等高线 STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}在地图上显示车辆 STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}在地图上显示工业 STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}在地图上显示运输路线 STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}在地图上显示植被分布 STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}在地图上显示各公司所属 STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}点击一种工业类型以显示. Ctrl+左击 只显示该工业类型. 再度 Ctrl+左击 显示所有工业类型 STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}点击一个公司以显示. Ctrl+左击只显示该公司. 再次Ctrl+左击显示所有公司. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}公路 STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}铁路 STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}车站/机场/码头 STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}建筑物/工业 STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}车辆 STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}火车 STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}汽车 STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}船只 STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}飞机 STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}运输路线 STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}森林 STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}火车站 STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}汽车货场 STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}公共汽车站 STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}机场/直升机平台 STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}码头 STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}荒地 STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}草地 STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}土地 STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}田地 STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}树木 STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}岩石 STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}水面 STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}无主地块 STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}城镇 STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}工业 STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}沙漠 STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}雪地 STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}切换是否显示城镇名称 STR_SMALLMAP_CENTER :{BLACK}在地图中心点显示当前位置 STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}全部禁用 STR_SMALLMAP_ENABLE_ALL :{BLACK}全部启用 STR_SMALLMAP_SHOW_HEIGHT :{BLACK}显示高度 STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}在地图上不显示工业设施 STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}在地图上显示所有工业设施 STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}切换高度图显示 STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}在地图上不显示任何公司 STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}在地图上显示所有公司 # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}显示最后一条消息或新闻 STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * 暂停中 * * STR_STATUSBAR_AUTOSAVE :{RED}自动保存 STR_STATUSBAR_SAVING_GAME :{RED}* * 保存游戏中 * * # News message history STR_MESSAGE_HISTORY :{WHITE}消息历史 STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}最新的新闻列表 STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}消息 STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一列火车抵达 {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一辆巴士抵达 {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一辆货车抵达 {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}市民欢庆~. . .{}首辆客运电车抵达 {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}市民欢庆~. . .{}首辆货运电车抵达 {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一艘船抵达 {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}市民举行庆祝仪式……{}第一架飞机到达 {STATION} ! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}列车相撞!{}{COMMA} 人在爆炸中丧生 STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}汽车事故!{}汽车与火车相撞,司机在事故中丧生! STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}汽车事故!{}汽车与火车相撞,{COMMA} 人在事故中丧生! STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}飞机坠毁!{}{COMMA} 人在 {STATION} 的事故中罹难! STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}飞机坠毁!{}燃油不足,{COMMA} 人在事故中罹难! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}齐柏林飞艇在 {STATION} 失事! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}汽车被 'UFO' 炸毁! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}在 {TOWN} 附近的炼油厂泄漏! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}在 {TOWN} 附近的工厂神秘被毁! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' 在 {TOWN} 附近降落! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}在 {TOWN} 附近的煤矿发生塌方! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}洪水!{}至少 {COMMA} 人失踪,据推测凶多吉少! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}运输公司陷入困境! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 如果不能在短期摆脱困境,{}则将被收购或破产! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}运输公司合并! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 被 {STRING} 以 {CURRENCY_LONG} 收购! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}破产! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 已经宣布破产,所有资产均已抵债! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}新的运输公司开业大吉! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} 在 {TOWN} 附近开工建设! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} 被 {STRING} 收购! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(总裁) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} 赞助了城镇 {TOWN} 的建设! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}新 {STRING} 正在 {TOWN} 加紧建设! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}新 {STRING} 即将落户 {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} 即将倒闭! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} 没有原料供应,即将倒闭! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} 周围没有可用的木材,即将倒闭! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}欧元区成立!{}{}欧元将作为您公司的作为唯一货币! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}大萧条!{}{}金融专家预测世界经济将全面倒退! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}大萧条结束!{}{}贸易复苏带动经济全面启动! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} 产量增加! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY} 发现新的煤炭!{}产量即将翻番! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY} 发现新的石油!{}产量即将翻番! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} 耕种方法改良!{}产量即将翻番! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}的{0:STRING}产量上升了{2:COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} 产量降低 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} 虫害肆虐!{}产量降低 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY}的{0:STRING}产量下降了{2:COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} 正在车库待命 STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} 正在车库待命 STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} 正在船坞待命 STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} 正在机库待命 # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} 的调度计划太少 STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE}的调度计划中有无效调度命令 STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} 有重复调度命令 STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE}的调度计划有无效的车站 # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} 即将达到报废年限 STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} 已经达到报废年限 STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} 已经达到报废年限,必须马上更新! STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} 无法找到道路 STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} 无法找到路线. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}去年的利润为 {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} 由于航程过远,航班无法到达。 STR_NEWS_ORDER_REFIT_FAILED :{WHITE}适配调度计划失败,已终止 {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}无法自动更新 {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}新 {STRING} 上市了! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}新 {STRING} 上市了! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} 将不再接受 {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} 将不再接受 {STRING} 和 {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} 开始接受 {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} 开始接受 {STRING} 和 {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}财政补贴项目到期:{}{}将 {STRING} 从 {STRING} 运送到 {STRING} 将不再获得财政补贴。 STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}财政补贴项目流标:{}{}将 {STRING} 从 {STRING} 运送到 {STRING} 将不是财政补贴项目。 STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}财政补贴项目招标:{}{}第一个将 {STRING} 从 {STRING} 运送到 {STRING} 的公司将获得地方政府为期一年的财政补贴! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后一年中将 {STRING} 从 {STRING} 运送到 {STRING} 将获得 50% 的额外报酬! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后一年中将 {STRING} 从 {STRING} 运送到 {STRING} 将获得双倍的报酬! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后一年中将 {STRING} 从 {STRING} 运送到 {STRING} 将获得三倍的报酬! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} 获得财政补贴!{}{}今后一年中将 {STRING} 从 {STRING} 运送到 {STRING} 将获得四倍的报酬! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN}的交通陷入混乱!{}{}由 {STRING} 资助的市政道路重建导致市内交通瘫痪 6 个月! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}垄断运输! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN}一年期的运输专营权已经被{STRING}购买! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}视点 {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}复制到视点 STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}将额外视点移动到屏幕中心的位置 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}移动到视点 STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}将屏幕中心移动到额外视点的位置 # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}游戏选项 STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}货币单位 STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}货币单位选择 ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :英镑 (£) STR_GAME_OPTIONS_CURRENCY_USD :美元 ($) STR_GAME_OPTIONS_CURRENCY_EUR :欧元 (€) STR_GAME_OPTIONS_CURRENCY_JPY :日元 (¥) STR_GAME_OPTIONS_CURRENCY_ATS :澳大利亚先令 (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :比利时法郎 (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :瑞士法郎 (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :捷克克朗 (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :德国马克 (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :丹麦克朗 (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :西班牙比赛塔 (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :芬兰马克 (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :法郎 (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :希腊德拉克马 (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :匈牙利福林 (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :冰岛克朗 (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :意大利里拉 (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :荷兰盾 (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :挪威克朗 (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :波兰兹罗提 (PLN) STR_GAME_OPTIONS_CURRENCY_RON :罗马尼亚列伊 (RON) STR_GAME_OPTIONS_CURRENCY_RUR :卢布 (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :斯洛文尼亚托拉捷夫 (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :瑞典克朗 (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :土耳其里拉 (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :斯洛伐克克朗 (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :巴西里亚伊 (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :爱沙尼亚克鲁恩 (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :立陶宛立特(LTL) STR_GAME_OPTIONS_CURRENCY_KRW :韩元(KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :南非兰特(ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :自定义… ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}度量单位 STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}度量单位选择 ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :英制 STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :公制 STR_GAME_OPTIONS_MEASURING_UNITS_SI :国际单位制 ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}汽车行驶 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}选择汽车行驶的方向 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :左侧通行 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :右侧通行 STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}城镇名称 STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}选择城镇名称的命名风格 ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :英国 (原始的) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :法国 STR_GAME_OPTIONS_TOWN_NAME_GERMAN :德国 STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :英国 (增强的) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :美式拉丁 STR_GAME_OPTIONS_TOWN_NAME_SILLY :搞笑地名 STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :瑞典 STR_GAME_OPTIONS_TOWN_NAME_DUTCH :荷兰 STR_GAME_OPTIONS_TOWN_NAME_FINNISH :芬兰 STR_GAME_OPTIONS_TOWN_NAME_POLISH :波兰 STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :斯洛伐克 STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :挪威 STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :匈牙利 STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :澳大利亚 STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :罗马尼亚 STR_GAME_OPTIONS_TOWN_NAME_CZECH :捷克 STR_GAME_OPTIONS_TOWN_NAME_SWISS :瑞士 STR_GAME_OPTIONS_TOWN_NAME_DANISH :丹麦 STR_GAME_OPTIONS_TOWN_NAME_TURKISH :土耳其 STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :意大利 STR_GAME_OPTIONS_TOWN_NAME_CATALAN :加泰罗尼亚 ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}自动保存 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}选择自动保存的周期 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :关闭 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :每月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :每 3 个月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :每 6 个月 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :每 12 个月 STR_GAME_OPTIONS_LANGUAGE :{BLACK}语言 STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}选择界面语言 STR_GAME_OPTIONS_FULLSCREEN :{BLACK}全屏幕 STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}选择此项可以在全屏幕模式下进行 OpenTTD 游戏 STR_GAME_OPTIONS_RESOLUTION :{BLACK}屏幕分辨率 STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}选择要使用的屏幕分辨率 STR_GAME_OPTIONS_RESOLUTION_OTHER :其他 STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}屏幕截图类型 STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}选择屏幕截图类型 STR_GAME_OPTIONS_BASE_GRF :{BLACK}基础图形组 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}选择要使用的基础图形组 STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 文件{}未找到或不正确 STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}关于基本图组的额外信息 STR_GAME_OPTIONS_BASE_SFX :{BLACK}基础音效组 STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}选择要使用的基础音效组 STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}有关基础音效组的附加信息 STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基础音乐组 STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}选择要使用的基础音乐组 STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} 文件已损坏 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}有关基础音乐组的附加信息 STR_ERROR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式{}尝试使用不同的分辨率 # Custom currency window STR_CURRENCY_WINDOW :{WHITE}自定义货币 STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}兑换汇率: {ORANGE}{CURRENCY_LONG} = {COMMA} 英镑(£) STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}减少英磅(£)兑换自定义货币的数量 STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}增加英磅(£)兑换自定义货币的数量 STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}设置自定义货币与英磅(£)的兑换比率 STR_CURRENCY_SEPARATOR :{LTBLUE}分隔符: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}设置千位分隔符 STR_CURRENCY_PREFIX :{LTBLUE}前缀: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}设置自定义货币的首字 STR_CURRENCY_SUFFIX :{LTBLUE}后缀: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}设置自定义货币的尾字 STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}转换为欧元: {ORANGE}{NUM} 年后 STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}转换为欧元: {ORANGE}不转换 STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}设置转换为欧元货币的起始年份 STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}提早转换为欧元货币的起始年份 STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}延后转换为欧元货币的起始年份 STR_CURRENCY_PREVIEW :{LTBLUE}预览:{ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 英磅(£) 兑换自定义货币的数量 STR_CURRENCY_CHANGE_PARAMETER :{BLACK}改变当前的货币参数 STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}最大竞争对手个数:{ORANGE}{COMMA} STR_NONE :没有 STR_FUNDING_ONLY :不生成 STR_MINIMAL :每种仅一个 STR_NUM_VERY_LOW :非常低 STR_NUM_LOW :低 STR_NUM_NORMAL :一般 STR_NUM_HIGH :高 STR_NUM_CUSTOM :自定义 STR_NUM_CUSTOM_NUMBER :自定义 ({NUM}) STR_VARIETY_NONE :无 STR_VARIETY_VERY_LOW :非常低 STR_VARIETY_LOW :低 STR_VARIETY_MEDIUM :中 STR_VARIETY_HIGH :高 STR_VARIETY_VERY_HIGH :非常高 STR_AI_SPEED_VERY_SLOW :非常慢 STR_AI_SPEED_SLOW :慢 STR_AI_SPEED_MEDIUM :适中 STR_AI_SPEED_FAST :快 STR_AI_SPEED_VERY_FAST :非常快 STR_SEA_LEVEL_VERY_LOW :非常低 STR_SEA_LEVEL_LOW :低 STR_SEA_LEVEL_MEDIUM :适中 STR_SEA_LEVEL_HIGH :高 STR_SEA_LEVEL_CUSTOM :自定义 STR_SEA_LEVEL_CUSTOM_PERCENTAGE :自定义 ({NUM}%) STR_RIVERS_NONE :没有 STR_RIVERS_FEW :较少 STR_RIVERS_MODERATE :一些 STR_RIVERS_LOT :布满 STR_DISASTER_NONE :没有 STR_DISASTER_REDUCED :较少 STR_DISASTER_NORMAL :正常 STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :非常平整 STR_TERRAIN_TYPE_FLAT :平整 STR_TERRAIN_TYPE_HILLY :丘陵 STR_TERRAIN_TYPE_MOUNTAINOUS :山地 STR_CITY_APPROVAL_PERMISSIVE :宽容 STR_CITY_APPROVAL_TOLERANT :隐忍 STR_CITY_APPROVAL_HOSTILE :对立 STR_WARNING_NO_SUITABLE_AI :{WHITE}无合适的 AI 可用...{}你可以在线下载各种 AI 。 # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}高级设置 STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}关键字过滤: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}展开全部 STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}关闭全部 STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(没有可用的提示) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}默认值: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}设置类型: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :当前客户端设置(不保存,影响所有游戏) STR_CONFIG_SETTING_TYPE_GAME_MENU :当前游戏设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_GAME_INGAME :当前游戏设置(可保存在存档中,仅对当前游戏生效) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :当前公司设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :当前公司设置(可保存在存档中,仅对现行公司生效) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}显示: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}仅显示修改过的选项 STR_CONFIG_SETTING_RESTRICT_BASIC :基础设置 STR_CONFIG_SETTING_RESTRICT_ADVANCED :高级设置 STR_CONFIG_SETTING_RESTRICT_ALL :高级设置/全部设置 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :修改默认值 STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :设置一个与当前游戏设置不同的值 STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}限定某一类设置显示在下面列表中 STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :所有设置种类 STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :客户端设置(不保存在存档中,影响所有游戏) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :当前游戏设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :当前游戏设置(可保存在存档中,仅对当前游戏生效) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :当前公司设置(可保存在存档中,仅对新游戏生效) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :当前公司设置(可保存在存档中,仅对当前公司生效) STR_CONFIG_SETTING_OFF :关闭 STR_CONFIG_SETTING_ON :打开 STR_CONFIG_SETTING_DISABLED :禁用 STR_CONFIG_SETTING_COMPANIES_OFF :关闭 STR_CONFIG_SETTING_COMPANIES_OWN :玩家公司 STR_CONFIG_SETTING_COMPANIES_ALL :全部公司 STR_CONFIG_SETTING_NONE :无 STR_CONFIG_SETTING_ORIGINAL :原版 STR_CONFIG_SETTING_REALISTIC :真实 STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :左侧 STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :中央 STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :右侧 STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :最大初始贷款: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :公司最大贷款额(不考虑通货膨胀的影响) STR_CONFIG_SETTING_INTEREST_RATE :贷款利率: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :贷款利率;如果通货膨胀启用,将同时影响通货膨胀率。 STR_CONFIG_SETTING_RUNNING_COSTS :运营费用: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :设置维护费用、运营费用的难度 STR_CONFIG_SETTING_CONSTRUCTION_SPEED :建设速度: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AI建设频率的上限 STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :车辆损坏: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :设置运输工具故障率 STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :补贴系数: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :设置线路补贴额度 STR_CONFIG_SETTING_CONSTRUCTION_COSTS :建设费用: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :设置建设费用和交易费用难度 STR_CONFIG_SETTING_RECESSIONS :经济衰退: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :启用后,经济衰退将每隔几年就出现。在衰退期内,所有产出将大幅下降直至衰退结束。 STR_CONFIG_SETTING_TRAIN_REVERSING :禁止列车在站台调头: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :启用后,如果列车有到下一站的捷径,列车将不在非终点站台调头, STR_CONFIG_SETTING_DISASTERS :灾难: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :灾难可能引起堵车或者车祸或者建筑损毁。 STR_CONFIG_SETTING_CITY_APPROVAL :地区政府对区域改造的态度: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :设置相关参数以决定各公司造成的噪音及环境破坏时,各城镇对该公司的评价及未来区域建设的影响。 STR_CONFIG_SETTING_BUILDONSLOPES :允许在斜坡和河岸上建设:{STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :启用时轨道和站台能够建造在斜坡上,禁止时只能建设与斜坡方向相同的轨道,因而不需要改变地形 STR_CONFIG_SETTING_AUTOSLOPE :允许在建筑、轨道等下方改变地形(自动斜坡): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :允许在建筑和轨道下方改变地形而不需要拆除他们 STR_CONFIG_SETTING_CATCHMENT :允许更真实的客源范围:{STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :启用时不同类型的车站和机场有不同的客源范围 STR_CONFIG_SETTING_EXTRADYNAMITE :允许拆除更多的由城镇所有的公路、桥梁、隧道等:{STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :启用时更容易拆除城市自有的设施和建筑 STR_CONFIG_SETTING_TRAIN_LENGTH :火车的最大长度:{STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :设置火车的最大长度 STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} 格 STR_CONFIG_SETTING_SMOKE_AMOUNT :火车头产生的蒸气/火花数量: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :设置由火车头产生的蒸汽或者火花数量 STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :列车加速度: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :选择列车加速度模型,选“原版”时斜坡对所有列车影响相同,“真实”时影响因素包括斜坡长度、转弯半径、牵引力等 STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :汽车加速模型: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :选择汽车加速度模型,选“原版”时斜坡对所有汽车影响相同,选“真实”时依赖引擎性能,比如“牵引力” STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :斜坡对火车的影响率:{STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :每一格斜坡对火车速度的影响率,数值越大,火车越难爬上山 STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :斜坡对汽车速度影响率: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :每一格斜坡对汽车速度的影响率,数值越大,汽车越难爬上山 STR_CONFIG_SETTING_FORBID_90_DEG :禁止列车和轮船 90 度转弯:{STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :当水平方向轨道与垂直方向轨道交叉时,没有采用45度的轨道组合连接,而是采用轨道90度直接连接时,列车通过时需要90度转弯,当本设置”打开“时,将禁止火车90度转弯,本设置同样影响船只转弯时的航线。 STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :允许非毗邻站台合并:{STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :“打开”时允许为已经存在的车站添加不相邻的站台,建造新的部分时需要按住Ctrl键 STR_CONFIG_SETTING_IMPROVEDLOAD :使用进阶的装货算法:{STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :“打开”时,多辆车在一个车站依次排队装货,只有当货物足够装满第一列车时才同时为下一列车装货 STR_CONFIG_SETTING_GRADUAL_LOADING :装货时循序渐进:{STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :根据车辆的特定装货时间来逐渐装货, 而不要根据货物量在一定时间内一次装满全部货物 STR_CONFIG_SETTING_INFLATION :通货膨胀:{STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :“打开”通货膨胀时,支出比收入增长得稍快 STR_CONFIG_SETTING_SELECTGOODS :仅在车站接受此货物时卸货:{STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :“打开”时只有车站接收此货物时才卸载 STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :桥梁的最大长度: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :建设桥梁时允许的最大长度 STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :隧道最大长度: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :建设隧道时允许的最大长度 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :原料工业建设方式: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :建立重工业企业的的设定. '禁止'表示不能建立; '勘探'表示可以建立但是只能在地图上一随机处, 并可能会失败; '像别的工业一样'表示采矿业也能像其它加工业那样可以随意在任何地方建立. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :不允许 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :同其他工业 STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探矿式 STR_CONFIG_SETTING_INDUSTRY_PLATFORM :工厂周边空闲区域: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :设置工厂周边预留区域数量,这些预留区域用来建设铁路及其它 STR_CONFIG_SETTING_MULTIPINDTOWN :允许在一个城镇中建设多个同类工业设施:{STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :通常,城市不希望有多个相同类型工业,本设置“打开”时允许多个同类型工厂在同一个城市 STR_CONFIG_SETTING_SIGNALSIDE :显示信号灯:{STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :选择在铁路哪一边放置信号灯 STR_CONFIG_SETTING_SIGNALSIDE_LEFT :在左边 STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :在前进方向 STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :在右侧 STR_CONFIG_SETTING_SHOWFINANCES :在年终显示财务报表:{STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :“打开”时,在年底显示财务报表窗口,方便查看公司财务状况 STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :新的调度命令默认为“不停车”: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :通常,车辆在它经过的每一个车站都会停车。“打开”本选项时,车辆会不停车的通过所有中间车站前往最终目的地。注意:这只是为每一条新调度命令设置一个默认信息,仍然可以为每条调度命令设置明确的信息 STR_CONFIG_SETTING_STOP_LOCATION :新列车调度计划中默认命令为停靠车站月台 {STRING} 位置 STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :设置车辆在站台的默认停靠位置,“近端”是靠近车辆进入月台的那一端,“中间”是月台中间位置,“远端”是原理车辆进入月台的那一端 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :近端 STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :中间 STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :远端 STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :汽车自动排队 (有量子效应): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :“打开”时汽车在堵车的道路上排队等候,直到道路畅通 STR_CONFIG_SETTING_AUTOSCROLL :当鼠标移动到屏幕边缘时移动屏幕:{STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :启用后,鼠标移动到视点窗口边缘时,视点窗口自动滚动 STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :禁用 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :主视点,仅全屏模式 STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :主视点 STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :每个视角 STR_CONFIG_SETTING_BRIBE :允许贿赂地方政府:{STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :“打开”时,允许贿赂地方政府,如果被发现,在该城市将被限制经营活动六个月 STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :允许买断经营权: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :如果一家公司购买了城市独家经营权,其它公司的站台将在一年之内不再产生乘客或者货物。 STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :允许新建房屋: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :“打开”时,允许公司提供资助新建房屋 STR_CONFIG_SETTING_ALLOW_FUND_ROAD :允许使用资助地方道路修整功能: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :“打开”时,允许公司资助地方修整道路 STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :允许向其他公司转移资金: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :“打开”时,允许联机游戏模式下公司之间转移资金 STR_CONFIG_SETTING_FREIGHT_TRAINS :根据装载货物的数量模拟超重列车:{STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :设置载重量对火车的影响效果,高一些的数值会使火车对载重量更敏感,尤其是爬坡时 STR_CONFIG_SETTING_PLANE_SPEED :飞机速度因子:{STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :设置飞机与其它车辆类型的相对速率,使飞机运输收入减少 STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :空难: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :设置空难发生的概率 STR_CONFIG_SETTING_PLANE_CRASHES_NONE :不出现 STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :较少出现 STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :正常 STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :允许在城镇所属的道路上建通过式车站: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :“打开”时允许在城市所属的道路上建设通过式车站 STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :允许在竞争对手所属的道路上建通过式车站: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :“打开”时,允许在其它公司所属的道路上建设通过式车站 STR_CONFIG_SETTING_ADJACENT_STATIONS :允许建设临近站台: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :“打开”时,允许不同车站相邻 STR_CONFIG_SETTING_DYNAMIC_ENGINES :允许使用多GRF运输工具: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :为旧版本的NewGRF准备的兼容性选项,不要禁止本选项,除非你明白你在做什么! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}当有车辆时,不可能更改此设定。 STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :加强版固定资产维护: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :固定资产会发生维护费用,“打开”本选项时,维护费用的增长会超过交通网络的增长规模,因而,对大公司影响更大。 STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :总允许建设小型机场: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :“打开”此选项,每种类型机场出现后一直是可用的 STR_CONFIG_SETTING_WARN_LOST_VEHICLE :当列车无法找到路线时提示: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :“打开”时,当车辆无法找到路径时给出提示 STR_CONFIG_SETTING_ORDER_REVIEW :检查车辆的调度计划:{STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :启用时,相应类型车辆的调度计划会定期检查,发现的问题会以新闻的形式报告 STR_CONFIG_SETTING_ORDER_REVIEW_OFF :不检查 STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :检查 不包括停运的车辆 STR_CONFIG_SETTING_ORDER_REVIEW_ON :检查 所有车辆 STR_CONFIG_SETTING_WARN_INCOME_LESS :若线路亏损时发出提示: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :“打开”,当一辆车在一年内总体亏损,发出提示 STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :车辆永不报废:{STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :“打开”时,所有的车辆在它出现后一直可用 STR_CONFIG_SETTING_AUTORENEW_VEHICLE :当车辆报废时自动更新:{STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :“打开”时,车辆在临近它的报废期限时自动更新 STR_CONFIG_SETTING_AUTORENEW_MONTHS :当车辆还有 {STRING} 到达最大年限时自动更新 STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :设置车辆自动更新的时间 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} 个月前 STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} 个月后 STR_CONFIG_SETTING_AUTORENEW_MONEY :启动自动更新需要的最少现金:{STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :启动自动更新车辆时需要保留的最少现金 STR_CONFIG_SETTING_ERRMSG_DURATION :错误信息持续时间{STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :红色窗口显示错误信息的持续时间,在这个时间内一些紧急的错误信息不会自动关闭,必须手动关闭 STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} 秒 STR_CONFIG_SETTING_HOVER_DELAY :显示提示信息:{STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :设置当鼠标停留在某些界面时显示相应提示信息的延迟时间 STR_CONFIG_SETTING_HOVER_DELAY_VALUE :停留{COMMA} 秒 STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :右键点击 STR_CONFIG_SETTING_POPULATION_IN_LABEL :在城镇名称的标签中同时显示人口:{STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :在地图城镇名称标签上显示人口数量 STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :图表曲线宽度: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :图表中曲线的宽度,细线清晰易读,粗线容易分辨颜色 STR_CONFIG_SETTING_LAND_GENERATOR :生成地形:{STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :原始算法 STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :新算法 STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :炼油厂距地图边缘的最大距离:{STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :炼油厂只能在地图边缘建设或者海岛海岸。 STR_CONFIG_SETTING_SNOWLINE_HEIGHT :雪线高度:{STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :地面粗糙度 (仅限 TerraGenesis):{STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :非常光滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :光滑 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :粗糙 STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :非常粗糙 STR_CONFIG_SETTING_TREE_PLACER :森林算法:{STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :没有 STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :原始的 STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :增强的 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :高度图旋转:{STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :逆时针 STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :顺时针 STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :由水面场景得到的高度:{STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :允许调整地图边缘的地块地形:{STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :禁用后,地图边缘将变成海洋 STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}一个或多个北边的地块不是闲置的 STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}一个或多个地图某边的地块不是水域 STR_CONFIG_SETTING_STATION_SPREAD :车站最大占地: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :设置车站最大占地面积,注意:太大影响游戏速度 STR_CONFIG_SETTING_SERVICEATHELIPAD :直升机在降落平台自动保养:{STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :直升飞机在降落平台自动保养,即使机场没有机库 STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :将景观美化工具栏与铁路/公路/船只/机场工具栏连接:{STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :“打开”时,在打开交通建设工具栏时同时打开景观美化工具栏 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :缩略地图颜色选择: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :设置缩略地图的颜色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :绿色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :深绿色 STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :紫色 STR_CONFIG_SETTING_REVERSE_SCROLLING :拖动方向与屏幕移动方向相反:{STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :设置按下鼠标右键拖动时地图移动的方向,“关闭”鼠标拖动摄像机,“打开”时鼠标拖动地图。 STR_CONFIG_SETTING_SMOOTH_SCROLLING :平滑视角滚动: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :设置在缩略图上点击或者发出转到特定目标的命令时主视角的转换方式,如果“打开”本选项,视角平缓滚动,“关闭”时直接跳转到目标位置 STR_CONFIG_SETTING_MEASURE_TOOLTIP :建设时显示测量数据:{STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :建设时显示距离格数和地形高差 STR_CONFIG_SETTING_LIVERIES :显示公司特别外观:{STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :本选项控制车辆特殊涂装方案的用法(让公司与众不同) STR_CONFIG_SETTING_LIVERIES_NONE :不显示 STR_CONFIG_SETTING_LIVERIES_OWN :本公司 STR_CONFIG_SETTING_LIVERIES_ALL :所有公司 STR_CONFIG_SETTING_PREFER_TEAMCHAT :使用与团队交谈:{STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :切换公司内部谈话和公开谈话为 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :鼠标滚轮的作用:{STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :可用二维鼠标滚轮进行屏幕滚动 STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :缩放地图 STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :滚动地图 STR_CONFIG_SETTING_SCROLLWHEEL_OFF :关闭 STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :地图滚动速度:{STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :本选项控制鼠标滚轮灵敏度 STR_CONFIG_SETTING_OSK_ACTIVATION :开启屏幕键盘: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :当输入文本或编辑框里是否使用屏幕键盘。适用于没有物理键盘的设备。 STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :禁止 STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :双击 STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :单击(当前焦点) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :单击 (立即) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :右键模拟: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :选择模拟鼠标右键的方式 STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :按住Command键 点击 STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :按住Ctrl键 点击 STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :关闭 STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :左击滚动: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :可用按住鼠标左键再拖拉的方法来进行屏幕滚动. 这对于触摸屏设备特别有用 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :使用 {STRING} 形式的文件名存档 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :游戏存档文件名中日期的格式 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :完整时间 (2008年12月31日) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :英式时间 (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :简短形式 (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :当NewGRF没有指定调色板时,使用: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :设置当NewGRF没有指定时的默认调色板 STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :默认使用 (D) 色板 STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :旧有 (W) 色板 STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :开始新游戏时自动暂停: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :“打开”时,为了让玩家有时间研究地图,开启新游戏自动暂停游戏 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :暂停时允许: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :选择游戏暂停时可以进行哪些操作 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :没有操作 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :除建设面板外全部操作 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :除景观面板操作外全部操作 STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :所有操作 STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :使用高级车辆列表: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :允许使用高级车辆列表,方便进行车辆分组操作 STR_CONFIG_SETTING_LOADING_INDICATORS :使用装货进度指示: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :选择是否在车辆上方显示装卸货物进度 STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :使用时间标记而不是天为单位: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :时间表以ticks而不是天显示。 STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :在时刻表中显示到达时间和出发时间: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :在时刻表中显示预期的到达和出发时间 STR_CONFIG_SETTING_QUICKGOTO :快速创建车辆调度计划:{STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :启用时,打开调度计划窗口时预先选定“前往”命令 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :默认铁路类型 (新建/读取游戏后): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :设置开启或者载入游戏时的默认铁路类型,“第一可用的”是最老的铁路类型,“最后一个可用”的是最新的铁路类型,“最常用的”是当前用的最多的铁路类型 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :第一个可用的 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :第后一个可用的 STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :最常用的 STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :显示预留的轨道: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :让预留的铁路轨道显示不同的颜色,以帮助查找列车拒绝进入路径轨道的原因 STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :建造工具使用后仍选中: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :“打开”时在桥梁、隧道等建造工具使用后保持选中,方便继续使用 STR_CONFIG_SETTING_EXPENSES_LAYOUT :企业财政窗口中的组群支出:{STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :“打开”时公司财务报表将分组显示 STR_CONFIG_SETTING_SOUND_TICKER :产业新闻: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :每月初产业新闻音效 STR_CONFIG_SETTING_SOUND_NEWS :报纸: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :显示报纸时的音效 STR_CONFIG_SETTING_SOUND_NEW_YEAR :年终: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :在年末弹出报表时,播放相应音效 STR_CONFIG_SETTING_SOUND_CONFIRM :建设: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :播放成功建设或执行其它动作时的音效 STR_CONFIG_SETTING_SOUND_CLICK :点击按钮: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :按一下按钮时发出蜂鸣声 STR_CONFIG_SETTING_SOUND_DISASTER :灾难/事故: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :播放灾难和事故音效 STR_CONFIG_SETTING_SOUND_VEHICLE :运输工具: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :播放运输工具音效 STR_CONFIG_SETTING_SOUND_AMBIENT :音效:{STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :播放与地貌、工业设施和城镇有关的环境音效 STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :不显示没有对应车辆的轨道建设面板: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :启用时,将不会显示没有对应车辆的建设面板,避免浪费时间和资金在无用的建设上 STR_CONFIG_SETTING_MAX_TRAINS :每间公司最大火车数量:{STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :每间公司最多能够拥有的火车数量 STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :每间公司最大汽车数量:{STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :每间公司最多能够拥有的汽车数量 STR_CONFIG_SETTING_MAX_AIRCRAFT :每间公司最大飞机数量:{STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :每间公司最多能够拥有的飞机数量 STR_CONFIG_SETTING_MAX_SHIPS :每间公司最大船只数量:{STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :每间公司最多能够拥有的船只数量 STR_CONFIG_SETTING_AI_BUILDS_TRAINS :禁止电脑使用火车:{STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :“打开”本选项将禁止电脑使用火车 STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :禁止电脑使用汽车:{STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :“打开”本选项将禁止电脑使用汽车 STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :禁止电脑使用飞机:{STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :“打开”本选项将禁止电脑使用飞机 STR_CONFIG_SETTING_AI_BUILDS_SHIPS :禁止电脑使用船只:{STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :“打开”本选项将禁止电脑使用船只 STR_CONFIG_SETTING_AI_PROFILE :默认设置属性: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :设置随机添加AI或脚本时的AI初始属性。 STR_CONFIG_SETTING_AI_PROFILE_EASY :简单 STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :中等 STR_CONFIG_SETTING_AI_PROFILE_HARD :困难 STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :联机游戏时允许电脑玩家(AI): {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :“打开”时联机游戏允许电脑玩家 STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :可允许的最大的代码量(如超过则会令脚本被禁用):{STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :脚本在一个回合中可进行计算步数的最大值 STR_CONFIG_SETTING_SERVINT_ISPERCENT :保养周期(百分数): {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :选择触发车辆保养的条件,距离上一次保养的时间或者与最高可靠性的百分比 STR_CONFIG_SETTING_SERVINT_TRAINS :火车默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :如果没有为火车直接指定保养周期,设定默认火车保养周期 STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}天(%) STR_CONFIG_SETTING_SERVINT_DISABLED :关闭 STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :汽车默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :如果没有为汽车指定保养周期,设定汽车的默认保养周期 STR_CONFIG_SETTING_SERVINT_AIRCRAFT :飞机默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :如果没有为飞机指定保养周期,设定飞机的默认保养周期 STR_CONFIG_SETTING_SERVINT_SHIPS :船只的默认保养周期:{STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :如果没有为船只设定保养周期,按照这里设定的默认保养周期执行 STR_CONFIG_SETTING_NOSERVICE :在无故障模式下禁用保养周期:{STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :“打开”时,在无故障模式下,车辆禁用保养周期 STR_CONFIG_SETTING_WAGONSPEEDLIMITS :启动车辆限速:{STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :“打开“时,还要根据车辆的限速来决定一列火车的最高速度 STR_CONFIG_SETTING_DISABLE_ELRAILS :禁用电气化铁路:{STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :“打开”本选项时禁止电气化铁路的使用 STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :玩家车站的剪彩仪式: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :报纸报道运输工具到达新玩家的站台情况 STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :对手车站的剪彩仪式: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :报纸报道竞争对手运输工具新到一个站台的情况 STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :事故/灾难: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :报纸报道事故或灾难发生情况 STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :公司信息: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :报纸报道新公司开业或者预警倒闭风险 STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :工业开业: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :报纸报道产业投产 STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :工业倒闭: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :报纸报道产业倒闭 STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :经济变化: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :报纸报道全球经济变化情况 STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :自家公司服务的工业产量变化信息: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :报纸报道玩家产业的产量变化情况 STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :对手公司服务的工业产量变化信息: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :报纸报道竞争对手的产业产量变化情况 STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :其它工业产量变化信息: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :报纸报道非玩家或竞争对手的工业产量变化 STR_CONFIG_SETTING_NEWS_ADVICE :对于企业车辆的建议及信息: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :显示运输工具需要关注的消息 STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :新车型: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :显示新运输工具上市的消息 STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :货物接受情况变更: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :显示站台接受货物种类变更的消息 STR_CONFIG_SETTING_NEWS_SUBSIDIES :财政补贴: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :显示关于财政补贴的报纸报道 STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :综合信息: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :显示普通事件新闻,例如购买运输专营权或市场道路整修。 STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :关闭 STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :摘要 STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :完全 STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :彩色新闻出现在 {STRING} 年以后 STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :从这一年开始,报纸采用彩色印刷,在此之前,报纸是采用黑白单色印刷的 STR_CONFIG_SETTING_STARTING_YEAR :开始年份:{STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :启用平滑经济模式 (更多小的经济变化):{STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :“打开”时,工业产量变化频繁而幅度小,如果工业是由NewGRF控制的,本选项不起作用 STR_CONFIG_SETTING_ALLOW_SHARES :允许购买其他公司的股份:{STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :“打开”时,允许买卖其它公司股份,但必须持有达到一定年限 STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :转运系统中支付的利润百分比 {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :设定在转运系统中支付给前一环节的收入百分比, 从而对收入有更多的控制权 STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :当拖动时,放置信号灯每隔:{STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :设置以拖动的方式建设时,自动放置信号灯时的间距,将以该间距放置信号灯,直到碰到障碍(信号灯,分支) STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA}格 STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :拖动方式建设时,保持固定的间距放置信号灯:{STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :选择以Ctrl+拖动方法建设信号灯时是否保持固定的间距,如果“关闭”,不考虑隧道和桥梁长度(在隧道和桥梁进出口第一个各放置一个),避免很长一段没有信号灯,如果“打开”,每隔设定的距离(桥梁和隧道长度也计算在内)就放置一个信号灯。 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :在 {STRING} 年前自动设置悬臂信号 STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :设置电子信号灯出现的时间,在此之前,使用悬臂信号灯(功能相同,外观不同) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :使用信号GUI: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :显示一个供选择信号灯的窗口,取代用Ctrl加点击的方式在各种形式信号灯之间切换的方法 STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :默认建造的信号灯类型: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :默认信号灯类型 STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :普通 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :高级 STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :高级单向 STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :在以下信号类型中循环: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :选择用Ctrl+点击的方式切换信号灯时的切换类型 STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :仅有普通 STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :仅有高级 STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :全部 STR_CONFIG_SETTING_TOWN_LAYOUT :新建城镇道路自动延伸: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :选择城市道路网络的建设方式 STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :默认 STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :改良道路 STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2格 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3格 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :随机 STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :允许城镇建设道路: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :“打开”时允许成长时建设道路,“关闭”时禁止城镇自行建设道路 STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :允许城镇建设平交道: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :“打开”时允许城镇建设平交路口 STR_CONFIG_SETTING_NOISE_LEVEL :允许城镇控制机场噪音: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :“关闭”本选项时,每个城镇可以建设两个机场,“打开”时,可以建设的机场数目取决于城市对噪音的忍耐度,而这与城市人口、机场规模和距离有关 STR_CONFIG_SETTING_TOWN_FOUNDING :在游戏中建立城镇: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :“打开”本选项时,允许玩家在游戏中创建新城镇 STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :禁止 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :允许 STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :允许,自定义城镇布局 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :树木自动生长: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :控制游戏中数目的随机生长,这将影响依赖树木的工业,比如木材厂 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :无 {RED}(损坏伐木场) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :仅在雨林中 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :任意地点 STR_CONFIG_SETTING_TOOLBAR_POS :主工具栏位置:{STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :主工具栏在屏幕上方的位置 STR_CONFIG_SETTING_STATUSBAR_POS :状态栏位置: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :状态栏在屏幕下方的位置 STR_CONFIG_SETTING_SNAP_RADIUS :窗口吸附范围:{STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :移动一个窗口靠近临近的窗口触发自动吸附的距离 STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} 像素 STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :关闭 STR_CONFIG_SETTING_SOFT_LIMIT :窗口软性限制(非粘滞): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :设置为腾出位置显示新的窗口,在打开多少个窗口后自动关闭非锁定窗口 STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :关闭 STR_CONFIG_SETTING_ZOOM_MIN :最大放大倍数: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :画面的最大放大倍数,注意:提高放大倍数增加内存需求 STR_CONFIG_SETTING_ZOOM_MAX :最大视角缩小倍数: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :画面的最大缩小倍数,过大的缩放级别在使用时会引起延迟 STR_CONFIG_SETTING_ZOOM_LVL_MIN :4倍 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2倍 STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :普通 STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2倍 STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4倍 STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8倍 STR_CONFIG_SETTING_TOWN_GROWTH :城镇发展速度:{STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :城市发展速度 STR_CONFIG_SETTING_TOWN_GROWTH_NONE :无 STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :慢 STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :正常 STR_CONFIG_SETTING_TOWN_GROWTH_FAST :快 STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :非常快 STR_CONFIG_SETTING_LARGER_TOWNS :随机生成城镇时,生成大都市的比例为: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :随机生成城镇时,有可能生成大都市的数量,这些大都市起始人口较多、发展也较快。 STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 / {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :没有 STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :初始城市规模因子:{STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :游戏开局时,城市的平均规模相对于普通城镇的比值 STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :在道路建设过程中移除荒废的道路元素:{STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :在道路重建改造过程中,移除荒废的道路元素 STR_CONFIG_SETTING_GUI :{ORANGE}界面 STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}建设 STR_CONFIG_SETTING_VEHICLES :{ORANGE}车辆 STR_CONFIG_SETTING_STATIONS :{ORANGE}车站 STR_CONFIG_SETTING_ECONOMY :{ORANGE}经济 STR_CONFIG_SETTING_AI :{ORANGE}竞争 STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}显示选项 STR_CONFIG_SETTING_INTERACTION :{ORANGE}互动 STR_CONFIG_SETTING_SOUND :{ORANGE}音响效果 STR_CONFIG_SETTING_NEWS :{ORANGE}新闻和消息 STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}信号灯 STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}货物处理 STR_CONFIG_SETTING_AI_NPC :{ORANGE}电脑玩家 STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}自动更新 STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}维修 STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}经由 STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}列车 STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}城镇 STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}工业设施 STR_CONFIG_SETTING_PATHFINDER_OPF :原始的 STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(推荐) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :火车寻路: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :列车寻路方式 STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :汽车寻路: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :汽车寻路方式 STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :船只寻路: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :船只寻路方式 STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :遇到红灯时自动掉头 {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :当列车在信号灯前长时间等待时,允许掉头 STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}改变设置值 # Config errors STR_CONFIG_ERROR :{WHITE}配置文件错误... STR_CONFIG_ERROR_ARRAY :{WHITE}... 函数错误 '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...对 '{STRING}'设置了错误值'{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... 有多余字符在设定的结尾处'{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... 忽略 NewGRF '{STRING}': 重复的 GRF ID '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... 忽略了无效的 NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :未找到 STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :静态使用时不安全 STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :系统NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :与当前版本OpenTTD不兼容 STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :未知 STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... 压缩等级 '{STRING}' 无效 STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}...存档格式 '{STRING}' 不适用. 请转换成 '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... 禁用基础图形设置 '{STRING}': 未找到 STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... 禁用基础意义设置 '{STRING}': 未找到 STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... 禁用基础音乐设置 '{STRING}': 未找到 STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}内存溢出 STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}无法编配{BYTES}作为sprite快取。sprite快取的大小已降至{BYTES}。OpenTTD的效能将受到影晌。请尝试停用32bpp图形及/或减少放大倍数,以减低內存要求 # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}新游戏 STR_INTRO_LOAD_GAME :{BLACK}读取存档 STR_INTRO_PLAY_SCENARIO :{BLACK}以场景开始游戏 STR_INTRO_PLAY_HEIGHTMAP :{BLACK}以高度图开始游戏 STR_INTRO_SCENARIO_EDITOR :{BLACK}场景编辑器 STR_INTRO_MULTIPLAYER :{BLACK}联机游戏 STR_INTRO_GAME_OPTIONS :{BLACK}游戏选项 STR_INTRO_HIGHSCORE :{BLACK}高分榜 STR_INTRO_ADVANCED_SETTINGS :{BLACK}高级设置 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF 设置 STR_INTRO_ONLINE_CONTENT :{BLACK}在线查找扩展包 STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / 脚本 设定 STR_INTRO_QUIT :{BLACK}退出 STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}开始新游戏. 单击的同时按住Ctrl以跳过地图设置界面 STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}读取游戏存档 STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}以高度图决定的地形开始一个新游戏 STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}使用自定义场景开始游戏 STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}创建自定义的游戏场景 STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}开始联机游戏 STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}选择 '温带' 景观风格 STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}选择 '寒带' 景观风格 STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}选择 '沙漠' 景观风格 STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}选择 '玩具' 景观风格 STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}显示游戏选项 STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}显示高分榜 STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}显示高级设置 STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}显示GRF设定 STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}连接服务器并查找扩展包 STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}查看AI和脚本设定 STR_INTRO_TOOLTIP_QUIT :{BLACK}退出 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}中文语言版本缺失了 {NUM} 条翻译。 请注册成为翻译人员,以帮助OpenTTD发展。{}详见readme.txt。 # Quit window STR_QUIT_CAPTION :{WHITE}退出 STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}你确定要放弃当前游戏并{}退出到 {STRING} 吗? STR_QUIT_YES :{BLACK}是 STR_QUIT_NO :{BLACK}否 # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}放弃游戏 STR_ABANDON_GAME_QUERY :{YELLOW}你确定要放弃当前的游戏吗? STR_ABANDON_SCENARIO_QUERY :{YELLOW}你确定要退出当前场景吗? # Cheat window STR_CHEATS :{WHITE}作弊 STR_CHEATS_TOOLTIP :{BLACK}标志您是否用过此作弊选项的单选框 STR_CHEATS_WARNING :{BLACK}注意!作弊是不光彩的!所有作弊都将被记录下来! STR_CHEAT_MONEY :{LTBLUE}增加 {CURRENCY_LONG} 现金 STR_CHEAT_CHANGE_COMPANY :{LTBLUE}作为{ORANGE}{COMMA}进行游戏 STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}神奇推土机 (清除工业设施和其他不可移除物): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}隧道可以相交:{ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}喷气式飞机不会(经常)在小机场坠毁:{ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :温带景观 STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :寒带景观 STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :沙漠景观 STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :奇幻景观 STR_CHEAT_CHANGE_DATE :{LTBLUE}改变日期:{ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}改变当前年份 STR_CHEAT_SETUP_PROD :{LTBLUE}开启可调整产量模式:{ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}新色彩方案 STR_LIVERY_GENERAL_TOOLTIP :{BLACK}显示总体配色方案 STR_LIVERY_TRAIN_TOOLTIP :{BLACK}显示列车配色方案 STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}显示汽车配色方案 STR_LIVERY_SHIP_TOOLTIP :{BLACK}显示船只配色方案 STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}显示飞机配色方案 STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}为选定的配色方案指定主色调 STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}为选定的配色方案指定副色调 STR_LIVERY_PANEL_TOOLTIP :{BLACK}选择一个或多个(CTRL+单击){}要更改的配色方案{}点击方块可以切换不同的方案 STR_LIVERY_DEFAULT :标准外观 STR_LIVERY_STEAM :蒸汽机车 STR_LIVERY_DIESEL :内燃机车 STR_LIVERY_ELECTRIC :电力机车 STR_LIVERY_MONORAIL :单轨机车 STR_LIVERY_MAGLEV :磁悬浮机车 STR_LIVERY_DMU :DMU 机车 STR_LIVERY_EMU :EMU 机车 STR_LIVERY_PASSENGER_WAGON_STEAM :客运机车(蒸汽) STR_LIVERY_PASSENGER_WAGON_DIESEL :客运机车(内燃机) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :客运机车(电力) STR_LIVERY_PASSENGER_WAGON_MONORAIL :客运机车(单轨) STR_LIVERY_PASSENGER_WAGON_MAGLEV :客运机车(磁悬浮) STR_LIVERY_FREIGHT_WAGON :货运车厢 STR_LIVERY_BUS :巴士 STR_LIVERY_TRUCK :卡车 STR_LIVERY_PASSENGER_SHIP :旅客轮渡 STR_LIVERY_FREIGHT_SHIP :货运轮船 STR_LIVERY_HELICOPTER :直升机 STR_LIVERY_SMALL_PLANE :小型飞机 STR_LIVERY_LARGE_PLANE :大型飞机 STR_LIVERY_PASSENGER_TRAM :客运电车 STR_LIVERY_FREIGHT_TRAM :货运电车 # Face selection window STR_FACE_CAPTION :{WHITE}选择头像 STR_FACE_CANCEL_TOOLTIP :{BLACK}放弃新的头像 STR_FACE_OK_TOOLTIP :{BLACK}使用新的头像 STR_FACE_MALE_BUTTON :{BLACK}男性 STR_FACE_MALE_TOOLTIP :{BLACK}选择男性的头像 STR_FACE_FEMALE_BUTTON :{BLACK}女性 STR_FACE_FEMALE_TOOLTIP :{BLACK}选择女性的头像 STR_FACE_NEW_FACE_BUTTON :{BLACK}换一个! STR_FACE_NEW_FACE_TOOLTIP :{BLACK}生成一个随机的头像 STR_FACE_ADVANCED :{BLACK}高级 STR_FACE_ADVANCED_TOOLTIP :{BLACK}切换到高级头像选单 STR_FACE_SIMPLE :{BLACK}简易 STR_FACE_SIMPLE_TOOLTIP :{BLACK}切换到简易头像选单 STR_FACE_LOAD :{BLACK}载入头像 STR_FACE_LOAD_TOOLTIP :{BLACK}载入预存喜好的头像 STR_FACE_LOAD_DONE :{WHITE}你喜好的头像已经从 OpenTTD 配置文件中读取 STR_FACE_FACECODE :{BLACK}头像种子 STR_FACE_FACECODE_TOOLTIP :{BLACK}查看或设置头像编号 STR_FACE_FACECODE_CAPTION :{WHITE}头像编号 STR_FACE_FACECODE_SET :{WHITE}新编号已经启用 STR_FACE_FACECODE_ERR :{WHITE}编号必须在 0 ~ 4,294,967,295 范围内! STR_FACE_SAVE :{BLACK}储存头像 STR_FACE_SAVE_TOOLTIP :{BLACK}储存喜好的头像 STR_FACE_SAVE_DONE :{WHITE}该头像将作为你的喜好储存至 OpenTTD 配置文件中 STR_FACE_EUROPEAN :{BLACK}欧洲人 STR_FACE_SELECT_EUROPEAN :{BLACK}使用欧洲人面孔 STR_FACE_AFRICAN :{BLACK}非洲人 STR_FACE_SELECT_AFRICAN :{BLACK}使用非洲人面孔 STR_FACE_YES :是 STR_FACE_NO :否 STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}是否有 胡子或耳环 STR_FACE_HAIR :发型 STR_FACE_HAIR_TOOLTIP :{BLACK}选择发型 STR_FACE_EYEBROWS :眉毛 STR_FACE_EYEBROWS_TOOLTIP :{BLACK}选择眉毛 STR_FACE_EYECOLOUR :眼睛 STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}选择眼睛颜色 STR_FACE_GLASSES :眼镜 STR_FACE_GLASSES_TOOLTIP :{BLACK}是否有 眼镜 STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}选择眼镜 STR_FACE_NOSE :鼻子 STR_FACE_NOSE_TOOLTIP :{BLACK}选择鼻子 STR_FACE_LIPS :嘴唇 STR_FACE_MOUSTACHE :胡子 STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}选择嘴唇或是胡子 STR_FACE_CHIN :下巴 STR_FACE_CHIN_TOOLTIP :{BLACK}选择下巴 STR_FACE_JACKET :外衣 STR_FACE_JACKET_TOOLTIP :{BLACK}选择外衣 STR_FACE_COLLAR :领口 STR_FACE_COLLAR_TOOLTIP :{BLACK}选择领口 STR_FACE_TIE :领带 STR_FACE_EARRING :耳环 STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}选择领带或是耳环 # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}联机游戏 STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}连接: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}选择一个 Internet 上的游戏或局域网 (LAN) 中的游戏 STR_NETWORK_SERVER_LIST_LAN :局域网 STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}玩家名称: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}其他玩家将通过该名字来认识您 STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}名称 STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}游戏名称 STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}客户端 STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}在线客户端 / 最多 - 在线公司 / 最多 STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}地图尺寸 STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}游戏地图大小{}点击可以按地图大小排列 STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}日期 STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}当前日期 STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}年 STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}年数{}游戏正在运行的 STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}语言,服务器版本和其他信息 STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}点击列表中的服务器可以选定它 STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}上一次加入的服务器: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}点击选择您上次加入的服务器 STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}游戏信息 STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}客 户 端: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}语  言: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}场景类型: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}地图尺寸: {WHITE}{COMMA}×{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}服务器版本: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}该服IP: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}开始日期: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}当前日期: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}有密码保护! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}服务器离线 STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}服务器满员 STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}版本不匹配 STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF 不匹配 STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}加入游戏 STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}刷新服务器 STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}刷新服务器信息 STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}搜索服务器 STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}在网络上搜索服务器 STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}添加服务器 STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}添加一个永远显示在列表中的服务器 STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}启动服务器 STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}启动本机作为服务器 STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}输入姓名 STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}输入服务器地址 # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}开始新的联机游戏 STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}游戏名称: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}游戏名称将显示在其他玩家的联机游戏界面中 STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}设置密码: STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}如果不希望你的游戏被外人加入,请设置一个密码 STR_NETWORK_START_SERVER_LAN_INTERNET :局域网 / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} 客户端 STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}玩家数目: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}选择可以参加的玩家上限(达不到此数量仍然可以开始游戏) STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} 公司 STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}公司数量: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}限制服务器上可以创建的公司数量 STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} 观众 STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}旁观人数: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}限制服务器上旁观者的数量 STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}语言选项: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}其他玩家可以知道服务器的官方语言 STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}为您的联机游戏取名 # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :任意 STR_NETWORK_LANG_ENGLISH :英语 STR_NETWORK_LANG_GERMAN :德语 STR_NETWORK_LANG_FRENCH :法语 STR_NETWORK_LANG_BRAZILIAN :巴西语 STR_NETWORK_LANG_BULGARIAN :保加利亚语 STR_NETWORK_LANG_CHINESE :中文 STR_NETWORK_LANG_CZECH :捷克语 STR_NETWORK_LANG_DANISH :丹麦语 STR_NETWORK_LANG_DUTCH :荷兰语 STR_NETWORK_LANG_ESPERANTO :世界语 STR_NETWORK_LANG_FINNISH :芬兰语 STR_NETWORK_LANG_HUNGARIAN :匈牙利语 STR_NETWORK_LANG_ICELANDIC :冰岛语 STR_NETWORK_LANG_ITALIAN :意大利语 STR_NETWORK_LANG_JAPANESE :日语 STR_NETWORK_LANG_KOREAN :韩文 STR_NETWORK_LANG_LITHUANIAN :立陶宛语 STR_NETWORK_LANG_NORWEGIAN :挪威语 STR_NETWORK_LANG_POLISH :波兰语 STR_NETWORK_LANG_PORTUGUESE :葡萄牙语 STR_NETWORK_LANG_ROMANIAN :罗马尼亚语 STR_NETWORK_LANG_RUSSIAN :俄语 STR_NETWORK_LANG_SLOVAK :斯洛伐克语 STR_NETWORK_LANG_SLOVENIAN :斯洛文尼亚语 STR_NETWORK_LANG_SPANISH :西班牙语 STR_NETWORK_LANG_SWEDISH :瑞典语 STR_NETWORK_LANG_TURKISH :土耳其语 STR_NETWORK_LANG_UKRAINIAN :乌克兰语 STR_NETWORK_LANG_AFRIKAANS :南非荷兰语 STR_NETWORK_LANG_CROATIAN :克罗地亚语 STR_NETWORK_LANG_CATALAN :加泰罗尼亚语 STR_NETWORK_LANG_ESTONIAN :爱沙尼亚语 STR_NETWORK_LANG_GALICIAN :加利西亚语 STR_NETWORK_LANG_GREEK :希腊语 STR_NETWORK_LANG_LATVIAN :拉脱维亚语 ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}联机游戏大厅 STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}正在准备加入: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}当前参与游戏的公司列表{}您可以加入其中一个公司{}或者在有空位的情况下重建一个公司 STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}公司信息 STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}公司信息: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}开业时间: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}公司市值: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}流动资金: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}去年收入: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}表现评价: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}车辆船只: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}站台: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}玩家:{WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}新公司 STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}创建新公司 STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}旁观公司 STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}作为旁观者观看公司 STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}加入公司 STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}帮助管理公司 # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}正在连接…… ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) 正在连接…… STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) 正在获取授权…… STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) 等待…… STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) 下载地图…… STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) 处理数据…… STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) 注册中…… STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}获取游戏信息 STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}获取公司信息 ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}您前面还有 {NUM} 个客户端 STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} 已下载 STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} 已下载 STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}断开 STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}服务器需要密码: STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}公司需要密码: # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}客户端列表 STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}旁观 STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}新公司 # Network client list STR_NETWORK_CLIENTLIST_KICK :踢出 STR_NETWORK_CLIENTLIST_BAN :禁止 STR_NETWORK_CLIENTLIST_GIVE_MONEY :送钱 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :向全体人广播 STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :向本公司广播 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :私聊 STR_NETWORK_SERVER :服务器 STR_NETWORK_CLIENT :客户端 STR_NETWORK_SPECTATORS :旁观者 STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}请输入您想赠与的资金数 # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}不保存所输入的密码 STR_COMPANY_PASSWORD_OK :{BLACK}为公司设置新密码 STR_COMPANY_PASSWORD_CAPTION :{WHITE}公司密码 STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}默认公司密码 STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}将此公司密码作为新公司的默认密码 # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}加入 STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}加入该公司 STR_COMPANY_VIEW_PASSWORD :{BLACK}密码 STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}设置密码可以防止未经授权的用户随意加入。 STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}设置公司密码 # Network chat STR_NETWORK_CHAT_SEND :{BLACK}发送 STR_NETWORK_CHAT_COMPANY_CAPTION :[团队] : STR_NETWORK_CHAT_CLIENT_CAPTION :[私聊] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[全体] : STR_NETWORK_CHAT_COMPANY :[团队] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[团队]{STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[私聊] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[私聊]{STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[全体] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}请输入联机聊天内容 # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}没有网络设备或者编译时未使用 ENABLE_NETWORK 参数 STR_NETWORK_ERROR_NOSERVER :{WHITE}未找到任何联机游戏 STR_NETWORK_ERROR_NOCONNECTION :{WHITE}服务器没有响应 STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}因为 NewGRF 不匹配而无法连接 STR_NETWORK_ERROR_DESYNC :{WHITE}联机游戏同步失败 STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}联机游戏被断开 STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}无法读取存档 STR_NETWORK_ERROR_SERVER_START :{WHITE}无法启动服务器模式 STR_NETWORK_ERROR_CLIENT_START :{WHITE}无法连接 STR_NETWORK_ERROR_TIMEOUT :{WHITE}连接 #{NUM} 超时 STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}传输协议错误,连接断开 STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}此客户端版本与服务器端不匹配 STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}密码错误 STR_NETWORK_ERROR_SERVER_FULL :{WHITE}服务器已经满员 STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}您的IP已被该服务器封禁(ban) STR_NETWORK_ERROR_KICKED :{WHITE}您已被踢出服务器 STR_NETWORK_ERROR_CHEATER :{WHITE}此服务器不允许作弊 STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}您向服务器发送操作指令过于频繁 STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}输入密码超时 STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}您的计算机联网超时 STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}您的计算机下载地图用时过长 STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}您的计算机加入服务器用时过长 ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :一般错误 STR_NETWORK_ERROR_CLIENT_DESYNC :同步错误 STR_NETWORK_ERROR_CLIENT_SAVEGAME :不能读取地图 STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :连接丢失 STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :套接字错误 STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF 不匹配 STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :没有授权 STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :收到异常数据包 STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :错误的版本 STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :已经有人用这个名字了 STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :错误的密码 STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :错误的公司ID于DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :被服务器踢出 STR_NETWORK_ERROR_CLIENT_CHEATER :正在尝试作弊 STR_NETWORK_ERROR_CLIENT_SERVER_FULL :服务器满员 STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :操作指令过于频繁 STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :没有在规定时间内收到密码 STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :超时 STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :下载地图用时过长 STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :处理地图用时过长 ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}失去链接 STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}已经有 {NUM} 秒没有从服务器收到任何数据 # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :游戏暂停 ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :游戏仍然暂停 ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :游戏仍然暂停 ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :游戏仍然暂停 ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :游戏暂停中 ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :游戏取消暂停 ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :玩家数 STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :连接客户端 STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :手动 STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :游戏脚本 ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :离开 STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} 已加入游戏 STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} 加入了游戏 (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} 已加入 #{2:NUM} 公司 STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} 已作为观众加入 STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 成立了新公司 (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} 已离开游戏 ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 已更改姓名为 {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} 送给您的公司 {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** 您送了 {2:CURRENCY_LONG} 给 {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}服务器关闭了进程 STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}服务器正在重新启动。{}请等待…… # Content downloading window STR_CONTENT_TITLE :{WHITE}下载内容 STR_CONTENT_TYPE_CAPTION :{BLACK}类型 STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}扩展包类型 STR_CONTENT_NAME_CAPTION :{BLACK}名称 STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}内容名称 STR_CONTENT_MATRIX_TOOLTIP :{BLACK}单击一行以查看详情{}单击复选框选择下载 STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}全选 STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}选定所有扩展包 STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}选择升级 STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}更新所有已下载的扩展包 STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}取消全选 STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}取消全部选择 STR_CONTENT_SEARCH_EXTERNAL :{BLACK}搜索整个网络 STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}在与OpenTTD没有联系的网站搜寻没有纳入OpenTTD內容服务的內容 STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}正在离开游戏! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}在外部网站下载內容的规则及条款可能跟OpenTTD引用的规则及条款不同。{}您需要参照有关网站以取得在OpenTTD安装有关內容的资讯。{}您要継续吗? STR_CONTENT_FILTER_TITLE :{BLACK}标签/名称过滤器 STR_CONTENT_OPEN_URL :{BLACK}查看主页 STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}打开该扩展包主页 STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}下载 STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}下载选定的内容 STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}总计下载大小: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}扩展包信息 STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}您尚未选择下载该扩展包 STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}您已选择需要下载的扩展包 STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}此依存组件已被选择下载。 STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}您已经下载过该扩展包 STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}该扩展包无法识别,OpenTTD无法下载该扩展包 STR_CONTENT_DETAIL_UPDATE :{SILVER}该扩展包将会替换到当前使用的 {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}名称: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}版本: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}描述: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}链接: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}类型: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}大小: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}按 {WHITE}{STRING} 选择 STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}依存: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}标签: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD 未装载 "zlib" 支持模块 ... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... 无法下载zlib内容! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :基本GRF STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI 库 STR_CONTENT_TYPE_SCENARIO :场景 STR_CONTENT_TYPE_HEIGHTMAP :高度图 STR_CONTENT_TYPE_BASE_SOUNDS :基本音效 STR_CONTENT_TYPE_BASE_MUSIC :基本音乐 STR_CONTENT_TYPE_GAME_SCRIPT :游戏脚本 STR_CONTENT_TYPE_GS_LIBRARY :脚本库 # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}下载中... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}正在发送请求... STR_CONTENT_DOWNLOAD_FILE :{WHITE}正在下载 {STRING} ({NUM} / {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}下载完毕 STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}已下载 {BYTES} / {BYTES} ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}无法链接到下载服务器... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}下载失败... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... 链接丢失 STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... 文件无法写入 STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}无法解压该扩展包 STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}缺失图形组 STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD 需要基础图形组用以绘制界面。您是否希望 OpenTTD 下载并安装以下图形组? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}是的,下载之 STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}不,退出OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}透明选项 STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}调整标志是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}调整树木是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}调整建筑是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}调整工业设施是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}调整车站、码头及路点等是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}调整桥梁是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}调整灯塔及信号发射塔是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}调整电气铁路电线是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}调整装载进度显示是否为透明{}CTRL+点击 锁定 STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}选择设置为:不显示或透明 # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}显示覆盖区域 STR_STATION_BUILD_COVERAGE_OFF :{BLACK}关闭 STR_STATION_BUILD_COVERAGE_ON :{BLACK}开启 STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}不显示覆盖的区域 STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}显示可以覆盖的区域 STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}接受:{GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}供给: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}合并车站 STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}建造分体车站 STR_JOIN_WAYPOINT_CAPTION :{WHITE}合并路点 STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}建造分体路点 # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :铁路建设 STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :电气化铁路建设 STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :单轨铁路建设 STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :磁悬浮铁路建设 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}建设铁轨。按住 Ctrl 键切换建设/移除铁轨。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}使用多向路轨工具铺设铁轨。按住 Ctrl 键切换建设/移除铁轨。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}建设列车车库(可以购买或维护列车)按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}将铁路变为路点。按住 Ctrl 键允许合并路点。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}建设火车站。按住 Ctrl 键允许合并站台。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}设置铁路信号。按住 Ctrl 键可以切换悬臂式/光板式信号灯{}拖拽可以沿此分支建立信号灯。按住 Ctrl 键可以建立到下一个联结点。{}按住 Ctrl 键单击此按钮可以开关信号灯选择窗口{}按住 Shift 键显示预计费用 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}建设铁路桥梁。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}建设铁路隧道。按住 Shift 键显示预计费用。 STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}切换建设/拆除铁轨、信号灯、路点和车站。按住 Ctrl 键可在移除路点和车站时同时移除铁轨。 STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}转换/升级 铁路类型。按住 Shift 键显示预计费用。 STR_RAIL_NAME_RAILROAD :铁路 STR_RAIL_NAME_ELRAIL :电气化铁路 STR_RAIL_NAME_MONORAIL :单轨铁路 STR_RAIL_NAME_MAGLEV :磁悬浮铁路 # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}列车车库方向 STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}选择列车车库的方向 # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}路点 STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}选择路点类型 # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}火车站选单 STR_STATION_BUILD_ORIENTATION :{BLACK}方向 STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}选择火车站的方向 STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}轨道数量 STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}选择车站月台的数量 STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}月台长度 STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}选择车站月台的长度 STR_STATION_BUILD_DRAG_DROP :{BLACK}拖动模式 STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}使用拖动模式建设车站 STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}选择一个要显示车站类型 STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}选择要建造的车站类型 STR_STATION_CLASS_DFLT :默认车站 STR_STATION_CLASS_WAYP :路标 # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}信号灯 STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}标准信号(悬臂){}信号灯是多列车铁路系统的必备设施 STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号(悬臂){}在下一轨道区间上{}当至少有一个出口信号是绿色时{}此信号亮绿灯 否则亮红灯 STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号(悬臂){}运作等同与普通信号{}但是对于触发入口及复合信号灯{}来说是必要的 STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号(悬臂){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立树状预警信号灯系统 STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}双向高级信号(悬臂){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}单向高级信号(悬臂){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}标准信号(电子){}信号灯是多列车铁路系统的必备设施 STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号(电子){}在下一轨道区间上{}当至少有一个出口信号是绿色时{}此信号亮绿灯 否则亮红灯 STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号(电子){}运作等同与普通信号{}但是对于触发入口及复合信号灯{}来说是必要的 STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立树状预警信号灯系统 STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}双向高级信号(电子){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}单向高级信号(电子){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号灯转换工具{}当此按钮按下时再选择信号灯种类{}就可以转换信号灯为选择的种类{}CTRL+点击{}可以把现有信号灯在电子和旗帜间转换 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}拖拽布置信号灯的间隔距离 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}减少拖拽布置信号灯的间隔距离 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}增加拖拽布置信号灯的间隔距离 # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}选择铁路桥 STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}选择公路桥梁 STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}选择桥梁 - 点击选择喜欢的桥梁进行建设 STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :钢制悬索 STR_BRIDGE_NAME_GIRDER_STEEL :钢制桁桥 STR_BRIDGE_NAME_CANTILEVER_STEEL :钢制悬臂 STR_BRIDGE_NAME_SUSPENSION_CONCRETE :混凝土悬索 STR_BRIDGE_NAME_WOODEN :木制 STR_BRIDGE_NAME_CONCRETE :混凝土 STR_BRIDGE_NAME_TUBULAR_STEEL :钢制函梁 STR_BRIDGE_TUBULAR_SILICON :硅制函梁 # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}道路建设 STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}电车建设 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}建设道路。按住 Ctrl 键切换建设/移除道路。 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}建造电车轨道。按住 Ctrl 键切换建设/移除电车轨道。 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}使用多向道路工具建设道路。按住 Ctrl 键切换建设/移除道路。 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}使用多向轨道工具建设电车轨道。按住 Ctrl 键切换建设/移除电车轨道。 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}建设汽车车库(可以购买或维护车辆) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}建造电车车库(可以购买与维护车辆) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}建设公共汽车站。按住 Ctrl 键允许合并站台 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}建设客运电车站。按住 Ctrl 键允许合并站台 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}建设汽车货场。按住 Ctrl 键允许合并站台 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}建设货运电车站。按住 Ctrl 键允许合并站台 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}选择是否建设单行道 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}建设公路桥梁 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}建设电车桥梁 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}建设公路隧道 STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}建设电车隧道 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}建设/拆除 公路 STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}建设/拆除 电车轨道 # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}汽车车库的方向…… STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}选择汽车车库方向 STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}建设电车车库 STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}选择电车车库方向 # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}公共汽车站的方向 STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}选择公共汽车站的方向 STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}汽车货场的方向 STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}选择汽车货场的方向 STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}客运电车方向 STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}选择客运电车车站方向 STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}货运电车方向 STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}选择货运电车车站方向 # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}码头建设 STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}水运 STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}修建运河 STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}建设船闸,按住 Shift 键操作可以显示所需资金 STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}建造船坞(可以购买或保养船只),按住 Shift 键操作可以显示所需资金 STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}建造码头。按住 Ctrl 键允许合并站台,按住 Shift 键操作可以显示所需资金 STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}放置一个浮标,该浮标可以用作路点,按住 Shift 键操作可以显示所需资金 STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}建设水渠,按住 Shift 键操作可以显示所需资金 STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}修建运河{}当地形处于海平面时{}按住 Ctrl键 可以定义水域 STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}放置河流 # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}船坞方向…… STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}选择船坞的方向 # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}码头 # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}机场 STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}新建机场。按住 Ctrl 键允许合并站台,按住 Shift 键操作可以显示所需资金 # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}飞机场选单 STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}选择机场的大小和类型 STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}机场等级 STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}配置 {NUM} STR_AIRPORT_SMALL :小型机场 STR_AIRPORT_CITY :城市机场 STR_AIRPORT_METRO :国内机场 STR_AIRPORT_INTERNATIONAL :国际机场 STR_AIRPORT_COMMUTER :通勤机场 STR_AIRPORT_INTERCONTINENTAL :全球机场 STR_AIRPORT_HELIPORT :直升机停机楼 STR_AIRPORT_HELIDEPOT :直升机专用机场 STR_AIRPORT_HELISTATION :直升机小型机场 STR_AIRPORT_CLASS_SMALL :小型机场 STR_AIRPORT_CLASS_LARGE :大型机场 STR_AIRPORT_CLASS_HUB :空运枢纽 STR_AIRPORT_CLASS_HELIPORTS :直升机机场 STR_STATION_BUILD_NOISE :{BLACK}产生的噪音: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}景观美化 STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}降低地块的一角 STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}升高地块的一角 STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}拉平地面 STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}购买土地以备将来使用,按住 Shift 键操作可以显示所需资金 # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}物体选单 STR_OBJECT_BUILD_TOOLTIP :{BLACK}选择建设项目. 按住SHIFT键建设可以显示建设费用 STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}选择要建造的物件类型 STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}物件预览 STR_OBJECT_BUILD_SIZE :{BLACK}大小: {GOLD}{NUM} x {NUM} 瓦 STR_OBJECT_CLASS_LTHS :灯塔 STR_OBJECT_CLASS_TRNS :发射机 # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}树木 STR_PLANT_TREE_TOOLTIP :{BLACK}选择要种植的树木类型。如果格子内已经有树木,将种植随机类型的树木 STR_TREES_RANDOM_TYPE :{BLACK}随机类型的树木 STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}种植随机类型的树木,按住 Shift 键可以显示所需资金 STR_TREES_RANDOM_TREES_BUTTON :{BLACK}随机树木 STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}随机地种植一些树木 # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}生成土地 STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}在地图上设置岩石区域 STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}划出沙漠区域.{}按住 Ctrl键 可以移除沙漠区域 STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}增加要升高/降低的土地面积 STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}减少要升高/降低的土地面积 STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}随机生成土地 STR_TERRAFORM_SE_NEW_WORLD :{BLACK}创建新的场景 STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}重置景观 STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}清除地图上所有由玩家拥有的财产 STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}重置景观 STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}你确定要清除所有由玩家拥有的财产吗? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}生成城镇 STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}新建城镇 STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}在指定位置建设新的城镇,按住 Shift 键单击可以显示所需资金 STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}随机城镇 STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}随机新增一个城镇 STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}大量随机城镇 STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}在地图上随机创建大量城镇 STR_FOUND_TOWN_NAME_TITLE :{YELLOW}城镇名称: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}输入城镇名称 STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}点击这里输入城镇名称 STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}随机名称 STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}重新随机生成城镇名称 STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}城镇规模: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}小 STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}中 STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}大 STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}随机 STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}选择城镇规模 STR_FOUND_TOWN_CITY :{BLACK}城市 STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}城市增长速度高于一般城镇{}它们建立时规模更大 STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}城镇道路布局: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}为此城镇选择使用的道路布局 STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}原版 STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}改良 STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 网格 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 网格 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}随机 # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}建设新的工业设施 STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}请选择工业设施 STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :大量随机工业 STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}在地图上创建大量随机的工业设施 STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}费用:{YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}勘探 STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}建设 STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}建设 # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING} 的产业链 STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} 的产业链 STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}供应商 STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}采购商 STR_INDUSTRY_CARGOES_HOUSES :{WHITE}房屋 STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}点該工业可显示其上下游工业 STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}点该货物可显示其上下游工业 STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}显示产业链 STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}显示货物的上下游工业 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}在缩略地图显示 STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}将该产业链的工业显示在缩略地图中 STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}选择货物 STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}选择需要显示的货物 STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}选择工业 STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}选择需要显示的工业 # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}地块信息 STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}清除费用:{LTBLUE}N/A 不能清除 STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}清除费用:{RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}清除收入: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :无 STR_LAND_AREA_INFORMATION_OWNER :{BLACK}产权所属:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}道路所属:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}有轨电车道路所属:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}铁路归属:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :没有 STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}坐标: {LTBLUE}{NUM} × {NUM} × {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}建造时间:{LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}车站分类: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}车站类型: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}飞机场分类: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}飞机场名字: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}机场区域名称: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}接受货物:{LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}轨道限速: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :岩石 STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :荒地 STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :土地 STR_LAI_CLEAR_DESCRIPTION_GRASS :草地 STR_LAI_CLEAR_DESCRIPTION_FIELDS :田地 STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :雪地 STR_LAI_CLEAR_DESCRIPTION_DESERT :沙漠 STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} 轨道 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :有信号灯的{STRING}铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} 预信号灯轨道 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} 出口信号灯轨道 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} 复合信号灯轨道 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} 普通信号灯轨道 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} 单向信号灯轨道 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} 具有入口信号灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} 具有出口信号灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} 具有组合信号灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} 具有高级信号灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} 具有高级单向信号灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} 同时有入口灯和出口灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} 同时有入口灯和组合灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} 同时有入口灯和高级灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} 同时有入口灯和单向高级灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} 同时有出口灯和组合灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} 同时有出口灯和高级灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} 同时有出口灯和单向高级灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} 同时有组合灯和高级灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} 同时有组合灯和高级单向灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} 同时有高级灯和单向高级灯的铁轨 STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} 列车车库 STR_LAI_ROAD_DESCRIPTION_ROAD :公路 STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :带路灯的公路 STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :林荫公路 STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :汽车车库 STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :公路铁路平交路口 STR_LAI_ROAD_DESCRIPTION_TRAMWAY :电车 # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (建设中) STR_LAI_TREE_NAME_TREES :树木 STR_LAI_TREE_NAME_RAINFOREST :雨林 STR_LAI_TREE_NAME_CACTUS_PLANTS :仙人掌 STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :火车站 STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :机库 STR_LAI_STATION_DESCRIPTION_AIRPORT :机场 STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :汽车货场 STR_LAI_STATION_DESCRIPTION_BUS_STATION :公共汽车站 STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :码头 STR_LAI_STATION_DESCRIPTION_BUOY :浮标 STR_LAI_STATION_DESCRIPTION_WAYPOINT :路点 STR_LAI_WATER_DESCRIPTION_WATER :水 STR_LAI_WATER_DESCRIPTION_CANAL :运河 STR_LAI_WATER_DESCRIPTION_LOCK :船闸 STR_LAI_WATER_DESCRIPTION_RIVER :河 STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :海岸线或河岸 STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :船坞 # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :铁路隧道 STR_LAI_TUNNEL_DESCRIPTION_ROAD :公路隧道 STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :钢制悬索铁路桥 STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :钢制铁路桁桥 STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :钢制悬臂铁路桥 STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :钢筋混凝土悬索铁路桥 STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :木制铁路桥 STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :混凝土铁路桥 STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :函梁铁路桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :钢制悬索公路桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :钢制公路桁桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :钢制悬臂公路桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :钢筋混凝土悬索公路桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :木制公路桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :混凝土公路桥 STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :函梁公路桥 STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :水渠 STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :转播塔 STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :灯塔 STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :公司总部 STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司属地 # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}关于 OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留一切权力。 STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD 团队 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏 STR_SAVELOAD_LOAD_CAPTION :{WHITE}读取存档 STR_SAVELOAD_SAVE_SCENARIO :{WHITE}保存场景 STR_SAVELOAD_LOAD_SCENARIO :{WHITE}读取场景 STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}读取地形图 STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}保存高度图 STR_SAVELOAD_HOME_BUTTON :{BLACK}点击这里返回默认的游戏存档目录 STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} 可用 STR_SAVELOAD_LIST_TOOLTIP :{BLACK}驱动器、目录和游戏存档列表 STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}保存当前游戏用的存档名字 STR_SAVELOAD_DELETE_BUTTON :{BLACK}删除 STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}删除选定的游戏存档 STR_SAVELOAD_SAVE_BUTTON :{BLACK}保存 STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}以选定的名字保存当前游戏 STR_SAVELOAD_LOAD_BUTTON :{BLACK}载入 STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}载入所选 STR_SAVELOAD_DETAIL_CAPTION :{BLACK}游戏详情 STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}无可用信息 STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}为存档命名 # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}地图生成器 STR_MAPGEN_MAPSIZE :{BLACK}地图规模: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}选择地图尺寸(单位:格)。可用的数值会略小。 STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}城镇数量: STR_MAPGEN_DATE :{BLACK}日期: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}工业数量: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}雪线高度: STR_MAPGEN_SNOW_LINE_UP :{BLACK}提高雪线高度 STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}降低雪线高度 STR_MAPGEN_RANDOM_SEED :{BLACK}随机种子: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}点志这里可以输入一个随机种子 STR_MAPGEN_RANDOM :{BLACK}随机种子 STR_MAPGEN_RANDOM_HELP :{BLACK}改变生成地形所用的随机种子 STR_MAPGEN_LAND_GENERATOR :{BLACK}生成地形: STR_MAPGEN_TREE_PLACER :{BLACK}生成树木: STR_MAPGEN_TERRAIN_TYPE :{BLACK}地形特点: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}海洋面积: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}河流数量: STR_MAPGEN_SMOOTHNESS :{BLACK}平滑度: STR_MAPGEN_VARIETY :{BLACK}多样的分发: STR_MAPGEN_GENERATE :{WHITE}生成 # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}地图边缘: STR_MAPGEN_NORTHWEST :{BLACK}西北 STR_MAPGEN_NORTHEAST :{BLACK}东北 STR_MAPGEN_SOUTHEAST :{BLACK}东南 STR_MAPGEN_SOUTHWEST :{BLACK}西南 STR_MAPGEN_BORDER_FREEFORM :{BLACK}自由形式 STR_MAPGEN_BORDER_WATER :{BLACK}水面 STR_MAPGEN_BORDER_RANDOM :{BLACK}随机 STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}随机 STR_MAPGEN_BORDER_MANUAL :{BLACK}手动 STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}高度图旋转: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}高度图名称: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}地图尺寸: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}请输入随机种子 STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}改变雪线高度 STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}改变游戏开始的日期 # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}场景类型: STR_SE_MAPGEN_FLAT_WORLD :{WHITE}平坦水面 STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}生成平坦水面 STR_SE_MAPGEN_RANDOM_LAND :{WHITE}随机地面 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}地面高度: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}提升地面高度 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}降低地面高度 STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}改变地面的高度 # Map generation progress STR_GENERATION_WORLD :{WHITE}正在生成地图…… STR_GENERATION_ABORT :{BLACK}放弃 STR_GENERATION_ABORT_CAPTION :{WHITE}放弃生成地图 STR_GENERATION_ABORT_MESSAGE :{YELLOW}确定要放弃正在生成的地图吗? STR_GENERATION_PROGRESS :{WHITE}已完成 {NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}地图生成 STR_GENERATION_RIVER_GENERATION :{BLACK}生成河流 STR_GENERATION_TREE_GENERATION :{BLACK}生成树木 STR_GENERATION_OBJECT_GENERATION :{BLACK}生成固定设施 STR_GENERATION_CLEARING_TILES :{BLACK}生成岩石地貌 STR_GENERATION_SETTINGUP_GAME :{BLACK}设置游戏 STR_GENERATION_PREPARING_TILELOOP :{BLACK}地貌细节生成 STR_GENERATION_PREPARING_SCRIPT :{BLACK}当前脚本 STR_GENERATION_PREPARING_GAME :{BLACK}准备游戏 # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF 设置 STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}NewGRF 详细信息 STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}激活 NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}停用 NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}选择预设 STR_NEWGRF_FILTER_TITLE :{ORANGE}过滤器字符串: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}装载选定的预定义 STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}保存预定义 STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}将当前组保存为预定义 STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}为预定义组起名 STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}删除预定义组 STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}删掉当前预定义组 STR_NEWGRF_SETTINGS_ADD :{BLACK}增加 STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}将选定的 NewGRF 文件添加到你的配置中 STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}重新检索文件 STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}刷新可用的 NewGRF 文件列表 STR_NEWGRF_SETTINGS_REMOVE :{BLACK}删除 STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}从列表中删除一个 NewGRF 文件 STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}上移 STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}将选定的 NewGRF 文件向上移动 STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}下移 STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}将选定的 NewGRF 文件向下移动 STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}已经安装的 NewGRF 文件列表{}点击可以改变参数 STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}设置参数 STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}显示参数 STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}切换调色板 STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}切换选定GRF的调色.{}本功能用于游戏使用时GRF呈粉色 STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}应用 STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}在线查找缺失的扩展包 STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}看看您需要的扩展包是否能在线找到 STR_NEWGRF_SETTINGS_FILENAME :{BLACK}文件名:{SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID:{SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}版本: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}最低兼容版本: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5 码:{SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}调色板: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}参数:{SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}没有可用的信息 STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}没有找到对应的文件 STR_NEWGRF_SETTINGS_DISABLED :{RED}禁用 STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}与此版本OpenTTD不兼容 # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}调整 NewGRF 参数 STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}关闭 STR_NEWGRF_PARAMETERS_RESET :{BLACK}重置 STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}全部参数恢复默认 STR_NEWGRF_PARAMETERS_DEFAULT_NAME :参数 {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}参数数目: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}检查 - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parent STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}检查该对象的 Parent scope STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :物件 STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :铁路类型 STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x 参数 (十六进制) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}定位 sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}下一个 sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}继续处理下个正常的 sprite,略过任何伪 (pseudo)/重新着色/文字 sprite 及结尾的换行标记。 STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}前往 sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}前往选定的sprite。若其不正常,则继续前进到下个sprite。 STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一个 sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}继续处理上一个正常的 sprite,略过任何伪 (pseudo)/重新着色/文字 sprite 及开头的换行标记。 STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}显示目前选取的 sprite。当 sprite 正在描绘时会忽略其定位。 STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}移动 sprite 到指定的 X 与 Y 座标位移 STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X 座标位移: {NUM}, Y 座标位移: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}选择 sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}请从屏幕画面中任意选取一个 sprite STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}前往sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}错误:{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}严重错误:{SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}发生了一个致命的NewGRF错误: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} 不能与 OpenTTD 报告的 TTDPatch 版本兼容。 STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} 是为 {STRING} 版 TTD 开发的。 STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} 应当与 {STRING} 配合 STR_NEWGRF_ERROR_INVALID_PARAMETER :{1:STRING} 参数错误:参数 {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} 必须在 {STRING} 前加载。 STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} 必须在 {STRING} 后加载。 STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} 需要OpenTTD V {STRING} 或更高版本 STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF 被设计为可平移 STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :加载的NewGRF太多 STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :使用 {1:STRING} 为静态 NewGRF 与 {STRING} 可能造成同步错误 STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :异常sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :未知的Action 0 属性 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :尝试使用非法ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} 含有损坏的图形元素{}所有损坏的图形元素{}将显示为红色的问号(?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :具有多个Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :图像读取时发生越界错误 (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}当前基础图组缺失参数.{}请进行修正 STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}当前使用的基础图形包参数有误。{}请更新基础图形包。{}如果你正在使用 {YELLOW}OPENTTD的开发测试版{WHITE},你需要 {YELLOW}相应配套的基础图形包。{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :GRF源文件不可访问 (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} 被 {STRING} 禁用 STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :错误/未知的sprite输出格式 (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}注意! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}此操作将要改变一个进行中的游戏,{}操作可能导致游戏崩溃,{}确定继续? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}不能添加文件:重复的 GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}未找到匹配的文件 (已载入兼容的 GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}加入的NewGRF文件达到上限,不能再新增。 STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}已为缺失的文件载入兼容的 GRF STR_NEWGRF_DISABLED_WARNING :{WHITE}缺失的 GRF 文件已经被禁用 STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}无法找到GRF文件 STR_NEWGRF_UNPAUSE_WARNING :{WHITE}取消暂停可能造成错误. 请不要把接下来可能发生的错误当做Bug.{}继续么? # NewGRF status STR_NEWGRF_LIST_NONE :空 STR_NEWGRF_LIST_ALL_FOUND :目前所有文件 STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}找到兼容文件 STR_NEWGRF_LIST_MISSING :{RED}缺失文件 # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}'的行为可能造成同步错误或是崩溃。 STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}{1:ENGINE}机车车厢的状态没在车库内发生变动 STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}当车辆不在车库中时,这将改变 '{1:ENGINE}' 的车辆长度. STR_BROKEN_VEHICLE_LENGTH :{WHITE}列车 '{VEHICLE}' 属于 '{COMPANY}' 使长度无效化了. 这可能是NewGRF导致的. 有可能会发生崩溃或同步错误. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' 的信息不正确 STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}购买'{1:ENGINE}' 后,将造成货物/运费的参数与购买列表不符,这将有可能造成自动更新/购买不成功。 STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' 产生了一个死循环 STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}回调函数 {1:HEX} 返回了一个未知/错误的结果 {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}正在扫描 NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}正在扫描 NewGRF。 这可能需要一些时间,取决于其数量... STR_NEWGRF_SCAN_STATUS :{BLACK}已扫描{NUM}个 NewGRF,预计 NewGRF总数为 {NUM} STR_NEWGRF_SCAN_ARCHIVES :正在扫描压缩包 # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}标志列表 - {COMMA} 个标志 STR_SIGN_LIST_MATCH_CASE :{BLACK}符合大小写 STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}显示大小写符合过滤字符串的标志列表 # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}标记标志文字 STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}前往下个标记 STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}前往上个标记 STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}为标记起名 # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}城镇 STR_TOWN_DIRECTORY_NONE :{ORANGE}- 没有 - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK} 城镇名称 点击名称可以将屏幕中心{}移动到城镇所在的位置. 单击的同时按住Ctrl会在新视点中显示城镇位置 STR_TOWN_POPULATION :{BLACK}所有城镇人口总数:{COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (都市) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}人口:{ORANGE}{COMMA}{BLACK} 房屋:{ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}上月旅客数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}上月邮包数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}城镇发展所必需的货物: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} 需要: {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} 冬季的需求 STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}已运输 {GREEN} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}已运输:{CARGO_TINY} /{RED}总需求: {CARGO_LONG} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (已运输) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}城镇每 {ORANGE}{COMMA}{BLACK} 天成长一次 STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}城镇每 {ORANGE}{COMMA}{BLACK} 天成长一次(加速中) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK} 城镇发展正在 {RED}停滞 {BLACK}! STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}当前城镇噪音: {ORANGE}{COMMA}{BLACK} 最大: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到城镇所在的位置. 单击的同时按住Ctrl会在新视点中显示城镇位置 STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}地方政府 STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}显示地方政府的信息 STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}城镇改名 STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}扩大规模 STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}增加城镇人口和面积 STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}删除 STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}完全删除这座城镇 STR_TOWN_VIEW_RENAME_TOWN_BUTTON :重命名城镇 # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} 地方政府 STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}对运输公司评价: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}可执行的操作: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}在本市可以执行的操作{}点击查看详细信息 STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}执行 STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}执行上面选定的项目 STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :小型广告宣传 STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :中型广告宣传 STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :大型广告宣传 STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :资助市政道路整修 STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :为公司设立雕像 STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :资助新房屋建设 STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :购买运输专营权 STR_LOCAL_AUTHORITY_ACTION_BRIBE :贿赂地方政府 STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}进行小型的广告宣传,以吸引更多的旅客和货物选择贵公司的服务.{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}进行中型的广告宣传,以吸引更多的旅客和货物选择贵公司的服务.{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}进行大型的广告宣传,以吸引更多的旅客和货物选择贵公司的服务.{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}资助市政道路进行重建,将造成市内交通阻断 6 个月。{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}以公司的名义设立一尊塑像。{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}资助市内建设新的商业设施。{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}购买该市一年的运输专营权, 其间该市的乘客及货物只允许选用贵公司的运输服务。{}费用:{CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}贿赂地方政府以提高评价,但有被发现后严厉惩罚的风险。{}费用:{CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}目标 STR_GOALS_GLOBAL_TITLE :{BLACK}全球目标: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- 无目标 - STR_GOALS_COMPANY_TITLE :{BLACK}公司目标: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}点击使得视图移动到该工业/城镇/地块. Ctrl+左键 在该处创建一个视点. # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :帮助索引 STR_GOAL_QUESTION_CAPTION_INFORMATION :信息 STR_GOAL_QUESTION_CAPTION_WARNING :警告 STR_GOAL_QUESTION_CAPTION_ERROR :错误 ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :取消 STR_GOAL_QUESTION_BUTTON_OK :确定 STR_GOAL_QUESTION_BUTTON_NO :取消 STR_GOAL_QUESTION_BUTTON_YES :确定 STR_GOAL_QUESTION_BUTTON_DECLINE :降低 STR_GOAL_QUESTION_BUTTON_ACCEPT :接受 STR_GOAL_QUESTION_BUTTON_IGNORE :忽略 STR_GOAL_QUESTION_BUTTON_RETRY :重试 STR_GOAL_QUESTION_BUTTON_PREVIOUS :上一个 STR_GOAL_QUESTION_BUTTON_NEXT :下一个 STR_GOAL_QUESTION_BUTTON_STOP :停止 STR_GOAL_QUESTION_BUTTON_START :开始 STR_GOAL_QUESTION_BUTTON_GO :开始 STR_GOAL_QUESTION_BUTTON_CONTINUE :继续 STR_GOAL_QUESTION_BUTTON_RESTART :重新开启 STR_GOAL_QUESTION_BUTTON_POSTPONE :暂缓 STR_GOAL_QUESTION_BUTTON_SURRENDER :放弃 STR_GOAL_QUESTION_BUTTON_CLOSE :关闭 # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}财政补贴项目 STR_SUBSIDIES_OFFERED_TITLE :{BLACK}尚未中标的项目: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}将 {STRING} 从 {STRING} 运送到 {STRING}{YELLOW} (截止日期为 {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}没有 STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}已经中标的项目: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}将 {STRING} 从 {STRING} 运送到 {STRING}{YELLOW} ({COMPANY}{YELLOW},截止日期为 {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}点击项目可将屏幕中心移动到{}城镇/工业 所在的位置. 单击的同时按住Ctrl会在新视点中显示城镇/工业位置 # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}车站名称{}点击可将屏幕中心移动到车站所在位置. 单击的同时按住Ctrl会在新视点中显示车站位置 STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}按住 CTRL 可以同时选择多项 STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} 车站 STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- 没有 - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}选择全部运输工具种类 STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}选择所有货物类型{}(包括不在等待列表中的) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}选择无等待货物车站 # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}等待:{WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} 转运自 {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}接受 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}显示接受的货物列表 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}接受:{WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}这个车站在这个镇里享有独家经营权 STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 购买了本城镇专属经营权 STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}评价 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}显示车站评价 STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}对本站运输货物的评价: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :垃圾(最差评价) STR_CARGO_RATING_VERY_POOR :糟糕 STR_CARGO_RATING_POOR :较差 STR_CARGO_RATING_MEDIOCRE :一般 STR_CARGO_RATING_GOOD :较好 STR_CARGO_RATING_VERY_GOOD :优秀 STR_CARGO_RATING_EXCELLENT :卓越 STR_CARGO_RATING_OUTSTANDING :完美(最高评价) ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到车站所在的位置. 单击的同时按住Ctrl会在新视点中显示车站位置 STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}重命名车站 STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}显示所有调度计划中含有此车站的列车 STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}显示所有调度计划中含有此车站的汽车 STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}显示所有调度计划中含有此机场的飞机 STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}显示所有调度计划中含有此码头的船只 STR_STATION_VIEW_RENAME_STATION_CAPTION :重命名车站 STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}关闭机场 STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}禁止飞机降落本场 # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到路点所在的位置. 单击的同时按住Ctrl会在新视点中显示路点位置 STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}修改路点名 STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}将屏幕中心移动到浮标所在的位置. 单击的同时按住Ctrl会在新视点中显示浮标位置 STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}修改浮标名 STR_EDIT_WAYPOINT_NAME :{WHITE}编辑路点名称 # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} 财务报表 {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}收入/支出 STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}建设费用 STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}购置新运输工具 STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}铁路运行费用 STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}汽车运行费用 STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}航空运行费用 STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}船舶运行费用 STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}固定资产维护 STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}铁路运输收入 STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}公路运输收入 STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}航空运输收入 STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}水上运输收入 STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}贷款利息 STR_FINANCES_SECTION_OTHER :{GOLD}其他费用 STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}总计: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}流动资金 STR_FINANCES_LOAN_TITLE :{WHITE}已贷款额 STR_FINANCES_MAX_LOAN :{WHITE}最大贷款额度:{BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}贷款 {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}贷款{}Ctrl+点击 可贷款最大额度 STR_FINANCES_REPAY_BUTTON :{BLACK}还款 {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}偿还贷款{}Ctrl+点击 可最大额度偿还贷款 STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}设施 # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(总裁) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}开业时间:{WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}色彩方案: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}车船概况: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} 列火车 STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} 辆汽车 STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} 架飞机 STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} 艘轮船 STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}无 STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}公司市值:{WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% 由 {COMPANY} 所有) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}设施: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} 轨道交通 STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} 道路 STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} 水运 STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} 站台 STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} 机场 STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}无 STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}设立总部 STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}建立公司总部 STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}查看总部 STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}查看公司总部 STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}重置总部 STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}以公司市值 1% 的代价重建总部,按住 Shift 键单击可以显示所需资金 STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}固定资产维护费明细 STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}显示详细的设施情况 STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}新的头像 STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}为总裁选择新头像 STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}色彩方案 STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}改变公司车船的颜色 STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}公司名称 STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}改变公司的名称 STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}总裁姓名 STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}为总裁改名 STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}购买其 25% 的股份 STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}出售其 25% 的股份 STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}购买此公司 25% 的股份,按住 Shift 键单击可以显示所需资金 STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}出售此公司 25% 的股份,按住 Shift 键单击可以显示预计收入 STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :公司名称 STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :总裁姓名 STR_BUY_COMPANY_MESSAGE :{WHITE}我们正在寻找一家愿意收购我们的公司。{}{}您愿意收购 {COMPANY} ({CURRENCY_LONG}) 吗? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} 的设施 STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}铁路: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}信号灯 STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}道路: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}普通道路 STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}电车线路 STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}水运: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}运河 STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}站台: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}车站 STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}机场 STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}每年{1:CURRENCY_LONG} ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}每年{CURRENCY_LONG} # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}工业设施 STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- 没有 - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% 已运输) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% 已运输) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}工业设施{}点击可以将屏幕中心移动到其所在位置. 单击的同时按住Ctrl会在新视点中显示工业位置 # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}上月产量: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% 已运输) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到工厂所在的位置. 单击的同时按住Ctrl会在新视点中显示工厂位置 STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}生产程度: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}等待的货物: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}产出: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}产出: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}改变产量 STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}修改产量 (百分比, 最高 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} 列火车 STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} 辆汽车 STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} 艘轮船 STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} 架飞机 STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}列车 - 点击可以查看详细信息 STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}汽车 - 单击车辆可以查看详细信息 STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}船只列表 - 点击可以查看详细信息 STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}飞机 - 点击可以查看详细信息 STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}今年利润:{CURRENCY_LONG} (去年利润:{CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :可用的列车 STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :可用的汽车 STR_VEHICLE_LIST_AVAILABLE_SHIPS :可用的船只 STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :可用的飞机 STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}查看此运输工具类型的{}全部可选购列表 STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}管理列表 STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}向所有在此列表中的运输工具发出指令 STR_VEHICLE_LIST_REPLACE_VEHICLES :替换车辆/飞机/船只 STR_VEHICLE_LIST_SEND_FOR_SERVICING :进行保养 STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :前往列车车库 STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :前往汽车车库 STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :前往船坞 STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :前往机库 STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}点击这里可以停止列表中的{}所有车辆/船只/飞机 STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}点击这里可以启动列表中的{}所有车辆/船只/飞机 STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}与 {COMMA} 车辆/船只/飞机共享调度计划 # Group window STR_GROUP_ALL_TRAINS :全部火车 STR_GROUP_ALL_ROAD_VEHICLES :全部汽车 STR_GROUP_ALL_SHIPS :全部船只 STR_GROUP_ALL_AIRCRAFTS :全部飞机 STR_GROUP_DEFAULT_TRAINS :未分组火车 STR_GROUP_DEFAULT_ROAD_VEHICLES :未分组汽车 STR_GROUP_DEFAULT_SHIPS :未分组船只 STR_GROUP_DEFAULT_AIRCRAFTS :未分组飞机 STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}组 - 点击以列出本组所有车辆 STR_GROUP_CREATE_TOOLTIP :{BLACK}创建分组 STR_GROUP_DELETE_TOOLTIP :{BLACK}删除分组 STR_GROUP_RENAME_TOOLTIP :{BLACK}重命名该分组 STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}点击以停止本组自动更新功能的使用 STR_GROUP_ADD_SHARED_VEHICLE :添加共享车辆 STR_GROUP_REMOVE_ALL_VEHICLES :移除所有车辆 STR_GROUP_RENAME_CAPTION :{BLACK}移除分组 # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :购买普通列车 STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :购买电气化列车 STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :购买单轨列车 STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :购买磁悬浮列车 STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :新列车 STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :购买汽车 STR_BUY_VEHICLE_SHIP_CAPTION :购买船只 STR_BUY_VEHICLE_AIRCRAFT_CAPTION :购买飞机 STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK} 重量:{GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}速度:{GOLD}{VELOCITY}{BLACK} 功率:{GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}速度:{GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}在海洋上的速度: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}在河流上的速度: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}运行费用:{GOLD}{CURRENCY_LONG}/年 STR_PURCHASE_INFO_CAPACITY :{BLACK}运载能力:{GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(可改装) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}设计日期:{GOLD}{NUM}{BLACK} 寿命:{GOLD}{COMMA} 年 STR_PURCHASE_INFO_RELIABILITY :{BLACK}最大可靠性:{GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}售价:{GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}重量:{GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}售价:{GOLD}{CURRENCY_LONG}{BLACK} 速度:{GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}运载能力:{GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}功率:{GOLD}+{POWER}{BLACK} 重量:{GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}可改装为:{GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :所有类型 STR_PURCHASE_INFO_ALL_BUT :除了 {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牵引力:{GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}航行距离: {GOLD}{COMMA} 格 STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列车选择列表 - 点击可以查看详细信息 STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}汽车列表 - 点击可以查看详细信息 STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}船只列表 - 点击可以查看详细信息 STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞机列表 - 点击可以查看详细信息 STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}购买车头/车厢 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}购买汽车 STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}购买船只 STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}购买飞机 STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的列车,按住 Shift 键单击可以显示所需资金 STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的汽车,按住 Shift 键单击可以显示所需资金 STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的船只,按住 Shift 键单击可以显示所需资金 STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}购买选定的飞机,按住 Shift 键单击可以显示所需资金 STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}重命名 STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}重命名 STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}重命名 STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}重命名飞机 STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}重命名列车型号 STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}重命名汽车型号 STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}重命名船只型号 STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}重命名飞机型号 STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}重命名车辆的类型 STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}重命名汽车型号 STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}重命名船只型号 STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}重命名飞机型号 # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}修改车库名 STR_DEPOT_RENAME_DEPOT_CAPTION :重命名车库 STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} 车辆{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}列车 - 左键拖动可调整车厢,右击可查看详情。按Ctrl执行上述操作可同时操作之后车厢。 STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}汽车 - 右击可查看详细信息 STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}船只 - 右击可查看详细信息 STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}飞机 - 右击可查看详细信息 STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}将列车拖到这里以出售 STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}将汽车拖到这里以出售 STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}将船只拖到这里以出售 STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}将飞机拖到这里以出售 STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}将车头拖到这里可以出售整列火车 STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}出售车库中的所有列车 STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}出售车库中的所有汽车 STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}出售船坞中的所有船只 STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}出售机库中的所有飞机 STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}自动更新车库中的所有列车 STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}自动更新车库中的所有汽车 STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}自动更新船坞中的所有船只 STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}自动更新机库中的所有飞机 STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}购买列车 STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}购买汽车 STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}购买船只 STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}购买飞机 STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}购买新的列车 STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}购买 STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}购买新船只 STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}购买飞机 STR_DEPOT_CLONE_TRAIN :{BLACK}克隆列车 STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}克隆汽车 STR_DEPOT_CLONE_SHIP :{BLACK}克隆船只 STR_DEPOT_CLONE_AIRCRAFT :{BLACK}克隆飞机 STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}复制列车。按此按钮后{}点击一辆在车库内或外面的列车即可{}按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}复制汽车。按此按钮后{}点击一辆在车库内或外面的汽车即可{}按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}复制船只。按此按钮后{}点击一个在船坞内或外面的船只即可。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}复制飞机。按此按钮后{}点击一个在机库内或外面的飞机即可。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到列车库所在的位置. 单击的同时按住Ctrl会在新视点中显示列车库位置 STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到车库所在的位置. 单击的同时按住Ctrl会在新视点中显示车库位置 STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前船坞的位置. 单击的同时按住Ctrl会在新视点中显示船坞位置 STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到当前机库的位置. 单击的同时按住Ctrl会在新视点中显示机库位置 STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}显示所有调度计划中含有此车库的列车 STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}显示所有调度计划中含有此车库的汽车 STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}显示所有调度计划中含有此船坞的船只 STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}显示所有调度计划中含有此机库的飞机 STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}点击这里可以停止车库的所有列车 STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}点击这里可以停止车库的所有汽车 STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}点击这里可以停止船坞的所有船只 STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}点击这里可以停止机库的所有飞机 STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}点击这里可以启动车库的所有列车 STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}点击这里可以启动车库的所有汽车 STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}点击这里可以启动船坞的所有船只 STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}点击这里可以启动机库的所有飞机 STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}你将要出售车库中的所有车辆,确定吗? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}来自供货商的消息 STR_ENGINE_PREVIEW_MESSAGE :{GOLD}我们新近设计了一款{STRING}{}您愿意在产品正式上市前试用一年吗? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :火车机车 STR_ENGINE_PREVIEW_ROAD_VEHICLE :汽车 STR_ENGINE_PREVIEW_AIRCRAFT :飞机 STR_ENGINE_PREVIEW_SHIP :船只 STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :单轨机车 STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :磁悬浮机车 STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}售价:{CURRENCY_LONG} 重量:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER}{}运行费用:{CURRENCY_LONG}/年{}运载能力: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}售价:{CURRENCY_LONG} 重量:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER} 最大牵引力:{6:FORCE}{}运行费用{4:CURRENCY_LONG}/年{}运载能力:{5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}售价:{CURRENCY_LONG} 最大速度:{VELOCITY}{}运载能力:{CARGO_LONG}, {CARGO_LONG}{}运行成本:{CURRENCY_LONG} /年 STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}售价:{CURRENCY_LONG} 最大速度:{VELOCITY}{}运载能力:{CARGO_LONG}{}运行成本:{CURRENCY_LONG} /年 STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}费用: {CURRENCY_LONG} 最大速度: {VELOCITY} 航行距离: {COMMA} 格{}运载量: {CARGO_LONG}, {CARGO_LONG}{}运营成本: {CURRENCY_LONG}/年 STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}购买费用: {CURRENCY_LONG} 最大速度: {VELOCITY} 航行距离: {COMMA} 格{}运载量: {CARGO_LONG}{}运营成本: {CURRENCY_LONG}/年 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}更新 {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :火车 STR_REPLACE_VEHICLE_ROAD_VEHICLE :汽车 STR_REPLACE_VEHICLE_SHIP :船只 STR_REPLACE_VEHICLE_AIRCRAFT :飞机 STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}选择要更新的车辆类型 STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}选择用来替换左侧指定车辆的新车辆 STR_REPLACE_VEHICLES_START :{BLACK}开始更新 STR_REPLACE_VEHICLES_NOW :马上替换所有的车辆 STR_REPLACE_VEHICLES_WHEN_OLD :只替换旧的 STR_REPLACE_HELP_START_BUTTON :{BLACK}点击这里开始根据选定的车辆进行更新 STR_REPLACE_NOT_REPLACING :{BLACK}没有更新 STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}请选择要更新的对象 STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} 变老旧时 STR_REPLACE_VEHICLES_STOP :{BLACK}停止更新 STR_REPLACE_HELP_STOP_BUTTON :{BLACK}点击这里可以停止继续更新车辆 STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}替换项目: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}可以切换 机车/挂车 替换项目 STR_REPLACE_ENGINES :机车 STR_REPLACE_WAGONS :挂车 STR_REPLACE_HELP_RAILTYPE :{BLACK}选择要更新的车辆对应的铁路类型 STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}显示用来替换左侧被选定车辆的新车辆 STR_REPLACE_RAIL_VEHICLES :普通列车 STR_REPLACE_ELRAIL_VEHICLES :电力机车 STR_REPLACE_MONORAIL_VEHICLES :单轨列车 STR_REPLACE_MAGLEV_VEHICLES :磁悬浮列车 STR_REPLACE_REMOVE_WAGON :{BLACK}清理挂车:{ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}当车辆升级可能造成列车变长时{}自动从最前面的挂车去掉若干节以保证列车长度不变 # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到列车所在的位置. 单击的同时按住Ctrl则主窗口会跟踪列车的路线 STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到车辆所在的位置. 单击的同时按住Ctrl则主窗口会跟踪车辆的路线 STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到船只所在的位置. 单击的同时按住Ctrl则主窗口会跟踪船只的航线 STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}将屏幕中心移动到飞机所在的位置. 单击的同时按住Ctrl则主窗口会跟踪飞机的航线 STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令列车返回车库 STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令汽车前往车库{}Ctrl+单击 时汽车只进行保养 STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令船只前往船坞{}Ctrl+单击 时船只只进行保养 STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}命令飞机前往机库{}Ctrl+单击 时飞机只进行保养 STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}复制这列火车。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}复制这辆汽车。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}复制这条船只。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}复制这架飞机。按住 Ctrl 键单击可以同时共享调度计划,按住 Shift 键单击可以显示所需资金 STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}命令列车强行通过信号 STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}改装列车以装载另一类型的货物 STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}改装汽车以运载其他货物 STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}改装船只以装载其他类型货物 STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}改装飞机装载货物的类型 STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}命令列车调头 STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}强制汽车掉头 STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}显示列车的调度计划. 单击的同时按住Ctrl以显示列车的时刻表 STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}显示车辆的调度指令. 单击的同时按住Ctrl以显示车辆的时刻表 STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}显示船只的调度计划. 单击的同时按住Ctrl以显示船只的时刻表 STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}显示飞机的调度计划. 单击的同时按住Ctrl以显示飞机的时刻表 STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}显示列车的详细信息 STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}显示汽车的详细信息 STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}显示船只的详情 STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}显示飞机的详情 STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}当前列车状态{}点击可以 启动/停止 列车。Ctrl+点击切换至目的地。 STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}当前车辆的任务{}单击这里可以 停止/启动 车辆。Ctrl+点击切换至目的地。 STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}当前船只的任务{}点击可以 启动/停止 船只。Ctrl+点击切换至目的地。 STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}飞机当前的状态{}点击可以 停止/启动 飞机。 Ctrl+点击 切换至目的地 # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}装载/卸货 STR_VEHICLE_STATUS_LEAVING :{LTBLUE}发车 STR_VEHICLE_STATUS_CRASHED :{RED}撞毁! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}抛锚 STR_VEHICLE_STATUS_STOPPED :{RED}停运 STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}正在停止,{VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}没有电力 STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}等待空余轨道 STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}距离下一目的地过远 STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}正在前往 {STATION},{VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}没有目标,{VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}正在前往{WAYPOINT},{VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}正前往 {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}正在服务于 {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}已停止 STR_VEHICLE_COMMAND_STOPPED :{RED}已停止 STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}已开始 STR_VEHICLE_COMMAND_STARTED :{GREEN}已开始 # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (详细信息) STR_VEHICLE_NAME_BUTTON :{BLACK}名称 STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}给列车命名 STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}命名汽车 STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}命名船只 STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}命名飞机 STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}年龄:{LTBLUE}{STRING}{BLACK} 运行成本:{LTBLUE}{CURRENCY_LONG} /年 # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} 年 ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} 年 ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最大速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}最大速度: {LTBLUE}{VELOCITY} {BLACK}航行距离: {LTBLUE}{COMMA} 格 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} {BLACK}最大牵引力:{LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}今年利润:{LTBLUE}{CURRENCY_LONG} (去年利润:{CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}可靠性:{LTBLUE}{COMMA}% {BLACK}上次保养后抛锚的次数:{LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}建造年份:{LTBLUE}{NUM}{BLACK} 价值:{LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}运载能力: {LTBLUE}无{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}运载能力:{LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}运载能力:{LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}运载能力:{LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}转运成本: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}保养周期:{LTBLUE}{COMMA}天{BLACK} 上次保养:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}保养周期:{LTBLUE}{COMMA}%{BLACK} 上次保养:{LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}增大检修时间间隔,以10为单位进行调整. 按住Ctrl同时点击则以5为单位进行调整 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}减少检修时间间隔,以10为单位进行调整. 按住Ctrl同时点击则以5为单位进行调整 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}更改服务时间间隔类型 STR_VEHICLE_DETAILS_DEFAULT :默认 STR_VEHICLE_DETAILS_DAYS :天 STR_VEHICLE_DETAILS_PERCENT :百分比 STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}给列车命名 STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}命名汽车 STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}命名船只 STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}命名飞机 # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} 建造年份:{LTBLUE}{NUM}{BLACK} 价值:{LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} 价值:{LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}全车的装载能力为: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}空 STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} (来自 {STATION}) STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} (来自 {STATION} (x{NUM})) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}货物 STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}显示运载货物的详情 STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}信息 STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}显示列车的性能参数 STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}运载能力 STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}显示列车的运载能力 STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}全部货物 STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}根据不同的挂车种类显示相应的总运力 STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}运力: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (改装) STR_REFIT_TITLE :{GOLD}选择要运输的货物类型: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}新的装载能力:{GOLD}{CARGO_LONG}{}{BLACK}改装费用:{RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}新装载量: {GOLD}{CARGO_LONG}{}{BLACK}改装后收入: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}新的运载类型: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}改装所需: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}新装载量: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}改装后收入: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}请选择要改装的车辆. 拖动鼠标可多选.点击空白区域选择整辆列车. Ctrl+左键 选定该车厢及其之后车厢。 STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}选择希望列车装载的货物类型 STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}选择要运输的货物类型: STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}选择希望船只装载的货物类型 STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}选择希望飞机装载的货物类型 STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}改装列车 STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}改装汽车 STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}改装船只 STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}改装飞机 STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}让列车装载高亮选定的货物 STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}改装汽车以运输选择的货物类型 STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}改装船只以运输选择的货物类型 STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}改装飞机以运输选择的货物类型 # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (调度计划) STR_ORDERS_TIMETABLE_VIEW :{BLACK}时间表 STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}切换到时间表视图 STR_ORDERS_LIST_TOOLTIP :{BLACK}调度列表{}单击一个调度指令以选定{}CTRL+左键{}将视点移动到相应的车站 STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :-- 调度计划结束 -- STR_ORDERS_END_OF_SHARED_ORDERS :- - 共享调度计划结束 - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}不停车 STR_ORDER_GO_TO :前往 STR_ORDER_GO_NON_STOP_TO :不停车前往 STR_ORDER_GO_VIA :通过 STR_ORDER_GO_NON_STOP_VIA :前往不停车 STR_ORDER_TOOLTIP_NON_STOP :{BLACK}改变当前选中车站停车时的执行动作 STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}装满任意货物 STR_ORDER_DROP_LOAD_IF_POSSIBLE :若有的话就装载 STR_ORDER_DROP_FULL_LOAD_ALL :装满所有货物 STR_ORDER_DROP_FULL_LOAD_ANY :装满任意货物 STR_ORDER_DROP_NO_LOADING :不装载 STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}改变当前选中车站装载时的执行动作 STR_ORDER_TOGGLE_UNLOAD :{BLACK}卸载全部 STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :若接受的话就卸载 STR_ORDER_DROP_UNLOAD :卸载全部 STR_ORDER_DROP_TRANSFER :联运 STR_ORDER_DROP_NO_UNLOADING :不卸载 STR_ORDER_TOOLTIP_UNLOAD :{BLACK}改变当前选中车站卸载时的执行动作 STR_ORDER_REFIT :{BLACK}改装 STR_ORDER_REFIT_TOOLTIP :{BLACK}选择要在调度计划中改装的货物类型{}CTRL+单击 可以去掉改装计划 STR_ORDER_REFIT_AUTO :{BLACK}自动改装 STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}选择在此调度计划内使用何种货物类型来自动改装。 Ctrl+单击以移除自动改装。自动改装仅在载具支持时进行。 STR_ORDER_DROP_REFIT_AUTO :固定货物 STR_ORDER_DROP_REFIT_AUTO_ANY :可用类型 STR_ORDER_SERVICE :{BLACK}保养 STR_ORDER_DROP_GO_ALWAYS_DEPOT :一直前进 STR_ORDER_DROP_SERVICE_DEPOT :若需要则维护 STR_ORDER_DROP_HALT_DEPOT :停留 STR_ORDER_SERVICE_TOOLTIP :{BLACK}除非需要在此处保养,否则跳过这一项目 STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}跳过所需的车辆数据值 # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :装载进度 STR_ORDER_CONDITIONAL_RELIABILITY :可靠性 STR_ORDER_CONDITIONAL_MAX_SPEED :最大速度 STR_ORDER_CONDITIONAL_AGE :寿命(年) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :需要维修 STR_ORDER_CONDITIONAL_UNCONDITIONALLY :总是 STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :剩余寿命年限 (年) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}如何比较车辆数据值与所给数据 STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :等于 STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :不等于 STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :少于 STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :小于等于 STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :大于 STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :大于等于 STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :为是 STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :为否 STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}要比较车辆的数据值 STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}请输入要比较的值 STR_ORDERS_SKIP_BUTTON :{BLACK}跳过 STR_ORDERS_SKIP_TOOLTIP :{BLACK}跳过当前命令并执行下一条命令{}CTRL+单击 可以跳过选定的命令 STR_ORDERS_DELETE_BUTTON :{BLACK}删除 STR_ORDERS_DELETE_TOOLTIP :{BLACK}删除高亮的调度命令 STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}删除全部调度 STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}退出共享调度计划 STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}退出共享调度计划。 按住 Ctrl 键单击可以同时清除此运输工具的调度计划。 STR_ORDERS_GO_TO_BUTTON :{BLACK}前往 STR_ORDER_GO_TO_NEAREST_DEPOT :前往最近的车库 STR_ORDER_GO_TO_NEAREST_HANGAR :前往最近的机库 STR_ORDER_CONDITIONAL :条件性命令跳过 STR_ORDER_SHARE :共享调度计划 STR_ORDERS_GO_TO_TOOLTIP :{BLACK}在调度列表的结尾或选定项目前{}增加一条新指令,按住Ctrl使命令为“装满任意货物”{}路点命令为“不停车”{}车库命令为“保养” STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}显示所有共享此调度计划的{}车辆/船只/飞机 # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :经过 {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :经过(不停) {WAYPOINT} STR_ORDER_SERVICE_AT :维修在 STR_ORDER_SERVICE_NON_STOP_AT :维修,不停靠于 STR_ORDER_NEAREST_DEPOT :最近的车库 STR_ORDER_NEAREST_HANGAR :最近的机库 STR_ORDER_TRAIN_DEPOT :火车车库 STR_ORDER_ROAD_VEHICLE_DEPOT :汽车车库 STR_ORDER_SHIP_DEPOT :船坞 STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(改装为 {STRING}) STR_ORDER_REFIT_STOP_ORDER :(改装为{STRING}并停留) STR_ORDER_STOP_ORDER :(停留) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(自动) STR_ORDER_FULL_LOAD :(装满全部货物) STR_ORDER_FULL_LOAD_ANY :(装满任意货物后离开) STR_ORDER_NO_LOAD :(不装载) STR_ORDER_UNLOAD :(卸载并若有就装货) STR_ORDER_UNLOAD_FULL_LOAD :(卸载并等待全部装满) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(卸载并装满任意货物离开) STR_ORDER_UNLOAD_NO_LOAD :(卸载并空车离开) STR_ORDER_TRANSFER :(联运并若有就装货) STR_ORDER_TRANSFER_FULL_LOAD :(联运并等待全部装满) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(联运并装满任意货物离开) STR_ORDER_TRANSFER_NO_LOAD :(联运并空车离开) STR_ORDER_NO_UNLOAD :(不卸载并若有就装货) STR_ORDER_NO_UNLOAD_FULL_LOAD :(不卸载并等待全部货物装满) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(不卸货并装满任意货物离开) STR_ORDER_NO_UNLOAD_NO_LOAD :(不卸货也不装货) STR_ORDER_AUTO_REFIT :(自动改装为运载 {STRING}) STR_ORDER_FULL_LOAD_REFIT :(装满所有货物,允许自动改装为运载 {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :装满任意货物,允许自动改装为运载 {STRING}) STR_ORDER_UNLOAD_REFIT :(卸货且装载,允许自动改装为运载 {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(卸货且装满所有货物,允许自动改装为运载 {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(卸货且装满任意货物,允许自动改装为运载 {STRING}) STR_ORDER_TRANSFER_REFIT :(联运且装载,允许自动改装为运载 {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(联运且装满所有货物,允许自动改装为运载 {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(联运且装满任意货物,允许自动改装为运载 {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(不卸货且装载,允许自动改装为运载 {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(不卸货且装满所有货物,允许自动改装为运载 {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(不卸货且装满任意货物,允许自动改装为运载 {STRING}) STR_ORDER_AUTO_REFIT_ANY :可用类型 STR_ORDER_STOP_LOCATION_NEAR_END :[月台近端] STR_ORDER_STOP_LOCATION_MIDDLE :[月台中间] STR_ORDER_STOP_LOCATION_FAR_END :[月台远端] STR_ORDER_OUT_OF_RANGE :{RED} (下一个目的地距离过远) STR_ORDER_CONDITIONAL_UNCONDITIONAL :跳至 {COMMA} STR_ORDER_CONDITIONAL_NUM :跳至 {COMMA} [ 当 {STRING} {STRING} {COMMA} ] STR_ORDER_CONDITIONAL_TRUE_FALSE :跳至 {COMMA} [ 当 {STRING} {STRING}] STR_INVALID_ORDER :{RED} (非法的调度计划) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (时间表) STR_TIMETABLE_ORDER_VIEW :{BLACK}命令 STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}切换到调度计划视图 STR_TIMETABLE_TOOLTIP :{BLACK}时间表 - 单击一个命令以选定。 STR_TIMETABLE_NO_TRAVEL :原地待命 STR_TIMETABLE_NOT_TIMETABLEABLE :行驶 (自动; 时间表按下一手动命令) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :行驶 (无时间表) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :限速 {2:VELOCITY} (无时间表) STR_TIMETABLE_TRAVEL_FOR :途中行驶 {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :开往{STRING} ,限速为 {VELOCITY} STR_TIMETABLE_STAY_FOR :并且停留 {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :并行驶{STRING} STR_TIMETABLE_DAYS :{COMMA} 天 STR_TIMETABLE_TICKS :{COMMA} 个时间标记 STR_TIMETABLE_TOTAL_TIME :{BLACK}该时间表需要 {STRING} 完成 STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}该时间表至少需要 {STRING} 完成(并非全部计划的时间) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}该车辆目前正点运行 STR_TIMETABLE_STATUS_LATE :{BLACK}该车辆目前晚点 {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}该车辆目前提前 {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}此时刻表尚未开始 STR_TIMETABLE_STATUS_START_AT :{BLACK}此时刻表将于 {STRING} 开始 STR_TIMETABLE_STARTING_DATE :{BLACK}起始日期 STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}选择此时刻表的起始日期 STR_TIMETABLE_CHANGE_TIME :{BLACK}改变时间 STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}改变高亮选择的命令执行的时间 STR_TIMETABLE_CLEAR_TIME :{BLACK}清除时间 STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}清除高亮选择的命令的执行时间 STR_TIMETABLE_CHANGE_SPEED :{BLACK}更改限速 STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}更改高亮调度命令的最高限速 STR_TIMETABLE_CLEAR_SPEED :{BLACK}取消限速 STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}清除高亮调度命令的最高限速 STR_TIMETABLE_RESET_LATENESS :{BLACK}清除晚点计数器 STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}重置晚点计数器,从而使车辆准时到达 STR_TIMETABLE_AUTOFILL :{BLACK}自动填充 STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}根据下一次运行的时间自动填充时间表{}(CRTL+单击 可保持等候时间) STR_TIMETABLE_EXPECTED :{BLACK}预期时间 STR_TIMETABLE_SCHEDULED :{BLACK}表定时间 STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}切换显示(根据实际情况计算的)预期时间或表定时间 STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}设置日期 STR_DATE_SET_DATE :{BLACK}设置日期 STR_DATE_SET_DATE_TOOLTIP :{BLACK}使用选择的日期作为此时刻表的起始日期 STR_DATE_DAY_TOOLTIP :{BLACK}选择日子 STR_DATE_MONTH_TOOLTIP :{BLACK}选择月份 STR_DATE_YEAR_TOOLTIP :{BLACK}选择年份 # AI debug window STR_AI_DEBUG :{WHITE}AI/脚本 调试 STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}AI名称 STR_AI_DEBUG_SETTINGS :{BLACK}AI 设置 STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}修改 AI 设置 STR_AI_DEBUG_RELOAD :{BLACK}重载 AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}关闭AI并重启AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}启用/停用 当 AI 记录信息符合断点字符串时中断执行的功能 STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}中断点: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}中断点 STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}当AI记录信息与该字符串相符时暂停游戏 STR_AI_DEBUG_MATCH_CASE :{BLACK}符合大小写 STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}切换对比AI 记录信息是否与断点字符串相符时是否要符合大小写 STR_AI_DEBUG_CONTINUE :{BLACK}继续 STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}取消暂停AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}查看此AI的调试输出 STR_AI_GAME_SCRIPT :{BLACK}游戏脚本 STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}查看脚本记录 STR_ERROR_AI_NO_AI_FOUND :找不到可用的AI。{}本AI是一个演示AI,并不会在游戏中做任何动作,{}您可以通过“在线查找扩展包”功能下载新的AI。 STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}您使用的一个AI崩溃了。请附上一张AI调试窗口的截图,将此错误通报AI作者。 STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI调试窗口只对服务器可用 # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI 设置 STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}下局游戏将启用这些脚本 STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}下局游戏将启用这些AI STR_AI_CONFIG_HUMAN_PLAYER :玩家 STR_AI_CONFIG_RANDOM_AI :随机 AI STR_AI_CONFIG_NONE :(无) STR_AI_CONFIG_MOVE_UP :{BLACK}上移 STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}在列表中将选择的AI上移 STR_AI_CONFIG_MOVE_DOWN :{BLACK}下移 STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}在列表中将选择的AI下移 STR_AI_CONFIG_GAMESCRIPT :{SILVER}游戏脚本 STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE :{BLACK}选择{STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :游戏脚本 STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}装在另一脚本 STR_AI_CONFIG_CONFIGURE :{BLACK}设定 STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}设定AI特征 # Available AIs window STR_AI_LIST_CAPTION :{WHITE}可用{STRING} STR_AI_LIST_CAPTION_AI :AI STR_AI_LIST_CAPTION_GAMESCRIPT :游戏脚本 STR_AI_LIST_TOOLTIP :{BLACK}点击选择 AI STR_AI_LIST_AUTHOR :{LTBLUE}作者: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}版本: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}接受 STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}选择高亮的 AI STR_AI_LIST_CANCEL :{BLACK}取消 STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}不修改本 AI # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} 参数 STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :游戏脚本 STR_AI_SETTINGS_CLOSE :{BLACK}关闭 STR_AI_SETTINGS_RESET :{BLACK}重设 STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :当前AI在前一个AI运行 {ORANGE}{STRING}天之后开始运行 # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} 的说明 STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} 的更新日志 STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} 的版权信息 STR_TEXTFILE_VIEW_README :{BLACK}查看说明 STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}更新日志 STR_TEXTFILE_VIEW_LICENCE :{BLACK}版权信息 # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}支出:{CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}支出:{CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}收入:{CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}收入:{CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}中转:{CURRENCY_LONG} STR_FEEDER :{YELLOW}中转:{CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}预计费用:{CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}预计收入:{CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}保存仍在继续{}请耐心等待…… STR_ERROR_AUTOSAVE_FAILED :{WHITE}自动保存失败 STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}不能读取驱动器 STR_ERROR_GAME_SAVE_FAILED :{WHITE}保存游戏失败{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}不能删除文件 STR_ERROR_GAME_LOAD_FAILED :{WHITE}游戏存档读取失败{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :内部错误: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :无法识别的存档 - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :该存档是新版本的。当前版本无法读取。 STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :文件无法读取 STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :文件无法写入 STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :数据完整性检查失败 STR_GAME_SAVELOAD_NOT_AVAILABLE :<不可用> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}游戏已保存为无电车版。所有电车已被去除。 # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}生成场景失败!无合适地点建设城镇。 STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}当前场景中没有城镇…… STR_ERROR_PNGMAP :{WHITE}无法从 PNG 文件中读取场景…… STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... 文件未找到。 STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... 不能转换图像格式{}请使用8位或24位PNG格式图片 STR_ERROR_PNGMAP_MISC :{WHITE}... 似乎出现了错误{}(可能是损坏的文件等) STR_ERROR_BMPMAP :{WHITE}无法从 BMP 文件中读取场景…… STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... 不能转换图像格式。 STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... 图像太大了 STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}缩放警告 STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}不推荐将源图片过度放缩,是否继续生成? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}只找到一个备用音效库;若您需要正式版音效,请通过在线扩展包下载安装音效库 # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}超大截图 STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}屏幕截图需要 {COMMA} x {COMMA} 像素。 截图将需要一段时间。确认继续截图? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}屏幕截图已经被成功保存为{} '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}屏幕截图失败! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}消息 STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}来自 {STRING} 的消息 # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}超过地图边界 STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}距离地图边界过近 STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}资金不足 - 需要 {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}需要平坦的地面 STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}土地倾斜的方向不对 STR_ERROR_CAN_T_DO_THIS :{WHITE}不能这样做…… STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必须先摧毁建筑 STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}无法清除这个区域…… STR_ERROR_SITE_UNSUITABLE :{WHITE}... 地点不合适 STR_ERROR_ALREADY_BUILT :{WHITE}... 已经建好了 STR_ERROR_OWNED_BY :{WHITE}归 {STRING} 所有 STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... 此区域由另一公司所有 STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... 景观数量限制已达上限 STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... 已达地块清理限制 STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... 已经达最大植树量 STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}名称重复!请重新命名. STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}目标位置有 {1:STRING} STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}暂停时不能进行此操作 # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} 地方政府不批准此操作…… STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}地方政府{}不同意在本市范围内再兴建一座机场 STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} 考虑到噪音控制,地方当局拒绝修建机场。 STR_ERROR_BRIBE_FAILED :{WHITE}您的桥梁修建计划受到了当地投资商的关注 # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}不能提高这里的地面…… STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}不能降低这里的地面…… STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}无法在此处变更地形... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}挖掘将破坏隧道 STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}已经是海平面了 STR_ERROR_TOO_HIGH :{WHITE}太高了 STR_ERROR_ALREADY_LEVELLED :{WHITE}... 已经平了 # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}不能为公司更名…… STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}不能更改总裁的名字…… STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}……最大贷款额度是{CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}不能再贷款了…… STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}没有要偿还的贷款了 STR_ERROR_CURRENCY_REQUIRED :{WHITE}需要{CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}不能偿还贷款…… STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}不能将银行的贷款送给别人…… STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}不能收购公司…… STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}不能设置公司总部 STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}不能购买此公司的股份…… STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}不能出售此公司的股份…… STR_ERROR_PROTECTED :{WHITE}这个公司刚刚开业,还不能进行股权交易…… # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}不能建设任何城镇 STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}不能重命名城镇…… STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}不能在这里建设城镇…… STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}无法扩展城镇... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}太靠近地图边缘了 STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}太靠近另一个城镇了 STR_ERROR_TOO_MANY_TOWNS :{WHITE}城镇太多了 STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}地图上没有多余的地方了 STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}这个城镇不会修建道路{}请在在"高级设置->经济->城镇"处{}设置允许城镇建设道路 STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}正在进行道路工程 STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}无法删除城镇...{}城镇范围内还有车站、车库或无法移除的区块 STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... 城市中心没有合适的地方放置公司塑像 # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}…… 游戏中的工业过多 STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}不能生成工业设施…… STR_ERROR_CAN_T_BUILD_HERE :{WHITE}不能在这里建设 {STRING} …… STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}不能在此处建设这种类型的工业设施…… STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}距离另一工业设施过近…… STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}必须先建设一个城镇…… STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}每个城镇只能建设一个…… STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}只能在人口超过 1200 的城镇建造…… STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}只能在雨林中建设…… STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}只能在沙漠中建设…… STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}只能在城镇中建设…… STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... 只能在靠近城市中心建造 STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}只能在低海拔区域建设…… STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}只能被放置在地图边缘…… STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}林场只能设置在雪线以上的地方…… STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... 只能在雪线以上建造 STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... 只能在雪线以下建造 # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}不能在这里建设火车站…… STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}不能建设公共汽车站 STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}不能建设汽车货场 STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}此处无法建设客运电车站... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}此处无法建设货运电车站... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}不能在这里新建码头…… STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}不能在这里兴建机场…… STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}与另一车站相连 STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}站区太大了…… STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}车站过多 STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}分体站台太多 STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}公共汽车站过多 STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}汽车货场过多 STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}距离另一车站过近 STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}距离另一码头过近 STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}距离另一机场过近 STR_ERROR_CAN_T_RENAME_STATION :{WHITE}不能重命名车站 STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}这是一条城镇所属的道路 STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}道路方向不对 STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... 途中型车站不能建在转角处 STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... 不能在岔路口修建过路型站台 # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}不能拆除站台的一部分…… STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}请先拆除火车站 STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}不能移除公共汽车站…… STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}不能移除汽车货场 STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}无法移除客运电车车站... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}无法移除货运电车车站... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}必须先拆除汽车站 STR_ERROR_THERE_IS_NO_STATION :{WHITE}... 这里没有车站 STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}必须先拆除火车站 STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}必须先拆除公共汽车站 STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}必须先拆除汽车货场 STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}请先拆除客运电车站 STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}请先移除货运电车车站 STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}必须先拆除码头 STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}您必须先拆除机场 # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}距离另一路点过近 STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}距离另一路点过近 STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}不能在这里设置路点…… STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}不能将浮标放置在这里。 STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}不能更改路点名称…… STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}不能从这里拆除路点…… STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}必须先拆除铁路路点 STR_ERROR_BUOY_IN_THE_WAY :{WHITE}指定的位置有浮标…… STR_ERROR_BUOY_IS_IN_USE :{WHITE}…… 浮标正在被其他公司使用 # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}不能在这里建设列车车库…… STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}不能在这里修建汽车车库…… STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}此处无法建造电车车库... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}不能在这里建造船坞…… STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}无法重命名车库... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... 列车只能停在车库中 STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}…… 必须停在车库中 STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... 船只只能在船坞内停下。 STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... 飞机只有在机库中才可停止 STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}只有列车停在车库中时才能更改挂车 STR_ERROR_TRAIN_TOO_LONG :{WHITE}列车过长 STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}无法调转车辆方向... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... 含有多节车辆 STR_ERROR_INCOMPATIBLE_RAIL_TYPES :铁路类型不匹配 STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}不能移动这项调度计划…… STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}尾部的列车机车必须和头部的一起协作…… STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}找不到附近的车库…… STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}在附近找不到车库 STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :车库类型错误 # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE}在更新后总长会过长 STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}当前没有进行中的车辆更新计划. STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(现金不够) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}不可能的铁轨组合 STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}必须先拆除信号灯 STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}没有合适的铁轨 STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}必须先拆除铁轨 STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}这是单行道或这条路被堵死了 STR_ERROR_CROSSING_DISALLOWED :{WHITE}该轨道类型不允许建设平交道 STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}不能在这里设置信号灯…… STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}不能在这里铺设铁轨…… STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}不能从这里拆除铁轨…… STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}不能从这里拆除信号灯…… STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}无法转换此处的信号灯… STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... 这里没有铁路 STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... 这里没有信号灯 STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}不能转换铁路的类型…… # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}必须先拆除公路 STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... 单行道无法连接路口 STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}不能在这里修筑公路…… STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}此处无法建造电车道... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}不能拆除这里的公路…… STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}无法移除此处的电车道... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... 这里没有道路 STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... 这里没有电车轨道 # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}不能在这里兴建运河…… STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}不能在这里兴建船闸…… STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}不能在这里加设河流... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}必须在水上建造…… STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}不能在水上建造…… STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}...不能建築在公海上 STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... 不能在运河上建设 STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... 不能在河流上建造…… STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}请先移除运河 STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}无法在此建设水渠…… # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}……此处已经有树木了 STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... 树木种类与地形不符 STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}不能在这里植树…… # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}不能在这里架设桥梁 STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}必须先拆除桥梁 STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}起止点不能相同 STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}桥梁起止点不在同一水平高度 STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}桥梁对于现有地形来说位置太低了 STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}起止两端必须在一条线上 STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}桥的两端必须都位于地面上 STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 桥梁太长 STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}桥梁终点将越出地图 # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}不能在这里开凿隧道…… STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}此处不适合作为隧道入口 STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}必须先拆除隧道 STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}规划位置中有另一条隧道 STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}隧道出口将超出地图边界 STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}隧道出口的地形无法处理 STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... 隧道过长 # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... 对象物太多 STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}无法建立物件... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}目标处有其他物体 STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}目标处有公司总部 STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}不能购买这个地块! STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}你已经拥有此地块! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}无法新建分组…… STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}无法删除分组…… STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}无法重命名分组…… STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}无法从该组移除所有运输工具 STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}无法添加运输工具到该组…… STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}无法添加共享指令的运输工具到该组…… # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}指定位置有列车 STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}指定的位置有汽车 STR_ERROR_SHIP_IN_THE_WAY :{WHITE}前方有另一艘船只…… STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}指定位置有飞机 STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}不能改造列车…… STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}不能改装汽车…… STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}不能改装船只…… STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}不能改装飞机…… STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}不能给列车命名... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}不能命名汽车…… STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}不能命名船只 STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}不能为飞机命名…… STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}不能 启动/停止 列车! STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}不能 停止/启动 汽车... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}不能 停止/启动 船只…… STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}不能 启动/停止 飞机 STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}不能命令列车前往车库…… STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}不能命令该汽车前往车库... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}不能命令船只前往船坞…… STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}不能命令飞机返回机库…… STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}不能购买列车…… STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}不能购买汽车... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}不能购买船只…… STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}不能购买飞机…… STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}不能重命名车辆的类型... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}不能重命名汽车型号…… STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}不能重命名船只型号…… STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}不能重命名型号类型…… STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}不能出售列车…… STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}不能出售汽车... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}不能出售船只…… STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}不能出售飞机…… STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}列车不可用 STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}车辆不可用 STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}船只不可用 STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}飞机不可用 STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}游戏中的车辆过多 STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}不能改变保养周期…… STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... 运具已撞毁 STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}没有可用的运输工具 STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}请改动您的 NewGRF 设置 STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}暂时沒有可用的运输工具 STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}在{DATE_SHORT}后开始新游戏,或使用一款能提供早期运输工具的NewGRF # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}不能让列车冒险通过信号... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}不能命令列车调头... STR_ERROR_TRAIN_START_NO_POWER :木有接触网! STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}车辆无法调头... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}飞机正在飞行 # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}没有多余的调度计划的位置了…… STR_ERROR_TOO_MANY_ORDERS :{WHITE}调度计划过多…… STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}不能插入新的调度计划…… STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}不能删除调度计划…… STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}不能执行这个命令…… STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}不能移动这条命令… STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}不能跳过当前命令… STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}不能跳转到选定的命令... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}车辆无法到达全部站点 STR_ERROR_CAN_T_ADD_ORDER :{WHITE}车辆无法到达那个车站 STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}一个共享此调度计划的载具无法到达那个车站 STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}不能共享调度计划…… STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}不能停止共享调度计划…… STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}不能复制调度计划…… STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}……距离前一目的地太远 STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... 飞机航行距离不足 # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}不能给车辆编制时间表… STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}车辆只能在站内等候。 STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此车辆将不停靠本站。 # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}……标志太多了 STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}不能在这里放置标志…… STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}不能更改标志的名称…… STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}无法删除标记... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :基于Transport Tycoon Deluxe(运输大亨豪华版)的模拟运营游戏 # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :运输大亨DOS豪华版原版图形包. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :运输大亨DOS豪华德语版原版图形包. STR_BASEGRAPHICS_WIN_DESCRIPTION :运输大亨Windows豪华版原版图形包. STR_BASESOUNDS_DOS_DESCRIPTION :运输大亨DOS豪华版原版音效包. STR_BASESOUNDS_WIN_DESCRIPTION :Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包. STR_BASESOUNDS_NONE_DESCRIPTION :一个空的音效包. STR_BASEMUSIC_WIN_DESCRIPTION :Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包 STR_BASEMUSIC_NONE_DESCRIPTION :一个没有实际内容的音乐包. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :高层写字楼 STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :写字楼 STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :小型公寓 STR_TOWN_BUILDING_NAME_CHURCH_1 :教堂 STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :大型写字楼 STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :别墅 STR_TOWN_BUILDING_NAME_HOTEL_1 :宾馆 STR_TOWN_BUILDING_NAME_STATUE_1 :雕像 STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :喷泉 STR_TOWN_BUILDING_NAME_PARK_1 :公园 STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :写字楼 STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :商场与写字楼 STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :现代写字楼 STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :仓库 STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :写字楼 STR_TOWN_BUILDING_NAME_STADIUM_1 :体育馆 STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :旧式住宅 STR_TOWN_BUILDING_NAME_COTTAGES_1 :农舍 STR_TOWN_BUILDING_NAME_HOUSES_1 :住宅 STR_TOWN_BUILDING_NAME_FLATS_1 :公寓 STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :高层写字楼 STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :商场和写字楼 STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :商场和写字楼 STR_TOWN_BUILDING_NAME_THEATER_1 :剧院 STR_TOWN_BUILDING_NAME_STADIUM_2 :体育场 STR_TOWN_BUILDING_NAME_OFFICES_1 :写字楼 STR_TOWN_BUILDING_NAME_HOUSES_2 :住宅 STR_TOWN_BUILDING_NAME_CINEMA_1 :电影院 STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :购物中心 STR_TOWN_BUILDING_NAME_IGLOO_1 :圆顶屋 STR_TOWN_BUILDING_NAME_TEPEES_1 :帐篷 STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :茶杯小屋 STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :猪猪银行 ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :煤矿 STR_INDUSTRY_NAME_POWER_STATION :火力发电厂 STR_INDUSTRY_NAME_SAWMILL :锯木厂 STR_INDUSTRY_NAME_FOREST :林场 STR_INDUSTRY_NAME_OIL_REFINERY :炼油厂 STR_INDUSTRY_NAME_OIL_RIG :钻井平台 STR_INDUSTRY_NAME_FACTORY :工厂 STR_INDUSTRY_NAME_PRINTING_WORKS :印刷厂 STR_INDUSTRY_NAME_STEEL_MILL :钢铁厂 STR_INDUSTRY_NAME_FARM :农场 STR_INDUSTRY_NAME_COPPER_ORE_MINE :铜矿 STR_INDUSTRY_NAME_OIL_WELLS :油田 STR_INDUSTRY_NAME_BANK :银行 STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :食品加工厂 STR_INDUSTRY_NAME_PAPER_MILL :造纸厂 STR_INDUSTRY_NAME_GOLD_MINE :金矿 STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :银行 STR_INDUSTRY_NAME_DIAMOND_MINE :钻石矿 STR_INDUSTRY_NAME_IRON_ORE_MINE :铁矿 STR_INDUSTRY_NAME_FRUIT_PLANTATION :果园 STR_INDUSTRY_NAME_RUBBER_PLANTATION :橡胶园 STR_INDUSTRY_NAME_WATER_SUPPLY :水厂 STR_INDUSTRY_NAME_WATER_TOWER :水塔 STR_INDUSTRY_NAME_FACTORY_2 :工厂 STR_INDUSTRY_NAME_FARM_2 :农场 STR_INDUSTRY_NAME_LUMBER_MILL :伐木场 STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :棉花糖森林 STR_INDUSTRY_NAME_CANDY_FACTORY :糖果厂 STR_INDUSTRY_NAME_BATTERY_FARM :电池农场 STR_INDUSTRY_NAME_COLA_WELLS :可乐泉 STR_INDUSTRY_NAME_TOY_SHOP :玩具店 STR_INDUSTRY_NAME_TOY_FACTORY :玩具工厂 STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :塑料喷泉 STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :跳跳水工厂 STR_INDUSTRY_NAME_BUBBLE_GENERATOR :泡泡小屋 STR_INDUSTRY_NAME_TOFFEE_QUARRY :太妃场 STR_INDUSTRY_NAME_SUGAR_MINE :蔗糖矿 ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :未命名 STR_SV_TRAIN_NAME :列车 {COMMA} STR_SV_ROAD_VEHICLE_NAME :汽车 {COMMA} STR_SV_SHIP_NAME :船只 {COMMA} STR_SV_AIRCRAFT_NAME :飞机 {COMMA} STR_SV_STNAME :{STRING} 站 STR_SV_STNAME_NORTH :{STRING} 北站 STR_SV_STNAME_SOUTH :{STRING} 南站 STR_SV_STNAME_EAST :{STRING} 东站 STR_SV_STNAME_WEST :{STRING} 西站 STR_SV_STNAME_CENTRAL :{STRING} 中心站 STR_SV_STNAME_TRANSFER :{STRING} 广场 STR_SV_STNAME_HALT :{STRING} 店 STR_SV_STNAME_VALLEY :{STRING} 谷 STR_SV_STNAME_HEIGHTS :{STRING} 台 STR_SV_STNAME_WOODS :{STRING} 林 STR_SV_STNAME_LAKESIDE :{STRING} 滨 STR_SV_STNAME_EXCHANGE :{STRING} 庄 STR_SV_STNAME_AIRPORT :{STRING} 机场 STR_SV_STNAME_OILFIELD :{STRING} 油田 STR_SV_STNAME_MINES :{STRING} 矿 STR_SV_STNAME_DOCKS :{STRING} 码头 STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} 村 STR_SV_STNAME_SIDINGS :{STRING} 坝 STR_SV_STNAME_BRANCH :{STRING} 岔口 STR_SV_STNAME_UPPER :前 {STRING} STR_SV_STNAME_LOWER :后 {STRING} STR_SV_STNAME_HELIPORT :{STRING} 停机楼 STR_SV_STNAME_FOREST :{STRING} 林场 STR_SV_STNAME_FALLBACK :{STRING} 车站 #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (蒸汽机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut 内燃机车 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut 内燃机车 STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (蒸汽机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (蒸汽机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (蒸汽机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (蒸汽机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (内燃机) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'亚洲之星' (电力) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :旅客车厢 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :邮政车厢 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :煤炭挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :油罐车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :牲畜棚车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :货物篷车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :谷物槽车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :木材挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :铁矿石槽车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :钢材挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :装甲挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :食品槽车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :纸张挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :铜矿石挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :水罐车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :水果挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :橡胶挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :蔗糖挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :棉花糖槽车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :太妃糖槽车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :泡泡罐车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :可乐罐车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :糖果篷车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :玩具篷车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :电池挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :跳跳汁挂车 STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :塑料挂车 STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :旅客车厢 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :邮政车厢 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :煤炭挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :油罐车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :牲畜篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :货物篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :谷物槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :木材挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :铁矿石槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :钢材挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :装甲挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :食品篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :纸张挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :铜矿石槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :水罐车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :水果挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :橡胶挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :蔗糖挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :棉花糖槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :太妃糖槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :泡泡篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :可乐罐车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :糖果篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :玩具篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :电池卡车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :跳跳汁挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :塑料挂车 STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (电力) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow 火箭 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :旅客车厢 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :邮政车厢 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :煤炭挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :油罐车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :牲畜篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :货物挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :谷物槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :木材挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :铁矿石挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :钢材挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :装甲挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :食品篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :纸张挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :铜矿石槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :水罐车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :水果挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :橡胶挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :蔗糖挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :棉花糖槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :太妃糖槽车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :泡泡篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :可乐罐车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :糖果蓬车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :玩具篷车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :电池挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :跳跳汁挂车 STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :塑料挂车 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal 巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard 巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster 巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII 超级巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI 巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII 巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII 巴士 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh 煤炭卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl 煤炭卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW 煤炭卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS 邮政卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard 邮政卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry 邮政卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover 邮政卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught 邮政卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow 邮政卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe 油罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster 油罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry 油罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott 牲畜蓬车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl 牲畜蓬车 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster 牲畜蓬车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh 货物卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead 货物卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss 货物卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford 谷物卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas 谷物卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss 谷物卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe 木材卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster 木材卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland 木材卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS 铁矿石卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl 铁矿石卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy 铁矿石卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh 钢材卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl 钢材卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling 钢材卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh 运钞车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl 运钞车 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster 运钞车 STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster 食品篷车 STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry 食品篷车 STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy 食品篷车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl 纸张卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh 纸张卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS 纸张卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS 铜矿石卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl 铜矿石卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss 铜矿石卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl 水罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh 水罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS 水罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh 水果卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl 水果卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling 水果卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh 橡胶卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl 橡胶卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT 橡胶卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover 蔗糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught 蔗糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow 蔗糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover 可乐罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught 可乐罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow 可乐罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover 棉花糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught 棉花糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow 棉花糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover 太妃糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught 太妃糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow 太妃糖卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover 玩具篷车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught 玩具篷车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow 玩具篷车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover 糖果卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught 糖果卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow 糖果卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover 电池卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught 电池卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow 电池卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover 跳跳汁罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught 跳跳汁罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow 跳跳汁罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover 塑料卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught 塑料卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow 塑料卡车 STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover 泡泡罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught 泡泡罐车 STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow 泡泡罐车 STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS 油轮 STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc 油轮 STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passenger 渡船 STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger 渡船 STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 气垫船 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug 客轮 STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake 客轮 STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate 货轮 STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell 货轮 STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover 货轮 STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut 货轮 STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan 协和客机 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario 直升机 STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 直升机 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut 直升机 ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} 浮标 STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} 浮标 #{COMMA} STR_FORMAT_COMPANY_NUM :(公司 {COMMA}) STR_FORMAT_GROUP_NAME :组 {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} 路点 STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} 路点 #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} 列车车库 STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} 列车车库 #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} 汽车车库 STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} 汽车车库 #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} 船坞 STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} 船坞 #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} 机库 STR_UNKNOWN_STATION :未知车站(目的地) STR_DEFAULT_SIGN_NAME :标志 STR_COMPANY_SOMEONE :某人 STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :观众, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/polish.txt0000644000000000000000000156370212246102561015455 0ustar rootroot##name Polish ##ownname Polski ##isocode pl_PL ##plural 7 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0415 ##grflangid 0x30 ##gender m f n ##case d c b n m w # $Id: polish.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nieokreślony tekst) STR_JUST_NOTHING :Nic # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Pasażerowie STR_CARGO_PLURAL_PASSENGERS.d :pasażerów STR_CARGO_PLURAL_PASSENGERS.c :pasażerom STR_CARGO_PLURAL_PASSENGERS.b :pasażerów STR_CARGO_PLURAL_PASSENGERS.n :pasażerami STR_CARGO_PLURAL_PASSENGERS.m :pasażerach STR_CARGO_PLURAL_PASSENGERS.w :pasażerowie STR_CARGO_PLURAL_COAL :Węgiel STR_CARGO_PLURAL_COAL.d :węgla STR_CARGO_PLURAL_COAL.c :węglowi STR_CARGO_PLURAL_COAL.b :węgiel STR_CARGO_PLURAL_COAL.n :węglem STR_CARGO_PLURAL_COAL.m :węglu STR_CARGO_PLURAL_COAL.w :węglu STR_CARGO_PLURAL_MAIL :Poczta STR_CARGO_PLURAL_MAIL.d :poczty STR_CARGO_PLURAL_MAIL.c :poczcie STR_CARGO_PLURAL_MAIL.b :pocztę STR_CARGO_PLURAL_MAIL.n :pocztą STR_CARGO_PLURAL_MAIL.m :poczcie STR_CARGO_PLURAL_MAIL.w :poczto STR_CARGO_PLURAL_OIL :Ropa STR_CARGO_PLURAL_OIL.d :ropy STR_CARGO_PLURAL_OIL.c :ropie STR_CARGO_PLURAL_OIL.b :ropę STR_CARGO_PLURAL_OIL.n :ropą STR_CARGO_PLURAL_OIL.m :ropie STR_CARGO_PLURAL_OIL.w :ropo STR_CARGO_PLURAL_LIVESTOCK :Żywiec STR_CARGO_PLURAL_LIVESTOCK.d :żywca STR_CARGO_PLURAL_LIVESTOCK.c :żywcowi STR_CARGO_PLURAL_LIVESTOCK.b :żywiec STR_CARGO_PLURAL_LIVESTOCK.n :żywcem STR_CARGO_PLURAL_LIVESTOCK.m :żywcu STR_CARGO_PLURAL_LIVESTOCK.w :żywcze STR_CARGO_PLURAL_GOODS :Towary STR_CARGO_PLURAL_GOODS.d :towarów STR_CARGO_PLURAL_GOODS.c :towarom STR_CARGO_PLURAL_GOODS.b :towary STR_CARGO_PLURAL_GOODS.n :towarami STR_CARGO_PLURAL_GOODS.m :towarach STR_CARGO_PLURAL_GOODS.w :towary STR_CARGO_PLURAL_GRAIN :Zboże STR_CARGO_PLURAL_GRAIN.d :zboża STR_CARGO_PLURAL_GRAIN.c :zbożu STR_CARGO_PLURAL_GRAIN.b :zboże STR_CARGO_PLURAL_GRAIN.n :zbożem STR_CARGO_PLURAL_GRAIN.m :zbożu STR_CARGO_PLURAL_GRAIN.w :zboże STR_CARGO_PLURAL_WOOD :Drewno STR_CARGO_PLURAL_WOOD.d :drewna STR_CARGO_PLURAL_WOOD.c :drewnu STR_CARGO_PLURAL_WOOD.b :drewno STR_CARGO_PLURAL_WOOD.n :drewnem STR_CARGO_PLURAL_WOOD.m :drewnie STR_CARGO_PLURAL_WOOD.w :drewno STR_CARGO_PLURAL_IRON_ORE :Ruda Żelaza STR_CARGO_PLURAL_IRON_ORE.d :rudy żelaza STR_CARGO_PLURAL_IRON_ORE.c :rudzie żelaza STR_CARGO_PLURAL_IRON_ORE.b :rudę żelaza STR_CARGO_PLURAL_IRON_ORE.n :rudą żelaza STR_CARGO_PLURAL_IRON_ORE.m :rudzie żelaza STR_CARGO_PLURAL_IRON_ORE.w :rudo żelaza STR_CARGO_PLURAL_STEEL :Stal STR_CARGO_PLURAL_STEEL.d :stali STR_CARGO_PLURAL_STEEL.c :stali STR_CARGO_PLURAL_STEEL.b :stal STR_CARGO_PLURAL_STEEL.n :stalą STR_CARGO_PLURAL_STEEL.m :stali STR_CARGO_PLURAL_STEEL.w :stali STR_CARGO_PLURAL_VALUABLES :Kosztowności STR_CARGO_PLURAL_VALUABLES.d :kosztowności STR_CARGO_PLURAL_VALUABLES.c :kosztownościom STR_CARGO_PLURAL_VALUABLES.b :kosztowności STR_CARGO_PLURAL_VALUABLES.n :kosztownościami STR_CARGO_PLURAL_VALUABLES.m :kosztownościach STR_CARGO_PLURAL_VALUABLES.w :kosztowności STR_CARGO_PLURAL_COPPER_ORE :Ruda miedzi STR_CARGO_PLURAL_COPPER_ORE.d :rudy miedzi STR_CARGO_PLURAL_COPPER_ORE.c :rudzie miedzi STR_CARGO_PLURAL_COPPER_ORE.b :rudę miedzi STR_CARGO_PLURAL_COPPER_ORE.n :rudą miedzi STR_CARGO_PLURAL_COPPER_ORE.m :rudzie miedzi STR_CARGO_PLURAL_COPPER_ORE.w :rudo miedzi STR_CARGO_PLURAL_MAIZE :Kukurydza STR_CARGO_PLURAL_MAIZE.d :kukurydzy STR_CARGO_PLURAL_MAIZE.c :kukurydzy STR_CARGO_PLURAL_MAIZE.b :kukurydzę STR_CARGO_PLURAL_MAIZE.n :kukurydzą STR_CARGO_PLURAL_MAIZE.m :kukurydzy STR_CARGO_PLURAL_MAIZE.w :kukurydzo STR_CARGO_PLURAL_FRUIT :Owoce STR_CARGO_PLURAL_FRUIT.d :owoców STR_CARGO_PLURAL_FRUIT.c :owocom STR_CARGO_PLURAL_FRUIT.b :owoce STR_CARGO_PLURAL_FRUIT.n :owocami STR_CARGO_PLURAL_FRUIT.m :owocach STR_CARGO_PLURAL_FRUIT.w :owoce STR_CARGO_PLURAL_DIAMONDS :Diamenty STR_CARGO_PLURAL_DIAMONDS.d :diamentów STR_CARGO_PLURAL_DIAMONDS.c :diamentom STR_CARGO_PLURAL_DIAMONDS.b :diamenty STR_CARGO_PLURAL_DIAMONDS.n :diamentami STR_CARGO_PLURAL_DIAMONDS.m :diamentach STR_CARGO_PLURAL_DIAMONDS.w :diamenty STR_CARGO_PLURAL_FOOD :Żywność STR_CARGO_PLURAL_FOOD.d :żywności STR_CARGO_PLURAL_FOOD.c :żywności STR_CARGO_PLURAL_FOOD.b :żywność STR_CARGO_PLURAL_FOOD.n :żywnością STR_CARGO_PLURAL_FOOD.m :żywności STR_CARGO_PLURAL_FOOD.w :żywności STR_CARGO_PLURAL_PAPER :Papier STR_CARGO_PLURAL_PAPER.d :papieru STR_CARGO_PLURAL_PAPER.c :papierowi STR_CARGO_PLURAL_PAPER.b :papier STR_CARGO_PLURAL_PAPER.n :papierem STR_CARGO_PLURAL_PAPER.m :papierze STR_CARGO_PLURAL_PAPER.w :papierze STR_CARGO_PLURAL_GOLD :Złoto STR_CARGO_PLURAL_GOLD.d :złota STR_CARGO_PLURAL_GOLD.c :złotu STR_CARGO_PLURAL_GOLD.b :złoto STR_CARGO_PLURAL_GOLD.n :złotem STR_CARGO_PLURAL_GOLD.m :złocie STR_CARGO_PLURAL_GOLD.w :złoto STR_CARGO_PLURAL_WATER :Woda STR_CARGO_PLURAL_WATER.d :wody STR_CARGO_PLURAL_WATER.c :wodzie STR_CARGO_PLURAL_WATER.b :wodę STR_CARGO_PLURAL_WATER.n :wodą STR_CARGO_PLURAL_WATER.m :wodzie STR_CARGO_PLURAL_WATER.w :wodo STR_CARGO_PLURAL_WHEAT :Pszenica STR_CARGO_PLURAL_WHEAT.d :pszenicy STR_CARGO_PLURAL_WHEAT.c :pszenicy STR_CARGO_PLURAL_WHEAT.b :pszenicę STR_CARGO_PLURAL_WHEAT.n :pszenicą STR_CARGO_PLURAL_WHEAT.m :pszenicy STR_CARGO_PLURAL_WHEAT.w :pszenico STR_CARGO_PLURAL_RUBBER :Kauczuk STR_CARGO_PLURAL_RUBBER.d :kauczuku STR_CARGO_PLURAL_RUBBER.c :kauczukowi STR_CARGO_PLURAL_RUBBER.b :kauczuk STR_CARGO_PLURAL_RUBBER.n :kauczukiem STR_CARGO_PLURAL_RUBBER.m :kauczuku STR_CARGO_PLURAL_RUBBER.w :kauczuku STR_CARGO_PLURAL_SUGAR :Cukier STR_CARGO_PLURAL_SUGAR.d :cukru STR_CARGO_PLURAL_SUGAR.c :cukrowi STR_CARGO_PLURAL_SUGAR.b :cukier STR_CARGO_PLURAL_SUGAR.n :cukrem STR_CARGO_PLURAL_SUGAR.m :cukrze STR_CARGO_PLURAL_SUGAR.w :cukrze STR_CARGO_PLURAL_TOYS :Zabawki STR_CARGO_PLURAL_TOYS.d :zabawek STR_CARGO_PLURAL_TOYS.c :zabawkom STR_CARGO_PLURAL_TOYS.b :zabawki STR_CARGO_PLURAL_TOYS.n :zabawkami STR_CARGO_PLURAL_TOYS.m :zabawkach STR_CARGO_PLURAL_TOYS.w :zabawki STR_CARGO_PLURAL_CANDY :Słodycze STR_CARGO_PLURAL_CANDY.d :słodyczy STR_CARGO_PLURAL_CANDY.c :słodyczom STR_CARGO_PLURAL_CANDY.b :słodycze STR_CARGO_PLURAL_CANDY.n :słodyczami STR_CARGO_PLURAL_CANDY.m :słodyczach STR_CARGO_PLURAL_CANDY.w :słodycze STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COLA.d :coli STR_CARGO_PLURAL_COLA.c :coli STR_CARGO_PLURAL_COLA.b :colę STR_CARGO_PLURAL_COLA.n :colą STR_CARGO_PLURAL_COLA.m :coli STR_CARGO_PLURAL_COLA.w :colo STR_CARGO_PLURAL_COTTON_CANDY :Wata Cukrowa STR_CARGO_PLURAL_COTTON_CANDY.d :waty cukrowej STR_CARGO_PLURAL_COTTON_CANDY.c :wacie cukrowej STR_CARGO_PLURAL_COTTON_CANDY.b :watę cukrową STR_CARGO_PLURAL_COTTON_CANDY.n :watą cukrową STR_CARGO_PLURAL_COTTON_CANDY.m :wacie cukrowej STR_CARGO_PLURAL_COTTON_CANDY.w :wato cukrowa STR_CARGO_PLURAL_BUBBLES :Bąbelki STR_CARGO_PLURAL_BUBBLES.d :bąbelków STR_CARGO_PLURAL_BUBBLES.c :bąbelkom STR_CARGO_PLURAL_BUBBLES.b :bąbelki STR_CARGO_PLURAL_BUBBLES.n :bąbelkami STR_CARGO_PLURAL_BUBBLES.m :bąbelkach STR_CARGO_PLURAL_BUBBLES.w :bąbelki STR_CARGO_PLURAL_TOFFEE :Toffi STR_CARGO_PLURAL_TOFFEE.d :toffi STR_CARGO_PLURAL_TOFFEE.c :toffi STR_CARGO_PLURAL_TOFFEE.b :toffi STR_CARGO_PLURAL_TOFFEE.n :toffi STR_CARGO_PLURAL_TOFFEE.m :toffi STR_CARGO_PLURAL_TOFFEE.w :toffi STR_CARGO_PLURAL_BATTERIES :Baterie STR_CARGO_PLURAL_BATTERIES.d :baterii STR_CARGO_PLURAL_BATTERIES.c :bateriom STR_CARGO_PLURAL_BATTERIES.b :baterie STR_CARGO_PLURAL_BATTERIES.n :bateriami STR_CARGO_PLURAL_BATTERIES.m :bateriach STR_CARGO_PLURAL_BATTERIES.w :baterie STR_CARGO_PLURAL_PLASTIC :Plastik STR_CARGO_PLURAL_PLASTIC.d :plastiku STR_CARGO_PLURAL_PLASTIC.c :plastikowi STR_CARGO_PLURAL_PLASTIC.b :plastik STR_CARGO_PLURAL_PLASTIC.n :plastikiem STR_CARGO_PLURAL_PLASTIC.m :plastiku STR_CARGO_PLURAL_PLASTIC.w :plastiku STR_CARGO_PLURAL_FIZZY_DRINKS :Napoje Gazowane STR_CARGO_PLURAL_FIZZY_DRINKS.d :napoi gazowanych STR_CARGO_PLURAL_FIZZY_DRINKS.c :napojom gazowanym STR_CARGO_PLURAL_FIZZY_DRINKS.b :napoje gazowane STR_CARGO_PLURAL_FIZZY_DRINKS.n :napojami gazowanymi STR_CARGO_PLURAL_FIZZY_DRINKS.m :napojach gazowanych STR_CARGO_PLURAL_FIZZY_DRINKS.w :napoje gazowane # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Pasażer STR_CARGO_SINGULAR_PASSENGER.d :pasażera STR_CARGO_SINGULAR_PASSENGER.c :pasażerowi STR_CARGO_SINGULAR_PASSENGER.b :pasażera STR_CARGO_SINGULAR_PASSENGER.n :pasażerem STR_CARGO_SINGULAR_PASSENGER.m :pasażerze STR_CARGO_SINGULAR_PASSENGER.w :pasażerze STR_CARGO_SINGULAR_COAL :Węgiel STR_CARGO_SINGULAR_COAL.d :węgla STR_CARGO_SINGULAR_COAL.c :węglowi STR_CARGO_SINGULAR_COAL.b :węgiel STR_CARGO_SINGULAR_COAL.n :węglem STR_CARGO_SINGULAR_COAL.m :węglu STR_CARGO_SINGULAR_COAL.w :węglu STR_CARGO_SINGULAR_MAIL :Poczta STR_CARGO_SINGULAR_MAIL.d :poczty STR_CARGO_SINGULAR_MAIL.c :poczcie STR_CARGO_SINGULAR_MAIL.b :pocztę STR_CARGO_SINGULAR_MAIL.n :pocztą STR_CARGO_SINGULAR_MAIL.m :poczcie STR_CARGO_SINGULAR_MAIL.w :poczto STR_CARGO_SINGULAR_OIL :Ropa STR_CARGO_SINGULAR_OIL.d :ropy STR_CARGO_SINGULAR_OIL.c :ropie STR_CARGO_SINGULAR_OIL.b :ropę STR_CARGO_SINGULAR_OIL.n :ropą STR_CARGO_SINGULAR_OIL.m :ropie STR_CARGO_SINGULAR_OIL.w :ropo STR_CARGO_SINGULAR_LIVESTOCK :Żywiec STR_CARGO_SINGULAR_LIVESTOCK.d :żywca STR_CARGO_SINGULAR_LIVESTOCK.c :żywcowi STR_CARGO_SINGULAR_LIVESTOCK.b :żywiec STR_CARGO_SINGULAR_LIVESTOCK.n :żywcem STR_CARGO_SINGULAR_LIVESTOCK.m :żywcu STR_CARGO_SINGULAR_LIVESTOCK.w :żywcu STR_CARGO_SINGULAR_GOODS :Towar STR_CARGO_SINGULAR_GOODS.d :towaru STR_CARGO_SINGULAR_GOODS.c :towarowi STR_CARGO_SINGULAR_GOODS.b :towar STR_CARGO_SINGULAR_GOODS.n :towarem STR_CARGO_SINGULAR_GOODS.m :towarze STR_CARGO_SINGULAR_GOODS.w :towarze STR_CARGO_SINGULAR_GRAIN :Zboże STR_CARGO_SINGULAR_GRAIN.d :zboża STR_CARGO_SINGULAR_GRAIN.c :zbożu STR_CARGO_SINGULAR_GRAIN.b :zboże STR_CARGO_SINGULAR_GRAIN.n :zbożem STR_CARGO_SINGULAR_GRAIN.m :zbożu STR_CARGO_SINGULAR_GRAIN.w :zboże STR_CARGO_SINGULAR_WOOD :Drewno STR_CARGO_SINGULAR_WOOD.d :drewna STR_CARGO_SINGULAR_WOOD.c :drewnu STR_CARGO_SINGULAR_WOOD.b :drewno STR_CARGO_SINGULAR_WOOD.n :drewnem STR_CARGO_SINGULAR_WOOD.m :drewnie STR_CARGO_SINGULAR_WOOD.w :drewno STR_CARGO_SINGULAR_IRON_ORE :Ruda Żelaza STR_CARGO_SINGULAR_IRON_ORE.d :rudy żelaza STR_CARGO_SINGULAR_IRON_ORE.c :rudzie żelaza STR_CARGO_SINGULAR_IRON_ORE.b :rudę żelaza STR_CARGO_SINGULAR_IRON_ORE.n :rudą żelaza STR_CARGO_SINGULAR_IRON_ORE.m :rudzie żelaza STR_CARGO_SINGULAR_IRON_ORE.w :rudo żelaza STR_CARGO_SINGULAR_STEEL :Stal STR_CARGO_SINGULAR_STEEL.d :stali STR_CARGO_SINGULAR_STEEL.c :stali STR_CARGO_SINGULAR_STEEL.b :stal STR_CARGO_SINGULAR_STEEL.n :stalą STR_CARGO_SINGULAR_STEEL.m :stali STR_CARGO_SINGULAR_STEEL.w :stali STR_CARGO_SINGULAR_VALUABLES :Kosztowność STR_CARGO_SINGULAR_VALUABLES.d :kosztowności STR_CARGO_SINGULAR_VALUABLES.c :kosztowności STR_CARGO_SINGULAR_VALUABLES.b :kosztowność STR_CARGO_SINGULAR_VALUABLES.n :kosztownością STR_CARGO_SINGULAR_VALUABLES.m :kosztowności STR_CARGO_SINGULAR_VALUABLES.w :kosztowności STR_CARGO_SINGULAR_COPPER_ORE :Ruda miedzi STR_CARGO_SINGULAR_COPPER_ORE.d :rudy miedzi STR_CARGO_SINGULAR_COPPER_ORE.c :rudzie miedzi STR_CARGO_SINGULAR_COPPER_ORE.b :rudę miedzi STR_CARGO_SINGULAR_COPPER_ORE.n :rudą miedzi STR_CARGO_SINGULAR_COPPER_ORE.m :rudzie miedzi STR_CARGO_SINGULAR_COPPER_ORE.w :rudo miedzi STR_CARGO_SINGULAR_MAIZE :Kukurydza STR_CARGO_SINGULAR_MAIZE.d :kukurydzy STR_CARGO_SINGULAR_MAIZE.c :kukurydzy STR_CARGO_SINGULAR_MAIZE.b :kukurydzę STR_CARGO_SINGULAR_MAIZE.n :kukurydzą STR_CARGO_SINGULAR_MAIZE.m :kukurydzy STR_CARGO_SINGULAR_MAIZE.w :kukurydzo STR_CARGO_SINGULAR_FRUIT :Owoc STR_CARGO_SINGULAR_FRUIT.d :owoca STR_CARGO_SINGULAR_FRUIT.c :owocowi STR_CARGO_SINGULAR_FRUIT.b :owoc STR_CARGO_SINGULAR_FRUIT.n :owocem STR_CARGO_SINGULAR_FRUIT.m :owocu STR_CARGO_SINGULAR_FRUIT.w :owocu STR_CARGO_SINGULAR_DIAMOND :Diament STR_CARGO_SINGULAR_DIAMOND.d :diamentu STR_CARGO_SINGULAR_DIAMOND.c :diamentowi STR_CARGO_SINGULAR_DIAMOND.b :diament STR_CARGO_SINGULAR_DIAMOND.n :diamentem STR_CARGO_SINGULAR_DIAMOND.m :diamencie STR_CARGO_SINGULAR_DIAMOND.w :diamencie STR_CARGO_SINGULAR_FOOD :Żywność STR_CARGO_SINGULAR_FOOD.d :żywności STR_CARGO_SINGULAR_FOOD.c :żywności STR_CARGO_SINGULAR_FOOD.b :żywność STR_CARGO_SINGULAR_FOOD.n :żywnością STR_CARGO_SINGULAR_FOOD.m :żywności STR_CARGO_SINGULAR_FOOD.w :żywności STR_CARGO_SINGULAR_PAPER :Papier STR_CARGO_SINGULAR_PAPER.d :papieru STR_CARGO_SINGULAR_PAPER.c :papierowi STR_CARGO_SINGULAR_PAPER.b :papier STR_CARGO_SINGULAR_PAPER.n :papierem STR_CARGO_SINGULAR_PAPER.m :papierze STR_CARGO_SINGULAR_PAPER.w :papierze STR_CARGO_SINGULAR_GOLD :Złoto STR_CARGO_SINGULAR_GOLD.d :złota STR_CARGO_SINGULAR_GOLD.c :złotu STR_CARGO_SINGULAR_GOLD.b :złoto STR_CARGO_SINGULAR_GOLD.n :złotem STR_CARGO_SINGULAR_GOLD.m :złocie STR_CARGO_SINGULAR_GOLD.w :złoto STR_CARGO_SINGULAR_WATER :Woda STR_CARGO_SINGULAR_WATER.d :wody STR_CARGO_SINGULAR_WATER.c :wodzie STR_CARGO_SINGULAR_WATER.b :wodę STR_CARGO_SINGULAR_WATER.n :wodą STR_CARGO_SINGULAR_WATER.m :wodzie STR_CARGO_SINGULAR_WATER.w :wodo STR_CARGO_SINGULAR_WHEAT :Pszenica STR_CARGO_SINGULAR_WHEAT.d :pszenicy STR_CARGO_SINGULAR_WHEAT.c :pszenicy STR_CARGO_SINGULAR_WHEAT.b :pszenicę STR_CARGO_SINGULAR_WHEAT.n :pszenicą STR_CARGO_SINGULAR_WHEAT.m :pszenicy STR_CARGO_SINGULAR_WHEAT.w :pszenico STR_CARGO_SINGULAR_RUBBER :Kauczuk STR_CARGO_SINGULAR_RUBBER.d :kauczuku STR_CARGO_SINGULAR_RUBBER.c :kauczukowi STR_CARGO_SINGULAR_RUBBER.b :kauczuk STR_CARGO_SINGULAR_RUBBER.n :kauczukiem STR_CARGO_SINGULAR_RUBBER.m :kauczuku STR_CARGO_SINGULAR_RUBBER.w :kauczuku STR_CARGO_SINGULAR_SUGAR :Cukier STR_CARGO_SINGULAR_SUGAR.d :cukru STR_CARGO_SINGULAR_SUGAR.c :cukrowi STR_CARGO_SINGULAR_SUGAR.b :cukier STR_CARGO_SINGULAR_SUGAR.n :cukrem STR_CARGO_SINGULAR_SUGAR.m :cukrze STR_CARGO_SINGULAR_SUGAR.w :cukrze STR_CARGO_SINGULAR_TOY :Zabawka STR_CARGO_SINGULAR_TOY.d :zabawki STR_CARGO_SINGULAR_TOY.c :zabawce STR_CARGO_SINGULAR_TOY.b :zabawkę STR_CARGO_SINGULAR_TOY.n :zabawką STR_CARGO_SINGULAR_TOY.m :zabawce STR_CARGO_SINGULAR_TOY.w :zabawko STR_CARGO_SINGULAR_CANDY :Słodycz STR_CARGO_SINGULAR_CANDY.d :słodyczy STR_CARGO_SINGULAR_CANDY.c :słodyczy STR_CARGO_SINGULAR_CANDY.b :słodycz STR_CARGO_SINGULAR_CANDY.n :słodyczą STR_CARGO_SINGULAR_CANDY.m :słodyczy STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COLA.d :coli STR_CARGO_SINGULAR_COLA.c :coli STR_CARGO_SINGULAR_COLA.b :colę STR_CARGO_SINGULAR_COLA.n :colą STR_CARGO_SINGULAR_COLA.m :coli STR_CARGO_SINGULAR_COLA.w :colo STR_CARGO_SINGULAR_COTTON_CANDY :Wata Cukrowa STR_CARGO_SINGULAR_COTTON_CANDY.d :waty cukrowej STR_CARGO_SINGULAR_COTTON_CANDY.c :wacie cukrowej STR_CARGO_SINGULAR_COTTON_CANDY.b :watę cukrową STR_CARGO_SINGULAR_COTTON_CANDY.n :watą cukrową STR_CARGO_SINGULAR_COTTON_CANDY.m :wacie cukrowej STR_CARGO_SINGULAR_COTTON_CANDY.w :wato cukrowa STR_CARGO_SINGULAR_BUBBLE :Bąbelek STR_CARGO_SINGULAR_BUBBLE.d :bąbelka STR_CARGO_SINGULAR_BUBBLE.c :bąbelkowi STR_CARGO_SINGULAR_BUBBLE.b :bąbelek STR_CARGO_SINGULAR_BUBBLE.n :bąbelkiem STR_CARGO_SINGULAR_BUBBLE.m :bąbelku STR_CARGO_SINGULAR_BUBBLE.w :bąbelku STR_CARGO_SINGULAR_TOFFEE :Toffi STR_CARGO_SINGULAR_TOFFEE.d :toffi STR_CARGO_SINGULAR_TOFFEE.c :toffi STR_CARGO_SINGULAR_TOFFEE.b :toffi STR_CARGO_SINGULAR_TOFFEE.n :toffi STR_CARGO_SINGULAR_TOFFEE.m :toffi STR_CARGO_SINGULAR_TOFFEE.w :toffi STR_CARGO_SINGULAR_BATTERY :Bateria STR_CARGO_SINGULAR_BATTERY.d :baterii STR_CARGO_SINGULAR_BATTERY.c :baterii STR_CARGO_SINGULAR_BATTERY.b :baterię STR_CARGO_SINGULAR_BATTERY.n :baterią STR_CARGO_SINGULAR_BATTERY.m :baterii STR_CARGO_SINGULAR_BATTERY.w :baterio STR_CARGO_SINGULAR_PLASTIC :Plastik STR_CARGO_SINGULAR_PLASTIC.d :plastiku STR_CARGO_SINGULAR_PLASTIC.c :plastikowi STR_CARGO_SINGULAR_PLASTIC.b :plastik STR_CARGO_SINGULAR_PLASTIC.n :plastikiem STR_CARGO_SINGULAR_PLASTIC.m :plastiku STR_CARGO_SINGULAR_PLASTIC.w :plastiku STR_CARGO_SINGULAR_FIZZY_DRINK :Napój Gazowany STR_CARGO_SINGULAR_FIZZY_DRINK.d :napoju gazowanego STR_CARGO_SINGULAR_FIZZY_DRINK.c :napojowi gazowanemu STR_CARGO_SINGULAR_FIZZY_DRINK.b :napój gazowany STR_CARGO_SINGULAR_FIZZY_DRINK.n :napojem gazowanym STR_CARGO_SINGULAR_FIZZY_DRINK.m :napoju gazowanym STR_CARGO_SINGULAR_FIZZY_DRINK.w :napoju gazowany # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} pasażer{P "" ów ów} STR_QUANTITY_COAL :{WEIGHT_LONG} węgla STR_QUANTITY_MAIL :{COMMA} pacz{P ka ki ek} poczty STR_QUANTITY_OIL :{VOLUME_LONG} ropy STR_QUANTITY_LIVESTOCK :{COMMA} sztuk{P a i ""} żywca STR_QUANTITY_GOODS :{COMMA} skrzy{P nia nie ń} towarów STR_QUANTITY_GRAIN :{WEIGHT_LONG} zboża STR_QUANTITY_WOOD :{WEIGHT_LONG} drewna STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} rudy żelaza STR_QUANTITY_STEEL :{WEIGHT_LONG} stali STR_QUANTITY_VALUABLES :{COMMA} pacz{P ka ki ek} kosztowności STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} rudy miedzi STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukurydzy STR_QUANTITY_FRUIT :{WEIGHT_LONG} owoców STR_QUANTITY_DIAMONDS :{COMMA} pacz{P ka ki ek} diamentów STR_QUANTITY_FOOD :{WEIGHT_LONG} żywności STR_QUANTITY_PAPER :{WEIGHT_LONG} papieru STR_QUANTITY_GOLD :{COMMA} pacz{P ka ki ek} złota STR_QUANTITY_WATER :{VOLUME_LONG} wody STR_QUANTITY_WHEAT :{WEIGHT_LONG} pszenicy STR_QUANTITY_RUBBER :{VOLUME_LONG} kauczuku STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukru STR_QUANTITY_TOYS :{COMMA} zabaw{P ka ki ek} STR_QUANTITY_SWEETS :{COMMA} pacz{P ka ki ek} słodyczy STR_QUANTITY_COLA :{VOLUME_LONG} coli STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} waty cukrowej STR_QUANTITY_BUBBLES :{COMMA} bąbel{P ek ki ków} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} toffi STR_QUANTITY_BATTERIES :{COMMA} bateri{P a e i} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastiku STR_QUANTITY_FIZZY_DRINKS :{COMMA} nap{P ój oje ojów} gazowan{P y e ych} STR_QUANTITY_N_A :N/D # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PŻ STR_ABBREV_COAL :{TINY_FONT}WG STR_ABBREV_MAIL :{TINY_FONT}PC STR_ABBREV_OIL :{TINY_FONT}RP STR_ABBREV_LIVESTOCK :{TINY_FONT}ŻC STR_ABBREV_GOODS :{TINY_FONT}TW STR_ABBREV_GRAIN :{TINY_FONT}ZB STR_ABBREV_WOOD :{TINY_FONT}DR STR_ABBREV_IRON_ORE :{TINY_FONT}RŻ STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}KS STR_ABBREV_COPPER_ORE :{TINY_FONT}RM STR_ABBREV_MAIZE :{TINY_FONT}KK STR_ABBREV_FRUIT :{TINY_FONT}OW STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}ŻN STR_ABBREV_PAPER :{TINY_FONT}PP STR_ABBREV_GOLD :{TINY_FONT}ZŁ STR_ABBREV_WATER :{TINY_FONT}WD STR_ABBREV_WHEAT :{TINY_FONT}PS STR_ABBREV_RUBBER :{TINY_FONT}KC STR_ABBREV_SUGAR :{TINY_FONT}CK STR_ABBREV_TOYS :{TINY_FONT}ZA STR_ABBREV_SWEETS :{TINY_FONT}SŁ STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}WC STR_ABBREV_BUBBLES :{TINY_FONT}BB STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BT STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}NG STR_ABBREV_NONE :{TINY_FONT}0 STR_ABBREV_ALL :{TINY_FONT}+ # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} pasażer{P "" ów ów} STR_BAGS :{COMMA} wor{P ek ki ków} STR_BAGS.d :{COMMA} worków STR_BAGS.c :{COMMA} workom STR_BAGS.b :{COMMA} worki STR_BAGS.n :{COMMA} workami STR_BAGS.m :{COMMA} workach STR_BAGS.w :{COMMA} worki STR_TONS :{COMMA} ton{P a "" ""} STR_LITERS :{COMMA} litr{P "" y ów} STR_ITEMS :{COMMA} sztuk{P a i ""} STR_CRATES :{COMMA} skrzy{P nia nie ń} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Ciemnoniebieski STR_COLOUR_PALE_GREEN :Bladozielony STR_COLOUR_PINK :Różowy STR_COLOUR_YELLOW :Żółty STR_COLOUR_RED :Czerwony STR_COLOUR_LIGHT_BLUE :Jasnoniebieski STR_COLOUR_GREEN :Zielony STR_COLOUR_DARK_GREEN :Ciemnozielony STR_COLOUR_BLUE :Niebieski STR_COLOUR_CREAM :Kremowy STR_COLOUR_MAUVE :Fiołkoworóżowy STR_COLOUR_PURPLE :Purpurowy STR_COLOUR_ORANGE :Pomarańczowy STR_COLOUR_BROWN :Brązowy STR_COLOUR_GREY :Szary STR_COLOUR_WHITE :Biały # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}KM STR_UNITS_POWER_METRIC :{COMMA}KM STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a y ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P "" y ów} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} st{P opa, opy, óp} STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtr: STR_LIST_FILTER_OSKTITLE :{BLACK}Wpisz słowo filtru STR_LIST_FILTER_TOOLTIP :{BLACK}Wpisz słowo, wg którego filtrować listę STR_TOOLTIP_SORT_ORDER :{BLACK}Wybierz kolejność sortowania (malejąco/rosnąco) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Wybierz kryterium sortowania STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Wybierz kryteria filtrowania STR_BUTTON_SORT_BY :{BLACK}Sortuj wg STR_BUTTON_LOCATION :{BLACK}Położenie STR_BUTTON_RENAME :{BLACK}Zmień nazwę STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zamknij okno STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tytuł okna - przeciągnij, aby przesunąć okno STR_TOOLTIP_SHADE :{BLACK}Zwiń okno - pokaż tylko nagłówek STR_TOOLTIP_DEBUG :{BLACK}Pokaż informacje debugerra NewGRF STR_TOOLTIP_STICKY :{BLACK}Zaznacz to okno jako niezamykalne przyciskiem 'Zamknij Wszystkie Okna' STR_TOOLTIP_RESIZE :{BLACK}Kliknij i przeciągnij, by zmienić rozmiar okna STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Przełącz na duży/mały rozmiar okna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Suwak - przesuwa listę w górę/w dół STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Pasek przewijania - przewija listę w prawo/w lewo STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Niszczenie budynków itp. w danym kwadracie terenu. Ctrl zaznacza obszar po przekątnej. Shift przełącza pomiędzy trybem burzenia a szacowaniem jego kosztów # Query window STR_BUTTON_DEFAULT :{BLACK}Domyślna STR_BUTTON_CANCEL :{BLACK}Anuluj STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Długość: {NUM} STR_MEASURE_AREA :{BLACK}Obszar: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Długość: {NUM}{}Różnica wysokości: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Obszar: {NUM} x {NUM}{}Różnica wysokości: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Liczba mieszkańców STR_SORT_BY_CAPTION_NAME :{BLACK}Nazwa STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns STR_SORT_BY_NAME :Nazwa STR_SORT_BY_PRODUCTION :Produkcja STR_SORT_BY_TYPE :Typ STR_SORT_BY_TRANSPORTED :Przetransportowano STR_SORT_BY_NUMBER :Numer STR_SORT_BY_PROFIT_LAST_YEAR :Zysk w ostatnim roku STR_SORT_BY_PROFIT_THIS_YEAR :Zysk w tym roku STR_SORT_BY_AGE :Wiek STR_SORT_BY_RELIABILITY :Niezawodność STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Całkowita ładowność po typie ładunku STR_SORT_BY_MAX_SPEED :Prędkość maksymalna STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Wartość STR_SORT_BY_LENGTH :Długość STR_SORT_BY_LIFE_TIME :Pozostały czas życia STR_SORT_BY_TIMETABLE_DELAY :Opóźnienie rozkładu jazdy STR_SORT_BY_FACILITY :Typ stacji STR_SORT_BY_WAITING :Wartość oczekującego ładunku STR_SORT_BY_RATING_MAX :Towar najwyżej oceniany STR_SORT_BY_RATING_MIN :Towar najniżej oceniany STR_SORT_BY_ENGINE_ID :ID pojazdu (klasyczne sortowanie) STR_SORT_BY_COST :Cena STR_SORT_BY_POWER :Moc STR_SORT_BY_TRACTIVE_EFFORT :Siła pociągowa STR_SORT_BY_INTRO_DATE :Data wprowadzenia STR_SORT_BY_RUNNING_COST :Koszt utrzymania STR_SORT_BY_POWER_VS_RUNNING_COST :Moc/Koszt utrzymania STR_SORT_BY_CARGO_CAPACITY :Ładowność STR_SORT_BY_RANGE :Zasięg # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Szybkie przemijanie czasu w grze STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcje STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Zapis gry, opuszczenie gry, wyjście STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Wyświetl mapę, dodatkowy podgląd lub listę napisów STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Wyświetl listę miast STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Wyświetl subsydia STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Wyświetl listę stacji firmy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Wyświetl informacje finansowe firmy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Wyświetl informacje ogólne firmy STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Wyświetl wykresy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Wyświetl tabele firm STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ufunduj budowę nowego przedsiębiorstwa STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Wyświetl listę pociągów firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Wyświetl listę samochodów firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Wyświetl listę statków firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Wyświetl listę samolotów firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Przybliżenie STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Oddalenie STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Budowa kolei STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Budowa dróg STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Budowa portów STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Budowa lotnisk STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Zmiana terenu, podwyższanie/obniżanie lądu, sadzenie drzew, itp. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Pokaż okno dźwięk/muzyka STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Pokaż ostatnią wiadomość/ogłoszenie, pokaż ustawienia wiadomości STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informacje o terenie, konsola, debugowanie skryptów, zrzut ekranu, o grze OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Przełącz paski narzędzi # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Zapis scenariusza, wczytanie scenariusza, opuść edytor, wyjście STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Edytor scenariuszy STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Zmień datę początkową do tyłu o 1 rok STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Zmień datę początkową do przodu o 1 rok STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Kliknij aby wpisać datę początkową STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Wyświetl mapę, listę miast STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Tworzenie krajobrazu STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Tworzenie miast STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tworzenie przedsiębiorstw STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Konstrukcja dróg STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Posadź drzewa. Shift przełącza pomiędzy trybem sadzenia a szacowaniem jego kosztów STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Umieść napis STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Umieść obiekt. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Zapisz scenariusz STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Wczytaj scenariusz STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Zapisz mapę wysokości STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Wczytaj mapę wysokości STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Opuść edytor scenariuszy STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Wyjście ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opcje gry STR_SETTINGS_MENU_CONFIG_SETTINGS :Ustawienia zaawanasowane STR_SETTINGS_MENU_SCRIPT_SETTINGS :Ustawienia SI / Game Script STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ustawienia NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcje przeźroczystości STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Wyświetlanie nazw miast STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Wyświetlanie nazw stacji STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wyświetlanie nazw pkt. orientacyjnych STR_SETTINGS_MENU_SIGNS_DISPLAYED :Wyświetlanie napisów STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Znaki konkurentów i nazwy są wyświetlane STR_SETTINGS_MENU_FULL_ANIMATION :Pełna animacja STR_SETTINGS_MENU_FULL_DETAIL :Wszystkie detale STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Przeźroczyste budynki STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Przeźroczyste znaki ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Zapisz grę STR_FILE_MENU_LOAD_GAME :Wczytaj grę STR_FILE_MENU_QUIT_GAME :Opuść grę STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Wyjście ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa świata STR_MAP_MENU_EXTRA_VIEW_PORT :Dodatkowy podgląd STR_MAP_MENU_SIGN_LIST :Lista napisów ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista miast STR_TOWN_MENU_FOUND_TOWN :Załóż miasto ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsydia STR_SUBSIDIES_MENU_GOAL :Bieżące cele ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Wykres obrotu STR_GRAPH_MENU_INCOME_GRAPH :Wykres przychodów STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Wykres przewożonego ładunku STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Ocena działalności firmy STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Wykres wartości firmy STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Stawki za ładunek ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Wykres Ligi Firm STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Szczegółowa tabela efektywności STR_GRAPH_MENU_HIGHSCORE :Tabela wyników ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Spis przedsiębiorstw STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Łańcuchy produkcji STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Ufunduj nowe przedsiębiorstwo ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Konstrukcja torowiska STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Konstrukcja torowiska elektryfikowanego STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Konstrukcja torowiska jednoszynowego STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Konstrukcja torowiska Maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Budowa drogi STR_ROAD_MENU_TRAM_CONSTRUCTION :Budowa torowiska tramwajowego ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Konstrukcja kanału wodnego ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Konstrukcje lotnicze ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Krajobraz STR_LANDSCAPING_MENU_PLANT_TREES :Posadź drzewa STR_LANDSCAPING_MENU_PLACE_SIGN :Umieść napis ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Dźwięk/muzyka ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Ostatnia wiadomość/ogłoszenie STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Poprzednie wiadomości ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Informacje o terenie STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Przełącz konsolę STR_ABOUT_MENU_AI_DEBUG :Debugowanie SI / Game Script STR_ABOUT_MENU_SCREENSHOT :Zrzut ekranu STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zrzut ekranu z pełnym przybliżeniem STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Zrzut ekranu z przybliżeniem domyślnym STR_ABOUT_MENU_GIANT_SCREENSHOT :Zrzut ekranu całej mapy STR_ABOUT_MENU_ABOUT_OPENTTD :Info o 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Wyrównywanie sprite-ów STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Wł./wył. ramki STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Włącz/wyłącz kolorowanie brudnych bloków ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1szy STR_ORDINAL_NUMBER_2ND :2gi STR_ORDINAL_NUMBER_3RD :3ci STR_ORDINAL_NUMBER_4TH :4ty STR_ORDINAL_NUMBER_5TH :5ty STR_ORDINAL_NUMBER_6TH :6ty STR_ORDINAL_NUMBER_7TH :7my STR_ORDINAL_NUMBER_8TH :8my STR_ORDINAL_NUMBER_9TH :9ty STR_ORDINAL_NUMBER_10TH :10ty STR_ORDINAL_NUMBER_11TH :11ty STR_ORDINAL_NUMBER_12TH :12ty STR_ORDINAL_NUMBER_13TH :13ty STR_ORDINAL_NUMBER_14TH :14ty STR_ORDINAL_NUMBER_15TH :15ty STR_ORDINAL_NUMBER_16TH :16ty STR_ORDINAL_NUMBER_17TH :17ty STR_ORDINAL_NUMBER_18TH :18ty STR_ORDINAL_NUMBER_19TH :19ty STR_ORDINAL_NUMBER_20TH :20ty STR_ORDINAL_NUMBER_21ST :21szy STR_ORDINAL_NUMBER_22ND :22gi STR_ORDINAL_NUMBER_23RD :23ci STR_ORDINAL_NUMBER_24TH :24ty STR_ORDINAL_NUMBER_25TH :25ty STR_ORDINAL_NUMBER_26TH :26ty STR_ORDINAL_NUMBER_27TH :27my STR_ORDINAL_NUMBER_28TH :28my STR_ORDINAL_NUMBER_29TH :29ty STR_ORDINAL_NUMBER_30TH :30ty STR_ORDINAL_NUMBER_31ST :31szy ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Sty STR_MONTH_ABBREV_FEB :Lut STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Kwi STR_MONTH_ABBREV_MAY :Maj STR_MONTH_ABBREV_JUN :Cze STR_MONTH_ABBREV_JUL :Lip STR_MONTH_ABBREV_AUG :Sie STR_MONTH_ABBREV_SEP :Wrz STR_MONTH_ABBREV_OCT :Paź STR_MONTH_ABBREV_NOV :Lis STR_MONTH_ABBREV_DEC :Gru STR_MONTH_JAN :Styczeń STR_MONTH_FEB :Luty STR_MONTH_MAR :Marzec STR_MONTH_APR :Kwiecień STR_MONTH_MAY :Maj STR_MONTH_JUN :Czerwiec STR_MONTH_JUL :Lipiec STR_MONTH_AUG :Sierpień STR_MONTH_SEP :Wrzesień STR_MONTH_OCT :Październik STR_MONTH_NOV :Listopad STR_MONTH_DEC :Grudzień ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Legenda STR_GRAPH_KEY_TOOLTIP :{BLACK}Pokaż legendę na wykresie STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Wykres obrotów STR_GRAPH_INCOME_CAPTION :{WHITE}Wykres przychodów STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Dostarczonych jednostek ładunku STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ocena działalności firmy (maks. ocena=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Wartości firm STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Stawki za ładunek STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dni w transporcie STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Dochód z przewozu 10 jednostek (lub 10,000 litrów) ładunku na odległość 20 pól STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Włącz wszystko STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Wyłącz wszystko STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Wyświetl wszystkie ładunki na wykresie cen za ładunek STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Nie wyświetlaj towarów na wykresie cen towarów STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Przełącznik wykresu ładunku wł./wył. STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Pokaż szczegóły wyników # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Legenda do wykresów firm STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Kliknij tutaj aby wł./wył. wyświetlanie danych firmy na wykresie # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tabela Ligi Firm STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inżynier STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Administrator Ruchu STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Koordynator Transportu STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Nadzorca Dróg STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Dyrektor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Dyrektor Wykonawczy STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Przewodniczący STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Prezes STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnat # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Szczegóły oceny działalności STR_PERFORMANCE_DETAIL_KEY :{BLACK}Szczegóły STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Pokaż szczegóły tej firmy ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Pojazdy: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stacje: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. zysk: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. przychód: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. przychód: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Przewieziono: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Ładunek: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pieniądze: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Pożyczka: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Łącznie: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Liczba pojazdów, które przyniosły zysk w zeszłym roku: dotyczy pojazdów drogowych, pociągów, statków i samolotów STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Liczba ostatnio obsłużonych stacji. Dworce, przystanki, lotniska itp. są liczone osobno, nawet jeśli są połączone w jedną stację STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Zysk pojazdu o najniższym dochodzie (dotyczy pojazdów, które mają co najmniej 2 lata) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Ilość zarobionych pieniędzy w kwartale z najmniejszym zyskiem z ostatnich 12 kwartałów STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Ilość zarobionych pieniędzy w kwartale z największym zyskiem z ostatnich 12 kwartałów STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Ilość ładunku przewiezionego w poprzednich 4 kwartałach STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Ilość różnych typów ładunku przewiezionych w ostatnim kwartale STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Ilość pieniędzy w ręku STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Wielkość pożyczki wziętej przez firmę STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Suma przyznanych punktów # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Wszystko STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Stary styl STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nowy styl STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Własny 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Własny 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Głośność muzyki STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Głośność efektów STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Ścieżka STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Tytuł STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Losowo STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Przejdź do następnej ścieżki STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Przejdź do następnej ścieżki STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Zatrzymaj muzykę STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Odgrywaj muzykę STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Przesuń suwaki żeby ustawić głośność dźwięków i muzyki STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Wybierz program 'Wszystko' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Wybierz program 'Stary styl' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Wybierz program 'Nowy styl' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Wybierz program 'Ezy Street' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Wybierz program 'Własny 1' (definiowany) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Wybierz program 'Własny 2' (definiowany) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Losowe odtwarzanie wł./wył. STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Pokaż okno wyboru ścieżek STR_ERROR_NO_SONGS :{WHITE}Został wybrany zestaw muzyki bez utworów. Żaden utwór nie będzie odtwarzany # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Wybór Programu STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Wykaz ścieżek STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programuj - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Wyczyść STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Wyczyść obecny program (tylko Wlasny1 lub Wlasny2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik na ścieżce aby dodać do obecnego programu (Wlasny1 i Wlasny2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliknij na ścieżce muzycznej aby usunąć ją z wybranego programu (Wlasny1 lub Wlasny2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Ranking firm, które osiągnęły rok {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabela Ligi Firm w {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Biznesmen STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Przedsiębiorca STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Przemysłowiec STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potentat STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon Stulecia STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} osiąga status: '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} osiągnęło status '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Ukształtowanie STR_SMALLMAP_TYPE_VEHICLES :Pojazdy STR_SMALLMAP_TYPE_INDUSTRIES :Przedsiębiorstwa STR_SMALLMAP_TYPE_ROUTES :Trasy STR_SMALLMAP_TYPE_VEGETATION :Roślinność STR_SMALLMAP_TYPE_OWNERS :Właściciele STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Pokaż zarysy lądu na mapie STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Pokaż pojazdy na mapie STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Pokaż przedsiębiorstwa na mapie STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Pokaż drogi na mapie STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Pokaż roślinność na mapie STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Pokaż teren mający właściciela STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik na typie przedsiębiorstwa żeby przełączyć jego wyświetlanie. Ctrl+klik wyłącza wszystkie typy prócz wybranego. Ponowne Ctrl+klik włącza wszystkie typy przedsiębiorstw STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik na firmie żeby wyświetlić jej posiadłości. Ctrl+klik wyłącza wszystkie firmy prócz wybranej. Ponowne Ctrl+klik włącza wszystkie firmy STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Drogi STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Koleje STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stacje/Lotniska/Porty STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Budynki/Przedsiębiorstwa STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Pojazdy STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Pociągi STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Samochody STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Statki STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Samoloty STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Trasy transportowe STR_SMALLMAP_LEGENDA_FOREST :{G=m}{TINY_FONT}{BLACK}Las STR_SMALLMAP_LEGENDA_FOREST.d :{G=m}{TINY_FONT}{BLACK}Lasu STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Stacja kolejowa STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Załadunek ciężarówek STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Przystanek STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Lotnisko STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Port STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Wyboisty teren STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Trawa STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Odsłonięta ziemia STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Pola STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Drzewa STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Skały STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Woda STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Brak właściciela STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Miasta STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Przedsiębiorstwa STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Pustynia STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Śnieg STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Pokaż nazwy miast na mapie STR_SMALLMAP_CENTER :{BLACK}Wyśrodkuj mapę na aktualnej lokalizacji STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Wyłącz wszystko STR_SMALLMAP_ENABLE_ALL :{BLACK}Włącz wszystko STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Pokaż wysokość STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Nie pokazuj przedsiębiorstw na mapie STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Pokaż wszystkie przedsiębiorstwa na mapie STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Przełącz wyświetlanie mapy wysokości STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nie wyświetlaj posiadłości firmy na mapie STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Wyświetl wszystkie posiadłości firmy na mapie # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaż ostatnią wiadomość lub ogłoszenie STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOZAPIS STR_STATUSBAR_SAVING_GAME :{RED}* * ZAPISYWANIE GRY * * # News message history STR_MESSAGE_HISTORY :{WHITE}Poprzednie wiadomości STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Lista ostatnich wiadomości STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Wiadomość STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwszy pociąg przybył do {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwszy autobus przybył do {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwsza ciężarówka przybyła do {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwszy tramwaj pasażerski przybył do {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwszy tramwaj towarowy przybył do {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwszy statek przybył do {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Mieszkańcy świętują . . .{}Pierwszy samolot przyleciał na {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Wypadek kolejowy!{}{COMMA} ofiar{P a y ""} w kolizji STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Wypadek samochodowy!{}Kierowca zginął w zderzeniu z pociągiem STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Wypadek samochodowy!{}{COMMA} ofiar{P a y ""} zderzenia z pociągiem STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Katastrofa lotnicza!{}{COMMA} ofiar{P a y ""} na {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Wypadek lotniczy!{}Samolot rozbił się z powodu braku paliwa, zginęł{P 0 a y o} {COMMA} os{P oba oby ób}! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Katastrofa Zeppelina na {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Samochód zniszczony w kolizji z 'UFO'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozja rafinerii w pobliżu {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabryka zniszczona w podejrzanych okolicznościach w pobliżu {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' wylądowało w pobliżu {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Tąpnięcie przy kopalni pozostawiło pas zniszczenia blisko {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Powódź!{}Przynajmniej {COMMA} zaginęło lub utonęło w czasie powodzi! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Firma ma problemy! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} będzie odsprzedane lub ogłoszone upadłym jeżeli zysk firmy nie wzrośnie! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Połączenie firm transportowych! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} został sprzedany {STRING} za {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrut! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} zostaje zamknięty przez wierzycieli i wszystkie udziały zostają sprzedane! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nowa firma rozpoczęła działalność! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} rozpoczyna budowę w pobliżu miasta {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} zostało przejęte przez {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Prezes) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsoruje konstrukcję nowego miasta {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Rozpoczęto budowę nowe{G go j go} {STRING.d} blisko {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Now{G y a e} {STRING} został{G 0 "" a o} posadzon{G 0 y a e} blisko {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ogłasza bliskie zamknięcie! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemy z zaopatrzeniem {STRING} powodują ogłoszenie zamknięcia! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Niedobór drzew powoduje ogłoszenie zamknięcia {STRING}! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europejska Unia Monetarna!{}{}Euro zostało wprowadzone jako jedyna waluta do wszystkich transakcji w twoim kraju! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Światowa recesja!{}{}Eksperci finansowi obawiają się najgorszego z powodu kryzysu! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Koniec recesji!{}{}Polepszenie się transakcji handlowych daje pewność przedsiębiorstwom dzięki umacniającej się ekonomii! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} zwiększa produkcję! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Odkryto nowy pokład węgla w {INDUSTRY}!{} Podwojenie produkcji! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Odkryte nowe rezerwy ropy w {INDUSTRY}!{} Podwojenie produkcji! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Polepszone metody rolne w {INDUSTRY} spowodują podwojenie produkcji! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Produkcja {STRING.d} w {INDUSTRY} wzrasta o {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}produkcja w {INDUSTRY} maleje o 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Plaga insektów w {INDUSTRY}!{}Produkcja maleje o 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produkcja {STRING.d} w {INDUSTRY} maleje o {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} czeka w zajezdni STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} czeka w zajezdni STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} czeka w zajezdni STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} czeka w hangarze # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ma za mało poleceń w rozkładzie STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ma nieważne polecenie STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ma zdublowane polecenia STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ma nieprawiodłową stację w poleceniach # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} starzeje się STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} bardzo się starzeje STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} bardzo się starzeje i potrzebuje natychmiastowej wymiany STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nie potrafi znaleźć trasy, aby kontynuować STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} się zgubił STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Dochód {VEHICLE} w zeszłym roku to {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} nie może dotrzeć do kolejnego punktu docelowego, ponieważ jest on poza zasięgiem STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Zaplanowane przeładowanie zatrzymane {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Autoodnowa zawiodła przy {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Dostępn{G y a e} now{G y a e} {STRING}! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Dostępn{G y a e} now{G y a e} {STRING} - {ENGINE}! STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} nie akceptuje już {STRING.d} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} nie akceptuje już {STRING.d} ani {STRING.d} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} już akceptuje {STRING.b} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} już akceptuje {STRING.b} i {STRING.b} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsydiowanie wygasło:{}{}{STRING} z {STRING} do {STRING} nie będzie już dotowane STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Koniec dotacji:{}{}Przewóz {STRING.d} z {STRING} do {STRING} nie jest już subsydiowany STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Oferta usługi dotowanej:{}{}Pierwszy przewóz {STRING.d} z {STRING} do {STRING} będzie dotowany przez rok przez lokalne władze! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Przyznano subsydia dla {STRING}!{}{}Przewóz {STRING.d} z {STRING} do {STRING} będzie opłacany o 50% więcej przez następny rok! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Przyznano subsydia dla {STRING}!{}{}Przewóz {STRING.d} z {STRING} do {STRING} będzie opłacany podwójnie przez następny rok! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Przyznano subsydia dla {STRING}!{}{}Przewóz {STRING.d} z {STRING} do {STRING} będzie opłacany potrójnie przez następny rok! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Przyznano subsydia dla {STRING}!{}{}Przewóz {STRING.d} z {STRING} do {STRING} będzie opłacany poczwórnie przez następny rok! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Chaos na drogach w {TOWN}!{}{}Program przebudowy dróg ufundowany przez {STRING} przynosi 6 miesięcy męki dla kierowców! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopol transportowy! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokalne władze miasta {TOWN} podpisują umowę z {STRING} na wyłączność usług transportowych! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Podgląd {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiuj do podglądu STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiuj pozycję głównego okna do podglądu STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Wstaw z podglądu STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Przesuń główne okno na pozycję podglądu # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Opcje gry STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Waluta STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Wybór waluty ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Funt brytyjski (£) STR_GAME_OPTIONS_CURRENCY_USD :Dolar amerykański ($) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) STR_GAME_OPTIONS_CURRENCY_JPY :Jen japoński (¥) STR_GAME_OPTIONS_CURRENCY_ATS :Szyling austriacki (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Frank belgijski (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Frank szwajcarski (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Korona czeska (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Marki niemieckie (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Korona duńska (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Peseta hiszpańska (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Marka fińska (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Frank francuski (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Drachma grecka (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Forint węgierski (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Korona islandzka (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Lira włoska (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Gulden holenderski (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Korona norweska (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polski złoty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Lej rumuński (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rubel rosyjski (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Tolar słowenski (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Korona szwedzka (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Lira turecka (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Korona słowacka (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Real brazylijski (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Korony estońskie (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Lit litewski (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Won południowokoreański (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Południowej Afryki (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Własna... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Jednostki miar STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Wybór jednostek miar ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Anglosaskie STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metryczne STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Pojazdy drogowe STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Wybierz stronę po której mają jeździć samochody STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Jazda po lewej STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Jazda po prawej STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Nazwy miast STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Wybierz styl nazw miast ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angielskie (Oryginalne) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francuskie STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Niemieckie STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Angielskie (Rozszerzone) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Południowoamerykańskie STR_GAME_OPTIONS_TOWN_NAME_SILLY :Śmieszne STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Szwedzkie STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holenderskie STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Fińskie STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polskie STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Słowackie STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norweskie STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Węgierskie STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austriackie STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumuńskie STR_GAME_OPTIONS_TOWN_NAME_CZECH :Czeskie STR_GAME_OPTIONS_TOWN_NAME_SWISS :Szwajcarskie STR_GAME_OPTIONS_TOWN_NAME_DANISH :Duńskie STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Tureckie STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Włoskie STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalońskie ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autozapis STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Wybierz okres pomiędzy autozapisami STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Wył. STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Co 1 miesiąc STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Co 3 miesiące STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Co 6 miesięcy STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Co 12 miesięcy STR_GAME_OPTIONS_LANGUAGE :{BLACK}Język STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Wybierz język interfejsu STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pełny ekran STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Zaznacz, jeśli chcesz grać w OpenTTD w trybie pełnoekranowym STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rozdzielczość ekranu STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Wybierz rozdzielczość ekranu STR_GAME_OPTIONS_RESOLUTION_OTHER :inna STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format zrzutu ekranu STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Wybierz format zrzutu ekranu STR_GAME_OPTIONS_BASE_GRF :{BLACK}Podstawowy zestaw grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wybierz podstawowy zestaw grafik do użycia STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} brak/uszkodzony plik{P "" i ów} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o grafice STR_GAME_OPTIONS_BASE_SFX :{BLACK}Podstawowy zestaw dźwięków STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Wybierz podstawowy zestaw dźwięków do użycia STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o zestawie podstawowych dźwięków STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Podstawowy zestaw muzyki STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wybierz podstawowy zestaw muzyki do użycia STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} plik{P "" i ów} uszkodzony STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o muzyce podstawowej STR_ERROR_FULLSCREEN_FAILED :{WHITE}Uruchomienie trybu pełnoekranowego nie powiodło się # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Własna waluta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Współczynnik wymiany: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zmniejsz kurs wymiany za jednego Funta (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zwiększ kurs wymiany za jednego Funta (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ustal kurs wymiany za jednego Funta (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Ustaw znak oddzielający w twojej walucie STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ustaw przedrostek dla swojej waluty STR_CURRENCY_SUFFIX :{LTBLUE}Sufiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Ustaw symbol dla twojej waluty STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Przejście na Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Przejście na Euro: {ORANGE}nigdy STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Ustaw rok przełączenia na Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Przełącz na Euro wcześniej STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Przełącz na Euro później STR_CURRENCY_PREVIEW :{LTBLUE}Podgląd: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Funtów (£) w twojej walucie STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zmień parametr własnej waluty STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksymalna liczba przeciwników: {ORANGE}{COMMA} STR_NONE :Brak STR_FUNDING_ONLY :Tylko sponsorowanie STR_MINIMAL :Minimalna STR_NUM_VERY_LOW :Bardzo mało STR_NUM_LOW :Mało STR_NUM_NORMAL :Średnio STR_NUM_HIGH :Dużo STR_NUM_CUSTOM :Własne STR_NUM_CUSTOM_NUMBER :Własna ({NUM}) STR_VARIETY_NONE :Brak STR_VARIETY_VERY_LOW :Bardzo mała STR_VARIETY_LOW :Mała STR_VARIETY_MEDIUM :Średnia STR_VARIETY_HIGH :Duża STR_VARIETY_VERY_HIGH :Bardzo duża STR_AI_SPEED_VERY_SLOW :Bardzo wolno STR_AI_SPEED_SLOW :Wolno STR_AI_SPEED_MEDIUM :Umiarkowanie STR_AI_SPEED_FAST :Szybko STR_AI_SPEED_VERY_FAST :Bardzo szybko STR_SEA_LEVEL_VERY_LOW :Bardzo niski STR_SEA_LEVEL_LOW :Niski STR_SEA_LEVEL_MEDIUM :Średni STR_SEA_LEVEL_HIGH :Wysoki STR_SEA_LEVEL_CUSTOM :Własny STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Własny ({NUM}%) STR_RIVERS_NONE :Żaden STR_RIVERS_FEW :Kilka STR_RIVERS_MODERATE :Średni STR_RIVERS_LOT :Sporo STR_DISASTER_NONE :Brak STR_DISASTER_REDUCED :Zredukowane STR_DISASTER_NORMAL :Normalne STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Bardzo płaski STR_TERRAIN_TYPE_FLAT :Płaski STR_TERRAIN_TYPE_HILLY :Pagórkowaty STR_TERRAIN_TYPE_MOUNTAINOUS :Górzysty STR_CITY_APPROVAL_PERMISSIVE :Przyjazne STR_CITY_APPROVAL_TOLERANT :Tolerancyjne STR_CITY_APPROVAL_HOSTILE :Wrogie STR_WARNING_NO_SUITABLE_AI :{WHITE}Brak pasujących SI...{}Możesz pobrać wszystkie SI przez system "Zawartości online" # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Ustawienia zaawansowane STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrowanie po frazie: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Otwórz wszystko STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Zamknij wszystko STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(wyjaśnienie niedostępne) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Domyślna wartość: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Typ ustawienia: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Ustawienie klienta (nie przechowywane w plikach zapisu; ma wpływ na wszystkie gry) STR_CONFIG_SETTING_TYPE_GAME_MENU :Ustawienie gry (przechowywane w plikach zapisu; ma wpływ tylko na nowe gry) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Ustawienie gry (przechowywane w pliku zapisu; ma wpływ tylko na aktualną grę) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ustawienie firmy (przechowywane w plikach zapisu; ma wpływ tylko na nowe gry) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ustawienie firmy (przechowywane w pliku zapisu; ma wpływ tylko na aktualną firmę) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Pokaż: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ogranicza poniższą listę tylko do modyfikowanych ustawień STR_CONFIG_SETTING_RESTRICT_BASIC :Ustawienia podstawowe STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ustawienia zaawansowane STR_CONFIG_SETTING_RESTRICT_ALL :Ustawienia eksperta / wszystkie ustawienia STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ustawienie z inną wartością niż domyślna STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ustawienia z wartościami innymi niż twoje ustawienia dla nowej gry STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Ogranicza poniższą listę do pewnych typów ustawień STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Wszystkie typy ustawień STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Ustawienia klienta (nie przechowywane w plikach zapisu; wpływa na wszystkie gry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ustawienia gry (przechowywane w pliku zapisu; wpływa tylko na nowe gry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ustawienia gry (przechowywane w pliku zapisu; wpływa tylko na aktualną grę) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Ustawienia firmy (przechowywane w pliku zapisu; mają wpływ tylko w nowo rozpoczętych grach) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Ustawienia firmy (przechowywane w pliku zapisu; mają wpływ tylko na aktualnie aktywną firmę) STR_CONFIG_SETTING_OFF :wył. STR_CONFIG_SETTING_ON :wł. STR_CONFIG_SETTING_DISABLED :Wyłączone STR_CONFIG_SETTING_COMPANIES_OFF :wył. STR_CONFIG_SETTING_COMPANIES_OWN :dla własnej firmy STR_CONFIG_SETTING_COMPANIES_ALL :dla wszystkich firm STR_CONFIG_SETTING_NONE :brak STR_CONFIG_SETTING_ORIGINAL :oryginalnie STR_CONFIG_SETTING_REALISTIC :realistycznie STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :z lewej strony STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :wyśrodkowany STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :z prawej strony STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksymalna wysokość początkowej pożyczki: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maksymalna wysokość pożyczki jaką firma może zaciągnąć (nie uwzględnia inflacji) STR_CONFIG_SETTING_INTEREST_RATE :Oprocentowanie: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Oprocentowanie pożyczki; kontroluje też inflację, jeśli jest włączona STR_CONFIG_SETTING_RUNNING_COSTS :Koszty amortyzacji: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Ustaw poziom kosztów utrzymania i amortyzacji pojazdów i infrastruktury STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Szybkość budowy: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Ogranicz ilość czynności konstrukcyjnych wykonywanych przez SI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Awarie pojazdów: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontroluj jak często nieodpowiednio serwisowane pojazdy mogą się psuć STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Mnożnik dofinansowania: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Ustaw wysokość zapłaty za połączenia dofinansowywane STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Koszty konstrukcji: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Ustaw poziom kosztów konstrukcji i kupna STR_CONFIG_SETTING_RECESSIONS :Kryzys: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jeśli włączone, kryzys może wystąpić co kilka lat. Podczas kryzysu produkcja jest znacznie niższa (powraca do poprzedniego poziomu, kiedy kryzys się kończy) STR_CONFIG_SETTING_TRAIN_REVERSING :Nie pozwalaj pociągom zawracać na stacjach: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Jeśli włączone, pociągi nie będą zawracać na stacjach dwu-wjazdowych, nawet jeśli droga do następnego celu jest krótsza po zawróceniu STR_CONFIG_SETTING_DISASTERS :Katastrofy: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ustaw katastrofy, które mogą okazjonalnie zablokować lub zniszczyć pojazdy albo infrastrukturę STR_CONFIG_SETTING_CITY_APPROVAL :Nastawienie władz miasta do przekształcania terenu: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Wybierz jak bardzo hałas i niszczenie środowiska przez firmy wpływa na ich ocenę przez miasto i dalsze konstrukcje na ich obszarze STR_CONFIG_SETTING_BUILDONSLOPES :Pozwól budować na pochyłym terenie i wybrzeżach: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Jeśli włączone, to tory i stacje można budować na większości stoków. Jeśli wyłączone, można je budować tylko na stokach w tym samym kierunku, co tory, tak, że nie potrzeba fundamentów STR_CONFIG_SETTING_AUTOSLOPE :Pozwól na zmiany terenu pod budynkami, torami itp. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Pozwalaj na modyfikowanie terenu pod budynkami i torami bez usuwania ich STR_CONFIG_SETTING_CATCHMENT :Pozwól na bardziej realistyczny zasięg obejmowania: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Używaj różnych rozmiarów pokrywania obszaru dla różnych typów stacji i lotnisk STR_CONFIG_SETTING_EXTRADYNAMITE :Pozwól usuwać drogi, mosty, tunele, itp. należące do miasta: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Ułatwiaj usuwanie infrastruktury i budynków należących do miast STR_CONFIG_SETTING_TRAIN_LENGTH :Maksymalna długość pociągów: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Ustaw maksymalną długość pociągów STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} p{P ole ola ól} STR_CONFIG_SETTING_SMOKE_AMOUNT :Ilość dymu / iskier lokomotywy: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Ustaw jak dużo dymu lub iskier jest emitowanych przez pojazdy STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model przyspieszania pociągu: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Wybierz model fizyki dla przyspieszania pociągów. Oryginalny model daje takie same mandaty na stokach dla wszystkich pojazdów. Realistyczny model daje mandaty na stokach i zakrętach biorąc pod uwagę różne właściwości, takie jak długość i siłę pociągową STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model przyspieszania samochodów: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Wybierz model fizyki dla przyspieszania pojazdów drogowych. Oryginalny model daje takie same mandaty na stokach dla wszystkich pojazdów. Realistyczny model daje mandaty na stokach biorąc pod uwagę właściwości silnika, np. 'siłę pociągową' STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Nachylenie stoków dla pociągów: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Pochylenie pola stoku dla pociągów. Wyższa wartość utrudnia podjazd pod górę STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Nachylenie stoków dla pojazdów drogowych: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Pochylenie pola stoku dla pojazdów drogowych. Wyższa wartość utrudnia podjazd pod górę STR_CONFIG_SETTING_FORBID_90_DEG :Zabroń pociągom i statkom skręcać o 90 stopni: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-stopniowy zakręt występuje wtedy, gdy bezpośrednio po poziomym odcinku toru występuje odcinek pionowy na sąsiadującym polu zmuszając pociąg do skrętu o 90 stopni pokonując krawędź pola zamiast normalnego, 45-stopniowego skrętu w innych kombinacjach torów. Dotyczy to również kąta skrętu dla statków STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Pozwól na łączenie stacji nie sąsiadujących bezpośrednio: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Pozwalaj na dodawanie części stacji nie stykających się ze sobą. Naciśnij Ctrl przed postawieniem nowej części STR_CONFIG_SETTING_IMPROVEDLOAD :Użyj ulepszonego algorytmu załadunku: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Gdy włączone, wiele pojazdów czekających na stacji jest ładowanych po kolei. Ładowanie następnego pojazdu rozpocznie się, jeśli jest wystarczająco dużo towaru do uzupełnienia pierwszego pojazdu STR_CONFIG_SETTING_GRADUAL_LOADING :Stopniowy załadunek pojazdów: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Załadunek pojazdów odbywa się stopniowo przy użyciu specyficznych czasów ładowania zamiast ładowania wszystkiego na raz w określonym czasie w zależności tylko od ilości załadowanego towaru STR_CONFIG_SETTING_INFLATION :Inflacja: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Włącz inflację w ekonomii, gdzie koszty rosną nieco szybciej niż zapłaty STR_CONFIG_SETTING_SELECTGOODS :Dostarcz ładunek na stację tylko jeśli jest zapotrzebowanie: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dostarczaj towar tylko do tej stacji, która została zlecona dla załadowanego pojazdu. To zapobiega złym notowaniom dla towarów, które nie są obsługiwane na stacji STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksymalna długość mostu: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksymalna długość budowanych mostów STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksymalna długość tunelu: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksymalna długość budowanych tuneli STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Budowa przedsiębiorstw wydobywczych: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda finansowania podstawowego przemysłu. 'żadne' oznacza brak możliwości finansowania czegokolwiek, 'obiecujące' oznacza, że finansowanie jest możliwe, ale konstrukcja pojawi się w losowym miejscu na mapie oraz losowo budowa może zakończyć się porażką, 'jak inne gałęzi przemysłu' oznacza, że przemysł wydobywczy może być budowany tak jak fabryki przetwórcze, w dowolnym miejscu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Niedostępna STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Jak inne przedsiębiorstwa STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Poszukiwania STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Płaska przestrzeń wokół przedsiębiorstw: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Ilość płaskiej przestrzeni wokół zakładu. To zapewnia puste miejsce dostępne przy zakładach do budowy torów itp. STR_CONFIG_SETTING_MULTIPINDTOWN :Pozwól na wiele podobnych przedsiębiorstw w mieście: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalnie każde miasto nie chce mieć więcej niż jedno przedsiębiorstwo jednego typu. Ta opcja pozwala na kilka takich samych przedsiębiorstw w jednym mieście STR_CONFIG_SETTING_SIGNALSIDE :Pokaż semafory: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Wybierz po której stronie torów stawiać semafory STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Po lewej STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Po stronie kierunku jazdy STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Po prawej STR_CONFIG_SETTING_SHOWFINANCES :Pokazuj okno finansów na koniec roku: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Jeśli włączone, to okienko finansowe pokazuje się na zakończenie każdego roku, by ułatwić śledzenie sytuacji finansowej firmy STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nowe polecenia są domyślnie 'bez zatrzymywania się': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalnie pojazd zatrzyma się na każdej stacji, przez którą przejeżdża. Włączając tę opcję, pojazd przejedzie do swojego celu bez zatrzymywania się. Zwróć uwagę na to, że to ustawienie ma wpływ tylko na nowe rozkazy. Indywidualne rozkazy mogą być ustalane bez względu na wartość tej opcji STR_CONFIG_SETTING_STOP_LOCATION :Rozkazy nowego pociągu kończą się domyślnie na {STRING} peronu STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Miejsce, w którym pociąg domyślnie zatrzyma się na peronie. 'Bliższy koniec' oznacza blisko kierunku przyjazdu, 'środek' oznacza środkową część peronu, a 'daleki koniec' oznacza daleko od kierunku przyjazdu. Zapamiętaj, że to ustawienie określa tylko domyślną wartość dla nowych rozkazów. Wszystkie rozkazy mogą być zmienione, bez względu na wartość ustawienia STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :początku STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :środku STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :końcu STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ustawianie się samochodów w kolejkach (z efektem quantum): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Każ pojazdom drogowych czekać przed zajętymi przystankami dopóki nie zostaną zwolnione STR_CONFIG_SETTING_AUTOSCROLL :Przesuń okno, kiedy kursor jest przy krawędzi: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Kiedy włączone, okna podglądu będą się przewijać, gdy kursor znajdzie się przy krańcu okna STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Wyłączone STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Główne okno podglądu, tylko w trybie pełnego ekran STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Główne okno podglądu STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Wszystkie okna podglądu STR_CONFIG_SETTING_BRIBE :Pozwól dawać łapówki lokalnym władzom: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Pozwalaj firmom na próby przekupienia lokalnych władz miast. Jeśli przekupstwo zostanie wykryte przez inspektora, firma nie będzie mogła działać w danym mieście przez 6 miesięcy STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Pozwól na kupno wyłączności transportowej: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Kiedy firma wykupuje wyłączność na transport w mieście, to stacje i przystanki przeciwników (pasażerskie i towarowe) nie otrzymają żadnego towaru przez cały rok STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Pozwól na fundowywanie budynków: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Pozwalaj firmom na sponsorowanie budowy nowych budynków w miastach STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Pozwalaj na sponsorowanie odbudowy lokalnych dróg: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Pozwalaj firmom na przekazywanie miastom funduszy na rekonstrukcję dróg, by sabotować transport drogowy w mieście STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Pozwól na wysyłanie pieniędzy do innych firm: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Pozwalaj na przelewy pieniężne pomiędzy firmami w trybie gry dla wielu graczy STR_CONFIG_SETTING_FREIGHT_TRAINS :Mnożnik wagi dla symulacji ciężkich pociągów towarowych: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Ustaw wpływ przewożenia towaru przez pociągi. Wyższa wartość utrudnia transport towarów przez pociągi, w szczególności na wzniesieniach STR_CONFIG_SETTING_PLANE_SPEED :Prędkość samolotów: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Ustaw zależną prędkość samolotów w porównaniu do innych typów pojazdów, aby zmniejszyć przychód generowany przez transport samolotami STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Liczba katastrof lotniczych: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Ustaw szanse na katastrofy lotnicze STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Brak STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Zredukowana STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalna STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Pozwól na budowę przystanków przelotowych na drogach miejskich: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach własnościowych miast STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Pozwól na przejazd przez przystanki należące do przeciwników: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach własnościowych innych graczy STR_CONFIG_SETTING_ADJACENT_STATIONS :Pozwól na budowę przylegających stacji: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Pozwalaj, by różne stacje stykały się ze sobą STR_CONFIG_SETTING_DYNAMIC_ENGINES :Zezwól na wiele zestawów NewGRF: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opcja kompatybilności dla starych NewGRFów. Nie wyłączaj jej, chyba, że wiesz, co robisz STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Zmiana tego ustawienia nie jest możliwa, gdy znajdują się tutaj pojazdy STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Utrzymywanie infrastruktury: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kiedy włączone, utrzymanie infrastruktury jest naliczane w kosztach. Koszty wzrastają nadproporcjonalnie do rozmiarów sieci połączeń, a więc dotykają bardziej duże niż małe firmy STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Pozwól budować stare lotniska: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Włączona opcja sprawia, że każdy typ lotniska będzie dostępny na zawsze od chwili wprowadzenia STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ostrzeż, jeśli pojazd się zgubi: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Pokazuj wiadomości o pojazdach, które nie są w stanie znaleźć ścieżki do swoich wyznaczonych celów STR_CONFIG_SETTING_ORDER_REVIEW :Kontroluj polecenia pojazdów: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Kiedy włączone, rozkazy wszystkich pojazdów są sprawdzane co jakiś czas, a wykryte nieprawidłowości są zgłaszane w oknach wiadomości STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nie STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Tak, ale wyklucz zatrzymane STR_CONFIG_SETTING_ORDER_REVIEW_ON :Wszystkich pojazdów STR_CONFIG_SETTING_WARN_INCOME_LESS :Powiadom, jeśli pojazd przynosi straty: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Kiedy włączone, otrzymasz wiadomość o tym, że pojazd nie przyniósł żadnych zysków w całym roku kalendarzowym STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Pojazdy nigdy nie są wycofywane: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kiedy włączone, wszystkie modele pojazdów pozostają dostępne na zawsze od daty ich wprowadzenia STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoodnawianie pojazdów gdy stają się stare: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Kiedy włączone, pojazd zbliżający się do końca swojej żywotności zostaje automatycznie zastąpiony, gdy warunki jego odnowienia są spełnione STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatyczna odnowa, gdy pojazd ma {STRING} maks. wieku STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Odpowiedni wiek pojazdu, kiedy powinien on zostać automatycznie odnowiony STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} miesi{P ąc ące ęcy} do STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} miesi{P ąc ące ęcy} po STR_CONFIG_SETTING_AUTORENEW_MONEY :Min. ilość pieniędzy potrzebna do autoodnowienia: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimalna ilość pieniędzy, która musi znajdować się w banku zanim auto-odnawianie będzie brane pod uwagę STR_CONFIG_SETTING_ERRMSG_DURATION :Czas wyświetlania komunikatów o błędach: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Czas wyświetlania komunikatów o błędach w czerwonym oknie. Niektóre (krytyczne) komunikaty o błędach nie zamykają się automatycznie po tym czasie, tylko muszą zostać zamknięte ręcznie STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P a y ""} STR_CONFIG_SETTING_HOVER_DELAY :Pokaż wskazówki: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Opóźnienie, zanim wskazówka zostanie wyświetlona po najechaniu myszką na element interfejsu. Alternatywnie wskazówki mogą zostać przypisane do prawego przycisku myszki STR_CONFIG_SETTING_HOVER_DELAY_VALUE :po zatrzymaniu kursora przez {COMMA} sekund{P ę y ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :prawy klik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Pokaż populację miasta w jego nazwie: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Wyświetlaj populację miast w ich etykietach na mapie STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grubość linii na wykresie: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grubość linii na wykresach. Cienka linia jest dokładniejsza, grubsza linia jest bardziej widoczna a kolory łatwiejsze do odróżnienia STR_CONFIG_SETTING_LAND_GENERATOR :Generator krajobrazu: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Oryginalny STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksymalna odległość od krawędzi dla rafinerii: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerie są budowane tylko w pobliżu krawędzi map, to znaczy na wybrzeżach dla map wyspiarskich STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Wysokość granicy wiecznych śniegów: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Wyboistość terenu (w TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Bardzo łagodny STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Łagodny STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Wyboisty STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Bardzo wyboisty STR_CONFIG_SETTING_TREE_PLACER :Algorytm rozmieszczenia drzew: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Brak STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Oryginalny STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Ulepszony STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Obrót mapy wysokości: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Przeciwnie do wsk. zegara STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Zgodnie ze wsk. zegara STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Wysokość jaką dostaje płaska mapa: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Włącz kształtowanie krajobrazu pól przy krawędzi mapy: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Jeśli wyłączone, to krawędzie map będą pokryte oceanem STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Jedno lub więcej pól na północnej krawędzi nie jest puste STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedno lub więcej pól na krawędzi nie jest wodą STR_CONFIG_SETTING_STATION_SPREAD :Maksymalna rozpiętość stacji: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maksymalny obszar na jakim mogą znajdować się poszczególne elementy stacji. Pamiętaj, że wysoka wartość spowalnia grę STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatycznie serwisuj helikoptery na lądowiskach: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Serwisuj helikoptery po każdym lądowaniu, nawet jeśli na lądowisku nie ma hangaru STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Przyłącz narzędzia krajobrazu do okien środków transportu: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Otwierając pasek konstrukcji typu transportu, otwieraj też pasek formowania terenu STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Kolor lądu używany w minimapie: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kolor terenu na mini-mapie STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zielony STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :ciemnozielony STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fioletowy STR_CONFIG_SETTING_REVERSE_SCROLLING :Przewijaj obraz myszką w przeciwnym kierunku: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Zachowanie podczas przewijania mapy za pomocą prawego przycisku myszy. W przypadku wyłączenia mysz porusza kamerą. Po włączeniu mysz przesuwa mapę STR_CONFIG_SETTING_SMOOTH_SCROLLING :Wygładź przesuwanie widoku: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Zdecyduj, jak główny widok przesuwa się do konkretnej lokacji, gdy klikasz na mini-mapie lub gdy używasz komendy do przesunięcia do danego obiektu na mapie. Kiedy włączone, widok przesuwa się płynnie, kiedy wyłączone, następuje skok bezpośrednio do wybranego miejsca STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaż dymek z pomiarem podczas używania różnych narzędzi: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Wyświetlaj długość budowanych odcinków i różnicę wysokości przy przeciąganiu w trakcie operacji budowlanych STR_CONFIG_SETTING_LIVERIES :Pokaż barwy firm: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrolka stosowania schematu kolorów pojazdów specyficznych dla typów pojazdów (w przeciwieństwie do specyfiki firmy) STR_CONFIG_SETTING_LIVERIES_NONE :brak STR_CONFIG_SETTING_LIVERIES_OWN :własnej firmy STR_CONFIG_SETTING_LIVERIES_ALL :wszystkich firm STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferuj czat drużynowy po użyciu lub : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Przypisz przyciski i odpowiednio do czatu firmowego i czatu publicznego STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funkcja rolki myszy: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Włączenie przewijania z użyciem dwu-wymiarowych rolek myszy STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :powiększ widok STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :przesuń widok STR_CONFIG_SETTING_SCROLLWHEEL_OFF :wył. STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Prędkość przesuwania widoku: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroluj czułość przewijania kółkiem myszki STR_CONFIG_SETTING_OSK_ACTIVATION :Klawiatura ekranowa: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Wybierz metodę włączania klawiatury ekranowej do wprowadzania tekstu do pól tekstowych używając tylko urządzenia wskazującego. Jest to dedykowane dla małych urządzeń bez klawiatury STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Wyłączone STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Podwójny klik STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Pojedyncze kliknięcie (w przybliżeniu) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Pojedyncze kliknięcie (natychmiast) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulacja prawego przycisku myszy: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Wybierz metodę emulacji klikania prawym przyciskiem myszki STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Wyłączona STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Przewijanie lewym przyciskiem myszy: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Włącz przewijanie mapy przeciąganiem lewym przyciskiem myszki. Jest to przydatne podczas używania ekranu dotykowego do przewijania STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Użyj {STRING} formatu daty dla nazw zapisów gry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format daty w nazwach plików zapisu gry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :długiego (31 grudnia 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krótkiego (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Domyślna paleta dla NewGRF, które nie posiadają zdefiniowanej palety: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Domyślna paleta dla NewGRF'ów, które nie określają, jakich palet potrzebują STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Domyślna (D) Paleta STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta Legacy (W) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatycznie włącz pauzę przy rozpoczęciu nowej gry: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kiedy włączone, gra zostanie automatycznie zatrzymana na samym początku, pozwalając na lepsze rozpoznanie mapy STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Zezwól w czasie wstrzymania gry na: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Wybierz, jakich akcji można dokonywac, gdy gra jest wstrzymana STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Brak działań STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Wszystkie niezwiązane z konstrukcją STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Wszystkie oprócz modyfikowania terenu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Wszystkie działania STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Używaj zaawansowanej listy pojazdów: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Wlącz obsługę zaawansowanych list pojazdów do grupowania pojazdów STR_CONFIG_SETTING_LOADING_INDICATORS :Pokazuj wskaźniki załadunku: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Wybierz, czy wskaźnik załadunku pokazuje się nad ładowanym/rozładowywanym pojazdem STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Pokazuj rozkłady jazdy w tickach, a nie w dniach: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :W tabelach czasu, czas podróży pokaż w tyknięciach gry zamiast w dniach STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Pokazuj przyjazdy i odjazdy w rozkładach: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Wyświetlanie przewidywanego przyjazdu i odjazdu w rozkładach STR_CONFIG_SETTING_QUICKGOTO :Szybkie tworzenie poleceń pojazdu: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Po wybraniu stacji docelowej automatycznie włącz ponownie narzędzie 'idź do' STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Domyślny typ torowiska: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rodzaj torów wybierany przy rozpoczęciu lub załadowaniu gry. 'Pierwszy dostępny' wybiera najstarszy rodzaj torów, 'najnowszy' wybiera najnowszy rodzaj torów, a 'najczęściej używany' wybiera ten, który jest używany najczęściej STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :pierwszy dostępny STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :najnowszy STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :najczęściej używany STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Pokaż zarezerwowane tory: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Nadaj inny kolor zarezerwowanym torom, aby pomóc w odnajdywaniu problemów z pociągami odmawiającymi wjazdu na blok trasy STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pozostaw aktywne narzędzia do budowania po ich użyciu: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Zachowaj narzędzia budowy mostów, tuneli, itp. po użyciu STR_CONFIG_SETTING_EXPENSES_LAYOUT :Pogrupuj wydatki w oknie finsnasów firmy: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Określa układ okienka wydatków firmy STR_CONFIG_SETTING_SOUND_TICKER :Pasek informacji: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Odtwarzaj dźwięk dla podsumowania wiadomości STR_CONFIG_SETTING_SOUND_NEWS :Gazeta: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Odtwarzaj dźwięk po wyświetleniu gazety STR_CONFIG_SETTING_SOUND_NEW_YEAR :Koniec roku: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Odtwarzaj dźwięk na koniec roku podsumowując roczną sytuację przedsiębiorstwa w porównaniu do roku poprzedniego STR_CONFIG_SETTING_SOUND_CONFIRM :Budowa: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Odtwarzaj dźwięk po udanej budowie lub innych działaniach STR_CONFIG_SETTING_SOUND_CLICK :Kliknięcia: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Dźwięk przy kliknięciach STR_CONFIG_SETTING_SOUND_DISASTER :Wypadki/katastrofy: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Odtwarzaj efekty dźwiękowe wypadków i katastrof STR_CONFIG_SETTING_SOUND_VEHICLE :Pojazdy: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Odtwarzaj efekty dźwiękowe pojazdów STR_CONFIG_SETTING_SOUND_AMBIENT :Odgłosy: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Odtwarzaj dźwięki otoczenia - środowisko, przedsiębiorstwa i miasta STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Zablokuj budowę infrastruktury, kiedy brak odpowiednich pojazdów: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Kiedy włączone, rodzaj infrastruktury jest dostępny tylko wtedy, gdy są dostępne również pojazdy, zapobiegając marnowaniu czasu i pieniędzy na zbędną infrastrukturę STR_CONFIG_SETTING_MAX_TRAINS :Maks. liczba pociągów na firmę: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksymalna ilość pociągów, jakie firma może posiadać STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks. liczba samochodów na firmę: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksymalna ilość pojazdów drogowych, jakie firma może posiadać STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks. liczba samolotów na firmę: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksymalna ilość maszyn latających, jakie firma może posiadać STR_CONFIG_SETTING_MAX_SHIPS :Maks. liczba statków na firmę: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksymalna ilość statków, jakie firma może posiadać STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Pociągi niedostępne dla komputera: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Włączona opcja nie pozwala na budowanie pociągów graczom komputerowym STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Samochody niedostępne dla komputera: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Włączona opcja nie pozwala na budowanie dróg graczom komputerowym STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Samoloty niedostępne dla komputera: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Włączona opcja nie pozwala na budowanie lotnisk graczom komputerowym STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Statki niedostępne dla komputera: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Włączona opcja nie pozwala na budowanie statków graczom komputerowym STR_CONFIG_SETTING_AI_PROFILE :Domyślny profil ustawień: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Wybierz, którego profilu ustawień używać dla losowych SI lub dla wartości początkowych przy dodawaniu nowych SI lub Game Script STR_CONFIG_SETTING_AI_PROFILE_EASY :Łatwy STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Średni STR_CONFIG_SETTING_AI_PROFILE_HARD :Trudny STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Pozwól na SI w grze wieloosobowej: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Pozwól komputerowym graczom SI na udział w grach dla wielu graczy STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :ilość #opcodes przed uśpieniem skryptu: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksymalna liczba kroków obliczeniowych, jakie skrypt może zrobić w jednej kolejce STR_CONFIG_SETTING_SERVINT_ISPERCENT :Okres między serwisowaniami w procentach: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Wybierz, czy serwisowanie pojazdów odbywa się na podstawie czasu od ostatniego serwisu, czy sprawności malejącej o pewien procent maksymalnej sprawności STR_CONFIG_SETTING_SERVINT_TRAINS :Domyślny interwał serwisowania pociągów: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych pojazdów kolejowych, jeśli takowy nie istnieje dla określonego pojazdu STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} d{P zień ni ni}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Wyłączone STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Domyślny interwał serwisowania pojazdów: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych pojazdów drogowych, jeśli takowy nie istnieje dla określonego pojazdu STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Domyślny interwał serwisowania samolotów: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych maszyn latających, jeśli takowy nie istnieje dla określonego pojazdu STR_CONFIG_SETTING_SERVINT_SHIPS :Domyślny interwał serwisowania statków: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ustaw domyślny okres serwisowania dla nowych statków, jeśli takowy nie istnieje dla określonego pojazdu STR_CONFIG_SETTING_NOSERVICE :Wyłącz serwisowanie jeśli awarie pojazdów są wyłączone: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Kiedy włączone, pojazdy nie są serwisowane, jeśli nie mogą się popsuć STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Włącz limity prędkości wagonów: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Kiedy włączone, użyj także ograniczenia prędkości dla wagonów do obliczenia maksymalnej prędkości pociągu STR_CONFIG_SETTING_DISABLE_ELRAILS :Zabroń korzystania z kolei elektrycznych: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Włączając to ustawienie, nie jest już wymagane elektryfikowanie torów, aby elektrowozy mogły po nich jeździć STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Przybycie pierwszego pojazdu do stacji gracza: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Wyświetl wiadomość w gazecie kiedy pierwszy pojazd dojedzie do stacji gracza STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Przybycie pierwszego pojazdu do stacji przeciwnika: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Wyświetl wiadomość w gazecie kiedy pierwszy pojazd dojedzie do stacji nowego konkurenta STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Wypadki / klęski: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Wyświetl wiadomość w gazecie kiedy zdarzy się wypadek lub nastąpi katastrofa STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informacja firmy: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Wyświetl wiadomość w gazecie kiedy powstaje nowa firma lub kiedy istniejącym firmom grozi bankructwo STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Otwarcie przedsiębiorstw: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Wyświetl wiadomość w gazecie kiedy powstają nowe przedsiębiorstwa STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zamknięcie przedsiębiorstw: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Wyświetl wiadomość w gazecie kiedy przedsiębiorstwa są likwidowane STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Zmiany ekonomiczne: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Wyświetl wiadomość w gazecie o globalnych zmianach w ekonomii STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Zmiany w produkcji przedsiębiorstw obsługiwanych przez firmę: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Wyświetl wiadomość w gazecie kiedy zmieniają się poziomy produkcji przedsiębiorstw, które są obsługiwane przez firmę STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Zmiany w produkcji przedsiębiorstw obsługiwanych przez przeciwników: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Wyświetl wiadomość w gazecie kiedy zmieniają się poziomy produkcji przedsiębiorstw, które są obsługiwane przez konkurencyjne firmy STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Zmiany w produkcji w pozostałych przedsiębiorstwach: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Wyświetl wiadomość w gazecie kiedy zmieniają się poziomy produkcji przedsiębiorstw, które nie są obsługiwane przez konkurencyjne firmy STR_CONFIG_SETTING_NEWS_ADVICE :Rada / informacja o pojazdach firmy: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Wyświetl wiadomość o pojazdach wymagających uwagi STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nowe pojazdy: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Wyświetl wiadomość w gazecie o dostępnym nowym typie pojazdu STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Zmiany w akceptowaniu ładunku: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Wyświetlaj wiadomości o zmianach w akceptowaniu towarów przez stacje STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsydia: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Wyświetl wiadomość w gazecie o wydarzeniach związanych z subsydiami STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Ogólne informacje: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Wyświetl wiadomość w gazecie o wydarzeniach takich jak zakup ekskluzywnych praw lub fundowanie przebudowy dróg STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Wyłączone STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Sumaryczne STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Pełne STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Pojawienie się kolorowych wiadomości w: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Rok, w którym wiadomości w gazetach są drukowane w kolorze. Przed tym rokiem drukowane są monochromatyczne czarno-białe STR_CONFIG_SETTING_STARTING_YEAR :Data rozpoczęcia gry: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Pozwól na łagodną ekonomię (więcej małych zmian): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kiedy włączone, produkcja zakładów zmienia się częściej, ale mniejszymi krokami. To ustawienie zazwyczaj nie daje żadnego efektu, jeśli typy zakładów są pobierane z NewGRFów STR_CONFIG_SETTING_ALLOW_SHARES :Pozwól kupować udziały w innych firmach: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kiedy włączone, pozwala na kupowanie i sprzedawanie udziałów w firmie. Udziały będą dostępne tylko dla firm z odpowiednim stażem STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Udział w zyskach w przypadku częściowego transportu (przeładunku): {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Udział procentowy dochodu pośrednika otrzymywany za transfer towaru. Umożliwia kontrolę nad całościowym dochodem za dowóz towarów w łańcuchu dowozowym STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Podczas przeciągania ustaw semafor co: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ustaw dystans, na jakim semafory będą budowane przy torach aż do następnej przeszkody (semafor, zwrotnica), przy przeciąganiu STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} p{P ole ola ól} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Zachowaj stały odstęp między semaforami przy przeciąganiu: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Wybierz sposób budowania semaforów przy przeciąganiu z wciśniętym Ctrl. Kiedy wyłączone, semafory są stawiane przy tunelach lub mostach, by nie zostawiać długich odcinków bez sygnałów. Kiedy włączone, semafory są stawiane co X pól, sprawiając, że stawianie semaforów na rownoległych torach jest łatwiejsze STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatycznie buduj semafory przed: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ustaw rok, w którym semafory świetlne będą używane. Przed tym rokiem w użyciu będą semafory kształtowe (które mają te same właściwości, tylko inny wygląd) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Uaktywnij okno budowania sygnałów: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Wyświetlaj okno wyboru typu semaforów do budowy, zamiast samego przełączania typu semafora z Ctrl+klik bez okna STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Domyślny typ sygnalizatorów: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Domyślny typ semaforów STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :sygnalizatory bloku STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :sygnalizatory jazdy STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :sygnalizatory jazdy - jednokierunkowe STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Przełączaj typy sygnalizatorów: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Wybierz, między jakimi typami semaforów przełączać, po naciśnięciu Ctrl+klik przy budowaniu semaforów STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :tylko sygnalizatory blokowe STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :tylko sygnalizatory jazdy STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :wszystkie STR_CONFIG_SETTING_TOWN_LAYOUT :Układ dróg dla nowych miast: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Układ sieci dróg w miastach STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Oryginalny STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Lepsze drogi STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :siatka 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :siatka 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Losowy STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Miasta, które mogą budować drogi: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Pozwalaj miastom na budowę dróg, by się rozrastać. Wyłącz, by miasta same nie mogły budować dróg STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Miasta, które mogą budować przejazdy kolejowe: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Aktywacja tej opcji pozwala miastom budować przejazdy kolejowe STR_CONFIG_SETTING_NOISE_LEVEL :Pozwól miastom kontrolować poziom hałasu dla lotnisk: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kiedy ta opcja jest wyłączona, w miastach można zbudować 2 lotniska. Kiedy opcja jest włączona, dopuszczalna liczba lotnisk jest określana przez tolerancję hałasu w mieście, która zależy od populacji oraz rozmiaru i odległości od lotniska STR_CONFIG_SETTING_TOWN_FOUNDING :Zakładanie miast w grze: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Aktywacja tej opcji umożliwia graczom zakładanie nowych miast w grze STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zabronione STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Dozwolone STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Dozwolone, dowolny układ miasta STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Rozmieszczenie drzew w grze: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Losowe pojawianie się drzew podczas gry. Może mieć to wpływ na zakłady opierające się na wyrastaniu drzew, np. tartaki STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Brak {RED}(tartaki nie działają) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Tylko w lasach deszczowych STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Wszędzie STR_CONFIG_SETTING_TOOLBAR_POS :Pozycja głównego paska narzędzi: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Pozioma pozycja głównego paska narzędzi na górze ekranu STR_CONFIG_SETTING_STATUSBAR_POS :Pozycja paska stanu: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Pozioma pozycja paska statusu na dole ekranu STR_CONFIG_SETTING_SNAP_RADIUS :Promień przyciągania okna: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Odległość między okienkami zanim przesuwane okno zostanie automatycznie dosunięte do sąsiedniego okna STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel{P "" e i} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Wyłączone STR_CONFIG_SETTING_SOFT_LIMIT :Maksymalna liczba nie przyszpilonych okien: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Liczba nie przyklejonych okienek zanim stare okienka zostaną automatycznie zamknięte, by zrobić miejsce dla nowych STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :wyłączone STR_CONFIG_SETTING_ZOOM_MIN :Maksymalne przybliżenie: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maksymalne zbliżenie w dodatkowych oknach podglądu. Wyższa wartość oznacza większe zużycie pamięci STR_CONFIG_SETTING_ZOOM_MAX :Maksymalne oddalenie: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maksymalne oddalenie w dodatkowych oknach podglądu. Wyższa wartość może powodować opóźnienia (lagi) podczas ich używania STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :normalne STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Szybkość rozwoju miast: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Szybkość rozwoju miast STR_CONFIG_SETTING_TOWN_GROWTH_NONE :brak STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :mała STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :normalna STR_CONFIG_SETTING_TOWN_GROWTH_FAST :duża STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :bardzo duża STR_CONFIG_SETTING_LARGER_TOWNS :Proporcje miejscowości, które będą miastami: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Liczba miasteczek, które staną się miastami, czyli miasteczka od początku większe i rozwijające się szybciej STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 z {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Żadne STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Początkowy mnożnik rozmiarów metropolii: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Średni rozmiar dużych miast w porównaniu do normalnych miast na początku gry STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Usuwaj absurdalne fragmenty ulicy podczas rekonstrukcji dróg: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Usuń ślepe zaułki podczas sponsorowanych remontów dróg STR_CONFIG_SETTING_GUI :{ORANGE}Interfejs STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstrukcje STR_CONFIG_SETTING_VEHICLES :{ORANGE}Pojazdy STR_CONFIG_SETTING_STATIONS :{ORANGE}Stacje STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomia STR_CONFIG_SETTING_AI :{ORANGE}Rywale STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Opcje wyświetlania STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakcja STR_CONFIG_SETTING_SOUND :{ORANGE}Efekty dźwiękowe STR_CONFIG_SETTING_NEWS :{ORANGE}Wiadomości STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sygnały STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Obsługa ładunków STR_CONFIG_SETTING_AI_NPC :{ORANGE}Gracze komputerowi STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoodnowa STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Serwisowanie STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Wyznaczanie trasy STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Pociągi STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Miasta STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Przedsiębiorstwa STR_CONFIG_SETTING_PATHFINDER_OPF :Oryginalne STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Zalecane) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Wytyczanie drogi dla pociągów: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :System wyszukiwania trasy dla pociągów STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Wytyczanie drogi dla pojazdów: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :System wyszukiwania trasy dla pojazdów drogowych STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Wytyczanie drogi dla statków: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :System wyszukiwania trasy dla statków STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatycznie zawracaj przy sygnałach: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Pozwól pociągom zawracać przed semaforem, jeśli czekają tam bardzo długo STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Zmiana wartości # Config errors STR_CONFIG_ERROR :{WHITE}Błąd w pliku konfiguracyjnym STR_CONFIG_ERROR_ARRAY :{WHITE}... błąd w tablicy '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... nieprawidłowa wartość '{STRING}' dla '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... zbędne znaki na końcu ustawienia '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorowanie NewGRFa '{STRING}': zduplikowany GRF ID z '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... pominięcie nieprawidłowych NewGRFów '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nie znaleziono STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :{G=n}niebezpieczne w stałym użyciu STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :systemowe NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :niezgodne z tą wersją OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nieznany STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... poziom kompresji '{STRING}' nie jest poprawny STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format zapisu gry '{STRING}' jest niedostępny. Powracanie do '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Graphics '{STRING}': nie odnaleziono STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoruję zestaw Base Sounds '{STRING}': nie odnaleziono STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoruję zestaw Base Music '{STRING}': nie odnaleziono STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Brak pamięci STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nie powiodła się rezerwacja pamięci cache dla sprite'ów od wielkości {BYTES}. Pamięć cache sprite'ów została zredukowana do {BYTES}. Obniży to wydajność OpenTTD. By zmniejszyć zapotrzebowanie pamięci, możesz spróbować wyłączyć grafikę 32bpp i/lub poziomy zbliżenia # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nowa gra STR_INTRO_LOAD_GAME :{BLACK}Wczytaj grę STR_INTRO_PLAY_SCENARIO :{BLACK}Scenariusze STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Graj z mapą wysokościową STR_INTRO_SCENARIO_EDITOR :{BLACK}Edytor scenariuszy STR_INTRO_MULTIPLAYER :{BLACK}Gra wieloosobowa STR_INTRO_GAME_OPTIONS :{BLACK}Opcje gry STR_INTRO_HIGHSCORE :{BLACK}Tabela wyników STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ustawienia zaawansowane STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ustawienia NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Sprawdź dodatki online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Ustawienia SI/Game Script STR_INTRO_QUIT :{BLACK}Wyjście STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Rozpocznij nową grę. Ctrl+klik pomija konfigurowanie mapy STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Wczytaj zapisaną grę STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Rozpocznij nowa grę używając mapy wysokości jako krajobrazu STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Rozpocznij grę używając własnego scenariusza STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Stwórz własny świat/scenariusz STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Rozpocznij grę wieloosobową STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Wybierz krajobraz 'umiarkowany' STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Wybierz krajobraz 'arktyczny' STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Wybierz krajobraz 'tropikalny' STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Wybierz krajobraz 'zabawkowy' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Wyświetl opcje gry STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Wyświetl tabelę wyników STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Wyświetl ustawienia zaawansowane STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Wyświetl ustawienia NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Poszukaj nowych lub zaktualizowanych dodatków do pobrania STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Pokaż ustawienia SI / Game Script STR_INTRO_TOOLTIP_QUIT :{BLACK}Wyjdź z 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Tej wersji językowej brakuje jeszcze {NUM} wpis{P "" y ów}. Możesz pomóc ulepszyć nam OpenTTD rejestrując się jako tłumacz. Szczegóły znajdziesz w pliku readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Wyjście STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Czy jesteś pewien, że chcesz zakończyć tę grę i wrócić do {STRING}? STR_QUIT_YES :{BLACK}Tak STR_QUIT_NO :{BLACK}Nie # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Wyjście STR_ABANDON_GAME_QUERY :{YELLOW}Czy jesteś pewien że chcesz skończyć grę? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Czy jesteś pewien że chcesz opuścić ten scenariusz? # Cheat window STR_CHEATS :{WHITE}Oszukiwanie STR_CHEATS_TOOLTIP :{BLACK}Pole wyboru wskazuje czy użyłeś już wcześniej tego oszustwa STR_CHEATS_WARNING :{BLACK}Ostrzeżenie! Właśnie chcesz zdradzić swoich współzawodników. Miej na uwadze, że taka hańba będzie pamiętana na wieki STR_CHEAT_MONEY :{LTBLUE}Zwiększ ilość pieniędzy o {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Grasz jako firma: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magiczny buldożer (usuwanie przedsiębiorstw, obiektów nieprzesuwalnych): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunele mogą się przecinać: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Odrzutowce nie będą rozbijać się (często) na małych lotniskach: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Klimat umiarkowany STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Klimat arktyczny STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Klimat tropikalny STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Krajobraz zabawkowy STR_CHEAT_CHANGE_DATE :{LTBLUE}Zmień datę: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Zmiana obecnego roku STR_CHEAT_SETUP_PROD :{LTBLUE}Pozwól modyfikować wielkość produkcji przedsiębiorstw: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nowy schemat kolorów STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Pokaż ogólne schematy koloru STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Pokaż schematy koloru pociągów STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaż schematy koloru samochodów STR_LIVERY_SHIP_TOOLTIP :{BLACK}Pokaż schematy koloru statków STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Pokaż schematy koloru samolotów STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Wybierz główny kolor dla wybranego schematu. Ctrl + klik ustawi ten kolor dla wszystkich schematów STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Wybierz drugi kolor dla wybranego schematu. Ctrl + klik ustawi ten kolor dla wszystkich schematów STR_LIVERY_PANEL_TOOLTIP :{BLACK}Wybierz schemat kolorów do zmiany, albo wiele schematów z CTRL+klik. Kliknij na okienku aby wł./wył. używanie schematu. STR_LIVERY_DEFAULT :Standardowy wygląd STR_LIVERY_STEAM :Parowóz STR_LIVERY_DIESEL :Lokomotywa spalinowa STR_LIVERY_ELECTRIC :Lokomotywa elektryczna STR_LIVERY_MONORAIL :Lokomotywa jednoszynowa STR_LIVERY_MAGLEV :Lokomotywa Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Wagon pasażerski (parowóz) STR_LIVERY_PASSENGER_WAGON_DIESEL :Wagon pasażerski (spalinowy) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Wagon pasażerski (elektryczny) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Wagon osobowy (jednotorowy) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Wagon osobowy (Maglev) STR_LIVERY_FREIGHT_WAGON :Wagon towarowy STR_LIVERY_BUS :Autobus STR_LIVERY_TRUCK :Ciężarówka STR_LIVERY_PASSENGER_SHIP :Prom pasażerski STR_LIVERY_FREIGHT_SHIP :Statek towarowy STR_LIVERY_HELICOPTER :Helikopter STR_LIVERY_SMALL_PLANE :Mały samolot STR_LIVERY_LARGE_PLANE :Duży samolot STR_LIVERY_PASSENGER_TRAM :Tramwaj pasażerski STR_LIVERY_FREIGHT_TRAM :Tramwaj towarowy # Face selection window STR_FACE_CAPTION :{WHITE}Wybór twarzy STR_FACE_CANCEL_TOOLTIP :{BLACK}Anuluj wybór nowej twarzy STR_FACE_OK_TOOLTIP :{BLACK}Zatwierdź wybór nowej twarzy STR_FACE_MALE_BUTTON :{BLACK}Mężczyzna STR_FACE_MALE_TOOLTIP :{BLACK}Wybierz męską twarz STR_FACE_FEMALE_BUTTON :{BLACK}Kobieta STR_FACE_FEMALE_TOOLTIP :{BLACK}Wybierz kobiecą twarz STR_FACE_NEW_FACE_BUTTON :{BLACK}Nowa twarz STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Stwórz nową losową twarz STR_FACE_ADVANCED :{BLACK}Zaawansowane STR_FACE_ADVANCED_TOOLTIP :{BLACK}Zaawansowany widok wyboru twarzy STR_FACE_SIMPLE :{BLACK}Prosty widok STR_FACE_SIMPLE_TOOLTIP :{BLACK}Prosty widok wyboru twarzy STR_FACE_LOAD :{BLACK}Wczytaj STR_FACE_LOAD_TOOLTIP :{BLACK}Wczytaj ulubioną twarz STR_FACE_LOAD_DONE :{WHITE}Twoja ulubiona twarz została wczytana z pliku konfiguracyjnego OpenTTD STR_FACE_FACECODE :{BLACK}Numer twarzy gracza STR_FACE_FACECODE_TOOLTIP :{BLACK}Obejrzyj i/lub ustaw numer twarzy prezesa firmy STR_FACE_FACECODE_CAPTION :{WHITE}Obejrzyj i/lub ustaw numer twarzy prezesa STR_FACE_FACECODE_SET :{WHITE}Ustawiono nowy numer twarzy gracza STR_FACE_FACECODE_ERR :{WHITE}Nie można ustawić numeru twarzy prezesa - musi być liczbą pomiędzy 0 a 4'294'967'295! STR_FACE_SAVE :{BLACK}Zapisz STR_FACE_SAVE_TOOLTIP :{BLACK}Zapisz ulubioną twarz STR_FACE_SAVE_DONE :{WHITE}Ta twarz będzie zapisana w pliku konfiguracyjnym OpenTTD jako Twoja ulubiona STR_FACE_EUROPEAN :{BLACK}Europejska STR_FACE_SELECT_EUROPEAN :{BLACK}Wybierz twarz o karnacji europejskiej STR_FACE_AFRICAN :{BLACK}Afrykańska STR_FACE_SELECT_AFRICAN :{BLACK}Wybierz twarz o karnacji afrykańskiej STR_FACE_YES :Tak STR_FACE_NO :Nie STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Pokaż wąsy lub kolczyk STR_FACE_HAIR :Włosy: STR_FACE_HAIR_TOOLTIP :{BLACK}Zmień włosy STR_FACE_EYEBROWS :Brwi: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Zmień brwi STR_FACE_EYECOLOUR :Kolor oczu: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Zmień kolor oczu STR_FACE_GLASSES :Okulary STR_FACE_GLASSES_TOOLTIP :{BLACK}Uaktywnij okulary STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Zmień okulary STR_FACE_NOSE :Nos: STR_FACE_NOSE_TOOLTIP :{BLACK}Zmień nos STR_FACE_LIPS :Usta: STR_FACE_MOUSTACHE :Wąsy: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Zmień usta lub wąsy STR_FACE_CHIN :Broda: STR_FACE_CHIN_TOOLTIP :{BLACK}Zmień brodę STR_FACE_JACKET :Marynarka: STR_FACE_JACKET_TOOLTIP :{BLACK}Zmień marynarkę STR_FACE_COLLAR :Kołnierz: STR_FACE_COLLAR_TOOLTIP :{BLACK}Zmień kołnierz STR_FACE_TIE :Krawat: STR_FACE_EARRING :Kolczyk: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Zmień krawat lub kolczyk # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Gra wieloosobowa STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Połączenie: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Wybierz między grą w internecie a grą w sieci lokalnej STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nazwa gracza: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}To jest nazwa pod którą będą Cię widzieć inni gracze STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nazwa STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nazwa gry STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klientów STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klientów podłączonych / maks.{}Firm podłączonych / maks. STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Rozmiar mapy STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Rozmiar mapy{}Kliknij, by sortować wg powierzchni STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Data STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Bieżąca data STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Lata STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Ilość lat{}trwania gry STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Język, wersja serwera, itp. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Kliknij na grze z listy by ją wybrać STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Serwer z którym ostatnio się połączyłeś: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Kliknij, aby wybrać serwer na którym grałeś ostatnio STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFORMACJE O GRZE STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klienci: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Język: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Krajobraz: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Rozmiar mapy: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Wersja serwera: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adres serwera: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Data uruchomienia: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Aktualna data: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Chronione hasłem! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERWER WYŁĄCZONY STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERWER PEŁNY STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}NIEZGODNA WERSJA STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NIEZGODNE NEWGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Przyłącz się do gry STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Odśwież serwer STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Odśwież informacje o serwerze STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Znajdź serwery STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Przeszukuje sieć w poszukiwaniu serwera STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj serwer STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Dodaj serwer do listy, która będzie przeszukiwana w poszukiwaniu uruchomionych gier STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Uruchom serwer STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Uruchom własny serwer STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Wprowadź swoje imię STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Wpisz adres IP serwera # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Rozpocznij nową grę wieloosobową STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nazwa gry: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nazwa gry będzie wyświetlana u innych graczy w menu gry wieloosobowej STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Ustaw hasło STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zabezpiecz grę hasłem jeśli nie chcesz, by była publicznie dostępna STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (publiczny) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" ów ów} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Dopuszczalna ilość klientów: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Ustaw maksymalną liczbę klientów. Nie wszystkie pola muszą być wypełnione. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} firm{P a y ""} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksymalna ilość firm: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ogranicz serwer do określonej ilości firm STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} widz{P "" ów ów} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksymalna ilość widzów: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ogranicz serwer do określonej ilości widzów STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Używany język: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Inni gracze będą poinformowani jaki język jest używany na serwerze STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Wpisz nazwę dla gry sieciowej # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Dowolny STR_NETWORK_LANG_ENGLISH :Angielski STR_NETWORK_LANG_GERMAN :Niemiecki STR_NETWORK_LANG_FRENCH :Francuski STR_NETWORK_LANG_BRAZILIAN :Brazylijski STR_NETWORK_LANG_BULGARIAN :Bułgarski STR_NETWORK_LANG_CHINESE :Chiński STR_NETWORK_LANG_CZECH :Czeski STR_NETWORK_LANG_DANISH :Duński STR_NETWORK_LANG_DUTCH :Holenderski STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Fiński STR_NETWORK_LANG_HUNGARIAN :Węgierski STR_NETWORK_LANG_ICELANDIC :Islandzki STR_NETWORK_LANG_ITALIAN :Włoski STR_NETWORK_LANG_JAPANESE :Japoński STR_NETWORK_LANG_KOREAN :Koreański STR_NETWORK_LANG_LITHUANIAN :Litewski STR_NETWORK_LANG_NORWEGIAN :Norweski STR_NETWORK_LANG_POLISH :Polski STR_NETWORK_LANG_PORTUGUESE :Portugalski STR_NETWORK_LANG_ROMANIAN :Rumuński STR_NETWORK_LANG_RUSSIAN :Rosyjski STR_NETWORK_LANG_SLOVAK :Słowacki STR_NETWORK_LANG_SLOVENIAN :Słoweński STR_NETWORK_LANG_SPANISH :Hiszpański STR_NETWORK_LANG_SWEDISH :Szwedzki STR_NETWORK_LANG_TURKISH :Turecki STR_NETWORK_LANG_UKRAINIAN :Ukraiński STR_NETWORK_LANG_AFRIKAANS :Afrykanerski STR_NETWORK_LANG_CROATIAN :Chorwacki STR_NETWORK_LANG_CATALAN :Kataloński STR_NETWORK_LANG_ESTONIAN :Estoński STR_NETWORK_LANG_GALICIAN :Galicyjski STR_NETWORK_LANG_GREEK :Grecki STR_NETWORK_LANG_LATVIAN :Łotewski ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Lobby gry wieloosobowej STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Przygotowanie do połączenia: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Lista wszystkich firm w grze. Możesz przyłączyć się do jednej z nich lub założyć nowa STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INFO O FIRMIE STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nazwa firmy: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Inauguracja: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Wartość firmy: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Bieżący bilans: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Przychód w ostatnim roku: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Wydajność: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Pojazdy: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stacje: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Gracze: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nowa firma STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Rozpoczęcie działalności nowej firmy STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Gra obserwowana STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Oglądaj grę jako widz STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Połącz z firmą STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Pomóż zarządzać tą firmą # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Łączenie... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Łączenie... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autoryzacja... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Oczekiwanie... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Pobieranie mapy... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Przetwarzanie danych... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Rejestracja... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Uzyskiwanie informacji o grze... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Uzyskiwanie informacji o firmach... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P "" ów ów} chce się przyłączyć STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}Dotychczas pobrano {BYTES} STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} dotąd pobranych STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Rozłącz STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serwer jest chroniony. Wprowadź hasło STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma jest chroniona. Wprowadź hasło # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Lista klientów STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Obserwuj STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nowa firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Wyrzuć STR_NETWORK_CLIENTLIST_BAN :Banuj STR_NETWORK_CLIENTLIST_GIVE_MONEY :Przekazanie pieniędzy STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mów do wszystkich STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mów do firmy STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Prywatna wiadomość STR_NETWORK_SERVER :Serwer STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Widzowie STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wprowadź ilość pieniędzy, które chcesz przekazać # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nie zapisuj podanego hasła STR_COMPANY_PASSWORD_OK :{BLACK}Nadaj firmie nowe hasło STR_COMPANY_PASSWORD_CAPTION :{WHITE}Hasło firmy STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Hasło domyślne STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Użyj tego hasła jako domyślnego dla nowych firm # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Dołącz STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Dołącz i graj jako ta firma STR_COMPANY_VIEW_PASSWORD :{BLACK}Hasło STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Ochrona hasłem Twojej firmy zapobiega nieautoryzowanemu przyłączeniu się STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Ustaw hasło firmy # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Wyślij STR_NETWORK_CHAT_COMPANY_CAPTION :[Zespół] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Prywatna] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Wszyscy] : STR_NETWORK_CHAT_COMPANY :[Zespół] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Zespół] Do {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Prywatna] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Prywatna] Do {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Wszyscy] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Wpisz tekst do chat'u # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Brak interface'u sieciowego lub skompilowano bez opcji ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Nie można znaleźć żadnej gry w sieci STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Serwer nie odpowiada STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Nie można było połączyć z powodu niezgodności NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Błąd synchronizacji gry sieciowej. STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Połączenie utracone w grze sieciowej. STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Nie można wczytać zapisanej gry z serwera. STR_NETWORK_ERROR_SERVER_START :{WHITE}Nie można uruchomić serwera STR_NETWORK_ERROR_CLIENT_START :{WHITE}Nie można połączyć STR_NETWORK_ERROR_TIMEOUT :{WHITE}Przekroczony limit czasu dla połączenia #{NUM} STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Błąd protokołu, połączenie zostało przerwane STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Wersja gry nie zgadza się z wersją gry na serwerze STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Złe hasło STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serwer jest pełny STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Masz zabroniony dostęp do tego serwera STR_NETWORK_ERROR_KICKED :{WHITE}Zostałeś wyrzucony z serwera STR_NETWORK_ERROR_CHEATER :{WHITE}Ułatwienia są niedozwolone na tym serwerze STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Wysyłano zbyt dużo komend na serwer STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Zbyt długo wprowadzałeś hasło STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Twój komputer jest zbyt wolny, by nadążyć za serwerem STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Twój komputer zbyt długo pobierał mapę STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Twój komputer zbyt długo łączył się z serwerem ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :błąd ogólny STR_NETWORK_ERROR_CLIENT_DESYNC :błąd synchronizacji STR_NETWORK_ERROR_CLIENT_SAVEGAME :nie można załadować mapy STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :połączenie utracone STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :błąd protokołu STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :niezgodność NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nie autoryzowane STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :odebrany nieznany pakiet STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :zła wersja STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nazwa już w użyciu STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :złe hasło gry STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :zła nazwa firmy w DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :wyrzucony przez serwer STR_NETWORK_ERROR_CLIENT_CHEATER :próbował użyć ułatwień STR_NETWORK_ERROR_CLIENT_SERVER_FULL :serwer jest pełny STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :wysyłał zbyt wiele komend STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :nie otrzymano hasła w odpowiednim czasie STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :przekroczono czas STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :pobieranie mapy trwało zbyt długo STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :przetwarzanie mapy trwało za długo ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Możliwa utrata połączenia STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Przez ostatni{P 0 ą e e} {NUM} sekund{P ę y ""} nie otrzymano żadnych danych z serwera # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Gra wstrzymana ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Gra nadal wstrzymana ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Gra nadal wstrzymana ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Gra nadal wstrzymana ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Gra wciąż wstrzymana ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Gra wznowiona ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ilość graczy STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :łączenie klientów STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ręczny STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :skrypt gry ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :opuszczanie STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} dołączył do gry. STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} dołączył do gry (Klient #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} dołączył do firmy #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} dołączył do obserwatorów STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} założył nową firmę (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} opuścił grę ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} zmienił/zmieniła swoje imię na {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} dał/dała twojemu przedsiębiorstwu {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dałeś {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serwer zamknął sesję STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Restart serwera...{}Proszę czekać... # Content downloading window STR_CONTENT_TITLE :{WHITE}Przeglądarka dodatkowej zawartości STR_CONTENT_TYPE_CAPTION :{BLACK}Typ STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Rodzaj zawartości STR_CONTENT_NAME_CAPTION :{BLACK}Nazwa STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nazwa zawartości STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Kliknij na linii, aby zobaczyć szczegóły{}Kliknij na kwadracie wyboru, aby zaznaczyć go do pobrania STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Zaznacz wszystko STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Zaznacz całą zawartość do pobrania STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Wybierz uaktualnienia STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Wybierz całą zawartość do pobrania, która jest ulepszeniem dla istniejącej zawartości STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznacz wszystko STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Zaznacz całą zawartość, aby nie była pobrana STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Przeszukaj zewnętrzne strony internetowe STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Przeszukaj dodatki niedostępne w serwisie OpenTTD na stronach nie współpracujących z OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Opuszczasz OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Warunki pobierania dodatków z zewnętrznych stron internetowych są inne.{}Będziesz musiał(a) odnieść się do zewnętrznych stron w celu uzyskania wskazówek dotyczących instalacji dodatku w OpenTTD.{}Czy chcesz kontynuować? STR_CONTENT_FILTER_TITLE :{BLACK}Filtr etykiety/nazwy: STR_CONTENT_OPEN_URL :{BLACK}Wejdź na stronę STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Wejdź na stronę, by pobrać tę zawartość STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Pobierz STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Rozpocznij pobieranie zaznaczonych danych STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Całkowity rozmiar: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}OPIS ZAWARTOŚCI STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Ten dodatek nie został wybrany do pobrania STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Dodatek ten został wybrany do pobrania STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Zależność ta została wybrana do pobrania STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Już to posiadasz STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Ta zawartość jest nieznana i nie może zostać pobrana do OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Jest to uaktualnienie dla dodatku {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Nazwa: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Wersja: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Opis: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Typ: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Rozmiar pobrania: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Zaznaczono z powodu: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Zależności: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tagi: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD jest zbudowany bez wsparcia dla "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... pobieranie zawartości nie jest możliwe! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafiki bazowe STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :SI STR_CONTENT_TYPE_AI_LIBRARY :Biblioteka SI STR_CONTENT_TYPE_SCENARIO :Scenariusz STR_CONTENT_TYPE_HEIGHTMAP :Mapa wysokościowa STR_CONTENT_TYPE_BASE_SOUNDS :Podstawowe dźwięki STR_CONTENT_TYPE_BASE_MUSIC :Podstawowa muzyka STR_CONTENT_TYPE_GAME_SCRIPT :Skrypt gry STR_CONTENT_TYPE_GS_LIBRARY :Bilbioteka GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Pobieranie dodatkowej zawartości... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Żądanie plików... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Aktualnie pobierane {STRING} ({NUM} z {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Pobieranie ukończone STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}Pobrano {BYTES} z {BYTES} ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Nie można połączyć do serwera dodatków... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Pobieranie nie powiodło się... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... utracono połączenie STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... plik tylko do odczytu STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Nie udało się dekompresować pobranego pliku STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Brak grafiki STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD potrzebuje grafiki do poprawnego działania, ale żadne nie zostały znalezione. Czy zgadzasz się, żeby OpenTTD pobrał i zainstalował grafikę? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Tak, pobierz grafikę STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nie, opuść OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Opcje przeźroczystości STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Przełącz przeźroczystość dla znaków. Ctrl+klik, aby zablokować STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Przełącz przeźroczystość dla drzew. Ctrl+klik, aby zablokować STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Przełącz przeźroczystość dla budynków miejskich. Ctrl+klik, aby zablokować STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Przełącz przeźroczystość dla przedsiębiorstw. Ctrl+klik, aby zablokować STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Przełącz przeźroczystość dla infrastruktury takiej jak stacje, zajezdnie i pkt. orientacyjne. Ctrl+klik, aby zablokować STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Przełącz przeźroczystość dla mostów. Ctrl+klik, aby zablokować STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Przełącz przeźroczystość dla obiektów takich jak latarnie morskie i anteny. Ctrl+klik, aby zablokować STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Przełącz przeźroczystość dla trakcji (linii nośnych). Ctrl+klik, aby zablokować STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Przełącz przeźroczystość dla wskaźników załadunku. Ctrl+klik, aby zablokować STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Ustaw obiekty jako niewidoczne zamiast przeźroczyste # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Podświetlaj zasięg STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Wył. STR_STATION_BUILD_COVERAGE_ON :{BLACK}Wł. STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nie podświetlaj zasięgu projektowanej stacji STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Podświetl zasięg projektowanej stacji STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Akceptuje: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Zasoby: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Połącz stację STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Zbuduj oddzielną stację STR_JOIN_WAYPOINT_CAPTION :{WHITE}Połącz pkt. orientacyjne STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Zbuduj oddzielny pkt. orientacyjny # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstrukcja torowiska STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstrukcja torowiska elektryfikowanego STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Konstrukcja torowiska jednoszynowego STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstrukcja torowiska Maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Budowa torów kolejowych. Ctrl przełącza buduj/usuń dla konstrukcji kolejowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Zbuduj tory kolejowe za pomocą trybu Autotory. Ctrl przełącza buduj/usuń dla konstrukcji kolejowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Budowa zajezdni kolejowej (do kupowania i serwisowania pociągów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Zamiana torów na pkt. orientacyjny. Ctrl umożliwia łączenie pkt. orientacyjnych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Zbuduj stację kolejową. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zbuduj sygnały kolejowe. Ctrl przełącza semafory/sygnały świetlne{}Przeciągnięcie pozwala na budowę sygnałów wzdłuż prostej linii torów. Ctrl pozwala na budowę sygnałów do następnego skrzyżowania{}Ctrl+klik przełącza do okna wyboru sygnałów. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Zbuduj most kolejowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Zbuduj tunel kolejowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Przełącz buduj/usuń dla torów kolejowych, sygnałów, pkt. orientacyjnych i stacji. Przetrzymanie Ctrl usuwa także tory kolejowe z pkt. orientacyjnych i stacji STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Zamiana typu torów. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_RAIL_NAME_RAILROAD :Kolej STR_RAIL_NAME_ELRAIL :Kolej elektryczna STR_RAIL_NAME_MONORAIL :Kolej jednoszynowa STR_RAIL_NAME_MAGLEV :Kolej magnetyczna (Maglev) # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Ukierunkowanie zajezdni STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie zajezdni kolejowej # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pkt. orientacyjny STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Wybierz typ pkt. orientacyjnego # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Wybór stacji STR_STATION_BUILD_ORIENTATION :{BLACK}Ukierunkowanie STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie stacji STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Ilość peronów STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Wybierz ilość peronów na stacji STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Długość peronu STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Wybierz długość stacji STR_STATION_BUILD_DRAG_DROP :{BLACK}Przeciągnij i upuść STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Buduj stację używając "przeciągnij i upuść" STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Wybierz rodzaj stacji do pokazania STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Wybierz typ stacji do zbudowania STR_STATION_CLASS_DFLT :Typowa stacja STR_STATION_CLASS_WAYP :Pkt. orientacyjne # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Wybór sygnałów STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (semafor){}Najprostszy typ sygnału umożliwiający na przebywanie w jednym bloku wyłącznie jednemu pociągowi na raz STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (semafor){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym wypadku czerwony. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (semafor){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (semafor){}Sygnalizator złożony zachowuje się jak kombinacja sygnalizatorów wejściowych oraz wyjściowych. Umożliwia to budowę wielkich "drzew" presygnalizatorów STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (semafor){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sygnalizator bloku (elektryczny){}Najprostszy typ sygnału umożliwiający na przebywanie w jednym bloku wyłącznie jednemu pociągowi na raz STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sygnalizator wejściowy (elektryczny){}Zielony, póki choć jeden sygnalizator wyjściowy dla kolejnego odcinka trasy jest zielony. W przeciwnym przypadku czerwony STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sygnalizator wyjściowy (elektryczny){}Zachowuje się jak sygnalizator blokowy, lecz jest niezbędny do zmiany na poprawny kolor w presygnalizatorach wejściowych i złożonych STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sygnalizator złożony (elektryczny){}Sygnalizator złożony działa jako sygnał wejściowy i wyjściowy. Umożliwia to budowę wielkich "drzew" presygnalizatorów STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Zwykłe sygnalizatory trasy mogą być mijane w przeciwnym kierunku STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednokierunkowy sygnalizator trasy (elektryczny){}Sygnalizator trasy umożliwiający wejście więcej niż jednemu pociagowi do bloku sygnalizatów, o ile pociąg może zarezerwować trasę do bezpiecznego punktu zatrzymania. Sygnalizatory jednokierunkowe nie mogą być mijane w przeciwnym kierunku STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zamiana sygnałów{}Jeżeli włączone, kliknięcie na istniejący sygnał spowoduje zamianę go na wybrany typ i wariant. CTRL+klik przełącza istniejący wariant. Shift+klik pokazuje szacowany koszt zamiany STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Gęstość sygnałów przy przeciąganiu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Zmniejsz gęstość sygnałów przy przeciąganiu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zwiększ gęstość sygnałów przy przeciąganiu # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Wybierz rodzaj mostu kolejowego STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Wybierz most drogowy STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Wybór mostu - kliknij na wybranym moście, aby go zbudować STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Podwieszany, stalowy STR_BRIDGE_NAME_GIRDER_STEEL :Dźwigarowy, stalowy STR_BRIDGE_NAME_CANTILEVER_STEEL :Wspornikowy, stalowy STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Podwieszany, betonowy STR_BRIDGE_NAME_WOODEN :Drewniany STR_BRIDGE_NAME_CONCRETE :Betonowy STR_BRIDGE_NAME_TUBULAR_STEEL :Cylindryczny, stalowy STR_BRIDGE_TUBULAR_SILICON :Cylindryczny, krzemowy # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Budowa dróg STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Budowa torowiska tramwajowego STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Zbuduj drogę. Ctrl przełącza buduj/usuń dla konstrukcji drogowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Zbuduj torowisko tramwajowe. Ctrl przełącza buduj/usuń dla konstrukcji tramwajowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Zbuduj drogę używając trybu Autoroad. Ctrl przełącza buduj/usuń dla konstrukcji drogowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Zbuduj tory tramwajowe używając trybu Autotram. Ctrl przełącza buduj/usuń dla konstrukcji tramwajowych. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Wybuduj zajezdnię samochodową (do kupowania i serwisowania pojazdów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Wybuduj zajezdnię tramwajową (do kupowania i serwisowania pojazdów). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Zbuduj przystanek autobusowy. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Zbuduj pasażerski przystanek tramwajowy. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Zbuduj stację załadunku ciężarówek. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Zbuduj tramwajową stację załadunkową. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Włącz/wyłącz drogi jednokierunkowe STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Zbuduj most drogowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Zbuduj most tramwajowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Zbuduj tunel drogowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Zbuduj tunel tramwajowy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Przełącz buduj/usuń dla konstrukcji dróg STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Przełącz buduj/usuń dla konstrukcji torowiska tramwajowego # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Ukierunkowanie zajezdni samochodowej STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Wybierz umiejscowienie zajezdni samochodowej STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orientacja zajezdni tramwajowej STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Wybierz ukierunkowanie zajezdni tramwajowej # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Ukierunkowanie przystanku STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie przystanku STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ukierunkowanie stacji załadunku ciężarówek STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie stacji załadunku ciężarówek STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Ukierunkowanie Przystanku Tramwajowego STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie przystanku tramwajowego STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Ukierunkowanie Tramwajowej Stacji Towarowej STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie tramwajowej stacji załadunkowej # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Konstrukcja kanału wodnego STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Kanał wodny STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Buduj kanały. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Buduj śluzy. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Wybuduj stocznię (do kupowania i serwisowania statków). Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Zbuduj port. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Ustaw boję, która może być użyta jako pkt. orientacyjny. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Zbuduj akwedukt. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Stwórz akwen wodny.{}Tworzy kanał, chyba że przyrzymany jest CTRL na poziomie morza, wtedy pobliski teren zostanie zatopiony STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Umieszczanie rzek # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Ukierunkowanie stoczni STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Wybierz ukierunkowanie stoczni # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Port # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Lotniska STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Zbuduj lotnisko. Ctrl umożliwia łączenie stacji. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Wybór lotniska STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Wybierz wielkość/typ lotniska STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Kategoria lotniska STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Układ {NUM} STR_AIRPORT_SMALL :Małe STR_AIRPORT_CITY :Miejskie STR_AIRPORT_METRO :Stołeczne STR_AIRPORT_INTERNATIONAL :Międzynarodowe STR_AIRPORT_COMMUTER :Lokalne STR_AIRPORT_INTERCONTINENTAL :Międzykontynentalne STR_AIRPORT_HELIPORT :Klasyczne STR_AIRPORT_HELIDEPOT :Serwisowe STR_AIRPORT_HELISTATION :Stacja STR_AIRPORT_CLASS_SMALL :Małe lotniska STR_AIRPORT_CLASS_LARGE :Duże lotniska STR_AIRPORT_CLASS_HUB :Główne lotniska STR_AIRPORT_CLASS_HELIPORTS :Lądowiska STR_STATION_BUILD_NOISE :{BLACK}Wytwarzany hałas: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Krajobraz STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Obniżenie narożnika terenu. Przeciągnięcie obniża pierwszy zaznaczony róg i wyrównuje zaznaczony obszar do nowej wysokości rogu. Ctrl zaznacza obszar po przekątnej. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Podwyższenie narożnika terenu. Przeciągnięcie podnosi pierwszy zaznaczony róg i wyrównuje zaznaczony obszar do nowej wysokości rogu. Ctrl zaznacza obszar po przekątnej. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Wyrównaj teren do wysykości pierwszego zaznaczonego rogu. Ctrl zaznacza teren po przekątnej. Shift przełącza pomiędzy trybem budowania a szacowaniem jego kosztów STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Zakup teren do przyszłego użycia. Shift przełącza pomiędzy trybem kupowania a szacowaniem jego kosztów # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Wybór obiektu STR_OBJECT_BUILD_TOOLTIP :{BLACK}Wybierz obiekt do budowy. Shift przełącza pomiędzy trybem budowy a szacowaniem jej kosztów STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Wybierz rodzaj obiektu do budowy STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Podgląd obiektu STR_OBJECT_BUILD_SIZE :{BLACK}Rozmiar: {GOLD}{NUM} x {NUM} pól STR_OBJECT_CLASS_LTHS :Latarnie morskie STR_OBJECT_CLASS_TRNS :Nadajniki # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Drzewa STR_PLANT_TREE_TOOLTIP :{BLACK}Wybierz typ drzew do sadzenia. Jeśli na wybranym miejscu są już drzewa, to dodasz więcej drzew różnego typu, bez względu na wybraną opcję. STR_TREES_RANDOM_TYPE :{BLACK}Drzewa różnych rodzajów STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Sadzenie drzew różnych rodzajów. Shift przełącza pomiędzy trybem sadzenia a szacowaniem jego kosztów STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Losowe drzewa STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj losowo krajobraz drzewami # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Tworzenie terenu STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Umieść kamieniste tereny STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definiuj obszar pustyni.{}Wciśnij i trzymaj Ctrl, aby usunąć STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Zwiększ powierzchnie do podwyższenia/obniżenia STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Zmniejsz powierzchnie do podwyższenia/obniżenia STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Tworzenie przypadkowego lądu STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Stwórz nowy scenariusz STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Resetuj krajobraz STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Usuń całą własność firmy z mapy STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Resetuj krajobraz STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Jesteś pewien że chcesz usunąć całą własność firmy? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Tworzenie miast STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nowe miasto STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Zbuduj nowe miasto. Shift+Click pokazuje szacunkowy koszt STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Losowe miasto STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Budowa miasta w losowym miejscu STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Wiele losowych miast STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Pokryj mapę losowo położonymi miastami STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nazwa miasta: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Wprowadź nazwę miasta STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Kliknij by wprowadzić nazwę miasta STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Losowa nazwa STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Stwórz nową losową nazwę STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Wielkość miasta: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Małe STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Średnie STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Duże STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Losowo STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Wybierz wielkość miasta STR_FOUND_TOWN_CITY :{BLACK}Metropolia STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Duże miasta rozwijają się szybciej o małych miast{}W zależności od ustawień, są większe przy zakładaniu STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Układ dróg miasta: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Wybierz układ dróg dla tego miasta STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Oryginalnie STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Lepsze drogi STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Siatka 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Siatka 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Losowo # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Ufunduj nowe przedsiębiorstwo STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Wybierz przedsiębiorstwo z listy STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Wiele losowych STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pokryj mapę losowo położonymi przedsiębiorstwami STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Koszt: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Zleć poszukiwanie STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Zbuduj STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Ufunduj # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Kolejność przetwarzania dla {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Kolejność przetwarzania dla {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Przedsiębiorstwa produkujące STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Przedsiębiorstwa odbierające STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Domy STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Kliknij na przedsiębiorstwie aby zobaczyć jego dostawców i odbiorców STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Kliknij na towar aby zobaczyć jego dostawców i odbiorców STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Łańcuch przetwarzania STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Wyświetla dostawców i odbiorców dla towaru STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Pokaż na mapie STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Pokazuje aktualnie wyświetlone przedsiębiorstwa na mapie STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Wybierz towar STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Wybierz towar, który chcesz wyświetlić STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Wybierz zakład STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Wybierz zakład, który chcesz wyświetlić # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informacja o terenie STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Koszt czyszczenia: {LTBLUE}N/D STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Koszt czyszczenia: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Zysk gdy czyszczone: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Brak STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Właściciel: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Wlasciciel drogi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Wlasciciel linii tramwajowej: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Wlaściciel linii kolejowej: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalne władze: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brak STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Współrzędne: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Zbudowano: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Rodzaj stacji: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stacji: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Rodzaj lotniska: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nazwa lotniska: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nazwa pola lotniska: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akceptowany ładunek: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limit prędkości torowiska {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Skały STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Wyboisty teren STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Odkryty teren STR_LAI_CLEAR_DESCRIPTION_GRASS :Trawa STR_LAI_CLEAR_DESCRIPTION_FIELDS :Pola STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zaśnieżony teren STR_LAI_CLEAR_DESCRIPTION_DESERT :Pustynia STR_LAI_RAIL_DESCRIPTION_TRACK :{G=m}{STRING} odcinek STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} tor z semaforam blokowymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} tor z semaforami wejściowymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} tor z semaforem wyjściowym STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} tor z semaforami złożonymi (combo) STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} tor z semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} tor z jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} tor z semaforami blokowymi i semaforami wejścia STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} tor z semaforami blokowymi i semaforami wyjścia STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} tor z semaforami blokowymi i semaforami złożonymi (combo) STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} tor z semaforami blokowymi i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} tor z semaforami blokowymi i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} tor z semaforami wejścia i wyjścia STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} tor z semaforami wejścia i semaforami złożonymi (combo) STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} tor z semaforami wejścia i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} tor z semaforami wejścia i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} tor z semaforami wyjścia i semaforami złożonymi (combo) STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} tor z semaforami wyjścia i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} tor z semaforami wyjścia i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} tor z semaforami złożonymi (combo) i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} tor z semaforami złożonymi (combo) i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} tor z semaforami trasy i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{G=f}{STRING} zajezdnia STR_LAI_ROAD_DESCRIPTION_ROAD :Droga STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Droga z oświetleniem ulicznym STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Droga z drzewami STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Zajezdnia samochodowa STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Przejazd kolejowy STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Szyny tramwajowe # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (w budowie) STR_LAI_TREE_NAME_TREES :Drzewa STR_LAI_TREE_NAME_RAINFOREST :Las deszczowy STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusy STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Stacja kolejowa STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Lotnisko STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Stacja załadunku ciężarówek STR_LAI_STATION_DESCRIPTION_BUS_STATION :Przystanek STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Port STR_LAI_STATION_DESCRIPTION_BUOY :Boja STR_LAI_STATION_DESCRIPTION_WAYPOINT :Pkt. orientacyjny STR_LAI_WATER_DESCRIPTION_WATER :Woda STR_LAI_WATER_DESCRIPTION_CANAL :Kanał STR_LAI_WATER_DESCRIPTION_LOCK :Śluza STR_LAI_WATER_DESCRIPTION_RIVER :Rzeka STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Wybrzeże lub brzeg rzeki STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Stocznia # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Tunel kolejowy STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunel samochodowy STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Podwieszany most kolejowy ze stali STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Dźwigarowy most kolejowy ze stali STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stalowy wspornikowy most kolejowy STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Podwieszany most kolejowy wzmocniony betonem STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Drewniany most kolejowy STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Most kolejowy z betonu STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Cylindryczny most kolejowy STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Podwieszany most drogowy ze stali STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Dźwigarowy most drogowy ze stali STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Wspornikowy most drogowy ze stali STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Podwieszany most drogowy wzmocniony betonem STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Drewniany most drogowy STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonowy most drogowy STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Cylindryczny most drogowy STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akwedukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Nadajnik STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Latarnia morska STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Siedziba firmy STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren w posiadaniu firmy # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prawa Autorskie {COPYRIGHT} 1995 Chris Sawyer, Wszelkie prawa zastrzeżone STR_ABOUT_VERSION :{BLACK}OpenTTD wersja {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 Zespół OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę STR_SAVELOAD_LOAD_CAPTION :{WHITE}Wczytaj grę STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Zapisz scenariusz STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Wczytaj scenariusz STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Wczytaj mapę wysokości STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Zapisz mapę wysokości STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliknij tutaj aby przejść do domyślnego katalogu STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} wolnego miejsca STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista napędów, katalogów i zapisanych gier STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Obecnie zaznaczona nazwa dla zapisanej gry STR_SAVELOAD_DELETE_BUTTON :{BLACK}Usuń STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Skasuj zaznaczoną zapisaną grę STR_SAVELOAD_SAVE_BUTTON :{BLACK}Zapisz STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Zapisz bieżącą grę używając wybranej nazwy STR_SAVELOAD_LOAD_BUTTON :{BLACK}Wczytaj STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Wczytaj wybraną grę STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Szczegóły gry STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Brak dostępnych informacji STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Wprowadź nazwę pod jaką zapisać grę # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Tworzenie świata STR_MAPGEN_MAPSIZE :{BLACK}Rozmiar Mapy: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Wybierz rozmiar mapy w kwadratach. Liczba dostępnych kwadratów będzie nieco mniejsza STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Ilość miast: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Ilość przedsiębiorstw STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Śnieg od wysokości: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Podnieś wysokość śniegu o jeden w górę STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Obniż wysokość śniegu o jeden w dół STR_MAPGEN_RANDOM_SEED :{BLACK}Losowy numer: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kliknij aby wpisać losowy numer STR_MAPGEN_RANDOM :{BLACK}Losuj STR_MAPGEN_RANDOM_HELP :{BLACK}Zmień losowy numer używany przy tworzeniu terenu STR_MAPGEN_LAND_GENERATOR :{BLACK}Generator terenu: STR_MAPGEN_TREE_PLACER :{BLACK}Algorytm drzew: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ terenu: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Poziom wody: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rzeki: STR_MAPGEN_SMOOTHNESS :{BLACK}Gładkość: STR_MAPGEN_VARIETY :{BLACK}Różnorodność: STR_MAPGEN_GENERATE :{WHITE}Stwórz # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Krańce mapy: STR_MAPGEN_NORTHWEST :{BLACK}Płn.-zach. STR_MAPGEN_NORTHEAST :{BLACK}Płn.-wsch. STR_MAPGEN_SOUTHEAST :{BLACK}Płd.-wsch. STR_MAPGEN_SOUTHWEST :{BLACK}Płd.-zach. STR_MAPGEN_BORDER_FREEFORM :{BLACK}Ląd STR_MAPGEN_BORDER_WATER :{BLACK}Woda STR_MAPGEN_BORDER_RANDOM :{BLACK}Losowe STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Losowo STR_MAPGEN_BORDER_MANUAL :{BLACK}Użytkownika STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Obrót mapy wysokości: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nazwa mapy wysokosci: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Rozmiar: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Wprowadź losowe ziarno STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Zmień wysokość linii śniegowej STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Zmień datę rozpoczęcia # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Typ scenariusza STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Płaski świat STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Stwórz płaski świat STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Losowy teren STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Wysokość płaskiego świata: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Obniż wysokość terenu o jeden w dół STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Podnieś wysokość terenu o jeden w górę STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Zmień wysokość płaskiego świata # Map generation progress STR_GENERATION_WORLD :{WHITE}Tworzenie świata... STR_GENERATION_ABORT :{BLACK}Przerwij STR_GENERATION_ABORT_CAPTION :{WHITE}Przerwij tworzenie świata STR_GENERATION_ABORT_MESSAGE :{YELLOW}Czy na pewno chcesz przerwać tworzenie? STR_GENERATION_PROGRESS :{WHITE}Ukończono w {NUM}% STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tworzenie świata STR_GENERATION_RIVER_GENERATION :{BLACK}Generator rzek STR_GENERATION_TREE_GENERATION :{BLACK}Tworzenie drzew STR_GENERATION_OBJECT_GENERATION :{BLACK}Tworzenie obiektów STR_GENERATION_CLEARING_TILES :{BLACK}Tworzenie terenów skalistych i nierówności STR_GENERATION_SETTINGUP_GAME :{BLACK}Ustawianie gry STR_GENERATION_PREPARING_TILELOOP :{BLACK}Uaktywnianie pól STR_GENERATION_PREPARING_SCRIPT :{BLACK}Uruchamianie skryptu STR_GENERATION_PREPARING_GAME :{BLACK}Przygotowywanie gry # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Ustawienia NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Szczegółowe informacje o NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktywne pliki NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Nieaktywne pliki NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Wybierz konfigurację: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtruj napis: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Załaduj wskazany stan ustawień STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Zapisz schemat STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Zapisz obecną listę jako stan ustawień STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Nadaj nazwę dla stanu ustawień STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Usuń schemat STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Usuń obecnie wskazany stan ustawień STR_NEWGRF_SETTINGS_ADD :{BLACK}Dodaj STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Dodaj zaznaczony plik NewGRF do Twojego ustawienia STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Przeskanuj pliki STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Odśwież listę dostępnych plików NewGRF STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Usuń STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Usuń zaznaczony plik NewGRF z listy STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Do góry STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Przesuń zaznaczony plik NewGRF w górę listy STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Na dół STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Przesuń zaznaczony plik NewGRF na dół listy STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Lista zainstalowanych plików NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Ustaw parametry STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Pokaż parametry STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Zmień paletę STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Zmień paletę kolorów wybranego NewGRF.{}Zrób to gdy grafika tego NewGRF jest różowa STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Zastosuj zmiany STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Znajdź brakujące dodatki online STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Sprawdź czy zagubiony dodatek może być znaleziony online STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nazwa pliku: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}Identyfikator GRF: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Wersja: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Kompatybilność z wersją min.: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}Suma MD5: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametry: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Brak dostępnych informacji STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nie znaleziono pasującego pliku STR_NEWGRF_SETTINGS_DISABLED :{RED}Niedostępny STR_NEWGRF_SETTINGS_INCOMPATIBLE :{G=n}{RED}Niekompatybilne z tą wersją OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Zmień parametry NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zamknij STR_NEWGRF_PARAMETERS_RESET :{BLACK}Resetuj STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Przywróć domyślne wartości parametrów STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametr {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Liczba parametrów: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Zbadaj - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Poprzedni STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Zbadaj obiekt z poprzedniego obszaru STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} w {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obiekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typ szyn STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGFR zmienna 60+parametr x (heksadecymalnie) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Dostosowanie obrazka {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Następny obrazek STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Idź do następnego obrazka, pomijając pseudo/kolorowe/znakowe obrazki i przenieś je na koniec STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Idź do obrazka STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Idź do danego obrazka. Jeśli dany obrazek nie jest normalnym obrazkiem, idź do następnego normalnego obrazka STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Poprzedni obrazek STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Idź do poprzedniego obrazka, pomijając wszystkie pseudo/kolorowe/znakowe obrazki i przenieś je na początek STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Przedstawienie wybranego orbazka. Dostosowanie jest ignorowane podczas rysowania tego obrazka STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Poruszaj obrazkiem, zmieniając przesunięcia X i Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Przesunięcie X: {NUM}, Przesunięcie Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Wybierz obrazek STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wybierz obrazek z dowolnego miejsca na ekranie STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Idź do obrazka # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Ostrzeżenie: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Błąd: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Błąd krytyczny: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Wystąpił błąd krytyczny NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} nie zadziała z wersją TTDPatcha zgłoszoną przez OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} jest przeznaczony dla TTD wersji {STRING} STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} jest zaprojektowany do użycia z {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Niewłaściwy parametr dla {1:STRING}: parametr {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} musi być wczytany przed {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} musi być wczytany po {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} wymaga OpenTTD w wersji {STRING} lub nowszej STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :pliku GRF który miał być tłumaczony STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Wczytano zbyt wiele NewGRF STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Ładowanie {1:STRING} jako statyczne NewGRF z {STRING} może spowodować desynchronizacje STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Nieoczekiwany sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Nieznana wartość Action 0 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Próba użycia niepoprawnego ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} zawiera uszkodzoną teksturę. Wszystkie uszkodzone tekstury będą pokazane jako czerwony znak zapytania (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Zawiera wiele wpisów Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Odczyt poza obszar pseudo-sprite'u (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Aktualnie używany zestaw grafik jest niekompletny.{}Proszę zaktualizować podstawowy zestaw grafik STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}W aktualnie używanym podstawowym zestawie graficznym brakuje pewnej ilości sprite'ów.{}Proszę zaktualizowaćswój zestaw graficzny.{}Z powodu tego, że używasz {YELLOW}rozwojowej wersji OpenTTD{WHITE}, możesz potrzebować również {YELLOW}rozwojowej wersji podstawowego zestawu graficznego{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Potrzebne źródło GRF nie jest dostępne (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} został wyłączony przez {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Niepoprawny/nieznany format układu sprite'u (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uwaga! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Zamierzasz wprowadzić zmiany do uruchomionej gry; to może zawiesić OpenTTD lub uszkodzić stan gry. W takim przypadku nie wysyłaj raportów o błędach.{}Czy jesteś całkowicie pewien? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nie można dodać pliku: taki sam GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Nie znaleziono pasującego pliku (wczytano kompatybilny GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nie można dodać pliku: osiągnięto limit plików NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Wczytano kompatybilne GRF dla brakujących plików STR_NEWGRF_DISABLED_WARNING :{WHITE}Brakujące pliki GRF zostały wyłączone STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Brakujące pliki GRF STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Wyłączenie pauzy może zawiesić OpenTTD. Nie zgłaszaj błędów o powtarzających się zawieszeniach.{}Czy na pewno chcesz wyłączyć pauzę? # NewGRF status STR_NEWGRF_LIST_NONE :Nic STR_NEWGRF_LIST_ALL_FOUND :Wszystkie pliki są dostępne STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Znaleziono kompatybilne pliki STR_NEWGRF_LIST_MISSING :{RED}Brakujące pliki # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Zachowanie NewGRF '{0:STRING}' może powodować desynchronizacje i/lub błędy STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmienia stan wagonu dla '{1:ENGINE}' gdy nie jest w zajezdni STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmienia długość pojazdu dla '{1:ENGINE}' gdy nie jest w zajezdni STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg '{VEHICLE}' należący do '{COMPANY}' ma niepoprawną długość. Prawdopodobnie spowodowane jest to problemami z NewGRFami. Gra może stracić synchronizację lub się zawiesić STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' dostarcza niepoprawnych danych STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacje o ładunku/naprawie dla '{1:ENGINE}' różnią się od listy zakupu po zbudowaniu. Może to spowodować, że autoodnowienie/-zamiana nie wykona remontu poprawnie STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' spowodował nieskończoną pętlę w wywołaniu produkcji STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Wywołanie {1:HEX} zwróciło nieznany/błędny wynik {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE : # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skanowanie NewGRFów STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanuje NewGRFy. Może to zająć chwilę w zależności od ilości... STR_NEWGRF_SCAN_STATUS :{BLACK}Przeskanowano {NUM} NewGRF{P "" y ów} z około {NUM} NewGRFów STR_NEWGRF_SCAN_ARCHIVES :Skanowanie w poszukiwaniu archiwum # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Lista napisów - {COMMA} napis{P "" y ów} STR_SIGN_LIST_MATCH_CASE :{BLACK}Wielkość znaków STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Przełącza uwzględnianie wielkości znaków przy porównywaniu tekstu napisu z filtrem # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Edycja tekstu napisu STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Idź do następnego napisu STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Idź do poprzedniego napisu STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Wpisz nazwę dla znaku # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Miasta STR_TOWN_DIRECTORY_NONE :{ORANGE}- Żaden - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nazwy miast - klik na nazwie aby wycentrować widok na mieście. Ctrl+klik otwiera nowy podgląd na lokację miasta STR_TOWN_POPULATION :{BLACK}Populacja świata: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Miasto) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populacja: {ORANGE}{COMMA}{BLACK} Domów: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasażerów w zeszłym miesiącu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Poczta w zeszłym miesiącu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Towar potrzebny do rozwoju miasta: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Wymagana {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} wymagane zimą STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{G=f}{ORANGE}{STRING}{GREEN} dostarczona STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{G=m}{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (wciąż wymagany) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{G=m}{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (dostarczony) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Miasto rośnie co {ORANGE}{COMMA}{BLACK} {P dzień dni dni} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Miasto rośnie co {ORANGE}{COMMA}{BLACK} {P dzień dni dni} (ufundowane) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Miasto {RED}nie{BLACK} rośnie STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limit hałasu w mieście: {ORANGE}{COMMA}{BLACK} maksymalnie: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na mieście. Ctrl+klik otwiera nowy podgląd na lokację miasta STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Lokalne władze STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Pokaż informacje o lokalnych władzach STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Zmień nazwę miasta STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Rozszerz STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Zwiększ rozmiar miasta STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Skasuj STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Skasuj to miasto STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Zmień nazwę miasta # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} lokalne władze STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ocena transportu firmy: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Możliwe działania: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista rzeczy do zrobienia w tym mieście - klik po więcej detali STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Wykonaj STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Wykonaj zaznaczone działanie z listy powyżej STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Mała kampania reklamowa STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Średnia kampania reklamowa STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Duża kampania reklamowa STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Ufunduj rekonstrukcję dróg STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Zbuduj statuę właściciela STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Ufunduj nowe budynki STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kup wyłączność transportową STR_LOCAL_AUTHORITY_ACTION_BRIBE :Daj łapówkę lokalnym władzom STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Rozpocznij małą kampanię reklamową aby zachęcić pasażerów i fabryki do Twoich usług.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Rozpocznij średnią kampanię reklamową aby zachęcić więcej pasażerów i fabryk do Twoich usług transportowych.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Rozpocznij dużą kampanię reklamową aby zachęcić więcej pasażerów i fabryk do Twoich usług transportowych.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Ufunduj remont sieci dróg. Powoduje zakłócenia w ruchu ulicznym do 6 miesięcy.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Zbuduj pomnik dla uczczenia Twojej firmy.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Ufundowanie nowych budynków komercyjnych w mieście.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kup roczną wyłączność na prawa transportowe w mieście. Lokalne władze pozwolą korzystać tylko z usług Twojej firmy.{}Koszt: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Daj łapówkę lokalnym władzom, powiększ swoją ocenę, ryzykując poważne kary w razie złapania.{}Koszt: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Cele STR_GOALS_GLOBAL_TITLE :{BLACK}Cele globalne: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Brak - STR_GOALS_COMPANY_TITLE :{BLACK}Cele firmy: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknij na celu by wyśrodkować widok na przedsiębiorstwie/mieście/tytule. Ctrl+kliknięcie otwiera nowe okno podglądu lokacji danego przedsiębiorstwa.miasta/tytułu # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Pytanie STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacja STR_GOAL_QUESTION_CAPTION_WARNING :Ostrzeżenie STR_GOAL_QUESTION_CAPTION_ERROR :Błąd ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Anuluj STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nie STR_GOAL_QUESTION_BUTTON_YES :Tak STR_GOAL_QUESTION_BUTTON_DECLINE :Odrzuć STR_GOAL_QUESTION_BUTTON_ACCEPT :Akceptuj STR_GOAL_QUESTION_BUTTON_IGNORE :Ignoruj STR_GOAL_QUESTION_BUTTON_RETRY :Spróbuj ponownie STR_GOAL_QUESTION_BUTTON_PREVIOUS :Poprzedni STR_GOAL_QUESTION_BUTTON_NEXT :Następny STR_GOAL_QUESTION_BUTTON_STOP :Stop STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Idź STR_GOAL_QUESTION_BUTTON_CONTINUE :Kontynuuj STR_GOAL_QUESTION_BUTTON_RESTART :Restartuj STR_GOAL_QUESTION_BUTTON_POSTPONE :Odłóż STR_GOAL_QUESTION_BUTTON_SURRENDER :Poddaj się STR_GOAL_QUESTION_BUTTON_CLOSE :Zamknij # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsydia STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Oferta subsydiów dla usługi przewozu: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} z {STRING} do {STRING}{YELLOW} (do {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Żadne - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Usługi już subsydiowane: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} z {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik na usłudze żeby wyśrodkować widok na fabrykę/miasto. Ctrl+klik otwiera nowy podgląd na pozycji fabryki/miasta # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nazwa stacji - kliknij na nazwie aby wyśrodkować główny widok na stacji. Ctrl+klik otwiera nowy podgląd na lokację stacji STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Przytrzymaj Ctrl, aby zaznaczyć więcej niż jedną opcję STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nic - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Zaznacz wszystkie typy stacji STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Zaznacz wszystkie typy ładunku (oraz brak czekającego ładunku) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nie ma żadnego czekającego ładunku # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Czeka: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akceptuje STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Pokaż listę akceptowanych ładunków STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Akceptuje: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ta stacja posiada wyłączność na usługi transportowe w tym mieście. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Firma {YELLOW}{COMPANY}{BLACK} kupiła wyłączność na usługi transportowe w tym mieście. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Oceny STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Pokaż ocenę stacji STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokalna ocena usług transportowych: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Zatrważające STR_CARGO_RATING_VERY_POOR :Liche STR_CARGO_RATING_POOR :Marne STR_CARGO_RATING_MEDIOCRE :Przeciętne STR_CARGO_RATING_GOOD :Dobre STR_CARGO_RATING_VERY_GOOD :Bardzo dobre STR_CARGO_RATING_EXCELLENT :Wyśmienite STR_CARGO_RATING_OUTSTANDING :Niezrównane ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na pozycji stacji. Ctrl+klik otwiera nowy podgląd na lokację stacji STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Zmień nazwę stacji STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Pokazuje wszystkie pociągi, które mają tę stację w swoim rozkładzie STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Pokazuje wszystkie samochody, które mają tę stację w swoim rozkładzie STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Pokazuje wszystkie samoloty, które mają tę stację w swoim rozkładzie STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Pokazuje wszystkie statki, które mają tę stację w swoim rozkładzie STR_STATION_VIEW_RENAME_STATION_CAPTION :Zmień nazwę stacji STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Zamknij lotnisko STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Nie zezwalaj maszynie lądować na tym lotnisku # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na pkt. orientacyjnym. Ctrl+klik otwiera nowy podgląd na lokacji pkt. orientacyjnego STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Zmień nazwę pkt. orientacyjnego STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centruj główny widok na pozycji boi. Ctrl+klik otwiera nowy podgląd na lokacji boi STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Zmień nazwę boji STR_EDIT_WAYPOINT_NAME :{WHITE}Edytuj nazwę pkt. orientacyjnego # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finanse {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Wydatki/Przychody STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstrukcje STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nowe pojazdy STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Utrzymanie pociągów STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Utrzymanie samochodów STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Utrzymanie samolotów STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Utrzymanie statków STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Utrzymywanie własności STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Przychód z pociągów STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Przychód z samochodów STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Przychód z samolotów STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Przychód ze statków STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Odsetki od pożyczki STR_FINANCES_SECTION_OTHER :{GOLD}Inne STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Łącznie: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bilans bankowy STR_FINANCES_LOAN_TITLE :{WHITE}Pożyczka STR_FINANCES_MAX_LOAN :{WHITE}Maks. pożyczka: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pożyczka {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Zwiększ wielkość pożyczki. Ctrl+Klik spłaca maksymalną możliwą kwotę pożyczki STR_FINANCES_REPAY_BUTTON :{BLACK}Zwrot {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Zwróć cześć pożyczki. Ctrl+Kliknięcie zwraca największą możliwą sumę STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Prezes) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Inauguracja: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Schemat kolorów: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Pojazdy: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} pociąg{P "" i ów} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} pojazd{P "" y ów} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} samolot{P "" y ów} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} stat{P ek ki ków} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Brak STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Wartość firmy: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% w posiadaniu przez {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktura: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} element{P "" y ów} kolei STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} element{P "" y ów} drogi STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} p{P ole ola ól} wody STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} p{P ole ola ól} stacji STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} lotnisk{P o a ""} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Żaden STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Budowa Siedziby STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Zbuduj siedzibę firmy STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Zobacz SG STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Zobacz siedzibę firmy STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Przenieś SG STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Zbuduj siedzibę główną w innym miejscu za cenę 1% wartości firmy. Shift+klik pokazuje szacunkowy koszt bez przenoszenia siedziby STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Szczegóły STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobacz szczegółowe wartości infrastruktury STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nowa twarz STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Wybierz nową twarz prezesa STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Schemat kolorów STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Zmień kolor pojazdów firmy STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nazwa Firmy STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Zmień nazwę firmy STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Prezes STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Zmień imię prezesa STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kup 25% udziałów w firmie STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sprzedaj 25% udziałów w firmie STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kup 25% udziałów w tej firmie. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sprzedaj 25% udziałów tej firmy. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nazwa firmy STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nazwisko prezesa STR_BUY_COMPANY_MESSAGE :{WHITE}Szukamy firmy transportowej, która przejęłaby naszą firmę{}{}Chcesz kupić {COMPANY} za {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktura firmy {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Elementy kolei: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Sygnalizatory STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Elementy dróg: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Droga STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramwaj STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Pola wody: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanały STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stacje: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Pola stacji STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lotniska STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/rok ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/rok # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Przedsiębiorstwa STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Żaden - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} (przetransportowano {COMMA}%) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} (przetransportowano {COMMA}%/{COMMA}%) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nazwy zakładów - kliknij na nazwie zakładu by wyśrodkować na nim widok. Ctrl+klik otwiera nowy podgląd na lokacji zakładu # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Wyprodukowano w ostatnim miesiącu: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% przetransportowano) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na przedsiębiorstwie. Ctrl+klik otwiera nowy podgląd na pozycji przedsiębiorstwa STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Poziom produkcji: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Ładunek oczekujący na przetworzenie: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmiana produkcji (wielokrotność 8, do 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Zmiana poziomu produkcji (procentowo, do 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} pociąg{P "" i ów} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} samoch{P ód ody odów} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} stat{P ek ki ków} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} samolot{P "" y ów} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Pociągi - klik na pojeździe aby uzyskać informacje STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Samochody - klik na pojeździe po więcej informacji STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Statki - kliknij aby uzyskać informacje o statku STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Samolot - klik na samolocie aby uzyskać informacje STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Zysk w tym roku: {CURRENCY_LONG} (ostatni rok: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Dostępne lokomotywy STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Dostępne pojazdy STR_VEHICLE_LIST_AVAILABLE_SHIPS :Dostępne statki STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Dostępne samoloty STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Zobacz listę pojazdów dostępnych dla tego typu transportu STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Zarządzaj listą STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Wyślij instrukcje wszystkim pojazdom na tej liście STR_VEHICLE_LIST_REPLACE_VEHICLES :Zastąp pojazdy STR_VEHICLE_LIST_SEND_FOR_SERVICING :Wyślij do serwisu STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Wyślij do zajezdni STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Wyślij do zajezdni STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Wyślij do stoczni STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Wyślij do hangaru STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Kliknij, aby zatrzymać wszystkie pojazdy z listy STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Kliknij, aby wystartować wszystkie pojazdy z listy STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Polecenia współdziel{P 0 i ą i} {COMMA} pojazd{P "" y ów} # Group window STR_GROUP_ALL_TRAINS :Wszystkie pociągi STR_GROUP_ALL_ROAD_VEHICLES :Wszystkie samochody STR_GROUP_ALL_SHIPS :Wszystkie statki STR_GROUP_ALL_AIRCRAFTS :Wszystkie samoloty STR_GROUP_DEFAULT_TRAINS :Pociągi bez grupy STR_GROUP_DEFAULT_ROAD_VEHICLES :Samochody bez grupy STR_GROUP_DEFAULT_SHIPS :Statki bez grupy STR_GROUP_DEFAULT_AIRCRAFTS :Samoloty bez grupy STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupy - Kliknij na grupie aby wyświetlić wszystkie pojazdy z grupy STR_GROUP_CREATE_TOOLTIP :{BLACK}Kliknij aby stworzyć grupę STR_GROUP_DELETE_TOOLTIP :{BLACK}Usuń zaznaczoną grupę STR_GROUP_RENAME_TOOLTIP :{BLACK}Zmień nazwę zaznaczonej grupy STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Kliknij, aby ochronić tę grupę przed globalną zamianą pojazdów STR_GROUP_ADD_SHARED_VEHICLE :Dodaj poj. współdzielące STR_GROUP_REMOVE_ALL_VEHICLES :Usuń wszystkie pojazdy STR_GROUP_RENAME_CAPTION :{BLACK}Zmień nazwę grupy # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nowe pociągi STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nowe elektryczne pojazdy szynowe STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nowe pociągi jednoszynowe STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nowe pociągi Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nowe Pojazdy Szynowe STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nowy pojazd drogowy STR_BUY_VEHICLE_SHIP_CAPTION :Nowe statki STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nowy samolot STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Koszt: {GOLD}{CURRENCY_LONG}{BLACK} Masa: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Prędkość: {GOLD}{VELOCITY}{BLACK} Moc: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Prędkość: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Prędkość na oceanie: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Prędkość na kanale/rzece: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Koszt utrzymania: {GOLD}{CURRENCY_LONG}/rok STR_PURCHASE_INFO_CAPACITY :{BLACK}Ładowność: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(przebudowywalny) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Zaprojektowany: {GOLD}{NUM}{BLACK} Żywotność: {GOLD}{COMMA} lat STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maksymalna niezawodność: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Koszt: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Masa: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Koszt: {GOLD}{CURRENCY_LONG}{BLACK} Prędkość: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Ładowność: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Moc: {GOLD}+{POWER}{BLACK} Masa: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Można przystosować do: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :wszystkie typy ładunków STR_PURCHASE_INFO_ALL_BUT :wszystko oprócz {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. siła pociągowa: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Zasięg: {GOLD}{COMMA} pól STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista wyboru pociągów - kliknij na pojeździe, aby uzyskać informacje STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista wyboru pojazdów drogowych - kliknij na pojeździe, aby uzyskać więcej informacji STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista wyboru statków - kliknij na statku, aby uzyskać informacje STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista wyboru samolotów - kliknij na samolocie, aby uzyskać informacje STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kup pociąg STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kup pojazd drogowy STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kup statek STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kup samolot STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony pociąg. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony pojazd drogowy. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony statek. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kup zaznaczony samolot. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Zmień nazwę STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Zmień nazwę STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Zmień nazwę STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Zmień nazwę STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Zmiana nazwy typu pociągu STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu samochodu STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu statku STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Zmień nazwę typu samolotu STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Zmiana nazwy typu pociągu STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Zmień nazwę typu samochodu STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Zmień nazwę typu statku STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Zmień nazwę typu samolotu # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Zmiana nazwy zajezdni STR_DEPOT_RENAME_DEPOT_CAPTION :Zmień nazwę zajezdni STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} pojazd{P "" y ów}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Pociągi - przeciągnij pojazd/wagon przytrzymując lewy klawisz myszy aby go dodać/usunąć ze składu pociągu, prawy-klik na pociągu aby uzyskać informacje, przytrzymując ctrl dla podanych akcji stosuje zmiany do całego składu pociągu STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Pojazdy - prawy-klik na pojeździe po więcej informacji STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Statki - prawy-kliknij aby uzyskać informacje o statku STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Samolot - prawy-klik na samolocie aby uzyskać informacje STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj pociąg aby go sprzedać STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj samochód aby go sprzedać STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj statek aby go sprzedać STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj samolot aby go sprzedać STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Przeciągnij tutaj lokomotywę by sprzedać cały pociąg STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sprzedaj wszystkie pociągi z zajezdni STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sprzedaj wszystkie samochody z zajezdni STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Sprzedaj wszystkie statki ze stoczni STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Sprzedaj wszystkie samoloty z hangaru STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Zamień wszystkie pociągi w zajezdni STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Zamień wszystkie samochody w zajezdni STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Zamień wszystkie statki w stoczni STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Zamień wszystkie samoloty w hangarze STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nowe pojazdy STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nowe pojazdy STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nowe statki STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nowy samolot STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kup nowy pociąg STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Kup nowy pojazd drogowy STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Kup nowy statek STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Kup nowy samolot STR_DEPOT_CLONE_TRAIN :{BLACK}Klonuj pociąg STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonuj pojazd STR_DEPOT_CLONE_SHIP :{BLACK}Klonuj statek STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonuj samolot STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Spowoduje zakup kopii pociągu wraz ze wszystkimi wagonami. Kliknij na przycisk a następnie na pociąg wewnątrz lub na zewnątrz zajezdni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Spowoduje zakup kopii pojazdu drogowego. Kliknij na przycisk a następnie na pojazd wewnątrz lub na zewnątrz zajezdni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Spowoduje zakup kopii statku. Kliknij na przycisk a następnie na statek wewnątrz lub na zewnątrz stoczni. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Spowoduje zakup kopii samolotu. Kliknij na przycisk a następnie na samolot wewnątrz lub na zewnątrz hangaru. Ctrl+klik spowoduje współdzielenie poleceń. Shift+Click pokazuje szacunkowy koszt bez dokonania zakupu STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji zajezdni. Ctrl+klik otwiera nowy podgląd na pozycji zajezdni STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centruj główne okno na pozycji zajezdni samochodowej. Ctrl+klik otwiera nowy podgląd na pozycję zajezdni samochodowej STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji stoczni. Ctrl+klik otwiera nowy podgląd na pozycję stoczni STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji hangaru. Ctrl+klik otwiera nowy podgląd na pozycję hangaru STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Pokaż listę wszystkich pociągów z tą zajezdnia w swoich poleceniach STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Pokaż listę wszystkich samochodów z tą zajezdnia w swoich poleceniach STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Pokaż listę wszystkich statków z tą stocznia w swoich poleceniach STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Pokaż listę wszystkich samolotów z hangarem na tym lotnisku w swoich poleceniach STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie pociągi w zajezdni STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie samochody w zajezdni STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie statki w stoczni STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kliknij aby zatrzymać wszystkie samoloty w hangarze STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie pociągi w zajezdni STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie samochody w zajezdni STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie statki w stoczni STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Kliknij aby wystartować wszystkie samoloty w hangarze STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Sprzedasz wszystkie pojazdy z zajezdni. Jesteś pewien? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Wiadomość od producenta pojazdów STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Właśnie zaprojektowaliśmy now{G y ą e} {STRING.b} - czy jesteś zainteresowany w rocznej wyłączności na użycie tego pojazdu, żebyśmy mogli zobaczyć przed wypuszczeniem na rynek jak się sprawuje? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}lokomotywa STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.b :{G=f}lokomotywę STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}pojazd STR_ENGINE_PREVIEW_ROAD_VEHICLE.b :{G=m}samochód STR_ENGINE_PREVIEW_AIRCRAFT :{G=m}samolot STR_ENGINE_PREVIEW_AIRCRAFT.b :{G=m}samolot STR_ENGINE_PREVIEW_SHIP :{G=m}statek STR_ENGINE_PREVIEW_SHIP.b :{G=m}statek STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}lokomotywa jednoszynowa STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.b :{G=f}lokomotywę jednoszynową STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}lokomotywa Maglev STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.b :{G=f}lokomotywę Maglev STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Koszt: {CURRENCY_LONG} Masa: {WEIGHT_SHORT}{}Prędkość: {VELOCITY} Moc: {POWER}{}Koszt utrzymania: {CURRENCY_LONG}/rok{}Ładowność: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Koszt: {CURRENCY_LONG} Masa: {WEIGHT_SHORT}{}Prędkość: {VELOCITY} Moc: {POWER} Maksymalna siła pociągowa: {6:FORCE}{}Koszt utrzymania: {4:CURRENCY_LONG}/rok{}Ładowność: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY}{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY} Zasięg: {COMMA} pól{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY} Zasięg: {COMMA} pól{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zastąp {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Pociąg STR_REPLACE_VEHICLE_ROAD_VEHICLE :Samochód STR_REPLACE_VEHICLE_SHIP :Statek STR_REPLACE_VEHICLE_AIRCRAFT :Samolot STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wybierz typ pojazdu do zamiany STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wybierz typ pojazdu jakim chcesz zastąpić pojazd zaznaczony po lewej stronie STR_REPLACE_VEHICLES_START :{BLACK}Rozpocznij zastępowanie STR_REPLACE_VEHICLES_NOW :Zastąp wszystkie pojazdy teraz STR_REPLACE_VEHICLES_WHEN_OLD :Zastąp tylko stare pojazdy STR_REPLACE_HELP_START_BUTTON :{BLACK}Naciśnij jeśli chcesz zastąpić pojazd zaznaczony po lewej stronie wybranym pojazdem po prawej stronie STR_REPLACE_NOT_REPLACING :{BLACK}Nie zastępowane STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Brak zaznaczonych pojazdów STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} kiedy stary STR_REPLACE_VEHICLES_STOP :{BLACK}Zatrzymaj zastępowanie STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Wciśnij ten przycisk jeśli nie chcesz zmieniać pojazdu zaznaczone po lewej stronie STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Zastępowanie: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Przejdź pomiędzy oknami zamiany lokomotyw i wagonów STR_REPLACE_ENGINES :Lokomotywy STR_REPLACE_WAGONS :Wagony STR_REPLACE_HELP_RAILTYPE :{BLACK}Wybierz dla jakiego typu torów chcesz zastąpić lokomotywy STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Wyświetla typ pojazdu na jaki będzie zastąpiony pojazd zaznaczony po lewej stronie STR_REPLACE_RAIL_VEHICLES :Kolej STR_REPLACE_ELRAIL_VEHICLES :Kolej elektryczna STR_REPLACE_MONORAIL_VEHICLES :Kolej jednoszynowa STR_REPLACE_MAGLEV_VEHICLES :Kolej Maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Usunięcie wagonów: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Autowymiana zachowuje długość pociągu poprzez usuwanie wagonów (począwszy od początku), jeśli wymiana lokomotywy spowoduje wydłużenie pociągu # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji pociągu. Ctrl+klik by podążać za pociągiem w głównym oknie STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centruj główne okno na pozycji pojazdu. Ctrl+klik by podążać za pojazdem w głównym oknie STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji statku. Ctrl+klik by podążać za statkiem w głównym oknie STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centruj główny widok na pozycji samolotu. Ctrl+klik by podążać za samolotem w głównym oknie STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij pociąg do zajezdni STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij pojazd do zajezdni STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij statek do stoczni STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Wyślij samolot do hangaru STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Spowoduje zakup kopii pociągu wraz ze wszystkimi wagonami. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik tylko pokazuje szacowany koszt STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Spowoduje zakup kopii pojazdu drogowego. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik tylko pokazuje szacowany koszt STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Spowoduje zakup kopii statku. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik tylko pokazuje szacunkowy koszt STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Spowoduje zakup kopii samolotu. Ctrl+klik spowoduje współdzielenie poleceń. Shift+klik pokazuje tylko szacowany koszt STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Wymuszony start pociągu bez czekania na sygnał STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Przebudowa pociągu do przewozu innego typu ładunku STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Przebudowa samochodu do przewozu innego typu ładunku STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Przebudowa statku do przewozu innego typu ładunku STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Przebudowa samolotu do przewozu innego typu ładunku STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Odwróć kierunek jazdy pociągu STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Zmuś pojazd do zawrócenia STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Pokaż polecenia pociągu. Ctrl+klik pokazuje rozkład jazdy pociągu STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Pokaż polecenia pojazdu. Ctrl+klik pokazuje rozkład jazdy pojazdu STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Pokaż polecenia statku. Ctrl+klik pokazuje harmonogram rejsów statku. STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Pokaż polecenia samolotu. Ctrl+klik pokazuje harmonogram lotów samolotu. STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż szczegóły pociągu STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż detale samochodu STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż szczegóły statku STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Pokaż szczegóły samolotu STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Obecny stan pociągu - kliknij aby zatrzymać/ruszyć pociąg. Ctrl+klik by przejść do punktu docelowego STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Obecny stan pojazdu - kliknij aby zatrzymać/ruszyć pojazd. Ctrl+klik by przejść do punktu docelowego STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Obecny stan statku - kliknij aby zatrzymać/ruszyć statek. Ctrl+klik by przejść do punktu docelowego STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Obecny stan samolotu - kliknij aby zatrzymać/ruszyć samolot. Ctrl+klik by przejść do punktu docelowego # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Załadunek / Wyładunek STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Opuszcza STR_VEHICLE_STATUS_CRASHED :{RED}Wypadek! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Zepsuty STR_VEHICLE_STATUS_STOPPED :{RED}Zatrzymany STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Hamowanie, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Brak zasilania STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Czeka na wolną drogę STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Zbyt daleko do następnego celu STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Zmierza do {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Bez poleceń, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Zmierza do {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Zmierza do {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Serwisuj w {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Zatrzymany STR_VEHICLE_COMMAND_STOPPED :{RED}Zatrzymany STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Uruchomiono STR_VEHICLE_COMMAND_STARTED :{GREEN}Uruchomiono # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Szczegóły) STR_VEHICLE_NAME_BUTTON :{BLACK}Nazwa STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Zmień nazwę pociągu STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Zmień nazwę samochodu STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Zmień nazwę statku STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Zmień nazwę samolotu STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Wiek: {LTBLUE}{STRING}{BLACK} Koszt utrzymania: {LTBLUE}{CURRENCY_LONG}/rok # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} {P rok lata lat} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P rok lata lat} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Prędkość maksymalna: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Prędkość maksymalna: {LTBLUE}{VELOCITY} {BLACK}Zasięg: {LTBLUE}{COMMA} pól STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Masa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moc: {LTBLUE}{POWER}{BLACK} Prędkość maksymalna: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Masa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moc: {LTBLUE}{POWER}{BLACK} Prędkość maksymalna: {LTBLUE}{VELOCITY} {BLACK}Maksymalna siła pociągowa: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Zysk w tym roku: {LTBLUE}{CURRENCY_LONG} (w zeszłym roku: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Niezawodność: {LTBLUE}{COMMA}% {BLACK}Awarie od ostatniego serwisowania: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Zakupiony: {LTBLUE}{NUM}{BLACK} Wartość: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Ładowność: {LTBLUE}żadna{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Ładowność: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Ładowność: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ładowność: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Wartość ładunku: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}dni{BLACK} Ostatni serwis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Okres między serwisami: {LTBLUE}{COMMA}%{BLACK} Ostatni serwis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Zwiększ okres między serwisowaniami o 10. Ctrl+klik zwiększa okres między serwisowaniami o 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Zmniejsz okres między serwisowaniami o 10. Ctrl+klik zmniejsza okres między serwisowaniami o 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Zmień typ interwału serwisowania STR_VEHICLE_DETAILS_DEFAULT :Domyślne STR_VEHICLE_DETAILS_DAYS :Dni STR_VEHICLE_DETAILS_PERCENT :Procent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nazwa pociągu STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nazwa samochodu STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nazwa statku STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nazwa samolotu # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Budowa: {LTBLUE}{NUM}{BLACK} Wartość: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Wartość: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Całkowita ładowność tego pociągu: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Pusty STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} z {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} z {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Ładunek STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Pokaż szczegóły przewożonych ładunków STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informacje STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Pokaż szczegóły pociągu STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Ładowność STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Pokaż ładowność każdego wagonu STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Całkowita ładowność STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Pokaż całkowitą ładowność pociągu, według typu ładunku STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Ładowność: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Przebudowa) STR_REFIT_TITLE :{GOLD}Wybierz typ ładunku do przewozu: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nowa ładowność: {GOLD}{CARGO_LONG}{}{BLACK}Koszt przebudowy: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nowa pojemność: {GOLD}{CARGO_LONG}{}{BLACK}Przychód z przebudowy: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nowa ładowność: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Koszt przebudowy: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nowa pojemność: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Przychód z przebudowy: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Wybierz pojazdy do przebudowania. Przeciągając myszkę można wybierać więcej pojazdów. Klikając na puste pole zaznaczysz cały pojazd. Ctrl+klik zaznaczy pojazd i dołączony skład STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Wybierz jaki ładunek ma przewozić pociąg STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wybierz ładunek jaki ma przewozić ten samochód STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Wybierz jaki ładunek ma przewozić statek STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Wybierz jaki ładunek ma przenosić samolot STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Przebudowa pociągu STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Przebudowa samochodu STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Przebudowa statku STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Przebudowa samolotu STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Przebuduj pociąg do przewozu zaznaczonego typu ładunku STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Przebuduj samochód do przewozu zaznaczonego typu ładunku STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Przebuduj statek do przewozu zaznaczonego typu ładunku STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Przebuduj samolot do przewozu zaznaczonego typu ładunku # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Polecenia) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Rozkład STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Otwórz widok rozkładu jazdy STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista poleceń - kliknij na poleceniu, aby zaznaczyć. Ctrl+kliknięcie przenosi do stacji docelowej STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Koniec poleceń - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Koniec współdzielonych poleceń - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Non-stop STR_ORDER_GO_TO :Idź do STR_ORDER_GO_NON_STOP_TO :Idź bez przerwy do STR_ORDER_GO_VIA :Idź przez STR_ORDER_GO_NON_STOP_VIA :Idź bez przerwy przez STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Zmień sposób przejazdu w podświetlonym poleceniu STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Pełny załadunek któregoś z towarów STR_ORDER_DROP_LOAD_IF_POSSIBLE :Załaduj jeśli dostępne STR_ORDER_DROP_FULL_LOAD_ALL :Pełny załadunek wszystkiego STR_ORDER_DROP_FULL_LOAD_ANY :Pełny załadunek któregoś z towarów STR_ORDER_DROP_NO_LOADING :Nie ładować STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Zmień sposób załadunku w podświetlonym poleceniu STR_ORDER_TOGGLE_UNLOAD :{BLACK}Rozładuj i załaduj STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Wyładuj jeśli akceptowane STR_ORDER_DROP_UNLOAD :Rozładuj i załaduj STR_ORDER_DROP_TRANSFER :Przeładunek STR_ORDER_DROP_NO_UNLOADING :Nie rozładowuj STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Zmień sposób wyładunku w podświetlonym poleceniu STR_ORDER_REFIT :{BLACK}Przebudowa STR_ORDER_REFIT_TOOLTIP :{BLACK}Wybierz typ ładunku do przebudowy. Ctrl+klik usuwa polecenie STR_ORDER_REFIT_AUTO :{BLACK}Automatyczna przebudowa STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Wybierz typ ładunku do automatycznej przebudowy. Ctrl+klik usuwa polecenie. Automatyczna przebudowa zostanie wykonana jedynie, jeśli dany pojazd na to pozwala STR_ORDER_DROP_REFIT_AUTO :Ustalony ładunek STR_ORDER_DROP_REFIT_AUTO_ANY :Dostępny ładunek STR_ORDER_SERVICE :{BLACK}Serwis STR_ORDER_DROP_GO_ALWAYS_DEPOT :Zawsze do STR_ORDER_DROP_SERVICE_DEPOT :Serwisuj jeśli trzeba STR_ORDER_DROP_HALT_DEPOT :Zatrzymaj STR_ORDER_SERVICE_TOOLTIP :{BLACK}Pomiń to polecenie jesli serwis nie jest wymagany STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dane pojazdu wykorzystane w warunku # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Procent załadowania STR_ORDER_CONDITIONAL_RELIABILITY :Niezawodność STR_ORDER_CONDITIONAL_MAX_SPEED :Prędkość maksymalna STR_ORDER_CONDITIONAL_AGE :Wiek (w latach) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Wymaga serwisowania STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Zawsze STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Pozostały czas życia (w latach) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Jak porównać dane pojazdu z zadaną wartością STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :jest równy STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :różny od STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :mniejszy niż STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :mniejszy lub równy STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :większy niż STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :większy lub równy STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :prawda STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :fałsz STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Wartość do porównania z danymi pojazdu STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Podaj wartość do porównania STR_ORDERS_SKIP_BUTTON :{BLACK}Pomiń STR_ORDERS_SKIP_TOOLTIP :{BLACK}Pomiń obecne polecenie i rozpocznij kolejne. Ctrl+klik pomija aż do zaznaczonego polecenia STR_ORDERS_DELETE_BUTTON :{BLACK}Usuń STR_ORDERS_DELETE_TOOLTIP :{BLACK}Usuń podświetlone polecenie STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Usuń wszystkie polecenia STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Przestań dzielić STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Przestań dzielić listę poleceń. Ctrl+Klik dodatkowo usuwa wszystkie polecenia tego pojazdu STR_ORDERS_GO_TO_BUTTON :{BLACK}Idź do STR_ORDER_GO_TO_NEAREST_DEPOT :Idź do najbliższej zajezdni STR_ORDER_GO_TO_NEAREST_HANGAR :Leć do najbliższego hangaru STR_ORDER_CONDITIONAL :Warunkowy skok poleceń STR_ORDER_SHARE :Współdzielenie poleceń STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Wstaw nowe polecenie na końcu listy lub przed zaznaczonym poleceniem. Ctrl ustawia polecenia stacji na 'pełny załadunek dowolnego towaru', polecenia pkt. orientacyjnych na 'bez zatrzymywania się', a polecenia zajezdni na 'serwisuj'. 'Współdzielenie poleceń' lub Ctrl pozwala na dzielenie poleceń z wybranym pojazdem. Kliknięcie pojazdu kopiuje jego polecenia. Polecenie zajezdni wyłącza automatyczne serwisowanie pojazdu STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Pokaż wszystkie pojazdy współdzielące te polecenia # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Idź przez {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Idź bez zatrzymywania przez {WAYPOINT} STR_ORDER_SERVICE_AT :Serwisuj w STR_ORDER_SERVICE_NON_STOP_AT :Serwisuj non-stop w STR_ORDER_NEAREST_DEPOT :najbliższy STR_ORDER_NEAREST_HANGAR :najbliższy hangar STR_ORDER_TRAIN_DEPOT :Zajezdni kolejowej STR_ORDER_ROAD_VEHICLE_DEPOT :Zajezdni samochodowej STR_ORDER_SHIP_DEPOT :Doku STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Przebuduj na {STRING.b}) STR_ORDER_REFIT_STOP_ORDER :(Przebuduj na {STRING.b} i zatrzymaj) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Sugerujący) STR_ORDER_FULL_LOAD :(Pełny załadunek) STR_ORDER_FULL_LOAD_ANY :(Pełny załadunek dowolnego towaru) STR_ORDER_NO_LOAD :(Nie ładować) STR_ORDER_UNLOAD :(Rozładuj i zabierz ładunek) STR_ORDER_UNLOAD_FULL_LOAD :(Rozładuj i czekaj na pełny załadunek) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Rozładuj i czekaj na pełny załadunek któregoś z towarów) STR_ORDER_UNLOAD_NO_LOAD :(Rozładuj i pozostaw pusty) STR_ORDER_TRANSFER :(Przeładuj i zabierz ładunek) STR_ORDER_TRANSFER_FULL_LOAD :(Przeładuj i czekaj na pełny załadunek) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Przeładuj i czekaj na pełny załadunek któregoś z towarów) STR_ORDER_TRANSFER_NO_LOAD :(Przeładuj i pozostaw pusty) STR_ORDER_NO_UNLOAD :(Nie rozładowuj i zabierz ładunek) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Nie rozładowuj i czekaj na pełny załadunek) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Nie rozładowuj i czekaj na pełny załadunek któregoś z towarów) STR_ORDER_NO_UNLOAD_NO_LOAD :(Nie rozładowuj i nie ładuj) STR_ORDER_AUTO_REFIT :(Przebuduj na {STRING.b}) STR_ORDER_FULL_LOAD_REFIT :(Przebuduj na {STRING.b} i czekaj na pełny załadunek) STR_ORDER_FULL_LOAD_ANY_REFIT :(Przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) STR_ORDER_UNLOAD_REFIT :(Rozładuj, przebuduj na {STRING.b} i zabierz ładunek) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Rozładuj, przebuduj na {STRING.b} i czekaj na pełny załadunek) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Rozładuj, przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) STR_ORDER_TRANSFER_REFIT :(Przeładuj, przebuduj na {STRING.b} i zabierz ładunek) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Przeładuj, przebuduj na {STRING.b} i czekaj na pełny załadunek) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Przeładuj, przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) STR_ORDER_NO_UNLOAD_REFIT :(Nie rozładowuj, przebuduj na {STRING.b} i zabierz ładunek) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nie rozładowuj, przebuduj na {STRING.b} i czekaj na pełny załadunek) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nie rozładowuj, przebuduj na {STRING.b} i czekaj na dowolny pełny załadunek) STR_ORDER_AUTO_REFIT_ANY :dostępny ładunek STR_ORDER_STOP_LOCATION_NEAR_END :[bliższy koniec] STR_ORDER_STOP_LOCATION_MIDDLE :[środek] STR_ORDER_STOP_LOCATION_FAR_END :[dalszy koniec] STR_ORDER_OUT_OF_RANGE :{RED} (Kolejny punkt docelowy jest poza zasięgiem) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Skocz do rozkazu {COMMA} STR_ORDER_CONDITIONAL_NUM :Skocz do rozkazu {COMMA} kiedy {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Skocz do rozkazu {COMMA} kiedy {STRING} {STRING} STR_INVALID_ORDER :{RED} (Błędne polecenie) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Rozkład jazdy) STR_TIMETABLE_ORDER_VIEW :{BLACK}Rozkazy STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Przełącz do okna poleceń STR_TIMETABLE_TOOLTIP :{BLACK}Rozkład jazdy - kliknij na poleceniu aby je zaznaczyć STR_TIMETABLE_NO_TRAVEL :Nie podróżuje STR_TIMETABLE_NOT_TIMETABLEABLE :Podróż (automatycznie; zaplanowana przez następny ręczny rozkaz) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Przejazd (bez ustalonego czasu) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Podróżuj z maksymalną prędkością {2:VELOCITY} (poza rozkładem) STR_TIMETABLE_TRAVEL_FOR :Przejazd przez {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Podróżuj przez {STRING} z maksymalną prędkością {VELOCITY} STR_TIMETABLE_STAY_FOR :i zostań tam przez {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :i podróżuje przez{STRING} STR_TIMETABLE_DAYS :{COMMA} d{P zień ni ni} STR_TIMETABLE_TICKS :{COMMA} tick{P "" i ów} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ten rozkład jazdy zajmie {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ten rozkład jazdy zajmie przynajmniej {STRING} (nie wszystkie stacje są na rozkładzie) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ten pojazd podróżuje teraz zgodnie z rozkładem jazdy STR_TIMETABLE_STATUS_LATE :{BLACK}Ten pojazd jest teraz spóźniony o {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Ten pojazd spieszy się teraz o {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ten rozkład jazdy jeszcze się nie rozpoczął STR_TIMETABLE_STATUS_START_AT :{BLACK}Ten rozkład jazdy rozpocznie się {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Data początkowa STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Wybierz datę początkową tego rozkładu jazdy STR_TIMETABLE_CHANGE_TIME :{BLACK}Zmień czas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Zmień ilość czasu którą zaznaczone zadanie powinno zająć STR_TIMETABLE_CLEAR_TIME :{BLACK}Usuń czas STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Usuń ilość czasu przeznaczoną na zaznaczone zadanie STR_TIMETABLE_CHANGE_SPEED :{BLACK}Zmień limit prędkości STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Zmień maksymalną prędkość podróży w zaznaczonym poleceniu STR_TIMETABLE_CLEAR_SPEED :{BLACK}Wyczyść limit prędkości STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Wyczyść maksymalną prędkość podróży w zaznaczonym poleceniu STR_TIMETABLE_RESET_LATENESS :{BLACK}Wyzeruj spóźnienia STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Wyzeruj licznik spóźnienia, aby pojazd podróżował zgodnie z rozkładem jazdy STR_TIMETABLE_AUTOFILL :{BLACK}Automat. wypełnienie STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Wypełnij automatycznie rozkład jazdy wartościami z następnego przejazdu (Ctrl+klik, aby spróbować utrzymać czasy oczekiwania) STR_TIMETABLE_EXPECTED :{BLACK}Wymagany STR_TIMETABLE_SCHEDULED :{BLACK}Zaplanowany STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Przełącz między spodziewanymi i zaplanowanymi STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Ustaw datę STR_DATE_SET_DATE :{BLACK}Ustaw datę STR_DATE_SET_DATE_TOOLTIP :{BLACK}Użyj wybranej daty jako datę rozpoczęcia rozkładu jazdy STR_DATE_DAY_TOOLTIP :{BLACK}Wybierz dzień STR_DATE_MONTH_TOOLTIP :{BLACK}Wybierz miesiąc STR_DATE_YEAR_TOOLTIP :{BLACK}Wybierz rok # AI debug window STR_AI_DEBUG :{WHITE}Debugowanie SI / Game Script STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nazwa skryptu STR_AI_DEBUG_SETTINGS :{BLACK}Ustawienia STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Zmień ustawienia skryptu STR_AI_DEBUG_RELOAD :{BLACK}Przeładuj SI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Zabij SI, przeładuj skrypt i zrestartuj SI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Włącz/wyłącz przerwanie, kiedy wiadomość SI zgadza się z wiadomością przerywającą STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Zatrzymaj gdy: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Zatrzymaj gdy STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Kiedy wiadomość SI zgadza się, gra zostaje wstrzymana STR_AI_DEBUG_MATCH_CASE :{BLACK}Uwzględnij wielkość STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Przełącz uwzględnianie wielkości liter przy porównywaniu wyrazu przerywającego STR_AI_DEBUG_CONTINUE :{BLACK}Kontynuuj STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Odpauzowanie i kontynuuowanie SI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Pokaż okno debugowania tej SI STR_AI_GAME_SCRIPT :{BLACK}Game Script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sprawdź log Game Script STR_ERROR_AI_NO_AI_FOUND :Nie znaleziono SI do wczytania.{}SI jest nieaktywne i nic nie robi.{}Możesz ściągnąć SI z 'Dodatki Online' w głównym menu gry STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Jeden z uruchomionych skryptów przestał działać. Prosimy o zgłoszenie tego autorowi skryptu dołączając zrzut ekranu okna debugowania SI / GameScript STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno debugowania SI / Game Script jest dostępne tylko na serwerze # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Konfiguracja SI / Game Script STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Game Script, który zostanie załadowany dla następnej gry STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}SI, które zostaną załadowane podczas kolejnej gry STR_AI_CONFIG_HUMAN_PLAYER :Ludzki gracz STR_AI_CONFIG_RANDOM_AI :Losowe SI STR_AI_CONFIG_NONE :(brak) STR_AI_CONFIG_MOVE_UP :{BLACK}Przesuń w górę STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Przesuń wybraną SI w górę listy STR_AI_CONFIG_MOVE_DOWN :{BLACK}Przesuń w dół STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Przesuń wybraną SI w dół listy STR_AI_CONFIG_GAMESCRIPT :{SILVER}Game Script STR_AI_CONFIG_AI :{SILVER}SI STR_AI_CONFIG_CHANGE :{BLACK}Wybierz {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :SI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Game Script STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Wczytaj kolejny skrypt STR_AI_CONFIG_CONFIGURE :{BLACK}Konfiguruj STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfiguruj parametry skryptu # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Dostępny {STRING} STR_AI_LIST_CAPTION_AI :Gracze SI STR_AI_LIST_CAPTION_GAMESCRIPT :Game Script'y STR_AI_LIST_TOOLTIP :{BLACK}Kliknij, aby wybrać skrypt STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Wersja: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}Adres: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Zaakceptuj STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Wybierz zaznaczony skrypt STR_AI_LIST_CANCEL :{BLACK}Anuluj STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nie zmieniaj skryptu # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametry STR_AI_SETTINGS_CAPTION_AI :SI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Zamknij STR_AI_SETTINGS_RESET :{BLACK}Resetuj STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Liczba dni, które odczekuje SI przed aktywacją po uruchomieniu poprzedniego (zwiększ lub zmniejsz): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}'CzytajTo' dla {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Zmiany w {STRING} dla {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Licencja dla {STRING} {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Odczytaj plik readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Lista zmian STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licencja # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Koszt: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Koszt: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Przychód: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Przychód: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transfer: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Szacowany koszt: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Szacowany przychód: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Zapisywanie trwa,{}proszę zaczekać do zakończenia! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Błąd autozapisu STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nie można odczytać napędu STR_ERROR_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nie można usunąć pliku STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Błąd wewnętrzny: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Zepsuta zapisana gra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Zapisana gra zrobiona w nowszej wersji STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Plik nie jest odczytywalny STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Plik nie jest zapisywalny STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Sprawdzenie integralności danych nie powiodło się STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Gra została zapisana w wersji nie obsługującej tramwajów. Wszystkie tramwaje zostały usunięte # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generowanie mapy anulowane...{}... brak odpowiednich miejsc dla miast STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... nie ma żadnego miasta w scenariuszu STR_ERROR_PNGMAP :{WHITE}Nie można wczytać krajobrazu z PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... nie znaleziono pliku STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... nie można konwertować typu obrazu. Wymagany 8- lub 24-bitowy PNG STR_ERROR_PNGMAP_MISC :{WHITE}... coś poszło nie tak (prawdopodobnie zepsuty plik) STR_ERROR_BMPMAP :{WHITE}Nie można wczytać krajobrazu z BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nie można skonwertować tego typu obrazu STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... obraz jest za duży STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Ostrzeżenie o skali STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Nie zaleca się zbyt dużej zmiany wielkości mapy źródłowej. Kontynuować tworzenie? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Znaleziono tylko podstawowy schemat dźwiękowy. Jeśli chcesz mieć pełny dźwięk, zainstaluj inny schemat dźwiękowy używając menadżera pobierania # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ogromny zrzut ekranu STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Zrzut ekranu będzie miał rozdzielczość {COMMA} x {COMMA} pikseli. Zrzut ekranu może zająć chwilę. Kontynuować? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Zrzut ekranu zapisany na dysk z powodzeniem '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Błąd zrzutu ekranu! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Wiadomość STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Wiadomość od {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Poza krawędzią mapy STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Zbyt blisko krawędzi mapy STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Za mało pieniędzy - wymagane {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Wymagany płaski teren STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren pochylony w złym kierunku STR_ERROR_CAN_T_DO_THIS :{WHITE}Nie można tego zrobić... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Należy najpierw zburzyć budynek STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nie można wyczyścić terenu... STR_ERROR_SITE_UNSUITABLE :{WHITE}... niewłaściwa parcela STR_ERROR_ALREADY_BUILT :{WHITE}... już zbudowano STR_ERROR_OWNED_BY :{WHITE}... w posiadaniu {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... teren jest własnością innej firmy STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... osiągnięto limit terraformowania STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... osiągnięto limit czyszczenia pól STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... wykorzystano limit sadzenia drzew STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nazwa nie może się powtarzać STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} na drodze STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Niedozwolone w trakcie pauzy # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Lokalne władze miasta {TOWN} nie pozwalają na to STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Lokalne władze miasta {TOWN} nie pozwalają na budowę kolejnego lotniska w tym mieście STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} lokalne władzę odmawiają zgody na lotnisko ze względu na poziom hałasu STR_ERROR_BRIBE_FAILED :{WHITE}Twoja próba przekupstwa została wykryta przez okolicznych śledczych # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Nie można tutaj podnieść lądu... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Nie można tutaj obniżyć lądu... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Nie można tutaj wyrównać terenu... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Wykop zniszczyłby tunel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... już na poziomie morza STR_ERROR_TOO_HIGH :{WHITE}... zbyt wysoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... już wyrównany # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nie można zmienić nazwy firmy... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Nie można zmienić nazwiska prezesa... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maksymalna dozwolona pożyczka wynosi {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Nie można pożyczyć więcej pieniędzy... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... pożyczka już jest spłacona STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} wymagane STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nie można zwrócić pożyczki... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nie możesz wydać pieniędzy, które są pożyczone z banku... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nie można kupić firmy... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nie można zbudować siedziby firmy... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nie można kupić 25% udziałów w tej firmie... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Nie można sprzedać 25% udziałów tej firmy... STR_ERROR_PROTECTED :{WHITE}Ta firma jeszcze nie sprzedaje akcji... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nie można wybudować miasta STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nie można zmienić nazwy miasta... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Nie można tutaj zbudować miasta... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Nie można rozszerzyć miasta... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... zbyt blisko krawędzi mapy STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... zbyt blisko innego miasta STR_ERROR_TOO_MANY_TOWNS :{WHITE}... zbyt wiele miast STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nie ma więcej miejsca na mapie STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Miasto nie będzie budować dróg. Możesz zezwolić na budowę dróg poprzez Ustawienia zaawansowane->Ekonomia->Miasta STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trwają roboty drogowe STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nie można usunąć tego miasta...{}Stacja lub zajezdnia przynależy do tego miasta lub obszar miasta nie może być usunięty STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... w centrum tego miasta nie ma odpowiedniego miejsca na pomnik # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... zbyt wiele przedsiębiorstw STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nie można stworzyć przedsiębiorstw... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Nie można tutaj wybudować: {STRING}... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nie można tutaj wybudować tego przedsiębiorstwa... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... zbyt blisko innego przedsiębiorstwa STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... należy najpierw wybudować miasto STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... dozwolone jedno na miasto STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... można zbudować jedynie w miastach o populacji przynajmniej 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... może być wybudowane tylko w lasach deszczowych STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... może być wybudowane tylko na pustyni STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... można wybudować tylko w mieście (zastępując domy) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... można wybudować tylko w pobliżu centrum miast STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... może być budowane tylko na niskich terenach STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... może być usytuowane tylko blisko krawędzi mapy STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... las może być posadzony tylko powyżej linii śniegu STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... można zbudować tylko powyżej linii śniegu STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... można zbudować tylko poniżej linii śniegu # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nie można tutaj wybudować stacji... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nie można zbudować przystanku... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nie można zbudować stacji ciężarówek... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nie można zbudować przystanku tramwajowego... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nie można zbudować tramwajowej stacji załadunkowej... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Nie można tutaj wybudować portu... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nie można tutaj wybudować lotniska... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Przylega do więcej niż jednej stacji STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stacja zbyt rozległa STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Za duzo stacji STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Za dużo części stacji kolejowej STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Zbyt wiele przystanków autobusowych STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Zbyt wiele stacji załadunku ciężarówek STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Zbyt blisko innej stacji/strefy załadunku STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Zbyt blisko innego portu STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Zbyt blisko innego lotniska STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nie można zmienić nazwy stacji... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ta droga należy do miasta STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... droga jest zorientowana w złym kierunku STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... przystanki przelotowe nie mogą mieć zakrętów STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... przystanki przelotowe nie mogą mieć skrzyżowań # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nie można usunąć części stacji... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Należy najpierw usunąć stację kolejową STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nie można usunąć przystanku... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nie można usunąć stacji załadunkowej... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nie można usunąć przystanku tramwajowego... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nie można usunąć tramwajowej stacji załadunkowej... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Należy najpierw usunąć przystanek STR_ERROR_THERE_IS_NO_STATION :{WHITE}...brak stacji STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Należy najpierw usunąć stację kolejową STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Należy najpierw usunąć przystanek autobusowy STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Należy najpierw usunąć stację załadunku ciężarówek STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Najpierw musisz zniszczyć przystanek tramwajowy STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Najpierw musisz zniszczyć tramwajową stację załadunkową STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Należy najpierw usunąć port STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Należy najpierw usunąć lotnisko # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Przylega do więcej niż jednego istniejącego pkt. orientacyjnego STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Zbyt blisko innego pkt. orientacyjnego STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Nie można budować tutaj punktu orientacyjnego... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Nie można tutaj ustawić boi... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nie można zmienić nazwy pkt. orientacyjnego... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nie można usunąć stąd kolejowego punktu orientacyjnego... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Musisz usunąć najpierw punkt nawigacyjny STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boja na drodze STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boja w użyciu przez inna firmę! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nie można tutaj wybudować zajezdni... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Nie można tutaj zbudować zajezdni... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nie można tutaj wybudować stoczni... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nie można zmienić nazwy zajezdni... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w zajezdni STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w zajezdni samochodowej STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musi być zatrzymany w stoczni STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... musi być zatrzymany w hangarze STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Pociąg może być modyfikowany tylko gdy jest zatrzymany w zajezdni STR_ERROR_TRAIN_TOO_LONG :{WHITE}Pociąg jest zbyt długi STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Nie można zawrócić pociągu... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... składa się z wielu jednostek STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Niezgodne typy torów STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Nie można ruszyć pojazdem... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Tylna lokomotywa zawsze porusza się razem z przednią STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Nie można znaleźć drogi do zajezdni. STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nie można znaleźć zajezdni STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Zły typ zajezdni # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} jest za długi po wymianie STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Brak reguł autozastępowania/odnawiania STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limit funduszy) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Niemożliwa kombinacja torów STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Należy najpierw usunąć sygnalizację STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nieodpowiednie tory/brak torów STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Należy najpierw usunąć tory STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Droga jest jednokierunkowa lub zablokowana STR_ERROR_CROSSING_DISALLOWED :{WHITE}Przejazd kolejowy nie dozwolony dla tego typu torów STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Nie można tutaj postawić sygnałów... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Nie można tutaj ułożyć torów... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nie można stąd usunąć torów... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Nie można stąd usunąć sygnałów... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Nie można tutaj zmienić sygnałów... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... brak torów kolejowych STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... brak sygnałów STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Nie można zmienić typu torów w tym miejscu... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Należy najpierw usunąć drogę STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... drogi jednokierunkowe nie mogą mieć skrzyżowań STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Nie można tutaj zbudować drogi... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Nie można tutaj zbudować torowiska... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nie można usunąć drogi z tego miejsca... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nie można usunąć torowiska z tego miejsca... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...brak drogi STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...brak torowiska tramwajowego # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Nie można tutaj zbudować kanału... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Nie można tutaj zbudować śluzy... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Nie można tutaj umieścić rzeki... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... musi być wybudowane na wodzie STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nie można zbudować na wodzie STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nie można zbudować na otwartym morzu STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nie można zbudować na kanale STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nie można budować na rzece STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Należy najpierw usunąć kanał STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Nie można zbudować tutaj akweduktu... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... drzewo już tu jest STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... niewłaściwy teren pod drzewo STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Nie można posadzić drzewa... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Nie można tutaj wybudować mostu... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Należy najpierw usunąć most STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nie można zaczynać i kończyć w tym samym miejscu STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Początki mostu nie są na tej samej wysokości STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most jest za nisko dla tego terenu STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Początek i koniec muszą być w jednej linii STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... końce mostu muszą znajdować się na lądzie STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... za długi most STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Koniec mostu poza mapą # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nie można tutaj wybudować tunelu... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Nieodpowiednie miejsce na wejście tunelu STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Należy najpierw usunąć tunel STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Inny tunel na drodze STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Koniec tunelu poza mapą STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nie można wydrążyć drugiego końca tunelu STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunel jest za długi # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... zbyt wiele obiektów STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Nie można zbudować obiektu... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Obiekt na drodze STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... siedziba firmy na drodze STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Nie można nabyć tego terenu... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... to już jest Twoje! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nie można stworzyć grupy... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nie można usunąć tej grupy... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nie można zmienić nazwy grupy... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nie można usunąć wszystkich pojazdów z tej grupy... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nie można dodać pojazdu do tej grupy... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nie można dodać pojazdów współdzielących polecenia do grupy... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Pociąg na drodze STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Samochód na drodze STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Statek na drodze STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Samolot na drodze STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Nie można przebudować pociągu... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nie można przebudować samochodu... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nie można przebudować statku... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nie można przebudować samolotu... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Nie można zmienić nazwy pociągu... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nie można zmienić nazwy samochodu... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nie można zmienić nazwy statku... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nie można zmienić nazwy samolotu... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Nie można zatrzymać/ruszyć pociagu... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nie można zatrzymać/ruszyć samochodu... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nie można zatrzymać/ruszyć statku... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nie można zatrzymać/ruszyć samolotu... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nie można wysłać pociągu do zajezdni... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nie można wysłać samochodu do zajezdni... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nie można wysłać statku do stoczni... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nie można wysłać samolotu do hangaru... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Nie można kupić pociągu... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Nie można kupić pojazdu drogowego... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Nie można kupić statku... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Nie można kupić samolotu... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Nie można zmienić nazwy typu pociągu... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nie można zmienić nazwy typu samochodu... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Nie można zmienić nazwy typu statku... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Nie można zmienić nazwy typu samolotu... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Nie można sprzedać lokomotywy... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nie można sprzedać samochodu... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Nie można sprzedać statku... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Nie można sprzedać samolotu... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Pojazd jest niedostępny STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Pojazd jest niedostępny STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Statek jest niedostępny STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Samolot jest niedostępny STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Za dużo pojazdów w grze STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nie można zmienić okresu między serwisowaniami... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... pojazd jest zniszczony STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Żadne pojazdy nie będą dostępne STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmień konfigurację swoich NewGRF-ów STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Obecnie żaden pojazd nie jest dostępny STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Zacznij grę po {DATE_SHORT} albo użyj zestawu NewGRF, który zawiera wczesne pojazdy # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nie można przepuścić pociągu za sygnał, niebezpieczeństwo... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nie można odwrócić kierunku jazdy pociągu... STR_ERROR_TRAIN_START_NO_POWER :Pociąg nie ma mocy STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Nie można zawrócić pojazdu... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Samolot jest w locie # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Brak miejsca na polecenia STR_ERROR_TOO_MANY_ORDERS :{WHITE}Zbyt wiele poleceń STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Nie można wstawić nowego polecenia... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Nie można usunąć tego polecenia... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nie można zmodyfikować tego polecenia... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Nie można przenieść tego polecenia... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nie można pominąć obecnego polecenia... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Nie można przejść do wybranego polecenia... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... pojazd nie może jechać do wszystkich stacji STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... pojazd nie może jechać do tej stacji STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... pojazd dzielący ten rozkaz nie może jechać do tej stacji STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nie można współdzielić listy poleceń... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nie można zaprzestać współdzielenia listy poleceń... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Nie można skopiować listy poleceń... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... zbyt daleko od poprzedniego celu STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... samolot nie ma wystarczającego zasięgu # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nie można wyznaczyć rozkładu jazdy pojazdu... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Pojazdy mogą czekać tylko na stacjach STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ten pojazd nie zatrzymuje się na tej stacji. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... zbyt wiele napisów STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Nie można umieścić tutaj napisu... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Nie można zmienić nazwy napisu... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nie można usunąć napisu... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Gra symulacyjna oparta na Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German). STR_BASEGRAPHICS_WIN_DESCRIPTION :Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows. STR_BASESOUNDS_NONE_DESCRIPTION :Zestaw dźwięków nie zawierający żadnych dźwięków. STR_BASEMUSIC_WIN_DESCRIPTION :Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows. STR_BASEMUSIC_NONE_DESCRIPTION :Zestaw utworów muzycznych nie zawierający żadnej muzyki. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Wysoki biurowiec STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Biurowiec STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Mały blok mieszkalny STR_TOWN_BUILDING_NAME_CHURCH_1 :Kościół STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Duży biurowiec STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Domki miejskie STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Pomnik STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontanna STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Biurowiec STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Sklepy i biura STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Nowoczesny biurowiec STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Magazyny STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Biurowiec STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Stare domy STR_TOWN_BUILDING_NAME_COTTAGES_1 :Domki STR_TOWN_BUILDING_NAME_HOUSES_1 :Domy STR_TOWN_BUILDING_NAME_FLATS_1 :Mieszkania STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Wysoki biurowiec STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Sklepy i biura STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Sklepy i biura STR_TOWN_BUILDING_NAME_THEATER_1 :Teatr STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Biura STR_TOWN_BUILDING_NAME_HOUSES_2 :Domy STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Centrum handlowe STR_TOWN_BUILDING_NAME_IGLOO_1 :Igloo STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipi STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Dom-czajniczek STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Świnka-skarbonka ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=f}Kopalnia węgla STR_INDUSTRY_NAME_COAL_MINE.d :{G=f}kopalni węgla STR_INDUSTRY_NAME_POWER_STATION :{G=f}Elektrownia STR_INDUSTRY_NAME_POWER_STATION.d :{G=f}elektrowni STR_INDUSTRY_NAME_SAWMILL :{G=m}Tartak STR_INDUSTRY_NAME_SAWMILL.d :{G=m}tartaku STR_INDUSTRY_NAME_FOREST :{G=m}Las STR_INDUSTRY_NAME_FOREST.d :{G=m}lasu STR_INDUSTRY_NAME_OIL_REFINERY :{G=f}Rafineria STR_INDUSTRY_NAME_OIL_REFINERY.d :{G=f}rafinerii STR_INDUSTRY_NAME_OIL_RIG :{G=f}Platforma wiertnicza STR_INDUSTRY_NAME_OIL_RIG.d :{G=f}platformy wiertniczej STR_INDUSTRY_NAME_FACTORY :{G=f}Fabryka STR_INDUSTRY_NAME_FACTORY.d :{G=f}fabryki STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Drukarnia STR_INDUSTRY_NAME_PRINTING_WORKS.d :{G=f}drukarni STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Huta STR_INDUSTRY_NAME_STEEL_MILL.d :{G=f}huty STR_INDUSTRY_NAME_FARM :{G=f}Farma STR_INDUSTRY_NAME_FARM.d :{G=f}farmy STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=f}Kopalnia rudy miedzi STR_INDUSTRY_NAME_COPPER_ORE_MINE.d :{G=f}kopalni rudy miedzi STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Pole naftowe STR_INDUSTRY_NAME_OIL_WELLS.d :{G=m}pola naftowego STR_INDUSTRY_NAME_BANK :{G=m}Bank STR_INDUSTRY_NAME_BANK.d :{G=m}banku STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Przetwórnia żywności STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.d :{G=f}przetwórni żywności STR_INDUSTRY_NAME_PAPER_MILL :{G=m}Zakład papierniczy STR_INDUSTRY_NAME_PAPER_MILL.d :{G=m}zakładu papierniczego STR_INDUSTRY_NAME_GOLD_MINE :{G=f}Kopalnia złota STR_INDUSTRY_NAME_GOLD_MINE.d :{G=f}kopalni złota STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}Bank STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.d :{G=m}banku STR_INDUSTRY_NAME_DIAMOND_MINE :{G=f}Kopalnia diamentów STR_INDUSTRY_NAME_DIAMOND_MINE.d :{G=f}kopalni diamentów STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=f}Kopalnia rudy żelaza STR_INDUSTRY_NAME_IRON_ORE_MINE.d :{G=f}kopalni rudy żelaza STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Plantacja owoców STR_INDUSTRY_NAME_FRUIT_PLANTATION.d :{G=f}plantacji owoców STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Plantacja kauczuku STR_INDUSTRY_NAME_RUBBER_PLANTATION.d :{G=f}plantacji kauczuku STR_INDUSTRY_NAME_WATER_SUPPLY :{G=n}Ujęcie wody STR_INDUSTRY_NAME_WATER_SUPPLY.d :{G=n}ujęcia wody STR_INDUSTRY_NAME_WATER_TOWER :{G=f}Wieża ciśnień STR_INDUSTRY_NAME_WATER_TOWER.d :{G=f}wieży ciśnień STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Fabryka STR_INDUSTRY_NAME_FACTORY_2.d :{G=f}fabryki STR_INDUSTRY_NAME_FARM_2 :{G=f}Farma STR_INDUSTRY_NAME_FARM_2.d :{G=f}farmy STR_INDUSTRY_NAME_LUMBER_MILL :{G=m}Tartak STR_INDUSTRY_NAME_LUMBER_MILL.d :{G=m}tartaku STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Las waty cukrowej STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.d :{G=m}lasu waty cukrowej STR_INDUSTRY_NAME_CANDY_FACTORY :{G=m}Zakład cukierniczy STR_INDUSTRY_NAME_CANDY_FACTORY.d :{G=m}zakładu cukierniczego STR_INDUSTRY_NAME_BATTERY_FARM :{G=f}Farma baterii STR_INDUSTRY_NAME_BATTERY_FARM.d :{G=f}farmy baterii STR_INDUSTRY_NAME_COLA_WELLS :{G=f}Studnia coli STR_INDUSTRY_NAME_COLA_WELLS.d :{G=f}studni coli STR_INDUSTRY_NAME_TOY_SHOP :{G=m}Sklep z zabawkami STR_INDUSTRY_NAME_TOY_SHOP.d :{G=m}sklepu z zabawkami STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Fabryka zabawek STR_INDUSTRY_NAME_TOY_FACTORY.d :{G=f}fabryki zabawek STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=f}Fontanny plastiku STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.d :{G=f}fontann plastiku STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Fabryka napojów gazowanych STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.d :{G=f}fabryki napojów gazowanych STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Generator bąbelków STR_INDUSTRY_NAME_BUBBLE_GENERATOR.d :{G=m}generatora bąbelków STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=f}Odkrywka toffi STR_INDUSTRY_NAME_TOFFEE_QUARRY.d :{G=f}odkrywkę toffi STR_INDUSTRY_NAME_SUGAR_MINE :{G=f}Kopalnia cukru STR_INDUSTRY_NAME_SUGAR_MINE.d :{G=f}kopalni cukru ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Bez nazwy STR_SV_TRAIN_NAME :Pociąg {COMMA} STR_SV_ROAD_VEHICLE_NAME :Samochód {COMMA} STR_SV_SHIP_NAME :Statek {COMMA} STR_SV_AIRCRAFT_NAME :Samolot {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Północ STR_SV_STNAME_SOUTH :{STRING} Południe STR_SV_STNAME_EAST :{STRING} Wschód STR_SV_STNAME_WEST :{STRING} Zachód STR_SV_STNAME_CENTRAL :{STRING} Główny STR_SV_STNAME_TRANSFER :{STRING} Transfer STR_SV_STNAME_HALT :Przedmieścia {STRING} STR_SV_STNAME_VALLEY :{STRING} Dolina STR_SV_STNAME_HEIGHTS :{STRING} Wzgórza STR_SV_STNAME_WOODS :{STRING} Las STR_SV_STNAME_LAKESIDE :{STRING} Jezioro STR_SV_STNAME_EXCHANGE :{STRING} Wymiana STR_SV_STNAME_AIRPORT :Lotnisko {STRING} STR_SV_STNAME_OILFIELD :Platforma Wiertnicza {STRING} STR_SV_STNAME_MINES :{STRING} Kopalnia STR_SV_STNAME_DOCKS :{STRING} Port STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Pawilon STR_SV_STNAME_SIDINGS :{STRING} Bocznica STR_SV_STNAME_BRANCH :{STRING} Rozjazd STR_SV_STNAME_UPPER :{STRING} Górny STR_SV_STNAME_LOWER :{STRING} Dolny STR_SV_STNAME_HELIPORT :{STRING} Lądowisko STR_SV_STNAME_FOREST :{STRING} Las STR_SV_STNAME_FALLBACK :{STRING} Stacja nr {NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Parowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Parowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Parowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Parowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Parowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Wagon pasażerski STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Wagon pocztowy STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Wagon na węgiel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Cysterna na ropę STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Wagon na żywiec STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Wagon towarowy STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Wagon na ziarno STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Wagon na drewno STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Wagon na rudę żelaza STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Wagon na stal STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Wagon opancerzony STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Wagon na żywność STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Wagon na papier STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Wagon na rudę miedzi STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Cysterna na wodę STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Wagon na owoce STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Wagon na kauczuk STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Wagon na cukier STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Wagon na watę cukrową STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Wagon na toffi STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Wagon na bąbelki STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cysterna na colę STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Wagon na cukierki STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Wagon na zabawki STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Wagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Wagon na napoje gazowane STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Wagon na plastik STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Wagon pasażerski STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Wagon pocztowy STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Wagon na węgiel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Cysterna na ropę STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Wagon na żywiec STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Wagon towarowy STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Wagon na ziarno STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Wagon na drewno STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Wagon na rudę żelaza STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Wagon na stal STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Wagon opancerzony STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Wagon na żywność STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Wagon na papier STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Wagon na rudę miedzi STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cysterna na wodę STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Wagon na owoce STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Wagon na kauczuk STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Wagon na cukier STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Wagon na watę cukrową STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Wagon na toffi STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Wagon na bąbelki STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cysterna na colę STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Wagon na cukierki STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Wagon na zabawki STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Wagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Wagon na napoje gazowane STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Wagon na plastik STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektrowóz) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Wagon pasażerski STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Wagon pocztowy STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Wagon na węgiel STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Cysterna na ropę STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Wagon na żywiec STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Wagon towarowy STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Wagon na ziarno STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Wagon na drewno STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Wagon na rudę żelaza STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Wagon na stal STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Wagon opancerzony STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Wagon na żywność STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Wagon na papier STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Wagon na rudę miedzi STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cysterna na wodę STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Wagon na owoce STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Wagon na kauczuk STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Wagon na cukier STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Wagon na watę cukrową STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Wagon na toffi STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Wagon na bąbelki STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cysterna na colę STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Wagon na cukierki STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Wagon na zabawki STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Wagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Wagon na napoje gazowane STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Wagon na plastik STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Autobus MPS Regal STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Autobus Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Autobus Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Autobus Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Autobus Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Autobus Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Ciężarówka na węgiel Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Ciężarówka na węgiel Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Ciężarówka na węgiel DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Ciężarówka pocztowa MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Ciężarówka pocztowa Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Ciężarówka pocztowa Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Ciężarówka pocztowa MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Ciężarówka pocztowa Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Ciężarówka pocztowa Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Cysterna Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Cysterna Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Cysterna Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Ciężarówka na żywiec Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Ciężarówka na żywiec Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Ciężarówka na żywiec Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Ciężarówka towarowa Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Ciężarówka towarowa Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Ciężarówka towarowa Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Ciężarówka na ziarno Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Ciężarówka na ziarno Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Ciężarówka na ziarno Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Ciężarówka na drewno Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Ciężarówka na drewno Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Ciężarówka na drewno Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Ciężarówka na rudę żelaza MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Ciężarówka na rudę żelaza Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Ciężarówka na rudę żelaza Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Ciężarówka na stal Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Ciężarówka na stal Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Ciężarówka na stal Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Ciężarówka opancerzona Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Ciężarówka opancerzona Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Ciężarówka opancerzona Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Ciężarówka na żywność Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Ciężarówka na żywność Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Ciężarówka na żywność Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Ciężarówka na papier Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Ciężarówka na papier Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Ciężarówka na papier MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Ciężarówka na rudę miedzi MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Ciężarówka na rudę miedzi Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Ciężarówka na rudę miedzi Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Cysterna na wodę Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Cysterna na wodę Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Cysterna na wodę MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Ciężarówka na owoce Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Ciężarówka na owoce Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Ciężarówka na owoce Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Ciężarówka na kauczuk Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Ciężarówka na kauczuk Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Ciężarówka na kauczuk RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Ciężarówka na cukier MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Ciężarówka na cukier Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Ciężarówka na cukier Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Cysterna na colę MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Cysterna na colę Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Cysterna na colę Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Ciężarówka na watę cukrową MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Ciężarówka na watę cukrową Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Ciężarówka na watę cukrową Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Ciężarówka na toffi MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Ciężarówka na toffi Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Ciężarówka na toffi Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Ciężarówka na zabawki MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Ciężarówka na zabawki Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Ciężarówka na zabawki Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Ciężarówka na cukierki MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Ciężarówka na cukierki Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Ciężarówka na cukierki Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Ciężarówka na baterie MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Ciężarówka na baterie Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Ciężarówka na baterie Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Cysterna na napoje gazowane MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Cysterna na napoje gazowane Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Cysterna na napoje gazowane Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Ciężarówka na plastik MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Ciężarówka na plastik Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Ciężarówka na plastik Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Ciężarówka na bąbelki MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Ciężarówka na bąbelki Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Ciężarówka na bąbelki Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Tankowiec MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Tankowiec CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Liniowiec MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Liniowiec FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Wodolot Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Liniowiec Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Liniowiec Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Drobnicowiec Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Drobnicowiec Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Drobnicowiec MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Drobnicowiec Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Helikopter Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Helikopter Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikopter Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Boja STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boja #{COMMA} STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) STR_FORMAT_GROUP_NAME :Grupa {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Pkt. orientacyjny {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Pkt. orientacyjny {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Zajezdnia w {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Zajezdnia w {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Zajezdnia samochodowa w {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Zajezdnia samochodowa w {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Stocznia w {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Stocznia w {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :Hangar {STATION} STR_UNKNOWN_STATION :Nieznana stacja STR_DEFAULT_SIGN_NAME :Napis STR_COMPANY_SOMEONE :ktoś STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Obserwator, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/arabic_egypt.txt0000644000000000000000000140453712246102561016610 0ustar rootroot##name Arabic (Egypt) ##ownname Arabic (Egypt) ##isocode ar_EG ##plural 1 ##textdir rtl ##digitsep ٬ ##digitsepcur ٬ ##decimalsep ٫ ##winlangid 0x0c01 ##grflangid 0x14 # $Id: arabic_egypt.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :وصلة غير معرفة STR_JUST_NOTHING :فارغ # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :ركاب STR_CARGO_PLURAL_COAL :فحم STR_CARGO_PLURAL_MAIL :بريد STR_CARGO_PLURAL_OIL :نفط STR_CARGO_PLURAL_LIVESTOCK :مواشي STR_CARGO_PLURAL_GOODS :بضائع STR_CARGO_PLURAL_GRAIN :حبوب STR_CARGO_PLURAL_WOOD :خشب STR_CARGO_PLURAL_IRON_ORE :خام حديد STR_CARGO_PLURAL_STEEL :حديد STR_CARGO_PLURAL_VALUABLES :مدخرات STR_CARGO_PLURAL_COPPER_ORE :منجم نحاس STR_CARGO_PLURAL_MAIZE :ذرة STR_CARGO_PLURAL_FRUIT :فواكة STR_CARGO_PLURAL_DIAMONDS :جواهر STR_CARGO_PLURAL_FOOD :طعام STR_CARGO_PLURAL_PAPER :ورق STR_CARGO_PLURAL_GOLD :ذهب STR_CARGO_PLURAL_WATER :ماء STR_CARGO_PLURAL_WHEAT :قمح STR_CARGO_PLURAL_RUBBER :مطاط STR_CARGO_PLURAL_SUGAR :سكر STR_CARGO_PLURAL_TOYS :العاب STR_CARGO_PLURAL_CANDY :حلويات STR_CARGO_PLURAL_COLA :كولا STR_CARGO_PLURAL_COTTON_CANDY :الحلاوة القطنية STR_CARGO_PLURAL_BUBBLES :فقاعات STR_CARGO_PLURAL_TOFFEE :توفي STR_CARGO_PLURAL_BATTERIES :بطاريات STR_CARGO_PLURAL_PLASTIC :بلاستيك STR_CARGO_PLURAL_FIZZY_DRINKS :شراب مخفوق # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :ركاب STR_CARGO_SINGULAR_COAL :فحم STR_CARGO_SINGULAR_MAIL :بريد STR_CARGO_SINGULAR_OIL :نفط STR_CARGO_SINGULAR_LIVESTOCK :ماشية STR_CARGO_SINGULAR_GOODS :بضائع STR_CARGO_SINGULAR_GRAIN :حبوب STR_CARGO_SINGULAR_WOOD :خشب STR_CARGO_SINGULAR_IRON_ORE :خام الحديد STR_CARGO_SINGULAR_STEEL :حديد STR_CARGO_SINGULAR_VALUABLES :مقتنيات ثمينة STR_CARGO_SINGULAR_COPPER_ORE :خام نحاس STR_CARGO_SINGULAR_MAIZE :ذرة STR_CARGO_SINGULAR_FRUIT :فواكة STR_CARGO_SINGULAR_DIAMOND :جواهر STR_CARGO_SINGULAR_FOOD :طعام STR_CARGO_SINGULAR_PAPER :اوراق STR_CARGO_SINGULAR_GOLD :ذهب STR_CARGO_SINGULAR_WATER :ماء STR_CARGO_SINGULAR_WHEAT :قمح STR_CARGO_SINGULAR_RUBBER :مطاط STR_CARGO_SINGULAR_SUGAR :سكر STR_CARGO_SINGULAR_TOY :لعبة STR_CARGO_SINGULAR_CANDY :حلويات STR_CARGO_SINGULAR_COLA :كولا STR_CARGO_SINGULAR_COTTON_CANDY :حلاوة قطنية STR_CARGO_SINGULAR_BUBBLE :فقاعات STR_CARGO_SINGULAR_TOFFEE :توفي STR_CARGO_SINGULAR_BATTERY :بطاريات STR_CARGO_SINGULAR_PLASTIC :بلاستيك STR_CARGO_SINGULAR_FIZZY_DRINK :مشروب مخفوق # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA}راكب STR_QUANTITY_COAL :{WEIGHT_LONG} من الفحم STR_QUANTITY_MAIL :{COMMA} صندوق من البريد STR_QUANTITY_OIL :{VOLUME_LONG} من النفط STR_QUANTITY_LIVESTOCK :{COMMA}راس من الماشية STR_QUANTITY_GOODS :{COMMA} قفص من البضائع STR_QUANTITY_GRAIN :{WEIGHT_LONG} من الحبوب STR_QUANTITY_WOOD :{WEIGHT_LONG} من الخشب STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} من خام الحديد STR_QUANTITY_STEEL :{WEIGHT_LONG} من الحديد STR_QUANTITY_VALUABLES :{COMMA}صندوق من المقتنيات الثمينة STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} من خام النحاس STR_QUANTITY_MAIZE :{WEIGHT_LONG} من الذرة STR_QUANTITY_FRUIT :{WEIGHT_LONG} من الفواكة STR_QUANTITY_DIAMONDS :{COMMA}كيس من الجواهر STR_QUANTITY_FOOD :{WEIGHT_LONG} من الطعام STR_QUANTITY_PAPER :{WEIGHT_LONG} من الورق STR_QUANTITY_GOLD :{COMMA}كيس من الذهب STR_QUANTITY_WATER :{VOLUME_LONG} من المياة STR_QUANTITY_WHEAT :{WEIGHT_LONG} من القمح STR_QUANTITY_RUBBER :{VOLUME_LONG} من المطاط STR_QUANTITY_SUGAR :{WEIGHT_LONG} من السكر STR_QUANTITY_TOYS :{COMMA}الالعاب STR_QUANTITY_SWEETS :{COMMA} كيس من الحلويات STR_QUANTITY_COLA :{VOLUME_LONG} من الكولا STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} من الحلاوة القطنية STR_QUANTITY_BUBBLES :{COMMA}فقاعات STR_QUANTITY_TOFFEE :{WEIGHT_LONG} من التوفي STR_QUANTITY_BATTERIES :{COMMA}بطاريات STR_QUANTITY_PLASTIC :{VOLUME_LONG}من البلاستيك STR_QUANTITY_FIZZY_DRINKS :{COMMA}الشراب المخفوق STR_QUANTITY_N_A :غير متاح # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}راكب STR_ABBREV_COAL :{TINY_FONT}فحم STR_ABBREV_MAIL :{TINY_FONT}بريد STR_ABBREV_OIL :{TINY_FONT}نفط STR_ABBREV_LIVESTOCK :{TINY_FONT}ماشية STR_ABBREV_GOODS :{TINY_FONT}بضائع STR_ABBREV_GRAIN :{TINY_FONT}حبوب STR_ABBREV_WOOD :{TINY_FONT}خشب STR_ABBREV_IRON_ORE :{TINY_FONT}خام حديد STR_ABBREV_STEEL :{TINY_FONT}حديد STR_ABBREV_VALUABLES :{TINY_FONT}ممتلكات ثمينة STR_ABBREV_COPPER_ORE :{TINY_FONT}خام النحاس STR_ABBREV_MAIZE :{TINY_FONT}ذرة STR_ABBREV_FRUIT :{TINY_FONT}فواكة STR_ABBREV_DIAMONDS :{TINY_FONT}جواهر STR_ABBREV_FOOD :{TINY_FONT}طعام STR_ABBREV_PAPER :{TINY_FONT}ورق STR_ABBREV_GOLD :{TINY_FONT}ذهب STR_ABBREV_WATER :{TINY_FONT}ماء STR_ABBREV_WHEAT :{TINY_FONT}قمح STR_ABBREV_RUBBER :{TINY_FONT}مطاط STR_ABBREV_SUGAR :{TINY_FONT}سكر STR_ABBREV_TOYS :{TINY_FONT}العاب STR_ABBREV_SWEETS :{TINY_FONT}حلويات STR_ABBREV_COLA :{TINY_FONT}كولا STR_ABBREV_CANDYFLOSS :{TINY_FONT}سكر نبات STR_ABBREV_BUBBLES :{TINY_FONT}فقاعات STR_ABBREV_TOFFEE :{TINY_FONT}توفي STR_ABBREV_BATTERIES :{TINY_FONT}بطاريات STR_ABBREV_PLASTIC :{TINY_FONT}بلاستيك STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}شراب مخفوق STR_ABBREV_NONE :{TINY_FONT}لا شيء STR_ABBREV_ALL :{TINY_FONT}الكل # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} ركاب STR_BAGS :{COMMA} صناديق STR_TONS :{COMMA} اطنان/طن STR_LITERS :{COMMA} لتر STR_ITEMS :{COMMA} وحدة STR_CRATES :{COMMA} صناديق # Colours, do not shuffle STR_COLOUR_DARK_BLUE :ازرق غامق STR_COLOUR_PALE_GREEN :اخضر فاتح STR_COLOUR_PINK :وردي STR_COLOUR_YELLOW :اصفر STR_COLOUR_RED :احمر STR_COLOUR_LIGHT_BLUE :سماوي STR_COLOUR_GREEN :اخضر STR_COLOUR_DARK_GREEN :اخضر غامق STR_COLOUR_BLUE :ازرق STR_COLOUR_CREAM :كريمي STR_COLOUR_MAUVE :موف STR_COLOUR_PURPLE :زهري STR_COLOUR_ORANGE :برتقالي STR_COLOUR_BROWN :بني STR_COLOUR_GREY :رمادي STR_COLOUR_WHITE :ابيض # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA}ميل/س STR_UNITS_VELOCITY_METRIC :{COMMA}كم/س STR_UNITS_VELOCITY_SI :{COMMA}م/ث STR_UNITS_POWER_IMPERIAL :{COMMA}حصان STR_UNITS_POWER_METRIC :{COMMA}حصان STR_UNITS_POWER_SI :{COMMA}ك واط STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}طن STR_UNITS_WEIGHT_SHORT_SI :{COMMA}كجم STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} طن STR_UNITS_WEIGHT_LONG_SI :{COMMA}كجم STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}ل STR_UNITS_VOLUME_SHORT_SI :{COMMA}م3 STR_UNITS_VOLUME_LONG_METRIC :{COMMA} لتر STR_UNITS_VOLUME_LONG_SI :{COMMA}م3 STR_UNITS_FORCE_SI :{COMMA} كيلو نيوتن STR_UNITS_HEIGHT_IMPERIAL :{COMMA} قدم STR_UNITS_HEIGHT_SI :{COMMA} متر # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK} ادخل فلتر STR_LIST_FILTER_TOOLTIP :{BLACK} اختر كلمة اساسية لفلترة القائمة STR_TOOLTIP_SORT_ORDER :{BLACK} اختر طريقة الترتيب - تنازلي / تصاعدي STR_TOOLTIP_SORT_CRITERIA :{BLACK} اختر نوع الترتيب STR_TOOLTIP_FILTER_CRITERIA :{BLACK}حدد معايير المُرَشِح STR_BUTTON_SORT_BY :{BLACK} رتب بـ STR_BUTTON_LOCATION :{BLACK}الموقع STR_BUTTON_RENAME :{BLACK}اعادة تسمية STR_TOOLTIP_CLOSE_WINDOW :{BLACK}اغلاق الاطار STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}عنوان الاطار- اسحب لتحريك الاطار STR_TOOLTIP_SHADE :{BLACK}نافذة الظل - تعرض العنوان فقط STR_TOOLTIP_DEBUG :{BLACK}اظهر معلومات صائد اخطاء الاضافات الجديدة. STR_TOOLTIP_STICKY :{BLACK}خصص هذا الاطار بان يبقى مفتوح عند اغلاق كافة الاطارات STR_TOOLTIP_RESIZE :{BLACK}اضغط واسحب لتعديل حجم الاطار STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}تبديل حجم الاطار كبير / صغير STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}شريط العرض- فوق /تحت STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}عمود التحريك - يمين/يسار STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}هدم المباني و غيرها في مربع من الأرض. # Query window STR_BUTTON_DEFAULT :{BLACK}افتراضي STR_BUTTON_CANCEL :{BLACK}الغاء STR_BUTTON_OK :{BLACK}موافق # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :ذ1234567890-=ضصثقفغعهخحجدشسيبلاتنمكطئءؤرلاىةوزظ STR_OSK_KEYBOARD_LAYOUT_CAPS :ذ1234567890-=ضصثقفغعهخحجدشسيبلاتنمكطئءؤرلاىةوزظ # Measurement tooltip STR_MEASURE_LENGTH :{BLACK} الطول: {NUM} STR_MEASURE_AREA :{BLACK}المساحة: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}الطول: {NUM}{}فرق الارتفاع: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}المساحة: {NUM} x {NUM}{}فرق الارتفاع: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}عدد السكان STR_SORT_BY_CAPTION_NAME :{BLACK}اسم STR_SORT_BY_CAPTION_DATE :{BLACK}تاريخ # These are used in dropdowns STR_SORT_BY_NAME :الاسم STR_SORT_BY_PRODUCTION :إنتاج STR_SORT_BY_TYPE :نوع STR_SORT_BY_TRANSPORTED :الحمولة المنقولة STR_SORT_BY_NUMBER :رقم STR_SORT_BY_PROFIT_LAST_YEAR :دخل السنة الماضية STR_SORT_BY_PROFIT_THIS_YEAR :دخل هذه السنة STR_SORT_BY_AGE :عمر STR_SORT_BY_RELIABILITY :الصلاحية STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :مجموع السعة لكل نوع مشحون STR_SORT_BY_MAX_SPEED :السرعة القصوى STR_SORT_BY_MODEL :موديل STR_SORT_BY_VALUE :القيمة STR_SORT_BY_LENGTH :الطول STR_SORT_BY_LIFE_TIME :العمر المتبقي STR_SORT_BY_TIMETABLE_DELAY :تاخير جدولة الاوامر STR_SORT_BY_FACILITY :نوع المحطة STR_SORT_BY_WAITING :قيمة الشحنة المنتظرة STR_SORT_BY_RATING_MAX :اعلى نسبة شحن STR_SORT_BY_RATING_MIN :اقل نسبة شحن STR_SORT_BY_ENGINE_ID :نوع المحرك (قياسي( STR_SORT_BY_COST :التكلفة STR_SORT_BY_POWER :الطاقة STR_SORT_BY_TRACTIVE_EFFORT :قوة الجذب STR_SORT_BY_INTRO_DATE :بداية التشغيل STR_SORT_BY_RUNNING_COST :تكلفة التشغيل STR_SORT_BY_POWER_VS_RUNNING_COST :القوة/تكلفة التشغيل STR_SORT_BY_CARGO_CAPACITY :سعة الشحن STR_SORT_BY_RANGE :مدى # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}ايقاف اللعبة STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}سرع اللعبه STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}خيارات STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK} حفظ / اغلاق / خروج STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}عرض الخريطة, لقطات اضافية , العلامات STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}عرض دليل المدن STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}اظهار العروض STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}عرض قائمة محطات الشركة. STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}عرض السجل المالي للشركة STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}عرض معلومات الشركة STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}عرض المخططات STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}عرض جدول ترتيب الشركات STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}موّل انشاء مصنع / عرض كل المصانع STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}عرض قائمة قطارات الشركة. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}عرض قائمة عربات الشركة. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}عرض قائمة سفن الشركة. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}عرض قائمة طائرات الشركة. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}تكبير الصورة STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}تصغير الصورة STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ادوات بناء سكة حديد STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}ادوات بناء الطرق STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}ادوات السفن STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}بناء مطارات STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}افتح مدير تحرير التضاريس لرفع / خفض الارض, زراعة الاشجار, الخ. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}عرض اطار الصوت/الموسيقى STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}اظهار الرسالة الأخيرة/التقرير الأخير, خيارات الرسائل STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}معلومات مناطق الخريطة STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}بدل صف الادوات # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}حفظ, فتح, خروج من محرر الخرائط STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}النسخة المفتوحة STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}محرر الخريطة STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}العودة بتاريخ البدأ سنة واحدة STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}تقديم تاريخ البدأ سنة واحدة لالأمام STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}اضغط لادخال سنة البداية STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}عرض الخريطة, دليل المدن STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}بناء المسطحات الأرضية STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}بناء المدن STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}بناء المصانع STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}بناء الطرق STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}زراعة اشجار STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}وضع علامة STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}وضع جسم ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :حفظ الخريطة STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :فتح خريطة STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :حفظ خريطة مرتفعات مصورة STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :فتح خريطة مرتفعات STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :خروج من المحرر STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :انهاء ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :إعدادات اللعبه STR_SETTINGS_MENU_CONFIG_SETTINGS :اعدادات متقدمة STR_SETTINGS_MENU_SCRIPT_SETTINGS :الذكاء الصناعي/ اعدادات اللعبة STR_SETTINGS_MENU_NEWGRF_SETTINGS :إعدادات اﻹضافات STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :خيارات الشفافية STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :عرض اسماء المدن STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :عرض اسماء المحطات STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :عرض نقاط العبور STR_SETTINGS_MENU_SIGNS_DISPLAYED :عرض العلامات STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :عرض علامات و اسماء المنافسين STR_SETTINGS_MENU_FULL_ANIMATION :تأثيرات متحركة كاملة STR_SETTINGS_MENU_FULL_DETAIL :كل التفاصيل STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :مباني شفافة STR_SETTINGS_MENU_TRANSPARENT_SIGNS :اسماء المحطات شفافة ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :حفظ STR_FILE_MENU_LOAD_GAME :تحميل STR_FILE_MENU_QUIT_GAME :اغلاق اللعبة STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :خروج ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :خريطة العالم STR_MAP_MENU_EXTRA_VIEW_PORT :شاشة عرض اضافية STR_MAP_MENU_SIGN_LIST :قائمة العلامات ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :دليل المدن STR_TOWN_MENU_FOUND_TOWN :جد المدينة ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :العروض STR_SUBSIDIES_MENU_GOAL :الاهداف الحالية ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :مخطط التشغيل STR_GRAPH_MENU_INCOME_GRAPH :مخطط الارباح STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :مخطط البضاعة المشحونة STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :مخطط الأداء STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :مخطط قيمة الشركات STR_GRAPH_MENU_CARGO_PAYMENT_RATES :معدل تكلفة النقل ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :ترتيب الشركات STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :تقييم أداء مفصل ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :دليل المصانع STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :مول بناء مصنع ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :بناء سكة قطار حديدية STR_RAIL_MENU_ELRAIL_CONSTRUCTION :بناء سكة الحديد الكهربائية STR_RAIL_MENU_MONORAIL_CONSTRUCTION :بناء سكة قطار احادية STR_RAIL_MENU_MAGLEV_CONSTRUCTION :بناء سكة قطار ممغنطة ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :بناء الطرق STR_ROAD_MENU_TRAM_CONSTRUCTION :بناء الترام ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :بناء ممرات مائيه ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :بناء المطار ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :تصميم الخريطة STR_LANDSCAPING_MENU_PLANT_TREES :زراعة اشجار STR_LANDSCAPING_MENU_PLACE_SIGN :وضع علامات ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :الموسيقى/الصوت ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :الرسالة الأخيرة/التقرير الجديد STR_NEWS_MENU_MESSAGE_HISTORY_MENU :الرسائل السابقة ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :معلومات مربع في الخريطة STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :توقل كونسول STR_ABOUT_MENU_AI_DEBUG :مكتشف اخطاء الذكاء الصناعي STR_ABOUT_MENU_SCREENSHOT :صورة من الشاشة - Ctrl-S - STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :صورة للشاشة مصغرة STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :تقريب الشاشة القياسي STR_ABOUT_MENU_GIANT_SCREENSHOT :صورة كبيرة لكامل الخريطة -Ctrl-G - STR_ABOUT_MENU_ABOUT_OPENTTD :حول 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :موائم العفريتات STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :اضهار /اخفاء مربح الحوارات/الخيارات ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 STR_ORDINAL_NUMBER_4TH :4 STR_ORDINAL_NUMBER_5TH :5 STR_ORDINAL_NUMBER_6TH :6 STR_ORDINAL_NUMBER_7TH :7 STR_ORDINAL_NUMBER_8TH :8 STR_ORDINAL_NUMBER_9TH :9 STR_ORDINAL_NUMBER_10TH :10 STR_ORDINAL_NUMBER_11TH :11 STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 STR_ORDINAL_NUMBER_16TH :16 STR_ORDINAL_NUMBER_17TH :17 STR_ORDINAL_NUMBER_18TH :18 STR_ORDINAL_NUMBER_19TH :19 STR_ORDINAL_NUMBER_20TH :20 STR_ORDINAL_NUMBER_21ST :21 STR_ORDINAL_NUMBER_22ND :22 STR_ORDINAL_NUMBER_23RD :23 STR_ORDINAL_NUMBER_24TH :24 STR_ORDINAL_NUMBER_25TH :25 STR_ORDINAL_NUMBER_26TH :26 STR_ORDINAL_NUMBER_27TH :27 STR_ORDINAL_NUMBER_28TH :28 STR_ORDINAL_NUMBER_29TH :29 STR_ORDINAL_NUMBER_30TH :30 STR_ORDINAL_NUMBER_31ST :31 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :يناير STR_MONTH_ABBREV_FEB :فبراير STR_MONTH_ABBREV_MAR :مارس STR_MONTH_ABBREV_APR :ابريل STR_MONTH_ABBREV_MAY :مايو STR_MONTH_ABBREV_JUN :يونيو STR_MONTH_ABBREV_JUL :يوليو STR_MONTH_ABBREV_AUG :اغسطس STR_MONTH_ABBREV_SEP :سبتمبر STR_MONTH_ABBREV_OCT :اكتوبر STR_MONTH_ABBREV_NOV :نوفمبر STR_MONTH_ABBREV_DEC :ديسمبر STR_MONTH_JAN :يناير STR_MONTH_FEB :فبراير STR_MONTH_MAR :مارس STR_MONTH_APR :ابريل STR_MONTH_MAY :مايو STR_MONTH_JUN :يونيو STR_MONTH_JUL :يوليو STR_MONTH_AUG :اغسطس STR_MONTH_SEP :سبتمبر STR_MONTH_OCT :اكتوبر STR_MONTH_NOV :نوفمبر STR_MONTH_DEC :ديسمبر ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}مفتاح STR_GRAPH_KEY_TOOLTIP :{BLACK}اظهار مفتاح الرسم البياني STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}الرسم البياني لتشغيل STR_GRAPH_INCOME_CAPTION :{WHITE}الرسم البياني للدخل STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}عدد الوحدات المنقولة STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}تقييم الأداء العام للشركة ---- اقصى اداء = 1000 STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}قيمة الشركة STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}النسبة التنازلية لقيمة نقل البضائع STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}يوم في النقل STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}الدخل من نقل 10 وحدات (او 10,000 لتر) من البضاعة مسافة 20 مربع STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}فعل الكل STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}اوقف الكل STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}اعرض جميع انواع البضائع في جدول اسعار النقل. STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}لا تعرض البضائع في جدول اسعار النقل. STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}اظهار / اخفاء الشحن STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}عرض كامل تفاصيل الأداء # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}مفتاح الشركات في الرسم البياني STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}اضغط لعرض/اخفاء الشركة في الرسم # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}ترتيب الشركات STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :مهندس STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :مدير طرق STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :منظم نقل STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :مشرف على الطرق STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :مدير عام STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :الرئيس المنفذ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :كبير التجار STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :ملك STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :امبراطور # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}التقييم المفصل STR_PERFORMANCE_DETAIL_KEY :{BLACK}تفاصيل STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}عرض التفاصيل عن هذه الشركة ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}العربات: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}المحطات: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}المكسب الادنى: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}الدخل الأقل: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}الدخل الاعلى: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}نقلت: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}الشحن: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}السيولة المالية: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}الدين: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}المجموع: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}عدد العربات, وتشمل عربات الطريق,و القطارات,و السفن و الطائرات. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}كل انواع المحطات (محطة قطار, موقف باص, مطار, الخ) حتى لو كانت مرتبطة ببعضها كمحطة واحدة STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK} دخل المركبات ذات الدخل الادنى (لكل العربات اكثر من سنتين في الخدمة). STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}ادنى دخل تم تحقيقة في ربع واحد من الاثنى عشر ربعا الماضية STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}اعلى مكاسب تم تحقيقها في ربع واحد من الاثنى عشر ربعا الماضية STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}الوحدات التي نقلت الاثنى عشر شهرا الماضية STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}عدد انواع الشحن الي تم نقلها في الربع الأخير STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}السيولة المالية المتوفرة للشركة في البنك. STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}مقدار الدين الذي اخذته هذه الشركة STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}مجموع النقاط من المجموع الكلي الممكن # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}صندوق الموسيقى STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}الكل STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}النمط القديم STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}النمط الجديد STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}شارع از STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}معدل1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}معدل2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}مستوى الصوت STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}مؤثرات الصوت STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}منخفض STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}مرتفع STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}----- STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK} مسار STR_MUSIC_XTITLE :{TINY_FONT}{BLACK} عنوان STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK} عشوائي STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK} برنامج STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}تجاوز للمسار السابق STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}تجاوز للمسار التالي STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}ايقاف الموسيقى STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}ابدأ تشغيل الموسيقى STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}اسحب لضبط مستوى الصوت و المؤثرات STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}اختار " جميع المسارات" STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}اختار ،المسارات القديمة STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}اختار المسارات الحديثة STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}اختر'Ezy Street style music'برنامج STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}اختياري 1 STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}اختياري 2 STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}تشغيل / ايقاف العشوائي STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}اظهار اطار اختيار الموسيقى STR_ERROR_NO_SONGS :{WHITE}لا تحتوى قاعده الموسيقى المُختاره على اى اغانى. لن تُعزَف اى اغانى # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}برنامج اختيار الموسيقى STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}قائمة المعزوفات STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}برنامج - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}مسح STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}مسح البرنامج الاختياري الحالي STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}اضغط على المسار الموسيقي لإضافتة للقائمة STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}اضغط على المسار لازالته من القائمة # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}الشركات الكبرى التي وصلت لـ {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}ترتيب الشركات {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :رجل اعمال STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :مغامر STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :مديرالمصانع STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :عمدة التجارة STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :وزير التجارة و النقل STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :ملك التجارة و النقل STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :امبراطور القرن STR_HIGHSCORE_NAME :{PRESIDENT_NAME}. {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}حققت شركة {COMPANY} بجدارة'{STRING}' STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}حقق {PRESIDENT_NAME}مدير شركة {COMPANY} '{STRING}' بجدارة # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}الخريطة- {STRING} STR_SMALLMAP_TYPE_CONTOURS :يحتوي على STR_SMALLMAP_TYPE_VEHICLES :عربات STR_SMALLMAP_TYPE_INDUSTRIES :مصانع STR_SMALLMAP_TYPE_ROUTES :طرق STR_SMALLMAP_TYPE_VEGETATION :نبات STR_SMALLMAP_TYPE_OWNERS :ملاك STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}عرض التضاريس على الخريطة STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}عرض المركبات على الخريطة STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}عرض المصانع على الخريطة STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}عرض الطرق على الخريطة STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}عرض الشجر على الخريطة STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}عرض ملاك الاراضي على الخريطة STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}اضغط على مصنع لعرضة. اضغط + مفتاح كنترول لاخفاء جميع المصانع ماعدا المختارة. اضغط + كنترول لاظهار المصانع مجددا. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}اضغط على الشركة لعرض ممتلكاتها. اضغط + مفتاح كنترول لاخفاء كل الشركات ماعدا المختارة. اضغط + مفتاح كنترول لعرضها ثانية. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}شوارع STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK} سكة القطار STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}محطات / مطارات / موانئ STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}مباني / مصانع STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}عربات STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}قطارات STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}عربات STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}سفن STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}طائرات STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}طرق النقل STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK} غابة STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}محطة قطار STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}محطة بضائع لسيارات STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}محطة باصات STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}مطار STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}مرفء STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}هضاب STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}ارض عشبية STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}ارض جرداء STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}حقول STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}اشجار STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}صخور STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}مياة STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}غير مملوكة STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}مدن STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}مصانع STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}صحراء STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}ثلج STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}عرض/اخفاء اسماء المدن STR_SMALLMAP_CENTER :{BLACK}وسط الخريطة الصغيرة على الموقع الحالي STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}تعطيل الكل STR_SMALLMAP_ENABLE_ALL :{BLACK}تفعيل الكل STR_SMALLMAP_SHOW_HEIGHT :{BLACK}عرض الارتفاع STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}عدم عرض اي مصنع في الخريطة STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}عرض جميع المصانع في الخريطة STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}بدل عرض خريطة التضاريس STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}عدم عرض ممتلكات اي شركة على الخارطة STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}عرض جميع املاك الشركة على الخريطة # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}اظهر اخر رسالة / تقرير STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * متوقف * * STR_STATUSBAR_AUTOSAVE :{RED}حفظ تلقائي STR_STATUSBAR_SAVING_GAME :{RED}* * يتم حفظ اللعبة * * # News message history STR_MESSAGE_HISTORY :{WHITE}الرسائل السابقة STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}قائمة بآخر الاخبار STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}رسالة STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK} ... المواطنون يحتفلون{} اول قطار وصل في {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}يحتفل الأهالي ...{}بوصول اول باص للمحطة ...{STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}الأهالي يحتفلون ... {}بوصول اول عربة الى .. {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}المواطنون يحتفلون . . .{}بوصول اول عربة ركاب ترام الى {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}المواطنون يحتفلون . . . {}بوصول اول عربة ترام لمحطة {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}المواطنون يحتفلون ... {}بوصول اول سفينة الى {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}الأهالي يحتفلون . . . {}بوصول أول طائرة الى {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}تحطم قطاراً!{}{COMMA} مات فى الحريق بعد الحادث STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}العربة تحطمت !{}السائق توفي في شعلة الحريق بعد الاصطدام بقطار STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}العربة تحطمت !{}{COMMA} توفي في شعلة الحريق بعد الاصطدام بقطار STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}تحطم طائرة !{}{COMMA}ماتوا في الحريق بمطار {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}تحطم طائرة ! {}انتهى الوقود من الطائرة, {COMMA}توفي اثر الحادث ! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}حادثة منطاد في {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}تحطم عربة في حادث تصادم بجسم غامض ! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}تفجير محطة تكرير نفط قرب {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}تفجير مصنع في حادثة مريبة قرب {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}مركبة غير معروفة هبطت قرب {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}الخمود في منجم الفحم يتسبب في سلسلة انفجارات قرب {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}فيضانات !{}على الأقل {COMMA} مفقودين او في عداد الأموات بعد فيضانات عارمة ! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}الشركة في مأزق! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} سوف تباع قريبا او يعلن افلاسها ان لم يتحسن ادائها قريبا!! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}مدمج الشركات STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} بيعت لـ : {STRING} بقيمة: {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}افلاس! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} اغلقت من قبل الدائنين و بيعت كل الأصول !! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}تم اطلاق شركة نقل جديدة! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}بدأت العمل قرب {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING}تم الاستحواذ عليها بواسطة {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{} ( المدير) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} رعى اعمال البناء في {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} جديد تحت الانشاء قرب {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK} {STRING} جديدة يتم تجهيزها قرب {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING}يعلن الاغلاق الفوري STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}تسبب نقص في الامدادات الى الاغلاق الفوري ل {STRING} STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK} النقص في الشجر بالجوار ادى الى الاغلاق الفوري ل {STRING}. STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}العملة الموحدة للدول الأوربية! {}{}تم اعتماد العملة الأوربية الموحدة - اليورو - للمعاملات اليومية في دولتك! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}ركود اقتصادي!{}{}خبراء الأقتصاد خائفون من ركود اقتصادي وشيك STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}الركود انتهى!{}{}العودة للصعود في الاقتصاد اعطى الثقة في قوة الاقتصاد STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} يزيد الانتاج STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}وجد نواة فحم في {INDUSTRY}!{}يتوقع مضاعفة الانتاج STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}وجد مستودع جوفي للنفط في {INDUSTRY}!{}يتوقع ان يتضاعف الانتاج STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}استحدثت طرق جديدة للزراعة في {INDUSTRY}{} يتوقع ان يتضاعف الانتاج STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK} زاد انتاج {STRING} في {INDUSTRY} بمقدار {COMMA} في المئة! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK} انخفض الانتاج بواقع 50 % في {INDUSTRY} STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK} عدوى من الحشرات في{INDUSTRY}!{} تسببت في نقص الانتاج ب 50 %. STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK} نقص انتاج {STRING} في {INDUSTRY} بمقدار {COMMA} في المئة! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} ينتظر في المستودع STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} تنتظر في المستودع STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} تنتظر في حوض السفن STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} تنتظر في الحظيرة # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} لديها اوامر قليلة جدا في جدولها STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} لديها امر غير صالح STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} لديها امر مكرر STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} لديها محطة غير صالحة في القائمة # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} اصبحت قديمة STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} اصبحت قديمة جدا STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} قديمة جدا وتحتاج الى استبدال فوري STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} لا يستطيع ايجاد طريق للمواصلة STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} تائه STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} دخل العربة السنة السابقة {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE}لا يمكن الوصول للمحطة التالية لانها خارج المدى STR_NEWS_ORDER_REFIT_FAILED :{WHITE}امرالاستبدال توقف {VEHICLE} STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}فشل تطبيق الاستبدال الذاتي ل{VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}جديد {STRING}الآن متاحة ! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}جديد {STRING} الآن متاح ! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} لم تعد تقبل {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION}لم تعد تقبل {STRING} او {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} الآن تقبل {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION}الآن تقبل {STRING} و {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK} اعلان عن انتهاء عرض {}{} نقل {STRING} من {STRING} الى {STRING} لن يعطي ارباح اضافية بعد الآن . STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK} تم سحب العرض {}{} نقل {STRING} من {STRING} الى {STRING} لم يعد معروض STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}اعلان عن عرض {}{} نقل اول {STRING} من {STRING} الى {STRING} سوف يعطي زيادة ارباح في السنة القادمة. STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK} العرض قد اعطي لـ {STRING}!{}{} نقل {STRING} من {STRING} الى {STRING} سوف يعطي زيادة 50% ارباح للسنة القادمة STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}العرض قد اعطي لـ {STRING}!{}{} نقل {STRING}من {STRING}الى {STRING} سوف يعطي ضعف الدخل للسنة القادمة STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}شركة {STRING} فازت بالعرض{}{} نقل {STRING} من {STRING} الى {STRING} سوف يعطي 3 اضعاف الدخل للسنة القادمة STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK} شركة {STRING} فازت بالعرض !{}{} نقل {STRING} من {STRING} الى {STRING} سوف يعطي اربعة اضعاف الدخل للسنة القادمة STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK} فوضى طرق عارمة في مدينة {TOWN}!{}{}اعادة ترميم الطرق مولت من قبل شركة {STRING}{} تجلي ستة أشهر من الشقاء لعربات الطريق. # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}شاشة العرض {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}انسخ لشاشة العرض STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}انسخ موقع الشاشة الرئيسية لشاشة العرض هذه STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}لصق من شاشة العرض STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}لصق شاشة العرض هذة للشاشة الرئيسية # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}إعدادات اللعبه STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}وحدة العملة STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدة العملة ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :جنية(£) STR_GAME_OPTIONS_CURRENCY_USD :دولار ($) STR_GAME_OPTIONS_CURRENCY_EUR :يورو (€) STR_GAME_OPTIONS_CURRENCY_JPY :ين (¥) STR_GAME_OPTIONS_CURRENCY_ATS :شلنق استرالي (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :فرنك بلجيكي (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :فرنك سويسري (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :كرونا تشيكية (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :مارك الماني (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :كرونا دنمركي STR_GAME_OPTIONS_CURRENCY_ESP :بيستا (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :ماركا فنلندي(FIM) STR_GAME_OPTIONS_CURRENCY_FRF :فرنك (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :دراخما يونانية (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :فورنت هنغاري (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :كرونا ايسلاندية (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :ليرة ايطالية (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :غلدر هولندي (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :كرونا نرويجية (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :زلوتي بولندي (PLN) STR_GAME_OPTIONS_CURRENCY_RON :لور يوناني (RON) STR_GAME_OPTIONS_CURRENCY_RUR :روبل روسي (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :تولار سوفاني (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :كرونا سويدية (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :ليرة تركية (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :كرونا سلوفاكية (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :ريال برازيلي (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :كرونا استونية (EEK) STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}وحدات القياس STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدات القياس ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :امبريل STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :متري STR_GAME_OPTIONS_MEASURING_UNITS_SI :النظام الدولي للوحدات ( م-كجم-ث) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}العربات البرية STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}اختار الجانب الذي تسير فيه المركبات STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :القيادة على اليسار STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :القيادة على اليمين STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}اسماء المدن STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}اختيار طريقة عرض اسماء المدن ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :English (Original) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :فرنسي STR_GAME_OPTIONS_TOWN_NAME_GERMAN :الماني STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :انجليزي اضافي STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :امريكي لاتيني STR_GAME_OPTIONS_TOWN_NAME_SILLY :مضحك STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :سويدي STR_GAME_OPTIONS_TOWN_NAME_DUTCH :هولندي STR_GAME_OPTIONS_TOWN_NAME_FINNISH :فنلندي STR_GAME_OPTIONS_TOWN_NAME_POLISH :بلغاري STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :سلوفاكي STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :نرويجي STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :هنغاري STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :نمساوي STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :روماني STR_GAME_OPTIONS_TOWN_NAME_CZECH :تشيكي STR_GAME_OPTIONS_TOWN_NAME_SWISS :سويدي STR_GAME_OPTIONS_TOWN_NAME_DANISH :دنماكي STR_GAME_OPTIONS_TOWN_NAME_TURKISH :تركي STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :ايطالي STR_GAME_OPTIONS_TOWN_NAME_CATALAN :كتالونية ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}حفظ آلي STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}اختار مدة الحفظ الآلي STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :بدون STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :كل شهر STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :كل 3 اشهر STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :كل 6 اشهر STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :كل سنة STR_GAME_OPTIONS_LANGUAGE :{BLACK}لغة STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}اختر لغة الواجهه STR_GAME_OPTIONS_FULLSCREEN :{BLACK}شاشة كاملة STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}اختر هذا المربع للعب OpenTTD على لشاشة الكاملة STR_GAME_OPTIONS_RESOLUTION :{BLACK}دقة الشاشة STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اختر دقة الشاشة STR_GAME_OPTIONS_RESOLUTION_OTHER :اخرى STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}صيغة حفظ الشاشة STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}اختر صيغة حفظ الشاشة STR_GAME_OPTIONS_BASE_GRF :{BLACK} الواجهة الرسومية الاساسية STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK} اختر مجموعة الواجهة الرسومية STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ملف مفقود او غير صالح STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK} معلومات اضافية عن القاعدة الرسومية STR_GAME_OPTIONS_BASE_SFX :{BLACK}قاعدة الاصوات الاساسية STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}اختر الاصوات الاساسية للاستخدام STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية حول مجوعة الصوت STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}قاعده الموسيقى الاساسيه STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}اختر الموسيقى الاساسية التي تود استخدامها STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ملف غير صالح{P ""} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية عن الموسيقى الاساسية STR_ERROR_FULLSCREEN_FAILED :{WHITE}فشل تشغيل نمط الشاشة الكاملة # Custom currency window STR_CURRENCY_WINDOW :{WHITE}عمله مخصصه STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}معامل التبديل: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK} £ قلل قيمة عملتك لكل جنية استرليني STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK} £ زد قيمة عملتك لكل جنية استرليني STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK} حدد قيمة الصرف لعملتك مقابل الجنية الاسترليني (£) STR_CURRENCY_SEPARATOR :{LTBLUE} فاصل العملة: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK} حدد الفاصل لعملتك STR_CURRENCY_PREFIX :{LTBLUE} علامة العملة السابقة: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK} حدد الرمز الاستهلالي لعملتك STR_CURRENCY_SUFFIX :{LTBLUE} علامة العملة الاخيرة: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK} حدد الرمز اللاحق لعملتك STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}حول إلى يورو : {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}حول إلى يورو : {ORANGE}أبدا STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK} حدد السنة لتبديل العملة لليورو STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK} بدل الى اليورو مبكرا STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK} بدل الى اليورو متاخرا STR_CURRENCY_PREVIEW :{LTBLUE}عرض: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK} 10000 جنية استرليني في عملتك STR_CURRENCY_CHANGE_PARAMETER :{BLACK}غير الخيارات الاختيارة STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}العدد الاقصى للمتنافسين: {ORANGE}{COMMA} STR_NONE :بدون STR_FUNDING_ONLY :التمويل فقط STR_MINIMAL :الادنى STR_NUM_VERY_LOW :منخفض جدا STR_NUM_LOW :قليل STR_NUM_NORMAL :طبيعي STR_NUM_HIGH :عالي STR_NUM_CUSTOM :اختياري STR_NUM_CUSTOM_NUMBER :مخصص ({NUM}) STR_VARIETY_NONE :بدون STR_VARIETY_VERY_LOW :منخفض جدا STR_VARIETY_LOW :منخفض STR_VARIETY_MEDIUM :متوسط STR_VARIETY_HIGH :مرتفع STR_VARIETY_VERY_HIGH :مرتفع جدا STR_AI_SPEED_VERY_SLOW :بطيء جدا STR_AI_SPEED_SLOW :بطيء STR_AI_SPEED_MEDIUM :متوسط STR_AI_SPEED_FAST :سريع STR_AI_SPEED_VERY_FAST :سريع جدا STR_SEA_LEVEL_VERY_LOW :منخفض STR_SEA_LEVEL_LOW :بسيط STR_SEA_LEVEL_MEDIUM :متوسط STR_SEA_LEVEL_HIGH :عالي STR_SEA_LEVEL_CUSTOM :مخصص STR_SEA_LEVEL_CUSTOM_PERCENTAGE :مخصص ({NUM}%) STR_RIVERS_NONE :بدون STR_RIVERS_FEW :قليلة STR_RIVERS_MODERATE :متوسطة STR_RIVERS_LOT :كثيرة STR_DISASTER_NONE :بدون STR_DISASTER_REDUCED :قليل STR_DISASTER_NORMAL :طبيعي STR_SUBSIDY_X1_5 :*1.5 STR_SUBSIDY_X2 :*2 STR_SUBSIDY_X3 :*3 STR_SUBSIDY_X4 :*4 STR_TERRAIN_TYPE_VERY_FLAT :مسطح تماما STR_TERRAIN_TYPE_FLAT :مسطح STR_TERRAIN_TYPE_HILLY :مرتفعات - هضاب STR_TERRAIN_TYPE_MOUNTAINOUS :جبال STR_CITY_APPROVAL_PERMISSIVE :متساهل STR_CITY_APPROVAL_TOLERANT :متقبل STR_CITY_APPROVAL_HOSTILE :معاد STR_WARNING_NO_SUITABLE_AI :{WHITE}لايوجد ذكاء اصطناعي متاح ...{}تستطيع تجميل العديد من الذكاء الاصطناعي عن طريق اللانترنت # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}إعدادات متقدمه STR_CONFIG_SETTING_EXPAND_ALL :مدد الكل STR_CONFIG_SETTING_COLLAPSE_ALL :إسحب الكل STR_CONFIG_SETTING_RESTRICT_LABEL :اظهر: STR_CONFIG_SETTING_RESTRICT_BASIC :اﻹعدادات الاساسيه STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}احصر القائمة على انواع اعدادات محددة STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :كل الاعدادات STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :اعدادات العميل (غير مخزن في المحفوظات, يؤثر على كل الالعاب) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :اعدادات اللعبة (مخزن في المحفوظات, يؤثر على الالعاب الجديدة فقط) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :اعدادات اللعبة (مخزن في المحفوظات, يؤثر على اللعبة الحالية فقط) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :اعدادات الشركة (مخزن في المحفوظات, يؤثر على الالعاب الجديدة فقط) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :اعدادات الشركة (مخزن في المحفوظات: يؤثر على الشركة الحالية فقط) STR_CONFIG_SETTING_OFF :قفل STR_CONFIG_SETTING_ON :فتح STR_CONFIG_SETTING_DISABLED :غير مفعل STR_CONFIG_SETTING_COMPANIES_OFF :بدون STR_CONFIG_SETTING_COMPANIES_OWN :لشركتك STR_CONFIG_SETTING_COMPANIES_ALL :كل الشركات STR_CONFIG_SETTING_NONE :بدون STR_CONFIG_SETTING_ORIGINAL :اصلي STR_CONFIG_SETTING_REALISTIC :واقعي STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :يسار STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :متوسط STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :يمين STR_CONFIG_SETTING_BUILDONSLOPES :السماح بالبناء على المنحدرات و السواحل: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :السماح باعادة بناء التلال تحت المباني, الطرق, الخ .-الانحدار الذاتي- {STRING} STR_CONFIG_SETTING_CATCHMENT :السماح بحدود اكثر واقعية للمحطات بحسب الحجم: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :السماح بحذف اكثر من الطرق المملوكة للمدينة و الجسور و غيرها: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT :كمية دخان/شرار القطارات:{STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :موديل تسارع القطارات: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :نمط تسارع عربات الطريق: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :منع القطارات والسفن من الدوران بزاوية تسعين درجة : {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :السماح بربط محطتين غير متجاورتين : {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :أستخدام خوارزمية التحميل المحسنه: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :تحميل القطارات بالتدريج: {STRING} STR_CONFIG_SETTING_INFLATION :التضخم: {STRING} STR_CONFIG_SETTING_SELECTGOODS :أوصل الحموله للمحطه إذا كان هناك حاجة فقط: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :طريقة بناء المصانع الأولية يدوية : {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :بدون STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ككل المصانع الأخرى STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :تنقيب STR_CONFIG_SETTING_MULTIPINDTOWN :السماح بوجود أكثر من مصنع من نفس النوع في المدينة الواحدة: {STRING} STR_CONFIG_SETTING_SHOWFINANCES :أعرض نافذة المالية في آخر السنة: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :الامر الجديد - بدون توقف - قياسيا: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :اوامر القطار الجديدة تتوقف قياسيا في {STRING} رصيف المحطة STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :قرب النهاية STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :وسط STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :النهاية القصوى STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :تسلسل عربات الطريق - بالتأثير الكمي : {STRING} STR_CONFIG_SETTING_AUTOSCROLL :حرك الشاشة عندما تكون المؤشر على الحافة: {STRING} STR_CONFIG_SETTING_BRIBE :السماح برشوة السلطات االمحليه: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :السماح بشراء حقوق النقل الحصري: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :السماح بتمويل المباني: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :السماح بتمويل تعمير الطرق المحلية: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :السماح بتحويل المال للشركات الأخرى: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :مضاعفة وزن الشحنة لمحاكاة القطارات الثقيلة: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :عدد الطائرات المتحطمة: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :بدون STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :منخفض STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :طبيعي STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات بالعبور خلال المواقف المملوكة داخل المدن: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :السماح بمرور العربات خلال المحطات المملوكة للمنافسين: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :السماح ببناء محطات متلاصقة{STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :السماح بتعدد محركات NewGFR {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}تغير هذا الخيار غير متاح عندما يكون هناك عربات STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :صيانة البنية التحتية: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :المطارات لا تنتهي صلاحيتها {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :حذر إذا فقدت المركبة {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :استعراض اوامر العربات: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :لا STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :نعم, بستثناء العربات الموقوفه STR_CONFIG_SETTING_ORDER_REVIEW_ON :لكل العربات STR_CONFIG_SETTING_WARN_INCOME_LESS :حذر عندما يكون الدخل سالبا :{STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :المركبات لا تنتهي صلاحيتها ابدا : {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :جدد العربات عندما تصبح قديمة : {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :التجديد التلقائي عند توفر السيولة الدنيا للتجديد: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :أعرض عدد السكان مع الاسم على العلامة: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :سمك الخطوط في العرض: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :مولد الأرض: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :الأصلي STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :مرتفعات منزلقة STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط الثلج: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :خشونة التضاريس (سفر التكوين فقط ) :({STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :ناعم جدا STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :ناعم STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :خشن STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :خشن جدا STR_CONFIG_SETTING_TREE_PLACER :طريقة وضع الاشجار: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :بدون STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :الأصلي STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :المحسن STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :اتجاة خريطة المرتفعات: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :عكس عقارب الساعة STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :مع عقارب الساعة STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :الأرتفاع الأعلى في محرر الخريطة لسطح المستوي: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :السماح بتعديل الحدود الحرة للخريطة: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}مربع او اكثر غير فارغ في الحدود الشمالية STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}مربع او اكثر من حدود الخريطة لا يكون بحر STR_CONFIG_SETTING_SERVICEATHELIPAD :صيانة الهيلوكبتر في مهبطها تلقائيا: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :اربط اداة التضاريس الى اداة السكة /الطرق / اموانئ / المطارات{STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :لون الارضية المستخدم للخرائط الصغيرة: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :اخضر STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :اخضر غامق STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :بنفسجي STR_CONFIG_SETTING_REVERSE_SCROLLING :عكس تحريك الشاشة : {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :تحريك سلس في نوافذ المشاهدة: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :عرض المقاسات عند استخدام ادوات البناء المختلفة: {STRING} STR_CONFIG_SETTING_LIVERIES :عرض لون و شعار الشركة: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :بدون STR_CONFIG_SETTING_LIVERIES_OWN :شركتك الخاصة STR_CONFIG_SETTING_LIVERIES_ALL :كل الشركات STR_CONFIG_SETTING_PREFER_TEAMCHAT :تفضيل الدردشة : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :وظيفة عجلة التحريك: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :تصغير تكبير الخريطة STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :تحريك الخريطة STR_CONFIG_SETTING_SCROLLWHEEL_OFF :عدم استخدام STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :سرعة تحريك الخريطة: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :محاكاة الزر الأيمن : {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :الأوامر STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :للتحكم STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :عدم استخدام STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :تصفح بالزر الايسر: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :استخدم {STRING} نمط التاريخ لاسم اللعبة المحفوظة STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طويل - 31 ديسمبر 2008 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :قصير - 31 - 12 - 2008 STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ايزو 31-12-2008 STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :النوافذ القياسية للاضافة غير محددة: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :إيقاف اللعبة تلقائيا عند بدأ لعبة جديدة: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :عندمل توقف أسمح: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :لا تصرف STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :الكل ما عدا عمليات البناء STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :الكل ما عدا خيارات تعديل الخريطة STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :كل تصرف STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :استخدام قائمة العربات المطورة: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :تفعيل مؤشر التحميل: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :عرض جدولة الأعمال بالمهام بدلا من الأيام: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :عرض الوصول و المغادرة في جدولة الاعمال: {STRING} STR_CONFIG_SETTING_QUICKGOTO :إنشاء سريع لأوامر المركبات: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :سكة الحديد القياسية (بعد بدأ لعبة جديدة أو تحميل لعبة): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :القديم STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :الجديد STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :الأكثر استخداما STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :اظهار الطرق المحجوزة: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :ابقاء ادوات البناء فعالة بعد استخدامها: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :النفقات للمجموعة في النافذة المالية: {STRING} STR_CONFIG_SETTING_SOUND_TICKER :خبر: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :شغل صوت تاثيري عند عرض ملخص الاخبار STR_CONFIG_SETTING_SOUND_NEWS :الجرائد: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :شغل صوت تاثيري عند عرض الجرائد STR_CONFIG_SETTING_SOUND_NEW_YEAR :نهاية العام: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :شغل صوت مؤثر عند عرض ملخص اداء الشركة STR_CONFIG_SETTING_SOUND_CONFIRM :اعمال انشائية: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :شغل صوت تاثيري عند اكتمال عمل انشائي او غيره STR_CONFIG_SETTING_SOUND_CLICK :صوت النقرة: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :صوت نقرة عند الضغط على زر STR_CONFIG_SETTING_SOUND_DISASTER :حوادث و كوارث: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :شغل اصوات الحوادث و الكوارث STR_CONFIG_SETTING_SOUND_VEHICLE :العربات: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :شغل اصوات العربات STR_CONFIG_SETTING_SOUND_AMBIENT :مؤثرات: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :شغل مؤثرات صوتية في المناظر و المصانع و المدن STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :عطل ادوات البناء عند عدم وجود عربات متاحة لها: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :الحد الأعلى لعدد القطارات لكل لاعب: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :الحد الأعلى لعدد العربات لكل لاعب: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT :الحد الأعلى لعدد الطائرات لكل لاعب: {STRING} STR_CONFIG_SETTING_MAX_SHIPS :الحد الأعلى لعدد السفن لكل لاعب: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :حظر القطارات على الحاسوب: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :حظر العربات على الكمبيوتر: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :حظر الطائرات على الحاسوب: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :حظر السفن على الحاسوب: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :السماح بالذكاء الصناعي في اللعب الجماعي : {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes قبل تعليق الاسكربت: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :فترات الصيانة بالنسبة المئوية : {STRING} STR_CONFIG_SETTING_NOSERVICE :الغاء الصيانة عندما يكون التعطيل للمركبات غير مفعل: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :السماح بتحديد سرعة العربات: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :تعطيل سكة القطار الكهربائي: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :وصول اول مركبة لمحطة اللاعب: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :وصول اول مركبة لمحطة الخصوم: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :الحوادث/الأزمات: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :معلومات الشركة: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :تشغيل مصنع جديد: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :اغلاق مصنع: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :التغيرات الأقتصادية: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :تغير في انتاج مصنع مشمول بخدمات الشركة: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :تغير في انتاج مصنع مشمول بخدمات الشركات الأخرى: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :تغير انتاج المصانع الأخرى: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :عرض صحيفة عندما يكون مستوى انتاج الصناعات التغيير، والتي لا تخدمها الشركة أو المنافسين STR_CONFIG_SETTING_NEWS_ADVICE :نصائح/ معلومات حول مركبات الشركة: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :عرض رسائل عن المركبات التي تحتاج الى اهتمام STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :المركبات الجديدة: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :عرض صحيفة عندما نوع السيارة الجديدة تصبح متوفرة STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :تغييرات قبول الشحن: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :عرض رسائل عن محطات تغيير قبول بعض الشحنات STR_CONFIG_SETTING_NEWS_SUBSIDIES :العروض: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :عرض إحدي الصحف عن الأحداث ذات صلة الدعم المالي STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :معلومات عامة: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :عرض الصحف عن الأحداث العامة، مثل شراء حقوق حصرية أو تمويل إعادة الإعمار الطريق STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :اغلاق STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :ملخص STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :ممتلئ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :الاخبار الملونة تظهر في: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :السماح بأقتصاد ثابت )تغيرات صغيرة اكثر): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :السماح باستخدام اشارات واجهة المستخدم الرسومية: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :نوع الاشارة الذي يبنى قياسيا: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :اشارات التوقف STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :إشارات الطريق STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :إشارة طريق اتجاه واحد STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :الدوران خلال الاشارات: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :اشارات التوقف فقط STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :اشارات الطريق فقط STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :الكل STR_CONFIG_SETTING_TOWN_LAYOUT :تصميم الطرق للمدن الجديدة : {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :قياسي STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :طرق افضل STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :شبكة 2*2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :شبكة 3*3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :عشوائي STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :السماح للمدن ببناء طرق: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :يسمح للمدن ببناء تقاطعات متعددة: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :السماح للمدن بالتحكم بضجيج المطارات: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :انشاء المدن اثناء اللعب: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :محذور STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :مسموح STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :مسموح - نمط مدينة قابل للتعديل STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :اضافة الاشجار اثناء اللعب: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :بدون {RED}-المشغولات الخشبية معطل- STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :الغابات الماطرة فقط STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :كل مكان STR_CONFIG_SETTING_TOOLBAR_POS :موقع شريط الأدوات الرئيسي: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :موقع شريط المعلومات: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT :حدود نعومة النوافذ - غير ملتصقة - :{STRING} STR_CONFIG_SETTING_ZOOM_MIN :اقصى حدود التقريب: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :اقصى حدود التقريب: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :X4 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :X2 STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :طبيعي STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :X2 STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :X4 STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :X8 STR_CONFIG_SETTING_TOWN_GROWTH :سرعة نمو المدينه: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_NONE :بدون STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :بطيء STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :عادي STR_CONFIG_SETTING_TOWN_GROWTH_FAST :سريع STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :سريع جدا STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضاعف المدن المبدئي: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :ازالة العوالق اثناء ترميم الطرق: {STRING} STR_CONFIG_SETTING_GUI :{ORANGE}النظام البيني STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}البناء STR_CONFIG_SETTING_VEHICLES :{ORANGE}المركبات STR_CONFIG_SETTING_STATIONS :{ORANGE}المحطات STR_CONFIG_SETTING_ECONOMY :{ORANGE}الأقتصاد STR_CONFIG_SETTING_AI :{ORANGE}المتنافسين STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}عرض الخيارات STR_CONFIG_SETTING_INTERACTION :{ORANGE} التفاعل STR_CONFIG_SETTING_SOUND :{ORANGE}الصوت STR_CONFIG_SETTING_NEWS :{ORANGE}الاخبار و الرسائل STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}الإشارات STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE} طريقة التحميل STR_CONFIG_SETTING_AI_NPC :{ORANGE} لاعبين الحاسوب STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE} التجديد التلقائي STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE} الصيانة STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE} المسارات STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE} قطارات STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE} مدن STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE} مصانع STR_CONFIG_SETTING_PATHFINDER_OPF :اصلي STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(مفضل) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :موجد الطريق- قصاص الطريق - للقطارات:{STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :موجد الطريق (قصاص الأثر) للعربات: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :موجد طريق العبور للسفن: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :العكس عند الإشارات: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}عدل قيمة التغيير # Config errors STR_CONFIG_ERROR :{WHITE}خطا في ملف الاعدادات STR_CONFIG_ERROR_ARRAY :{WHITE}خطا في الجملة '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... قيمة غير صحيحة '{STRING}' لـ '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... حروف في نهاية الاعدادات '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... تجاهل الاضافات الجديدة '{STRING}': متطابق مع اضافة '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}...تجاهل الاضافة الجديده '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :غير متوفر STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :غير امن للاستخدام STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :نظام الاضافات الجديدة STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :غير متطابق مع هذه النسخة من OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :مجهول STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... نسبة الضغط '{STRING}' غير صحيحة # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}لعبة جديدة STR_INTRO_LOAD_GAME :{BLACK} تحميل STR_INTRO_PLAY_SCENARIO :{BLACK}لعب خريطة STR_INTRO_PLAY_HEIGHTMAP :{BLACK}العب خريطة المرتفعات STR_INTRO_SCENARIO_EDITOR :{BLACK}محرر الخريطة STR_INTRO_MULTIPLAYER :{BLACK}لعب جماعي STR_INTRO_GAME_OPTIONS :{BLACK}إعدادات اللعبه STR_INTRO_HIGHSCORE :{BLACK}قائمه المتفوقين STR_INTRO_ADVANCED_SETTINGS :{BLACK}الاعدادات المتقدمة STR_INTRO_NEWGRF_SETTINGS :{BLACK} اعدادات NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK} إبحث عن المحتوى عبر الشبكه العنكبوتيه STR_INTRO_SCRIPT_SETTINGS :{BLACK}إعدادات الذكاء الصناعى STR_INTRO_QUIT :{BLACK}خروج STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}بدأ لعبة جديدة STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}تحميل لعبة محفوظة STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}ابدأ لعبة جديدة بواسطة خريطة المرتفعات STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}بدأ لعبة جديدة من العالم الخاص STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}انشاء خريطة عالم خاصة STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK} ابدأ لعبة جماعية STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}اختيار المناطق الثلجية STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}اختيار المناطق الصحراوية STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}اختيار المناطق الصحراوية STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}اختيار نمط الألعاب STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}عرض خيارات اللعبة STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}عرض الاعدادات المتقدمة STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}عرض إعدادات اﻹضافات STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} ابحث عن محتوى جديد او تحديث STR_INTRO_TOOLTIP_QUIT :{BLACK}اغلاق'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}هذة الترجمة تفتقد لـ {NUM}عبارات/عبارة. فضلا اجعل الترجمة افضل بالتسجيل في موقع الترجمة, اقرأ ملف المساعدة readme # Quit window STR_QUIT_CAPTION :{WHITE}انهاء STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}هل تود اغلاق النسخة المفتوحة و العودة لـ {STRING}? STR_QUIT_YES :{BLACK}نعم STR_QUIT_NO :{BLACK}لا # Supported OSes STR_OSNAME_WINDOWS :ويندوز STR_OSNAME_DOS :دوس STR_OSNAME_UNIX :يونكس STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :بي او اس STR_OSNAME_HAIKU :هايكو STR_OSNAME_MORPHOS :مورف او اس STR_OSNAME_AMIGAOS :اميقا STR_OSNAME_OS2 :او اس/2 STR_OSNAME_SUNOS :صن # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}إغلاق اللعبه STR_ABANDON_GAME_QUERY :{YELLOW}أمتأكد من رغبتك فى إغلاق اللعبه؟ STR_ABANDON_SCENARIO_QUERY :{YELLOW}هل تريد الخروج من انشاء الخريطة # Cheat window STR_CHEATS :{WHITE}اسرار STR_CHEATS_TOOLTIP :{BLACK}علامة صح اذا استخدمت هذا السرمن قبل STR_CHEATS_WARNING :{BLACK}تحذير! انت على وشك ان تغش منافسيك. إعلم انهم سيتذكرون عليك هذا العار للإبد STR_CHEAT_MONEY :{LTBLUE}زيادة السيولة بـ {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}العب كشركة{ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}الجرافة السحرية - لازالة المصانع و الاجسام غير القابلة للازالة.{ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}يمكن للانفاق ان تتقاطع: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}الطائرات النفاثه لا تتحطم (كثيراً) فى المطارات الصغيره: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :مناطق معتدلة STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :مناطق ثلجية STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :مناطق مدارية STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :ألعاب STR_CHEAT_CHANGE_DATE :{LTBLUE}عدل التاريخ {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}غير السنة الحالية STR_CHEAT_SETUP_PROD :{LTBLUE}تفعيل تغيير قيمة الانتاج: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}الوان جديدة STR_LIVERY_GENERAL_TOOLTIP :{BLACK}اظهر اللون العام STR_LIVERY_TRAIN_TOOLTIP :{BLACK}اظهر لون القطائرات STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}اظهر لون العربات النمطي STR_LIVERY_SHIP_TOOLTIP :{BLACK}اظهر لون السفن STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}اظهر ألوان الطائرات STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}اختر اللون الأساسي STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}اختر اللون الثانوي STR_LIVERY_PANEL_TOOLTIP :{BLACK}اختر اللون, أو مفتاح كنترول لاكثر من لون. اضغط على الصندوق لفتح/ قفل الالوان. STR_LIVERY_DEFAULT :الزي القياسي STR_LIVERY_STEAM :محرك بخاري STR_LIVERY_DIESEL :محرك ديزل STR_LIVERY_ELECTRIC :محرك كهربائي STR_LIVERY_MONORAIL :محرك احادي STR_LIVERY_MAGLEV :محرك ممغنط STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :حافلة ركاب - بخارية STR_LIVERY_PASSENGER_WAGON_DIESEL :حافلة ركاب - ديزل STR_LIVERY_PASSENGER_WAGON_ELECTRIC :عربة ركاب - كهربائية STR_LIVERY_PASSENGER_WAGON_MONORAIL :عربة ركاب - أحادية STR_LIVERY_PASSENGER_WAGON_MAGLEV :عربة كاب - ممغنطة STR_LIVERY_FREIGHT_WAGON :عربة شحن STR_LIVERY_BUS :باص STR_LIVERY_TRUCK :لوري STR_LIVERY_PASSENGER_SHIP :عبارة ركاب STR_LIVERY_FREIGHT_SHIP :سفينة شحن STR_LIVERY_HELICOPTER :هيلوكبتر STR_LIVERY_SMALL_PLANE :طائرة صغيرة STR_LIVERY_LARGE_PLANE :طائرة كبيرة STR_LIVERY_PASSENGER_TRAM :ترام ركاب STR_LIVERY_FREIGHT_TRAM :عربة ترام للشحن # Face selection window STR_FACE_CAPTION :{WHITE}اختيار الوجة STR_FACE_CANCEL_TOOLTIP :{BLACK}الغاء اختيار الوجة الجديد STR_FACE_OK_TOOLTIP :{BLACK}اقبل الوجة الجديد STR_FACE_MALE_BUTTON :{BLACK}رجل STR_FACE_MALE_TOOLTIP :{BLACK}اختر وجة رجل STR_FACE_FEMALE_BUTTON :{BLACK}امرأة STR_FACE_FEMALE_TOOLTIP :{BLACK}اختر وجة امرأة STR_FACE_NEW_FACE_BUTTON :{BLACK}وجة جديد STR_FACE_NEW_FACE_TOOLTIP :{BLACK}اختر وجة عشوائي STR_FACE_ADVANCED :{BLACK}متقدم STR_FACE_ADVANCED_TOOLTIP :{BLACK}إختيار وجه متقدم STR_FACE_SIMPLE :{BLACK}بسيط STR_FACE_SIMPLE_TOOLTIP :{BLACK}اختيار الوجة المبسط STR_FACE_LOAD :{BLACK}حمل STR_FACE_LOAD_TOOLTIP :{BLACK}حمل الوجه المفضل STR_FACE_LOAD_DONE :{WHITE}وجهك المفضل تم تحميله من ملف التكوين الخاص بـ OpenTTD. STR_FACE_FACECODE :{BLACK}رقم وجة اللاعب STR_FACE_FACECODE_TOOLTIP :{BLACK}عرض او تغيير رقم الوجة STR_FACE_FACECODE_CAPTION :{WHITE}عرض او تغيير رقم وجة اللاعب STR_FACE_FACECODE_SET :{WHITE}رقم الوجة الجديد - كود - تم تعيينة STR_FACE_FACECODE_ERR :{WHITE}لا نتمكن من تغيير رقم الوجة. - يجب ان يكون من 0 الى 4,294,967,295 ! STR_FACE_SAVE :{BLACK}حفظ STR_FACE_SAVE_TOOLTIP :{BLACK}حفظ الوجه المفضل STR_FACE_SAVE_DONE :{WHITE}هذا الوجه سيحفظ كالمفضل في ملف تكوينك الخاص بـ Open TTD. STR_FACE_EUROPEAN :{BLACK}أوربي STR_FACE_SELECT_EUROPEAN :{BLACK}إختيار وجوه أوربيه STR_FACE_AFRICAN :{BLACK}أفريقي STR_FACE_SELECT_AFRICAN :{BLACK}إختيار وجوه أفريقيه STR_FACE_YES :نعم STR_FACE_NO :لا STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}تفعيل الشوارب أو أقراط الأذان STR_FACE_HAIR :الشعر: STR_FACE_HAIR_TOOLTIP :{BLACK}غير الشعر STR_FACE_EYEBROWS :الحواجب: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}غير الحواجب STR_FACE_EYECOLOUR :لون العيون: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}غير لون العيون STR_FACE_GLASSES :نظارات: STR_FACE_GLASSES_TOOLTIP :{BLACK}تفعيل النظارات STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}غير النظارات STR_FACE_NOSE :الأنف: STR_FACE_NOSE_TOOLTIP :{BLACK}غير الأنف STR_FACE_LIPS :الشفاه: STR_FACE_MOUSTACHE :الشوارب: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}غير الشفاه أو الشوارب STR_FACE_CHIN :الذقن: STR_FACE_CHIN_TOOLTIP :{BLACK}غير الذقن STR_FACE_JACKET :سترة: STR_FACE_JACKET_TOOLTIP :{BLACK}غير السترة STR_FACE_COLLAR :الياقة: STR_FACE_COLLAR_TOOLTIP :{BLACK}غير الياقة STR_FACE_TIE :الربطة: STR_FACE_EARRING :أقراط الأذان: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}غير الربطة أو أقراط الأذن # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}تعدد اللاعبين STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}اتصال STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}أختر بين لعبة على الإنترنت أو الشبكة المحلية (LAN) STR_NETWORK_SERVER_LIST_LAN :شبكة محلية STR_NETWORK_SERVER_LIST_INTERNET :انترنت STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}أسم اللاعب STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}هذا الآسم الذي ستعرف به في اللعبة STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}الأسم STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}أسم اللعبة STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}عميل STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}عملاء متصلين / أقصى عدد للعملاء{}شركات متصلة / أقصى عدد للشركات STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}حجم الخريطة STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}حجم خريطة اللعبة{}أضغط لترتيب بالحجم STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}التاريخ STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}التاريخ الحالي STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}سنين STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}عدد السنوات{}اللعبة قائمة STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}اللغة ، نسخة الخادم ، إلخ STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}أضغط على لعبة من القائمة لإختيارها STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}الخادم الذي أنضممت إليه آخر مره: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}اضغط للعب الخادم الذي لعبت به آخر مرة. STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}معلومات اللعبة STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}عملاء:{WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}اللغة:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}مجموعة المربعات:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}حجم الخريطة: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}نسخه اللعبه لهذا الخادم: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}عنوان الخادم:{WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}تاريخ البداية:{WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}التاريخ الحالي:{WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}كلمت السر محمية! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}الخادم غير موجود STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}الخادم ممتلئ STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}النسخة غير متطابقة STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER} عدم توافق NewGFR STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}أنضم للعبة STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}حدث الخادم STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}حدث معلومات الخادم STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}إبحث عن خوادم STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}أبحث في الشبكة عن خادم STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}اضف خادم - سيرفر STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}اضف خادم (سيرفر) و الذي سوف يفحص اذا كان هناك لعبة قيد التشغيل حاليا STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}أبدأ الخادم STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}أبدأ خادمك الخاص STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}أدخل أسمك STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}أدخل عنوان المضيف # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}أبدا لعبة متعددة اللاعبين جديدة STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}أسم اللعبة: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}أسم اللعبة سيظهر للآخرين في قائمة تعدد اللاعبين STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}ضع كلمة سر STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}احم لعبتك برقم سري حتى لا تصبح لعبتك مفتوحة للجميع STR_NETWORK_START_SERVER_LAN_INTERNET :شبكة محلية / انترنت STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :انترنت (دعاية) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM}عميل STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}اقصى عدد عملاء: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}أختر أقصى عدد للعملاء STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM}شركة STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}أقصى عدد شركات: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}حدد العدد الاقصى للشركات في هذا الخادم STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM}مشاهد STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}أقصى عدد مشاهدين: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}حدد عدد المشاهدين لهذا الخادم STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}اللغة المتحدثة: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}اللاعبين الآخرين سيعرفون اللغة المتحدثة STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}أدخل أسم اللعبة للشبكة # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :أي STR_NETWORK_LANG_ENGLISH :إنجليزي STR_NETWORK_LANG_GERMAN :ألماني STR_NETWORK_LANG_FRENCH :فرنسي STR_NETWORK_LANG_BRAZILIAN :برازيلي STR_NETWORK_LANG_BULGARIAN :بلغاري STR_NETWORK_LANG_CHINESE :صيني STR_NETWORK_LANG_CZECH :شيكي STR_NETWORK_LANG_DANISH :دانماركي STR_NETWORK_LANG_DUTCH :هولندي STR_NETWORK_LANG_ESPERANTO :اسبرانتو STR_NETWORK_LANG_FINNISH :الفنلندية STR_NETWORK_LANG_HUNGARIAN :هنغاري STR_NETWORK_LANG_ICELANDIC :الأيسلاندية STR_NETWORK_LANG_ITALIAN :إيطالي STR_NETWORK_LANG_JAPANESE :يابانية STR_NETWORK_LANG_KOREAN :كورية STR_NETWORK_LANG_LITHUANIAN :اللتوانية STR_NETWORK_LANG_NORWEGIAN :نرويجية STR_NETWORK_LANG_POLISH :البولندية STR_NETWORK_LANG_PORTUGUESE :برتغالية STR_NETWORK_LANG_ROMANIAN :رومانية STR_NETWORK_LANG_RUSSIAN :روسية STR_NETWORK_LANG_SLOVAK :السلوفاكية STR_NETWORK_LANG_SLOVENIAN :السلوفانية STR_NETWORK_LANG_SPANISH :أسبانية STR_NETWORK_LANG_SWEDISH :سويدية STR_NETWORK_LANG_TURKISH :تركية STR_NETWORK_LANG_UKRAINIAN :الأوكرانية STR_NETWORK_LANG_AFRIKAANS :الأفريقية STR_NETWORK_LANG_CROATIAN :كرواتية STR_NETWORK_LANG_CATALAN :الكاتالوينية STR_NETWORK_LANG_ESTONIAN :الأستونية STR_NETWORK_LANG_GALICIAN :الجاليكية STR_NETWORK_LANG_GREEK :اليونانية STR_NETWORK_LANG_LATVIAN :اللاتفية ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}ردهة تعدد اللاعبين STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}التحضير لالانضمام الى:{ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}قائمة بالشركات الموجودة باللعبة ، يمكنك الإنضمام لشركة أو تأسيس واحدة STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}معلومات الشركة STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}أسم الشركة:{WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}افتتاح:{WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}قيمة الشركة:{WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}الرصيد الحالي:{WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}دخل السنة الماضية:{WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}الأداء:{WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}مركبة:{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}محطات:{WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}لاعبين:{WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}شركة جديدة STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}أنشئ شركة جديدة STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}شاهد اللعبة STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}شاهد اللعبة كامشاهد STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}أنضم لشركة STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}ساعد في إدارة الشركة # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}إتصال... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) إتصال.. STR_NETWORK_CONNECTING_2 :{BLACK}(2/6)تصريح الدخول... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) إنتظار.. STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) تحميل الخريطة.. STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) معالجة البيانات.. STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) تسجيل.. STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}جلب معلومات اللعبة.. STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}جلب معلومات الشركة.. ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM}انتظار اللاعبين السابقين STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES}تم تحميل حتى الان STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} حمل حتى الان STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}فصل STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}الخادم محمى. من فضلك ادخل كلمه المرور STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}الشركه محميه. من فضلك ادخل كلمه المرور # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}قائمة العملاء STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}شاهد STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}شركة جديدة # Network client list STR_NETWORK_CLIENTLIST_KICK :اطرد STR_NETWORK_CLIENTLIST_BAN :بان STR_NETWORK_CLIENTLIST_GIVE_MONEY :اعط اموال STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :تحدث مع الكل STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :تحدث لشركة STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :رسالة خاصة STR_NETWORK_SERVER :خادم STR_NETWORK_CLIENT :عميل STR_NETWORK_SPECTATORS :المشاهدين STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}ادخل رقم المبلغ الذى تود إعطائه # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}لا تحفظ كلمة المرور المدخلة STR_COMPANY_PASSWORD_OK :{BLACK}اعط الشركة كلمة المرور الجديدة STR_COMPANY_PASSWORD_CAPTION :{WHITE}كلمة مرور الشركة STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}كلمة مرور الشركة القياسية STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}استخدم كلمة مرور هذه الشركة كافتراضية للشركات الجديدة # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK} انضم STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK} انضم و العب بهذه الشركة STR_COMPANY_VIEW_PASSWORD :{BLACK}كلمة المرور STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}احمي شركتك بكلمة مرور خاصة لمنع الوصول الغير مسموح من اللاعبين الآخرين. STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}ادخل كلمة المرور # Network chat STR_NETWORK_CHAT_SEND :{BLACK}ارسل STR_NETWORK_CHAT_COMPANY_CAPTION :[فريق] STR_NETWORK_CHAT_CLIENT_CAPTION :[خاص] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[الكل]: STR_NETWORK_CHAT_COMPANY :[فريق]{STRING} : {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[فريق] الى {STRING} : {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[خاص] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[خاص] الى {STRING} : {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[الكل] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}ادخل نص للمحادثة # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}لايوجد أجهزة شبكة او الشبكة معطلة STR_NETWORK_ERROR_NOSERVER :{WHITE}لايوجد ألعاب شبكة STR_NETWORK_ERROR_NOCONNECTION :{WHITE}الخادم لم يجب على الطلب STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}لم يتم الربط بسبب عدم توافق NewGFR STR_NETWORK_ERROR_DESYNC :{WHITE}فشل تحديث البيانات STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}انقطع الاتصال بلعبة الشبكة STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}لايمكن تحميل اللعبة المخزنة STR_NETWORK_ERROR_SERVER_START :{WHITE}لايمكن بدء الخادم STR_NETWORK_ERROR_CLIENT_START :{WHITE}لايمكن الإتصال STR_NETWORK_ERROR_TIMEOUT :{WHITE}الاتصال رقم # {NUM}انهى الوقت المتاح للربط STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}حدث خطأ في البروتوكول و انقطع الاتصال STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}نسخة اللاعب غير مطابقة لنسخة الخادم STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}رقم سري خاطئ STR_NETWORK_ERROR_SERVER_FULL :{WHITE}الخادم ممتلئ STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}أنت ممنوع من هذا الخادم STR_NETWORK_ERROR_KICKED :{WHITE}لقد طردت من اللعبة STR_NETWORK_ERROR_CHEATER :{WHITE}الغش ليس مسموحا به في هذه اللعبة STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}أنت تقوم بإرسال العديد من الأوامر للخادم ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :خطاء عام STR_NETWORK_ERROR_CLIENT_DESYNC :خطأ في DESYNC STR_NETWORK_ERROR_CLIENT_SAVEGAME :لايمكن تحميل الخريطة STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :فقد الإتصال STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :خطاء في البروتكول STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :عدم توافق في NewGFR STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :غير مصرح STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :استلمت معلومات غريبة STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :اصدار خاطئ STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :الأسم مستخدم STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :رقم سري خاطئ STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :اسم الشركة خاطئ في الشبكة STR_NETWORK_ERROR_CLIENT_KICKED :طردت من الخادم STR_NETWORK_ERROR_CLIENT_CHEATER :كان يحاول استخدام سر للغش STR_NETWORK_ERROR_CLIENT_SERVER_FULL :خادم ممتلئ STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :كان يرسل الكثير من الاوامر ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}احتمال فقد الاتصال STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}اخر {NUM} ثواني لم تصل بيانات من السيرفر # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :اللعبة متوقفة ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :اللعبة مازالت متوقفة ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :اللعبة مازالت متوقفة ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :اللعبة متوقفة ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :اللعبة غير موقوفه ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :عدد اللاعبين غير كافي STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :ربط العملاء STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :يدوي ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :يغادر STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} قد انضم للعبة STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} انضم الى اللعبة (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} انضم الى الشركة رقم : {2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} انضم الى المشاهدين STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} قد بدأ شركة جديدة: (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} قد غادر اللعبة : - {2:STRING}- STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} قد غير اسمه / اسمها الى {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} اعطى شركتك : {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** انت اعطيت {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}اقفل الخادم الجلسة STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}يتم بدأ الخادم من جديد ... {} الرجاء الأنتظار # Content downloading window STR_CONTENT_TITLE :{WHITE}تنزيل المحتوى STR_CONTENT_TYPE_CAPTION :{BLACK} نوع STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK} نوع المحتوى STR_CONTENT_NAME_CAPTION :{BLACK} الاسم STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK} اسم المحتوى STR_CONTENT_MATRIX_TOOLTIP :{BLACK} اضغط على الخط لرؤية التفاصيل. {} اضغط على مربع الاختيار لتحميل. STR_CONTENT_SELECT_ALL_CAPTION :{BLACK} اختيار الكل STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK} تحميل كامل المحتوى STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK} اختر التحديث STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} ضع علامة على التحديثات للمحتويات الموجودة و التي سيتم تحميلها STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح الكل STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح: STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} ابدأ تحميل المحتويات المختارة STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER} حجم البيانات التي سيتم تحميلها: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER} معلومات المحتوى STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER} لم تختر هذا المحتوى لتحميل STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER} لقد اخترت هذا المحتوى ليتم تحميله STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER} هذا الدعم قد اختير للتحميل STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER} هذا المحتوى موجود لديك مسبقا STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}هذا المحتوى غير معروف و لا يمكت تحميله في OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}هذا استبدال للملف الموجود {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}الاسم: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER} النسخة: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}الوصف: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}عنوان الموقع: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}النوع: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}حجم التحميل: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER} اختير بسبب: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER} الاعتمادية: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER} الاسم الرمزي: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}بنيت OpenTTD بدون دعم "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}تحميل محتويات zlib غير ممكن # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :الرسوميات الاساسية STR_CONTENT_TYPE_NEWGRF :GRF جديدة STR_CONTENT_TYPE_AI :الذكاء الصناعي STR_CONTENT_TYPE_AI_LIBRARY :مكتبة الذكاء الصناعي STR_CONTENT_TYPE_SCENARIO :سناريو STR_CONTENT_TYPE_HEIGHTMAP :خارطة المرتفعات STR_CONTENT_TYPE_BASE_SOUNDS :الاصوات الاساسية STR_CONTENT_TYPE_BASE_MUSIC :الموسيقى الاساسية # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}يتم تحميل المحتوى... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}يتم طلب الملفات ... STR_CONTENT_DOWNLOAD_FILE :{WHITE}يتم تحميل {STRING} - {NUM} من {NUM} STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}انتهى التحميل STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} من {BYTES} {NUM} % # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}لم يتم الربط مع خادم المحتوى STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}فشل التحميل... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... فقد الاتصال STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... لا يمكن الكتابة على الملف STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}لم يتمكن من فك ضغط الملف المحمل STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}رسومات مفقودة STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}تحتاج اللعبة الى رسومات و لم يتم التعرف على اي منها. هل قمت يتحميل الرسومات و تنصيبها؟ STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}نعم, حمل الرسومات STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}لا, اغلق اللعبة # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}خيارات الشفافية STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}بدل شفافية اسماء المحطات. مفتاح كنترول للاغلاق. STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}بدل الشفافية للشجر. مفتاح كنترول للإغلاق. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}بدل الشفافية للمباني. مفتاح كنترول للاغلاق. STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}بدل الشفافية للمصانع. مفتاح كنترول للاغلاق. STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}بدل الشفافية للمحطات و ملحقاتها. مفتاح كنترول للاغلاق. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK} بدل الشفافية للجسور. مفتاح كنترول للاغلاق. STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}بدل بين الشفافية للعلامات مثل المنارات الضوئية و هواائيات الارسال. مفتاح كنترول لالغلاق. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK} غير شفافية سكك الحديد. مفتاح كنترول للاغلاق. STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}غير الشفافية لنسبة التحميل. مفتاح كنترول للاغلاق. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}اخفاء الاجرام تماما بدلا من الشفافية # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}وضح منطقة التغطية STR_STATION_BUILD_COVERAGE_OFF :{BLACK}غلق STR_STATION_BUILD_COVERAGE_ON :{BLACK}فتح STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}لا توضح منطقة التغطية للموقح المقترح STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}وضح منطقة التغطيةللموقع المقترح STR_STATION_BUILD_ACCEPTS_CARGO :{GOLD}{CARGO_LIST}{BLACK}يقبل: STR_STATION_BUILD_SUPPLIES_CARGO :{GOLD}{CARGO_LIST}{BLACK}الموارد: # Join station window STR_JOIN_STATION_CAPTION :{WHITE}اربط المحطات STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW} بناء محطة مفصلة STR_JOIN_WAYPOINT_CAPTION :{WHITE}اربط نقطة العبور STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW} ابني نقطة عبور مستقلة # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :بناء السكك الحديدية STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :بناء سكة القطار الكهربائية STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :بناء السكة الاحادية STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :بناء السكة الممغنطة STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}بناء سكة حديد STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}بناء سكة القطار باستخدام البناء التلقائي STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}بناء ورشة قطارات (لصيانة و شراء القطارات). STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}غير السكة الى نقطة عبور STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}بناء محطة قطار. مفتاح كنترول يسمح بضم المحطات STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}بناء إشارات السكك الحديدية. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}بناء جسر قطارات STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}بناء نفق قطار STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}تناوب بناء/ازالة سكك واشارات القطارات STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}حول / طور سكة القطار STR_RAIL_NAME_RAILROAD :سكة حديد STR_RAIL_NAME_ELRAIL :سكة حديد كهربائية STR_RAIL_NAME_MONORAIL :سكة حديد احادية STR_RAIL_NAME_MAGLEV :سكة حديد ممغنطة # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}اتجاة ورشة الصيانة STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاة ورشة صيانة القطارات # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}نقطة عبور STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK} اختر نوع نقطة العبور # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}اختر محطة القطار STR_STATION_BUILD_ORIENTATION :{BLACK}الاتجاة STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاة محطة القطار STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}عدد المسارات STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}اختر عدد المسارات للمحطة STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}طول المحطة STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}اختر طول المحطة STR_STATION_BUILD_DRAG_DROP :{BLACK}أسحب وأفلت STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}بناء محطة بطريقة السحب والإفلات STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK} اختر فئة المحطات لعرضها STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}أختر نوع المحطة لبنائها STR_STATION_CLASS_DFLT :المحطة القياسية STR_STATION_CLASS_WAYP :نقطة عبور # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}اختيار الإشارات STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}اشارة اقفال (بالاعلام){}هذة الاشارة الأساسية. تسمح بتواجد قطار واحد في القسم و الوقت الواحد STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}اشارة دخول (بالاعلام){} تكون خضراء عندما توجد اشارة خضراء في اشارات الخروج التالية لها. والا تكون حمراء. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}اشارة خروج (بالاعلام) {}تعمل مثل اشارة الاقفال, لكن يجب تنشيط الوضع الصحيح في الدخول و الاشارة المزدوجة. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}اشارة مزدوجة (بالاعلام) {} الاشارة المزدوجة تعمل للدخول و الخروج. فهي تسمح لك بعمل شجرة كبيرة من الاشارات STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}اشارة طريق (بالاعلام){}تسمح بمرور اكثر من قطارفي القسم التالي اذا كان القطار يستطيع الوصول الى نقطة آمنة. يمكن تخطي الاشارة بالاتجاهين. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}اشارة الاتجاة الواحد (بالاعلام){}اشارة طريق تسمح باكثر من قطار يدخل في القسم التالي في نفس الوقت, اذا كان القطار يستطيع الوصول الى نقطة آمنة. لا يمكن تخطي اشارة الاتجاة الواحد من الخلف. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}اشارة اقفال (كهربائية){}هذة الاشارة الأساسية. تسمح بتواجد قطار واحد في القسم و الوقت الواحد STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}اشارة دخول (كهربائية){} تكون خضراء عندما توجد اشارة خضراء في اشارات الخروج التالية لها. والا تكون حمراء. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}اشارة خروج (كهربائية) {}تعمل مثل اشارة الاقفال, لكن يجب تنشيط الوضع الصحيح في الدخول و الاشارة المزدوجة. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}اشارة مزدوجة (كهربائية) {} الاشارة المزدوجة تعمل للدخول و الخروج. فهي تسمح لك بعمل شجرة كبيرة من الاشارات. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}اشارة طريق(كهربائية){}تسمح بمروراكثرمن قطارفي القسم التالي اذا كان القطار يستطيع الوصول الى نقطة آمنة. يمكن تخطي الاشارة بالاتجاهين. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}اشارة الاتجاة الواحد (كهربائية){}اشارة طريق تسمح باكثر من قطار يدخل في القسم التالي في نفس الوقت, اذا كان القطار يستطيع الوصول الى نقطة آمنة. لا يمكن تخطي اشارة الاتجاة الواحد من الخلف. STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK} تغيير الاشارات {} عند الاختيار, سوف يتم تغيير الاشارة الى النوع المختار. الضغط على مفتاح كنترول سوف يبدل بين انواع الاشارات. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}سرعة السحب STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}تقليل سرعة السحب STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}زيادة سرعة السحب # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}اختر جسر السكة STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}اختر الجسر المناسب STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}بناء الجسور - اختر الجسر المفضل لديك لبنائة STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :تعليق, حديدي STR_BRIDGE_NAME_GIRDER_STEEL :العارضة, حديدية STR_BRIDGE_NAME_CANTILEVER_STEEL :الحامل, حديدي STR_BRIDGE_NAME_SUSPENSION_CONCRETE :تعليق, اسمنتي STR_BRIDGE_NAME_WOODEN :خشبي STR_BRIDGE_NAME_CONCRETE :اسمنتي STR_BRIDGE_NAME_TUBULAR_STEEL :انبوبي, حديدي STR_BRIDGE_TUBULAR_SILICON :أنبوبي،سيلكون # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}بناء الطرق STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}بناء ترام STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}وحدة بناء الطرق STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}بناء سكة ترام STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}بناء الطرق باستخدام النظام الآلي STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}بناء سكة القطار باستخدام النظام الآلي STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}بناء ورشة صيانة لعربات الطرق (لشراء و صيانة العربات). STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}بناء ورشة لصيانة عربات الترام (لشراء و صيانة عربات الترام). STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}بناء محطة باصات STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}بناء محطة ركاب ترام. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}بناء محطة تحميل عربات. مفتاح كنترول يسمح بمجاورة المحطات. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}بناء محطة ترام. كنترول يسمح بمجاورة المحطات. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}فعل / عطل الطرق موحدة الاتجاه STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}بناء جسر لعربات الطريق. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}بناء جسر ترام. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}بناء نفق لعربات الطريق. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}بناء نفق ترام STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}بدل بناء/إزالة الطرق STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}بدل بناء / ازالة طرق الترام # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}اتجاه ورشة الصيانة STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}اختر اتجاة ورشة صيانة العربات STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}اتجاة مستودع الصيانة لترام STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}اختر اتجاة مستودع الترام # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}اتجاة محطة الباصات STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاة محطة الباصات STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}اتجاة محطة التحميل للعربات STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاة محطة تحميل العربات STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}اتجاة محطة الترام STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاة محطة ركاب الترام STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}اتجاة محطة الترام للبضائع STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاة محطة نقل البضائع لترام # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}بناء ممرات مائيه STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}ممرات مائية STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}بناء قناة STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK} بناء قفل STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}بناء حوض سفن - لشراء/ بيع/ صيانة السفن - STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}بناء مرفء سفن. مفتاح كنترول يسمح بضم المحطات STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}وضع عوامة - يمكن استخدامها نقطة عبور STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}بناء قناة مائية STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}عرف منطقة البحر.{} انشأ قناة, يجب الضغط المتواصل على مفتاح كنترول عند مستوى البحر والا طمرت المياة الاجزاء المجاورة STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}انشاء انهار # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}اتجاه حوض الصيانة STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}اختر اتجاه حوض صيانة السفن # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}مرفء # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}مطارات STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}بناء مطار. مفتاح كنترول يسمح بضم المحطات # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}اختر المطار STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}اختر حجم / نوع المطار STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}درجة المطار STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}نمط {NUM} STR_AIRPORT_SMALL :صغير STR_AIRPORT_CITY :مدينة STR_AIRPORT_METRO :مطار متروبوليتان STR_AIRPORT_INTERNATIONAL :مطار دولي STR_AIRPORT_COMMUTER :مطار محلي STR_AIRPORT_INTERCONTINENTAL :مطار قاري STR_AIRPORT_HELIPORT :مهبط طائرة عمودية STR_AIRPORT_HELIDEPOT :حظيرة طائرة عمودية STR_AIRPORT_HELISTATION :محطة طيران عمودي STR_AIRPORT_CLASS_SMALL :مطار صغير STR_AIRPORT_CLASS_LARGE :مطارات كبيرة STR_AIRPORT_CLASS_HUB :محور مطارات STR_AIRPORT_CLASS_HELIPORTS :مطار طيران عمودي STR_STATION_BUILD_NOISE :{BLACK} الضوضاء المتولدة: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}التضاريس STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}خفض ركن الارض STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}رفع ركن الارض STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}مستوى الارض STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}شراء أرض للاستخدام المستقبلي. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}اختيار الاجسام STR_OBJECT_BUILD_TOOLTIP :{BLACK}اختر جسم لبنائة STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}اختر صنف الكائن للبناء STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}عرض الجسم STR_OBJECT_BUILD_SIZE :{BLACK}حجم: {GOLD}{NUM} x {NUM} مربع STR_OBJECT_CLASS_LTHS :مناراة ضوئية STR_OBJECT_CLASS_TRNS :النواقل # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}اشجار STR_PLANT_TREE_TOOLTIP :{BLACK} اختر نوع الشجر لزراعتة, اذا المربع يحتوي على اشجار فهذا الامر يضيف المزيد STR_TREES_RANDOM_TYPE :{BLACK}شجر عشوائي STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}ضع شجر عشوائي STR_TREES_RANDOM_TREES_BUTTON :{BLACK}زراعة اشجار عشوائيا STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}زراعة اشجار عشوائيا في المنظر # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}بناء المسطحات الأرضية STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}اضافة مناطق صخرية على المنظر STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}عرف منطقة صحراوية. {}اضغط بشكل متواصل مفتاح كنترول لأزالتها STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}زيادة ارتفاع و انخفاض المسطحات الأرضية STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}انقاص ارتفاع و انخفاض المسطحات الأرضية STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}انشاء مسطحات عشوائية STR_TERRAFORM_SE_NEW_WORLD :{BLACK} انشاء خريطة جديدة STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}اعادة المسطحات الأرضية الى وضعها السابق STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}ازالة ممتلكات اللاعبين من الخريطة STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}اعادة المسطحات الأرضية الى وضعها السابق STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}هل انت متأكد من ازالة ممتلكات اللاعبين من الخريطة # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}بناء المدن STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}مدينة جديدة STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}انشاء مدينة جديدة STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}مدينة عشوائية STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}بناء مدينة في مكان عشوائي STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}العديد من المدن العشوائية STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}غطي الخريطة عشوائيا بمدن STR_FOUND_TOWN_NAME_TITLE :{YELLOW}اسم المدينة STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}ادخل اسم المدينة STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}اضغط هنا لادخال اسم المدينة STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}اسم عشوائي STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}ولد اسم عشوائي جديد STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}حجم المدينة: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}صغير STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}وسط STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}كبير STR_FOUND_TOWN_SIZE_RANDOM :{BLACK} عشوائي STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}حدد حجم المدينه STR_FOUND_TOWN_CITY :{BLACK}مدينة STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK} المدن الكبيرة تنمو اسرع من المدن العادية. {} كلما كانت اكبر عند انشائها, بالاعتماد على الاعدادات. STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW} تصميم طرق المدينة STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK} اختر تصميم الطرق لهذه المدينة STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK} اصلي STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK} طرق افضل STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK} نمط 2 * 2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK} نمط 3 * 3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK} عشوائي # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}مول بناء مصنع جديد STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}اختر المصنع المناسب من القائمة STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :الكثير من المصانع STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}غطي الخريطة عشوائيا بالمصانع STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}التكلفة: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK} الاحتمالية STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}بناء STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}مول # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}سلسلة مصانع لـ {STRING} مصنع STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}سلسلة مصانع لـ {STRING} بضاعة STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}تكوين مصانع STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}قبول المصانع STR_INDUSTRY_CARGOES_HOUSES :{WHITE}مباني STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}اضغط على المصنع لتعرف من يزودة بالمؤن ومن يستهلك منتجاتة STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}اعرض على البضائع لتعرف المنتجين و المستهلكين لها STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}اعرض سلسلة STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}اعرض المصانع التي تمد و تقبل البضائع STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}اربط بالخريطة المصغرة STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}اعرض المصانع المختارة في الخرائط المصغرة ايضا. # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}معلومات ارض STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK} تكلفة الازالة : {LTBLUE} غير متاح STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}تكلفة الازالة : {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK} الدخل عند للتجديد: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :غير متاح STR_LAND_AREA_INFORMATION_OWNER :{BLACK}المالك: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}مالك الطريق: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالك طريق الترام: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}مالك سكة الحديد: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}السلطة المحلية: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :فارغ STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}الأحداثيات: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}بني: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK} فئة المحطة: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع المحطة: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}فئة المطار: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}اسم المطار: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}اسم مربع المطار: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}الشحنة المقبولة: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA} /8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}حدود سرعة سكة الحديد: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :صخور STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :ارض جبلية STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :ارض جرداء STR_LAI_CLEAR_DESCRIPTION_GRASS :عشب STR_LAI_CLEAR_DESCRIPTION_FIELDS :حقول STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :ارض ثلجية STR_LAI_CLEAR_DESCRIPTION_DESERT :صحراء STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} مسار STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} مسار مع اشارة اغلاق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} مسار مع اشارة مبتدئة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} سكة حديد مع اشارة خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} سكة حديد مع اشارة مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} سكة حديد مع اشارة طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة اتجاة واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} سكة حديد مع اشارة توقف و اشارة مبتدئة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} سكة حديد مع اشارة توقف و خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} سكة حديد مع اشارة توقف و مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} سكة حديد مع اشارة اغلاق و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة اغلاق و طريق باتجاة واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و اشارة خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و اشارة مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و اتجاة و احد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} سكة حديد مع اشارة خروج و مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} سكة حديد مع اشارة خروج و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة خروج و اتجاة واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} سكة حديد مع اشارة مزدوجة و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة مزدوجة و طريق باتجاه واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة طريق و اتجاة و احد STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} مستودع صيانة قطارات STR_LAI_ROAD_DESCRIPTION_ROAD :طريق STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :طريق مضاء STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :طريق مرصوف بالشجر STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :ورشة صيانة العربات STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :تقاطع طريق مع سكة قطار STR_LAI_ROAD_DESCRIPTION_TRAMWAY :الترام # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (تحت الانشاء) STR_LAI_TREE_NAME_TREES :اشجار STR_LAI_TREE_NAME_RAINFOREST :غابات ماطرة STR_LAI_TREE_NAME_CACTUS_PLANTS :اشجار الصبار STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :محطة قطارات STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :حظيرة طائرات STR_LAI_STATION_DESCRIPTION_AIRPORT :مطار STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :محطة تحميل عربات STR_LAI_STATION_DESCRIPTION_BUS_STATION :محطة باصات STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :مرفء سفن STR_LAI_STATION_DESCRIPTION_BUOY :عوامة STR_LAI_STATION_DESCRIPTION_WAYPOINT :نقطة عبور STR_LAI_WATER_DESCRIPTION_WATER :مياة STR_LAI_WATER_DESCRIPTION_CANAL :قناة STR_LAI_WATER_DESCRIPTION_LOCK :قفل STR_LAI_WATER_DESCRIPTION_RIVER :نهر STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :ساحل او ضفة نهر STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :حوض صيانة للسفن # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :نفق سكة القطار STR_LAI_TUNNEL_DESCRIPTION_ROAD :نفق طريق عربات STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :جسر قطارات بتعليق حديدي STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :جسر قطارات بعوارض حديدية STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :جسر قطار بحوامل حديدية STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :جسر قطار بتعليق اسمنتي من الغابات الماطرة STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :جسر قطار خشبي STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :جسر قطار اسمنتي STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :جسر قطار انبوبي STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :جسر عربات بتعليق حديدي STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :جسر عربات بعوارض حديدية STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :جسر عربات بحوامل حديدية STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :جسر عربات بتعليق اسمنتي من الغابات الماطرة STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :جسر عربات خشبي STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :جسر عربات اسمنتي STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :جسر عربات انبوبي STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :قناة مائية STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :برج ارسال STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :منارة ضوئية STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :مبنى الشركة الرئيسي STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملوكة لشركة # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2013 فريق النسخة المفتوحة # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة STR_SAVELOAD_LOAD_CAPTION :{WHITE}فتح STR_SAVELOAD_SAVE_SCENARIO :{WHITE}حفظ خريطة STR_SAVELOAD_LOAD_SCENARIO :{WHITE}فتح خريطة STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}حمل خريطة مرتفعات STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}حفظ خريطة مرتفعات مصورة STR_SAVELOAD_HOME_BUTTON :{BLACK}اضغط هنا لتوجة الى دليل الحفظ/الفتح القياسي STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} متاح STR_SAVELOAD_LIST_TOOLTIP :{BLACK}قائمة بالاقراص - المجلدات - الملفات المخزنة STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}الاسم المختار حاليا لحفظ اللعبة STR_SAVELOAD_DELETE_BUTTON :{BLACK}حذف STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}حذف اللعبة المحفوظة حاليا STR_SAVELOAD_SAVE_BUTTON :{BLACK}حفظ STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}احفظ اللعبة الحالية، بواسطة الاسم المختار STR_SAVELOAD_LOAD_BUTTON :{BLACK}تحميل STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}تحميل اللعبة المختارة STR_SAVELOAD_DETAIL_CAPTION :{BLACK}تفاصيل اللعبة STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}لا توجد معلومات متاحة STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}اضافات جديدة: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}ادخل اسم الحفظ للعبة # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}مولد الخريطة STR_MAPGEN_MAPSIZE :{BLACK}حجم الخريطة STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}عدد المدن: STR_MAPGEN_DATE :{BLACK}التاريخ: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}عدد المصانع: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK} ارتفاع خط الثلج STR_MAPGEN_SNOW_LINE_UP :{BLACK}ارفع خط الثلج مستوى واحد STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}خفض خط الثلج مستوى واحد STR_MAPGEN_RANDOM_SEED :{BLACK}مرجع عشوائي STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}اضغط لادخال مرجع عشوائي STR_MAPGEN_RANDOM :{BLACK}عشوائي STR_MAPGEN_RANDOM_HELP :{BLACK}غير المرجع العشوائي لتوليد تضاريس الخريطة STR_MAPGEN_LAND_GENERATOR :{BLACK}مولد الخريطة: STR_MAPGEN_TREE_PLACER :{BLACK} لوغاريثم الشجر: STR_MAPGEN_TERRAIN_TYPE :{BLACK} نوع التضاريس STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}مستوى البحر STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}انهار: STR_MAPGEN_SMOOTHNESS :{BLACK} النعومة: STR_MAPGEN_VARIETY :{BLACK}توزيع التنوع: STR_MAPGEN_GENERATE :{WHITE}ولد # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK} حدود الخريطة: STR_MAPGEN_NORTHWEST :{BLACK} الشمال الغربي STR_MAPGEN_NORTHEAST :{BLACK} الشمال الشرقي STR_MAPGEN_SOUTHEAST :{BLACK} الجنوب الشرقي STR_MAPGEN_SOUTHWEST :{BLACK} الجنوب الغربي STR_MAPGEN_BORDER_FREEFORM :{BLACK} حر STR_MAPGEN_BORDER_WATER :{BLACK} ماء STR_MAPGEN_BORDER_RANDOM :{BLACK} عشوائي STR_MAPGEN_BORDER_RANDOMIZE :{BLACK} عشوائيا STR_MAPGEN_BORDER_MANUAL :{BLACK} يدوي STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}اتجاة خريطة المرتفعات: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}اسم خريطة المرتفعات: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}الحجم: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}ادخل مرجع عشوائي STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}غير مستوى خط الثلج STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}غير سنة البداية # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}نوع الخريطة STR_SE_MAPGEN_FLAT_WORLD :{WHITE}سطح مسطح مستوي STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}توليد سطح مسطح STR_SE_MAPGEN_RANDOM_LAND :{WHITE}ارض عشوائية STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}ارتفاع الأرض المنبسطة STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}حرك ارتفاع الأرض المنبسطة واحد للاسفل STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}حرك ارتفاع الأرض المنبسطة واحد للأعلى STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}غير ارتفاع الارض المنبسطة # Map generation progress STR_GENERATION_WORLD :{WHITE}توليد الخريطة STR_GENERATION_ABORT :{BLACK}ألغي STR_GENERATION_ABORT_CAPTION :{WHITE}ايقاف توليد الخريطة STR_GENERATION_ABORT_MESSAGE :{YELLOW}هل انت متأكد بأنك ترغب في ايقاف توليد الخريطة؟ STR_GENERATION_PROGRESS :{WHITE}{NUM}% انتهى STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK} مولد الخريطة STR_GENERATION_RIVER_GENERATION :{BLACK}مولد الانهار STR_GENERATION_TREE_GENERATION :{BLACK} مولد الشجر STR_GENERATION_OBJECT_GENERATION :{BLACK}صانع الخامات STR_GENERATION_CLEARING_TILES :{BLACK}مولد المناطق الخشنة والصخرية STR_GENERATION_SETTINGUP_GAME :{BLACK}تجهيز لعبة STR_GENERATION_PREPARING_TILELOOP :{BLACK} تشغيل المتكررة STR_GENERATION_PREPARING_GAME :{BLACK}يُجَهِز اللعبه # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}إعدادات اﻹضافات STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}تفاصيل الاضافات الجديدة STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}اضافة جديدة فعالة STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}ملفات غير فعالة لاضافات جديدة STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}اختر مجموعة الخواص المحددة مسبقا: STR_NEWGRF_FILTER_TITLE :{ORANGE}مُرَشِح: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}فتح مجموعة الاعدادات المسجلة STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}حفظ مجموعة الاعدادات STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}حفظ القائمة الحالية كمجموعة اعدادات STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}ادخل اسم للمجموعة المسجلة STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}حذف مجموعة الاعدادات المسجلة STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}حذف مجموعة الاعدادات الحالية STR_NEWGRF_SETTINGS_ADD :{BLACK} اضف STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}اضف ملف NewGFR المختار الى اعداداتك الخاصة STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}اعادة كشف للملفات STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}تحديث قائمة NewGRF المتاحة STR_NEWGRF_SETTINGS_REMOVE :{BLACK}ازالة STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}ازالة ملف NewGRF من القائمة STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}تحريك للأعلى STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}حرك الملف المختار الى الأعلى STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}تحريك للأسفل STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}حرك الملف المختار الى الاسفل في القائمة STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}قائمة ملفات NewGRF المركبة. اضغط على الملف لتغييرة. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}اضبط الاعدادات STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}فتح/اغلاق اللوحة STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}فتح / اغلاق لوحة NewGRF المختارة.{} افعل هذا عندما تكون الرسومات الجديدة وردية اللون. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}نفذ التغييرات STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK} جد المحتوى المفقود على الشبكة STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK} لتأكد ما اذا كان بالامكان ايجاد المحتوى المفقود او الناقص عن طريق الشبكة العنكبوتية STR_NEWGRF_SETTINGS_FILENAME :{BLACK}ام الملف: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRFمعرف : {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK} نسخة: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}اقل نسخة متوافقة: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK} : مجموع ام دي 5 {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK} صحيفة : {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}الاعدادات: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}لا يوجد معلومات متاحة STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}لم يتم العثور على الملف المقترن STR_NEWGRF_SETTINGS_DISABLED :{RED}معطل STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}متعارض مع هذا اللإصدار من Openttd # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}غير خصائص الاضافات الجديدة STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}اغلق STR_NEWGRF_PARAMETERS_RESET :{BLACK}استرجاع القياسي STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}استرجاع جميع الخصائص لقيمها الاصلية STR_NEWGRF_PARAMETERS_DEFAULT_NAME :نمط {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}عدد الانماط: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}نظرة فاحصة - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}الاساس STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}تفحص مجسم المنظور الاساسي STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} على {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :جسم STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :نوع سكة القطار STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}متغير الاضافات الجديدة +60 * نمط (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}موائمة صورة العفريتة {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}العفريتة التالية STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نابع للعفريتة الطبيعية التالية، تجاوز اي عفريتة موقوفة/ مصبوغة/مخطوطة و انهي المتاعة في النهاية. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}اذهب الى العفريتة STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}اذهب الى العفريتة المعطاة, اذا لم تكن طبيعية تجاوزها الى العفريتة الطبيعية التالية. STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}العفريتة السابقة. STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نابع للعفريتة الطبيعية التالية، تجاوز اي عفريتة موقوفة/ مصبوغة/مخطوطة و انهي في البداية. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}عرض العفريتة المختارة حاليا. يتم تجاهل الموائمة عند رسم هذا العفريت. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}حرك العفريتة في الجوار، غير الاحداثيات س ، ص. STR_SPRITE_ALIGNER_OFFSETS :{BLACK}احداث س: {NUM}، احداث ص: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}اختر عفريتة STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}اختر عفريتة من اي مكان في الشاشة. STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}اذهب الى العفريتة. # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED} تحذير: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED} خطأ: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED} خطأ قاتل: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}حدث خظأ في NewGRF لا يمكن اصلاحة: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} لن يعمل مع اصدار الباتش المسجل في النسخة المفتوحة STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} يعمل مع {STRING} اصدار من TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} مصمم ليستخدم مع {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :قيم غير متوافقة {1:STRING} : قيم {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} يجب ان يتم تحميلة قبل {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} يجب ان يتم تحميلة بعد {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} يتطلب نسخة {STRING} من النسخة المفتوحة او احدث . STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :تم تصميم ملف GRF بغرض الترجمة STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :العديد من NewGRF تم تحميلها STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :تحميل {1:STRING}كملف ثابت مع NewGRF {STRING}قد يتسبب بمشكلة توافق. STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} يحتوي على خصائص غير صالحة. جميع الخصائص الغير صالحة سوف يشار لها بعلامة استفهام حمراء. STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}ملف الرسوم المستخدم حاليا يفتقد لبعض الرسوم الاساسية.{}الرجاء حدث ملف الرسوم. STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}تم تعطيلة بواسطة{STRING} # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}تحذير! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}انت على وشك ان تحدث تغييرات في لعبة مفتوحه. قد يتسبب هذا في حدوث إنهيار.{} امتأكد من رغبتك فى هذا؟ STR_NEWGRF_DUPLICATE_GRFID :{WHITE}لا يمكن اضافة الملف: نسخة سابقة منه مضافة STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}الملف المطابق غير موجود (ملف متوافق من NewGRFحمل) STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}تم تحميل ملف GFR مطابق بدلا من المفقود STR_NEWGRF_DISABLED_WARNING :{WHITE}تم تعطيل ملف GRF المفقود STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}ملف NewGRF مفقود STR_NEWGRF_UNPAUSE_WARNING :{WHITE}عدم الايقاف قد يتسبب في تعطل النسخة المفتوحة. لا تنشأ ملف اخطاء لاالخطاء التالية. {} هل تود بالفعل اكمال اللعب؟ # NewGRF status STR_NEWGRF_LIST_NONE :لا يوجد STR_NEWGRF_LIST_ALL_FOUND :كل الملفات موجودة STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}يوجد ملفات متوافقة STR_NEWGRF_LIST_MISSING :{RED}ملفات مفقودة # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}حركات NewGFR '{0:STRING}'قد تتسبب في اخطاء او توقف للعبة STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}غير حالة العربات المكهربة ل'{1:ENGINE}' عندما لا تكون داخل ورشة الصيانة. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}يغير طول العربة من '{1:ENGINE}' عندما لا تكون داخل المستودع STR_BROKEN_VEHICLE_LENGTH :{WHITE}قطار '{VEHICLE}' المملوك ل'{COMPANY}' لدية طول غير مسرح . غالبا نتج عن مشكلة في NewGRF. اللعبة قد تتوقف او تتعطل . STR_NEWGRF_BUGGY :{WHITE}الرسوميات الجديدة '{0:STRING}' تعطي معلومات غير صحيحة. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}التكلفة \ السعة ل '{1:ENGINE}' تختلف ما بين قائمة الشراء و مابعد البناء. قد يتسبب هذا في فشل التبديل الذاتي. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' تسبب بدورة غير منتهية في نداء الانتاج STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}استدعاء {1:HEX} اعاد قيمة غير معروفة {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<حمولة غير صالحة> STR_NEWGRF_INVALID_CARGO_ABBREV :؟؟ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} لـ<حمولة غير صالحة> STR_NEWGRF_INVALID_ENGINE :<موديل العربة غير صالح> STR_NEWGRF_INVALID_INDUSTRYTYPE :<المصنع غير صالح> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}بحث اضافات جديدة STR_NEWGRF_SCAN_MESSAGE :{BLACK}تحديث الاضافات. وقت البحث يعتمدعلى عدد الاضافات. من الممكن ان يستغرق وقتا اطول... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM}الاضافات الجديدة من {NUM}مجموع الاضافات STR_NEWGRF_SCAN_ARCHIVES :البحث للارشيفات # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}قائمة العلامات - {COMMA} علامة STR_SIGN_LIST_MATCH_CASE :{BLACK}طابق الحالة STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}اظهر الحالات المتشابهه عند مقارنة اسماء العلامات بالفلاتر # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}عدل نص العلامة STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}توجة الى العلامة التالية STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}توجة الى الاشارة السابقة STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}ادخل اسم العلامة # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}مدن/ بلدات STR_TOWN_DIRECTORY_NONE :{ORANGE}-بدون- STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ) {COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}اسم المدينة - اضغط على الاسم لتوسيط الشاشة عليها. اضغط + كنترول لفتح شاشة عرض جديدة للضاحية. STR_TOWN_POPULATION :{BLACK}سكان العالم: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} - مدينة - STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}السكان: {ORANGE}{COMMA}{BLACK} المنازل: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}الركاب الشهر الماضي: {ORANGE}{COMMA}{BLACK} الأقصى: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}طرود البريد الشهر الماضي: {ORANGE}{COMMA}{BLACK} الأقصى: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK} نمو المدينة يتطلب بضائع STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} مطلوب STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK}مطلوب في الشتاء STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} تم توصيلة STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (مازال مطلوب) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (تم توصيلة) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}المدينة تنمو كل {ORANGE}{COMMA}{BLACK} يوم STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}المدينة تنمو كل {ORANGE}{COMMA}{BLACK} يوم{} (مول) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}المدينة {RED}لا{BLACK} تنمو STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}حدود الضوضاء داخل المدن: {ORANGE}{COMMA}{BLACK} القصوى: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}وسط الشاشة الاساسية على موقع المدينة STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}بلدية المدينة STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}عرض معلومات البلدية STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}غير إسم المدينه STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}توسيع المدينة STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}ازد حجم المدينه STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}حذف STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}حذف المدينة كليا STR_TOWN_VIEW_RENAME_TOWN_BUTTON :اعادة تسمية # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}بلدية {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}تقييم اداء الشركات STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}الخيارات المتاحة STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK} قائمة بما يمكن تنفيذة في هذه المدينة - اضغط على الخيار لمزيد من التفاصيل STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK} نفذ STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}نفذ الخيار المبين في القائمة اعلاة STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :حملة دعائية صغيرة STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :حملة دعائية متوسطة STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :حملة دعائية كبيرة STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :مول صيانة عامة للطرق STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :بناء مجسم لمالك الشركة STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :مول انشاء مباني جديدة STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :اشتري حقوق النقل الحصرية للمدينة STR_LOCAL_AUTHORITY_ACTION_BRIBE :ارشي السلطات المحلية STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}البدء في حملة دعائية صغيرة للشركة, لكي تجلب ركاب و بضائع اكثر لمحطاتك. {} التكلفة: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW} البدء في حملة دعائية متوسطة للشركة, لكي تجلب ركاب و بضائع اكثر لمحطاتك. {} التكلفة: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}البدء في حملة دعائية كبيرة للشركة, لكي تجلب ركاب و بضائع اكثر لمحطاتك. {} التكلفة: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW} مول اعمال الصيانة للطرق و الشوارع بالمدينة. يتسبب في تعطيل حركة النقل داخل المدينة لمدة قد تصل ستة اشهر. {} التكلفة {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW} بناء مجسم تقديرا للشركة في اعمال النقل. {} التكلفة {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW} مول بناء مباني تجارية جديدة في المدينة. {}التكلفة {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} اشتري حقوق النقل لسنة كاملة في هذة المدينة و المصانع التابعة لها. البلدية سوف تسمح للركاب و البضائع باستخدام محطاتك فقط. {}التكلفة: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} ارشي السلطات المحلية لزيادة كفائة الشركة. هناك عقاب شديد اذا ما اكتشفت الرشوة. {} التكلفة: {CURRENCY_LONG} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :اسئله STR_GOAL_QUESTION_CAPTION_INFORMATION :معلومات STR_GOAL_QUESTION_CAPTION_WARNING :تحذير STR_GOAL_QUESTION_CAPTION_ERROR :خطا ### Start of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}العروض STR_SUBSIDIES_OFFERED_TITLE :{BLACK}العروض المتاحة للخدمة: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} من {STRING} الى {STRING}{YELLOW} - حتى {DATE_SHORT} - STR_SUBSIDIES_NONE :{ORANGE}بدون STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}العروض المأخوذة STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} من {STRING} الى {STRING}{YELLOW} - {COMPANY}{YELLOW}, حتى {DATE_SHORT}- STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}اضغط على الخدمة لتوسيط الخريطة على المصنع/المدينة. اضغط + كنترول لفتح شاشة عرض جديدة للمدينة. # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}اسم المحطة - اضغط على اسم المحطة لتوسيطها في الشاشة. اضغط + كنترول لفتح شاشة عرض جديدة بمنطقة المحطة. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}اضغط بشكل متواصل على مفتاح كنترول لاختيار اكثر من وحدة STR_STATION_LIST_CAPTION :{WHITE}محطات شركة {COMPANY} - {COMMA} محطة STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- بدون - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}اختر جميع المرافق STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}اختر كل انواع الشحن (حتى غير المنتظرة( STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}لا يوجد اي شحنة منتظرة # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}انتظار: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} نهاية الطريق في {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}يستقبل STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}عرض لائحة بالبضائع المقبولة STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}يقبل: {WHITE}{CARGO_LIST} STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}معدل النقل STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}اظهار معدل النقل للمحطة STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}التقييم المحلي لخدمات النقل: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING} :{YELLOW}{STRING} ) {COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :منعدم STR_CARGO_RATING_VERY_POOR :ضعيف جدا STR_CARGO_RATING_POOR :ضعيف STR_CARGO_RATING_MEDIOCRE :مقبول STR_CARGO_RATING_GOOD :جيد STR_CARGO_RATING_VERY_GOOD :جيد جدا STR_CARGO_RATING_EXCELLENT :ممتاز STR_CARGO_RATING_OUTSTANDING :خارق ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}وسط الشاشة على موقع المحطة STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}غير اسم المحطة STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK} عرض جميع القطارات المرتبطة بهذه المحطة STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK} عرض جميع العربات المرتبطة بهذه المحطة STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK} عرض جميع القطارات المرتبطة بهذه المحطة STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}عرض جميع السفن المرتبطة بهذا المرفئ STR_STATION_VIEW_RENAME_STATION_CAPTION :اعادة تسمية المحطة # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK} ركز شاشة العرض على نقطة العبور STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}غير اسم نقطة العبور STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK} ضع العوامة في مركز شاشة العرض STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK} غير اسم العومة STR_EDIT_WAYPOINT_NAME :{WHITE}عدل اسم نقطة العبور # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} {BLACK} {COMPANY_NUM} سجل المحاسبة STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}المصروفات / الدخل STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}البناء STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}العربات الجديدة STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}تكلفة تشغيل القطار STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}تكلفة تشغيل العربات STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}تكلفة تشغيل الطائرات STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}تكلفة تشغيل السفن STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}صيانة الممتلكات STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}دخل القطار STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}دخل العربات STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}دخل الطائرات STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}دخل السفن STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}فوائد القرض STR_FINANCES_SECTION_OTHER :{GOLD}اخرى STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}المجموع STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}السيولة المتاحة STR_FINANCES_LOAN_TITLE :{WHITE}القرض STR_FINANCES_MAX_LOAN :{WHITE}اقصى حد للقرض: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}اقتراض{CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}زيادة حجم القرض المسموح به STR_FINANCES_REPAY_BUTTON :{BLACK}تسديد{CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}اعادة جزء من القرض # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD} (المدير) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}يفتتح: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}اللون STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}العربات: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} قطار STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA}عربة STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} طائرة STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} سفينة STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}بدون STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}قيمة الشركة: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}( {COMMA}% مملوكة بواسطة {COMPANY}) STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}بناء مقر الشركة الرئيسي STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}ابني مقر الشركة STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}عرض مبنى الشركة الئيسي STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}اعرض مقر الشركة STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}اعادة بناء مقر الشركة STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}اعادة بناء مقر الشركة بمكان آخر و بتكلفة 1% من قيمة الشركة. STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}وجة جديد STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}اختر وجة جديد للمدير STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}اللون STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}غير الوان مركبات الشركة STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}اسم الشركة STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}غير اسم الشركة STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}اسم صاحب الشركة STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}غير اسم المدير STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}اشتري 25% من أسهم الشركة STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}بيع 25% من أسهم الشركة STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}اشتري 25% من اسهم هذه الشركة, + مفتاح الاعلى لاظهار التكلفه STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}بيع 25% من اسهم هذه الشركة STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :اسم الشركة STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :اسم صاحب الشركة STR_BUY_COMPANY_MESSAGE :{WHITE}نحن نبحث عن شركة لتشتري شركتنا. {}{} عل ترغب في شراء {COMPANY} بـ {CURRENCY_LONG}؟ # Company infrastructure window # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}صناعات STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}-بدون- STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW}({COMMA}% صدرت) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW}({COMMA}%/{COMMA}% صدرت) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}اسماء المصانع - اضغط على اسم المصنع لتوسيط الشاشة عليه. اضغط + كنترول لفتح شاشة عرض جديدة لمنطقة المصنع. # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}الأنتاج الشهر الماضي: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ) {COMMA}%المنقول) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}وسط الشاشة على المصنع STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}نسبة الانتاج: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}يحتاج: {YELLOW}{STRING} {STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}يحتاج: {YELLOW}{STRING}{STRING}، {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}يحتاج: {YELLOW}{STRING}{STRING}, {STRING}{STRING} , {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}البضاعة تنتظر التعامل معها: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING}, {STRING} {STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}تغيير الانتاج مضاعف من 8 الى 2040 STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}غير مستوى الانتاج {}نسبة مئوية حتى 800%. # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA}قطار STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA}عربة STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} سفينة STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} طائرة STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}القطارات - اضغط على القطار للتفاصيل STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}العربات - اضغط على العربة لعرض المعلومات STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}السفن - اضغط على السفينة للتفاصيل STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}الطائرات - اضغط على الطائرة للمعلومات STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK} دخل السنة الحالية : {CURRENCY_LONG} السنة السابقة : {CURRENCY_LONG} STR_VEHICLE_LIST_AVAILABLE_TRAINS :القطارات المتاحة STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :العربات المتاحة STR_VEHICLE_LIST_AVAILABLE_SHIPS :السفن المتاحة STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :الطائرات المتاحة STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}عرض جميع المحركات لهذا النوع من العربات STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}ادارة الوحدات STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}ارسل تعليمات لكل الوحدات المتاحة STR_VEHICLE_LIST_REPLACE_VEHICLES :استبدال بجديد STR_VEHICLE_LIST_SEND_FOR_SERVICING :توجة للصيانة STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :توجة الى الورشة STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :توجة الى الورشة STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :توجة الى حوض الصيانة STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :توجة الى حظيرة الصيانة STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}اضغط لايقاف جميع العربات في القائمة STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}اضغط لتشغيل جميع العربات في القائمة STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}مشاركة الاوامر لـ {COMMA} عربة # Group window STR_GROUP_ALL_TRAINS :جميع القطارات STR_GROUP_ALL_ROAD_VEHICLES :جميع المركبات STR_GROUP_ALL_SHIPS :جميع السفن STR_GROUP_ALL_AIRCRAFTS :جميع الطائرات STR_GROUP_DEFAULT_TRAINS :قطار لاتنتمي لأي مجموعة STR_GROUP_DEFAULT_ROAD_VEHICLES :لاتنتمي لأي مجموعة STR_GROUP_DEFAULT_SHIPS :مركبة لاتنتمي لأي مجموعة STR_GROUP_DEFAULT_AIRCRAFTS :طائرة لاتنتمي لأي مجموعة STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}المجموعات: اضغط على اي مجموعة لعرض المركبات التابعة لها STR_GROUP_CREATE_TOOLTIP :{BLACK}أضغط لإنشاء مجموعة STR_GROUP_DELETE_TOOLTIP :{BLACK}أحذف المجموعة المختارة STR_GROUP_RENAME_TOOLTIP :{BLACK}أعد تسمية المجموعة المختارة STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}اضغط لحماية المجموعة من التغيير الكلي للعربات STR_GROUP_ADD_SHARED_VEHICLE :اضافة عربات مشتركة STR_GROUP_REMOVE_ALL_VEHICLES :أزل جميع المركبات STR_GROUP_RENAME_CAPTION :{BLACK}إعادة تسمية مجموعة # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :عربات قطار جديدة STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :عربات قطار كهربائية جديدة STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :عربات قطار احادي جديدة STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :عربات قطار ممغنط جديدة STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :عربات قطار STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :عربات جديدة STR_BUY_VEHICLE_SHIP_CAPTION :سفن جديدة STR_BUY_VEHICLE_AIRCRAFT_CAPTION :طائرة جديدة STR_PURCHASE_INFO_COST_WEIGHT :{BLACK} التكلفة: {GOLD}{CURRENCY_LONG}{BLACK} الوزن: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}السرعة: {GOLD}{VELOCITY}{BLACK} الطاقة: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}السرعة: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}السرعة في المحيط: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}السرعة في القناة/النهر: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}تكلفة التشغيل: {GOLD}{CURRENCY_LONG}/ سنة STR_PURCHASE_INFO_CAPACITY :{BLACK}السعة: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :)قابل لتغيير( STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}تصميم: {GOLD}{NUM}{BLACK} العمر الافتراضي: {GOLD}{COMMA} سنة STR_PURCHASE_INFO_RELIABILITY :{BLACK}الاعتمادية القصوى: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}التكلفة: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}الوزن: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}التكلفة: {GOLD}{CURRENCY_LONG}{BLACK} السرعة : {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK} السعة {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK} العربات ذات الطاقة: {GOLD}+{POWER}{BLACK} الوزن: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}يمكن تعديلها الى: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :كل انواع الحمولة STR_PURCHASE_INFO_ALL_BUT :الكل الا {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}تأثير الجذب القصى: {GOLD}{FORCE} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}قائمة اختيار القطارات - اضغط على العربة لعرض معلوماتها STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}قائمة اختيار العربات - اضغط على العربة لاظهار معلوماتها STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}قائمة اختيار السفن - اضغط على السفينة للتفاصيل STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}قائمة اختيار الطائرات - اضغط على الطائرة للتفاصيل STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}شراء عربات STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}شراء عربة STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}شراء سفينة STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}شراء طائرة STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}شراء العربة الموضحة STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}شراء العربة STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}شراء السفينة المختارة STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}اشتر الطائرة المختارة STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}اعادة تسمية STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}أعد التسمية STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}تسمية STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}اعادة تسمية STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع عربة القطار STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK} اعادة تسمية العربة STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع السفينة STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع الطائرة STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}اعادة تسمية عربات القطار STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}اعادة تسمية العربة STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}اعادة تسمية نوع السفينة STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}اعادة تسمية نوع الطائرة # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}غير اسم الورشة STR_DEPOT_RENAME_DEPOT_CAPTION :غير اسم الورشة STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM}العربات {STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}قطارات - اضغط بالزر الايسر على القطار اضافةالعربة او حذفها, و الزر الايمن للمعلومات, اضغط مفتاح كنترول لتطبيقها علاى بقية العربات. STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}العربات - اضغط على المركبة بالزر الايمن لعرض معلوماتها STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}السفن - اضغط على السفينة بالزر الايمن للتفاصيل STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}طائرة - اضغط على طائرة ما بالزر الايمن لتفاصيل STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}اسحب عربات القطار الى هنا لبيعها STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}اسحب العربة هنا لبيعها STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}اسحب السفينة هنا لبيعها STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}اسحب الطائرة هنا لبيعها STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}أسحب محرك القطار إلى هنا لبيع القطار كاملا STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}بع جميع القطارات الموجودة في الورشة STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}بع جميع المركبات الموجودة في الورشة STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}بع جميع السفن الموجودة في حوض السفن STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}بع جميع الطائرات في الحظيرة STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}بدل جميع القطارات في الورشة آليا STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}بدل جميع المركبات في الورشة آلياً STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}بدل جميع السفن في حوض السفن آلياً STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}بدل جميع الطائرات في الحظيرة آلياً STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}عربات جديدة STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}عربات جديدة STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}سفين جديدة STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}طائرة جديدة STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}بناء عربات قطار جديدة STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}شراء عربات جديدة STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}شراء سفينة جديدة STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}شراء طائرة جديدة STR_DEPOT_CLONE_TRAIN :{BLACK}نسخ قطار STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}نسخ عربة STR_DEPOT_CLONE_SHIP :{BLACK}انسخ السفينة STR_DEPOT_CLONE_AIRCRAFT :{BLACK}نسخ الطائرة STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}هذا سوف يشتري نسخة مطابقة من القطار. اضغط على هذا الزر ثم اي قطار داخل او خارج ورشة الصيانة. مفناح كنترول + الضغط سوف يشارك الأوامر. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}هذا سوف يشتري نسخة مطابقة من العربة. اضغط على هذا الزر ثم اي عربة داخل او خارج ورشة الصيانة. مفناح كنترول + الضغط سوف يشارك الأوامر. STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}هذا سوف يشتري نسخة مطابقة من السفينة. اضغط على هذا الزر ثم اي سفينة داخل او خارج حوض السفن. مفناح كنترول + الضغط سوف يشارك الأوامر. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}هذا سوف يشتري نسخة مطابقة من الطائرة. اضغط على هذا الزر ثم اي طائرة داخل او خارج حظيرة الطائرات. مفناح كنترول + الضغط سوف يشارك الأوامر. STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}وسط الشاشة الرئيسية على ورشة صيانة القطارات STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}ضع ورشة الصيانة في وسط الشاشة STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}وضع حوض السفن في مركز الشاشة STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}وضع الحظيرة في مركز الشاشة STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}عرض قائمة بالقطارات في الورشة STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}عرض قائمة العربات التابعة لهذة الورشة بالترتيب STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}عرض قائمة بالسفن في حوض الصيانة STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}عرض قائمة بالطائرات التابعة لهذا المطار في اي هنجر STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}اضغط لايقاف جميع القطارات داخل مستودع الصيانة STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}اضغط لايقاف جميع العربات داخل مستودع الصيانة STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK} اضغط لايقاف جميع السفن داخل حوض الصيانة STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK} اضغط لايقاف جميع الطائرات داخل حظيرة الصيانة STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}اضغط هنا لتشغيل كل القطارات المتوقفة داخل الورشة STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}اضغط هنا لتشغيل كل العربات المتوقفة داخل الورشة STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}اضغط هنا لتشغيل كل السفن المتوقفة داخل حوض السفن STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK} اضغط لتشغيل جميع الطائرات داخل حظيرة الصيانة STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}أنت على وشك بيع جميع المركبات الموجودة في الورشة، هل أنت متأكد؟ # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}رسالة من المصنعين STR_ENGINE_PREVIEW_MESSAGE :{GOLD}قد صممنا موديل جديد من {STRING} - هل ترغب في استخدام سنة حصري لهذه المركبة, لنستطيع تقييمها للأستخدام العام STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :قاطرة سكة حديد STR_ENGINE_PREVIEW_ROAD_VEHICLE :مركبة STR_ENGINE_PREVIEW_AIRCRAFT :طائرة STR_ENGINE_PREVIEW_SHIP :سفينة STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :قاطرة سكة قطار احادية STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :قاطرة سكة قطار ممغنطة STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK} التكلفة: {CURRENCY_LONG} الوزن: {WEIGHT_SHORT} {} السرعة: {VELOCITY} الطاقة: {POWER}{} كلفة التشغيل: {CURRENCY_LONG} / سنة {} السعة: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}التكلفة {CURRENCY_LONG} الوزن {WEIGHT_SHORT}{}السرعة {VELOCITY} Power: {POWER}قوة السحب {6:FORCE}{}التكلفة التشغيلية {4:CURRENCY_LONG}/سنة{}السعة: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK} التكلفة {CURRENCY_LONG} السرعة القصوى {VELOCITY}{}Capacity السعة {CARGO_LONG} {CARGO_LONG}{} كلفة التشغيل {CURRENCY_LONG} / سنة STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK} التكلفة {CURRENCY_LONG} السرعة القصوى {VELOCITY}{} السعة {CARGO_LONG}{} كلفة التشغيل {CURRENCY_LONG} / سنة # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}تبديل {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :قطار STR_REPLACE_VEHICLE_ROAD_VEHICLE :مركبات STR_REPLACE_VEHICLE_SHIP :سفن STR_REPLACE_VEHICLE_AIRCRAFT :طائرات STR_REPLACE_HELP_LEFT_ARRAY :{BLACK} اختر نوع المحرك لاستبدالة STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK} اختر نوع المحرك المراد إحلاله محل المحرك المختار في القائمة اليسرى STR_REPLACE_VEHICLES_START :{BLACK} بدأ تبديل العربات STR_REPLACE_HELP_START_BUTTON :{BLACK}اضغط لبدأ عملية تبديل المحركات المختارة في القائمة اليسرى بالمحركات المختارة في القائمة اليمنى STR_REPLACE_NOT_REPLACING :{BLACK}لم يتم التبديل STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}لم يتم اختيار اي عربة STR_REPLACE_VEHICLES_STOP :{BLACK} اوقف تبديل العربات STR_REPLACE_HELP_STOP_BUTTON :{BLACK} اضغط لايقاف تبديل المحركات المختارة في اليسار STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK} تبديل: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} بدل بين نافذة استبدال المحركات و العربات STR_REPLACE_ENGINES :محركات STR_REPLACE_WAGONS :عربات STR_REPLACE_HELP_RAILTYPE :{BLACK} اختر نوع القطارالمراد تغييرالمحرك اليه STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK} اعرض اي نوع من المحركات سوف يتم تغيير المحرك له - اذا وجد ... STR_REPLACE_RAIL_VEHICLES :عربات القطار STR_REPLACE_ELRAIL_VEHICLES :سكة حديد كهربائية STR_REPLACE_MONORAIL_VEHICLES :عربات احادية السكة STR_REPLACE_MAGLEV_VEHICLES :مركبات ممغنطة STR_REPLACE_REMOVE_WAGON :{BLACK} إزالة العربات: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK} المحافظة على طول القطار بازالة عربات ابتداء من المقدمة عند التبديل - عندما يكون التبدل ينتج قطارا اطول. # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}ضع القطار في مركز شاشة العرض. مفتاح كنترول لمتابعة حركة القطار. STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}وضع العربة في مركز شاشة العرض. مفتاح كنترول سيتابع حركة العربة. STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}عرض السفينة في مركز الشاشة. مفتاح كنترول سيتابع حركة السفينة. STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}وضع الطائرة في مركز الشاشة. مفتاح كنترول سيتابع حركة الطائرة STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK} ارسل القطار للورشة - مفتاح التحكم (كنترول) + الضغط سيرسله لصيانة فقط STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل العربة الى الورشة. مفتاح التحكم (كنترول) + الضغط ترسل للصيانة فقط STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل السفينة لحوض السفن. اضغط + كنترول سوف يرسلها للصيانة فقط. STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل الطائرة الى حظيرة الصيانة - مفتاح التحكم (كنترول) + الضغط يرسلها للصيانة فقط STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}هذا سوف يشتري نسخة عن قطار بكل عرباته. مفتاح التحكم + الضغط سوف يشارك الاوامر. STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}هذا سوف يشتري عربة مُطابِقة للمُختاره. مفتاح كنترول+النقر بالفأره سيستنسخ نفس الاوامر الاوامر الى العربه الجديده. مفتاح شفت+النقر بالفأره سيحسب التكلفه المُقدره ويعرضها لك STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}هذا سوف يشتري سفينة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر. STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}هذا سوف يشتري طائرة مطابقة للمختارة. مفتاح كنترول+نقره بالفأره سينسخ نفس اوامر الطائره السابقه الى الطائره الجديده. مفتاح شفت+نقره بالفأره سيحسب التكلفه المُقَدره ويعرضها لك STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}اجبر القطار على التحرك بدون انتظار الاشارة الخضراء STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}اعادة تهيئة القطار لحمل نوع اخر من البضائع STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK} هيئ العربة لحمولة أخرى STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}تغيير نوع الحمولة للسفينة STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}غير نوع الحمولة الى نوع آخر STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}عكس اتجاة القطار STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}اجبر العربة لدوان للخلف STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}عرض اوامر القطار STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}عرض اوامر العربة STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}عرض اوامر السفينة STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}عرض اوامر الطائرة STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}عرض معلومات القطار STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}عرض معلومات العربة STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}عرض تفاصيل السفينة STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}عرض تفاصيل الطائرة STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}حركة القطار الحالية - اضغط هنا لايقاف / تشغيل القطار STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}حركة العربة الحالية - اضغط هنا لايقاف / تشغيل العربة STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}امر السفينة الحالي - اضغط لايقاف / تشغيل السفينة STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}وضع الطائرة الحالي - اضغط هنا لايقاف / تشغيل الطائرة # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}تحميل / تفريغ STR_VEHICLE_STATUS_LEAVING :{LTBLUE}يرحل STR_VEHICLE_STATUS_CRASHED :{RED}تحطم! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED} متعطل STR_VEHICLE_STATUS_STOPPED :{RED} متوقف STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}يتوقف , {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}لا توجد طاقة STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}ينتظر لمسار متاح STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}تتوجة الى {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}لا يوجد اوامر وجهات , {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}متوجه ل {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}يتوجة الى {DEPOT} , {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}الصيانة في {DEPOT} , {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}متوقف STR_VEHICLE_COMMAND_STOPPED :{RED}متوقف STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}ابتدا STR_VEHICLE_COMMAND_STARTED :{GREEN}ابتدا # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} تفاصيل STR_VEHICLE_NAME_BUTTON :{BLACK}اسم STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK} اسم القطار STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}تسمية العربة STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}تسمية السفينة STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK} تسمية الطائرة STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK} العمر {LTBLUE}{STRING}{BLACK} تكلفة التشغيل {LTBLUE}{CURRENCY_LONG} / سنة # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA}سنة ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA}سنة ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK} السرعة القصوى {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK} الوزن {LTBLUE}{WEIGHT_SHORT} {BLACK} الطاقة {LTBLUE}{POWER}{BLACK} السرعى القصوى {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK} الوزن {LTBLUE}{WEIGHT_SHORT} {BLACK} القوة {LTBLUE}{POWER}{BLACK} السرعة القصوى {LTBLUE}{VELOCITY} {BLACK} قوة السحب القصوى {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK} دخل هذة السنة {LTBLUE}{CURRENCY_LONG} السنة السابقة - {CURRENCY_LONG} STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK} الاعتمادية {LTBLUE}{COMMA} % {BLACK} الاعطال منذ اخر صيانة {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK} بني {LTBLUE}{NUM}{BLACK} القيمة {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}السعة: {LTBLUE}بدون{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK} السعة {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}مقدار التحويل: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}فترات الصيانة: {LTBLUE}{COMMA} يوم {BLACK} اخر صيانة: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}فترات الصيانة: {LTBLUE}{COMMA}% {BLACK} الصيانة الأخيرة: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}زيادة فترات الصيانة بقدر 10. ومع مفتاح كنترول بمقدار 5. STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK} انقاص فترات الصيانة بمعدل 10. Ctrl+ الضغط الانقاص بمعدل 5. STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}اسم القطار STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}تسمية العربة STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}تسمية السفينة STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}تسمية الطائرة # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK}بني: {LTBLUE}{NUM}{BLACK} تكلفة: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} تكلفة: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}الحمولة القصوى لهذا القطار: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}فارغ STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} الى {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} من{STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}بضاعة شحن STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}عرض معلومات الشحنة STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}معلومات STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}عرض معلومات العربات STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK} السعة STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}عرض السعة لكل عربة STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}مجموع الحمولة STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK} عرض الحمولة الكاملة للقطار, مفصلة بحسب نوع البضائع STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}السعة: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} )تغيير( STR_REFIT_TITLE :{GOLD}اختر نوع الحمولة ... STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}{}{BLACK}تكلفة التغيير: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}تكلفة اعادة التهيئة: {RED}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}اختر العربة لاعادة تهيئتها. اسحب بالفارة لاختيار عدة عربات. اضغط على مساحة خالية لاختيار كل العربات. اضغط + كنترول لاختيار العربة الحالية وما بعدها. STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}اختر نوع البضاعة لينقلها القطار STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK} اختر نوع حمولة العربة STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}اختر نوع الحمولة للسفينة STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}اختر نوع الحمولة للطائرة STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}تهيئة القطار STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}تهيئة نوع حمولة العربة STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}تغيير الحمولة للسفينة STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}تغيير حمولة الطائرة STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}اعادة تهيئة القطار لحمل البضائع المختارة STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK} هيئ العربة لنوع الحمولة المختار STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}غير للحمولة المختارة STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}غير الحمولة للنوع المختار # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (اوامر) STR_ORDERS_TIMETABLE_VIEW :{BLACK}جدولة الاوامر STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}غير الى نافذة جدولة الاوامر STR_ORDERS_LIST_TOOLTIP :{BLACK}قائمة الاوامر - اضغط على الامر لختيارة. مفتاح التحكم (كنترول) + الضغط لتوجة للمحطة STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - نهاية الاوامر - - STR_ORDERS_END_OF_SHARED_ORDERS :- - نهاية الأوامر المشتركة - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}بدون توقف STR_ORDER_GO_TO :اذهب الى STR_ORDER_GO_NON_STOP_TO :اذهب بدون توقف الى STR_ORDER_GO_VIA :التوجة خلال STR_ORDER_GO_NON_STOP_VIA :اذهب بدون توقف من خلال STR_ORDER_TOOLTIP_NON_STOP :{BLACK}غير سلوك التوقف لالأمر المختار STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}تحميل كامل لأي بضاعة STR_ORDER_DROP_LOAD_IF_POSSIBLE :حمل اذا كان متاح STR_ORDER_DROP_FULL_LOAD_ALL :حمل البضائع كاملة STR_ORDER_DROP_FULL_LOAD_ANY :حمل بالكامل اي نوع من البضائع STR_ORDER_DROP_NO_LOADING :عدم التحميل STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}غير سلوك امر التحميل المختار STR_ORDER_TOGGLE_UNLOAD :{BLACK}تنزيل الشحنة STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :حمل الشحنة اذا كانت مقبولة STR_ORDER_DROP_UNLOAD :نزل الشحنة بالكامل STR_ORDER_DROP_TRANSFER :حول البضائع STR_ORDER_DROP_NO_UNLOADING :عدم انزال الشحنة STR_ORDER_TOOLTIP_UNLOAD :{BLACK}غير سلوك التنزيل للامر المختار STR_ORDER_REFIT :{BLACK}اعادة تهيئة STR_ORDER_REFIT_TOOLTIP :{BLACK}اختر نوع البضائع المنقولة لتهيئة العربات في هذا الامر. اضغط كنترول لازالة تعليمات التهيئة. STR_ORDER_REFIT_AUTO :{BLACK}ملائمة ذاتية STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}اختر اي نوع من الحملة تريد ملائمتها ذاتيا. STR_ORDER_DROP_REFIT_AUTO :شحنة ثابتة STR_ORDER_DROP_REFIT_AUTO_ANY :البضائع المتاحة STR_ORDER_SERVICE :{BLACK} صيانة STR_ORDER_DROP_GO_ALWAYS_DEPOT :الذهاب دائما STR_ORDER_DROP_SERVICE_DEPOT :الصيانة عند الحاجة STR_ORDER_DROP_HALT_DEPOT :توقف STR_ORDER_SERVICE_TOOLTIP :{BLACK}تجاوز هذا الامر الا اذا لم تكن الصيانة مطلوبة STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}بيانات العربة لتعريف التجاوز الى # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :نسبة التحميل STR_ORDER_CONDITIONAL_RELIABILITY :الصلاحية STR_ORDER_CONDITIONAL_MAX_SPEED :السرعة القصوى STR_ORDER_CONDITIONAL_AGE :عمر العربة - سنة STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :يحتاج صيانة STR_ORDER_CONDITIONAL_UNCONDITIONALLY :دائما STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :العمر الافتراضي المتبقي (سنة) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}كيف تقارن معلومات العربة لخاصية معينة. STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :يساوي لـ STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :لا يساوي لـ STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :اقل من STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :اقل او مساو لـ STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :اكثر من STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :اكثر او مساو لـ STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :صحيح STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :خاطئ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}القيمة التي يتم مقارنة العربة معها STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}ادخل قيمة للمقارنة معها STR_ORDERS_SKIP_BUTTON :{BLACK}تجاوز STR_ORDERS_SKIP_TOOLTIP :{BLACK} تخطى الامر الحالي, وابد بالتالي. مفتاح التحكم (كنترول) +الضغط يتخطى للامر المختار STR_ORDERS_DELETE_BUTTON :{BLACK}حذف STR_ORDERS_DELETE_TOOLTIP :{BLACK}حذف الامر المختار STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}حذف كل الأوامر STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}أوقف المشاركة STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}اوقف مشاركة الاوامر. اضغط + كنترول لحذف جميع الاوامر من هذه العربة. STR_ORDERS_GO_TO_BUTTON :{BLACK}اذهب الى STR_ORDER_GO_TO_NEAREST_DEPOT :اذهب الى اقرب مستودع صيانة STR_ORDER_GO_TO_NEAREST_HANGAR :اذهب الى اقرب حظيرة صيانة STR_ORDER_CONDITIONAL :امر انتقال شرطي STR_ORDER_SHARE :شارك الأوامر STR_ORDERS_GO_TO_TOOLTIP :{BLACK}اضافة امر قبل الامر المختار, او لاخر الاوامر STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK} عرض جميع العربات التي تشترك في هذا الجدول # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :أذهب من خلال{WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :توجة بشكل بدون توقف خلال {WAYPOINT} STR_ORDER_SERVICE_AT :الصيانة في STR_ORDER_SERVICE_NON_STOP_AT :الصيانة بدون توقف في STR_ORDER_NEAREST_DEPOT :الأقرب STR_ORDER_NEAREST_HANGAR :الحظيرة الأقرب STR_ORDER_TRAIN_DEPOT :مستودع قطار STR_ORDER_ROAD_VEHICLE_DEPOT :مستودع العربات STR_ORDER_SHIP_DEPOT :حوض صيانة السفن STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :هيئة الى {STRING} STR_ORDER_REFIT_STOP_ORDER :هيئت الى {STRING} و توقف STR_ORDER_STOP_ORDER :توقف STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(تلقائى) STR_ORDER_FULL_LOAD :-تحميل بالكامل- STR_ORDER_FULL_LOAD_ANY :-حمل اي بضاعة بالكامل- STR_ORDER_NO_LOAD :(عدم التحميل) STR_ORDER_UNLOAD :-التنزيل و تحميل الشحنة- STR_ORDER_UNLOAD_FULL_LOAD :-التنزيل و الانتظار الى الحمولة كاملة- STR_ORDER_UNLOAD_FULL_LOAD_ANY :-التنزيل و انتظار اي شحنة لتمتلئ اولا- STR_ORDER_UNLOAD_NO_LOAD :-التنزيل المغادرة فارغ- STR_ORDER_TRANSFER :-تنزيل و اخذ حمولة- STR_ORDER_TRANSFER_FULL_LOAD :(توصيل شحنة و الانتظار للحمولة الكاملة) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(توصيل شحنة و الانتظار لأي بضاعة تمتلئ اولا) STR_ORDER_TRANSFER_NO_LOAD :)التوصيل و االمغادرة فارغ) STR_ORDER_NO_UNLOAD :-عدم انزال الشحنة و تحميل غيرها- STR_ORDER_NO_UNLOAD_FULL_LOAD :(عدم انزال الشحنة و الانتظار للحمولة القصوى) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :-عدم انزال الشحنة و الانتظار للحمولة القصوى لاي شحنة- STR_ORDER_NO_UNLOAD_NO_LOAD :(لا تفريغ و لا تحميل) STR_ORDER_AUTO_REFIT :(ملائمة ذاتية ل {STRING}) STR_ORDER_FULL_LOAD_REFIT :(تحميل كلي مع الملائمة الذاتية لـ {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(تحميل كلي لاي بضاعة مع الملائمة الذاتية لـ {STRING}) STR_ORDER_UNLOAD_REFIT :(تفريغ الحمولة و شحن البضائع مع الملائمة الذاتية لـ {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(تفرغ الحمولة و الانتظار للتحميل الكلي مع الملائمة لـ {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(التفريغ و الانتظار للتحميل الكلي لاي بضاعة مع الملائمة الذاتية لـ {STRING}) STR_ORDER_TRANSFER_REFIT :(تحويل البضاعة و اخذ البضاعة مع الملائمة الذاتية لـ {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(تحويل البضاعة و الانتظار للحمولة القصوى مع الملائمة الذاتية لـ {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(تحويل البضاعة و الانتظار لاي حمولة كاملة مع الملائمة الذاتية لـ {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(عدم التفريغ و تحميل البضائع مع الملائمة الذاتية لـ {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(عدم التفريغ مع الانتظار للحمولة القصوى مع الملائمة الذاتية لـ {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(عدم التفريغ و الانتظار للحمولة القصوى لاي نوع مع الملائمة الذاتية لـ {STRING}) STR_ORDER_AUTO_REFIT_ANY :البضائع المتاحة STR_ORDER_STOP_LOCATION_NEAR_END :[قرب النهاية] STR_ORDER_STOP_LOCATION_MIDDLE :[وسط] STR_ORDER_STOP_LOCATION_FAR_END :[النهاية القصوى] STR_ORDER_CONDITIONAL_UNCONDITIONAL :اقفز الى الأمر {COMMA} STR_ORDER_CONDITIONAL_NUM :اقفز للامر{COMMA} عندما {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :اقفز للامر {COMMA} عندما {STRING} {STRING} STR_INVALID_ORDER :{RED} (أمر خاطئ) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} جدولة الاوامر STR_TIMETABLE_ORDER_VIEW :{BLACK}الأوامر STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}حول الى عرض الاوامر STR_TIMETABLE_TOOLTIP :{BLACK}جدولة الأوامر - اضغط على الامر لاظهارة STR_TIMETABLE_NO_TRAVEL :لا رحيل STR_TIMETABLE_NOT_TIMETABLEABLE :المغادرة (ذاتي: بواسطة الامر اليدوي التالي) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :مسافر (غير مجدوله) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :سافر بمعدل {2:VELOCITY} (بدون جدوله) STR_TIMETABLE_TRAVEL_FOR :مسافر لـ {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :سافر لي {STRING} بمعدل {VELOCITY} STR_TIMETABLE_STAY_FOR :ويبقى لـ {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :ويسافر لـ {STRING} STR_TIMETABLE_DAYS :{COMMA}يوم STR_TIMETABLE_TICKS :{COMMA} علامة STR_TIMETABLE_TOTAL_TIME :{BLACK}جدولة الاوامر هذه ستأخذ {STRING} لنهاية STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}جدولة الاوامر هذه ستأخذ على الاقل {STRING} لتكتمل (لايشمل كل الجدولة) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}هذه العربة تعمل حسب الجدولة في الوقت المُحَدَد STR_TIMETABLE_STATUS_LATE :{BLACK}هذه العربه {STRING} مُتاخِرة حاليا عن الجدوله STR_TIMETABLE_STATUS_EARLY :{BLACK}هذه العربه {STRING} مُتَقَدِمه عن الجدوله STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}جدولة الاعمال لم تبدأ بعد STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال ستبدأ فى {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}تاريخ البدأ STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}اختر تاريخ كنقطة بداية لجدول الاعمال هذا STR_TIMETABLE_CHANGE_TIME :{BLACK}غير الوقت STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقه هذا الامر STR_TIMETABLE_CLEAR_TIME :{BLACK}إمسح الوقت STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}إمسح مقدار الزمن لهذا الامر STR_TIMETABLE_CHANGE_SPEED :{BLACK}غير حدود السرعه STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}غير السرعة القصوى للامر المختار STR_TIMETABLE_CLEAR_SPEED :{BLACK}ازل تحديد السرعة STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}ازل السرعة القصوى للرحلة من الامر المختار STR_TIMETABLE_RESET_LATENESS :{BLACK}اعد ضبط العداد التأخير STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}عدل وقت التاخير للعداد حتى تصل المركبة في الوقت المحدد STR_TIMETABLE_AUTOFILL :{BLACK}تهيئة تلقائية STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}املأ الجدولة تلقائيا بقيم الرحلة التالية (مفتاح كنترول لمحاولة ابقائ وقت الانتظار). STR_TIMETABLE_EXPECTED :{BLACK}متوقع STR_TIMETABLE_SCHEDULED :{BLACK}مجدول STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}غير بين المتوقع و المجدول STR_TIMETABLE_ARRIVAL_ABBREVIATION :و: STR_TIMETABLE_DEPARTURE_ABBREVIATION :م: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}ضبط التاريخ STR_DATE_SET_DATE :{BLACK}ضبط التاريخ STR_DATE_SET_DATE_TOOLTIP :{BLACK}اختر التاريخ المختار كبداية لجدول الاعمال هذا STR_DATE_DAY_TOOLTIP :{BLACK}اختر اليوم STR_DATE_MONTH_TOOLTIP :{BLACK}اختر الشهر STR_DATE_YEAR_TOOLTIP :{BLACK}اختر السنة # AI debug window STR_AI_DEBUG :{WHITE}مكتشف اخطاء الذكاء الصناعي STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK} اسم الذكاء الصناعي STR_AI_DEBUG_SETTINGS :{BLACK}اعدادات الذكاء الاصطناعي STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}غير اعدادات الذكاء الاصطناعي STR_AI_DEBUG_RELOAD :{BLACK} اعادة تحميل الذكاء الصناعي STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK} حذف الذكاء الصناعي - اعادة تحميل الذكاء الصناعي و بدء تشغيلة من جديد STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}نشط/اوقف التوقف عندما تتطابق رسائل الذكاء الصناعي مع جمل التوقف. STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}توقف: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}توقف STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}عندما تتطابق رسالة الذكاء الصناعي مع هذة الجملة, تتوقف اللعبة. STR_AI_DEBUG_MATCH_CASE :{BLACK}قارن الحالات STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}اظهر الحالات المتشابهة عند مقارنة رسائل الذكاء الصناعي مع الجمل المكسورة. STR_AI_DEBUG_CONTINUE :{BLACK}استمر STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}عدم توقيف ومواصلة الذكاء الصناعي STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}عرض صائد الاخطاء لهذه الاضافة STR_ERROR_AI_NO_AI_FOUND :لا يوجد اضافات مناسبة للتحميل {} هذه اضافة غبية ولن تفعل شيئا لك {} تستطيع تحميل اضافات من الشبكة عن طريق نظام التحميل STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}واحد من الذكاء الصناعي فشل. الرجاء ابلاغ المبرمج عنه مصحوبا بصورة من شاشة مصحح الاخطاء. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW} شاشة اخطاء الذكاء الصناعي متوفرة فقط للخادم # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}إعدادات الذكاء الصناعي STR_AI_CONFIG_HUMAN_PLAYER :لاعب انساني STR_AI_CONFIG_RANDOM_AI :ذكاء صناعي عشوائي STR_AI_CONFIG_MOVE_UP :{BLACK}انقل للاعلى STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}انقل الذكاء الاصطناعي المختار للاعلى STR_AI_CONFIG_MOVE_DOWN :{BLACK}انقل للاسفل STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}انقل الذكاء الاصطناعي المختار للاسفل STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CONFIGURE :{BLACK} اعداد STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK} اعداد خواص الذكاء الصناعي # Available AIs window STR_AI_LIST_TOOLTIP :{BLACK} اضغط لاختيار ذكاء اصطناعي STR_AI_LIST_AUTHOR :{LTBLUE}المؤلف: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}الاصدار: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}العنوان : {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK} اقبل STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK} اختر الذكاء الصناعي المنتقى STR_AI_LIST_CANCEL :{BLACK} الغاء STR_AI_LIST_CANCEL_TOOLTIP :{BLACK} لا تغير الذكاء الصناعي # AI Parameters STR_AI_SETTINGS_CLOSE :{BLACK} اغلاق STR_AI_SETTINGS_RESET :{BLACK} اعادة ضبط STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}اقراني {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} سجل التغيير ل{STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}رخصة {STRING} STR_TEXTFILE_VIEW_README :{BLACK}اعرض ملف التعليمات ريدمي STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}اعرض سجل التغييرات STR_TEXTFILE_VIEW_LICENCE :{BLACK}الرخصة # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}تكلفة: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}تكلفة: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}الدخل: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}الدخل: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}التحويل: {CURRENCY_LONG} STR_FEEDER :{YELLOW}حول: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}التكلفة التقديرية {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}الدخل التقديري: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}الحفظ مازال جاريا الآن{}الرجاء الأنتظار حتر ينتهي STR_ERROR_AUTOSAVE_FAILED :{WHITE}فشل الحفظ التلقائي STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}لا يمكن قرائة القرص STR_ERROR_GAME_SAVE_FAILED :{WHITE}فشل حفظ اللعبة{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}لا يمكن حذف الملف STR_ERROR_GAME_LOAD_FAILED :{WHITE}فشل فتح اللعبة {}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :خطأ داخلي: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبه محفوظه غير صالحه - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :اللعبة حفظت بنسخة أحدث STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :لا يمكن قراءة الملف STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :لايمكن قراءة الملف STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :فشل التحقق من سلامة البيانات STR_GAME_SAVELOAD_NOT_AVAILABLE :<غير متاح> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}اللعبة حفظت بنسخة لا تدعم الترام. كل ما يتعلق بالترام حذف. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}مولد الخريطة توقف ... {} ... لا يوجد مواقع مناسبة للمدن STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... لا يوجد مدن في هذه الخريطة STR_ERROR_PNGMAP :{WHITE}لا يمكن تحميل الخريطة من PNG ... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... الملف غير موجود. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... لا يمكن تحويل صيغة الملف.مطلوب ملف PNG . 8 او 24 - بت STR_ERROR_PNGMAP_MISC :{WHITE}حدث خطأ ما ... للاسف ! (قد يكون ملف تالف). STR_ERROR_BMPMAP :{WHITE}لا يمكن تحميل الخريطة من BMP ... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}لايمكن تحويل نوع الصورة... STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}الصورة ضخمة جدا ... STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}تحذير STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}اعادة تحجيم الخريطة المصدر كثيرا غير مستحسن. هل تريد اكمال توليد الخريطة؟ # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}لايوجد غير مجموعة اصوات. اذا اردت اصوات, نصب مجموعة صوتية من خلال نظام التحميل. # Screenshot related messages STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}صورة من الشاشة حفظت بنجاح باسم: '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}لم يتم حفظ الصورة # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}رسالة STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}رسالة من {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}خارج حدود الخريطة STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}قريب جدا من حافة الخريطة STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}الرصيد لا يكفي - يلزمك {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}يجب ان تكون الأرض مستوية STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}الأرض مائلة في الأتجاة الغير مناسب STR_ERROR_CAN_T_DO_THIS :{WHITE}لا يمكن تنفيذة... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}يجب هدم المبنى اولا STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}لا يمكن ازالتة ... STR_ERROR_SITE_UNSUITABLE :{WHITE}... الموقع غير مناسب STR_ERROR_ALREADY_BUILT :{WHITE}... تم بنائة STR_ERROR_OWNED_BY :{WHITE}مملوكة من قبل ... {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... المنطقة مملوكة لشركة منافسة STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... تم الوصول لاقصى حدود للتضاريس STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... تم الوصول لاقصى عدد ازالة STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}السم يجب ان يكون فريدا - غير مستخدم STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} على الطريق STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}غير مسموح في حين توقفت # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} السلطات المحليه ترفض المساح بهذا STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}البلدية ترفض بناء مطار آخر في هذه المدينة STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}بلدية {TOWN}{} ترفض السماح بمطار هنا بسبب تتعلق بالضوضاء العالية منه . STR_ERROR_BRIBE_FAILED :{WHITE}محاولتك لرشوة السلطات اكتشفت بواسطة مراقب محلي # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}لا يمكن رفع الأرض هنا STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}لا يمكن خفض الأرض هنا STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}لا يمكن تسوية الأرض هنا ... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}الحفر سوف يضر بالقناة STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... تم الوصول لمستوى البحر STR_ERROR_TOO_HIGH :{WHITE}عالي جدا... STR_ERROR_ALREADY_LEVELLED :{WHITE}مسطحة ... # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}لا يمكن تغيير اسم الشركة STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}لا يمكن تغيير اسم صاحب الشركة STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... اعلى دين مسموح به : {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}بلغت الحد الاقصى للقرض STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... لا يوجد دين للسداد STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} مطلوب STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}لا يمكن تسديد الدين STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}لا يمكن التخلي عن النقود المعطاة من البنك على سبيل الاعارة ... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}لا يمكن شراء الشركة ... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}لا يمكن بناء مبنى الشركة الئيسي ... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}لا يمكن شراء 25% من اسهم الشركة ... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}لا يمكن بيع 25% من اسهم الشركة ... STR_ERROR_PROTECTED :{WHITE}هذه الشركة ليست عريقة بقدر كافي لمشاركة الأسهم ... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}لا يمكن انشاء اي مدينة STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}تعذر إعاده تسميه المدينه... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}لا يمكن انشاء مدينة هنا STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}لا يمكن توسيع المدينة ... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... قريبة جدا من حافة الخريطة STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... قريبة جدا من مدينة أخرى STR_ERROR_TOO_MANY_TOWNS :{WHITE}... المدن كثيرة جدا STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... لا يوجد فراغ في الخريطة STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}لن تبني البلدية طرق جديدة. بامكانك تمكين البلدية من بناء الطرق الجديدة عن طريق الاعدادات المتقدمة --> الاقتصاد --> المدن STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}اعمال الطرق قيد التنفيذ STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}لا يمكن ازالة هذه المدينة {}محطة او ورشة مرتبطة بالمدينة او هناك مربع مملوك للمدينة لا يمكن لزالته STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... لا يوجد مكان مناسب للمجسم بداخل هذة المدينة/البلدة # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... المصانع كثيرة جدا STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}لا يمكن انشاء مصانع ... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}تعذر بناء {STRING} هنا... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}لا بمكن بناء المصنع هنا ... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}قريب جدا من مصنع آخر STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... يجب بناء مدينة اولا STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... يسمح بواحد في المدينة فقط STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... يمكن بنائة في مدن يزيد سكانها عن 1200 نسمة STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... يمكن بنائة في الغابات المطيرة فقط STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... يمكن بنائة في المناطق الصحراوية فقط STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... يبنى فقط في المدن STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... يمكن بنائه في المناطق المنخفضة فقط STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... يمكن بنائة على اطراف الخريطة فقط STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... يمكن زراعة الغابة فوق خط الثلج فقط STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}يمكن بنائة فوق خط الثلج فقط STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}يمكن بنائة تحت خط الثلج فقط # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}لا يمكن بناء محطة سكة حديد هنا ... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}تعذر بناء محطه الحافلات... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}تعذر بناء محطات الشاحنات... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}لا يمكن بناء محطة ركاب هنا ... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}لا يمكن بناء محطة ترام هنا ... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}لا يمكن بناء مرفء هنا ... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}تعذر بناء المطار هنا... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من محطه موجوده مسبقاً STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... المحطه ممتده للخارج للغايه STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}يوجد الكثير من المحطات STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}يوجد الكثير من قطاعات محطه السكه الحديديه STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}يوجد الكثير من محطات الحافلات STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}يوجد الكثير من محطات الشاحنات STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}قريب للغايه من محطه اخرى STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}قريب للغايه من مَرسَى اخر STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}قريب للغايه من مطار اخر STR_ERROR_CAN_T_RENAME_STATION :{WHITE}تعذر إعاده تسميه المحطه... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... هذا الطريق ملك المدينه STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... اتجاه الطريق خاطئ STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... القيادة عبر إشارات التوقف لا يمكن ان تحتوي على زوايا STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... القيادة عبر إشارات التوقف لا يمكن ان تحتوي على تقاطعات # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}تعذر حذف هذا الجزء من المحطه... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}يجب ازالة محطة القطار اولاً STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}تعذر إزاله محطه الحافلات... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}تعذر إزاله محطه الشاحنات... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}تعذر إزاله محطه ركاب الترام... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}تعذر إزاله محطه شحن الترام... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}يجب إزاله محطة التوقف اولاً STR_ERROR_THERE_IS_NO_STATION :{WHITE}... لايوجد اى محطه هنا STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}يجب ازالة محطة القطار اولاً STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}يجب إزاله محطه الحافلات اولاً STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}يجب إزاله محطه الشاحنات اولاً STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}يجب إزاله محطه ركاب الترام اولاً STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}يجب إزاله محطه شحن الترام اولاً STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}يجب إزاله المَرسَى اولاً STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}يجب إزاله المطار اولاً # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من نقطه عبور متواجده STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}قريب للغايه من نقطه عبور اخرى STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}تعذر بناء نقطه العبور هنا... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}تعذر وضع العوامه هنا... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}تعذر إعاده تسميه نقطه العبور STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}لا يمكن ازالة نقطة عبور القطار من هنا... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}يجب إزالة السكه الحديديه اولاً STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... توجد عوامه فى المسار STR_ERROR_BUOY_IS_IN_USE :{WHITE}... العوامه مُستخدمه من قِبَل شركه اخرى! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}تعذر بناء مستودع القطارات هنا... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}تعذر بناء مستودع العربات البريه هذا هنا... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}تعذر بناء مستوع الترام هنا... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}تعذر بناء مستودع السفن هنا.. STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}تعذر إعاده تسميه المستودع... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان يكون متوقفاً بالكامل داخل المستودع STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان تكون متوقفه بالكامل داخل المستودع STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان تكون متوقفه بالكامل داخل المستودع STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... يجب ان تكون متوقفه بالكامل في الحظيره STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}يمكن تعديل القطارات فقط عند وجودها داخل المستودع STR_ERROR_TRAIN_TOO_LONG :{WHITE}القطار طويل للغايه STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}تعذر تغيير إتجاه العربه... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}تتكون من اكثر من وحدة ... STR_ERROR_INCOMPATIBLE_RAIL_TYPES :نوع السكه الحديديه غير متوافق STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}تعذر تحريك العربه... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}المُحرك الخلفى سيتبع نظيره الامامى دائماً STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}تعذر إيجاد الطريق المؤدى للمستودع STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}تعذر إيجاد مستوع محلى STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :مستودع خطأ # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} طويل للغايه بعد اﻹستبدال STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}لا يوجد نظام مطبق للتبديل/ التجديد STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(حدود التكلفة للتبديل) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}تركيبة سكك غير صالحة STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}يجب إزاله اﻹشاره اولاً STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}... مسار السكة الحديدية غير مناسب STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}يجب إزاله السكه الحديديه اولاً STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}الطريق باتجاه واحد او ربما يكون مسدوداً STR_ERROR_CROSSING_DISALLOWED :{WHITE}التقاطع المتعدد غير متاح لهذا النوع من السكك STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}تعذر بناء اﻹشارات هنا... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}تعذر بناء السكه الحديديه هنا... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}تعذر إزاله السكه الحديديه من هنا... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}تعذر إزاله اﻹشاره من هنا... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}لا يمكن تحويل الاشارة هنا ... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... لا يوجد سكه حديديه STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... لا توجد اشارات هنا STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}لا يمكن تحويل سكة القطار هنا ... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}يجب إزاله الطريق اولاً STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... الطريق موحد اﻹتجاه لا يمكن ان يحتوى على تقطاعات STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}تعذر بناء الطريق هنا... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}تعذر بناء سكه الترام هنا... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}تعذر إزاله الطريق من هنا... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}تعذر إزاله سكه الترام من هنا... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد سكه ترام هنا # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}تعذر بناء القناه هنا... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}تعذر بناء الحاجز هنا... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}تعذر وضع النهر هنا... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... يجب بناءه على الماء STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... لا يمكن بنائة على الماء STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... لا يمكن بناءه فى البحر المفتوح STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... لا يمكن بناءه على القناه STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}لا يمكن بنائة على النهر STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}يجب إزاله القناه اولاً STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}لا يمكن بناء قناه مياه هنا... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... الشجره موجوده هنا مسبقاً STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... البيئة غير مناسبة لنوع الشجر STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}... لا يمكن زراعة اشجار هنا # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}تعذر بناء الجسر هنا... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}يجب هدم الجسر اولا STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}لا يمكن ان يبدء وينتهي في نفس المكان STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}نهايات الجسر ليست على استقامة واحدة STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}الجسر منخفض جدا للوادي STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}البداية و النهاية يجب ان تكون على استقامة واحدة STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... يجب ان تكون نهايات الجسر على اليابسة STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... الجسر طويل جدا STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}قد ينتهي الجسر خارج الخريطة # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}تعذر بناء النفق هنا... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}الموقع غير صالح لمدخل النفق STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}يجب هدم النفق اولا STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}نفق آخر في مسار هذا النفق STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}الانفاق تنتهي خارج حدود الخريطة STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}لا يمكن تعديل الأرض في نهاية النفق STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... النفق طويل جدا # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... الاجسام كثيرة جدا STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}لا يمكن بناء الجسم ... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}عائق في الطريق STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}مبنى شركة على الطريق STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}لا يمكن شراء هذة القطعة ... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}هذه القطعة ملك لك من قبل ... # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}لايمكن إنشاء مجموعة STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}لايمكن حذف المجموعة STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}لايمكن إعادة تسمية المجموعة STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}لايمكن إزالة جميع المركبات من هذه المجموعة STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}لا يمكن اضافة المركبة للمجموعة ... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}لا يمكن اضافة مركبات مشتركة للمجموعة ... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}قطار في الطريق STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}العربة في الطريق STR_ERROR_SHIP_IN_THE_WAY :{WHITE}سفينة في الطريق STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}طائرة في الطريق STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}لايمكن اعادة تهيئة القطار STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}لا يمكن اعادة تهيئة العربة ... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}لا يمكن التغيير ... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}لا يمكن تغيير الحمولة ... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}لا يمكن تسمية القطار ... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}لا يمكن تسمية العربة STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}لا يمكن تسمية السفينة ... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}لا يمكن تسمية الطائرة ... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}لا يمكن ايقاف / تشغيل القطار STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}لا يمكن ايقاف / تشغيل العربة STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}لا يمكن توقيف/ تشغيل السفينة ... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}لا يمكن توقيف / تشغيل الطائرة STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}لا يمكن ارسال القطار الى الورشة STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}لا يمكن ارسال العربة الى ورشة الصيانة STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}لا يمكن ارسال السفينة الى حوض الصيانة ... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}لا يمكن ارسال الطائرة لحظيرةالصيانة STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}لايمكن بناء عربات سكة حديد ... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}لا يمكن شراء عربة ... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}لا يمكن شراء السفينة... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}لا يمكن شراء الطائرة STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}لا يمكن اعادة تسمية عربات القطار ... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}لايمكن اعادة تسمية العربات STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}لا يمكن اعادة تسمية نوع السفينة STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}لا يمكن اعادة تسمية نوع الطائرة ... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}لا يمكن بيع العربات STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}لا يمكن بيع العربة... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}لا يمكن بيع السفينة ... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}لا يمكن بيع الطائرة STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}العربة غير متاحة STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}العربات غير متاحة STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}السفن غير متاحة STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}الطائرة غير متاحة STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}العربات كثيرة جدا في اللعبة STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}لا يمكن تغيير فترات الصيانة STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... العربة تحطمت STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}لن تتوافر اى وسائل نقل على اﻹطلاق STR_ERROR_NO_VEHICLES_AVAILABLE_YET :لا تتوافر اى آليه نقل بعد # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}لا يمكن عكس اتجاة القطار... STR_ERROR_TRAIN_START_NO_POWER :ليس للقطار طاقة كافية STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}لا يمكن تغيير اتجاة المركبة الان STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}الطائرة تقوم بالطيران الآن # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}لا يوجد فراغ لمزيد من الاوامر STR_ERROR_TOO_MANY_ORDERS :{WHITE}الاوامر كثيرة جدا STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}لا يمكن اضافة امر جديد STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}لا يمكن الغاء هذا الأمر... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}لا يمكن تعديل هذا الامر ... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}لا يمكن حذف هذا الامر ... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}لا يمكن تخطي الأمر الحالي ... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}لا يمكن تخطي الأمر المختار ... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}العربة لا تستطيع الوصول الى كل المحطات STR_ERROR_CAN_T_ADD_ORDER :{WHITE}العربة لا تستطيع الوصول للمحطة STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}العربة المشتركة لا تستطيع الوصول للمحطة STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}لا يمكن مشاركة قائمة الأوامر STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}لايمكن ايقاف امر المشاركة بالاوامر ... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}لا يمكن نسخ قائمة الأوامر STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}بعيد جدا من محطة/علامة الوصول السابقة # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}لا يمكن جدولة العربة ... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}يمكن للعربات الانتظار في المحطات فقط. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}هذه العربة لا تتوقف في هذه المحطة. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... العلامات كثيرة جدا STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}لايمكن وضع علامة هنا... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}لا يمكن تعديل اسم العلامة ... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}لا يمكن حذف العلامة ... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :نسخة مستنسخة من ترانسبورت تايكون ديلوكس # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس STR_BASEGRAPHICS_WIN_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز STR_BASESOUNDS_DOS_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس STR_BASESOUNDS_WIN_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز STR_BASESOUNDS_NONE_DESCRIPTION :مجموعة صوت بدوت اصوات مضافة STR_BASEMUSIC_WIN_DESCRIPTION :النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز STR_BASEMUSIC_NONE_DESCRIPTION :مجموعة موسيقى بدون موسيقى ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :مبنى مكاتب عالي STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :مبنى مكاتب STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :مبنى شقق صغيرة STR_TOWN_BUILDING_NAME_CHURCH_1 :دار عبادة STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :مبنى مكاتب كبير STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :مساكن المدينة STR_TOWN_BUILDING_NAME_HOTEL_1 :فندق STR_TOWN_BUILDING_NAME_STATUE_1 :مجسم STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :نافورة STR_TOWN_BUILDING_NAME_PARK_1 :حديقة STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :مبنى مكاتب STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :مكاتب و محلات تجارية STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :مبنى مكاتب حديث STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :ورش حرفية STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :مبنى مكاتب STR_TOWN_BUILDING_NAME_STADIUM_1 :استاد رياضي STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :منازل قديمة STR_TOWN_BUILDING_NAME_COTTAGES_1 :اكواخ STR_TOWN_BUILDING_NAME_HOUSES_1 :منازل STR_TOWN_BUILDING_NAME_FLATS_1 :شقق STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :برج مكاتب STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :مكاتب و محلات تجارية STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :مكاتب و محلات تجارية STR_TOWN_BUILDING_NAME_THEATER_1 :مسرح STR_TOWN_BUILDING_NAME_STADIUM_2 :استاد رياضي STR_TOWN_BUILDING_NAME_OFFICES_1 :مكاتب STR_TOWN_BUILDING_NAME_HOUSES_2 :منازل STR_TOWN_BUILDING_NAME_CINEMA_1 :دار سنما STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :مركز تسوق STR_TOWN_BUILDING_NAME_IGLOO_1 :مبنى قباني STR_TOWN_BUILDING_NAME_TEPEES_1 :خيم STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :مبنى ابريق الشاي STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :بنك الخنزير ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :منجم فحم STR_INDUSTRY_NAME_POWER_STATION :محطة طاقة STR_INDUSTRY_NAME_SAWMILL :منجرة خشب STR_INDUSTRY_NAME_FOREST :غابة STR_INDUSTRY_NAME_OIL_REFINERY :محطة تكرير نفط STR_INDUSTRY_NAME_OIL_RIG :مصفاة نفط STR_INDUSTRY_NAME_FACTORY :مصنع STR_INDUSTRY_NAME_PRINTING_WORKS :معمل طباعة STR_INDUSTRY_NAME_STEEL_MILL :مصنع حديد STR_INDUSTRY_NAME_FARM :مزرعة STR_INDUSTRY_NAME_COPPER_ORE_MINE :منجم خام النحاس STR_INDUSTRY_NAME_OIL_WELLS :ابار نفط STR_INDUSTRY_NAME_BANK :بنك STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :معمل تحضير الطعام STR_INDUSTRY_NAME_PAPER_MILL :مصنع ورق STR_INDUSTRY_NAME_GOLD_MINE :منجم ذهب STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :بنك STR_INDUSTRY_NAME_DIAMOND_MINE :منجم جواهر STR_INDUSTRY_NAME_IRON_ORE_MINE :منجم خام الحديد STR_INDUSTRY_NAME_FRUIT_PLANTATION :مزرعة فواكة STR_INDUSTRY_NAME_RUBBER_PLANTATION :مزرعة مطاط STR_INDUSTRY_NAME_WATER_SUPPLY :مصدر مياة STR_INDUSTRY_NAME_WATER_TOWER :برج ماء STR_INDUSTRY_NAME_FACTORY_2 :مصنع STR_INDUSTRY_NAME_FARM_2 :مزرعة STR_INDUSTRY_NAME_LUMBER_MILL :مصنع مشغولات خشبية STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :مزرعة قطن STR_INDUSTRY_NAME_CANDY_FACTORY :مصنع حلويات STR_INDUSTRY_NAME_BATTERY_FARM :مزرعة بطاريات STR_INDUSTRY_NAME_COLA_WELLS :ابار كولا STR_INDUSTRY_NAME_TOY_SHOP :محل العاب STR_INDUSTRY_NAME_TOY_FACTORY :مصنع العاب STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :مشغولات بلاستيكية STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :مصنع الشراب المخفوق STR_INDUSTRY_NAME_BUBBLE_GENERATOR :مولد فقاعات STR_INDUSTRY_NAME_TOFFEE_QUARRY :معمل توفي STR_INDUSTRY_NAME_SUGAR_MINE :قصب سكر ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :غير مسمى STR_SV_TRAIN_NAME :قطار {COMMA} STR_SV_ROAD_VEHICLE_NAME :عربة {COMMA} STR_SV_SHIP_NAME :سفينة {COMMA} STR_SV_AIRCRAFT_NAME :طائرة {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} الشمالية STR_SV_STNAME_SOUTH :{STRING} الجنوبية STR_SV_STNAME_EAST :{STRING} الشرقية STR_SV_STNAME_WEST :{STRING} الغربية STR_SV_STNAME_CENTRAL :{STRING} المركزية STR_SV_STNAME_TRANSFER :{STRING} لنقليات STR_SV_STNAME_HALT :{STRING} الوقفية STR_SV_STNAME_VALLEY :وادي {STRING} STR_SV_STNAME_HEIGHTS :مرتفعات {STRING} STR_SV_STNAME_WOODS :{STRING} الخشبية STR_SV_STNAME_LAKESIDE :{STRING} الشاطئية STR_SV_STNAME_EXCHANGE :{STRING} التبادلية STR_SV_STNAME_AIRPORT :مطار {STRING} STR_SV_STNAME_OILFIELD :{STRING} النفطية STR_SV_STNAME_MINES :مناجم {STRING} STR_SV_STNAME_DOCKS :مرفئ {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} ملحق STR_SV_STNAME_SIDINGS :{STRING} تحويلات STR_SV_STNAME_BRANCH :{STRING} متفرع STR_SV_STNAME_UPPER :فوق {STRING} STR_SV_STNAME_LOWER :تحت {STRING} STR_SV_STNAME_HELIPORT :{STRING} مهبط هيلوكبتر STR_SV_STNAME_FOREST :{STRING} غابة STR_SV_STNAME_FALLBACK :{STRING}محطة #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :كربي باول -بخاري STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :ام جي اس 250 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :بلود شوشو STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :بور شوشو STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :مايتي شوشو STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :بلود - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :بور - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :ولز280 - بخاري STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :شاني - بخاري STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :قنزو - بخاري STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :اس اتش - بخاري STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :مانلين - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :داش - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :هنري - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :يويو 37 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :فلوس - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :اس سي 4000 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :اس سي 2400 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :سنتنيال - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :كيلينق 3100 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :ترنر تربو - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :ام جي اس 1000 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :اس اتش 125 - ديزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :اس اتش 30 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :اس اتش 40 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :تايم - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :نجم اسيا - كهربائي STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :مقصورة ركاب STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :عربة بريد STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :شاحنة فحم STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :خزان وقود STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :عربة مواشي STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :حاوية بضائع STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :حاوية حبوب STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :عربة اخشاب STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :حاوية خام حديد STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :عربة حديد STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :حاوية مدرعة STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :حاوية طعام STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :عربة اوراق STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :حاوية خام النحاس STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :حزان مياة STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :حاوية فواكة STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :حاوية مطاط STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :حاوية سكر STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :حاوية حلاوة قطنية STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :حاوية توفي STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :عربة فقاعات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :خزان كولا STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :عربة حلويات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :عربة العاب STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :حاوية بطاريات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :عربة مشروب مخفوق STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :عربة بلاستيك STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :اكس 2001 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :المئوي زد1 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :ويزوو زد 99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :مقصورة ركاب STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :عربة بريد STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :عربة فحم STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :خزان نفط STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :عربة مواشي STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :حاوية بضائع STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :حاوية حبوب STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :عربة خشب STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :حاوية خام حديد STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :عربة حديد STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :حاوية مدرعة STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :عربة طعام STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :عربة اوراق STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :حاوية خام نحاس STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :خزان مياة STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :عربة فواكة STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :عربة مطاط STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :عربة سكر STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :عربة حلاوة القطن STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :عربة توفي STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :عربة فقاعات STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :خزان كولا STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :حاوية حلاويات STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :عربة العاب STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :حاوية بطاريات STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :عربة مشروب مخفوق STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :عربة بلاستيك STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :لف1 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :ليف2 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :ليف3 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :ليف 4 - كهربائي STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :ويزوو روكتير STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :مقصورة ركاب STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :عربة بريد STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :عربة فحم STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :خزان نفط STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :عربة ماشية STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :حاوية بضائع STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :حاوية حبوب STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :عربة خشب STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :عربة خام حديد STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :عربة حديد STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :عربة مصفحة STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :حاوية طعام STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :عربة اوراق STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :حاوية خام نحاس STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :خزان مياة STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :عربة فواكة STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :حاوية مطاط STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :حاوية سكر STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :حاوية حلاوة القطن STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :حاوية توفي STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :عربة فقاعات STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :خزان كولا STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :عربة حلويات STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :عربة العاب STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :حاوية بطاريات STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :عربة مشروب مخفوق STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :عربة بلاستيك STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :ام بي اس باص STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :باص نمراوي STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :باص فوستر STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :باص سوبر فوستر STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :باص بلودفيت1 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :باص بلودفيت 1 STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :باص بلودفيت 2 STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :عربة بالو للفحم STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :عربة ية اتش ال للفحم STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :عربة دي دبليو للفحم STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :عربة ام بس اس للبريد STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :عربة رينارد للبريد STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :عربة بيري للبريد STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :عربة مايتي للبريد STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :عربة بور للبريد STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :عربة ويزو للبريد STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :وايت ويتكوم للنفط STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :وايت فوستر للنفط STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :وايت بيري للنفط STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :عربة تالبوت للماشية STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :عربة يو اتش ال للمواشي STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :عربة فوستر للمواشي STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :عربة بالو للبضائع STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :عربة رأس كرق للبضائع STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :عربة قوز للبضائع STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :عربة هيري للحبوب STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :عربة توماس للحبوب STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :عربة قوز للحبوب STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :عربة ويتكوم للخشب STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :عربة فوستر للخشب STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :عربة موريلان للخشب STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :عربة ام بي اس لخام الحديد STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :عربة يو اتش ال لخام الحديد STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :عربة شبي لخام الحديد STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :عربة بالو للحديد STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :عربة ية اتش ال للحديد STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :عربة كيلي للحديد STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :مدرعة بالو STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :مدرعة يواتش ال STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :مدرعة فوستر STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :عربة فوستر للطعام STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :عربة بيري للطعام STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :عربة شبي للطعام STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :عربة يو اتش ال للاوراق STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :عربة بالو للاوراق STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :عربة ام بي اس للاوراق STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :عربة ام بي اس لخام النحاس STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :عربة يو اتش ال لرادة النحاس STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :عربة قوس لخام النحاس STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :وايت يو اتش ال للمياة STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :عربة بالو للمياة STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :عربة ام بي اس للمياة STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :عربة بالو للفواكة STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :عربة يو اتش ال للفواكة STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :عربة كيلي للفواكة STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :عربة بالو للمطاط STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :عربة يو اتش ال للمطاط STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :عربة ار ام تي للمطاط STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :حاوية مايتي للسكر STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :حاوية بور للسكر STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :عربة ويزي للسكر STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :وايت مايتي للكولا STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :وايت بور للكولا STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :عربة ويزي للكولا STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :عربة مايتي لحلوى القطن STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :عربة بور لحلوى القطن STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :عربة ويزي لحلوى القطن STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :عربة مايتي لتوفي STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :عربة بور للتوفي STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :عربة ويزو لتوفي STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :عربة مايتي للالعاب STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :عربة بور للالعاب STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :عربة ويزو للالعاب STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :عربة مايتي للحلويات STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :عربة بور للحلويات STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :عربة ويزو للحلويات STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :عربة مايتي للبطاريات STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :عربة بور للبطاريات STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :عربة ويزو للبطاريات STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :عربة مايتي للمشروب المخفوق STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :عربة بور للمشروب المخفوق STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :عربة ويزو للمشروب المخفوق STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :عربة مايتي للبلاستيك STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :عربة بور للبلاستيك STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :عربة ويزو للبلاستيك STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :عربة مايتي للفقاعات STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :عربة بور للفقاعات STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :عربة ويزو للفقاعات STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :وايت ام بي اس للنفط STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :وايت سي اس للنفط STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :باص ام بي اس للركاب STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :باص اف اف بي للركاب STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :باكول 300 هوفر STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :شقر شق لركاب STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :شيفرشيك للركاب STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :ناقلة ياتي STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :ناقلة باكويل STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :ناقلة مايتي STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :ناقلة بور STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :سامسون 52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :كولمان كونت STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :سهم اف اف بي STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :نفاثة هوقان STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :باكويل كوست 3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :باكويل لكيت 8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :باكويل لكيت 9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :باكويل لكيت 80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :باكويل لكيت 10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :باكويل لكيت 11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :نفاثة ايروسبايس 11-1 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :دارون 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :دارون 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :دارون 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :دارون 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :دارون 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :دارون 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :قورو جالكسي STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :تاكسي الجو 21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :تاكسي الجو 31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :تاكسي الجو أ32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :تاكسي الجو 33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :نفاثة ياتي ايروسبيس 46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :دنقر 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :تاكسي الجو 34 -1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :ياتي زد شفل STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :كيلي كيه 1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :كيلي كيه 6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :كيلي كية 7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :دارون 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :اف اف بي هايبردارت 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :دنقر 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :دنقر 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :بلوي 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :بلوي 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :فلاش بانق اكس1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :جوقر ام 1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :فلاش وزر STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :تراي كاريو هيلوكبتر STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :قورو اكس 2 هيلوكبتر STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :باور هيلوكبتر ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} عوامة STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} عوامة #{COMMA} STR_FORMAT_COMPANY_NUM :شركة {COMMA} STR_FORMAT_GROUP_NAME :مجموعة{COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :نقطة عبور {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} نقطة عبور #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} ورشة قطار STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN}ورشة قطار رقم {COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} ورشة عربات STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} ورشة عربات رقم {COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} ورشة سفن STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN}ورشة سفن رقم {COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} حظيرة طائرات STR_UNKNOWN_STATION :محطة غير معروفة STR_DEFAULT_SIGN_NAME :علامة STR_COMPANY_SOMEONE :شخص ما STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :المشاهدين, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ){COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/hungarian.txt0000644000000000000000000152421112246102561016123 0ustar rootroot##name Hungarian ##ownname Magyar ##isocode hu_HU ##plural 2 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x040e ##grflangid 0x24 ##case t ba # $Id: hungarian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nem definiált string) STR_JUST_NOTHING :semmi # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Utas STR_CARGO_PLURAL_PASSENGERS.t :utast STR_CARGO_PLURAL_COAL :Szén STR_CARGO_PLURAL_COAL.t :szenet STR_CARGO_PLURAL_MAIL :Levél STR_CARGO_PLURAL_MAIL.t :levelet STR_CARGO_PLURAL_OIL :Olaj STR_CARGO_PLURAL_OIL.t :olajat STR_CARGO_PLURAL_LIVESTOCK :Állat STR_CARGO_PLURAL_LIVESTOCK.t :állatot STR_CARGO_PLURAL_GOODS :Áru STR_CARGO_PLURAL_GOODS.t :árut STR_CARGO_PLURAL_GRAIN :Búza STR_CARGO_PLURAL_GRAIN.t :búzát STR_CARGO_PLURAL_WOOD :Fa STR_CARGO_PLURAL_WOOD.t :fát STR_CARGO_PLURAL_IRON_ORE :Vasérc STR_CARGO_PLURAL_IRON_ORE.t :vasércet STR_CARGO_PLURAL_STEEL :Acél STR_CARGO_PLURAL_STEEL.t :acélt STR_CARGO_PLURAL_VALUABLES :Értéktárgyak STR_CARGO_PLURAL_VALUABLES.t :értéktárgyakat STR_CARGO_PLURAL_COPPER_ORE :Rézérc STR_CARGO_PLURAL_COPPER_ORE.t :rézércet STR_CARGO_PLURAL_MAIZE :Kukorica STR_CARGO_PLURAL_MAIZE.t :kukoricát STR_CARGO_PLURAL_FRUIT :Gyümölcs STR_CARGO_PLURAL_FRUIT.t :gyümölcsöt STR_CARGO_PLURAL_DIAMONDS :Gyémánt STR_CARGO_PLURAL_DIAMONDS.t :gyémántot STR_CARGO_PLURAL_FOOD :Étel STR_CARGO_PLURAL_FOOD.t :ételt STR_CARGO_PLURAL_PAPER :Papír STR_CARGO_PLURAL_PAPER.t :papírt STR_CARGO_PLURAL_GOLD :Arany STR_CARGO_PLURAL_GOLD.t :aranyat STR_CARGO_PLURAL_WATER :Víz STR_CARGO_PLURAL_WATER.t :vizet STR_CARGO_PLURAL_WHEAT :Búza STR_CARGO_PLURAL_WHEAT.t :búzát STR_CARGO_PLURAL_RUBBER :Gumi STR_CARGO_PLURAL_RUBBER.t :gumit STR_CARGO_PLURAL_SUGAR :Cukor STR_CARGO_PLURAL_SUGAR.t :cukrot STR_CARGO_PLURAL_TOYS :Játék STR_CARGO_PLURAL_TOYS.t :játékot STR_CARGO_PLURAL_CANDY :Cukorka STR_CARGO_PLURAL_CANDY.t :cukorkát STR_CARGO_PLURAL_COLA :Kóla STR_CARGO_PLURAL_COLA.t :kólát STR_CARGO_PLURAL_COTTON_CANDY :Vattacukor STR_CARGO_PLURAL_COTTON_CANDY.t :vattacukrot STR_CARGO_PLURAL_BUBBLES :Buborék STR_CARGO_PLURAL_BUBBLES.t :buborékot STR_CARGO_PLURAL_TOFFEE :Tejkaramella STR_CARGO_PLURAL_TOFFEE.t :tejkaramellát STR_CARGO_PLURAL_BATTERIES :Elem STR_CARGO_PLURAL_BATTERIES.t :elemet STR_CARGO_PLURAL_PLASTIC :Műanyag STR_CARGO_PLURAL_PLASTIC.t :műanyagot STR_CARGO_PLURAL_FIZZY_DRINKS :Szénsavas ital STR_CARGO_PLURAL_FIZZY_DRINKS.t :szénsavas italt # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :utas STR_CARGO_SINGULAR_PASSENGER.t :utast STR_CARGO_SINGULAR_COAL :szén STR_CARGO_SINGULAR_COAL.t :szenet STR_CARGO_SINGULAR_MAIL :levél STR_CARGO_SINGULAR_MAIL.t :levelet STR_CARGO_SINGULAR_OIL :olaj STR_CARGO_SINGULAR_OIL.t :olajat STR_CARGO_SINGULAR_LIVESTOCK :állat STR_CARGO_SINGULAR_LIVESTOCK.t :állatot STR_CARGO_SINGULAR_GOODS :áru STR_CARGO_SINGULAR_GOODS.t :árut STR_CARGO_SINGULAR_GRAIN :búza STR_CARGO_SINGULAR_GRAIN.t :búzát STR_CARGO_SINGULAR_WOOD :fa STR_CARGO_SINGULAR_WOOD.t :fát STR_CARGO_SINGULAR_IRON_ORE :vasérc STR_CARGO_SINGULAR_IRON_ORE.t :vasércet STR_CARGO_SINGULAR_STEEL :acél STR_CARGO_SINGULAR_STEEL.t :acélt STR_CARGO_SINGULAR_VALUABLES :értéktárgy STR_CARGO_SINGULAR_VALUABLES.t :értéktárgyat STR_CARGO_SINGULAR_COPPER_ORE :rézérc STR_CARGO_SINGULAR_COPPER_ORE.t :rézércet STR_CARGO_SINGULAR_MAIZE :kukorica STR_CARGO_SINGULAR_MAIZE.t :kukoricát STR_CARGO_SINGULAR_FRUIT :gyümölcs STR_CARGO_SINGULAR_FRUIT.t :gyümölcsöt STR_CARGO_SINGULAR_DIAMOND :gyémánt STR_CARGO_SINGULAR_DIAMOND.t :gyémántot STR_CARGO_SINGULAR_FOOD :étel STR_CARGO_SINGULAR_FOOD.t :ételt STR_CARGO_SINGULAR_PAPER :papír STR_CARGO_SINGULAR_PAPER.t :papírt STR_CARGO_SINGULAR_GOLD :arany STR_CARGO_SINGULAR_GOLD.t :aranyat STR_CARGO_SINGULAR_WATER :víz STR_CARGO_SINGULAR_WATER.t :vizet STR_CARGO_SINGULAR_WHEAT :búza STR_CARGO_SINGULAR_WHEAT.t :búzát STR_CARGO_SINGULAR_RUBBER :gumi STR_CARGO_SINGULAR_RUBBER.t :gumit STR_CARGO_SINGULAR_SUGAR :cukor STR_CARGO_SINGULAR_SUGAR.t :cukrot STR_CARGO_SINGULAR_TOY :játék STR_CARGO_SINGULAR_TOY.t :játékot STR_CARGO_SINGULAR_CANDY :cukorka STR_CARGO_SINGULAR_CANDY.t :cukorkát STR_CARGO_SINGULAR_COLA :kóla STR_CARGO_SINGULAR_COLA.t :kólát STR_CARGO_SINGULAR_COTTON_CANDY :vattacukor STR_CARGO_SINGULAR_COTTON_CANDY.t :vattacukrot STR_CARGO_SINGULAR_BUBBLE :buborék STR_CARGO_SINGULAR_BUBBLE.t :buborékot STR_CARGO_SINGULAR_TOFFEE :tejkaramella STR_CARGO_SINGULAR_TOFFEE.t :tejkaramellát STR_CARGO_SINGULAR_BATTERY :elem STR_CARGO_SINGULAR_BATTERY.t :elemet STR_CARGO_SINGULAR_PLASTIC :műanyag STR_CARGO_SINGULAR_PLASTIC.t :műanyagot STR_CARGO_SINGULAR_FIZZY_DRINK :szénsavas ital STR_CARGO_SINGULAR_FIZZY_DRINK.t :szénsavas italt # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} utas STR_QUANTITY_COAL :{WEIGHT_LONG} szén STR_QUANTITY_MAIL :{COMMA} csomag levél STR_QUANTITY_OIL :{VOLUME_LONG} olaj STR_QUANTITY_LIVESTOCK :{COMMA} állat STR_QUANTITY_GOODS :{COMMA} láda áru STR_QUANTITY_GRAIN :{WEIGHT_LONG} búza STR_QUANTITY_WOOD :{WEIGHT_LONG} fa STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} vasérc STR_QUANTITY_STEEL :{WEIGHT_LONG} acél STR_QUANTITY_VALUABLES :{COMMA} csomag értéktárgy STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} rézérc STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukorica STR_QUANTITY_FRUIT :{WEIGHT_LONG} gyümölcs STR_QUANTITY_DIAMONDS :{COMMA} zsák gyémánt STR_QUANTITY_FOOD :{WEIGHT_LONG} étel STR_QUANTITY_PAPER :{WEIGHT_LONG} papír STR_QUANTITY_GOLD :{COMMA} zsák arany STR_QUANTITY_WATER :{VOLUME_LONG} víz STR_QUANTITY_WHEAT :{WEIGHT_LONG} búza STR_QUANTITY_RUBBER :{VOLUME_LONG} gumi STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukor STR_QUANTITY_TOYS :{COMMA} játék STR_QUANTITY_SWEETS :{COMMA} zsák cukorka STR_QUANTITY_COLA :{VOLUME_LONG} kóla STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} vattacukor STR_QUANTITY_BUBBLES :{COMMA} buborék STR_QUANTITY_TOFFEE :{WEIGHT_LONG} tejkaramella STR_QUANTITY_BATTERIES :{COMMA} elem STR_QUANTITY_PLASTIC :{VOLUME_LONG} műanyag STR_QUANTITY_FIZZY_DRINKS :{COMMA} szénsavas ital STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}UT STR_ABBREV_COAL :{TINY_FONT}SZ STR_ABBREV_MAIL :{TINY_FONT}LV STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}ÁL STR_ABBREV_GOODS :{TINY_FONT}ÁR STR_ABBREV_GRAIN :{TINY_FONT}BZ STR_ABBREV_WOOD :{TINY_FONT}FA STR_ABBREV_IRON_ORE :{TINY_FONT}VÉ STR_ABBREV_STEEL :{TINY_FONT}AC STR_ABBREV_VALUABLES :{TINY_FONT}ÉP STR_ABBREV_COPPER_ORE :{TINY_FONT}RÉ STR_ABBREV_MAIZE :{TINY_FONT}KU STR_ABBREV_FRUIT :{TINY_FONT}GÜ STR_ABBREV_DIAMONDS :{TINY_FONT}GM STR_ABBREV_FOOD :{TINY_FONT}ÉT STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}AR STR_ABBREV_WATER :{TINY_FONT}VZ STR_ABBREV_WHEAT :{TINY_FONT}BZ STR_ABBREV_RUBBER :{TINY_FONT}GM STR_ABBREV_SUGAR :{TINY_FONT}CU STR_ABBREV_TOYS :{TINY_FONT}JT STR_ABBREV_SWEETS :{TINY_FONT}CK STR_ABBREV_COLA :{TINY_FONT}KL STR_ABBREV_CANDYFLOSS :{TINY_FONT}VC STR_ABBREV_BUBBLES :{TINY_FONT}BB STR_ABBREV_TOFFEE :{TINY_FONT}TK STR_ABBREV_BATTERIES :{TINY_FONT}EL STR_ABBREV_PLASTIC :{TINY_FONT}MA STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}SS STR_ABBREV_NONE :{TINY_FONT}SÁ STR_ABBREV_ALL :{TINY_FONT}ÖS # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} utas STR_BAGS :{COMMA} csomag STR_TONS :{COMMA} tonna STR_LITERS :{COMMA} liter STR_ITEMS :{COMMA} darab STR_CRATES :{COMMA} láda # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Sötétkék STR_COLOUR_PALE_GREEN :Halványzöld STR_COLOUR_PINK :Rózsaszín STR_COLOUR_YELLOW :Sárga STR_COLOUR_RED :Piros STR_COLOUR_LIGHT_BLUE :Világoskék STR_COLOUR_GREEN :Zöld STR_COLOUR_DARK_GREEN :Sötétzöld STR_COLOUR_BLUE :Kék STR_COLOUR_CREAM :Krémszín STR_COLOUR_MAUVE :Mályvaszín STR_COLOUR_PURPLE :Lila STR_COLOUR_ORANGE :Narancssárga STR_COLOUR_BROWN :Barna STR_COLOUR_GREY :Szürke STR_COLOUR_WHITE :Fehér # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mi/h STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}LE STR_UNITS_POWER_METRIC :{COMMA}LE STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonna STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter STR_UNITS_VOLUME_LONG_SI :{COMMA} köbméter STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} láb STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Szűrő kifejezés: STR_LIST_FILTER_OSKTITLE :{BLACK}Kulcsszó megadása a szűréshez STR_LIST_FILTER_TOOLTIP :{BLACK}Írj ide egy kulcsszót ami alapján szűrni szeretnéd a listát STR_TOOLTIP_SORT_ORDER :{BLACK}Csökkenő/növekvő sorbarendezés STR_TOOLTIP_SORT_CRITERIA :{BLACK}Sorbarendezési feltétel STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Szűrési feltétel kiválasztása STR_BUTTON_SORT_BY :{BLACK}Rendezés STR_BUTTON_LOCATION :{BLACK}Megnéz STR_BUTTON_RENAME :{BLACK}Átnevez STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Ablak bezárása STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Ablak címsora - húzd ezt a mozgatáshoz STR_TOOLTIP_SHADE :{BLACK}Ablak összecsukása - csak a címsor látszódik STR_TOOLTIP_DEBUG :{BLACK}NewGRF nyomonkövetés információ mutatása STR_TOOLTIP_STICKY :{BLACK}Ez az ablak akkor se záródjon be, ha az "Összes ablak bezárása" gombot megnyomjuk STR_TOOLTIP_RESIZE :{BLACK}Fogd és húzd hogy átméretezd az ablakot STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Kicsi/nagy ablakméret közötti váltás STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Görgetősáv - fel/le görgeti a listát STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Görgetősáv - jobbra/balra görgeti a listát STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Építmények lerombolása egy mezőről. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a becsült költséget # Query window STR_BUTTON_DEFAULT :{BLACK}Alapértelmezett STR_BUTTON_CANCEL :{BLACK}Mégsem STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :0123456789öüóqwertzuiopőúasdfghjkléáűíyxcvbnm,.- . STR_OSK_KEYBOARD_LAYOUT_CAPS :§'"+!%/=()ÖÜÓQWERTZUIOPŐÚASDFGHJKLÉÁŰÍYXCVBNM?:_ . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Távolság: {NUM} STR_MEASURE_AREA :{BLACK}Terület: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Távolság: {NUM}{}Magasságkülönbség: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Terület: {NUM} x {NUM}{}Magasságkülönbség: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Lakosság STR_SORT_BY_CAPTION_NAME :{BLACK}Név STR_SORT_BY_CAPTION_DATE :{BLACK}Dátum # These are used in dropdowns STR_SORT_BY_NAME :Név STR_SORT_BY_PRODUCTION :Termelés STR_SORT_BY_TYPE :Típus STR_SORT_BY_TRANSPORTED :Elszállítás STR_SORT_BY_NUMBER :Szám STR_SORT_BY_PROFIT_LAST_YEAR :Tavalyi profit STR_SORT_BY_PROFIT_THIS_YEAR :Idei profit STR_SORT_BY_AGE :Életkor STR_SORT_BY_RELIABILITY :Megbízhatóság STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Rakomány sz. összkapacitás STR_SORT_BY_MAX_SPEED :Maximum sebesség STR_SORT_BY_MODEL :Modell STR_SORT_BY_VALUE :Érték STR_SORT_BY_LENGTH :Hossz STR_SORT_BY_LIFE_TIME :Élettartamból hátralévő idő STR_SORT_BY_TIMETABLE_DELAY :Menetrendi késés STR_SORT_BY_FACILITY :Állomástípus STR_SORT_BY_WAITING :Várakozó rakomány értéke STR_SORT_BY_RATING_MAX :Legjobb vélemény szerint STR_SORT_BY_RATING_MIN :Legrosszabb vélemény szerint STR_SORT_BY_ENGINE_ID :JárműID STR_SORT_BY_COST :Ár STR_SORT_BY_POWER :Telj. STR_SORT_BY_TRACTIVE_EFFORT :Vonóerő STR_SORT_BY_INTRO_DATE :Bevezetési dátum STR_SORT_BY_RUNNING_COST :Üzemeltetési ktsg. STR_SORT_BY_POWER_VS_RUNNING_COST :Telj./Üzemeltetési ktsg. STR_SORT_BY_CARGO_CAPACITY :Szállítási kapacitás STR_SORT_BY_RANGE :Hatótávolság # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Játék szüneteltetése STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Játék gyorsítása STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Beállítások STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Játék mentése, játék elhagyása, kilépés STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Térkép, extra látkép és feliratok listája STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Településlista mutatása STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Támogatások megjelenítése STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Állomások listája STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Pénzügyi adatok STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Általános adatok STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafikonok STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}A vállalatok helyezése STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Gazdasági épület építése, meglévők listázása STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vonatok listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Közúti járművek listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Hajók listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Repülőgépek listája. Ctrl+kattintással válszthatsz a csoport- vagy járműlista között STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Közelítés STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Távolítás STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Vasúti pálya építése STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Út építése STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Vízi út építése STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Repülőtér építése STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Nyisd meg a tájrendező ablakot a talaj emeléséhez vagy süllyesztéséhez, faültetéshez stb. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Hang/zene beállításai STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Legutóbbi üzenet/újsághír, üzenetek beállításai STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Terület-információ, konzol, MI/Játékszkript nyomkövetés, képmentések, az OpenTTD-ről STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Eszköztár váltás # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Pálya betöltése, mentése, pályaszerkesztő elhagyása, kilépés STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Pályaszerkesztő STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}A kezdődátum hátrébb állítása egy évvel STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}A kezdődátum előrébb állítása egy évvel STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Kattints ide a kezdődátum beírásához STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Térkép, városlista STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Táj szerkesztése STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Település-generálás STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Gazdasági épület-generálás STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Út építése STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Faültetés. Shift lenyomásával megmutatja a becsült építési költséget STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Felirat lerakása STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objektum elhelyezése. Shift lenyomásával megmutatja a várható költséget ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Pálya mentése STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Pálya betöltése STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Magasságtérkép mentése STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Magasságtérkép betöltése STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Pályaszerkesztő elhagyása STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Kilépés ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Beállítások STR_SETTINGS_MENU_CONFIG_SETTINGS :Haladó beállítások STR_SETTINGS_MENU_SCRIPT_SETTINGS :MI / Játékszkript beállítások STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF beállítások STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Átlátszósági beállítások STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Városnevek mutatása STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Állomásnevek mutatása STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Ellenőrző pontok mutatása STR_SETTINGS_MENU_SIGNS_DISPLAYED :Feliratok mutatása STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Az ellenfelek feliratainak és neveinek mutatása STR_SETTINGS_MENU_FULL_ANIMATION :Teljes animáció STR_SETTINGS_MENU_FULL_DETAIL :Minden részlet STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Átlátszó épületek STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Átlátszó feliratok ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Játék mentése STR_FILE_MENU_LOAD_GAME :Játék betöltése STR_FILE_MENU_QUIT_GAME :Kilépés a játékból STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Kilépés ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Világtérkép STR_MAP_MENU_EXTRA_VIEW_PORT :Extra látkép STR_MAP_MENU_SIGN_LIST :Feliratok listája ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Városlista STR_TOWN_MENU_FOUND_TOWN :Új város alapítása ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Támogatások STR_SUBSIDIES_MENU_GOAL :Jelenlegi célok ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Működési nyereség grafikon STR_GRAPH_MENU_INCOME_GRAPH :Bevétel grafikon STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Elszállított rakomány grafikon STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Teljesítmény grafikon STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Vállalat értéke grafikon STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Rakományok szállítási díja ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Vállalatok helyezései STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Teljesítményértékelések részletezése STR_GRAPH_MENU_HIGHSCORE :Rekord Tábla ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Gazdasági épületek listája STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Ipari lánc STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Új gazdasági épület építése ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Normál vasút építése STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Villamosított vasút építése STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Egysínű vasút építése STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev vasút építése ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Út építése STR_ROAD_MENU_TRAM_CONSTRUCTION :Villamospálya építése ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Vízi út építése ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Repülőtér építése ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Tájrendezés STR_LANDSCAPING_MENU_PLANT_TREES :Faültetés STR_LANDSCAPING_MENU_PLACE_SIGN :Felirat lerakása ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Hang/zene ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Legutóbbi üzenet/újsághír STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Előző üzenetek ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Terület-információ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Átváltás konzolra STR_ABOUT_MENU_AI_DEBUG :MI / Játékszkript nyomkövetés STR_ABOUT_MENU_SCREENSHOT :Képmentés STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Teljes nagyítású képmentés STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Alapértelmezett nagyítású képmentés STR_ABOUT_MENU_GIANT_SCREENSHOT :Képmentés teljes térképről STR_ABOUT_MENU_ABOUT_OPENTTD :Az 'OpenTTD'-ről STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite elhelyező STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Befoglaló doboz ki/bekapcsolása STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Koszos épületek színezésének be/kikapcsolása ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Már STR_MONTH_ABBREV_APR :Ápr STR_MONTH_ABBREV_MAY :Máj STR_MONTH_ABBREV_JUN :Jún STR_MONTH_ABBREV_JUL :Júl STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Szp STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dec STR_MONTH_JAN :január STR_MONTH_FEB :február STR_MONTH_MAR :március STR_MONTH_APR :április STR_MONTH_MAY :május STR_MONTH_JUN :június STR_MONTH_JUL :július STR_MONTH_AUG :augusztus STR_MONTH_SEP :szeptember STR_MONTH_OCT :október STR_MONTH_NOV :november STR_MONTH_DEC :december ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Jelkulcs STR_GRAPH_KEY_TOOLTIP :{BLACK}A grafikonok jelmagyarázata STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Működési nyereség grafikon STR_GRAPH_INCOME_CAPTION :{WHITE}Bevétel grafikon STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Elszállított áruk mennyisége STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Vállalatok teljesítménye (legjobb teljesítmény=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Vállalatok értéke STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Rakományok szállítási díja STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}ÚTON TÖLTÖTT NAPOK STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Fizetség 10 egységnyi (vagy 10000 liter) rakomány 20 négyzet távolságra való szállítsa esetén STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Bekapcsol mind STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Kikapcsol mind STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK})Összes rakomány megjelenítése a rakományok szállítási díja grafikonon STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ne mutasson rakományokat a rakományok szállítási díja grafikonon STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Az adott rakomány grafikonjának mutatása be/ki STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Részletes teljesítményértékelés mutatása # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Jelmagyarázat a grafikonokhoz STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}A vállalat adatainak mutatása/elrejtése a grafikonon # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}A vállalatok helyezése STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Mérnök STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Forgalomigazgató STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Szállításszervező STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Útfelügyelő STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Igazgató STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Főigazgató STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Alelnök STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Elnök STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Nagytőkés # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Teljesítményértékelések részletezése STR_PERFORMANCE_DETAIL_KEY :{BLACK}Részletek STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vállalat részletes megtekintése ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Járművek: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Állomások: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. profit: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. bevétel: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. bevétel: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Elszállítás: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Rakomány: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pénz: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kölcsön: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Összesen: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Az előző évben profitot hozó járművek száma, beleértve a közúti, vasúti, vízi és légi járművek STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Közelmúltban kiszolgált állomásrészek száma. Vasútállomás, buszmegálló, repülőtér külön számolódik, még akkor is, ha egy állomáshoz tartoznak STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}A legalacsonyabb bevételt hozó jármű profitja (csak 2 évnél idősebb járművek) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Megkeresett pénz a negyedévben a legkisebb profitnál az utolsó 12 negyedévben. STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Megkeresett pénz a negyedévben a legnagyobb profitnál az utolsó 12 negyedévben STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Utolsó négy negyedévben elszállított rakomány STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Az utolsó negyedévben elszállított rakományok típusa STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Vállalat elérhető készpénzmennyisége a bankban STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}A vállalat által felvett hitelösszeg STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Megszerzett pontok az elérhető pontokból # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz zenegép STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Mind STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Régi Stílus STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Új Stílus STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Szép az Élet STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Saját 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Saját 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Zene Hangereje STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Hangok Hangereje STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Szám STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Cím STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Kever STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Műsor STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Előző szám STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Következő szám STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Zene leállítása STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Zene elindítása STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}A csúszkákkal beállíthatod a zene és a hanghatások hangerejét STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}A 'minden szám' műsor kiválasztása STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}A 'régi stílus' zenei műsor kiválasztása STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Az 'új stílus' zenei műsor kiválasztása STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}A 'szép az élet' zenei műsor kiválasztása STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}A 'Saját 1' (felhasználói) zenei műsor kiválasztása STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}A 'Saját 2' (felhasználói) zenei műsor kiválasztása STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Véletlen sorrendű lejátszás be/ki STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}A számkiválasztó ablak megjelenítése STR_ERROR_NO_SONGS :{WHITE}Egy zeneszámokat nem tartalmazó zenei alapcsomag lett kiválasztva. A játékban nem lesz zene # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Zenei műsor kiválasztása STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Számlista STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}"{STRING}" Műsora STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Törlés STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Az aktuális műsor törlése (csak Saját 1 és Saját 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Kattints a zeneszámra a zenei műsorhoz való hozzáadására (csak Saját 1 és Saját 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kattints a zeneszámra annak az aktuális zenei műsorból való eltávolításához (csak Saját 1 és Saját 2 esetén) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}A legjobb vállalatok, melyek elérték {NUM}-t STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Vállalatok helyezései {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Üzletember STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Vállalkozó STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Iparos STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Tőkés STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Nagytőkés STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mágnás STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Az évszázad iparmágnása STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} elérte a '{STRING}' rangot! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} - {COMPANY} elérte a '{STRING}' rangot! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Térkép - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Domborzat STR_SMALLMAP_TYPE_VEHICLES :Járművek STR_SMALLMAP_TYPE_INDUSTRIES :Gazdaság STR_SMALLMAP_TYPE_ROUTES :Utak STR_SMALLMAP_TYPE_VEGETATION :Növényzet STR_SMALLMAP_TYPE_OWNERS :Tulajdonosok STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Domborzat mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Járművek mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Gazdasági épületek mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Szállítási útvonalak mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Növényzet mutatása a térképen STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Tulajdonosok mutatása a térképen STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Kattints egy gazdasági épület típusra annak megjelenítésének ki/bekapcsolásához. Ctrl+kattintással kikapcsolja az összeset kivéve a kiválasztott típust. Ctrl+kattintás még egyszer bekapcsolja az összeset STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kattints egy vállalatra a tulajdonainak megjelenítésének ki/bekapcsolásához. Ctrl+kattintással kikapcsolja az összeset kivéve a kiválasztottat. Ctrl+kattintás még egyszer bekapcsolja az összeset STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Út STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Vasút STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Állomás/Repülőtér/Kikötő STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Épület/Gazdaság STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Jármű STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Vonat STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Közúti Jármű STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Hajó STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Repülőgép STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Szállítási Útvonal STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Erdő STR_SMALLMAP_LEGENDA_FOREST.t :{TINY_FONT}{BLACK}erdőt STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Vasútállomás STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Teherautó-rakodóhely STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Buszmegálló STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Repülőtér/Helikopter-leszálló STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Kikötő STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Göröngyös Talaj STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Füves Talaj STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Csupasz Föld STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Szántóföld STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Fa STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Kő STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Víz STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Nincs Tulajdonos STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Település STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Gazdasági épület STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Sivatag STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Hó STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Városnevek be/ki STR_SMALLMAP_CENTER :{BLACK}A térkép közepét a jelenlegi helyre állítja STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Kikapcsol mind STR_SMALLMAP_ENABLE_ALL :{BLACK}Bekapcsol mind STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mutasd a magasságot STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ne mutasd a gazdasági létesítményeket a térképen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mutasd az összes gazdasági létesítményt a térképen STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Magasságtérkép be/kikapcsolása STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Semelyik vállalat tulajdonainak megjelenítése a térképen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Összes vállalat tulajdonainak megjelenítése a térképen # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Utolsó üzenet vagy újsághír megmutatása STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * SZÜNET * * STR_STATUSBAR_AUTOSAVE :{RED}Automatikus mentés STR_STATUSBAR_SAVING_GAME :{RED}* * JÁTÉK MENTÉSE * * # News message history STR_MESSAGE_HISTORY :{WHITE}Előző üzenetek STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Az előző hírüzenetek listája STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Üzenet STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Megérkezett az első vonat {STATION} állomásra! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Megérkezett az első busz {STATION} állomásra! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Megérkezett az első teherautó {STATION} állomásra! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Első utasszállító villamos megérkezett {STATION} állomásra! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Első teherszállító villamos megérkezett {STATION} állomásra! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Megérkezett az első hajó {STATION} állomásra! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}A lakosság ünnepel . . .{}Megérkezett az első repülőgép {STATION} állomásra! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Vonatbaleset!{}{COMMA} ember halt meg az ütközés során STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Közúti baleset!{}A vezető meghalt a vonattal való ütközésben STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Közúti baleset!{}{COMMA} ember meghalt a vonattal való ütközéskor STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Lezuhant egy repülőgép!{}{COMMA} ember halt meg a zuhanás után {STATION} állomáson STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Légibaleset!{}A repülőnek elfogyott az üzemanyaga, {COMMA} ember halt meg a zuhanás során! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinbaleset {STATION} közelében! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}'UFO' ütközés pusztított el egy közúti járművet! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Olajfinomító robbant fel {TOWN} közelében! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Gyanús körülmények között felrobbant egy gyár {TOWN} közelében! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' szállt le {TOWN} közelében! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Egy szénbánya lesüllyedése földcsuszamlást okozott {TOWN} közelében! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Áradás!{}Legalább {COMMA} ember meghalt vagy eltűnt a halálos áradás következtében! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Egy szállítási vállalat bajban van! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} el lesz árverezve vagy felszámolásra kerül, ha teljesítménye nem nő hamarosan! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Szállítási vállalatok egyesülése! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} fel lett vásárolva {STRING} által {CURRENCY_LONG}-ért! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Csőd! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} felszámolásra került a hitelezői által és minden vagyonát elárverezték! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Új szállítási vállalat alakult! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} {TOWN} közelében kezd építkezni! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} felvásárlásra került {STRING} által! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Elnök) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} támogatásával új várost alapítottak {TOWN} néven! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Új {STRING.t} építenek {TOWN} közelében! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Új {STRING.t} ültettek {TOWN} közelében! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} bejelentette, hogy hamarosan bezár! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} bejelentette, hogy ellátási gondok miatt hamarosan bezár! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} bejelentette, hogy a közeli fák hiánya miatt hamarosan bezár! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Európai Monetáris Unió!{}{}Az Euró bevezetésre került mint kizárólagos valuta a mindennapos pénzügyi tranzakciókhoz az országodban! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Gazdasági világválság!{}{}A közgazdászok gazdasági válságtól tartanak! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Vége a világválságnak!{}{}A kereskedelem fellendül, ami önbizalmat ad az iparnak, és erősödik a gazdaság! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} növeli a termelését! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Új szénrétegeket találtak {INDUSTRY} tárnáiban!{}A termelés megkétszereződik! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Új olajtartalékokat találtak {INDUSTRY} alatt!{}A termelés megkétszereződik! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} haladó gazdálkodási módszerekkel megkétszerezi termelését! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}termelés nőtt! {INDUSTRY} mostantól {COMMA}%-kal többet termel! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} termelése a felére csökkent STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Egy rovaráradat {INDUSTRY} pusztulását okozta!{}A termelés a felére csökkent STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}termelés csökkent! {INDUSTRY} mostantól {COMMA}%-kal kevesebbet termel! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} a járműtelepen vár STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} a garázsban vár STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} a dokkban vár STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} a hangárban vár # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} menetrendje túl kevés utasításból áll STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} érvénytelen utasítással rendelkezik STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} duplikált utasítással rendelkezik STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} utasításai között nem létező állomás szerepel # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} elöregedett STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} nagyon elöregedett STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} nagyon elöregedett, sürgősen le kell cserélni STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nem talál utat a célpontjához STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} eltévedt STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} elmúlt évi profitja {CURRENCY_LONG} volt STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} nem tud elmenni a következő repülőtérig, mert az túl messze van STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Hibás átalakítási utasítás miatt {VEHICLE} megállt STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Az automatikus járműfelújítás sikertelen volt {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Új {STRING} elérhető! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Új {STRING} elérhető! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} többé nem fogad el {STRING.t} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} többé nem fogad el {STRING.t} és {STRING.t} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} most már elfogad {STRING.t} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} most már elfogad {STRING.t} és {STRING.t} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}A támogatás határideje lejárt:{}{}{STRING} szállításáért {STRING} és {STRING} között már nem jár támogatás STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Támogatás visszavonva:{}{}{STRING} szállítása {STRING} és {STRING} között már nem támogatott STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Támogatási ajánlat:{}{}Az első {STRING} szállító {STRING} és {STRING} között egy éves támogatást kap a helyi önkormányzattól! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között másfélszeres hasznot hoz neki! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között kétszeres hasznot hoz neki! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között háromszoros hasznot hoz neki! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} támogatást kapott!{}{}Így {STRING} szállítása {STRING} és {STRING} között négyszeres hasznot hoz neki! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Közlekedési zűrzavar {TOWN} városában!{}{}{STRING} által indított útfelújítás keseríti meg hat hónapig az autóvezetők életét! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Szállítási monopólium! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN} önkormányzata és {STRING} szerződést kötött egy éves kizárólagos szállítási jogokra! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}{COMMA}. 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}A látképre a fő nézet pozícióját másolja STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Látkép visszatöltése STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}A látkép pozícióját a fő nézetre másolja # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Beállítások STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Pénznem STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}A használt pénznem kiválasztása ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Angol Font (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Amerikai Dollár (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euró (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japán Jen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Osztrák Shilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belga Frank (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Svájci Frank (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Cseh Korona (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Német Márka (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dán Korona (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spanyol Pezeta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finn Márka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Svájci Frank (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Görög Drachma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Magyar Forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Izlandi Korona (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Olasz Líra (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Holland Gulden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norvég Korona (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Lengyel Zlotyi (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Román Lej (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Orosz Rubel (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Szlovén Tolár (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Svéd Korona (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Török Líra (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Szlovák Korona (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazil Real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Észt Korona (EKK) STR_GAME_OPTIONS_CURRENCY_LTL :Litván Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Dél-koreai Von (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Dél-afrikai Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saját... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mértékegységek STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mértékegység választás ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Angolszász STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrikus STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Közúti járművek STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}A közúti közlekedés oldalának kiválasztása STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Balra hajtás STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Jobbra hajtás STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Városnevek STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}A városnevek stílusának kiválasztása ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angol (Eredeti) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francia STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Német STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Angol (További) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latin-amerikai STR_GAME_OPTIONS_TOWN_NAME_SILLY :Komolytalan STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svéd STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holland STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finn STR_GAME_OPTIONS_TOWN_NAME_POLISH :Lengyel STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Szlovák STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norvég STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Magyar STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Osztrák STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romániai STR_GAME_OPTIONS_TOWN_NAME_CZECH :Cseh STR_GAME_OPTIONS_TOWN_NAME_SWISS :Svájci STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dán STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Török STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Olasz STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalán ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatikus mentés STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Az automatikus mentések közötti időtartam kiválasztása STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Nincs STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Minden hónapban STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :3 havonta STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :6 havonta STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :12 havonta STR_GAME_OPTIONS_LANGUAGE :{BLACK}Nyelv STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Válassz nyelvet STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Teljes képernyő STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Jelöld be ezt, ha teljes képernyős módban szeretnél játszani az OpenTTD-vel STR_GAME_OPTIONS_RESOLUTION :{BLACK}Képernyő felbontás STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Játékhoz használt felbontás kiválasztása STR_GAME_OPTIONS_RESOLUTION_OTHER :egyéb STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Képmentés formátuma STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Képmentésekhez használandó formátum kiválasztása STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikus alapcsomag STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}A játékhoz használandó grafikus alapcsomag kiválasztása STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} hiányzó/hibás fájl STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}További információk a grafikus alapcsomagról STR_GAME_OPTIONS_BASE_SFX :{BLACK}Hang alapcsomag STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Használandó hang alapcsomag kiválasztása STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}További információk a hang alapcsomagról STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Zenei alapcsomag STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Használandó zenei alapcsomag kiválasztása STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} hibás fájl STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}További információk a zenei alapcsomagról STR_ERROR_FULLSCREEN_FAILED :{WHITE}Teljes képernyős módra váltás sikertelen # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Saját pénznem STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Átváltási arány: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Átváltási arány csökkentése egy Fonthoz (£) képest STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Átváltási arány növelése egy Fonthoz (£) képest STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Átváltási arány beállítása egy Fonthoz (£) képest STR_CURRENCY_SEPARATOR :{LTBLUE}Elválasztó: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Elválasztó beállítása a pénznemedhez STR_CURRENCY_PREFIX :{LTBLUE}Előtag: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Előtag beállítása a pénznemedhez STR_CURRENCY_SUFFIX :{LTBLUE}Utótag: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Utótag beállítása a pénznemedhez STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Euróra váltás: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Euróra váltás: {ORANGE}soha STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Euróra váltás évének beállítása STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Euróra váltás korábban STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Euróra váltás később STR_CURRENCY_PREVIEW :{LTBLUE}Előnézet: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Font (£) a pénznemedben STR_CURRENCY_CHANGE_PARAMETER :{BLACK}A saját pénznem paramétereinek megváltoztatása STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Ellenfelek száma legfeljebb: {ORANGE}{COMMA} STR_NONE :Semmi STR_FUNDING_ONLY :Csak finanszírozás STR_MINIMAL :Minimális STR_NUM_VERY_LOW :Nagyon kevés STR_NUM_LOW :Kevés STR_NUM_NORMAL :Normál STR_NUM_HIGH :Sok STR_NUM_CUSTOM :Egyedi STR_NUM_CUSTOM_NUMBER :Egyedi ({NUM}) STR_VARIETY_NONE :Nincs STR_VARIETY_VERY_LOW :Nagyon alacsony STR_VARIETY_LOW :Alacsony STR_VARIETY_MEDIUM :Közepes STR_VARIETY_HIGH :Magas STR_VARIETY_VERY_HIGH :Nagyon magas STR_AI_SPEED_VERY_SLOW :Nagyon lassú STR_AI_SPEED_SLOW :Lassú STR_AI_SPEED_MEDIUM :Közepes STR_AI_SPEED_FAST :Gyors STR_AI_SPEED_VERY_FAST :Nagyon gyors STR_SEA_LEVEL_VERY_LOW :Nagyon alacsony STR_SEA_LEVEL_LOW :Alacsony STR_SEA_LEVEL_MEDIUM :Közepes STR_SEA_LEVEL_HIGH :Magas STR_SEA_LEVEL_CUSTOM :Egyedi STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Egyedi ({NUM}%) STR_RIVERS_NONE :Nincs STR_RIVERS_FEW :Kevés STR_RIVERS_MODERATE :Közepes STR_RIVERS_LOT :Sok STR_DISASTER_NONE :Nincs STR_DISASTER_REDUCED :Ritka STR_DISASTER_NORMAL :Normál STR_SUBSIDY_X1_5 :1,5x STR_SUBSIDY_X2 :2x STR_SUBSIDY_X3 :3x STR_SUBSIDY_X4 :4x STR_TERRAIN_TYPE_VERY_FLAT :Nagyon sík STR_TERRAIN_TYPE_FLAT :Sík STR_TERRAIN_TYPE_HILLY :Dombos STR_TERRAIN_TYPE_MOUNTAINOUS :Hegyes STR_CITY_APPROVAL_PERMISSIVE :Engedékeny STR_CITY_APPROVAL_TOLERANT :Toleráns STR_CITY_APPROVAL_HOSTILE :Ellenséges STR_WARNING_NO_SUITABLE_AI :{WHITE}Nincsen megfelelő MI...{}Letölthetsz néhány MI-t a tartalomletöltő rendszeren keresztül # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Haladó beállítások STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Szűrő kifejezés: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Összes szétnyitása STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Összes összecsukása STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(leírás nem elérhető) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Alapértelmezett érték: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Beállítás típusa: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Kliens beállítás (mentésben nem tárolva; minden játékot befolyásol) STR_CONFIG_SETTING_TYPE_GAME_MENU :Játék beállítás (mentésben tárolva; csak az új játékokat befolyásolja) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Játék beállítás (mentésben tárolva; csak a jelenlegi játékot befolyásolja) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Vállalat beállítás (mentésben tárolva; csak az új játékokat befolyásolja) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Vállalat beállítás (mentésben tárolva; csak a jelenlegi vállalatot befolyásolja) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Mutat: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Leszűkíti a listát a módosított értékekkel rendelkező opciókra STR_CONFIG_SETTING_RESTRICT_BASIC :Alapbeállítások STR_CONFIG_SETTING_RESTRICT_ADVANCED :Haladó beállítások STR_CONFIG_SETTING_RESTRICT_ALL :Szakértő beállítások / minden beállítás STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Beállítások az eredetitől eltérő értékekkel STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Beállítosok amelyeknek a jelenlegi értéke eltér az eredetitől STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Lista szűkítése a beállítások szerint STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Minden beállítástípus STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Kliens beállítások (nincs mentésben tárolva; minden játékot érintenek) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Játék beállítások (mentésben tárolva; csak az új játékokat érintik) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Játék beállítások (mentésben tárolva; csak a jelenlegi játékot érintik) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Vállalat beállítások (mentésben tárolva; csak az új játékokat érintik) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Vállalat beállítások (mentésben tárolva; csak a jelenlegi vállalatot érintik) STR_CONFIG_SETTING_OFF :Ki STR_CONFIG_SETTING_ON :Be STR_CONFIG_SETTING_DISABLED :kikapcsolva STR_CONFIG_SETTING_COMPANIES_OFF :Kikapcsolva STR_CONFIG_SETTING_COMPANIES_OWN :Saját vállalat STR_CONFIG_SETTING_COMPANIES_ALL :Minden vállalat STR_CONFIG_SETTING_NONE :Nincs STR_CONFIG_SETTING_ORIGINAL :Eredeti STR_CONFIG_SETTING_REALISTIC :Valósághű STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Balra STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Középen STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Jobbra STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximális kezdeti hitelkeret: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximálisan kölcsönözhető összeg (az inflációtól eltekintve) STR_CONFIG_SETTING_INTEREST_RATE :Kamatláb: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Banki hitel kamat; inflációt is szabályozza, ha be van kapcsolva STR_CONFIG_SETTING_RUNNING_COSTS :Üzemeltetési költségek: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Járművek karbantartási és üzemeltetési költségeinek a szintje STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Építkezési sebesség: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Korlátozza az építkezési sebességét számítógépes ellenfeleknek STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Jármű lerobbanások: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Megfelelően karbantartott járművek lerobbanásának gyakorisága STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Támogatási szorzó érték: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Támogatott kapcsolatok kifizetéseinek szorzója STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Építkezési költségek: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Építkezések és beszerzésk költségeinek szintje STR_CONFIG_SETTING_RECESSIONS :Gazdasági válságok: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ha bekapcsolod, gazdasági válság fog kitörni néhány évente. A válság alatt az összes ipar jelentősen kevesebbet termel. (A válság végével a termelés vissza áll az eredeti szintre.) STR_CONFIG_SETTING_TRAIN_REVERSING :Vonatok állomáson történő megfordulásának tiltása: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ha engedélyezve van, a vonatok nem fordulnak vissza egy (nem vég-) állomáson, még ha lenne egy rövidebb út is visszafordulva STR_CONFIG_SETTING_DISASTERS :Katasztrófák: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ha engedélyezve van, néha katasztrófa történhet, ami megállíthatja vagy megsemmisítheti a járműveket és az infrastruktúrát STR_CONFIG_SETTING_CITY_APPROVAL :Városi tanács hozzáállása a területének az átépítéséhez: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Válaszd ki, hogy mennyi zaj és környezeti kár okozása befolyásolja a cég megítélését egy városban, mely hatással van a cég további építési lehetőségeire a város területén belül STR_CONFIG_SETTING_BUILDONSLOPES :Lejtőre és partokra építés: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Bekapcsolva utak, vasutak és állomások lejtőre is építhetőek. Kikapcsolva csak olyan lejtőre építhetőek, melyek megegyeznek a lejtő irányával és nem igényelnek egyéb létesítményeket STR_CONFIG_SETTING_AUTOSLOPE :Épületek, vágányok stb. alatti tereprendezés engedélyezése: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tájrendezés engedélyezése épületek és utak alatt azok eltávolítása nélkül STR_CONFIG_SETTING_CATCHMENT :Élethűbben méretezett állomási vonzáskörzetek bekapcsolása: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :A különböző állomások és repterek más vonzáskörzettel rendelkeznek STR_CONFIG_SETTING_EXTRADYNAMITE :Települési tulajdonú utak/hidak/alagutak rombolásának engedélyezése: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Városi tulajdonú infrastruktúra és épületek könnyebb eltávolíthatósága STR_CONFIG_SETTING_TRAIN_LENGTH :Vonatok maximális hossza: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Vonatok maximális hosszának beállítása STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} mező STR_CONFIG_SETTING_SMOKE_AMOUNT :Járművek kipufogógáz/füst mennyisége: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Járművek által kibocsátott füst vagy szikra mennyiségének beállítása STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Vonatok gyorsulási módja: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Vonatok gyorsulásának fizikai modelljének beállítása. Az "eredeti" modellben a járművek egyenlően kapnak emelkedő általi büntetést. A "valósághű" modell a járművek különböző tulajdonságai alapján bünteti az emelkedőket és az íveket, úgymint hossz és vonóerő STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Közúti járművek gyorsulási módja: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Közúti járművek gyorsulásának fizikai modelljének beállítása. Az "eredeti" modellben a járművek egyenlően kapnak emelkedő általi büntetést. A "valósághű" modell a járművek különböző tulajdonságai alapján bünteti az emelkedőket és az íveket, pl. vonóerő STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Emelkedő meredeksége vonatoknak: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Egy emelkedő mező meredeksége vonatoknak. Nagyobb érték esetén a vonat nehezebben mássza meg az emelkedőt STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Emelkedő meredeksége közúti járműveknek: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Egy emelkedő mező meredeksége közúti járműveknek. Nagyobb érték esetén a jármű nehezebben mássza meg az emelkedőt STR_CONFIG_SETTING_FORBID_90_DEG :Vonatok és hajók nem tehetnek 90 fokos kanyart: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 fokos kanyarok akkor fordulnak elő, ha egy vízszintes pályaelemet egy függőleges elem követ közvetlenül a következő mezőn, ami által a vonat egy 90 fokos kanyart tesz a szokásos 45 fokos helyett. Ez ugyanígy előfordulhat hajók esetében is STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Nem közvetlen szomszédos állomások egyesítése: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Állomásrészek hozzáadásának engedélyezése úgy, hogy az nem érinti közvetlenül a meglévő részeket. Ctrl+kattintás szükséges hozzá az új részek elhelyezése közben STR_CONFIG_SETTING_IMPROVEDLOAD :Járművek egymás utáni telerakodása (egyidejű helyett): {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ha engedélyezett, az egyszerre az állomáson tartózkodó járművek egymás után kerülnek berakodásra. A következő jármű berakodása csak akkor kezdődik el, ha van elegendő áru az előző jármű teljes megtöltésére STR_CONFIG_SETTING_GRADUAL_LOADING :Járművek fokozatos rakodása: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Járművek fokozatos rakodása meghatározott rakodási időkkel ahelyett, hogy minden egyszerre lenne berakodva egy adott ideig az áru mennyiségétől függően STR_CONFIG_SETTING_INFLATION :Infláció: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Infláció engedélyezése a gazdaságban, ahol a költségek jobban emelkednek, mint a bevételek STR_CONFIG_SETTING_SELECTGOODS :Csak igény esetén kerüljön rakomány az állomásra: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Csak akkor kerül az állomásra az áru, ha arra igény van egy berakandó jármű által. Ez megelőzi a rossz értékelés kialakulását azokra az árufajtákra, amik nem kerülnek az állomáson kiszolgálásra STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Hidak maximális hossza: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Az építendő hidak maximális hossza STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Alagutak maximális hossza: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Az építendő alagutak maximális hossza STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Kézi nyersanyaglelőhely-létesítési módszer: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Nyersanyaglelőhelyek létesítésének módszere. "Nincs" azt jelenti, hogy nem lehetséges új alapítása, "kutatás támogatása" azt jelenti, hogy az alapítási lehetséges, de véletlenszerűen bukkan fel valahol a térképen, mint ahogy az magától történne, "mint általában" azt jelenti, hogy úgy alapíthatóak, mint a többi, feldolgozással foglalkozó gazdasági épület STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :nincs STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :mint általában STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :kutatás támogatása STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Gazdasági épületek körüli sík terület: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Egy gazdasági épület körüli sík terület mennyisége. Ez biztosít fennmaradó üres helyet az épület körül pl. pálya építésére stb. STR_CONFIG_SETTING_MULTIPINDTOWN :Több ugyanolyan gazdasági épület településenként: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Alapvetően egy település nem szeretne egy fajta gazdasági épületből többet. Ezzel a beállítással engedélyezni lehet hogy több ugyanolyan típusú gazdasági épület is tartozzon egy településhez STR_CONFIG_SETTING_SIGNALSIDE :Jelzők elhelyezése: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :A jelzők vágány melletti elhelyezésének oldalának kiválasztása STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Bal oldalon STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Menetirány szerinti oldalon STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Jobb oldalon STR_CONFIG_SETTING_SHOWFINANCES :Pénzügyi összesítés minden év végén: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Bekapcsolva a pénzügyi összesítő ablak minden év végén felbukkan, elősegítve a vállalat anyagi helyzetének könnyű ellenőrzését STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Minden új utasítás alapból 'non-stop': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Alapvetően egy jármű megáll minden útjába eső állomáson. Ezzel a beállítással a járművek a következő célpontjukig nem állnak meg egy útjukba eső állomáson sem. Ez a beállítás csak új utasítások esetén működik. Az egyes célpontok viszont beállíthatók másfajta működésmódra is természetesen STR_CONFIG_SETTING_STOP_LOCATION :A vonatok az állomások {STRING} állnak meg új utasításokban STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :A hely, ahol a vonat az állomási peron mellett alapértelmezetten megáll. Az 'elején' jelentése, hogy a vonat a peron belépéshez legközelebbi pontján fog megállni, 'közepén' jelentése, hogy a vonat a peron közepén fog megállni, 'végén' jelentése, hogy a vonat a peron belépéshez ellentétes végén fog megállni. Ez a beállítás csak egy alapértelmezett értéket jelent új utasítások részére, az egyes utasítások viszont beállíthatóak másfajta működésmódra is természetesen STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :elején STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :közepén STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :távoli végén STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Közúti járművek sorbanállása: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Közúti járművek megállítása foglalt útszakasz előtt, míg az fel nem szabadul STR_CONFIG_SETTING_AUTOSCROLL :Ablakmozgatás, ha az egér a képernyő szélén van: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Bekapcsolva görgetődik a látkép, ha az egér az ablak széléhez közel van STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :kikapcsolva STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :fő nézet, csak teljes képernyős módban STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :fő nézet STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :minden látkép STR_CONFIG_SETTING_BRIBE :Önkormányzatok megvesztegethetősége: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Önkormányzatok megvesztegethetőségének engedélyezése. Ha a megvesztegetési kisérletedet leleplezi egy felügyelő, a vállalatod nem építkezhet a településen hat hónapig STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Kizárólagos szállítási jogok vásárlásának engedélyezése: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ha egy vállalat kizárólagos szállítási jogokat vásárol egy településtől, az ellenfelek állomásai nem fognak se utast, se rakományt kapni egy egész évig STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Új épületek építtetésének engedélyezése: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Pénz adományozásának engedélyezése vállalatoktól településeknek új házak építésére STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Helyi útfelújítások finanszírozásának engedélyezése: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Pénz adományozásának engedélyezése vállalatoktól településeknek útfelújításra, hogy szabotálják a közúti közlekedést a településen STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Pénz küldésének engedélyezése másik vállalatok részére: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Pénzátutalások engedélyezése vállalatok között többjátékos módban STR_CONFIG_SETTING_FREIGHT_TRAINS :Tömegszorzó tehervonatoknak nehéz vonatok szimulációjára: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Tehervonatok terhelési szorzójának beállítása. Magasabb érték esetén a tehervagonok jobban igénybe veszik a vontatójárművet, főleg dombokon STR_CONFIG_SETTING_PLANE_SPEED :Repülőgép sebességszorzó: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Repülőgépek relatív sebességének beállítása más járműtípusokhoz viszonyítva, a légi szállítás bevételének csökkentéséhez STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Repülőgép-szerencsétlenségek száma: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Repülőgép-szerencsétlenség esélyének beállítása STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nincs STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :csökkentett STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normál STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Áthaladó megállóhelyek engedélyezése települési tulajdonú utakon: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Áthaladó megállóhelyek építésének engedélyezése települési tulajdonú utakon STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Áthaladó megállóhelyek engedélyezése ellenfél tulajdonában lévő utakon: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Áthaladó megállóhelyek építésének engedélyezése olyan utakon, melyek más vállalatok birtokában vannak STR_CONFIG_SETTING_ADJACENT_STATIONS :Érintkező állomások építésének engedélyezése: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Különböző állomások érintkezésének engedélyezése STR_CONFIG_SETTING_DYNAMIC_ENGINES :Több NewGRF járműgarnitúra engedélyezése: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitási lehetőség régi NewGRF-ekhez. Ne kapcsold ki, ha nem tudod mit csinálsz! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}A beállítást nem lehet megváltoztatni, ha van használatban jármű STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Az infrastruktúra fenntartási költségének engedélyezése: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Bekapcsolva az infrastruktúrának fenntartási költsége van. A költség hatványozottan nő a hálózatnagysággal, nagyobb hatással a nagyobb vállalatokra mint a kisebbekre STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Repülőterek nem avulnak el: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Bekapcsolva minden repülőtértípus örökké elérhető marad bevezetése után STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Figyelmeztessen, ha egy jármű eltévedt: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Üzenetek megjelenítése azokról a járművekről, melyek nem képesek eljutni következő célpontjukba STR_CONFIG_SETTING_ORDER_REVIEW :Utasításlista ellenőrzése: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Bekapcsolva a járművek utasításlistája rendszeresen ellenőrzésre kerül, és bizonyos különös kimenetelek hírüzenetben jelentésre kerülnek STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nincs STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :csak mozgó járművekre STR_CONFIG_SETTING_ORDER_REVIEW_ON :minden járműre STR_CONFIG_SETTING_WARN_INCOME_LESS :Figyelmeztetés veszteséges jármű esetén: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Üzenetek megjelenítése azokról a járművekről, melyek nem termeltek profitot egy naptári év alatt STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Járművek sosem avulnak el: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Bekapcsolva minden járműmodell örökké elérhető marad bevezetése után STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automatikusan felújítja a járművet ha elöregedik: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Bekapcsolva a jármű élettartamának végén automatikusan cserére kerül, ha a lecserélési feltételek teljesülnek STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automatikus járműfelújítás ha a jármű max {STRING} éves STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Járműfelújításhoz szükséges relatív kor STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} hónappal előtte STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} hónappal utána STR_CONFIG_SETTING_AUTORENEW_MONEY :Automatikus járműfelújításhoz szükséges min. pénz: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :A bankban maradó legkisebb pénzösszeg mennyisége járműfelújítás előtt STR_CONFIG_SETTING_ERRMSG_DURATION :Hibaüzenetek időtartama: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :A piros ablakban megjelenő hibaüzenetek kijelzésének időtartama. Bizonyos (kritikus) hibaüzenetek nem záródnak be automatikusan egy idő után, hanem kézzel kell őket bezárni STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} másodperc STR_CONFIG_SETTING_HOVER_DELAY :Leírás megjelenítése: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Késleltetés mielőtt megjelenne az eszközleírás az egér ráhúzása után egy felületi elemen. A leírás elérhető még az egér jobb gombjával is STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Várakozás {COMMA} másodpercig STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Jobb klikk STR_CONFIG_SETTING_POPULATION_IN_LABEL :Mutassa a település lakosságát a feliratban: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Település lakosságszámának kijelzése a címkéjén STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :A vonalak vastagsága a grafikonokon: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Vonalak szélessége a grafikonokon. A vékony vonal precízebben olvasható, míg a vastagabb jobban látható és a színek jobban megkülönböztethetőek STR_CONFIG_SETTING_LAND_GENERATOR :Terep generálás: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Eredeti STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Olajfúró tornyok maximális távolsága a térkép szélétől: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olajfinomítók csak a térkép határaihoz közel építhetőek, ami sziget jellegű térképeknél a partvidék STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Hóhatár magassága: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :A terep durvasága (csak TerraGenesisnél) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Nagyon sima STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Sima STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Durva STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Nagyon durva STR_CONFIG_SETTING_TREE_PLACER :Fa-elhelyező módszer: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Nincs STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Eredeti STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Javított STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Magasságtérkép forgatása: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Órairánnyal szemben STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Órairányban STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :A sík térképhez hozzáadandó magasság: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :A térkép határain lévő mezők tájrendezésének engedélyezése: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Kikapcsolva a térkép határain mindig óceán lesz STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Az északi határnál egy vagy több mező nem üres STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Az egyik határnál egy vagy több mező nem víz STR_CONFIG_SETTING_STATION_SPREAD :Max állomás kiterjedés: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :A legnagyobb terület mérete, melyen egy adott állomás terjeszkedhet. Nagyobb érték lelassítja a játékot STR_CONFIG_SETTING_SERVICEATHELIPAD :Helikopterek automatikus javítása a helikopter-leszállókon: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Helikopterek automatikus javítása minden leszálláskor, még ha nincs is járműtelep a reptéren STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Tájrendező eszköztár megnyitása az építési eszköztárakkal: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Egy közlekedési ág építési eszköztárának megnyitásakor a tájrendező eszköztárat is nyissa meg STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Föld színe a térképen: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Talaj színe a térképen STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zöld STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Sötétzöld STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Sötétkék STR_CONFIG_SETTING_REVERSE_SCROLLING :Inverz görgetési irány: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :A térkép jobb gombbal történő görgetésének viselkedése. Kikapcsolva az egér mozgatja a kamerát. Bekapcsolva az egér a térképet mozgatja STR_CONFIG_SETTING_SMOOTH_SCROLLING :Finomított nézőpont-görgetés: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Beállítható, hogy a fő nézet hogyan mozogjon egy adott pozícióra a térképre kattintáskor ha egy adott objektumra történik mozgás. Bekapcsolva a nézet egyenletesen mozog, kikapcsolva közvetlenül a kijelölt helyre ugrik STR_CONFIG_SETTING_MEASURE_TOOLTIP :Területinformációk mutatása építési eszközök használatakor: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Mezők közti távolságok és magasságkülönbségek megjelenítése húzás közben építkezéskor STR_CONFIG_SETTING_LIVERIES :Járművek egyedi színezésének mutatása: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Járműtípus-specifikus színezések használatának engedélyezése (a vállalati színtől eltérően) STR_CONFIG_SETTING_LIVERIES_NONE :Egyikét sem STR_CONFIG_SETTING_LIVERIES_OWN :Csak a sajátét STR_CONFIG_SETTING_LIVERIES_ALL :Minden vállalatét STR_CONFIG_SETTING_PREFER_TEAMCHAT :Alapesetben csapatban beszélsz -rel: {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Az és billentyűk működésének felcserélése a csapaton belüli és publikus beszélgetésekhez STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Egérgörgő funkció: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Két dimenziós egérgörgővel történő mozgatás engedélyezése STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Térkép nagyítás STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Térkép mozgatás STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Ki STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Egérgörgő sebessége a térképen: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Egérgörgős mozgatás érzékenységének beállítása STR_CONFIG_SETTING_OSK_ACTIVATION :Képernyőbillentyűzet: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Válaszd ki a képernyűbillentyűzet ablak megnyitásának módját, hogy csak mutatóeszközzel is be tudj íni szöveget vagy számot. Ez a billentyűzet nélküli játéknál hasznos. STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Kikapcsolva STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dupla kattintás STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Egyszeres kattintás (amikor előtérben van) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Egyszeres kattintás (azonnal) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Jobb egérgomb emuláció: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Jobb egérgomb emulálási módszerének kiválasztása STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Parancs+Kattintás STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+kattintás STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Kikapcsolva STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Bal gombos térképmozgatás: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Bal egérgombbal történő térképmozgatás engedélyezése. Különösen hasznos érintőképernyős mozgatás használata esetén STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Játékmentés dátumformátuma: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :A játékmentésekben használt dátum formátuma STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :hosszú (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :rövid (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Alapértelmezett paletta NewGRF-eknek ha nincs meghatározva: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Alapértelmezett paletta, melyet a NewGRF-ek használnak amennyiben nincs meghatározva, hogy melyikre van szükségük STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatikus szünettel kezdés új játék esetén: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Bekapcsolva a játék szünettel kezdődik, időt hagyva a térkép közelebbi tanulmányozására STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Szünetben engedélyezett: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :A szünet közben történő cselekvések kiválasztása STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :semmilyen cselekvés STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Minden, ami nem építés STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Minden, ami nem tájrendezés STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :minden cselekvés STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Továbbfejlesztett járműlista használata: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Továbbfejlesztett járműlista használatának engedélyezése a járművek csoportosításához STR_CONFIG_SETTING_LOADING_INDICATORS :Rakodásjelző használata: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :A rakodásjelző megjelenítésének kiválasztása a be- és kirakodó járművek felett STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Menetrendi idő-alapegység tick a nap helyett: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Az utazási idők megjelenítése napok helyett tickekben STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Indulás és érkezés megjelenítése a menetrendekben: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Várható érkezés és indulás megjelenítése a menetrendekben STR_CONFIG_SETTING_QUICKGOTO :Utasításlista gyors elkészítése: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :A 'Menj' parancs előzetes kiválasztása az utasításlista megnyitásakor STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Alapértelmezett vasúti pályatípus: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Egy játék kezdete vagy betöltése után használt vasúti pályatípus. 'Első elérhető' kiválasztja a legrégebbi típusú pályát, 'Utolsó elérhető' kiválasztja a legújabb típusú pályát, 'Legtöbbet használt' kiválasztja azt a pályatípust, amelyik a legtöbb helyen volt használva STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Első elérhető STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Utolsó elérhető STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Legtöbbet használt STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vágányszakasz foglaltságának jelzése: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :A vonatok számára lezárt vágányutak jelölése más színnel, az irányjelzési rendszerrel kapcsolatos vonatmegállási problémák megoldásához STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Építő eszközök aktívak maradnak használat után: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Az építő eszközök, pl. hidak, alagutak stb. aktívan tartása használatuk után STR_CONFIG_SETTING_EXPENSES_LAYOUT :Kiadási/bevételi adatok csoportosítása a pénzügyi ablakban: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :A pénzügyi adatok ablak elrendezésének beállítása STR_CONFIG_SETTING_SOUND_TICKER :Hírsáv: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Hang lejátszása új hír érkezésekor STR_CONFIG_SETTING_SOUND_NEWS :Újság: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Hanglejátszás az újság megjelenésekor STR_CONFIG_SETTING_SOUND_NEW_YEAR :Év vége: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Hang lejátszása az előző évhez viszonyítva a cég jelen évi teljesítményének év végi összesítésénél STR_CONFIG_SETTING_SOUND_CONFIRM :Építkezés: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Hanglejátszás sikeres építkezések vagy más tevékenységek után STR_CONFIG_SETTING_SOUND_CLICK :Gombra kattintás: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Sípolás gombra kattintáskor STR_CONFIG_SETTING_SOUND_DISASTER :Katasztrófák/balesetek: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Balesetek és katasztrófák hangjainak lejátszása STR_CONFIG_SETTING_SOUND_VEHICLE :Járművek: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Járműhangok lejátszása STR_CONFIG_SETTING_SOUND_AMBIENT :Terület: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Az ipar, városok és tájak környezeti hangjainak lejátszása STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Infrastruktúra építésének tiltása amíg nem elérhető megfelelő jármű: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Bekapcsolva az infrastruktúra csak akkor elérhető, ha van megfelelő jármű, megakadályozva a felesleges pénzköltést a kihasználhatatlan infrastruktúrára STR_CONFIG_SETTING_MAX_TRAINS :Maximum vonat vállalatonként: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Egy vállalat által birtokolható maximális vonatok száma STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum közúti jármű vállalatonként: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Egy vállalat által birtokolható maximális közúti járművek száma STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum repülőgép vállalatonként: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Egy vállalat által birtokolható maximális repülőgépek száma STR_CONFIG_SETTING_MAX_SHIPS :Maximum hajó vállalatonként: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Egy vállalat által birtokolható maximális hajók száma STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Vonatok tiltása a gépi ellenfeleknek: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Bekapcsolva a számítógép által irányított ellenfelek nem építhetnek vasutakat STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Közúti járművek tiltása a gépi ellenfeleknek: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Bekapcsolva a számítógép által irányított ellenfelek nem építhetnek közutakat STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Repülőgépek tiltása a gépi ellenfeleknek: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Bekapcsolva a számítógép által irányított ellenfelek nem építhetnek repülőket STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Hajók tiltása a gépi ellenfeleknek: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Bekapcsolva a számítógép által irányított ellenfelek nem építhetnek hajókat STR_CONFIG_SETTING_AI_PROFILE :Alapértelmezett beállítás: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Válaszd ki, hogy melyik beállítási mintát használja a 'véletlen' MI a belső beállításainak, amikor új MI-t vagy szkriptet adsz hozzá STR_CONFIG_SETTING_AI_PROFILE_EASY :Könnyű STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Közepes STR_CONFIG_SETTING_AI_PROFILE_HARD :Nehéz STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Számítógépes ellenfelek a hálózati játékokban: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Számítógép által irányított játékosok részvételének engedélyezése többjátékos játékokban STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Szkriptek felfüggesztéséhez szükséges opcode mennyiség: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Egy kör alatti maximális számítási lépések száma, amit egy szkript kiszámíthat STR_CONFIG_SETTING_SERVINT_ISPERCENT :Javítási intervallumok százalékban: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :A járművek javítási módjának kiválasztása, hogy az utolsó javítás óta eltelt idő, vagy a maximális megbízhatósághoz képesti százalékos csökkenés alapján kerüljelek javításra STR_CONFIG_SETTING_SERVINT_TRAINS :Alapértelmezett javítási intervallum vonatoknak: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Alapértelmezett javítási intervallum beállítása új vonatoknak, ha nincs külön javítási intervallum beállítva a járműre STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} nap/% STR_CONFIG_SETTING_SERVINT_DISABLED :kikapcsolva STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Alapértelmezett javítási intervallum közúti járműveknek: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Alapértelmezett javítási intervallum beállítása új közúti járműveknek, ha nincs külön javítási intervallum beállítva a járműre STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Alapértelmezett javítási intervallum repülőgépeknek: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alapértelmezett javítási intervallum beállítása új repülőgépeknek, ha nincs külön javítási intervallum beállítva a járműre STR_CONFIG_SETTING_SERVINT_SHIPS :Alapértelmezett javítási intervallum hajóknak: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alapértelmezett javítási intervallum beállítása új hajóknak, ha nincs külön javítási intervallum beállítva a járműre STR_CONFIG_SETTING_NOSERVICE :Ne legyen javítás ha lerobbanások sincsenek: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Bekapcsolva a járművek nem kerülnek javításra, ha nem tudnak lerobbanni STR_CONFIG_SETTING_WAGONSPEEDLIMITS :A vagonok sebessége korlátozható: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Bekapcsolva a szerelvényben lévő vasúti kocsik maximális sebessége is korlátozza a vonat maximális sebességét STR_CONFIG_SETTING_DISABLE_ELRAILS :Villamosított vágányok letiltása: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Bekapcsolva nem szükséges villamosítani egy vágányt ahhoz, hogy azon villanymozdonyok közlekedhessenek STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Első jármű megérkezése a játékos megállójába: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Újság megjelenítése amikor a cég új állomásához megérkezik az első jármű STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Első jármű megérkezése az ellenfél megállójába: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Újság megjelenítése amikor egy konkurens vállalat új állomásához megérkezik az első jármű STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Balesetek / természeti csapások: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Újság megjelenítése balesetek vagy katasztrófák bekövetkezésekor STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Vállalati információk: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Újság megjelenítése amikor egy új cég alapul vagy csődközelbe kerül STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Új gazdasági épületek megjelenése: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Újság megjelenítése amikor új ipartelep nyílik STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Gazdasági épületek bezárása: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Újság megjelenítése, amikor egy ipartelep bezár STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Gazdasági változások: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Újság megjelenítése a globális gazdasági változásokkal kapcsolatban STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Termelésváltozások a vállalatod által kiszolgált gazdasági létesítményeknél: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Újsághír megjelenítése, amikor a cág által kiszolgált gazdasági épületben termelési változás áll be STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Termelésváltozások a konkurenseid által kiszolgált gazdasági létesítményeknél: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Újsághír megjelenítése, amikor a versenytársak által kiszolgált gazdasági épületben termelési változás áll be STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Más gazdasági termelési változások: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Üzenet megjelenítése, amikor egy olyan ipartelep teljesítménye változik, amely nem kötődik semelyik cég tevékenységéhez STR_CONFIG_SETTING_NEWS_ADVICE :A vállalat járműveire vonatkozó ötletek / információk: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Üzenet megjelenítése beavatkozást igénylő járművekkel kapcsolatban STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Új járművek: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Újság megjelenítése, amikor egy új jármű elérhetővé válik STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Rakományok elfogadásainak változásai: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Üzenet megjelenítése az állomások bizonyos áruk fogadóképességének változásáról STR_CONFIG_SETTING_NEWS_SUBSIDIES :Támogatások: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Újság megjelenítése szállítási támogatásokkal kapcsolatban STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Általános információk: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Újság megjelenítése mely információkat tartalmaz általános eseményekről, mint például exkluzív szállítási jogok vásárlása vagy új útfelújítási hozzájárulás STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Ki STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Kivonat STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Teljes STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Színes újságcikkek megjelenése: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Az év, melytől az újságok színesben jelennek meg. Az adott év előtt azok fekete-fehérek STR_CONFIG_SETTING_STARTING_YEAR :Játék induló dátuma: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Egyenletes gazdaság (több, kisebb változás): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Bekapcsolva a gazdasági épületek termelése gyakrabban és kisebb lépésekben változik. Ennek a beállításnak általában nincs hatása, ha a gazdasági épületeket NewGRF nyújta STR_CONFIG_SETTING_ALLOW_SHARES :Más vállalatokból lehet részvényt vásárolni: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Bekapcsolva engedélyezi más vállalatok részvényeinek megvásárlását. A részvények csak akkor elérhetőek, ha a vállalat elért egy bizonyos kort STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Ráhordó rendszereknek kifizetett profitszázalék: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :A bevételek százaléka, mely a közbenső szállítóknak, ráhordó járatoknak kerül kifizetésre, nagyobb ellenőrzést adva a bevétel felett STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Húzáskor helyezzen jelzőket minden {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Az építendő jelzők közötti távolság beállítása a pályán a következő akadályig (jelző, elágazás), jelzők húzásakor STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA}. mezőre STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Húzáskor állandó távolság tartása a jelzők között: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Jelzők építési viselkedésének kiválasztása Ctrl+húzás esetére. Kikapcsolva a jelzők alagutak és hidak körül kerülnek telepítésre, elkerülve a hosszú szakaszokat jelző nélkül. Bekapcsolva a jelzők minden n-edik mezőre kerülnek telepítésre, a párhuzamos vágányok elhelyezését megkönnyítendő STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatikusan alakjelző épüljön {STRING}-ig. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Az év beállítása, melytől fényjelzők kerülnek alkalmazásra. Azelőtt alakjelzők használatosak (melyek funkciója ugyanaz, csak máshogy néznek ki) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Jelzőépítés-kezelő engedélyezése: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Egy ablak megjelenítése jelzőépítéshez ahelyett, hogy ablak nélkül Ctrl+kattintással történjen váltás az épített jelzők között STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Alapértelmezett jelzőtípus: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Alapértelmezetten használt jelzőtípus STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normál jelzők STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Irányjelzők STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Csak egyirányú irányjelzők STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Jelzők típusa átalakításkor: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Jelzőtípusok kiválasztása, melyek között a csere történik Ctrl+kattintással a jelzőépítő eszközzel STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Csak normál jelzők STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Csak irányjelzők STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Mind STR_CONFIG_SETTING_TOWN_LAYOUT :Új települések úthálózati elrendezése: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Települési úthálózat elrendezése STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :alapértelmezett STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :jobb utak STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2-es háló STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3-as háló STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :véletlenszerű STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Települések építhetnek utakat: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Településeknek utak építésének engedélyezése a növekedéshez. Kikapcsolva megakadályozza az önkormányzatot, hogy önmaga utakat építhessen STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :A városok építhetnek vasúti átjárókat: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Engedélyezve a települések építhetnek vasúti átjárókat STR_CONFIG_SETTING_NOISE_LEVEL :Település által szabályzott zajszint reptereknek: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kikapcsolva településenként csak kettő repülőtér építhető. Bekapcsolva a repülőterek száma a település által megengedett zajszinttől függ, ami a lakosságszámtól és a távolságtól függ STR_CONFIG_SETTING_TOWN_FOUNDING :Város alapítása játék közben: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Bekapcsolva a játékosok alapíthatnak új településeket a játék során STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :tiltott STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :megengedett STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :megengedett, egyéni városelrendezés STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Játékbeli faelhelyezkedés: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Fák véletlenszerű megjelenésének szabályozása a játék során. Ez befolyásolhatja a gazdasági épületeket, melyek a fák növekedésétől függnek, mint a favágók STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :sehol {RED}(favágók ellehetetlenítése) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :csak esőerdőkben STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :mindenhol STR_CONFIG_SETTING_TOOLBAR_POS :A fő eszközsor helye: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :A fő eszközsor vízszintes elhelyezésének beállítása a képernyő tetején STR_CONFIG_SETTING_STATUSBAR_POS :Állapotsor elhelyezkedése: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Az állapotsor vízszintes elhelyezésének beállítása a képernyő alján STR_CONFIG_SETTING_SNAP_RADIUS :Ablakillesztés távolsága: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Ablakok közti távolság mielőtt az ablak automatikusan a közeli ablakhoz kerül igazításra STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :kikapcsolva STR_CONFIG_SETTING_SOFT_LIMIT :Nem zárolt ablakok maximális száma: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Nem zárolt ablakok száma mielőtt a régi ablakok bezárásra kerülnek, hogy legyen hely az új ablakok számára STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :kikapcsolva STR_CONFIG_SETTING_ZOOM_MIN :A nagyítás maximális mértéke: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximális nagyítás mértéke. A nagyobb nagyítási mérték több memóriát igényel STR_CONFIG_SETTING_ZOOM_MAX :A kicsinyítés maximális mértéke: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maximális kicsinyítés mértéke. A nagyobb kicsinyítési mérték szaggatást okozhat STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normál STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Települések növekedési sebessége: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :A települések növekedési sebessége STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Nincs STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lassú STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normális STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Gyors STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Nagyon gyors STR_CONFIG_SETTING_LARGER_TOWNS :Várossá váló települések aránya: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Azon települések mennyisége, melyek várossá fognak válni, így egy település nagyobbként kezd és gyorsabban nő STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a {COMMA}-ból STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :nincs STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Kezdeti városméret-szorzó: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Átlagos városméret a normál településekhez képest a játék kezdetén STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Abszurd útrészletek automatikus eltávolítása útépítés közben: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Zsákutcák eltávolítása támogatott útfelújítások ideje alatt STR_CONFIG_SETTING_GUI :{ORANGE}Megjelenítés STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Építkezés STR_CONFIG_SETTING_VEHICLES :{ORANGE}Járművek STR_CONFIG_SETTING_STATIONS :{ORANGE}Állomások STR_CONFIG_SETTING_ECONOMY :{ORANGE}Gazdaság STR_CONFIG_SETTING_AI :{ORANGE}Ellenfelek STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Megjelenítési beállítások STR_CONFIG_SETTING_INTERACTION :{ORANGE}Irányítás STR_CONFIG_SETTING_SOUND :{ORANGE}Hang effektek STR_CONFIG_SETTING_NEWS :{ORANGE}Hírek és üzenetek STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Jelzők STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Rakomány kezelés STR_CONFIG_SETTING_AI_NPC :{ORANGE}Számítógép által vezérelt ellenfelek STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automata felújítás STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Javítás STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Útvonalkeresés STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vonatok STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Települések STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Gazdasági épületek STR_CONFIG_SETTING_PATHFINDER_OPF :Eredeti STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Ajánlott) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Útvonalkereső vonatokhoz: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :A vonatokhoz használt útvonalkereső STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Útvonalkereső közúti járművekhez: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :A közúti járművekhez használt útvonalkereső STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Útvonalkereső hajókhoz: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :A hajókhoz használt útvonalkereső STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatikus megfordulás jelzőknél: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :A vonatok automatikus megfordításának engedélyezése, ha azok túl hosszú ideje várakoznak egy jelző előtt STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Válassz beállítási értéket # Config errors STR_CONFIG_ERROR :{WHITE}Hiba a konfigurációs fájlban... STR_CONFIG_ERROR_ARRAY :{WHITE}... hiba a(z) '{STRING}' tömbben STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... a(z) '{1:STRING}' beállítás értéke érvénytelen: '{0:STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... felesleges karakterek a(z) '{STRING}' beállítás végén STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... érvénytelen NewGRF nem került betöltésre - '{STRING}': ütköző GRF ID egy másik NewGRF-fel: '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... érvénytelen NewGRF nem került betöltésre - '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nem található STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nem biztonságos állandó használatra STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :rendszer NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nem kompatibilis az OpenTTD ezen verziójával STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ismeretlen STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... a(z) '{STRING}' tömörítési szint érvénytelen STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... a(z) '{STRING}' játékmentési formátum nem elérhető. Mentés '{STRING}' formátumban STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... érvénytelen grafikus alapcsomag nem került betöltésre - '{STRING}': nem található STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... érvénytelen hang alapcsomag nem került betöltésre - '{STRING}': nem található STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... érvénytelen zenei alapcsomag nem került betöltésre - '{STRING}': nem található STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Kevés a memória STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}{BYTES} memória gyorsítótár kiosztása sikertelen. A gyorsítótár le lett csökkentve {BYTES}ra. Ez csökkenti az OpenTTD teljesítményét. Csökkentheted a memóriaigényt, ha kikapcsolod a 32bpp grafikát és/vagy a nagyítási szinteket # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Új játék STR_INTRO_LOAD_GAME :{BLACK}Játék betöltése STR_INTRO_PLAY_SCENARIO :{BLACK}Játék saját pályán STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Játék magasságtérképen STR_INTRO_SCENARIO_EDITOR :{BLACK}Pályaszerkesztő STR_INTRO_MULTIPLAYER :{BLACK}Hálózati játék STR_INTRO_GAME_OPTIONS :{BLACK}Beállítások STR_INTRO_HIGHSCORE :{BLACK}Rekord tábla STR_INTRO_ADVANCED_SETTINGS :{BLACK}Haladó beállítások STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások STR_INTRO_ONLINE_CONTENT :{BLACK}Letölthető tartalmak STR_INTRO_SCRIPT_SETTINGS :{BLACK}MI / Játékszkript beállítások STR_INTRO_QUIT :{BLACK}Kilépés STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Új játék kezdése. Ctrl+kattintással átugorhatod a térkép beállításokat STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Mentett játék betöltése STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Új játékot kezd egy magasságtérkép alapján STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Új játék kezdése saját pályán STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Testreszabott világ/pálya készítése STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Többfős játék indítása STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Mérsékelt égövi táj kiválasztása STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Szubarktikus táj kiválasztása STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Szubtrópusi táj kiválasztása STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Játékvilág táj kiválasztása STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}A játék beállításainak megjelenítése STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rekord tábla megjelenítése STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Haladó beállítások megjelenítése STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF beállítások megjelenítése STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Új és frissített tartalmak megtekintése és letöltése STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}MI és játékszkript beállítások megjelenítése STR_INTRO_TOOLTIP_QUIT :{BLACK}Kilépés az OpenTTD-ből STR_INTRO_TRANSLATION :{BLACK}Ebből a fordításból {NUM} sor hiányzik. Segíts Te is jobbá tenni az OpenTTD-t és jelentkezz fordítónak! További részletekért lásd a readme.txt-t. # Quit window STR_QUIT_CAPTION :{WHITE}Kilépés STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Biztosan bezárod ezt a programot és kilépsz a {STRING}ba? STR_QUIT_YES :{BLACK}Igen STR_QUIT_NO :{BLACK}Nem # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Kilépés a játékból STR_ABANDON_GAME_QUERY :{YELLOW}Biztosan kilépsz ebből a játékból? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Biztosan abba akarod hagyni a pálya szerkesztését? # Cheat window STR_CHEATS :{WHITE}Csalások STR_CHEATS_TOOLTIP :{BLACK}A kijelölőnégyzetek jelzik a csalások eddigi használatát STR_CHEATS_WARNING :{BLACK}Figyelem! Te épp a versenytársaidat készülöd elárulni. Sose felejtsd el, hogy egy ilyen szégyenletes tett sose merül feledésbe STR_CHEAT_MONEY :{LTBLUE}Tőkeemelés {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Irányított vállalat: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Csodabuldózer (lerombol gazdasági épületeket, mozgathatatlan objektumokat): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Alagutak keresztezhessék egymást: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jet-repülők nem fognak (gyakran) lezuhanni a kis repülőtereken: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Mérsékelt táj STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Szubarktikus táj STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Szubtrópusi táj STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Játékvilág táj STR_CHEAT_CHANGE_DATE :{LTBLUE}Dátum módosítás: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Aktuális év megváltoztatása STR_CHEAT_SETUP_PROD :{LTBLUE}A nyersanyagüzemek termelése változtatható: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Új színséma STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Általános színsémák mutatása STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Vonat színsémák mutatása STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Közúti jármű színsémák mutatása STR_LIVERY_SHIP_TOOLTIP :{BLACK}Hajó színsémák mutatása STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Repülőgép színsémák mutatása STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Válassz egy elsődleges színt a kiválasztott sémához. Ctrl+kattintással az összes sémához ezt a színt állíthatod be STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Válassz egy másodlagos színt a kiválasztott sémához. Ctrl+kattintással az összes sémához ezt a színt állíthatod be STR_LIVERY_PANEL_TOOLTIP :{BLACK}Válassz megváltoztatandó színsémát, vagy színsémákat Ctrl+kattintással. Kattints a dobozra a színséma használat váltásához. STR_LIVERY_DEFAULT :Alapértelmezett STR_LIVERY_STEAM :Gőzmozdony STR_LIVERY_DIESEL :Dízelmozdony STR_LIVERY_ELECTRIC :Villanymozdony STR_LIVERY_MONORAIL :Egysínű mozdony STR_LIVERY_MAGLEV :Maglev mozdony STR_LIVERY_DMU :Dízelmotorkocsi STR_LIVERY_EMU :Villanymotorkocsi STR_LIVERY_PASSENGER_WAGON_STEAM :Utasszállító kocsi (gőz) STR_LIVERY_PASSENGER_WAGON_DIESEL :Utasszállító kocsi (dízel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Utasszállító kocsi (villamosított) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Utasszállító kocsi (Egysínű) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Utasszállító kocsi (Maglev) STR_LIVERY_FREIGHT_WAGON :Tehervagon STR_LIVERY_BUS :Busz STR_LIVERY_TRUCK :Teherautó STR_LIVERY_PASSENGER_SHIP :Utasszállító komp STR_LIVERY_FREIGHT_SHIP :Teherhajó STR_LIVERY_HELICOPTER :Helikopter STR_LIVERY_SMALL_PLANE :Kis repülőgép STR_LIVERY_LARGE_PLANE :Nagy repülőgép STR_LIVERY_PASSENGER_TRAM :Utasszállító villamos STR_LIVERY_FREIGHT_TRAM :Teherszállító villamos # Face selection window STR_FACE_CAPTION :{WHITE}Arcválasztás STR_FACE_CANCEL_TOOLTIP :{BLACK}Új arc elvetése STR_FACE_OK_TOOLTIP :{BLACK}Új arc elfogadása STR_FACE_MALE_BUTTON :{BLACK}Férfi STR_FACE_MALE_TOOLTIP :{BLACK}Férfi arcok kiválasztása STR_FACE_FEMALE_BUTTON :{BLACK}Nő STR_FACE_FEMALE_TOOLTIP :{BLACK}Női arcok kiválasztása STR_FACE_NEW_FACE_BUTTON :{BLACK}Új arc STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Véletlenszerű új arc létrehozása STR_FACE_ADVANCED :{BLACK}Fejlett STR_FACE_ADVANCED_TOOLTIP :{BLACK}Fejlett arcválasztó STR_FACE_SIMPLE :{BLACK}Egyszerű STR_FACE_SIMPLE_TOOLTIP :{BLACK}Egyszerű arcválasztó STR_FACE_LOAD :{BLACK}Betölt STR_FACE_LOAD_TOOLTIP :{BLACK}Kedvenc arcod betöltése STR_FACE_LOAD_DONE :{WHITE}A kedvenc arcod az OpenTTD konfig-fájlból be lett töltve. STR_FACE_FACECODE :{BLACK}Játékos arcszám STR_FACE_FACECODE_TOOLTIP :{BLACK}Az elnök portréjának kódjánakmegtekintése, módosítása STR_FACE_FACECODE_CAPTION :{WHITE}Elnöki portré kód megtekintése, módosítása STR_FACE_FACECODE_SET :{WHITE}Az új portré kód beállítása megtörtént STR_FACE_FACECODE_ERR :{WHITE}Elnöki portré kód beállítás sikertelen - a megadott értéknek 0 és 4.294.967.295 között kell lennie! STR_FACE_SAVE :{BLACK}Mentés STR_FACE_SAVE_TOOLTIP :{BLACK}Kedvenc arc elmentése STR_FACE_SAVE_DONE :{WHITE}Ez az arc mint a kedvenc arcod kerül az OpenTTD konfig-fájlba mentésre. STR_FACE_EUROPEAN :{BLACK}Európai STR_FACE_SELECT_EUROPEAN :{BLACK}Európai arc választása STR_FACE_AFRICAN :{BLACK}Afrikai STR_FACE_SELECT_AFRICAN :{BLACK}Afrikai arc választása STR_FACE_YES :Igen STR_FACE_NO :Nem STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Engedélyez bajuszt vagy a fülbevalót STR_FACE_HAIR :Haj: STR_FACE_HAIR_TOOLTIP :{BLACK}Haj cseréje STR_FACE_EYEBROWS :Szemöldök: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Szemöldök cseréje STR_FACE_EYECOLOUR :Szemszín: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Szemszín cseréje STR_FACE_GLASSES :Szemüveg: STR_FACE_GLASSES_TOOLTIP :{BLACK}Szemüveg engedélyezése STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Szemüveg cseréje STR_FACE_NOSE :Orr: STR_FACE_NOSE_TOOLTIP :{BLACK}Orr cseréje STR_FACE_LIPS :Ajkak: STR_FACE_MOUSTACHE :Bajusz: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Ajkak vagy bajusz cseréje STR_FACE_CHIN :Áll: STR_FACE_CHIN_TOOLTIP :{BLACK}Áll cseréje STR_FACE_JACKET :Kabát STR_FACE_JACKET_TOOLTIP :{BLACK}Kabát cseréje STR_FACE_COLLAR :Gallér STR_FACE_COLLAR_TOOLTIP :{BLACK}Gallér cseréje STR_FACE_TIE :Nyakkendő: STR_FACE_EARRING :Fülbevaló: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Nyakkendő vagy fülbevaló cseréje # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Hálózati játék STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Kapcsolat: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Válassz az internetes vagy helyi hálózati játék közül STR_NETWORK_SERVER_LIST_LAN :Helyi hálózat STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Játékos neve: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}A többi játékos ilyen néven fog ismerni Téged. STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Név STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Játék neve STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliens STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Kliens online / kliens max.{}Vállalat online / vállalat max. STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Térkép méret STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}A játék térképének mérete{}Kattints ide a rendezéshez STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dátum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Az aktuális dátum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Évek STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}A játékban eltelt évek száma STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Nyelv, szerver verzió stb. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Kattintással a listában szereplő játék kiválasztása STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}A szerver amihez legutóbb csatlakoztál: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Kattints ide a legutóbb használt szerver kiválasztásához STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}JÁTÉK INFÓ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Kliensek: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Nyelv: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Tájtípus: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}A térkép nagysága: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Szerver verzió: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}A szerver címe: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Kezdési dátum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Jelenlegi dátum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Jelszóval védve! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SZERVER OFFLINE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SZERVER TELE STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERZIÓ ELTÉRÉS STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF ELTÉRÉS STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Csatlakozás STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Szerver frissítése STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Szerver infó frissítése STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Szerver keresése STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Szerver keresése a hálózaton STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Szerver hozzáadása STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Hozzáadja a szervert a listához, így később gyorsabban tudsz hozzá csatlakozni STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Szerver indítása STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Saját szervert indít STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Add meg a neved STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Írd be a szerver IP címét # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Új játékot kezd STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Játék neve: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}A játék neve fog megjelenni a többi játékosnak a többjátékos menüben STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Jelszó beállítása STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Védd le a játékodat jelszóval, ha nem akarod hogy illetéktelenek csatlakozzanak STR_NETWORK_START_SERVER_LAN_INTERNET :Hálózat / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (reklámoz) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kliens STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Játékosok max. száma: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}A maximálisan felcsatlakozható kliensek számának kiválasztása. Nem szükséges pont ennyi embernek éppen kapcsolódva lennie STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} vállalat STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max. vállalatszám: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}A vállalatok maximális száma a szerveren STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} megfigyelő STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max. megfigyelő: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}A megfigyelők maximális száma a szerveren STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Beszélt nyelv: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}A többi játékos megtudhatja milyen nyelven beszélnek a szerveren STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Add meg a hálózati játékhoz a neved # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Bármilyen STR_NETWORK_LANG_ENGLISH :Angol STR_NETWORK_LANG_GERMAN :Német STR_NETWORK_LANG_FRENCH :Francia STR_NETWORK_LANG_BRAZILIAN :Brazil STR_NETWORK_LANG_BULGARIAN :Bolgár STR_NETWORK_LANG_CHINESE :Kínai STR_NETWORK_LANG_CZECH :Cseh STR_NETWORK_LANG_DANISH :Dán STR_NETWORK_LANG_DUTCH :Holland STR_NETWORK_LANG_ESPERANTO :Eszperantó STR_NETWORK_LANG_FINNISH :Finn STR_NETWORK_LANG_HUNGARIAN :Magyar STR_NETWORK_LANG_ICELANDIC :Izlandi STR_NETWORK_LANG_ITALIAN :Olasz STR_NETWORK_LANG_JAPANESE :Japán STR_NETWORK_LANG_KOREAN :Koreai STR_NETWORK_LANG_LITHUANIAN :Litván STR_NETWORK_LANG_NORWEGIAN :Norvég STR_NETWORK_LANG_POLISH :Lengyel STR_NETWORK_LANG_PORTUGUESE :Portugál STR_NETWORK_LANG_ROMANIAN :Román STR_NETWORK_LANG_RUSSIAN :Orosz STR_NETWORK_LANG_SLOVAK :Szlovák STR_NETWORK_LANG_SLOVENIAN :Szlovén STR_NETWORK_LANG_SPANISH :Spanyol STR_NETWORK_LANG_SWEDISH :Svéd STR_NETWORK_LANG_TURKISH :Török STR_NETWORK_LANG_UKRAINIAN :Ukrán STR_NETWORK_LANG_AFRIKAANS :Afrikai STR_NETWORK_LANG_CROATIAN :Horvát STR_NETWORK_LANG_CATALAN :Katalán STR_NETWORK_LANG_ESTONIAN :Észt STR_NETWORK_LANG_GALICIAN :Gall STR_NETWORK_LANG_GREEK :Görög STR_NETWORK_LANG_LATVIAN :Lett ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Hálózati játék előszoba STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Készülődés a kapcsolódáshoz: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Egy lista az összes vállalatról aki játékban van. Alapíthatsz újat, beléphetsz egybe, vagy csak nézheted őket megfigyelőként STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}VÁLLALAT INFÓ STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}A vállalat neve: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Beiktatás: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}A vállalat értéke: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Jelenlegi összeg: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Előző évi bevétel: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Teljesítmény: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Járművek: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Állomások: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Játékosok: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Új vállalat STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Új vállalatot alapít STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Játék megvizsgálása STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Megtekinted a játékot mint megfigyelő STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Belépés a vállalatba STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Segítesz a vállalatirányításban # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Kapcsolódás... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Kapcsolódás... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Engedélyezés... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Várakozás... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Térkép letöltése... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Adatfeldolgozás... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Regisztrálás... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Játékinfó lekérése... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Vállalat infó lekérése... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} kliensre várunk, hogy befejezze STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} lett eddig letöltve STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} lett eddig letöltve STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Megszakít STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}A szerver jelszóval van védve. Írd be STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A vállalat jelszóval van védve. Írd be # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Kliens lista STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Megfigyelés STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Új vállalat # Network client list STR_NETWORK_CLIENTLIST_KICK :Kirúgás STR_NETWORK_CLIENTLIST_BAN :Kitiltás STR_NETWORK_CLIENTLIST_GIVE_MONEY :Pénz adományozása STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Üzenet mindenkinek STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Üzenet a vállalatnak STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privát üzenet STR_NETWORK_SERVER :Szerver STR_NETWORK_CLIENT :Kliens STR_NETWORK_SPECTATORS :Megfigyelők STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Add meg a küldeni kívánt pénz mennyiségét # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne mentsd el a megadott jelszót STR_COMPANY_PASSWORD_OK :{BLACK}Add meg az új vállalati jelszót STR_COMPANY_PASSWORD_CAPTION :{WHITE}Vállalati jelszó STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Alapértelmezett vállalati jelszó STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Ez a jelszó legyen az alapértelmezett jelszó az új vállalatoknál # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Csatlakozás STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Csatlakozz és vezetsd a vállalatot STR_COMPANY_VIEW_PASSWORD :{BLACK}Jelszó STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Védd le a vállalatodat jelszóval ha nem akarod hogy mások csatlakozzanak hozzá STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Vállalati jelszó beállítása # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Elküld STR_NETWORK_CHAT_COMPANY_CAPTION :[Csapat] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privát] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Mindenkinek] : STR_NETWORK_CHAT_COMPANY :[Csapat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Csapat] {STRING} számára: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privát] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privát] {STRING} számára: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Mindenkinek] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Add meg a hálózati beszélgetéshez a neved # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nem található a hálózati csatoló, vagy a játékban nincs hálózati támogatás (ENABLE_NETWORK) STR_NETWORK_ERROR_NOSERVER :{WHITE}Nem található semmilyen hálózati játék STR_NETWORK_ERROR_NOCONNECTION :{WHITE}A szerver nem válaszolt a kérésre STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF eltérés miatt nem sikerült kapcsolódni STR_NETWORK_ERROR_DESYNC :{WHITE}Hálózat - Játék szinkronizáció sikertelen STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Hálózat - Játék kapcsolat elveszett STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Nem sikerült a szerver játékmentés betöltése STR_NETWORK_ERROR_SERVER_START :{WHITE}Nem tudtam elindítani a szervert STR_NETWORK_ERROR_CLIENT_START :{WHITE}Nem tudtam kapcsolódni STR_NETWORK_ERROR_TIMEOUT :{WHITE}A(z) {NUM}. játékos kapcsolata elveszett STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Protokoll-hiba keletkezett és megszakadt a kapcsolat STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}A gépeden és a szerveren lévő programnak nem egyezik meg a verziója STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Rossz jelszó STR_NETWORK_ERROR_SERVER_FULL :{WHITE}A szerver tele van STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Ki vagy tiltva erről a szerverről STR_NETWORK_ERROR_KICKED :{WHITE}Ki lettél rúgva a szerverről STR_NETWORK_ERROR_CHEATER :{WHITE}Ez a szerver nem engedi a csalást STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Túl sok parancsot küldtél a szervernek STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Túl sokáig tartott a jelszó beírása STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}A számítógéped túl lassú, hogy tartsa a szerver sebességét STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Túl sokáig tartott a térkép letöltése a számítógépednek STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Túl sokáig tartott a szerverhez való csatlakozása a számítógépednek ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :általános hiba STR_NETWORK_ERROR_CLIENT_DESYNC :szinkronizálási hiba STR_NETWORK_ERROR_CLIENT_SAVEGAME :térkép betöltési hiba STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :elveszett a kapcsolat STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokoll hiba STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF eltérés(ek) STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nem engedélyezett STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ismeretlen vagy érvénytelen csomag érkezett STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :rossz verzió STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :a név már használva van STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :rossz jelszó STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :hibás vállalat azonosító (wrong company in DoCommand) STR_NETWORK_ERROR_CLIENT_KICKED :a szerver kirúgott STR_NETWORK_ERROR_CLIENT_CHEATER :csalni próbált STR_NETWORK_ERROR_CLIENT_SERVER_FULL :a szerver megtelt STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :túl sok parancsot küldött STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :nem érkezett jelszó időben STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :általános időtúllépés STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :térkép letöltés túl sokáig tartott STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :térkép feldolgozás túl sokáig tartott ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Lehetséges, hogy elveszett a kapcsolat STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Az elmúlt {NUM} másodpercben nem érkezett adat a szervertől # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Játék megállítva ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :A játék továbbra is szünetel ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :A játék továbbra is szünetel ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :A játék továbbra is szünetel ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :A játék továbbra is szünetel ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :A játék folytatódik ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :játékosok száma STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :kapcsolódó kliensek STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :kézi STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :játékszkript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :kilépés STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} csatlakozott a játékhoz STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} csatlakozott a játékhoz ({2:NUM}. számú kliens) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} csatlakozott a(z) {2:NUM}. számú vállalathoz STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} csatlakozott a megfigyelőkhöz STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} új vállalatot alapított (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} kilépett a játékból ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} nevet változtatott. Új neve: {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a következő összeget utalta vállalatodnak: {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} vállalatnak sikeresen átutaltál {2:CURRENCY_LONG}-t STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}A szerver leállította a játékot STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}A szerver újraindul...{}Türelem... # Content downloading window STR_CONTENT_TITLE :{WHITE}Tartalom letöltés STR_CONTENT_TYPE_CAPTION :{BLACK}Típus STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}A tartalom típusa STR_CONTENT_NAME_CAPTION :{BLACK}Név STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}A tartalom neve STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Kattints a sorra a részletek megjelenítéséhez. Kattints a jelölőnégyzetbe letöltésre való kijelöléshez STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Összes kijelölése STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Az összes elérhető tartalom kijelölése letöltéshez STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Frissítések kijelölése STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Már meglévő tartalmakhoz az összes elérhető frissítés kijelölése letöltéshez STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nincs kijelölés STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Megszünteti az összes kijelölést STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Keresés külső weblapokon STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Keresett tartalom nem érhető el az OpenTTD tartalomszolgáltatásának olyan weblapokon, melyek nincsenek az OpenTTD-hez társítva STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Elhagyod az OpenTTD-t! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Külső oldalakról letölthető tartalmak szabályai és feltételei változóak.{}A tartalom OpenTTD-be való telepítéséhez segítségért fordulj a külső weboldalhoz.{}Akarod folytatni? STR_CONTENT_FILTER_TITLE :{BLACK}Címke/név szűrő: STR_CONTENT_OPEN_URL :{BLACK}Webhely STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}A tartalom webhelyének meglátogatása STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Letöltés STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}A kijelölt tartalmak letöltésének megkezdése STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}A letöltés teljes mérete: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFORMÁCIÓ A KIVÁLASZTOTT TARTALOMRÓL STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Nem jelölted ki letöltésre STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Kijelölted letöltésre STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Ez a függőség ki lett jelölve letöltésre STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Már rendelkezel ezzel a tartalommal STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Ismeretlen tartalom, nem tölthető le az OpenTTD-hez STR_CONTENT_DETAIL_UPDATE :{SILVER}Ez a tartalom egy meglévő {STRING} helyettesítése STR_CONTENT_DETAIL_NAME :{SILVER}Név: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Verzió: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Leírás: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Típus: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Letöltési méret: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Kijelölés oka: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Függőségek: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Címkék: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}Az OpenTTD "zlib" támogatás nélkül lett fordítva... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... nem lehet letölteni a tartalmat! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafikus alapcsomag STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :MI STR_CONTENT_TYPE_AI_LIBRARY :MI könyvtár STR_CONTENT_TYPE_SCENARIO :Pálya STR_CONTENT_TYPE_HEIGHTMAP :Magasságtérkép STR_CONTENT_TYPE_BASE_SOUNDS :Hang alapcsomag STR_CONTENT_TYPE_BASE_MUSIC :Zenei alapcsomag STR_CONTENT_TYPE_GAME_SCRIPT :Játékszkript STR_CONTENT_TYPE_GS_LIBRARY :Játékszkript könyvtár # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Tartalom letöltése... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Fájlok lekérése... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Jelenlegi letöltés: {STRING} ({NUM} / {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Letöltés befejezve STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} / {BYTES} letöltve ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}A tartalomszolgáltató szerver nem elérhető... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}A letöltés meghiúsult... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... a kapcsolat megszakadt STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... a fájl nem írható STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Nem sikerült kicsomagolni a letöltött fájlt STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Hiányzó grafikus alapcsomag STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Az OpenTTD-nek egy grafikus alapcsomagra van szüksége a működéshez, de nem található grafikus alapcsomag. Engedélyezed az OpenTTD-nek, hogy letöltse és telepítse a grafikus alapcsomagot? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Igen, a grafikai alapcsomag letöltése STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nem, kilépés az OpenTTD-ből # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Átlátszósági beállítások STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Átlátszó feliratok bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Fák átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Épületek átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Gazdasági létesítmények átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Építhető elemek (állomások, járműtelepek, ellenőrző pontok) átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Hidak átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Tereptárgyak (adótornyok, világítótornyok stb.) átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Felsővezetékek átlátszóságának bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Átlátszó rakodásjelző bekapcsolása. Ctrl+kattintással zárolható STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Az objektum ne átlátszó legyen, hanem láthatatlan # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Lefedett terület mutatása: STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ki STR_STATION_BUILD_COVERAGE_ON :{BLACK}Be STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Az állomással lefedett terület elrejtése STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Az állomással lefedett terület mutatása (vonzáskörzet) STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Elfogad:{GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Termel: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Állomás egyesítése STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Különálló állomás építése STR_JOIN_WAYPOINT_CAPTION :{WHITE}Ellenőrző pont egyesítése STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Különálló ellenőrző pont építése # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Vasút építése STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Villamosított vasút építése STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Egysínű vasút építése STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev vasút építése STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Pályafektetés. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Vasúti pálya építése egyszerűsített módon. A Ctrl billentyű segítségével lehet váltani az építés/rombolás között. Shift lenyomásával megmutatja a becsült építési/eltávolítási költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Vasúti járműtelep építése (vonatok vételére és karbantartására). Shift lenyomásával becsült építési költséget mutat STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ellenőrző pont építése vágányra. A Ctrl lenyomásával az ellenőrző pontok egyesíthetőek. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Vasútállomás építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Vasúti jelzők építése. Ctrl gombbal váltás az alak- és fényjelzők között{}Húzással a sínek mentén végig jelzők épülnek. Húzva Ctrl gombbal a következő pályakiágazásig épít jelzőket{}Ctrl+kattintással válthatod a megnyitandó jelzőépítés-kezelő ablakot. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Vasúti híd építése. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Vasúti alagút építése. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Váltás építés/feleszedés között vasúti pályák, jelzők, ellenőrző pontok és vasútállomások esetében. Ctrl nyomvatartásával az ellenőrző pontokon és állomásokon a vasúti pályát is eltávolítja STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Sínek átalakítása a kiválasztott típusra. Shift lenyomásával megmutatja a becsült építési költséget STR_RAIL_NAME_RAILROAD :Vasút STR_RAIL_NAME_ELRAIL :Villamosított vasút STR_RAIL_NAME_MONORAIL :Egysínű STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Járműtelep helyzete STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Járműtelep helyzetének kiválasztása # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Ellenőrző pont STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Válassz ellenőrző pont típust # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Vasútállomás kiválasztása STR_STATION_BUILD_ORIENTATION :{BLACK}Helyzet STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Vasútállomás helyzetének kiválasztása STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Vágányok száma STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}A vasútállomás vágányainak száma STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Vágányok hossza STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}A vasútállomás hossza STR_STATION_BUILD_DRAG_DROP :{BLACK}Fogd és dobd STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Állomás építése fogd és dobd módon STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Válassz egy megjelenítendő állomásfajtát STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Megépítendő állomástípus kiválasztása STR_STATION_CLASS_DFLT :Alapértelmezett állomás STR_STATION_CLASS_WAYP :Ellenőrző pontok # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Jelző választó STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Normál jelző (alak){}A legegyszerűbb jelzőtípus, az előtte lévő jelzőblokkba egyszerre csak egy vonatot enged tartózkodni STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Bejárati jelző (alak){}Mindaddig szabad, amíg van legalább egy szabad kijárati jelző az utána következő szakaszon. Egyébként Megálljt jelez STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Kijárati jelző (alak){}Ugyanúgy viselkedik mint a normál jelző, de megléte elengedhetetlenül szükséges a bejárati- és a kombinált jelzők működéséhez STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinált jelző (alak){}A kombinált jelző voltaképpen egy kijárati- és egy bejárati jelző egybeépítve. Segítségével komoly váltókörzetek építhetőek bejárati jelzőkből STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Irányjelző (alak){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az irányjelzők mellett hátulról is el lehet haladni STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Egyirányú irányjelző (alak){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az egyirányú jelzők mellett nem lehet hátulról elhaladni STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Normál jelző (fény){}A legegyszerűbb jelzőtípus, az előtte lévő jelzőblokkba egyszerre csak egy vonatot enged tartózkodni STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Bejárati jelző (fény){}Mindaddig szabad (zöld), amíg van legalább egy szabad kijárati jelző az utána következő szakaszon. Egyébként Megálljt (piros) jelez STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Kijárati jelző (fény){}Ugyanúgy viselkedik mint a normál jelző, de megléte elengedhetetlenül szükséges a bejárati- és a kombinált jelzők működéséhez STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinált jelző (fény){}A kombinált jelző voltaképpen egy kijárati- és egy bejárati jelző egybeépítve. Segítségével komoly váltókörzetek építhetőek bejárati jelzőkből STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az irányjelzők mellett hátulról is el lehet haladni STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Egyirányú irányjelző (fény){}Egy irányjelző lehetővé teszi, hogy amennyiben a vonatok le tudnak foglalni maguknak egy biztonságos vágányutat a következő jelzőig, több vonat is beléphessen ugyanabba a jelzőblokkba. Az egyirányú jelzők mellett nem lehet hátulról elhaladni STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Jelző átalakítás{}Amikor ki van jelölve, egy meglévő jelzőre való kattintással átkonvertálja a kiválasztott jelzőtípusra és -variációra, CTRL+kattintás a variációt fogja változtatni. Shift+kattintással megmutatja a becsült átalakítási költséget STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Automata jelzőtelepítés sűrűsége STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Automata jelzőtelepítés-sűrűség csökkentése STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Automata jelzőltelepítés-sűrűség növelése # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Válassz egy vasúti hidat STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Közúti híd építése STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Híd kiválasztása - kattints arra a hídra, amit meg akarsz építeni STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Függő, acél STR_BRIDGE_NAME_GIRDER_STEEL :Gerendás, acél STR_BRIDGE_NAME_CANTILEVER_STEEL :Rácsos, acél STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Függő, beton STR_BRIDGE_NAME_WOODEN :Fa STR_BRIDGE_NAME_CONCRETE :Beton STR_BRIDGE_NAME_TUBULAR_STEEL :Cső, acél STR_BRIDGE_TUBULAR_SILICON :Cső, Szilikon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Út építése STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Villamospálya építése STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Út építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Villamospálya építése. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési/bontási költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Közút építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Villamospálya építése egyszerűsített módon. A Ctrl billentyűvel válthatsz építés és rombolás között. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garázs építése (járművek vételére és karbantartására). Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Villamos remíz építése (járművek megépítésére és javítására). Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Buszmegálló építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Villamos-utasváró építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Teherautó-rakodóhely építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tehervillamos-állomás építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Egyirányú utak be/kikapcsolása STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Közúti híd építése. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Villamos-híd építése. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Közúti alagút építése. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Villamos-alagút építése. Shift lenyomásával megmutatja a becsült építési költséget STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Építés és felszedés közötti váltás utaknál STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Építés és bontás közötti váltás villamospályáknál # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Garázs helyzete STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Garázs helyzetének kiválasztása STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Remíz helyzete STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Remíz helyzetének kiválasztása # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Buszmegálló helyzete STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Buszmegálló helyzetének kiválasztása STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Rakodóhely helyzete STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Teherautó-rakodó helyzetének kiválasztása STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Villamos-utasváró helyzete STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Villamos-utasváró helyzetének kiválasztása STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Tehervillamos-állomás helyzete STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tehervillamos-állomás helyzetének kiválasztása # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Vízi utak építése STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vízi utak STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Csatorna építése. Shift lenyomásával megmutatja a becsült építési költséget STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Zsilip építése. Shift lenyomásával megmutatja a várható építési költséget STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Dokk építése (hajók vételére és karbantartására). Shift lenyomásával megmutatja a becsült építési költséget STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Kikötő építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Bója lerakása, amit a hajók útirányjelző pontként használhatnak. Shift lenyomásával megmutatja a becsült építési költséget STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Csatornahíd építése. Shift lenyomásával megmutatja a várható építési költséget STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Vizi terület definiálása.{}Csatornát készít, kivéve ha tengerszinten Ctrl gombot lenyomva használod, ekkor elárasztja a területet STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Folyók elhelyezése # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Dokk helyzete STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Dokk helyzetének kiválasztása # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Kikötő # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Repülőterek STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Repülőtér építése. A Ctrl lenyomásával egyesítheted más állomásokkal. Shift lenyomásával megmutatja a becsült építési költséget # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Repülőtér beállítása STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Repülőtér méretének/típusának kiválasztása STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Repülőtér osztálya STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Elrendezés {NUM} STR_AIRPORT_SMALL :Kicsi STR_AIRPORT_CITY :Városi STR_AIRPORT_METRO :Nagyvárosi STR_AIRPORT_INTERNATIONAL :Nemzetközi STR_AIRPORT_COMMUTER :Elővárosi STR_AIRPORT_INTERCONTINENTAL :Interkontinentális STR_AIRPORT_HELIPORT :Helileszálló STR_AIRPORT_HELIDEPOT :Helihangár STR_AIRPORT_HELISTATION :Heliállomás STR_AIRPORT_CLASS_SMALL :Kis repülőterek STR_AIRPORT_CLASS_LARGE :Nagy repülőterek STR_AIRPORT_CLASS_HUB :Központi repülőterek STR_AIRPORT_CLASS_HELIPORTS :Helikopter-állomások STR_STATION_BUILD_NOISE :{BLACK}Zajtermelés: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Tájrendezés STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése. Húzással az első kiválasztott sarkot lesüllyeszti, majd a kiválasztott területet vele egy szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a terepsüllyesztés várható építési költségét STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Egy sarokpont megemelése. Húzással az első kiválasztott sarkot megemeli, majd a kiválasztott területet vele egy szintbe hozza. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja a terepemelés várható építési költségét STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Talaj a kijelölt sarokpont szintjére hozása. Ctrl lenyomásával átlós terület jelölhető ki. Shift lenyomásával megmutatja az átalakítás várható költségét STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Földterület megvétele későbbi használatra. Shift lenyomásával megmutatja a várható költséget # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektum kiválaszás STR_OBJECT_BUILD_TOOLTIP :{BLACK}Építendő objektum kiválasztása. Shift lenyomásával megmutatja a várható költséget STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Építendő objektum típusának kiválasztása STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objektum előnézete STR_OBJECT_BUILD_SIZE :{BLACK}Méret: {GOLD}{NUM} x {NUM} mező STR_OBJECT_CLASS_LTHS :Világítótornyok STR_OBJECT_CLASS_TRNS :Adótornyok # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Fák STR_PLANT_TREE_TOOLTIP :{BLACK}Ültetendő fa kiválasztása. Ha már van fa a mezőn, akkor újabb fák ültetése a kiválasztott fatípustól függetlenül STR_TREES_RANDOM_TYPE :{BLACK}Véletlenszerű fafélék STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Véletlenszerűen kiválasztott fákat helyez el. Shift lenyomásával megmutatja a várható telepítési költséget STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Véletlenszerű fák STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Véletlenszerűen fákat ültet a térképre # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Táj szerkesztése STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Sziklás területek elhelyezése a térképen STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Sivatagot hoz létre.{}Nyomj Ctrl-t az eltávolításához STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Az emelendő/süllyesztendő földterület növelése STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Az emelendő/süllyesztendő földterület csökkentése STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Véletlenszerű táj készítése STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Új pálya létrehozása STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}A táj törlése STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Eltávolít minden, a vállalat által birtokolt elemet a térképről STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Táj törlése STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Biztos vagy benne, hogy el akarsz távolítani minden, a vállalt által birtokolt elemet? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Városkészítés STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Új település STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Új település építése. Shift+kattintással megmutatja a becsült költséget STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Egy véletlen település STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Település építése véletlenszerű helyre STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Sok véletlen település STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Véletlenszerüen elhelyez a térképen sok települést. STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Városnév: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}A város nevének megadása STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Kattints ide a város nevének beírásához STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Véletlen név STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Új véletlen név generálása STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Új település mérete: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Kicsi STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Közepes STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Nagy STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Véletlenszerű STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}A település méretének kiválasztása STR_FOUND_TOWN_CITY :{BLACK}Város STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Átlagosnál gyorsabban növekedő városok{}Beállítástól függően nagyobbak alapításkor STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Település úthálózat építési mintája: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Válassz úthálózati elrendezést ehhez a városhoz STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Eredeti STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Jobb utak STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2-es háló STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3-as háló STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Véletlenszerű # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Új gazdasági épület STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Megfelelő gazdasági épülettípus kiválasztása a listából STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Sok véletlen gazdasági épület STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Elhelyez a térképen véletlenszerüen sok gazdasági épületet STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Ár: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Kutatás STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Épít STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Alapít # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ipari láncolat {STRING} gazdasági épületnek STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ipari láncolat {STRING} rakománynak STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Termelő gazdasági épületek STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Elfogadó gazdasági épületek STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Házak STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Kattints a gazdasági épületre az ellátók és a fogyasztók megjelenítéséhez STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Kattints a rakományra az ellátók és a fogyasztók megjelenítéséhez. STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Láncolat mutatása STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Rakományellátó és fogyasztó gazdasági épületek megjelenítése STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Térképre kapcsolás STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}A térképen megjelenített gazdasági épületek kiválasztása STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Szállítmánytípus kiválasztása STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Válaszd ki a szállítmány típust amit meg akarsz jeleníteni STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Iparág választás STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Válaszd ki az iparágat amit meg akarsz jeleníteni # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Terület-információ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}{LTBLUE}Nem lehet lerombolni STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}A megtisztítás költsége: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Bevétel lerombolás esetén: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Nincs STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Tulajdonos: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Az út tulajdonosa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}A villamospálya tulajdonosa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}A vasúti pálya tulajdonosa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Helyi önkormányzat: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nincs STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordináták: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Épült: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Állomás osztálya: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Állomás típusa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Repülőtér osztály: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Repülőtér név: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Repülőtér mező név: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Vasúti pályasebesség: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kövek STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Durva föld STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Csupasz föld STR_LAI_CLEAR_DESCRIPTION_GRASS :Fű STR_LAI_CLEAR_DESCRIPTION_FIELDS :Szántóföld STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Havas föld STR_LAI_CLEAR_DESCRIPTION_DESERT :Sivatag STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} vasúti pálya STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} vasúti pálya normál jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} vasúti pálya előjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} vasúti pálya kijárati jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} vasúti pálya kombinált jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} vasúti pálya irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} vasúti pálya egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} vasúti pálya normál- és előjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} vasúti pálya normál- és kijárati jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} vasúti pálya normál- és kombinált jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} vasúti pálya normál- és irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} vasúti pálya normál- és egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} vasúti pálya elő- és kijárati jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} vasúti pálya elő- és kombinált jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} vasúti pálya elő- és irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} vasúti pálya elő- és egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} vasúti pálya kijárati- és kombinált jelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} vasúti pálya kijárati- és irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} vasúti pálya kijárati- és egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} vasúti pálya kombinált- és irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} vasúti pálya kombinált- és egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} vasúti pálya irány- és egyirányú irányjelzőkkel STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} járműtelep STR_LAI_ROAD_DESCRIPTION_ROAD :Út STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Út közvilágítással STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Fával szegélyezett út STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Garázs STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Közúti-vasúti átjáró STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Villamospálya # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (építés alatt) STR_LAI_TREE_NAME_TREES :Fák STR_LAI_TREE_NAME_RAINFOREST :Esőerdő STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusz STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Vasútállomás STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Repülőtéri hangár STR_LAI_STATION_DESCRIPTION_AIRPORT :Repülőtér STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Teherautó-rakodóhely STR_LAI_STATION_DESCRIPTION_BUS_STATION :Buszmegálló STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Kikötő STR_LAI_STATION_DESCRIPTION_BUOY :Bója STR_LAI_STATION_DESCRIPTION_WAYPOINT :Ellenőrző pont STR_LAI_WATER_DESCRIPTION_WATER :Víz STR_LAI_WATER_DESCRIPTION_CANAL :Csatorna STR_LAI_WATER_DESCRIPTION_LOCK :Zsilip STR_LAI_WATER_DESCRIPTION_RIVER :Folyó STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Tenger- vagy folyópart STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Dokk # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Vasúti alagút STR_LAI_TUNNEL_DESCRIPTION_ROAD :Közúti alagút STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Acél függő vasúti híd STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Gerendás acél vasúti híd STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Rácsos acél vasúti híd STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Vasbeton függő vasúti híd STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Fa vasúti híd STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Beton vasúti híd STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Cső vasúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Acél függő közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Gerendás acél közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Rácsos acél közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Vasbeton függő közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Fa közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Beton közúti híd STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Cső közúti híd STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Csatornahíd STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Rádióadó-torony STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Világítótorony STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Vállalat székháza STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Vállalat által birtokolt föld # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Az OpenTTD-ről STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Eredeti copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva STR_ABOUT_VERSION :{BLACK}OpenTTD {REV} verzió STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 Az OpenTTD csapat # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése STR_SAVELOAD_LOAD_CAPTION :{WHITE}Játék betöltése STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Pálya mentése STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Pálya betöltése STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Magasságtérkép betöltése STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Magasságtérkép mentése STR_SAVELOAD_HOME_BUTTON :{BLACK}Kattints ide az aktuális mentési könyvtárra való ugráshoz STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} szabad STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Meghajtók, könyvtárak és mentések listája STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}A mentés neve STR_SAVELOAD_DELETE_BUTTON :{BLACK}Töröl STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}A kijelölt mentés törlése STR_SAVELOAD_SAVE_BUTTON :{BLACK}Ment STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}A játék elmentése a választott néven STR_SAVELOAD_LOAD_BUTTON :{BLACK}Betölt STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Betölti a kiválasztott játékmentést STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Részletek STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nincs elérhető információ STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Add meg a játékmentés nevét # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Világ létrehozása STR_MAPGEN_MAPSIZE :{BLACK}Térkép méret: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Válaszd ki a térkép méretét. Az elérhető mezők száma egy kicsit kevesebb lesz STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Várossűrűség: STR_MAPGEN_DATE :{BLACK}Dátum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gazd. épületek száma: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hóhatár: STR_MAPGEN_SNOW_LINE_UP :{BLACK}A hóhatár megnövelése eggyel STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}A hóhatár csökkentése eggyel STR_MAPGEN_RANDOM_SEED :{BLACK}Véletlen alapszám: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kattints ide a véletlen alapszám beírásához STR_MAPGEN_RANDOM :{BLACK}Új véletlen alapszám STR_MAPGEN_RANDOM_HELP :{BLACK}Megváltoztatja a térképgenerálásnál használt véletlen alapszámot STR_MAPGEN_LAND_GENERATOR :{BLACK}Térkép generátor: STR_MAPGEN_TREE_PLACER :{BLACK}Fa algoritmus: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tereptípus: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Tengerszint: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Folyók: STR_MAPGEN_SMOOTHNESS :{BLACK}Simaság: STR_MAPGEN_VARIETY :{BLACK}Változatosság eloszlása: STR_MAPGEN_GENERATE :{WHITE}Generál # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Térkép határai: STR_MAPGEN_NORTHWEST :{BLACK}Északnyugat STR_MAPGEN_NORTHEAST :{BLACK}Északkelet STR_MAPGEN_SOUTHEAST :{BLACK}Délkelet STR_MAPGEN_SOUTHWEST :{BLACK}Délnyugat STR_MAPGEN_BORDER_FREEFORM :{BLACK}Szárazföld STR_MAPGEN_BORDER_WATER :{BLACK}Víz STR_MAPGEN_BORDER_RANDOM :{BLACK}Véletlen STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Véletlen STR_MAPGEN_BORDER_MANUAL :{BLACK}Kézi STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Magasságtérkép elforgatása: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Magasságtérkép neve: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Méret: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Irj be egy tetszőleges számot STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Hóhatár megváltoztatása STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Kezdő év megváltoztatása # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Pálya típusa STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Lapos terep STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Egy lapos terepet generál STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Véletlen térkép STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Lapos terep magassága: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Lapos terep magasságának csökkentése eggyel STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Lapos terep magasságának növelése eggyel STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Lapos terep magasságának megváltoztatása # Map generation progress STR_GENERATION_WORLD :{WHITE}Világ létrehozása... STR_GENERATION_ABORT :{BLACK}Félbeszakít STR_GENERATION_ABORT_CAPTION :{WHITE}Megszakítja a világ létrehozását STR_GENERATION_ABORT_MESSAGE :{YELLOW}Tényleg meg akarod szakítani a térkép generálását? STR_GENERATION_PROGRESS :{WHITE}{NUM}% kész STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Világ létrehozása STR_GENERATION_RIVER_GENERATION :{BLACK}Folyó generálás STR_GENERATION_TREE_GENERATION :{BLACK}Fák generálása STR_GENERATION_OBJECT_GENERATION :{BLACK}Mozgathatatlan létesítmények létrehozása STR_GENERATION_CLEARING_TILES :{BLACK}Durva és köves területek generálása STR_GENERATION_SETTINGUP_GAME :{BLACK}Játék beállítása STR_GENERATION_PREPARING_TILELOOP :{BLACK}Mezők véglegesítése STR_GENERATION_PREPARING_SCRIPT :{BLACK}Futó szkript STR_GENERATION_PREPARING_GAME :{BLACK}Játék előkészítése # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF beállítások STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Részletes NewGRF információ STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktív NewGRF fájlok STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inaktív NewGRF fájlok STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Lista kiválasztása: STR_NEWGRF_FILTER_TITLE :{ORANGE}Szűrendő kifejezés: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Kiválasztott lista betöltése STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Lista mentése STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}A kiválasztott elemek listába mentése STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Írj be egy nevet a listának STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Lista törlése STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}A jelenleg kiválasztott lista törlése STR_NEWGRF_SETTINGS_ADD :{BLACK}Hozzáad STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}A kiválasztott NewGRF fájlt hozzáadja a konfigurációdhoz STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Fájlok újraellenőrzése STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Az elérhető NewGRF fájlok listájának frissítése STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Eltávolít STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Eltávolítja a kiválasztott NewGRF-et a listáról STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Fel STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}A kiválasztott NewGRF-et felfelé mozgatja a listán STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Le STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}A kiválasztott NewGRF-et lefelé mozgatja a listán STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}A feltelepített NewGRF fájlok listája. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Paraméterek beállítása STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Paraméterek megjelenítése STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Palettaváltás STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}A kiválasztott NewGRF palettájának váltása.{}Akkor használd, ha a NewGRF-ból származó grafikai elemek rózsaszínként jelennek meg STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Alkalmazás STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Keresd a hiányzó tartalmat online STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Ellenőrizd, hogy letölthető-e a hiányzó tartalom STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Fájlnév: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Vezió: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatibilis verzió: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paletta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paraméterek: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Nem érhető el információ STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Fájl nem található STR_NEWGRF_SETTINGS_DISABLED :{RED}Kikapcsolva STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nem kompatibilis az OpenTTD ezen verziójával # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF paraméterek megváltoztatása STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Bezárás STR_NEWGRF_PARAMETERS_RESET :{BLACK}Alapértelmezett STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Összes paraméter alapértelmezettre állítása STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Paraméter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Paraméterek száma: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Megtekintés - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Szülő STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Objektum megtekintése szülőterületen STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} {HEX}-ban STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objektum STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Pályatípus STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF változó 60+x paraméter (hexadecimális) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Elhelyezési sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Következő sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Továbbhaladás a következő normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat bezárva a végével STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ugrás a spritehoz STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ugrás a megadott spritehoz. Ha a sprite nem normál sprite, továbbhaladás a következő normál spritehoz STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Előző sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Továbbhaladás az előző normál spritera, kihagyva bármilyen ál/átszínező/betű spriteokat bezárva az elejével STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}A jelenleg kiválasztott sprite ábrázolása. Az elhelyezkedés kikapcsolt sprite-rajzolás közben STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sprite elmozdítása, módosítva az X és Y offszeteket STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offszet: {NUM}, Y offszet: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprite felszedése STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Szedj fel egy spriteot akárhonnan a képernyőről STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Ugrás a spritehoz # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Figyelmeztetés: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Hiba: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Végzetes hiba: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Egy végzetes NewGRF hiba történt: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} nem fog működni az OpenTTD által jelentett TTDPatch verzióval STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} a TTD {STRING} verziójához van STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} úgy lett tervezve, hogy együtt lesz használva ezzel: {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Hibás paraméterérték ehhez: {1:STRING}: paraméter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} muszáj, hogy betöltődjön ezelőtt: {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} muszáj, hogy ezután töltődjön be: {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} csak a {STRING} vagy újabb verziójú OpenTTD-vel működik STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :az adott GRF fájl célja egy másik lefordítása STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Túl sok NewGRF van betöltve STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{1:STRING} betöltése mint statikus NewGRF {STRING} mellett ütközést okozhat STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Váratlan sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ismeretlen Action 0 tulajdonság {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Érvénytelen ID használat (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} hibás sprite-ot tartalmaz. Minden hibás sprite piros kérdőjellel (?) kerül jelölésre STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Több Action 8 bejegyzést tartalmaz (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Ál-sprite távoli végének olvasása (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}A jelenleg használt grafikus alapcsomagból hiányzik számos sprite.{}Kérlek frissítsd a grafikus alapcsomagot STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}A használt alap grafikus csomagból néhány egység hiányzik.{}Kérjük frissítsd az alap grafikus csomagot.{}Ha az {YELLOW}OpenTTD fejlesztői változatát{WHITE} használod, lehet hogy a {YELLOW}fejlesztői alap grafikus csomagot{WHITE} kellene használnod STR_NEWGRF_ERROR_GRM_FAILED :Kért GRF források nem elérhetőek (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} kikapcsolva {STRING} által STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Érvénytelen/ismeretlen sprite szerkezet formátum (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Figyelem! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Te éppen egy jelenleg futó játékon akarsz változtatni; ettől elszállhat az OpenTTD. Ezekről ne tegyél hibajelentést.{}Teljesen biztos vagy ebben? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nem lehetséges a fájl hozzáadása: duplikált GRF azonosító STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Pontosan megegyező fájlt nem találtam (kompatibilis GRF-fel helyettesítve) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nem adhatod hozzá: Elérted a NewGRF fájlok maximális számát STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilis GRFek betöltve a hiányzó fájlok helyett STR_NEWGRF_DISABLED_WARNING :{WHITE}Hiányzó GRF fájlokat kikapcsoltam STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Hiányzó GRF fájlok STR_NEWGRF_UNPAUSE_WARNING :{WHITE}A játék folytatásától az OpenTTD lefagyhat.{}Ne jelentsd be az ismétlődő lefagyásokat egyesével.{}Biztosan folytatni akarod? # NewGRF status STR_NEWGRF_LIST_NONE :Nincs STR_NEWGRF_LIST_ALL_FOUND :Minden fájl STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Talált kompatibilis fájlok STR_NEWGRF_LIST_MISSING :{RED}Hiányzó fájlok # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}A '{0:STRING}' viselkedése valószínűleg ütközést vagy összeomlást okoz STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Megváltoztatta '{1:ENGINE}' meghajtott vagon állapotát mikor nem volt bent a járműtelepen STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Megváltoztatta '{1:ENGINE}' jármű hosszát mikor nem volt a járműtelepen STR_BROKEN_VEHICLE_LENGTH :{WHITE}A '{1:COMPANY}' vállalat '{0:VEHICLE}' jelű vonatának érvénytelen a hossza. Ezt a NewGRF-ek okozhatják. A játék elszállhat vagy lefagyhat STR_NEWGRF_BUGGY :{WHITE}A(z) '{0:STRING}' NewGRF helytelen információt tartalmaz STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}A(z) '{1:ENGINE}' rakomány/átalakítás információja a gyártás után különbözik a vételi listán találhatótól. Ez hibát okozhat az automatikus felújítás/lecserélés során az átalakításban STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' végtelen ciklust okozott a termelés folyamatnál STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}{1:HEX} visszatérő érték ismeretlen/érvénytelen {2:HEX} értékkel tért vissza # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<érvénytelen rakomány> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <érvénytelen rakomány> STR_NEWGRF_INVALID_ENGINE :<érvénytelen jármű modell> STR_NEWGRF_INVALID_INDUSTRYTYPE :<érvénytelen gazdasági épület> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF-ek beolvasása STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF-ek beolvasása. Mennyiségtől függően eltarthat egy ideig... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF beolvasva kb. {NUM} NewGRF közül STR_NEWGRF_SCAN_ARCHIVES :Archív fájlok keresése # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Feliratok listája ({COMMA} db) STR_SIGN_LIST_MATCH_CASE :{BLACK}Kis- és nagybetűk megkülönböztetése STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Kis- és nagybetűk megkülönböztetése a feliratok szövegei és a szűrő kulcsszó összehasonlítása közben # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Felirat szerkesztése STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Következő felirat STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Előző felirat STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Felirat szövegének szerkesztése # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Városok STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nincs - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Városnevek - kattints egy névre a város megnézéséhez. Ctrl+kattintás esetén új látképet nyit a város pozíciójára STR_TOWN_POPULATION :{BLACK}Világnépesség: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Város) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Lakosság: {ORANGE}{COMMA}{BLACK} Házak: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Utasok az előző hónapban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Levélcsomagok az előző hónapban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}A város növekedéséhez szükséges rakomány: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} szükséges STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} szükséges télen STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} szállítva STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (több szükséges) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (szállítva) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}A település {ORANGE}{COMMA}{BLACK} naponta növekszik STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}A település {ORANGE}{COMMA}{BLACK} naponta növekszik (támogatást kapott) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}A település {RED}nem{BLACK} növekszik STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Zajszint a városban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a városra állítja. Ctrl+kattintás esetén új nézetet nyit a város pozíciójára STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Önkormányzat STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Az önkormányzat adatainak megmutatása STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}A város nevének megváltoztatása STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Növel STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}A település méretének növelése STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Töröl STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}A település teljes eltüntetése STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Város átnevezése # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} önkormányzata STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Vélemény a szállítási vállalatokról: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Lehetséges intézkedések: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}A városban megtehető dolgok listája - kattints egy elemre a részletekhez STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Tedd meg STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}A fenti listában kijelölt intézkedés végrehajtása STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Kis reklámhadjárat STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Közepes reklámhadjárat STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Nagy reklámhadjárat STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :A helyi utak helyreállíttatása STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Szobor építtetése a vállalat tulajdonosának STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Új épületek építésének támogatása STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kizárólagos szállítási jogok vásárlása STR_LOCAL_AUTHORITY_ACTION_BRIBE :Önkormányzat megvesztegetése STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Kis helyi reklámhadjárat indítása, hogy több utast és rakományt vonzz a megállóidba.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Közepes helyi reklámhadjárat indítása, hogy több utast és rakományt vonzz a megállóidba.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Nagy helyi reklámhadjárat indítása, hogy több utast és rakományt vonzz a megállóidba.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}A városi úthálózat felújításának támogatása. Hat hónapig jelentősen összezavarja a közúti forgalmat.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Szobor építése a vállalatod tiszteletére.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Új kereskedelmi épületek építésének támogatása a városban.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Egy éves kizárólagos szállítási jogok vásárlása a városban. Az önkormányzat csak a te állomásaid használatát engedi meg az utasoknak és a rakományoknak.{}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}A megítélésed növelése az önkormányzat megvesztegetésével, komoly büntetést kockáztatva, ha az kiderül.{}Ára: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Célok STR_GOALS_GLOBAL_TITLE :{BLACK}Globális célok: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nincs - STR_GOALS_COMPANY_TITLE :{BLACK}Vállalat céljai: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattintással a fő nézetet a célra állítja. Ctrl+kattintással új látképet nyit a gazdasági épület/település/mező helyéről # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Kérdés STR_GOAL_QUESTION_CAPTION_INFORMATION :Információ STR_GOAL_QUESTION_CAPTION_WARNING :Figyelmeztetés STR_GOAL_QUESTION_CAPTION_ERROR :Hiba ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Mégse STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nem STR_GOAL_QUESTION_BUTTON_YES :Igen STR_GOAL_QUESTION_BUTTON_DECLINE :Visszautasít STR_GOAL_QUESTION_BUTTON_ACCEPT :Elfogad STR_GOAL_QUESTION_BUTTON_IGNORE :Kihagyás STR_GOAL_QUESTION_BUTTON_RETRY :Újra STR_GOAL_QUESTION_BUTTON_PREVIOUS :Előző STR_GOAL_QUESTION_BUTTON_NEXT :Következő STR_GOAL_QUESTION_BUTTON_STOP :Megállj STR_GOAL_QUESTION_BUTTON_START :Indít STR_GOAL_QUESTION_BUTTON_GO :Megy STR_GOAL_QUESTION_BUTTON_CONTINUE :Folytat STR_GOAL_QUESTION_BUTTON_RESTART :Újrakezd STR_GOAL_QUESTION_BUTTON_POSTPONE :Elhalaszt STR_GOAL_QUESTION_BUTTON_SURRENDER :Felad STR_GOAL_QUESTION_BUTTON_CLOSE :Bezár # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Támogatások STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Támogatás jár STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} szállításáért {STRING} és {STRING} között{YELLOW} ({DATE_SHORT}ig) STR_SUBSIDIES_NONE :{ORANGE}--- STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Már támogatást kap STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} szállításáért {STRING} és {STRING} között {YELLOW} ({COMPANY}{YELLOW} ({DATE_SHORT}ig) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kattints egy sorra a város/gazdasági épület megnézéséhez. Ctrl+kattintás esetén új látképet nyit a város/gazdasági épület pozíciójára # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Állomásnevek - kattints egy névre az állomás megnézéséhez. Ctrl+kattintásra új látképet nyit az állomás pozíciójára STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Több elem kiválasztásához tartsd lenyomva a Ctrl gombot STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} állomásai - {COMMA} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nincs - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Minden szállítóegység kiválasztása STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Minden rakománytípus mutatása (beleértve ha nincs várakozó rakomány) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Semmilyen áru nem várakozik # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Várakozik: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ideszállítva {STATION} állomásról) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Elfogadás STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Az elfogadott áruk listájának mutatása STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Elfogad:{WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ez az állomás kizárólagos szállítási jogokkal rendelkezik ezen a településen. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kizárólagos szállítási jogokat vásárolt a településen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vélemény STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vélemény megmutatása az állomásról STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}A szállítás helyi megítélése: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :szörnyű STR_CARGO_RATING_VERY_POOR :nagyon rossz STR_CARGO_RATING_POOR :rossz STR_CARGO_RATING_MEDIOCRE :közepes STR_CARGO_RATING_GOOD :jó STR_CARGO_RATING_VERY_GOOD :nagyon jó STR_CARGO_RATING_EXCELLENT :kiváló STR_CARGO_RATING_OUTSTANDING :kimagasló ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet az állomásra állítja. Ctrl+kattintás esetén új látképet nyit az állomás pozíciójára STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Az állomás nevének megváltoztatása STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Kilistázza az összes vonatot, aminek a menetrendjében szerepel ez az állomás STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Kilistázza az összes közúti járművet, aminek a menetrendjében szerepel ez az állomás STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Kilistázza az összes repülőt, aminek a menetrendjében szerepel ez az állomás STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Kilistázza az összes hajót, aminek a menetrendjében szerepel ez az állomás STR_STATION_VIEW_RENAME_STATION_CAPTION :Állomás/rakodóhely átnevezése STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Reptér bezárása STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Repülőgép leszállásának megakadályozása ezen a reptéren # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet az ellenőrző pontra állítja. Ctrl+kattintás esetén új látképet nyit az ellenőrző pont pozíciójára STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Átnevezi az ellenőrző pontot STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}A fő nézetet a bójára állítja. Ctrl+kattintás esetén új látképet nyit a bója pozíciójára STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Bója átnevezése STR_EDIT_WAYPOINT_NAME :{WHITE}Ellenőrző pont nevének módosítása # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} pénzügyei {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Kiadás/Bevétel STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Építkezés STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Új járművek STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Vonat működtetési költség STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Közúti jármű műk. költség STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Repülőgép műk. költség STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Hajó működtetési költség STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Ingatlanok karbantartása STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Vonatok bevétele STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Közúti járművek bevétele STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Repülőgépek bevétele STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Hajók bevétele STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Kölcsön kamata STR_FINANCES_SECTION_OTHER :{GOLD}Egyéb STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Összesen: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Banki egyenleg STR_FINANCES_LOAN_TITLE :{WHITE}Kölcsön STR_FINANCES_MAX_LOAN :{WHITE}Max. kölcsön: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Kölcsönkér {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Kölcsön növelése. Ctrl+kattintással amennyivel csak lehet STR_FINANCES_REPAY_BUTTON :{BLACK}Visszafizet {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}A kölcsön egy részének törlesztése. Ctrl+kattintással amennyivel csak lehet STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktúra # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Elnök) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Alapítás éve: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Színséma: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Járművek: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} vonat STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} közúti jármű STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} repülőgép STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} hajó STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nincs STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Vállalat értéke: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% {COMPANY} tulajdona) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktúra: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} vasúti elem STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} közúti elem STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vízi elem STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} állomáselem STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} repülőtér STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nincs STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Székház építése STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}A vállalat székházának felépítése STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Székház STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Székház megtekintése STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}SZH áthelyezése STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}A vállalat székházának újraépítése máshol a vállalat értékének 1%-áért. Shift+kattintással megmutatja a becsült költséget a székhely áthelyezése nélkül STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Részletek STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Részletes információk megtekintése az infrastruktúráról STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Új arc STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Új arc választása az elnöknek STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Színséma STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}A vállalat járműszíneinek megváltoztatása STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Vállalat neve STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}A vállalat nevének megváltoztatása STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Elnök neve STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Az elnök nevének megváltoztatása STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}25% megvétele a vállalatból STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}25% eladása a vállalatból STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}25%-nyi vállalati részvény megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}25%-nyi vállalati részvény eladása. Shift+kattintással megmutatja a becsült költséget eladás nélkül STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :A vállalat neve STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Elnök neve STR_BUY_COMPANY_MESSAGE :{WHITE}Vállalatunk vagyontárgyait eladásra kínáljuk: járművek, terület és hálózat tulajdonok, bankszámla{}{}Megveszed {COMPANY} vállalatot {CURRENCY_LONG}-ért? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} infrastruktúrája STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Vasúti elemek: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Vasúti jelzők STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Közúti elemek: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Út STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Villamospálya STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vízi elemek: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Csatornák STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Állomások: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Állomáselemek STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Repülőterek STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/év ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/év # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Gazdasági épületek STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nincs - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% elszállítva) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% elszállítva) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Gazdasági épületek neve - a névre kattintva a fő nézetet a választott objektumra irányíthatod. Ctrl+kattintással új látképet nyit a gazdasági épület pozíciójára # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Múlt havi termelés: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% elszállítva) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}A fő nézetet a gazdasági épületre állítja. Ctrl+kattintás esetén új látképet nyit a gazdasági épület pozíciójára STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Termelési szint: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Felhasznál: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Feldolgozásra váró rakomány: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Gyárt: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Gyárt: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Termelés megváltoztatása (8 többszörösei 2040-ig) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Termelési szint megváltoztatása (százalékosan, 800%-ig) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} vonatai - {COMMA} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} közúti járművei - {COMMA} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} hajói - {COMMA} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} repülőgépei - {COMMA} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vonatok - kattints egy vonatra az adataihoz STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Közúti járművek - kattints egy járműre az adataihoz STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Hajók - kattints egy hajóra az adataihoz STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Repülőgépek - kattints egy repülőgépre az adataihoz STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Idei nyereség: {CURRENCY_LONG} (Tavalyi: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Elérhető vonatok STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Elérhető közúti járművek STR_VEHICLE_LIST_AVAILABLE_SHIPS :Elérhető hajók STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Elérhető repülők STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Nézd meg az ehhez a járműtípushoz választható mozdonyok listáját STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Lista kezelése STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}A listán szereplő járműveknek utasítás küldése STR_VEHICLE_LIST_REPLACE_VEHICLES :Járművek lecserélése STR_VEHICLE_LIST_SEND_FOR_SERVICING :Javításra küld STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Elküldi járműtelepre STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Elküldi garázsba STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Elküldi dokkba STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Elküldi hangárba STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Kattints ide a listán lévő összes jármű leállításához STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Kattints ide a listán lévő összes jármű elindításához STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} jármű megosztott utasításlistája # Group window STR_GROUP_ALL_TRAINS :Összes vonat STR_GROUP_ALL_ROAD_VEHICLES :Összes közúti jármű STR_GROUP_ALL_SHIPS :Összes hajó STR_GROUP_ALL_AIRCRAFTS :Összes repülő STR_GROUP_DEFAULT_TRAINS :Csoportosítatlan vonatok STR_GROUP_DEFAULT_ROAD_VEHICLES :Csoportosítatlan közúti járművek STR_GROUP_DEFAULT_SHIPS :Csoportosítatlan hajók STR_GROUP_DEFAULT_AIRCRAFTS :Csoportosítatlan repülők STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Csoportok - Kattints a csoport nevére a járművek listázásához STR_GROUP_CREATE_TOOLTIP :{BLACK}Csoport létrehozásához kattints ide STR_GROUP_DELETE_TOOLTIP :{BLACK}Kijelölt csoport törlése STR_GROUP_RENAME_TOOLTIP :{BLACK}Kijelölt csoport átnevezése STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Csoport teljes listás automata csere alóli mentessége STR_GROUP_ADD_SHARED_VEHICLE :Megosztott jármű hozzáadása STR_GROUP_REMOVE_ALL_VEHICLES :Összes jármű eltávolítása STR_GROUP_RENAME_CAPTION :{BLACK}Csoport átnevezése # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Új vasúti járművek STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Új villamos vasúti járművek STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Új egysínű járművek STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Új Maglev járművek STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Új vasúti járművek STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Új közúti járművek STR_BUY_VEHICLE_SHIP_CAPTION :Új hajók STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Új repülőgépek STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Ár: {GOLD}{CURRENCY_LONG}{BLACK} Súly: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Sebesség: {GOLD}{VELOCITY}{BLACK} Telj.: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Sebesség: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Sebesség óceánon: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Sebesség folyón/csatornán: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Üzemeltetés: {GOLD}{CURRENCY_LONG}/év STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapacitás: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(átalakítható) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Kifejlesztve: {GOLD}{NUM}{BLACK} Élettartam: {GOLD}{COMMA} év STR_PURCHASE_INFO_RELIABILITY :{BLACK}Max. megbízhatóság: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Ár: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Súly: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Ár: {GOLD}{CURRENCY_LONG}{BLACK} Sebesség: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapacitás: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Meghajtott vagonok: {GOLD}+{POWER}{BLACK} Súly: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Átalakítható: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Minden rakomány típusra STR_PURCHASE_INFO_ALL_BUT :Mindenre, kivéve {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maximális vonóerő: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Hatótávolság: {GOLD}{COMMA} mező STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vasúti jármű kiválasztása - kattints egy járműre az adataihoz STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Közúti jármű kiválasztása - kattints egy járműre az adataihoz STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Hajó kiválasztása - kattints egy hajóra az adataihoz STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Repülőgép kiválasztása - kattints egy repülőgépre az adataihoz STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Megvesz STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Megvesz STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Megvesz STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Megvesz STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt vasúti jármű megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt közúti jármű megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt hajó megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}A kijelölt repülőgép megvétele. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Átnevez STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Átnevez STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Átnevez STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Átnevez STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}A vasúti jármű márkanevének megváltoztatása STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}A közúti jármű márkanevének megváltoztatása STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}A hajó márkanevének megváltoztatása STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}A repülőgép márkanevének megváltoztatása STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Márkanév megváltoztatása # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Járműtelep nevének megváltoztatása STR_DEPOT_RENAME_DEPOT_CAPTION :Járműtelep átnevezése STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} jármű{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vonatok - bal gombbal húzással áthelyezheted a járműveket a vonatba/vonatból, jobb gombbal kattintással járműinformáció. Ctrl lenyomásával a funkciókat a szerelvényre alkalmazod. STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Járművek - kattints jobb gombbal egy járműre az adataihoz STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Hajók - kattints jobb gombbal egy hajóra az adataihoz STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Repülőgépek - kattints jobb gombbal egy repülőgépre az adataihoz STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Húzz ide egy járművet az eladásához STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Húzz ide egy járművet az eladásához STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Húzz ide egy hajót az eladásához STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Húzz ide egy repülőgépet az eladásához STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Húzd ide a mozdonyt a teljes vonat eladásához STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}A járműtelepen tartózkodó összes vonat eladása STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Összes garázsban tartózkodó jármű eladása STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Összes dokkban tartózkodó hajó eladása STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Összes hangárban tartózkodó repülő eladása STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}A járműtelepen tartózkodó összes vonat automatikus cseréje STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}A garázsban tartózkodó összes jármű automatikus cseréje STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}A dokkban tartózkodó összes hajó automatikus cseréje STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}A hangárban tartózkodó összes repülő automatikus cseréje STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Új járművek STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Új járművek STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Új hajók STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Új repülőgépek STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Új vasúti járművek vétele STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Új közúti járművek vétele STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Új hajók vétele STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Új repülőgépek vétele STR_DEPOT_CLONE_TRAIN :{BLACK}Vonat másolása STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Jármű másolása STR_DEPOT_CLONE_SHIP :{BLACK}Hajó másolása STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Repülőgép másolása STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy teljes vonat másolatát. Kattints ide, majd a másolandó vonatra. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ide kattintva megveheted egy közúti jármű másolatát. Kattints ide, majd a másolandó járműre a járműtelepen belül vagy kívül. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ide kattintva elkészítheted egy hajó másolatát. Kattints ide, majd a másolandó hajóra. Ctrl+Kattintással a menetrendet is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ide kattintva elkészítheted egy repülőgép másolatát. Kattints ide, majd a másolandó repülőgépre. Ctrl+kattintással a menetrendet is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}A fő nézetet a járműtelepre állítja. Ctrl+kattintás esetén új látképet nyit a járműtelep pozíciójára STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}A fő nézetet a garázsra állítja. Ctrl+kattintás esetén új látképet nyit a garázs pozíciójára STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}A fő nézetet a dokkra állítja. Ctrl+kattintás esetén új látképet nyit a dokk pozíciójára STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}A fő nézetet a hangárra állítja. Ctrl+kattintás esetén új látképet nyit a hangár pozíciójára STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Vonatok listája, amelyek menetrendjében a járműtelep szerepel STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Az összes, a hangárt menetrendszerüen látogató jármű listájának összeállítása STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Az összes, a dokkot menetrendszerüen látogató hajó listájának összeállítása STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Az összes, a hangárt menetrendszerüen látogató repülőgép listájának összeállítása STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Kattints ide a járműtelepen lévő összes vonat megállításához STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kattints ide az összes közúti jármű megállításához a garázsban STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Kattints ide az összes hajó leállításához a dokkban STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Kattints ide az összes repülőgép leállításához a hangárban STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Kattints ide az összes vonat elindításához a járműtelepről STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Kattints ide az összes közúti jármű elindításához a garázsból STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Kattints ide az összes hajó elindításához a dokkból STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Kattints ide az összes repülő elindításához a hangárból STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Biztosan eladod a járműtelepen lévő összes járművet? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Üzenet egy járműgyártótól STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Most készültek el egy új {STRING} tervei - érdekelne a jármű egy éves kizárólagos használata, hogy megnézhessük a képességeit, mielőtt mindenki számára elérhetővé tesszük? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :vasúti mozdony STR_ENGINE_PREVIEW_ROAD_VEHICLE :közúti jármű STR_ENGINE_PREVIEW_AIRCRAFT :repülőgép STR_ENGINE_PREVIEW_SHIP :hajó STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :egysínű mozdony STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Maglev mozdony STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Ár: {CURRENCY_LONG} Súly: {WEIGHT_SHORT}{}Sebesség: {VELOCITY} Teljesítmény: {POWER}{}Üzemeltetés: {CURRENCY_LONG}/év{}Kapacitás: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Ár: {CURRENCY_LONG} Súly: {WEIGHT_SHORT}{}Sebesség: {VELOCITY} Erő: {POWER} Maximális Vonóerő: {6:FORCE}{}Üzemeltetési költségeit: {4:CURRENCY_LONG}/év{}Capacity: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY}{}Kapacitás: {CARGO_LONG}, {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY}{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY} Hatótávolság: {COMMA} mező{}Kapacitás: {CARGO_LONG}, {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY} Hatótávolság: {COMMA} mező{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} lecserélése - {STRING} STR_REPLACE_VEHICLE_TRAIN :Vonatok STR_REPLACE_VEHICLE_ROAD_VEHICLE :Közúti járművek STR_REPLACE_VEHICLE_SHIP :Hajók STR_REPLACE_VEHICLE_AIRCRAFT :Repülőgépek STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Cserélendő járműtípus kiválasztása STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}A bal oldalon kiválasztott járműtípus helyett kívánt új járműtípus kiválasztása STR_REPLACE_VEHICLES_START :{BLACK}Járműcsere elkezdése STR_REPLACE_VEHICLES_NOW :Az összes jármű azonnali lecserélése STR_REPLACE_VEHICLES_WHEN_OLD :Csak az elöregedett járművek lecserélése STR_REPLACE_HELP_START_BUTTON :{BLACK}Nyomd meg ezt a gombot hogy a bal oldalon kiválasztott járműveket lecseréld a jobb oldalon kiválasztottra STR_REPLACE_NOT_REPLACING :{BLACK}Nem cserélendő STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nincs kiválasztva jármű STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} - csak ha elöregedett STR_REPLACE_VEHICLES_STOP :{BLACK}Járműcsere befejezése STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Nyomd meg ezt a gombot, ha be akarod fejezni a bal oldalon kiválasztott járművek cseréjét STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Lecserél: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Váltás a mozdony és a vagoncserélő ablak között STR_REPLACE_ENGINES :Mozdonyok STR_REPLACE_WAGONS :Vagonok STR_REPLACE_HELP_RAILTYPE :{BLACK}Cserélendő egységek vasúttípusának kiválasztása STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Megmutatja, hogy melyik bal oldali egységet akarod kicserélni STR_REPLACE_RAIL_VEHICLES :Normál vasúti járművek STR_REPLACE_ELRAIL_VEHICLES :Villamosított vasúti járművek STR_REPLACE_MONORAIL_VEHICLES :Egysínű Vasutak STR_REPLACE_MAGLEV_VEHICLES :Maglev Járművek STR_REPLACE_REMOVE_WAGON :{BLACK}Vagon törlés: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Az automatikus cserénél a szerelvény hosszának a megtartása vagonok eltávolításával (mozdony utántól kezdve), ha a csere után a szerelvény hosszabb lenne # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Közelítés a vonat jelenlegi helyzetére. Ctrl+kattintással a vonat követése a fő nézetben STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Közelítés a jármű jelenlegi helyzetére. Ctrl+kattintással a jármű követése a fő nézetben STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Közelítés a hajó jelenlegi helyzetére. Ctrl+kattintással a hajó követése a fő nézetben STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Közelítés a repülőgép jelenlegi helyzetére. Ctrl+kattintással a repülőgép követése a fő nézetben STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}A járműtelepre küldi a vonatot. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Garázsba küldi a járművet. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Dokkba küldi a hajót. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Hangárba küldi a repülőgépet. Ctrl+kattintással csak javításra STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ide kattintva a teljes vonat másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ide kattintva a jármű másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ide kattintva a hajó másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ide kattintva a repülőgép másolatát készítheted el. Ctrl+kattintással az utasításlistát is megosztod. Shift+kattintással megmutatja a becsült költséget vásárlás nélkül STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}A vonat rákényszerítése a megállj jelzés meghaladására STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}A vonat átalakítása másfajta rakomány szállítására STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Teherautó átalakítása másfajta rakomány szállítására STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}A hajó átalakítása másfajta rakomány szállítására STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}A repülőgép átalakítása másfajta rakomány szállítására STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Vonat megfordítása STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Jármű rákényszerítése megfordulásra STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}A vonat utasításainak mutatása. Ctrl+kattintás a menetrendet mutatja STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}A jármű utasításainak mutatása. Ctrl+kattintás a menetrendet mutatja STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}A hajó utasításainak mutatása. Ctrl+kattintás a menetrendet mutatja STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}A repülőgép utasításainak mutatása. Ctrl+kattintás a menetrendet mutatja STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}A vonat adatai STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}A közúti jármű adatai STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}A hajó adatai STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}A repülőgép adatai STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Aktuális vonatmozgás - kattints ide a vonat elindításához vagy megállításához. Ctrl+kattintással az utasítások váltása STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Aktuális járműmozgás - kattints ide a jármű elindításához vagy megállításához. Ctrl+kattintással az utasítások váltása STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Aktuális hajómozgás - kattints ide a hajó elindításhoz vagy megállításhoz. Ctrl+kattintással az utasítások váltása STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Aktuális repülőgépmozgás - kattints ide a repülőgép elindításához vagy megállításához. Ctrl+kattintással az utasítások váltása # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Berakodás / Kirakodás STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Indul STR_VEHICLE_STATUS_CRASHED :{RED}Balesetet szenvedett! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Lerobbant STR_VEHICLE_STATUS_STOPPED :{RED}Áll STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Lassít, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Nincs áram STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Szabad útra vár STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}A következő repülőtér túl messze van STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION} állomás felé, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Nincs utasítás, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Útban {WAYPOINT} felé, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Útban {DEPOT} felé, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Javítás {DEPOT}ban, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Megállítva STR_VEHICLE_COMMAND_STOPPED :{RED}Megállítva STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Elindítva STR_VEHICLE_COMMAND_STARTED :{GREEN}Elindítva # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} adatai STR_VEHICLE_NAME_BUTTON :{BLACK}Név STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Vonat átnevezése STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Közúti jármű átnevezése STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Hajó átnevezése STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Repülőgép átnevezése STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Kor: {LTBLUE}{STRING}{BLACK} Üzemeltetés: {LTBLUE}{CURRENCY_LONG}/év # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} év ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} év ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Végsebesség: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Végsebesség: {LTBLUE}{VELOCITY} {BLACK}Hatótávolság: {LTBLUE}{COMMA} mező STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Súly: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teljesítmény: {LTBLUE}{POWER}{BLACK} Végsebesség: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Súly: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teljesítmény: {LTBLUE}{POWER}{BLACK} Végsebesség: {LTBLUE}{VELOCITY} {BLACK}Vonóerő: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Idei haszon: {LTBLUE}{CURRENCY_LONG} (tavalyi: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Megbízhatóság: {LTBLUE}{COMMA}% {BLACK}Lerobbanások az utolsó javítás óta: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Vásárlás éve: {LTBLUE}{NUM}{BLACK} Érték: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapacitás: {LTBLUE}Nincs{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapacitás: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapacitás: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacitás: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Szállítási díj: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Javítási időköz: {LTBLUE}{COMMA} nap{BLACK} Utolsó javítás: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Javítási intervallum: {LTBLUE}{COMMA}%{BLACK} Utolsó javítás: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Javítási időköz növelése 10-zel. Ctrl+kattintás 5-tel növeli STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Javítási időköz csökkentése 10-zel. Ctrl+Kattintás 5-tel csökkenti STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Javítási időköz módjának megváltoztatása STR_VEHICLE_DETAILS_DEFAULT :Alapértelmezett STR_VEHICLE_DETAILS_DAYS :Napok STR_VEHICLE_DETAILS_PERCENT :Százalék STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Vonat átnevezése STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Közúti jármű átnevezése STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Hajó átnevezése STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Repülőgép átnevezése # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Vásárlás éve: {LTBLUE}{NUM}{BLACK} Érték: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Érték: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Teljes szállítási kapacitása ennek a vonatnak: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Üres STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} {STATION} állomásról STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} {STATION} állomásról (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Rakomány STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}A szállított rakomány részletei STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Információ STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}A vonat kocsiainak részletei STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapacitás STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Az egyes kocsik kapacitása STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Teljes rakomány STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Megmutatja a vonat teljes kapacitását, rakománytípusokra lebontva STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapacitás: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} átalakítása STR_REFIT_TITLE :{GOLD}Átalakítás, hogy szállíthasson: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}{}{BLACK}Átalakítás költsége: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}{}{BLACK}Bevétel átalakításból: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Átalakítás költsége: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Új kapacitás: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Bevétel átalakításból: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Átalakítandó járművek kiválasztása. Egérrel húzva több jármű választható ki. Üres helyre kattintva az egész jármű jelölhető ki. Ctrl+Kattintással a jármű és az azt követő szerelvény jelölhető ki STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Vonat által szállítandó rakomány kiválasztása STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Közúti jármű által szállítandó rakomány kiválasztása STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Hajó által szállítandó rakomány kiválasztása STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Repülőgép által szállítandó rakomány kiválasztása STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Vonat átalakítása STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Közúti jármű átalakítása STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Hajó átalakítása STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Repülőgép átalakítása STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Vonat átalakítása a kijelölt rakomány szállítására STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Közúti jármű átalakítása a kijelölt rakomány szállítására STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Hajó átalakítása a kijelölt rakomány szállítására STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Repülőgép átalakítása a kijelölt rakomány szállítására # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} utasításai STR_ORDERS_TIMETABLE_VIEW :{BLACK}Menetrend STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Átkapcsolás menetrendi nézetre STR_ORDERS_LIST_TOOLTIP :{BLACK}Utasításlista - kattints egy célpontra a kijelöléséhez. Ctrl+kattintással az utasítás helyszínére görget STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Utasítások vége - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Megosztott utasításlista vége - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Non-stop STR_ORDER_GO_TO :Menj STR_ORDER_GO_NON_STOP_TO :Non-stop - Megállás nélkül menj STR_ORDER_GO_VIA :Via - Megállás nélkül menj át STR_ORDER_GO_NON_STOP_VIA :Non-stop via - Megállás nélkül menj és hajts át STR_ORDER_TOOLTIP_NON_STOP :{BLACK}A kijelölt célpont megközelítésének és a megállási-áthajtási szokásainak beállítása STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Telerakodás bármiből STR_ORDER_DROP_LOAD_IF_POSSIBLE :Berakodás, ha lehetséges STR_ORDER_DROP_FULL_LOAD_ALL :Telerakodás mindenből STR_ORDER_DROP_FULL_LOAD_ANY :Telerakodás bármiből STR_ORDER_DROP_NO_LOADING :Nincs berakodás STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}A kijelölt célponton a berakodási szokások beállítása STR_ORDER_TOGGLE_UNLOAD :{BLACK}Teljes kirakodás STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Kirakodás ha fogadott STR_ORDER_DROP_UNLOAD :Teljes kirakodás STR_ORDER_DROP_TRANSFER :Elszállítás STR_ORDER_DROP_NO_UNLOADING :Nincs kirakodás STR_ORDER_TOOLTIP_UNLOAD :{BLACK}A kijelölt célponton a kirakodási szokások beállítása STR_ORDER_REFIT :{BLACK}Átalakít STR_ORDER_REFIT_TOOLTIP :{BLACK}Az utasításban szereplő átalakítandó árutípus kiválasztása. Ctrl+kattintással az átalakítási utasítás eltávolítása STR_ORDER_REFIT_AUTO :{BLACK}Átalakítás STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Az utasításban szereplő automatikusan átalakítandó árutípus kiválasztása. Ctrl+kattintással az átalakítási utasítás eltávolítása. Az átalakítás csak akkor megy végbe, ha a jármű megengedi ezt STR_ORDER_DROP_REFIT_AUTO :Fix rakomány STR_ORDER_DROP_REFIT_AUTO_ANY :Elérhető rakomány STR_ORDER_SERVICE :{BLACK}Javítás STR_ORDER_DROP_GO_ALWAYS_DEPOT :Mindig menj javítani STR_ORDER_DROP_SERVICE_DEPOT :Ha javításra szorul STR_ORDER_DROP_HALT_DEPOT :Maradj ott STR_ORDER_SERVICE_TOOLTIP :{BLACK}Utasítás kihagyása, ha javítás szükséges STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}A jármű adata ami alapján ugrani szeretnénk a parancssorban # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Rakomány százaléka STR_ORDER_CONDITIONAL_RELIABILITY :Megbízhatóság STR_ORDER_CONDITIONAL_MAX_SPEED :Maximális sebesség STR_ORDER_CONDITIONAL_AGE :Kor (év) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Javításra szorul STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Mindig STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Hátralévő élettartam (év) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Hogyan viszonyul a jármű kiválasztott adata a megadott értékhez STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :egyenlő STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nem egyenlő STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :kevesebb, mint STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :nem több, mint STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :több, mint STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :nem kevesebb, mint STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :igaz STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :hamis STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Az érték amihez a jármű egy adatát viszonyítjuk STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Írd be az értéket amihez viszonyítani szeretnél STR_ORDERS_SKIP_BUTTON :{BLACK}Kihagy STR_ORDERS_SKIP_TOOLTIP :{BLACK}Jelenlegi utasítás átugrása, és a következő aktiválása. Ctrl+kattintásra a kiválasztott utasításra ugrik STR_ORDERS_DELETE_BUTTON :{BLACK}Töröl STR_ORDERS_DELETE_TOOLTIP :{BLACK}A kijelölt utasítás törlése STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Összes utasítás törlése STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Megosztás vége STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Az utasításlista megosztásának megszakítása. Ctrl+kattintással törli a teljes utasításlistát STR_ORDERS_GO_TO_BUTTON :{BLACK}Új cél STR_ORDER_GO_TO_NEAREST_DEPOT :Legközelebbi járműtelepre STR_ORDER_GO_TO_NEAREST_HANGAR :Legközelebbi hangárba STR_ORDER_CONDITIONAL :Feltételes ugrás STR_ORDER_SHARE :Utasításlista megosztása STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Új utasítás beillesztése a kijelölt utasítás elé vagy a lista végére. Ctrl+kattintás állomásoknál 'bármiből teljes rakományra vár'-t, ellenőrző pontoknál 'Non-stop'-ot, járműtelepeknél 'Javításra menj' parancsot ad a célponthoz. 'Menetrend megosztása' esetén a jármű megosztja az utasításait a kiválasztott járművel. Ha járműtelep szerepel a menetrendben, kikapcsolja az automatikus javításokat STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Megmutatja az összes járművet, amik megosztják ezt az utasításlistát # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Menj át {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Megállás nélkül menj át {WAYPOINT} STR_ORDER_SERVICE_AT :Javításra menj STR_ORDER_SERVICE_NON_STOP_AT :Javításra megállás nélkül menj STR_ORDER_NEAREST_DEPOT :a legközelebbi STR_ORDER_NEAREST_HANGAR :a legközelebbi hangárba STR_ORDER_TRAIN_DEPOT :járműtelepre STR_ORDER_ROAD_VEHICLE_DEPOT :garázsba STR_ORDER_SHIP_DEPOT :dokkba STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Átalakít erre: {STRING}) STR_ORDER_REFIT_STOP_ORDER :(átalakít erre: {STRING}, és megáll) STR_ORDER_STOP_ORDER :(megáll) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Automata) STR_ORDER_FULL_LOAD :(Mindenből teljes berakodás) STR_ORDER_FULL_LOAD_ANY :(Bármiből teljes berakodás) STR_ORDER_NO_LOAD :(Nincs berakodás) STR_ORDER_UNLOAD :(Kirakodás és rakományfelvétel) STR_ORDER_UNLOAD_FULL_LOAD :(Kirakodás és mindenből teljes berakodás) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Kirakodás és bármiből teljes berakodás) STR_ORDER_UNLOAD_NO_LOAD :(Kirakodás és üresen indulás) STR_ORDER_TRANSFER :(Elszállítás és rakományfelvétel) STR_ORDER_TRANSFER_FULL_LOAD :(Elszállítás és mindenből teljes berakodás) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Elszállítás és bármiből teljes berakodás) STR_ORDER_TRANSFER_NO_LOAD :(Elszállítás és üresen indulás) STR_ORDER_NO_UNLOAD :(Ki nem rakodás és rakományfelvétel) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ki nem rakodás és mindenből teljes berakodás) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ki nem rakodás és bármiből teljes berakodás) STR_ORDER_NO_UNLOAD_NO_LOAD :(Nincs ki- és berakodás) STR_ORDER_AUTO_REFIT :(Átalakítás {STRING} szállítására) STR_ORDER_FULL_LOAD_REFIT :(Kirakodás, mindenből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_FULL_LOAD_ANY_REFIT :(Kirakodás, bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_UNLOAD_REFIT :(Kirakodás, rakományfelvétel és átalakítás {STRING} rakományra) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Ki nem rakodás, mindenből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Ki nem rakodás, bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_TRANSFER_REFIT :(Elszállítás, rakományfelvétel és átalakítás {STRING} rakományra) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Elszállítás, bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Elszállítás, mindenből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_NO_UNLOAD_REFIT :(Ki nem rakodás, rakományfelvétel és átalakítás {STRING} rakományra) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ki nem rakodás, mindenből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ki nem rakodás, bármiből teljes berakodás és átalakítás {STRING} rakományra) STR_ORDER_AUTO_REFIT_ANY :elérhető rakomány STR_ORDER_STOP_LOCATION_NEAR_END :[eleje] STR_ORDER_STOP_LOCATION_MIDDLE :[közép] STR_ORDER_STOP_LOCATION_FAR_END :[végén] STR_ORDER_OUT_OF_RANGE :{RED} (A következő állomás túl messze van) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Ugorj a(z) {COMMA}. utasításra STR_ORDER_CONDITIONAL_NUM :Ugorj a(z) {COMMA}. utasításra, ha {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Ugorj a(z) {COMMA}. utasításra, ha a '{STRING}' feltétel {STRING} STR_INVALID_ORDER :{RED} (Hibás utasítás) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} várakozási és menetidői STR_TIMETABLE_ORDER_VIEW :{BLACK}Utasításlista STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Átkapcsolás a menetrend utasítástáblájára STR_TIMETABLE_TOOLTIP :{BLACK}Menetrend - egy utasítás kijelöléshez kattints rá STR_TIMETABLE_NO_TRAVEL :Nincs menet STR_TIMETABLE_NOT_TIMETABLEABLE :Menet (automata; menetrend a következő kézi utasítás alapján) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Következő célpontig a menetidő időzítetlen STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Menet {2:VELOCITY} max. sebességgel (nincs menetrend) STR_TIMETABLE_TRAVEL_FOR :Menetidő: {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Menetidő: {STRING} {VELOCITY} max. sebességgel STR_TIMETABLE_STAY_FOR :állomásra és maradj ott {STRING}ig STR_TIMETABLE_AND_TRAVEL_FOR :és a menetidő: {STRING} STR_TIMETABLE_DAYS :{COMMA} nap STR_TIMETABLE_TICKS :{COMMA} tick STR_TIMETABLE_TOTAL_TIME :{BLACK}A menetrend teljesítési ideje: {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}A menetrend teljesítési ideje legalább: {STRING} (nincs minden időzítve) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ez a jármű jelenleg pontosan közlekedik STR_TIMETABLE_STATUS_LATE :{BLACK}Ez a jármű jelenleg {STRING} eltéréssel, késéssel közlekedik STR_TIMETABLE_STATUS_EARLY :{BLACK}Ez a jármű jelenleg {STRING} eltéréssel, korábban közlekedik STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}A menetrend még nincs megkezdve STR_TIMETABLE_STATUS_START_AT :{BLACK}A menetrend megkezdésének dátuma {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Indulás dátuma STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Menetrend kezdeti dátumának kiválasztása STR_TIMETABLE_CHANGE_TIME :{BLACK}Idő megváltoztatása STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}A kijelölt utasítás végrehajtási idejét változtatja meg STR_TIMETABLE_CLEAR_TIME :{BLACK}Idő törlése STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}A kijelölt menetrendi sorhoz tartozó végrehajtási idő törlése STR_TIMETABLE_CHANGE_SPEED :{BLACK}Sebességkorlátozás megváltoztatása STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Kijelölt utasítás sebességkorlátozásának megváltoztatása STR_TIMETABLE_CLEAR_SPEED :{BLACK}Sebességkorlátozás törlése STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Sebességkorlátozás törlése a kijelölt utasításból STR_TIMETABLE_RESET_LATENESS :{BLACK}Késés nullázása STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Késés-számláló nullázása, azaz a jármű pontos lesz STR_TIMETABLE_AUTOFILL :{BLACK}Automatikus kitöltés STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Menetrend automatikus kitöltése a következő út értékeivel (Ctrl+kattintással megtartja a várakozási időket) STR_TIMETABLE_EXPECTED :{BLACK}Várható STR_TIMETABLE_SCHEDULED :{BLACK}Tervezett STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Váltás a várható és a tervezett időpontok között STR_TIMETABLE_ARRIVAL_ABBREVIATION :É: STR_TIMETABLE_DEPARTURE_ABBREVIATION :I: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Dátum beállítása STR_DATE_SET_DATE :{BLACK}Dátum beállítása STR_DATE_SET_DATE_TOOLTIP :{BLACK}A kiválasztott dátum beállítása a menetrend kezdeti időpontjának STR_DATE_DAY_TOOLTIP :{BLACK}Válassz napot STR_DATE_MONTH_TOOLTIP :{BLACK}Válassz hónapot STR_DATE_YEAR_TOOLTIP :{BLACK}Válassz évet # AI debug window STR_AI_DEBUG :{WHITE}MI / Játékszkript nyomkövetés STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Szkript neve STR_AI_DEBUG_SETTINGS :{BLACK}Beállítások STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}A szkript beállításainak módosítása STR_AI_DEBUG_RELOAD :{BLACK}MI újratöltése STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}MI kilövése, szkript újratöltése, MI újraindítása STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Megállítás be/kikapcsolása, ha az AI naplóbejegyzés megegyezik a megállítási sorral STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Megállítás: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Megállítás STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Ha egy MI naplóbejegyzés megegyezik ezzel a sorral, a játék szünet módba kapcsol STR_AI_DEBUG_MATCH_CASE :{BLACK}Kis- és nagybetűk megkülönböztetése STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Kis- és nagybetűk megkülönböztetése az MI naplóbejegyzéseknek a megállítási sorral való összehasonlításánál STR_AI_DEBUG_CONTINUE :{BLACK}Folytatás STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Játék folytatása és MI visszakapcsolása STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}A MI kimeneti nyomonkövetésének megtekintése STR_AI_GAME_SCRIPT :{BLACK}Játékszkript STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Játékszkript napló ellenőrzése STR_ERROR_AI_NO_AI_FOUND :Nincs MI, amit be lehetne tölteni.{}A jelenlegi MI csak dísz és nem fog semmit csinálni.{}MI-k letöltéséhez használd a tartalomletöltő rendszert STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Az egyik futó szkript futása közben hiba történt. Kérjük jelezd ezt a szkript készítőjének az MI / Játékzkript nyomkövetés ablakról készített képernyőmentéssel STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Az MI / Játékszkript nyomkövetés ablak csak a szerver számára elérhető # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}MI / Játékszkript beállítások STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}A következő játékban betöltődő játékszkript STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}A következő játékban betöltődő MI-k STR_AI_CONFIG_HUMAN_PLAYER :Játékos STR_AI_CONFIG_RANDOM_AI :Véletlenszerűen választott MI STR_AI_CONFIG_NONE :(nincs) STR_AI_CONFIG_MOVE_UP :{BLACK}Mozgatás Fel STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Kiválasztott MI mozgatása felfelé a listában STR_AI_CONFIG_MOVE_DOWN :{BLACK}Mozgatás Le STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Kiválasztott MI mozgatása lefelé a listában STR_AI_CONFIG_GAMESCRIPT :{SILVER}Játékszkript STR_AI_CONFIG_AI :{SILVER}MI-k STR_AI_CONFIG_CHANGE :{BLACK}{STRING} kiválasztása STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :MI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Játékszkript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Másik szkript betöltése STR_AI_CONFIG_CONFIGURE :{BLACK}Beállítások STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}A szkript paramétereinek beállítása # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Elérhető {STRING} STR_AI_LIST_CAPTION_AI :MI-k STR_AI_LIST_CAPTION_GAMESCRIPT :Játékszkriptek STR_AI_LIST_TOOLTIP :{BLACK}Kattints ide a szkript kiválasztásához STR_AI_LIST_AUTHOR :{LTBLUE}Készítő: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Verzió: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Elfogad STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}A kijelölt szkript kiválasztása STR_AI_LIST_CANCEL :{BLACK}Mégsem STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ne változtassa a szkriptet # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Paraméterek STR_AI_SETTINGS_CAPTION_AI :MI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Játékszkript STR_AI_SETTINGS_CLOSE :{BLACK}Bezárás STR_AI_SETTINGS_RESET :{BLACK}Visszaállítás STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Az előző MI indításától eltelt napok száma ezen MI indításáig (megközelítőleg): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} readme-je STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}A(z) {STRING} {STRING} változásainak listája STR_TEXTFILE_LICENCE_CAPTION :{WHITE}A(z) {STRING} {STRING} licence STR_TEXTFILE_VIEW_README :{BLACK}Readme megtekintése STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Változások listája STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenc # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}{CURRENCY_LONG} KIADÁS STR_INCOME_FLOAT_COST :{RED}{CURRENCY_LONG} kiadás STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}{CURRENCY_LONG} BEVÉTEL STR_INCOME_FLOAT_INCOME :{GREEN}{CURRENCY_LONG} bevétel STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Eleszállít: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Elszállít: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Becsült ár: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Becsült bevétel: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}A mentés még tart,{}kérlek várd meg a végét! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatikus mentés sikertelen STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nem olvasható a meghajtó STR_ERROR_GAME_SAVE_FAILED :{WHITE}A mentés nem sikerült{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nem sikerült törölni a fájlt STR_ERROR_GAME_LOAD_FAILED :{WHITE}A betöltés nem sikerült{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Belső hiba: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Hibás játékállás-mentés - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A játékállást újabb verzió mentette el STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :A fájl nem olvasható STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :A fájl nem írható STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Adat integritás hiba STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}A játék olyan verzióban lett elmentve, ami nem támogatja a villamosokat. Az összes villamos el lett távolítva # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}A térkép generálása meghiúsult...{}... nincs városépítésre alkalmas hely STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... nincs település ezen a pályán STR_ERROR_PNGMAP :{WHITE}Nem tudom a térképet betölteni a PNG-ből... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fájl nem található STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... a képtípus nem konvertálható. 8 vagy 24-bites PNG kép szükséges STR_ERROR_PNGMAP_MISC :{WHITE}... valami félresikeredett (talán sérült a fájl) STR_ERROR_BMPMAP :{WHITE}Nem sikerült a térkép betöltése a BMP-ből... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nem sikerült a képtípust konvertálni STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... túl nagy a kép STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Átméretezési figyelmeztetés STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}A forrás térkép túlságosan nagy mértékű átméretezése nem javasolt. Folytatod mégis? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Csak egy elavult hang alapcsomagot találtam. Ha szeretnél hangokat, telepíts egy hang alapcsomagot a tartalomletöltő rendszeren keresztül # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Hatalmas képernyőkép STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A képernyőkép felbontása {COMMA} x {COMMA} pixel lesz. A méret miatt ez eltarthat egy ideig. Szeretnéd folytatni? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}A képernyő elmentve '{STRING}' néven STR_ERROR_SCREENSHOT_FAILED :{WHITE}A képmentés nem sikerült! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Üzenet STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING} üzenete # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Kilóg a térképről STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Túl közel van a térkép határához STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nincs elég pénzed - {CURRENCY_LONG} kellene STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Sima talaj szükséges STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Rossz irányba lejt a föld STR_ERROR_CAN_T_DO_THIS :{WHITE}Nem teheted ezt... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Előbb le kell rombolnod az épületet STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nem tisztíthatod meg ezt a területet... STR_ERROR_SITE_UNSUITABLE :{WHITE}... nem alkalmas rá a hely STR_ERROR_ALREADY_BUILT :{WHITE}... már van itt STR_ERROR_OWNED_BY :{WHITE}... {STRING} tulajdona STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... a terület más vállalaté STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... tájrendezési limit elérve STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... mezőtörlési limit elérve STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... a faültetési korlátozás elérve STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}A névnek egyedinek kell lennie STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}...{1:STRING} van az útban STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Szünet közben nem megengedett # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} önkormányzata nem engedélyezi STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} önkormányzata nem engedélyez új repülőteret a városban STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} önkormányzata a zajszintnormák miatt megtagadta a repülőtér építését STR_ERROR_BRIBE_FAILED :{WHITE}A megvesztegetési kísérletedet leleplezte egy helyi felügyelő # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Nem emelheted fel itt a földet... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Nem süllyesztheted le itt a földet... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Itt nem tudsz terepmagasságot változtatni... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Az ásás megsértené az alagutat STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Már tengerszinten van STR_ERROR_TOO_HIGH :{WHITE}Túl magas STR_ERROR_ALREADY_LEVELLED :{WHITE}... már sík # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nem változtathatod meg a vállalat nevét... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Nem változtathatod meg az elnök nevét... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}...{CURRENCY_LONG} a megengedett legnagyobb kölcsön. STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Nem kölcsönözhetsz több pénzt... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... nincs visszafizetendő kölcsönöd STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} kellene hozzá STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nem törleszthetsz a kölcsönből... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nem tudod a banktól kölcsönkapott pénzt továbbadni... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nem veheted meg a vállalatot... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nem építheted ide a székházadat... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nem vehetsz 25%-nyi részvényt ebből a vállalatból... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Nem adhatsz el 25%-nyi részvényt ebből a vállalatból... STR_ERROR_PROTECTED :{WHITE}Ez a vállalat egyelőre még nem rendelkezik részvényekkel... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nem lehet több települést építeni STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nem nevezheted át a várost... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Nem építhetsz ide várost... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Nem növelhető város... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... túl közel van a térkép határához STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... túl közel van egy másik településhez STR_ERROR_TOO_MANY_TOWNS :{WHITE}... túl sok a település STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nincs több hely a térképen STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}A település nem fog utakat építeni. Az útépítést a Haladó beállítások->Gazdaság->Városok menüben engedélyezheted STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Útkarbantartás folyamatban STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nem törölheted ezt a várost...{}Egy állomás vagy járműtelep hivatkozik a városra, vagy egy városi tulajdonú mező nem eltávolítható STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nincs megfelelő hely egy szobornak a város központjában # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... túl sok a gazdasági épület STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nem tudok gazdasági épületet generálni... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Nem építhető ide {STRING}... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nem építheted ide ezt a gazdasági épületet... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... túl közel egy másik gazdasági épülethez STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... előbb települést kell építened STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... városonként csak egy lehet STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... csak 1200-nál nagyobb lakosságszámú településeken építhető STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... csak esőerdőben építhető STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... csak sivatagban építhető STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... csak településen, meglévő házak helyére építhető STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... csak települések központjában építhető STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... csak alacsony terepen építhető STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... csak a térkép határaihoz közel építhető STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... erdő csak a hóhatár fölé ültethető STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... csak a hóhatár fölé építhető STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... csak a hóhatár alá építhető # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nem építhetsz ide vasútállomást... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nem építhetsz ide buszmegállót... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nem építhetsz ide teherautó-rakodóhelyet... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nem építhetsz ide villamos-utasvárót... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nem építhetsz ide tehervillamos-állomást... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Nem építhetsz ide kikötőt... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nem építhetsz ide repülőteret... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Több állomással/rakodóhellyel érintkezik STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... az állomás túl kiterjedt STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Túl sok az állomás/rakodóhely STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Túl sok vasútállomás-rész STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Túl sok buszmegálló STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Túl sok a teherautó-rakodóhely STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Túl közel van egy másik állomáshoz/rakodóhelyhez STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Túl közel van egy másik kikötőhöz STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Túl közel van egy másik repülőtérhez STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nem nevezheted át az állomást... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ez egy városi tulajdonú út STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... az út a másik irányba vezet STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... áthaladó megállóhelyeken nem lehet kanyar STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... áthaladó megállóhelyeken nem lehet elágazás # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nem lehet eltávolítani az állomás részét... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Előbb le kell rombolnod a vasútállomást STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nem távolíthatod el ezt a buszmegállót... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nem távolíthatod el ezt a teherautó-rakodóhelyet... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nem lehet a villamos-utasvárót eltávolítani... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nem lehet a tehervillamos-állomást eltávolítani STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Előbb el kell távolítanod a megállóhelyet STR_ERROR_THERE_IS_NO_STATION :{WHITE}... nincs itt állomás STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Előbb le kell rombolnod a vasútállomást STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Előbb le kell rombolnod a buszmegállót STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Előbb le kell rombolnod a teherautó-rakodóhelyet STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Előbb le kell rombolni a villamos-utasvárót STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Előbb le kell rombolni a tehervillamos-állomást STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Előbb le kell rombolnod a kikötőt STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Előbb le kell rombolnod a repülőteret # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Több létező ellenőrző ponttal szomszédos STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Túl közel van egy másik ellenőrző ponthoz STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Ide nem lehet vonat ellenőrző pontot építeni... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Nem rakhatsz ide bóját... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nem lehet megváltoztatni az ellenőrző pont nevét... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nem lehet eltávolítani az ellenőrző pontot... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Előbb le kell rombolnod az ellenőrző pontot STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bója van az útban STR_ERROR_BUOY_IS_IN_USE :{WHITE}... a bóját más vállalat használja! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nem építhetsz ide járműtelepet... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Nem építhetsz ide garázst... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Ide nem lehet remízt építeni... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nem építhetsz ide dokkot... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nem nevezheted át a járműtelepet... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... fűtőhűzban kellene állnia ehhez STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... garázsban kellene állnia ehhez STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... dokkban kellene állnia ehhez STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... hangárban kellene állnia ehhez STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Csak a járműtelepen álló vonatokat lehet megváltoztatni STR_ERROR_TRAIN_TOO_LONG :{WHITE}Túl hosszú a vonat STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}A járművet nem lehet megfordítani... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... több részből álló járművet tartalmaz STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Nem kompatibilis pályatípusok STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Nem mozgathatod a járművet... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}A mozdony első felének mindig elől kell lennie STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Nem találok utat a helyi járműtelepre STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nem találom a helyi garázst STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Rossz járműteleptípus # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} túl hosszú a csere után STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nincsenek automatikus járműfelújítási szabályok alkalmazva STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(pénzlimit) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nem lehetséges vágányösszetétel STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Először el kell távolítani a jelzőket STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nincs megfelelő vasúti pálya STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Előbb le kell rombolnod a vasúti pályát STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Az út egyirányú vagy blokkolt STR_ERROR_CROSSING_DISALLOWED :{WHITE}Ehhez a síntipushoz nem megengedett vasúti átjárók építése STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Nem helyezhetsz ide jelzőt... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Nem építhetsz ide vasúti pályát... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nem szedheted fel innen a vasúti pályát... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Innen nem távolíthatod el a jelzőt... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Itt nem lehet konvertálni a jelzőket... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... nincs itt vasúti pálya STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... nincs itt jelző STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Nem lehet itt vasúti pálya típust átalakítani... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Előbb le kell rombolnod az utat STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... egyirányú utaknak nem lehetnek kereszteződéseik... STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Ide nem lehet utat építeni... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Ide nem lehet villamospályát építeni... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nem rombolhatod le innen az utat... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Innen nem lehet villamospályát eltávolítani... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... nincs itt út STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... nincs itt villamospálya # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Ide nem lehet csatornát építeni... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ide nem lehet zsilipet építeni... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ide nem lehet folyót elhelyezni... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... csak vízen építhető STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nem építhető vízen STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nem építhető nyílt tengerre STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nem építhető csatornára STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nem építhető folyóra STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}A csatornát előbb le kell rombolni STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ide nem lehet csatornahidat építeni... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... már van itt fa STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... rossz tereptípus a fafajtának STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Ide nem lehet fát ültetni... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Ide nem lehet hidat építeni... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Előbb le kell rombolnod a hidat STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nem kezdődhet és végződhet ugyanott STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Hídfők nem egy szinten vannak STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}A híd túl alacsony a terepre STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}A kezdetének és a végének egy vonalban kell lennie STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... a híd mindkét végének szárazföldön kell lennie STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... a híd túl hosszú STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}A híd a térképen túl végződne # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nem áshatsz ide alagutat... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Nem alkalmas a hely alagút bejáratának STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Előbb le kell rombolnod az alagutat STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Másik alagút van az útban STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Az alagút vége a pályán kívülre esik STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nem lehet kiásni a földet az alagút túloldalán STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... alagút túl hosszú # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... túl sok az objektum STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Nem építhető objektum... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objektum van az útban STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... vállalat székháza van az útban STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Nem veheted meg ezt a földterületet... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... már a tiéd! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Csoport létrehozás sikertelen... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Csoport törlése sikertelen... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Csoport átnevezése sikertelen... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Csoport járműveinek törlése sikertelen... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Jármű hozzáadása a csoporthoz sikertelen... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Megosztott jármű csoporthoz való hozzáadása sikertelen... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Vonat van az útban STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Közúti jármű van az útban STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Hajó van az útban STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Repülőgép van az útban STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Nem alakíthatod át a vonatot... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nem lehet átalakítani a teherautót... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nem alakíthatod át a hajót... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nem alakíthatod át a repülőgépet... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Nem nevezheted át a vonatot... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nem nevezheted át a közúti járművet... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nem nevezheted át a hajót... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nem nevezheted át a repülőgépet... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Nem indíthatod el vagy állíthatod meg a vonatot... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nem indíthatod el vagy állíthatod meg a közúti járművet... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nem indíthatod el vagy állíthatod meg a hajót... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nem indíthatod el vagy állíthatod meg a repülőgépet... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nem küldheted a vonatot a járműtelepre... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nem küldheted a járművet a garázsba... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nem küldheted a hajót a dokkba... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nem küldheted a repülőgépet a hangárba... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Nem veheted meg a vasúti járművet... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Nem veheted meg a közúti járművet... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Nem veheted meg a hajót... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Nem veheted meg a repülőgépet... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Nem változtathatod meg a márkanevet... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nem változtathatod meg a márkanevet... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Nem változtathatod meg a márkanevet... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Nem változtathatod meg a márkanevet... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Nem adhatod el a vasúti járművet... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nem adhatod el a közúti járművet... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Nem adhatod el a hajót... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Nem adhatod el a repülőgépet... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}A jármű nem elérhető STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}A jármű nem elérhető STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}A hajó nem elérhető STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}A repülő nem elérhető STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Túl sok jármű van a játékban STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nem változtathatod meg a javítási időközt... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... jármű megsemmisült STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Egyáltalán nincsenek elérhető járművek STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}NewGRF konfigurációd megváltoztatása STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Még nincsenek elérhető járművek STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Indíts új játékot {DATE_SHORT} után, vagy használj olyan NewGRF-et, ami tartalmaz megfelelően korai járműveket! # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nem haladhatja meg a vonat a megállj jelzést... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nem fordíthatod meg a vonatot... STR_ERROR_TRAIN_START_NO_POWER :Nincs vontatási energia STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}A közúti jármű nem tud megfordulni... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}... a levegőben van # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Nincs több hely új utasításnak STR_ERROR_TOO_MANY_ORDERS :{WHITE}Túl sok az utasítás STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Nem adhatsz meg új célpontot... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Nem törölheted ezt a célpontot... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nem módosíthatod ezt a célpontot... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Utasítás mozgatása nem lehetséges... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nem lehet átugrani a jelenlegi utasítást... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Nem lehet a kiválasztott utasításra ugrani... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... a jármű nem tud az összes állomásra eljutni STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... a jármű nem tud a megadott állomásra eljutni STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... egy jármű, amivel meg van osztva ez az utasítás, nem tud a megadott állomásra eljutni STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nem lehet megosztani a menetrendet... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nem lehet befejezni a menetrend megosztását... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Nem lehet másolni a menetrendet... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... túl távol van az előző céltól STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... a repülőgépnek kicsi a hatótávolsága # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}A jármű nem időzíthető STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}A járművek csak az állomáson várakozhatnak STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ez a jármű nem áll meg ezen az állomáson # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... túl sok a felirat STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Nem rakhatsz ide feliratot... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Nem változtathatod meg a feliratot... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}A felirat nem törölhető... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe alapokon nyugvó szimulációs játék # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Az eredeti Transport Tycoon Deluxe DOS verziójának grafikája. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Az eredeti Transport Tycoon Deluxe DOS (német) verziójának grafikája. STR_BASEGRAPHICS_WIN_DESCRIPTION :Az eredeti Transport Tycoon Deluxe Windows verziójának grafikája. STR_BASESOUNDS_DOS_DESCRIPTION :Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai. STR_BASESOUNDS_WIN_DESCRIPTION :Az eredeti Transport Tycoon Deluxe Windows verziójának hangjai. STR_BASESOUNDS_NONE_DESCRIPTION :Hang alapcsomag hangok nélkül. STR_BASEMUSIC_WIN_DESCRIPTION :Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje. STR_BASEMUSIC_NONE_DESCRIPTION :Zenei alapcsomag zene nélkül. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Magas irodaház STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Irodaház STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Kis bérház STR_TOWN_BUILDING_NAME_CHURCH_1 :Templom STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Nagy irodaház STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Városi házak STR_TOWN_BUILDING_NAME_HOTEL_1 :Szálloda STR_TOWN_BUILDING_NAME_STATUE_1 :Szobor STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Szökőkút STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Irodaház STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Boltok és irodák STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modern irodaház STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Közraktár STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Irodaház STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Régi házak STR_TOWN_BUILDING_NAME_COTTAGES_1 :Vidéki házak STR_TOWN_BUILDING_NAME_HOUSES_1 :Házak STR_TOWN_BUILDING_NAME_FLATS_1 :Bérház STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Magas irodaház STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Boltok és irodák STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Boltok és irodák STR_TOWN_BUILDING_NAME_THEATER_1 :Színház STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Irodák STR_TOWN_BUILDING_NAME_HOUSES_2 :Házak STR_TOWN_BUILDING_NAME_CINEMA_1 :Mozi STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Bevásárlóközpont STR_TOWN_BUILDING_NAME_IGLOO_1 :Jégkunyhó STR_TOWN_BUILDING_NAME_TEPEES_1 :Indiánsátor STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Teáskanna-ház STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Malacpersely ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Szénbánya STR_INDUSTRY_NAME_COAL_MINE.t :szénbányát STR_INDUSTRY_NAME_POWER_STATION :Erőmű STR_INDUSTRY_NAME_POWER_STATION.t :erőművet STR_INDUSTRY_NAME_SAWMILL :Fűrésztelep STR_INDUSTRY_NAME_SAWMILL.t :fűrésztelepet STR_INDUSTRY_NAME_FOREST :Erdő STR_INDUSTRY_NAME_FOREST.t :erdőt STR_INDUSTRY_NAME_OIL_REFINERY :Olajfinomító STR_INDUSTRY_NAME_OIL_REFINERY.t :olajfinomítót STR_INDUSTRY_NAME_OIL_RIG :Olajfúró torony STR_INDUSTRY_NAME_OIL_RIG.t :olajfúró tornyot STR_INDUSTRY_NAME_FACTORY :Gyár STR_INDUSTRY_NAME_FACTORY.t :gyárat STR_INDUSTRY_NAME_PRINTING_WORKS :Nyomda STR_INDUSTRY_NAME_PRINTING_WORKS.t :nyomdát STR_INDUSTRY_NAME_STEEL_MILL :Acélöntő STR_INDUSTRY_NAME_STEEL_MILL.t :acélöntőt STR_INDUSTRY_NAME_FARM :Farm STR_INDUSTRY_NAME_FARM.t :farmot STR_INDUSTRY_NAME_COPPER_ORE_MINE :Rézércbánya STR_INDUSTRY_NAME_COPPER_ORE_MINE.t :rézércbányát STR_INDUSTRY_NAME_OIL_WELLS :Olajkút STR_INDUSTRY_NAME_OIL_WELLS.t :olajkutat STR_INDUSTRY_NAME_BANK :Bank STR_INDUSTRY_NAME_BANK.t :bankot STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Konzervgyár STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.t :konzervgyárat STR_INDUSTRY_NAME_PAPER_MILL :Papírgyár STR_INDUSTRY_NAME_PAPER_MILL.t :papírgyárat STR_INDUSTRY_NAME_GOLD_MINE :Aranybánya STR_INDUSTRY_NAME_GOLD_MINE.t :aranybányát STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bank STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.t :bankot STR_INDUSTRY_NAME_DIAMOND_MINE :Gyémántbánya STR_INDUSTRY_NAME_DIAMOND_MINE.t :gyémántbányát STR_INDUSTRY_NAME_IRON_ORE_MINE :Vasércbánya STR_INDUSTRY_NAME_IRON_ORE_MINE.t :vasércbányát STR_INDUSTRY_NAME_FRUIT_PLANTATION :Gyümölcsültetvény STR_INDUSTRY_NAME_FRUIT_PLANTATION.t :gyümölcsültetvényt STR_INDUSTRY_NAME_RUBBER_PLANTATION :Gumifa ültetvény STR_INDUSTRY_NAME_RUBBER_PLANTATION.t :gumiültetvényt STR_INDUSTRY_NAME_WATER_SUPPLY :Vízforrás STR_INDUSTRY_NAME_WATER_SUPPLY.t :vízforrást STR_INDUSTRY_NAME_WATER_TOWER :Víztorony STR_INDUSTRY_NAME_WATER_TOWER.t :víztornyot STR_INDUSTRY_NAME_FACTORY_2 :Gyár STR_INDUSTRY_NAME_FACTORY_2.t :gyárat STR_INDUSTRY_NAME_FARM_2 :Farm STR_INDUSTRY_NAME_FARM_2.t :farmot STR_INDUSTRY_NAME_LUMBER_MILL :Favágó STR_INDUSTRY_NAME_LUMBER_MILL.t :favágót STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Vattacukor-erdő STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.t :vattacukor-erdőt STR_INDUSTRY_NAME_CANDY_FACTORY :Cukorkagyár STR_INDUSTRY_NAME_CANDY_FACTORY.t :cukorkagyárat STR_INDUSTRY_NAME_BATTERY_FARM :Elemfarm STR_INDUSTRY_NAME_BATTERY_FARM.t :elemfarmot STR_INDUSTRY_NAME_COLA_WELLS :Kólakút STR_INDUSTRY_NAME_COLA_WELLS.t :kólakutat STR_INDUSTRY_NAME_TOY_SHOP :Játékbolt STR_INDUSTRY_NAME_TOY_SHOP.t :játékboltot STR_INDUSTRY_NAME_TOY_FACTORY :Játékgyár STR_INDUSTRY_NAME_TOY_FACTORY.t :játékgyárat STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Műanyagforrás STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.t :műanyagforrást STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Üdítőital-gyár STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.t :üdítőital-gyárat STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Buborékgenerátor STR_INDUSTRY_NAME_BUBBLE_GENERATOR.t :buborékgenerátort STR_INDUSTRY_NAME_TOFFEE_QUARRY :Tejkaramella fejtő STR_INDUSTRY_NAME_TOFFEE_QUARRY.t :tejkaramella fejtőt STR_INDUSTRY_NAME_SUGAR_MINE :Cukorbánya STR_INDUSTRY_NAME_SUGAR_MINE.t :cukorbányát ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Névtelen STR_SV_TRAIN_NAME :Vonat {COMMA} STR_SV_ROAD_VEHICLE_NAME :Közúti jármű {COMMA} STR_SV_SHIP_NAME :Hajó {COMMA} STR_SV_AIRCRAFT_NAME :Repülő {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Észak STR_SV_STNAME_SOUTH :{STRING} Dél STR_SV_STNAME_EAST :{STRING} Kelet STR_SV_STNAME_WEST :{STRING} Nyugat STR_SV_STNAME_CENTRAL :{STRING} Központ STR_SV_STNAME_TRANSFER :{STRING} Átszálló STR_SV_STNAME_HALT :{STRING} Megálló STR_SV_STNAME_VALLEY :{STRING} Völgy STR_SV_STNAME_HEIGHTS :{STRING} Hegy STR_SV_STNAME_WOODS :{STRING} Erdő STR_SV_STNAME_LAKESIDE :{STRING} Tópart STR_SV_STNAME_EXCHANGE :{STRING} Átrakó STR_SV_STNAME_AIRPORT :{STRING} Repülőtér STR_SV_STNAME_OILFIELD :{STRING} Olajmező STR_SV_STNAME_MINES :{STRING} Bányák STR_SV_STNAME_DOCKS :{STRING} Kikötő STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Külső STR_SV_STNAME_SIDINGS :{STRING} Rakodó STR_SV_STNAME_BRANCH :{STRING} Fogadó STR_SV_STNAME_UPPER :{STRING} Felső STR_SV_STNAME_LOWER :{STRING} Alsó STR_SV_STNAME_HELIPORT :{STRING} Helileszálló STR_SV_STNAME_FOREST :{STRING} Erdőség STR_SV_STNAME_FALLBACK :{STRING} {NUM}. sz. Állomás ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Gőz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Cammogó Csi-hu-hu STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :SemmiErő Csi-hu-hu STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :ErőGép Csi-hu-hu STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Cammogó Dízel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :SemmiErő Dízel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Gőz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Gőz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Gőz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Gőz) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Dízel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektromos) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Személyvagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Levélszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Szénszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Olajszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Állatszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Áruszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Gabonaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Faszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Vasércszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Acélszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Páncélozott vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Ételszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papírszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Rézércszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vízszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Gyümölcsszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Gumiszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Cukorszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Vattacukorszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Tejkaramella-szállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Buborékszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Kólaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Cukorkaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Játékszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Elemszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Szénsavasital-szállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Műanyagszállító vagon STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :ZummDeGyors Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Személyvagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Levélszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Szénszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olajszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Állatszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Áruszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Gabonaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Faszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Vasércszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Acélszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Páncélozott vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Ételszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papírszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Rézércszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vízszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Gyümölcsszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Gumiszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Cukorszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Vattacukorszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Tejkaramella-szállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Buborékszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Kólaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Cukorkaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Játékszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Elemszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Szénsavasital-szállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Műanyagszállító vagon STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviátán' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Küklopsz' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegazus' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Kiméra' (Elektromos) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :ZummDeGyors Rakéta STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Személyvagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Levélszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Szénszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olajszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Állatszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Áruszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Gabonaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Faszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Vasércszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Acélszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Páncélozott vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Ételszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papírszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Rézércszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vízszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Gyümölcsszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Gumiszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Cukorszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Vattacukorszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Tejkaramella-szállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Buborékszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Kólaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Cukorkaszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Játékszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Elemszállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Szénsavasital-szállító vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Műanyagszállító vagon STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS királyi busz STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford leopárd busz STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster busz STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII szuperbusz STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Cammogó MkI busz STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Cammogó MkII busz STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Cammogó MkIII busz STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh szénszállító autó STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl szénszállító STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW szénszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS levélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard levélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry levélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :ErőGép levélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :SemmiErő levélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :ZummDeGyors levélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe olajszállító STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster olajszállító STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry olajszállító STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott állatszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl állatszállító STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster állatszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh áruszállító STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead áruszállító STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss áruszállító STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford gabonaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas gabonaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss gabonaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe faszállító STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster faszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland faszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS vasércszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl vasércszállító STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy vasércszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh acélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl acélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling acélszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh páncélkocsi STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl páncélkocsi STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster páncélkocsi STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster ételszállító STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry ételszállító STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy ételszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl papírszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh papírszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS papírszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS rézércszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl rézércszállító STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss rézércszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl vízszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh vízszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS vízszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh gyümölcsszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl gyümölcsszállító STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling gyümölcsszállító STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh gumiszállító STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl gumiszállító STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT gumiszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :SemmiErő cukorszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :ErőGép cukorszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :ZummDeGyors cukorszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :SemmiErő kólaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :ErőGép kólaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :ZummDeGyors kólaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :SemmiErő vattacukor-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :ErőGép vattacukor-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :ZummDeGyors vattacukor-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :SemmiErő tejkaramella-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :ErőGép tejkaramella-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :ZummDeGyors tejkaramella-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :SemmiErő játékszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :ErőGép játékszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :ZummDeGyors játékszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :SemmiErő cukorkaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :ErőGép cukorkaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :ZummDeGyors cukorkaszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :SemmiErő elemszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :ErőGép elemszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :ZummDeGyors elemszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :SemmiErő szénsavasital-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :ErőGép szénsavasital-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :ZummDeGyors szénsavasital-sz. STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :SemmiErő műanyagszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :ErőGép műanyagszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :ZummDeGyors műanyagszállító STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :SemmiErő buborékszállító STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :ErőGép buborékszállító STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :ZummDeGyors buborékszállító STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS olajszállító hajó STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. olajszállító hajó STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS komp STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP komp STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 légpárnás hajó STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Zity-zöty komp STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :SzétRáz komp STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate teherhajó STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell teherhajó STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :ErőGép teherhajó STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :SemmiErő teherhajó STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dárda STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxis STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Légitaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Légitaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Légitaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Légitaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :Légitaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hiperdárda 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Cammogó 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Cammogó 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :BummSzáguld X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :LégiHáz M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :CsíkHúzó STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Helikopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helikopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :SemmiErő Helikopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Bója STR_FORMAT_BUOY_NAME.ba :{TOWN} Bóján STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} {COMMA}. sz. Bója STR_FORMAT_BUOY_NAME_SERIAL.ba :{TOWN} {COMMA}. sz. Bóján STR_FORMAT_COMPANY_NUM :({COMMA}. vállalat) STR_FORMAT_GROUP_NAME :{COMMA} csoport STR_FORMAT_INDUSTRY_NAME :{TOWN}i {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} Ellenőrző pont STR_FORMAT_WAYPOINT_NAME.ba :{TOWN} Ellenőrző ponton STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} {COMMA}. sz. Ellenőrző pont STR_FORMAT_WAYPOINT_NAME_SERIAL.ba :{TOWN} {COMMA}. sz. Ellenőrző ponton STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Járműtelep STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} {COMMA}. sz. Vasúti járműtelep STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Garázs STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} {COMMA}. sz. Garázs STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Dokk STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} {COMMA}. sz. Dokk STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangár STR_UNKNOWN_STATION :ismeretlen állomás STR_DEFAULT_SIGN_NAME :Felirat STR_COMPANY_SOMEONE :valaki STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Megfigyelő, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/czech.txt0000644000000000000000000151454212246102561015251 0ustar rootroot##name Czech ##ownname Čeština ##isocode cs_CZ ##plural 10 ##textdir ltr ##digitsep {NBSP} ##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0405 ##grflangid 0x15 ##gender m f n map mnp fp np ##case nom gen dat acc voc loc ins big small # $Id: czech.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nedefinovaný řetězec) STR_JUST_NOTHING :Nic # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Cestující STR_CARGO_PLURAL_PASSENGERS.gen :Cestujících STR_CARGO_PLURAL_PASSENGERS.big :Cestující STR_CARGO_PLURAL_COAL :Uhlí STR_CARGO_PLURAL_COAL.big :Uhlí STR_CARGO_PLURAL_MAIL :Pošta STR_CARGO_PLURAL_MAIL.gen :Pošty STR_CARGO_PLURAL_MAIL.acc :Poštu STR_CARGO_PLURAL_MAIL.big :Pošta STR_CARGO_PLURAL_OIL :Ropa STR_CARGO_PLURAL_OIL.gen :Ropy STR_CARGO_PLURAL_OIL.acc :Ropu STR_CARGO_PLURAL_OIL.big :Ropa STR_CARGO_PLURAL_LIVESTOCK :Dobytek STR_CARGO_PLURAL_LIVESTOCK.gen :Dobytka STR_CARGO_PLURAL_LIVESTOCK.big :Dobytek STR_CARGO_PLURAL_GOODS :Zboží STR_CARGO_PLURAL_GOODS.big :Zboží STR_CARGO_PLURAL_GRAIN :Zrní STR_CARGO_PLURAL_GRAIN.big :Zrní STR_CARGO_PLURAL_WOOD :Dřevo STR_CARGO_PLURAL_WOOD.gen :Dřeva STR_CARGO_PLURAL_WOOD.big :Dřevo STR_CARGO_PLURAL_IRON_ORE :Železná ruda STR_CARGO_PLURAL_IRON_ORE.gen :Železné rudy STR_CARGO_PLURAL_IRON_ORE.acc :Železnou rudu STR_CARGO_PLURAL_IRON_ORE.big :Železná ruda STR_CARGO_PLURAL_STEEL :Ocel STR_CARGO_PLURAL_STEEL.gen :Oceli STR_CARGO_PLURAL_STEEL.big :Ocel STR_CARGO_PLURAL_VALUABLES :Cennosti STR_CARGO_PLURAL_VALUABLES.gen :Cenností STR_CARGO_PLURAL_VALUABLES.big :Cennosti STR_CARGO_PLURAL_COPPER_ORE :Měděná ruda STR_CARGO_PLURAL_COPPER_ORE.gen :Měděné rudy STR_CARGO_PLURAL_COPPER_ORE.acc :Měděnou rudu STR_CARGO_PLURAL_COPPER_ORE.big :Měděná ruda STR_CARGO_PLURAL_MAIZE :Kukuřice STR_CARGO_PLURAL_MAIZE.acc :Kukuřici STR_CARGO_PLURAL_MAIZE.big :Kukuřice STR_CARGO_PLURAL_FRUIT :Ovoce STR_CARGO_PLURAL_FRUIT.big :Ovoce STR_CARGO_PLURAL_DIAMONDS :Diamanty STR_CARGO_PLURAL_DIAMONDS.gen :Diamantů STR_CARGO_PLURAL_DIAMONDS.big :Diamanty STR_CARGO_PLURAL_FOOD :Jídlo STR_CARGO_PLURAL_FOOD.gen :Jídla STR_CARGO_PLURAL_FOOD.big :Jídlo STR_CARGO_PLURAL_PAPER :Papír STR_CARGO_PLURAL_PAPER.gen :Papíru STR_CARGO_PLURAL_PAPER.big :Papír STR_CARGO_PLURAL_GOLD :zlato STR_CARGO_PLURAL_GOLD.gen :zlata STR_CARGO_PLURAL_GOLD.big :Zlato STR_CARGO_PLURAL_WATER :voda STR_CARGO_PLURAL_WATER.gen :vody STR_CARGO_PLURAL_WATER.acc :vodu STR_CARGO_PLURAL_WATER.big :Voda STR_CARGO_PLURAL_WHEAT :pšenice STR_CARGO_PLURAL_WHEAT.acc :pšenici STR_CARGO_PLURAL_WHEAT.big :Pšenice STR_CARGO_PLURAL_RUBBER :kaučuk STR_CARGO_PLURAL_RUBBER.gen :kaučuku STR_CARGO_PLURAL_RUBBER.big :Kaučuk STR_CARGO_PLURAL_SUGAR :cukr STR_CARGO_PLURAL_SUGAR.gen :cukru STR_CARGO_PLURAL_SUGAR.big :Cukr STR_CARGO_PLURAL_TOYS :hračky STR_CARGO_PLURAL_TOYS.gen :hraček STR_CARGO_PLURAL_TOYS.big :Hračky STR_CARGO_PLURAL_CANDY :bonbony STR_CARGO_PLURAL_CANDY.gen :bonbonů STR_CARGO_PLURAL_CANDY.big :Bonbony STR_CARGO_PLURAL_COLA :kola STR_CARGO_PLURAL_COLA.gen :koly STR_CARGO_PLURAL_COLA.acc :kolu STR_CARGO_PLURAL_COLA.big :Kola STR_CARGO_PLURAL_COTTON_CANDY :cukrová vata STR_CARGO_PLURAL_COTTON_CANDY.gen :cukrové vaty STR_CARGO_PLURAL_COTTON_CANDY.acc :cukrovou vatu STR_CARGO_PLURAL_COTTON_CANDY.big :Cukrová vata STR_CARGO_PLURAL_BUBBLES :bubliny STR_CARGO_PLURAL_BUBBLES.gen :bublin STR_CARGO_PLURAL_BUBBLES.big :Bubliny STR_CARGO_PLURAL_TOFFEE :karamel STR_CARGO_PLURAL_TOFFEE.gen :karamelu STR_CARGO_PLURAL_TOFFEE.big :Karamel STR_CARGO_PLURAL_BATTERIES :baterie STR_CARGO_PLURAL_BATTERIES.gen :baterií STR_CARGO_PLURAL_BATTERIES.big :Baterie STR_CARGO_PLURAL_PLASTIC :plast STR_CARGO_PLURAL_PLASTIC.gen :plastu STR_CARGO_PLURAL_PLASTIC.big :Plast STR_CARGO_PLURAL_FIZZY_DRINKS :limonáda STR_CARGO_PLURAL_FIZZY_DRINKS.gen :limonád STR_CARGO_PLURAL_FIZZY_DRINKS.acc :limonádu STR_CARGO_PLURAL_FIZZY_DRINKS.big :Limonáda # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :cestujících STR_CARGO_SINGULAR_PASSENGER.acc :cestující STR_CARGO_SINGULAR_PASSENGER.big :Cestující STR_CARGO_SINGULAR_COAL :uhlí STR_CARGO_SINGULAR_MAIL :pošty STR_CARGO_SINGULAR_OIL :ropy STR_CARGO_SINGULAR_LIVESTOCK :dobytka STR_CARGO_SINGULAR_GOODS :zboží STR_CARGO_SINGULAR_GRAIN :zrní STR_CARGO_SINGULAR_WOOD :dřeva STR_CARGO_SINGULAR_IRON_ORE :železné rudy STR_CARGO_SINGULAR_STEEL :oceli STR_CARGO_SINGULAR_VALUABLES :cenin STR_CARGO_SINGULAR_COPPER_ORE :měděné rudy STR_CARGO_SINGULAR_MAIZE :kukuřice STR_CARGO_SINGULAR_FRUIT :ovoce STR_CARGO_SINGULAR_DIAMOND :diamantů STR_CARGO_SINGULAR_FOOD :jídla STR_CARGO_SINGULAR_PAPER :papíru STR_CARGO_SINGULAR_GOLD :zlata STR_CARGO_SINGULAR_WATER :vody STR_CARGO_SINGULAR_WHEAT :pšenice STR_CARGO_SINGULAR_RUBBER :kaučuku STR_CARGO_SINGULAR_SUGAR :cukru STR_CARGO_SINGULAR_TOY :hraček STR_CARGO_SINGULAR_CANDY :bonbonů STR_CARGO_SINGULAR_COLA :koly STR_CARGO_SINGULAR_COTTON_CANDY :cukrové vaty STR_CARGO_SINGULAR_BUBBLE :bublin STR_CARGO_SINGULAR_TOFFEE :karamelu STR_CARGO_SINGULAR_BATTERY :baterií STR_CARGO_SINGULAR_PLASTIC :plastu STR_CARGO_SINGULAR_FIZZY_DRINK :limonád # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} cestující{P "" "" ch} STR_QUANTITY_COAL :{WEIGHT_LONG} uhlí STR_QUANTITY_MAIL :{COMMA} balík{P "" y ů} pošty STR_QUANTITY_OIL :{VOLUME_LONG} ropy STR_QUANTITY_LIVESTOCK :{COMMA} kus{P "" y ů} dobytka STR_QUANTITY_GOODS :{COMMA} krabic{P e e ""} zboží STR_QUANTITY_GRAIN :{WEIGHT_LONG} zrní STR_QUANTITY_WOOD :{WEIGHT_LONG} dřeva STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} železné rudy STR_QUANTITY_STEEL :{WEIGHT_LONG} oceli STR_QUANTITY_VALUABLES :{COMMA} balík{P "" y ů} cenin STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} měděné rudy STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukuřice STR_QUANTITY_FRUIT :{WEIGHT_LONG} ovoce STR_QUANTITY_DIAMONDS :{COMMA} pyt{P el le lů} diamantů STR_QUANTITY_FOOD :{WEIGHT_LONG} jídla STR_QUANTITY_PAPER :{WEIGHT_LONG} papíru STR_QUANTITY_GOLD :{COMMA} balík{P "" y ů} zlata STR_QUANTITY_WATER :{VOLUME_LONG} vody STR_QUANTITY_WHEAT :{WEIGHT_LONG} pšenice STR_QUANTITY_RUBBER :{VOLUME_LONG} kaučuku STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukru STR_QUANTITY_TOYS :{COMMA} hrač{P ka ky ek} STR_QUANTITY_SWEETS :{COMMA} pyt{P el le lů} bonbonů STR_QUANTITY_COLA :{VOLUME_LONG} koly STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} cukrové vaty STR_QUANTITY_BUBBLES :{COMMA} bublin{P a y ""} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} karamelu STR_QUANTITY_BATTERIES :{COMMA} bateri{P e e í} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastu STR_QUANTITY_FIZZY_DRINKS :{COMMA} limonád{P a y ""} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}CE STR_ABBREV_COAL :{TINY_FONT}UH STR_ABBREV_MAIL :{TINY_FONT}PO STR_ABBREV_OIL :{TINY_FONT}RO STR_ABBREV_LIVESTOCK :{TINY_FONT}DO STR_ABBREV_GOODS :{TINY_FONT}ZB STR_ABBREV_GRAIN :{TINY_FONT}ZR STR_ABBREV_WOOD :{TINY_FONT}DŘ STR_ABBREV_IRON_ORE :{TINY_FONT}ŽR STR_ABBREV_STEEL :{TINY_FONT}OC STR_ABBREV_VALUABLES :{TINY_FONT}CE STR_ABBREV_COPPER_ORE :{TINY_FONT}MR STR_ABBREV_MAIZE :{TINY_FONT}KU STR_ABBREV_FRUIT :{TINY_FONT}OV STR_ABBREV_DIAMONDS :{TINY_FONT}DI STR_ABBREV_FOOD :{TINY_FONT}JÍ STR_ABBREV_PAPER :{TINY_FONT}PA STR_ABBREV_GOLD :{TINY_FONT}ZL STR_ABBREV_WATER :{TINY_FONT}VO STR_ABBREV_WHEAT :{TINY_FONT}PŠ STR_ABBREV_RUBBER :{TINY_FONT}KA STR_ABBREV_SUGAR :{TINY_FONT}CU STR_ABBREV_TOYS :{TINY_FONT}HR STR_ABBREV_SWEETS :{TINY_FONT}BO STR_ABBREV_COLA :{TINY_FONT}KO STR_ABBREV_CANDYFLOSS :{TINY_FONT}CV STR_ABBREV_BUBBLES :{TINY_FONT}BU STR_ABBREV_TOFFEE :{TINY_FONT}KA STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}LI STR_ABBREV_NONE :{TINY_FONT}NIC STR_ABBREV_ALL :{TINY_FONT}VŠE # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} cestující{P "" "" ch} STR_BAGS :{COMMA} balík{P "" y ů} STR_TONS :{COMMA} tun{P a y ""} STR_LITERS :{COMMA} litr{P "" y ů} STR_ITEMS :{COMMA} kus{P "" y ů} STR_CRATES :{COMMA} krabic{P e e ""} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tmavomodrá STR_COLOUR_PALE_GREEN :Světlezelená STR_COLOUR_PINK :Růžová STR_COLOUR_YELLOW :Žlutá STR_COLOUR_RED :Červená STR_COLOUR_LIGHT_BLUE :Bleděmodrá STR_COLOUR_GREEN :Zelená STR_COLOUR_DARK_GREEN :Tmavozelená STR_COLOUR_BLUE :Modrá STR_COLOUR_CREAM :Krémová STR_COLOUR_MAUVE :Lila STR_COLOUR_PURPLE :Purpurová STR_COLOUR_ORANGE :Oranžová STR_COLOUR_BROWN :Hnědá STR_COLOUR_GREY :Šedá STR_COLOUR_WHITE :Bílá # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mil/h STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA} hp STR_UNITS_POWER_METRIC :{COMMA} hp STR_UNITS_POWER_SI :{COMMA} kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tun{P a y ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P "" y ů} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} stop{P a y ""} STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtrovat řetězec: STR_LIST_FILTER_OSKTITLE :{BLACK}Vložte filtr STR_LIST_FILTER_TOOLTIP :{BLACK}Vložte klíčové slovo pro filtr seznamu STR_TOOLTIP_SORT_ORDER :{BLACK}Vyber způsob řazeni (sestupně/vzestupně) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vyber, podle čeho se má třídit STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vyber třídící podmínku STR_BUTTON_SORT_BY :{BLACK}Řadit podle STR_BUTTON_LOCATION :{BLACK}Umístění STR_BUTTON_RENAME :{BLACK}Přejmenovat STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zavřít okno STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulek okna - tahej pro posun okna STR_TOOLTIP_SHADE :{BLACK}Srolovat okno - zobrazit pouze jeho záhlaví STR_TOOLTIP_DEBUG :{BLACK}Zobrazit ladící informace pro grafiky STR_TOOLTIP_STICKY :{BLACK}Označit toto okno, aby se nedalo zavřít klávesou pro zavření všech oken STR_TOOLTIP_RESIZE :{BLACK}Velikost okna změníš uchopením a táhnutím zde STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Přepnout velké/malé okno STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvník - posouvá výpisem nahoru nebo dolů STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvník - posouvá výpisem doleva nebo doprava STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolice budov, atd. na čtverečku. Ctrl vybírá diagonální oblast. Shift zobrazí odhad ceny # Query window STR_BUTTON_DEFAULT :{BLACK}Původní STR_BUTTON_CANCEL :{BLACK}Zrušit STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :"+ěščřžýáíé=-\qwertyuiopú)asdfghjklů' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~1234567890_+|QWERTYUIOP/(}}ASDFGHJKL:! ZXCVBNM?:_ . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Délka: {NUM} STR_MEASURE_AREA :{BLACK}Oblast: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Délka: {NUM}{}Výškový rozdíl: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Oblast: {NUM} x {NUM}{}Výškový rozdíl: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Podle populace STR_SORT_BY_CAPTION_NAME :{BLACK}Podle jména STR_SORT_BY_CAPTION_DATE :{BLACK}Podle data # These are used in dropdowns STR_SORT_BY_NAME :jména STR_SORT_BY_PRODUCTION :produkce STR_SORT_BY_TYPE :typu STR_SORT_BY_TRANSPORTED :přepravy STR_SORT_BY_NUMBER :čísla STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku minulý rok STR_SORT_BY_PROFIT_THIS_YEAR :hrubého zisku za tento rok STR_SORT_BY_AGE :stáří STR_SORT_BY_RELIABILITY :spolehlivosti STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :celkové kapacity dle druhu nákladu STR_SORT_BY_MAX_SPEED :max. rychlosti STR_SORT_BY_MODEL :modelu STR_SORT_BY_VALUE :hodnoty STR_SORT_BY_LENGTH :délky STR_SORT_BY_LIFE_TIME :Zbývající životnost STR_SORT_BY_TIMETABLE_DELAY :zpoždění STR_SORT_BY_FACILITY :druhu stanice STR_SORT_BY_WAITING :množství čekajícího nákladu STR_SORT_BY_RATING_MAX :nejlepšího hodnocení přepravy STR_SORT_BY_RATING_MIN :nejhoršího hodnocení přepravy STR_SORT_BY_ENGINE_ID :ID vozu (klasické pořadí) STR_SORT_BY_COST :ceny STR_SORT_BY_POWER :výkonu STR_SORT_BY_TRACTIVE_EFFORT :Tah STR_SORT_BY_INTRO_DATE :data uvedení na trh STR_SORT_BY_RUNNING_COST :provozních nákladů STR_SORT_BY_POWER_VS_RUNNING_COST :výkonu/provozních nákladů STR_SORT_BY_CARGO_CAPACITY :přepravní kapacity STR_SORT_BY_RANGE :dosah # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Zrychlit běh hry STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Možnosti STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Uložit hru, opustit hru, ukončit STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Zobrazit mapu STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Zobrazit seznam měst STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Zobrazit nabídky dotací STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Zobrazit seznam stanic společnosti STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Zobrazit finanční informace o společnosti STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Zobrazit obecné informace o společnosti STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Zobrazit grafy STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Zobrazit tabulku společností STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financovat konstrukci nového průmyslu, nebo zobrazit všechen průmysl STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Zobrazit seznam vlaků společnosti. Ctrl+Klik přepíná seznam skupin/vlaků STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Zobrazit seznam silničních vozidel společnosti. Ctrl+Klik přepíná seznam skupin/vozidel STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Zobrazit seznam lodí společnosti. Ctrl+Klik přepíná seznam skupin/lodí STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Zobrazit seznam letadel společnosti. Ctrl+Klik přepíná seznam skupin/letadel STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Přiblížit pohled STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Oddálit pohled STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Budovat železnici STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Budovat silniční síť STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Budovat vodní cesty STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Stavět letiště STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Otevřít nástrojovou lištu na úpravu terénu, výsadbu stromů, atd. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Ukázat zvukové/hudební okno STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Ukázat poslední zprávu nebo článek, možnosti zpráv STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informace o území, konzole, debug AI, snímek obrazovky, O aplikaci OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Prohodit lišty # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Uložit mapu, otevřít mapu, opustit editor map, ukončit... STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor mapy STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Posunout startovní rok o rok zpět STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Posunout startovní rok o rok vpřed STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikni pro zadání počátečního roku STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Zobrazit mapu a seznam měst STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generování krajiny STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generování měst STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generování průmyslu STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Výstavba silniční sítě STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Vysadit stromy. Shift zobrazí odhad ceny STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Umístit popisek STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Umisťte objekt. Shift zobrazí odhad ceny ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Uložit mapu STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Otevřit mapu STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Uložit výškovou mapu STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Použít výškovou mapu STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Ukončit editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ukončit ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti hry STR_SETTINGS_MENU_CONFIG_SETTINGS :Pokročilé nastavení STR_SETTINGS_MENU_SCRIPT_SETTINGS :Nastavení AI / hry STR_SETTINGS_MENU_NEWGRF_SETTINGS :Nastavení grafik STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavení průhlednosti STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Zobrazení jmen měst STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Zobrazení jmen stanic STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Zobrazení jmen směrování STR_SETTINGS_MENU_SIGNS_DISPLAYED :Zobrazení popisků STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Zobrazovat popisky a jména protivníků STR_SETTINGS_MENU_FULL_ANIMATION :Plné animace STR_SETTINGS_MENU_FULL_DETAIL :Plné detaily STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Průhledné budovy STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Průhledné popisky ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Uložit hru STR_FILE_MENU_LOAD_GAME :Načíst hru STR_FILE_MENU_QUIT_GAME :Ukončit hru STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ukončit program ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa světa STR_MAP_MENU_EXTRA_VIEW_PORT :Další pohled STR_MAP_MENU_SIGN_LIST :Seznam popisků ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Seznam měst STR_TOWN_MENU_FOUND_TOWN :Založit město ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Dotace STR_SUBSIDIES_MENU_GOAL :Současné cíle ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf provozního zisku STR_GRAPH_MENU_INCOME_GRAPH :Graf příjmů STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf doručeného zboží STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf historie výkonu STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf hodnoty společnosti STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Graf přepravních sazeb ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabulka společností STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Podrobné hodnocení výkonu STR_GRAPH_MENU_HIGHSCORE :Nejlepší výsledky ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Seznam průmyslu STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Průmyslové řetězce STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Investovat do průmyslu ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Výstavba železnice STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Výstavba elektrifikované železnice STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Výstavba monorailu STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Výstavba maglevu ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Výstavba silnic STR_ROAD_MENU_TRAM_CONSTRUCTION :Výstavba tramvajové tratě ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Výstavba vodních cest ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Stavba letiště ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Úpravy krajiny STR_LANDSCAPING_MENU_PLANT_TREES :Vysadit stromy STR_LANDSCAPING_MENU_PLACE_SIGN :Umístit nápis ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Zvuk/Hudba ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Poslední zpráva nebo článek STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historie zpráv ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Informace o zemi STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Zobrazit nebo skrýt konzoli STR_ABOUT_MENU_AI_DEBUG :Ladění AI / herních skriptů STR_ABOUT_MENU_SCREENSHOT :Screenshot STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Screenshot v plném přiblížení STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Screenshot ve výchozím přiblížení STR_ABOUT_MENU_GIANT_SCREENSHOT :Screenshot celé mapy STR_ABOUT_MENU_ABOUT_OPENTTD :O 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Zarovnávání spritů STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Přepnout ohraničení STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Přepnout zbarvení špinavých bloků ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :led STR_MONTH_ABBREV_FEB :úno STR_MONTH_ABBREV_MAR :bře STR_MONTH_ABBREV_APR :dub STR_MONTH_ABBREV_MAY :kvě STR_MONTH_ABBREV_JUN :čer STR_MONTH_ABBREV_JUL :čnc STR_MONTH_ABBREV_AUG :srp STR_MONTH_ABBREV_SEP :zář STR_MONTH_ABBREV_OCT :říj STR_MONTH_ABBREV_NOV :lis STR_MONTH_ABBREV_DEC :pro STR_MONTH_JAN :Leden STR_MONTH_JAN.gen :ledna STR_MONTH_FEB :Únor STR_MONTH_FEB.gen :února STR_MONTH_MAR :Březen STR_MONTH_MAR.gen :března STR_MONTH_APR :Duben STR_MONTH_APR.gen :dubna STR_MONTH_MAY :Květen STR_MONTH_MAY.gen :května STR_MONTH_JUN :Červen STR_MONTH_JUN.gen :června STR_MONTH_JUL :Červenec STR_MONTH_JUL.gen :července STR_MONTH_AUG :Srpen STR_MONTH_AUG.gen :srpna STR_MONTH_SEP :Září STR_MONTH_SEP.gen :září STR_MONTH_OCT :Říjen STR_MONTH_OCT.gen :října STR_MONTH_NOV :Listopad STR_MONTH_NOV.gen :listopadu STR_MONTH_DEC :Prosinec STR_MONTH_DEC.gen :prosince ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Legenda STR_GRAPH_KEY_TOOLTIP :{BLACK}Zobrazit legendu ke grafům STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graf provozního zisku STR_GRAPH_INCOME_CAPTION :{WHITE}Graf příjmu STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Doručeno jednotek zboží STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Hodnocení společností (nejvyšší hodnocení je 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Hodnota společností STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Ceny za přepravu nákladu STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Doba přepravy ve dnech STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Platba za doručeni 10 jednotek (nebo 10 000 litru) nákladu do vzdálenosti 20 čtverecků STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Zobraz vše STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Vypni vše STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Zobraz všechny druhy nákladu na grafu přepravních sazeb STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Skryje všechny položky na grafu přepravních sazeb STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Zobrazit nebo skrýt graf pro určitý druh nákladu STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Zobrazit podrobné hodnocení výkonu # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Legenda ke grafům společností STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klepni zde pro přepnuti zobrazení společnosti na grafu # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tabulka pořadí společností STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Strojvůdce STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Manažer dopravy STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Koordinátor dopravy STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Vedoucí trasy STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Ředitel STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Výkonný ředitel STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Předseda STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Prezident STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnát # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Podrobné hodnocení výkonu STR_PERFORMANCE_DETAIL_KEY :{BLACK}Podrobně STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}{NBSP}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Zobraz detaily o této společnosti ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vozidla: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stanice: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. hrubý zisk: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. příjem: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. příjem: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Přepraveno: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Druhů nákladu: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Hotovost: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Dluh: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Celkem: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Počet dopravních prostředků, které vykázaly poslední rok zisk; zahrnuje silniční vozidla, vlaky, lodě a letadla STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Počet nedávno obsloužených stanic. Nádraží, autobusové zastávky, letiště a podobně se počítají zvlášť, i když patří k jediné stanici STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Minimální hrubý zisk (= s provoz. náklady) vozidla s nejnižším příjmem (staršího 2 let) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Čistý zisk (= bez provoz. nakladů) v nejslabším čtvrtletí za posledních 12 čtvrtletí STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Čistý zisk ve čtvrtletí s největším příjmem za posledních 12 čtvrtletí STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Počet doručených jednotek nákladu za poslední rok (4Q) STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Počet doručených druhu nákladu za poslední 3 měsíce (1Q) STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Současná hotovost společnosti STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Má společnost velký dluh? STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Celkový počet bodů z 1000 možných # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Vše STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Staré STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nové STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Volba 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Volba 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Hlasitost hudby STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Hlasitost efektů STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Skladba STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Název STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Náhodně STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Skočit na předchozí skladbu ve výběru STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Skočit na další skladbu ve výběru STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Zastavit přehrávání hudby STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Začit přehrávat hudbu STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Tahej posouvátka pro nastavení hlasitosti hudby a zvukových efektů STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Zvolit program 'všechny skladby' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Zvolit program 'staré skladby' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Zvolit program 'nové skladby' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Zvolit 'Ezy Street style music' program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Zvolit program 'Volba 1' (uživatelsky nastavený) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Zvolit program 'Volba 2' (uživatelsky nastavený) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zapnout/vypnout náhodné opakování skladeb STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Ukaž skladbu ve výběrovém okně STR_ERROR_NO_SONGS :{WHITE}Byl vybrán hudební set bez písní. Nebudou přehrány žádné písně # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Volba programu hudby STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index skladeb STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Vymazat STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vyprázdnit současný program (jen u Voleb 1 a 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Skladba se přidá do zvoleného programu (Volba 1 nebo 2) klepnutím na její název STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Hudební stopu odstraníš ze současného programu (pouze u vlastního) kliknutím na ni # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Nejlepší společnosti, které dosáhly {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabulka společností v roce {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Obchodník STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Manažer STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Továrník STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalista STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnát STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Velemagnát STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnát století STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} získal titul '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} z {COMPANY} získal titul '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Profil STR_SMALLMAP_TYPE_VEHICLES :Dopravní prostředky STR_SMALLMAP_TYPE_INDUSTRIES :Průmysl STR_SMALLMAP_TYPE_ROUTES :Tratě STR_SMALLMAP_TYPE_VEGETATION :Vegetace STR_SMALLMAP_TYPE_OWNERS :Vlastníci STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Zobrazit na mapě reliéf krajiny STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Zobrazit na mapě dopravní prostředky STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Zobrazit na mapě průmysl STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Zobrazit na mapě dopravní cesty STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Zobrazit na mapě vegetaci STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Zobrazit na mapě vlastníky pozemků STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Kliknutím na typ průmyslu přepnete jeho zobrazení. Ctrl+Klik vypne všechny typy kromě toho vybraného. Ctrl+Klik znovu pro zapnutí všech druhů průmyslu. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kliknutím na společnost přepnete zobrazení jejího majetku. Ctrl+Klik vypne všechny společnosti kromě té vybrané. Ctrl+Klik znovu zobrazí opět všechny společnosti. STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Silnice STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Železnice STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stanice/Letiště/Přístavy STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Budovy/Průmysl STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vozidla STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Vlaky STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Silniční vozidla STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Lodě STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Letadla STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Dopravní cesty STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Les STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Nádraží STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Nakládací rampa STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Autobusová zastávka STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Letiště/Heliport STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Přístavy STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Hrbolatá zem STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Travnatá zem STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Holá zem STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Pole STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Stromy STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Kameny STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Voda STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Žádný vlastník STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Města STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Továrny STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Poušť STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sníh STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Zobrazovat na mapě jména měst STR_SMALLMAP_CENTER :{BLACK}Vystředit malou mapu na tomto místě STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Vypnout všechny STR_SMALLMAP_ENABLE_ALL :{BLACK}Zapnout všechny STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Zobrazit výšku STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Nezobrazit na mapě žádný průmysl STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Zobrazit na mapě veškerý průmysl STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Zapnout zobrazení výškové mapy STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Skrýt všechen majetek společnosti na mapě STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Zobrazit všechen majetek společnosti na mapě # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Ukázat poslední zprávu nebo článek STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * * STR_STATUSBAR_AUTOSAVE :{RED}Automatické ukládání STR_STATUSBAR_SAVING_GAME :{RED}* * HRA SE UKLÁDÁ * * # News message history STR_MESSAGE_HISTORY :{WHITE}Historie zpráv STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Seznam předešlých zpráv STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Zpráva STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První vlak dorazil do {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První autobus přijel do {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První nákladní vozidlo přijelo do {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První tramvaj pro cestující přijela do {STATION} STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První nákladní tramvaj přijíždí do {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První loď přistála v {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Obyvatelé oslavují...{}První letadlo přistálo v {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Železniční neštěstí!{}Při srážce {COMMA} {P člověk lidé lidí} přiš{P el li lo} o život v plamenech STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Dopravní nehoda!{}Řidič zahynul v plamenech při srážce s vlakem STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Dopravní nehoda!{}{COMMA} {P člověk lidé lidí} zahynul{P "" i o} v plamenech při srážce s vlakem STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Pád letadla!{}{COMMA} {P člověk lidé lidí} zahynul{P "" i o} v plamenech v {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Letecká havárie!{}Kvůli vyčerpání paliva {COMMA} {P člověk lidé lidí} zemřel{P "" i o} v ohnivém pekle! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelin se zřítil do {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Silniční vozidlo bylo zničeno při srážce s UFO! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Výbuch ropné rafinerie u {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Za podezřelých okolností byla zničena továrna u {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}UFO přistálo poblíž {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Pokles terénu u uhelného dolu {TOWN} způsobil velké škody! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Záplavy!{}Po strašlivých záplavách je odhadem {COMMA} {P člověk lidé lidí} pohřešov{P án áni aných} nebo mrt{P ev ví vých}! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Dopravní společnost má problémy! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} bude prodána nebo vyhlásí bankrot, pokud se brzy nezvýší výkonnost! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Sloučení dopravních společností! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} byla prodána {STRING} za {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrot! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} byla zavřena veřiteli a podíly byly prodány! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nová společnost založena! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} začíná stavět poblíž {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} byla převzata {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Prezident) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Společnost {STRING} zaplatila výstavbu nového města {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nov{G ý á é í é é á} {STRING.small} se staví poblíž města {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nov{G ý á é í é é á} {STRING.small} se vysazuj{G 0 e e e í í í í} poblíž města {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ohlašuj{G 0 e e e í í í í} okamžité uzavření! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Zásobovací problémy způsobily uzavření {STRING.gen}! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Nedostatek stromů způsobil uzavření {STRING.gen}! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Evropská měnová unie{}{}Euro se v této zemi stalo jedinou měnou pro každodenní obchodní transakce! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Celosvětový hospodářský úpadek!{}{}Finanční experti se kvůli prudkému poklesu ekonomiky obávají nejhoršího! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Konec hospodářského úpadku!{}{}Posílení trhu zvýšilo u průmyslu důvěru! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} zvyšuj{G 0 e e e í í í í} produkci! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nové ložisko uhlí nalezeno {INDUSTRY.loc}!{}Zdvojnásobí se produkce! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nové zásoby ropy nalezeny {INDUSTRY.loc}!{}Zdvojnásobí se produkce! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Lepší metody pěstování {INDUSTRY.loc} zdvojnásobí produkci! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} zvyšuj{G 1 e e e í í í í} produkci {0:STRING.gen} o{NBSP}{2:COMMA}{NBSP}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Produkce {INDUSTRY.gen} poklesla o 50{NBSP}% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} j{G 0 e e e sou sou sou sou} zamořen{G 0 "" a o i y y a} škůdci!{}Produkce poklesla o 50{NBSP}% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} snižuj{G 1 e e e í í í í} produkci {0:STRING.gen} o{NBSP}{2:COMMA}{NBSP}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} čeká v depu STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} čeká v depu STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeká v depu STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeká v hangáru # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} má příliš málo příkazů STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} nemá žádné příkazy STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} má zdvojené příkazy STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} má v příkazech neplatnou stanici # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zastarává STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} silně zastarává STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} silně zastarává a nutně potřebuje nahradit STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nemůže najít cestu STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} se ztratil{G 0 "" a o i y y a} STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} - loňský zisk {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} se nemůže dostat do dalšího cíle, protože je mimo dosah STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stojí kvůli selhání příkazu na změnu nákladu STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Obnovení selhalo pro {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nov{G ý á é í é é á} {STRING} k dispozici! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G ý á é í é é á} {STRING} k dispozici! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} už dále nepřijímá {STRING.acc} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} už dále nepřijímá {STRING.acc} ani {STRING.acc} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} nyní přijímá {STRING.acc} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} nyní přijímá {STRING.acc} a {STRING.acc} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Nabídka dotace přepravy vypršela:{}{}Dotace dopravy {STRING.gen} z{NBSP}{STRING.gen} do {STRING.gen} nebude dále nabízena STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Ukončení dotování dopravy:{}{}Dotace pro {STRING} z{NBSP}{STRING.gen} do {STRING.gen} již nebude dále poskytována STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Nabídka dotace:{}{}Doprava {STRING.gen} z{NBSP}{STRING.gen} do {STRING.gen} bude jeden rok dotována místní správou! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Dotace přidělena společnosti {STRING}.{}{}Doprava {STRING.gen} z{NBSP}{STRING.gen} do {STRING.gen} bude po jeden rok vynášet 150{NBSP}% normální ceny STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Dotace přidělena společnosti {STRING}.{}{}Doprava {STRING.gen} z{NBSP}{STRING.gen} do {STRING.gen} bude po jeden rok vynášet dvojnásobek normální ceny! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Dotace přidělena společnosti {STRING}.{}{}Doprava {STRING.gen} z{NBSP}{STRING.gen} do {STRING.gen} bude po jeden rok vynášet trojnásobek normální ceny! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Dotace přidělena společnosti {STRING}.{}{}Doprava {STRING.gen} z{NBSP}{STRING.gen} do {STRING.gen} bude po jeden rok vynášet čtyřnásobek normální ceny! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN} zažívá dopravní chaos!{}{}Program přestavby ulic sponzorovaný {STRING} přináší motoristům 6 měsíců utrpení! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportní monopol! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Místní správa města {TOWN} podepsala dohodu s {STRING} na jeden rok exkluzivní dopravy! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohled {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Nastavit jako pohled STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit současné zorné pole jako pohled STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Přejít na pohled STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Nastavit pohled do zorného pole # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Možnosti hry STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Měna STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výběr jednotek měny ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Libra (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Dolar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japonský jen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Rakouský šilink (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgický frank (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Švýcarský frank (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Česká koruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Německá marka (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dánská koruna (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Španělská peseta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finská marka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Francouzský frank (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Řecká drachma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Maďarský forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandská koruna (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italská lira (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Holandský gulden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norská koruna (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polský zlotý (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumunský lei (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Ruský rubl (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovinský tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Švédská koruna (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turecká lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovenská koruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazilský real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estonská koruna (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litevský litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Jihokorejský won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Jihoafrický rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Vlastní... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Jednotka vzdálenosti STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Výběr jednotek vzdálenosti ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiální (míle) STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrické (kilometry) STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI (metry) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Silniční vozidla jezdí STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Výběr strany, na které jezdí silnični vozidla STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vlevo STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Vpravo STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Jména měst STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Výběr stylu jmen měst ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Anglická (původní) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francouzská STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Německá STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Anglická (další) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinskoamerická STR_GAME_OPTIONS_TOWN_NAME_SILLY :Anglická (legrační) STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Švédská STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holandská STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finská STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polská STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovenská STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norská STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Maďarská STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Rakouská STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumunská STR_GAME_OPTIONS_TOWN_NAME_CZECH :Česká STR_GAME_OPTIONS_TOWN_NAME_SWISS :Švýcarská STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dánská STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turecká STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italská STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalánská ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatické ukládání STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Volba intervalu mezi automatickým ukládáním hry STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Vypnuto STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Každý měsíc STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Každé 3 měsíce STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Každých 6 měsíců STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Každých 12 měsíců STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jazyk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Zvolit jazyk uživatelského rozhraní STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Na celou obrazovku STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Zaškrtnutím této volby poběží OpenTTD na celé obrazovce STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rozlišení obrazovky STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Zvolit rozlišení obrazovky STR_GAME_OPTIONS_RESOLUTION_OTHER :jiné STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formát screenshotů STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Zvolit formát screenshotů STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základní sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvol základní sadu grafiky STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} chybějící{P "" "" ch}/poškozen{P ý é ých} soubor{P "" y ů} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základní sadě grafiky STR_GAME_OPTIONS_BASE_SFX :{BLACK}Základní sada zvuků STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Zvol základní sadu zvuků STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základní sadě zvuků STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Základní hudební set STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vyberte jaký základní hudební set použít STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškozen{P ý é é} soubor{P "" y y} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základním hudebním setu STR_ERROR_FULLSCREEN_FAILED :{WHITE}Selhalo přepnutí na celou obrazovku # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Vlastní měna STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurz měny: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Snížit hodnotu vlastní měny oproti libře (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zvýšit hodnotu vlastní měny oproti libře (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Určit směnný kurz vlastní měny oproti libře (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Oddělovač: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Určit oddělovač v zápisu měny STR_CURRENCY_PREFIX :{LTBLUE}Předpona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Určit předponu pro vlastní měnu STR_CURRENCY_SUFFIX :{LTBLUE}Přípona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Určit příponu pro vlastní měnu STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Přechod k euru: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Přechod k euru: {ORANGE}nikdy STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Určit rok přechodu na euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Přejít na euro dříve STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Přejít na euro později STR_CURRENCY_PREVIEW :{LTBLUE}Náhled: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 liber (£) ve vlastní měně STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Změnit parametry vlastní měny STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maximální počet protivníků: {ORANGE}{COMMA} STR_NONE :žádný STR_FUNDING_ONLY :Pouze dotace STR_MINIMAL :Nejmenší STR_NUM_VERY_LOW :velmi nízké STR_NUM_LOW :nízké STR_NUM_NORMAL :střední STR_NUM_HIGH :vysoké STR_NUM_CUSTOM :vlastní STR_NUM_CUSTOM_NUMBER :Uživatelský ({NUM}) STR_VARIETY_NONE :žádná STR_VARIETY_VERY_LOW :velmi nízká STR_VARIETY_LOW :nízká STR_VARIETY_MEDIUM :střední STR_VARIETY_HIGH :vysoká STR_VARIETY_VERY_HIGH :velmi vysoká STR_AI_SPEED_VERY_SLOW :velmi nízká STR_AI_SPEED_SLOW :nízká STR_AI_SPEED_MEDIUM :střední STR_AI_SPEED_FAST :vysoká STR_AI_SPEED_VERY_FAST :velmi rychlá STR_SEA_LEVEL_VERY_LOW :velmi nízká STR_SEA_LEVEL_LOW :nízká STR_SEA_LEVEL_MEDIUM :střední STR_SEA_LEVEL_HIGH :vysoká STR_SEA_LEVEL_CUSTOM :Uživatelský STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Uživatelský ({NUM}%) STR_RIVERS_NONE :Žádné STR_RIVERS_FEW :Pár STR_RIVERS_MODERATE :Více STR_RIVERS_LOT :Mnoho STR_DISASTER_NONE :žádné STR_DISASTER_REDUCED :snížené STR_DISASTER_NORMAL :běžné STR_SUBSIDY_X1_5 :1,5x STR_SUBSIDY_X2 :2x STR_SUBSIDY_X3 :3x STR_SUBSIDY_X4 :4x STR_TERRAIN_TYPE_VERY_FLAT :velmi plochá STR_TERRAIN_TYPE_FLAT :plochá STR_TERRAIN_TYPE_HILLY :kopcovitá STR_TERRAIN_TYPE_MOUNTAINOUS :hornatá STR_CITY_APPROVAL_PERMISSIVE :nezaujatý STR_CITY_APPROVAL_TOLERANT :tolerantní STR_CITY_APPROVAL_HOSTILE :zaujatý STR_WARNING_NO_SUITABLE_AI :{WHITE}Žádná vhodná AI není k dispozici...{}Některé AI lze stáhnout pomocí služby "Stahovat součásti" # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Pokročilé nastavení STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrovat podle: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Rozbalit vše STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sbalit vše STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(žádné vysvětlení není k dispozici) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Výchozí hodnota: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Typ nastavení: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Nastavení klienta (není uchováno v uložených hrách; ovlivní všechny hry) STR_CONFIG_SETTING_TYPE_GAME_MENU :Nastavení hry (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavení hry (uchováno v uložené hře; ovlivní pouze stávající hru) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Zobrazit: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Zobrazovat v seznamu níže pouze změněná nastavení STR_CONFIG_SETTING_RESTRICT_BASIC :Základní nastavení STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pokročilé nastavení STR_CONFIG_SETTING_RESTRICT_ALL :Expertní nastavení / všechna nastavení STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavení s jinou než defaultní hodnotou STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavení s jinou hodnotou než tvé nastavení nových her STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Omezí určitá nastavení v seznamu níže STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všechny typy nastavení STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavení klienta (není uchováno v uložených hrách; ovlivní všechny hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavení hry (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavení hry (uchováno v uložené hře; ovlivní pouze stávající hru) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost) STR_CONFIG_SETTING_OFF :Vypnuto STR_CONFIG_SETTING_ON :Zapnuto STR_CONFIG_SETTING_DISABLED :Vypnuto STR_CONFIG_SETTING_COMPANIES_OFF :ne STR_CONFIG_SETTING_COMPANIES_OWN :u vlastní společnosti STR_CONFIG_SETTING_COMPANIES_ALL :u všech společností STR_CONFIG_SETTING_NONE :Žádný STR_CONFIG_SETTING_ORIGINAL :Originální STR_CONFIG_SETTING_REALISTIC :Realistický STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :vlevo STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :uprostřed STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :vpravo STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximální půjčka: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Jak moc si může společnost půjčit (bez ohledu na inflaci) STR_CONFIG_SETTING_INTEREST_RATE :Výše úroků: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Výše úroků z půjček; rovněž ovlivňuje inflaci, pokud je zapnuta STR_CONFIG_SETTING_RUNNING_COSTS :Cena provozu: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastav cenu údržby a provozu vozidel a infrastruktury STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Rychlost výstavby: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Omezení výstavby AI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Poruchy vozidel: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Určuje jak často se může špatně udržované vozidlo porouchat STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Výše dotací: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Nastavuje jak moc jsou dotovaná spojení dotována STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cena výstavby: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nastav cenu výstavby a nákupu STR_CONFIG_SETTING_RECESSIONS :Krize: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Pokud jsou krize zapnuty, mohou se objevit každých pár let. Během krize je snížena veškerá produkce. Po krizi se opět vrátí do původních hodnot STR_CONFIG_SETTING_TRAIN_REVERSING :Zakázat otáčení vlaků ve stanicích: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Pokud je zapnuto, vlaky se nebudou otáčet v nekoncových stanicích ani pokud by to zkrátilo cestu k dalšímu cíli STR_CONFIG_SETTING_DISASTERS :Katastrofy: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Katastrofy, které mohou občas zablokovat či zničit vozidla nebo infrastrukturu STR_CONFIG_SETTING_CITY_APPROVAL :Postoj městské rady k úpravám v oblasti: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vyber jak moc hluku a změn prostředí poškozuje hodnocení společnosti u města a tak dále komplikuje budoucí stavbu na jeho území STR_CONFIG_SETTING_BUILDONSLOPES :Povolit výstavbu na svazích kopců a na pobřežích: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Pokud je zapnuto, tratě a stanice mohou být postaveny na většině svahů. Pokud ne, mohou být postaveny pouze na svazích stejného směru tak, že nevyžadují žádné základy. STR_CONFIG_SETTING_AUTOSLOPE :Srovnání terénu pod budovami, kolejemi atd. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Povoluje změnu terénu pod budovami a tratěmi bez jejich odstranění STR_CONFIG_SETTING_CATCHMENT :Povolit u oblasti pokrytí realističtější velikost: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Rozdílná velikost oblasti pokrytí u různých stanic a letišť STR_CONFIG_SETTING_EXTRADYNAMITE :Povolit bourání více městských silnic, mostů a tunelů: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Usnadňuje odstranění městských staveb a silnic STR_CONFIG_SETTING_TRAIN_LENGTH :Maximální délka vlaků: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Určuje maximální délku vlaků STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} pole{P e e í} STR_CONFIG_SETTING_SMOKE_AMOUNT :množství kouře/jisker u stroje: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Množštví kouře či jisker emitovaných vozidly STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model akcelerace vlaků: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Zvolit fyzikální model pro zrychlení vlaků. "Originální" model zpomaluje všechny vozidla na svahu stejně. Realistický model zpomaluje na svazích a v zatáčkách podle různých parametrů, například délky a tažné síly. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model zrychlování silničních vozidel: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Zvolit fyzikální model pro zrychlení silničních vozidel. "Originální" model zpomaluje všechny vozidla na svahu stejně. Realistický model zpomaluje na svazích a v zatáčkách podle různých parametrů. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Strmost svahu pro vlaky: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Strnost svahů pro vlaky. Vyšší hodnota ztíží vlakům jízdu do svahu. STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Strmost svahu pro silniční vozidla: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Vyšší hodnoty ztěžují vozidlům výjezd do kopce STR_CONFIG_SETTING_FORBID_90_DEG :Zakázat vlakům a lodím otáčení o 90 stupňů: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90° zatočení nastane ve chvíli, kdy vodorovná kolej přímo navazuje na svislou kolej na vedlejším políčku. Vlak tak zatáčí o 90° místo klasických 45° u jiných kombinací kolejí. Ovlivní i zatáčení lodí. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Umožnit spojení nesousedících stanic: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Povolit přidávání částí stanice, které se nedotýkají již existujících částí. Je potřeba stisknout Ctrl při přidávání nových částí. STR_CONFIG_SETTING_IMPROVEDLOAD :Použít vylepšený algoritmus nakládání: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Pokud je zapnuto, vozidla čekající ve stanici jsou nakládána postupně. Nakládání druhého vozidla začne pouze pokud ve stanici čeká dostatek nákladu k plnému naložení prvního vozidla. STR_CONFIG_SETTING_GRADUAL_LOADING :Nakládat vozidla postupně: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postupně nakládat vozidla po danou dobu, místo nakládání všeho najednou za pevný čas stanovený množstvím nákladu STR_CONFIG_SETTING_INFLATION :Inflace: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Povolit inflaci. Ceny se časem zvyšují mírně rychleji než platby. STR_CONFIG_SETTING_SELECTGOODS :Dodávat zboží do stanice jen když je poptávka: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Stanice přijme náklad pouze pokud je vyžadován nakládajícím vozidlem. Zamezí se tak špatnému hodnocení u nákladů, které nejsou ze stanice vůbec odváženy STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximální délka mostu: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Určuje maximální délku mostů STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximální délka tunelu: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Určuje maximální délku tunelů STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Způsob manuálního budování primárního průmyslu: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Způsob budování primárního průmyslu. "žádný" znamená, že není možné primární průmysl zbudovat. "průzkum" znamená, že budování je možné, ale stavba začne v náhodném místě na mapě a někdy vůbec. "jako ostatní průmysl" znamená, že primární průmysl lze zbudovat stejně jako zpracovatelský průmysl. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Žádný STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Jako u ostatniho průmyslu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Průzkum STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Plochá oblast okolo průmyslu: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Velikost roviny okolo průmyslu. Zajistí prostor například pro zbudování tratě. STR_CONFIG_SETTING_MULTIPINDTOWN :Povolit více stejného průmyslu kolem jednoho města: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Povolit budování stejného druhu průmyslu v blízkosti jednoho města. STR_CONFIG_SETTING_SIGNALSIDE :Zobrazit návěstidla: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Určete na kterou stranu tratě umístíte návěstidlo STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Vlevo STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Na straně řidiče STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Vpravo STR_CONFIG_SETTING_SHOWFINANCES :Ukazovat finanční okno na konci každého roku: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Na konci každého roku zobrazit okno s finančním přehledem pro snadnou kontrolu hospodaření společnosti. STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Vydávat nové příkazy jako 'bez zastavení': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normálně vozidlo zastavuje na každé stanici kterou projíždí. Povolením této možnosti budou všechny nově vydané příkazy "Jeď do" vydávány jako "bez zastavení" a vozidlo tak každou stanicí po cestě do cíle pouze projede, bez zastavení. U jednotlivých příkazů lze pochopitelně možnost "bez zastavení" vypnout. STR_CONFIG_SETTING_STOP_LOCATION :Vlaky normálně zastavují {STRING} nástupiště STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Místo kde vlaky obvykle zastavují ve stanicích. Toto je defaultní nastavení. U jednotlivých příkazů vozidel jde místo zastavení změnit STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :na začátku STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :uprostřed STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :na konci STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Silniční vozidla stojí fronty (s kvantovým efektem): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Vozidlo bude stát před zastávkou dokud se neuvolní STR_CONFIG_SETTING_AUTOSCROLL :Posouvat okno, když je kurzor na okraji: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Pokud je zapnuto, pohledy se začnou posouvat pokud bude kurzor v blízkosti okraje okna STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Vypnuto STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hlavní pohled, pouze full-screen STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hlavní pohled STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Všechny pohledy STR_CONFIG_SETTING_BRIBE :Povolit úplatek místní správě: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Umožňuje společnostem pokusit se podplatit místní správu. Pokud na to přijde inspekce, nebude možno ve městě 6 měsíců nic dělat STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Umožnit kupování výhradních přepravních práv: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Pokud společnost zakoupí exkluzivní přepravní právo v daném městě, nebudou zde stanice ostatních společností přijímat jakokýkoliv náklad (pasažéři a ostatní), po dobu jednoho roku. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Povolit dotování nových budov: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Umožňuje společnostem darovat městu peníze na nové domy STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Povolit dotování rekonstrukce místních silnic: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Povolit společnostem dotovat rekonstrukci městských silnic a tak sabotovat silniční vozidla. STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Umožnit zasílání peněz ostatním společnostem: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Umožňuje darování peněz ve hře s více hráči STR_CONFIG_SETTING_FREIGHT_TRAINS :Pro simulaci těžkých vlaků vynásobit hmotnost nákladu: {STRING}x STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Nastaví vliv nákladu na vlaky. Vyšší hodnota znamená obtížnější vožení nákladu, zejména do kopce. STR_CONFIG_SETTING_PLANE_SPEED :Poměr rychlosti letadel k ostatním vozidlům: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Nastavit poměr rychlostí letadel ku ostatním dopravním prostředům, pro snížení zisku z nákladu převáženého letadly. STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Počet leteckých havárií: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Určuje šanci na havárii letadel STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Žádný STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Redukovaný STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Obvyklý STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Stavba průjezdných zastávek na obecních silnicích: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Povoluje stavbu průjezdných stanic na městem vlastněných silnicích STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Stavba průjezdných zastávek na silnicích vlastněných konkurencí: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Povolit stavění průjezných stanic na silnicích vlastněných jinými společnostmi. STR_CONFIG_SETTING_ADJACENT_STATIONS :Povolit stavění přilehlých stanic: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Povoluje stavbu stanic dotýkajících se jiných STR_CONFIG_SETTING_DYNAMIC_ENGINES :Více grafických setů s vozidly vedle sebe: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Možnost kompatibility pro starší grafiky. Nevypínej, pokud nevíš co přesně děláš! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Toto nastavení nemůže být změněno, když jsou ve hře již nějaká vozidla STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Udržování infrastruktury: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Pokud je zapnuto, je třeba platit za údržbu infrastruktury. Náklady vzrůstají společně s velikostí dopravní sítě, takže velké společnosti platí více než malé. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Žádný druh letiště nezastará: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Povolení této možnosti způsobí, že všechny druhy letišť zůstanou po uvedení dostupné napořád. (nezastarají). STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Varovat pokud se ztratí vozidlo: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Zapne zobrazování zpráv o vozidlech, která nemohou najít cestu do cíle. STR_CONFIG_SETTING_ORDER_REVIEW :Kontrolovat příkazy vozidel: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Pokud je zapnuto, příkazy vozidel jsou pravidelně kontrolovány a určité problémy jsou hlášeny pomocí informačních zpráv. STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Ne STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ano, pouze kromě zastavených vozidel STR_CONFIG_SETTING_ORDER_REVIEW_ON :U všech vozidel STR_CONFIG_SETTING_WARN_INCOME_LESS :Varovat, pokud vozidlo prodělává: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Pokud je zapnuto, budou zobrazovány zprávy o vozidlech, která v posledním kalendářním roce neměla žádný zisk. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozidlům se nikdy nezastaví výroba ('nezastarají'): {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Pokud je zapnuto, všechny modely vlaků zůstanou po uvedení dostupné napořád. (nezastarají) STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automaticky nahradit dopravní prostředek, když zestárne: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Pokud je zapnuto, vozidla na konci své plánované životnosti budou automaticky nahrazena, když jsou splněny podmínky pro automatické obnovení. STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automaticky nahradit vozidlo {STRING} před/po dosažení životnosti STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativní věk kdy by měli být vozidlo automaticky vyměněno za nové STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} měsíc{P "" e ů} před STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} měsíc{P "" e ů} po STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimální částka pro automatické obnovení: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimální částka která musí být na účtě, aby bylo vozidlo automaticky obnoveno. STR_CONFIG_SETTING_ERRMSG_DURATION :Doba zobrazení chybové zprávy: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Doba zobrazení chybových zpráv v červeném okně. Některé zprávy o (kritických) chybách však nejsou zavírány automaticky a musí být zavřeny ručně. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund STR_CONFIG_SETTING_HOVER_DELAY :Zobrazení kontextové nápovědy: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Prodleva před zobrazením nápovědy, pokud se kurzor vznáší nad nějakým ovládacím prvkem. Nápověda může být rovněž vyvolána pravým tlačítkem myši. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Podržet kurzor nad {COMMA} sekund STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Pravým klikem STR_CONFIG_SETTING_POPULATION_IN_LABEL :Zobrazovat populaci města v jeho popisku: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zobrazovat městskou populaci u názvu města na mapě STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tloušťky čar v grafech: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Tloušťka čáry v grafech. Tenká čára se čte přesněji, silnější je lépe viditelná a barva je snadněji rozpoznatelná. STR_CONFIG_SETTING_LAND_GENERATOR :Tvůrce krajiny: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :původní STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximální vzdálenost rafinerie od okraje mapy: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ropné rafinerie jsou stavěny pouze blízko okrajům mapy. Pokud je mapa ostrov, pak je to pobřeží. STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Výška sněhové čáry: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitost krajiny (jen TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :velmi rovná STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :rovná STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :členitá STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :velmi členitá STR_CONFIG_SETTING_TREE_PLACER :Algoritmus sázení stromového porostu: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :žádné STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :původní STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :vylepšené STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Otočení výškové mapy: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Doleva STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Doprava STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Výšková úroveň pro plochou krajinu: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Umožnit terénní úpravy na okrajích mapy: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Pokud je deaktivován, okraje mapy budou vždy tvořeny oceánem STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Alespoň jeden dílek na severním okraji není prázdný STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Alespoň jeden dílek na jednom z okrajů není zaplaven STR_CONFIG_SETTING_STATION_SPREAD :Maximální rozsah stanice: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximální plocha kterou může zabírat jediná stanice a všechny její části. Vysoké hodnoty zpomalí hru. STR_CONFIG_SETTING_SERVICEATHELIPAD :Údržba vrtulníků na heliportech: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Helikoptéra navštíví depo po každém přistání, i když na letišti žádné není STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Otevírat lištu na úpravy terénu s lištami na výstavbu tratí/silnic atd.: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Při otevírání lišty výstavby automaticky otevřít lištu s úpravami terénu. STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Barva země v mapě: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Barva terénu na malé mapě STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zelená STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :tmavě zelená STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fialová STR_CONFIG_SETTING_REVERSE_SCROLLING :Posouvat pohled opačným směrem: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Chování při posouvání mapy pomocí stisku pravého tlačítka myši. Pokud vypnuto, myš pohybuje kamerou. Pokud zapnuto, myš pohybuje mapou STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posouvání po mapě: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud zapnuto, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ukázat rozměry při použití stavebních nástrojů: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Zobrazovat vzdálenost a výškový rozdíl při výstavbě tahem. STR_CONFIG_SETTING_LIVERIES :Zobrazovat barvy společnosti pro: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrolovat použití nátěrů různých typů vozidel vzhledem k firemním specifikacím STR_CONFIG_SETTING_LIVERIES_NONE :žádnou společnost STR_CONFIG_SETTING_LIVERIES_OWN :jen vlastní společnost STR_CONFIG_SETTING_LIVERIES_ALL :všechny společnosti STR_CONFIG_SETTING_PREFER_TEAMCHAT :Přepnout na týmový chat em: {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Přehodit nastavení vnitropodnikového a veřejného chatu na resp. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Chování skrolovacího tlačítka: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Povoluje posouvání s dvoudimenzionálním kolečkem na myši STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :zoomování mapy STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :pohyb po mapě STR_CONFIG_SETTING_SCROLLWHEEL_OFF :nic STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rychlost skrolovacího kolečka: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Určuje citlivost kolečka myši při posouvání STR_CONFIG_SETTING_OSK_ACTIVATION :Klávesnice na obrazovce: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Vyber způsob pro zobrazení klávesnice na obrazovce pro zadání textu do textových polí pouze za pomoci ukazovacího zařízení. To znamená pro malá zařízení bez HW klavesnice STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Vypnuto STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvojklik STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Jedno kliknutí (je-li zaměřen) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Jedno kliknutí (okamžitě) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulace pravého tlačítka: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vybrat metodu emulování stisknutí pravého tlačítka myši STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command + kliknutí STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control + kliknutí STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :vypnutá STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Posouvání levým tlačítkem: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Povolit posouvání mapy chycením pomocí levého tlačítka myši. Toto je velmi užitečné hlavně při použití s dotykovou obrazovkou. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Pro jméno uložené hry použít {STRING} formát STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formát data v názvu uložené hry STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dlouhý (31. pro 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :krátký (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Předpokládaná základní paleta pro NewGRF nespecifikuje paletu: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Pro nové grafiky, které nemají definovanou potřebnou paletu, použít paletu defaultní. STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Původní (D) paleta STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Stará (W) paleta STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Zastavit automaticky hru při začínání nové hry: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Pokud je zapnuto, hra se na začátku nové hry automaticky pozastaví a umožní tak bližší prozkoumání mapy STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :V pozastavené hře povolit: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Vyberte které akce mohou být prováděny při pozastavené hře STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Žádné akce STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Všechny akce kromě stavebních STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Všechny akce kromě úprav terénu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Všechny akce STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Používat pokročilý seznam vozidel: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Umožňuje použití vylepšeného seznamu vozidel ve skupinách STR_CONFIG_SETTING_LOADING_INDICATORS :Používat ukazatele naložení: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vyber jestli budou zobrazovány ukazatele naložení nad nakládajícími a vykládajícími vozidly. STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Zobrazit jízdní řády v cyklech místo ve dnech: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Ukazuje cestovní časy v jízdních řádech STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Ukazovat v jízdním řádu příjezdy a odjezdy: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zobrazit předpokládané časy příjezdu a odjezdu v jízdních řádech. STR_CONFIG_SETTING_QUICKGOTO :Rychlejší zadávání příkazů pro vozidla: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Předvybere "jet do" po otevření okna jízdního řádu STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Výchozí druh kolejí (v nové hře/po načtení hry): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Zvol typ kolejí, který bude vybrán po započetí či nahrání hry. "První dostupný" zvolí nejstarší typ, "poslední dostupný" zvolí nejnovější typ a "nejvíce používaný" zvolí typ kolejí, který je v aktuální hře nejvíce používaný. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :první dostupný STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :poslední dostupný STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :nejpoužívanější STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vyznačovat rezervovanou trať: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Vyznačí rezervovanou trať jinou barvou tak, aby bylo snadnější zjišťování důvodů, proč vlak odmítá vjet do určitého úseku tratě STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Nevypínat po použití nástroje pro výstavbu: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Nechat nástroje pro stavbu mostů, tunelů, atd. po použití otevřené STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zobrazovat odděleně příjmy a výdaje v přehledu financí: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Určuje rozložení okna s firemními výdaji STR_CONFIG_SETTING_SOUND_TICKER :Noviny - shrnutí: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Přehrávat zvuk při zobrazení shrnutí zprávy STR_CONFIG_SETTING_SOUND_NEWS :Noviny: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Přehrát zvuk při zobrazení novin STR_CONFIG_SETTING_SOUND_NEW_YEAR :Konec roku: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Na konci roku přehrát zvuk shrnující výkon společnosti v porovnání s předchozím rokem STR_CONFIG_SETTING_SOUND_CONFIRM :Výstavba: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Přehrávat zvuk při úspěšných stavbách a dalších akcích STR_CONFIG_SETTING_SOUND_CLICK :Kliknutí na tlačítko: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pípnutí při kliku na tlačítko STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofy/nehody: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Přehrávat zvukové efekty nehod a katastrof STR_CONFIG_SETTING_SOUND_VEHICLE :Vozidla: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Přehrávat zvukové efekty vozidel STR_CONFIG_SETTING_SOUND_AMBIENT :Zvuky prostředí: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Přehrávat zvukové efekty terénu, průmyslu a měst STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Zakázat zastávky, když nejsou dostupná příslušná vozidla: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Pokud je zapnuto, infrastruktura je dostupná pouze pokud jsou k dispozici vozidla, která ji mohou používat. Zamezí ztrátě času a peněz za budovaní nevyužitelné infrastruktury STR_CONFIG_SETTING_MAX_TRAINS :Maximum vlaků na hráče: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximální počet vlaků, které může společnost vlastnit STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum silničních vozidel na společnost: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximální počet vozidel, které může společnost vlastnit STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum letadel na společnost: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximální počet letadel, které může společnost vlastnit STR_CONFIG_SETTING_MAX_SHIPS :Maximum lodí na společnost: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximální počet lodí, které může společnost vlastnit STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Zakázat počítači vlaky: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Zapnutím této volby znemožníte budování vlaků hráčům, kteří jsou ovládání počítačem (AI) STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Zakázat počítači silniční vozidla: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Zapnutím této volby znemožníte budování silničních vozidel hráčům, kteří jsou ovládání počítačem (AI) STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Zakázat počítači letadla: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Zapnutím této volby znemožníte budování letadel hráčům, kteří jsou ovládání počítačem (AI) STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Zakázat počítači lodě: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Zapnutím této volby znemožníte budování lodí hráčům, kteří jsou ovládání počítačem (AI) STR_CONFIG_SETTING_AI_PROFILE :Výchozí nastavení: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Vyber, který profil nastavení se použije pro náhnodné AI nebo jako úvodní hodnoty po přidání AI nebo herního skriptu do hry STR_CONFIG_SETTING_AI_PROFILE_EASY :Lehká STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Střední STR_CONFIG_SETTING_AI_PROFILE_HARD :Těžká STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Povolit AI v síťové hře: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Umožňuje AI počítačem řízeným hráčům připojit se do hry s více hráči STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes před skripty než budou pozastaveny: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximální počet výpočetních kroků, které může skript vykonat za jeden tah STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaly servisů v procentech: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vyber, jestli potřebu návštěvy servisu určuje čas od poslední návštěvy nebo určitý pokles % spolehlivosti od jejího maxima. STR_CONFIG_SETTING_SERVINT_TRAINS :Základní servisní interval pro vlaky: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Nastaví defaultní servisní interval pro vlaky. STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dní/% STR_CONFIG_SETTING_SERVINT_DISABLED :Vypnuto STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Základní servisní interval pro silniční vozidla: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Nastaví defaultní servisní interval pro silniční vozidla pokud vozidlo nemá nastaveno jiný servisní interval STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Základní servisní interval pro letadla: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastaví defaultní servisní interval pro letadla, pokud letadlo nemá nastaveno jiný servisní interval STR_CONFIG_SETTING_SERVINT_SHIPS :Základní servisní interval pro lodě: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastaví defaultní servisní interval pro lodě pokud loď nemá nastaven jiný servisní interval STR_CONFIG_SETTING_NOSERVICE :Vypnout servisy, když jsou vypnuty poruchy: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Pokud je zapnuto, vozidla nejezdí do servisu pokud se nemohou porouchat, tedy pokud jsou vypnuty poruchy STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Zapnout omezení rychlosti vagonů: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Pokud zapnuto, použije rychlostní omezení vagónů při stanovení maximální rychlosti vlaku STR_CONFIG_SETTING_DISABLE_ELRAILS :Vypnout elektrickou železnici: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Zapnutím této možnosti odstraní potřebu elektrifikované trati pro elektrické lokomotivy STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Příjezd prvního vozidla do hráčovy stanice: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Zobrazovat noviny pokud první vozidlo dorazí do stanice této společnosti STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Příjezd prvního vozidla do konkurenční stanice: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Zobrazovat noviny pokud první vozidlo dorazí do konkurenční stanice STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Nehody a katastrofy: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Zobrazovat noviny o nehodách a katastrofách STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informace o společnosti: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Zobrazovat noviny když společnost začne nebo hrozí krach STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Otevírání průmyslu: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Zobrazovat noviny o otevírání průmyslu STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zavírání průmyslu: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Zobrazovat noviny o uzavívární průmyslu STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Změny v ekonomice: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Zobrazovat noviny o globálních změnách v ekonomice STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Změny produkce průmyslu obsluhovaného společností: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Zobrazovat noviny o změně produkce u průmyslu, který je obsluhován touto společností STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Změny produkce průmyslu obsluhovaného konkurencí: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Zobrazovat noviny o změně produkce u průmyslu, který je obsluhován konkurencí STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Jiné změny produkce průmyslu: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Zobrazovat noviny o změně produkce u průmyslu, který není nikým obsluhován STR_CONFIG_SETTING_NEWS_ADVICE :Rady a informace k vozidlům společnosti: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Zobrazovat zprávy o vozidlech vyžadujících pozornost STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nový dopravní prostředek: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Zobrazit noviny když je dostupný nový dopravní prostředek STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Změny příjmu zboží: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Zobrazovat zprávy o změně příjmu některých druhů zboží u stanic STR_CONFIG_SETTING_NEWS_SUBSIDIES :Dotace: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Zobrazovat noviny související s dotacemi STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Obecné informace: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Zobrazovat noviny o běžných událostech, jako například koupě exluzivních práv či dotování rekonstrukce silnic STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Vypnuto STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Shrnutí STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Plná STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Barevné noviny se objeví v roce: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Rok od kterého budou novinová oznámeni zobrazena v barvách. Před tímto rokem jsou černobílá. STR_CONFIG_SETTING_STARTING_YEAR :Počáteční datum: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Plynulé změny ekonomiky (více menších změn): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Pokud je zapnuto, produkce průmyslu se mění častěji ale změny jsou menší. Toto nastavení většinou nemá vliv na průmysl, který je přidaný novou grafikou STR_CONFIG_SETTING_ALLOW_SHARES :Povolit kupování podílu z ostatních společností: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Pokud je zapnuto, umožní kupovaní podílů ve společnostech. Podíly jsou k dispozici pouze u společností určitého stáří STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Podíl ze zisku při překládce: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Procentuální podíl příjmu, který je předán mezistanicím v překládacích systémech, předá větší kontrolu nad příjmem STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Při tažení umisťovat návěstidla každých: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Nastav vzdálenost v jaké budou semafory vystavěny za překážkou (vyhybka) při stavbě tahem STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} polí STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Při přetahování udržovat stálou vzdálenost mezi signály: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Zvol chování umisťování semaforů při Ctrl+tažení. Pokud je vypnuto, semafory jsou umístěny okolo mostů a tunelů aby se zabránilo velkým úsekům bez semaforů. Pokud je povoleno, semafory jsou umístěny každých N polí, takže je zarovnání semaforů u souběžných tratí jednoduší. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Semafory automaticky stavět do roku: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Nastav rok, ve kterém budou používány elektrické semafory. Před tímto rokem jsou používány mechanické, které fungují stejně ale mají jiný vzhled STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Okno pro stavbu návěstidel: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Zobrazovat okno pro vybrání typu semaforů místo "bezokeního" měnění pomocí ctrl+kliku při jejich stavbě. STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Výchozí typ návěstidla: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Výchozí typ semaforu k použití STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :obyčejné STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :dokonalejší (PBS) STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :jednosměrné dokonalejší (PBS) STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Vybírat dokola návěstidla: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Vyber které semafory budou nabízeny při Ctrl+klikání při jejich stavbě. STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :pouze obyčejná STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :pouze dokonalejší (PBS) STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :všechna STR_CONFIG_SETTING_TOWN_LAYOUT :Rozvržení silnic pro nová města: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Rozložení silniční sítě ve městech STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originální STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Lepší silnice STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :mřížka 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :mřížka 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Náhodně STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Města smějí stavět silnice: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Povolí městům stavět silnice pro růst. Zakaž k zabránění výstavby silnic městy. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Města mohou stavět přejezdy: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Povolení tohoto nastavení umožní městům, budovat železniční přejezdy STR_CONFIG_SETTING_NOISE_LEVEL :Umožnit městům ovlivňovat hlukový limit pro letiště: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Pokud je vypnuto, ve každém městě mohou být dvě letiště. Pokud je zapnuto, počet letišť bude omezen hlukovými limity města, což závisí na jeho populaci, velikosti letiště a jeho vzdálenosti od centra města STR_CONFIG_SETTING_TOWN_FOUNDING :Zakládání měst během hry: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Povoluje hráčům zakládat nové města během hry STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zakázáno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Povoleno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Povoleno s výběrem rozložení a velikosti města STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Umístění stromů ve hře: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Náhodné umisťování stromů během hry. Může ovlivnit průmysl závisející na růstu stromů, například pily. STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Žádné {RED}(nefunguje pila) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Jen v deštných pralesech STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Všude STR_CONFIG_SETTING_TOOLBAR_POS :Umístění hlavní lišty: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontální pozice hlavního panelu v horní části obrazovky STR_CONFIG_SETTING_STATUSBAR_POS :Pozice statusbaru: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontální pozice stavového panelu v dolní části obrazovky STR_CONFIG_SETTING_SNAP_RADIUS :Okno se přichytí k druhému, když je blíž než: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Vzdálenost mezi okny, při které se okno automaticky zarovná k jinému blízkému oknu STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixelů STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Vypnuto STR_CONFIG_SETTING_SOFT_LIMIT :Omezit počet zavíratelných oken na: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Počet otevřených nelepivých oken, po jehož dosažení budou automaticky zavírána stará okna aby se uvolnil prostor pro nová STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :vypnuto STR_CONFIG_SETTING_ZOOM_MIN :Maximální úroveň přiblížení: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximální přiblížení pohledu. Nastavení většího přiblížení má větší nároky na paměť počítače STR_CONFIG_SETTING_ZOOM_MAX :Maximální úroveň oddálení: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maximální oddálení pohledu. Příliš velké nastavení může způsobovat velké odezvy STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normální STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Rychlost růstu měst: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Rychlost růstu měst STR_CONFIG_SETTING_TOWN_GROWTH_NONE :nulová STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :pomalá STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :normální STR_CONFIG_SETTING_TOWN_GROWTH_FAST :rychlá STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :velmi rychlá STR_CONFIG_SETTING_LARGER_TOWNS :Podíl měst, ze kterých se stanou velkoměsta: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Počet měst které se stanou velkoměsty, tedy počet měst které se rozvíjí a rostou rychleji STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 z {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Žádné STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Činitel základní velikosti města: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Průměrná velikost větších měst v porovnání s ostatními městy na začátku hry STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Odstraňovat nesmyslné prvky vozovky při výstavbě silnic: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Odstraní mrtvé konce silnice při rekonstrukci silnic STR_CONFIG_SETTING_GUI :{ORANGE}Ovládaní STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Výstavba STR_CONFIG_SETTING_VEHICLES :{ORANGE}Dopravní prostředky STR_CONFIG_SETTING_STATIONS :{ORANGE}Stanice STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomika STR_CONFIG_SETTING_AI :{ORANGE}Konkurenti STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Zobrazení STR_CONFIG_SETTING_INTERACTION :{ORANGE}Chování STR_CONFIG_SETTING_SOUND :{ORANGE}Zvukové efekty STR_CONFIG_SETTING_NEWS :{ORANGE}Novinky a zprávy STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Návěstidla STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Náklad STR_CONFIG_SETTING_AI_NPC :{ORANGE}Umělá inteligence STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Obnovování STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servis STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Směrování STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlaky STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Města STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Průmysl STR_CONFIG_SETTING_PATHFINDER_OPF :Původní STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(doporučený) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Hledač cesty pro vlaky: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Hledač cesty pro vlaky STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Hledač cesty pro silniční vozidla: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Hledač cesty pro vozidla STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Hledač cesty pro lodě: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Hledač cesty pro lodě STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatické otáčení vlaků na semaforech: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Povoluje vlakům otočit se na semaforech, pokud čekají příliš dlouho STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Změnit hodnotu nastavení # Config errors STR_CONFIG_ERROR :{WHITE}Chyba v konfiguračním souboru... STR_CONFIG_ERROR_ARRAY :{WHITE}... chyba v poli '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... neplatná hodnota '{STRING}' pro '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... koncové znaky na konci nastavení '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorována grafika '{STRING}': duplicitní GRF ID s '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorovány neplatné grafiky '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nenalezeno STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nebezpečné pro statické použití STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :systém grafik STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nekompatibilní s touto verzí OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :neznámé STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... úroveň komprese '{STRING}' není platná STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... formát uložené hry '{STRING}' není dostupný. Návrat na '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorování základní grafické sady '{STRING}': nenalezeno STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorování základní hudební sady '{STRING}': nenalazeno STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorování základní hudební sady '{STRING}': nenalezeno STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nedostatek paměti STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Alokování {BYTES} grafické mezipaměti selhalo. Grafická mezipaměť byla zredukována na {BYTES}. To sníží výkon OpenTTD. Pro snížení paměťových nároků můžeš zkusit vypnout 32bpp grafiku a/nebo úrovně přiblížení # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nová hra STR_INTRO_LOAD_GAME :{BLACK}Nahrát hru STR_INTRO_PLAY_SCENARIO :{BLACK}Hrát mapu STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Hrát z výškové mapy STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor scénáře STR_INTRO_MULTIPLAYER :{BLACK}Více hráčů STR_INTRO_GAME_OPTIONS :{BLACK}Možnosti hry STR_INTRO_HIGHSCORE :{BLACK}Nejlepší výsledky STR_INTRO_ADVANCED_SETTINGS :{BLACK}Pokročilé nastavení STR_INTRO_NEWGRF_SETTINGS :{BLACK}Nastavení grafik STR_INTRO_ONLINE_CONTENT :{BLACK}Stahovat součásti STR_INTRO_SCRIPT_SETTINGS :{BLACK}Nastavení AI / hry STR_INTRO_QUIT :{BLACK}Ukončit STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Hrát novou hru. Pomocí Ctrl přeskočíš nastavení mapy STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Nahrát hru STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Začít novou hru s krajinou vytvořenou z výškové mapy STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Hrát novou hru ze scénáře STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Vytvořit vlastní mapu - scénář STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Spustit hru více hráčů STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Krajina mírného pásma STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Subarktická krajina STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Subtropická krajina STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Země hraček STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Zobrazit možnosti hry STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Zobrazit tabulku nejlepších výsledků STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Zobrazit pokročilé nastavení STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Ukázat nastavení NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Ukázat, jaký nový nebo upravený obsah se dá stáhnout STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zobrazit nastavení AI a hry STR_INTRO_TOOLTIP_QUIT :{BLACK}Ukončit 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Tento překlad postrádá {NUM} řetěz{P ec ce ců}. Prosím pomozte OpenTTD udělat lepším a přihlaste se jako překladatel. Pro více informací, čtěte readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Konec STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Opravdu chceš opustit tuto hru a odejít do {STRING}? STR_QUIT_YES :{BLACK}Ano STR_QUIT_NO :{BLACK}Ne # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unixu STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Konec hry STR_ABANDON_GAME_QUERY :{YELLOW}Opravdu chceš ukončit tuto hru? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Určite chceš opustit toto mapu? # Cheat window STR_CHEATS :{WHITE}Cheaty STR_CHEATS_TOOLTIP :{BLACK}Zaškrtávací políčka ukazují, jestli jsi tento cheat už použil STR_CHEATS_WARNING :{BLACK}Varování! Chystáš se podvést ostatní hráče. Pamatuj si, že tento podlý čin nebude nikdy zapomenut! STR_CHEAT_MONEY :{LTBLUE}Navýšit peníze o {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrát jako společnost: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozer (odstraní průmysl a další objekty): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunely se mohou křížit: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Letadla nebudou na malých letištích havarovat (tak často): {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :krajina mírného pásma STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :subarktická krajina STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtropická kraina STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Země hraček STR_CHEAT_CHANGE_DATE :{LTBLUE}Změnit datum: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Změnit rok STR_CHEAT_SETUP_PROD :{LTBLUE}Povolit změnu produkce průmyslu: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nové barevné schéma STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Zobrazit všeobecná barevná schémata STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Zobrazit barevná schémata pro vlaky STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Zobrazit barevná schémata pro silniční vozidla STR_LIVERY_SHIP_TOOLTIP :{BLACK}Zobrazit barevná schémata pro lodě STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Zobrazit barevná schémata pro letadla STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vybrat primární barvu označeného schématu. Ctrl+kliknutí nastaví tuto barvu každému schématu STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vybrat sekundární barvu označeného schématu. Ctrl+Kliknutí nastaví tuto barvu každému schématu STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vyber, které barevné schéma chceš změnit (více označíš s Ctrl). Schéma změníš kliknutím na tlačítko STR_LIVERY_DEFAULT :Výchozí barva STR_LIVERY_STEAM :Parní lokomotiva STR_LIVERY_DIESEL :Dieselová lokomotiva STR_LIVERY_ELECTRIC :Elektrická lokomotiva STR_LIVERY_MONORAIL :Jednokolejná lokomotiva STR_LIVERY_MAGLEV :Lokomotiva Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Osobní vagon (parní) STR_LIVERY_PASSENGER_WAGON_DIESEL :Osobní vagon (dieselový) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Osobní vagon (elektrický) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Osobní vagon (monorail) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Osobní vagon (Maglev) STR_LIVERY_FREIGHT_WAGON :Nákladní vagon STR_LIVERY_BUS :Autobus STR_LIVERY_TRUCK :Nákladní vůz STR_LIVERY_PASSENGER_SHIP :Trajekt STR_LIVERY_FREIGHT_SHIP :Nákladní loď STR_LIVERY_HELICOPTER :Vrtulník STR_LIVERY_SMALL_PLANE :Malé letadlo STR_LIVERY_LARGE_PLANE :Velké letadlo STR_LIVERY_PASSENGER_TRAM :Tramvaj pro cestující STR_LIVERY_FREIGHT_TRAM :Nákladní tramvaj # Face selection window STR_FACE_CAPTION :{WHITE}Volba tváře STR_FACE_CANCEL_TOOLTIP :{BLACK}Zrušit volbu nového obličeje STR_FACE_OK_TOOLTIP :{BLACK}Potvrdit výběr obličeje STR_FACE_MALE_BUTTON :{BLACK}Mužská STR_FACE_MALE_TOOLTIP :{BLACK}Zvolit mužské obličeje STR_FACE_FEMALE_BUTTON :{BLACK}Ženská STR_FACE_FEMALE_TOOLTIP :{BLACK}Zvolit ženské obličeje STR_FACE_NEW_FACE_BUTTON :{BLACK}Nový obličej STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Vytvořit náhodnou novou tvář STR_FACE_ADVANCED :{BLACK}Podrobně STR_FACE_ADVANCED_TOOLTIP :{BLACK}Pokročilý výběr tváře STR_FACE_SIMPLE :{BLACK}Jednodušše STR_FACE_SIMPLE_TOOLTIP :{BLACK}Základní výběr tváře STR_FACE_LOAD :{BLACK}Nahrát STR_FACE_LOAD_TOOLTIP :{BLACK}Nahrát oblíbený obličej STR_FACE_LOAD_DONE :{WHITE}Tvůj oblíbený obličej se nahrál z konfiguračního souboru STR_FACE_FACECODE :{BLACK}Číslo tváře STR_FACE_FACECODE_TOOLTIP :{BLACK}Zobrazit a/nebo nastavit číslo tváře prezidenta STR_FACE_FACECODE_CAPTION :{WHITE}Zobrazit a/nebo nastavit číslo tváře prezidenta STR_FACE_FACECODE_SET :{WHITE}Nové číslo obličeje bylo nastaveno STR_FACE_FACECODE_ERR :{WHITE}Nelze nastavit číslo tváře prezidenta - musí jít o číslo mezi 0 a 4{NBSP}294{NBSP}967{NBSP}295! STR_FACE_SAVE :{BLACK}Uložit STR_FACE_SAVE_TOOLTIP :{BLACK}Uložit oblíbený obličej STR_FACE_SAVE_DONE :{WHITE}Tato tvář bude uložena do konfiguračního souboru jako tvá oblíbená STR_FACE_EUROPEAN :{BLACK}Europoidní STR_FACE_SELECT_EUROPEAN :{BLACK}Vybrat europoidní tváře STR_FACE_AFRICAN :{BLACK}Africká STR_FACE_SELECT_AFRICAN :{BLACK}Vybrat africké tváře STR_FACE_YES :Ano STR_FACE_NO :Ne STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Povolit knír nebo náušnici STR_FACE_HAIR :Vlasy: STR_FACE_HAIR_TOOLTIP :{BLACK}Změnit vlasy STR_FACE_EYEBROWS :Obočí: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Změnit obočí STR_FACE_EYECOLOUR :Barva očí: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Změnit barvu očí STR_FACE_GLASSES :Brýle: STR_FACE_GLASSES_TOOLTIP :{BLACK}Povolit brýle STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Změnit brýle STR_FACE_NOSE :Nos: STR_FACE_NOSE_TOOLTIP :{BLACK}Změnit nos STR_FACE_LIPS :Rty: STR_FACE_MOUSTACHE :Knír: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Změnit rty nebo knír STR_FACE_CHIN :Brada: STR_FACE_CHIN_TOOLTIP :{BLACK}Změnit bradu STR_FACE_JACKET :Sako: STR_FACE_JACKET_TOOLTIP :{BLACK}Změnit sako STR_FACE_COLLAR :Límec: STR_FACE_COLLAR_TOOLTIP :{BLACK}Změnit límec STR_FACE_TIE :Kravata: STR_FACE_EARRING :Náušnice: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Změnit kravatu nebo náušnice # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Připojení: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vyber si mezi hrou na internetu nebo v místní síti STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Jméno hráče: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Podle tohoto jména tě ostatní hráči poznají STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Název STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Název hry STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Hráčů STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Hráčů on-line / nejvíce{}Společností on-line / nejvíce STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Rozměry mapy STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Rozměry mapy ve hře{}Kliknutím hry seřadíš podle plochy STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Současné datum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Roků STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Počet let,{}po které už hra běží STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Jazyk, verze serveru, atd. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Hru vybereš kliknutím do seznamu STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Naposledy navštívený server: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Kliknutím vybereš server, kde jsi hrál(a) naposledy STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFO O HŘE STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klientů: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Prostředí: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Velikost mapy: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Verze hry na serveru: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adresa serveru: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Počáteční datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Současné datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Chráněno heslem! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER JE OFFLINE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER JE PLNÝ STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}NESOUHLASÍ VERZE STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NESOUHLASÍ GRAFIKY STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Přidat se STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Obnovit info STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Znovu načte informace o serveru STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Najít server STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Hledat server v síti STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Přidat server STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Přidá server do seznamu, ve kterém se budou hledat běžící hry STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Spustit server STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Spustit vlastní server STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Zadej své jméno STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Vlož IP adresu serveru # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Začít novou hru STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Jméno hry: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Jméno hry se zobrazí ostatním hráčům v nabídce síťové hry STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastavit heslo STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Svoji hru si můžeš ochránit heslem, když nechceš, aby se ti do ni hlásili jiní lidé STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :internet (zveřejnit) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" i ů} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Nejvyšší počet hráčů: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Zvol nejvyšší počet hráčů. Může se jich připojit i méně STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} společnost{P "" i í} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximální počet společností: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Omezit serverem počet společností STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} pozorovatel{P "" é ů} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximální počet pozorovatelů: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Omezit serverem pocet pozorovatelů STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Jazyk ve hře: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aby ostatní hráči věděli, jakým jazykem se bude ve hře mluvit STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Zadej jméno této síťové hry # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :jakýkoli STR_NETWORK_LANG_ENGLISH :angličtina STR_NETWORK_LANG_GERMAN :němčina STR_NETWORK_LANG_FRENCH :francouzština STR_NETWORK_LANG_BRAZILIAN :brazilská portugalština STR_NETWORK_LANG_BULGARIAN :bulharština STR_NETWORK_LANG_CHINESE :čínština STR_NETWORK_LANG_CZECH :čeština STR_NETWORK_LANG_DANISH :dánština STR_NETWORK_LANG_DUTCH :nizozemština STR_NETWORK_LANG_ESPERANTO :esperanto STR_NETWORK_LANG_FINNISH :finština STR_NETWORK_LANG_HUNGARIAN :maďarština STR_NETWORK_LANG_ICELANDIC :islandština STR_NETWORK_LANG_ITALIAN :italština STR_NETWORK_LANG_JAPANESE :japonština STR_NETWORK_LANG_KOREAN :korejština STR_NETWORK_LANG_LITHUANIAN :litevština STR_NETWORK_LANG_NORWEGIAN :norština STR_NETWORK_LANG_POLISH :polština STR_NETWORK_LANG_PORTUGUESE :portugalština STR_NETWORK_LANG_ROMANIAN :rumunština STR_NETWORK_LANG_RUSSIAN :ruština STR_NETWORK_LANG_SLOVAK :slovenština STR_NETWORK_LANG_SLOVENIAN :slovinština STR_NETWORK_LANG_SPANISH :španělština STR_NETWORK_LANG_SWEDISH :švédština STR_NETWORK_LANG_TURKISH :turečtina STR_NETWORK_LANG_UKRAINIAN :ukrajinština STR_NETWORK_LANG_AFRIKAANS :afrikánština STR_NETWORK_LANG_CROATIAN :chorvatština STR_NETWORK_LANG_CATALAN :katalánština STR_NETWORK_LANG_ESTONIAN :estonština STR_NETWORK_LANG_GALICIAN :galicijština STR_NETWORK_LANG_GREEK :řečtina STR_NETWORK_LANG_LATVIAN :lotyština ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Vstupní místnost do hry více hráčů STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Připravuji se na vstoupení: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Současný seznam všech společností v této hře. Buď můžeš do jedné vstoupit, nebo můžeš založit novou STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INFO O SPOLEČNOSTI STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Jméno společnosti: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Založeno: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Hodnota společnosti: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Stav na účtu: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Loňský hrubý zisk: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Výkon: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vozidla: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stanice: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Hráči: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nová společnost STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Založit novou společnost STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Navštívit hru STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Připojit se do hry jako pozorovatel STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Vstoupit do společnosti STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Pomoz vést tuto společnost # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Připojování... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Připojování... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Ověřování... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Čekání... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Stahování mapy... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Zpracovávání dat... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrování... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Přijímání informací o hře... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Přijímání informací o společnosti... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P "" i ů} před vámi STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} staženo STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} staženo STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odpojit se STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chráněný. Napiš heslo STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Společnost je chráněná. Napiš heslo # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Seznam hráčů STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Pozorovat STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nová společnost # Network client list STR_NETWORK_CLIENTLIST_KICK :Vyhodit STR_NETWORK_CLIENTLIST_BAN :Ban STR_NETWORK_CLIENTLIST_GIVE_MONEY :Darovat peníze STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napsat všem STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napsat společnosti STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Soukromá zpráva STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Pozorovatelé STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napiš částku, kterou chceš poskytnout # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukládat zadané heslo STR_COMPANY_PASSWORD_OK :{BLACK}Změnit heslo společnosti STR_COMPANY_PASSWORD_CAPTION :{WHITE}Heslo společnosti STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Výchozí heslo společností STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Použít toto heslo jako výchozí pro nově založené společnosti # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Přidat se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Připojit se a hrát za tuto společnost STR_COMPANY_VIEW_PASSWORD :{BLACK}Heslo STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Heslo - zabrání neautorizovaným uživatelům v připojení se k tvé společnosti STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Nastav heslo společnosti # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Poslat STR_NETWORK_CHAT_COMPANY_CAPTION :[Tým] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Soukromá] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Všichni] : STR_NETWORK_CHAT_COMPANY :[Tým] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Tým] pro {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Osobní] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Osobní] pro {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Všichni] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Zadej zprávu # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Žádná síťová zařízení nebyla nalezena (nebo je hra zkompilována bez ENABLE_NETWORK) STR_NETWORK_ERROR_NOSERVER :{WHITE}Nenalezena žádná síťová hra STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Server neodpověděl na požadavek STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Nelze se připojit kvůli rozdílným grafikám STR_NETWORK_ERROR_DESYNC :{WHITE}Síť - synchronizace hry selhala STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Síť - spojení ztraceno STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Nelze nahrát uloženou hru ze serveru STR_NETWORK_ERROR_SERVER_START :{WHITE}Nelze spustit server STR_NETWORK_ERROR_CLIENT_START :{WHITE}Nelze se připojit STR_NETWORK_ERROR_TIMEOUT :{WHITE}U spojení č. {NUM} byl překročen čekací limit STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Vznikla chyba v protokolu a naše spojení je přerušeno STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Revize hry tohoto klienta neodpovídá revizi hry na serveru STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Špatné heslo STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Server je plný STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Jsi blokován serverem STR_NETWORK_ERROR_KICKED :{WHITE}Byl jsi vyhozen ze hry STR_NETWORK_ERROR_CHEATER :{WHITE}Používání cheatů není na tomto serveru povoleno STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Posíláte serveru příliš mnoho příkazů STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Vložení hesla ti trvalo příliš dlouho STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tvůj počítač je přiliš pomalý pro udržení kroku se serverem STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Tvému počítači trvalo stahování mapy příliš dlouho STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tvému počítači trvalo připojování na server příliš dlouho ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :všeobecná chyba STR_NETWORK_ERROR_CLIENT_DESYNC :chyba v synchronizaci STR_NETWORK_ERROR_CLIENT_SAVEGAME :nelze nahrát hru STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :spojení ztraceno STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :chyba v protokolu STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Nesouhlasí grafiky STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nevydáno povolení STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :přišel neplatný paket STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :špatná revize hry STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :jméno se už používá STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :špatné heslo STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :špatné ID společnosti v DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :vyhozen serverem STR_NETWORK_ERROR_CLIENT_CHEATER :se pokoušel podvádět STR_NETWORK_ERROR_CLIENT_SERVER_FULL :na serveru je plno STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :posílal příliš mnoho příkazů STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :neobdrženo žádné heslo v časovém limitu STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :všeobecný timeout STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :stahování mapy trvalo příliš dlouho STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :zpracování mapy trvalo příliš dlouho ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Pravděpodobná ztráta spojení STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Během poslední{P 0 "" ch ch} {NUM} sekund{P y "" ""} nepřišla ze serveru žádná data # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Hra pozastavena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Hra stále pozastavena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Hra stále pozastavena ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Hra stále pozastavena ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Hra je stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Hra obnovena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nedostatek hráčů STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :připojují se klienti STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ručně STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :herní skript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :odpojování STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} se připojil do hry STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} se připojil do hry (klient č. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} se přidává ke společnosti č. {2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se stává pozorovatelem STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} zakládá novou společnost (č. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} opouští hru ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} si mění jméno na {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} poslal(a) tvé společnosti {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dal(a) jsi {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server ukončil relaci STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server se restartuje...{}Počkejte prosím... # Content downloading window STR_CONTENT_TITLE :{WHITE}Součásti ke stažení STR_CONTENT_TYPE_CAPTION :{BLACK}Druh STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Druh obsahu STR_CONTENT_NAME_CAPTION :{BLACK}Název STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Název obsahu STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Detaily zobrazíš kliknutím na řádek{}Ke stažení ho vybereš kliknutím na zaškrtávací políčko STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Vybrat vše STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označit všechen obsah ke stáhnutí STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vybrat vylepšené STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označit všechen vylepšený/aktualizovaný obsah ke stáhnutí STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Odznačit vše STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Nestahovat nic STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Prohledat externí stránky STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Hledaný obsah není dostupný ve službě pro správu obsahu OpenTTD na stránkách nepřidružených k OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Opouštíš OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Podmínky pro stahování obsahu z externích stránek se různí.{}Budeš muset navštívit externí stránky pro instrukce k nainstalování obsahu do OpenTTD.{}Přeješ si pokračovat? STR_CONTENT_FILTER_TITLE :{BLACK}Filtr na značku/jméno: STR_CONTENT_OPEN_URL :{BLACK}Navštívit stránky STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK} Zobrazit internetové stránky pro tuto položku STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Stáhnout STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Začít stahovat vybraný obsah STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Celková velikost dat: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFORMACE O OBSAHU STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Položka není vybrána ke stažení STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Položka je vybrána ke stažení STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Ke stažení byla vybrána i tato závislost STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Tohle už máš STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Tento obsah je neznámý a nejde stáhnout do OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Tohle je náhrada za dosavadní {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Název: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Verze: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Popis: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Druh: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Velikost: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Vybráno kvůli: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Závislosti: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Klíčová slova: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD není zkompilován s knihovnou "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... takže nelze stahovat obsah! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Základní grafika STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :Knihovna pro AI STR_CONTENT_TYPE_SCENARIO :Scénář STR_CONTENT_TYPE_HEIGHTMAP :Výšková mapa STR_CONTENT_TYPE_BASE_SOUNDS :Základní zvuk STR_CONTENT_TYPE_BASE_MUSIC :Základní hudba STR_CONTENT_TYPE_GAME_SCRIPT :Herní skript STR_CONTENT_TYPE_GS_LIBRARY :Knihovna herních skriptů # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Obsah se stahuje... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Žádá se o soubory... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Právě se stahuje {STRING} ({NUM} z {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Stahování dokončeno STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} z{NBSP}{BYTES} staženo ({NUM}{NBSP}%) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Nešlo se připojit k serveru s obsahem... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Stahování selhalo... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... spojení bylo ztraceno STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... do souboru nešlo zapsat STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Nešlo rozbalit stažený soubor STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Chybějící grafika STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD vyžaduje grafiky, které nebyly nalezeny. Povolíte OpenTTD stáhnout a nainstalovat tyto grafiky? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ano, stáhnout grafiky STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, ukončit OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Nastavení průhlednosti STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Změna průhlednosti popisků. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Změna průhlednosti stromů. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Změna průhlednosti domů. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Změna průhlednosti továren. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, dep a směrování. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Změna průhlednosti mostů. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Změna průhlednosti staveb jako majáků a vysílačů. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Změna průhlednosti elektrifikace. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Přepnout zobrazení ukazatelů naložení. Nastavení se zamkne Ctrl+kliknutím STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Objekty budou neviditelné, ne průhledné # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Zvýraznění oblasti pokrytí STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Vypnuto STR_STATION_BUILD_COVERAGE_ON :{BLACK}Zapnuto STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nezvýrazňovat oblast pokrytí STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Zvýraznit oblast pokrytí STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Přijímá: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Poskytuje: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Spojování stanic STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Postavit samostatnou stanici STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spojování směrování STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Postavit samostatné směrování # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Výstavba železnice STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Výstavba elektrifikované železnice STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Výstavba monorailu STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Výstavba maglevu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Položit koleje. Ctrl přepíná režim stavba/odstraňování. Shift zobrazí odhad ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Pokládat koleje v libovolném směru. Ctrl přepíná režim stavba/odstraňování. Shift zobrazí odhad ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Postavit železniční depo (pro nákup a servis vlaků). Shift zobrazí odhad ceny STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Postavit na trati směrování. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Postavit nádraží. Pomocí Ctrl ho připojíš k jinému. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Umístit návěstidla. Pomocí Ctrl vybereš mezi mechanickými a světelnými{}Tažením umístíš návěstidla na rovném úseku tratě a s Ctrl až do dalšího křížení{}Kliknutím na tlačítko s Ctrl otevřeš okno s výběrem návěstidel{}Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Postavit železniční most. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Postavit železniční tunel. Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Přepnout režim stavba/odstranění pro kolejí, semaforů, směrování a stanic. Při stisku Ctrl odebere také koleje ze směrování a stanic STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Změnit nebo vylepšit druh kolejí (na tento). Stisknutý Shift pro zobrazení odhadu ceny STR_RAIL_NAME_RAILROAD :Železnice STR_RAIL_NAME_ELRAIL :Elektrifikovaná železnice STR_RAIL_NAME_MONORAIL :Monorail STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orientace vlakového depa STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Zvolit orientaci železničního depa # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Směrování STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vyber typ směrování # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Výběr nádraží STR_STATION_BUILD_ORIENTATION :{BLACK}Orientace STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Zvolit orientaci nádraží STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Počet nástupišť STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Zvolit počet nástupišť pro nádraží STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Délka nástupiště STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Zvolit délku nádraží STR_STATION_BUILD_DRAG_DROP :{BLACK}Táhni a pusť STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Stavět stanice pomocí tahaní myši STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vyber, který druh stanic se má zobrazit STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vyber typ stavěné stanice STR_STATION_CLASS_DFLT :Původní stanice STR_STATION_CLASS_WAYP :Směrování # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Výběr návěstidel STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Obyčejné návěstidlo (semafor){}Návěstidla jsou nutná, aby nedocházelo ke srážkám vlaků na tratích, kde jezdí více než jeden vlak STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Vjezdové návěstidlo (semafor){}Svítí zeleně do té doby, kdy v následujícím úseku trati je alespoň jedno další svítící zeleně. Jinak svítí červeně STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Výjezdové návěstidlo (semafor){}Chová se stejně jako obyčejné, ale je nezbytné nastavit správnou barvu vjezdových a kombinovaných pre-signálů STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinované návěstidlo (semafor){}Kombinované návěstidlo slouží zároveň jako vjezdové a výjezdové. Tím je možné postavit velké "řetězce" pre-signálů STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Dokonalejší (PBS) návěstidlo (semafor){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Dokonalejší návěstidla se dají projet zezadu STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Dokonalejší (PBS) jednosměrné návěstidlo (semafor){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Jednosměrná návěstidla se nedají projet zezadu STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Obyčejné návěstidlo (elektrické){}Návěstidla jsou nutná, aby nedocházelo ke srážkám vlaků na tratích, kde jezdí více než jeden vlak STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Vjezdové návěstidlo (elektrické){}Svítí zeleně do té doby, kdy v následujícím úseku trati je alespoň jedno další svítící zeleně. Jinak svítí červeně STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Výjezdové návěstidlo (elektrické){}Chová se stejně jako obyčejné, ale je nezbytné nastavit správnou barvu vjezdových a kombinovaných pre-signálů STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinované návěstidlo (elektrické){}Kombinované návěstidlo slouží zároveň jako vjezdové a výjezdové. Tím je možné postavit velké "řetězce" návěstidel STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Dokonalejší (PBS) návěstidlo (elektrické){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Dokonalejší návěstidla se dají projet zezadu STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Dokonalejší (PBS) jednosměrné návěstidlo (elektrické){}Dokonalejší návěstidlo umožňuje vjet několika vlakům najednou do stejného úseku trati, pokud jsou schopny rezervovat si cestu až do bezpečného místa na zastavení. Jednosměrná návěstidla se nedají projet zezadu STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Přeměna návěstidel{}Když je přeměna zapnuta, návěstidlo se změní kliknutím. Kliknutím s Ctrl se přepne mezi variantami návěstidla STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Rozestup při stavbě návěstidel tažením STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Snížit rozestup mezi návěstidly STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zvýšit rozestup mezi návěstidly # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Zvolit železniční most STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Zvolit silniční most STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Výběr mostů - staví se kliknutím na obrázek mostu STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Zavěšený, ocelový STR_BRIDGE_NAME_GIRDER_STEEL :Trámový, ocelový STR_BRIDGE_NAME_CANTILEVER_STEEL :Konzolový, ocelový STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Zavěšený, betonový STR_BRIDGE_NAME_WOODEN :Dřevěný STR_BRIDGE_NAME_CONCRETE :Betonový STR_BRIDGE_NAME_TUBULAR_STEEL :Potrubní, ocelový STR_BRIDGE_TUBULAR_SILICON :Potrubní, křemíkový # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Výstavba silnic STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Výstavba tramvajové tratě STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Postavit silnici. Pomocí Ctrl přehodíš režim stavba/odstraňování. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Položit koleje pro tramvaj. Pomocí Ctrl přehodíš režim stavba/odstraňování. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Postavit úsek silnice v libovolném směru. Pomocí Ctrl přehodíš režim stavba/odstraňování. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Položit koleje pro tramvaj v libovolném směru. Pomocí Ctrl přehodíš režim stavba/odstraňování. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postavit garáž (pro nákup a servis vozidel). Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Vystavět tramvajové depo (na kupování a servis tramvají). Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Postavit stanici autobusů. Pomocí Ctrl ji připojíš k jiné. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Postavit stanici tramvaje pro cestující. Pomocí Ctrl ji připojíš k jiné. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Postavit nákladovou rampu. Pomocí Ctrl ji připojíš k jiné. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Postavit nákladní stanici tramvají. S Ctrl ji připojíš k jiné. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Stavět nebo nestavět jednosměrné silnice STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Postavit silniční most. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Postavit tramvajový most. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Postavit silniční tunel. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Postavit tramvajový tunel. Stisknutý Shift pro zobrazení odhadu ceny STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Stavět nebo bourat silnici nebo zastávku STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Přepínání mezi výstavbou a bouráním tramvajové tratě # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orientace garáže STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Výběr orientace garáže STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orientace tramvajového depa STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Zvol směr tramvajového depa # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientace autobusové zastávky STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Zvolit orientaci autobusové zastávky STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientace nákladové rampy STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Zvolit orientaci nákladové rampy STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientace tramvajové stanice pro cestující STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vyber směr tramvajové stanice pro cestující STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orientace nákladní tramvajové stanice STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vyber směr nákladní tramvajové stanice # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Výstavba vodních cest STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vodní kanály STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Vytvořit průplav. Stisknutý Shift pro zobrazení odhadu ceny STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Stavět zdymadlo. Stisknutý Shift pro zobrazení odhadu ceny STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Postavit lodní depo (na nákup a servis lodí). Stisknutý Shift pro zobrazení odhadu ceny STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Postavit přístavní molo. Pomocí Ctrl ho připojíš k jinému. Stisknutý Shift pro zobrazení odhadu ceny STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Umístit bójku použitelnou pro navádění. Stisknutý Shift pro zobrazení odhadu ceny STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Postavit akvadukt. Stisknutý Shift pro zobrazení odhadu ceny STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Vytvořit vodní plochu.{}Pokud není držen Ctrl, vytvoří se na úrovni moře průplav; v opačném případě se zaplaví ostatní dílky STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Vytvořit řeky # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orientace lodního depa STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Zvolit orientaci lodního depa # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Přístav # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Letiště STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Postavit letiště. Pomocí Ctrl ho připojíš k jinému. Stisknutý Shift pro zobrazení odhadu ceny # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Výběr letiště STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Zvol velikost a typ letiště STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Třída letiště STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Layout {NUM} STR_AIRPORT_SMALL :Malé STR_AIRPORT_CITY :Městské STR_AIRPORT_METRO :Metropolitní STR_AIRPORT_INTERNATIONAL :Mezinárodní STR_AIRPORT_COMMUTER :Příměstské STR_AIRPORT_INTERCONTINENTAL :Mezikontinentální STR_AIRPORT_HELIPORT :Klasické STR_AIRPORT_HELIDEPOT :Servisní STR_AIRPORT_HELISTATION :Stanice STR_AIRPORT_CLASS_SMALL :Malá letiště STR_AIRPORT_CLASS_LARGE :Velká letiště STR_AIRPORT_CLASS_HUB :Hlavní letiště STR_AIRPORT_CLASS_HELIPORTS :Letiště pro vrtulníky STR_STATION_BUILD_NOISE :{BLACK}Vytvářený hluk: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Úpravy krajiny STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Snížit roh země. Tažení sníží první vybraný roh a vybranou oblast na jeho novou výšku. Ctrl vybírá diagonální oblast. Stisknutý Shift pro zobrazení odhadu ceny STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Zvýšit roh země. Tažení zvyšuje první vybraný roh a vybranou oblast na jeho novou výšku. Ctrl vybírá diagonální oblast. Stisknutý Shift pro zobrazení odhadu ceny STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Srovnat terén na výšku prvního vybraného rohu. Ctrl vybírá diagonální oblast. Stisknutý Shift pro zobrazení odhadu ceny STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Zakoupit pozemek pro budoucí užití. Stisknutý Shift pro zobrazení odhadu ceny # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Výběr objektu STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vyberte objekt, který se má postavit. Stisknutý Shift pro zobrazení odhadu ceny STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vyberte třídu objektu, který chcete postavit STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Náhled objektu STR_OBJECT_BUILD_SIZE :{BLACK}Velikost: {GOLD}{NUM}{NBSP}x{NBSP}{NUM} STR_OBJECT_CLASS_LTHS :Majáky STR_OBJECT_CLASS_TRNS :Vysílače # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Stromy STR_PLANT_TREE_TOOLTIP :{BLACK}Zvol druh stromu na vysazení. Pokud se na políčku už nějaký strom nachází, přidá se k němu několik různých druhů bez ohledu na výběr druhu STR_TREES_RANDOM_TYPE :{BLACK}Různé stromy STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umístit nahodné stromy. Stisknutý Shift pro zobrazení odhadu ceny STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Náhodné stromy STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Umístit stromy náhodně po krajině # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generovat zemi STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Umístit kamenitá území po mapě STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Vytvořit pouštní oblast{}S přidrženým CTRL ji odstraníš STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Zvětšit oblast země pro snížení/zvýšení STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Zmenšit oblast země pro snížení/zvýšení STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generovat náhodnou zemi STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Vytvořit nový scénář STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Smazat krajinu STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Odstranit z mapy všechny objekty vlastněné společností STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Smazat krajinu STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Opravdu chceš odstranit všechny objekty vlastněné společností? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Generování měst STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nové město STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Založit nové město. Stisknutý Shift pro zobrazení odhadu ceny STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Náhodné město STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Vybuduj město na náhodné pozici STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Hodně náhodných měst STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Pokryje krajinu mnoha náhodnými městy STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Název města: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Zadej název města STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klikni k zadání názvu města STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Náhodný název STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generovat nový náhodný název STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Velikost města: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Malé STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Středni STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Velké STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Náhodná STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Zvolte velikost města STR_FOUND_TOWN_CITY :{BLACK}Velkoměsto STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Velkoměsta rostou rychleji než běžná města. V závislosti na nastavení jsou při založení větší STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Silniční síť města: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Zvolte rozvržení silniční sítě v tomto městě STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Původní STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Lepší silnice STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Mřížka 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Mřížka 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Náhodná # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Investovat do průmyslu STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vyber si vhodnou továrnu ze seznamu STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Hodně náhodného průmyslu STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pokryje krajinu náhodným průmyslem STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cena: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Hledat STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Postavit STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Financovat # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Průmyslový řetěz pro průmysl {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Průmyslový řetěz pro náklad {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Produkující průmysl STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Zpracovávající průmysl STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Domy STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikněte na průmysl, abyste vyděle jeho dodejce a odběratele STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikněte na náklad, abyste viděli jeho producenty a spotřebitele STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Zobrazit řetězec STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Zobrazit průmysl produkující nebo příjmající surovinu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Odkaz na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP.nom :{BLACK}Odkaz na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP.gen :{BLACK}Odkazu na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP.dat :{BLACK}Odkazu na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP.acc :{BLACK}Odkaz na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP.loc :{BLACK}Odkazu na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP.ins :{BLACK}Odkazem na malou mapu STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Vyber zobrazený průmysl také na minimapě STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vyber náklad STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vyber náklad který chceš zobrazit STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Vyber průmysl STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vyber průmysl který chceš zobrazit # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informace o uzemí STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cena za vyčištění: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cena za vyčištění: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Příjem za odklizení: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Vlastník: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Majitel silnice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Majitel tratě: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Majitel tratě: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Místní správa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nic STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Souřadnice: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Postaveno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Třída stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Druh stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Druh letiště: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Jméno letiště: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Název dlaždice letiště:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Přijímané zboží: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rychlostní omezení tratě: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamení STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Hrbolatá země STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Prázdná země STR_LAI_CLEAR_DESCRIPTION_GRASS :Travnatá země STR_LAI_CLEAR_DESCRIPTION_FIELDS :Pole STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zasněžená země STR_LAI_CLEAR_DESCRIPTION_DESERT :Poušť STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} trať STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} trať s obyčejným návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} trať s vjezdovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} trať s výjezdovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} trať s kombinovaným návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} trať s dokonalejším (PBS) návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} trať s dokonalejším (PBS) jednosměrným návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} trať s obyčejným a vjezdovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} trať s obyčejným a odjezdovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} trať s obyčejným a kombinovaným návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} trať s obyčejným a cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} trať s obyčejným a jednosměrným cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} trať s vjezdovým a odjezdovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} trať s vjezdovým a kombinovaným návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} trať s vjezdovým a cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} trať s vjezdovým a jednosměrným cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} trať s výjezdovým a kombinovaným návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} trať s výjezdovým a cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} trať s výjezdovým a jednosměrným cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} trať s kombinovaným a cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} trať s kombinovaným a jednosměrným cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} trať s cestovým a jednosměrným cestovým návěstidlem STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} železniční depo STR_LAI_ROAD_DESCRIPTION_ROAD :Silnice STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Silnice s pouličním osvětlením STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Silnice s alejí STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Garáž STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Železniční přejezd STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tramvaj # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (ve výstavbě) STR_LAI_TREE_NAME_TREES :Stromy STR_LAI_TREE_NAME_RAINFOREST :Tropický prales STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusy STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Nádraží STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangár STR_LAI_STATION_DESCRIPTION_AIRPORT :Letiště STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Nákladová rampa STR_LAI_STATION_DESCRIPTION_BUS_STATION :Autobusová zastávka STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Dok STR_LAI_STATION_DESCRIPTION_BUOY :Bójka STR_LAI_STATION_DESCRIPTION_WAYPOINT :Směrování STR_LAI_WATER_DESCRIPTION_WATER :Voda STR_LAI_WATER_DESCRIPTION_CANAL :Průplav STR_LAI_WATER_DESCRIPTION_LOCK :Zdymadlo STR_LAI_WATER_DESCRIPTION_RIVER :Řeka STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Pobřeží nebo břeh STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Lodní depo # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Železniční tunel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Silniční tunel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ocelový zavěšený železniční most STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ocelový trámový železniční most STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ocelový konzolový železniční most STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Zpevněný betonový zavěšený železniční most STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Dřevěný železniční most STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betonový železniční most STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Potrubní železniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ocelový zavěšený silniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ocelový trámový silniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ocelový konzolový silniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Zpevněný betonový zavěšený silniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Dřevěný silniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonový silniční most STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Potrubní silniční most STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvadukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Vysílač STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Maják STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Ředitelství společnosti STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Půda vlastněna společností # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Tým OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru STR_SAVELOAD_LOAD_CAPTION :{WHITE}Otevřít hru STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Uložit mapu STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Otevřít mapu STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Nahrát výškovou mapu STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Uložit výškovou mapu STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliknutím sem se přesuneš do současného výchozího ukládacího adresáře STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} voln{P ý é ých} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Seznam jednotek, adresářů a uložených her STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Zvolené jméno uložené hry STR_SAVELOAD_DELETE_BUTTON :{BLACK}Smazat STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Smazat označenou uloženou hru STR_SAVELOAD_SAVE_BUTTON :{BLACK}Uložit STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Uložit současnou hru se zvoleným jménem STR_SAVELOAD_LOAD_BUTTON :{BLACK}Nahrát STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Rozehrát vybranou hru STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Vlastnosti hry STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Není dostupná žádná informace STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Grafiky: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Zadej jméno pro uloženou hru # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Tvorba krajiny STR_MAPGEN_MAPSIZE :{BLACK}Velikost mapy: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vybrat velikost mapy ve čtvercích. Počet dostupných čtverců bude o neco nižší STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Množství měst: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Množství průmyslu: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Výška sněžné čáry: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Zvýšit sněžnou čáru o jednu úroveň STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Snížit sněžnou čáru o jednu úroveň STR_MAPGEN_RANDOM_SEED :{BLACK}Náhodné číslo: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Zde můžeš zadat seed STR_MAPGEN_RANDOM :{BLACK}Nové číslo STR_MAPGEN_RANDOM_HELP :{BLACK}Vytvořit nový seed (číslo) pro generátor terénu STR_MAPGEN_LAND_GENERATOR :{BLACK}Generátor krajiny: STR_MAPGEN_TREE_PLACER :{BLACK}Sázení stromů: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ krajiny: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Četnost jezer: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Řeky: STR_MAPGEN_SMOOTHNESS :{BLACK}Členitost krajiny: STR_MAPGEN_VARIETY :{BLACK}Rozmanitost terénu: STR_MAPGEN_GENERATE :{WHITE}Vytvořit # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Okraje mapy: STR_MAPGEN_NORTHWEST :{BLACK}Severozápad STR_MAPGEN_NORTHEAST :{BLACK}Severovýchod STR_MAPGEN_SOUTHEAST :{BLACK}Jihovýchod STR_MAPGEN_SOUTHWEST :{BLACK}Jihozápad STR_MAPGEN_BORDER_FREEFORM :{BLACK}terén STR_MAPGEN_BORDER_WATER :{BLACK}voda STR_MAPGEN_BORDER_RANDOM :{BLACK}náhodně STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}náhodně STR_MAPGEN_BORDER_MANUAL :{BLACK}vlastní STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Otočení výškové mapy: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Jméno výškové mapy: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Velikost: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Zadej náhodné číslo STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Změnit výšku sněžne čáry STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Změnit počáteční rok # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Typ krajiny STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Plochá krajina STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Vytvořit plochou krajinu STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Náhodná krajina STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Výška ploché země: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Snížit výšku ploché země o jednu úroveň STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Zvednout výšku ploché země o jednu úroveň STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Změnit výšku ploché země # Map generation progress STR_GENERATION_WORLD :{WHITE}Vytvářím krajinu... STR_GENERATION_ABORT :{BLACK}Přerušit STR_GENERATION_ABORT_CAPTION :{WHITE}Přerušit generování krajiny STR_GENERATION_ABORT_MESSAGE :{YELLOW}Opravdu chceš přerušit tento proces? STR_GENERATION_PROGRESS :{WHITE}Z{NBSP}{NUM}{NBSP}% hotovo STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Tvorba krajiny STR_GENERATION_RIVER_GENERATION :{BLACK}Generování řek STR_GENERATION_TREE_GENERATION :{BLACK}Výsadba stromů STR_GENERATION_OBJECT_GENERATION :{BLACK}Výstavba nepřesunutelných objektů STR_GENERATION_CLEARING_TILES :{BLACK}Tvorba členitého a kamenitého území STR_GENERATION_SETTINGUP_GAME :{BLACK}Nastavování hry STR_GENERATION_PREPARING_TILELOOP :{BLACK}Spouštění tile-loopu (cyklus na dílcích mapy) STR_GENERATION_PREPARING_SCRIPT :{BLACK}Rozbíhání skriptu STR_GENERATION_PREPARING_GAME :{BLACK}Připravování hry # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Nastavení grafických souborů STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Podrobné informace o grafikách STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktivní grafiky STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Neaktivní grafiky STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Vybrat předvolbu: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtrovat podle: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Nahrát vybranou předvolbu STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Uložit předvolbu STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Uložit tento seznam jako předvolbu STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Zadej název předvolby STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Smazat předvolbu STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Odstranit vybranou předvolbu STR_NEWGRF_SETTINGS_ADD :{BLACK}Přidat STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Přidat vybranou grafiku do tvého seznamu STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Načíst soubory STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Aktualizovat seznam dostupných NewGRF souborů STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Odebrat STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Odstranit označenou grafiku ze seznamu STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Nahoru STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Posunout označenou grafiku nahoru STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Dolů STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Posunout označenou grafiku dolů STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Seznam NewGRF souborů, které jsou nainstalovány. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nastavit parametry STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Zobrazit parametry STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Přepnout paletu STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}U vybrané grafiky přepne paletu.{}Je to užitečné, když se ti ve hře zobrazuje růžově STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Potvrdit změny STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Hledat chybějící obsah on-line STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Pokusit se zjistit, jestli se dá chybějící obsah najít on-line STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Jméno souboru: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}ID GRF: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Verze: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Minimální kompatibilní verze: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametry: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Informace nejsou k dispozici STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nenalezen odpovídající soubor STR_NEWGRF_SETTINGS_DISABLED :{RED}Vypnuto STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Není kompatibilní s touto verzí OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Úprava nastavení parametrů STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zavřít STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reset STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Nastav všechny parametry na jejich výchozí hodnotu STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametr {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Počet prametrů: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Zkoumání - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Rodič STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Vyšetřit objekt patřící do kontextu rodiče STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} na {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Druh kolejí STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Hodnota NewGRF proměnné 60+x (šestnáctkově) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Zarovávání spritu {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Další sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Jít na další normální sprite (s grafikou), přičemž se přeskakují pseudo-/barvící/znakové sprity a při dosažení konce se jde zase na začátek STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Jít na sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Jít na daný sprite. Negrafické (pseudo-) sprity se přeskakují STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Předchozí sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jít na předchozí normální sprite (s grafikou), přičemž se přeskakují pseudo-/barvící/znakové sprity a při dosažení začátku se jde na konec STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Zobrazení vybraného spritu. Posun se při jeho vykreslení neuvažoval STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Posouvání spritu změnou souřadnic X a Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Posun X: {NUM}, posun Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vybrat sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Klikni na sprite kdekoli na obrazovce STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Jít na sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Varování: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Chyba: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Závažná chyba: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Vyskytla se kritická chyba v NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} nebude fungovat s verzí TTDPatche, kterou OpenTTD hlásí STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} je pro TTD verzi {STRING} STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} je navržen pro práci s {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Neplatný parametr pro {1:STRING}: parametr {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} musí být nahráván před {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} musí být nahráván po {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} potřebuje verzi OpenTTD {STRING} nebo vyšší STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :grafika, která se měla přeložit STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Je nahráno příliš mnoho grafik STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Nahrání {1:STRING} jako statické grafiky spolu s {STRING} může způsobit chybu synchronizace STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Neočekávaný sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Neznámá Akce 0 vlastnost {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Pokus o použití neplatného ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} obsahuje poškozený sprite. Všechny takové se zobrazí jako červený otazník (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Obsahuje vícero Akce 8 záznamů (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Čtení konce pseudo-spritu (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Právě používanému základnímu grafickému setu chybí obrázky.{}Prosím, updatujte ho STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Aktuálnímu grafickému setu chybí nějaké části.{}Aktualizuj prosím grafický set.{}Pokud hraješ{YELLOW}vývojovou verzi OpenTTD{WHITE}, možná potřebuješ {YELLOW}vývojovou verzi základních grafik{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Požadované zdroje GRF nejsou dostupné (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} byla vypnuta {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neplatný/neznámý sprite layout formát (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Varování! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Právě se chystáš změnit nastavení za běžící hry. To může to shodit OpenTTD nebo způsobit zaseknutí hry. Neupozorňujte na to jako na bug.{}Jste si tím opravdu jisti? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nelze přidat soubor: duplicitní GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Odpovídající soubor nebyl nalezen (načetl se kompatibilní GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nemůžu přidat soubor. Dosažen limit NewGRF souborů STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilní GRF se načetly místo chybějících STR_NEWGRF_DISABLED_WARNING :{WHITE}Chybějící grafiky byly vypnuty STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Chybějící grafické soubory STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Spuštění hry může shodit OpenTTD. Nehlaš chybu kvůli pádům způsobeným touto akcí.{}Opravdu chceš rozjet hru? # NewGRF status STR_NEWGRF_LIST_NONE :bez STR_NEWGRF_LIST_ALL_FOUND :všechny nalezeny STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}jsou dostupné kompatibilní STR_NEWGRF_LIST_MISSING :{RED}některé chybějí # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Chování grafiky '{0:STRING}' by mohlo způsobit desynchronizaci a/nebo pád hry STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Změnil se stav lokomotivy '{1:ENGINE}', když nebyla v depu STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Změnilo délku vozidla '{1:ENGINE}', když nebylo v depu STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak '{VEHICLE}' patřící '{COMPANY}' nemá platnou délku. Pravděpodobně to způsobila nějaká grafika. Hra se může desynchronizovat nebo spadnout STR_NEWGRF_BUGGY :{WHITE}Grafika '{0:STRING}' poskytuje neplatné informace STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informace o nákladu/možnosti přestavby pro '{1:ENGINE}' se po nákupu změnily. To může způsobit problémy při automatické výměně vozidel STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Grafika '{1:STRING}' způsobila nekonečnou smyčku v callbacku produkce průmyslu STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Funkce {1:HEX} vrátila neznámý / neplatný výsledek {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} jednot{P ka ky ek} STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Prohledávání grafik STR_NEWGRF_SCAN_MESSAGE :{BLACK}Prohledávám grafiky. Toto může chvíli trvat... STR_NEWGRF_SCAN_STATUS :{BLACK}Prohledáno {NUM} grafik z {NUM} STR_NEWGRF_SCAN_ARCHIVES :Hledám archivy # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Seznam popisků - {COMMA} popis{P ek ky ků} STR_SIGN_LIST_MATCH_CASE :{BLACK}Shoda STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Přepne rozlišování velikosti písmen při filtrování popisků # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Upravit text popisku STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Na další návěstidlo STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Na předešlé návěstidlo STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Zadej název pro značku # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Města STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nic - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Jména měst - pohled na město zaměříš kliknutím na jeho jméno. Při stisknutém Ctrl otevřeš nový pohled STR_TOWN_POPULATION :{BLACK}Populace světa: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (velkoměsto) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populace: {ORANGE}{COMMA}{BLACK} Domů: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Cestujících minulý měsíc: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošta za minulý měsíc: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Množství doručeného nákladu potřebného pro rozvoj města: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Je potřeba {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vyžadováno v zimě STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} doručeno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ještě požadováno) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (doručeno) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Město se rozrůstá každých {ORANGE}{COMMA}{BLACK} dní STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Město se rozrůstá každý {ORANGE}{COMMA}{BLACK} den (financováno) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Město se {RED}nerozrůstá{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Hlukový limit ve městě: {ORANGE}{COMMA}{BLACK} max.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na město. Ctrl+Klik otevře nový pohled STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Místní správa STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Ukázat informace o místní správě STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Přejmenovat město STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Rozšířit STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Zvetšit velikost města STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Smaž STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Smazat celé toto město STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Přejmenovat město # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Místní správa města {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Hodnocení společností: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Možné činnosti: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Seznam všech věcí, které lze dělat v tomto městě - označ činnost pro více detailů: STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Provést STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Proveď označenou činnost ze seznamu STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Malá reklamní kampaň STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Střední reklamní kampaň STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Velká reklamní kampan STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Dotovat rekonstrukci místních silnic STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Postavit sochu majitele společnosti STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Dotovat nové budovy STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Koupit výhradní právo k přepravě STR_LOCAL_AUTHORITY_ACTION_BRIBE :Podplatit místní správu STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Zahájit malou reklamní kampaň, která přiláká více cestujících a nákladu.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Zahájit středně velkou reklamní kampaň, která přiláká více cestujících a nákladu.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Zahájit velkou reklamní kampaň, která přiláká více cestujících a nákladu.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Dotovat rekonstrukci místní silniční sítě. Způsobí problémy v dopravě po dobu 6 měsíců.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Postavit sochu vlastníka jako poctu tvé společnosti.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Dotovat stavbu nových obchodních budov ve městě.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Koupit roční výhradní práva k přepravě zboží z tohoto města po dobu jednoho roku. Místní správa dovolí cestujícím a nákladu používat pouze stanice tvé společnosti.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podplatit místní správu pro zvýšení hodnocení společnosti. Riziko trestu v případě přistižení.{}Cena: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Cíle STR_GOALS_GLOBAL_TITLE :{BLACK}Globální cíle: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Žádné - STR_GOALS_COMPANY_TITLE :{BLACK}Cíle společnosti: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cíl pro zaměření pohledu na průmysl/město/pole. Ctrl+Klik otevře nové okno s pohledem na průmyslu/městu/poli. # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Dotaz STR_GOAL_QUESTION_CAPTION_INFORMATION :Informace STR_GOAL_QUESTION_CAPTION_WARNING :Varování STR_GOAL_QUESTION_CAPTION_ERROR :Chyba ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Zrušit STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ne STR_GOAL_QUESTION_BUTTON_YES :Ano STR_GOAL_QUESTION_BUTTON_DECLINE :Odmítnout STR_GOAL_QUESTION_BUTTON_ACCEPT :Příjmout STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorovat STR_GOAL_QUESTION_BUTTON_RETRY :Zkusit znovu STR_GOAL_QUESTION_BUTTON_PREVIOUS :Předchozí STR_GOAL_QUESTION_BUTTON_NEXT :Další STR_GOAL_QUESTION_BUTTON_STOP :Zastavit STR_GOAL_QUESTION_BUTTON_START :Spustit STR_GOAL_QUESTION_BUTTON_GO :Jdi STR_GOAL_QUESTION_BUTTON_CONTINUE :Pokračovat STR_GOAL_QUESTION_BUTTON_RESTART :Restartovat STR_GOAL_QUESTION_BUTTON_POSTPONE :Odložit STR_GOAL_QUESTION_BUTTON_SURRENDER :Vzdát se STR_GOAL_QUESTION_BUTTON_CLOSE :Zavřít # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Dotace STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Nabídnuté dotace pro službu: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING.big} z{NBSP}{STRING.gen} do {STRING.gen}{YELLOW} (do {DATE_SHORT.gen}) STR_SUBSIDIES_NONE :{ORANGE}- Nic - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Již přiznané dotace: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING.big} z{NBSP}{STRING.gen} do {STRING.gen}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT.gen}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknutím na dotaci zaměříš pohled na průmysl/město. Při stisknutém Ctrl otevřeš nový pohled # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Jména stanic - pohled na stanici zaměříš kliknutím na její jméno. Při stisknutém Ctrl otevřeš nový pohled STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}S přidrženým Ctrl můžeš označit více položek STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stanic{P e e ""} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nic - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Označit všechny druhy stanic STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Označit všechny druhy komodit (včetne žádného čekajícího nákladu) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nečeká žádná komodita jakéhokoli druhu # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čeká tu: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} z {NBSP}{STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Přijímá STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Ukázat seznam přijímaného nákladu STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Přijímá: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tato stanice má v tomto městě výhradní přepravní práva. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Společnost {YELLOW}{COMPANY}{BLACK} koupila v tomto městě výhradní přepravní práva. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hodnocení STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ukázat hodnocení společností STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Místní hodnocení dopravní služby: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Příšerné STR_CARGO_RATING_VERY_POOR :Velmi slabé STR_CARGO_RATING_POOR :Slabé STR_CARGO_RATING_MEDIOCRE :Průměrné STR_CARGO_RATING_GOOD :Dobré STR_CARGO_RATING_VERY_GOOD :Velmi dobré STR_CARGO_RATING_EXCELLENT :Vynikající STR_CARGO_RATING_OUTSTANDING :Úžasné ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na stanici. Ctrl+Klik otevře nový pohled STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Přejmenovat stanici STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Zobrazit všechny vlaky, které mají tuto stanici v jízdním řádu STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Zobrazit všechna silniční vozidla, která mají tuto stanici v jízdním řádu STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Zobrazit všechna letadla, která mají tuto stanici v jízdním řádu STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Zobrazit všechny lodě, které mají tuto stanici v jízdním řádu STR_STATION_VIEW_RENAME_STATION_CAPTION :Přejmenovat stanici STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Uzavřít letiště STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Zabránit letadlu od přistání na tomto letišti # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na směrování. Ctrl+Klik otevře nový pohled STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Přejmenovat směrování STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na bójku. Ctrl+Klik otevře nový pohled STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Přejmenovat bójku STR_EDIT_WAYPOINT_NAME :{WHITE}Přejmenovat směrování # Finances window STR_FINANCES_CAPTION :{WHITE}Finance - {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Příjmy a výdaje STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Výstavba STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nové dopravní prostředky STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Provoz vlaků STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Provoz silničních vozidel STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Provoz letadel STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Provoz lodí STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Údržba STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Příjmy vlaků STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Příjmy silničních vozidel STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Příjmy letadel STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Příjmy lodí STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Úroky z půjček STR_FINANCES_SECTION_OTHER :{GOLD}Další STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Celkem: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Stav na účtu STR_FINANCES_LOAN_TITLE :{WHITE}Půjčka STR_FINANCES_MAX_LOAN :{WHITE}Max. půjčka: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Půjčit {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Půjčit si více STR_FINANCES_REPAY_BUTTON :{BLACK}Vrátit {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Splatit část dluhu STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Prezident) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Založeno: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Barevné schéma: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vozidla: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} vlak{P "" y ů} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} silniční{P "" "" ch} vozid{P lo la el} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} letad{P lo la el} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} lo{P ď dě dí} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nic STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Hodnota společnosti: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% vlastněno {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktura: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} železniční oblasti STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} silniční oblasti STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vodní oblasti STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} staniční oblasti STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} letiště STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Žádná STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Ředitelství STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Postavit sídlo společnosti STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Ředitelství STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Zobrazit sídlo společnosti STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Přesídlit STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo společnosti můžeš vystavit jinde za 1{NBSP}% její hodnoty. Stisknutý Shift pro zobrazení odhadu ceny STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaily STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobrazit detaily a souhrny o infrastruktuře STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nový obličej STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Zvol nový obličej prezidenta STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Barva STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Zvol nový nátěr vozidel společnosti STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Společnost STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Změnit jméno společnosti STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Prezident STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Změnit jméno prezidenta STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Koupit 25% podíl ve společnosti STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Prodat 25% podíl ve společnosti STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Koupit 25% podíl v této společnosti. Stisknutý Shift+Kliknutí pro zobrazení odhadované ceny STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Prodat 25% podíl v této společnosti. Stisknutý Shift+Kliknutí pro zobrazení odhadované ceny STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Jméno společnosti STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Jméno prezidenta STR_BUY_COMPANY_MESSAGE :{WHITE}Hledáme společnost, která převezme naši společnost.{}{}Chcete zakoupit {COMPANY} za {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktura {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Železniční oblasti: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Semafory STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Silniční oblasti: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Silnice STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvajové koleje STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vodní oblasti: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Průplavy STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stanice: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Staniční oblasti STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letiště STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/rok ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/rok # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Průmysl STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nic - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% přepraveno) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% přepraveno) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Název průmyslu - pohled na něj zaměříš kliknutím na jeho jméno. Při stisknutém Ctrl otevřeš nový pohled # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkce minulý měsíc: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% přepraveno) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na průmysl. Ctrl+Klik otevře nový pohled STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produkce: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Náklad čekající na zpracování: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Změnit produkci (násobky 8, až do 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Změna velikosti produkce (procentuelně, do 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} vlak{P "" y ů} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} silniční{P "" "" ch} vozid{P lo la el} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} lo{P ď dě dí} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} letad{P lo la el} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vlaky - klepni na vlak pro informace STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Silniční vozidla - stiskni vozidlo pro informace STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Lodě - informace získáš klepnutím na jméno lodi STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Letadlo - klepni na letadlo pro informace STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Zisk tento rok: {CURRENCY_LONG} (minulý rok: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Dostupné vlaky STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Dostupná vozidla STR_VEHICLE_LIST_AVAILABLE_SHIPS :Dostupné lodě STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Dostupná letadla STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Ukázat seznam dostupných variant pro tento typ vozidla STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Upravit seznam STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Poslat příkazy všem vozidlům v tomto seznamu STR_VEHICLE_LIST_REPLACE_VEHICLES :Vyměňování vozidel STR_VEHICLE_LIST_SEND_FOR_SERVICING :Provést údržbu STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Poslat do depa STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Poslat do depa STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Poslat do depa STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Poslat do hangáru STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Kliknutím sem se zastaví všechna vozidla v seznamu STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Kliknutím sem se rozjedou všechna vozidla v seznamu STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Sdílené příkazy {COMMA} vozid{P lo la el} # Group window STR_GROUP_ALL_TRAINS :Všechny vlaky STR_GROUP_ALL_ROAD_VEHICLES :Všechna silniční vozidla STR_GROUP_ALL_SHIPS :Všechny lodě STR_GROUP_ALL_AIRCRAFTS :Všechna letadla STR_GROUP_DEFAULT_TRAINS :Nezařazené vlaky STR_GROUP_DEFAULT_ROAD_VEHICLES :Nezařazená silniční vozidla STR_GROUP_DEFAULT_SHIPS :Nezařazené lodě STR_GROUP_DEFAULT_AIRCRAFTS :Nezařazená letadla STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Skupiny - Kliknutím na skupinu se zobrazí seznam vozidel ve skupině STR_GROUP_CREATE_TOOLTIP :{BLACK}Kliknutím vytvoříš skupinu STR_GROUP_DELETE_TOOLTIP :{BLACK}Vymazat vybranou skupinu STR_GROUP_RENAME_TOOLTIP :{BLACK}Přejmenovat vybranou skupinu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Kliknutím nebude na tuto skupinu mít vliv automatická výměna vozidel STR_GROUP_ADD_SHARED_VEHICLE :Přidat sdílená vozidla STR_GROUP_REMOVE_ALL_VEHICLES :Odstranit všechna vozidla STR_GROUP_RENAME_CAPTION :{BLACK}Přejmenovat skupinu # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nové lokomotivy a vagony STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nové elektrické lokomotivy a vagony STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nové lokomotivy a vagony pro monorail STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nové lokomotivy a vagony Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nová železniční vozidla STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nová silniční vozidla STR_BUY_VEHICLE_SHIP_CAPTION :Nové lodě STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nové letadlo STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Hmotnost: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Výkon: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Rychlost: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Rychlost na moři: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Rychlost v průplavech a řekách: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Provozní cena: {GOLD}{CURRENCY_LONG} ročně STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapacita: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(lze přestavět) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Vyvinuto: {GOLD}{NUM}{BLACK} Životnost: {GOLD}{COMMA} {P rok roky let} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Max. spolehlivost: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cena: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Hmotnost: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Rychlost: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapacita: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Poháněné vagony: {GOLD}+{POWER}{BLACK} Hmotnost: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Refitovatelné na: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Všechny druhy nákladu STR_PURCHASE_INFO_ALL_BUT :Všechny kromě {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. tažná síla: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Dosah: {GOLD}{COMMA} polí STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Seznam vlaků - pro informace klikni na název vlaku STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Seznam silničních vozidel - klikni na vozidlo pro informace STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Seznam lodí - informace získáš kliknutím na jméno lodi STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Seznam letadel - klikni na letadlo pro informace STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Koupit vozidlo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Koupit vozidlo STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Koupit loď STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Koupit letadlo STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kup označený vagon/lokomotivu. Stisknutý Shift pro zobrazení odhadu ceny STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Koupit označené vozidlo. Stisknutý Shift pro zobrazení odhadu ceny STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Koupit označenou loď. Stisknutý Shift pro zobrazení odhadu ceny STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Koupit označené letadlo. Stisknutý Shift pro zobrazení odhadu ceny STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Přejmenovat STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Přejmenovat STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Přejmenovat STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Přejmenovat STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Přejmenovat typ vlaku STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Přejmenovat typ silničního vozidla STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Přejmenovat typ lodi STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Přejmenovat typ letadla STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Přejmenovat typ železničního vozidla STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Přejmenovat typ silničního vozidla STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Přejmenovat typ lodi STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Přejmenovat typ letadla # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Změnit název depa STR_DEPOT_RENAME_DEPOT_CAPTION :Přejmenovat depo STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vozid{P lo la el}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlaky - přetáhni vozidlo levým tlačítkem pro přidání, či odstranění z vlaku, pravým pro zobrazení info. Stiskni Ctrl a pravé pro info o kapacitě vlaku STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vozidla - klepni pravým na vozidlo pro informace STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Lodě - klepni pravým naloď pro informace STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Letadlo - klepni pravým na letadlo pro informace STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Přesuň sem vagon pro prodej STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Přesuň sem silniční vozidlo k prodeji STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Zde se dá loď prodat (přetáhnutím) STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Přesuň sem letadlo k prodeji STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Celý vlak prodáš lokomotivy na toto místo STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Prodat všechny vlaky v depu STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Prodat všechna silniční vozidla v depu STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Prodat všechny lodě v depu STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Prodat všechna letadla a vrtulníky v hangáru STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Nechat automaticky vyměňovat všechny vlaky přítomné v depu STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Nechat automaticky vyměňovat všechna silniční vozidla přítomné v depu STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Nechat automaticky vyměňovat všechny lodě přítomné v depu STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Nechat automaticky vyměňovat všechna letadla a vrtulníky přítomné v hangáru STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nová vozidla STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nová vozidla STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nové lodě STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nová letadla STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Koupit nový vagon/lokomotivu STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Koupit nové silniční vozidlo STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Koupit novou loď STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Koupit nové letadlo STR_DEPOT_CLONE_TRAIN :{BLACK}Klonovat vlak STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonovat vozidlo STR_DEPOT_CLONE_SHIP :{BLACK}Klonovat loď STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonovat letadlo STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Vytvoří se kopie vlaku se všemi vagony. Klepni na toto tlačítko a pak na vlak v nebo vně depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Vytvoří se kopie silničního vozidla. Klepni na toto tlačítko a pak na vozidlo v nebo vně depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadované ceny STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Vytvoří se kopie lodě. Klepni na toto tlačítko a pak na loď v nebo vně lodního depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Vytvoří se kopie letadla. Klepni na toto tlačítko a pak na letadlo v nebo vně hangáru. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na vlakové depo. Ctrl+Klik otevře nový pohled STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na garáž. Ctrl+Klik otevře nový pohled STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na lodní depo. Ctrl+Klik otevře nový pohled STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na hangár. Ctrl+Klik otevře nový pohled STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Ukázat seznam všech vlaků, které mají toto depo v jízdním řádu STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ukázat seznam všech silničních vozidel, které mají toto depo v jízdním řádu STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Ukázat seznam všech lodí, které mají toto depo v jízdním řádu STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Ukázat seznam všech letadel a vrtulníků, které mají jakýkoliv z hangaru na tomto letišti v letovém plánu STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Stiskni pro zastavení vlaků v depu STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Stiskni pro zastavení silničních vozidel v depu STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Stiskni pro zastavení lodí v depu STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Stiskni pro zastavení letadel a vrtulníků v hangáru STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Stiskni pro hromadný odjezd všech vlaků v depu STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Stiskni pro hromadný odjezd všech silničních vozidel v depu STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Stiskni pro hromadný odjezd všech lodí v depu STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Stiskni pro hromadný odlet všech letadel a vrtulníků v hangáru STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Chceš prodat všechna vozidla v depu. Jsi si jistý? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Zpráva od výrobce dopravních prostředků STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Právě jsme vyvinuli nov{G ý ou é é é é á} {STRING.acc}. Měl byste zájem o roční výhradní právo na používání tohoto prostředku, aby byl otestován před uvedením na trh? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}lokomotiva STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.dat : STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.acc :{G=f}lokomotivu STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}silniční vozidlo STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}letadlo STR_ENGINE_PREVIEW_SHIP :{G=f}loď STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}lokomotiva pro monorail STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.dat : STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.acc :{G=f}lokomotivu pro monorail STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}lokomotiva Maglev STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.dat : STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.acc :{G=f}lokomotivu Maglev STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Hmotnost: {WEIGHT_SHORT}{}Rychlost: {VELOCITY} Výkon: {POWER}{}Cena provozu: {CURRENCY_LONG} ročně{}Kapacita: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Váha: {WEIGHT_SHORT}{}Rychlost: {VELOCITY} Síla: {POWER} Maximální tažná síla: {6:FORCE}{}Provozní náklady: {4:CURRENCY_LONG}/rok{}Kapacita: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Cena provozu: {CURRENCY_LONG} ročně STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Kapacita: {CARGO_LONG}{}Cena provozu: {CURRENCY_LONG} ročně STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena {CURRENCY_LONG} Max. Rychlost: {VELOCITY} Dosah: {COMMA} polí{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena {CURRENCY_LONG} Max. Rychlost {VELOCITY} Dosah: {COMMA} polí{}Kapacita: {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Vyměňování {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Vlak STR_REPLACE_VEHICLE_ROAD_VEHICLE :Silniční vozidlo STR_REPLACE_VEHICLE_SHIP :Loď STR_REPLACE_VEHICLE_AIRCRAFT :Letadlo STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vyber typ lokomotivy na výměnu STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vyber typ nové lokomotivy, kterou chceš použít místo vybrané v levém seznamu STR_REPLACE_VEHICLES_START :{BLACK}Zapnout vyměňování STR_REPLACE_VEHICLES_NOW :Nahradit hned všechna vozidla STR_REPLACE_VEHICLES_WHEN_OLD :Nahradit pouze stará vozidla STR_REPLACE_HELP_START_BUTTON :{BLACK}Zmáčkni toto tlačítko, když chceš vyměňovat typ lokomotivy vybraný v levém seznamu lokomotivou vybranou v pravém seznamu STR_REPLACE_NOT_REPLACING :{BLACK}(nevyměňuje se) STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Není označeno žádné vozidlo STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} když je starý STR_REPLACE_VEHICLES_STOP :{BLACK}Vypnout vyměňování STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Zmáčkni toto tlačítko, když nechceš vyměňovat typ lokomotivy vybraný v levém seznamu STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Vyměňování: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Přepne mezi okny na výměnu lokomotiv a vagonů STR_REPLACE_ENGINES :lokomotivy STR_REPLACE_WAGONS :vagony STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolejí, pro které chceš měnit lokomotivy STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tady je zobrazeno, za jakou lokomotivu se ta v levém seznamu vyměňuje STR_REPLACE_RAIL_VEHICLES :Železniční lokomotivy STR_REPLACE_ELRAIL_VEHICLES :Elektrické lokomotivy STR_REPLACE_MONORAIL_VEHICLES :Lokomotivy pro monorail STR_REPLACE_MAGLEV_VEHICLES :Lokomotivy Maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Odebírání vagonů: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Funkce automatického vylepšování vlaků může udržovat stejnou délku vlaku odstraňovaním vagonů (od začátku vlaku), pokud by změna mašiny vlak prodloužila # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Vycentrovat pohled na vlak. Ctrl+Klik otevře nový pohled STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vycentrovat pohled na vozidlo. Ctrl+Klik otevře nový pohled STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Vycentrovat pohled na loď. Ctrl+Klik otevře nový pohled STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vycentrovat pohled na letadlo. Ctrl+Klik otevře nový pohled STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat vlak do depa. Ctrl+Klik pouze pro provedení oprav STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošli vozidlo do garáže. Ctrl+Klik pouze provede opravy STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat loď do doku STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat letadlo do hangáru STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Vytvoří se kopie vlaku se všemi vagony. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Vytvoří se kopie silničního vozidla. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Vytvoří se kopie lodě. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Vytvoří se kopie letadla. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Donuť vlak pokračovat bez čekání na povolení od semaforu STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Přestavět vlak pro převoz jiného typu nákladu STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Přestavět silniční vozidlo, aby mohlo vozit jiný druh nákladu STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Přestavět pro převážení jiného druhu nákladu STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Přestavět letadlo pro převážení jiného typu nákladu STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Otočit vlak STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Otoč vozidlo STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Ukázat příkazy vlaku. S Ctrl zobrazíš jízdní řád STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Ukázat příkazy vozidla. S Ctrl zobrazíš jízdní řád STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Ukázat příkazy lodi. S Ctrl zobrazíš jízdní řád STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Ukázat příkazy letadla. S Ctrl zobrazíš jízdní řád STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily vlaku STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Ukaž detaily silničního vozidla STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily lodi STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily letadla STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost vlaku - když sem klikneš, vlak se zastaví nebo rozjede. Když ještě podržíš Ctrl, pohled se posune na cílovou stanici STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost vozidla - klikni sem pro zastavení/rozjetí STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost plavidla - pro zastavení či rozjetí, klikni sem STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Činnost letadla - stiskni pro rozjetí/zastavení letadla # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakládá nebo vykládá STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Odjíždí STR_VEHICLE_STATUS_CRASHED :{RED}Nehoda! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Porucha STR_VEHICLE_STATUS_STOPPED :{RED}Zastaveno STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Zastavuje, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Bez proudu STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Čekám na volnou cestu STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Příliš daleko k příští destinaci STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Míří do {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Bez příkazů, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Míří do {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Míří do {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Údržba v {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Zastaveno STR_VEHICLE_COMMAND_STOPPED :{RED}Zastaveno STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Puštěno STR_VEHICLE_COMMAND_STARTED :{GREEN}Puštěno # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detaily) STR_VEHICLE_NAME_BUTTON :{BLACK}Jméno STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Pojmenovat vlak STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Pojmenovat silniční vozidlo STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Pojmenovat loď STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Pojmenovat letadlo STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Stáří: {LTBLUE}{STRING}{BLACK} Cena provozu: {LTBLUE}{CURRENCY_LONG} ročně # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} {P rok roky let} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P rok roky let} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY} {BLACK}Dosah: {LTBLUE}{COMMA} polí STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Hmotnost: {LTBLUE}{WEIGHT_SHORT} {BLACK}Výkon: {LTBLUE}{POWER}{BLACK} Max. rychlost: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Hmotnost: {LTBLUE}{WEIGHT_SHORT} {BLACK}Výkon: {LTBLUE}{POWER}{BLACK} Max. rychlost: {LTBLUE}{VELOCITY} {BLACK}Max. tažná síla: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Letošní zisk: {LTBLUE}{CURRENCY_LONG} (vloni: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Spolehlivost: {LTBLUE}{COMMA}% {BLACK}Poruch od posledního servisu: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Koupeno: {LTBLUE}{NUM}{BLACK} Cena: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapacita: {LTBLUE}nic{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapacita: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapacita: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapacita: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Podíl za převoz: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Interval servisů: {LTBLUE}{COMMA} d{P en ny ní}{BLACK} Naposledy v servisu: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Interval servisů: {LTBLUE}{COMMA}%{BLACK} Naposledy v servisu: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Prodloužit interval servisů o 10. S Ctrl prodloužit o 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Zkrátit interval servisů o 10. S Ctrl zkrátit o 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Změnit typ servisního intervalu STR_VEHICLE_DETAILS_DEFAULT :Defaultní STR_VEHICLE_DETAILS_DAYS :Dnů STR_VEHICLE_DETAILS_PERCENT :Procent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Pojmenovat vlak STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Přejmenovat silniční vozidlo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Přejemnovat loď STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Přejmenovat letadlo # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Koupeno: {LTBLUE}{NUM}{BLACK} Hodnota: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Hodnota: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Celková kapacita tohoto vlaku: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Prázdný STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} z {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} z {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Náklad STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Ukázat detaily přepravovaného zboží STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informace STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Ukázat detaily jednotlivých vagonů STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapacity STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Ukázat kapacity jednotlivých vagonů STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Celkový náklad STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Ukázat celkovou kapacitu vlaku, rozdělenou dle nákladu STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapacita: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Přestavět) STR_REFIT_TITLE :{GOLD}Zvolit druh nákladu: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}{}{BLACK}Cena přestavby: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}{}{BLACK}Příjem za přestavbu: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cena za předělání: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nová kapacita: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Výnos z přestavby: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Vybere vozidla k obnově. Tažení myší vybere více vozidel. Kliknutí na prázdné místo vybere celé vozidlo. Ctrl+Click vybere vozidlo a následující řetěz STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Zvolit typ nákladu, na který vlak přestavět STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vyber typ nákladu, který má vozidlo převážet STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Zvolit druh nákladu, který bude loď převážet STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Zvolit typ nákladu pro letadlo STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Přestavět vlak STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Přestavět silniční vozidlo STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Přestavět STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Přestavět letadlo STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Přestavět vlak na označený typ nákladu STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Přestavět silniční vozidlo, aby vozilo vybraný druh nákladu STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Přestavět pro převoz označeného nákladu STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Přestavet letadlo pro převážení označeného typu nákladu # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Příkazy) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Jízdní řád STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Přepnout na jízdní řád STR_ORDERS_LIST_TOOLTIP :{BLACK}Seznam příkazů - stiskni příkaz pro označení. Kliknutím na příkaz se stisknutým CTRL se nastaví pohled na cíl seznamu STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Konec příkazů - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Konec sdílených příkazů - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Jet bez zastavení STR_ORDER_GO_TO :Jet do STR_ORDER_GO_NON_STOP_TO :Jet bez zastavení do STR_ORDER_GO_VIA :Jet přes STR_ORDER_GO_NON_STOP_VIA :Jet bez zastavení přes STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Ovlivnit zastavení u vybraného příkazu STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Plně naložit čímkoli STR_ORDER_DROP_LOAD_IF_POSSIBLE :Pokud možno naložit STR_ORDER_DROP_FULL_LOAD_ALL :Plně naložit vším STR_ORDER_DROP_FULL_LOAD_ANY :Plně naložit čímkoli STR_ORDER_DROP_NO_LOADING :Nenakládat STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Ovlivnit nakládání u vybraného příkazu STR_ORDER_TOGGLE_UNLOAD :{BLACK}Vyložit vše STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Vyložit vyžadovaný náklad STR_ORDER_DROP_UNLOAD :Vyložit vše STR_ORDER_DROP_TRANSFER :Přeložit STR_ORDER_DROP_NO_UNLOADING :Nevykládat STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ovlivnit vykládání u vybraného příkazu STR_ORDER_REFIT :{BLACK}Přestavět STR_ORDER_REFIT_TOOLTIP :{BLACK}Vyber, na který druh nákladu přestavět. Ctrl+klik odstraní přestavbu z příkazu STR_ORDER_REFIT_AUTO :{BLACK}Automaticky přestavět STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Zvolit druh nákladu pro automatické přestavění pro tento příkaz. Ctrl+Click odebere z příkazu automatické přestavění. Automatické přestavění bude fungovat pouze pokud vozidlo lze přestavět. STR_ORDER_DROP_REFIT_AUTO :Neměnný náklad STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupný náklad STR_ORDER_SERVICE :{BLACK}Údržba STR_ORDER_DROP_GO_ALWAYS_DEPOT :Jeď vždy STR_ORDER_DROP_SERVICE_DEPOT :Údržba v případě potřeby STR_ORDER_DROP_HALT_DEPOT :Zastavit STR_ORDER_SERVICE_TOOLTIP :{BLACK}Přeskoč tento cíl, pokud není potřeba pravidelná údržba STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vlastnost vozidla, podle které přeskakovat # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Procento naložení STR_ORDER_CONDITIONAL_RELIABILITY :Spolehlivost STR_ORDER_CONDITIONAL_MAX_SPEED :Maximální rychlost STR_ORDER_CONDITIONAL_AGE :Stáří vozidla (v letech) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Vyžaduje údržbu STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Vždy STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Zbývající životnost (v letech) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Jak porovnat vlastnost vozidla se zadanou hodnotou STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :se rovná STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :se nerovná STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :je menší než STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :je menší nebo rovno STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :je více než STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :je více nebo rovno STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :platí STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :neplatí STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Hodnota, se kterou srovnat vlastnost vozidla STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Zadej hodnotu pro srovnávání STR_ORDERS_SKIP_BUTTON :{BLACK}Přeskočit STR_ORDERS_SKIP_TOOLTIP :{BLACK}Přeskočit příkaz a jít na další. Pomocí CTRL + kliknutí se přeskočí na vybraný příkaz STR_ORDERS_DELETE_BUTTON :{BLACK}Smazat STR_ORDERS_DELETE_TOOLTIP :{BLACK}Smazat označený příkaz STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Smazat všechny příkazy STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Zastavit sdílení STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Zastavit sdílení seznamu příkazů. Ctrl+Click ještě smaže všechny příkazy pro toto vozidlo STR_ORDERS_GO_TO_BUTTON :{BLACK}Jet do STR_ORDER_GO_TO_NEAREST_DEPOT :Jet do nejbližšího depa STR_ORDER_GO_TO_NEAREST_HANGAR :Jet do nejbližšího hangáru STR_ORDER_CONDITIONAL :Podmíněné přeskočení příkazu STR_ORDER_SHARE :Sdílet příkazy STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Vložit nový příkaz před označený příkaz, nebo přidat na konec seznamu. Ctrl přidá příkaz pro stanici jako 'plně naložit cokoliv', pro směrování na trati jako 'bez zastavení' a pro depo jako 'údržba'. 'Sdílet příkazy' nebo Ctrl nechá vozidlo sdílet příkazy s vybraným vozidlem. Kliknutí na vozidlo zkopíruje jeho příkazy STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Zobrazit všechny prostředky se stejným jízdním řádem # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Jet přes {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Jet bez zastávky přes {WAYPOINT} STR_ORDER_SERVICE_AT :Údržba v STR_ORDER_SERVICE_NON_STOP_AT :Údržba bez zastavení v STR_ORDER_NEAREST_DEPOT :nebližšího STR_ORDER_NEAREST_HANGAR :nejbližší hangár STR_ORDER_TRAIN_DEPOT :železničním depu STR_ORDER_ROAD_VEHICLE_DEPOT :silničním depu STR_ORDER_SHIP_DEPOT :lodním depu STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Přestavět na {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Přestavět na {STRING} a zastavit) STR_ORDER_STOP_ORDER :(Zastavit) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Automaticky) STR_ORDER_FULL_LOAD :(plně naložit) STR_ORDER_FULL_LOAD_ANY :(plně naložit cokoli) STR_ORDER_NO_LOAD :(nenakládat) STR_ORDER_UNLOAD :(vyložit a hned naložit) STR_ORDER_UNLOAD_FULL_LOAD :(vyložit a plně naložit) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(vyložit a plně naložit čímkoli) STR_ORDER_UNLOAD_NO_LOAD :(vyložit a nechat prázdné) STR_ORDER_TRANSFER :(přeložit a hned naložit) STR_ORDER_TRANSFER_FULL_LOAD :(přeložit a plně naložit) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(přeložit a plně naložit čímkoli) STR_ORDER_TRANSFER_NO_LOAD :(přeložit a nechat prázdné) STR_ORDER_NO_UNLOAD :(nevykládat a hned naložit) STR_ORDER_NO_UNLOAD_FULL_LOAD :(nevykládat a plně naložit) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(nevykládat a plně naložit čímkoli) STR_ORDER_NO_UNLOAD_NO_LOAD :(nevykládat ani nenakládat) STR_ORDER_AUTO_REFIT :(Automatické přestavění na {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Plně naložit vše s automatickým přestavěním na {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Plně naložit cokoliv a automaticky přestavět na {STRING}) STR_ORDER_UNLOAD_REFIT :(Vyložit a naložit s automatickým přestavěním na {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložit a počkat na plné naložení s automatickým přestavěním na {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vyložit a počkat na naložení čehokoliv s automatickým přestavěním na {STRING}) STR_ORDER_TRANSFER_REFIT :(Přeložit a naložit s automatickým přestavěním na {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Přeložit a počkat na plné naložení s automatickým přestavěním na {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Přeložit a počkat na naložení čehokoliv s automatickým přestavěním na {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Nevykládat a naložit s automatickým přestavěním na {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykládat a počkat na plné naložení s automatickým přestavěním na {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykládat a počkat na plné naložení čehokoliv s automatickým přestavěním na {STRING}) STR_ORDER_AUTO_REFIT_ANY :dostupný náklad STR_ORDER_STOP_LOCATION_NEAR_END :[na začátku] STR_ORDER_STOP_LOCATION_MIDDLE :[uprostřed] STR_ORDER_STOP_LOCATION_FAR_END :[na konci] STR_ORDER_OUT_OF_RANGE :{RED} (Další cíl je mimo dosah) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Skočit na příkaz {COMMA} STR_ORDER_CONDITIONAL_NUM :Skočit na příkaz {COMMA}, když {STRING.small} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Skočit na příkaz {COMMA}, když {STRING.small} {STRING} STR_INVALID_ORDER :{RED} (neplatný příkaz) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Jízdní řád) STR_TIMETABLE_ORDER_VIEW :{BLACK}Příkazy STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Přepnout na zobrazení příkazů STR_TIMETABLE_TOOLTIP :{BLACK}Jízdní řád - příkaz vybereš kliknutím STR_TIMETABLE_NO_TRAVEL :Nikam nejet STR_TIMETABLE_NOT_TIMETABLEABLE :Jet do (automatický; jizdní řád podle následujícího ručního příkazu) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Jet do (mimo jízdní řád) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Jet maximálně {2:VELOCITY} (mimo jízdní řád) STR_TIMETABLE_TRAVEL_FOR :Jet do {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Jeď {STRING} a maximálně {VELOCITY} STR_TIMETABLE_STAY_FOR :a zůstat {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :a jet {STRING} STR_TIMETABLE_DAYS :{COMMA} d{P en ny nů} STR_TIMETABLE_TICKS :{COMMA} cykl{P us y ů} STR_TIMETABLE_TOTAL_TIME :{BLACK}Tento jízdní řád bude trvat {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Tento jízdní řád bude trvat nejméně {STRING} (vozidla mimo jízdní řád) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Vozidlo jede na čas STR_TIMETABLE_STATUS_LATE :{BLACK}Vozidlo má {STRING} zpoždění STR_TIMETABLE_STATUS_EARLY :{BLACK}Vozidlo jede {STRING} napřed STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tento jízdní řád ještě nezačal STR_TIMETABLE_STATUS_START_AT :{BLACK}Tento jízdní řád začne v {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Datum začátku STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyberte počáteční datum jízdního řádu STR_TIMETABLE_CHANGE_TIME :{BLACK}Změnit čas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Změnit čas pro splnění jízdního příkazu STR_TIMETABLE_CLEAR_TIME :{BLACK}Smazat čas STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Zrušit čas pro splnění jízdního příkazu STR_TIMETABLE_CHANGE_SPEED :{BLACK}Změnit rychlostní limit STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Změnit maximální cestovní rychlost u vybraného příkazu STR_TIMETABLE_CLEAR_SPEED :{BLACK}Odstranit rychlostní limit STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Odstranit maximální cestovní rychlost u vybraného příkazu STR_TIMETABLE_RESET_LATENESS :{BLACK}Zapomenout zpoždění STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Smazat zpoždění, takže vozidlo pojede na čas STR_TIMETABLE_AUTOFILL :{BLACK}Automaticky STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Automaticky vyplň rozvrh hodnotami z následující cesty (Ctrl+klik pro zachování vyčkávací doby) STR_TIMETABLE_EXPECTED :{BLACK}Očekávaný STR_TIMETABLE_SCHEDULED :{BLACK}Plánovaný STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Přepnout mezi očekávaným a plánovaným STR_TIMETABLE_ARRIVAL_ABBREVIATION :P: STR_TIMETABLE_DEPARTURE_ABBREVIATION :O: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Nastavit datum STR_DATE_SET_DATE :{BLACK}Nastavit datum STR_DATE_SET_DATE_TOOLTIP :{BLACK}Použít vybrané datum jako počáteční datum jízdního řádu STR_DATE_DAY_TOOLTIP :{BLACK}Vybrat den STR_DATE_MONTH_TOOLTIP :{BLACK}Vybrat měsíc STR_DATE_YEAR_TOOLTIP :{BLACK}Vybrat rok # AI debug window STR_AI_DEBUG :{WHITE}Ladění AI / herních skriptů STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Název skriptu STR_AI_DEBUG_SETTINGS :{BLACK}Nastavení STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Změnit nastavení skriptu STR_AI_DEBUG_RELOAD :{BLACK}Obnovit AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Zničit AI, znovu nahrát jeho skript a restartovat AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Povolit zastavení AI skriptu, když se v AI logu objeví daný řetězec STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Zastavit při: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Zastavit při STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Když se v AI logu vyskytne tento řetězec, hra se pozastaví STR_AI_DEBUG_MATCH_CASE :{BLACK}Rozeznat malá/velká písmena STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Zabývat se velikostí písmen při hledání zastavujícího řetězce v AI logu STR_AI_DEBUG_CONTINUE :{BLACK}Pokračovat STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Odpauzujte a pokračujte v běhu AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Zobraz debugovací výstup této AI STR_AI_GAME_SCRIPT :{BLACK}Herní skript STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Zkontroluj log herních skriptů STR_ERROR_AI_NO_AI_FOUND :Nebyla nalezena žádná AI.{}Tato AI je výchozí a nedělá vůbec nic.{}Spoustu AI ale můžeš stáhnout v "Stahování součástí" STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Některá z bežících AI skončila s chybou. Prosím oznamte toto autorovi AI spolu se screenshotem okna Ladění AI STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno na ladění AI / herních skriptů je dostupné pouze na serveru # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Nastavení AI / hry STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Herní skripty, které budou načteny v příští hře STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI, které budou načteny v příští hře STR_AI_CONFIG_HUMAN_PLAYER :Lidský hráč STR_AI_CONFIG_RANDOM_AI :Náhodná AI STR_AI_CONFIG_NONE :(žádný) STR_AI_CONFIG_MOVE_UP :{BLACK}Přesunout nahoru STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Přesunout vybranou AI v seznamu výše STR_AI_CONFIG_MOVE_DOWN :{BLACK}Přesunout dolů STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Přesunout vybranou AI v seznamu níže STR_AI_CONFIG_GAMESCRIPT :{SILVER}Herní skript STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE :{BLACK}Vybrat {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Herní skript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Načíst další skript STR_AI_CONFIG_CONFIGURE :{BLACK}Nastavit STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Nastavit parametry skriptu # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Dostupný {STRING} STR_AI_LIST_CAPTION_AI :AI STR_AI_LIST_CAPTION_GAMESCRIPT :herní skripty STR_AI_LIST_TOOLTIP :{BLACK}Skript vybereš kliknutím STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Verze: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Potvrdit STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vybrat označený skript STR_AI_LIST_CANCEL :{BLACK}Zrušit STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Neměňte skript # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametry STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :herní skript STR_AI_SETTINGS_CLOSE :{BLACK}Zavřít STR_AI_SETTINGS_RESET :{BLACK}Obnovit nastavení STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Počet dní kdy se spustí tato AI po předchozí (plus/mínus): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} změny ve verzi {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licence {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Zobrazit readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK} Novinky ve verzi STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cena: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Cena: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Příjem: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Příjem: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Překládka: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Překládka: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Odhadovaná cena: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Odhadovaný příjem: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ukládání ještě běží,{}počkej prosím, než doběhne! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automatické uložení selhalo STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nelze číst z jednotky STR_ERROR_GAME_SAVE_FAILED :{WHITE}Uložení hry selhalo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nelze smazat soubor STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nelze otevřít hru{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Vnitřní chyba: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Poškozená hra - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra je z novější verze STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Soubor je nečitelný STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Do souboru nelze zapisovat STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Kontrola integrity dat selhala STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Hra byla uložena ve verzi bez podpory tramvají. Všechny tramvaje se odstraní # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generování mapy zrušeno...{}... nebylo možné založit žádné město STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... v tomto scénáři není ani jedno město STR_ERROR_PNGMAP :{WHITE}Nebylo možné nahrát krajinu z PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... soubor nenalezen STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... nelze převést formát obrázku. Je nutno použít 8- nebo 24bitové barvy STR_ERROR_PNGMAP_MISC :{WHITE}... něco se prostě pokazilo (soubor je asi poškozený) STR_ERROR_BMPMAP :{WHITE}Nebylo možné nahrát krajinu z BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nelze převést formát obrázku STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... obrázek je příliš velký STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Varování kvůli velikosti STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Tak velká zmena velikosti zdrojové mapy není doporučena. Pokračovat s generováním? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Byl nalezen pouze nouzový zvukový soubor. Pokud chcete zvuky, nainstalujte prosim zvukové soubory skrze systém stahování obsahu # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Velký screenshot STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Snímek obrazovky bude mít rozlišení {COMMA} x {COMMA} pixelů. Toto může nějakou chvíli trvat. Chcete pokračovat? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot úspěšně uložen jako '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot neuložen! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Zpráva STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Zpráva od {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Mimo okraj mapy STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Moc blízko k okraji mapy STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nedostatek peněz - je potřeba {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Je potřeba plochá země STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Země skloněna nesprávným směrem STR_ERROR_CAN_T_DO_THIS :{WHITE}Tohle nelze provést... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Budova musí být nejprve zničena STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nelze vyčistit tuto oblast... STR_ERROR_SITE_UNSUITABLE :{WHITE}... nepoužitelné místo STR_ERROR_ALREADY_BUILT :{WHITE}... již vystavěno STR_ERROR_OWNED_BY :{WHITE}... vlastněno {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... území vlastní jiná společnost STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... dosažen limit pro úpravu terénu STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... dosažen limit pro čištění dláždic STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... výsadba stromů dosáhla limitu STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Jméno musí být jedinečné STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} v cestě STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nelze v pozastavené hře # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Místní správa města {TOWN} odmítla vydat povolení STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Místní správa města {TOWN} zakazuje stavbu dalšího letiště v tomto městě STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Zastupitelstvo města {TOWN} odmítá vydat povolení na stavbu letiště kvůli hlukovým limitům STR_ERROR_BRIBE_FAILED :{WHITE}Tvůj pokus o úplatek byl objeven regionálním vyšetřovatelem # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Zde nelze zvednout terén... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Zde nelze snížit terén... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Zde nelze srovnat terén... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Úprava terénu by poškodila tunel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... již na úrovni moře STR_ERROR_TOO_HIGH :{WHITE}... příliš vysoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... už je plochý # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nelze přejmenovat společnost... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Nelze přejmenovat prezidenta... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... nejvyšší možná výše půjčky je {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Nelze půjčit více peněz... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... žádný dluh ke splacení STR_ERROR_CURRENCY_REQUIRED :{WHITE}... je potřeba {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nelze splatit dluh... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nelze darovat peníze půjčené z banky... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nelze koupit společnost... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nelze postavit ředitelství společnosti... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nelze koupit podíl v této společnosti... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Nelze prodat podíl v této společnosti... STR_ERROR_PROTECTED :{WHITE}Tato společnost zatím neobchoduje s akciemi... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nelze vygenerovat žádné město STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nelze přejmenovat město... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Zde nelze postavit město... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Město nemůže být rozšířeno... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... moc blízko k okraji mapy STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... moc blízko k jinému městu STR_ERROR_TOO_MANY_TOWNS :{WHITE}... příliš mnoho měst STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... na mapě už není místo STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Město nebude stavět silnice. Můžete to změnit přes Pokročilé nastavení->Ekonomika->Města STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Silnice je v rekonstrukci STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Nelze vybourat město...{}Buď k němu patří stanice nebo depo, anebo se nedá odklidit políčko městem vlastněné STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... v tomto městě není žádné místo vhodné pro umístění sochy # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... příliš mnoho průmyslu STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nelze vygenerovat žádný průmysl... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Zde nelze postavit {STRING} ... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Zde nelze postavit tento druh průmyslu... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... příliš blízko k jinému průmyslu STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... je nutné nejprve vystavět město STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... je povolena jen jedna na město STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... může být budováno jen ve městech s populací 1200 lidí a více STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... může se vybudovat jedině v pralese STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... může se postavit jedině v poušti STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... může se postavit jedině ve městě (místo nějakých domů) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... může být postaveno pouze poblíž centra města STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... může se postavit jen v nížinách STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... může být umístěno pouze poblíž okrajů mapy STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... les lze vysadit pouze nad sněžnou čárou STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... může být postaven pouze nad sněžnou čarou STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... může být postaven pouze pod sněžnou čarou # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Zde nelze postavit nádraží... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nelze postavit autobusovou stanici... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nelze postavit nákladovou rampu... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nelze postavit tramvajovou stanici pro cestující... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nelze postavit nákladovou tramvajovou stanici... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Zde nelze postavit přístav... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Zde nelze postavit letiště... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Spojuje více jak jedno existující nádraží nebo nákladovou rampu... STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stanice je příliš rozlehlá STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Příliš mnoho nádraží nebo nákladových ramp STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Příliš mnoho staničních částí STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Příliš mnoho autobusových zastávek STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Příliš mnoho zastávek nákladních automobilů STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Příliš blízko k jinému nádraží nebo nákladové rampě STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Příliš blízko k jinému doku STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Příliš blízko k jinému letišti STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nelze přejmenovat stanici... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... tato silnice je ve vlastnictví obce STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... silnice je otočena jiným směrem STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... průjezdné zastávky nemohou být v zatáčce STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... průjezdné zastávky nemohou být na křižovatce # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nelze odstranit část stanice... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Je nejprve nutno odstranit stanici STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nelze odstranit autobusovou zastávku... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nelze odstranit nakládací rampu... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nelze zbourat tramvajovou stanici pro cestující... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nelze odstranit nákladní tramvajovou stanici... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Je nutné nejprve odstranit konec silnice STR_ERROR_THERE_IS_NO_STATION :{WHITE}... není zde žádná stanice STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Je nutné nejprve zničit stanici STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Je nutné nejprve zničit autobusovou zastávku STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Je nutné nejprve zničit nákladovou rampu STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Je nutné nejdříve zbourat tramvajovou stanici pro cestující STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Je nutné nejdříve zbourat nákladní tramvajovou stanici STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Je nutné nejprve zničit dok STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Je nutné nejprve zničit letiště # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Sousedí s více než jedním existujícím bodem na trase STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Příliš blízko k jinému směrování STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Zde nelze postavit směrování... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Zde nelze umístit bójku... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nelze přejmenovat směrování... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Zde nelze zbourat směrování... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Je nutné nejprve zničit směrování STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bójka v cestě STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bójka je používána jinou společností! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Zde nelze postavit vlakové depo... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Zde nelze postavit garáž... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Zde nelze postavit depo pro tramvaje... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Zde nelze postavit lodní depo... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nelze přejmenovat depo... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musí stát v depu STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musí být zastaven v garáži STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... musí být zastavena v depu STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... musí být zastaveno v hangáru STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Vlaky lze měnit, jen když stojí v depu STR_ERROR_TRAIN_TOO_LONG :{WHITE}Příliš dlouhý vlak STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Nelze otočit vozidlo... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... se skládá z několika vozů STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Neslučitelné druhy kolejí STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Nelze přesunout vozidlo... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Zadní stroj vždy doprovází svůj protějšek vepředu STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Nelze najít cestu do místního depa... STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nelze najít místní garáž STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Nevhodný druh depa # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je po výměně moc dlouhý STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Žádné pravidlo pro výměnu vozidel se nepoužilo STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(finanční limit) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemožná kombinace kolejí STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Je nutné nejprve odstranit semafor STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Žádné použitelné koleje STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Je nutné nejprve odstranit koleje STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Silnice je jednosměrná nebo zablokovaná STR_ERROR_CROSSING_DISALLOWED :{WHITE}Železniční přejezd není povolen pro tento typ kolejí STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Zde nelze postavit semafory... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Zde nelze postavit koleje... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Odsud nelze odstranit koleje... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Odsud nelze odstranit semafory... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Zde nelze změnit návěstidla... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... nejsou zde žádné koleje STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... nejsou zde žádné semafory STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Zde nelze změnit typ kolejí... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Je nutné nejprve odstranit silnici STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... na jednosměrných silnicích nemůžou být křižovatky STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Zde nelze postavit silnici... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Zde nelze postavit tramvajovou trať... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Odsud nelze odstranit silnici... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Odsud nelze odstranit tramvajovou trať... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... není zde žádná silnice STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... není zde žádná tramvajová trať # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Zde nelze postavit průplav... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Zde nelze postavit zdymadlo... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Zde nelze vytvořit řeku... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... musí být postaven na vodě STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nelze stavět na vodě STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nelze stavět na otevřeném moři STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nelze stavět na průplavu STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nelze stavět na řece STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Nejprve je třeba zničit průplav STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Zde nelze postavit akvadukt... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... strom už tu je STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... nevhodný terén pro tento typ stromu STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Zde nelze vysadit strom... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Zde nelze postavit most... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Je nutné nejprve zničit most STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Nelze začít a skončit na stejném místě STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Nájezdy na most nejsou ve stejné výšce STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je pro terén moc nízký STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začátek a konec musí být ve stejné výšce STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba konce mostu musí být na zemi STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je příliš dlouhý STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Most by končil mimo mapu # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Zde nelze postavit tunel... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Místo nevhodné pro vjezd do tunelu STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Je nutné nejprve zničit tunel STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}V cestě je jiný tunel STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunel by končil mimo mapu STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nelze vyrovnat zemi na druhém konci tunelu STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunel je příliš dlouhý # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... příliš mnoho objektů STR_ERROR_TOO_MANY_OBJECTS.nom :{WHITE}... příliš mnoho objektů STR_ERROR_TOO_MANY_OBJECTS.gen :{WHITE}... příliš mnoha objektů STR_ERROR_TOO_MANY_OBJECTS.dat :{WHITE}... příliš mnoha objektům STR_ERROR_TOO_MANY_OBJECTS.acc :{WHITE}... příliš mnoho objektů STR_ERROR_TOO_MANY_OBJECTS.voc :{WHITE}... příliš mnoho objektů! STR_ERROR_TOO_MANY_OBJECTS.loc :{WHITE}... příliš mnoha objektech STR_ERROR_TOO_MANY_OBJECTS.ins :{WHITE}... příliš mnoha objekty STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Objekt nemůže být postaven... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}V cestě je objekt STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... v cestě je ředitelství společnosti STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Nelze zakoupit tento pozemek... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... již vlastníš! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nelze vytvořit skupinu... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nelze vymazat skupinu... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nelze přejmenovat skupinu... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nelze odstranit všechna vozidla ze skupiny... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nelze přidat vozidlo do skupiny... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nelze přidat sdílená vozidla do skupiny... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}V cestě je vlak STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Silniční vozidlo v cestě STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Loď v cestě STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Letadlo v cestě STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Nelze přestavět vlak... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nelze přestavet silniční vozidlo... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nelze přestavět loď... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nelze přestavět letadlo... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Nelze pojmenovat vlak... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nelze přejmenovat silniční vozidlo... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nelze přejmenovat loď... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nelze přejmenovat letadlo STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Nelze rozjet/zastavit vlak... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nelze rozjet/zastavit silniční vozidlo... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nelze rozjet/zastavit loď... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nelze rozjet/zastavit letadlo... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nelze poslat vlak do depa... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nelze poslat silniční vozidlo do garáže... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nelze poslat loď do depa... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nelze poslat letadlo do hangáru... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Nelze koupit vagon nebo lokomotivu... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Nelze koupit nové silniční vozidlo... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Nelze koupit loď... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Nelze koupit letadlo... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Nelze přejmenovat typ železničního vozidla... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nelze přejmenovat typ silničního vozidla... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Nelze přejmenovat typ lodi... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Nelze přejmenovat typ letadla... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Nelze prodat vagon nebo lokomotivu... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nelze prodat silniční vozidlo... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Nelze prodat loď... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Nelze prodat letadlo... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vozidlo není dostupné STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vůz není dostupné STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Loď není dostupná STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Letadlo není dostupné STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Příliš mnoho vozidel ve hře STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nelze změnit interval oprav... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozidlo bylo zničeno STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Žádná vozidla nejsou dostupná STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmeň nastavení NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Zatím nejsou dostupná žádná vozidla STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začít hru po {DATE_SHORT} nebo použít NewGRF, která zajistí dřívější vozidla # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nelze nechat vlak projet semafory v nebezpečí... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nelze obrátit vlak... STR_ERROR_TRAIN_START_NO_POWER :Vlak potřebuje trolej STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Nelze otočit vozidlo... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Letadlo letí # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Nedostatek prostoru na příkazy STR_ERROR_TOO_MANY_ORDERS :{WHITE}Příliš mnoho příkazů STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Nelze přidat nový příkaz... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Nelze smazat tento příkaz... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nelze změnit tento příkaz... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Nelze přesunout tento příkaz... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nelze přeskočit současný příkaz... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Nelze přeskočit na označený příkaz... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... prostředek se nedostane do všech stanic STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... do této stanice se prostředek nedostane STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... do této stanice se prostředek sdílející tento příkaz nedostane STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nelze sdílet seznam příkazů... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nelze zastavit sdílení seznamu příkazů... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Nelze kopírovat seznam příkazů... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... příliš daleko od předcházejícího cíle STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... letadlo nemá dostatečný dolet # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Tomuto vozidlu nejde nastavit jízdní řád... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozidla mohou čekat jen ve stanicích STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Toto vozidlo v této stanici nestaví # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... příliš mnoho popisků STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Zde nelze umístit nápis... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Nelze změnit nápis... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nelze smazat nápis... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulační hra založená na Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Původní sada grafik Transport Tycoon Deluxe (verze pro DOS). STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS). STR_BASEGRAPHICS_WIN_DESCRIPTION :Původní sada grafik Transport Tycoon Deluxe (verze pro Windows). STR_BASESOUNDS_DOS_DESCRIPTION :Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS). STR_BASESOUNDS_WIN_DESCRIPTION :Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows). STR_BASESOUNDS_NONE_DESCRIPTION :Prázdná sada zvuků. STR_BASEMUSIC_WIN_DESCRIPTION :Původní hudba Transport Tycoon Deluxe (verze pro Windows). STR_BASEMUSIC_NONE_DESCRIPTION :Prázná hudební sada. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Vysoký kancelářský blok STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Kancelářský blok STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Malé bytovky STR_TOWN_BUILDING_NAME_CHURCH_1 :Kostel STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Velký kancelářský blok STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Městské domy STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Socha STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontána STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Kancelářský blok STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Obchody a kanceláře STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderní kancelářský blok STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Skladiště STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kancelářský blok STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Staré domy STR_TOWN_BUILDING_NAME_COTTAGES_1 :Chatky STR_TOWN_BUILDING_NAME_HOUSES_1 :Domy STR_TOWN_BUILDING_NAME_FLATS_1 :Byty STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Vysoký kancelářský blok STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Obchody a kanceláře STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Obchody a kanceláře STR_TOWN_BUILDING_NAME_THEATER_1 :Divadlo STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Kanceláře STR_TOWN_BUILDING_NAME_HOUSES_2 :Domy STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Nákupní středisko STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglů STR_TOWN_BUILDING_NAME_TEPEES_1 :Teepee STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Dům konvička STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Banka prasátko ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=m}Uhelný důl STR_INDUSTRY_NAME_COAL_MINE.gen :{G=m}uhelného dolu STR_INDUSTRY_NAME_COAL_MINE.loc :{G=m}v uhelném dole STR_INDUSTRY_NAME_COAL_MINE.small :{G=m}uhelný důl STR_INDUSTRY_NAME_POWER_STATION :{G=f}Elektrárna STR_INDUSTRY_NAME_POWER_STATION.gen :{G=f}elektrárny STR_INDUSTRY_NAME_POWER_STATION.loc :{G=f}v elektrárně STR_INDUSTRY_NAME_POWER_STATION.small :{G=f}elektrárna STR_INDUSTRY_NAME_SAWMILL :{G=f}Pila STR_INDUSTRY_NAME_SAWMILL.gen :{G=f}pily STR_INDUSTRY_NAME_SAWMILL.loc :{G=f}na pile STR_INDUSTRY_NAME_SAWMILL.small :{G=f}pila STR_INDUSTRY_NAME_FOREST :{G=m}Les STR_INDUSTRY_NAME_FOREST.gen :{G=m}lesa STR_INDUSTRY_NAME_FOREST.loc :{G=m}v lese STR_INDUSTRY_NAME_FOREST.small :{G=m}les STR_INDUSTRY_NAME_OIL_REFINERY :{G=f}Rafinerie STR_INDUSTRY_NAME_OIL_REFINERY.gen :{G=f}rafinerie STR_INDUSTRY_NAME_OIL_REFINERY.loc :{G=f}v rafinerii STR_INDUSTRY_NAME_OIL_REFINERY.small :{G=f}rafinerie STR_INDUSTRY_NAME_OIL_RIG :{G=f}Ropná plošina STR_INDUSTRY_NAME_OIL_RIG.gen :{G=f}ropné plošiny STR_INDUSTRY_NAME_OIL_RIG.loc :{G=f}na ropné plošině STR_INDUSTRY_NAME_OIL_RIG.small :{G=f}ropná plošina STR_INDUSTRY_NAME_FACTORY :{G=f}Továrna STR_INDUSTRY_NAME_FACTORY.gen :{G=f}továrny STR_INDUSTRY_NAME_FACTORY.loc :{G=f}v továrně STR_INDUSTRY_NAME_FACTORY.small :{G=f}továrna STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Tiskárna STR_INDUSTRY_NAME_PRINTING_WORKS.gen :{G=f}tiskárny STR_INDUSTRY_NAME_PRINTING_WORKS.loc :{G=f}v tiskárně STR_INDUSTRY_NAME_PRINTING_WORKS.small :{G=f}tiskárna STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Ocelárna STR_INDUSTRY_NAME_STEEL_MILL.gen :{G=f}ocelárny STR_INDUSTRY_NAME_STEEL_MILL.loc :{G=f}v ocelárně STR_INDUSTRY_NAME_STEEL_MILL.small :{G=f}ocelárna STR_INDUSTRY_NAME_FARM :{G=f}Farma STR_INDUSTRY_NAME_FARM.gen :{G=f}farmy STR_INDUSTRY_NAME_FARM.loc :{G=f}na farmě STR_INDUSTRY_NAME_FARM.small :{G=f}farma STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=m}Důl na měděnou rudu STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :{G=m}dolu na měděnou rudu STR_INDUSTRY_NAME_COPPER_ORE_MINE.loc :{G=m}v dole na měděnou rudu STR_INDUSTRY_NAME_COPPER_ORE_MINE.small :{G=m}důl na měděnou rudu STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Ropný vrt STR_INDUSTRY_NAME_OIL_WELLS.gen :{G=m}ropného vrtu STR_INDUSTRY_NAME_OIL_WELLS.loc :{G=m}v ropném vrtu STR_INDUSTRY_NAME_OIL_WELLS.small :{G=m}ropný vrt STR_INDUSTRY_NAME_BANK :{G=f}Banka STR_INDUSTRY_NAME_BANK.gen :{G=f}banky STR_INDUSTRY_NAME_BANK.loc :{G=f}v bance STR_INDUSTRY_NAME_BANK.small :{G=f}banka STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=m}Potravinářský závod STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :{G=m}potravinářského závodu STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.loc :{G=m}v potravinářském závodu STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.small :{G=m}potravinářský závod STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Papírna STR_INDUSTRY_NAME_PAPER_MILL.gen :{G=f}papírny STR_INDUSTRY_NAME_PAPER_MILL.loc :{G=f}v papírně STR_INDUSTRY_NAME_PAPER_MILL.small :{G=f}papírna STR_INDUSTRY_NAME_GOLD_MINE :{G=m}Zlatý důl STR_INDUSTRY_NAME_GOLD_MINE.gen :{G=m}zlatého dolu STR_INDUSTRY_NAME_GOLD_MINE.loc :{G=m}ve zlatém dole STR_INDUSTRY_NAME_GOLD_MINE.small :{G=m}zlatý důl STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=f}Banka STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :{G=f}banky STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.loc :{G=f}v bance STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.small :{G=f}banka STR_INDUSTRY_NAME_DIAMOND_MINE :{G=m}Diamantový důl STR_INDUSTRY_NAME_DIAMOND_MINE.gen :{G=m}diamantového dolu STR_INDUSTRY_NAME_DIAMOND_MINE.loc :{G=m}v diamantovém dole STR_INDUSTRY_NAME_DIAMOND_MINE.small :{G=m}diamantový důl STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=m}Důl na železnou rudu STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :{G=m}dolu na železnou rudu STR_INDUSTRY_NAME_IRON_ORE_MINE.loc :{G=m}v dole na železnou rudu STR_INDUSTRY_NAME_IRON_ORE_MINE.small :{G=m}důl na železnou rudu STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=m}Ovocný sad STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :{G=m}ovocného sadu STR_INDUSTRY_NAME_FRUIT_PLANTATION.loc :{G=m}v ovocném sadu STR_INDUSTRY_NAME_FRUIT_PLANTATION.small :{G=m}ovocný sad STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Kaučuková plantáž STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :{G=f}kaučukové plantáže STR_INDUSTRY_NAME_RUBBER_PLANTATION.loc :{G=f}na kaučukové plantáži STR_INDUSTRY_NAME_RUBBER_PLANTATION.small :{G=f}kaučuková plantáž STR_INDUSTRY_NAME_WATER_SUPPLY :{G=m}Zdroj vody STR_INDUSTRY_NAME_WATER_SUPPLY.gen :{G=m}zdroje vody STR_INDUSTRY_NAME_WATER_SUPPLY.loc :{G=m}ve zdroji vody STR_INDUSTRY_NAME_WATER_SUPPLY.small :{G=m}zdroj vody STR_INDUSTRY_NAME_WATER_TOWER :{G=m}Vodojem STR_INDUSTRY_NAME_WATER_TOWER.gen :{G=m}vodojemu STR_INDUSTRY_NAME_WATER_TOWER.loc :{G=m}ve vodojemu STR_INDUSTRY_NAME_WATER_TOWER.small :{G=m}vodojem STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Továrna STR_INDUSTRY_NAME_FACTORY_2.gen :{G=f}továrny STR_INDUSTRY_NAME_FACTORY_2.loc :{G=f}v továrně STR_INDUSTRY_NAME_FACTORY_2.small :{G=f}továrna STR_INDUSTRY_NAME_FARM_2 :{G=f}Farma STR_INDUSTRY_NAME_FARM_2.gen :{G=f}farmy STR_INDUSTRY_NAME_FARM_2.loc :{G=f}na farmě STR_INDUSTRY_NAME_FARM_2.small :{G=f}farma STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}Pila STR_INDUSTRY_NAME_LUMBER_MILL.gen :{G=f}pily STR_INDUSTRY_NAME_LUMBER_MILL.loc :{G=f}na pile STR_INDUSTRY_NAME_LUMBER_MILL.small :{G=f}pila STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Les cukrové vaty STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :{G=m}lesa cukrové vaty STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.loc :{G=m}v lese cukrové vaty STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.small :{G=m}les cukrové vaty STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Továrna na sladkosti STR_INDUSTRY_NAME_CANDY_FACTORY.gen :{G=f}továrny na sladkosti STR_INDUSTRY_NAME_CANDY_FACTORY.loc :{G=f}továrně na sladkosti STR_INDUSTRY_NAME_CANDY_FACTORY.small :{G=f}továrna na sladkosti STR_INDUSTRY_NAME_BATTERY_FARM :{G=f}Farma na baterie STR_INDUSTRY_NAME_BATTERY_FARM.gen :{G=f}farmy na baterie STR_INDUSTRY_NAME_BATTERY_FARM.loc :{G=f}na farmě na baterie STR_INDUSTRY_NAME_BATTERY_FARM.small :{G=f}farma na baterie STR_INDUSTRY_NAME_COLA_WELLS :{G=fp}Kolové studny STR_INDUSTRY_NAME_COLA_WELLS.gen :{G=fp}kolových studen STR_INDUSTRY_NAME_COLA_WELLS.loc :{G=fp}v kolových studnách STR_INDUSTRY_NAME_COLA_WELLS.small :{G=fp}kolové studny STR_INDUSTRY_NAME_TOY_SHOP :{G=n}Hračkářství STR_INDUSTRY_NAME_TOY_SHOP.gen :{G=n}hračkářství STR_INDUSTRY_NAME_TOY_SHOP.loc :{G=n}v hračkářství STR_INDUSTRY_NAME_TOY_SHOP.small :{G=n}hračkářství STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Továrna na hračky STR_INDUSTRY_NAME_TOY_FACTORY.gen :{G=f}továrny na hračky STR_INDUSTRY_NAME_TOY_FACTORY.loc :{G=f}v továrně na hračky STR_INDUSTRY_NAME_TOY_FACTORY.small :{G=f}továrna na hračky STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=fp}Plastové fontány STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :{G=fp}plastových fontán STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.loc :{G=fp}v plastových fontánách STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.small :{G=fp}plastové fontány STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Sodovkárna STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :{G=f}sodovkárny STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.loc :{G=f}v sodovkárně STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.small :{G=f}sodovkárna STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Generátor bublin STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :{G=m}generátoru bublin STR_INDUSTRY_NAME_BUBBLE_GENERATOR.loc :{G=m}v generátoru bublin STR_INDUSTRY_NAME_BUBBLE_GENERATOR.small :{G=m}generátor bublin STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=m}Karamelolom STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :{G=m}karamelolomu STR_INDUSTRY_NAME_TOFFEE_QUARRY.loc :{G=m}v karamelolomu STR_INDUSTRY_NAME_TOFFEE_QUARRY.small :{G=m}karamelolom STR_INDUSTRY_NAME_SUGAR_MINE :{G=m}Cukerný důl STR_INDUSTRY_NAME_SUGAR_MINE.gen :{G=m}cukerného dolu STR_INDUSTRY_NAME_SUGAR_MINE.loc :{G=m}v cukerném dole STR_INDUSTRY_NAME_SUGAR_MINE.small :{G=m}cukerný důl ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Beze jména STR_SV_TRAIN_NAME :{G=m}Vlak {COMMA} STR_SV_ROAD_VEHICLE_NAME :{G=n}Silniční vozidlo {COMMA} STR_SV_SHIP_NAME :{G=f}Loď {COMMA} STR_SV_AIRCRAFT_NAME :{G=n}Letadlo {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} sever STR_SV_STNAME_SOUTH :{STRING} jih STR_SV_STNAME_EAST :{STRING} východ STR_SV_STNAME_WEST :{STRING} západ STR_SV_STNAME_CENTRAL :{STRING} střed STR_SV_STNAME_TRANSFER :{STRING} přestupní STR_SV_STNAME_HALT :{STRING} zastávka STR_SV_STNAME_VALLEY :{STRING} údolí STR_SV_STNAME_HEIGHTS :{STRING} výšina STR_SV_STNAME_WOODS :{STRING} polesí STR_SV_STNAME_LAKESIDE :{STRING} jezero STR_SV_STNAME_EXCHANGE :{STRING} centrála STR_SV_STNAME_AIRPORT :Letiště {STRING} STR_SV_STNAME_OILFIELD :Ropná plošina {STRING} STR_SV_STNAME_MINES :{STRING} doly STR_SV_STNAME_DOCKS :Přístav {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} přípojné STR_SV_STNAME_SIDINGS :{STRING} odstavné STR_SV_STNAME_BRANCH :{STRING} odbočka STR_SV_STNAME_UPPER :Horní {STRING} STR_SV_STNAME_LOWER :Dolní {STRING} STR_SV_STNAME_HELIPORT :Heliport {STRING} STR_SV_STNAME_FOREST :{STRING} les STR_SV_STNAME_FALLBACK :{STRING} Stanice č. {NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (parní) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (parní) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (parní) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (parní) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (parní) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (dieselová) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (elektrická) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Osobní vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Poštovní vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Vagon na uhlí STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Cisternový vagon na ropu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Krytý vůz na dobytek STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Krytý vůz na zboží STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Násypný vůz na zrní STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Vagon na dřevo STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Násypný vůz na železnou rudu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Vagon na ocel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Krytý vůz na ceniny STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Krytý vůz na jídlo STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Vagon na papír STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Násypný vůz na měděnou rudu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Cisternový vagon na vodu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Vagon na ovoce STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Vagon na kaučuk STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Vagon na cukr STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Násypný vůz na cukrovou vatu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Násypný vůz na karamel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Krytý vůz na bubliny STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cisternový vagon na kolu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Krytý vůz na bonbony STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Krytý vůz na hračky STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Vagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Vagon na limonády STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Vagon na plast STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Osobní vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Poštovní vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Vagon na uhlí STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Cisternový vagon na ropu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Krytý vůz na dobytek STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Krytý vůz na zboží STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Násypný vůz na zrní STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Vagon na dřevo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Násypný vůz na železnou rudu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Vagon na ocel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Krytý vůz na ceniny STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Krytý vůz na jídlo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Vagon na papír STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Násypný vůz na měděnou rudu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cisternový vagon na vodu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Vagon na ovoce STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Vagon na kaučuk STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Vagon na cukr STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Násypný vůz na cukrovou vatu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Násypný vůz na karamel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Krytý vůz na bubliny STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cisternový vagon na kolu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Krytý vůz na bonbony STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Krytý vůz na hračky STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Vagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Vagon na limonády STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Vagon na plast STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (elektrická) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Osobní vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Poštovní vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Vagon na uhlí STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Cisternový vagon na ropu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Krytý vůz na dobytek STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Krytý vůz na zboží STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Násypný vůz na zrní STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Vagon na dřevo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Násypný vůz na železnou rudu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Vagon na ocel STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Krytý vůz na ceniny STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Krytý vůz na jídlo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Vagon na papír STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Násypný vůz na měděnou rudu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cisternový vagon na vodu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Vagon na ovoce STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Vagon na kaučuk STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Vagon na cukr STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Násypný vůz na cukrovou vatu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Násypný vůz na karamel STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Krytý vůz na bubliny STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cisternový vagon na kolu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Krytý vůz na bonbony STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Krytý vůz na hračky STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Vagon na baterie STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Vagon na limonády STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Vagon na plast STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Autobus MPS Regal STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Autobus Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Autobus Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Autobus Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Autobus Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Autobus Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Autobus Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Vůz na uhlí Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Vůz na uhlí Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Vůz na uhlí DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Poštovní vůz MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Poštovní vůz Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Poštovní vůz Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Poštovní vůz MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Poštovní vůz Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Poštovní vůz Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Cisterna na ropu Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Cisterna na ropu Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Cisterna na ropu Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Vůz na dobytek Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Vůz na dobytek Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Vůz na dobytek Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Vůz na zboží Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Vůz na zboží Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Vůz na zboží Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Vůz na zrní Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Vůz na zrní Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Vůz na zrní Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Vůz na dřevo Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Vůz na dřevo Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Vůz na dřevo Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Vůz na železnou rudu MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Vůz na železnou rudu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Vůz na železnou rudu Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Vůz na ocel Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Vůz na ocel Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Vůz na ocel Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Obrněný vůz Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Obrněný vůz Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Obrněný vůz Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Vůz na jídlo Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Vůz na jídlo Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Vůz na jídlo Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Vůz na papír Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Vůz na papír Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Vůz na papír MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Vůz na měděnou rudu MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Vůz na měděnou rudu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Vůz na měděnou rudu Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Cisterna na vodu Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Cisterna na vodu Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Cisterna na vodu MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Vůz na ovoce Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Vůz na ovoce Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Vůz na ovoce Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Vůz na kaučuk Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Vůz na kaučuk Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Vůz na kaučuk RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Vůz na cukr MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Vůz na cukr Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Vůz na cukr Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Cisterna na kolu MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Cisterna na kolu Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Cisterna na kolu Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Vůz na cukrovou vatu MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Vůz na cukrovou vatu Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Vůz na cukrovou vatu Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Vůz na karamel MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Vůz na karamel Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Vůz na karamel Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Vůz na hračky MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Vůz na hračky Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Vůz na hračky Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Vůz na bonbony MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Vůz na bonbony Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Vůz na bonbony Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Vůz na baterie MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Vůz na baterie Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Vůz na baterie Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Vůz na limonády MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Vůz na limonády Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Vůz na limonády Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Vůz na plast MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Vůz na plast Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Vůz na plast Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Vůz na bubliny MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Vůz na bubliny Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Vůz na bubliny Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Ropný tanker MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Ropný tanker CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Trajekt pro cestující MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Trajekt pro cestující FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Vznášedlo Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Trajekt pro cestující Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Trajekt pro cestující Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Nákladní loď Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Nákladní loď Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Nákladní loď MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Nákladní loď Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Vrtulník Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Vrtulník Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Vrtulník Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_SHORT.gen :{STRING.gen} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :Bójka {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :Bójka {TOWN} č. {COMMA} STR_FORMAT_COMPANY_NUM :(společnost {COMMA}) STR_FORMAT_GROUP_NAME :Skupina {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} STR_FORMAT_INDUSTRY_NAME.gen :{1:STRING.gen} {0:TOWN} STR_FORMAT_INDUSTRY_NAME.loc :{1:STRING.loc} {0:TOWN} STR_FORMAT_INDUSTRY_NAME.small :{1:STRING.small} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :Směrování {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Směrování {TOWN} č. {COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Železniční depo {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Železniční depo č. {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Silniční depo {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Silniční depo č. {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_SHIP :Lodní depo {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Lodní depo č. {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_AIRCRAFT :Hangár {STATION} STR_UNKNOWN_STATION :neznámá stanice STR_DEFAULT_SIGN_NAME :Nápis STR_COMPANY_SOMEONE :někdo STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Pozorovatel, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_INDUSTRY_NAME.gen :{INDUSTRY.gen} STR_INDUSTRY_NAME.loc :{INDUSTRY.loc} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/norwegian_bokmal.txt0000644000000000000000000143543412246102561017475 0ustar rootroot##name Norwegian (Bokmal) ##ownname Norsk (bokmål) ##isocode nb_NO ##plural 0 ##textdir ltr ##digitsep {NBSP} ##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0414 ##grflangid 0x2f ##gender masculine feminine neuter ##case small # $Id: norwegian_bokmal.txt 26094 2013-11-24 19:57:23Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(udefinert streng) STR_JUST_NOTHING :Ingenting # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Passasjerer STR_CARGO_PLURAL_COAL :Kull STR_CARGO_PLURAL_MAIL :Post STR_CARGO_PLURAL_OIL :Olje STR_CARGO_PLURAL_LIVESTOCK :Buskap STR_CARGO_PLURAL_GOODS :Gods STR_CARGO_PLURAL_GRAIN :Korn STR_CARGO_PLURAL_WOOD :Tømmer STR_CARGO_PLURAL_IRON_ORE :Jernmalm STR_CARGO_PLURAL_STEEL :Stål STR_CARGO_PLURAL_VALUABLES :Verdisaker STR_CARGO_PLURAL_COPPER_ORE :Kobbermalm STR_CARGO_PLURAL_MAIZE :Mais STR_CARGO_PLURAL_FRUIT :Frukt STR_CARGO_PLURAL_DIAMONDS :Diamanter STR_CARGO_PLURAL_FOOD :Mat STR_CARGO_PLURAL_PAPER :Papir STR_CARGO_PLURAL_GOLD :Gull STR_CARGO_PLURAL_WATER :Vann STR_CARGO_PLURAL_WHEAT :Hvete STR_CARGO_PLURAL_RUBBER :Gummi STR_CARGO_PLURAL_SUGAR :Sukker STR_CARGO_PLURAL_TOYS :Leketøy STR_CARGO_PLURAL_CANDY :Godteri STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COTTON_CANDY :Sukkerspinn STR_CARGO_PLURAL_BUBBLES :Bobler STR_CARGO_PLURAL_TOFFEE :Karamell STR_CARGO_PLURAL_BATTERIES :Batterier STR_CARGO_PLURAL_PLASTIC :Plast STR_CARGO_PLURAL_FIZZY_DRINKS :Mineralvann # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Passasjer STR_CARGO_SINGULAR_COAL :Kull STR_CARGO_SINGULAR_MAIL :Post STR_CARGO_SINGULAR_OIL :Olje STR_CARGO_SINGULAR_LIVESTOCK :Buskap STR_CARGO_SINGULAR_GOODS :Gods STR_CARGO_SINGULAR_GRAIN :Korn STR_CARGO_SINGULAR_WOOD :Tømmer STR_CARGO_SINGULAR_IRON_ORE :Jernmalm STR_CARGO_SINGULAR_STEEL :Stål STR_CARGO_SINGULAR_VALUABLES :Verdisaker STR_CARGO_SINGULAR_COPPER_ORE :Kobbermalm STR_CARGO_SINGULAR_MAIZE :Mais STR_CARGO_SINGULAR_FRUIT :Frukt STR_CARGO_SINGULAR_DIAMOND :Diamant STR_CARGO_SINGULAR_FOOD :Mat STR_CARGO_SINGULAR_PAPER :Papir STR_CARGO_SINGULAR_GOLD :Gull STR_CARGO_SINGULAR_WATER :Vann STR_CARGO_SINGULAR_WHEAT :Hvete STR_CARGO_SINGULAR_RUBBER :Gummi STR_CARGO_SINGULAR_SUGAR :Sukker STR_CARGO_SINGULAR_TOY :Leketøy STR_CARGO_SINGULAR_CANDY :Godteri STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COTTON_CANDY :Sukkerspinn STR_CARGO_SINGULAR_BUBBLE :Boble STR_CARGO_SINGULAR_TOFFEE :Karamell STR_CARGO_SINGULAR_BATTERY :Batteri STR_CARGO_SINGULAR_PLASTIC :Plast STR_CARGO_SINGULAR_FIZZY_DRINK :Mineralvann # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} passasjer{P "" er} STR_QUANTITY_COAL :{WEIGHT_LONG} kull STR_QUANTITY_MAIL :{COMMA} postsekk{P "" er} STR_QUANTITY_OIL :{VOLUME_LONG} olje STR_QUANTITY_LIVESTOCK :{COMMA} enhet{P "" er} buskap STR_QUANTITY_GOODS :{COMMA} kasse{P "" r} gods STR_QUANTITY_GRAIN :{WEIGHT_LONG} korn STR_QUANTITY_WOOD :{WEIGHT_LONG} tømmer STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} jernmalm STR_QUANTITY_STEEL :{WEIGHT_LONG} stål STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" er} med verdisaker STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} kobbermalm STR_QUANTITY_MAIZE :{WEIGHT_LONG} mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} frukt STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" er} med diamanter STR_QUANTITY_FOOD :{WEIGHT_LONG} mat STR_QUANTITY_PAPER :{WEIGHT_LONG} papir STR_QUANTITY_GOLD :{COMMA} sekk{P "" er} med gull STR_QUANTITY_WATER :{VOLUME_LONG} vann STR_QUANTITY_WHEAT :{WEIGHT_LONG} hvete STR_QUANTITY_RUBBER :{VOLUME_LONG} gummi STR_QUANTITY_SUGAR :{WEIGHT_LONG} sukker STR_QUANTITY_TOYS :{COMMA} leke{P "" r} STR_QUANTITY_SWEETS :{COMMA} sekk{P "" er} med godteri STR_QUANTITY_COLA :{VOLUME_LONG} cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sukkerspinn STR_QUANTITY_BUBBLES :{COMMA} boble{P "" r} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} karamell STR_QUANTITY_BATTERIES :{COMMA} batteri{P "" er} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plast STR_QUANTITY_FIZZY_DRINKS :{COMMA} mineralvann STR_QUANTITY_N_A :Ikke tilgjengelig # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}KL STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}BS STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}KN STR_ABBREV_WOOD :{TINY_FONT}TR STR_ABBREV_IRON_ORE :{TINY_FONT}JM STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VS STR_ABBREV_COPPER_ORE :{TINY_FONT}KM STR_ABBREV_MAIZE :{TINY_FONT}MS STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}MT STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GL STR_ABBREV_WATER :{TINY_FONT}VN STR_ABBREV_WHEAT :{TINY_FONT}HV STR_ABBREV_RUBBER :{TINY_FONT}GM STR_ABBREV_SUGAR :{TINY_FONT}SK STR_ABBREV_TOYS :{TINY_FONT}LT STR_ABBREV_SWEETS :{TINY_FONT}GT STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}SP STR_ABBREV_BUBBLES :{TINY_FONT}BO STR_ABBREV_TOFFEE :{TINY_FONT}KM STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}MV STR_ABBREV_NONE :{TINY_FONT}IN STR_ABBREV_ALL :{TINY_FONT}ALLE # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} passasjer{P "" er} STR_BAGS :{COMMA} sekk{P "" er} STR_TONS :{COMMA} tonn STR_LITERS :{COMMA} liter STR_ITEMS :{COMMA} enhet{P "" er} STR_CRATES :{COMMA} kasse{P "" r} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Mørkeblå STR_COLOUR_PALE_GREEN :Lysegrønn STR_COLOUR_PINK :Rosa STR_COLOUR_YELLOW :Gul STR_COLOUR_RED :Rød STR_COLOUR_LIGHT_BLUE :Lyseblå STR_COLOUR_GREEN :Grønn STR_COLOUR_DARK_GREEN :Mørkegrønn STR_COLOUR_BLUE :Blå STR_COLOUR_CREAM :Kremgul STR_COLOUR_MAUVE :Rødlilla STR_COLOUR_PURPLE :Lilla STR_COLOUR_ORANGE :Oransje STR_COLOUR_BROWN :Brun STR_COLOUR_GREY :Grå STR_COLOUR_WHITE :Hvit # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mi/t STR_UNITS_VELOCITY_METRIC :{COMMA} km/t STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA} hk STR_UNITS_POWER_METRIC :{COMMA} hk STR_UNITS_POWER_SI :{COMMA} kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fot STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filterstreng: STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn søkefilter STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv inn et søkeord for å filtrere listen med STR_TOOLTIP_SORT_ORDER :{BLACK}Velg sorteringsrekkefølge (synkende/stigende) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Velg sorteringskriterier STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Velg filtreringskriterier STR_BUTTON_SORT_BY :{BLACK}Sorter etter STR_BUTTON_LOCATION :{BLACK}Gå til STR_BUTTON_RENAME :{BLACK}Gi nytt navn STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lukk vindu STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindustittel - dra her for å flytte vindu STR_TOOLTIP_SHADE :{BLACK}Skyggevindu - Vis kun tittelfeltet STR_TOOLTIP_DEBUG :{BLACK}Vis NewGRF-debuggingsinformasjon STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vinduet mot 'Lukk alle vinduer'-knappen STR_TOOLTIP_RESIZE :{BLACK}Klikk og dra for å endre størrelsen på vinduet STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Veksle mellom stor/liten vindustørrelse STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - ruller listen opp/ned STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - ruller listen til venstre/høyre STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygninger osv. på et landområde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat # Query window STR_BUTTON_DEFAULT :{BLACK}Standard STR_BUTTON_CANCEL :{BLACK}Avbryt STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lengde: {NUM} STR_MEASURE_AREA :{BLACK}Område: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lengde: {NUM}{}Høydeforskjell: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Område: {NUM} x {NUM}{}Høydeforskjell: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Folketall STR_SORT_BY_CAPTION_NAME :{BLACK}Navn STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns STR_SORT_BY_NAME :Navn STR_SORT_BY_PRODUCTION :Produksjon STR_SORT_BY_TYPE :Type STR_SORT_BY_TRANSPORTED :Transportert STR_SORT_BY_NUMBER :Nummer STR_SORT_BY_PROFIT_LAST_YEAR :Fortjeneste i fjor STR_SORT_BY_PROFIT_THIS_YEAR :Fortjeneste i år STR_SORT_BY_AGE :Alder STR_SORT_BY_RELIABILITY :Pålitelighet STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total kapasitet per varetype STR_SORT_BY_MAX_SPEED :Maks hastighet STR_SORT_BY_MODEL :Modell STR_SORT_BY_VALUE :Verdi STR_SORT_BY_LENGTH :Lengde STR_SORT_BY_LIFE_TIME :Gjenværende levetid STR_SORT_BY_TIMETABLE_DELAY :Rutetabellforsinkelse STR_SORT_BY_FACILITY :Stasjonstype STR_SORT_BY_WAITING :Verdi på ventende varer STR_SORT_BY_RATING_MAX :Høyeste varerating STR_SORT_BY_RATING_MIN :Laveste varerating STR_SORT_BY_ENGINE_ID :MaskinID (klassisk type) STR_SORT_BY_COST :Kostnad STR_SORT_BY_POWER :Kraft STR_SORT_BY_TRACTIVE_EFFORT :Trekkraft STR_SORT_BY_INTRO_DATE :Introduksjonsdato STR_SORT_BY_RUNNING_COST :Driftskostnad STR_SORT_BY_POWER_VS_RUNNING_COST :Effekt/Driftskostnad STR_SORT_BY_CARGO_CAPACITY :Lastekapasitet STR_SORT_BY_RANGE :Rekkevidde # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Sett spillet på pause STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Dobbel hastighet på spillet STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Innstillinger STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Lagre, avbryt spillet, avslutt OpenTTD STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vis kart, ekstra tilleggsvindu eller skiltliste STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vis byoversikt STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vis subsidier STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vis liste over firmaets stasjoner STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vis firmaenes økonomiske data STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vis firmaenes generelle data STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vis grafer STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vis firmarangeringstabell STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansier bygging av ny industri eller vis liste over industrier STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vis gruppe- og kjøretøyliste over firmaets tog. Ctrl+klikk viser kun kjøretøyliste STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vis gruppe- og kjøretøyliste over firmaets lastebiler/busser. Ctrl+klikk viser kun kjøretøyliste STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vis gruppe- og kjøretøyliste over firmaets skip. Ctrl+klikk viser kun kjøretøyliste STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vis gruppe- og kjøretøyliste over firmaets luftfartøy. Ctrl+klikk viser kun kjøretøyliste STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zoom inn STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zoom ut STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg veier STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg havner STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg flyplasser STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Åpne landskapsverktøylinjen for å heve/senke land, plante trær, osv. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vis lyd-/musikkinnstillinger STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vis siste melding/nyhet, vis meldingsinnstillinger STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informasjon om landområde, konsoll, skriptfeilsøking, skjermbilder, om OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skift verktøylinjer # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Lagre scenario, last inn scenario, forlate scenarioredigeringsprogrammet, avslutt OpenTTD STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Rediger scenario STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flytt startdatoen tilbake ett år STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flytt startdatoen frem ett år STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikk her for å taste inn startåret STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vis kart og byoversikt STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskapsgenerering STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygenerering STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrigenerering STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Veibygging STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plant trær. Shift slår av/på kostnadsestimat STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Plasser skilt STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Plasser objekt. Shift slår av/på kostnadsestimat ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Lagre scenario STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Last inn scenario STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Lagre høydekart STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Last inn høydekart STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Avslutt redigeringsprogram STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Avslutt ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spillinnstillinger STR_SETTINGS_MENU_CONFIG_SETTINGS :Avanserte innstillinger STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Spillskript-innstillinger STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-innstillinger STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Instillinger for gjennomsiktighet STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Vis bynavn STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Vis stasjonsnavn STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Vis kontrollpunkt STR_SETTINGS_MENU_SIGNS_DISPLAYED :Vis skilt STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Vis motstanderskilt og -navn STR_SETTINGS_MENU_FULL_ANIMATION :Fullstending animasjon STR_SETTINGS_MENU_FULL_DETAIL :Maks detaljer STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gjennomsiktige bygninger STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gjennomsiktige skilt ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Lagre spill STR_FILE_MENU_LOAD_GAME :Last inn spill STR_FILE_MENU_QUIT_GAME :Avslutt gjeldende spill STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Avslutt OpenTTD ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Verdenskart STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra tilleggsvindu STR_MAP_MENU_SIGN_LIST :Skiltliste ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Byoversikt STR_TOWN_MENU_FOUND_TOWN :Grunnlegg by ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidier STR_SUBSIDIES_MENU_GOAL :Nåværende mål ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf over fortjeneste STR_GRAPH_MENU_INCOME_GRAPH :Graf over Inntekter STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf over leverte varer STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf over prestasjonhistorikk STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf over firmaverdi STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Varetakster ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Firmarangeringstabell STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detaljert prestasjonrating STR_GRAPH_MENU_HIGHSCORE :Tavle med høyeste poengsummer ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Liste over industrier STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industrikjeder STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finansier ny industri ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Bygg jernbane STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Bygg elektrisk jernbane STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Bygg monorail STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Bygg maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Bygg vei STR_ROAD_MENU_TRAM_CONSTRUCTION :Bygg trikkespor ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Bygg vannveier ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Bygg flyplass ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Landskapsverktøy STR_LANDSCAPING_MENU_PLANT_TREES :Plant trær STR_LANDSCAPING_MENU_PLACE_SIGN :Plasser skilt ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Lyd/musikk ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Siste melding/nyhet STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Tidligere meldinger ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Informasjon om landområde STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Vis/skjul konsoll STR_ABOUT_MENU_AI_DEBUG :AI/Spillskript-feilsøking STR_ABOUT_MENU_SCREENSHOT :Skjermbilde STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Fullt forstørret skjermbilde STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Normalt forstørret skjermbilde STR_ABOUT_MENU_GIANT_SCREENSHOT :Skjermbilde av hele kartet STR_ABOUT_MENU_ABOUT_OPENTTD :Om 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Spriteforskyver STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Vis/skjul markeringsramme STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Veksle mellom farger på skitne blokker ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Mai STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Des STR_MONTH_JAN :januar STR_MONTH_FEB :februar STR_MONTH_MAR :mars STR_MONTH_APR :april STR_MONTH_MAY :mai STR_MONTH_JUN :juni STR_MONTH_JUL :juli STR_MONTH_AUG :august STR_MONTH_SEP :september STR_MONTH_OCT :oktober STR_MONTH_NOV :november STR_MONTH_DEC :desember ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Nøkkel STR_GRAPH_KEY_TOOLTIP :{BLACK}Vis nøkkel for grafene STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Fortjenestegraf STR_GRAPH_INCOME_CAPTION :{WHITE}Inntektsgraf STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Vareenheter levert STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Prestasjonsvurdering av firma (maks poeng=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmaverdier STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Varetakster STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dager i transport STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Betaling for levering av ti vareenheter (eller 10,000 liter) over en avstand på 20 ruter STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Vis alle STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Skjul alle STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Vis alle varer på varetakstgrafen STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Skjul alle varer på varetakstgrafen STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Vis/skjul graf for en bestemt varetype STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vis detaljerte prestasjonsmålinger # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Nøkkel til firmagraf STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikk her for å vise/skjule firmaet i grafen. # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Firmarangering STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingeniør STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Trafikkleder STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transportkoordinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Oppsynsmann STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktør STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Sjefsleder STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Formann STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Finansfyrste # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detaljert prestasjonsrating STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaljer STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}{NBSP}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vis detaljer om dette firmaet ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Kjøretøy: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasjoner: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. fortjeneste: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntekt: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks inntekt: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Levert: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Varer: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Penger: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lån: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totalt: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Antall kjøretøy med positiv fortjeneste i fjor. Dette inkluderer veikjøretøy, tog, skip og luftfartøy STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Antall nylig betjente stasjonsdeler. Hver del av en stasjon (f.eks. togstasjon, bussholdeplass, flyplass) er medregnet, selv om de er tilkoblet en stasjon. STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Fortjenesten til kjøretøyet med lavest inntekt (kun kjøretøy eldre enn 2 år er medregnet) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Inntekt i det kvartalet med minst fortjeneste de siste 12 kvartalene STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Inntekt i det kvartalet med størst fortjeneste de siste 12 kvartalene STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Vareenheter levert de siste fire kvartalene. STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Antall varetyper levert det siste kvartalet. STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Hvor mye penger dette firmaet har i banken STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Størrelsen på firmaets lån STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Totale poeng av mulige poeng # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz-jukeboks STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Alle STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Gamle slagere STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nye godbiter STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Egendefinert 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Egendefinert 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musikkvolum STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Lydeffektvolum STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAKS STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}» STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Spor STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Tittel STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Tilfeldig STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Spill forrige spor STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Spill neste spor STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stopp musikken STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Start musikken STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Dra for å endre volum på musikk og lydeffekter STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Velg alle spor STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Velg programmet 'gamle slagere' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Velg programmet 'nye godbiter' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Velg programmet 'Ezy Street' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Velg programmet 'Egendefinert 1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Velg programmet 'Egendefinert 2' STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skru av/på tilfeldig program STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vis musikkspormeny STR_ERROR_NO_SONGS :{WHITE}Et musikksett uten sanger er valgt. Ingen sanger vil bli avspilt # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musikkprogram STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Sporliste STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Tøm STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Slett gjeldende program (gjelder bare Egendefinert 1 og 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikk på et musikkspor for å legge til gjeldende program (Gjelder bare egendefinert 1 og 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikk på et musikkspor for å fjerne det fra nåværende program (Gjelder bare egendefinert 1 og 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Beste firmaer som nådde {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Firmarangering i {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Forretningsmann STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entreprenør STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrialist STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Århundrets finansfyrste STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} oppnår '{STRING}'-status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} fra {COMPANY} oppnår '{STRING}'-status! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Kart - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Konturer STR_SMALLMAP_TYPE_VEHICLES :Kjøretøy STR_SMALLMAP_TYPE_INDUSTRIES :Industrier STR_SMALLMAP_TYPE_ROUTES :Ruter STR_SMALLMAP_TYPE_VEGETATION :Vegetasjon STR_SMALLMAP_TYPE_OWNERS :Eiere STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vis landkonturer på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vis kjøretøy på kartet STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vis industrier på kartet STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vis transportruter på kartet STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vis vegetasjon på kartet STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vis landeiere på kartet STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikk på en industritype for å slå på dens visning. Ctrl+klikk deaktiverer alle typer unntatt den valgte. Ctrl+klikk på den igjen for å slå på visning av alle industrier STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på et firma for å slå på visning av firmaets eiendom. Ctrl+klikk deaktiverer visning av alle firmaene unntatt det valgte. Ctrl+klikk på firmaet igjen for å slå på visning av alle firmaene STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Veier STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jernbaner STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stasjoner/Flyplasser/Havner STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Bygninger/Industrier STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Kjøretøy STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Tog STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Kjøretøy STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skip STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Luftfartøy STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportruter STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Skog STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Jernbanestasjon STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Lasteterminal STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busstasjon STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flyplass/Helikopterplass STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Havn STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Utmark STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gress STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Bart land STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Jorder STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Trær STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Steiner STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Vann STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Ingen eier STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Byer STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrier STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Ørken STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snø STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynavn på kartet STR_SMALLMAP_CENTER :{BLACK}Midstill oversiktskartet på gjeldende posisjon STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Deaktiver alle STR_SMALLMAP_ENABLE_ALL :{BLACK}Aktiver alle STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Vis høyde STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ikke vis industrier på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vis alle industrier på kartet STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Veksle mellom visning av høydekart STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikke vis firmaeiendommer på kartet STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vis alle firmaeiendommer på kartet # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Vis siste melding eller nyhetsrapport STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSE * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOLAGRING STR_STATUSBAR_SAVING_GAME :{RED}* * LAGRER SPILL * * # News message history STR_MESSAGE_HISTORY :{WHITE}Meldingshistorikk STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}En liste over de siste nyhetsmeldingene STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Melding STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første tog ankommer {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første buss ankommer {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første lastebil ankommer {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første passasjertrikk ankommer {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første varetrikk ankommer {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første skip ankommer {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Innbyggerne jubler . . .{}Første luftfartøy ankommer {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Togkrasj!{}{COMMA} dør i flammehav etter kollisjon STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Bilulykke!{}Sjåfør dør i flammehav etter kollisjon med tog STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Bilulykke!{}{COMMA} dør i flammehav etter kollisjon med tog STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flystyrt!{}{COMMA} dør i flammehav ved {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flystyrt!{}{COMMA} dør i flammehav etter at flyet gikk tom for drivstoff! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinerulykke ved {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Kjøretøy ødelagt i UFO-kollisjon! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplosjon på oljeraffineri i nærheten av {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrikk ødelagt under mistenkelige omstendigheter i nærheten av {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}UFO lander i nærheten av {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Gruvegangkollaps fører til store ødeleggelser i nærheten av {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flom!{}Minst {COMMA} savnet eller antatt død{P "" e} etter voldsom oversvømmelse! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportfirma i trøbbel! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vil selges eller slås konkurs hvis ikke firmaets økonomi bedrer seg snart! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportfirmaer fusjonerer! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} har blitt solgt til {STRING} for {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Konkurs! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} har blitt nedlagt av kreditorene og alle aktiva har blitt solgt! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nytt transportfirma opprettet! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} starter opp i nærheten av {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} har blitt kjøpt opp av {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Sjef) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponset grunnleggelsen av den nye byen {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ny{G "" "" tt} {STRING} bygges i nærheten av {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Ny{G "" "" tt} {STRING} plantes i nærheten av {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} legges ned! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} legges ned pga. leveringsproblemer! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} legges ned pga. tømmermangel. STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Europeisk valutaunion!{}{}Euro introdusert som enerådende valutaenhet for transaksjoner i landet ditt! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Global finanskrise!{}{}Økonomer frykter det verste i det økonomien raser! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Finanskrisen over!{}{}Opptur i markedet gir industrien selvsikkerheten tilbake! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} øker produksjonen! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Ny kullåre funnet i {INDUSTRY}!{}En dobling i produksjonen ventes! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nye oljereserver funnet i {INDUSTRY}!{}En dobling i produksjonen ventes! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Forbedring i gårdbruksmetoder på {INDUSTRY} forventes å doble produksjonen! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Produksjonen av {STRING} ved {INDUSTRY} øker med {COMMA}{NBSP}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} sin produksjon har sunket med 50{NBSP}% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektinvasjon gjør stor skade på {INDUSTRY}!{}Produksjonen synker med 50{NBSP}% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produksjonen av {STRING} ved {INDUSTRY} synker med {COMMA}{NBSP}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} venter i togstallen STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} venter i garasjen STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} venter i skipsdokken STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} venter i hangaren # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordre på ruteplanen STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har en tom ordre STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har doble ordre STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har en ugyldig stasjon i ordrelisten # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} begynner å bli gammel STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er veldig gammel STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er veldig gammel, og bør byttes ut snarest STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kan ikke finne en rute å fortsette på. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} har kjørt seg vill STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}s inntekt i fjor var {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kan ikke kjøre til neste destinasjon fordi den er utenfor rekkevidde STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stoppet fordi ombyggingsordre feilet STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Kunne ikke autofornye {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Ny{G "" "" tt} {STRING} er nå tilgjengelig! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ny{G "" "" tt} {STRING} er nå tilgjengelig! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} godtar ikke lenger {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} godtar ikke lenger {STRING} eller {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} godtar nå {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} godtar nå {STRING} og {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsidietilbud har gått ut:{}{}{STRING} fra {STRING} til {STRING} vil ikke subsidieres. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidie er trukket tilbake:{}{}Transport av {STRING} fra {STRING} til {STRING} subsidieres ikke lenger. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidietilbud:{}{}Første transport av {STRING} fra {STRING} til {STRING} vil subsidieres av bystyret i ett år! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi 50{NBSP}% ekstra fortjeneste det neste året! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi dobbel fortjeneste det neste året! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi trippel fortjeneste det neste året! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidie gitt til {STRING}!{}{}Transport av {STRING} fra {STRING} til {STRING} vil gi firedobbel fortjeneste det neste året! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Traffikkaos i {TOWN}!{}{}Veiarbeid finansiert av {STRING} medfører 6 måneders irritasjon for bilistene! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transport monopol! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokal myndighet i {TOWN} signerer kontrakt med {STRING} for ett år med eksklusift transport rettigheter! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Tilleggsvindu {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopier til tilleggsvindu STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopier hovedvisningen til dette tilleggsvinduet STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Lim inn fra tilleggsvindu STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopier plasseringen av dette tilleggsvinduet til hovedvisningen # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spillinnstillinger STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenhet STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Velg valutaenhet som skal brukes ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Britisk pund (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Amerikansk dollar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japansk yen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Østerriksk shilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgisk franc (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Sveitsisk franc (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Tsjekkisk koruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Tysk mark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dansk krone (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spansk pesetas (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finsk mark (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Fransk franc (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Gresk drakme (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungarsk forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandsk krone (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italiensk lire (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Hollandsk guilder (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norsk krone (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polsk złoty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumensk leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russisk rubel (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovensk tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Svensk krone (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Tyrkisk lire (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovakisk koruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasiliansk real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estlandsk krone (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Sørkoreanske won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Sørafrikanske rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Egendefinert... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Måleenhet STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Velg måleenhet som skal brukes ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperisk STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrisk STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kjøretøy STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Velg kjøreside for veier STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Venstrekjøring STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Høyrekjøring STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Bynavn STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Velg nasjonalitet på bynavn ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Engelsk (Original) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fransk STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Tysk STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Engelsk (utvidet) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinamerikansk STR_GAME_OPTIONS_TOWN_NAME_SILLY :Tåpelige STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svensk STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Nederlandsk STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polsk STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakisk STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norsk STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarsk STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Østeriske STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumensk STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tsjekkisk STR_GAME_OPTIONS_TOWN_NAME_SWISS :Sveitsisk STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dansk STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Tyrkisk STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiensk STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalansk ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Velg intervall for automatisk lagring STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hver måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hver 3. måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hver 6. måned STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Hver 12. måned STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Velg språk som skal brukes STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Fullskjerm STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Kryss av denne knappen for å spille OpenTTD i fullskjermmodus STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skjermoppløsning STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Velg skjermoppløsningen som skal brukes STR_GAME_OPTIONS_RESOLUTION_OTHER :annet STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Filformat for skjermbilde STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Velg hvilket format skjermbildet skal lagres i STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manglende/ødelagt{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lydsett STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Velg lydsett som skal brukes STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om lydsettet STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikksett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Velg musikksett som skal brukes STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ødelagt{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Ytterligere informasjon om det originale musikksettet STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermmodus mislyktes # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Egendefinert valuta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Valutakurs: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Reduser valutaen din i forhold til ett pund (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Øk valutaen din i forhold til ett pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Still inn valutakursen din i forhold til ett pund (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Skilletegn: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Velg desimalskilletegn for din valuta STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Velg prefiks for din valuta STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Velg suffiks for din valuta STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Gå over til euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Gå over til euro: {ORANGE}aldri STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Velg år for overgang til euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gå over til euro tidligere STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gå over til euro senere STR_CURRENCY_PREVIEW :{LTBLUE}Forhåndsvis: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 pund (£) i din valuta STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Endre egendefinert valutaparameter STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maks antall motstandere: {ORANGE}{COMMA} STR_NONE :Ingen STR_FUNDING_ONLY :Kun finansiering STR_MINIMAL :Minimal STR_NUM_VERY_LOW :Veldig lavt STR_NUM_LOW :Lavt STR_NUM_NORMAL :Normalt STR_NUM_HIGH :Høyt STR_NUM_CUSTOM :Egendefinert STR_NUM_CUSTOM_NUMBER :Egendefinert ({NUM}) STR_VARIETY_NONE :Ingen STR_VARIETY_VERY_LOW :Veldig lav STR_VARIETY_LOW :Lav STR_VARIETY_MEDIUM :Middels STR_VARIETY_HIGH :Høy STR_VARIETY_VERY_HIGH :Veldig høy STR_AI_SPEED_VERY_SLOW :Veldig treg STR_AI_SPEED_SLOW :Treg STR_AI_SPEED_MEDIUM :Middels STR_AI_SPEED_FAST :Rask STR_AI_SPEED_VERY_FAST :Veldig rask STR_SEA_LEVEL_VERY_LOW :Veldig lavt STR_SEA_LEVEL_LOW :Lavt STR_SEA_LEVEL_MEDIUM :Middels STR_SEA_LEVEL_HIGH :Høyt STR_SEA_LEVEL_CUSTOM :Egendefinert STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Egendefinert ({NUM}%) STR_RIVERS_NONE :Ingen STR_RIVERS_FEW :Få STR_RIVERS_MODERATE :Middels STR_RIVERS_LOT :Mange STR_DISASTER_NONE :Ingen STR_DISASTER_REDUCED :Redusert STR_DISASTER_NORMAL :Normalt STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Veldig flatt STR_TERRAIN_TYPE_FLAT :Flatt STR_TERRAIN_TYPE_HILLY :Åslendt STR_TERRAIN_TYPE_MOUNTAINOUS :Berglendt STR_CITY_APPROVAL_PERMISSIVE :Ettergivende STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Fientlig STR_WARNING_NO_SUITABLE_AI :{WHITE}Ingen egnet AI tilgjengelig...{}Du kan laste ned flere AIer fra nettet med spillets nedlastingssystem. # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avanserte innstillinger STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrer streng: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Vis alle STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skjul alle STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(ingen forklaring tilgjengelig) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Standard verdi: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Instillings type: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Klient innstilling (ikke lagret i lagringsfilene, påvirker alle spill) STR_CONFIG_SETTING_TYPE_GAME_MENU :Selskapet innstilling (lagret i lagringsfilene, påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Selskapet innstilling (lagret i lagringsfilen, påvirker bare gjeldende spill) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Selskapet innstilling (lagret i lagringsfilen, påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Selskapet innstilling (lagret i lagringsfilen, påvirker bare gjeldende selskap) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vis: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Viser kun endrede innstillinger i listen nedenfor STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnleggende innstillinger STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanserte innstillinger STR_CONFIG_SETTING_RESTRICT_ALL :Avanserte innstillinger / alle innstillinger STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Innstillinger med annen verdi enn standarden STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Innstillinger med annen verdi enn innstillingene dine for nye spill STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Begrenser listen nedenfor til bestemte innstillingstyper STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle instillingstyper STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klientinnstillinger (global innstilling; påvirker alle spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spillinnstillinger (lagres i lagringsfil; påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spillinnstillinger (lagres i lagringsfilen; påvirker bare gjeldende spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Selskapets innstillinger (lagres i lagringsfilen; påvirker bare nye spill) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Selskapets innstillinger (lagret i lagringsfilen; påvirker bare gjeldende selskap) STR_CONFIG_SETTING_OFF :Av STR_CONFIG_SETTING_ON :På STR_CONFIG_SETTING_DISABLED :Deaktivert STR_CONFIG_SETTING_COMPANIES_OFF :Av STR_CONFIG_SETTING_COMPANIES_OWN :Eget firma STR_CONFIG_SETTING_COMPANIES_ALL :Alle firmaer STR_CONFIG_SETTING_NONE :Ingen STR_CONFIG_SETTING_ORIGINAL :Original STR_CONFIG_SETTING_REALISTIC :Realistisk STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Venstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Midtstilt STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høyre STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimalt innledende lån: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Det maksimale beløp et selskap kan låne (uten å ta inflasjon i betraktning) STR_CONFIG_SETTING_INTEREST_RATE :Lånerente: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Lånerente; kontrollerer også inflasjonen, hvis aktivert STR_CONFIG_SETTING_RUNNING_COSTS :Driftskostnader: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Still nivå av vedlikehold og driftskostnader for kjøretøy og infrastruktur STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Byggehastighet: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Begrens mengden av byggetiltak hos datastyrte motsandere STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Havarerte kjøretøy: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Kontrollér hvor ofte mangelfullt vedlikeholdte kjøretøy kan bryte sammen STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplikator for subsidier: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Angi hvor mye som betales for subsidierte forbindelser STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Byggekostnader: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Still kostnadsnivå for bygging og kjøp STR_CONFIG_SETTING_RECESSIONS :Resesjoner: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Hvis aktivert, resesjoner kan forekomme med noen års mellomrom. Under en lavkonjunktur vil all produksjon være betydelig lavere (den returnerer til tidligere nivå når resesjonen er over) STR_CONFIG_SETTING_TRAIN_REVERSING :Forby reversering av tog i stasjoner: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Hvis aktivert, vil ikke toget rygge i ikke-terminus stationer, selv om det er en kortere vei til deres neste stasjon ved å rygge STR_CONFIG_SETTING_DISASTERS :Katastrofer: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Aktiver/inaktiver katastrofer som tidvis kan blokkere eller ødelegge kjøretøy og infrastruktur STR_CONFIG_SETTING_CITY_APPROVAL :Byrådets holdning til restrukturering i nærområdet: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Velg hvor mye støy og miljøskader forårsaket av selskaper påvirker deres anseelse i byen og muligheter for ytterligere utbygging i nærområdet STR_CONFIG_SETTING_BUILDONSLOPES :Tillat bygging på skråninger og i vannkanten: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Om dette slås på kan spor og stasjoner bygges på de fleste hellninger. Om slått av, vil de kun tillates på hellninger med samme retning som sporet, og vil da ikke trenge fundamenter. STR_CONFIG_SETTING_AUTOSLOPE :Tillat landskapsendring under bygninger, spor, osv.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillat endring av landskapet under bygninger og spor uten å fjerne dem STR_CONFIG_SETTING_CATCHMENT :Mer realistisk størrelse på oppfangingsområder: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ha oppsamlingsområder i forskjellige størrelser for forskjellige typer stasjoner og lufthavner STR_CONFIG_SETTING_EXTRADYNAMITE :Tillat fjerning av flere veier, broer osv. eid av byene: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Gjør det enklere å fjerne infrastruktur og bygninger som tilhører byer STR_CONFIG_SETTING_TRAIN_LENGTH :Maksimal toglengde: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Sett maksimumlengde for tog STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} rute{P 0 "" r} STR_CONFIG_SETTING_SMOKE_AMOUNT :Mengde med kjøretøyrøyk/gnister: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Velg hvor mye røyk og hvor mange gnister som kommer fra kjøretøy STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Togakselerasjonstype: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Velg fysikkmodell for togakselerasjon. Originalmodellen gjør at alle tog går saktere i oppoverbakke, mens den realistiske modellen tar flere faktorer i betraktning. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Kjøretøyers akselerasjonstype: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Velg fysikkmodell for kjøretøyakselerasjon. Originalmodellen gjør at alle kjøretøy går sakte i motbakke. Den realistiske modellen tar flere forhold med kjøretøyene i betraktning. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Skråningens bratthet for tog: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Brattheten av et skrått kartelement for et tog. Høyere verdier gjør det vanskeligere å klatre en bakke STR_CONFIG_SETTING_PERCENTAGE :{COMMA} % STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Skråningens bratthet for veikjøretøy: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Brattheten av et skrått kartelement for et veikjøretøy. Høyere verdier gjør det vanskeligere å kjøre opp bakken STR_CONFIG_SETTING_FORBID_90_DEG :Forby tog og skip å gjøre 90° svinger: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-graders svinger oppstår når et horisontalt spor etterfølges av et vertikalt spor på tilstøtende kartelement, som dermed fører til at toget må snu 90 grader når det krysser kartelementet, istedenfor de vanlige 45 grader for andre spor-kombinasjoner. Dette gjelder også for båters svingradius STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillat sammenslåing av stasjoner som ikke ligger inntil hverandre: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gjør det mulig å legge til deler til en stasjon uten at de er direkte ved siden av hverandre. Bruk Ctrl+klikk for å bygge slike stasjoner. STR_CONFIG_SETTING_IMPROVEDLOAD :Bruk forbedret lastealgoritme: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Hvis aktivert, vil flere kjøretøy som venter på en stasjon lastes sekvensielt. Lasting av neste kjøretøy begynner først når det er nok last tilgjengelig for å fylle opp det første kjøretøyet STR_CONFIG_SETTING_GRADUAL_LOADING :Last kjøretøy gradvis: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradvis laste kjøretøy ved å bruke kjøretøyenes spesifikke lastetider, i stedet for å laste alt på én gang med en fast varighet som bare avhenger av mengden gods lastet STR_CONFIG_SETTING_INFLATION :Inflasjon: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Aktiver inflasjon i økonomien, der kostnader stiger litt raskere enn betalinger STR_CONFIG_SETTING_SELECTGOODS :Lever varer til en stasjon kun hvis det er etterspørsel: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Bare levere gods til en stasjon som som har blitt forespurt fra et lastende kjøretøy. Dette forhindrer dårlige karakterer for gods som ikke betjenes på en stasjon STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimal brolengde: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimal lengde for broer STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimal tunnellengde: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimal lengde for tunneller STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Konstruksjonsmetode for primærindustri: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metode for finansiering av primærindustri. 'Ingen' betyr at det ikke er mulig å finansiere noen. 'Prospekter' betyr at finansiering er mulig, men oppbyggingen skjer på et tilfeldig sted på kartet og kan like godt mislykkes. 'Som andre industrier' betyr at råvareindustri kan bygges opp av selskaper som prosessindustri hvor som helst på kartet STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andre industrier STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterer STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flatt område rundt industrier: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Mengde flatmark rundt en industri. Dette sikrer at det er plass til å bygge spor og stasjoner i nærheten av industrien. STR_CONFIG_SETTING_MULTIPINDTOWN :Tillat flere like industrier i samme by: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalt vil en by ikke ha mer enn én næring av samme type. Med denne innstillingen vil det tillates flere næringer av samme type i samme by STR_CONFIG_SETTING_SIGNALSIDE :Vis signaler: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Velg på hvilken side av skinnene signalene blir plassert STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Til venstre STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :På kjøre-siden STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Til høyre STR_CONFIG_SETTING_SHOWFINANCES :Vis regnskap ved nyttår: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Hvis aktivert, spretter økonomivinduet opp på slutten av hvert år for å muliggjør en enkel inspeksjon av selskapets økonomiske status STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nye ordre er 'direkte' som standard: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalt vil et kjøretøy stoppe på alle stasjoner det passerer. Ved å aktivere denne innstillingen, vil det kjøre gjennom alle stasjoner på vei til sin endelige destinasjon uten å stoppe. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan uansett settes til begge atferder STR_CONFIG_SETTING_STOP_LOCATION :Nye togordre stopper som standard ved {STRING} av plattformen STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Plass hvor toget vil stoppe på plattformen som standard. Valget 'near end' betyr nær inngangspunktet og 'far end' betyr langt unna inngangspunktet. Merk at denne innstillingen bare definerer en standardverdi for nye ordre. Individuelle ordre kan uansett settes til begge atferder STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :nær slutten STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :enden STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Kjøretøykø (med kvantumseffekter): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Gjør at veikjøretøy må vente foran okkuperte veihindringer inntil de er fjernet STR_CONFIG_SETTING_AUTOSCROLL :Flytt på bildet hvis pilen er nær ytterkantene av skjermen: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Når aktivert, vil synsfeltet begynne å rulle når musen er nær kanten av vinduet STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hoved tillegsvindu, bare fullskjerm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :hoved tillegsvindu STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :alle tillegsvindu STR_CONFIG_SETTING_BRIBE :Tillat bestikkelser av bystyret: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tillat selskaper å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke være i stand til å gjøre forretninger i byen de neste seks månedene STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Tillat kjøp av eksklusive transportrettigheter: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Om et firma kjøper eksklusive transportrettigheter for en by, vil ikke motstandernes stasjoner motta varer eller passasjorer på ett år. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Tillat finansiering av bygninger: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Tillat firmaer å gi penger til byer til bygging av nye bygninger STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Tillat finansiering av lokal veikonstruksjon: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Tillat selskaper å gi penger til byer for omlegging av veinettet for å sabotere veibaserte tjenester i byen STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Tillat pengeoverføring til andre firmaer: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Tillat firmaer å overføre penger til andre firmaer i flerspillermodus STR_CONFIG_SETTING_FREIGHT_TRAINS :Vektmultiplikator for last for å simulere tunge tog: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Still virkningen av å frakte gods i tog. En høyere verdi gjør det mer krevende for tog å frakte gods, spesielt i bakker STR_CONFIG_SETTING_PLANE_SPEED :Flyfart faktor: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Still den relative hastigheten til fly sammenlignet med andre kjøretøy, for å redusere inntekter ved luftfrakt STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Antall flystyrter: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Bestem sjansen for en flykatastrofe STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ingen STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Redusert STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalt STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Tillat stoppesteder med gjennomkjøring på by-eide veier: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Tillat bygging av stoppesteder med gjennomkjøring på by-eide veier STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Tillat stoppesteder med gjennomkjøring på motstander-eide veier: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Tillat bygging av gjennomkjørbare lastestasjoner på veier eid av andre selskaper STR_CONFIG_SETTING_ADJACENT_STATIONS :Tillat bygging av nærliggende stasjoner: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Tillat forskjellige stasjoner å være i hverandre STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktiver flere NewGRF-kjernesett: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Kompatibilitets-valg for gamle NewGRF-filer. Ikke deaktivér dette med mindre du vet nøyaktig hva du gjør! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Det er ikke mulig å endre denne innstillingen når det allerede finnes kjøretøy. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vedlikehold av infrastruktur: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Når aktivert, medfører infrastruktur vedlikeholdskostnader. Kostnadene vokser over-proporsjonalt med nettverkets størrelse, og påvirker dermed større selskaper mer enn de små STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flyplasser utgår aldri: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Aktivering av denne innstillingen gjør at hver type flyplass forblir tilgjengelig for alltid etter at sin introduksjon STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Varsle hvis et kjøretøy har kjørt seg vill: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Utløser meldinger om kjøretøy som ikke finner en rute til deres angitte destinasjon STR_CONFIG_SETTING_ORDER_REVIEW :Inspiser kjøretøyenes ordre: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Når aktivert, blir ordrene til kjøretøyene regelmessig kontrollert, og noen åpenbare problemer blir rapportert med en nyhetsmelding når de oppages STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, men utelukk stoppede kjøretøy STR_CONFIG_SETTING_ORDER_REVIEW_ON :Alle kjøretøy STR_CONFIG_SETTING_WARN_INCOME_LESS :Advar hvis inntekten til et kjøretøy er negativ: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Når aktivert, vil en nyhetsmelding vises når et kjøretøy ikke har tjent penger i løpet av ett kalenderår STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kjøretøy utgår aldri: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Når aktivert, vil alle kjøretøysmodeller være tilgjengelig for alltid etter de introduseres STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoforny kjøretøy når det blir gammelt: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Når aktivert, blir et kjøretøy som nærmer seg slutten av sin levetid automatisk erstattet når betingelsene for fornyelse er oppfylt STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autoforny kjøretøy når det er {STRING} maks alder STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativ alder når kjøretøy burde bli vurdert autofornyet STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} måned{P 0 "" er} før STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} måned{P 0 "" er} etter STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum formue for autofornyelse av kjøretøy: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minste pengemengde som må være igjen i banken for å vurdere automatisk fornying av kjøretøy STR_CONFIG_SETTING_ERRMSG_DURATION :Varighet av error-melding: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Varighet for visning av feilmeldinger i et rødt vindu. Vær oppmerksom på at noen (kritiske) feilmeldinger ikke lukkes automatisk etter dette tidspunktet, men må lukkes manuelt STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} andre{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Vis verktøytips: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Forsinkelse før verktøytips vises når musen svever over elementer i grensesnittet. Alternativt kan verktøytips bindes til den høyre museknappen STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hovre i {COMMA} sekund{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Høyreklikk STR_CONFIG_SETTING_POPULATION_IN_LABEL :Vis byers innbyggertall i tittelfeltet: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vis inbyggertallet i byer i tittelfeltet på kartet STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Graflinjenes tykkelse: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Linjebredde i grafene. En tynn linje er mer presis å lese av, mens en tykkere linje er lettere å se, og farger er lettere å skille STR_CONFIG_SETTING_LAND_GENERATOR :Landskapsgenerator: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orginal STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maks distanse fra kant for Olje Raffinerier: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olje rafinerier er bare bygd nær kartets kanter, det er ved kysten på øy kart STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snøgrense: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ulendthet på terreng (kun TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veldig jevnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Jevnt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ulendt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Veldig ulendt STR_CONFIG_SETTING_TREE_PLACER :Treplasseringalgoritme: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Ingen STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Forbedret STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Høydekartrotering: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mot klokka STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med klokka STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Høydenivå et flatt scenariokart får: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Tillat landskapsendring av ruter ved endene på kartet: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Når deaktivert, kartets kanter vil altid være hav STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}En eller flere ruter ved den nordlige kanten av kartet er ikke tom(me) STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}En eller flere ruter ved en av kantene på kartet er ikke vann STR_CONFIG_SETTING_STATION_SPREAD :Maks stasjonspredning: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maksimalt areal som delene av en enkelt stasjon kan spres ut på. Vær oppmerksom på at høye verdier vil gjøre spillet tregere STR_CONFIG_SETTING_SERVICEATHELIPAD :Automatisk vedlikehold ved helikopterplass: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Utfør vedlikehold av helikoptre etter hver landing, selv om det ikke er noen depot på flyplassen STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Koble landskapsverktøylinjen til bygningsverktøylinjene: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Når du åpner verktøylinjen for en transporttype, åpne også verktøylinjen for landskapsendring STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Landfarge brukt på oversiktskartet: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farge på terrenget på minikartet STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grønn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrønn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolett STR_CONFIG_SETTING_REVERSE_SCROLLING :Snu rulleretningen: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Opptreden ved rulling av kartet med høyre museknapp. Når deaktivert, beveger musen kameraet. Når aktivert, beveger musen kartet STR_CONFIG_SETTING_SMOOTH_SCROLLING :Myk rulling: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Velge hvordan synsfeltet ruller til en bestemt posisjon når du klikker på det lille kartet, eller ved utstedelse av en kommando for å gå til et bestemt objekt på kartet. Hvis aktivert, ruller synsfeltet jevnt, og hvis deaktivert hopper det direkte til det valgte punktet STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vis målingsverktøy ved bruk av byggingsverktøy: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vise avstander mellom kartelementer samt høydeforskjeller når du drar linjer ved byggevirksomhet STR_CONFIG_SETTING_LIVERIES :Vis firmaovertakelser: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrollér bruken av kjøretøystype-spesifikke lakkeringer (i motsetning til selskaps-spesifikke) STR_CONFIG_SETTING_LIVERIES_NONE :Ingen STR_CONFIG_SETTING_LIVERIES_OWN :Eget firma STR_CONFIG_SETTING_LIVERIES_ALL :Alle firmaer STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foretrekk lagsamtale med : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Bytte bindingen av selskapets interne og offentlige kommunikasjon til , henholdsvis STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Rullehjulets funksjon: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Tillat rulling med todimensjonale musehjul STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kartet STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Rull kartet STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Av STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Rullehjulets hastighet på kartet: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontroller sensitiviteten til rulling med muse-hjulet STR_CONFIG_SETTING_OSK_ACTIVATION :Skjermtastatur: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Velg metode for å åpne skjerm-tastaturet for inntasting av tekst i tekstbokser ved hjelp av pekeenheten. Dette er ment for små enheter uten fysisk tastatur STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Deaktivert STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dobbeltklikk STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enkelt klikk (ved fokus) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enkelt klikk (umiddelbart) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Høyreklikkemulering: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Velg metoden å etterligne høyreklikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klikk STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstre-klikk rulling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Tillat rulling av kartet ved å dra det med den venstre museknappen. Dette er spesielt nyttig når du bruker en berøringsskjerm STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Bruk {STRING} datoformat i navn på lagrede spill. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datoformat i lagrede spills filnavn STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Antatt palett for NewGRFer uten spesifisert palett: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalett å bruke for NewGRF filer som ikke angir hvilken palett de trenger STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Standard (D) palett STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Tradisjonell (W) palett STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pause automatisk ved start av nytt spill: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Når aktivert, vil spillet automatisk pause når du starter et nytt spill, for å tillate nærmere studie av kartet STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når spillet er på pause, tillat: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Velg hvilke handlinger som kan bli gjort når spillet er pauset STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ingen handlinger STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt utenom konstruksjon STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alt utenom landskapsendringer STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle handlinger STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk avansert kjøretøyliste: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiver bruk av de avanserte kjøretøyslistene for guppering av kjøretøy STR_CONFIG_SETTING_LOADING_INDICATORS :Bruk lastingsindikatorer: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Velg hvorvidt lasteindikatorer vises over kjøretøy som lastes eller losses STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vis rutetabell i antall tikk i stedet for antall dager: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Vis reisetider i tidstabeller i spillets 'tidsenheter' fremfor dager STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Vis ankomst og avgang i rutetabeller: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vise forventede ankomst- og avgangstider i rutetabeller STR_CONFIG_SETTING_QUICKGOTO :Rask opprettelse av kjøretøyordre: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forhåndsvelg 'gå til markøren' når ordre-vinduet åpnes STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard jernbanetype (etter nytt/innlastet spill): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Jernbanetype som velges når man starter eller laster et spill. 'første tilgjengelige' velger den eldste typen spor, 'siste tilgjengelige' velger den nyeste typen spor og 'mest brukt' velger den typen som for tiden er mest i bruk STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Første tilgjengelige STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Siste tilgjengelige STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest brukt STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vis reserverte spor: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Gi reserverte spor en annen farge for å bistå med problemer hvor tog nekter å entre sti-baserte blokker STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :La byggingsverktøy være aktive etter bruk: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Holde verktøylinjen for bruer, tunneler, osv åpnet etter bruk STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupper utgifter i firmaets finansvindu: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definer oppsettet for vinduet som viser selskapets utgifter STR_CONFIG_SETTING_SOUND_TICKER :Nyhetstavle: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spille av lyd for oppsummerte nyhetsmeldinger STR_CONFIG_SETTING_SOUND_NEWS :Avis: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spille av lyd ved visning av aviser STR_CONFIG_SETTING_SOUND_NEW_YEAR :Utgangen av år: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spille av lydeffekt ved utgangen av et år som oppsummerer selskapets resultater i løpet av året i forhold til året før STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruksjon: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spille av lydeffekt ved fullførte konstruksjoner eller andre tiltak STR_CONFIG_SETTING_SOUND_CLICK :Tastetrykk: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Pipetone ved tastetrykk STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofer/ulykker: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spill av lydeffekter til ulykker og katastrofer STR_CONFIG_SETTING_SOUND_VEHICLE :Kjøretøy: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spill lydeffekter til kjøretøy STR_CONFIG_SETTING_SOUND_AMBIENT :Omgivelse: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spille lyder fra omgivelsene av landskapet, industrier og tettsteder STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Fjern infrastrukturbygging før tilhørende kjøretøy er tilgjengelige: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Når aktivert, vil infrastruktur bare være tilgjengelig hvis det også finnes kjøretøy tilgjengelig, for å forhindre sløsing av tid og penger på ubrukelig infrastruktur STR_CONFIG_SETTING_MAX_TRAINS :Maks antall tog per firma: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimalt antall tog som et selskap kan ha STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks antall kjøretøy per firma: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimalt antall veikjøretøy som et selskap kan ha STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks antall luftfartøy per firma: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimalt antall fly som et selskap kan ha STR_CONFIG_SETTING_MAX_SHIPS :Maks antall skip per firma: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antall skip som et selskap kan ha STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Hindre datamaskinen i å bygge tog: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av tog umulig for en datamaskin-spiller STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskinen i å bygge kjøretøy: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Aktivering av denne innstillingen gjør bygging av veikjøretøy umulig for en datamaskin-spiller STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Hindre datamaskinen i å bygge luftfartøy: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Aktivering av denne innstillingen gjør bygging av fly umulig for en datamaskin-spiller STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Hindre datamaskinen i å bygge skip: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av skip umulig for en datamaskin-spiller STR_CONFIG_SETTING_AI_PROFILE :Profil for standardinnstillinger: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Velg hvilken innstillingsprofil som skal brukes for tilfeldige data-spillere eller for startverdier når du legger til nye data-spillere eller spill-skript STR_CONFIG_SETTING_AI_PROFILE_EASY :Lett STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Middels STR_CONFIG_SETTING_AI_PROFILE_HARD :Vanskelig STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tillat AIer i flerspiller: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Tillat datamaskin-spillere å delta i flerspiller-spill STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes før skript er avbrutt: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimalt antall beregningstrinn et skript kan ta i én omgang STR_CONFIG_SETTING_SERVINT_ISPERCENT :Vedlikeholdsintervaller er i prosent: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Velge om vedlikehold av kjøretøyer utløses av tiden som er forløpt fra siste gjennomførte vedlikehold, eller av at pålitelighet dropper under en bestemt prosent av maksimal pålitelighet STR_CONFIG_SETTING_SERVINT_TRAINS :Standard vedlikeholdsintervall for tog: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Angi standard vedlikeholdsintervall for nye skinnegående kjøretøy, hvis det ikke er satt noe serviceintervall for kjøretøyet STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Deaktivert STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standard vedlikeholdsintervall for veikjøretøy: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Angi standard vedlikeholdsintervall for nye veikjøretøy, hvis det ikke er satt noe vedlikeholdsintervall for kjøretøyet STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standard vedlikeholdsintervall for fly: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Angi standard vedlikeholdsintervall for nye fly, hvis det ikke er angitt noe vedlikeholdsintervall for flyet STR_CONFIG_SETTING_SERVINT_SHIPS :Standard vedlikeholdsintervall for skip: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Angi standard vedlikeholdsintervall for nye skip, hvis det ikke er angitt noe vedlikeholdsintervall for fartøyet STR_CONFIG_SETTING_NOSERVICE :Deaktiver vedlikehold når havarier er slått av: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Når aktivert, vil kjøretøy ikke bli vedlikeholdt hvis de ikke kan bryte sammen STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktiver fartsgrenser for vogner: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Når aktivert, brukes også fartsgrenser til vogner for å avgjøre den maksimale hastigheten til et tog STR_CONFIG_SETTING_DISABLE_ELRAILS :Deaktiver elektriske tog: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Aktivering av denne innstillingen deaktiverer kravet om å elektrifisere spor for å tillate at elektriske motorer kan kjøre på dem STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Første kjøretøy på spillers stasjon: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vise en nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny spiller STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Første kjøretøy på motstanders stasjon: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vise nyhetsoppdatering når det første kjøretøyet ankommer stasjonen til en ny motstander STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ulykker / katastrofer: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vise nyhetsoppdatering når ulykker eller katastrofer inntreffer STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Firmainformasjon: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vise nyhetsoppdatering når nye selskaper starter opp, eller når selskaper er konkurstruet STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Åpning av industrier: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vise nyhetsoppdatering når nye industrier åpner drift STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Stenging av industrier: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vise nyhetsoppdatering når industrier avvikler driften STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Økonomiske endringer: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vis en nyhetsoppdatering om globale forandringer i økonomi STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjonsendringer hos industrier ekspedert av firmaet: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vise nyhetsoppdateringer når produksjonsnivået endrer seg for industrier som er tilknyttet selskapet STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjonsendringer hos industrier ekspedert av motspiller(e): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vise nyhetsoppdateringer når produksjonsnivået endrer seg for industrier som er tilknyttet konkurrentene STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Andre industriproduksjonsendringer: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vise nyhetsoppdatering når produksjonsnivået endrer seg for industrier som ikke er tilknyttet selskapet eller andre konkurrenter STR_CONFIG_SETTING_NEWS_ADVICE :Forslag / informasjon om firmaets kjøretøyer: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vise meldinger om kjøretøy som trenger oppmerksomhet STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nye kjøretøy: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vise nyhetsoppdatering når nye kjøretøystyper blir tilgjengelig STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Endringer i godtatte varer: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vise meldinger om stasjoners skiftende aksept av godstyper STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidier: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vise nyhetsoppdateringer om subsidie-relaterte hendelser STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Generell informasjon: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vise avis for generelle hendelser, som for eksempel kjøp av eksklusive rettigheter eller finansiering av veibygging STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Av STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Sammendrag STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Fullt STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farge i avisen kommer i: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året der avisannonseringene bli vist i farger. Før dette året blir alle annonseringer vist i svart/hvitt, STR_CONFIG_SETTING_STARTING_YEAR :Start spillet i år: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jevn økonomi (flere, mindre endringer): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Når denne er aktivert, endrer industriproduksjonen seg oftere, og i mindre trinn. Denne innstillingen har vanligvis ingen effekt hvis industriene er fra en NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Tillat aksjekjøp i andre firmaer: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Når aktivert, tillates kjøp og salg av selskapers aksjer. Aksjer vil kun være tilgjengelig selskaper som når en viss alder STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentandel av etappe-overskudd som skal betales i innmatingssystem: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Andel av inntekten gitt til de mellomliggende etapper i et overføringssystem, noe som gir mer kontroll over inntektene STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når du drar en linje, plasser signaler hver: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Angi distansen for når signaler vil bli bygget på et spor frem til neste hinder (signal, kryss), hvis signaler blir dratt STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kartelement{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Når du drar en linje, oppretthold fast avstand mellom signaler: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velg oppførselen til signalplassering ved Ctrl + dragning av signaler. Hvis deaktivert, blir signaler plassert ved tunneler eller broer for å unngå lange strekninger uten signaler. Hvis aktivert, blir signalene plassert for hver N ruter, noe som gjør justering av signaler på parallelle spor enklere STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bygg vingesignal automatisk før: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Angi året når elektriske signal vil bi tatt i bruk for spor. Før dette året vil ikke-elektriske signal bli brukt (som har nøyaktig samme funksjon, men forskjellig utseende) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktiver signalgrensesnittet: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vis et vindu for å velge hvilke singaltyper som skal bygges, i stedet for vindusløs signaltype-rotasjon når man Ctrl + klikker på byggesignaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Standard signaltype: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standard signaltype som blir brukt STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokksignaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Avanserte signaler STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Enveis avanserte signaler STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Bla gjennom signaltyper: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Velg hvilke signaltyper å gå gjennom når Ctrl+trykke på et bygg signal med signal-verktøyet STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Kun blokksignaler STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Kun avanserte signaler STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle STR_CONFIG_SETTING_TOWN_LAYOUT :Veiløsning for nye byer: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Løsning for veinettverket i byer STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bedre veier STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 Rutenett STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 Rutenett STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilfeldig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byer kan bygge veier: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillat byer å bygge veier for å vokse. Deaktiver for å forhindre bystyrer å bygge veier på egenhånd STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byer har lov å bygge overganger: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ved å aktivere denne innstillingen, tillates byer å bygge nivå kryssinger STR_CONFIG_SETTING_NOISE_LEVEL :Tillat bykontrollert støynivå for flyplasser: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Med denne innstillingen deaktivert kan det være to flyplasser i hver by. Med denne innstillingen aktivert, antall flyplasser i en by blir bestemt av lydaksepteringen i byen, som avhenger av innbyggertall, flyplasstørrelse og avstand STR_CONFIG_SETTING_TOWN_FOUNDING :Grunnlegging av byer i spillet: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ved å aktivere denne innstillingen tillates spillere å grunnlegge nye byer i spillet STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbudt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tillatt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tillatt, egendefinert oppsett av by STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Plassering av trær i spillet: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroll tilfeldige utseender til tre under spillet. Dette kan påvirke industrier som avhenger av trevekst, for eksempel trelast STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Ingen {RED}(ødelegger sagbruk) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Kun i regnskog STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Overalt STR_CONFIG_SETTING_TOOLBAR_POS :Plassering av hovedverktøylinje: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horisontal posisjon av hoved verktøylinjen på toppen av skjermen STR_CONFIG_SETTING_STATUSBAR_POS :Statusbarens posisjon: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horisontal posisjon av status verktøylinjen på bunnen av skjermen STR_CONFIG_SETTING_SNAP_RADIUS :Vinduers smekkeradius: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Avstanden mellom vinduer før vinduet som blir flyttet automatisk tilpasset nærliggende vinduer STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piksel{P 0 "" s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Deaktivert STR_CONFIG_SETTING_SOFT_LIMIT :Maksimalt antall flytende vinduer: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Antall ikke-klebrige åpne vinduer før gamle vinduer automatisk blir lukket for å gi plass til nye vinduer STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :deaktivert STR_CONFIG_SETTING_ZOOM_MIN :Maks zoom-inn nivå: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maksimalt forstørrelsesnivå for synsfelt. Vær oppmerksom på at aktivering av høyere forstørrelsesnivå øker minnekravet STR_CONFIG_SETTING_ZOOM_MAX :Maks zoom-ut nivå: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maksimalt 'zoom-ut' nivå for synsfelt. Høye ut-zoomingsnivåer kan føre til hakking når det brukes STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Hastighet for byenes vekst: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Hastigheten byer vokser med STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ingen STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sakte STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rask STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Veldig rask STR_CONFIG_SETTING_LARGER_TOWNS :Andel av tettsteder som vil bli til byer: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Mengden av tettsteder som vil bli til byer, altså tettsteder som er større i starten og vokser raskere STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 av {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ingen STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Innledende bystørrelsesmultiplikator: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gjennomsnittsstørrelse på (stor)byer i forhold til vanlige byer ved begynnelsen av spillet STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde veielementer under veikonstruksjon: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern blindveier under finansiert veikonstruksjon STR_CONFIG_SETTING_GUI :{ORANGE}Grensesnitt STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kjøretøy STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjoner STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi STR_CONFIG_SETTING_AI :{ORANGE}Motstandere STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Visningsinnstillinger STR_CONFIG_SETTING_INTERACTION :{ORANGE}Samhandling STR_CONFIG_SETTING_SOUND :{ORANGE}Lydeffekter STR_CONFIG_SETTING_NEWS :{ORANGE}Nyheter og meldinger STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Varehåndtering STR_CONFIG_SETTING_AI_NPC :{ORANGE}Datamaskinstyrte spillere STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autoforny STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Vedlikehold STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ruting STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tog STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Byer STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrier STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Anbefalt) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Veifinner for tog: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Stifinner som skal brukes for tog STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Veifinner for kjøretøy: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Stifinner som skal brukes for kjøretøyer STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Veifinner for skip: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Stifinner som brukes for skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisk reversering ved signaler: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :La tog reversere ved signaler om de har ventet der lenge STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Endre verdi # Config errors STR_CONFIG_ERROR :{WHITE}Feil med konfigurasjonsfilen... STR_CONFIG_ERROR_ARRAY :{WHITE}... feil i matrise '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ugyldig verdi '{STRING}' for '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... etterslengende bokstaver i slutten av innstilling '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorerer NewGRF '{STRING}': duplikat GRF ID med '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorerer ugyldig NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ikke funnet STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :usikker for statisk bruk STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :system NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :inkompatibel med denne versjonen av OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ukjent STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... komprimeringsnivå '{STRING}' er ikke gyldig STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... lagrede spills format '{STRING}' er ikke tilgjengelig. Vender tilbake til '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorerer Grunn Graffik set '{STRING}': ikke funnet STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorerer Grunn Lyd set '{STRING}': ikke funnet STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorerer Grunn Musikk set '{STRING}': ikke funnet STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Tomt for minne STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Tildeling av {BYTES} fra spritecachen feilet. Spritecachen ble redusert til {BYTES}. Dette senke ytelsen av OpenTTD. For å redusere minneforbruken kan du forsøke å slå av 32bpp grafikk og/eller zoomnivå. # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nytt spill STR_INTRO_LOAD_GAME :{BLACK}Last inn spill STR_INTRO_PLAY_SCENARIO :{BLACK}Spill scenario STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spill høydekart STR_INTRO_SCENARIO_EDITOR :{BLACK}Rediger scenario STR_INTRO_MULTIPLAYER :{BLACK}Flerspiller STR_INTRO_GAME_OPTIONS :{BLACK}Spillinnstillinger STR_INTRO_HIGHSCORE :{BLACK}Tavle med høyeste poengsummer STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avanserte Innstillinger STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-innstillinger STR_INTRO_ONLINE_CONTENT :{BLACK}Se etter innhold på nettet STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spillskript-innstillinger STR_INTRO_QUIT :{BLACK}Avslutt STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start et nytt spill. Ctrl+klikk hopper over kartkonfigurering STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Last inn et lagret spill STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Start et nytt spill og bruk et høydekart som landskap STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start et nytt spill som bruker et egendefinert scenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Opprett en egendefinert spillverden eller et scenario STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Start et flerspiller-spill STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Velg temperert miljø STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Velg subarktisk miljø STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Velg subtropisk miljø STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Velg leketøyland STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vis spillinnstillinger STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Vise tavle over høyeste poengsummer STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Vis avanserte innstillinger STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-instillinger STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Se etter nytt og oppdatert innhold for nedlasting STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis AI/Spillskript-innstillinger STR_INTRO_TOOLTIP_QUIT :{BLACK}Avslutt 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Denne oversettelsen mangler {NUM} streng{P "" er}. Vennligst hjelp til å gjøre OpenTTD bedre ved å bli med i oversettergruppen. For detaljer, sjekk readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Avslutt STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Er du sikker på at du vil avslutte OpenTTD og gå tilbake til {STRING}? STR_QUIT_YES :{BLACK}Ja STR_QUIT_NO :{BLACK}Nei # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Avslutt spill STR_ABANDON_GAME_QUERY :{YELLOW}Er du sikker på at du vil avslutte dette spillet? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er du sikker på at du vil forlate dette scenariet? # Cheat window STR_CHEATS :{WHITE}Juksekoder STR_CHEATS_TOOLTIP :{BLACK}Avkrysningsbokser indikerer om du har brukt denne juksekoden tidligere STR_CHEATS_WARNING :{BLACK}Advarsel! Du er i ferd med å bedra dine motstandere. Vær klar over at en slik skammelig oppførsel vil bli husket i all evighet STR_CHEAT_MONEY :{LTBLUE}Øk pengebeholdningen med {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller som firma: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldoser (fjern industrier, uflyttbare objekter): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunneler kan krysse hverandre: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikke krasje (regelmessig) på små flyplasser: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperert landskap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktisk landskap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropisk landskap STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Leketøylandskap STR_CHEAT_CHANGE_DATE :{LTBLUE}Endre dato: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Endre nåværende år STR_CHEAT_SETUP_PROD :{LTBLUE}Tillat endring av produksjonsmengder: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Ny firmafarge STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Vis generelle fargetemaer STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Vis togfargetemaer STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Vis kjøretøyfargetemaer STR_LIVERY_SHIP_TOOLTIP :{BLACK}Vis skipsfargetemaer STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Vis luftfartøyfargetemaer STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Velg primærfarge for valgte tema. Ctrl+Klikk vil bruke denne fargen på alt STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Velg sekundærfarge for valgte tema. Ctrl+Klikk kommer til å bruke denne fargen for alle temaene. STR_LIVERY_PANEL_TOOLTIP :{BLACK}Velg fargetemaet du ønsker å endre, eller flere fargetemaer med Ctrl+klikk. Klikk på boksen for å vise bruken av fargetemaene STR_LIVERY_DEFAULT :Standardfarger STR_LIVERY_STEAM :Damplokomotiv STR_LIVERY_DIESEL :Diesellokomotiv STR_LIVERY_ELECTRIC :Elektrisk lokomotiv STR_LIVERY_MONORAIL :Monorail-lokomotiv STR_LIVERY_MAGLEV :Maglev-lokomotiv STR_LIVERY_DMU :Dieseltogsett (DMU) STR_LIVERY_EMU :Elektrisk togsett (EMU) STR_LIVERY_PASSENGER_WAGON_STEAM :Passasjervogn (damp) STR_LIVERY_PASSENGER_WAGON_DIESEL :Passasjervogn (diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passasjervogn (elektrisk) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passasjervogn (monorail) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passasjervogn (maglev) STR_LIVERY_FREIGHT_WAGON :Varevogn STR_LIVERY_BUS :Buss STR_LIVERY_TRUCK :Lastebil STR_LIVERY_PASSENGER_SHIP :Passasjerferje STR_LIVERY_FREIGHT_SHIP :Fraktskip STR_LIVERY_HELICOPTER :Helikopter STR_LIVERY_SMALL_PLANE :Lite fly STR_LIVERY_LARGE_PLANE :Stort fly STR_LIVERY_PASSENGER_TRAM :Passasjertrikk STR_LIVERY_FREIGHT_TRAM :Varetrikk # Face selection window STR_FACE_CAPTION :{WHITE}Velg ansikt STR_FACE_CANCEL_TOOLTIP :{BLACK}Avbryt ansiktsvalg STR_FACE_OK_TOOLTIP :{BLACK}Godta nytt ansikt STR_FACE_MALE_BUTTON :{BLACK}Mann STR_FACE_MALE_TOOLTIP :{BLACK}Velg mannsansikter STR_FACE_FEMALE_BUTTON :{BLACK}Kvinne STR_FACE_FEMALE_TOOLTIP :{BLACK}Velg kvinneansikter STR_FACE_NEW_FACE_BUTTON :{BLACK}Nytt ansikt STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Lag et tilfeldig ansikt STR_FACE_ADVANCED :{BLACK}Avansert STR_FACE_ADVANCED_TOOLTIP :{BLACK}Avansert ansiktsvalg STR_FACE_SIMPLE :{BLACK}Enkelt STR_FACE_SIMPLE_TOOLTIP :{BLACK}Enkelt ansiktsvalg STR_FACE_LOAD :{BLACK}Last inn STR_FACE_LOAD_TOOLTIP :{BLACK}Last inn favorittansikt STR_FACE_LOAD_DONE :{WHITE}Ditt favorittansikt har blitt lastet inn fra OpenTTDs konfigurasjonsfil STR_FACE_FACECODE :{BLACK}Ansiktsnummer STR_FACE_FACECODE_TOOLTIP :{BLACK}Vis og/eller endre ansiktsnummeret til firmaets leder STR_FACE_FACECODE_CAPTION :{WHITE}Vis og/eller endre lederens ansiktsnummer STR_FACE_FACECODE_SET :{WHITE}Ny ansiktsnummerkode har blitt satt STR_FACE_FACECODE_ERR :{WHITE}Kunne ikke endre lederens ansiktsnummer - må være et heltall mellom 0 og 4294967295! STR_FACE_SAVE :{BLACK}Lagre STR_FACE_SAVE_TOOLTIP :{BLACK}Lagre favorittansikt STR_FACE_SAVE_DONE :{WHITE}Dette ansiktet vil bli lagret som din favoritt i OpenTTDs konfigurasjonsfil STR_FACE_EUROPEAN :{BLACK}Europeisk STR_FACE_SELECT_EUROPEAN :{BLACK}Velg europeiske ansikter STR_FACE_AFRICAN :{BLACK}Afrikansk STR_FACE_SELECT_AFRICAN :{BLACK}Velg afrikanske ansikter STR_FACE_YES :Ja STR_FACE_NO :Nei STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Aktiver bart eller ørering STR_FACE_HAIR :Hår: STR_FACE_HAIR_TOOLTIP :{BLACK}Endre hår STR_FACE_EYEBROWS :Øyenbryn: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Endre øyenbryn STR_FACE_EYECOLOUR :Øyenfarge: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Endre øyenfarge STR_FACE_GLASSES :Briller: STR_FACE_GLASSES_TOOLTIP :{BLACK}Aktiver briller STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Endre briller STR_FACE_NOSE :Nese: STR_FACE_NOSE_TOOLTIP :{BLACK}Endre nese STR_FACE_LIPS :Lepper: STR_FACE_MOUSTACHE :Bart: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Endre lepper eller bart STR_FACE_CHIN :Hake: STR_FACE_CHIN_TOOLTIP :{BLACK}Endre hake STR_FACE_JACKET :Jakke: STR_FACE_JACKET_TOOLTIP :{BLACK}Endre jakke STR_FACE_COLLAR :Krage: STR_FACE_COLLAR_TOOLTIP :{BLACK}Endre krage STR_FACE_TIE :Slips: STR_FACE_EARRING :Ørering: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Endre slips eller ørering # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Flerspiller STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Forbindelse: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Velg mellom å spille på internett eller i lokalt nettverk (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internett STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spillernavn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er navnet andre spillere vil identifisere deg med STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Navn STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Navn på spillet STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klienter STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klienter på nett / maks antall klienter{}Firmaer på nett / maks antall firmaer STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartstørrelse STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kartstørrelsen på spillet{}Klikk for å sortere på område STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Gjeldende dato STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}År STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Antall år {}spillet pågår STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Språk, tjenerversjon, osv. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikk på et spill i listen for å velge det STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Tjeneren du koblet til forrige gang: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klikk for å velge tjeneren du spilte på forrige gang STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}SPILLOVERSIKT STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Språk: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landskap: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kartstørrelse: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Tjenerversjon: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Tjeneradresse: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Startdato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Nettverksdato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Passordbeskyttet! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}TJENEREN ER FRAKOBLET STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}TJENEREN ER FULL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}DU HAR EN ANNEN VERSJON ENN TJENEREN STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}DU HAR EN ANNEN NEWGRF ENN TJENEREN STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Bli med i spill STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Oppdater tjener STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Oppdater tjenerinfo STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Finn tjenere STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Søk på nettverket etter en tjener STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Legg til tjener STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Legger til en tjener til listen som alltid vil bli sjekket for aktive spill. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start tjener STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start en egen tjener STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Skriv inn ditt navn STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Skriv inn IP-adressen til verten # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start et nytt flerspillerspill STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spillnavn: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spillnavnet er det som vises til andre spillere i listen over spill STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sett passord STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt ditt spill med et passord hvis du ikke vil at hvem som helst skal bli med på det STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internett STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internett (annonsér) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks antall tillatte klienter: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Velg maks antall klienter. Ikke alle plassene trenger å bli tatt STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} firma{P "" er} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks antall firmaer: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Begrens tjeneren til et bestemt antall firmaer STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} tilskuer{P "" e} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks antall tilskuere STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Begrens tjeneren til et bestemt antall tilskuere STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Språk de snakker på tjeneren: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andre spillere skal kunne vite hvilket språk man snakker på denne tjeneren STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Skriv inn et navn for nettverksspillet # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Hvilket som helst STR_NETWORK_LANG_ENGLISH :Engelsk STR_NETWORK_LANG_GERMAN :Tysk STR_NETWORK_LANG_FRENCH :Fransk STR_NETWORK_LANG_BRAZILIAN :Brasiliansk STR_NETWORK_LANG_BULGARIAN :Bulgarsk STR_NETWORK_LANG_CHINESE :Kinesisk STR_NETWORK_LANG_CZECH :Tsjekkisk STR_NETWORK_LANG_DANISH :Dansk STR_NETWORK_LANG_DUTCH :Nederlandsk STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finsk STR_NETWORK_LANG_HUNGARIAN :Ungarsk STR_NETWORK_LANG_ICELANDIC :Islandsk STR_NETWORK_LANG_ITALIAN :Italiensk STR_NETWORK_LANG_JAPANESE :Japansk STR_NETWORK_LANG_KOREAN :Koreansk STR_NETWORK_LANG_LITHUANIAN :Litauisk STR_NETWORK_LANG_NORWEGIAN :Norsk STR_NETWORK_LANG_POLISH :Polsk STR_NETWORK_LANG_PORTUGUESE :Portugisisk STR_NETWORK_LANG_ROMANIAN :Rumensk STR_NETWORK_LANG_RUSSIAN :Russisk STR_NETWORK_LANG_SLOVAK :Slovakisk STR_NETWORK_LANG_SLOVENIAN :Slovensk STR_NETWORK_LANG_SPANISH :Spansk STR_NETWORK_LANG_SWEDISH :Svensk STR_NETWORK_LANG_TURKISH :Tyrkisk STR_NETWORK_LANG_UKRAINIAN :Ukrainsk STR_NETWORK_LANG_AFRIKAANS :Afrikaans STR_NETWORK_LANG_CROATIAN :Kroatisk STR_NETWORK_LANG_CATALAN :Katalansk STR_NETWORK_LANG_ESTONIAN :Estisk STR_NETWORK_LANG_GALICIAN :Galicisk STR_NETWORK_LANG_GREEK :Gresk STR_NETWORK_LANG_LATVIAN :Latvisk ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Flerspillerlobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Prøver å koble til: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}En liste over alle nåværende firmaer i spillet. Du kan enten bli med i et eller starte et nytt hvis det er en ledig firmaplass. STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}FIRMAOVERSIKT STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Firmanavn: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Grunnlagt: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Firmaverdi: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Nåværende balanse: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Inntekt i fjor: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Nettverksytelse: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Kjøretøy: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stasjoner: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spillere: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nytt firma STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Start et nytt firma STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Vær tilskuer STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Vær tilskuer til spillet STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Bli med i firmaet STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjelp til med å styre dette firmaet # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Kobler til... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Kobler til... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Godkjenner... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Venter... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Laster ned kart... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Behandler data... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrerer... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Henter spillinformasjon... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Henter firmainformasjon... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P "" er} foran deg STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} nedlastet hittil STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} nedlastet hittil STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Koble fra STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tjeneren er beskyttet. Skriv inn passord STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firmaet er beskyttet. Skriv inn passord # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Liste over klienter STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Vær tilskuer STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nytt firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Kast ut STR_NETWORK_CLIENTLIST_BAN :Bannlys STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gi penger STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Snakk til alle STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Snakk til firma STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat melding STR_NETWORK_SERVER :Tjener STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskuere STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn hvor mye penger du ønsker å gi # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikke lagre passordet STR_COMPANY_PASSWORD_OK :{BLACK}Gi firmaet det nye passordet STR_COMPANY_PASSWORD_CAPTION :{WHITE}Firmapassord STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Standard firmapassord STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Bruk dette passordet som standard for nye firmaer # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Bli med STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Bli med og spill som dette firmaet STR_COMPANY_VIEW_PASSWORD :{BLACK}Passord STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Passordbeskytt firmaet ditt for å forhindre uautoriserte brukere fra å bli med STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Velg firmapassord # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send STR_NETWORK_CHAT_COMPANY_CAPTION :[Lag] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privat] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Alle] : STR_NETWORK_CHAT_COMPANY :[Lag] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Lag] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privat] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Alle] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Skriv inn tekst for nettverkssamtale # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Ingen nettverksadaptere funnet eller kompilert uten ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Kunne ikke finne noen nettverksspill STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Tjeneren svarte ikke på forespørselen STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Kunne ikke koble til pga. ulike versjoner av NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Synkronisering av nettverksspill feilet. STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Mistet tilkobling til nettverksspill STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Kunne ikke laste inn lagret spill STR_NETWORK_ERROR_SERVER_START :{WHITE}Kunne ikke starte tjeneren STR_NETWORK_ERROR_CLIENT_START :{WHITE}Kunne ikke opprette forbindelse STR_NETWORK_ERROR_TIMEOUT :{WHITE}Tilkobling #{NUM} ble tidsavbrutt STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Forbindelsen ble brutt pga. en protokollfeil STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Klientversjonen er ikke den samme som tjenerversjonen STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Feil passord STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tjeneren er full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du er bannlyst fra denne tjeneren STR_NETWORK_ERROR_KICKED :{WHITE}Du ble kastet ut av spillet STR_NETWORK_ERROR_CHEATER :{WHITE}Juksing er ikke tillatt på denne tjeneren STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du sendte for mange kommandoer til serveren STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Du brukte for lang tid på å skrive inn passordet STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Din datamaskin er ikke rask nok til å holde følge med tjeneren STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Din datamaskin brukte for lang tid på å laste ned kartet STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Din datamaskin brukte for lang tid på å koble til tjeneren ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :generell feil STR_NETWORK_ERROR_CLIENT_DESYNC :synkroniseringsfeil STR_NETWORK_ERROR_CLIENT_SAVEGAME :kunne ikke åpne kartet STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :forbindelsen ble brutt STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokollfeil STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF stemmer ikke STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ikke autorisert STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :mottok ugyldig eller uventet pakke STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :feil versjon STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :navnet er allerede i bruk STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :feil passord STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :feil firma i DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kastet ut av tjeneren STR_NETWORK_ERROR_CLIENT_CHEATER :prøvde å jukse STR_NETWORK_ERROR_CLIENT_SERVER_FULL :tjeneren er full STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendte for mange kommandoer STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :mottok ikke passord tidsnok STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :generelt tidsavbrudd STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :nedlasting av kart tok for lang tid STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :behandling av kartet tok for lang tid ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mulig tap av tilkobling STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE} Siste {NUM} sekund{P "" er} har ingen data ankommet fra serveren # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spill satt på pause ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spillet er fortsatt på pause ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spillet er fortsatt på pause ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spillet er fortsatt på pause ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spillet er fortsatt på pause ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spillet fortsetter ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ikke nok spillere STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :kobler til klienter STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spillskript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :forlater STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} har blitt med i spillet STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} har blitt med i spillet (Klient #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} har blitt med i firma nr. {2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} har blitt med som tilskuer STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startet et nytt firma (nr. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har forlatt spillet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har forandret sitt navn til {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ga {2:CURRENCY_LONG} til ditt firma STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du ga {2:CURRENCY_LONG} til {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tjeneren avsluttet spillet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tjeneren starter på nytt...{}Vennligst vent... # Content downloading window STR_CONTENT_TITLE :{WHITE}Laster ned innhold STR_CONTENT_TYPE_CAPTION :{BLACK}Type STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Type innhold STR_CONTENT_NAME_CAPTION :{BLACK}Navn STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Navn på innhold STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klikk på en linje for å se detaljene{}Klikk på avmerkningsboksen for å merke den for nedlastning STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Velg alle STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alt innhold for nedlastning STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Velg oppgraderinger STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alt innhold som er en oppgradering av eksisterende innhold STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Velg bort alle STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alt innhold som ikke skal lastes ned STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Søk eksterne nettsider STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Søk etter innhold som ikke er tilgjengelig på OpenTTD sin innholdstjeneste på nettsteder som ikke er tilknyttet OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Du forlater OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE} Vilkårene for nedlasting av innhold fra eksterne nettsider kan variere.{}Du må henvende deg til de eksterne nettstedene for instruksjoner om hvordan du installerer innholdet i OpenTTD.{}Vil du fortsette? STR_CONTENT_FILTER_TITLE :{BLACK}Merke/Navnefilter: STR_CONTENT_OPEN_URL :{BLACK}Besøk hjemmeside STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Besøk hjemmesiden for dette innholdet STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Last ned STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start nedlastningen av det merkede innholdet STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Total nedlastingsstørrelse: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INNHOLDSINFORMASJON STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Du har ikke valgt at dette skal lastes ned STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Du har valgt at dette skal lastes ned STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Denne avhengigheten er valgt for nedlasting STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Dette har du fra før STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Dette innholdet er ukjent og kan ikke lastes ned i OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Dette er en erstatning for e{G n i t} eksisterende {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Navn: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versjon: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beskrivelse: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Type: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Nedlastningsstørrelse: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valgt pga.: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Avhengig av: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Merker: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD er bygget uten støtte for «zlib»... STR_CONTENT_NO_ZLIB_SUB :{WHITE}...{NBSP}det er ikke mulig å laste ned innhold! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafikk STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI-bibliotek STR_CONTENT_TYPE_SCENARIO :Scenario STR_CONTENT_TYPE_HEIGHTMAP :Høydekart STR_CONTENT_TYPE_BASE_SOUNDS :Lyder STR_CONTENT_TYPE_BASE_MUSIC :Musikk STR_CONTENT_TYPE_GAME_SCRIPT :Spillskript STR_CONTENT_TYPE_GS_LIBRARY :Spillskriptbibliotek # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Laster ned innhold... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Spør etter filer... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Laster ned {STRING} ({NUM} av {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Nedlastning fullført STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} av {BYTES} lastet ned ({NUM}{NBSP}%) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Kunne ikke koble til innholdstjener... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Nedlastning mislyktes... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}...{NBSP}mistet tilkoblingen STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}...{NBSP}kunne ikke skrive til fil STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Kunne ikke pakke ut den nedlastede filen STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Manglende grafikk STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD krever grafikk for å fungere, men fant ingen. Tillater du OpenTTD å laste ned og installere denne grafikken? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, last ned grafikken STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, avslutt OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Instillinger for gjennomsiktighet STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Gjennomsiktige skilt. Ctrl+klikk for å låse STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Gjennomsiktige trær. Ctrl+klikk for å låse STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Gjennomsiktige hus. Ctrl+klikk for å låse STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Gjennomsiktige industrier. Ctrl+klikk for å låse STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Gjennomsiktige stasjoner, garasjer, staller, hangarer, dokker og kontrollpunkt. Ctrl+klikk for å låse STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Gjennomsiktige broer. Ctrl+klikk for å låse STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Gjennomsiktige bygg som fyrtårn og antenner. Ctrl+klikk for å låse STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Gjennomsiktige kontaktledninger. Ctrl+klikk for å låse STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Gjennomsiktige lastingsindikatorer. Ctrl+klikk for å låse STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gjør objekter usynlige i stedet for gjennomsiktige # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Markering av dekningsområde STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Av STR_STATION_BUILD_COVERAGE_ON :{BLACK}På STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Ikke marker dekningsområdet til den foreslåtte plasseringen STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Marker dekningsområdet til den foreslåtte plasseringen STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Godtar: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Tilbyr: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Slå sammen stasjoner STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bygg separat stasjon STR_JOIN_WAYPOINT_CAPTION :{WHITE}Slå sammen kontrollpunkter STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg separat kontrollpunkt # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Bygg jernbane STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Bygg elektrisk jernbane STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Bygg monorail STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Bygg maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jernbanespor. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bygg jernbane ved hjelp av autobanemodusen. Ctrl veksler mellom å bygge/fjerne. Shift slår av og på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bygg togstall (trengs for å kjøpe og vedlikeholde tog). Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Gjør om jernbane til kontrollpunkt. Ctrl slår sammen kontrollpunkt. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bygg jernbanestasjon. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bygg jernbanesignaler. Ctrl veksler mellom vingesignaler/lyssignaler{}Hold og dra for å bygge signaler langs en rett jernbanestrekning. Ctrl bygger signaler til det neste krysset. Ctrl+klikk viser/skjuler signalvalgsvinduet. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bygg jernbanebro. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bygg jernbanetunnel. Shift slår av/på kostnadsestimat STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Veksle mellom bygging/fjerning av jernbanespor, signaler, kontrollpunkt og stasjoner. Hold inne Ctrl for i tillegg å fjerne jernbanespor fra kontrollpunkt og stasjoner STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konverter/oppgrader jernbanetypen. Shift slår av/på kostnadsestimat STR_RAIL_NAME_RAILROAD :Jernbane STR_RAIL_NAME_ELRAIL :Elektrisk jernbane STR_RAIL_NAME_MONORAIL :Monorail STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Togstallens retning STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Velg togstallens retning # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Kontrollpunkt STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Velg type kontrollpunkt # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Velg jernbanestasjonstype STR_STATION_BUILD_ORIENTATION :{BLACK}Retning STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Velg jernbanestasjonens retning STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Antall spor STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Velg antall spor jernbanestasjonen skal ha STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Plattformlengde STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Velg hvor lang jernbanestasjonen skal være STR_STATION_BUILD_DRAG_DROP :{BLACK}Dra og slipp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg en stasjon med dra og slipp STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Velg en stasjonstype å vise STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Velg stasjonstypen du vil bygge STR_STATION_CLASS_DFLT :Standard stasjon STR_STATION_CLASS_WAYP :Kontrollpunkter # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signalvalg STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blokksignal (vingesignal){}Dette er den enkleste typen av signaler som tillater kun ett tog å kjøre om gangen. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Inngangssignal (vingesignal){}Grønt så lenge det er ett eller flere grønne utgangssignal fra etterfølgende sporseksjon. Ellers rødt. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Utgangssignal (vingesignal){}Oppfører seg på samme måte som et blokksignal, men er nødvendig for å utløse riktig farge på inngangs- og kombinasjons-forsignaler. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (vingesignal){}Kombinasjonssignalet fungerer både som inn- og utgangssignal. Dette gjør at du kan bygge store "grener" med forsignaler. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Avansert signal (vingesignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested. Vanlige avanserte signaler kan passeres bakfra. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Enveis avansert signal (vingesignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested. Enveis avanserte signaler kan ikke passeres bakfra STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blokksignal (lyssignal){}Dette er den enkleste typen av signaler som tillater kun ett tog å kjøre om gangen. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Inngangssignal (lyssignal){}Grønt så lenge det er ett eller flere grønne utgangssignal fra etterfølgende sporseksjon. Ellers rødt. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Utgangssignal (lyssignal){}Oppfører seg på samme måte som et blokksignal, men er nødvendig for å utløse riktig farge på inngangs- og kombinasjons-forsignaler. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinasjonssignal (lyssignal){}Kombinasjonssignalet fungerer både som inn- og utgangssignal. Dette gjør at du kan bygge store "grener" med forsignaler. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Avanserte signal (lyssignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested. Vanlige avanserte signaler kan passeres bakfra. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Enveis avansert signal (lyssignal){}Et avansert signal tillater flere tog å kjøre samtidig på samme signalblokk, dersom togene kan reservere en rute til et trygt stoppested . Enveis avanserte signaler kan ikke passeres bakfra. STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Konverter signal{}Konverterer signaler til den valgte signaltypen. Ctrl+klikk vil endre eksisterende variant. Shift+klikk viser kostnadsestimat STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Signaltetthet ved dra-og-slipp STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Senk signaltetthet ved dra-og-slipp STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Øk signaltetthet ved dra-og-slipp # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Velg jernbanebrotype STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Velg veibrotype STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brovalg - klikk på broen du vil ha for å bygge den. STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Hengebro, stål STR_BRIDGE_NAME_GIRDER_STEEL :Bjelker, stål STR_BRIDGE_NAME_CANTILEVER_STEEL :Frittbærende, stål STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hengebro, betong STR_BRIDGE_NAME_WOODEN :Tre STR_BRIDGE_NAME_CONCRETE :Betong STR_BRIDGE_NAME_TUBULAR_STEEL :Hvelv, stål STR_BRIDGE_TUBULAR_SILICON :Hvelv, Silisium # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Bygg vei STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Bygg trikkespor STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bygg vei. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bygg trikkestasjon. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Bygg veiseksjon ved bruk av autoveimodusen. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bygg trikkespor ved bruk av autotrikkespormodusen. Ctrl veksler mellom å bygge/fjerne. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bygg garasje (nødvendig for kjøp og vedlikehold av kjøretøy). Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bygg trikkestall (nødvendig for kjøp og vedlikehold av trikker). Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bygg bussholdeplass. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bygg trikkestasjon for passasjerer. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bygg lasteterminal. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Bygg trikkestasjon for varer. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Skru av/på enveiskjørte veier STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Bygg veibro. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Bygg trikkesporbro. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Bygg veitunnel. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg trikkesportunnel. Shift slår av/på kostnadsestimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Veksle mellom bygging/fjerning for veibygging STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Veksle mellom bygging/fjerning for trikkesporkonstruksjon # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Garasjens retning STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Velg garasjens retning STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Trikkestallens retning STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Velg trikkestallens retning # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bussterminalens retning STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Velg bussterminalens retning STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Lasteterminalens retning STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Velg lasteterminalens retning STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Passasjertrikkestasjonens retning STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velg passasjertrikkestasjonens retning STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Varetrikkestasjonens retning STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velg varetrikkestasjonens retning # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Bygg vannveier STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vannveier STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Bygg kanaler. Shift slår av/på kostnadsestimat STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Bygg sluser. Shift slår av/på kostnadsestimat STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Bygg skipsdokk (nødvendig for kjøp og vedlikehold av skip). Shift slår av/på kostnadsestimat STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Bygg havn. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Plasser en bøye, som kan brukes til å danne kontrollpunkter. Shift slår av/på kostnadsestimat STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Bygg akvedukt. Shift slår av/på kostnadsestimat STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Definer vannområde.{}Lag en kanal, unntatt hvis Ctrl holdes nede på havnivå, hvorpå området rundt vil fylles istedenfor STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Plasser elver # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Skipsdokkens retning STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Velg skipsdokkens retning # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Havn # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flyplasser STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Bygg flyplass. Ctrl slår sammen stasjoner. Shift slår av/på kostnadsestimat # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Velg flyplasstype STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Velg størrelse/type flyplass STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Flyplasstype STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Planløsning {NUM} STR_AIRPORT_SMALL :Liten STR_AIRPORT_CITY :Storby STR_AIRPORT_METRO :Metropol STR_AIRPORT_INTERNATIONAL :Internasjonal STR_AIRPORT_COMMUTER :Pendler STR_AIRPORT_INTERCONTINENTAL :Interkontinental STR_AIRPORT_HELIPORT :Helikopterplass STR_AIRPORT_HELIDEPOT :Helikopterhangar STR_AIRPORT_HELISTATION :{G=masculine}Helikopterstasjon STR_AIRPORT_CLASS_SMALL :Små flyplasser STR_AIRPORT_CLASS_LARGE :Store flyplasser STR_AIRPORT_CLASS_HUB :Sentrumsflyplasser STR_AIRPORT_CLASS_HELIPORTS :Helikopterplasser STR_STATION_BUILD_NOISE :{BLACK}Støy generert: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsverktøy STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Senk et hjørne av et landområde. Dra for å senke det første valgte hjørnet, og jevne resten til samme høyde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Hev et hjørne av et landområde. Dra for å heve det første valgte hjørnet, og jevne resten til samme høyde. Ctrl velger område diagonalt. Shift slår av/på kostnadsestimat STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Jevn ut land til samme høyde som det første valgte hjørnet. Ctrl velger området diagonalt. Shift slår av/på kostnadsestimat STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kjøp land for fremtidig bruk. Shift slår av/på kostnadsestimat # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektvalg STR_OBJECT_BUILD_TOOLTIP :{BLACK}Velg objekt å bygge. Shift slår av/på kostnadsestimat STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Velg objektstype du vil bygge STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Forhåndsvisning av objektet STR_OBJECT_BUILD_SIZE :{BLACK}Størrelse: {GOLD}{NUM} x {NUM} ruter STR_OBJECT_CLASS_LTHS :Fyrtårn STR_OBJECT_CLASS_TRNS :Radiosendere # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Trær STR_PLANT_TREE_TOOLTIP :{BLACK}Velg typen tre som skal plantes. Hvis feltet allerede har et tre, vil dette plante flere typer trær uavhengig av den valgte typen STR_TREES_RANDOM_TYPE :{BLACK}Trær av tilfeldig type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plasser trær av tilfeldig type. Shift slår av/på kostnadsestimat STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilfeldige trær STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plasser trær tilfeldig i landskapet # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landskapsgenerering STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Plasser steinete felt i landskapet STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definer ørkenområde.{}Hold inne Ctrl for å fjerne det STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Øk størrelse av landareal for heving/senking STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Reduser størrelse av landareal for heving/senking STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generer tilfeldig landskap STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Opprett et nytt scenario STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Tilbakestill landskap STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjern all spiller-eid eiendom fra kartet STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Tilbakestill landskap STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Er du sikker på at du vil fjerne all spiller-eid eiendom? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bygenerering STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Ny by STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Grunnlegg en ny by. Shift+klikk viser kun beregnet kostnad STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Tilfeldig by STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Grunnlegg en by på et tilfeldig sted STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Mange tilfeldige byer STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte byer STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Navn på by: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Skriv inn navn på by STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klikk for å skrive navn på by STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Tilfeldig navn STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generer et tilfeldig navn STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Bystørrelse: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Liten STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Middels STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stor STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Tilfeldig STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Velg bystørrelse STR_FOUND_TOWN_CITY :{BLACK}By STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Storbyer vokser raskere enn vanlige byer{}Avhengig av innstillinger er de større når de blir grunnlagt STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Byers veiløsning: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Velg veiløsning for denne byen STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bedre veier STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 rutenett STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 rutenett STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfeldig # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Finansier ny industri STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Velg passende industri fra listen STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Mange tilfeldige industrier STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte industrier STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Koster: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansier # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikjede for {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industrikjede for {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Produserende industrier STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Aksepterende industrier STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hus STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikk på industrien for å se dens leverandører og kunder STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikk på varen for å se dens leverandører og kunder STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Vis kjede STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Vis vareleverings- og vareaksepterende industrier STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link til oversiktskart STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Velg de viste industriene på oversiktskartet i tillegg STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Velg last STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK} Velg lasten du vil vise STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Velg industri STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Velg industrien du vil vise # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informasjon om landområde STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Ryddingskostnad: {LTBLUE}Ikke tilgjengelig STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Ryddingskostnad: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Utbytte når ryddet: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Ikke tilgjengelig STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eier: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Eier av vei: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eier av trikkespor: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eier av jernbanespor: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygget: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonstype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjonstype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Flyplasstype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Navn på flyplass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Flyplassrutens navn: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Godtatte varer: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Fartsgrense for jernbanespor: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Steiner STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Ulendt terreng STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bart land STR_LAI_CLEAR_DESCRIPTION_GRASS :Gress STR_LAI_CLEAR_DESCRIPTION_FIELDS :Jorder STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snødekket land STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING}spor STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING}spor med blokksignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING}spor med forsignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING}spor med utgangssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING}spor med kombinasjonssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING}spor med avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spor med enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spor med blokk- og forsignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spor med blokk- og utgangssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spor med blokk- og kombinasjonssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spor med blokk- og avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spor med blokk- og enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spor med for- og utgangssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spor med for- og kombinasjonssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spor med for- og avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spor med for- og enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spor med utgangs- og kombinasjonssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spor med utgangs- og avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spor med utgangs- og enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spor med kombinasjon- og avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spor med kombinasjon- og enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spor med avanserte- og enveis avanserte signaler STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} togstall STR_LAI_ROAD_DESCRIPTION_ROAD :Vei STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vei med gatelykter STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Aveny STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Garasje STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Trikkespor # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (under bygging) STR_LAI_TREE_NAME_TREES :Trær STR_LAI_TREE_NAME_RAINFOREST :Regnskog STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusplanter STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :{G=masculine}Jernbanestasjon STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :{G=masculine}Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :{G=feminine}Lufthavn STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :{G=masculine}Lasteterminal STR_LAI_STATION_DESCRIPTION_BUS_STATION :{G=masculine}Bussterminal STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :{G=feminine}Havn STR_LAI_STATION_DESCRIPTION_BUOY :{G=feminine}Bøye STR_LAI_STATION_DESCRIPTION_WAYPOINT :{G=neuter}Kontrollpunkt STR_LAI_WATER_DESCRIPTION_WATER :Vann STR_LAI_WATER_DESCRIPTION_CANAL :Kanal STR_LAI_WATER_DESCRIPTION_LOCK :Sluse STR_LAI_WATER_DESCRIPTION_RIVER :Elv STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Kyst eller elvebredd STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Skipsdokk # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Jernbanetunnel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Veitunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Hengebro av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Bjelkebro av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Frittbærende bro av stål (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Hengebro av armert betong (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Trebro (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betongbro (jernbane) STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Hvelvbro (jernbane) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Hengebro av stål (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Bjelkebro av stål (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Frittbærende bro av stål (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Hengebro av armert betong (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Trebro (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betongbro (vei) STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Hvelvbro (vei) STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Radiosender STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Fyrtårn STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Firmaets hovedkontor STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firma-eid landområde # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig opphavsbeskyttet {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill STR_SAVELOAD_LOAD_CAPTION :{WHITE}Last inn spill STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Lagre scenario STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Last inn scenario STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Last inn høydekart STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Lagre høydekart STR_SAVELOAD_HOME_BUTTON :{BLACK}Klikk her for å komme til standardmappen for lagring og innlasting STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} ledig STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liste over disker, mapper og lagrede spill STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Gjeldende navn for valgt lagret spill STR_SAVELOAD_DELETE_BUTTON :{BLACK}Slett STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Slett valgte lagrede spill STR_SAVELOAD_SAVE_BUTTON :{BLACK}Lagre STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Lagre gjeldende spill ved å bruke navnet som er valgt STR_SAVELOAD_LOAD_BUTTON :{BLACK}Last inn STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Last inn det valgte spillet STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spilldetaljer STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ingen informasjon tilgjengelig. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Skriv inn et navn på spillet som skal lagres # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generer en verden STR_MAPGEN_MAPSIZE :{BLACK}Kartstørrelse: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Velg størrelsen på kartet i ruter. Antall tilgjengelige ruter vil være litt mindre STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antall byer: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antall industrier: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Høyde på snøgrensen: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flytt høyden på snøgrensen ett hakk opp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flytt høyden på snøgrensen ett hakk ned STR_MAPGEN_RANDOM_SEED :{BLACK}Såtall: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikk her for å taste inn et såtall STR_MAPGEN_RANDOM :{BLACK}Tilfeldiggjør STR_MAPGEN_RANDOM_HELP :{BLACK}Endre såtall som brukes for terreng-generering STR_MAPGEN_LAND_GENERATOR :{BLACK}Landskapsgenerator STR_MAPGEN_TREE_PLACER :{BLACK}Trealgoritme: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrengtype: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Havnivå: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Elver: STR_MAPGEN_SMOOTHNESS :{BLACK}Jevnhet: STR_MAPGEN_VARIETY :{BLACK}Variasjonsspredning: STR_MAPGEN_GENERATE :{WHITE}Generer # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Kartkanter: STR_MAPGEN_NORTHWEST :{BLACK}Nordvest STR_MAPGEN_NORTHEAST :{BLACK}Nordøst STR_MAPGEN_SOUTHEAST :{BLACK}Sørøst STR_MAPGEN_SOUTHWEST :{BLACK}Sørvest STR_MAPGEN_BORDER_FREEFORM :{BLACK}Frihånds STR_MAPGEN_BORDER_WATER :{BLACK}Sjø STR_MAPGEN_BORDER_RANDOM :{BLACK}Tilfeldig STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Tilfeldig STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuell STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Høydekartrotering: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Høydekartnavn: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Størrelse: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriv inn et såtall STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Endre høyden på snøgrensen STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Endre startår # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Scenariotype STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flatt land STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generer et flatt landskap STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tilfeldig landskap STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Høyde på flatt land: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Flytt høyden på flatt land ett nivå ned STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Flytt høyden på flatt land ett nivå opp STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Endre høyden på flatt land # Map generation progress STR_GENERATION_WORLD :{WHITE}Genererer verden... STR_GENERATION_ABORT :{BLACK}Avbryt STR_GENERATION_ABORT_CAPTION :{WHITE}Avbryt verdensgenerering STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vil du virkelig avbryte verdensgenereringen? STR_GENERATION_PROGRESS :{WHITE}{NUM}{NBSP}% ferdig STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generer en verden STR_GENERATION_RIVER_GENERATION :{BLACK}Skap elver STR_GENERATION_TREE_GENERATION :{BLACK}Tregenerering STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekt-generering STR_GENERATION_CLEARING_TILES :{BLACK}Generering av ulendt og steinete område STR_GENERATION_SETTINGUP_GAME :{BLACK}Klargjør spillet STR_GENERATION_PREPARING_TILELOOP :{BLACK}Kjører rute-løkke STR_GENERATION_PREPARING_SCRIPT :{BLACK}Kjører skript STR_GENERATION_PREPARING_GAME :{BLACK}Gjør klart spillet # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Innstillinger for NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detaljert NewGRF-informasjon STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktive NewGRF-filer STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inaktive NewGRF-filer STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Velg forhåndsoppsett: STR_NEWGRF_FILTER_TITLE :{ORANGE}Søkefilter: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Last inn valgte forhåndsoppsett STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Lagre forhåndsoppsettet STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Lagre den nåværende listen som et forhåndsoppsett STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Skriv inn et navn på forhåndsoppsettet STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Slett forhåndsoppsettet STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Slett det valgte forhåndsoppsettet STR_NEWGRF_SETTINGS_ADD :{BLACK}Legg til STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Legg til den valgte NewGRF-filen i din konfigurasjon STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Skann filer på nytt STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Oppdater listen over tilgjengelige NewGRF-filer STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Fjern STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Fjern den valgte NewGRF-filen fra listen STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flytt opp STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flytt den valgte NewGRF-filen oppover listen STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flytt ned STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flytt den valgte NewGRF-filen nedover listen STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}En liste over NewGRF-filene som er installert. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Sett parametre STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Vis parametre STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Endre palett STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Endre paletten på valgte NewGRF.{}Gjør dette når grafikken fra denne NewGRFen ser rosa ut i spillet STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Bruk endringene STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Finn manglende innhold på nettet STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Sjekk om manglende innhold kan bli funnet på nettet STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Filnavn: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF-ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versjon: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatibel versjon: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palett: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametre: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Ingen informasjon tilgjengelig STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matchende fil ble ikke funnet STR_NEWGRF_SETTINGS_DISABLED :{RED}Deaktivert STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Inkompatibel med denne versjonen av OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Forandre NewGRF-parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lukk STR_NEWGRF_PARAMETERS_RESET :{BLACK}Tilbakestill STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Sett alle parametere til standardverdi STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Antall parametere: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspiser - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Eier STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspiser objektet til eiervisningen STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ved {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Jernbanetype STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF-variabel 60+x parameter (heksadesimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Forskyver sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Neste sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Gå til figur STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gå til gitt sprite. Hvis spriten ikke er en normal sprite, fortsett til neste normale sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Forrige figur STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til forrige normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Forhåndsvisning av valgt sprite. Innrettingen ignoreres når spriten tegnes STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt spriten rundt omkring, for å endre X- og Y-forskyvningene STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskyvning: {NUM}, Y-forskyvning: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Velg en sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Velg en sprite fra et vilkårlig sted på skjermen STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Gå til sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Advarsel: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Feil: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}En fatal NewGRF-feil har oppstått: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} virker ikke med TTDPatch-versjonen som er rapportert av OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er for versjon {STRING} av TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er laget for å bli brukt med {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Ugyldig parameter for {1:STRING}: parameter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} må være lastet før {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} må være lastet etter {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} krever OpenTTD versjon {STRING} eller nyere. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF-filen den var laget for å oversette STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :For mange NewGRFer innlastet. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Å laste inn {1:STRING} som statisk NewGRF med {STRING} kan forårsake synkroniseringsfeil. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uventet figur (figur {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ukjent Handling 0 egenskap {4:HEX} (figur {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Forsøkt å bruke ugyldig ID (figur {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneholder en ødelagt sprite. Alle ødelagte spriter vil bli vist som røde spørsmålstegn (?). STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere Handling 8 oppføringer (figur {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Leste forbi slutten av pseudo-figur (figur {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det nåværende grafikksettet mangler en del spriter.{}Vennligst oppdater grafikksettet. STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den benyttede grafikkpakken mangler en mengde bildeelementer.{}Vennligst oppdater grafikkpakken.{}Siden du spiller en {YELLOW}utviklingsversjon av OpenTTD{WHITE}, kan det være at du også trenger en {YELLOW}utviklingsversjon av grafikkpakken{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Etterspurte GRF-ressurser ikke tilgjengelig (figur {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ble deaktivert av {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent figur layout-format (figur {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Advarsel! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Du er i ferd med å gjøre forandringer i et kjørende spill. Dette kan krasje OpenTTD. Ikke send inn bug-rapporter om slike feil.{}Er du helt sikker på at du vil gjøre dette? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan ikke legge til fil: GRF ID finnes allerede STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchende fil ble ikke funnet (kompatibel GRF-fil lastet inn) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kan ikke legge til fil: Maksgrense nådd for NewGRF-filer STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF(er) lastet for manglende filer STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglende GRF-fil(er) har blitt deaktivert STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Mangler GRF-fil(er) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Å slå av pause kan medføre at OpenTTD krasjer. Ikke rapporter feil for etterfølgende krasjer.{}Vil du virkelig slå av pause? # NewGRF status STR_NEWGRF_LIST_NONE :Ingen STR_NEWGRF_LIST_ALL_FOUND :Alle filer tilstede STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fant kompatible filer STR_NEWGRF_LIST_MISSING :{RED}Manglende filer # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Atferden til NewGRF '{STRING}' vil trolig forårsake synkroniseringsfeil og/eller krasj. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Det endret maskinvogn-tilstand for '{1:ENGINE}' mens det er utenfor en togstall. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Det endret kjøretøylengde for '{1:ENGINE}' når utenfor en togstall. STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' tilhørende '{COMPANY}' har ugyldig lengde. Dette skyldes trolig problemer med NewGRFer. Spillet kan bli usynkronisert eller krasje. STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gir feilaktig informasjon. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Vare-/ombyggingsinformasjon for '{1:ENGINE}' er forskjellig fra kjøpelisten etter konstruksjonen. Dette kan resultere i at autofornying ikke fungerer på riktig måte. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' forårsaket en uendelig løkke i produksjonstilbakekallet. STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tilbakekall {1:HEX} rapporterte ukjent/ugyldig resultat {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} med STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE : # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skanner NewGRFer STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanner NewGRFer. Avhengig av mengde kan dette ta litt tid... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" er} skannet, av totalt {NUM}. STR_NEWGRF_SCAN_ARCHIVES :Skanner etter arkiv # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Skiltliste - {COMMA} skilt STR_SIGN_LIST_MATCH_CASE :{BLACK}Skriftformgjenkjennelse STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Veksle mellom skriftformgjenkjennelse ved sammenligning av skiltnavn mot filterstrengen # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Skriv inn skilttekst STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Gå til neste skilt STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til forrige skilt STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriv inn et navn på skiltet # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Byer STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ingen - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bynavn - klikk på navnet for å gå til byen. Ctrl+klikk åpner et nytt tilleggsvindu over byen STR_TOWN_POPULATION :{BLACK}Verdensbefolkning: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (By) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Innbyggertall: {ORANGE}{COMMA}{BLACK} Antall hus: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasjerer forrige måned: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post forrige måned: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Varebehov for byvekst: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} påkrevd STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nødvendig om vinteren STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} levert STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (fortsatt nødvendig) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (levert) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Byen vokser hver {ORANGE}{COMMA}.{BLACK} dag STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Byen vokser hver {ORANGE}{COMMA}.{BLACK} dag (finansiert) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Byen vokser {RED}ikke{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Byens støygrense: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Gå til by. Ctrl+klikk åpner et nytt tilleggsvindu over byen STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Bystyre STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vis informasjon om bystyret STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Endre navn på byen STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Utvid STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Øk bystørrelse STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Slett STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Slett denne byen fullstendig STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Endre bynavnet # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN}s bystyre STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Vurdering av transportfirma: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Handlinger tilgjengelig: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liste over ting som kan gjøres for/i byen - klikk på valg for mer informasjon STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Gjør det STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Utfør den merkede handlingen valgt i listen over STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Liten reklamekampanje STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Middels stor reklamekampanje STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Stor reklamekampanje STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Finansier ombygging av byens veinett STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bygg statue av firmaets grunnlegger STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Finansier nye bygninger STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kjøp eksklusive transportrettigheter STR_LOCAL_AUTHORITY_ACTION_BRIBE :Bestikk bystyret STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Start en liten lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Start en middels stor lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Start en stor lokal reklamekampanje for å tiltrekke deg flere passasjerer og mer varer til dine transporttjenester.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Finansier ombygging av det lokale veinettet. Fører til betydelige veiforstyrrelser i opptil seks måneder.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bygg en statue for å ære firmaet.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Finansier byggingen av nye kommersielle bygninger i byen.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kjøp ett års ekslusive transportrettigheter i byen. Bystyret vil kun tillate passasjerer og varer å bruke dine transporttjenester.{}Kostnad: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Du kan bestikke bystyret for å forbedre vurderingen av firmaet ditt, men du risikerer å bli bøtelagt hvis du blir oppdaget.{}Kostnad: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Mål STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Ingen - STR_GOALS_COMPANY_TITLE :{BLACK}Firmaets mål: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}klikk på mål for å gå til industri/by/rute . Ctrl+klikk åpner et nytt tilleggsvindu over industriens/byens/rutens beliggenhet # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Spørsmål STR_GOAL_QUESTION_CAPTION_INFORMATION :Informasjon STR_GOAL_QUESTION_CAPTION_WARNING :Advarsel STR_GOAL_QUESTION_CAPTION_ERROR :Feil ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nei STR_GOAL_QUESTION_BUTTON_YES :Ja STR_GOAL_QUESTION_BUTTON_DECLINE :Avslå STR_GOAL_QUESTION_BUTTON_ACCEPT :Godta STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorer STR_GOAL_QUESTION_BUTTON_RETRY :Prøv igjen STR_GOAL_QUESTION_BUTTON_PREVIOUS :Forrige STR_GOAL_QUESTION_BUTTON_NEXT :Neste STR_GOAL_QUESTION_BUTTON_STOP :Stopp STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Kjør STR_GOAL_QUESTION_BUTTON_CONTINUE :Fortsett STR_GOAL_QUESTION_BUTTON_RESTART :Start på nytt STR_GOAL_QUESTION_BUTTON_POSTPONE :Utsett STR_GOAL_QUESTION_BUTTON_SURRENDER :Gi opp STR_GOAL_QUESTION_BUTTON_CLOSE :Lukk # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidier STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsidietilbud: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}{YELLOW} (innen {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Ingen - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tjenester som allerede subsidieres: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, inntil {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk for å gå til industri/by. Ctrl+klikk åpner et nytt tilleggsvindu over industrien/byen # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnavn - klikk på navnet for å gå til stasjonen. Ctrl+klikk åpner et nytt tilleggsvindu over stasjonen. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold inne Ctrl for å velge flere STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stasjon{P "" er} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ingen - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Velg alle anlegg STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Velg alle varetyper (inkludert varer som ikke venter) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ingen varetyper venter # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Venter: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} på vei fra {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Godtar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vis liste over godtatte varer STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Godtar: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Denne stasjonen har eksklusive transportrettigheter i denne byen. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kjøpte eksklusive transportrettigheter i denne byen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderinger STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stasjonsvurdering STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokal vurdering av transporttjenester: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}{NBSP}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Elendig STR_CARGO_RATING_VERY_POOR :Veldig dårlig STR_CARGO_RATING_POOR :Dårlig STR_CARGO_RATING_MEDIOCRE :Middelmådig STR_CARGO_RATING_GOOD :God STR_CARGO_RATING_VERY_GOOD :Veldig god STR_CARGO_RATING_EXCELLENT :Utmerket STR_CARGO_RATING_OUTSTANDING :Fremragende ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Gå til stasjon. Ctrl+klikk åpner et nytt tilleggsvindu over stasjonen STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Endre stasjonens navn STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Vis alle tog som har denne stasjonen på sin ruteplan STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Vis alle kjøretøy som har denne stasjonen på sin ruteplan STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Vis alle luftfartøy som har denne stasjonen på sin ruteplan STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Vis alle skip som har denne stasjonen på sin ruteplan STR_STATION_VIEW_RENAME_STATION_CAPTION :Endre navnet til stasjon/lasteterminal STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Steng flyplass STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Hindre fly i å lande på denne flyplassen. # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Gå til kontrollpunkt. Ctrl+klikk åpner et nytt tilleggsvindu over kontrollpunktet STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Endre kontrollpunktets navn STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Gå til bøye. Ctrl+klikk åpner et nytt tilleggsvindu over bøyen STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Endre navn på bøye STR_EDIT_WAYPOINT_NAME :{WHITE}Endre navn på kontrollpunkt # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY}s regnskap{BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Utgifter/inntekter STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruksjon STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nye kjøretøy STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Driftskostnader for tog STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Driftskostnader for kjøretøy STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Driftskostnader for luftfartøy STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Driftskostnader for skip STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Vedlikehold av eiendom STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Inntekter fra tog STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Inntekter fra kjøretøy STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Inntekter fra luftfartøy STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Inntekter fra skip STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Renter STR_FINANCES_SECTION_OTHER :{GOLD}Annet STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Totalt: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Saldo STR_FINANCES_LOAN_TITLE :{WHITE}Lån STR_FINANCES_MAX_LOAN :{WHITE}Maks lån: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Lån ({CURRENCY_LONG}) STR_FINANCES_BORROW_TOOLTIP :{BLACK}Øk størrelsen på lånet. Ctrl+klikk tar opp maks lån STR_FINANCES_REPAY_BUTTON :{BLACK}Betal tilbake ({CURRENCY_LONG}) STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betal tilbake en del av lånet. Ctrl+klikk betaler ned så mye som mulig. STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktur # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Sjef) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Grunnlagt: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Firmafarge: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Kjøretøy: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tog STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} kjøretøy STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} luftfartøy STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} skip STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ingen STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmaverdi: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}{NBSP}% eies av {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktur: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} jernbanebit{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} veibit{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vannrute{P "" r} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stasjonsrute{P "" r} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} flyplass{P "" er} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Ingen STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bygg firmaets hovedkontor STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg firmaets hovedkontor STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Se firmaets hovedkontor STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Vis firmaets hovedkontor STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flytt firmaets hovedkontor STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Gjenoppbygg (flytt) firmaets hovedkontor et annet sted til en kostnad av 1{NBSP}% av firmaverdien. Shift+klikk viser beregnet kostnad uten å flytte kontoret STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vis detaljert infrastrukturtelling STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nytt ansikt STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Velg nytt ansikt på sjefen STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Firmafarge STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Endre firmafarge STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Firmanavn STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Endre firmanavn STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Sjefens navn STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Endre sjefens navn STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kjøp 25{NBSP}% av aksjene i firmaet STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Selg 25{NBSP}% av aksjene i firmaet STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kjøp 25{NBSP}% av aksjene i firmaet. Shift+klikk viser beregnet kostnad uten å kjøpe noen aksjer STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Selg 25{NBSP}% av aksjene i firmaet. Shift+klikk viser beregnet inntekt uten å selge noen aksjer STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Firmanavn STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Sjefens navn STR_BUY_COMPANY_MESSAGE :{WHITE}Vi ser etter et transportfirma som er villig til å overta oss.{}{}Vil du kjøpe {COMPANY} for {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastrukturen til {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Jernbanebiter: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signaler STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Veibiter: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Vei STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Trikkespor STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vannruter: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanaler STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjoner: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stasjonsruter STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flyplasser STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/år ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/år # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}% transportert) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}%/{COMMA}{NBSP}% transportert) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavn - klikk på navn for å gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksjon forrige måned: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transportert) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Varer som venter på behandling: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produserer: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produserer: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Endre produksjon (multiplum av 8, opptil 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Endre produksjonsnivå (prosentsats, opptil 800{NBSP}%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} tog STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} kjøretøy STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} skip STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} luftfartøy STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Tog - klikk på tog for mer informasjon STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Kjøretøy - klikk på kjøretøy for informasjon STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skip - klikk på skip for mer informasjon STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Luftfartøy - klikk på luftfartøy for mer informasjon STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Fortjeneste i år: {CURRENCY_LONG} (i fjor: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Tilgjengelige tog STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Tilgjengelige kjøretøy STR_VEHICLE_LIST_AVAILABLE_SHIPS :Tilgjengelige skip STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Tilgjengelige luftfartøy STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Se en liste over tilgjengelige modeller for denne kjøretøytypen. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Administrer liste STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instruksjoner til alle kjøretøy i denne listen STR_VEHICLE_LIST_REPLACE_VEHICLES :Bytt ut kjøretøy STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send til vedlikehold STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Send til togstallen STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Send til garasjen STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send til skipsdokken STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send til hangaren STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikk for å stoppe alle kjøretøy i listen STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikk for å starte alle kjøretøy i listen STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Delte ordre av {COMMA} kjøretøy # Group window STR_GROUP_ALL_TRAINS :Alle tog STR_GROUP_ALL_ROAD_VEHICLES :Alle kjøretøy STR_GROUP_ALL_SHIPS :Alle skip STR_GROUP_ALL_AIRCRAFTS :Alle luftfartøy STR_GROUP_DEFAULT_TRAINS :Ugrupperte tog STR_GROUP_DEFAULT_ROAD_VEHICLES :Ugrupperte kjøretøy STR_GROUP_DEFAULT_SHIPS :Ugrupperte skip STR_GROUP_DEFAULT_AIRCRAFTS :Ugrupperte luftfartøy STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupper - Klikk en gruppe for å se alle kjøretøy i gruppen STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikk for å opprette en gruppe STR_GROUP_DELETE_TOOLTIP :{BLACK}Fjern den valgte gruppen STR_GROUP_RENAME_TOOLTIP :{BLACK}Gi nytt navn på den valgte gruppen STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikk for å beskytte denne gruppen fra global autoerstatning STR_GROUP_ADD_SHARED_VEHICLE :Legg til delte kjøretøy STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kjøretøy STR_GROUP_RENAME_CAPTION :{BLACK}Endre navn på gruppe # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye tog/vogner for jernbane STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nye tog/vogner for elektrisk jernbane STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nye tog/vogner for monorail STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nye tog/vogner for maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nye tog/vogner STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nye kjøretøy STR_BUY_VEHICLE_SHIP_CAPTION :Nye skip STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nye luftfartøy STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} Vekt: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hastighet: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hastighet: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hastighet på havet: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Hastighet på kanal/elv: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Driftskostnad: {GOLD}{CURRENCY_LONG}/år STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapasitet: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(ombyggbart) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Designet: {GOLD}{NUM}{BLACK} Levetid: {GOLD}{COMMA} år STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks pålitelighet: {GOLD}{COMMA}{NBSP}% STR_PURCHASE_INFO_COST :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vekt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kostnad: {GOLD}{CURRENCY_LONG}{BLACK} Hastighet: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapasitet: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Lokomotivvogner: {GOLD}+{POWER}{BLACK} Vekt: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kan bygges om til: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Alle varetyper STR_PURCHASE_INFO_ALL_BUT :Alt utenom {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks trekkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rekkevidde: {GOLD}{COMMA} ruter STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liste over tog/vogner - klikk på tog/vogn for mer informasjon STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over kjøretøy - klikk på kjøretøy for mer informasjon STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liste over skip - klikk på skip for mer informasjon STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liste over luftfartøy - klikk på luftfartøy for mer informasjon STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kjøp tog/vogn STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kjøp kjøretøy STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kjøp skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kjøp luftfartøy STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede tog/vogn. Shift+klikk viser estimert kostnad STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede kjøretøy. Shift+klikk viser estimert kostnad STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede skip. Shift+klikk viser estimert kostnad STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kjøp det merkede luftfartøy. Shift+klikk viser estimert kostnad STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Endre navn STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Endre navn STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Endre navn STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Endre navn STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Gi nytt navn til tog-/vogntypen STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Gi nytt navn til kjøretøytypen STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Gi nytt navn til skipstypen STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Gi nytt navn til luftfartøytypen STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Gi tog/vogntype nytt navn STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Gi kjøretøytypen nytt navn STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Gi skipstypen nytt navn STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Gi luftfartøytypen nytt navn # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Endre navn på garasje/stall/hangar/dokk STR_DEPOT_RENAME_DEPOT_CAPTION :Endre navn på garasje/stall/hangar/dokk STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} kjøretøy{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tog - dra vogn/tog med venstreklikk for å legge til/fjerne fra tog, høyreklikk for mer informasjon. Hold inne Ctrl for å gjøre begge funksjonene gjeldende for hele togkjeden STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Kjøretøy - høyreklikk på kjøretøy for mer informasjon STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skip - høyreklikk på skip for mer informasjon STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Luftfartøy - høyreklikk på luftfartøy for mer informasjon STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Dra tog/vogn hit for å selge det STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Dra kjøretøy hit for å selge det STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Dra skip hit for å selge det STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Dra luftfartøy hit for å selge det STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Dra lokomotivet hit for å selge hele toget STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Selg alle tog i togstallen STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Selg alle kjøretøy i garasjen STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Selg alle skip i skipsdokken STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Selg alle luftfartøy i hangaren STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Autoerstatt alle tog i togstallen STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autoerstatt alle kjøretøy i garasjen STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autoerstatt alle skip i skipsdokken STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autoerstatt alle luftfartøy i hangaren STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nye tog/vogner STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nye kjøretøy STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nye skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nye luftfartøy STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt tog/vogn STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt kjøretøy STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nytt skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Kjøp nye luftfartøy STR_DEPOT_CLONE_TRAIN :{BLACK}Kopier tog STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kopier kjøretøy STR_DEPOT_CLONE_SHIP :{BLACK}Kopier skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kopier luftfartøy STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et tog inkludert alle vognene. Klikk denne knappen og deretter på et tog utenfor eller inni togstallen. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et kjøretøy. Klikk denne knappen og deretter på et kjøretøy utenfor eller inni garasjen. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dette vil skape en kopi av et skip. Klikk denne knappen og deretter på et skip utenfor eller inni skipsdokken. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil skape en kopi av et luftfartøy. Klikk denne knappen og deretter på et luftfartøy utenfor eller inni hangaren. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Gå til togstall. Ctrl+klikk åpner et nytt tilleggsvindu over togstallen STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Gå til garasje. Ctrl+klikk åpner et nytt tilleggsvindu over garasjen STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Gå til skipsdokk. Ctrl+klikk åpner et nytt tilleggsvindu over skipsdokken STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Gå til hangar. Ctrl+klikk åpner et nytt tilleggsvindu over hangaren STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Få en liste over alle tog med denne togstallen i sine ordre STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Få en liste over alle kjøretøy med denne garasjen i sine ordre STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Få en liste over alle skip med denne skipsdokken i sine ordre STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Få en liste over alle luftfartøy med denne hangaren i sine ordre STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikk for å stoppe alle togene i togstallen STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikk for å stoppe alle kjøretøyene i garasjen STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klikk for å stoppe alle skipene i skipsdokken STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klikk for å stoppe alle luftfartøyene i hangaren STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikk for å starte alle togene i togstallen STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikk for å starte alle kjøretøyene i garasjen STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klikk for å starte alle skipene i skipsdokken STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klikk for å starte alle luftfartøyene i hangaren STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du er nå i ferd med å selge alle kjøretøyene i garasjen/stallen/hangaren/dokken. Er du sikker på at du vil dette? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Melding fra kjøretøysprodusent STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vi har nettopp designet e{G n i t} ny{G "" "" tt} {STRING} - er du interessert i et års ekslusivt bruk av dette, slik at vi kan se hvordan det virker før det blir allment tilgjengelig? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lokomotiv STR_ENGINE_PREVIEW_ROAD_VEHICLE :kjøretøy STR_ENGINE_PREVIEW_AIRCRAFT :{G=neuter}luftfartøy STR_ENGINE_PREVIEW_SHIP :skip STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail-lokomotiv STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-lokomotiv STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Kraft: {POWER}{}Driftskostnader: {CURRENCY_LONG}/år{}Kapasitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Kraft: {POWER} Maks trekkraft: {6:FORCE}{}Vedlikehold: {4:CURRENCY_LONG}/år{}Kapasitet: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY}{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY}{}Kapasitet: {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Erstatte {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Tog STR_REPLACE_VEHICLE_ROAD_VEHICLE :Kjøretøy STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :{G=neuter}Luftfartøy STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Velg lokomotivtype som skal erstattes STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velg lokomotivtypen du ønsker at skal erstatte den du har valgt til venstre STR_REPLACE_VEHICLES_START :{BLACK}Start erstatning av kjøretøy STR_REPLACE_VEHICLES_NOW :Bytt ut alle kjøretøy nå STR_REPLACE_VEHICLES_WHEN_OLD :Bytt ut bare gamle kjøretøy STR_REPLACE_HELP_START_BUTTON :{BLACK}Klikk denne knappen hvis du vil erstatte det valgte lokomotivet på venstresiden med det valgte lokomotivet på høyresiden STR_REPLACE_NOT_REPLACING :{BLACK}Erstatter ikke STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ingen kjøretøy valgt STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} når gammel STR_REPLACE_VEHICLES_STOP :{BLACK}Stopp erstatning av kjøretøy STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk denne knappen for å stoppe erstatning av lokomotivet som er valgt på venstresiden STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Erstatter: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Veksle mellom tog- og vognerstatningsvinduet STR_REPLACE_ENGINES :Lokomotiv STR_REPLACE_WAGONS :Vogner STR_REPLACE_HELP_RAILTYPE :{BLACK}Velg jernbanetypen du vil bytte ut lokomotiv på STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket lokomotiv som overtar for det valgte lokomotivet på venstresiden STR_REPLACE_RAIL_VEHICLES :Jernbanekjøretøy STR_REPLACE_ELRAIL_VEHICLES :Elektriske jernbanekjøretøy STR_REPLACE_MONORAIL_VEHICLES :Monorail-kjøretøy STR_REPLACE_MAGLEV_VEHICLES :Maglev-kjøretøy STR_REPLACE_REMOVE_WAGON :{BLACK}Vognfjerning: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}La autoerstatningen beholde lengen på toget ved å fjerne vogner (fra første vogn), hvis utskiftningen gjør toget lengre. # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Gå til tog. Ctrl+klikk vil følge toget i hovedvinduet STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Gå til kjøretøy. Ctrl+klikk vil følge kjøretøyet i hovedvinduet STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Gå til skip. Ctrl+klikk vil følge skipet i hovedvinduet STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Gå til luftfartøy. Ctrl+klikk vil følge luftfartøyet i hovedvinduet STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send toget til en togstall. Ctrl+klikk for kun å utføre vedlikehold STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send kjøretøyet til en garasje. Ctrl+klikk for kun å utføre vedlikehold STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send skipet til en skipsdokk. Ctrl+klikk for kun å utføre vedlikehold STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send luftfartøyet til en hangar. Ctrl+klikk for kun å utføre vedlikehold STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Dette vil skape en kopi av toget, inkludert alle vognene. Ctrl+klikk vil sørge for delte ordre. Shift+klikk viser estimert kostnad STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Dette vil skape en kopi av kjøretøyet. Ctrl+klikk vil sørge for delte ordre STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Dette vil skape en kopi av skipet. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Dette vil skape en kopi av luftfartøyet. Ctrl+klikk vil dele ordrene. Shift+klikk viser estimert kostnad STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Tving toget til å fortsette uten å vente på klarsignal STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Bygg om toget til å frakte en annen varetype STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Bygg om kjøretøyet til å frakte en annen varetype STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Bygg om skipet til å frakte en annen varetype STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Bygg om luftfartøyet til å frakte en annen varetype STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Snu togets kjøreretning STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Tving kjøretøy til å snu om STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Vis togets ordreliste. Ctrl+klikk for å vise togets rutetabell STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Vis kjøretøyets ordreliste. Ctrl+klikk for å vise kjøretøyets rutetabell STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Vis skipets ordreliste. Ctrl+klikk for å vise skipets rutetabell STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Vis luftfartøyets ordreliste. Ctrl+klikk for å vise luftfartøyets rutetabell STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Vis detaljer om toget STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Vis detaljer om kjøretøyet STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Vis detaljer om skipet STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Vis detaljer om luftfartøyet STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldende togstatus - klikk her for å stoppe/starte toget. Ctrl+klikk ruller til destinasjonen STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldende kjøretøystatus - klikk her for å stoppe/starte kjøretøyet. Ctrl+klikk ruller til destinasjonen STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldende skipsstatus - klikk her for å stoppe/starte skipet. Ctrl+klikk ruller til destinasjonen STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Gjeldende luftfartøystatus - klikk her for å stoppe/starte luftfartøyet. Ctrl+klikk ruller til destinasjonen # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laster / Losser STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Forlater STR_VEHICLE_STATUS_CRASHED :{RED}Krasjet! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Havarert STR_VEHICLE_STATUS_STOPPED :{RED}Stoppet STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stopper, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ingen strøm STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Venter på ledig rute STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}For langt til neste destinasjon STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}På vei til {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Ingen ordre, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Har kurs mot {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}På vei til {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Vedlikehold ved {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Stoppet STR_VEHICLE_COMMAND_STOPPED :{RED}Stoppet STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Startet STR_VEHICLE_COMMAND_STARTED :{GREEN}Startet # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detaljer) STR_VEHICLE_NAME_BUTTON :{BLACK}Navn STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Navngi tog STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Navngi kjøretøy STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Navngi skip STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Navngi luftfartøy STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftskostnader: {LTBLUE}{CURRENCY_LONG}/år # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} år ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks hastighet: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks hastighet: {LTBLUE}{VELOCITY} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks hastighet: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks hastighet: {LTBLUE}{VELOCITY} {BLACK}Maks trekkraft: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Fortjeneste i år: {LTBLUE}{CURRENCY_LONG} (i fjor: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Pålitelighet: {LTBLUE}{COMMA}{NBSP}% {BLACK}Havarier siden siste vedlikehold: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Bygget: {LTBLUE}{NUM}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}Ingen{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasitet: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Overføringskreditt: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Vedlikeholdsintervall: {LTBLUE}{COMMA}{NBSP}dager{BLACK} Forrige vedlikehold: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Vedlikeholdsintervall: {LTBLUE}{COMMA}{NBSP}%{BLACK} Forrige vedlikehold: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Øk vedlikeholdsintervall med 10. Ctrl+klikk øker med 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Reduser vedlikeholdsintervall med 10. Ctrl+klikk reduserer med 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Enhet for vedlikeholdsintervall STR_VEHICLE_DETAILS_DEFAULT :Standard STR_VEHICLE_DETAILS_DAYS :Dager STR_VEHICLE_DETAILS_PERCENT :Prosentandel STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Navngi tog STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Navngi kjøretøy STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Navngi skip STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Navngi luftfartøy # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Bygget: {LTBLUE}{NUM}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Verdi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total varekapasitet på dette toget: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Tom STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} fra {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} fra {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Varer STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Vis detaljer om innholdet i vognene STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informasjon STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Vis detaljer om tog/vogner STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasitet STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Vis kapasiteten til vognene STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Total last STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Vis total kapasitet på toget fordelt på varetype STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapasitet: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Bygg om) STR_REFIT_TITLE :{GOLD}Velg varetype: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Kostnad for ombygging: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}{}{BLACK}Intekt fra ombygning: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kostnad for ombygging: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapasitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Intekt fra ombygning: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Velg kjøretøy for ombygging. Dra med musen for å velge flere kjøretøy. Klikk på et tomt område for å velge hele kjøretøyet. Ctrl+klikk vil velge et kjøretøy og den følgende kjeden STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Velg hvilken varetype toget skal frakte STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Velg hvilken varetype kjøretøyet skal frakte STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Velg hvilken varetype skipet skal frakte STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Velg hvilken varetype luftfartøyet skal frakte STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Bygg om toget STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Bygg om kjøretøyet STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Bygg om skipet STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Bygg om luftfartøy STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Bygg om toget til å frakte den merkede varetypen STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Bygg om kjøretøyet til å frakte den merkede varetypen STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Bygg om skipet til å frakte den merkede varetypen STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Bygg om luftfartøyet til å frakte den merkede varetypen # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ordre) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Rutetabell STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Skift til rutetabellvisning STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordreliste - klikk på en ordre for å markere den. Ctrl+klikk viser ordrens endestasjon STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Slutt på ordre - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Slutt på delte ordre - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Direkte STR_ORDER_GO_TO :Gå til STR_ORDER_GO_NON_STOP_TO :Gå direkte til STR_ORDER_GO_VIA :Gå via STR_ORDER_GO_NON_STOP_VIA :Gå direkte via STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Endre stopprutinene for den merkede ordren STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Full last av enhver varetype STR_ORDER_DROP_LOAD_IF_POSSIBLE :Last hvis tilgjengelig STR_ORDER_DROP_FULL_LOAD_ALL :Full last av alle varetyper STR_ORDER_DROP_FULL_LOAD_ANY :Full last av minst en varetype STR_ORDER_DROP_NO_LOADING :Ingen lasting STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Endre lasterutinene for den merkede ordren STR_ORDER_TOGGLE_UNLOAD :{BLACK}Loss av alt STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Losse hvis godtatt STR_ORDER_DROP_UNLOAD :Loss av alt STR_ORDER_DROP_TRANSFER :Overfør STR_ORDER_DROP_NO_UNLOADING :Ingen lossing STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Endre lossingsrutinene for den merkede ordren STR_ORDER_REFIT :{BLACK}Bygg om STR_ORDER_REFIT_TOOLTIP :{BLACK}Velg hvilken varetype det skal bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsordren STR_ORDER_REFIT_AUTO :{BLACK}Automatisk ombygging STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Velg hvilken varetype det skal automatisk bygges om til i denne ordren. Ctrl+klikk for å fjerne ombyggingsinstrukser. Automatisk ombygging vil kun bli utført hvis kjøretøyet tillater det STR_ORDER_DROP_REFIT_AUTO :Fast varetype STR_ORDER_DROP_REFIT_AUTO_ANY :Tilgjengelig varetype STR_ORDER_SERVICE :{BLACK}Vedlikehold STR_ORDER_DROP_GO_ALWAYS_DEPOT :Alltid gå STR_ORDER_DROP_SERVICE_DEPOT :Vedlikehold ved behov STR_ORDER_DROP_HALT_DEPOT :Stopp STR_ORDER_SERVICE_TOOLTIP :{BLACK}Hopp over ordren med mindre vedlikehold er nødvendig STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Kjøretøydata å basere hopp på # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Lastprosent STR_ORDER_CONDITIONAL_RELIABILITY :Pålitelighet STR_ORDER_CONDITIONAL_MAX_SPEED :Maks hastighet STR_ORDER_CONDITIONAL_AGE :Alder (år) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Trenger vedlikehold STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alltid STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Gjenstående levetid (år) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Hvordan sammenligne kjøretøyets data til den gitte verdi STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er lik STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :er ikke lik STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :er mindre enn STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er mindre eller lik STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :er mer enn STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er mer eller lik STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :er sant STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :er usant STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Verdien til å sammenligne kjøretøyets data mot STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Skriv inn verdi til å sammenligne mot STR_ORDERS_SKIP_BUTTON :{BLACK}Hopp over STR_ORDERS_SKIP_TOOLTIP :{BLACK}Hopp over den nåværende ordren og begynn på neste. Ctrl+klikk hopper fram til valgte ordre STR_ORDERS_DELETE_BUTTON :{BLACK}Slett STR_ORDERS_DELETE_TOOLTIP :{BLACK}Slett den merkede ordren STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Slett alle ordre STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stopp deling STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stopp deling av ordreliste. Ctrl+klikk vil slette alle ordrer for dette kjøretøyet STR_ORDERS_GO_TO_BUTTON :{BLACK}Kjør til STR_ORDER_GO_TO_NEAREST_DEPOT :Gå til nærmeste garasje/stall/hangar/dokk STR_ORDER_GO_TO_NEAREST_HANGAR :Gå til nærmeste hangar STR_ORDER_CONDITIONAL :Betinget ordrehopp STR_ORDER_SHARE :Del ordre STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Sett inn en ny ordre før den merkede ordren, eller legg til i slutten av listen. Ctrl gir ordren 'full last, enhver varetype', kontrollpunktordre 'direkte' og verkstedsordre 'vedlikehold'. 'Del ordrer' eller Ctrl lar dette kjøretøyet dele ordrer med det valgte kjøretøyet. Klikk på et kjøretøy for å kopiere ordrene fra det. En verkstedsordre slår av automatisk vedlikehold av kjøretøyet STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Vis alle kjøretøy som deler denne ruteplanen # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Kjør via {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Kjør direkte via {WAYPOINT} STR_ORDER_SERVICE_AT :Vedlikehold ved STR_ORDER_SERVICE_NON_STOP_AT :Vedlikehold direkte ved STR_ORDER_NEAREST_DEPOT :det nærmeste STR_ORDER_NEAREST_HANGAR :den nærmeste hangaren STR_ORDER_TRAIN_DEPOT :Togstall STR_ORDER_ROAD_VEHICLE_DEPOT :Garasje STR_ORDER_SHIP_DEPOT :Skipsdokk STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Bygg om til {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Bygg om til {STRING} og stopp) STR_ORDER_STOP_ORDER :(Stopp) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Ubetinget) STR_ORDER_FULL_LOAD :(Full last av alle varetyper) STR_ORDER_FULL_LOAD_ANY :(Full last av minst en varetype) STR_ORDER_NO_LOAD :(Ingen lasting) STR_ORDER_UNLOAD :(Loss av og last på varer) STR_ORDER_UNLOAD_FULL_LOAD :(Loss av og vent på full last) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Loss av og vent på første fulle last) STR_ORDER_UNLOAD_NO_LOAD :(Loss av og forlat tom) STR_ORDER_TRANSFER :(Overfør og last på varer) STR_ORDER_TRANSFER_FULL_LOAD :(Overfør og vent på full last) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Overfør og vent på første fulle last) STR_ORDER_TRANSFER_NO_LOAD :(Overfør og forlat tom) STR_ORDER_NO_UNLOAD :(Ingen lossing og last på varer) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ingen lossing og vent på full last) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ingen lossing og vent på første fulle last) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ingen av og pålasting) STR_ORDER_AUTO_REFIT :(Automatisk ombygging til {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Full last med automatisk ombygging til {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Full last av minst en varetype med automatisk ombygging til {STRING}) STR_ORDER_UNLOAD_REFIT :(Loss av og ta last med automatisk ombygging til {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Loss av og vent på full last med automatisk ombygging til {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Loss av og vent på første fulle last med automatisk ombygging til {STRING}) STR_ORDER_TRANSFER_REFIT :(Overfør og last på varer med automatisk ombygging til {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overfør og vent på full last med automatisk ombygging til {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overfør og vent på første fulle last med automatisk ombygging til {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Ingen lossing og last på varer med automatisk ombygging til {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ingen lossing og vent på full last med automatisk ombygging til {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ingen lossing og vent på første fulle last med automatisk ombygging til {STRING}) STR_ORDER_AUTO_REFIT_ANY :tilgjengelige varetyper STR_ORDER_STOP_LOCATION_NEAR_END :[nær slutten] STR_ORDER_STOP_LOCATION_MIDDLE :[midten] STR_ORDER_STOP_LOCATION_FAR_END :[enden] STR_ORDER_OUT_OF_RANGE :{RED} (Neste destinasjon er utenfor rekkevidde) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Hopp til ordre {COMMA} STR_ORDER_CONDITIONAL_NUM :Hopp til ordre {COMMA} når {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Hopp til ordre {COMMA} når {STRING} {STRING} STR_INVALID_ORDER :{RED} (Ugyldig ordre) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Rutetabell) STR_TIMETABLE_ORDER_VIEW :{BLACK}Ordre STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Skift til ordreoversikt STR_TIMETABLE_TOOLTIP :{BLACK}Rutetabell - klikk på en ordre for å merke den. STR_TIMETABLE_NO_TRAVEL :Ingen reise STR_TIMETABLE_NOT_TIMETABLEABLE :Reis (automatisk; settes på ruteplan med neste manuelle ordre) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reise (uten rutetabell) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis med maks {2:VELOCITY} (uten rutetabell) STR_TIMETABLE_TRAVEL_FOR :Reise i {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis i {STRING} med maks {VELOCITY} STR_TIMETABLE_STAY_FOR :og bli værende i {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og reis i {STRING} STR_TIMETABLE_DAYS :{COMMA} dag{P "" er} STR_TIMETABLE_TICKS :{COMMA} tikk STR_TIMETABLE_TOTAL_TIME :{BLACK}Det vil ta {STRING} å fullføre rutetabellen STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Det vil ta minst {STRING} å fullføre denne rutetabellen (rutetabell ikke fullstendig) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dette kjøretøyet er i rute STR_TIMETABLE_STATUS_LATE :{BLACK}Dette kjøretøyet er {STRING} for sent ute STR_TIMETABLE_STATUS_EARLY :{BLACK}Dette kjøretøyet er {STRING} for tidlig ute STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne rutetabellen har ikke blitt startet enda STR_TIMETABLE_STATUS_START_AT :{BLACK}Denne rutetabellen vil bli startet {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Velg en dato som startpunkt for denne rutetabellen STR_TIMETABLE_CHANGE_TIME :{BLACK}Endre tid STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Endre varigheten for den merkede ordren STR_TIMETABLE_CLEAR_TIME :{BLACK}Nullstill tid STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Fjern varigheten for den merkede ordren STR_TIMETABLE_CHANGE_SPEED :{BLACK}Endre fartsgrense STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Endre maks reisehastighet for den merkede ordren STR_TIMETABLE_CLEAR_SPEED :{BLACK}Fjern fartsgrense STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Fjern maks reisehastighet for den merkede ordren STR_TIMETABLE_RESET_LATENESS :{BLACK}Nullstill senhetsteller STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nullstill senhetstelleren slik at kjøretøyet ankommer i tide STR_TIMETABLE_AUTOFILL :{BLACK}Fyll automatisk STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll ut rutetabellen automatisk med verdiene fra neste tur (Ctrl+klikk for å prøve å beholde ventetider) STR_TIMETABLE_EXPECTED :{BLACK}Ventet STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Veksle mellom forventet og planlagt STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ank: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Avg: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Velg dato STR_DATE_SET_DATE :{BLACK}Velg dato STR_DATE_SET_DATE_TOOLTIP :{BLACK}Bruk den valgte datoen som startpunkt for rutetabellen STR_DATE_DAY_TOOLTIP :{BLACK}Velg dag STR_DATE_MONTH_TOOLTIP :{BLACK}Velg måned STR_DATE_YEAR_TOOLTIP :{BLACK}Velg år # AI debug window STR_AI_DEBUG :{WHITE}AI/Spillskript-feilsøking STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Navnet til AIen STR_AI_DEBUG_SETTINGS :{BLACK}Innstillinger STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Endre skriptinnstillinger STR_AI_DEBUG_RELOAD :{BLACK}Last inn AI på nytt STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Slå av AI, last skript på nytt, og start AI på nytt STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Tillat/nekt bryt når en AI-loggbeskjed tilsvarer brytstrengen STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Bryt på: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Bryt på STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Når en AI-loggbeskjed tilsvarer denne strengen, settes spillet på pause. STR_AI_DEBUG_MATCH_CASE :{BLACK}Skriftformgjenkjennelse STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Veksle mellom skriftformgjenkjennelse ved sammenligning av AI-loggbeskjeder mot bruddstrengen STR_AI_DEBUG_CONTINUE :{BLACK}Fortsett STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Slå av pause og fortsett AIen STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vis feilsøkingsresultater fra denne AIen STR_AI_GAME_SCRIPT :{BLACK}Spillskript STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Sjekk spillskriptloggen STR_ERROR_AI_NO_AI_FOUND :Ingen passende AI ble funnet.{}Denne AIen er en plassholder og vil ikke gjøre noe.{}Du kan laste ned flere AIer fra nettet med spillets nedlastingssystem. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Et skript krasjet. Vennligst rapporter dette til skript-forfatteren med et skjermbilde av AI/Spillskript feilsøkingsvinduet STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Spillskript-feilsøkingsvindu er kun tilgjengelig for tjeneren # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/Spillskript-konfigurasjon STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spillskriptet som vil bli lastet i neste spill STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AIene som vil bli lastet i neste spill STR_AI_CONFIG_HUMAN_PLAYER :Menneskelig spiller STR_AI_CONFIG_RANDOM_AI :Tilfeldig AI STR_AI_CONFIG_NONE :(ingen) STR_AI_CONFIG_MOVE_UP :{BLACK}Flytt opp STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flytt valgte AI oppover i listen STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flytt ned STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flytt valgte AI nedover i listen STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spillskript STR_AI_CONFIG_AI :{SILVER}AIer STR_AI_CONFIG_CHANGE :{BLACK}Velg {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spillskript STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Last enda et skript STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigurer STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigurer skriptparametre # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Tilgjengelige {STRING} STR_AI_LIST_CAPTION_AI :AIer STR_AI_LIST_CAPTION_GAMESCRIPT :Spillskript STR_AI_LIST_TOOLTIP :{BLACK}Klikk for å velge et skript STR_AI_LIST_AUTHOR :{LTBLUE}Forfatter: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versjon: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Godta STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Velg det merkede skript STR_AI_LIST_CANCEL :{BLACK}Avbryt STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ikke endre skriptet # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametre STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spillskript STR_AI_SETTINGS_CLOSE :{BLACK}Lukk STR_AI_SETTINGS_RESET :{BLACK}Tilbakestill STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Antall dager denne AIen skal starte etter den forrige (ca): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} hjelpefil til {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} endringslogg til {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisens til {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Se på hjelpefilen STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Endringslogg STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisens # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}{NBSP}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}{NBSP}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}{NBSP}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}{NBSP}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kostnad: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kostnad: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Inntekt: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Inntekt: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Overføring: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Overføring: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Anslått kostnad: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Anslått inntekt: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Lagring pågår enda,{}vennligst vent til den er klar! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autolagring feilet STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke lese fra disk STR_ERROR_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil STR_ERROR_GAME_LOAD_FAILED :{WHITE}Feil ved lasting av spill{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt lagret spill - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er lagret i en nyere versjon STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Kan ikke lese filen STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Kan ikke skrive til filen STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integritetssjekk av data mislyktes STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spillet ble lagret i en versjon uten støtte for trikk. Alle trikker har blitt fjernet. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kartgenerering avbrutt...{}... ingen passende steder å plassere byer STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... det er ingen by i dette scenarioet STR_ERROR_PNGMAP :{WHITE}Kunne ikke laste landskap fra PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fant ikke filen. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... kunne ikke konvertere bildetypen. 8- eller 24-bits PNG-bilde kreves STR_ERROR_PNGMAP_MISC :{WHITE}... noe gikk akkurat galt (sannsynligvis en ødelagt fil) STR_ERROR_BMPMAP :{WHITE}Kunne ikke laste landskap fra BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... kunne ikke konvertere bildetype. STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... bildet er for stort STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skalaadvarsel STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Å endre kildekartstørrelsen for mye er ikke anbefalt. Fortsette generering? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Kun et reservelydsett ble funnet. Hvis du vil ha lyder, installer et lydsett via spillets nedlastingssystem. # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stort skjermbilde STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skjermbildet kommer til å ha en oppløsning på {COMMA} x {COMMA} pixler. Å ta et skjermbildet kan ta sin tid. Vil du fortsette? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjermbildet ble lagret som '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skjermbilde mislyktes! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Melding STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Melding fra {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Utenfor kartet STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}For nær kanten av kartet STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Du har ikke nok penger - du trenger {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Flatt land er nødvendig STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landet heller i feil retning STR_ERROR_CAN_T_DO_THIS :{WHITE}Kan ikke gjøre dette... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Bygningen må rives først STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikke rydde dette området... STR_ERROR_SITE_UNSUITABLE :{WHITE}...{NBSP}feltet er uegnet STR_ERROR_ALREADY_BUILT :{WHITE}... allerede bygget STR_ERROR_OWNED_BY :{WHITE}...{NBSP}eies av {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... området eies av et annet firma STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... grense for landskapsendring er nådd STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... ruterensingens grense nådd STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... tre planterings grense nådd STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Navn må være unikt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} er i veien STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ikke tillatt mens spillet er på pause # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}s bystyre nekter deg å gjøre dette. STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}s bystyre tillater ikke flere flyplasser i denne byen STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}s bystyre nekter deg byggetillatelse til flyplass her pga. støybekymringer STR_ERROR_BRIBE_FAILED :{WHITE}Bestikkelsen du forsøkte har blitt oppdaget av en regional etterforsker # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Kan ikke heve land her... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Kan ikke senke land her... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Kan ikke jevne ut land her... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Utgraving ville skadet tunnel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... allerede på havnivå STR_ERROR_TOO_HIGH :{WHITE}... for høyt STR_ERROR_ALREADY_LEVELLED :{WHITE}... allerede flatt # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke endre firmaets navn... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan ikke endre sjefens navn... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maks lån er {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikke låne mer penger... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ingen lån å tilbakebetale STR_ERROR_CURRENCY_REQUIRED :{WHITE}... du trenger {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan ikke betale tilbake lån... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan ikke gi bort penger som er lånt fra banken... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan ikke kjøpe firma... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikke bygge firmaets hovedkontor... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan ikke kjøpe 25{NBSP}% av aksjene... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikke selge 25{NBSP}% av aksjene... STR_ERROR_PROTECTED :{WHITE}Dette firmaet selger ikke aksjer enda... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kan ikke grunnlegge noen byer STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kan ikke endre navn på byen... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kan ikke grunnlegge by her... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kan ikke utvide byen... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}...{NBSP}for nær kanten av kartet STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...{NBSP}for nær en annen by STR_ERROR_TOO_MANY_TOWNS :{WHITE}...{NBSP}for mange byer STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... det er ikke mer plass på kartet STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Byen kommer ikke til å bygge veier. Du kan aktivere bygging av veier via Avanserte innstillinger->Økonomi->Byer. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veiarbeid i gang STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kan ikke fjerne denne byen...{}En stasjon eller garasje/stall/hangar/dokk henviser til byen eller en by-eid rute som ikke kan fjernes STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... det er ingen passende steder for en statue i sentrum av denne byen # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... for mange industrier STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikke generere industrier... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kan ikke bygge {STRING} her... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kan ikke bygge denne typen industri her... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... for nærme en annen industri STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... må grunnlegge en by først STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...{NBSP}kun én tillates per by STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}...{NBSP}kan kun bygges i byer med minst 1{NBSP}200 innbyggere STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...{NBSP}kan kun bygges i regnskogområder STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kan kun bygges i ørkenområder STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...{NBSP}kan kun bygges i byer (erstatter hus) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kan bare bli bygd nær midten av byer STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kan kun bygges i lavtliggende områder STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kan kun plasseres i nærheten av kartkanten STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skog kan bare plantes over snøgrensen STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kan kun bygges over snøgrensen STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kan kun bygges under snøgrensen # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikke bygge jernbanestasjon her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge busstasjon... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikke bygge lasteterminal... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan ikke bygge trikkestasjon for passasjerer... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan ikke bygge trikkestasjon for varer... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Kan ikke bygge havn her... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan ikke bygge lufthavn her... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til mer enn én eksisterende stasjon/lasteterminal STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}...{NBSP}stasjonen er spredd for mye STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}For mange stasjoner/lasteterminaler STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}For mange enkeltdeler på jernbanestasjonen STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}For mange bussholdeplasser STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}For mange lasteterminaler STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}For nærme en annen stasjon/lasteterminal STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}For nærme enn annen havn STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}For nærme en annen flyplass STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kan ikke endre stasjonens navn... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... denne veien er eid av en by STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... veien vender i feil retning STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gjennomkjøringsstopper kan ikke ha hjørner STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjennomkjøringsstopper kan ikke ha kryss # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne del av stasjonen... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Må fjerne jernbanestasjon først STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan ikke fjerne busstasjonen... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan ikke fjerne lasteterminalen... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestasjon for passasjerer... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestasjon for varer... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Må fjerne stoppested først STR_ERROR_THERE_IS_NO_STATION :{WHITE}... det finnes ingen stasjon her STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Må rive jernbanestasjon først STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Må rive bussterminal først STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Må rive lasteterminal først STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Må rive trikkestasjon for passasjerer først STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Må rive trikkestasjon for varer først STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Må rive havn først STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Må rive flyplass først # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til flere enn ett eksisterende kontrollpunkt STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}For nærme et annet kontrollpunkt STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan ikke bygge kontrollpunkt for tog her... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan ikke plassere bøye her... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan ikke endre navn på kontrollpunkt... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikke fjerne kontrollpunkt for tog her... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Må fjerne kontrollpunkt for tog først STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bøyen er i veien STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bøyen er i bruk av et annet firma! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikke bygge togstall her... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan ikke bygge garasje her... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kan ikke bygge trikkestall her... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kan ikke bygge skipsdokk her... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Kan ikke endre navn på garasje/stall/hangar/dokk... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... må være stoppet i en togstall STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... må være stoppet i en garasje STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... må være stoppet i en skipsdokk STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... må være stoppet i en hangar STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Tog kan kun endres når det har stoppet i togstallen STR_ERROR_TRAIN_TOO_LONG :{WHITE}Toget er for langt STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kan ikke snu om kjøreretningen til kjøretøy... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... består av flere deler STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Inkompatible jernbanetyper STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte kjøretøy... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Bakre maskin vil alltid følge det fremste motstykket STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Finner ingen rute til nærmeste garasje/stall/hangar/dokk STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan ikke finne en garasje/stall/hangar/dokk i nærheten STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Feil type garasje/stall/hangar/dokk # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er for langt etter utskiftning STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ingen autoerstatt/fornyelseregler satt. STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(pengegrense) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Umulig sporkombinasjon STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Må fjerne signaler først STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ingen passende jernbanespor STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Må fjerne jernbanespor først STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Veien er enveiskjørt eller blokkert STR_ERROR_CROSSING_DISALLOWED :{WHITE}Denne jernbanetypen tillater ikke overganger STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan ikke bygge signaler her... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan ikke bygge jernbanespor her... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan ikke fjerne jernbanespor herfra... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan ikke fjerne signaler herfra... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kan ikke konvertere signaler her... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... det finnes ingen jernbanespor STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... det finnes ingen signaler STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kan ikke konvertere jernbanetype her... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Må fjerne vei først STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... enveiskjørte veier kan ikke ha kryss STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vei her... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan ikke bygge trikkespor her... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikke fjerne vei herfra... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan ikke fjerne trikkespor herfra... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... det finnes ingen vei STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... det finnes ingen trikkespor # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kan ikke bygge kanaler her... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kan ikke bygge sluser her... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kan ikke plassere elver her... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... må bygges i sjøen STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... kan ikke bygge i sjøen STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kan ikke bygge på åpent hav STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kan ikke bygge på en kanal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kan ikke bygge på en elv STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Må fjerne kanal først STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kan ikke bygge akvedukt her... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... det er allerede et tre her STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... feil terreng for treslag STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Kan ikke plante trær her... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kan ikke bygge bro her... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Må rive bro først STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kan ikke starte og slutte på samme felt STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Broender er ikke på samme nivå STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Broen er for lav for terrenget STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må være på linje STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}...{NBSP}broens ender må være på land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... broen er for lang STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Bro vil ende utenfor kartet # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan ikke bygge tunnel her... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Feltet er upassende for tunnelinngang STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Må rive tunnel først STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}En annen tunnel er i veien STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunnelen ville munne ut utenfor kartkanten STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kan ikke grave ut land til den andre tunnelinngangen STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunnel er for lang # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... for mange objekter STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kan ikke bygge objekt... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objekt er i veien STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... firmaets hovedkontor er i veien STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan ikke kjøpe dette landområdet... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... du eier det allerede! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kan ikke opprette gruppe... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kan ikke slette denne gruppen... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kan ikke gi nytt navn på denne gruppen... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikke fjerne alle kjøretøy fra denne gruppen... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikke legge til kjøretøyet i denne gruppen... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikke legge til delte kjøretøyer i gruppen... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tog i veien STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Kjøretøy i veien STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip i veien STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Luftfartøy i veien STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kan ikke bygge om tog... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kan ikke bygge om kjøretøy... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kan ikke bygge om skip... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kan ikke bygge om luftfartøy... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kan ikke navngi tog... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kan ikke navngi kjøretøy... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Kan ikke navngi skip... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kan ikke navngi luftfartøy... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kan ikke stoppe/starte tog... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kan ikke stoppe/starte kjøretøy... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kan ikke stoppe/starte skip... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kan ikke stoppe/starte luftfartøy... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende tog til togstall... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kan ikke sende kjøretøy til garasjen... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kan ikke sende skip til skipsdokken... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kan ikke sende luftfartøy til hangar... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kan ikke kjøpe jernbanekjøretøy... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kan ikke kjøpe kjøretøy... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kan ikke kjøpe skip... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kan ikke kjøpe luftfartøy... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kan ikke gi lokomotiv-/vogntypen nytt navn... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kan ikke gi kjøretøytypen nytt navn... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kan ikke gi skipstypen nytt navn... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kan ikke gi luftfartøytypen nytt navn... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kan ikke selge jernbanekjøretøy... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kan ikke selge kjøretøy... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kan ikke selge skip... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kan ikke selge luftfartøy... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Jernbanekjøretøyet er ikke tilgjengelig STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Kjøretøyet er ikke tilgjengelig STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skipet er ikke tilgjengelig STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Luftfartøyet er ikke tilgjengelig STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}For mange kjøretøy i spillet STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke endre vedlikeholdsintervall... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}...{NBSP}kjøretøy er ødelagt STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen kjøretøyer vil være tilgjengelig i det hele tatt STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Endre din NewGRF konfigurasjon STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ingen kjøretøyer er tilgjengelig enda STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Starte et nytt spill etter {DATE_SHORT}, eller bruke en NewGRF som inneholder tidlige kjøretøy # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke tvinge tog til å passere signal ved fare... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke snu om toget... STR_ERROR_TRAIN_START_NO_POWER :Tog mangler kraft STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kan ikke snu om kjøretøy... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Luftfartøyet er i luften # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ikke plass til flere ordre STR_ERROR_TOO_MANY_ORDERS :{WHITE}For mange ordre STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikke sette inn ny ordre... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikke slette denne ordren... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikke endre denne ordren... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kan ikke flytte denne ordren... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kan ikke hoppe over nåværende ordre... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan ikke hoppe til den valgte ordren... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... kjøretøyet kan ikke nå alle stasjoner STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... kjøretøyet kan ikke gå til den stasjonen STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... et kjøretøy som deler denne ordren kan ikke gå til den stasjonen STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kan ikke dele ordreliste... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kan ikke stoppe deling av ordreliste... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kan ikke kopiere ordreliste... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}...{NBSP}for langt i fra forrige destinasjon STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... luftfartøy har ikke stor nok rekkevidde # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan ikke gi kjøretøyet rutetabell... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Kjøretøy kan bare vente på stasjoner STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dette kjøretøyet stopper ikke på denne stasjonen. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... for mange skilt STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Kan ikke plassere skilt her... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Kan ikke endre teksten på skiltet... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kan ikke slette skilt... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Et simuleringsspill basert på Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Original grafikk fra Transport Tycoon Deluxe for DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original grafikk fra Transport Tycoon Deluxe for DOS (tysk). STR_BASEGRAPHICS_WIN_DESCRIPTION :Original grafikk fra Transport Tycoon Deluxe for Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Originale lyder fra Transport Tycoon Deluxe for DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Originale lyder fra Transport Tycoon Deluxe for Windows. STR_BASESOUNDS_NONE_DESCRIPTION :En lydpakke uten noen lyder. STR_BASEMUSIC_WIN_DESCRIPTION :Original musikk fra Transport Tycoon Deluxe for Windows. STR_BASEMUSIC_NONE_DESCRIPTION :En musikkpakke uten noe musikk. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høyhus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Kontorblokk STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Leilighetsblokk STR_TOWN_BUILDING_NAME_CHURCH_1 :Kirke STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Stor kontorblokk STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Byhus STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotell STR_TOWN_BUILDING_NAME_STATUE_1 :Statue STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontene STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Kontorblokk STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Butikker og kontorer STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderne kontorblokk STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Varehus STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kontorblokk STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Gamle hus STR_TOWN_BUILDING_NAME_COTTAGES_1 :Hytter STR_TOWN_BUILDING_NAME_HOUSES_1 :Hus STR_TOWN_BUILDING_NAME_FLATS_1 :Leiligheter STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Høy kontorblokk STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Butikker og kontorer STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Butikker og kontorer STR_TOWN_BUILDING_NAME_THEATER_1 :Teater STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Kontorer STR_TOWN_BUILDING_NAME_HOUSES_2 :Hus STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Kjøpesenter STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglo STR_TOWN_BUILDING_NAME_TEPEES_1 :Indianertelt STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Tekjelehus STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Sparebøsse ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=feminine}Kullgruve STR_INDUSTRY_NAME_POWER_STATION :{G=masculine}Kraftstasjon STR_INDUSTRY_NAME_SAWMILL :{G=neuter}Sagbruk STR_INDUSTRY_NAME_FOREST :{G=masculine}Skog STR_INDUSTRY_NAME_OIL_REFINERY :{G=neuter}Oljeraffineri STR_INDUSTRY_NAME_OIL_RIG :{G=masculine}Oljeplattform STR_INDUSTRY_NAME_FACTORY :{G=masculine}Fabrikk STR_INDUSTRY_NAME_PRINTING_WORKS :{G=masculine}Trykkeri STR_INDUSTRY_NAME_STEEL_MILL :{G=neuter}Smelteverk STR_INDUSTRY_NAME_FARM :{G=masculine}Gård STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=feminine}Kobbergruve STR_INDUSTRY_NAME_OIL_WELLS :{G=masculine}Oljebrønn STR_INDUSTRY_NAME_BANK :{G=masculine}Bank STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=masculine}Matforedlingsfabrikk STR_INDUSTRY_NAME_PAPER_MILL :{G=masculine}Papirfabrikk STR_INDUSTRY_NAME_GOLD_MINE :{G=feminine}Gullgruve STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=masculine}Bank STR_INDUSTRY_NAME_DIAMOND_MINE :{G=feminine}Diamantgruve STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=feminine}Jerngruve STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=masculine}Fruktplantasje STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=masculine}Gummiplantasje STR_INDUSTRY_NAME_WATER_SUPPLY :{G=neuter}Vannreservoar STR_INDUSTRY_NAME_WATER_TOWER :{G=neuter}Vanntårn STR_INDUSTRY_NAME_FACTORY_2 :{G=masculine}Fabrikk STR_INDUSTRY_NAME_FARM_2 :{G=masculine}Gård STR_INDUSTRY_NAME_LUMBER_MILL :{G=neuter}Sagbruk STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=masculine}Sukkerspinnskog STR_INDUSTRY_NAME_CANDY_FACTORY :{G=masculine}Godterifabrikk STR_INDUSTRY_NAME_BATTERY_FARM :{G=masculine}Batterigård STR_INDUSTRY_NAME_COLA_WELLS :{G=masculine}Colabrønn STR_INDUSTRY_NAME_TOY_SHOP :{G=masculine}Leketøysbutikk STR_INDUSTRY_NAME_TOY_FACTORY :Leketøysfabrikk STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=feminine}Plastfontene STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=masculine}Mineralvannfabrikk STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=masculine}Boblegenerator STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=neuter}Karamellbrudd STR_INDUSTRY_NAME_SUGAR_MINE :{G=feminine}Sukkergruve ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Uten navn STR_SV_TRAIN_NAME :Tog {COMMA} STR_SV_ROAD_VEHICLE_NAME :Kjøretøy {COMMA} STR_SV_SHIP_NAME :Skip {COMMA} STR_SV_AIRCRAFT_NAME :Luftfartøy {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} nord STR_SV_STNAME_SOUTH :{STRING} sør STR_SV_STNAME_EAST :{STRING} øst STR_SV_STNAME_WEST :{STRING} vest STR_SV_STNAME_CENTRAL :{STRING} sentrum STR_SV_STNAME_TRANSFER :{STRING}ruta STR_SV_STNAME_HALT :{STRING} holdeplass STR_SV_STNAME_VALLEY :{STRING}dalen STR_SV_STNAME_HEIGHTS :{STRING}haugen STR_SV_STNAME_WOODS :{STRING}vollen STR_SV_STNAME_LAKESIDE :{STRING}sjøen STR_SV_STNAME_EXCHANGE :{STRING}moen STR_SV_STNAME_AIRPORT :{STRING} lufthavn STR_SV_STNAME_OILFIELD :{STRING} oljefelt STR_SV_STNAME_MINES :{STRING}gruva STR_SV_STNAME_DOCKS :{STRING} havn STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING}moen STR_SV_STNAME_SIDINGS :{STRING}veien STR_SV_STNAME_BRANCH :{STRING}lia STR_SV_STNAME_UPPER :Øvre {STRING} STR_SV_STNAME_LOWER :Nedre {STRING} STR_SV_STNAME_HELIPORT :{STRING} helikopterplass STR_SV_STNAME_FOREST :{STRING}skogen STR_SV_STNAME_FALLBACK :{STRING} stasjon #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (damp) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (elektrisk) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passasjervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kullvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Buskapsvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Godsvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Jernmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stålvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Pansret vogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Matvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papirvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kobbermalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vannvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruktvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Gummivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Boblevogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Colavogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Leketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterivogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Mineralvannvogn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastvogn STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passasjervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kullvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Buskapsvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Godsvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Jernmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stålvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Pansret vogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Matvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papirvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kobbermalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vannvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruktvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Gummivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Boblevogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Colavogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Leketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Mineralvannvogn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastvogn STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (elektrisk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passasjervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kullvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oljetankvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Buskapsvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Godsvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Kornvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Tømmervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Jernmalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stålvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Pansret vogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Matvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papirvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kobbermalmvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vannvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruktvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Gummivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sukkervogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Sukkerspinnvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karamellvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Boblevogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Colavogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Godterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Leketøyvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batterivogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Mineralvannvogn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikkvogn STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal-buss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard-buss STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster-buss STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Super-buss STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI-buss STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII-buss STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII-buss STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh-kullbil STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl-kullbil STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW-kullbil STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow-postbil STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe-tankbil for olje STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster-tankbil for olje STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry-tankbil for olje STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster-lastebil for buskap STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh-lastebil for gods STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead-lastebil for gods STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss-lastebil for gods STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss-lastebil for korn STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe-tømmerbil STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster-tømmerbil STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland-tømmerbil STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS-lastebil for jernmalm STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl-lastebil for jernmalm STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy-lastebil for jernmalm STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh-lastebil for stål STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl-lastebil for stål STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling-lastebil for stål STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh-panserbil for verditransport STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl-panserbil for verditransport STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster-panserbil for verditransport STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster-lastebil for mat STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry-lastebil for mat STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy-lastebil for mat STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl-lastebil for papir STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh-lastebil for papir STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS-lastebil for papir STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS-lastebil for kobbermalm STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl-lastebil for kobbermalm STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss-lastebil for kobbermalm STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl-tankbil for vann STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh-tankbil for vann STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS-tankbil for vann STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh-lastebil for frukt STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl-lastebil for frukt STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling-lastebil for frukt STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh-lastebil for gummi STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl-lastebil for gummi STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT-lastebil for gummi STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover-lastebil for sukker STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught-lastebil for sukker STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow-lastebil for sukker STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover-lastebil for cola STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught-lastebil for cola STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow-lastebil for cola STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover-lastebil for sukkerspinn STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught-lastebil for sukkerspinn STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow-lastebil for sukkerspinn STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover-lastebil for karamell STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught-lastebil for karamell STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow-lastebil for karamell STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover-lastebil for leketøy STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught-lastebil for leketøy STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow-lastebil for leketøy STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover-lastebil for godteri STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught-lastebil for godteri STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow-lastebil for godteri STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover-lastebil for batteri STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught-lastebil for batteri STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow-lastebil for batteri STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover-tankbil for mineralvann STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught-tankbil for mineralvann STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow-tankbil for mineralvann STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover-lastebil for plast STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught-lastebil for plast STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow-lastebil for plast STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover-lastebil for bobler STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught-lastebil for bobler STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow-lastebil for bobler STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS-oljetanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc.-oljetanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS-passasjerferje STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP-passasjerferje STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300-luftputeskip STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug-passasjerferje STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-passasjerferje STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate kontainerskip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell kontainerskip STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover kontainerskip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut kontainerskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario-helikopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2-helikopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helikopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Bøye STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Bøye #{COMMA} STR_FORMAT_COMPANY_NUM :(Firma {COMMA}) STR_FORMAT_GROUP_NAME :Gruppe {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} Kontrollpunkt STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Kontrollpunkt # {COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Togstall STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Togstall #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Garasje STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Garasje #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Skipsdokk STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Skipsdokk #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :ukjent stasjon STR_DEFAULT_SIGN_NAME :Skilt STR_COMPANY_SOMEONE :noen STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Tilskuer, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/esperanto.txt0000644000000000000000000123034412246102561016150 0ustar rootroot##name Esperanto ##ownname Esperanto ##isocode eo_EO ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0000 ##grflangid 0x05 ##case n # $Id: esperanto.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nedifinita tekstero) STR_JUST_NOTHING :Nenio # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Pasaĝeroj STR_CARGO_PLURAL_COAL :Karbo STR_CARGO_PLURAL_MAIL :Poŝto STR_CARGO_PLURAL_OIL :Oleo STR_CARGO_PLURAL_LIVESTOCK :Brutoj STR_CARGO_PLURAL_GOODS :Varoj STR_CARGO_PLURAL_GRAIN :Greno STR_CARGO_PLURAL_WOOD :Ligno STR_CARGO_PLURAL_IRON_ORE :Fera Erco STR_CARGO_PLURAL_STEEL :Ŝtalo STR_CARGO_PLURAL_VALUABLES :Valoraĵoj STR_CARGO_PLURAL_COPPER_ORE :Kupra Erco STR_CARGO_PLURAL_MAIZE :Maizo STR_CARGO_PLURAL_FRUIT :Fruktoj STR_CARGO_PLURAL_DIAMONDS :Diamantoj STR_CARGO_PLURAL_FOOD :Manĝaĵoj STR_CARGO_PLURAL_PAPER :Papero STR_CARGO_PLURAL_GOLD :Oro STR_CARGO_PLURAL_WATER :Akvo STR_CARGO_PLURAL_WHEAT :Tritiko STR_CARGO_PLURAL_RUBBER :Kaŭĉuko STR_CARGO_PLURAL_SUGAR :Sukero STR_CARGO_PLURAL_TOYS :Ludiloj STR_CARGO_PLURAL_CANDY :Dolĉaĵoj STR_CARGO_PLURAL_COLA :Kolao STR_CARGO_PLURAL_COTTON_CANDY :Sukerŝpinaĵoj STR_CARGO_PLURAL_BUBBLES :Vezikoj STR_CARGO_PLURAL_TOFFEE :Tofeoj STR_CARGO_PLURAL_BATTERIES :Baterioj STR_CARGO_PLURAL_PLASTIC :Plastiko STR_CARGO_PLURAL_FIZZY_DRINKS :Amuzaj Trinkaĵoj # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Pasaĝero STR_CARGO_SINGULAR_COAL :Karbo STR_CARGO_SINGULAR_MAIL :Poŝto STR_CARGO_SINGULAR_OIL :Oleo STR_CARGO_SINGULAR_LIVESTOCK :Bruto STR_CARGO_SINGULAR_GOODS :Varo STR_CARGO_SINGULAR_GRAIN :Greno STR_CARGO_SINGULAR_WOOD :Ligno STR_CARGO_SINGULAR_IRON_ORE :Fera Erco STR_CARGO_SINGULAR_STEEL :Ŝtalo STR_CARGO_SINGULAR_VALUABLES :Valoraĵoj STR_CARGO_SINGULAR_COPPER_ORE :Kupra Erco STR_CARGO_SINGULAR_MAIZE :Maizo STR_CARGO_SINGULAR_FRUIT :Frukto STR_CARGO_SINGULAR_DIAMOND :Diamanto STR_CARGO_SINGULAR_FOOD :Manĝaĵo STR_CARGO_SINGULAR_PAPER :Papero STR_CARGO_SINGULAR_GOLD :Oro STR_CARGO_SINGULAR_WATER :Akvo STR_CARGO_SINGULAR_WHEAT :Tritiko STR_CARGO_SINGULAR_RUBBER :Kaŭĉuko STR_CARGO_SINGULAR_SUGAR :Sukero STR_CARGO_SINGULAR_TOY :Ludilo STR_CARGO_SINGULAR_CANDY :Dolĉaĵo STR_CARGO_SINGULAR_COLA :Kolao STR_CARGO_SINGULAR_COTTON_CANDY :Sukerŝpinaĵo STR_CARGO_SINGULAR_BUBBLE :Veziko STR_CARGO_SINGULAR_TOFFEE :Tofeo STR_CARGO_SINGULAR_BATTERY :Baterio STR_CARGO_SINGULAR_PLASTIC :Plastiko STR_CARGO_SINGULAR_FIZZY_DRINK :Amuza Trinkaĵo # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} pasaĝero{P "" j} STR_QUANTITY_COAL :{WEIGHT_LONG} da karbo STR_QUANTITY_MAIL :{COMMA} sako{P "" j} da poŝto STR_QUANTITY_OIL :{VOLUME_LONG} da oleo STR_QUANTITY_LIVESTOCK :{COMMA} bruto{P "" j} STR_QUANTITY_GOODS :{COMMA} kesto{P "" j} da varoj STR_QUANTITY_GRAIN :{WEIGHT_LONG} da greno STR_QUANTITY_WOOD :{WEIGHT_LONG} da ligno STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} da fera erco STR_QUANTITY_STEEL :{WEIGHT_LONG} da ŝtalo STR_QUANTITY_VALUABLES :{COMMA} sako{P "" j} da valoraĵoj STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} da kupra erco STR_QUANTITY_MAIZE :{WEIGHT_LONG} da maizo STR_QUANTITY_FRUIT :{WEIGHT_LONG} da fruktoj STR_QUANTITY_DIAMONDS :{COMMA} sako{P "" j} da diamantoj STR_QUANTITY_FOOD :{WEIGHT_LONG} da manĝaĵoj STR_QUANTITY_PAPER :{WEIGHT_LONG} da papero STR_QUANTITY_GOLD :{COMMA} sako{P "" j} da oro STR_QUANTITY_WATER :{VOLUME_LONG} da akvo STR_QUANTITY_WHEAT :{WEIGHT_LONG} da tritiko STR_QUANTITY_RUBBER :{VOLUME_LONG} da kaŭĉuko STR_QUANTITY_SUGAR :{WEIGHT_LONG} da sukero STR_QUANTITY_TOYS :{COMMA} ludilo{P "" j} STR_QUANTITY_SWEETS :{COMMA} sako{P "" j} da dolĉaĵoj STR_QUANTITY_COLA :{VOLUME_LONG} da kolao STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} da sukerŝpinaĵo STR_QUANTITY_BUBBLES :{COMMA} veziko{P "" j} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} da tofeo STR_QUANTITY_BATTERIES :{COMMA} baterio{P "" j} STR_QUANTITY_PLASTIC :{VOLUME_LONG} da plastiko STR_QUANTITY_FIZZY_DRINKS :{COMMA} amuza{P "" j} trinkaĵo{P "" j} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}KB STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}BR STR_ABBREV_GOODS :{TINY_FONT}VR STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}LG STR_ABBREV_IRON_ORE :{TINY_FONT}FE STR_ABBREV_STEEL :{TINY_FONT}ŜT STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}KE STR_ABBREV_MAIZE :{TINY_FONT}MZ STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}MN STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}OR STR_ABBREV_WATER :{TINY_FONT}AK STR_ABBREV_WHEAT :{TINY_FONT}TT STR_ABBREV_RUBBER :{TINY_FONT}KA STR_ABBREV_SUGAR :{TINY_FONT}SK STR_ABBREV_TOYS :{TINY_FONT}LD STR_ABBREV_SWEETS :{TINY_FONT}DL STR_ABBREV_COLA :{TINY_FONT}KL STR_ABBREV_CANDYFLOSS :{TINY_FONT}SS STR_ABBREV_BUBBLES :{TINY_FONT}VZ STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}AT STR_ABBREV_NONE :{TINY_FONT}NENIU STR_ABBREV_ALL :{TINY_FONT}ĈIU # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} pasaĝero{P "" j} STR_BAGS :{COMMA} sako{P "" j} STR_TONS :{COMMA} tuno{P "" j} STR_LITERS :{COMMA} litro{P "" j} STR_ITEMS :{COMMA} peco{P "" j} STR_CRATES :{COMMA} kesto{P "" j} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Malhelblua STR_COLOUR_PALE_GREEN :Palverda STR_COLOUR_PINK :Roza STR_COLOUR_YELLOW :Flava STR_COLOUR_RED :Ruĝa STR_COLOUR_LIGHT_BLUE :Helblua STR_COLOUR_GREEN :Verda STR_COLOUR_DARK_GREEN :Malhelverda STR_COLOUR_BLUE :Blua STR_COLOUR_CREAM :Krema STR_COLOUR_MAUVE :Purpurverda STR_COLOUR_PURPLE :Purpura STR_COLOUR_ORANGE :Oranĝa STR_COLOUR_BROWN :Bruna STR_COLOUR_GREY :Griza STR_COLOUR_WHITE :Blanka # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}ĉp STR_UNITS_POWER_METRIC :{COMMA}ĉp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tuno{P "" j} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro{P "" j} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK}Entajpu filtrotekston. STR_LIST_FILTER_TOOLTIP :{BLACK}Enigu ŝlosilvorton laŭ kiu filtri la liston STR_TOOLTIP_SORT_ORDER :{BLACK}Elektu vicordo (deira/alira) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Elektu ordigaj kondiĉoj STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selektu kriteriojn por filtrado STR_BUTTON_SORT_BY :{BLACK}Ordigu laŭ STR_BUTTON_LOCATION :{BLACK}Loko STR_BUTTON_RENAME :{BLACK}Alinomi STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fermu fenestron STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Fenestra titolo - tiru por movi la fenestron STR_TOOLTIP_SHADE :{BLACK}Minimumigi fenestron - montri nur la titolbreton STR_TOOLTIP_STICKY :{BLACK}Marku ke ne fermiĝu la fenestro per la 'ĉiujn fenestrojn fermu'-klavo STR_TOOLTIP_RESIZE :{BLACK}Klaku kaj tiru por reformi la fenestron STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Ŝaltu inter granda kaj malgranda fenestro STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrolbreto - skrolas la liston supren/malsupren STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrolbreto - skrolas la liston dekstren/maldekstren STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Detruu konstruaĵojn ktp. sur landkvadrato. Stir elektas diagonale la areon. Shift aktivas/malaktivas la konstruaĵon/montraĵon estiman koston # Query window STR_BUTTON_DEFAULT :{BLACK}Normo STR_BUTTON_CANCEL :{BLACK}Nuligu STR_BUTTON_OK :{BLACK}Bone # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Longo: {NUM} STR_MEASURE_AREA :{BLACK}Regiono: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longo: {NUM}{}Altecdiferenco: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Regiono: {NUM} x {NUM}{}Altecdiferenco: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Enloĝantaro STR_SORT_BY_CAPTION_NAME :{BLACK}Nomo STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns STR_SORT_BY_NAME :Nomo STR_SORT_BY_PRODUCTION :Produktado STR_SORT_BY_TYPE :Tipo STR_SORT_BY_TRANSPORTED :Transportiĝis STR_SORT_BY_NUMBER :Numero STR_SORT_BY_PROFIT_LAST_YEAR :Gajno lastjara STR_SORT_BY_PROFIT_THIS_YEAR :Gajno ĉi-jara STR_SORT_BY_AGE :Aĝo STR_SORT_BY_RELIABILITY :Fidebleco STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Tuta kapablo por ĉiu ŝarĝtipo STR_SORT_BY_MAX_SPEED :Maksimuma rapido STR_SORT_BY_MODEL :Tipo STR_SORT_BY_VALUE :Valoro STR_SORT_BY_LENGTH :Longo STR_SORT_BY_LIFE_TIME :Resta vivo STR_SORT_BY_TIMETABLE_DELAY :Horara malfruo STR_SORT_BY_FACILITY :Stacidoma tipo STR_SORT_BY_WAITING :Valoro de atendanta ŝarĝo STR_SORT_BY_RATING_MAX :Plejalta ŝarĝotakso STR_SORT_BY_RATING_MIN :Malplejalta ŝarĝotakso STR_SORT_BY_ENGINE_ID :Maŝina ID (klasika ordigo) STR_SORT_BY_COST :Kosto STR_SORT_BY_POWER :Potenco STR_SORT_BY_TRACTIVE_EFFORT :Premega eltiro STR_SORT_BY_INTRO_DATE :Enkonduka dato STR_SORT_BY_RUNNING_COST :Irkosto STR_SORT_BY_POWER_VS_RUNNING_COST :Potenco/Irkosto STR_SORT_BY_CARGO_CAPACITY :Ŝarĝkapablo STR_SORT_BY_RANGE :Atingopovo # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Paŭzigu la ludon STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Rapide pluirigu la ludon STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcioj STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Konservu ludon, foriru ludo, forlasi STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Montru mapon STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Montru urbaron STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Montru subvenciojn STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Montri stacidomoliston de la kompanio. STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Montru kompaniajn financajn informojn STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Montru ĝeneralajn kompaniajn informojn STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Montru grafikojn STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Montru kompanian tabelon STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Pagu konstruadon de nova industrio aŭ listigu ĉiujn industriojn STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Montri trajnliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Montristratveturiloliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Montri ŝipoliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Montri aviadiloliston de la kompanio. Stir+Klak baskulas la grupo/veturilo-liston. STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zomu vidon STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Malzomu vidon STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstrui trakon STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Konstruu stratojn STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Konstruu havenojn STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Konstruu flughavenojn STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Malfermu la landaspektan ilbreton por (mal)altigi landon, planti arbojn ktp. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Montru fenestron de sono/muziko STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Montru lastan mesaĝon/novaĵon, montru mesaĝajn opciojn STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informoj pri regionoj, konzolo, AI-sencimigo, ekranfotoj, OpenTTD. STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Ŝalti ilobretojn # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Konservu scenaron, ŝarĝu scenaron, foriru el la kreilo, fermu STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenarkreilon STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Movu la komencdaton 1 jaron posten STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Movu la komencdaton 1 jaron antaŭen STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klaku por enigi komencjaron STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Montru mapon, urbaron STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landaspekta generado STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Urba generado STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industria generado STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vojkonstruado STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantu arbojn. «Shift» aktivigita konstruado/montrante kosto takso STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Metu signon STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Loku objekton. «Shift» aktivigita konstruado/montrante kosto takso ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Konservu scenaron STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Ŝarĝu scenaron STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Konservu altecmapon STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Ŝarĝu altecmapon STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Forlasi scenaro kreilo STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Forlasi ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Ludaj opcioj STR_SETTINGS_MENU_CONFIG_SETTINGS :Avancitaj agordoj STR_SETTINGS_MENU_NEWGRF_SETTINGS :Agordoj de NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Ebloj por travidebleco STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Urbonomoj montriĝas STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stacionomoj montriĝas STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Montru nomojn de vojpunktoj STR_SETTINGS_MENU_SIGNS_DISPLAYED :Signoj montriĝas STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Konkurantaj signoj kaj nomoj estas montrataj STR_SETTINGS_MENU_FULL_ANIMATION :Plena animado STR_SETTINGS_MENU_FULL_DETAIL :Plenaj detaloj STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Travideblaj konstruaĵoj STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Travideblaj signoj ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Konservu ludon STR_FILE_MENU_LOAD_GAME :Ŝarĝu ludon STR_FILE_MENU_QUIT_GAME :Foriru de la ludo STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Fermu ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Mondomapo STR_MAP_MENU_EXTRA_VIEW_PORT :Plia vidujo STR_MAP_MENU_SIGN_LIST :Afiŝa listo ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Urba katalogo STR_TOWN_MENU_FOUND_TOWN :Urbo troviĝas. ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencioj STR_SUBSIDIES_MENU_GOAL :Aktualaj celoj ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Gajna grafiko STR_GRAPH_MENU_INCOME_GRAPH :Enspeza grafiko STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Liveriteca grafiko STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Rendimenta grafiko STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Kompanivalora grafiko STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Ŝarĝpaga grafiko ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Kompaniara tabelo STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detala rendimento STR_GRAPH_MENU_HIGHSCORE :Altpoentara tabelo ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Industria katalogo STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industriaj ĉenoj STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fondu novan industrion ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Fervoja Konstruado STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrofervoja konstruado STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Unurelfervoja konstruado STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglevfervoja konstruado ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Vojkonstruado STR_ROAD_MENU_TRAM_CONSTRUCTION :Konstruado de tramvojo ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Konstruado de akvovojoj ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Flughavena konstruado ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Landaspektigi STR_LANDSCAPING_MENU_PLANT_TREES :Plantu arbojn STR_LANDSCAPING_MENU_PLACE_SIGN :Metu signon ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Sono/muziko ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Lasta mesaĝo/novaĵo STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Mesaĝa Historio ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Landkvadrataj informoj STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Baskuligi Konzolon STR_ABOUT_MENU_AI_DEBUG :AI/Ludo skripto sencimigo STR_ABOUT_MENU_SCREENSHOT :Ekranfoto STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pligrandiga ekranfoto STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Ekranfoto defaŭlte zoma STR_ABOUT_MENU_GIANT_SCREENSHOT :Tuta karto ekranfoto STR_ABOUT_MENU_ABOUT_OPENTTD :Pri 'OpenTTD' STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Montri/ne montri limigujo ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1a de STR_ORDINAL_NUMBER_2ND :2a de STR_ORDINAL_NUMBER_3RD :3a de STR_ORDINAL_NUMBER_4TH :4a de STR_ORDINAL_NUMBER_5TH :5a de STR_ORDINAL_NUMBER_6TH :6a de STR_ORDINAL_NUMBER_7TH :7a de STR_ORDINAL_NUMBER_8TH :8a de STR_ORDINAL_NUMBER_9TH :9a de STR_ORDINAL_NUMBER_10TH :10a de STR_ORDINAL_NUMBER_11TH :11a de STR_ORDINAL_NUMBER_12TH :12a de STR_ORDINAL_NUMBER_13TH :13a de STR_ORDINAL_NUMBER_14TH :14a de STR_ORDINAL_NUMBER_15TH :15a de STR_ORDINAL_NUMBER_16TH :16a de STR_ORDINAL_NUMBER_17TH :17a de STR_ORDINAL_NUMBER_18TH :18a de STR_ORDINAL_NUMBER_19TH :19a de STR_ORDINAL_NUMBER_20TH :20a de STR_ORDINAL_NUMBER_21ST :21a de STR_ORDINAL_NUMBER_22ND :22a de STR_ORDINAL_NUMBER_23RD :23a de STR_ORDINAL_NUMBER_24TH :24a de STR_ORDINAL_NUMBER_25TH :25a de STR_ORDINAL_NUMBER_26TH :26a de STR_ORDINAL_NUMBER_27TH :27a de STR_ORDINAL_NUMBER_28TH :28a de STR_ORDINAL_NUMBER_29TH :29a de STR_ORDINAL_NUMBER_30TH :30a de STR_ORDINAL_NUMBER_31ST :31a de ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Maj STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dec STR_MONTH_JAN :Januaro STR_MONTH_FEB :Februaro STR_MONTH_MAR :Marto STR_MONTH_APR :Aprilo STR_MONTH_MAY :Majo STR_MONTH_JUN :Junio STR_MONTH_JUL :Julio STR_MONTH_AUG :Aŭgusto STR_MONTH_SEP :Septembro STR_MONTH_OCT :Oktobro STR_MONTH_NOV :Novembro STR_MONTH_DEC :Decembro ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Ŝlosilo STR_GRAPH_KEY_TOOLTIP :{BLACK}Montru ŝlosilon al grafikoj STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gajna Grafiko STR_GRAPH_INCOME_CAPTION :{WHITE}Enspeza Grafiko STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Kiom da ŝarĝo liveriĝis STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Kompania rendimento (maksimumo=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Kompaniaj valoroj STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Ŝarĝpagaj Tarifoj STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Tagoj en transporto STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pago por liveri 10 unuojn (aŭ 10,000 litrojn) da ŝarĝo trans 20 kvadratoj STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Aktivu ĉiujn STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Malaktivu ĉiujn STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Montru ĉiuj ŝarĝojn en la ŝarĝaj pagaj procentoj grafiko STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ne montru ŝarĝojn en la ŝarĝaj pagaj procentoj grafiko STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}(Mal)ŝaltu grafikon por ŝarĝo STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Montri detalaj rendimentpritaksoj # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Ŝlosilo al kompanigrafikoj STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klaku ĉi tie por (mal)ŝalti la kompanian eron de la grafiko # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Kompaniara tabelo STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inĝeniero STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Trafikkontrolisto STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transportmanaĝanto STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Transporta Supervidanto STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktoro STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Ĉefa Plenumanto STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Prezidanto STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Potenculo STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Plejpotenculo # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detala rendimento STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaloj STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vidu detaloj pri ĉi tio kompanio ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Veturiloj: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stacioj: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Malpleja gajno: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Malpleja enspezo: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Pleja enspezo: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Liverite: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Ŝarĝo: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Mono: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Prunto: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Entute: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Nombro da veturiloj, kiuj lastjare profitis. Tio inkluzivas stratveturilojn, trajnojn, ŝipojn kaj aviadilojn. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Nombro da staciopartoj lastatempe servitaj. Ĉiu stacioparto (ekz. stacidomo, bushaltejo, flughaveno) alkalkuliĝas, eĉ se ligite kiel unu stacio. STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}La profito de la malplejenspeza veturilo (nur de veturiloj pli aĝaj ol 2 jaroj). STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Enspezo dum la plej malaltprofita kvarono de la lastaj 12 kvaronoj STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Enspezo dum la plej altprofita kvarono de la lastaj 12 kvaronoj STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Ŝarĝunuoj liveritaj en la lastaj 4 kvaronoj STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Nombro da ŝarĝtipoj liveritaj en la lasta kvarono STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Monkvanto de ĉi tiu kompanio en la banko STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}La monkvanto pruntita de ĉi tiu kompanio STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Entuta poentaro el eblaj poentoj # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Ĵaza Diskogurdo STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Ĉiu STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Malnovstile STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Novstile STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Facila strato STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Propra 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Propra 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Muzika Volumeno STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Efekta Volumeno STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAKS STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Numero STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titolo STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Miksu STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programo STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Saltu al antaŭa numero STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Saltu al posta numero STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Finu muzikludadon STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Komencu muzikludadon STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Tiru la glitilojn por agordi la muzikan kaj sonefektan volumenojn STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Elektu la programon de ĉiuj numeroj STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Elektu la programon de malnovstila muziko STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Elektu la programon de novstila muziko STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Elektu programon de 'Facilvoja muziko' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Elektu la unuan propran programon STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Elektu la duan propran programon STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Miksu/ne miksu STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Montru muziker-elektan fenestron STR_ERROR_NO_SONGS :{WHITE}Senkanta muzikaro estas elektita. Neniu kanto ludos. # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Elekto de Muzikprogramo STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Numera Indekso STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programo - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Viŝu STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Viŝu nunan programon (nur propran) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Alklaku muzikeron por aldoni al la nuna programo (nur propra) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Alklaku muzikeron por viŝi el la nuna programo (nur propra) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Superkompanioj kiuj atingis {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Kompania tabelo en {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Kompaniisto STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entreprenisto STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industriisto STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalisto STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Manaĝisto STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Potenculo STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Plej potenca de la Jarcento STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} atingis staton de '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} de {COMPANY} atingis staton de '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Mapo - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Konturoj STR_SMALLMAP_TYPE_VEHICLES :Veturiloj STR_SMALLMAP_TYPE_INDUSTRIES :Industrioj STR_SMALLMAP_TYPE_ROUTES :Vojiroj STR_SMALLMAP_TYPE_VEGETATION :Verdaĵo STR_SMALLMAP_TYPE_OWNERS :Posedantoj STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Montru landkonturojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Montru veturilojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Montru industriojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Montru transportstratojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Montru verdaĵojn sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Montru landposedantojn sur la mapo STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klaku sur kompanion ŝalti montranta ĝia posedaĵoj. Stir+Klaku malaktivas ĉiujn kompaniojn escepte la elekta. Stir+Klaku sur ĝi aktivi ĉiujn la kompaniojn STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Stratoj STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Fervojoj STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stacidomoj/Flughavenoj/Havenoj STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Konstruaĵoj/Industrioj STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Veturiloj STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trajnoj STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Stratveturiloj STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Ŝipoj STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aviadiloj STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportstratoj STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Arbaro STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Fervoja Stacidomo STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Ŝarĝaŭta Ŝarĝejo STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busstacio STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flughaveno/Helikopterejo STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Haveno STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Hazardlando STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Herba Lando STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Senuza lando STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Kampoj STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Arboj STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Rokoj STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Akvo STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sen posedanto STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Urboj STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrioj STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Dezerto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Neĝo STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vidu aŭ ne vidu urbonomojn sur la mapo STR_SMALLMAP_CENTER :{BLACK}Centrigi la mapeton al la nuna loko STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Malaktivigu ĉiujn STR_SMALLMAP_ENABLE_ALL :{BLACK}Aktivigu ĉiujn STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Montru altecon STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ne montri industriojn sur la mapo. STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Montri ĉiujn industriojn sur la mapo. STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Ŝaltu montro de altecmapo STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Montru ne kompanian posedaĵon en la mapo STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Montru ĉiujn kompanian posedaĵon en la mapo # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Montru lastan mesaĝon aŭ novaĵon STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAŬZO * * STR_STATUSBAR_AUTOSAVE :{RED}AŬTOMATA KONSERVADO STR_STATUSBAR_SAVING_GAME :{RED}* * KONSERVAS LUDON * * # News message history STR_MESSAGE_HISTORY :{WHITE}Mesaĝa historio STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Listo da aktualaj novaĵoj STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Mesaĝo STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua trajno alvenas ĉe {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua buso alvenas en {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua ŝarĝaŭto alvenas en {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua tramo alvenas al {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua vartramo alvenas al {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua ŝipo alvenas en {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Enloĝantoj festas . . .{}Unua aviadilo alvenas en {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Trajna Kraŝo!{}{COMMA} mortis pro fajro post kolizio STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Stratveturila kraŝo!{}Veturanto mortas pro fajro post kolizio kun trajno STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Stratveturila kraŝo!{}{COMMA} mortas pro fajro post kolizio kun trajno STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Aviadilo Kraŝas!{}{COMMA} mortas pro fajro en {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Aviadila Kraŝo!{}Aviadilo ne havis sufiĉan brulaĵon, {COMMA} mortis pro fajro! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zepelina katastrofo en {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Stratveturilo detruiĝis dum 'UFO'-kolizio! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Oleprodukteja eksplodo ĉe {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Farejo detruita en suspektataj cirkonstancooj ĉe {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' landiĝas ĉe {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Karbmineja terŝoviĝo lasas trakon da detruado ĉe {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Fluegoj!{}Almenaŭ {COMMA} mankas kaj verŝajne mortis pro signifoplena fluego! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportkompanio en problemoj! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} forvendiĝos aŭ bankrotiĝos krom se ĝi pli bone faros! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportkompania kuniĝo! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vendiĝis al {STRING} por {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrote! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} estas fermita de kreditantoj kaj ĉiuj partoj vendiĝis! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova transportkompanio lanĉiĝis! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ekkonstruas ĉe {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} estas transprenita de {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manaĝanto) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} financis konstruon de nova urbo {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nova {STRING} konstruiĝas ĉe {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nova {STRING} plantiĝas ĉe {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anoncas tre baldaŭan fermiĝon! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Liverproblemoj devigas al {STRING} anonci tre baldaŭan fermiĝon! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Pro manko da proksimaj arboj {STRING} devas anonci tre baldaŭan fermiĝon! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Eŭropa Mona Unio!{}{}De nun uziĝos la Eŭro kiel monunuo por ĉiutagaj montransskriboj en via lando! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Monda Recesio!{}{}Financaj spertuloj timas ke malpliboniĝas treege! Ekonomio malboniĝadas! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recesio finiĝis!{}{}Komerca pliboniĝos donas konfidon al industrioj! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} pliigas produktadon! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova karbo trovita ĉe {INDUSTRY}!{}Oni atendas produktan duobligon! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nova oleo trovita ĉe {INDUSTRY}!{}Oni atendas produktan duobligon! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Pro pli bona agroteĥniko {INDUSTRY} verŝajne duobligos produktadon! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Produktado de {STRING} ĉe {INDUSTRY} pliiĝas per {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}La produktado de {INDUSTRY} duoniĝas STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektoj kaŭzas plagon ĉe {INDUSTRY}!{}Produktado duoniĝas STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produktado de {STRING} ĉe {INDUSTRY} malpliiĝas per {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} atendas en depoto STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} atendas en depoto STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} atendas en depoto STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} atendas en la hangaro. # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ne havas sufiĉajn ordonojn en la itinero STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} havas malplenan ordonon STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} havas duoblajn ordonojn STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Ordonoj de {VEHICLE} enhavas nevalidan stacion # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} malnoviĝis STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} tre malnoviĝis STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} tro malnoviĝis kaj postulas anstataŭiĝon STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ne povas trovi padon por daŭrigi. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} estas perdita STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} pasintjare gajnis {CURRENCY_LONG} STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} haltis ĉar komanda transformo fiaskis STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Aŭtorenovigo fiaskis ĉe {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nova {STRING} nun haveblas! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nova {STRING} nun haveblas! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ne plu akceptas {STRING.n} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ne plu akceptas {STRING.n} aŭ {STRING.n} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} nun akceptas {STRING.n} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} nun akceptas {STRING.n} kaj {STRING.n} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subvencia oferto ne plu validas:{}{}{STRING} de {STRING} al {STRING} ne estos subvenciata. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvencio retiriĝis:{}{}Servo de {STRING} de {STRING} al {STRING} ne plu estas subvenciata. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subvencia oferto:{}{}Unua servo de {STRING} de {STRING} al {STRING} ricevos subvencion de jaro de la lokaj estroj! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvencio doniĝis al {STRING}!{}{}Servo de {STRING} de {STRING} al {STRING} ricevis pliaĵon de 50% por la sekva jaro! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvencio doniĝis al {STRING}!{}{}Servo de {STRING} de {STRING} al {STRING} ricevis duoblajn pagojn por la sekva jaro! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvencio doniĝis al {STRING}!{}{}Servo de {STRING} de {STRING} al {STRING} ricevis trioblajn pagojn por la sekva jaro! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencio doniĝis al {STRING}!{}{}Servo de {STRING} de {STRING} al {STRING} ricevis kvaroblajn pagojn por la sekva jaro! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Trafika ĥaoso en {TOWN}!{}{}Vojrekonstruada programo komencita de {STRING} alportas 6-monatan mizeron al vojuzantoj! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transporta monopolo! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vidujo {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiu al vidujo STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiu la lokon de la ĉefvido al ĉi tiu vidujo STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Gluu de vidujo STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Gluu la lokon de ĉi tiu vidujo al la ĉefvido # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Ludaj Opcioj STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Monunuoj STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto de monunuoj ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Brita Pundo (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Amerika Dolaro (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Eŭro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Enoj (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Aŭstriaj Ŝilingoj (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgaj Frankoj (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Svisaj Frankoj (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Ĉeĥaj Korunoj (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Germanaj Markoj (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Danaj Kronoj (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Pesetoj (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finnaj Markoj (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Frankoj (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grekaj Draĥmoj (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Hungaraj Forintoj (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandaj Kronoj (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italaj Liroj (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Nederlandaj Guldenoj (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norvegaj Kronoj (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polaj Zlotoj (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumanaj Leŭoj (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rusaj Rubloj (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenaj Tolaroj (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Svedaj Kronoj (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turkaj Liroj (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovakaj Korunoj (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazilaj Realoj (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estona Krono (EEK) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Alia... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mezurunuoj STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Elekto de mezurunuoj ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Angla sistemo STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metra sistemo STR_GAME_OPTIONS_MEASURING_UNITS_SI :Sistemo Internacia ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Stratveturiloj STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Elektu stratflankon kie veturu veturiloj STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Veturu maldekstre STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Veturu dekstre STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Urbonomoj STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Elektu stilon de urbonomoj ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angle (Originale) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :France STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Germane STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Angle (Aldone) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latin-Amerike STR_GAME_OPTIONS_TOWN_NAME_SILLY :Angle (Stulte) STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svede STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Nederlande STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finne STR_GAME_OPTIONS_TOWN_NAME_POLISH :Pole STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovake STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norvege STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hungare STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Aŭstrie STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumane STR_GAME_OPTIONS_TOWN_NAME_CZECH :Ĉeĥe STR_GAME_OPTIONS_TOWN_NAME_SWISS :Svise STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dane STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turke STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Itale STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalune ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Aŭtomata konservado STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Elektu intervalon inter aŭtomataj konservadoj de la ludo STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Malaktiva STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Je ĉiu monato STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Je ĉiuj 3 monatoj STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Je ĉiuj 6 monatoj STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Je ĉiuj 12 monatoj STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingvo STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Elektu uzotan interfacan lingvon STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Plena ekrano STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Ŝaltu ĉi tiun kvadrateton por plenekrane ludi OpenTTD STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekrana montrogrando STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Elektu uzotan ekranan montrograndon STR_GAME_OPTIONS_RESOLUTION_OTHER :alia STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekranfota formato STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Elektu uzotan ekranfotan formaton STR_GAME_OPTIONS_BASE_GRF :{BLACK}Baza grafikaro STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzendan bazgrafikaron STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} mankanta{P "" j}/koruptita{P "" j} dosiero{P "" j} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Aldonaj informoj pri la baza grafikaro STR_GAME_OPTIONS_BASE_SFX :{BLACK}Baza sonaro STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Elektu la uzendan sonaron STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aldonaj informoj pri la baza sonaro STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Baza muzikaro. STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Elekti baza muzikaron por uzi. STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} difektita{P "" j} dosiero{P "" j} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Pluaj informoj pri la baza muzikaro. STR_ERROR_FULLSCREEN_FAILED :{WHITE}Plenekrana moduso fiaskis # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Alia monunuo STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Interŝanĝa valoro: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_SEPARATOR :{LTBLUE}Dividilo: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Difini apartigilon por via valuto STR_CURRENCY_PREFIX :{LTBLUE}Prefikso: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ekekti simbolon de via valuto STR_CURRENCY_SUFFIX :{LTBLUE}Sufikso: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Difini sufiksĉenon por via valuto STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Ŝanĝi al Eŭroj: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Ŝanĝi al Eŭroj: {ORANGE}neniam STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Difini la jaron por ŝanĝi al Eŭro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Ŝanĝi al Eŭro pli frue STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Ŝanĝi al Eŭro pli malfrue STR_CURRENCY_PREVIEW :{LTBLUE}Antaŭvido: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 pundo (£) en via valuto STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Ŝanĝi parametron por alia monunuo STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimumo da konkurantoj: {ORANGE}{COMMA} STR_NONE :Neniom STR_FUNDING_ONLY :Funduso sola STR_MINIMAL :Malgrandeto STR_NUM_VERY_LOW :Tre Malalte STR_NUM_LOW :Malalte STR_NUM_NORMAL :Normale STR_NUM_HIGH :Alte STR_NUM_CUSTOM :Ŝanĝitaj STR_NUM_CUSTOM_NUMBER :Alia ({NUM}) STR_VARIETY_NONE :Neniu STR_VARIETY_VERY_LOW :Tre Malalta STR_VARIETY_LOW :Malalta STR_VARIETY_MEDIUM :Meza STR_VARIETY_HIGH :Alta STR_VARIETY_VERY_HIGH :Tre Alta STR_AI_SPEED_VERY_SLOW :Tre Malrapide STR_AI_SPEED_SLOW :Malrapide STR_AI_SPEED_MEDIUM :Meze STR_AI_SPEED_FAST :Rapide STR_AI_SPEED_VERY_FAST :Tre Rapide STR_SEA_LEVEL_VERY_LOW :Tre Malalte STR_SEA_LEVEL_LOW :Malalte STR_SEA_LEVEL_MEDIUM :Meze STR_SEA_LEVEL_HIGH :Alte STR_SEA_LEVEL_CUSTOM :Alia STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Alia ({NUM}%) STR_RIVERS_NONE :Neniu STR_RIVERS_FEW :Malgrande STR_RIVERS_MODERATE :Mezgrande STR_RIVERS_LOT :Multaj STR_DISASTER_NONE :Neniu STR_DISASTER_REDUCED :Malpli STR_DISASTER_NORMAL :Normale STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Tre Ebene STR_TERRAIN_TYPE_FLAT :Ebene STR_TERRAIN_TYPE_HILLY :Montete STR_TERRAIN_TYPE_MOUNTAINOUS :Monte STR_CITY_APPROVAL_PERMISSIVE :Permeseme STR_CITY_APPROVAL_TOLERANT :Tolerante STR_CITY_APPROVAL_HOSTILE :Gastige STR_WARNING_NO_SUITABLE_AI :{WHITE}Neniu taŭga AI estas disponebla...{}Kelkaj AI-oj estas elŝuteblaj per la sistemo 'Enreta Enhavo'. # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avancitaj agordoj STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Etendu ĉio STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(neniu ekspliko disponeble) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Defaŭlta valoro: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipo de agordo: {ORANGE}{STRING} STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Montru: STR_CONFIG_SETTING_RESTRICT_BASIC :Bazniveloj agordoj STR_CONFIG_SETTING_RESTRICT_ADVANCED :Altnivelaj agordoj STR_CONFIG_SETTING_RESTRICT_ALL :Altnivelaj agordoj / ĉiu agordoj STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :agordoj kiuj malsimilas al la originala STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Agordoj kiu malsimilas al via novajuldaj agordoj STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Ĉiuj agordoj STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ludo agordojn (stokite en savoj, nur tuŝas novajn ludojn) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ludo agordojn (stokite en savo; tuŝas nur kuranta ludo) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Kompanio agordojn (stokite en savoj, nur tuŝas novajn ludojn) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Kompanio agordojn (stokita en savu; tuŝas nur kuranta kompanio) STR_CONFIG_SETTING_OFF :Malaktiva STR_CONFIG_SETTING_ON :Aktiva STR_CONFIG_SETTING_DISABLED :Malaktiva STR_CONFIG_SETTING_COMPANIES_OFF :Ne STR_CONFIG_SETTING_COMPANIES_OWN :Propra kompanio STR_CONFIG_SETTING_COMPANIES_ALL :Ĉiuj kompanioj STR_CONFIG_SETTING_NONE :Neniu STR_CONFIG_SETTING_ORIGINAL :Originale STR_CONFIG_SETTING_REALISTIC :Reala STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Maldekstre STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centre STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dekstre STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimuma komenca prunto: {STRING} STR_CONFIG_SETTING_INTEREST_RATE :Rentumtarifoj: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS :Irkostoj: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Konstrurapido: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Veturilpaneoj: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Ŝanĝu kio oni pagas por subvenciataj rilatoj STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Kostoj de konstruado: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Ŝanĝu nivelon de konstruaj kaj aĉetaj kostoj STR_CONFIG_SETTING_RECESSIONS :Recesioj: {STRING} STR_CONFIG_SETTING_DISASTERS :Katastrofoj: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES :Permesu konstrui sur kliniĝoj kaj bordoj: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :Permesu terecigon sub konstruaĵoj, trakoj, ktp. (aŭtodeklivo): {STRING} STR_CONFIG_SETTING_CATCHMENT :Permesu pli realgrandaj kaptoregionoj: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Permesu forigon de pli da urbaj stratoj, pontoj ktp: {STRING} STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} kvadrato{P 0 "" j} STR_CONFIG_SETTING_SMOKE_AMOUNT :Kvanto da lokomotivo fumo/fajreroj: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modelo de trajnakcelado: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelo de stratveturilakcelado: {STRING} STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :Vagonaroj kaj ŝipoj ne ort-turniĝu: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permesu ligi staciojn ne rekte najbarajn: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :Uzu plibonigitan ŝarĝalgoritmon: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :Laŭgrade ŝarĝu veturilojn: {STRING} STR_CONFIG_SETTING_INFLATION :Inflacio: {STRING} STR_CONFIG_SETTING_SELECTGOODS :Nur liveru ŝarĝon al stacio se estas peto: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Permana ĉefa industri-konstrumaniero: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :neniu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kiel aliaj industrioj STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :esploradon STR_CONFIG_SETTING_MULTIPINDTOWN :Permesu pliajn similajn industriojn en la sama urbo: {STRING} STR_CONFIG_SETTING_SIGNALSIDE :Montru signaloj: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Maldekstre STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Dekstre STR_CONFIG_SETTING_SHOWFINANCES :Montru financan fenestron fine de la jaro: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novaj ordonoj estas 'sen-halte' per defaŭlto: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :Novaj trajnordonoj ĉesas defaŭlte ĉe la {STRING} of the platform STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :proksima fino STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :meza STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :fora fino STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Stratveturila vicigo (kun kvantum-efektoj): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Ŝovu fenestron se la muso estas ĉe la rando: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Malaktiva STR_CONFIG_SETTING_BRIBE :Permesu subaĉeti la lokajn estrojn: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permesu aĉeti ekskluzivajn transportrajtojn: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permesi fondusante lokan stratan rekonstruo: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permesu sendi monon al aliaj kompanioj: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :Pezpliigo pro ŝarĝo por imiti pezajn trajnojn: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Nombro da aviadilokraŝoj: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :neniu STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :reduktita STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permesu trairajn bushaltejojn sur urboposedataj stratoj: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permesu trairajn strathaltejojn sur stratoj posedataj de konkurantoj: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :Permesu konstrui staciojn apude: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :Ebligu multoblajn NewGRF-motorarojn: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ne eblas ŝanĝi ĉi tiujn agordon dum veturiloj ĉeestas STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flughavenoj neniam antikviĝas: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avertu se veturilo estas perdita: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :Revui veturilajn ordonojn: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :ne STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :jes, escepte de haltigitaj veturiloj STR_CONFIG_SETTING_ORDER_REVIEW_ON :de ĉiuj veturiloj STR_CONFIG_SETTING_WARN_INCOME_LESS :Avertu se gajno de veturilo negativas: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veturiloj neniam eluziĝas: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Aŭtomate anstataŭu veturilon se malnoviĝas: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimuma mono por anstataŭado: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :Montru enloĝantaron en urbnomindikilo: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerilo: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originale STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Neĝregiona alto: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Nereguleco de tereno (nur por TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Tre Regule STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Regule STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Neregule STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Malregule STR_CONFIG_SETTING_TREE_PLACER :Arbometa algoritmo: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Neniu STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originale STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Plibonigita STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Altecmapa turniĝo: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Maldekstrume STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dekstrume STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Kiom alta fariĝos scenara mapo: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Ebligu terecigon de la kaheloj ĉe la eĝoj de la mapo: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Unu ay pli da xeloj en norda parto ne malplenas STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Almenaŭ unu kahelo ĉe unu de la eĝoj ne estas akvo STR_CONFIG_SETTING_SERVICEATHELIPAD :Aŭtomate prizorgu helikopterojn sur helikopterejoj: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ligu landaspektan breton al konstruadaj bretoj: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verda STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Malhele verda STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Viola STR_CONFIG_SETTING_REVERSE_SCROLLING :Inversigu skroldirekton: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glata rulumado de vidujo: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Montru mezuran konsilbalonon ĉe uzo de konstruiloj: {STRING} STR_CONFIG_SETTING_LIVERIES :Montru kompaniajn liverojn: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :Neniu STR_CONFIG_SETTING_LIVERIES_OWN :Propra kompanio STR_CONFIG_SETTING_LIVERIES_ALL :Ĉiuj kompanioj STR_CONFIG_SETTING_PREFER_TEAMCHAT :Preferu teambabiladon per : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funkcio de skrol-rado: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zomi mapon STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skroli mapon STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Malaktiva STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mapskrolrada rapido: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION :Enekrana klavaro: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Malaktiva STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Duobla klako STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Unuobla klako (kiam enfokusigita) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Unuobla klako (tuj) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Imitado de dekstra klako: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komando+Klako STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klako STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ne STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Maldekstr-klak-rulumado: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Uzu la {STRING} datformon por nomoj de konservludoj. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longa (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :mallonga (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Norma paletro supozi por NewGRFs ne specifanta paletron: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Aŭtomate paŭzu startante novan ludon: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Permesu dum paŭza: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :neniu agoj STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :ĉiuj ne-konstruado agoj STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :ĉiuj sed pejzaĝo ŝanĝanta agoj STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :ĉiuj agoj STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uzu la avancitan veturilaron: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :Uzu ŝarg-indikilojn: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Montru horaron laŭ tikoj anstataŭ laŭ tagoj: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Montru alvenojn kaj forirojn sur horaroj: {STRING} STR_CONFIG_SETTING_QUICKGOTO :Rapidkreo de veturilordonoj: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Defaŭlta reltipo (post novludo/ŝargludo): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Unue havebla STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Laste havebla STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Pli uzata STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Montru rezervitajn trakojn: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Lasu aktivaj la konstruilojn post uzado: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupigu elspezojn en kompania financfenestro: {STRING} STR_CONFIG_SETTING_SOUND_NEWS :Ĵurnalo: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR :Fine de la jaro: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :Konstruado: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofoj/akcidentoj: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Ludu sonefektoj de akcidentoj kaj katastrofoj STR_CONFIG_SETTING_SOUND_VEHICLE :Veturiloj: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Ludu sonefektoj de veturiloj STR_CONFIG_SETTING_SOUND_AMBIENT :Ĉirkaŭaĵo: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Ludu ĉirkaŭaĵa sonefektoj de pejzaĝo, industrioj kaj urboj STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Malaktivu fondan konstruon kiam decaj veturiloj ne estas disponebla: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Trajna maksimumo por ĉiu ludanto: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Stratveturila maksimumo por ĉiu ludanto: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT :Aviadila maksimumo por ĉiu ludanto: {STRING} STR_CONFIG_SETTING_MAX_SHIPS :Ŝipa maksimumo por ĉiu ludanto: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Malebligu trajnojn por la komputilo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Malebligu stratveturilojn por la komputilo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Malebligu aviadilojn por la komputilo: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Malebligu ŝipojn por la komputilo: {STRING} STR_CONFIG_SETTING_AI_PROFILE :Defaŭlta agorda profilo: {STRING} STR_CONFIG_SETTING_AI_PROFILE_EASY :Facila STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mezfacila STR_CONFIG_SETTING_AI_PROFILE_HARD :Malfacila STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permesu ArtefaritajnIntelektojn en pluropaj ludoj: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :Prizorgintervala procentaĵo: {STRING} STR_CONFIG_SETTING_NOSERVICE :Malŝaltu prizorgadon se rompiĝoj ne okazas: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Aktivigu vagonajn rapideclimojn: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :Malŝaltu elektrajn relojn: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Unua veturilo atingas propran stacion: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Unua veturilo atingas konkurantan stacion: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Akcidentoj / katastrofoj: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Kompaniaj informoj: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Malfermiĝo de industrioj: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Fermiĝo de industrioj: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomiaj ŝanĝoj: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Profuktadŝanĝiĝoj de industrioj servitaj de la kompanio: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Profuktadŝanĝiĝoj de industrioj servitaj de konkuranto(j): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Aliaj industriaj produktadŝanĝiĝoj: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :Konsilo / informoj pri kompania veturilaro: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Novaj veturiloj: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Ŝarĝakceptado ŝanĝiĝas: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencioj: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Ĝeneralaj informoj: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Ne STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resume STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Plene STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Koloraj novaĵoj aperas en: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :Komenca jaro: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Aktivigu glatan ekonomion (pliaj, etaj ŝanĝoj): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :Permesu aĉetadon de dividaĵoj en aliaj kompanioj: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Aŭtomate konstruu semaforojn antaŭ: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ebligu la signal-GUI-on: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Signaltipo defaŭlte konstruenda: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blok-signaloj STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Pad-signaloj STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Unudirektaj pad-signaloj STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Iteraciu tra signaltipoj: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Blok-signaloj sole STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Pad-signaloj sole STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :ĉiom STR_CONFIG_SETTING_TOWN_LAYOUT :Strataranĝo por novaj urboj: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originale STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Pli bonaj vojoj STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :kvadrataro de 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :kvadrataro de 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :hazarda STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permesu ke urboj konstruu stratojn: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Urboj estas permesa konstrui traknivelajn pasejojn: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :Permesu urbe kontrolatan laŭtecon por flughavenoj: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Konstruanta urbojn en ludo: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :malpermesita STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permesate STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permesate, kutimo urbomapo STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :En ludo metanta de arbojn: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :neniu {RED}(rompas ligno muelilo) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :nur en tropika praarbaroj STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Ĉie STR_CONFIG_SETTING_TOOLBAR_POS :Loko de ĉefa ilbreto: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :Loko de kondiĉbaro: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT :Fenestra mollimo (ne-glueca): {STRING} STR_CONFIG_SETTING_TOWN_GROWTH :Urba kreskorapido: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Neniom STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Malrapide STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normale STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rapide STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Tre rapide STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Komenca urbgrandeca multobligo: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Forigu sensensajn straterojn dum stratkonstruado: {STRING} STR_CONFIG_SETTING_GUI :{ORANGE}Interfaco STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruado STR_CONFIG_SETTING_VEHICLES :{ORANGE}Veturiloj STR_CONFIG_SETTING_STATIONS :{ORANGE}Stacioj STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomio STR_CONFIG_SETTING_AI :{ORANGE}Konkurantoj STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Montru opciojn STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interago STR_CONFIG_SETTING_SOUND :{ORANGE}Sonefektoj STR_CONFIG_SETTING_NEWS :{ORANGE}Novaĵo kaj mesaĝoj STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaloj STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kargotraktado STR_CONFIG_SETTING_AI_NPC :{ORANGE}Komputil-ludantoj STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Aŭtorenovigo STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Prizorgado STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Navigado STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trajnoj STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Urboj STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrioj STR_CONFIG_SETTING_PATHFINDER_OPF :Originale STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Rekomendite) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Padtrovilo por trajnoj: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Padtrovilo por stratveturiloj: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Padtrovilo por ŝipoj: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Aŭtomata dorsflankante ĉe signaloj: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Ŝanĝu agord-valoron # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nova Ludo STR_INTRO_LOAD_GAME :{BLACK}Ŝarĝu ludon STR_INTRO_PLAY_SCENARIO :{BLACK}Ludu Scenaron STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Ludu Altecmapon STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenarkreilo STR_INTRO_MULTIPLAYER :{BLACK}Pluraj Ludantoj STR_INTRO_GAME_OPTIONS :{BLACK}Ludaj Opcioj STR_INTRO_HIGHSCORE :{BLACK}Altpoentara tabelo STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avancitaj agordoj STR_INTRO_NEWGRF_SETTINGS :{BLACK}Agordoj de NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Provu Enretan Enhavon STR_INTRO_QUIT :{BLACK}Forlasi STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Starti novan ludon. Stir-Klak por preterpasi mapan agordon. STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Ŝarĝu konservitan ludon STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Startu novan ludon, uzante altecmapon por landaspekto STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Komencu novan ludon per propra scenaro STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Kreu mem ludmondon/scenaron STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Komencu plurludantan ludon STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Elektu 'moderan' landstilon STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Elektu 'sub-arktikan' landstilon STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Elektu 'sub-tropikan' landstilon STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Elektu 'ludlandan' landstilon STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Montru ludajn opciojn STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Montru altpoentara tabelo STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Montru avancitajn agordojn STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Montri NewGRF-agordojn STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Serĉi pri nova kaj ĝisdatigita enhavo por elŝuti STR_INTRO_TOOLTIP_QUIT :{BLACK}Fermu 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Ĉi tiu traduko ne havas {NUM} teksto{P "" j}. Bonvolu helpu fari OpenTTD pli bona per estigi traduktiston. Vidi readme.txt por detaloj. # Quit window STR_QUIT_CAPTION :{WHITE}Forlasi STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Ĉu vi vere volas fermi la ludon kaj reiri al {STRING}? STR_QUIT_YES :{BLACK}Jes STR_QUIT_NO :{BLACK}Ne # Supported OSes STR_OSNAME_WINDOWS :Vindozo STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unikso STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Foriri de la ludo STR_ABANDON_GAME_QUERY :{YELLOW}Ĉu vi certas ke vi volas foriri? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ĉu vi certas ke vi volas forlasi ĉi tiun scenaron? # Cheat window STR_CHEATS :{WHITE}Filudaĵoj STR_CHEATS_TOOLTIP :{BLACK}La kvadratetoj indikas ĉu vi jam uzis la filudaĵon antaŭe. STR_CHEATS_WARNING :{BLACK}Atentu! Vi perfidos viajn kunulajn konkurantojn. Memoru ke io tia rememoriĝos eterne. STR_CHEAT_MONEY :{LTBLUE}Altigu monkvanton per {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludanta kiel kompanio: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magia forigilo (forviŝu industriojn, nemovebla objektoj): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneloj rajtas kruciĝi unu kun la alia: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetoj ne kraŝos (ofte) sur malgrandaj flughavenoj: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Modera landaspekto STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Arktikeca landaspekto STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Tropikeca landaspekto STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Ludolandaspekto STR_CHEAT_CHANGE_DATE :{LTBLUE}Ŝanĝu daton: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ŝanĝu nunan jaron STR_CHEAT_SETUP_PROD :{LTBLUE}Ebligu ŝanĝi produktvalorojn: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nova Kolorskemo STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Montru ĝeneralajn kolorskemojn STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Montru trajnajn kolorskemojn STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Montru stratveturilajn kolorskemojn STR_LIVERY_SHIP_TOOLTIP :{BLACK}Montru ŝipkolorajn skemojn STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Montru aviadilajn kolorskemojn STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elektu la unuan koloron por la elektita skemo STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elektu la duan koloron por la elektita skemo STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elektu la kolorskemon ŝanĝendan, aŭ plurajn per CTRL+click. Alklaku kvadraton por uzi/ne uzi skemon STR_LIVERY_DEFAULT :Normala Koloro STR_LIVERY_STEAM :Vapormaŝino STR_LIVERY_DIESEL :Dizelmaŝino STR_LIVERY_ELECTRIC :Elektromaŝino STR_LIVERY_MONORAIL :Unurelmaŝino STR_LIVERY_MAGLEV :Maglevmaŝino STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Pasaĝera Vagono (Vaporo) STR_LIVERY_PASSENGER_WAGON_DIESEL :Pasaĝera Vagono (Dizelo) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Pasaĝera Vagono (Elektro) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Pasaĝera Vagono (Monorelo) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Pasaĝera Vagono (Maglev) STR_LIVERY_FREIGHT_WAGON :Frajtvagono STR_LIVERY_BUS :Buso STR_LIVERY_TRUCK :Ŝarĝaŭto STR_LIVERY_PASSENGER_SHIP :Pasaĝera Ŝipo STR_LIVERY_FREIGHT_SHIP :Frajtŝipo STR_LIVERY_HELICOPTER :Helikoptero STR_LIVERY_SMALL_PLANE :Malgranda Aviadilo STR_LIVERY_LARGE_PLANE :Granda Aviadilo STR_LIVERY_PASSENGER_TRAM :Pasaĝera Tramo STR_LIVERY_FREIGHT_TRAM :Frajttramo # Face selection window STR_FACE_CAPTION :{WHITE}Elekto de Vizaĝo STR_FACE_CANCEL_TOOLTIP :{BLACK}Nuligu elekton de nova vizaĝo STR_FACE_OK_TOOLTIP :{BLACK}Akceptu elekton de nova vizaĝo STR_FACE_MALE_BUTTON :{BLACK}Vira STR_FACE_MALE_TOOLTIP :{BLACK}Elektu virajn vizaĝojn STR_FACE_FEMALE_BUTTON :{BLACK}Virina STR_FACE_FEMALE_TOOLTIP :{BLACK}Elektu virinajn vizaĝojn STR_FACE_NEW_FACE_BUTTON :{BLACK}Nova Vizaĝo STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Kreu hazardan novan vizaĝon STR_FACE_ADVANCED :{BLACK}Altnivela STR_FACE_ADVANCED_TOOLTIP :{BLACK}Altnivela elekto de vizaĝo. STR_FACE_SIMPLE :{BLACK}Simpla STR_FACE_SIMPLE_TOOLTIP :{BLACK}Simpla elekto de vizaĝo. STR_FACE_LOAD :{BLACK}Ŝargi STR_FACE_LOAD_TOOLTIP :{BLACK}Ŝargi favoratan vizaĝon. STR_FACE_LOAD_DONE :{WHITE}Via favorata vizaĝo estis ŝargita de la agord-dosiero de OpenTTD.. STR_FACE_FACECODE :{BLACK}Ludanta vizaĝnumero STR_FACE_FACECODE_TOOLTIP :{BLACK}Rigardi kaŭ elekti ludantan vizaĝnumeron. STR_FACE_FACECODE_CAPTION :{WHITE}Rigardi kaŭ elekti ludantan vizaĝnumeron. STR_FACE_FACECODE_SET :{WHITE}Nova vizaĝnumera kodo estas konservita. STR_FACE_FACECODE_ERR :{WHITE}Ne povas konservi ludantan vizaĝnumeron - devas esti nombro inter 0 kaj 4,294,967,295! STR_FACE_SAVE :{BLACK}Konservi STR_FACE_SAVE_TOOLTIP :{BLACK}Konservi favoratan vizaĝon STR_FACE_SAVE_DONE :{WHITE}Tiu ĉi vizaĝo estos konservita kiel via favorata en la agord-dosiero de OpenTTD. STR_FACE_EUROPEAN :{BLACK}Europa STR_FACE_SELECT_EUROPEAN :{BLACK}Elekti eŭropajn vizaĝojn STR_FACE_AFRICAN :{BLACK}Afrika STR_FACE_SELECT_AFRICAN :{BLACK}Elekti afrikajn vizaĝojn STR_FACE_YES :Jes STR_FACE_NO :Ne STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Ŝalti lipharojn aŭ orelringon. STR_FACE_HAIR :Hararo: STR_FACE_HAIR_TOOLTIP :{BLACK}Ŝanĝu hararon STR_FACE_EYEBROWS :Brovoj: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Ŝanĝi brovojn. STR_FACE_EYECOLOUR :Okula koloro: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Ŝanĝi okulan koloron STR_FACE_GLASSES :Okulvitroj: STR_FACE_GLASSES_TOOLTIP :{BLACK}Ŝalti okulvitrojn. STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Ŝanĝi okulvitrojn. STR_FACE_NOSE :Nazo: STR_FACE_NOSE_TOOLTIP :{BLACK}Ŝanĝi nazon STR_FACE_LIPS :Lipoj: STR_FACE_MOUSTACHE :Liphararo: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Ŝanĝi lipojn aŭ lipharojn. STR_FACE_CHIN :Mentono: STR_FACE_CHIN_TOOLTIP :{BLACK}Ŝanĝi mentonon. STR_FACE_JACKET :Jako: STR_FACE_JACKET_TOOLTIP :{BLACK}Ŝanĝi jakon. STR_FACE_COLLAR :Kolumo: STR_FACE_COLLAR_TOOLTIP :{BLACK}Ŝanĝi kolumon. STR_FACE_TIE :Kravato: STR_FACE_EARRING :Orelringo: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ŝanĝi kravaton aŭ orelringon. # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Pluraj ludantoj STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Konekto: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Elektu inter interreta kaj lokareta ludo STR_NETWORK_SERVER_LIST_LAN :Loka reto STR_NETWORK_SERVER_LIST_INTERNET :Interreto STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ludantnomo: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Ĉi tio estas la nomo per kiu la aliaj ekkonas vin STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nomo STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nomo de la ludo STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klientoj STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klientoj surrete / maksimume{}Kompanioj surrete / maksimume STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Mapgrandeco STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Mapgrandeco de la ludo{}Klaku por ordigi laŭ areo STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Aktuala dato STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Jaroj STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Nombro de jaroj{}la ludo jam rulas STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Lingvo, servila versio ktp. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Alklaku ludon el la listo por elekti ĝin STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}La servilo kiun vi laste ensalutis: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klaku por selekti la servilon kie vi ludis la lastan fojon STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}LUDINFORMOJ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klientoj: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Lingvo: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Pejzaĝo: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Mapgrandeco: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Versio de servilo: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adreso de servilo: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Komenca dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Nuna dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Protektata per pasvorto! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVILO NE SURRETAS STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVILO PLENAS STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSIOJ NE KONGRUAS STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}MISO PRI NEWGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Aliĝu al la ludo STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Refreŝigu servilon STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Refreŝigu servilajn informojn STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Trovu servilon STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Serĉu reton por servilo STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Aldonu servilon STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Aldonas servilon al la listo kiu ĉiam estos kontrolata pri kurantaj ludoj. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Startu servilon STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Startu propran servilon STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Tajpu vian nomon STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Enigu la adreson de la gastiganto # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Komencu novan ludon por pluraj ludantoj STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Ludnomo: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}La ludnomo estos montrata al aliaj ludantoj en la ludelektejo por plurludantaj ludoj. STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Agordu pasvorton STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protektu vian ludon per pasvorto por ne publike atingebligi ĝin STR_NETWORK_START_SERVER_LAN_INTERNET :Loka reto / Interreto STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Interreto (reklamu) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} kliento{P "" j} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Klienta maksimumo: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Elektu klientan maksimumon. Ne ĉiuj lokoj estas plenigendaj STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} kompanio{P "" j} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Kompania maksimumo: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limu la servilon al certa kvanto da kompanioj STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spektanto{P "" j} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Spektanta maksimumo: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limigu la servilon al certa kvanto da spektantoj STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Parolata lingvo: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aliaj ludantoj scios kiu lingvo paroliĝas en la servilo STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Tajpu nomon por la retludo # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Ajna STR_NETWORK_LANG_ENGLISH :Angla STR_NETWORK_LANG_GERMAN :Germana STR_NETWORK_LANG_FRENCH :Franca STR_NETWORK_LANG_BRAZILIAN :Brazila STR_NETWORK_LANG_BULGARIAN :Bulgara STR_NETWORK_LANG_CHINESE :Ĉina STR_NETWORK_LANG_CZECH :Ĉeĥa STR_NETWORK_LANG_DANISH :Dana STR_NETWORK_LANG_DUTCH :Nederlanda STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finna STR_NETWORK_LANG_HUNGARIAN :Hungara STR_NETWORK_LANG_ICELANDIC :Islanda STR_NETWORK_LANG_ITALIAN :Itala STR_NETWORK_LANG_JAPANESE :Japana STR_NETWORK_LANG_KOREAN :Korea STR_NETWORK_LANG_LITHUANIAN :Litova STR_NETWORK_LANG_NORWEGIAN :Norveĝa STR_NETWORK_LANG_POLISH :Pola STR_NETWORK_LANG_PORTUGUESE :Portugala STR_NETWORK_LANG_ROMANIAN :Romana STR_NETWORK_LANG_RUSSIAN :Rusa STR_NETWORK_LANG_SLOVAK :Slovaka STR_NETWORK_LANG_SLOVENIAN :Slovena STR_NETWORK_LANG_SPANISH :Hispana STR_NETWORK_LANG_SWEDISH :Sveda STR_NETWORK_LANG_TURKISH :Turka STR_NETWORK_LANG_UKRAINIAN :Ukraina STR_NETWORK_LANG_AFRIKAANS :Afrikansa STR_NETWORK_LANG_CROATIAN :Kroata STR_NETWORK_LANG_CATALAN :Kataluna STR_NETWORK_LANG_ESTONIAN :Estona STR_NETWORK_LANG_GALICIAN :Galica STR_NETWORK_LANG_GREEK :Greka STR_NETWORK_LANG_LATVIAN :Latva ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Atendejo por plurludantaj ludoj STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Preparanta por aliĝi: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Listo da kompanioj haveblaj en ĉi tiu ludo. Vi povas aliĝi al unu aŭ komenci novan kompanion se restas loko STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}KOMPANIAJ INFORMOJ STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Kompaninomo: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Inaŭguro: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Kompanivaloro: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Nuna monstato: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Lastjara enspezo: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Rendimento: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Veturiloj: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stacioj: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Ludantoj: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nova kompanio STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Kreu novan kompanion STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Spektu ludon STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Spektu la ludon kiel spektanto STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Aliĝu al kompanio STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Helpu manaĝi ĉi tiun kompanion # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Konektante... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Konektante.. STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Rajtigante.. STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Atendante.. STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Elŝutante mapon.. STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Procesante datenojn.. STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registante.. STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Kaptante ludinformojn.. STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Kaptante kompaniajn informojn.. ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} kliento{P "" j} antaŭ vi STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} ĝis nun elŝutiĝis STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} ĝis nun elŝutiĝis STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Malkonektu STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servilo estas protektata. Enigu pasvorton STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Kompanio estas protektata. Enigu pasvorton # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Klientlisto STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Spekti STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nova kompanio # Network client list STR_NETWORK_CLIENTLIST_KICK :Forbatu STR_NETWORK_CLIENTLIST_BAN :Bari STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donu monon STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parolu al ĉiuj STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parolu al kompanio STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privata mesaĝo STR_NETWORK_SERVER :Servilo STR_NETWORK_CLIENT :Kliento STR_NETWORK_SPECTATORS :Spektantoj STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Tajpu kiom da mono vi volas doni # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne konservu la pasvorton. STR_COMPANY_PASSWORD_OK :{BLACK}Donu la novan pasvorton al la kompanio. STR_COMPANY_PASSWORD_CAPTION :{WHITE}Kompania pasvorto STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Fari defaŭltan kompanipasvorton. STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uzu ĉi tiun kompanipasvorton kiel defaŭlto por novaj kompanioj. # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Anigi STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Anigi kaj ludi kiel ĉi tiu kompanio. STR_COMPANY_VIEW_PASSWORD :{BLACK}Pasvorto STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Pasvorte protektu vian kompanion por eviti ke eksteruloj aliĝu. STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Agordu kompanian pasvorton # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Sendu STR_NETWORK_CHAT_COMPANY_CAPTION :[Teamo] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Private] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Ĉiuj] : STR_NETWORK_CHAT_COMPANY :[Teamo] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Teamo] Al {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Private] Al {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Ĉiuj] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Tajpu tekston por retbabilado # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Ne trovis retstirilojn aŭ kompiliĝis sen ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Ne povis trovi ajnan retludon STR_NETWORK_ERROR_NOCONNECTION :{WHITE}La servilo ne respondis al la peto STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Ne povis konekti pro miso pri NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Retluda sinkronigado fiaskis STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Perdis konekton al retludo STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Ne povis ŝarĝi konservitan ludon STR_NETWORK_ERROR_SERVER_START :{WHITE}Ne povis eki la servilon STR_NETWORK_ERROR_CLIENT_START :{WHITE}Ne povis konekti STR_NETWORK_ERROR_TIMEOUT :{WHITE}Konekto #{NUM} ekstertempiĝis STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Okazis protokoleraro kaj la konekto estis fermita STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}La revidaĵo de la kliento ne kongruas kun la servila revidaĵo STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Malĝusta pasvorto STR_NETWORK_ERROR_SERVER_FULL :{WHITE}La servilo plenas STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Oni forbaris vin de la servilo STR_NETWORK_ERROR_KICKED :{WHITE}Oni forbatis vin el la ludo STR_NETWORK_ERROR_CHEATER :{WHITE}Vi ne rajtas filudi en ĉi tiu servilo STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Vi estis sendanta tro da komandojn al la servilo ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :ĝenerala eraro STR_NETWORK_ERROR_CLIENT_DESYNC :sensinkroneca eraro STR_NETWORK_ERROR_CLIENT_SAVEGAME :ne povis ŝarĝi mapon STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :konekto perdiĝis STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokola eraro STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Miso pri NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ne rajtigite STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ricevis strangan aŭ neatenditan pakaĵon STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :malĝusta revidaĵo STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nomo jam uziĝas STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :malĝusta pasvorto STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :malĝusta kompani-ID en DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :forbatite de servilo STR_NETWORK_ERROR_CLIENT_CHEATER :provis uzi filudaĵon STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servilo plenas STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :estis sendanta tro da komandojn ############ End of leave-in-this-order # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Ludo paŭzas ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Ludo ankoraŭ paŭzas ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Ludo ankoraŭ paŭzas ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Ludo ankoraŭ paŭzas ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Ludo malpaŭzas ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombro da ludantoj STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :kontektante al klientoj STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manlibro ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :forlasanta STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ensalutis la ludon STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} interligis la ludon (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} iĝis ano de kompanio #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} iĝis spektanto STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ekis novan kompanion (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ĉesis la ludon ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ŝanĝis sian nomon al {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} donis al via kompanio {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Vi donis {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}La servilo fermis la seancon STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}La servilo restartiĝas...{}Bonvolu atendi... # Content downloading window STR_CONTENT_TITLE :{WHITE}Enhavo elŝutiĝas STR_CONTENT_TYPE_CAPTION :{BLACK}Tipo STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipo de la enhavo STR_CONTENT_NAME_CAPTION :{BLACK}Nomo STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nomo de la enhavo STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klaku linion por rigardi detalojn{}Klaku markobutonon por elekti elŝuton. STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Elekti ĉiujn STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marki ĉiujn enhavojn elŝutotan STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Elektu ĝisdatigojn. STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Malelekti ĉiujn STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marki ĉiujn enhavojn neelŝutotan STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Serĉo eksteraj retejoj STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK} Serĉu enhavo ne estas disponebla en OpenTTD enhavon servon en retejoj ne asocias al OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Vi forlase OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Etikeda/noma filtro: STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Elŝuti STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Komencu elŝuti la elektitan enhavon. STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Suma elŝuta grando: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}ENHAVINFORMO STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Vi ne elektis ĉi tiun por elŝuti. STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Vi elektis ĉi tiun por elŝuti. STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Vi jam havas tion STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Tiu enhavo estas nekonata kaj ne povas esti elŝutita en OpenTTD. STR_CONTENT_DETAIL_UPDATE :{SILVER}Tiu estas anstataŭo por ekzistanta {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Nomo: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versio: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Priskribo: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Tipo: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Elŝuta grando: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Elektita ĉar: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependaĵoj: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etikedoj: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD estas farita sen subteno de "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... enhavelŝutado neeblas! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Baza grafiko STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI-biblioteko STR_CONTENT_TYPE_SCENARIO :Scenaro STR_CONTENT_TYPE_HEIGHTMAP :Altecmapo STR_CONTENT_TYPE_BASE_SOUNDS :Bazaj sonoj STR_CONTENT_TYPE_BASE_MUSIC :Baza musiko # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Enhavo elŝutiĝas... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Petante dosierojn... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Nuntempe elŝutante {STRING} ({NUM} el {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Elŝuto kompleta STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} el {BYTES} elŝutiĝis ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Ne povis konekti al la enhavservilo... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Elŝuto fiaskis... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... nekonektis STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... dosiero ne skribebla STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Ne povis malkompaktigi la elŝutitan dosieron STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Mankaj grafikoj STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD bezonas grafikojn por funkcii sed neniu estas trovata. Ĉu vi permesas OpenTDD-n al elŝulti kaj instali ĉi tiujn grafikojn? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Jes, elŝuti la grafikojn STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, fermi OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Ebloj por travidebleco STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Baskuligi travideblecon de staciosignoj. Stir+Klak por ŝlosi. STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Baskuligi travideblecon de arboj. Stir+Klak por ŝlosi. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Baskuligi travideblecon de domoj. Stir+Klak por ŝlosi. STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Baskuligi travideblecon de industrioj. Stir+Klak por ŝlosi. STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Baskuligi travideblecon de konstrueblaĵojn kiel stacidomoj, garaĝoj kaj vojpunktoj. Stir+Klak por ŝlosi. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Baskuligi travideblecon de pontoj. Stir+Klak por ŝlosi. STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Baskuligi travideblecon de aĵoj kiel lumturoj kaj antenoj. Stir+Klak por ŝlosi. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Baskuligi travideblecon de katenarion. Stir+Klak por ŝlosi. STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Baskuligi travideblecon de ŝarĝindikiloj. Stir+Klak por ŝlosi. # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Ŝarĝregiona marko STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Malaktiva STR_STATION_BUILD_COVERAGE_ON :{BLACK}Aktiva STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Ne marku ŝarĝregionon de proponata loko STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Marku ŝarĝregionon ĉe proponata loko STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Akceptiĝas: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Provizoj: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Ligi stacion STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Konstrui apartan stacion STR_JOIN_WAYPOINT_CAPTION :{WHITE}Ligi vojpunkton STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Krei apartan vojpunkton # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstruado de Fervojo STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstruado de Elektrofervojo STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Konstruado de Unurela Fervojo STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Konstruado de Magleva Fervojo STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstrui trakon. Ctrl baskuligas konstrui/forviŝi fervojan konstruon. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Konstrui trakon per Aŭtomata Relreĝimo. Stir baskuligas konstrui/forviŝi fervojan konstruon. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Konstrui trajngaraĝon (por konstrui kaj prizorgi trajnojn) STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Ŝanĝi relon al vojpunkto. Stir-butono permesas ligi vojpunktojn. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Konstrui fervojostacion. Premu Stir-butonon por ligi staciojn. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Konstruu signalojn STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Konstruu fervojan ponton STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Konstruu fervojtunelon STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Elekti inter konstruado/forigado de trako, signaliloj, vojpunktoj kaj stacidomoj. Tenu Stir-klavon por forigi relojn de vojpunktoj kaj stacioj. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Transigu reltipon STR_RAIL_NAME_RAILROAD :Fervojo STR_RAIL_NAME_ELRAIL :Elektrofervojo STR_RAIL_NAME_MONORAIL :Unurelo STR_RAIL_NAME_MAGLEV :Maglevo # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Direkto de la trajngaraĝo STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Elekti direkton de la trajngaraĝo # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Vojpunkto STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Elekti tipon de vojpunkto # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Elekto de Stacidomo STR_STATION_BUILD_ORIENTATION :{BLACK}Direkto STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Elektu stacidoman direkton STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Kiom da trakoj STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Elektu nombron da platformoj por stacidomo STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Platforma longo STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Elektu longon de stacidomo STR_STATION_BUILD_DRAG_DROP :{BLACK}Tiru k metu STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Tiru por konstrui stacidomon STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Elekti stacidomklason por montri. STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Elekti stacidomotipon por konstrui. STR_STATION_CLASS_DFLT :Defaŭlta stacio STR_STATION_CLASS_WAYP :Vojpunktoj # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Elekto de Signalo # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Elektu Relan Ponton STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Elektu Vojan Ponton STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Pontelekto - klaku vian preferatan ponton por konstrui ĝin STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Ŝtala pendanta STR_BRIDGE_NAME_GIRDER_STEEL :Ŝtala ebena STR_BRIDGE_NAME_CANTILEVER_STEEL :Ŝtala luksa STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Betona pendanta STR_BRIDGE_NAME_WOODEN :Ligna STR_BRIDGE_NAME_CONCRETE :Betona STR_BRIDGE_NAME_TUBULAR_STEEL :Ŝtala tuba STR_BRIDGE_TUBULAR_SILICON :Tuba, Silicia # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vojkonstruado STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Konstruado de tramvojoj STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Konstruu vojeron STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Konstrui stratveturilan garaĝon (por konstrui kaj prizorgi veturilojn) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Konstrui tramveturilan garaĝon (por konstrui kaj prizorgi veturilojn) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Konstrui bushaltejon. Premu Stir-butonon por ligi haltejojn. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Konstrui pasaĝerotraman stacion. Premu Stir-butonon por ligi staciojn. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Konstrui kamionan ŝarĝejon. Premu Stir-butonon por ligi ŝarĝejojn. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Konstrui frajttraman stacion. Premu Stir-butonon por ligi staciojn. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktivigi/Malaktivigi unudirektajn stratojn STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Konstruu vojponton STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Konstrui tramponton STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Konstruu vojtunelon STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Konstrui tramtunelon. STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Ĉu konstrui ĉu forigi por vojkonstruado # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Direkto de la stratveturila garaĝo STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Elekti direkton de la stratveturila garaĝo STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Direkto de Tramgaraĝo STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Elekti direkton de tramgaraĝo # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bushalteja Direkto STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Elektu bushaltejan direkton STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Ŝarĝstacia Direkto STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Elektu ŝarĝstacian direkton STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Direkto de Pasaĝera Tramo STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Elekti direkton de pasaĝerotramstacio STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Direkto de Frajttramo STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Elekti direkton de frajttramstacio # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Konstruado de akvovojoj STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Akvovojoj STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Konstruu kanalojn. STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Konstruu kluzojn STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Konstrui ŝipgaraĝon (por aĉeti kaj prizorgi ŝipojn) STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Konstrui ŝipdokon. Premu Stir-butonon por ligi dokojn. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Meti buon kiu povas esti uzata kiel vojpunkto. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Kunstrui akvedukton STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Difinu akvoregionon.{}Faru kanalon, krom se CTRL estas tenata ĉe marnivelo, kiukaze ĝi anstataŭe transfluas al la ĉirkaŭaĵo STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Loku riverojn. # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Direkto de la ŝipgaraĝo STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Elekti direkton de la ŝipgaraĝo # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Haveno # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flughavenoj STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Konstrui flughavenon. Premu Stir-butonon por ligi flughavenojn. # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Elekto de Flughaveno STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Elektu grandecon/tipon de flughaveno STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Flughavena klaso STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Aranĝo {NUM} STR_AIRPORT_SMALL :Malgranda flughaveno STR_AIRPORT_CITY :Urba flughaveno STR_AIRPORT_METRO :Ĉefurba STR_AIRPORT_INTERNATIONAL :Internacia STR_AIRPORT_COMMUTER :Urbeta flughaveno STR_AIRPORT_INTERCONTINENTAL :Interkontinenta STR_AIRPORT_HELIPORT :Helikopterejo STR_AIRPORT_HELIDEPOT :Helikopterogaraĝo STR_AIRPORT_HELISTATION :Helikopterstacio STR_AIRPORT_CLASS_SMALL :Malgrandaj flughavenoj STR_AIRPORT_CLASS_LARGE :Grandaj flughavenoj STR_AIRPORT_CLASS_HUB :Nabaj flughavenoj STR_AIRPORT_CLASS_HELIPORTS :Helikopterhaveno STR_STATION_BUILD_NOISE :{BLACK}Bruon generis: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landaspekto STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Malaltigu landangulon STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Altigu landangulon STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ebenigu landon STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Aĉetu landon por onta uzo # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Elekto de Objekto STR_OBJECT_BUILD_TOOLTIP :{BLACK}Eletku objekton por konstrui STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Elektu klason de la objekto konstrui STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Antaŭvido de la objekto STR_OBJECT_BUILD_SIZE :{BLACK}Grandeco: {GOLD}{NUM} x {NUM} kaheloj STR_OBJECT_CLASS_LTHS :Lumturoj STR_OBJECT_CLASS_TRNS :Transigantoj # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Arboj STR_PLANT_TREE_TOOLTIP :{BLACK}Elektu arbo-tipon por plant STR_TREES_RANDOM_TYPE :{BLACK}Arboj de hazardaj tipoj STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Metu arbojn de hazardaj tipoj STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Hazardaj Arboj STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Hazarde plantu arbojn en la tuta lando # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landa Generado STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Metu rokecajn lokojn en la lando STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Difinu dezertan regionon.{}Tenu Ctrl por forigi ĝin STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Grandigu landparton por (mal)altigi STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Malgrandigu landparton por (mal)altigi STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Kreu landon hazarde STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Kreu novan scenaron STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Reigu landaspekton STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Forviŝu ĉiujn posedaĵojn de la ludanto el la mapo STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reigu Landaspekton STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ĉu vi certas ke vi volas forviŝi ĉiujn posedaĵojn de la ludanto? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Urba Generado STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Urbo STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fondi novan urbon STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Hazarda Urbo STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fondi urbon en hazarda loko STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Multaj hazardaj urboj STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Kovru la mapon per hazarde metitajn urbojn STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Urbnomo: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Enigu urbnomon STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klaku por enigi urbnomon STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Hazarda nomo STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Kreu hazardan novan urbnomon STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Urba grandeco: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Malgranda STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mezgranda STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Granda STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Arbitre STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Elektu urban grandecon STR_FOUND_TOWN_CITY :{BLACK}Urbo STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Urbegoj kreskas pli rapide ol kutimaj urboj{}Depende de agordoj, ili pli grandas je fondiĝo STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Urba strataranĝo: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selektu strataranĝon uzendan por ĉi tiu urbo STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originale STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Pli bonaj stratoj STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 krado STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 krado STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Hazarde # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Fondu novan industrion STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Elektu la taŭgan industrion de ĉi tiu listo STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Multaj hazardaj industrioj STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Kovru la mapon per hazarde metitajn industriojn STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kosto: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospektori STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Konstruu STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fondi # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ĉeno de industrio por {STRING} industrio STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ĉeno de industrio por {STRING} ŝarĝo STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Provizantaj industrioj STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Akceptantaj industrioj STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Domoj STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Alklaku la industrion por vidi ĝia provizanoj kaj klientoj STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Alklaku la ŝarĝon por vidi ĝia provizantoj kaj klientoj STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Montru ĉenon STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Montru ŝarĝoj provizantajn kaj akceptantajn industriojn STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Sinsekvigu al karteto STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Ankaŭ elektu la montrajn industriojn je la karteto STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Elektu Ŝarĝon STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Electu la ŝarĝon, kiun vi deziras montri STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Electu industrion STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Elektu industrion, kiun vi deziras montri # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Landregionaj informoj STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Forviŝkosto: {LTBLUE}ne eblas STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Forviŝkosto: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Enspezo kaze de forigo: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Posedanto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Stratposedanto: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Posedanto de tramvojo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Posedanto de fervojo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokaj estroj: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neniu STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Troviĝo: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Kreite: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacioklaso: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Staciotipo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Aerohavena klaso: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Aerohavena nomo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nomo de flughavena kahelo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Ŝarĝo akceptata: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rela rapideclimo: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rokoj STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Malglata lando STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Nuda lando STR_LAI_CLEAR_DESCRIPTION_GRASS :Herbo STR_LAI_CLEAR_DESCRIPTION_FIELDS :Kampoj STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Neĝkovrita lando STR_LAI_CLEAR_DESCRIPTION_DESERT :Dezerto STR_LAI_ROAD_DESCRIPTION_ROAD :Strato STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Strato kun lampoj STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Strato kun arboj apude STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Stratveturila garaĝo STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Traknivela pasejo STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tramvojo # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (konstruata) STR_LAI_TREE_NAME_TREES :Arboj STR_LAI_TREE_NAME_RAINFOREST :Praarbaro STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusoj STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Stacidomo STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Aviadila hangaro STR_LAI_STATION_DESCRIPTION_AIRPORT :Flughaveno STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ŝarĝejo STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bushaltejo STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Haveno STR_LAI_STATION_DESCRIPTION_BUOY :Buo STR_LAI_STATION_DESCRIPTION_WAYPOINT :Vojpunkto STR_LAI_WATER_DESCRIPTION_WATER :Akvo STR_LAI_WATER_DESCRIPTION_CANAL :Kanalo STR_LAI_WATER_DESCRIPTION_LOCK :Kluzo STR_LAI_WATER_DESCRIPTION_RIVER :Rivero STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Mara aŭ rivera bordo STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ŝipgaraĝo # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Fervoja tunelo STR_LAI_TUNNEL_DESCRIPTION_ROAD :Voja tunelo STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ŝtala pendanta relponto STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ŝtala ebena relponto STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ŝtala luksa relponto STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Fortbetona pendanta relponto STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Ligna relponto STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betona relponto STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Tuba relponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ŝtala pendanta vojponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ŝtala ebena vojponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ŝtala luksa vojponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Fortbetona pendanta vojponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ligna vojponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betona vojponto STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Tuba vojponto STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukto STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmitilo STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Lumturo STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Kompania Ĉefkonstruaĵo STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanie posedata lando # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Pri OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Origina kopirajto {COPYRIGHT} 1995 Chris Sawyer, Ĉiuj rajtoj rezervitaj STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 La teamo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon STR_SAVELOAD_LOAD_CAPTION :{WHITE}Ŝarĝu Ludon STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Konservu Scenaron STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Ŝarĝu Scenaron STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Ŝarĝu Altecmapon STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Konservu altecmapon STR_SAVELOAD_HOME_BUTTON :{BLACK}Klaku ĉi tie por salti al la nuna defaŭlta konserva dosierujo STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} libera{P "" j} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Listo da diskoj, dosierujoj kaj luddosieroj STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nune elektita nomo por luddosiero STR_SAVELOAD_DELETE_BUTTON :{BLACK}Forviŝu STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Forviŝu la nun elektitan luddosieron STR_SAVELOAD_SAVE_BUTTON :{BLACK}Konservu STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Konservu la nunan ludon per la elektita nomo STR_SAVELOAD_LOAD_BUTTON :{BLACK}Ŝarĝu STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ŝarĝu la elektan ludon STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detaloj de la Ludo STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ne haveblas informoj. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Entajpu ludkonservnomon # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Mondgenerado STR_MAPGEN_MAPSIZE :{BLACK}Mapgrandeco: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Selektu la grandeco de la mapo en azuleĥoj. La nombro de disponeblaj azuleĥoj estos iom pli malgranda STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kiom da urboj: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Kiom da industrioj: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Neĝlinia alteco: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Altigu la neĝlinion per unu STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Malaltigu la neĝlinion per unu STR_MAPGEN_RANDOM_SEED :{BLACK}Hazarda Enigo: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klaku por enigi hazardan enigon STR_MAPGEN_RANDOM :{BLACK}Hazardigu STR_MAPGEN_RANDOM_HELP :{BLACK}Ŝanĝu la hazardan enigon uzatan de la terengenerilo STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerilo: STR_MAPGEN_TREE_PLACER :{BLACK}Arba algoritmo: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terentipo: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Marnivelo: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Riveroj: STR_MAPGEN_SMOOTHNESS :{BLACK}Reguleco: STR_MAPGEN_VARIETY :{BLACK}Diverseca distribuo: STR_MAPGEN_GENERATE :{WHITE}Generu # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Maprandoj: STR_MAPGEN_NORTHWEST :{BLACK}Nordokcidenta STR_MAPGEN_NORTHEAST :{BLACK}Nordorienta STR_MAPGEN_SOUTHEAST :{BLACK}Sudorienta STR_MAPGEN_SOUTHWEST :{BLACK}Sudokcidenta STR_MAPGEN_BORDER_FREEFORM :{BLACK}Libermana STR_MAPGEN_BORDER_WATER :{BLACK}Akvo STR_MAPGEN_BORDER_RANDOM :{BLACK}Hazarde STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Hazarde STR_MAPGEN_BORDER_MANUAL :{BLACK}Manlibro STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Mapa turniĝo: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Mapa nomo: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grandeco: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enigu hazardan semon STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ŝanĝu altecon de la neĝlinio STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ŝanĝu komencjaron # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Scenara tipo STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Ebena lando STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generu ebenan landon STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Hazarda lando STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Alteco de ebena lando: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Malaltigu la altecon de ebena lando per unu STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Altigu la altecon de ebena lando per unu STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Ŝanĝu altecon de ebena lando # Map generation progress STR_GENERATION_WORLD :{WHITE}Generante Mondon... STR_GENERATION_ABORT :{BLACK}Ĉesu STR_GENERATION_ABORT_CAPTION :{WHITE}Ĉesu generi mondon STR_GENERATION_ABORT_MESSAGE :{YELLOW}Ĉu vi vere volas ĉesi generi mondon? STR_GENERATION_PROGRESS :{WHITE}{NUM}% komplete STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Mondgenerado STR_GENERATION_RIVER_GENERATION :{BLACK}Rivergenerado STR_GENERATION_TREE_GENERATION :{BLACK}Arba generado STR_GENERATION_OBJECT_GENERATION :{BLACK}Nemoveblaĵa generado STR_GENERATION_CLEARING_TILES :{BLACK}Generado de malglataj kaj rokaj regionoj STR_GENERATION_SETTINGUP_GAME :{BLACK}Agordante ludon STR_GENERATION_PREPARING_TILELOOP :{BLACK}Trakurante kvadratojn STR_GENERATION_PREPARING_GAME :{BLACK}Preparante ludon # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF-Agordoj STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detalaj informoj de NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktivaj dosieroj de NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Malaktiva dosieroj de NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Elektu antaŭaro: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtroteksto: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Ŝarĝu la elektan antaŭaron STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Konservu antaŭaron STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Konservu la nunan liston kiel antaŭaro STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Enigu nomon por la antaŭaro STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Forviŝu antaŭaron STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Forviŝu la kurente elektan antaŭaron STR_NEWGRF_SETTINGS_ADD :{BLACK}Aldonu STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Aldonu la elektitan NewGRF-dosieron al viaj agordoj STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Reserĉu dosierojn STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ĝisdatigu la liston da haveblaj NewGRF-dosieroj STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Forviŝu STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Forviŝu la elektitan dosieron de NewGRF el la listo STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Supren STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Movu la elektitan NewGRF-dosieron supren en la listo STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Malsupren STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Movu la elektitan NewGRF-dosieron malsupren en la listo STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Listo da instalitaj NewGRF-dosieroj. Alklaku dosieron por ŝanĝi la parametrojn STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Agordu parametrojn STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Baskuligi paletron STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Apliku ŝanĝojn STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Trovi mankan enhavon enrete STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Kontroli ĉu eblas trovi la mankan enhavon enrete. STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Dosiernomo: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versio: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kongrua versio: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paletro: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametroj: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Ne haveblas informoj STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ne trovis apartenan dosieron STR_NEWGRF_SETTINGS_DISABLED :{RED}Malaktiva STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Malkongrua ĉe ĉi tio versio de OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ŝanĝu parametroj de la NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Fermu STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reigu STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Kondiĉu ĉiujn parametrojn al ilia norma valoro STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametro {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Nombro da parametroj: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspektu - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Magistro STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} je {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekto STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipo de relo # Sprite aligner window STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sekvanta bildeto STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Iru al bildeto STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Antaŭa bildeto STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Movu ĉirkaŭ la bildeton, ŝanĝante la X kaj Y distancojn STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X distanco: {NUM}, Y distanco: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Elektu bildeto STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Elektu bildeton ie el la ekrano STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Iru al bildeto # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Averto: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Eraro: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatalo: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Neriparebla NewGRF-eraro okazis: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} ne funkcios kun la versio de TTDPatch menciata de OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} estas por la {STRING} versio de TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} estas intencita por uzo kun {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Nevalida parametro por {1:STRING}: parametro{STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} devi esti ŝarĝata antaŭ {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} devi esti ŝarĝata post {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} bezonas OpenTTD versio {STRING} aŭ pli bona STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :la GRF-dosiero estas farita por traduki STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tro da NewGRF-oj estas ŝarĝataj STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enhavas rompitan bildeton. Ĉiuj rompitaj bildetoj aspektos kiel ruĝaj demandsignoj (?). STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}La nuntempe uza baza grafikaĵaro estas manka nombro da bildetoj.{} Bonvolu renovigu la baza grafikaĵaro. STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} estis malaktivata per {STRING} # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Atentu! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Vi ŝanĝos kurantan ludon. Tio povas kraŝigi la ludon OpenTTD.{}Ĉu vi nepre certas, ke vi volas fari tion? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Dosiero ne aldoneblas: duobla GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ne troviĝis apartena dosiero (ŝarĝis taŭgan GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ne eblas aldoni dosieron: NewGRF-a dosierlimo atingita STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Taŭga(j) GRF(oj) ŝarĝiĝis por mankaj dosieroj STR_NEWGRF_DISABLED_WARNING :{WHITE}Manka(j) GRF-dosiero(j) malŝaltiĝis STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Manka(j) GRF-dosiero(j) # NewGRF status STR_NEWGRF_LIST_NONE :Neniu STR_NEWGRF_LIST_ALL_FOUND :Ĉiuj dosieroj alestaj STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Trovis kongruajn dosierojn STR_NEWGRF_LIST_MISSING :{RED}Mankaj dosieroj # NewGRF 'it's broken' warnings STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' donas malĝustan informon. STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Revoko' {1:HEX} revenis nekonatan/malvalidan rezulton {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Trovas NewGRF-oj STR_NEWGRF_SCAN_MESSAGE :{BLACK}Trovas NewGRF-oj. Dependa de la sumo ĝi povas esti longetempe... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF-o{P "" j} trovis da estimata {NUM} NewGRF-o{P "" j} STR_NEWGRF_SCAN_ARCHIVES :Trovas por arĥivoj # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Signolisto - {COMMA} Signo{P "" j} STR_SIGN_LIST_MATCH_CASE :{BLACK}Parigu kazon STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Aktivu/Malaktivu parigan kazon dum komparanta signajn nomojn kontraŭ la filtra teksto # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Ŝanĝu afiŝan tekston STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Iri al la sekva signo STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Iri al la antaŭa signo STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enigu nomon por la signo # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Urboj STR_TOWN_DIRECTORY_NONE :{ORANGE}-Neniu - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Urbonomoj - klaku nomon por centri vidon ĉe la urbo. Stir+Klak por malfermi novan vidujon ĉe la urba loko. STR_TOWN_POPULATION :{BLACK}Monda enloĝantaro: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Urbo) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Enloĝantoj: {ORANGE}{COMMA}{BLACK} Domoj: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasaĝeroj lastmonate: {ORANGE}{COMMA}{BLACK} maksimume: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Poŝto lastmonate: {ORANGE}{COMMA}{BLACK} maksimume: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargo bezonata por kreskigi urbon: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} bezonatas STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} bezonatas en vintro STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Urba brulimo: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la urbo. Stir+Klak por malfermi novan vidujon ĉe la urba loko. STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Lokaj estroj STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Montru informojn pri lokaj estroj STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Ŝanĝu urbonomon STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Vastigu STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Grandigu la urbon STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Forigu STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Plene forigu ĉi tiun urbon STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Alinomi urbon # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Lokaj estroj de {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Takso de transportkompanioj: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Haveblaj agoj: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Fareblaĵoj en ĉi tiu urbo - alklaku por pliaj detaloj STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Faru STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Plenumu la elektitan agon el la ĉi-supera listo STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Malgranda reklama kampanjo STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Mezgranda reklama kampanjo STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Granda reklama kampanjo STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Fondu lokan vojrekonstruadon STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Konstruu statuon de la kompaniestro STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Fondu novajn konstruaĵojn STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Aĉetu ekskluzivan transportrajton STR_LOCAL_AUTHORITY_ACTION_BRIBE :Subaĉetu la lokajn estrojn STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Komencu malgrandan lokan reklamadon, por altiri pli da pasaĝeroj kaj ŝarĝoj al viaj transportservoj.{}Kosto: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Komencu mezgrandan lokan reklamadon, por altiri pli da pasaĝeroj kaj ŝarĝoj al viaj transportservoj.{}Kosto: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Komencu grandan lokan varbadkampanjon, por altiri pliajn pasaĝerojn kaj kargojn al viaj transportservoj.{} Kosto: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Pagu rekonstruadon de la urba stratreto. Kaŭzos konsiderindan ĝenon al la trafiko por ĝis 6 monatoj.{} Kosto: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Konstruu statuon honore al via kompanio.{}Kosto: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Pagu la konstruadon de novaj komercaj konstruaĵoj en la urbo.{} Kosto: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Aĉetu ekskluzivajn transportrajtojn en la urbo por 1 jaro. La urbo nur permesos pasaĝerojn kaj kargojn uzi la staciojn de via entrepreno.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Subaĉetu la lokajn estrojn por pliigi vian rendimenton, riskante grandan punon je kaptiĝo.{}Kosto: {CURRENCY_LONG} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window ### Start of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencioj STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subvencioj haveblas por jenaj servoj: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} de {STRING} al {STRING}{YELLOW} (antaŭ {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Neniu - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Servoj subvenciataj: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} de {STRING} al {STRING}{YELLOW} ({COMPANY}{YELLOW}, ĝis {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klaku servon por centri vidon ĉe la industrio/urbo. Stir+Klak por malfermi novan vidujon ĉe la loko. # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stacionomoj - klaku nomon por centri vidon ĉe la stacio. Stir+Klak por malfermi novan vidujon ĉe la stacioloko. STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Tenu la CTRL-klavon por elekti plurajn erojn STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stacio{P "" j} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Neniu - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Elektu ĉiujn konstruaĵojn STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Elektu ĉiujn ŝarĝotipojn (inkluzive de ne atendanta ŝarĝo) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nenia ŝarĝo atendas # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Atendas: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} survoje de {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akceptas STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Montri liston de akceptataj ŝarĝoj. STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Akceptiĝas: {WHITE}{CARGO_LIST} STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Takso STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Montru stacian takson STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Loka takso de transportservoj: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Plorige STR_CARGO_RATING_VERY_POOR :Malbone STR_CARGO_RATING_POOR :Ne bone STR_CARGO_RATING_MEDIOCRE :Mezmeze STR_CARGO_RATING_GOOD :Bone STR_CARGO_RATING_VERY_GOOD :Tre bone STR_CARGO_RATING_EXCELLENT :Bonege STR_CARGO_RATING_OUTSTANDING :Elstare bonege ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la stacio. Stir+Klak por malfermi novan vidujon ĉe la stacioloko. STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Ŝanĝu nomon de stacio STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Montru ĉiujn trajnojn kun ĉi tiu stacio en la plano STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Montru ĉiujn stratveturilojn kun ĉi tiu stacio en la plano STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Montru ĉiujn aviadilojn kun ĉi tiu stacio en la plano STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Montru ĉiujn ŝipojn kun ĉi tiu stacio en la plano STR_STATION_VIEW_RENAME_STATION_CAPTION :Alinomi stacion/ŝarĝejon # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la vojpunkto. Stir+Klak por malfermi novan vidujon ĉe la loko. STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Ŝanĝi nomon de vojpunkto. STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la buo. Stir+Klak por malfermi novan vidujon ĉe la bua loko. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Ŝanĝi nomon de la buo. STR_EDIT_WAYPOINT_NAME :{WHITE}Ŝanĝu vojpunktonomon # Finances window STR_FINANCES_CAPTION :{WHITE}Financoj de {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Elspezo/Enspezo STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruado STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Novaj Veturiloj STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Trajnaj Irkostoj STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Stratveturilaj irkostoj STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Aviadilaj Irkostoj STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Ŝipaj Irkostoj STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Posedaĵa Konservado STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Trajna Enspezo STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Stratveturila enspezo STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Aviadila Enspezo STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ŝipa Enspezo STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Rento pri Prunto STR_FINANCES_SECTION_OTHER :{GOLD}Alia STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Entute: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Banka Balanco STR_FINANCES_LOAN_TITLE :{WHITE}Prunto STR_FINANCES_MAX_LOAN :{WHITE}Maksimuma prunto: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Pruntu {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Grandigu prunton STR_FINANCES_REPAY_BUTTON :{BLACK}Repagu {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Repagu pruntparton # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Manaĝanto) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Inaŭgurita: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Kolorskemo: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Veturiloj: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} trajno{P "" j} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} stratveturilo{P "" j} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} aviadiloj STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} ŝipo{P "" j} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Neniu STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Kompania valoro: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% posedataj de {COMPANY}) STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Faru HQ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Konstrui kompanian administraciejon STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Vidu HQ STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Rigardi kompanian administraciejon STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Relokigu HQ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rekonstruu kompanian ĉefkonstruaĵon aliloke por 1% de kompanivaloro STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nova Vizaĝo STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Elektu novan vizaĝon por la manaĝanto STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Kolorskemo STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Ŝanĝu la kompaniveturilan koloraron STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Kompaninomo STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Ŝanĝu la nomon de la kompanio STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Manaĝantnomo STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Ŝanĝu la nomon de la manaĝanto STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Aĉetu 25%-an dividaĵon STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Vendu 25%-an dividaĵon STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Aĉetu 25%-an dividaĵon en ĉi tiu kompanio STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vendu 25%-an dividaĵon en ĉi tiu kompanio STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Kompania Nomo STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nomo de la Manaĝanto STR_BUY_COMPANY_MESSAGE :{WHITE}Ni serĉas transportkompanion por transpreni nian kompanion.{}{}Ĉu vi volas aĉeti {COMPANY} por {CURRENCY_LONG}? # Company infrastructure window # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrioj STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Neniu - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportite) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportite) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrionomoj - klaku nomon por centri vidon ĉe la industrio. Stir+Klak por malfermi novan vidujon ĉe la loko. # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Lastmonata produktado: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportiĝis) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la industrio. Stir+Klak por malfermi novan vidujon ĉe la industrioloko. STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produkta nivelo: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Bezonas: {YELLOW}{STRING.n}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Bezonas: {YELLOW}{STRING.n}{STRING}, {STRING.n}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Bezonas: {YELLOW}{STRING.n}{STRING}, {STRING.n}{STRING}, {STRING.n}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Kargo atendanta procedon: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produktas: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produktas: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Ŝanĝu produktadon STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Ŝanĝu produktan nivelon (procento, limigo je 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Trajno{P "" j} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Stratveturilo{P "" j} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Ŝipo{P "" j} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aviadiloj STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trajnoj - alklaku trajnon por pliaj informoj STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Stratveturiloj - alklaku veturilon por informoj STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Ŝipoj - alklaku ŝipon por informoj STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aviadiloj - alklaku aviadilon por informoj STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Gajno ĉi-jare: {CURRENCY_LONG} (pasintjare: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Haveblaj Trajnoj STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Haveblaj Veturiloj STR_VEHICLE_LIST_AVAILABLE_SHIPS :Haveblaj Ŝipoj STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Haveblaj Aviadiloj STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vidu liston da ĉiuj haveblaj maŝinoj por ĉi tiu veturilspeco. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Manaĝu liston STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Sendu instrukciojn al ĉiuj veturiloj en la listo STR_VEHICLE_LIST_REPLACE_VEHICLES :Anstataŭu veturilojn STR_VEHICLE_LIST_SEND_FOR_SERVICING :Sendu por Prizorgo STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sendu al Garaĝo STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sendu al Garaĝo STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Sendi al Garaĝo STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sendu al Hangaro STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Alklaku por haltigi ĉiujn veturilojn en la listo STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Alklaku por starti ĉiujn veturilojn en la listo STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Kunhavaj ordonoj de {COMMA} Veturilo{P "" j} # Group window STR_GROUP_ALL_TRAINS :Ĉiuj trajnoj STR_GROUP_ALL_ROAD_VEHICLES :Ĉiuj stratveturiloj STR_GROUP_ALL_SHIPS :Ĉiuj ŝipoj STR_GROUP_ALL_AIRCRAFTS :Ĉiuj aviadiloj STR_GROUP_DEFAULT_TRAINS :Sengrupaj trajnoj STR_GROUP_DEFAULT_ROAD_VEHICLES :Sengrupaj stratveturiloj STR_GROUP_DEFAULT_SHIPS :Sengrupaj ŝipoj STR_GROUP_DEFAULT_AIRCRAFTS :Sengrupaj aviadiloj STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupoj - klaku grupon por listigi ĉiujn veturilojn de tiu ĉi grupo STR_GROUP_CREATE_TOOLTIP :{BLACK}Klaku por krei grupon STR_GROUP_DELETE_TOOLTIP :{BLACK}Viŝu la selektitan grupon STR_GROUP_RENAME_TOOLTIP :{BLACK}Alinomi la elektitan grupon STR_GROUP_ADD_SHARED_VEHICLE :Aldonu kunhavajn veturilojn STR_GROUP_REMOVE_ALL_VEHICLES :Forigi ĉiujn veturilojn STR_GROUP_RENAME_CAPTION :{BLACK}Alinomi grupon # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novaj Relaj Veturiloj STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novaj Elektraj Relaj Veturiloj STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Novaj Unurelaj Veturiloj STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Novaj Maglevaj Veturiloj STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Novaj stratveturiloj STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Novaj stratveturiloj STR_BUY_VEHICLE_SHIP_CAPTION :Novaj Ŝipoj STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Novaj Aviadiloj STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kosto: {GOLD}{CURRENCY_LONG}{BLACK} Pezo: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Rapido: {GOLD}{VELOCITY}{BLACK} Forto: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Rapido: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Rapido sur oceano: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Rapido sur kanalo/rivero: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Irkosto: {GOLD}po {CURRENCY_LONG} jare STR_PURCHASE_INFO_CAPACITY :{BLACK}Kapablo: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(transformebla) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Pripensite: {GOLD}{NUM}{BLACK} Vivlongo: {GOLD}{COMMA} jaro{P "" j} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Pleja Fidebleco: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Kosto: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Pezo: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kosto: {GOLD}{CURRENCY_LONG}{BLACK} Rapido: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Enhaveco: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagonfortoj: {GOLD}+{POWER}{BLACK} Weight: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Transformebla al: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Ĉiaj ŝarĝoj STR_PURCHASE_INFO_ALL_BUT :Ĉio krom {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maksimuma Tiro: {GOLD}{FORCE} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Trajnveturila elektolisto - alklaku veturilon por informoj STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Stratveturilelektan liston - alklaku veturilon por informoj STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ŝipelekta listo - alklaku ŝipon por informoj STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aviadilelekta listo - alklaku aviadilon por informoj STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Veturilon STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Veturilon STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Ŝipon STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Aĉeti Aviadilon STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan trajnveturilon STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan stratveturilon STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan ŝipon STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aĉeti la emfazitan aviadilon STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Alinomi STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Alinomi STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Alinomi STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Alinomi STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Alinomi trajnveturilan tipon STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Alinomi stratveturilan tipon STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Alinomi ŝiptipon STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Alinomi aviadiltipon STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Alinomi trajnan veturiltipon STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Alinomi stratveturilan tipon STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Alinomi ŝiptipon STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Alinomi aviadiltipon # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Ŝanĝi nomon de tenejo STR_DEPOT_RENAME_DEPOT_CAPTION :Alinomi tenejon STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} veturilo{P "" j}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trajnoj - klaku trajnon por scii pli, tiru veturilon por aldoni aŭ forigi de trajno STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veturiloj - dekstra-alklaku veturilojn por informoj STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Ŝipoj - dekstra-alklaku ŝipon por informoj STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aviadiloj - dekstra-alklaku aviadilon por informoj STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Tiru trajnan veturilon ĉi tien por vendi STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Tiru stratveturilon ĉi tien por vendi STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Tiru ŝipon ĉi tien por vendi STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}DTiru aviadilon ĉi tien por vendi STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Tiru la lokomotivon ĉi tien por vendi la tutan trajnon. STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Vendi ĉiujn trajnojn en la garaĝo STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Vendi ĉiujn stratveturilojn en la garaĝo STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Vendi ĉiujn ŝipojn en la garaĝo STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Vendu ĉiujn aviadilojn en la hangaro STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Aŭtomate anstataŭi ĉiujn trajnojn en la garaĝo STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Aŭtomate anstataŭi ĉiujn stratveturilojn en la garaĝo STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Aŭtomate anstataŭi ĉiujn ŝipojn en la garaĝo STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Aŭtomate anstataŭi ĉiujn aviadilojn en la hangaro STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Novaj Veturiloj STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Novaj Veturiloj STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Novaj Ŝipoj STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Novaj Aviadiloj STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Aĉeti novan trajnan veturilon STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Aĉeti novan stratveturilon STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Aĉeti novan ŝipon STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Aĉeti novan aviadilon STR_DEPOT_CLONE_TRAIN :{BLACK}Klonu Trajnon STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonu Veturilon STR_DEPOT_CLONE_SHIP :{BLACK}Klonu Ŝipon STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonu aviadilon STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Aĉeti kopion de trajno kun ĉiuj vagonoj. Klaku ĉi tiun butonon kaj poste trajnon en aŭ ekster la garaĝo. Stir+Klak kunhavigas la itineron. STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Aĉeti kopion de stratveturilo. Klaku ĉi tiun butonon kaj poste veturilon en aŭ ekster la garaĝo. Stir+Klak kunhavigas la itineron. STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Aĉeti kopion de ŝipo. Klaku ĉi tiun butonon kaj poste ŝipon en aŭ ekster garaĝo. Stir+Klak kunhavigas la itineron. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Aĉeti kopion de la aviadilo. Klaku ĉi tiun butonon kaj poste aviadilon en aŭ ekster la hangaro. Stir+Klak kunhavigas la ordonojn. STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la trajngaraĝon. Stir+Klak por malfermi novan vidujon ĉe la trajngaraĝa loko. STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la stratveturilan garaĝon. Stir+Klak por malfermi novan vidujon ĉe la garaĝa loko. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la ŝipgaraĝon. Stir+Klak por malfermi novan vidujon ĉe la ŝipgaraĝa loko. STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centri ĉefvidon ĉe la hangaro. Stir+Klak por malfermi novan vidujon ĉe la hangara lokon. STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Akiri liston da ĉiuj trajnoj kun ĉi tiu garaĝo en siaj itineroj STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Akiri liston da ĉiuj stratveturiloj kun ĉi tiu garaĝo en siaj itineroj STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Akiri liston da ĉiuj ŝipoj kun ĉi tiu garaĝo en siaj itineroj STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Akiri liston da ĉiuj aviadiloj kun ajna hangaro ĉe tiu ĉi flughaveno en siaj itineroj STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klaki por haltigi ĉiujn trajnojn en la garaĝo STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klaku por haltigi ĉiujn stratveturilojn en la garaĝo STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klaku por haltigi ĉiujn ŝipojn en la garaĝo STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Alklaku por haltigi ĉiujn aviadilojn en la hangaro STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klaku por starti ĉiujn trajnojn en la garaĝo STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klaku por starti ĉiujn stratveturilojn en la garaĝo STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klaku por starti ĉiujn ŝipojn en la garaĝo STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Alklaku por starti ĉiujn aviadilojn en la hangaro STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Vi vendos ĉiujn veturilojn en la garaĝo. Ĉu vi certas? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Mesaĝo de veturil-produktanto STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Nova {STRING} estas inventita - ĉu vi ŝatus jaron ekskluzive uzi la veturilon, por ke ni povu vidi ĝian funkciadon antaŭ ol ĝi estos plene havebla? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :fervoja lokomotivo STR_ENGINE_PREVIEW_ROAD_VEHICLE :stratveturilo STR_ENGINE_PREVIEW_AIRCRAFT :aviadilo STR_ENGINE_PREVIEW_SHIP :ŝipo STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :unurellokomotivo STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magleva lokomotivo STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kosto: {CURRENCY_LONG} Pezo: {WEIGHT_SHORT}{}Rapido: {VELOCITY} Forto: {POWER}{}Irkosto: po {CURRENCY_LONG} jare{}Kapablo: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kosto: {CURRENCY_LONG} Pezo: {WEIGHT_SHORT}{}Rapido: {VELOCITY} Povo: {POWER} Maks. T.E.: {6:FORCE}{}Irkosto: {4:CURRENCY_LONG}/jaro{}Kapacito: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kosto: {CURRENCY_LONG} Maks. Rapido: {VELOCITY}{}Kapacito: {CARGO_LONG}, {CARGO_LONG}{}Irkosto: {CURRENCY_LONG}/jaro STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kosto: {CURRENCY_LONG} Maks. Rapido: {VELOCITY}{}Kapacito: {CARGO_LONG}{}Irkosto: {CURRENCY_LONG}/jaro # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Anstataŭu {STRING.n} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Trajno STR_REPLACE_VEHICLE_ROAD_VEHICLE :Stratveturilo STR_REPLACE_VEHICLE_SHIP :Ŝipo STR_REPLACE_VEHICLE_AIRCRAFT :Aviadilo STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Elektu maŝinon por anstataŭi STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Elektu novan maŝinon por uzi anstataŭ la maldekstre elektitan STR_REPLACE_VEHICLES_START :{BLACK}Komencu Anstataŭi STR_REPLACE_HELP_START_BUTTON :{BLACK}Premu por komenci anstataŭi la maldekstre elektitan maŝinon per la dekstre elektitan STR_REPLACE_NOT_REPLACING :{BLACK}Ne anstataŭante STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ne elektiĝis veturilo STR_REPLACE_VEHICLES_STOP :{BLACK}Ĉesu Anstataŭi STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Premu por ĉesi anstataŭi la maldekstre elektitan maŝinon STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Anstataŭante: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Ŝaltu inter maŝina kaj vagona anstataŭigo STR_REPLACE_ENGINES :Maŝinoj STR_REPLACE_WAGONS :Vagonoj STR_REPLACE_HELP_RAILTYPE :{BLACK}Elektu fervojtipon por kiu vi volas anstataŭigi maŝinojn STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Montras ontan maŝinecon de la maldekstra maŝino, se anstataŭote STR_REPLACE_RAIL_VEHICLES :Relaj Veturiloj STR_REPLACE_ELRAIL_VEHICLES :Elektraj Relaj Veturiloj STR_REPLACE_MONORAIL_VEHICLES :Unurelaj Veturiloj STR_REPLACE_MAGLEV_VEHICLES :Maglevaj Veturiloj STR_REPLACE_REMOVE_WAGON :{BLACK}Vagonforigo: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Ĉe aŭtomata anstataŭigo tenu saman longecon de la trajno per forigo de vagonoj (defronte), se per nova maŝino la trajno plilongiĝas # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centre vidu trajnan lokon en la ĉefvido STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centre vidu la veturilon en la ĉefvido STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centre vidu ŝipon en ĉefvido STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centre vidu aviadilon en la ĉefvido STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi trajnon al garaĝo. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi veturilon al garaĝo. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi ŝipon al garaĝo. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sendi aviadilon al hangaro. Stir+Klak nur prizorgos STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Aĉeti kopion de la trajno kun ĉiuj vagonoj. Stir+Klak por kunhavigi la itineron. STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Aĉeti kopion de la stratveturilo. Stir+Klak por kunhavigi la itineron. STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Aĉeti kopion de la ŝipo. Stir+Klak por kunhavigi la itineron. STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Aĉeti kopion de la aviadilo. Stir+Klak por kunhavigi la itinero. Maj+klak montros la antaŭvidatan koston sen jam aĉetin. STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Igu trajnon iri malgraŭ signalo STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Transformi trajnon por porti alian ŝarĝtipon STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Transformi stratveturilon por porti alian ŝarĝtipon STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Transformi ŝipon por porti alian ŝarĝotipon STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Transformi aviadilon por porti alian ŝarĝotipon STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Inversigu trajnan direkton STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Igu veturilon ĉirkaŭturni STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Montri ordonojn de la trajno. Stir+Klak por montri la horaron. STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Montri ordonojn de la veturilo. Stir+Klak por montri la horaron. STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Montri ordonojn de la ŝipo. Stir+Klak por montri la horaron. STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Montri ordonojn de la aviadilo. Stir+Klak por montri la horaron. STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Montru trajnajn detalojn STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Montru stratveturilajn detalojn STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Montru ŝipajn detalojn STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Montru aviadilajn detalojn STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Nuna trajna ago - klaku por haltigi/starti la trajnon STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Nuna veturila ago - klaku ĉi tie por haltigi/starti veturilon STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Nuna ŝipa ago - klaku ĉi tie por haltigi/starti ŝipon STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Nuna aviadila ago - klaku ĉi tie por haltigi/starti aviadilon # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Ŝarĝante / Deŝarĝante STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Forirante STR_VEHICLE_STATUS_CRASHED :{RED}Kraŝis! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Panea STR_VEHICLE_STATUS_STOPPED :{RED}Haltis STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Haltiĝas, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Senforte STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Atendas haveblan padon STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Irante al {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Neniu ordono, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Irante al {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Irante al {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Prizorgo en {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Halta STR_VEHICLE_COMMAND_STOPPED :{RED}Halta STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Komenca STR_VEHICLE_COMMAND_STARTED :{GREEN}Komenca # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detaloj) STR_VEHICLE_NAME_BUTTON :{BLACK}Nomo STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Nomu trajnon STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Nomi stratveturilon STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Nomu ŝipon STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nomu aviadilon STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aĝo: {LTBLUE}{STRING}{BLACK} Irkosto: {LTBLUE}{CURRENCY_LONG}/jaro # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} jaro{P "" j} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} jaro{P "" j} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. rapido: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Pezo: {LTBLUE}{WEIGHT_SHORT} {BLACK}Povo: {LTBLUE}{POWER}{BLACK} Maks. rapido: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pezo: {LTBLUE}{WEIGHT_SHORT} {BLACK}Povo: {LTBLUE}{POWER}{BLACK} Maks. rapido: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profito ĉijare: {LTBLUE}{CURRENCY_LONG} (lastjare: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fidindo: {LTBLUE}{COMMA}% {BLACK}Paneoj ekde lasta servo: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Konstruita: {LTBLUE}{NUM}{BLACK} Valoro: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Enhaveco: {LTBLUE}Nenion{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Enhaveco: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Enhaveco: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Enhaveco: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transigaj Kreditoj: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Prizorga intervalo: {LTBLUE}{COMMA}tagoj{BLACK} Lasta prizorgo: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Prizorga intervalo: {LTBLUE}{COMMA}%{BLACK} Lasta prizorgo: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Pliigu prizorgintervalon STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Malpliigu prizorgintervalon STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Ŝanĝi la tipo de servon intervalon STR_VEHICLE_DETAILS_DEFAULT :Defaŭlto STR_VEHICLE_DETAILS_DAYS :Tagoj STR_VEHICLE_DETAILS_PERCENT :Procentaĵo STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nomu trajnon STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nomi stratveturilon STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nomu ŝipon STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nomu aviadilon # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Kreite: {LTBLUE}{NUM}{BLACK} Valoro: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Valoro: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Tuta ŝarĝkapablo de ĉi tiu trajno: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Malplena STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} de {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} de {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Ŝarĝo STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Montru detalojn de portata ŝarĝo STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informoj STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Montru detalojn de trajnaj veturiloj STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapabloj STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Montru kapablojn de ĉiu veturilo STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Tuta Ŝarĝo STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Montru tutan kapablon de trajno, dividite laŭ ŝarĝtipo STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapacito: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Transformu) STR_REFIT_TITLE :{GOLD}Elektu ŝarĝotipon por porti: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova kapablo: {GOLD}{CARGO_LONG}{}{BLACK}Transformkosto: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova enhavebelco: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kosto de transformo: {RED}{CURRENCY_LONG} STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Elektu ŝarĝospecon portotan de la trajno STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Elektu portotan ŝarĝon de la stratveturilo STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Elektu portotan ŝarĝotipon STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Elektu portotan ŝarĝon de aviadilo STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Transformu trajnon STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Transformi stratveturilon STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Transformu ŝipon STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Transformu aviadilon STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Transformu trajnon por porti la elektitan ŝarĝotipon STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Transformi stratveturilon por porti elektitan ŝarĝon STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Transformu ŝipon por porti elektitan ŝarĝotipon STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Transformu aviadilon por porti elektitan ŝarĝotipon # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ordonoj) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Horaro STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Montri horarovidujon STR_ORDERS_LIST_TOOLTIP :{BLACK}Ordonlisto - klaku ordonon por elekti. Stir+Klak rulumas al la stacio. STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Fino de Ordonoj - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Fino de Kunhavitaj Ordonoj - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Senhalte STR_ORDER_GO_TO :Iru al STR_ORDER_GO_NON_STOP_TO :Iru senhalte al STR_ORDER_GO_VIA :Iru laŭ STR_ORDER_GO_NON_STOP_VIA :Iru senhalte laŭ STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Ŝanĝi la haltagon de la emfazita ordono STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Ŝarĝu ĝis plena ajnan kargon STR_ORDER_DROP_LOAD_IF_POSSIBLE :Ŝarĝu se havebla STR_ORDER_DROP_FULL_LOAD_ALL :Ŝarĝu ĝis plena ĉiujn kargojn STR_ORDER_DROP_FULL_LOAD_ANY :Ŝarĝu ĝis plena ajnan kargon STR_ORDER_DROP_NO_LOADING :Ne ŝarĝu STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Ŝanĝi la ŝarĝagon de la emfazita ordono STR_ORDER_TOGGLE_UNLOAD :{BLACK}Malŝarĝu ĉion STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Malŝarĝu se akceptita STR_ORDER_DROP_UNLOAD :Malŝarĝu ĉion STR_ORDER_DROP_TRANSFER :Transigo STR_ORDER_DROP_NO_UNLOADING :Ne malŝarĝu STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ŝanĝi la malŝarĝagon de la emfazita ordono STR_ORDER_REFIT :{BLACK}Transformu STR_ORDER_REFIT_TOOLTIP :{BLACK}Elektu kargospecon por transformo en ĉi tiu ordono. CTRL+klako por forigi transforminstrukcion STR_ORDER_REFIT_AUTO :{BLACK}Aŭtotransformi STR_ORDER_DROP_REFIT_AUTO :Malŝanĝa ŝarĝo STR_ORDER_DROP_REFIT_AUTO_ANY :Haveblaj ŝarĝoj STR_ORDER_SERVICE :{BLACK}Prizorgo STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ĉiam iru. STR_ORDER_DROP_SERVICE_DEPOT :Prizorgu se necesas. STR_ORDER_DROP_HALT_DEPOT :Haltu. STR_ORDER_SERVICE_TOOLTIP :{BLACK}Transsalti ordonon escepte de prizorgo necesas # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Ŝarĝu procenton STR_ORDER_CONDITIONAL_RELIABILITY :Fidindo STR_ORDER_CONDITIONAL_MAX_SPEED :Maksimuma rapido. STR_ORDER_CONDITIONAL_AGE :Aĝo (jaroj) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Prizorgo necesas. STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Ĉiam STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Resta vivo (jaroj) STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :egalas al STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ne egalas al STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :estas malpli ol STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :estas malpli aŭ egalas al STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :estas pli ol STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :estas pli aŭ egalas al STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :estas vera STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :estas falsa STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Enigi valoron por kompari STR_ORDERS_SKIP_BUTTON :{BLACK}Plusaltu STR_ORDERS_SKIP_TOOLTIP :{BLACK}Transsalti la nunan ordonon kaj fari la sekvan. Stir+Klak por transsalti al la elektita ordono. STR_ORDERS_DELETE_BUTTON :{BLACK}Forviŝu STR_ORDERS_DELETE_TOOLTIP :{BLACK}Forviŝi la elektitan ordonon. STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Forviŝu ĉiujn ordonojn STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Haltu kunhavanta STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Haltu kunhavanta la ordonan registron. Stir+Klak ankaŭ forviŝas ĉiujn ordonojn por ĉi tio veturilo STR_ORDERS_GO_TO_BUTTON :{BLACK}Iru al STR_ORDER_GO_TO_NEAREST_DEPOT :Iru al la plej proksima garaĝo. STR_ORDER_GO_TO_NEAREST_HANGAR :Iru al la plej proksima hangaro. STR_ORDER_CONDITIONAL :Kondiĉe transsaltu ordonon STR_ORDER_SHARE :Kunhavu ordonojn STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Enigi novan ordonon antaŭ la elektita ordono, aŭ aldoni fine de la listo. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Montru ĉiujn veturilojn kiuj dividas ĉi tiun planon # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Iru laŭ {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Iru senhalte laŭ {WAYPOINT} STR_ORDER_SERVICE_AT :Prizorgu ĉe STR_ORDER_SERVICE_NON_STOP_AT :Prizorgu senhalte ĉe STR_ORDER_NEAREST_DEPOT :la plej proksima STR_ORDER_NEAREST_HANGAR :la plej proksima Hangaro STR_ORDER_TRAIN_DEPOT :Trajngaraĝo STR_ORDER_ROAD_VEHICLE_DEPOT :Stratveturila garaĝo STR_ORDER_SHIP_DEPOT :Ŝipgaraĝo STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Transformu al {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Transformu al {STRING} kaj haltu) STR_ORDER_STOP_ORDER :(Haltu) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Aŭtomata) STR_ORDER_FULL_LOAD :(Plena Ŝarĝo) STR_ORDER_FULL_LOAD_ANY :(Ŝarĝu ĝis plena ajnan kargon) STR_ORDER_NO_LOAD :(Ne ŝarĝu) STR_ORDER_UNLOAD :(Malŝarĝu kaj prenu kargon) STR_ORDER_UNLOAD_FULL_LOAD :(Malŝarĝu kaj atendu plenan ŝarĝon) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Malŝarĝu kaj atendu ajnan plenan ŝarĝon) STR_ORDER_UNLOAD_NO_LOAD :(Malŝarĝu kaj foriru malplena) STR_ORDER_TRANSFER :(Transigu kaj prenu kargon) STR_ORDER_TRANSFER_FULL_LOAD :(Transigu kaj atendu plenan ŝarĝon) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transigu kaj atendu ajnan plenan ŝarĝon) STR_ORDER_TRANSFER_NO_LOAD :(Transigu kaj foriru malplena) STR_ORDER_NO_UNLOAD :(Ne malŝarĝu kaj prenu kargon) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ne malŝarĝu kaj atendu plenan ŝarĝon) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ne malŝarĝu kaj atendu ajnan plenan ŝarĝon) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ne malŝarĝu kaj ne ŝarĝu) STR_ORDER_AUTO_REFIT :(Aŭtotransformi al {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Plena ŝarĝo kun aŭtotransformi al {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Plena ŝarĝo ciu tipo kun aŭtotransformi al {STRING}) STR_ORDER_UNLOAD_REFIT :(Malŝarĝi kaj preni ŝarĝojn kun aŭtotransformi al {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Malŝarĝi kaj atendi por la plena ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Malŝarĝi kaj atendi por ĉiu plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_TRANSFER_REFIT :(Transigi kaj preni ŝarĝojn kun aŭtotransformi al {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transigi kaj atendi por la plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transigi kaj atendi por ĉiu plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Ne malŝarĝi kaj preni ŝarĝojn kun aŭtotransformi al {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ne malŝarĝi kaj atendi por la plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne malŝarĝi kaj atendi por ĉiu plenan ŝarĝon kun aŭtotransformi al {STRING}) STR_ORDER_AUTO_REFIT_ANY :haveblaj ŝarĝoj STR_ORDER_STOP_LOCATION_NEAR_END :[near end] STR_ORDER_STOP_LOCATION_MIDDLE :[middle] STR_ORDER_STOP_LOCATION_FAR_END :[far end] STR_ORDER_CONDITIONAL_UNCONDITIONAL :Saltu al ordono {COMMA} STR_ORDER_CONDITIONAL_NUM :Saltu al ordono {COMMA} kiam {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Saltu al ordonu {COMMA} kiam {STRING} {STRING} STR_INVALID_ORDER :{RED} (Nevalida Ordono) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Horaro) STR_TIMETABLE_ORDER_VIEW :{BLACK}Ordonoj STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Montri ordonvidujon. STR_TIMETABLE_TOOLTIP :{BLACK}Horaro - klaku ordonon por emfazi. STR_TIMETABLE_NO_TRAVEL :Neniu veturo STR_TIMETABLE_NOT_TIMETABLEABLE :Veturu (aŭtomata; horara ĝis sekvanta mana ordono) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Veturo (ne horarita) STR_TIMETABLE_TRAVEL_FOR :Veturu por {STRING} STR_TIMETABLE_STAY_FOR :kaj restu por {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :kaj veturu por {STRING} STR_TIMETABLE_DAYS :{COMMA} tago{P "" j} STR_TIMETABLE_TICKS :{COMMA} tiko{P "" j} STR_TIMETABLE_TOTAL_TIME :{BLACK} {STRING} necesas por plenumigi ĉi tiun horaron. STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ĉi tio horaro postulos alemnaŭ {STRING} plenigi (ne ĉiu horarita) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ĉi tiu veturilo nun iras akurate STR_TIMETABLE_STATUS_LATE :{BLACK}Ĉi tiu veturilo nun malfruas je {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Ĉi tiu veturilo nun fruas je {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ĉi tiu horaro ankoraŭ ne komenciĝas. STR_TIMETABLE_STATUS_START_AT :{BLACK}Ĉi tiu horaro komenciĝos je {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Komencodato STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Elekti daton por komenci ĉi tiun horaron. STR_TIMETABLE_CHANGE_TIME :{BLACK}Ŝanĝu tempon STR_TIMETABLE_CLEAR_TIME :{BLACK}Vakigi tempon STR_TIMETABLE_RESET_LATENESS :{BLACK}Reigu malfruan kalkulumon STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reigu malfruan kalkulumon, tiel la veturilon estos akuratan STR_TIMETABLE_AUTOFILL :{BLACK}Aŭtomata plenigo STR_TIMETABLE_EXPECTED :{BLACK}Atendite STR_TIMETABLE_SCHEDULED :{BLACK}Planite STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ŝalti inter atendite kaj planite STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Agordi daton STR_DATE_SET_DATE :{BLACK}Agordi daton STR_DATE_SET_DATE_TOOLTIP :{BLACK}Uzu la elektan daton kiel la komencia dato por la katalogo STR_DATE_DAY_TOOLTIP :{BLACK}Elekti tagon STR_DATE_MONTH_TOOLTIP :{BLACK}Elekti monaton STR_DATE_YEAR_TOOLTIP :{BLACK}Elekti jaron # AI debug window STR_AI_DEBUG :{WHITE}AI/Ludo Skripto Sencimigo STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nomo de la skripto STR_AI_DEBUG_SETTINGS :{BLACK}Agordoj STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Ŝanĝi agordojn de la skripto STR_AI_DEBUG_RELOAD :{BLACK}Reŝarĝi AI-on STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Mortigi la AI-on, reŝarĝi la skripton, kaj restarti la AI-on STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Rompu sur: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Rompu sur STR_AI_DEBUG_MATCH_CASE :{BLACK}Parigu kazon STR_AI_DEBUG_CONTINUE :{BLACK}Daŭrigu STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Malpaŭzu kaj daŭrigi la AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vidu forigeraran eligon de ĉiu tio AI # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/Ludo Skripto Agordo STR_AI_CONFIG_HUMAN_PLAYER :Homa ludanto STR_AI_CONFIG_RANDOM_AI :Hazarda AI STR_AI_CONFIG_MOVE_UP :{BLACK}Movi supren STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Movi elektitan AI-on supren en la listo STR_AI_CONFIG_MOVE_DOWN :{BLACK}Movi suben STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Movi elektitan AI-on suben en la listo STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CONFIGURE :{BLACK}Agordi STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Agordi parametroj de la skripto # Available AIs window STR_AI_LIST_TOOLTIP :{BLACK}Klaki por elekti skripto STR_AI_LIST_AUTHOR :{LTBLUE}Aŭtoro: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versio: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Akcepti STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Elekti emfazita skripto STR_AI_LIST_CANCEL :{BLACK}Nuligi STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ne ŝanĝu AI-on # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametroj STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CLOSE :{BLACK}Fermi STR_AI_SETTINGS_RESET :{BLACK}Reŝargo STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} legumin de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING}-a ŝanĝarĥivo de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}-a licenco de {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Vidi legumin STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ŝanĝarĥivo STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenco # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kosto: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kosto: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Enspezo: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Enspezo: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transigo: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transigo: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Atendata Kosto: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Atendata enspezo: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ankoraŭ konservas,{}bv atendi ĝis finiĝo! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fiaskis aŭtomate konservi STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ne eblas legi diskon STR_ERROR_GAME_SAVE_FAILED :{WHITE}Ludkonservado Fiaskis{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ne eblas forviŝi dosieron STR_ERROR_GAME_LOAD_FAILED :{WHITE}Ludŝarĝado Fiaskis{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna eraro: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Rompa konservludo - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Konservludo estas fari kun pli novan version STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Ne legebla dosiero STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Ne enskribebla dosiero STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Datena rekteco kontrolo fiaskis STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Ludon estis konservinta en versio sen subteno por tramveturilo. Ĉiujn tramveturilojn estas formovita. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Mapkreado haltita...{}... mankas taŭgaj urbejoj STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... mankas urboj en ĉi tiu scenaro STR_ERROR_PNGMAP :{WHITE}Ne povas ŝarĝi landaspekton de PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... dosiero ne troviĝis. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... ne povis transformi bildtipon. Necesas 8-bita aŭ 24-bita PNG-bildo. STR_ERROR_PNGMAP_MISC :{WHITE}... io simple fiaskis. Pardonu. (probable aĉa dosiero) STR_ERROR_BMPMAP :{WHITE}Ne povas ŝarĝi landaspekton el BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... ne povis transigi bildotipon. STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... bildo estas tro granda STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skala averto STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ne rekomendindas tro ŝanĝi la grandecon de la mapo. Ĉu daŭrigi la generadon? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Sola bakupa sona aro estis trovata. Se vi bezonas sonojn, instalu sonan aron per la enhava elŝulta sistemo # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Grandega ekranfoto STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Ekranfoto sukcese konserviĝis kiel '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ekranfoto fiaskis! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Mesaĝo STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mesaĝo de {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}For de la mapo STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Tro proksime al la mapa rando STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Ne sufiĉe da mono - vi bezonas {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Necesas ebena lando STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Lando ne ĝuste kliniĝas STR_ERROR_CAN_T_DO_THIS :{WHITE}Ne povas fari... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Antaŭe devas la konstruaĵo esti detruita STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Ne povas malplenigi la regionon... STR_ERROR_SITE_UNSUITABLE :{WHITE}... netaŭga loko STR_ERROR_ALREADY_BUILT :{WHITE}... jam konstruita STR_ERROR_OWNED_BY :{WHITE}... posedata de {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... regiono estas posedata de alia kompanio STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... landaspektan limigon plenumis STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... kahelan forigantan limigon plenumis STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... arbo planti limo atingita STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nomo devas esti ununura STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} okupas la lokon STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ne permesa dum paŭzo # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}La loka estraro de {TOWN} rifuzas permesi ĉi tion STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}La lokaj estroj de {TOWN} rifuzas permesi konstruadon de plia flughaveno ĉi-urbe STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} lokestro ne permesas aerohavenon kaŭze de brugravecoj STR_ERROR_BRIBE_FAILED :{WHITE}Via provita subaĉeto estis malkovrita de regiona esploristo # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Ne povas altigi landon ĉi tie... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Ne povas malaltigi landon ĉi tie... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Ne povas ebenigi terenon ĉi tie... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Elkavigo damaĝus tunelon STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Jam marnivele STR_ERROR_TOO_HIGH :{WHITE}Tro alte STR_ERROR_ALREADY_LEVELLED :{WHITE}... jam plata # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ne povas ŝanĝi kompaninomon... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Ne povas ŝanĝi manaĝantnomon... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maksimuma permesata prunto estas {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Ne povas prunti pli da mono... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ne estas repagebla prunto STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} necesas STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Ne povas repagi prunton... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Ne povas donaci monon pruntitan de la banko... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Ne povas aĉeti kompanion... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Ne povas konstrui kompanian ĉefkonstruaĵon... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Ne povas aĉeti 25%-an dividaĵon... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Ne povas vendi 25%-an dividaĵon... STR_ERROR_PROTECTED :{WHITE}Ĉi tiu kompanio ne sufiĉe aĝas por jam komerci dividaĵojn... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Ne povas konstrui ajnan urbon STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Ne povas alinomi urbon... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Ne povas fari urbon ĉi tie... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Ne povas etendi urbon... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... tro proksime al la maprando STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... tro proksime al alia urbo STR_ERROR_TOO_MANY_TOWNS :{WHITE}... tro da urboj STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... spaco mankas sur la mapo STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}La urbo ne konstruos stratojn. Vi povas ebligi stratkonstruadon per Avancitaj Agordoj->Ekonomio->Urboj. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Aktivas vojprilaborado STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Ne povas forviŝi ĉi tiun urbon...{}Stacidomo aŭ tenejo rilatas al la urbon aŭ urban kahelon ne povas forviŝigi STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... ne jen estas konvenan lokon por statuo en la centro de ĉi tiu urbo # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... tro da industrioj STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ne povas generi industriojn... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Ne povas konstrui {STRING.n} ĉi tie... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Industritipo ne konstrueblas ĉi tie... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... tro proksime al alia industrio STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... antaŭe konstruu urbon STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... nur unu permesata en ĉiu urbo STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... nur konstruebla en urboj havantaj pli ol 1200 enloĝantojn STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... nur konstruebla en praarbaraj regionoj STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... konstruebla nur en dezertaj regionoj STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... konstruebla nur en urboj (anstataŭante domoj) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... konstruebla nur proksime la centro de urboj STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... konstruebla nur en malaltaj regionoj STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... lokebla nur ĉe la randoj de la mapo STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... arbaro nur planteblas super neĝa limlinio STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... nur konstruebla super la neĝlinio STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... nur konstruebla sub la neĝlinio # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ne povas konstrui stacidomon ĉi tie... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Ne povas konstrui bushaltejon... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Ne povas konstrui ŝarĝstacion... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Ne povas konstrui pasaĝerotramstacion... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Ne povas konstrui frajttramstacion... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Ne povas konstrui havenon ĉi tie... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Ne povas konstrui flughavenon ĉi tie... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Alligas pli ol unu ekzistantan stacion/ŝarĝejon STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stacio tro vastas STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Tro da stacioj/ŝarĝejoj STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Tro da partoj de stacidomo STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Tro da bushaltejoj STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Tro da ŝarĝaŭtaj stacioj STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Tro proksime al alia stacioj/ŝarĝejoj STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Tro proksime al alia haveno STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Tro proksime al alia flughaveno STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Ne povas alinomi stacion... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ĉi tiun straton posedas la urbo STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... strato direktiĝas malĝuste STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... traveturaj haltejoj ne povas havi anguloj STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... traveturaj haltejoj ne povas havi kuniĝoj # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Ne povas forigi stacidomeron... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Antaŭe devas la fervojostacio esti forigita STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Ne povas forigi bushaltejon... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Ne povas forigi ŝarĝstacion... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Ne povas forigi pasaĝerotramstacion... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Ne povas forigi frajttramstacion... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Antaŭe forigu haltejon STR_ERROR_THERE_IS_NO_STATION :{WHITE}... ne jen estas stacidomo ĉi tie STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Antaŭe devas la fervojostacio esti detruita STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Antaŭe devas la bushaltejo esti detruita STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Antaŭe devas la kamionstacio esti detruita STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Antaŭe devas la pasaĝerotramstacio esti detruita STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Antaŭe devas la frajttramstacio esti detruita STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Antaŭe devas la doko esti detruita STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Antaŭe devas la flughaveno esti detruita # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Apudas pli ol unu ekzistanta vojpunkto. STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Tro proksime al alia vojpunkto. STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Ne povas konstrui trajnan vojpunkton ĉi tie... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Ne povas meti buon ĉi tie... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Ne povas ŝanĝi vojpunktan nomon... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Ne povas forigi trajnan vojpunkton ĉi tie... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Antaŭe devas forigi fervojan vojpunkton STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... buo okupas la lokon STR_ERROR_BUOY_IS_IN_USE :{WHITE}... buo estas uzata je alia kompanio! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Ne povas konstrui trajngaraĝon ĉi tie... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Ne povas konstrui stratveturilan garaĝon ĉi tie... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Ne povas konstrui tramgaraĝon ĉi tie... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Ne povas konstrui ŝipgaraĝon ĉi tie... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Ne povas alinomi tenejon... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... estu haltita en tenejo STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... devas esti halta en stratveturila garaĝo STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... devas halti en garaĝo STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... devas esti haltigata en la hangaro STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Trajnoj povas esti ŝanĝitaj nur dum halto en garaĝo STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trajno tro longas STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Ne povas inversigi direkton de veturilo... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... konsistantaj el pluraj unuoj STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Neinterŝanĝeblaj reltipoj STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Ne povas movi veturilon STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}La malantaŭa maŝino ĉiam sekvos la antaŭan STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ne povas trovi straton al loka garaĝo STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ne povas trovi lokan garaĝon STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Malĝusta garaĝtipo # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} tro longas post anstataŭado STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Neniuj aŭtoanstataŭo/renovigo reguloj aplikitaj. STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(monlimo) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Neebla trakkombino STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Unue vi devas forviŝi la signalilojn. STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nekonvena fervojtrako STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Antaŭe devas la trako esti detruita STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Strato estas unudirekta aŭ blokita STR_ERROR_CROSSING_DISALLOWED :{WHITE}Traknivelaj pasejoj ne permesa por ĉi tio fervojtipo STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Ne povas konstrui signalojn ĉi tie... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Ne povas konstrui trakon ĉi tie... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Ne povas forigi trakon de ĉi tie... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Ne povas forigi signalojn de ĉi tie... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Ne povas konverti signalojn de ĉi tie... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... ne jen estas fervojtrako STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... ne jen estas signaloj STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Ne povas transigi reltipon ĉi tie... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Antaŭe forigu straton STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... unudirektaj stratoj ne povas havi kuniĝoj STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Ne povas konstrui stratojn ĉi tie... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Ne povas konstrui tramvojon ĉi tie... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Ne povas forigi straton de ĉi tie... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Ne povas forigi tramvojon de ĉi tie... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... ne jen estas strato STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... ne jen estas tramvojo # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Ne povas konstrui kanalojn ĉi tie... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ne povas konstrui kluzojn ĉi tie... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ne povas meti riverojn ĉi tien... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... devas esti konstruata sur akvo STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... ne povas konstrui sur akvo STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... ne povas konstrui en malplena maro STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... ne povas konstrui sur kanalo STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ne povas konstrui sur rivero STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Antaŭe devas la kanalo esti detruita STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ne povas konstrui akvedukton ĉi tie... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... jam estas arbo ĉi tie STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... malprava tereno por tipo de arbo STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Ne povas planti arbon ĉi tie... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Ne povas konstrui ponton ĉi tie... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Antaŭe devas la ponto esti detruita STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ne povas komenci kaj fini en la sama loko STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Finoj de ponto ne estas je la sama nivelo STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Ponto estas tro malalta por la tereno STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Komenco kaj fino devas esti samliniaj STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambaŭ pontfinoj devas esti sur tero STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponto estas tro longa STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Ponto estus finata ekster de la mapo # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Ne povas konstrui tunelon ĉi tie... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Nekonvena loko por tunelkomenco STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Antaŭe devas la tunelo esti detruita STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Alia tunelo okupas la lokon STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunelo finiĝus ekster la mapo STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Ne eblas liberigi la landon aliflanke de la tunelo STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunelo tro longa # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... tro da objektoj STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Ne povas konstrui objekton... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objekto okupas la lokon STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... kompania ĉefkonstruaĵo okupas la lokon STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Ne povas aĉeti ĉi tiun regionon... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... vi jam posedas ĝin! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Ne eblas krei grupon... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Ne eblas viŝi grupon... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Ne povas alinomi grupon... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ne povas depreni ĉiujn veturilojn de tiu ĉi grupo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ne povas aldoni la veturilon al tiu ĉi grupo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ne povas aldoni kunhavajn veturilojn al grupo... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Trajno okupas la lokon STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Stratveturilo okupas la lokon STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Ŝipo okupas la lokon STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aviadilo okupas la lokon STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Ne povas transformi la trajnon... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Ne povas transformi stratveturilon... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Ne povas transformi ŝipon... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Ne povas reformi aviadilon... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Ne povas nomi trajnon... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Ne povas nomi stratveturilon... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Ne povas nomi ŝipon... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Ne povas nomi aviadilon... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Ne povas haltigi/starti trajnon... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Ne povas haltigi/starti stratveturilon... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Ne povas haltigi/starti ŝipon... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Ne povas haltigi/starti aviadilon... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Ne povas sendi trajnon al garaĝo... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Ne povas sendi veturilon al garaĝo... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Ne povas sendi ŝipon al garaĝo... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Ne povas sendi aviadilon al hangaro... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Ne povas aĉeti relveturilon... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Ne povas aĉeti stratveturilon... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Ne povas aĉeti ŝipon... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Ne povas aĉeti aviadilon... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Ne povas alinomi trajnan veturiltipon... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Ne povas alinomi stratveturilan tipon... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ne povas alinomi ŝiptipon... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ne povas alinomi aviadiltipon... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Ne povas vendi relan veturilon... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ne povas vendi stratveturilon... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Ne povas vendi ŝipon... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ne povas vendi aviadilon... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Trajno ne haveblas STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Veturilo ne haveblas STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Ŝipo ne haveblas STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aviadilo ne haveblas STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro da veturiloj en la ludo STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ne povas ŝanĝi prizorgintervalon... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... veturilo estas detrua # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ne povas igi trajnon transiri signalon je danĝero... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ne povas inversigi direkton de trajno... STR_ERROR_TRAIN_START_NO_POWER :Vagonara ne havas forton STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Ne povas turnigi stratveturilon... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aviadilo flugas # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ordonspaco estas elĉerpita. STR_ERROR_TOO_MANY_ORDERS :{WHITE}Tro da ordonoj STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Ne povas enigi novan ordonon... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Ne povas forviŝi ĉi tiun ordonon... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ne povas ŝanĝi ĉi tiun ordonon... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Ne povas movi ĉi tiun ordonon... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Ne povas salti al la aktuala ordon... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Ne povas salti al la elektita ordon... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... veturilo ne povas iri al ĉiuj stacioj STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... veturilo ne povas iri al tiu stacio STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... veturilo kunhavanta ĉi tiun ordonon ne povas iri al tiu stacio STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Ne povas kunhavigi ordonliston... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Ne povas halti kunhavante ordonan registron... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Ne povas kopii ordonliston... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... tro for de la antaŭa destino STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... aviadilon ne havas sufiĉe da atingopovo # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Ne povas fari katalogon por veturilo... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Veturiloj povas atendi nur ĉe stacioj. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ĉi tiu veturilo ne haltos ĉe tiu ĉi stacio. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... tro da afiŝoj STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Ne povas meti signon ĉi tie... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Ne povas ŝanĝi afiŝan nomon... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ne eblas forigi signon... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Al simulado ludo bazita sur Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Vasta oficejaro STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Oficejaro STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Malgranda domturaro STR_TOWN_BUILDING_NAME_CHURCH_1 :Preĝejo STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Granda oficejaro STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Urbaj domoj STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotelo STR_TOWN_BUILDING_NAME_STATUE_1 :Statuo STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontano STR_TOWN_BUILDING_NAME_PARK_1 :Parko STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Oficejaro STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Butikoj kaj oficejoj STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderna oficeja konstruaĵo STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Varvendejo STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Oficejaro STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadiono STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Antikvaj domoj STR_TOWN_BUILDING_NAME_COTTAGES_1 :Plezurdomoj STR_TOWN_BUILDING_NAME_HOUSES_1 :Domoj STR_TOWN_BUILDING_NAME_FLATS_1 :Domturoj STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Vasta oficejaro STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Butikoj kaj oficejoj STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Butikoj kaj oficejoj STR_TOWN_BUILDING_NAME_THEATER_1 :Teatro STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadiono STR_TOWN_BUILDING_NAME_OFFICES_1 :Oficejoj STR_TOWN_BUILDING_NAME_HOUSES_2 :Domoj STR_TOWN_BUILDING_NAME_CINEMA_1 :Kinejo STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Butikaro STR_TOWN_BUILDING_NAME_IGLOO_1 :Igluo STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipioj STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Tekruĉa Domo STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Porko-Banko ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Karbminejo STR_INDUSTRY_NAME_POWER_STATION :Elektrejo STR_INDUSTRY_NAME_SAWMILL :Segejo STR_INDUSTRY_NAME_FOREST :Arbaro STR_INDUSTRY_NAME_OIL_REFINERY :Oleproduktejo STR_INDUSTRY_NAME_OIL_RIG :Oleplatformo STR_INDUSTRY_NAME_FACTORY :Farejo STR_INDUSTRY_NAME_PRINTING_WORKS :Printejo STR_INDUSTRY_NAME_STEEL_MILL :Ŝtalejo STR_INDUSTRY_NAME_FARM :Farmbieno STR_INDUSTRY_NAME_COPPER_ORE_MINE :Kuproercminejo STR_INDUSTRY_NAME_OIL_WELLS :Olefonto STR_INDUSTRY_NAME_BANK :Banko STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Manĝaĵfarejo STR_INDUSTRY_NAME_PAPER_MILL :Paperejo STR_INDUSTRY_NAME_GOLD_MINE :Orminejo STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banko STR_INDUSTRY_NAME_DIAMOND_MINE :Diamantminejo STR_INDUSTRY_NAME_IRON_ORE_MINE :Ferercminejo STR_INDUSTRY_NAME_FRUIT_PLANTATION :Fruktkulturejo STR_INDUSTRY_NAME_RUBBER_PLANTATION :Kaŭĉukkulturejo STR_INDUSTRY_NAME_WATER_SUPPLY :Akvofonto STR_INDUSTRY_NAME_WATER_TOWER :Akvoturo STR_INDUSTRY_NAME_FACTORY_2 :Farejo STR_INDUSTRY_NAME_FARM_2 :Farmbieno STR_INDUSTRY_NAME_LUMBER_MILL :Lignejo STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Sukerŝpinaĵaro STR_INDUSTRY_NAME_CANDY_FACTORY :Dolĉaĵfarejo STR_INDUSTRY_NAME_BATTERY_FARM :Bateribieno STR_INDUSTRY_NAME_COLA_WELLS :Kolafonto STR_INDUSTRY_NAME_TOY_SHOP :Ludilvendejo STR_INDUSTRY_NAME_TOY_FACTORY :Ludilfarejo STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastikfontanaro STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Farejo de Amuzaj Trinkaĵoj STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Vezikgenerilo STR_INDUSTRY_NAME_TOFFEE_QUARRY :Tofeminejo STR_INDUSTRY_NAME_SUGAR_MINE :Sukerminejo ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Sennoma STR_SV_TRAIN_NAME :Trajno {COMMA} STR_SV_ROAD_VEHICLE_NAME :Stratveturilo {COMMA} STR_SV_SHIP_NAME :Ŝipo {COMMA} STR_SV_AIRCRAFT_NAME :Aviadilo {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :Norda {STRING} STR_SV_STNAME_SOUTH :Suda {STRING} STR_SV_STNAME_EAST :Orienta {STRING} STR_SV_STNAME_WEST :Okcidenta {STRING} STR_SV_STNAME_CENTRAL :Centra {STRING} STR_SV_STNAME_TRANSFER :Transiga {STRING} STR_SV_STNAME_HALT :Halteja {STRING} STR_SV_STNAME_VALLEY :Valo de {STRING} STR_SV_STNAME_HEIGHTS :Alta {STRING} STR_SV_STNAME_WOODS :{STRING} Arbaro STR_SV_STNAME_LAKESIDE :Lago ĉe {STRING} STR_SV_STNAME_EXCHANGE :Interŝanĝa {STRING} STR_SV_STNAME_AIRPORT :Flughaveno de {STRING} STR_SV_STNAME_OILFIELD :Olefonto de {STRING} STR_SV_STNAME_MINES :Minejo de {STRING} STR_SV_STNAME_DOCKS :Haveno de {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Ekstera {STRING} STR_SV_STNAME_SIDINGS :Flanka {STRING} STR_SV_STNAME_BRANCH :Branĉa {STRING} STR_SV_STNAME_UPPER :Supra {STRING} STR_SV_STNAME_LOWER :Malsupra {STRING} STR_SV_STNAME_HELIPORT :{STRING} Helikopterejo STR_SV_STNAME_FOREST :Arbaro de {STRING} STR_SV_STNAME_FALLBACK :{STRING} Stacio #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vaporo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vaporo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Vaporo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Vaporo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Vaporo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Dizelo) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektro) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Pasaĝervagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Poŝtvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Karbvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Olevagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Brutvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Varvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Grenvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Lignovagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Ferercavagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Ŝtalvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Kirasa Vagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Manĝaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papervagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kuproercvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Akvovagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruktvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Kaŭĉukvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sukervagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Sukerŝpinaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Tofevagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Vezikvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Kolavagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Dolĉaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Ludilvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Baterivagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Amuztrinkaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastikvagono STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Pasaĝervagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Poŝtvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Karbvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olevagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Brutvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Varvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Grenvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Lignovagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Ferercvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Ŝtalvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Kirasa Vagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Manĝaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papervagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kuproercvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Akvovagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruktvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Kaŭĉukvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sukervagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Sukerŝpinaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Tofevagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Vezikvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Kolavagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Dolĉaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Ludilvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Baterivagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Amuztrinkaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastikvagono STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Levjatano' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Ciklopo' (Eletro) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasuso' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Ĥimero' (Elektro) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Pasaĝervagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Poŝtvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Karbvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olevagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Brutvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Varvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Grenvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Lignovagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Ferercvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Ŝtalvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Kirasa Vagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Manĝaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papervagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kuproercvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Akvovagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruktvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Kaŭĉukvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sukervagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Sukerŝpinaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Tofevagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Vezikvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Kolavagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Dolĉaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Ludilvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Baterivagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Amuztrinkaĵvagono STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikvagono STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Buso "MPS Regal" STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Buso "Hereford Leopard" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Buso "Foster" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Buso "Foster MkII Superbus" STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Buso "Ploddyphut MkI" STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Buso "Ploddyphut MkII" STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Buso "Ploddyphut MkIII" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Karba ŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Karba ŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Karba ŝarĝaŭto "DW" STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Poŝtaŭto "MPS" STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Poŝtaŭto "Reynard" STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Poŝtaŭto "Perry" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Poŝtaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Poŝtaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Poŝtaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Oleŝarĝaŭto "Witcombe" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Oleŝarĝaŭto "Foster" STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Oleŝarĝaŭto "Perry" STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Brutŝarĝaŭto "Talbott" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Brutŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Brutŝarĝaŭto "Foster" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Varŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Varŝarĝaŭto "Craighead" STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Varŝarĝaŭto "Goss" STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Grenŝarĝaŭto "Hereford" STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Grenŝarĝaŭto "Thomas" STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Grenŝarĝaŭto "Goss" STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Lignoŝarĝaŭto "Witcombe" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Lignoŝarĝaŭto "Foster" STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Lignoŝarĝaŭto "Moreland" STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Ferercŝarĝaŭto "MPS" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Ferercŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Ferercŝarĝaŭto "Chippy" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Ŝtalŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Ŝtalŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Ŝtalŝarĝaŭto "Kelling" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Kirasa Ŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Kirasa Ŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Kirasa Ŝarĝaŭto "Foster" STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Manĝaĵŝarĝaŭto "Foster" STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Manĝaĵŝarĝaŭto "Perry" STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Manĝaĵŝarĝaŭto "Chippy" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Paperŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Paperŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Paperŝarĝaŭto "MPS" STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Kuproercŝarĝaŭto "MPS" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Kuproercŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Kuproercŝarĝaŭto "Goss" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Akvoŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Akvoŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Akvoŝarĝaŭto "MPS" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Fruktŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Fruktŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Fruktŝarĝaŭto "Kelling" STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Kaŭĉukŝarĝaŭto "Balogh" STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Kaŭĉukŝarĝaŭto "Uhl" STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Kaŭĉukŝarĝaŭto "RMT" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Sukerŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Sukerŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Sukerŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Kolaŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Kolaŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Kolaŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Sukerŝpinaĵŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Sukerŝpinaĵŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Sukerŝpinaĵŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Tofeŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Tofeŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Tofeŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Ludilŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Ludilŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Ludilŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Dolĉaĵŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Dolĉaĵŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Dolĉaĵŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Bateriŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Bateriŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Bateriŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Amuztrinkaĵŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Amuztrinkaĵŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Amuztrinkaĵŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Plastikŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Plastikŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Plastikŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Vezikŝarĝaŭto "MightyMover" STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Vezikŝarĝaŭto "Powernaught" STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Vezikŝarĝaŭto "Wizzowow" STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Oleŝipo "MPS" STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Oleŝipo "CS-Inc." STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Pasaĝerŝipo "MPS" STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Pasaĝerŝipo "FFP" STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Aeroglita "Bakewell 300" STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Pasaĝerŝipo "Chugger-Chug" STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Pasaĝerŝipo "Shivershake" STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Ŝarĝŝipo "Yate" STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Ŝarĝŝipo "Bakewell" STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Ŝarĝŝipo "MightyMover" STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Ŝarĝŝipo "Powernaut" STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Helikoptero "Tricario" STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Helikoptero "Guru X2" STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helikoptero "Powernaut" ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Buo STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Buo #{COMMA} STR_FORMAT_COMPANY_NUM :(Kompanio {COMMA}) STR_FORMAT_GROUP_NAME :Group {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Vojpunkto {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Vojpunkto {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Vagonara Tenejo STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Vagonara Tenejo #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Stratveturila Tenejo STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Stratveturila Tenejo #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Ŝipa Tenejo STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Ŝipa Tenejo #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangaro STR_UNKNOWN_STATION :nekonata stacio STR_DEFAULT_SIGN_NAME :Signo STR_COMPANY_SOMEONE :iu STR_SAVEGAME_NAME_DEFAULT :{COMPANY} je {STRING} STR_SAVEGAME_NAME_SPECTATOR :Spektanto, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/faroese.txt0000644000000000000000000134156512246102561015604 0ustar rootroot##name Faroese ##ownname Føroyskt ##isocode fo_FO ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0438 ##grflangid 0x12 ##gender m f n # $Id: faroese.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(undefined string) STR_JUST_NOTHING :Einki # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :{G=n}Ferðafólk STR_CARGO_PLURAL_COAL :{G=n}Kol STR_CARGO_PLURAL_MAIL :{G=m}Postur STR_CARGO_PLURAL_OIL :{G=f}Olja STR_CARGO_PLURAL_LIVESTOCK :Kríatúr STR_CARGO_PLURAL_GOODS :{G=n}Góðs STR_CARGO_PLURAL_GRAIN :{G=n}Korn STR_CARGO_PLURAL_WOOD :{G=m}Timbur STR_CARGO_PLURAL_IRON_ORE :{G=m}Jarn Málmur STR_CARGO_PLURAL_STEEL :{G=n}Stál STR_CARGO_PLURAL_VALUABLES :{G=m}Virðislutir STR_CARGO_PLURAL_COPPER_ORE :{G=m}Kopar Málmur STR_CARGO_PLURAL_MAIZE :{G=n}Meis STR_CARGO_PLURAL_FRUIT :{G=f}Fruktir STR_CARGO_PLURAL_DIAMONDS :{G=m}Diamantar STR_CARGO_PLURAL_FOOD :{G=m}Matur STR_CARGO_PLURAL_PAPER :{G=n}Pappír STR_CARGO_PLURAL_GOLD :{G=n}Gull STR_CARGO_PLURAL_WATER :{G=n}Vatn STR_CARGO_PLURAL_WHEAT :{G=n}Hveiti STR_CARGO_PLURAL_RUBBER :{G=n}Gummi STR_CARGO_PLURAL_SUGAR :{G=n}Sukur STR_CARGO_PLURAL_TOYS :{G=n}Leikutoy STR_CARGO_PLURAL_CANDY :{G=n}Góðgæti STR_CARGO_PLURAL_COLA :{G=n}Kola STR_CARGO_PLURAL_COTTON_CANDY :{G=n}Kandifloss STR_CARGO_PLURAL_BUBBLES :{G=f}Sápiblørir STR_CARGO_PLURAL_TOFFEE :{G=n}Toffee STR_CARGO_PLURAL_BATTERIES :{G=n}Battarí STR_CARGO_PLURAL_PLASTIC :{G=n}Plastikk STR_CARGO_PLURAL_FIZZY_DRINKS :{G=n}Sodavatn # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :{G=n}Ferðafólk STR_CARGO_SINGULAR_COAL :{G=n}Kol STR_CARGO_SINGULAR_MAIL :{G=m}Postur STR_CARGO_SINGULAR_OIL :{G=f}Olja STR_CARGO_SINGULAR_LIVESTOCK :{G=n}Kríatúr STR_CARGO_SINGULAR_GOODS :{G=n}Góðs STR_CARGO_SINGULAR_GRAIN :{G=n}Korn STR_CARGO_SINGULAR_WOOD :{G=m}Timbur STR_CARGO_SINGULAR_IRON_ORE :{G=m}Jarn Málm STR_CARGO_SINGULAR_STEEL :{G=n}Stál STR_CARGO_SINGULAR_VALUABLES :{G=m}Viðrislutur STR_CARGO_SINGULAR_COPPER_ORE :{G=m}Kopar Málm STR_CARGO_SINGULAR_MAIZE :{G=n}Meis STR_CARGO_SINGULAR_FRUIT :{G=f}Frukt STR_CARGO_SINGULAR_DIAMOND :{G=m}Diamantur STR_CARGO_SINGULAR_FOOD :{G=m}Matur STR_CARGO_SINGULAR_PAPER :{G=n}Pappír STR_CARGO_SINGULAR_GOLD :{G=n}Gull STR_CARGO_SINGULAR_WATER :{G=n}Vatn STR_CARGO_SINGULAR_WHEAT :{G=n}Hveiti STR_CARGO_SINGULAR_RUBBER :{G=n}Gummi STR_CARGO_SINGULAR_SUGAR :{G=n}Sukur STR_CARGO_SINGULAR_TOY :{G=n}Leikutoy STR_CARGO_SINGULAR_CANDY :{G=n}Góðgæti STR_CARGO_SINGULAR_COLA :{G=n}Kola STR_CARGO_SINGULAR_COTTON_CANDY :{G=n}Kandifloss STR_CARGO_SINGULAR_BUBBLE :{G=f}Sápibløra STR_CARGO_SINGULAR_TOFFEE :{G=n}Toffee STR_CARGO_SINGULAR_BATTERY :{G=n}Battarí STR_CARGO_SINGULAR_PLASTIC :{G=n}Plastikk STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}Sodavatn # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{G=n}{COMMA} ferðafólk STR_QUANTITY_COAL :{WEIGHT_LONG} av kol STR_QUANTITY_MAIL :{COMMA} sekk{P "" ir} av posti STR_QUANTITY_OIL :{VOLUME_LONG} av olju STR_QUANTITY_LIVESTOCK :{COMMA} lut{P ur ir} av kríatúr STR_QUANTITY_GOODS :{COMMA} kassa{P "" r} av góðsi STR_QUANTITY_GRAIN :{WEIGHT_LONG} av korni STR_QUANTITY_WOOD :{WEIGHT_LONG} av timbur STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} av jarn málmi STR_QUANTITY_STEEL :{WEIGHT_LONG} av stáli STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" ir} av virðislutum STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} av kopar málmi STR_QUANTITY_MAIZE :{WEIGHT_LONG} av meis STR_QUANTITY_FRUIT :{WEIGHT_LONG} av frukt STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" ir} av diamantum STR_QUANTITY_FOOD :{WEIGHT_LONG} av mati STR_QUANTITY_PAPER :{WEIGHT_LONG} av pappíri STR_QUANTITY_GOLD :{COMMA} sekk{P "" ir} av gull STR_QUANTITY_WATER :{VOLUME_LONG} av vatni STR_QUANTITY_WHEAT :{WEIGHT_LONG} av hveiti STR_QUANTITY_RUBBER :{VOLUME_LONG} av gummi STR_QUANTITY_SUGAR :{WEIGHT_LONG} av sukri STR_QUANTITY_TOYS :{COMMA} leik{P a ur} STR_QUANTITY_SWEETS :{COMMA} sekk{P "" ir} av góðgæti STR_QUANTITY_COLA :{VOLUME_LONG} av kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} av kandifloss STR_QUANTITY_BUBBLES :{COMMA} sápiblør{P a ir} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} av róma STR_QUANTITY_BATTERIES :{COMMA} battarí{P y ies} STR_QUANTITY_PLASTIC :{VOLUME_LONG} av plastikk STR_QUANTITY_FIZZY_DRINKS :{COMMA} sodavatn STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}FF STR_ABBREV_COAL :{TINY_FONT}KL STR_ABBREV_MAIL :{TINY_FONT}PS STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}KÚ STR_ABBREV_GOODS :{TINY_FONT}GS STR_ABBREV_GRAIN :{TINY_FONT}KN STR_ABBREV_WOOD :{TINY_FONT}TM STR_ABBREV_IRON_ORE :{TINY_FONT}ML STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}KM STR_ABBREV_MAIZE :{TINY_FONT}MS STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}MT STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GL STR_ABBREV_WATER :{TINY_FONT}VN STR_ABBREV_WHEAT :{TINY_FONT}HV STR_ABBREV_RUBBER :{TINY_FONT}GM STR_ABBREV_SUGAR :{TINY_FONT}SK STR_ABBREV_TOYS :{TINY_FONT}LK STR_ABBREV_SWEETS :{TINY_FONT}SL STR_ABBREV_COLA :{TINY_FONT}KL STR_ABBREV_CANDYFLOSS :{TINY_FONT}KF STR_ABBREV_BUBBLES :{TINY_FONT}BL STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}SV STR_ABBREV_NONE :{TINY_FONT}EI STR_ABBREV_ALL :{TINY_FONT}ALT # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} ferðafólk STR_BAGS :{COMMA} sekk{P "" ir} STR_TONS :{COMMA} ton{P "" s} STR_LITERS :{COMMA} lit{P ur rar} STR_ITEMS :{COMMA} lut{P ur ir} STR_CRATES :{COMMA} kassa{P "" r} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Myrka Blátt STR_COLOUR_PALE_GREEN :Bleikt Grønt STR_COLOUR_PINK :Ljósareytt STR_COLOUR_YELLOW :Gult STR_COLOUR_RED :Reytt STR_COLOUR_LIGHT_BLUE :Ljósa Blátt STR_COLOUR_GREEN :Grønt STR_COLOUR_DARK_GREEN :Myrka Grønt STR_COLOUR_BLUE :Blátt STR_COLOUR_CREAM :Krem STR_COLOUR_MAUVE :Bláreytt STR_COLOUR_PURPLE :Lilla STR_COLOUR_ORANGE :Appelsingult STR_COLOUR_BROWN :Brúnt STR_COLOUR_GREY :Grátt STR_COLOUR_WHITE :Hvítt # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/t STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tons STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P ur rar} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtur strong: STR_LIST_FILTER_OSKTITLE :{BLACK}Skriva inn filtur strong STR_LIST_FILTER_TOOLTIP :{BLACK}Skriva inn lyklaorð til at filtreða listan eftur STR_TOOLTIP_SORT_ORDER :{BLACK}Vel raðfesting (lækkandi/hækkandi) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Set raðfestingar treytir STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Set filtrerings treytir STR_BUTTON_SORT_BY :{BLACK}Sortera eftur STR_BUTTON_LOCATION :{BLACK}Stað STR_BUTTON_RENAME :{BLACK}Endurdoyp STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lat glugga aftur STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Glugga heiti - drag her fyri at fyta glugga STR_TOOLTIP_SHADE :{BLACK}Skugga gluggi - vís einans heitis bjálkan STR_TOOLTIP_DEBUG :{BLACK}Vís NewGRF debug kunning STR_TOOLTIP_STICKY :{BLACK}Marka hetta vindeyga óafturlatiligt av 'Lat øll vindeygu aftur' knøttinum STR_TOOLTIP_RESIZE :{BLACK}Týst og drag fyri at broyta støddina á hesum glugganum STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift millum stóran/lítlan glugga STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skriðu bjálki - drag listan upp/niður STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Skriðu bjálki - drag listan til vinstru/høgru STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Ríva bygning niður etc. á einum fýrakanti av jørð. Ctrl velur økji á skrá. Shift skiftur millum at vísa Bygning og hvat tað kostar. # Query window STR_BUTTON_DEFAULT :{BLACK}Vanligt STR_BUTTON_CANCEL :{BLACK}Angra STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :½1234567890+´qwertyuiopåðasdfghjklæø'ZXCVBNM;:_ # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Longd: {NUM} STR_MEASURE_AREA :{BLACK}Øki: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longd: {NUM}{}Hæddar munur: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Øki: {NUM} x {NUM}{}Hæddar munur: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_NAME :{BLACK}Navn STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns STR_SORT_BY_NAME :Navni STR_SORT_BY_PRODUCTION :Framleiðslu STR_SORT_BY_TYPE :Slagi STR_SORT_BY_TRANSPORTED :Flutt STR_SORT_BY_NUMBER :Tali STR_SORT_BY_PROFIT_LAST_YEAR :Vinningi síðsta ár STR_SORT_BY_PROFIT_THIS_YEAR :Vinningi hetta ári STR_SORT_BY_AGE :Aldur STR_SORT_BY_RELIABILITY :Álítandi STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Fullfíggja pláss per farma slag STR_SORT_BY_MAX_SPEED :Hægstu fer STR_SORT_BY_MODEL :Modell STR_SORT_BY_VALUE :Virði STR_SORT_BY_LENGTH :Longd STR_SORT_BY_LIFE_TIME :Eftirverandi livitíð STR_SORT_BY_TIMETABLE_DELAY :Tíðarætlanar seinking STR_SORT_BY_FACILITY :Støð slagi STR_SORT_BY_WAITING :Virði á bíðjandi farmi STR_SORT_BY_RATING_MAX :Hægsta farma virðismeting STR_SORT_BY_RATING_MIN :Lægsta farma virðismeting STR_SORT_BY_ENGINE_ID :MaskinID (klassiskt svart) STR_SORT_BY_COST :Kostnaði STR_SORT_BY_POWER :Megi STR_SORT_BY_TRACTIVE_EFFORT :Dráttar ómak STR_SORT_BY_INTRO_DATE :Innleiðslu dato STR_SORT_BY_RUNNING_COST :Raktstrar kostnaði STR_SORT_BY_POWER_VS_RUNNING_COST :Megi/Rakstrar kostnaði STR_SORT_BY_CARGO_CAPACITY :Farma Pláss STR_SORT_BY_RANGE :Vídd # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Steðga spælinum STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Skunda undir spæli STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Møguleikar STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Goym spælið, far frá spælið, gevst STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vís kort, eyka glugga ella lista yvir skelti STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vís bygdar lista STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vís stuðulsflutning STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vís lista yvir støðir hjá fyritøkuni STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vís fíggjarligu støðuna hjá fyritøkuni STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vís støðuna hjá fyritøkuni STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vís grafar STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vís fyritøku deildar yvirlit STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fíggja bygging av nýggjum ídnaði ella vís lista yvir allan ídnað STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vís lista yvir tok hjá fyritøkuni. Ctrl+Klikk skiftur ímillum bólkur/akfar listan STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vis lista yvir akfør hjá fyritøkuni. Ctrl+Klikk skiftur ímillum bólkur/akfar listan STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vís lista yvir skip hjá fyritøkuni. Ctrl+Klikk skiftur ímillum bólk/akfar listan STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vís lista yvir flogfør hjá fyritøkuni. Ctrl+Click skiftur millum at lata upp bólka/akfars listan STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Forstørra mynduna in STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Minka vindeyga út STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bygg jarnbreyt STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Bygg vegir STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bygg havn STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bygg floghavnir STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Lat up landslags amboðskassan fyri at hækka/lækka land, planta trøð, osv. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vís ljóð/musik vindeyga STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vís sísta boð/nýggjheit frágreiðing, vís boð møguleikarnar STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landslags økis kunning, console, script debug, skermmyndir, um OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skift amboðslinju # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Goym tilburð, heinta tilburð, far frá tilburðs ritara, gevst STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Tilburðs ritil STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Flyt byrjunar dato 1 ár aftur STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Flyt byrjunar dato 1 ár fram STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Trýst her fyri at seta inn byrjunar dato STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vís kort, bygdar lista STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landslags framleiðsla STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bygda framleiðsla STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Ídnaðar framleiðsla STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vegagerð STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Planta trø. Shift skiftur millum at byggja/vísa kostnaðar meting STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Set tekin STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Legg lut. Shift skiftur millum at byggja/vísa kostnaðar meting ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Goym tilburð STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Heinta tilburð STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Goym hæddarkort STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Heinta hæddarkort STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Far frá tilburðs ritara STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Gevst ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spæl møguleikar STR_SETTINGS_MENU_CONFIG_SETTINGS :Víðkaðir innstillingar STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Spæl script innstillingar STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF innstillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gjøgnumskygnis møguleikar STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Bygdarnøvn víst STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Statión navn víst STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Waypoint nøvn víst STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tekin víst STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Kappingarneyta skelti og nøvn víst STR_SETTINGS_MENU_FULL_ANIMATION :Full animatión STR_SETTINGS_MENU_FULL_DETAIL :Allar smálutir STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gjøgnumskygdir bygningar STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gjøgnumskygd statións skelti ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Goym spæl STR_FILE_MENU_LOAD_GAME :Heinta spæl STR_FILE_MENU_QUIT_GAME :Far frá spæli STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Gevst ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Heimskort STR_MAP_MENU_EXTRA_VIEW_PORT :Eyka synisgluggi STR_MAP_MENU_SIGN_LIST :Listi yvur tekin ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Bygdar yvirlit STR_TOWN_MENU_FOUND_TOWN :Funnar bygdir ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Stuðulsflutningur STR_SUBSIDIES_MENU_GOAL :Núverðandi mál ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Grafur fyri rakstrar vinning STR_GRAPH_MENU_INCOME_GRAPH :Inntøku grafur STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Grafur fyri útflýggjaðan farm STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Grafur fyri avriks søgu STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Grafur fyri virði á fyritøku STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Farma gjald takstur ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Yvirlit fyri Fyritøku Deildina STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Avriks meting í smálutum STR_GRAPH_MENU_HIGHSCORE :Hástigs yvirlit ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Ídnaðar yvirlit STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Ídnaðar ketur STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fíggja nýggjan ídnað ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Jarnbreyta bygging STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Ravmagns jarnbreyta bygging STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Einsporað jarnbreyta bygging STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev bygging ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Vegagerð STR_ROAD_MENU_TRAM_CONSTRUCTION :Sporvega bygging ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Siglingarrennu bygging ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Floghavns bygging ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Landslags broyting STR_LANDSCAPING_MENU_PLANT_TREES :Planta trø STR_LANDSCAPING_MENU_PLACE_SIGN :Set tekin ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Ljóð/ tónleik ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Seinastu boð/tíðinda frásøgn STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Boð søga ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Landa økis kunning STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Console opið ella lukka STR_ABOUT_MENU_AI_DEBUG :AI/Spæl script debug STR_ABOUT_MENU_SCREENSHOT :Skermmynd STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Suma in skermmynd STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Vanliga suma skermmynd STR_ABOUT_MENU_GIANT_SCREENSHOT :Skermmynd av øllum kortinum STR_ABOUT_MENU_ABOUT_OPENTTD :Um 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Skift millum bindingar kassar STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Skift millum liting av skitnum blokkum ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Mai STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Des STR_MONTH_JAN :Januar STR_MONTH_FEB :Februar STR_MONTH_MAR :Mars STR_MONTH_APR :Apríl STR_MONTH_MAY :Mai STR_MONTH_JUN :Juni STR_MONTH_JUL :Juli STR_MONTH_AUG :August STR_MONTH_SEP :Septembur STR_MONTH_OCT :Oktobur STR_MONTH_NOV :Novembur STR_MONTH_DEC :Desembur ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Lykil STR_GRAPH_KEY_TOOLTIP :{BLACK}Vís lykil til graf STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Rakstrar avkast grafur STR_GRAPH_INCOME_CAPTION :{WHITE}Inntøku grafur STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Eindir av farmi útflýggja STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Avriks meting av fyritøku (hægsta meting=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Virðir hjá fyritøku STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Farma gjald takstur STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dagar á ferð STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Útgjald fyri útflyggjan av 10 eindum (ella 10,000 litrum) av farmi við fjarstøðu av 20 puntum STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Gilda alt STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Ógilda alt STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Vís allan farm á farmagjalds takst grafi STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Vís ongan farm á farmagjalds takst grafi STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Tendra/sløkk graf fyri farma slag STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vís avriks metingar í smálutum # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Lykil til fyritøku graf STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Trýst her fyri at tendra/sløkkja graf hjá fyritøku # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Yvirlit fyri Fyritøku Deildina STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Teknikari STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Ferðslu Leiðari STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Flutnings Samskipari STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Rutu Vegleiðari STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Leiðari STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Ovasti Stjóri STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Leiðari STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Forseti STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Avriks meting í smálutum STR_PERFORMANCE_DETAIL_KEY :{BLACK}Smálutur STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Sjá smálutir um hesa fyritøkuna ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{G=n}{BLACK}Akfør: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Støðir: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. vinningur: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inntøka: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inntøka: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Útflýggja: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Farmur: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Peningur: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lán: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Í alt: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Tali av flutningstólum ið høvdu yvurskot farna ári. Her verða akfør, tok, skip og flogfør tald við STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Tal av støðum ið nýligani hava havt tænastu eftirlit. Tok støðir, bus steðgir, floghavnir og so víðari eru tald hvør fyri sær hóast tey hoyra til somu støð STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Vinningurin hjá flutningstólinum við lægstu inntøku (einans flutningstól eldri enn tvey ár eru tikin til eftirtektar) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Nøgd av peningi forvunni í ársfjórðinginum við tí lægsta vinninginum av 12 teimun síðstu ársfjóringunum STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Nøgd av peningi forvunni í ársfjórðinginum við tí hægsta vinninginum av 12 teimum síðstu ársfjórðingunum STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Eindir av farmi útflýggjaðar í teimum síðstu fýra ársfjórðingunum STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tali av farma slagi útflýggja síðsta ársfjórðing STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Nøgd av peningi hendan fyritøkan hevur í bankanum STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Nøgdin av peningi hendan fyritøkan hevur í láni STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Fullfíggja stig út av møguligum stigum # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Alt STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Gamlan stíl STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nýggjan stíl STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Sjálvgjørdur 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Sjálvgjørdur 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Tónleika ljóðstyrki STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Effekt ljóðstyrki STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}: STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Spor STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Heiti STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Blanda STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Skrá STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Leyp til fyrra spor í úrvalinum STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Leyp til næsta spor í úrvalinum STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Gevst at spæla tónleik STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Byrja at spæla tónleik STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Drag hondtøk fyri at seta volumen á tónleiki og ljóði STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Vel 'øll spor' skránna STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Vel 'gamlan tónleika stíl' skránna STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Vel 'nýggjan tónleika stíl' skránna STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Vel 'Ezy Street tónleika stíl' skránna STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vel 'Sjálvgjørdur 1' (brúkara ásett) skránna STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vel 'Sjálvgjørdur 2' (brúkara ásett) skránna STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tendra/sløkk bland av skránni STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vís tónleika spor úrvals glugga STR_ERROR_NO_SONGS :{WHITE}Eitt tónleika sett uttan sangir er valt. Engir sangir vera spældir # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Úrval av tónleika skráðum STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Spor yvirlit STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Skrá - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Strika STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Reinsa núverðandi skrá (Sjálvgjørdur1 ella Sjálvgjørdur2 einans) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Trýst á tónleika spor fyri at leggja til núverðandi skrá (Sjálvgjørdur1 ella Sjálvgjørdur2 einans) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Trýst á tónleika spor fyri at strika frá núverðani skrá (Sjálvgjørdur1 ella Sjálvgjørdur2 einans) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Fremstu fyritøkunar ið rukku {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Yvirlit fyri Fyritøku Deildina í {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Vinnumaður STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Íverksetari STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Ídnaðarmaður STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Peningamaður STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Ídnaðarkongur STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Máttmikil ídnaðar kongur STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Aldarinnar Tycoon STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} røkkur '{STRING}' støði! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} frá {COMPANY} røkkur '{STRING}' støði! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Kort - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Skuggar STR_SMALLMAP_TYPE_VEHICLES :Flutningstól STR_SMALLMAP_TYPE_INDUSTRIES :Ídnaðir STR_SMALLMAP_TYPE_ROUTES :Rutir STR_SMALLMAP_TYPE_VEGETATION :Vøkstur STR_SMALLMAP_TYPE_OWNERS :Eigarir STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vís landslags skuggar á kortinum STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vís flutningstól á korti STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vís ídnaðir á korti STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vís flutnings rutir á korti STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vís vøkstur á korti STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vís land eigarar á korti STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Trýst á eitt ídnaðar slag fyri at vísa/fjala tað. Ctrl+trýst fjalir øll sløg uttan ta valda. Ctrl+trýst á ta aftur fyri at vísa øll ídnaðar sløg STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Trýst á eina fyritøku fyri at fjala/vísa teirra ognir. Ctrl+trýst fjalir allar fyritøkur uttan ta valdu. Ctrl+trýst umaftur fyri at vísa allar fyritøkur STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegir STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jarnbreytir STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Støðir/Floghavnir/Havnir STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Bygningar/Ídnaðir STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Flutningstól STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Tok STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Akfør STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skip STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Flogfør STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Flutnings rutir STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Skógur STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Tok støð STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Lastbila støð STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Buss støð STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Floghavn/Tyrlupallur STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Havn STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Haðrrent lendi STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gras lendi STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Bert lendi STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Markir STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Trø STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Grót STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Vatn STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Eingin eigari STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Bygdir STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Ídnaðir STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Oyðimørk STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Kavi STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vís/fjal bygda nøvn á kortinum STR_SMALLMAP_CENTER :{BLACK}Miðsavna lítlakorti á núverðandi stað STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Sløkk alt STR_SMALLMAP_ENABLE_ALL :{BLACK}Tendra alt STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Vís hædd STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Vís ongar ídnaðir á kortinum STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Vís allar ídnaðir á kortinum STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Tendra/sløkk hæddarkort STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikki vísa ognir hjá fyritøkum á kortinum STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Vís ognir hjá øllum fyritøkum á kortinum # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Vís síðstu boð á tíðinda flutningi STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * STEÐGA * * STR_STATUSBAR_AUTOSAVE :{RED}SJÁLVGOYMSLA STR_STATUSBAR_SAVING_GAME :{RED}* * GOYMUR SPÆL * * # News message history STR_MESSAGE_HISTORY :{WHITE}Boðs søga STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Yvirlit yvir fesk tíðinda boð STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Boð STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsta toki kemur til {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti bussur kemur til {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti lastbilur kemur til {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti ferðafólka sporvognur kemur til {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsti farma sporvognur kemur til {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsta skip kemur til {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Íbúgvar fegnast . . .{}Fyrsta flogfar kemur til {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tok krasj!{}{COMMA} doyggja í eldhavi aftaná samanstoyt STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Akfars krasj!{}Bilførari doyr í eldhavi eftir samanstoyt við tok STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Akfars krasj!{}{COMMA} doyggja í eldhavi eftir samanstoyt við tok STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flogfars krasj!{}{COMMA} doyggja í eldhavi í {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flogfars krasj!{}Flogfar hevði einki brennievni eftir, {COMMA} doyggja í eldhavi STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Luftskips ólukka í {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Akfar oyðilagt í 'UFO' samanstoyti! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Spreinging í oljureinsiverki tætt við {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Verksmiðja oyðiløgd undir illgrunasomum umstøðum tætt við {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' lendur tætt við {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Smokking í kola námi leggur eftir seg spor av oyðilegging tætt við {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flóðalda!{}Í minsta lagi {COMMA} saknaði, væntandi deyð eftir umfatandi flóðaldu! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Flutnings fyritøka í vanda! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} verður selt ella lýst á húsagang um ikki úrtøkan økist skjótt! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Flutnings fyritøkur samanlagdar! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er selt til {STRING} fyri {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Húsagangur! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} er lukka niður av ognarum og øll virði seld! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nýggj flutnings fyritøka stovnað! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} setur spakan í tætt vi {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} er yvirtikið av {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Leiðari) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} stuðlaði stovnanina av nýggju bygdini {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ný{G "ggjur" "ggj" "tt"} {STRING} stendur í gerð tætt við {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nýggjur {STRING} plantaður tætt vi {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} steingir brátt! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Veitingar trupulleikar fáa {STRING} at steingja brátt! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Vantandi nærhendis trø fær {STRING} at steingja brátt! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Evropeisk gjaldsoyra samstarv!{}{}Evran verður innførd sum einasta gjaldsoyra í tínum landi! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Ringar tíðir kring allan heimin!{}{}Búskaparfrøðingar vanta ta ringasta! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Endi á ringum tíðum!{}{}Øktur handil skapar álit hjá vinnuni nú búskapurin styrknar! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} økir framleiðslu! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nýtt lag av koli funni í {INDUSTRY}!{}Framleiðslan vantast at tvífaldast! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nýggjur oljubrunnur funnin við {INDUSTRY}!{}Framleiðslan vantast at tvífaldast! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Betraðir arbeiðsháttir á {INDUSTRY} vantast at tvífalda framleiðslu! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} framleiðslan hjá {INDUSTRY} økist við {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} framleiðsla minka 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Flogkykta álop elvir til oyðilegging á {INDUSTRY}!{}Framleiðsla skerd 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} framleiðslan hjá {INDUSTRY} minkar {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} bíðar í hangarinum # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hevur ov fá boð í skránni STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hevur eini ógyldig boð STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hevur boð ið eru eins STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hevur eina óviðkomandi støð í sinum boðum # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er vi at eldast STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er við at eldast serstakliga nógv STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er við at eldast serstakliga nógv og tørvast at skifta um í bræði STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kann ikki finna eina leið at halda fram STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} er glata STR_NEWS_VEHICLE_IS_UNPROFITABLE :Vinningurin síðsta ár hjá {WHITE}{VEHICLE} var {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} sleppur ikki til ætlaða staðið tí ta er ov langt vekk STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} steðgaði tí eini boð um umbyggjing miseydnaðust STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Sjálvendurnýggjan miseydnaðist vi {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nýtt {STRING} til sølu! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nýtt {STRING} til sølu! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} tekur ikki longur ímóti {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} tekur ikki longur ímóti hvørki {STRING} ella {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} tekur nú ímóti {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} tekur nú ímóti bæði {STRING} og {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Tilboð um stuðul útgingi:{}{}{STRING} frá {STRING} til {STRING} fær nú ongan stuðul STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Stuðul tikin aftur:{}{}{STRING} flutningur frá {STRING} til {STRING} er ikki stuðla longur STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Tilboð um flutnings stuðul:{}{}Fyrsti {STRING} flutningur frá {STRING} til {STRING} fær stuðul í eitt ár frá mynduleikanum á staðnum! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} gevur 50% eyka úrtøku í eitt ár! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} hevur tvífaldaða úrtøku í eitt ár! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} hevur trýfaldaða úrtøku í eitt ár! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Flutnings stuðul handaður {STRING}!{}{}{STRING} flutningur frá {STRING} til {STRING} hevur ferfaldaða úrtøku í eitt ár! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Ferðslu ruðuleiki í {TOWN}!{}{}Umvæling av vega kervi fíggja av {STRING} førir við sær 6 mánaðir av neyð fyri bilførarar! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Flutnings einahandil! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Mynduleikanir í {TOWN} skriva undir sáttmála við {STRING} fyri einkarrætt av flutningi í eitt ár! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sýnisgluggi {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Rita til sýnisglugga STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Avrita staðið í høvuðsglugganum inn hendan sýnisgluggan STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Set inn frá sýnisglugga STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Set staðið í hesum sýnisglugganum inn í høvuðsgluggan # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spæli møguleikar STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldsoyra eindir STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av gjaldsoyra eindum ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Bretsk Pund (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Dollarar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Evrir (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Yen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Eysturríkskan Shilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgiskan Frank (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Sveisiskan Frank (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Tjekkisk Koruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Danskar Krónir (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spanskir Peseta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finskan Mark (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franskan Frank (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grikkskan Drachma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungarskan Forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Íslenska Krónu (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italskan Lira (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Niðurlendskan Gillin (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norskar Krónur (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polskan Zloty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumeniskan Leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russiskar Rublar (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenskar Tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Svenskar Krónur (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turkiskan Lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovakiska Koruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasilskan Real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estoniska Krooni (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litauiskir Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Suður Koreanskar Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Suður Afrikanskir Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sjálvgjørt... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Máti eindir STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Úrval av máti eindum ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metric STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Akfør STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Áset hvørja síðu á vegnum akfør skulu koyra á STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vinstrakoyring STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Høgrakoyring STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Bygdar nøvn STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Áset slag av bygdar nøvnum ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ensk (Upprunalig) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fronsk STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Týsk STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ensk (Meiri) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latin-Amerikonsk STR_GAME_OPTIONS_TOWN_NAME_SILLY :Fjákut STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Svensk STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Niðurlendsk STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polsk STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovakisk STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norsk STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungarsk STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Eysturrísk STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumensk STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tjekkisk STR_GAME_OPTIONS_TOWN_NAME_SWISS :Sveisisk STR_GAME_OPTIONS_TOWN_NAME_DANISH :Donsk STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turkisk STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiensk STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalanisk ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sjálvgoymsla STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel títtleika av sjálvgoymslu STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Sløkt STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Hvønn mánað STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Hvønn 3 mánað STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hvønn 6 mánað STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Einaferð um árið STR_GAME_OPTIONS_LANGUAGE :{BLACK}Mál STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel mál at nýta í takførisflatu STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Fullan skerm STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marka hendan kassan fyri at spæla OpenTTD í fullum skermi STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm upploysn STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vel hvørja skermupploysn tú vil brúka STR_GAME_OPTIONS_RESOLUTION_OTHER :annað STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermmynda snið STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Vel hvat skermmynda snið tú vil brúka STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base grafikk sett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel ta base grafikk setti tú vil brúka STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} vantandi/oyðiløgd fíl{P a ir} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base grafikk setti STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base ljóð sett STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Vel ta base ljóð setti tú vil brúka STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base ljóð setti STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base tónleika sett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vel ta base tónleika setti tú vil brúka STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} oyðilagd{P "" ar} fíl{P a ir} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base tónleika setti STR_ERROR_FULLSCREEN_FAILED :{WHITE}Eydnaðist ikki at brúka fullan skerm # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Sjálvgjørt gjaldsoyra STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Gjaldsoyra kursur: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Minka um hvussu nógv av tínum gjaldoyra skal til fyri at keypa eitt pund (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Vaks um hvussu nógv av tínum gjaldoyra skal til fyri at keypa eitt pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Set gjaldsoyra kursin av tínum gjaldsoyra fyri eitt pund (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Set separatorin fyri títt gjaldsoyra STR_CURRENCY_PREFIX :{LTBLUE}Prefiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Set prefiksi fyri títt gjaldsoyra STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Set suffiksi fyri títt gjaldsoyra STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Skift til Evru: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Skift til Evru: {ORANGE}ongantíð STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Set árstal fyri skift til Evru STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skift til Evru fyrr STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skift til Evru seinni STR_CURRENCY_PREVIEW :{LTBLUE}Undanvísing: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pund (£) í tínum gjaldsoyra STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Broyt parametur í sjálvgjørda gjaldsoyranum STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Hægsta tali av kappingarneytum: {ORANGE}{COMMA} STR_NONE :Einki STR_FUNDING_ONLY :Fíggjing einans STR_MINIMAL :Minst STR_NUM_VERY_LOW :Sera lágt STR_NUM_LOW :Lágt STR_NUM_NORMAL :Vanligt STR_NUM_HIGH :Høgt STR_NUM_CUSTOM :Sjálvgjørt STR_NUM_CUSTOM_NUMBER :Sjálvgjørt ({NUM}) STR_VARIETY_NONE :Einki STR_VARIETY_VERY_LOW :Sera lágt STR_VARIETY_LOW :Lágt STR_VARIETY_MEDIUM :Miðal STR_VARIETY_HIGH :Høgt STR_VARIETY_VERY_HIGH :Sera høgt STR_AI_SPEED_VERY_SLOW :Sera seinur STR_AI_SPEED_SLOW :Seinur STR_AI_SPEED_MEDIUM :Miðal STR_AI_SPEED_FAST :Skjótur STR_AI_SPEED_VERY_FAST :Sera skjótur STR_SEA_LEVEL_VERY_LOW :Sera lágur STR_SEA_LEVEL_LOW :Lágur STR_SEA_LEVEL_MEDIUM :Miðal STR_SEA_LEVEL_HIGH :Høgur STR_SEA_LEVEL_CUSTOM :Sjálvgjørdur STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Sjálvgjørdur ({NUM}%) STR_RIVERS_NONE :Eingir STR_RIVERS_FEW :Fáir STR_RIVERS_MODERATE :Miðal STR_RIVERS_LOT :Nógvir STR_DISASTER_NONE :Ongar STR_DISASTER_REDUCED :Færri STR_DISASTER_NORMAL :Vanligar STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Sera flatt STR_TERRAIN_TYPE_FLAT :Flatt STR_TERRAIN_TYPE_HILLY :Bakkaríkt STR_TERRAIN_TYPE_MOUNTAINOUS :Fjallaríkt STR_CITY_APPROVAL_PERMISSIVE :Eftirgevandi STR_CITY_APPROVAL_TOLERANT :Tolsamir STR_CITY_APPROVAL_HOSTILE :Fíggjindaligir STR_WARNING_NO_SUITABLE_AI :{WHITE}Einki hóskandi AI til taks...{}Tú kann heinta niður fleiri ymisk AI gjøgnum 'Online tilfar' kervi # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Víðkaðir innstillingar STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtur strongur: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Víðka alt STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Toga alt saman STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(eingin frágreiðing tøk) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Vanligt virði: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Slag av instilling: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Klient instilling (ikki goymt í goymslufílum; ávirkar øll spøl) STR_CONFIG_SETTING_TYPE_GAME_MENU :Spæl instilling (goymt í goymslufílum; ávirkar einans nýggj spøl) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Goymslu instilling (goymt í goymslufílum; ávirkar einans núverðandi spæl) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Fyritøku instilling (goymt í goymslufílum; ávirkar einans nýggj spøl) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Fyritøku instilling (goymt í goymslufílum; ávirkar einans núverðandi fyritøku) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vís: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Avmarkar listan niðanfyr so hann einans vísur broyttar instillingar STR_CONFIG_SETTING_RESTRICT_BASIC :Grund innstillingar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Víðkaðir innstillingar STR_CONFIG_SETTING_RESTRICT_ALL :Serfrøðinga innstillingar / allir innstillingar STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Innstillingar við einum ørvisi virði enn ta vanliga STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Innstillingar við einum ørvisi virði enn tínir 'nýtt spæl' innstillingar STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Avmarkar listan niðanfyri so hann einans vísur ávís sløg av innstillingum STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Allir innstillingar STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klient innstilling (ikki goymt í goymslufílum; ávirkar øll spøl) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spæl innstilling (goymt í goymslufílum; ávirkar einans nýggj spøl) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spæl innstilling (goymt í goymslufílum; ávirkar einans núverðandi spæl) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Fyritøku innstilling (goymt í goymslufílum; ávirkar einans nýggj spøl) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Fyritøku stillingar (goymdir í goymslufílu; ávirkar einans núverðandi fyritøku) STR_CONFIG_SETTING_OFF :Sløkt STR_CONFIG_SETTING_ON :Tendra STR_CONFIG_SETTING_DISABLED :Ikki sligi til STR_CONFIG_SETTING_COMPANIES_OFF :Sløkt STR_CONFIG_SETTING_COMPANIES_OWN :Egna fyritøka STR_CONFIG_SETTING_COMPANIES_ALL :Allar fyritøkur STR_CONFIG_SETTING_NONE :Eingin STR_CONFIG_SETTING_ORIGINAL :Upprunaligir STR_CONFIG_SETTING_REALISTIC :Verðuleikakend STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vinstra STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Miðja STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Høgra STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Hægst loyvda byrjunar lán: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Mest loyvda upphæddin ein fyritøka kann lána (uttan at taka virðisminkan til eftirtektar) STR_CONFIG_SETTING_INTEREST_RATE :Rentu stigi: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Rentustigi á láni, stýrir eisini virðisminkan um hon er sligin til STR_CONFIG_SETTING_RUNNING_COSTS :Rakstrar kostnaður: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set hvussu høgur/lágur rakstrarkostnaðurin av flutningstólum og innankervi skal vera STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Byggingar fer: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Avmarka hvussu nógv AI kann byggja STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Flutningstól fáa maskinskaðar: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Vel hvussu oftani flutningstól, ið ikki hava veri til eftirlit, fáa maskinskaða STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Stuðuls faldari: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Vel hvussu nógv verður útgoldi fyri stuðlaðan flutning STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Bygnings kostnaður: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Set hvussu høgur/lágur bygnings- og keypskostnaður skal vera STR_CONFIG_SETTING_RECESSIONS :Ringar tíðir: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Um hetta er tendra kunnu ringar tíðir koma fyri við nøkrum ára millumbili. Meðan ringar tíðir eru, er øll framleiðsla munandi lægri (fer aftur á støði ta var áðrenn tá ringu tíðinar eru av) STR_CONFIG_SETTING_TRAIN_REVERSING :Tok hava ikki loyvi at venda inni á støðum: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Um hetta er sligi til, venda tok ikki vi inni á ikki-endastøðum, sjálvt um ta er ein styttri leið til næsta stað um tey venda vi STR_CONFIG_SETTING_DISASTERS :Ólukkur: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Tendra/sløkk ólukkur sum kunnu av og á blokera ella oyðileggja flutningstól ella innankervi STR_CONFIG_SETTING_CITY_APPROVAL :Støðan hjá býraðnum viðvíkjandi umbygging: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vel hvussu nógv óljóð og umhvørvis skaði frá fyritøkum virkar á teirra meting í bygdini og hvussu tær sleppa at byggja víðari í økinum STR_CONFIG_SETTING_BUILDONSLOPES :Loyv bygging á hellandi lendi og strondum: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Um tendra kunnu breytir og støðir byggjast har lendi hellur. Um sløkt, mugu breytir fara sama veg sum lendi hellir og støðir mugu byggjast á flatt lendi STR_CONFIG_SETTING_AUTOSLOPE :Loyv landslagsbroytingar undir bygningum, breytum, osv. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Loyv landslagsbroytingar undir bygningum og breytum uttan at beina tey burtur STR_CONFIG_SETTING_CATCHMENT :Loyv meira verðuleikakendum støddum á upplandi hjá støðum: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Ymiskar støddir á upplandi fyri ymisk sløg av støðum og floghavnum STR_CONFIG_SETTING_EXTRADYNAMITE :Loyv burtur beining av vegum, brúm og bergholum ið bygdir eiga: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Ger tað lættari at beina burtur innankervi og bygningar hjá bygdum STR_CONFIG_SETTING_TRAIN_LENGTH :Mest loyvda longd av tokum: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Áset mest loyvdu longdina á tokum STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} punt{P 0 "" ar} STR_CONFIG_SETTING_SMOKE_AMOUNT :Nøgd av royki/neistum frá flutningstólum: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Áset hvussu nógvur roykur ella neistar koma úr flutningstólum STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Tok akselerasjóns modell: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Vel fysik modelli fyri tok akselerasjón. Upprunaliga modelli mótroknar brekkur líka fyri øll før. Verðuleikakenda modelli mótroknar brekkur ymiskt fyri ymisku førini, treytað av ymiskum eginleikum so sum longd og dráttarmátt STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Akfar akselerasjóns modell: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Vel fysik modelli fyri akfars akselerasjón. Upprunaliga modelli mótroknar brekkur líka fyri øll akfør. Verðuleikakenda modelli mótroknar brekkur treytað av ymiskum eginleikum hjá motorinum, til dømis 'dráttar ómak' STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Brattleiki í brekkum fyri tok: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Brattleiki av einum hellandi punti fyri eitt tok. Hægri virði gera tað meiri torført at fara niðan brekkuna STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Brattleiki í brekkum fyri akfør: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Brattleiki av einum hellandi punti fyri eitt akfar. Hægri virði gera tað meiri torført at fara niðan brekkuna STR_CONFIG_SETTING_FORBID_90_DEG :Bannað tokum og skipum at gerða 90° sneiðingar : {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 gradirs sneiðingar eru tá ein vatnrætt breyt kemur beint aftaná eina loddrætta breyt í tí puntinum ið er næstur, ið førir við sær at toki ger eina 90 gradirs sneiðing heldur enn tær vanligu 45. Hetta ávirkar eisini snúnings radius hjá skipum STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Loyv at skoyta støðir saman ið ikki hava beinleiðis samband: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Loyvir at leggja deilir til eina støð uttan at teir beinleiðis nerta verðandi deilir. Krevst Ctrl+trýst tá tú leggur nýggju deilinar STR_CONFIG_SETTING_IMPROVEDLOAD :Brúka betraða lessingar algoritmu: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Um tendra, verða flutningstól lessaði hvørt eftir annað tá tey eru fleyri í einari støð. Lessing av næsta flutningstólinum byrjar ikki fyrr enn nóg miki av farmi er til at fylla fyrra flutningstóli STR_CONFIG_SETTING_GRADUAL_LOADING :Lessa flutningstól so líðandi: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Lessa flutningstól so líðandi við nýtslu av serligum lessingar tíðarbilum fyri hvørt flutningstóli, í staðin fyri at lessa alt uppá ein gang uppá eina fasta tíð einans treytað av hvussu nógvur farmur skal lessast STR_CONFIG_SETTING_INFLATION :Virðisminkan: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Gilda virðisminkan í búskapinum, har kostnaðir vaksa eitt sindur skjótari enn lønir STR_CONFIG_SETTING_SELECTGOODS :Einans útflýggja farm til eina støð tá ið ein tørvur er: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Einans útflýggja farm til eina støð ið var umbiðin av einum lessandi flutningstóli. Hetta forðar vánaligum metingum av farmi ið ikki verður avgreiddur á eini støð STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Mest loyvda longd av brúm: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Mest loyvda longd tá ið tú byggir brýr STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Mest loyvda longd av bergholi: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Mest loyvda longd tá ið tú byggir berghol STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manuellur byggingarháttur fyri aðal ídnað: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Háttur at fíggja ein aðal ídnað. 'einki' merkir at tað er ikki møguligt at fíggja nakran, 'kanna' merkir at ta er møguligt men ídnaðurin verður settur í gerð eitt tilvildarligt stað og kann eisini miseydnast, 'sum aðrir ídnaðir' merkir at tú sjálvur kann velja hvar aðal ídnaðurin verður settur í gerð STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Einki STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Sum aðrir ídnaðir STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Kanna STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flatt øki kring ídnaðir: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Mongd av fløtum lendi kring ein ídnað. Hetta tryggjar at tómt pláss er kring ein ídnað til at byggja breytir osv. STR_CONFIG_SETTING_MULTIPINDTOWN :Loyv fleiri líkar ídnaðir per bygd: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Vanligani vil ein bygd ikki hava meir enn ein ídnað av sama slagi. Við hesi áseting loyvir ein bygd fleiri ídnaðir av sama slagi í økinum STR_CONFIG_SETTING_SIGNALSIDE :Vís tekin: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Vel á hvørjari síðu av breytini tekin vera sett STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Á vinstru síðu STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Á førara síðuni STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Á høgru síðu STR_CONFIG_SETTING_SHOWFINANCES :Vís fíggjarglugga, tá árið endar: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Um gilda, kemur fíggjar vindeyga fram við árslok hvørt ár so tað er lætt at fáa fíggjarligt innlit í fyritøkuni STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nýggj boð eru vanligani 'non-stop': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Vanligani støðgar eitt flutningstól við allar støðir ta kemur framvi. Um henda áseting er gilda, koyra flutningstól gjøgnum støðir á veg til síni endamál uttan at steðga. Legg til merkis, henda ásetingin lýsir einans eitt vanligt virði fyri nýggj boð. Einstøk boð kunnu kortini skilligani ásetast báðar atburðir STR_CONFIG_SETTING_STOP_LOCATION :Nýggj tok boð steðga vanligt vi {STRING} av pallinum STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Áset hvar við pallin eitt tok steðgar vanligani. 'nær endanum' merkir tætt við inngongdina, 'miðjuni' merkir í miðjuni á pallinum og 'fjart endanum' merkir longst burtur frá inngongdini. Legg til merkis, henda ásetingin lýsir einans eitt vanligt virði fyri nýggj boð. Einstøk boð kunnu kortini skilligani ásetast báðar atburðir STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :nær endanum STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :miðjuni STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :fjart endanum STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Akfar í bíðirøð (við kvantum ávirkan): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Akfør bíða frammanfyri upptiknar veg steðgir til teir eru tómir STR_CONFIG_SETTING_AUTOSCROLL :Skotra vindeyga tá músin er við eggina: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Um gilda, byrja sýnisgluggar at skrulla tá músin er nær við egginar á vindeyganum STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Ikki sligi til STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Høvuðs sýnisgluggi, einans fullan skerm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Høvuðs sýnisgluggi STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Allir sýnisgluggar STR_CONFIG_SETTING_BRIBE :Loyv mutran av mynduleikum á staðnum: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Loyv fyritøkum at royna at mutra bygda mynduleikan á staðnum. Um mutri verður avdúka av einum eftirlitsmanni, sleppur fyritøkan ikki at gera nakað í bygdini teir næstu seks mánaðinar STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Loyv keypi av flutnings einkarættindum: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Um ein fyritøka keypur flutnings einkarættindi í einari bygd, fáa støðinar (ferðafólk og farm) hjá kappingarneytum ongan farm í eitt heilt ár STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Loyv fígging av nýggjum bygningum: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Loyv fyritøkum at handa bygdum pening til fígging av nýggjum húsum STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Loyv fígging av vega endurbygging á staðnum: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Loyv fyritøkum at handa bygdum pening fyri veg endurbygging til tess at sabotera tænastur grundaðar á vegakervi STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Loyv handan av pengum til aðrar fyritøkur: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Loyv flutning av peningi millum fyritøkur í hópspølum STR_CONFIG_SETTING_FREIGHT_TRAINS :Vekt faldari fyri farm til tess at eftirgera tung tok: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Áset ávirkanina av farmi á tok. Hægri virði ger tað meira krevjandi fyri tok at føra farm, serliga í brekkum STR_CONFIG_SETTING_PLANE_SPEED :Flogfars ferð faktorur: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Áset lutfalsligu ferðina á flogførum samanbori við onnur flutningstól, til tess at minka um inntøkuna frá flogflutningi STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Tal av flogfars krasjum: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Áset útliti til at ein flogvanlukka hendur STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Einki STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Færri STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Vanligt STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Loyv gjøgnumkoyrings steðgum á vegum ið bygdir eiga: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Loyv bygging av gjøgnumkoyrings steðgum á vegum ið bygdir eiga STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Loyv gjøgnumkoyrings steðgum á vegum ið kappingarneytar eiga: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Loyv bygging av gjøgnumkoyrings steðgum á vegum ið kappingarneytar eiga STR_CONFIG_SETTING_ADJACENT_STATIONS :Loyv at byggja støðir síð um síð: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Loyv ymsum støðum at nema við hvørja aðra STR_CONFIG_SETTING_DYNAMIC_ENGINES :Gilda fleiri NewGRF motor sett: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Háttlíkis møguleiki fyri gomul NewGRF. Ikki ógilda hetta, uttan so er at tú veist nágreiniliga hvat tú ger! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ikki møguligt at broyta hesa áseting tá ta eru flutningstól STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Innakervis viðlílkahald: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Um gilda, innankervi elvir til viðlíkahalds kostnað. Kostnaðurin vaksur yvir-lutfalsliga við støddina á kervinum, og ávirkar harvið størri fyritøkur meira enn smærri fyritøkur STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Floghavnir ganga ongantíð út: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Gildan av hesi áseting ger at hvørt floghavna slag altíð er tøkt eftir tað er komi í nýtslu STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ávara um flutningstól er glatað: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Tú fær boð um flutningstól ið ikki finna leið STR_CONFIG_SETTING_ORDER_REVIEW :Kanna boð hjá flutningstólum: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Um gilda verða boðini hjá flutningstólum regluligani kanna, og boða verður frá um eyðsyndar trupulleikar STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, men útihýs steðgaði flutningstól STR_CONFIG_SETTING_ORDER_REVIEW_ON :Av øllum flutningstólum STR_CONFIG_SETTING_WARN_INCOME_LESS :Ávara um eitt flutningstól hevur negativa inntøku: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Um gilda, fær tú boð tá eitt flutningstól ikki hevur havt nakran vinning í eitt kalendara ár STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Flutningstól ganga ongantíð út: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Um gilda, eru øll sløg av flutningstólum altíð tøk eftir tey eru komin í nýtslu STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Sjálvendurnýggja flutningstól tá ta gerst gamalt: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Um gilda, verður eitt flutningstól tá tað nærkast endanum á sínum lívi sjálvirkandi umbýtt tá endurnýggjanar treytirnar eru nøktaðar STR_CONFIG_SETTING_AUTORENEW_MONTHS :Sjálvendurnýggja flutningstól {STRING} maks aldur STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Lutfalsligur aldur fyri nær eitt flutningstól átti at veri umhugsað til sjálvendurnýggjan STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mánað{P 0 "" ir} áðrenn STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mánað{P 0 "" ir} eftir STR_CONFIG_SETTING_AUTORENEW_MONEY :Sjálvendurnýggjan minst kravdur peningur til endurnýggjan: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minsta nøgd av peningi ið má vera í peningastovninum áðrenn sjálvendurnýggjan av flutningstólum verður umhugsað STR_CONFIG_SETTING_ERRMSG_DURATION :Tíðarlongd av villuboðum: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tíðarbili ið villu boð verða víst í einum reyðum vindeyga. Legg til merkis at nøkur (umráðandi) villu boð ikki verða sjálvvirkandi afturlatin eftir hetta tíðarbil, men mugu latast aftur manuelt STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 "" ir} STR_CONFIG_SETTING_HOVER_DELAY :Vís góð ráð: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Seinking áðrenn góð ráð vera víst tá músin sveimar yvur ein lut á takførisflatuni. Í øðrum lagi kunnu góðu ráðini bindast at høgra músa knøtti STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Sveima í {COMMA} sekund{P 0 "" ir} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Høgra trýst STR_CONFIG_SETTING_POPULATION_IN_LABEL :Vís bygda fólkatal í bygda navna spjaldrinum: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Vís fólkatali í bygdum á teirra spjøldrum á kortinum STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tjúgd av linjum í grafum: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Víddin á linjuni í grafum. Ein kløn linja kann lesast meiri nágreiniligani, ein tjúkk linja er lættari at síggja og litinir sjónligari STR_CONFIG_SETTING_LAND_GENERATOR :Lendis framleiðari: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Upprunaligi STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Mesta fjarstøða frá eggini til olju reinsiverk: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olju reinsiverk verða bert bygd nær eggini á kortinum, tað er við strondina fyri oyggja kort STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Kava linju hædd: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Hvussu harðrent ið lendi skal vera (einans TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sera mjúkt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Mjúkt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Harðrent STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Sera harðrent STR_CONFIG_SETTING_TREE_PLACER :Algoritma fyri setan av trøðum: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Eingin STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Upprunalig STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Betra STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Hæddarkort snarðing: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Í móti klokkunu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Við klokkuni STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Hæddar støði eitt flatt tilburðs kort fær: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Gilda landslags broytingar av puntum við eggina á kortinum: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Um ógilda, eru egginar á kortinum altíð hav STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ein ella fleiri puntar við norðaru eggina eru ikki tómir STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ein ella fleiri puntar við eina egg eru ikki vatn STR_CONFIG_SETTING_STATION_SPREAD :Mesta støð spjaðing: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Mesta øki deilir av eini einkultari støð kunnu spjaðast útyvir. Legg til merkis at eitt høgt virði vil seinka spælinum STR_CONFIG_SETTING_SERVICEATHELIPAD :Sjálvvirki eftirlit við tyrlum á tyrlupallum: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Eftirlit við tyrlum aftaná hvørja lending, sjálvt um eingin goymsla er á flogvøllinum STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Leinkja landslags amboðsbjálkan til jarnbreyt/veg/vatn/floghavn amboðsbjálkanir: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Tá tú letur upp ein bygnings amboðsbjálka fyri eitt slag av flutningi, verður eisini lati upp fyri landslags broytingar amboðsbjálkanum STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Litur fyri lendi í lítla korti: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Liturin av lendinum í tí lítla kortinum STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grønt STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Myrka grønt STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Blákollulitur STR_CONFIG_SETTING_REVERSE_SCROLLING :Umvend skrull ætt: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Atburður tá tú skrullar korti við høgra músa knøtti. Um ógilda flytir músin kamerai. Um gilda flytir músin korti. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjúka sýnisglugga skrulling: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Stýr hvussu høvuðs sýni skrullar til eitt ávíst stað tá tú trýstir á lítlakorti ella tú tú gevur eini boð um at skrulla til ein ávísan lut á kortinum. Um gilda, skrullar sýni mjúgdliga, um ógilda leypur sýni beint til staði STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vís eina mátingar vegleiðing tá tú brúkar ymisku byggji amboðini: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Vís punta fjarstøðir og hæddar munir tá tú togar undir bygging STR_CONFIG_SETTING_LIVERIES :Vís eyðkennislitir hjá fyritøkum: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Stýr nýtslu av eyðkennislitum ið er sermerktir fyri slagi av flutningstóli (í mótsetningi til sermerktar fyri fyritøkuna) STR_CONFIG_SETTING_LIVERIES_NONE :Einki STR_CONFIG_SETTING_LIVERIES_OWN :Egna fyritøku STR_CONFIG_SETTING_LIVERIES_ALL :Allar fyritøkur STR_CONFIG_SETTING_PREFER_TEAMCHAT :Vel lið chat framum við : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Skift bindingina av innanhýsis fyritøku og almennum chatti til og ávikavist STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funka av skrullhjóli: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Gilda skrulling við tvey-dimensionalum músa hjólum STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Suma kort STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skrulla kort STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Sløkt STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Kort skrullhjóls ferð: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Stýr viðkvæmi av músahjóls skrulling STR_CONFIG_SETTING_OSK_ACTIVATION :Knappaborð á skermi: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Vel háttin at lata knappaborði á skerminum upp fyri at skriva tekst inn í ritkassar einans við peiki tóli. Hetta er ætlað til smærri tól uttan nakað ítøkuligt knappaborð STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Ikki sligi til STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dupult trýst STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Einkult trýst (tá savna) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Einkult trýst (alt fyri eitt) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Høgra-trýst eftirgerð: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Vel háttin at eftirgerða trýst á høgra músa knøtt STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+trýst STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+trýst STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Sløkt STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vinstra-trýst skrulling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Gilda skrulling av kortinum við at toga ta við vinstra músa knøtti. Hetta er serstakliga hent um tú nýtur ein fingraskugga at skrulla vi STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Nýt {STRING} dato sniði til nøvnini á goymdum spølum STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Sniði fyri dato í fíla navninum á goymdum spølum STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :langt (31. Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :stutt (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Vanligt litaval at ganga út frá fyri NewGRFs uttan serstakt litaval: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Vanligt litaval at nýta fyri NewGRF ið ikki tilskila hvat litaval teimum tørvar STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Sjálvirknan steðg tá nýtt spæl verður byrja: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Um gilda er spæli steðga tá ið tú byrjar eitt nýtt spæl, hetta loyvir tær at skoða korti í frið og náðum STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Meðan steðgur er, loyv: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Vel hvat kann gerast meðan spæli er steðga STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Einki STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt uttan at byggja STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alt uttan at broyta landslagi STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alt STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Nýt viðkaða listan yvir flutningstól: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Gilda nýtsluna av víðkaða listanum yvir flutningstól til at koyra flutningstól í bólkar STR_CONFIG_SETTING_LOADING_INDICATORS :Nýt lessingar vísarar: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vel um lessi vísarar verða vístir omanfyri lessandi og avlessandi flutningstól ella ikki STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vís tíðarætlan í klikkum heldur enn døgum: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Vís koyri tíðir í tíðarætlanum við 'spæli klikkum' í staðin fyri við døgum STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Vís komir og fráferðir í tíðarætlanum: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vís væntaðu komu og fráferðs tíðir í tíðarætlanum STR_CONFIG_SETTING_QUICKGOTO :Skjót gerð av boðum til flutningstól: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :'far til pílurin' er longu valdur tá tú opnar boðs vindeyga STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Vanliga jarnbreyta slagi (aftaná nýtt spæl/heinta spæl): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Jarnbreyta slag ið er valt eftir byrjan ella heintan av einum spæli. 'fyrst tøka' velur ta elsta slagi av breytum, 'síðst tøka' velur ta nýggjasta slagi av breytum, 'mest nýtta' velur ta slagi av breyt sum í verandi løtu er mest nýtt STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Fyrsta tøka STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Síðst tøka STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest nýtta STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Vís umbidnar breytir: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Gev umbidnum breytum ein øðrvísi lit fyri at hjálpa tá ið tok sýta at koyra á leið-bygdum blokkum STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Halt bygnings amboð virkin eftir nýtslu: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Lat byggi amboðini til brúgvar, berghol, osv. vera opin eftir nýtslu STR_CONFIG_SETTING_EXPENSES_LAYOUT :Bólka útreiðslur í vindeyganum fyri fíggjar støðuna hjá fyritøkuni: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Greina uppsetingina fyri fyritøku útreiðslu vindeyga STR_CONFIG_SETTING_SOUND_TICKER :Tíðinda telefonritil: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spæl eitt ljóð fyri stytt tíðinda boð STR_CONFIG_SETTING_SOUND_NEWS :Tíðindablað: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spæl eitt ljóð tá ið tíðindabløð vera víst STR_CONFIG_SETTING_SOUND_NEW_YEAR :Árslok: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spæl eitt ljóð við árslok tá tikið verður saman um framførðsluna hjá fyritøkuni í árinum í mun til ári áðrenn STR_CONFIG_SETTING_SOUND_CONFIRM :Bygging: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spæl eitt ljóð vi væleydnaða bygging ella aðrar gerðir STR_CONFIG_SETTING_SOUND_CLICK :Knøtta trýst: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Bipa tá tú trýstur á knøttar STR_CONFIG_SETTING_SOUND_DISASTER :Ólukkur/vanlukkur: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spæl ljóðini frá vanlukkum og ólukkum STR_CONFIG_SETTING_SOUND_VEHICLE :Flutningstól: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spæl ljóðini frá flutningstólum STR_CONFIG_SETTING_SOUND_AMBIENT :Umhvørvi: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spæl umhvørvis ljóðini frá landslagnum, ídnaðum og bygdum STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Ógilda bygging av innankervi á eingi hóskandi flutningstól eru tøk: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Um gilda, er innankervi einans tøkt um flutningstóli eisini eru tøk, og forðar tær tískil at spilla burtur tíð og pening uppá ónýtiligt innankervi STR_CONFIG_SETTING_MAX_TRAINS :Maks tok per fyritøku: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Mest loyvda tali av tokum ein fyritøka kann hava STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maks akfør per fyritøku: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Mest loyvda tali av akførum ein fyritøka kann hava STR_CONFIG_SETTING_MAX_AIRCRAFT :Maks flogfør per fyritøku: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Mest loyvda tali av flogførum ein fyritøka kann hava STR_CONFIG_SETTING_MAX_SHIPS :Maks skip per fyritøku: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Mest loyvda tali av skipum ein fyritøka kann hava STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Ógilda tok fyri telduna: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja tok STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Ógilda akfør fyri telduna: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja akfør STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Ógilda flogfør fyri telduna: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja flogfør STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Ógilda skip fyri telduna: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Gildan av hesi ásetan ger tað ógjørligt hjá einum telduspælara at byggja skip STR_CONFIG_SETTING_AI_PROFILE :Vanligur innstillings profilur: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Vel hvønn innstillings profil at nýta fyri tilvildarlig AI ella fyri byrjunar virði tá tú leggur nýtt AI ella spæl skript til STR_CONFIG_SETTING_AI_PROFILE_EASY :Lætt STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Miðal STR_CONFIG_SETTING_AI_PROFILE_HARD :Torført STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Loyv AI í hópspæli: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Loyv AI telduspælarum at taka lut í hópspølum STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes áðrenn skript verða steðga: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Mest loyvda tali av rokni fetum eitt skript kann taka í einum umfarði STR_CONFIG_SETTING_SERVINT_ISPERCENT :Eftirlits títtleikar eru í prosentum: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Vel um eftirlit av flutningstólum verður gjørt í mun til hvussu nógv tíð er farin síðan síðsta eftirlit, ella tá álítandi fellur eitt víst prosent av maks álítandi STR_CONFIG_SETTING_SERVINT_TRAINS :Vanligur eftirlits títtleiki fyri tok: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum jarnbreyta flutningstóum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 "" ar}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Ikki sligi til STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Vanligur eftirlits títtleiki fyri akfør: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum akførum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Vanligur eftirlits títtleiki fyri flogfør: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjumf logførum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli STR_CONFIG_SETTING_SERVINT_SHIPS :Vanligur eftirlits títtleiki fyri skip: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Áset vanliga eftirlits títtleikan hjá nýggjum skipum, um eingin skilligur eftirlits títtleiki er ásettur fyri flutningstóli STR_CONFIG_SETTING_NOSERVICE :Ógilda eftirlit tá maskinskaðar eru ásettir til eingir: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Um gilda fáa flutningstól einki eftirlit um tey ikki kunnu fáa maskinskaða STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Gilda hámarksferð fyri vognar: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Um gilda, verður hámarksferðin hjá vognum eisini nýtt fyri at avgerða mest loydu ferðina á tokum STR_CONFIG_SETTING_DISABLE_ELRAILS :Ógilda ravmagns jarnbreytir: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Um gilda er ikki neyðugt við ravmagns jarnbreytum fyri at fáa ravmagns tok at koyra STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Koma av fyrsta flutningstóli til støð hjá spælara: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Vís eitt tíðindablad tá tað fyrsta flutningstóli kemur til eina støð hjá einum nýggjum spælara STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Koma av fyrsta flutningstóli til støð hjá kappingarnyta: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Vís eitt tíðindablað tá tað fyrsta flutningstóli kemur til eina støð hjá einum nýggjum kappingarneyta STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Vanlukkur/ Ólukkur: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Vís eitt tíðindablað tá vanlukkur ella ólukkur koma fyri STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Fyritøku kunning: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Vís eitt tíðindablað tá ein nýggj fyritøka byrjar, ella tá fyritøkur eru í vanda fyri at fara á húsagang STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Upplating av ídaðum : {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Vís eitt tíðindablað tá nýggjir ídnaðir lata upp STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Steingjing av ídnaðum: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Vís eitt tíðindablað tá ídnaðir steingja STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Búskapar broytingar: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Vís tíðindablað um broytingar í heimsbúskapinum STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Framleiðslu broytingar hjá ídnaðum ið fyritøkan flytur fyri: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Vís eitt tíðindablað tá framleiðslu støði hjá ídnaðum ið fyritøkan flytur fyri broytist STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Framleiðslu broytingar hjá ídnaðum ið kappingarneytar flyta fyri: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Vís eitt tíðindablað tá framleiðslu støði hjá ídnaðum ið kappingarneytar flyta fyri broytist STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Aðrar ídnaðar framleiðslu broytingar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Vís eitt tíðinda blað tá framleiðslu støði hjá ídnaðum ið eingin flytur fyri broytist STR_CONFIG_SETTING_NEWS_ADVICE :Ráð / kunning um flutningstól hjá fyritøkuni :{STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Vís boð um flutningstól ið hava tørv fyri umsorgan STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nýggj flutningstól: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Vís eitt tíðindablað tá eitt nýtt slag av flutningstóli verður tøkt STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Broytingar í farma móttøku: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Vís boð um støðir ið broyta hvønn farm tær góðtaka STR_CONFIG_SETTING_NEWS_SUBSIDIES :Stuðulsflutningur: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Vís eitt tíðindablað um hendingar í sambandi við stuðulsflutning STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Almenn kunning: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Vís tíðindablað um almennar tilburðir, so sum keyp av einkarrættindum ella endurbygging av vegakervi STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Sløkt STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Samandráttur STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Fult STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Litaði tíðindir koma frám í: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ári har tíðindabløð verða prentaði í litum. Áðrenn hetta ári eru tíðindabløð svørt/hvít STR_CONFIG_SETTING_STARTING_YEAR :Byrjunar ár: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Gilda mjúkan búskap (fleiri, smærri broytingar): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Um gilda, ídnaðar framleiðsla broytist títtari og í smærri stigum. Henda ásetanin hevur vanliga onga ávirkan um ídnaðinir koma frá einum NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Loyv keypi av partabrøvum frá øðrum fyritøkum: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Um gilda, er loyvt at keypa og selja fyritøku partabrøv. Partabrøv verða einans tøk hjá fyritøkum ið hava rokki ein ávísan aldur STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentpartur av deilvinningi at gjalda í veitingar kervum: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Prosentpartur av inntøku ið verður útgoldi til millum liðini í veitara kervum (umskipan), gevur betri ræðið í inntøkuni STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Tá toga verður, set tekin hvønn: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Áset fjarstøðuna millum tekin ið verða sett á breytina fram til ta næstu forðingina (teking, samanrenning), um tekin verða togaði STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} punt STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Tá toga verður, halt fasta fjarstøðu millum tekin: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Velt atburðin á tekn seting tá tú Ctrl+togar tekin. Um ógilda verða tekin sett vi berghol og brúgvar fyri at sleppa undan longum strekkjum uttan tekin. Um gilda verða tekin sett hvønn n punt fyri at gera ta lættari at fylkja tekin á javnfjarðum breytum STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Sjálvvirkandi bygging av teknmastrum áðrenn: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Áset hvat ár ravmagns tekin verða nýtt á jarnbreytum. Áðrenn hetta verða ikki-ravmagns tekin nýtt (tey virka á sama hátt, men hava ørðvísi útsjónd) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Gilda GUI fyri tekin: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Vís eitt vindeyga har tú kann velja hvat slag av tekin tú vil byggja, ístaðin fyri einans vindyga-leyst Ctrl+trýst á tekin STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Slag av tekin at byggja vanligt: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Hvat slag av tekin er vanliga valt STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokk tekin STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Leið tekin STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einvegis leið tekin STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Blaða gjøgnum tekn sløg: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Blokk tekin einans STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Leið tekin einans STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Øll STR_CONFIG_SETTING_TOWN_LAYOUT :Veg uppseting fyri nýggjar bygdir: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Uppseting av vega kervinum í bygdum STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Upprunalig STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Betri vegir STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 rimaverk STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 rimaverk STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilvildarlig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Bygdir hava loyvi at byggja vegir: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Loyv bygdum at byggja vegir fyri vøkstur. Ógilda fyri at forða bygdum í at byggja vegir sjálvar STR_CONFIG_SETTING_TOWN_FOUNDING :Stovnað bygdir í spælinum: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Gildan av hesum loyvir spælarum at stovnað bygdir meðan spælt verur STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Bannað STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Loyvt STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Loyvt, sjálvgjørd bygda uppseting STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Ikki sligi til STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :ikki sligi til STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Vanligt STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Eingin STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Sein STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Vanlig STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Skjót STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sera skjót STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 út av {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Eingin STR_CONFIG_SETTING_GUI :{ORANGE}Takførisflati STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Bygging STR_CONFIG_SETTING_VEHICLES :{ORANGE}Flutningstól STR_CONFIG_SETTING_STATIONS :{ORANGE}Støðir STR_CONFIG_SETTING_ECONOMY :{ORANGE}Búskapur STR_CONFIG_SETTING_AI :{ORANGE}Kappingarneytar STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Vísu møguleikar STR_CONFIG_SETTING_INTERACTION :{ORANGE}Ávirkan STR_CONFIG_SETTING_SOUND :{ORANGE}Ljóð effektir STR_CONFIG_SETTING_NEWS :{ORANGE}Tíðindi og boð STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Tekin STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Farma stýring STR_CONFIG_SETTING_AI_NPC :{ORANGE}Teldu spælarir STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Sjálvendurnýggja STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Eftirlit STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Beining STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Tok STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bygdir STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Ídnaðir STR_CONFIG_SETTING_PATHFINDER_OPF :Upprunaligur STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Viðmældur) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðbeinari fyri tok: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leið beinari at nýta til tok STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Leiðbeinari fyri akfør: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Leið beinari at nýta fyri akfør STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Leiðbeinari fyri skip: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Leið beinari at nýta fyri skip STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Broyt ásetings virði # Config errors STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... óviðkomandi virði '{STRING}' fyri '{STRING}' STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ikki funni STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :system NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ósambæriligur við hesa útgávuna av OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ókendur STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Einki minni eftir STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Leitan eftir {BYTES} av spritecache eydnaðist ikki. Spritecache var skerd til {BYTES}. Hetta vil skerja framførsluna av OpenTTD. Fyri at minka um minnis krøvini kann tú royna at sløkkja fyri 32bpp grafikki og/ella suma-in stig # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nýtt spæl STR_INTRO_LOAD_GAME :{BLACK}Heinta spæl STR_INTRO_PLAY_SCENARIO :{BLACK}Spæl tilburð STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spæl hæddarkort STR_INTRO_SCENARIO_EDITOR :{BLACK}Tilburðs ritil STR_INTRO_MULTIPLAYER :{BLACK}Hópspæl STR_INTRO_GAME_OPTIONS :{BLACK}Spæli møguleikar STR_INTRO_HIGHSCORE :{BLACK}Hástigs yvirlit STR_INTRO_ADVANCED_SETTINGS :{BLACK}Víðkaðir innstillingar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF innstillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Kanna online tilfar STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spæli script innstillingar STR_INTRO_QUIT :{BLACK}Gevst STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Byrja eitt nýtt spæl. Ctrl+trýst leypur um uppseting av korti STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Heinta eitt goymt spæl STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Byrja eitt nýtt spæl, har tú brúkar eitt hæddarkort sum landslag STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Byrja eitt nýtt spæl, har tú brúkar ein sjálvgørdan tilburð STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Skapa ein sjálvgørdan spæli heim/tilburð STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Byrja eitt hópspæl STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Vel 'lýggjan' landslags stíl STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vel 'sub-arctic' landslags stíl STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vel 'sub-tropical' landslags stíl STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vel 'toyland' landslags stíl STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vís spæli møguleikar STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Vís hástigs yvirlit STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Vís víðkaðar innstillingar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vís NewGRF innstillingar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Kanna um nýtt og betra tilfar er klárt at heinta niður STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vís AI/Spæli script innstillingar STR_INTRO_TOOLTIP_QUIT :{BLACK}Gevst at spæla 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Hesi umseting vantar {NUM} str{P ong eingir}. Vinarliga hjálp til við at gera OpenTTD betri, tekna teg sum umsetara. Sí readme.txt viðvíkjandi smálutum. # Quit window STR_QUIT_CAPTION :{WHITE}Gevst STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Er tú vís/vísur í at tú vil gevast at spæla OpenTTD og fara aftur til {STRING}? STR_QUIT_YES :{BLACK}Ja STR_QUIT_NO :{BLACK}Nei # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Far frá spæli STR_ABANDON_GAME_QUERY :{YELLOW}Er tú vís/vísur í at tú vil fara frá hesum spæli? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er tú vís/vísur í at tú vil fara frá hesum tilburði? # Cheat window STR_CHEATS :{WHITE}Snýt STR_CHEATS_TOOLTIP :{BLACK}Flugubeins kassanir vísa um tú hevur nýtt hetta snýti áður STR_CHEATS_WARNING :{BLACK}Ávaring! Tú er í holt við at svíkja tínar kappingarneytar. Hav í huga at ein slík vanæra verður aldrin gloymd á ævini STR_CHEAT_MONEY :{LTBLUE}Hækka pening við {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spælir sum fyritøka: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Gandaður bulldosari (bein burtur ídnaðir, lutir ið ikki kunnu flytast): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Berghol kunnu krossast: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetflogfør krasja ikki (oftani) í lítlum floghavnum: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Lýtt landslag STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Undir-arktiskt landslag STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Undir-tropiskt landslag STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Leikuland landslag STR_CHEAT_CHANGE_DATE :{LTBLUE}Broyt dato: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Broyt núverðandi ár STR_CHEAT_SETUP_PROD :{LTBLUE}Gilda broytingar av framleiðslu virðum: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nýggja lit samanseting STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Vís vanligu lit samansetingarnar STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Vís tok lit samansetingarnar STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Vís akfars lit samasetingarnar STR_LIVERY_SHIP_TOOLTIP :{BLACK}Vís skips lit samansetingarnar STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Vís flogfars lit samansetingarnar STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Vel aðal litin fyri valdu samansetingina. Ctrl+trýst ásetur hendan litin fyri allar samansetingar STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Vel vara litin fyri valdu samansetingina. Ctrl+trýst ásetur henda litin fyri allar samansetingar STR_LIVERY_PANEL_TOOLTIP :{BLACK}Vel eina lit samanseting at broyta, ella fleiri lit samansetingar við Ctrl+trýst. Trýst á kassan fyri at tendra/sløkkja nýtslu av samanseting STR_LIVERY_DEFAULT :Vanligir eyðkennislitir STR_LIVERY_STEAM :Guvu motor STR_LIVERY_DIESEL :Diesel motor STR_LIVERY_ELECTRIC :Ravmagns motor STR_LIVERY_MONORAIL :Einsporðs Motor STR_LIVERY_MAGLEV :Maglev motor STR_LIVERY_DMU :Diesel tok sett STR_LIVERY_EMU :Ravmagns tok sett STR_LIVERY_PASSENGER_WAGON_STEAM :Ferðafólka vognur (guv) STR_LIVERY_PASSENGER_WAGON_DIESEL :Ferðafólka vognur (diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Ferðafólka vognur (ravmagn) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Ferðafólka vognur (einsporð) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Ferðafólka vognur (maglev) STR_LIVERY_FREIGHT_WAGON :Góðs vognur STR_LIVERY_BUS :Buss STR_LIVERY_TRUCK :Lastbil STR_LIVERY_PASSENGER_SHIP :Ferðafólka ferga STR_LIVERY_FREIGHT_SHIP :Frakt skip STR_LIVERY_HELICOPTER :Tyrla STR_LIVERY_SMALL_PLANE :Líti flogfar STR_LIVERY_LARGE_PLANE :Stórt flogfar STR_LIVERY_PASSENGER_TRAM :{G=m}Ferðafólka sporvognur STR_LIVERY_FREIGHT_TRAM :{G=m}Góðs sporvognur # Face selection window STR_FACE_CAPTION :{WHITE}Andlits úrval STR_FACE_CANCEL_TOOLTIP :{BLACK}Angra nýtt andlits val STR_FACE_OK_TOOLTIP :{BLACK}Góðtak nýtt andlits val STR_FACE_MALE_BUTTON :{BLACK}Kallkyn STR_FACE_MALE_TOOLTIP :{BLACK}Vel kallkyns andlit STR_FACE_FEMALE_BUTTON :{BLACK}Kvennkyn STR_FACE_FEMALE_TOOLTIP :{BLACK}Vel kvennkyns andlit STR_FACE_NEW_FACE_BUTTON :{BLACK}Nýtt andlit STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Framleið tilvildarligt nýtt andlit STR_FACE_ADVANCED :{BLACK}Víðka STR_FACE_ADVANCED_TOOLTIP :{BLACK}Víðka andlits úrval STR_FACE_SIMPLE :{BLACK}Einfalt STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einfalt andlits úrval STR_FACE_LOAD :{BLACK}Heinta STR_FACE_LOAD_TOOLTIP :{BLACK}Heinta yndis andlit STR_FACE_LOAD_DONE :{WHITE}Títt yndis andlit er heinta úr OpenTTD uppsetanar fíluni STR_FACE_FACECODE :{BLACK}Spælara andlits nr. STR_FACE_FACECODE_TOOLTIP :{BLACK}Sjá og/ella áset andlits nummar hjá fyritøku leiðaranum STR_FACE_FACECODE_CAPTION :{WHITE}Sjá og/ella áset eitt tal fyri andlit STR_FACE_FACECODE_SET :{WHITE}Nýtt andlits tal er ásett STR_FACE_FACECODE_ERR :{WHITE}Eydnaðist ikki at áseta andlits tal - má vera eitt tal millum 0 og 4,294,967,295! STR_FACE_SAVE :{BLACK}Goym STR_FACE_SAVE_TOOLTIP :{BLACK}Goym yndis andlit STR_FACE_SAVE_DONE :{WHITE}Hetta andliti verur goymt sum títt yndis andlit í OpenTTD uppsetanar fíluni STR_FACE_EUROPEAN :{BLACK}Evropeiskt STR_FACE_SELECT_EUROPEAN :{BLACK}Vel Evropeisk andlit STR_FACE_AFRICAN :{BLACK}Afrikansk STR_FACE_SELECT_AFRICAN :{BLACK}Vel Afrikonsk andlit STR_FACE_YES :Ja STR_FACE_NO :Nei STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Tendra yvirskegg ella oyraring STR_FACE_HAIR :Hár: STR_FACE_HAIR_TOOLTIP :{BLACK}Broyt hár STR_FACE_EYEBROWS :Eygnabrýr: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Broyt eygnabrýr STR_FACE_EYECOLOUR :Eygna litur: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Broyt eygna lit STR_FACE_GLASSES :Brillur: STR_FACE_GLASSES_TOOLTIP :{BLACK}Tendra brillur STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Broyt brillur STR_FACE_NOSE :Nøs: STR_FACE_NOSE_TOOLTIP :{BLACK}Broyt nøs STR_FACE_LIPS :Varrar: STR_FACE_MOUSTACHE :Yvirskegg: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Broyt varrar ella yvirskegg STR_FACE_CHIN :Høka: STR_FACE_CHIN_TOOLTIP :{BLACK}Broyt høku STR_FACE_JACKET :Jakki: STR_FACE_JACKET_TOOLTIP :{BLACK}Broyt jakka STR_FACE_COLLAR :Kragi: STR_FACE_COLLAR_TOOLTIP :{BLACK}Broyt kraga STR_FACE_TIE :Slips: STR_FACE_EARRING :Oyraringur: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Broyt slips ella oyraring # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Hópspæl STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Samband: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Vel millum eitt alnóts spæl ella eitt Local Area Network (LAN) spæl STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Alnót STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spælara navn: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Hetta er navni aðrir spælarir fara at kenna teg vi STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Navn STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Navni á spælinum STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Klientar STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Klientar online / mest loyvdir klientar{}Fyritøkur online / mest loyvdar fyritøkur STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Stødd á korti STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Stødd á korti fyri spæli{}Trýst fyri at raða eftir øki STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dato STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Núverðandi dato STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Ár STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Tali av árum{}ið spæli varir STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Mál, servara útgáva, osv. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Trýst á eitt spæl á listanum fyri at velja ta STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Servarin tú hevði samband við seinast: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Trýst fyri at velja servaran tú spældi á seinast STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}KUNNING UM SPÆL STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Klientar: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Mál: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landslag: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Stødd á korti: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Servara útgáva: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Servara bústaður: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Byrjunar dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Núverðandi dato: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Vardur við loyniorði! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVARI OFFLINE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVARI FULLUR STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}ÚTGÁVUR SAMSVARA IKKI STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF SAMSVARAR IKKI STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Tak lut í spæli STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Endurnýggja servara STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Endurnýggja kunning um servara STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Finn servara STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Leita eftir servara á netverki STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Legg servara aftrat STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Leggur ein servara til listan sum altíð verður kannaður fyri koyrandi spøl STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Set servara í gongd STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Set tín egna servara í gongd STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Skriva títt navn STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Skriva bústað hjá verti # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Byrja eitt nýtt hópspæl STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spæl navn: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Aðrir spælarar síggja navni á spælinum í hópspæl úrvals skránni STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Áset loyniorð STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Verj títt spæl við einum loyniorðið um tú ikki vil at ta skal verða opi fyri almenninginum STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Alnót STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Alnót (lýs) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" ar} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Mest loyvdir klientar: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vel mest loyvda tali av klientum. Ta er ikki neyðugt at fylla øll plássini STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} fyritøk{P a ur} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Mest loyvdar fyritøkur: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Avmarka nøgdina av fyritøkum á servaranum STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} eygleiðar{P i ar} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Mest loyvdir eygjleiðarar: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Avmarka nøgdina av eygleiðarum á servaranum STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Tungumál: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aðrir spælarir kunnu síggja hvat mál verður tosa á servaranum STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Gev netverks spælinum eitt navn # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Hvat sum helst STR_NETWORK_LANG_ENGLISH :Enskt STR_NETWORK_LANG_GERMAN :Týskt STR_NETWORK_LANG_FRENCH :Franskt STR_NETWORK_LANG_BRAZILIAN :Brasilienskt STR_NETWORK_LANG_BULGARIAN :Bulgariskt STR_NETWORK_LANG_CHINESE :Kinverskt STR_NETWORK_LANG_CZECH :Tjekkiskt STR_NETWORK_LANG_DANISH :Danskt STR_NETWORK_LANG_DUTCH :Niðurlendskt STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finskt STR_NETWORK_LANG_HUNGARIAN :Ungarskt STR_NETWORK_LANG_ICELANDIC :Íslenskt STR_NETWORK_LANG_ITALIAN :Italienskt STR_NETWORK_LANG_JAPANESE :Japanskt STR_NETWORK_LANG_KOREAN :Koreanskt STR_NETWORK_LANG_LITHUANIAN :Litauiskt STR_NETWORK_LANG_NORWEGIAN :Norskt STR_NETWORK_LANG_POLISH :Polskt STR_NETWORK_LANG_PORTUGUESE :Portugisiskt STR_NETWORK_LANG_ROMANIAN :Rumenskt STR_NETWORK_LANG_RUSSIAN :Russiskt STR_NETWORK_LANG_SLOVAK :Slovakiskt STR_NETWORK_LANG_SLOVENIAN :Slovenskt STR_NETWORK_LANG_SPANISH :Spanskt STR_NETWORK_LANG_SWEDISH :Svenskt STR_NETWORK_LANG_TURKISH :Turkiskt STR_NETWORK_LANG_UKRAINIAN :Ukrainskt STR_NETWORK_LANG_AFRIKAANS :Afrikaans STR_NETWORK_LANG_CROATIAN :Kroatiskt STR_NETWORK_LANG_CATALAN :Catalan STR_NETWORK_LANG_ESTONIAN :Estoniskt STR_NETWORK_LANG_GALICIAN :Galisiskt STR_NETWORK_LANG_GREEK :Grikskt STR_NETWORK_LANG_LATVIAN :Latviskt ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Hópspæls forhøll STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Fyrireikar samband við: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Listi yvir allar fyritøkur í hesum spælinum júst nú. Tú kann antin taka lut í einari, ella stovna eina nyggja um ta er pláss STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}KUNNING UM FYRITØKU STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Navn á fyritøku: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Stovnað: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Virði á fyritøku: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Peningur á bók júst nú: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Inntøka síðsta ár: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Avrik: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Flutningstól: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Støðir: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spælarir: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nýggja fyritøku STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Stovnað eina nýggja fyritøku STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Eygleið spæl STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Hygg eftir spælinum sum eygleiðari STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Tak lut í fyritøku STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjálp við at leiða hesa fyritøkuna # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Fær samband... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Fær samband... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Heimildar... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Bíðar... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Heintar niður kort... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Viðgerð dáta... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Skrásetur... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fær kunning um spæl til vega... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fær kunning um fyritøku til vega... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P ur ar} in front of you STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} heinta niður sum nú er STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} heinta niður sum nú er STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Slít samband STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servarin er vardur. Skriva loyniorð STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyritøka er vard. Skriva loyniorð # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Listi yvir klientar STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Eygleið STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nýggja fyritøku # Network client list STR_NETWORK_CLIENTLIST_KICK :Sparka STR_NETWORK_CLIENTLIST_BAN :Bannað STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gev pening STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tosa við øll STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tosa við fyritøku STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Persónligt boð STR_NETWORK_SERVER :Servari STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Eygleiðarar STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriva nøgdina av peningi tú vil geva # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Goym ikki skrivaða loyniorðið STR_COMPANY_PASSWORD_OK :{BLACK}Gev fyritøkuni tað nýggja loyniorðið STR_COMPANY_PASSWORD_CAPTION :{WHITE}Fyritøku loyniorð STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Vanligt fyritøku loyniorð STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Nýt hetta fyritøku loyniorðið sum vanligt fyri nýggjar fyritøkur # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Tak lut STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Tak lut og spæl sum hendan fyritøkan STR_COMPANY_VIEW_PASSWORD :{BLACK}Loyniorð STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Verj tína fyritøku við einum loyniorðið so eingin óynsktur tekur lut í henni STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Áset fyritøku loyniorð # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send STR_NETWORK_CHAT_COMPANY_CAPTION :[Lið] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Persónligt] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Øll] : STR_NETWORK_CHAT_COMPANY :[Lið] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Lið] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Persónligt] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Persónligt] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Øll] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Skriva tekst til netverks chat # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Eingi netverks tól funnin ella kompileraði uttan ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Eydnaðist ikki at finna nøkur netverks spøl STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Servarin svaraði ikki fyrispurningi STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Eydnaðist ikki at fáa samband orsakað av at NewGRF samsvaraði ikki STR_NETWORK_ERROR_DESYNC :{WHITE}Netverk-Spæl synkronisering miseydnaðist STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Netverk-Spæl samband mist STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Eydnaðist ikki at heinta goymt spæl STR_NETWORK_ERROR_SERVER_START :{WHITE}Eydnaðist ikki at seta servara í gongd STR_NETWORK_ERROR_CLIENT_START :{WHITE}Eydnaðist ikki at fáa samband STR_NETWORK_ERROR_TIMEOUT :{WHITE}Samband #{NUM} rann út STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Ein protokol feilur var funnin og sambandi bleiv lukka STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Útgávan hjá klientinum samsvarar ikki við útgávuna hjá servaranum STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Skeivt loyniorð STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Servarin er fullur STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Tú er bannaður á hesum servaranum STR_NETWORK_ERROR_KICKED :{WHITE}Tú varð sparkaður út úr spælinum STR_NETWORK_ERROR_CHEATER :{WHITE}Ikki loyvt at snýta á hesum servaranum STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tú sendi ov nógv boð til servarin STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Tú tók ov langa tíð at skriva loyniorðið STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tín telda er ov sein at fylgja við servaranum STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Tín telda tók ov langa tíð at heinta niður korti STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tín telda tók ov leinga at fáa samband við servaran ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :almenn villa STR_NETWORK_ERROR_CLIENT_DESYNC :desync villa STR_NETWORK_ERROR_CLIENT_SAVEGAME :eydnaðist ikki at heinta kort STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :samband mist STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokol villa STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF samsvarar ikki STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ikki heimilda STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :tók ímóti óviðkomandi ella óvæntaðum pakka STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :skeiv útgáva STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :navn er longu í nýstlu STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :skeivt loyniorð STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :skeiv fyritøka í DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :sparkaður av servara STR_NETWORK_ERROR_CLIENT_CHEATER :royndi at snýta STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servari fullur STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendi ov nógv boð STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :fekk ikki loyniorð til tíðina STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :tíðin rann alment út STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :tók ov langa tíð at heinta niður kort STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :viðgerð av kort tók ov langa tíð ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Møguligt sambands slit STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Tey síðstu {NUM} sekundini eru eingin dáta komin fram frá seraranum # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spæl steðga ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spæl enn steðga ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spæl enn steðga ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spæl enn steðga ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spæl enn steðga ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spæl ikki steðga ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :tal av spælarum STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :fær samband við klientar STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuelt STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spæl skript ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :rýmur STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} tekur lut í spælinum STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} tekur lut í spælinum (klient #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} tekur lut í fyritøku #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} er vorðin eygleiðari STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} hevur stovnað eina nýggja fyritøku (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} er farin úr spælinum ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hevur broytt sítt navn til {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} handaði tínari fyritøku {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Tú handaði {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servarin endaði setuna STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servarin endurbyrjar...{}Vinarliga bíða... # Content downloading window STR_CONTENT_TITLE :{WHITE}Tilfar verur heinta niður STR_CONTENT_TYPE_CAPTION :{BLACK}Slag STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Slag av tilfari STR_CONTENT_NAME_CAPTION :{BLACK}Navn STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Navni á tilfarinum STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Trýst á eina reglu fyri at síggja smálutirnar{}Trýst á flugubeinskassan fyri at marka ta til niðurheintan STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Vel alt STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marka alt tilfar til niðurheintan STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Vel betringar STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marka alt tilfar, ið er ein betring av verðandi tilfari til niðurheintan STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Vel einki STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marka alt tilfar til ikki at vera heinta niður STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Leita á útihýsis heimasíðum STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Leita eftir tilfari ikki tøkt á OpenTTD tilfars tænastu, á heimasíðum ikki knýttar at OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Tygum fara nú frá OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Treytir og umstøður fyri niðurheintan av tilfari frá útihýsis heimasíðum eru ymiskar.{}Kunning um hvussu tygum installera hetta tilfari inn í OpenTTD mugu tygum finna á hesum útihýsis heimasíðunum.{}Vilja tygum halda á fram? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/navn filtur: STR_CONTENT_OPEN_URL :{BLACK}Vitja heimasíðu STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vitja heimasíðuna fyri hetta tilfari STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Heinta niður STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Byrja at heinta niður tað valda tilfarið STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Samanløgd stødd á niðurheintan: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}KUNNING UM TILFAR STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Tú hevur ikki marka hetta at heinta niður STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Tú hevur marka hetta at heinta niður STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Hendan atbindingin er marka at heinta niður STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Tú hevur longu hetta STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Hetta tilfari er ókent og kann ikki heintast niður í OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Hetta er ein útskifting fyri verðandi {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Navn: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Útgáva: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Lýsing: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Slag: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Niðurheintingar stødd: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valt orsaka av: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Atbindingar: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Frámerki: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD er bygt uttan stuðul fyri "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... niður heintan av tilfari ikki gjørlig! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Base grafikkur STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI savn STR_CONTENT_TYPE_SCENARIO :Tilburð STR_CONTENT_TYPE_HEIGHTMAP :Hæddarkort STR_CONTENT_TYPE_BASE_SOUNDS :Base ljóð STR_CONTENT_TYPE_BASE_MUSIC :Base tónleikur STR_CONTENT_TYPE_GAME_SCRIPT :Spæli skript STR_CONTENT_TYPE_GS_LIBRARY :GS savn # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Heintar niður tilfar... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Spyr eftir fílum... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Heintar í løtuni niður {STRING} ({NUM} av {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Niðurheintan fullfíggja STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} av {BYTES} heinta niður ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Eydnaðist ikki at fáa samband við tilfars servaran... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Niðurheintan miseydnaðist... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... samband mist STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... kann ikki skriva til fílu STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Eydnaðist ikki at pakka niðurheintaða fíl út STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Vantandi grafikkur STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD tørvar grafikk fyri at virka men eingin var funnin. Loyvir tú OpenTTD at heinta niður og installera henda grafikkin? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, heinta niður grafikkin STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, gevst at spæla OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Gjøgnumskygnis møguleikar STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Sløkk/tendra gjøgnumskygni fyri skelti. Ctrl+trýst fyri at læsa STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri trø. Ctrl+trýst fyri at læsa STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri hús. Ctrl+trýst fyri at læsa STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri ídnaðir. Ctrl+trýst fyri at læsa STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri brúgvar. Ctrl+trýst fyri at læsa STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri konstruktiónir sum vitar og antennur. Ctrl+trýst fyri at læsa STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri ketulinju. Ctrl+trýst fyri at læsa STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri lessingar vísarar. Ctrl+trýst fyri at læsa STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Ger lutir ósjónligar heldur enn gjøgnumskygdar # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Hálýsing av deknings øki STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Sløkt STR_STATION_BUILD_COVERAGE_ON :{BLACK}Tendra STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Tekur í móti: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Veitur: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Bind støð saman STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bygg serstaka støð STR_JOIN_WAYPOINT_CAPTION :{WHITE}Bind waypoint saman STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg eitt serstakt waypoint # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jarnbreyta bygging STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Ravmagns jarnbreyta bygging STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Einsporað jarnbreyta bygging STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev bygging STR_RAIL_NAME_RAILROAD :{G=m}Jarnbreyt STR_RAIL_NAME_ELRAIL :Ravmagns jarnbreyt STR_RAIL_NAME_MONORAIL :Einsporað jarnbreyt STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Tok goymslu ætt STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg tok goymslan skal venda # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vel waypoint slag # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Tok støðs úrval STR_STATION_BUILD_ORIENTATION :{BLACK}Ætt STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg tok støðin skal venda STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Mongd av breytum STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Vel hvussu nógvar breytir tok støðin skal hava STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Pall longd STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vel hvussu lang tokstøðin skal verða STR_STATION_BUILD_DRAG_DROP :{BLACK}Toga & Slepp STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Bygg eina støð vi at nýta toga & slepp STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vel ein klassa av støð at vísa STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vel hvat slag av støð skal byggjast STR_STATION_CLASS_DFLT :Vanlig støð STR_STATION_CLASS_WAYP :Waypoint # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Úrval av jarnbreytateknum # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Vel jarnbreyta brúgv STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Vel vega brúgv STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brúgva úrval - trýst á ta brúnna tær dámar fyri at byggja hana STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Heingibrúgv, stál STR_BRIDGE_NAME_GIRDER_STEEL :Bjálkabrúgv, stál STR_BRIDGE_NAME_CANTILEVER_STEEL :Cantilever, stál STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Heingibrúgv, betong STR_BRIDGE_NAME_WOODEN :Træ STR_BRIDGE_NAME_CONCRETE :Betong STR_BRIDGE_NAME_TUBULAR_STEEL :Rør, stál STR_BRIDGE_TUBULAR_SILICON :Rør, silikon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vegagerð STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Sporvogna bygging # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Akfars goymslu ætt STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Vel hvønn veg akfars goymslan skal venda STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Sporvogna goymslu ætt STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Vel hvønn veg sporvogna goymslan skal venda # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Buss støð ætt STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg buss støðin skal venda STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Lastbila støð ætt STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg lastbila støðin skal venda STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Ferðafólka sporvogna støð ætt STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg ferðafólka sporvogna støðin skal venda STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Farma sporvogna støð ætt STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg farma sporvogna støðin skal venda # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Siglingarrennu bygging STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Siglingarrennir # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Skips goymslu ætt STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Vel hvønn veg skips goymslan skal venda # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Havn # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Floghavnir # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Floghavna úrval STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Vel stødd/slag av floghavn STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Floghavna klassi STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Uppseting {NUM} STR_AIRPORT_SMALL :Lítil STR_AIRPORT_CITY :Býar STR_AIRPORT_METRO :Stórbýar STR_AIRPORT_INTERNATIONAL :Altjóða STR_AIRPORT_COMMUTER :Sveiggj STR_AIRPORT_INTERCONTINENTAL :Heimsparta STR_AIRPORT_HELIPORT :Tyrlupall STR_AIRPORT_HELIDEPOT :Tyrlugoymsla STR_AIRPORT_HELISTATION :Tyrlustøð STR_AIRPORT_CLASS_SMALL :Lítlar floghavnir STR_AIRPORT_CLASS_LARGE :Stórar floghavnir STR_AIRPORT_CLASS_HUB :Floghavna miðstøð STR_AIRPORT_CLASS_HELIPORTS :Tyrlupallar STR_STATION_BUILD_NOISE :{BLACK}Óljóð framleitt: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landslags broyting # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Luta úrval STR_OBJECT_BUILD_SIZE :{BLACK}Stødd: {GOLD}{NUM} x {NUM} puntar STR_OBJECT_CLASS_LTHS :Vitar STR_OBJECT_CLASS_TRNS :Sendarir # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Trø STR_TREES_RANDOM_TYPE :{BLACK}Tilvildarlig træ sløg STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilvildarlig trø # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Lendis framleiðsla STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Skapa nýggjan tilburð STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Endurstilla landslag STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Bein burtur allar ognir hjá fyritøkum á kortinum STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Endurstilla landslag STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Er tú vís/vísur í at tú vil beina burtur allar ognir hjá fyritøkum? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bygda framleiðsla STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nýggj bygd STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stovnað nýggja bygd. Shift+trýst vísur kostnaðar meting STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Tilvildarlig bygd STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stovnað bygd á einum tilvildarligum staði STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Nógvar tilvildarligar bygdir STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Stovnað tilvildarligar bygdir kring alt korti STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Bygdar navn: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Skriva návn á bygdini STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Trýst fyri at skriva navn á bygdini STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Tilvildarligt navn STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Framleið nýtt tilvildarligt navn STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Bygda stødd: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Lítil STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Miðal STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stór STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Tilvildarligt STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vel stødd á bygdini STR_FOUND_TOWN_CITY :{BLACK}Býur STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Býir vaksa skjótari enn vanligar bygdir{}Treyta av innstillingum, eru teir størri tá teir verða stovnaðir STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Bygda vegakervi: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vel hvat vegakervi skal nýtast í hesi bygdini STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Upprunaligt STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Betri vegir STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 rimaverk STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 rimaverk STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilvildarligt # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Fíggja nýggjan ídnað STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vel ein passandi ídnað úr hesum yvirlitinum STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Nógvir tilvildarligir ídnaðir STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Stovnað tilvildarligar ídnaðir kring alt korti STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostnaður: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Kanna STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fíggja # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ídnaðar keta fyri {STRING} ídnað STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ídnaðar keta fyri {STRING} farm STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Framleiðandi ídnaðir STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Móttakandi ídnaðir STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hús STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Trýst á ídnaðin fyri at síggja veitarar og kundar STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Trýst á farmin fyri at síggja veitarar og kundar STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Vís ketu STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Vís farma veitandi og móttakandi ídnaðir STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Leinkja til lítlakort STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Vel vístu ídnaðir á lítlakorti eisini STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Vel farm STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vel farmin tú vil vísa STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Vel ídnað STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vel ídnaðin tú vil vísa # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Landslags økis kunning STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Kostnaður at reinsa: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Kostnaður at reinsa: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Inntøka tá reinsa: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigari: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Veg eigari: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Sporvogns eigari: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Jarnbreyta eigari: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Mynduleikar á staðnum: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Eingin STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatar: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Bygt: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Støð klassi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Støð slag: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Floghavna klassi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Navn á floghavn: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Navn á floghavna punti: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Farmur móttikin: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Jarnbreyta hámarksferð: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Grót STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Harðrent lendi STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bert lendi STR_LAI_CLEAR_DESCRIPTION_GRASS :Gras STR_LAI_CLEAR_DESCRIPTION_FIELDS :Markir STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Kava-klætt lendi STR_LAI_CLEAR_DESCRIPTION_DESERT :Oyðimørk STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} breyt STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} breyt við blokk teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} breyt við for teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} breyt við útvegs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} breyt við blandings teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} breyt við leið teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} breyt við einvegis leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} breyt við blokk og for teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} breyt við blokk og útvegs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} breyt við block og blandings teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} breyt við blokk og leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} breyt við blokk og einvegis leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} breyt við for og útvegis teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} breyt við for og blandings teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} breyt við for og leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} breyt við for og einvegis leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} breyt við útvegs og blandings teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} breyt við útvegs og leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} breyt við útvegs og einvegis leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} breyt við blandings og leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} breyt við blandings og einvegis leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} breyt við leiðs og einvegis leiðs teknum STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} Tok goymsla STR_LAI_ROAD_DESCRIPTION_ROAD :Vegur STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vegur við lyktapelum STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Vegur við trøum STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Akfars goymsla STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Veg/jarnbreyt krossur STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Sporvogna breyt # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (stendur í gerð) STR_LAI_TREE_NAME_TREES :Trø STR_LAI_TREE_NAME_RAINFOREST :Frumskógur STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktus plantir STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Tok støð STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Flogfars hangarur STR_LAI_STATION_DESCRIPTION_AIRPORT :Floghavn STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Lastbila lessi øki STR_LAI_STATION_DESCRIPTION_BUS_STATION :Buss støð STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Skips havn STR_LAI_STATION_DESCRIPTION_BUOY :Boyja STR_LAI_STATION_DESCRIPTION_WAYPOINT :Waypoint STR_LAI_WATER_DESCRIPTION_WATER :Vatn STR_LAI_WATER_DESCRIPTION_CANAL :Siglingarrenna STR_LAI_WATER_DESCRIPTION_LOCK :Slúsa STR_LAI_WATER_DESCRIPTION_RIVER :Løkur STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Strond ella áarbakki STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Skips goymsla # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Jarnbreyta berghol STR_LAI_TUNNEL_DESCRIPTION_ROAD :Vega berghol STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stál heingibrúgv STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stál bjálkabrúgv STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stál cantilever jarnbreyta brúgv STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Jarnbreyta heingibrúgv av styrktum betongi STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Jarnbreyta brúgv av træ STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Jarnbreyta brúgv av betong STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Jarnbreyta rør brúgv STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Veg heingibrúgv av stáli STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Veg bjálkabrúgv av stáli STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Veg cantilever brúgv av stáli STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Veg heingibrúgv av styrktum betongi STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Vega brúgv av træ STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Veg brúgv av betongi STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Veg rør brúgv STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Sendari STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Viti STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Fyritøku høvuðsborg STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ogn hjá fyritøku # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upprunalig upphavsrættindi {COPYRIGHT} 1995 Chris Sawyer, Øll rættindi umbiðin STR_ABOUT_VERSION :{BLACK}OpenTTD útgáva {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD toymi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl STR_SAVELOAD_LOAD_CAPTION :{WHITE}Heinta spæl STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Goym tilburð STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Heinta tilburð STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Heinta hæddarkort STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Goym hæddarkort STR_SAVELOAD_HOME_BUTTON :{BLACK}Trýst her fyri at leypa til verðandi vanligu goym/heinta fíluskránna STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} frí STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Listi yvir driv, fíluskráðir og goymt-spæl fílur STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Núverðandi valda navn á goymdum spæli STR_SAVELOAD_DELETE_BUTTON :{BLACK}Strika STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Strika núverðandi valda goymda spæli STR_SAVELOAD_SAVE_BUTTON :{BLACK}Goym STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Goym núverðandi spæl við tí valda navninum STR_SAVELOAD_LOAD_BUTTON :{BLACK}Heinta STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Heinta valda spæli STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spæli smálutir STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Eingin kunning tøk STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Skriva eitt navn fyri goymda spæli # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Heims framleiðsla STR_MAPGEN_MAPSIZE :{BLACK}Stødd á korti: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vel stødd av korti í puntum. Talið av tøkum puntum verur eitt sindur minni STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nr. av bygdum: STR_MAPGEN_DATE :{BLACK}Dato: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. av ídnaðum: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hædd á kava linju: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt kava linjuna eitt upp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt kava linjuna eitt niður STR_MAPGEN_RANDOM_SEED :{BLACK}Tilvildarligt sáð: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Trýst fyri at skriva tilvildarligt sáð STR_MAPGEN_RANDOM :{BLACK}Blanda STR_MAPGEN_RANDOM_HELP :{BLACK}Broyt tilvildarliga sáði ið verur nýtt til landslags framleiðslu STR_MAPGEN_LAND_GENERATOR :{BLACK}Lendis framleiðari: STR_MAPGEN_TREE_PLACER :{BLACK}Træ algoritma: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Slag av lendi: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sjóvarmáli: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Løkar: STR_MAPGEN_SMOOTHNESS :{BLACK}Mjúkleiki: STR_MAPGEN_VARIETY :{BLACK}Fjølbroytnis útluting: STR_MAPGEN_GENERATE :{WHITE}Framleið # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Kort eggir: STR_MAPGEN_NORTHWEST :{BLACK}Útnyrðingur STR_MAPGEN_NORTHEAST :{BLACK}Landnyrðingur STR_MAPGEN_SOUTHEAST :{BLACK}Landsynningur STR_MAPGEN_SOUTHWEST :{BLACK}Útsynningur STR_MAPGEN_BORDER_FREEFORM :{BLACK}Freeform STR_MAPGEN_BORDER_WATER :{BLACK}Vatn STR_MAPGEN_BORDER_RANDOM :{BLACK}Tilvildarligt STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Tilvildarligt STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuelt STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Snarðing av hæddarkorti: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Navn á hæddarkorti: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stødd: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Skriva eitt tilvildarligt sáð STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Broyt hædd á kava linju STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Broyt byrjunar ár # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Slag av tilburði STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flatt lendi STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Framleið eitt flatt lendi STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tilvildarligt lendi STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hædd á flatt lendi: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Flyt hæddina á flatt lendi eitt niður STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Flyt hæddina á flatt lendi eitt upp STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Broyt hæddina á flatt lendi # Map generation progress STR_GENERATION_WORLD :{WHITE}Framleiðir heim... STR_GENERATION_ABORT :{BLACK}Avbrót STR_GENERATION_ABORT_CAPTION :{WHITE}Avbrót framleiðslu av heimi STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vil tú verðuliga avbróta framleiðsluna? STR_GENERATION_PROGRESS :{WHITE}{NUM}% liðugt STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Heims framleiðsla STR_GENERATION_RIVER_GENERATION :{BLACK}Løks framleiðsla STR_GENERATION_TREE_GENERATION :{BLACK}Træ framleiðsla STR_GENERATION_OBJECT_GENERATION :{BLACK}Luta framleiðsla STR_GENERATION_CLEARING_TILES :{BLACK}Framleiðsa av harrendum og grýtutum øki STR_GENERATION_SETTINGUP_GAME :{BLACK}Ger spæli klárt STR_GENERATION_PREPARING_TILELOOP :{BLACK}Koyrir punta sloyfu STR_GENERATION_PREPARING_SCRIPT :{BLACK}Koyrir skript STR_GENERATION_PREPARING_GAME :{BLACK}Fyrireikar spæl # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF Innstillingar STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Víðka NewGRF kunning STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Virknir NewGRF fílar STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Ikki virknir NewGRF fílar STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Vel preset: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtur strongur: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Heinta valda preset STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Goym preset STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Goym núverðandi lista sum eitt preset STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Skriva eitt navn fyri preset STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Strika preset STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Strika núverðandi valda preset STR_NEWGRF_SETTINGS_ADD :{BLACK}Legg til STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Legg ta valdu NewGRF fíluna til tína uppseting STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Endurskanna fílar STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Dagfør listan yvir tøkar NewGRF fílar STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Flyt burtur STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Bein tann valda NewGRF fílin burtur av listanum STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Flyt upp STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Flyt tann valda NewGRF fílin upp í listanum STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Flyt niður STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Flyt tann valda NewGRF fílin niður í listanum STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Ein listi yvir NewGRF fílur ið eru installeraðar STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Áset parametur STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Vís parametur STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Tendra/sløkk litaval STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Set broytingar í gildi STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Finn vantandi tilfar á alnótini STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Kanna um vantandi tilfari kann finnast á alnótini STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Fílunavn: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Útgáva: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. samsvarandi útgáva: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Litaval: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametur: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Eingin kunning tøk STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Samsvarandi fíla ikki funnin STR_NEWGRF_SETTINGS_DISABLED :{RED}Ikki sligi til STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Samsvarar ikki við hesa útgávuna av OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Broyt NewGRF parametur STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Lat aftur STR_NEWGRF_PARAMETERS_RESET :{BLACK}Endustilla STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Áset øll parametur til teirra vanligu virði STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametur {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Tal av parametrum: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Kanna - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Uppruni STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Kanna lutin hjá upphavi STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} við {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Lutur STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Breyta slag STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} # NewGRF related 'general' warnings STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Kann ikki leggja fílu aftrat: NewGRF fílu mark rokki # NewGRF status # NewGRF 'it's broken' warnings STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tok '{VEHICLE}' hjá '{COMPANY}' hevur ógildiga longd. Hetta er helst orsaka av trupulleikum við NewGRF. Spæli kann desyncast ella krasja STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' gevur skeivar upplýsiningar STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Farma/umbygg kunning fyri '{1:ENGINE}' víkjir frá keyps listanum eftir ta er bygt. Hetta kann elva til at sjálvendurnýggjan/-umbýting ikki virkar rætt STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' elvdi til eina endaleysa sloyfu í framleiðslu endurkallinum STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Endurkall{1:HEX} kom aftur við ókendum/ógildigum úrsliti {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<ógildigur farmur> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} av <ógildigum farmi> STR_NEWGRF_INVALID_ENGINE :<ógilda flutningstól modell> STR_NEWGRF_INVALID_INDUSTRYTYPE :<ógildigur ídnaður> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannar NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skannar NewGRFs. Treytað av nøgdini kann hetta taka eina løtu... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} skannað{P ur ir} út av meting á {NUM} NewGRF{P "" s} STR_NEWGRF_SCAN_ARCHIVES :Skannar eftir skjalagoymslum # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Skelta yvirlit - {COMMA} Skelt{P i ir} STR_SIGN_LIST_MATCH_CASE :{BLACK}Samsvara stødd á bókstavum STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Tendra/sløkk samsvar millum stødd á bókstavum tá tú samanberður skelta nøvn við filtur streingin # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Broy skelta tekst STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Far til næsta skelti STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Far til fyrra skelti STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Skriva eitt navn fyri skelti # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bygdir STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ongar - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bygda nøvn - trýst á eitt navn fyri at savna høvuðs sýni á bygdina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á bygdina STR_TOWN_POPULATION :{BLACK}Heims fólkatal: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Býur) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Fólkatal: {ORANGE}{COMMA}{BLACK} Hús: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Ferðafólk síðsta mánað: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Postur síðsta mánað: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Farmur ið tørvast fyri bygda menning: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} krevst STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} krevst um veturin STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} útflýggja STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (krevst enn) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (útflýggja) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Bygdin vaksur hvønn {ORANGE}{COMMA}{BLACK} dag STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Bygdin vaksur hvønn {ORANGE}{COMMA}{BLACK} dag (fíggja) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Bygdin {BLACK}vaksur {RED}ikki STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Óljóðs mark í bygd: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á bygdina. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á bygdina STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Mynduleiki á staðnum STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vís kunning um mynduleika á staðnum STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Broyt bygda navn STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Víðka STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Vaks um støddina á bygdini STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Strika STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Strika hesa bygdina fullkomiliga STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Navngev bygd # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} Mynduleiki á staðnum STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Metingar av flutnings fyritøku: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Gerðir tøkar: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Listi yvir ting tú kann gera í hesi bygdini - trýst á punkt fyri smálutir STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Ger ta STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Før út í lívi undirstrikaðu gerðina í listanum omanfyri STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Lítl lýsinga herferð STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Miðal lýsinga herferð STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Stór lýsinga herferð STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Fíggja vega endurbygging á staðnum STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Reis eina standmynd av fyritøku eigaranum STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Fíggja nýggjar bygningar STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Keyp einkarættindi til flutning STR_LOCAL_AUTHORITY_ACTION_BRIBE :Mutra mynduleikarnar á staðnum STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Set í gongd eina lítla lýsinga herferð á staðnum, til tess at draga meira ferðafólk og farm til tínar flutnings tænastur.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Set í gongd eina miðal lýsinga herferð á staðnum, til tess at draga meira ferðafólk og farm til tínar flutnings tænastur.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Set í gongd eina stóra lýsinga herferð á staðnum, til tess at draga meira ferðafólk og farm til tínar flutnings tænastur.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Fíggja endurbyggjingina av vegakervinum á staðnum. Førir við sær munandi órógv fyri ferðsluna í upp til 6 mánaðar.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Reis eina standmynd til æru fyri tína fyritøku.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Fíggja byggingina av nýggjum handils bygningum í bygdini.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Keyp 1 ár av flutnings einkarættindum í bygdini. Bygda mynduleikin loyvir ferðafólki og farmi bert at nýta støðir hjá tínari fyritøku.{}Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Mutra mynduleikan á staðnum fyri at økju um tína meting, við vanda fyri hvassari revsing um tað verður avdúka.{}Kostnaður: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Mál STR_GOALS_GLOBAL_TITLE :{BLACK}Heimsfevnandi mál: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Einki - STR_GOALS_COMPANY_TITLE :{BLACK}Fyritøku mál: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Trýst á mál fyri at savna høvuðs sýni á ídnað/bygd/punt. Ctrl+trýst letur upp nýggjan sýnisglugga á ídnað/bygd/punt # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Spurningur STR_GOAL_QUESTION_CAPTION_INFORMATION :Kunning STR_GOAL_QUESTION_CAPTION_WARNING :Ávaring STR_GOAL_QUESTION_CAPTION_ERROR :Villa ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Angra STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nei STR_GOAL_QUESTION_BUTTON_YES :Ja STR_GOAL_QUESTION_BUTTON_DECLINE :Nokta STR_GOAL_QUESTION_BUTTON_ACCEPT :Góðtak STR_GOAL_QUESTION_BUTTON_IGNORE :Ignorera STR_GOAL_QUESTION_BUTTON_RETRY :Royn aftur STR_GOAL_QUESTION_BUTTON_PREVIOUS :Fyrra STR_GOAL_QUESTION_BUTTON_NEXT :Næsta STR_GOAL_QUESTION_BUTTON_STOP :Steðga STR_GOAL_QUESTION_BUTTON_START :Byrja STR_GOAL_QUESTION_BUTTON_GO :Far STR_GOAL_QUESTION_BUTTON_CONTINUE :Halt á fram STR_GOAL_QUESTION_BUTTON_RESTART :Endurbyrja STR_GOAL_QUESTION_BUTTON_POSTPONE :Útset STR_GOAL_QUESTION_BUTTON_SURRENDER :Gev teg upp STR_GOAL_QUESTION_BUTTON_CLOSE :Lat aftur # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Stuðulsflutningur STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Stuðulsflutningur í boði fyri tænastur ið flyta: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} (áðrenn {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Einki - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Flutningur ið longu fær stuðul: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, inntil {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Trýst á eina tænastu fyri at savna høvuðs sýni á ídnaðin/bygdina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á ídnaðin/bygdina # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nøvn á støðum - trýst á eitt navn fyri at savna høvuðs sýni á støðina. Ctrl+trýst letur upp ein nýggjan sýnisglugga á støðina STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Halt Ctrl fyri at velja meira enn eitt punkt STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Støð{P "" ir} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Eingin - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Vel allar hentleikar STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Vel øll farma sløg (íroknað farm ið ikki bíðar) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Eingin frakt av nøkrum slag bíðar # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Bíðar: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} frá {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Tekur í móti STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vís lista yvir góðtiknan farm STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Tekur í móti: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Henda støðin hevur flutnings einkarættindi í hesari bygdini. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti flutnings einkarættindi í hesi bygdini. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Metingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vís støð metingar STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Meting á staðnum av flutnings tænastu: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Ræðuligt STR_CARGO_RATING_VERY_POOR :Sera vánaligt STR_CARGO_RATING_POOR :Vánaligt STR_CARGO_RATING_MEDIOCRE :Hampuligt STR_CARGO_RATING_GOOD :Gott STR_CARGO_RATING_VERY_GOOD :Sera gott STR_CARGO_RATING_EXCELLENT :Framúrskarandi STR_CARGO_RATING_OUTSTANDING :Avberða gott ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á støðina. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á støðina STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Broyt navn á støð STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Vís øll tok ið hava hesa støðina í teirra skrá STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Vís øll akfør ið hava hesa støðina í teirra skrá STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Vís øll flogfør ið hava hesa støðina í teirra skrá STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Vís øll skip ið hava hesa støðina í teirra skrá STR_STATION_VIEW_RENAME_STATION_CAPTION :Navngev støð/lessingar øki STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Stong floghavn STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Forða flogførum í at lenda í hesari floghavnini # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á waypoint. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á waypoint STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Broyt navn á waypoint STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Savna høvuðs sýni á boyjuna. Ctrl+trýst letur nýggjan sýnisglugga upp á boyjuna STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Broyt navn á boyju STR_EDIT_WAYPOINT_NAME :{WHITE}Rætta waypoint navn # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Fíggjar støða {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Útreiðslur/Inntøkur STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Bygging STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nýggj flutningstól STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Tok rakstrar kostnaður STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Akfars rakstrar kostnaður STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Flogfars rakstrar kostnaður STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Skips rakstrar kostnaður STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Ognar viðlíkahald STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Tok inntøka STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Akfars inntøka STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Flogfars inntøka STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Skips inntøka STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Láns renta STR_FINANCES_SECTION_OTHER :{GOLD}Annað STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Í alt: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Peningur á bók STR_FINANCES_LOAN_TITLE :{WHITE}Lán STR_FINANCES_MAX_LOAN :{WHITE}Maks Lán: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Lán {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Ger láni størri. Ctrl+trýst lánir so nógv sum møguligt STR_FINANCES_REPAY_BUTTON :{BLACK}Rinda aftur {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Rinda aftur part av láni. Ctrl+trýst rindar aftur so nógv sum møguligt STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Innankervi # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Leiðari) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Stovnað: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Lit samanseting: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Flutningstól: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tok STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} akf{P ar ør} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} flogf{P ar ør} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} skip STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Einki STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Virði á fyritøku: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% ogn hjá {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Innankervi: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} jarnbreyta pett{P i ir} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} vega pett{P i ir} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vatn punt{P "" ar} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} støð punt{P "" ar} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} floghavn{P "" ir} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Einki STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bygg HB STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bygg høvuðsborg hjá fyritøku STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Sjá HB STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Sjá høvuðsborg hjá fyritøku STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flyt HB STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Endurbygg fyritøku høvuðsborg aðrastaðni fyri 1% av virðinum á fyritøkuni. Shift+trýst vísur kostnaðar meting uttan at flyta høvuðsborgina STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Smálutir STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Sjá innankervi í smálutum STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nýtt andlit STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vel eitt nýtt andlit til leiðaran STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Lit samanseting STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Broyt eyðkennislitinar hjá fyritøkuni STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Fyritøku navn STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Broyt navni á fyritøkuni STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Leiðara navn STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Broyt navni á leiðaranum STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Keyp 25% partabrøv í fyritøkuni STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sel 25% partabrøv í fyritøkuni STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Keyp 25% partabrøv í hesi fyritøkuni. Shift+trýst vísir kostnaðar meting uttan at keypa nakað partabræv STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sel 25% partabrøv í hesi fyritøkuni. Shift+trýst vísir inntøku meting uttan at selja nakað partabræv STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Navn á Fyritøku STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Navn á leiðara STR_BUY_COMPANY_MESSAGE :{WHITE}Vit leita eftir einari flutnings fyritøku at taka yvir okkara fyritøku.{}{}Vil tú keypa {COMPANY} fyri {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Innankervi hjá {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Jarnbreyta pettir: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Tekin STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vega pettir: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Vegur STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Sporvognur STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vatn puntar: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Siglingarennir STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Støðir: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Støð puntar STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Floghavnir STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/ár ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ár # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Ídnaðir STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Einki - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% flutt) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% flutt) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ídnaðar nøvn - trýst á eitt navn fyri at savna høvuðs sýni á ídnað. Ctrl+trýst letur ein nýggjan sýnisglugga upp á ídnaðin # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Framleiðsla síðsta mánað: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% flutt) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á ídnaðin. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á ídnaðin STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Framleiðslu støði: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tørvar: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Farmur ið bíðar eftir at verða viðgjørdur: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Framleiður: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Framleiður: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Broyt framleiðslu (fald av 8, upp til 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Broyt framleiðslu støði (prosent, upp til 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tok STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Akf{P ar ør} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Skip STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Flogf{P ar ør} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Tok - trýst á tok fyri kunning STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Akfør - trýst á akfar fyri kunning STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skip - trýst á skip fyri kunning STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Flogfør - trýst á flogfar fyri kunning STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Vinningur hetta ári: {CURRENCY_LONG} (síðsta ár: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Tøk tok STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Tøk akfør STR_VEHICLE_LIST_AVAILABLE_SHIPS :Tøk skip STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Tøk flogfør STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Sjá yvirlit av tøkum motor sniðum fyri hetta slagi av flutningstóli STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Umsit lista STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send boð til øll flutningstól í hesum lista STR_VEHICLE_LIST_REPLACE_VEHICLES :Být um flutningstól STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send til eftirlit STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Send til goymslu STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Send til goymslu STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send til goymslu STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send til hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Trýst fyri at steðga øllum flutningstólum í listanum STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Trýst fyri at seta á gongd øll flutningstól í listanum STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Deild boð hjá {COMMA} flutningstól{P i um} # Group window STR_GROUP_ALL_TRAINS :Øll tok STR_GROUP_ALL_ROAD_VEHICLES :Øll akfør STR_GROUP_ALL_SHIPS :Øll skip STR_GROUP_ALL_AIRCRAFTS :Øll flogfør STR_GROUP_DEFAULT_TRAINS :Óbólkaði tok STR_GROUP_DEFAULT_ROAD_VEHICLES :Óbólkaði akfør STR_GROUP_DEFAULT_SHIPS :Óbólkaði skip STR_GROUP_DEFAULT_AIRCRAFTS :Óbólkaði flogfør STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Bólkar - trýst á ein bólk fyri at síggja øll flutningstól í hesum bólki STR_GROUP_CREATE_TOOLTIP :{BLACK}Trýst fyri at gera ein bólk STR_GROUP_DELETE_TOOLTIP :{BLACK}Strika valda bólkin STR_GROUP_RENAME_TOOLTIP :{BLACK}Navngev valda bólkin STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Trýst fyri at verja hendan bólkin móti alheims sjálvendurnýggjan STR_GROUP_ADD_SHARED_VEHICLE :Legg deild flutningstól til STR_GROUP_REMOVE_ALL_VEHICLES :Bein øll flutningstól burtur STR_GROUP_RENAME_CAPTION :{BLACK}Navngev ein bólk # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nýggj jarnbreyta flutningstól STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nýggj ravmagns jarnbreyta flutningstól STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nýggj einsporaði jarnbreyta flutningstól STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nýggj maglev flutningstól STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nýggj jarnbreyta flutningstól STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nýggj akfør STR_BUY_VEHICLE_SHIP_CAPTION :Nýggj skip STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nýggj flogfør STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Kostnaður: {GOLD}{CURRENCY_LONG}{BLACK} Vekt: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ferð: {GOLD}{VELOCITY}{BLACK} Megi: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Ferð: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ferð á havi: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ferð í siglingarrennu/løki: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Rakstrar kostnaður: {GOLD}{CURRENCY_LONG}/ár STR_PURCHASE_INFO_CAPACITY :{BLACK}Pláss: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(kann umbyggjast) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Sniðgivi: {GOLD}{NUM}{BLACK} Livitíð: {GOLD}{COMMA} ár STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maks. Álítandi: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Kostnaður: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Vekt: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Kostnaður: {GOLD}{CURRENCY_LONG}{BLACK} Ferð: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Pláss: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Mótorbúnir vognar: {GOLD}+{POWER}{BLACK} Vekt: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kann umbyggjast til: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Øll farma sløg STR_PURCHASE_INFO_ALL_BUT :Alt uttan {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. Dráttar ómak: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Vídd: {GOLD}{COMMA} puntar STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Tok úrvals yvirlit - trýst á eitt flutningstól fyri kunning STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Akfar úrvals yvirlit - trýst á eitt akfar fyri kunning STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skipa úrvals yvirlit - trýst á eitt skip fyri kunning STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flogfar úrvals yvirlit - trýst á eitt flogfar fyri kunning STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Keyp flutningstól STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Keyp akfar STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Keyp skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Keyp flogfar STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða tok flutningstóli. Shift+trýst vísur kostnaðar meting uttan at keypa STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða akfari. Shift+trýst vísur kostnaðar meting uttan at keypa STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða skipi. Shift+trýst vísur kostnaðar meting uttan at keypa STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Keyp undirstrikaða flogfari. Shift+trýst vísur kostnaðar meting uttan at keypa STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Navngev STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Navngev STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Navngev STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Navngev STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Navngev slagi av tok flutningstóli STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Navngev slagi av akfari STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Navngev slagi av skipi STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Navngev slagi av flogfari STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Navngev slagi av tok flutningstóli STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Navngev slagi av akfari STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Navngev slagi av skipi STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Navngev slagi av flogfari # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Broyt navn á goymslu STR_DEPOT_RENAME_DEPOT_CAPTION :Navngev goymslu STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} flutningstól {STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Tok - toga flutningstól við vinstra-trýsti fyri at leggja til/beina burtur frá toki, høgra-trýst fyri kunning. Halt Ctrl fyri at seta báðar funkur í gildi fyri eftirfylgjandi ketu STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Akfør - høgra-trýst á akfar fyri kunning STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skip - høgra-trýst á skip fyri kunning STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flogfør - høgra-trýst á flogfar fyri kunning STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Toga tok flutningstól higar fyri at selja tað STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Toga akfar higar fyri at selja tað STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Toga skip higar fyri at selja tað STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Toga flogfar higar fyri at selja tað STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Toga tok motor higar fyri at selja alt toki STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sel øll tokini í goymsluni STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sel øll akførini í goymsluni STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Sel øll skipini í goymsluni STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Sel øll flogførini í goymsluni STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Sjálvumbýt øll tokini í goymsluni STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Sjálvumbýt øll akførini í goymsluni STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Sjálvumbýt øll skipini í goymsluni STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Sjálvumbýt øll flogførini í hangarinum STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nýggj flutningstól STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nýggj akfør STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nýggj skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nýggj flogfør STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt tok flutningstól STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt akfar STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Keyp nýtt flogfar STR_DEPOT_CLONE_TRAIN :{BLACK}Klona tok STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klona akfar STR_DEPOT_CLONE_SHIP :{BLACK}Klona skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klona flogfar STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Keyp eitt avrit av einum toki íroknað allar vognarnar. Trýst á henda knøttin og síðani eitt tok innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Keyp eitt avrit av einum akfari. Trýst á henda knøttin og síðani eitt akfar innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Keyp eitt avrit av einum skipi. Trýst á henda knøttin og síðani eitt skip innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Keyp eitt avrit av einum flogfari. Trýst á henda knøttin og síðani eitt flogfar innanfyri ella uttanfyri goymsluna. Ctrl+trýst deilur boðini. Shift+trýst vísur kostnaðar meting uttan at keypa STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á tok goymslu. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á tok goymsluna STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á akfars goymsluna. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á akfars goymsluna STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á skips goymsluna. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á skips goymsluna STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Savna høvuðs sýni á hangarin. Ctrl+trýst letur nýggjan sýnisglugga upp við sýni á hangarin STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum tokum ið hava hesa goymsluna í teirra boðum STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum akførum ið hava hesa goymsluna í teirra boðum STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum skipum ið hava hesa goymsluna í teirra boðum STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lat upp eitt yvirlit við øllum flogførum ið hava nakran hangar í hesari floghavnini í teirra boðum STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Trýst fyri at steðga øllum tokunum innanfyri goymsluna STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Trýst fyri at steðga øllum akførunum innanfyri goymsluna STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Trýst fyri at steðga øllum skipunum innanfyri goymsluna STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Trýst fyri at steðga øllum flogførunum innanfyri hangarin STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll tokini innanfyri goymsluna STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll akførini innanfyri goymsluna STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll skipini innanfyri goymsluna STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Trýst fyri at seta í gongd øll flogførini innanfyri hangarin STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Tú er í holt við at selja øll flutningstólini í goymsluni. Er tú vísur í tí? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Boð frá framleiðarinum av flutningstólinum STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vit hava júst sniðgivi eitt nýtt {STRING} - hevði tú havt áhuga í einkarrættindum at nýtt hetta flutningstóli í eitt ár, so vit kunnu síggja hvussu ta virkar áðrenn vit gera ta tøkt á marknaðinum? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :jarnbreyta lokomotiv STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}akfar STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}flogfar STR_ENGINE_PREVIEW_SHIP :skip STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einsporað lokomotiv STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomotiv STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnaður: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Ferð: {VELOCITY} Megi: {POWER}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár{}Pláss: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnaður: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Ferð: {VELOCITY} Megi: {POWER} Maks. D.Ó.: {6:FORCE}{}Rakstrar kostnaður: {4:CURRENCY_LONG}/ár{}Pláss: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}, {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY} Vídd: {COMMA} puntar{}Pláss: {CARGO_LONG}, {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY} Vídd: {COMMA} puntar{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Být um {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Tok STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=n}Akfar STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :{G=n}Flogfar STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vel slagi av motori at býta um STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vel ta nýggja slagi av motori tú vil nýta ið staðin fyri tann tú valdi til vinstru STR_REPLACE_VEHICLES_START :{BLACK}Byrja umbýting av flutningstólum STR_REPLACE_VEHICLES_NOW :Být øll flutningstól um nú STR_REPLACE_VEHICLES_WHEN_OLD :Být bert gomul flutningstól um STR_REPLACE_HELP_START_BUTTON :{BLACK}Trýst fyri at byrja umbýtanina av motor slagnum tú valdi á vinstru síðu við tað tú valdi á høgru síðu STR_REPLACE_NOT_REPLACING :{BLACK}Býtur ikki um STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Einki flutningstól valt STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} tá gamalt STR_REPLACE_VEHICLES_STOP :{BLACK}Steðga umbýting av flutningstólum STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Trýst fyri at steðga umbýtanini av motor slagnum tú valdi á vinstru síðu STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Býtur um: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift ímillum motor og vogna umbýtingar vindeyga STR_REPLACE_ENGINES :Motorar STR_REPLACE_WAGONS :Vognar STR_REPLACE_HELP_RAILTYPE :{BLACK}Vel jarnbreyta slagi hjá motorunum tú vil býta um STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Vísur hvønn motor tann markai á vinstru síðu verður býttur um vi, um nakran STR_REPLACE_RAIL_VEHICLES :Jarnbreyta flutningstól STR_REPLACE_ELRAIL_VEHICLES :Ravmagns jarnbreyta flutningstól STR_REPLACE_MONORAIL_VEHICLES :Einsporaði jarnbreyta flutningstól STR_REPLACE_MAGLEV_VEHICLES :Maglev flutningstól STR_REPLACE_REMOVE_WAGON :{BLACK}Vogn burturrudding: {ORANGE}{STRING} # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lessar / Avlessar STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Fer avstað STR_VEHICLE_STATUS_CRASHED :{RED}Krasja! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Maskinskaði STR_VEHICLE_STATUS_STOPPED :{RED}Steðga STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Steðgar, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Eingin megi STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Bíðar eftir fríari leið STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Ov langt burtur frá næsta ferðamáli STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Á veg til {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Eingi boð, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Á veg til {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Á veg til {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Eftirlit í {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Steðga STR_VEHICLE_COMMAND_STOPPED :{RED}Steðga STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Starta STR_VEHICLE_COMMAND_STARTED :{GREEN}Starta # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Smálutir) STR_VEHICLE_NAME_BUTTON :{BLACK}Navn STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Gev tokinum eitt navn STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Gev akfarinum eitt navn STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Gev skipinum eitt navn STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Gev flogfarinum eitt navn STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aldur: {LTBLUE}{STRING}{BLACK} Rakstrar kostnaður: {LTBLUE}{CURRENCY_LONG}/ár # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. ferð: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. ferð: {LTBLUE}{VELOCITY} {BLACK}Vídd: {LTBLUE}{COMMA} puntar STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Megi: {LTBLUE}{POWER}{BLACK} Maks. ferð: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Megi: {LTBLUE}{POWER}{BLACK} Maks. ferð: {LTBLUE}{VELOCITY} {BLACK}Maks. D.Ó.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinningur hetta ári: {LTBLUE}{CURRENCY_LONG} (síðsta ár: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Álítandi: {LTBLUE}{COMMA}% {BLACK}Maskinskaðar síðan síðsta eftirlit: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Bygt: {LTBLUE}{NUM}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Pláss: {LTBLUE}Einki{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Pláss: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Pláss: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Pláss: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Umskipanar góðskriving: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Eftilits títtleiki: {LTBLUE}{COMMA}dagar{BLACK} Síðsta eftirlit: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Eftirlits títtleiki: {LTBLUE}{COMMA}%{BLACK} Síðsta eftirlit: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vaks eftirlits títtleika vi 10. Ctrl+trýst vaksir eftirlits títtleika vi 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minka eftirlits títtleika vi 10. Ctrl+trýst minkar eftirlits títtleika vi 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Broyt eftirlits interval typu STR_VEHICLE_DETAILS_DEFAULT :Vanligt STR_VEHICLE_DETAILS_DAYS :Dagar STR_VEHICLE_DETAILS_PERCENT :Prosent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Gev tokinum eitt navn STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Gev akfarinum eitt navn STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Gev skipinum eitt navn STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Gev flogfarinum eitt navn # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Bygt: {LTBLUE}{NUM}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Samanlagda farma pláss í hesum toki: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Tómt STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} frá {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} frá {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Farmur STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Vís smálutir um farmin umborð STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Kunning STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Vís smálutir um tok flutningstólini STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Pláss STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Vís plássi á hvørjum flutningstóli STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Farmur í alt STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Vís samanlagda plássi í toki, deilt eftir farma slagi STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Pláss: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Umbygg) STR_REFIT_TITLE :{GOLD}Vel slag av farmi at føra: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}{}{BLACK}Kostnaður av umbygging: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}{}{BLACK}Inntøka av umbygging: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kostnaður av umbygging: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nýtt pláss: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Inntøka av umbygging: {GREEN}{CURRENCY_LONG} STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Umbygg tok STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Umbygg akfar STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Umbygg skip STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Umbygg flogfar # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Boð) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Tíðarætlan STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Endi á boðum - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Endi á deildum boðum - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Non-stop STR_ORDER_GO_TO :Far til STR_ORDER_GO_NON_STOP_TO :Far non-stop til STR_ORDER_GO_VIA :Far via STR_ORDER_GO_NON_STOP_VIA :Far non-stop via STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Fult less onkrun farmi STR_ORDER_DROP_LOAD_IF_POSSIBLE :Lessa um tøkt STR_ORDER_DROP_FULL_LOAD_ALL :Fult less allan farm STR_ORDER_DROP_FULL_LOAD_ANY :Fult less onkran farm STR_ORDER_DROP_NO_LOADING :Eingin lessing STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Broyt lessingar atburðin hjá undirstrikaða boðinum STR_ORDER_TOGGLE_UNLOAD :{BLACK}Avlessa alt STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Avlessa um góðtiki STR_ORDER_DROP_UNLOAD :Avlessa alt STR_ORDER_DROP_TRANSFER :Umskipa STR_ORDER_DROP_NO_UNLOADING :Eingin avlessing STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Broyt avlessingar atburðin hjá undirstrikaða boðinum STR_ORDER_REFIT :{BLACK}Umbygg STR_ORDER_REFIT_AUTO :{BLACK}Sjálvumbygg STR_ORDER_DROP_REFIT_AUTO :Ávisur farmur STR_ORDER_DROP_REFIT_AUTO_ANY :Tøkur farmur STR_ORDER_SERVICE :{BLACK}Eftirlit STR_ORDER_DROP_GO_ALWAYS_DEPOT :Far altíð STR_ORDER_DROP_SERVICE_DEPOT :Eftirlit um neyðugt STR_ORDER_DROP_HALT_DEPOT :Steðga # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Lessingar prosent STR_ORDER_CONDITIONAL_RELIABILITY :Álítandi STR_ORDER_CONDITIONAL_MAX_SPEED :Mesta ferð STR_ORDER_CONDITIONAL_AGE :Aldur (ár) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Tørvar eftirlit STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Altíð STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Eftirverandi livitíð (ár) STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er líka sum STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :er ikki líka sum STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :er minni enn STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er minni enn ella líka sum STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :er meira enn STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er meira enn ella líka sum STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :er satt STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :er ósatt STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Skriva eitt virði at samanbera við STR_ORDERS_SKIP_BUTTON :{BLACK}Leyp um STR_ORDERS_SKIP_TOOLTIP :{BLACK}Leyp verðandi boð um, og byrja næsta. Ctrl+trýst leypur til ta valda boðið STR_ORDERS_DELETE_BUTTON :{BLACK}Strika STR_ORDERS_DELETE_TOOLTIP :{BLACK}Strika undirstrikaða boði STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Strika øll boð STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Steðga deiling STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Steðga við at deila boðs listan. Ctrl+trýst strikar eisini øll boðini hjá flutningstólinum STR_ORDERS_GO_TO_BUTTON :{BLACK}Far til STR_ORDER_GO_TO_NEAREST_DEPOT :Far til nærmastu goymslu STR_ORDER_GO_TO_NEAREST_HANGAR :Far til nærmasta hangar STR_ORDER_CONDITIONAL :Treytað boðs lop STR_ORDER_SHARE :Deil boð STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Set eini nýggj boð inn áðrenn undirstrikaðu boðini, ella legg til endan á listanum. Ctrl gerð boð á støðum 'fult less onkran farm', waypoint boð 'non-stop' og goymslu boð 'eftirlit'. 'Deil boð' ella Ctrl letur hetta flutningstóli deila boð við valda flutningstóli. Trýstur tú á eitt flutningstól avritar tú boðini hjá tí flutningstólinum. Boð um at fara til goymsluna ógildar sjálvvirkandi eftirliti av flutningstólinum STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Vís øll flutningstól ið deila hesa skránna # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Far via {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Far non-stop via {WAYPOINT} STR_ORDER_SERVICE_AT :Eftirlit í STR_ORDER_SERVICE_NON_STOP_AT :Eftirlit non-stop í STR_ORDER_NEAREST_DEPOT :nærmastu STR_ORDER_NEAREST_HANGAR :nærmasti hangarur STR_ORDER_TRAIN_DEPOT :Tok goymsla STR_ORDER_ROAD_VEHICLE_DEPOT :Akfars goymsla STR_ORDER_SHIP_DEPOT :Skips goymsla STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Bygg um til {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Bygg um til {STRING} og steðga) STR_ORDER_STOP_ORDER :(Steðga) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Undirskilt) STR_ORDER_FULL_LOAD :(Fult less) STR_ORDER_FULL_LOAD_ANY :(Fult less onkran farm) STR_ORDER_NO_LOAD :(Eingin lessing) STR_ORDER_UNLOAD :(Avlessa og tak farm) STR_ORDER_UNLOAD_FULL_LOAD :(Avlessa og bíða eftir fullum lessi) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Avlessa og bíða eftir onkrun fullum lessi) STR_ORDER_UNLOAD_NO_LOAD :(Avlessa og far avstað tómur) STR_ORDER_TRANSFER :(Umskipa og tak farm) STR_ORDER_TRANSFER_FULL_LOAD :(Umskipa og bíða eftir fullum lessi) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Umskipa og bíða eftir onkrun fullum lessi) STR_ORDER_TRANSFER_NO_LOAD :(Umskipa og far avstað tómur) STR_ORDER_NO_UNLOAD :(Eingin avlessing og tak farm) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Eingin avlessing og bíða eftir fullum lessi) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Eingin avlessing og bíða eftir onkrun fullum lessi) STR_ORDER_NO_UNLOAD_NO_LOAD :(Eingin avlessing og eingin lessing) STR_ORDER_AUTO_REFIT :(Sjálvumbygg til {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Fult less við sjálvumbygg til {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Fult less onkran farm við sjálvumbygg til {STRING}) STR_ORDER_UNLOAD_REFIT :(Avless og tak farm við sjálvumbygg til{STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Avlessa og bíða eftir fullum lessi við sjálvumbygg til {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Avless og bíða eftir onkrun fullum lessi við sjálvumbygg til {STRING}) STR_ORDER_TRANSFER_REFIT :(Umskipa og tak farm við sjálvumbygg til {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Umskipa og bíða eftir fullum lessi við sjálvumbygg til {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Umskipa og bíða eftir onkrun fullum lessi við sjálvumbygg til {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Eingin avlessing og tak farm við sjálvumbygg til {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Eingin avlessing og bíða eftir fullum lessi við sjálvumbygg til {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Eingin avlessing og bíða eftir onkrun fullum lessi við sjálvumbygg til {STRING}) STR_ORDER_AUTO_REFIT_ANY :tøkur farmur STR_ORDER_STOP_LOCATION_NEAR_END :[nær endandum] STR_ORDER_STOP_LOCATION_MIDDLE :[miðjuni] STR_ORDER_STOP_LOCATION_FAR_END :[fjart endanum] STR_ORDER_OUT_OF_RANGE :{RED} (Næsta ferðamál er uttanfyri vídd) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Leyp til boð {COMMA} STR_ORDER_CONDITIONAL_NUM :Leyp til boð {COMMA} tá {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Leyp til boð {COMMA} tá {STRING} {STRING} STR_INVALID_ORDER :{RED} (Ógildig boð) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Tíðarætlan) STR_TIMETABLE_ORDER_VIEW :{BLACK}Boð STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Skift til boðs sýni STR_TIMETABLE_NO_TRAVEL :Ferðast ikki STR_TIMETABLE_DAYS :{COMMA} dag{P "" ar} STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Broyt mest loyvdu ferðina á undirstrikaða boðinum STR_TIMETABLE_EXPECTED :{BLACK}Væntað STR_TIMETABLE_SCHEDULED :{BLACK}Ætlað STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift ímillum væntað og ætlað STR_TIMETABLE_ARRIVAL_ABBREVIATION :K: STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Áset dato STR_DATE_SET_DATE :{BLACK}Áset dato STR_DATE_SET_DATE_TOOLTIP :{BLACK}Nýt ta valdu dagfestingina sum bryjunar dato fyri tíðarætlanina STR_DATE_DAY_TOOLTIP :{BLACK}Vel dag STR_DATE_MONTH_TOOLTIP :{BLACK}Vel mánað STR_DATE_YEAR_TOOLTIP :{BLACK}Vel ár # AI debug window STR_AI_DEBUG :{WHITE}AI/Spæl skript debug STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Navni á skriptinum STR_AI_DEBUG_SETTINGS :{BLACK}Innstillingar STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Broyt innstillingar í skriptinum STR_AI_DEBUG_RELOAD :{BLACK}Endurheinta AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Drep AI, endurheinta skripti, og endurbyrja AI STR_AI_DEBUG_MATCH_CASE :{BLACK}Samsvara stødd á bókstavum STR_AI_DEBUG_CONTINUE :{BLACK}Halt á fram STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Set í gongd og halt á fram við AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Sjá debug outputti fyri hetta AI STR_AI_GAME_SCRIPT :{BLACK}Spæl script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kanna spæl script skránna STR_ERROR_AI_NO_AI_FOUND :Einki hóskandi AI funni at heinta.{}Hetta AI er ein gina og ger einki.{}Tú kann heinta niður fleiri ymisk AI gjøgnum 'Online tilfar' kervi STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Eitt av scriptunum ið koyra er krasja. Vinarliga melda hetta til script rithøvundan saman við eini skermmynd av AI/spæli script debug glugganum STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Game script debug gluggi er einans tøkur fyri servaran # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/Spæli script innstillingar STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spæli scripti sum verður heinta í næsta spæli STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI sum verða heintaði í næsta spæli STR_AI_CONFIG_HUMAN_PLAYER :Menniskja spælari STR_AI_CONFIG_RANDOM_AI :Tilvildarligt AI STR_AI_CONFIG_NONE :(einki) STR_AI_CONFIG_MOVE_UP :{BLACK}Flyt upp STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Flyt valda AI upp í listanum STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flyt niður STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flyt valda AI niður í listanum STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spæli script STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE :{BLACK}Vel {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spæli script STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Heinta eitt annað script STR_AI_CONFIG_CONFIGURE :{BLACK}Innstilla STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Innstilla script parametur # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Tøk {STRING} STR_AI_LIST_CAPTION_AI :AI STR_AI_LIST_CAPTION_GAMESCRIPT :Spæli script STR_AI_LIST_TOOLTIP :{BLACK}Trýst fyri at velja eitt script STR_AI_LIST_AUTHOR :{LTBLUE}Rithøvundur: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Útgava: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Góðtak STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vel undirstrikaða scripti STR_AI_LIST_CANCEL :{BLACK}Angra STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ikki broyta scripti # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametur STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spæl Script STR_AI_SETTINGS_CLOSE :{BLACK}Lat aftur STR_AI_SETTINGS_RESET :{BLACK}Endurstilla STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Tali av døgum til hetta AI byrjar aftaná tað fyrra (umleið): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme fyri {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} broytingarskrá fyri {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} loyvi fyri {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Sjá readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Broytingarskrá STR_TEXTFILE_VIEW_LICENCE :{BLACK}Loyvi # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kostnaður: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kostnaður: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Inntøka: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Inntøka: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Umskipan: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Umskipan: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Kostnaðar meting: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Inntøku meting: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Goyming er enn í gongd,{}vinarliga bíða til ta er liðugt! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálvgoymsla eydnaðist ikki STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ikki ført fyri at lesa drev STR_ERROR_GAME_SAVE_FAILED :{WHITE}Eydnaðist ikki at goyma spæl{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ikki ført fyri at strika fílu STR_ERROR_GAME_LOAD_FAILED :{WHITE}Eydnaðist ikki at heinta spæl{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innanhýsis villa: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Goymda spæli er broti - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Goymda spæli er frá nýggjari útgávu STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fílur kann ikki lesast STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Kann ikki skriva til fíl STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Kanning av dátu integriteti eydnaðist ikki STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spæl var goymt í útgavu sum ikki stuðlar sporvognum. Allir sporvognar eru burtur beindir # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kort framleiðsla steðga...{}... eingi hóskandi støð til bygdir STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... eingin bygd í hesum tilburðið STR_ERROR_PNGMAP :{WHITE}Kann ikki heinta landslag frá PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fíla ikki funnin STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... eydnaðist ikki at skifta um myndaslag. 8 ella 24-bit PNG mynd neyðug STR_ERROR_PNGMAP_MISC :{WHITE}... okkurt riggaði ikki (helst oyðiløgd fíla) STR_ERROR_BMPMAP :{WHITE}Kann ikki heinta landslag frá BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... eydnaðist ikki at skifta um mynda slag STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... mynd er ov stór STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Støddar ávaring STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Tað er ikki viðmælt at broyta støddina á keldu kortinum ov nógv. Halda á fram við framleiðsluni? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Einans eitt fyribils ljóð sett var funni. Um tú vil hava ljóð, installera eitt ljóð sett gjøgnum tilfarðs niðurheintanar kervi # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Risa skermmynd STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skermmyndin fer at hava eina upploysn uppá {COMMA} x {COMMA} pikslar. Tøka av skermmyndini kann koma at taka eina góða løtu. Vil tú halda á fram? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermmynd goymd við góðum úrsliti sum '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skermmynd eydnaðist ikki! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Boð STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Boð frá {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Útav eggini á kortinum STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Ov tætt við eggina á kortinum STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Ikki nóg miki av peningi - neyðugt er vi {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Flatt lendi neyðugt STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Lendi hellur skeivan veg STR_ERROR_CAN_T_DO_THIS :{WHITE}Kann ikki gera hetta... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Bygningur má brótast niður fyrst STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kann ikki reinsa hetta øki... STR_ERROR_SITE_UNSUITABLE :{WHITE}... stað óhóskandi STR_ERROR_ALREADY_BUILT :{WHITE}... longu bygt STR_ERROR_OWNED_BY :{WHITE}... ogn hjá {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... øki er ogn hjá aðrari fyritøku STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... marki fyri landslags broyting er rokki STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... marki at reinsa puntar er rokki STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... marki fyri at planta trø er rokki STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Navn má vera serstakt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} í vegin STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ikki loyvt meðan steðgur er # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} mynduleikanir á staðnum sýta fyri at loyva hesum STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} mynduleikanir á staðnum sýta fyri at loyva at byggja eina aðra floghavn í hesi bygdini STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} mynduleikin á staðnum sýtur at loyva floghavn vegna stúran um óljóð STR_ERROR_BRIBE_FAILED :{WHITE}Tín roynd at mutra er avdúka av einum landsparta kanningarleiðara # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Kann ikki hækka lendi her... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Kann ikki lækka lendi her... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Kann ikki javna lendi her... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Útgrevstur hevði gjørt skaða á berghol STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... longu við sjóvarmálan STR_ERROR_TOO_HIGH :{WHITE}... ov høgt STR_ERROR_ALREADY_LEVELLED :{WHITE}... longu flatt # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kann ikki broyta navn á fyritøku... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kann ikki broyta navn á leiðara... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... hægst loyvda lán er {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kann ikki lána meira pening... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... einki lán at gjalda aftur STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} neyðugar STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kann ikki gjalda lán aftur... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kann ikki geva pening burtur ið er lándur frá bankanum... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kann ikki keypa fyritøku... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kann ikki byggja fyritøku høvuðsborg... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kann ikki keypa 25% partabræv í hesi fyritøkuni... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kann ikki selja 25% partabræv í hesari fyritøkuni... STR_ERROR_PROTECTED :{WHITE}Hendan fyritøkan er ikki nóg gomul at býta partabrøv enn... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kann ikki byggja bygdir... STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kann ikki navngeva bygd... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kann ikki stovna bygd her... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kann ikki vaksa um bygdina... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... ov tætt við eggina á kortinum STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ov tætt við eina aðra bygd STR_ERROR_TOO_MANY_TOWNS :{WHITE}... ov nógvar bygdir STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... tað er einki pláss eftir á kortinum STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Bygdin byggir ikki vegir. Tú kanst tendra vega byggjing í Víðkaðir Innstillingar->Búðskapur->Bygdir STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veg arbeiði í gongd STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Kann ikki strika hesa bygdina...{}Ein støð ella goymsla vísur til bygdina, ella ein puntur ið er ogn hjá bygdini kann ikki beinast burtur STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... einki hóskandi stað til eina standmynd í miðjuni av hesi bygdini # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... ov nógvir ídnaðir STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann ikki framleiða ídnaðir... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kann ikki byggja {STRING} her... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kann ikki byggja hetta ídnaðar slagi her... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ov nær við annan ídnað STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... neyðugt at stovna bygd fyrst STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... einans ein loyvd per bygd STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kann einans byggjast í bygdum við einum fólkatalið á minst 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kann einans byggjast í frumskógar økjum STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kann einans byggjast í oyðimarka økjum STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kann einans byggjast í bygdum (í staðin fyri hús) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... kann einans byggjast nær bygdar miðum STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kann einans byggjast í lágum økjum STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kann einans setast nær við eggina av kortinum STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skógur kann einans plantast omanfyri kava-linjuna STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... kann einans byggjast omanfyri kava-linjuna STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... kann einans byggjast niðanfyri kava-linjuna # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kann ikki byggja tok støð her... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kann ikki byggja buss støð... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kann ikki byggja lastbila støð... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kann ikki byggja ferðafólks sporvogna støð... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kann ikki byggja farma sporvogna støð... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Kann ikki byggja havn her... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kann ikki byggja flogvøll her... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Førðir meira enn eina verðandi støð/lessi øki saman STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... støð ov tamba út STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Ov nógvar støðir/lessi øki STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Ov nógvir tok støð deilir STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Ov nógvir buss steðgir STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Ov nógvar lastbila støðir STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Ov tætt við eina aðra støð/lessi øki STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Ov tætt við eina aðra havn STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Ov tætt við eina aðra floghavn STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kann ikki navngeva støð... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... hesin vegurin er bygdar ogn STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vegur fer skeivan veg STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gjøgnumkoyrings steðgir kunnu ikki hava horn STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjøgnum koyrings steðgir kunnu ikki hava samanrenningar # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kann ikki beina burtur deil av støð... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Neyðugt at beina burtur tok støð fyrst STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kann ikki beina burtur bus støð... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kann ikki beina burtur lastbila støð... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kann ikki beina burtur ferðafólka sporvogna støð... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kann ikki beina burtur farma sporvogna støð... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Neyðugt at beina burtur veg steðg fyrst STR_ERROR_THERE_IS_NO_STATION :{WHITE}... eingin støð er her STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Neyðugt at bróta niður tok støð fyrst STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Neyðugt at bróta biður bus støð fyrst STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Neyðugt at bróta niður lastbila støð fyrst STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Neyðugt at bróta niður ferðafólka sporvogna støð fyrst STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Neyðugt at bróta niður frakt sporvogna støð fyrst STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Neyðugt at bróta havn niður fyrst STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Neyðugt at bróta flogvøll niður fyrst # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Førir saman meira enn eitt verðandi waypoint STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Ov nær vi eitt annað waypoint STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kann ikki byggja tok waypoint her... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kann ikki seta boyju her... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kann ikki broyta navn á waypoint... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kann ikki beina burtur tok waypoint her... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Neyðugt at beina burtur jarnbreyta waypoint fyrst STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boyja í vegin STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boyja verður nýtt av eini aðrari fyritøku! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kann ikki byggja tok goymslu her... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kann ikki byggja akfars goymslu her... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kann ikki byggja sporvogna goymslu her... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kann ikki byggja skips goymslu her... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Kann ikki navngeva goymslu STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... má verða steðga inni í einari goymslu STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... má verða steðga inni í einari goymslu STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... má verða steðga inni í einari goymslu STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... má verða steðga inni í einum hangari STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Tok kunnu einans borytast tá tey eru steðga í eini goymslu STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tok ov langt STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kann ikki venda akfari vi... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... inniheldur fleiri eindir STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Spor sløg passa ikki saman STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kann ikki flyta akfar... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Aftari tok motorur fylgjur altíð tí fremra tok motorinum STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ikki førur fyri at finna veg til nærðendis goymslu STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ikki førur fyri at finna nærðendis goymslu STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Skeivt goymslu slag # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er ov langt aftaná umbýting STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ongar sjálvumbýting/endurnýggja reglur virknar STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(peninga mark) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómøgulig spor blanding STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Neyðugt at beina burtur jarnbreytatekin fyrst STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ikki hóskandi jarnbreyt STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Neyðugt at beina burtur jarnbreyt fyrst STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vegur er einvegis ella blokeraður STR_ERROR_CROSSING_DISALLOWED :{WHITE}Javnir krossvegir ikki loyvdir fyri hetta slagi av tok bana STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kann ikki byggja jarnbreytatekin her... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kann ikki byggja jarnbreyt her... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kann ikki beina burtur jarnbreyt hagani... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kann ikki beina burtur jarnbreytatekin hagani... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kann ikki broyta jarnbreytatekin her... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... eingin jarnbreyt er STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... eingi jarnbreytatekin eru STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kann ikki broyta spor slag her... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Neyðugt at beina burtur veg fyrst STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... einvegis vegir kunnu ikki hava samanrenningar STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kann ikki byggja veg her... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kann ikki byggja sporvogn her... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kann ikki beina burtur veg hagani... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kann ikki beina burtur sporvogn hagani... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... eingin vegur er STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... eingin sporvognur er # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kann ikki byggja ræsir her... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kann ikki byggja slúsur her... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kann ikki leggja løk her... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... má byggjast á vatni STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... kann ikki byggja á vatni STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... kann ikki byggja á opnum havi STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... kann ikki byggja á rás STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... kann ikki byggja á løki STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Neyðugt at bróta niður rás fyrst STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kann ikki byggja akvedukt her... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... her er longu eitt træ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... ikki rætt landslag fyri hetta slagi av træði STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Kann ikki planta træ her... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kann ikki byggja brúgv her... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Neyðugt at bróta brúgv niður fyrst STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Kann ikki byrja og enda á sama stað STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brúgvarendar ikki á somu hædd STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brúgvin er ov lág til landslagi STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Byrjan og endi mugu vera á somu linju STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... báðir endar av brúnni mugu vera á landi STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brúgv ov long STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Brúgv hevði enda uttanfyri korti # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kann ikki byggja berghol her... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Øki óhóskandi til bergholsmuna STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Neyðugt at bróta berghol niður fyrst STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Eitt annað berghol í vegin STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Bergholi hevði enda uttanfyri korti STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Ikki førur fyri at grava út fyri hin endan av bergholinum STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... berghol ov langt # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... ov nógvir lutir STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kann ikki byggja lut... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Lutur í vegin STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... fyritøku høvuðsborg í vegin STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kann ikki keypa hetta land øki... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... tú eigur ta longu! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Kann ikki stovna bólk... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Kann ikki strika hendan bólkin... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kann ikki navngeva bólk... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kann ikki beina øll akfør burtur frá hesum bólki... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kann ikki leggja akfari til hendan bólkin... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kann ikki leggja deild akfør til bólkin... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tok í vegin STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Akfar í vegin STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip í vegin STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Flogfar í vegin STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Kann ikki umbyggja tok... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kann ikki umbyggja akfar... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kann ikki umbyggja skip... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Kann ikki umbyggja flogfar... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kann ikki navngeva tok... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kann ikki navngeva akfar... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Kann ikki navngeva skip... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kann ikki navngeva flogfar... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kann ikki steðga/seta í gongd tok... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kann ikki steðga/seta í gongd akfar... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kann ikki steðga/seta í gongd skip... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kann ikki steðga/seta í gongd flogfar... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kann ikki senda tok til goymslu... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kann ikki senda akfar til goymslu... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kann ikki senda skip til goymslu... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kann ikki senda flogfar til hangar,,, STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kann ikki keypa tok... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kann ikki keypa akfar... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kann ikki keypa skip... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kann ikki keypa flogfar... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kann ikki navngeva tok slag... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kann ikki navngeva akfars slag... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kann ikki navngeva skipa slag... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kann ikki navngeva flogfars slag... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kann ikki selja tok... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kann ikki selja akfar... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kann ikki selja skip... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kann ikki selja flogfar... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Tok er ikki tøkt STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Akfar er ikki tøkt STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skip er ikki tøkt STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Flogfar er ikki tøkt STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Ov nógv akfør í spæli STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kann ikki broyta tænastu títtleika... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... akfar smildra sundur # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kann ikki fáa tok at fara framvið jarnbreytatekin tá vandi er... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kann ikki venda toki vi... STR_ERROR_TRAIN_START_NO_POWER :Tok hevur onga orku STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kann ikki fáa akfar at venda vi... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Flogfar er á flogi # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ikki meira pláss eftir til boð STR_ERROR_TOO_MANY_ORDERS :{WHITE}Ov nógv boð STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kann ikki seta inn nýggj boð... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Kann ikki strika hesi boðini... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kann ikki broyta hesi boðini... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kann ikki flyta hesi boðini... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kann ikki leypa um núverðandi boðið... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kann ikki leypa um valda boðið... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... akfar kann ikki fara til allar støðinar STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... akfar kann ikki fara til hasa støðina STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... eitt akfar ið deilur hesi boðini kann ikki fara til hasa støðina STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kann ikki deila boðslista... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kann ikki steðga við at deila boðslista... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kann ikki avrita boðslista... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ov langt frá fyrra staði STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... flogfarið røkkur ikki # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kann ikki gera tíðarætlan fyri akfrar... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Akfør kunnu bara bíða við støðir STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Hetta akfar steðgar ikki á hesi støðini # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... ov nógv skeltir STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Kann ikki seta skelti her... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Kann ikki broyta navn á skelti... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kann ikki strika skelti... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Eitt eftirgerðar spæl bygt á Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Høgur skrivstovu bygningur STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Skrivstovu bygningur STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Lítil íbúðar bygningur STR_TOWN_BUILDING_NAME_CHURCH_1 :Kirkja STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Stórur skrivstovu bygningur STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Bygdar hús STR_TOWN_BUILDING_NAME_HOTEL_1 :Gistingarhús STR_TOWN_BUILDING_NAME_STATUE_1 :Standmynd STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Gosvatn STR_TOWN_BUILDING_NAME_PARK_1 :Viðarlund STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Skrivstovu bygningur STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Handlar og skrivstovir STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Nútímans skrivstovu bygningur STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Vøruhús STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Skrivstovu bygningur STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Gomul hús STR_TOWN_BUILDING_NAME_COTTAGES_1 :Smáttir STR_TOWN_BUILDING_NAME_HOUSES_1 :Hús STR_TOWN_BUILDING_NAME_FLATS_1 :Íbúðir STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Høgur skrivstovu bygningur STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Handlar og skrivstovur STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Handlar og skrivstovur STR_TOWN_BUILDING_NAME_THEATER_1 :Sjónleikahús STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadium STR_TOWN_BUILDING_NAME_OFFICES_1 :Skrivstovir STR_TOWN_BUILDING_NAME_HOUSES_2 :Hús STR_TOWN_BUILDING_NAME_CINEMA_1 :Biografur STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Sølu miðstøð STR_TOWN_BUILDING_NAME_IGLOO_1 :Igloo STR_TOWN_BUILDING_NAME_TEPEES_1 :Indianaratelt STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Thekannu-Hús STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Sparibússa ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=n}Kola Nám STR_INDUSTRY_NAME_POWER_STATION :{G=f}Orku Støð STR_INDUSTRY_NAME_SAWMILL :{G=n}Sagverk STR_INDUSTRY_NAME_FOREST :{G=m}Skógur STR_INDUSTRY_NAME_OIL_REFINERY :{G=n}Olju Reinsiverk STR_INDUSTRY_NAME_OIL_RIG :{G=m}Olju Boriplatformur STR_INDUSTRY_NAME_FACTORY :{G=f}Verksmiðja STR_INDUSTRY_NAME_PRINTING_WORKS :{G=f}Prent Verksmiðja STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Stál Verksmiðja STR_INDUSTRY_NAME_FARM :{G=m}Bóndagarður STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=n}Kopar Málms Nám STR_INDUSTRY_NAME_OIL_WELLS :{G=m}Olju Brunnar STR_INDUSTRY_NAME_BANK :{G=m}Peningastovnur STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Mat Viðgerðis Verksmiðja STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Pappírs Verksmiðja STR_INDUSTRY_NAME_GOLD_MINE :{G=n}Gull Nám STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=m}Peningastovnur STR_INDUSTRY_NAME_DIAMOND_MINE :{G=n}Gymsteina Nám STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=n}Jarn Málms Nám STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Frukt Viðarlund STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Gummi Viðarlund STR_INDUSTRY_NAME_WATER_SUPPLY :{G=f}Vatn Veiting STR_INDUSTRY_NAME_WATER_TOWER :{G=n}Vatn Tárn STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Verksmiðja STR_INDUSTRY_NAME_FARM_2 :{G=m}Bóndagarður STR_INDUSTRY_NAME_LUMBER_MILL :{G=f}Timbur Verksmiðja STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=m}Kandifloss Skógur STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Góðgætis Verksmiðja STR_INDUSTRY_NAME_BATTERY_FARM :{G=m}Battarí Garður STR_INDUSTRY_NAME_COLA_WELLS :{G=m}Kola Brunnar STR_INDUSTRY_NAME_TOY_SHOP :{G=m}Leikutoys Handil STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Leikutoys Verksmiðja STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=n}Plastikk Gosvatn STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Sodavatns Verksmiðja STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=m}Sápibløru Framleiðari STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=n}Toffee brot STR_INDUSTRY_NAME_SUGAR_MINE :{G=n}Sukur nám ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Ikki navngivið STR_SV_TRAIN_NAME :{G=n}Tok {COMMA} STR_SV_ROAD_VEHICLE_NAME :{G=n}Akfar {COMMA} STR_SV_SHIP_NAME :{G=n}Skip {COMMA} STR_SV_AIRCRAFT_NAME :{G=n}Flogfar {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Norður STR_SV_STNAME_SOUTH :{STRING} Suður STR_SV_STNAME_EAST :{STRING} Eystur STR_SV_STNAME_WEST :{STRING} Vestur STR_SV_STNAME_CENTRAL :{STRING} Miðstøð STR_SV_STNAME_TRANSFER :{STRING} Umskipan STR_SV_STNAME_HALT :{STRING} á Hjalla STR_SV_STNAME_VALLEY :{STRING} Dalur STR_SV_STNAME_HEIGHTS :{STRING} Hæddir STR_SV_STNAME_WOODS :{STRING} Skógir STR_SV_STNAME_LAKESIDE :{G=n}{STRING} við Vatni STR_SV_STNAME_EXCHANGE :{G=f}{STRING} Skiftistøð STR_SV_STNAME_AIRPORT :{G=f}{STRING} Floghavn STR_SV_STNAME_OILFIELD :{G=n}{STRING} Oljufelt STR_SV_STNAME_MINES :{G=n}{STRING} Nám STR_SV_STNAME_DOCKS :{G=n}{STRING} Havnalag STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{G=f}{STRING} Farstøð STR_SV_STNAME_SIDINGS :{G=f}{STRING} Lí STR_SV_STNAME_BRANCH :{G=f}{STRING} Grein STR_SV_STNAME_UPPER :Ovara {STRING} STR_SV_STNAME_LOWER :Niðara {STRING} STR_SV_STNAME_HELIPORT :{G=m}{STRING} Tyrlupallur STR_SV_STNAME_FOREST :{G=m}{STRING} Skógur STR_SV_STNAME_FALLBACK :{G=f}{STRING} Støð #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Guv) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Guv) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Guv) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Guv) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Guv) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Ravmagn) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Ferðafólka vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Post vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kol vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Olju vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Kríatúr vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Góðs vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Korn vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Timbur vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Jarn málm vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stál vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Skjøldraður vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Mat vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Pappír vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kopar málm vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vatn vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Frukt vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Gummi vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sukur vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Kandifloss vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Toffee vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Sápibløru vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Kola vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Góðgæti vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Leikutoy vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Battarí vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Sodavatn vognur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastikk vognur STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Ferðafólka vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Post vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kol vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olju vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Kríatúr vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Góðs vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Korn vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Timbur vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Jarn málm vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stál vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Skjøldraður vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Mat vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Pappír vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kopar málm vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vatn vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Frukt vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Gummi vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sukur vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Kandifloss vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Toffe vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Sápibløru vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Kola vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Góðgæti vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Leikutoy vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Battai vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Sodavatn vognur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastikk vognur STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Ravmagn) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Ferðafólk vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Post vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kol vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olju vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Kríatúr vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Góðs vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Korn vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Timbur vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Jarn málm vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stál vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Skjøldraður vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Mat vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Pappír vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kopar málm vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vatn vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Frukt vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Gummi vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sukur vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Kandifloss vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Toffee Vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Sápibløra Vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Kola tanga vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Góðgætis Vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Leikutoys Vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Battarí Vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Fizzy Drink Vognur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastikk Vognur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bussur STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bussur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bussur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbussur STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bussur STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bussur STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bussur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kol Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kol Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kol Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Post Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Post Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Post Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Post Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Post Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Post Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Olju Tangabilur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Olju Tangabilur STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Olju Tangabilur STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Kríatúr Vørðubilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Kríatúr Vørðubilur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Kríatúr Vørðubilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Góðs Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Góðs Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Góðs Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Korn Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Korn Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Korn Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Timbur Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Timbur Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Timbur Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Jarn Málm Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Jarn Málm Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Jarn Málm Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Stál Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Stál Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Stál Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Skjøldraður Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Skjøldraður Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Skjøldraður Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Mat Vørðubilur STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Mat Vørðubilur STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Food Vørðubilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Paper Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Paper Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Paper Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Kopar Málm Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Kopar Málm Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Kopar Málm Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Vatn Tangabilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Vatn Tangabilur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Vatn Tangabilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Fruit Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Fruit Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Frukt Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Gummi Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Gummi Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Gummi Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sukur Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sukur Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sukur Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Kola Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Kola Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Kola Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Candyfloss Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Candyfloss Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Candyfloss Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Toffee Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Toffee Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Toffee Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Góðgæti Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Góðgæti Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Søtmeti Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Battarí Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastikk Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastikk Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastik Lastbilur STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Bubble Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Bubble Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Bobbli Lastbilur STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oil Tanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oil Tanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Ferðafólka Ferga STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Ferðafólka Ferga STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Ferðafólka Ferga STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Ferðafólka Ferga STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Farma skip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Farma skip STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Farma skip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Farma skip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Tyrla STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Tyrla STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Tyrla ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Boyja STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boyja #{COMMA} STR_FORMAT_COMPANY_NUM :(Fyritøka {COMMA}) STR_FORMAT_GROUP_NAME :Bólkur {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} Waypoint STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Waypoint #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Tok Goymsla STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Tok Goymsla #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Akfars Goymsla STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Akfars Goymsla #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Skipa Goymsla STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Skipa Goymsla #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangarur STR_UNKNOWN_STATION :ókend støð STR_DEFAULT_SIGN_NAME :Skelti STR_COMPANY_SOMEONE :onkur STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Eygleiðari, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/tamil.txt0000644000000000000000000175005612246102561015265 0ustar rootroot##name Tamil ##ownname தமிழ் ##isocode ta_IN ##plural 0 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x0449 ##grflangid 0x0A # $Id: tamil.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(விளக்கமளிக்கப்படாத தொடர்) STR_JUST_NOTHING :ஏதுமில்லை # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :பயணிகள் STR_CARGO_PLURAL_COAL :நிலக்கரி STR_CARGO_PLURAL_MAIL :அஞ்சல் STR_CARGO_PLURAL_OIL :எண்ணெய் STR_CARGO_PLURAL_LIVESTOCK :கால்நடைகள் STR_CARGO_PLURAL_GOODS :சரக்குகள் STR_CARGO_PLURAL_GRAIN :தானியம் STR_CARGO_PLURAL_WOOD :மரம் STR_CARGO_PLURAL_IRON_ORE :இரும்புத் தாது STR_CARGO_PLURAL_STEEL :எஃகு STR_CARGO_PLURAL_VALUABLES :மதிப்புள்ளவை STR_CARGO_PLURAL_COPPER_ORE :செப்புத் தாது STR_CARGO_PLURAL_MAIZE :சோளம் STR_CARGO_PLURAL_FRUIT :பழம் STR_CARGO_PLURAL_DIAMONDS :வைரங்கள் STR_CARGO_PLURAL_FOOD :உணவு STR_CARGO_PLURAL_PAPER :காகிதம் STR_CARGO_PLURAL_GOLD :தங்கம் STR_CARGO_PLURAL_WATER :நீர் STR_CARGO_PLURAL_WHEAT :கோதுமை STR_CARGO_PLURAL_RUBBER :இறப்பர் STR_CARGO_PLURAL_SUGAR :சர்க்கரை STR_CARGO_PLURAL_TOYS :பொம்மைகள் STR_CARGO_PLURAL_CANDY :இனிப்புகள் STR_CARGO_PLURAL_COLA :கோலா STR_CARGO_PLURAL_COTTON_CANDY :பஞ்சுமிட்டாய் STR_CARGO_PLURAL_BUBBLES :குமிழிகள் STR_CARGO_PLURAL_TOFFEE :மிட்டாய்கள் STR_CARGO_PLURAL_BATTERIES :பாட்டரிகள் STR_CARGO_PLURAL_PLASTIC :பிளாஸ்டிக் STR_CARGO_PLURAL_FIZZY_DRINKS :குளிர்பானங்கள் # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :பயணி STR_CARGO_SINGULAR_COAL :நிலக்கரி STR_CARGO_SINGULAR_MAIL :அஞ்சல் STR_CARGO_SINGULAR_OIL :எண்ணெய் STR_CARGO_SINGULAR_LIVESTOCK :கால்நடை STR_CARGO_SINGULAR_GOODS :சரக்கு STR_CARGO_SINGULAR_GRAIN :தானியம் STR_CARGO_SINGULAR_WOOD :மரம் STR_CARGO_SINGULAR_IRON_ORE :இரும்புத் தாது STR_CARGO_SINGULAR_STEEL :எஃகு STR_CARGO_SINGULAR_VALUABLES :மதிப்புள்ளது STR_CARGO_SINGULAR_COPPER_ORE :செப்புத் தாது STR_CARGO_SINGULAR_MAIZE :சோளம் STR_CARGO_SINGULAR_FRUIT :பழம் STR_CARGO_SINGULAR_DIAMOND :வைரம் STR_CARGO_SINGULAR_FOOD :உணவு STR_CARGO_SINGULAR_PAPER :காகிதம் STR_CARGO_SINGULAR_GOLD :தங்கம் STR_CARGO_SINGULAR_WATER :தண்ணீர் STR_CARGO_SINGULAR_WHEAT :கோதுமை STR_CARGO_SINGULAR_RUBBER :இறப்பர் STR_CARGO_SINGULAR_SUGAR :சர்க்கரை STR_CARGO_SINGULAR_TOY :பொம்மை STR_CARGO_SINGULAR_CANDY :இனிப்பு STR_CARGO_SINGULAR_COLA :கோலா STR_CARGO_SINGULAR_COTTON_CANDY :பஞ்சுமிட்டாய் STR_CARGO_SINGULAR_BUBBLE :குமிழி STR_CARGO_SINGULAR_TOFFEE :மிட்டாய் STR_CARGO_SINGULAR_BATTERY :மின்கலம் STR_CARGO_SINGULAR_PLASTIC :பிளாஸ்டிக் STR_CARGO_SINGULAR_FIZZY_DRINK :குளிர்பானம் # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} பயணி{P "" கள்} STR_QUANTITY_COAL :{WEIGHT_LONG} நிலக்கரி STR_QUANTITY_MAIL :{COMMA} அஞ்சல் பை{P "" கள்} STR_QUANTITY_OIL :{VOLUME_LONG} எண்ணெய் STR_QUANTITY_LIVESTOCK :{COMMA} கால்நடை{P "" கள்} STR_QUANTITY_GOODS :{COMMA} சரக்குப் பெட்டி{P "" கள்} STR_QUANTITY_GRAIN :{WEIGHT_LONG} தானியம் STR_QUANTITY_WOOD :{WEIGHT_LONG} மரம் STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} இரும்புத் தாது STR_QUANTITY_STEEL :{WEIGHT_LONG} எஃகு STR_QUANTITY_VALUABLES :{COMMA} மதிப்புள்ள பை{P "" கள்} STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} செப்புத் தாது STR_QUANTITY_MAIZE :{WEIGHT_LONG} சோளம் STR_QUANTITY_FRUIT :{WEIGHT_LONG} பழம் STR_QUANTITY_DIAMONDS :{COMMA} வைர பை{P "" கள்} STR_QUANTITY_FOOD :{WEIGHT_LONG} உணவு STR_QUANTITY_PAPER :{WEIGHT_LONG} காகிதம் STR_QUANTITY_GOLD :{COMMA} தங்க பை{P "" கள்} STR_QUANTITY_WATER :{VOLUME_LONG} தண்ணீர் STR_QUANTITY_WHEAT :{WEIGHT_LONG} கோதுமை STR_QUANTITY_RUBBER :{VOLUME_LONG} இறப்பர் STR_QUANTITY_SUGAR :{WEIGHT_LONG} சர்க்கரை STR_QUANTITY_TOYS :{COMMA} பொம்மை{P "" கள்} STR_QUANTITY_SWEETS :{COMMA} இனிப்பு பெட்டி{P "" கள்} STR_QUANTITY_COLA :{VOLUME_LONG} கோலா STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} பஞ்சு மிட்டாய் STR_QUANTITY_BUBBLES :{COMMA} குமிழி{P "" கள்} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} மிட்டாய் STR_QUANTITY_BATTERIES :{COMMA} பாட்டரி{P ... கள்} STR_QUANTITY_PLASTIC :{VOLUME_LONG} பிளாஸ்டிக் STR_QUANTITY_FIZZY_DRINKS :{COMMA} குளிர்பானம்{P "" கள்} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}CL STR_ABBREV_MAIL :{TINY_FONT}ML STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}LV STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}WD STR_ABBREV_IRON_ORE :{TINY_FONT}OR STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}CO STR_ABBREV_MAIZE :{TINY_FONT}MZ STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}FD STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GD STR_ABBREV_WATER :{TINY_FONT}WR STR_ABBREV_WHEAT :{TINY_FONT}WH STR_ABBREV_RUBBER :{TINY_FONT}RB STR_ABBREV_SUGAR :{TINY_FONT}SG STR_ABBREV_TOYS :{TINY_FONT}TY STR_ABBREV_SWEETS :{TINY_FONT}SW STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}CF STR_ABBREV_BUBBLES :{TINY_FONT}BU STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}FZ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} பயணி{P "" கள்} STR_BAGS :{COMMA} பை{P "" கள்} STR_TONS :{COMMA} டன்{P "" கள்} STR_LITERS :{COMMA} லிட்டர்{P "" கள்} STR_ITEMS :{COMMA} பொருட்கள்{P "" s} STR_CRATES :{COMMA} பெட்டி{P "" கள்} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :கருநீலம் STR_COLOUR_PALE_GREEN :வெளிர் பச்சை STR_COLOUR_PINK :பிங்க் STR_COLOUR_YELLOW :மஞ்சள் STR_COLOUR_RED :சிவப்பு STR_COLOUR_LIGHT_BLUE :வெளிர் நீலம் STR_COLOUR_GREEN :பச்சை STR_COLOUR_DARK_GREEN :கரும்பச்சை STR_COLOUR_BLUE :நீலம் STR_COLOUR_CREAM :கிரீம் STR_COLOUR_MAUVE :Mauve STR_COLOUR_PURPLE :ஊதா STR_COLOUR_ORANGE :ஆரஞ்சு STR_COLOUR_BROWN :பழுப்பு STR_COLOUR_GREY :சாம்பல் STR_COLOUR_WHITE :வெள்ளை # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} டன்{P "" கள்} STR_UNITS_WEIGHT_LONG_SI :{COMMA} கிலோ STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} லிட்டர்{P "" கள்} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} அடி STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}வடிகட்டி தொடர்: STR_LIST_FILTER_OSKTITLE :{BLACK}Enter filter string STR_LIST_FILTER_TOOLTIP :{BLACK}Enter a keyword to filter the list for STR_TOOLTIP_SORT_ORDER :{BLACK}Select sorting order (descending/ascending) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Select sorting criteria STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Select filtering criteria STR_BUTTON_SORT_BY :{BLACK}Sort by STR_BUTTON_LOCATION :{BLACK}Location STR_BUTTON_RENAME :{BLACK}Rename STR_TOOLTIP_CLOSE_WINDOW :{BLACK}சாளரத்தை மூடு STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}சாளர தலைப்பு - சாளரத்தை நகர்த்த இழுக்கவும் STR_TOOLTIP_SHADE :{BLACK}சாளரத்தை சுருக்கவும் - தலைப்பை மட்டும் காண்பி STR_TOOLTIP_DEBUG :{BLACK}Show NewGRF debug information STR_TOOLTIP_STICKY :{BLACK}Mark this window as uncloseable by the 'Close All Windows' key STR_TOOLTIP_RESIZE :{BLACK}Click and drag to resize this window STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toggle large/small window size STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list up/down STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list left/right STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}சதுர நிலப்பகுதியில் கட்டிடம் போன்றவற்றை இடிக்க. Ctrl தேர்வுசெய்திட. Shift உத்தேச செலவை/கட்டிடத்தை காட்டிட # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}தவிர் STR_BUTTON_OK :{BLACK}சரி # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}நீளம்: {NUM} STR_MEASURE_AREA :{BLACK}பகுதி: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}நீளம்: {NUM}{}உயர மாற்றம்: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}நீளம்: {NUM} x {NUM}{}உயர மாற்றம்: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}மக்கள் தொகை STR_SORT_BY_CAPTION_NAME :{BLACK}பெயர் STR_SORT_BY_CAPTION_DATE :{BLACK}தேதி # These are used in dropdowns STR_SORT_BY_NAME :பெயர் STR_SORT_BY_PRODUCTION :உற்பத்தி STR_SORT_BY_TYPE :வகை STR_SORT_BY_TRANSPORTED :அனுப்பப்பட்டது STR_SORT_BY_NUMBER :எண் STR_SORT_BY_PROFIT_LAST_YEAR :கடந்த ஆண்டு வருமானம் STR_SORT_BY_PROFIT_THIS_YEAR :இந்த ஆண்டு வருமானம் STR_SORT_BY_AGE :வயது STR_SORT_BY_RELIABILITY :நம்பகத்தன்மை STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :மொத்த கொள்ளளவு ஒவ்வொரு சரக்கிற்கும் STR_SORT_BY_MAX_SPEED :அதிகபட்ச வேகம் STR_SORT_BY_MODEL :மாடல் STR_SORT_BY_VALUE :மதிப்பு STR_SORT_BY_LENGTH :நீளம் STR_SORT_BY_LIFE_TIME :மீதமிருக்கும் வாழ்நாள் STR_SORT_BY_TIMETABLE_DELAY :கால தாமதம் STR_SORT_BY_FACILITY :நிலைய வகை STR_SORT_BY_WAITING :காத்திருக்கும் சரக்கின் அளவு STR_SORT_BY_RATING_MAX :சரக்கு உச்ச வகைமதிப்பு STR_SORT_BY_RATING_MIN :சரக்கு மீச்சிறு வகைமதிப்பு STR_SORT_BY_ENGINE_ID :இயந்திரம் அடையாளம் (வரிசை செய்) STR_SORT_BY_COST :செலவு STR_SORT_BY_POWER :சக்தி STR_SORT_BY_TRACTIVE_EFFORT :இழுக்கை முயற்சி STR_SORT_BY_INTRO_DATE :அறிமுகப்படுத்தப்பட்ட தேதி STR_SORT_BY_RUNNING_COST :நடத்துதல் செலவு STR_SORT_BY_POWER_VS_RUNNING_COST :ஆற்றல்/நடத்துதல் செலவு STR_SORT_BY_CARGO_CAPACITY :சரக்கு கொள்ளளவு STR_SORT_BY_RANGE :வரையறை # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}இடை நிறுத்து STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}அதி வேகமாக விளையாடு STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}விருப்பத் தேர்வு STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}விளையாட்டை சேமி,கைவிடு, வெளியேறு STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}வரைபடத்தை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}நகர புத்தகம் காண்பி STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}மானியங்களைக் காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}நிறுவனத்தின் நிலையங்களின் பட்டியலை காண்பி STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}நிறுவனத்தின் நிதி நிலைமையை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}நிறுவனத்தின் விவரங்களை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}வரைபடம் காண்பி STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}நிறுவங்களின் பட்டியலை காட்டு STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ஓர் தொழிற்சாலையை கட்டு அல்லது தொழிற்சாலைகளின் பட்டியலை காட்டு STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}நிறுவனத்தின் இரயில்களைக் காட்டு. Ctrl+Click அழுத்தினால் குழு/வாகனங்களின் பட்டியல் தெரியும் STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}நிறுவனத்தின் சாலை வாகனங்களைக் காட்டு. Ctrl+Click அழுத்தினால் குழு/வாகனங்களின் பட்டியல் தெரியும் STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}நிறுவனத்தின் கப்பல்களைக் காட்டு. Ctrl+Click அழுத்தினால் குழு/வாகனங்களின் பட்டியல் தெரியும் STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}நிறுவனத்தின் விமானங்களைக் காட்டு. Ctrl+Click அழுத்தினால் குழு/வாகனங்களின் பட்டியல் தெரியும் STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}உரு அளவு பெரிதாக்கு STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}உரு அளவு சிறிதாக்கு STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}இரயில்பாதை கட்டு STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}சாலைகள் கட்டு STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}கப்பல் செப்பனிடுமிடம் கட்டு STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}விமான நிலையங்கள் கட்டு STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}நிலப்பரப்பு கருவிப்பட்டையினைத் திறந்து, நிலத்தை உயர்த்த/தாழ்த்த, மரங்களை நட, மற்றவை etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}இசை மையம் காண்பி STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}கடைசி செய்தி அறிக்கை/தகவல்களை காட்டு, தகவல் விருப்பங்களை காட்டு STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}நிலப்பகுதி விவரங்கள், console, வரிவடிவம் சர்பார்த்தல், திரைபிடிப்புகள்,OpenTTD பற்றி STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}கருவிப் பட்டை மாற்று # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}சித்திரக்காட்சியினை பதிவுசெய், பதிவேற்றவும், திருத்தியைவிட்டு வெளியேறவும், வெளியேறவும் STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}சித்திரக்காட்சி திருத்தி STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}ஆட்டத்தின் ஆரம்ப தேதியினை ஒரு வருடம் பின் நகர்த்து STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}ஆட்டத்தின் ஆரம்ப தேதியினை ஒரு வருடம் முன் நகர்த்து STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}ஆரம்பிக்கும் வருடத்தை எழுது STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}வரைபடம் மற்றும் நகரங்களின் பட்டியலை காட்டு STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}நிலத்தோற்றம் உருவாக்கு STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}நகரம் உருவாக்கு STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}தொழிற்சாலை உருவாக்கு STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}சாலை திருத்த வேலை STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}மரங்களை நடு. Shift toggles கட்டடம்/மொத்த செலவுகள் STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}தகவல் பலகை வை STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}பொருளினை இடவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடுகள் ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :சித்திரக்காட்சியை பதி STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :சித்திரக்காட்சியை ஏற்று STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :வரைபடத்தினை சேமி STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :உயர்படத்தினை பதிவேற்றவும் STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :சித்திரக்காட்சி திருத்தியை விட்டுச் செல் STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :வெளியேறு ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :விளையாட்டு விருப்ப பேரம் STR_SETTINGS_MENU_CONFIG_SETTINGS :அமைப்புகள் STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / ஆட்ட அமைப்புகள் STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF அமைப்புகள் STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :ஒளி அமைப்புகள் STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :நகரத்தின் பெயர்களை காட்டு STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :நிலையங்களின் பெயர்களை காண்பி STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :பாதைப்புள்ளி பெயர்களை காட்டு STR_SETTINGS_MENU_SIGNS_DISPLAYED :குறிகளை காட்டு STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :கணினி குறியீடுகள் மற்றும் பெயர்கள் காட்டப்படுகின்றன STR_SETTINGS_MENU_FULL_ANIMATION :முழு அசையூட்டம் STR_SETTINGS_MENU_FULL_DETAIL :முழு விவரம் STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :கட்டடங்களை காட்டாதே STR_SETTINGS_MENU_TRANSPARENT_SIGNS :ஒளிபுகும் குறிகள் ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :விளையாட்டை பதி STR_FILE_MENU_LOAD_GAME :விளையாட்டை ஏற்று STR_FILE_MENU_QUIT_GAME :விளையாட்டை கைவிடு STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :வெளியேறு ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :உலகப் படம் STR_MAP_MENU_EXTRA_VIEW_PORT :கூடுதல் பார்வைபடம் STR_MAP_MENU_SIGN_LIST :குறிகளின் பட்டியல் ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :நகர புத்தகம் STR_TOWN_MENU_FOUND_TOWN :நகரம் உருவாக்கு ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :மானியங்கள் STR_SUBSIDIES_MENU_GOAL :தற்போதைய குறிக்கோள்கள் ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :தொழிற்பாட்டு இலாப வரைபடம் STR_GRAPH_MENU_INCOME_GRAPH :வருமான வரைபடம் STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :கொண்டு சேர்கப்பட்ட சரக்கு வரைபடம் STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :செயல்திறன் வரலாற்றின் வரைபடம் STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :கம்பெனி மதிப்பீடு வரைபடம் STR_GRAPH_MENU_CARGO_PAYMENT_RATES :சரக்கு வருமானங்கள் ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :நிறுவனங்களின் பட்டியல் STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :விவரமான செயல்திறன் மதிப்பீடு STR_GRAPH_MENU_HIGHSCORE :புள்ளிகள் பட்டியல் ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :தொழிற்சாலைகளின் பட்டியல் STR_INDUSTRY_MENU_INDUSTRY_CHAIN :தொழிற்சாலைத் தொடர்கள் STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :புதிய தொழிற்சாலையை நிறுவு ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :இரயில்வே கட்டுமானம் STR_RAIL_MENU_ELRAIL_CONSTRUCTION :மின்சார இரயில்வே கட்டுமானம் STR_RAIL_MENU_MONORAIL_CONSTRUCTION :மோனோ இரயில் கட்டுமானம் STR_RAIL_MENU_MAGLEV_CONSTRUCTION :மேக்லெவ் கட்டுமானம் ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :சாலை கட்டுமானம் STR_ROAD_MENU_TRAM_CONSTRUCTION :ட்ரேம்வே கட்டுமானம் ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :கடல்வழி போக்குவரத்து கட்டுமானம் ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :விமானநிலைய கட்டுமானம் ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :நிலத்தோற்றம் மாற்றுதல் STR_LANDSCAPING_MENU_PLANT_TREES :மரங்களை நடு STR_LANDSCAPING_MENU_PLACE_SIGN :அறிவிக்கை பலகை வை ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :ஒலி/இசை ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :கடைசி செய்தி/செய்தி அறிவிக்கை STR_NEWS_MENU_MESSAGE_HISTORY_MENU :செய்தி வரலாறு ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :நிலா பகுதி விவரம் STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :முனையத்தை மாற்று STR_ABOUT_MENU_AI_DEBUG :AI/வரிவடிவம் சரிபார் STR_ABOUT_MENU_SCREENSHOT :திரைபிடிப்பு STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :முழுமையாக பெரிதாக்கிய நிலையில் திரைப்பிடிப்பு செய் STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :பெரிதாக்கிய நிலையில் திரைப்பிடிப்பு செய் STR_ABOUT_MENU_GIANT_SCREENSHOT :முழு வரைபடத்தையும் திரைபிடிப்பு செய் STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' பற்றி STR_ABOUT_MENU_SPRITE_ALIGNER :ஸ்ரைட்டு அலைனர் STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :எல்லைக் கட்டங்களை மாற்றவும் STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :அழுக்கான கட்டங்களின் நிறத்தை மாற்று ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2nd STR_ORDINAL_NUMBER_3RD :3rd STR_ORDINAL_NUMBER_4TH :4th STR_ORDINAL_NUMBER_5TH :5வது STR_ORDINAL_NUMBER_6TH :6வது STR_ORDINAL_NUMBER_7TH :7வது STR_ORDINAL_NUMBER_8TH :8வது STR_ORDINAL_NUMBER_9TH :9வது STR_ORDINAL_NUMBER_10TH :10வது STR_ORDINAL_NUMBER_11TH :11வது STR_ORDINAL_NUMBER_12TH :12வது STR_ORDINAL_NUMBER_13TH :13வது STR_ORDINAL_NUMBER_14TH :14வது STR_ORDINAL_NUMBER_15TH :15வது STR_ORDINAL_NUMBER_16TH :16வது STR_ORDINAL_NUMBER_17TH :17வது STR_ORDINAL_NUMBER_18TH :18வது STR_ORDINAL_NUMBER_19TH :19வது STR_ORDINAL_NUMBER_20TH :20வது STR_ORDINAL_NUMBER_21ST :21வது STR_ORDINAL_NUMBER_22ND :22வது STR_ORDINAL_NUMBER_23RD :23வது STR_ORDINAL_NUMBER_24TH :24வது STR_ORDINAL_NUMBER_25TH :25வது STR_ORDINAL_NUMBER_26TH :26வது STR_ORDINAL_NUMBER_27TH :27வது STR_ORDINAL_NUMBER_28TH :28வது STR_ORDINAL_NUMBER_29TH :29வது STR_ORDINAL_NUMBER_30TH :30வது STR_ORDINAL_NUMBER_31ST :31வது ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :ஜனவரி STR_MONTH_ABBREV_FEB :பெப் STR_MONTH_ABBREV_MAR :மார்ச் STR_MONTH_ABBREV_APR :ஏப்ரல் STR_MONTH_ABBREV_MAY :மே STR_MONTH_ABBREV_JUN :ஜூன் STR_MONTH_ABBREV_JUL :ஜூலை STR_MONTH_ABBREV_AUG :ஆகஸ்டு STR_MONTH_ABBREV_SEP :செப் STR_MONTH_ABBREV_OCT :அக்டோபர் STR_MONTH_ABBREV_NOV :நவம்பர் STR_MONTH_ABBREV_DEC :டிசம்பர் STR_MONTH_JAN :சனவரி STR_MONTH_FEB :பிப்ரவரி STR_MONTH_MAR :மார்ச் STR_MONTH_APR :ஏப்ரல் STR_MONTH_MAY :மே STR_MONTH_JUN :ஜூன் STR_MONTH_JUL :ஜூலை STR_MONTH_AUG :ஆகஸ்ட் STR_MONTH_SEP :செப்டம்பர் STR_MONTH_OCT :அக்டோபர் STR_MONTH_NOV :நவம்பர் STR_MONTH_DEC :டிசம்பர் ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}பட விளக்கக் குறிப்பு STR_GRAPH_KEY_TOOLTIP :{BLACK}பட விளக்கக் குறிப்பு காண்பி STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}தொழிற்பாட்டு இலாப வரைபடம் STR_GRAPH_INCOME_CAPTION :{WHITE}வருமான வரைபடம் STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}பரிமாற்றம் செய்யப்பட்ட சரக்குப்பெட்டிகள் STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}கம்பெனி செயல்வரம்பு (அதிகபட்ச செயல்வரம்பு=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}கம்பெனி மதிப்பீடுகள் STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}சரக்கு விற்பனை விலை STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}எடுத்துச் செல்லுதல் நாட்கள் STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}10 யூனிட்டு (அல்லது 10000 லிட்டர்) சரக்குகளை 20 கட்டங்களுக்கு நகர்த்தியதற்கான வருவாய் STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}அனைத்தையும் செயலாக்கு STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}அனைத்தையும் செயலிளக்கவை STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}அனைத்து சரக்குகளையும் சரக்கு விலை வரைபடத்தில் காண்பி STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}எந்த சரக்கையும் சரக்கு விலை வரைபடத்தில் காட்டாதே STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}சரக்கு வகையினை graph இல் காட்டவும்/மறைக்கவும் STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}விவரமான செயல்திறன் விவரங்களை காண்பி # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}நிறுவன graph-களுக்கு பட்டியல் # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}நிருவனங்களின் பட்டியல் STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :பொறியியலாளர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :போக்குவரத்து மேலாளர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :போக்குவரத்து ஒருங்கிணைப்பாளர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :தட மேற்பார்வையாளர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :நிறுவனர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :தலைவர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :நிறுவனர் STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :ஜனாதிபதி STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :டைகூன் # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}விவரமான செயல்திறன் மதிப்பீடு STR_PERFORMANCE_DETAIL_KEY :{BLACK}விவரம் STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}இந்த நிறுவனத்தை பற்றி விவரங்களை பார் ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}வாகனங்கள்: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}நிலையங்கள்: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}குறைந்தபட்ச லாபம்: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}குறைந்தபட்ச வருமானம்: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}அதிபட்ச வருமானம்: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}சேர்க்கப்பட்டவை: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}சரக்கு: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}பணம்: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}கடன்: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}மொத்தம்: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}சென்ற வருடம் லாபமடைந்த வாகனங்களின் எண்ணிக்கை. இதில் இரயில், சாலை, விமானம் மற்றும் கப்பல் வாகனங்கள் அடங்கும் STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}குறைந்தபட்ச வருமானம் உடைய வாகனத்தின் லாபம்(இரண்டு வருடங்கள் பழைய வாகனங்கள் மட்டும் கணக்கில் எடுக்கப்பட்டுள்ளது) STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}கடந்த நான்கு காலாண்டுகளில் சேர்க்கப்பட்ட சரக்கு பெட்டிகள் STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}கடந்த காலாண்டில் கையாளப்பட்ட சரக்கு வகைகள் STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}இந்த நிறுவனம் வங்கியில் வைத்திருக்கும் பணம் STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}இந்த நிறுவனத்தின் கடன் தொகை STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}பெறக்கூடிய புள்ளிகளில் மொத்தப் புள்ளிகள் # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}ஜாஸ் இசைக்கருவி STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}அனைத்தும் STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}பழைய பாணி STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}புதிய பாணி STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}ஈசி தெரு STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}பாடல்பட்டியல் 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}பாடல்பட்டியல் 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}ஒலி அளவு STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}ஒலியமைப்புகளின் அளவு STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}குறைந்தபட்ச STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}அதிகபட்ச STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}இசைத்தடம் STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}தலைப்பு STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}வெவேறு பாடல்கள் STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}புரோகிராம் STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}தேர்ந்தெடுக்கப்பட்ட முந்தின பாட்டிற்கு தாவவும் STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}தேர்ந்தெடுக்கப்பட்ட அடுத்த பாட்டிற்கு தாவவும் STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}இசையை நிறுத்து STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}இசையினை ஆரம்பி STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}slider களை இழுத்தால் இசை மற்றும் ஒலி அளவுகளை அமைக்கலாம் STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}'அனைத்து தடங்கள்' பிரோகிராமினைத் தேர்ந்தெடுக்கவும் STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}'பழைய பாணி இசை' பிரோகிராமினைத் தேர்ந்தெடுக்கவும் STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}'புதிய பாணி இசை' பிரோகிராமினைத் தேர்ந்தெடுக்கவும் STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}'எசி தெரு பாணி இசை' பிரோகிராமினைத் தேர்ந்தெடுக்கவும் STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}'பயனரால் மாற்றியமைக்கப்பட்ட 1' பிரோகிராமினைத் தேர்ந்தெடுக்கவும் STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'பயனரால் மாற்றியமைக்கப்பட்ட 2' பிரோகிராமினைத் தேர்ந்தெடுக்கவும் STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}இசைத் த்டத்தினைத் தேர்ந்தெடுக்கும் திரையினைக் காட்டு STR_ERROR_NO_SONGS :{WHITE}இசைத்தடமே இல்லாதப் பட்டியல் தேர்ந்தெடுக்கப்பட்டுள்ளது. எந்த பாட்டும் ஒலிக்காது # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}இசை பிரோகிராம் தேர்ந்தெடுத்தல் STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}இசைத்தடம் வரிசை STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}பிரோகிராம் - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}அழி STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}தற்போதைய பிரோகிராமிலிருந்து இசைத்தடத்தினை நீக்க சொடுக்கவும் (பயனரால் மாற்றப்பட்ட1 அல்லது 2 மட்டும்) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}{NUM} அடைந்த சிறந்த நிறுவனங்கள் STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}நிறுவனங்களின் பட்டியல் {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :வியாபாரி STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :தொழில்முனைவோர் STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :தொழிலதிபர் STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :முதலாளி STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :மேன்மையர் STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :மொகல் STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :நூற்றாண்டின் டைக்கூன் STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} '{STRING}' நிலையை அடைந்தது! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} {COMPANY} '{STRING}' நிலையை அடைந்தார்! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}வரைபடம் - {STRING} STR_SMALLMAP_TYPE_CONTOURS :அமைப்புகள் STR_SMALLMAP_TYPE_VEHICLES :வாகனங்கள் STR_SMALLMAP_TYPE_INDUSTRIES :தொழிற்சாலைகள் STR_SMALLMAP_TYPE_ROUTES :வழித்தடங்கள் STR_SMALLMAP_TYPE_VEGETATION :தாவரங்கள் STR_SMALLMAP_TYPE_OWNERS :சொந்தக்காரர்கள் STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}நில அமைப்புகளை படத்தில் காட்டு STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}வரைபடத்தில் வாகனங்களை காட்டு STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}வரைபடத்தில் தொழிற்சாலைகளை காட்டு STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}வரைபடத்தில் வழித்தடங்களை காட்டு STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}வரைபடத்தில் தாவரங்களைக் காட்டு STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}வரைபடத்தில் நிலங்களின் சொந்தக்காரர்களைக் காட்டு STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}சாலைகள் STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}இரயில்வே STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}நிலையங்கள்/விமான நிலையங்கள்/துறைமுகங்கள் STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}கட்டடங்கள்/தொழிற்சாலைகள் STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}வாகனங்கள் STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}இரயில்வண்டிகள் STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}சாலை வாகனங்கள் STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}கப்பல்கள் STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}விமானங்கள் STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}போக்குவரத்து வழித்தடங்கள் STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}காடு STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}இரயில் நிலையம் STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}சரக்கு ஏற்றும் இடம் STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}பேருந்து நிலையம் STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}விமான/வானூர்தி தளம் STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}துறைமுகம் STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}சமமற்ற நிலம் STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}புல்வெளி STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}பொறம்போக்கு நிலம் STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}வயல்வெளிகள் STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}மரங்கள் STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}பாறைகள் STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}நீர் STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}யாரும் உரிமை கோரவில்லை STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}நகரங்கள் STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}தொழிற்சாலைகள் STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}பாலைவனம் STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}பனி STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}வரைபடத்தில் நகரத்தின் பெயர்களை மறை/காட்டு STR_SMALLMAP_CENTER :{BLACK}தற்போதைய இடத்தினை சிறுவரைபடத்தின் நடுவில் காட்டவும் STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}அனைத்தையும் செயலிழக்க செய் STR_SMALLMAP_ENABLE_ALL :{BLACK} அனைத்தையும் செயல்படுத்து STR_SMALLMAP_SHOW_HEIGHT :{BLACK}உயரத்தை காட்டு STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}எந்த ஆலைகளையும் வரைபடத்தில் காட்டாதே STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}அனைத்து ஆலைகளையும் வரைபடத்தில் காட்டு STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}உயர்படத்தின் காட்சியினை மாற்றவும் STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}எந்த கம்பெனி சொத்துக்களையும் வரைபடத்தில் காட்டாதே STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}அனைத்து கம்பெனி சொத்துக்களையும் வரைபடத்தில் காட்டு # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}கடைசி தகவல் அல்லது செய்தி அறிக்கையினை காட்டு STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * நிறுத்தப்பட்டுள்ளது * * STR_STATUSBAR_AUTOSAVE :{RED}பதிவுசெய்தல் STR_STATUSBAR_SAVING_GAME :{RED}* * ஆட்டம் பதிவாகிறது * * # News message history STR_MESSAGE_HISTORY :{WHITE}செய்தி வரலாறு STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}சமீப செய்திகளின் பட்டியல் STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}செய்தி STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}முதல் இரயில் {STATION} வந்தது! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}முதல் பேருந்து {STATION} வந்தது! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}முதல் லாரி {STATION} வந்தது! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}முதல் பயணிகள் இரயில் {STATION} வந்தது! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}முதல் சரக்கு இரயில் {STATION} வந்தது! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}முதல் கப்பல் {STATION} வந்தது! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}மக்கள் கொண்டாடுகிறார்கள் . . .{}விமானம் முதன்முதலாக {STATION} வந்தது! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}இரயில் விபத்து!{}{COMMA} பேர் இறந்தனர் STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}சாலை வாகன விபத்து!{}இரயில், வாகனத்துடன் மோதியதில் வாகன ஓட்டுனர் இறந்தார். STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}சாலை வாகன விபத்து!{}இரயில், வாகனத்துடன் மோதியதில் {COMMA} பேர் இறந்தனர். STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}விமான விபத்து!{}{COMMA} பேர் இறந்தனர் {STATION} இல். STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}விமான விபத்து!{}விமானத்தின் எரிபொருள் தீர்ந்து போனது, {COMMA} பேர் இறந்தனர். STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK} {STATION} இல் விமான விபத்து! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}'UFO' உடன் மோதியதில் சாலை வாகனம் நொறுங்கியது! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK} {TOWN} அருகில் எண்ணெய் சுத்திகரிப்பு நிலையம் வெடித்தது! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}தொழிற்சாலை தெரியாத காரணங்களால் அழிக்கப்பட்டது {TOWN} அருகில்! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}{TOWN} அருகில் 'UFO' தரையிறங்கியது! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}வெள்ளம்!{}குறைந்தபட்சம் {COMMA} பேர் காணவில்லை, வெள்ளத்தால் இறந்திருப்பார்கள் என்று அஞ்சப்படுகின்றது! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}போக்குவரத்து நிறுவனம் பிரச்சனையில் உள்ளது! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} விரைவில் விற்கப்படும் அல்லது கடனில் மூழ்கியது என்று அறிவிக்கப்படும் இயக்கம் சிறப்படையவில்லை எனில்! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}போக்குவரத்து நிறுவனம் இணைக்கப்படுகின்றது ! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK} {STRING} இற்கு {STRING} {CURRENCY_LONG} இற்கு விற்கப்பட்டது! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}கடனில் மூழ்கியது! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} கடன் கொடுத்தவர்களால் மூடப்பட்டது. மேலும் உடமைகள் விற்கப்பட்டது! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}புதிய நிறுவனம் தொடங்கப்பட்டது! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} கட்டுமானங்களை தொடங்கியது {TOWN} அருகில்! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} {STRING} இனால் வாங்கப்பட்டது! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(மேலாளர்) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} நிதியுதவி செய்தது புதிய நகரம் {TOWN} கட்டுவதற்கு! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}புது {STRING} கட்டப்படுகிறது {TOWN}அருகில்! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}ப்திய {STRING} தொடங்கப்படுகிறது {TOWN}அருகில்! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} மூடப்படுவதாக அறிவித்துள்ளது! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}கொள்முதல் பிரச்சனைகளால் {STRING} உடனடியாக மூடப்படுகின்றது! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}அருகாமையில் மரங்கள் இல்லாதமையால் {STRING} உடனடியாக மூடப்படுகின்றது! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}பொருளாதார மந்த நிலை!{}{}பொருளாதார நிபுணர்கள் மந்த நிலையை பார்த்து அஞ்சுகின்றனர்! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}பொருளாதார மந்த நிலை முடிந்தது!{}{}பொருளாதாரம் வளர்ச்சியினைப் பார்த்து தொழிற்சாலைகள் மகிழ்ச்சியடைகின்றன! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} உற்பத்தியை அதிகரித்தது! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} தயாரிப்பு {INDUSTRY} இல் அதிகரித்தது {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} உற்பத்தி 50 சதவீதமாக குறைத்தது STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} தயாரிப்பு {INDUSTRY} இல் குறைந்தது {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} பணிமனையில் காத்துக்கொண்டிருக்கிறது STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} பணிமனையில் காத்துக்கொண்டிருக்கிறது STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} பணிமனையில் காத்துக்கொண்டிருக்கிறது STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} பணிமனையில் காத்துக்கொண்டிருக்கிறது # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} அட்டவனையில் மிக குறைவாக கட்டளைகளைக் கொண்டுள்ளது STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} பிழையான கட்டளையைக் கொண்டுள்ளது STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} இரட்டடிப்பு கட்டளைகளைக் கொண்டுள்ளது STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} பிழையான நிலையத்தினை கட்டளைகளில் கொண்டுள்ளது # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} பழையதாகிறது STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} பழையதாகிறது STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} பழையதாகிறது, உடனடியாக மாற்ற வேண்டும் STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} தன் பயணத்தை தொடர வழியை கண்டுபிடிக்க முடியவில்லை STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} தொலைந்துவிட்டது STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}இன் சென்ற வருட நிகர லாபம் {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} அடுத்த இடத்திற்கு செல்ல இயல்வில்லை எல்லைக்கு வெளியே இருப்பதினால் STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} மாற்றியமைப்பு கட்டளை நிறைவேற்றப்படாததால் நிறுத்தப்பட்டது STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}தானியங்கி புதுப்பித்தல் தோல்வியடைந்தது {VEHICLE} இன்{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}புதிய {STRING} இப்போது கிடைக்கும்! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}புதிய {STRING} இப்போது கிடைக்கும்! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} இனிமேல் {STRING} ஏற்றுக்கொள்ளாது STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} இனிமேல் {STRING} அல்லது {STRING} ஏற்றுக்கொள்ளாது STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} இப்போது {STRING} ஏற்றுக்கொள்கிறது STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} இப்போது {STRING} {STRING} ஆகியவற்றை ஏற்றுக்கொள்கிறது STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}மானியம் இனிமேல் தரப்படாது:{}{}{STRING} இருந்து {STRING} {STRING} வரை போக்குவரத்திற்கு மானியம் வழங்கப்படாது STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN}இல் சாலை போக்குவரத்து பாதிப்பு!{}{}Road rebuilding programme funded by {STRING} brings 6 months of misery to motorists! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}போக்குவரத்து தனியுரிமை! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN} நகராட்சியின் முழு போக்குவரத்து உரிமைகளையும் ஒரு வருடத்திற்கு {STRING} வாங்கியுள்ளது! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}பார்வைப் படம் {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}பார்படத்திற்கு மாற்றவும் # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}ஆட்டத்தின் அமைப்புகள் STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}நாணய பிரிவுகள் STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}நாணய பிரிவு தேர்ந்தெடுத்தல் ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :பிரித்தானிய பவுண்டு (GBP) STR_GAME_OPTIONS_CURRENCY_USD :அமெரிக்கன் டாலர் (USD) STR_GAME_OPTIONS_CURRENCY_EUR :யுரோ (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :ஜப்பானிய என் (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :ஆஸ்திரிய சில்லிங் (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :பெல்கிய ப்ரேங்க் (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :சுவிஸ் ப்ரேங்க் (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :செக் கொருணா (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :டச்மார்க் (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :டேனிஷ் க்ரோன் (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :ஸ்பானிஷ் பெசெடா (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :பின்னிஷ் மார்க்கா (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :பிரெஞ்ச் ப்ரேங்க் (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :கிரேக்க ட்ரச்மா (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :ஹங்கேரிய போரின்ட் (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :ஐஸ்லாந்திய க்ரோனா (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :இத்தாலிய லிரா (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :டச்சு கில்டர் (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :நோர்வேஜிய க்ரோன் (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :போலிஷ் சிலாட்டி Złoty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :ரோமானிய லூ (RON) STR_GAME_OPTIONS_CURRENCY_RUR :ரஷ்ய ரூபில்ஸ் (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :ஸ்லோவேனிய டொலர் (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :ஸ்வீடிஷ் க்ரோனா (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :துருக்கிய லிரா (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :சுலோவக் கொருணா (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :பிரேசிலிய ரியால் (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :எஸ்டோனிய க்ரூனி (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :லிதுவேனிய லிடாஸ் (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :தென்கொரிய வொன் (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :தென் ஆப்பிரிக்க ரான்ட் (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :புதிதாக... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}அளவிடும் பிரிவுகள் STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}அளவிடும் பிரிவு தேர்ந்தெடுத்தல் ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :மெட்ரிக் STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}சாலை வாகனங்கள் STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}வாகனங்கள் சாலையின் எந்தப்பக்கத்தில் செல்ல வேண்டும் STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :இடப்பக்கம் ஒட்டு STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :வலப்பக்கம் ஒட்டு STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}நகரங்களின் பெயர்கள் STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}நகர பெயர்கள் பாணியினைத் தேர்ந்தெடுக்கவும் ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :ஆங்கிலம் (இயற்கையான) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :பிரெஞ்சு STR_GAME_OPTIONS_TOWN_NAME_GERMAN :ஜெர்மன் STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :ஆங்கிலம் (கூடுதலான) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :இலத்தின்-அமெரிக்க STR_GAME_OPTIONS_TOWN_NAME_SILLY :முட்டாள்தனமான STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :சுவீடிஷ் STR_GAME_OPTIONS_TOWN_NAME_DUTCH :டச்சு STR_GAME_OPTIONS_TOWN_NAME_FINNISH :பின்னிஷ் STR_GAME_OPTIONS_TOWN_NAME_POLISH :போலிஷ் STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :சுலோவக் STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :நார்வேஜியன் STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :ஹங்கேரியன் STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :ஆஸ்திரியன் STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :ரோமேனியன் STR_GAME_OPTIONS_TOWN_NAME_CZECH :செக் STR_GAME_OPTIONS_TOWN_NAME_SWISS :சுவிஸ் STR_GAME_OPTIONS_TOWN_NAME_DANISH :டேனிஷ் STR_GAME_OPTIONS_TOWN_NAME_TURKISH :துர்கிஷ் STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :இத்தாலியன் STR_GAME_OPTIONS_TOWN_NAME_CATALAN :கடலன் ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}தானாக சேமி STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ஒவ்வொரு மாதமும் STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :மூன்று மாதங்களுக்கு ஒரு முறை STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ஆறு மாதங்களுக்கு ஒரு முறை STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ஒவ்வொரு வருடமும் STR_GAME_OPTIONS_LANGUAGE :{BLACK}மொழி STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் மொழியினை தேர்ந்தெடு STR_GAME_OPTIONS_FULLSCREEN :{BLACK}முழு படம் STR_GAME_OPTIONS_RESOLUTION :{BLACK}திரையின் அளவு STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}திரை அளவினைத் தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_RESOLUTION_OTHER :மற்றவை STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}திரைப்பிடிப்பு ஃபார்மேட் STR_GAME_OPTIONS_BASE_GRF :{BLACK}அடிப்படை அசைவூட்டம் STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை அசைவூட்டத்தினை தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} இல்லாத/பிழையான கோப்பு{P "" கள்} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}அடிப்படை அசைவூட்டத்தினை பற்றிய கூடுதல் தகவல் STR_GAME_OPTIONS_BASE_SFX :{BLACK}அடிப்படை ஒலிகள் தொகுப்பு STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை ஒலிகள் தொகுப்பினைத் தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}அடிப்படை ஒலிகள் தொகுப்பு பற்றிய கூடுதல் தகவல் STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}அடிப்படை இசைத் தொகுப்பு STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை இசைத் தொகுப்பினைத் தேர்ந்தெடுக்கவும் STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} பிழையான கோப்பு{P "" கள்} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}அடிப்படை இசைத் தொகுப்பு பற்றிய கூடுதல் தகவல்கள் STR_ERROR_FULLSCREEN_FAILED :{WHITE}முழுத்திரை நிலை தோல்வியடைந்தது # Custom currency window STR_CURRENCY_WINDOW :{WHITE}புது நாணயம் STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}நாணயமாற்று விகிதம்: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்கள் நாணய மதிப்பினை ஒரு பவுண்டு (£) அளவு குறைக்கவும் STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்கள் நாணய மதிப்பினை ஒரு பவுண்டு (£) அளவு அதிகரிக்கவும் STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}உங்களது நாணயத்தின் நாணயமாற்று விகிதத்தை ஒரு பவுண்டாக (£) அமைக்கவும் STR_CURRENCY_SEPARATOR :{LTBLUE}பிரிப்பான்: {ORANGE}{STRING} STR_CURRENCY_PREFIX :{LTBLUE}முன் ஒட்டு: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}உங்கள் நாணயத்தின் முன் ஒட்டத்தினை அமையுங்கள் STR_CURRENCY_SUFFIX :{LTBLUE}பின் ஒட்டு: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}உங்கள் நாணயத்தின் பின் ஒட்டத்தினை அமையுங்கள் STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}யுரோவிற்கு மாற்றுங்கள்: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}யுரோவிற்கு மாறுங்கள்: {ORANGE}என்றுமில்லை STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூரோவிற்கு மாறப்போகும் வருடத்தினைத் தேர்ந்தெடுக்கவும் STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூரோவிற்கு முன்னமே மாறுங்கள் STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}யூரோவிற்கு தாமதமாக மாறுங்கள் STR_CURRENCY_PREVIEW :{LTBLUE}முன்னோட்டம்: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 பவுண்டு (£) உங்க்ள் நாணயத்தில் STR_CURRENCY_CHANGE_PARAMETER :{BLACK}பயனரால் மாற்றப்பட்ட பண குணாதிசயங்களை மாற்று STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}அதிகபட்ச போட்டியாளர்கள்: {ORANGE}{COMMA} STR_NONE :ஒன்றுமில்லை STR_FUNDING_ONLY :நிதியளிப்பு மட்டும் STR_MINIMAL :குறைந்தபட்சம் STR_NUM_VERY_LOW :மிகவும் குறைவு STR_NUM_LOW :குறைவு STR_NUM_NORMAL :இயல்பான STR_NUM_HIGH :அதிகம் STR_NUM_CUSTOM :மாற்றியமைத்த STR_NUM_CUSTOM_NUMBER :மாற்றியமைத்த ({NUM}) STR_VARIETY_NONE :ஒன்றுமில்லை STR_VARIETY_VERY_LOW :மிகவும் குறைவு STR_VARIETY_LOW :குறைந்த STR_VARIETY_MEDIUM :நடுத்தரம் STR_VARIETY_HIGH :அதிகம் STR_VARIETY_VERY_HIGH :மிகவும் அதிகம் STR_AI_SPEED_VERY_SLOW :மிக மெதுவாக STR_AI_SPEED_SLOW :மெதுவாக STR_AI_SPEED_MEDIUM :இயல்பாக STR_AI_SPEED_FAST :வேகமாக STR_AI_SPEED_VERY_FAST :அதிவேகம் STR_SEA_LEVEL_VERY_LOW :மிகவும் குறைந்த STR_SEA_LEVEL_LOW :குறைந்த STR_SEA_LEVEL_MEDIUM :நடுத்தரம் STR_SEA_LEVEL_HIGH :உயர்ந்த STR_SEA_LEVEL_CUSTOM :மாற்றியமைத்த STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Custom ({NUM}%) STR_RIVERS_NONE :ஒன்றுமில்லை STR_RIVERS_FEW :சில STR_RIVERS_MODERATE :நடுத்தரம் STR_RIVERS_LOT :பல STR_DISASTER_NONE :ஒன்றுமில்லை STR_DISASTER_REDUCED :குறைக்கப்பட்ட STR_DISASTER_NORMAL :இயல்பான STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :மிகவும் சமமான STR_TERRAIN_TYPE_FLAT :சமமான STR_TERRAIN_TYPE_HILLY :உயர்ந்து STR_TERRAIN_TYPE_MOUNTAINOUS :மலைகளாக STR_CITY_APPROVAL_PERMISSIVE :அனுமதிதரும் STR_CITY_APPROVAL_TOLERANT :பொறுத்துக்கொள்ளும் STR_CITY_APPROVAL_HOSTILE :அனுமதிக்காது # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}சிறப்பு அமைப்புகள் STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}வடிகட்டி: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}அனைத்தையும் விரிவாக்கு STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}அனைத்தையும் மூடு STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(எந்த விவரமும் இல்லை) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}இயல்பான மதிப்பு: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}அமைப்பு வகை: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Client அமைப்புகள் (பதிவு செய்யப்படாது; அனைத்து ஆட்டங்களையும் மாற்றும்) STR_CONFIG_SETTING_TYPE_GAME_MENU :ஆட்டத்தின் அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களை மட்டுமே மாற்றும்) STR_CONFIG_SETTING_TYPE_GAME_INGAME :ஆட்டத்தின் அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய ஆட்டத்தினை மட்டுமே மாற்றும்) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களை மட்டுமே மாற்றும்) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய நிறுவனத்தை மட்டுமே மாற்றும்) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}காட்டு: STR_CONFIG_SETTING_RESTRICT_BASIC :அடிப்படை அமைப்புகள் STR_CONFIG_SETTING_RESTRICT_ADVANCED :சிறப்பு அமைப்புகள் STR_CONFIG_SETTING_RESTRICT_ALL :அதிக / அனைத்து அமைப்புகள் STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :முதலில் இருந்த மதிப்பினை மாற்றம் செய்யப்பட்ட அமைப்புகள் STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}கீழுள்ள பட்டியலினை குறிப்பிட்ட அமைப்பு வகைகளுக்கு குறைக்கும் STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :அனைத்து அமைப்புகள் STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client அமைப்புகள் (பதிவு செய்யப்படாது; அனைத்து ஆட்டங்களையும் மாற்றும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :ஆட்டத்தின் அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களில் மட்டும் மாற்றம் தெரியும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :ஆட்டத்தின் அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய ஆட்டத்தில் மட்டும் மாற்றம் தெரியும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; புதிய ஆட்டங்களில் மாற்றம் தெரியும்) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :நிறுவன அமைப்புகள் (பதிவு செய்யப்பட்டது; தற்போதைய நிறுவனம் மட்டும்) STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On STR_CONFIG_SETTING_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_COMPANIES_OFF :Off STR_CONFIG_SETTING_COMPANIES_OWN :சொந்த நிறுவனம்' STR_CONFIG_SETTING_COMPANIES_ALL :எல்லா நிறுவனங்களும் STR_CONFIG_SETTING_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_ORIGINAL :உண்மையான STR_CONFIG_SETTING_REALISTIC :இயற்கையான STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :இடது STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :நடு STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :வலது STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :அதிகபட்ச ஆரம்ப கடன்: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :ஒரு நிறுவனத்தால் பெறமுடியும் கடன் (பணவீக்கத்தினைக் கணக்கில் எடுத்துக் கொள்ளாமல்) STR_CONFIG_SETTING_INTEREST_RATE :வட்டி: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :கடன் வட்டி;செயற்படுத்தினால் பணவீக்கத்தினையும் கட்டுப்படுத்தும் STR_CONFIG_SETTING_RUNNING_COSTS :இயங்குவதற்கான செலவுகள்: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :வாகன மற்றும் சொத்து பழுதுபார்த்தல் அளவினையும் ஓட்டும் செலவுகளையும் அமை STR_CONFIG_SETTING_CONSTRUCTION_SPEED :கட்டுமானங்களின் வேகம்: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :AI களின் கட்டுமானங்களின் எண்ணிக்கையினை கட்டுப்படுத்தவும் STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :வாகங்களின் பழுதுகள்: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :அடிக்கடி பழுதுபார்க்கப்படாத வாகனங்களின் பழுதுகள் ஏற்படும் காலத்தினை அமை STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :மானியம் பெருக்கு: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :மானியம் வழங்கப்பட்ட பணிகளுக்கு எவ்வுளவு தர வேண்டும் என்பதினை அமை STR_CONFIG_SETTING_CONSTRUCTION_COSTS :கட்டுமானச் செலவுகள்: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :கட்டுமான அளவு மற்றும் வாங்கும் செலவுகள் ஆகியவற்றை அமை STR_CONFIG_SETTING_RECESSIONS :பொருளதாரத் தேக்கங்கள்: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING :நிலையங்களில் இரயில்களை திருப்புவதை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_DISASTERS :பேரழிவுகள்: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL :நகர மறு அமைப்பின் மீது நகராட்சியின் நிலை: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES :கரைகளிலும் சரிவுகளிலும் கட்ட அனுமதி: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :நகரத்தின் சாலைகள், பாலங்கள் மற்றும் சுரங்கங்களை நீக்க அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :நகராட்சியின் கட்டடங்கள் நீக்குவதை எளிதாக்கவும் STR_CONFIG_SETTING_TRAIN_LENGTH :இரயில்களின் அதிகபட்ச நீளம்: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :இரயில்களின் அதிகபட்ச நீளத்தினை அமை STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} கட்டம்{P 0 "கட்டம்" "கட்டங்கள்"} STR_CONFIG_SETTING_SMOKE_AMOUNT :வாகனங்களின் புகை/பொறிகள் எண்ணிக்கை: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :வாகனங்கள் வெளியிடும் தீப்பொறி அல்லது புகையின் அளவினை அமை STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :இரயிலின் வேக அமைப்பு: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :சாலை வாகன வேக அமைப்பு: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :இரயில்களின் மலை ஏறுதல் வேகத்தடை: {STRING} STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :சாலை வாகங்களின் மலையேறுதல் வேகத்தடை: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :இரயில் மற்றும் கப்பல்களை 90° வளைவுகள் எடுப்பதை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :நேரடியாக இணைக்கப்படாத நிலையங்களை இணைக்க அனுமதி: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :புதிய சீரமைக்கப்பட்ட சரக்கேற்றுதலினைப் பயன்படுத்தவும்: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :பொறுமையாக வாகனங்களை ஏற்று: {STRING} STR_CONFIG_SETTING_INFLATION :விலைவாசி ஏற்றம்: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :பண வீக்கத்தினை செயல்படுத்து, இதனால் செலவுகள் வளர்ச்சி வரவுகளின் வளர்ச்சியைவிட அதிகமாகும் STR_CONFIG_SETTING_SELECTGOODS :தேவை இருந்தால் மட்டுமே அச்சரக்குகளை நிலையத்தில் இறக்கு: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :அதிகபட்ச பால நீளம்: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :கட்டப்படும் பாலங்களின் அதிகபட்ச நீளம் STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :அதிகபட்ச சுரங்க நீளம்: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :கட்டப்படும் சுரங்கங்களின் அதிகபட்ச நீளம் STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :மனித அடிப்படை தொழிற்சாலை கட்டுமான வழி: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :மற்ற தொழிற்சாலைகளைப் போல STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :எங்கேயாவது STR_CONFIG_SETTING_INDUSTRY_PLATFORM :தொழிற்சாலைகள் அருகே உள்ள சம நிலங்கள்: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN :ஒரே மாதிரியான தொழிற்சாலைகளை அதே நகரத்தில் நிறுவ அனுமதி: {STRING} STR_CONFIG_SETTING_SIGNALSIDE :சிக்னல்களைக் காட்டவும்: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :தடத்தின் எந்தப் பக்கத்தில் சிக்னல்களை வைப்பதென்று தேர்ந்தெடுக்கவும் STR_CONFIG_SETTING_SIGNALSIDE_LEFT :இடப்பக்கத்தில் STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :ஓட்டும் பக்கத்தில் STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :வலப்பக்கத்தில் STR_CONFIG_SETTING_SHOWFINANCES :நிதிநிலைமை அறிக்கையை ஒவ்வொரு ஆண்டின் இறுதியிலும் காட்டு: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :புதிய கட்டளைகள் 'எங்கும்-நிற்காதே' என்று குறிக்கப்படும்: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :பிளாட்பாரத்தின் {STRING} இல் நிற்கும், புதிய கட்டளைகள்படி STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :அருகே உள்ள முடிவில் STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :நடு STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :தொலைவில் உள்ள முடிவில் STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :சாலை வாகன வரிசைப்படுத்துதல் (with quantum effects): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :ஒட்டில் எலி இருக்கும்பொழுது திரையினை நகர்த்தவும் : {STRING} STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :முக்கிய திரைபார்வை, முழுத்திரையில் மட்டும் STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :முக்கிய திரைபார்வை STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :ஒவ்வொரு திரைபார்வையும் STR_CONFIG_SETTING_BRIBE :நகராட்சிக்கு கையூட்டுத் தர அனுமதி: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :போக்குவரத்து உரிமைகளை விற்க அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :கட்டடங்களை கட்ட அனுமதி: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :நிறுவனங்கள் நகரங்களுக்கு பணம் வழங்க அனுமதிக்கவும், புதிய வீடுகள் கட்ட STR_CONFIG_SETTING_ALLOW_FUND_ROAD :உள்ளூர் சாலை மறுசீரமைக்க நிதியளி: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :மற்ற நிறுவனங்களுக்கு பணம் அனுப்ப அனுமதி: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :பெரிய இரயில்களின் சரக்குகளுக்கு எடை பெருக்கி: {STRING} STR_CONFIG_SETTING_PLANE_SPEED :விமான வேக பெருக்கி: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :விமான விபத்துகளின் எண்ணிக்கை: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :விமான விபத்து நிகழ்வதற்கான வாய்ப்புகளை அமை STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :குறைக்கப்பட்ட STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :இயல்பான STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :வழிசெல்லக்கூடிய சாலை நிறுத்தங்களை நகராட்சியின் சாலைகளில் அமைக்க அனுமதி: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :நிலையங்களை ஒட்டி கட்ட அனுமதி: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :வெவ்வேறு நிலையங்கள் ஒட்டி கட்டுவதற்கு அனுமதிக்கவும் STR_CONFIG_SETTING_DYNAMIC_ENGINES :பல்வேறு NewGRF பொறிகளை செயற்படுத்தவும்: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}வாகனங்கள் இருக்கும் பொது இந்த அமைப்பினை மாற்ற இயலாது STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :கட்டட பராமரிப்பு: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :விமான நிலையங்கள் என்றும் காலாவதியாகாது: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :வாகனம் தொலைந்தால் எச்சரிக்கை செய்: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :வாகனங்களின் கட்டளைகளை பார்வையிடு: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :இல்லை STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ஆம், ஆனால் நிறுத்தப்பட்டுள்ள வாகனங்களை விட்டுவிடு STR_CONFIG_SETTING_ORDER_REVIEW_ON :அனைத்து வாகனங்கள் STR_CONFIG_SETTING_WARN_INCOME_LESS :வாகனம் நஷ்டத்தில் ஓடினால் எச்சரி: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :வாகனங்கள் என்றும் காலாவதியாகாது: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :வாகனங்கள் காலாவதியானால் தானாக மாற்றியமை: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :செயலாக்க செய்யப்பட்டால், வாகனங்கள் காலாவதியாவதற்கு முன்னால் தானாக மாற்றியமைக்கப்படும் STR_CONFIG_SETTING_AUTORENEW_MONTHS :தானாக புதுப்பிக்கவும் வாகனத்தின் {STRING} அதிக. வயது STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} மாத{P 0 "ம்" ங்கள்} முன்னர் STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} மாத{P 0 "ம்" ங்கள்} பின்னர் STR_CONFIG_SETTING_AUTORENEW_MONEY :காலாவதியான வாகனங்களை மாற்றியமைக்கத் தேவையான பணம்: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION :பிழை செய்திக்கான கால அளவு: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} விநாடி{P 0 "" கள்} STR_CONFIG_SETTING_HOVER_DELAY :tooltips இனை காட்டு: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_VALUE :காட்டவும் {COMMA} விநாடி{P 0 "" கள்} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :வலது சொடுக்கு STR_CONFIG_SETTING_POPULATION_IN_LABEL :நகரத்தின் மக்கள்த் தொகையினை அதன் பெயருடன் காட்டு: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :நகரத்தின் மக்கள்தொகையினை வரைபடத்தில் காட்டவும் STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :வரைபடத்தில் கோடுகளின் எண்ணிக்கை: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :நில உருவாக்கி: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :உண்மையான STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :வரைபட எல்லையிலிருந்து எண்ணெய் சுத்திகரிப்பு நிலையங்கள் இருக்கக்கூடிய தூரம்: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :எண்ணெய் சுத்திகரிப்பு நிலையங்கள் வரைபடத்தின் எல்லைகளில் மட்டுமே கட்ட இயலும், அதாவது தீவு வரைபடங்களில் கடற்கரைகளில் கட்ட இயலும் STR_CONFIG_SETTING_SNOWLINE_HEIGHT :பனி-கோடின் உயரம்: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :நிலப்பகுதியின் சமனில்லாத நிலை (TerraGenesis மட்டும்) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :மிகவும் சமமான STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :சமமான STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :கரடுமுரடான STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :மிகவும் கரடுமுரடான STR_CONFIG_SETTING_TREE_PLACER :மரங்கள் நடும் வகை: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :உண்மையான STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :சீரமைக்கப்பட்ட STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :உயர்பட சுழற்ச்சி: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :வலமிருந்து இடமாக செல் STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :இடமிலிருந்து வலஞ்செல் STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :சமமான சித்திரக்காட்சியின் உயர அளவு: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :வரைபட எல்லைகளில் நில மாற்றங்களை செயற்படுத்தவும்: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :முடக்கப்பட்டால், வரைபடத்தின் எல்லைகள் கடலாகவே இருக்கும் STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}வடதுருவத்தில் ஒன்று அல்லது அதற்கு மேற்பட்ட கட்டங்கள் காலியாக இல்லை STR_CONFIG_SETTING_STATION_SPREAD :அதிக. நிலைய விரிப்பு: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD :ஹெலிகாப்ப்டர்களை தானாக சரிபார்ர்க்கவும்: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :சிறுபடத்தில் பயன்படுத்திய நில நிறம்: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :சிறுபடத்தில் நிலப்பகுதியின் நிறம் STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :பச்சை STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :கரும் பச்சை STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :ஊதா STR_CONFIG_SETTING_REVERSE_SCROLLING :திருப்பப்பட்ட பக்கமுருட்டி திசை : {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :பார்படத்தின் இலகுவான பக்கமுருட்டல்: {STRING} STR_CONFIG_SETTING_LIVERIES :நிறுவன livery களைக் காட்டு: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_LIVERIES_OWN :சொந்த நிறுவனம் STR_CONFIG_SETTING_LIVERIES_ALL :அனைத்து நிறுவனங்களும் STR_CONFIG_SETTING_PREFER_TEAMCHAT :குழு அரட்டையின் விரும்பு : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :படத்தினை உள்நோக்கு STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :வரைபடத்தினை உருட்டு STR_CONFIG_SETTING_SCROLLWHEEL_OFF :அணை STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :வரைபட உருட்டல் வேகம்: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION :திரை தட்டச்சுப்பலகை: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :இரு அழுத்தங்கள் STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :ஒரு அழுத்தம் (ஒரே இடத்தில் இருந்தால்) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :ஒரு அழுத்தம் (உடனடியாக) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :அணை STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{STRING} தேதி வகையினை பதிவுஆட்டங்கள் பெயர்களுக்கு பயன்படுத்தவும் STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :பதிவு ஆட்டங்கள் கோப்புப் பெயர்களில் உள்ள தேதி வகையினை அமை STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :நீளமான (31 திசம்பர் 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :சுருக்கமான (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :புதிய ஆட்டத்தினை தொடங்கும்போது தானாக நிறுத்தவும்: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :ஆட்டம் நிருத்தபட்டிருக்கம்போது அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :ஆட்டம் நிறுத்தப்பட்டிருக்கும்போது செய்யக்கூடிய செயல்களைத் தேர்ந்தெடுக்கவும் STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :எதையும் அனுமதிக்காதே STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :அனைத்து கட்டுமானம்-அல்லாத செயல்கள் STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :அனைத்து செயல்கள் நிலமாற்றங்கள் தவிர்த்து STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :அனைத்து செயல்கள் STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :வாகனப் பட்டியலினைப் பயன்படுத்தவும்: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :கால அட்டவணைகளில் காலங்களைக் காட்டவும்: {STRING} STR_CONFIG_SETTING_QUICKGOTO :வாகன கட்டளைகளை விரிவாக உருவாக்கவும்: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :முதலில் கிடைக்கும் STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :கடைசியில் கிடைக்கும் STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :அதிகமாக பயன்படுத்தியவை STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :ஒதுக்கீடு செய்யப்பட்ட தடங்களைக் காட்டவும்: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :பயன்படுத்திய கட்டுமான செயல்களை செயற்பாட்டிலேயே வைத்திருக்கவும்: {STRING} STR_CONFIG_SETTING_SOUND_TICKER :செய்தி கடிகாரம்: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :செய்தித் தொகுப்புகளை காட்டும்போது ஒலி எழுப்பவும் STR_CONFIG_SETTING_SOUND_NEWS :செய்தித்தாள்: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :செய்திதாள்களைக் காட்டும்போது ஒலி எழுப்பவும் STR_CONFIG_SETTING_SOUND_NEW_YEAR :ஆண்டின் முடிவு: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :கட்டுமானம்: {STRING} STR_CONFIG_SETTING_SOUND_CLICK :பொத்தான் அழுத்தங்கள்: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :பொத்தான்களை அழுத்தும்போது ஒலி எழுப்பவும் STR_CONFIG_SETTING_SOUND_DISASTER :பேரழிவுகள்/விபத்துகள்: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :விபத்துகள் மற்றும் பேரழிவுகளின் ஒலிகளைச் செயலாக்கு STR_CONFIG_SETTING_SOUND_VEHICLE :வாகனங்கள்: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :வாகனங்களின் இசைகளை செயலாக்கு STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :தகுந்த வாகனம் இல்லாதபோது Disable infrastructure building: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :அதிகபட்ச இரயில்கள் நிறுவனங்களுக்கு: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :ஒரு நிறுவனத்தால் வைத்திருக்கக்கூடிய இரயில்கள் எண்ணிக்கை STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :அதிகபட்ச வாகனங்கள் நிறுவனங்களுக்கு: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :ஒரு நிறுவனத்தால் வைத்திருக்கக்கூடிய அதிகபட்ச வாகனங்கள் எண்ணிக்கை STR_CONFIG_SETTING_MAX_AIRCRAFT :அதிகபட்ச விமானங்கள் நிறுவனங்களுக்கு: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :ஒரு நிறுவனத்தால் வைத்திருக்கக்கூடிய அதிகபட்ச விமானங்கள் எண்ணிக்கை STR_CONFIG_SETTING_MAX_SHIPS :அதிகபட்ச கப்பல்கள் நிறுவனங்களுக்கு: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :ஒரு நிறுவனத்தால் வைத்திருக்கக்கூடிய அதிகபட்ச கப்பல்கள் எண்ணிக்கை STR_CONFIG_SETTING_AI_BUILDS_TRAINS :கணினிகளுக்கு இரயில்களை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :கணினியால் இரயில்களை பயன்படுத்த இயலாது STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :கணினியிற்கு சாலை வாகனங்களை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :கணினியால் சாலை வாகனங்களை பயன்படுத்த இயலாது STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :கணினியிற்கு விமானங்களை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :கணினியால் விமானங்களை பயன்படுத்த இயலாது STR_CONFIG_SETTING_AI_BUILDS_SHIPS :கணினியிற்கு கப்பல்களை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :கணினியால் கப்பல்களை பயன்படுத்த இயலாது STR_CONFIG_SETTING_AI_PROFILE_EASY :எளிதான STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :நடுத்தரமான STR_CONFIG_SETTING_AI_PROFILE_HARD :கடுமையான STR_CONFIG_SETTING_SERVINT_ISPERCENT :பழுதுபார்த்தல்கள் இடையே உள்ள காலத்தினை சதவிகிதத்தில் காட்டவும்: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS :இரயிகளின் பழுதுபார்த்தல் இடைவேளி: {STRING} STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} நாள்{P "நாள்" நாட்கள்}/% STR_CONFIG_SETTING_SERVINT_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :சாலை வாகனங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT :விமாங்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS :கப்பல்களின் பழுதுபார்த்தல் இடைவேளி: {STRING} STR_CONFIG_SETTING_NOSERVICE :பழுதுகள் இல்லையெனில் பழுதுபார்த்தலினை செயலிழக்கவும்: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :பெட்டி வேக கட்டுப்பாட்டினை செயல்படுத்தவும்: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :மின்சார இரயில்களை அனுமதிக்காதே: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :விளையாடுபவரின் நிலையத்திற்கு முதல் வாகனம் வருகை புரிந்தது: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :போட்டியாளரின் நிலையத்திற்கு முதல் வாகனம் வருகை புரிந்தது: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :விபத்துகள் / பேரழிவுகள்: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :விபத்துகள் அல்லது பேரழிவுகள் நிகழும்போது செய்தித்தாள் ஒன்றினைக் காட்டு STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :நிறுவனத்தின் விவரம்: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :தொழிற்சாலைகளின் திறப்பு: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :தொழிற்சாலைகள் திறக்கப்படும்போது செய்தித்தாளினைக் காட்டு STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :தொழிற்சாலைகளின் மூடல்: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :தொழிற்சாலைகள் மூடப்படும்போது செய்தித்தாளினைக் காட்டு STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :பொருளாதார மாற்றங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :உலக பொருளாதார மாற்றங்களைப் பற்றி செய்தித்தாளினைக் காட்டு STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :மற்ற தொழிற்சாலைகளின் உற்பத்தி மாற்றங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :நிறுவனத்தின் வாகனங்கள் பற்றி அறிவுறை / தகவல்: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :பிரச்சனையில் உள்ள வாகனங்கள் பற்றி செய்தி காட்டவும் STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :புதிய வாகனங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :புதிய வாகன வகைகள் வெளிவரும்போது செய்தித்தாளினை காட்டு STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :சரக்கு ஏற்றுக்கொள்தலின் மாற்றங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :மானியங்கள்: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :மானியம் தொடர்பான நிகழ்வுகள் பற்றி செய்தித்தாளினைக் காட்டவும் STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :பொதுவான விவரம்: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :நிறுத்து STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :தொகுப்பு STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :முழு STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :நிற செய்தித்தாள்கள் வெளிவரும் ஆண்டு: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :தொடங்கும் வருடம்: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :இயல்பான பொருளாதாரத்தினைச் செயல்படுத்தவும் (அதிகமான, சிறிய மாற்றங்கள்): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :மற்ற நிறுவனங்களின் பங்குகளை வாங்குவதை அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :இழுத்தால், சிக்னல்களை இடவும், ஒவ்வொறு: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} கட்ட{P 0 "ம்" ங்கள்} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :இழுக்கும்போது, சிக்னல்களுக்கு இடையே சீரான இடைவேளியினை விடவும்: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :தானாக semaphore-களைக் கட்டவும், முன்னர்: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :சிக்னள் GUI இனை செயல்படுத்தவும்: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :கட்டப்போகும் சிக்னல் வகையினைத் தேர்ந்தெடுக்கவும்: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :பயன்படுத்தப்போகும் சிக்னல் வகை STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :கட்ட சிக்னல்கள் STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :பாதை சிக்னல்கள் STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :ஒருவழிப் பாதை சிக்னல்கள் STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :வெவேறு சிக்னல் வகைகளுள் மாற்றவும்: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :கட்ட சிக்னல்கள் மட்டும் STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :பாதை சிக்னல்கள் மட்டும் STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :அனைத்தும் STR_CONFIG_SETTING_TOWN_LAYOUT :புதிய நகரங்களுக்கான சாலை கட்டங்கள்: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :அசலான STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :நல்ல சாலைகள் STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 கட்டங்கள் STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 கட்டங்கள் STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :ஏதொவொரு STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :நகரங்கள் சாலைகளை கட்ட அனுமதி: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :நகரங்கள் சாலைச் சந்திப்புகளை கட்ட அனுமதி: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :இந்த அமைப்பு நகராட்சிகள் இருப்புப்பாதை சந்திக் கடவுகளைக் கட்ட அனுமதிக்கும் STR_CONFIG_SETTING_NOISE_LEVEL :விமான நிலையங்களுக்கு நகராட்சியால் நிர்ணயிக்கப்பட்ட இரைச்சல் அளவினை அனுமதிக்கவும்: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :ஆட்டத்தில் நகரங்களை நிறுவ அனுமதி: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :இந்த அமைப்பு விளியாடுபவர்கள் ஆட்டத்தில் புதிய நகரங்களை நிறுவ அனுமதிக்கும் STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :இயலாது STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :அனுமதிக்கப்படுகிறது STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :அனுமதிக்கப்படுகிறது, ஆனால் மாற்றியமைக்கப்பட்ட நகர அமைப்பு STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :ஆட்டத்தின் போது மரங்களை நடுதல்: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ஒன்றுமில்லை {RED}(மர மில்லை உடைக்கும்) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :மழைக் காடுகளில் மட்டும் STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :எங்கும் STR_CONFIG_SETTING_TOOLBAR_POS :முக்கிய toolbarஇன் அமைப்பு இடம்: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :status barஇன் அமைப்பு இடம்: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} பிக்சல்{P 0 "" கள்} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :செயலிழக்க செய்யப்பட்டது STR_CONFIG_SETTING_ZOOM_MIN :அதிகபட்ச உள்நோக்கு அளவு: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :அதிகபட்ச வெளிநோக்கு அளவு: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :இயல்பான STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :நகர வளர்ச்சி வேகம்: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :நகர வளர்ச்சி வேகம் STR_CONFIG_SETTING_TOWN_GROWTH_NONE :ஒன்றுமில்லை STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :மெதுவாக STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :சாதாரணமாக STR_CONFIG_SETTING_TOWN_GROWTH_FAST :வேகமாக STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :அதிவேகமாக STR_CONFIG_SETTING_LARGER_TOWNS :நகரங்கள் மாநகரங்கள் ஆகும் வாய்ப்பு: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ஒன்றுமில்லை STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :தொடக்க நகர அளவு பெருக்கம்: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :ஆட்டத்தின் தொடக்கத்தில் மாநகரங்களின் அளவு நகரங்களை ஒப்பிடுகையில் STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}கட்டுமானம் STR_CONFIG_SETTING_VEHICLES :{ORANGE}வாகனங்கள் STR_CONFIG_SETTING_STATIONS :{ORANGE}நிலையங்கள் STR_CONFIG_SETTING_ECONOMY :{ORANGE}பொருளாதாரம் STR_CONFIG_SETTING_AI :{ORANGE}போட்டியாளர்கள் STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}திரை அமைப்புகள் STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction STR_CONFIG_SETTING_SOUND :{ORANGE}ஒலிகள் STR_CONFIG_SETTING_NEWS :{ORANGE}செய்திகள் மற்றும் தகவல்கள் STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}சிக்னல்கள் STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}சரக்கு பரிமாற்றம் STR_CONFIG_SETTING_AI_NPC :{ORANGE}கணினி வீரர்கள் STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}தானியங்கி புதுப்பித்தல் STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}பராமரிப்பு STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}வழி மாற்றல் STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}இரயில் வண்டிகள் STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}நகரங்கள் STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}தொழிற்சாலைகள் STR_CONFIG_SETTING_PATHFINDER_OPF :அசல் STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(பரிந்துரைக்கப்பட்டது) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :இரயில்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :இரயில்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :சாலை வாகனங்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :சாலை வாகனங்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :கப்பல்களுக்கான வழிகண்டுபிடிப்பான்: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :கப்பல்கள் பயன்படுத்தப்போகும் வழிகண்டுபிடிப்பான் STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :சிக்னல்களில் தானியங்கி மீட்சி: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}அமைப்பின் மதிப்பினை மாற்று # Config errors STR_CONFIG_ERROR :{WHITE}அமைப்புவடிவாக்கம் கோப்பில் பிழை... STR_CONFIG_ERROR_ARRAY :{WHITE}... '{STRING}' இல் பிழை STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... செல்லாத மதிப்பு '{STRING}' '{STRING}' இற்கு STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... பயன்படுத்த இயலாத NewGRF இனை பயன்படுத்தவில்லை '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :கிடைக்கவில்லை STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :கணினி NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :இந்த OpenTTD பதிப்புடன் பயன்படுத்த இயலாது STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :தெரியவில்லை STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... அடிப்படை அசைவூட்டத் தொகுப்பு '{STRING}' தவிர்கப்பட்டது: கிடைக்கவில்லை STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... அடிப்படை ஒளித் தொகுப்பு '{STRING}' தவிர்கப்பட்டது: கிடைக்கவில்லை STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... அடிப்படை இசைத் தொகுப்பு '{STRING}' தவிர்கப்பட்டது: கிடைக்கவில்லை STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}நினைவாற்றல் நிறைந்துவிட்டது # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}புது விளையாட்டு STR_INTRO_LOAD_GAME :{BLACK}ஆட்டத்தை ஏற்று STR_INTRO_PLAY_SCENARIO :{BLACK}சித்திரக்காட்சியில் விளையாடு STR_INTRO_PLAY_HEIGHTMAP :{BLACK}உயர்படத்தில் விளையாடு STR_INTRO_SCENARIO_EDITOR :{BLACK}சித்திரக்காட்சி திருத்தி STR_INTRO_GAME_OPTIONS :{BLACK}ஆட்டத்தின் அமைப்புகள் STR_INTRO_HIGHSCORE :{BLACK}புள்ளிகள் பட்டியல் STR_INTRO_ADVANCED_SETTINGS :{BLACK}அமைப்புகள் STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகள் STR_INTRO_ONLINE_CONTENT :{BLACK}கோப்புகளை இணையதளத்தில் தேடு STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / ஆட்டம் அமைப்புகள் STR_INTRO_QUIT :{BLACK}வெளியேறு STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}புதிய ஆட்டத்தினைத் தொடங்கும். Ctrl+Click அழுத்தினால் வரைபட அமைப்புவடிவாக்கம் தவிர்க்கப்படும் STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}பதிவு செய்யப்பட்ட விளையாட்டை ஏற்று STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}புதிய ஆட்டத்தினைத் தொடங்கு, உயர்படத்தினை நிலப்பரப்பிற்கு பயன்படுத்தி STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}'உபதுருவ' நிலப்பரப்புப் பாணியைத் தேர்ந்தெடுக்கவும் STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}'மிதவெப்பமண்டல' நிலப்பரப்புப் பாணியைத் தேர்ந்தெடுக்கவும் STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}'பொம்மைநில' நிலப்பரப்புப் பாணியைத் தேர்ந்தெடுக்கவும் STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}ஆட்டம் அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}புள்ளிகள் பட்டியலினைக் காட்டவும் STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}சிறப்பு அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}AI/வரிவடிவங்கள் அமைப்புகளைக் காட்டு STR_INTRO_TOOLTIP_QUIT :{BLACK} 'OpenTTD'ஐ விட்டு வெளியேறு STR_INTRO_TRANSLATION :{BLACK}இந்த மொழிபெயர்ப்பில் {NUM} இல்லை {P "" s}.மொழிபெயர்பாளராக பதிவு செய்து OpenTTDவிற்கு உதவவும். மேலும் விவரங்கள் அறிய readme.txt ஐ பார்க்கவும்.. # Quit window STR_QUIT_CAPTION :{WHITE}வெளியேறு STR_QUIT_YES :{BLACK}ஆமாம் STR_QUIT_NO :{BLACK}இல்லை # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}ஆட்டத்தை கைவிடு STR_ABANDON_GAME_QUERY :{YELLOW}நீங்கள் இந்த ஆட்டத்தினை விட்டு வெளியேறுவதில் உறுதியா? STR_ABANDON_SCENARIO_QUERY :{YELLOW}நீங்கள் இந்த சித்திரக்காட்சியினை விட்டு வெளியேறுவதில் உறுதியா? # Cheat window STR_CHEATS :{WHITE}ஏமாற்றுகள் STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG} ஆக பணத்தை உயர்த்து STR_CHEAT_CHANGE_COMPANY :{LTBLUE}இந்த நிறுவனமாக ஆடுகிறீர்கள்: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}அதிசய நிலச்சமனி (தொழிற்சாலைகள் மற்றும் பொருட்களை நீக்குவதற்கு): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}சுரங்கங்கள் ஒன்றுக்கொன்று குறுக்கிடலாம்: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}சிறிய விமான நிலையங்களில் ஜெட்விமானங்கள் நொறுங்காது: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :மிதமான நிலவெளி STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :வட துருவ நிலவெளி STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :மிதவெப்பமண்டல நிலவெளி STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :பொம்மை நிலவெளி STR_CHEAT_CHANGE_DATE :{LTBLUE}தேதியை மாற்று: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}நடப்பு வருடத்தை மாற்று STR_CHEAT_SETUP_PROD :{LTBLUE}தயாரிப்பு மதிப்புகளை மாற்ற முடியும்: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}புதிய நிற கோட்பாடு STR_LIVERY_GENERAL_TOOLTIP :{BLACK}பொதுவான நிற கோட்பாடுகளைக் காட்டவும் STR_LIVERY_TRAIN_TOOLTIP :{BLACK}இரயில் நிற கோட்பாடுகளைக் காட்டவும் STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}சாலை வாகன நிற கோட்பாடுகளைக் காட்டவும் STR_LIVERY_SHIP_TOOLTIP :{BLACK}கப்பல் நிறக் கோட்பாடுகளைக் காட்டவும் STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}விமான நிறக் கோட்பாடுகளைக் காட்டவும் STR_LIVERY_DEFAULT :Standard Livery STR_LIVERY_STEAM :புகை பொறி STR_LIVERY_DIESEL :டீசல் பொறி STR_LIVERY_ELECTRIC :மின்சார பொறி STR_LIVERY_MONORAIL :மோனோ இரயில் பொறி STR_LIVERY_MAGLEV :மேக்லெவ் பொறி STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :பயணிகள் பெட்டி (புகை) STR_LIVERY_PASSENGER_WAGON_DIESEL :பயணிகள் பெட்டி (டீசல்) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :பயணிகள் பெட்டி (மின்சாரம்) STR_LIVERY_PASSENGER_WAGON_MONORAIL :பயணிகள் பெட்டி (மோனோ-இரயில்) STR_LIVERY_PASSENGER_WAGON_MAGLEV :பயணிகள் பெட்டி (மக்-லெவ்) STR_LIVERY_FREIGHT_WAGON :சரக்குப் பெட்டி STR_LIVERY_BUS :பேருந்து STR_LIVERY_TRUCK :லாரி STR_LIVERY_PASSENGER_SHIP :பயணிகள் கப்பல் STR_LIVERY_FREIGHT_SHIP :சரக்கு கப்பல் STR_LIVERY_HELICOPTER :ஹெலிகாப்டர் STR_LIVERY_SMALL_PLANE :சிறிய விமானம் STR_LIVERY_LARGE_PLANE :பெரிய விமானம் STR_LIVERY_PASSENGER_TRAM :பயணிகள் ட்ராம் STR_LIVERY_FREIGHT_TRAM :சரக்கு ட்ராம் # Face selection window STR_FACE_CAPTION :{WHITE}முகம் தேர்ந்தெடுத்தல் STR_FACE_CANCEL_TOOLTIP :{BLACK}புதிய முக தேர்ந்தெடுத்தலை இரத்து செய் STR_FACE_OK_TOOLTIP :{BLACK}புதிய முக தேந்தெடுத்தலை ஏற்றுக்கொள் STR_FACE_MALE_BUTTON :{BLACK}ஆண் STR_FACE_MALE_TOOLTIP :{BLACK}ஆண் முகங்களை தேர்ந்தெடு STR_FACE_FEMALE_BUTTON :{BLACK}பெண் STR_FACE_FEMALE_TOOLTIP :{BLACK}பெண் முகங்களை தேர்ந்தெடு STR_FACE_NEW_FACE_BUTTON :{BLACK}புதிய முகம் STR_FACE_NEW_FACE_TOOLTIP :{BLACK}புதிய முகத்தை உருவாக்கு STR_FACE_ADVANCED :{BLACK}சிறப்பு STR_FACE_ADVANCED_TOOLTIP :{BLACK}சிறப்பு முகம் தேர்ந்தெடுத்தல் STR_FACE_SIMPLE :{BLACK}எளிது STR_FACE_SIMPLE_TOOLTIP :{BLACK}எளிதான முகம் தேர்ந்தெடுத்தல் STR_FACE_LOAD :{BLACK}ஏற்று STR_FACE_LOAD_TOOLTIP :{BLACK}பிடித்த முகத்தினை பதிவேற்று STR_FACE_FACECODE :{BLACK}விளையாடுபவர் முக எண் STR_FACE_FACECODE_CAPTION :{WHITE}நிறுவனரின் முக எண்னை பார் அல்லது அமை STR_FACE_FACECODE_SET :{WHITE}புதிய முக எண் குறி அமைக்கப்பட்டது STR_FACE_SAVE :{BLACK}சேமி\ STR_FACE_SAVE_TOOLTIP :{BLACK}பிடித்த முகத்தினைப் பதிவுசெய் STR_FACE_EUROPEAN :{BLACK}ஐரோப்பிய STR_FACE_SELECT_EUROPEAN :{BLACK}ஐரோப்பிய முகங்களினைத் தேர்ந்தெடுக்கவும் STR_FACE_AFRICAN :{BLACK}ஆப்ரிக்கன் STR_FACE_SELECT_AFRICAN :{BLACK}ஆப்பிரிக்க முகங்களினைத் தேர்ந்தெடுக்கவும் STR_FACE_YES :ஆம் STR_FACE_NO :இல்லை STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}மீசை அல்லது கம்மலை செயலாக்கு STR_FACE_HAIR :முடி: STR_FACE_HAIR_TOOLTIP :{BLACK}முடியினை மாற்று STR_FACE_EYEBROWS :புருவங்கள்: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}புருவங்களை மாற்று STR_FACE_EYECOLOUR :கண்ணின் நிறம்: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}கண்ணின் நிறத்தினை மாற்று STR_FACE_GLASSES :கண்ணாடிகள்: STR_FACE_GLASSES_TOOLTIP :{BLACK}கண்ணாடிகளைச் செயலாக்கு STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}கண்ணாடிகளை மாற்று STR_FACE_NOSE :மூக்கு: STR_FACE_NOSE_TOOLTIP :{BLACK}மூக்கினை மாற்று STR_FACE_LIPS :உதடுகள்: STR_FACE_MOUSTACHE :மீசை: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}உதடுகள் அல்லது மீசையினை மாற்று STR_FACE_CHIN :மோவாய்: STR_FACE_CHIN_TOOLTIP :{BLACK}மோவாயினை மாற்று STR_FACE_JACKET :மேல் சட்டை: STR_FACE_JACKET_TOOLTIP :{BLACK}மேல் சட்டையினை மாற்று STR_FACE_COLLAR :கழுத்துப் பட்டை: STR_FACE_COLLAR_TOOLTIP :{BLACK}கழுத்துப் பட்டையினை மாற்று STR_FACE_TIE :Tie: STR_FACE_EARRING :கம்மல்: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Tie அல்லது காதணியை மாற்றவும் # Network server list STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}இணைப்பு: STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :இணையம் STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}விளையாடுபவரின் பெயர்: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}இந்தப் பெயரில் பிறர் உன்னை அறிவர் STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}பெயர் STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}ஆட்டத்தின் பெயர் STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}விளையாடுபவர்கள் STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}வரைபடத்தின் அளவு STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}ஆட்டத்தின் வரைபட அளவு{}பரப்பின்படி ஒழுங்குபடுத்த சொடுக்கவும் STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}தேதி STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}இன்றைய தேதி STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}ஆண்டுகள் STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}ஆண்டுகளாக{}ஆட்டம் ஆடப்படுகின்றது STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}மொழி, சர்வர் பதிப்பு, மற்றவை. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}பட்டியலிலிருந்து ஒரு ஆட்டத்தினை தேர்ந்தெடுக்க சொடுக்கவும் STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}கடைசியாக நீங்கள் விளையாடிய சர்வர்: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}நீங்கள் கடைசியாக விளையாடிய சர்வரினைத் தேர்ந்தெடுக்க சொடுக்கவும் STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ஆட்டத்தின் தகவல்கள் STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}விளையாடுவோர்: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}மொழி: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}நிலபரப்பு: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}வரைபடத்தின் அளவு: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}சர்வர் பதிப்பு: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}சர்வரின் முகவரி: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}தொடக்கத் தேதி: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}இன்றையத் தேதி: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}கடவுச்சொலினால் தடுக்கப்பட்டுள்ளது! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}சர்வர் இணைப்பில் இல்லை STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}சர்வர் நிரம்பி விட்டது STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}பதிப்பு ஒத்துவரவில்லை STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF ஒத்துவரவில்லை STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}ஆட்டத்தில் சேர் STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}சர்வரினை புதுப்பிக்கவும் STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}சர்வரின் விவரத்தினை புதுப்பிக்கவும் STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}சர்வரினைத் தேடு STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}சர்வரினை இணையத்தில் தேடு STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}சர்வரினை இணை STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}சர்வரினை ஆரம்பி STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}தங்களின் சர்வரினை ஆரம்பிக்கவும் STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}தங்களின் பெயரினை இடவும் # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}புதிய இணைய ஆட்டத்தினைத் தொடங்கவும் STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}விளையாட்டு பெயர்: STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}கடவுச்சொல்லினை அமைக்கவும் STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / இணையம் STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :இணையம் (விளம்பரம் செய்) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} விளையாடுபவர்{P "" கள்} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}அதிகபட்ச வீரர்கள்: STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} நிறுவன{P ம் ங்கள்} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}அதிகபட்ச நிறுவனங்கள்: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}சர்வர்கு குறிப்பிட்ட அளவு நிறுவனங்களை மட்டுமே அனுமதி STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} பார்வையாளர்{P "" கள்} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}அதிகபட்ச பார்வையாளர்கள்: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}சர்வரிற்கு குறிப்பிட்ட அளவு பார்வையாளர்களை மட்டுமே அனுமதி STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}பேசப்படும் மொழிகள்: STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}இணைய ஆட்டத்திற்கு ஒரு பெயரினை இடு # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :எதுவும் STR_NETWORK_LANG_ENGLISH :ஆங்கிலம் STR_NETWORK_LANG_GERMAN :ஜெர்மன் STR_NETWORK_LANG_FRENCH :பிரெஞ்சு STR_NETWORK_LANG_BRAZILIAN :பிரசில்லியன் STR_NETWORK_LANG_BULGARIAN :பல்கேரியன் STR_NETWORK_LANG_CHINESE :சீன மொழி STR_NETWORK_LANG_CZECH :செக் STR_NETWORK_LANG_DANISH :டேனிஷ் STR_NETWORK_LANG_DUTCH :டச் STR_NETWORK_LANG_ESPERANTO :உலகப் பொதுச் செயற்கைமொழி STR_NETWORK_LANG_FINNISH :பின்னிஷ் STR_NETWORK_LANG_HUNGARIAN :ஹங்கேரியன் STR_NETWORK_LANG_ICELANDIC :இஸ்லாந்திய மொழி STR_NETWORK_LANG_ITALIAN :இத்தாலியன் STR_NETWORK_LANG_JAPANESE :ஜப்பானிய மொழி STR_NETWORK_LANG_KOREAN :கோரிய மொழி STR_NETWORK_LANG_LITHUANIAN :லிதுவேனியன் STR_NETWORK_LANG_NORWEGIAN :நார்வேஜியன் STR_NETWORK_LANG_POLISH :போலிஷ் STR_NETWORK_LANG_PORTUGUESE :போர்த்துகீசியம் STR_NETWORK_LANG_ROMANIAN :ரோமானிய மொழி STR_NETWORK_LANG_RUSSIAN :ரஷ்ய மொழி STR_NETWORK_LANG_SLOVAK :ஸ்லவோனிய மொழி STR_NETWORK_LANG_SLOVENIAN :ஸ்லவோனிய மொழி STR_NETWORK_LANG_SPANISH :ஸ்பானிஷ் STR_NETWORK_LANG_SWEDISH :சவீடிஷ் STR_NETWORK_LANG_TURKISH :டர்கிஷ் STR_NETWORK_LANG_UKRAINIAN :உக்ரேனியம் STR_NETWORK_LANG_AFRIKAANS :ஆப்ரிகான்ஸ் STR_NETWORK_LANG_CROATIAN :குரோஏசியன் STR_NETWORK_LANG_CATALAN :கடலான் STR_NETWORK_LANG_ESTONIAN :எஸ்தோனியம் STR_NETWORK_LANG_GALICIAN :கலிசியம் STR_NETWORK_LANG_GREEK :கிரேக்க மொழி STR_NETWORK_LANG_LATVIAN :லாத்வியன் ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}சேர தொடங்கப்படுகிறது: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}நிறுவனங்களின் விவரம் STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}நிறுவனத்தின் பெயர்: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}தொடக்கம்: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}நிறுவனத்தின் மதிப்பு: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}தற்போதைய கையிருப்பு: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}சென்ற வருட வருமானம்: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}செயல்திறன்: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}வாகனங்கள்: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}நிலையங்கள்: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}வீரர்கள்: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}புதிய நிருவனம் STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}புதிய நிறுவனத்தை உருவாக்கு STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}விளையாட்டை பார்வையிடு STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}ஆட்டத்தினைப் பார்வையாளராக கவனி STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}நிறுவனத்தில் சேறு STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}நிறுவனத்தை கட்டுபடுத்த உதவு # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}இணைக்கப்படுகிறது... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) இணைக்கப்படுகிறது... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) அனுமதிக்கப்படுகிறது... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) காத்திருக்கிறது... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) வரைபடம் பதிவிறக்கமாகிறது... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) தகவல் பரிசீலிக்கப்படுகின்றது... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) பதிவு செய்யப்படுகிறது... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}ஆட்டத்தின் விவரங்கள் பெறப்படுகின்றது... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}நிறுவனத்தின் விவரம் சேகரிக்கப்படுகிறது... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" கள்} உங்களுக்கு முன்னால் உள்ளனர் STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} இதுவரை பதிவிறக்கியது STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} இதுவரை பதிவிறக்கியது STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}இணைப்பை துண்டி STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}சர்வர் காக்கப்பட்டுள்ளது. கடவுச்சொல்லினை இடவும் STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}நிற்வனம் காக்கப்பட்டுள்ளது. கடவுச்சொல்லினை இடவும் # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}விளையாடுவோர் பட்டியல் STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}கவனி STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}புதிய நிறுவனம் # Network client list STR_NETWORK_CLIENTLIST_KICK :உதை STR_NETWORK_CLIENTLIST_BAN :அனுமதிக்காதே STR_NETWORK_CLIENTLIST_GIVE_MONEY :பணம் தா STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :அனைவருடனும் பேசு STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :நிறுவனத்திடம் பேசு STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :இரகசிய தகவல் STR_NETWORK_SERVER :சர்வர் STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :கவனிப்பவர்கள் STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}கொடுக்கப்படும் பணத்தின் அளவினை இடவும் # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}கடவுச்சொல்லினை நினைவில் வைத்திருக்காதே STR_COMPANY_PASSWORD_OK :{BLACK}நிற்வனத்திற்கு புதிய கடவுச்சொல்லினை கொடுக்கவும் STR_COMPANY_PASSWORD_CAPTION :{WHITE}நிறுவனத்தின் கடவுச்சொல் STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}முதன்மையான நிறுவனத்தின் கடவுச்சொல் STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}இந்த நிறுவனத்தின் கடவுச்சொல்லையே புதிய நிறுவனங்களுக்கு பயன்படுத்து # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}சேர் STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}இந்த நிறுவனமாக சேர்ந்து விளையாடு STR_COMPANY_VIEW_PASSWORD :{BLACK}கடவுச்சொல் STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}நிறுவனத்தின் கடவுச்சொல்லை அமை # Network chat STR_NETWORK_CHAT_SEND :{BLACK}அனுப்பு STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Private] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[All] : STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Team] பெறுநர் {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Private] பெறுநர் {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}இணைய அரட்டையிற்கு வார்தைகளை இடவும் # Network messages STR_NETWORK_ERROR_NOSERVER :{WHITE}இணைய ஆட்டங்கள் எதுவும் கிடைக்கவில்லை STR_NETWORK_ERROR_NOCONNECTION :{WHITE}அழைப்பிற்கு சர்வர் பதிலளிக்கவில்லை STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF கோப்பு பிழையினால் ணைக்க இயலவில்லை STR_NETWORK_ERROR_DESYNC :{WHITE}இணயம்-ஆட்டம் சமமாதல் தோல்வியடைந்தது STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}இணைய ஆட்டத்தின் தொடர்பு துண்டிக்கப்பட்டது STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}சேமிக்கப்பட்ட விளையாட்டை ஏற்ற முடியவில்லை STR_NETWORK_ERROR_SERVER_START :{WHITE}சர்வரினை தொடங்க முடியவில்லை STR_NETWORK_ERROR_CLIENT_START :{WHITE}இணைக்கப்படவில்லை STR_NETWORK_ERROR_TIMEOUT :{WHITE}இணைப்பு #{NUM} காலமாகியது STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}இந்த பதிப்பு சர்வரின் பதிப்புடன் ஒத்துவரவில்லை STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}தவறான கடவுச்சொல் STR_NETWORK_ERROR_SERVER_FULL :{WHITE}சர்வர் முழு பயன்பாட்டில் உள்ளது STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}இந்த சர்வரில் இருந்து நீங்கள் தடை செய்யப்பட்டுள்ளீர்கள் STR_NETWORK_ERROR_KICKED :{WHITE}இந்த விளையாட்டிலிருந்து நீங்கள் வெளியேற்றப்பட்டீர்கள் STR_NETWORK_ERROR_CHEATER :{WHITE}இந்த சர்வரில் ஏமாற்ற இயலாது STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}சர்வரிற்கு அளவிற்கு அதிகமான கட்டளைகளினை அனுப்பிக்கொண்டிருந்தீர்கள் STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}கடவுச்சொல்லினை இட அதிக நேரம் எடுத்துக்கொண்டீர்கள் STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}தங்கள் கணினியால் சர்வருடன் சமமாக பணியாற்ற இயலவில்லை STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}வரைபடத்தினைப் பதிவிறக்கத் தங்கள் கணினி அதிக நேரம் எடுத்ததுக் கொண்டது STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}சர்வருடன் இணைய உங்கள் கணினி அதிக நேரம் எடுத்துக்கொண்டது ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :பொதுவான பிழை STR_NETWORK_ERROR_CLIENT_DESYNC :இணைப்பு பிழை STR_NETWORK_ERROR_CLIENT_SAVEGAME :வரைபடத்தை ஏற்ற முடியவில்லை STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :தொடர்பு துண்டிக்கப்பட்டது STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :இணைப்புமுறைப் பிழை STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NEWGRF ஒத்துவரவில்லை STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :உங்களுக்கு அனுமதி இல்லை STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :தவறான அல்லது எதிர்பார்க்காத தகவல் கிடைத்தது STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :தவறான பதிப்பு STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :பெயர் பயன்பாட்டில் உள்ளது STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :தவறான கடவுச்சொல் STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :DoCommand இல் தவறான கட்டளை STR_NETWORK_ERROR_CLIENT_KICKED :செர்வெரால் வெளியேற்றப்பட்டீர்கள் STR_NETWORK_ERROR_CLIENT_CHEATER :ஏமாற்ற முயன்றார் STR_NETWORK_ERROR_CLIENT_SERVER_FULL :சர்வர் முழு பயன்பாட்டில் உள்ளது STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :அளவிற்கு அதிகமான கட்டளைகளைக் கொடுத்துக்கொண்டிருந்தார் STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :சரியான நேரத்தில் எந்தக் கடவுச்சொல்லும் கிடைக்கவில்லை STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :பொதுவான காலப்பிழை STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :வரைபடம் பதிவிறக்கமாக அதிக நேரம் ஆகியது STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :படத்தினைத் திறக்க அதிக நேரம் ஆகியது ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}தொடர்பு துண்டிக்கப்பட வாய்ப்பு உள்ளது STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}கடந்த {NUM} வினாடி{P "" களில்} சர்வரிலிருந்து சர்வரிலிருந்து எந்த டேட்டாவும் கிடைக்கவில்லை # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :விளையாட்டு இடைமறிக்கப்பட்டுள்ளது ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :ஆட்டம் தற்காலிகமாக நிறுத்தப்பட்டுள்ளது ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :ஆட்டம் இன்னும் நிறுத்தப்பட்டுள்ளது ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :ஆட்டம் இன்னும் நிறுத்தப்பட்டுள்ளது ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :ஆட்டம் இடை நிறுத்தப்பட்டுள்ளது ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :ஆட்டம் மீண்டும் தொடங்கப்பட்டுள்ளது ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :விளையாடுபவர்களின் எண்ணிக்கை STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :வீரர்கள் இணைக்கப்படுகின்றனர் STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :எனது STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :விளையாட்டின் ஸ்கிரிப்ட் ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :விட்டுச்செல்கிறார் STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} விளையாட்டில் சேர்ந்து உள்ளார் STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} விளையாட்டில் சேர்ந்து உள்ளார் (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} நிறுவனம் #{2:NUM}இல் சேர்ந்துள்ளார் STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} பார்வையாளராக சேர்ந்துள்ளார் STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} புதிய நிறுவனம் (#{2:NUM})வை துவக்கி உள்ளார் STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ஆட்டத்தை விட்டு வெளியேரினார் ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} அவரது/அவளது பெயரினை {STRING} என்று மாற்றினார் STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} தங்கள் நிறுவனத்திற்கு {2:CURRENCY_LONG} கொடுத்தார் STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** நீங்கள் கொடுத்தீற்கள் {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}சர்வர் ஆட்டத்தினை முடித்தது STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}சர்வர் மீண்டும் தொடங்குகிறது...{}சற்று பொறுக்கவும்... # Content downloading window STR_CONTENT_TITLE :{WHITE}கோப்புகள் பதிவிறக்கம் செய்யப்படுகின்றன STR_CONTENT_TYPE_CAPTION :{BLACK}வகை STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}உள்ளடக்கத்தின் வகை STR_CONTENT_NAME_CAPTION :{BLACK}பெயர் STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}உள்ளடக்கத்தின் பெயர் STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}அனைத்தையும் தேர்ந்தெடு STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}அனைத்தையும் பதிவிறக்கக் குறிக்கவும் STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}தரவேற்றங்களினைத் தேர்ந்தெடு STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}தேர்ந்தெடுத்தவற்றின் குறியினை நீக்கு STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}அனைத்தையும் பதிவிறக்க வேண்டாம் என்று குறிக்கவும் STR_CONTENT_SEARCH_EXTERNAL :{BLACK}வெளி இணையதளங்களில் தேடு STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}நீங்கள் OpenTTD ஐ விட்டு வெளியேறுகிறீர்கள்! STR_CONTENT_FILTER_TITLE :{BLACK}குறியீடு/பெயர் வடிகட்டி: STR_CONTENT_OPEN_URL :{BLACK}இணையதளத்தினை பார்வையிடு STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}இந்த கோப்பின் விவரங்களினை அதன் இணையதளத்தில் பார்க்க STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}பதிவிறக்கு STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்டனவை பதிவிறக்க ஆரம்பி STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}மொத்த பதிவிறக்க அளவு: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}கொப்புகளின் விவரம் STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}நீங்கள் இதை பதிவிறக்கம் செய்ய தேர்ந்தெடுக்கவில்லை STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}நீங்கள் இதை பதிவிறக்கம் செய்ய தேர்ந்தேடுத்துள்ளீர்கள் STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}இது பதிவிறக்க தேர்ந்தெடுக்கப்பட்டுள்ளது STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}இது ஏற்கனவே உங்களிடம் உள்ளது STR_CONTENT_DETAIL_UPDATE :{SILVER} ஏற்கனவே இருக்கும் {STRING} இற்கு இது மாற்றாகும் STR_CONTENT_DETAIL_NAME :{SILVER}பெயர்: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}பதிப்பு: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}விவரம்: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}வகை: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}பதிவிறக்க கோப்பின் அளவு: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}தேர்ந்தெடுக்கப்பட்டது இதனால்: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}சார்ந்தவை: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}சுட்டிகள்: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD "zlib" தேவை இல்லாமலேயே கட்டப்பட்டது... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... கோப்புகளை பதிவிறக்கம் செய்ய முடியாது! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :அடிப்படை அசையூட்டம் STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI நூலகம் STR_CONTENT_TYPE_SCENARIO :திரைக்காட்சி STR_CONTENT_TYPE_HEIGHTMAP :உயர்படம் STR_CONTENT_TYPE_BASE_SOUNDS :அடிப்படை ஒலிகள் STR_CONTENT_TYPE_BASE_MUSIC :அடிப்படை இசை STR_CONTENT_TYPE_GAME_SCRIPT :விளையாட்டின் ஸ்கிரிப்ட் STR_CONTENT_TYPE_GS_LIBRARY :GS காப்பகம் # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}பதிவிறக்கமாகிறது... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}கோப்புகள் கேட்கப்படுகின்றன... STR_CONTENT_DOWNLOAD_FILE :{WHITE}தற்போது {STRING} பதிவிறக்கமாகிறது ({NUM} of {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}பதிவிறக்கம் முடிந்தது STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} இல் {BYTES} பதிவிறக்கமாகியுள்ளது ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}சர்வருடன் இணைக்க இயலவில்லை... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}பதிவிறக்கம் ரத்தானது... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... தொடர்பு துண்டிக்கப்பட்டது STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... கோப்பில் எழுத முடியாது STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}பதிவிறக்கம் செய்யப்பட்ட கோப்பினை விரிவாக்க முடியவில்லை STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}அசைவூட்டங்கள் இல்லை STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}ஆம், அசையூட்டங்களை பதிவிறக்கம் செய் STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}இல்லை, OpenTTD-ஐ விட்டு வெளியேறு # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}ஒளி அமைப்புகள் # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}செயல்படும் பகுதியினை குறிக்கவும் STR_STATION_BUILD_COVERAGE_OFF :{BLACK}நிறுத்து STR_STATION_BUILD_COVERAGE_ON :{BLACK}இயக்கு STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}ஏற்றுக்கொள்பவை: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}விநியோகிப்பவை: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}நிலையத்தினை இணை STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}தனியாக ஒரு நிலையத்தினை கட்டு STR_JOIN_WAYPOINT_CAPTION :{WHITE}பாதைப்புள்ளியினை இணை STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}தனியொரு பாதைப்புள்ளிடினை கட்டு # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :இரயில்வே கட்டுமானம் STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :மின்சார இரயில்வே கட்டுமானம் STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :மோனோ-இரயில் கட்டுமானம் STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :மேக்லெவ் கட்டுமானம் STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}இரயில்வே இருப்புப் பாதையினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}இரயில் பணிமனையினைக் (இரயில்களை வாங்க மற்றும் பழுதுபார்க்க) கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}இரயில் நிலையத்தினை கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}இரயில்வே சிக்னல்களைக் கட்டவும். Ctrl அழுத்தினால் சிக்னல் வகைகளை மாற்றலாம்{}இரயில் தடத்தின்மேல் இழுத்தினால் சிக்னல்களை அமைக்கலாம். Ctrl அழுத்தினால் அடுத்த எணைப்பு வரை சிக்னல்கள் அமைக்கப்படும்{}Ctrl+Click அழுத்தினால் சிக்னல் தேர்ந்தெடுக்கும் திரை தெரியும்/மரையும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}இரயில்வே பாலத்தினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}இரயில்வே சுரங்கப் பாதையினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டவும் STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}இரயில் வகையினை தரவேற்றவும்/மாற்றவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_RAIL_NAME_RAILROAD :இரயில்வே STR_RAIL_NAME_ELRAIL :மின்மயமாக்கப்பட்ட இரயில்வே STR_RAIL_NAME_MONORAIL :மோனோ இரயில் STR_RAIL_NAME_MAGLEV :மேக்லெவ் # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}இரயில்வே பணிமனையின் திசையமைப்பு STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}இரயில்வே பணிமனையின் திசையமைப்பினைத் தேர்ந்தெடுக்கவும் # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}பாதைப்புள்ளி STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}பாதைப்புள்ளி வகையினைத் தேர்ந்தெடுக்கவும் # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}இரயில் நிலையம் தேர்ந்தெடுத்தல் STR_STATION_BUILD_ORIENTATION :{BLACK}திசையமைவு STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}இரயில்வே நிலையத்தின் திசையமைவினை தேர்ந்தெடுக்கவும் STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}தடங்களின் எண்ணிக்கை STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}இரயில் நிலையத்தின் நடைமேடைகளின் எண்ணிக்கையினை தேர்ந்தெடுக்கவும் STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}நிலையத்தின் நீளம் STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}இரயில் நிலையத்தின் நீளத்தினை தேர்ந்தெடு STR_STATION_BUILD_DRAG_DROP :{BLACK}இழுத்து விடவும் STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}இழுத்து விடுவதன் மூலம் நிலையத்தினைக் கட்டவும் STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}காட்டுவதற்கு ஒரு நிலைய வகையினைத் தேர்ந்தெடுக்கவும் STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}கட்டப்போகும் நிலையத்தின் வகையினைத் தேர்ந்தெடுக்கவும் STR_STATION_CLASS_DFLT :முதன்மை நிலையம் STR_STATION_CLASS_WAYP :பாதைப்புள்ளிகள் # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}சிக்னல் தேர்ந்தெடுத்தல் # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}இரயில்வே பாலத்தினை தேர்ந்தெடு STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}சாலைப் பாலத்தினை தேர்ந்தெடு STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}பாலம் தேர்ந்தெடுத்தல் - தேவையான பாலத்தினைக் கட்ட அதனினை சொடுக்கவும் STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :தொங்குபாலம், எஃகு STR_BRIDGE_NAME_GIRDER_STEEL :உத்திரம்பாலம் , எஃகு STR_BRIDGE_NAME_CANTILEVER_STEEL :நெடுங்கைபாலம், எஃகு STR_BRIDGE_NAME_SUSPENSION_CONCRETE :தொங்குபாலம், சிமிட்டி STR_BRIDGE_NAME_WOODEN :மர STR_BRIDGE_NAME_CONCRETE :சிமிட்டி STR_BRIDGE_NAME_TUBULAR_STEEL :குழாய்பாலம், எஃகு STR_BRIDGE_TUBULAR_SILICON :குழாய்பாலம், சிலிக்கான் # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}சாலை கட்டுமானம் STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}ட்ரேம்வே கட்டுமானம் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}சாலையினை இடவும். Ctrl அழுத்தினால் சாலையினை நீக்கலாம்/கட்டலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}ட்ராம்வே தடத்தினைக் கட்டவும். Ctrl அழுத்தினால் தடத்தினை நீக்கலாம்/கட்டலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}சாலை வாகன பணிமனையினை கட்டவும் (வாகங்களை வாங்க மற்றும் பழுதுபார்க்க). Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}ட்ராம் வாகன பணிமனையினை கட்டவும் (வாகங்களை வாங்க மற்றும் பழுதுபார்க்க). Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}பேருந்து நிலையத்தினை கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}ட்ராம் பயணிகள் நிலையத்தினை கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}லாரி சரக்கு ஏற்றும் நிலையத்தினை கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}ட்ராம் சரக்கு நிலையத்தினைக் கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}ஒருவழிப்பாதைகளை செயல்படுத்து/முடக்கு STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}சாலை மேம்பாலத்தினைக் கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}ட்ராம்வே மேம்பாலத்தினைக் கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}சாலை சுரங்கப் பாதையினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}ட்ராம்வே சுரங்கப் பாதையினைக் கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}சாலை கட்டுமானம் செய்யவும்/நீக்கவும் STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}ட்ராம்வே கட்டுமானம் செய்யவும்/நீக்கவும் # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}சாலை வாகன பணிமனை திசையமைப்பு STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}சாலை வாகன பணிமனை திசையமைப்பினை தேர்ந்தெடுக்கவும் STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}ட்ராம் பணிமனை திசையமைப்பு STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}ட்ராம் வாகன பணிமனையின் திசையமைப்பினைத் தேர்ந்தெடுக்கவும் # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}பேருந்து நிலைய திசையமைப்பு STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}பேருந்து நிலைய திசையமைப்பினைத் தேர்ந்தெடுக்கவும் STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}லாரி நிலைய திசையமைப்பு STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}லாரி நிலைய திசையமைப்பினைத் தேர்ந்தெடுக்கவும் STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}ட்ராம் பயணிகள் நிலையத்தின் திசையமைப்பு STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}ட்ராம் பயணிகள் நிலையத்தின் திசையமைப்பினைத் தேர்ந்தெடு STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}ட்ராம் சரக்கு நிலையத்தின் திசையமைப்பு STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}ட்ராம் சரக்கு நிலையத்தின் திசையமைப்பினைத் தேர்ந்தெடு # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}கடல்வழி போக்குவரத்து கட்டுமானம் STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}கடல்வழி போக்குவரத்து STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}கால்வாய்களை கட்டு. Shift அழுத்தினால் கட்டடம்/செலவுகள் மதிப்பீடு காட்டப்படும் STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}நீர்ப்பூட்டுகளைக் கட்டு. Shift அழுத்தினால் கட்டடம்/செலவு மதிப்பீடு காட்டப்படும் STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}கப்பல் பணிமனையினைக் கட்டவும்(கப்பல்களை வாங்க மற்றும் பழுதுபார்க்க). Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}கப்பல் துறைமுகத்தினைக் கட்டவும். Ctrl அழுத்தினால் துறைமுகங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}ஆறுகளை அமைக்கவும் # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}கப்பல் பணிமனை திசையமைப்பு STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}கப்பல் பணிமனையின் பக்க அமைப்பினைத் தேர்ந்தெடு # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}துறைமுகம் # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}விமான நிலையங்கள் STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}விமான நிலையத்தினைக் கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும் # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}விமான நிலையத்தை தேர்ந்தெடுத்தல் STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}விமானநிலையத்தின் அளவு/வகையினை தேர்ந்தெடு STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}விமான நிலைய வகை STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}அமைப்பு {NUM} STR_AIRPORT_SMALL :சிறிய STR_AIRPORT_CITY :மாநகர STR_AIRPORT_METRO :மாநகர STR_AIRPORT_INTERNATIONAL :சர்வதேச STR_AIRPORT_COMMUTER :பயணிகள் STR_AIRPORT_HELIPORT :ஹெலிபோர்ட் STR_AIRPORT_HELIDEPOT :வானூர்தி பணிமனை STR_AIRPORT_HELISTATION :வானூர்தி நிலையம் STR_AIRPORT_CLASS_SMALL :சிறிய விமான நிலையங்கள் STR_AIRPORT_CLASS_LARGE :பெரிய விமான நிலையங்கள் STR_AIRPORT_CLASS_HELIPORTS :ஹெலிகாப்டர் நிலையங்கள் STR_STATION_BUILD_NOISE :{BLACK}ஒலி இரைச்சல்: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}நிலத்தோற்றம் # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}பொருள் தேர்ந்தெடுத்தல் STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}கட்டப்போகும் பொருளின் வகையினைத் தேர்ந்தெடு STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}பொருளின் முன்பார்வை STR_OBJECT_BUILD_SIZE :{BLACK}அளவு: {GOLD}{NUM} x {NUM} கட்டங்கள் STR_OBJECT_CLASS_LTHS :கலங்கரைவிளக்கு STR_OBJECT_CLASS_TRNS :Transmitters # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}மரங்கள் STR_TREES_RANDOM_TYPE :{BLACK}ஏதொவொறு வகையிலான மரங்கள் STR_TREES_RANDOM_TREES_BUTTON :{BLACK}ஏதோவொறு மரங்கள் STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}நிலப்பரப்பு முழுவதும் வெவ்வேறு இடங்களில் மரங்களை நடு # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}நிலம் உருவாக்குதல் STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}நிலப்பரப்பில் கரடுமுரடான பகுதிகளை இடவும் STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}பாலைவனப் பகுதியினைக் குறிப்பிடவும்.{}Ctrl இனை அழுத்திப் பிடித்தால் அதனை நீக்கலாம் STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}ஏற்ற/இறக்கப் போகும் நிலப்பரப்பினைக் அதிகப்படுத்தவும் STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}ஏற்ற/இறக்கப் போகும் நிலப்பரப்பினைக் குறைக்கவும் STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}ஏதோவொறு வகையிலான நிலத்தினை உருவாக்கு STR_TERRAFORM_SE_NEW_WORLD :{BLACK}புதிய சித்திரக்காட்சியினை உருவாக்கவும் STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}நிலத்தோற்றத்தினை முன்நிலையாக்கு STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}நிறுவனத்தின் சொத்துக்கள் அனைத்தினையும் வரைபடத்திலிருந்து நீக்கு STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}நிலத்தோற்றத்தினை முன்நிலையாக்கு STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}நிறுவனத்தின் சொத்துக்கள் அனைத்தினையும் நீக்குவதில் உறுதியா? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}நகரம் உருவாக்குதல் STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}புதிய நகரம் STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}புதிய நகரமொன்றினை நிறுவு. Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவு காட்டப்படும் STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}ஏதோவொறு நகரம் STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}ஏதொவொறு இடத்தில் நகரத்தினை நிறுவு STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}பல வெவ்வேறு நகரங்கள் STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}வரைபடத்தினை நகரங்களினால் நிறப்பு STR_FOUND_TOWN_NAME_TITLE :{YELLOW}நகரத்தின் பெயர்: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}நகரத்தின் பெயரினை இடு STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}நகரத்தின் பெயரினை இட இங்கே சொடுக்கவும் STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}ஏதோ ஒரு பெயர் STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}புதிய பெயர் ஒன்றை உருவாக்கு STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}நகரத்தின் அளவு: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}சிறியது STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}நடுத்தரம் STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}பெரியது STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}ஏதோவொறு STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}நகரத்தின் அளவை தேர்ந்தெடு STR_FOUND_TOWN_CITY :{BLACK}மாநகரம் STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}மாநகரங்கள் சாதாரண நகரங்களைவிட வேகமாக வளரும்{}அமைப்புகளைப் பொருத்து அவை பெரியதாக அமையும் STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}நகரத்தின் சாலை அமைப்பு: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}இந்த நகரத்திற்கான சாலை அமைப்பினை தேர்ந்தெடு STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}அசல் STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}நல்ல சாலைகள் STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 கட்டங்கள் STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 கட்டங்கள் STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}ஏதொவொறு # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}புதிய தொழிற்சாலையினை நிறுவு STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}இந்தப் பட்டியலிருந்து பொருத்தமான தொழிற்சாலை ஒன்றினை தேர்ந்தெடு STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :பல மாறுபட்ட தொழிற்சாலைகள் STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}விலை: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}எங்கேயோ நிறுவு STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}கட்டு STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}நிறுவு # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}{STRING} தொழிற்சாலையிற்கான தொழிற்சாலைத் தொடர் STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} சரக்கிற்கான தொழிற்சாலைத் தொடர் STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}தயாரிக்கும் தொழிற்சாலைகள் STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}ஏற்றுக்கொள்ளும் தொழிற்சாலைகள் STR_INDUSTRY_CARGOES_HOUSES :{WHITE}வீடுகள் STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}நிறுவனத்தினைச் சொடுக்கினால் அதனது விற்பனையாளர்கள் மற்றும் வாங்குவோர் விவரங்கள் காட்டப்படும் STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}சரக்கினைச் சொடுக்கினால் அதனது விற்பனையாளர்கள் மற்றும் வாங்குவோர் விவரங்கள் காட்டப்படும் STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}இணைப்புகளைக் காட்டு STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}சரக்குகளை தரும் மற்றும் வாங்கும் நிறுவனங்களைக் காட்டு STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}சிறுபடத்திற்கான இணைப்பு STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}சரக்கினைத் தேர்ந்தெடு STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}காட்டப்பட வேண்டிய சரக்கினைத் தேர்ந்தெடு STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}தொழிற்சாலையினைத் தேர்ந்தெடு STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}காட்டப்பட வேண்டிய தொழிற்சாலையினைத் தேர்ந்தெடு # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}நிலப் பகுதி விவரம் STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}நீக்குவதற்கான செலவு: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}நீக்குவதற்கான செலவு: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}நீக்கினால் கிடைக்கும் வருமானம்: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}சொந்தக்காரர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}சாலையின் உரிமையாளர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ட்ராம்வே முதலாளி: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}இரயில்வே உரிமையாளர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}நகராட்சி: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ஒன்றுமில்லை STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}அச்சுத் தூரங்கள்: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}கட்டப்பட்டது: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}நிலையத்தின் பிரிவு: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}நிலையத்தின் வகை: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}விமான நிலைய வகுப்பு: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}விமான நிலைய பெயர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}விமான நிலைய பெயர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}ஏற்றுக்கொள்ளப்படும் சரக்குகள்: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}இரயில் வேகத் தடை: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :கற்கள் STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :சமமற்ற நிலம் STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :பொறம்போக்கு நிலம் STR_LAI_CLEAR_DESCRIPTION_GRASS :புல் STR_LAI_CLEAR_DESCRIPTION_FIELDS :வயல்வெளிகள் STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :பனி-படர்ந்த நிலம் STR_LAI_CLEAR_DESCRIPTION_DESERT :பாலைவனம் STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} தடம் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} தடம் கட்ட சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} தடம் முன் சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} தடம் வெளியேறு சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} தடம் இணைந்த சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} தடம் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} தடம் ஒருவழிப் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} தடம் கட்டம் மற்றும் முன் சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} தடம் கட்டம் மற்றும் வெளியேறு சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} தடம் கட்டம் மற்றும் இணைந்த சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} தடம் கட்டம் மற்றும் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} தடம் கட்டம் மற்றும் ஒருவழிப் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} தடம் முன் மற்றும் வெளியேறு சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} தடம் முன் மற்றும் இணைந்த சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} தடம் முன் மற்றும் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} தடம் முன் மற்றும் ஒருவழிப் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} தடம் வெளியேறு மற்றும் இணைந்த சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} தடம் வெளியேறு மற்றும் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} தடம் வெளியேறு மற்றும் ஒருவழிப் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} தடம் இணைந்த மற்றும் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} தடம் இணைந்த மற்றும் ஒருவழிப் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} தடம் பாதை மற்றும் ஒருவழிப் பாதை சிக்னல்களுடன் STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} இரயில் பணிமனை STR_LAI_ROAD_DESCRIPTION_ROAD :சாலை STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :தெரு விளக்குகளுடன் சாலை STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :மரங்கள் நடுவே சாலை STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :சாலை வாகன பணிமனை STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :சாலை/இரயில் பாதை கடக்கும் இடம் STR_LAI_ROAD_DESCRIPTION_TRAMWAY :ட்ரேம்வே # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (கட்டுமானம் நடக்கிறது) STR_LAI_TREE_NAME_TREES :மரங்கள் STR_LAI_TREE_NAME_RAINFOREST :மழைக்காடு STR_LAI_TREE_NAME_CACTUS_PLANTS :கள்ளிச் செடிகள் STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :இரயில் நிலையம் STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :விமான பணிமனை STR_LAI_STATION_DESCRIPTION_AIRPORT :விமான நிலையம் STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :சரக்குகளை ஏற்றும் இடம் STR_LAI_STATION_DESCRIPTION_BUS_STATION :பேருந்து நிலையம் STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :கப்பல் துறைமுகம் STR_LAI_STATION_DESCRIPTION_BUOY :காவியக்கட்டை STR_LAI_STATION_DESCRIPTION_WAYPOINT :பாதைப்புள்ளி STR_LAI_WATER_DESCRIPTION_WATER :தண்ணீர் STR_LAI_WATER_DESCRIPTION_CANAL :கால்வாய் STR_LAI_WATER_DESCRIPTION_LOCK :நீர்ப்பூட்டு STR_LAI_WATER_DESCRIPTION_RIVER :ஆறு STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :கடற்கரை அல்லது ஆற்றுப்படுகை STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :கப்பல் பணிமனை # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :சுரங்க ரயில் பாதை STR_LAI_TUNNEL_DESCRIPTION_ROAD :சுரங்கச் சாலை STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :எஃகு தொங்கு இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :எஃகு தூண் இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :எஃகு நெடுங்கை இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :உறுதிப்படுத்தப்பட்ட சிமிட்டி இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :மர இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :சிமிட்டி இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :குழாய் இரயில்வே பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :எஃகு தொங்கு பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :எஃகு உத்திரம் பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :எஃகு நெடுங்கை பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :உறுதிப்படுத்தப்பட்ட சிமிட்டி பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :மர பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :சிமிட்டி பாலம் STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :குழாய் பாலம் STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :நீர்க்கட்டுக் கால்வாய் STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :அனுப்பும் கருவி STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :கலங்கரை விளக்கு STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :நிறுவனத்தின் தலைமைச் செயலகம் STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :நிறுவனத்திற்குச் சொந்தமான நிலம் # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ஐ பற்றி STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}அசல் உரிமைகள் {COPYRIGHT} 1995 கிறிஸ் சாயர், எல்லா உரிமைகளும் பதிவுசெய்யப்பட்டது STR_ABOUT_VERSION :{BLACK}OpenTTD பதிப்பு {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD குழுமம் # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய் STR_SAVELOAD_LOAD_CAPTION :{WHITE}பதிவு செய்த ஆட்டத்தை தொடரு STR_SAVELOAD_SAVE_SCENARIO :{WHITE}சித்திரக்காட்சியினைப் பதிவுசெய் STR_SAVELOAD_LOAD_SCENARIO :{WHITE}சித்திரக்காட்சியினைப் பதிவேற்று STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}உயர்படத்தினை பதிவேற்று STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}வரைபடத்தினை சேமி STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} காலி STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}பதிவு-ஆட்டத்திற்கு தற்போது தேர்ந்தெடுக்கப்பட்டுள்ள பெயர் STR_SAVELOAD_DELETE_BUTTON :{BLACK}அழி STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}தற்போது தேர்ந்தெடுக்கப்பட்ட பதிவு-ஆட்டத்தினை நீக்கு STR_SAVELOAD_SAVE_BUTTON :{BLACK}சேமி STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}தற்போதைய ஆட்டத்தினை பதிவு செய், தேர்ந்தெடுக்கப்பட்டப் பெயரில் STR_SAVELOAD_LOAD_BUTTON :{BLACK}ஏற்று STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட ஆட்டத்தினை ஏற்று STR_SAVELOAD_DETAIL_CAPTION :{BLACK}ஆட்டத்தின் விவரங்கள் STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}எந்த தகவலும் கிடைக்கவில்லை STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}பதிவு-ஆட்டத்திற்கு பெயர் ஒன்றினை இடு # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}உலகம் உருவாக்குதல் STR_MAPGEN_MAPSIZE :{BLACK}வரைபடத்தின் அளவு: STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}நகரங்களின் எண்ணிக்கை: STR_MAPGEN_DATE :{BLACK}தேதி: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}தொழிற்சாலைகளின் எண்ணிக்கை: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}பனிக் கோடின் உயரம்: STR_MAPGEN_SNOW_LINE_UP :{BLACK}பனி கோடின் உயரத்தை ஒரு அடி உயர்த்து STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}பனி கோடின் உயரத்தை ஒரு அடி இறக்கு STR_MAPGEN_RANDOM_SEED :{BLACK}ஏதோவொன்று: STR_MAPGEN_RANDOM :{BLACK}ஏதோவொன்று STR_MAPGEN_LAND_GENERATOR :{BLACK}பூமி உருவாக்குனர்: STR_MAPGEN_TREE_PLACER :{BLACK}மரம் நடுதல்: STR_MAPGEN_TERRAIN_TYPE :{BLACK}நிலவகை: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}கடல் மட்டம்: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}ஆறுகள்: STR_MAPGEN_SMOOTHNESS :{BLACK}சமநிலை: STR_MAPGEN_GENERATE :{WHITE}உருவாக்கு # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}வரைபடத்தின் முனைகள்: STR_MAPGEN_NORTHWEST :{BLACK}வடமேற்கு STR_MAPGEN_NORTHEAST :{BLACK}வடகிழக்கு STR_MAPGEN_SOUTHEAST :{BLACK}தென்கிழக்கு STR_MAPGEN_SOUTHWEST :{BLACK}தென்மேற்கு STR_MAPGEN_BORDER_FREEFORM :{BLACK}இலவசமாக STR_MAPGEN_BORDER_WATER :{BLACK}தண்ணீர் STR_MAPGEN_BORDER_RANDOM :{BLACK}ஏதொவொன்று STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}ஏதோவொன்று STR_MAPGEN_BORDER_MANUAL :{BLACK}எனது STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}உயர்படத்தின் வளைவு: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}உயர்படத்தின் பெயர்: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}அளவு: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}பனிக் கோடின் உயரத்தினை மாற்று STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}தொடங்கும் வருடத்தினை மாற்று # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}சித்திரக்காட்சி வகை STR_SE_MAPGEN_FLAT_WORLD :{WHITE}சம் நிலம் STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}சமமமான நிலத்தை உருவாக்கு STR_SE_MAPGEN_RANDOM_LAND :{WHITE}ஏதோவொரு நிலம் STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}சம நிலத்தின் உயரம்: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}நிலத்தின் உயரத்தினை ஒரு அடி இறக்கு STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}நிலத்தின் உயரத்தினை ஒரு அடி உயர்த்து STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}சம நிலத்தின் உயரத்தினை மாற்று # Map generation progress STR_GENERATION_WORLD :{WHITE}உலகம் உருவாக்கப்படுகின்றது... STR_GENERATION_ABORT :{BLACK}நிறுத்து STR_GENERATION_ABORT_CAPTION :{WHITE}உலக உருவாக்கத்தினை நிருத்து STR_GENERATION_ABORT_MESSAGE :{YELLOW}உருவாக்குதலை நிறுத்த வேண்டுமா? STR_GENERATION_PROGRESS :{WHITE}{NUM}% முடிந்துள்ளது STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}உலகம் உருவாக்குதல் STR_GENERATION_RIVER_GENERATION :{BLACK}ஆறு உருவாக்குதல் STR_GENERATION_TREE_GENERATION :{BLACK}மரங்கள் உருவாக்குதல் STR_GENERATION_OBJECT_GENERATION :{BLACK}பொருள் உருவாக்குதல் STR_GENERATION_CLEARING_TILES :{BLACK}சமமில்லாத மற்றும் கல்லான பகுதி உருவாக்குதல் STR_GENERATION_SETTINGUP_GAME :{BLACK}ஆட்டம் அமைக்கப்படுகின்றது STR_GENERATION_PREPARING_SCRIPT :{BLACK}வரிவடிவம் செயல்படுத்தப்படுகின்றது STR_GENERATION_PREPARING_GAME :{BLACK}ஆட்டம் தயாராகிறது # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF அமைப்புகள் STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}விவரமான NewGRF தகவல் STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}பயன்பாட்டில் உள்ள NewGRF கோப்புகள் STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}பயன்பாட்டில் இல்லாத NewGRF கோப்புகள் STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Preset ஐ தேர்ந்தெடு: STR_NEWGRF_FILTER_TITLE :{ORANGE}வடிகட்டித் தொடர்: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்டுள்ள preset ஐ ஏற்று STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Preset ஐ பதிவுசெய் STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}தற்போதைய பட்டியலை preset ஆக பதிவு செய் STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Preset இற்கு ஒரு பெயரினை இடு STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Preset ஐ நீக்கு STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}தற்போது தேர்ந்தெடுக்கப்பட்டுள்ள preset ஐ நீக்கு STR_NEWGRF_SETTINGS_ADD :{BLACK}சேர் STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}உங்களது வடிவமைப்பானிற்கு தேர்ந்தெடுக்கப்பட்ட NewGRF கோப்பினை இணைக்கவும் STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}கோப்புகளை மறுபடியும் ஆராய் STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}கிடைக்கும் NewGRF கோப்புகள் பட்டியலினை புதுப்பிக்கவும் STR_NEWGRF_SETTINGS_REMOVE :{BLACK}நீக்கு STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட NewGRF கோப்பினை பட்டியலிலிருந்து நீக்கு STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}மேல் நகர்த்து STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட NewGRF கோப்பினை பட்டியலில் மேல் நகர்த்து STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}கீழ் இறக்கு STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட NewGRF கோப்பினை பட்டியலில் கீழ் இறக்கு STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}நிறுவியுள்ள NewGRF கோப்புகளின் ஓர் பட்டியல். STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}குணாதிசயங்களை அமை STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}குணாதிசயங்களைக் காட்டு STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}palette மாற்றவும் STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}மாற்றங்களை செயலாக்கு STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}இல்லாதவற்றை இணையத்தில் தேடு STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}கிடைக்காதவற்றினை இணையத்தில் தேடவும் STR_NEWGRF_SETTINGS_FILENAME :{BLACK}கோப்புப்பெயர்: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}பதிப்பு: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}குறைந்த். பயன்படுத்தக்கூடிய பதிப்பு: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palette: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}குணாதிசயங்கள்: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}எந்தத் தகவலும் இல்லை STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}பொருத்தமான கோப்பு கிடைக்கவில்லை STR_NEWGRF_SETTINGS_DISABLED :{RED}செயலிழக்க செய்யப்பட்டது STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}இந்த OpenTTD பதிப்புடன் பயன்படுத்த இயலாது # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF குணாதிசயங்களை மாற்று STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}மூடு STR_NEWGRF_PARAMETERS_RESET :{BLACK}முன்னிருந்தமை மாற்று STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}எல்லா குணாதிசயங்களையும் அதன் முதன்நிலையாக்கு STR_NEWGRF_PARAMETERS_DEFAULT_NAME :குணாதிசயம் {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}குணாதிசயங்களின் எண்ணிக்கை: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}சோதனையிடு - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}பெற்றோர் STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} {HEX} இல் STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :பொருள் STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :இரயில்வே வகை # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}ஸ்பிரிட் ஒழுங்காக்கப்படுகிறது {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}அடுத்த ஸ்பிரைட்டு STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ஸ்பிரைட்டுயிற்கு செல்லவும் STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}முந்தைய ஸ்பிரைட்டு STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}ஸ்பிரைட்டினைத் தேர்ந்தெடுக்கவும் STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}ஸ்பிரைட்டிற்கு செல்லவும் # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}எச்சரிக்கை: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}பிழை: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}மரணம்: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}மரணமான NewGRF பிழை ஏற்பட்டுள்ளது: {}{STRING} STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ஆனது {STRING} TTD பதிப்பிற்காகவே STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ஆனது {STRING} உடன் இணைந்து பயன்படுத்த வடிவமைக்கப்பட்டுள்ளது STR_NEWGRF_ERROR_INVALID_PARAMETER :செல்லாத குணாதிசயம் {1:STRING} இன்: குணாதிசயம் {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ஆனது {STRING} இற்கு முன்னால் ஏற்றப்பட வேண்டும் STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ஆனது {STRING} இற்கு பின்னால் ஏற்றப்பட வேண்டும் STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} இற்கு OpenTTD பதிப்பு {STRING} இற்கு அதிகமான பதிப்பு தேவைப்படுகிறது STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF கோப்பு மொழிபெயர்க்க வடிமைக்கப்பட்டது STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :அளவிற்கு அதிகமான NewGRF கள் ஏற்றப்பட்டுள்ளன STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :எதிர்பார்க்கப்படாத ஸ்பிரைட்டு(ஸ்பிரைட்டு {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :கேட்கப்பட்ட GRF கள் கிடைக்கவில்லை (ஸ்பிரைட்டு {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}, {STRING}ஆல் செயலிழக்க செய்யப்பட்டது # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}எச்சரிக்கை! STR_NEWGRF_DUPLICATE_GRFID :{WHITE}கோப்பினை சேர்க்க இயலாது: இரட்டடிப்பு GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}கோப்பு கிடைக்கவில்லை (பயன்படத்தகு GRF ஏற்றப்பட்டது) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}கோப்பினை சேர்க்க இயலவில்லை: NewGRF கோப்பு எண்ணிக்கை அளவு அதிகமாக உள்ளது STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}பயன்படத்தகும் GRF(கள்) ஏற்றப்பட்டது, இல்லாத கோப்புகளுக்கு STR_NEWGRF_DISABLED_WARNING :{WHITE}கிடைக்காத GRF கோப்பு(கள்) செயலிழக்க செய்யப்பட்டன STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}இல்லாத GRF கோப்பு(கள்) # NewGRF status STR_NEWGRF_LIST_NONE :ஒன்றுமில்லை STR_NEWGRF_LIST_ALL_FOUND :அனைத்து கோப்புகளும் உள்ளன STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}பயன்படுத்தக்க கோப்புகள் கண்டுபிடிக்கப்பட்டன STR_NEWGRF_LIST_MISSING :{RED}கோப்புகள் இல்லை # NewGRF 'it's broken' warnings STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' தவரான தகவல்களினைத் தருகின்றது STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' தயாரிப்பு பின் அழைப்பில் முடிவில்லாத வட்டத்தினை உண்டாக்கியது STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}பின் அழைப்பு {1:HEX} திருப்பட்டது தெரியவில்லை/செல்லுபடியாகாத முடிவு {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<செல்லுபடியாகாத சரக்கு> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <செல்லுபடியாகாத சரக்கு> STR_NEWGRF_INVALID_ENGINE :<செல்லுபடியாகாத வாகன வகை> STR_NEWGRF_INVALID_INDUSTRYTYPE :<தவறான தொழிற்சாலை> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF பதிவுகள் ஆராயப்படுகின்றன STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF பதிவுகள் ஆராயப்படுகின்றன. அவற்றின் எண்ணிக்கையை பொறுத்து காலதாமதம் ஆகலாம்... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" கள்} பார்க்க பட்டன. மொத்தம் {NUM} NewGRF{P "" கள்} STR_NEWGRF_SCAN_ARCHIVES :சுவடிகள் தேடப்படுகின்றன # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}குறிகளின் பட்டியல் - {COMMA} குறி{P "" கள்} STR_SIGN_LIST_MATCH_CASE :{BLACK}case இனை சரிபார்க்கவும் # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}குறியீட்டினை திருத்தவும் STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}அடுத்த குறியிற்கு செல்லவும் STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}முந்தைய குறியிற்கு செல்லவும் STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}குறியிற்கு பெயரிடவும் # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}நகரங்கள் STR_TOWN_DIRECTORY_NONE :{ORANGE}- ஒன்றுமில்லை - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_POPULATION :{BLACK}உலக மக்கள்தொகை: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (மாநகரம்) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}மக்கள்தொகை: {ORANGE}{COMMA}{BLACK} வீடுகள்: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}சென்ற மாத பயணிகள்: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}சென்ற மாத அஞ்சல்கள்: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}நகரத்தின் வளர்ச்சியிற்கு தேவையான சரக்குகள்: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} தேவை STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} குளிர்காலத்தில் தேவை STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} சேர்க்கப்பட்டவை STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (இன்னும் தேவை) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (சேர்க்கப்பட்டது) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}நகரம் ஒவ்வொரு {ORANGE}{COMMA}{BLACK} நாட்களுக்கும் வளர்கிறது STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}நகரம் ஒவ்வொரு {ORANGE}{COMMA}{BLACK} நாட்களுக்கும் வளர்கிறது (நிதியதவியால்) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}நகரம் {RED}வளருவதில்லை{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}நகரத்தில் ஒலி இரைச்சல் அளவு: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA} STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}நகராட்சி STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}நகராட்சி பற்றிய விவரங்களைக் காட்டு STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}நகரத்தின் பெயரினை மாற்று STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}விரிவாக்கு STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}நகரத்தின் அலவினை அதிகப்படுத்து STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}நீக்கு STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}இந்த நகரத்தினை முழுமையாக நீக்கு STR_TOWN_VIEW_RENAME_TOWN_BUTTON :நகரத்தின் பெயரை மாற்று # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} நகராட்சி STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}போக்குவரத்து நிறுவன தரங்கள்: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}செயற்பாடுகள்: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}இந்த நகரத்தில் செய்யப்போகும் செயல்களின் பட்டியல் - ஒரு பொருளினை பற்றி அறிய சொடுக்குக STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}செய் STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}மேலுள்ள பட்டியலில் குறிப்பிடப்பட்ட செயலினை மேற்கொள்ளவும் STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :சிறிய விளம்பர சேவை STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :சராசரி விளம்பர சேவை STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :பெரிய விளம்பர சேவை STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :நகர சாலைகளை சரிபடுத்துவதற்கு நிதியுதவி செய் STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :நிறுவன தலைவரின் சிலையினை கட்டு STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :புதிய கட்டடங்களை கட்ட நிதியுதவி செய் STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :சிறப்பு போக்குவரத்து உரிமைகளை வாங்கு STR_LOCAL_AUTHORITY_ACTION_BRIBE :நகராட்சியிற்கு கையூட்டு கொடு STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}சிறிய விளம்பர பிரசாரத்தினைத் தொடங்கு, இதனால் பயணிகள் மற்றும் சரக்குகள் உங்களது போக்குவரத்து நிறுவனத்தினைப் பயன்படுத்துவர்.{}செலவு: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}சராசரி விளம்பர பிரசாரத்தினைத் தொடங்கு, இதனால் பயணிகள் மற்றும் சரக்குகள் உங்களது போக்குவரத்து நிறுவனத்தினைப் பயன்படுத்துவர்.{}செலவு: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}பெரிய விளம்பர பிரசாரத்தினைத் தொடங்கு, இதனால் பயணிகள் மற்றும் சரக்குகள் உங்களது போக்குவரத்து நிறுவனத்தினைப் பயன்படுத்துவர்.{}செலவு: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}தங்கள் நிறுவனத்தின் பெருமைக்காக ஓர் சிலையினைக் கட்டவும்.{}செலவு: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}குறிக்கோள்கள் STR_GOALS_GLOBAL_TITLE :{BLACK}பூலோக குறிக்கோள்கள்: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- ஏதுமில்லை - STR_GOALS_COMPANY_TITLE :{BLACK}நிறுவனத்தின் குறிக்கோள்கள்: # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :கேள்வி STR_GOAL_QUESTION_CAPTION_INFORMATION :தகவல் STR_GOAL_QUESTION_CAPTION_WARNING :எச்சரிக்கை STR_GOAL_QUESTION_CAPTION_ERROR :பிழை ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :இரத்து செய் STR_GOAL_QUESTION_BUTTON_OK :சரி STR_GOAL_QUESTION_BUTTON_NO :இல்லை STR_GOAL_QUESTION_BUTTON_YES :ஆம் STR_GOAL_QUESTION_BUTTON_DECLINE :மறு STR_GOAL_QUESTION_BUTTON_ACCEPT :ஏற்றுக்கொள் STR_GOAL_QUESTION_BUTTON_IGNORE :தவிர் STR_GOAL_QUESTION_BUTTON_RETRY :மீண்டும் முயர்ச்சி செய் STR_GOAL_QUESTION_BUTTON_PREVIOUS :முந்தைய STR_GOAL_QUESTION_BUTTON_NEXT :அடுத்த STR_GOAL_QUESTION_BUTTON_STOP :நிருத்து STR_GOAL_QUESTION_BUTTON_START :ஆரம்பி STR_GOAL_QUESTION_BUTTON_GO :செல் STR_GOAL_QUESTION_BUTTON_CONTINUE :தொடரு STR_GOAL_QUESTION_BUTTON_RESTART :மீண்டும் தொடங்கு STR_GOAL_QUESTION_BUTTON_POSTPONE :தள்ளிவை STR_GOAL_QUESTION_BUTTON_SURRENDER :சரணடை STR_GOAL_QUESTION_BUTTON_CLOSE :மூடு # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}மானியங்கள் STR_SUBSIDIES_OFFERED_TITLE :{BLACK}மானியம் வழங்கப்படப்போகும் பணிகள்: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} {STRING} இருந்து {STRING}வரை {YELLOW} ({DATE_SHORT} முன்னர்) STR_SUBSIDIES_NONE :{ORANGE}- ஒன்றுமில்லை - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}மானியம் ஏற்கனவே வழங்கப்பட்ட பணிகள்: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} {STRING} இருந்து {STRING} வரை {YELLOW} ({COMPANY}{YELLOW}, {DATE_SHORT} வரை) # Story book window # Station list window STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ctrl அழுத்தி ஒன்றிற்கும் மேற்ப்பட்ட பொருட்களைத் தேர்ந்தெடுக்கவும் STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} நிலையம்{P "நிலையம்" நிலையங்கள்} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- ஒன்றுமில்லை - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}அனைத்து வசதிகளையும் தேர்ந்தெடு STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}அனைத்து சரக்கு வகைகளையும் தேர்ந்தெடுக்கவும் (காத்திருக்கா சரக்குகளையும் சேர்த்து) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}எந்த வகையான சரக்குகளும் காத்திருக்கவில்லை # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}காத்திருக்கிறது: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION} இலிருந்து வந்துக்கொண்டிருக்கிறது) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}ஏற்றுக்கொள்பவை STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}ஏற்றுக்கொள்ளப்படும் சரக்குகளின் பட்டியலினைக் காட்டு STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}ஏற்றுக்கொள்பவை: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}இந்த நிலையம் இந்த நகரின் முழு போக்குவரத்து உரிமைகளையும் பெற்றுள்ளது. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} இந்த நகரின் மொத்த போக்குவரத்து உரிமைகளையும் வாங்கியது. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}தரங்கள் STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}நிலைய தரத்தினைக் காட்டவும் STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}போக்குவரத்து சேவையின் தர மதிப்பீடு: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :மட்டம் STR_CARGO_RATING_VERY_POOR :மிகவும் மட்டம் STR_CARGO_RATING_POOR :மட்டம் STR_CARGO_RATING_MEDIOCRE :சராசரி STR_CARGO_RATING_GOOD :நல்ல STR_CARGO_RATING_VERY_GOOD :மிக நல்ல STR_CARGO_RATING_EXCELLENT :சிறப்பு STR_CARGO_RATING_OUTSTANDING :மிகச்சிறப்பு ############ range for rating ends STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}நிலையத்தின் பெயரை மாற்று STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}இந்த நிலையத்தினை அட்டவணையில் வைத்துள்ள அனைத்து இரயில்களையும் காட்டு STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}இந்த நிலையத்தினை அட்டவணையில் வைத்துள்ள அனைத்து சாலை வாகனங்களையும் காட்டு STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}இந்த நிலையத்தினை அட்டவணையில் வைத்துள்ள அனைத்து விமானங்களையும் காட்டு STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}இந்த நிலையத்தினை அட்டவணையில் வைத்துள்ள அனைத்து கப்பல்களையும் காட்டு STR_STATION_VIEW_RENAME_STATION_CAPTION :நிலையம்/சரக்கேற்றும் பகுதியின் பெயரினை மாற்றவும் STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}விமான நிலையத்தினை மூடு STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}விமானத்தை இந்த விமான நிலையத்தில் தரையிரங்க அனுமதிக்காதே # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}பாதைப்புள்ளியின் பெயரை மாற்று STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}மிதவையின் பெயரை மாற்று STR_EDIT_WAYPOINT_NAME :{WHITE}பாதைப்புள்ளியின் பெயரை திருத்து # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} நிதிநிலைமை {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}செலவு/வரவு STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}கட்டுமானம் STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}புதிய வாகனங்கள் STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}இரயில்களை இயக்கும் செலவுகள் STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}சாலை வாகனங்களை இயக்கும் செலவுகள் STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}விமானங்களை இயக்கும் செலவுகள் STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}கப்பல்களை இயக்கும் செலவுகள் STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}சொத்து பராமரிப்பு STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}இரயில்வே வருமானம் STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}சாலை வாகன வரவு STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}விமான வரவு STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}கப்பல் வரவு STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}கடன் வட்டி STR_FINANCES_SECTION_OTHER :{GOLD}மற்றவை STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}மொத்தம்: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}வங்கி கையிருப்பு STR_FINANCES_LOAN_TITLE :{WHITE}கடன் STR_FINANCES_MAX_LOAN :{WHITE}அதி. கடன்: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}கடன்வாங்கு {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}கடன் அளவினை அதிகரிக்கவும். Ctrl+Click செய்தால் அதிகபட்ச கடன்தொகை வாங்கப்படும் STR_FINANCES_REPAY_BUTTON :{BLACK}கடனை அடை{CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}பகுதி கடனினை அடைக்கவும். Ctrl+Click செய்தால் முடிந்த அளவு கடன் திரும்பித் தரப்படும் STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}கட்டுமானங்கள் # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(மேலாளர்) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}திற்க்கப்பட்டது: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}நிற கோட்பாடு: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}வாகனங்கள்: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} இரயில்{P "" கள்} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} சாலை வாகனம்{P "" கள்} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} விமானம் STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} கப்பல்{P "" கள்} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}ஒன்றுமில்லை STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}நிறுவனத்தின் மதிப்பு: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% {COMPANY}) ஆல் இருப்பு வைக்கப்பட்டுள்ளது STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}கட்டுமானம்: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} இரயில் பாகம்{P "" கள்} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} சாலை பாகம்{P "" கள்} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} தண்ணீர் வட்டம்{P "" கள்} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} நிலைய வட்டம்{P "" கள்} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} விமான நிலையம்{P "" கள்} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}ஒன்றுமில்லை STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}தலைமைச்செயலகத்தினை கட்டு STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}தலைமைச்செயலகத்தினை கட்டு STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}தலைமைச்செயலகத்தினை பார்வையிடு STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}தலைமைச்செயலகத்தினை பார்வையிடு STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}HQ வினை நகர்த்தவும் STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}விவரங்கள் STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}விவரமான கட்டட எண்ணிக்கைகளை காட்டு STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}புதிய முகம் STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}மேலாளருக்கு புதிய முகத்தினைத் தேர்ந்தெடு STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}நிறக் கோட்பாடு STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}நிறுவனத்தின் பெயர் STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}நிறுவனத்தின் பெயரை மாற்று STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}மேலாளரின் பெயர் STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}மேலாளரின் பெயரை மாற்று STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}நிறுவனத்தின் 25% பங்கினை வாங்கவும் STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}நிறுவனத்தின் 25% பங்கினை விற்கவும் STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :நிறுவனத்தின் பெயர் STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :மேலாளரின் பெயர் # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} இன் கட்டுமானங்கள் STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}இரயில் பாகங்கள்: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}சிக்னல்கள் STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}சாலை பாகங்கள்: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}சாலை STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}ட்ராம்வே STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}தண்ணீர் வட்டங்கள்: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}கால்வாய்கள் STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}நிலையங்கள்: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}நிலைய வட்டங்கள் STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}விமான நிலையங்கள் STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/வருடத்திற்கு ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/வருடத்திற்கு # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}தொழிற்சாலைகள் STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- ஒன்றுமில்லை - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% நகர்த்தப்பட்டது) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% நகர்த்தப்பட்டது) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}சென்ற மாத உற்பத்தி: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% நகர்த்தப்பட்டது) STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}தயாரிப்பு அளவு: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}தேவைப்படுகிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}பதனிப்பட காத்திருக்கும் சரக்கு: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}தயாரிப்பு: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}தயாரிக்கிறது: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}தயாரிப்பினை மாற்றவும் (8 இன் பெருக்கங்கள், 2040 வரை) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}தயாரிப்பு அளவினை மாற்றவும் (சதவிகிதம், 800% வரை) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} இரயில்{P "" கள்} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} சாலை வாகன{P "ம்" ங்கள்} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} கப்பல்{P "" கள்} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} விமானங்கள் STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}இரயில்கள் - மேலும் தகவலறிய இரயிலினைச் சொடுக்கவும் STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}சாலை வாகனங்கள் - சாலை வாகனத்தின் விவரங்கள் அறிய சொடுக்கவும் STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}கப்பல்கள் - கப்பலின் விவரங்கள் அறிய சொடுக்கவும் STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}விமானங்கள் - விமானத்தின் விவரங்கள் அறிய சொடுக்கவும் STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}இந்த ஆண்டின் இலாபம்: {CURRENCY_LONG} (கடந்த ஆண்டு: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :கிடைக்கும் இரயில்கள் STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :கிடைக்கும் வாகனங்கள் STR_VEHICLE_LIST_AVAILABLE_SHIPS :கிடைக்கும் கப்பல்கள் STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :கிடைக்கும் விமானங்கள் STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}பட்டியலினை திருத்தவும் STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}இந்தப் பட்டியலிலுள்ள அனைத்து வாகனங்களுக்கும் கட்டளைகள் அனுப்பு STR_VEHICLE_LIST_REPLACE_VEHICLES :வாகனங்களை மாற்றவும் STR_VEHICLE_LIST_SEND_FOR_SERVICING :பராமரிப்பிற்கு அனுப்பு STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :பணிமனைக்கு அனுப்பு STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :பணிமனைக்கு அனுப்பு STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :பணிமனைக்கு அனுப்பு STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :பணிமனைக்கு அனுப்பு STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}பட்டியலில் உள்ள அனைத்து வாகனங்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}பட்டியலில் உள்ள அனைத்து வாகனங்களையும் இயக்க இங்கே சொடுக்கவும் STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}{COMMA} வாகன{P "த்தின்" ங்களின்} பகிர்ந்த கட்டளைகள் # Group window STR_GROUP_ALL_TRAINS :அனைத்து இரயில்கள் STR_GROUP_ALL_ROAD_VEHICLES :அனைத்து சாலை வாகனங்கள் STR_GROUP_ALL_SHIPS :அனைத்து கப்பல்கள் STR_GROUP_ALL_AIRCRAFTS :அனைத்து விமானங்கள் STR_GROUP_DEFAULT_TRAINS :குழுவில் இல்லாத இரயில்கள் STR_GROUP_DEFAULT_ROAD_VEHICLES :குழுவில் இல்லாத சாலை வாகனங்கள் STR_GROUP_DEFAULT_SHIPS :குழுவில் இல்லாத கப்பல்கள் STR_GROUP_DEFAULT_AIRCRAFTS :குழுவில் இல்லாத விமானம் STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}குழுக்கள் - குழுவில் உள்ள அனைத்து வாகனங்களினை பார்க்க அக்குழுவினை சொடுக்கவும் STR_GROUP_CREATE_TOOLTIP :{BLACK}ஓர் குழுவினை உருவாக்க சொடுக்கவும் STR_GROUP_DELETE_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட குழுவின் பெயரினை நீக்கவும் STR_GROUP_RENAME_TOOLTIP :{BLACK}தேர்ந்தெடுக்கப்பட்ட குழுவின் பெயரினை மாற்றவும் STR_GROUP_ADD_SHARED_VEHICLE :பகிர்ந்த வாகனங்களை சேர்க்கவும் STR_GROUP_REMOVE_ALL_VEHICLES :அனைத்து வாகனங்களையும் நீக்கு STR_GROUP_RENAME_CAPTION :{BLACK}குழுவின் பெயரினை மாற்றவும் # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :புது இரயில் வாகனங்கள் STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :புது மின்சார இரயில் வாகனங்கள் STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :புது மோனோ இரயில் வாகனங்கள் STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :புதிய மேக்லெவ் வாகனங்கள் STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :புது இரயில் வாகனங்கள் STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :புது சாலை வாகனங்கள் STR_BUY_VEHICLE_SHIP_CAPTION :புது கப்பல்கள் STR_BUY_VEHICLE_AIRCRAFT_CAPTION :புது விமானம் STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}செலவு: {GOLD}{CURRENCY_LONG}{BLACK} எடை: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}வேகம்: {GOLD}{VELOCITY}{BLACK} திறன்: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}வேகம்: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}கடலில் வேகம்: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}கால்வாய்/ஆறில் வேகம்: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}செலவுகள்: {GOLD}{CURRENCY_LONG}/வருடத்திற்கு STR_PURCHASE_INFO_CAPACITY :{BLACK}கொள்ளளவு: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(மாற்றியமைக்கலாம்) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}வடிவமைக்கப்பட்டது: {GOLD}{NUM}{BLACK} வாழ்க்கை: {GOLD}{COMMA} வருடம்{P "" கள்} STR_PURCHASE_INFO_RELIABILITY :{BLACK}அதி. நம்பகத்தன்மை: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}விலை: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}எடை: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}செலவு: {GOLD}{CURRENCY_LONG}{BLACK} வேகம்: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}கொள்ளளவு: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}பொறி பெட்டிகள்: {GOLD}+{POWER}{BLACK} எடை: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}இவற்றிற்கு மாற்றியமைக்கலாம்: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :அனைத்து சரக்கு வகைகள் STR_PURCHASE_INFO_ALL_BUT :அனைத்தும் {CARGO_LIST} தவிர STR_PURCHASE_INFO_MAX_TE :{BLACK}அதி. இழு திறன்: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}தூரம்: {GOLD}{COMMA} கட்டங்கள் STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}இரயில் வாகனங்கள் பட்டியல் - மேலும் விவரங்களுக்கு வாகனத்தை சொடுக்கவும் STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}சாலை வாகனங்கள் பட்டியல் - மேலும் விவரங்களுக்கு வாகனத்தை சொடுக்கவும் STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}கப்பல்கள் பட்டியல் - மேலும் விவரங்களுக்கு கப்பலைச் சொடுக்கவும் STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}விமானங்களின் பட்டியல் - மேலும் விவரங்களுக்கு விமானத்தைச் சொடுக்கவும் STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}வாகனத்தை வாங்கு STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}வாகனத்தை வாங்கு STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}கப்பலை வாங்கு STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}விமானத்தை வாங்கு STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் இரயில் வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டு STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் சாலை வாகனத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் கப்பலை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}காட்டப்படும் விமானத்தை வாங்கவும். Shift+Click செய்தால் வாங்கும்போது ஆகும் மதிப்பிடப்பட்டச் செலவுகளைக் காட்டும் STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}பெயரிடு STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}பெயரிடு STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}பெயரிடு STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}பெயரிடு STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}இரயில் வாகன வகையின் பெயரினை மாற்றவும் STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}சாலை வாகன வகையின் பெயரினை மாற்றவும் STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}கப்பல் வகையின் பெயரினை மாற்றவும் STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}விமான வகையின் பெயரினை மாற்றவும் STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}இரயில் வாகன வகையின் பெயரினை மாற்றவும் STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}சாலை வாகன வகையின் பெயரினை மாற்றவும் STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}கப்பல் வகையின் பெயரினை மாற்றவும் STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}விமான வகையின் பெயரினை மாற்றவும் # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}பணிமனையின் பெயரை மாற்று STR_DEPOT_RENAME_DEPOT_CAPTION :பணிமனையின் பெயரை மாற்று STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} வாகனம்{P "" கள்}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}வாகனங்கள் - மேலும் தகவலறிய வாகனத்தை சொடுக்கவும் STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}கப்பல்கள் - மேலும் தகவலறிய கப்பலை சொடுக்கவும் STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}விமானம் - மேலும் தகவலறிய விமானத்தை சொடுக்கவும் STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}இரயில் வாகனத்தை விற்க இங்கே இழுத்து வந்து விடவும் STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}சாலை வாகனத்தை விற்க இங்கே இழுத்து வந்து விடவும் STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}கப்பலை விற்க இங்கே இழுத்து வந்து விடவும் STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}விமானத்தை விற்க இங்கே இழுத்து வந்து விடவும் STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}முழு இரயிலையும் விற்க இரயில் பொறியினை இங்கே இழுத்துவந்து விடவும் STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}பணிமனையில் உள்ள இரயில்களை விற்று விடு STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}பணிமனையில் உள்ள சாலை வாகனங்களை விற்று விடு STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}பணிமனையில் உள்ள அனைத்து கப்பல்களையும் விற்றுவிடு STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}பணிமனையில் உள்ள அனைத்து விமானங்களையும் விற்றுவிடு STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}பணிமனையில் உள்ள அனைத்து இரயில்களையும் தானாக மாற்றிவிடு STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}பணிமனையிலுள்ள சாலை வாகனங்கள் அனைத்தையும் தானாக மாற்றவும் STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}பணிமனையில் உள்ள அனைத்து கப்பல்களையும் தானாக மாற்றிவிடு STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}பணிமனையிலுள்ள அனைத்து விமானங்களையும் தானாக மாற்று STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}புதிய வாகனங்கள் STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}புதிய வாகனங்கள் STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}புதிய கப்பல்கள் STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}புதிய விமானங்கள் STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}புதிய இரயில் வாகனத்தை வாங்கு STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}புதிய சாலை வாகனத்தை வாங்கு STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}புதிய கப்பலை வாங்கு STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}புதிய விமானத்தை வாங்கு STR_DEPOT_CLONE_TRAIN :{BLACK}இரயிலினை நகலிடு STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}வாகனத்தை நகலிடு STR_DEPOT_CLONE_SHIP :{BLACK}கப்பலை நகலிடு STR_DEPOT_CLONE_AIRCRAFT :{BLACK}விமானத்தை நகலிடு STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}இந்தப் பணிமனையினைத் தங்கள் கட்டளையில் வைத்துள்ள அனைத்து இரயில்களின் பட்டியலினைப் பெறு STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}இந்தப் பணிமனையினைத் தங்கள் கட்டளையில் வைத்துள்ள அனைத்து சாலை வாகனங்களின் பட்டியலினை பெறு STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}இந்தப் பணிமனையினைத் தங்கள் கட்டளையில் வைத்துள்ள அனைத்துக் கப்பல்களின் பட்டியலினை பெறு STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}இந்தப் பணிமனையினைத் தங்கள் கட்டளையில் வைத்துள்ள அனைத்து விமானங்களின் பட்டியலினைப் பெறு STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து இரயில்களினை நிறுத்த சொடுக்கவும் STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}பணிமனையிலுள்ள அனைத்து சாலை வாகனங்களையும் நிறுத்தவும் STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து கப்பல்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து விமானங்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து இரயில்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து சாலை வாகனங்களையும் நிறுத்த இங்கே சொடுக்கவும் STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}பணிமனையிலுள்ள அனைத்து கப்பல்களையும் இயக்கவும் STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}பணிமனையின் உள்ளே உள்ள அனைத்து விமானங்களையும் கிளப்ப இங்கே சொடுக்கவும் STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}நீங்கள் இந்தப் பணிமனையிலுள்ள அனைத்து வாகங்களையும் விற்க தயாராக உள்ளீர்கள். இந்த முடிவில் நீங்கள் உறுதியா? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}வாகன உற்பத்தியாலரிடமிருந்து ஓர் தகவல் STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :இரயில்வே வாகனம் STR_ENGINE_PREVIEW_ROAD_VEHICLE :சாலை வாகனம் STR_ENGINE_PREVIEW_AIRCRAFT :விமானம் STR_ENGINE_PREVIEW_SHIP :கப்பல் STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :மோனோ இரயில் வாகனம் STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :மேக்லெவ் வாகனம் STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}செலவு: {CURRENCY_LONG} எடை: {WEIGHT_SHORT}{}வேகம்: {VELOCITY} திறன்: {POWER}{}ஓட்டுவதற்கான செலவு: {CURRENCY_LONG}/வரு{}கொள்ளளவு: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}செலவு: {CURRENCY_LONG} எடை: {WEIGHT_SHORT}{}வேகம்: {VELOCITY} திறன்: {POWER} அதி. T.E.: {6:FORCE}{}ஓட்டுவதற்கான செலவு: {4:CURRENCY_LONG}/வரு{}கொள்ளளவு: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}, {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY} எல்லை: {COMMA} கட்டங்கள்{}கொள்ளளவு: {CARGO_LONG}, {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY} வரையறை: {COMMA} கட்டங்கள்{}கொள்ளளவு: {CARGO_LONG}{}இயக்குவதற்கான செலவு: {CURRENCY_LONG}/வரு # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}மாற்று {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :இரயில் STR_REPLACE_VEHICLE_ROAD_VEHICLE :சாலை வாகனம் STR_REPLACE_VEHICLE_SHIP :கப்பல் STR_REPLACE_VEHICLE_AIRCRAFT :விமானம் STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}மாற்றியமைக்க பொறி வகையினை தேர்ந்தெடுக்க STR_REPLACE_VEHICLES_START :{BLACK}வாகனங்களை மாற்றுவதை ஆரம்பி STR_REPLACE_VEHICLES_NOW :அனைத்து வாகனங்களையும் மாற்று STR_REPLACE_VEHICLES_WHEN_OLD :பழைய வாகனங்களை மட்டும் மாற்று STR_REPLACE_NOT_REPLACING :{BLACK}மாற்றல் நடைபெறவில்லை STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}எந்த வாகனமும் தேர்ந்தெடுக்கப்படவில்லை STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} காலாவதியான பிறகு STR_REPLACE_VEHICLES_STOP :{BLACK}வாகனங்களை மாற்றுவதை நிறுத்தவும் STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}மாற்றல்: {ORANGE}{STRING} STR_REPLACE_ENGINES :பொறிகள் STR_REPLACE_WAGONS :வாகனங்கள் STR_REPLACE_RAIL_VEHICLES :இரயில் வாகனங்கள் STR_REPLACE_ELRAIL_VEHICLES :மின்சார இரயில் வாகனங்கள் STR_REPLACE_MONORAIL_VEHICLES :மோனோ இரயில் வாகனங்கள் STR_REPLACE_MAGLEV_VEHICLES :மேக்லெவ் வாகனங்கள் STR_REPLACE_REMOVE_WAGON :{BLACK}பெட்டி நீக்கம்: {ORANGE}{STRING} # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}இரயிலினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கும் STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}வாகனத்தினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கும் STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}கப்பலினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கும் STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}விமானத்தினை பணிமனைக்கு அனுப்பவும். Ctrl+Click அழுத்தினால் பழுதுபார்த்தல் மட்டுமே நடக்கவும் STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}இது இரயிலின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}இது சாலை வாகனத்தின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}இது கப்பலின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}இது விமானத்தின் பிரதியை உருவாக்கும். Ctrl+Click அழுத்தினால் கட்டளைகள் பகிரப்படும். Shift+Click அழுத்தினால் மதிப்பிடப்பட்ட செலவுகள் காட்டப்படும் STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}சிக்னலில் இரயில் நிற்காமல் செல்ல அனுமதிக்கவும் STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}வேறொரு சரக்கு வகையினை ஏற்றுமாறு இரயிலினை மாற்றியமைக்கவும் STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}வேறு ஒரு சரக்கு வகையினை ஏற்றுமாறு சாலை வாகனத்தினை மாற்றியமைக்கவும் STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}மற்றொரு சரக்கு வகையிற்கு கப்பலினை மாற்றியமைக்கவும் STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}மற்றொரு வகையான சரக்கினை ஏற்ற விமானத்தினை மாற்றியமை STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}இரயிலினை திருப்பவும் STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}வாகனத்தினை திருப்பவும் STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}இரயிலின் கட்டளைகளை பார்வையிடு. Ctrl+Click இரயிலின் நேர அட்டவனையினை காட்டும் STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}வாகனத்தின் கட்டளைகளைக் காட்டு. Ctrl+Click அழுத்தினால் வாகனத்தின் கால அட்டவணையினைக் காட்டப்படும் STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}கப்பலின் கட்டளைகளைக் காட்டு. Ctrl+Click அழுத்தினால் கப்பலின் கால அட்டவணையினைக் காட்டப்படும் STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}விமானத்தின் கட்டளைகளைக் காட்டு. Ctrl+Click விமானத்தின் கால அட்டவணையினைக் காட்டும் STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}இரயிலின் விவரங்களைக் காட்டு STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}சாலை வாகனத்தின் விவரங்களைக் காட்டு STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}கப்பலின் விவரங்களைக் காட்டு STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}விமானத்தின் விவரங்களைக் காட்டு STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய இரயில்வே செயல் - இரயிலினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய வாகனங்கள் செயல் - வாகனத்தினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய கப்பல் செயல் - கப்பலினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}தற்போதைய விமான செயல் - விமானத்தினை நிறுத்த/கிளப்ப சொடுக்கவும். Ctrl+Click அழுத்தினால் செல்லவேண்டிய இடத்தினைக் காட்டும் # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}சரக்கு ஏற்றம் / இறக்கம் STR_VEHICLE_STATUS_LEAVING :{LTBLUE}விட்டுச்செல்கிறது STR_VEHICLE_STATUS_CRASHED :{RED}மோதியது! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}பழுதானது STR_VEHICLE_STATUS_STOPPED :{RED}நின்றுவிட்டது STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}நிறுத்தப்படுகின்றது, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}திறன் இல்லை STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}வழிக்காக காத்துக்கொண்டிருக்கிறது STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}செல்லுமிடம் நெடுந்தொலைவிலுள்ளது STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}{STATION} இற்கு செல்கிறது, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}எந்த கட்டளைகளும் இல்லை, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE} {WAYPOINT}-இற்கு செல்கிறது, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE} {DEPOT}-இற்கு செல்கிறது, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE} {DEPOT}-இல் சர்வீஸ் செய்ய செல்கிறது, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}நிறுத்தப்பட்டுள்ளது STR_VEHICLE_COMMAND_STOPPED :{RED}நிறுத்தப்பட்டுள்ளது STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}கிளம்பியது STR_VEHICLE_COMMAND_STARTED :{GREEN}கிளம்பியது # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (விவரங்கள்) STR_VEHICLE_NAME_BUTTON :{BLACK}பெயர் STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}இரயிலிற்கு பெயரிடு STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}சாலை வாகனத்திற்கு பெயரிடு STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}கப்பலுக்கு பெயரிடு STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}விமானத்திற்கு பெயரிடு STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}வயது: {LTBLUE}{STRING}{BLACK} ஓட்டுதல் செலவு: {LTBLUE}{CURRENCY_LONG}/வரு # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} வருடம்{P "" கள்} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} வருடம்{P "" கள்} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}அதி. வேகம்: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}அதி. வேகம்: {LTBLUE}{VELOCITY} {BLACK}வரையறை: {LTBLUE}{COMMA} கட்டங்கள் STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}எடை: {LTBLUE}{WEIGHT_SHORT} {BLACK}திறன்: {LTBLUE}{POWER}{BLACK} அதி. வேகம்: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}எடை: {LTBLUE}{WEIGHT_SHORT} {BLACK}திறன்: {LTBLUE}{POWER}{BLACK} அதி. வேகம்: {LTBLUE}{VELOCITY} {BLACK}அதி. T.E.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}இந்த வருட இலாபம்: {LTBLUE}{CURRENCY_LONG} (சென்ற வருடம்: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}நம்பகத்தன்மை: {LTBLUE}{COMMA}% {BLACK}கடைசிப் பராமரிப்பிற்குப் பின் ஏற்ப்பட்ட பழுதுகள்: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}கட்டப்பட்டது: {LTBLUE}{NUM}{BLACK} மதிப்பு: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}கொள்ளளவு: {LTBLUE}ஒன்றுமில்லை{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}கொள்ளளவு: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}கொள்ளளவு: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}கொள்ளளவு: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}இடமாற்றம் வரவுகள்: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}பராமரிப்புகளுக்கிடையேயான காலம்: {LTBLUE}{COMMA}நாட்கள்{BLACK} கடைசி பராமரிப்பு: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}பராமரிப்புகளுக்கிடையேயான காலம்: {LTBLUE}{COMMA}%{BLACK} கடைசி பராமரிப்பு: {LTBLUE}{DATE_LONG} STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}பழுதுபார்த்தல் இடைவேளி வகையினை மாற்றவும் STR_VEHICLE_DETAILS_DEFAULT :Default STR_VEHICLE_DETAILS_DAYS :நாட்கள் STR_VEHICLE_DETAILS_PERCENT :சதவிகிதம் STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}இரயிலிற்கு பெயரிடு STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}சாலை வாகனத்திற்கு பெயரிடு STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}கப்பலுக்கு பெயரிடு STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}விமானத்திற்கு பெயரிடு # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} கட்டப்பட்டது: {LTBLUE}{NUM}{BLACK} மதிப்பு: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} மதிப்பு: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Tஇரயிலின் மொத்த சரக்குக் கொள்ளளவு: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}காலி STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} {STATION} -இலிருந்து STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} {STATION}-இலிருந்து (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}சரக்கு STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}ஏற்றப்பட்டுள்ள சரக்குகள் பற்றிய விவரங்களை காட்டு STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}தகவல் STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}இரயிலின் வாகனங்கள் பற்றிய விவரங்களை காட்டு STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}கொள்ளளவுகள் STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}ஒவ்வொரு வாகனத்தின் கொள்ளளவினை காட்டு STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}மொத்த சரக்கு STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}இரயிலின் மொத்தக் கொள்ளளவினைக் காட்டு, சரக்கு வகைப்படி பிரித்தவாறு STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}கொள்ளளவு: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (மாற்றியமை) STR_REFIT_TITLE :{GOLD}சரக்கு வகையினை தேர்ந்தெடு: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}புதிய கொள்ளளவு: {GOLD}{CARGO_LONG}{}{BLACK}மாற்றியமைத்தல் செலவு: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}புதிய கொள்ளளவு: {GOLD}{CARGO_LONG}{}{BLACK}மாற்றியமைத்ததனால் வருமானம்: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}புதிய கொள்ளளவு: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}மாற்றியமைத்தல் செலவு: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}புதிய கொள்ளளவு: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}மாற்றியமைத்ததனால் வருமானம்: {GREEN}{CURRENCY_LONG} STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}இந்த இரயில் எடுத்துச்செல்ல வேண்டிய சரக்கு வகையினை தேர்ந்தெடு STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}இந்த சாலை வாகனம் எடுத்துச்செல்ல வேண்டிய சரக்கு வகையினை தேர்ந்தெடு STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}இந்த கப்பல் எடுத்துச்செல்ல வேண்டிய சரக்கு வகையினை தேர்ந்தெடு STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}இந்த விமானம் எடுத்துச்செல்ல வேண்டிய சரக்கு வகையினை தேர்ந்தெடு STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}இரயிலை மாற்றியமை STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}சாலை வாகனத்தை மாற்றியமை STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}கப்பலை மாற்றியமை STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}விமானத்தை மாற்றியமை STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}குறிப்பிடப்பட்ட சரக்கு வகையிற்கு ஏற்றவாறு இரயிலினை மாற்றியமை STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}குறிப்பிடப்பட்ட சரக்கு வகையிற்கு ஏற்றவாறு சாலை வாகனத்தை மாற்றியமை STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}குறிப்பிடப்பட்ட சரக்கு வகையிற்கு ஏற்றவாறு கப்பலினை மாற்றியமை STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}குறிப்பிடப்பட்ட சரக்கு வகையிற்கு ஏற்றவாறு விமானத்தை மாற்றியமை # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (கட்டளைகள்) STR_ORDERS_TIMETABLE_VIEW :{BLACK}நேர அட்டவணை STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}கால அட்டவணை பார்வைக்கு மாறு STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - கட்டளைகளின் பட்டியல் முடிகிறது - - STR_ORDERS_END_OF_SHARED_ORDERS :- - பகிரப்பட்ட கட்டளைகளின் பட்டியல் முடிகிறது - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}எங்கும் நிற்காமல் STR_ORDER_GO_TO :இங்கே செல் STR_ORDER_GO_NON_STOP_TO :எங்கும் நிற்காமல் இங்கே செல் STR_ORDER_GO_VIA :இதன் வழியாக இங்கே செல் STR_ORDER_GO_NON_STOP_VIA :எங்கும் நிற்காமல் இதன் வழியாக செல் STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}எந்த சரக்கினையும் முழுமையாக ஏற்று STR_ORDER_DROP_LOAD_IF_POSSIBLE :கிடைத்தால் ஏற்று STR_ORDER_DROP_FULL_LOAD_ALL :அனைத்து சரக்கையும் முழுமையாக ஏற்று STR_ORDER_DROP_FULL_LOAD_ANY :எந்த சரக்கையும் முழுமையாக ஏற்று STR_ORDER_DROP_NO_LOADING :எதையும் ஏற்றாதே STR_ORDER_TOGGLE_UNLOAD :{BLACK}அனைத்தையும் இறக்கு STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :ஏற்றுக்கொண்டால் இறக்கு STR_ORDER_DROP_UNLOAD :அனைத்தையும் இறக்கு STR_ORDER_DROP_TRANSFER :இடமாற்றம் STR_ORDER_DROP_NO_UNLOADING :எதையும் இறக்காதே STR_ORDER_REFIT :{BLACK}மாற்றியமை STR_ORDER_REFIT_AUTO :{BLACK}தானாக-மாற்றியமை STR_ORDER_DROP_REFIT_AUTO :குறிப்பிட்ட சரக்கு STR_ORDER_DROP_REFIT_AUTO_ANY :கிடைக்கும் சரக்கு STR_ORDER_SERVICE :{BLACK}பராமரிப்பு STR_ORDER_DROP_GO_ALWAYS_DEPOT :எப்போதும் செல் STR_ORDER_DROP_SERVICE_DEPOT :தேவைப்பட்டால் பராமரிப்பிற்கு செல் STR_ORDER_DROP_HALT_DEPOT :நிறுத்து STR_ORDER_SERVICE_TOOLTIP :{BLACK}பழுது சரிபார்த்தல் இல்லையெனில் இந்தக் கட்டளையினை தவிற்கவும் # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :சுமை அளவு STR_ORDER_CONDITIONAL_RELIABILITY :நம்பகத்தன்மை STR_ORDER_CONDITIONAL_MAX_SPEED :அதிகபட்ச வேகம் STR_ORDER_CONDITIONAL_AGE :வயது (வருடங்கள்) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :பராமரிப்பு தேவைப்படுகிறது STR_ORDER_CONDITIONAL_UNCONDITIONALLY :எப்போதுமே STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :மீதமிருக்கும் வாழ்நாள் (வருடங்கள்) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}கொடுக்கப்பட்ட மதிப்புடன் எப்படி வாகன தகவல்களை ஒப்பிடுவது STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :இதற்கு சமம் STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :இதற்கு சமம் இல்லை STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :இது குறைவு. இதற்கு STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :இது சமம் அல்லது குறைவு. இதற்கு STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :இது அதிகம். இதற்கு STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :இது சமம் அல்லது அதிகம். இதற்கு STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :உண்மை STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :பொய் STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}வாகன தகவல்களை ஒப்பிடுவதற்கான மதிப்பு STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}ஒப்பிடுவதற்கு ஓர் மதிப்பினை இடு STR_ORDERS_SKIP_BUTTON :{BLACK}தாண்டு STR_ORDERS_DELETE_BUTTON :{BLACK}நீக்கு STR_ORDERS_DELETE_TOOLTIP :{BLACK}குறிப்பிட்ட கட்டளையை நீக்கு STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}அனைத்து ஆர்டர்களையும் ரத்து செய் STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}பகிர்வதை நிறுத்து STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}கட்டளைப் பட்டியலினை பகிர்வதை நிறுத்தவும். Ctrl+Click அழுத்தினால் வாகனத்தினது கட்டளைகள் அனைத்தும் நீக்கப்படும் STR_ORDERS_GO_TO_BUTTON :{BLACK}இங்கே செல் STR_ORDER_GO_TO_NEAREST_DEPOT :அருகாமையில் உள்ள பணிமனைக்கு செல் STR_ORDER_GO_TO_NEAREST_HANGAR :அருகாமையில் உள்ள பணிமனைக்கு செல் STR_ORDER_CONDITIONAL :கண்டிப்பான கட்டளை தாவுதல் STR_ORDER_SHARE :கட்டளைகளை பகிரு STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}இந்த கால அட்டவணையினை பகிரும் அனைத்து வாகனங்களையும் காட்டு # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :{WAYPOINT} வழியாக செல் STR_ORDER_GO_NON_STOP_TO_WAYPOINT :{WAYPOINT} வழியாக எங்கும் நிற்காமல் செல் STR_ORDER_SERVICE_AT :பழுதுபார்த்தல். இங்கு STR_ORDER_SERVICE_NON_STOP_AT :எங்கேயும் நிறுத்தாமல் பழுதுபார்கவும். இங்கு STR_ORDER_NEAREST_DEPOT :அருகாமையில் உள்ள STR_ORDER_NEAREST_HANGAR :அருகாமையில் உள்ள பணிமனை STR_ORDER_TRAIN_DEPOT :இரயில் பணிமனை STR_ORDER_ROAD_VEHICLE_DEPOT :சாலை வாகன பணிமனை STR_ORDER_SHIP_DEPOT :கப்பல் பணிமனை STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :({STRING}-இற்கு மாற்று) STR_ORDER_REFIT_STOP_ORDER :({STRING}-இற்கு மாற்றிவிட்டு நின்றுவிடு) STR_ORDER_STOP_ORDER :(நிறுத்து) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(தானியங்கி) STR_ORDER_FULL_LOAD :(முழு சுமை) STR_ORDER_FULL_LOAD_ANY :(எந்த சரக்கையும் முழுமையாக ஏற்று) STR_ORDER_NO_LOAD :(எதையும் ஏற்றாதே) STR_ORDER_UNLOAD :(இறக்கிவிட்டு சரக்கை ஏற்று) STR_ORDER_UNLOAD_FULL_LOAD :(சரக்குகளை இறக்கு, முழு கொள்ளளவு அடையும் வரை காத்திரு) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(சரக்குகளை இறக்கு, எந்த சரக்கினையும் முழு கொள்ளளவு அடையும் வரை காத்திரு) STR_ORDER_UNLOAD_NO_LOAD :(இறக்கிவிட்டு காலியாக கிளம்பு) STR_ORDER_TRANSFER :(பரிமாற்றம் ஆன பிறகு சரக்குகளை ஏற்றவும்) STR_ORDER_TRANSFER_FULL_LOAD :(பரிமாற்றம் ஆன பிறகு முழு கொள்ளளவு அடையும் வரை காத்திருக்கவும்) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(பரிமாற்றம் ஆன பிறகு முழு கொள்ளளவு அடையும் வரை காத்திருக்கவும்) STR_ORDER_TRANSFER_NO_LOAD :(பரிமாற்றம் செய்துவிட்டு காலியாக கிளம்பவும்) STR_ORDER_NO_UNLOAD :(எதையும் இறக்காமல் சரக்குகளை ஏற்றிக்கொண்டுச் செல்) STR_ORDER_NO_UNLOAD_FULL_LOAD :(எதையும் இறக்காமல் சரக்குகளை முழுமையாக ஏற்றிக்கொண்டுச் செல்) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(எதையும் இறக்காமல் எந்த சரக்கையும் முழுமையாக ஏற்றிக்கொண்டுச் செல்) STR_ORDER_NO_UNLOAD_NO_LOAD :(லோடிங் அன்லோடிங் தடைசெய்யப்பட்டுள்ளது) STR_ORDER_AUTO_REFIT :({STRING}-இற்கு தானாக மாற்றிவிடு) STR_ORDER_FULL_LOAD_REFIT :(சரக்குகளை முழு கொள்ளளவு அடையும் வரை காத்திரு, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_FULL_LOAD_ANY_REFIT :(எந்த சரக்கினையும் முழு கொள்ளளவு அடையும் வரை காத்திரு, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_UNLOAD_REFIT :(சரக்குகளை இறக்கு, சரக்குகளை ஏற்று, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(சரக்குகளை இறக்கு, முழு கொள்ளளவு அடையும் வரை காத்திரு, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(சரக்குகளை இறக்கு, முழு கொள்ளளவு அடையும் வரை காத்திரு, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_TRANSFER_REFIT :(பரிமாற்றம் ஆன பிறகு சரக்குகளை ஏற்றவும் தானியங்கி-மாற்றியமைத்தலுடன் {STRING}-இற்கு) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(பரிமாற்றம் ஆன பிறகு முழு கொள்ளளவு அடையும் வரை காத்திருக்கவும் தானியங்கி-மாற்றியமைத்தலுடன் {STRING}-இற்கு) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(பரிமாற்றம் ஆன பிறகு முழு கொள்ளளவு அடையும் வரை காத்திருக்கவும் தானியங்கி-மாற்றியமைத்தலுடன் {STRING}-இற்கு) STR_ORDER_NO_UNLOAD_REFIT :(எதையும் இறக்காதே, இருக்கும் சரக்குகளை ஏற்று, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(எதையும் இறக்காதே, முழு கொள்ளளவு அடையும் வரை காத்திரு, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(எதையும் இறக்காதே, முழு கொள்ளளவு அடையும் வரை காத்திரு, மேலும் {STRING} இற்கு மாற்றியமை) STR_ORDER_AUTO_REFIT_ANY :கிடைக்கும் சரக்கு STR_ORDER_STOP_LOCATION_NEAR_END :[கிட்ட முடிவில்] STR_ORDER_STOP_LOCATION_MIDDLE :[நடுவில்] STR_ORDER_STOP_LOCATION_FAR_END :[தூரமுடிவில்] STR_ORDER_OUT_OF_RANGE :{RED} (அடுத்த இடம் எல்லைக்கு அப்பால் உள்ளது) STR_ORDER_CONDITIONAL_UNCONDITIONAL :{COMMA} கட்டளைக்கு தாண்டி செல்லவும் STR_ORDER_CONDITIONAL_NUM :கட்டளையிற்கு தாவவும் {COMMA} {STRING} {STRING} நடந்தால் {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :பிறகு கட்டளையிற்கு தாவவும் {COMMA} {STRING} {STRING} நடந்தால் STR_INVALID_ORDER :{RED} (செல்லாத கட்டளை) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (பயண நேர அட்டவணை) STR_TIMETABLE_ORDER_VIEW :{BLACK}கட்டளைகள் STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}கட்டளை பார்வையிற்கு மாறவும் STR_TIMETABLE_TOOLTIP :{BLACK}கால அட்டவணை - கட்டளையினை தேர்ந்தெடுக்க சொடுக்கவும் STR_TIMETABLE_NO_TRAVEL :எந்த பயணமும் இல்லை STR_TIMETABLE_NOT_TIMETABLEABLE :பயணம் (தானியங்கி; அடுத்த கால அட்டவணையில் மனிதனால் இயக்க) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :பயணம் (நேர அட்டவணை இடப்படாதது) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :அதிகபட்சமாக {2:VELOCITY} உடன் பயணிக்கவும் (கால அட்டவணையிடப்படவில்லை) STR_TIMETABLE_TRAVEL_FOR :{STRING} காலத்திற்கு பயணி STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING} காலத்திற்கு பயணி, அதிகபட்ச வேகம் {VELOCITY} STR_TIMETABLE_STAY_FOR :மற்றும் {STRING} இற்கு நிற்கவும் STR_TIMETABLE_AND_TRAVEL_FOR :மற்றும் {STRING} இற்கு பயணிக்கவும் STR_TIMETABLE_DAYS :{COMMA} நாள்{P "" கள்} STR_TIMETABLE_TICKS :{COMMA} நொடி{P "" கள்} STR_TIMETABLE_TOTAL_TIME :{BLACK}இந்த கால அட்டவணை முடிய {STRING} காலமாகும் STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}இந்த கால அட்டவணை முடிய குரைந்தபட்சம் {STRING} காலமாவது ஆகும்.(ஏனெனில் அனைத்தும் கால அட்டவணைபடவில்லை) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}இந்த வாகனம் காலதாமதமின்றி சென்றுக்கொண்டிருக்கிறது STR_TIMETABLE_STATUS_LATE :{BLACK}இந்த வாகனம் {STRING} காலதாமதமாக ஓடிக்கொண்டிருக்கிறது STR_TIMETABLE_STATUS_EARLY :{BLACK}இந்த வாகனம் {STRING} சீக்கிரமாக ஓடிக்கொண்டிருக்கிறது STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}கால அட்டவணை இன்னும் தொடங்கவில்லை STR_TIMETABLE_STATUS_START_AT :{BLACK}இந்த கால அட்டவணை {STRING} அன்று தொடங்கும் STR_TIMETABLE_STARTING_DATE :{BLACK}ஆரம்ப தேதி STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}கால அட்டவணையின் தொடக்க தேதியினை தேர்ந்தெடுக்கவும் STR_TIMETABLE_CHANGE_TIME :{BLACK}நேரத்தை மாற்று STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}இந்தக் கட்டளையின் கால அளவினை மாற்றவும் STR_TIMETABLE_CLEAR_TIME :{BLACK}நேரத்தை நீக்கு STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}இந்தக் கட்டளையின் கால அளவினை நீக்கவும் STR_TIMETABLE_CHANGE_SPEED :{BLACK}வேக எல்லையை மாற்று STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}இந்தக் கட்டளையின் பயண வேகத்தினை மாற்றவும் STR_TIMETABLE_CLEAR_SPEED :{BLACK}வேகத்தடையை நீக்கு STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}இந்தக் கட்டளையின் பயண வேகத்தினை நீக்கவும் STR_TIMETABLE_RESET_LATENESS :{BLACK}தாமதம் எண்ணியை முன்நிலையாக்கவும் STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}தாமத நேர எண்ணியை மாற்றியமைக்கவும், சரியான நேரத்திற்கு வாகனம் வருவதற்கு STR_TIMETABLE_AUTOFILL :{BLACK}தானியங்கிநிறப்பான் STR_TIMETABLE_EXPECTED :{BLACK}எதிர்ப்பார்க்கப்படுவது STR_TIMETABLE_SCHEDULED :{BLACK}அட்டவணையிடப்பட்ட STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}எதிர்பார்க்கப்பட்ட மற்றும் அட்டவணையிடப்பட்ட ஆகிவற்றிற்குள் இடைமாற்றவும் STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}தேதியை அமை STR_DATE_SET_DATE :{BLACK}தேதியை அமை STR_DATE_SET_DATE_TOOLTIP :{BLACK}நேர அட்டவணையின் தொடக்கத் தேதியாக தேர்ந்தெடுக்கப்பட்டத் தேதியினை பயன்படுத்தவும் STR_DATE_DAY_TOOLTIP :{BLACK}நாளினைத் தேர்ந்தெடு STR_DATE_MONTH_TOOLTIP :{BLACK}மாதத்தினை தேர்ந்திடு STR_DATE_YEAR_TOOLTIP :{BLACK}வருடத்தை தேர்ந்தெடுr # AI debug window STR_AI_DEBUG :{WHITE}AI/ஆட்டத்தின் வரிவடிவம் சரிபார்த்தல் STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}ஸ்கிரிப்டின் பெயர் STR_AI_DEBUG_SETTINGS :{BLACK}அமைப்புகள் STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}வரிவடிவத்தின் அமைப்புகளை மாற்று STR_AI_DEBUG_RELOAD :{BLACK}AI-ஐ மறுபடியும் ஏற்று STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}AI இனை நிறுத்தவும், வரிவடிவத்தினை திருப்பி ஏற்றவும், மேலும் AI இனை மீண்டும் தொடங்கவும் STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}உடைத்து ஆம்: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}உடைத்து ஆம் STR_AI_DEBUG_MATCH_CASE :{BLACK}case இனை சரிபடுத்தவும் STR_AI_DEBUG_CONTINUE :{BLACK}தொடரு STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}AI இனை தொடரு STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}இந்த AI இன் சரிபார்த்தலினை காட்டவும் STR_AI_GAME_SCRIPT :{BLACK}விளையாட்டின் ஸ்கிரிப்ட் STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}வரிவடிவத்தின் பதிவேட்டினை பார் STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/ஆட்ட வரிவடிவம் சரிபார்த்தல் கட்டம் சர்வர்களுக்கு மட்டுமே உள்ளது # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/வரிவடிவம் ஏற்றபடி அமை STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}வரிவடிவம் அடுத்த ஆட்டங்களிலிருந்து பதிவேற்றப்படும் STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}அடுத்த ஆட்டங்களில் பதிவேற்றப்படும் AI-கள் STR_AI_CONFIG_HUMAN_PLAYER :மனித வீரர் STR_AI_CONFIG_RANDOM_AI :ஏதொவொரு AI STR_AI_CONFIG_NONE :(none) STR_AI_CONFIG_MOVE_UP :{BLACK}மேல் நகர்த்து STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}தேரந்தெடுக்கப்பட்ட AI-இனை பட்டியலில் மேல் நகர்த்து STR_AI_CONFIG_MOVE_DOWN :{BLACK}கீழ் இறக்கு STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}தேரந்தெடுக்கப்பட்ட AI-இனை பட்டியலில் கீழே நகர்த்து STR_AI_CONFIG_GAMESCRIPT :{SILVER}விளையாட்டின் ஸ்கிரிப்ட் STR_AI_CONFIG_AI :{SILVER}AIகள் STR_AI_CONFIG_CHANGE :{BLACK}தேர்ந்தெடு {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :விளையாட்டின் ஸ்கிரிப்ட் STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}மற்றொறு வரிவடிவத்தினை பதிவேற்று STR_AI_CONFIG_CONFIGURE :{BLACK}ஏற்றபடி அமை STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}வரிவடிவத்தின் குணாதிசயங்களை மாற்று # Available AIs window STR_AI_LIST_CAPTION :{WHITE}இருக்கிறது {STRING} STR_AI_LIST_CAPTION_AI :AIகள் STR_AI_LIST_CAPTION_GAMESCRIPT :விளையாட்டின் ஸ்கிரிப்ட்கள் STR_AI_LIST_TOOLTIP :{BLACK}ஓர் வரிவடிவத்தினை தேர்ந்தெடுக்க சொடுக்கவும் STR_AI_LIST_AUTHOR :{LTBLUE}எழுதியவர்: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}பதிப்பு: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}ஏற்றுக்கொள் STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}குறிக்கப்பட்ட வரிவடிவத்தினை தேர்ந்தெடு STR_AI_LIST_CANCEL :{BLACK}இரத்து செய் STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}வரிவடிவத்தினை மாற்றாதே # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} குணாதிசயங்கள் STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :விளையாட்டின் ஸ்கிரிப்ட் STR_AI_SETTINGS_CLOSE :{BLACK}மூடு STR_AI_SETTINGS_RESET :{BLACK}முன்னிருந்தமாதிரி மாற்று STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :இந்த AI-இனை தொடங்குவதற்கான நாட்கள், முந்தின AI-இற்கு பிறகு: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} இன் படிப்பு அறி STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING} இன் மாற்றங்கள் பதிவேடு STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} இன் அனுமதி STR_TEXTFILE_VIEW_README :{BLACK}படிக்க வேண்டியதை பார்வையிடு STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}மாற்றங்கள் பதிவேடு STR_TEXTFILE_VIEW_LICENCE :{BLACK}அனுமதி # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}செலவு: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}செலவு: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}வருவாய்: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}வருவாய்: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}இடமாற்றம்: {CURRENCY_LONG} STR_FEEDER :{YELLOW}இடமாற்றம்: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}மதிப்பிடப்பட்டுள்ள செலவு: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}மதிப்பிடப்பட்டுள்ள வரவு: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}பதிவாகிக்கொண்டிருக்கிறது,{}சிறிது நேரம் பொறுங்கள்,! STR_ERROR_AUTOSAVE_FAILED :{WHITE}தானியங்கிபதிவு தோல்வியடைந்தது STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}கணினி சேமிப்பகத்தினை படிக்க இயலவில்லை STR_ERROR_GAME_SAVE_FAILED :{WHITE}ஆட்டத்தின் படிவு தோல்வியடைந்தது{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}கோப்பினை நீக்க இயலவில்லை STR_ERROR_GAME_LOAD_FAILED :{WHITE}ஆட்டம் பதிவேறுவது தோல்வியடைந்தது{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :உள்பிழை: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :உடைந்த பதிவுஆட்டம் - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :புதிய பதிப்பினால் பதிவுஆட்டம் உருவாக்கப்பட்டுள்ளது STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :கோப்பினை படிக்க இயலவில்லை STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :கோப்பில் எழுத இயலவில்லை STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :தகவல் முழுமை சரிபார்த்தல் தோல்வியடைந்தது STR_GAME_SAVELOAD_NOT_AVAILABLE :<கிடைக்கவில்லை> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}ஆட்டம் ட்ராம் துணையில்லாத பதிப்புடன் பதிவு செய்யப்பட்டது. ஆதலால் அனைத்து ட்ராம்களும் நீக்கப்பட்டுள்ளன. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}வரைபடம் உருவாக்குதல் முடக்கப்பட்டது...{}... நகரங்கள் அமைப்பதற்கு சரியான இடங்கள் இல்லை STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... இந்த திரைக்காட்சியில் எந்த நகரமும் இல்லை STR_ERROR_PNGMAP :{WHITE}PNG இலிருந்து நிலவெளியை பதிவேற்ற இயலவில்லை... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... கோப்பு கிடைக்கவில்லை STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... பட வகையினை மாற்ற இயலவில்லை. 8 அல்லது 24-பிட் PNG படம் வேண்டும் STR_ERROR_PNGMAP_MISC :{WHITE}... எங்கேயோ தவறு நடந்துவிட்டது (பொதுவாக பிழையான கோப்பாக தான் இருக்கும்) STR_ERROR_BMPMAP :{WHITE}BMP இலிருந்து நிலவெளியை பதிவேற்ற இயலவில்லை... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... பட வகையை மாற்ற இயலவில்லை STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... படம் ரொம்ப பெரியதாக உள்ளது. STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}ஒப்பளவு எச்சரிக்கை STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}மூல வரைபடத்தின் அளவினை மாற்றுவது விருப்பத்தக்கது இல்லை. தொடரட்டுமா? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}ஒரு பின்தங்கு ஒலி கட்டு மட்டுமே கிடைத்தது. ஒலிகள் கேட்க வேண்டுமென்றால் கோப்பு பதிவிறக்க அமைப்பின் மூலம் நிறுவவும் # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}பெரிய திரைப்பிடிப்பு STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}திரைப்பிடிப்பின் அளவு {COMMA} x {COMMA} பிக்சல்கள். திரைப்பிடிப்பு எடுக்க சிறிது நேரமாகும். தொடர விருப்பமா? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}திரைபிடிப்பு வெற்றிகரமாக '{STRING}' என பதிவு செய்யப்பட்டது STR_ERROR_SCREENSHOT_FAILED :{WHITE}திரைபிடிப்பு தோல்வியடைந்தது! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}தகவல் STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW} {STRING} இலிருந்து ஒரு தகவல் # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}படத்தின் எல்லையினைத் தாண்டி உள்ளது STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}படத்தின் எல்லைக்கு மிக அருகாமையில் உள்ளது STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}பணம் பத்தாது - {CURRENCY_LONG} தேவைப்படுகிறது STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}தட்டையான நிலப்பகுதி வேண்டும் STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}நிலம் தவறான பக்கத்தில் சரிந்துள்ளது STR_ERROR_CAN_T_DO_THIS :{WHITE}இதைச் செய்ய இயலாது... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}முதலில் கட்டடம் இடிக்கப்பட வேண்டும் STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}இந்தப் பகுதியினை காலியாக்க முடியாது ... STR_ERROR_SITE_UNSUITABLE :{WHITE}... இடம் ஒத்துவராது STR_ERROR_ALREADY_BUILT :{WHITE}... ஏற்கனவே கட்டப்பட்டது STR_ERROR_OWNED_BY :{WHITE}... {STRING} இற்கு சொந்தமானது STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... பகுதி மற்றோரு நிறுவனத்திற்கு சொந்தமானதாகும் STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... நிலத்தோற்ற மாற்ற வரம்பு எட்ட பட்டுள்ளது STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... மாற்ற வரம்பு எட்ட பட்டுள்ளது STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... மரம் நடுவதற்கு எல்லை முடிந்தது STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}பெயர் பயன்படுத்தாததாக இருக்க வேண்டும் STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} வழியில் உள்ளது STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}ஆட்டம் தற்காலிகமாக நிறுத்தப்பட்டிருக்கும்பொழுது இதை செய்ய இயலாது # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} நகராட்சி இதை அனுமதிக்க மறுக்கிறது STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} நகராட்சி மேலும் ஒரு விமான நிலையத்தினை கட்டுவதற்கான அனுமதியை மறுத்தது. STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} ஒலி இரைச்சல் பிரச்சனைகளால் விமான நிலையம் கட்டுவதற்கு நகராட்சி அனுமதி மறுக்கிறது STR_ERROR_BRIBE_FAILED :{WHITE}உங்களின் லஞ்சம் லஞ்ச ஒழிப்புத் துறையிடம் மாட்டிக்கொண்டது # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}இங்கே நிலத்தினை ஏற்ற முடியாது... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}இங்கு நிலத்தின் ஆழத்தை குறைக்க முடியாது... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}இங்கு நிலத்தினை சமம்மாக்க முடியாது... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}தோண்டுதல் சுரங்கப்பாதையிற்கு தீங்கு விளைவிக்கும் STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ஏற்கனவே கடல்மட்டத்தில் உள்ளது STR_ERROR_TOO_HIGH :{WHITE}... அதிக உயரம் STR_ERROR_ALREADY_LEVELLED :{WHITE}... ஏற்கனவே தட்டையாக உள்ளது # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}நிறுவனத்தின் பெயரை மாற்ற இயலாது... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}மேலாளரின் பெயரினை மாற்ற இயலாது... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... அதிகபட்ச கடன் அளவு {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}மேலும் கடன் வாங்க இயலாது... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... திரும்பிச் செலுத்த எந்தக் கடனும் இல்லை STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} தேவைப்படுகிறது STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}கடனினைத் திருப்பி கட்ட இயலாது... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}வங்கியிலிருந்து கடனாக பெறப்பட்டத் தொகையினை தங்களால் கொடுக்க இயலாது... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}நிறுவனத்தினை வாங்க இயலாது... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}நிறுவன தலைமையிடத்தினை கட்ட இயலாது... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}இந்த நிறுவனத்தின் 25 சதவிகித பங்குகளை வாங்க இயலாது... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}இந்த நிறுவனத்தின் 25 சதவிகித பங்குகளை விற்க இயலாது... STR_ERROR_PROTECTED :{WHITE}பங்குகளை பரிமாற்றம் செய்யும் அளவிற்கு இந்த நிறுவனம் இன்னும் வளரவில்லை... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}எந்த நகரத்தினையும் கட்ட இயலாது STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}நகரத்தின் பெயரினை மாற்ற இயலாது... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}நகரத்தினை இங்கே நிறுவ இயலாது... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}நகரத்தினை விரிவாக்க இயலாது... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... படத்தின் எல்லைக்கு மிக அருகாமையில் உள்ளது STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... மற்றொரு நகரத்திற்கு மிகவும் அருகாமையில் உள்ளது STR_ERROR_TOO_MANY_TOWNS :{WHITE}... மிகவும் அதிகமான நகரங்கள் STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... படத்தில் வேறு வெற்றுஇடம் இல்லை STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}நகராட்சி சாலைகளை அமைக்காது. இந்த அமைப்பினை மாற்ற செல்க சிறப்பு அமைப்புகள் -> பொருளாதாரம் -> நகரங்கள் STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}சாலைப் பணிகள் நடந்துக் கொண்டிருக்கின்றன STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}இந்த நகரத்தினை நீக்க இயலாது ...{} ஒரு நிலையமோ அல்லது பணிமனையோ நகரத்தின் பெயரில் உள்ளது மற்றும் நகரத்திற்குச் சொந்தமான கட்டங்களை நீக்க முடியாது. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... நகரத்தின் நடுவில் சிலையினை அமைக்க தகுந்த இடமில்லை # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... மிகவும் அதிகமான தொழிற்சாலைகள் STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}தொழிற்சாலைகளை உருவாக்க முடியவில்லை... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}இங்கே {STRING} கட்ட இயலாது... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}இந்த வகையான தொழிற்சாலைகளை இங்கு கட்ட இயலாது... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... மற்றொரு தொழிற்சாலையின் அருகாமையில் உள்ளது STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... முதலில் நகரம் நிருவப்பட வேண்டும் STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... ஒரு நகரத்திற்கு ஒன்று தான் அனுமதிக்கப்படும் STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... 1200 மக்கள்தொகை உள்ள நகரங்களில் மட்டுமே கட்ட இயலும் STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... மழைக்காட்டு பகுதிகளில் மட்டுமே கட்ட இயலும் STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... பாலைவனப்பகுதிகளில் மட்டுமே இதனை கட்ட முடியும் STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... நகரங்களில் மட்டுமே இதனை கட்ட முடியும் STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... நகரங்களின் நடுவில் மட்டுமே கட்ட முடியும் STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... தாழ்வான பகுதிகளில் மட்டுமே இதனை கட்ட முடியும் STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... படங்களின் எல்லைகளில் மட்டுமே இட முடியும் STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... பனி-கோடிற்கு மேலேயே காடுகளை நட முடியும் STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... பனி-கோடின் மேலே மட்டுமே கட்ட முடியும் STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... பனி-கோடின் கீழே மட்டுமே கட்ட முடியும் # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}இங்கே இரயில் நிலையம் கட்ட முடியாது... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}பேருந்து நிலையத்தினை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}லாரி நிலையத்தினை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}பயணிகள் ட்ராம் நிலையத்தினை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}சரக்கு ட்ராம் நிலையத்தினை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}இங்கே துறைமுகத்தினை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}இங்கே விமான நிலையத்தை கட்ட இயலாது... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}ஏற்கனவே இருக்கும் நிலையத்துடன் ஒட்டி உள்ளது STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... நிறுத்தம் மிகவும் விரிந்துள்ளது STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}மிக அதிகமான நிறுத்தங்கள்/ஏற்றும் பகுதிகள் STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}மிக அதிகமான இரயில்வே நிலைய பாகங்கள் STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}மிக அதிகமான பேருந்து நிறுத்தங்கள் STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}மிக அதிகமான லாரி நிலையங்கள் STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}மற்றொரு நிலையத்திற்கு மிக அருகில் உள்ளது STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}மற்றொரு துறைமுகத்திற்கு மிக அருகில் உள்ளது STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}மற்றொரு விமான நிலையத்தின் அருகாமையில் உள்ளது STR_ERROR_CAN_T_RENAME_STATION :{WHITE}நிறுத்தத்தின் பெயரை மாற்ற இயலாது... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... இது நகரத்திற்கு சொந்தமான சாலையாகும் STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... சாலை தப்பான திசையை நோக்கி உள்ளது STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... வழித்தட நிறுத்தங்களில் முனைகள் அமைக்க இயலாது STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... வழித்தட நிறுத்தங்களில் சந்திப்புகள் அமையாது # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}நிறுத்தத்தின் பகுதியை நீக்க இயலாது... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}முதலில் இரயில் நிலையம் நீக்கப்பட வேண்டும் STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}பேருந்து நிறுத்தத்தை நீக்க இயலாது... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}லாரி நிலையத்தினை நீக்க முடியாது... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}பயணிகள் ட்ராம் நிலையத்தினை நீக்க இயலாது... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}சரக்கு ட்ராம் நிலையத்தினை நீக்க இயலாது... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}முதலில் சாலை நிறுத்தத்தினை நீக்கு STR_ERROR_THERE_IS_NO_STATION :{WHITE}...தொடர்வண்டி நிலையம் இல்லை STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}முதலில் இரயில்வே நிலையத்தினை நீக்கு STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}முதலில் பேருந்து நிலையத்தினை நீக்கு STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}முதலில் லாரி நிலையத்தினை நீக்கு STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}முதலில் பயணிகள் ட்ராம் நிலையத்தினை நீக்கு STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}முதலில் ட்ராம் சரக்கு நிலையத்தினை நீக்கு STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}முதலில் கப்பல்துறை அழிக்கப்பட வேண்டும் STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}முதலில் விமானநிலையத்தினை நீக்க வேண்டும் # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}ஏற்கனவே இருக்கும் வழிப்புள்ளியுடன் ஒட்டியுள்ளது STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}மற்றொரு பாதைப்புள்ளியின் அருகில் உள்ளது STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}இங்கே இரயில்வே பாதைப்புள்ளியினைக் கட்ட இயலாது... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}மிதவையினை இங்கே வைக்க இயலாது... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}பாதைப்புள்ளியின் பெயரினை மாற்ற இயலாது... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}இந்த இரயில்வே பாதைப்புள்ளியினை நீக்க இயலாது... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}முதலில் இரயில்வே பாதைப்புள்ளியினை நீக்க வேண்டும் STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... மிதவை வழியில் உள்ளது STR_ERROR_BUOY_IS_IN_USE :{WHITE}... மிதவையினை மற்றொரு நிறுவனம் பயன்படுத்துகின்றது! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}இங்கே இரயில்வே பணிமனையினைக் கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}இங்கே சாலை வாகன பணிமனையினைக் கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}இங்கே ட்ராம் வாகன பணிமனையினைக் கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}இங்கே கப்பல் பணிமனையினைக் கட்ட இயலாது... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}பணிமனையின் பெயரினை மாற்ற இயலாது... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... பணிமனையின் உள்ளே நிறுத்தப்பட்டிருக்க வேண்டும் STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... பணிமனையின் உள்ளே நிறுத்தப்பட்டிருக்க வேண்டும் STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... பணிமனையின் உள்ளே நிறுத்தப்பட்டிருக்க வேண்டும் STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... பணிமனையின் உள்ளே நிறுத்தப்பட்டிருக்க வேண்டும் STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}பணிமனையின் உள்ளே நிறுத்தப்பட்ட பின்னரே இரயில்களை மாற்றியமைக்க முடியும் STR_ERROR_TRAIN_TOO_LONG :{WHITE}iஇரயில் மிக நீளமாக உள்ளது STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}வாகனத்தின் திசையை மாற்ற முடியாது... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... பல்வேறு பாகங்களினைக் கொண்டுள்ளது STR_ERROR_INCOMPATIBLE_RAIL_TYPES :ஒத்துவரா இரயில் வகைகள் STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}வாகனத்தை நகர்த்த முடியாது... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}பின் பொறி தனது முன் பொறியினையே தொடரும் STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}பணிமனைக்கு செல்ல வழி இல்லை STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}பணிமனையை கண்டுபிடிக்க முடியவில்லை STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :தவறான பணிமனை வகை # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} மாற்றியமைக்கப்பட்ட பின் இரயில் மிக நீளமாக உள்ளது STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}எந்த தானியங்கிமாற்றல்/புதுப்பித்தல் விதிமுறைகளும் செயல்படுத்தப்படவில்லை STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(பண எல்லை) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}இருவேறு இரயில்வே தட வகைகளை இணைக்க இயலாது STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}முதலில் சிக்னல்களை எடுக்க வேண்டும் STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}தக்க இரயில் தடம் ஏதும் இல்லை STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}முதலில் இரயில்வே தடத்தினை எடுக்க வேண்டும் STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}சாலை ஒருவழிப்பாதை அல்லது மறிக்கப்பட்டுள்ளது STR_ERROR_CROSSING_DISALLOWED :{WHITE}இந்த வகையிலான இரயில்களுக்கு இருப்புப்பாதை சந்திக் கடவுகள் கிடையாது STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}இங்கே சிக்னல்களை நிறுவ இயலாது... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}இங்கே இரயில்வே தடங்களை பதிய முடியாது... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}இங்கிருந்து இரயில்வே தடங்களை அகற்ற முடியாது... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}இங்கிருக்கும் சிக்னல்களை அகற்ற முடியாது... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}இங்கே சிக்னல்களை மாற்ற முடியாது... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}...தண்டவாளம் இல்லை STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}...சிக்னல்கள் இல்லை STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}இங்கே இரயில் வகைகளை மாற்ற இயலாது... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}முதலில் சாலையை அகற்ற வேண்டும் STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... ஒருவழிப்பாதைகளில் சந்திப்புகள் அமையாது STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}இங்கே சாலை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}இங்கே ட்ரேம்வே கட்ட இயலாது... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}இங்கே சாலையை அகற்ற இயலாது... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}இங்கிருந்து ட்ராம்வேயினை நீக்க முடியாது... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...சாலை இல்லை STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...ட்ராம் வழி இல்லை # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}இங்கே கால்வாய்களை கட்ட இயலாது... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}இங்கே லாக்குகளைக் கட்ட இயலாது... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}இங்கே ஆறுகளை அமைக்க இயலாது... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... தண்ணீரின் மேலே தான் கட்டப்பட வேண்டும் STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... தண்ணீரில் கட்ட முடியாது STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... கடலில் கட்ட முடியாது STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... கால்வாயின் மேல் கட்ட முடியாது STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ஆற்றின் மேல் கட்ட முடியாது. STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}முதலில் கால்வாய் அழிக்கப்பட வேண்டும் STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}தண்ணீர்ப் பாதையினை கட்ட இயலாது... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... மரம் ஏற்கனவே உள்ளது STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... மரம் வகைக்கு தவறான தரை STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}இங்கே மரங்களை நட இயலாது... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}இங்கே பாலங்களை கட்ட இயலாது... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}முதலில் பாலம் அழிக்கப்பட வேண்டும் STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}ஆரம்பித்த இடத்திலிருந்தே முடியக் கூடாது STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}பாலத்தின் முனைகள் ஒரே உயரத்தில் இல்லை STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}பாலம் மிகவும் உயரம் மிகவும் குறைவாக உள்ளது STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}ஆரம்பம் மற்றும் முடிவு ஒரே கோடில் இருக்க வேண்டும் STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... பாலத்தின் முடிவுகள் இரண்டும் நிலத்திலேயே இருக்க வேண்டும் STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... பாலம் மிக நீளமாக உள்ளது STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}பாலம் படத்தின் எல்லையினைத் தாண்டி முடியும் # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}இங்கே சுரங்கப்பாதையினை கட்ட இயலாது... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}சுரங்கத்தின் நுழைவுவாயிலிற்கு தகுந்த இடம் இது அல்ல STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}முதலில் சுரங்கப்பாதை அழிக்கப்பட வேண்டும் STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}மற்றொரு சுரங்கம் வழியில் உள்ளது STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}சுரங்கம் படத்தின் எல்லையை தாண்டி முடியும் STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}சுரங்கத்தின் மற்றொரு முனையில் நிலத்தினை மாற்றியமைக்க இயலவில்லை STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... சுரங்கம் வெகு நீளம் # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... மிக அதிகமான பொருட்கள் STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}பொருளினை கட்ட இயலாது... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}பொருள் வழியில் உள்ளது STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... நிறுவனத்தின் தலைமையிடம் வழியில் உள்ளது STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}இந்த நிலப் பகுதியினை வாங்க முடியாது... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... இது ஏற்கனவே உங்களிடம் உள்ளது! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}குழுவை உருவாக்க முடியாது... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}இந்தக் குழுவினை நீக்க முடியாது... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}குழுவின் பெயரினை மாற்ற இயலாது... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}இந்தக் குழுவில் உள்ள அனைத்து வாகனங்களையும் நீக்க இயலாது... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}வாகனத்தினை இந்தக் குழுவில் இணைக்க இயலாது... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}பகிரப்பட்ட வாகனத்தினை இந்தக் குழுவில் இணைக்க இயலாது... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}இரயில் வழியில் உள்ளது STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}சாலை வாகனம் வழியில் உள்ளது STR_ERROR_SHIP_IN_THE_WAY :{WHITE}கப்பல் வழியில் உள்ளது STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}விமானம் வழியில் உள்ளது STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}இரயிலினை மாற்றியமைக்க இயலாது... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}சாலை வாகனத்தை மாற்றியமைக்க இயலாது... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}கப்பலை மாற்றியமைக்க இயலாது... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}விமானத்தை மாற்றியமைக்க இயலாது... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}இரயிலின் பெயரினை மாற்ற இயலவில்லை... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}சாலை வாகனத்தின் பெயரை மாற்ற இயலாது... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}கப்பலை பெயரிட முடியாது... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}விமானத்தை பெயரிட முடியாது... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}இரயிலை நிறுத்த/கிளப்ப இயலாது... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}சாலை வாகனத்தை நிறுத்த/கிளப்ப இயலாது... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}கப்பலை நிறுத்த/கிளப்ப இயலாது... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}விமானத்தை நிறுத்த/கிளப்ப இயலாது... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}இரயிலை பணிமனைக்கு அனுப்ப இயலாது... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}சாலை வாகனத்தை பணிமனைக்கு அனுப்ப இயலாது... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}கப்பலை பணிமனைக்கு அனுப்ப இயலாது... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}விமானத்தை பணிமனைக்கு அனுப்ப இயலாது... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}இரயில்வே வாகனத்தை வாங்க முடியாது... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}சாலை வாகனத்தை வாங்க முடியாது... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}கப்பலை வாங்க முடியாது... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}விமானத்தை வாங்க முடியாது... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}இரயில்வே வாகன வகையின் பெயரை மாற்ற முடியாது... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}சாலை வாகன வகையின் பெயரை மாற்ற முடியாது... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}கப்பல் வகையின் பெயரை மாற்ற முடியாது... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}விமான வகையின் பெயரை மாற்ற முடியாது... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}இரயில்வே வாகனத்தை விற்க இயலாது... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}சாலை வாகனத்தை விற்க இயலாது... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}கப்பலை விற்க இயலாது... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}விமானத்தை விற்க இயலாது... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}வாகனம் கிடைக்காது STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}வாகனம் கிடைக்காது STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}கப்பல் கிடைக்காது STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}விமானம் கிடைக்காது STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}ஆட்டத்தில் நிறைய வாகனங்கள் உள்ளன STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}சர்வீஸ் இடைவேளியினை மாற்ற இயலாது... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... வாகனம் அழிக்கப்பட்டுள்ளது STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}எந்த வாகனங்களும் தற்போது கிடையாது STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}தங்களது NewGRF அமைப்பினை மாற்றவும் STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}தற்போது எந்த வாகனங்களும் கிடையாது STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}{DATE_SHORT} இற்கு பிறகு புதிய ஆட்டம் ஒன்றினைத் தொடங்கு அல்லது NewGRF ஒன்றினைப் பயன்படுத்தி பிற்கால வாகனங்களைப் பயன்படுத்து # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}இரயில் சிக்னலைத் தாண்டிச் செல்ல முடியாது... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}இரயில் செல்லும் திசையினை திருப்ப முடியாது... STR_ERROR_TRAIN_START_NO_POWER :இரயில கிளம்ப ஆற்றல் இல்லை STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}சாலை வாகினத்தினை வழிமாற்ற இயலாது... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}விமானம் பறந்துக் கொண்டிருக்கிறது # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}மேலும் கட்டளைகள் கொடுக்க இடம் இல்லை STR_ERROR_TOO_MANY_ORDERS :{WHITE}மிகவும் அதிகமான கட்டளைகள் STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}புதிய கட்டளையினை புகுத்த இயலாது... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}இந்த கட்டளையை நீக்க முடியாது... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}இந்த கட்டளையை மாற்ற இயலாது... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}இந்த கட்டளையை நகர்த்த முடியாது... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}தற்போதைய கட்டளையை தாண்ட இயலாது... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}தேர்ந்தெடுக்கப்பட்ட கட்டளையை தாண்டி செல்ல இயலாது... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... அனைத்து நிருத்தங்களுக்கும் வாகனம் செல்ல இயலாது STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... அந்த நிறுத்தத்திற்கு வாகனம் செல்லாது STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... இந்த கட்டளையை பகிர்ந்துகொள்ளும் வாகனம் அந்த நிறுத்தத்திற்கு செல்ல இயலாது STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}இந்த கட்டளைப் பட்டியலை பகிர முடியாது... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}கட்டளைப் பட்டியலினை பகிர்வதை நிறுத்த இயலாது... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}கட்டளைப் பட்டியலை பிரதி செய்ய இயலாது... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... முந்தைய இடத்திலிருந்து நெடுந்தூரம் உள்ளது STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... விமானத்தால் அதிக தூரம் பறக்க இயலாது # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}வாகனத்தை கால அட்டவணை செய்ய இயலாது... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}வாகனங்கள் நிலையங்களில் மட்டுமே காத்திருக்க முடியும் STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}இந்த வாகனம் இந்த இரயில் நிலையத்தில் நிற்கவில்லை # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... அதிகமான குறிகள் STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}குறியீட்டினை இங்கே நட இயலாது... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}குறியீட்டின் பெயரை மாற்ற இயலாது... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}குரியீடினை நீக்க முடியாது... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :A simulation game based on Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள். STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள். STR_BASEGRAPHICS_WIN_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள். STR_BASESOUNDS_DOS_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள். STR_BASESOUNDS_WIN_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள். STR_BASESOUNDS_NONE_DESCRIPTION :ஒலிகள் இல்லாத ஒலி தொகுப்பு. STR_BASEMUSIC_WIN_DESCRIPTION :அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை. STR_BASEMUSIC_NONE_DESCRIPTION :இசை இல்லாத இசைத்தொகுப்பு. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :உயரமான அலுவலுக கட்டம் STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :அலுவலுக கட்டம் STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :சிறிய பிளாட்டுகள் கட்டம் STR_TOWN_BUILDING_NAME_CHURCH_1 :தேவாலயம் STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :பெரிய அலுவலுக கட்டம் STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :நகர வீடுகள் STR_TOWN_BUILDING_NAME_HOTEL_1 :ஹோட்டல் STR_TOWN_BUILDING_NAME_STATUE_1 :சிலை STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :ஊற்று STR_TOWN_BUILDING_NAME_PARK_1 :பூங்கா STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :அலுவலுக கட்டம் STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :கடைகள் மற்றும் அலுவலகங்கள் STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :நவீன அலுவலக கட்டடம் STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :கிடங்கு STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :அலுவலுக கட்டம் STR_TOWN_BUILDING_NAME_STADIUM_1 :மைதானம் STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :பழைய வீடுகள் STR_TOWN_BUILDING_NAME_COTTAGES_1 :குடிசைகள் STR_TOWN_BUILDING_NAME_HOUSES_1 :வீடுகள் STR_TOWN_BUILDING_NAME_FLATS_1 :பிளாட்டுகள் STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :உயரமான அலுவலுக கட்டம் STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :கடைகள் மற்றும் அலுவலகங்கள் STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :கடைகள் மற்றும் அலுவலகங்கள் STR_TOWN_BUILDING_NAME_THEATER_1 :திரையரங்கம் STR_TOWN_BUILDING_NAME_STADIUM_2 :மைதானம் STR_TOWN_BUILDING_NAME_OFFICES_1 :அலுவலகங்கள் STR_TOWN_BUILDING_NAME_HOUSES_2 :வீடுகள் STR_TOWN_BUILDING_NAME_CINEMA_1 :சினிமா STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :வணிக மையம் STR_TOWN_BUILDING_NAME_IGLOO_1 :இக்லூ STR_TOWN_BUILDING_NAME_TEPEES_1 :டெபீஸ் STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :தேனீர் விருந்து வீடு STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :பிக்கி வங்கி ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :நிலக்கரி சுரங்கம் STR_INDUSTRY_NAME_POWER_STATION :மின் உற்பத்தி நிலையம் STR_INDUSTRY_NAME_SAWMILL :மர மில் STR_INDUSTRY_NAME_FOREST :காடு STR_INDUSTRY_NAME_OIL_REFINERY :எண்ணெய் சுத்திகரிப்பு நிலையம் STR_INDUSTRY_NAME_OIL_RIG :எண்ணெய்க் கிணறு STR_INDUSTRY_NAME_FACTORY :தொழிற்சாலை STR_INDUSTRY_NAME_PRINTING_WORKS :அச்சகம் STR_INDUSTRY_NAME_STEEL_MILL :எஃகு மில் STR_INDUSTRY_NAME_FARM :பண்ணை STR_INDUSTRY_NAME_COPPER_ORE_MINE :செப்புத் தாது சுரங்கம் STR_INDUSTRY_NAME_OIL_WELLS :எண்ணெய்க் கிணறுகள் STR_INDUSTRY_NAME_BANK :வங்கி STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :உணவு பதப்படுத்தும் நிலையம் STR_INDUSTRY_NAME_PAPER_MILL :காகித மில் STR_INDUSTRY_NAME_GOLD_MINE :தங்கச் சுரங்கம் STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :வங்கி STR_INDUSTRY_NAME_DIAMOND_MINE :வைரச் சுரங்கம் STR_INDUSTRY_NAME_IRON_ORE_MINE :இரும்புத் தாது சுரங்கம் STR_INDUSTRY_NAME_FRUIT_PLANTATION :பழம் பயிரிடுதல் STR_INDUSTRY_NAME_RUBBER_PLANTATION :ரப்பர் பயிரிடுதல் STR_INDUSTRY_NAME_WATER_SUPPLY :நீர் உற்பத்தி STR_INDUSTRY_NAME_WATER_TOWER :தண்ணீர்த் தொட்டி STR_INDUSTRY_NAME_FACTORY_2 :தொழிற்சாலை STR_INDUSTRY_NAME_FARM_2 :பண்ணை STR_INDUSTRY_NAME_LUMBER_MILL :மர மில் STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :பஞ்சு மிட்டாய் காடு STR_INDUSTRY_NAME_CANDY_FACTORY :இனிப்பு தொழிற்சாலை STR_INDUSTRY_NAME_BATTERY_FARM :மின்கல பண்ணை STR_INDUSTRY_NAME_COLA_WELLS :கோலா கிணறுகள் STR_INDUSTRY_NAME_TOY_SHOP :விளையாட்டுப் பொருள் கடை STR_INDUSTRY_NAME_TOY_FACTORY :விளையாட்டுப் பொருள் தொழிற்சாலை STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :பிளாஸ்டிக் ஊற்றுகள் STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :குளிர்பான தொழிற்சாலை STR_INDUSTRY_NAME_BUBBLE_GENERATOR :குமிழி உற்பத்தி STR_INDUSTRY_NAME_TOFFEE_QUARRY :மிட்டாய் சுரங்கம் STR_INDUSTRY_NAME_SUGAR_MINE :சர்க்கரை சுரங்கம் ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :பெயரிடாதது STR_SV_TRAIN_NAME :இரயில் {COMMA} STR_SV_ROAD_VEHICLE_NAME :சாலை வாகனம் {COMMA} STR_SV_SHIP_NAME :கப்பல் {COMMA} STR_SV_AIRCRAFT_NAME :விமானம் {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} வடக்கு STR_SV_STNAME_SOUTH :{STRING} தெற்கு STR_SV_STNAME_EAST :{STRING} கிழக்கு STR_SV_STNAME_WEST :{STRING} மேற்கு STR_SV_STNAME_CENTRAL :{STRING} நடு STR_SV_STNAME_TRANSFER :{STRING} மாற்றல் STR_SV_STNAME_HALT :{STRING} நிறுத்தம் STR_SV_STNAME_VALLEY :{STRING} பள்ளத்தாக்கு STR_SV_STNAME_HEIGHTS :{STRING} உயரங்கள் STR_SV_STNAME_WOODS :{STRING} காடு STR_SV_STNAME_LAKESIDE :{STRING} ஏரிக்கரை STR_SV_STNAME_EXCHANGE :{STRING} பரிமாற்றம் STR_SV_STNAME_AIRPORT :{STRING} விமான நிலையம் STR_SV_STNAME_OILFIELD :{STRING} எண்ணெய் வயல் STR_SV_STNAME_MINES :{STRING} சுரங்கங்கள் STR_SV_STNAME_DOCKS :{STRING} துறைமுகங்கள் STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} இணைப்பு STR_SV_STNAME_SIDINGS :{STRING} சைடிங்குகள் STR_SV_STNAME_BRANCH :{STRING} பிரிவு STR_SV_STNAME_UPPER :மேல் {STRING} STR_SV_STNAME_LOWER :கீழ் {STRING} STR_SV_STNAME_HELIPORT :{STRING} ஹெலிபோர்ட் STR_SV_STNAME_FOREST :{STRING} காடு STR_SV_STNAME_FALLBACK :{STRING} நிலையம் #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :கிர்பி பால் டேன்க் (நீராவி) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :பிலாடிபுட் சூ-சூ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :பவர்னாட் சூ-சூ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :மைட்டிமூவர் சூ-சூ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :பிலாடிபுட் டீசல் STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :பவர்னாட் டீசல் STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :வில்ஸ் 2-8-0 (நீராவி) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :சனே 'ஜூபிலி' (நீராவி) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :கின்சு 'அ4' (நீராவி) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (நீராவி) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :மேன்லீ-மாரேல் DMU (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'டாஷ்' (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/ஹென்றி '25' (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :பிலாஸ் '47' (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :சென்ட்டென்னியல் (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :கெல்லிங் 3100 (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :டர்னர் டர்போ (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (டீசல்) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'ஆசிய நட்சத்திரம்' (மின்சார) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :பயணிகள் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :அஞ்சல் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :நிலக்கரி பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :எண்ணெய் வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :பண்ணை பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :சரக்கு பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :தானிய பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :மர பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :இரும்புத் தாது பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :எஃகு பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :உறுதிபடுத்தப்பட்ட பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :உணவுப் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :காகித பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :செப்பு தாது பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :தண்ணீர் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :பழ பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :இறப்பர் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :சர்க்கரை பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :பஞ்சு மிட்டாய் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :மிட்டாய் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :குமிழிகள் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :கோலா பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :இனிப்புப் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :விளையாட்டுப் பொருள் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :மின்கல பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :குளிர்பான பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :பிளாஸ்டிக் பெட்டி STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'மில்லேனியம் Z1' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :வீஸவொவ் Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :பயணிகள் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :அஞ்சல் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :நிலக்கரி பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :எண்ணெய் வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :பண்ணை பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :சரக்குப் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :தானிய பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :மர பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :இரும்புத் தாது பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :எஃகு பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :உறுதிபடுத்தப்பட்ட பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :உணவு பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :காகித பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :செப்புத் தாது பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :தண்ணீர் வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :பழ வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :ரப்பர் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :சர்க்கரைப் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :பஞ்சு மிட்டாய் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :மிட்டாய் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :குமிழி வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :கோலா பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :இனிப்பு வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :விளையாட்டுப்பொருள் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :மின்கல வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :குளிர்பான வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :பிளாஸ்டிக் பெட்டி STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :நிலை1 'லெவியாதன்' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :நிலை2 'சைக்கலாப்ஸ்' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :நிலை3 'பெகசஸ்' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :நிலை4 'கைமேரா' (மின்சார) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :வீஸவொவ் ராக்கெட்டீயர் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :பயணிகள் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :அஞ்சல் வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :நிலக்கரி வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :எண்ணெய் லாரி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :பண்ணை வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :சரக்கு வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :தானிய வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :மர வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :இரும்புத் தாது வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :எஃகு வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :உறுதிப்படுத்தப்பட்ட வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :உணவு வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :காகித லாரி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :செம்புத் தாது வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :தண்ணீர் லாரி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :பழ வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :ரப்பர் வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :சர்க்கரை வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :பஞ்சு மிட்டாய் வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :மிட்டாய் பெட்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :குமிழி வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :கோலா வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :இனிப்பு வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :விளையாட்டுப்பொருள் வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :மின்கல வண்டி STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :குளிர்பான வாகனம் STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :பிளாஸ்டிக் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS ரீகல் பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :ஹியர்போர்ட் லியோபார்ட் பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :ப்பாஸ்டர் பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :பாஸ்டர் MkII பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :பிலோடிபுட் MkI பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :பிலோடிபுட் MkII பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :பிலோடிபுட் MkIII பேருந்து STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :பாலாக்ஃ நிலக்கரி வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl நிலக்கரி வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW நிலக்கரி வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS அஞ்சல் வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :ரேய்னார்டு அஞ்சல் வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :பெர்ரி அஞ்சல் வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :மைட்டிமூவர் அஞ்சல் வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :பவர்நாட் அஞ்சல் வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :வீஸவொவ் அஞ்சல் வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :விட்கோம்ப் எண்ணெய் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :பாஸ்டர் எண்ணெய் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :பெர்ரி எண்ணெய் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :தால்பாட் பண்ணை வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl பண்ணை வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :பாஸ்டர் பண்ணை வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :பாலாக்ஃ சரக்கு வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :க்ரேய்க் சரக்கு வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :கொஸ் சரக்கு வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :ஹியர்போர்ட் தானிய வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :தாமஸ் தானிய வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :கொஸ் தானிய வண்டி STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :விட்கோம்ப் மர ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :பாஸ்டர் மர ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :மோர்லாந்து மர ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS இரும்புத் தாது ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl இரும்புத் தாது ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :சிப்பி இரும்புத் தாது ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :பாலாக்ஃ எஃகு லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl எஃகு லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :கெல்லிங் எஃகு பாரஊர்தி STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :பாலொகஃ உறுதிப்படுத்தப்பட்ட ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl உறுதிப்படுத்தப்பட்ட ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :பாஸ்டர் உறுதிப்படுத்தப்பட்ட ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :பாஸ்டர் உணவு வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :பெர்ரி உணவு வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :சிப்பி உணவு வாகனம் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl பேபர் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :பாலொகஃ காகித ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS பேபர் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS செம்பு ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl செம்பு ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :கொஸ் செம்பு ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl தண்ணீர் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :பாலொகஃ தண்ணீர் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS தண்ணீர் லாரி STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :பாலொகஃ பழ ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl பழ ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :கேஈல்லிங் பழ ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :பாலொகஃ இறப்பர் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl இறப்பர் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT இறப்பர் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :மைடீமூவ்ர் சக்கரை ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :பவர்னாட் சக்கரை ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :வீஸவொவ் சக்கரை ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :மைடீமூவ்ர் கோளா ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :பவர்னாட் கோளா ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :வீஸவொவ் கோளா ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :மைடீமூவ்ர் பன்ஜி மிட்டாய் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :பவர்னாட் பன்ஜி மிட்டாய் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :வீஸவொவ் பன்ஜி மிட்டாய் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :மைடீமூவ்ர் மிட்டாய் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :பவர்னாட் மிட்டாய் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :வீஸவொவ் மிட்டாய் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :மைடீமூவர் விளையாட்டுப்பொருள் கூடுந்து STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :பவர்னாட் விளையாட்டுப்பொருள் கூடுந்து STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :வீஸவொவ் விளையாட்டுப்பொருள் கூடுந்து STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :மைடீமூவ்ர் இனிப்பு ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :பவர்னாட் இனிப்பு ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :வீஸவொவ் இனிப்பு ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :மைடீமூவ்ர் மின்கல ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :பவர்னாட் மின்கல ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :வீஸவொவ் மின்கல ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :மைடீமூவ்ர் Fizzy Drink ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :பவர்னட் Fizzy Drink ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :வீஸவொவ் Fizzy Drink ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :மைடீமூவ்ர் பிளாஸ்டிக் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :பவர்னாட் பிளாஸ்டிக் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :வீஸவொவ் பிளாஸ்டிக் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :மைடீமூவ்ர் ப்பபுல் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :பவர்னாட் ப்பபுல் ட்ரக் STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :வீஸவொவ் ப்பபுல் ட்ரக் STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS எண்ணெய்க்கப்பல் STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. எண்ணெய்க்கப்பல் STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS பயணப்படகு STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP பயணப்படகு STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :பேக்வெல் 300 ஹோவர்கிராப்ட் STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :சுக்கெர்-சுக் பயணப்படகு STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :ஸெவர்ஸெஅக் பயணப்படகு STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :யேட் சரக்குக் கப்பல் STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :பேக்வெல் சரக்குக் கப்பல் STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :மைட்டிமூவர் சரக்குக் கப்பல் STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :பவர்னாட் சரக்குக் கப்பல் STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :சாம்ப்சன் யு52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :கோல்மேன் கவுன்ட் STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP டார்ட் STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :ஈஏட் ஹவ்கன் STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :பேக்வெல் கோட்ஸ்வால்டு LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :பேக்வெல் லுக்கேட் LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :பேக்வெல் லுக்கேட் LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :பேக்வெல் லுக்கேட் LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :பேக்வெல் லுக்கேட் LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :பேக்வெல் லுக்கேட் LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :ஈஏட் ஏரொஸ்பேஸ் YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :டார்வின் 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :டார்வின் 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :டார்வின் 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :டார்வின் 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :டார்வின் 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :டார்வின் 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :குரு கலக்சி STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :அர் டாக்சி அ21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :அர் டாக்சி அ31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :அர் டாக்சி அ32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :அர் டாக்சி அ33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :ஈஏட் ஏரொஸ்பேஸ் YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :டிங்௧ர் 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :அர் டாக்சி அ34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :ஈஏட் Z-ஸ்ஹட்டள் STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :கெல்லிங்க் கெ1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :கெல்லிங்க் கெ6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :கெல்லிங்க் கெ7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :டார்வின் 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP ஹைபர்டார்ட் 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :டிங்௧ர் 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :டிங்௧ர் 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :பிலோடிபுட் 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :பிலோடிபுட் 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :பிலாஷ்பேங் X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :சக்கர்விமானம் M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :பிலாஷ்பேங் விஸ்ஸர் STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :டீரைக்காரிஒ ஹெலிகாப்டர் STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :குரு X2 ஹெலிகாப்டர் STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :பவர்னாட் ஹெலிகாப்டர் ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} காவியக்கட்டை STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} காவியக்கட்டை #{COMMA} STR_FORMAT_COMPANY_NUM :(நிறுவனம் {COMMA}) STR_FORMAT_GROUP_NAME :குழு {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} பாதைப்புள்ளி STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} பாதைப்புள்ளி #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} ரயில் பணிமனை STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} ரயில் வண்டி டீபோ #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} வாகன டீபோ STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} வாகன டீபோ #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} கப்பல் நிலையம் STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} கப்பல் நிலையம் #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} விமான கூடாரம் STR_UNKNOWN_STATION :தெரியாத நிலையம் STR_DEFAULT_SIGN_NAME :அறிவிக்கை பலகை STR_COMPANY_SOMEONE :யாரோ ஒருவர் STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :பார்வையாளர், {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/english_US.txt0000644000000000000000000142307112246102561016211 0ustar rootroot##name English (US) ##ownname English (US) ##isocode en_US ##plural 0 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x0409 ##grflangid 0x00 # $Id: english_US.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(undefined string) STR_JUST_NOTHING :Nothing # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Passengers STR_CARGO_PLURAL_COAL :Coal STR_CARGO_PLURAL_MAIL :Mail STR_CARGO_PLURAL_OIL :Oil STR_CARGO_PLURAL_LIVESTOCK :Livestock STR_CARGO_PLURAL_GOODS :Goods STR_CARGO_PLURAL_GRAIN :Grain STR_CARGO_PLURAL_WOOD :Wood STR_CARGO_PLURAL_IRON_ORE :Iron Ore STR_CARGO_PLURAL_STEEL :Steel STR_CARGO_PLURAL_VALUABLES :Valuables STR_CARGO_PLURAL_COPPER_ORE :Copper Ore STR_CARGO_PLURAL_MAIZE :Maize STR_CARGO_PLURAL_FRUIT :Fruit STR_CARGO_PLURAL_DIAMONDS :Diamonds STR_CARGO_PLURAL_FOOD :Food STR_CARGO_PLURAL_PAPER :Paper STR_CARGO_PLURAL_GOLD :Gold STR_CARGO_PLURAL_WATER :Water STR_CARGO_PLURAL_WHEAT :Wheat STR_CARGO_PLURAL_RUBBER :Rubber STR_CARGO_PLURAL_SUGAR :Sugar STR_CARGO_PLURAL_TOYS :Toys STR_CARGO_PLURAL_CANDY :Candy STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COTTON_CANDY :Cotton Candy STR_CARGO_PLURAL_BUBBLES :Bubbles STR_CARGO_PLURAL_TOFFEE :Toffee STR_CARGO_PLURAL_BATTERIES :Batteries STR_CARGO_PLURAL_PLASTIC :Plastic STR_CARGO_PLURAL_FIZZY_DRINKS :Fizzy Drinks # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Passenger STR_CARGO_SINGULAR_COAL :Coal STR_CARGO_SINGULAR_MAIL :Mail STR_CARGO_SINGULAR_OIL :Oil STR_CARGO_SINGULAR_LIVESTOCK :Livestock STR_CARGO_SINGULAR_GOODS :Goods STR_CARGO_SINGULAR_GRAIN :Grain STR_CARGO_SINGULAR_WOOD :Wood STR_CARGO_SINGULAR_IRON_ORE :Iron Ore STR_CARGO_SINGULAR_STEEL :Steel STR_CARGO_SINGULAR_VALUABLES :Valuables STR_CARGO_SINGULAR_COPPER_ORE :Copper Ore STR_CARGO_SINGULAR_MAIZE :Maize STR_CARGO_SINGULAR_FRUIT :Fruit STR_CARGO_SINGULAR_DIAMOND :Diamond STR_CARGO_SINGULAR_FOOD :Food STR_CARGO_SINGULAR_PAPER :Paper STR_CARGO_SINGULAR_GOLD :Gold STR_CARGO_SINGULAR_WATER :Water STR_CARGO_SINGULAR_WHEAT :Wheat STR_CARGO_SINGULAR_RUBBER :Rubber STR_CARGO_SINGULAR_SUGAR :Sugar STR_CARGO_SINGULAR_TOY :Toy STR_CARGO_SINGULAR_CANDY :Candy STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COTTON_CANDY :Cotton Candy STR_CARGO_SINGULAR_BUBBLE :Bubble STR_CARGO_SINGULAR_TOFFEE :Toffee STR_CARGO_SINGULAR_BATTERY :Battery STR_CARGO_SINGULAR_PLASTIC :Plastic STR_CARGO_SINGULAR_FIZZY_DRINK :Fizzy Drink # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} passenger{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} of coal STR_QUANTITY_MAIL :{COMMA} bag{P "" s} of mail STR_QUANTITY_OIL :{VOLUME_LONG} of oil STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} of livestock STR_QUANTITY_GOODS :{COMMA} crate{P "" s} of goods STR_QUANTITY_GRAIN :{WEIGHT_LONG} of grain STR_QUANTITY_WOOD :{WEIGHT_LONG} of wood STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} of iron ore STR_QUANTITY_STEEL :{WEIGHT_LONG} of steel STR_QUANTITY_VALUABLES :{COMMA} bag{P "" s} of valuables STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} of copper ore STR_QUANTITY_MAIZE :{WEIGHT_LONG} of maize STR_QUANTITY_FRUIT :{WEIGHT_LONG} of fruit STR_QUANTITY_DIAMONDS :{COMMA} bag{P "" s} of diamonds STR_QUANTITY_FOOD :{WEIGHT_LONG} of food STR_QUANTITY_PAPER :{WEIGHT_LONG} of paper STR_QUANTITY_GOLD :{COMMA} bag{P "" s} of gold STR_QUANTITY_WATER :{VOLUME_LONG} of water STR_QUANTITY_WHEAT :{WEIGHT_LONG} of wheat STR_QUANTITY_RUBBER :{VOLUME_LONG} of rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} of sugar STR_QUANTITY_TOYS :{COMMA} toy{P "" s} STR_QUANTITY_SWEETS :{COMMA} bag{P "" s} of candy STR_QUANTITY_COLA :{VOLUME_LONG} of cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} of cotton candy STR_QUANTITY_BUBBLES :{COMMA} bubble{P "" s} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} of toffee STR_QUANTITY_BATTERIES :{COMMA} batter{P y ies} STR_QUANTITY_PLASTIC :{VOLUME_LONG} of plastic STR_QUANTITY_FIZZY_DRINKS :{COMMA} fizzy drink{P "" s} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}CL STR_ABBREV_MAIL :{TINY_FONT}ML STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}LV STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}WD STR_ABBREV_IRON_ORE :{TINY_FONT}OR STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}CO STR_ABBREV_MAIZE :{TINY_FONT}MZ STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}FD STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GD STR_ABBREV_WATER :{TINY_FONT}WR STR_ABBREV_WHEAT :{TINY_FONT}WH STR_ABBREV_RUBBER :{TINY_FONT}RB STR_ABBREV_SUGAR :{TINY_FONT}SG STR_ABBREV_TOYS :{TINY_FONT}TY STR_ABBREV_SWEETS :{TINY_FONT}SW STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}CF STR_ABBREV_BUBBLES :{TINY_FONT}BU STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}FZ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}ALL # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} passenger{P "" s} STR_BAGS :{COMMA} bag{P "" s} STR_TONS :{COMMA} tonne{P "" s} STR_LITERS :{COMMA} liter{P "" s} STR_ITEMS :{COMMA} item{P "" s} STR_CRATES :{COMMA} crate{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dark Blue STR_COLOUR_PALE_GREEN :Pale Green STR_COLOUR_PINK :Pink STR_COLOUR_YELLOW :Yellow STR_COLOUR_RED :Red STR_COLOUR_LIGHT_BLUE :Light Blue STR_COLOUR_GREEN :Green STR_COLOUR_DARK_GREEN :Dark Green STR_COLOUR_BLUE :Blue STR_COLOUR_CREAM :Cream STR_COLOUR_MAUVE :Mauve STR_COLOUR_PURPLE :Purple STR_COLOUR_ORANGE :Orange STR_COLOUR_BROWN :Brown STR_COLOUR_GREY :Gray STR_COLOUR_WHITE :White # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonne{P "" s} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter{P "" s} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filter string: STR_LIST_FILTER_OSKTITLE :{BLACK}Enter filter string STR_LIST_FILTER_TOOLTIP :{BLACK}Enter a keyword to filter the list for STR_TOOLTIP_SORT_ORDER :{BLACK}Select sorting order (descending/ascending) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Select sorting criteria STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Select filtering criteria STR_BUTTON_SORT_BY :{BLACK}Sort by STR_BUTTON_LOCATION :{BLACK}Location STR_BUTTON_RENAME :{BLACK}Rename STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Close window STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window STR_TOOLTIP_SHADE :{BLACK}Shade window - only show the title bar STR_TOOLTIP_DEBUG :{BLACK}Show NewGRF debug information STR_TOOLTIP_STICKY :{BLACK}Mark this window as uncloseable for the 'Close All Windows' key STR_TOOLTIP_RESIZE :{BLACK}Click and drag to resize this window STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toggle large/small window size STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list up/down STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll bar - scrolls list left/right STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Cancel STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Length: {NUM} STR_MEASURE_AREA :{BLACK}Area: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Length: {NUM}{}Height difference: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Height difference: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Population STR_SORT_BY_CAPTION_NAME :{BLACK}Name STR_SORT_BY_CAPTION_DATE :{BLACK}Date # These are used in dropdowns STR_SORT_BY_NAME :Name STR_SORT_BY_PRODUCTION :Production STR_SORT_BY_TYPE :Type STR_SORT_BY_TRANSPORTED :Transported STR_SORT_BY_NUMBER :Number STR_SORT_BY_PROFIT_LAST_YEAR :Profit last year STR_SORT_BY_PROFIT_THIS_YEAR :Profit this year STR_SORT_BY_AGE :Age STR_SORT_BY_RELIABILITY :Reliability STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total capacity per cargo type STR_SORT_BY_MAX_SPEED :Maximum speed STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Value STR_SORT_BY_LENGTH :Length STR_SORT_BY_LIFE_TIME :Remaining lifetime STR_SORT_BY_TIMETABLE_DELAY :Timetable delay STR_SORT_BY_FACILITY :Station type STR_SORT_BY_WAITING :Waiting cargo value STR_SORT_BY_RATING_MAX :Highest cargo rating STR_SORT_BY_RATING_MIN :Lowest cargo rating STR_SORT_BY_ENGINE_ID :EngineID (classic sort) STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Power STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort STR_SORT_BY_INTRO_DATE :Introduction date STR_SORT_BY_RUNNING_COST :Running cost STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running cost STR_SORT_BY_CARGO_CAPACITY :Cargo capacity STR_SORT_BY_RANGE :Range # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause game STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Fast forward the game STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Options STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, abandon game, quit STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Display map, extra viewport, or list of signs STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Display town directory STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Display subsidies STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Display list of company's stations STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Display company finances information STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Display general company information STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Display graphs STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Display company league table STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fund construction of new industry or list all industries STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Display list of company's trains. Ctrl+Click toggles opening the group/vehicle list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Display list of company's road vehicles. Ctrl+Click toggles opening the group/vehicle list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Display list of company's ships. Ctrl+Click toggles opening the group/vehicle list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Display list of company's aircraft. Ctrl+Click toggles opening the group/vehicle list STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zoom the view in STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zoom the view out STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Build railroad track STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Build roads STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Build ship docks STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Build airports STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Open the landscaping toolbar to raise/lower land, plant trees, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Show sound/music window STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Show last message/news report, show message options STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Land area information, console, script debug, screenshots, about OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Switch toolbars # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Save scenario, load scenario, abandon scenario editor, quit STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenario Editor STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Move the starting date backward 1 year STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Move the starting date forward 1 year STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Click to enter the starting year STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Display map, town directory STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landscape generation STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Town generation STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industry generation STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Road construction STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plant trees. Shift toggles building/showing cost estimate STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Place sign STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Place object. Shift toggles building/showing cost estimate ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Save scenario STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Load scenario STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Save heightmap STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Load heightmap STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Abandon scenario editor STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Quit ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Game options STR_SETTINGS_MENU_CONFIG_SETTINGS :Advanced settings STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/Game script settings STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF settings STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparency options STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Town names displayed STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Station names displayed STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Waypoint names displayed STR_SETTINGS_MENU_SIGNS_DISPLAYED :Signs displayed STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Competitor signs and names displayed STR_SETTINGS_MENU_FULL_ANIMATION :Full animation STR_SETTINGS_MENU_FULL_DETAIL :Full detail STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Transparent buildings STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Transparent signs ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Save game STR_FILE_MENU_LOAD_GAME :Load game STR_FILE_MENU_QUIT_GAME :Abandon game STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Quit ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Map of world STR_MAP_MENU_EXTRA_VIEW_PORT :Extra viewport STR_MAP_MENU_SIGN_LIST :Sign list ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Town directory STR_TOWN_MENU_FOUND_TOWN :Found town ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsidies STR_SUBSIDIES_MENU_GOAL :Current goals ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Operating profit graph STR_GRAPH_MENU_INCOME_GRAPH :Income graph STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Delivered cargo graph STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Performance history graph STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Company value graph STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Cargo payment rates ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Company league table STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detailed performance rating STR_GRAPH_MENU_HIGHSCORE :Highscore table ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Industry directory STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industry chains STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fund new industry ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Railroad construction STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Electrified railroad construction STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Monorail construction STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev construction ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Road construction STR_ROAD_MENU_TRAM_CONSTRUCTION :Streetcar construction ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Waterways construction ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Airport construction ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Landscaping STR_LANDSCAPING_MENU_PLANT_TREES :Plant trees STR_LANDSCAPING_MENU_PLACE_SIGN :Place sign ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Sound/music ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Last message/news report STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Message history ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Land area information STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Toggle console STR_ABOUT_MENU_AI_DEBUG :AI/Game script debug STR_ABOUT_MENU_SCREENSHOT :Screenshot STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Fully zoomed in screenshot STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Default zoom screenshot STR_ABOUT_MENU_GIANT_SCREENSHOT :Whole map screenshot STR_ABOUT_MENU_ABOUT_OPENTTD :About 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toggle bounding boxes STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toggle coloring of dirty blocks ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2nd STR_ORDINAL_NUMBER_3RD :3rd STR_ORDINAL_NUMBER_4TH :4th STR_ORDINAL_NUMBER_5TH :5th STR_ORDINAL_NUMBER_6TH :6th STR_ORDINAL_NUMBER_7TH :7th STR_ORDINAL_NUMBER_8TH :8th STR_ORDINAL_NUMBER_9TH :9th STR_ORDINAL_NUMBER_10TH :10th STR_ORDINAL_NUMBER_11TH :11th STR_ORDINAL_NUMBER_12TH :12th STR_ORDINAL_NUMBER_13TH :13th STR_ORDINAL_NUMBER_14TH :14th STR_ORDINAL_NUMBER_15TH :15th STR_ORDINAL_NUMBER_16TH :16th STR_ORDINAL_NUMBER_17TH :17th STR_ORDINAL_NUMBER_18TH :18th STR_ORDINAL_NUMBER_19TH :19th STR_ORDINAL_NUMBER_20TH :20th STR_ORDINAL_NUMBER_21ST :21st STR_ORDINAL_NUMBER_22ND :22nd STR_ORDINAL_NUMBER_23RD :23rd STR_ORDINAL_NUMBER_24TH :24th STR_ORDINAL_NUMBER_25TH :25th STR_ORDINAL_NUMBER_26TH :26th STR_ORDINAL_NUMBER_27TH :27th STR_ORDINAL_NUMBER_28TH :28th STR_ORDINAL_NUMBER_29TH :29th STR_ORDINAL_NUMBER_30TH :30th STR_ORDINAL_NUMBER_31ST :31st ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :May STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Oct STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dec STR_MONTH_JAN :January STR_MONTH_FEB :February STR_MONTH_MAR :March STR_MONTH_APR :April STR_MONTH_MAY :May STR_MONTH_JUN :June STR_MONTH_JUL :July STR_MONTH_AUG :August STR_MONTH_SEP :September STR_MONTH_OCT :October STR_MONTH_NOV :November STR_MONTH_DEC :December ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Key STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Operating Profit Graph STR_GRAPH_INCOME_CAPTION :{WHITE}Income Graph STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Units of cargo delivered STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Company performance ratings (maximum rating=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Company values STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Cargo Payment Rates STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Days in transit STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Payment for delivering 10 units (or 10,000 liters) of cargo a distance of 20 squares STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Enable all STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Disable all STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Display all cargos on the cargo payment rates graph STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Display no cargos on the cargo payment rates graph STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph for cargo type on/off STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Show detailed performance ratings # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Key to company graphs STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Click here to toggle company's entry on graph on/off # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Company League Table STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Engineer STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Traffic Manager STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transport Coordinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Route Supervisor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Director STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Chief Executive STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Chairman STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detailed performance rating STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}View details about this company ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehicles: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stations: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. profit: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. income: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. income: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Delivered: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Cargo: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Money: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Loan: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Number of vehicles that turned a profit last year. This includes road vehicles, trains, ships and aircraft STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Number of recently-serviced stations. Train stations, bus stops, airports and so on are counted separately even if they belong to the same station STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}The profit of the vehicle with the lowest income (only vehicles older than two years are considered) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the lowest profit of the last 12 quarters STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the highest profit of the last 12 quarters STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Units of cargo delivered in the last four quarters STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Number of types of cargo delivered in the last quarter STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Amount of money this company has in the bank STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}The amount of money this company has taken on loan STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total points out of possible points # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}All STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Old Style STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}New Style STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Custom 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Custom 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Music Volume STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Effects Volume STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Track STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Title STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Shuffle STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Skip to previous track in selection STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Skip to next track in selection STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stop playing music STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Start playing music STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Drag sliders to set music and sound effect volumes STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Select 'all tracks' program STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Select 'old style music' program STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Select 'new style music' program STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Select 'Ezy Street style music' program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Select 'Custom 1' (user-defined) program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (user-defined) program STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle on/off STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window STR_ERROR_NO_SONGS :{WHITE}A music set without songs has been selected. No songs will be played # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Music Program Selection STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Index STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Clear STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clear current program (Custom1 or Custom2 only) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click on music track to add to current program (Custom1 or Custom2 only) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Click on music track to remove it from current program (Custom1 or Custom2 only) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top companies who reached {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Company League Table in {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Businessman STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrialist STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnate STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon of the Century STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} achieves '{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} of {COMPANY} achieves '{STRING}' status! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Map - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Contours STR_SMALLMAP_TYPE_VEHICLES :Vehicles STR_SMALLMAP_TYPE_INDUSTRIES :Industries STR_SMALLMAP_TYPE_ROUTES :Routes STR_SMALLMAP_TYPE_VEGETATION :Vegetation STR_SMALLMAP_TYPE_OWNERS :Owners STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Show land contours on map STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Show vehicles on map STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Show industries on map STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Show transport routes on map STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Show vegetation on map STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Show land owners on map STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click on an industry type to toggle displaying it. Ctrl+Click disables all types except the selected one. Ctrl+Click on it again to enable all industry types STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click on a company to toggle displaying its property. Ctrl+Click disables all companies except the selected one. Ctrl+Click on it again to enable all companies STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Roads STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Railroads STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stations/Airports/Docks STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Buildings/Industries STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehicles STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trains STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Road Vehicles STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Ships STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aircraft STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transport Routes STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Forest STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Railroad Station STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Truck Loading Bay STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Bus Station STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Airport/Heliport STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Dock STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Rough Land STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Grass Land STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Bare Land STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Fields STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Trees STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Rocks STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Water STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}No Owner STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Towns STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industries STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Desert STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snow STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toggle town names on/off on map STR_SMALLMAP_CENTER :{BLACK}Center the minimap on the current position STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Disable all STR_SMALLMAP_ENABLE_ALL :{BLACK}Enable all STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Show height STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Display no industries on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Display all industries on the map STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toggle display of heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Display no company property on the map STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display all company property on the map # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Show last message or news report STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSED * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOSAVE STR_STATUSBAR_SAVING_GAME :{RED}* * SAVING GAME * * # News message history STR_MESSAGE_HISTORY :{WHITE}Message History STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}A list of the recent news messages STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Message STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First train arrives at {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First bus arrives at {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First truck arrives at {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First passenger streetcar arrives at {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First freight streetcar arrives at {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First ship arrives at {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Citizens celebrate . . .{}First aircraft arrives at {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Train Crash!{}{COMMA} die in fireball after collision STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Road Vehicle Crash!{}Driver dies in fireball after collision with train STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Road Vehicle Crash!{}{COMMA} die in fireball after collision with train STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Plane Crash!{}{COMMA} die in fireball at {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Plane Crash!{}Aircraft ran out of fuel, {COMMA} die in fireball STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelin disaster at {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Road vehicle destroyed in 'UFO' collision! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Oil refinery explosion near {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Factory destroyed in suspicious circumstances near {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' lands near {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Coal mine subsidence leaves trail of destruction near {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Floods!{}At least {COMMA} missing, presumed dead after significant flooding! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transport company in trouble! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} will be sold off or declared bankrupt unless performance increases soon! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transport company merger! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} has been sold to {STRING} for {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrupt! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} has been closed down by creditors and all assets sold off! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}New transport company launched! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} starts construction near {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} has been taken over by {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(President) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsored construction of new town {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}New {STRING} under construction near {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}New {STRING} being planted near {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} announces imminent closure! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Supply problems cause {STRING} to announce imminent closure! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Lack of nearby trees causes {STRING} to announce imminent closure! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}European Monetary Union!{}{}The Euro is introduced as the sole currency for everyday transactions in your country! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}World Recession!{}{}Financial experts fear worst as economy slumps! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recession Over!{}{}Upturn in trade gives confidence to industries as economy strengthens! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} increases production! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}New coal seam found at {INDUSTRY}!{}Production is expected to double! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}New oil reserves found at {INDUSTRY}!{}Production is expected to double! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Improved farming methods at {INDUSTRY} are expected to double production! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} production at {INDUSTRY} increases by {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} production down by 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insect infestation causes havoc at {INDUSTRY}!{}Production down by 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} production at {INDUSTRY} goes down by {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} is getting very old and urgently needs replacing STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} can't find a path to continue STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} is lost STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}'s profit last year was {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} can't get to the next destination because it is out of range STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stopped because an ordered refit failed STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Autorenew failed on {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}New {STRING} now available! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}New {STRING} now available! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} no longer accepts {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} no longer accepts {STRING} or {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} now accepts {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} now accepts {STRING} and {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Offer of subsidy expired:{}{}{STRING} from {STRING} to {STRING} will now not attract a subsidy STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidy withdrawn:{}{}{STRING} service from {STRING} to {STRING} is no longer subsidized STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Service subsidy offered:{}{}First {STRING} service from {STRING} to {STRING} will attract a year's subsidy from the local authority! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Service subsidy awarded to {STRING}!{}{}{STRING} service from {STRING} to {STRING} will pay 50% extra for the next year! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Service subsidy awarded to {STRING}!{}{}{STRING} service from {STRING} to {STRING} will pay double rates for the next year! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Service subsidy awarded to {STRING}!{}{}{STRING} service from {STRING} to {STRING} will pay triple rates for the next year! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Service subsidy awarded to {STRING}!{}{}{STRING} service from {STRING} to {STRING} will pay quadruple rates for the next year! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Traffic chaos in {TOWN}!{}{}Road rebuilding program funded by {STRING} brings 6 months of misery to motorists! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transport monopoly! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Local authority of {TOWN} signs contract with {STRING} for one year of exclusive transport rights! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA} 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 main view to this viewport STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Paste from viewport STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Paste the location of this viewport to the main view # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Game Options STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :British Pound (GBP) STR_GAME_OPTIONS_CURRENCY_USD :American Dollar (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :French Franc (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubel (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Measuring units STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Measuring units selection ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperial STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metric STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Road vehicles STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Select side of road for vehicles to drive on STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Drive on left STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Drive on right STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Town names STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Select style of town names ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :English (Original) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :French STR_GAME_OPTIONS_TOWN_NAME_GERMAN :German STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :English (Additional) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latin-American STR_GAME_OPTIONS_TOWN_NAME_SILLY :Silly STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Swedish STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Dutch STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnish STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polish STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovak STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norwegian STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hungarian STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austrian STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romanian STR_GAME_OPTIONS_TOWN_NAME_CZECH :Czech STR_GAME_OPTIONS_TOWN_NAME_SWISS :Swiss STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danish STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turkish STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italian STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalan ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Off STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Every month STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Every 3 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Every 6 months STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Every 12 months STR_GAME_OPTIONS_LANGUAGE :{BLACK}Language STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Select the interface language to use STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Fullscreen STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Check this box to play OpenTTD fullscreen mode STR_GAME_OPTIONS_RESOLUTION :{BLACK}Screen resolution STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Select the screen resolution to use STR_GAME_OPTIONS_RESOLUTION_OTHER :other STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Screenshot format STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Select the screenshot format to use STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base graphics set STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base sounds set STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Select the base sounds set to use STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base sounds set STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base music set STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Custom currency STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Exchange rate: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Decrease the amount of your currency for one Pound (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Increase the amount of your currency for one Pound (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Set the exchange rate of your currency for one Pound (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Set the separator for your currency STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Set the prefix string for your currency STR_CURRENCY_SUFFIX :{LTBLUE}Suffix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Set the suffix string for your currency STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Switch to Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Switch to Euro: {ORANGE}never STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Set the year to switch to Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Switch to Euro earlier STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Switch to Euro later STR_CURRENCY_PREVIEW :{LTBLUE}Preview: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pound (£) in your currency STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Change custom currency parameter STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maximum no. competitors: {ORANGE}{COMMA} STR_NONE :None STR_FUNDING_ONLY :Funding only STR_MINIMAL :Minimal STR_NUM_VERY_LOW :Very Low STR_NUM_LOW :Low STR_NUM_NORMAL :Normal STR_NUM_HIGH :High STR_NUM_CUSTOM :Custom STR_NUM_CUSTOM_NUMBER :Custom ({NUM}) STR_VARIETY_NONE :None STR_VARIETY_VERY_LOW :Very Low STR_VARIETY_LOW :Low STR_VARIETY_MEDIUM :Medium STR_VARIETY_HIGH :High STR_VARIETY_VERY_HIGH :Very High STR_AI_SPEED_VERY_SLOW :Very Slow STR_AI_SPEED_SLOW :Slow STR_AI_SPEED_MEDIUM :Medium STR_AI_SPEED_FAST :Fast STR_AI_SPEED_VERY_FAST :Very Fast STR_SEA_LEVEL_VERY_LOW :Very Low STR_SEA_LEVEL_LOW :Low STR_SEA_LEVEL_MEDIUM :Medium STR_SEA_LEVEL_HIGH :High STR_SEA_LEVEL_CUSTOM :Custom STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Custom ({NUM}%) STR_RIVERS_NONE :None STR_RIVERS_FEW :Few STR_RIVERS_MODERATE :Medium STR_RIVERS_LOT :Many STR_DISASTER_NONE :None STR_DISASTER_REDUCED :Reduced STR_DISASTER_NORMAL :Normal STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Very Flat STR_TERRAIN_TYPE_FLAT :Flat STR_TERRAIN_TYPE_HILLY :Hilly STR_TERRAIN_TYPE_MOUNTAINOUS :Mountainous STR_CITY_APPROVAL_PERMISSIVE :Permissive STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Hostile STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Advanced Settings STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filter string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Expand all STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Collapse all STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(no explanation available) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Default value: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Setting type: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Client setting (not stored in saves; affects all games) STR_CONFIG_SETTING_TYPE_GAME_MENU :Game setting (stored in saves; affects only new games) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (stored in save; affects only current game) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; affects only new games) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; affects only current company) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a different value than the default STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affects only new games) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affects only current company) STR_CONFIG_SETTING_OFF :Off STR_CONFIG_SETTING_ON :On STR_CONFIG_SETTING_DISABLED :Disabled STR_CONFIG_SETTING_COMPANIES_OFF :Off STR_CONFIG_SETTING_COMPANIES_OWN :Own company STR_CONFIG_SETTING_COMPANIES_ALL :All companies STR_CONFIG_SETTING_NONE :None STR_CONFIG_SETTING_ORIGINAL :Original STR_CONFIG_SETTING_REALISTIC :Realistic STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Left STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Center STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Right STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maximum initial loan: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount a company can loan (without taking inflation into account) STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amount of construction actions for AIs STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Control how often inadequately maintained vehicles may break down STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidy multiplier: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is paid for subsidized connections STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Construction costs: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Set level of construction and purchase costs STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :If enabled, recessions may occur every few years. During a recession all production is significantly lower (it returns to previous level when the recession is over) STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train reversing in stations: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be build on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations STR_CONFIG_SETTING_AUTOSLOPE :Allow terraforming under buildings, tracks, etc. (autoslope): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow terraforming under buildings and tracks without removing them STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports STR_CONFIG_SETTING_EXTRADYNAMITE :Allow removal of more town-owned roads, bridges and tunnels: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Make it easier to remove town-owned infrastructure and buildings STR_CONFIG_SETTING_TRAIN_LENGTH :Maximum length of trains: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Set the maximum length of trains STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} tile{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :Amount of vehicle smoke/sparks: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Set how much smoke or how many sparks are emitted by vehicles STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Train acceleration model: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Select the physics model for train acceleration. The "original" model penalizes slopes equally for all vehicles. The "realistic" model penalizes slopes and curves depending on various properties of the consist, like length and tractive effort STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Road vehicle acceleration model: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Select the physics model for road vehicle acceleration. The "original" model penalizes slopes equally for all vehicles. The "realistic" model penalizes slopes depending on various properties of the engine, for example 'tractive effort' STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Slope steepness for trains: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a train. Higher values make it more difficult to climb a hill STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Slope steepness for road vehicles: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a road vehicle. Higher values make it more difficult to climb a hill STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains and ships from making 90° turns: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. This also applies to the turning radius of ships STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow joining stations not directly adjacent: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts. Needs Ctrl+Click while placing the new parts STR_CONFIG_SETTING_IMPROVEDLOAD :Use improved loading algorithm: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :If enabled, multiple vehicles waiting at a station are loaded sequentially. Loading of the next vehicle only starts when there is enough cargo waiting to completely fill the first vehicle STR_CONFIG_SETTING_GRADUAL_LOADING :Load vehicles gradually: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Gradually load vehicles using vehicle specific loading durations, instead of loading everything at once with a fixed time depending only on the amount of cargo loaded STR_CONFIG_SETTING_INFLATION :Inflation: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Enable inflation in the economy, where costs are slightly faster rising than payments STR_CONFIG_SETTING_SELECTGOODS :Deliver cargo to a station only when there is a demand: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Only deliver cargo to a station that was requested from a loading vehicle. This prevents bad ratings for cargos that are not serviced at a station STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum bridge length: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum length for building bridges STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tunnel length: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximum length for building tunnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Manual primary industry construction method: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Method of funding a primary industry. 'none' means it is not possible to fund any, 'prospecting' means funding is possible, but construction occurs in a random spot on the map and may as well fail, 'as other industries' means raw industries can be constructed by companies like processing industries in any position they like STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :None STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :As other industries STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospecting STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flat area around industries: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Amount of flat space around an industry. This ensures empty space will remain available around an industry for building tracks, et cetera STR_CONFIG_SETTING_MULTIPINDTOWN :Allow multiple similar industries per town: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normally, a town does not want more than one industry of each type. With this setting, it will allow several industries of the same type in the same town STR_CONFIG_SETTING_SIGNALSIDE :Show signals: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Select on which side of the track to place signals STR_CONFIG_SETTING_SIGNALSIDE_LEFT :On the left STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :On the driving side STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :On the right STR_CONFIG_SETTING_SHOWFINANCES :Show finances window at the end of the year: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :If enabled, the finances window pops up at the end of each year to allow easy inspection of the financial status of the company STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :New orders are 'non-stop' by default: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normally, a vehicle will stop at every station it passes. By enabling this setting, it will drive through all station on the way to its final destination without stopping. Note, that this setting only defines a default value for new orders. Individual orders can be set explicitly to either behavior nevertheless STR_CONFIG_SETTING_STOP_LOCATION :New train orders stop by default at the {STRING} of the platform STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Place where a train will stop at the platform by default. The 'near end' means close to the entry point, 'middle' means in the middle of the platform, and 'far end' means far away from the entry point. Note, that this setting only defines a default value for new orders. Individual orders can be set explicitly to either behavior nevertheless STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :near end STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middle STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :far end STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Road vehicle queueing (with quantum effects): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Make road vehicle wait in front of occupied road stops until they are cleared STR_CONFIG_SETTING_AUTOSCROLL :Pan window when mouse is at the edge: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :When enabled, viewports will start to scroll when the mouse is near the edge of the window STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Disabled STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Main viewport, full-screen only STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Main viewport STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Every viewport STR_CONFIG_SETTING_BRIBE :Allow bribing of the local authority: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Allow companies to try bribing the local town authority. If the bribe is noticed by an inspector, the company will not be able to act in the town for six months STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Allow buying exclusive transport rights: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :If a company buys exclusive transport rights for a town, opponents' stations (passenger and cargo) won't receive any cargo for a whole year STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Allow funding buildings: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Allow companies to give money to towns for funding new houses STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Allow funding local road reconstruction: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Allow companies to give money to towns for road reconstruction to sabotage road-based services in the town STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Allow sending money to other companies: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Allow transfer of money between companies in multiplayer mode STR_CONFIG_SETTING_FREIGHT_TRAINS :Weight multiplier for freight to simulate heavy trains: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Set the impact of carrying freight in trains. A higher value makes carrying freight more demanding for trains, especially at hills STR_CONFIG_SETTING_PLANE_SPEED :Plane speed factor: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Set the relative speed of planes compared to other vehicle types, to reduce the amount of income of transport by aircraft STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Number of plane crashes: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Set the chance of an aircraft crash happening STR_CONFIG_SETTING_PLANE_CRASHES_NONE :None STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduced STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Allow drive-through road stops on town owned roads: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Allow construction of drive-through road stops on town-owned roads STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Allow drive-through road stops on roads owned by competitors: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Allow construction of drive-through road stops on roads owned by other companies STR_CONFIG_SETTING_ADJACENT_STATIONS :Allow building adjacent stations: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Allow different stations to touch each other STR_CONFIG_SETTING_DYNAMIC_ENGINES :Enable multiple NewGRF engine sets: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Compatibility option for old NewGRFs. Do not disable this, unless you know exactly what you are doing! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Changing this setting is not possible when there are vehicles STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastructure maintenance: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :When enabled, infrastructure causes maintenance costs. The cost grows over-proportional with the network size, thus affecting bigger companies more than smaller ones STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Airports never expire: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Enabling this setting makes each airport type stay available forever after its introduction STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warn if vehicle is lost: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Trigger messages about vehicles unable to find a path to their ordered destination STR_CONFIG_SETTING_ORDER_REVIEW :Review vehicles' orders: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :When enabled, the orders of the vehicles are periodically checked, and some obvious issues are reported with a news message when detected STR_CONFIG_SETTING_ORDER_REVIEW_OFF :No STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Yes, but exclude stopped vehicles STR_CONFIG_SETTING_ORDER_REVIEW_ON :Of all vehicles STR_CONFIG_SETTING_WARN_INCOME_LESS :Warn if a vehicle's income is negative: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :When enabled, a news message gets sent when a vehicle has not made any profit within a calendar year STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never expire: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets automatically replaced when the renew conditions are fulfilled STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} max age STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after STR_CONFIG_SETTING_AUTORENEW_MONEY :Autorenew minimum needed money for renew: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimal amount of money that must remain in the bank before considering auto-renewing vehicles STR_CONFIG_SETTING_ERRMSG_DURATION :Duration of error message: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duration for displaying error messages in a red window. Note that some (critical) error messages are not closed automatically after this time, but must be closed manually STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} second{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY :Show tooltips: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Delay before tooltips are displayed when hovering the mouse over some interface element. Alternatively tooltips can be bound to the right mouse button STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Hover for {COMMA} second{P 0 "" s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Right click STR_CONFIG_SETTING_POPULATION_IN_LABEL :Show town population in the town name label: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the population of towns in their label on the map STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of lines in graphs: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colors are easier to distinguish STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough STR_CONFIG_SETTING_TREE_PLACER :Tree placer algorithm: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :None STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Improved STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter-clockwise STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :The height level a flat scenario map gets: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Enable terraforming the tiles at the map borders: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, the map borders will always be ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area the parts of a single station may be spread out on. Note that high values will slow the game STR_CONFIG_SETTING_SERVICEATHELIPAD :Perform maintenance on helicopters at helipads automatically: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Link landscape toolbar to rail/road/water/airport toolbars: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :When opening a construction toolbar for a transport type, also open the toolbar for terraforming STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Land color used in the minimap: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color of the terrain in the smallmap STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Green STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purple STR_CONFIG_SETTING_REVERSE_SCROLLING :Reverse scroll direction: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Behavior when scrolling the map with the right mouse button. When disabled, the mouse moves the camera. When enabled, the mouse moves the map STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport scrolling: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific) STR_CONFIG_SETTING_LIVERIES_NONE :None STR_CONFIG_SETTING_LIVERIES_OWN :Own company STR_CONFIG_SETTING_LIVERIES_ALL :All companies STR_CONFIG_SETTING_PREFER_TEAMCHAT :Prefer team chat with : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Switch the binding of company-internal and public chat to resp. STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Function of scrollwheel: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Enable scrolling with two-dimensional mouse-wheels STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom map STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scroll map STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Off STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Map scrollwheel speed: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Control the sensitivity of mouse-wheel scrolling STR_CONFIG_SETTING_OSK_ACTIVATION :On screen keyboard: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Select the method to open the on screen keyboard for entering text into editboxes only using the pointing device. This is meant for small devices without actual keyboard STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Disabled STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Double click STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Single click (when focussed) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Single click (immediately) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Right-click emulation: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Select the method to emulate right mouse-button clicks STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Enable scrolling the map by dragging it with the left mouse button. This is especially useful when using a touch-screen for scrolling STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Use the {STRING} date format for savegame names STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format of the date in save game filenames STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Default (D) palette STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palette STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :When paused allow: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Select what actions may be done while the game is paused STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Show arrival and departure in timetables: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Display anticipated arrival and departure times in timetables STR_CONFIG_SETTING_QUICKGOTO :Quick creation of vehicle orders: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pre-select the 'goto cursor' when opening the orders window STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Default rail type (after new game/game load): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to select after starting or loading a game. 'first available' selects the oldest type of tracks, 'last available' selects the newest type of tracks, and 'most used' selects the type which is currently most in use STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different color to assist in problems with trains refusing to enter path-based blocks STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses in company finance window: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window STR_CONFIG_SETTING_SOUND_TICKER :News ticker: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for summarized news messages STR_CONFIG_SETTING_SOUND_NEWS :Newspaper: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Play sound upon display of newspapers STR_CONFIG_SETTING_SOUND_NEW_YEAR :End of year: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Play sound at the end of a year summarizing the company's performance during the year compared to the previous year STR_CONFIG_SETTING_SOUND_CONFIRM :Construction: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound on successful constructions or other actions STR_CONFIG_SETTING_SOUND_CLICK :Button clicks: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Beep when clicking buttons STR_CONFIG_SETTING_SOUND_DISASTER :Disasters/accidents: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Play sound effects of accidents and disasters STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicles: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Play sound effects of vehicles STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient sounds of landscape, industries and towns STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Enabling this setting makes building trains impossible for a computer player STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Disable road vehicles for computer: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Enabling this setting makes building road vehicles impossible for a computer player STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Disable aircraft for computer: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Enabling this setting makes building aircraft impossible for a computer player STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Disable ships for computer: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Enabling this setting makes building ships impossible for a computer player STR_CONFIG_SETTING_AI_PROFILE :Default settings profile: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Choose which settings profile to use for random AIs or for initial values when adding a new AI or Game Script STR_CONFIG_SETTING_AI_PROFILE_EASY :Easy STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Medium STR_CONFIG_SETTING_AI_PROFILE_HARD :Hard STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Allow AIs in multiplayer: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Allow AI computer players to participate in multiplayer games STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before scripts are suspended: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximum number of computation steps that a script can take in one turn STR_CONFIG_SETTING_SERVINT_ISPERCENT :Maintenance intervals are in percents: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Choose whether maintenance of vehicles is triggered by the time passed since last maintenance or by reliability dropping by a certain percentage of the maximum reliability STR_CONFIG_SETTING_SERVINT_TRAINS :Default maintenance interval for trains: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Set the default maintenance interval for new rail vehicles, if no explicit maintenance interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} day{P 0 "" s}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Disabled STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Default maintenance interval for road vehicles: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Set the default maintenance interval for new road vehicles, if no explicit maintenance interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default maintenance interval for aircraft: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default maintenance interval for new aircraft, if no explicit maintenance interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_SHIPS :Default maintenance interval for ships: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default maintenance interval for new ships, if no explicit maintenance interval is set for the vehicle STR_CONFIG_SETTING_NOSERVICE :Disable maintenance when breakdowns are set to none: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :When enabled, vehicles do not get maintained if they cannot break down STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Enable railroad car speed limits: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :When enabled, also use speed limits of wagons for deciding the maximum speed of a train STR_CONFIG_SETTING_DISABLE_ELRAILS :Disable electric rails: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Enabling this setting disables the requirement to electrify tracks to make electric engines run on them STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Arrival of first vehicle at player's station: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Display a newspaper when the first vehicle arrives at a new player's station STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Arrival of first vehicle at competitor's station: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Display a newspaper when the first vehicle arrives at a new competitor's station STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / disasters: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Display a newspaper when accidents or disasters occur STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Company information: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Display a newspaper when a new company starts, or when companies are risking to bankrupt STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Opening of industries: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Display a newspaper when new industries open STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Closing of industries: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Display a newspaper when industries close down STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Economy changes: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Display a newspaper about global changes to economy STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Production changes of industries served by the company: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Display a newspaper when the production level of industries change, which are served by the company STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Production changes of industries served by competitor(s): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Display a newspaper when the production level of industries change, which are served by the competitors STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Other industry production changes: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Display a newspaper when the production level of industries change, which are not served by the company or competitors STR_CONFIG_SETTING_NEWS_ADVICE :Advice / information on company's vehicles: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Display messages about vehicles needing attention STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :New vehicles: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Display a newspaper when a new vehicle type becomes available STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Changes of cargo acceptance: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Display messages about stations changing acceptance of some cargos STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidies: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Display a newspaper about subsidy related events STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :General information: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Display newspaper about general events, such as purchase of exclusive rights or funding of road reconstruction STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Off STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Summary STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Full STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Colored news appears in: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Year that the newspaper announcements get printed in color. Before this year, it uses monochrome black/white STR_CONFIG_SETTING_STARTING_YEAR :Starting year: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Enable smooth economy (more, smaller changes): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :When enabled, industry production changes more often, and in smaller steps. This setting has usually no effect, if industry types are provided by a NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Allow buying shares from other companies: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :When enabled, allow buying and selling of company shares. Shares will only be available for companies reaching a certain age STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentage of leg profit to pay in feeder systems: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentage of income given to the intermediate legs in feeder systems, giving more control over the income STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :When dragging, place signals every: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Set the distance at which signals will be built on a track up to the next obstacle (signal, junction), if signals are dragged STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tile{P 0 "" s} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :When dragging, keep fixed distance between signals: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Select the behavior of signal placement when Ctrl+dragging signals. If disabled, signals are placed around tunnels or bridges to avoid long stretches without signals. If enabled, signals are placed every n tiles, making alignment of signals at parallel tracks easier STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automatically build semaphores before: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Set the year when electric signals will be used for tracks. Before this year, non-electric signals will be used (which have the exact same function, but different looks) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Enable the signal GUI: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Display a window for choosing signal types to build, instead of only window-less signal-type rotation with Ctrl+clicking on build signals STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Signal type to build by default: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Default signal type to use STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Block signals STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Path signals STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :One-way path signals STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cycle through signal types: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Select which signal types to cycle through, when Ctrl+clicking on a build signal with the signal tool STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Block signals only STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Path signals only STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :All STR_CONFIG_SETTING_TOWN_LAYOUT :Road layout for new towns: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Layout for the road network of towns STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Better roads STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 grid STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 grid STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Random STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Towns are allowed to build roads: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to build roads for growth. Disable to prevent town authorities from building roads themselves STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build grade crossings: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build grade crossings STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Allowed STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Allowed, custom town layout STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :In-game placement of trees: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Control random appearance of trees during the game. This might affect industries which rely on tree growth, for example lumber mills STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :None {RED}(breaks lumber mill) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Only in rain forests STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Everywhere STR_CONFIG_SETTING_TOOLBAR_POS :Position of main toolbar: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontal position of the main toolbar at the top of the screen STR_CONFIG_SETTING_STATUSBAR_POS :Position of status bar: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontal position of the status bar at the bottom of the screen STR_CONFIG_SETTING_SNAP_RADIUS :Window snap radius: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distance between windows before the window being moved is automatically aligned to nearby windows STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Disabled STR_CONFIG_SETTING_SOFT_LIMIT :Maximum number of non-sticky windows: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Number of non-sticky open windows before old windows get automatically closed to make room for new windows STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :disabled STR_CONFIG_SETTING_ZOOM_MIN :Maximum zoom in level: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :The maximum zoom-in level for viewports. Note that enabling higher zoom-in levels increases memory requirements STR_CONFIG_SETTING_ZOOM_MAX :Maximum zoom out level: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :The maximum zoom-out level for viewports. Higher zoom-out levels might cause lag when used STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Town growth speed: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Speed of town growth STR_CONFIG_SETTING_TOWN_GROWTH_NONE :None STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Slow STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Fast STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Very fast STR_CONFIG_SETTING_LARGER_TOWNS :Proportion of towns that will become cities: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Amount of towns which will become a city, thus a town which starts out larger and grows faster STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 in {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :None STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Initial city size multiplier: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Average size of cities relative to normal towns at start of the game STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Remove absurd road-elements during the road construction: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Remove dead road ends during funded road reconstruction STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construction STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicles STR_CONFIG_SETTING_STATIONS :{ORANGE}Stations STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economy STR_CONFIG_SETTING_AI :{ORANGE}Competitors STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Display options STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaction STR_CONFIG_SETTING_SOUND :{ORANGE}Sound effects STR_CONFIG_SETTING_NEWS :{ORANGE}News and messages STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signals STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Cargo handling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer players STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenew STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Maintenance STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Routing STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trains STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Towns STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industries STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder for trains: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Path finder to use for trains STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder for road vehicles: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Path finder to use for road vehicles STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder for ships: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Path finder to use for ships STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatic reversing at signals: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Allow trains to reverse on a signal, if they waited there a long time STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Change setting value # Config errors STR_CONFIG_ERROR :{WHITE}Error with the configuration file... STR_CONFIG_ERROR_ARRAY :{WHITE}... error in array '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... invalid value '{STRING}' for '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... trailing characters at end of setting '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoring NewGRF '{STRING}': duplicate GRF ID with '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoring invalid NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :not found STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :unsafe for static use STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :system NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatible to this version of OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :unknown STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... compression level '{STRING}' is not valid STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... savegame format '{STRING}' is not available. Reverting to '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoring Base Graphics set '{STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoring Base Sounds set '{STRING}': not found STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoring Base Music set '{STRING}': not found STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Out of memory STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allocating {BYTES} of spritecache failed. The spritecache was reduced to {BYTES}. This will reduce the performance of OpenTTD. To reduce memory requirements you can try to disable 32bpp graphics and/or zoom-in levels # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}New Game STR_INTRO_LOAD_GAME :{BLACK}Load Game STR_INTRO_PLAY_SCENARIO :{BLACK}Play Scenario STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Play Heightmap STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenario Editor STR_INTRO_MULTIPLAYER :{BLACK}Multiplayer STR_INTRO_GAME_OPTIONS :{BLACK}Game Options STR_INTRO_HIGHSCORE :{BLACK}Highscore Table STR_INTRO_ADVANCED_SETTINGS :{BLACK}Advanced Settings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Settings STR_INTRO_ONLINE_CONTENT :{BLACK}Check Online Content STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Game Script Settings STR_INTRO_QUIT :{BLACK}Quit STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start a new game. Ctrl+Click skips map configuration STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Load a saved game STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Start a new game, using a heightmap as landscape STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start a new game, using a customized scenario STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Create a customized game world/scenario STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Start a multiplayer game STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Select 'temperate' landscape style STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Select 'sub-arctic' landscape style STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Select 'sub-tropical' landscape style STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Select 'toyland' landscape style STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Display game options STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Display highscore table STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Display advanced settings STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Display NewGRF settings STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Check for new and updated content to download STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Display AI/Game script settings STR_INTRO_TOOLTIP_QUIT :{BLACK}Quit 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}This translation misses {NUM} string{P "" s}. Please help make OpenTTD better by signing up as translator. See readme.txt for details. # Quit window STR_QUIT_CAPTION :{WHITE}Quit STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Are you sure you want to quit OpenTTD and return to {STRING}? STR_QUIT_YES :{BLACK}Yes STR_QUIT_NO :{BLACK}No # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Abandon Game STR_ABANDON_GAME_QUERY :{YELLOW}Are you sure you want to abandon this game? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you sure you want to abandon this scenario? # Cheat window STR_CHEATS :{WHITE}Cheats STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before STR_CHEATS_WARNING :{BLACK}Warning! You are about to betray your fellow competitors. Keep in mind that such a disgrace will be remembered for eternity STR_CHEAT_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels may cross each other: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplanes will not crash (frequently) on small airports: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperate landscape STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-arctic landscape STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropical landscape STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Toyland landscape STR_CHEAT_CHANGE_DATE :{LTBLUE}Change date: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Change current year STR_CHEAT_SETUP_PROD :{LTBLUE}Enable modifying production values: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}New Color Scheme STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Show general color schemes STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Show train color schemes STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Show road vehicle color schemes STR_LIVERY_SHIP_TOOLTIP :{BLACK}Show ship color schemes STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Show aircraft color schemes STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Choose the primary color for the selected scheme. Ctrl+Click will set this color for every scheme STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Choose the secondary color for the selected scheme. Ctrl+Click will set this color for every scheme STR_LIVERY_PANEL_TOOLTIP :{BLACK}Select a color scheme to change, or multiple schemes with Ctrl+Click. Click on the box to toggle use of the scheme STR_LIVERY_DEFAULT :Standard Livery STR_LIVERY_STEAM :Steam Engine STR_LIVERY_DIESEL :Diesel Engine STR_LIVERY_ELECTRIC :Electric Engine STR_LIVERY_MONORAIL :Monorail Engine STR_LIVERY_MAGLEV :Maglev Engine STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Passenger/Mail Car (Steam) STR_LIVERY_PASSENGER_WAGON_DIESEL :Passenger/Mail Car (Diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passenger/Mail Car (Electric) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passenger Car (Monorail) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passenger Car (Maglev) STR_LIVERY_FREIGHT_WAGON :Freight Car STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Truck STR_LIVERY_PASSENGER_SHIP :Passenger Ship STR_LIVERY_FREIGHT_SHIP :Freight Ship STR_LIVERY_HELICOPTER :Helicopter STR_LIVERY_SMALL_PLANE :Small Airplane STR_LIVERY_LARGE_PLANE :Large Airplane STR_LIVERY_PASSENGER_TRAM :Passenger Streetcar STR_LIVERY_FREIGHT_TRAM :Freight Streetcar # Face selection window STR_FACE_CAPTION :{WHITE}Face Selection STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection STR_FACE_MALE_BUTTON :{BLACK}Male STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces STR_FACE_FEMALE_BUTTON :{BLACK}Female STR_FACE_FEMALE_TOOLTIP :{BLACK}Select female faces STR_FACE_NEW_FACE_BUTTON :{BLACK}New Face STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Generate random new face STR_FACE_ADVANCED :{BLACK}Advanced STR_FACE_ADVANCED_TOOLTIP :{BLACK}Advanced face selection STR_FACE_SIMPLE :{BLACK}Simple STR_FACE_SIMPLE_TOOLTIP :{BLACK}Simple face selection STR_FACE_LOAD :{BLACK}Load STR_FACE_LOAD_TOOLTIP :{BLACK}Load favorite face STR_FACE_LOAD_DONE :{WHITE}Your favorite face has been loaded from the OpenTTD configuration file STR_FACE_FACECODE :{BLACK}Player face no. STR_FACE_FACECODE_TOOLTIP :{BLACK}View and/or set face number of the company president STR_FACE_FACECODE_CAPTION :{WHITE}View and/or set president face number STR_FACE_FACECODE_SET :{WHITE}New face number code has been set STR_FACE_FACECODE_ERR :{WHITE}Couldn't set president face number - must be a number between 0 and 4,294,967,295! STR_FACE_SAVE :{BLACK}Save STR_FACE_SAVE_TOOLTIP :{BLACK}Save favorite face STR_FACE_SAVE_DONE :{WHITE}This face will be saved as your favorite in the OpenTTD configuration file STR_FACE_EUROPEAN :{BLACK}European STR_FACE_SELECT_EUROPEAN :{BLACK}Select European faces STR_FACE_AFRICAN :{BLACK}African STR_FACE_SELECT_AFRICAN :{BLACK}Select African faces STR_FACE_YES :Yes STR_FACE_NO :No STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Enable mustache or earring STR_FACE_HAIR :Hair: STR_FACE_HAIR_TOOLTIP :{BLACK}Change hair STR_FACE_EYEBROWS :Eyebrows: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Change eyebrows STR_FACE_EYECOLOUR :Eye color: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Change eye color STR_FACE_GLASSES :Glasses: STR_FACE_GLASSES_TOOLTIP :{BLACK}Enable glasses STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Change glasses STR_FACE_NOSE :Nose: STR_FACE_NOSE_TOOLTIP :{BLACK}Change nose STR_FACE_LIPS :Lips: STR_FACE_MOUSTACHE :Mustache: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Change lips or mustache STR_FACE_CHIN :Chin: STR_FACE_CHIN_TOOLTIP :{BLACK}Change chin STR_FACE_JACKET :Jacket: STR_FACE_JACKET_TOOLTIP :{BLACK}Change jacket STR_FACE_COLLAR :Collar: STR_FACE_COLLAR_TOOLTIP :{BLACK}Change collar STR_FACE_TIE :Tie: STR_FACE_EARRING :Earring: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Change tie or earring # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Connection: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Choose between an internet game or a local area network game STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Player name: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}This is the name other players will identify you by STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Name STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Name of the game STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clients STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clients online / clients max STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Map size STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Map size of the game{}Click to sort by area STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Date STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Current date STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Years STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Number of years{}the game is running STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Language, server version, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Click a game from the list to select it STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}The server you joined last time: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Click to select the server you played last time STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}GAME INFO STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Language: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landscape: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Password protected! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER OFFLINE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER FULL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSION MISMATCH STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF MISMATCH STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Join game STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Refresh server STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Refresh the server info STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Find server STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Search network for a server STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Add server STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adds a server to the list which will always be checked for running games STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start server STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start your own server STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Enter your name STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Enter the IP address of the server # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start new multiplayer game STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Game name: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game name will be displayed to other players in the multiplayer game selection menu STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set password STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want it to be publicly accessible STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertize) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain number of companies STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain number of spectators STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Enter a name for the network game # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Any STR_NETWORK_LANG_ENGLISH :English STR_NETWORK_LANG_GERMAN :German STR_NETWORK_LANG_FRENCH :French STR_NETWORK_LANG_BRAZILIAN :Brazilian STR_NETWORK_LANG_BULGARIAN :Bulgarian STR_NETWORK_LANG_CHINESE :Chinese STR_NETWORK_LANG_CZECH :Czech STR_NETWORK_LANG_DANISH :Danish STR_NETWORK_LANG_DUTCH :Dutch STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finnish STR_NETWORK_LANG_HUNGARIAN :Hungarian STR_NETWORK_LANG_ICELANDIC :Icelandic STR_NETWORK_LANG_ITALIAN :Italian STR_NETWORK_LANG_JAPANESE :Japanese STR_NETWORK_LANG_KOREAN :Korean STR_NETWORK_LANG_LITHUANIAN :Lithuanian STR_NETWORK_LANG_NORWEGIAN :Norwegian STR_NETWORK_LANG_POLISH :Polish STR_NETWORK_LANG_PORTUGUESE :Portuguese STR_NETWORK_LANG_ROMANIAN :Romanian STR_NETWORK_LANG_RUSSIAN :Russian STR_NETWORK_LANG_SLOVAK :Slovak STR_NETWORK_LANG_SLOVENIAN :Slovenian STR_NETWORK_LANG_SPANISH :Spanish STR_NETWORK_LANG_SWEDISH :Swedish STR_NETWORK_LANG_TURKISH :Turkish STR_NETWORK_LANG_UKRAINIAN :Ukrainian STR_NETWORK_LANG_AFRIKAANS :Afrikaans STR_NETWORK_LANG_CROATIAN :Croatian STR_NETWORK_LANG_CATALAN :Catalan STR_NETWORK_LANG_ESTONIAN :Estonian STR_NETWORK_LANG_GALICIAN :Galician STR_NETWORK_LANG_GREEK :Greek STR_NETWORK_LANG_LATVIAN :Latvian ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Multiplayer game lobby STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}A list of all companies currently in this game. You can either join one or start a new one if there is a free company slot STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}COMPANY INFO STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Company name: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Inauguration: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Company value: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Current balance: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Last year's income: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Performance: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vehicles: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stations: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Players: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}New company STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Create a new company STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Spectate game STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Watch the game as a spectator STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Join company STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Help manage this company # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Connecting... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Connecting... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorizing... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Waiting... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Downloading map... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processing data... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registering... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" s} in front of you STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} downloaded so far STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} downloaded so far STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disconnect STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Client list STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Spectate STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}New company # Network client list STR_NETWORK_CLIENTLIST_KICK :Kick STR_NETWORK_CLIENTLIST_BAN :Ban STR_NETWORK_CLIENTLIST_GIVE_MONEY :Give money STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Speak to all STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Speak to company STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private message STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password STR_COMPANY_PASSWORD_CAPTION :{WHITE}Company password STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Default company password STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Use this company password as default for new companies # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Join STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Join and play as this company STR_COMPANY_VIEW_PASSWORD :{BLACK}Password STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Password-protect your company to prevent unauthorized users from joining STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Set company password # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Send STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Private] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[All] : STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Private] To {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Enter text for network chat # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}No network devices found or compiled without ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Could not find any network games STR_NETWORK_ERROR_NOCONNECTION :{WHITE}The server didn't answer the request STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Could not connect due to NewGRF mismatch STR_NETWORK_ERROR_DESYNC :{WHITE}Network-Game synchronization failed STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Network-Game connection lost STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Could not load savegame STR_NETWORK_ERROR_SERVER_START :{WHITE}Could not start the server STR_NETWORK_ERROR_CLIENT_START :{WHITE}Could not connect STR_NETWORK_ERROR_TIMEOUT :{WHITE}Connection #{NUM} timed out STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}A protocol error was detected and the connection was closed STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}The revision of this client does not match the server's revision STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong password STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}You are banned from this server STR_NETWORK_ERROR_KICKED :{WHITE}You were kicked out of the game STR_NETWORK_ERROR_CHEATER :{WHITE}Cheating is not allowed on this server STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}You were sending too many commands to the server STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}You took too long to enter the password STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Your computer is too slow to keep up with the server STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Your computer took too long to download the map STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Your computer took too long to join the server ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :general error STR_NETWORK_ERROR_CLIENT_DESYNC :desync error STR_NETWORK_ERROR_CLIENT_SAVEGAME :could not load map STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :connection lost STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protocol error STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF mismatch STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :not authorized STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :received invalid or unexpected packet STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :wrong revision STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :name already in use STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :wrong game-password STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :wrong company-id in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :kicked by server STR_NETWORK_ERROR_CLIENT_CHEATER :was trying to use a cheat STR_NETWORK_ERROR_CLIENT_SERVER_FULL :server full STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :was sending too many commands STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :received no password in time STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :general timeout STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :downloading map took too long STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :processing map took too long ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Possible connection loss STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}The last {NUM} second{P "" s} no data has arrived from the server # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Game paused ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Game still paused ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Game still paused ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Game still paused ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Game still paused ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Game unpaused ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :number of players STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connecting clients STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :game script ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :leaving STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} has joined the game STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} has joined the game (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} has joined company #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} has joined spectators STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} has started a new company (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} has left the game ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} has changed his/her name to {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gave your company {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** You gave {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}The server closed the session STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}The server is restarting...{}Please wait... # Content downloading window STR_CONTENT_TITLE :{WHITE}Content downloading STR_CONTENT_TYPE_CAPTION :{BLACK}Type STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Type of the content STR_CONTENT_NAME_CAPTION :{BLACK}Name STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Name of the content STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Click on a line to see the details{}Click on the checkbox to select it for downloading STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Select all STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Mark all content to be downloaded STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Select upgrades STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Mark all content that is an upgrade for existing content to be downloaded STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Unselect all STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Mark all content to be not downloaded STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Search external websites STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search content not available on OpenTTD's content service on websites not associated to OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter: STR_CONTENT_OPEN_URL :{BLACK}Visit website STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start downloading the selected content STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Total download size: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}CONTENT INFO STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}You have not selected this to be downloaded STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}You have selected this to be downloaded STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}This dependency has been selected to be downloaded STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}You already have this STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}This content is unknown and can't be downloaded in OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}This is a replacement for an existing {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Name: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Version: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Description: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Type: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Download size: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Selected because of: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependencies: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD is built without "zlib" support... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... downloading content is not possible! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Base graphics STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI library STR_CONTENT_TYPE_SCENARIO :Scenario STR_CONTENT_TYPE_HEIGHTMAP :Heightmap STR_CONTENT_TYPE_BASE_SOUNDS :Base sounds STR_CONTENT_TYPE_BASE_MUSIC :Base music STR_CONTENT_TYPE_GAME_SCRIPT :Game script STR_CONTENT_TYPE_GS_LIBRARY :GS library # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Downloading content... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Requesting files... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Currently downloading {STRING} ({NUM} of {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Download complete STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} of {BYTES} downloaded ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Could not connect to the content server... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Downloading failed... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... connection lost STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... file not writable STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Could not decompress the downloaded file STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Missing graphics STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD requires graphics to function but none could be found. Do you allow OpenTTD to download and install these graphics? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Yes, download the graphics STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, quit OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Transparency Options STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Toggle transparency for signs. Ctrl+Click to lock STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Toggle transparency for trees. Ctrl+Click to lock STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Toggle transparency for houses. Ctrl+Click to lock STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Toggle transparency for industries. Ctrl+Click to lock STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Toggle transparency for buildables like stations, depots and waypoints. Ctrl+Click to lock STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Toggle transparency for bridges. Ctrl+Click to lock STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Toggle transparency for structures like lighthouses and antennas. Ctrl+Click to lock STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toggle transparency for catenary. Ctrl+Click to lock STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Set objects invisible instead of transparent # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Coverage area highlight STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Off STR_STATION_BUILD_COVERAGE_ON :{BLACK}On STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Don't highlight coverage area of proposed site STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Highlight coverage area of proposed site STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Accepts: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Supplies: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Join station STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Build a separate station STR_JOIN_WAYPOINT_CAPTION :{WHITE}Join waypoint STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railroad Construction STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railroad Construction STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorail Construction STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev Construction STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Build railroad track. Ctrl toggles build/remove for railroad construction. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Build railroad track using the Autorail mode. Ctrl toggles build/remove for railroad construction. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Build train depot (for buying and maintaining trains). Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convert rail to waypoint. Ctrl enables joining waypoints. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Build railroad station. Ctrl enables joining stations. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Build railroad signals. Ctrl toggles semaphore/light signals{}Dragging builds signals along a straight stretch of track. Ctrl builds signals until the next junction{}Ctrl+Click toggles opening the signal selection window. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Build railroad bridge. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Build railroad tunnel. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toggle build/remove for railroad track, signals, waypoints and stations. Hold Ctrl to also remove the rail of waypoints and stations STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Convert/Upgrade the type of rail. Shift toggles building/showing cost estimate STR_RAIL_NAME_RAILROAD :Railroad STR_RAIL_NAME_ELRAIL :Electrified railroad STR_RAIL_NAME_MONORAIL :Monorail STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Train Depot Orientation STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Select railroad depot orientation # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Waypoint STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Select waypoint type # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Rail Station Selection STR_STATION_BUILD_ORIENTATION :{BLACK}Orientation STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Select railroad station orientation STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Number of tracks STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Select number of platforms for railroad station STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Platform length STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Select length of railroad station STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Build a station with drag & drop STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Select a station class to display STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Select the station type to build STR_STATION_CLASS_DFLT :Default station STR_STATION_CLASS_WAYP :Waypoints # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signal Selection STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Block Signal (semaphore){}This is the most basic type of signal, allowing only one train to be in the same block at the same time STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Entry Signal (semaphore){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Exit Signal (semaphore){}Behaves in the same way as a block signal but is necessary to trigger the correct color on entry & combo pre-signals STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combo Signal (semaphore){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (semaphore){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Block Signal (electric){}This is the most basic type of signal, allowing only one train to be in the same block at the same time STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Entry Signal (electric){}Green as long as there is one or more green exit-signal from the following section of track. Otherwise it shows red STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Exit Signal (electric){}Behaves in the same way as a block signal but is necessary to trigger the correct color on entry & combo pre-signals STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combo Signal (electric){}The combo signal simply acts as both an entry and exit signal. This allows you to build large "trees" of pre-signals STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. Standard path signals can be passed from the back side STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}One-way Path Signal (electric){}A path signal allows more than one train to enter a signal block at the same time, if the train can reserve a path to a safe stopping point. One-way path signals can't be passed from the back side STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signal Convert{}When selected, clicking an existing signal will convert it to the selected signal type and variant. Ctrl+Click will toggle the existing variant. Shift+Click shows estimated conversion cost STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Decrease dragging signal density STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Increase dragging signal density # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Select Rail Bridge STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Select Road Bridge STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Bridge selection - click on your preferred bridge to build it STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspension, Steel STR_BRIDGE_NAME_GIRDER_STEEL :Girder, Steel STR_BRIDGE_NAME_CANTILEVER_STEEL :Cantilever, Steel STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Suspension, Concrete STR_BRIDGE_NAME_WOODEN :Wooden STR_BRIDGE_NAME_CONCRETE :Concrete STR_BRIDGE_NAME_TUBULAR_STEEL :Tubular, Steel STR_BRIDGE_TUBULAR_SILICON :Tubular, Silicon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Road Construction STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Streetcar Construction STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Build road section. Ctrl toggles build/remove for road construction. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Build streetcar track. Ctrl toggles build/remove for streetcar construction. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Build road section using the Autoroad mode. Ctrl toggles build/remove for road construction. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Build streetcar track using the Autostreet mode. Ctrl toggles build/remove for streetcar construction. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Build road vehicle depot (for buying and maintaining vehicles). Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Build tram vehicle depot (for buying and servicing vehicles). Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Build bus station. Ctrl enables joining stations. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Build passenger streetcar station. Ctrl enables joining stations. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Build truck loading bay. Ctrl enables joining stations. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Build freight streetcar station. Ctrl enables joining stations. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Activate/Deactivate one way roads STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Build road bridge. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Build streetcar bridge. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Build road tunnel. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Build streetcar tunnel. Shift toggles building/showing cost estimate STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Toggle build/remove for road construction STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Toggle build/remove for streetcar track construction # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Road Depot Orientation STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Select road vehicle depot orientation STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Streetcar Depot Orientation STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Select streetcar depot orientation # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bus Station Orientation STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Select bus station orientation STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Truck Station Orientation STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Select truck loading bay orientation STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Passenger Streetcar Station Orientation STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Select passenger streetcar station orientation STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Freight Streetcar Station Orientation STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Select freight streetcar station orientation # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Waterways Construction STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Waterways STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Build canals. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Build locks. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Build ship depot (for buying and maintaining ships). Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Build ship dock. Ctrl enables joining stations. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Place a buoy which can be used as a waypoint. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Build aqueduct. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Define water area.{}Make a canal. If Ctrl is held down at sea level, it will flood the surroundings instead STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Place rivers # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Ship Depot Orientation STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Select ship depot orientation # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Dock # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Airports STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Build airport. Ctrl enables joining stations. Shift toggles building/showing cost estimate # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Airport Selection STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Select size/type of airport STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Airport class STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Layout {NUM} STR_AIRPORT_SMALL :Small STR_AIRPORT_CITY :City STR_AIRPORT_METRO :Metropolitan STR_AIRPORT_INTERNATIONAL :International STR_AIRPORT_COMMUTER :Commuter STR_AIRPORT_INTERCONTINENTAL :Intercontinental STR_AIRPORT_HELIPORT :Heliport STR_AIRPORT_HELIDEPOT :Helidepot STR_AIRPORT_HELISTATION :Helistation STR_AIRPORT_CLASS_SMALL :Small airports STR_AIRPORT_CLASS_LARGE :Large airports STR_AIRPORT_CLASS_HUB :Hub airports STR_AIRPORT_CLASS_HELIPORTS :Helicopter airports STR_STATION_BUILD_NOISE :{BLACK}Noise generated: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Landscaping STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land. Dragging lowers the first selected corner and levels the selected area to the new corner height. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land. Dragging raises the first selected corner and levels the selected area to the new corner height. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Level an area of land to the height of the first selected corner. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase land for future use. Shift toggles building/showing cost estimate # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Object Selection STR_OBJECT_BUILD_TOOLTIP :{BLACK}Select object to build. Shift toggles building/showing cost estimate STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Select class of the object to build STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Preview of the object STR_OBJECT_BUILD_SIZE :{BLACK}Size: {GOLD}{NUM} x {NUM} tiles STR_OBJECT_CLASS_LTHS :Lighthouses STR_OBJECT_CLASS_TRNS :Transmitters # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Trees STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Place trees of random type. Shift toggles building/showing cost estimate STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random Trees STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Place rocky areas on landscape STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Define desert area.{}Hold Ctrl to remove it STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Increase area of land to lower/raise STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Decrease area of land to lower/raise STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generate random land STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Create new scenario STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Reset landscape STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Remove all company-owned property from the map STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reset Landscape STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Are you sure you want to remove all company-owned property? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Town Generation STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}New Town STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Found new town. Shift+Click shows only estimated cost STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Random Town STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Found town in random location STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Many random towns STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Cover the map with randomly placed towns STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Town name: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Enter town name STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Click to enter town name STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Random name STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generate new random name STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Town size: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Small STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Medium STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Large STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Random STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Select town size STR_FOUND_TOWN_CITY :{BLACK}City STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Cities grow faster than regular towns{}Depending on settings, they are bigger when founded STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Town road layout: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Select road layout used for this town STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Better roads STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 grid STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 grid STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Random # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Fund new industry STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Choose the appropriate industry from this list STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Many random industries STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Cover the map with randomly placed industries STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cost: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospect STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Build STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fund # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industry chain for {STRING} industry STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industry chain for {STRING} cargo STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Producing industries STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Accepting industries STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Houses STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Click at the industry to see its suppliers and customers STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Click at the cargo to see its suppliers and customers STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Display chain STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Display cargo supplying and accepting industries STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link to minimap STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Select the displayed industries at the minimap as well STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Select cargo STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Select the cargo you want to display STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Select industry STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Select the industry you want to display # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Land Area Information STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cost to clear: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cost to clear: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Revenue when cleared: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Owner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Road owner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Streetcar track owner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Railroad owner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Local authority: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :None STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Co-ordinates: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Built: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Airport class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Airport name: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Airport tile name: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Rough land STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bare land STR_LAI_CLEAR_DESCRIPTION_GRASS :Grass STR_LAI_CLEAR_DESCRIPTION_FIELDS :Fields STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snow-covered land STR_LAI_CLEAR_DESCRIPTION_DESERT :Desert STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} track STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} track with block signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} track with pre-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} track with exit-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} track with combo-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} track with path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} track with one-way path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} track with block and pre-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} track with block and exit-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} track with block and combo-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} track with block and path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} track with block and one-way path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} track with pre- and exit-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} track with pre- and combo-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} track with pre- and path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} track with pre- and one-way path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} track with exit- and combo-signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} track with exit- and path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} track with exit- and one-way path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} track with combo- and path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} track with combo- and one-way path signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} track with path and one-way path signals STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} train depot STR_LAI_ROAD_DESCRIPTION_ROAD :Road STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Road with street lights STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Tree-lined road STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Road vehicle depot STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Road/rail grade crossing STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Streetcar track # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (under construction) STR_LAI_TREE_NAME_TREES :Trees STR_LAI_TREE_NAME_RAINFOREST :Rainforest STR_LAI_TREE_NAME_CACTUS_PLANTS :Cactuses STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Railroad station STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Aircraft hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Airport STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Truck loading area STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bus station STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Ship dock STR_LAI_STATION_DESCRIPTION_BUOY :Buoy STR_LAI_STATION_DESCRIPTION_WAYPOINT :Waypoint STR_LAI_WATER_DESCRIPTION_WATER :Water STR_LAI_WATER_DESCRIPTION_CANAL :Canal STR_LAI_WATER_DESCRIPTION_LOCK :Lock STR_LAI_WATER_DESCRIPTION_RIVER :River STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Coast or riverbank STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ship depot # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Railroad tunnel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Road tunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Steel suspension rail bridge STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Steel girder rail bridge STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Steel cantilever rail bridge STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Reinforced concrete suspension rail bridge STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Wooden rail bridge STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Concrete rail bridge STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Tubular rail bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Steel suspension road bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Steel girder road bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Steel cantilever road bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Reinforced concrete suspension road bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Wooden road bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Concrete road bridge STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Tubular road bridge STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aqueduct STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmitter STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Lighthouse STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Company headquarters STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned land # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game STR_SAVELOAD_LOAD_CAPTION :{WHITE}Load Game STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Save Scenario STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Load Scenario STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Load Heightmap STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Save Heightmap STR_SAVELOAD_HOME_BUTTON :{BLACK}Click here to jump to the current default save/load directory STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} free STR_SAVELOAD_LIST_TOOLTIP :{BLACK}List of drives, directories and saved-game files STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Currently selected name for saved-game STR_SAVELOAD_DELETE_BUTTON :{BLACK}Delete STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Delete the currently selected saved-game STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}World Generation STR_MAPGEN_MAPSIZE :{BLACK}Map size: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Select the size of the map in tiles. The number of available tiles will be slightly smaller STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns: STR_MAPGEN_DATE :{BLACK}Date: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height up one STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height down one STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed STR_MAPGEN_RANDOM :{BLACK}Randomize STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator: STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sea level: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rivers: STR_MAPGEN_SMOOTHNESS :{BLACK}Smoothness: STR_MAPGEN_VARIETY :{BLACK}Variety distribution: STR_MAPGEN_GENERATE :{WHITE}Generate # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Map edges: STR_MAPGEN_NORTHWEST :{BLACK}Northwest STR_MAPGEN_NORTHEAST :{BLACK}Northeast STR_MAPGEN_SOUTHEAST :{BLACK}Southeast STR_MAPGEN_SOUTHWEST :{BLACK}Southwest STR_MAPGEN_BORDER_FREEFORM :{BLACK}Freeform STR_MAPGEN_BORDER_WATER :{BLACK}Water STR_MAPGEN_BORDER_RANDOM :{BLACK}Random STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Random STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Heightmap rotation: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightmap name: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enter a random seed STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Scenario Type STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flat land STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generate a flat land STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Random land STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Height of flat land: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Move the height of flat land down one STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Move the height of flat land up one STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Change height of flat land # Map generation progress STR_GENERATION_WORLD :{WHITE}Generating World... STR_GENERATION_ABORT :{BLACK}Cancel STR_GENERATION_ABORT_CAPTION :{WHITE}Cancel World Generation STR_GENERATION_ABORT_MESSAGE :{YELLOW}Do you really want to cancel the generation? STR_GENERATION_PROGRESS :{WHITE}{NUM}% complete STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}World generation STR_GENERATION_RIVER_GENERATION :{BLACK}River generation STR_GENERATION_TREE_GENERATION :{BLACK}Tree generation STR_GENERATION_OBJECT_GENERATION :{BLACK}Object generation STR_GENERATION_CLEARING_TILES :{BLACK}Rough and rocky area generation STR_GENERATION_SETTINGUP_GAME :{BLACK}Setting up game STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script STR_GENERATION_PREPARING_GAME :{BLACK}Preparing game # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF Settings STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Detailed NewGRF information STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Active NewGRF files STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Inactive NewGRF files STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Select preset: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filter string: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Load the selected preset STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Save preset STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Save the current list as a preset STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Enter name for preset STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Delete preset STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Delete the currently selected preset STR_NEWGRF_SETTINGS_ADD :{BLACK}Add STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Add the selected NewGRF file to your configuration STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Rescan files STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Update the list of available NewGRF files STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Remove STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Remove the selected NewGRF file from the list STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Move Up STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Move the selected NewGRF file up the list STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Move Down STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Move the selected NewGRF file down the list STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}A list of the NewGRF files that are installed STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Set parameters STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Show parameters STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Toggle palette STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Toggle the palette of the selected NewGRF.{}Do this when the graphics from this NewGRF look pink in-game STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Apply changes STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Find missing content online STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Check whether the missing content can be found online STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Filename: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Version: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. compatible version: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palette: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameters: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}No information available STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Matching file not found STR_NEWGRF_SETTINGS_DISABLED :{RED}Disabled STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible with this version of OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Change NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Close STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reset STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Set all parameters to their default value STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Number of parameters: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspect - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parent STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspect the object of the parent scope STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} at {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Rail type STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF variable 60+x parameter (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Next sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Proceed to the next normal sprite, skipping any pseudo/recolor/font sprites and wrapping around at the end STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Go to sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Go to the given sprite. If the sprite is not a normal sprite, proceed to the next normal sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolor/font sprites and wrapping around at the begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Go to sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warning: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}A fatal NewGRF error has occurred: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} will not work with the TTDPatch version reported by OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} is for the {STRING} version of TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} is designed to be used with {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Invalid parameter for {1:STRING}: parameter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} must be loaded before {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} must be loaded after {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} requires OpenTTD version {STRING} or better STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :the GRF file it was designed to translate STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Too many NewGRFs are loaded STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Loading {1:STRING} as static NewGRF with {STRING} could cause desyncs STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Unexpected sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unknown Action 0 property {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Attempt to use invalid ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contains a corrupt sprite. All corrupt sprites will be shown as a red question mark (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}The currently used base graphics set is missing a number of sprites.{}Please update the base graphics set.{}Since you are playing a {YELLOW}development snapshot of OpenTTD{WHITE}, you might also need a {YELLOW}development snapshot of the base graphics{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Requested GRF resources not available (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was disabled by {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Caution! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}You are about to make changes to a running game. This can crash OpenTTD or break the game state. Do not file bug reports about these issues.{}Are you absolutely sure about this? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Can't add file: duplicate GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matching file not found (compatible GRF loaded) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Can't add file: NewGRF file limit reached STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Compatible GRF(s) loaded for missing files STR_NEWGRF_DISABLED_WARNING :{WHITE}Missing GRF file(s) have been disabled STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Missing GRF file(s) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Unpausing can crash OpenTTD. Do not file bug reports for subsequent crashes.{}Do you really want to unpause? # NewGRF status STR_NEWGRF_LIST_NONE :None STR_NEWGRF_LIST_ALL_FOUND :All files present STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Found compatible files STR_NEWGRF_LIST_MISSING :{RED}Missing files # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Behavior of NewGRF '{0:STRING}' is likely to cause desyncs and/or crashes STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' provides incorrect information STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Cargo/refit information for '{1:ENGINE}' differs from purchase list after construction. This might cause autorenew/-replace to fail refitting correctly STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' caused an endless loop in the production callback STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returned unknown/invalid result {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE : # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" s} scanned out of an estimated {NUM} NewGRF{P "" s} STR_NEWGRF_SCAN_ARCHIVES :Scanning for archives # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Sign List - {COMMA} Sign{P "" s} STR_SIGN_LIST_MATCH_CASE :{BLACK}Match case STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Toggle matching case when comparing sign names against the filter string # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Edit sign text STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Go to next sign STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Go to previous sign STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enter a name for the sign # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns STR_TOWN_DIRECTORY_NONE :{ORANGE}- None - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Town names - click on name to center main view on town. Ctrl+Click opens a new viewport on town location STR_TOWN_POPULATION :{BLACK}World population: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Population: {ORANGE}{COMMA}{BLACK} Houses: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargo needed for town growth: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} required STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} required in winter STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} delivered STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (still required) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (delivered) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Town grows every {ORANGE}{COMMA}{BLACK} day{P "" s} (funded) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Town is {RED}not{BLACK} growing STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Noise limit in town: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Center the main view on town location. Ctrl+Click opens a new viewport on town location STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Local authority STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Show information on local authority STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Change town name STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Expand STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Increase size of town STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Delete STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Delete this town completely STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Rename Town # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} local authority STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transport company ratings: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Actions available: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}List of things to do at this town - click on item for more details STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Do it STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Carry out the highlighted action in the list above STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Small advertising campaign STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Medium advertising campaign STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Large advertising campaign STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Fund local road reconstruction STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Build statue of company owner STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Fund new buildings STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Buy exclusive transport rights STR_LOCAL_AUTHORITY_ACTION_BRIBE :Bribe the local authority STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Initiate a small local advertising campaign, to attract more passengers and cargo to your transport services.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Initiate a medium local advertising campaign, to attract more passengers and cargo to your transport services.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Initiate a large local advertising campaign, to attract more passengers and cargo to your transport services.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Fund the reconstruction of the urban road network. Causes considerable disruption to road traffic for up to 6 months.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Build a statue in honor of your company.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Fund the construction of new commercial buildings in the town.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Buy 1 year's exclusive transport rights in town. Town authority will only allow passengers and cargo to use your company's stations.{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bribe the local authority to increase your rating, at the risk of a severe penalty if caught.{}Cost: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Goals STR_GOALS_GLOBAL_TITLE :{BLACK}Global goals: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- None - STR_GOALS_COMPANY_TITLE :{BLACK}Company goals: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on goal to center main view on industry/town/tile. Ctrl+Click opens a new viewport on industry/town/tile location # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Question STR_GOAL_QUESTION_CAPTION_INFORMATION :Information STR_GOAL_QUESTION_CAPTION_WARNING :Warning STR_GOAL_QUESTION_CAPTION_ERROR :Error ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :No STR_GOAL_QUESTION_BUTTON_YES :Yes STR_GOAL_QUESTION_BUTTON_DECLINE :Decline STR_GOAL_QUESTION_BUTTON_ACCEPT :Accept STR_GOAL_QUESTION_BUTTON_IGNORE :Ignore STR_GOAL_QUESTION_BUTTON_RETRY :Retry STR_GOAL_QUESTION_BUTTON_PREVIOUS :Previous STR_GOAL_QUESTION_BUTTON_NEXT :Next STR_GOAL_QUESTION_BUTTON_STOP :Stop STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Go STR_GOAL_QUESTION_BUTTON_CONTINUE :Continue STR_GOAL_QUESTION_BUTTON_RESTART :Restart STR_GOAL_QUESTION_BUTTON_POSTPONE :Postpone STR_GOAL_QUESTION_BUTTON_SURRENDER :Surrender STR_GOAL_QUESTION_BUTTON_CLOSE :Close # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsidies STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsidies on offer for services taking: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} from {STRING} to {STRING}{YELLOW} (by {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- None - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Services already subsidized: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} from {STRING} to {STRING}{YELLOW} ({COMPANY}{YELLOW}, until {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on service to center main view on industry/town. Ctrl+Click opens a new viewport on industry/town location # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Station names - click on name to center main view on station. Ctrl+Click opens a new viewport on station location STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl to select more than one item STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Station{P "" s} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- None - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Select all facilities STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Select all cargo types (including no waiting cargo) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}No cargo of any type is waiting # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Waiting: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} from {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepts: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Local rating of transport service: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Appalling STR_CARGO_RATING_VERY_POOR :Very Poor STR_CARGO_RATING_POOR :Poor STR_CARGO_RATING_MEDIOCRE :Mediocre STR_CARGO_RATING_GOOD :Good STR_CARGO_RATING_VERY_GOOD :Very Good STR_CARGO_RATING_EXCELLENT :Excellent STR_CARGO_RATING_OUTSTANDING :Outstanding ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Center main view on station location. Ctrl+Click opens a new viewport on station location STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Change name of station STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Show all trains which have this station on their schedule STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Show all road vehicles which have this station on their schedule STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Show all aircraft which have this station on their schedule STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Show all ships which have this station on their schedule STR_STATION_VIEW_RENAME_STATION_CAPTION :Rename station/loading area STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Close airport STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Prevent aircraft from landing on this airport # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Center main view on waypoint location. Ctrl+Click opens a new viewport on waypoint location STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Change waypoint name STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Center main view on buoy location. Ctrl+Click opens a new viewport on buoy location STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Change buoy name STR_EDIT_WAYPOINT_NAME :{WHITE}Edit waypoint name # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finances {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Expenditure/Income STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construction STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}New Vehicles STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Train Running Costs STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Road Vehicle Running Costs STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Aircraft Running Costs STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Ship Running Costs STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Property Maintenance STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Train Income STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Road Vehicle Income STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Aircraft Income STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ship Income STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Loan Interest STR_FINANCES_SECTION_OTHER :{GOLD}Other STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance STR_FINANCES_LOAN_TITLE :{WHITE}Loan STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible STR_FINANCES_REPAY_BUTTON :{BLACK}Repay {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Repay part of loan. Ctrl+Click repays as much loan as possible STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastructure # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(President) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Inaugurated: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Color Scheme: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehicles: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} train{P "" s} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} road vehicle{P "" s} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} aircraft STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} ship{P "" s} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}None STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Company value: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% owned by {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastructure: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} rail piece{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} road piece{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} water tile{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} station tile{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} airport{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}None STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Build HQ STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Build company headquarters STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}View HQ STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}View company headquarters STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Relocate HQ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rebuild company headquarters elsewhere for 1% cost of company value. Shift+Click shows estimated cost without relocating HQ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}View detailed infrastructure counts STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}New Face STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Select new face for president STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Color Scheme STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Change the company vehicle livery STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Company Name STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Change the company name STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}President Name STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Change the president's name STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Buy 25% share in company STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Sell 25% share in company STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Buy 25% share in this company. Shift+Click shows estimated cost without purchasing any share STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sell 25% share in this company. Shift+Click shows estimated income without selling any share STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Company Name STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :President's Name STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company.{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructure of {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Rail pieces: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signals STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Road pieces: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Road STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Streetcar STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Water tiles: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canals STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stations: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Station tiles STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Airports STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/yr ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/yr # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- None - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transported) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transported) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industry names - click on name to center main view on industry. Ctrl+Click opens a new viewport on industry location # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Production last month: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transported) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Center the main view on industry location. Ctrl+Click opens a new viewport on industry location STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Production level: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Cargo waiting to be processed: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production (multiple of 8, up to 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Change production level (percentage, up to 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Train{P "" s} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Road Vehicle{P "" s} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Ship{P "" s} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aircraft STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trains - click on train for information STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Road vehicles - click on vehicle for information STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Ships - click on ship for information STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aircraft - click on aircraft for information STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit this year: {CURRENCY_LONG} (last year: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Available Trains STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Available Road Vehicles STR_VEHICLE_LIST_AVAILABLE_SHIPS :Available Ships STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Available Aircraft STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}See a list of available engine designs for this vehicle type STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Manage list STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Send instructions to all vehicles in this list STR_VEHICLE_LIST_REPLACE_VEHICLES :Replace vehicles STR_VEHICLE_LIST_SEND_FOR_SERVICING :Send for Maintenance STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Send to Depot STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Send to Depot STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send to Depot STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send to Hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Click to stop all vehicles in the list STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Click to start all the vehicles in the list STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Shared orders of {COMMA} Vehicle{P "" s} # Group window STR_GROUP_ALL_TRAINS :All trains STR_GROUP_ALL_ROAD_VEHICLES :All road vehicles STR_GROUP_ALL_SHIPS :All ships STR_GROUP_ALL_AIRCRAFTS :All aircraft STR_GROUP_DEFAULT_TRAINS :Ungrouped trains STR_GROUP_DEFAULT_ROAD_VEHICLES :Ungrouped road vehicles STR_GROUP_DEFAULT_SHIPS :Ungrouped ships STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircraft STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace STR_GROUP_ADD_SHARED_VEHICLE :Add shared vehicles STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehicles STR_GROUP_RENAME_CAPTION :{BLACK}Rename a group # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :New Rail Vehicles STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :New Electric Rail Vehicles STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :New Monorail Vehicles STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :New Maglev Vehicles STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :New Rail Vehicles STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :New Road Vehicles STR_BUY_VEHICLE_SHIP_CAPTION :New Ships STR_BUY_VEHICLE_AIRCRAFT_CAPTION :New Aircraft STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} Weight: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Speed: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Speed on ocean: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Speed on canal/river: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Running Cost: {GOLD}{CURRENCY_LONG}/yr STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacity: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(refittable) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Designed: {GOLD}{NUM}{BLACK} Life: {GOLD}{COMMA} year{P "" s} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Max. Reliability: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cost: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Weight: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} Speed: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacity: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Powered Wagons: {GOLD}+{POWER}{BLACK} Weight: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Refittable to: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :All cargo types STR_PURCHASE_INFO_ALL_BUT :All but {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Tractive Effort: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Range: {GOLD}{COMMA} tiles STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Train vehicle selection list - click on vehicle for information STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Road vehicle selection list - click on vehicle for information STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Ship selection list - click on ship for information STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aircraft selection list - click on aircraft for information STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Buy Vehicle STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Buy Vehicle STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Buy Ship STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Buy Aircraft STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Buy the highlighted train vehicle. Shift+Click shows estimated cost without purchase STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Buy the highlighted road vehicle. Shift+Click shows estimated cost without purchase STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Buy the highlighted ship. Shift+Click shows estimated cost without purchase STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Buy the highlighted aircraft. Shift+Click shows estimated cost without purchase STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Rename STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Rename STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Rename STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Rename STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Rename train vehicle type STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Rename road vehicle type STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Rename ship type STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Rename aircraft type STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Rename train vehicle type STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Rename road vehicle type STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Rename ship type STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Rename aircraft type # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Change name of depot STR_DEPOT_RENAME_DEPOT_CAPTION :Rename depot STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vehicle{P "" s}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trains - drag vehicle with left-click to add/remove from train, right-click for information. Hold Ctrl to make both functions apply to the following chain STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vehicles - right-click on vehicle for information STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Ships - right-click on ship for information STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aircraft - right-click on aircraft for information STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Drag train vehicle to here to sell it STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Drag road vehicle to here to sell it STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Drag ship to here to sell it STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Drag aircraft to here to sell it STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Drag train engine here to sell the whole train STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Sell all trains in the depot STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Sell all road vehicles in the depot STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Sell all ships in the depot STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Sell all aircraft in the hangar STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Autoreplace all trains in the depot STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autoreplace all road vehicles in the depot STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autoreplace all ships in the depot STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autoreplace all aircraft in the hangar STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}New Vehicles STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}New Vehicles STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}New Ships STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}New Aircraft STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Buy new train vehicle STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Buy new road vehicle STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Buy new ship STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Buy new aircraft STR_DEPOT_CLONE_TRAIN :{BLACK}Clone Train STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clone Vehicle STR_DEPOT_CLONE_SHIP :{BLACK}Clone Ship STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clone Aircraft STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}This will buy a copy of a train including all cars. Click this button and then on a train inside or outside the depot. Ctrl+Click share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}This will buy a copy of a road vehicle. Click this button and then on a road vehicle inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}This will buy a copy of a ship. Click this button and then on a ship inside or outside the depot. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}This will buy a copy of an aircraft. Click this button and then on an aircraft inside or outside the hangar. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Center main view on train depot location. Ctrl+Click opens a new viewport on train depot location STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Center main view on road vehicle depot location. Ctrl+Click opens a new viewport on road depot location STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Center main view on ship depot location. Ctrl+Click opens a new viewport on ship depot location STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Center main view on hangar location. Ctrl+Click opens a new viewport on hangar location STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Get a list of all trains with the current depot in their orders STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Get a list of all road vehicles with the current depot in their orders STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Get a list of all ships with the current depot in their orders STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Get a list of all aircraft with any hangar at this airport in their orders STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Click to stop all trains inside the depot STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Click to stop all road vehicles inside the depot STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Click to stop all ships inside the depot STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Click to stop all aircraft inside the hangar STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Click to start all trains inside the depot STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Click to start all the road vehicles inside the depot STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Click to start all ships inside the depot STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Click to start all aircraft inside the hangar STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}You are about to sell all the vehicles in the depot. Are you sure? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Message from vehicle manufacturer STR_ENGINE_PREVIEW_MESSAGE :{GOLD}We have just designed a new {STRING} - would you be interested in a year's exclusive use of this vehicle, so we can see how it performs before making it universally available ? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :railroad locomotive STR_ENGINE_PREVIEW_ROAD_VEHICLE :road vehicle STR_ENGINE_PREVIEW_AIRCRAFT :aircraft STR_ENGINE_PREVIEW_SHIP :ship STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail locomotive STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev locomotive STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER}{}Running Cost: {CURRENCY_LONG}/yr{}Capacity: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER} Max. T.E.: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/yr{}Capacity: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Train STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road Vehicle STR_REPLACE_VEHICLE_SHIP :Ship STR_REPLACE_VEHICLE_AIRCRAFT :Aircraft 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_VEHICLES_START :{BLACK}Start Replacing Vehicles STR_REPLACE_VEHICLES_NOW :Replace all vehicles now STR_REPLACE_VEHICLES_WHEN_OLD :Replace only old vehicles STR_REPLACE_HELP_START_BUTTON :{BLACK}Press to begin replacement of the left selected engine type with the right selected engine type STR_REPLACE_NOT_REPLACING :{BLACK}Not replacing STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No vehicle selected STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} when old STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Replacing Vehicles STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Press to stop the replacement of the engine type selected on the left STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Replacing: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Switch between engine and car replacement windows STR_REPLACE_ENGINES :Engines STR_REPLACE_WAGONS :Cars STR_REPLACE_HELP_RAILTYPE :{BLACK}Choose the rail type 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_RAIL_VEHICLES :Rail Vehicles STR_REPLACE_ELRAIL_VEHICLES :Electrified Rail Vehicles STR_REPLACE_MONORAIL_VEHICLES :Monorail Vehicles STR_REPLACE_MAGLEV_VEHICLES :Maglev Vehicles STR_REPLACE_REMOVE_WAGON :{BLACK}Car removal: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Make autoreplace keep the length of a train the same by removing cars (starting at the front), if replacing the engine would make the train longer # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Center main view on train's location. Ctrl+Click will follow train in main view STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Center main view on vehicle's location. Ctrl+Click will follow vehicle in main view STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Center main view on ship's location. Ctrl+Click will follow ship in main view STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Center main view on aircraft's location. Ctrl+Click will follow aircraft in main view STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send train to depot. Ctrl+Click will only service STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send vehicle to depot. Ctrl+Click will only service STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send ship to depot. Ctrl+Click will only service STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send aircraft to hangar. Ctrl+Click will only service STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}This will buy a copy of the train including all cars. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}This will buy a copy of the road vehicle. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}This will buy a copy of the ship. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}This will buy a copy of the aircraft. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Force train to proceed without waiting for signal to clear STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Refit train to carry a different cargo type STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Refit road vehicle to carry a different cargo type STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Refit ship to carry a different cargo type STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Refit aircraft to carry a different cargo type STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Reverse direction of train STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Force vehicle to turn around STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Show train's orders. Ctrl+Click to show train's timetable STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Show vehicle's orders. Ctrl+Click to show vehicle's timetable STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Show ship's orders. Ctrl+Click to show ship's timetable STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Show aircraft's orders. Ctrl+Click to show aircraft's timetable STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Show train details STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Show road vehicle details STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Show ship details STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Show aircraft details STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Current train action - click to stop/start train. Ctrl+Click to scroll to destination STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Current vehicle action - click to stop/start vehicle. Ctrl+Click to scroll to destination STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Current ship action - click to stop/start ship. Ctrl+Click to scroll to destination STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Current aircraft action - click to stop/start aircraft. Ctrl+Click to scroll to destination # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Loading / Unloading STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Leaving STR_VEHICLE_STATUS_CRASHED :{RED}Crashed! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Broken down STR_VEHICLE_STATUS_STOPPED :{RED}Stopped STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stopping, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}No power STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Waiting for free path STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Too far to next destination STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Heading for {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}No orders, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Heading for {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Maintenance at {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Stopped STR_VEHICLE_COMMAND_STOPPED :{RED}Stopped STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Started STR_VEHICLE_COMMAND_STARTED :{GREEN}Started # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Details) STR_VEHICLE_NAME_BUTTON :{BLACK}Name STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Name train STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Name road vehicle STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Name ship STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Name aircraft STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Age: {LTBLUE}{STRING}{BLACK} Running Cost: {LTBLUE}{CURRENCY_LONG}/yr # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} year{P "" s} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} year{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. speed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Range: {LTBLUE}{COMMA} tiles STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profit this year: {LTBLUE}{CURRENCY_LONG} (last year: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Reliability: {LTBLUE}{COMMA}% {BLACK}Breakdowns since last maintenance: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Built: {LTBLUE}{NUM}{BLACK} Value: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Capacity: {LTBLUE}None{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacity: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacity: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacity: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Maintenance interval: {LTBLUE}{COMMA}days{BLACK} Last maintenance: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Maintenance interval: {LTBLUE}{COMMA}%{BLACK} Last maintenance: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Increase maintenance interval by 10. Ctrl+Click increases maintenance interval by 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Decrease maintenance interval by 10. Ctrl+Click decreases maintenance interval by 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Change servicing interval type STR_VEHICLE_DETAILS_DEFAULT :Default STR_VEHICLE_DETAILS_DAYS :Days STR_VEHICLE_DETAILS_PERCENT :Percentage STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Name train STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Name road vehicle STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Name ship STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Name aircraft # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Built: {LTBLUE}{NUM}{BLACK} Value: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Value: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total cargo capacity of this train: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Empty STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} from {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} from {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Cargo STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Show details of cargo carried STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Information STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Show details of train vehicles STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Capacities STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Show capacities of each vehicle STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Total Cargo STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Show total capacity of train, split by cargo type STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacity: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Refit) STR_REFIT_TITLE :{GOLD}Select cargo type to carry: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}New capacity: {GOLD}{CARGO_LONG}{}{BLACK}Cost of refit: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}New capacity: {GOLD}{CARGO_LONG}{}{BLACK}Income from refit: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}New capacity: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cost of refit: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}New capacity: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Income from refit: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Select the vehicles to refit. Dragging with the mouse allows to select multiple vehicles. Clicking on an empty space will select the whole vehicle. Ctrl+Click will select a vehicle and the following chain STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Select type of cargo for train to carry STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Select type of cargo for road vehicle to carry STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Select type of cargo for ship to carry STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Select type of cargo for aircraft to carry STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Refit train STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Refit road vehicle STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Refit ship STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Refit aircraft STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Refit train to carry highlighted cargo type STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Refit road vehicle to carry highlighted cargo type STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Refit ship to carry highlighted cargo type STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Refit aircraft to carry highlighted cargo type # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Orders) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Timetable STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Switch to the timetable view STR_ORDERS_LIST_TOOLTIP :{BLACK}Order list - click on an order to highlight it. Ctrl+Click scrolls to the order's destination STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - End of Orders - - STR_ORDERS_END_OF_SHARED_ORDERS :- - End of Shared Orders - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Non-stop STR_ORDER_GO_TO :Go to STR_ORDER_GO_NON_STOP_TO :Go non-stop to STR_ORDER_GO_VIA :Go via STR_ORDER_GO_NON_STOP_VIA :Go non-stop via STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Change the stopping behavior of the highlighted order STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Full load any cargo STR_ORDER_DROP_LOAD_IF_POSSIBLE :Load if available STR_ORDER_DROP_FULL_LOAD_ALL :Full load all cargo STR_ORDER_DROP_FULL_LOAD_ANY :Full load any cargo STR_ORDER_DROP_NO_LOADING :No loading STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Change the loading behavior of the highlighted order STR_ORDER_TOGGLE_UNLOAD :{BLACK}Unload all STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Unload if accepted STR_ORDER_DROP_UNLOAD :Unload all STR_ORDER_DROP_TRANSFER :Transfer STR_ORDER_DROP_NO_UNLOADING :No unloading STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change the unloading behavior of the highlighted order STR_ORDER_REFIT :{BLACK}Refit STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it STR_ORDER_DROP_REFIT_AUTO :Fixed cargo STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo STR_ORDER_SERVICE :{BLACK}Maintenance STR_ORDER_DROP_GO_ALWAYS_DEPOT :Always go STR_ORDER_DROP_SERVICE_DEPOT :Maintain if needed STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_SERVICE_TOOLTIP :{BLACK}Skip this order unless maintenance is needed STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vehicle data to base jumping on # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Load percentage STR_ORDER_CONDITIONAL_RELIABILITY :Reliability STR_ORDER_CONDITIONAL_MAX_SPEED :Maximum speed STR_ORDER_CONDITIONAL_AGE :Age (years) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Requires maintenance STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Always STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Remaining lifetime (years) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}How to compare the vehicle data to the given value STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :is equal to STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :is not equal to STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :is less than STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :is less or equal to STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :is more than STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :is more or equal to STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :is true STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :is false STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}The value to compare the vehicle data against STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Enter value to compare against STR_ORDERS_SKIP_BUTTON :{BLACK}Skip STR_ORDERS_SKIP_TOOLTIP :{BLACK}Skip the current order, and start the next. Ctrl+Click skips to the selected order STR_ORDERS_DELETE_BUTTON :{BLACK}Delete STR_ORDERS_DELETE_TOOLTIP :{BLACK}Delete the highlighted order STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Delete all orders STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stop sharing STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stop sharing the order list. Ctrl+Click additionally deletes all orders for this vehicle STR_ORDERS_GO_TO_BUTTON :{BLACK}Go To STR_ORDER_GO_TO_NEAREST_DEPOT :Go to nearest depot STR_ORDER_GO_TO_NEAREST_HANGAR :Go to nearest hangar STR_ORDER_CONDITIONAL :Conditional order jump STR_ORDER_SHARE :Share orders STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Insert a new order before the highlighted order, or add to end of list. Ctrl makes station orders 'full load any cargo', waypoint orders 'non-stop' and depot orders 'maintenance'. 'Share orders' or Ctrl lets this vehicle share orders with the selected vehicle. Clicking a vehicle copies the orders from that vehicle. A depot order disables automatic maintenance of the vehicle STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Show all vehicles that share this schedule # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Go via {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Go non-stop via {WAYPOINT} STR_ORDER_SERVICE_AT :Maintain at STR_ORDER_SERVICE_NON_STOP_AT :Maintain non-stop at STR_ORDER_NEAREST_DEPOT :the nearest STR_ORDER_NEAREST_HANGAR :the nearest Hangar STR_ORDER_TRAIN_DEPOT :Train Depot STR_ORDER_ROAD_VEHICLE_DEPOT :Road Vehicle Depot STR_ORDER_SHIP_DEPOT :Ship Depot STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Refit to {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRING} and stop) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Implicit) STR_ORDER_FULL_LOAD :(Full load) STR_ORDER_FULL_LOAD_ANY :(Full load any cargo) STR_ORDER_NO_LOAD :(No loading) STR_ORDER_UNLOAD :(Unload and take cargo) STR_ORDER_UNLOAD_FULL_LOAD :(Unload and wait for full load) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Unload and wait for any full load) STR_ORDER_UNLOAD_NO_LOAD :(Unload and leave empty) STR_ORDER_TRANSFER :(Transfer and take cargo) STR_ORDER_TRANSFER_FULL_LOAD :(Transfer and wait for full load) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transfer and wait for any full load) STR_ORDER_TRANSFER_NO_LOAD :(Transfer and leave empty) STR_ORDER_NO_UNLOAD :(No unloading and take cargo) STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading and wait for full load) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load) STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading) STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING}) STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING}) STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING}) STR_ORDER_AUTO_REFIT_ANY :available cargo STR_ORDER_STOP_LOCATION_NEAR_END :[near end] STR_ORDER_STOP_LOCATION_MIDDLE :[middle] STR_ORDER_STOP_LOCATION_FAR_END :[far end] STR_ORDER_OUT_OF_RANGE :{RED} (Next destination is out of range) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Jump to order {COMMA} STR_ORDER_CONDITIONAL_NUM :Jump to order {COMMA} when {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Jump to order {COMMA} when {STRING} {STRING} STR_INVALID_ORDER :{RED} (Invalid Order) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Timetable) STR_TIMETABLE_ORDER_VIEW :{BLACK}Orders STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Switch to the order view STR_TIMETABLE_TOOLTIP :{BLACK}Timetable - click on an order to highlight it STR_TIMETABLE_NO_TRAVEL :No travel STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled) STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING} with at most {VELOCITY} STR_TIMETABLE_STAY_FOR :and stay for {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING} STR_TIMETABLE_DAYS :{COMMA} day{P "" s} STR_TIMETABLE_TICKS :{COMMA} tick{P "" s} STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING} to complete STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING} to complete (not all timetabled) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}This vehicle is currently running on time STR_TIMETABLE_STATUS_LATE :{BLACK}This vehicle is currently running {STRING} late STR_TIMETABLE_STATUS_EARLY :{BLACK}This vehicle is currently running {STRING} early STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This timetable has not yet started STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Start date STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable STR_TIMETABLE_CHANGE_TIME :{BLACK}Change Time STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take STR_TIMETABLE_CLEAR_TIME :{BLACK}Clear Time STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Clear the amount of time for the highlighted order STR_TIMETABLE_CHANGE_SPEED :{BLACK}Change Speed Limit STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Change the maximum travel speed of the highlighted order STR_TIMETABLE_CLEAR_SPEED :{BLACK}Clear Speed Limit STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Clear the maximum travel speed of the highlighted order STR_TIMETABLE_RESET_LATENESS :{BLACK}Reset Late Counter STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reset the lateness counter, so the vehicle will be on time STR_TIMETABLE_AUTOFILL :{BLACK}Autofill STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fill the timetable automatically with the values from the next journey (Ctrl+Click to try to keep waiting times) STR_TIMETABLE_EXPECTED :{BLACK}Expected STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Set date STR_DATE_SET_DATE :{BLACK}Set date STR_DATE_SET_DATE_TOOLTIP :{BLACK}Use the selected date as starting date for the timetable STR_DATE_DAY_TOOLTIP :{BLACK}Select day STR_DATE_MONTH_TOOLTIP :{BLACK}Select month STR_DATE_YEAR_TOOLTIP :{BLACK}Select year # AI debug window STR_AI_DEBUG :{WHITE}AI/Game Script Debug STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Name of the script STR_AI_DEBUG_SETTINGS :{BLACK}Settings STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Change the settings of the script STR_AI_DEBUG_RELOAD :{BLACK}Reload AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Kill the AI, reload the script, and restart the AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Enable/disable breaking when an AI log message matches the break string STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Break on: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Break on STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}When an AI log message matches this string, the game is paused STR_AI_DEBUG_MATCH_CASE :{BLACK}Match case STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Toggle matching case when comparing AI log messages against the break string STR_AI_DEBUG_CONTINUE :{BLACK}Continue STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Unpause and continue the AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}View debug output of this AI STR_AI_GAME_SCRIPT :{BLACK}Game Script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Check the Game Script log STR_ERROR_AI_NO_AI_FOUND :No suitable AI found to load.{}This AI is a dummy AI and won't do anything.{}You can download several AIs via the 'Online Content' system STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}One of the running scripts crashed. Please report this to the script author with a screenshot of the AI/Game Script Debug Window STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Game Script Debug window is only available for the server # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/Game Script Configuration STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}The Game Script that will be loaded in the next game STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}The AIs that will be loaded in the next game STR_AI_CONFIG_HUMAN_PLAYER :Human player STR_AI_CONFIG_RANDOM_AI :Random AI STR_AI_CONFIG_NONE :(none) STR_AI_CONFIG_MOVE_UP :{BLACK}Move Up STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Move selected AI up in the list STR_AI_CONFIG_MOVE_DOWN :{BLACK}Move Down STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Move selected AI down in the list STR_AI_CONFIG_GAMESCRIPT :{SILVER}Game Script STR_AI_CONFIG_AI :{SILVER}AIs STR_AI_CONFIG_CHANGE :{BLACK}Select {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Game Script STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Load another script STR_AI_CONFIG_CONFIGURE :{BLACK}Configure STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configure the parameters of the Script # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Available {STRING} STR_AI_LIST_CAPTION_AI :AIs STR_AI_LIST_CAPTION_GAMESCRIPT :Game Scripts STR_AI_LIST_TOOLTIP :{BLACK}Click to select a script STR_AI_LIST_AUTHOR :{LTBLUE}Author: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Version: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Accept STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Select highlighted script STR_AI_LIST_CANCEL :{BLACK}Cancel STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Don't change the script # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameters STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}Close STR_AI_SETTINGS_RESET :{BLACK}Reset STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Number of days to start this AI after the previous one (give or take): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} license of {STRING} STR_TEXTFILE_VIEW_README :{BLACK}View readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog STR_TEXTFILE_VIEW_LICENCE :{BLACK}License # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cost: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Cost: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Income: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Income: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transfer: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transfer: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Estimated Cost: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Estimated Income: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Saving still in progress,{}please wait until it is finished! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autosave failed STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive STR_ERROR_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file STR_ERROR_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :File not readable STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :File not writable STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Data integrity check failed STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Game was saved in version without streetcar support. All streetcars have been removed # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Map generation aborted...{}... no suitable town locations STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... there is no town in this scenario STR_ERROR_PNGMAP :{WHITE}Can't load landscape from PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... file not found STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... could not convert image type. 8 or 24-bit PNG image needed STR_ERROR_PNGMAP_MISC :{WHITE}... something just went wrong (probably corrupted file) STR_ERROR_BMPMAP :{WHITE}Can't load landscape from BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... could not convert image type STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... image is too large STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Scale warning STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Resizing source map too much is not recommended. Continue with the generation? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Only a fallback sound set was found. If you want sounds, install a sound set via the content download system # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Huge screenshot STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}The screenshot will have a resolution of {COMMA} x {COMMA} pixels. Taking the screenshot may take a while. Do you want to continue? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot successfully saved as '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot failed! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Message STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Message from {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Off edge of map STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Too close to edge of map STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Not enough cash - requires {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Flat land required STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land sloped in wrong direction STR_ERROR_CAN_T_DO_THIS :{WHITE}Can't do this... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Building must be demolished first STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Can't clear this area... STR_ERROR_SITE_UNSUITABLE :{WHITE}... site unsuitable STR_ERROR_ALREADY_BUILT :{WHITE}... already built STR_ERROR_OWNED_BY :{WHITE}... owned by {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... area is owned by another company STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... terraforming limit reached STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... tile clearing limit reached STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... tree planting limit reached STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Name must be unique STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} in the way STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Not allowed while paused # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} local authority refuses to allow this STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} local authority refuses to allow another airport to be built in this town STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} local authority refuses permission for airport due to noise concerns STR_ERROR_BRIBE_FAILED :{WHITE}Your attempted bribery has been discovered by a regional investigator # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Can't raise land here... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Can't lower land here... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Can't level land here... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Excavation would damage tunnel STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... already at sea level STR_ERROR_TOO_HIGH :{WHITE}... too high STR_ERROR_ALREADY_LEVELLED :{WHITE}... already flat # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Can't change company name... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Can't change president's name... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maximum permitted loan size is {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Can't borrow any more money... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... no loan to repay STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} required STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Can't repay loan... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Can't give away money that is loaned from the bank... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Can't buy company... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Can't buy 25% share in this company... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Can't sell 25% share in this company... STR_ERROR_PROTECTED :{WHITE}This company is not old enough to trade shares yet... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Can't rename town... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't found town here... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Can't expand town... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... too close to edge of map STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... too close to another town STR_ERROR_TOO_MANY_TOWNS :{WHITE}... too many towns STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... there is no more space on the map STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Advanced Settings->Economy->Towns STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the center of this town # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... too many industries STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't generate industries... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Can't build {STRING} here... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Can't construct this industry type here... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... too close to another industry STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... must found town first STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... only one allowed per town STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... can only be built in towns with a population of at least 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... can only be built in rainforest areas STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... can only be built in desert areas STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... can only be built in towns (replacing houses) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... can only be built near the center of towns STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... can only be built in low areas STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... can only be positioned near edges of map STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... forest can only be planted above snow-line STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... can only be built above the snow-line STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... can only be built below the snow-line # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Can't build railroad station here... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Can't build bus station... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Can't build truck station... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Can't build passenger streetcar station... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Can't build freight streetcar station... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Can't build dock here... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Can't build airport here... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins more than one existing station/loading area STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... station too spread out STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Too many stations/loading areas STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Too many railroad station parts STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Too many bus stops STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Too many truck stations STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Too close to another station/loading area STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Too close to another dock STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Too close to another airport STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Can't rename station... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... this is a town owned road STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... road facing in the wrong direction STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive through stops can't have corners STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive through stops can't have junctions # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Must remove railroad station first STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Can't remove bus station... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Can't remove truck station... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Can't remove passenger streetcar station... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Can't remove freight streetcar station... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Must remove road stop first STR_ERROR_THERE_IS_NO_STATION :{WHITE}... there is no station here STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Must demolish railroad station first STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Must demolish bus station first STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Must demolish truck station first STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Must demolish passenger streetcar station first STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Must demolish freight streetcar station first STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Must demolish dock first STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Must demolish airport first # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Adjoins more than one existing waypoint STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Too close to another waypoint STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Can't build train waypoint here... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Can't place buoy here... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Can't change waypoint name... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't remove train waypoint here... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Must remove rail waypoint first STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... buoy in the way STR_ERROR_BUOY_IS_IN_USE :{WHITE}... buoy is in use by another company! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Can't build train depot here... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Can't build road vehicle depot here... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Can't build streetcar depot here... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Can't build ship depot here... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Can't rename depot... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... must be stopped inside a depot STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... must be stopped inside a depot STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... must be stopped inside a depot STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... must be stopped inside a hangar STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Trains can only be altered when stopped inside a depot STR_ERROR_TRAIN_TOO_LONG :{WHITE}Train too long STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Can't reverse direction of vehicle... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... consists of multiple units STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Incompatible rail types STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Can't move vehicle... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}The rear engine will always follow its front counterpart STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Unable to find route to local depot STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Unable to find local depot STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Wrong depot type # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} is too long after replacement STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}No autoreplace/renew rules applied STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(money limit) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Impossible track combination STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Must remove signals first STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}No suitable railroad track STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Must remove railroad track first STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Road is one way or blocked STR_ERROR_CROSSING_DISALLOWED :{WHITE}Grade crossings not allowed for this rail type STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Can't build signals here... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Can't build railroad track here... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Can't remove railroad track from here... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Can't remove signals from here... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Can't convert signals here... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... there is no railroad track STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... there are no signals STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Can't convert rail type here... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Must remove road first STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... one way roads can't have junctions STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Can't build road here... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Can't build streetcar track here... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Can't remove road from here... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Can't remove streetcar track from here... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... there is no road STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... there is no streetcar track # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Can't build canals here... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Can't build locks here... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Can't place rivers here... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... must be built on water STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... can't build on water STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... can't build on open sea STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... can't build on canal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... can't build on river STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Must demolish canal first STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Can't build aqueduct here... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... tree already here STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... wrong terrain for tree type STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Can't plant tree here... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Can't build bridge here... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must demolish bridge first STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Can't start and end in the same spot STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bridge heads not at the same level STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bridge is too low for the terrain STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ends of bridge must both be on land STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... bridge too long STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Bridge would end out of the map # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Can't build tunnel here... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Site unsuitable for tunnel entrance STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Must demolish tunnel first STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Another tunnel in the way STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunnel would end out of the map STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Unable to excavate land for other end of tunnel STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunnel too long # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... too many objects STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Can't build object... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Object in the way STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... company headquarters in the way STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Can't purchase this land area... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... you already own it! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Can't create group... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Can't delete this group... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Can't rename group... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Can't remove all vehicles from this group... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Can't add the vehicle to this group... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Can't add shared vehicles to group... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Train in the way STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Road vehicle in the way STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Ship in the way STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aircraft in the way STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Can't refit train... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Can't refit road vehicle... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Can't refit ship... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Can't refit aircraft... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Can't name train... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Can't name road vehicle... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Can't name ship... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Can't name aircraft... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Can't stop/start train... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Can't stop/start road vehicle... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Can't stop/start ship... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Can't stop/start aircraft... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Can't send train to depot... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Can't send road vehicle to depot... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Can't send ship to depot... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Can't send aircraft to hangar... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Can't buy railroad vehicle... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Can't buy road vehicle... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Can't buy ship... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Can't buy aircraft... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Can't rename train vehicle type... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Can't rename road vehicle type... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Can't rename ship type... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Can't rename aircraft type... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Can't sell railroad vehicle... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Can't sell road vehicle... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Can't sell ship... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Can't sell aircraft... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vehicle is not available STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vehicle is not available STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Ship is not available STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aircraft is not available STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Too many vehicles in game STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't change maintenance interval... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train... STR_ERROR_TRAIN_START_NO_POWER :Train has no power STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Can't make road vehicle turn around... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aircraft is in flight # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}No more space for orders STR_ERROR_TOO_MANY_ORDERS :{WHITE}Too many orders STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Can't insert new order... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Can't delete this order... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Can't modify this order... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Can't move this order... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Can't skip current order... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Can't skip to selected order... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vehicle can't go to all stations STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vehicle can't go to that station STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... a vehicle sharing this order can't go to that station STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Can't share order list... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Can't stop sharing order list... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Can't copy order list... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... too far from previous destination STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... aircraft has not enough range # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Can't timetable vehicle... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicles can only wait at stations STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}This vehicle is not stopping at this station # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... too many signs STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Can't place sign here... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Can't change sign name... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Can't delete sign... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :A simulation game based on Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition graphics. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Original Transport Tycoon Deluxe DOS (German) edition graphics. STR_BASEGRAPHICS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition graphics. STR_BASESOUNDS_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition sounds. STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition sounds. STR_BASESOUNDS_NONE_DESCRIPTION :A sound pack without any sounds. STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition music. STR_BASEMUSIC_NONE_DESCRIPTION :A music pack without actual music. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Tall office block STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Office block STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Small block of apartments STR_TOWN_BUILDING_NAME_CHURCH_1 :Church STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Large office block STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Town houses STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Statue STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fountain STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Office block STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Shops and offices STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modern office building STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Warehouse STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Office block STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Old houses STR_TOWN_BUILDING_NAME_COTTAGES_1 :Cottages STR_TOWN_BUILDING_NAME_HOUSES_1 :Houses STR_TOWN_BUILDING_NAME_FLATS_1 :Apartments STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Tall office block STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Shops and offices STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Shops and offices STR_TOWN_BUILDING_NAME_THEATER_1 :Theater STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadium STR_TOWN_BUILDING_NAME_OFFICES_1 :Offices STR_TOWN_BUILDING_NAME_HOUSES_2 :Houses STR_TOWN_BUILDING_NAME_CINEMA_1 :Cinema STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Shopping mall STR_TOWN_BUILDING_NAME_IGLOO_1 :Igloo STR_TOWN_BUILDING_NAME_TEPEES_1 :Tepees STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Teapot-House STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Piggy-Bank ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Coal Mine STR_INDUSTRY_NAME_POWER_STATION :Power Station STR_INDUSTRY_NAME_SAWMILL :Sawmill STR_INDUSTRY_NAME_FOREST :Forest STR_INDUSTRY_NAME_OIL_REFINERY :Oil Refinery STR_INDUSTRY_NAME_OIL_RIG :Oil Rig STR_INDUSTRY_NAME_FACTORY :Factory STR_INDUSTRY_NAME_PRINTING_WORKS :Printing Works STR_INDUSTRY_NAME_STEEL_MILL :Steel Mill STR_INDUSTRY_NAME_FARM :Farm STR_INDUSTRY_NAME_COPPER_ORE_MINE :Copper Ore Mine STR_INDUSTRY_NAME_OIL_WELLS :Oil Wells STR_INDUSTRY_NAME_BANK :Bank STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Food Processing Plant STR_INDUSTRY_NAME_PAPER_MILL :Paper Mill STR_INDUSTRY_NAME_GOLD_MINE :Gold Mine STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bank STR_INDUSTRY_NAME_DIAMOND_MINE :Diamond Mine STR_INDUSTRY_NAME_IRON_ORE_MINE :Iron Ore Mine STR_INDUSTRY_NAME_FRUIT_PLANTATION :Fruit Plantation STR_INDUSTRY_NAME_RUBBER_PLANTATION :Rubber Plantation STR_INDUSTRY_NAME_WATER_SUPPLY :Water Supply STR_INDUSTRY_NAME_WATER_TOWER :Water Tower STR_INDUSTRY_NAME_FACTORY_2 :Factory STR_INDUSTRY_NAME_FARM_2 :Farm STR_INDUSTRY_NAME_LUMBER_MILL :Lumber Mill STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Cotton Candy Forest STR_INDUSTRY_NAME_CANDY_FACTORY :Candy Factory STR_INDUSTRY_NAME_BATTERY_FARM :Battery Farm STR_INDUSTRY_NAME_COLA_WELLS :Cola Wells STR_INDUSTRY_NAME_TOY_SHOP :Toy Shop STR_INDUSTRY_NAME_TOY_FACTORY :Toy Factory STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastic Fountains STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Fizzy Drink Factory STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Bubble Generator STR_INDUSTRY_NAME_TOFFEE_QUARRY :Toffee Quarry STR_INDUSTRY_NAME_SUGAR_MINE :Sugar Mine ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Unnamed STR_SV_TRAIN_NAME :Train {COMMA} STR_SV_ROAD_VEHICLE_NAME :Road Vehicle {COMMA} STR_SV_SHIP_NAME :Ship {COMMA} STR_SV_AIRCRAFT_NAME :Aircraft {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} North STR_SV_STNAME_SOUTH :{STRING} South STR_SV_STNAME_EAST :{STRING} East STR_SV_STNAME_WEST :{STRING} West STR_SV_STNAME_CENTRAL :{STRING} Central STR_SV_STNAME_TRANSFER :{STRING} Transfer STR_SV_STNAME_HALT :{STRING} Halt STR_SV_STNAME_VALLEY :{STRING} Valley STR_SV_STNAME_HEIGHTS :{STRING} Heights STR_SV_STNAME_WOODS :{STRING} Woods STR_SV_STNAME_LAKESIDE :{STRING} Lakeside STR_SV_STNAME_EXCHANGE :{STRING} Exchange STR_SV_STNAME_AIRPORT :{STRING} Airport STR_SV_STNAME_OILFIELD :{STRING} Oilfield STR_SV_STNAME_MINES :{STRING} Mines STR_SV_STNAME_DOCKS :{STRING} Docks STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Annexe STR_SV_STNAME_SIDINGS :{STRING} Sidings STR_SV_STNAME_BRANCH :{STRING} Branch STR_SV_STNAME_UPPER :Upper {STRING} STR_SV_STNAME_LOWER :Lower {STRING} STR_SV_STNAME_HELIPORT :{STRING} Heliport STR_SV_STNAME_FOREST :{STRING} Forest STR_SV_STNAME_FALLBACK :{STRING} Station #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electric) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passenger Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Mail Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Coal Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Livestock Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Goods Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Wood Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Steel Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Armored Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Food Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Paper Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Water Tanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruit Gondola STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Rubber Gondola STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sugar Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Cotton Candy Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Bubble Car STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cola Tanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Candy Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Toy Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Battery Flatcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Fizzy Drink Flatcar STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastic Flatcar STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passenger Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Mail Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Livestock Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Goods Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Wood Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Steel Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Armored Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Food Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Paper Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Water Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruit Gondola STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Rubber Gondola STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sugar Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Cotton Candy Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Bubble Car STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cola Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Candy Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Toy Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Battery Flatcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Fizzy Drink Flatcar STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastic Flatcar STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passenger Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Mail Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Livestock Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goods Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Wood Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Steel Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Armored Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Food Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Paper Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Water Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruit Gondola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Rubber Gondola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sugar Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Cotton Candy Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Bubble Car STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cola Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Candy Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Toy Boxcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Battery Flatcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Fizzy Drink Flatcar STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastic Flatcar STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Coal Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Coal Truck STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Coal Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Oil Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Oil Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Oil Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Livestock Van STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Livestock Van STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Livestock Van STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Goods Truck STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Goods Truck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Goods Truck STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Grain Truck STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Grain Truck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Grain Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Wood Truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Wood Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Wood Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Iron Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Iron Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Iron Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Steel Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Steel Truck STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Steel Truck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Armored Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Armored Truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Armored Truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Food Van STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Food Van STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Food Van STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Paper Truck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Paper Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Paper Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Copper Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Copper Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Copper Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Water Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Water Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Water Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Fruit Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Fruit Truck STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Fruit Truck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Rubber Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Rubber Truck STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Rubber Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sugar Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sugar Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sugar Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Cola Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Cola Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Cola Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Cotton Candy Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Cotton Candy Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Cotton Candy Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Toffee Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Toffee Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Toffee Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Candy Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Candy Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Candy Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Bubble Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Bubble Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Bubble Truck STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oil Tanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oil Tanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passenger Ferry STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger Ferry STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Helicopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helicopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helicopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Buoy STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Buoy #{COMMA} STR_FORMAT_COMPANY_NUM :(Company {COMMA}) STR_FORMAT_GROUP_NAME :Group {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} Waypoint STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Waypoint #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Train Depot STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Train Depot #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Road Vehicle Depot STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Road Vehicle Depot #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Ship Depot STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Ship Depot #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :unknown station STR_DEFAULT_SIGN_NAME :Sign STR_COMPANY_SOMEONE :someone STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Spectator, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/thai.txt0000644000000000000000000211401012246102561015065 0ustar rootroot##name Thai ##ownname Thai ##isocode th_TH ##plural 1 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x041e ##grflangid 0x42 # $Id: thai.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(undefined string) STR_JUST_NOTHING :ไม่มีอะไร # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :ผู้โดยสาร STR_CARGO_PLURAL_COAL :ถ่านหิน STR_CARGO_PLURAL_MAIL :พัสดุ STR_CARGO_PLURAL_OIL :น้ำมันดิบ STR_CARGO_PLURAL_LIVESTOCK :ปศุสัตว์ STR_CARGO_PLURAL_GOODS :สินค้าแปรรูป STR_CARGO_PLURAL_GRAIN :ข้าวเปลือก STR_CARGO_PLURAL_WOOD :ท่อนซุง STR_CARGO_PLURAL_IRON_ORE :แร่เหล็ก STR_CARGO_PLURAL_STEEL :เหล็กกล้า STR_CARGO_PLURAL_VALUABLES :สินค้ามูลค่าสูง STR_CARGO_PLURAL_COPPER_ORE :แร่ทองแดง STR_CARGO_PLURAL_MAIZE :ข้าวโพด STR_CARGO_PLURAL_FRUIT :ผลไม้ STR_CARGO_PLURAL_DIAMONDS :เพชร STR_CARGO_PLURAL_FOOD :อาหาร STR_CARGO_PLURAL_PAPER :กระดาษ STR_CARGO_PLURAL_GOLD :ทองคำ STR_CARGO_PLURAL_WATER :น้ำ STR_CARGO_PLURAL_WHEAT :ข้าวสาลี STR_CARGO_PLURAL_RUBBER :ยางพารา STR_CARGO_PLURAL_SUGAR :น้ำตาล STR_CARGO_PLURAL_TOYS :ของเล่น STR_CARGO_PLURAL_CANDY :ขนมสายไหม STR_CARGO_PLURAL_COLA :โคล่า STR_CARGO_PLURAL_COTTON_CANDY :ขนมสายไหม STR_CARGO_PLURAL_BUBBLES :ฟอง STR_CARGO_PLURAL_TOFFEE :ลูกอม STR_CARGO_PLURAL_BATTERIES :ถ่านไฟฉาย STR_CARGO_PLURAL_PLASTIC :พลาสติก STR_CARGO_PLURAL_FIZZY_DRINKS :น้ำอัดลม # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :ผู้โดยสาร STR_CARGO_SINGULAR_COAL :ถ่านหิน STR_CARGO_SINGULAR_MAIL :ไปรษณีย์ STR_CARGO_SINGULAR_OIL :น้ำมันดิบ STR_CARGO_SINGULAR_LIVESTOCK :ปศุสัตว์ STR_CARGO_SINGULAR_GOODS :สินค้าแปรรูป STR_CARGO_SINGULAR_GRAIN :ข้าวสาลี STR_CARGO_SINGULAR_WOOD :ท่อนซุง STR_CARGO_SINGULAR_IRON_ORE :แร่เหล็ก STR_CARGO_SINGULAR_STEEL :เหล็กกล้า STR_CARGO_SINGULAR_VALUABLES :สินค้ามูลค่าสูง STR_CARGO_SINGULAR_COPPER_ORE :แร่ทองแดง STR_CARGO_SINGULAR_MAIZE :ข้าวโพด STR_CARGO_SINGULAR_FRUIT :ผลไม้ STR_CARGO_SINGULAR_DIAMOND :เพชร STR_CARGO_SINGULAR_FOOD :อาหาร STR_CARGO_SINGULAR_PAPER :กระดาษ STR_CARGO_SINGULAR_GOLD :ทองคำ STR_CARGO_SINGULAR_WATER :น้ำ STR_CARGO_SINGULAR_WHEAT :ข้าวสาลี STR_CARGO_SINGULAR_RUBBER :ยางพารา STR_CARGO_SINGULAR_SUGAR :น้ำตาล STR_CARGO_SINGULAR_TOY :ของเล่น STR_CARGO_SINGULAR_CANDY :ขนมสายไหม STR_CARGO_SINGULAR_COLA :โคล่า STR_CARGO_SINGULAR_COTTON_CANDY :ขนมสายไหม STR_CARGO_SINGULAR_BUBBLE :ฟอง STR_CARGO_SINGULAR_TOFFEE :ลูกอม STR_CARGO_SINGULAR_BATTERY :ถ่านไฟฉาย STR_CARGO_SINGULAR_PLASTIC :พลาสติก STR_CARGO_SINGULAR_FIZZY_DRINK :น้ำอัดลม # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :ผู้โดยสาร {COMMA} คน STR_QUANTITY_COAL :ถ่านหิน {WEIGHT_LONG} STR_QUANTITY_MAIL :ไปรษณีย์ {COMMA} ถุง STR_QUANTITY_OIL :น้ำมันดิบ {VOLUME_LONG} STR_QUANTITY_LIVESTOCK :ปศุสัตว์ {COMMA} ตัว STR_QUANTITY_GOODS :สินค้าแปรรูป {COMMA} ลัง STR_QUANTITY_GRAIN :ข้าวสาลี {WEIGHT_LONG} STR_QUANTITY_WOOD :ท่อนซุง {WEIGHT_LONG} STR_QUANTITY_IRON_ORE :แร่เหล็ก {WEIGHT_LONG} STR_QUANTITY_STEEL :เหล็กกล้า {WEIGHT_LONG} STR_QUANTITY_VALUABLES :สินค้ามูลค่าสูง {COMMA} ถุง STR_QUANTITY_COPPER_ORE :แร่ทองแดง {WEIGHT_LONG} STR_QUANTITY_MAIZE :ข้าวโพด {WEIGHT_LONG} STR_QUANTITY_FRUIT :ผลไม้ {WEIGHT_LONG} STR_QUANTITY_DIAMONDS :เพชร {COMMA} ถุง STR_QUANTITY_FOOD :อาหาร {WEIGHT_LONG} STR_QUANTITY_PAPER :กระดาษ {WEIGHT_LONG} STR_QUANTITY_GOLD :ทองคำ {COMMA} ถุง STR_QUANTITY_WATER :น้ำ {VOLUME_LONG} STR_QUANTITY_WHEAT :ข้าวสาลี {WEIGHT_LONG} STR_QUANTITY_RUBBER :ยางพารา {VOLUME_LONG} สิตร STR_QUANTITY_SUGAR :น้ำตาล {WEIGHT_LONG} STR_QUANTITY_TOYS :ของเล่น {COMMA} ชิ้น STR_QUANTITY_SWEETS :ขนมหวาน {COMMA} ถุง STR_QUANTITY_COLA :โคล่า {VOLUME_LONG} ลิตร STR_QUANTITY_CANDYFLOSS :ขนมสายไหม {WEIGHT_LONG} STR_QUANTITY_BUBBLES :ฟอง {COMMA} ลูก STR_QUANTITY_TOFFEE :ลูกอม {WEIGHT_LONG} STR_QUANTITY_BATTERIES :ถ่านไฟฉาย {COMMA} ก้อน STR_QUANTITY_PLASTIC :พลาสติก {VOLUME_LONG} STR_QUANTITY_FIZZY_DRINKS :น้ำอัดลม {COMMA} ชุด STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}คน STR_ABBREV_COAL :{TINY_FONT}ถ่าน STR_ABBREV_MAIL :{TINY_FONT}พัสดุ STR_ABBREV_OIL :{TINY_FONT}น้ำมัน STR_ABBREV_LIVESTOCK :{TINY_FONT}สัตว์ STR_ABBREV_GOODS :{TINY_FONT}สินค้า STR_ABBREV_GRAIN :{TINY_FONT}ข้าวเปลือก STR_ABBREV_WOOD :{TINY_FONT}ไม้ STR_ABBREV_IRON_ORE :{TINY_FONT}เหล็ก STR_ABBREV_STEEL :{TINY_FONT}เหล็กกล้า STR_ABBREV_VALUABLES :{TINY_FONT}มีค่า STR_ABBREV_COPPER_ORE :{TINY_FONT}ทองแดง STR_ABBREV_MAIZE :{TINY_FONT}ข้าวโพด STR_ABBREV_FRUIT :{TINY_FONT}ผลไม้ STR_ABBREV_DIAMONDS :{TINY_FONT}เพชร STR_ABBREV_FOOD :{TINY_FONT}อาหาร STR_ABBREV_PAPER :{TINY_FONT}กระดาษ STR_ABBREV_GOLD :{TINY_FONT}ทอง STR_ABBREV_WATER :{TINY_FONT}น้ำ STR_ABBREV_WHEAT :{TINY_FONT}ข้าวสาลี STR_ABBREV_RUBBER :{TINY_FONT}ยาง STR_ABBREV_SUGAR :{TINY_FONT}น้ำตาล STR_ABBREV_TOYS :{TINY_FONT}ของเล่น STR_ABBREV_SWEETS :{TINY_FONT}ขนม STR_ABBREV_COLA :{TINY_FONT}โคล่า STR_ABBREV_CANDYFLOSS :{TINY_FONT}สายไหม STR_ABBREV_BUBBLES :{TINY_FONT}ฟอง STR_ABBREV_TOFFEE :{TINY_FONT}ลูกอม STR_ABBREV_BATTERIES :{TINY_FONT}ถ่าน STR_ABBREV_PLASTIC :{TINY_FONT}พลาสติก STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}น้ำอัดลม STR_ABBREV_NONE :{TINY_FONT}ว่าง STR_ABBREV_ALL :{TINY_FONT}ทั้งหมด # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} คน STR_BAGS :{COMMA} ถุง STR_TONS :{COMMA} ตัน STR_LITERS :{COMMA} ลิตร STR_ITEMS :{COMMA} ชิ้น STR_CRATES :{COMMA} ลัง # Colours, do not shuffle STR_COLOUR_DARK_BLUE :น้ำเงินเข้ม STR_COLOUR_PALE_GREEN :เขียวอ่อน STR_COLOUR_PINK :ชมพู STR_COLOUR_YELLOW :เหลือง STR_COLOUR_RED :แดง STR_COLOUR_LIGHT_BLUE :ฟ้า STR_COLOUR_GREEN :เขียว STR_COLOUR_DARK_GREEN :เขียวเข้ม STR_COLOUR_BLUE :น้ำเงิน STR_COLOUR_CREAM :ครีม STR_COLOUR_MAUVE :ม่วงอ่อน STR_COLOUR_PURPLE :ม่วง STR_COLOUR_ORANGE :ส้ม STR_COLOUR_BROWN :น้ำตาล STR_COLOUR_GREY :เทา STR_COLOUR_WHITE :ขาว # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} ไมล์/ชม. STR_UNITS_VELOCITY_METRIC :{COMMA} กม./ชม. STR_UNITS_VELOCITY_SI :{COMMA} ม./วิ. STR_UNITS_POWER_IMPERIAL :{COMMA} แรงม้า STR_UNITS_POWER_METRIC :{COMMA} แรงม้า STR_UNITS_POWER_SI :{COMMA} กิโลวัตต์ STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} ตัน STR_UNITS_WEIGHT_SHORT_SI :{COMMA} กิโลกรัม STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ตัน STR_UNITS_WEIGHT_LONG_SI :{COMMA} กิโลกรัม STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} ลิตร STR_UNITS_VOLUME_SHORT_SI :{COMMA} ลบ.ม. STR_UNITS_VOLUME_LONG_METRIC :{COMMA} ลิตร STR_UNITS_VOLUME_LONG_SI :{COMMA} ลบ.ม. STR_UNITS_FORCE_SI :{COMMA} กิโลนิวตัน STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ฟุต STR_UNITS_HEIGHT_SI :{COMMA} ม. # Common window strings STR_LIST_FILTER_TITLE :{BLACK}คำกรอง: STR_LIST_FILTER_OSKTITLE :{BLACK}ใส่คำกรอง STR_LIST_FILTER_TOOLTIP :{BLACK}ป้อนคำค้นเพื่อกรองรายการ STR_TOOLTIP_SORT_ORDER :{BLACK}เลือกการเรียงลำดับ (จากบนลงล่าง/จากล่างขึ้นบน) STR_TOOLTIP_SORT_CRITERIA :{BLACK}เลือกเกณฑ์การเรียงลำดับ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}เลือกเกณฑ์การกรอง STR_BUTTON_SORT_BY :{BLACK}เรียงตาม STR_BUTTON_LOCATION :{BLACK}ที่ตั้ง STR_BUTTON_RENAME :{BLACK}เปลี่ยนชื่อ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}ปิดหน้าต่าง STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}ชื่อของหน้าต่าง - คลิกค้างแล้วลากเพื่อเลื่อนหน้าต่าง STR_TOOLTIP_SHADE :{BLACK}Shade window - แสดงเฉพาะแถบด้านบน STR_TOOLTIP_DEBUG :{BLACK}แสดงข้อมูล debug NewGRF STR_TOOLTIP_STICKY :{BLACK}กำหนดไม่ให้ปิดหน้าต่างนี้เมื่อใช้ปุ่ม 'ปิดทุกหน้าต่าง' STR_TOOLTIP_RESIZE :{BLACK}คลิกค้างแล้วลากเพื่อเปลี่ยนขนาดของหน้าต่าง STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}เปลี่ยนขนาดหน้าต่าง ใหญ่/เล็ก STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}แถบเลื่อน - ใช้เลื่อนรายการ ขึ้น/ลง STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}แถบเลื่อน - ใช้เลื่อนรายการ ซ้าย/ขวา STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}ทำลายสิ่งก่อสร้าง และสิ่งต่างๆ ในพื้นที่ช่องหนึ่ง. กด Ctrl เพื่อเลือกพื้นที่แบบทะแยง. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้างและแสดงมูลค่า # Query window STR_BUTTON_DEFAULT :{BLACK}ค่าปกติ STR_BUTTON_CANCEL :{BLACK}ยกเลิก STR_BUTTON_OK :{BLACK}ตกลง # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}ความยาว: {NUM} STR_MEASURE_AREA :{BLACK}ขนาดพื้นที่: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}ความยาว: {NUM}{}ความแตกต่างของความสูง: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}ขนาดพื้นที่: {NUM} x {NUM}{}ความแตกต่างของคสามสูง: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}ประชากร STR_SORT_BY_CAPTION_NAME :{BLACK}ชื่อ STR_SORT_BY_CAPTION_DATE :{BLACK}วันที่ # These are used in dropdowns STR_SORT_BY_NAME :ชื่อ STR_SORT_BY_PRODUCTION :ผลผลิต STR_SORT_BY_TYPE :ประเภท STR_SORT_BY_TRANSPORTED :ขนส่งแล้ว STR_SORT_BY_NUMBER :ลำดับการเข้าประจำการ STR_SORT_BY_PROFIT_LAST_YEAR :กำไรปีก่อน STR_SORT_BY_PROFIT_THIS_YEAR :กำไรปีนี้ STR_SORT_BY_AGE :อายุการใช้งาน STR_SORT_BY_RELIABILITY :ประสิทธิภาพ STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :ความจุรวมในแต่ละชนิดบรรทุก STR_SORT_BY_MAX_SPEED :ความเร็วสูงสุด STR_SORT_BY_MODEL :รุ่น STR_SORT_BY_VALUE :มูลค่า STR_SORT_BY_LENGTH :ความยาว STR_SORT_BY_LIFE_TIME :อายุการใช้งานคงเหลือ STR_SORT_BY_TIMETABLE_DELAY :ความล่าช้าจากตารางเวลา STR_SORT_BY_FACILITY :ประเภทสถานี STR_SORT_BY_WAITING :มูลค่าสินค้าที่ค้างอยู่ STR_SORT_BY_RATING_MAX :สินค้ายอดนิยม STR_SORT_BY_RATING_MIN :สินค้านิยมน้อยสุด STR_SORT_BY_ENGINE_ID :EngineID (เรียงแบบดั้งเดิม) STR_SORT_BY_COST :ราคา STR_SORT_BY_POWER :พลังขับเคลื่อน STR_SORT_BY_TRACTIVE_EFFORT :กำลังลากจูง STR_SORT_BY_INTRO_DATE :วันเปิดตัว STR_SORT_BY_RUNNING_COST :ค่าใช้จ่าย STR_SORT_BY_POWER_VS_RUNNING_COST :กำลังต่อค่าใช้จ่าย STR_SORT_BY_CARGO_CAPACITY :ความจุบรรทุก STR_SORT_BY_RANGE :ช่วง # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}หยุดเกมชั่วคราว STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}เร่งความเร็วเกม STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}ตัวเลือก STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}บันทึกและเลิกเกมนี้ STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}แสดงจุดสังเกต, แผนที่และป้าย STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}แสดงทำเนียบชื่อเมือง STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}แสดงเงินสมทบ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}แสดงรายการสถานีของบริษัท STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}แสดงข้อมูลทางการเงินของบริษัท STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}แสดงข้อมูลทั่วไปของบริษัท STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}แสดงกราฟ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}แสดงตารางอันดับบริษัท STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ลงทุนก่อสร้างอุตสาหกรรมใหม่ หรือ แสดงรายชื่ออุตสาหกรรมทั้งหมด STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}แสดงรายการรถไฟของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}แสดงรายการรถยนต์ของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}แสดงรายการเรือของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}แสดงรายการอากาศยานของบริษัท, Ctrl+คลิก เพื่อเปลี่ยนดู กลุ่ม/รายการ ยานพาหนะ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}ขยายวิว STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}ย่อวิว STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}เครื่องมือสร้างทางรถไฟ STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}สร้างถนน STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}สร้างท่าเรือ STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}สร้างท่าอากาศยาน STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}เปิดแถบเครื่องมือภูมิประเทศเพื่อปรับความสูงต่ำของพื้นดิน, ปลูกต้นไม้ ฯลฯ STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}แสดงหน้าต่างเสียงและดนตรี STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}แสดงข้อความล่าสุด/รายงานข่าว, แสดงตัวเลือกข้อความ STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}ข้อมูลที่ดิน, คอนโซล, ดีบัก AI, จับภาพหน้าจอ, เกี่ยวกับ OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}เปลี่ยนกล่องเครื่องมือ # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}บันทึกฉาก, โหลดฉาก, ยกเลิกการแก้ไขฉาก, ออก STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}โปรแกรมแก้ไขแผนที่ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}เลื่อนวันที่เริ่มต้นย้อนไป 1 ปี STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}เลือนวันที่เริ่มต้นไปอีก 1 ปี STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}คลิกเพื่อใส่ปีเริ่มต้น STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}แสดงแผนที่และทำเนียบชื่อเมือง STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}สร้างภูมิประเทศ STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}สร้างเมือง STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}สร้างอุตสาหกรรม STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}สร้างถนน STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}ปลูกต้นไม้. กด Shift เพื่อเปิด-ปิดสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}ปักป้าย STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}วางวัตถุ. กด Shift เพื่อปิด-เปิดสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :บันทึกแผนที่ STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :โหลดแผนที่ STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :บันทึกแผนที่ความสูง STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :โหลดแผนที่ความสูง STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :ออกจากโปรแกรมแก้ไขแผนที่ STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :ออก ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :ตัวเลือกเกม STR_SETTINGS_MENU_CONFIG_SETTINGS :กำหนดค่าขั้นสูง STR_SETTINGS_MENU_SCRIPT_SETTINGS :กำหนดค่าสคริปต์ AI/Game STR_SETTINGS_MENU_NEWGRF_SETTINGS :กำหนดค่า NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :แถบเมนูตั้งค่าวัตถุโปร่งใส STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :แสดงชื่อเมือง STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :แสดงชื่อสถานี STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :แสดงจุดผ่าน STR_SETTINGS_MENU_SIGNS_DISPLAYED :แสดงป้าย STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :แสดงชื่อและป้ายของคู่แข่ง STR_SETTINGS_MENU_FULL_ANIMATION :แสดงภาพเคลื่อนไหวทั้งหมด STR_SETTINGS_MENU_FULL_DETAIL :แสดงรายละเอียดทั้งหมด STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :สิ่งก่อสร้างแบบโปร่งใส STR_SETTINGS_MENU_TRANSPARENT_SIGNS :ป้ายแบบโปร่งใส ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :บันทึกเกม STR_FILE_MENU_LOAD_GAME :โหลดเกม STR_FILE_MENU_QUIT_GAME :กลับไปยังเมนูหลักของเกม STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :ออกจากเกม ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :แผนที่โลก STR_MAP_MENU_EXTRA_VIEW_PORT :มุมมองเพิ่มเติม STR_MAP_MENU_SIGN_LIST :รายการป้าย ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :ทำเนียบชื่อเมือง STR_TOWN_MENU_FOUND_TOWN :ตั้งเมือง ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :การสนับสนุน STR_SUBSIDIES_MENU_GOAL :เป้าหมายปัจจุบัน ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :กราฟแสดงผลประกอบการ STR_GRAPH_MENU_INCOME_GRAPH :กราฟแสดงรายได้ STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :กราฟแสดงปริมาณการขนส่งสินค้า STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :กราฟแสดงประสิทธิภาพของบริษัท STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :กราฟแสดงมูลค่าบริษัท STR_GRAPH_MENU_CARGO_PAYMENT_RATES :อัตราผลตอบแทนของการส่งสินค้า ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :ตารางแสดงอันดับบริษัท STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :การวัดผลประสิทธิภาพอย่างละเอียด STR_GRAPH_MENU_HIGHSCORE :ตารางคะแนนสูงสุด ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :ทำเนียบอุตสาหกรรม STR_INDUSTRY_MENU_INDUSTRY_CHAIN :ห่วงโซ่อุตสาหกรรม STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :ลงทุนอุตสาหกรรมใหม่ ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :การก่อสร้างทางรถไฟ STR_RAIL_MENU_ELRAIL_CONSTRUCTION :การก่อสร้างทางรถไฟพลังไฟฟ้า STR_RAIL_MENU_MONORAIL_CONSTRUCTION :การก่อสร้างทางรถไฟรางเดี่ยว STR_RAIL_MENU_MAGLEV_CONSTRUCTION :การก่อสร้างทางรถไฟพลังแม่เหล็ก ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :การก่อสร้างถนน STR_ROAD_MENU_TRAM_CONSTRUCTION :การก่อสร้างทางรถราง ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :การก่อสร้างคลอง ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :การก่อสร้างท่าอากาศยาน ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :การปรับพื้นที่ STR_LANDSCAPING_MENU_PLANT_TREES :ปลูกต้นไม้ STR_LANDSCAPING_MENU_PLACE_SIGN :ปักป้าย ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :เสียงและดนตรี ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :ข้อความล่าสุด/รายงานข่าว STR_NEWS_MENU_MESSAGE_HISTORY_MENU :ดูข้อความย้อนหลัง ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :ข้อมูลพื้นที่ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :เปิด/ปิด คอนโซล STR_ABOUT_MENU_AI_DEBUG :ดีบัก สคริปต์ AI/Game STR_ABOUT_MENU_SCREENSHOT :จับภาพหน้าจอ (Ctrl+S) STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :จับภาพหน้าจอในแบบขยายใหญ่สุด STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :ค่าเริ่มต้นของการขยายภาพในการจับหน้าจอ STR_ABOUT_MENU_GIANT_SCREENSHOT :จับภาพหน้าจอทั้งแผนที่ (Ctrl+G) STR_ABOUT_MENU_ABOUT_OPENTTD :เกี่ยวกับ 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :ตัวจัดแนว Sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :เปิด/ปิด bounding boxes STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :เปิด/เปิด สีของ dirty blocks ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :วันที่ 1 STR_ORDINAL_NUMBER_2ND :วันที่ 2 STR_ORDINAL_NUMBER_3RD :วันที่ 3 STR_ORDINAL_NUMBER_4TH :วันที่ 4 STR_ORDINAL_NUMBER_5TH :วันที่ 5 STR_ORDINAL_NUMBER_6TH :วันที่ 6 STR_ORDINAL_NUMBER_7TH :วันที่ 7 STR_ORDINAL_NUMBER_8TH :วันที่ 8 STR_ORDINAL_NUMBER_9TH :วันที่ 9 STR_ORDINAL_NUMBER_10TH :วันที่ 10 STR_ORDINAL_NUMBER_11TH :วันที่ 11 STR_ORDINAL_NUMBER_12TH :วันที่ 12 STR_ORDINAL_NUMBER_13TH :วันที่ 13 STR_ORDINAL_NUMBER_14TH :วันที่ 14 STR_ORDINAL_NUMBER_15TH :วันที่ 15 STR_ORDINAL_NUMBER_16TH :วันที่ 16 STR_ORDINAL_NUMBER_17TH :วันที่ 17 STR_ORDINAL_NUMBER_18TH :วันที่ 18 STR_ORDINAL_NUMBER_19TH :วันที่ 19 STR_ORDINAL_NUMBER_20TH :วันที่ 20 STR_ORDINAL_NUMBER_21ST :วันที่ 21 STR_ORDINAL_NUMBER_22ND :วันที่ 22 STR_ORDINAL_NUMBER_23RD :วันที่ 23 STR_ORDINAL_NUMBER_24TH :วันที่ 24 STR_ORDINAL_NUMBER_25TH :วันที่ 25 STR_ORDINAL_NUMBER_26TH :วันที่ 26 STR_ORDINAL_NUMBER_27TH :วันที่ 27 STR_ORDINAL_NUMBER_28TH :วันที่ 28 STR_ORDINAL_NUMBER_29TH :วันที่ 29 STR_ORDINAL_NUMBER_30TH :วันที่ 30 STR_ORDINAL_NUMBER_31ST :วันที่ 31 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :มกราคม STR_MONTH_ABBREV_FEB :กุมภาพันธ์ STR_MONTH_ABBREV_MAR :มีนาคม STR_MONTH_ABBREV_APR :เมษายน STR_MONTH_ABBREV_MAY :พฤษภาคม STR_MONTH_ABBREV_JUN :มิถุนายน STR_MONTH_ABBREV_JUL :กรกฎาคม STR_MONTH_ABBREV_AUG :สิงหาคม STR_MONTH_ABBREV_SEP :กันยายน STR_MONTH_ABBREV_OCT :ตุลาคม STR_MONTH_ABBREV_NOV :พฤศจิกายน STR_MONTH_ABBREV_DEC :ธันวาคม STR_MONTH_JAN :มกราคม STR_MONTH_FEB :กุมภาพันธ์ STR_MONTH_MAR :มีนาคม STR_MONTH_APR :เมษายน STR_MONTH_MAY :พฤษภาคม STR_MONTH_JUN :มิถุนายน STR_MONTH_JUL :กรกฎาคม STR_MONTH_AUG :สิงหาคม STR_MONTH_SEP :กันยายน STR_MONTH_OCT :ตุลาคม STR_MONTH_NOV :พฤศจิกายน STR_MONTH_DEC :ธันวาคม ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}ตัวเลือก STR_GRAPH_KEY_TOOLTIP :{BLACK}แสดงตัวเลือกกราฟ STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}กราฟแสดงผลประกอบการ STR_GRAPH_INCOME_CAPTION :{WHITE}กราฟแสดงรายได้ STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}หน่วยของสินค้าที่ขนส่งแล้ว STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}คะแนนประสิทธิภาพของบริษัท (คะแนนสูงสุด=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}มูลค่าทรัพย์สินบริษัท STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}อัตราค่าตอบแทนการขนส่ง STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}จำนวนวันในการเดินทาง STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}ค่าขนส่งจากการขนส่งสินค้า 10 หน่วย (หรือ 10,000 ลิตร) ต่อระยะทาง 20 ช่องตาราง STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}เปิดทั้งหมด STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}ปิดทั้งหมด all STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}แสดงสินค้าทั้งหมดในกราฟผลตอบแทนการขนส่งสินค้า STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}ไม่แสดงสินค้าทั้งหมดในกราฟผลตอบแทนการขนส่งสินค้า STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}เปิด/ปิด กราฟสำหรับประเภทของสินค้า STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}แสดงรายละเอียดความพึงพอใจของผู้ใช้บริการ # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}ตัวเลือกกราฟของบริษัท STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}คลิก เพื่อเปิด/ปิดการแสดงบันทึกของบริษัทในกราฟ # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}ตารางแสดงอันดับบรัษัท STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :วิศวกรบำรุงทาง STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :ผังควบคุมการเดินรถ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :ผู้เชี่ยวชาญการขนส่ง STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :ที่ปรึกษาพิเศษด้านการเดินรถ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :ผู้จัดการภาค STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :กรรมการผู้ัจัดการใหญ่ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :ประธาน STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :ประธานบริษัท STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :เจ้าของบริษัท # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}รายละเอียดความนิยม STR_PERFORMANCE_DETAIL_KEY :{BLACK}รายละเอียด STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}ดูรายละเอียดของบริษัทนี้ ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}จำนวนยานพาหนะ STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}จำนวนสถานี STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}กำไรต่ำสุด STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}รายได้ต่ำสุด STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}รายได้สูงสุด STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}ปริมาณการขนส่ง STR_PERFORMANCE_DETAIL_CARGO :{BLACK}ประเภทสินค้า STR_PERFORMANCE_DETAIL_MONEY :{BLACK}เงินในธนาคาร STR_PERFORMANCE_DETAIL_LOAN :{BLACK}หนี้สิน STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}รวมทั้งสิ้น ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}จำนวนของยานพาหนะที่ทำกำไรในปีที่ผ่านมา ทั้ง รถ รถไฟ เรือ และ เครื่องบิน STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}ตัวเลขแสดงสถานีที่รองรับการซ่อมแซมในปัจจุบัน สถานีรถไฟ ป้ายรถประจำทาง ท่าอากาศยาน และอื่นๆ จะนับแยกกันจนกระทั่งสถานีเหล่านั้นจะรวมกันเป็นสถานีเดียว STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}รายได้จากยานพาหนะนี้รวมกับรายได้ต่ำสุด (แสดงเฉพาะยานพาหนะที่มีอายุมากกว่าสองปีขึ้นไป) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}รายได้รวมทั้งหมดในฟนึ่งไตรมาส กับรายได้ต่ำสุดในรอบ 12 ไตรมาส STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}รายได้รวมทั้งหมดในหนึ่งไตรมาส กับรายได้สูงสุดในรอบ 12 ไตรมาส STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}หน่วยของสินค้าที่ส่งถึงปลายทางในรอบหนึ่งปี STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}จำนวนประเภทของสินค้าที่ส่งถึงปลายทางในไตรมาสที่ผ่านมา STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}จำนวนเงินของบริษัทที่มีในธนาคาร STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}จำนวนเงินของบริษัทที่มีการกู้ยืมมาจากธนาคาร STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}คะแนนรวมทั้งหมดนอกเหนือจากคะแนนที่เป็นไปได้ # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}ตู้เพลงแจ๊ส STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}ทั้งหมด STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}แนวดั้งเดิม STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}แนวใหม่ STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}อีซี่สตรีท STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}กำหนดเอง 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}กำหนดเอง 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}ระดับเสียงดนตรี STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}ระดับเสียงเอฟเฟกต์ STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}ต่ำสุด STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}สูงสุด STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}เพลงที่ STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}ชื่อเพลง STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}สลับลำดับ STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}โปรแกรม STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}ย้อนไปฟังเพลงก่อนหน้า STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}ข้ามไปฟังเพลงถัดไป STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}หยุดเล่นเพลง STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}เริ่มเล่นเพลง STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}คลิกและลากตัวเลื่อนเพื่อปรับระดับเสียงดนตรีและเอฟเฟกต์ STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}เลือกโปรแกรม 'ทุกเพลง' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}เลือกโปรแกรม 'เพลงแนวเก่า' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}เลือกโปรแกรม 'เพลงแนวใหม่' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}เลือกเพลงฟังรายการเพลง Ezy Street STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}เลือกโปรแกรม 'กำหนดเอง 1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}เลือกโปรแกรม 'กำหนดเอง 2' STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}เปิด/ปิด Toggle programme shuffle on/off STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}แสดงหน้าต่างเลือกรายการเพลง STR_ERROR_NO_SONGS :{WHITE}ชุดเพลงประกอบนี้ไม่มีการเลือกเพลงไว้ # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}รายการเลือกโปรแกรมเพลง STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}รายการเพลง STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}โปรแกรม - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}ลบทั้งหมด STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}ลบโปรแกรมปัจจุบัน (สำหรับโปรแกรมกำหนดเอง 1 หรือ กำหนดเอง 2 เท่านั้น) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}คลิกที่รายการเพลงเพื่อเพิ่มไปยังโปรแกรมปัจจุบัน (สำหรับโปรแกรมกำหนดเอง 1 หรือ กำหนดเอง 2 เท่านั้น) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}คลิกที่ชื่อเพลงเพื่อลบออกจากโปรแกรม (Custom1 or Custom2 เท่านั้น) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}บริษัทชั้นนำที่ก้าวไปสู่ {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}ตารางแสดงการแข่งขันของบริษัทใน {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :นักธุรกิจ STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :ผู้ประกอบการ STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :นักอุตสาหกรรม STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :นักลงทุน STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :เจ้าสัว STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :ผู้มีอำนาจ STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :นักธุรกิจผู้ร่ำรวยและมีอิทธิพลมากแห่งศตวรรษ STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} ได้ก้าวไปสู่ขั้น '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} จาก {COMPANY} ได้ก้าวไปสู่ขั้น '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}แผนที่ - {STRING} STR_SMALLMAP_TYPE_CONTOURS :โครงร่าง STR_SMALLMAP_TYPE_VEHICLES :ยานยนต์ STR_SMALLMAP_TYPE_INDUSTRIES :อุตสาหกรรม STR_SMALLMAP_TYPE_ROUTES :เส้นทาง STR_SMALLMAP_TYPE_VEGETATION :ภาวะหยุดนิ่ง STR_SMALLMAP_TYPE_OWNERS :ผู้ครอบครอง STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}แสดงโครงร่างของพื้นดินบนแผนที่ STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}แสดงยานยนต์บนแผนที่ STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}แสดงอุตสาหกรรมบนแผนที่ STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}แสดงเส้นทางการเดินทางบนแผนที่ STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}แสดงพืชพันธุ์บนแผนที่ STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}แสดงเจ้าของที่ดินบนแผนที่ STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}กดเลือกที่ประเภทของอุตสาหกรรมเพื่อแสดงผล. Ctrl+Click เพื่อปิดทุกประเภทยกเว้นประเภทที่เลือก. Ctrl+Click อีกครั้งเพื่อแสดงทุกอุตสาหกรรม STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}กดเลือกที่บริษัทเพื่อปิด/เปิดการแสดงข้อมูลของบริษัท. Ctrl+กดเลือก เพื่อปิดแสดงผลทุกบริษัทยกเว้นอันที่เลือก. Ctrl+กดเลือกอีกครั้งเพื่อเปิดแสดงผลบริษัททั้งหมด STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}ถนน STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}รางรถไฟ STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}สถานี/ท่าอากาศยาน/ท่าเรือ STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}สิ่งก่อสร้าง/อุตสาหกรรม STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}ยานยนต์ STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}รถไฟ STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}รถยนต์ STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}เรือ STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}อากาศยาน STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}เส้นทางการขนส่ง STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}ป่าไม้ STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}สถานีรถไฟ STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}สถานีถ่ายของรถบรรทุก STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}ป้ายรถเมล์ STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}ท่าอากาศยาน/ลานจอดเฮลิคอปเตอร์ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}ท่าเรือ STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}พื้นลูกรัง STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}พื้นหญ้า STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}ที่ดินเปล่า STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}ทุ้งหญ้า STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}ต้นไม้ STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}หิน STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}ผืนน้ำ STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}ไม่มีเจ้าของ STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}เมือง STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}อุตสาหกรรม STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}ทะเลทราย STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}หิมะ STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}เปิด/ปิด ชื่อเมืองบนแผนที่ STR_SMALLMAP_CENTER :{BLACK}ให้จุดที่อยู่ ณ ปัจจุบันมาแสดงตำแหน่งในแผนที่ย่อ STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}ไม่เรียกใช้งานทั้งหมด STR_SMALLMAP_ENABLE_ALL :{BLACK}เรียกใช้งานทั้งหมด STR_SMALLMAP_SHOW_HEIGHT :{BLACK}แสดงความสูง STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}ไม่แสดงอุตสาหกรรมใดๆบนแผนที่ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}เปิดการแสดงอุตสาหกรรมทุกชนิดบนแผนที่ STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}เปลี่ยนการแสดง heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}ไม่แสดงทรัพย์สินของบริษัทใดๆบนแผนที่ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}แสดงทรัพย์สินของทุกบริษัทบนแผนที่ # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}แสดงข้อความล่าสุด STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * หยุดเกม * * STR_STATUSBAR_AUTOSAVE :{RED}กำลังทำการเซฟอัตโนมัติ STR_STATUSBAR_SAVING_GAME :{RED}* * กำลังบันทึกเกม * * # News message history STR_MESSAGE_HISTORY :{WHITE}ข้อความย้อนหลัง STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}รายการแสดงข้อความข่าวเมื่อเร็วๆนี้ STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}ข้อความ STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่รถไฟขบวนปฐมฤกษ์เทียบชานชาลาที่ {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่รถโดยสารเที่ยวปฐมฤกษ์ได้มาถึง {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่รถสินค้าเที่ยวปฐมฤกษ์ได้มาถึง {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่รถรางเที่ยวปฐมฤกษ์ได้มาถึง {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่รถรางสินค้าเที่ยวปฐมฤกษ์ได้มาถึง {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่เรือเที่ยวปฐมฤกษ์ได้เทียบท่าที่ {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}ผู้คนต่างยินดีปรีดา. . .{}ที่เที่ยวบินปฐมฤกษ์ได้มาถึง{STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}อุบัติเหตุรถไฟชนกัน!!{}มีผู้เสียชีวิต{COMMA}คนจากอุบัติเหตุครั้งนี้ STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}เกิดอุบัติเหตุรถไฟชนรถยนต์!!{}หลังจากเจ้าหน้าที่เข้าตรวจสอบพื้นที่ พบว่าคนขับรถยนต์เสียชีวิต STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}เกิดอุบัติเหตุรถไฟชนรถยนต์ {}มีผู้เสียชีวิต {COMMA} คนหลังรถไฟมรณะพุ่งชน STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}เกิดอุบัติเหตุเครื่องบินตก{}คร่าชีวิตผู้โดยสารและลูกเรือรวม {COMMA} ศพที่ {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}เครื่องบินตกตก!{}ด้วยสาเหตุ เชื้อเพลิงหมดกลางอากาศ, ผู้โดยสารและลูกเรือ {COMMA} ชีวิตตายอนาถ STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}เกิดเหตุบอลลูนระเบิดที่{STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}รถยนต์ถูกทำลายโดย UFO! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}เกิดเหตุโรงกลั่นน้ำมันระเบิดใกล้เมือง {TOWN}! {}ทางการกำลังสั่งอพยพผู้คนในละแวกใกล้เคียงออกนอกพื้นที่ STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}โรงงานอุตสาหกรรมถูกทำลายอย่างไม่ทราบสาเหตุใกล้ {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}มี 'UFO' มาลงใกล้ๆ{TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}เกิดเหตุเหมืองถ่านหินถล่มใกล้กับเมืองเมือง {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}น้ำท่วม!{}ประชาชนอย่างน้อย {COMMA} สูญหาย ด้วยกระแสน้ำที่แรงมาก คาดว่าจะเสียชีวิตแล้วจากการจมน้ำ! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}วิกฤติการการเงินบริษัท!!! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ด้วยสภาวะขาดทุนสะสมต่อเนื่อง บริษัทจะถูกขายหรือประกาศล้มละลาย ยกเว้นเสียแต่จะฟื้นตัวได้ในเวลาอันสั้น STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}ยุบรวมบริษัทขนส่งแล้ว STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ถูกขายให้ {STRING} เป็นจำนวนเงิน {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}ล้มละลาย! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} ถูกปิดตัวโดยนายทุนและทรัพย์สินทั้งหมดจะถูกขายทอดตลาด STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}บริษัทขนส่งใหม่เริ่มกิจการแล้ว! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} เริ่มการก่อสร้างใกล้ {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} ถูกเซ้งโดย {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(ประธานบริษัท) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} ผู้สนับสนุนก่อสร้างเมืองใหม่ในชื่อ {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING}ใหม่ กำลังถูกสร้างใกล้ ๆ เมือง {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK} {STRING}กำลังปลูกใหม่ใกล้ {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ประกาศเลิกกิจการ! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}เกิดปัญหาเกี่ยวกับวัตถุดิบทำให้ {STRING} ต้องประกาศเลิกกิจการ! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}ต้นไม้บริเวณใกล้เคียงขาดแคลนทำให้ {STRING} ต้องประกาศเลิกกิจการ! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}เงินสกุลยูโรเริ่มใช้แล้ว!{}{}สหภาพยุโรปได้เริ่มใช้เงินสกุลเดียวกันแล้ว นั่นคือเงินสกุลยูโร รวมถึงในประเทศนี้ตั้งแต่วันนี้เป็นต้นไป! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}เกิดภาวะเศรฐกิจถดถอยทั่วโลก!{}{}ผู้เชี่ยวชาญทางการเงินต่างหวาดกลัวเนื่องจากเศรฐกิจตกต่ำ! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}สิ้นสุดภาวะเศรฐกิจถดถอย!{}{}การค้าขายเริ่มเป็นบวกเกิดความเชื่อมั่นในอุตสาหกรรมต่างๆ จากการที่เศรฐกิจเข้มแข็งขึ้น! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} เพิ่มกำลังการผลิต! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}พบสายแร่ถ่านหินใหม่ที่ {INDUSTRY}!คาดว่าผลผลิต{}จะเพิ่มขึ้นเท่าตัว! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}พบแหล่งน้ำมันใหม่ที่ {INDUSTRY}!คาดว่าผลผลิต{}จะเพิ่มขึ้นเท่าตัว! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}เกษตรกรรมที่ได้รับการปรับปรุงแล้วที่ {INDUSTRY} คาดว่าจะทำให้ผลผลิตเพิ่มขึ้นเท่าตัว! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} ผลผลิต {INDUSTRY} เพิ่มขึ้น {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}ผลผลิต {INDUSTRY} ลดลง 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}เกิดแมลงศัตรูพืชอย่างหนักที่ {INDUSTRY}!ผลผลิต{}ลงลง 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} ผลผลิตของ {INDUSTRY} ลดลง {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} กำลังรอในอู่ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในโรงซ่อม STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในอู่ STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} กำลังรออยู่ในโรงจอด # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} มีคำสั่งน้อยเกินไปในกำหนดการเดินทาง STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} มีคำสั่งว่าง STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} มีคำสั่งซ้ำซ้อน STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} มีสถานีที่ใช้ไม่ได้ในคำสั่ง # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} เริ่มเก่าแล้ว STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} เก่ามากแล้ว STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} เก่ามากแล้ว และควรเปลี่ยนใหม่ในทันที STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ไม่สามารถหาเส้นทางไปต่อได้. STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} กำลังหลงทาง. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}กำไรของ {VEHICLE} เมื่อปีที่ผ่านมา {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} ไม่สามารถไปยังจุดหมายถัดไปได้เนื่องจากไม่อยู่ในระยะ STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} หยุดเนื่องจากการดัดแปลงไม่สำเร็จ STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}เปลี่ยนใหม่อัตโนมัติไม่สำเร็จบน {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}{STRING}รุ่นใหม่ขณะนี้มีให้สั่งผลิตแล้ว! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}ใหม่ {STRING} มีจำหน่ายแล้ว - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ไม่ต้องการรับ {STRING} อีกต่อไป STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ไม่รับ {STRING} หรือ {STRING} แล้ว STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} ขณะนี้ยอมรับ {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} ขณะนี้ยอมรับ {STRING} และ {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}ข้อเสนอสำหรับการอุดหนุนสิ้นสุด:{}{}{STRING} จาก {STRING} ถึง {STRING} จะไม่ได้รับการอุดหนุนอีกต่อไป. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}การอุดหนุนถูกถอดถอน:{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะไม่ได้รับการสนับสนุนอีกต่อไป. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}มีการสนับสนุนในการทำโครงการ:{}{} ขนส่ง {STRING} เที่ยวปฐมฤกษ์ จาก {STRING} ถึง {STRING} หากดำเนินการจะได้รับเงินอุดหนุนพิเศษรายปีจากเจ้าหน้าที่ในท้องถิ่น! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}เงินสนับสนุนโครงการถูกมอบให้กับ {STRING}!{}{} โดยการขนส่ง {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินอุดหนุนเพิ่มขึ้น 50% สำหรับปีหน้า! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสองเท่าในปีหน้า! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{}บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสามเท่าในปีหน้า! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}การอุดหนุนบริการถูกมอบแก่ {STRING}!{}{} บริการ {STRING} จาก {STRING} ถึง {STRING} จะได้รับเงินสี่เท่าในปีหน้า! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}การจราจรยุ่งเหยิงใน {TOWN}!{}{}การสร้างถนนใหม่ที่ได้รับการสนับสนุนโดย {STRING} นำมาซึ่งหกเดือนแห่งความสงสัยแก่ผู้ใช้ถนน! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}เจ้าพ่อวงการขนส่ง! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}ฝ่ายบริหารของเมือง {TOWN} ลงนามสัญญากับ {STRING} เป็นะระยเวลา 1 ปีสำหรับสัมปทานขนส่งพิเศษ # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}มุมมอง {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}คัดลอกไปยังมุมมอง STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}คัดลอกตำแหน่งของมุมมองหลังมายังมุมมองนี้ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}วางจากมุมมอง STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}วางตำแหน่งจากมุมมองนี้ไปยังมุมมองหลัก # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}ตัวเลือกเกม STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}หน่วยสกุลเงิน STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกสกุลเงิน ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :ปอนด์สเตอร์ลิง (£) STR_GAME_OPTIONS_CURRENCY_USD :ดอลลาร์สหรัฐ ($) STR_GAME_OPTIONS_CURRENCY_EUR :ยูโร STR_GAME_OPTIONS_CURRENCY_JPY :เยน (¥) STR_GAME_OPTIONS_CURRENCY_ATS :ชิลลิ่งออสเตรีย (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :ฟรังก์เบลเยี่ยม (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :ฟรังก์สวิส (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :โครูนาเช็ค (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :ดอยช์มาร์ค (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :โครนเดนมาร์ค (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :เพเซต้า (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :มาร์คคา ฟินแลนด์ (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :ฟรังก์ฝรั่งเศส(FRF) STR_GAME_OPTIONS_CURRENCY_GRD :ดรากช์มา กรีซ (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :ฟอรินท์ ฮังการี (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :โครนา ไอซแลนด์ (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :ลิรา อิตาลี (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :กิลเดอร์ ดัชต์ (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :โครน นอร์เวย์ (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :ซโลตี โปแลนด์ (PLN) STR_GAME_OPTIONS_CURRENCY_RON :ลิว โรมาเนีย (RON) STR_GAME_OPTIONS_CURRENCY_RUR :รูเบิ้ลส์ รัสเซีย (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :โทลาร์ สโลวีเนีย (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :โครนา สวีเดน (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :ลิรา ตุรกี (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :โครูนา สโลวาเกีย (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :เรียล บราซิล (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :ครูนิ เอสโทเนีย (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :วอน เกาหลีใต้ (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :ระบุเอง... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}หน่วยการวัด STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}การเลือกหน่วยการวัด ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :ระบบอิมพีเรียล STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :ระบบเมตริก STR_GAME_OPTIONS_MEASURING_UNITS_SI :ระบบมาตรฐานสากล (SI) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}ยานยนต์ STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}เลือกฝั่งถนนในการขับยานพาหนะ STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :ขับชิดซ้าย STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :ขับชิดขวา STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}ชื่อเมือง STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}เลือกรูปแบบของชื่อเมือง ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :อังกฤษ (ดั้งเดิม) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :ฝรั่งเศส STR_GAME_OPTIONS_TOWN_NAME_GERMAN :เยอรมัน STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :อังกฤษ (ตัวเสริม) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :ลาติน-อเมริกัน STR_GAME_OPTIONS_TOWN_NAME_SILLY :อังกฤษอย่างง่าย STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :สวีดิช STR_GAME_OPTIONS_TOWN_NAME_DUTCH :ดัชต์ STR_GAME_OPTIONS_TOWN_NAME_FINNISH :ฟินน์ STR_GAME_OPTIONS_TOWN_NAME_POLISH :โปลิช STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :สโลวากิช STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :นอร์วิเจียน STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :ฮังกาเรียน STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :ออสเตรียน STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :โรมาเนียน STR_GAME_OPTIONS_TOWN_NAME_CZECH :เช็ค STR_GAME_OPTIONS_TOWN_NAME_SWISS :สวิส STR_GAME_OPTIONS_TOWN_NAME_DANISH :เดนมาร์ค STR_GAME_OPTIONS_TOWN_NAME_TURKISH :ตุรกี STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :อิตาเลียน STR_GAME_OPTIONS_TOWN_NAME_CATALAN :คาตาลัน ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}บันทึกเกมอัตโนมัติ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}เลือกระยะห่างระหว่างการบันทึกเกมอัตโนมัติแต่ละครั้ง STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :ปิด STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ทุกๆเดือน STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :ทุก 3 เดือน STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ทุก 6 เดือน STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ทุก 12 เดือน STR_GAME_OPTIONS_LANGUAGE :{BLACK}ภาษา STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}เลือกภาษาที่จะใช้ STR_GAME_OPTIONS_FULLSCREEN :{BLACK}เต็มหน้าจอ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}ทำเครื่องหมายที่ช่องนี้เพื่อเล่น OpenTTD fullscreen โหมด STR_GAME_OPTIONS_RESOLUTION :{BLACK}ความละเอียดของหน้าจอ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}เลือกความละเอียดของหน้าจอที่จะใช้ STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}สกุลไฟล์ของ Screenshot STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}เลือกรูปแบบหน้าจอที่จะใช้ STR_GAME_OPTIONS_BASE_GRF :{BLACK}ตั้งค่า Graphic พื้นฐาน STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}เลือกและตั้งค่าฐานกราฟิกที่จะใช้ STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ไฟล์สูญหายหรือไม่สมบูรณ์ STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดกราฟฟิคพื้นฐาน STR_GAME_OPTIONS_BASE_SFX :{BLACK}เลือกชุด Effect เสียงประกอบ STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}ปรับและเลือกเสียงที่จะใช้ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}ปรับข้อมูลเพิ่มเติมเกี่ยวกับโหมดเสียง STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}ชุดเพลงประกอบพื้นฐาน STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}เลือกเพลงประกอบพื้นฐานเพื่อใช้งาน STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ไฟล์ไม่สมบูรณ์ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดเพลงประกอบพื้นฐาน STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen โหมดล้มเหลว # Custom currency window STR_CURRENCY_WINDOW :{WHITE}สกุลเงิน STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}อัตราแลกเปลี่ยน: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ลดจํานวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}เพิ่มจำนวนสกุลเงินของคุณสำหรับหนึ่งปอนด์ (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}กำหนดอัตราแลกเปลี่ยนของสกุลเงินหนึ่งปอนด์ (£) STR_CURRENCY_SEPARATOR :{LTBLUE}ตัวแบ่ง: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}สัญลักษณ์แบ่งหลักสกุลเงินของท่าน STR_CURRENCY_PREFIX :{LTBLUE}คำนำหน้า: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}สัญลักษณ์หน้าสกุลเงินของท่าน STR_CURRENCY_SUFFIX :{LTBLUE}คำเสริมท้าย: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}สัญลักษณ์ต่อท้ายสกุลเงินของท่าน STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}เปลี่ยนเป็นเงินสกุลยูโร: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}เปลี่ยนเป็นเงินสกุลยูโร: {ORANGE}ไม่เปลี่ยน STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}ตั้งปีเพื่อเปลี่ยนสกุลเงินเป็นยูโร STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}เปลี่ยนสกุลเงินเป็นยูโรก่อน STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}เปลี่ยนสกุลเงินเป็นยูโรทีหลัง STR_CURRENCY_PREVIEW :{LTBLUE}แสดงตัวอย่าง: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 ปอนด์สเตอร์ลิง (£) ในสกุลเงินของคุณ STR_CURRENCY_CHANGE_PARAMETER :{BLACK}เปลี่ยนการกำหนดค่าตัวแปรสกุลเงิน STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}จำนวนผู้ร่วมแข่งขันสูงสุด: {ORANGE}{COMMA} STR_NONE :ไม่มี STR_FUNDING_ONLY :ระดมทุนเท่านั้น STR_MINIMAL :ขั้นต่ำ STR_NUM_VERY_LOW :ต่ำมาก STR_NUM_LOW :ต่ำ STR_NUM_NORMAL :ปกติ STR_NUM_HIGH :สูง STR_NUM_CUSTOM :กำหนดเอง STR_NUM_CUSTOM_NUMBER :กำหนดเอง ({NUM}) STR_VARIETY_NONE :ไม่มี STR_VARIETY_VERY_LOW :ต่ำมาก STR_VARIETY_LOW :ต่ำ STR_VARIETY_MEDIUM :ปานกลาง STR_VARIETY_HIGH :สูง STR_VARIETY_VERY_HIGH :สูงมาก STR_AI_SPEED_VERY_SLOW :ช้ามาก STR_AI_SPEED_SLOW :ช้า STR_AI_SPEED_MEDIUM :ปานกลาง STR_AI_SPEED_FAST :เร็ว STR_AI_SPEED_VERY_FAST :เร็วมาก STR_SEA_LEVEL_VERY_LOW :ต่ำมาก STR_SEA_LEVEL_LOW :ต่ำ STR_SEA_LEVEL_MEDIUM :ปานกลาง STR_SEA_LEVEL_HIGH :สูง STR_SEA_LEVEL_CUSTOM :กำหนดเอง STR_SEA_LEVEL_CUSTOM_PERCENTAGE :กำหนดเอง ({NUM}%) STR_RIVERS_NONE :ไม่มี STR_RIVERS_FEW :น้อย STR_RIVERS_MODERATE :ปานกลาง STR_RIVERS_LOT :หลาย STR_DISASTER_NONE :ไม่มี STR_DISASTER_REDUCED :ภาวะลดลง STR_DISASTER_NORMAL :ภาวะปกติ STR_SUBSIDY_X1_5 :1.5 เท่า STR_SUBSIDY_X2 :2 เท่า STR_SUBSIDY_X3 :3 เท่า STR_SUBSIDY_X4 :4 เท่า STR_TERRAIN_TYPE_VERY_FLAT :แบนราบมาก STR_TERRAIN_TYPE_FLAT :แบนราบ STR_TERRAIN_TYPE_HILLY :เนินเขา STR_TERRAIN_TYPE_MOUNTAINOUS :ภูเขาสูง STR_CITY_APPROVAL_PERMISSIVE :อนุญาต STR_CITY_APPROVAL_TOLERANT :พอผ่อนผันให้ได้ STR_CITY_APPROVAL_HOSTILE :ไม่เป็นมิตร STR_WARNING_NO_SUITABLE_AI :{WHITE}ไม่มี AI ที่เหมาะสมปรากฎ...{}คุณสามารถดาวน์โหลด AI จากระบบ 'Online Content' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}การตั้งค่าขั้นสูง STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}เติม string: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}ขยายทั้งหมด STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}ยุบลงทั้งหมด STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(ไม่สามารถขยายได้) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}ค่าเริ่มต้น: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}ประเภทการตั้งค่า: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :ตั้งค่าผู้ใช้ (ไม่ถูกเก็บไว้ในการบันทึกเกม; มีผลครอบคลุมทั้งหมด) STR_CONFIG_SETTING_TYPE_GAME_MENU :ตั้งค่าเกม(ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะการเริ่มเกมใหม่) STR_CONFIG_SETTING_TYPE_GAME_INGAME :ตั้งค่าเกม(ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะเกมปัจจุบัน) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :ตั้งค่าองค์กร (ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะการเริ่มเกมใหม่) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :ตั้งค่าองค์กร (ถูกเก็บไว้ในการบันทึกเกม; มีผลเฉพาะเกมปัจจุบัน) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}แสดง: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}จำกัดรายการด้านล่างให้แสดงเฉพาะการตั้งค่าที่มีการเปลี่ยนแปลง STR_CONFIG_SETTING_RESTRICT_BASIC :ตั้งค่าพื้นฐาน STR_CONFIG_SETTING_RESTRICT_ADVANCED :ตั้งค่าขั้นสูง STR_CONFIG_SETTING_RESTRICT_ALL :การตั้งค่าแบบผู้เชี่ยวชาญ / การตั้งค่าทั้งหมด STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :การตั้งค่าที่มีค่าที่แตกต่างกันกับค่าเริ่มต้น STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :การตั้งค่าที่มีค่าที่แตกต่างกันกับการตั้งค่าใหม่เกมของคุณ STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}เลือกรูปแบบการตั้งค่า STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :การตั้งค่าทั้งหมด STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :ตั้งค่าผู้ใช้งาน (ไม่เก็บในเซฟ มีผลกับทุกเกม) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :ตั้งค่าเกี่ยวกับเกม(เก็บในเซฟ มีผลเมื่อเริ่มเกมใหม่) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :ตั้งค่าเกี่ยวกับเกม(เก็บในเซฟ มีผลเฉพาะเกมปัจจุบัน) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :ตั้งค่าบริษัท (เก็บในเซฟ มีผลเมื่อเริ่มเกมใหม่) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :ตั้งค่าเกี่ยวกับบริษัท(เก็บในเซฟ มีผลแค่บริษัทปัจจุบัน) STR_CONFIG_SETTING_OFF :ปิด STR_CONFIG_SETTING_ON :เปิด STR_CONFIG_SETTING_DISABLED :ไม่ให้เรียกใช้งาน STR_CONFIG_SETTING_COMPANIES_OFF :ปิด STR_CONFIG_SETTING_COMPANIES_OWN :บริษัทในเครือ STR_CONFIG_SETTING_COMPANIES_ALL :บริษัททั้งหมด STR_CONFIG_SETTING_NONE :ไม่มี STR_CONFIG_SETTING_ORIGINAL :ดั้งเดิม STR_CONFIG_SETTING_REALISTIC :เสมือนจริง STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :ซ้าย STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :กลาง STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :ขวา STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :เงินกู้เริ่มต้นสูงสุด: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :บริษัท สามารถกู้ยืมเงินจำนวนสูงสุด (โดยไม่คำนึงถึงอัตราเงินเฟ้อเข้าบัญชี) STR_CONFIG_SETTING_INTEREST_RATE :ดอกเบี้ย: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :อัตราดอกเบี้ยเงินกู้; มีผลกับอัตราเงินเฟ้อถ้าเปิดใช้งาน STR_CONFIG_SETTING_RUNNING_COSTS :ระดับของค่าปฎิบัติการของยานพาหนะต่างๆ: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :กำหนดระดับของการบำรุงรักษาและค่าใช้จ่ายของยานพาหนะและโครงสร้างพื้นฐาน STR_CONFIG_SETTING_CONSTRUCTION_SPEED :ควานเร็วในการก่อสร้าง: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :จำกัด จำนวนของการกระทำก่อสร้างสำหรับ AIs STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :ยานพาหนะขัดข้อง: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :ควบคุมความถี่ในการตรวจสภาพยานพาหนะ หากได้รับการตรวจสภาพไม่เพียงพออาจเกิดอาการขัดข้องบ่อยครั้งได้ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :อัตราของการให้เงินสนับสนุนโครงการ: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :ตั้งค่าเงินสนับสนุนสำหรับการเชื่อมต่อ STR_CONFIG_SETTING_CONSTRUCTION_COSTS :ค่าใช้จ่ายในการก่อสร้า: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :การตั้งค่าระดับของค่าใช้จ่ายในการก่อสร้างและซื้อ STR_CONFIG_SETTING_RECESSIONS :เศรษฐกิจถดถอย: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :หากเปิดใช้งาน การถดถอย อาจเกิดขึ้นทุก 2 - 3 ปี ในช่วงเศรษฐกิจตกต่ำในการผลิตทั้งหมด อย่างมีนัยสำคัญต่ำกว่า (มันจะกลับไปที่ระดับก่อนหน้านี้เมื่อภาวะถดถอยจบลง) STR_CONFIG_SETTING_TRAIN_REVERSING :ไม่อนุญาตให้รถไฟกลับขบวนในสถานี: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :หากเปิดใช้งานรถไฟจะไม่ย้อนกลับในสถานีที่ไม่ใช่ปลายทางถ้ามีเส้นทางที่สั้นไปยังปลายทางต่อไปของพวกเขา จะย้อนกลับ STR_CONFIG_SETTING_DISASTERS :ภัยพิบัติ: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :ภัยพิบัติซึ่งบางครั้งสลับอาจปิดกั้นหรือทำลายยานพาหนะหรือโครงสร้างพื้นฐาน STR_CONFIG_SETTING_CITY_APPROVAL :ทัศนคติสภาเทศบาลเมืองที่มีต่อการปรับโครงสร้างพื้นที่: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :เลือกความรุนแรงของการทำลายสิ่งแวดล้อมและเสียงรบกวนจากบริษัทที่ส่งผลต่อความนิยมในเมืองและการก่อสร้างของพวกเขา STR_CONFIG_SETTING_BUILDONSLOPES :อนุญาตให้สร้างบนทางลาดและตลิ่งชายฝั่ง: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้สามารถสร้างเส้นทางหรือสถานีบนพื้นที่ลาดเอียงได้ STR_CONFIG_SETTING_AUTOSLOPE :อนุญาตให้เปลี่ยนสภาพพื้นผิวใต้สิ่งก่อสร้าง, ราง, ฯลฯ (ปรับความชันอัตโนมัติ): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :อนุญาตให้ปรับสภาพพื้นที่ได้โดยไม่ต้องรื้อถอนสาธารณูปโภค STR_CONFIG_SETTING_CATCHMENT :อนุญาตให้มีขนาดของพื้นที่บริการของสถานีที่สมเหตุสมผลมากขึ้น: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :สร้างความแตกต่างของพื้นที่บริการสำหรับสถานีในประเภทที่แตกต่างกัน STR_CONFIG_SETTING_EXTRADYNAMITE :อนุญาตให้ทำลายถนน, สะพาน, สิ่งก่อสร้างของเมืองได้มากขึ้น: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :ทำให้ง่ายขึ้นสำหรับการรื้อถอนสาธารณูปโภคและสิ่งปลูกสร้างของเมือง STR_CONFIG_SETTING_TRAIN_LENGTH :ความยาวสูงสุดของขบวนรถไฟ: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :เลือกตั้งค่าความยาวสูงสุดของขบวนรถไฟ STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} ช่อง STR_CONFIG_SETTING_SMOKE_AMOUNT :ปริมาณของ Effect ไอเสีย/การSpark: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :ตั้งค่าปริมาณของไอเสีย หรือการ spark ที่สร้างโดยยานพาหนะ STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :รูปแบบของการเร่งความเร็วของรถไฟ: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :เลือกตั้งค่าอัตราเร่งเสมือนจริง สำหรับการทำให้การเคลื่อนที่ของขบวนรถไฟสมจริงมากยิ่งขึ้น ในการขึ้นเนิน หรือจากการที่ขบวนรถมีความยาวมากๆ ซึ่งกำลังขับ(Tractive Effort) ของรถจักรมีผลโดยตรง STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :รูปแบบการเร่งของรถยนต์: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :เลือกตั้งค่าอัตราเร่งเสมือนจริง สำหรับการทำให้การเคลื่อนที่ของขบวนรถสมจริงมากยิ่งขึ้น ในการขึ้นเนิน หรือจากการที่รถบรรทุกน้ำหนักมากๆ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :ตั้งค่าการฉุดความเร็วขณะขึ้นเนินของรถไฟ: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :การฉุดรั้งความเร็วของขบวนรถไฟขณะขึ้นเนิน หากค่ายิ่งมากยิ่งทำให้รถไฟไต่เนินได้ยากขึ้น STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :ตั้งค่าการฉุดความเร็วขณะขึ้นเนินของรถยนต์: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :การฉุดรั้งความเร็วขอรถขณะขึ้นเนิน หากค่ายิ่งมากยิ่งทำให้รถไต่เนินได้ยากขึ้น STR_CONFIG_SETTING_FORBID_90_DEG :ห้ามรถไฟและเรือเลี้ยวในมุม 90 องศา: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :ไม่อนุญาตให้รถไฟเลี้ยวโค้งแบบ 90 องศาได้ STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :อนุญาตให้เป็นสถานีเดียวกันแม้ไม่ได้ติดกัน: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :อนุญาตให้มีการสร้างชิ้นส่วนที่เป็นของสถานีให้แยกออกจากกันโดยไม่ต้องมีชิ้นส่วนอื่นๆที่เชื่อมต่อถึงกันได้ ต้องกด Ctrl+Click ในการใช้งาน STR_CONFIG_SETTING_IMPROVEDLOAD :ใช้รูปแบบการขนถ่ายสินค้าที่มีการปรับปรุงประสิทธิภาพแล้ว: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :โดยปกติ หากมียานพาหนะ 2 คัน/ลำ เทียบอยู่เพื่อขนถ่ายสินค้า ระบบจะให้สิืทธิ์ผู้ที่มาก่อนเสมอ แต่หากเปิดใช้งานส่วนนี้ระบบจะทำการกระจายสินค้าออกไปอย่างเหมาะสม STR_CONFIG_SETTING_GRADUAL_LOADING :บรรจุเข้าไปในพาหนะทีละน้อยๆ: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :ยานพาหนะจะใช้เวลาในการโหลดสินค้าและสัมภาระมากขึ้นเพื่อความสมจริง สำหรับรถไฟหากชานชาลามีความยาวไม่เพียงพอจะทำให้ระยะเวลาในการโหลดสินค้าเพิ่มมากขึ้น STR_CONFIG_SETTING_INFLATION :ภาวะเงินเฟ้อ: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :เมื่อเปิดการใช้งานอัตราเงินเฟ้อ ค่าเงินจะถูกลงและต้องใช้เงินมากขึ้นในการซื้อหรือสร้าง แต่ผลตอบแทนจากการขนส่งก็จะเพิ่มขึ้นด้วยเช่นกัน STR_CONFIG_SETTING_SELECTGOODS :ส่งสินค้าที่บรรทุกลงที่สถานีที่มีความต้องการเท่านั้น: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :จะสามารถขนส่งสินค้าไปยังสถานีได้ต่อเมื่อมีการเรียกจากยานพาหนะที่ขนส่ง การที่มีความนิยมต่ำจะทำให้สินค้าไม่ใช้บริการที่สถานี STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :ความยาวสูงสุดของสะพาน: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :ปรับความยาวสูงสุดสำหรับการสร้างสะพาน STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :ความยาวสูงสุดของอุโมงค์: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :ปรับความยาวสูงสุดสำหรับการสร้างอุโมงค์ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :กำหนดวิธีหลักในการก่อสร้างอุตสาหกรรมเอง: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :การเลือกช่องทางการสร้างโรงงานอุตสาหกรรมหลัก เลือก "ไม่มี" จะทำให้ไม่สามารถสร้างอุตสาหกรรมเพิ่มได้ เลือก "สุมที่ตั้ง" จะเป็นการสุ่มตำแหน่งที่ตั้ง "เหมือนกับอุตสาหกรรมอื่น" ก็จะสามารถกำหนดสถานที่ตั้งได้เลย STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ไม่อนุญาตให้ก่อตั้ง STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ก่อตั้งได้เหมือนกับอุตสาหกรรมอื่นๆ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :สุ่มตำแหน่งที่ตั้ง STR_CONFIG_SETTING_INDUSTRY_PLATFORM :พื้นที่ราบเรียบรอบโรงงานอุตสาหกรรม: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :การปรับระยะของพื้นที่ราบเรียบโดยรอบของโรงงานอุตสาหกรรมต่างๆ STR_CONFIG_SETTING_MULTIPINDTOWN :อนุญาตให้มีหลายอุตสาหกรรมที่เหมือนกันต่อหนึ่งเมือง: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :โดยปกติแล้ว จะสามารถสร้างอุตสาหกรรมในประเภทเดียวกันได้เพียงแห่งเดียวต่อเมืองหนึ่งเมือง แต่หากเปิดการใช้งาน จะสามารถสร้างอุตสาหกรรมประเภทเดียวกันได้หลายแห่งในเมืองหนึ่งเมือง STR_CONFIG_SETTING_SIGNALSIDE :เสาอาณัติสัญญาณ: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :เลือกว่าจะแสดงการตั้งเสาอาณัติสัญญาณว่าเป็นฝั่งซ้ายหรือฝั่งขวา STR_CONFIG_SETTING_SIGNALSIDE_LEFT :ฝั่งซ้าย STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :ฝั่งเดียวกับการขับขี่ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :ฝั่งขวา STR_CONFIG_SETTING_SHOWFINANCES :แสดงหน้าต่างสภาวะการเงินบริษัทเมื่อสิ้นสุดแต่ละปี: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :เมื่อเปิดใช้งาน จะแสดงรายงานผลประกอบการมาให้ชมทุกสิ้นปี STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :ตั้งให้คำสั่งที่เพิ่มใหม่เป็น 'ไม่หยุด' โดยปริยาย: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :โดยปกติ ยานพาหนะจะหยุดทุกสถานีที่วิ่งผ่าน เมื่อเปิดใช้งานส่วนนี้ยานพาหนะจะวิ่งผ่านโดยไม่จอดไปจนกว่าจะถึงที่หมายถัดไปตามตารางที่กำหนดให้จอด STR_CONFIG_SETTING_STOP_LOCATION :คำสั่งแรกเริ่มของขบวนรถ ให้หยุดที่ {STRING} ของชานชาลา STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :เลือกกำหนดจุดจอดบนชานชาลาของรถไฟว่าจะเป็นกึ่งกลาง หรือหัว-ท้ายชานชาลา STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ฝั่งใกล้ STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :ตรงกลาง STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ฝั่งไกล STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :การเข้าคิวรถ (มี quantum effects): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :ทำให้รถ รออยู่ที่ทางแยกจนกว่าถนนข้างหน้าที่การจราจรจะโล่ง STR_CONFIG_SETTING_AUTOSCROLL :เลื่อนหน้าต่างเมื่อเม้าส์อยู่ใกล้ขอบหน้าจอ: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :เมื่อเปิดใช้งานจะสามารถเลื่อนหน้าจอโดยการใช้เมาส์ไปแตะที่ขอบจอได้ STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :ไม่ใช้งาน STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :มุมมองหลัก เฉพาะในโหมด Full-Screen STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :มุมมองหลัก STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :ทุกๆมุมมอง STR_CONFIG_SETTING_BRIBE :อนุญาตให้ติดสินบนเจ้าหน้าที่ในท้องถิ่น: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :อนุญาตให้สามารถใส่เงินใต้โต๊ะกับเจ้าหน้าที่ท้องถิ่นได้ เพื่อเพิ่มระดับความถึงพอใจ STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :อนุญาตให้ซื้อสัมปทานการขนส่งแต่เพียงผู้เดียว: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :เมื่อบริษัทซื้อสัมปทานขนส่ง สินค้าและผู้โดยสารจะใช้งานในสถานีของบริษัทนั้นๆบริษัทเดียว STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :อนุญาตให้สามารถบริจาคเงินเพื่อสร้างสิ่งปลูกสร้างในเมือง: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :ทำให้สามารถให้เงินกับเมืองเพื่อสร้างสิ่งปลูกสร้างใหม่ขึ้นมาได้ STR_CONFIG_SETTING_ALLOW_FUND_ROAD :อนุญาตให้ใช้เงินทุนในการก่อสร้างถนนใหม่: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :ให้เงินกับเมืองเพื่อทำถนนใหม่ สำหรับขีดขวางการจราจรในเมืองที่บริษัทคู่แข่งให้บริการอยู่ STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :อนุญาตให้ส่งเงินแก่บริษัทอื่นๆ: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :ให้สามารถส่งเงินระหว่างบริษัทได้ในระบบผู้เล่นหลายคน STR_CONFIG_SETTING_FREIGHT_TRAINS :ตัวคูณสำหรับการขนส่งสินค้า เพื่อจำลองน้ำหนักของขบวน: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :ตั้งค่าน้ำหนักของรถไฟสินค้า ค่ายิ่งมากยิ่งทำให้ออกตัวช้าและขึ้นเนินได้ยากขึ้น STR_CONFIG_SETTING_PLANE_SPEED :เลือกความเร็วของเครื่องบิน: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :ตั้งค่าความเร็วของเครื่องบินให้สมดุลกับขนาดและความเร็วของยานพาหนะประเภทอื่นๆ STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :จำนวนเครื่องบินที่ตก: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :ตั้งค่าการสุ่มอัตราเครื่่องบินตก STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ไม่มี STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :ลดลง STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :ปกติ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :อนุญาตให้มีที่หยุดรถแบบขับผ่านบนถนนที่เมืองเป็นเจ้าของ: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :สามารถสร้างป้ายหยุดรถบนถนนของเมืองได้ STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :อนุญาตให้มีที่หยุดรถแบบขับผ่านบนถนนของบริษัทอื่นๆ: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :สามารถสร้างป้ายหยุดรถบนถนนที่สร้างโดยบริษัทอื่นได้ STR_CONFIG_SETTING_ADJACENT_STATIONS :อนุญาตให้สร้างสถานีที่ไม่มีส่วนที่ติดกันได้: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :สามารถสร้างสถานีรับส่งประเภทอื่นๆติดกันได้ STR_CONFIG_SETTING_DYNAMIC_ENGINES :เปิดใช้งาน NewGRF ประเภทเดียวกัน หลายชุดพร้อมกัน: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :ความเข้ากันได้ของ NewGRFs เก่าๆ ไม่ควรทำการปิดระบบนี้ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}ไม่สามารถเปลี่ยนการตั้งค่านี้ได้เมื่อมียานพาหนะ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :ค่าบำรุงรักษาโครงสร้างพื้นฐาน: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :เมื่อเปิดใช้งาน สาธารณูประโภคที่สร้างโดยบริษัทจะมีค่าบำรุงรักษา ยิ่งเครือข่ายยิ่งมากจะยิ่งเสียค่าใช้จ่ายมากขึ้น STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :ท่าอากาศยานไม่มีวันหมดอายุ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :เปิดใช้งานสิ่งนี้ จะทำให้สามารถสร้างท่าอากาศยานแบบเก่าๆได้แม้เวลาจะผ่านไปนานแล้วก็ตาม STR_CONFIG_SETTING_WARN_LOST_VEHICLE :เตือนหากยานพาหนะหลงทาง: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :แสดงข้อความเตือน เมื่อพาหนะไม่สามารถค้นหาเส้นทางไปยังที่หมายตามที่กำหนดไว้ได้ STR_CONFIG_SETTING_ORDER_REVIEW :การแจ้งเตือนความผิดปกติของยานพาหนะ: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :เมื่อเปิดใช้งาน คำสั่งที่ใช้สำหรับยานพาหนะจะถูกตรวจสอบเป็นช่สงๆ และจะมีรายงานมาเป็นระยะๆ STR_CONFIG_SETTING_ORDER_REVIEW_OFF :ไม่ต้องเตือน STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ให้เตือน แต่ยกเว้นยานพาหนะที่หยุดวิ่ง STR_CONFIG_SETTING_ORDER_REVIEW_ON :แจ้งเตือนทั้งหมด STR_CONFIG_SETTING_WARN_INCOME_LESS :เตือนเมื่อรายได้ของยานพาหนะติดลบ: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :เมื่อเปิดใช้งาน จะแสดงข้อความแจ้งเตือนเมื่อพาหนะไม่สามารถทำกำไรได้เมื่อครบกำหนดสิ้นปี STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :ยานพาหนะไม่หมดอายุ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :เมื่อเปิดใช้งาน พาหนะทั้งหมดจะยังสามารถซื้อได้ตลอดไปหลังจากหมดช่วงระยะเวลา STR_CONFIG_SETTING_AUTORENEW_VEHICLE :เปลี่ยนยานพาหนะใหม่โดยอัตโนมัติเมื่อเก่าเกินไป: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :เมื่อเปิดใช้งาน พาหนะที่ใกล้หมดอายุการใช้งาน จะทำการแทนที่ใหม่เอง STR_CONFIG_SETTING_AUTORENEW_MONTHS :ซื้่อใหม่อัตโนมัตเมื่อ {STRING} ครบอายุการใช้งาน STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :อายุการใช้งานเมื่อยานพาหนะต้องทำการซื้อใหม่ STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} เดือน ก่อน STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} เดือน หลังจากที่ STR_CONFIG_SETTING_AUTORENEW_MONEY :จำนวนเงินขั้นต่ำที่ให้เปลี่ยนยานพาหนะโดยอัตโนมัติ: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :จำนวนเงินสำรองต่ำสุดที่ต้องมีสำหรับการซื้อยานพาหนะใหม่โดยอัตโนมัติ STR_CONFIG_SETTING_ERRMSG_DURATION :ระยะเวลาแสดงของข้อความแจ้งความผิดพลาด: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :เป็นระยะเวลาที่จะคงแสดงข้อความแจ้งความผิดพลาดของเกม จะคงอยู่ตามระยะเวลาที่ตั้งค่าไว้ข้างต้น STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} วินาที STR_CONFIG_SETTING_HOVER_DELAY :แสดงบอลลูนข้อความช่วยเหลือ: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :หน่วงระยะเวลาเป็นวินาทีเมื่อนำเมาส์วางไว้เหนือปุ่มต่างๆเพื่อแสดงข้อความช่วยเหลือ STR_CONFIG_SETTING_HOVER_DELAY_VALUE :วางค้างไว้เป็นเวลา {COMMA} วินาที{P 0 s} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :คลิ๊กเมาส์ขวา STR_CONFIG_SETTING_POPULATION_IN_LABEL :แสดงจำนวนประชากรของเมืองในป้ายชื่อเมือง: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :แสดงจำนวนประชากรของเมืองหลังชื่อเมืองบนแผนที่ จะมีกรอบวงเล็บแสดงจำนวนประชากรในเมืองนั้นๆอยู่ด้วย STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :ความหนาของเส้นกราฟ: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :ความกว้างของเส้นกราฟ สามารถปรับขนาดได้เพื่อสะดวกในการมองเห็น STR_CONFIG_SETTING_LAND_GENERATOR :ตัวสังเคราะห์ภูมิประเทศ: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :ดั้งเดิม STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :ระยะห่างที่สุดจากขอบแผนที่ของโรงกลั่นน้ำมัน: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :โรงกลั่นน้ำมันจะสามารถตั้งได้เฉพาะบริเวณใกล้ๆขอบแผนที่เท่านั้น การตั้งค่านี้จะสามารถตั้งให้สร้างโรงกลั่นน้ำมันได้ห่างสูงสุดเท่าใดจากของแผนที่ STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ระดับความสูงแนวหิมะ: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :ความหยาบของพื้นที่ (เฉพาะ TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :ราบเรียบมาก STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :ราบเรียบ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :หยาบ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :หยาบมาก STR_CONFIG_SETTING_TREE_PLACER :อัลกอริธึมสำหรับการวางต้นไม้: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :ไม่มี STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :ดั้งเดิม STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :ปรังปรุงแล้ว STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :ทิศการหมุน Heightmap: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :ทวนเข็มนาฬิกา STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :ตามเข็มนาฬิกา STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :ค่าระดับความสูงต่ำสุดของพื้นราบ: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :ยอมให้เปลี่ยนสภาพพื้นผิวบริเวณช่องริมขอบแผนที่: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :ถ้าปิด ขอบแผนที่จะเป็นน้ำเสมอ STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}ขอบทางเหนือมีอย่างน้อยหนึ่งช่องหรือมากกว่านั้นที่ไม่ว่าง STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}หนึ่งช่องหรือมากกว่านั้นที่ขอบด้านในด้านหนึ่งไม่ใช่น้ำ STR_CONFIG_SETTING_STATION_SPREAD :ความกว้างสูงสุดของสถานี: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :ความกว้างและความยาวสูงสุดของสถานีที่สามารถขยายออก STR_CONFIG_SETTING_SERVICEATHELIPAD :ซ่อมบำรุง เฮลิคอปเตอร์ ที่ลานจอด ฮ. โดยอัตโนมัติ: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :ซ่อมบำรุงเฮลิคอปเตอร์ทุกครั้งที่ลงจอด STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :โยงแถบเครื่องมือปรับภูมิประเทศกับแถบเครื่องมือสร้างต่างๆ: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :เมื่อเปิดเครื่องมือสร้างที่เกี่ยวข้องกับการขนส่งต่างๆ จะเป็นการเปิดกล่องเครื่องมือปรับสภาพภูมิประเทศมาด้วยทุกครั้ง STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :สีของพื้นดินที่ใช้ในแผนที่ย่อ: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :สีของพื้นดินในแผนที่ย่อ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :สีเขียว STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :สีเขียวแก่ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :สีม่วง STR_CONFIG_SETTING_REVERSE_SCROLLING :กลับทิศการเลื่อนหน้าจอ: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :เลือกลักษณะการเลื่อนแผนที่ เมื่อใช้ปุ่มคลิ๊กเมาส์ขวา หากเปิดการใช้งาน หน้าจอจะเคลื่อนที่ไปในทิศตรงกันข้ามกับการคลิ๊กเมาส์ค้างแล้วลากเมาส์ไป STR_CONFIG_SETTING_SMOOTH_SCROLLING :เลื่อนอย่างนิ่มนวลบนจอภาพ: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :ควบคุมการเคลื่อนที่ของจอภาพ เวลาคลิ๊กเลือกตำแหน่งในแผนที่ย่อ หากไม่เปิดใช้งาน ตำแหน่งของจอจะย้ายไปที่ตำแหน่งที่เลือกทันที แต่หากเปิดใช้งาน จะเคลื่อนที่ไปยังตำแหน่งอย่างนุ่มนวล STR_CONFIG_SETTING_MEASURE_TOOLTIP :แสดงบอลลูนข้อความแสดงระยะทางหรือข้อมูลอื่นๆ เมื่อใช่เครื่องมือสร้าง: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :เปิดบอลลูนข้อความแสดงระยะทางหรือความสูง ขณะใช้เครื่องมือในการสร้างต่างๆ เพื่อให้ได้เห็นรายละเอียดที่เรากระทำการ ว่าเราวางรางรถไฟมาไกลแค่ไหน หรือปรับพื้นดินขึ้นไปสูงเท่าใดแล้ว STR_CONFIG_SETTING_LIVERIES :แสดงเครื่องแบบบริษัท: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :เปิดเพื่อใช้งานการตั้งสีประจำบริษัทแยกย่อยตามประเภทยานพาหนะ STR_CONFIG_SETTING_LIVERIES_NONE :ไม่เลย STR_CONFIG_SETTING_LIVERIES_OWN :บริษัทของท่าน STR_CONFIG_SETTING_LIVERIES_ALL :ทุกบริษัท STR_CONFIG_SETTING_PREFER_TEAMCHAT :ใช้การคุยระหว่างทีมด้วย : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :สลับการพูดคุยระหว่างภายใน และภายนอก และ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :รูปแบบการใช้ลูกกลิ้งเมาส์ในแผนที่ย่อ: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :ปรับเปลี่ยนลักษณะการใช้งานลูกกลิ้งเมาส์บนแผนที่ย่อ STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :ขยายแผนที่ STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :เลื่อนแผนที่ STR_CONFIG_SETTING_SCROLLWHEEL_OFF :ปิด STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :ความเร็วการเลื่อนของแผนที่: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :ควบคุมความเสถียรของลูกกลิ้งเม้าส์ STR_CONFIG_SETTING_OSK_ACTIVATION :เปิดใช้งาน On-Screen Keyboard: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :เลือกวิธีการที่จะเปิดแป้นพิมพ์หน้าจอสำหรับการป้อนเมื่อข้อความใน editboxes เพียงแค่ใช้อุปกรณ์ชี้ตำแหน่ง นี่หมายความว่าสำหรับอุปกรณ์ขนาดเล็กโดยไม่ต้องใช้แป้นพิมพ์ที่เกิดขึ้นจริง STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :ไม่ใช้งาน STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :คลิกสองครั้ง STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :คลิกครั้งเดียว (เมื่อเพ่งความสนใจไป) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :คลิกครั้งเดียว (ทันที) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :จำลองคลิกขวา: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :เลือกผลของการใช้การคลิ๊กเมาส์ขวา STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+คลิก STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :ปิด STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :เลื่อนหน้าจอด้วยการคลิ๊กเมาส์ซ้าย: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :เปิดใช้งานเพื่อให้สามารถใช้การคลิ๊กเมาส์ซ้ายในการเลื่อนภาพหน้าจอได้ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :ใช้รูปแบบวันที่ {STRING} เป็นชื่อเซฟของเกม STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :เพิ่มวันที่ในเกมลงไปในชื่อเซฟเกม เมื่อมีการเซฟเกมจะแนบวันที่ในเกมลงไปในชื่อเซฟเกมด้วยโดยอัตโนมัติ แต่หากผู้เล่นต้องการเปลี่ยนแปลงชื่อเซฟเกมก็สามารถกระทำได้ตามสะดวก STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :ยาว (31 ธันวาคม 2013) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :สั้น (31-12-2013) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :มาตรฐาน (2013-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :เลือกใช้ Palette ของ NewGRFs ที่ไม่สามารถระบุประเภทได้ (Dos/Windows): {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :จะมี NewGRFs บางตัวที่ไม่สามารถระบุประเภทว่าใช้ Pelette ของ Dos หรือของ Windows การเลือกตัวเลือกนี้จะเป็นการเลือกค้าแรกเริ่มให้กับ NewGRFs เหล่านั้น STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :มาตรฐาน (D) ชุดสี STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :เลกาซี่ (W) ชุดสี STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :หยุดเกมอัตโนมัติเมื่อเริ่มเกมใหม่: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :เมื่อเปิดใช้งาน เกมจะหยุดอัตโนมัติเมื่อมีการเริ่มเกมใหม่ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :อนุญาตให้ทำสิ่งเหล่านี้เมื่อหยุดเกม: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :เลือกเปิดใช้งานคำสั่งบางคำสั่งต่อไปนี้ขณะหยุดเกม STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :ไม่อนุญาตให้ทำใดๆทั้งสิ้น STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :ทุกการกระทำที่ไม่ใช่การก่อสร้าง STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :ทุกอย่างยกเว้นการปรับปรุงระดับพื้นดิน STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :ทุกการกระทำ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :ใช้รายการยานพาหนะขั้นสุง: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :เปิดใช้งานรายการยานพาหนะขั้นสูงสำหรับจัดกลุ่มของยานพาหนะต่างๆ STR_CONFIG_SETTING_LOADING_INDICATORS :แสดงสถานะการขนถ่ายเมื่อกำลังขนถ่ายที่สถานี: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :เลือกเพื่อแสดงตัวเลขปริมาณการบรรทุกขณะขนถ่ายที่สถานีของพาหนะ STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :แสดงตารางเวลาในแบบติ๊กแทนแบบวัน: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :แสดงเวลาในการเดินทางในตารางเวลาเป็น ticks แทนที่ days STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :แสดงเวลามาถึงและออกไปในตารางเวลา: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :แสดงการคาดการณ์เวลาในการเดินทางไปถึงหรือเวลาออกของยานพาหนะในตารางเวลา STR_CONFIG_SETTING_QUICKGOTO :เลือกคำสั่ง "ไปยัง" ไว้เสมอในการออกคำสั่งให้พาหนะ: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :เลือกคำสั่ง "ไปยัง" ไว้เป็นปกติเมื่อมีการเลือกปลายทาง STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :การเลือกทางรถไฟที่เป็นแบบแรกเริ่มเมื่อคลิ๊กเครื่องมือสร้าง (เริ่มเกมใหม่/โหลดเกม): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :ประเภทของทางรถไฟหลังจากเริ่มเกมใหม่ หรือโหลดเซฟเกม STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :มีใช้ครั้งแรก STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :มีใช้ครั้งสุดท้าย STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :ใช้มากที่สุด STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :แสดงทางรถไฟที่ขบวนรถขอทางไว้: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :แสดงการขอทางของขบวนรถไฟ โดยแสดงสีที่แตกต่างจากสีทางปกติเพื่อช่วยตรวจหาจุดบกพร่อง เมื่อขบวนรถไฟเข้าสู่ทางตอนที่ใช้สัญญาณระบบ Path-Based STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :ให้คงการแสดงเครื่องมือการสร้างหลังการใช้: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :ไม่ปิดเครื่องมือสร้างสะพาน หรืออุโมง หลังจากใช้งาน STR_CONFIG_SETTING_EXPENSES_LAYOUT :จัดกลุ่มแยกประเภท รายรับ/รายจ่าย ในหน้าต่างแสดงข้อมูลการเงินของบริษัท: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :จัดการแยกประเภท รายรับ/รายจ่าย เพื่อให้ง่ายต่อการตรวจทาน ในหน้าต่างแสดงสถานะการเงินบริษัท STR_CONFIG_SETTING_SOUND_TICKER :ข่าวสาร: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :เล่นเสียงเมื่อมีข่าวย่อ STR_CONFIG_SETTING_SOUND_NEWS :หนังสือพิมพ์: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :เล่นเสียงเมื่อแสดงหน้าหนังสือพิมพ์ STR_CONFIG_SETTING_SOUND_NEW_YEAR :เสียงเตือนเมื่อถึงสิ้นปี: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :เล่นเสียงเมื่อแสดงรายงานผลประกอบการเปรียบเทียบกับปีที่แล้ว STR_CONFIG_SETTING_SOUND_CONFIRM :การก่อสร้าง: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :เล่นเสียงเมื่อการก่อสร้างเสร็จหรือการกระทำอื่นๆ STR_CONFIG_SETTING_SOUND_CLICK :เมื่อคลิ๊กเมาส์: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :มีเสียง Effect เมื่อคลิกเมาส์ในหน้าต่างเกม STR_CONFIG_SETTING_SOUND_DISASTER :ภัยพิบัติ/อุบัติเหตุ: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :เล่นเสียงประกอบของอุบัติเหตุและภัยพิบัติ STR_CONFIG_SETTING_SOUND_VEHICLE :ยานพาหนะ: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :เล่นเสียงประกอบของยานพาหนะ STR_CONFIG_SETTING_SOUND_AMBIENT :สิ่งแวดล้อม:{STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :เปิดเสียงของสิ่งแวดล้อมต่างๆ STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :ปิดการใช้งานในส่วนของสิ่งปลูกสร้างสาธารณูปโภคเมื่อไม่มียานพาหนะที่เหมาะสม: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :เมื่อเปิดใช้งาน สาธารณูประโทค และเส้นทางการคมนาคมที่จะสร้างได้ มีเฉพาะที่เหมาะสมกับประเภทยานพาหนะที่รองรับ STR_CONFIG_SETTING_MAX_TRAINS :ขบวนรถไฟมากที่สุดต่อผู้เล่น: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :จำนวนขบวนรถไฟสูงสุดที่บริษัทสามารถมีได้ STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :ยานพาหนะทางบกมากที่สุดต่อผู้เล่น: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :จำนวนยานพาหนะบนทางราบสูงสุดที่บริษัทสามารถมีได้ STR_CONFIG_SETTING_MAX_AIRCRAFT :อากาศยานมากที่สุดต่อผู้เล่น: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :จำนวนอากาศยานสูงสุดที่บริษัทสามารถมีได้ STR_CONFIG_SETTING_MAX_SHIPS :ยานพาหนะทางน้ำมากที่สุดต่อผู้เล่น: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :จำนวนยานพาหนะทางน้ำสูงสุดที่บริษัทสามารถมีได้ STR_CONFIG_SETTING_AI_BUILDS_TRAINS :ไม่ยอมให้มีรถไฟสำหรับคอมพิวเตอร์: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างขบวนรถไฟได้ STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :ไม่ยอมให้มียานพาหนะทางบกสำหรับคอมพิวเตอร์: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างยานพาหนะทางบกได้ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :ไม่ยอมให้มีอากาศยานสำหรับคอมพิวเตอร์: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างอากาศยานได้ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :ไม่ยอมให้มีเรือสำหรับคอมพิวเตอร์: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้ AI สามารถสร้างยานพาหนะทางน้ำได้ STR_CONFIG_SETTING_AI_PROFILE :รูปแบบการตั้งค่าพื้นฐาน: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :เลือกที่ตั้งค่าโปรไฟล์ที่จะใช้สำหรับเอไอเอสแบบสุ่มหรือค่าเริ่มต้นสำหรับการเพิ่มสคริปต์ AI หรือเกมใหม่ STR_CONFIG_SETTING_AI_PROFILE_EASY :ง่าย STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :ปานกลาง STR_CONFIG_SETTING_AI_PROFILE_HARD :ยาก STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :อนุญาตให้ใช้ปัญญาประดิษฐ์ (AI) สำหรับหลายผู้เล่น: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :อนุญาตให้มี AI ในโหมดผู้เล่นหลายคน STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :จำนวน opcodes ก่อนที่สคริปต์ถูกหยุด: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :ตัวเลขสูงสุดของการคำนวณลำดับขั้น script สามารถใช้งานได้แค่ครั้งเดียว STR_CONFIG_SETTING_SERVINT_ISPERCENT :ใช้การซ่อมบำรุงโดยการคิดจากเปอร์เซนต์ของประสิทธิภาพ: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :เลือกการซ่อมบำรุงหลังจากซ่อมบำรุงครั้งล่าสุดตามค่าประสิทธิภาพที่ลดลง แทนที่การซ่อมบำรุงตามวงรอบวัน STR_CONFIG_SETTING_SERVINT_TRAINS :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงของขบวนรถไฟ: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับขบวนรถไฟ เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} วัน/% STR_CONFIG_SETTING_SERVINT_DISABLED :ไม่ตั้ง STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงของพาหนะทางบก: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับพาหนะทางบก เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน STR_CONFIG_SETTING_SERVINT_AIRCRAFT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงของอากาศยาน: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับอากาศยาน เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน STR_CONFIG_SETTING_SERVINT_SHIPS :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงของพาหนะทางน้ำ: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :ตั้งค่าแรกเริ่มสำหรับการเข้าซ่อมบำรุงสำหรับพาหนะทางน้ำ เป็นหน่วยวัน หรือหากเลือกการตั้งค่าโดยคิดจากเปอร์เซนต์ของประสิทธิ์ภาพ จะเปลี่ยนไปใช้่หน่วยเปอร์เซนต์แทน STR_CONFIG_SETTING_NOSERVICE :ไม่ใช้งานการซ่อมบำรุงเมื่อตั้งเป็นไม่มีการขัดข้อง: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :เมื่อเปิดใช้งาน ยานพาหนะจะไม่เข้ารับการซ่อมบำรุงหากตั้งค่าไว้ไม่ให้มีการชำรุด STR_CONFIG_SETTING_WAGONSPEEDLIMITS :จำกัดความเร็วของรถจักร/รถพ่วง: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :เมื่อเปิดใช้งาน จะทำให้มีจำกัดความเร็วสูงสุดของยานพาหนะและรถพ่วงต่างๆ STR_CONFIG_SETTING_DISABLE_ELRAILS :ปิดระบบสายส่งไฟฟ้า(Electricfield): {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :เมื่อเปิดการใช้งาน จะทำการปิดความต้องการการใช้งานระบบ Electrifield ของรถจักรหรือรถไฟฟ้า STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :เมื่อมีพาหนะแรกแรกมาถึงสถานีของผู้เล่น: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :แสดงข่าวเมื่อมีพาหนะมาถึงสถานีของบริษัทเรา STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :เมื่อมีพาหนะแรกมาถึงสถานีของบริษัทคู่แข่ง: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :แสดงข่าวเมื่อมีพาหนะถึงที่สถานีของศัตรู STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :ภัยพิบัติ / อุบัติเหตุ: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :แสดงข่าวเกี่ยวกับภัยพิบัติและอุบัติเหตุ STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :ข้อมูลข่าวสารของบริษัท: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :แสดงข่าวเมื่อมีบริษัทเปิดใหม่หรือบริษัทใกล้ล้มละลาย STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :อุตสาหกรรมเปิดตัวใหม่: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :แสดงข่าวเกี่ยวกับโรงงานเปิดใหม่ STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :อุตสาหกรรมปิดตัวลง: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :แสดงข่าวเกี่ยวกับโรงงานที่ปิดตัว STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :การเปลี่ยนแปลงทางเศรษฐกิจ: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :แสดงข่าวเกี่ยวกับการเปลี่ยนแปลงทางเศรษฐศาสตร์ของโลก STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :การเปลี่ยนแปลงของสินค้าที่ส่งให้บริษัทเราเป็นผู้ขนส่ง: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :แสดงข่าวเกี่ยวกับผลผลิตที่เปลี่ยนไปของโรงงานต่างๆที่บริษัทเราขนส่งสินค้าอยู่ STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :การเปลี่ยนแปลงของสินค้าที่ส่งให้บริษัทคู่แข่งเป็นผู้ขนส่ง: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :แสดงข่าวเกี่ยวกับผลผลิตที่เปลี่ยนไปของโรงงานต่างๆที่คู่แข่งขนส่งสินค้าอยู่ STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :การเปลี่ยนแปลงการผลิตสินค้าของอุตสาหกรรมอื่นๆ: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :แสดงข่าวเกี่ยวกับการผลิตที่เปลี่ยนไปของโรงงานต่างๆที่ยังไม่มีผู้ขนส่งสินค้า STR_CONFIG_SETTING_NEWS_ADVICE :คำแนะนำ / ข้อมูลเกี่ยวกับยานยนต์ของบริษัท: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :แสดงข้อความเมื่อยานพาหนะเกิดเหตุฉุกเฉิน STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :ยานพาหนะชนิดใหม่: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :แสดงหนังสือพิมพ์เมื่อมียานพาหนะรุ่นใหม่ STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :การเปลี่ยนแปลงการรับสินค้าของสถานี: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :แสดงเมื่อมีการเปลี่ยนแปลงการรับสินค้าของสถานี STR_CONFIG_SETTING_NEWS_SUBSIDIES :โครงการที่มีงบประมาณสนับสนุน: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :แสดงข่าวเกี่ยวกับเงินสมทบของโครงการที่มีงบประมาณสนับสนุน STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :ข้อมูลทั่วไป: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :แสดงหนังสือพิมพ์เกี่ยวกับเหตุการณ์ทั่วไป เช่นการซื้อสิทธิพิเศษหรือการปรับปรุงถนน STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :ปิด STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :แสดงข้อความในแถบเลื่อน STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :แสดงข้อความแบบเต็ม STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :เริ่มใช้งานหนังสือพิมพ์สีในปี: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :เป็นการกำหนดว่าจะเริ่มต้นการใช้งานหนังสือพิมพ์แบบสีเมื่อปีใด STR_CONFIG_SETTING_STARTING_YEAR :ปีที่เริ่มต้น: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :ยอมให้มีเศรษฐกิจที่ราบรื่น (มากขึ้น, เปลี่ยนแปลงเล็กน้อย): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :เมื่อเปิดใช้งาน อุดสาหกรรมจะมีการเปลี่ยนแปลงผลผลผลิต STR_CONFIG_SETTING_ALLOW_SHARES :อนุญาตให้ซื้อหุ้นจากบริษัทอื่นได้: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :เมื่อเปิดการใช้งาน จะสามารถซื้่อชขายหุ้นระหว่างบริษัท จะสามารถซื้อขายหุ้นได้ต่อเมื่อบริษัทเปิดตัวมานานแล้วเท่านั้น STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :เปอเซนต์ของผลกำไรที่จะส่งเข้าสู่ระบบกระจายรายได้: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :เปอร์เซนต์ของรายได้ที่ส่งให้ฐานของระบบกระจายรายได้ ส่งผลต่อการควบคุมรายได้ทั้งหมด STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :เมื่อลากเมาส์จะทำการวางเสาอาณัติสัญญาณโดยอัตโนมัติทุกๆ: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :ตั้งค่าระยะที่จะให้ตั้งเสาอาณัติสัญญาณเมื่อทำการลากเมาส์ค้างเป็นระยะทางยาวๆ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} ช่อง STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :เมื่อลากเมาส์ จะทำการจัดระยะของเสาสัญญาณใหม่: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :เลือกระยะห่างระหว่างเสาอาณัติสัญญาณแต่ละต้นหากมีการลากเมาส์ต่อเนื่อง โดยหลีกเลี่ยงสะพานและอุโมงค์ ตามที่กำหนดค่าไว้ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :เลือกใช้เสาอาณัติสัญญาณไฟสีอัตโนมัติในปี: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :เลือกปีที่เริ่มต้นการใช้งานเสาอาณัติสัญญาณไฟสี ซึ่งก่อนหน้าปีนี้จะเป็นการใช้งานเสาสัญญาณแบบหางปลา STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :เปิดใช้งานตัวเลือกรูปแบบเสาอาณัติสัญญาณ: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :แสดงหน้าต่างเพื่อเลือกประเภทเสาอาณัติสัญญาณ หากไม่เปิดใช้งานใช้การกดปุ่ม Ctrl+คลิ๊กเมาส์ซ้าย STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :ชนิดของเสาอาณัติสัญญาณปริยายที่จะใช้: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :รูปแบบเสาอาณัติสัญญาณปริยายที่จะใช้งานทุกครั้ง STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :เสาอาณัติสัญญาณอย่างง่าย STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :เสาอาณัติสัญญาณตอนอัตโนมัติ STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :เสาอาณัติสัญญาณตอนอัตโนมัติ แบบทางเดียว STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :วนชนิดเสาอาณัติสัญญาณ: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :เลือกประเภทเสาอาณัติสัญญาณที่จะเปลี่ยนไปในวงรอบ STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :สัญญาณอย่างง่ายเท่านั้น STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :เสาอาณัติสัญญาณตอนอัตโนมัติ แบบทางเดียว STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :ทั้งหมด STR_CONFIG_SETTING_TOWN_LAYOUT :รูปแบบถนนสำหรับเมืองใหม่: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :แบบแปลนของเครือข่ายถนนในเมือง STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :ดั้งเดิม STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :ถนนที่ดีกว่า STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :ตาราง 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :ตาราง 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :สุ่ม STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :ยอมให้เมืองสร้างถนนได้: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :อนุญาตให้เมืองสามารถขยายถนนเพื่อรองรับการขยายตัว STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :ยอมให้เมืองสร้างทางข้ามระดับดินได้: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :เปิดการใช้งาน เพื่ออนุญาตให้เมืองสามารถสร้างทางตัดเสมอระดับทางรถไฟได้ STR_CONFIG_SETTING_NOISE_LEVEL :เปิดใช้งานให้เมืองมีการควบคุมมลภาวะทางเสียงของท่าอากาศยาน: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :เมื่อปิดการใช้งานนี้ จะสามารถสร้างท่าอากาศยานได้มากกว่า 1 STR_CONFIG_SETTING_TOWN_FOUNDING :ก่อตั้งเมืองใหม่ในเกม: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :เปิดการใช้งาน จะสามารถเลือกตั้งเมืองใหม่ได้ขณะเล่นเกม STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ห้าม STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :ยอม STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :ยอม, รูปแบบเมืองกำหนดเอง STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :การปลูกป่า: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :ควบคุมการสุ่มการเจริญเติบโตของต้นไม้ระหว่างเล่นเกม STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ไม่มี {RED}(ไม่มีโรงเลื่อยไม้) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :เฉพาะในป่าฝนเท่านั้น STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :ทุกหนทุกแห่ง STR_CONFIG_SETTING_TOOLBAR_POS :ตำแหน่งแถบเครื่องมือหลัก: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :ตำแหน่งของปุ่มเครื่องมือต่างๆด้านบนของจอภาพ STR_CONFIG_SETTING_STATUSBAR_POS :ตำแหน่งของแถบแสดงสถานะ: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :ตำแหน่งของแถบแสดงผลต่างๆด้านล่างของจอภาพ STR_CONFIG_SETTING_SNAP_RADIUS :รัศมีของหน้าต่าง: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :ปรับความกว้างหรือความยาวของหน้าต่างต่างๆ หากถูกนำมาเรียงติดกันและขยายขนาดให้ใกล้เคียงกัน STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :ไม่ใช้งาน STR_CONFIG_SETTING_SOFT_LIMIT :จำนวนมากสุดของหน้าต่างที่ไม่ปักหมุด: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :จำนวนของหน้าต่างที่จะสามารถเปิดได้จนกว่าจะถึงขีดจำกัดและจะปิดหน้าต่างก่อนหน้านี้ลงตามลำดับ STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :ไม่ใช้งาน STR_CONFIG_SETTING_ZOOM_MIN :ระดับการซูมเข้าจากปกติ: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :ระยะซูมเข้าสูงสุด เมื่อเลือกการใช้งานแล้ว จะทำให้สามารถซูมเข้าไปใกล้ๆได้มากกว่าปกติของเกม STR_CONFIG_SETTING_ZOOM_MAX :ระดับการซูมออกสูงสุด: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :ระดับของการซูมออกสูงสุด เดิมจะมีข้อจำกัด แต่สามารถเพิ่มระยะการซูมออกได้มากขึ้นจากตัวเลือกนี้ STR_CONFIG_SETTING_ZOOM_LVL_MIN :4 เท่า STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2 เท่า STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :ปกติ STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2 เท่า STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4 เท่า STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8 เท่า STR_CONFIG_SETTING_TOWN_GROWTH :ความเร็วการขยายตัวของเมือง: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :ความเร็วในการขยายตัวของเมือง STR_CONFIG_SETTING_TOWN_GROWTH_NONE :ไม่มี STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :ช้า STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :ปกติ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :เร็ว STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :เร็วมาก STR_CONFIG_SETTING_LARGER_TOWNS :สัดส่วนระหว่างจำนวนเมืองเล็กกับเมืองใหญ่: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :สัดส่วนระหว่างจำนวนเมืองเล็กกับเมืองใหญ่ STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ใน {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :ไม่มี STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :ตัวคูณขนาดเมืองเริ่มต้น: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :ขนาดโดยเฉลี่ยของเมืองใหญ่ที่สัมพันธ์กับเมืองปกติ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :นำสิ่งที่เป็นอุปสรรคของถนนออกระหว่างการก่อสร้างถนน: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :ลบทางตันของถนนระหว่างการใช้งานการปรับปรุงถนนในท้องถิ่น STR_CONFIG_SETTING_GUI :{ORANGE}ส่วนเชื่อมต่อผู้ใช้ STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}การก่อสร้าง STR_CONFIG_SETTING_VEHICLES :{ORANGE}ยานพาหนะ STR_CONFIG_SETTING_STATIONS :{ORANGE}สถานี STR_CONFIG_SETTING_ECONOMY :{ORANGE}เศรฐกิจ STR_CONFIG_SETTING_AI :{ORANGE}คู่แข่ง STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}ตัวเลือกการแสดงผล STR_CONFIG_SETTING_INTERACTION :{ORANGE}การโต้ตอบ STR_CONFIG_SETTING_SOUND :{ORANGE}เสียงเอฟเฟกต์ STR_CONFIG_SETTING_NEWS :{ORANGE}ข่าวสารและข้อความ STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}อาณัติสัญญาณ STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}การขนถ่าย STR_CONFIG_SETTING_AI_NPC :{ORANGE}ผู้เล่นคอมพิวเตอร์ STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}การแทนที่อัตโนมัติ STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}เกี่ยวกับการซ่อมบำรุง STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}การค้นหาเส้นทางของพาหนะ STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}รถไฟ STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}เมือง STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}อุตสาหกรรม STR_CONFIG_SETTING_PATHFINDER_OPF :ดั้งเดิม STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(แนะนำ) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ตัวค้นหาเส้นทางสำหรับรถไฟ: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :การหาค้นหาเส้นทางของขบวนรถไฟ STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :ตัวค้นหาเส้นทางสำหรับรถยนต์: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :การค้นหาเส้นทางของยานพาหนะทางบก STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :ตัวค้นหาเส้นทางสำหรับเรือ: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :การค้นหาเส้นทางของยานพาหนะทางน้ำ STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :หมุนกลับขบวนอัตโนมัติที่เสาอาณัติสัญญาณ: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :อนุญาตให้ขบวนรถไฟกลับขบวนที่เสาอาณัติสัญญาณเมื่อมีการรอสัญญาณอนุญาตเป็นเวลานาน STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}เปลี่ยนค่าการตั้งค่า # Config errors STR_CONFIG_ERROR :{WHITE}เกิดข้อผิดพลาดกับไฟล์ที่เก็บข้อมูลการตั้งค่า STR_CONFIG_ERROR_ARRAY :{WHITE}... เกิดข้อผิดพลาดในอาร์เรย์ '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}...ค่านี้ไม่ถูกต้อง '{STRING}' สำหรับ '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... ติดตามตัวอักษรที่จุดสิ้นสุดของการตั้งค่า '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... กำลังเพิกเฉย NewGRF '{STRING}': GRF ID ซ้ำกับ '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... กำลังเพิกเฉย NewGRF ที่ไม่ถูกต้อง '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ไม่พบ STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ไม่ปลอดภัยสำหรับการใช้แบบคงที่ STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF ของระบบ STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ไม่รองรับกับ OpenTTD เวอร์ชันนี้ STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ไม่ทราบ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... ระดับการบับอัด '{STRING}' ไม่ถูกต้อง STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... รูปแบบการเซฟเกม '{STRING}' ใช้ไม่ได้... กำลังปรับค่ากลับเป็น '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ไม่สนใน Base Graphics set '{STRING}': หาไม่พบ STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ไม่สนใน Base Sounds set '{STRING}': หาไม่พบ STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ไม่สนใจ Base Music set '{STRING}': หาไม่พบ STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}หน่วยความจำไม่เพียงพอ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}การกำหนดพื้นที่ {BYTES} ของ Spritecache ล้มเหลว Spritecache ได้ลดลง {BYTES}. นี่คือการทำให้ประสิทธิภาพของเกม OpenTTD ลดลง. เพื่อลดความต้องการของหน่วยความจำ ให้ทำการปิดการใช้งานระบบ 32bpp graphics # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}เริ่มเกมใหม่ STR_INTRO_LOAD_GAME :{BLACK}โหลดเกม STR_INTRO_PLAY_SCENARIO :{BLACK}เล่นโหมดเรื่องราว STR_INTRO_PLAY_HEIGHTMAP :{BLACK}เล่นแผนที่จากภาพชั้นความสูง STR_INTRO_SCENARIO_EDITOR :{BLACK}โปรแกรมแก้ไขแผนที่ STR_INTRO_MULTIPLAYER :{BLACK}เล่นหลายคน STR_INTRO_GAME_OPTIONS :{BLACK}ตัวเลือกเกม STR_INTRO_HIGHSCORE :{BLACK}ตารางคะแนนสูงสุด STR_INTRO_ADVANCED_SETTINGS :{BLACK}การตั้งค่าขั้นสูง STR_INTRO_NEWGRF_SETTINGS :{BLACK}การตั้งค่า NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}ตรวจสอบเนื้อหาออนไลน์ STR_INTRO_SCRIPT_SETTINGS :{BLACK}ตั้งค่า AI/Game Script STR_INTRO_QUIT :{BLACK}ออก STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}เริ่มเกมใหม่, Ctrl+Click เพื่อข้ามการตั้งค่าแผนที่ STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}เปิดเกมที่บันทึกไว้ STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}เริ่มเกมใหม่โดยใช้ heightmap เป็นภูมิประเทศ STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}เริ่มเกมใหม่ โดยใช้ฉากที่กำหนดเอง STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}สร้างเกมที่มี โลก/ฉาก ที่กำหนดเอง STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}เริ่มเกมผู้เล่นหลายคน STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}เลือกรูปแบบภูมิประเทศ 'เขตอบอุ่น' STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}เลือกรูปแบบภูมิประเทศ 'เขตกึ่งขั้วโลก' STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}เลือกรูปแบบภูมิประเทศ 'เขตกึ่งมรสุม' STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}เลือกสภาพภูมิประเทศ 'เมืองของเล่น' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}แสดงตัวเลือกเกม STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}แสดงตารางคะแนนสูงสุด STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}แสดงการกำหนดค่าขั้นสูง STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}แสดงการกำหนดค่า NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}ตรวจสอบเนื้อหาใหม่และการปรับปรุงสำหรับดาวโหลด STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}แสดงการตั้งค่า AI/Game script STR_INTRO_TOOLTIP_QUIT :{BLACK}ออกจากเกม OpenTTD STR_INTRO_TRANSLATION :{BLACK} การแปลภาษาส่วนนี้หายไป {NUM} string{P ""}. โปรดช่วยทำให้ OpenTTD ดีขึ้นโดยการสมัครเป็นผู้แปล. ดูใน readme.txt สำหรับรายละเอียด. # Quit window STR_QUIT_CAPTION :{WHITE}ออกจากเกม STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}คุณแน่ใจว่าจะออกจากเกม OpenTTD แล้วกลับสู่ {STRING}? STR_QUIT_YES :{BLACK}ใช่ STR_QUIT_NO :{BLACK}ไม่ # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :ระบบปฏิบัติการ Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}ออกไปสู่เมนูหลัก STR_ABANDON_GAME_QUERY :{YELLOW}เกมยังดำเนินอยู่แน่ใจหรือไม่ว่าจะกลับไปสู่เมนูหลัก? STR_ABANDON_SCENARIO_QUERY :{YELLOW}คุณแน่ใจหรือที่จะยกเลิกแผนที่นี้? # Cheat window STR_CHEATS :{WHITE}สูตรโกงเกม STR_CHEATS_TOOLTIP :{BLACK}กล่องตัวเลือกจะแสดงว่าคุณโกงมาก่อนหรือไม่ STR_CHEATS_WARNING :{BLACK}คำเตือน! คุณกำลังหักหลังคู่แข่งของคุณ พึงระลึกว่าการกระทำเช่นนี้จะถูกจดจำไปอีกนาน STR_CHEAT_MONEY :{LTBLUE}เพิ่มเงิน {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}เล่นเป็นบริษัท: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}เครื่องมือทำลายพิเศษ (ทำลายส่วนอุตสาหกรรม, ของที่เคลื่อนย้ายไม่ได้): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}อุโมงค์สามารถตัดกันได้: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}เครื่องบินไอพ่นจะไม่ตกบ่อยๆ ในท่าอากาศยานขนาดขนาดเล็ก: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :ภูมิประเทศเขตอบอุ่น STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :ภูมิประเทศเขตกึ่งขั้วโลก STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :ภูมิประเทศเขตกึ่งมรสุม STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :ภูมิประเทศเมืองของเล่น STR_CHEAT_CHANGE_DATE :{LTBLUE}เปลี่ยนวันที่: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}เปลี่ยนปีปัจจุบัน STR_CHEAT_SETUP_PROD :{LTBLUE}เปิดใช้งานการแก้ไขปริมาณผลผลิต: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}สร้างแบบสีใหม่ STR_LIVERY_GENERAL_TOOLTIP :{BLACK}แสดงแบบสีทั่วไป STR_LIVERY_TRAIN_TOOLTIP :{BLACK}แสดงแบบสีรถไฟ STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}แสดงแบบสีรถยนต์ STR_LIVERY_SHIP_TOOLTIP :{BLACK}แสดงแบบสีเรือ STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}แสดงแบบสีเครื่องบิน STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}เลือกสีหลักของแบบสีที่เลือก Ctrl+Click จะปรับสีในทุกๆแบบ STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}เลือกสีรองของแบบสีที่เลือก Ctrl+Click จะปรับสีในทุกๆแบบ STR_LIVERY_PANEL_TOOLTIP :{BLACK}เลือกแบบสีที่จะเปลี่ยน หรือหลายแบบโดย Ctrl+คลิก คลิกบนกล่องเพิ่อปิดเปิดการใช้งานแบบสีนั้น STR_LIVERY_DEFAULT :ชุดสีมาตรฐาน STR_LIVERY_STEAM :รถจักรไอน้ำ STR_LIVERY_DIESEL :รถจักรดีเซล STR_LIVERY_ELECTRIC :รถจักรไฟฟ้า STR_LIVERY_MONORAIL :รถไฟรางเดี่ยว STR_LIVERY_MAGLEV :รถไฟแมคเลฟ STR_LIVERY_DMU :รถดีเซลราง STR_LIVERY_EMU :รถไฟฟ้า STR_LIVERY_PASSENGER_WAGON_STEAM :รถโดยสารของรถจักรไอน้ำ STR_LIVERY_PASSENGER_WAGON_DIESEL :รถโดยสารของรถจักรดีเซล STR_LIVERY_PASSENGER_WAGON_ELECTRIC :รถโดยสารของรถจักรไฟฟ้า STR_LIVERY_PASSENGER_WAGON_MONORAIL :รถไฟรางเดี่ยว STR_LIVERY_PASSENGER_WAGON_MAGLEV :รถไฟแมคเลฟ STR_LIVERY_FREIGHT_WAGON :รถสินค้า STR_LIVERY_BUS :รถโดยสาร STR_LIVERY_TRUCK :รถบรรทุก STR_LIVERY_PASSENGER_SHIP :เรือเฟอรี่/เรือโดยสาร STR_LIVERY_FREIGHT_SHIP :เรือสินค้า STR_LIVERY_HELICOPTER :เฮลิคอปเตอร์ STR_LIVERY_SMALL_PLANE :อากาศยานขนาดเล็ก STR_LIVERY_LARGE_PLANE :อากาศยานขนาดใหญ่ STR_LIVERY_PASSENGER_TRAM :รถรางโดยสาร STR_LIVERY_FREIGHT_TRAM :รถรางขนส่งสินค้า # Face selection window STR_FACE_CAPTION :{WHITE}เลือกใบหน้า STR_FACE_CANCEL_TOOLTIP :{BLACK}ยกเลิการเลือกใบหน้าใหม่ STR_FACE_OK_TOOLTIP :{BLACK}ยอมรับการเลือกใบหน้าใหม่ STR_FACE_MALE_BUTTON :{BLACK}ผู้ชาย STR_FACE_MALE_TOOLTIP :{BLACK}เลือกใบหน้าผู้ชาย STR_FACE_FEMALE_BUTTON :{BLACK}ผู้หญิง STR_FACE_FEMALE_TOOLTIP :{BLACK}เลือกใบหน้าผู้หญิง STR_FACE_NEW_FACE_BUTTON :{BLACK}ใบหน้าใหม่ STR_FACE_NEW_FACE_TOOLTIP :{BLACK}ทำใบหน้าสุ่มใหม่ STR_FACE_ADVANCED :{BLACK}ขั้นสูง STR_FACE_ADVANCED_TOOLTIP :{BLACK}เลือกใบหน้าขั้นสูง STR_FACE_SIMPLE :{BLACK}อย่างง่าย STR_FACE_SIMPLE_TOOLTIP :{BLACK}เลือกใบหน้าอย่างง่าย STR_FACE_LOAD :{BLACK}โหลด STR_FACE_LOAD_TOOLTIP :{BLACK}โหลดใบหน้าที่ชอบ STR_FACE_LOAD_DONE :{WHITE}ใบหน้าที่ชอบถูกโหลดจากไฟล์กำหนดค่าของ OpenTTD แล้ว STR_FACE_FACECODE :{BLACK}ใบหน้าผู้เล่นเบอร์ STR_FACE_FACECODE_TOOLTIP :{BLACK}ดู และ/หรือ ตั้งหมายเลขใบหน้าผู้เล่น STR_FACE_FACECODE_CAPTION :{WHITE}ดู และ/หรือ ตั้งหมายเลขใบหน้าผู้เล่น STR_FACE_FACECODE_SET :{WHITE}กำหนดหมายเลขใบหน้าใหม่ให้แล้ว STR_FACE_FACECODE_ERR :{WHITE}ไม่สามารถเปลี่ยนหมายเลขใบหน้าได้ - ช่วงตัวเลขต้องอยู่ระหว่าง 0 และ 4,294,967,295! STR_FACE_SAVE :{BLACK}บันทึก STR_FACE_SAVE_TOOLTIP :{BLACK}บันทึกใบหน้าโปรด STR_FACE_SAVE_DONE :{WHITE}ใบหน้านี้จะถูกบันทึกเป็นใบหน้าโปรดในไฟล์การตั้งค่าของ OpenTTD STR_FACE_EUROPEAN :{BLACK}ยุโรป STR_FACE_SELECT_EUROPEAN :{BLACK}เลือกใบหน้ายุโรป STR_FACE_AFRICAN :{BLACK}แอฟริกัน STR_FACE_SELECT_AFRICAN :{BLACK}เลือกใบหน้าแอฟริกัน STR_FACE_YES :ใช่ STR_FACE_NO :ไม่ STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}เปิดใช้งานหนวด STR_FACE_HAIR :ผม: STR_FACE_HAIR_TOOLTIP :{BLACK}เปลี่ยนผม STR_FACE_EYEBROWS :คิ้ว: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}เปลี่ยนคิ้ว STR_FACE_EYECOLOUR :สีตา: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}เปลี่ยนสีตา STR_FACE_GLASSES :แว่น: STR_FACE_GLASSES_TOOLTIP :{BLACK}เปิดใช้งานแว่นตา STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}เปลี่ยนแว่นตา STR_FACE_NOSE :จมูก: STR_FACE_NOSE_TOOLTIP :{BLACK}เปลี่ยนจมูก STR_FACE_LIPS :ปาก: STR_FACE_MOUSTACHE :หนวด: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}เปลี่ยนปากหรือหนวด STR_FACE_CHIN :คาง: STR_FACE_CHIN_TOOLTIP :{BLACK}เปลี่ยนคาง STR_FACE_JACKET :เสื้อ: STR_FACE_JACKET_TOOLTIP :{BLACK}เปลี่ยนเสื้อ STR_FACE_COLLAR :คอเสื้อ: STR_FACE_COLLAR_TOOLTIP :{BLACK}เปลี่ยนคอเสื้อ STR_FACE_TIE :เนคไท: STR_FACE_EARRING :ต่างหู: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}เปลี่ยนเนคไทหรือต่างหู # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}เล่นหลายคน STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}การเชื่อมต่อ: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}เลือกเล่นระหว่างอินเตอร์เน็ตหรือ LAN STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}ชื่อผู้เล่น: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}เป็นชื่อที่ผู้เล่นคนอื่นจะมองเห็น STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}ชื่อ STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}ชื่อของเกม STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}ลูกข่าย STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}จำนวนลูกข่ายออนไลน์ / จำนวนลูกข่ายสูงสุด{}จำนวนบริษัทออนไลน์ / จำนวนบริษัทสูงสุด STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}ขนาดแผนที่ STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}ขนาดแผนที่ของเกม{}คลิกเพื่อเรียงตามขนาดพื้นที่ STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}วันที่ STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}วันที่ปัจจุบัน STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}ปี STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}จำนวนปีที่ผ่านไปในเกม{}ตั้งแต่เริ่มเล่น STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}ภาษา, เวอร์ชันของเซิร์ฟเวอร์, และอื่นๆ STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}คลิกที่เกมจากรายการเพื่อเลือก STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}เซิร์ฟเวอร์ที่เข้าร่วมล่าสุด: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}คลิกเพื่อเลือกเซิร์ฟเวอร์ที่เล่นล่าสุด STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ข้อมูลเกม STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}ลูกข่าย: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}ภาษา: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}ภูมิทัศน์: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}ขนาดแผนที่: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}เวอร์ชันของเซิร์ฟเวอร์: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}ที่อยู่เซิร์ฟเวอร์: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}วันที่เริ่ม: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}วันที่ปัจจุบัน: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}ป้องกันด้วยรหัสผ่าน! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}เซิร์ฟเวอร์ออฟไลน์ STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}เซิร์ฟเวอร์เต็ม STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}เวอร์ชันไม่ถูกต้อง STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF ไม่ถูกต้อง STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}เข้าร่วมเกม STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}เรียกดูเซิร์ฟเวอร์ใหม่ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}เรียกดูข้อมูลเซิร์ฟเวอร์ใหม่ STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}หาเซิร์ฟเวอร์ STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}ค้นหาเซิร์ฟเวอร์ในเครือข่าย STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}เพิ่มเซิร์ฟเวอร์ STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}เพิ่มเซิร์ฟเวอร์เข้าไปในรายการซึ่งจะถูกตรวจสอบเพื่อเข้าเล่นเกม STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}เริ่มเซิร์ฟเวอร์ใหม่ STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}เริ่มเซิร์ฟเวอร์ใหม่ของคุณ STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}ป้อนชื่อของคุณ STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}ป้อนที่อยู่ของโฮสต์ # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}เริ่มเกมผู้เล่นหลายคนใหม่ STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}ชื่อเกม: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}ชื่อเกมจะถูกแสดงให้ผู้เล่นอื่นเห็นในเกมที่มีการเล่นหลายคน STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}กำหนดรหัสผ่าน STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}ป้องกันเกมด้วยรหัสผ่านหากไม่ต้องการให้มีการเข้าร่วมจากบุคคลทั่วไป STR_NETWORK_START_SERVER_LAN_INTERNET :แลน / อินเตอร์เน็ต STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :อินเตอร์เน็ต (มีการประกาศ) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} ลูกข่าย STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}ลูกข่ายสูงสุด: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}เลือกจำนวนมากสุดของลูกข่าย (ไม่จำเป็นต้องครบตามจำนวนนี้) STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} บริษัท STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}จำนวนบริษัทสูงสุด: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}จำกัดจำนวนบริษัทที่อยู่ในเซิร์ฟเวอร์ STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} ผู้ชม STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}ผู้ชมสูงสุด: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}จำกัดจำนวนผู้ชมที่อยู่ในเซิร์ฟเวอร์ STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}ภาษาที่ใช้พูดคุย: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}ผู้เล่นทุกคนจะสามารถทราบถึงภาษาที่ใช้พูดคุยในเซิร์ฟเวอร์นี้ STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}พิมพ์ชื่อสำหรับเล่นในเครือข่าย # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :อะไรก็ได้ STR_NETWORK_LANG_ENGLISH :ภาษาอังกฤษ STR_NETWORK_LANG_GERMAN :ภาษาเยอรมัน STR_NETWORK_LANG_FRENCH :ภาษาฝรั่งเศส STR_NETWORK_LANG_BRAZILIAN :ภาษาบราซิล STR_NETWORK_LANG_BULGARIAN :ภาษาบัลกาเรีย STR_NETWORK_LANG_CHINESE :จีน STR_NETWORK_LANG_CZECH :เช็ก STR_NETWORK_LANG_DANISH :เดนมาร์ก STR_NETWORK_LANG_DUTCH :เนเธอร์แลนด์ STR_NETWORK_LANG_ESPERANTO :ภาษาโลก(Esperanto) STR_NETWORK_LANG_FINNISH :ฟินแลนด์ STR_NETWORK_LANG_HUNGARIAN :ฮังการี STR_NETWORK_LANG_ICELANDIC :ไอร์แลนด์ STR_NETWORK_LANG_ITALIAN :อิตาลี STR_NETWORK_LANG_JAPANESE :ญี่ปุ่น STR_NETWORK_LANG_KOREAN :เกาหลี STR_NETWORK_LANG_LITHUANIAN :ลิทัวเนีย STR_NETWORK_LANG_NORWEGIAN :นอร์เวย์ STR_NETWORK_LANG_POLISH :โปแลนด์ STR_NETWORK_LANG_PORTUGUESE :โปรตุเกส STR_NETWORK_LANG_ROMANIAN :โรมาเนีย STR_NETWORK_LANG_RUSSIAN :รัสเซีย STR_NETWORK_LANG_SLOVAK :สโลวัก STR_NETWORK_LANG_SLOVENIAN :สโลวาเนีย STR_NETWORK_LANG_SPANISH :สเปน STR_NETWORK_LANG_SWEDISH :สวีเดน STR_NETWORK_LANG_TURKISH :ตุรกี STR_NETWORK_LANG_UKRAINIAN :ยูเครน STR_NETWORK_LANG_AFRIKAANS :อัฟกานิสถาน STR_NETWORK_LANG_CROATIAN :โครเอเชีย STR_NETWORK_LANG_CATALAN :คาตาลัน STR_NETWORK_LANG_ESTONIAN :เอสโตเนีย STR_NETWORK_LANG_GALICIAN :กาลีเซีย STR_NETWORK_LANG_GREEK :กรีก STR_NETWORK_LANG_LATVIAN :ลัทเวีย ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}ห้องรับรองโหมดผู้เล่นหลายคน STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}กำลังเตรียมการเข้าร่วม: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}รายการของบริษัททั้งหมดที่อยู่ในเกมนี้ คุณสามารถที่จะเข้าร่วมหนึ่งในรายชื่อบริษัทเหล่านี้ได้หรือสามารถที่จะสร้างบริษัทใหม่ได้หากมีช่องว่างให้คุณ STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}ข้อมูลบริษัท STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}ชื่อบริษัท: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}วันที่เริ่มเปิด: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}มูลค่าของบริษัท: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}งบดุลปัจจุบัน: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}รายได้ของปีที่แล้ว: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}สมรรถภาพ: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}ภาหนะ: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}สถานี: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}ผู้เล่น: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}บริษัทใหม่ STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}สร้างบริษัทใหม่ STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}เข้าชมเกม STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}ดูเกมในฐานะผู้ชม STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}เข้าร่วมบริษัท STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}ช่วยบริหารจัดการบริษัทนี้ # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}กำลังเชื่อมต่อ... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) กำลังเชื่อมต่อ... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) กำลังตรวจสอบการเข้าร่วม... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) กรุณารอ... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) ดาวโหลดแผนที่... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) ประมวลข้อมูล... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) ลงทะเบียน... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}รวบรวมข้อมูลเกม... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}รวบรวมข้อมูลบริษัท... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P ""} อยู่ข้างหน้าคุณ STR_NETWORK_CONNECTING_DOWNLOADING_1 :ดาวน์โหลดไปแล้ว {BLACK}{BYTES} STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} ดาวโหลดไปแล้วทั้งสิ้น STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}ตัดการเชื่อมต่อ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}เซิฟเวอร์มีการป้องกัน กรุณากรอกพาสเวิร์ด STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}บริษัทมีการป้องกัน. กรุณากรอกพาสเวิร์ด # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}รายการลูกข่าย STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}ผู้ชม STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}บริษัทใหม่ # Network client list STR_NETWORK_CLIENTLIST_KICK :เตะ STR_NETWORK_CLIENTLIST_BAN :แบน STR_NETWORK_CLIENTLIST_GIVE_MONEY :ให้เงิน STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :พูดกับผู้เล่นทั้งหมด STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :พูดกับผู้เล่นในบริษัทเดียวกัน STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :ข้อความส่วนตัว STR_NETWORK_SERVER :เซิฟเวอร์ STR_NETWORK_CLIENT :ลูกข่าย STR_NETWORK_SPECTATORS :ผู้ชม STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}กรอกจำนวนเงินที่ต้องการจะให้ # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}ไม่ทำการเก็บพาสเวิร์ดที่กรอกไว้แล้ว STR_COMPANY_PASSWORD_OK :{BLACK}ตั้งพาสเวิร์ดของบริษัทใหม่ STR_COMPANY_PASSWORD_CAPTION :{WHITE}พาสเวิร์ดของบริษัท STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}พาสเวิร์ดตั้งต้นของบริษัท STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}ใช้พาสเวิร์ดของบริษัทนี้เป็นพาสเวิร์ดตั้งต้นของบริษัทใหม่ # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}เข้าร่วม STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}เข้าร่วมและเล่นเป็นบริษัทนี้ STR_COMPANY_VIEW_PASSWORD :{BLACK}พาสเวิร์ด STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}รหัสผ่านป้องกันบริษัทของคุณจากผู้เล่นที่ไม่ได้รับอนุญาตให้เข้าร่วม STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}ตั้งพาสเวิร์ดของบริษัท # Network chat STR_NETWORK_CHAT_SEND :{BLACK}ส่ง STR_NETWORK_CHAT_COMPANY_CAPTION :[ทีม]: STR_NETWORK_CHAT_CLIENT_CAPTION :[ส่วนตัว] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[ทั้งหมด]: STR_NETWORK_CHAT_COMPANY :[ทีม] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[ทีม] ถึง {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[ส่วนตัว] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[ส่วนตัว] ถึง {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[ทั้งหมด] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}พิมพ์ข้อความสำหรับการคุยในเครือข่าย # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}ไม่พบอุปกรณ์เน็ทเวิร์กหรือได้ผ่านการคอมไพล์โดยไม่ได้ตัวเลือกนี้ ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}ไม่พบเกมในระบบเน็ทเวิร์ก STR_NETWORK_ERROR_NOCONNECTION :{WHITE}เซิฟเวอร์ไม่ตอบรับคำขอ STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}ไม่สามารถติดต่อได้เนื่องจาก NewGRF ไม่ตรงกัน STR_NETWORK_ERROR_DESYNC :{WHITE}การประสานเวลากับเกม ไม่สำเร็จ(synchronisation failed) STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}การเชื่อมต่อกับเกมสูญหาย STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}ไม่สามารถโหลดเซฟเกมได้ STR_NETWORK_ERROR_SERVER_START :{WHITE}ไม่สามารถเริ่มเซิฟเวอร์ได้ STR_NETWORK_ERROR_CLIENT_START :{WHITE}ไม่สามารถเชื่อมต่อ STR_NETWORK_ERROR_TIMEOUT :{WHITE}เชื่อมต่อครั้งที่ #{NUM} เกินเวลาที่กำหนด STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}ตรวจเจอการขัดข้องของโพรโทคอลและการเชื่อต่อถูกปิดลง STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}revision ของลูกข่ายไม่ตรงกับของเซิฟเวอร์ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}พาสเวิร์ดผิด STR_NETWORK_ERROR_SERVER_FULL :{WHITE}เซิฟเวอร์เต็ม STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}คุณถูกแบนจากเซิฟเวอร์นี้ STR_NETWORK_ERROR_KICKED :{WHITE}คุณถูกเตะออกจากเซิฟเวอร์ STR_NETWORK_ERROR_CHEATER :{WHITE}ไม่อนุญาตให้โกงในเซิฟเวอร์นี้ STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}คุณส่งคำสั่งให้เซิฟเวอร์มากเกินไป STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}คุณใช้เวลานานเกินไปสำหรับป้อนรหัสผ่าน STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}คอมพิวเตอร์ของคุณช้าไปในการติดต่อกับเครื่องแม่ข่าย STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}คอมพิวเตอร์ของคุณใช้เวลามากเกินไปสำหรับการดาวน์โหลดแผนที่ STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}คอมพิวเตอร์ของคุณใช้เวลามากเกินไปสำหรับการเข้าร่วมกับเซิร์ฟเวอร์ ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :การผิดพลาดทั่วไป STR_NETWORK_ERROR_CLIENT_DESYNC :desync ผิดพลาด STR_NETWORK_ERROR_CLIENT_SAVEGAME :ไม่สามารถโหลดแผนที่ได้ STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :การเชื่อมต่อสูญหาย STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :โปรโทคอลผิดพลาด STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF ไม่ตรง STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ไม่ผ่านการตรวจสอบ STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ได้รับแพกเก็ตที่ผิดพลาดหรือไม่คาดหวัง STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revistion ผิด STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ชื่อนี้ถูกใช้แล้ว STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :พาสเวิร์ดผิด STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :บริษัทผิดใน DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :ถูกเตะโดยเซิฟเวอร์ STR_NETWORK_ERROR_CLIENT_CHEATER :กำลังพยายามที่จะโกง STR_NETWORK_ERROR_CLIENT_SERVER_FULL :เซิฟเวอร์เต็ม STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :ส่งคำสั่งมากเกินไป STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :ไม่ได้รับรหัสผ่านในเวลาที่กำหนด STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :หมดเวลา STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :ใช้เวลามากไปในการดาวน์โหลดแผนที่ STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :ใช้เวลามากไปในการประมวลผลแผนที่ ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}การเชื่อมต่อล้มเหลว STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}{NUM} วินาทีสุดท้ายไม่มีข้อมูลส่งถึงเครื่องแม่ข่าย # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :เกมหยุด ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :เกมยังหยุดอยู่ ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :เกมยังหยุดอยู่ ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :เกมยังหยุดอยู่ ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :เกมยังถูกหยุดอยู่ ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :เกมเริ่มต่อแล้ว ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :จำนวนผู้เล่น STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :ลูกข่ายกำลังเชื่อมต่อ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :กำหนดเอง STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :เกมสคริปต์ ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :กำลังออก STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ได้เข้าร่วมเกม STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ได้เข้าร่วมเกม (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} ได้เข้าร่วมบริษัท #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ได้เข้าเป็นผู้ชม STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ได้ทำการสร้างบริษัทใหม่ (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ได้ออกจากเกม ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ได้ทำการเปลี่ยนชื่อเป็น {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ยกบริษัทให้คุณ {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** คุณให้ {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}เซิฟเวอร์ปืดเซสซั่นนี้ STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}เซิฟเวอร์กำลังทำการเริ่มต้นใหม่...{}กรุณารอซักครู่... # Content downloading window STR_CONTENT_TITLE :{WHITE}กำลังโหลดเนื้อหา STR_CONTENT_TYPE_CAPTION :{BLACK}ประเภท STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}ประเภทของเนื้อหา STR_CONTENT_NAME_CAPTION :{BLACK}ชื่อ STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}ชื่อของเนื้อหา STR_CONTENT_MATRIX_TOOLTIP :{BLACK}กดลงบนบรรทัดเพื่อดูรายละเอียด{}ติ๊กบนกล่องเพื่อที่จะเลือกสำหรับการดาวโหลด STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}เลือกทั้งหมด STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}ทำการเลือกเนื้อหาทั้งหมดสำหรับดาวโหลด STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}เลือกอัพเกรด STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}เลือกเนื้อหาทั้งหมดที่เป็นการอัพเกรดของเนื้อหาเดิมที่มีอยู่แล้ว STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}ยกเลิกการเลือกทั้งหมด STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}เลือกทั้งหมดให้ไม่ทำการดาวโหลด STR_CONTENT_SEARCH_EXTERNAL :{BLACK}ค้นหาจากเว็บไซต์ภายนอก STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}สิ่งที่ต้องการหานั้นไม่มีในช่องทาง OpenTTD's content service STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}คุณต้องการออกจากเกมหรือไม่ ? STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}ข้อกำหนดและข้อความระวังสำหรับการดาวโหลดข้อมูลจากเว็บไซต์ภายนอก.{}คุณต้องหาข้อมูลสำหรับการติดตั้งข้อมูลส่วนนั้นเข้าสู่ OpenTTD.{}ต้องการทำต่อหรือไม่? STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name ตัวกรอง: STR_CONTENT_OPEN_URL :{BLACK}เยี่ยมชมเว็บไซต์ STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}เยี่ยมชมเว็บไซต์ของเนื้อหานี้ STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}ดาวโหลด STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}เริ่มทำการดาวโหลดเนื้อหาที่ได้เลือกไว้ STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}ขนาดทั้งหมด: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}ข้อมูลของเนื้อหา STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}คุณไม่ได้เลือกตัวนี้ให้ทำการดาวโหลด STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}คุณได้ทำการเลือกตัวนี้สำหรับดาวโหลด STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}dependency ตัวนี้ได้ทำการถูกเลือกไว้สำหรับดาวโหลด STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}คุณมีเนื้อหาตัวนี้แล้ว STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}ไม่รู้จักเนื้อหานี้และไม่สามารถดาวโหลดได้ทาง OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}เนื้อหานี้จะทำการติดตั้งทับกับเนื้อหาก่อนหน้านี้ {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}ชื่อ: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}เวอร์ชัน: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}คำบรรยาย: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}ประเภท: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}ขนาดที่ต้องดาวโหลด: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}ถูกเลือกเนื่องจาก: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependencies: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tags: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD สร้างขึ้นโดยไม่ได้รองรับ "zlib" ... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ไม่สามารถดาวโหลดเนื้อหาได้ # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :กราฟฟิคพื้นฐาน STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI library STR_CONTENT_TYPE_SCENARIO :การจำลอง STR_CONTENT_TYPE_HEIGHTMAP :Heightmap STR_CONTENT_TYPE_BASE_SOUNDS :เสียง STR_CONTENT_TYPE_BASE_MUSIC :เพลงประกอบพื้นฐาน STR_CONTENT_TYPE_GAME_SCRIPT :เกมสคริปต์ STR_CONTENT_TYPE_GS_LIBRARY :GS library # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}กำลังดาวโหลดเนื้อหา STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}ทำการร้องขอไฟล์... STR_CONTENT_DOWNLOAD_FILE :{WHITE}ตอนนี้กำลังดาวโหลด {STRING} ({NUM} จากทั้งหมด {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}ดาวโหลดเสร็จสิ้น STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} จากทั้งหมด {BYTES} ดาวโหลดไปแล้ว ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}ไม่สามารถเชื่อมต่อกับเซิฟเวอร์เนื้อหาเสริมได้.. STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}ดาวโหลดผิดพลาด... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... การเชื่อมต่อสูญหาย STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... ไม่สามารถเขียนทับไฟล์ได้ STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}ไม่สามารถทำการแตกไฟล์ที่ดาวโหลดมาแล้วได้ STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}กราฟฟิกขาดหาย STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD ไม่พบกราฟฟิกที่ใช้ในการทำงาน. คุณต้องการให้ OpenTTD ดาวน์โหลดและติดตั้งกราฟฟิกหรือไม่? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}ดาวน์โหลดกราฟฟิก STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}ออกจาก OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}ตัวเลือกค่าโปร่งใส STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของป้าย. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของต้นไม้. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของบ้าน. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของอุตสาหกรรม. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสิ่งปลูกสร้างที่สามารถสร้างได้เช่น สถานี, โรงซ่อมบำรุง และที่หมาย เป็นต้น. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสะพาน. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสิ่งปลูกสร้างอย่างเช่น ประภาคารและเสาส่งสัญญาณวิทยุ. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของสายจ่ายไฟรถไฟฟ้า. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}เปิด/ปิด การโปร่งใสของตัวบอกการบรรทุกของ. กด Ctrl+Click สำหรับการล็อก STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}ตั้งให้วัตถุมองไม่เห็นแทนการโปร่งใส # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}แสดงพื้นที่ให้บริการ STR_STATION_BUILD_COVERAGE_OFF :{BLACK}ปิด STR_STATION_BUILD_COVERAGE_ON :{BLACK}เปิด STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}ปิดการแสดงพื้นที่ให้บริการ STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}เปิดการแสดงพื้นที่ให้บริการ STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}สินค้าที่ต้องการ: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}สินค้าที่่จะส่งออกไป: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}รวมสถานี STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}สร้างสถานีแยกต่างหาก STR_JOIN_WAYPOINT_CAPTION :{WHITE}รวมจุดตรวจ STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}สร้างจุดตรวจแยกต่างหาก # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :การก่อสร้างทางรถไฟ STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :การก่อสร้างทางรถไฟพลังไฟฟ้า STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :การก่อสร้างทางรถไฟรางเดี่ยว STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :การก่อสร้างทางรถไฟพลังแม่เหล็ก STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}สร้างทางรถไฟ. กด Ctrl เพื่อสลับการสร้าง/รื้อถอน รางรถไฟ. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/การประเมินค่าใช้จ่าย STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}สร้างทางรถไฟโดยใช้โหมดการสร้างอัตโนมัติ. กด Ctrl เพื่อสลับการสร้าง/รื้อถอน รางรถไฟ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}สร้างโรงซ่อมบำรุงรถไฟ (สำหรับซื้อขายและซ่อมบำรุงรถไฟ). กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินราคา STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}เปลี่ยนรางรถไฟเป็นที่หมาย. กด Ctrl สามารถรวมที่หมายได้. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}สร้างสถานีรถไฟ. กด Ctrl เพื่อทำการรวมสถานี. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช่จ่าย STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}สร้างเสาอาณัติสัญญาณรถไฟ. กด Ctrl เพื่อสลับระหว่างระบบเสาหางปลา/เสาสัญญาณไฟสี{}สามารถสร้างโดยลากไปกับรางรถไฟได้. กด Ctrl เพื่อสร้างสัญญาณไปจนถึงจุดตัดด้านหน้า{}กด Ctrl+Click เพื่อ เปิด/ปิด หน้าต่างเลือกเสาสัญญาณ. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}สร้างสะพานรถไฟ. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}สร้างอุโมงค์รถไฟ. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}เปลี่ยนระหว่าง สร้าง/รื้อถอน รางรถไฟ, อาณัติสัญญาณ, จุดตรวจและสถานี. กด Ctrl ค้างไว้เพื่อทำการถอนรางรถไฟที่เป็นจุดหมายและสถานี STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}เปลี่ยน/อัพเกรด ชนิดของรางรถไฟ. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_RAIL_NAME_RAILROAD :รางรถไฟ STR_RAIL_NAME_ELRAIL :รางรถไฟฟ้า STR_RAIL_NAME_MONORAIL :รถไฟรางเดียว STR_RAIL_NAME_MAGLEV :รถไฟพลังแม่เหล็ก # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}ทิศทางของโรงซ่อมบำรุง STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของโรงซ่อมบำรุงรถไฟ # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}จุดตรวจ STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}เลือกชนิดของจุดตรวจ # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}ตัวเลือกของสถานีรถไฟ STR_STATION_BUILD_ORIENTATION :{BLACK}ทิศทาง STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของสถานีรถไฟ STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}จำนวนชานชาลา STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}เลือกจำนวนของชานชาลา STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}ความยาวของชานชาลา STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}เลือกความยาวของชานชาลา STR_STATION_BUILD_DRAG_DROP :{BLACK}ลากและวาง STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}สร้างสถานีโดยใช้การลากและวาง STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}เลือกชนิดของสถานีที่จะแสดง STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}เลือกชนิดของสถานีที่จะสร้าง STR_STATION_CLASS_DFLT :สถานีมาตรฐาน STR_STATION_CLASS_WAYP :จุดตรวจ # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}เลือกชนิดของเสาอาณัติสัญญาณ STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}เสาอาณัติสัญญาณปกติ (แบบหางปลา){}เสาอาณัติสัญญาณแบบนี้เป็นประเภทพื้นฐานที่สุด, อนุญาตให้มีรถไฟเพียงขบวนเดียวเท่านั้นที่อยู่ในบล็อกสัญญาณนี้ STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}เสาอาณัติสัญญาณขาเข้า (แบบหางปลา){}ให้สัญญาณผ่านตลอดหากเสาขาออกต้นข้างหน้ายังปล่อยผ่านตลอดอยู่ นอกเหนือจากนั้นจะเป็นสัญญาญห้ามผ่าน STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}เสาอาณัติสัญญาณขาออก (แบบหางปลา){}มีผลแบบเดียวกับเสาอาณัติสัญญาณปกติแต่จำเป็นที่จะต้องเปิดสีที่ถูกต้องตรงขาเข้าและสัญญาณต่อเนื่องที่อยู่ก่อนหน้านั้น STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}เสาอาณัติสัญญาณต่อเนื่อง (แบบหางปลา){}สัญญาณต่อเนื่องทำงานง่ายๆโดยทำหน้าที่เสมือนทั้งสัญญาณทางเข้าและทางออก. ซึ่งทำให้สามารถสร้างโครงข่ายขนาดใหญ่ของสัญญาณล่วงหน้าได้ STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}เสาอาณัติสัญญาณตอนอัตโนมัติ (แบบหางปลา){}เสาอาณัติสัญญาณตอนอัตโนมัติ อนุญาตให้รถไฟมากกว่าหนึ่งขบวนเข้าในบล็อกสัญญาณในเวลาเดียวกัน, ถ้ารถไฟสามารถรักษาเส้นทางไว้สำหรับจุดจอดที่ปลอดภัย. Patch Signal ธรรมดาสามารถผ่านจากด้านหลังได้ STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}เสาอาณัติสัญญาณตอนอัตโนมัติ แบบเดินรถทางเดียว (แบบหางปลา){}เสาอาณัติสัญญาณตอนอัตโนมัติ แบบเดินรถทางเดียวอนุญาตให้รถไฟมากกว่าหนึ่งขบวนเข้ามาในบล็อกสัญญาณ, ถ้ารถไฟสามารถรักษาจุดจอดที่ปลอดภัยไว้ได้.เสาอาณัติสัญญาณตอนอัตโนมัติ แบบทางเดียว ไม่สามารถเดินรถย้อนได้ STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}เสาอาณัติสัญญาณปกติ (แบบไฟสี){}เป็นสัญญาณประเภทที่พื้นฐานที่สุด, อนุญาตให้รถไฟแค่ขบวนเดียวอยู่ในบล็อกสัญญาณ ณ ขณะนั้น STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}เสาอาณัติสัญญาณขาเข้า (แบบไฟสี){}ให้สัญญาณผ่านตลอดตราบเท่าที่เสาขาออกต้นใดต้นหนึ่งเป็นสีเขียวจากเขตของรางตรงนั้น. นอกเหนือจากนั้นจะเป็นสีแดง STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}เสาอาณัติสัญญาณขาออก (แบบไฟสี){}มีผลแบบเดียวกับสัญญาณกั้นแต่จำเป็นที่จะต้องเปิดสีที่ถูกต้องตรงขาเข้าและสัญญาณต่อเนื่องที่อยู่ก่อนหน้านั้น STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}เสาอาณัติสัญญาณต่อเนื่อง (แบบไฟสี){}เสาสัญญาณที่มีผลเหมือนกันเสา เข้า และ เสาออก STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}เสาอาณัติสัญญาณตอนอัตโนมัติ (แบบไฟสี){}อนุญาตให้รถไฟหลายขบวนสามารถเข้าไปใน Block เดียวกันได้ โดยใช้ระบบ reserve track เพื่อป้องกันไม่ให้ขบวนรถชนกัน STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}เสาอาณัติสัญญาณตอนอัตโนมัติ แบบเดินรถทางเดียว (แบบไฟสี){}คือ Path Signal ประเภทเดินรถผ่านได้ทางเดียว STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}เปลี่ยนประเภทเสาอาณัติสัญญาณ{}เมื่อเลือกเมนูนี้ คลิ๊กเลือกที่เสาอาณัติสัญญาณที่ตั้งไว้อยู่แล้ว จะเป็นการเปลี่ยนเสาอาณัติสัญญาณเป็นแบบที่เลือกในกล่องเครื่องมือสร้าง STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}จำนวนของเสาอาณัติสัญญาณตั้งแต่ที่เริ่มลากเมาส์มา STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}ลดความหนาแน่นของเสาสัญญาณที่ลากมา STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}เพิ่มปริมาณของเสาสัญญาณที่ลากมา # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}เลือกสะพานรถไฟ STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}เลือกสะพานสำหรับรถยนต์ STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}เลือกสะพาน - คลิกสะพานที่ท่านชื่นชอบเพื่อก่อสร้าง STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :สะพานแขวนแบบคอนกรีต STR_BRIDGE_NAME_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กกล้า STR_BRIDGE_NAME_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้า STR_BRIDGE_NAME_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีต STR_BRIDGE_NAME_WOODEN :สะพานไม้ STR_BRIDGE_NAME_CONCRETE :สะพานคอนกรีต STR_BRIDGE_NAME_TUBULAR_STEEL :สะพานท่อแบบเหล็กกล้า STR_BRIDGE_TUBULAR_SILICON :สะพานท่อแบบซิลิคอน # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}สร้างถนน STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}การก่อสร้างรถราง STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}สร้างถนน. กด Ctrl เพื่อสร้าง/รื้อถอนถนน. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}สร้างทางส่วนของรถราง กด CTRL + คลิก เพื่อรื้อถอน กด Shift + คลิก เพื่อแสดงประมาณการค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}สร้างทางส่วนของถนนอัตโนมัติ กด CTRL + คลิก เพื่อรื้อถอน กด Shift + คลิก เพื่อแสดงประมาณการค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}สร้างทางส่วนของรถรางอัตโนมัติ กด CTRL + คลิก เพื่อรื้อถอน กด Shift + คลิก เพื่อแสดงประมาณการค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}สร้างโรงซ่อมบำรุงรถ (สำหรับซื้อและบำรุงรักษารถ). กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}สร้างโรงซ่อมบำรุงรถราง (สำหรับซื้อและบำรุงรักษารถราง). กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}สร้างสถานีรถ. กด Ctrl เพื่อใช้สถานีร่วมกับที่อื่น. กด Shift เพื่อแสดงมูลค่าการก่อสร้าง STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}สร้างสถานีรถราง. กด Ctrl เพื่อใช้สถานีร่วมกับที่อื่น. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}สร้างสถานีรถบรรทุกสินค้า STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}สร้างสถานีสินค้ารถราง. กด Ctrl เพื่อทำการรวมสถานี. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}เลือกใช้ / ยกเลิกการใช้ ถนนวันเวย์ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}สร้างสะพานสำหรับรถยนต์ กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้างและการแสดงมูลค่าโดยประมาณ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}สร้างสะพานสำหรับรถราง. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}สร้างอุโมงค์รถ. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}สร้างอุโมงค์รถราง. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}สลับโหมด สร้าง/ลบ ถนน STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}สลับโหมด สร้าง/ลบ รางสำหรับรถราง # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}ทิศทางของอู่รถ STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}เลือกทิศทางของอู่รถ STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}ทิศทางของโรงซ่อมบำรุงรถราง STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}เลือกทิศทา # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}ทิศทางของโรงซ่อมบำรุงรถ STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของอู่รถเมล์ STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}ทิศทางของท่าขนส่งสินค้า STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของท่าขนส่งสินค้า STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}ทิศทางของป้ายหยุดรถราง STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}เลือกทิษทางสำหรับผู้โดยสารรถราง STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}ทิศทางของสถานีรถรางขนส่งสินค้า STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของสถานีรถรางขนส่งสินค้า # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}การก่อสร้างทางน้ำ STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}คลอง STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}สร้างคลอง กด Shift + คลิก เพื่อประมาณการค่าใช้จ่าย STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}สร้างประตูกั้นน้ำ. แสดง building/showing ราคาประมาณการ STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}สร้างอู่เรือ (สำหรับซื้อขายและซ่อมบำรุงเรือ). กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}สร้างอู่เรือ. กด Ctrl เพื่อใช้สถานีร่วมกับที่อื่น. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}วางทุ่นเพื่อใช้เป็นเวย์พอยต์. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}สร้างสะพานน้ำ. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}สร้างพื้นน้ำ.{}สร้างคลอง หรือหากกด Ctrl ที่ระดับน้ำทะเลจะทำให้ระดับนั้นเป็นน้ำทั้งบริเวณ STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}ปักป้ายบนน้ำ # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}ทิศทางของอู่เรือ STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}เลือกทิศทางของอู่เรือ # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}ท่าเรือ # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}ท่าอากาศยาน STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}สร้างท่าอากาศยาน. กด Ctrl เพื่อใช้สถานีร่วมกับที่อื่น. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}การเลือกประเภทท่าอากาศยาน STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}เลือกขนาด/ชนิดของท่าอากาศยาน STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}ประเภทของท่าอากาศยาน STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}โครงสร้าง {NUM} STR_AIRPORT_SMALL :ลานบินขนาดเล็ก STR_AIRPORT_CITY :เมืองใหญ่ STR_AIRPORT_METRO :ระดับภาคท้องถิ่น STR_AIRPORT_INTERNATIONAL :นานาชาติ STR_AIRPORT_COMMUTER :สนามบินเทศบาล STR_AIRPORT_INTERCONTINENTAL :ระดับภูมิภาค STR_AIRPORT_HELIPORT :จุดจอดเฮลิคอปเตอร์ STR_AIRPORT_HELIDEPOT :โรงซ่อมเฮลิคอปเตอร์ STR_AIRPORT_HELISTATION :สถานีจอดเฮลิคอปเตอร์ STR_AIRPORT_CLASS_SMALL :ท่าอากาศยานขนาดเล็ก STR_AIRPORT_CLASS_LARGE :ท่าอากาศยานขนาดใหญ่ STR_AIRPORT_CLASS_HUB :ท่าอากาศยานนานาชาติ STR_AIRPORT_CLASS_HELIPORTS :ลานจอดเฮลิคอปเตอร์ STR_STATION_BUILD_NOISE :{BLACK}สร้างเสียงรบกวน: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}การปรับภูมิประเทศ STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}ลดระดับมุมของที่ดิน. ลากเพื่อลดระดับมุมที่เลือกและปรับระดับบริเวณที่เลือกใหม่. กด Ctrl เพื่อเลือกบริเวณเป็นแนวทแยง. กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้าง/แสดงการประเมินค่าใช้จ่าย STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}ถมส่วนมุมของที่ดินให้สูงขึ้น STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}ปรับระดับพื้นดินให้เท่ากับความสูงของพื้นที่เลือกเป็นมุมแรก กด Ctrl เพื่อวิเคราะห์พื้นที่ กด Shift เพื่อดูราคาประมาณการ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}ซื้อพื้นที่สำหรับใช้ในอนาคต. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}การเลือกวัตถุ STR_OBJECT_BUILD_TOOLTIP :{BLACK}เลือกวัตถุเพื่อสร้าง กด Shift เพื่อสลับระหว่างสิ่งปลูกสร้างและการแสดงมูลค่าโดยประมาณ STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}เลือกชนิดของวัตถุที่จะสร้าง STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}ตัวอย่างวัตถุ STR_OBJECT_BUILD_SIZE :{BLACK}ขนาด: {GOLD}{NUM} x {NUM} ช่อง STR_OBJECT_CLASS_LTHS :ประภาคาร STR_OBJECT_CLASS_TRNS :เครื่องส่งสัญญาณ # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}ต้นไม้ STR_PLANT_TREE_TOOLTIP :{BLACK}เลือกชนิดของต้นไม้ STR_TREES_RANDOM_TYPE :{BLACK}สุ่มชนิดของต้นไม้ STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}วางต้นไม้แบบสุ่มชนิด. กด Shift เพื่อแสดงการประเมินค่าใช้จ่าย STR_TREES_RANDOM_TREES_BUTTON :{BLACK}สุ่มต้นไม้ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}ปลูกต้นไม้โดยการสุ่มทั่วทุกบริเวณ # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}สร้างแผ่นดิน STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}วางพื้นที่แบบหินบนภูมิประเทศ STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}สร้างเขตทะเลทราบ{}กด CTRL เพื่อถอนทิ้ง STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}เพิ่มพื้นที่ในการปรับระดับแผ่นดิน STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}ลดพื้นที่ในการปรับระดับแผ่นดิน STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}สร้างแผ่นดินแบบสุ่ม STR_TERRAFORM_SE_NEW_WORLD :{BLACK}สร้างแผนที่ใหม่ STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}ยกเลิกภูมิทัศน์ทังหมด STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}ลบทรัพย์สินทั้งหมดที่เป็นของบริษัทออกจากแผนที่ STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}ยกเลิกภูมิทัศน์ทังหมด STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}คุณต้องการลบทรัพย์สินทั้งหมดของบริษัทออกหรือไม่? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}สร้างเมือง STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}เมืองใหม่ STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}ก่อสร้างเมืองใหม่ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณ STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}สุ่มเมือง STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}สร้างเมืองโดยการสุ่มที่ตั้ง STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}สุ่มหลายๆ เมือง STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}สุ่มสร้างเมืองครอบคลุมแผนที่ทั้งหมด STR_FOUND_TOWN_NAME_TITLE :{YELLOW}ชื่อเมือง: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}ใส่ชื่อเมือง STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}คลิกเพื่อใส่ชื่อเมือง STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}สุ่มชื่อ STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}สุ่มสร้างชื่อใหม่ STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}ขนาดเมือง: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}เล็ก STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}ปานกลาง STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}ใหญ่ STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}สุ่ม STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}เลือกขนาดเมือง STR_FOUND_TOWN_CITY :{BLACK}เมืองใหญ่ STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}เมืองใหญ่ขยายตัวเร็วกว่าเมืองเล็ก{}เลือกค่านี้ เมืองที่สร้างจะใหญ่ขึ้นเมื่อสร้างใหม่ STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}รูปแบบถนนของเมือง: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}เลือกรูปแบบถนนสำหรับเมืองนี้ STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}ดั้งเดิม STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}ถนนดีขึ้น STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}ตาราง 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}ตาราง 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}สุ่ม # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}ก่อตั้งอุตสาหกรรมใหม่ STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}เลือกอุตสาหกรรมที่เหมาะสมจากรายการนี้ STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :สุ่มหลากหลายอุตสาหกรรม STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}วางโรงงานอุตสาหกรรมแบบสุ่มทั่วแผนที่ STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}ราคา: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}สำรวจ STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}สร้าง STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}ก่อตั้ง # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}สายการผลิตสำหรับอุตสาหกรรม{STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}สายการผลิตสำหรับสินค้า {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}อุตสาหกรรมการผลิต STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}อุตสาหกรรมที่รองรับ STR_INDUSTRY_CARGOES_HOUSES :{WHITE}บ้านเรือน STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}คลิกที่อุตสาหกรรมเพื่อแสดงผู้ผลิตสินค้าและลูกค้า STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}คลิกที่สินค้าเพื่อแสดงผู้ผลิตสินค้าและลูกค้า STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}แสดงห่วงโซ่ STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}แสดงอุปทานและการรับเข้าของอุตสาหกรรม STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}เชื่อมโยงกับแผนที่ย่อ STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}เลือกเพื่อแสดงอุตสาหกรรมในแผนที่ย่อ STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}เลือกประเภทสินค้า STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}เลือกสินค้าที่ต้องการแสดง STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}เลือกอุตสาหกรรม STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}เลือกอุตสาหกรรมที่คุณต้องการแสดง # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}ข้อมูลพื้นที่ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}มูลค่าของการรื้อถอน: {LTBLUE}ไม่สามารถทำได้ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}มูลค่าของการรื้อถอน: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}รายได้จากการเคลียร์: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :ไม่มีผู้ครอบครอง STR_LAND_AREA_INFORMATION_OWNER :{BLACK}ผู้ครอบครอง: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}ผู้ครอบครองถนน: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ผู้ครอบครองทางรถราง: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}ผู้ครอบครองทางรถไฟ: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}ขึ้นตรงกับผู้ดูแลในท้องถิ่น: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ไม่มี STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}ตำแหน่ง: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}สร้างเมื่อ: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}ประเภทของสถานี: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}รูปแบบของสถานี: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}ระดับท่าอากาศยาน: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}ชื่อท่าอากาศยาน: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}ชื่อท่าอากาศยาน: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}สินค้าที่รับ: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}จำกัดความเร็วรถไฟ: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :หิน STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :พื้นที่หยาบ STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :พื้นที่เปล่า STR_LAI_CLEAR_DESCRIPTION_GRASS :หญ้า STR_LAI_CLEAR_DESCRIPTION_FIELDS :ทุ่งหญ้า STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :พื้นที่หิมะปกคลุม STR_LAI_CLEAR_DESCRIPTION_DESERT :ทะเลทราย STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} ราง STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING}ทางรถไฟกับ Block Signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING}ทางรถไฟกับ Pre-Signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING}ทางรถไฟกับ Exit-Signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING}ทางรถไฟกับ Combo-Signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING}ทางรถไฟกับ Path Signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING}ทางรถไฟกับ Path Signal แบบเดินทางเดียว STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING}ทางรถไฟกับ Block และ Pre-Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING}ทางรถไฟกับ Block และ Exit-Signal STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING}ทางรถไฟกับ Block และ Combo-Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING}ทางรถไฟกับ Block และ Path Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING}ทางรถไฟกับ Block และ Path Signals แบบเดินรถทางเดียว STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING}ทางรถไฟกับ Pre- และ Exit-Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING}ทางรถไฟกับ Pre- และ Combo-Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING}ทางรถไฟกับ Pre- และ Path Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING}ทางรถไฟและ Pre- และ Path Signals แบบเดินรถทางเดียว STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING}ทางรถไฟกับ Exit- และ Combo-Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING}ทางรถไฟกับ Exit- และ Path Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING}ทางรถไฟและ Exit- และ Path Signals แบบเดินรถทางเดียว STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING}ทางรถไฟและ Combo- และ Path Signals STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING}ทางรถไฟและ Combo- และ Path Signals แบบเดินรถทางเดียว STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING}ทางรถไฟกับ Path และ Path Signals แบบเดินรถทางเดียว STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} โรงซ่อมบำรุงรถไฟ STR_LAI_ROAD_DESCRIPTION_ROAD :ถนน STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :ถนนพร้อมไฟถนน STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :ถนนพร้อมต้นไม้ STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :โรงรถ STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :ทางตัดเสมอระดับ STR_LAI_ROAD_DESCRIPTION_TRAMWAY :ทางรถราง # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (กำลังก่อสร้าง) STR_LAI_TREE_NAME_TREES :ต้นไม้ STR_LAI_TREE_NAME_RAINFOREST :ป่าดิบชื้น STR_LAI_TREE_NAME_CACTUS_PLANTS :ตะบองเพชร STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :สถานีรถไฟ STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :โรงเก็บเครื่องบิน STR_LAI_STATION_DESCRIPTION_AIRPORT :ท่าอากาศยาน STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :จุดโหลดสำหรับรถบรรทุก STR_LAI_STATION_DESCRIPTION_BUS_STATION :สถานีขนส่ง STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :ท่าเรือ STR_LAI_STATION_DESCRIPTION_BUOY :ทุ่น STR_LAI_STATION_DESCRIPTION_WAYPOINT :จุดตรวจ STR_LAI_WATER_DESCRIPTION_WATER :น้ำ STR_LAI_WATER_DESCRIPTION_CANAL :คลอง STR_LAI_WATER_DESCRIPTION_LOCK :ล็อค STR_LAI_WATER_DESCRIPTION_RIVER :แม่น้ำ STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :ชายฝั่ง STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :อู่เรือ # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :อุโมงค์รถไฟ STR_LAI_TUNNEL_DESCRIPTION_ROAD :อุโมงค์รถยนต์ STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :สะพานแขวนแบบเหล็กสำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กสำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้าสำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีตเสริมเหล็กสำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :สะพานแบบไม้สำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :สะพานแบบคอนกรีตสำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :สะพานแบบท่อสำหรับรถไฟ STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :สะพานแขวนแบบเหล็กสำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :สะพานนั่งร้านแบบเหล็กสำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :สะพานคานแบบเหล็กกล้าสำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :สะพานแขวนแบบคอนกรีตเสริมเหล็กสำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :สะพานเแบบไม้สำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :สะพานแบบคอนกรีตสำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :สะพานแบบท่อสำหรับรถยนต์ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :ทางระบายน้ำ STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :เครื่องส่งสัญญาณ STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :ประภาคาร STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :สำนักงานใหญ่บริษัท STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษัทเจ้าของพื้นที่ # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}เกี่ยวกับ OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}ลิขสิทธิ์เดิม {COPYRIGHT} ค.ศ.1995 ของ Chris Sawyer, สงวนลิขสิทธิ์ STR_ABOUT_VERSION :{BLACK}OpenTTD รุ่นที่ {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2013 ของ The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม STR_SAVELOAD_LOAD_CAPTION :{WHITE}โหลดเกม STR_SAVELOAD_SAVE_SCENARIO :{WHITE}บันทึกแผนที่ STR_SAVELOAD_LOAD_SCENARIO :{WHITE}โหลดแผนที่ STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}โหลดแผนที่ระดับสูง STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}บันทึกแผนที่จำลองเสมือนจริง STR_SAVELOAD_HOME_BUTTON :{BLACK}กดที่นี่เพื่อเข้าสู่ตำแหน่งบันทึกเกม/โหลดเกมที่ใช้อยู่ STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} ฟรี STR_SAVELOAD_LIST_TOOLTIP :{BLACK}แสดงไดรฟ์, โฟลเดอร์, และไฟล์เซฟ STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}ชื่อที่กำลังถูกเลือกสำหรับเซฟเกม STR_SAVELOAD_DELETE_BUTTON :{BLACK}ลบ STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}ลบเซฟเกมสำหรับชื่อที่เลือก STR_SAVELOAD_SAVE_BUTTON :{BLACK}บันทึก STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}บันทึกเกมปัจจุบัน กรุณาเลือกชื่อที่ต้องการ STR_SAVELOAD_LOAD_BUTTON :{BLACK}โหลด STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}โหลดเกมที่เลือก STR_SAVELOAD_DETAIL_CAPTION :{BLACK}รายละเอียดเกม STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}ไม่พบข้อมูล STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}ป้อนชื่อเพื่อบันทึกเกม # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}สร้างโลก STR_MAPGEN_MAPSIZE :{BLACK}ขนาดแผนที่: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}เลือกขนาดของแผนที่(ตาราง) จำนวนของตารางที่สามารถมองเห็นจะมีจำนวนน้อยกว่าเล็กน้อย STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}จำนวนเมือง STR_MAPGEN_DATE :{BLACK}วันที่: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}จำนวนอุตสาหกรรม: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}เส้นความสูงเขตหิมะ: STR_MAPGEN_SNOW_LINE_UP :{BLACK}ปรับเปลี่ยนความสูงของหิมะขึ้นไป 1 ระดับ STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}ปรับเปลี่ยนความสูงของหิมะลงมา 1 ระดับ STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}คลิ๊กเมาส์เพื่อ random seed STR_MAPGEN_RANDOM :{BLACK}สุ่ม STR_MAPGEN_RANDOM_HELP :{BLACK}เปลี่ยนการ random seed สำหรับการสร้างพื้นดิน STR_MAPGEN_LAND_GENERATOR :{BLACK}เครื่องมือสร้างสภาพพื้นดิน: STR_MAPGEN_TREE_PLACER :{BLACK}Tอัลกอริธึมต้นไม้: STR_MAPGEN_TERRAIN_TYPE :{BLACK}ประเภทภูมิประเทศ: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}ระดับทะเล: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}แม่น้ำ: STR_MAPGEN_SMOOTHNESS :{BLACK}ความเรียบ: STR_MAPGEN_VARIETY :{BLACK}การกระจายความแตกต่าง: STR_MAPGEN_GENERATE :{WHITE}สร้างสภาพภูมิประเทศ # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}ขอบแผนที่: STR_MAPGEN_NORTHWEST :{BLACK}ตะวันตกเฉียงเหนือ STR_MAPGEN_NORTHEAST :{BLACK}ตะวันออกเฉียงเหนือ STR_MAPGEN_SOUTHEAST :{BLACK}ตะวันออกเฉียงใต้ STR_MAPGEN_SOUTHWEST :{BLACK}ตะวันตกเฉียงใต้ STR_MAPGEN_BORDER_FREEFORM :{BLACK}ไม่ยึดติดรูปแบบ STR_MAPGEN_BORDER_WATER :{BLACK}น้ำ STR_MAPGEN_BORDER_RANDOM :{BLACK}สุ่ม STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}สุ่ม STR_MAPGEN_BORDER_MANUAL :{BLACK}ปรับแต่งเอง STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}การหมุุนของแผนที่แบบ Heightmap: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}ชื่อของแผนที่ Heightmap: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}ขนาด: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}ป้อนค่า random seed STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}ปรับเปลี่ยนความสูงของระดับหิมะ STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}เปลี่ยนปีที่เริ่มต้นเกม # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}ประเภทของแผ่นที่เรื่องราว STR_SE_MAPGEN_FLAT_WORLD :{WHITE}ที่ราบ STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}สร้างที่ราบ STR_SE_MAPGEN_RANDOM_LAND :{WHITE}สุ่มพื้นดิน STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}ระดับความสูงของพื้นราบ: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}ปรับเปลี่ยนความสูงพื้นราบลงมา 1 ระดับ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}ปรับเปลี่ยนความสูงพื้นราบขึ้นไป 1 ระดับ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}เปลี่ยนความสูงของพื้นราบ # Map generation progress STR_GENERATION_WORLD :{WHITE}สร้างสภาพภูมิประเทศ... STR_GENERATION_ABORT :{BLACK}ยกเลิก STR_GENERATION_ABORT_CAPTION :{WHITE}ยกเลิกการสร้างภูมิประเทศ STR_GENERATION_ABORT_MESSAGE :{YELLOW}คุณแน่ใจหรือไม่ที่จะยกเลิกการสร้าง? STR_GENERATION_PROGRESS :{WHITE}{NUM}% เสร็จสิ้น STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}เครื่องมือสร้างแผนที่ STR_GENERATION_RIVER_GENERATION :{BLACK}สร้างแม่น้ำ STR_GENERATION_TREE_GENERATION :{BLACK}สร้างต้นไม่ STR_GENERATION_OBJECT_GENERATION :{BLACK}สร้างวัตถุ STR_GENERATION_CLEARING_TILES :{BLACK}สร้างพื้นหิน STR_GENERATION_SETTINGUP_GAME :{BLACK}ตั้งค่าให้กับเกม STR_GENERATION_PREPARING_TILELOOP :{BLACK}Running tile-loop STR_GENERATION_PREPARING_SCRIPT :{BLACK}Running script STR_GENERATION_PREPARING_GAME :{BLACK}กำลังเตรียมพร้อมสำหรับเกม # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}กำหนดค่า NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}รายบะเอียดเกี่ยวกับข้อมูลของ NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}ใช้งาน NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}ไม่ใช้งาน NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}เลือกกลุ่มของการตั้งค่า: STR_NEWGRF_FILTER_TITLE :{ORANGE}กรองจากชื่อ: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}โหลดข้อมูลกลุ่มที่ตั้งค่าไว้ STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}บันทึกกลุ่มที่ตั้งค่า STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}บันทึกรายการปัจจุบันเป็นกลุ่มการตั้งค่า STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}ใส่ค่าของกลุ่ม STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}ลบกลุ่ม STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}ลบกลุ่มที่เลือกไว้ปัจจุบัน STR_NEWGRF_SETTINGS_ADD :{BLACK}เพิ่ม STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}เพิ่ม NewGRF ที่เลือกไว้เข้าสู่การตั้งค่าของคุณ STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}สแกนไฟล์ใหม่อีกครั้ง STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}อัพเดตรายการของ NewGRF ที่มีอยู่ STR_NEWGRF_SETTINGS_REMOVE :{BLACK}ลบทิ้ง STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}ลบ NewGRF ที่เลือกไว้ในรายการ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}ย้ายคำแหน่งขึ้น STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}เลื่อน NewGRF ที่เลือกไว้ขึ้นไปในรายการ STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}ย้ายตำแหน่งลง STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}เลื่อน NewGRF ที่เลือกไว้ลงไปในรายการ STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}รายการของ NewGRF ที่มีการติดตั้งในปัจจุบัน STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}ตั้งค่า parameters STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}แสดง parameters STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}สลับ palette STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}สลับ palette ของ NewGRF ที่เลือก{} ปรับเปลี่ยนหาก NewGRF แสดงผลเป็นสีชมพูในเกม STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}ยืนยันการเปลี่ยนแปลง STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}ค้นหาข้อมูลที่สูญหาย STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}ตรวจสอบเมื่อมีข้อมูลบางส่วนสูญหายผ่าน internet STR_NEWGRF_SETTINGS_FILENAME :{BLACK}ชื่อไฟล์: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Version: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}เวอร์ชันต่ำสุดที่รองรับ: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palette: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameters: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}ไม่มีข้อมูลรายละเอียดที่จะแสดง STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}หาไฟล์ที่เข้ากันได้ไม่พบ STR_NEWGRF_SETTINGS_DISABLED :{RED}ไม่ใช้งาน STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}ไม่รองรับกับ OpenTTD เวอร์ชั่นนี้ # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}เปลี่ยนแปลง NewGRF parameters STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}ปิด STR_NEWGRF_PARAMETERS_RESET :{BLACK}ตั้งค่าใหม่ STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}ตั้งค่าพารามิเตอร์ทุกตัวให้เป็นแบบค่าดั้งเดิม STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}จำนวนพารามิเตอร์: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspect - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parent STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}ตรวจสอบชิ้นส่วนของ parent scope STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ที่ตำแหน่ง {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :วัตถุ STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :ประเภทของทางรถไฟ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF ตัวแปร 60+x parameter (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aligning sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}sprite ถัดไป STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปกติอันถัดไป โดยข้าม pseudo/recolour/font และวกกลับเมื่อถึงจุดสิ้นสุด STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ไปยัง sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}ไปยัง sprite ที่เลือก ถ้าไม่ใช่ sprite ปกติ จะทำการข้ามไปยัง sprite ถัดไป STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}sprite ก่อนหน้า STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปกติอันก่อนหน้า โดยข้าม pseudo/recolour/font และวกกลับเมื่อถึงจุดเริ่มต้น STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}แสดง sprite ที่เลือกใหม่อีกครั้ง STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}ย้าย sprite wxiv[q, แก้ไขแกน X และ Y สำหรับความคลาดเคลื่อน STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X คลาดเคลื่อน: {NUM}, Y คลาดเคลื่อน: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}หยิบ sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}หยิบ sprite จากที่ใดก็ตามในหน้าจอ STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}ไปยัง sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}อันตราย: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}ร้ายแรง: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}เกิดความผิดพลาดร้ายแรงเกี่ยวกับ NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING}ไม่สามารถทำงานได้บน TTDPatchเวอร์ชั่นนี่ รายงานโดย OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} สำหรับ {STRING} version of TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ออกแบบมาสำหรับใช้งานกับ {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :parameter ไม่ถูกต้องสำหรับ {1:STRING}: parameter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} ต้องโหลดก่อน {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} ต้องโหลดหลัง {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} ต้องการ OpenTTD version {STRING} หรือสูงกว่า STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF ไฟล์ถูกออกแบบมาเพื่อการแปล STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :มีการเปิดใช้งาน NewGRFs มากเกินไป STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :กำลังทำการโหลด {1:STRING} สำหรับเป็น NewGRF โดย {STRING} could cause desyncs STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :ไม่สามารถคาดการณ์ sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unknown Action 0 property {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Attempt to use invalid ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} บรรจุ sprites ที่สูญหาย. สิ่งที่สูญหายจะแสดงเป็นเครื่องหมายตกใจสีแดง (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}กราฟิกพื้นฐานที่ใช้อยู่มี Sprite ไม่สมบูรณ์{}กรุณาปรับรุ่นของ Base Graphic STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}ไฟล์ในกราฟฟิคพื้นฐานหายไปบางส่วน{}กรุณาอัพเดตกราฟฟิคพื้นฐาน.{}ตั้งแต่คุณเริ่มเล่น {YELLOW}ภาพของ OpenTTD{WHITE},คุณอาจต้องการ {YELLOW}ภาพของกราฟฟิคพื้นฐาน{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :ต้นแบบ GRF ที่ต้องการสามารถใช้การได้(sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ถูกยกเลิกโดย {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :ไม่ถูกต้อง/ไม่ทราบ รูปแบบ sprite (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}คำเตือน! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}คุณต้องการที่จะปรับเปลี่ยนในเกมที่กำลังทำงานอยู่. การกระทำนี้สามารถทำให้เกมเสียหาย หรือหยุดการทำงานของเกม หากพบปัญหา ไม่ต้องทำการแจ้งบั๊กเข้ามาเกี่ยวกับประเด็นนี้ {} คุณยังต้องการดำเนินการต่อหรือไม่? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}ไม่สามารถเพิ่มเข้าไปได้: GRF ID ซ้ำกัน STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}หาไฟล์ที่เข้ากันได้ไม่ครบ (compatible GRF loaded) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}ไม่สามารถเพิ่ม NewGRF เนื่องจากมี NewGRF มากเกินไป STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) ที่ทำงานร่วมกันได้ ถูกโหลดมาสำหรับไฟล์ที่สูญหาย STR_NEWGRF_DISABLED_WARNING :{WHITE}GRF file(s)ที่สูญหาย ถูกปิดการใช้งาน STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW} GRF file(s) สูญหาย STR_NEWGRF_UNPAUSE_WARNING :{WHITE}การยกเลิกการหยุดเกมอาจจะทำให้เกมเสีย. ไม่ต้องทำการแจ้งปัญหานี้มา.{}คุณยังต้องการกระทำการต่อหรือไม่? # NewGRF status STR_NEWGRF_LIST_NONE :ไม่มี STR_NEWGRF_LIST_ALL_FOUND :แสดงครบทุกไฟล์ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}ค้นพบ compatible files STR_NEWGRF_LIST_MISSING :{RED}ไฟล์สูญหาย # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}พฤติกรรม NewGRF '{0:STRING}' มีลักษะเหมือนจะมีปัญหา STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}เปลี่ยนความยาวของยานพาหนะ '{1:ENGINE}' เมื่อไม่อยู่ภายในโรงซ่อม STR_BROKEN_VEHICLE_LENGTH :{WHITE} รถไฟ '{VEHICLE}' ที่เป็นของ '{COMPANY}' มีความยาวไม่ถูกต้องซึ่งอาจทำให้เกิดปัญหากับ NewGRF และอาจะทำให้เกิดปัญหากับเกมได้ STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' ให้รายละเอียดไม่ถูกต้อง. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}ข้อมูลของ สินค้า/ดัดแปลง '{1:ENGINE}' จะแตกต่างจากรายการซื้อหลังจากมีการซื้อ. นี่จะส่งผลให้การแทนที่ล้มเหลว STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' caused an endless loop in the production callback STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returned unknown/invalid result {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<สินค้่าไม่ถูกต้อง> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} ของ STR_NEWGRF_INVALID_ENGINE :<ตัวยานพาหนะไม่ถูกต้อง> STR_NEWGRF_INVALID_INDUSTRYTYPE :<อุตสาหกรรมไม่ถูกต้อง> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}ตรวจสอบ NewGRFs STR_NEWGRF_SCAN_MESSAGE :{BLACK}ตรวจสอบ NewGRFs. ขึ้นอยู่กับจำนวนที่มี อาจใช้เวลาสักครู่... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF ค้นหาเสร็จสิ้น อยู่นอกเหนือการประเมิน {NUM} NewGRF STR_NEWGRF_SCAN_ARCHIVES :ตรวจหาแฟ้มข้อมูล # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}รายชื่อป้าย - {COMMA} ป้าย STR_SIGN_LIST_MATCH_CASE :{BLACK}ตรงกัน STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}แสดงข้อมูลที่ตรงกันเมื่อเปรียบเทียบกับชื่อที่กรองไว้ # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}แก้ไขข้อความของป้าย STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}ไปยังป้ายถัดไป STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}ไปยังป้ายก่อนหน้า STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}กรอกชื่อสำหรับป้าย # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}เมือง STR_TOWN_DIRECTORY_NONE :{ORANGE}- ไม่มี - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}ชื่อเมือง - คลิ๊กเมาส์ที่ชื่อเมือง STR_TOWN_POPULATION :{BLACK}ประชากรโดยรวมทั้งแผนที่: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}นคร {TOWN} STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}จำนวนประชากร: {ORANGE}{COMMA}{BLACK} จำนวนอาคาร: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}ผู้โดยสารเมื่อเดือนที่แล้ว: {ORANGE}{COMMA}{BLACK} จำนวนสูงสุด: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}ไปรษณีย์ภัณฑ์เมื่อเดือนที่แล้ว: {ORANGE}{COMMA}{BLACK} จำนวนสูงสุด: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}ความต้องการสินค้าสำหรับการขยายตัวของเมือง: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} required STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ต้องการหิมะ STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} จัดส่งมา STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (still required) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (delivered) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}เมืองขยายตัวทุกๆ {ORANGE}{COMMA}{BLACK} วัน STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}เมืองเติบโตทุกๆ {ORANGE}{COMMA}{BLACK} วัน (funded) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}เมือง {RED}ไม่{BLACK} ขยายตัว STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}มีมลภาวะทางเสียง: {ORANGE}{COMMA}{BLACK} สูงสุดที่มีได้: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}กดเมื่อไปยังมุมมองใจกลางเมือง STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}เจ้าหน้าที่ท้องถิ่น STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}ดูข้อมูลเกี่ยวกับเจ้าหน้าที่ในท้องถิ่น STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อเมือง STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}ขยาย STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}ขยายขนาดของเมือง STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}ลบ STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}ลบเมืองเรียบร้อยแล้ว STR_TOWN_VIEW_RENAME_TOWN_BUTTON :เปลี่ยนชื่อเมือง # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}เจ้าหน้าที่ท้องถิ่นของ {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}ความพึงพอใจต่อบริษัท: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}การกระทำที่สามารถทำได้: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}รายการสิ่งที่สามารถทำได้กับเมืองนี้ - กดเพื่อดูรายละเอียดเพิ่มเติม STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}ดำเนินการ STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}กระทำตามที่เลือกไว้ในรายการด้านบน STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :โฆษณาโดยใช้สื่อสิ่งพิมพ์ STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :โฆษณาโดยใช้สื่อกระจายเสียง STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :โฆษณาโดยใช้สื่อโทรทัศน์และอินเตอร์เนต STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :ให้เงินสนับสนุนแก่เมืองเพื่อปรับปรุงถนนใหม่ STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :จ่ายเงินเพื่อสร้างอนุเสาวรีย์ของบริษัท STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :บริจาคเงินให้แก่เมืองเพื่อสร้างสิ่งก่อสร้างใหม่ๆ STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :ลงนามซื้อสัมปทานขนส่ง STR_LOCAL_AUTHORITY_ACTION_BRIBE :ติดสินบนกับเจ้าหน้าที่ท้องถิ่น STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}การโฆษณาระดับเริ่มต้น โดยใช่สื่อสิ่งพิมพ์ ใบปลิวและหนังสือพิมพ์ท้องถิ่น เพิ่มปริมาณผู้โดยสารและสินค้าของเมืองเล็กน้อย{}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}การโฆษณาระดับปานกลาง โดยใช่สื่อวิทยุกระจายเสียง โดยสถานีวิทยุท้องถิ่น เพิ่มปริมาณผู้โดยสารและสินค้าของเมืองปานกลาง.{}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}การโฆษณาในวงกว้าง โดยใช้สื่อโทรทัศน์ และอินเตอร์เนต ทำให้เข้าถึงประชาชนได้มากกว่า เพิ่มปริมาณผู้โดยสารและสินค้าของเมืองปริมาณสูง.{}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}ให้เงินกับเมืองเพื่อทำถนนใหม่,การจราจรจะเป็นอัมพาทเป็นเวลา 6 เดือน. ส่งผลทำให้การจราจรในเมืองเป็นอัมพาธ{}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}สร้างอนุเสาวรีย์แห่งความภาคภูมิใจของบริษัท.{}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}ให้เงินเพื่อสร้างสิ่งปลูกสร้างทางธุรกิจแห่งใหม่ของเมือง.{}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}ซื้อสัมปทานเป็นเวลา 1 ปีสำหรับเมืองเมืองหนึ่ง ผู้โดยสารและสินค้าจะใช้บริการเฉพาะของบริษัทเราเพียงอย่างเดียว {}ใช้งบประมาณ: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}จ่ายเงินใต้โต๊ะติดสินบนให้เจ้าหน้าที่ในท้องถิ่น เพื่อเพิ่มความพึงพอใจ ทำให้สามารถสร้างสิ่งก่อสร้าง รื้อถอนสิ่งก่อสร้างของเมืองได้โดยไม่ติดขัด.{}ใช้งบประมาณ: {CURRENCY_LONG} # Goal window STR_GOALS_GLOBAL_TITLE :{BLACK}เป้าหมายโดยรวม: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- ไม่มี - STR_GOALS_COMPANY_TITLE :{BLACK}เป้าหมายบริษัท: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}คลิ๊กเลือกที่เป้าหมายเพื่อพาไปยังจุดเริ่มต้นที่จะทำตามเป้าหมาย # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :คำถาม STR_GOAL_QUESTION_CAPTION_INFORMATION :ข้อมูล STR_GOAL_QUESTION_CAPTION_WARNING :คำเตือน STR_GOAL_QUESTION_CAPTION_ERROR :ข้อผิดพลาด ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :ยกเลิก STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :ไม่ STR_GOAL_QUESTION_BUTTON_YES :ใช่ STR_GOAL_QUESTION_BUTTON_DECLINE :ไม่ต้องการ STR_GOAL_QUESTION_BUTTON_ACCEPT :ต้องการ STR_GOAL_QUESTION_BUTTON_IGNORE :ไม่สนใจ STR_GOAL_QUESTION_BUTTON_RETRY :ลองใหม่ STR_GOAL_QUESTION_BUTTON_PREVIOUS :ก่อนหน้านี้ STR_GOAL_QUESTION_BUTTON_NEXT :ถัดไป STR_GOAL_QUESTION_BUTTON_STOP :หยุด STR_GOAL_QUESTION_BUTTON_START :เริ่ม STR_GOAL_QUESTION_BUTTON_GO :ไป STR_GOAL_QUESTION_BUTTON_CONTINUE :ทำต่อ STR_GOAL_QUESTION_BUTTON_RESTART :เริ่มใหม่ STR_GOAL_QUESTION_BUTTON_POSTPONE :เลื่อนออกไป STR_GOAL_QUESTION_BUTTON_SURRENDER :ยอมจำนน STR_GOAL_QUESTION_BUTTON_CLOSE :ปิด # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}เงินอุดหนุน STR_SUBSIDIES_OFFERED_TITLE :{BLACK}โครงการที่จะได้รับเงินทุนสนับสนุน: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} จาก {STRING} ถึง {STRING}{YELLOW} (ก่อน {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- ไม่มี - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}โครงการที่ได้เงินสนับสนุนเรียบร้อยแล้ว: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} จาก {STRING} ถึง {STRING}{YELLOW} ({COMPANY}{YELLOW}, จนกว่าจะถึง {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}กดที่บริการเพื่อไปยังจุดกึ่งกลางของจุดเริ่มต้น # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}ชื่อสถานี - กดที่ชื่อเพื่อไปยังจุดกึ่งกลาง STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}กด Crtl เพื่อเลือกมากกว่า 1 รายการ STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} สถานี STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- ไม่มี - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}เลือกทั้งหมด STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}เลือกประเภทสินค้าทั้งหมด (รวมถึงสินค้าที่ไม่ได้รอการส่ง) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}ไม่มีสินค้ารออยู่เลย # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}กำลังรอ: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} จาก {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}ปิดหน้าต่างความนิยม STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}ปิดหน้าต่างความนิยมลงและแสดงเฉพาะรายการสินค้าที่สถานีรองรับและรอการขนส่ง STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}กำลังต้องการ: {WHITE}{CARGO_LIST} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}สถานนีนี้มีสัมปทานขนส่งจากเมืองนี้ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ซื้อสัมปทานขนส่งที่เมืองนี้ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}ความพึงพอใจ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}แสดงความพึงพอใจของสถานี ############ range for rating starts STR_CARGO_RATING_APPALLING :แย่ที่สุด STR_CARGO_RATING_VERY_POOR :แย่มาก STR_CARGO_RATING_POOR :แย่ STR_CARGO_RATING_MEDIOCRE :ปานกลาง STR_CARGO_RATING_GOOD :ดี STR_CARGO_RATING_VERY_GOOD :ดีมาก STR_CARGO_RATING_EXCELLENT :ยอดเยี่ยม STR_CARGO_RATING_OUTSTANDING :เกินความคาดหมาย ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}จุดศูนย์กลางมุมมองสถานี STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อสถานี STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}แสดงขบวนรถไฟที่มีรายการเข้าจอดที่สถานีนี้ STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :แสดงยานพาหนะทางบกที่มีรายการเข้าจอดที่สถานีนี้ STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :แสดงอากาศยานที่มีรายการลงจอดจอดที่สถานีนี้ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :แสดงเรือที่มีรายการเข้าเทียบท่าที่ท่านี้ STR_STATION_VIEW_RENAME_STATION_CAPTION :เปลี่ยนชื่อสถานี/พื้นที่รับส่งสินค้า STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}ปิดท่าอากาศยาน STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}ไม่ให้เที่ยวบินมาลงจอดที่ท่าอากาศยานนี้ # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}จุดศูนย์กลางมุมมองสถานี STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}เปลี่ยนชื่อ Waypoint STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}จุดศูนย์กลางมุมมองสถานี STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}เปลี่ยนชื่อทุ่มลอยน้ำ STR_EDIT_WAYPOINT_NAME :{WHITE}เปลี่ยนชื่อ Waypoint # Finances window STR_FINANCES_CAPTION :{WHITE} สภาวะการเงินของ {COMPANY}{BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}รายจ่าย/รายรับ STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}ค่าก่อสร้างต่างๆ STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}ค่ายานพาหนะใหม่ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}ค่าปฏิบัติการต่างๆเกี่ยวกับการเดินรถไฟ STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}ค่าปฏิบัติการต่างๆเกี่ยวกับรถยนต์ STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}ค่าปฏิบัติการต่างๆเกี่ยวกับอากาศยาน STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}ค่าปฏิบัติการต่างๆเกี่ยวกับเรือ STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}ค่าบำรุงรักษาอสังหาริมทรัพย์ STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}รายได้จากการให้บริการเดินรถไฟ STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}รายได้จากการให้บริการขนส่งทางรถยนต์ STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}รายได้จากการให้บริการขนส่งทางอากาศ STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}รายได้จากการให้บริการขนส่งทางน้ำ STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}ดอกเบี้ยเงินกู้ STR_FINANCES_SECTION_OTHER :{GOLD}อื่นๆ STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}รวมทั้งสิ้น: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}ยอดเงินในธนาคาร STR_FINANCES_LOAN_TITLE :{WHITE}เงินกู้ STR_FINANCES_MAX_LOAN :{WHITE}สามารถกู้เงินได้สูงสุด: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}กู้ยืม {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}เพิ่มปริมาณเงินกู้ STR_FINANCES_REPAY_BUTTON :{BLACK}ใช้คืน {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}ใช้คืนเงินกู้ที่กู้มา STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}โครงสร้างพื้นฐาน # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(ประธานบริษัท) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}ก่อตั้งอย่างเป็นทางการเมื่อ: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}สีของบริษัท: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}ยานพาหนะ: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} รถไฟ STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} พาหนะทางบก STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} อากาศยาน STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} พาหนะทางน้ำ STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}ไม่มี STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}ทรัพสินสุทธิ: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}(หุ้น {COMMA}% เป็นของ {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}โครงสร้างพื้นฐาน: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} ทางรถไฟ STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} ถนน STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} คลอง STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} สถานี STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} ท่าอากาศยาน STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}ไม่มี STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}สร้างที่ทำการบริษัท STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}สร้างอาคารที่ทำการบริษัท STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}ไปยังที่ทำการบริษัท STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}เคลื่อนย้ายไปยังที่ทำการบริษัท STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}ย้ายที่ตั้งที่ทำการบริษัท STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}ย้ายที่ตั้งที่ทำการบริษัท STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}รายละเอียด STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}ดูรายละเอียดเกี่ยวกับโครงสร้างพื้นฐาน STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}เลือกใบหน้าใหม่ STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}เลือกใบหน้าใหม่ของผู้ประธานบริษัท STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}เลือกสี STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}เปลี่ยนสีของยานพาหนะบริษัท STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}ชื่อบริษัท STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}เปลี่ยนชื่อบริษัท STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}ชื่อประธานบริษัท STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}เปลี่ยนชื่อประธานบริษัท STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}ซื้อหุ้น 25% STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}ขายหุ้น 25% STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}ซื้อหุ้น 25% จากบริษัทนี้ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}ขายหุ้น 25% คืนให้บริษัทนี้ STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :ชื่อบริษัท STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :ชื่อประธานบริษัท STR_BUY_COMPANY_MESSAGE :{WHITE}เรากำลังมองหาบริษัทขนส่งอื่นๆที่จะเข้ามากู้วิกฤตบริษัทเรา และซื้อกิจการเราไป.{}{}คุณต้องการจะซื้อกิจการของเราหรือไม่ ? {COMPANY} for {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}โครงสร้างพื้นฐานของ {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}ชิ้นส่วนทางรถไฟ: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}เสาอาณัติสัญญาณ STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}ชิ้นส่วนถนน: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}ถนน STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}ทางรถราง STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}คลอง: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}คลอง STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}สถานี: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}ชิ้นส่วนสถานี STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}ท่าอากาศยาน STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/ปี ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ปี # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}อุตสาหกรรม STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- ไม่มี - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% ได้รับการขนส่ง) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% ได้รับการขนส่ง) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}ชื่อของอุตสาหกรรม - คลิ๊กที่ชื่อเพื่อไปยังจุดศูนย์กลาง # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}ผลผลิตในเดือนที่แล้ว: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% ได้รับการขนส่ง) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}กดเมื่อไปยังมุมมองจุดศูนย์กลางของอุตสาหกรรม STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}ระดับการผลิต: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}มีความต้องการ: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}พัสดุและสิ่งของที่รอการผลิต: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ผลผลิต: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ผลผลิต: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}ปรับเปลี่ยนปริมาณผลผลิต (ระหว่าง 8 ถึง 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}เปลี่ยนระดับการผลิต (เปอร์เซ็นต์เพิ่มมากสุดถึง 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} รถไฟ STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} พาหนะทางบก STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} พาหนะทางน้ำ STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} อากาศยาน STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}ขบวนรถไฟ - คลิ๊กเพื่อดูรายละเอียด STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}ยานพาหนะทางบก - คลิ๊กเพื่อดูรายละเอียด STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}ยานพาหนะทางน้ำ - คลิ๊กเพื่อดูรายละเอียด STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}อากาศยาน - คลิ๊กเพื่อดูรายละเอียด STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}กำไรของปีนี้: {CURRENCY_LONG} (ปีที่ผ่านมา: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :รถไฟที่สามารถซื้อได้ STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :ยานพาหนะทางบกที่สามารถซื้อได้ STR_VEHICLE_LIST_AVAILABLE_SHIPS :ยานพาหานะทางน้ำที่สามารถซื้อได้ STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :อากาศยานที่สามารถซื้อได้ STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}กดเพื่อดูรายการสิ่งที่สามารถซื้อได้สำหรับแต่ละประเภทยานพาหนะ STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}จัดการรายการ STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}ส่งการดำเนินการไปยังพาหนะทั้งหมดในรายการนี้ STR_VEHICLE_LIST_REPLACE_VEHICLES :แทนที่ยานพาหนะเดิม STR_VEHICLE_LIST_SEND_FOR_SERVICING :ส่งไปอู่เพื่อซ่อมบำรุง STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :ส่งไปจอดในโรงซ่อมบำรุง STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :ส่งเข้าโรงซ่อมบำรุงรถ STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :ส่งเข้าอู่ต่อเรือ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :ส่งเข้าโรงเก็บเครื่องบิน STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}กดเพื่อหยุดยานพาหนะทั้งหมดในรายการ STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}กดเพื่อเริมต้นให้ยานพาหนะทั้งหมดในรายการทำงานตามปกติ STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}ยานพาหนะที่ใช้งานคำสั่งร่วมกัน{COMMA} # Group window STR_GROUP_ALL_TRAINS :รถไฟทั้งหมด STR_GROUP_ALL_ROAD_VEHICLES :ยานพาหนะทางบกทั้งหมด STR_GROUP_ALL_SHIPS :ยานพาหนะทางน้ำทั้งหมด STR_GROUP_ALL_AIRCRAFTS :อากาศยานทั้งหมด STR_GROUP_DEFAULT_TRAINS :พาหนะที่ไม่ได้จัดกลุ่ม STR_GROUP_DEFAULT_ROAD_VEHICLES :พาหนะที่ไม่ได้จัดกลุ่ม STR_GROUP_DEFAULT_SHIPS :พาหนะที่ไม่ได้จัดกลุ่ม STR_GROUP_DEFAULT_AIRCRAFTS :พาหนะที่ไม่ได้จัดกลุ่ม STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}กลุ่ม - คลิ๊กที่กลุ่มเพื่อดูรายการยานพาหนะในกลุ่ม STR_GROUP_CREATE_TOOLTIP :{BLACK}กดเพื่อสร้างกลุ่ม STR_GROUP_DELETE_TOOLTIP :{BLACK}ลบกลุ่มที่เลือก STR_GROUP_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อกลุ่มที่เลือก STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}กดเพื่อป้องกันกลุ่มนี้จากการใช้งาน แทนที่ใหม่อัตโนมัติ STR_GROUP_ADD_SHARED_VEHICLE :เพิ่มยานพาหนะที่ใช้รายการคำสั่งเดียวกัน STR_GROUP_REMOVE_ALL_VEHICLES :ลบยานพาหนะทั้งหมด STR_GROUP_RENAME_CAPTION :{BLACK}เปลี่ยนชื่อกลุ่ม # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :รถไฟใหม่ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :รถไฟฟ้าใหม่ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :รถไฟฟ้ารางเดี่ยวใหม่ STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Maglev (รถไฟพลังแม่เหล็ก) ใหม่ STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :ประเถทไฟที่สามารถซื้อได้ STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :ประเถทรถที่สามารถซื้อได้ STR_BUY_VEHICLE_SHIP_CAPTION :ประเถทเรือที่สามารถซื้อได้ STR_BUY_VEHICLE_AIRCRAFT_CAPTION :ประเถทอากาศยานที่สามารถซื้อได้ STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}มูลค่า: {GOLD}{CURRENCY_LONG}{BLACK} น้ำหนัก: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}ความเร็ว: {GOLD}{VELOCITY}{BLACK} พลังขับเคลื่อน: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}ความเร็ว: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}ความเร็วบนทะเล: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}ความเร็วบนคลอง/แม่น้ำ: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}ค่าปฏิบัติการ: {GOLD}{CURRENCY_LONG}/ปี STR_PURCHASE_INFO_CAPACITY :{BLACK}ความจุ: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(ดัดแปลงได้) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}สร้างครั้งแรก: {GOLD}{NUM}{BLACK} อายุการใช้งาน: {GOLD}{COMMA} ปี STR_PURCHASE_INFO_RELIABILITY :{BLACK}ประสิทธิภาพสูงสุด: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}มูลค่า: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}น้ำหนัก: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}มูลค่า: {GOLD}{CURRENCY_LONG}{BLACK} ความเร็ว: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}ความจุ: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}รถเสริมกำลัง: {GOLD}+{POWER}{BLACK} น้ำหนัก: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}ดัดแปลงเป็น: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :สินค้าทุกประเภท STR_PURCHASE_INFO_ALL_BUT :ทั้งหมด ยกเว้น {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}กำลังลากจูงสูงสุด: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}พิสัยทำการ: {GOLD}{COMMA} ช่อง STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}รายการรถไฟ - คลิกที่รถไฟเพื่อดูรายละเอียด STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}รายการรถ - คลิกที่รถเพื่อดูรายละเอียด STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}รายการเรือ - คลิกที่เรือเพื่อดูรายละเอียด STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}รายการเครื่องบิน - คลิกที่เครื่องบินเพื่อดูรายละเอียด STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}ซื้อเรือรถ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}ซื้อรถ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}ซื้อเรือ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}ซื้อเครื่องบิน STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}ซื้อรถไฟที่เลือกไว้ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณโดยไม่ทำการซื้อ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}ซื้อรถที่เลือกไว้ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณโดยไม่ทำการซื้อ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}ซื้อเรือที่เลือกไว้ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณโดยไม่ทำการซื้อ STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}ซื้อเครื่องบินที่เลือกไว้ เมื่อกด Shift+คลิกเมาส์ จะแสดงมูลค่าโดยประมาณโดยไม่ทำการซื้อ STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}เปลี่ยนชื่อ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}เปลี่ยนชื่อ STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}เปลี่ยนชื่อ STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}เปลี่ยนชื่อ STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อชนิดของรถไฟ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อชนิดของรถ STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อชนิดของเรือ STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อชนิดของเครื่องบิน STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของรถไฟ STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของรถ STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของเรือ STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}เปลี่ยนชื่อชนิดของเครื่องบิน # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}เปลี่ยนชื่อของโรงซ่อมบำรุง STR_DEPOT_RENAME_DEPOT_CAPTION :เปลี่ยนชื่อโรงซ่อมบำรุง STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} ยานพาหนะ{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}รถไฟ - ลากพาหนะด้วยคลิกซ้ายสำหรับ เพิ่ม/ลด จากขบวนรถไฟ, คลิกขวาสำหรับข้อมูล, กด Ctrl ค้างไว้เพื่อกำหนดให้กับขบวนต่อไป STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}รถ - คลิกขวาที่รถเพื่อดูรายละเอียด STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}เรือ - คลิกขวาที่เรือเพื่อดูรายละเอียด STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}เครื่องบิน - คลิกขวาที่เครื่องบินเพื่อดูรายละเอียด STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}คลิกค้างที่ตู้รถไฟแล้วลากมาวางที่นี่เพื่อขาย STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}คลิกค้างที่รถแล้วลากมาวางที่นี่เพื่อขาย STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}คลิกค้างที่เรือแล้วลากมาวางที่นี่เพื่อขาย STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}คลิกค้างที่เครื่องบินแล้วลากมาวางที่นี่เพื่อขาย STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}คลิกค้างที่หัวรถจักรแล้วลากมาวางที่นี่เพื่อขายรถไฟทั้งขบวน STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}ขายรถไฟทั้งหมดที่อยู่ในโรงนี้ STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}ขายพาหนะทางบกทั้งหมดในโรงซ่อมบำรุง STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}ขายพาหนะทางน้ำทั้งหมดในโรงซ่อมบำรุง STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}ขายอากาศยานทั้งหมดในโรงซ่อมบำรุง STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}แทนที่อัตโนมัติสำหรับรถไฟทั้งหมดในโรงซ่อมบำรุง STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :แทนที่อัตโนมัติสำหรับยานพาหนะทางบกทั้งหมดในโรงซ่อมบำรุง STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}แทนที่อัตโนมัติสำหรับยานพาหนะทางน้ำทั้งหมดในอู่ STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}แทนที่อัตโนมัติสำหรับอากาศยานทั้งหมดในโรงซ่อมบำรุง STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}ดูเพื่อซื้อรถไฟใหม่ STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}ดูเพื่อซื้อยานพาหนะทางบกใหม่ STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}ดูเพื่อซื้อยานพาหนะทางน้ำใหม่ STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}ดูเพื่อซื้ออากาศยานใหม่ STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}ซื้อรถจักร/ล้อเลื่อนใหม่ STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}ซื้อยานพาหนะทางบกใหม่ STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}ซื้อยานพาหนะทางน้ำใหม่ STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}ซื้ออากาศยานใหม่ STR_DEPOT_CLONE_TRAIN :{BLACK}คัดลอกขบวนรถไฟ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}คัดลอกยานพาหนะ STR_DEPOT_CLONE_SHIP :{BLACK}คัดลอกยานพาหนะ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}คัดลอกอากาศยาน STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกขบวนรถไฟทั้งขบวน STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกยานพาหนะ STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกยานพาหนะทางน้ำ STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}กดเพื่อซื้อแบบคัดลอกอากาศยาน STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของโรงซ่อมบำรุง STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}กดเพื่อดูรายการของรถไฟที่มีรายการเข้าซ่อมบำรุงที่โรงซ่อมนี้ STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}กดเพื่อดูรายการของรถที่มีรายการเข้าซ่อมบำรุงที่โรงซ่อมนี้ STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}กดเพื่อดูรายการของเรือที่มีรายการเข้าซ่อมบำรุงที่โรงซ่อมนี้ STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}กดเพื่อดูรายการของอากาศยานที่มีรายการเข้าซ่อมบำรุงที่โรงซ่อมนี้ STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}คลิ๊กเพื่อหยุดรถไฟทุกขบวนที่อยู่ในโรงซ่อมบำรุง STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}คลิ๊กเพื่อหยุดรถทุกคันที่อยู่ในโรงซ่อมบำรุง STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}คลิ๊กเพื่อหยุดเรือทุกลำที่อยู่ในโรงซ่อมบำรุง STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}คลิ๊กเพื่อหยุดอากาศยานทุกลำที่อยู่ในโรงซ่อมบำรุง STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}คลิ๊กให้รถไฟทุกขบวนที่อยู่ในโรงซ่อมบำรุงเริ่มต้นทำงาน STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}คลิ๊กให้รถทุกคันที่อยู่ในโรงซ่อมบำรุงเริ่มต้นทำงาน STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}คลิ๊กให้เรือทุกลำที่อยู่ในโรงซ่อมบำรุงเริ่มต้นทำงาน STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}คลิ๊กให้อากาศยานทุกลำที่อยู่ในโรงซ่อมบำรุงเริ่มต้นทำงาน STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}คุณต้องการขายยานพาหนะทั้งหมด{}ที่อยู่ในโรงซ่อมบำรุง{}{}คุณแน่ใจหรือไม่? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}ข้อความจากผู้ผลิตยานพาหนะ STR_ENGINE_PREVIEW_MESSAGE :{GOLD}เราได้ออกแบบ {STRING} ใหม่ - หากคุณต้องการที่จะนำไปทดลองใช้ เราจะให้คุณนำไปใช้งานก่อนที่จะนำออกไปจำหน่ายในตลาดปกติ {}คุณต้องการนำไปทดลองใช้หรือไม่ ? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :หัวรถจักร STR_ENGINE_PREVIEW_ROAD_VEHICLE :ยานพาหนะทางบก STR_ENGINE_PREVIEW_AIRCRAFT :อากาศยาน STR_ENGINE_PREVIEW_SHIP :ยานพาหนะทางน้ำ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :รถไฟรางเดี่ยว STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :รถไฟรางแม่เหล็กไฟฟ้า STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}มูลค่า: {CURRENCY_LONG} น้ำหนัก: {WEIGHT_SHORT}{}ความเร็ว: {VELOCITY}พลังขับเคลื่อน: {POWER}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี{}ความจุ: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}มูลค่า: {CURRENCY_LONG} น้ำหนัก: {WEIGHT_SHORT}{}ความเร็ว: {VELOCITY}พลังขับเคลื่อน: {POWER} กำัลังลากจูงสูงสุด: {6:FORCE}{}ค่าปฎิบัติการ: {4:CURRENCY_LONG}/ปี{}ความจุ: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}, {CARGO_LONG}{}ค่าปฎิบัติการ: {CURRENCY_LONG}/ปี STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY} พิสัย: {COMMA} ช่อง{}ความจุ: {CARGO_LONG}, {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY} พิสัย: {COMMA} tiles{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}เปลี่ยน {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :รถไฟ STR_REPLACE_VEHICLE_ROAD_VEHICLE :ยานพาหนะทางบก STR_REPLACE_VEHICLE_SHIP :ยานพาหนะทางน้ำ STR_REPLACE_VEHICLE_AIRCRAFT :อากาศยาน STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}เลือกประเภทของรถจักรที่จะแทนที่ STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}เลือกประเภทของพาหนะที่จะแทนที่ทางซ้ายมือ STR_REPLACE_VEHICLES_START :{BLACK}เริ่มต้นการแทนที่ยานพาหนะ STR_REPLACE_VEHICLES_NOW :แทนที่ยานพาหนะทั้งหมดเดี๋ยวนี้ STR_REPLACE_VEHICLES_WHEN_OLD :แทนที่เฉพาะยานพาหนะที่เก่าแล้ว STR_REPLACE_HELP_START_BUTTON :{BLACK}กดเพื่อเริ่มต้นการแทนที่ยานพาหนะตามที่เลือกไว้ในรายการ STR_REPLACE_NOT_REPLACING :{BLACK}ไม่เปลี่ยน STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}ไม่มียานพาหนะที่เลือกไว้ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} เมื่อเก่า STR_REPLACE_VEHICLES_STOP :{BLACK}หยุดการแทนที่ยานพาหนะ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}กดเพื่อเริ่มหยุดการแทนที่ยานพาหนะตามที่เลือกไว้ในรายการ STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}กำลังแทนที่: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}สลับระหว่างหน้าต่างการแทนที่ของรถจักรและรถพ่วง STR_REPLACE_ENGINES :รถจักร STR_REPLACE_WAGONS :รถพ่วง STR_REPLACE_HELP_RAILTYPE :{BLACK}เลือกประเภทของรถจักรและรถพ่วงที่จะแทนที่ใหม่ STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}แสดงพาหนะที่จะแทนที่ทางด้านซ้าย STR_REPLACE_RAIL_VEHICLES :ยานพาหนะประเภทรถไฟ STR_REPLACE_ELRAIL_VEHICLES :ยานพาหนะที่ใช้ไฟฟ้า STR_REPLACE_MONORAIL_VEHICLES :ยานพาหนะประเภทรถไฟรางเดี่ยว STR_REPLACE_MAGLEV_VEHICLES :รถไฟพลังงานแม่แหล็ก STR_REPLACE_REMOVE_WAGON :{BLACK}ขายรถพ่วง: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}ทำให้การแทนที่ขบวนรถไฟทำให้ความยาวของขบวนยังเท่าเดิม # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของขบวนรถ STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของพาหนะ STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของเรือ STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}กดเพื่อไปยังจุดศูนย์กลางของอากาศยาน STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}ส่งขบวนรถไปยังโรงซ่อมบำรุง STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}ส่งยานพาหนะไปยังโรงซ่อมบำรุง STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}ส่งเรือไปยังโรงซ่อมบำรุง STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ส่งอากาศยานไปยังโรงซ่อมบำรุง STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกขบวนรถไฟทั้งขบวน STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกยานพาหนะ STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกยานพาหนะทางน้ำ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}กดเพื่อซื้อแบบคัดลอกอากาศยาน STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}ให้อำนาจขบวนรถไม่ต้องรอเสาอาณัติสัญญาณต้นนี้ (ไม่สามารถใช้กับ Path Signal ได้) STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}ปรับเปลี่ยนการบรรจุเพื่อบรรทุกประเภทสินค้าที่แตกต่าง STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}ปรับเปลี่ยนการบรรจุเพื่อบรรทุกประเภทสินค้าที่แตกต่าง STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}ปรับเปลี่ยนการบรรจุเพื่อบรรทุกประเภทสินค้าที่แตกต่าง STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}ปรับเปลี่ยนการบรรจุเพื่อบรรทุกประเภทสินค้าที่แตกต่าง STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}กลับขบวนรถไฟ STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}กลับรถ STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}แสดงตารางเดินรถ STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}แสดงตารางรายการคำสั่งของยานพาหนะ STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}แสดงตารางรายการคำสั่งของยานพาหนะ STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}แสดงตารางรายการคำสั่งของยานพาหนะ STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}แสดงรายละเอียดของขบวนรถไฟ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}แสดงรายละเอียดของยานพาหนะนี้ STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}{BLACK}แสดงรายละเอียดของเรือลำนี้ STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}{BLACK}แสดงรายละเอียดของอากาศยานลำนี้ STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของขบวนรถนี้ STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของรถคันนี้ STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของเรือลำนี้ STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}สภาพการปัจจุบันของเครื่องบินลำนี้ # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}อยู่ระหว่างการขนถ่าย STR_VEHICLE_STATUS_LEAVING :{LTBLUE}เริ่มออกเดินทาง STR_VEHICLE_STATUS_CRASHED :{RED}เสีย! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}เสีย! STR_VEHICLE_STATUS_STOPPED :{RED}หยุด STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}กำหลังหยุด, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}ไม่มีกำลัง STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}รอทาง STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}เกินพิสัยการบิน STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}มุ่งหน้าสู่ {STATION} ด้วยความเร็ว {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}ไม่มีสถานที่ที่ต้องไป, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}มุ่งหน้าสู่ {WAYPOINT} ด้วยความเร็ว {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}มุ่งหน้าสู่ {DEPOT} ด้วยความเร็ว {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}ซ่อมบำรุงที่ {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}หยุด STR_VEHICLE_COMMAND_STOPPED :{RED}หยุด STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}เริ่ม STR_VEHICLE_COMMAND_STARTED :{GREEN}เริ่ม # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}รายละเอียดของ {VEHICLE} STR_VEHICLE_NAME_BUTTON :{BLACK}ชื่อ STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}ชื่อ STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}ชื่อ STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}ชื่อ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}ชื่อ STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}ใช้งานมาแล้ว: {LTBLUE}{STRING}{BLACK} ค่าปฏิบัติการ: {LTBLUE}{CURRENCY_LONG}/ปี # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} ปี ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ปี ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}ความเร็วสูงสุด: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}ความเร็วสูงสุด: {LTBLUE}{VELOCITY} {BLACK}พิสัย: {LTBLUE}{COMMA} ช่อง STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}น้ำหนัก: {LTBLUE}{WEIGHT_SHORT} {BLACK}พลังขับเคลื่อน: {LTBLUE}{POWER}{BLACK} ความเร็วสูงสุด: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}น้ำหนัก: {LTBLUE}{WEIGHT_SHORT} {BLACK}พลังขับเคลื่อน: {LTBLUE}{POWER}{BLACK} ความเร็วสูงสุด: {LTBLUE}{VELOCITY} {BLACK}กำลังลากจูงสูงสุด: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}ผลประกอบการปีนี้: {LTBLUE}{CURRENCY_LONG} (ปีที่แล้ว: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}ประสิทธิภาพ: {LTBLUE}{COMMA}% {BLACK}เกิดการชำรุดหลังจากเข้าซ่อมบำรุงครั้งที่แล้ว: {LTBLUE}{COMMA} {BLACK}ครั้ง STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}สร้างเมื่อ: {LTBLUE}{NUM}{BLACK} มูลค่า: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}บรรทุก: {LTBLUE}ไม่มี{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}บรรทุก: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}บรรทุก: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}บรรทุก: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}รายได้จากการส่งต่อ: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}เข้าซ่อมบำรุงทุก: {LTBLUE}{COMMA}วัน{BLACK} ครั้งสุดท้ายเมื่อ: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}เข้าซ่อมบำรุงเมื่อประสิทธิภาพ: {LTBLUE}{COMMA}%{BLACK} เข้าซ่อมบำรุงครั้งสุดท้ายเมื่อ: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}เพิ่มระยะการซ่อมบำรุงครั้งละ 10 . Ctrl+Click เพิ่มทีละ5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}ลดระยะการซ่อมบำรุงครั้งละ 10 . Ctrl+Click ลดทีละ5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}ปรับเปลี่ยนประเภทการวัดค่าที่ควรซ่อมบำรุง STR_VEHICLE_DETAILS_DEFAULT :ค่าเริ่มต้น STR_VEHICLE_DETAILS_DAYS :วัน STR_VEHICLE_DETAILS_PERCENT :เปอร์เซนต์ STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}ชื่อรถ STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}ชื่อรถ STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}ชื่อเรือ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}ชื่ออากาศยาน # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} สร้างเมื่อ: {LTBLUE}{NUM}{BLACK} มูลค่า: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} มูลค่า: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}ความจุสินค้าทั้งหมดของรถไฟขบวนนี้: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}ว่างเปล่า STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} จาก {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} จาก {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}สินค้า STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}แสดงรายละเอียดสิ่งของที่บรรทุกมา STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}ข้อมูล STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}แสดงรายละเอียดของรถไฟ STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}ปริมาณที่รับได้ STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}แสดงความจุของขบวนรถ STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}แสดงความจุรวมทั้งหมดของขบวนรถ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}แสดงความจุรวมทั้งหมดของขบวนรถ แยกตามประเภทสินค้า STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}ความจุ: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (ดัดแปลง) STR_REFIT_TITLE :{GOLD}เลือกประเภทสินค้าที่จะบรรทุก: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}ความจุใหม่: {GOLD}{CARGO_LONG}{}{BLACK}มูลค่าในการดัดแปลง: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}ความจุใหม่: {GOLD}{CARGO_LONG}{}{BLACK}กำไรจากการดัดแปลง: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}ความจุใหม่: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}มูลค่าการดัดแปลง: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}ความจุใหม่: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}กำไรจากการดัดแปลง: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}เลือกส่วนที่จะดัดแปลง กดเม้าส์แล้วลากเพื่อเลือกหลายๆคัน STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}เลือกประเภทของสินค้าสำหรับรถไฟที่จะบรรทุก STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}เลือกประเภทของสินค้าสำหรับรถจะบรรทุก STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}{BLACK}เลือกประเภทของสินค้าสำหรับเรือจะบรรทุก STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}{BLACK}เลือกประเภทของสินค้าสำหรับอากาศยานที่จะบรรทุก STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}ดัดแปลงรถไฟ STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}ดัดแปลงรถ STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}ดัดแปลงเรือ STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}ดัดแปลงเครื่องบิน STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}ดัดแปลงตามที่เลือกประเภทสินค้าไว้ STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}ดัดแปลงตามที่เลือกประเภทสินค้าไว้ STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}ดัดแปลงตามที่เลือกประเภทสินค้าไว้ STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}ดัดแปลงตามที่เลือกประเภทสินค้าไว้ # Order view STR_ORDERS_CAPTION :{WHITE}รายการคำสั่งของ {VEHICLE} STR_ORDERS_TIMETABLE_VIEW :{BLACK}ตารางเวลา STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}สลับไปยังตารางเวลา STR_ORDERS_LIST_TOOLTIP :{BLACK}รายการต้นทางปลายทาง STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - สิ้นสุดรายการ - - STR_ORDERS_END_OF_SHARED_ORDERS :- - สิ้นสุดคำสั่งที่ใช้ร่วมกัน - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}ไม่หยุด STR_ORDER_GO_TO :ไปยัง STR_ORDER_GO_NON_STOP_TO :ไม่หยุดจนถึง STR_ORDER_GO_VIA :ผ่าน STR_ORDER_GO_NON_STOP_VIA :ไม่หยุดจนไปผ่าน STR_ORDER_TOOLTIP_NON_STOP :{BLACK}เปลี่ยนรูปแบบการหยุดตามรายการที่เลือก STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}รอจนสินค้าบางประเภทเต็ม STR_ORDER_DROP_LOAD_IF_POSSIBLE :รับสินค้าตามที่บรรทุกได้ STR_ORDER_DROP_FULL_LOAD_ALL :รอจนเต็ม STR_ORDER_DROP_FULL_LOAD_ANY :รอจนสินค้าบางประเภทเต็ม STR_ORDER_DROP_NO_LOADING :ไม่มีการขนถ่าย STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}เลือกรูปแบบการรับส่งสินค้าตามที่เลือกในรายการ STR_ORDER_TOGGLE_UNLOAD :{BLACK}ถ่ายสินค้าลงทั้งหมด STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :ถ่ายสินค้าลงถ้าสถานีรับ STR_ORDER_DROP_UNLOAD :ถ่ายสินค้าออกทั้งหมด STR_ORDER_DROP_TRANSFER :ส่งต่อ STR_ORDER_DROP_NO_UNLOADING :ไม่ถ่ายสินค้าลง STR_ORDER_TOOLTIP_UNLOAD :{BLACK}เปลี่ยนรูปแบบการถ่ายออกตามที่เลือกไว้ในรายการ STR_ORDER_REFIT :{BLACK}ดัดแปลง STR_ORDER_REFIT_TOOLTIP :{BLACK}เลือกประเภทสินค้าที่จะเปลี่ยนไปทำการบรรทุก STR_ORDER_REFIT_AUTO :{BLACK}ดัดแปลงอัตโนมัติ STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}ดัดแปลงเพื่อปรับเปลี่ยนการบรรทุกสินค้าประเภทอื่นอัตโนมัติ STR_ORDER_DROP_REFIT_AUTO :เลือกประเภทตามกำหนด STR_ORDER_DROP_REFIT_AUTO_ANY :ตามสินค้าที่ต้องการการขนส่ง STR_ORDER_SERVICE :{BLACK}ซ่อมบำรุง STR_ORDER_DROP_GO_ALWAYS_DEPOT :ไปทุกครั้ง STR_ORDER_DROP_SERVICE_DEPOT :เข้าซ่อมบำรุงหากต้องการ STR_ORDER_DROP_HALT_DEPOT :หยุด STR_ORDER_SERVICE_TOOLTIP :{BLACK}จะข้ามรายการนี้ไปเมื่อยังไม่มีความต้องการซ่อมบำรุง STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}ข้อมูลยานพาหนะที่จะข้ามไป # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :ปริมาณการบรรทุกรวม STR_ORDER_CONDITIONAL_RELIABILITY :ประสิทธิภาพของพาหนะ STR_ORDER_CONDITIONAL_MAX_SPEED :ความเร็วสูงสุด STR_ORDER_CONDITIONAL_AGE :อายุการใช้งาน(ปี) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :ต้องการการซ่อมบำรุง STR_ORDER_CONDITIONAL_UNCONDITIONALLY :ตลอดเวลา STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :เหลืออายุการใช้งาน(ปี) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}วิธีการเปรียบเทียบข้อมูลยานพาหนะเพื่อใส่ค่า STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :เท่ากับ STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ไม่เท่ากับ STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :น้อยกว่า STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :น้อยกว่าหรือเท่ากับ STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :มากกว่า STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :มากกว่าหรือเท่ากับ STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :คือใช่ STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :คือไม่ใช่ STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}ค่าที่จะเปรียบเทียบกับระหว่างยานพาหนะทั้งสอง STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}ใส่ค่า่ที่จะเปรียบเีทียบ STR_ORDERS_SKIP_BUTTON :{BLACK}ข้าม STR_ORDERS_SKIP_TOOLTIP :{BLACK}ข้ามรายการที่กำลังทำไปยังรายการถัดไป STR_ORDERS_DELETE_BUTTON :{BLACK}ลบ STR_ORDERS_DELETE_TOOLTIP :{BLACK}ลบรายการที่เลือก STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}ลบคำสั่งทั้งหมด STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}หยุดการใช้คำสั่งร่วมกัน STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}หยุดการ Share รายการที่ต้องทำ STR_ORDERS_GO_TO_BUTTON :{BLACK}ไปยัง STR_ORDER_GO_TO_NEAREST_DEPOT :ไปยังโรงซ่อมบำรุงที่ใกล้ที่สุด STR_ORDER_GO_TO_NEAREST_HANGAR :ไปยังโรงซ่อมบำรุงที่ใกล้ที่สุด STR_ORDER_CONDITIONAL :สั่งให้ข้ามรายการในคำสั่ง STR_ORDER_SHARE :Share รายการที่ต้องทำ STR_ORDERS_GO_TO_TOOLTIP :{BLACK}เพิ่มรายการที่ต้องทำก่อนหน้ารายการที่เลือก หรือเพิ่มในท้ายรายการที่มีอยู่แล้ว STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}แสดงยานพาหนะทั้งหมดที่ใช้คำสั่งนี้ # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :ผ่าน {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :ไม่หยุดจนกว่าจะผ่าน {WAYPOINT} STR_ORDER_SERVICE_AT :ซ่อมบำรุงที่ STR_ORDER_SERVICE_NON_STOP_AT :ไม่หยุดจนไปซ่อมบำรุงที่ STR_ORDER_NEAREST_DEPOT :ใกล้ที่สุด STR_ORDER_NEAREST_HANGAR :โรงซ่อมที่ใกล้ที่สุด STR_ORDER_TRAIN_DEPOT :โรงซ่อมบำรุง STR_ORDER_ROAD_VEHICLE_DEPOT :โรงซ่อมบำรุงรถ STR_ORDER_SHIP_DEPOT :อู่เรือ STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(ดัดแปลงเป็น {STRING}) STR_ORDER_REFIT_STOP_ORDER :(ดัดแปลงเป็น {STRING} และหยุด) STR_ORDER_STOP_ORDER :(หยุด) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(อัตโนมัติ) STR_ORDER_FULL_LOAD :(รับจนเต็ม) STR_ORDER_FULL_LOAD_ANY :(รับสินค้าบางชนิดจนเต็ม) STR_ORDER_NO_LOAD :(ไม่รับสินค้า) STR_ORDER_UNLOAD :(ถ่ายสินค้าออกทั้งหมดและรับสินค้าใหม่) STR_ORDER_UNLOAD_FULL_LOAD :(ถ่ายสินค้าออกทั้งหมดแล้วรอสินค้าใหม่เต็ม) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(ถ่ายสินค้าทั้งหมดออกแล้วรอสินค้าใหม่บางอย่างเต็ม) STR_ORDER_UNLOAD_NO_LOAD :(ถ่ายสินค้าออกทั้งหมดแล้วออกไปแบบว่างเปล่า) STR_ORDER_TRANSFER :(ส่งต่อสินค้าและรับสินค้าใหม่) STR_ORDER_TRANSFER_FULL_LOAD :(ส่งต่อสินค้าและรอรับสินค้าจนเต็ม) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(ส่งต่อสินค้าและรอรับสินค้าบางชนิดเต็ม) STR_ORDER_TRANSFER_NO_LOAD :(ส่งต่อสินค้าแล้วออกมาแบบว่างเปล่า) STR_ORDER_NO_UNLOAD :(ไม่ถ่ายสินค้าลงและรับสินค้าเพิ่ม) STR_ORDER_NO_UNLOAD_FULL_LOAD :(ไม่ถ่ายสินค้าลงและรอจนสินค้าเต็ม) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(ไม่ถ่ายสินค้าลงและรอจนบางอย่างเต็ม) STR_ORDER_NO_UNLOAD_NO_LOAD :(ไม่มีการขนถ่ายสินค้า) STR_ORDER_AUTO_REFIT :(ดัดแปลงอัตโนมัติเป็น {STRING}) STR_ORDER_FULL_LOAD_REFIT :(ดัดแปลงอัตโนมัติเป็น {STRING} และรอจนเต็ม) STR_ORDER_FULL_LOAD_ANY_REFIT :(ดัดแปลงอัตโนมัติเป็น {STRING} และรอจนบางอย่างเต็ม) STR_ORDER_UNLOAD_REFIT :(ถ่ายสินค้าลง ดัดแปลงอัตโนมัติเป็น {STRING} และรับสินค้า) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(ถ่ายสินค้าลง ดัดแปลงอัตโนมัติเป็น {STRING} และรอสินค้าเต็ม) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(ถ่ายสินค้าลง ดัดแปลงอัตโนมัติเป็น {STRING} และรอสินค้าบางอย่างเต็ม) STR_ORDER_TRANSFER_REFIT :(ส่งต่อสินค้า ดัดแปลงอัตโนมัติเป็น {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(ส่งต่อสินค้า ดัดแปลงอัตโนมัติเป็น {STRING} และรอจนเต็ม) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(ส่งต่อสินค้า ดัดแปลงอัตโนมัติเป็น {STRING} และรอจนบางอย่างเต็ม) STR_ORDER_NO_UNLOAD_REFIT :(ไม่ถ่ายสินค้าลง แต่ดัดแปลงเป็น {STRING} และรับสินค้าเพิ่ม) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(ไม่ถ่ายสินค้าลง แต่ดัดแปลงเป็น {STRING} และรับสินค้าเพิ่มจนเต็ม) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(ไม่ถ่ายสินค้าลง แต่ดัดแปลงเป็น {STRING} และรับสินค้าบางอย่างจนเต็ม) STR_ORDER_AUTO_REFIT_ANY :สินค้าที่มี STR_ORDER_STOP_LOCATION_NEAR_END :[จอดที่ปลายสุด] STR_ORDER_STOP_LOCATION_MIDDLE :[จอดกึ่งกลาง] STR_ORDER_STOP_LOCATION_FAR_END :[จอดพอดีท้ายขบวน] STR_ORDER_OUT_OF_RANGE :{RED} (ที่หมายถัดไปไกลเกินพิสัย) STR_ORDER_CONDITIONAL_UNCONDITIONAL :ข้ามไปยังคำสั่งที่ {COMMA} STR_ORDER_CONDITIONAL_NUM :ข้ามไปยังคำสั่งที่ {COMMA} เมื่อ {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :ข้ามไปยังคำสั่งที่ {COMMA} เมื่อ {STRING} {STRING} STR_INVALID_ORDER :{RED} (คำสั่งไม่ถูกต้อง) # Time table window STR_TIMETABLE_TITLE :{WHITE}ตารางเวลาของ {VEHICLE} STR_TIMETABLE_ORDER_VIEW :{BLACK}คำสั่ง STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}สลับไปยังรายการคำสั่ง STR_TIMETABLE_TOOLTIP :{BLACK}ตารางเวลา - กดบนรายการที่ไฮไลท์ STR_TIMETABLE_NO_TRAVEL :ไม่มีการเดินทาง STR_TIMETABLE_NOT_TIMETABLEABLE :เดินทาง (อัตโนมัติ; ตามตารางเวลาต่อไปที่ตั้งไว้) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :>>>ไปยังที่หมายถัดไป(ไม่ได้กำหนดเวลา)<<< STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :>>>ความเร็วไม่เกิน {2:VELOCITY} (ไม่มีกำหนดเวลา)<<< STR_TIMETABLE_TRAVEL_FOR :เวลาในการเดินทางคือ {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :เวลาในการเดินทางคือ {STRING} ความเร็วสูงสุดไม่เกิน {VELOCITY} STR_TIMETABLE_STAY_FOR :หยุดเป็นเวลา {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :และเดินทาง {STRING} STR_TIMETABLE_DAYS :{COMMA} วัน STR_TIMETABLE_TICKS :{COMMA} tick STR_TIMETABLE_TOTAL_TIME :{BLACK}ตารางเวลานี้เสร็จสิ้นโดยใช้เวลาทั้งหมด {STRING} STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}ตารางเวลานี้ใช้เวลารวมทั้งสิ้น {STRING} (และยังไม่สมบูรณ์) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}ยานพาหนะนี้เดินทางได้ตามเวลา STR_TIMETABLE_STATUS_LATE :{BLACK}ยานพาหนะนี้เดินทางช้ากว่าเวลาปกติอยู่ {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}ยานพาหนะนี้เดินทางเร็วกว่าเวลาปกติอยู่ {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}ตารางเวลายังไม่เริ่มต้น STR_TIMETABLE_STATUS_START_AT :{BLACK}ตารางเวลานี้จะเริ่มใน {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}วันที่เริ่มต้น STR_TIMETABLE_CHANGE_TIME :{BLACK}ปรับเปลี่ยนเวลา STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}เปลี่ยนเวลาที่ตำแหน่งไฮไลท์ในรายการ STR_TIMETABLE_CLEAR_TIME :{BLACK}ลบเวลา STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}ลบเวลาในรายการที่ไฮไลท์ STR_TIMETABLE_CHANGE_SPEED :{BLACK}ตั้งจำกัดความเร็ว STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}เปลี่ยนความเร็วการเดินทางสูงสุดของลำดับที่ถูกไฮไลท์ STR_TIMETABLE_CLEAR_SPEED :{BLACK}ยกเลิกการจำกัดความเร็ว STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}ยกเลิกความเร็วการเดินทางสูงสุดของลำดับที่ถูกไฮไลท์ STR_TIMETABLE_RESET_LATENESS :{BLACK}รีเซตเวลาที่ช้า STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}รีเซตเวลาที่ล่าช้าเพื่อให้ยานพาหนะเริ่มต้นตามเวลาใหม่ STR_TIMETABLE_AUTOFILL :{BLACK}เติมอัตโนมัติ STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}เติมตารางเวลาอัตโนมัติ (Ctrl+Click เพื่อปรับระยะเวลารอ) STR_TIMETABLE_EXPECTED :{BLACK}การคาดการณ์ STR_TIMETABLE_SCHEDULED :{BLACK}ตารางเวลา STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}สลับระหว่างการดูรายการตารางเวลาและการคาดการณ์ STR_TIMETABLE_ARRIVAL_ABBREVIATION :ถึง: STR_TIMETABLE_DEPARTURE_ABBREVIATION :ออก: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}กำหนดวัน STR_DATE_SET_DATE :{BLACK}กำหนดวัน STR_DATE_SET_DATE_TOOLTIP :{BLACK}เลือกวันที่จะเริ่มต้นใช้งานตารางเวลา STR_DATE_DAY_TOOLTIP :{BLACK}เลือกวัน STR_DATE_MONTH_TOOLTIP :{BLACK}เลือกเดือน STR_DATE_YEAR_TOOLTIP :{BLACK}เลือกปี # AI debug window STR_AI_DEBUG :{WHITE}AI/Game Script Debug STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}ชื่อ script STR_AI_DEBUG_SETTINGS :{BLACK}ตั้งค่า AI STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}เปลี่ยนการตั้งค่า AI STR_AI_DEBUG_RELOAD :{BLACK}โหลด AI อีกครั้งหนึ่ง STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}ปิด AI ทั้งหมด,ทำการ Reload Script, และทำการเริ่มต้น AI ใหม่อีกครั้ง STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}เปิด/ปิด การหยุด เมื่อ Log แสดงข้อมูล AI ตรงกับข้อมูลใน Break String STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Break on: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Break on STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}เมื่อข้อความใน AI Log ตรงกับ string นี้ ให้ทำการหยุดเกม STR_AI_DEBUG_MATCH_CASE :{BLACK}ตรงกัน STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}แสดงกรณีที่ตรงเมื่อมีการเปรียบเทียบข้อความใน AI log ที่ตรงกับ Braek string STR_AI_DEBUG_CONTINUE :{BLACK}ต่อเนื่อง STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}ยกเลิกการหยุดเกม และเปิดทำงาน AI ต่อไป STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}ดูการผลลัพธ์การดีบักของ AI นี้ STR_AI_GAME_SCRIPT :{BLACK}Game Script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}ตรวจสอบ Script log ของเกม STR_ERROR_AI_NO_AI_FOUND :ไม่มี AI ที่เหมาะสมที่จะโหลดขึ้นมา.{}AI นี้เป็นเพียงตัวแทนไม่สามารถทำอะไรได้.{} คุณสามารถดาวโหลดเพิ่มเติมจากระบบ Online Content STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}ถ้ามีกรณี Script เสีย กรุณารายงานไปยังผู้เขียน Script พร้อม Screenshot ของหน้าต่าง AI และ Game script debug STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Game Script Debug window จะใช้งานได้เฉพาะที่เป็น Server # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}ปรับแต่ง AI/Game Script STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Game Script จะเปิดใช้งานในเกมถัดไป STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}AI จะทำการเปิดใช้งานในเกมถัดไป STR_AI_CONFIG_HUMAN_PLAYER :ผู้เล่น STR_AI_CONFIG_RANDOM_AI :คอมพิวเตอร์ STR_AI_CONFIG_NONE :(ไม่มี) STR_AI_CONFIG_MOVE_UP :{BLACK}เลื่อนขึ้น STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}ย้าย AI ที่เลือกขึ้นด้านบนของรายชื่อ STR_AI_CONFIG_MOVE_DOWN :{BLACK}เลื่อนลง STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}ย้าย AI ที่เลือกลงด้านล่างของรายชื่อ STR_AI_CONFIG_GAMESCRIPT :{SILVER}Game Script STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE :{BLACK}เลือก {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Game Script STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}โหลดscriptอื่น STR_AI_CONFIG_CONFIGURE :{BLACK}Configure STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}ปรับแต่ง parameters ของ Script # Available AIs window STR_AI_LIST_CAPTION :{WHITE}ที่เปิดใช้งาน {STRING} STR_AI_LIST_CAPTION_AI :AI STR_AI_LIST_CAPTION_GAMESCRIPT :Game Scripts STR_AI_LIST_TOOLTIP :{BLACK}คลิ๊กเพื่อเลือก script STR_AI_LIST_AUTHOR :{LTBLUE}ผู้เขียน: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}เวอร์ชั่น: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}ยืนยัน STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}เลือก script ที่ไฮไลท์ไว้ STR_AI_LIST_CANCEL :{BLACK}ยกเลิก STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}ไม่สามารถเปลี่ยน script # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameters STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Game Script STR_AI_SETTINGS_CLOSE :{BLACK}ปิด STR_AI_SETTINGS_RESET :{BLACK}เริ่มใหม่ STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :จำนวนที่จะให้เริ่มต้น AI นี้หลังจากที่มีการเริ่มต้น AI ก่อนหน้านี้ไป: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme ของ {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog ของ {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} การอนุญาตของ {STRING} STR_TEXTFILE_VIEW_README :{BLACK}แสดง readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}ข้อมูลการอัพเดต STR_TEXTFILE_VIEW_LICENCE :{BLACK}การอนุญาต # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}รายจ่าย: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}รายจ่าย: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}รายได้: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}รายได้: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}ส่งต่อ: {CURRENCY_LONG} STR_FEEDER :{YELLOW}ส่งต่อ: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}มูลค่าประมาณการ: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}รายได้ประมาณการ: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}ขณะนี้กำลังบันทึก,{}โปรดรอจนกว่าจะเสร็จ! STR_ERROR_AUTOSAVE_FAILED :{WHITE}บันทึกอัตโนมัติล้มเหลว!!! STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}ไม่สามารถอ่านข้อมูลได้ STR_ERROR_GAME_SAVE_FAILED :{WHITE}บันทึกเกมล้มเหลว!!!{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}ไม่สามารถทำการลบไฟล์ STR_ERROR_GAME_LOAD_FAILED :{WHITE}โหลดเกมล้มเหลว{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :ข้อผิดพลาดจากภายใน: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :เกมที่บันทึกไว้ เสีย - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :เกมที่บันทึกไว้ สำหรับเวอร์ชันใหม่ STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :ไม่สามารถโหลดไฟล์ได้ STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :ไม่สามารถเขียนไฟล์ได้ STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :การตรวจสอบความสมบูรณ์ของข้อมูลล้มเหลว STR_GAME_SAVELOAD_NOT_AVAILABLE :<ไม่สามารถใช้งาน> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}บันทึกนี้บันทึกเป็นเวอร์ชั่นที่ยังไม่สนับสนุนระบบรถราง. ทั้งหมดจะถูกลบออก # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}การสร้างแผนที่ถูกยกเลิก...{}... ไม่มีสถานที่เมืองที่เหมาะสม STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... ไม่มีเมืองในแผนที่จำลอง STR_ERROR_PNGMAP :{WHITE}ไม่สามารถโหลดสภาพภูมิประเทศจากไฟล์ PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... หาไฟล์ไม่พบ STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... ไม่สามารถแปลงประเภทของภาพได้. ต้องการภาพ 8-bit หรือ 24-bit PNG STR_ERROR_PNGMAP_MISC :{WHITE}... มีบางอย่างไม่ถูกต้อง (เป็นไปได้ว่าไฟล์เสียหาย) STR_ERROR_BMPMAP :{WHITE}ไม่สามารถโหลดสภาพภูมิประเทศจากไฟล์ BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... ไม่สามารถแปลงประเภทของภาพได้ STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... ภาพมีขนาดใหญ่เกินไป STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}สเกลภาพไม่ตรงกับการตั้งค่าแผนที่ STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}ไม่แนะนำให้ทำการลดขนาดภาพต้นฉบับ. แน่ใจหรือไม่ว่าต้องการทำต่อ? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}พบเฉพาะไฟล์เสียงสำรอง. หากต้องการฟังเสียงอื่นๆ โปรดดาวน์โหลดและติดตั้งจาก Content Download System # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}ภาพถ่ายขนาดใหญ่ STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}ความละเอียดของภาพ:{COMMA} x {COMMA} พิกเซล. การถ่ายภาพอาจใช้เวลาซักพัก. คุณต้องการดำเนินการต่อหรือไม่? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot บันทึกเรียบร้อยแล้ว ที่ '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}การบันทึก Screenshot ล้มเหลว! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}ข้อความ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}ข้อความจาก {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}อยู่นอกขอบแผนที่ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}ใกล้กับขอบแผนที่เกินไป STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}มีเงินไม่พอ - ต้องการอีก {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}ต้องใช้พื้นที่ราบ STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}เนินดินในทิศทางที่ผิด STR_ERROR_CAN_T_DO_THIS :{WHITE}ไม่สามารถทำได้... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}มีสิ่งปลูกสร้างที่ต้องทำลายก่อน STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}ไม่สามารถรื้อถอนได้... STR_ERROR_SITE_UNSUITABLE :{WHITE}... พื้นที่นั้นไม่เหมาะสม STR_ERROR_ALREADY_BUILT :{WHITE}... พร้อมที่จะทำการสร้าง STR_ERROR_OWNED_BY :{WHITE}... เป็นของ {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... พื้นที่นี้ถูกจับจองโดยบริษัทอื่น STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... การจัดการภูมิประเทศถึงขีดจำกัด STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... การเคลียพื้่นที่ถึงขีดจำักัด STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... การปลูกต้นไม้ถึงขีดจำกัด STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}ชื่อนี้มีอยู่แล้ว!! STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} ในเส้นทาง STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}ไม่อนุญาตให้ สร้าง/รื้อถอน ขณะหยุดเกม # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}{} เจ้าหน้าที่ในท้องถิ่นไม่อนุญาตให้ท่านดำเนินการ STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}เจ้าหน้าที่ท้องถิ่นปฏิเสธที่จะอนุญาตให้สร้างท่าอากาศยานเพิ่มในท้องถิ่น STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN}เจ้าหน้าที่ท้องถิ่นปฏิเสธที่จะอนุญาตให้สร้างท่าอากาศยานเนื่องจากมลภาวะทางเีสียงเกินปริมาณ STR_ERROR_BRIBE_FAILED :{WHITE}สินบนของคุณถูกตรวจพบโดย{}ผู้รักษากฎหมายในท้องที่ # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}ตรงนี้ไม่สามารถยกระดับพื้นดินได้ STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}ตรงนี้ไม่สามารถลดระดับพื้นดินได้... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}ตรงนี้ไม่สามารถปรับระดับพื้นดินให้เท่ากันได้... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}การขุดลงไปจะทำให้อุโมงค์เสียหาย STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ตอนนี้อยู่ที่ระดับน้ำทะเลแล้ว STR_ERROR_TOO_HIGH :{WHITE}... สูงเกินไป STR_ERROR_ALREADY_LEVELLED :{WHITE}... อยู่ในสภาพที่ต่ำที่สุดแล้ว # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}ไม่สามารถเปลี่ยนชื่อบริษัทได้ STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}ไม่สามารถเปลี่ยนชื่อประธานบริษัทได้... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... ปริมาณเงินสูงสุดที่สามารถกู้ได้ {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}ไม่สามารถกู้เงินเพิ่มได้จากนี้แล้ว... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ไม่มีหนี้ที่ค้างชำระแล้ว STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} ต้องการ STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}ไม่สามารถใช้หนี้ได้... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}ไม่สามารถส่งเงินได้ นี่คือเงินกู้ที่มาจากธนาคาร... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}ไม่สามารถซื้อกิจการได้... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}ไม่สามารถสร้างสำนักงานได้... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}ไม่สามารถซื้อหุ้น 25% จากบริษัทนี้ได้... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}ไม่สามารถขายหุ้น 25% จากบริษัทนี้ได้... STR_ERROR_PROTECTED :{WHITE}บริษัทนี้ยังไม่เก่าแก่พอที่จะซื้อหุ้นหรือซื้อกิจการได้... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}ไม่สามารถสร้างเมืองใดได้อีก STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}ไม่สามารถเปลี่ยนชื่อเมืองได้... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}ไม่สามารถสร้างเมืองที่นี่ได้... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}ไม่สามารถขยายเมืองได้ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... ติดกับขอบแผนที่มากเกินไป STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ใกล้กับเมืองอื่นมากเกินไป STR_ERROR_TOO_MANY_TOWNS :{WHITE}... มีเมืองมากเกินไป STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... มีพื้นที่บนแผนที่ไม่มากพอ STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}เมืองจะไม่สามารถสร้างถนนได้ในอนาคต. คุณสามารถเปิดใช้งานสร้างถนนของเมือง ใน Advanced Settings->Economy->Towns STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}กำลังอยู่ระหว่างการปรับปรุงถนน STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}ไม่สามารถทำลายเมืองได้{}สถานีหรือโรงเก็บนี้เป็นทรัพย์สินของเมืองไม่สามารถทำลายหรือเคลื่อนย้ายได้ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... ที่นี่ไม่มีสถานที่เหมาะสมในการสร้างอนุเสาวรีย์ในใจกลางเมือง # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... มีอุตสาหกรรมมากเกินไป STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}ไม่สามารถสร้างอุตสาหกรรมได้... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}บริเวณนี้ไม่สามารถสร้าง {STRING} ได้... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}ไม่สามารถสร้างอุตสาหกรรมประเภทนี้่ได้ที่นี่... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ใกล้กับอุตสาหกรรมอื่นมากเกินไป STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... ต้องสร้างเมืองก่อน STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... อนุญาตให้สร้างได้แค่หนึ่งเดียวต่อเมืองหนึ่งเมือง STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... จะสามารถสร้างได้ต่อเมื่อเมืองมีประชากรอย่างน้อย 1200 คน STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... สามารถสร้างได้เฉพาะพื้นที่ป่าฝนเขตร้อน STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... สามารถสร้างได้เฉพาะในทะเลทราย STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... สามารถสร้างได้เฉพาะในเมืองเท่านั้น (แทนที่บ้าน) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... สามารถสร้างได้บริเวณใกล้จุดศูนย์กลางของเมืองเท่านั้น STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}สามารถสร้างได้เฉพาะพื้นที่ต่ำกว่าเท่านั้น STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... สามารถวางตำแหน่งบริเวณขอบของแผนที่เท่านั้น STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... สามารถปลูกป่าได้ที่ระดับเหนือกว่าระดับหิมะเท่านั้น STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... สามารถสร้างได้ที่ระดับเหนือกว่าระดับหิมะเท่านั้น STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... สามารถสร้างได้ที่ระดับต่ำกว่าระดับหิมะเท่านั้น # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}บริเวณนี้ไม่สามารถสร้างสถานีรถไฟได้ STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}ไม่สามารถสร้าง ป้ายหยุดรถ/สถานีขนส่ง STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}ไม่สามารถสร้างสถานีรถบรรทุกได้ STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}ไม่สามารถสร้างสถานีผู้โดยสารรถรางได้ STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}ไม่สามารถสร้างสถานีรถรางขนส่งสินค้าได้ STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}ตรงนี้ไม่สามารถสร้างอู่เรือได้ STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}ตรงนี้ไม่สามารถสร้างท่าอากาศยานได้ STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}มากเกิน 1 สำหรับสถานที่ขนส่งสินค้า STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... ขอบเขตของสถานีกว้างเกินไป STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}มีสถานีหรือจุดโหลด มากเกินไปแล้วในเกม STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}ชิ้นส่วนสถานีมากเกินไป STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}ป้ายรถเมล์มากเกินไป STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}มีจุดขนถ่ายสินค้ามากเกินไป STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}ใกล้กับสถานี/จุดขนถ่ายสินค้าอื่นเกินไป STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}ใกล้กับท่าเทียบเรืออื่นมากเกินไป STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}ใกล้กับท่าอากาศยานอื่นมากเกินไป STR_ERROR_CAN_T_RENAME_STATION :{WHITE}ไม่สามารถเปลี่ยนชื่อได้... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... นี่เป็นถนนซึ่งเมืองนี้เป็นเจ้าของ STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... ถนนหันไปผิดทิศทาง STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... ป้ายจอดรถแบบวิ่งผ่านไม่สามารถสร้างบนทางโค้งได้ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... ป้ายจอดรถแบบวิ่งผ่านไม่สามารถสร้างบนทางแยกได้ # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}ไม่สามารถลบบางส่วนของสถานีได้... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}ต้องลบสถานีรถไฟทิ้งก่อนเป็นอันดับแรก STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}ไม่สามารถลบสถานีขนส่งได้... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}ไม่สามารถลบสถานีขนสินค้าได้... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}ไม่สามารถลบสถานีรถรางโดยสารได้... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}ไม่สามารถลบสถานีรถรางขนสินค้าได้... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}ต้องลบถนนออกก่อน STR_ERROR_THERE_IS_NO_STATION :{WHITE}... ไม่มีสถานี STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}ต้องทำลายสถานีรถไฟก่อน STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}ต้องทำลายสถานีขนส่งก่อน STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}ต้องทำลายสถานีส่งสินค้าก่อน STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}ต้องทำลายสถานีรถรางโดยสารก่อน STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}ต้องทำลายสถานีรถรางขนสินค้าก่อน STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}ต้องทำลายท่าเทียบเรือก่อน STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}ต้องทำลายท่าอากาศยานก่อน # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}มากเกิน 1 สำหรับ Waypoint STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}ใกล้กับ Waypoint อื่นมากเกินไป STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}ไม่สามารถสร้าง Waypoint ที่นี่ได้... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}ไม่สามารถวางทุ่นลอยน้ำที่นี่ได้... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}ไม่สามารถเปลี่ยนชื่อ Waypoint... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}ไม่สามารถลบ Waypoint ได้... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}ต้องลบ Waypoint ก่อน STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... มีทุ่นอยู่ระหว่างทาง STR_ERROR_BUOY_IS_IN_USE :{WHITE}... เป็นทุ่นของบริษัทอื่น # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}ไม่สามารถสร้างอู่รถไฟได้ STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}บริเวณนี้ไม่สามารถสร้างอู่รถได้ STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}ไม่สามารถสร้างโรงซ่อมบำรุงรถรางได้... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}บริเวณนี้ไม่สามารถสร้างอู่เรือได้... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}ไม่สามารถเปลี่ยนชื่ออู่ได้.. STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องจอดสนิทอยู่ในอู่ STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องจอดสนิทอยู่ในอู่ STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ต้องจอดสนิทอยู่ในอู่ STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... ต้องหยุดในโรงเก็บ STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}สามารถปรับเปลี่ยนรถไฟได้ต่อเมื่อจอดสนิทในอู่เท่านั้น STR_ERROR_TRAIN_TOO_LONG :{WHITE}ขบวนรถยาวเกินไป STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}ไม่สามารถกลับขบวนรถได้ STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... ไม่สามารถกลับข้างของรถที่พ่วงพหุกันอยู่ได้ STR_ERROR_INCOMPATIBLE_RAIL_TYPES :ไม่สามารถระบุประเภทรถได้ STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}ไม่สามารถลบยานพาหนะได้... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}รถจักรตามหลังจะตามรถจักรคันหน้าแบบกลับข้างกันเสมอ STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}ไม่สามารถหาทางที่จะไปยังอู่ในละแวกได้ STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}ไม่สามารถค้นหาอู่ในละแวกได้ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :อู่ผิดประเภท # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} จะยาวเกินไปหลังจากแทนที่ใหม่ STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}ไม่มีกฏเกี่ยวกับการแทนที่ครอบคลุม STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(จำนวนเงินถึงขีดจำกัด) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}เป็นไปไม่ได้ที่จะทำทางทับกัน STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}ต้องถอดเสาอาณัติสัญญาณออกก่อน STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}ไม่มีรางรถไฟที่เหมาะสม STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}ต้องทำลายทางรถไฟทิ้งเสียก่อน STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}ถนนเป็นทางเดียวหรือถูกปิดกั้น STR_ERROR_CROSSING_DISALLOWED :{WHITE}ทางตัดเสมอระดับทางไม่อนุญาตให้ตัดผ่านทางประเภทนี้ STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}ไม่สามารถสร้างเสาอาณัติสัญญาณได้... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}บริเวณนี้ไม่สามารถสร้างรางรถไฟได้... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}ตรงนี้ไม่สามารถลบรางรถไฟออกไปได้ STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}ไม่สามารถลบเสาอาณัติสัญญาณได้... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}ไม่สามารถแปลงเสาอาณัติสัญญาณได้... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... ที่นั่นไม่มีทางรถไฟ STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... ที่ตรงนี้ไม่มีเสาอาณัติสัญญาณ STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}ไม่สามารถแปลงประเภททางรถไฟได้... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}ต้องทำลายถนนเสียก่อน STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... ทางเดินรถทางเดียวไม่สามารถมีทางเชื่อมได้ STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}ตรงนี้ไม่สามารถสร้างถนนได้ STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}ตรงนี้ไม่สามารถสร้างรถรางได้ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}ตรงนี้ไม่สามารถลบถนนออกไปได้ STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}ตรงนี้ไม่สามารถลบทางรถรางออกไปได้ STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... ไม่มีถนน STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... ไม่มีทางรถราง # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}ตรงนี้ไม่สามารถสร้างคลองได้ STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}ตรงนี้ไม่สามารถสร้างประตูน้ำได้ STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}ตรงนี้ไม่สามารถวางแม่น้ำได้ STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... สร้างได้เฉพาะบนน้ำเท่านั้น STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... สร้างบนน้ำไม่ได้ STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... สร้างบนทะเลเปิดไม่ได้นะจ๊ะ STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... สร้างบนคลองไม่ได้นะจ๊ะ STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... สร้างบนแม่น้ำไม่ได้นะจ๊ะ STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}ต้องทำการถมคลองเป็นอันดับแรก STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}ไม่สามารถสร้างทางน้ำได้... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... มีต้นไม้อยู่แล้วที่นี่ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... สภาพพื้นที่ไม่เหมาะสมกับประเภทต้นไม้ STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}ไม่สามารถปลูกต้นไม่ได้ที่นี่... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}ตรงนี้ไม่สามารถสร้างสะพานได้... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}ต้องทำลายสะพานทิ้งเสียก่อน STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}จุดเริ่มต้นและจุดสิ้นสุดไม่สามารถเป็นจุดเดียวกันได้ STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}หัวสะพานไม่อยู่ในระดับเดียวกัน STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}สะพานอยู่ในตำแหน่งที่ต่ำเกินไป STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}เริ่มต้นและสิ้นสุดต้องอยู่ในเส้น STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... จุดเริ่มต้นและจุดสิ้นสุดของสะพานต้องอยู่บนพื้นดิน STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... สะพานมีความยาวมากเกินไป STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}สะพานเลยออกไปนอกแผนที่ # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}ไม่สามารถสร้างอุโมงค์ได้... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}สภาพไม่เหมาะสมสำหรับปากอุโมงค์ STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}ต้องทำการทำลายอุโมงค์ก่อน STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}มีอุโมงค์อื่นอยู่ในเส้นทาง STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}อุโมงค์เลยออกไปนอกแผนที่ STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}ไม่สามารถขุดปลายทางเพื่อสร้างปากอุโมงค์อีกฝั่งได้ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... อุโมงค์มีความยาวมากเกินไป # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... มีวัตถุมากเกินไป STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}ไม่สามารถสร้างวัตถุได้ STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}มีบางสิ่งอยู่ในเส้นทาง STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... สำนักงานของบริษัทอยู่ในเส้นทาง STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}ไม่สามารถซื้อที่ดินตรงนี้ได้... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... คุณเป็นเจ้าของมันอยู่แล้ว!!! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}ไม่สามารถตั้งกลุ่มได้... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}ไม่สามารถลบกลุ่มนี้ได้... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}ไม่สามารถเปลี่ยนชื่อกลุ่มได้... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}ไม่สามารถลบยานพาหนะทั้งหมดจากกลุ่มนี้ได้... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}ไม่สามารถเพิ่มยานพาหนะเข้าสู่กลุ่มนี้ได้... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}ไม่สามารถเพิ่มยานพาหนะที่ใช้คำสั่งร่วมกันเข้ากลุ่มนี้ได้... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}มีขบวนรถอยู่ในทาง STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}มีรถอยู่ในทาง STR_ERROR_SHIP_IN_THE_WAY :{WHITE}มีเรืออยู่ในเส้นทาง STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}มีอากาศยานอยู่ในทาง STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}ไม่สามารถดัดแปลงขบวนรถ... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}ไม่สามารถดัดแปลงรถ... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}ไม่สามารถดัดแปลงเรือ... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}ไม่สามารถดัดแปลงอากาศยาน... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}ไม่สามารถเปลี่นนชื่อรถไฟ... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}ไม่สามารถเปลี่ยนชื่อรถ... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}ไม่สามารถเปลี่ยนชื่อเรือ... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}ไม่สามารถเปลี่ยนชื่ออากาศยาน... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}ไม่สามารถ หยุด/เริ่ม ขบวนรถ... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}ไม่สามารถ หยุด/เริ่ม รถ... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}ไม่สามารถ หยุด/เริ่ม เรือ... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}ไม่สามารถ หยุด/เริ่ม อากาศยาน... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}ไม่สามารถส่่งรถไฟไปยังอู่ STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}ไม่สามารถส่่งรถไปยังโรงซ่อมบำรุง... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}ไม่สามารถส่่งเรือไปยังโรงซ่อมบำรุง... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}ไม่สามารถส่่งอากาศยานไปยังโรงซ่อมบำรุง... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}ไม่สามารถซื้อรถไฟได้... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}ไม่สามารถซื้อรถได้... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}ไม่สามารถซื้อเรือได้... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}ไม่สามารถซื้อเครื่องบินได้... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}ไม่สามารถเปลี่ยนชื่อประเภทของรถไฟ... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}ไม่สามารถเปลี่ยนชื่อประเภทของรถ... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}ไม่สามารถเปลี่ยนชื่อประเภทของเรือ... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}ไม่สามารถเปลี่ยนชื่อประเภทของอากาศยาน... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}ไม่สามารถขายรถไฟ... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}ไม่สามารถขายรถ... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}ไม่สามารถขายเรือ... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}ไม่สามารถขายอากาศยาน... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}ยานพาหนะไม่สามารถใช้ได้ STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}ยานพาหนะไม่สามารถใช้ได้ STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}ยานพาหนะไม่สามารถใช้ได้ STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}ยานพาหนะไม่สามารถใช้ได้ STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}ขณะนี้มียานยนต์มากเกินไปแล้วในเกม STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}ไม่สามารถเปลี่ยนระยะเวลาการซ่อมบำรุงได้... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... ยานพาหนะถูกทำลาย STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}ไม่มียานพาหานะให้เลือก STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}เปลี่ยนการกำหนดค่าสำหรับ NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}ยังไม่มียานพาหานะให้เลือก STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}เริ่มเกมหลังจาก {DATE_SHORT} หรือเลือกใช้งาน NewGRF ของยานพาหนะที่จัดเตรียมไว้ก่อนหน้านี้ # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}ไม่สามารถสั่งให้รถไฟวิ่งผ่านเสาอาณัติสัญญาณที่แสดงท่า "ห้าม"... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}ไม่สามารถกลับทิศขบวนรถไฟได้... STR_ERROR_TRAIN_START_NO_POWER :ขบวนรถไม่ได้รับการจ่ายพลังงานไฟฟ้า STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}ไม่สามารถกลับรถได้... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}อากาศยานอยู่ระหว่างทำการบิน # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}ไม่มีพื้นที่ว่างสำหรับเพิ่มคำสั่ง STR_ERROR_TOO_MANY_ORDERS :{WHITE}ได้รับคำสั่งมากเกินไป STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}ไม่สามารถเพิ่มเติมคำสั่งได้แล้ว... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}ไม่สามารถลบคำสั่งได้... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}ไม่สามารถปรับปรุงคำสั่งได้... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}ไม่สามารถเคลื่อนย้ายคำสั่งได้... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}ไม่สามารถข้ามคำสั่งปัจจุบันได้... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}ไม่สามารถข้ามไปยังคำสั่งที่เลือกไว้ได้.. STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... พาหนะไม่สามารถไปยังสถานีทั้งหมดได้ STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... ยานพาหนะไม่สามารถไปยังสถานีนั้นได้ STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ยานพาหนะใช้คำสั่งเหมือนกับยานพาหานะนี้ไม่สามารถไปยังสถานีบางสถานีได้ STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}ไม่สามารถใช้รายการสถานที่ร่วมกันได้ STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}ไม่สามารถหยุดการ Share คำสั่งในรายการ STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}ไม่สามารถคัดลอกรายการสถานที่ได้ STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ไกลจากจุดก่อนหน้านี้มากเกินไป STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... อากาศยานมีพิสัยการบินไม่พอ # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}ไม่สามารถจัดตารางเวลาให้ยานพาหนะนี้ได้... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}พาหนะสามารถหยุดรอได้เฉพาะที่สถานี STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}พาหนะนี้ไม่สามารถหยุดที่่่่สถานีนี้ได้ # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... มีป้ายมากเกินไป STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}ไม่สามารถวางป้่ายที่นี่ได้... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}ไม่สามารถเปลี่ยนชื่อป้ายได้... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}ไม่สามารถลบป้ายได้... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :เป็นเกมวางแผนและจำลอง ซึ่งมีต้นฉบับมาจาก Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition STR_BASEGRAPHICS_WIN_DESCRIPTION :กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition STR_BASESOUNDS_DOS_DESCRIPTION :เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition STR_BASESOUNDS_WIN_DESCRIPTION :เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition STR_BASESOUNDS_NONE_DESCRIPTION :ชุดเสียงแบบไร้เสียง STR_BASEMUSIC_WIN_DESCRIPTION :เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition STR_BASEMUSIC_NONE_DESCRIPTION :ชุดเพลงประกอบแบบไม่มีเสียงเพลง ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :ตึกสูง STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :อาคารสำนักงาน STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :แฟลต STR_TOWN_BUILDING_NAME_CHURCH_1 :โบส์ถ STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :อาคารสำนักงานขนาดใหญ่ STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :ทาวน์เฮ้าส์ STR_TOWN_BUILDING_NAME_HOTEL_1 :โรงแรม STR_TOWN_BUILDING_NAME_STATUE_1 :อนุสาวรีย์ STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :น้ำพุ STR_TOWN_BUILDING_NAME_PARK_1 :สวนสาธารณะ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :อาคารสำนักงาน STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :ร้านค้าและสำนักงาน STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :อาคารสำนักงานสมัยใหม่ STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :โกดัง STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :อาคารสำนักงาน STR_TOWN_BUILDING_NAME_STADIUM_1 :สนามกีฬา STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :บ้านโบราณ STR_TOWN_BUILDING_NAME_COTTAGES_1 :กระท่อม STR_TOWN_BUILDING_NAME_HOUSES_1 :บ้าน STR_TOWN_BUILDING_NAME_FLATS_1 :แฟลต STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :อาคารสูง STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :ร้านค้าและสำนักงาน STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :ร้านค้าและสำนักงาน STR_TOWN_BUILDING_NAME_THEATER_1 :โรงภาพยนตร์ STR_TOWN_BUILDING_NAME_STADIUM_2 :สนามกีฬา STR_TOWN_BUILDING_NAME_OFFICES_1 :สำนักงาน STR_TOWN_BUILDING_NAME_HOUSES_2 :บ้าน STR_TOWN_BUILDING_NAME_CINEMA_1 :โรงภาพยนตร์ STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :ห้างสรรพสินค้า STR_TOWN_BUILDING_NAME_IGLOO_1 :อิกลู STR_TOWN_BUILDING_NAME_TEPEES_1 :กระโจม STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :บ้านพักตากอากาศ STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :ธนาคารเล็กๆ ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :เหมือนถ่านหิน STR_INDUSTRY_NAME_POWER_STATION :โรงผลิตไฟฟ้า STR_INDUSTRY_NAME_SAWMILL :โรงเลื่อย STR_INDUSTRY_NAME_FOREST :ป่าไม้ STR_INDUSTRY_NAME_OIL_REFINERY :โรงกลั่นน้ำมัน STR_INDUSTRY_NAME_OIL_RIG :แท่นขุดเจาะน้ำมันกลางทะเล STR_INDUSTRY_NAME_FACTORY :โรงงานแปรรูป STR_INDUSTRY_NAME_PRINTING_WORKS :โรงผลิตกระดาษ STR_INDUSTRY_NAME_STEEL_MILL :โรงงานเหล็กกล้า STR_INDUSTRY_NAME_FARM :ฟาร์ม STR_INDUSTRY_NAME_COPPER_ORE_MINE :เหมืองแร่ทองแดง STR_INDUSTRY_NAME_OIL_WELLS :แท่นขุดเจาะน้ำมัน STR_INDUSTRY_NAME_BANK :ธนาคาร STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :โรงงานแปรรูปอาหาร STR_INDUSTRY_NAME_PAPER_MILL :โรงงานกระดาษ STR_INDUSTRY_NAME_GOLD_MINE :เหมืองทองคำ STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :ธนาคาร STR_INDUSTRY_NAME_DIAMOND_MINE :เหมืองเพชร STR_INDUSTRY_NAME_IRON_ORE_MINE :เหมืองแร่เหล็ก STR_INDUSTRY_NAME_FRUIT_PLANTATION :สวนอินทผาลัม STR_INDUSTRY_NAME_RUBBER_PLANTATION :สวนยาง STR_INDUSTRY_NAME_WATER_SUPPLY :โรงทำน้ำสะอาด STR_INDUSTRY_NAME_WATER_TOWER :หอประปา STR_INDUSTRY_NAME_FACTORY_2 :โรงงาน STR_INDUSTRY_NAME_FARM_2 :ฟาร์ม STR_INDUSTRY_NAME_LUMBER_MILL :โรงแปรรูปไม้ STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :ป่าสายไหม STR_INDUSTRY_NAME_CANDY_FACTORY :โรงงานขนมหวาน STR_INDUSTRY_NAME_BATTERY_FARM :ฟาร์มพลังงาน STR_INDUSTRY_NAME_COLA_WELLS :แท่นขุดเจาะโคล่า STR_INDUSTRY_NAME_TOY_SHOP :ร้านค้าของเล่น STR_INDUSTRY_NAME_TOY_FACTORY :โรงงานของเล่น STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :น้ำพุพลาสติก STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :โรงงานผลิตน้ำอัดลม STR_INDUSTRY_NAME_BUBBLE_GENERATOR :เครื่องกำเนิดฟองลูกโป่ง STR_INDUSTRY_NAME_TOFFEE_QUARRY :บ่อทอฟฟี่ STR_INDUSTRY_NAME_SUGAR_MINE :เหมืองน้ำตาล ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :ไม่มีชื่อ STR_SV_TRAIN_NAME :รถไฟ {COMMA} STR_SV_ROAD_VEHICLE_NAME :พาหนะทางบก {COMMA} STR_SV_SHIP_NAME :พาหนะทางน้ำ {COMMA} STR_SV_AIRCRAFT_NAME :อากาศยาน {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} เหนือ STR_SV_STNAME_SOUTH :{STRING} ใต้ STR_SV_STNAME_EAST :{STRING} ตะวันออก STR_SV_STNAME_WEST :{STRING} ตะวันตก STR_SV_STNAME_CENTRAL :{STRING} กลาง STR_SV_STNAME_TRANSFER :จุดขนถ่าย {STRING} STR_SV_STNAME_HALT :ป้ายหยุด {STRING} STR_SV_STNAME_VALLEY :หมู่บ้าน {STRING} STR_SV_STNAME_HEIGHTS :เนิน {STRING} STR_SV_STNAME_WOODS :ป่า {STRING} STR_SV_STNAME_LAKESIDE :ชายหาด {STRING} STR_SV_STNAME_EXCHANGE :จุดแลกเปลี่ยน {STRING} STR_SV_STNAME_AIRPORT :ท่าอากาศยาน {STRING} STR_SV_STNAME_OILFIELD :แท่นขุดเจาะ {STRING} STR_SV_STNAME_MINES :เหมือง {STRING} STR_SV_STNAME_DOCKS :ท่าเทียบเรือ {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :ชานเมือง {STRING} STR_SV_STNAME_SIDINGS :ในเมือง {STRING} STR_SV_STNAME_BRANCH :ขนส่งสาขา {STRING} STR_SV_STNAME_UPPER :{STRING} ตอนบน STR_SV_STNAME_LOWER :{STRING} ตอนล่าง STR_SV_STNAME_HELIPORT :ลานจอด ฮ {STRING} STR_SV_STNAME_FOREST :ป่าไม้ {STRING} STR_SV_STNAME_FALLBACK :จุดขนส่งเมือง {STRING} #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electric) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passenger Carriage STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Mail Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :รถบรรทุกถ่านหิน STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Livestock Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Goods Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :รถบรรทุกซุง STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :รถบรรทุกเหล็กกล้า STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Armoured Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Food Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :รถบรรทุกกระดาษ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :ถังเก็บน้ำ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :รถบรรทุกผลไม้ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :รถบรรทุกยางพารา STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :รถบรรทุกน้ำตาล STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Candyfloss Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Bubble Van STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :ถังเก็บโคล่า STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :รถขนส่งขนม STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :รถขนส่งของเล่น STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Battery Truck STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Fizzy Drink Truck STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plastic Truck STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passenger Carriage STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :รถขนส่งไปรษณีย์ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Livestock Van STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Goods Van STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Wood Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :รถบรรทุกเหล็กกล้า STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :รถขนส่งหุ้มเกราะ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :รถขนส่งอาหาร STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Paper Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Water Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruit Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Rubber Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sugar Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Candyfloss Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :รถขนส่งฟอง STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cola Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Sweet Van STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Toy Van STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Battery Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Fizzy Drink Truck STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plastic Truck STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passenger Carriage STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Mail Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oil Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Livestock Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goods Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Grain Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Wood Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Iron Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :รถบรรทุกเหล็กกล้า STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Armoured Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Food Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Paper Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Copper Ore Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Water Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruit Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Rubber Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sugar Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Candyfloss Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Toffee Hopper STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Bubble Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cola Tanker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Sweet Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Toy Van STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Battery Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Fizzy Drink Truck STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Coal Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Coal Truck STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Coal Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Mail Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Oil Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Oil Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Oil Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Livestock Van STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Livestock Van STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Livestock Van STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Goods Truck STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Goods Truck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Goods Truck STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Grain Truck STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Grain Truck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Grain Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Wood Truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :รถบรรทุกไม้รุ่นฟอสเตอร์ STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :รถบรรทุกไม้รุ่นมัวร์แลนด์ STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นเอ็มพีเอส STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นยูเอชแอล STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :รถบรรทุกแร่เหล็กรุ่นชิปปี้ STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นบัลล๊อก STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นยูเอชแอล STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :รถบรรทุกเหล็กกล้ารุ่นเคลลิ่ง STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :รถหุ้มเกราะรุ่นบัลล๊อก STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :รถหุ้มเกราะรุ่นยูเอชแอล STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Armoured Truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Food Van STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Food Van STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Food Van STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Paper Truck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Paper Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Paper Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Copper Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Copper Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Copper Ore Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Water Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Water Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Water Tanker STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Fruit Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Fruit Truck STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Fruit Truck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Rubber Truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Rubber Truck STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Rubber Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sugar Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sugar Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sugar Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Cola Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Cola Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Cola Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Candyfloss Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Candyfloss Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Candyfloss Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Toffee Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Toffee Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Toffee Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Toy Van STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Sweet Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Sweet Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Sweet Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Battery Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drink Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastic Truck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Bubble Truck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Bubble Truck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Bubble Truck STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oil Tanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oil Tanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passenger Ferry STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passenger Ferry STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passenger Ferry STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo ship STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo ship STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo ship STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo ship STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Helicopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helicopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helicopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :ทุ่น {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :ทุ่น {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :(บริษัท {COMMA}) STR_FORMAT_GROUP_NAME :กลุ่ม {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :จุดตรวจ {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :จุดตรวจ {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :โรงซ่อมบำรุงรถไฟ {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :โรงซ่อมบำรุงรถไฟ {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :โรงซ่อมบำรุงรถ {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :โรงซ่อมบำรุงรถ {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :อู่เรือ {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :อู่เรือ {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :โรงเก็บเครื่องบิน {STATION} STR_UNKNOWN_STATION :ไม่ทราบสถานี STR_DEFAULT_SIGN_NAME :ป้าย STR_COMPANY_SOMEONE :บางคน STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :ผู้ชม, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE} {CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/gaelic.txt0000644000000000000000000163243012246102561015376 0ustar rootroot##name Scottish Gaelic ##ownname Gàidhlig ##isocode gd_GB ##plural 13 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x083c ##grflangid 0x13 ##gender m f ##case nom gen dat voc # $Id: gaelic.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(sreang gun deifinisean) STR_JUST_NOTHING :— # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Taistealaich STR_CARGO_PLURAL_PASSENGERS.nom :Taistealaich STR_CARGO_PLURAL_PASSENGERS.gen :Thaistealach STR_CARGO_PLURAL_PASSENGERS.dat :Taistealaich STR_CARGO_PLURAL_COAL :{G=m}Gual STR_CARGO_PLURAL_COAL.nom :Gual STR_CARGO_PLURAL_COAL.gen :Guail STR_CARGO_PLURAL_COAL.dat :Gual STR_CARGO_PLURAL_MAIL :{G=m}Post STR_CARGO_PLURAL_MAIL.nom :Post STR_CARGO_PLURAL_MAIL.gen :Puist STR_CARGO_PLURAL_MAIL.dat :Post STR_CARGO_PLURAL_OIL :{G=f}Ola STR_CARGO_PLURAL_OIL.nom :Ola STR_CARGO_PLURAL_OIL.gen :Ola STR_CARGO_PLURAL_OIL.dat :Ola STR_CARGO_PLURAL_LIVESTOCK :{G=f}Sprèidh STR_CARGO_PLURAL_LIVESTOCK.nom :Sprèidh STR_CARGO_PLURAL_LIVESTOCK.gen :Sprèidhe STR_CARGO_PLURAL_LIVESTOCK.dat :Sprèidh STR_CARGO_PLURAL_GOODS :{G=m}Bathar STR_CARGO_PLURAL_GOODS.nom :Bathar STR_CARGO_PLURAL_GOODS.gen :Bathair STR_CARGO_PLURAL_GOODS.dat :Bathar STR_CARGO_PLURAL_GRAIN :{G=m}Gràn STR_CARGO_PLURAL_GRAIN.nom :Gràn STR_CARGO_PLURAL_GRAIN.gen :Gràin STR_CARGO_PLURAL_GRAIN.dat :Gràn STR_CARGO_PLURAL_WOOD :{G=m}Fiodh STR_CARGO_PLURAL_WOOD.nom :Fiodh STR_CARGO_PLURAL_WOOD.gen :Fiodha STR_CARGO_PLURAL_WOOD.dat :Fiodh STR_CARGO_PLURAL_IRON_ORE :{G=f}Clach-iarainn STR_CARGO_PLURAL_IRON_ORE.nom :Clach-iarainn STR_CARGO_PLURAL_IRON_ORE.gen :Cloich-iarainn STR_CARGO_PLURAL_IRON_ORE.dat :Clach-iarainn STR_CARGO_PLURAL_STEEL :{G=f}Stàilinn STR_CARGO_PLURAL_STEEL.nom :Stàilinn STR_CARGO_PLURAL_STEEL.gen :Stàilinne STR_CARGO_PLURAL_STEEL.dat :Stàilinn STR_CARGO_PLURAL_VALUABLES :{G=m}Seilbh STR_CARGO_PLURAL_VALUABLES.nom :Seilbh STR_CARGO_PLURAL_VALUABLES.gen :Shealbh STR_CARGO_PLURAL_VALUABLES.dat :Seilbh STR_CARGO_PLURAL_COPPER_ORE :{G=f}Clach-chopair STR_CARGO_PLURAL_COPPER_ORE.nom :Clach-chopair STR_CARGO_PLURAL_COPPER_ORE.gen :Cloiche-copair STR_CARGO_PLURAL_COPPER_ORE.dat :Clach-chopair STR_CARGO_PLURAL_MAIZE :{G=f}Cruithneachd Innseanach STR_CARGO_PLURAL_MAIZE.nom :Cruithneachd Innseanach STR_CARGO_PLURAL_MAIZE.gen :Cruithneachd Innseanach STR_CARGO_PLURAL_MAIZE.dat :Cruithneachd Innseanach STR_CARGO_PLURAL_FRUIT :{G=m}Measan STR_CARGO_PLURAL_FRUIT.nom :Measan STR_CARGO_PLURAL_FRUIT.gen :Mheasan STR_CARGO_PLURAL_FRUIT.dat :Measan STR_CARGO_PLURAL_DIAMONDS :{G=m}Daoimeanan STR_CARGO_PLURAL_DIAMONDS.nom :Daoimeanan STR_CARGO_PLURAL_DIAMONDS.gen :Dhaoimeanan STR_CARGO_PLURAL_DIAMONDS.dat :Daoimeanan STR_CARGO_PLURAL_FOOD :Biadh STR_CARGO_PLURAL_FOOD.nom :Biadh STR_CARGO_PLURAL_FOOD.gen :Bìdh STR_CARGO_PLURAL_FOOD.dat :Biadh STR_CARGO_PLURAL_PAPER :{G=m}Pàipear STR_CARGO_PLURAL_PAPER.nom :Pàipear STR_CARGO_PLURAL_PAPER.gen :Pàipeir STR_CARGO_PLURAL_PAPER.dat :Pàipear STR_CARGO_PLURAL_GOLD :{G=m}Òr STR_CARGO_PLURAL_GOLD.nom :Òr STR_CARGO_PLURAL_GOLD.gen :Òir STR_CARGO_PLURAL_GOLD.dat :Òr STR_CARGO_PLURAL_WATER :{G=m}Uisge STR_CARGO_PLURAL_WATER.nom :Uisge STR_CARGO_PLURAL_WATER.gen :Uisge STR_CARGO_PLURAL_WATER.dat :Uisge STR_CARGO_PLURAL_WHEAT :{G=f}Cruithneachd STR_CARGO_PLURAL_WHEAT.nom :Cruithneachd STR_CARGO_PLURAL_WHEAT.gen :Cruithneachd STR_CARGO_PLURAL_WHEAT.dat :Cruithneachd STR_CARGO_PLURAL_RUBBER :{G=m}Rubair STR_CARGO_PLURAL_RUBBER.nom :Rubair STR_CARGO_PLURAL_RUBBER.gen :Rubair STR_CARGO_PLURAL_RUBBER.dat :Rubair STR_CARGO_PLURAL_SUGAR :{G=m}Siùcar STR_CARGO_PLURAL_SUGAR.nom :Siùcar STR_CARGO_PLURAL_SUGAR.gen :Siùcair STR_CARGO_PLURAL_SUGAR.dat :Siùcar STR_CARGO_PLURAL_TOYS :{G=f}Dèideagan STR_CARGO_PLURAL_TOYS.nom :Dèideagan STR_CARGO_PLURAL_TOYS.gen :Dhèideagan STR_CARGO_PLURAL_TOYS.dat :Dèideagan STR_CARGO_PLURAL_CANDY :{G=m}Mìlseanan STR_CARGO_PLURAL_CANDY.nom :Mìlseanan STR_CARGO_PLURAL_CANDY.gen :Mhìlseanan STR_CARGO_PLURAL_CANDY.dat :Mìlseanan STR_CARGO_PLURAL_COLA :{G=m}Cola STR_CARGO_PLURAL_COLA.nom :Cola STR_CARGO_PLURAL_COLA.gen :Cola STR_CARGO_PLURAL_COLA.dat :Cola STR_CARGO_PLURAL_COTTON_CANDY :{G=f}Canach-shiùcair STR_CARGO_PLURAL_COTTON_CANDY.nom :Canach-shiùcair STR_CARGO_PLURAL_COTTON_CANDY.gen :Canaich-siùcair STR_CARGO_PLURAL_COTTON_CANDY.dat :Canach-shiùcair STR_CARGO_PLURAL_BUBBLES :{G=m}Builgeanan STR_CARGO_PLURAL_BUBBLES.nom :Builgeanan STR_CARGO_PLURAL_BUBBLES.gen :Bhuilgeanan STR_CARGO_PLURAL_BUBBLES.dat :Builgeanan STR_CARGO_PLURAL_TOFFEE :{G=m}Tofaidh STR_CARGO_PLURAL_TOFFEE.nom :Tofaidh STR_CARGO_PLURAL_TOFFEE.gen :Tofaidh STR_CARGO_PLURAL_TOFFEE.dat :Tofaidh STR_CARGO_PLURAL_BATTERIES :{G=f}Bataraidhean STR_CARGO_PLURAL_BATTERIES.nom :Bataraidhean STR_CARGO_PLURAL_BATTERIES.gen :Bhataraidhean STR_CARGO_PLURAL_BATTERIES.dat :Bataraidhean STR_CARGO_PLURAL_PLASTIC :{G=f}Plastaig STR_CARGO_PLURAL_PLASTIC.nom :Plastaig STR_CARGO_PLURAL_PLASTIC.gen :Plastaig STR_CARGO_PLURAL_PLASTIC.dat :Plastaig STR_CARGO_PLURAL_FIZZY_DRINKS :{G=f}Deochan gucagach STR_CARGO_PLURAL_FIZZY_DRINKS.nom :Deochan gucagach STR_CARGO_PLURAL_FIZZY_DRINKS.gen :Dheochan gucagach STR_CARGO_PLURAL_FIZZY_DRINKS.dat :Deochan gucagach # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :{G=m}Taistealach STR_CARGO_SINGULAR_PASSENGER.nom :Taistealach STR_CARGO_SINGULAR_PASSENGER.gen :Taistealaich STR_CARGO_SINGULAR_PASSENGER.dat :Taistealach STR_CARGO_SINGULAR_COAL :{G=m}Gual STR_CARGO_SINGULAR_COAL.nom :Gual STR_CARGO_SINGULAR_COAL.gen :Guail STR_CARGO_SINGULAR_COAL.dat :Gual STR_CARGO_SINGULAR_MAIL :{G=m}Post STR_CARGO_SINGULAR_MAIL.nom :Post STR_CARGO_SINGULAR_MAIL.gen :Puist STR_CARGO_SINGULAR_MAIL.dat :Post STR_CARGO_SINGULAR_OIL :{G=f}Ola STR_CARGO_SINGULAR_OIL.nom :Ola STR_CARGO_SINGULAR_OIL.gen :Ola STR_CARGO_SINGULAR_OIL.dat :Ola STR_CARGO_SINGULAR_LIVESTOCK :{G=f}Sprèidh STR_CARGO_SINGULAR_LIVESTOCK.nom :Sprèidh STR_CARGO_SINGULAR_LIVESTOCK.gen :Sprèidhe STR_CARGO_SINGULAR_LIVESTOCK.dat :Sprèidh STR_CARGO_SINGULAR_GOODS :{G=m}Bathar STR_CARGO_SINGULAR_GOODS.nom :Bathar STR_CARGO_SINGULAR_GOODS.gen :Bathair STR_CARGO_SINGULAR_GOODS.dat :Bathar STR_CARGO_SINGULAR_GRAIN :{G=m}Gràn STR_CARGO_SINGULAR_GRAIN.nom :Gràn STR_CARGO_SINGULAR_GRAIN.gen :Gràin STR_CARGO_SINGULAR_GRAIN.dat :Gràn STR_CARGO_SINGULAR_WOOD :{G=m}Fiodh STR_CARGO_SINGULAR_WOOD.nom :Fiodh STR_CARGO_SINGULAR_WOOD.gen :Fiodha STR_CARGO_SINGULAR_WOOD.dat :Fiodh STR_CARGO_SINGULAR_IRON_ORE :{G=f}Clach-iarainn STR_CARGO_SINGULAR_IRON_ORE.nom :Clach-iarainn STR_CARGO_SINGULAR_IRON_ORE.gen :Cloich-iarainn STR_CARGO_SINGULAR_IRON_ORE.dat :Clach-iarainn STR_CARGO_SINGULAR_STEEL :{G=f}Stàilinn STR_CARGO_SINGULAR_STEEL.nom :Stàilinn STR_CARGO_SINGULAR_STEEL.gen :Stàilinne STR_CARGO_SINGULAR_STEEL.dat :Stàilinn STR_CARGO_SINGULAR_VALUABLES :{G=m}Sealbh STR_CARGO_SINGULAR_VALUABLES.nom :Sealbh STR_CARGO_SINGULAR_VALUABLES.gen :Seilbh STR_CARGO_SINGULAR_VALUABLES.dat :Sealbh STR_CARGO_SINGULAR_COPPER_ORE :{G=f}Clach-chopair STR_CARGO_SINGULAR_COPPER_ORE.nom :Clach-chopair STR_CARGO_SINGULAR_COPPER_ORE.gen :Cloiche-copair STR_CARGO_SINGULAR_COPPER_ORE.dat :Clach-chopair STR_CARGO_SINGULAR_MAIZE :{G=f}Cruithneachd Innseanach STR_CARGO_SINGULAR_MAIZE.nom :Cruithneachd Innseanach STR_CARGO_SINGULAR_MAIZE.gen :Cruithneachd Innseanach STR_CARGO_SINGULAR_MAIZE.dat :Cruithneachd Innseanach STR_CARGO_SINGULAR_FRUIT :{G=m}Meas STR_CARGO_SINGULAR_FRUIT.nom :Meas STR_CARGO_SINGULAR_FRUIT.gen :Measa STR_CARGO_SINGULAR_FRUIT.dat :Meas STR_CARGO_SINGULAR_DIAMOND :{G=m}Daoimean STR_CARGO_SINGULAR_DIAMOND.nom :Daoimean STR_CARGO_SINGULAR_DIAMOND.gen :Daoimein STR_CARGO_SINGULAR_DIAMOND.dat :Daoimean STR_CARGO_SINGULAR_FOOD :{G=m}Biadh STR_CARGO_SINGULAR_FOOD.nom :Biadh STR_CARGO_SINGULAR_FOOD.gen :Bìdh STR_CARGO_SINGULAR_FOOD.dat :Biadh STR_CARGO_SINGULAR_PAPER :{G=m}Pàipear STR_CARGO_SINGULAR_PAPER.nom :Pàipear STR_CARGO_SINGULAR_PAPER.gen :Pàipeir STR_CARGO_SINGULAR_PAPER.dat :Pàipear STR_CARGO_SINGULAR_GOLD :{G=m}Òr STR_CARGO_SINGULAR_GOLD.nom :Òr STR_CARGO_SINGULAR_GOLD.gen :Òir STR_CARGO_SINGULAR_GOLD.dat :Òr STR_CARGO_SINGULAR_WATER :{G=m}Uisge STR_CARGO_SINGULAR_WATER.nom :Uisge STR_CARGO_SINGULAR_WATER.gen :Uisge STR_CARGO_SINGULAR_WATER.dat :Uisge STR_CARGO_SINGULAR_WHEAT :{G=f}Cruithneachd STR_CARGO_SINGULAR_WHEAT.nom :Cruithneachd STR_CARGO_SINGULAR_WHEAT.gen :Cruithneachd STR_CARGO_SINGULAR_WHEAT.dat :Cruithneachd STR_CARGO_SINGULAR_RUBBER :{G=m}Rubair STR_CARGO_SINGULAR_RUBBER.nom :Rubair STR_CARGO_SINGULAR_RUBBER.gen :Rubair STR_CARGO_SINGULAR_RUBBER.dat :Rubair STR_CARGO_SINGULAR_SUGAR :{G=m}Siùcar STR_CARGO_SINGULAR_SUGAR.nom :Siùcar STR_CARGO_SINGULAR_SUGAR.gen :Siùcair STR_CARGO_SINGULAR_SUGAR.dat :Siùcar STR_CARGO_SINGULAR_TOY :{G=f}Dèideag STR_CARGO_SINGULAR_TOY.nom :Dèideag STR_CARGO_SINGULAR_TOY.gen :Dèideig STR_CARGO_SINGULAR_TOY.dat :Dèideag STR_CARGO_SINGULAR_CANDY :{G=m}Mìlsean STR_CARGO_SINGULAR_CANDY.nom :Mìlsean STR_CARGO_SINGULAR_CANDY.gen :Mìlsein STR_CARGO_SINGULAR_CANDY.dat :Mìlsean STR_CARGO_SINGULAR_COLA :{G=m}Cola STR_CARGO_SINGULAR_COLA.nom :Cola STR_CARGO_SINGULAR_COLA.gen :Cola STR_CARGO_SINGULAR_COLA.dat :Cola STR_CARGO_SINGULAR_COTTON_CANDY :{G=f}Canach-shiùcair STR_CARGO_SINGULAR_COTTON_CANDY.nom :Canach-shiùcair STR_CARGO_SINGULAR_COTTON_CANDY.gen :Canaich-siùcair STR_CARGO_SINGULAR_COTTON_CANDY.dat :Canach-shiùcair STR_CARGO_SINGULAR_BUBBLE :{G=m}Builgean STR_CARGO_SINGULAR_BUBBLE.nom :Builgean STR_CARGO_SINGULAR_BUBBLE.gen :Builgein STR_CARGO_SINGULAR_BUBBLE.dat :Builgean STR_CARGO_SINGULAR_TOFFEE :{G=m}Tofaidh STR_CARGO_SINGULAR_TOFFEE.nom :Tofaidh STR_CARGO_SINGULAR_TOFFEE.gen :Tofaidh STR_CARGO_SINGULAR_TOFFEE.dat :Tofaidh STR_CARGO_SINGULAR_BATTERY :{G=m}Bataraidh STR_CARGO_SINGULAR_BATTERY.nom :Bataraidh STR_CARGO_SINGULAR_BATTERY.gen :Bataraidh STR_CARGO_SINGULAR_BATTERY.dat :Bataraidh STR_CARGO_SINGULAR_PLASTIC :{G=f}Plastaig STR_CARGO_SINGULAR_PLASTIC.nom :Plastaig STR_CARGO_SINGULAR_PLASTIC.gen :Plastaig STR_CARGO_SINGULAR_PLASTIC.dat :Plastaig STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}Deoch ghucagach STR_CARGO_SINGULAR_FIZZY_DRINK.nom :Deoch ghucagach STR_CARGO_SINGULAR_FIZZY_DRINK.gen :Dibhe gucagaich STR_CARGO_SINGULAR_FIZZY_DRINK.dat :Deoch ghucagach # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} {P taistealach thaistealach taistealaich taistealach} STR_QUANTITY_COAL :{WEIGHT_LONG} de ghual STR_QUANTITY_MAIL :{COMMA} {P bhaga bhaga bagaichean baga} dhe phost STR_QUANTITY_OIL :{VOLUME_LONG} dhe dh'ola STR_QUANTITY_LIVESTOCK :{COMMA} dhe sprèidh STR_QUANTITY_GOODS :{COMMA} {P chreata chreata creataichean creata} dhe bhathar STR_QUANTITY_GRAIN :{WEIGHT_LONG} dhe ghràn STR_QUANTITY_WOOD :{WEIGHT_LONG} dhe dh'fhiodh STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} dhe chlach-iarainn STR_QUANTITY_STEEL :{WEIGHT_LONG} dhe stàilinn STR_QUANTITY_VALUABLES :{COMMA} {P bhaga bhaga bagaichean baga} dhe sheilbh STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} dhe chlach-chopair STR_QUANTITY_MAIZE :{WEIGHT_LONG} dhe chruithneachd Innseanach STR_QUANTITY_FRUIT :{WEIGHT_LONG} dhe mheasan STR_QUANTITY_DIAMONDS :{COMMA} {P bhaga bhaga bagaichean baga} dhe dhaoimeanan STR_QUANTITY_FOOD :{WEIGHT_LONG} dhe bhiadh STR_QUANTITY_PAPER :{WEIGHT_LONG} dhe phàipear STR_QUANTITY_GOLD :{COMMA} {P bhaga bhaga bagaichean baga} dhe dh'òr STR_QUANTITY_WATER :{VOLUME_LONG} dhe dh'uisge STR_QUANTITY_WHEAT :{WEIGHT_LONG} dhe chruithneachd STR_QUANTITY_RUBBER :{VOLUME_LONG} dhe rubair STR_QUANTITY_SUGAR :{WEIGHT_LONG} dhe shiùcar STR_QUANTITY_TOYS :{COMMA} {P dèideag dhèideig dèideagan dèideag} STR_QUANTITY_SWEETS :{COMMA} {P bhaga bhaga bagaichean baga} dhe mhìlseanan STR_QUANTITY_COLA :{VOLUME_LONG} dhe chola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} dhe chanach-siùcair STR_QUANTITY_BUBBLES :{COMMA} {P bhuilgean bhuilgean builgeanan builgean} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} dhe thofaidh STR_QUANTITY_BATTERIES :{COMMA} {P bhataraidh bhataraidh bataraidhean bataraidh} STR_QUANTITY_PLASTIC :{VOLUME_LONG} dhe phlastaig STR_QUANTITY_FIZZY_DRINKS :{COMMA} {P deoch dheoch deochan deoch} {P ghucagach ghucagach gucagach ghucagach} STR_QUANTITY_N_A :— # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}Tais STR_ABBREV_COAL :{TINY_FONT}Gual STR_ABBREV_MAIL :{TINY_FONT}Post STR_ABBREV_OIL :{TINY_FONT}Ola STR_ABBREV_LIVESTOCK :{TINY_FONT}Sprèidh STR_ABBREV_GOODS :{TINY_FONT}Bath STR_ABBREV_GRAIN :{TINY_FONT}Gràn STR_ABBREV_WOOD :{TINY_FONT}Fiodh STR_ABBREV_IRON_ORE :{TINY_FONT}Iara STR_ABBREV_STEEL :{TINY_FONT}Stàil STR_ABBREV_VALUABLES :{TINY_FONT}Seilbh STR_ABBREV_COPPER_ORE :{TINY_FONT}Cop STR_ABBREV_MAIZE :{TINY_FONT}CrIn STR_ABBREV_FRUIT :{TINY_FONT}Meas STR_ABBREV_DIAMONDS :{TINY_FONT}Daoim STR_ABBREV_FOOD :{TINY_FONT}Biadh STR_ABBREV_PAPER :{TINY_FONT}Pàip STR_ABBREV_GOLD :{TINY_FONT}Òr STR_ABBREV_WATER :{TINY_FONT}Uisg STR_ABBREV_WHEAT :{TINY_FONT}Crui STR_ABBREV_RUBBER :{TINY_FONT}Rub STR_ABBREV_SUGAR :{TINY_FONT}Siùc STR_ABBREV_TOYS :{TINY_FONT}Dèid STR_ABBREV_SWEETS :{TINY_FONT}Mìls STR_ABBREV_COLA :{TINY_FONT}Cola STR_ABBREV_CANDYFLOSS :{TINY_FONT}Can STR_ABBREV_BUBBLES :{TINY_FONT}Buil STR_ABBREV_TOFFEE :{TINY_FONT}Tof STR_ABBREV_BATTERIES :{TINY_FONT}Bat STR_ABBREV_PLASTIC :{TINY_FONT}Plas STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}Deo STR_ABBREV_NONE :{TINY_FONT}Gun STR_ABBREV_ALL :{TINY_FONT}Uile # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} {P taistealach thaistealach taistealaich taistealach} STR_BAGS :{COMMA} {P bhaga bhaga bagaichean baga} STR_TONS :{COMMA} {P tunna thunna tunnaichean tunna} STR_LITERS :{COMMA} {P liotair liotair liotairean liotair} STR_ITEMS :{COMMA} {P nì nì nithean nì} STR_CRATES :{COMMA} {P chreat chreat creataichean creat} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Gorm STR_COLOUR_PALE_GREEN :Liath-uaine STR_COLOUR_PINK :Pinc STR_COLOUR_YELLOW :Buidhe STR_COLOUR_RED :Dearg STR_COLOUR_LIGHT_BLUE :Liath-ghorm STR_COLOUR_GREEN :Uaine STR_COLOUR_DARK_GREEN :Dorch-uaine STR_COLOUR_BLUE :Saidhean STR_COLOUR_CREAM :Bàn-dhearg STR_COLOUR_MAUVE :Liath-phurpur STR_COLOUR_PURPLE :Corca STR_COLOUR_ORANGE :Orains STR_COLOUR_BROWN :Donn STR_COLOUR_GREY :Liath STR_COLOUR_WHITE :Geal # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} {P tunna thunna tunnaichean tunna} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} {P liotair liotair liotairean liotair} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Sreang criathraige: STR_LIST_FILTER_OSKTITLE :{BLACK}Cuir a-steach sreang criathraige STR_LIST_FILTER_TOOLTIP :{BLACK}Cuir a-steach facal-luirg gus an liosta a chriathradh leis STR_TOOLTIP_SORT_ORDER :{BLACK}Tagh òrdugh an t-seòrsachaidh (a' teàrnadh/a' dìreadh) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Tagh cuspairean-deuchainn an t-seòrsachaidh STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Tagh cuspairean-deuchainn a' chriathraidh STR_BUTTON_SORT_BY :{BLACK}Seòrsaich a-rèir STR_BUTTON_LOCATION :{BLACK}Ionad STR_BUTTON_RENAME :{BLACK}Thoir ainm ùr air STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Dùin an uinneag STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tiotal na h-uinneige - slaod seo gus an uinneag a ghluasad STR_TOOLTIP_SHADE :{BLACK}Sgàil an uinneag - na seall ach am bàr-tiotail STR_TOOLTIP_DEBUG :{BLACK}Seall fiosrachadh dì-bhugaidh NewGRF STR_TOOLTIP_STICKY :{BLACK}Comharraich nach tèid an uinneag seo a dhùnadh leis an òrdugh “Dùin a h-uile uinneag" STR_TOOLTIP_RESIZE :{BLACK}Briog is slaod gus an uinneag seo ath-mheudachadh STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toglaidh meud mòr/beag na h-uinneige STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bàr sgrolaidh - sgrolaich suas/sìos air an liosta STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bàr sgrolaidh - sgrolaich gu deas/gu clì air an liosta STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Leag togalaichean agus msaa. air ceàrnag dhe thìr. Taghaidh Ctrl an roinn gu trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean # Query window STR_BUTTON_DEFAULT :{BLACK}Bunaiteach STR_BUTTON_CANCEL :{BLACK}Sguir dheth STR_BUTTON_OK :{BLACK}Ceart ma-thà # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Faide: {NUM} STR_MEASURE_AREA :{BLACK}Raon: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Faide: {NUM}{}Diofar dhe dh'àirde: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Raon: {NUM} x {NUM}{}Diofar dhe dh'àirde: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_NAME :{BLACK}Ainm STR_SORT_BY_CAPTION_DATE :{BLACK}Ceann-latha # These are used in dropdowns STR_SORT_BY_NAME :Ainm STR_SORT_BY_PRODUCTION :Toradh STR_SORT_BY_TYPE :Seòrsa STR_SORT_BY_TRANSPORTED :Air a ghiùlain STR_SORT_BY_NUMBER :Àireamh STR_SORT_BY_PROFIT_LAST_YEAR :Prothaid an-uiridh STR_SORT_BY_PROFIT_THIS_YEAR :Prothaid am bliadhna STR_SORT_BY_AGE :Aois STR_SORT_BY_RELIABILITY :Earbsachd STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Tomhas-lìonaidh slàn gach seòrsa dhe charago STR_SORT_BY_MAX_SPEED :Luaths as motha STR_SORT_BY_MODEL :Modail STR_SORT_BY_VALUE :Luach STR_SORT_BY_LENGTH :Faide STR_SORT_BY_LIFE_TIME :Beatha air fhàgail STR_SORT_BY_TIMETABLE_DELAY :Fadal clàir-ama STR_SORT_BY_FACILITY :Seòrsa stèisein STR_SORT_BY_WAITING :Luach carago a' feitheamh STR_SORT_BY_RATING_MAX :Rangachadh carago as motha STR_SORT_BY_RATING_MIN :Rangachadh carago as lugha STR_SORT_BY_ENGINE_ID :Aithnichear einnsein (seòrsachadh clasaigeach) STR_SORT_BY_COST :Cosgais STR_SORT_BY_POWER :Lùth STR_SORT_BY_TRACTIVE_EFFORT :Spàirn tàirnge STR_SORT_BY_INTRO_DATE :Ceann-latha tòiseachaidh STR_SORT_BY_RUNNING_COST :Cosgaisean ruith STR_SORT_BY_POWER_VS_RUNNING_COST :Lùth/Cosgaisean ruith STR_SORT_BY_CARGO_CAPACITY :Tomhas-lìonaidh carago STR_SORT_BY_RANGE :Dlùths # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Cuir an geama na stad / a' dol STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Cuir an geama air adhart gu luath STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Roghainnean STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Sàbhail an geama, fàg an geama, fàg an-seo STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Seall mapa, port-seallaidh a bharrachd no liosta dhe shanasan STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Seall eòlaire nam bailtean STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Seall tarrailean STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Seall liosta stèiseanan na companaidh STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Seall fiosrachadh maoin na companaidh STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Seall fiosrachadh coitcheann na companaidh STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Seall grafaichean STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Seall clàr co-bhann nan companaidh STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Maoinich togail aig gnìomhachas ùr no seall liosta dhen a h-uile gnìomhachas STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Seall liosta dhe thrèanaichean na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Seall liosta dhe charbadan-rathaid na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Seall liosta dhe longan na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Seall liosta dhe charbadan-adhair na companaidh. Toglaidh Ctrl+briogadh fosgladh liosta buidhinn/carbaid STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Sùm an sealladh a-steach STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Sùm an sealladh a-mach STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tog slighe rathaid-iarainn STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Tog rathaidean STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Tog port STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Tog port-adhair STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Fosgail am bàr-innealan cruth-tìre gus an tìr àrdachadh/ìsleachadh, craobhan a chur agus msaa. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Seall uinneag fhuaime/chiùil STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Seall am brath/aithris naidheachd mu dheireadh, seall roghainnean nam brath STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Fiosrachadh mun raon tìre, consoil, dì-bhugadh sgriobt, glacaidhean-sgrìn, mu dheidhinn OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Suids bàraichean-innealan # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Sàbhail cnàmh-sgeul, luchdaich cnàmh-sgeul, fàg deasaiche nan cnàmh-sgeul, fàg an-seo STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Deasaiche nan cnàmh-sgeul STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Gluais an latha tòiseachaidh air ais 1 bhliadhna STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Gluais an latha tòiseachaidh air adhart 1 bhliadhna STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Dèan briogadh gus am bliadhna tòiseachaidh a chur a-steach STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Seall mapa, eòlaire nam bailtean STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Gin cruth-tìre STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Gin bailtean STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Gin gnìomhachasan STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Tog rathaidean STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Cuir craobhan. Toglaidh Shift tuairmse cosgaisean/togail STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Cuir sanas ann STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Cuir nì ann. Toglaidh Shift tuairmse cosgaisean/togail ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Sàbhail an cnàmh-sgeul STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Luchdaich cnàmh-sgeul STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Sàbhail am mapa-àirde STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Luchdaich mapa-àirde STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Fàg deasaiche nan cnàmh-sgeul STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Fàg an-seo ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Roghainnean a' gheama STR_SETTINGS_MENU_CONFIG_SETTINGS :Roghainnean adhartach STR_SETTINGS_MENU_SCRIPT_SETTINGS :Roghainnean IF/sgriobt geama STR_SETTINGS_MENU_NEWGRF_SETTINGS :Roghainnean NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Roghainnean trìd-shoilleireachd STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Ainmean nam bailtean gan sealltainn STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Ainmean nan stèiseanan gan sealltainn STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Ainmean nam puingean-turais gan sealltainn STR_SETTINGS_MENU_SIGNS_DISPLAYED :Sanasan gan sealltainn STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Sanasan is ainmean nam farpaisichean gan sealltainn STR_SETTINGS_MENU_FULL_ANIMATION :Beòthachadh slàn STR_SETTINGS_MENU_FULL_DETAIL :Mion-shealladh slàn STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Togalaichean trìd-sholleir STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Sanasan trìd-sholleir ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Sàbhail an geama STR_FILE_MENU_LOAD_GAME :Luchdaich geama STR_FILE_MENU_QUIT_GAME :Fàg an geama STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Fàg an-seo ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Mapa an t-saoghail STR_MAP_MENU_EXTRA_VIEW_PORT :Port-seallaidh a bharrachd STR_MAP_MENU_SIGN_LIST :Liosta nan sanas ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Eòlaire nam bailtean STR_TOWN_MENU_FOUND_TOWN :Baile air a lorg ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Tarrailean STR_SUBSIDIES_MENU_GOAL :Amasan an-dràsta ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf air prothaid-obrachaidh STR_GRAPH_MENU_INCOME_GRAPH :Graf air teachd a-steach STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf air carago air a lìbhrigeadh STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf air eachdraidh dèanadais STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf air luach na companaidh STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Reataichean pàighidh carago ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Clàr co-bhann nan companaidh STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Mion-rangachadh dèanadais STR_GRAPH_MENU_HIGHSCORE :Liosta nan sgòran àrda ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Eòlaire nan gnìomhachas STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Sreathan nan gnìomhachas STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Maoinich gnìomhachas ùr ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Togail rathaid-iarainn STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Togail rathaid-iarainn dealain STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Togail rathaid-iarainn aona-rèile STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Togail rathaid-iarainn magnaiteach ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Togail rathaidean STR_ROAD_MENU_TRAM_CONSTRUCTION :Togail slighe-trama ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Togail slighe-uisge ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Togail puirt-adhair ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Cruth-tìre STR_LANDSCAPING_MENU_PLANT_TREES :Cuir craobhan STR_LANDSCAPING_MENU_PLACE_SIGN :Cuir sanas ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Fuaim/ceòl ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Am brath/aithris naidheachd mu dheireadh STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Eachdraidh nam brath ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Fiosrachadh raon tìre STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Toglaich a' chonsoil STR_ABOUT_MENU_AI_DEBUG :Dì-bhugaich IF/sgriobt geama STR_ABOUT_MENU_SCREENSHOT :Glacadh-sgrìn STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Glacadh-sgrìn le sùmadh a-steach as motha STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Glacadh-sgrìn le sùmadh a-steach bunaiteach STR_ABOUT_MENU_GIANT_SCREENSHOT :Glacadh-sgrìn leis a' mhapa shlàn STR_ABOUT_MENU_ABOUT_OPENTTD :Mu dheidhinn “OpenTTD" STR_ABOUT_MENU_SPRITE_ALIGNER :Co-thaobhaichear nan sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toglaich bogsaichean-iadhaidh STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toglaich dathadh nam blocaichean salach ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1ad STR_ORDINAL_NUMBER_2ND :2na STR_ORDINAL_NUMBER_3RD :3a STR_ORDINAL_NUMBER_4TH :4mh STR_ORDINAL_NUMBER_5TH :5mh STR_ORDINAL_NUMBER_6TH :6mh STR_ORDINAL_NUMBER_7TH :7mh STR_ORDINAL_NUMBER_8TH :8mh STR_ORDINAL_NUMBER_9TH :9mh STR_ORDINAL_NUMBER_10TH :10mh STR_ORDINAL_NUMBER_11TH :11ad STR_ORDINAL_NUMBER_12TH :12na STR_ORDINAL_NUMBER_13TH :13s STR_ORDINAL_NUMBER_14TH :14mh STR_ORDINAL_NUMBER_15TH :15mh STR_ORDINAL_NUMBER_16TH :16mh STR_ORDINAL_NUMBER_17TH :17mh STR_ORDINAL_NUMBER_18TH :18mh STR_ORDINAL_NUMBER_19TH :19mh STR_ORDINAL_NUMBER_20TH :20mh STR_ORDINAL_NUMBER_21ST :21ad STR_ORDINAL_NUMBER_22ND :22na STR_ORDINAL_NUMBER_23RD :23s STR_ORDINAL_NUMBER_24TH :24mh STR_ORDINAL_NUMBER_25TH :25mh STR_ORDINAL_NUMBER_26TH :26mh STR_ORDINAL_NUMBER_27TH :27mh STR_ORDINAL_NUMBER_28TH :28mh STR_ORDINAL_NUMBER_29TH :29mh STR_ORDINAL_NUMBER_30TH :30mh STR_ORDINAL_NUMBER_31ST :31mh ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Faoi STR_MONTH_ABBREV_FEB :Gear STR_MONTH_ABBREV_MAR :Màrt STR_MONTH_ABBREV_APR :Gibl STR_MONTH_ABBREV_MAY :Cèit STR_MONTH_ABBREV_JUN :Ògmh STR_MONTH_ABBREV_JUL :Iuch STR_MONTH_ABBREV_AUG :Lùna STR_MONTH_ABBREV_SEP :Sult STR_MONTH_ABBREV_OCT :Dàmh STR_MONTH_ABBREV_NOV :Samh STR_MONTH_ABBREV_DEC :Dùbh STR_MONTH_JAN :Faoilleach STR_MONTH_JAN.dat :Fhaoilleach STR_MONTH_FEB :Gearran STR_MONTH_FEB.dat :Ghearran STR_MONTH_MAR :Màrt STR_MONTH_MAR.dat :Mhàrt STR_MONTH_APR :Giblean STR_MONTH_APR.dat :Ghiblean STR_MONTH_MAY :Cèitean STR_MONTH_MAY.dat :Chèitean STR_MONTH_JUN :Ògmhios STR_MONTH_JUN.dat :Ògmhios STR_MONTH_JUL :Iuchar STR_MONTH_JUL.dat :Iuchar STR_MONTH_AUG :Lùnastal STR_MONTH_AUG.dat :Lùnastal STR_MONTH_SEP :Sultain STR_MONTH_SEP.dat :t-Sultain STR_MONTH_OCT :Dàmhair STR_MONTH_OCT.dat :Dàmhair STR_MONTH_NOV :Samhain STR_MONTH_DEC :Dùbhlachd STR_MONTH_DEC.dat :Dùbhlachd ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Iuchair STR_GRAPH_KEY_TOOLTIP :{BLACK}Seall iuchair nan graf STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graf air prothaid-obrachaidh STR_GRAPH_INCOME_CAPTION :{WHITE}Graf air teachd a-steach STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Aonadan de charago air an lìbhrigeadh STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Rangachaidhean dèanadais na companaidh (rangachadh as motha=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Luachan na companaidh STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Reataichean pàighidh carago STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Làithean a' siubhal STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Pàigheadh airson lìbhrigeadh dhe 10 aonadan (no 10,000 liotair) dhe charago le astar dhe 20 ceàrnag STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Cuir a h-uile an comas STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Cuir a h-uile à comas STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Seall a h-uile carago air a' ghraf air reataichean pàighidh carago STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Na seall carago sam bith air a' ghraf air reataichean pàighidh carago STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toglaich graf air seòrsa dhe charago air/dheth STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Seall mion-rangachaidhean dèanadais # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Iuchair dha ghrafaichean companaidh STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Dèan briogadh an-seo gus innteart na companaidh air a' ghraf a thogladh air/dheth # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Clàr co-bhonn nan companaidh STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} “{STRING}" STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Innleadair STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Stiùiriche trafaige STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Co-òrdanaiche giùlain STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Marasgal nan slighean STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Stiùiriche STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Àrd-oifigear STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Cathraiche STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Ceann-suidhe STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Taidhcùn # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Rangachadh dèanadais mionaideach STR_PERFORMANCE_DETAIL_KEY :{BLACK}Mion-fhiosrachadh STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Seall mion-fhiosrachadh mun chompanaidh seo ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Carbadan: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stèiseanan: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Prothaid as lugha: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Teachd a-steach as lugha: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Teachd a-steach as motha: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Air a lìbhrigeadh: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Carago: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Airgead: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Iasad: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Iomlan: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}An àireamh dhe charbadan a rinn prothaid an-uiridh. Gabhaidh seo a-steach carbadan-rathaid, trèanaichean, longan is carbadan-adhair STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}An àireamh dhe stèiseanan a chaidh a fhrithealadh o chionn ghoirid. théid stèiseanan rèile, stèiseanan bus, stadan bus, puirt-adhair is mar sin air adhart a chunntadh fa leth fiù ’s ma bhuineas iad ris an aon stèisean STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Am prothaid aig a' charbad leis an teachd a-steach as lugha (cha tèid sùil a thoirt ach air carbadan a tha co-dhiù dà bhliadhna a dh'aois) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}An t-airgead a chaidh a bhuannachd san ràith leis a' phrothaid as lugha am measg an dusan ràith mu dheireadh STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}An t-airgead a chaidh a bhuannachd san ràidh leis a' phrothaid as motha am measg an dusan ràith mu dheireadh STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Na h-aonadan dhe charago air an lìbhrigeadh sna ceithir ràithean mu dheireadh STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}An àireamh dhe sheòrsaichean carago a chaidh a lìbhrigeadh san ràith mu dheireadh STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}An t-airgead a tha aig a' chompanaidh seo sa bhanca STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}An t-airgead a tha aig a' chompanaidh mar iosad STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Na puingean iomlan a-mach às na puingean comasach # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}A h-uile STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Seann nòs STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nòs ùr STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Gnàthaichte 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Gnàthaichte 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Àirde a' chiùil STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Àirde nan èifeachdan fuaime STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}As lugha STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}As motha STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}“{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Traca STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Tiotal STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Air thuaiream STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Prògram STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Leum dhan traca roimhe san taghadh STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Leum dhan ath-thraca san taghadh STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stad cluiche a' chiùil STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Tòisich cluiche a' chiùil STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Slaod na sleamhnachain gus àirde a' chiùil is nan èifeachdan fuaime a shuidheachadh STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Tagh am prògram “Na h-uile traca" STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Tagh am prògram “Ceòl seann nòis" STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Tagh am prògram “Ceòl nòis ùir" STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Tagh am prògram “Ceòl le stoidhle Ezy Street" STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Tagh am prògram “Gnàthaichte 1" (a rinn thu fhèin) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Tagh am prògram “Gnàthaichte 2" (a rinn thu fhèin) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toglaich prògram air thuaiream air/dheth STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Seall uinneag taghadh tracaichean ciùil STR_ERROR_NO_SONGS :{WHITE}Chaidh seata dhe cheòl às aonais òrain a thaghadh. Cha tèid òran sam bith a chluiche # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Taghadh prògram ciùil STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} “{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Clàr-amais nan traca STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Prògram - “{STRING}" STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Falamhaich STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Falamhaich am prògram làithreach (Gnàthaichte1 no Gnàthaichte2 a-mhàin) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Dèan briogadh air traca ciùil gus a chur ris a' phrògram làithreach (Gnàthaichte1 no Gnàthaichte2 a-mhàin) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Dèan briogadh air traca ciùil gus a thoirt air falbh bhon phrògram làithreach (Gnàthaichte1 no Gnàthaichte2 a-mhàin) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Na companaidhean as fhearr a ràinig {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Clàr co-bhonn nan companaidh ann an {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Neach-gnothaich STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Neach-tionnsgainn STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Neach-gnìomhachais STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Neach-calpachais STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Baran STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Taidhcùn na linne STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}“{STRING}" ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Bhuannaich {COMPANY} an rang “{STRING}"! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Bhuannaich {PRESIDENT_NAME} aig {COMPANY} an rang “{STRING}"! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Loidhnichean-àirde STR_SMALLMAP_TYPE_VEHICLES :Carbadan STR_SMALLMAP_TYPE_INDUSTRIES :Gnìomhachasan STR_SMALLMAP_TYPE_ROUTES :Slighean-malairt STR_SMALLMAP_TYPE_VEGETATION :Lusan STR_SMALLMAP_TYPE_OWNERS :Seilbheadairean STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Seall loidhnichean-àirde a' chruth-tìre air a' mhapa STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Seall carbadan air a' mhapa STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Seall gnìomhachasan air a' mhapa STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Seall slighean-malairt air a' mhapa STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Seall lusan air a' mhapa STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Seall cò leis an tìr air a' mhapa STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Dèan briogadh air seòrsa gnìomhachais gus toglachadh an tèid a shealltainn. Cuiridh Ctrl+briogadh a h-uile seòrsa ach am fear a thagh thu à comas. Dèan Ctrl+briogadh air a-rithist gus a h-uile seòrsa gnìomhachais a chur an comas STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Dèan briogadh air companaidh gus toglachadh an tèid an tìr a tha leis a shealltainn. Cuiridh Ctrl+briogadh a h-uile companaidh ach am fear a thagh thu à comas. Dèan Ctrl+briogadh air a-rithist gus a h-uile companaidh a chur an comas STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Rathaidean STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Rathaidean-iarainn STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stèiseanan/Puirt-adhair/Puirt STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Togalaichean/Gnìomhachasan STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Carbadan STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trèanaichean STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Carbadan-rathaid STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Longan STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Carbadan-adhair STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Slighean-malairt STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Coille STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Stèisean rèile STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{G=m}{TINY_FONT}{BLACK}Ionad-luchdaidh nan làraidh STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY.nom :{G=m}{TINY_FONT}{BLACK}Ionad-luchdaidh nan làraidh STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY.gen :{G=m}{TINY_FONT}{BLACK}Ionaid-luchdaidh nan làraidh STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY.dat :{G=m}{TINY_FONT}{BLACK}Ionad-luchdaidh nan làraidh STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Stèisean bus STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Port-adhair/port-heileacoptair STR_SMALLMAP_LEGENDA_DOCK :{G=m}{TINY_FONT}{BLACK}Port STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Tìr gharbh STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Tìr fheurach STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Tìr lom STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Achaidhean STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Craobhan STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Creagan STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Uisge STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Gun seilbheadair STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Bailtean STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Gnìomhachasan STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Fàsach STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sneachda STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Toglaich ainmean bhailtean air/dheth air a' mhapa STR_SMALLMAP_CENTER :{BLACK}Meadhanaich am meanbh-mhapa air an ionad làithreach STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Cuir a h-uile à comas STR_SMALLMAP_ENABLE_ALL :{BLACK}Cuir a h-uile an comas STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Seall an àirde STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Na seall gnìomhachasan air a' mhapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Seall a h-uile gnìomhachas air a' mhapa STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Toglaich sealladh a' mhapa-àirde STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Na seall seilbh nan companaidh air a' mhapa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Seall a h-uile sealbh nan companaidh air a' mhapa # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Seall am brath no aithisg naidheachd mu dheireadh STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * NA STAD * * STR_STATUSBAR_AUTOSAVE :{RED}FÈIN-SHÀBHALADH STR_STATUSBAR_SAVING_GAME :{RED}* * A' SÀBHALADH GEAMA * * # News message history STR_MESSAGE_HISTORY :{WHITE}Eachdraidh nam brath STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Liosta nam brath-naidheachd o chionn ghoirid STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Brath STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad trèan {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad bhus {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad làraidh {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad trama taistealaich {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad trama frachd {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad long {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Hòro-gheallaidh nan saoranach . . .{}Ràinig a' chiad charbad-adhair {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tubaist trèan!{}Chaochail {COMMA} san teine an dèidh co-bhualaidh STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Tubaist rathaid!{}Chaochail an draibhear san teine an dèidh co-bhualaidh ri trèan STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Tubaist rathaid!{}Chaochail {COMMA} san teine an dèidh co-bhualaidh ri trèan STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Tubaist carbaid-adhair!{}Chaochail {COMMA} san teine aig {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Tubaist carbaid-adhair!{}Dh'fhalbh an connadh air carbad-adhair, chaochail {COMMA} san teine STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Dunaidh zeppelin aig {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Chaidh carbad-rathaid a mhilleadh le co-bhualadh ri 'UFO'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Sprèidh fìneadair-ola faisg air {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Chaidh factaraidh a mhilleadh gu amharasach faisg air {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' a' laighe faisg air {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Dh'adhbharaich tuiteam mèinne guail milleadh mòr faisg air {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Tuiltean!{}Co-dhiù {COMMA} air chall, thathar an dùil gun do chaochail iad an dèidh tuil mòire! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Companaidh ghiùlain ann an staing! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Thèid {STRING} a reic no a bhriseadh mus tig am feabhas air a dhèanadas a dh'aithghearr! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Co-aontachadh chompanaidhean giùlain! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}Chaidh {STRING} a reic gu {STRING} airson {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Briste! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Chaidh {STRING} a dhùnadh leis na iasadaichean is chaidh a h-uile sealbh a reic! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Companaidh ghiùlain ùr air a chur air bhog! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Thòisich {STRING} a' togail faisg air {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Chuir {1:STRING} {0:STRING} foidhe fhèin! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Stiùiriche) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Sponsairich {STRING} togail baile ùir {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} ùr ga {G 0 thogail togail} faisg air {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} ùr ga {G 0 chur cur} faisg air {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}Tha {STRING} gu bhith dùnadh! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Tha duilgheadasan solair ag adhbharachadh gun do dh'ainmich {STRING} gun tèid a {G 0 dùnadh dhùnadh} a dh'aithghearr! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Tha dìth chraobhan faisg {G 0 air oirre} ag adhbharachadh gun do dh'ainmich {STRING} gun tèid a {G 0 dùnadh dhùnadh} a dh'aithghearr! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Aonadh Airgid na h-Eòrpa!{}{}Tha an t-Eòro ga chur air bhog mar an t-aon airgeadra airson tar-ghnìomhan cumanta san dùthaich agad! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Crìonadh eaconamaidh an t-saoghail!{}{}tha eagal air na h-eòlaichean ionmhais gu bheil dubh staing romhainn le crìonadh an eaconamaidh! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Crìonadh an eaconamaidh seachad!{}{}Tha meudachadh na malairt a' cur earbsa sna gnìomhachasan le neartachadh an eaconamaidh! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}Tha {INDUSTRY} a' meudachadh a {G 0 thoradh toradh}! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Chaidh stòras guail ùr a lorg aig {INDUSTRY}!{}Thathar an dùil gun dùblaich an toradh! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Chaidh stòras ola ùr a lorg aig {INDUSTRY}!{}Thathar an dùil gun dùblaich an toradh! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Thathar an dùil gun dùblaich an toradh le dòighean tuathanachais leasaichte aig {INDUSTRY}! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Tha dèanamh {STRING} aig {INDUSTRY} air meudachadh le {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Tha an toradh aig {INDUSTRY} a' lùghdachadh le 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Dh'adhbharaich ionnsaigh bhiastagan milleadh uabhasach air {INDUSTRY}!{}Tha an toradh air lùghdachadh le 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Tha dèanamh {STRING} aig {INDUSTRY} air lùghdachadh le {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh san trèan-lann STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa gharaids STR_NEWS_SHIP_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa chala STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Tha {VEHICLE} a' feitheamh sa hangar # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Chan eil òrduighean gu leòr air a' chlàr-ama aig {VEHICLE} STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Tha òrdugh falamh aig {VEHICLE} STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Tha òrdugh dùbailte aig {VEHICLE} STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Tha stèisean mì-dhligheach sna h-òrduighean aig {VEHICLE} # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Tha {VEHICLE} a' fàs aosta STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Tha {VEHICLE} a' fàs glè aosta STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}Tha {VEHICLE} a' fàs glè aosta is feumaidh tu fear ùr a chur na àite cho luath ’s a ghabhas STR_NEWS_TRAIN_IS_STUCK :{WHITE}Chan urrainn dha {VEHICLE} slighe air adhart a lorg STR_NEWS_VEHICLE_IS_LOST :{WHITE}Chaidh {VEHICLE} air chall STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Rinn {VEHICLE} prothaid dhe {CURRENCY_LONG} an-uiridh STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}Chan urrainn dha {VEHICLE} an t-ath cheann-uidhe a ruigsinn oir tha e ro fhad air falbh STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Stad {VEHICLE} oir dh'fhàillig le mùthadh òrdaichte STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Dh'fhàillig leis an fhèin-nuadhachadh air {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Tha {STRING} ùr ri fhaighinn a-nis! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Tha {STRING} ùr ri fhaighinn a-nis! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}Cha ghabh {STATION} ri {STRING} tuilleadh STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Cha ghabh {STATION} ri {STRING} no {STRING} tuilleadh STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}Gabhaidh {STATION} ri {STRING} a-nis STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}Gabhaidh {STATION} ri {STRING} is {STRING} a-nis STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Dh'fhalbh an ùine air tairgse tarrail:{}{}Chan fhaighear tarrail airson {STRING} a thoirt bho {STRING} gu {STRING} a-nis STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Chaidh tarrail a tharraing:{}{}Chan fhaigh seirbheis {STRING} bho {STRING} gu {STRING} tarrail a-nis STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Chaidh tarrail seirbheise a thairgsinn:{}{}Gheibh a' chiad seirbheis {STRING} bho {STRING} gu {STRING} tarrail fad bliadhna bhon ùghdarras ionadail! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} 50% a bharrachd fad bliadhna! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} reataichean dà-fhillte fad bliadhna! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} reataichean trì-fillte fad bliadhna! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Bhuannaich {STRING} tarrail seirbheise!{}{}Pàighidh seirbheis {STRING} bho {STRING} gu {STRING} reataichean ceithir-fillte fad bliadhna! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Bùrach trafaig ann am baile {TOWN}!{}{}Bheir prògram leasachadh rathaidean maoinichte le {STRING} dòlam dha dhraibhearan fad 6 mìosan! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Aon-mhargadh giùlain! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Chuir an t-ùghdarras ionadail aig {TOWN} a làimh ri cùmhnant le {STRING} air còraichean giùlain às-dùnach fad bliadhna! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Port-seallaidh {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Cuir lethbhreac sa phort-seallaidh seo STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Cuir lethbhreac dhen ionad air a' phrìomh shealladh sa phort-seallaidh seo STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Cuir ann bhon phort-seallaidh seo STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Cuir ionad a' phuirt-seallaidh seo sa phrìomh shealladh # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Roghainnean a' gheama STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonadan airgeadra STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Tagh aonadan airgeadra ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Not Breatannach (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Dolar Aimeireaganach (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Eòro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Yen Seapanach (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Sgillin Ostaireach (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Franc Beilgeach (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Franc Eilbheiseach (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Seiceach (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Mark Gearmailteach (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Crùn Danmhairgeach (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spàinnteach (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Markka Fionnlannach (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franc Frangach (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Greugach (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Forint Ungaireach (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Krona Tìleach (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Lira Eadailteach (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Guilder Duitseach (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Krone Nirribheach (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Pòlainneach (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Leu Romàineach (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rùbal Ruiseach (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slòbhaineach (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Krona Suaineach (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turcach (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Koruna Slòbhacach (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Real Braisileach (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Krooni Eastoineach (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litas Liotuaineach (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Won Choirèa a Deas (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afraga a Deas (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Gnàthaichte... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Aonadan tomhais STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Tagh aonadan tomhais ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Impireil STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Meatrach STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI (Siostam eadar-nàiseanta) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Carbadan-rathaid STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Tagh taobh an rathaid air a dhràibheas na carbadan STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Draibheadh air an taobh chlì STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Draibheadh air an taobh deas STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Ainmean bhailtean STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Tagh stoidhle aig ainmean nam bailtean ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Beurla (Tùsail) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Frangach STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Gearmailteach STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Beurla (a bharrachd) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Aimeireaga Laidinneach STR_GAME_OPTIONS_TOWN_NAME_SILLY :Gòrach STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Suaineach STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Duitseach STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Fionnlannach STR_GAME_OPTIONS_TOWN_NAME_POLISH :Pòlannach STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slòbhacach STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Nirribheach STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungaireach STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Ostaireach STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romàineach STR_GAME_OPTIONS_TOWN_NAME_CZECH :Seiceach STR_GAME_OPTIONS_TOWN_NAME_SWISS :Eilbheiseach STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danmhairgeach STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turcach STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Eadailteach STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalanach ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Fèin-shàbhaladh STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tagh dè cho tric ’s a thèid an geama fèin-shàbhaladh STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dheth STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Gach mìos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Gach 3s mìos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Gach 6mh mìos STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Gach bliadhna STR_GAME_OPTIONS_LANGUAGE :{BLACK}Cànan STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Tagh cànan an eadar-aghaidh a chleachdas tu STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Làn-sgrìn STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Cuir cromag sa bhogsa seo gus OpenTTD a chluiche sa mhodh làn-sgrìn STR_GAME_OPTIONS_RESOLUTION :{BLACK}Dùmhlachd-bhreacaidh na sgrìn STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Tagh dùmhlachd-bhreacaidh na sgrìn a chleachdas tu STR_GAME_OPTIONS_RESOLUTION_OTHER :Gnàthaichte STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Fòrmat ghlacaidhean-sgrìn STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Tagh am fòrmat ghlacaidhean-sgrìn a chleachdas tu STR_GAME_OPTIONS_BASE_GRF :{BLACK}Seata grafaigeachd bunasach STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Tagh an seata grafaigeachd bunasach a chleachdas tu STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P fhaidhle fhaidhle faidhlichean faidhle} a dhìth/coirbte STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata ghrafaigeachd bhunasach STR_GAME_OPTIONS_BASE_SFX :{BLACK}Seata fhuaimean bunasach STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Tagh an seata fhuaimean bunasach a chleachdas tu STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata fhuaimean bhunasach STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Seata ciùil bunasach STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Tagh an seata ciùil bunasach a chleachdas tu STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P fhaidhle fhaidhle faidhlichean faidhle} coirbte STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata chiùil bhunasach STR_ERROR_FULLSCREEN_FAILED :{WHITE}Dh'fhàillig leis a' mhodh làn-sgrìn # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Airgeadra gnàthaichte STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Luach-iomlaid: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Lùghdaich meud an airgeadra agad airson not (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Meudaich meud an airgeadra agad airson not (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Suidhich luach-iomlaid an airgeadra agad airson not (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Sgaradair: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Suidhich sgaradair an airgeadra agad STR_CURRENCY_PREFIX :{LTBLUE}Ro-leasachan: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Suidhich sreang ro-leasachain an airgeadra agad STR_CURRENCY_SUFFIX :{LTBLUE}Iar-leasachan: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Suidhich sreang iar-leasachain an airgeadra agad STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Suids dhan Eòro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Suids dhan Eòro: {ORANGE}gun suids idir STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Suidhich am bliadhna a thèid suids a dhèanamh dhan Eòro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Dèan suids dhan Eòro nas tràithe STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Dèan suids dhan Eòro nas anmoiche STR_CURRENCY_PREVIEW :{LTBLUE}Ro-shealladh: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 not (£) san airgeadra agad STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Atharraich paramadair an airgeadra ghnàthaichte STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Àireamh as motha dhe dh'fharpaisichean: {ORANGE}{COMMA} STR_NONE :Chan eil gin STR_FUNDING_ONLY :Le maoineachadh a-mhàin STR_MINIMAL :As lugha STR_NUM_VERY_LOW :Gann STR_NUM_LOW :Beagan dhiubh STR_NUM_NORMAL :Àbhaisteach STR_NUM_HIGH :Mòran dhiubh STR_NUM_CUSTOM :Gnàthaichte STR_NUM_CUSTOM_NUMBER :Gnàthaichte ({NUM}) STR_VARIETY_NONE :Chan eil gin STR_VARIETY_VERY_LOW :Glè ìseal STR_VARIETY_LOW :Ìseal STR_VARIETY_MEDIUM :Meadhanach STR_VARIETY_HIGH :Àrd STR_VARIETY_VERY_HIGH :Glè àrd STR_AI_SPEED_VERY_SLOW :Glè shlaodach STR_AI_SPEED_SLOW :Slaodach STR_AI_SPEED_MEDIUM :Meadhanach STR_AI_SPEED_FAST :Luath STR_AI_SPEED_VERY_FAST :Glè luath STR_SEA_LEVEL_VERY_LOW :Glè ìseal STR_SEA_LEVEL_LOW :Ìseal STR_SEA_LEVEL_MEDIUM :Meadhanach STR_SEA_LEVEL_HIGH :Àrd STR_SEA_LEVEL_CUSTOM :Gnàthaichte STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Gnàthaichte ({NUM}%) STR_RIVERS_NONE :Gun abhainn sam bith STR_RIVERS_FEW :Beagan dhiubh STR_RIVERS_MODERATE :Meadhanach STR_RIVERS_LOT :Mòran dhiubh STR_DISASTER_NONE :Cha tachair seo idir STR_DISASTER_REDUCED :Ainneamh STR_DISASTER_NORMAL :Àbhaisteach STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Glè rèidh STR_TERRAIN_TYPE_FLAT :Rèidh STR_TERRAIN_TYPE_HILLY :Cnuic STR_TERRAIN_TYPE_MOUNTAINOUS :Beanntan STR_CITY_APPROVAL_PERMISSIVE :Coibhneil STR_CITY_APPROVAL_TOLERANT :Ceadachail STR_CITY_APPROVAL_HOSTILE :Nàimhdeil STR_WARNING_NO_SUITABLE_AI :{WHITE}Chan eil IF freagarrach ri fhaighinn...{}’S urrainn dhut roghainn dhe IFan a luchdadh a-nuas leis an t-siostam “Susbaint air loidhne" # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Roghainnean adhartach STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Sreang criathraige: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Leudaich a h-uile STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Co-theannaich a h-uile STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(chan eil mìneachadh ri làimh) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Luach bunaiteach: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Seòrsa an roghainn: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Roghainnean a' chliant (cha tèid an sàbhaladh le geamannan; buaidh air a h-uile geama) STR_CONFIG_SETTING_TYPE_GAME_MENU :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' gheama seo) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' chompanaidh seo) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Seall: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Cuingichidh seo an liosta gu h-ìosal gus nach tèid a shealltainn ach roghainnean air an atharrachadh STR_CONFIG_SETTING_RESTRICT_BASIC :Roghainnean bunasach STR_CONFIG_SETTING_RESTRICT_ADVANCED :Roghainnean adhartach STR_CONFIG_SETTING_RESTRICT_ALL :Roghainnean an eòlaiche / na h-uile roghainn STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Roghainnean le luach diofraichte bhon luach bhunaiteach STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Roghainnean le luach diofraichte bho luach nan geamannan ùra agad STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Cuingichidh seo an liosta gu h-ìosal gus nach tèid a shealltainn ach seòrsaichean sònraichte dhe roghainn STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Na h-uile seòrsa roghainn STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Roghainnean a' chliant (cha tèid an sàbhaladh le geamannan; buaidh air a h-uile geama) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Roghainnean a' gheama (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' gheama seo) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air geamannan ùra) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Roghainnean na companaidh (thèid an sàbhaladh leis a' gheama; gun bhuaidh ach air a' chompanaidh seo) STR_CONFIG_SETTING_OFF :Dheth STR_CONFIG_SETTING_ON :Air STR_CONFIG_SETTING_DISABLED :À comas STR_CONFIG_SETTING_COMPANIES_OFF :Na seall idir STR_CONFIG_SETTING_COMPANIES_OWN :Aig a' chompanaidh agad fhèin STR_CONFIG_SETTING_COMPANIES_ALL :Aig na h-uile companaidh STR_CONFIG_SETTING_NONE :Chan eil gin STR_CONFIG_SETTING_ORIGINAL :Tùsail STR_CONFIG_SETTING_REALISTIC :Fìor-riochdail STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Ris an taobh chlì STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sa mheadhan STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Ris an taobh deas STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Iasad tòiseachaidh as motha: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :An t-airgead as motha as urrainn dha chompanaidh fhaighinn mar iasad (a' fàgail an atmhorachd dhan darna taobh) STR_CONFIG_SETTING_INTEREST_RATE :Luach-rèidh: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Luach-rèidh iasaid; stiùiridh seo an atmhorachd cuideachd ma tha e an comas STR_CONFIG_SETTING_RUNNING_COSTS :Cosgaisean ruith: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Suidhich ìre nan cosgaisean ruith is obrach-càraidh aig carbadan is a' bhun-structar STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Luaths na togail: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Cuingich meud nan gnìomhan togail aig na IFan STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Briseadh charbadan: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Stiùirich dè cho tric ’s a bhios carbadan briste nach d' fhuair an obair-chàraidh iomchaidh STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Iomadaichear nan tarrail: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Suidhich na thèid a phàigheadh airson ceanglaichean le tarrail STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cosgaisean togail: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Suidhich ìre nan cosgaisean togail is ceannachd STR_CONFIG_SETTING_RECESSIONS :Crìonaidhean eaconamaidh: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ma tha seo air, faodaidh crìonadh eaconamaidh tachairt gach beagan bhliadhnaichean. Rè crìonaidh eaconamaidh, tha a h-uile toradh mòran nas ìsle (tillidh e dhan ìre roimhe nuair a bhios an crìonadh eaconamaidh seachad) STR_CONFIG_SETTING_TRAIN_REVERSING :Bac gun till trèanaichean ann an stèiseanan: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ma tha seo air, cha tionndaidh trèanaichean an comhair mura h-eil iad ann an stèisean ceann-rèile, fiù ’s nan robh slighe nas giorra dhan ath cheann-uidhe ann le tionndadh STR_CONFIG_SETTING_DISASTERS :Dunaidh: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toglaich dunaidh a dh'fhaodas carbadan no am bun-structar a bhacadh no a mhilleadh STR_CONFIG_SETTING_CITY_APPROVAL :Beachdan comhairle a' bhaile air leasachadh raointean: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Tagh am meud dhe dh'fhuaim is milleadh na h-àrainneachd le companaidhean a tha a dhìth mus bi buaidh air luachadh a' bhaile is barrachd togail san sgìre STR_CONFIG_SETTING_BUILDONSLOPES :Ceadaich gun tèid togail air slèibhtean is an oirthir: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ma tha seo air, faodar slighean is stèiseanan a thogail air a' mhòr chuid dhe shlèibhtean. Ma tha seo dheth, chan fhaodar an togail ach air slèibhtean leis an aon chomhair ’s a tha aig an t-slighe is aig nach eil feum air bonn togalaich STR_CONFIG_SETTING_AUTOSLOPE :Ceadaich atharrachadh crutha-tìre fo thogalaichean, slighean agus msaa. (fèin-sliabh): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Ceadaich atharrachadh crutha-tìre fo thogalaichean is slighean gun a bhith gan toirt air falbh STR_CONFIG_SETTING_CATCHMENT :Ceadaich raointean tionail le meud a tha nas fhìor-riochdail: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Bi meud eadar-dhealaichte aig raointean tionail a-rèir seòrsa an stèisein no puirt-adhair STR_CONFIG_SETTING_EXTRADYNAMITE :Faodar barrachd rathaidean, dhrochaidean is thunailean le baile a thoirt air falbh: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Bidh e nas fhasa bun-structar is togalaichean a tha le baile a thoirt air falbh STR_CONFIG_SETTING_TRAIN_LENGTH :An fhaide as motha aig trèanaichean: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Suidhich dè cho fad ’s a bhios trèanaichean air a char as motha STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} {P 0 leac leac leacan leac} STR_CONFIG_SETTING_SMOKE_AMOUNT :Meud dhe smùid is sradan nan carbadan: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Suidhich an uiread dhe smùid no sradagan nan carbadan STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modail luathachaidh nan trèanaichean: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Tagh am modail fiosaigeachd airson luathachadh nan trèanaichean. Cuiridh am modail “Tùsail” an t-aon pheanas air a h-uile carbad air sliabh. Cuiridh am modail “Fìor-riochdail” peanas air slèibhtean is lùban a-rèir bhuadhan diofraichte aca a leithid faide is spàirn tarraing STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modail luathachaidh nan carbadan-rathaid: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Tagh am modail fiosaigeachd airson luathachadh nan carbadan-rathaid. Cuiridh am modail “Tùsail” an t-aon pheanas air a h-uile carbad air sliabh. Cuiridh am modail “Fìor-riochdail” peanas air slèibhtean is lùban a-rèir bhuadhan diofraichte aca, mar eisimpleir “spàirn tarraing” STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Caisead nan slèibhtean airson trèanaichean: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Caisead aig na leacan slèibhe dha thrèanaichean. Nì luachan nas àirde an dìreadh nas dorra STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Caisead nan slèibhtean airson carbadan-rathaid: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Caisead aig na leacan slèibhe dha charbad-rathaid. Nì luachan nas àirde an dìreadh nas dorra STR_CONFIG_SETTING_FORBID_90_DEG :Bac trèanaichean is longan bho thionndadh 90°: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Tachraidh tionndadh 90 nuair a bhios slighe còmhnard is inghearach dìreach an dèidh càch a chèile, mar sin bhiodh trèan a' tionndadh le 90 ceum nuair a ruigeas i oir na leacaige an àite nan tionndaidhean àbhaisteach le 45 ceum aig co-cheanglaidhean shlighean eile. Tha seo fìor airson rèideas tionndaidh nan longan cuideachd STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Ceadaich aonadh aig stèiseanan nach eil dìreach ri taobh càch a chèile: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Ceadaich gun tèid pàirtean a chur ri stèisean nach eil dìreach ri taobh nam pàirtean a tha ann mu thràth. Feumaidh tu Ctrl+Briogadh a chleachdadh nuair a chuireas tu na pàirtean ùra ann STR_CONFIG_SETTING_IMPROVEDLOAD :Cleachd algairim luchdaidh leasaichte: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ma tha seo air, thèid carbadan a bhios a' feitheamh aig stèisean a luchdadh an dèidh càch a chèile. Cha tòisich luchdadh an ath charbaid nuair a bhios carago gu leòr ann gus a' chiad charbad a lìonadh STR_CONFIG_SETTING_GRADUAL_LOADING :Luchdaich carbadan beag air bheag: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Luchdaich carbadan beag air bheag is ùine an luchdaidh a' crochadh air seòrsa a' charbaid an àite a bhith a' luchdadh a h-uile rud aig an aon àm le ùine luchdaidh shuidhichte a tha a' crochadh air seòrsa a' charago a-mhàin STR_CONFIG_SETTING_INFLATION :Atmhorachd: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Cuir atmhorachd an comas san eaconamaidh is bidh cosgaisean a' dìreadh beagan nas luaithe na pàighidhean STR_CONFIG_SETTING_SELECTGOODS :Na lìbhrig carago dha stèisean ach ma tha iarrtas ann: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Na lìbhrig carago dha stèisean ach ma chaidh iarraidh aig carbad a bhios a' luchdadh. Le seo, chan fhaigh thu rangachadh dona airson carago nach tèid a fhrithealadh aig an stèisean STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Faide as motha nan drochaidean: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Chan urrainn dhut drochaidean a thogail a tha nas fhaide na seo STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Faide as motha nan tunailean: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Chan urrainn dhut tunail a thogail a tha nas fhaide na seo STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Modh togail a làimh aig prìomh ghnìomhachasan: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :An dòigh a thèid prìomh ghnìomhachas a stèidheachadh. Is ciall dha “Chan eil gin” nach gabh fear sam bith stèidheachadh, is ciall dha “Rùrachadh” gun gabh a mhaoineachadh ach gun tèid a thogail an àite air thuaiream air a' mhapa is ’s dòcha nach soirbhich leis, is ciall dha “Mar ghnìomhachasan eile” gun gabh gnìomhachasan bunasach togail le companaidhean a leithid ghnìomhachasan pròiseasaich an àite sam bith a thogras iad STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Chan eil gin STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Mar ghnìomhachasan eile STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Rùrachadh STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Raon rèidh mu thimcheall ghnìomhachasan: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Meud dhe dh'àite rèidh mu thimcheall gnìomhachais. Nì seo cinnteach gum bi rum ann mu thimcheall gnìomhachais gus slighean is mar sin air adhart a thogail STR_CONFIG_SETTING_MULTIPINDTOWN :Ceadaich iomadh gnìomhachas coltach ri chèile san aon bhaile: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Mar as trice, cha bhi baile ag iarraidh barrachd air aon fhear dhe gach seòrsa gnìomhachais. Leis an roghainn seo, faodaidh iomadh gnìomhachas dhen aon seòrsa a bhith san aon bhaile STR_CONFIG_SETTING_SIGNALSIDE :Seall comharran: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Tagh taobh an t-slighe a thèid comharran a chur STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Taobh clì STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Taobh draibhidh STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Taobh deas STR_CONFIG_SETTING_SHOWFINANCES :Seall uinneag ionmhais air deireadh a' bhliadhna: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ma tha seo air, thèid uinneag ionmhais a shealltainn air deireadh gach bliadhna ach an toir thu sùil air staid ionmhais na companaidh gu furasta STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Bidh òrduighean ùra “gun stad” gu bunasach: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Mar as àbhaist, stadaidh carbad aig gach stèisean air an tèid e seachad. Ma chuireas tu an roghainn seo air, draibhidh e tro na h-uile stèisean air an t-slighe dha cheann-uidhe mu dheireadh gun stad. Thoir an aire nach mìnich an roghainn seo ach an luach bunaiteach airson òrduighean ùra. Faodaidh tu fhèin òrduighean fa leth a shuidheachadh mar as toigh leat co-dhiù STR_CONFIG_SETTING_STOP_LOCATION :Stadaidh òrduighean ùra aig trèanaichean aig {STRING} a' chlàir gu bunaiteach STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Tagh far an stad trèan aig clàr gu bunaiteach. Is ciall dha “toiseach” gun stad i faisg air a' cheann a thig i a-steach, dha “meadhan” gun stad i sa mheadhan a' chlàir is dha “ceann thall” gun stad i fad air falbh bhon taobh a thig i a-steach. Thoir an aire nach mìnich an roghainn seo ach an luach bunaiteach airson òrduighean ùra. Faodaidh tu fhèin òrduighean fa leth a shuidheachadh mar as toigh leat co-dhiù STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :toiseach STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :meadhan STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ceann thall STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ciutha nan carbadan-rathaid (le èifeachdan quantum): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Thoir air carbad-rathaid stad air beulaibh stèiseanan rathaid sa bheil carbad eile gus am falbh am fear eile STR_CONFIG_SETTING_AUTOSCROLL :Panaich an uinneag nuair a bhios an luchag aig oir na sgrìn: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Nuair a bhios seo air, tòisichidh pùirt-seallaidh air sgroladh nuair a bhios an luchag faisg air oir na h-uinneige STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :À comas STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Prìomh-phort-seallaidh, làn-sgrìn a-mhàin STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Prìomh-phort-seallaidh STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Na h-uile port-seallaidh STR_CONFIG_SETTING_BRIBE :Ceadaich brìbeadh an ùghdarrais ionadail: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Faodaidh companaidhean feuchainn ri ùghdarras ionadail a' bhaile a bhrìbeadh. Ma mhothaicheas neach-sgrùdaidh am brìbeadh, chan fhaod a' chompanaidh dad a dhèanamh tuilleadh sa bhaile fad sia mìosan STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ceadaich ceannach aig còirichean giùlain às-dùnach: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ma cheannaicheas companaidh còirichean giùlain às-dùnach airson baile, chan fhaigh stèiseanan (taistealaich no carago) nan co-fharpaisichean carago sam bith fad bliadhna STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Ceadaich maoineachadh thogalaichean: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Faodaidh companaidhean airgead a thoirt dha bhailtean ach an tog iad taighean ùra STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Ceadaich maoineachadh ath-thogail rathaidean ionadail: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Faodaidh companaidhean airgead a thoirt dha bhailtean ach an tog iad rathaidean às ùr gus sabotais a dhèanamh air seirbheisean a chleachdas rathaidean a' bhaile STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Ceadaich toirt airgead dha chompanaidh eile: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Faodaidh companaidhean airgead a thoirt dha chàch a chèile sa mhodh ioma-chluicheadair STR_CONFIG_SETTING_FREIGHT_TRAINS :Iomadaichear truimead carago airson giùlan thrèanaichean troma: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Suidhich am buaidh a bhios aig carago air na trèanaichean. Bidh e nas dorra dha thrèanaichean carago a ghiùlan le luach as àirde, gu h-àraidh air slèibhtean STR_CONFIG_SETTING_PLANE_SPEED :Factar luaiths nam plèanaichean: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Suidhich luaths nam plèanaichean an coimeas ri carbadan dhe sheòrsaichean eile gus an teachd a-steach tro ghiùlan le plèanaichean a lùghdachadh STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Àireamh dhe thubaistean plèana: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Suidhich an seans gun tuit plèana STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Cha tachair seo idir STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Ainneamh STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Àbhaisteach STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ceadaich stèiseanan ri taobh an rathaid air rathaidean a bhuineas ri baile: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Ceadaich gun tèid stèiseanan ri taobh an rathaid a thogail air rathaidean a bhuineas ri baile STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Ceadaich stèiseanan ri taobh an rathaid air rathaidean a bhuineas ri co-fharpaisiche: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Ceadaich gun tèid stèiseanan ri taobh an rathaid a thogail air rathaidean a bhuineas ri companaidh eile STR_CONFIG_SETTING_ADJACENT_STATIONS :Ceadaich togail stèiseanan ri taobh càch a chèile: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Ceadaich gum bean stèiseanan eadar-dhealaichte ri chèile STR_CONFIG_SETTING_DYNAMIC_ENGINES :Cuir seataidhean iomadach NewGRF an comas: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Roghainn co-chòrdalachd airson NewGRFan seana. Na cuir seo à comas mura h-eil thu eòlach air na tha thu a' dèanamh! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cha ghabh an roghainn seo atharrachadh nuair a bhios carbad ann STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Cumail suas a' bhun-structair: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Nuair a bhios seo air, bidh cumail suas a' bhun-structair a' cosg airgid. Fàsaidh na cosgaisean nas luaithe na meud an lìonraidh, mar sin bheir an roghainn seo barrachd buaidh air companaidhean mòra STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Chan fhalbh an ùine air puirt-adhair: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Nuair a chuireas tu an roghainn seo an comas, cumaidh gach port-adhair a' dol gu bràth an dèidh a thogail STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Thoir rabhadh nuair a thèid carbad air chall: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Seallaidh seo brath mura tèid le carbad slighe a lorg dha cheann-uidhe STR_CONFIG_SETTING_ORDER_REVIEW :Sgrùdaich òrduighean nan carbadan: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Nuair a bhios seo air, thèid òrduighean nan carbadan ath-sgrùdadh bho àm gu àm is thèid duilgheadasan follaiseach aithris le brath naidheachd nuair a mholar e. STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Na sgrùdaich STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sgrùdaich, ach fàg carbadan nan stad dhan dàrna taobh STR_CONFIG_SETTING_ORDER_REVIEW_ON :Sgrùdaich a h-uile carbad STR_CONFIG_SETTING_WARN_INCOME_LESS :Thoir rabhadh nuair a dh'adhbharaicheas carbad call airgid: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Nuair a bhios seo air, thèid brath a chur mur an do rinn carbad prothaid feadh bliadhna STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Chan fhalbh an ùine air carbadan gu bràth: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ma tha seo air, bidh a h-uile modail dhe charbad ri làimh gu bràth tuilleadh an dèidh an tionnsgnadh STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Fèin-nuadhaich carbad nuair a bhios e air fàs aosta: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Nuair a bhios seo air, nuair a bhios carbad air fàs ro aosta, thèid fear ùr a chur na àite gu fèin-obrachail ma dh'fhreagras e ri cumhan an fhèin-nuadhachaidh STR_CONFIG_SETTING_AUTORENEW_MONTHS :Fèin-nuadhaich nuair a bhios carbad {STRING} na an aois as motha STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :An aois aig carbad a bu chòir fèin-nuadhachadh fhaighinn STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} {P mhìos mhìos mìosan mìos} nas òige STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} {P mhìos mhìos mìosan mìos} nas sine STR_CONFIG_SETTING_AUTORENEW_MONEY :An t-airgead as lugha a tha a dhìth gus fèin-nuadhachadh a dhèanamh: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Feumaidh an uireadh dhe dh'airgid seo a bhith air fhàghail sa bhanca agad an dèidh carbad fhèin-nuadhachadh STR_CONFIG_SETTING_ERRMSG_DURATION :An ùine a mhaireas brath mearachd: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :An ùine a mhaireas brath mearachd ann an uinneag dearg. Thoir an aire nach dùin cuid dhe na brathan as cudromaiche leotha fhèin is gum feum thu an toirt air falbh a làimh. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} {P 0 diog dhiog diogan diog} STR_CONFIG_SETTING_HOVER_DELAY :Seall gliocasan-sgrìn: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Dèan dàil mus tèid gliocasan-sgrìn a shealltainn nuair a chumas mi an luchag os cionn eileamaid na h-eadar-aghaidh. Mar roghainn eile, gabhaidh gliocasan-sgrìn nasgadh ri putan deas na luchaige STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Cùm an luchag os a chionn fad {COMMA} {P 0 diog dhiog diogan diog} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Briogadh deas STR_CONFIG_SETTING_POPULATION_IN_LABEL :Seall àireamh-shluaigh ann an leubail a' bhaile: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Seall àireamh-shluaigh aig bailtean san leubail aca air a' mhapa STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tiughad nan loidhnichean ann an grafan: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Leud na loidhne ann an grafan. Gabhaidh loidhne thana fhaicinn nas pongaile ach tha loidhne thiugh nas fhasa fhaicinn is dathan nas fhasa a mhothachadh STR_CONFIG_SETTING_LAND_GENERATOR :Gineadair tìre: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Tùsail STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Astar as motha eadar an oir is fìneadairean-ola: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Cha tèid fìneadairean-ola a thogail ach faisg air crìochan a' mhapa, seo an oirthir le mapaichean eilein STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Àirde an loidhne sneachda: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Garbhachd a' chrutha-tìre (TerraGenesis a-mhàin): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Glè rèidh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Rèidh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Garbh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Glè gharbh STR_CONFIG_SETTING_TREE_PLACER :Algairim ionad nan craobh: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Chan eil gin STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Tùsail STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Leasaichte STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Cuairteachadh a' mhapa-àirde: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tuathal STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Deiseil STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Ìre na h-àirde a bhios aig mapa cnàmh-sgeòil rèidh: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Cuir cruth-tìre nan leacan ri crìochan a' mhapa an comas: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ma tha seo dheth, bidh crìochan a' mhapa nan cuantan an-còmhnaidh STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Tha co-dhiù aon leac aig oir a tuath nach eil falamh STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Tha co-dhiù aon leac aig oir nach eil na uisge STR_CONFIG_SETTING_STATION_SPREAD :Sgaoileadh as motha aig stèisean: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :An raon as motha sa dh'fhaodas an t-aon stèisean a sgaoileadh. Thoir an aire gun dèan luachan mòra an geama nas slaodaiche STR_CONFIG_SETTING_SERVICEATHELIPAD :Càraich heileacoptairean gu fèin-obrachail aig puirt-heileacoptair: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Càraich heileacoptairean gach turas a thèid iad air tìr, fiù ’s mura h-eil hangar aig a' phort-adhair STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ceangail am bàr-inneal crutha-tìre ri bàraichean-inneal rèile/rathaid/uisge/puirt-adhair: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Nuair a dh'fhosglas mi bàr-inneal togail airson seòrsa dhe ghiùlan, fosgail am bàr-inneal airson crutha-tìre cuideachd STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Dath na tìre a thèid a chleachdach sa mheanbh-mhapa: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Dath na crutha-tìre air a' mheanbh-mhapa STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Uaine STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dorch-uaine STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purpaidh STR_CONFIG_SETTING_REVERSE_SCROLLING :Comhair sgrolaidh chontrarra: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Giùlan nuair a thèid am mapa a sgroladh le putan deas na luchaige. Nuair a bhios seo air, gluaisidh an luchag am mapa STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgroladh mìn nam port-seallaidh: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Tagh mar a ghluaiseas am prìomh-shealladh gu ionad sònraichte. Ma tha seo dheth, thèid leum dhan ionad a chaidh a thaghadh sa bhad STR_CONFIG_SETTING_MEASURE_TOOLTIP :Seall gliocasan-sgrìn tomhais le innealan togail: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Seall faide eadar leacan is diofar an àirde nuair a nì thu slaodadh fhad ’s a bhios tu a' togail rudeigin STR_CONFIG_SETTING_LIVERIES :Seall dathan na companaidh: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Stiùirich cleachdadh nan dathan a-rèir seòrsa a' charbaid (seach a-rèir na companaidh) STR_CONFIG_SETTING_LIVERIES_NONE :Na seall idir STR_CONFIG_SETTING_LIVERIES_OWN :Aig a' chompanaidh agam fhèin STR_CONFIG_SETTING_LIVERIES_ALL :Aig a h-uile companaidh STR_CONFIG_SETTING_PREFER_TEAMCHAT :Cabadaich sgioba le : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Tagh an dèan thu suids eadar cabadaich taobh a-staigh na companaidh is cabadaich poblach leis an iuchair no le STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Giùlan a' chuibhle-sgrolaidh: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Cuir sgroladh an comas le cuibhle-sgrolaidh luchaige aig a bheil dà dhimeinsean STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Sùm am mapa STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Sgrolaich am mapa STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Na dèan dad STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Luaths aig sgroladh a' mhapa leis a' chuibhle: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Tagh dè cho luath ’s a thèid sgroladh le cuibhle-sgrolaidh na luchaige STR_CONFIG_SETTING_OSK_ACTIVATION :Meur-chlàr air an sgrìn: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Tagh an dòigh sa thèid meur-chlàr fhosgladh air an sgrìn gus teacsa a chur a-steach leis an tomhaire a-mhàin. Tha seo airson uidheaman beaga gun mheur-chlàr aca fhèin STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :À comas STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Briogadh dùbailte STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Aon bhriogadh (le fòcas) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Aon bhriogadh (sa bhad) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulation a' bhriogaidh dheis: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Tagh an dòigh sa thèid emulation a dhèanamh airson briogadh le putan deas na luchaige STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Briogadh STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Briogadh STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Dheth STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sgroladh le briogadh clì: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cuir an comas gun tèid am mapa a sgroladh le slaodadh le putan clì na luchaige. Tha seo feumail gu h-àraidh nuair a chleachdas tu sgrìn-shuathaidh airson sgroladh STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Fòrmat cinn-latha {STRING} airson ainmean nan geamannan air an sàbhaladh STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Fòrmat a' chinn-latha ann an ainmean faidhle nan geamannan air an sàbhaladh STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :fada (31d Dùbh 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :goirid (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Pailead bunaiteach airson NewGRFan gun phailead aca fhèin: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Pailead dhathan bunasach a thèid a chleachdadh le NewGRFan nach sònraich dè am fear a tha a dhìth STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Cuir geamannan air ùr-thòiseachadh nan stad gu fèin-obrachail: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Nuair a bhios seo air, stadaidh an geama gu fèin-obrachail nuair a thòisicheas tu geama ùr. Bheir seo cothrom dhut gus am mapa a sgrùdadh air do shocair STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Na tha ceadaichte nuair a bhios an geama na stad: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Tagh na gnìomhan a bhios ceadaichte nuair a bhios ann geama na stad STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Na ceadaich gnìomh sam bith STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :A h-uile gnìomh ach togail STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :A h-uile gnìomh ach atharrachadh a' chrutha-tìre STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Na h-uile gnìomh STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Cleachd liosta nan carbadan adhartach: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Cuir liostaichean adhartach nan carbadan an comas gus carbadan a chur ann am buidhnean STR_CONFIG_SETTING_LOADING_INDICATORS :Seall taisbeanairean luchdaidh: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Tagh an tèid taisbeanairean luchdaidh a shealltainn os cionn charbadan a bhios a' luchdadh no dì-luchdadh STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Seall an clàr-ama ann an diogan seach làithean: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Seall na h-ùinean siubhail ann an clàran-ama le diogan geama seach làithean STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Seall àm ruigsinn is falbh air clàran-ama: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Seall na h-amannan ruigsinn is falbh air a bheilear an dùil air clàran-ama STR_CONFIG_SETTING_QUICKGOTO :Cruthachadh luath aig òrduighean charbadan:{STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Ro-thagh an cùrsair “rach gu” nuair a thèid uinneag nan òrduighean fhosgladh STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Seòrsa rèile bunaiteach (le geama ùr/air ùr-luchdadh): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :An seòrsa rèile a thèid a thaghadh nuair a bhios geama ùr air a thòiseachadh no geama air luchdadh. Taghaidh “Seòrsa as sine” an seòrsa as sine dhe rèile, “Seòrsa as ùire” an seòrsa as ùire a tha ri làimh is “Ga chleachdadh mar as trice” an seòrsa a tha thu a' cleachdadh mar as trice an-dràsta STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Seòrsa as sine STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Seòrsa as ùire STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Ga chleachdadh mar as trice STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Seall slighean glèidhte: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Cuiridh seo dath eile air slighean glèidhte gus cuideachadh le duilgheadasan gun diùlt trèan dol a-steach dha bhlocaichean stèidhichte air slighean STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Cùm innealan togail gnìomhach an dèidh an cleachdaidh: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Cùm na h-innealan togail airson drochaidean, tunailean agus msaa. fosgailte nuair a chaidh an cleachdadh STR_CONFIG_SETTING_EXPENSES_LAYOUT :Cuir cosgaisean ann am buidhnean ann an uinneag maoin na companaidh: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Tagh a' cho-dhealbhachd airson uinneag maoin na companaidh STR_CONFIG_SETTING_SOUND_TICKER :Cinn-naidheachd: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Cluich fuaim airson gearr-chunntasan naidheachd STR_CONFIG_SETTING_SOUND_NEWS :Pàipear-naidheachd: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Cluich fuaim nuair a thèid pàipear-naidheachd a shealltainn STR_CONFIG_SETTING_SOUND_NEW_YEAR :Deireadh a' bhliadhna: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Cluich èifeachd fuaime air deireadh gach bliadhna nuair a thèid dèanadas na companaidh airson a' bhliadhna a dh'fhalbh a shealltainn STR_CONFIG_SETTING_SOUND_CONFIRM :Togail: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Cluich èifeachd fuaime nuair a thèid rudeigin a thogail gu soirbheachail is le gnìomhan eile STR_CONFIG_SETTING_SOUND_CLICK :Brùthadh phutanan: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Dèan bìd le brùthadh phutanan STR_CONFIG_SETTING_SOUND_DISASTER :Dunaidh/tubaistean: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Cluich èifeachd fuaime le dunaidh no tubaist STR_CONFIG_SETTING_SOUND_VEHICLE :Carbadan: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Cluich èifeachdan fuaime nan carbadan STR_CONFIG_SETTING_SOUND_AMBIENT :Àrainneachd: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Cluich èifeachdan fuaime àrainneachd a' chrutha-tìre, nan gnìomhachasan is nam bailtean STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Cuir togail a' bhun-structair à comas mura h-eil carbad iomchaidh ri làimh: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ma tha seo air, chan eil bun-structar ri làimh ach ma tha carbad freagarrach ri làimh cuideachd. Mar sin, cha chaill thu àm is airgead air bun-structar gun fheum STR_CONFIG_SETTING_MAX_TRAINS :An t-uiread as motha dhe thrèanaichean airson gach companaidh: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :An àireamh as motha dhe thrèanaichean a dh'fhaodas a bhith aig gach companaidh STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :An t-uiread as motha dhe charbadan-rathaid airson gach companaidh: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :An àireamh as motha dhe charbadan-rathaid a dh'fhaodas a bhith aig gach companaidh STR_CONFIG_SETTING_MAX_AIRCRAFT :An t-uiread as motha dhe charbadan-adhair airson gach companaidh: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :An àireamh as motha dhe charbadan-adhair a dh'fhaodas a bhith aig gach companaidh STR_CONFIG_SETTING_MAX_SHIPS :An t-uiread as motha dhe longan airson gach companaidh: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :An àireamh as motha dhe longan a dh'fhaodas a bhith aig gach companaidh STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Cuir trèanaichean à comas airson a' choimpiutair: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair trèanaichean a thogail STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Cuir carbadan-rathaid à comas airson a' choimpiutair: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair carbadan-rathaid a thogail STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Cuir carbadan-adhair à comas airson a' choimpiutair: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair carbadan-adhair a thogail STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Cuir longan à comas airson a' choimpiutair: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ma tha seo air, chan urrainn dha chluicheadairean coimpiutair longan a thogail STR_CONFIG_SETTING_AI_PROFILE :Pròifil nan roghainnean bunaiteach: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Tagh pròifil nan roghainnean a thèid a chleachdadh airson IFan air thuaiream no airson luachan tòiseachaidh nuair a thèid IF no sgriobt geama ùr a chur ris STR_CONFIG_SETTING_AI_PROFILE_EASY :Furasta STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Meadhanach STR_CONFIG_SETTING_AI_PROFILE_HARD :Doirbh STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Ceadaich IFan sa mhodh ioma-chluicheadair: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Ceadaich gun gabh cluicheadairean coimpiutair IF pàirt an an geamannan ioma-chluicheadair STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Àireamh dhe dh'opcodes mus tèid sgriobt a chur na dhàil: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :An àireamh as motha dhe cheuman àireamhachaidh as urrainn dha sgriobt a dhèanamh san aon chuairt STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tha tricead a' chàraidh ann an ceudadan: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Tagh an tèid carbad a chur gus obair-chàraidh fhaighinn a-rèir an turais mu dheireadh a fhuair iad càradh air no nuair a bhios earbsachd air lùghdachadh le ceudad sònraichte dhen earbsachd as motha STR_CONFIG_SETTING_SERVINT_TRAINS :Tricead bunaiteach na h-obrach-càraidh air trèanaichean: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air carbadan-rèile ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson a' charbaid STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} {P 0 latha latha làithean latha}/% STR_CONFIG_SETTING_SERVINT_DISABLED :À comas STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Tricead bunaiteach na h-obrach-càraidh air carbadan-rathaid: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air carbadan-rathaid ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson a' charbaid STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Tricead bunaiteach na h-obrach-càraidh air carbadan-adhair: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air carbadan-adhair ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson a' charbaid STR_CONFIG_SETTING_SERVINT_SHIPS :Tricead bunaiteach na h-obrach-càraidh air longan: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Tagh dè cho tric ’s a thèid obair-chàraidh a dhèanamh air longan ùra mura deach tricead a’ chàraidh sònraichte a shuidheachadh airson na luinge STR_CONFIG_SETTING_NOSERVICE :Cuir obair-chàraidh à comas ma chaidh briseadh a chur gu “Cha tachair seo idir”: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ma tha seo air, chan fhaigh carbadan obair-chàraidh mur urrainn dhaibh briseadh STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Cuir crìochan-luaiths nan carbadan-rèile an comas: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ma tha seo air, cleachd crìochan-luaiths nan carbadan cuideachd gus an luaths as motha aig trèan a shuidheachadh STR_CONFIG_SETTING_DISABLE_ELRAILS :Cuir rèilean dealain à comas: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ma tha seo air, cha leig thu leas slighean dealain a thogail gus einnseanan dealain a chleachdadh orra STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Tha a' chiad carbad air stèisean a' chluicheadair a ruigsinn: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Seall pàipear-naidheachd nuair a bhios a' chiad carbad air stèisean ùr a' chluicheadair a ruigsinn STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Tha a' chiad carbad air stèisean aig co-fharpaisiche a ruigsinn: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Seall pàipear-naidheachd nuair a bhios a' chiad carbad air stèisean ùr aig co-fharpaisiche a ruigsinn STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Tubaistean / dunaidh: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Seall pàipear-naidheachd nuair a thachras tubaist no dunaidh STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Fiosrachadh na companaidh: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Seall pàipear-naidheachd nuair thèid companaidh ùr a stèidheachadh no nuair a bhios companaidh fo chunnart brisidh STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Gnìomhachas ùr air fhosgladh: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Seall pàipear-naidheachd nuair a dh'fhosglas gnìomhachas ùr STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Gnìomhachas air a dhùnadh: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Seall pàipear-naidheachd nuair a thèid gnìomhachas a dhùnadh STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Atharraichean an eaconamaidh: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas eaconamaidh na cruinne STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Atharraichean saothrachaidh aig gnìomhachasan a tha gam frithealadh leis a' chompanaidh: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas ìre saothrachaidh aig gnìomhachas a tha ga fhrithealadh leis a' chompanaidh agad STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Atharraichean saothrachaidh aig gnìomhachasan a tha gam frithealadh le co-fharpaisiche: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas ìre saothrachaidh aig gnìomhachas a tha ga fhrithealadh le co-fharpaisiche STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Atharraichean saothrachaidh aig gnìomhachasan eile: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Seall pàipear-naidheachd nuair a dh'atharraicheas ìre saothrachaidh aig gnìomhachas nach eil ga fhrithealadh le companaidh sam bith STR_CONFIG_SETTING_NEWS_ADVICE :Comhairlean / fiosrachadh mu charbadan a' chompanaidh: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Seall brathan mu charbadan a bu chòir dhut an aire a thoirt orra STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Carbadan ùra: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Seall pàipear-naidheachd nuair a bhios seòrsa dhe charbad ùr ri làimh STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Atharraichean air a' charago a gabhar ris: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Seall brathan mu stèiseanan a dh'atharraich dè an carago a ghabhas iad ris STR_CONFIG_SETTING_NEWS_SUBSIDIES :Tarrailean: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Seall pàipear-naidheachd mu thachartasan co-cheangailte ri tarrailean STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Fiosrachadh coitcheann: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Seall pàipear-naidheachd mu thachartasan coitcheann a leithid ceannach aig còirichean às-dùnach no maoineachadh air ath-thogail rathaidean STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Dheth STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Gearr-chunntas STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Slàn STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Nochdaidh naidheachdan dathte ann an: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Am bliadhna a thèid pàipear-naidheachd dathte a chlò-bhualadh a' chiad turas. Bidh na pàipearan-naidheachd ann an dubh is geal roimhe seo STR_CONFIG_SETTING_STARTING_YEAR :Bliadhna tòiseachaidh: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Cuir eaconamaidh rèidh an comas (atharraichean nas trice is nas beaga): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ma tha seo air, atharraichidh saothrachadh nan gnìomhachasan nas trice is le ceuman nas lugha. Chan eil buaidh aig seo air seòrsaichean gnìomhachais a chaidh a sholar le NewGRF mar as trice STR_CONFIG_SETTING_ALLOW_SHARES :Ceadaich gun tèid stoca a cheannach bho chompanaidhean eile: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ma tha seo air, ’s urrainn dhut stocan chompanaidhean a cheannach is a reic. Cha bhi stoca ri làimh ach aig companaidhean aig a bheil aois shònraichte STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :A' cheudad dhen phrothaid a gheibh carbadan le tar-aiseag carago: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :A' cheudad dhen phrothaid a gheibh carbadan airson na slighe a shiubhlas iad nuair a nì iad tar-aiseag. Bheir seo barrachd smachd air an teachd a-steach dhut STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Le slaodadh, cuir comharra gach: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Tagh an t-astar eadar comharran a thèid a thogail air slighe is an t-ath-chnap-starra (comharra, gobhal) nuair a bhios comharran gan slaodadh STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} {P 0 leac leac leacan leac} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Le slaodadh, cùm astar co-ionnan eadar comharran: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Tagh an giùlan aig cur nan comharran nuair a thèid comharran a shlaodadh le Ctrl. Ma tha seo dheth, thèid comharran a chur gach taobh tunail no drochaide gus slighean fada gun chomharran a sheachnadh. Ma tha seo air, thèid comharran a chur gach n-mh leac agus nì seo co-thaobhadh aig comharran air slighean co-shìnte nas fhasa STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Tog saimeaforean gu fèin-obrachail ro: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Tagh am bliadhna a thèid comharran dealain a chleachdadh airson slighean. Ron bhliadhna seo, thèid comharran neo-dhealanach a chleachdadh (tha an dearbh ghiùlan aca ach coltas eadar-dhealaichte orra) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Cuir eadar-aghaidh nan comharran an comas: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Seall uinneag gus an seòrsa dhe chomharra a thogas tu a thaghadh seach dol tro na seòrsaichean dhe chomharran às aonais uinneige le Ctrl+briogadh air togail chomharran STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :An seòrsa dhe chomharra a thèid a thogail a ghnàth: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :An seòrsa bunaiteach dhe chomharra a thèid a chleachdadh STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Comharran bacaidh STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Comharran slighe STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Comharran aon-shligheach STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Cuairtich tro na seòrsaichean comharra: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Tagh dè na seòrsaichean dhe chomharra a thèid a chuairteachadh tromhpa nuair a thèid briogadh le Ctrl air togail comharra leis an inneal togail chomharran STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Comharran bacaidh a-mhàin STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Comharran slighe a-mhàin STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Na h-uile STR_CONFIG_SETTING_TOWN_LAYOUT :Co-dhealbhachd nan rathaidean airson bailtean ùra: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Co-dhealbhachd airson nan rathaidean ann am bailtean ùra STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Tùsail STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Rathaidean as fhearr STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Griod 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Griod 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Air thuaiream STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Faodaidh bailtean rathaidean a thogail: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Ceadaich dha bhailtean gun tog iad rathaidean ach am fàs iad. Cuir seo à comas gus ùghdarrasan nam bailtean a bhacadh bho thogail rathaidean dhaibh fhèin STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Ceadaich dha bhailtean staranan-rèile a thogail: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ma tha seo air, faodaidh bailtean staranan-rèile a thogail STR_CONFIG_SETTING_NOISE_LEVEL :Ceadaich dha bhailtean smachd a chumail air an fhuaim a dh'adhbharaicheas puirt-adhair: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ma tha an roghainn seo à comas, faodaidh dà phort-adhair a bhith san aon bhaile. Nuair a bhios an roghainn seo air, bidh cuingeachadh air an àireamh dhe phuirt-adhair a-rèir na fuaime a dh'fhulaingeas am baile na chrochas air meud an t-sluaigh is air meud is astar a' phuirt-adhair STR_CONFIG_SETTING_TOWN_FOUNDING :Stèidheachadh bhailtean sa gheama: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ma tha an roghainn seo air, faodaidh cluicheadairean bailtean ùra a stèidheachadh sa gheama STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Toirmisgte STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Ceadaichte STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Ceadaichte, co-dhealbhachd a' bhaile ghnàthaichte STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Cur nan craobh sa gheama: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Cùm smachd air na craobhan a nochdas sa gheama air thuaiream. Dh'fhaoidte gun toir seo buaidh air gnìomhachasan a tha an eisimeil fàs nan craobhan a leithid muileannan-fiodha STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Chan eil gin {RED}(brisidh seo muileannan-fiodha) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Ann an coilltean-uisge a-mhàin STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Àite sam bith STR_CONFIG_SETTING_TOOLBAR_POS :Ionad a' phrìomh bhàir-inneal: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Ionad còmhnard a' phrìomh bhàir-inneal air barr na sgrìn STR_CONFIG_SETTING_STATUSBAR_POS :Ionad a' bhàir-staide: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Ionad còmhnard a' bhàir-staide aig bonn na sgrìn STR_CONFIG_SETTING_SNAP_RADIUS :Rèideas greimeachaidh nan uinneag: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :An t-astar eadar dà uinneag mus tèid an uinneag a tha thu a' gluasad a cho-thaobhadh ri uinneag faisg oirre STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} {P 0 phiogsail phiogsail piogsailean piogsail} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :À comas STR_CONFIG_SETTING_SOFT_LIMIT :An àireamh as motha dhe dh'uinneagan nach eil steigeach: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :An àireamh as motha dhe dh'uinneagan fosgailte nach eil steigeach nach tèid a dhùnadh gu fèin-obrachail gus àite a chruthachadh airson uinneagan ùra STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :à comas STR_CONFIG_SETTING_ZOOM_MIN :Leibheil sùmaidh a-steach as àirde: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :An leibheil as àirde as urrainn dhut sùmadh a-steach ann am port-seallaidh. Thoir an aire gum bi barrachd cuimhne a dhìth ort ma cheadaicheas tu leibheilean sùmaidh nas àirde STR_CONFIG_SETTING_ZOOM_MAX :Leibheil sùmaidh a-mach as àirde: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :An leibheil as àirde as urrainn dhut sùmadh a-mach ann am port-seallaidh. Dh'fhaoidte gun adhbharaich leibheilean sùmaidh a-mach a tha ro àird dàil STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Àbhaisteach STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Luaths fàs nam bailtean: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Suidhich dè cho luath ’s a dh'fhàsas bailtean STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Gun fhàs idir STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Slaodach STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Àbhaisteach STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Luath STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Glè luath STR_CONFIG_SETTING_LARGER_TOWNS :Roinn nam bailtean a thèid nam mòr-bhailtean: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Suidhich co mheud bailtean a thèid nam mòr-bhailtean, ’s e seo baile a thòisicheas nas motha is a dh'fhàsas nas luaithe STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 a-mach à {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Chan eil gin STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Iomadaichear meud nam bailtean aig an toiseach: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Am meud cuibheasach dhe mhòr-bhailtean an coimeas ri bailtean àbhaisteach aig toiseach a' gheama STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Thoir air falbh eileamaidean-rathaid gun chiall nuair a thèid rathaid a thogail: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Thoir cùil-dhùinte nan rathaidean air falbh nuair a thèid togail rathaidean a mhaoineachadh STR_CONFIG_SETTING_GUI :{ORANGE}Eadar-aghaidh STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Togail STR_CONFIG_SETTING_VEHICLES :{ORANGE}Carbadan STR_CONFIG_SETTING_STATIONS :{ORANGE}Stèiseanan STR_CONFIG_SETTING_ECONOMY :{ORANGE}Eaconamaidh STR_CONFIG_SETTING_AI :{ORANGE}Co-farpaisichean STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Taisbeanadh STR_CONFIG_SETTING_INTERACTION :{ORANGE}Eadar-ghnìomh STR_CONFIG_SETTING_SOUND :{ORANGE}Èifeachdan fuaime STR_CONFIG_SETTING_NEWS :{ORANGE}Naidheachdan is brathan STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Comharran STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Làimhseachadh carago STR_CONFIG_SETTING_AI_NPC :{ORANGE}Cluicheadairean coimpiutair STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Fèin-nuadhachadh STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Obair-ghlèidhidh STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Lorg shlighean STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trèanaichean STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bailtean STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Gnìomhachasan STR_CONFIG_SETTING_PATHFINDER_OPF :Tùsail STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(molta) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Lorg shlighean aig trèanaichean: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :An dòigh a lorgas trèanaichean an slighe STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Lorg shlighean aig carbadan-rathaid: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :An dòigh a lorgas carbadan-rathaid an slighe STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Lorg slighean aig longan: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :An dòigh a lorgas longan an slighe STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Taobh contrarra aig comharran gu fèin-obrachail: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Faodaidh trèanaichean tilleadh aig comharra nuair a bhios iad air feitheamh ann ùine fada STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Atharraich luach na roghainn # Config errors STR_CONFIG_ERROR :{WHITE}Mearachd leis an fhaidhle rèiteachaidh... STR_CONFIG_ERROR_ARRAY :{WHITE}... mearachd ann an arraigh “{STRING}" STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... luach “{STRING}" mì-dhligheach airson “{STRING}" STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caractaran anabarrach air deireadh roghainn “{STRING}" STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... a' leigeil seachad NewGRF “{STRING}": ID GRF dùblaichte le “{STRING}" STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... a' leigeil seachad NewGRF “{STRING}" mì-dhligheach: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :gun lorg STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :neo-thèarainte airson cleachdaidh stadaigich STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :siostam NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :neo-chòrdail ris an tionndadh seo dhe OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :neo-aithnichte STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... tha an leibheil dùmhlachaidh “{STRING}" mì-dhligheach STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... chan eil am fòrmat “{STRING}" gus geamannan a shàbhaladh ri làimh. A' tilleadh gu “{STRING}" STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... a' leigeil seachad an seata grafaigeachd bunasach “{STRING}": cha deach a lorg STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... a' leigeil seachad an seata fuaime bunasach “{STRING}": cha deach a lorg STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... a' leigeil seachad an seata ciùil bunasach “{STRING}": cha deach a lorg STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Chan eil cuimhne gu leòr agad STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Dh'fhàillig le sònrachadh aig {BYTES} dhe thasgadan nam sprites. Chaidh tasgadan nam sprites a lùghdachadh gu {BYTES}. Le sin, bidh an dèanadas aig OpenTTD nas lugha. Gus nach bidh feum ann airson a leithid dhe chuimhne, feuch an cuir thu grafaigeachd 32bpp is/no leibheilean sùmaidh à comas # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Geama ùr STR_INTRO_LOAD_GAME :{BLACK}Luchdaich geama STR_INTRO_PLAY_SCENARIO :{BLACK}Cluich cnàmh-sgeul STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Cluich mapa-àirde STR_INTRO_SCENARIO_EDITOR :{BLACK}Deasaiche chnàmh-sgeulan STR_INTRO_MULTIPLAYER :{BLACK}Ioma-chluicheadair STR_INTRO_GAME_OPTIONS :{BLACK}Roghainnean a' gheama STR_INTRO_HIGHSCORE :{BLACK}Clàr nan sgòran àrda STR_INTRO_ADVANCED_SETTINGS :{BLACK}Roghainnean adhartach STR_INTRO_NEWGRF_SETTINGS :{BLACK}Roghainnean NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Susbaint air loidhne STR_INTRO_SCRIPT_SETTINGS :{BLACK}Roghainnean sgriobt IF/Geama STR_INTRO_QUIT :{BLACK}Fàg an-seo STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Tòisich geama ùr. Ctrl+Briogadh gus leum thairis air rèiteachadh a mhapa STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Luchdaich geama air a shàbhaladh STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Tòisich geama ùr le mapa-àirde mar chruth-tìre STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Tòisich geama ùr le cnàmh-sgeul gnàthaichte STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Cruthaich saoghal a' gheama/cnàmh-sgeul gnàthaichte STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Tòisich geama ioma-chluicheadair STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Tagh an stoidhle crutha-tìre “measarra" STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Tagh an stoidhle crutha-tìre “fo-artach" STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Tagh an stoidhle crutha-tìre “fo-thropaigeach" STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Tagh an stoidhle crutha-tìre “tìr nan dèideag" STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Seall roghainnean a' gheama STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Seall clàr nan sgòran àrda STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Seall na roghainnean adhartach STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Seall na roghainnean NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Thoir sùil airson susbainte ùire no air a h-ùrachadh ri luchdadh a-nuas STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Seall roghainnean sgriobt IF/geama STR_INTRO_TOOLTIP_QUIT :{BLACK}Fàg “OpenTTD" STR_INTRO_TRANSLATION :{BLACK}Tha {NUM} {P sreang shreang sreangan sreang} a dhìth air an eadar-theangachadh seo. Nach toir thu cuideachadh dhuinn gus piseach a thort air OpenTTD ’s tu a' clàradh mar eadar-theangaiche? Thoir sùil air readme.txt airson fiosrachaidh. # Quit window STR_QUIT_CAPTION :{WHITE}Fàg an-seo STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}A bheil thu cinnteach gu bheil thu airson OpenTTD fhàgail is tilleadh dha {STRING}? STR_QUIT_YES :{BLACK}Tha STR_QUIT_NO :{BLACK}Chan eil # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Fàg an geama STR_ABANDON_GAME_QUERY :{YELLOW}A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail? STR_ABANDON_SCENARIO_QUERY :{YELLOW}A bheil thu cinnteach gu bheil thu airson an cnàmh-sgeul seo fhàgail? # Cheat window STR_CHEATS :{WHITE}Cealgaireachd STR_CHEATS_TOOLTIP :{BLACK}Is ciall dha bhogsaichean-cromaige gun deach a' chealgaireachd seo a chleachdadh roimhe STR_CHEATS_WARNING :{BLACK}Rabhadh! Tha thu gu bhith a' mealladh na co-fharpaisichean agad. Thoir an aire gun cumar cuimhne air an tàmailt seo gu bràth tuilleadh STR_CHEAT_MONEY :{LTBLUE}Meudaich an t-airgead le {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}A' cluich mar a' chompanaidh: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer draoidheach (thoir air falbh gnìomhachasan, oibseactan do-ghluasad): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Faodaidh tunailean dol tarsainn càch a chèile: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Cha tachair tubaist (gu tric) le steall-phlèan air port-adhair beag: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Cruth-tìre measarra STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Cruth-tìre fo-artach STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Cruth-tìre fo-thropaigeach STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Cruth-tìre nan dèideag STR_CHEAT_CHANGE_DATE :{LTBLUE}Atharraich an ceann-latha: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Atharraich am bliadhna an-dràsta STR_CHEAT_SETUP_PROD :{LTBLUE}Cuir an comas atharrachadh air luachan saothrachaidh: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Sgeama nan dath ùr STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Seall sgeamannan nan dath coitcheann STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson trèanaichean STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson carbadan-rathaid STR_LIVERY_SHIP_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson longan STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Seall sgeamannan nan dath airson carbadan-adhair STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Tagh am prìomh dhath airson an sgeama a thagh thu. Suidhichidh Ctrl+Briogadh an dath seo airson na h-uile sgeama STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Tagh an dàrna dath airson an sgeama a thagh thu. Suidhichidh Ctrl+Briogadh an dath seo airson na h-uile sgeama STR_LIVERY_PANEL_TOOLTIP :{BLACK}Tagh sgeama nan dath airson atharrachadh, no iomadh sgeama le Ctrl+Briogadh. Briog air a' bhogsa gus cleachdadh an sgeama a thogladh STR_LIVERY_DEFAULT :Dathan àbhaisteach STR_LIVERY_STEAM :Einnsean-smùide STR_LIVERY_DIESEL :Einnsean Diesel STR_LIVERY_ELECTRIC :Einnsean-dealain STR_LIVERY_MONORAIL :Einnsean aona-rèile STR_LIVERY_MAGLEV :Einnsean magnaiteach STR_LIVERY_DMU :Càr-rèile Diesel STR_LIVERY_EMU :Càr-rèile-dealain STR_LIVERY_PASSENGER_WAGON_STEAM :Carbad thaistealach (Smùid) STR_LIVERY_PASSENGER_WAGON_DIESEL :Carbad thaistealach (Diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Carbad thaistealach (Dealain) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Carbad thaistealach (Aona-rèile) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Carbad thaistealach (Magnaiteach) STR_LIVERY_FREIGHT_WAGON :Carbad carago STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Làraidh STR_LIVERY_PASSENGER_SHIP :Bàta-aiseig STR_LIVERY_FREIGHT_SHIP :Long carago STR_LIVERY_HELICOPTER :Heileacoptair STR_LIVERY_SMALL_PLANE :Plèana beag STR_LIVERY_LARGE_PLANE :Plèana mòr STR_LIVERY_PASSENGER_TRAM :Trama thaistealach STR_LIVERY_FREIGHT_TRAM :Trama carago # Face selection window STR_FACE_CAPTION :{WHITE}Taghadh aodainn STR_FACE_CANCEL_TOOLTIP :{BLACK}Sguir dhen taghadh aodainn ùir STR_FACE_OK_TOOLTIP :{BLACK}Gabh ris an taghadh aodainn ùir STR_FACE_MALE_BUTTON :{BLACK}Fireannach STR_FACE_MALE_TOOLTIP :{BLACK}Tagh aodann fireannaich STR_FACE_FEMALE_BUTTON :{BLACK}Boireannach STR_FACE_FEMALE_TOOLTIP :{BLACK}Tagh aodann boireannaich STR_FACE_NEW_FACE_BUTTON :{BLACK}Aodann ùr STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Gin aodann ùr air thuaiream STR_FACE_ADVANCED :{BLACK}Adhartach STR_FACE_ADVANCED_TOOLTIP :{BLACK}Taghadh aodainn adhartach STR_FACE_SIMPLE :{BLACK}Simplidh STR_FACE_SIMPLE_TOOLTIP :{BLACK}Taghadh aodainn simplidh STR_FACE_LOAD :{BLACK}Luchdaich STR_FACE_LOAD_TOOLTIP :{BLACK}Luchdaich aodann as fhearr leat STR_FACE_LOAD_DONE :{WHITE}Chaidh an t-aodann as fhearr leat a luchdadh on fhaidhle rèiteachaidh OpenTTD STR_FACE_FACECODE :{BLACK}Àireamh aodann a' chluicheadair STR_FACE_FACECODE_TOOLTIP :{BLACK}Seall is/no suidhich àireamh aodainn aig ceann-suidhe na companaidh STR_FACE_FACECODE_CAPTION :{WHITE}Seall is/no suidhich àireamh aodann a' cheann-suidhe STR_FACE_FACECODE_SET :{WHITE}Chaidh còd-àireimh aodainn ùr a shuidheachadh STR_FACE_FACECODE_ERR :{WHITE}Cha do ghabh àireamh aodann a' cheann-suidhe a shuidheachadh - feumaidh e bhith na h-àireamh eadar 0 is 4,294,967,295! STR_FACE_SAVE :{BLACK}Sàbhail STR_FACE_SAVE_TOOLTIP :{BLACK}Sàbhail mar an t-aodann as fhearr leat STR_FACE_SAVE_DONE :{WHITE}Thèid an t-aodann seo a shàbhaladh mar am fear as fhearr leat san fhaidhle rèiteachaidh aig OpenTTD STR_FACE_EUROPEAN :{BLACK}Eòrpach STR_FACE_SELECT_EUROPEAN :{BLACK}Tagh aodann Eòrpach STR_FACE_AFRICAN :{BLACK}Afraganach STR_FACE_SELECT_AFRICAN :{BLACK}Tagh aodann Afraganach STR_FACE_YES :Air/Oirre STR_FACE_NO :— STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Cuir stais no fàinne-chluaise an comas STR_FACE_HAIR :Falt: STR_FACE_HAIR_TOOLTIP :{BLACK}Atharraich am falt STR_FACE_EYEBROWS :Malaidhean: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Atharraich na malaidhean STR_FACE_EYECOLOUR :Dath sùla: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Atharraich dath nan sùilean STR_FACE_GLASSES :Speuclairean: STR_FACE_GLASSES_TOOLTIP :{BLACK}Cuir speuclairean an comas STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Atharraich na speuclairean STR_FACE_NOSE :Sròn: STR_FACE_NOSE_TOOLTIP :{BLACK}Atharraich an t-sròn STR_FACE_LIPS :Bilean: STR_FACE_MOUSTACHE :Stais: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Atharraich na bilean no an stais STR_FACE_CHIN :Smigead: STR_FACE_CHIN_TOOLTIP :{BLACK}Atharraich an smigead STR_FACE_JACKET :Seacaid: STR_FACE_JACKET_TOOLTIP :{BLACK}atharraich an t-seacaid STR_FACE_COLLAR :Coilear: STR_FACE_COLLAR_TOOLTIP :{BLACK}Atharraich an coilear STR_FACE_TIE :Tàidh: STR_FACE_EARRING :Fàinne-chluaise: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Atharraich an tàidh no an fhàinne-chluaise # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Ioma-chluicheadair STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ceangal: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Tagh eadar geama air an eadar-lìn no air lìonraidh ionadail (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Eadar-lìon STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ainm cluicheadair: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Seo an t-ainm leis an aithnich cluicheadairean eile thu STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ainm STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Ainm a' gheama STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Cliantan STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Cliantan air loidhne / cliantan air a char as motha{}Companaidhean air loidhne / companaidhean air a char as motha STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Meud a' mhapa STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Meud aig mapa a' gheama{}Briog gus seòrsachadh a-rèir raoin STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Ceann-latha STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Ceann-latha an-dràsta STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Bliadhnaichean STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Àireamh nam bliadhnaichean{}a bhios an geama a' ruith STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Cànan, tionndadh an fhrithealaiche, agus msaa. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Briog air geama air an liosta gus a thaghadh STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Am frithealaiche sa ghabh thu an turas mu dheireadh: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Briog gus am frithealaiche a thaghadh air an do chluich thu an turas mu dheireadh STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}FIOSRACHADH A' GHEAMA STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Cliantan: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Cànan: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Cruth-tìre: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Meud a' mhapa: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Tionndadh an fhrithealaiche: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Seòladh an fhrithealaiche: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Ceann-latha tòiseachaidh: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Ceann-latha an-dràsta: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Ga dhìon le facal-faire! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}FRITHEALAICHE FAR LOIDHNE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}FRITHEALAICHE LÀN STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}TIONNDAIDHEAN NACH EIL CO-IONNAN STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF NACH EIL CO-IONNAN STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Gabh sa gheama STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Ath-nuadhaich am frithealaiche STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Ath-nuadhaich fiosrachadh an fhrithealaiche STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Lorg frithealaiche STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Lorg san lìonraidh airson frithealaiche STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Cuir frithealaiche ris STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Cuiridh seo frithealaiche ris an liosta gus an tèid sùil a thoirt air airson geamannan nan ruith STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Tòisich frithealaiche STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Tòisich frithealaiche agad fhèin STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Cuir d' ainm a-steach STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Cuir seòladh an òstair a-steach # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Tòisich geama ioma-chluicheadair ùr STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Ainm a' gheama: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Thèid ainm a' gheama a shealltainn dha chàch ann an clàr-taice nan geamannan ioma-chluicheadair STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Suidhich facal-faire STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Dìon an geama agad le facal-faire ach nach eil e ri fhaighinn gu poblach STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Eadar-lìon STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Eadar-lìon (sanasaich) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} {P chliant chliant cliantan cliant} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Cliantan air a char as motha: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Tagh an àireamh as motha dhe chliantan. Cha leig thu leas a h-uile slot a lìonadh STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} {P chompanaidh chompanaidh companaidhean companaidh} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Companaidhean air a char as motha: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Cuingich am frithealaiche gu àireamh shònraichte dhe chompanaidhean STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} {P amharcaiche amharcaiche amharcaichean amharcaiche} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Amharcaichean air a char as motha: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Cuingich co mheud duine a dh'fhaodas sealltainn air geamannan air an fhrithealaiche STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Cànan a tha ga bhruidhinn: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Bidh fios aig cluicheadairean eile dè an cànan a tha ga bruidhinn air an fhrithealaiche STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Cuir a-steach ainm airson a' gheama lìonraidh # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Cànan sam bith STR_NETWORK_LANG_ENGLISH :Beurla STR_NETWORK_LANG_GERMAN :Gearmailtis STR_NETWORK_LANG_FRENCH :Fraingis STR_NETWORK_LANG_BRAZILIAN :Portagailis Bhraisileach STR_NETWORK_LANG_BULGARIAN :Bulgarais STR_NETWORK_LANG_CHINESE :Sìnis STR_NETWORK_LANG_CZECH :Seacais STR_NETWORK_LANG_DANISH :Danmhairgis STR_NETWORK_LANG_DUTCH :Duitsis STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Fionnlannais STR_NETWORK_LANG_HUNGARIAN :Ungairis STR_NETWORK_LANG_ICELANDIC :Tìlis STR_NETWORK_LANG_ITALIAN :Eadailtis STR_NETWORK_LANG_JAPANESE :Seapanais STR_NETWORK_LANG_KOREAN :Coirèanais STR_NETWORK_LANG_LITHUANIAN :Liotuainis STR_NETWORK_LANG_NORWEGIAN :Nirribhis STR_NETWORK_LANG_POLISH :Pòlainnis STR_NETWORK_LANG_PORTUGUESE :Portagailis STR_NETWORK_LANG_ROMANIAN :Romàinis STR_NETWORK_LANG_RUSSIAN :Ruisis STR_NETWORK_LANG_SLOVAK :Slòbhacais STR_NETWORK_LANG_SLOVENIAN :Slòbhainis STR_NETWORK_LANG_SPANISH :Spàinntis STR_NETWORK_LANG_SWEDISH :Suainis STR_NETWORK_LANG_TURKISH :Turcais STR_NETWORK_LANG_UKRAINIAN :Ucràinis STR_NETWORK_LANG_AFRIKAANS :Afraganais STR_NETWORK_LANG_CROATIAN :Cròthaisis STR_NETWORK_LANG_CATALAN :Catalanais STR_NETWORK_LANG_ESTONIAN :Eastoinis STR_NETWORK_LANG_GALICIAN :Gailìsis STR_NETWORK_LANG_GREEK :Greugais STR_NETWORK_LANG_LATVIAN :Laitbheis ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Lobaidh nan geamannan ioma-chluicheadair STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Ag ullachadh gus gabhail ann: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Liosta dhen a h-uile companaidh a tha sa gheama an-dràsta. ’S urrainn dhut gabhail ann an tè no tè ùr a stèidheachadh ma tha slot companaidh saor ri làimh STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}FIOSRACHADH A' CHOMPANAIDH STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Ainm na companaidh: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Stèidheachadh: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Luach a' chompanaidh: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Balans an-dràsta: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Teachd a-steach an-uiridh: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Dèanadas: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Carbadan: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stèiseanan: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Cluicheadairean: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Companaidh ùr STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Cruthaich companaidh ùr STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Coimhead air geama STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Coimhead air a' gheama mar amharcaiche STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Gabh sa chompanaidh STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Cuidich le stiùireadh na companaidh seo # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}A' ceangal ... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) A' cheangal ... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) A' dearbhadh ... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) A' feitheamh ... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) A' luchdadh mapa a-nuas ... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) A' giullachd dàta ... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) A' clàradh ... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}A' faighinn fiosrachadh a' gheama ... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}A' faighinn fiosrachadh na companaidh ... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} {P chliant chliant cliantan cliant} air do bheulaibh STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} air a{P 0 "" "" n ""} luchdadh a-nuas gu ruige seo STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} air a{P 0 "" "" n ""} luchdadh a-nuas gu ruige seo STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Dì-cheangail STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tha am frithealaiche dìonta. Cuir a-steach facal-faire STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Tha a' chompanaidh dìonta. Cuir a-steach facal-faire # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Liosta nan cliant STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Coimhead air STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Companaidh ùr # Network client list STR_NETWORK_CLIENTLIST_KICK :Thoir a bhròg dha STR_NETWORK_CLIENTLIST_BAN :Toirmisg STR_NETWORK_CLIENTLIST_GIVE_MONEY :Thoir airgead dha STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Bruidhinn ris a h-uile duine STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Bruidhinn ris a' chompanaidh STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Teachdaireachd phrìobhaideach STR_NETWORK_SERVER :Frithealaiche STR_NETWORK_CLIENT :Cliant STR_NETWORK_SPECTATORS :Amharcaichean STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Cuir a-steach na tha thu airson toirt seachad # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Na sàbhail am facal-faire air a chur a-steach STR_COMPANY_PASSWORD_OK :{BLACK}Thoir am facal-faire ùr dhan chompanaidh STR_COMPANY_PASSWORD_CAPTION :{WHITE}Facal-faire na companaidh STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Facal-faire bunaiteach na companaidh STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Cleachd am facal-faire companaidh seo a ghnàth airson companaidhean ùra # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Gabh ann STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Gabh ann is cluich mar a' chompanaidh seo STR_COMPANY_VIEW_PASSWORD :{BLACK}Facal-faire STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Dìon do chompanaidh le facal-faire ach nach gabh cluicheadairean eile innte gun chead STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Suidhich facal-faire na companaidh # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Cuir STR_NETWORK_CHAT_COMPANY_CAPTION :[Sgioba] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Prìobhaideach] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Na h-uile] : STR_NETWORK_CHAT_COMPANY :[Sgioba] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Sgioba] gu {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Prìobhaideach] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Prìobhaideach] gu {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Na h-uile] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Cuir teacsa a-steach airson cabadaich-lìonraidh # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Cha deach uidheam lìonraidh a lorg no chaidh am prògram a thrusadh às aonais ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Cha deach geama lìonraidh a lorg STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Cha do dh'fhreagair am frithealaiche an t-iarrtas STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Cha b' urrainn dhuinn ceangal ris oir chan eil an NewGRF co-ionnan STR_NETWORK_ERROR_DESYNC :{WHITE}Dh'fhàillig le sioncronachadh a' gheama lìonraidh STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Chaidh ceangal dhan gheama lìonraidh air chall STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Cha b' urrainn dhuinn an geama air shabhaladh a luchdadh STR_NETWORK_ERROR_SERVER_START :{WHITE}Cha b' urrainn dhuinn am frithealaiche a thòiseachadh STR_NETWORK_ERROR_CLIENT_START :{WHITE}Cha b' urrainn dhuinn ceangal a dhèanamh STR_NETWORK_ERROR_TIMEOUT :{WHITE}Dh'fhalbh an ùine air a' cheangal {NUM} STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Mhothaich sinn mearachd leis a' phròtacal is chaidh an ceangal a dhùnadh STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Chan eil an tionngadh aig a' chliant seo a' freagairt ri tionndadh an fhrithealaiche STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Facal-faire cearr STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tha am frithealaiche làn STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Chaidh do thoirmeasg on fhrithealaiche seo STR_NETWORK_ERROR_KICKED :{WHITE}Fhuair thu a' bhròg on gheama STR_NETWORK_ERROR_CHEATER :{WHITE}Chan eil cealgaireachd ceadaichte air an fhrithealaiche seo STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tha thu air cus àitheantan a chur dhan fhrithealaiche STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Bha thu ro fhada a' cur am facal-faire a-steach STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tha an coimpiutair agad ro shlaodach gus cumail suas ris an fhrithealaiche STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Bha an coimpiutair agad ro fhada a' luchdadh a-nuas a' mhapa STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Bha an coimpiutair agad ro fhada a' gabhail san fhrithealaiche ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :mearachd choitcheann STR_NETWORK_ERROR_CLIENT_DESYNC :mearachd sioncronachaidh STR_NETWORK_ERROR_CLIENT_SAVEGAME :cha b' urrainn dhuinn am mapa a luchdadh STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :chaidh ceangal air chall STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :mearachd pròtacail STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF neo-ionnann STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :gun chead STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :fhuaras pacaid mì-dhligheach no air nach robhar an dùil STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :tionndadh cearr STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :tha an t-ainm seo ga chleachdadh mu thràth STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :facal-faire cearr STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :companaidh chearr ann an DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :thug am frithealaiche a' bhròg dhut STR_NETWORK_ERROR_CLIENT_CHEATER :bhathar a' feuchainn ri cealgaireachd STR_NETWORK_ERROR_CLIENT_SERVER_FULL :frithealaiche làn STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :bhathar a' cur cus àitheantan STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :cha deach faclan-faire fhaighinn ri àm STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :dh'fhalbh an ùine air STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :bhathar ro fhada a' luchdadh a-nuas a' mhapa STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :bhathar ro fhada a' giullachd a' mhapa ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Dh'fhaoidte gun deach ceangal air chall STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Cha tàinig dàta sam bith on fhrithealaiche fad {NUM} {P diog dhiog diogan diog} # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Geama na stad ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Geama fhathast na stad ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Geama fhathast na stad ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Geama fhathast na stad ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Geama fhathast na stad ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Geama a' leantainn air adhart ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :àireamh dhe chluicheadairean STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :a' ceangal cliantan STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :a làimh STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :sgriobt geama ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :a' fàgail STR_NETWORK_MESSAGE_CLIENT_JOINED :*** ghabh {STRING} sa gheama STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** Ghabh {STRING} sa gheama (Cliant {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** Ghabh {STRING} ann an companaidh {2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Ghabh {STRING} ann mar amharcaiche STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Stèidhich {STRING} companaidh ùr ({2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** Dh'fhalbh {STRING} an geama ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** Dh'atharraich {0:STRING} (a h-)ainm gu {1:STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** Thug {STRING} {2:CURRENCY_LONG} dhan chompanaidh agad STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Thug thu {2:CURRENCY_LONG} dha {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Dhùin am frithealaiche an seisean STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tha am frithealaiche ag ath-thòiseachadh...{}Fuirich greis... # Content downloading window STR_CONTENT_TITLE :{WHITE}Susbaint ri luchdadh a-nuas STR_CONTENT_TYPE_CAPTION :{BLACK}Seòrsa STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Seòrsa na susbaint STR_CONTENT_NAME_CAPTION :{BLACK}Ainm STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ainm na susbainte STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Briog air nì gus fiosrachadh mu dheidhinn a shealltainn{}Thoir cromag sa bhogsa gus a taghadh airson luchdadh a-nuas STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Tagh na h-uile STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Tagh an t-susbaint uile gus a luchdadh a-nuas STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Tagh ùrachaidhean STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Tagh a h-uile susbaint a tha na ùrachadh airson susbaint a tha ann gus a luchdadh a-nuas STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Neo-thagh na h-uile STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Comharraich nach tèid susbaint sam bith a luchdadh a-nuas STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Lorg air làraichean-lìn taobh a-muigh STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Lorg susbaint nach eil ri làimh air seirbheise susbaint OpenTTD is a bheil ri làimh air làraichean lìn nach eil ceangailte ri OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Tha thu a' fàgail OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Dh'fhaoidte gum bi na teirmichean ’s na cumhaichean gus susbaint a luchdadh a-nuas bho làraichean-lìn eile eadar-dhealaichte.{}Feumaidh tu sùil a thoirt air na làraichean-lìn a-muigh mu mar a stàlaicheas tu an t-susbaint ann an OpenTTD.{}A bheil thu airson leantainn air adhart? STR_CONTENT_FILTER_TITLE :{BLACK}Criathrag taga/ainm: STR_CONTENT_OPEN_URL :{BLACK}Tadhail air an làrach-lìn STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Tadhail air làrach-lìn na susbainte seo STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Luchdaich a-nuas STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Tòisich air luchdadh a-nuas na susbainte a thagh thu STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Meud iomlan an luchdaidh a-nuas: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}FIOSRACHADH NA SUSBAINTE STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Cha do thagh thu seo gus a luchdadh a-nuas STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Thagh thu seo gus a luchdadh a-nuas STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Chaidh an eisimeileachd seo a thaghadh gus a luchdadh a-nuas STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Tha seo agad mu thràth STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Tha an t-susbaint seo neo-aithnichte is cha ghabh luchdadh a-nuas ann an OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Thèid seo a chur an àite {STRING} a tha ann mu thràth STR_CONTENT_DETAIL_NAME :{SILVER}Ainm: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Tionndadh: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Tuairisgeul: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Seòrsa: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Meud an luchdaidh a-nuas: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Air a thaghadh air sàilleibh: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Eisimeileachdan: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Tagaichean: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}Chaidh OpenTTD a thogail às aonais taic dha “zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... cha ghabh susbaint sam bith luchdadh a-nuas! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafaigeachd bhunasach STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :IF STR_CONTENT_TYPE_AI_LIBRARY :Tasglann IF STR_CONTENT_TYPE_SCENARIO :{G=m}Cnàmh-sgeul STR_CONTENT_TYPE_HEIGHTMAP :{G=m}Mapa-àirde STR_CONTENT_TYPE_BASE_SOUNDS :Fuaimean bunasach STR_CONTENT_TYPE_BASE_MUSIC :{G=f}Ceòl bhunasach STR_CONTENT_TYPE_GAME_SCRIPT :{G=m}Sgriobt geama STR_CONTENT_TYPE_GS_LIBRARY :{G=m}Tasglann GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}A' luchdadh a-nuas susbaint... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Ag iarraidh faidhlichean... STR_CONTENT_DOWNLOAD_FILE :{WHITE}A' luchdadh a-nuas {STRING} ({NUM} à {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Tha an luchdadh a-nuas coileanta STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{0:BYTES} à {1:BYTES} air a{P 0 "" n n n} luchdadh a-nuas ({2:NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Cha b' urrainn dhuinn ceangal ri frithealaiche na susbainte... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Dh'fhàillig leis an luchdadh a-nuas... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... chaidh an ceangal air chall STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... cha ghabh am faidhle sgrìobhadh STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Cha ghabh am faidhle air a luchdadh a-nuas dì-dhùmhlachadh STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Grafaigean a dhìth STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Tha grafaigeachd a dhìth air OpenTTD ach an obraich e ach cha deach gin sam bith a lorg. an toir thu cead dha OpenTTD gus a' ghrafaigeachd seo a luchdadh a-nuas is a stàladh? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Bheir, luchdaich a' ghrafaigeachd a-nuas STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Cha toir, fàg OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Roghainnean trìd-shoilleireachd STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan sanasan. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan craobhan. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan taighean. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan gnìomhachasan. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan rudan a ghabhas togail a leithid stèiseanan, trèan-lannan is puingean-turais. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan drochaidean. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan structaran a leithid thaighean-solais is tùir chraobh-sgaoilidh. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toglaich trìd-shoilleireachd nan càballan-rèile. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toglaich trìd-shoillearachd nan comharraidhean luchdaidh. Ctrl+Briogadh airson glasadh STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Falaich nithean an àite an dèanamh trìd-shoilleir # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Seall raon-còmhdachaidh STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Air STR_STATION_BUILD_COVERAGE_ON :{BLACK}Dheth STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Na seall raon-còmhdachaidh aig làrach nad bheachd STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Seall raon-còmhdachaidh aig làrach nad bheachd STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Gabhar ri: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Solairear: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Co-aonaich an stèisean STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Tog stèisean fa leth STR_JOIN_WAYPOINT_CAPTION :{WHITE}Co-aonaich a' phuing-thurais STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Tog puing-thurais fa leth # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Tog rathad-iarainn STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Togail rathaid-iarainn dealain STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Tog rathad-iarainn aona-rèile STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Tog rathad-iarainn mhagnaiteach STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tog rathad-iarainn. Toglaidh Ctrl togail/toirt air falbh airson togail rathad-iarainn. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Tog rathad-iarainn sa mhodh fhèin-thogail. Toglaidh Ctrl togail/toirt air falbh airson togail rathad-iarainn. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Tog trèan-lann (gus trèanaichean a cheannach no obair-chàraidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Dèan puing-thurais dhe rèile. Ceanglaidh Ctrl puingean-turais ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Tog stèisean. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Tog comharran rèile. Toglaidh Ctrl eadar comharran saimeafoir/solais{}Slaod gus comharran a thogail rè slighe rèile dìrich. Togaidh Ctrl comharran gu ruige an ath ghobhail{}Toglaidh Ctrl+briogadh a bheil uinneag taghadh nan comharran fosgailte. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Tog drochaid rèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Tog tunail rèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Toglaich togail/toirt air falbh airson slighe-rèile, comharran, puingean-turais is stèiseanan. Cùm Ctrl sìos gus rèile nam puingean-turais is stèiseanan a thoirt air falbh cuideachd STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Iompaich/Àrdaich seòrsa na rèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_RAIL_NAME_RAILROAD :Rathad-iarainn STR_RAIL_NAME_ELRAIL :Rathad-iarainn dealain STR_RAIL_NAME_MONORAIL :Rathad-iarainn aona-rèile STR_RAIL_NAME_MAGLEV :Rathad-iarainn magnaiteach # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Comhair na trèan-lainn STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an trèana-lainn # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Puing-thurais STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Tagh seòrsa na puinge-turais # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Roghainnean nan stèiseanan-rèile STR_STATION_BUILD_ORIENTATION :{BLACK}Comhair STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisean-rèile STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Àireamh dhe shlighean STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Tagh cò mheud clàr a bhios aig an stèisean STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Faide nan clàr STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Tagh dè cho fad ’s a bhios an stèisean STR_STATION_BUILD_DRAG_DROP :{BLACK}Slaod is leig às STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Tog stèisean le slaodadh is leigeil às STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Tagh seòrsa stèisean gus a shealltainn STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Tagh seòrsa an stèisein a tha thu airson togail STR_STATION_CLASS_DFLT :Stèisean bunaiteach STR_STATION_CLASS_WAYP :Puingean-turais # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Roghainn nan comharran STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Comharra bloca (saimeafor){}Seo an seòrsa comharra as bunasaiche is chan fhaod ach aon trèan a bhith san aon bhloca aig an aon àm STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Comharra a-steach (saimeafor){}Bidh seo uaine fhad ’s a tha comharra a-mach uaine san ath roinn dhen t-slighe. Mura h-eil, bidh e dearg STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Comharra a-mach (saimeafor){}Tha an t-aon ghiùlan aige ’s a tha aig comharra bloca ach tha feum air gus an dath mar bu chòir a thoirt air comharran a-steach is ro-chomharran aonaichte STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Comharra aonaichte (saimeafor){}’S e comharra a-steach is a-mach a th' anns a' chomharra aonaichte seo aig an aon àm. Mar sin, ’s urrainn dhut “craobhan" mòra dhe ro-chomharran a thogail STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Comharra slighe (saimeafor){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Faodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Comharra slighe aon-shligheach (saimeafor){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Chan fhaodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Comharra bloca (dealain){}Seo an seòrsa comharra as bunasaiche is chan fhaod ach aon trèan a bhith san aon bhloca aig an aon àm STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Comharra a-steach (dealain){}Bidh seo uaine fhad ’s a tha comharra a-mach uaine san ath roinn dhen t-slighe. Mura h-eil, bidh e dearg STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Comharra a-mach (dealain){}Tha an t-aon ghiùlan aige ’s a tha aig comharra bloca ach tha feum air gus an dath mar bu chòir a thoirt air comharran a-steach is ro-chomharran aonaichte STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Comharra aonaichte (dealain){}’S e comharra a-steach is a-mach a th' anns a' chomharra aonaichte seo aig an aon àm. Mar sin, ’s urrainn dhut “craobhan" mòra dhe ro-chomharran a thogail STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Comharra slighe (dealain){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Faodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Comharra slighe aon-shligheach (dealain){}Leigidh comharra slighe le barrachd air aon trèan dol a-steach dhan bhloca comharra air an aon àm, mas urrainn dhan trèan slighe gu ionad stadaidh sàbhailte a ghlèidheadh. Chan fhaodar dol seachad air comharran slighe àbhaisteach on chùlaibh STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Iompachadh chomharran{}Ma thagh thu seo ’s tu a' briogadh air comharra a tha ann, iompaichidh seo an comharra dhan t-seòrsa a thagh thu. Seallaidh Shift+briogadh tuairmse air cosgaisean an iompachaidh dhut STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dlùths nan comharran air an cruthachadh le slaodadh STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Lùghdaich dlùths nan comharran air an cruthachadh le slaodadh STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Meudaich dlùths nan comharran air an cruthachadh le slaodadh # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Tagh drochaid rèile STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Tagh drochaid rathaid STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Tagh drochaid - briog air an drochaid a thogras tu gus a togail STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Crochaidh, Stàilinn STR_BRIDGE_NAME_GIRDER_STEEL :Teannadair, Stàilinn STR_BRIDGE_NAME_CANTILEVER_STEEL :Starr-chrann, Stàillinn STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Crochaidh, Concraid STR_BRIDGE_NAME_WOODEN :Fiodha STR_BRIDGE_NAME_CONCRETE :Concraid STR_BRIDGE_NAME_TUBULAR_STEEL :Phìobach, Stàilinn STR_BRIDGE_TUBULAR_SILICON :Phìobach, Sileagan # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Tog rathaidean STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tog slighean-trama STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Tog pìos dhe rathad. Toglaidh Ctrl togail/toirt air falbh airson togail rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tog pìos dhe shlighe-trama. Toglaidh Ctrl togail/toirt air falbh airson togail slighe-trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Tog pìos dhe rathad leis a' mhodh fhèin-thogail. Toglaidh Ctrl togail/toirt air falbh airson togail rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Tog pìos dhe slighe-trama sa mhodh fhèin-thogail. Toglaidh Ctrl togail/toirt air falbh airson togail slighe-trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Tog garaids (gus carbadan a cheannach is obair-ghlèidhidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tog trama-lann (gus carbadan a cheannach is obair-ghlèidhidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Tog stèisean bus. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Tog stèisean trama thaistealach. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Tog ionad-luchdaidh nan làraidh. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tog stèisean trama carago. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Cuir rathaidean aon-shligheach an/à comas STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Tog drochaid rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Togh drochaid trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Tog tunail rathaid. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Tog tunail trama. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Toglaich togail/toirt air falbh airson togail rathaidean STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Toglaich togail/tort air falbh airson slighean trama # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Comhair na garaids STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tagh comhair na garaids STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Comhair an trama-lainn STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Tagh comhair an trama-lainn # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Comhair an stèisein bhus STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisein bhus STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Comhair aig ionad-luchdaidh nan làraidh STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair aig ionad-luchdaidh nan làraidh STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Comhair an stèisean trama thaistealach STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisein airson tramaichean thaistealach STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Comhair an stèisein trama carago STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair an stèisein airson tramaichean carago # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Tog slighean-uisge STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Slighean-uisge STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Tog canalan. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Tog locan. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Tog cala (gus longan a cheannach is obair-chàraidh a dhèanamh orra). Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Tog port. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Cuir fleodrainn ris as urrainn dhut cleachdadh mar phuing-thurais. Toglaidh Shift tuairmse cosgaisean/togail STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Tog duct-uisge. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Mìnich raon uisge.{}Tog canal, mura h-eil thu a' cumail Ctrl sìos air àirde na mara far an tuilich thu an tìr timcheall air an àite. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Cuir aibhnichean ann # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Comhair a' chalaidh STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Tagh comhair a' chalaidh # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{G=m}{WHITE}Port STR_STATION_BUILD_DOCK_CAPTION.nom :{G=m}{WHITE}Port STR_STATION_BUILD_DOCK_CAPTION.gen :{G=m}{WHITE}Puirt STR_STATION_BUILD_DOCK_CAPTION.dat :{G=m}{WHITE}Port # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Puirt-adhair STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Tog port-adhair. Ceanglaidh Ctrl stèiseanan ri chèile. Toglaidh Shift togail/sealladh air tuairmse chosgaisean # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Tagh port-adhair STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Tagh meud/seòrsa a' phuirt-adhair STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Seòrsa puirt-adhair STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Co-dhealbhachd {NUM} STR_AIRPORT_SMALL :Beag STR_AIRPORT_CITY :Baile STR_AIRPORT_METRO :Mòr-bhaile STR_AIRPORT_INTERNATIONAL :Eadar-nàiseanta STR_AIRPORT_COMMUTER :Iomlaideach STR_AIRPORT_INTERCONTINENTAL :Thar chuain STR_AIRPORT_HELIPORT :{G=m}Port-heileacoptair STR_AIRPORT_HELIPORT.nom :{G=m}Port-heileacoptair STR_AIRPORT_HELIPORT.gen :{G=m}Puirt-heileacoptair STR_AIRPORT_HELIPORT.dat :{G=m}Port-heileacoptair STR_AIRPORT_HELIDEPOT :Hangar-heileacoptair STR_AIRPORT_HELISTATION :{G=m}Stèisean heileacoptair STR_AIRPORT_HELISTATION.nom :{G=m}Stèisean heileacoptair STR_AIRPORT_HELISTATION.gen :{G=m}Stèisein heileacoptair STR_AIRPORT_HELISTATION.dat :{G=m}Stèisean heileacoptair STR_AIRPORT_CLASS_SMALL :Puirt-adhair beaga STR_AIRPORT_CLASS_LARGE :Puirt-adhair mòra STR_AIRPORT_CLASS_HUB :Puirt-adhair ionaid STR_AIRPORT_CLASS_HELIPORTS :Puirt-adhair heileacoptair STR_STATION_BUILD_NOISE :{BLACK}Fuaim air adhbharachadh: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Cruth-tìre STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Ìslich oisean tìre. Le slaodadh, thèid a' chiad oisean ìsleachadh is an raon a thaghas tu a chur air an aon àirde. Taghaidh Ctrl raon trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Àrdaich oisean tìre. Le slaodadh, thèid a' chiad oisean àrdachadh is an raon a thaghas tu a chur air an aon àirde. Taghaidh Ctrl raon trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Cuir raon tìre air an aon àirde ’s a tha aig a' chiad oisean a thaghas tu. Taghaidh Ctrl raon trastanach. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Ceannaich tìr gus a chleachdadh san àm ri teachd. Toglaidh Shift togail/sealladh air tuairmse chosgaisean # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Tagh oibseact STR_OBJECT_BUILD_TOOLTIP :{BLACK}Tagh oibseact airson togail. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Tagh seòrsa na h-oibseicte a tha thu airson togail STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Ro-shealladh an oibseict STR_OBJECT_BUILD_SIZE :{BLACK}Meud: {GOLD}{NUM} x {NUM} leacan STR_OBJECT_CLASS_LTHS :Taighean-solais STR_OBJECT_CLASS_TRNS :Tùir chraobh-sgaoilidh # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Craobhan STR_PLANT_TREE_TOOLTIP :{BLACK}Tagh seòrsa na craoibhe airson cur. Ma tha craobh air an leac mu thràth, cuiridh seo barrachd chraobhan aig a bheil caochladh dhe sheòrsachan a tha neo-eisimeileach on t-seòrsa a thagh thu STR_TREES_RANDOM_TYPE :{BLACK}Craobhan dhe sheòrsa air thuaiream STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Cuir craobhan dhe sheòrsachan air thuaiream. Toglaidh Shift togail/sealladh air tuairmse chosgaisean STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Craobhan air thuaiream STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Cuir craobhan air thuaiream air feadh na tìre # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Gin cruth-tìre STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Cuir raointean creagach air a' chruth-tìre STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Sònraich raon fàsaich.{}Cùm air Ctrl gus a thoirt air falbh STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Meudaich an raon-tìre a thèid àrdachadh/ìsleachadh STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Lùghdaich an raon-tìre a thèid àrdachadh/ìsleachadh STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Gin tìr air thuaiream STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Cruthaich cnàmh-sgeul ùr STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Ath-shuidhich an cruth-tìre STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Thoir a h-uile sealbh companaidh air falbh on mhapa STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Ath-shuidhich an cruth-tìre STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}A bheil thu cinnteach gu bheil thu airson a h-uile sealbh companaidh a thoirt air falbh? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Gin baile STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Baile ùr STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stèidhich baile ùr. Cha dèan Shift+Briogadh ach tuairmse chosgaisean a shealltainn STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Baile air thuaiream STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stèidhich baile ann an àite air thuaiream STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Iomadh baile air thuaiream STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Còmhdaich am mapa le bailtean air thuaiream STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Ainm a' bhaile: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Cuir a-steach ainm a' bhaile STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Briog gus ainm a' bhaile a chur a-steach STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Ainm air thuaiream STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Gin ainm air thuaiream ùr STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Meud a' bhaile: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Beag STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Meadhanach STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Mòr STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Air thuaiream STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Tagh meud a' bhaile STR_FOUND_TOWN_CITY :{BLACK}Mòr-bhaile STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Fàsaidh mòr-bhailtean nas luaithe na bailtean àbhaisteach{}A' crochadh air na roghainnean, tha iad nas motha nuair a thèid an stèidheachadh STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Co-dhealbhachd rathaidean a' bhaile STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Tagh co-dhealbhachd nan rathaidean aig a' bhaile STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Tùsail STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Rathaidean as fhearr STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Griod 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Griod 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Air thuaiream # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Stèidhich gnìomhachas ùr STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Tagh an gnìomhachas freagarrach bhon liosta seo STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Grunn ghnìomhachasan air thuaiream STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Còmhdaich am mapa le gnìomhachasan air thuaiream STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cosgais: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Rùraich STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Tog STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Maoinich # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Sreath gnìomhachais airson gnìomhachas {STRING.gen} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Sreath gnìomhachais airson carago {STRING.gen} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Gnìomhachasan saothrachaidh STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Gnìomhachasan a ghabhas ris STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Taighean STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Briog air a' ghnìomhachas gus a luchd-solair is ceannachd a shealltainn STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}riog air a' charago gus a luchd-solair is ceannachd a shealltainn STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Seall sreath STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Seall gnìomhachasan a sholaireas is a ghabhas ri carago STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Ceangail ris a' mheanbh-mhapa STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Tagh na gnìomhachasan a tha gan sealltainn air a' mheanbh-mhapa cuideachd STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Tagh carago STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Tagh an carago a tha thu airson sealltainn STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Tagh gnìomhachas STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Tagh an gnìomhachas a tha thu airson sealltainn # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Fiosrachadh air roinn tìre STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cosgais an fhalamhachaidh: {LTBLUE}neo-aithnichte STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cosgais an fhalamhachaidh: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Teachd a-steach leis an fhalamhachadh: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :neo-aithnichte STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Sealbhadair: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Seilbheadair an rathaid: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Seilbheadair na slighe-trama: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Seilbheadair na rathaid-iarainn: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Ùghdarras ionadail: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Chan eil gin STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Ionad: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Air a thogail: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Seòrsa a' phuirt-adhair: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Ainm a' phuirt-adhair: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Ainm leac a' phuirt-adhair: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carago air a ghabhail ris: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Crìoch-luaiths rèile: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Creagan STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Tìr gharbh STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Tìr lom STR_LAI_CLEAR_DESCRIPTION_GRASS :Tìr feurach STR_LAI_CLEAR_DESCRIPTION_FIELDS :Achaidhean STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Tìr sneachdach STR_LAI_CLEAR_DESCRIPTION_DESERT :Fàsach STR_LAI_RAIL_DESCRIPTION_TRACK :Slighe {STRING.gen} STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Slighe {STRING.gen} le comharran bacaidh STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Slighe {STRING.gen} le ro-chomharran STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Slighe {STRING.gen} le comharran a-mach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Slighe {STRING.gen} le comharran aonaichte STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Slighe {STRING.gen} le comharran slighe STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran aon-shligheach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Slighe {STRING.gen} le comharran bacaidh is ro-chomharran STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is a-mach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is aonaichte STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is slighe STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran-bacaidh is aon-shligheach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran a-mach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran aonaichte STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran slighe STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Slighe {STRING.gen} le ro-chomharran is comharran aon-shligheach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Slighe {STRING.gen} le comharran a-mach is aonaichte STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Slighe {STRING.gen} le comharran a-mach is slighe STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran a-mach is aon-shligheach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Slighe {STRING.gen} le comharran aonaichte is slighe STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran aonaichte is aon-shligheach STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Slighe {STRING.gen} le comharran slighe is aon-shligheach STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Trèan-lann {STRING} STR_LAI_ROAD_DESCRIPTION_ROAD :Rathad STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Rathad le solasan-rathaid STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Rathad craobhach STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :{G=f}Garaids STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Staran-rèile STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Slighe-trama # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (ga togail) STR_LAI_TREE_NAME_TREES :Craobhan STR_LAI_TREE_NAME_RAINFOREST :Coille-uisge STR_LAI_TREE_NAME_CACTUS_PLANTS :Cactasan STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :{G=m}Stèisean rèile STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION.nom :{G=m}Stèisean rèile STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION.gen :{G=m}Stèisein rèile STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION.dat :{G=m}Stèisean rèile STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :{G=m}Hangar STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR.nom :{G=m}Hangar STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR.gen :{G=m}Hangair STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR.dat :{G=m}Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :{G=m}Port-adhair STR_LAI_STATION_DESCRIPTION_AIRPORT.nom :{G=m}Port-adhair STR_LAI_STATION_DESCRIPTION_AIRPORT.gen :{G=m}Puirt-adhair STR_LAI_STATION_DESCRIPTION_AIRPORT.dat :{G=m}Port-adhair STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Ionad-luchdaidh nan làraidh STR_LAI_STATION_DESCRIPTION_BUS_STATION :{G=m}Stèisean bus STR_LAI_STATION_DESCRIPTION_BUS_STATION.nom :{G=m}Stèisean bus STR_LAI_STATION_DESCRIPTION_BUS_STATION.gen :{G=m}Stèisein bus STR_LAI_STATION_DESCRIPTION_BUS_STATION.dat :{G=m}Stèisean bus STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :{G=m}Port STR_LAI_STATION_DESCRIPTION_SHIP_DOCK.nom :{G=m}Port STR_LAI_STATION_DESCRIPTION_SHIP_DOCK.gen :{G=m}Puirt STR_LAI_STATION_DESCRIPTION_SHIP_DOCK.dat :{G=m}Port STR_LAI_STATION_DESCRIPTION_BUOY :Fleodrainn STR_LAI_STATION_DESCRIPTION_WAYPOINT :Puing-thurais STR_LAI_WATER_DESCRIPTION_WATER :Uisge STR_LAI_WATER_DESCRIPTION_CANAL :Canal STR_LAI_WATER_DESCRIPTION_LOCK :Loc STR_LAI_WATER_DESCRIPTION_RIVER :Abhainn STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Oirthir no bot STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :{G=m}Cala STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT.nom :{G=m}Cala STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT.gen :{G=m}Calaidh STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT.dat :{G=m}Cala # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Tunail rèile STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunail rathaid STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Drochaid-chrochaidh stàilinn rèile STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Drochaid-theannadair stàilinn rèile STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Drochaid starr-chrainn stàilinn rèile STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Drochaid-chrochaidh concraid neartaichte rèile STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Drochaid fhiodha rèile STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Drochaid concraid rèile STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Drochaid phìobach rèile STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Drochaid-chrochaidh stàilinn rathaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Drochaid-theannadair stàilinn rathaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Drochaid starr-chrainn stàilinn rathaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Drochaid-chrochaidh concraid neartaichte rathaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Drochaid fhiodha rathaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Drochaid concraid rathaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Drochaid phìobach rathaid STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Duct-uisge STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Tùr craobh-sgaoilidh STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Taigh-solais STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Ionad na companaidh STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tìr a' chompanaidh # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Mu dheidhinn OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Còir-lethbhreac tùsail {COPYRIGHT} 1995 Chris Sawyer, a h-uile còir glèidhte STR_ABOUT_VERSION :{BLACK}OpenTTD tionndadh {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 An sgioba OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama STR_SAVELOAD_LOAD_CAPTION :{WHITE}Luchdaich geama STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Sàbhail an cnàmh-sgeul STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Luchdaich cnàmh-sgeul STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Luchdaich mapa-àirde STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Sàbhail am mapa-àirde STR_SAVELOAD_HOME_BUTTON :{BLACK}Briog an-seo gus leum a ghearradh dhan phasgan shàbhalaidh/luchdaidh bhunasach làithreach STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} saora STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liosta dhe na draibhean, pasganan is faidhlichean nan geamannan sàbhailte STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}An t-ainm a thagh thu an-dràsta gus an geama a shàbhaladh STR_SAVELOAD_DELETE_BUTTON :{BLACK}Sguab às STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Sguab às dhan gheama air a shàbhaladh a thagh thu STR_SAVELOAD_SAVE_BUTTON :{BLACK}Sàbhail STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sàbhail an geama làithreach leis an ainm a thagh thu STR_SAVELOAD_LOAD_BUTTON :{BLACK}Luchdaich STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Luchdaich an geama a thagh thu STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Fiosrachadh a' gheama STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Chan eil fiosrachadh ri làimh STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Cuir a-steach ainm ùr gus an geama a shàbhaladh # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Gin saoghal STR_MAPGEN_MAPSIZE :{BLACK}Meud a' mhapa: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Tagh co mheud leacan a bhios sa mhapa. Bidh an àireamh dhe leacan ri làimh beagan nas lugha STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Bailtean: STR_MAPGEN_DATE :{BLACK}Ceann-latha: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gnìomhachasan: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Àirde na loidhne-shneachda: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Gluais an loidhne-shneachda suas aon cheum STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Gluais an loidhne-shneachda sìos aon cheum STR_MAPGEN_RANDOM_SEED :{BLACK}Sìol air thuaiream: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Briog gus sìol air thuaiream a chur a-steach STR_MAPGEN_RANDOM :{BLACK}Cuir sìol air thuaiream STR_MAPGEN_RANDOM_HELP :{BLACK}Atharraich an sìol air thuaiream a thèid a chleachdadh gus cruth-tìre a ghintinn STR_MAPGEN_LAND_GENERATOR :{BLACK}Gineadair crutha-thìre: STR_MAPGEN_TREE_PLACER :{BLACK}Algairim chraobhan: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Seòrsa a' chrutha-thìre: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Àirde na mara: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Aibhnichean: STR_MAPGEN_SMOOTHNESS :{BLACK}Dè cho rèidh: STR_MAPGEN_VARIETY :{BLACK}Sgaoileadh caochlaidh: STR_MAPGEN_GENERATE :{WHITE}Gin am mapa # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Oirean a' mhapa: STR_MAPGEN_NORTHWEST :{BLACK}Iar-thuath STR_MAPGEN_NORTHEAST :{BLACK}Ear-thuath STR_MAPGEN_SOUTHEAST :{BLACK}Ear-dheas STR_MAPGEN_SOUTHWEST :{BLACK}Iar-dheas STR_MAPGEN_BORDER_FREEFORM :{BLACK}Cruth saor STR_MAPGEN_BORDER_WATER :{BLACK}Uisge STR_MAPGEN_BORDER_RANDOM :{BLACK}Air thuaiream STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Air thuaiream STR_MAPGEN_BORDER_MANUAL :{BLACK}A làimh STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Cuairteachadh a' mhapa-àirde: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ainm a' mhapa-àirde: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Meud: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Cuir a-steach sìol air thuaiream STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Atharraich àirde na loidhne-shneachda STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Atharraich am bliadhna-tòiseachaidh # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Seòrsa a' chnàmh-sgeòil STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Tìr rèidh STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Gin tìr rèidh STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Tìr air thuaiream STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Àirde na tìre rèidhe: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Gluais àirde na tìre rèidhe sìos aon cheum STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Gluais àirde na tìre rèidhe suas aon cheum STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Atharraich àirde na tìre rèidhe # Map generation progress STR_GENERATION_WORLD :{WHITE}A' gintinn saoghal... STR_GENERATION_ABORT :{BLACK}Sguir dheth STR_GENERATION_ABORT_CAPTION :{WHITE}Sguir dhe ghintinn an t-saoghail STR_GENERATION_ABORT_MESSAGE :{YELLOW}A bheil thu airson sgur dhe ghintinn an t-saoghail? STR_GENERATION_PROGRESS :{WHITE}{NUM}% coileanta STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Gin saoghal STR_GENERATION_RIVER_GENERATION :{BLACK}Gin aibhnichean STR_GENERATION_TREE_GENERATION :{BLACK}Gin craobhan STR_GENERATION_OBJECT_GENERATION :{BLACK}Gin oibseactan STR_GENERATION_CLEARING_TILES :{BLACK}Gin raon garbh is creagach STR_GENERATION_SETTINGUP_GAME :{BLACK}A' suidheachadh a' gheama STR_GENERATION_PREPARING_TILELOOP :{BLACK}A' ruith lùb-lice STR_GENERATION_PREPARING_SCRIPT :{BLACK}A' ruith sgriobt STR_GENERATION_PREPARING_GAME :{BLACK}Ag ullachadh a' gheama # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Roghainnean NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Mion-fhiosrachadh NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Faidhlichean NewGRF gnìomhach STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Faidhlichean NewGRF neo-ghnìomhach STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Tagh ro-sheata: STR_NEWGRF_FILTER_TITLE :{ORANGE}Sreang criathraige: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Luchdaich an ro-sheata a thagh thu STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Sàbhail ro-sheata STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Sàbhail an liosta seo mar ro-sheata STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Cuir a-steach ainm airson an ro-sheata STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Sguab às dhan ro-sheata STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Sguab às dhan ro-sheata a thagh thu STR_NEWGRF_SETTINGS_ADD :{BLACK}Cuir ris STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Cuir am faidhle NewGRF a thagh thu ris an rèiteachadh agad STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Ath-sganaich na faidhlichean STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ùraich an liosta dhe na faidhlichean NewGRF a tha ri làimh STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Thoir air falbh STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Thoir am faidhle NewGRF a thagh thu air falbh on liosta STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Gluais suas STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Gluais am faidhle NewGRF a thagh thu suas san liosta STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Gluais sìos STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Gluais am faidhle NewGRF a thagh thu sìos san liosta STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Liosta dhe na faidhlichean NewGRF a tha stàlaichte STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Suidhich paramadairean STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Seall paramadairean STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Toglaich am pailead STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Toglaich am pailead aig a' NewGRF a thagh thu.{}Dèan seo ma tha coltas pinc air grafaigeachd a' NewGRF seo sa gheama STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Cuir na h-atharraichean an sàs STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Lorg an t-susbaint a tha a dhìth air loidhne STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Thoir sùil air loidhne a bheil an t-susbaint a tha a dhìth ri fhaighinn STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Ainm an fhaidhle: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}ID a' GRF: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Tionndadh: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}An tionndadh as sine a tha co-chòrdail: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}Suim MD5: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Pailead: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paramadairean: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Chan eil fiosrachadh ri làimh STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Cha deach faidhle a dh’freagras a lorg STR_NEWGRF_SETTINGS_DISABLED :{RED}À comas STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Neo-chòrdail ris an tionndadh seo dhe OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Atharraich paramadairean NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Dùin STR_NEWGRF_PARAMETERS_RESET :{BLACK}Ath-shuidhich STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Suidhich a h-uile paramadair air a luach tùsail STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Paramadair {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Àireamh dhe pharamadairean: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Sgrùd - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Pàrant STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Sgrùd oibseact an sgòip phàraint STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} aig {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oibseact STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Seòrsa an rèile STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paramadair 60+x (sia-dheicheach) caochladair NewGRF # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}A' co-thaobhachadh sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}An t-ath sprite STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Lean air adhart dhan ath sprite àbhaisteach, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an deireadh STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Rach dhan sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Rach dhan sprite a thagh thu. Mura h-e sprite àbhaisteach a th' ann, lean air adhart dhan ath-sprite àbhaisteach STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}An sprite roimhe STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lean air adhart dhan sprite àbhaisteach roimhe, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an toiseach STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Riochdachadh air an sprite a thagh thu an-dràsta. Thèid an co-thaobhadh a chur dhan dàrna taobh nuair a thèid an sprite a tharraing STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Gluais an sprite mu thimcheall, ag atharrachadh nam frith-àireamhan aig X is Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Tagh sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Tagh sprite bho àite sam bith air an sgrìn STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Rach dhan sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Rabhadh: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Mearachd: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Marbhtach: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Thachair mearachd NewGRF marbhtach: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :Chan obraich {1:STRING} leis an tionndadh aig TTDPatch a chaidh aithris le OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Tha {1:STRING} airson tionndadh {STRING} aig TTD STR_NEWGRF_ERROR_UNSET_SWITCH :Chaidh {1:STRING} a dhealbhachadh gus cleachdadh le {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Paramadair mì-dhligheach airson {1:STRING.gen}: paramadair {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :Feumaidh {1:STRING} a bhith air a luchdadh mus tèid {STRING} a luchdadh STR_NEWGRF_ERROR_LOAD_AFTER :Feumaidh {2:STRING} air a bhith a' luchdadh mus tèid {1:STRING} a luchdadh STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Tha OpenTTD tionndadh {2:STRING} no nas fhearr a dhìth air {1:STRING} STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :am faidhle GRF ri eadar-theangachadh STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Chaidh cus NewGRFan a luchdadh STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Ma luchdas tu {1:STRING} mar NewGRF stadaigeach le {STRING}, dh'fhaoidte gun adhbharaich seo dì-shioncronachadh STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite air nach robh dùil (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Tha buadh {4:HEX} gnìomh 0 neo-aithnichte ann (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Chaidh feuchainn ri ID mì-dhligheach a chleachdadh (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Tha sprite coirbte am broinn {STRING.gen}. Thèid a h-uile sprite coirbte a shealltainn na comharradh-ceiste dhearg (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Tha iomadh innteart gnìomh 8 ann (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Chaidh leughadh thar deireadh a' sprite mas fhìor (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Tha sprite no dhà a dhìth air an t-seata ghrafaigeachd bhunasach a tha thu a' cleachdadh an-dràsta.{}Feuch an ùraich thu an seata grafaigeachd bunasach STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Tha sprite no dhà a dhìth air an t-seata ghrafaigeachd bhunasach a tha thu a' cleachdadh an-dràsta.{}Feuch an ùraich thu an seata grafaigeachd bunasach.{}Bhon a tha thu a' cluich le {YELLOW}snapshot leasachaidh aig OpenTTD{WHITE}, ’S dòcha gu bheil {YELLOW} snapshot leasachaidh dhen t-seata grafaigeachd bunasach{WHITE} a dhìth ort cuideachd STR_NEWGRF_ERROR_GRM_FAILED :Chan eil na goireasan GRF a chaidh iarraidh ri làimh (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Chaidh {1:STRING} a chur à comas le {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Fòrmat co-dhealbhachd sprite mì-dhligheach/neo-aithnichte (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}An aire! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Tha thu an impis geama a tha a’ ruith atharrachadh. Dh’fhaoidte gun tuislich seo OpenTTD no gum bris e cor a' gheama. Na dèan aithisg air buga mu na duilgheadasan seo.{}A bheil thu cinnteach dha-rìribh mu dheidhinn seo? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Cha ghabh am faidhle cur ris: ID GRF dùblaichte STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Cha deach faidhle a dh'fhreagras a lorg (chaidh GRF co-chòrdail a luchdadh) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Cha ghabh am faidhle cur ris: Rachadh seo thairis air na tha ceadaichte dhe dh'fhaidhlichean NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Chaidh GRF(an) co-chòrdail a luchdadh airson nam faidhlichean a tha a dhìth STR_NEWGRF_DISABLED_WARNING :{WHITE}Chaidh am faidhle/na faidhlichean GRF a tha a dhìth a chur à comas STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Faidhle/faidhlichean GRF a dhìth STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Dh'fhaoidte gun tuislich OpenTTD ma leanas tu air a' gheama. Na dèan aithisg air buga mu thuisleachaidhean an uairsin.{}A bheil thu cinnteach dha-rìribh gu bheil thu airson leantainn air a' gheama? # NewGRF status STR_NEWGRF_LIST_NONE :Chan eil gin STR_NEWGRF_LIST_ALL_FOUND :Tha a h-uile faidhle ann STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Chaidh faidhlichean co-chòrdail a lorg STR_NEWGRF_LIST_MISSING :{RED}Tha faidhlichean a dhìth # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Tha e coltach gun adhbharaich an NewGRF “{0:STRING}" dì-shioncronachadh is/no tuisleadh STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Dh'atharraich a staid a' charbaid-cumhachd airson “{1:ENGINE}" nuair nach robh e ann an trèan-lann STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Dh'atharraich e faide a' charbaid/na trèan airson “{1:ENGINE}" nuair nach robh e/i ann an garaids/trèan-lann STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tha faide mì-dhligheach aig an trèan “{VEHICLE}" le “{COMPANY}". Tha e coltach gu bheil duilgheadasan le NewGRF as coireach. Dh'fhaoidte gun dì-shioncronaich no gun tuislich an geama STR_NEWGRF_BUGGY :{WHITE}Tha an NewGRF “{0:STRING}" a' toirt seachad fiosrachadh mealltach STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Tha am fiosrachadh carago/mùthaidh airson “{1:ENGINE}" eadar-dhealaichte on liosta cheannaich an dèidh na togail. Dh'fhaoidte nach mùth fèin-nuadhachadh/-leasachadh mar bu chòir STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Dh'adhbharaich “{1:STRING}" lùb gun chrìch ann an ais-ghairm an dèanadais STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Thill an ais-ghairm {1:HEX} toradh {2:HEX}neo-aithnichte/mì-dhligheach # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} dhe STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}A' sganadh NewGRFan STR_NEWGRF_SCAN_MESSAGE :{BLACK}A' sganadh NewGRFan. A' crochaidh air na tha dhiubh ann, dh'fhaoidte gun toir seo greis... STR_NEWGRF_SCAN_STATUS :{BLACK}Chaidh {NUM} NewGRF{P "" "" an ""} a-mach à mu {NUM} NewGRF{P "" "" an ""} a sganadh STR_NEWGRF_SCAN_ARCHIVES :A' sganadh airson tasglannan # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Liosta nan sanasan - {COMMA} {P sanas shanas sanasan sanas} STR_SIGN_LIST_MATCH_CASE :{BLACK}Aire do litrichean mòra is beaga STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Toglaich aire do litrichean mòra is beaga nuair a thèid coimeas a dhèanamh eadar ainm sanais is sreang na criathraige # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Deasaich teacsa an t-sanais STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Rach dhan ath shanas STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Rach dhan t-sanas roimhe STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Cuir a-steach ainm airson an t-sanais # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bailtean STR_TOWN_DIRECTORY_NONE :{ORANGE}- Chan eil gin - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ainmean nam bailtean - briog air ainm gus am prìomh-shealladh a mheadhanachadh air a' bhaile. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' bhaile STR_TOWN_POPULATION :{BLACK}Sluagh an t-saoghail: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Mòr-bhaile) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Sluagh: {ORANGE}{COMMA}{BLACK} Taighean: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Taistealaich am mìos mu dheireadh: {ORANGE}{COMMA}{BLACK} as motha: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post am mìos mu dheireadh: {ORANGE}{COMMA}{BLACK} as motha: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carago a tha a dhìth ach am fàs am baile: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Feum air {ORANGE}{STRING} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{BLACK}Feum air {ORANGE}{STRING}{BLACK} sa gheamhradh STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} air a lìbhrigeadh STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (a dhìth fhathast) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (air lìbhrigeadh) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Fàsaidh am baile gach uile {ORANGE}{COMMA}{BLACK} latha STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Fàsaidh am baile gach uile {ORANGE}{COMMA}{BLACK} latha (maoinichte) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{RED}Chan eil {BLACK}am baile a' fàs STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Cuingeachaidhean fuaime sa bhaile: {ORANGE}{COMMA}{BLACK} air a char as motha: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' bhaile. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' bhaile STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Ùghdarras ionadail STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Seall fiosrachadh air an ùghdarras ionadail STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Atharraich ainm a' bhaile STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Meudaich STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Dèan am baile nas motha STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Sguab às STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Sguab às dhan bhaile seo gu tur STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Thoir ainm ùr air a' bhaile # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Ùghdarras ionadail aig {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Rang na companaidh giùlain: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Gnìomhan ri làimh: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liosta dhe rudan as urrainn dhut dèanamh sa bhaile seo - briog air nì airson barrachd fiosrachaidh STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Dèan seo STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Dèan an gnìomh a thagh thu air an liosta gu h-àrd STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Iomairt shanasachd bheag STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Iomairt shanasachd mheadhanach STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Iomairt shanasachd mhòr STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Maoinich ath-thogail nan rathaidean ionadail STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Tog ìomhaigh air seilbheadair na companaidh STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Maoinich togalaichean ùra STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Ceannaich còirichean giùlain às-dùnach STR_LOCAL_AUTHORITY_ACTION_BRIBE :Thoir brìbeadh dhan ùghdarras ionadail STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Dèan iomairt shanasachd bheag ionadail gus barrachd thaistealach is carago a thadhal dha na seirbheisean giùlain agad.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Dèan iomairt shanasachd mheadhanach ionadail gus barrachd thaistealach is carago a thadhal dha na seirbheisean giùlain agad.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Dèan iomairt shanasachd mhòr ionadail gus barrachd thaistealach is carago a thadhal dha na seirbheisean giùlain agad.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Maoinich ath-thogail rathaidean a' bhaile. Adhbharaichidh seo bacaidhean mòra air trafaig-rathaid gu ruige 6 mìosan.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Tog ìomhaigh gus urram a thoirt air a chompanaidh agad.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Maoinich togalaichean malairt ùra sa bhaile.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Ceannaich còirichean giùlain às-dùnach sa bhaile fad bliadhna. Cha toir an t-ùghdarras ionadail cead air taistealaich is carago gus stèiseanan aig companaidhean eile a chleachdadh.{}Cosgais: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Ceannaich an t-ùghdarras ionadail ach an toir iad rangachadh as fhearr dhut, ach tha cunnart ann gum faigh thu peanas mòr ma thèid do ghlacadh.{}Cosgais: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Amasan STR_GOALS_GLOBAL_TITLE :{BLACK}Amasan coitcheann: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Chan eil gin - STR_GOALS_COMPANY_TITLE :{BLACK}Amasan na companaidh: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Briog air an amas gus am prìomh-shealladh a mheadhanachadh air gnìomhachas/baile/leac. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais/a' bhaile/na lice # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Ceist STR_GOAL_QUESTION_CAPTION_INFORMATION :Fiosrachadh STR_GOAL_QUESTION_CAPTION_WARNING :Rabhadh STR_GOAL_QUESTION_CAPTION_ERROR :Mearachd ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Sguir dheth STR_GOAL_QUESTION_BUTTON_OK :Ceart ma-thà STR_GOAL_QUESTION_BUTTON_NO :Chan eil STR_GOAL_QUESTION_BUTTON_YES :Tha STR_GOAL_QUESTION_BUTTON_DECLINE :Diùlt STR_GOAL_QUESTION_BUTTON_ACCEPT :Gabh ris STR_GOAL_QUESTION_BUTTON_IGNORE :Leig seachad STR_GOAL_QUESTION_BUTTON_RETRY :Feuch ris a-rithist STR_GOAL_QUESTION_BUTTON_PREVIOUS :Am fear roimhe STR_GOAL_QUESTION_BUTTON_NEXT :An t-ath-fhear STR_GOAL_QUESTION_BUTTON_STOP :Stad STR_GOAL_QUESTION_BUTTON_START :Tòisich STR_GOAL_QUESTION_BUTTON_GO :Siuthad STR_GOAL_QUESTION_BUTTON_CONTINUE :Lean air adhart STR_GOAL_QUESTION_BUTTON_RESTART :Ath-thòisich STR_GOAL_QUESTION_BUTTON_POSTPONE :Cuir na dhàil STR_GOAL_QUESTION_BUTTON_SURRENDER :Gèill STR_GOAL_QUESTION_BUTTON_CLOSE :Dùin # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Tarrailean STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Tarrailean gan tairgsinn airson seirbheisean a bheir: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} bho {STRING} gu {STRING}{YELLOW} (ron {DATE_SHORT.dat}) STR_SUBSIDIES_NONE :{ORANGE}- Chan eil gin - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Seirbheisean a gheibh tarrail mu thràth: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} bho {STRING} gu {STRING}{YELLOW} ({COMPANY}{YELLOW}, gu ruige {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Briog air an t-seirbheis gus am prìomh-shealladh a mheadhanachadh air a' ghnìomhachas/bhaile. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais/a' bhaile # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Ainmean nan stéiseanan - briog air ainm gus am prìomh-shealladh a mheadhanachadh air an stèisean. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad an stèisein STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Cùm Ctrl sìos gus barrachd air aon nì a thaghadh STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stèisean{P "" "" an ""} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Chan eil gin - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Tagh a h-uile goireas STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Tagh na h-uile seòrsa carago (a' gabhail a-steach gun charago a' feitheamh) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Chan eil carago dhe sheòrsa sam bith a' feitheamh # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}A' feitheamh: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} bho {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Na ghabhar ris STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Seall liosta a' charago a thèid a ghabhail ris STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Gabhar ri: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tha còirichean giùlain às-dùnach aig an stèisean seo sa bhaile seo. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{BLACK}Cheannaich {YELLOW}{COMPANY}{BLACK} còirichean giùlain às-dùnach sa bhaile seo. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rangachaidhean STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Seall rangachaidhean nan stèiseanan STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Rangachadh ionadail na seirbheise giùlain: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Sgriosail STR_CARGO_RATING_VERY_POOR :Glè dhona STR_CARGO_RATING_POOR :Dona STR_CARGO_RATING_MEDIOCRE :Meadhanach STR_CARGO_RATING_GOOD :Math STR_CARGO_RATING_VERY_GOOD :Glè mhath STR_CARGO_RATING_EXCELLENT :Uabhasach math STR_CARGO_RATING_OUTSTANDING :Barraichte ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an stèisean. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad an stèisein STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Atharraich ainm an stèisein STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Seall a h-uile trèan is an stèisean seo air a' chlàr-ama aice STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Seall a h-uile carbad-rathaid is an stèisean seo air a' chlàr-ama aige STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Seall a h-uile carbad-adhair is am port-adhair seo air an clàr-ama aige STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Seall a h-uile long is am port seo air a' chlàr-ama aice STR_STATION_VIEW_RENAME_STATION_CAPTION :Thoir ainm ùr air an stèisean/ionad-luchdaidh STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Dùin am port-adhair STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Bac carbadan-adhair bho laighe air a' phort-adhair seo # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' phuing-thurais. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na puinge-turais STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Thoir ainm ùr air a' phuing-thurais STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an fhleodrainn. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na fleodrainn STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Atharraich ainm an fhleodrainn STR_EDIT_WAYPOINT_NAME :{WHITE}Deasaich ainm na puinge-turais # Finances window STR_FINANCES_CAPTION :{WHITE}Maoin aig {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Caiteachas/Teachd a-steach STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Togail STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Carbadan ùra STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan trèanaichean STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan carbadan-rathaid STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan carbadan-adhair STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Cosgaisean ruith nan long STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Cumail suas nan sealbh STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Teachd a-steach nan trèanaichean STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Teachd a-steach nan carbadan-rathaid STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Teachd a-steach nan carbadan-adhair STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Teachd a-steach nan long STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Luach-rèidh iasaid STR_FINANCES_SECTION_OTHER :{GOLD}Eile STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Iomlan: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balans a' bhanca STR_FINANCES_LOAN_TITLE :{WHITE}Iasad STR_FINANCES_MAX_LOAN :{WHITE}Iasad as motha: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Gabh {CURRENCY_LONG} air iasad STR_FINANCES_BORROW_TOOLTIP :{BLACK}Meudaich an iasad. Le Ctrl+briogadh, gabhaidh tu na dh'fhaodas tu air iasad STR_FINANCES_REPAY_BUTTON :{BLACK}Pàigh {CURRENCY_LONG} air ais STR_FINANCES_REPAY_TOOLTIP :{BLACK}Pàigh pàirt dhen iasad air ais. Le Ctrl+briogadh, pàighidh tu air ais nas urrainn dhut STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Bun-structar # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Stiùiriche) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Air a stèidheachadh: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Sgeama nan dathan: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Carbadan: STR_COMPANY_VIEW_TRAINS :{G=f}{WHITE}{COMMA} {P trèan thrèan trèanaichean trèan} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} {P charbad-rathaid charbad-rathaid carbadan-rathaid carbad-rathaid} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} {P charbad-adhair charbad-adhair carbadan-adhair carbad-adhair} STR_COMPANY_VIEW_SHIPS :{G=f}{WHITE}{COMMA} {P long long longan long} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Gun charbad STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Luach a' chompanaidh: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% le {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Bun-structar: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} {P earrann earrann earrannan earrann} rèile STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} {P earrann earrann earrannan earrann} rathaid STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} {P leac leac leacan leac} uisge STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} {P leac leac leacan leac} stèisein STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} {P phort-adhair phort-adhair puirt-adhair port-adhair} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Gun bhun-structar STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Tog ionad na companaidh STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Tog ionad na companaidh STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Seall ionad na companaidh STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Seall ionad na companaidh STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Imrich ionad na companaidh STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ath-thog ionad na companaidh àiteigin eile airson cosgais dhe 1% dhe luach a' chompanaidh. Seallaidh Shift+briogadh tuairmse nan cosgaisean gun a bhith ag imrich ionad na companaidh STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Mion-fhiosrachadh STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Seall cunntadh mionaideach a' bhun-structair STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Aghaidh ùr STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Tagh aghaidh ùr airson an stiùiriche STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Sgeama nan dathan STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Atharraich dathan na companaidh STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Ainm na companaidh STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Atharraich ainm na companaidh STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Ainm an stiùiriche STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Thoir ainm ùr air an stiùiriche STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Ceannaich earrann dhe 25% aig a' chompanaidh STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Reic earrann dhe 25% aig a' chompanaidh STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Ceannaich earrann dhe 25% aig a' chompanaidh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' cheannach earrann STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Reic earrann dhe 25% aig a' chompanaidh seo. Seallaidh Shift+briogadh tuairmse air an teachd a-steach gun a bhith a' reic earrann sam bith STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Ainm na companaidh STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ainm an stiùiriche STR_BUY_COMPANY_MESSAGE :{WHITE}Tha sinn a' sireadh companaidh giùlain a ghabhas stiùir air a' chompanaidh againn.{}{}A bheil thu airson {COMPANY} a cheannach airson {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Am bun-structar aig {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Earrannan rèile: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Comharran STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Earrannan rathaid: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Rathad STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Slighe-trama STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Leacan uisge: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canalan STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stèiseanan: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Leacan stèisein STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Puirt-adhair STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/bliadhna ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/bliadhna # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Gnìomhachasan STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Gun ghnìomhachas - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% air a ghiùlan) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% air a ghiùlan) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ainmean nan gnìomhachasan - briog air an ainm gus am prìomh-shealladh a mheadhanachadh air a' ghnìomhachais. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Dèanadas sa mhìos seo chaidh: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% air a ghiùlan) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' ghnìomhachas. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' ghnìomhachais STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ìre an dèanadais: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Carago a' feitheamh air giullachd: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Atharraich an saothrachaidh (iomadach aig 8, suas gu 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Atharraich ìre an saothrachaidh (ceudad, suas gu 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} {P trèan thrèan trèanaichean trèan} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} {P charbad charbad carbadan carbad}-rathaid STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} long{P "" "" an ""} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} {P charbad charbad carbadan carbad}-adhair STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trèanaichean - briog air trèana airson fiosrachaidh STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Carbadan-rathaid - briog air carbad airson fiosrachaidh STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Longan - briog air long airson fiosrachaidh STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Carbadan-adhair - briog air carbad airson fiosrachaidh STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Prothaid am bliadhna: {CURRENCY_LONG} (an-uiridh: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trèanaichean ri làimh STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Carbadan ri làimh STR_VEHICLE_LIST_AVAILABLE_SHIPS :Longan ri làimh STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Carbadan-adhair ri làimh STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Seall liosta dhe na co-dhealbhachdan einnsein airson an t-seòrsa carbaid seo STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Stiùirich an liosta STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Cuir òrduighean dhan a h-uile carbad air an liosta seo STR_VEHICLE_LIST_REPLACE_VEHICLES :Leasaich carbadan STR_VEHICLE_LIST_SEND_FOR_SERVICING :Cuir airson obrach-glèidhidh STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Cuir gu trèan-lann STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Cuir gu garaids STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Cuir gu cala STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Cuir gu hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Briog gus a h-uile carbad air an liosta a chur na stad STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Briog gus a h-uile carbad air an liosta a thòiseachadh STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Òrduighean gan co-roinneadh le {COMMA} {P charbad charbad carbadan carbad} # Group window STR_GROUP_ALL_TRAINS :Na h-uile trèan STR_GROUP_ALL_ROAD_VEHICLES :Na h-uile carbad-rathaid STR_GROUP_ALL_SHIPS :Na h-uile long STR_GROUP_ALL_AIRCRAFTS :Na h-uile carbad-adhair STR_GROUP_DEFAULT_TRAINS :Trèanaichean gun bhuidheann STR_GROUP_DEFAULT_ROAD_VEHICLES :Carbadan-rathaid gun bhuidheann STR_GROUP_DEFAULT_SHIPS :Longan gun bhuidheann STR_GROUP_DEFAULT_AIRCRAFTS :Carbadan-adhair gun bhuidheann STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Buidhnean - briog air buidheann gus a h-uile carbad a tha sa bhuidheann seo a shealltainn STR_GROUP_CREATE_TOOLTIP :{BLACK}Briog gus buidheann a chruthachadh STR_GROUP_DELETE_TOOLTIP :{BLACK}Sguab às dhan bhuidheann a thagh thu STR_GROUP_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air a' bhuidheann a thagh thu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Briog gus am buidheann seo a dhìon bhon fhèin-leasachadh uile-choitcheann STR_GROUP_ADD_SHARED_VEHICLE :Cuir carbadan co-roinnte ris STR_GROUP_REMOVE_ALL_VEHICLES :Thoir a h-uile carbad air falbh STR_GROUP_RENAME_CAPTION :{BLACK}Thoir ainm ùr air buidheann # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Carbadan-rèile ùra STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Carbadan-rèile dealain ùra STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Carbadan aona-rèile ùra STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Carbadan magnaiteach ùra STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Carbadan-rèile ùra STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Carbadan-rathaid ùra STR_BUY_VEHICLE_SHIP_CAPTION :Longan ùra STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Carbadan-adhair ùra STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cosgais: {GOLD}{CURRENCY_LONG}{BLACK} Cuideam: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Luaths: {GOLD}{VELOCITY}{BLACK} Cumhachd: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Luaths: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Luaths air a' chuain: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Luaths air canal/abhainn: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Cosgaisean ruith: {GOLD}{CURRENCY_LONG}/bliadhna STR_PURCHASE_INFO_CAPACITY :{BLACK}Tomhas-lìonaidh: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(gabhaidh mùthadh) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Air a dhealbhadh: {GOLD}{NUM}{BLACK} Beatha: {GOLD}{COMMA} bliadhna STR_PURCHASE_INFO_RELIABILITY :{BLACK}Earbsachd as motha: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cosgais: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Cuideam: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cosgais: {GOLD}{CURRENCY_LONG}{BLACK} Luaths: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Tomhas-lìonaidh: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Carbadan le cumhachd: {GOLD}+{POWER}{BLACK} Cuideam: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Gabhaidh mùthadh airson: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Na h-uile seòrsa dhe charago STR_PURCHASE_INFO_ALL_BUT :Na h-uile ach {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Spàirn tàirnge as motha: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Astar: {GOLD}{COMMA} {P leac leac leacan leac} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Roghainn nan carbadan-rèile - briog air carbad airson fiosrachaidh STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Roghainn nan carbadan-rathaid - briog air carbad airson fiosrachaidh STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Roghainn nan long - briog air long airson fiosrachaidh STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Roghainn nan carbadan-adhair - briog air carbad airson fiosrachaidh STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich long STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Ceannaich carbad-adhair STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an carbad-rèile a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an carbad-rathaid a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an long a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaich an carbad-adhair a thagh thu. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Thoir ainm ùr air STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Thoir ainm ùr air STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Thoir ainm ùr air STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Thoir ainm ùr air STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe charbad-rèile STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe charbad-rathaid STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe long STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an t-seòrsa dhe charbad-adhair STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe charbad-rèile STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe charbad-rathaid STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe long STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Thoir ainm ùr air an t-seòrsa dhe charbad-adhair # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Thoir ainm ùr air an togalach seo STR_DEPOT_RENAME_DEPOT_CAPTION :Ainm ùr na garaids / na trèan-lann / a' chala / a' hangair STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} {P charbad charbad carbadan carbad}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trèanaichean - slaod carbad le briogadh deas gus a chur ris/a thoirt air falbh bhon trèan no dèan briogadh deas airson fiosrachaidh. Cùm Ctrl sìos gus an dà rud a chur an sàs air a' cheangal a leanas STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Carbadan - Dèan briogadh deas air a' charbad airson fiosrachaidh STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Longan - Dèan briogadh deas air an long airson fiosrachaidh STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Carbadan-adhair - Dèan briogadh deas air a' charbad airson fiosrachaidh STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Slaod carbad-rèile an-seo gus a reic STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Slaod carbad-rathaid an-seo gus a reic STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Slaod long an-seo gus a reic STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Slaod carbad-adhair an-seo gus a reic STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Slaod einnsean trèan an-seo gus an trèan shlàn a reic STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Reic a h-uile trèan san trèan-lann STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Reic a h-uile carbad-rathaid sa gharaids STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Reic a h-uile long sa chala STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Reic a h-uile carbad-adhair sa hangar STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Fèin-leasaich a h-uile trèan san trèan-lann STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Fèin-leasaich a h-uile carbad-rathaid sa gharaids STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Fèin-leasaich a h-uile long sa chala STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Fèin-leasaich a h-uile carbad-adhair sa hangar STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Carbadan ùra STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Carbadan ùra STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Longan ùra STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Carbadan ùra STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich carbad-rèile ùr STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich carbad-rathaid ùr STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich long ùr STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaich carbad-adhair ùr STR_DEPOT_CLONE_TRAIN :{BLACK}Dèan lethbhreac dhe thrèan STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Dèan lethbhreac dhe charbad STR_DEPOT_CLONE_SHIP :{BLACK}Dèan lethbhreac dhe long STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Dèan lethbhreac dhe charbad STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe thrèan, a' gabhail a-steach a h-uile carbad. Briog air a' phutan seo is an uairsin air trèan taobh a-staigh no a-muigh na trèan-lainn. Thoir na h-aon òrduighean dhi le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-rathaid. Briog air a' phutan seo is an uairsin air carbad taobh a-staigh no a-muigh na garaids. Thoir na h-aon òrduighean dha le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe long. Briog air a' phutan seo is an uairsin air long taobh a-staigh no a-muigh a' chalaidh. Thoir na h-aon òrduighean dhi le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-adhair. Briog air a' phutan seo is an uairsin air carbad taobh a-staigh no a-muigh a' hangair. Thoir na h-aon òrduighean dha le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an trèan-lann. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na trèan-lainn STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' gharaids. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na garaids STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' chala. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' chalaidh STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' hangar. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' hangair STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile trèana is an trèan-lann seo sna h-òrduighean aice STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile carbad-rathaid is a' gharaids seo sna h-òrduighean aige STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile long is an cala seo sna h-òrduighean aice STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Faigh liosta dhe na h-uile carbad-adhair is an hangar seo sna h-òrduighean aige STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Briog gus a h-uile trèan a chur na stad san trèan-lann STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Briog gus a h-uile carbad-rathaid a chur na stad sa gharaids STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Briog gus a h-uile long a chur na stad sa chala STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Briog gus a h-uile carbad-adhair a chur na stad sa hangar STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Briog gus a h-uile trèan san trèan-lann a chur a' dol STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Briog gus a h-uile carbad-rathaid sa gharaids a chur a' dol STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Briog gus a h-uile long sa chala a chur a' dol STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Briog gus a h-uile carbad-adhair sa hangar a chur a' dol STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Tha thu an impis na h-uile carbad sa gharaids / san trèan-lann / sa chala / sa hangar seo a reic. A bheil thu cinnteach? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Brath bho dhèanadair a' charbaid STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Tha sinn air {STRING} ùr a dhealbhadh - a bheil ùidh agaibh ann ’s nach cleachd ach sibh fhèin e fad bliadhna ach am faic sinn dè cho math ’s a dh’obraicheas e mus reic sinn don a h-uile duine e? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :einnsean-rèile STR_ENGINE_PREVIEW_ROAD_VEHICLE :carbad-rathaid STR_ENGINE_PREVIEW_AIRCRAFT :carbad-adhair STR_ENGINE_PREVIEW_SHIP :{G=f}long STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einnsean aona-rèile STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :einnsean magnaiteach STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cosgais: {CURRENCY_LONG} Cuideam: {WEIGHT_SHORT}{}Luaths: {VELOCITY} Cumhachd: {POWER}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna{}Tomhas-lìonaidh: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cosgais: {CURRENCY_LONG} Cuideam: {WEIGHT_SHORT}{}Luaths: {VELOCITY} Cumhachd: {POWER} Neart: {6:FORCE}{}Cosgaisean ruith: {4:CURRENCY_LONG}/bliadhna{}Tomhas-lìonaidh: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY} Astar: {COMMA} leacan{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY} Astar: {COMMA} leacan{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Leasaich {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :{G=f}Trèan STR_REPLACE_VEHICLE_ROAD_VEHICLE :Carbad-rathaid STR_REPLACE_VEHICLE_SHIP :{G=f}Long STR_REPLACE_VEHICLE_AIRCRAFT :Carbad-adhair STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Tagh seòrsa an einnsein airson leasachadh STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Tagh an seòrsa ùr dhen einnsean a bu toil leat a chleachdadh an àite an fhir a thagh thu air an taobh chlì STR_REPLACE_VEHICLES_START :{BLACK}Tòisich le leasachadh nan carbadan STR_REPLACE_VEHICLES_NOW :Leasaich a h-uile carbad an-dràsta STR_REPLACE_VEHICLES_WHEN_OLD :Na leasaich ach seann charbadan STR_REPLACE_HELP_START_BUTTON :{BLACK}Brùth gus tòiseachadh le leasachadh an t-seòrsa einnsein a thagh thu air an taobh chlì type leis an t-seòrsa einnsein a thagh thu air an taobh deas STR_REPLACE_NOT_REPLACING :{BLACK}Gun leasachadh STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Cha deach carbad sam bith a thaghadh STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} nuair a bhios e sean STR_REPLACE_VEHICLES_STOP :{BLACK}Sguir dhe leasachadh nan carbadan STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Briog air ach nach tèid einnseanan dhen t-seòrsa a thagh thu air an taobh chlì a leasachadh STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}A' leasachadh: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Gearr leum eadar uinneagan leasachadh nan einnseanan is nan carbadan STR_REPLACE_ENGINES :Einnseanan STR_REPLACE_WAGONS :Carbadan STR_REPLACE_HELP_RAILTYPE :{BLACK}Tagh an seòrsa dhe rèile is tu airson einnseanan a leasachadh air a shon STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Seallaidh seo an einnsean a tha ga chur an àite an einnsein a thagh thu air an taobh chlì, ma tha gin ann STR_REPLACE_RAIL_VEHICLES :Carbadan-rèile STR_REPLACE_ELRAIL_VEHICLES :Carbadan-rèile dealain STR_REPLACE_MONORAIL_VEHICLES :Carbadan aona-rèile STR_REPLACE_MAGLEV_VEHICLES :Carbadan magnaiteach STR_REPLACE_REMOVE_WAGON :{BLACK}A' toirt air falbh carbad: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Glèidh faide aig trèan nuair a thèid fhèin-leasachadh le toirt air falbh nan carbadan (bho thoiseach na trèan a-mach) ma dh'fhàsas an trèan nas fhaide le einnsean ùr # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an trèan. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na trèan STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' charbad. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' charbaid STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air an long. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad na luinge STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Meadhanaich am prìomh-shealladh air a' charbad-adhair. Fosglaidh Ctrl+briogadh port-seallaidh ùr air ionad a' charbaid-adhair STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir an trèan dhan trèan-lann. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir carbad dhan gharaids. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir long dhan chala. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Cuir carbad-adhair dhan hangar. Cha dèan Ctrl+briogadh ach obair-ghlèidhidh STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe thrèan, a' gabhail a-steach a h-uile carbad. Thoir na h-aon òrduighean dhan tè ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-rathaid. Thoir na h-aon òrduighean dhan fhear ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe long. Thoir na h-aon òrduighean dhan tè ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ceannaichidh seo lethbhreac dhe charbad-adhair. Thoir na h-aon òrduighean dhan fhear ùr le Ctrl+briogadh. Seallaidh Shift+briogadh tuairmse air na cosgaisean gun a bhith a' ceannach dad STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Thoir air an trèan leantainn air adhart gun a bhith a' feitheamh air a' chomharra STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Mùth an trèan ach an gabh i ri seòrsa dhe charago eile STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Mùth an carbad-rathaid ach an gabh e ri seòrsa dhe charago eile STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Mùth an long ach an gabh i ri seòrsa dhe charago eile STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Mùth an carbad-adhair ach an gabh e ri seòrsa dhe charago eile STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Thoir tilleadh air an trèan STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Thoir tilleadh air a' charbad STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Seall òrduighean na trèan. Cleachd Ctrl+briogadh gus an clàr-ama aig an trèan a shealltainn STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Seall òrduighean a' charbaid. Cleachd Ctrl+briogadh gus an clàr-ama aig a' charbad a shealltainn STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Seall òrduighean na luinge. Cleachd Ctrl+briogadh gus an clàr-ama aig an long a shealltainn STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Seall òrduighean a' charbaid. Cleachd Ctrl+briogadh gus an clàr-ama aig a' charbad a shealltainn STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh na trèan STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh a' charbaid-rathaid STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh na luinge STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Seall mion-fhiosrachadh a' charbaid STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh na trèan seo - briog gus an trèan a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh a' charbaid seo - briog gus an carbad a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh na luinge seo - briog gus an long a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Gnìomh a' charbaid-adhair seo - briog gus an carbad a chur a' dol/na stad. Sgrolaich dhan cheann-uidhe le Ctrl+briogadh # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}A' luchdadh / dì-luchdadh STR_VEHICLE_STATUS_LEAVING :{LTBLUE}A' fàgail STR_VEHICLE_STATUS_CRASHED :{RED}Tubaist! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Briste STR_VEHICLE_STATUS_STOPPED :{RED}Na stad STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}A' stad, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Gun chumhachd STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}A' feitheamh airson slighe saoire STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Ro fhada dhan ath-cheann-uidhe STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}A' dèanamh air {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Gun òrdugh, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}A' dèanamh air {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}A' dèanamh air {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Obair-ghlèidhidh aig {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Na stad STR_VEHICLE_COMMAND_STOPPED :{RED}Na stad STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Air tòiseachadh STR_VEHICLE_COMMAND_STARTED :{GREEN}Air tòiseachadh # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Fiosrachadh) STR_VEHICLE_NAME_BUTTON :{BLACK}Ainm STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Thoir ainm air an trèan STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Thoir ainm air carbad-rathaid STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Thoir ainm air long STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Thoir ainm air carbad-adhair STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aois: {LTBLUE}{STRING}{BLACK} Cosgaisean ruith: {LTBLUE}{CURRENCY_LONG}/bliadhna # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} {P bhliadhna bhliadhna bliadhna bliadhna} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P bhliadhna bhliadhna bliadhna bliadhna} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Astar: {LTBLUE}{COMMA} {P leac leac leacan leac} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Cuideam: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhachd: {LTBLUE}{POWER}{BLACK} Luaths as motha: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Cuideam: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhachd: {LTBLUE}{POWER}{BLACK} Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Neart as motha: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Prothaid am bliadhna: {LTBLUE}{CURRENCY_LONG} (an-uiridh: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Earbsachd: {LTBLUE}{COMMA}% {BLACK}{P 1 Briseadh Briseadh Brisidhean Briseadh} bhon obair-ghlèidhidh mu dheireadh: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Air a {G 0 thogail togail}: {LTBLUE}{NUM}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE}—{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Tomhas-lìonaidh: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Creideas tar-aisig: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Tricead na h-obrach-glèidhidh: {LTBLUE}{COMMA} {P latha latha làithean latha}{BLACK} An obair-ghlèidhidh mu dheireadh: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tricead na h-obrach-glèidhidh: {LTBLUE}{COMMA}%{BLACK} An obair-ghlèidhidh mu dheireadh: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Meudaich tricead na h-obrach-glèidhidh le 10. Meudaichidh Ctrl+briogadh tricead na h-obrach-glèidhidh le 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Lùghdaich tricead na h-obrach-glèidhidh le 10. Lùghdaichidh Ctrl+briogadh tricead na h-obrach-glèidhidh le 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Atharraich seòrsa dhe thricead na h-obrach-glèidhidh STR_VEHICLE_DETAILS_DEFAULT :Tùsail STR_VEHICLE_DETAILS_DAYS :Latha STR_VEHICLE_DETAILS_PERCENT :Ceudad STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Thoir ainm air an trèan STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Thoir ainm air a' charbad-rathaid STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Thoir ainm air an long STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Thoir ainm air a' charbad-adhair # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Air a {G 0 thogail togail}: {LTBLUE}{NUM}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Tomhas-lìonaidh carago iomlan aig an trèan seo: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Falamh STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} bho {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} bho {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{G=m}{BLACK}Carago STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Seall mion-fhiosrachadh mun charago ga ghiùlan STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Fiosrachadh STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Seall mion-fhiosrachadh air carbadan-rèile STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Tomhasan-lìonaidh STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Seall an tomhas-lìonaidh aig gach carbad STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Carago iomlan STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Seall an carago iomlan aig an trèan, air a roinneadh le seòrsa a' charago STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Tomhas-lìonaidh: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Mùthadh) STR_REFIT_TITLE :{GOLD}Tagh an seòrsa dhe charago airson a ghiùlan: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}{}{BLACK}Cosgais a' mhùthaidh: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}{}{BLACK}Teachd a-steach bhon mhùthadh: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cosgais a' mhùthaidh: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Tomhas-lìonaidh ùr: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Teachd a-steach bhon mhùthadh: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Tagh na carbadan a tha thu airson mùthadh. Slaod an luchag gus iomad charbad a thaghadh. Briog air àite bàn gus an carbad air fad a thaghadh. Taghaidh Ctrl+briogadh carbad is an ceangal a leanas STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghùlaineas an trèan STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghiùlaineas an carbad-rathaid STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghiùlaineas an long STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago a ghiùlaineas an carbad-adhair STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Mùth an trèan STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Mùth an carbad-rathaid STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Mùth an long STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Mùth an carbad-adhair STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Ath-thog an trèan ach an giùlain e an seòrsa dhe charago a thagh thu STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Ath-thog an carbad-rathaid ach an giùlain e an seòrsa dhe charago a thagh thu STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Ath-thog an long ach an giùlain i an seòrsa dhe charago a thagh thu STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Ath-thog an carbad-adhair ach an giùlain e an seòrsa dhe charago a thagh thu # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Òrduighean) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Clàr-ama STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Gearr leum dhan t-sealladh clàir-ama STR_ORDERS_LIST_TOOLTIP :{BLACK}Liosta nan òrduighean - briog air òrdugh gus a thaghadh. Sgrolaichidh Ctrl+briogadh gu ceann-uidhe an òrduigh STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Deireadh nan òrduighean - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Deireadh nan òrduighean co-roinnte - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Gun stad STR_ORDER_GO_TO :Rach gu STR_ORDER_GO_NON_STOP_TO :Rach gun stad gu STR_ORDER_GO_VIA :Rach slighe STR_ORDER_GO_NON_STOP_VIA :Rach gun stad slighe STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Atharraich an tèid stad leis an òrdugh a thagh thu STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Luchdaich carago sam bith gu iomlan STR_ORDER_DROP_LOAD_IF_POSSIBLE :Luchdaich na tha ri làimh STR_ORDER_DROP_FULL_LOAD_ALL :Luchdaich a h-uile carago gu iomlan STR_ORDER_DROP_FULL_LOAD_ANY :Luchdaich carago sam bith gu iomlan STR_ORDER_DROP_NO_LOADING :Na luchdaich dad STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Atharraich giùlan luchdaidh aig an òrdugh a thagh thu STR_ORDER_TOGGLE_UNLOAD :{BLACK}Dì-luchdaich na h-uile STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Dì-luchdaich ma ghabhar ris STR_ORDER_DROP_UNLOAD :Dì-luchdaich a h-uile rud STR_ORDER_DROP_TRANSFER :Tar-aisig STR_ORDER_DROP_NO_UNLOADING :Na dì-luchdaich STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Atharraich giùlan dì-luchdaidh aig an òrdugh a thagh thu STR_ORDER_REFIT :{BLACK}Mùth STR_ORDER_REFIT_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago ’s tu airson mùthadh air a shon leis an òrdugh seo. Dèan Ctrl+briogadh gus an t-òrdugh mùthaidh a thoirt air falbh STR_ORDER_REFIT_AUTO :{BLACK}Fèin-mhùth STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Tagh an seòrsa dhe charago ’s tu airson fèin-mhùthadh air a shon leis an òrdugh seo. Dèan Ctrl+briogadh gus an t-òrdugh mùthaidh a thoirt air falbh. Cha tèid fèin-mhùthadh a dhèanamh ach ma tha an carbad comasach STR_ORDER_DROP_REFIT_AUTO :Carago stèidhichte STR_ORDER_DROP_REFIT_AUTO_ANY :Carago ri làimh STR_ORDER_SERVICE :{BLACK}Obair-ghlèidhidh STR_ORDER_DROP_GO_ALWAYS_DEPOT :Rach ann an-còmhnaidh STR_ORDER_DROP_SERVICE_DEPOT :Obair-ghlèidhidh ma tha i a dhìth STR_ORDER_DROP_HALT_DEPOT :Stad STR_ORDER_SERVICE_TOOLTIP :{BLACK}Leum thairis air an òrdugh seo mura h-eil feum air obair-ghlèidhidh STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Dàta a' charbaid air a bheil an leum stèidhichte # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Ceudad an luchdaidh STR_ORDER_CONDITIONAL_RELIABILITY :Earbsachd STR_ORDER_CONDITIONAL_MAX_SPEED :Luaths as motha STR_ORDER_CONDITIONAL_AGE :Aois (bliadhna) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Feumach air obair-ghlèidhidh STR_ORDER_CONDITIONAL_UNCONDITIONALLY :An-còmhnaidh STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Beatha air fhàgail (bliadhna) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Mar a thèid dàta a' charbaid a choimeas ris an luach STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :a tha co-ionnan ri STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nach eil co-ionnan ri STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :a tha nas lugha na STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :a tha nas lugha na no co-ionnan ri STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :a tha nas motha na STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :a tha nas motha na no co-ionnan ri STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :a tha fìor STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :a tha breugach STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}An luach ris a thèid dàta a' charbaid a choimeas STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Cuir a-steach luach airson coimeas ris STR_ORDERS_SKIP_BUTTON :{BLACK}Leum thairis air STR_ORDERS_SKIP_TOOLTIP :{BLACK}Leum thairis air an òrdugh seo is tòisich air an ath-fhear. Nì Ctrl+briogadh leum dhan òrdugh a thagh thu STR_ORDERS_DELETE_BUTTON :{BLACK}Sguab às STR_ORDERS_DELETE_TOOLTIP :{BLACK}Sguab às dhan òrdugh a thagh thu STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Sguab às dha na h-uile òrdugh STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Sguir dhen cho-roinneadh STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Sguir dhe cho-roinneadh liosta nan òrduighean. Sguabaidh Ctrl+briogadh às dhe na h-uile òrdugh airson a' charbaid seo cuideachd STR_ORDERS_GO_TO_BUTTON :{BLACK}Rach gu STR_ORDER_GO_TO_NEAREST_DEPOT :Rach gun gharaids / trèan-lann / chala as fhaisge STR_ORDER_GO_TO_NEAREST_HANGAR :Rach gun hangar as fhaisge STR_ORDER_CONDITIONAL :Leum le òrdugh cumhach STR_ORDER_SHARE :Co-roinn na h-òrduighean STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Cuir a-steach òrdugh ùr ron òrdugh a thagh thu no cuir ri deireadh na liosta e. Le Ctrl, bith òrdugh stèisein na “Luchdaich carago sam bith gu iomlan", òrdugh puinge-turais na “Gun stad" is òrdugh garaids / trèan-lainn / calaidh / hangair na “obair-ghlèidhidh". Le “Co-roinn na h-òrduighean” no Ctrl, co-roinnidh an carbad seo na h-òrduighean leis a' charbad a thagh thu. Gheibh thu lethbhreac dhe òrduighean le briogadh air carbad. Cuiridh òrdugh garaids / trèan-lainn / calaidh / hangair fèin-obair-ghlèidhidh airson a' charbaid à comas STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Seall a h-uile carbad a cho-roinneas an clàr-ama seo # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Rach slighe {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Rach gun stad slighe {WAYPOINT} STR_ORDER_SERVICE_AT :Obair-ghlèidhidh aig STR_ORDER_SERVICE_NON_STOP_AT :Obair-ghlèidhidh gun stad aig STR_ORDER_NEAREST_DEPOT :as fhaisge STR_ORDER_NEAREST_HANGAR :’n hangar as fhaisge STR_ORDER_TRAIN_DEPOT :’n trèan-lann STR_ORDER_ROAD_VEHICLE_DEPOT :’n gharaids STR_ORDER_SHIP_DEPOT :’n chala STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{0:STRING} {2:STRING} {1:STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Mùth airson {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Mùth airson {STRING} is stad) STR_ORDER_STOP_ORDER :(Stad) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Fillte a-staigh) STR_ORDER_FULL_LOAD :(Luchdaich gu iomlan) STR_ORDER_FULL_LOAD_ANY :(Luchdaich carago sam bith gu iomlan) STR_ORDER_NO_LOAD :(Na luchdaich dad) STR_ORDER_UNLOAD :(Dì-luchdaich is gabh ri carago) STR_ORDER_UNLOAD_FULL_LOAD :(Dì-luchdaich is feitheamh air luchdadh iomlan) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Dì-luchdaich is feitheamh air carago sam bith iomlan) STR_ORDER_UNLOAD_NO_LOAD :(Dì-luchdaich is fàg falamh) STR_ORDER_TRANSFER :(Tar-aisig is gabh ri carago) STR_ORDER_TRANSFER_FULL_LOAD :(Tar-aisig is feitheamh air luchdadh iomlan) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Tar-aisig is feitheamh air luchdadh sam bith iomlan) STR_ORDER_TRANSFER_NO_LOAD :(Tar-aisig is fàg falamh) STR_ORDER_NO_UNLOAD :(Na dì-luchdaich is gabh ri carago) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Na dì-luchdaich is feitheamh air carago iomlan) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Na dì-luchdaich is feitheamh air carago sam bith iomlan) STR_ORDER_NO_UNLOAD_NO_LOAD :(Na dì-luchdaich is na luchdaich) STR_ORDER_AUTO_REFIT :(Fèin-mhùth airson {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Luchdadh iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Luchdadh iomlan aig carago sam bith le fèin-mhùthadh airson {STRING}) STR_ORDER_UNLOAD_REFIT :(Dì-luchdaich is gabh ri carago le fèin-mhùthadh airson {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Dì-luchdaich is feitheamh air luchdadh iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Dì-luchdaich is feitheamh air luchdadh sam bith iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_TRANSFER_REFIT :(Tar-aisig is gabh ri carago le fèin-mhùthadh airson {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Tar-aisig is feitheamh air carago iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Tar-aisig is feitheamh air carago sam bith iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Na dì-luchdaich is gabh ri carago le fèin-mhùthadh airson {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Na dì-luchdaich is feitheamh air carago iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Na dì-luchdaich is feitheamh air carago sam bith iomlan le fèin-mhùthadh airson {STRING}) STR_ORDER_AUTO_REFIT_ANY :carago ri làimh STR_ORDER_STOP_LOCATION_NEAR_END :[toiseach] STR_ORDER_STOP_LOCATION_MIDDLE :[meadhan] STR_ORDER_STOP_LOCATION_FAR_END :[ceann thall] STR_ORDER_OUT_OF_RANGE :{RED} (Chan eil an t-ath-cheann-uidhe san rainse) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Leum dhan òrdugh {COMMA} STR_ORDER_CONDITIONAL_NUM :Leum dhan òrdugh {COMMA} le {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Leum dhan òrdugh {COMMA} le {STRING} {STRING} STR_INVALID_ORDER :{RED} (Òrdugh mì-dhligheach) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Clàr-ama) STR_TIMETABLE_ORDER_VIEW :{BLACK}Òrduighean STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Gearr leum dha shealladh nan òrduighean STR_TIMETABLE_TOOLTIP :{BLACK}Clàr-ama - briog air òrdugh gus a thaghadh STR_TIMETABLE_NO_TRAVEL :Na siubhail STR_TIMETABLE_NOT_TIMETABLEABLE :Siubhail (fèin-obrachail; clàr-ama ga chruthachadh leis an ath-òrdugh a làimh) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Siubhail (gun chlàr-ama) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Siubhal le {2:VELOCITY} as motha (gun chlàr-ama) STR_TIMETABLE_TRAVEL_FOR :Siubhail fad {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Siubhail fad {STRING} le {VELOCITY} as motha STR_TIMETABLE_STAY_FOR :is fuirich fad {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :is siubhail fad {STRING} STR_TIMETABLE_DAYS :{COMMA} {P latha latha làithean latha} STR_TIMETABLE_TICKS :{COMMA} {P diog dhiog diogan diog} STR_TIMETABLE_TOTAL_TIME :{BLACK}Bheir an clàr-ama seo {STRING} airson coileanadh STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Bheir an clàr-ama seo {STRING} air a char as lugha airson coileanadh (cuid dheth gun chlàr-ama) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Tha an carbad seo ri uair an-dràsta STR_TIMETABLE_STATUS_LATE :{BLACK}Tha an carbad seo {STRING} air deireadh an-dràsta STR_TIMETABLE_STATUS_EARLY :{BLACK}Tha an carbad seo {STRING} ro àm an-dràsta STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Cha do thòisich an clàr-ama seo fhathast STR_TIMETABLE_STATUS_START_AT :{BLACK}Tòisich an clàr-ama seo {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Ceann-latha tòiseachaidh STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Tagh an ceann-latha a thòisicheas an clàr-ama seo STR_TIMETABLE_CHANGE_TIME :{BLACK}Uair eile STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Atharraich an ùine a bheireadh an t-òrdugh a thagh thu STR_TIMETABLE_CLEAR_TIME :{BLACK}Uair bhàn STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Thoir an fhaide uarach air falbh bhon òrdugh a thagh thu STR_TIMETABLE_CHANGE_SPEED :{BLACK}Crìochan luaiths eile STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Atharraich an luaths siubhail as motha airson an òrduigh a thagh thu STR_TIMETABLE_CLEAR_SPEED :{BLACK}Crìochan luaiths bàna STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Thoir an luaths siubhail as motha air falbh bhon òrdugh a thagh thu STR_TIMETABLE_RESET_LATENESS :{BLACK}Ath-shuidhich cunntair nan dàil STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Ath-shuidhich cunntair nan dàlaichean ach am bi an carbad ri uair STR_TIMETABLE_AUTOFILL :{BLACK}Fèin-lìon STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Lìon an clàr-ama leis na luachan bhon ath-thuras (Dèan Ctrl+briogadh gus feuchainn ris na h-ùineachan feitheimh a chumail) STR_TIMETABLE_EXPECTED :{BLACK}Dùil air STR_TIMETABLE_SCHEDULED :{BLACK}Clàraichte STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Gearr leum eadar dùil air is clàraichte STR_TIMETABLE_ARRIVAL_ABBREVIATION :R: STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Suidhich ceann-latha STR_DATE_SET_DATE :{BLACK}Suidhich ceann-latha STR_DATE_SET_DATE_TOOLTIP :{BLACK}Cleachd an ceann-latha a thagh thu mar cheann-latha tòiseachaidh airson a' chlàir-ama STR_DATE_DAY_TOOLTIP :{BLACK}Tagh latha STR_DATE_MONTH_TOOLTIP :{BLACK}Tagh mìos STR_DATE_YEAR_TOOLTIP :{BLACK}Tagh bliadhna # AI debug window STR_AI_DEBUG :{WHITE}Dì-bhugaich sgriobt an IF/a' gheama STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ainm an sgriobt STR_AI_DEBUG_SETTINGS :{BLACK}Roghainnean STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Atharraich roghainnean an sgriobt STR_AI_DEBUG_RELOAD :{BLACK}Ath-luchdaidh an IF STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Marbh an IF, ath-luchdaich an sgriobt is ath-thòisich an IF STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Cuir briseadh an comas/à comas nuair a dh’fhreagras teachdaireachd loga an IF ris an t-sreang brisidh STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Bris le: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Briseadh STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Nuair a dh’fhreagras teachdaireachd loga an IF ris an t-sreang seo, thèid an geama a chur na stad STR_AI_DEBUG_MATCH_CASE :{BLACK}Aire do litrichean mòra is beaga STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Toglaich an tèid aire a thoirt do litrichean mòra is beaga nuair a thèid teachdaireachdan loga an IF a choimeas ris an t-sreang brisidh STR_AI_DEBUG_CONTINUE :{BLACK}Lean air adhart STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Cuir a' dol is lean air an IF STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Seall às-chur dì-bhugaidh aig an IF seo STR_AI_GAME_SCRIPT :{BLACK}Sgriobt geama STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Thoir sùil air loga aig an sgriobt geama STR_ERROR_AI_NO_AI_FOUND :Cha deach IF freagarrach a lorg airson luchdadh.{}Seo IF caochaige nach dèan dad.{}’S urrainn dhut caochladh dhe IF luchdadh a-nuas leis an t-siostam “Susbaint air loidhne" STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Thuislich aon dhe na sgriobtan a bha a' ruith. Feuch an cuir thu aithisg dha ùghdar an sgriobt le glacadh-sgrìn dhen uinneag dì-bhugaidh aig an IF/sgriobt geama STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Chan eil an uinneag dì-bhugaidh aig an IF/sgriobt geama ri làimh ach airson an fhrithealaiche # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Rèiteachadh an IF/sgriobt geama STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}An sgriobt geama a thèid a luchdadh leis an ath-gheama STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Na IF a thèid a luchdadh leis an ath-gheama STR_AI_CONFIG_HUMAN_PLAYER :Cluicheadair daonna STR_AI_CONFIG_RANDOM_AI :IF air thuaiream STR_AI_CONFIG_NONE :(gun IF) STR_AI_CONFIG_MOVE_UP :{BLACK}Gluais suas STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Gluais an IF a thagh thu suas air an liosta STR_AI_CONFIG_MOVE_DOWN :{BLACK}Gluais sìos STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Gluais an IF a thagh thu sìos air an liosta STR_AI_CONFIG_GAMESCRIPT :{SILVER}Sgriobt geama STR_AI_CONFIG_AI :{SILVER}IFan STR_AI_CONFIG_CHANGE :{BLACK}Tagh {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :IF STR_AI_CONFIG_CHANGE_GAMESCRIPT :Sgriobt geama STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Luchdaich sgriobt eile STR_AI_CONFIG_CONFIGURE :{BLACK}Rèitich STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Rèitich paramadairean an sgriobt # Available AIs window STR_AI_LIST_CAPTION :{WHITE}{STRING} ri làimh STR_AI_LIST_CAPTION_AI :IFan STR_AI_LIST_CAPTION_GAMESCRIPT :Sgriobtaichean geama STR_AI_LIST_TOOLTIP :{BLACK}Briog gus sgriobt a thaghadh STR_AI_LIST_AUTHOR :{LTBLUE}Ùghdar: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Tionndadh: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Gabh ris STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Cleachd an sgriobt a thagh thu STR_AI_LIST_CANCEL :{BLACK}Sguir dheth STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Na atharraich an sgriobt # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}Paramadairean aig {STRING} STR_AI_SETTINGS_CAPTION_AI :IF STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Sgriobt geama STR_AI_SETTINGS_CLOSE :{BLACK}Dùin STR_AI_SETTINGS_RESET :{BLACK}Ath-shuidhich STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :An àireamh dhe làithean mus tèid an IF seo a thòiseachadh an dèidh an tè mu dheireadh (mu thimcheall): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}“Leugh mi” {STRING} aig {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Loga atharraichean {STRING} aig {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Ceadachas {STRING} aig {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Seall “Leugh mi” STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Loga nan atharraichean STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ceadachas # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cosgais: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Cosgais: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Teachd a-steach: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Teachd a-steach: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Tar-aiseag: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Tar-aiseag: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Tuairmse chosgaisean: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Tuairmse air an teachd a-steach: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Ga shàbhaladh fhathast,{}fuirich greis gus am bi e deiseil! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Dh’fhàillig leis an fhèin-shàbhaladh STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Cha ghabh an draibh leughadh STR_ERROR_GAME_SAVE_FAILED :{WHITE}Dh’fhàillig le sàbhaladh a’ gheama{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Cha ghabh sguabadh às dhan fhaidhle STR_ERROR_GAME_LOAD_FAILED :{WHITE}Dh’fhàillig le luchdadh a’ gheama{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mearachd taobh a-staigh: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Tha an geama air shàbhaladh briste - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Chaidh an sàbhaladh seo a dhèanamh le tionndadh as ùire dhen gheama STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Cha ghabh am faidhle a leughadh STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Cha ghabh am faidhle sgrìobhadh STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Dh’fhàillig le sgrùdadh na fìreantachd air an dàta STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Chaidh an geama a shàbhaladh le tionndadh nach cuir taic ri tramaichean. Chaidh na h-uile trama a thoirt air falbh # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Chaidh sgur dhe ghinntin a' mhapa...{}... chan eil àiteachan freagarrach airson bailtean ann STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... chan eil baile sam bith sa chnàmh-sgeul seo STR_ERROR_PNGMAP :{WHITE}Cha ghabh an cruth-tìre luchdadh bhon PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... cha deach am faidhle a lorg STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... cha b' urrainn dhuinn seòrsa an deilbh iompachadh. Tha PNG 8 no 24-biod a dhìth STR_ERROR_PNGMAP_MISC :{WHITE}... chaidh rudeigin gu cearr (faidhle coirbte, cha chreids) STR_ERROR_BMPMAP :{WHITE}Cha ghabh cruth-tìre luchdadh bhon BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... cha b' urrainn dhuinn seòrsa an deilbh iompachadh STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... tha an dealbh ro mhòr STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Rabhadh sgèile STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Cha mholamaid gun tèid meud a' mhapa tùsail atharrachadh cus. A bheil thu airson leantainn air adhart leis an gintinn? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Cha deach ach seata dhe dh'fhuaimean èiginneach a lorg. Ma tha thu ag iarraidh fuaimean, stàlaich seata dhe dh'fhuaimean le siostam luchdaidh a-nuas na susbainte # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Glacadh-sgrìn anabarrach mòr STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Bidh dùmhlachd-bhreacaidh dhe {COMMA} x {COMMA} piogsail aig a’ ghlacadh-sgrìn seo. Dh’fhaoidte gun toir e beagan ùine an glacadh-sgrìn seo a thogail. A bheil thu airson leantainn air adhart? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Chaidh an glacadh-sgrìn a shàbhaladh gu soirbheachail mar “{STRING}" STR_ERROR_SCREENSHOT_FAILED :{WHITE}Dh’fhàillig leis a’ ghlacadh-sgrìn! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Brath STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Brath bho {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Taobh a-muigh a' mhapa STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Ro fhaisg air oir a' mhapa STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Airgead a dhìth - feum air {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Tha tìr rèidh a dhìth STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Sliabh na tìre ris a' chomhair chearr STR_ERROR_CAN_T_DO_THIS :{WHITE}Cha ghabh seo dèanamh... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Feumaidh tu an togalach a leagail an toiseach STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Cha ghabh an raon seo falamhachadh... STR_ERROR_SITE_UNSUITABLE :{WHITE}... ionad mì-fhreagarrach STR_ERROR_ALREADY_BUILT :{WHITE}... air a t(h)ogail mu thràth STR_ERROR_OWNED_BY :{WHITE}... tha seo le {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... tha companaidh eile na shealbhaiche aig an raon seo STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... ràinig thu na tha ceadaichte dhut dhe dh’atharrachadh na crutha-tìre STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... ràinig thu na tha ceadaichte dhut dhe dh'fhalamhachadh leacan STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... ràinig thu na tha ceadaichte dhut dhe chur chraobhan STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Chan fhaod an t-aon ainm a bhith ann barrachd air aon turas STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}Tha {1:STRING} san rathad STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Chan eil seo ceadaichte fhad ’s a bhios an geama na stad # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Dhiùilt an t-ùghdarras ionadail aig {TOWN} gun dèan thu seo STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Dhiùlt an t-ùghdarras ionadail aig {TOWN} gun tog thu port-adhair sa bhaile seo STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Dhiùlt an t-ùghdarras ionadail aig {TOWN} gun tog thu port-adhair air sàilleibh fuaime STR_ERROR_BRIBE_FAILED :{WHITE}Mhothaich sgrùdair ionadail gun do dh'fheuch thu ri brìbeadh a thoirt # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Cha ghabh tìr àrdachadh an-seo... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Cha ghabh tìr ìsleachadh an-seo... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Cha ghabh an tìr dèanamh rèidh an-seo... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Bhiodh an cladhach a' milleadh tunail STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... air àirde na mara mu thràth STR_ERROR_TOO_HIGH :{WHITE}... ro àrd STR_ERROR_ALREADY_LEVELLED :{WHITE}... rèidh mu thràth # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Cha ghabh ainm na companaidh atharrachadh... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Chan urrainn dhuinn ainm an stiùiriche atharrachadh... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... is {CURRENCY_LONG} an t-iasad as motha a tha ceadaichte dhut STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Chan urrainn dhut barrachd airgid fhaighinn air iasad... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... chan eil iasad ri pàigheadh ann STR_ERROR_CURRENCY_REQUIRED :{WHITE}... feum air {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Cha ghabh an t-iasad pàigheadh air ais... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Chan urrainn dhut airgead a thoirt seachad a chaidh a thoirt dhut mar iasad leis a' bhanca... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Chan urrainn dhut a' chompanaidh a cheannach... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Cha ghabh ionad na companaidh togail... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Chan urrainn dhut earrann dhe 25% aig a' chompanaidh seo a cheannach.... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Chan urrainn dhut earrann dhe 25% aig a' chompanaidh seo a reic.... STR_ERROR_PROTECTED :{WHITE}Chan eil a' chompanaidh seo sean gu leòr gus earrannan a reic no a cheannach fhathast... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Cha ghabh baile sam bith a thogail STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Cha ghabh ainm a' bhaile atharrachadh... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Cha ghabh baile stèidheachadh an-seo... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Cha ghabh am baile leudachadh... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... ro fhaisg air oir a' mhapa STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... ro fhaisg air baile eile STR_ERROR_TOO_MANY_TOWNS :{WHITE}... tha cus bhailtean ann STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... chan eil rum air fhàgail air a' mhapa STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Cha tog am baile rathad sam bith. ’S urrainn dhut togail rathaidean a chur an comas le Roghainnean adhartach->Eaconamaidh->Bailtean STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Rathad ga ath-thogail STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Cha ghabh sguabadh às dhan bhaile seo...{}Tha stèisean no port no garaids no trèan-lann no cala no hangar a' toirt iomradh air a' bhaile no tha leac ann a tha leis a' bhaile is nach gabh toirt air falbh STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... chan eil ionad freagarrach airson ìomhaigh ann am meadhan a' bhaile seo # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... cus ghnìomhachasan STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Cha ghabh gnìomhachasan gintinn... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Cha ghabh {STRING} togail an-seo... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Cha ghabh an seòrsa seo dhe ghnìomhachas togail an-seo... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... ro fhaisg air gnìomhachas eile STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... feumaidh tu baile a stèidheachadh an toiseach STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... chan eil barrachd air aon dhiubh ceadaichte anns gach baile STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... chan urrainn dhut seo a thogail ach ann am bailtean aig a bheil sluagh dhe 1200 air a char as lugha STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... cha ghabh seo togail ach ann an raointean coille-uisge STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... cha ghabh seo togail ach ann an raointean fàsaich STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... cha ghabh seo togail ach ann am baile (an àite thaighean) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... cha ghabh seo togail ach faisg air meadhan a' bhaile STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... cha ghabh seo togail ach ann an raointean ìosal STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... cha ghabh seo suidheachadh ach faisg air oirean a' mhapa STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... cha an coille cur ach os cionn na loidhne-sneachda STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... cha ghabh seo togail ach os cionn na loidhne-sneachda STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... cha ghabh seo togail ach fon loidhne-shneachda # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Cha ghabh stèisean-rèile togail an-seo... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Cha ghabh stèisean bus togail... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Cha ghabh ionad-luchdaidh nan làraidh togail... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Cha ghabh stèisean trama thaistealach togail... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Cha ghabh stèisean trama carago togail... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Cha ghabh port togail an-seo... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Cha ghabh port-adhair togail an-seo... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tha seo ri taobh barrachd air aon stèisean/ionad-luchdaidh a tha ann mu thràth STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... tha an stèisean ro sgaoilte STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Cus stèiseanan/ionadan luchdaidh STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Cus pàirtean dhe stèisean-rèile STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Gus stèiseanan bus STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Tha cus ionadan-luchdaidh nan làraidh ann STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Ro fhaisg air stèisean/ionad-luchdaidh eile STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Ro fhaisg air port eile STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Ro fhaisg air port-adhair eile STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Cha ghabh ainm an stèisein atharrachadh... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... tha an rathad seo le baile STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tha comhair an rathaid cearr STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... chan urrainn dha dh’oiseanan a bhith aig stèiseanan draibhidh troimhe STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... chan urrainn dha ghoibhlean a bhith aig stèiseanan draibhidh troimhe # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Cha ghabh pàirt dhen stèisean toirt air falbh... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Feumaidh tu an stèisean-rèile a thoirt air falbh an toiseach STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Cha ghabh an stèisean bus toirt air falbh... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Cha ghabh ionad-luchdaidh nan làraidh toirt air falbh... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Cha ghabh an stèisean trama thaistealach toirt air falbh... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Cha ghabh an stèisean trama carago toirt air falbh... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Feumaidh tu an stèisean rathaid a thoirt air falbh an toiseach STR_ERROR_THERE_IS_NO_STATION :{WHITE}... chan eil stèisean an-seo STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Feumaidh tu an stèisean-rèile a leagail a toiseach STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Feumaidh tu an stèisean bus a leagail an toiseach STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Feumaidh tu ionad-luchdaidh nan làraidh a leagail an toiseach STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Feumaidh tu an stèisean trama thaistealach a leagail an toiseach STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Feumaidh tu an stèisean trama carago a leagail an toiseach STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Feumaidh tu am port a leagail an toiseach STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Feumaidh tu am port-adhair a leagail an toiseach # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tha seo ri taobh barrachd air aon phuing-thurais a tha ann mu thràth STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Ro fhaisg air puing-thurais eile STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Cha ghabh puing-thurais trèan togail an-seo... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Cha ghabh fleodrainn togail an-seo... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Cha ghabh ainm na puinge-turais atharrachadh... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Cha ghabh puing-thurais trèan toirt air falbh an-seo... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Feumaidh tu a' phuing-thurais trèan a thoirt air falbh an toiseach STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... tha fleodrainn san rathad STR_ERROR_BUOY_IS_IN_USE :{WHITE}... tha companaidh eile a' chleachdadh na fleodrainn! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Cha ghabh trèan-lann togail an-seo... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Cha ghabh garaids togail an seo... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Cha ghabh trama-lann togail an-seo... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Cha ghabh cala togail an-seo... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Cha ghabh ainm na garaids / na trèana-lainn / a' chalaidh / a' hangair atharrachadh... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... feumaidh e a bhith na stad ann an trèan-lann STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... feumaidh e bhith na stad ann an garaids STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... feumaidh e bhith na stad ann an cala STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... feumaidh e bhith na stad ann an hangar STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Cha ghabh trèan atharrachadh ach nuair a bhios i na stad ann an trèan-lann STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tha an trèan ro fhada STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Chan urrainn dhan charbad tilleadh... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... dèanta dhe iomadh aonad STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Seòrsaichean rèile neo-chòrdail STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Chan urrainn dhan charbad gluasad... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Leanaidh an t-einnsean-deiridh an-còmhnaidh air an fhear air a bheulaibh STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Cha ghabh slighe dhan gharaids / trèan-lann / cala / hangar ionadail lorg STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Cha ghabh a' gharaids / an trèan-lann / an cala / an hangar ionadail lorg STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Seòrsa dhe gharaids / trèan-lann / cala / hangar cearr # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Tha {VEHICLE} ro fhada an dèidh cur an àite STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Cha deach riaghailt fèin-leasachaidh/fèin-nuadhachaidh sam bith a chur an sàs STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(chan eil airgead gu leòr ann) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Co-mheasgachadh dhe shlighean do-dhèanta STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Feumaidh tu na comharran a thoirt air falbh an toiseach STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Chan eil slighe rèile iomchaidh ann STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Feumaidh tu an t-slighe rèile a thoirt air falbh an toiseach STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Rathad aon-shligheach no bacte STR_ERROR_CROSSING_DISALLOWED :{WHITE}Chan eil staranan-rèile ceadaichte leis an t-seòrsa dhe rèile seo STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Cha ghabh comharran togail an-seo... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Cha ghabh slighe-rèile togail an-seo... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Cha ghabh an t-slighe-rèile toirt air falbh an-seo... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Cha ghabh na comharran toirt air falbh an-seo... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Cha ghabh na comharran iompachadh an-seo... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... chan eil slighe-rèile ann STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... chan eil comharra sam bith ann STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Cha ghabh seòrsa an rèile iompachadh an-seo... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Feumaidh tu an rathad a toirt air falbh an toiseach STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... chan urrainn dha ghobhal a bhith aig rathad aon-shligheach STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Cha ghabh rathad togail an-seo... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Cha ghabh slighe-trama togail an-seo... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Cha ghabh rathad toirt air falbh an-seo... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Cha ghabh an t-slighe-trama toirt air falbh an-seo... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... chan eil rathad ann STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... chan eil slighe-trama ann # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Cha ghabh canal togail an-seo... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Cha ghabh loc togail an-seo... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Cha ghabh abhainn togail an-seo... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... feumaidh tu seo a thogail air uisge STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... chan urrainn dhut seo a thogail air uisge STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... chan urrainn dhut seo a thogail air a' chuain STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... chan urrainn dhut seo a thogail air canal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... chan urrainn dhut seo a thogail air abhainn STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Feumaidh tu an canal a leagail an toiseach STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Chan urrainn dhut duct-uisge a thogail an-seo... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... tha craobh an-seo mu thràth STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... cruth-tìre cearr airson an t-seòrsa dhe chraobh seo STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Cha ghabh a' chraobh cur an-seo... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Cha ghabh an drochaid togail an-seo... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Feumaidh tu an drochaid a leagail an toiseach STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Chan urrainn dhut tòiseachadh is crìochnachadh air an aon àite STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Chan eil an dà cheann aig an drochaid air an aon àirde STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tha an drochaid ro ìosal airson a' chrutha-tìre seo STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Feumaidh an toiseach is a' chrìoch a bhith air an aon loidhne STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... feumaidh an dà cheann aig an drochaid a bhith air tìr STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... tha an drochaid ro fhada STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Bhiodh ceann thall na drochaide taobh a-muigh a' mhapa # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Cha ghabh tunail togail an-seo... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Chan eil an t-àite iomchaidh airson ceann an tunail STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Feumaidh tu an tunail a leagail an toiseach STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Tha tunail eile san rathad STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Bhiod ceann thall an tunail taobh a-muigh a' mhapa STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Cha ghabh an tìr cladhach airson ceann thall an tunail STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tha an tunail ro fhada # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... tha cus oibseactan ann STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Cha ghabh an t-oibseact togail STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Tha oibseact san rathad STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... tha ionad na companaidh san rathad STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Chan urrainn dhut an raon-tìre seo a cheannach... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... tha e leatsa mu thràth! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Cha ghabh am buidheann cruthachadh... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Cha ghabh sguabadh às dhan bhuidheann seo... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Cha ghabh ainm a' bhuidhinn atharrachadh... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Cha ghabh na h-uile carbad toirt air falbh bhon bhuidheann seo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Chan urrainn dhut an carbad seo a chur ris a' bhuidheann seo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Chan urrainn dhut carbadan co-roinnte a chur ris a' bhuidheann... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tha trèan san rathad STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Tha carbad-rathaid san rathad STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Tha long san rathad STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Tha carbad-adhair san rathad STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Cha ghabh an trèan mùthadh... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid mùthadh... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Cha ghabh an long mùthadh... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair mùthadh... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Cha ghabh ainm toirt air an trèan... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Cha ghabh ainm toirt air a' charbad-rathaid... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Cha ghabh ainm toirt air an long... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Cha ghabh ainm toirt air a' charbad-adhair... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Cha ghabh an trèana cur a' dol/na stad... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid cur a' dol/na stad... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Cha ghabh an long cur a' dol/na stad... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair cur a' dol/na stad... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Cha ghabh an trèan cur dhan trèan-lann... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Cha ghabh an carbad-rathaid cur dhan gharaids... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Cha ghabh an long cur dhan chala... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Cha ghabh an carbad-adhair cur dhan hangar... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Cha ghabh an carbad-rèile ceannach... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid ceannach... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Cha ghabh an long ceannach... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair ceannach... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa carbaid-rèile... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa carbaid-rathaid... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa luinge... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Cha ghabh ainm ùr toirt air an t-seòrsa carbaid-adhair... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Cha ghabh an carbad-rèile reic... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Cha ghabh an carbad-rathaid reic... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Cha ghabh an long reic... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Cha ghabh an carbad-adhair reic... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Chan eil an carbad ri làimh STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Chan eil an carbad ri làimh STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Chan eil an long ri làimh STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Chan eil an carbad ri làimh STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tha cus charbadan sa gheama STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Cha ghabh tricead na h-obrach-glèidhidh atharrachadh... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... chaidh an carbad a mhilleadh STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Cha bhi carbad sam bith ri làimh STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Atharraich an rèiteachadh NewGRF agad STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Chan eil carbad ri fhaighinn fhathast STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Tòisich geama ùr às dèidh {DATE_SHORT} no chleachd NewGRF a bheir carbadan tràtha dhut # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Chan urrainn dhut toirt air trèanaichean dol seachad air comharra fo chunnart... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Chan urrainn dhan trèana tilleadh... STR_ERROR_TRAIN_START_NO_POWER :Chan eil cumhachd aig an trèan STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Chan urrainn dhan charbad-rathaid tilleadh... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Tha an carbad-adhair air sgiath # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Chan eil barrachd rum airson òrduighean ann STR_ERROR_TOO_MANY_ORDERS :{WHITE}Tha cus òrduighean ann STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Cha ghabh òrdugh ùr cur a-steach... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Cha ghabh sguabadh às dhan òrdugh seo... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Cha ghabh an t-òrdugh seo atharrachadh... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Cha ghabh an t-òrdugh seo gluasad... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Cha ghabh leum gearradh thar an òrduigh seo... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Cha ghabh leum gearradh dhan òrdugh a thagh thu... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... chan urrainn dhan charbad dol dhan a h-uile stèisean STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... chan urrainn dhan charbad dol dhan stèisean ud STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... chan urrainn dha charbad a cho-roinneas na h-òrduighean seo dol dhan stèisean ud STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Cha ghabh liosta nan òrduighean co-roinneadh... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Chan urrainn dhut sgur dhe liosta nan òrduighean seo a cho-roinneadh... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Cha ghabh lethbhreac dèanamh dhe liosta nan òrduighean... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... ro fhad air falbh on cheann-uidhe roimhe STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... chan eil rainse gu leòr aig a' charbad-adhair # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Cha ghabh clàr-ama toirt dhan charbad... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Chan urrainn dha charbad feitheamh ach aig stèisean STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Chan eil an carbad seo a' stad aig an stèisean seo # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... tha cus sanasan ann STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Chan urrainn dhut sanas a chur an-seo... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Cha ghabh ainm an t-sanais atharrachadh... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Cha ghabh sguabadh às dhan t-sanas... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Geama saoghail mas-fhìor stèidhichte air Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe. STR_BASEGRAPHICS_WIN_DESCRIPTION :Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. STR_BASESOUNDS_DOS_DESCRIPTION :Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. STR_BASESOUNDS_WIN_DESCRIPTION :Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. STR_BASESOUNDS_NONE_DESCRIPTION :Pacaid fhuaimean anns nach eil fuaim sam bith. STR_BASEMUSIC_WIN_DESCRIPTION :Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. STR_BASEMUSIC_NONE_DESCRIPTION :Pacaid ciùil anns nach eil fonn sam bith. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :{G=m}Ionad oifisean àrd STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :{G=m}Ionad oifisean STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :{G=m}Ionad fhlataichean beag STR_TOWN_BUILDING_NAME_CHURCH_1 :{G=f}Eaglais STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :{G=m}Ionad oifisean mòr STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Taighean-baile STR_TOWN_BUILDING_NAME_HOTEL_1 :{G=m}Taigh-òsta STR_TOWN_BUILDING_NAME_STATUE_1 :{G=f}Ìomhaigh STR_TOWN_BUILDING_NAME_STATUE_1.nom :{G=f}Ìomhaigh STR_TOWN_BUILDING_NAME_STATUE_1.gen :{G=f}Ìomhaighe STR_TOWN_BUILDING_NAME_STATUE_1.dat :{G=f}Ìomhaigh STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :{G=m}Fuaran STR_TOWN_BUILDING_NAME_PARK_1 :{G=f}Pàirc STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :{G=m}Ionad oifisean STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Bùthan is oifisean STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :{G=m}Togalach oifisean ùr-nòsach STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :{G=m}Taigh-bathair STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :{G=m}Ionad oifisean STR_TOWN_BUILDING_NAME_STADIUM_1 :{G=m}Stèideam STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Seann taighean STR_TOWN_BUILDING_NAME_COTTAGES_1 :Taighean-croite STR_TOWN_BUILDING_NAME_HOUSES_1 :Taighean STR_TOWN_BUILDING_NAME_FLATS_1 :Flataichean STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Ionad oifisean àrd STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Bùthan is oifisean STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Bùthan is oifisean STR_TOWN_BUILDING_NAME_THEATER_1 :{G=m}Taigh-cluiche STR_TOWN_BUILDING_NAME_THEATER_1.nom :{G=m}Taigh-cluiche STR_TOWN_BUILDING_NAME_THEATER_1.gen :{G=m}Taighe-chluiche STR_TOWN_BUILDING_NAME_THEATER_1.dat :{G=m}Taigh-cluiche STR_TOWN_BUILDING_NAME_STADIUM_2 :{G=m}Stèideam STR_TOWN_BUILDING_NAME_STADIUM_2.nom :{G=m}Stèideam STR_TOWN_BUILDING_NAME_STADIUM_2.gen :{G=m}Stèideim STR_TOWN_BUILDING_NAME_STADIUM_2.dat :{G=m}Stèideam STR_TOWN_BUILDING_NAME_OFFICES_1 :{G=f}Oifisean STR_TOWN_BUILDING_NAME_HOUSES_2 :{G=m}Taighean STR_TOWN_BUILDING_NAME_HOUSES_2.nom :{G=m}Taighean STR_TOWN_BUILDING_NAME_HOUSES_2.gen :{G=m}Thaighean STR_TOWN_BUILDING_NAME_HOUSES_2.dat :{G=m}Taighean STR_TOWN_BUILDING_NAME_CINEMA_1 :{G=m}Taigh-dhealbh STR_TOWN_BUILDING_NAME_CINEMA_1.nom :{G=m}Taigh-dhealbh STR_TOWN_BUILDING_NAME_CINEMA_1.gen :{G=m}Taighe-dhealbh STR_TOWN_BUILDING_NAME_CINEMA_1.dat :{G=m}Taigh-dhealbh STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :{G=m}Ionad bhùthan STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1.nom :{G=m}Ionad bhùthan STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1.gen :{G=m}Ionaid bhùthan STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1.dat :{G=m}Ionad bhùthan STR_TOWN_BUILDING_NAME_IGLOO_1 :{G=m}Taigh-sneachda STR_TOWN_BUILDING_NAME_IGLOO_1.nom :{G=m}Taigh-sneachda STR_TOWN_BUILDING_NAME_IGLOO_1.gen :{G=m}Taighe-shneachda STR_TOWN_BUILDING_NAME_IGLOO_1.dat :{G=m}Taigh-sneachda STR_TOWN_BUILDING_NAME_TEPEES_1 :{G=m}Tìpidhean STR_TOWN_BUILDING_NAME_TEPEES_1.nom :{G=m}Tìpidhean STR_TOWN_BUILDING_NAME_TEPEES_1.gen :{G=m}Thìpidhean STR_TOWN_BUILDING_NAME_TEPEES_1.dat :{G=m}Tìpidhean STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :{G=m}Taigh poit-teatha STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1.nom :{G=m}Taigh poit-teatha STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1.gen :{G=m}Taighe poit-teatha STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1.dat :{G=m}Taigh poit-teatha STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :{G=f}Mucag-airgid STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.nom :{G=f}Mucag-airgid STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.gen :{G=f}Mucaige-airgid STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.dat :{G=f}Mucag-airgid ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Mèinn guail STR_INDUSTRY_NAME_COAL_MINE.nom :Mèinn guail STR_INDUSTRY_NAME_COAL_MINE.gen :Mèinn guail STR_INDUSTRY_NAME_COAL_MINE.dat :Mèinn guail STR_INDUSTRY_NAME_POWER_STATION :Stèisean-cumhachd STR_INDUSTRY_NAME_POWER_STATION.nom :Stèisean-cumhachd STR_INDUSTRY_NAME_POWER_STATION.gen :Stèisein-chumhachd STR_INDUSTRY_NAME_POWER_STATION.dat :Stèisean-cumhachd STR_INDUSTRY_NAME_SAWMILL :Muileann-sàbhaidh STR_INDUSTRY_NAME_SAWMILL.nom :Muileann-sàbhaidh STR_INDUSTRY_NAME_SAWMILL.gen :Muilinn-shàbhaidh STR_INDUSTRY_NAME_SAWMILL.dat :Muileann-sàbhaidh STR_INDUSTRY_NAME_FOREST :Coille STR_INDUSTRY_NAME_FOREST.nom :Coille STR_INDUSTRY_NAME_FOREST.gen :Coille STR_INDUSTRY_NAME_FOREST.dat :Coille STR_INDUSTRY_NAME_OIL_REFINERY :Fìneadair-ola STR_INDUSTRY_NAME_OIL_RIG :Crann-ola STR_INDUSTRY_NAME_OIL_RIG.nom :Crann-ola STR_INDUSTRY_NAME_OIL_RIG.gen :Crainn-ola STR_INDUSTRY_NAME_OIL_RIG.dat :Crann-ola STR_INDUSTRY_NAME_FACTORY :Factaraidh STR_INDUSTRY_NAME_FACTORY.nom :Factaraidh STR_INDUSTRY_NAME_FACTORY.gen :Factaraidh STR_INDUSTRY_NAME_FACTORY.dat :Factaraidh STR_INDUSTRY_NAME_PRINTING_WORKS :Ionad clò-bhualaidh STR_INDUSTRY_NAME_PRINTING_WORKS.nom :Ionad clò-bhualaidh STR_INDUSTRY_NAME_PRINTING_WORKS.gen :Ionad clò-bhualaidh STR_INDUSTRY_NAME_PRINTING_WORKS.dat :Ionad clò-bhualaidh STR_INDUSTRY_NAME_STEEL_MILL :Muilleann-stàilinne STR_INDUSTRY_NAME_STEEL_MILL.nom :Muilleann-stàilinne STR_INDUSTRY_NAME_STEEL_MILL.gen :Muillinn-stàilinne STR_INDUSTRY_NAME_STEEL_MILL.dat :Muilleann-stàilinne STR_INDUSTRY_NAME_FARM :Tuathanas STR_INDUSTRY_NAME_FARM.nom :Tuathanas STR_INDUSTRY_NAME_FARM.gen :Tuathanais STR_INDUSTRY_NAME_FARM.dat :Tuathanas STR_INDUSTRY_NAME_COPPER_ORE_MINE :Mèinn cloich-copair STR_INDUSTRY_NAME_COPPER_ORE_MINE.nom :Mèinn cloich-copair STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :Mèinn cloich-copair STR_INDUSTRY_NAME_COPPER_ORE_MINE.dat :Mèinn cloich-copair STR_INDUSTRY_NAME_OIL_WELLS :Tobraichean-ola STR_INDUSTRY_NAME_OIL_WELLS.nom :Tobraichean-ola STR_INDUSTRY_NAME_OIL_WELLS.gen :Thobraichean-ola STR_INDUSTRY_NAME_OIL_WELLS.dat :Tobraichean-ola STR_INDUSTRY_NAME_BANK :Banca STR_INDUSTRY_NAME_BANK.nom :Banca STR_INDUSTRY_NAME_BANK.gen :Banca STR_INDUSTRY_NAME_BANK.dat :Banca STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Factaraidh bìdh STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.nom :Factaraidh bidhe STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :Factaraidh bidhe STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.dat :Factaraidh bidhe STR_INDUSTRY_NAME_PAPER_MILL :Muileann-pàipeir STR_INDUSTRY_NAME_PAPER_MILL.nom :Muileann-pàipeir STR_INDUSTRY_NAME_PAPER_MILL.gen :Muilinn-phàipeir STR_INDUSTRY_NAME_PAPER_MILL.dat :Muileann-pàipeir STR_INDUSTRY_NAME_GOLD_MINE :Mèinn òir STR_INDUSTRY_NAME_GOLD_MINE.nom :Mèinn òir STR_INDUSTRY_NAME_GOLD_MINE.gen :Mèinn òir STR_INDUSTRY_NAME_GOLD_MINE.dat :Mèinn òir STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banca STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.nom :Banca STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :Banca STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.dat :Banca STR_INDUSTRY_NAME_DIAMOND_MINE :Mèinn daoimein STR_INDUSTRY_NAME_DIAMOND_MINE.nom :Mèinn daoimein STR_INDUSTRY_NAME_DIAMOND_MINE.gen :Mèinn daoimein STR_INDUSTRY_NAME_DIAMOND_MINE.dat :Mèinn daoimein STR_INDUSTRY_NAME_IRON_ORE_MINE :Mèinn cloich-iarainn STR_INDUSTRY_NAME_IRON_ORE_MINE.nom :Mèinn cloich-iarainn STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :Mèinn cloich-iarainn STR_INDUSTRY_NAME_IRON_ORE_MINE.dat :Mèinn cloich-iarainn STR_INDUSTRY_NAME_FRUIT_PLANTATION :Planntachadh-measa STR_INDUSTRY_NAME_FRUIT_PLANTATION.nom :Planntachadh-measa STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :Planntachaidh-mheasa STR_INDUSTRY_NAME_FRUIT_PLANTATION.dat :Planntachadh-measa STR_INDUSTRY_NAME_RUBBER_PLANTATION :Planntachadh-rubair STR_INDUSTRY_NAME_RUBBER_PLANTATION.nom :Planntachadh-rubair STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :Planntachaidh-rubair STR_INDUSTRY_NAME_RUBBER_PLANTATION.dat :Planntachadh-rubair STR_INDUSTRY_NAME_WATER_SUPPLY :Solar-uisge STR_INDUSTRY_NAME_WATER_SUPPLY.nom :Solar-uisge STR_INDUSTRY_NAME_WATER_SUPPLY.gen :Solair-uisge STR_INDUSTRY_NAME_WATER_SUPPLY.dat :Solar-uisge STR_INDUSTRY_NAME_WATER_TOWER :Tùr-uisge STR_INDUSTRY_NAME_WATER_TOWER.nom :Tùr-uisge STR_INDUSTRY_NAME_WATER_TOWER.gen :Tùir-uisge STR_INDUSTRY_NAME_WATER_TOWER.dat :Tùr-uisge STR_INDUSTRY_NAME_FACTORY_2 :Factaraidh STR_INDUSTRY_NAME_FACTORY_2.nom :Factaraidh STR_INDUSTRY_NAME_FACTORY_2.gen :Factaraidh STR_INDUSTRY_NAME_FACTORY_2.dat :Factaraidh STR_INDUSTRY_NAME_FARM_2 :Tuathanas STR_INDUSTRY_NAME_FARM_2.nom :Tuathanas STR_INDUSTRY_NAME_FARM_2.gen :Tuathanais STR_INDUSTRY_NAME_FARM_2.dat :Tuathanas STR_INDUSTRY_NAME_LUMBER_MILL :Muileann-fiodha STR_INDUSTRY_NAME_LUMBER_MILL.nom :Muileann-fiodha STR_INDUSTRY_NAME_LUMBER_MILL.gen :Muilinn-fhiodha STR_INDUSTRY_NAME_LUMBER_MILL.dat :Muileann-fiodha STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Coille canaich-siùcair STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.nom :Coille canaich-siùcair STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :Coille canaich-siùcair STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.dat :Coille canaich-siùcair STR_INDUSTRY_NAME_CANDY_FACTORY :Factaraidh mhìlseanan STR_INDUSTRY_NAME_CANDY_FACTORY.nom :Factaraidh mhìlseanan STR_INDUSTRY_NAME_CANDY_FACTORY.gen :Factaraidh mhìlseanan STR_INDUSTRY_NAME_CANDY_FACTORY.dat :Factaraidh mhìlseanan STR_INDUSTRY_NAME_BATTERY_FARM :Tuathanas bataraidh STR_INDUSTRY_NAME_BATTERY_FARM.nom :Tuathanas bataraidh STR_INDUSTRY_NAME_BATTERY_FARM.gen :Tuathanas bataraidh STR_INDUSTRY_NAME_BATTERY_FARM.dat :Tuathanas bataraidh STR_INDUSTRY_NAME_COLA_WELLS :Tobraichean-cola STR_INDUSTRY_NAME_COLA_WELLS.nom :Tobraichean-cola STR_INDUSTRY_NAME_COLA_WELLS.gen :Thobraichean-cola STR_INDUSTRY_NAME_COLA_WELLS.dat :Tobraichean-cola STR_INDUSTRY_NAME_TOY_SHOP :Bùth dhèideagan STR_INDUSTRY_NAME_TOY_SHOP.nom :Bùth dhèideagan STR_INDUSTRY_NAME_TOY_SHOP.gen :Bùth dhèideagan STR_INDUSTRY_NAME_TOY_SHOP.dat :Bùth dhèideagan STR_INDUSTRY_NAME_TOY_FACTORY :Factaraidh dhèideagan STR_INDUSTRY_NAME_TOY_FACTORY.nom :Factaraidh dhèideagan STR_INDUSTRY_NAME_TOY_FACTORY.gen :Factaraidh dhèideagan STR_INDUSTRY_NAME_TOY_FACTORY.dat :Factaraidh dhèideagan STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Tobraichean-plastaig STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.nom :Tobraichean-plastaig STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :Thobraichean-plastaig STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.dat :Tobraichean-plastaig STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Factaraidh dheochan gucagach STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.nom :Factaraidh dheochan gucagach STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :Factaraidh dheochan gucagach STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.dat :Factaraidh dheochan gucagach STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Gineadair bhuilgeanan STR_INDUSTRY_NAME_BUBBLE_GENERATOR.nom :Gineadair bhuilgeanan STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :Gineadair bhuilgeanan STR_INDUSTRY_NAME_BUBBLE_GENERATOR.dat :Gineadair bhuilgeanan STR_INDUSTRY_NAME_TOFFEE_QUARRY :Coireall tofaidh STR_INDUSTRY_NAME_TOFFEE_QUARRY.nom :Coireall tofaidh STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :Coireall tofaidh STR_INDUSTRY_NAME_TOFFEE_QUARRY.dat :Coireall tofaidh STR_INDUSTRY_NAME_SUGAR_MINE :Mèinn siùcair STR_INDUSTRY_NAME_SUGAR_MINE.nom :Mèinn siùcair STR_INDUSTRY_NAME_SUGAR_MINE.gen :Mèinn siùcair STR_INDUSTRY_NAME_SUGAR_MINE.dat :Mèinn siùcair ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Gun ainm STR_SV_TRAIN_NAME :{G=f}Trèan {COMMA} STR_SV_ROAD_VEHICLE_NAME :Carbad-rathaid {COMMA} STR_SV_SHIP_NAME :{G=f}Long {COMMA} STR_SV_AIRCRAFT_NAME :Carbad-adhair {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} a Tuath STR_SV_STNAME_SOUTH :{STRING} a Deas STR_SV_STNAME_EAST :{STRING} an Ear STR_SV_STNAME_WEST :{STRING} an Iar STR_SV_STNAME_CENTRAL :Meadhan {STRING} STR_SV_STNAME_TRANSFER :Tar-aiseag {STRING} STR_SV_STNAME_HALT :Stad {STRING} STR_SV_STNAME_VALLEY :Gleann {STRING} STR_SV_STNAME_HEIGHTS :Àirde {STRING} STR_SV_STNAME_WOODS :Coille {STRING} STR_SV_STNAME_LAKESIDE :Loch {STRING} STR_SV_STNAME_EXCHANGE :Iomlaid {STRING} STR_SV_STNAME_AIRPORT :{G=m}Port-adhair {STRING} STR_SV_STNAME_AIRPORT.nom :{G=m}Port-adhair - {STRING} STR_SV_STNAME_AIRPORT.gen :{G=m}Puirt-adhair - {STRING} STR_SV_STNAME_AIRPORT.dat :{G=m}Port-adhair - {STRING} STR_SV_STNAME_OILFIELD :Achadh-ola {STRING} STR_SV_STNAME_MINES :Mèinnean {STRING} STR_SV_STNAME_DOCKS :{G=m}Port {STRING} STR_SV_STNAME_DOCKS.nom :{G=m}Port - {STRING} STR_SV_STNAME_DOCKS.gen :{G=m}Puirt - {STRING} STR_SV_STNAME_DOCKS.dat :{G=m}Port - {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Meudachadh {STRING} STR_SV_STNAME_SIDINGS :Taobh {STRING} STR_SV_STNAME_BRANCH :Meur {STRING} STR_SV_STNAME_UPPER :{STRING} Uachdarach STR_SV_STNAME_LOWER :{STRING} Iochdarach STR_SV_STNAME_HELIPORT :{G=m}Port-heileacoptair {STRING} STR_SV_STNAME_HELIPORT.nom :{G=m}Port-heileacoptair - {STRING} STR_SV_STNAME_HELIPORT.gen :{G=m}Puirt-heileacoptair - {STRING} STR_SV_STNAME_HELIPORT.dat :{G=m}Port-heileacoptair - {STRING} STR_SV_STNAME_FOREST :Coille {STRING} STR_SV_STNAME_FALLBACK :{STRING} Stèisean {NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Smùide) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Einnsean-smùide Calma STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Einnsean-smùide Cumhachdach STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Einnsean-smùide Treun STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Einnsean Diesel Calma STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Einnsean Diesel Cumhachdach STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Smùide) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney “Jubilee" (Smùide) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu “A4" (Smùide) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH “8P" (Smùide) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :“Dash" (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry “25" (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU “37" (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss “47" (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH “125" (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH “30" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH “40" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :“T.I.M." (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :“AsiaStar" (Dealain) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Carbad thaistealach STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Bhana litrichean STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :{G=f}Truca guail STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Tancair ola STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Bhana sprèidhe STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :{G=m}Bhana bathair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :{G=f}Drabhailt gràine STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :{G=f}Truca fiodha STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :{G=f}Drabhailt cloich-iarainn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :{G=f}Truca stàilinne STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :{G=m}Bhana armach STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :{G=m}Bhana bìdh STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :{G=f}Truca pàipeir STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :{G=f}Drabhailt cloich-copair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :{G=m}Tancair uisge STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :{G=f}Truca measa STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :{G=f}Truca rubair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :{G=f}Truca siùcair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :{G=f}Drabhailt canaich-siùcair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :{G=f}Drabhailt tofaidh STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :{G=m}Bhana builgein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :{G=m}Tancair cola STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :{G=m}Bhana mìlsein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :{G=m}Bhana dhèideagan STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :{G=f}Truca bataraidh STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :{G=f}Truca plastaig STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :“X2001" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :“Millennium Z1" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Z99 Iongantach STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :{G=m}Carbad thaistealach STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :{G=m}Bhana puist STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :{G=f}Truca guail STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :{G=m}Tancair ola STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :{G=m}Bhana sprèidhe STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :{G=m}Bhana bathair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :{G=f}Drabhailt gràine STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :{G=f}Truca fiodha STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :{G=f}Drabhailt cloich-iarainn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :{G=f}Truca stàilinne STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :{G=m}Bhana armach STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Bhana bìdh STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :{G=f}Truca pàipeir STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :{G=f}Drabhailt cloich-copair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :{G=m}Tancair uisge STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :{G=f}Truca measa STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :{G=f}Truca rubair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :{G=f}Truca siùcair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :{G=f}Drabhailt canaich-siùcair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :{G=f}Drabhailt tofaidh STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :{G=m}Bhana builgein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Tancair cola STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :{G=m}Tancair mìlsein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :{G=m}Bhana dhèideagan STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :{G=f}Truca bataraidh STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :{G=f}Truca plastaig STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 “Leviathan" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 “Cyclops" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 “Pegasus" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 “Chimaera" (Dealain) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Rocaid Iongantach STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :{G=m}Carbad thaistealach STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :{G=m}Bhana puist STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :{G=f}Truca guail STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :{G=m}Tancair ola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :{G=m}Bhana sprèidhe STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :{G=m}Bhana bathair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :{G=f}Drabhailt gràine STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :{G=f}Truca fiodha STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :{G=f}Drabhailt cloich-iarainn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :{G=f}Truca stàilinne STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :{G=m}Bhana armach STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :{G=m}Bhana bìdh STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :{G=f}Truca pàipeir STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :{G=f}Drabhailt cloich-copair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :{G=m}Tancair uisge STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :{G=f}Truca measa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :{G=f}Truca rubair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :{G=f}Truca siùcair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :{G=f}Drabhailt canaich-siùcair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :{G=f}Drabhailt tofaidh STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :{G=m}Bhana builgein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :{G=m}Tancair cola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Tancair mìlsein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :{G=m}Bhana dhèideagan STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :{G=f}Truca bataraidh STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :{G=f}Truca plastaig STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :{G=m}Bus rìoghail MPS STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :{G=m}Bus Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :{G=m}Bus Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :{G=m}Sàr-bhus Foster II STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :{G=m}Bus Calma I STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :{G=m}Bus Calma II STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :{G=m}Bus Calma III STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :{G=f}Truca guail Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :{G=f}Truca guail Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :{G=f}Truca guail DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :{G=f}Truca puist MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :{G=f}Truca puist Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :{G=f}Truca puist Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :{G=f}Truca puist Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :{G=f}Truca puist Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :{G=f}Truca puist Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :{G=m}Tancair ola Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :{G=m}Tancair ola Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :{G=m}Tancair ola Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :{G=m}Bhana sprèidhe Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :{G=m}Bhana sprèidhe Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :{G=m}Bhana sprèidhe Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :{G=f}Truca bathair Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :{G=f}Truca bathair Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :{G=f}Truca bathair Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :{G=f}Truca gràine Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :{G=f}Truca gràine MhicThòmais STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :{G=f}Truca gràine Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :{G=f}Truca fiodha Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :{G=f}Truca fiodha Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :{G=f}Truca fiodha Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :{G=f}Truca cloich-iarainn MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :{G=f}Truca cloich-iarainn Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :{G=f}Truca cloich-iarainn Thapaidh STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :{G=f}Truca stàilinne Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :{G=f}Truca stàilinne Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :{G=f}Truca stàilinne Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :{G=f}Truca armach Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :{G=f}Truca armach Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :{G=f}Truca armach Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :{G=m}Bhana bìdh Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :{G=m}Bhana bìdh Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :{G=m}Bhana bìdh Tapaidh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :{G=f}Truca pàipeir Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :{G=f}Truca pàipeir Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :{G=f}Truca pàipeir MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :{G=f}Truca cloich-copair MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :{G=f}Truca cloich-copair Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :{G=f}Truca cloich-copair Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :{G=m}Tancair uisge Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :{G=m}Tancair uisge Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :{G=m}Tancair uisge MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :{G=f}Truca measa Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :{G=f}Truca measa Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :{G=f}Truca measa Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :{G=f}Truca rubair Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :{G=f}Truca rubair Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :{G=f}Truca rubair RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :{G=f}Truca siùcair Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :{G=f}Truca siùcair Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :{G=f}Truca siùcair Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=f}Truca cola Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=f}Truca cola Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=f}Truca cola Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :{G=f}Truca canaich-siùcair Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :{G=f}Truca canaich-siùcair Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :{G=f}Truca canaich-siùcair Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :{G=f}Truca tofaidh Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :{G=f}Truca tofaidh Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :{G=f}Truca tofaidh Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :{G=m}Bhana dhèideagan Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :{G=m}Bhana dhèideagan Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :{G=m}Bhana dhèideagan Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :{G=f}Truca mìlsein Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :{G=f}Truca mìlsein Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :{G=f}Truca mìlsein Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :{G=f}Truca bataraidh Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :{G=f}Truca bataraidh Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :{G=f}Truca bataraidh Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :{G=f}Truca dheochan gucagach Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :{G=f}Truca dheochan gucagach Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :{G=f}Truca dheochan gucagach Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :{G=f}Truca plastaig Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :{G=f}Truca plastaig Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :{G=f}Truca plastaig Iongantach STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :{G=f}Truca builgein Threun STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :{G=f}Truca builgein Chumhachdach STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :{G=f}Truca builgein Iongantach STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :{G=m}Tancair ola MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :{G=m}Tancair ola CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :{G=f}Bàta-aiseig MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :{G=f}Bàta-aiseig FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :{G=f}Bàta-foluaimein Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :{G=f}Bàta-aiseig Mhall STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :{G=f}Bàta-aiseig Luasganach STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :{G=f}Long carago Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :{G=f}Long carago Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=f}Long carago Threun STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :{G=f}Long carago Chumhachdach STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :{G=m}Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :{G=m}Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :{G=m}FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :{G=m}Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :{G=m}Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :{G=m}Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :{G=m}Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :{G=m}Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :{G=m}Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :{G=m}Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :{G=m}Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :{G=m}Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :{G=m}Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :{G=m}Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :{G=m}Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :{G=m}Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :{G=m}Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :{G=m}Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :{G=m}Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :{G=m}Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :{G=m}Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :{G=m}Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :{G=m}Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :{G=m}Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :{G=m}AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :{G=m}Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :{G=m}Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :{G=m}Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :{G=m}Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :{G=m}Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :{G=m}FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :{G=m}Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :{G=m}Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :{G=m}Calma 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :{G=m}Calma 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :{G=m}Plèana clis X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :{G=m}Plèana Ealamh M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :{G=m}Plèana Clis Sgiobalta STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :{G=m}Heileacoptair Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :{G=m}Heileacoptair Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :{G=m}Heileacoptair Cumhachdach ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :Fleodrainn {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :Fleodrainn {1:COMMA} {0:TOWN} STR_FORMAT_COMPANY_NUM :(Companaidh {COMMA}) STR_FORMAT_GROUP_NAME :Buidheann {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :Puing-thurais {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Puing-thurais {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_TRAIN :{G=f}Trèan-lann {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN.nom :{G=f}Trèan-lann - {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN.gen :{G=f}Trèan-lainn - {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN.dat :{G=f}Trèan-lann - {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Trèan-lann {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{G=f}Garaids {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{G=f}Garaids {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_SHIP :{G=m}Cala {TOWN} STR_FORMAT_DEPOT_NAME_SHIP.nom :{G=m}Cala - {TOWN} STR_FORMAT_DEPOT_NAME_SHIP.gen :{G=m}Calaidh - {TOWN} STR_FORMAT_DEPOT_NAME_SHIP.dat :{G=m}Cala - {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{G=m}Cala {1:COMMA} {0:TOWN} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{G=m}Hangar {STATION} STR_FORMAT_DEPOT_NAME_AIRCRAFT.nom :{G=m}Hangar - {STATION} STR_FORMAT_DEPOT_NAME_AIRCRAFT.gen :{G=m}Hangair - {STATION} STR_FORMAT_DEPOT_NAME_AIRCRAFT.dat :{G=m}Hangar - {STATION} STR_UNKNOWN_STATION :stèisean neo-aithnichte STR_DEFAULT_SIGN_NAME :Sanas STR_COMPANY_SOMEONE :cuideigin STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Amharcaiche, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_DATE_LONG_SMALL.dat :{TINY_FONT}{BLACK}{DATE_LONG.dat} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/icelandic.txt0000644000000000000000000144727512246102561016100 0ustar rootroot##name Icelandic ##ownname Íslenska ##isocode is_IS ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x040f ##grflangid 0x29 ##gender karlkyn kvenkyn hvorugkyn # $Id: icelandic.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(óskilgreindur strengur) STR_JUST_NOTHING :Ekkert # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Farþegar STR_CARGO_PLURAL_COAL :Kol STR_CARGO_PLURAL_MAIL :Póstur STR_CARGO_PLURAL_OIL :Olía STR_CARGO_PLURAL_LIVESTOCK :Búfé STR_CARGO_PLURAL_GOODS :Vörur STR_CARGO_PLURAL_GRAIN :Korn STR_CARGO_PLURAL_WOOD :Timbur STR_CARGO_PLURAL_IRON_ORE :Járngrýti STR_CARGO_PLURAL_STEEL :Stál STR_CARGO_PLURAL_VALUABLES :Verðmæti STR_CARGO_PLURAL_COPPER_ORE :Kopar STR_CARGO_PLURAL_MAIZE :Maís STR_CARGO_PLURAL_FRUIT :Ávextir STR_CARGO_PLURAL_DIAMONDS :Demantar STR_CARGO_PLURAL_FOOD :Matvæli STR_CARGO_PLURAL_PAPER :Pappír STR_CARGO_PLURAL_GOLD :Gull STR_CARGO_PLURAL_WATER :Vatn STR_CARGO_PLURAL_WHEAT :Hveiti STR_CARGO_PLURAL_RUBBER :Gúmmí STR_CARGO_PLURAL_SUGAR :Sykur STR_CARGO_PLURAL_TOYS :Leikföng STR_CARGO_PLURAL_CANDY :Sælgæti STR_CARGO_PLURAL_COLA :Kóladrykkir STR_CARGO_PLURAL_COTTON_CANDY :Sykurfrauð STR_CARGO_PLURAL_BUBBLES :Kúlur STR_CARGO_PLURAL_TOFFEE :Toffý STR_CARGO_PLURAL_BATTERIES :Rafhlöður STR_CARGO_PLURAL_PLASTIC :Plast STR_CARGO_PLURAL_FIZZY_DRINKS :Gosdrykkir # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Farþega STR_CARGO_SINGULAR_COAL :Kola STR_CARGO_SINGULAR_MAIL :Póst STR_CARGO_SINGULAR_OIL :Olíu STR_CARGO_SINGULAR_LIVESTOCK :Búfé STR_CARGO_SINGULAR_GOODS :Vörur STR_CARGO_SINGULAR_GRAIN :Korn STR_CARGO_SINGULAR_WOOD :Timbur STR_CARGO_SINGULAR_IRON_ORE :Járngrýtis STR_CARGO_SINGULAR_STEEL :Stál STR_CARGO_SINGULAR_VALUABLES :Verðmæta STR_CARGO_SINGULAR_COPPER_ORE :Kopargrýtis STR_CARGO_SINGULAR_MAIZE :Maís STR_CARGO_SINGULAR_FRUIT :Ávaxta STR_CARGO_SINGULAR_DIAMOND :Demanta STR_CARGO_SINGULAR_FOOD :Matvæla STR_CARGO_SINGULAR_PAPER :Pappírs STR_CARGO_SINGULAR_GOLD :Gull STR_CARGO_SINGULAR_WATER :Vatns STR_CARGO_SINGULAR_WHEAT :Hveitis STR_CARGO_SINGULAR_RUBBER :Gúmmí STR_CARGO_SINGULAR_SUGAR :Sykur STR_CARGO_SINGULAR_TOY :Leikfanga STR_CARGO_SINGULAR_CANDY :Sælgætis STR_CARGO_SINGULAR_COLA :Kóladrykkja STR_CARGO_SINGULAR_COTTON_CANDY :Sykurfrauðs STR_CARGO_SINGULAR_BUBBLE :Kúlu STR_CARGO_SINGULAR_TOFFEE :Toffý STR_CARGO_SINGULAR_BATTERY :Rafhlöðu STR_CARGO_SINGULAR_PLASTIC :Plast STR_CARGO_SINGULAR_FIZZY_DRINK :Gosdrykkja # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} farþeg{P i ar} STR_QUANTITY_COAL :{WEIGHT_LONG} af kolum STR_QUANTITY_MAIL :{COMMA} pok{P i ar} af pósti STR_QUANTITY_OIL :{VOLUME_LONG} af olíu STR_QUANTITY_LIVESTOCK :{COMMA} grip{P u i}r STR_QUANTITY_GOODS :{COMMA} kass{P i ar} af vörum STR_QUANTITY_GRAIN :{WEIGHT_LONG} af korni STR_QUANTITY_WOOD :{WEIGHT_LONG} af timbri STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} af járngrýti STR_QUANTITY_STEEL :{WEIGHT_LONG} af stáli STR_QUANTITY_VALUABLES :{COMMA} pok{P i ar} af verðmætum STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} af kopar STR_QUANTITY_MAIZE :{WEIGHT_LONG} af maís STR_QUANTITY_FRUIT :{WEIGHT_LONG} af ávöxtum STR_QUANTITY_DIAMONDS :{COMMA} pok{P i ar} af demöntum STR_QUANTITY_FOOD :{WEIGHT_LONG} af matvælum STR_QUANTITY_PAPER :{WEIGHT_LONG} af pappír STR_QUANTITY_GOLD :{COMMA} pok{P i ar} af gulli STR_QUANTITY_WATER :{VOLUME_LONG} af vatni STR_QUANTITY_WHEAT :{WEIGHT_LONG} af hveiti STR_QUANTITY_RUBBER :{VOLUME_LONG} af gúmmíi STR_QUANTITY_SUGAR :{WEIGHT_LONG} af sykri STR_QUANTITY_TOYS :{COMMA} leikf{P a ö}ng STR_QUANTITY_SWEETS :{COMMA} pok{P i ar} af sælgæti STR_QUANTITY_COLA :{VOLUME_LONG} af kóladrykk STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} af sykurfrauði STR_QUANTITY_BUBBLES :{COMMA} kúl{P a ur} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} af toffý STR_QUANTITY_BATTERIES :{COMMA} rafhl{P aða öður} STR_QUANTITY_PLASTIC :{VOLUME_LONG} af plasti STR_QUANTITY_FIZZY_DRINKS :{COMMA} gosdrykk{P u i}r STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}CL STR_ABBREV_MAIL :{TINY_FONT}ML STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}LV STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}KR STR_ABBREV_WOOD :{TINY_FONT}VI STR_ABBREV_IRON_ORE :{TINY_FONT}OR STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}CO STR_ABBREV_MAIZE :{TINY_FONT}MZ STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}FD STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GD STR_ABBREV_WATER :{TINY_FONT}WR STR_ABBREV_WHEAT :{TINY_FONT}WH STR_ABBREV_RUBBER :{TINY_FONT}RB STR_ABBREV_SUGAR :{TINY_FONT}SG STR_ABBREV_TOYS :{TINY_FONT}TY STR_ABBREV_SWEETS :{TINY_FONT}SW STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}CF STR_ABBREV_BUBBLES :{TINY_FONT}BU STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}FZ STR_ABBREV_NONE :{TINY_FONT}EKKERT STR_ABBREV_ALL :{TINY_FONT}ALLT # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} farþeg{P i ar} STR_BAGS :{COMMA} pok{P i ar} STR_TONS :{COMMA} tonn STR_LITERS :{COMMA} lítr{P i ar} STR_ITEMS :{COMMA} hlut{P ur ir} STR_CRATES :{COMMA} kass{P i ar} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Dökkblár STR_COLOUR_PALE_GREEN :Fölgrænn STR_COLOUR_PINK :Bleikur STR_COLOUR_YELLOW :Gulur STR_COLOUR_RED :Rauður STR_COLOUR_LIGHT_BLUE :Ljósblár STR_COLOUR_GREEN :Grænn STR_COLOUR_DARK_GREEN :Dökkgrænn STR_COLOUR_BLUE :Blár STR_COLOUR_CREAM :Andlitslitur STR_COLOUR_MAUVE :Silfur STR_COLOUR_PURPLE :Fjólublár STR_COLOUR_ORANGE :Appelsínugulur STR_COLOUR_BROWN :Brúnn STR_COLOUR_GREY :Grár STR_COLOUR_WHITE :Hvítur # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mílur/klst STR_UNITS_VELOCITY_METRIC :{COMMA} km/klst STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hö. STR_UNITS_POWER_METRIC :{COMMA}hö. STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}tonn STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lítr{P i ar} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Sía: STR_LIST_FILTER_OSKTITLE :{BLACK}Sláðu inn leitarstreng STR_LIST_FILTER_TOOLTIP :{BLACK}Sláðu inn leitarstreng til að sía listann STR_TOOLTIP_SORT_ORDER :{BLACK}Velja uppröðun (minnkandi/stækkandi) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Velja uppröðun STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Veldu hvers kyns farartæki þú vilt kaupa STR_BUTTON_SORT_BY :{BLACK}Flokka eftir STR_BUTTON_LOCATION :{BLACK}Staðsetning STR_BUTTON_RENAME :{BLACK}Endurnefna STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Loka glugga STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Haus glugga - dragðu með músinni til að færa gluggann STR_TOOLTIP_SHADE :{BLACK}Draga glugga saman - sýna aðeins titlslá STR_TOOLTIP_DEBUG :{BLACK}Sýna NewGRF villuleitarupplýsingar STR_TOOLTIP_STICKY :{BLACK}Merkja þennan glugga sem ólokanlegan fyrir STR_TOOLTIP_RESIZE :{BLACK}Ýttu og dragðu til að breyta stærð gluggans STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Stækka/smækka gluggastærð STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skrunslá - færir lista upp/niður STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rennislá - rennir lista til vinstri/hægri STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Eyða byggingum o.s.frv. á lóðarreiti. Ctrl velur svæðið skáhalt. Haldið Shift inni til að sýna áætlaðan kostnað # Query window STR_BUTTON_DEFAULT :{BLACK}Sjálfgildi STR_BUTTON_CANCEL :{BLACK}Hætta við STR_BUTTON_OK :{BLACK}Í lagi # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lengd: {NUM} STR_MEASURE_AREA :{BLACK}Svæði: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lengd: {NUM}{}Hæðarmunur {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Svæði: {NUM} x {NUM}{}Hæðarmunur: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Fólksfjöldi STR_SORT_BY_CAPTION_NAME :{BLACK}Nafn STR_SORT_BY_CAPTION_DATE :{BLACK}Dagsetning # These are used in dropdowns STR_SORT_BY_NAME :Nafn STR_SORT_BY_PRODUCTION :Framleiðsla STR_SORT_BY_TYPE :Tegund STR_SORT_BY_TRANSPORTED :Flutt STR_SORT_BY_NUMBER :Númer STR_SORT_BY_PROFIT_LAST_YEAR :Hagnaður síðasta árs STR_SORT_BY_PROFIT_THIS_YEAR :Hagnaður þessa árs STR_SORT_BY_AGE :Aldur STR_SORT_BY_RELIABILITY :Áreiðanleiki STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Burðargeta alls á hverja tegund farms STR_SORT_BY_MAX_SPEED :Hámarkshraði STR_SORT_BY_MODEL :Týpa STR_SORT_BY_VALUE :Virði STR_SORT_BY_LENGTH :Lengd STR_SORT_BY_LIFE_TIME :Líftími eftir STR_SORT_BY_TIMETABLE_DELAY :Seinkun áætlunar STR_SORT_BY_FACILITY :Tegund stöðvar STR_SORT_BY_WAITING :Verðgildi farms á stöð STR_SORT_BY_RATING_MAX :Hæsta einkunn stöðvar STR_SORT_BY_RATING_MIN :Lægsta einkunn stöðvar STR_SORT_BY_ENGINE_ID :Einkenni (hefðbundin röðun) STR_SORT_BY_COST :Kostnaður STR_SORT_BY_POWER :Afl STR_SORT_BY_TRACTIVE_EFFORT :Togkraftur STR_SORT_BY_INTRO_DATE :Árgerð STR_SORT_BY_RUNNING_COST :Rekstrarkostnaður STR_SORT_BY_POWER_VS_RUNNING_COST :Afl/Rekstrarkostnaður STR_SORT_BY_CARGO_CAPACITY :Burðargeta STR_SORT_BY_RANGE :Drægni # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Stöðva leik STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Spóla leikinn áfram STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Stillingar STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Vista leik, hætta í leik, hætta í OpenTTD STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Sýna kort STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Sýna bæjarmöppu STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Sýna samstarfssamninga STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Sýna lista yfir stöðvar fyrirtækis STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Sýna fjárhagsupplýsingar fyrirtækis STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Sýna almennar upplýsingar um fyrirtæki STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Sýna línurit STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Sýna stigatöflu fyrirtækja STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fjármagna byggingu nýs iðnaðars STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Sýna lista yfir lestar fyrirtækis. Ctrl+smella skiptir milli hópa/farartækja lista STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Sýna lista yfir götufarartæki fyrirtækis. Ctrl+smella velur opnun á hóp/farartækja lista STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Sýna lista yfir skip fyrirtækis. Ctrl+smella velur opnun á hóp/farartækja lista STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Sýna lista yfir flugvélar fyrirtækis. Ctrl+smella velur opnun á hóp/farartækja lista STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Þrengja sýnishorn STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Víkka sýnishorn STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Leggja járnbrautarspor STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Leggja veg STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Byggja bryggju STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Byggja flugvöll STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Opna landslags verkfæraslána til að hækka/lækka land, gróðursetja tré o.s.frv. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Sýna hljóð/tónlistar glugga STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Sýna síðustu skilaboð/fréttatilkynningu, sýna skilaboðastillingar STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landsvæðisupplýsingar, stjórnborð, aflúsunu forskrifta, skjáskot, um OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skipta á tækjaslá # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Vista kort, opna kort, hætta í kortagerð, hætta í OpenTTD STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Kortagerð STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Færa byrjunardagsetninguna aftur um 1 ár STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Færa byrjunardagsetninguna fram um 1 ár STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Smelltu til að stilla upphafsár STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Sýna kort, bæjarmöppu STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landslagsgerð STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Bæjargerð STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Iðnaðargerð STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Vegagerð STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Gróðursetja tré. Shift sýnir áætlaðan kostnað STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Setja skilti STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Setja hlut. Shift sýnir áætlaðan kostnað ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Vista kort STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Opna kort STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Vista hæðakort STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Hlaða hæðakorti STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Hætta í kortagerð STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Hætta ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Stillingar STR_SETTINGS_MENU_CONFIG_SETTINGS :Ítarlegar stillingar STR_SETTINGS_MENU_SCRIPT_SETTINGS :Gervigreind/leikjaforskrift STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF stillingar STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Gegnsæisstillingar STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Bæjanöfn sýnd STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stöðvarnöfn sýnd STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Millistöðvar sýndar STR_SETTINGS_MENU_SIGNS_DISPLAYED :Skilti sýnd STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Skilti og nöfn keppinauta sýnd STR_SETTINGS_MENU_FULL_ANIMATION :Fullar myndhreyfingar STR_SETTINGS_MENU_FULL_DETAIL :Full nákvæmni STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Gegnsæjar byggingar STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gegnsæ skilti ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Vista leik STR_FILE_MENU_LOAD_GAME :Opna leik STR_FILE_MENU_QUIT_GAME :Hætta leik STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Hætta ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Heimskort STR_MAP_MENU_EXTRA_VIEW_PORT :Auka sjónarhorn STR_MAP_MENU_SIGN_LIST :Skiltalisti ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Listi yfir bæi STR_TOWN_MENU_FOUND_TOWN :Fann bæ ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Samstarfssamningar STR_SUBSIDIES_MENU_GOAL :Markmið ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Línurit: Rekstrarhagnaður STR_GRAPH_MENU_INCOME_GRAPH :Línurit: Tekjur STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Línurit: Fluttur farmur STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Línurit: Vísitala fyrirtækis STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Línurit: Verðmæti fyrirtækis STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Línurit: Flutningsgróði ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Stigatafla fyrirtækja STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Nákvæm frammistöðumæling STR_GRAPH_MENU_HIGHSCORE :Stigatafla ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Fyrirtækjaskrá STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Tengdur iðnaður STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Fjármagna nýjan iðnað ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Járnbrautarspors framkvæmdir STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Rafmagnsspora framkvæmdir STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Einteinungsframkvæmdir STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Segulsvifvagna framkvæmdir ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Vegagerð STR_ROAD_MENU_TRAM_CONSTRUCTION :Sporvagnaframkvæmdir ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Vatnaframkvæmdir ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Flugvallarframkvæmdir ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Mótun lands STR_LANDSCAPING_MENU_PLANT_TREES :Gróðursetja tré STR_LANDSCAPING_MENU_PLACE_SIGN :Setja skilti ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Hljóð/tónlist ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Síðustu skilaboð/frétt STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Saga skilaboða ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Landssvæðisupplýsingar STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Kveikja á stýriskjá STR_ABOUT_MENU_AI_DEBUG :Aflúsun gervigreindar/forskrifta STR_ABOUT_MENU_SCREENSHOT :Skjámynd STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Súmuð inn skjáskot STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Taka skjáskot af súmi STR_ABOUT_MENU_GIANT_SCREENSHOT :Risa skjámynd STR_ABOUT_MENU_ABOUT_OPENTTD :Um 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Samstilla hreyfimynd STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Sýna/fela afmörkunar kassa STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Sýna/fela litun á endurteiknuðum hlutum ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3 STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Maí STR_MONTH_ABBREV_JUN :Jún STR_MONTH_ABBREV_JUL :Júl STR_MONTH_ABBREV_AUG :Ágú STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nóv STR_MONTH_ABBREV_DEC :Des STR_MONTH_JAN :Janúar STR_MONTH_FEB :Febrúar 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_AUG :Ágúst STR_MONTH_SEP :September STR_MONTH_OCT :Október STR_MONTH_NOV :Nóvember STR_MONTH_DEC :Desember ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Lykill STR_GRAPH_KEY_TOOLTIP :{BLACK}Sýna lykilmynd STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Resktrartekju línurit STR_GRAPH_INCOME_CAPTION :{WHITE}Tekjulínurit STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Fluttar einingar af farmi STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Einkunn fyrirtækis (hámarkseinkunn=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Fyrirtækisvirði STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Farmgjöld STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dagar í flutningi STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Laun fyrir flutning á 10 einingum (eða 10,000 lítra) af farmi um 20 reiti STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Sýna allt STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Fela allt STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Sýna alla farma á farmgjalda línuritinu STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Sýna enga farma á farmgjalda línuritinu STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Taka út/setja inn graf fyrir farmgerðir STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Birta ítarlegt árangursmat # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Lykilmynd fyrir fyrirtækjagröf STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Smelltu hér til að taka út/setja inn graf þessa fyrirtækis # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Fyrirtækjalisti STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Verkfræðingur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Umferðarstjórnandi STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Flutningaskipuleggjandi STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Leiðarumsjónarmaður STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Stjórnandi STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Framkvæmdarstjóri STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Stjórnarformaður STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Forstjóri STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Auðkýfingur # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Nákvæm frammistöðumæling STR_PERFORMANCE_DETAIL_KEY :{BLACK}Upplýsingar STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Skoða upplýsingar um þetta fyrirtæki ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Farartæki: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stöðvar: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Lágmarkshagnaður: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Lágmarkstekjur: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Hámarkstekjur: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Flutt: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Farmur: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Reiðufé: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lán: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Alls: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Fjöldi farartækja sem skiluðu hagnaði síðasta ár. Inniheldur bifreiðar, lestir, skip og flugvélar STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Fjöldi stöðvarhluta sem hafa nýlega verið þjónustaðir. Hver hluti stöðvar (t.d. lestarstöð, strætóstöð, flugvöllur) er talinn sérstaklega, jafnvel þótt þeir séu tengdir einni stöð STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Hagnaður tekjulægsta farartækisins (sem þó er eldra en 2 ára) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Heildar afkoma í ársfjórðungi með lægsta gróða yfir síðastliðna 12 ársfjórðunga STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Heildar afkoma í ársfjórðungi með hæðsta gróða yfir síðastliðnu 12 ársfjórðunga STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Einingar farms sem fluttar hafa verið síðasta árið STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Fjöldi farmgerða sem fluttar voru í síðasta ársfjórðungi STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Peningar sem þetta fyrirtæki á í bankanum STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Peningar sem þetta fyrirtæki hefur tekið að láni STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Heildarpunktar af mögulegum punktum # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz glymskratti STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Allt STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Gamalt STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Móðins STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy gata STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Sérval 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Sérval 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Tónlistarstyrkur STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Hljóðstyrkur STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}LÆGST STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}HÆST STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}: STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Lag STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titill STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Stokka STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Listar STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Skipta yfir í fyrra lag STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Skipta yfir í næsta lag STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Hætta að spila tónlist STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Byrja að spila tónlist STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Dragðu sleðana til að stilla hljóð/tónlistar styrkinn STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Velja 'öll lög' listann STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Velja 'gamli stíll' listann STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Velja 'nýi stíll' listann STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Velja 'Ezy gata' listann STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Velja 'Sérval 1' (valið af notanda) listann STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Velja 'Sérval 2' (valið af notanda) listann STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Kveikja/slökkva á stokkun STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Sýna lagalista STR_ERROR_NO_SONGS :{WHITE}Tómur lagalisti hefur verið valinn. Engin lög verða spiluð # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Lagalistar STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Laganúmer STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Listi - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Hreinsa STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Hreinsa núverandi lista (aðeins Sérval1 eða Sérval2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Veldu lag til að bæta í núverandi lista (aðeins Sérval1 eða Sérval2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Smelltu á lag til að fjarlægja það úr listanum (á aðeins við um Sérvalið1 og Sérvalið2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Efstu fyrirtæki sem náðu {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Sambandstafla fyrirtækis í {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Viðskiptamaður STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Athafnamaður STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Iðnjöfur STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapítalisti STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Áhrifamaður STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Stórlax STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Viðskiptajöfur aldarinnar STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} öðlast '{STRING}' titil! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} úr {COMPANY} öðlast '{STRING}' titil! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Kort - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Útlínur STR_SMALLMAP_TYPE_VEHICLES :Farartæki STR_SMALLMAP_TYPE_INDUSTRIES :Iðnaðir STR_SMALLMAP_TYPE_ROUTES :Leiðir STR_SMALLMAP_TYPE_VEGETATION :Uppskera STR_SMALLMAP_TYPE_OWNERS :Eigendur STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Sýna útlínur lands á korti STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Sýna farartæki á korti STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Sýna iðnaði á korti STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Sýna flutningsleiðir á korti STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Sýna uppskerur á korti STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Sýna lóðareigendur á korti STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Smelltu á iðnað til að sýna/fela hann á kortinu. Ctrl+Smella felur allan iðnað fyrir utan þann sem þú velur. Ctrl+Smella á hann aftur til að birta allar tegundir iðnaðar STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Smelltu á fyrirtæki til að sýna/fela eignir þess. Ctrl+Smella til að fela öll fyrirtæki fyrir utan það sem þú velur. Ctrl+Smella á það aftur til að birta öll fyrirtæki STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegir STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Járnbrautir STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stöðvar/Flugvellir/Hafnir STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Byggingar/Iðnaðir STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Farartæki STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Lestar STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Bifreiðir STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skip STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Flugvélar STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Flutningarleiðir STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Skógur STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Lestarstöð STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Vörubílastöð STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Strætóstoppistöð STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Flugvöllur/Þyrlupallur STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Bryggja STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Hrjúft land STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Graslendi STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Bert land STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Akrir STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Tré STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Klettar STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Vatn STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Enginn eigandi STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Bæir STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Iðnaðir STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Eyðimörk STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snjór STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Sýna/fela bæjarnöfn á korti STR_SMALLMAP_CENTER :{BLACK}Miðjustilla smákortið miðað við núverandi staðsetningu STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Fela allt STR_SMALLMAP_ENABLE_ALL :{BLACK}Sýna allt STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Sýna hæð STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Sýna ekki iðnaði STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Sýna alla iðnaði STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Sýna/fela hæðakort STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Fela eignir allra fyrirtækja á kortinu STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Sýna eignir allra fyrirtækja á kortinu # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Sýna seinustu skilaboð eða fréttatilkynningu STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * STÖÐVAÐUR * * STR_STATUSBAR_AUTOSAVE :{RED}SJÁLFVIRK VISTUN STR_STATUSBAR_SAVING_GAME :{RED}* * VISTA LEIK * * # News message history STR_MESSAGE_HISTORY :{WHITE}Saga skilaboða STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Listi yfir nýlegar fréttir STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Skilaboð STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsta lest kemur við á {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsti strætisvagn kemur við á {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsti vörubíll kemur við á {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsti farþegasporvagn kemur við á {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsti farmsporvagn kemur við á {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsta skip kemur við á {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Bæjarbúar fagna . . .{}Fyrsta flugvél kemur við á {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Lestarslys!{}{COMMA} deyja í sprengingu eftir árekstur STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Bílslys!{}Bílstjóri deyr í sprengingu eftir árekstur við lest STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Bílslys!{}{COMMA} deyja í sprengingu eftir árekstur við lest STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Flugslys!{}{COMMA} deyja í sprengingu á {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Flugslys!{}Flugvél varð eldsneytislaus, {COMMA} deyja í eldspreningu STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Loftskipaslys á {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Bifreið eyðilagðist í árekstri við FFH STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Sprenging í olíuhreinsistöð nálægt {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Verksmiðja eyðilegst við grunsamlegar kringumstæður nálægt {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}FFH lendir rétt hjá {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Hrun í kolanámu veldur eyðileggingu nálægt {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Flóð!{}Að minnsta kosti {COMMA} er saknað og eru taldir af eftir gífurleg flóð! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Flutningsfyrirtæki í vandræðum! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} mun vera selt eða skráð gjaldþrota nema það fari að taka sig á sem fyrst! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Samruni flutningsfyrirtækja! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} hefur verið selt {STRING} fyrir {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Gjaldþrota! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} hefur verið lokað af bankanum og allar eignir seldar! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nýtt flutningsfyrirtæki stofnað! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} hefur byggingu nálægt {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} hefur verið yfirtekið af {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Forstjóri) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} fjármagnaði nýjan bæ: {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ný {STRING} í byggingu við {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Ný {STRING} er að rísa við {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} tilkynnir yfirvofandi lokun! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Birgðavandamál knýja {STRING} til að tilkynna yfirvofandi lokun! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Skortur á nálægum trjám knýr {STRING} til að tilkynna yfirvofandi lokun! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Gjaldeyrissameining í Evrópu!{}{}Evran er nú eini gjaldeyririnn fyrir öll viðskipti í þínu landi! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Heimssamdráttur!{}{}Hagfræðingar óttast það versta meðan efnahagslífið hrynur! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Samdrætti lokið!{}{}Uppslag í viðskiptum fyrirtækja gefur bjartari von um betri efnahag og grænni haga! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} eykur framleiðsluna! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nýtt kolalag fanns í {INDUSTRY}!{}Tvöföldun í framleiðslu væntanleg! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Meri olía finnst við {INDUSTRY}!{}Tvöföldun í framleiðslu væntanleg! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Búist er við að endurbættar aðferðir á {INDUSTRY} muni skila tvöfaldri framleiðslu! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}framleiðsla í {INDUSTRY} eykst um {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}50% samdráttur í framleiðslu hjá {INDUSTRY} STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Skordýraplága veldur tjóni á {INDUSTRY}!{}Framleiðsla minnkar um 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}framleiðsla í {INDUSTRY} minnkar um {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} bíður í þjónustumiðstöð STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} bíður í þjónustumiðstöð STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} bíður í þjónustumiðstöð STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} bíður í flugskýlinu # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hefur of fáar skipanir á áætlun STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hefur ógilda skipun STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hefur endurteknar skipanir STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hefur ógilda stöð í skipunum sínum # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er tekinn að eldast STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er tekinn að eldast mikið STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} er tekinn að eldast mikið og nauðsynlegt er að skipta honum út STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ratar ekki á áfangastað STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} hefur villst STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Hagnaður síðasta árs af {VEHICLE} nam {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} kemst ekki á næsta áfangastað vegna þess að hann er of langt í burtu STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stöðvaði vegna þess að umbeðin endursetning klikkaði STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Sjálfvirk uppfærsla brást fyrir {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Ný {STRING} er nú fáanleg! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ný {STRING} er nú fáanleg! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} tekur ekki lengur við {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} tekur ekki lengur við {STRING} eða {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} tekur nú við {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} tekur nú við {STRING} og {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Tilboð til samstarfssamnings runnið út:{}{}{STRING} frá {STRING} til {STRING} mun ekki vera samningsbundið. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Samsarfssamningur gerður ógildur:{}{} {STRING}flutningur frá {STRING} til {STRING} er ekki lengur samningsbundinn. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Nýtt tilboð til samstarfssamnings: {}{}Fyrsti {STRING}flutningur frá {STRING} til {STRING} mun stofna til eins árs samstarfssamnings við bæjaryfirvöld! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Samstarfssamningur gerður við {STRING}!{}{}{STRING}flutningur frá {STRING} til {STRING} mun borga 50% aukalega í heilt ár! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Samstarfssamningur gerður við {STRING}!{}{}{STRING}flutningur frá {STRING} til {STRING} mun borga tvöfalt í heilt ár! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Samstarfssamningur gerður við {STRING}!{}{}{STRING}flutningur frá {STRING} til {STRING} mun borga þrefalt í heilt ár! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Samstarfssamningur gerður við {STRING}!{}{}{STRING}flutningur frá {STRING} til {STRING} mun borga fjórfalt í heilt ár! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Glundroði í umferð {TOWN}!{}{}Uppbygging vega kostuð af {STRING} veldur 6 mánaða vesæld meðal ökumanna! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Flutninga einokun! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Bæjarstjórn {TOWN} skrifar undir eins árs sérleyfis samning við {STRING} til flutningar á öllum varningi. # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sjónarhorn {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Afrita í sjónarhorn STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afrita aðalsjónarhornið í þetta sjónarhorn STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Afrita frá sjónarhorni STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Afrita sjónarhornið í rammanum í aðalsjónarhornið # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Stillingar STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Gjaldmiðill STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Val á gjaldmiðli ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Sterlingspund (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Bandaríkjadalur (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Evra (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japanskt jen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Austurrískur skildingur (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgískur franki (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Svissneskur franki (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Tékknesk kóróna (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Þýskt mark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dönsk króna (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spænskir pesetar (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finnskt mark (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franskur franki (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grísk drakma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungversk forinta (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Íslensk króna (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Ítölsk líra (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Hollensk gyllini (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norsk króna (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Pólskt slot (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rúmensk leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rússnesk rúbla (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slóvensk tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Sænsk króna (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Tyrknesk líra (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slóvakísk kórúna (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brasilísk ríla (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Eistnesk Króna (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litháenskt litas (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Suðurkóreskt vonn (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Suður-Afrískt rand (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Sérsniðinn... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mælieiningar STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Kerfi mælieininga ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Amerískt kerfi STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrakerfi STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI kerfi ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Aksturstefna STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Aksturstefna bifreiða STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vinstristefna STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Hægristefna STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Bæjanöfn STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Tungumál bæjarnafna ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ensk (Upphafleg) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Frönsk STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Þýsk STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ensk (Aukaleg) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Rómönsk-Amerísk STR_GAME_OPTIONS_TOWN_NAME_SILLY :Fáránleg STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sænsk STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Hollensk STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnsk STR_GAME_OPTIONS_TOWN_NAME_POLISH :Pólsk STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slóvakísk STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norsk STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungversk STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austurrísk STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rúmensk STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tékknesk STR_GAME_OPTIONS_TOWN_NAME_SWISS :Svissnesk STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dönsk STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Tyrknesk STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Ítölsk STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalónsk ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Sjálfvirk vistun STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Tíðni sjálfvirkra vistana STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Aldrei STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Mánaðarlega STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ársfjórðungslega STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Hálfsárslega STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Árlega STR_GAME_OPTIONS_LANGUAGE :{BLACK}Tungumál STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Tungumál viðmóts STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Fylla út í skjá STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Smelltu hér til að OpenTTD fylli út í skjáinn STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skjáupplausn STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Stilla skjáupplausn STR_GAME_OPTIONS_RESOLUTION_OTHER :annað STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Snið skjámynda STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Snið á skjámyndaskrám STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grunngrafík STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Nota grunngrafíkina STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} týnd{P "" ar} eða ónýt{P "" ar} skrá{P "" r} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Frekari upplýsingar um grunngrafíkpakkann STR_GAME_OPTIONS_BASE_SFX :{BLACK}Grunn hljóðasafn STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Veldu grunn hljóðasafn STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aukaupplýsingar um grunn hljóðasafnið STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Grunntónlistarsafn STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Veld grunntónlistarsafn til að nota STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ónýt{P "" ar} skrá{P "" r} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Auka upplýsingar um grunntónlistarsafnið STR_ERROR_FULLSCREEN_FAILED :{WHITE}Skjáfyllihamur brást # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Sérsniðinn gjaldmiðill STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Gengi: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Hækka gengi miðað við pund (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Lækka gengi miðað við pund (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setja gengi gjaldmiðils miðað við pund (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Aðgreiningarmerki: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Veldu aðgreiningarmerki fyrir gjaldmiðilinn STR_CURRENCY_PREFIX :{LTBLUE}Forskeyti: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Veldu forskeyti fyrir gjaldmiðilinn STR_CURRENCY_SUFFIX :{LTBLUE}Viðskeyti: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Veldu viðskeyti fyrir gjaldmiðilinn STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Skipta í Evrur: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Skipta í Evrur: {ORANGE}aldrei STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Veldu ártal fyrir evruskipti STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skipta yfir í evrur fyrr STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Skipta yfir í evrur síðar STR_CURRENCY_PREVIEW :{LTBLUE}Dæmi: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10.000 pund (£) í þessum gjaldmiðli STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Breyta sérsniðnum gjaldmiðli STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Hámarksfjöldi keppinauta: {ORANGE}{COMMA} STR_NONE :Engin STR_FUNDING_ONLY :Með fjármögnun STR_MINIMAL :Lágmark STR_NUM_VERY_LOW :Mjög Lágt STR_NUM_LOW :Fáir STR_NUM_NORMAL :Miðlungs STR_NUM_HIGH :Margir STR_NUM_CUSTOM :Sérstillt STR_NUM_CUSTOM_NUMBER :Sérstillt ({NUM}) STR_VARIETY_NONE :Engin STR_VARIETY_VERY_LOW :Mjög lágt STR_VARIETY_LOW :Lágt STR_VARIETY_MEDIUM :Miðlungs STR_VARIETY_HIGH :Hátt STR_VARIETY_VERY_HIGH :Mjög Hátt STR_AI_SPEED_VERY_SLOW :Mjög hægt STR_AI_SPEED_SLOW :Hægt STR_AI_SPEED_MEDIUM :Miðlungs STR_AI_SPEED_FAST :Hratt STR_AI_SPEED_VERY_FAST :Mjög hratt STR_SEA_LEVEL_VERY_LOW :Mjög lítið STR_SEA_LEVEL_LOW :Lítið STR_SEA_LEVEL_MEDIUM :Miðlungs STR_SEA_LEVEL_HIGH :Mikið STR_SEA_LEVEL_CUSTOM :Sérstillt STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Sérstillt ({NUM}%) STR_RIVERS_NONE :Engar STR_RIVERS_FEW :Fáar STR_RIVERS_MODERATE :Miðlungs STR_RIVERS_LOT :Margar STR_DISASTER_NONE :Ekkert STR_DISASTER_REDUCED :Minnkað STR_DISASTER_NORMAL :Venjulegt STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Mjög slétt STR_TERRAIN_TYPE_FLAT :Slétt STR_TERRAIN_TYPE_HILLY :Hæðótt STR_TERRAIN_TYPE_MOUNTAINOUS :Fjallótt STR_CITY_APPROVAL_PERMISSIVE :Eftirgefin STR_CITY_APPROVAL_TOLERANT :Umburðarlynd STR_CITY_APPROVAL_HOSTILE :Fjandsamleg STR_WARNING_NO_SUITABLE_AI :{WHITE}Engin nothæf gervigreind í boði...{}Þú getur hlaðið niður mörgum gervigreindum í gegnum 'Ná í viðbætur af netinu' viðmótið # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Ítarlegar stillingar STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Sía: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Þenja út STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Draga saman STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(engin skýring til) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Sjálfgefið gildi: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Gerð stillingar: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Tölvustilling (ekki geymt í vistunarskrám; hefur áhrif á alla leiki) STR_CONFIG_SETTING_TYPE_GAME_MENU :Leikjastillingar (geymdar í vistunarskrám; hefur bara áhrif á nýja leiki ) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Leikjastillingar (geymdar í vistunarskrám; hefur bara áhrif á núverandi leik ) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Fyrirtækjastillingar (geymdar í vistunarskrám; hefur bara áhrif á nýja leiki) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Fyrirtækjastillingar (geymdar í vistunarskrám; hefur bara áhrif á núverandi fyrirtæki) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Sýna: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Takmarkar listan hér fyrir neðan við breyttar stillingar STR_CONFIG_SETTING_RESTRICT_BASIC :Grunnstillingar STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ítarlegar stillingar STR_CONFIG_SETTING_RESTRICT_ALL :Mjög ítarlegar stillingar / allar stillingar STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Stillingar sem hefur verið breytt frá sjálfgefnum STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Stillingar sem eru öðruvísi en þínar stillingar fyrir nýjan leik STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Takmarkar listan hér fyrir neðan við ákveðnar stillingar STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Allar stillingar STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Tölvustilling (ekki geymt í vistunarskrám; hefur áhrif á alla leiki) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Leikjastillingar (geymdar í vistunarskrám; hefur bara áhrif á nýja leiki ) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Leikjastillingar (geymdar í vistunarskrám; hefur bara áhrif á núverandi leik ) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Fyrirtækjastillingar (geymdar í vistunarskrám; hefur bara áhrif á nýja leiki) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Fyrirtækjastillingar (geymdar í vistunarskrám; hefur bara áhrif á núverandi fyrirtæki) STR_CONFIG_SETTING_OFF :Nei STR_CONFIG_SETTING_ON :Já STR_CONFIG_SETTING_DISABLED :Óvirkt STR_CONFIG_SETTING_COMPANIES_OFF :Af STR_CONFIG_SETTING_COMPANIES_OWN :Eigin fyrirtæki STR_CONFIG_SETTING_COMPANIES_ALL :Allra fyrirtækja STR_CONFIG_SETTING_NONE :Enginn STR_CONFIG_SETTING_ORIGINAL :Upphaflegt STR_CONFIG_SETTING_REALISTIC :Raunverulegt STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Vinstri STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Miðja STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Hægri STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Hámarkslán: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Hámarks upphæð sem fyrirtæki getur fengið lánað (ekki er gert ráð fyrir verðbólgu) STR_CONFIG_SETTING_INTEREST_RATE :Vextir: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Vextir á lánum, stjórnar einnig verðbólgu, ef hún er virk STR_CONFIG_SETTING_RUNNING_COSTS :Rekstrarkostnaður: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stillingar á hversu dýrt er að reka farartæki og mannvirki teng þeim STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Framkvæmdahraði: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Minnka framkvæmdir hjá gervigreind STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Bilun á farartækjum: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Hversu oft farartæki sem eru ekki nægilega þjónustuð geta bilað STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Styrkur vegna samstarfs: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Stillingar fyrir hversu hátt er borgað fyrir samstarfssamninga STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Mannvirkja kostnaður: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Stillingar á byggingum og framkvæmdum STR_CONFIG_SETTING_RECESSIONS :Efnahagslægð: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ef virkt getur komið efnahagslægð á nokkurra ára fresti. Meðan á efnahagslægð stendur er öll framleiðsla marktækt minni (framleiðslan fellur í fyrra horf þegar efnahagslægðinni líkur) STR_CONFIG_SETTING_TRAIN_REVERSING :Banna lest að snúa í lestarstöð: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ef virkt, munu lestar ekki snúa við á lestastöðvum sem eru ekki endastöðvarekki snúa við á lestarstöðvar, þó að styttri leið sé á næsta áfangastað þegar þær snúa við STR_CONFIG_SETTING_DISASTERS :Hörmungar: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Kveikja eða slökkva á hörmungum, hörmungar sem af og til stoppa eða eyðileggja farartæki eða byggingar STR_CONFIG_SETTING_CITY_APPROVAL :Viðhörf bæjaryfirvalda til endurskipulagningar: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Veldu hversu mikil áhrif hávaði og umhverfisspjöll frá fyrirtækjum hafa áhrif á mat bæja á fyrirtækinu og frekari framkvæmdir innan bæjarmarkanna STR_CONFIG_SETTING_BUILDONSLOPES :Leyfilegt að byggja í halla og á strönd: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ef þessi stilling er virk er hægt að byggja spor og stöðvar í flestum brekkum. Ef hún er óvirk er það bara hægt í brekkum sem snúa í sömu átt og sporin og því þurfa þau engar undirstöður STR_CONFIG_SETTING_AUTOSLOPE :Leyfa landslagsbreytingar undir byggingum, sporum o.fl. (landfylling): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Leyfa mótun á landslagi undir byggingum og sporum án þess að þurfa að fjarlægja STR_CONFIG_SETTING_CATCHMENT :Raunverulegri stærð svæðis sem stöðvar ná yfir: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Mismunandi stærð á söfnunarsvæðum fyrir mismunandi stöðvar og flugvelli STR_CONFIG_SETTING_EXTRADYNAMITE :Leyfa meiri eyðingu vega, brúa, gangna o.s.frv. í eigu bæjar: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Að það sé auðveldara að fjarlægja byggingar og mannvirki í eigu bæjarins STR_CONFIG_SETTING_TRAIN_LENGTH :Hámarkslengd lestar: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Hver er hámarkslengd lestanna STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} reit{P 0 ur ir} STR_CONFIG_SETTING_SMOKE_AMOUNT :Magn reyks/neista frá lestum: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Hversu mikill reikur eða neistar koma frá farartækjum STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Hröðun lesta: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Veldu hvernig eðlisfræði virkar á hröðun lesta. "Upprunalegt" er þannig að brekkur hafa sömu áhrif á allar lestar. "Raunverulegt" er þannig að áhrif brekkna og beygja fer eftir mismunandi þáttum, eins og lengd og togkraft lestanna STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Hröðun bifreiða: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Veldu hvernig eðlisfræði virkar á hröðun bíla. "Upprunalegt" er þannig að brekkur hafa sömu áhrif á alla bíla. "Raunverulegt" er þannig að áhrif brekkna fer eftir mismunandi þáttum, eins og til dæmis togkraft bílsins STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Halli á brekkum fyrir lestir: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Halli á brekkum fyrir lest. Hærri gildi gera það erfiðara fyrir lestina að fara upp brekkuna STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Halli á brekkum fyrir bíla: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Halli á brekkum fyrir bíla. Hærri gildi gera það erfiðara fyrir bíla að fara upp brekkunar STR_CONFIG_SETTING_FORBID_90_DEG :Banna lestum og skipum að taka 90° beygjur: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 gráðu beygjur verða þegar lárétt spor liggja saman við lóðrétt spor, þannig að lestin beygir 90 gráður þegar hún fer milli reita í staðinn fyrir 45 gráður fyrir aðrar samsetningar spora. Þetta á einnig við um beygjuradíus skipa STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Leyfa sameiningu stöðva sem ekki tengjast á korti: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Gerir mögulegt að bæta við stöð án þess að reitirnir liggi saman. Það þarf að halda Ctrl+Smella þegar bætt er við stöðina STR_CONFIG_SETTING_IMPROVEDLOAD :Nota endurbættan algóriþma við hleðslu: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ef þetta er virkt þá eru farartækin sem bíða á stöðinni hlaðinn eftir röð. Hleðsla á næsta farartæki byrjar aðeins þegar það bíður nógur farmur til að fylla fyrsta ökutækið STR_CONFIG_SETTING_GRADUAL_LOADING :Ferma farartæki smám saman: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Smám saman hlaða farartækin eftir ákveðnum tíma sem miðast við hvert farartæki, í staðinn fyrir að hlaða öllu í einu á ákveðnum tíma sem miðast við magn farmsins STR_CONFIG_SETTING_INFLATION :Verðbólga: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Hafa verðbólgu, þá eykst kostnaður aðeins hraðar en greiðslur STR_CONFIG_SETTING_SELECTGOODS :Aðeins afhlaða farmi á stöðvum þar sem er eftirspurn: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Aðeins afhlaða farm á stöðvar sem taka á móti fluttum farmi. Það kemur í veg fyrir að farmur fái slæma einkunn á stöð sem ekki tekur við viðkomandi farmi STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Hámarkslengd á brúm: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Hámarkslengd á brúm sem á að byggja STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Hámarkslengd á göngum: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Hámarkslengd á göngum sem á að byggja STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Fjármögnun nýrra hráefnisiðnaða: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Aðferðir við að fjármagna hráefnisiðnað. 'Enginn' þýðir að það er ekki hægt að fjármagna iðnaðinn, 'Með jarðefnisleit' þýðir að fjármögnun er möguleg, en iðnaðurinn er byggður á tilviljunnarkenndum stað á kortinu og gæti þess vegna mistekist, 'Eins og annar iðnaður' þýðir að hráefnisiðnaður getur verið fjármagnaður eins og annar iðnaður og á þeim stað sem fyrirtækið kýs STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Engin STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Eins og annar iðnaður STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Með jarðefnisleit STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Slétt svæði í kringum iðnað: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Stærð slétts svæðis í kringum iðnað. Þetta tryggir að nóg sé að auðu svæði í kringum iðnað til að byggja spor og fleira STR_CONFIG_SETTING_MULTIPINDTOWN :Leyfa marga svipaða iðnaði í sama bæ: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Venjulega vilja bæir ekki fleiri en einn iðnað af hverri tegund. Með þessari stillingu á munu bæir leyfa nokkra iðnaði af sömu gerð í kringum sama bæinn STR_CONFIG_SETTING_SIGNALSIDE :Sýna umferðarmerki: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Veldu hvoru megin við sporið á að setja umferðarmerkin STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Vinstra megin STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Akstursstefnu megin STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Hægra megin STR_CONFIG_SETTING_SHOWFINANCES :Sýna fjármálaglugga í lok árs: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ef þetta er virkt þá koma fjárhagsupplýsingar fyrirtækisins við enda hvers árs til að auðvelda yfirlit yfir fjárhag fyrirtækisins STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nýjar skipanir eru sjálfgefnar sem 'hraðleiðar': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Venjulega stoppa farartæki á öllum stöðvum sem þau fara í gegnum. Með því að virkja þessa stillingu mun faratækið fara í gegnum allar þær stöðvar á leið sinni án þess að stoppa. Athugið, þessi stilling skilgreinir aðeins hver sjálfgefin stilling er fyrir nýjar skipanir. Hægt er að breyta þessum stillingum fyrir hvert og eitt farartæki STR_CONFIG_SETTING_STOP_LOCATION :Við nýja áfangastaði stöðva lestir sjálfgefið við {STRING} brautarpallsins STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Sjálfgefin stilling hvar lestin stoppar á brautarpallinum. 'upphaf' þýðir nálægt þeim hluta sem lestin kemur inn í lestarstöðina, 'miðju' þýðir fyrir miðju lestarstöðvarinnar og 'enda' þýðir fjærst þeim hluta sem lestin kom inn í lestarstöðina. Athugið, þessi stilling skilgreinir aðeins hver sjálfgefin stilling er fyrir nýjar skipanir. Hægt er að breyta þessum stillingum fyrir hvert og eitt farartæki STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :upphaf STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :miðju STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :enda STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Bifreiðir bíða í röð (með skömmtunaráhrifum): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Bílar verða að bíða fyrir aftan vegahindranir þar til þær hafa verið fjarlægðar STR_CONFIG_SETTING_AUTOSCROLL :Færa sjónarhorn þegar músin nálgast brún gluggans: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ef þessi stilling er virk þá færist landslagið til hliðar ef músin er við jaðra gluggans STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Óvirkt STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Aðal sjónarhorn, aðeins í fullum skjá STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Aðal sjónarhorn STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Öll sjónarhorn STR_CONFIG_SETTING_BRIBE :Leyfilegt að múta bæjaryfirvöldum: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Fyrirtæki geta reint að múta borgarstjórn. Ef eftirlistmenn uppgötva að verið sé múta bæjarstjórn, mun fyrirtækið ekki geta starfað í bænum í sex mánuði STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Heimila sölu á sérleyfi til flutninga: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ef fyrirtæki kaupir sérleyfi af bæjaryfirvöldum munu stöðvar keppinauta (farþegar og farmur) ekki fá neinn farm í heilt ár STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Leyfa byggingastyrki: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Leyfa fyrirtækjum að gefa bæjum peninga til að styrkja byggingu nýrra húsa STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Leyfa styrki til að endurnýja vegi bæjarins: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Leyfa fyrirtækjum að gefa bæjum peninga til að þeir geti endurbyggt vegi og þar með eyðileggja þjónustu bíla í bænum STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Heimila peningagreiðslur til annarra fyrirtækja: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Leyfa flutning á peningum milli fyrirtækja í fjölspilun STR_CONFIG_SETTING_FREIGHT_TRAINS :Margfalda þyngd farms til að líkja eftir þyngri lestum: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Stilltu hversu margfalt þyngri farmur er í lestum, hærri sem talan er því meiri kröfur eru gerðar á lestina, sérstaklega upp brekkur STR_CONFIG_SETTING_PLANE_SPEED :Hraðastuðull flugvéla: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Stilltu hlutfallslegan hraða flugvéla miðað við önnur farartæki til að minnka tekjur vegna flutninga með flugvél STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Fjöldi flugvélaslysa: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Stilltu hvaða líkur séu á því að flugvel hrapi STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Engin STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :fækkuð STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :miðlungs STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Leyfa stoppistöðvar sem keyrt er í gegnum, á vegum í eigu bæja: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Leyfa byggingu stoppistöðvar sem keyrt er í gegnum, á vegum í eigu bæja STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Leyfa stoppistöðvar sem keyrt er í gegnum, á vegum í eigu samkeppnisaðila: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Leyfa byggingu stoppistöðva sem keyrt er í gegnum, á vegum í eigu samkeppnisaðila STR_CONFIG_SETTING_ADJACENT_STATIONS :Heimila sambyggingu stöðva: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Leyfa ólíkum stöðvum að snerta hvor aðra STR_CONFIG_SETTING_DYNAMIC_ENGINES :Virkja mörg NewGRF vélasöfn: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Samhæfni kostur fyrir gamla NewGRF. Ekki slökkva á þessu, nema þú vitir nákvæmlega hvað þú ert að gera! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ekki er hægt að breyta þessari stillingu þegar til eru farartæki STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Viðhald á innviðum: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Ef þessi stilling er virk kostar að reka innviði fyrirtækisins. Kostnaður eykst í auknu hlutfalli við stærð fyrirtækisins, því eru áhrifin meiri á stór fyrirtæki en lítil STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Alltaf hægt að byggja allar gerðir flugvalla: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ef þessi stilling er virk þá er hver tegund flugvallar alltaf aðgengileg eftir að hann verður fyrst aðgengilegur STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Vara við ef farartæki villast: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Byrtir skilaboð um að farartæki finni ekki leiðina sem liggur að næsta áfangastað STR_CONFIG_SETTING_ORDER_REVIEW :Fara yfir áætlanir farartækja: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Þegar þessi stilling er virk, eru skipanir ökutækja reglulega kannaðar og sum augljós atriði eru tilkynnt með frétta boðum þegar þau uppgötvast STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nei STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Allra nema kyrrstæðra farartækja STR_CONFIG_SETTING_ORDER_REVIEW_ON :Allra farartækja STR_CONFIG_SETTING_WARN_INCOME_LESS :Birta viðvörun ef tap er af rekstri farartækis: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Þegar þessi stilling er virk, eru frétta boð send ef farartæki hafa ekki skilað hagnaði síðasta dagatals ár STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Farartæki úreldast aldrei: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Ef þessi stilling er virk, eru öll farartæki alltaf í boði eftir að þau voru fyrst kynnt til sögunnar STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Uppfæra faratæki sjálfvirkt þegar þau eldast: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Ef þessi stilling er virk, eru farartæki endurnýjuð sjálfvirkt þegar endingartími þeirra er komin STR_CONFIG_SETTING_AUTORENEW_MONTHS :Endurnýja farartæki sjálfvirkt {STRING} hámarksaldur STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Hvenær íhuga ætti sjálfvirka útskipting á farartæki STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mánuð{P 0 i um} fyrir STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mánuð{P 0 i um} eftir STR_CONFIG_SETTING_AUTORENEW_MONEY :Lágmarks bankainnistæða fyrir sjálfvirka uppfæringu: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Lágmarksupphæð peninga sem verður að vera til í bankanum áður en hægt er að skipta farartækjum sjálfvirkt út STR_CONFIG_SETTING_ERRMSG_DURATION :Tími sem villuskilaboð eru sýnileg: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Tími sem villuboð í rauðu gluggunum eru sýnd. Athugið að sumum (alvarlegum) villuboðum er ekki lokað sjálfvirkt eftir þennan tíma, þeim verður að loka handvirkt STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekúnd{P 0 a ur} STR_CONFIG_SETTING_HOVER_DELAY :Sýna vísbendingar: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Töf áður en vísbendingar eru birtar þegar músinni er haldið yfir einhverju af viðmóts atriðunum. Eins er stundum að finna vísbendingar með því að hægri smella STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Halda músinni yfir í {COMMA} sekúndu {P 0 "" r} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Hægri smella STR_CONFIG_SETTING_POPULATION_IN_LABEL :Sýna íbúafjölda með nafni bæjarins: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Sýna íbúafjölda bæjarins með nafni bæjarins á kortinu STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Þykkt lína í línuritum: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breidd lína í línuritinu. Þunn lína gefur nákvæmari lestur, meðan breiðari lína sést betur og gerir auðveldara að þekkja litina í sundu STR_CONFIG_SETTING_LAND_GENERATOR :Landslagsmótun: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Upphafleg STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Hámarksfjarlægð frá brún að olíuhreinsistöð: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olíuhreinsistöðvar eru aðeins byggðar nálægt jöðrum á kortinu, það er að segja á ströndum á kortum sem eru af eyjum STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Hæð snjólínu: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Hrjúfleiki landslags (TerraGenesis stilling) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Mjög slétt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Slétt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Hrjúft STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Mjög hrjúft STR_CONFIG_SETTING_TREE_PLACER :Staðsetning trjáa: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Hvergi STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Venjulega STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Nýstárlega STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Snúningur hæðakorts: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Rangsælis STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Réttsælis STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Hæð jafnslétts lands yfir sjávarmáli: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Leyfa landslagsbreytingar á jöðrum korts: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ef þessi stilling er óvirk eru jaðrar kortsins alltaf sjór STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Einn eða fleiri reitir við norðurjaðarinn eru ekki tómir STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Einn eða fleiri reitir við eina hlið kortsins hafa ekki vatn STR_CONFIG_SETTING_STATION_SPREAD :Hámarksstærð stöðva: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Hámarkssvæði sem ein stöð má dreifast yfir. Athugið að há gildi hægja á leiknum STR_CONFIG_SETTING_SERVICEATHELIPAD :Skoða þyrlur sjálfvirkt á þyrlupalli: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Þjónusta þyrlur í hvert skipti sem þær hafa lent, jafnvel þó það sé ekkert skýli á flugvellinum STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Opna landmótunarglugga samhliða öðrum framkvæmdum: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Þegar framkvæmdagluggar fyrir farartæki eru opnaðir þá verður líka gluggi fyrir mótun lands opnaður STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Litur á landinu sem birtist á kortinu: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Litur á landslagi á litla kortinu STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grænn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dökkgrænn STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fjólublátt STR_CONFIG_SETTING_REVERSE_SCROLLING :Færa sjónarhorn í öfuga átt miðað við mús: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Hegðun þegar sjónarhornið er fært með hægri músartakkanum. Þegar stillingin er óvirk færir músin myndavélina. Þegar stillingin er virk færir músin sjónarhornið STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjúkt skrun í skjágluggum: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Stýrir hvernig aðalsjónarhornið færist á ákveðna staði þegar smellt er á þá á litla kortinu eða þegar ákveðinn hlutur er valin á kortinu. Ef stillingin er virk færist aðalsjónarhornið rólega, ef stillingin er óvirk fer aðalsjónarhornið beint á ákveðna staðinn STR_CONFIG_SETTING_MEASURE_TOOLTIP :Sýna mælingar þegar verið er að byggja og breyta landslagi: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Sýna fjölda reita og hæðarmismun þegar músin er dregin meðan verið er að byggja STR_CONFIG_SETTING_LIVERIES :Sýna auka litastillingar: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Stýra notkun auka litastillinga á farartækjum (öfuggt við sérstöðu fyrirtækja) STR_CONFIG_SETTING_LIVERIES_NONE :Aldrei STR_CONFIG_SETTING_LIVERIES_OWN :Eigin fyrirtæki STR_CONFIG_SETTING_LIVERIES_ALL :Allra fyrirtækja STR_CONFIG_SETTING_PREFER_TEAMCHAT :Nota liðsspjall með : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Í staðinn fyrir að spjall við alla í fjölspili sé virkjað með virkjar það spjall við þá sem eru með í fyrirtækinu þínu. virkar ávalt á hinn veginn miðað við það sem gerir STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Virkni skrunhjóls: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Til að nýta skrunhjól á músum sem virka bæði upp/niður og til hliðanna STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Víkka/þrengja sjónarhorn STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skruna á korti STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Engin STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Hraði skrunhjóls á korti: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Stjórnaðu næmni skrunhjólsins á músinni STR_CONFIG_SETTING_OSK_ACTIVATION :Lyklaborð á skjá: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Veldu hvernig á að fá fram lyklaborð á skjáinn þar sem hægt er að skrifa texta með að ýta á takana. Þetta er hugsað fyrir lítil tæki sem eru án lyklaborðs STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Óvirkt STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Tvísmella STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Ýta einusinni (þegar valið) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Ýta einusinni (birtist strax) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Hægrismellshermun: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Veldu hvernig herma á eftir hægri smelli á músinni STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+smella STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+smella STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrun með hægri músarhnappi: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Virkja að hægt sé að færa sjónarhornið með því að færa það með vinstri músar takkanum. Þetta er sérstaklega gott þegar notast er við snerti-skjá til að færa sjónarhornið STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Nota dagsetningar á {STRING} formi fyrir vistaða leiki. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Snið á dagsetningu í nöfnum á vistuðum leikjum STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :löngu (31. Des 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :stuttu (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Sjálfgefið litaspjald fyrir NewGRF sem tilgreina ekki litaspjald: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Sjálfgefið litaspjald til að nota með NewGRF sem skilgreina ekki hvaða litaspjald það notar STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Setja leik á bið þegar nýr leikur er hafinn: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ef þessi stilling er virk mun leikurinn fara sjálfvirkt á bið þegar nýr leikur hefst. Það gefur færi á að skoða kortið betur STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Þegar leikurinn er á bið skal leyfa: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Veldu hvað það er sem má gera þegar leikurinn er á bið STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ekkert STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Allt nema byggja STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Allt nema að breyta landslaginu STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Allt STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Ítarlegur listi yfir farartæki: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Virkja möguleika á ítarlegum lista yfir farartæki sem notaður er til að flokka farartæki STR_CONFIG_SETTING_LOADING_INDICATORS :Sýna stöðu lestunar: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Sýna fyrir ofan farartækin stöðu lestunar þegar þau eru að ferma eða afferma STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Birta áætlanir í slögum frekar en dögum: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Sýna ferðatíma í áætlun í slögum frekar en dögum STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Sýna komu- og brottfaratíma í áætlunum: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Sýna áætlaðan komu- og brottfarar tíma í áætlun STR_CONFIG_SETTING_QUICKGOTO :Fljótleg gerð skipana: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forvelja 'fara að' þegar skipana glugginn fyrir farartæki er opnaður STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Valin lestartegund (eftir nýjan leik/opnaðan leik): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tegund spors sem valið er fyrst eftir að leikur byrjar. 'Fyrsta mögulega' velur elstu gerð spors, 'Síðasta mögulega' velur nýjustu gerð spors og 'Mest notuð' velur það spor sem mest er af á kortinu STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Fyrsta mögulega STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Síðasta mögulega STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest notuð STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Sýna frátekin spor: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Frátekin spor fá annan lit til að auðvelda að finna vandamál þegar lestar fara ekki inn á svæði STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Halda byggingartólum virkum eftir notkun: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Halda byggingartólum fyrir brýr, gögn og fleira opnum eftir notkun STR_CONFIG_SETTING_EXPENSES_LAYOUT :Hópa saman útgjöld í fjármálaglugga: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Skilgreinir útlit fjármálaglugga STR_CONFIG_SETTING_SOUND_TICKER :Frétta borði: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spila hljóð fyrir samantekt á fréttatilkynningum STR_CONFIG_SETTING_SOUND_NEWS :Dagblaðið: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Spila hljóð þegar dagblaðið er birt STR_CONFIG_SETTING_SOUND_NEW_YEAR :Lok árs: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Spila hljóð þegar árinu lýkur og staða fyrirtækisins er borin saman við síðasta ár STR_CONFIG_SETTING_SOUND_CONFIRM :Byggingarframkvæmd: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Spila hljóð þegar byggingarframkvæmd eða önnur framkvæmd heppnast STR_CONFIG_SETTING_SOUND_CLICK :Ýtt á takka: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Píp þegar ýtt er á takka STR_CONFIG_SETTING_SOUND_DISASTER :Hamfarir/slys: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Spila hljóð frá slysum og hamförum STR_CONFIG_SETTING_SOUND_VEHICLE :Bílar: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Spila hljóð frá bílum STR_CONFIG_SETTING_SOUND_AMBIENT :Umlykjandi: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Spila umlykjandi hljóð frá landslagi, iðnaði og bæjum STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Gera óvirkar byggingar tengd farartækjum sem eru ófáanleg: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ef þessi stilling er virk eru byggingartól fyrir farartæki aðeins virk ef þau farartæki eru í boði, þetta kemur í veg fyrir eyðslu á tíma og peningum og ónothæfar framkvæmdir STR_CONFIG_SETTING_MAX_TRAINS :Lestir á leikmann mest: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Hámarksfjöldi járnbrautarlesta sem fyrirtæki getur átt STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Bifreiðir á leikmann mest: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Hámarksfjöldi bifreiða, þar með talið sporvagna, sem fyrirtæki getur átt STR_CONFIG_SETTING_MAX_AIRCRAFT :Flugvélar á leikmann mest: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Hámarksfjöldi flugvéla sem fyrirtæki getur átt STR_CONFIG_SETTING_MAX_SHIPS :Skip á leikmann mest: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Hámarksfjöldi skipa sem fyrirtæki getur átt STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Útiloka lestir frá tölvu: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með járnbrautalestar STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Útiloka bifreiðir frá tölvu: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með bíla og sporvagna STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Útiloka flugvélar frá tölvu: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með flugvélar STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Útiloka skip frá tölvu: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ef þessi stilling er virk er ómögulegt fyrir gervigreindar leikmenn að vera með skip STR_CONFIG_SETTING_AI_PROFILE :Erfiðleikastig: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Veldu hvaða erfiðleikastig á að nota fyrir gervigreind eða leikja breytingar (Game Script) STR_CONFIG_SETTING_AI_PROFILE_EASY :Auðvelt STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Miðlungs STR_CONFIG_SETTING_AI_PROFILE_HARD :Erfitt STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Leyfa gervigreind í fjölspilun: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Leyfir gervigreindar leikmönnum að taka þátt í fjölspilunar leikjum STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes áður en forskriftir eru stöðvaðar: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Hámarksfjöldi útreikninga sem forskrift getur gert í hvert skipti STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tími milli viðhalds farartækja sýndur í hundraðshlutum: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Veldu hvort þjónusta við farartæki ákvarðast af því hve langur tími er liðinn síðan það var síðast þjónustað eða þá að áreiðanleik farartækisins er orðinn ákveðin prósentutala af hámarksáreiðanleika STR_CONFIG_SETTING_SERVINT_TRAINS :Sjálfgefið millibil fyrir þjónustu hjá járnbrautarlestum: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum járnbrautarlestum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dag{P 0 ur ar}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Óvirkt STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Sjálfgefið millibil fyrir þjónustu hjá bílum og sporvögnum: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum bílum og sporvögnum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Sjálfgefið millibil fyrir þjónustu hjá flugvélum: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum flugvélum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið STR_CONFIG_SETTING_SERVINT_SHIPS :Sjálfgefið millibil fyrir þjónustu hjá skipum: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stilltu sjálfgefið millibil fyrir þjónustu hjá nýjum skipum, á við ef ekkert tiltekið millibil er stillt fyrir farartækið STR_CONFIG_SETTING_NOSERVICE :Sleppa viðhaldi þegar bilanir eru óvirkar: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ef þessi stilling er virk eru farartæki ekki þjónustuð ef þau geta ekki bilað STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Leyfa hraðatakmarkanir vagna: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ef þessi stilling er virk er hámarkshraði á vögnum einnig notaður til að ákvarða hámarks hraða á járnbrautalestum STR_CONFIG_SETTING_DISABLE_ELRAILS :Ekki nota rafknúnar lestir: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ef þessi stilling er virk er ekki boðið upp á að nota rafmagns knúnar járnbrautalestar né spor fyrir þá STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Aðkoma fyrsta farartækis á stöð leikmanns: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Birta dagblöð þegar fyrsta farartækið kemur á stöð í eigu nýs spilara STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Aðkoma fyrsta farartækis á stöð keppinauts: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Birta dagblöð þegar fyrsta farartækið kemur á nýja stöð í eigu keppinauts STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Slys / hamfarir: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Birta dagblöð þegar slys eða hörmungar gerast STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Fyrirtækisupplýsingar: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Birta dagblöð þegar nýtt fyrirtæki byrjar, eða þegar fyrirtæki eru í hættu á gjaldþroti STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Opnun Iðnaðar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Birta dagblöð þegar iðnaður opnar STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Lokun Iðnaðar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Birta dagblöð þegar iðnaður lokar STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Efnahagsbreytingar: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Birta dagblöð um altækar breytingar á hagkerfinu STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Framleiðslubreytingar á iðnaði þjónað af fyrirtækinu: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Birta dagblöð þegar framleiðni í iðnaði breytist, þeim sem er þjónað fyrirtækinu STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Framleiðslubreytingar fyrirtækja þjónustuð af keppinautum: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Birta dagblöð þegar framleiðni í iðnaði breytist, þeim sem er þjónað af keppinautum STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Aðrar framleiðslubreytingar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Birta dagblöð þegar framleiðni í iðnaði breytist, þeim sem ekki er þjónað af fyrirtækinu eða keppinautum STR_CONFIG_SETTING_NEWS_ADVICE :Ráð / upplýsingar um faratæki fyrirtækisins: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Birta skilaboð þegar farartæki þarfnast athygli STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Ný farartæki: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Birta dagblöð þegar nýjar tegundir af farartækjum bjóðast STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Breyting á viðtöku farms: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Birta skilaboð um breytingar á varningi sem stöðvar taka á móti STR_CONFIG_SETTING_NEWS_SUBSIDIES :Samstarfssamningar: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Birta dagblöð um atburði tengda samstarfssamningum STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Almennar upplýsingar: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Birta dagblöð um viðburði, eins og kaup á sérleyfi eða fjármögnun á endurnýjun á vegum STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Af STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Úrtak STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Allt STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Fréttir byrja að birtast í lit árið: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Árið sem tilkynningar í dagblöðuðum byrja að vera í lit. Fram að þessum tíma eru blöð í svart/hvítu STR_CONFIG_SETTING_STARTING_YEAR :Upphafsár: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Virkja jafnan efnahag (fleiri og minni breytingar): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ef þessi stilling er virk breytist framleiðsla í iðnaði oftar og í smærri skrefum. Þessi stilling hefur yfirleitt engin áhrif ef tegund iðnaðar er ákveðinn með NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Leyfa hlutabréfakaup í öðrum fyrirtækjum: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ef þessi stilling er virk er hægt að kaupa og selja hlutabréf í fyrirtækjum. Hlutabréf eru aðeins aðgengileg fyrir fyrirtæki sem hafa náð ákveðnum aldri STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Hlutfall hagnaðar sem greiðist til tengiþjónustu: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Hlutfall hagnaðar sem greiðist til tengiþjónustu, farartækja sem eru milliliðir. Gefur meiri stjórn á tekjunum STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Bil milli umferðarmerkja þegar þau eru dregin: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Stillir fjarlægð á milli umferðarmerkja, ef þau eru dregin, fram að næstu hindrun (merki, vegamót) STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} reit{P 0 ur ir} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Halda stöðugu bili milli umferðarmerkja, þegar þau eru dregin: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Veldu hvernig umferðarmerki dreifast þegar þau eru Ctrl+dregin. Ef stillingin er óvirk eru merki sett sitthvoru megin við göng og brýr til að koma í veg fyrir að löng svæði án merkja myndis. Ef hún er virk, eru merki sett á X reita fresti sem gerir það að verkum að auðveldara er að halda merkjum hlið við hlið á samsíða sporum STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Nota skilti í stað ljósa fyrir: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Stilltu árið sem ljósamerki eru notuð í staðinn fyrir hreyfimerki. Fram að þessu ári eru notuð hreyfimerki (þau hafa nákvæmlega sömu virkni, en líta öðruvísi út) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Virkja valmynd umferðarmerkja: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Sýna glugga þar sem er hægt að velja á milli tegundar umferðarmerkja, í staðinn fyrir engan glugga og að þurfa að skipta á milli merkja með því að Ctrl+smella STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Umferðarmerki sem eru sjálfgefin: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Sjálfgefin umferðarmerki STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Hefðbundin merki STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Leiðarmerki STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Einstefnu leiðarmerki STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Skipta milli tegunda umferðarmerkja: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Veldu tegund umferðarljósa sem á að skipta á milli með því að Ctrl+smella STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Aðeins hefðbundin merki STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Aðeins Leiðarmerki STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Allt STR_CONFIG_SETTING_TOWN_LAYOUT :Vegskipulag fyrir nýja bæi: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Skipulag á vegakerfi í bæjum STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :sjálfgefið STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :betri vegi STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 net STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 net STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :slembið STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Bæir geta lagt vegi: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Leyfa bæjum að byggja vegi til að stækka. Slökkva á þessari stillingu til að koma í veg fyrir að bæjar yfirvöld geti byggt vegi sjálf STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Heimila bæjum að byggja vega/lestar gatnamót: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ef þessi stilling er virk geta bæir gert vegi yfir járnbrautarspor STR_CONFIG_SETTING_NOISE_LEVEL :Láta hávaða frá flugvöllum stjórna hvort bæjir leyfi þá innan bæjarmarka: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ef þessi stilling er óvirk þá geta verið tveir flugvellir í hverjum bæ. Ef hún er virk er fjöldi flugvalla í bæjum takmarkaður við hvað bæir þola mikinn hávaða, sem stýrist af fólksfjölda, stærð flugvallar og fjarlægð STR_CONFIG_SETTING_TOWN_FOUNDING :Stofna bæi í leik: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ef þessi stilling er virk geta leikmenn byggt nýja bæi í leiknum STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :bannað STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :leyft STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Leyft, sérsniðið bæjarskipulag STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Staðsetning trjáa í leik: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Stjórnar hvernig tré birtast meðan á leiknum stendur. Þessi stilling getur haft áhrif á iðnað sem byggir á trjám, til dæmis timburverksmiðjur STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Engin {RED}(skemmir timburverksmiðjur) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :aðeins í regnskógum STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :allstaðar STR_CONFIG_SETTING_TOOLBAR_POS :Staðsetning tækjasláar: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Lárétt staða aðal tækjasláar efst á skjánum STR_CONFIG_SETTING_STATUSBAR_POS :Staðsetning stöðulínu: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Lárétt staða stöðulínu neðst á skjánum STR_CONFIG_SETTING_SNAP_RADIUS :Smella radíus fyrir Windows: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Bil á milli glugga áður en gluggin sem verið er að færa smellur sjálfvirkt að næsta glugga STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} díl{P 0 l ar} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Óvirkt STR_CONFIG_SETTING_SOFT_LIMIT :Hámarksfjöldi glugga (ófestra): {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Fjöldi glugga, sem ekki eru fastir saman, sem geta verið opnir áður en gluggar fara að loka sjálfkrafa til að gera pláss fyrir nýja glugga STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :óvirkt STR_CONFIG_SETTING_ZOOM_MIN :Hámarksaðdráttur: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Hámarksaðdráttur í sjónarhornum. Athugið að með meiri aðdrátti aukast minnis kröfur á tölvuna STR_CONFIG_SETTING_ZOOM_MAX :Hámark hvað er hægt að súma út: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Hversu langt er hægt að súma frá sjónarhornum. Því hærri sem talan er því meiri líkur eru á töf í tölvunni STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Venjulegt STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Vaxtarhraði bæja: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Hversu hratt bæir stækka STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Enginn STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Hægur STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Venjulegur STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Hraður STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Mjög hraður STR_CONFIG_SETTING_LARGER_TOWNS :Hlutfall af bæjum sem verða borgir: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Bæir sem munu verða borgir, bæir sem eru stærri í byrjun og vaxa hraðar STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 af {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Enginn STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Upphaflegur margfaldari bogarstærðar: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Meðalstærð borga miðað við bæi, við upphaf leiks STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjarlægja fráleita vegahluti þegar vegagerð stendur yfir: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Þegar bæir hafa verið styrktir til að endurnýja vegina sýna á þá að fjarlægja ónotaða vegenda STR_CONFIG_SETTING_GUI :{ORANGE}Viðmót STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Bygging STR_CONFIG_SETTING_VEHICLES :{ORANGE}Farartæki STR_CONFIG_SETTING_STATIONS :{ORANGE}Stöðvar STR_CONFIG_SETTING_ECONOMY :{ORANGE}Efnahagur STR_CONFIG_SETTING_AI :{ORANGE}Mótherji STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Skjá-valmöguleikar STR_CONFIG_SETTING_INTERACTION :{ORANGE}Viðmót STR_CONFIG_SETTING_SOUND :{ORANGE}Hljóð STR_CONFIG_SETTING_NEWS :{ORANGE}Fréttir og skilaboð STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Umferðarmerki STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Meðhöndlun farms STR_CONFIG_SETTING_AI_NPC :{ORANGE}Gervigreind STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Sjálfvirk endurnýjun STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Viðhald farartækja STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Leiðarvísun farartækja STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Lestir STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bæir STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Iðnaður STR_CONFIG_SETTING_PATHFINDER_OPF :Upprunalegt STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Ráðlegt) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Leiðsögukerfi lesta: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Leiðsögukerfi sem nota á fyrir lestir STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Leiðsögukerfi bifreiða: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Leiðsögukerfi sem nota á fyrir bíla og sporvagna STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Leiðsögukerfi skipa: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Leiðsögukerfi sem nota á fyrir skip STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Snúa járnbrautarlestum sjálfkrafa við á umferðarmerkjum: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Leyfa járnbrautarlestum að snúa við á umferðarmerkjum ef þau hafa beðið þar í langan tíma STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Breyta gildi stillingar # Config errors STR_CONFIG_ERROR :{WHITE}Villa kom upp við stillingar skrána... STR_CONFIG_ERROR_ARRAY :{WHITE}... villa í fylki '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... rangt gildi '{STRING}' fyrir '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... auka stafir í enda stillingu '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... sleppi NewGRF '{STRING}': eins GRF ID með '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... sleppi biluðu NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :finnst ekki STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :óöruggt vegna fasta notkunnar STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :kerfis NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ósamhæft þessari útgáfu af OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :óþekkt STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... þjöppunarstyrkur '{STRING}' er ekki leyfður STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... vistunarsnið '{STRING}' er ekki aðgengilegt. Breyti í '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... sleppi grunngrafík, '{STRING}' finnst ekki STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... sleppi grunn hljóðsafni, '{STRING}' finnst ekki STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... sleppi grunn tónlistarsafni, '{STRING}' finnst ekki STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Minnið í tölvunni nægir ekki STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Úthlutuðum {BYTES} af skyndiminni fyrir hreyfimyndir mistókst. Skyndiminnið vegna hreyfimynda var minnkað í {BYTES}. Þetta mun minnka reiknigetu OpenTTD. Til minnka minniskröfur getur þú reynt að óvikrja 32bpp grafíkina og/eða minnkað leyfilegt súm # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nýr leikur STR_INTRO_LOAD_GAME :{BLACK}Opna leik STR_INTRO_PLAY_SCENARIO :{BLACK}Spila kort STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spila á hæðakorti STR_INTRO_SCENARIO_EDITOR :{BLACK}Landslagsgerð STR_INTRO_MULTIPLAYER :{BLACK}Fjölspilun STR_INTRO_GAME_OPTIONS :{BLACK}Stillingar STR_INTRO_HIGHSCORE :{BLACK}Stigatafla STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ítarlegar stillingar STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Stillingar STR_INTRO_ONLINE_CONTENT :{BLACK}Ná í viðbætur af netinu STR_INTRO_SCRIPT_SETTINGS :{BLACK}GG/forskriftar stillingar STR_INTRO_QUIT :{BLACK}Hætta STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Hefja nýjan leik. Ctrl+smella sleppir kortastillingum STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Opna vistaðan leik STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Hefja nýjan leik byggðan á hæðakorti STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Hefja nýjan leik í sérvöldu korti STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Búa til eigið land STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Hefja fjölspilunarleik STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Temprað landslag STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Heimskautalandslag STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Eyðimerkurlandslag STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Leikfangalandslag STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Stilla OpenTTD STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Birta stigatöflu STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Birta ítarlegar stillingar STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Sýna NewGRF stillingar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Skoða viðbætur sem hægt er að ná í af netinu STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Birta stillingar fyrir gervigreind/forskrift STR_INTRO_TOOLTIP_QUIT :{BLACK}Hætta í OpenTTD STR_INTRO_TRANSLATION :{BLACK}Það vantar {NUM} þýðing{P u ar} í þetta tungumál. Vinsamlegast hjálpaðu við að gera OpenTTD betra með því að skrá þig sem þýðanda. Nánari upplýsingar í readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Hætta STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Ertu viss um að þú viljir hætta í OpenTTD og fara aftur í {STRING}? STR_QUIT_YES :{BLACK}Já STR_QUIT_NO :{BLACK}Nei # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Hætta leik STR_ABANDON_GAME_QUERY :{YELLOW}Ertu viss um að þú viljir hætta í þessum leik ? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ertu viss um að þú viljir hætta í þessu korti ? # Cheat window STR_CHEATS :{WHITE}Svindl STR_CHEATS_TOOLTIP :{BLACK}Valreitur segir til um ef þú hefur notað þetta svindl áður STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja keppinauta þína. Hafðu í huga að þess lags svívirðing mun ætíð höfð í minnum STR_CHEAT_MONEY :{LTBLUE}Auka pening um {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spila sem fyrirtæki: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Töfrajarðýta (eyðir iðnaði, óeyðanlegum hlutum): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Göng mega skerast: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Þotur brotlenda ekki (oft) á litlum flugvöllum: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temprað landslag STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Heimskautalandslag STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Miðjarðarlandslag STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Leikfangalandslag STR_CHEAT_CHANGE_DATE :{LTBLUE}Breyta dagsetningu: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Breyta um ár STR_CHEAT_SETUP_PROD :{LTBLUE}Leyfa breytingar á verðmæti framleiðslu: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nýtt Litaskema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Grunnlitur fyrirtækis STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Litaskema lesta STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Litaskema bifreiða STR_LIVERY_SHIP_TOOLTIP :{BLACK}Litaskema skipa STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Litaskema flugvéla STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Veldu aðallitinn fyrir valda hluti á listanum. Ctrl+Smella setur þennan lit fyrir alla hluti STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Veldu seinni lit fyrir valda hluti á listanum. Ctrl+Smella setur þennan lit á alla hluti á listanum STR_LIVERY_PANEL_TOOLTIP :{BLACK}Veldu hluti til að breyta lit á, CTRL-smelltu til að velja marga saman. Smelltu í reitinn til að virkja valinn lit. STR_LIVERY_DEFAULT :Aðal litaskema STR_LIVERY_STEAM :Gufuvagnar STR_LIVERY_DIESEL :Díselvagnar STR_LIVERY_ELECTRIC :Rafmagnsvagnar STR_LIVERY_MONORAIL :Einteinungar STR_LIVERY_MAGLEV :Segulsvifvagnar STR_LIVERY_DMU :Fjölvagna dísellest STR_LIVERY_EMU :Fjölvagna rafmagnslest STR_LIVERY_PASSENGER_WAGON_STEAM :Farþegavagn (Gufu) STR_LIVERY_PASSENGER_WAGON_DIESEL :Farþegavagn (Dísel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Farþegavagn (Rafmagns) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Farþegavagn (einteinungslest) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Farþegavagn (segulsviflest) STR_LIVERY_FREIGHT_WAGON :Flutningsvagnar STR_LIVERY_BUS :Strætó STR_LIVERY_TRUCK :Flutningabílar STR_LIVERY_PASSENGER_SHIP :Farþegaferjur STR_LIVERY_FREIGHT_SHIP :Flutningsskip STR_LIVERY_HELICOPTER :Þyrlur STR_LIVERY_SMALL_PLANE :Flugvélar STR_LIVERY_LARGE_PLANE :Þotur STR_LIVERY_PASSENGER_TRAM :Farþegasporvagn STR_LIVERY_FREIGHT_TRAM :Farmsporvagn # Face selection window STR_FACE_CAPTION :{WHITE}Andlitsval STR_FACE_CANCEL_TOOLTIP :{BLACK}Hætta við andlitsval STR_FACE_OK_TOOLTIP :{BLACK}Samþykkja andlitsval STR_FACE_MALE_BUTTON :{BLACK}Karlmaður STR_FACE_MALE_TOOLTIP :{BLACK}Velja karlmannsandlit STR_FACE_FEMALE_BUTTON :{BLACK}Kvenmaður STR_FACE_FEMALE_TOOLTIP :{BLACK}Velja kvenmannsandlit STR_FACE_NEW_FACE_BUTTON :{BLACK}Nýtt Andlit STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Mynda andlit af handahófi STR_FACE_ADVANCED :{BLACK}Ítarlegt STR_FACE_ADVANCED_TOOLTIP :{BLACK}Ítarleg breyting á andlitinu STR_FACE_SIMPLE :{BLACK}Einfalt STR_FACE_SIMPLE_TOOLTIP :{BLACK}Einföld breyting á andlitinu STR_FACE_LOAD :{BLACK}Hlaða STR_FACE_LOAD_TOOLTIP :{BLACK}Hlaða uppáhalds andliti STR_FACE_LOAD_DONE :{WHITE}Þitt uppáhalds andlit hefur verið sótt úr OpenTTD stilliskrá STR_FACE_FACECODE :{BLACK}Andlit nr. STR_FACE_FACECODE_TOOLTIP :{BLACK}Skoða og/eða stilla andlitsnúmer á forstjóra fyrirtækisins STR_FACE_FACECODE_CAPTION :{WHITE}Skoða og/eða stilla andlitsnúmer forstjóra STR_FACE_FACECODE_SET :{WHITE}Nýtt andlitsnúmer hefur verið stillt STR_FACE_FACECODE_ERR :{WHITE}Gat ekki stillt andlitsnúmer forstjóra - verður að vera tala á bilinu 0 og upp í 4.294.967.295! STR_FACE_SAVE :{BLACK}Vista STR_FACE_SAVE_TOOLTIP :{BLACK}Vista uppáhalds andlit STR_FACE_SAVE_DONE :{WHITE}Þetta andlit mun verða vistað sem þitt uppahald í OpenTTD stilliskrá STR_FACE_EUROPEAN :{BLACK}Evrópskt STR_FACE_SELECT_EUROPEAN :{BLACK}Velja evrópskt andlit STR_FACE_AFRICAN :{BLACK}Afrískt STR_FACE_SELECT_AFRICAN :{BLACK}Velja blökkuandlit STR_FACE_YES :Já STR_FACE_NO :Nei STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Virkja yfirvaraskegg eða eyrnalokk STR_FACE_HAIR :Hár: STR_FACE_HAIR_TOOLTIP :{BLACK}Breyta hári STR_FACE_EYEBROWS :Augabrúnir: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Breyta augabrúnum STR_FACE_EYECOLOUR :Augnlitur: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Breyta augnlit STR_FACE_GLASSES :Gleraugu: STR_FACE_GLASSES_TOOLTIP :{BLACK}Velja/afvelja gleraugu STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Breyta gleraugum STR_FACE_NOSE :Nef: STR_FACE_NOSE_TOOLTIP :{BLACK}Breyta nefi STR_FACE_LIPS :Varir: STR_FACE_MOUSTACHE :Yfirvaraskegg: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Breyta vörum eða yfirvaraskeggi STR_FACE_CHIN :Vangar: STR_FACE_CHIN_TOOLTIP :{BLACK}Breyta vöngum STR_FACE_JACKET :Jakki: STR_FACE_JACKET_TOOLTIP :{BLACK}Breyta jakka STR_FACE_COLLAR :Kragi: STR_FACE_COLLAR_TOOLTIP :{BLACK}Breyta kraga STR_FACE_TIE :Bindi: STR_FACE_EARRING :Eyrnalokkur: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Breyta bindi eða eyrnalokk # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Fjölspilun STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Tenging: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Veldu milli internetleiks eða staðarnetleiks STR_NETWORK_SERVER_LIST_LAN :Staðarnet STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nafn leikmanns: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Þetta er nafnið sem aðrir leikmenn munu þekkja þig undir STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nafn STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nafn leiksins STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Notendur STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Tengdir notendur / hámarksfjöldi notenda STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kortastærð STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Stærð korts í leiknum{}Smelltu til að flokka eftir stærð STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dagsetning STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Núverandi dagsetning STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Ár STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Fjöldi ára{}sem leikurinn er í gangi STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Tungumál, útgáfa þjóns o.s.frv. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Ýttu á leik á listanum til að velja hann STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Þjónninn sem þú tengdist síðast: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Smelltu til að velja þjóninn sem þú tengdist í síðast STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}UPPLÝSINGAR UM LEIK STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Notendur: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Tungumál: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landslag: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Stærð korts: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Útgáfa á þjóni: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Veffang netþjóns: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Upphafsdagsetning: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Núverandi dagsetning: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Varið með lykilorði! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}ÞJÓNN AFTENGDUR STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}ÞJÓNN FULLUR STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}ÚTGÁFA STEMMIR EKKI STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF MISRÆMI STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Tengjast leik STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Endurnýja þjón STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Endurnýja upplýsingar um þjón STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Finna þjón STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Leita að þjónum á neti STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Bæta við þjóni STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Bætir þjóni við listann, hann mun alltaf vera athugaður þegar leitað er eftir leikjum í gangi STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Hefja þjón STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Hefja eigin þjón STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Sláðu inn nafn þitt STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Sláðu inn IP tölu þjónsins # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Hefja nýjan fjölspilunarleik STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nafn leiks: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nafn leiksins mun vera sýnilegt öðrum leikmönnum í fjölspilunarvalmyndinni STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Veldu lykilorð STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Verndaðu leikinn þinn með lykilorði ef þú vilt ekki að óboðnir tengist honum STR_NETWORK_START_SERVER_LAN_INTERNET :Staðarnet / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (auglýsa) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} biðlar{P i ar} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Hámarksfjöldi notenda: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Veldu hámarksfjölda notenda. Ekki þarf að fylla öll pláss STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} Fyrirtæki STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Hámarksfjöldi fyrirtækja: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Takmarka fjölda fyrirtækja á vefþjóni STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} áhorf{P andi endur} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Hámarksfjöldi áhorfanda: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Takmarka fjölda áhorfanda á vefþjóninum STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Tungumál: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Aðrir notendur munu vita hvaða tungumál er talað á þjóninum STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Sláðu inn nafn netleiksins # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Hvað sem er STR_NETWORK_LANG_ENGLISH :Enska STR_NETWORK_LANG_GERMAN :Þýska STR_NETWORK_LANG_FRENCH :Franska STR_NETWORK_LANG_BRAZILIAN :Brasilíska STR_NETWORK_LANG_BULGARIAN :Búlgarska STR_NETWORK_LANG_CHINESE :Kínverska STR_NETWORK_LANG_CZECH :Tékkneska STR_NETWORK_LANG_DANISH :Danska STR_NETWORK_LANG_DUTCH :Hollenska STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finnska STR_NETWORK_LANG_HUNGARIAN :Ungverska STR_NETWORK_LANG_ICELANDIC :Íslenska STR_NETWORK_LANG_ITALIAN :Ítalska STR_NETWORK_LANG_JAPANESE :Japanska STR_NETWORK_LANG_KOREAN :Kóreiska STR_NETWORK_LANG_LITHUANIAN :Litháenska STR_NETWORK_LANG_NORWEGIAN :Norska STR_NETWORK_LANG_POLISH :Pólska STR_NETWORK_LANG_PORTUGUESE :Portúgalska STR_NETWORK_LANG_ROMANIAN :Rómanska STR_NETWORK_LANG_RUSSIAN :Rússneska STR_NETWORK_LANG_SLOVAK :Slóvakíska STR_NETWORK_LANG_SLOVENIAN :Slóveska STR_NETWORK_LANG_SPANISH :Spænska STR_NETWORK_LANG_SWEDISH :Sænska STR_NETWORK_LANG_TURKISH :Tyrkneska STR_NETWORK_LANG_UKRAINIAN :Úkraínska STR_NETWORK_LANG_AFRIKAANS :Afríkanska STR_NETWORK_LANG_CROATIAN :Króatíska STR_NETWORK_LANG_CATALAN :Katalónska STR_NETWORK_LANG_ESTONIAN :Eistneska STR_NETWORK_LANG_GALICIAN :Gelíska STR_NETWORK_LANG_GREEK :Gríska STR_NETWORK_LANG_LATVIAN :Lettneska ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Anddyri fjölspilunarleiks STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Undirbý tengingu við: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Listi yfir öll fyrirtæki í leiknum. Þú getur annað hvort gengið í lið með einu eða komið á fót nýju ef pláss er fyrir nýtt STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}UPPLÝSINGAR UM FYRIRTÆKI STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nafn fyrirtækis: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Upphaf: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Verðmæti fyrirtækis: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Núverandi staða: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Innkoma síðasta árs: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Frammistaða: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Farartæki: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stöðvar: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Leikmenn: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nýtt fyrirtæki STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Koma á fót nýju fyrirtæki STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Fylgjast með leik STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Fylgjast með leiknum sem áhorfandi STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Ganga í lið með fyrirtæki STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjálpa við stjórnun þessa fyrirtækis # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Tengist... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Tengist... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Staðfesti... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Bíð... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Hala niður korti... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Vinn úr gögnum... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Skrái... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Næ í upplýsingar um leik... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Næ í upplýsingar um fyrirtæki... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} þjón{P n ar} fyrir framan þig STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} hefur verið niðurhalað STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} niðurhöluð hingaðtil STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Aftengjast STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Þjónn er varinn. Sláðu inn lykilorð STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyrirtæki er varið. Sláðu inn lykilorð # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Listi yfir leikmenn STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Fylgjast með STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nýtt fyrirtæki # Network client list STR_NETWORK_CLIENTLIST_KICK :Sparka STR_NETWORK_CLIENTLIST_BAN :Banna STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gefa pening STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tala við alla STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tala við fyrirtæki STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Einkaskilaboð STR_NETWORK_SERVER :Þjónn STR_NETWORK_CLIENT :Notandi STR_NETWORK_SPECTATORS :Áhorfendur STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sláðu inn peningaupphæð sem þú vilt láta af hendi rakna # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ekki vista innslegið lykilorð STR_COMPANY_PASSWORD_OK :{BLACK}Læsa fyrirtækinu með nýja lykilorðinu STR_COMPANY_PASSWORD_CAPTION :{WHITE}Lykilorð fyrirtækis STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Sjálfgefið lykilorð fyrirtækis STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Nota lykilorð þessa fyrirtækis sem sjálfgefið fyrir ný fyrirtæki # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Taka þátt STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Taka þátt sem þetta fyrirtæki STR_COMPANY_VIEW_PASSWORD :{BLACK}Lykilorð STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Til að vernda fyrirtæki þitt frá óboðnum notendum geturðu sett lykilorð á það STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Setja lykilorð á fyrirtæki # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Senda STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Private] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[All] : STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Team] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Private] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Private] Til {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[All] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Sláðu inn texta fyrir netpsjall # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Enginn netbúnaður fannst eða vistþýtt án ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Fann enga netleiki STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Þjóninn svaraði ekki fyrirspurninni STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Gat ekki tengst vegna NewGRF misræmis STR_NETWORK_ERROR_DESYNC :{WHITE}Samstilling netleiks mistókst. STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Tenging við netleik glataðist. STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Gat ekki hlaðið vistuðum leik af þjóni. STR_NETWORK_ERROR_SERVER_START :{WHITE}Gat ekki ræst þjón STR_NETWORK_ERROR_CLIENT_START :{WHITE}Gat ekki tengst STR_NETWORK_ERROR_TIMEOUT :{WHITE}Tenging #{NUM} fjaraði út. STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Villa varð í samskiptum og tengingu var lokað STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Útgáfa biðils er ekki sama og útgáfa þjóns STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Rangt lykilorð STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Þjónninn er fullur STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Þú ert bannaður/bönnuð á þessum þjóni STR_NETWORK_ERROR_KICKED :{WHITE}Þér var hent út úr leiknum STR_NETWORK_ERROR_CHEATER :{WHITE}Svindl er ekki leyft á þessum þjóni STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Þú ert að senda of margar skipanir á vefþjóninn STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Þú varst oft lengi að setja inn lykilorð STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tölvan þín er of hæg til að halda í við netþjóninn STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Tölvan þín var of lengi að sækja kortið STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Tölvan þín var of lengi að tengjast netþjóninum ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :almenn villa STR_NETWORK_ERROR_CLIENT_DESYNC :samstillingarvilla STR_NETWORK_ERROR_CLIENT_SAVEGAME :gat ekki opnað kort STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :tenging rofnaði STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :samskiptavilla STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF misræmi STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :Ekki leyfilegt STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :tók á móti undarlegum eða óvæntum pakka STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :röng útgáfa STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nafn nú þegar í notkun STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :rangt leikjalykilorð STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :vitlaust fyrirtækis-id í DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :hent út af þjón STR_NETWORK_ERROR_CLIENT_CHEATER :reyndi að svindla STR_NETWORK_ERROR_CLIENT_SERVER_FULL :vefþjónn fullur STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :var að senda of margar skipanir STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :fékk ekkert lykilorð STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :almenn tímamörk STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :að niðurhala kortinu tók of langan tíma STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :úrvinnsla kortsins tók of langan tíma ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Hefur líklega misst sambandið STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Síðustu {NUM} sekúndu{P "" r} hafa engin gögn borist frá þjóninum # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Leikur í pásu ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Leikur enn í pásu ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Leikur enn í pásu ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Leikur enn í pásu ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Leikurinn er enn stöðvaður ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Leikur heldur áfram ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :fjöldi leikmanna STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :tengdir notendur STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :Forvaldar STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :forskrift ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :yfirgefur STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} tengdist leiknum STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} hefur tengst leiknum (Notandi #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} hefur gengið í lið með fyrirtæki #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} horfir á STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} stofnaði nýtt fyrirtæki (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} yfirgefur leikinn ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} heitir nú {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} sendi þér {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Þú gafst {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Þjónninn sleit tengingunni STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Verið er að endurræsa þjóninn...{}Vinsamlega bíðið... # Content downloading window STR_CONTENT_TITLE :{WHITE}Niðurhel efni STR_CONTENT_TYPE_CAPTION :{BLACK}Týpa STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tegund pakka STR_CONTENT_NAME_CAPTION :{BLACK}Heiti STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Heiti efnis STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Smelltu á pakka fyrir frekari upplýsingar{}Smelltu í reitinn til að velja pakka til niðurhals STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Velja allt STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Velja allt til niðurhals STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Velja uppfærslur STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Velja til niðurhals allar uppfærslur fyrir pakka sem nú þegar hefur verið náð í STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Af-velja allt STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Afvelja allt frá niðurhali STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Leita á utanaðkomandi vefsíðum STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Leita eftir efni sem ekki er fáanlegt á OpenTTD efnisveitunni, á vefsíðum sem ekki eru hluti af OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Þú ert að fara úr OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Skilyrði og skilmálar til að sækja efni frá utanaðkomandi vefsíðum eru mismunandi.{}Þú verður að fara eftir upplýsingum frá þeim vefsíðum um hvernig setja á inn efni í OpenTTD.{}Viltu halda áfram? STR_CONTENT_FILTER_TITLE :{BLACK}Leitarstrengur: STR_CONTENT_OPEN_URL :{BLACK}Skoða vefsíðu STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Kíktu á vefsíðu tengda þessu efni STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Niðurhala STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Hefja niðurhal á völdum pökkum STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Stærð niðurhals: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}UPPLÝSINGAR STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Pakkinn er ekki valinn til niðurhals STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Pakkinn er valinn til niðurhals STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Þessi pakki er nauðsynlegur undirstaða fyrir annan pakka sem er valinn til niðurhals STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Þú hefur þetta nú þegar STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Þetta innihald er óþekkt og ekki er hægt að niðurhala í gegnum OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Þetta skiptir út því sem er fyrir {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Heiti: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Útgáfa: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Lýsing: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Týpa: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Stærð niðurhals: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valinn vegna: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Byggir á: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Stikkorð: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD er smíðað án „zlib“ stuðnings... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ekki hægt að hlaða niður efni! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Venjuleg grafík STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :Gervigreind STR_CONTENT_TYPE_AI_LIBRARY :Safn gervigreinda STR_CONTENT_TYPE_SCENARIO :Kort STR_CONTENT_TYPE_HEIGHTMAP :Hæðakort STR_CONTENT_TYPE_BASE_SOUNDS :Venjuleg hljóð STR_CONTENT_TYPE_BASE_MUSIC :Venjuleg tónlist STR_CONTENT_TYPE_GAME_SCRIPT :Forskrift STR_CONTENT_TYPE_GS_LIBRARY :Safn forskrifta # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Hel niður efni... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Bið um skrár... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Næ í {STRING} ({NUM} af {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Niðurhali lokið STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} af {BYTES} niðurhalað ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Gat ekki tengst í efnisveitu... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Niðurhal mistókst... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... tenging slitnaði STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... skráin er ekki skrifanleg STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Gat ekki afþjappað niðurhöluðu skránni STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Vantar grafík STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD þarf á grafík til að virka en engin fannst. Leyfir þú OpenTTD að sækja og setja upp grafíkina? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Já, sækja grafík STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nei, hætta í OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Stilling gegnsæjis STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji skilta. CTRL+smella til að læsa. STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji trjáa. Ctrl+smella til að læsa. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji húsa. CTRL+smella til að læsa. STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji iðnaða. Ctrl+smella til að læsa STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji bygginga á borð við stöðvar, skýli og veghlið. CTRL+smella til að læsa STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji brúa. Ctrl+smella til að læsa STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji bygginga á borð við vita og möstur. Ctrl+smella til að læsa STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji raflína. CTRL+smella til að læsa. STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji hleðslumæla. Ctrl+smella til að læsa STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gera hluti ósýnilega en ekki gagnsæja # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Svæði sem tilheyrir stöð STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Fela STR_STATION_BUILD_COVERAGE_ON :{BLACK}Sýna STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Ekki sýna svæði sem tilheyrir stöð STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Sýna svæði sem tilheyrir stöð STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Móttekur: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Birgðir: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Tengja stöðvar STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Reisa aðra stöð STR_JOIN_WAYPOINT_CAPTION :{WHITE}Tengja millistöð STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Reisa aðra millistöð # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Járnbrautarspors framkvæmdir STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Raflestaframkvæmdir STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Einteinungsframkvæmdir STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Segulsvifvagna framkvæmdir STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Leggja járnbrautarspor. Ctrl velur byggja/fjarlægja fyrir járnbrautar framkvæmdir. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Leggja járnbrautarspor, stefna sporsins er sjálfvirk. Ctrl til að eyða járnbrautarspori. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byggja lestarskýli (til að byggja og þjónusta lestar). Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Breyta spori í vegvísi. Ctrl leyfir samteingingu vegvísa. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Byggja lestarstöð. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Leggja járnbrautar umferðarmerki. Ctrl velur hreyfimerki/ljósamerki{}Dragðu til að leggja umferðarmerki eftir beinu járnbrautarspori{}Ctrl+smella opnar/lokar umferðarmerkja glugganum. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Byggja lestarbrú. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Byggja lestargöng. Shift sýnir áætlaðan kostnað STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skipta á milli byggja/fjarlægja járnbrautarspor, umferðarmerki, vegvísi og járnbrautarstöðva. Haltu Ctrl inni til að fjarlægja spor af vegvísum og stöðvum STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Breyta/uppfæra gerð spors. Shift sýnir áætlaðan kostnað STR_RAIL_NAME_RAILROAD :Járnbrautarspor STR_RAIL_NAME_ELRAIL :Rafmagns járnbrautarspor STR_RAIL_NAME_MONORAIL :Einteinaspor STR_RAIL_NAME_MAGLEV :Segulsvifvagnaspor # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Lega lestarskýlis STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Veldu legu lestarskýlis # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Leiðarvísir STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Velja tegund leiðarvísis # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Lestarstöðvastillingar STR_STATION_BUILD_ORIENTATION :{BLACK}Staða STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Veldu stöðu lestarstöðvar STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Fjöldi lestarspora STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Veldu fjölda lestarspora á lestarstöð STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Lengd lestarstöðvar STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Veldu lengd lestarstöðvar STR_STATION_BUILD_DRAG_DROP :{BLACK}Draga & Sleppa STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Byggja lestarstöð með 'draga og sleppa' aðferðinni STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Veldu flokk stöðva sem á að sýna STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Veldu tegund stöðvar til að reisa STR_STATION_CLASS_DFLT :Sjálfgefin stöð STR_STATION_CLASS_WAYP :Millistöð # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Umferðarmerki STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Hefðbundin merki (hreyfimerki){}Þetta er einfaldasta tegund merkja, bara ein lest getur verið á sama svæði hverju sinni STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Komumerki(hreyfimerki){}Grænt svo lengi sem eitt eða fleiri græn frámerki koma á eftir. Annars sýnir það rautt STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Frámerki (hreyfimerki){}Virkar eins og hefðbundið merki en er nauðsynlegt til að fá réttan lit á komu- og tvívirk for-merki STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Tvívirk merki (hreyfimerki){}Tvívirku merkin virka einfaldlega bæði sem inn og út merki. Þetta leyfir þér að byggja stór "tré" af for-merkjum STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Leiðarmerki (hreyfimerki){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta farið framhjá venjulegum merkjum aftanfrá STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Einstefnumerki (hreyfimerki){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta ekki farið framhjá venjulegum merkjum aftanfrá STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Hefðbundin merki (ljósamerki){}Þetta er einfaldasta tegund merkja, bara ein lest getur verið á sama svæði hverju sinni STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Komumerki (ljósamerki){}Græn eins lengi og eitt eða fleiri frámerki sem á eftir koma eru græn. Annars sýnir það rautt STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Frámerki (ljósamerki){}Virkar eins og hefðbundið merki en er nauðsynlegt til að fá rétta virkni fyrir komu- og tvívirk for-merki STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Tvívirk merki (ljósamerki){}Tvívirku merkin virka einfaldlega sem bæði inn og út merki. Þetta leyfir þér að byggja stór "tré" af for-ljósum STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Leiðarljós (lestaljós){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta farið framhjá venjulegum merkjum aftanfrá STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Einstefnumerki (ljósamerki){}Leiðarmerki gera fleiri en einni lest í einu kleift að keyra inn á sama umferðarsvæðið á sama tíma ef þær finna örugga leið út úr því aftur. Lestir geta ekki farið framhjá venjulegum merkjum aftanfrá STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Breyta merkjum{}Þegar þetta er valið þá breytist umferðarmerkið sem fyrir er í valda gerð og tegund. Ctrl-smella mun rúlla í gegnum merkin. Shift-smella sýnir áætlaðan kostnað við að skipta um skilti STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Þéttleiki dreginna umferðarmerkja STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minnka þéttleika dreginna umferðarmerkja STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Auka þéttleika dreginna umferðarmerkja # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Veldu tegund brúar STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Veldu vegabrú STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brúarval - smelltu á brú að eigin vali til að reysa hana STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Hengibrú, stál STR_BRIDGE_NAME_GIRDER_STEEL :Burðarbitabrú, stál STR_BRIDGE_NAME_CANTILEVER_STEEL :Svifbitabrú, stál STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hengibrú, steypa STR_BRIDGE_NAME_WOODEN :Viðarbrú STR_BRIDGE_NAME_CONCRETE :Steypubrú STR_BRIDGE_NAME_TUBULAR_STEEL :Rörabrú, stál STR_BRIDGE_TUBULAR_SILICON :Rörabrú, kísill # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Vegagerð STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Sporvagnaframkvæmdir STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Leggja veg. Ctrl velur byggja/fjarlægja vegi. Shift sýnir áætlaðan kosntað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Leggja sporvagnaspor. Ctrl velur byggja/fjarlæga fyrir sporin. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Leggja veghluta í sjálfvirkum vegaham. Ctrl velur byggja/fjarlægja vegi. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Leggja sporvagnaspor í sjálfvirkum sporvagnsham. Ctrl velur byggja/fjarlægja spor. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Byggja bifreiðaskýli (til að kaupa og gera við bifreiðar). Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Reisa sporvagnaskýli (til að kaupa og þjónusta vagna). Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Byggja strætóstoppistöð. Ctrl leyfir samtengingu stöðva.Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Reisa sporvagnastöð fyrir farþega. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Byggja flutningabílastöð. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Reisa sporvagnastöð fyrir farm. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Virkja/afvirkja einstefnugötur STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Byggja vegabrú. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Byggja sporvagnabrú. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Byggja göng. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Grafa sporvagnagöng. Shift sýnir áætlaðan kostnað STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Skipta á milli byggja/fjarlægja fyrir vegagerð STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Skipta á milli þess að leggja leggja og fjarlægja sporvagnaspor # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Bifreiðaskýli STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Veldu legu bifreiðaskýlis STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Staða sporvagnaskýlis STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Veldu stöðu sporvagnaskýlis # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Staða strætisvagnastöðvar STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Veldu stöðu strætisvagnastöðvar STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Staða póstvagnsstöðvar STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Veldu stöðu póstvagnsstöðvar STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Staða farþegastöðvar fyrir sporvagna STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velja stöðu farþegasporvagnastöðvar STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Staða farmstöðvar fyrir sporvagna STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Velja stöðu farmsporvagnastöðvar # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Vatnaframkvæmdir STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Skipaskurður STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Grafa skipaskurði. Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Grafa skipastiga. Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Reisa slipp (til að kaupa og þjónasta skip). Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Byggja bryggju. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Setja niður bauju sem hægt er að nota sem leiðarvísi. Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Byggja vatnsveitubrú. Shift sýnir áætlaðan kostnað STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Skilgreina vantssvæði.{}Grafa skipaskurð, nema CTRL sé haldið niðri við sjávarmál, þá flæðir yfir umhverfið í staðin. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Búa til fljót # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Staða slipps STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Velja stöðu slipps # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Höfn # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Flugvellir STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Byggja flugvöll. Ctrl leyfir samtengingu stöðva. Shift sýnir áætlaðan kostnað # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Flugvallastillingar STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Veldu stærð/tegund flugvallar STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Tegund flugvallar STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Skipulag {NUM} STR_AIRPORT_SMALL :Lítill flugvöllur STR_AIRPORT_CITY :Borgarflugvöllur STR_AIRPORT_METRO :Stórborgar STR_AIRPORT_INTERNATIONAL :Alþjóðlegt STR_AIRPORT_COMMUTER :Innanlandsflugvöllur STR_AIRPORT_INTERCONTINENTAL :Meginlandsflugvöllur STR_AIRPORT_HELIPORT :Þyrlupallur STR_AIRPORT_HELIDEPOT :Þyrluskýli STR_AIRPORT_HELISTATION :Þyrlustöð STR_AIRPORT_CLASS_SMALL :Litlir flugvellir STR_AIRPORT_CLASS_LARGE :Stórir flugvellir STR_AIRPORT_CLASS_HUB :Háannaflugvellir STR_AIRPORT_CLASS_HELIPORTS :Þyrluflugvellir STR_STATION_BUILD_NOISE :{BLACK}Hávaði við flugvöll: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Mótun lands STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Lækka horn af landssvæði. Dragðu til að lækka fyrsta hornið og svo valið landsvæði útfrá því. Ctrl velur svæðið skáhalt. Shift sýnir áætlaðan kostnað STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Lyfta horni af landssvæði. Dragðu til að lyfta fyrsta horninu og svo valið landsvæði útfrá því. Ctrl velur svæðið skáhalt. Shift sýnir áætlaðan kostnað STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Jafna land miðað við fyrsta valda hornið. Ctrl velur svæðið skáhalt. Shift sýnir áætlaðan kostnað STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kaupa landssvæði til notkunar síðar. Shift sýnir áætlaðan kostnað # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Hlutaval STR_OBJECT_BUILD_TOOLTIP :{BLACK}Veldu hlut til að byggja. Shift sýnir áætlaðan kostnað STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Veldu flokk hlutarins sem á að byggja STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Sýnishorn af hlutnum STR_OBJECT_BUILD_SIZE :{BLACK}Stærð: {GOLD}{NUM} x {NUM} reitir STR_OBJECT_CLASS_LTHS :Vitar STR_OBJECT_CLASS_TRNS :Sendar # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Tré STR_PLANT_TREE_TOOLTIP :{BLACK}Veldu trjátegund sem á að gróðursetja. Ef það er fyrir tré á reitnum, verðu fleiri trjám mismunandi trjám plantað óhað hvaða tegund hefur verið valin STR_TREES_RANDOM_TYPE :{BLACK}Tré af handahófskenndri gerð STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Gróðursetja tré af handahófskenndri gerð. Shift sýnir áætlaðan kostnað STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tré af handahófi STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Gróðursetja tré af handahófi um landið # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landslagsgerð STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Setja klettasvæði á landið STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Afmarkaðu eyðimörk.{}Haltu CTRL til að fjarlægja hana STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Stækka svæði til að lækka/hækka STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Minnka svæði til að lækka/hækka STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Mynda til land af handahófi STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Búa til nýtt kort STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Eyða landi STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Fjarlægja allar eignir fyrirtækja af kortinu STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Eyða landi STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Ertu viss um að þú viljir fjarlægja allar eignir fyrirtækja? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bæjargerð STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nýr bær STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Stofna nýjan bæ. Shift sýnir áætlaðan kostnað STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Handahófskenndur bær STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Stofna bæ á handahófskenndum stað STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Búa til marga bæi STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Þekja landið með bæjum STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nafn bæjar: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Sláðu inn nafn bæjar STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Smelltu til að slá inn nafn bæjar STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Handahófskennt nafn STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Mynda nýtt handahófskennt nafn STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Stærð bæjar: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Lítill STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Miðlungs STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stór STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Handahófskennd STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Velja stærð bæjar STR_FOUND_TOWN_CITY :{BLACK}Borg STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Borgir vaxa hraðar en venjulegir bæir{}Möguleiki á aukinni upphafsstærð í stillingum STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Vegaskipulag bæja STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Veldu það skipulag sem þessi bær notar fyrir sína vegi STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Upphaflegt STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Betri vegir STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 reitir STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 reitir STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Handahófskennt # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Fjármagna nýjan iðnað STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Veldu viðeigandi iðnað úr listanum STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Búa til marga iðnaði STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Þekja kortið mörgum handahófskenndum iðnöðum STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostnaður: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Horfur STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Reisa STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Fjármagna # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Iðnaðarkeðja fyrir {STRING} iðnað STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Iðnaðarkeðja fyrir {STRING} farm STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Framleiðandi iðnaðir STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Móttækilegir iðnaðir STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hús STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Smelltu á iðnað til að sjá byrgja og viðskiptavini STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Smelltu á farm til að sjá byrgja og viðskiptavini STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Sýna keðju STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Sýna framleiðanda farms og iðnaði sem taka á móti. STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Tengill á litla kort STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Veldu einnig sýndan iðnað á kortinu. STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Veldu farm STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Veldu farminn sem þú vilt sýna STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Veldu farm STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Veldu farminn sem þú vilt sýna # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Landsvæðisupplýsingar STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Kostnaður við hreinsun: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Kostnaður við hreinsun: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ágóði af hreinsun: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Enginn STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigandi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Eigandi vegs: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigandi spors: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eigandi járnbrautarspors: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bæjaryfirvöld: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Enginn STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Hnit: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Byggt: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tegund stöðvar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tegund stöðvar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Tegund flugvallar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nafn flugvallar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nafn flugvallar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Tekið á móti: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hámarkshraði járnbrautarlestar: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klettar STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Hrjúft land STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Bert land STR_LAI_CLEAR_DESCRIPTION_GRASS :Gras STR_LAI_CLEAR_DESCRIPTION_FIELDS :Akur STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snjóþekið land STR_LAI_CLEAR_DESCRIPTION_DESERT :Eyðimörk STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spor STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spor með hefðbundnum umferðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spor með for-merkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spor með frámerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spor með tvívirkum merkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spor með leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spor með einstefnu leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spor með hefðbundnum- og formerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spor með hefðbundnum- og frámerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spor með hefðbundnum- tvívirkum merkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spor með hefðbundnum- og leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spor með hefðbundnum- og einstefnu leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spor með for- og frámerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spor með for- og tvívirkum merkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spor með for- og leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spor með for- og einstefnu leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spor með frá- og tvívirkum merkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spor með frá- og leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spor með frá- og einstefnu leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spor með tvívirkum- og leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spor með tvívirkum- og einstefnu leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spor með leiðarmerkjum og einstefnu leiðarmerkjum STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} lestarskýli STR_LAI_ROAD_DESCRIPTION_ROAD :Vegur STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vegur með götuljósum STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Trjáskreyttur vegur STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Bifreiðaskýli STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Vega/lestar gatnamót STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Sporvagn # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (í byggingu) STR_LAI_TREE_NAME_TREES :Tré STR_LAI_TREE_NAME_RAINFOREST :Regnskógar STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktus STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Lestastöð STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Flugskýli STR_LAI_STATION_DESCRIPTION_AIRPORT :Flugvöllur STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Vörubílastöð STR_LAI_STATION_DESCRIPTION_BUS_STATION :Strætisvagnastöð STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Bryggja STR_LAI_STATION_DESCRIPTION_BUOY :Bauja STR_LAI_STATION_DESCRIPTION_WAYPOINT :Millistöð STR_LAI_WATER_DESCRIPTION_WATER :Vatn STR_LAI_WATER_DESCRIPTION_CANAL :Skipaskurður STR_LAI_WATER_DESCRIPTION_LOCK :Skurðgátt STR_LAI_WATER_DESCRIPTION_RIVER :Á STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Strönd STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Slippur # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Lestagöng STR_LAI_TUNNEL_DESCRIPTION_ROAD :Vegagöng STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stálhengibrú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stálburðarbitabrú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stálsvifbitabrú fyrir lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Styrkt steypuhengirbú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Viðarbrú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Steypubrú, lestir STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Rörabrú, lestir STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Stálhengibrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Stálburðarbitabrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Stálsvifbitabrú fyrir vegi STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Styrkt steypuhengibrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Viðarbrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Stepubrú, vegur STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Rörabrú, vegur STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Vatnsleiðsla STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Mastur STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Viti STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Höfuðstöðvar fyritækis STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land í eigu fyrirtækis # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin STR_ABOUT_VERSION :{BLACK}OpenTTD útgáfa {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD hópurinn # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik STR_SAVELOAD_LOAD_CAPTION :{WHITE}Opna leik STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Vista kort STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Opna kort STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Hlaða hæðakorti STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Vista hæðarkort STR_SAVELOAD_HOME_BUTTON :{BLACK}Smelltu hér til að opna möppu fyrir vistaða leiki STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} laus STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Listi yfir drif, möppur og vistaða leiki STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nafn fyrir vistun leiks STR_SAVELOAD_DELETE_BUTTON :{BLACK}Eyða STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Eyða nafninu STR_SAVELOAD_SAVE_BUTTON :{BLACK}Vista STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Vista leikinn undir þessu nafni STR_SAVELOAD_LOAD_BUTTON :{BLACK}Opna STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Opna valdan leik STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Leikupplýsingar STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Engar upplýsingar tiltækar STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Sláðu inn nafn fyrir vistun leiksins # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Sköpun heims STR_MAPGEN_MAPSIZE :{BLACK}Kortastærð: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Veldu stærð kortsins í reitum. Fjöldi reita verða aðeins færri STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Fjöldi bæja: STR_MAPGEN_DATE :{BLACK}Dags.: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Fjöldi iðnaða: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hæð snjólínu: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Hækka snjólínu upp um eitt þrep STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Lækka snjólínu niður um eitt þrep STR_MAPGEN_RANDOM_SEED :{BLACK}Raðnúmer lands: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Smelltu til að skrifa inn raðnúmer STR_MAPGEN_RANDOM :{BLACK}Nýtt raðnúmer STR_MAPGEN_RANDOM_HELP :{BLACK}Fá tilviljanakennt raðnúmer fyrir myndun lands STR_MAPGEN_LAND_GENERATOR :{BLACK}Landmyndun: STR_MAPGEN_TREE_PLACER :{BLACK}Planta trjám: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Gerð lands: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Magn sjávar: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ár: STR_MAPGEN_SMOOTHNESS :{BLACK}Sléttleiki lands: STR_MAPGEN_VARIETY :{BLACK}Fjölbreytileikadreifing: STR_MAPGEN_GENERATE :{WHITE}Mynda land # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Hliðar korts: STR_MAPGEN_NORTHWEST :{BLACK}Norðvestur STR_MAPGEN_NORTHEAST :{BLACK}Norðaustur STR_MAPGEN_SOUTHEAST :{BLACK}Suðaustur STR_MAPGEN_SOUTHWEST :{BLACK}Suðvestur STR_MAPGEN_BORDER_FREEFORM :{BLACK}Frjálsar STR_MAPGEN_BORDER_WATER :{BLACK}Vatn STR_MAPGEN_BORDER_RANDOM :{BLACK}Slembin STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Slembnar STR_MAPGEN_BORDER_MANUAL :{BLACK}Forvaldar STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Snúningur hæðarkorts: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nafn hæðarlínukorts: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stærð: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Sláðu inn slembistofn STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Breyta hæð snjólínu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Breyta upphafsári # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Tegund korts STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Slétt land STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Mynda slétt land STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Handahófskennt land STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hæð slétts lands yfir sjávarmáli STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Lækka slétt land niður um eitt þrep STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Hækka slétt land upp um eitt þrep STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Breyta hæð á sléttu landi # Map generation progress STR_GENERATION_WORLD :{WHITE}Skapa heim... STR_GENERATION_ABORT :{BLACK}Hætta STR_GENERATION_ABORT_CAPTION :{WHITE}Hætta við sköpun heims STR_GENERATION_ABORT_MESSAGE :{YELLOW}Ertu viss um að þú viljir hætta við sköpunina? STR_GENERATION_PROGRESS :{WHITE}{NUM}% tilbúið STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Sköpun heims STR_GENERATION_RIVER_GENERATION :{BLACK}Bý til ár STR_GENERATION_TREE_GENERATION :{BLACK}Gróðursetning trjáa STR_GENERATION_OBJECT_GENERATION :{BLACK}Staðsetning fastra hluta STR_GENERATION_CLEARING_TILES :{BLACK}Hrjúft og grýtt landslag STR_GENERATION_SETTINGUP_GAME :{BLACK}Set upp leik STR_GENERATION_PREPARING_TILELOOP :{BLACK}Keyri reitalykkju STR_GENERATION_PREPARING_SCRIPT :{BLACK}Keyri forskrift STR_GENERATION_PREPARING_GAME :{BLACK}Undirbý leik # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF Stillingar STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Nákvæmar NewGRF upplýsingar STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Virkjaðar NewGRF skrár STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Óvirkjaðar NewGRF skrár STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Veldu forstillingu: STR_NEWGRF_FILTER_TITLE :{ORANGE}Leitarsía: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Hlaða valdar stillingu STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Vista stillingu STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Vista núverandi lista sem stillingu STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Skrifaðu nafn á stillingu STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Eyða stillingu STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Eyða valinni stillingu STR_NEWGRF_SETTINGS_ADD :{BLACK}Bæta við STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Bæta valinni NewGRF skrá í stillingarnar STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Uppfæra lista STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Uppfæra listann yfir tiltækar NewGRF skrár STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Fjarlægja STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Fjarlægja valda NewGRF skrá af listanum STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Færa ofar STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Færa valda NewGRF skrá ofar á listann STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Færa neðar STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Færa valda NewGRF skrá neðar á listann STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Listi yfir NewGRF skrár sem eru uppsettar STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Stilla breytur STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Sýna breytur STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Skipta milli litaskema STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Skipta um litaskema fyrir valin sett.{}Ef mikið af bleikum lit birtist á röngum stöðum mun þetta laga vandann. STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Virkja breytingar STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Leita á netinu að efni sem vantar STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Skoða hvort hægt sé að ná í það sem vantar af netinu STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Skráarnafn: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF einkenni: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Útgáfa: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Lágmarks útgáfa sem er samhæf: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5 summa: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Litaskema: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Eiginleikar: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Engar upplýsingar tiltækar STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Viðeigandi skrá finnst ekki STR_NEWGRF_SETTINGS_DISABLED :{RED}Óvirkt STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ósamhæft við þessa útgáfu af OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Breyta NewGRF stillingum STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Loka STR_NEWGRF_PARAMETERS_RESET :{BLACK}Endurstilla STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Setja allar stillingar á sjálfvalin gildi. STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Stilling {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Fjöldi breyta: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Skoða - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Foreldri STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Skoða hlutinn í gildissviði foreldris STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} hjá {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Hlutur STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tegund spora STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF breyta 60+x stilling (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Samræmi hreyfimynd{COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Næsta hreyfimynd STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Halda áfram á næstu venjulegu hreyfimynd, sleppir gervi/endurlitun/letur hreyfimyndum og fer aftur á byrjun í lokin. STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Velja hreyfimynd STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Fara í valda hreyfimynd. Ef hreyfimyndin er ekki venjuleg, halda áfram í næstu venjulegu hreyfimynd. STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Fyrri hreyfimynd STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fara á fyrri venjulegu hreyfimynd, sleppir gervi/endurlitun/letur hreyfimyndum og fer aftast í listen þegar upphafi er náð. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Framsetning á valinni hreyfimynd. Samstillingu er sleppt við teikningu á þessari hreyfimynd. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Færðu hreyfimyndina, breytir X og Y hliðrun STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X hliðrun: {NUM}, Y hliðrun: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Veldu hreyfimynd STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Veldu hreyfimynd hvaðan sem er af skjánum STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Velja hreyfimynd # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Aðvörun: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Villa: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Banvænt: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Alvarleg NewGRF villa átti sér stað: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} Mun ekki virka með útgáfu TTDPatch sem OpenTTD gefur til kynna. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} er fyrir {STRING} útgáfu af TTD. STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} er hannað til að notast með {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Ógild færibreyta {1:STRING}: færibreyta {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} verður að hlaðast á undan {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} verður að hlaðast eftir {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} þarf OpenTTD útgáfu {STRING} eða nýrri. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF skránni sem það var hannað til að þýða STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Of mörg NewGRF eru hlaðin STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Ef {1:STRING} er hlaðið sem kyrrstæðu NewGRF ásamt {STRING} gætu orðið hnökrar á keyrslu leiksins. STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Óvænt hreyfimynd (hreyfimynd {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Óþekkt aðgerð, 0 eiginleikar {4:HEX} (hreyfimynd {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Verið að reyna að nota ógilt ID (hreyfimynd {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inniheldur gallaða mynd. Allar gallaðar myndir munu birtast sem rauð spurningamerki (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inniheldur margþættar aðgerðir, 8 innkomur (hreyfimynd {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Les fyrir endan af gervi-hreyfimynd (hreyfimynd {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Grunnteiknisafnið sem er í notkun vantar hluta af hreyfimyndunum.{}Vinsamlegast uppfærðu grunnteiknisafnið STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Í Grafíska safnið sem nú er í notkun vantar nokkrar myndir.{}Vinsamlegast uppfærið grafíska safnið.{}Þar sem þú ert að spila {YELLOW}þróunar útgáfu af OpenTTD{WHITE}, gæti verið að þú þyrftir líka {YELLOW} þróunar útgáfu af grafíska safninu{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Umbeðin GRF gögn ekki tiltæk (hreyfimynd {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} var óvirkjað af {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Rangt/óþekkt hreyfimyndar snið (hreyfimynd {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Varúð! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Þú ert í þann mund að eiga við leik í gangi, við það gæti OpenTTD hrunið. Vinsamlegast ekki senda inn upplýsingar um villu vegna þess.{}Ertu viss um að þú viljir halda áfram? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Get ekki bætt skrá við: tvö eins GRF einkenni STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Viðeigandi skrá finnst ekki (samsvarandi GRF hlaðið) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Get ekki bætt við skrá: Fjöldi skráa í NewGRF hefur náð hámarki STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Samsvarandi GRF hlaðið í staðin týndrar skrár STR_NEWGRF_DISABLED_WARNING :{WHITE}Týndar GRF skrár hafa verið gerðar óvirkar STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Vantar GRF skrá(r) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}OpenTTD getur hrunið ef leikur er settur af stað. Ekki skrá villufærslur fyrir eftirfarandi hrun.{}Ertu viss um að þú viljir setja leikinn af stað? # NewGRF status STR_NEWGRF_LIST_NONE :Engin STR_NEWGRF_LIST_ALL_FOUND :Allar skrár til staðar STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fann samhæfðar skrár STR_NEWGRF_LIST_MISSING :{RED}Vantar skrár # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Hegðun NewGRF '{0:STRING}' er líkleg til að valda hnökrum og/eða hruni á keyrslu leiksins STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Breytir stöðu á knúnum togvagni '{1:ENGINE}' þegar hann er ekki í skýli STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Breytir lengd á farartæki '{1:ENGINE}' þegar það er ekki í skýli STR_BROKEN_VEHICLE_LENGTH :{WHITE}Lest '{VEHICLE}' sem tilheyrir '{COMPANY}' er ekki af réttri lengd. Þessu valda sennilega NewGRF vandamál. Leikurinn kann að missa samband eða hrynja STR_NEWGRF_BUGGY :{WHITE}Rangar upplýsingar fylgja '{0:STRING}' NewGRF STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Farm/breytingaupplýsingar fyrir '{1:ENGINE}' stangast á við innkaupalista eftir kaup. Þetta kann að valda því að sjálfvirk uppfærsla/útskipting mistakist STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' olli endalausri lykkju í framleiðsluferlinu STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Kall á {1:HEX} skilaði rangri/óþekktri niðurstöðu {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} af STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skanna NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skanna NewGRF. Tíminn fer eftir fjölda... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF af sirka {NUM} skönnuð STR_NEWGRF_SCAN_ARCHIVES :Skanna eftir skjalasöfnum # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Merkjalisti - {COMMA} Merki STR_SIGN_LIST_MATCH_CASE :{BLACK}Stemma há-/lágstafi STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Skifta á milli há-/lágstafa stemmingu þegar nöfn skilta eru borin saman við síaðan texta # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Breyta texta skiltis STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Fara að næsta skilti STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Fara að fyrra skilti STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Sláðu inn nafn fyrir skiltið # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bæir STR_TOWN_DIRECTORY_NONE :{ORANGE}- Enginn - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Bæjanöfn - smelltu á nafn til að færa sjónarhorn að viðkomandi bæ. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessum bæ STR_TOWN_POPULATION :{BLACK}Heildaríbúafjöldi: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Borg) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Íbúafjöldi: {ORANGE}{COMMA}{BLACK} Hús: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Farþegar síðasta mánaðar: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Póstur síðasta mánaðar: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nauðsynlegur farmur fyrir stækkun bæjarins: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} nauðsynlegt STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nauðsynlegt á veturnar STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} afhent STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (vantar enn) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (afhent) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Bærinn stækkar á {ORANGE}{COMMA}{BLACK} dag{P s a} fresti STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Bærinn stækkar á {ORANGE}{COMMA}{BLACK} dag{P s a} (stofnaður) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Bærinn er {RED}ekki{BLACK} að stækka STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Hávaðamörk í bænum: {ORANGE}{COMMA}{BLACK} mest: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Færa aðalsjónarhorn á staðsetningu þessa bæjar. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessum bæ STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Bæjaryfirvöld STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Sýna upplýsingar um bæjaryfirvöld STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Breyta nafni bæjar STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Stækka STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Stækka bæ STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Eyða STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Eyða þessum bæ algjörlega STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Endurskíra bæ # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Bæjaryfirvöld {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Einkunnir flutningsfyrirtækis: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Aðgerðir: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Listi yfir hluti sem hægt er að gera í þessum bæ - ýttu á viðkomandi hlut fyrir upplýsingar STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Gera það STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Framkvæma völdu aðgerðina í listanum að ofan STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Lítil auglýsingaherferð STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Meðalstór auglýsingaherferð STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Stór auglýsingarherferð STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Fjármagna endurbyggingu vegakerfis STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Byggja styttu af eiganda fyrirtækis STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Fjármagna nýjar byggingar STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kaupa sérleyfi til flutninga STR_LOCAL_AUTHORITY_ACTION_BRIBE :Múta bæjaryfirvöldum STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Hleypa af stokkunum lítilli auglýsingaherferð til að laða að fleiri farþega og meiri farm til að flytja.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW} Hleypa af stokkunum miðlungs auglýsingaherferð til að laða að fleiri farþega og meiri farm til að flytja.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW} Hleypa af stokkunum mikilli auglýsingaherferð til að laða að fleiri farþega og meiri farm til að flytja.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Kosta endurbætur á vegakerfi úthverfanna. Veldur töluverðri röskun á umferð í allt að 6 mánuði.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW} Byggja styttu til heiðurs fyrirtækinu þínu.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Kosta byggingu nýs verslunarhúsnæðis í bænum.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} Kaupa 1 árs sérleyfi í þessum bæ. Bæjaryfirvöld munu aðeins leyfa notkun á þínum flutningsleiðum.{} Kostnaður: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Múta bæjaryfirvöldum til að auka við fylgi þitt, með hættu á þungri refsingu komist það upp.{} Kostnaður: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Markmið STR_GOALS_GLOBAL_TITLE :{BLACK}Markmið allra: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Engin - STR_GOALS_COMPANY_TITLE :{BLACK}Fyrirtækja markmið: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Smelltu á markmiðið til að miðja aðal sjónarhornið á iðnað/bæ/reit. Ctrl+smella opnar nýtt sjónarhorn á iðnað/bæ/reit # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Spurning STR_GOAL_QUESTION_CAPTION_INFORMATION :Upplýsingar STR_GOAL_QUESTION_CAPTION_WARNING :Varúð STR_GOAL_QUESTION_CAPTION_ERROR :Villa ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Hætta við STR_GOAL_QUESTION_BUTTON_OK :Í lagi STR_GOAL_QUESTION_BUTTON_NO :Nei STR_GOAL_QUESTION_BUTTON_YES :Já STR_GOAL_QUESTION_BUTTON_DECLINE :Afþakka STR_GOAL_QUESTION_BUTTON_ACCEPT :Þyggja STR_GOAL_QUESTION_BUTTON_IGNORE :Hunsa STR_GOAL_QUESTION_BUTTON_RETRY :Reyna aftur STR_GOAL_QUESTION_BUTTON_PREVIOUS :Fyrri STR_GOAL_QUESTION_BUTTON_NEXT :Næsta STR_GOAL_QUESTION_BUTTON_STOP :Stoppa STR_GOAL_QUESTION_BUTTON_START :Byrja STR_GOAL_QUESTION_BUTTON_GO :Af stað STR_GOAL_QUESTION_BUTTON_CONTINUE :Halda áfram STR_GOAL_QUESTION_BUTTON_RESTART :Byrja aftur STR_GOAL_QUESTION_BUTTON_POSTPONE :Fresta STR_GOAL_QUESTION_BUTTON_SURRENDER :Gefast upp STR_GOAL_QUESTION_BUTTON_CLOSE :Loka # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Samstarfssamningar STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Samstarfssamningar í boði fyrir eftirfarandi þjónustur: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} (til {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Enginn - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Samningar þegar í gildi: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} frá {STRING} til {STRING}{YELLOW} ({COMPANY}{YELLOW}, þangað til {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Ýttu á þjónustu til að færa sjónarhorn á tiltekinn iðnað/bæ. Ctrl+smelltu til að opna sjónarhorn yfir þessum iðnaði/bæ # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Nöfn stöðva - ýttu á nafn til að færa miðju sjónarhorns á stöð. Ctrl+smelltu til að opna nýtt sjónarhorn yfir þessari stöð STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Haltu CTRL inni til að velja fleiri en einn hlut STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stöð{P "" var} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ekkert - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Velja allar gerðir STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Velja allar tegundir farms (einnig þær sem ekki bíða) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Enginn farmur bíður # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Bíður: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} frá {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Tekur við STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Sýna lista yfir móttækilegan varning STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Móttekur: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Þessi stöð er með sérleyfi til flutninga í þessum bæ. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti sérleyfi til flutninga í þessum bæ. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Einkunn STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Sýna einkunn stöðvar STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Staðbundin einkunn flutningsþjónustu: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Hræðilegur STR_CARGO_RATING_VERY_POOR :Mjög glataður STR_CARGO_RATING_POOR :Glataður STR_CARGO_RATING_MEDIOCRE :Ágætur STR_CARGO_RATING_GOOD :Góður STR_CARGO_RATING_VERY_GOOD :Mjög góður STR_CARGO_RATING_EXCELLENT :Frábær STR_CARGO_RATING_OUTSTANDING :Framúrskarandi ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Færa miðju aðal sjónarhorns á staðsetningu stöðvar. Ctrl+smelltu til að opna sýnisglugga yfir þessari stöð STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Breyta nafni stöðvar STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Sýna allar lestir sem hafa þessa stöð á sinni áætlun STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Sýna allar bifreiðir sem hafa þessa stöð á sinni áætlun STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Sýna allar flugvélar sem hafa þessa stöð á sinni áætlun STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Sýna öll skip sem hafa þessa stöð á sinni áætlun STR_STATION_VIEW_RENAME_STATION_CAPTION :Endurnefna stöð/lestunarsvæði STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Loka flugvelli STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Koma í veg fyrir að flugvélar geti lent á þessum flugvelli # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Færa sjónarhorn á staðsetningu millistöðvar. Ctrl+Smelltu til að opna sýniglugg á þessa staðsetningu STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Breyta nafni á vegleiðara STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Færa sjónarhorn á staðsetningu bauju. Ctrl+Smelltu til að opna sýnisglugga á þessa staðsetningu. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Breyta nafni bauju STR_EDIT_WAYPOINT_NAME :{WHITE}Breyta nafni millistöðvar # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Fjármál {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Útgjöld/Tekjur STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Framkvæmdir STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Ný farartæki STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Rekstur lesta STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Rekstrarkostnaður bifreiða STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Rekstur flugvéla STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Rekstur skipa STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Viðhald eigna STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Tekjur lesta STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Tekjur bifreiða STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Tekjur flugvéla STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Tekjur skipa STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Vextir lána STR_FINANCES_SECTION_OTHER :{GOLD}Annað STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Summa: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bankainnistæða STR_FINANCES_LOAN_TITLE :{WHITE}Lán STR_FINANCES_MAX_LOAN :{WHITE}Hámarkslán: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Taka lán {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Auka lán. Ctrl+smella til að lána eins mikið og hægt er STR_FINANCES_REPAY_BUTTON :{BLACK}Borga lán {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Borga til baka af láni. Ctrl+smella til að borga eins mikið og hægt er STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Innviðir # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Forstjóri) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Hafið: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Litaskema: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Farartæki: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} lest{P "" ir} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} bíl{P l ar} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} flugvél{P "" ar} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} skip STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Engin STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Heildarverðmæti fyrirtækis: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% í eigu {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Innviðir: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} járnbrautarspor STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} veg{P ur ir} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} vatns reit{P ur ir} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stöðvar reit{P ur ir} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} flugv{P öllur ellir} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Engir STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Byggja HS STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Byggja höfðustöðvar fyrirtækisins STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Skoða HS STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Sjá höfuðstöðvar fyrirtækisins STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flytja HS STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Endurreisa höfuðstöðvarnar annarsstaðar fyrir 1% af verðmæti fyrirtækis. Shift sýnir áætlaðan kostnað við flutning á höfuðstöðvum STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Nánar STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Skoða nánar fjölda innviða STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nýtt Andlit STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Velja nýtt andlit á forstöðumanninn STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Litaskema STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Breyta útliti á farartækjum fyrirtækisins STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nafn fyrirtækis STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Breyta nafni fyrirtækisins STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nafn forstjóra STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Breyta nafni forstjóra STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kaupa 25% hlut í fyrirtæki STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Selja 25% hlut í fyrirtæki STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kaupa 25% hlut í þessu fyrirtæki. Shift+smella sýnir áætlaðan kostnað STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Selja 25% hlut í þessu fyrirtæki. Shift+smella sýnir áætlaðan kostnað STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nafn Fyrirtækis STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nafn forstjóra STR_BUY_COMPANY_MESSAGE :{WHITE}Við erum að leita að flutningsfyrirtæki til að taka yfir okkar rekstri.{}{}Viltu kaupa {COMPANY} fyrir {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Innviðir hjá {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Járnbrautarspor: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Umferðarmerki STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Vegir: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Vegir STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Sporvagnaspor STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Vatns reitir: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Skipaskurðir STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stöðvar: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Stöðva reitir STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Flugvellir STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG} á ári ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG} á ári # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Iðnaðir STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Enginn - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% flutt) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% flutt) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Iðnaðar nöfn - smella á nafn til að færa miðju sjónarhorns á iðnað. Ctrl+smella til að opna nýtt sjónarhorn yfir þessum iðnaði # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Framleiðsla síðasta mánaðar: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% flutt) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á iðnað. Ctrl+smelltu til að opna sýnisglugga yfir þessum iðnaði STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Framleiðsla: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Þarf: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Farmur sem bíður verkunar: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Framleiðir: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Framleiðir: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Breyta framleiðslu (margfeldi af 8, allt að 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Breyta framleiðslumagni (prósentu hámark er 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Lest{P "" ir} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Bíl{P l ar} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Skip STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Flugvél STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Lestir - smelltu á lest fyrir nánari upplýsingar STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Bifreið - smelltu á bifreið fyrir nánari upplýsingar STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Skip - smelltu fyrir nánari upplýsingar STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Flugvélar - smelltu á flugvél fyrir nánari upplýsingar STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Hagnaður þetta ár: {CURRENCY_LONG} (síðasta ár: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Lestaúrval STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Bifreiðaúrval STR_VEHICLE_LIST_AVAILABLE_SHIPS :Skipaúrval STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Flugvélaúrval STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Skoða lista yfir fáanleg farartæki af þessari gerð STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Stýra lista STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Senda boð til allra farartækja á listanum STR_VEHICLE_LIST_REPLACE_VEHICLES :Skipta út vögnum STR_VEHICLE_LIST_SEND_FOR_SERVICING :Senda í skoðun STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Senda í skýli STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Senda í skýli STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Senda í slipp STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Senda í skýli STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Smelltu til að stöðva öll farartæki á listanum STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Smelltu til að ræsa öll farartæki á listanum STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Samnýttar skipanir {COMMA} farartæk{P is ja} # Group window STR_GROUP_ALL_TRAINS :Allar lestir STR_GROUP_ALL_ROAD_VEHICLES :Allar bifreiðir STR_GROUP_ALL_SHIPS :Öll skip STR_GROUP_ALL_AIRCRAFTS :Allar flugvélar STR_GROUP_DEFAULT_TRAINS :Hóplausar lestir STR_GROUP_DEFAULT_ROAD_VEHICLES :Hóplausar bifreiðir STR_GROUP_DEFAULT_SHIPS :Hóplaus skip STR_GROUP_DEFAULT_AIRCRAFTS :Hóplausar flugvélar STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Hópar - Smelltu á hóp til að skrifa öll farartæki í þessum hóp STR_GROUP_CREATE_TOOLTIP :{BLACK}Smelltu til að búa til hóp STR_GROUP_DELETE_TOOLTIP :{BLACK}Eyða völdum hóp STR_GROUP_RENAME_TOOLTIP :{BLACK}Endurnefna valinn hóp STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Smelltu til að halda þessum hóp frá sjálfvirkri uppfærslu STR_GROUP_ADD_SHARED_VEHICLE :Bæta við deildu farartæki STR_GROUP_REMOVE_ALL_VEHICLES :Fjarlægja öll farartæki STR_GROUP_RENAME_CAPTION :{BLACK}Endurnefna hóp # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Lestaúrval STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nýjir rafdrifnir lestarvagnar STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nýir einteinungsvagnar STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nýir segulsvifvagnar STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Ný járnbrautarlest STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Bifreiðaúrval STR_BUY_VEHICLE_SHIP_CAPTION :Skipaúrval STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Flugvélaúrval STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Verð: {GOLD}{CURRENCY_LONG}{BLACK} Þyngd: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hámarkshraði: {GOLD}{VELOCITY}{BLACK} Afl: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hraði: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hraði á sjó: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Hraði í skipaskurðum/ám: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Rekstrarkostnaður: {GOLD}{CURRENCY_LONG} á ári STR_PURCHASE_INFO_CAPACITY :{BLACK}Burðargeta: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(breytanlegt) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Hönnun: {GOLD}{NUM}{BLACK} Endingartími: {GOLD}{COMMA} ár STR_PURCHASE_INFO_RELIABILITY :{BLACK}Hámarks áreiðanleiki: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Verð: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Þyngd: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Verð: {GOLD}{CURRENCY_LONG}{BLACK} Hámarkshraði: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Burðargeta: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Drifvagnar: {GOLD}+{POWER}{BLACK} Þyngd: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Hægt að breyta farmi í: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Allar tegundir farms STR_PURCHASE_INFO_ALL_BUT :Allt nema {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Hámarks togkrafur: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Drægni: {GOLD}{COMMA} reitir STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lestarlisti - smelltu á farartæki fyrir meiri upplýsingar STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Bifreiðalisti - ýttu á bifreið fyrir nánari upplýsingar STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Skipalisti - smelltu á skip fyrir nánari upplýsingar STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugvélalisti - smelltu á flugvél fyrir nánari upplýsingar STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kaupa vagn STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kaupa bifreið STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kaupa skip STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kaupa flugvél STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valinn lestarvagn. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valda bifreið. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valið skip. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kaupa valda flugvél. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Endurnefna STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Endurnefna STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Endurnefna STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Endurnefna STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Endurnefna lestarvagnstegund STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Endurnefna tegund bifreiðar STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Endurnefna skipategund STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Endurnefna tegund flugvélar STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Endurskíra lestargerð STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Endurnefna tegund bifreiðar STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Endurnefna skipategund STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Endurnefna tegund flugvélar # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Breyta nafni skýlis STR_DEPOT_RENAME_DEPOT_CAPTION :Endurnefna skýli STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} farartæki{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Lestir - dragðu farartæki til að bæta við/fjarlægja úr lest, hægri smelltu fyrir upplýsingar. Haltu inni Ctrl til að láta aðgerðina virka á eftirfarandi keðju STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Bifreið - hægri-smelltu á bifreið fyrir upplýsingar STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Skip - hægrismelltu á skip fyrir nánari upplýsingar STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugvélar - smelltu á flugvél fyrir nánari upplýsingar STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Dragðu lestarvagn hingað til að selja hann STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Dragðu bifreið hingað til að selja hana STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Dragðu skip hingað til að selja það STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Dragðu flugvél hingað til að selja hana STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Dragðu eimreið hingað til að selja alla lestina STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Selja allar lestir í skýli STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Selja allar bifreiðar í skýli STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Selja öll skip í slippi STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Selja allar flugvélar í skýli STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Skipta öllum lestum í skýlinu sjálfvirkt út STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Skipta öllum bifreiðum í skýlinu sjálfvirkt út STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Skipta öllum skipum í slippnum sjálfvirkt út STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Skipta öllum flugvélum í skýlinu sjálfvirkt út STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Kaupa lest STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Kaupa bifreið STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Kaupa skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Kaupa flugvél STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kaupa nýja lest STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Kaupa nýja bifreið STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Kaupa nýtt skip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Kaupa nýja flugvél STR_DEPOT_CLONE_TRAIN :{BLACK}Afrita lest STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Afrita bifreið STR_DEPOT_CLONE_SHIP :{BLACK}Afrita skip STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Afrita flugvél STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Þetta býr til aðra alveg eins lest að tengivögnunum meðtöldum. Smelltu á takkann og svo á lestina, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Þetta býr til aðra alveg eins bifreið. Smelltu á takkann og svo á bifreiðina, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella til að sýna áætlaðan kostnað án þess að kaupa STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Þetta býr til annað alveg eins skip. Smelltu á takkann og svo á skipið, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Þetta býr til aðra alveg eins flugvél. Smelltu á takkann og svo á flugvélina, hvort heldur sem er innan eða utan skýlisins. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Miðstilla sjónarhorn á staðsetningu lestarskýlis. Ctrl+smella til að opna sýnisglugga á staðsetningu lestarskýlis STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á bifreiðaskýli. Ctrl smelltu til að opna sýnisglugga yfir staðsetningu bifreiðaskýlis STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á slipp Ctrl smelltu til að opna sýnisglugga yfir staðsetningu slipps STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á flugskýli. Ctrl smelltu til að opna sýnisglugga yfir staðsetningu flugskýlis STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Fá lista yfir allar lestir sem hafa þetta skýli í sinni skipun STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Fá lista yfir allar bifreiðir sem hafa þetta skýli í sinni skipun STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Fá lista yfir öll skip sem hafa þennan slipp í sinni skipun STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Fá lista yfir allar flugvélar sem hafa flugskýli á þessum velli í sinni skipun STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Smelltu til að stöðva allar lestir í skýlinu STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Smelltu til að stöðva allar bifreiðar í skýlinu STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Smelltu til að stöðva öll skip í slippnum STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Smelltu til að stöðva allar flugvélar í flugskýlinu STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Smelltu til að ræsa allar lestir í skýlinu STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Smelltu til að ræsa allar bifreiðar í skýlinu STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Smelltu til að ræsa öll skip í slippnum STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Smelltu til að ræsa allar flugvélar í flugskýlinu STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Þú ert í þann mund að selja öll farartækin. Viltu halda áfram? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Skilaboð frá farartækisframleiðanda STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Við höfum hannað nýja {STRING} - hefðir þú áhuga á árs einkaleyfi á notkun þessa farartækis, svo að við getum athugað frammistöðu þess? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lest STR_ENGINE_PREVIEW_ROAD_VEHICLE :bifreið STR_ENGINE_PREVIEW_AIRCRAFT :flugvél STR_ENGINE_PREVIEW_SHIP :sjóferju STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :einteinungs eimreið STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Segulsvifvagn STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Verð: {CURRENCY_LONG} Þyngd: {WEIGHT_SHORT}{}Hraði: {VELOCITY} Afl: {POWER}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári{}Burðargeta: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Verð: {CURRENCY_LONG} Þyngd: {WEIGHT_SHORT}{}Hámarskhraði: {VELOCITY} Afl: {POWER} Hámarks kraftur: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/ári{}Burðargeta: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}, {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY} Drægni: {COMMA} reitir{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Rekstrarkosnaður: {CURRENCY_LONG} á ári STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY} Drægni: {COMMA} reitir{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Endurnýja {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Lest STR_REPLACE_VEHICLE_ROAD_VEHICLE :Bifreið STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Flugvél STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Veldu vagntegund til að skipta út STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velja vagntegund sem þú myndir vilja nota í staðin fyrir vagntegundina sem valinn er vinstra megin STR_REPLACE_VEHICLES_START :{BLACK}Hefja skipti STR_REPLACE_VEHICLES_NOW :Skipta út öllum farartækjum STR_REPLACE_VEHICLES_WHEN_OLD :Skipta út gömlum farartækjum STR_REPLACE_HELP_START_BUTTON :{BLACK}Smelltu til að hefja skipti á vagntegundinni sem valin er til vinstri með vagntegundinni sem valin er til hægri STR_REPLACE_NOT_REPLACING :{BLACK}Skipti ekki STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Enginn vagn valinn STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} ef gömul STR_REPLACE_VEHICLES_STOP :{BLACK}Stöðva skipti STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Smelltu til að stöðva skipti á vagntegundinni sem valin er vinstra megin STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Skipti út: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skipta á milli útskiptiglugga dráttar- og flutningavagna STR_REPLACE_ENGINES :Dráttarvagnar STR_REPLACE_WAGONS :Vagnar STR_REPLACE_HELP_RAILTYPE :{BLACK}Veldu hvaða tegund lesta það er sem þú vilt skipta út STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Sýnir hvaða vagn kemur í stað þess sem valinn er vinstra megin STR_REPLACE_RAIL_VEHICLES :Járnbrautavagnar STR_REPLACE_ELRAIL_VEHICLES :Rafdrifnir lestarvagnar STR_REPLACE_MONORAIL_VEHICLES :Einteinungsvagnar STR_REPLACE_MAGLEV_VEHICLES :Segulsvifvagnar STR_REPLACE_REMOVE_WAGON :{BLACK}Selja lestarvagna: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Heldur lengd lestar með því að fjarlægja vagna (framan frá), ef útskipting dráttarvagna myndi lengja hana # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Miðstilla sjónarhorn á staðsetningu lestar. Ctrl+smella til að fylgja lestina í aðal sjónarhorni STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhornið á bifreið. Ctrl smelltu til að fylgja bifreiðina í aðalglugga STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á staðsetningu skips. Ctrl smelltu til að fylgja skipi í aðalglugga STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Miðja aðalsjónarhorn á flugvélina. Ctrl smelltu til að fylgja flugvél í aðalglugga STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda lest í skýli. Ctrl+smella til þjóna lestinni einungis STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda bifreið í skýli STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda skipið í slipp STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Senda flugvélina i flugskýli STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Þetta býr til aðra alveg eins lest að tengivögnunum meðtöldum. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Þetta býr til aðra alveg eins bifreið. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Þetta býr til annað alveg eins skip. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Þetta býr til aðra alveg eins flugvél. Ctrl+smella til að deila skipunum. Shift+smella sýnir áætlaðan kostnað án þess að kaupa STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Neyða lest til að halda áfram án þess að bíða eftir réttu umferðarmerki STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Breyta lest svo hún flytji annan farm STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Breyta bifreið svo hún flytji annan farm STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Breyta vöruflutningaskipum svo þau flytji annan farm STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Breyta flugvél svo hún flytji annan farm STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Breyta stefnu lestar STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Þvinga bifreið til að snúa við STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Sýna lestaskipanir. Ctrl+smella til að sjá lestaráætlun STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Sýna skipanir bifreiðar. Ctrl smelltu til að sjá áæltun bifreiðar STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Sýna skipanir skips. Ctrl smelltu til að sjá áæltun skips STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Sýna skipanir flugvélar. Ctrl smelltu til að sjá áæltun flugvélar STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna nánari upplýsingar um lest STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna upplýsingar um bifreið STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna nánari upplýsingar um skip STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Sýna nánari upplýsingar um skip STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð lestar - smelltu hér til að stöðva/ræsa lestina. Ctrl+smella til að fara á áfangastað STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð bifreiðar - smelltu hér til að stöðva/ræsa bifreið. Ctrl+Smella til að fara á áfangastað STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð skips - smelltu hér til að stöðva/ræsa skipið. Ctrl+Smella til at fara á áfangastað STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Núverandi aðgerð - smelltu hér til að stöðva/ræsa flugvél. Ctrl+Smella til at fara á áfangastað # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Ferma / Afferma STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Yfirgefur STR_VEHICLE_STATUS_CRASHED :{RED}Árekstur! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Vélarbilun STR_VEHICLE_STATUS_STOPPED :{RED}Stöðvaður STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stöðva, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ekkert afl STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Bíð eftir lausri leið STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Of langt á næst áfangastað STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Á leið til {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Engar skipanir, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Á leið til {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Á leið til {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Þjónusta í {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Stöðvuð STR_VEHICLE_COMMAND_STOPPED :{RED}Stöðvuð STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Ræst STR_VEHICLE_COMMAND_STARTED :{GREEN}Ræst # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Upplýsingar) STR_VEHICLE_NAME_BUTTON :{BLACK}Nafn STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Skýrðu lestina STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Nefna bifreið STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Nefna skip STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nefna flugvélina STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aldur: {LTBLUE}{STRING}{BLACK} Rekstrarkostnaður: {LTBLUE}{CURRENCY_LONG}/yr # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Hámarkshraði: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Hámarkshraði: {LTBLUE}{VELOCITY} {BLACK}Drægni: {LTBLUE}{COMMA} reitir STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Þyngd: {LTBLUE}{WEIGHT_SHORT} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Þyngd: {LTBLUE}{WEIGHT_SHORT} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} {BLACK}Hámarks dráttarafl.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Hagnaður í ár: {LTBLUE}{CURRENCY_LONG} (síðasta ár: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Áreiðanleiki: {LTBLUE}{COMMA}% {BLACK}Bilanir frá síðustu skoðun: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Framleiðsluár: {LTBLUE}{NUM}{BLACK} Verðgildi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Burðargeta: {LTBLUE}Engin{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Burðargeta: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Burðargeta: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Burðargeta: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Flytja inneign: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Skoðanamillibil: {LTBLUE}{COMMA}dagar{BLACK} Seinasta skoðun: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Skoðanamillibil: {LTBLUE}{COMMA}%{BLACK} Seinasta skoðun: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Lengja skoðanamillibil með 10. Ctrl smelltu til að lengja skoðanamillibilið með 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Stytta skoðanamillibil með 10. Ctrl smelltu til að sytta skoðanamillibilið með 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Velja eftir hverju þjónustu á bílnum skuli háttað STR_VEHICLE_DETAILS_DEFAULT :Sjálfgefið STR_VEHICLE_DETAILS_DAYS :Dagar STR_VEHICLE_DETAILS_PERCENT :Prósentur STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Skírðu lestina STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nefna bifreið STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nefna skip STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nefna flugvélina # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Framleitt: {LTBLUE}{NUM}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Virði: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Farmur alls (burðargeta) þessarar lestar: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Tómt STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} frá {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} frá {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Farmur STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Sýna nánari upplýsingar um núverandi farm STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Upplýsingar STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Sýna nánari upplýsingar um lestir STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Burðargeta STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Sýna burðargetu hvers farartækis STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Heildarfarmur STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Sýna heildar burðargetu lestar, raðar eftir tegund farms STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Rými: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Breyta) STR_REFIT_TITLE :{GOLD}Veldu farm sem á að flytja: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ný burðargeta: {GOLD}{CARGO_LONG}{}{BLACK}Breytingarkostnaður: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nýtt rými: {GOLD}{CARGO_LONG}{}{BLACK}Tekjur vegna endurnýjunar: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nýtt rými: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Breytingakostnaður: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nýtt rými: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Tekjur vegna endurnýjunar: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Veldu farartækið sem á að breyta. Ef dregið er með músinni er hægt að velja mörg farartæki. Smella á autt svæði velur allt farartækið. Ctrl+smella velur farartækið og röðina fyrir aftan STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Veldu hvernig farm lestin á að flytja STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Veldu tegund farms sem bifreið mun flytja STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Veldu hvernig farm skipið á að flytja STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Veldu farm sem flugvél á að flytja STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Breyta lest STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Breyta bifreið STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Breyta skipi STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Breyta flugvél STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Breyta lest svo hún flytji valinn farm STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Breyta bifreið svo hún flytji valinn farm STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Breyta skipi svo það flytji valinn farm STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Breyta flugvél svo hún flytji valinn farm # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Skipanir) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Áætlun STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Skipta yfir í áætlanasýn STR_ORDERS_LIST_TOOLTIP :{BLACK}Listi yfir skipanir - smelltu á skipun til að velja hana. Ctrl+smella færir sjónarhorn að áfangastað skipunar STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Endi skipana - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Endi sameiginlegra skipana - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Hraðleið STR_ORDER_GO_TO :Fara að STR_ORDER_GO_NON_STOP_TO :Fara sem hraðleið til STR_ORDER_GO_VIA :Fara gegnum STR_ORDER_GO_NON_STOP_VIA :Fara sem hraðleið í gegnum STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Breyta stanshegðun valinna skipana STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Fullfermi af hvaða farmi sem er STR_ORDER_DROP_LOAD_IF_POSSIBLE :Hlaða ef það er hægt STR_ORDER_DROP_FULL_LOAD_ALL :Fullhlaða öllum farmi STR_ORDER_DROP_FULL_LOAD_ANY :Fullhlaða einhverjum farmi STR_ORDER_DROP_NO_LOADING :Ekki hlaða STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Breyta fermishegðun valinna skipana STR_ORDER_TOGGLE_UNLOAD :{BLACK}Afferma allt STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Afhlaða ef tekið er við STR_ORDER_DROP_UNLOAD :Afhlaða allt STR_ORDER_DROP_TRANSFER :Flytja STR_ORDER_DROP_NO_UNLOADING :Ekki afhlaða STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Breyta hegðun affermingar valinna skipanna STR_ORDER_REFIT :{BLACK}Breyta STR_ORDER_REFIT_TOOLTIP :{BLACK}Veldu farm til að breyta í. CTRL smelltu til að fjarlægja breytiskipun STR_ORDER_REFIT_AUTO :{BLACK}Sjálfvirk breyting STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Veldu í hvaða tegund farmurinn breytist í þessari skipun. Ctrl+smella til að sleppa breytingar skipun. Sjálfvirk breyting verður bara gerð ef farartækið leyfir það STR_ORDER_DROP_REFIT_AUTO :Ákveðinn farmur STR_ORDER_DROP_REFIT_AUTO_ANY :Tiltækur farmur STR_ORDER_SERVICE :{BLACK}Skoðun STR_ORDER_DROP_GO_ALWAYS_DEPOT :Fara alltaf STR_ORDER_DROP_SERVICE_DEPOT :Þjónusta ef þarf STR_ORDER_DROP_HALT_DEPOT :Stoppa STR_ORDER_SERVICE_TOOLTIP :{BLACK}Sleppa þessarri skipun nema þörf sé á viðgerð STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Gögn farartækis sem skilyrði byggja á # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Hleðsluhlutfall STR_ORDER_CONDITIONAL_RELIABILITY :Áreiðanleiki STR_ORDER_CONDITIONAL_MAX_SPEED :Hámarkshraði STR_ORDER_CONDITIONAL_AGE :Aldur (ár) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Þarfnast þjónustu STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alltaf STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Eftir af líftíma (ár) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Samanburður gagna farartækis við gefið gildi STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :er jafnt og STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :er ekki jafnt og STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :er minna en STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :er minna en eða jafnt og STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :er stærra en STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :er stærra en eða jafnt og STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :er satt STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :er ósatt STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Gildið sem bera á við gögn farartækis STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Skrifa skal tölu til að bera saman við STR_ORDERS_SKIP_BUTTON :{BLACK}Sleppa STR_ORDERS_SKIP_TOOLTIP :{BLACK}Sleppa núverandi skipun og fara í þá næstu. CTRL + smella sleppir valdri skipun STR_ORDERS_DELETE_BUTTON :{BLACK}Eyða STR_ORDERS_DELETE_TOOLTIP :{BLACK}Eyða valdri skipun STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Eyða öllum skipunum STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Hætta að deila STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Hætta að deila skipunum. Ctrl+smella eyðir auk þess öllum skipunum hjá þessu farartæki STR_ORDERS_GO_TO_BUTTON :{BLACK}Fara að STR_ORDER_GO_TO_NEAREST_DEPOT :Fara í næsta skýli STR_ORDER_GO_TO_NEAREST_HANGAR :Fara í næsta flugskýli STR_ORDER_CONDITIONAL :Skilyrðisbundin hunsun skipana STR_ORDER_SHARE :Deila skipunum STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Skeyta inn nýrri skipun á undan valdri skipun, eða bæta við aftast á listann. Ctrl lætur skipanir 'fullhlaða einhverjum farmi', vegvísa skipanir 'ekki stöðva' og skýlis skipanir 'þjónusta'. 'Deila skipun' eða Ctrl lætur þetta farartæki deila skipunum með völdu farartæki. Smella á farartæki deilir skipunum með því farartæki. Ef skýli er í skipunum óvirkjar það sjálfvirka þjónustu á farartækinu STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Sýna öll farartæki sem deila þessari áætlun # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Fara með {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ekki stöðva á {WAYPOINT} STR_ORDER_SERVICE_AT :Skoða í STR_ORDER_SERVICE_NON_STOP_AT :Þjónusta hraðleið á STR_ORDER_NEAREST_DEPOT :næsta STR_ORDER_NEAREST_HANGAR :næsta flugskýli STR_ORDER_TRAIN_DEPOT :lestaskýli STR_ORDER_ROAD_VEHICLE_DEPOT :bifreiðaskýli STR_ORDER_SHIP_DEPOT :skipaskýli STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Breyta í {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Breyta í {STRING} og stöðva) STR_ORDER_STOP_ORDER :(Stopp) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Undanskilin) STR_ORDER_FULL_LOAD :(Fullhlaða) STR_ORDER_FULL_LOAD_ANY :(Fullhlaða einhverjum farmi) STR_ORDER_NO_LOAD :(Ekki hlaða) STR_ORDER_UNLOAD :(Afhlaða og taka farm) STR_ORDER_UNLOAD_FULL_LOAD :(Afhlaða og bíða fullhleðslu) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Afhlaða og bíða eftir hvaða fullhleðslu sem er) STR_ORDER_UNLOAD_NO_LOAD :(Afhlaða og yfirgefa tóm) STR_ORDER_TRANSFER :(Flytja og taka farm) STR_ORDER_TRANSFER_FULL_LOAD :(Flytja og bíða fullfermis) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Flytja og bíða hvaða fullfermis sem er) STR_ORDER_TRANSFER_NO_LOAD :(Flytja og yfirgefa tóm) STR_ORDER_NO_UNLOAD :(Ekki afhlaða en taka farm) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ekki afhlaða en býða fullfermis) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ekki afhlaða og bíða hvaða fullfermis sem er) STR_ORDER_NO_UNLOAD_NO_LOAD :(Hvorki afferma né ferma) STR_ORDER_AUTO_REFIT :(Breya sjálfvirkt í {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Fullhlaða og breyta sjálfvirkt í {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Fullhlaða einum farmi og breyta sjálfvirkt í {STRING}) STR_ORDER_UNLOAD_REFIT :(Afferma og taka farm með sjálfvirkni breyttni til {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Afhlaða og breyta í {STRING}, bíða svo fullfermis) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Afhlaða og breyta í {STRING}, bíða svo einhvers fullfermis) STR_ORDER_TRANSFER_REFIT :(Flytja, breyta í {STRING} og taka farm) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Flytja, breyta í {STRING} og bíða fullfermis) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Flytja, breyta í {STRING} og bíða einhvers fullfermis) STR_ORDER_NO_UNLOAD_REFIT :(Ekki afhlaða, breyta í {STRING} og taka farm) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ekki afhlaða, breyta í {STRING} og bíða fullfermis) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ekki afhlaða, breyta í {STRING} og bíða einhvers fullfermis) STR_ORDER_AUTO_REFIT_ANY :tiltækur farmur STR_ORDER_STOP_LOCATION_NEAR_END :[upphaf] STR_ORDER_STOP_LOCATION_MIDDLE :[miðja] STR_ORDER_STOP_LOCATION_FAR_END :[endir] STR_ORDER_OUT_OF_RANGE :{RED} (Of langt í næsta áfangastað) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Hoppa í skipun {COMMA} STR_ORDER_CONDITIONAL_NUM :Hoppa í skipun {COMMA} þegar {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Hoppa í skipun {COMMA} þegar {STRING} {STRING} STR_INVALID_ORDER :{RED} (Ógild Skipun) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Áætlun) STR_TIMETABLE_ORDER_VIEW :{BLACK}Skipanir STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Skipta yfir í skipanasýn STR_TIMETABLE_TOOLTIP :{BLACK}Áætlun - smelltu á skipun til að velja hana. STR_TIMETABLE_NO_TRAVEL :Engin ferðalög STR_TIMETABLE_NOT_TIMETABLEABLE :Ferðalag (sjálfvirkt; áætlað eftir næstu handvirku skipun) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Ferðalag (ekki sett í áætlun) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Ferðast með hámarkshraða {2:VELOCITY} (ekki áætlað) STR_TIMETABLE_TRAVEL_FOR :Ferðast í {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Ferðast í {STRING} með hámarkshraða {VELOCITY} STR_TIMETABLE_STAY_FOR :og bíða í {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :og ferðast í {STRING} STR_TIMETABLE_DAYS :{COMMA} dag{P "" a} STR_TIMETABLE_TICKS :{COMMA} sl{P ag ög} STR_TIMETABLE_TOTAL_TIME :{BLACK}Það mun taka {STRING} að ljúka við þessa áætlun STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Það mun að minnsta kosti taka {STRING} að ljúka við þessa áætlun (ekki allar skipanir á áætlun) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Þetta farartæki er nú þegar á réttum tíma STR_TIMETABLE_STATUS_LATE :{BLACK}Þetta farartæki er {STRING} of seint STR_TIMETABLE_STATUS_EARLY :{BLACK}Þetta farartæki er {STRING} of fljótt STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Þessi tímaáætlun er ekki hafin STR_TIMETABLE_STATUS_START_AT :{BLACK}Tímaáætlunin byrjar {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Byrjunardagsetning STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Veldu dagsetningu til að hefja notkun tímaáætlunar STR_TIMETABLE_CHANGE_TIME :{BLACK}Breyta tíma STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Breyta tímanum sem valin skipun ætti að taka STR_TIMETABLE_CLEAR_TIME :{BLACK}Hreinsa tíma STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Hreinsa tímann fyrir valda skipun STR_TIMETABLE_CHANGE_SPEED :{BLACK}Breyttu hámarkshraða STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Breyttu hámarkshraða á valdri skipun STR_TIMETABLE_CLEAR_SPEED :{BLACK}Hreinsa hámarkshraða STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Hreinsa hámarkshraða á valdri skipun STR_TIMETABLE_RESET_LATENESS :{BLACK}Endurstilla seinkunnarteljara STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Endurstilla seinkunarteljara, svo farartækið verði á réttum tíma STR_TIMETABLE_AUTOFILL :{BLACK}Skrifa sjálfvirkt STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Bæta áfangastöðum næstu ferðar sjálfvirkt við áætlunina (Ctrl+smelltu til að reyna að halda biðtímum) STR_TIMETABLE_EXPECTED :{BLACK}Væntanleg STR_TIMETABLE_SCHEDULED :{BLACK}Áætluð STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skifta á milli væntanlegs og áætlaðs STR_TIMETABLE_ARRIVAL_ABBREVIATION :K: STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Velja dagsetningu STR_DATE_SET_DATE :{BLACK}Velja dagsetningu STR_DATE_SET_DATE_TOOLTIP :{BLACK}Nota valda dagsetningu sem upphafsdag fyrir þessa tímaáætlun STR_DATE_DAY_TOOLTIP :{BLACK}Veldu dag STR_DATE_MONTH_TOOLTIP :{BLACK}Veldu mánuð STR_DATE_YEAR_TOOLTIP :{BLACK}Veldu ár # AI debug window STR_AI_DEBUG :{WHITE}Aflúsun gervigreindar/forskrifta STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nafn forskriftar STR_AI_DEBUG_SETTINGS :{BLACK}Stillingar STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Breyta stillingunum fyrir forskrift STR_AI_DEBUG_RELOAD :{BLACK}Endurhlaða gervigreind STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Stöðva gervigreindina, endurhlaða skriftunni og ræsa gervigreindina á ný STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Virkja/óvirkja pásu þegar AI skilaboð stemma við pásu texta STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Pása á: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Pása í gangi STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Þegar gerfigreindarskilboð stemma við textan fer leikurinn í pásu STR_AI_DEBUG_MATCH_CASE :{BLACK}Stemma há-/lágstafi STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Skifta á milli stemmingu á há-/lágstöfum þegar gerfigreindarskilaboð eru borin saman við pásu texta STR_AI_DEBUG_CONTINUE :{BLACK}Áfram STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Láta gerfigreind halda áfram. STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Skoða ferlisupplýsingar frá þessari gerfigreind STR_AI_GAME_SCRIPT :{BLACK}Forskrift STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Skoða forskriftar kladdann STR_ERROR_AI_NO_AI_FOUND :Engin nothæf gerfigreind fundin.{}Þetta er platgerfigreind sem gerir ekkert.{}Hægt er að ná í gerfigreindir með 'Ná í viðbætur af netinu' valmöguleikanum STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Ein af forskriftunum hrundi. Vinsamlega gerðu höfundi forskriftarinnar viðvart og sendu inn mynd af aflúsunarglugga gervigreindarinnar/forskriftarinnar STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Aflúsunargluggi gervigreindar/forskriftar er aðeins aðgengilegur á þjóni # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Stilling gervigreindar/forskriftar STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Forskriftin sem verður hlaðin í næsta leik STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Gervigreindin sem verður hlaðin í næsta leik STR_AI_CONFIG_HUMAN_PLAYER :Mennskur leikmaður STR_AI_CONFIG_RANDOM_AI :Gervigreind af handahófi STR_AI_CONFIG_NONE :(engin) STR_AI_CONFIG_MOVE_UP :{BLACK}Færa upp STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Færa valda gerfigreind upp listann STR_AI_CONFIG_MOVE_DOWN :{BLACK}Færa niður STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Færa valda gerfigreind niður listann STR_AI_CONFIG_GAMESCRIPT :{SILVER}Forskrift STR_AI_CONFIG_AI :{SILVER}Gervigreindir STR_AI_CONFIG_CHANGE :{BLACK}Veldu {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :gervigreind STR_AI_CONFIG_CHANGE_GAMESCRIPT :Forskrift STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Hlaða annarri forskrift STR_AI_CONFIG_CONFIGURE :{BLACK}Stilla STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Stilltu eiginleika forskriftar # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Mögulegar {STRING} STR_AI_LIST_CAPTION_AI :gervigreindir STR_AI_LIST_CAPTION_GAMESCRIPT :leikja forskriftir STR_AI_LIST_TOOLTIP :{BLACK}Smelltu til að velja forskrift STR_AI_LIST_AUTHOR :{LTBLUE}Höfundur: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Útgáfa: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}Vefslóð: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Í lagi STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Velja merkta forskrift STR_AI_LIST_CANCEL :{BLACK}Hætta við STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Hætta við breytingar forskriftar # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} breytur STR_AI_SETTINGS_CAPTION_AI :Gervigreindar STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Leikja forskriftar STR_AI_SETTINGS_CLOSE :{BLACK}Loka STR_AI_SETTINGS_RESET :{BLACK}Frumstilla STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Hversu mörgum dögum eftir síðustu gervigreind á að hlaða þessari (sirka): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} lesskrá (readme) fyrir {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} breytiskrá (changelog) fyrir {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} leyfi fyrir {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Skoða lesskrá STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Breytiskrá STR_TEXTFILE_VIEW_LICENCE :{BLACK}Leyfi # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kostnaður: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kostnaður: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Tekjur: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Tekjur: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Yfirfæra: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Yfirfæra: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Áætlaður kostnaður: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Áætlaðar tekjur: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Vistun er enn í gangi,{}vinsamlegast bíddu á meðan hún klárst! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Sjálfvirk vistun mistókst STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi STR_ERROR_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá STR_ERROR_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Innri villa: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bilun í vistuðum leik - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Leikur er vistaður í nýrri útgáfu STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Skrá er ekki lesanleg STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Skrá er ekki skrifanleg STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Könnun gagnaheilinda mistókst STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Leikurinn var vistaður í útgáfu án sporvagna. Allir sporvagnar hafa verið fjarlægðir # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Sköpun korts hætt...{}... ekkert hentugt bæjarstæði STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... það er enginn bær í þessu landi STR_ERROR_PNGMAP :{WHITE}Get ekki hlaðið landslagi úr PNG skrá... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... skrá ekki til staðar STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... gat ekki meðhöndlað myndsniðið. 8 eða 24 bita PNG myndir nauðsynlegar STR_ERROR_PNGMAP_MISC :{WHITE}... eitthvað fór úrskeiðis (mögulega gölluð skrá) STR_ERROR_BMPMAP :{WHITE}Get ekki hlaðið landslagi úr BMP skrá... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... gat ekki breytt myndsniði STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... myndin er of stór STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Stærð hæðarlínukorts STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ekki er mælt með því að breyta stærð grunnkorts of mikið. Viltu halda áfram? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Fann aðeins varahljóðsafn. Ef þú vilt hljóð geturðu sett þau upp með innbyggðu efnisveitunni # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Stórt skjáskot STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Skjáskotið mun vera í upplausninni {COMMA} x {COMMA} pixlum. Að taka skjáskotið gæti tekið nokkra stund, viltu halda áfram? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjámynd vistuð sem '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ekki tókst að taka skjámynd! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Skilaboð STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Skilaboð frá {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Brún kortsins STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Of nálægt brún kortsins STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Ekki nógu mikið reiðufé - þarf {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Sléttlendi nauðsynlegt STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landssvæði hallar í ranga átt STR_ERROR_CAN_T_DO_THIS :{WHITE}Get ekki gert þetta... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Verður að eyða byggingu fyrst STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Get ekki hreinsað þetta svæði... STR_ERROR_SITE_UNSUITABLE :{WHITE}... óhentugur staður STR_ERROR_ALREADY_BUILT :{WHITE}... nú þegar byggt STR_ERROR_OWNED_BY :{WHITE}... í eigu {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... svæðið er í eigu annars fyrirtækis STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... takmörkun fyrir landlagsgerð náð STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... ekki hægt að hreinsa fleiri reiti STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... ekki hægt að planta fleiri trjám STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Nafnið verður að vera sérstætt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} er fyrir STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ekki leyft á meðan leikurinn er á bið # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} bæjaryfirvöld leyfa þetta ekki STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Bæjaryfirvöld {TOWN} leyfa ekki byggingu annars flugvallar nærliggjandi bænum STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} Stjórn bæjarins hafnar leyfir fyrir flugvelli vegna hljóðmengunar STR_ERROR_BRIBE_FAILED :{WHITE}Mútunartilraun þín hefur verið uppgötvuð af héraðsrannsakanda # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Get ekki lyft landssvæði hér... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Get ekki lækkað landssvæði hér... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Ekki hægt að fletja land hér... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Framkvæmdin myndi skemma göng STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Nú þegar við sjávarmál STR_ERROR_TOO_HIGH :{WHITE}Of hátt STR_ERROR_ALREADY_LEVELLED :{WHITE}... nú þegar flatt # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ekki hægt að breyta nafni fyrirtækis... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Get ekki breytt nafni forstjóra... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... hámarksleyfi á láni er {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Ekki hægt að fá meiri pening lánaðan... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ekkert lán til að borga STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} vantar STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Getur ekki borgað lán... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Það er ekki hægt að gefa peninga sem teknir eru að láni frá bankanum... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Get ekki keypt fyrirtæki... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Ekki hægt að byggja höfuðstöðvar... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Get ekki keypt 25% hlut í þessu fyrirtæki... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Get ekki selt 25% hlut í þessu fyrirtæki... STR_ERROR_PROTECTED :{WHITE}Þetta fyrirtæki er ekki nógu gamalt til að versla með hluti ... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Get ekki stofnað nýja borg STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Get ekki endurskírt bæ... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Get ekki byggt bæ hér... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Get ekki framlengt bæ... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... of nálægt brún kortsins STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... of nálægt öðrum bæ STR_ERROR_TOO_MANY_TOWNS :{WHITE}... of margir bæir STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... það er ekkert laust svæði á kortinu STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Bærinn getur ekki lagt vegi. Því er hægt að breyta í Ítarlegar stillingar->Efnahagur->Bæir. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vegaframkvæmdir standa yfir STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Ekki hægt að eyða bæ...{}Stöð eða skýli vísar í þennan bæ eða ekki hægt að fjarlægja reit í eigu bæjarins. STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... það er enginn ákjósanlegur staður fyrir styttu í miðju þessa bæjar # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... of margir iðnaðir STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Get ekki búið til iðnað... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Get ekki byggt {STRING} hérna... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Get ekki reist þennan iðnað hér... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... of nálægt öðrum iðnaði STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... verður að byggja bæ first STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... aðeins eitt stykki á hvern bæ STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... aðeins hægt að byggja á regnskógasvæðum STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... aðeins hægt að byggja í eyðimörk STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... aðeins hægt að byggja í bæjum (skiptir út húsum) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... er aðeins hægt að byggja nálægt miðju bæja STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... aðeins hægt að byggja á láglendi STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... getur aðeins verið staðsett nálægt brún kortsins STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... skógur getur aðeins verið gróðursettur yfir snjólínu STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... er aðeins hægt að byggja fyrir ofan snælínu STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... er aðeins hægt að byggja fyrir neðan snælínu # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Get ekki byggt lestarstöð hér... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Get ekki byggt strætóstoppistöð... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Get ekki byggt flutningabílastöð... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Get ekki reist sporvagnastöð fyrir farþega... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Get ekki reist sporvagnastöð fyrir farm... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Get ekki byggt bryggju hér... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Get ekki byggt flugvöll hér... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tengist fleiri en einni annarri stöð STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stöð of dreyfð STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Of margar stöðvar/lestunarsvæði STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Of margir hlutar af lestarstöðvum STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Of margar strætisvagnastöðvar STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Of margar vörubílastöðvar STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Of nálægt annarri stöð/lestunarsvæði STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Of nálægt annarri bryggju STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Of nálægt öðrum flugvelli STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Get ekki endurnefnt stöð... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... vegurinn er í eigu bæjar STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vegurinn snýr í ranga átt STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gegnumakstursstöðvar geta ekki verið í beygjum STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gegnumakstursstöðvar geta ekki verið á gatnamótum # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Get ekki fjarlægt hluta af stöð... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Verður að fjarlægja járnbrautarstöð fyrst STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Get ekki fjarlægt strætóstoppistöð... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Get ekki flutt vörubílastöð... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Get ekki fjarlægt farþegasporvagnastöð... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Get ekki fjarlægt farmsporvagnastöð... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Verður að fjarlægja strætóstöð fyrst STR_ERROR_THERE_IS_NO_STATION :{WHITE}... það er engin lestarstöð hér STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Þarf fyrst að rífa lestarstöð STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Verður að eyða strætisvagnastöðinni fyrst STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Verður að eyða póstvagnsstöðinni fyrst STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Verður að rífa farþegasporvagnastöð fyrst STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Verður að rífa farmsporvagnastöð fyrst STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Verður að eyða bryggjunni fyrst STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Þarf fyrst að rífa flugvöll # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Liggur að fleirri en einni millistöð STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Of nálægt annari millistöð STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Get ekki byggt lestarmillistöð hér... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Get ekki sett bauju hér... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Get ekki breytt nafni millistöðvar... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Get ekki fjarlægt lestarmillistöð héðan... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Verður að fjarlægja millistöð fyrst STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... bauja fyrir STR_ERROR_BUOY_IS_IN_USE :{WHITE}... baujan er notuð af öðru fyrirtæki! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Get ekki byggt lestarskýli hér... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Get ekki fjarlægt bifreiðaskýli héðan... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Get ekki reist sporvagnaskýli hér... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Get ekki reist slipp hér... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Ekki hægt að endurnefna skýli... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... verður að vera stöðvuð í skýli STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... verður að vera stöðvað í bifreiðaskýli STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... verður að vera stöðvað í skýli STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... verður að vera stöðvuð í flugskýli STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Aðeins er hægt að eiga við lestir þegar þær bíða í skýli STR_ERROR_TRAIN_TOO_LONG :{WHITE}Lestin er of löng STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Get ekki snúið lestinni við... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... samanstendur af mörgum einingum STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Ósamstæð spor STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Get ekki fært farartæki... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Aftari dráttarvagn fylgir alltaf fremri hluta STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Get ekki fundið leit til staðbundins skýlis STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Finnur ekkert nálægt skýli STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Röng tegund skýlis # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er of löng eftir uppfærslu STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Engar reglur um sjálfvirk umskipti/endurnýjun virkar STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(takmarkað fjármagn) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómöguleg spor samsetning STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Verður að fjarlægja umferðarmerki fyrst STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ekkert hentugt járnbrautarspor STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Verður að fjarlægja járnbrautarspor fyrst STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Vegurinn er einstefnuvegur eða stíflaður STR_ERROR_CROSSING_DISALLOWED :{WHITE}Gatnamót ekki leyfð fyrir þessa tegund járnbrautarspora STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Get ekki byggt umferðarmerki hér... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Get ekki byggt járnbrautarspor hér... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Get ekki fjarlægt járnbrautarspor héðan... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Get ekki fjarlægt umferðarmerki héðan... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Get ekki breytt umferðarmerkjum hér... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... það er ekkert járnbrautarspor STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... það eru engin umferðarmerki STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Get ekki breytt spori... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Verður að fjarlægja veg fyrst STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... einstefnuvegin geta ekki mætt öðrum vegi STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Get ekki lagt veg hér... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Get ekki lagt sporvagnaspor hér... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Get ekki fjarlægt veg héðan... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Get ekki fjarlægt sporvagnaspor héðan... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... það er enginn vegur STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... það er ekkert sporvagnaspor # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Ekki hægt að grafa skipaskurð hér... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ekki hægt að gera skurðgátt hér STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ekki hægt að setja ár hér... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... verður að byggjast á vatni STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Get ekki byggt á vatni STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... ekki hægt að byggja á opnu hafi STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... ekki hægt að byggja á skipaskurðum STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ekki hægt að byggja á ám STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Verður að fylla upp í skipaskurð fyrst STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ekki hægt að byggja vatnsleyðslu hér... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... hér er nú þegar tré STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... vitlaus landslagsgerð fyrir þessa gerð af tré STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Ekki hægt að gróðursetja tré hér... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Get ekki reist brú hér... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Verður að eyða brú fyrst STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Getur ekki byrjað og endað á sama stað STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brúarendar ekki í sömu hæð STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brú er of lág fyrir umhverfið STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Verður að byrja og enda í sömu línu STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... báðir endar brúarinnar verða að vera á landi STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... of löng brú STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Brúin myndi enda fyrir utan kortið # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Get ekki grafið göng hér... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Óhentug staðsetning fyrir enda gangnanna STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Verður að eyða göngum fyrst STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Önnur göng fyrir STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Göng myndu enda utan korts STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Get ekki breytt landi fyrir hinn enda gangnanna STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... göngin of long # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... of margir hlutir STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Get ekki byggt hlut... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Hlutur er fyrir STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... höfuðstöðvar fyrirtækis eru fyrir STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Þú getur ekki keypt þetta land... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... þú átt það nú þegar! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Get ekki búið til hóp... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Get ekki eytt þessum hópi... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Get ekki endurnefnt hóp... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Get ekki fjarlægt öll farartæki úr þessum hóp... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Get ekki bætt farartækinu við þennan hóp... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Get ekki bætt við deildu farartæki við hóp... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Lest fyrir STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Bíll fyrir STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip er fyrir STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Flugvél er fyrir STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Get ekki breytt lest... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Get ekki breytt bifreið... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Get ekki breytt skipi... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Get ekki breytt flugvél... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Get ekki skírt lest... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Get ekki nefnt bifreið... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Get ekki nefnt skip... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Get ekki nefnt flugvélina... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Get ekki ræst/stöðva lest... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Get ekki stöðvað/ræst bifreið... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Get ekki stöðvað/ræst skip... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Get ekki stöðvað/ræst flugvél... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Get ekki sent lest í skýli... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Get ekki sent bifreið í skýli... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Get ekki sent skip í slipp... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Get ekki sent flugvél í flugskýli... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Get ekki byggt lest... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Get ekki byggt bíl... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Get ekki keypt skip... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Get ekki keypt flugvél... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Get ekki endurskírt lestargerð... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Get ekki endurnefnat tegund bifreiðar... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Get ekki endurnefnt skipategund... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Get ekki endurnefnt tegund flugvélarinnar... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Get ekki selt lest... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Get ekki selt bifreið... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Get ekki selt skip... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Get ekki selt flugvélina... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Lestarvagn er ekki fáanlegur STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Bifreið er ekki fáanleg STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skip er ekki fáanlegt STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Flugvél er ekki fáanleg STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Of mörg farartæki í leiknum STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Get ekki breytt viðgerðarmillibili... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... ökutæki er eyðilagt STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Engin farartæki verða í boði STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Breyta NewGRF stillingunum þínum # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Get ekki látið lest fara framhjá hættumerki... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Get ekki snúið lest við... STR_ERROR_TRAIN_START_NO_POWER :Lestin hefur ekkert afl STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Get ekki snúið bifreiðinni við... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}flugvélin er á flugi # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ekki pláss fyrir fleiri skipanir STR_ERROR_TOO_MANY_ORDERS :{WHITE}Of margar skipanir STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Get ekki bætt við nýrri skipun... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Get ekki eytt þessari skipun... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Get ekki breytt þessari skipun... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Get ekki fært þessa skipun... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Get ekki sleppt núverandi skipun... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Get ekki hoppað í valda skipun... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... farartæki getur ekki farið á allar stöðvar STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... farartæki getur ekki farið á þessa stöð STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... farartæki sem deilir þessum skipunum getur ekki farið á þessa stöð STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Get ekki deilt skipana lista... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Get ekki hætt að deila skipun... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Get ekki afritað skipana lista... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... of langt frá fyrri stað STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... flugvél hefur ekki næga drægni # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Get ekki gert áætlun farartækis... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Farartæki getur aðeins beðið við stöð STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Þetta farartæki mun ekki stoppa við þessa stöð # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... of mörg skilti STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Ekki hægt að setja tré hér... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Get ekki breytt nafni skiltis... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ekki hægt að eyða skilti... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe eftirherma # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgáfunni. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýsku) útgáfunni. STR_BASEGRAPHICS_WIN_DESCRIPTION :Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni. STR_BASESOUNDS_DOS_DESCRIPTION :Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útgáfunni. STR_BASESOUNDS_WIN_DESCRIPTION :Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni. STR_BASESOUNDS_NONE_DESCRIPTION :Hljóðpakki án hljóðs. STR_BASEMUSIC_WIN_DESCRIPTION :Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni. STR_BASEMUSIC_NONE_DESCRIPTION :Tónlistarpakki sem er í raun án tónlistar. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Há skrifstofubygging STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Skrifstofubygging STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Lítil íbúðarbygging STR_TOWN_BUILDING_NAME_CHURCH_1 :Kirkja STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Stór skrifstofubygging STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Íbúarhús STR_TOWN_BUILDING_NAME_HOTEL_1 :Hótel STR_TOWN_BUILDING_NAME_STATUE_1 :Stytta STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Gosbrunnur STR_TOWN_BUILDING_NAME_PARK_1 :Almenningsgarður STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Skrifstofubygging STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Verslanir og skrifstofur STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Nútímaleg skrifstofubygging STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Vöruskemma STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Skrifstofubygging STR_TOWN_BUILDING_NAME_STADIUM_1 :Leikvangur STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Gömul hús STR_TOWN_BUILDING_NAME_COTTAGES_1 :Einbýlishús STR_TOWN_BUILDING_NAME_HOUSES_1 :Hús STR_TOWN_BUILDING_NAME_FLATS_1 :Íbúðir STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Há skrifstofubygging STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Verslanir og skrifstofur STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Verslanir og skrifstofur STR_TOWN_BUILDING_NAME_THEATER_1 :Leikhús STR_TOWN_BUILDING_NAME_STADIUM_2 :Leikvangur STR_TOWN_BUILDING_NAME_OFFICES_1 :Skrifstofur STR_TOWN_BUILDING_NAME_HOUSES_2 :Hús STR_TOWN_BUILDING_NAME_CINEMA_1 :Kvikmyndahús STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Verslunarmiðstöð STR_TOWN_BUILDING_NAME_IGLOO_1 :Snjóhús STR_TOWN_BUILDING_NAME_TEPEES_1 :Indíánatjald STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Teketilshús STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Svínabanki ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Kolanáma STR_INDUSTRY_NAME_POWER_STATION :Rafmagnsstöð STR_INDUSTRY_NAME_SAWMILL :Timburverksmiðja STR_INDUSTRY_NAME_FOREST :Skógur STR_INDUSTRY_NAME_OIL_REFINERY :Olíuhreinsunarstöð STR_INDUSTRY_NAME_OIL_RIG :Olíuborpallur STR_INDUSTRY_NAME_FACTORY :Verksmiðja STR_INDUSTRY_NAME_PRINTING_WORKS :Prentsmiðja STR_INDUSTRY_NAME_STEEL_MILL :Stálbræðsla STR_INDUSTRY_NAME_FARM :Bóndabýli STR_INDUSTRY_NAME_COPPER_ORE_MINE :Koparnáma STR_INDUSTRY_NAME_OIL_WELLS :Olíulindir STR_INDUSTRY_NAME_BANK :Banki STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Matvælaframleiðsla STR_INDUSTRY_NAME_PAPER_MILL :Pappírsverksmiðja STR_INDUSTRY_NAME_GOLD_MINE :Gullnáma STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banki STR_INDUSTRY_NAME_DIAMOND_MINE :Demantanáma STR_INDUSTRY_NAME_IRON_ORE_MINE :Járnnáma STR_INDUSTRY_NAME_FRUIT_PLANTATION :Ávaxtaplantekra STR_INDUSTRY_NAME_RUBBER_PLANTATION :Gúmmíplantekra STR_INDUSTRY_NAME_WATER_SUPPLY :Vatnsbyrgi STR_INDUSTRY_NAME_WATER_TOWER :Vatnsturn STR_INDUSTRY_NAME_FACTORY_2 :Verksmiðja STR_INDUSTRY_NAME_FARM_2 :Bóndabýli STR_INDUSTRY_NAME_LUMBER_MILL :Timburverksmiðja STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Sykurfrauðsskógur STR_INDUSTRY_NAME_CANDY_FACTORY :Sælgætisverksmiðja STR_INDUSTRY_NAME_BATTERY_FARM :Rafhlöðubýli STR_INDUSTRY_NAME_COLA_WELLS :Kólalindir STR_INDUSTRY_NAME_TOY_SHOP :Leikfangabúð STR_INDUSTRY_NAME_TOY_FACTORY :Leikfangaverksmiðja STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plastbrunnar STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Gosdrykkjaverksmiðja STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Kúluframleiðsla STR_INDUSTRY_NAME_TOFFEE_QUARRY :Karamellunáma STR_INDUSTRY_NAME_SUGAR_MINE :Sykurnáma ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Ónefnt STR_SV_TRAIN_NAME :Lest {COMMA} STR_SV_ROAD_VEHICLE_NAME :Bifreið {COMMA} STR_SV_SHIP_NAME :Skip {COMMA} STR_SV_AIRCRAFT_NAME :Flugvél {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Norður STR_SV_STNAME_SOUTH :{STRING} Suður STR_SV_STNAME_EAST :{STRING} Austur STR_SV_STNAME_WEST :{STRING} Vestur STR_SV_STNAME_CENTRAL :{STRING} Miðstöð STR_SV_STNAME_TRANSFER :{STRING} Flutningur STR_SV_STNAME_HALT :{STRING} Stans STR_SV_STNAME_VALLEY :{STRING} Dalir STR_SV_STNAME_HEIGHTS :{STRING} Hæðir STR_SV_STNAME_WOODS :{STRING} Skógar STR_SV_STNAME_LAKESIDE :{STRING} Lækjarbakki STR_SV_STNAME_EXCHANGE :{STRING} Skipti STR_SV_STNAME_AIRPORT :{STRING} Flugvöllur STR_SV_STNAME_OILFIELD :{STRING} Olíulendi STR_SV_STNAME_MINES :{STRING} Náma STR_SV_STNAME_DOCKS :{STRING} Höfn STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Annáll STR_SV_STNAME_SIDINGS :{STRING} Hliðrun STR_SV_STNAME_BRANCH :{STRING} Grein STR_SV_STNAME_UPPER :Efri {STRING} STR_SV_STNAME_LOWER :Neðri {STRING} STR_SV_STNAME_HELIPORT :{STRING} Þyrlupallur STR_SV_STNAME_FOREST :{STRING} Skógur STR_SV_STNAME_FALLBACK :{STRING} Stöð #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Gufu) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Dísel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Dísel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Gufu) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Gufu) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Gufu) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Gufu) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Dísel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Rafmagns) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Fólks STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Póstvagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Kola Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Olíu Tankur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Búfénaðsvagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Vöruvagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Korn Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Viðar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Járn Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stál Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Brynvarinn Vagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Matarvagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Pappírs Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Kopar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vatns Tankur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Ávaxta Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Gúmmi Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sykur Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Kandífloss Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Karamellu Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Sápukúluvagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Kók Tankur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Sætindavagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Dótavagn STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Rafhlöðu Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Fizzy Drykkja Pallur STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plast Pallur STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Fólks bifreið STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Póst geymsl STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Kola trukkure STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Olíu Tankur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Búfénaðsvagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Vöruvagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Korn Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Viðar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Járn Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stál Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Brynvarin Vagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Matarvagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Pappírs Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Kopar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Vatns Tankur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Ávaxta Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Gúmmí Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sykur Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Kandífloss Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Karamellu Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Sápukúluvagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Kók Tankur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Sælgætisvagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Leikfangavagn STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Rafhlöðu Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Fizzy Drykkjar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plast Pallur STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Rafmagns) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Fólks Bifreið STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Póstvagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kola Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olíu Tankur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Búfénaðsvagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Vöruvagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Korn Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Viðar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Járn Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stál Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Brynvarin Vagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Matarvagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Pappírs Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Kopar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Vatns Tankur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Ávaxta Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Gúmmí Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sykur Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Kandífloss Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Karamellu Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Sápukúluvagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Kók Tankur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Sælgætisvagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Leikfangavagn STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Rafhlöðu Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Fizzy Drykkjar Pallur STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plast Pallur STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Strætó STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Strætó STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Strætó STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Ofurstrætó STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Strætó STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Strætó STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Strætó STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kolabíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kolabíll STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kolabíll STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Póstbíll STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Póstbíll STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Póstbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Póstbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Póstbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Póstbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Olíubíll STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Olíubíll STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Olíubíll STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott búfénaðsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl búfénaðsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster búfénaðsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Vöruflutningabíll STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Vöruflutningabíll STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Vöruflutningabíll STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Kornbíll STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Kornbíll STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Kornbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Viðarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Viðarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Viðarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Járngrýtisbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Járngrýtisbíll STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Járngrýtisbíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Stálbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Stálbíll STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Stálbíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh Brynvarinn Bíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl Brynvarinn Bíll STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster Brynvarinn Bíll STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Matarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Matarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Matarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Pappírsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Pappírsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Pappírsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Koparbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Koparbíll STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Koparbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Vatnsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Vatnsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Vatnsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Vatnsbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Ávaxtabíll STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Ávaxtabíll STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Gúmmíbíll STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Gúmmíbíll STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Gúmmíbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sykurbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sykurbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sykurbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Kóladrykkjarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Kóladrykkjabíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Kóladrykkjarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Kandíflossbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Kandíflossbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Kandíflossbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Karamellubíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Karamellubíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Karamellubíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Leikfangabíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Leikfangabíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Leikfangabíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Sælgætisbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Sælgætisbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Sælgætisbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Rafhlöðubíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Rafhlöðubíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Rafhlöðubíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Fizzy Drykkjarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Fizzy Drykkjarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Fizzy Drykkjarbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plastbíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plastbíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plastbíll STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Sápukúlubíll STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Sápukúlubíll STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Sápukúlubíll STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Olíuskip STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Olíuskip STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Farþegaferja STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Farþegaferja STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Svifnökkvi STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Farþegaferja STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Farþegaferja STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Farmskip STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Farmskip STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Farmskip STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Farmskip STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Skutla STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Ofurpíla 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Þyrla STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Þyrla STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Þyrla ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Bauja STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Bauja #{COMMA} STR_FORMAT_COMPANY_NUM :(Fyrirtæki {COMMA}) STR_FORMAT_GROUP_NAME :Hópur {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Millistöð {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Millistöð {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Lestarskýli STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Lestarskýli #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Bifreiðamiðstöð STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Bifreiðamiðstöð #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Slippur STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Slippur #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Flugskýli STR_UNKNOWN_STATION :óþekkt stöð STR_DEFAULT_SIGN_NAME :Skilti STR_COMPANY_SOMEONE :einhver STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Áhorfandi, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/slovenian.txt0000644000000000000000000146405412246102561016155 0ustar rootroot##name Slovenian ##ownname Slovenščina ##isocode sl_SI ##plural 8 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0424 ##grflangid 0x2c ##case r d t # $Id: slovenian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nedoločen niz) STR_JUST_NOTHING :Nič # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Potniki STR_CARGO_PLURAL_PASSENGERS.r :Potnikov STR_CARGO_PLURAL_PASSENGERS.d :Potnikom STR_CARGO_PLURAL_PASSENGERS.t :Potnike STR_CARGO_PLURAL_COAL :Premog STR_CARGO_PLURAL_COAL.r :Premoga STR_CARGO_PLURAL_COAL.d :Premogu STR_CARGO_PLURAL_MAIL :Pošta STR_CARGO_PLURAL_MAIL.r :Pošte STR_CARGO_PLURAL_MAIL.d :Pošti STR_CARGO_PLURAL_MAIL.t :Pošto STR_CARGO_PLURAL_OIL :Nafta STR_CARGO_PLURAL_OIL.r :Nafte STR_CARGO_PLURAL_OIL.d :Nafti STR_CARGO_PLURAL_OIL.t :Nafto STR_CARGO_PLURAL_LIVESTOCK :Živina STR_CARGO_PLURAL_LIVESTOCK.r :Živine STR_CARGO_PLURAL_LIVESTOCK.d :Živini STR_CARGO_PLURAL_LIVESTOCK.t :Živino STR_CARGO_PLURAL_GOODS :Izdelki STR_CARGO_PLURAL_GOODS.r :Izdelkov STR_CARGO_PLURAL_GOODS.d :Izdelkom STR_CARGO_PLURAL_GOODS.t :Izdelke STR_CARGO_PLURAL_GRAIN :Žito STR_CARGO_PLURAL_GRAIN.r :Žita STR_CARGO_PLURAL_GRAIN.d :Žitu STR_CARGO_PLURAL_WOOD :Les STR_CARGO_PLURAL_WOOD.r :Lesa STR_CARGO_PLURAL_WOOD.d :Lesu STR_CARGO_PLURAL_IRON_ORE :Železova ruda STR_CARGO_PLURAL_IRON_ORE.r :Železove rude STR_CARGO_PLURAL_IRON_ORE.d :Železovi rudi STR_CARGO_PLURAL_IRON_ORE.t :Železovo rudo STR_CARGO_PLURAL_STEEL :Jeklo STR_CARGO_PLURAL_STEEL.r :Jekla STR_CARGO_PLURAL_STEEL.d :Jeklu STR_CARGO_PLURAL_VALUABLES :Vrednosti STR_CARGO_PLURAL_COPPER_ORE :Bakrova ruda STR_CARGO_PLURAL_COPPER_ORE.r :Bakrove rude STR_CARGO_PLURAL_COPPER_ORE.d :Bakrovi rudi STR_CARGO_PLURAL_COPPER_ORE.t :Bakrovo rudo STR_CARGO_PLURAL_MAIZE :Koruza STR_CARGO_PLURAL_MAIZE.r :Koruze STR_CARGO_PLURAL_MAIZE.d :Koruzi STR_CARGO_PLURAL_MAIZE.t :Koruzo STR_CARGO_PLURAL_FRUIT :Sadje STR_CARGO_PLURAL_FRUIT.r :Sadja STR_CARGO_PLURAL_FRUIT.d :Sadju STR_CARGO_PLURAL_DIAMONDS :Diamanti STR_CARGO_PLURAL_DIAMONDS.r :Diamantov STR_CARGO_PLURAL_DIAMONDS.d :Diamantom STR_CARGO_PLURAL_DIAMONDS.t :Diamante STR_CARGO_PLURAL_FOOD :Hrana STR_CARGO_PLURAL_FOOD.r :Hrane STR_CARGO_PLURAL_FOOD.d :Hrani STR_CARGO_PLURAL_FOOD.t :Hrano STR_CARGO_PLURAL_PAPER :Papir STR_CARGO_PLURAL_PAPER.r :Papirja STR_CARGO_PLURAL_PAPER.d :Papirju STR_CARGO_PLURAL_GOLD :Zlato STR_CARGO_PLURAL_GOLD.r :Zlata STR_CARGO_PLURAL_GOLD.d :Zlatu STR_CARGO_PLURAL_WATER :Voda STR_CARGO_PLURAL_WATER.r :Vode STR_CARGO_PLURAL_WATER.d :Vodi STR_CARGO_PLURAL_WATER.t :Vodo STR_CARGO_PLURAL_WHEAT :Pšenica STR_CARGO_PLURAL_WHEAT.r :Pšenice STR_CARGO_PLURAL_WHEAT.d :Pšenici STR_CARGO_PLURAL_WHEAT.t :Pšenico STR_CARGO_PLURAL_RUBBER :Kavčuk STR_CARGO_PLURAL_RUBBER.r :Kavčuka STR_CARGO_PLURAL_RUBBER.d :Kavčuku STR_CARGO_PLURAL_SUGAR :Sladkor STR_CARGO_PLURAL_SUGAR.r :Sladkorja STR_CARGO_PLURAL_SUGAR.d :Sladkorju STR_CARGO_PLURAL_TOYS :Igrače STR_CARGO_PLURAL_TOYS.r :Igrač STR_CARGO_PLURAL_TOYS.d :Igračam STR_CARGO_PLURAL_CANDY :Sladkarije STR_CARGO_PLURAL_CANDY.r :Sladkarij STR_CARGO_PLURAL_CANDY.d :Sladkarijam STR_CARGO_PLURAL_COLA :Cockta STR_CARGO_PLURAL_COLA.r :Cockte STR_CARGO_PLURAL_COLA.d :Cockti STR_CARGO_PLURAL_COTTON_CANDY :Sladkorna pena STR_CARGO_PLURAL_COTTON_CANDY.r :Sladkorne pene STR_CARGO_PLURAL_COTTON_CANDY.d :Sladkorni peni STR_CARGO_PLURAL_COTTON_CANDY.t :Sladkorno peno STR_CARGO_PLURAL_BUBBLES :Mehurčki STR_CARGO_PLURAL_BUBBLES.r :Mehurčkov STR_CARGO_PLURAL_BUBBLES.d :Mehurčkom STR_CARGO_PLURAL_BUBBLES.t :Mehurčke STR_CARGO_PLURAL_TOFFEE :Karamela STR_CARGO_PLURAL_TOFFEE.r :Karamele STR_CARGO_PLURAL_TOFFEE.d :Karameli STR_CARGO_PLURAL_TOFFEE.t :Karamelo STR_CARGO_PLURAL_BATTERIES :Baterije STR_CARGO_PLURAL_BATTERIES.r :Baterij STR_CARGO_PLURAL_BATTERIES.d :Baterijam STR_CARGO_PLURAL_PLASTIC :Plastika STR_CARGO_PLURAL_PLASTIC.r :Plastike STR_CARGO_PLURAL_PLASTIC.d :Plastiki STR_CARGO_PLURAL_PLASTIC.t :Plastiko STR_CARGO_PLURAL_FIZZY_DRINKS :Gazirane pijače STR_CARGO_PLURAL_FIZZY_DRINKS.r :Gaziranih pijač STR_CARGO_PLURAL_FIZZY_DRINKS.d :Gaziranim pijačam # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Potnik STR_CARGO_SINGULAR_PASSENGER.r :Potnikov STR_CARGO_SINGULAR_PASSENGER.d :Potnikom STR_CARGO_SINGULAR_PASSENGER.t :Potnike STR_CARGO_SINGULAR_COAL :Premog STR_CARGO_SINGULAR_COAL.r :Premoga STR_CARGO_SINGULAR_COAL.d :Premogu STR_CARGO_SINGULAR_MAIL :Pošta STR_CARGO_SINGULAR_MAIL.r :Pošte STR_CARGO_SINGULAR_MAIL.d :Pošti STR_CARGO_SINGULAR_MAIL.t :Pošto STR_CARGO_SINGULAR_OIL :Nafta STR_CARGO_SINGULAR_OIL.r :Nafte STR_CARGO_SINGULAR_OIL.d :Nafti STR_CARGO_SINGULAR_OIL.t :Nafto STR_CARGO_SINGULAR_LIVESTOCK :Živina STR_CARGO_SINGULAR_LIVESTOCK.r :Živine STR_CARGO_SINGULAR_LIVESTOCK.d :Živini STR_CARGO_SINGULAR_LIVESTOCK.t :Živino STR_CARGO_SINGULAR_GOODS :Izdelki STR_CARGO_SINGULAR_GRAIN :Žito STR_CARGO_SINGULAR_GRAIN.r :Žita STR_CARGO_SINGULAR_GRAIN.d :Žitu STR_CARGO_SINGULAR_WOOD :Les STR_CARGO_SINGULAR_WOOD.r :Lesa STR_CARGO_SINGULAR_WOOD.d :Lesu STR_CARGO_SINGULAR_IRON_ORE :Železova ruda STR_CARGO_SINGULAR_IRON_ORE.r :Železove rude STR_CARGO_SINGULAR_IRON_ORE.d :Železovi rudi STR_CARGO_SINGULAR_IRON_ORE.t :Železovo rudo STR_CARGO_SINGULAR_STEEL :Jeklo STR_CARGO_SINGULAR_STEEL.r :Jekla STR_CARGO_SINGULAR_STEEL.d :Jeklu STR_CARGO_SINGULAR_VALUABLES :Vrednosti STR_CARGO_SINGULAR_COPPER_ORE :Bakrova ruda STR_CARGO_SINGULAR_COPPER_ORE.r :Bakrove rude STR_CARGO_SINGULAR_COPPER_ORE.d :Bakrovi rudi STR_CARGO_SINGULAR_COPPER_ORE.t :Bakrovo rudo STR_CARGO_SINGULAR_MAIZE :Koruza STR_CARGO_SINGULAR_MAIZE.r :Koruze STR_CARGO_SINGULAR_MAIZE.d :Koruzi STR_CARGO_SINGULAR_MAIZE.t :Koruzo STR_CARGO_SINGULAR_FRUIT :Sadje STR_CARGO_SINGULAR_FRUIT.r :Sadja STR_CARGO_SINGULAR_FRUIT.d :Sadju STR_CARGO_SINGULAR_DIAMOND :Diamant STR_CARGO_SINGULAR_DIAMOND.r :Diamanta STR_CARGO_SINGULAR_DIAMOND.d :Diamantu STR_CARGO_SINGULAR_FOOD :Hrana STR_CARGO_SINGULAR_FOOD.r :Hrane STR_CARGO_SINGULAR_FOOD.d :Hrani STR_CARGO_SINGULAR_FOOD.t :Hrano STR_CARGO_SINGULAR_PAPER :Papir STR_CARGO_SINGULAR_PAPER.r :Papirja STR_CARGO_SINGULAR_PAPER.d :Papirju STR_CARGO_SINGULAR_GOLD :Zlato STR_CARGO_SINGULAR_GOLD.r :Zlata STR_CARGO_SINGULAR_GOLD.d :Zlatu STR_CARGO_SINGULAR_WATER :Voda STR_CARGO_SINGULAR_WATER.r :Vode STR_CARGO_SINGULAR_WATER.d :Vodi STR_CARGO_SINGULAR_WATER.t :Vodo STR_CARGO_SINGULAR_WHEAT :Pšenica STR_CARGO_SINGULAR_WHEAT.r :Pšenice STR_CARGO_SINGULAR_WHEAT.d :Pšenici STR_CARGO_SINGULAR_WHEAT.t :Pšenico STR_CARGO_SINGULAR_RUBBER :Kavčuk STR_CARGO_SINGULAR_RUBBER.r :Kavčuka STR_CARGO_SINGULAR_RUBBER.d :Kavčuku STR_CARGO_SINGULAR_SUGAR :Sladkor STR_CARGO_SINGULAR_SUGAR.r :Sladkorja STR_CARGO_SINGULAR_SUGAR.d :Sladkorju STR_CARGO_SINGULAR_TOY :Igrača STR_CARGO_SINGULAR_TOY.r :Igrače STR_CARGO_SINGULAR_TOY.d :Igrači STR_CARGO_SINGULAR_TOY.t :Igračo STR_CARGO_SINGULAR_CANDY :Sladkarija STR_CARGO_SINGULAR_CANDY.r :Sladkarije STR_CARGO_SINGULAR_CANDY.d :Sladkariji STR_CARGO_SINGULAR_CANDY.t :Sladkarijo STR_CARGO_SINGULAR_COLA :Cockta STR_CARGO_SINGULAR_COLA.r :Cockte STR_CARGO_SINGULAR_COLA.d :Cockti STR_CARGO_SINGULAR_COLA.t :Cockto STR_CARGO_SINGULAR_COTTON_CANDY :Sladkorna pena STR_CARGO_SINGULAR_COTTON_CANDY.r :Sladkorne pene STR_CARGO_SINGULAR_COTTON_CANDY.d :Sladkorni peni STR_CARGO_SINGULAR_COTTON_CANDY.t :Sladkorno peno STR_CARGO_SINGULAR_BUBBLE :Mehurček STR_CARGO_SINGULAR_BUBBLE.r :Mehurčka STR_CARGO_SINGULAR_BUBBLE.d :Mehurčku STR_CARGO_SINGULAR_TOFFEE :Karamela STR_CARGO_SINGULAR_TOFFEE.r :Karamele STR_CARGO_SINGULAR_TOFFEE.d :Karameli STR_CARGO_SINGULAR_TOFFEE.t :Karamelo STR_CARGO_SINGULAR_BATTERY :Baterija STR_CARGO_SINGULAR_BATTERY.r :Baterije STR_CARGO_SINGULAR_BATTERY.d :Bateriji STR_CARGO_SINGULAR_BATTERY.t :Baterijo STR_CARGO_SINGULAR_PLASTIC :Plastika STR_CARGO_SINGULAR_PLASTIC.r :Plastike STR_CARGO_SINGULAR_PLASTIC.d :Plastiki STR_CARGO_SINGULAR_PLASTIC.t :Plastiko STR_CARGO_SINGULAR_FIZZY_DRINK :Gazirana pijača STR_CARGO_SINGULAR_FIZZY_DRINK.r :Gazirane pijače STR_CARGO_SINGULAR_FIZZY_DRINK.d :Gazirani pijači STR_CARGO_SINGULAR_FIZZY_DRINK.t :Gazirano pijačo # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} potnik{P "" a i ov} STR_QUANTITY_COAL :{WEIGHT_LONG} premoga STR_QUANTITY_MAIL :{COMMA} vreč{P a i e ""} pošte STR_QUANTITY_OIL :{VOLUME_LONG} nafte STR_QUANTITY_LIVESTOCK :{COMMA} glav{P a i e ""} živine STR_QUANTITY_GOODS :{COMMA} palet{P a i e ""} izdelkov STR_QUANTITY_GRAIN :{WEIGHT_LONG} žita STR_QUANTITY_WOOD :{WEIGHT_LONG} lesa STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} železove rude STR_QUANTITY_STEEL :{WEIGHT_LONG} jekla STR_QUANTITY_VALUABLES :{COMMA} vreč{P a i e ""} vrednosti STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} bakrove rude STR_QUANTITY_MAIZE :{WEIGHT_LONG} koruze STR_QUANTITY_FRUIT :{WEIGHT_LONG} sadja STR_QUANTITY_DIAMONDS :{COMMA} vreč{P a i e ""} diamantov STR_QUANTITY_FOOD :{WEIGHT_LONG} hrane STR_QUANTITY_PAPER :{WEIGHT_LONG} papirja STR_QUANTITY_GOLD :{COMMA} vreč{P a i e ""} zlata STR_QUANTITY_WATER :{VOLUME_LONG} vode STR_QUANTITY_WHEAT :{WEIGHT_LONG} pšenice STR_QUANTITY_RUBBER :{VOLUME_LONG} kavčuka STR_QUANTITY_SUGAR :{WEIGHT_LONG} sladkorja STR_QUANTITY_TOYS :{COMMA} igrač{P a i e ""} STR_QUANTITY_SWEETS :{COMMA} vreč{P a i e ""} sladkarij STR_QUANTITY_COLA :{VOLUME_LONG} Cockte STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sladkorne pene STR_QUANTITY_BUBBLES :{COMMA} balonč{P ek ka ki kov} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} karamele STR_QUANTITY_BATTERIES :{COMMA} baterij{P a i e ""} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastike STR_QUANTITY_FIZZY_DRINKS :{COMMA} gaziran{P a i e ih} pijač{P a i e ""} STR_QUANTITY_N_A :Ni na voljo # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PO STR_ABBREV_COAL :{TINY_FONT}PR STR_ABBREV_MAIL :{TINY_FONT}PŠ STR_ABBREV_OIL :{TINY_FONT}NF STR_ABBREV_LIVESTOCK :{TINY_FONT}ŽV STR_ABBREV_GOODS :{TINY_FONT}IZ STR_ABBREV_GRAIN :{TINY_FONT}ŽT STR_ABBREV_WOOD :{TINY_FONT}LS STR_ABBREV_IRON_ORE :{TINY_FONT}ŽR STR_ABBREV_STEEL :{TINY_FONT}JK STR_ABBREV_VALUABLES :{TINY_FONT}VR STR_ABBREV_COPPER_ORE :{TINY_FONT}BK STR_ABBREV_MAIZE :{TINY_FONT}KZ STR_ABBREV_FRUIT :{TINY_FONT}SJ STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}HR STR_ABBREV_PAPER :{TINY_FONT}PA STR_ABBREV_GOLD :{TINY_FONT}ZL STR_ABBREV_WATER :{TINY_FONT}VO STR_ABBREV_WHEAT :{TINY_FONT}PN STR_ABBREV_RUBBER :{TINY_FONT}KČ STR_ABBREV_SUGAR :{TINY_FONT}SK STR_ABBREV_TOYS :{TINY_FONT}IG STR_ABBREV_SWEETS :{TINY_FONT}SL STR_ABBREV_COLA :{TINY_FONT}CK STR_ABBREV_CANDYFLOSS :{TINY_FONT}SP STR_ABBREV_BUBBLES :{TINY_FONT}MH STR_ABBREV_TOFFEE :{TINY_FONT}KR STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}GP STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}VSE # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} potnik{P "" a i ov} STR_BAGS :{COMMA} vreč{P a i e ""} STR_TONS :{COMMA} ton{P a i e ""} STR_LITERS :{COMMA} lit{P er ra ri rov} STR_ITEMS :{COMMA} glav{P a i e ""} STR_CRATES :{COMMA} palet{P a i e ""} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Temno modra STR_COLOUR_PALE_GREEN :Svetlo zelena STR_COLOUR_PINK :Rožnata STR_COLOUR_YELLOW :Rumena STR_COLOUR_RED :Rdeča STR_COLOUR_LIGHT_BLUE :Svetlo modra STR_COLOUR_GREEN :Zelena STR_COLOUR_DARK_GREEN :Temno zelena STR_COLOUR_BLUE :Modra STR_COLOUR_CREAM :Kremna STR_COLOUR_MAUVE :Slezenasta STR_COLOUR_PURPLE :Vijolična STR_COLOUR_ORANGE :Oranžna STR_COLOUR_BROWN :Rjava STR_COLOUR_GREY :Siva STR_COLOUR_WHITE :Bela # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}KM STR_UNITS_POWER_METRIC :{COMMA}KM STR_UNITS_POWER_SI :{COMMA} kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P a i e ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lit{P er ra ri ov} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtriraj niz: STR_LIST_FILTER_OSKTITLE :{BLACK}Vnesite niz za filtriranje STR_LIST_FILTER_TOOLTIP :{BLACK}Vnesite ključno besedo, s katero se bo filtriral seznam STR_TOOLTIP_SORT_ORDER :{BLACK}Izberite način razvrščanja (padajoče/naraščajoče) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Izberite kriterij razvrščanja STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Izberite kriterij filtriranja STR_BUTTON_SORT_BY :{BLACK}Razvrsti po STR_BUTTON_LOCATION :{BLACK}Mesto STR_BUTTON_RENAME :{BLACK}Preimenuj STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Zapri okno STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Naziv okna - s tem lahko premaknete okno STR_TOOLTIP_SHADE :{BLACK}Senči okno - pokaži samo naslov STR_TOOLTIP_DEBUG :{BLACK}Pokaži podatke razhroščevanja NewGRF STR_TOOLTIP_STICKY :{BLACK}Označi to okno za nezapirljivo z 'Zapri vsa okna' tipko STR_TOOLTIP_RESIZE :{BLACK}Klikni in vleci to, da zmanjšaš okno STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Preklopi veliko/majhno velikost okna STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Drsnik - premakne seznam gor/dol STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Drsnik - premakne seznam levo/desno STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Poruši zgradbe itd. na kvadratku zemlje. Ctrl izbere diagonalno območje. Shift preklaplja med izgradnjo in predvidenimi stroški # Query window STR_BUTTON_DEFAULT :{BLACK}Privzeto STR_BUTTON_CANCEL :{BLACK}Prekliči STR_BUTTON_OK :{BLACK}V redu # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :¸1234567890'+qwertzuiopšđasdfghjklčćžYXCVBNM;:_ # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Dolžina: {NUM} STR_MEASURE_AREA :{BLACK}Površina: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Dolžina: {NUM}{}Višinska razlika: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Površina: {NUM} x {NUM}{}Višinska razlika: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Prebivalstvo STR_SORT_BY_CAPTION_NAME :{BLACK}Ime STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns STR_SORT_BY_NAME :Ime STR_SORT_BY_PRODUCTION :Proizvodnja STR_SORT_BY_TYPE :Vrsta STR_SORT_BY_TRANSPORTED :Prepeljano STR_SORT_BY_NUMBER :Število STR_SORT_BY_PROFIT_LAST_YEAR :Dobiček v zadnjem letu STR_SORT_BY_PROFIT_THIS_YEAR :Letošnji dobiček STR_SORT_BY_AGE :Starost STR_SORT_BY_RELIABILITY :Zanesljivost STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Skupna zmogljivost po tipu tovora STR_SORT_BY_MAX_SPEED :Največja hitrost STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Vrednost STR_SORT_BY_LENGTH :Dolžina STR_SORT_BY_LIFE_TIME :Preostala življenjska doba STR_SORT_BY_TIMETABLE_DELAY :Zamuda urnika STR_SORT_BY_FACILITY :Vrsta postaje STR_SORT_BY_WAITING :Čakanje vrednosti tovora STR_SORT_BY_RATING_MAX :Najvišja ocena tovora STR_SORT_BY_RATING_MIN :Najnižja ocena tovora STR_SORT_BY_ENGINE_ID :ID motorja (klasično urejanje) STR_SORT_BY_COST :Cena STR_SORT_BY_POWER :Moč STR_SORT_BY_TRACTIVE_EFFORT :Vlečna moč STR_SORT_BY_INTRO_DATE :Datum uvedbe STR_SORT_BY_RUNNING_COST :Cena delovanja STR_SORT_BY_POWER_VS_RUNNING_COST :Moč/Cena delovanja STR_SORT_BY_CARGO_CAPACITY :Zmogljivost tovora STR_SORT_BY_RANGE :Domet # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Premor STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Hitro naprej STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Možnosti STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Shrani igro, zapusti igro, izhod STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Pokaži zemljevid, dodatno okno ali seznam oznak STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Pokaži seznam mest STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Pokaži subvencije STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Pokaži seznam postaj podjetja STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Pokaži finančne podatke podjetja STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Pokaži splošne podatke podjetja STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Pokaži grafe STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Prikaži tabelo lige podjetij STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financirajte izgradnjo nove industrije ali si oglejte seznam vseh industrij STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Pokaži seznam vlakov. Ctrl+Klik odpre seznam skupin/vozil STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Pokaži seznam cestnih vozil. Ctrl+Klik preklopi na seznam skupin/vozil STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Prikaži seznam ladij podjetja. Ctrl+Klik preklopi na seznam skupin/vozil STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Prikaži seznam letal podjetja. Ctrl+Klik preklopi na seznam skupin/vozil STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Približaj pogled STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Oddalji pogled STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Zgradi železniške tire STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Zgradi ceste STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Zgradi pristanišča STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Zgradi letališča STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Odpri orodja za oblikovanje terena, sajenje dreves, itd. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Prikaži okno za zvok/glasbo STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Prikaži zadnje sporočilo/novico, prikaži možnosti sporočil STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informacije o terenu, konzola, razhroščevanje UI, zaslonske slike, o OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Preklopi orodne vrstice # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Shrani, naloži scenarij, zapusti urejevalnik scenarijev, izhod STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Urejevalnik scenarijev STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Premakni začetni datum za 1 leto nazaj STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Premakni začetni datum za 1 leto naprej STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikni in vnesi začetno leto STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Prikaži zemljevid, imenik mest STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generator pokrajine STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generator mest STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generator industrije STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Gradnja cest STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Posadi drevesa. Shift preklaplja med izgradnjo in predvidenimi stroški STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Postavi znak STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Postavi objekt. Shift preklaplja med izgradnjo in predvidenimi stroški ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Shrani scenarij STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Naloži scenarij STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Shrani višinsko karto STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Naloži višinsko karto STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Izhod iz urejevalnika STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Izhod ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Možnosti igre STR_SETTINGS_MENU_CONFIG_SETTINGS :Napredne nastavitve STR_SETTINGS_MENU_SCRIPT_SETTINGS :UI/Nastavitve skriptov igre STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF nastavitve STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavitve prozornega pogleda STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Imena mest prikazana STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Imena postaj prikazana STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Prikazane točke poti STR_SETTINGS_MENU_SIGNS_DISPLAYED :Sporočila prikazana STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Tekmečevi znaki in imena prikazana STR_SETTINGS_MENU_FULL_ANIMATION :Popolne animacije STR_SETTINGS_MENU_FULL_DETAIL :Vse podrobnosti STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Prosojne stavbe STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Prosojni napisi postaj ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Shrani igro STR_FILE_MENU_LOAD_GAME :Naloži igro STR_FILE_MENU_QUIT_GAME :Zapusti igro STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Izhod ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Zemljevid sveta STR_MAP_MENU_EXTRA_VIEW_PORT :Dodaten pogled STR_MAP_MENU_SIGN_LIST :Seznam napisov ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Imenik mest STR_TOWN_MENU_FOUND_TOWN :Ustanovi mesto ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvencije STR_SUBSIDIES_MENU_GOAL :Trenutni cilji ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf dobička STR_GRAPH_MENU_INCOME_GRAPH :Graf prihodkov STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf dostavljenega tovora STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf zgodovine uspeha STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf vrednosti podjetja STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Graf plačila za tovore ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tabela lige podjetij STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Podrobna ocena uspeha STR_GRAPH_MENU_HIGHSCORE :Tabela najboljših rezultatov ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Imenik industrij STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Industrijske verige STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Financiraj novo industrijo ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Gradnja železnice STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Gradnja elektrificirane železnice STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Enotirna železnica STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Magnetna železnica ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Gradnja ceste STR_ROAD_MENU_TRAM_CONSTRUCTION :Gradnja tramvaj proge ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Gradnja vodnih poti ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Gradnja letališča ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Oblikovanje terena STR_LANDSCAPING_MENU_PLANT_TREES :Posadi drevesa STR_LANDSCAPING_MENU_PLACE_SIGN :Postavi znak ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Zvok/glasba ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Zadnje sporočilo/novica STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Zgodovina sporočil ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Informacije o terenu STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Vklopi/Izklopi konzolo STR_ABOUT_MENU_AI_DEBUG :Razhročevanje UI / skript STR_ABOUT_MENU_SCREENSHOT :Zajemi sliko STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zajemi približano sliko STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Zajem slike pri privzeti povečavi STR_ABOUT_MENU_GIANT_SCREENSHOT :Zajemi celostno sliko STR_ABOUT_MENU_ABOUT_OPENTTD :O 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Uravnavanje sličice STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Vklop/izklop okvirjev STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Preklop barvanja umazanih blokov ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Maj STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Avg STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dec STR_MONTH_JAN :Januar STR_MONTH_FEB :Februar STR_MONTH_MAR :Marec STR_MONTH_APR :April STR_MONTH_MAY :Maj STR_MONTH_JUN :Junij STR_MONTH_JUL :Julij STR_MONTH_AUG :Avgust STR_MONTH_SEP :September STR_MONTH_OCT :Oktober STR_MONTH_NOV :November STR_MONTH_DEC :December ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Ključ STR_GRAPH_KEY_TOOLTIP :{BLACK}Prikaži ključe grafov STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graf čistega dobička STR_GRAPH_INCOME_CAPTION :{WHITE}Graf prihodkov STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Enot dostavljenega tovora STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ocene uspeha podjetja (max=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Vrednosti podjetij STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Cene tovora STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dni v tranzitu STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Plačilo za dostavo 10 enot (ali 10.000 litrov) tovora za razdaljo 20 kvadratkov STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Omogoči vse STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Onemogoči vse STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Prikaži ves tovor na grafu plačil STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ne prikaži tovora na grafu plačil STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Prikaži graf za tip tovora vključen/izključen STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Prikaz detajliranih ocen uspeha # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Ključi grafov podjetij STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikni sem za vklop/izklop prikaza grafov podjetja # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Seznam najboljših podjetij STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inženir STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Vodja prometa STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Koordinator transporta STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Nadzornik poti STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Izvršni direktor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Vrhovni direktor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Predsednik STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Velekapitalist # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detajlirana ocena uspeha STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detajl STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Podrobnosti o podjetju ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vozila: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Postaje: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. dobiček: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. prihodek: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. prihodek: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Dostavljeno: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Tovor: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Denar: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Posojilo: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Skupaj: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Število vozil, ki so imela zadnje leto dobiček. Všteta so cestna vozila, vlaki, ladje in letala STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Število nedavno servisiranih postaj. Železniške postaje, avtobusne postaje, letališča in ostale vrste postaj so štete ločeno, čeprav spadajo pod isto postajo STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Dobiček vozila z najnižjim prihodkom (samo vozila, starejša od 2 let) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Znesek denarja v četrtini z najnižjim dobičkom od zadnjih 12 četrtin STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Znesek denarja v četrtini z najvišjim dobičkom zadnjih 12 četrtin STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Enote tovora, dostavljene v zadnjih 4 četrtinah STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Število tipov tovora dostavljenega v zadnji četrtini STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Znesek denarja podjetja na banki STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Znesek posojila podjetja STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Skupno točk od vseh možnih # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Gramofon STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Vse STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Star stil STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Novi stil STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Poulična STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Po meri 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Po meri 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Glasnost glasbe STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Glasnost zvokov STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Skladba STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Naslov STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Mešano STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Skoči na prejšnjo skladbo v izboru STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Preskoči na naslednjo skladbo v izboru STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Ustavi glasbo STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Predvajaj glasbo STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Premikaj drsnike za nastavitev glasnosti glasbe in zvokov STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Izberi glasbeni program 'vse skladbe' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Izberi glasbeni program 'stari stil' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Izberi glasbeni program 'novi stil' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Izberi 'Poulični' glasbeni program STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Izberi glasbeni program 'po meri 1' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Izberi glasbeni program 'po meri 2' STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Preklapljaj mešan program vključeno/izključeno STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Prikaži okno z izborom glasbe STR_ERROR_NO_SONGS :{WHITE}Izbran je bil komplet glasbe brez skladb. Nobena skladba ne bo predvajana # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Izbor glasbenega programa STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Kazalo skladb STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Zbriši STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Zbriši trenutni glasbeni program (samo po meri 1 in 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikni na skladbo, če jo želiš dodati na trenutni program (samo po meri 1 in 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikni na skladbo, če jo želiš odstraniti iz programa (samo Poljubno1 ali Poljubno2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najboljša podjetja, ki so dosegla {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Seznam najboljših podjetij v {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Poslovnež STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Podjetnik STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industrijalec STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Glavar STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Velekapitalist stoletja STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} dosega naslov '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} iz podjetja {COMPANY} prejema naslov '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Zemljevid - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Oblika STR_SMALLMAP_TYPE_VEHICLES :Vozila STR_SMALLMAP_TYPE_INDUSTRIES :Industrije STR_SMALLMAP_TYPE_ROUTES :Poti STR_SMALLMAP_TYPE_VEGETATION :Rastlinje STR_SMALLMAP_TYPE_OWNERS :Lastniki STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Prikaži načrt terena na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Prikaži vozila na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Prikaži industrije na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Prikaži transportne poti na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Prikaži vegetacijo na zemljevidu STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Prikaži lastnike terena na zemljevidu STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikni na tip industrije za preklop vidljivosti. Ctrl+Klik onemogoči vse tipe razen izbranega. Ctrl+Klik še enkrat omogoči vse tipe STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikni na podjetje za preklop vidljivosti njenih nepremičnin. Ctrl+Klik onemogoči vsa podjetja razen izbranega. Ctrl+Klik še enkrat omogoči vsa podjetja STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ceste STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Železnice STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Postaje/Letališča/Pristanišča STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Stavbe/Industrije STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vozila STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Vlaki STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Cestna vozila STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Ladje STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Letala STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportne poti STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Gozd STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Železniška postaja STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Tovorni terminal STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Avtobusna postaja STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Letališče/Pristajališče STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Pristanišče STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Valovita tla STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Travnata tla STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Gola tla STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Polja STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Drevesa STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Kamni STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Voda STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Brez lastnika STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Mesta STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrije STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Puščava STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sneg STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vključi/izključi imena mest na zemljevidu STR_SMALLMAP_CENTER :{BLACK}Centrira majhen zemljevid na trenutno lokacijo STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Onemogoči vse STR_SMALLMAP_ENABLE_ALL :{BLACK}Omogoči vse STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Prikaži višino STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Na zemljevidu ne prikaži nobene industrije STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Na zemljevidu prikaži vse industrije STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Preklopi vidljivost višinske karte STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ne prikaži lastnine podjetja na zemljevidu STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Prikaži vso lastnino podjetja na zemljevidu # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Prikaži zadnje sporočilo ali novico STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAVZA * * STR_STATUSBAR_AUTOSAVE :{RED}Samodejno shranjevanje STR_STATUSBAR_SAVING_GAME :{RED}* * SHRANJEVANJE * * # News message history STR_MESSAGE_HISTORY :{WHITE}Arhiv sporočil STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Seznam zadnjih novic STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Sporočilo STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Prebivalci praznujejo . . .{}Prvi vlak je slovesno pripeljal{}na postajo {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Prebivalci praznujejo . . .{}Prihod prvega avtobusa na postajo {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Prebivalci praznujejo . . .{}Prihod prvega tovornjaka na postajo {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Meščani proslavljajo . . .{}Prvi potniški tramvaj je prispel na postajo {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Proslava meščanov . . .{}Prvi tovorni tramvaj je pripeljal na postajo {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Prebivalci praznujejo . . .{}Prva ladja prispela na postajo {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Prebivalci praznujejo . . .{}Prvo letalo pristalo na letališču {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Železniška nesreča!{}{COMMA} ponesrečen{P ec ca ci cev} {P je sta so je} umrl{P "" a i o} v plamenih po trku STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Prometna nesreča!{}Voznik umrl v plamenih po trku z vlakom. STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Prometna nesreča!{}{COMMA} mrt{P ev va vi vih} v plamenih ob trku z vlakom. STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Letalska nesreča!{}{COMMA} mrt{P ev va vi vih} v plamenih na letališču {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Letalska nesreča!{}Letalu je zmanjkalo goriva, {COMMA} mrt{P ev va vi vih} v ognjenih zubljih STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Nesreča cepelina na letališču {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Cestno vozilo uničeno v trku z 'NLP'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksplozija naftne rafinerije blizu mesta {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Tovarna uničena v sumljivih okoliščinah blizu mesta {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'NLP' pristal blizu mesta {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Rudnik premoga pušča opustošenje v okolici mesta {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Poplave!{}Vsaj {COMMA} pogrešanih, najverjetneje mrtvih po močnih neurjih! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Prevozno podjetje v težavah! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} bo prodano ali rezglašeno za bankrotirano, če se stanje kaj kmalu ne izboljša! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Združitev prevoznih podjetij! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} je bilo prodano podjetju {STRING} za {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Tvoje podjetje je bankrotiralo! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} je bilo zaprto s strani investitorjev, ki so prodali vse imetje! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Ustanovljeno novo prevozno podjetje! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} začenja z gradnjo blizu mesta {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} je bilo prevzeto s strani {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Direktor) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponzorirana gradnja novega mesta {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Na novo se gradi {STRING} blizu mesta {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Postavlja se {STRING} blizu mesta {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} napoveduje preteče zapiranje! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Zaradi težav z dobavo zalog, {STRING} napoveduje preteč stečaj! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Zaradi pomanjkanja bližnjih dreves, {STRING} napoveduje stečajni postopek! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Evropska denarna združitev!{}{}Evro je uveden kot edina valuta za trgovske transakcije v državi! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Svetovna recesija!{}{}Ekonomisti se bojijo najhujšega ob trenutnem poteku dogodkov! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Konec recesije!{}{}Izboljšanje trgovanja povečuje zaupanje domače industrije, gospodarstvo napreduje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} povečuje proizvodnjo! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nova žila premoga odkrita v {INDUSTRY}!{}Pričakuje se podvojitev proizvodnje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nove rezerve nafte odkrite v {INDUSTRY}!{}Predvidena podvojitev proizvodnje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Izboljšane metode pridelovanja v {INDUSTRY.r} naj bi podvojile proizvodnjo! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :Proizvodnja {BIG_FONT}{BLACK}{STRING.r} v {INDUSTRY.d} narašča za {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY.d} proizvodnja upada za 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insekti so povzročili opustošenje v {INDUSTRY.d}!{}Proizvodnja zmanjšana za 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :Proizvodnja {BIG_FONT}{BLACK}{STRING.r} v {INDUSTRY.d} upada za {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} čaka v garaži STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} čaka v garaži STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čaka v ladjedelnici STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čaka v letališkem hangarju # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ima premalo ukazov na urniku STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ima prazen ukaz STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ima podvojene ukaze STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ima eno neveljavno postajo na urniku # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} se stara STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} podlega iztrošenosti STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} nima več zanesljivosti in nujno potrebuje zamenjavo STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} ne najde poti za nadaljevanje STR_NEWS_VEHICLE_IS_LOST :{WHITE}Vozilo {VEHICLE} je izgubljeno STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} povzroča izgubo. Lanski dobiček je bil {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} ne more do naslednjega cilja, ker je predaleč STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} je ustavljen zaradi neuspele preureditve STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Samoobnova ni uspela na {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Novo! {STRING} sedaj na razpolago! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo! {STRING} sedaj na razpolago! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ne sprejema več {STRING.r} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ne sprejema več {STRING.r} ali {STRING.r} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} sedaj sprejema {STRING.t} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} sedaj sprejema {STRING.t} in {STRING.t} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Ponudba subvencije potekla: {}{}Prevoz {STRING.r} od {STRING} do {STRING} ni več subvencioniran STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvencija zaključena:{}{}Prevoz {STRING.r} od {STRING} do {STRING} ni več subvencioniran STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Nova ponujena subvencija:{}{}Prvi prevoz {STRING.r} od {STRING.r} do {STRING.r} bo{}subvencioniran s strani mestnega sveta! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvencija podeljena podjetju {STRING}!{}{}Prevoz {STRING.r} od {STRING} do {STRING} bo prinesel 50% večji prihodek{}za naslednje leto! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Podjetje {STRING} je prejelo subvencijo!{}{}Prevoz {STRING.r} od {STRING} do {STRING} bo prinesel dvakratni prihodek{}za naslednje leto! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvencija odobrena podjetju {STRING}!{}{}Prevoz {STRING.r} od {STRING} do {STRING} bo prinesel trikratni prihodek{}za naslednje leto! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvencija podeljena podjetju{STRING}!{}{}Prevoz {STRING.r} od {STRING} do {STRING} bo prinesel štirikratni prihodek{}za naslednje leto! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Prometni kaos v mestu {TOWN}!{}{}Obnovitvena dela, ki jih financira podjetje {STRING},{}bodo prinesla 6 mesecev nevšečnosti{}voznikom motornih vozil! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportni monopol! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokalna oblast kraja {TOWN} je podpisala pogodbo s/z {STRING} o eno letni izključni pravici za transport. # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pogled {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiraj na pogled STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiraj lokacijo splošnega pogleda v ta pogled STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Prilepi iz pogleda STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Prilepi lokacijo tega pogleda v splošni pogled # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Možnosti Igre STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valute STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbira valut ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Funt (£) STR_GAME_OPTIONS_CURRENCY_USD :Dolar ($) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) STR_GAME_OPTIONS_CURRENCY_JPY :Jen (¥) STR_GAME_OPTIONS_CURRENCY_ATS :Avstrijski Šiling (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgijski Frank (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Švicarski Frank (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Češka Krona (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Nemška Marka (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Danska Krona (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Pezeta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finska Marka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Frank (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grška Drahma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Madžarski Forint (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Islandska Krona (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italijanska Lira (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Nizozemski Gulden (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norveška Krona (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Poljski Zlot (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Romunski Lej (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Ruski Rubelj (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenski tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Švedska Krona (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turška lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovaška krona (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazilski Real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :estonske krone (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litvijske Lite (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Južnokorejski Won (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Južnoafriški Rant (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Po meri... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Merske enote STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Izbor merskih enot ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Colski STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrični STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cestna vozila STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Izberi smer vožnje cestnih vozil STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vožnja po levi STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Vožnja po desni STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Imena mest STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Izberi slog imena mest ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angleška (Originalna) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francoska STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Nemška STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Angleška (Dodatna) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinsko-Ameriška STR_GAME_OPTIONS_TOWN_NAME_SILLY :Butasta STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Švedska STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Nizozemska STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finska STR_GAME_OPTIONS_TOWN_NAME_POLISH :Poljska STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovaška STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norveška STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Madžarska STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Avstrijska STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romunska STR_GAME_OPTIONS_TOWN_NAME_CZECH :Češka STR_GAME_OPTIONS_TOWN_NAME_SWISS :Švicarska STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danska STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turška STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italijanska STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalonska ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Samo-shrani STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izberi časovni interval samodejnega shranjevanja igre STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Izključeno STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Vsak mesec STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Vsake 3 mesece STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Vsakih 6 mesecev STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Vsakih 12 mesecev STR_GAME_OPTIONS_LANGUAGE :{BLACK}Jezik STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Izberi jezik vmesnika STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Cel zaslon STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Označi to okno za igro v celozaslonskem načinu STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ločljivost STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Izberi ločljivost zaslona STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Format zajema slike STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Izberi format zajema slike STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni komplet grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Izberi osnovni komplet grafik za uporabo STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manjkajoč{P a i e ih}/okvarjen{P a i e ih} datotek{P a i e ""} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu grafik STR_GAME_OPTIONS_BASE_SFX :{BLACK}Osnovni komplet zvokov STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Izberi osnovni komplet zvokov za uporabo STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu zvokov STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Osnovni komplet glasbe STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Izberi osnovni komplet glasbe za uporabo STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškodovan{P a i e ih} datotek{P a i e ""} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu glasbe STR_ERROR_FULLSCREEN_FAILED :{WHITE}Celozaslonski način spodletel # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Valuta po meri STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Menjalni tečaj: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Zmanjšaj količino svojega denarja za en funt (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Povečaj količino svojega denarja za en funt (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Nastavi tečaj menjave svoje valute za en funt (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Ločitev: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Nastavi ločilno oznako za svojo valuto STR_CURRENCY_PREFIX :{LTBLUE}Predpona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Nastavi oznako za svojo valuto STR_CURRENCY_SUFFIX :{LTBLUE}Zapona: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Nastavi pripono svoje valute STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Preklop na Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Preklop na Euro: {ORANGE}nikoli STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Nastavi leto preklopa na euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Preklopi na euro prej STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Preklopi na euro pozneje STR_CURRENCY_PREVIEW :{LTBLUE}Predogled: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 funtov (£) v tvoji valuti STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zamenjaj parameter valute po meri STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Največje število tekmecev: {ORANGE}{COMMA} STR_NONE :Brez STR_FUNDING_ONLY :Samo financiranje STR_MINIMAL :Minimalno STR_NUM_VERY_LOW :Zelo malo STR_NUM_LOW :Malo STR_NUM_NORMAL :Normalno STR_NUM_HIGH :Veliko STR_NUM_CUSTOM :Po meri STR_NUM_CUSTOM_NUMBER :Po meri ({NUM}) STR_VARIETY_NONE :Brez STR_VARIETY_VERY_LOW :Zelo nizko STR_VARIETY_LOW :Nizko STR_VARIETY_MEDIUM :Srednje STR_VARIETY_HIGH :Visoko STR_VARIETY_VERY_HIGH :Zelo visoko STR_AI_SPEED_VERY_SLOW :Zelo počasi STR_AI_SPEED_SLOW :Počasi STR_AI_SPEED_MEDIUM :Srednje STR_AI_SPEED_FAST :Hitro STR_AI_SPEED_VERY_FAST :Zelo hitro STR_SEA_LEVEL_VERY_LOW :Zelo Nizko STR_SEA_LEVEL_LOW :Malo STR_SEA_LEVEL_MEDIUM :Srednje STR_SEA_LEVEL_HIGH :Veliko STR_SEA_LEVEL_CUSTOM :Po meri STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Po meri ({NUM}%) STR_RIVERS_NONE :Brez STR_RIVERS_FEW :Malo STR_RIVERS_MODERATE :Srednje STR_RIVERS_LOT :Mnogo STR_DISASTER_NONE :Brez STR_DISASTER_REDUCED :Zmanjšano STR_DISASTER_NORMAL :Normalno STR_SUBSIDY_X1_5 :x1,5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Zelo raven STR_TERRAIN_TYPE_FLAT :Raven STR_TERRAIN_TYPE_HILLY :Hribovit STR_TERRAIN_TYPE_MOUNTAINOUS :Gorat STR_CITY_APPROVAL_PERMISSIVE :Dopustno STR_CITY_APPROVAL_TOLERANT :Tolerantno STR_CITY_APPROVAL_HOSTILE :Sovražno STR_WARNING_NO_SUITABLE_AI :{WHITE}Ni na voljo nobene uporabne UI.{}UI so na voljo preko 'Prenosa vsebin'. # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Napredne nastavitve STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtriraj niz: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Razširi vse STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Skrči vse STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(ni razpoložljive razlage) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Privzeta vrednost: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Vrsta nastavitve: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Nastavitve gosta (ni shranjeno v igrah; vpliva na vse igre) STR_CONFIG_SETTING_TYPE_GAME_MENU :Nastavitve igre (shranjeno v igrah; vpliva samo na nove igre) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavitve igre (shranjeno v igrah; vpliva samo na tekočo igro) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavitve podjetja (shranjeno v igrah, vpliva samo na nove igre) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavitve podjetja (shranjeno v igrah, vpliva samo na trenutno podjetje) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Prikaži: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Omeji seznam na prikaz le spremenjenih nastavitev STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovne nastavitve STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredne nastavitve STR_CONFIG_SETTING_RESTRICT_ALL :Strokovne nastavitve / vse nastavitve STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavitve z neprivzeto vrednostjo STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavitve drugačne od privzetih za novo igro STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Omeji spodnji seznam na le določene tipe nastavitev STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Vse vrste nastavitev STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavitve gostov (se ne zapiše ob shranjevanju; vpliva na vse igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavitve igre (zapisane ob shranjevanju; vplivajo le na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavitve igre (zapisane ob shranjevanju; vplivajo le na trenutno igro) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavitve podjetja (zapisane ob shranjevanju; vplivajo le na nove igre) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavitve podjetja (zapisane ob shranjevanju; vplivajo le na trenutno podjetje) STR_CONFIG_SETTING_OFF :Izklopi STR_CONFIG_SETTING_ON :Vklopi STR_CONFIG_SETTING_DISABLED :Onemogočeno STR_CONFIG_SETTING_COMPANIES_OFF :Izklop STR_CONFIG_SETTING_COMPANIES_OWN :Lastno podjetje STR_CONFIG_SETTING_COMPANIES_ALL :Vsa podjetja STR_CONFIG_SETTING_NONE :Brez STR_CONFIG_SETTING_ORIGINAL :Originalno STR_CONFIG_SETTING_REALISTIC :Realistično STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Levo STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sredina STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Desno STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Najvišje začetno posojilo: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Najvišji znesek, ki si ga podjetje lahko izposodi (ni vključen izračun inflacije) STR_CONFIG_SETTING_INTEREST_RATE :Obrestna mera: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Obrestna mera; kontrolira tudi inflacijo, če je omogočena. STR_CONFIG_SETTING_RUNNING_COSTS :Stroški delovanja: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastavitev vzdrževanja in stroškov delovanja vozil in zgradb STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Hitrost gradnje: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Nastavitev hitrosti gradnje za UI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Okvare vozil: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Nastavitev, kako pogosto se nevzdrževana vozila lahko pokvarijo STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Faktor subvencij: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Nastavitev faktorja subvencij STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Cene gradnje: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Nastavitev cene gradnje in nakupa STR_CONFIG_SETTING_RECESSIONS :Recesije: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Če je omogočeno, se recesije lahko pojavijo vsakih nekaj let. Med recesijo je proizvodnja znatno nižja, povrne se v tek po recesiji. STR_CONFIG_SETTING_TRAIN_REVERSING :Prepovej obračanje vlakov na postajah: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Če je omogočeno, se vlaki ne obračajo na vmesnih postajah STR_CONFIG_SETTING_DISASTERS :Nesreče: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Preklop med pojavljanjem nesreč STR_CONFIG_SETTING_CITY_APPROVAL :Odnos mestnega sveta do prestrukturiranja površine: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Nastavitev nivoja hrupa in posameznih posegov podjetja na oceno v mestu in nadaljnjo gradnjo STR_CONFIG_SETTING_BUILDONSLOPES :Dovoli gradnjo hiš na nagibih ali obali: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Če je omogočeno, so lahko tračnice in postaje zgradjene na večini pobočij. Če je onemogočeno, so dovoljene le na pobočjih, ki ustrezajo smeri tračnic in zato ne zahtevajo temelje. STR_CONFIG_SETTING_AUTOSLOPE :Dovoli oblikovanje terena pod objekti, tiri, ipd. (samonaklon): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dovoli spremembo terena pod zgradbami in tiri brez odstranitve STR_CONFIG_SETTING_CATCHMENT :Dovoli bolj resnični območni zajem postaj: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Postaje in letališča različnih tipov imajo različna področja zajema STR_CONFIG_SETTING_EXTRADYNAMITE :Dovoli odstanitev mestnih cest in mostov: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Poenostavi odstranitev infrastrukture in zgradb v lasti mesta STR_CONFIG_SETTING_TRAIN_LENGTH :Največja dolžina vlakov: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Nastavi največjo dolžino vlakov STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} plošč{P 0 a i e ""} STR_CONFIG_SETTING_SMOKE_AMOUNT :Količina dima/isker vozil: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Nastavi količino dima in isker, ki jih oddajajo vozila STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Model pospeškov vlakov: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Izberi fizikalni model pospeška vlakov. Originalni model upočasni vsa vozila enako na vzponih, realističen model pa tudi na ovinkih in odvisno od lastnosti kompozicije. STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Model pospeškov cestnih vozil: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Izberi fizikalni model pospeška cestnih vozil. Originalni model upočasni vsa vozila enako na vzponih, realističen model pa odvisno od lastnosti vozila. STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Naklon vzpona za vlake: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Naklon vzpona za vlake. Višja vrednost oteži vzpon. STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Naklon vzpona za cestna vozila: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Naklon vzpona za cestna vozila. Višja vrednost oteži vzpon. STR_CONFIG_SETTING_FORBID_90_DEG :Prepreči vlakom in ladjam 90° zavoje: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 stopinjski zavoj se izvrši, ko je vodoravni odsek proge tik pred navpičnim, tako da vlak, ko prevozi rob plošče zavije za 90 namesto klasičnih 45 stopinj. To vpliva tudi na zavoje ladij. STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Dovoli združevanje postaj, ki niso v dotiku: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Dovoli dograjevanje postaje brez direktnega dotika obstoječih delov. Ctrl+klik za postavitev novih delov. STR_CONFIG_SETTING_IMPROVEDLOAD :Uporabi izboljšan algoritem polnjenja: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Če je omogočeno, se vozila polnijo sekvenčno. Drugo se začne polniti, ko je prvo polno, v kolikor sta dve ali več hkrati na postaji. STR_CONFIG_SETTING_GRADUAL_LOADING :Postopno polni vozila: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Postopno polnjenje vozil s specifičnim časom polnjenja, namesto vseh enako hitro in odvisno le od količine tovora STR_CONFIG_SETTING_INFLATION :Inflacija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Omogoči inflacijo ekonomije, kjer se stroški zvišajo rahlo hitreje kot plačila STR_CONFIG_SETTING_SELECTGOODS :Dostavi tovor postaji le ob povpraševanju: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Dostavi postaji le tovor, ki je zahtevan od vozila. To prepreči slabe ocene za tovore, ki niso prevažani STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Največja dolžina mostov: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Največja dolžina gradnje mostov STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Največja dolžina predorov: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Največja dolžina gradnje predorov STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Glavni ročni način gradnje industrij: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Način vlaganja v primarno industrijo. Perspektivna pomeni, da se gradnja izvrši naključno na ozemlju in lahko tudi propade v težavah. Kot ostale industrije pa se gradijo za družbo kjerkoli ji ustreza. STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nobena STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Kot ostale industrije STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Obetaven STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Ravnina okrog industrij: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Ravnina okrog industrije. To zagotovi okrog industrije ravnino za gradnjo poti. STR_CONFIG_SETTING_MULTIPINDTOWN :Dovoli več enakih industrij na mesto: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalno mesta nočejo več kot eno industrije po vrsti. S to nastavitvijo sprejmejo več industrij iste vrste. STR_CONFIG_SETTING_SIGNALSIDE :Prikaz signalov: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Izberi stran postavitve signalov STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Na levi STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Na strani vožnje STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Na desni STR_CONFIG_SETTING_SHOWFINANCES :Prikaz okna financ na koncu leta: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Če je omogočeno, se okno financ odpre vsaki konec leta za lažji pregled. STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novi ukazi so privzeti 'non-stop': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalno se vozilo ustavi na vsaki prevoženi postaji. S to opcijo aktivno, se pelje direktno do ciljne postaje. To velja samo za privzeti ukaz novega vozila. Lahko se še vedno določi lokalne ukaze. STR_CONFIG_SETTING_STOP_LOCATION :Novi ukazi predvidevajo postanek vlaka na {STRING} perona STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Mesto ustavljanja vlaka na postaji. Bližnji rob, sredina, končni rob. Samo za nove ukaze, lokalna nastavitev možna. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :začetni strani STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :sredini STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :koncu STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Cestna vozila v vrsti (s quantum efekti): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Cestno vozila naj čaka pred zasedenim postankom/oviro dokler ni odstranjena. STR_CONFIG_SETTING_AUTOSCROLL :Premakni okno, ko je miška na robu: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Če je omogočeno, bo miška na robu slike sama premikala pogled naprej STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Onemogočeno STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Glavni pogled, samo cel zaslon STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Glavni pogled STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Vsi pogledi STR_CONFIG_SETTING_BRIBE :Dovoli podkupovanje mestnih oblasti: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Dovoli družbam poskus podkupovanja mestne oblasti. Če bo inšpektor odkril podkupovanje, bo družba mirovala v tistem mestu za 6 mesecev. STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Dovoli nakup ekskluzivnih prevoznih dovoljenj: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Če podjetje odkupi ekskluzivne transportne pravice v mestu, tekmečeve postaje ne bodo prejemale tovora za 1 leto STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Dovoli naložbe v zgradbe: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Dovoli družbam vlaganje denarja v mesta za gradnjo novih hiš. STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Dovoli financiranje obnove lokalnih cest: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Dovoli družbam vlaganje denarja v mesta za obnovo cest kot sabotažo cestnih prevozov. STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Dovoli pošiljanje denarja drugim podjetjem: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Dovoli prenos denarja med družbami v večigralskem načinu. STR_CONFIG_SETTING_FREIGHT_TRAINS :Koeficient teže tovora za simulacijo težkih vlakov: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Nastavitev težavnosti vlakov. Višja vrednost pomeni, da tovorni vlak težje pelje tovor, posebno na vzponih. STR_CONFIG_SETTING_PLANE_SPEED :Faktor hitrosti na ravnini: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Nastavitev relativne hitrosti letal proti ostalim vozilom, za zmanjšanje dobička letal STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Število letalskih nesreč: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Nastavitev verjetnosti letalske nesreče STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Brez STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Zmanjšano STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalno STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Dovoli prehodne postaje na cestah v lasti mest: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Dovoli gradnjo pretočnih postaj na cesti, ki je v lasti mesta. STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Dovoli prevoženja postaj na tekmečevih cestah: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Dovoli gradnjo pretočnih postaj na cesti, ki je v lasti druge družbe. STR_CONFIG_SETTING_ADJACENT_STATIONS :Dovoli gradnjo združljivih postaj: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Dovoli stikanje različnih postaj. STR_CONFIG_SETTING_DYNAMIC_ENGINES :Omogoči večkratni set NewGRF pogona: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Skladna možnost za stare NewGRF-je. Ne izklopi, razen če točno veš kaj delaš. STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Sprememba teh nastavitev ni mogoča, ko so tam vozila STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Vzdrževanje infrastrukture: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Če je omogočeno, infrastruktura upošteva vzdrževalne stroške, ki rastejo skozi čas proporcionalno z velikostjo omrežja. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Letališča nikoli ne potečejo: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Če je omogočeno, bo vsak tip letališča ostal omogočen vedno po uvedbi. STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Opozori, če se vozilo izgubi: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Sporočila o vozilih, ki ne najdejo poti do cilja. STR_CONFIG_SETTING_ORDER_REVIEW :Pregled ukazov vozila: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Če je omogočeno, se občasno preverjajo ukazi vozil in ob napaki se prikaže sporočilo. STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Ne STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Da, toda izloči ustavljena vozila STR_CONFIG_SETTING_ORDER_REVIEW_ON :Vseh vozil STR_CONFIG_SETTING_WARN_INCOME_LESS :Opozori, če je prihodek vozila negativen: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Če je omogočeno, se odpre sporočilo, v kolikor neko vozilo ni ustvarilo dobička v koledarskem letu. STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozila nikoli ne dotrajajo: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Če je omogočeno, vsi modeli vozil ostanejo omogočeni po uvedbi. STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Samoobnovi vozila, ko se postarajo: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Če je omogočeno, se vozila ob koncu življenjske dobe avtomatsko zamenjajo pod pogoji samoobnove. STR_CONFIG_SETTING_AUTORENEW_MONTHS :Samoobnovi, ko je vozilo {STRING} obratovalne dobe STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativna starost, ko se vozilo upošteva za samoobnovo. STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mesec{P 0 "" a e ev} pred STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mesec{P 0 "" a e ev} pozneje STR_CONFIG_SETTING_AUTORENEW_MONEY :Samoobnovi najmanj potrebnega denarja za obnovo: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimalna vsota na banki pred upoštevanjem samoobnove STR_CONFIG_SETTING_ERRMSG_DURATION :Trajanje poročila o napaki: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trajanje sporočil o napakah v rdečem kvadratu. Kritična opozorila se ne zaprejo sama po tem času, ampak ročno. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund{P 0 o i e ""} STR_CONFIG_SETTING_HOVER_DELAY :Prikaz nasvetov orodij: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Čas do prikaza nasvetov orodij, ko je miška na orodju. Lahko se nasvete vidi tudi z desno tipko miške. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Zadrži za {COMMA} sekund{P 0 o i e ""} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Desni klik STR_CONFIG_SETTING_POPULATION_IN_LABEL :Prikaz števila prebivalcev ob imenu mesta: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikaz prebivalstva v njihovih oznakah na zemljevidu. STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debelina črt grafov: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debelina črte grafov. Tanjša je bolj natančna, debelejša bolj razločna. STR_CONFIG_SETTING_LAND_GENERATOR :Urejevalnik terena: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Največja oddaljenost rafinerij nafte od roba: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftne rafinerije se nahajajo le pri robu kater, to je ob obali na otoških kartah STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Nadmorska višina snežne odeje: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Valovitost terena (samo TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Zelo zglajen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Zglajen STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Valovit STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Zelo valovit STR_CONFIG_SETTING_TREE_PLACER :Algoritem postavljanja dreves: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Brez STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Izboljšan STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Zasuk višinskega zemljevida: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Nasprotno urini smeri STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Urina smer STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Višina, do katere sega raven tip terena: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Omogoči oblikovanje terena na robovih ozemlja: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Če je onemogočeno, bodo na robu ozemlja vedno oceani STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Eno ali več polj na severnem robu ni praznih STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Eno ali več polj na robu ni vodnatih STR_CONFIG_SETTING_STATION_SPREAD :Največji razpon postaje: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Največja površina na kateri so lahko deli ene postaje. Vzamite v obzir, da lahko visoke vrednosti upočasnijo igro. STR_CONFIG_SETTING_SERVICEATHELIPAD :Avtomatski servis helikopterjev na pristajališču: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Servisiranje helikopterjev po vsakem pristanku, tudi če ni hangarja na letališču. STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Pripni orodje za teren k orodju za gradnjo cest/železnic itd.: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Odpiranje orodja za teren poleg vseh orodij za gradnjo poti. STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Barva zemlje uporabljena na zemljevidu: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Barva ozemlja na majhnem zemljevidu STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zelena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Temno zelena STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Vijolična STR_CONFIG_SETTING_REVERSE_SCROLLING :Obrni smer premika okna: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Sistem delovanja avtomatskega pomika z miško na robu. Onemogočeno - miška premika pogled, omogočeno - miška premika zemljevid. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Gladek premik pogleda: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Način pomika pogleda na določen objekt majhnega zemljevida (centriranje pogleda). Omogočeno - pogled drsi, onemogočeno - pogled preskoči. STR_CONFIG_SETTING_MEASURE_TOOLTIP :Prikaz merilnega nasveta med uporabo gradbenih orodij: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Prikaz dolžine in višinskih razlik pri gradnji z vlečenjem. STR_CONFIG_SETTING_LIVERIES :Prikaz znakov podjetij: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrola uporabe lastnih specifičnih pogonov vozil (nasprotje s specifikami družbe) STR_CONFIG_SETTING_LIVERIES_NONE :Brez STR_CONFIG_SETTING_LIVERIES_OWN :Lastno podjetje STR_CONFIG_SETTING_LIVERIES_ALL :Vsa podjetja STR_CONFIG_SETTING_PREFER_TEAMCHAT :Izberi skupinski pogovor z : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Preklopi navezavo internega in javnega pogovora na >ENTER< ali >Ctrl+ENTER< STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funkcija kolesca miške: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Omogoči pomik z dvodimenzionalnimi kolesci miške STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Približaj zemljevid STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Premikaj zemljevid STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Izklopljeno STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Hitrost premika s kolescem miške: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kontrola občutljivosti miške med pomikom pogleda STR_CONFIG_SETTING_OSK_ACTIVATION :Tipkovnica na zaslonu: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Izberi način odpiranja tipkovnice na zaslonu za vpis teksta z miško STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Onemogočeno STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Dvojni klik STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Enojni klik (ko je izostreno) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Enojni klik (takojšnje) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulacija desnega gumba miške: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Izberi način emulacije klika desnega bumba miške STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Ukaz-klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrola-klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izklop STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Premik slike z levim klikom: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Omogoči pomik pogleda z levim klikom miške in vlečenjem. Primerno za dotične zaslone. STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Uporabi {STRING} format datuma za imena shranjevanja igre STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format datuma v imenih shranjenih iger STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dolg (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kratek (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Privzeti nabor za NewGRF-je brez izbranega nabora: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Privzeta paleta za uporabo z NewGRF-ji, kateri ne zahevajo specifične. STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Privzeta (D) paleta STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Avtomatsko pavziraj ob zagonu nove igre: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Če je omogočeno, se igra avtomatsko pavzira ob zagonu nove igre, za preučitev ozemlja. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Med pavzo dovoli: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Izbor operacij, izvedljivih med pavzo. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nobeno dejanje STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Vsa negradbena dejanja STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Vsa dejanja razen urejanja pokrajine STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Vsa dejanja STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uporabi napreden seznam vozil: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Omogoči uporabo naprednih seznamov vozil za skupine STR_CONFIG_SETTING_LOADING_INDICATORS :Uporabi pregledno polnenje: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Izbira prikaza stanja med polnjenjem vozil. STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Prikaz urnikov v pikah namesto dneh: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Prikaži čase potovanja v časovnih tabelah kot enote igre namesto dni. STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Prikaži prihod in odhod v urnikih: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Prikaži pričakovane čase odhodov in prihodov v časovnih tabelah. STR_CONFIG_SETTING_QUICKGOTO :Hitro ustvarjanje ukazov vozila: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Predizbor operacije "pojdi do", ko se odpre okno ukazov. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Privzeta vrsta železnice (ob zagonu nove igre): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tip tirov za izbor pri novi igri ali nalaganju igre. "Prvi na razpolago" je najstarejši tip, "zadnji na razpolago" je najnovejši, "najbolj uporabljen" je, kar je večina uporabe na ozemlju. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Prvi/a/o/ na izbiro STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Zadnji/a/o/ na izbiro STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Najbolj uporabljan/a/o STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Prikaz posebnih tirov: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Rezervirani tiri naj bod odruge barve, za pomoč v težavah, ko vlak noče v polje, čez katerega vodi pot. STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Ohrani orodja za gradnjo aktivna po uporabi: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Ohrani orodja za mostove, predore itd. odprta po uporabi. STR_CONFIG_SETTING_EXPENSES_LAYOUT :Prikaži stroške v tabeli financ po skupinah: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definiraj obliko za okno stroškov podjetja STR_CONFIG_SETTING_SOUND_TICKER :Povzetek novic: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Predvajaj zvok za sporočila o povzetkih novic STR_CONFIG_SETTING_SOUND_NEWS :Časopis: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Predvajaj zvok ob prikazu časopisa STR_CONFIG_SETTING_SOUND_NEW_YEAR :Konec leta: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Predvajaj zvočni efekt na koncu leta ob povzetku uspešnosti podjetja skozi leto v primerjavi s predhodnim letom STR_CONFIG_SETTING_SOUND_CONFIRM :Gradnja: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Predvajaj zvočni efekt ob uspešnih izgradnjah ali drugih dejanjih STR_CONFIG_SETTING_SOUND_CLICK :Zvok gumbov: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Zvok ob pritisku na gumb STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofe/nesreče: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Predvajaj zvočne efekte nesreč in katastrof STR_CONFIG_SETTING_SOUND_VEHICLE :Vozila: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Predvajaj zvoke vozil STR_CONFIG_SETTING_SOUND_AMBIENT :Okolje: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Predvajaj okoljske zvočne efekte pokrajin, industrij in mest STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Onemogoči infrastrukurno stavbo, če ni na voljo nobenih ustreznih vozil: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Če je omogočeno, je samo v primeru vozil na razpolago vidna infrastruktura, za preprečevanje vlaganja časa in denarja v neuporabno infrastrukturo. STR_CONFIG_SETTING_MAX_TRAINS :Največ vlakov na podjetje: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Največje število vlakov na družbo STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Največ cestnih vozil na podjetje: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Največje število cestnih vozil na družbo STR_CONFIG_SETTING_MAX_AIRCRAFT :Največ letal na podjetje: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Največje število letal na družbo. STR_CONFIG_SETTING_MAX_SHIPS :Največ ladij na podjetje: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Največje število ladij na družbo. STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Onemogoči vlake za računalnik: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Če je omogočeno, računalniški tekmec ne more graditi vlakov. STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Onemogoči cestna vozila za računalnik: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Če je omogočeno, računalniški tekmec ne more graditi cestnih vozil. STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Onemogoči letala za računalnik: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Če je omogočeno, računalniški tekmec ne more graditi letal. STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Onemogoči ladje za računalnik: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Če je omogočeno, računalniški tekmec ne more graditi ladij. STR_CONFIG_SETTING_AI_PROFILE :Profil privzetih nastavitev: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Izberi profil nastavitev za naključne UI ali za začetne vrednosti ob dodajanju UI ali skripta STR_CONFIG_SETTING_AI_PROFILE_EASY :Lahko STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Srednje težko STR_CONFIG_SETTING_AI_PROFILE_HARD :Težko STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Dovoli UI v večigralskem načinu: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Dovoli UI računalniškim tekmecem sodelovanje v večigralskem načinu. STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opkode pred skripti so zadržane: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Največje število stopenj izračuna, ki jih skript lahko naredi v enem obratu. STR_CONFIG_SETTING_SERVINT_ISPERCENT :Obdobja servisiranja so v procentih: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Izbira, ali se servisiranje vozil opravlja po pretečenem času ali po padcu zanesljivosti za določen procent od najvišje. STR_CONFIG_SETTING_SERVINT_TRAINS :Privzeto servisno obdobje vlakov: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Nastavitev privzetega obdobja servisiranja za železniška vozila, razen če ni izjemno nastavljeno obdobje za posamično vozilo. STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} d{P 0 an neva dni dni}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Onemogočeno STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Privzeto servisno obdobje cestnih vozil: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Nastavitev privzetega obdobja servisiranja za cestna vozila, razen če ni izjemno nastavljeno obdobje za posamično vozilo. STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Privzeto servisno obdobje letal: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Nastavitev privzetega obdobja servisiranja za letala, razen če ni izjemno nastavljeno obdobje za posamično letalo. STR_CONFIG_SETTING_SERVINT_SHIPS :Privzeto servisno obdobje ladij: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Nastavitev privzetega obdobja servisiranja za ladje, razen če ni izjemno nastavljeno obdobje za posamično ladjo. STR_CONFIG_SETTING_NOSERVICE :Onemogoči servisiranje, če so onemogočene okvare: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Če je omogočeno, se vozila ne servisirajo, če ni okvar. STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Omogoči omejitve hitrosti vagonov: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Če je omogočeno, se upošteva tudi omejitve hitrosti posameznih vagonov pri najvišji hitrosti vlaka. STR_CONFIG_SETTING_DISABLE_ELRAILS :Onemogoči električne tire: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Če je omogočeno, ni potrebna elektrifikacija železnice za električni pogon. STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Prihod prvega vozila na igralčevo postajo: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Prikaži novice, ko prvo vozilo prispe na novo igralčevo postajo STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Prihod prvega vozila na nasprotnikovo postajo: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Prikaz časopisa, ko pride prvo vozilo na postajo novega tekmeca. STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Nesreče / katastrofe: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Prikaži novice ko se zgodi nesreča STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informacije o podjetju: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Prikaz časopisa, ko se ustanovi novo podjetje ali ko se pripravlja na bankrot STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Odpiranje industrij: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Prikaz časopisa ob odprtju industrij STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Zapiranje industrij: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Prikaz časopisa ob zaprtju industrij STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomske spremembe: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Prikaz časopisa ob globalnih ekonomskih spremembah STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Sprememba proizvodnje industrij v oskrbi podjetja: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Prikaži časopis ob spremembi proizvajalne ravni industrij, ki jih servisira podjetje ali tekmeci STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Proizvodne spremembe industrij v oskrbi tekmecev: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Prikaži časopis ob spremembi proizvajalne ravni industrij, ki jih servisira tekmec STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Spremembe proizvodnje drugih industrij: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Prikaži časopis ob spremembi proizvajalne ravni industrij, ki jih ne servisira podjetje ali tekmeci STR_CONFIG_SETTING_NEWS_ADVICE :Nasveti / informacije o vozilih podjetja: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Prikaži sporočilo, ko vozila potrebujejo pozornost STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nova vozila: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Prikaži sporočilo, ko postane novo vozilo na voljo STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Spremebe v sprejemanju tovora: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Prikaži sporočilo on spremembi sprejemanja nekaterih vrst tovora na postajah STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvencije: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Prikaz časopis o subvencijskih povezanih dogodkov STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Splošne Informacije: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Prikaži časopis o splošnih novicah, kot so nakupi izključih pravic ali financiranja obnov cest STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Izključeno STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Povzetek STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Polno STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Barvni časopis se pojavi leta: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Leto začetka barvnega časopisa. Pred tem je črno-bel. STR_CONFIG_SETTING_STARTING_YEAR :Začetno leto: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Omogoči gladko ekonomijo (več manjših sprememb): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Če je omogočeno, se proizvodnja industrij večkrat spreminja in v manjših razlikah. Nima vpliva na industrije NewGRF. STR_CONFIG_SETTING_ALLOW_SHARES :Dovoli kupovanje delnic od drugih podjetij: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Če je omogočeno, se lahko trguje z delnicami podjetij. Na voljo samo po določeni starosti podjetja. STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procent osnovnega dobička za plačilo v sklade: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Procent prihodkov vložen v srednje sklade, ki omogoča več kontrole nad prihodki. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Med vlečenjem postavi signale v razmaku: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Razdalja postavitve signalov do naslednjega signala/prepreke pri načinu z vlečenjem. STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} plošč{P 0 o i e ""} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Med vlečenjem drži trajni razmak med signali: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Izbira ozadja postavitve signalov s Ctrl+vleko signalov. Če je onemogočeno, se signali postavijo ob predorih in mostih, da se preprečijo dolgi odseki brez signalov. Če je omogočeno, se postavijo signali vsakih Št. polj. STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Samodejno postavi semaforje pred: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Nastavitev leta, kdaj se prične uporaba električnih signalov. Pred tem so mehanski. STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Omogoči vmesnik signalov: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Prikaz okna za izbor tipa signalov, namesto brezokenskega vrtečega načina Ctrl+klikanje. STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Privzet tip signalov za gradnjo: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Privzet tip signalov STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normalni STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Napredni STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Enosmerni napredni STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Krožni izbor tipa signalov: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Izbira tipa signalov za vrtilni-izbor. Ctrl+klik na signal z orodjem za signale. STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Samo normalni STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Samo napredni STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Vse STR_CONFIG_SETTING_TOWN_LAYOUT :Oblika cest za nova mesta: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Postavitev cestnega omrežja mest STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Privzeto STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Boljše ceste STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 mreža STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 mreža STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Naključno STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Mesta lahko gradijo ceste: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Dovoli mestom gradnjo cest za širjenje. Onemogočeno - mesta sama ne morejo graditi cest. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Mestom je dovoljena izgradnja istonivojnih prehodov: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Če je omogočeno, lahko mesta sama gradijo nivojske železniške prehode. STR_CONFIG_SETTING_NOISE_LEVEL :Omogoči mestni nadzor hrupa za letališča: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Če je onemogočeno, lahko mesta sprejmejo po 2 letališči. Omogočeno - Število letališč se sprejme po hrupu, odvisno od št. prebivalcev, oddaljenosti, velikosti. STR_CONFIG_SETTING_TOWN_FOUNDING :Ustanavljanje mest v igri: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Če je omogočeno, lahko igralci ustanovijo nova mesta. STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Prepovedano STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Dovoljeno STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Dovoljeno, oblika mesta po meri STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Sajenje dreves znotraj igre: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Nadziraj naključne vrste dreves med igro. To lahko vpliva na industrije, ki so odvisne od rasti dreves, na primer gozdarski obrat. STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nikjer {RED}(onemogoči gozdarski obrat) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Samo v deževnih gozovih STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Povsod STR_CONFIG_SETTING_TOOLBAR_POS :Pozicija glavne orodne vrstice: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Vodoravna pozicija glavne orodne vrstice na vrhu zaslona. STR_CONFIG_SETTING_STATUSBAR_POS :Položaj statusne vrstice: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Vodoravna pozicija vrstice stanja na dnu zaslona. STR_CONFIG_SETTING_SNAP_RADIUS :Območje lepljenja oken: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Razmak med okni, preden se poravnajo s sosednjim. STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} piks{P 0 el la le lov} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Onemogočeno STR_CONFIG_SETTING_SOFT_LIMIT :Največje število nelepljivih oken: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Število nelepljivih odprtih oken preden se stara začno zapirati. STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :onemogočeno STR_CONFIG_SETTING_ZOOM_MIN :Največji nivo povečave: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Največja povečava pogleda. Prevelika povečava zaseda spomin. STR_CONFIG_SETTING_ZOOM_MAX :Največja oddaljenost pogleda: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Največja pomanjšava pogleda. Večje nastavitve lahko povzročijo slabe učinke. STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normalno STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Hitrost rasti mesta: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Hitrost rasti mest STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Brez STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Počasi STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normalno STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Hitro STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Zelo hitro STR_CONFIG_SETTING_LARGER_TOWNS :Delež naselij, ki bodo postala mesta: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Količina naselij, ki bodo postala mesta, ne glede na to, da mesta, ki startajo večja, rastejo hitreje. STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 na {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Noben STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Začetni faktor rasti mesta: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Povprečna velikost mest relativno gledano na normalna naselja na začetku igre. STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Odstrani absurdne cestne elemente med gradnjo cest: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Odstrani slepe odseke cest med financirano obnovo cest. STR_CONFIG_SETTING_GUI :{ORANGE}Vmesnik STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Gradnja STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vozila STR_CONFIG_SETTING_STATIONS :{ORANGE}Postaje STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomija STR_CONFIG_SETTING_AI :{ORANGE}Tekmeci STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Prikaži možnosti STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaktivnost STR_CONFIG_SETTING_SOUND :{ORANGE}Zvočni učinki STR_CONFIG_SETTING_NEWS :{ORANGE}Novice in sporočila STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signali STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Upravljanje tovora STR_CONFIG_SETTING_AI_NPC :{ORANGE}Računalniški igralci STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Samoobnova STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Servisiranje STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Usmerjanje STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vlaki STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Mesta STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrije STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Priporočeno) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Iskalnik poti za vlake: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Iskalnik poti za vlake. STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Iskalnik poti za vozila: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Iskalnik poti za cestna vozila. STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Logaritem poti za ladje: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Iskalnik poti za ladje. STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Avtomatično obračanje pri signalih: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Dovoli vlakom obračanje na signalih, če so tam čakali že dolgo. STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Spremeni vrednost # Config errors STR_CONFIG_ERROR :{WHITE}Napaka s konfiguracijsko datoteko... STR_CONFIG_ERROR_ARRAY :{WHITE}... napaka v razporeditvi '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... neveljavna vrednost '{STRING}' za '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... zaključnih znakov na koncu nastavitve '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... neskladne NewGRF '{STRING}': podvojitev ID-ja GRF s/z '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... neupoštev neveljavne NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :ni najdeno STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nevarno za statično rabo STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistemski NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nezdružljivo s to različico OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :neznano STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nivo stiskanja '{STRING}' ni veljaven STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... format shranjevanja igre '{STRING}' ni na voljo. Vračanje na '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoriran osnovni grafični set '{STRING}': ni najden STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoriran osnovni zvočni set '{STRING}': ni najden STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoriran osnovni glasbeni set '{STRING}': ni najden STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Premalo pomnilnika STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Priprava {BYTES} za predpomnilnik sličic ni uspela. Pomnilnik je bil zmanjšan na {BYTES}. To bo zmanjšalo zmogljivost OpenTTD. Za zmanjšanje potrebe po spominu onemogoči podporo za 32 bitne sličice # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nova igra STR_INTRO_LOAD_GAME :{BLACK}Naloži igro STR_INTRO_PLAY_SCENARIO :{BLACK}Igraj scenarij STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Igraj višinsko karto STR_INTRO_SCENARIO_EDITOR :{BLACK}Urejevalnik ozemlja STR_INTRO_MULTIPLAYER :{BLACK}Več igralcev STR_INTRO_GAME_OPTIONS :{BLACK}Možnosti STR_INTRO_HIGHSCORE :{BLACK}Tabela najboljših rezultatov STR_INTRO_ADVANCED_SETTINGS :{BLACK}Napredne nastavitve STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF nastavitve STR_INTRO_ONLINE_CONTENT :{BLACK}Preveri razpoložljive vsebine STR_INTRO_SCRIPT_SETTINGS :{BLACK}UI / Nastavitve skriptov igre STR_INTRO_QUIT :{BLACK}Izhod STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Začni novo igro. Ctrl+Klik preskoči konfiguracijo sveta STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Naloži shranjeno igro STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Začni novo igro z uporabo višinske karte za pokrajino STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Začni novo igro po scenariju STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Ustvari svet/scenarij po meri STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Poženi večigralsko igro STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Izberi zmeren tip podnebja STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Izberi sub-arktični tip podnebja STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Izberi subtropski tip podnebja STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izberi ozemlje v svetu igrač STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Prikaži možnosti igre STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Prikaži tabelo najboljših rezultatov STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Prikaz naprednih nastavitev STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Prikaži nastavitve NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Preveri posodobljene vsebine na strežniku,{} ki so na voljo za prenos STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikaži UI in Nastavitve skriptov igre STR_INTRO_TOOLTIP_QUIT :{BLACK}Izhod iz 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Temu prevodu manjka {NUM} vnos{P "" a i ov}. Prosimo pomagaj izboljšati OpenTTD in se vpiši za prevajanje. Preveri readme.txt za podrobnosti. # Quit window STR_QUIT_CAPTION :{WHITE}Izhod STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Zagotovo želiš zapustiti igro in se vrniti v {STRING}? STR_QUIT_YES :{BLACK}Da STR_QUIT_NO :{BLACK}Ne # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Zapusti igro STR_ABANDON_GAME_QUERY :{YELLOW}Zagotovo želiš zapustiti igro? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Zagotovo želiš zapustiti ta scenarij? # Cheat window STR_CHEATS :{WHITE}Goljufije STR_CHEATS_TOOLTIP :{BLACK}Kljukice kažejo, če so bile goljufije že kdaj uporabljene STR_CHEATS_WARNING :{BLACK}Pozor! Nameravaš izdati svoje tekmece. Tako sramotno dejanje bo zabeleženo za vselej STR_CHEAT_MONEY :{LTBLUE}Povečaj denar za {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Igra kot podjetje: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Čarobni buldožer (odstrani industrije, neodstranljive objekte): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneli se lahko križajo pod zemljo: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktivna letala ne bodo (pogosto) strmoglavila na malih letališčih: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Zmerno podnebje STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub arktično podnebje STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub tropsko podnebje STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Pokrajina v deželi igrač STR_CHEAT_CHANGE_DATE :{LTBLUE}Spremeni datum: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Spremeni trenutno leto STR_CHEAT_SETUP_PROD :{LTBLUE}Omogoči spreminjanje proizvodnih vrednosti: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nova barvna shema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Prikaz glavnih barvnih shem STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Prikaz barvnih shem vlakov STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Prikaz barvnih shem cestnih vozil STR_LIVERY_SHIP_TOOLTIP :{BLACK}Prikaz barvnih shem ladij STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Prikaz barvnih shem letal STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izberi glavno barvo za izbrano shemo. Ctrl+klik nastavi to barvo za vse sheme. STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Izberi drugo barvo za izbrano shemo. Ctrl+klik izbere to barvo za vse sheme STR_LIVERY_PANEL_TOOLTIP :{BLACK}Izberi barvno shemo za zamenjati ali več shem s Ctrl+Klik. Klikni na okno za preklop sheme STR_LIVERY_DEFAULT :Standardni pogon STR_LIVERY_STEAM :Parna lokomotiva STR_LIVERY_DIESEL :Diesel lokomotiva STR_LIVERY_ELECTRIC :Električna lokomotiva STR_LIVERY_MONORAIL :Enotirna lokomotiva STR_LIVERY_MAGLEV :Magnetna lokomotiva STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Potniški vagon (za parne vlake) STR_LIVERY_PASSENGER_WAGON_DIESEL :Potniški vagon (za diesel vlake) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Potniški vagon (za električne vlake) STR_LIVERY_PASSENGER_WAGON_MONORAIL :potniški vagon (enotirni) STR_LIVERY_PASSENGER_WAGON_MAGLEV :potniški vagon (maglev) STR_LIVERY_FREIGHT_WAGON :Tovorni vagon STR_LIVERY_BUS :Avtobus STR_LIVERY_TRUCK :Tovornjak STR_LIVERY_PASSENGER_SHIP :Potniška ladja STR_LIVERY_FREIGHT_SHIP :Tovorna ladja STR_LIVERY_HELICOPTER :Helikopter STR_LIVERY_SMALL_PLANE :majhno letalo STR_LIVERY_LARGE_PLANE :Veliko letalo STR_LIVERY_PASSENGER_TRAM :Potniški tramvaj STR_LIVERY_FREIGHT_TRAM :Tovorni tramvaj # Face selection window STR_FACE_CAPTION :{WHITE}Izbira obraza STR_FACE_CANCEL_TOOLTIP :{BLACK}Prekliči izbiro novega obraza STR_FACE_OK_TOOLTIP :{BLACK}Sprejmi nov obraz STR_FACE_MALE_BUTTON :{BLACK}Moški STR_FACE_MALE_TOOLTIP :{BLACK}Izberi moške slike STR_FACE_FEMALE_BUTTON :{BLACK}Ženska STR_FACE_FEMALE_TOOLTIP :{BLACK}Izberi ženske slike STR_FACE_NEW_FACE_BUTTON :{BLACK}Nov obraz STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Naredi naključno novo sliko STR_FACE_ADVANCED :{BLACK}Napredno STR_FACE_ADVANCED_TOOLTIP :{BLACK}Napredna izbira obraza STR_FACE_SIMPLE :{BLACK}Enostavno STR_FACE_SIMPLE_TOOLTIP :{BLACK}Enostavna izbira obraza STR_FACE_LOAD :{BLACK}Naloži STR_FACE_LOAD_TOOLTIP :{BLACK}Naloži piljubljen obraz STR_FACE_LOAD_DONE :{WHITE}Tvoj priljubljen obraz je bil naložen iz OpenTTD konfiguracije STR_FACE_FACECODE :{BLACK}Obraz igralca št. STR_FACE_FACECODE_TOOLTIP :{BLACK}Prikaži in/ali nastavi številko direktorjevega obraza STR_FACE_FACECODE_CAPTION :{WHITE}Prikaži in/ali nastavi številko direktorjevega obraza STR_FACE_FACECODE_SET :{WHITE}Nova koda številke obraza je nastavljena STR_FACE_FACECODE_ERR :{WHITE}Ni mogoče nastaviti številke direktorjevega obraza - izbor mogoč med 0 in 4,294,967,295! STR_FACE_SAVE :{BLACK}Shrani STR_FACE_SAVE_TOOLTIP :{BLACK}Shrani priljubljen obraz STR_FACE_SAVE_DONE :{WHITE}Ta obraz bo shranjen kot tvoj priljubljen v konfiguracijo OpenTTD STR_FACE_EUROPEAN :{BLACK}Evropski STR_FACE_SELECT_EUROPEAN :{BLACK}Izbor evropskih obrazov STR_FACE_AFRICAN :{BLACK}Afriški STR_FACE_SELECT_AFRICAN :{BLACK}Izbor afriških obrazov STR_FACE_YES :Da STR_FACE_NO :Ne STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Vklop brk ali uhanov STR_FACE_HAIR :Lasje: STR_FACE_HAIR_TOOLTIP :{BLACK}Spremeni lase STR_FACE_EYEBROWS :Obrvi: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Spremeni obrvi STR_FACE_EYECOLOUR :Barva oči: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Spremeni barvo oči STR_FACE_GLASSES :Očala: STR_FACE_GLASSES_TOOLTIP :{BLACK}Vklopi očala STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Spremeni očala STR_FACE_NOSE :Nos: STR_FACE_NOSE_TOOLTIP :{BLACK}Spremeni nos STR_FACE_LIPS :Ustnice: STR_FACE_MOUSTACHE :Brke: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Spremeni ustnice ali brke STR_FACE_CHIN :Brada: STR_FACE_CHIN_TOOLTIP :{BLACK}Spremeni brado STR_FACE_JACKET :Jakna: STR_FACE_JACKET_TOOLTIP :{BLACK}Spremeni jakno STR_FACE_COLLAR :Ovratnik: STR_FACE_COLLAR_TOOLTIP :{BLACK}Spremeni ovratnik STR_FACE_TIE :Kravata: STR_FACE_EARRING :Uhani: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Spremeni kravato ali uhane # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Več igralcev STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Povezava: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izberi med internetom ali lokalno mrezo (LAN) STR_NETWORK_SERVER_LIST_LAN :Lokalno omrežje STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ime igralca: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}To je ime, po katerem te prepoznajo drugi igralci STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ime STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Ime igre STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Gosti STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Gosti na zvezi / največ gostov{}Podjetja na zvezi / največ podjetij STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Velikost ozemlja STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Velikost ozemlja igre{}Klikni za sortiranje po območju STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Tekoči datum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Leta STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Število let {}kar teče igra STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Jezik, različica strežnika, itd. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikni na igro v seznamu, da jo izbereš STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Zadnjič obiskani strežnik: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klikni za izbiro zadnjič obiskanega strežnika STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}IGRA - INFO STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Gosti: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Jezik: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Pokrajina: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Velikost ozemlja: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Različica strežnika: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Naslov strežnika: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Začetni datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Tekoči datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Zaščiten z geslom! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}STREŽNIK IZKLJUČEN STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}STREŽNIK POLN STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}NESKLADJE RAZLIČIC STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NESKLADJE GRAFIK STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Pridruži se igri STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Osveži strežnik STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Osveži informacije strežnika STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Najdi strežnik STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Poišči strežnik na mreži STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj strežnik STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Doda strežnik na seznam, ki bo vedno preverjen za pognane igre STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Poženi strežnik STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Poženi lasten streznik STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Vpiši tvoje ime STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Vnesi naslov gostitelja # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Poženi novo igro za več igralcev STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Ime igre: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Ime bo prikazano drugim igralcem na večigralskem seznamu STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastavi geslo STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zaščiti igro z geslom, če želiš preprečiti dostop nepovabljenim STR_NETWORK_START_SERVER_LAN_INTERNET :Lokalno omrežje / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (oglašuj) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} gost{P "" a i ov} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Dovoljeno število gostov: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izberite največje število gostov. Ni potrebno, da so vsi prisotni STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} podjet{P je ji ja ij} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Dovoljeno število podjetij: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Omeji strežnik na določeno število podjetij STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} opazoval{P ec ca ci cev} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Največje število opazovalcev: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Omeji strežnik na določeno število opazovalcev STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Govorni jezik: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Drugi igralci bodo lahko vedeli, kateri jezik se govori na strežniku STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Vpiši ime za mrežno igro # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Kakršen koli STR_NETWORK_LANG_ENGLISH :Angleški STR_NETWORK_LANG_GERMAN :Nemški STR_NETWORK_LANG_FRENCH :Francoski STR_NETWORK_LANG_BRAZILIAN :Brazilski STR_NETWORK_LANG_BULGARIAN :Bolgarski STR_NETWORK_LANG_CHINESE :Kitajski STR_NETWORK_LANG_CZECH :Češki STR_NETWORK_LANG_DANISH :Danski STR_NETWORK_LANG_DUTCH :Nizozemski STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finski STR_NETWORK_LANG_HUNGARIAN :Madžarski STR_NETWORK_LANG_ICELANDIC :Islandski STR_NETWORK_LANG_ITALIAN :Italijanski STR_NETWORK_LANG_JAPANESE :Japonski STR_NETWORK_LANG_KOREAN :Korejski STR_NETWORK_LANG_LITHUANIAN :Litvijski STR_NETWORK_LANG_NORWEGIAN :Norveški STR_NETWORK_LANG_POLISH :Poljski STR_NETWORK_LANG_PORTUGUESE :Portugalski STR_NETWORK_LANG_ROMANIAN :Romunski STR_NETWORK_LANG_RUSSIAN :Ruski STR_NETWORK_LANG_SLOVAK :Slovaški STR_NETWORK_LANG_SLOVENIAN :Slovenski STR_NETWORK_LANG_SPANISH :Španski STR_NETWORK_LANG_SWEDISH :Švedski STR_NETWORK_LANG_TURKISH :Turški STR_NETWORK_LANG_UKRAINIAN :Ukrajinski STR_NETWORK_LANG_AFRIKAANS :Afriški STR_NETWORK_LANG_CROATIAN :Hrvaški STR_NETWORK_LANG_CATALAN :Katalonski STR_NETWORK_LANG_ESTONIAN :Estonski STR_NETWORK_LANG_GALICIAN :Galijski STR_NETWORK_LANG_GREEK :Grški STR_NETWORK_LANG_LATVIAN :Latvijski ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Seje večigralskih iger STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Priprava na vstop: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Seznam podjetij trenutno v tej igri. Lahko se pridružiš eni ali poženeš novo, če je kako mesto za podjetje prosto STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}PODATKI O PODJETJU STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Ime podjetja: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Ustanovljeno: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Vrednost podjetja: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Trenutno stanje: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Lanski dohodek: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Ocene: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vozila: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Postaje: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Igralci: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Novo podjetje STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Ustvari novo podjetje STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Ogled igre STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Sodeluj kot gledalec STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Pridruži se podjetju STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Pomagaj upravljati podjetje # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Povezujem... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Povezujem... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Pooblaščam... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Čakam... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Prenašam zemljevid... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Obdelujem podatke... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registriram... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Iščem informacije o igri... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Iščem informacije o podjetju... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} gost{P "" a i ov} je pred tabo STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} prenešenih STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} prenešenih STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Odklopi STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Strežnik je zaščiten.Vnesi geslo STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Podjetje je zaščiteno. Vnesi geslo # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Seznam gostov STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Opazuj STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Novo podjetje # Network client list STR_NETWORK_CLIENTLIST_KICK :Brcni STR_NETWORK_CLIENTLIST_BAN :Blokiraj STR_NETWORK_CLIENTLIST_GIVE_MONEY :Daj denar STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Pogovor vsem STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Pogovor podjetju STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Zasebno sporočilo STR_NETWORK_SERVER :Strežnik STR_NETWORK_CLIENT :Gost STR_NETWORK_SPECTATORS :Gledalci STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vpiši znesek denarja za darovanje # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne shrani vnešenega gesla STR_COMPANY_PASSWORD_OK :{BLACK}Dodeli družbi novo geslo STR_COMPANY_PASSWORD_CAPTION :{WHITE}Geslo družbe STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Privzeto geslo družbe STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Uporabi geslo te družbe kot privzeto za nove družbe # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pridruži se STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridruži se in igraj kot to podjetje STR_COMPANY_VIEW_PASSWORD :{BLACK}Geslo STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Zaščiti svoje podjetje z geslom, da preprečiš priključitev drugih uporabnikov k podjetju STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Nastavi geslo podjetja # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Pošlji STR_NETWORK_CHAT_COMPANY_CAPTION :[Skupina] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Zasebno] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Vsi] : STR_NETWORK_CHAT_COMPANY :[Skupina] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Skupina] Za {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Zasebno] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Zasebno] Za {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Vsi] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Vpiši tekst za mrežni pogovor # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Ni najdenih mrežnih naprav ali ni aktiviran ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Ni mogoče najti mrežnih iger STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Strežnik ni odgovoril zahtevi STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Povezava ni mogoča zaradi neskladja datotek NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Sinhronizacija mrežne igre ni uspela STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Povezava mrežne igre je padla STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Ni mogoče naložiti shranjene igre STR_NETWORK_ERROR_SERVER_START :{WHITE}Strežnika ni mogoče zagnati STR_NETWORK_ERROR_CLIENT_START :{WHITE}Povezava ni mogoča STR_NETWORK_ERROR_TIMEOUT :{WHITE}Povezava #{NUM} je potekla STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Narejena je bila napaka protokola in povezava je bila prekinjena STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Različica tega gosta je neskladna s strežnikovo razlicico STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Napačno geslo STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Strežnik je zaseden STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Izvrzen/a si iz tega streznika STR_NETWORK_ERROR_KICKED :{WHITE}Brcnjen/a si bil/a iz igre STR_NETWORK_ERROR_CHEATER :{WHITE}Goljufanje ni dovoljeno na tem strežniku STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Pošiljal si preveč ukazov strežniku STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Tvoj čas za vnos gesla je bil predolg STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Tvoj računalnik je prepočasen in ne dohiteva strežnika STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Tvoj prenos ozemlja je trajal predolgo STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Priklop na strežnik je trajal predolgo ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :splošna napaka STR_NETWORK_ERROR_CLIENT_DESYNC :desinhronizacijska napaka STR_NETWORK_ERROR_CLIENT_SAVEGAME :ni mogoče naložiti zemljevida STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :povezava prekinjena STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :napaka protokola STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF neskladje STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nepooblaščen STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :sprejet je bil neveljaven oz. nepričakovan paket STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :napačna različica STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ime je že v uporabi STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :napačno geslo STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :napačna oznaka podjetja v DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :brcnjen od gostitelja STR_NETWORK_ERROR_CLIENT_CHEATER :je poskusil/a uporabiti goljufanje STR_NETWORK_ERROR_CLIENT_SERVER_FULL :gostitelj zaseden STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :je pošiljal preveč ukazov STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :ni bilo pravočasno prejetega gesla STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :čas je potekel STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :prenos ozemlja je trajal predolgo STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :obdelava ozemlja je trajala predolgo ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Povezava je mogoče prekinjena STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Zadnj{P 0 o i e ih} {NUM} sekund{P o i e ""} ni bilo prejetih nobenih podatkov s strežnika # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Igra je prekinjena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Igra je še vedno prekinjena ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Igra je še vedno prekinjena ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Igra je še vedno prekinjena ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Igra je še vedno ustavljena ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Igra ponovno teče ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :število igralcev STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :povezujem goste STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ročno STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :skripta ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :zapušča STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} pristopa k igri STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} se je pridružil igri (Gost #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} se pridružuje podjetju #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se pridružuje opazovalcem STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} na novo ustvarja podjetje (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} odstopa od igre ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} je opravil/a spremembo imena v {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je podarilo tvojemu podjetju {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Podjetju {1:STRING} je bil podarjen znesek {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Strežnik je zaprl sejo STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Strežnik se zaganja...{}Prosim počakaj... # Content downloading window STR_CONTENT_TITLE :{WHITE}Prenos vsebin STR_CONTENT_TYPE_CAPTION :{BLACK}Vrsta STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Vrsta vsebine STR_CONTENT_NAME_CAPTION :{BLACK}Ime STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ime vsebine STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klikni na vrstico za detajle.{}Klikni na okence, de je izbereš za prenos STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Izberi vse STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označi vse vsebine za prenos STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Izberi nadgradnje STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Označi vse nadgradne vsebine za obstoječe vsebine prenosa STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nobena STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Označi vse, da ne bo prenešeno STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Poišči zunanje spletne strani STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Vsebina iskanja ni na voljo v OpenTTD-jevem servisu STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Zapuščaš OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Izjave in pogoji za prenos vsebin iz zunanjih strežnikov se spreminjajo.{}Sklicuj je na zunanje strani za navodila o instalaciji vsebin v OpenTTD.{}Želiš nadaljevati? STR_CONTENT_FILTER_TITLE :{BLACK}Oznaka/ime filtra: STR_CONTENT_OPEN_URL :{BLACK}Obišči spletno stran STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Obišči spletno mesto za to vsebino STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Prenesi STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Požene prenos izbranih vsebin STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Skupna velikost prenosa: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}VSEBINA PRENOSA STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}To ni izbrano za prenos STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}To je izbrano za prenos STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Ta podvsebina je bila izbrana za prenos STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}To že imaš STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Ta vsebina je nepoznana in ne more biti prenešena v OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}To je zamenjava za obstoječo {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Ime: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Verzija: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Opis: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Vrsta: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Velikost prenosa: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Izbrana zaradi: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Pod vsebine: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Rubrike: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD je zgrajen brez "zlib" podpore... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... prenos vsebin ni mogoč! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Osnovne grafike STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :UI STR_CONTENT_TYPE_AI_LIBRARY :UI knjižnica STR_CONTENT_TYPE_SCENARIO :Scenarij STR_CONTENT_TYPE_HEIGHTMAP :Višinska karta STR_CONTENT_TYPE_BASE_SOUNDS :Osnovni zvoki STR_CONTENT_TYPE_BASE_MUSIC :Osnovna glasba STR_CONTENT_TYPE_GAME_SCRIPT :Skripta STR_CONTENT_TYPE_GS_LIBRARY :GS knjižnica # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Prenos vsebin... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Zahteva datotek... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Trenutno v prenosu {STRING} ({NUM} of {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Prenos zaključen STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} od {BYTES} prenešenih ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Povezava do strežnika vsebin ni mogoča... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Prenos ni uspel... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... povezava prekinjena STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... datoteka ni zapisljiva STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}No mogoče razpakiranje prenešene datoteke STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Manjkajoče grafike STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD potrebuje grafike za delovanje, a ni nobenih najdenih. Dovoliš OpenTTD-ju da prenese in namesti te grafike? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Da, prenesi grafike STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, zapusti OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Nastavitve prozornega pogleda STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Prozoren ali poln pogled imen postaj. Ctrl+Klik za zaklepanje STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Prozoren ali poln pogled dreves. Ctrl+Klik za zaklepanje STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Prozoren ali navaden pogled hiš. Ctrl+Klik za zaklepanje STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Prozoren ali navaden pogled industrij. Ctrl+Klik za zaklepanje STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Prozoren ali navaden pogled ostalih objektov kot so postaje, garaže... Ctrl+Klik za zaklepanje STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Prozoren ali navaden pogled mostov. Ctrl+Klik za zaklepanje STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Prozoren ali navaden pogled struktur kot so antene, svetilniki... Ctrl+Klik za zaklepanje STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Preklop prosojnosti za pogone. Ctrl+Klik za zaklepanje STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Preklop na prosojnost za prikaz polnenja. Ctrl+Klik za zaklepanje STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Nastavi predmete nevidne namesto prosojne # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Osvetlitev območja zajema STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Izključeno STR_STATION_BUILD_COVERAGE_ON :{BLACK}Vključeno STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Ne osvetli zajemnega območja predvidene lokacije STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Osvetli zajemno območje predvidene lokacije STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Sprejema: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Dobavlja: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Združi postaje STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Izgradnja ločene postaje STR_JOIN_WAYPOINT_CAPTION :{WHITE}Združi točke poti STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Zgradi ločeno točko poti # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Gradnja železnice STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Gradnja elektrificirane železnica STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Gradnja enotirne železnice STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Gradnja magnetne železnice STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Zgradi tračnice. Ctrl preklopi gradnja/rušenje za gradnjo železnice. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Gradi tire s pomočjo Samodejne gradnje. Ctrl preklopi gradnja/rušenje za gradnjo železnice. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Zgradi žel. garažo (za izdelavo in servis vlakov). Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Pretvori tire v točko poti. Ctrl omogoči združevanje točk poti. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Zgradi žel. postajo. Ctrl omogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Zgradi železniško signalizacijo. Ctrl preklopi semaforje/svetlobne signale{}Vlečenje zgradi signale po ravni črti. Ctrl zgradi signale do naslednjega križišča{}Ctrl+Klik odpre izbiro signala. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Zgradi žel. most. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Zgradi žel. predor. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Preklopi gradnja/rušenje železniških prog, signalov, točk poti in postaj. Držanje Ctrl odstrani tudi tire s točk poti in postaj STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Pretvori/nadgradi tip tirov. Shift preklaplja med izgradnjo in predvidenimi stroški STR_RAIL_NAME_RAILROAD :Železnica STR_RAIL_NAME_ELRAIL :Električna železnica STR_RAIL_NAME_MONORAIL :Enotirna železnica STR_RAIL_NAME_MAGLEV :Magnetna železnica # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Smer žel. garaže STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Izberi smer železniške garaže # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Točka poti STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Izberi vrsto točke poti # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Izbira železniške postaje STR_STATION_BUILD_ORIENTATION :{BLACK}Orientacija STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Izberi orientacijo železniške postaje STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Število peronov STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Izberi število peronov železniške postaje STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Dolžina perona STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Izberi dolžino železniške postaje STR_STATION_BUILD_DRAG_DROP :{BLACK}Vleci in spusti STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Zgradi postajo s povleci in spusti STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Izberi vrsto postaje za prikaz STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Izberi vrsto postaje za gradnjo STR_STATION_CLASS_DFLT :Privzeta postaja STR_STATION_CLASS_WAYP :Točke poti # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Izbor signalov STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Standardni signal (semafor){}Signali so potrebni, da preprečijo vlaku trčenje na progi z več vlaki STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Vhodni signal (semafor){}Zelen v kolikor je vsaj en ali več izhodnih signalov v nadaljevanju proge. Če ne, je rdeč STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Izhodni signal (semafor){}Deluje kot normalen semafor, le da mora biti povezan z ustreznim vhodnim ali kombiniranim signalom STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinirani signal (semafor){}Kombinirani signal deluje kot vhodni in izhodni. To omogoča gradnjo velikih vej signalizacije STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Napredni signal (semafor){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Napredni enosmerni signal (semafor){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standardni signal (električni){}Signali so potrebni, da preprečijo vlaku trčenje na progi z več vlaki STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Vhodni signal (električni){}Zelen v kolikor je vsaj en ali več izhodnih signalov v nadaljevanju proge. Če ne, je rdeč STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izhodni signal (električni){}Deluje kot normalen semafor, le da mora biti povezan z ustreznim vhodnim ali kombiniranim pred-signalom STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinirani signal (električni){}Kombinirani signal deluje kot vhodni in izhodni. To omogoča gradnjo velikih vej signalizacije STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Napredni signal (električni){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Napredni enosmerni signal (električni){}Napredni signal omogoča vstop več kot enemu vlaku v odsek proge, če ima na voljo prostor za varno ustavitev. Napredni signali se lahko prevozijo s hrbtne strani STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zamenjava signala{}Ko je možnost izbrana, se ob kliku na obstoječi signal le ta spremeni v izbrano vrsto. Ctrl-Klik preklaplja obstoječo vrsto. Shift+Klik prikaže predviden strošek zamenjave STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Gostota vlečnih signalov STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Zmanjšaj gostoto signala za vlečenje STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Povečaj gostoto signala za vlečenjeIncrease dragging signal density # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Izberi železniski most STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Izberi cestni most STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Izbira mostu - klikni na željeni most za izgradnjo STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Viseč, Jeklen STR_BRIDGE_NAME_GIRDER_STEEL :Nosilni, Jeklen STR_BRIDGE_NAME_CANTILEVER_STEEL :Nosilni križi, Jeklen STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Viseč, Betonski STR_BRIDGE_NAME_WOODEN :Lesen STR_BRIDGE_NAME_CONCRETE :Betonski STR_BRIDGE_NAME_TUBULAR_STEEL :Cevast, Jeklen STR_BRIDGE_TUBULAR_SILICON :Cevast, Silicijev # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Cestne gradnje STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Gradnja tramvaj proge STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Zgradi cestni odsek. Ctrl preklopi gradnja/rušenje za gradnjo ceste. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Zgradi odsek proge. Ctrl preklopi gradnja/rušenje za gradnjo proge za tramvaje. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Gradnja cestnega odseka v avtomatskem načinu. Ctrl preklopi gradnja/rušenje za gradnjo ceste. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Gradnja tramvaj proge v avtomatskem načinu. Ctrl preklopi gradnja/rušenje za gradnjo proge za tramvaje. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Zgradi garažo cestnih vozil (za izdelavo in servis vozil). Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Zgradi tramvaj garažo (za izdelavo in servisiranje vozil). Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Zgradi avtobusno postajo. Ctrl mogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Zgradi potniško tramvaj postajo. Ctrl omogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Zgradi tovorno postajo. Ctrl omogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Zgradi tovorno tramvaj postajo. Ctrl omogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Omogoči/onemogoči enosmerne ceste STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Zgradi cestni most. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Zgradi most za tramvaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Zgradi cestni predor. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Zgradi predor za tramvaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Preklopi gradnja/rušenje cestnih konstrukcij STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Preklop gradi/odstrani za tramvaj progo # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Smer garaže STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Izberi smer garaže STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orijentacija tramvaj garaže STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Izberi orijentacijo tramvaj garaže # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientacija avtobusne postaje STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Izberi orientacijo železniške postaje STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientacija tovorne postaje STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Izberi orientacijo tovorne postaje STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orijentacija tramvaj potniške postaje STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Izbor orijentacije potniške tramvaj postaje STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orijentacija tovorne postaje STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Izbor orijentacije tovorne tramvaj postaje # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Gradnja vodnih poti STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Vodne poti STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Zgradi kanale. Shift preklaplja med izgradnjo in predvidenimi stroški STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Gradnja zapornic. Shift preklaplja med izgradnjo in predvidenimi stroški STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Zgradi ladjedelnico (za izgradnjo in servisiranje ladij). Shift preklaplja med izgradnjo in predvidenimi stroški STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Zgradi ladijski dok. Ctrl omogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Postavi bojo, ki je lahko uporabljena kot točka poti. Shift preklaplja med izgradnjo in predvidenimi stroški STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Gradnja akvedukta. Shift preklaplja med izgradnjo in predvidenimi stroški STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Določi področje vode.{}Naredi kanal, razen če je pritisnjen Ctrl na morski gladini, ko bo poplavilo okolico. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Položi reke # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orientacija ladjedelnice STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Izberi orientacijo ladjedelnice # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Pristanišče # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Letališča STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Zgradi letališče. Ctrl omogoči združevanje postaj. Shift preklaplja med izgradnjo in predvidenimi stroški # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Izbira letališča STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Izbira velikosti/tipa letališča STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Vrsta letališča STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Oblika {NUM} STR_AIRPORT_SMALL :Majno letališče STR_AIRPORT_CITY :Mestno STR_AIRPORT_METRO :Medmestno STR_AIRPORT_INTERNATIONAL :Mednarodno STR_AIRPORT_COMMUTER :Vozač STR_AIRPORT_INTERCONTINENTAL :Medkontinentalno letališče STR_AIRPORT_HELIPORT :Pristajališče STR_AIRPORT_HELIDEPOT :Helikopterska garaža STR_AIRPORT_HELISTATION :Helikopterska postaja STR_AIRPORT_CLASS_SMALL :Majhna letališča STR_AIRPORT_CLASS_LARGE :Velika letališča STR_AIRPORT_CLASS_HUB :Hub letališča STR_AIRPORT_CLASS_HELIPORTS :Helikopterska pristajališča STR_STATION_BUILD_NOISE :{BLACK}Efektivni hrup: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Izdelava terena STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Znižaj rob terena. Vlečenje zniža izbrani kot in izravna višino. Ctrl izbere diagonalno območje. Shift preklaplja med izgradnjo in predvidenimi stroški STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Zvišaj rob terena. Vlečenje zviša izbrani kot in poravna na enako višino. Ctrl izbere diagonalno območje. Shift preklaplja med izgradnjo in predvidenimi stroški STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Zravnaj zemljo na višino prvega izbranega kota. Ctrl izbere diagonalno območje. Shift preklaplja med izgradnjo in predvidenimi stroški STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Kupi zemljišče za prihodnjo rabo. Shift preklaplja med izgradnjo in predvidenimi stroški # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Izbor zgradbe STR_OBJECT_BUILD_TOOLTIP :{BLACK}Izberi zgradbo za postavitev. Shift preklaplja med izgradnjo in predvidenimi stroški STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Izberi vrsto objekta za gradnjo STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Predogled zgradbe STR_OBJECT_BUILD_SIZE :{BLACK}Velikost: {GOLD}{NUM} x {NUM} polj STR_OBJECT_CLASS_LTHS :Svetilniki STR_OBJECT_CLASS_TRNS :Oddajniki # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Drevesa STR_PLANT_TREE_TOOLTIP :{BLACK}Izberi vrsto drevesa za sajenje. Če polje že vsebuje drevesa, bodo dodatna drevesa mešanega tipa neodvisno od izbire STR_TREES_RANDOM_TYPE :{BLACK}Drevesa naključne vrste STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Postavi drevesa naključne vrste. Shift preklaplja med izgradnjo in predvidenimi stroški STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Naključna drevesa STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Posadi drevesa naključno po ozemlju # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generator terena STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Ustvari kamnita območja naključno po ozemlju STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Določi območja puščave.{}Pritisni in drži Ctrl za odstranitev STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Povečaj območje za nižanje/višanje terena STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Zmanjšaj območje za nižanje/višanje terena STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Ustvari naključni teren STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Ustvari novo ozemlje STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Zbriši pokrajino STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Odstrani vso lastnino podjetja z ozemlja STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Zbriši pokrajino STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Zagotovo želiš odstraniti vso lastnino podjetja? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Generator mest STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Novo mesto STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Zgradi novo mesto. Shift+Klik prikaže predviden strošek STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Naključno mesto STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Zgradi mesto na naključni lokaciji STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Več naključnih mest STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Postavi na ozemlje naključna mesta STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Ime mesta: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Vnesi ime mesta STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klikni in vnesi ime mesta STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Naključno ime STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Zgeneriraj novo naključno ime STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Velikost mesta: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Majhno STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Srednje STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Veliko STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Naključno STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Izberi velikost mesta STR_FOUND_TOWN_CITY :{BLACK}Mesto STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Mesta rastejo hitreje kot navadna naselja{}Odvisno od nastavitev, so večja, ko so ustanovljena STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Oblika mestnih cest: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Izberi obliko cest za to mesto STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Boljše ceste STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 mreža STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 mreža STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Naključno # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Odpri novo industrijo STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Izberi primerno industrijo iz tega seznama STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Več naključnih industrij STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Postavi na ozemlje naključno industrijo STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cena: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Obetajoča STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Zgradi STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Ustanovi # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrijska veriga za industrijo {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Industrijska veriga za tovor {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Proizvajalne industrije STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Sprejemajoče industrije STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hiše STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikni na industrijo za ogled strank in dobaviteljev STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikni na tovor za ogled strank in dobaviteljev STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Prikaži verigo STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Prikaži oskrbo s tovorom in pripadajoče industrije STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Poveži z zemljevidom STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Izberi prikazane industrije tudi na zemljevidu STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Izberi tovor STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Izberi tovor za prikaz STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Izberi industrijo STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Izberi industrijo za prikaz # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informacije o zemljišču STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cena za čiščenje: {LTBLUE}Ni na voljo STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cena za čiščenje: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Dohodek ob čiščenju: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Ni na voljo STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Lastnik: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Lastnik ceste: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Lastnik tramvaj proge: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Lastnik železnice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalna oblast: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brez STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Zgrajeno: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Razred postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Vrsta letališča: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Ime letališča: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Ime področja letališča: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Sprejet tovor: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Omejitev hitrosti vlakov: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamenje STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Neravna tla STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Gola tla STR_LAI_CLEAR_DESCRIPTION_GRASS :Trava STR_LAI_CLEAR_DESCRIPTION_FIELDS :Polja STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zasnežen teren STR_LAI_CLEAR_DESCRIPTION_DESERT :Puščava STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} tiri STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING}tiri s signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} tiri s pred-signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} tiri z izhodnimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} tiri s kombiniranimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} tiri s signali steze STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} tiri s signali za enosmerno stezo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} tiri z normalnimi in pred-signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} tiri z normalnimi in izhodnimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} tiri z normalnimi in kombiniranimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} tiri z normalnimi in steznimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} tiri z normalnimi in enosmernimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} tiri s pred in izhodnimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} tiri s pred in kombiniranimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} tiri s pred in steznimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} tiri s pred in enosmernimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} tiri z izhodnimi in kombiniranimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} tiri z izhodnimi in steznimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} tiri z izhodnimi in enosmernimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} tiri s kombiniranimi in steznimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} tiri s kombiniranimi in enosmernimi signali STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} tiri s steznimi in enosmernimi signali STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} železniška garaža STR_LAI_ROAD_DESCRIPTION_ROAD :Cesta STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Cesta z razsvetljavo STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Drevored STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Garaža STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Cestno/železniško križišče STR_LAI_ROAD_DESCRIPTION_TRAMWAY :tramvaj # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (v izgradnji) STR_LAI_TREE_NAME_TREES :Drevesa STR_LAI_TREE_NAME_RAINFOREST :Deževni gozd STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusi STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Železniška postaja STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Letališče STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Tovorna postaja STR_LAI_STATION_DESCRIPTION_BUS_STATION :Avtobusna postaja STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Pristanišče STR_LAI_STATION_DESCRIPTION_BUOY :Boja STR_LAI_STATION_DESCRIPTION_WAYPOINT :Točka poti STR_LAI_WATER_DESCRIPTION_WATER :Voda STR_LAI_WATER_DESCRIPTION_CANAL :Kanal STR_LAI_WATER_DESCRIPTION_LOCK :Zapornica STR_LAI_WATER_DESCRIPTION_RIVER :reka STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Obala ali nabrežje STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ladjedelnica # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Železniški predor STR_LAI_TUNNEL_DESCRIPTION_ROAD :Cestni predor STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Viseč jeklen železniški most STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Železniški most z jeklenimi križi STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Železniški most z jeklenim obokom STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Ojačan viseč betonski železniški most STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Lesen železniški most STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betonski železniški most STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Cevast železniški most STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Viseč jeklen cestni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Cestni most z jeklenimi križi STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Cestni most z jeklenim obokom STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ojačan viseč betonski cestni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Lesen cestni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonski cestni most STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Cevast cestni most STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvedukt STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Oddajnik STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Svetilnik STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sedež podjetja STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ozemlje v lasti podjetja # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prvotne avtorske pravice {COPYRIGHT} 1995 Chris Sawyer, vse pravice pridržane STR_ABOUT_VERSION :{BLACK}OpenTTD različica {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 ekipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro STR_SAVELOAD_LOAD_CAPTION :{WHITE}Naloži igro STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Shrani scenarij STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Naloži scenarij STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Naloži višinsko karto STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Shrani višinsko karto STR_SAVELOAD_HOME_BUTTON :{BLACK}Klikni tukaj za skok v mapo shrani/naloži STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} prosto STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Seznam pogonov, map in shranjenih iger STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Trenutno izbrano ime za shranjevanje STR_SAVELOAD_DELETE_BUTTON :{BLACK}Izbriši STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Izbriši trenutno izbrano shranjeno igro STR_SAVELOAD_SAVE_BUTTON :{BLACK}Shrani STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Shrani trenutno igro z izbranim imenom STR_SAVELOAD_LOAD_BUTTON :{BLACK}Naloži STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Naloži izbrano igro STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Podrobnosti igre STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ni informacij na voljo STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Vpiši ime za shranjeno igro # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Ustvarjanje sveta STR_MAPGEN_MAPSIZE :{BLACK}Velikost ozemlja: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Izberi velikost zemljevida v ploščah. Število plošč na voljo bo nekoliko nižje. STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Število mest: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Število industrij: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Višina snežne meje: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Premik snežne meje eno enoto višje STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Premik snežne meje eno enoto nižje STR_MAPGEN_RANDOM_SEED :{BLACK}Naključno seme: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikni za vnos naključnega semena STR_MAPGEN_RANDOM :{BLACK}Naključno STR_MAPGEN_RANDOM_HELP :{BLACK}Spremeni naključno seme za ustvarjanje terena STR_MAPGEN_LAND_GENERATOR :{BLACK}Ustvarjalec terena: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritem dreves: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tip terena: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Morska gladina: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Reke: STR_MAPGEN_SMOOTHNESS :{BLACK}Glajenje: STR_MAPGEN_VARIETY :{BLACK}Raznolika distribucija: STR_MAPGEN_GENERATE :{WHITE}Ustvari # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Robovi ozemlja: STR_MAPGEN_NORTHWEST :{BLACK}Severozahod STR_MAPGEN_NORTHEAST :{BLACK}Severovzhod STR_MAPGEN_SOUTHEAST :{BLACK}Jugovzhod STR_MAPGEN_SOUTHWEST :{BLACK}Jugozahod STR_MAPGEN_BORDER_FREEFORM :{BLACK}Poljubno STR_MAPGEN_BORDER_WATER :{BLACK}Voda STR_MAPGEN_BORDER_RANDOM :{BLACK}Naključno STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Naključno STR_MAPGEN_BORDER_MANUAL :{BLACK}Ročno STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Zasuk višinskega zemljevida: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ime višinskega zemljevida: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Velikost: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Vpiši naključno seme STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Spremeni višino snežne meje STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Spremeni začetno leto # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Tip ozemlja STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Raven teren STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Ustvari raven teren STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Naključni teren STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Višina ravnega terena: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Premik višine ravnega terena eno enoto nižje STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Premik višine ravnega terena eno enoto višje STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Spremeni višino ravnega terena # Map generation progress STR_GENERATION_WORLD :{WHITE}Ustvarjanje sveta... STR_GENERATION_ABORT :{BLACK}Opusti STR_GENERATION_ABORT_CAPTION :{WHITE}Opusti ustvarjanje sveta STR_GENERATION_ABORT_MESSAGE :{YELLOW}Zares zapuščaš ustvarjanje? STR_GENERATION_PROGRESS :{WHITE}{NUM}% narejeno STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Ustvarjanje sveta STR_GENERATION_RIVER_GENERATION :{BLACK}Ustvarjanje reke STR_GENERATION_TREE_GENERATION :{BLACK}Ustvarjanje dreves STR_GENERATION_OBJECT_GENERATION :{BLACK}Ustvarjanje zgradbe STR_GENERATION_CLEARING_TILES :{BLACK}Generiranje grobih in skalnatih tal STR_GENERATION_SETTINGUP_GAME :{BLACK}Nastavljanje igre STR_GENERATION_PREPARING_TILELOOP :{BLACK}Zagnano ponavljanje polj STR_GENERATION_PREPARING_SCRIPT :{BLACK}Poganjam skripto STR_GENERATION_PREPARING_GAME :{BLACK}Priprave igre # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF nastavitve STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Podrobna NewGRF informacija STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktivne NewGRF datoteke STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Neaktivne NewGRF datoteke STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Izberi prednastavitev: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtrirna vrstica: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Naloži izbrano prednastavitev STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Shrani prednastavitev STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Shrani tekoči seznam kot prednastavitev STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Vpisi ime za prednastavitev STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Izbriši prednastavitev STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Brisanje trenutno izbrane prednastavitve STR_NEWGRF_SETTINGS_ADD :{BLACK}Dodaj STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Doda izbrano NewGRF datoteko tvoji konfiguraciji STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Ponovno preišči STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Posodobi seznam moznih NewGRF datotek STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Odstrani STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Odstrani izbrano NewGRF datoteko iz seznama STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Premakni gor STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Premakne izbrano NewGRF gor po seznamu STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Premakni dol STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Premakne izbrano NewGRF dol po seznamu STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Seznam nameščenih NewGRF datotek. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Nastavi parametre STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Prikaži parametre STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Preklop palete STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Preklopi paleto izbranega NewGRF.{}To je potrebno storiti, če grafike iz NewGRF dobijo rožnato barvo STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Potrdi spremembe STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Najdi manjkajoče vsebine STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Preveri manjkajoče vsebine, če so dosegljive na strežniku STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Ime datoteke: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Različica: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatibilna različica: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametri: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Ni informacij STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Ni ujemajoče datoteke STR_NEWGRF_SETTINGS_DISABLED :{RED}Onemogočeno STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nekompatibilno s to različico OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Spremeni NewGRF parametre STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Zapri STR_NEWGRF_PARAMETERS_RESET :{BLACK}Ponastavi STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Ponastavi vse nastavitve na privzeto STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parameter {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Število parametrov: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Preglej - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Starševski objekt STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Preglej starševski objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} na {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Zgradba STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tip železnice STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF spremenljivka 60+x parameter (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Uravnavam sličico {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Naslednja sličica STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Nadaljuj k naslednji navadni sličici, zanemari vse navidezne/pobarvane/besedilne sličice in okvir na koncu STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Pojdi na sličico STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Pojdi na določeno sličico. Če sličica ni navadna, nadaljuj na naslednjo navadno sličico STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prejšnja sličica STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Nadaljuj k prejšnji navadni sličici, zanemari vse navidezne/pobarvane/besedilne sličice in okvir na koncu STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Predstavitev trenutno izbrane sličice. Zamik je zanemarjen pri risanju te sličice STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Premakni sličico s spreminjanjem X in Y osi STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X zamik: {NUM}, Y zamik: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Izberi sličico STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Izberi sličico kjerkoli na zaslonu STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Pojdi na sličico # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Pozor: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Napaka: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Usodno: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Zgodila se je usodna NewGRF napaka: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} ne deluje s TTDPatch različico prijavljeno v OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} je za {STRING} različico TTD-ja STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} je izdelano za uporabo v {STRING} kombinaciji STR_NEWGRF_ERROR_INVALID_PARAMETER :Neveljavna nastavitev za {1:STRING}: nastavitev {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} je potrebno naložiti pred {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} je potrebno naložiti po {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} potrebuje OpenTTD različico {STRING} ali boljšo STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF datoteka je bila narejena za prevod STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Preveč NewGrf-jev je naloženih STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Nalaganje {1:STRING} kot statični NewGRF z/s {STRING} lahko povzroči desinhronizacijo STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Nepričakovana sličica (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Neznan ukaz 0 lastnost {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Poskus uporabe neveljavnega ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} vsebuje eno poškodovano sličico. Vse poškodovane sličice se bodo prikazale kot rdeči vprašaji (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Vsebuje več Ukaz 8 vnosov (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Prebrana datoteka preko meje za sličice (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}V uporabljenem osnovnem setu grafik manjkajo sličice.{}Prosim, posodobi osnovni set grafik STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Trenutni set osnovnih grafik ne vsebuje določenih sličic. Posodobi osnovni set.{}Odkar igraš {YELLOW} razvojni pogled OpenTTD{WHITE}, nogoče potrebuješ tudi {YELLOW}razvojni pogled osnovnih grafik{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Zahtevani viri GRF niso na voljo (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je bil izklopljen zaradi {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neveljaven/neznan format zapisa sličic (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Pozor! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Pripravljaš se narediti spremembe na zagnani igri. To lahko sesuje OpenTTD ali okvari trenutno igro. Ne prijavljajte hroščev v zvezi s temi napakami.{}Si zagotovo želiš tega? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ne morem dodati datoteke: podvojen GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Ustrezna datoteka ni najdena (naložen je kompatibilni GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nemogoče dodati datoteko: Meja NewGRF datoteke je dosežena STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibilni GRF-ji so naloženi namesto manjkajočih datotek STR_NEWGRF_DISABLED_WARNING :{WHITE}Manjkajoče GRF datoteke so bile onemogočene STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Manjkajoče GRF datoteke STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Izklop pavze lahko sesuje OpenTTD. Ne poročaj o napaki zaradi takih problemov.{}Zagotovo želiš izklopiti pavzo? # NewGRF status STR_NEWGRF_LIST_NONE :Brez STR_NEWGRF_LIST_ALL_FOUND :Vse datoteke so prisotne STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Najdene ujemajoče datoteke STR_NEWGRF_LIST_MISSING :{RED}Manjkajoče datoteke # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Ozadje NewGRFa '{0:STRING}' lahko povzroči desinhronizacijo in sesutje igre STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Vozilo '{1:ENGINE}' je spremenilo status obratovanja, ko ni znotraj garaže STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Spremenila se je dolžina vozila za '{1:ENGINE}' ko ni v garaži STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak '{VEHICLE}' , ki pripada družbi '{COMPANY}', ima neveljavno dolžino. Najbrž vsebuje probleme povezane z NewGRF. Igra se lahko sesuje STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' javlja napačno informacijo STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacija o preureditvi tovornih zmogljivosti za '{1:ENGINE}' je različna od seznama nakupa po konstrukciji. To lahko povzroči, da bi samoobnova ne uspela pravilno STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' hrošč je povzročil neskončen povratni ciklus proizvodnje STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Povratni klic {1:HEX} je odgovoril z neznanim/neveljavnim rezultatom {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} od STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Preiskava NewGRF-jev STR_NEWGRF_SCAN_MESSAGE :{BLACK}Preiskujem NewGRF-je. Odvisno od količine lahko traja nekaj časa... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" ja ji jev} preiskanih od ocenjenih {NUM} NewGRF{P "" ja ji jev} STR_NEWGRF_SCAN_ARCHIVES :Iskanje arhivov # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Seznam oznak - {COMMA} oznak{P a i e ""} STR_SIGN_LIST_MATCH_CASE :{BLACK}Ujemanje začetnic STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Vključi ujemanje začetnic pri primerjanju imen znakov s filtrom # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Uredi znak STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Pojdi na naslednjo oznako STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Pojdi na predhodno oznako STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Vpiši ime za znak # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Mesta STR_TOWN_DIRECTORY_NONE :{ORANGE}- Brez - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Imena mest - klikni na ime za pogled na mesto. Ctrl+Klik odpre nov pogled na lokaciji mesta STR_TOWN_POPULATION :{BLACK}Svetovno prebivalstvo: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Mesto) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Prebivalstvo: {ORANGE}{COMMA}{BLACK} Število stavb: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Potnikov prejšnji mesec: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošte prejšnji mesec: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Količina potrebnega tovora za rast mesta: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} je potreben pozimi STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} dostavljeno STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (še potrebno) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (dostavljeno) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Mesto raste vsak{P 0 "" a e ih} {ORANGE}{COMMA}{BLACK} d{P an neva ni ni} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Mesto raste vsak{P 0 "" a e ih} {ORANGE}{COMMA}{BLACK} d{P an neva ni ni} (z naložbami) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Mesto {RED}ne{BLACK} raste STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Meja hrupa v mestu: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo mesta. Ctrl+Klik odpre nov pogled na lokaciji mesta STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Mestni svet STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Prikaži informacije o mestni oblasti STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Spremeni ime mesta STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Razširi STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Povečaj velikost mesta STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Izbriši STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Popolnoma izbriši mesto STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Preimenuj mesto # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} mestni svet STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ocene prevoznega podjetja: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Storitve na voljo: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Seznam stvari, ki jih lahko narediš v tem mestu - klikni na predmet za podrobnosti STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Stori to STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Izvrši izbrano storitev na zgornjem seznamu STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Majhna reklamna kampanija STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Srednje velika reklamna kampanija STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Velika reklamna kampanija STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Financiraj obnovo cest STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Zgradi spomenik lastniku podjetja STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Sponzoriraj nove stavbe STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Kupi eksluzivne transportne pravice STR_LOCAL_AUTHORITY_ACTION_BRIBE :Podkupi lokalno oblast STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Izvrši majhno reklamno kampanijo z namenom privabiti več potnikov in tovora podjetju.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Izvrši srednje-veliko reklamno kampanijo z namenom privabiti več potnikov in tovora podjetju.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Izvrši veliko reklamno kampanijo z namenom privabiti več potnikov in tovora podjetju.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financiraj obnovo cest. S tem nastanejo motnje prometa do 6 mesecev.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Zgradi spomenik v čast podjetju.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Financiraj izgradnjo novih poslovnih stavb v mestu.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kupi enoletno izključno pravico do transporta v mestu. Lokalne oblasti bodo dovolile potnikom in tovoru do uporabe izključno tvojih transportnih storitev.{}Cena: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podkupi lokalno oblast za izboljšavo svojih ocen kljub tveganju resnih kazni ob odkritju.{}Cena: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Cilji STR_GOALS_GLOBAL_TITLE :{BLACK}Globalni cilji: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Brez - STR_GOALS_COMPANY_TITLE :{BLACK}Cilji podjetja: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cilj za pogled na industrijo/mesto/polje. Ctrl+Klik odpre novo okno na industrijo/mesto/polje # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Vprašanje STR_GOAL_QUESTION_CAPTION_INFORMATION :Informacije STR_GOAL_QUESTION_CAPTION_WARNING :Opozorilo STR_GOAL_QUESTION_CAPTION_ERROR :Napaka ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Prekliči STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Ne STR_GOAL_QUESTION_BUTTON_YES :Da STR_GOAL_QUESTION_BUTTON_DECLINE :Zavrni STR_GOAL_QUESTION_BUTTON_ACCEPT :Potrdi STR_GOAL_QUESTION_BUTTON_IGNORE :Zanemari STR_GOAL_QUESTION_BUTTON_RETRY :Poskusi znova STR_GOAL_QUESTION_BUTTON_PREVIOUS :Prejšnji STR_GOAL_QUESTION_BUTTON_NEXT :Naslednji STR_GOAL_QUESTION_BUTTON_STOP :Ustavi STR_GOAL_QUESTION_BUTTON_START :Poženi STR_GOAL_QUESTION_BUTTON_GO :Pojdi STR_GOAL_QUESTION_BUTTON_CONTINUE :Nadaljuj STR_GOAL_QUESTION_BUTTON_RESTART :Ponovni zagon STR_GOAL_QUESTION_BUTTON_POSTPONE :Preloži STR_GOAL_QUESTION_BUTTON_SURRENDER :Predaja STR_GOAL_QUESTION_BUTTON_CLOSE :Zapri # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvencije STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Ponudba subvencije za storitev: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}Prevoz {STRING.r} iz {STRING} v {STRING}{YELLOW} (do {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Brez - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Že subvencionirane storitve: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}Prevoz {STRING.r} od {STRING} do {STRING}{YELLOW} ({COMPANY}{YELLOW}, do {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na storitev za pogled na industrijo/mesto. Ctrl+Klik odpre nov pogled na lokaciji industrije/mesta # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Imena postaj - klikni na ime za pogled na postajo. Ctrl+Klik odpre nov pogled na lokaciji postaje STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Drži Ctrl za izbor več stvari STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Postaj{P a i e ""} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Brez - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Izberi vse pripomočke STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Izberi vse vrste tovora (vključno s tovorom, ki ne čaka) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Noben tovor ne čaka # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Čaka: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} na poti iz {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Sprejema STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Prikaži seznam sprejetega tovora STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Sprejema: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ta postaja ima ekskluzivne pravice v tem mestu. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} je odkupilo ekskluzivne prevozne pravice v tem mestu. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Prikaz ocen postaje STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Lokalne ocene transportnih storitev: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Nizkotno STR_CARGO_RATING_VERY_POOR :Zelo slabo STR_CARGO_RATING_POOR :Slabo STR_CARGO_RATING_MEDIOCRE :Srednje STR_CARGO_RATING_GOOD :Dobro STR_CARGO_RATING_VERY_GOOD :Zelo dobro STR_CARGO_RATING_EXCELLENT :Izvrstno STR_CARGO_RATING_OUTSTANDING :Sijajno ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo postaje. Ctrl+Klik odpre nov pogled na lokaciji postaje STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Spremeni ime postaje STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Prikaz vsah vlakov, ki imajo to postajo na urniku STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Prikaz vseh cestnih vozil, ki imajo to postajo na urniku STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Prikaz vseh letal, ki imajo to postajo na urniku STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Prikaz vseh ladij, ki imajo to postajo na urniku STR_STATION_VIEW_RENAME_STATION_CAPTION :Preimenuj postajo STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Zapri letališče STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Prepreči letalom pristajanje na tem letališču # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo točke poti. Ctrl+Klik odpre nov pogled na lokaciji točke poti STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Spremeni ime točke poti STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo boje. Ctrl+Klik odpre nov pogled na lokaciji boje STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Spremeni ime boje STR_EDIT_WAYPOINT_NAME :{WHITE}Uredi ime točke poti # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finance {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Stroški/dohodek STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Gradnja STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nova vozila STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Cene delovanja vlakov STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Cene delovanja cestnih vozil STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Cene delovanja letal STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Cene delovanja ladij STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Vzdrževanje lastnine STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Prihodek vlakov STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Prihodek cestnih vozil STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Prihodek letal STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Prihodek ladij STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Obresti posojila STR_FINANCES_SECTION_OTHER :{GOLD}Drugo STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Skupaj: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bančno stanje STR_FINANCES_LOAN_TITLE :{WHITE}Posojilo STR_FINANCES_MAX_LOAN :{WHITE}Meja posojila: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Izposoja {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Povečaj višino posojila. Ctrl+Klik izposodi največ, kar je mogoče STR_FINANCES_REPAY_BUTTON :{BLACK}Vračilo {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Odplačaj del posojila. Ctrl+Klik odplača največ, kar je mogoče STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktura # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Direktor) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Ustanovljeno: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Barvna shema: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vozila: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} vlak{P "" a i ov} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} cestn{P o i a ih} vozil{P o i a ""} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} letal{P o i a ""} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} lad{P ja ji je ij} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Brez STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Vrednost podjetja: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% v lasti podjetja {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktura: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} kos{P "" a i ov} tirov STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} odsek{P "" a i ov} ceste STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} polj{P e i a ""} vode STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} polj{P e i a ""} postaj STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} letališč{P e i a ""} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Brez STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Zgradi sedež podjetja STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Zgradi sedež podjetja STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Poglej sedež podjetja STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Poglej sedež podjetja STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Preseli sedež STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Preseli sedež podjetja drugam za ceno 1% vrednosti podjetja. Shift+Klik prikaže predviden strošek brez selitve STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Podrobnosti STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Podrobni prikaz količine infrastrukture STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nov obraz STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Izberi nov obraz za direktorja STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Barvna shema STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Spremeni barvo vozil podjetja STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Ime podjetja STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Spremeni ime podjetja STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Direktorjevo ime STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Spremeni direktorjevo ime STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Kupi 25% delnic podjetja STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Prodaj 25% delnic podjetja STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Kupi 25% delnic tega podjetja. Shift+Klik prikaže predviden strošek brez nakupa delnic STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Prodaj 25% delnic tega podjetja. Shift+Klik prikaže predviden dobiček brez prodaje delnic STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Ime podjetja STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Direktorjevo ime STR_BUY_COMPANY_MESSAGE :{WHITE}Iščemo novega lastnika, ki bi prevzel naše podjetje.{}{}Ali želiš odkupiti podjetje {COMPANY} za ceno {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastruktura od {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Kosi tirov: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signali STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Odseki cest: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Cesta STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvaj STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Polja vode: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanali STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Postaje: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Polja postaj STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Letališča STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/leto ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/leto # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrije STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Brez - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% prepeljano) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% prepeljano) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Imena industrij - klikni na ime za pogled na industrijo. Ctrl+Klik odpre nov pogled na lokaciji industrije # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Proizvodnja prejšnjega meseca: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% prepeljano) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo industrije. Ctrl+Klik odpre nov pogled na lokaciji industrije STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivo proizvodnje: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Potrebuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Tovor na čakanju obdelave: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvaja: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvaja: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Spremeni proizvodnjo (večkratnik 8, do 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Spremeni nivo proizvodnje (odstotki, do 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Vlak{P "" a i ov} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Cestn{P o i a ih} vozil{P o i a ""} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Lad{P ja ji je ij} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Letal{P o i a ""} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vlaki - klikni na vlak za informacije STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Cestna vozila - klikni na vozilo za informacije STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Ladje - klikni na ladjo za informacije STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Letalo - klikni na letalo za informacije STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Dobiček letos: {CURRENCY_LONG} (lani: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Vlaki na voljo STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vozila na voljo STR_VEHICLE_LIST_AVAILABLE_SHIPS :Ladje na voljo STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Letala na voljo STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Prikaži seznam motorjev na voljo za ta tip vozila STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Uredi seznam STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Pošlji navodila vsem vozilom na seznamu STR_VEHICLE_LIST_REPLACE_VEHICLES :Zamenjaj vozila STR_VEHICLE_LIST_SEND_FOR_SERVICING :Pošlji na servisiranje STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Pošlji v garažo STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Pošlji v garažo STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Pošlji v garažo STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Pošlji v hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikni za zaustavitev vseh vozil na seznamu STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikni za zagon vseh vozil na seznamu STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Skupni ukazi za {COMMA} vozil{P o i a ""} # Group window STR_GROUP_ALL_TRAINS :Vsi vlaki STR_GROUP_ALL_ROAD_VEHICLES :Vsa cestna vozila STR_GROUP_ALL_SHIPS :Vse ladje STR_GROUP_ALL_AIRCRAFTS :Vsa letala STR_GROUP_DEFAULT_TRAINS :Vlaki brez skupine STR_GROUP_DEFAULT_ROAD_VEHICLES :Cestna vozila brez skupine STR_GROUP_DEFAULT_SHIPS :Ladje brez skupine STR_GROUP_DEFAULT_AIRCRAFTS :Letala brez skupine STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Skupine - Klikni na skupino za seznam vseh vozil v skupini STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikni za ustvarit skupino STR_GROUP_DELETE_TOOLTIP :{BLACK}Izbriši izbrano skupino STR_GROUP_RENAME_TOOLTIP :{BLACK}Preimenuj izbrano skupino STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikni za zaščito skupine pred splošno samoobnovo STR_GROUP_ADD_SHARED_VEHICLE :Vsa izmenljiva vozila STR_GROUP_REMOVE_ALL_VEHICLES :Odstrani vsa vozila STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj eno skupino # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nova železniška vozila STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nova električna tirna vozila STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nova enotirna vozila STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nova magnetna vozila STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nova tirna vozila STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nova cestna vozila STR_BUY_VEHICLE_SHIP_CAPTION :Nove ladje STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nova letala STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Teža: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hitrost: {GOLD}{VELOCITY}{BLACK} Moč: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Hitrost: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Hitrost po morju: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Hitrost po kanalu/reki: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Cena delovanja: {GOLD}{CURRENCY_LONG}/leto STR_PURCHASE_INFO_CAPACITY :{BLACK}Zmogljivost: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(spremenljivo) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Zasnova: {GOLD}{NUM}{BLACK} Življ. doba: {GOLD}{COMMA} let{P o i a ""} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Max. zanesljivost: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cena: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Teža: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Hitrost: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Zmogljivost: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Pogonski vagoni: {GOLD}+{POWER}{BLACK} Teža: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Preureditve za: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Vse vrste tovora STR_PURCHASE_INFO_ALL_BUT :Vse, razen {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Največja vlečna moč: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} polj STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Seznam železniških vozil - klikni na vozilo za informacije STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Seznam cestnih vozil - klikni na vozilo za informacije STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Seznam ladij - klikni na ladjo za informacije STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Seznam letal - klikni na letalo za informacije STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Kupi vozilo STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Kupi vozilo STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Kupi ladjo STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Kupi letalo STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi izbrano železniško vozilo. Shift+Klik prikaže predviden strošek brez nakupa STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi izbrano cestno vozilo. Shift+Klik prikaže predviden strošek brez nakupa STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi izbrano ladjo. Shift+Klik prikaže predviden strošek brez nakupa STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Kupi izbrano letalo. Shift+Klik prikaže predviden strošek brez nakupa STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Preimenuj STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Preimenuj železniško vozilo STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Preimenuj cestno vozilo STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Preimenuj ladjo STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Preimenuj letalo STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Preimenuj železniško vozilo STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Preimenuj cestno vozilo STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Preimenuj ladjo STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Preimenuj letalo # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Spremeni ime garaže STR_DEPOT_RENAME_DEPOT_CAPTION :Preimenuj garažo STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vozil{P o i a ""}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlaki - povleci vozilo z levim klikom za dodajanje/odstranjevanje iz vlaka, desno klikni na vlak za informacije. Držanje Ctrl naredi obe funkciji hkrati STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vozila - desno klikni na vozilo za informacije STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Ladje - desno klikni na ladjo za informacije STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Letalo - desno klikni na letalo za informacije STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Povleci železniško vozilo sem, če ga želiš prodati STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Povleci cestno vozilo sem, če ga želiš prodati STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Povleci novo ladjo sem, če jo želiš prodati STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Povleci letalo sem, da ga prodaš STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Potegni lokomotivo sem za prodajo celotnega vlaka STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Prodaj vse vlake v garaži STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Prodaj vsa vestna vozila v garaži STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Prodaj vse ladje v garaži STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Prodaj vsa letala v hangarju STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Avtomatsko zamenjaj vse vlake v garaži STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Avtomatsko zamenjaj vsa cestna vozila v garaži STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Avtomatsko zamenjaj vse ladje v garaži STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Samozamenjaj vsa letala v hangarju STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nova vozila STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nova vozila STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nove ladje STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Novo letalo STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novo železniško vozilo STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novo cestno vozilo STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novo ladjo STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Kupi novo letalo STR_DEPOT_CLONE_TRAIN :{BLACK}Kloniraj vlak STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Kloniraj vozilo STR_DEPOT_CLONE_SHIP :{BLACK}Kloniraj ladjo STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Kloniraj letalo STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}To bo kupilo kopijo vlaka vključno z vsemi vagoni. Klikni na ta gumb in nato na vlak v ali zunaj garaže. Ctrl+Klik skopira tudi navodila. Shift+Klik prikaže predviden strošek brez nakupa STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}To bo kupilo kopijo vozila. Klikni na ta gumb in nato na vozilo v ali zunaj garaže. Ctrl+Klik skopira tudi ukaze. Shift+Klik prikaže predviden strošek brez nakupa STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}To bo kupilo kopijo ladje. Klikni na ta gumb in nato na ladjo v ali zunaj ladjedelnice. Ctrl+Klik skopira tudi ukaze. Shift+Klik prikaže predviden strošek brez nakupa STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}To bo kupilo kopijo letala. Klikni na ta gumb in nato na letalo v ali zunaj hangarja. Ctrl+Klik skopira tudi ukaze. Shift+Klik prikaže predviden strošek brez nakupa STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo železniške garaže. Ctrl+Klik odpre nov pogled na lokaciji zelezniške garaže STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo cestne garaže. Ctrl+Klik odpre nov pogled na lokaciji cestne garaže STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo ladjedelnice. Ctrl+Klik odpre nov pogled na lokaciji ladjedelnice STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo hangarja. Ctrl+Klik odpre nov pogled na lokaciji hangarja STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Prikaz seznama vlakov s to garažo na urniku STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Prikaz seznama vseh cestnih vozil s to garažo na urniku STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Prikaz seznama vseh ladij s to garažo na urniku STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Prikaz seznama vseh letal s to garažo na urniku STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikni za ustaviti vse vlake v garaži STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikni za ustaviti vsa cestna vozila v garaži STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klikni za ustaviti vse ladje v garaži STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klikni za ustaviti vsa letala v hangarju STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikni za zagon vseh vlakov v garaži STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikni za zagon vseh cestnih vozil v garaži STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klikni za zagon vseh ladij v garaži STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klikni za zagon vseh letal v hangarju STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Pripravljaš se na prodajo vseh vozil v garaži. Zagotovo? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Sporočilo od proizvajalca vozila STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Na novo smo izdelali {STRING} - ali te zanima enoletna izključna pravica do{}uporabe tega vozila, preden ga ponudimo{}na trgu? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :železniška lokomotiva STR_ENGINE_PREVIEW_ROAD_VEHICLE :cestno vozilo STR_ENGINE_PREVIEW_AIRCRAFT :letalo STR_ENGINE_PREVIEW_SHIP :ladja STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :enotirna lokomotiva STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetna lokomotiva STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Teža: {WEIGHT_SHORT}{}Hitrost: {VELOCITY} Moč: {POWER}{}Cena delovanja: {CURRENCY_LONG}/leto{}Zmogljivost: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Teža: {WEIGHT_SHORT}{}Hitrost: {VELOCITY} Moč: {POWER} Max. T.E.: {6:FORCE}{}Stroški: {4:CURRENCY_LONG}/yr{}Zmogljivost: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Zmogljivost: {CARGO_LONG}, {CARGO_LONG}{}Cena delovanja: {CURRENCY_LONG}/leto STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Zmogljivost: {CARGO_LONG}{}Cena delovanja: {CURRENCY_LONG}/leto STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena: {CURRENCY_LONG} Max. Hitrost: {VELOCITY} Domet: {COMMA} polj{}Zmogljivost: {CARGO_LONG}, {CARGO_LONG}{}Stroški delovanja: {CURRENCY_LONG}/leto STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. Hitrost: {VELOCITY} Domet: {COMMA} polj{}Zmogljivost: {CARGO_LONG}{}Stroški delovanja: {CURRENCY_LONG}/leto # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zamenjaj {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Vlak STR_REPLACE_VEHICLE_ROAD_VEHICLE :Cestno vozilo STR_REPLACE_VEHICLE_SHIP :Ladja STR_REPLACE_VEHICLE_AIRCRAFT :Letalo STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izberi tip lokomotive za zamenjati STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Izberi vrsto lokomotive, ki jo hočeš prestaviti na levo označeno mesto STR_REPLACE_VEHICLES_START :{BLACK}Začni menjavo vozil STR_REPLACE_VEHICLES_NOW :Zamenjaj vsa vozila zdaj STR_REPLACE_VEHICLES_WHEN_OLD :Zamenjaj samo stara vozila STR_REPLACE_HELP_START_BUTTON :{BLACK}Pritisni za začetek menjave levo označenega tipa lokomotive s tistim na desni. STR_REPLACE_NOT_REPLACING :{BLACK}Ni menjave STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ni izbranih vozil STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} ko se postara STR_REPLACE_VEHICLES_STOP :{BLACK}Ustavi menjavo vozil STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pritisni za zaustavitev zamenjave na levi izbranega tipa lokomotive STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Zamenjuje: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Preklop med okni za menjavo lokomotiv in vagonov STR_REPLACE_ENGINES :Lokomotive STR_REPLACE_WAGONS :Vagoni STR_REPLACE_HELP_RAILTYPE :{BLACK}Izberi tip tirov, za katere želiš menjati lokomotive STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Prikaz tipa lokomotive, s katero bo zamenjana levo označena STR_REPLACE_RAIL_VEHICLES :Tirna vozila STR_REPLACE_ELRAIL_VEHICLES :Električna tirna vozila STR_REPLACE_MONORAIL_VEHICLES :Enotirna vozila STR_REPLACE_MAGLEV_VEHICLES :Magnetna tirna vozila STR_REPLACE_REMOVE_WAGON :{BLACK}Odstranitev vagonov: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Dovoli samozamenjavi, da z odstranitvijo vagonov, začenši na začetku, ohrani isto dolžino vlaka, če bi ga menjava lokomotive podaljšala # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo vlaka. Ctrl+Klik odpre nov pogled na lokaciji vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo vozila. Ctrl+Klik odpre nov pogled na lokaciji vozila STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo ladje. Ctrl+Klik odpre nov pogled na lokaciji ladje STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Osredotoči pogled na lokacijo letala. Ctrl+Klik odpre nov pogled na lokaciji letala STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošlji vlak v železniško garažo. Ctrl+Klik samo na servis STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošlji vozilo v garažo. Ctrl+Klik samo na servis STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošlji ladjo v ladjedelnico. Ctrl+Klik samo na servis STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošlji letalo v hangar. Ctrl+Klik samo na servis STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}To bo kupilo kopijo vlaka vključno z vsemi vagoni. Ctrl+Klik skopira tudi navodila. Shift+Klik prikaže predviden strošek brez nakupa STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}To bo kupilo kopijo cestnega vozila. Ctrl+Klik skopira tudi navodila. Shift+Klik prikaže predviden strošek brez nakupa STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}To bo kupilo kopijo ladje. Ctrl+Klik skopira tudi navodila. Shift+Klik prikaže predviden strošek brez nakupa STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}To bo kupilo kopijo letala. Ctrl+Klik skopira tudi navodila. Shift+Klik prikaže predviden strošek brez nakupa STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Prisili vlak, naj nadaljuje brez čakanja signalov STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Preuredi tovorni prostor vlaka za prevoz druge vrste tovora STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Preuredi cestno vozilo za prevoz druge vrste tovora STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Preuredi tovorni prostor ladje za prevoz druge vrste tovora STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Preuredi tovorni prostor letala za prevoz druge vrste tovora STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Obrni smer vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Prisilno obrni vozilo STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Prikaži ukaze vlaka. Ctrl+Klik prikaže urnik vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Prikaži navodila vozila. Ctrl+Klik prikaže urnik vozila STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Prikaži ukaze ladje. Ctrl+Klik prikaže urnik ladje STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Prikaži navodila letala. Ctrl+Klik prikaže urnik letala STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Prikaži podrobnosti vlaka STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Prikaži podrobnosti cestnega vozila STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Prikaži podrobnosti ladje STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Prikaži podrobnosti letala STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Dejanje trenutnega vlaka - klikni za izklop/zagon vlaka. Ctrl+Klik za premik na destinacijo STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Dejanja trenutnega vozila - klikni za ustavitev/zagon vozila. Ctrl+Klik za premik na destinacijo STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Dejanje trenutne ladje - klikni za ustavitev/zagon ladje. Ctrl+Klik za premik na destinacijo STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Dejanje trenutnega letala - klikni za ustavitev/zagon letala. Ctrl+Klik za premik na destinacijo # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Natovarjanje / Raztovarjanje STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Zapušča STR_VEHICLE_STATUS_CRASHED :{RED}Uničen! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}V okvari STR_VEHICLE_STATUS_STOPPED :{RED}Ustavljeno STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Se ustavlja, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Ni napetosti STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Čaka na prosto pot STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Predaleč do naslednjega cilja STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Pelje proti {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Brez ukazov, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Pelje proti {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Pelje proti {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servis v {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Ustavljeno STR_VEHICLE_COMMAND_STOPPED :{RED}Ustavljeno STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Začeto STR_VEHICLE_COMMAND_STARTED :{GREEN}Začeto # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Podrobnosti) STR_VEHICLE_NAME_BUTTON :{BLACK}Ime STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Poimenuj vlak STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Poimenuj cestno vozilo STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Poimenuj ladjo STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Poimenuj letalo STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Starost: {LTBLUE}{STRING}{BLACK} Cena delovanja: {LTBLUE}{CURRENCY_LONG}/leto # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} let{P o i a ""} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} let{P o i a ""} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. hitrost: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. hitrost: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} polj STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Teža: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moč: {LTBLUE}{POWER}{BLACK} Max. hitrost: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Teža: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moč: {LTBLUE}{POWER}{BLACK} Max. hitrost: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Letošnji dobiček: {LTBLUE}{CURRENCY_LONG} (lani: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Zanesljivost: {LTBLUE}{COMMA}% {BLACK}Okvare po zadnjem servisu: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Zgrajeno: {LTBLUE}{NUM}{BLACK} Vrednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Zmogljivost: {LTBLUE}Brez{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Zmogljivost: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Zmogljivost: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Zmogljivost: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Prenesi kredite: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}IObdobje servisiranja: {LTBLUE}{COMMA}dni{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Obdobje servisiranja: {LTBLUE}{COMMA}%{BLACK} Zadnji servis: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Podaljšaj čas med servisi za 10. Ctrl+Klik podaljša za 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Skrajšaj čas med servisi za 10. Ctrl+Klik skrajša za 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Spremeni presledek tipa servisiranja STR_VEHICLE_DETAILS_DEFAULT :Privzeto STR_VEHICLE_DETAILS_DAYS :Dni STR_VEHICLE_DETAILS_PERCENT :Odstotek STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Poimenuj vlak STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Poimenuj cestno vozilo STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Poimenuj ladjo STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Poimenuj letalo # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Zgrajeno: {LTBLUE}{NUM}{BLACK} Vrednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Vrednost: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Skupna tovorna zmogljivost tega vlaka: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Prazen STR_VEHICLE_DETAILS_CARGO_FROM :Tovor {LTBLUE}{CARGO_LONG} iz postaje {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} iz {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Tovor STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Prikaži podrobnosti naloženega tovora STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informacije STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Prikaži podrobnosti o železniških vozilih STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Zmogljivosti STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Prikaži zmogljivosti vsakega vagona STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Skupni tovor STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Prikaži polno zmogljivost vlaka, razdeli glede na tip tovora STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Zmogljivost: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Preuredi) STR_REFIT_TITLE :{GOLD}Izberi tip tovora: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova zmogljivost: {GOLD}{CARGO_LONG}{}{BLACK}Cena preureditve: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nova zmogljivost: {GOLD}{CARGO_LONG}{}{BLACK}Prihodek iz preureditve: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova zmogljivost: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cena preureditve: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nova zmoljivost: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihodek iz preureditve: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Izberi vozila za preureditev. Povleci z miško, da izbereš več vozil. Klik na prazen prostor bo izbral celotno vozilo. Ctrl+Klik bo izbral vozilo in tista, ki mu sledijo STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Izberi nov tip tovora za prevoz z vlakom STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Izberi tip tovora, ki ga bo vozilo prevažalo STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Izberi tip tovora STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Izberi tip tovora STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Preuredi vlak STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Preuredi cestno vozilo STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Preuredi ladjo STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Preuredi letalo STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Preuredi tovorni prostor vlaka za označen tip tovora STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Preuredi cestno vozilo za prevoz označenega tipa tovora STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Preuredi tovorni prostor ladje za izbrani tovor STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Preuredi tovorni prostor letala za izbran tovor # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Ukazi) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Urnik STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Preklop na pogled urnikov STR_ORDERS_LIST_TOOLTIP :{BLACK}Seznam navodil - klikni na ukaz, da ga izbereš. CTRL+Klik premakne na destinacijo STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Konec ukazov - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Konec ukazov v skupni rabi - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Non-stop STR_ORDER_GO_TO :Pojdi do STR_ORDER_GO_NON_STOP_TO :Pojdi non-stop do STR_ORDER_GO_VIA :Pojdi preko STR_ORDER_GO_NON_STOP_VIA :Pojdi non-stop preko STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Spremeni način ustavljanja za označen ukaz STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Napolni vse vrste tovora STR_ORDER_DROP_LOAD_IF_POSSIBLE :Napolni, če je na voljo STR_ORDER_DROP_FULL_LOAD_ALL :Napolni ves tovor STR_ORDER_DROP_FULL_LOAD_ANY :Napolni kakršenkoli tovor STR_ORDER_DROP_NO_LOADING :Brez polnjenja STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Spremeni način polnjenja označenega ukaza STR_ORDER_TOGGLE_UNLOAD :{BLACK}Razloži vse STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Razloži, če je sprejeto STR_ORDER_DROP_UNLOAD :Razloži vse STR_ORDER_DROP_TRANSFER :Pretovori STR_ORDER_DROP_NO_UNLOADING :Ne razloži STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Spremeni način praznjenja označenega ukaza STR_ORDER_REFIT :{BLACK}Preuredi STR_ORDER_REFIT_TOOLTIP :{BLACK}Izberi preureditev za vrsto tovora, ki ga želiš. Ctrl+Klik za odstranitev ukaza preureditve STR_ORDER_REFIT_AUTO :{BLACK}Samo-predelava STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Izberi kateri tip tovora se bo uporabil v tem ukazu. Ctrl+Klik za odstranitev ukaza samo-predelave. Samo-predelava bo izvedena le, če vozilo to dovoli STR_ORDER_DROP_REFIT_AUTO :Določen tovor STR_ORDER_DROP_REFIT_AUTO_ANY :Tovor na voljo STR_ORDER_SERVICE :{BLACK}Servis STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vedno pojdi STR_ORDER_DROP_SERVICE_DEPOT :Servisiraj po potrebi STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_SERVICE_TOOLTIP :{BLACK}Preskoči ta ukaz, razen če je potreben servis STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Podatki vozila na osnovni preskok # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Procenti polnjenja STR_ORDER_CONDITIONAL_RELIABILITY :Zanesljivost STR_ORDER_CONDITIONAL_MAX_SPEED :Najvišja hitrost STR_ORDER_CONDITIONAL_AGE :Starost (leta) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Potrebuje servis STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Vedno STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Preostala življenjska doba (let) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kako primerjati podatke vozila na podano vrednost STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :je enaka STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ni enaka kot STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :je manjša kot STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :je manjša ali enaka kot STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :je večja kot STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :je večja ali enaka kot STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :dejavno STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :nedejavno STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Primerjalna vrednost za podatke vozila STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Vnesi primerjalno vrednost STR_ORDERS_SKIP_BUTTON :{BLACK}Preskoči STR_ORDERS_SKIP_TOOLTIP :{BLACK}Preskoči trenutni ukaz in začni naslednjega. CTRL + klik preskoči na izbran ukaz STR_ORDERS_DELETE_BUTTON :{BLACK}Izbriši STR_ORDERS_DELETE_TOOLTIP :{BLACK}Zbriši izbran ukaz STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Izbriši vse ukaze STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Prenehaj deljenje STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Prenehaj z deljenjem ukazov. Ctrl+Klik dodatno izbriše vse ukaze tega vozila STR_ORDERS_GO_TO_BUTTON :{BLACK}Pojdi do STR_ORDER_GO_TO_NEAREST_DEPOT :Pojdi v najbližjo garažo STR_ORDER_GO_TO_NEAREST_HANGAR :Pojdi v najbližji hangar STR_ORDER_CONDITIONAL :Pogojni preskok ukaza STR_ORDER_SHARE :Deli ukaze STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Vstavi nov ukaz pred izbranega ali pa ga dodaj na konec seznama. Ctrl naredi ukaze postaj 'napolni kakršenkoli tovor', ukaze točk poti 'non-stop' in ukaze garaž 'servis'. 'Deli ukaze' ali Ctrl deli ukaze z drugim izbranim vozilom. Klik na vozilo kopira ukaze STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Prikaz vseh vozil, ki si delijo ta urnik # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Pojdi skozi {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Pojdi non-stop skozi {WAYPOINT} STR_ORDER_SERVICE_AT :Na servis v STR_ORDER_SERVICE_NON_STOP_AT :Na servis non-stop v STR_ORDER_NEAREST_DEPOT :najbližjo STR_ORDER_NEAREST_HANGAR :najbližji hangar STR_ORDER_TRAIN_DEPOT :Železniška garaža STR_ORDER_ROAD_VEHICLE_DEPOT :Cestna garaža STR_ORDER_SHIP_DEPOT :Ladijska garaža STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Preuredi za {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Preuredi v {STRING} in zaustavi) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Implicitno) STR_ORDER_FULL_LOAD :(Napolni) STR_ORDER_FULL_LOAD_ANY :(Napolni kakršenkoli tovor) STR_ORDER_NO_LOAD :(Brez polnjenja) STR_ORDER_UNLOAD :(Razloži in vzemi tovor) STR_ORDER_UNLOAD_FULL_LOAD :(Razloži in počakaj na polno) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Razloži in počakaj na polno česarkoli) STR_ORDER_UNLOAD_NO_LOAD :(Razloži in pusti prazno) STR_ORDER_TRANSFER :(Pretovori in vzemi tovor) STR_ORDER_TRANSFER_FULL_LOAD :(Pretovori in počakaj na polno) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Pretovori in počakaj na polno česarkoli) STR_ORDER_TRANSFER_NO_LOAD :(Pretovori in pusti prazno) STR_ORDER_NO_UNLOAD :(Ne razloži in vzemi tovor) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ne razloži in počakaj na polno) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ne razloži in počakaj na polno česarkoli) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ne razloži in ne naloži) STR_ORDER_AUTO_REFIT :(Samo-predelaj za {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Naporni in samo-predelaj za {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Napolni katerikoli tovor s samo-predelavo za {STRING}) STR_ORDER_UNLOAD_REFIT :(Raztovori in napolni tovor s samo-predelavo za {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Raztovori in počakaj na polni tovor s samo-predelavo za {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Raztovori in počakaj na katerikoli tovor s samo-predelavo za {STRING}) STR_ORDER_TRANSFER_REFIT :(Pretovori in napolni tovor s samo-predelavo za {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Pretovori in počakaj na tovor s samo-predelavo za {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Pretovori in počakaj na katerikoli tovor s samo-predelavo za {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Brez raztovarjanja napolni tovor s samo-predelavo za {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Brez raztovarjanja počakaj na tovor s samo-predelavo za {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Brez raztovarjanja počakaj na katerikoli tovor s samo-predelavo za {STRING}) STR_ORDER_AUTO_REFIT_ANY :tovor na voljo STR_ORDER_STOP_LOCATION_NEAR_END :[začetna stran] STR_ORDER_STOP_LOCATION_MIDDLE :[sredina] STR_ORDER_STOP_LOCATION_FAR_END :[konec] STR_ORDER_OUT_OF_RANGE :{RED} (Naslednji cilj je izven dosega) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Skoči na ukaz {COMMA} STR_ORDER_CONDITIONAL_NUM :Skoči na ukaz {COMMA}, ko je {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Skoči na ukaz {COMMA}, ko je {STRING} {STRING} STR_INVALID_ORDER :{RED} (Neveljaven ukaz) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Urnik) STR_TIMETABLE_ORDER_VIEW :{BLACK}Ukazi STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Preklop na pogled ukazov STR_TIMETABLE_TOOLTIP :{BLACK}Urnik - klikni na ukaz, da ga označiš STR_TIMETABLE_NO_TRAVEL :Brez potovanja STR_TIMETABLE_NOT_TIMETABLEABLE :Potovanje (avtomatično; urnik z naslednjim ukazom) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Potovanje (brez urnika) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Potuj z največ {2:VELOCITY} (brez časovne tabele) STR_TIMETABLE_TRAVEL_FOR :Potuj za {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Pozuj proti {STRING} z najvišjo hitrostjo {VELOCITY} STR_TIMETABLE_STAY_FOR :in ostani za {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :s potovanjem za {STRING} STR_TIMETABLE_DAYS :{COMMA} d{P an neva nevi ni} STR_TIMETABLE_TICKS :{COMMA} pik{P a i e ""} STR_TIMETABLE_TOTAL_TIME :{BLACK}Ta urnik bo potreboval {STRING} do zaključka STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ta urnik bo potreboval vsaj {STRING} do zaključka (ni vse zajeto v urniku) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}To vozilo trenutno vozi po točnem času STR_TIMETABLE_STATUS_LATE :{BLACK}To vozilo zamuja za {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}To vozilo prehiteva za {STRING} . STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ta urnik se še ni začel STR_TIMETABLE_STATUS_START_AT :{BLACK}Ta urnik se bo začel ob {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Začetni datum STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Izberi datum kot začetno točko tega urnika STR_TIMETABLE_CHANGE_TIME :{BLACK}Spremeni čas STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Spremeni čas, ki naj bi ga označeni ukaz porabil STR_TIMETABLE_CLEAR_TIME :{BLACK}Počisti čas STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Počisti čas za označen ukaz STR_TIMETABLE_CHANGE_SPEED :{BLACK}Spremeni omejitev hitrosti STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Spremeni najvišjo potovalno hitrost označenega ukaza STR_TIMETABLE_CLEAR_SPEED :{BLACK}Počisti omejitev hitrosti STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Počisti najvišjo potovalno hitrost onačenega ukaza STR_TIMETABLE_RESET_LATENESS :{BLACK}Resetiraj Števec zamud STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Resetiraj števec zamud, da bodo vozila točna STR_TIMETABLE_AUTOFILL :{BLACK}Samodejno STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Avtomatsko napolni urnik z vrednostmi iz naslednjega potovanja (Ctrl-Klik za poskus vzdrževanja čakalnih dob) STR_TIMETABLE_EXPECTED :{BLACK}Pričakovan STR_TIMETABLE_SCHEDULED :{BLACK}Določen STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Preklopi med pričakovanim in določenim STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Določi datum STR_DATE_SET_DATE :{BLACK}Določi datum STR_DATE_SET_DATE_TOOLTIP :{BLACK}Uporabi izbrani datum kot začetek urnika STR_DATE_DAY_TOOLTIP :{BLACK}Izberi dan STR_DATE_MONTH_TOOLTIP :{BLACK}Izberi mesec STR_DATE_YEAR_TOOLTIP :{BLACK}Izbeir leto # AI debug window STR_AI_DEBUG :{WHITE}Razhroščevanje UI / skripte STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ime skripte STR_AI_DEBUG_SETTINGS :{BLACK}Nastavitve STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Spremeni nastavitve skripte STR_AI_DEBUG_RELOAD :{BLACK}Ponovno naloži UI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Uniči UI, ponovno naloži skripto in ponovno zaženi UI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Vključi/izključi prelom, ko se sporočilo UI ujema z besedilom preloma STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Prelomi na: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Prelomi na STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Če se sporočilo v dnevniku UI ujema z besedilom, se igra prekine STR_AI_DEBUG_MATCH_CASE :{BLACK}Ujemanje začetnic STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Preklopi način ujemanja pri primerjanju dnevnika UI z napako STR_AI_DEBUG_CONTINUE :{BLACK}Nadaljuj STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Nadaljuj izvajanje UI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Oglej si razhroščevalni izpis UI STR_AI_GAME_SCRIPT :{BLACK}Skripta STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Preveri dnevnik skriptov igre STR_ERROR_AI_NO_AI_FOUND :Ni na voljo nobene uporabne UI.{}Ta UI je navidezen in ne bo storil ničesar. UI so na voljo preko 'Prenosa vsebin' STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Ena izmed zagnanih UI se je sesula. Prosim, javi to avtorju UI s priloženo sliko zaslona v orodju za razhroščevanje UI STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Okno razhroščevanja UI / skripte je na voljo samo za strežnik # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Nastavitve UI / skript igre STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Skript igre, ki bo naložen v naslednji igri STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}UI, ki bodo naložene v naslednji igri STR_AI_CONFIG_HUMAN_PLAYER :Igralec STR_AI_CONFIG_RANDOM_AI :Naključni UI STR_AI_CONFIG_NONE :(brez) STR_AI_CONFIG_MOVE_UP :{BLACK}Premakni višje STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Premakni izbran UI višje po seznamu STR_AI_CONFIG_MOVE_DOWN :{BLACK}Premakni nižje STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Premakni izbran UI nižje po seznamu STR_AI_CONFIG_GAMESCRIPT :{SILVER}Skripta igre STR_AI_CONFIG_AI :{SILVER}UI-ji STR_AI_CONFIG_CHANGE :{BLACK}Izberi {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :UI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Skripta igre STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Naloži drugi skript STR_AI_CONFIG_CONFIGURE :{BLACK}Nastavi STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Nastavi parametre Skripte # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Na voljo je {STRING} STR_AI_LIST_CAPTION_AI :UI-ji STR_AI_LIST_CAPTION_GAMESCRIPT :Skripte igre STR_AI_LIST_TOOLTIP :{BLACK}Klikni za izbor skripte STR_AI_LIST_AUTHOR :{LTBLUE}Avtor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Verzija: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Potrdi STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Izberi označeno skripto STR_AI_LIST_CANCEL :{BLACK}Prekliči STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ne spremeni skripte # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametri STR_AI_SETTINGS_CAPTION_AI :UI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Skripta igre STR_AI_SETTINGS_CLOSE :{BLACK}Zapri STR_AI_SETTINGS_RESET :{BLACK}Resetiraj STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Število dni zamika med zagonom sledeče po predhodni UI: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} preberi-me od {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} zamenjaj dnevnik od {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licenca od {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Prikaži preberi-me datoteko STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Zamenjaj dnevnik STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenca # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cena: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Cena: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Prihodki: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Prihodki: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Prenos: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Prenos: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Ocenjeni stroški: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Predvideni prihodki: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Shranjevanje poteka,{}Prosim počakaj, da se zaključi! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Samodejno shranjevanje spodletelo STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Pogona ni mogoče prebrati STR_ERROR_GAME_SAVE_FAILED :{WHITE}Shranjevanje igre ni uspelo{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datoteke ni mogoče zbrisati STR_ERROR_GAME_LOAD_FAILED :{WHITE}Nalaganje igre ni uspelo{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interna napaka: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Napaka v shranjeni igri - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Igra je bila shranjena z novejso razlicico STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Datoteke ni mogoče brati STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :V datoteko ni mogoče pisati STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Preverba podatkov ni uspela STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Igra je bila shranjena brez podpore za tramvaj. Vsi tramvaji so bili odstranjeni # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Ustvarjanje ozemlja prekinjeno...{}... ni primernih lokacij za mesta STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... ni mest na ozemlju STR_ERROR_PNGMAP :{WHITE}Ni mogoče naložiti ozemlja iz PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... datoteke ni mogoče najti STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... ni mogoče pretvoriti vrste slike. Potrebna je 8 ali 24-bit PNG slika STR_ERROR_PNGMAP_MISC :{WHITE}... nekaj je narobe (najbrž nepopolna datoteka) STR_ERROR_BMPMAP :{WHITE}Ni mogoče naložiti pokrajine iz formata BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... ni mogoče spremeniti tipa slike STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... slika je prevelika STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Opozorilo za merilo STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Prevelika sprememba velikosti ozemlja ni priporočena. Nadaljujem? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Samo rezerven zvočni komplet je bil najden. Če želiš zvok, namesti zvočni komplet preko sistema prenosov # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Ogromna slika zaslona STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Slika zaslona bo imela ločljivost {COMMA} x {COMMA} slikovnih točk. Ustvarjanje slike zaslona lahko traja nekaj časa. Ali želite nadaljevati? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Slika je uspešno zajeta kot {} '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Zajemanje slike ni uspelo!!! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Sporočilo STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Sporočilo od/iz {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Čez rob zemljevida STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Preblizu roba zemljevida STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Premalo denarja - potrebuješ {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Potrebno je ravno zemljišče STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren nagnjen v napačno smer STR_ERROR_CAN_T_DO_THIS :{WHITE}Ni izvedljivo... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Najprej mora biti stavba porušena STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Ni mogoče očistiti tega področja... STR_ERROR_SITE_UNSUITABLE :{WHITE}... neprimerna lokacija STR_ERROR_ALREADY_BUILT :{WHITE}... že zgrajeno STR_ERROR_OWNED_BY :{WHITE}... v lasti {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... zemljišče je last drugega podjetja STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... dosežena omejitev izdelave terena STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... dosežena omejitev čiščenja terena STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... dosežena meja sajenja dreves STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Ime mora biti edinstveno STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} na poti STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ni dovoljeno med pavzo # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} mestna oblast tega ne dovoli STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} mestni svet prepoveduje gradnjo še enega letališča v tem mestu STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :Lokalne oblasti mesta {WHITE}{TOWN} ne dovolijo gradnje letališča zaradi hrupa STR_ERROR_BRIBE_FAILED :{WHITE}Tvoj poskus podkupovanja je odkril regijski preiskovalec # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Tukaj ni možen dvig terena... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Tukaj ni mogoče nižanje terena... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Tukaj ni mogoče izravnati zemlje... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Izkop bi lahko poškodoval predor... STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... že na morski gladini STR_ERROR_TOO_HIGH :{WHITE}... previsoko STR_ERROR_ALREADY_LEVELLED :{WHITE}... je že zravnana # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ni mogoče spremeniti imena podjetja... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Ni mogoče spremeniti direktorjevega imena... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... najvišje dovoljeno posojilo je {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Ni mogoča izposoja več denarja... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ni posojila za odplačati STR_ERROR_CURRENCY_REQUIRED :{WHITE}... potrebuješ {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Ni mogoče odplačati posojila... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Ni mogoča oddaja denarja, ki je izposojen od banke... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Ne moreš kupiti podjetja... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Ni mogoče zgraditi sedeža podjetja... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Ni mogoče kupiti 25% delnic tega podjetja... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Ni mogoče prodati 25% delnic tega podjetja... STR_ERROR_PROTECTED :{WHITE}Podjetje še ni dovolj staro, da bi lahko trgovalo z lastnimi delnicami... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Ni mogoče zgraditi mest STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Ne moreš preimenovati mesta... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Tukaj ni mogoče zgraditi mesta... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Ni mogoče širiti mesta... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... preblizu roba zemljevida STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... preblizu drugemu mestu STR_ERROR_TOO_MANY_TOWNS :{WHITE}... preveliko število mest STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ni več prostora na zemljevidu STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Mesta ne bodo gradila cest. Lahko omogočiš gradnjo cest v Napredne nastavitve->Ekonomija->Mesta STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Cestna dela napredujejo STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Ni mogoče zbrisati mesta...{}Postaja ali garaža se nanaša na to mesto ali pa področje v lastnini mesta ne more biti odstranjeno STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... ni primernega mesta za kip v centru tega mesta # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... preveliko število industrij STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ni mogoče zgraditi industrij... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Tukaj ni mogoče zgraditi {STRING}... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Tukaj ni mogoče zgraditi tega tipa industrije... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... preblizu drugi industriji STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... najprej je potrebno zgraditi mesto STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... samo en primerek na mesto dovoljen STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... gradnja mogoča samo v mestih z vsaj 1200 ljudmi STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... gradnja mogoča samo v območju deževnega gozda STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... gradnja mogoča samo v puščavi STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... gradnja možna samo v mestih (zamenja hiše) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... gradnja možna samo blizu centra naselij STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... gradnja možna samo v nižjih predelih STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... mogoče zgraditi samo ob robu zemljevida STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... gozd je mogoče posaditi samo nad nivojem snežne odeje STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... lahko se zgradi samo nad snežno mejo STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... lahko se zgradi samo pod snežno mejo # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Tukaj ni mogoče zgraditi železniške postaje... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Tukaj ni mogoče zgraditi avtobusne postaje... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Tukaj ni mogoče zgraditi tovorne postaje... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Tukaj ni mogoče zgraditi potniške tramvaj postaje... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Tukaj ni mogoče zgraditi tovorne tramvaj postaje... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Tukaj ni mogoče zgraditi pomola... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Tukaj ni mogoče zgraditi letališča... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Združi dve ali več postaj STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... postaja preveč razširjena STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Preveč postaj na zemljevidu STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Preveč delov železniške postaje STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Preveč avtobusnih postaj STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Preveč tovornih postaj STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Preblizu druge postaje STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Preblizu drugemu pristanišču STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Preblizu sosednjemu letališču STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Ni mogoče preimenovati postaje STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ta cesta je last mesta STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... cesta je obrnjena napačno STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... postanki ne smejo imeti vogalov STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... postanki ne smejo imeti odcepov # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Ni mogoče odstraniti dela postaje... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Najprej moraš odstraniti železniško postajo STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Tukaj ni mogoče odstraniti avtobusne postaje... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Tukaj ni mogoče odstraniti tovorne postaje... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Tukaj ni mogoče odstraniti potniške tramvaj postaje... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Tukaj ni mogoče odstraniti tovorne tramvaj postaje... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Najprej moraš odstraniti cestno postajo STR_ERROR_THERE_IS_NO_STATION :{WHITE}... ni postaje STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Najprej moraš porušiti postajo STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Najprej moraš porušiti avtobusno postajo STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Najprej moraš porušiti tovorno postajo STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Najprej moraš porušiti potniško tramvaj postajo STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Najprej moraš porušiti tovorno tramvaj postajo STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Najprej moraš porušiti pristanišče STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Najprej moraš porušiti letališče # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Združi z več kot eno obstoječo točko poti STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Preblizu drugi točki poti STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Tukaj ni mogoče postaviti točke poti... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Tukaj ni mogoče postaviti boje... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Ni mogoče preimenovati točke poti... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Tukaj ni mogoče odstraniti točke poti... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Najprej moraš odstraniti točko poti STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boja na poti STR_ERROR_BUOY_IS_IN_USE :{WHITE}... bojo uporablja drugo podjetje! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Tukaj ni mogoče zgraditi železniške garaže... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Tukaj ni mogoče zgraditi garaže... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Tukaj ni mogoče zgraditi tramvaj garaže... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Tukaj ni mogoče zgraditi ladjedelnice... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Ni mogoče preimenovati garaže... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti ustavljen v garaži STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti ustavljeno v garaži cestnih vozil STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... mora biti ustavljena in v garaži STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... mora biti ustavljeno v hangarju STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Vlaki so lahko spremenjeni šele, ko stojijo v garaži STR_ERROR_TRAIN_TOO_LONG :{WHITE}Vlak je predolg STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Ni mogoče spremeniti smeri vozila... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... sestavljen iz večih enot STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Nezdružljiv tip tirov STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Ni mogoče premakniti vozila... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Zadnja lokomotiva vedno sledi prvi STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ni mogoče najti poti do najbližje garaže STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ni mogoče najti najbližje garaže STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Napačna vrsta garaže # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je predolgo po zamenjavi STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ni samoobnovitvenih pravil STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(denarna meja) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemogoča kombinacija tirnic STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Najprej moraš odstraniti signale STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ni primernih tračnic STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Najprej moraš odstraniti tračnice STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Cesta je enosmerna ali blokirana STR_ERROR_CROSSING_DISALLOWED :{WHITE}Istonivojna križišča niso dovoljena za ta tip železnice STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Tukaj ni mogoče zgraditi signalov... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Tukaj ni mogoče zgraditi železniških tirov... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Tukaj ni mogoče odstraniti železniških tirov... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Tukaj ni mogoče odstraniti signalov... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Tukaj ni mogoče spremeniti vrste signalov... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... ni železniške proge STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... ni signalov STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Tukaj ni mogoče spremeniti tipa železnice... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Najprej moraš odstraniti cesto STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... enosmerne poti ne morejo imeti odcepov STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Tukaj ni mogoče zgraditi ceste... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Tukaj ni mogoče zgraditi tramvaja... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Tukaj ni mogoče odstraniti ceste... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Tukaj ni mogoče odstraniti tramvaja... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... ni ceste STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... ni tramvaj proge # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Tukaj ni mogoče zgraditi kanalov... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Tukaj ni mogoče zgraditi zapornic... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Tukaj ni mogoča postavitev rek... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... mora biti zgrajeno na vodi STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nemogoča gradnja na vodi STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... ni možna gradnja na odprtem morju STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... ni možna gradnja v kanalu STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... ni možna gradnja na reki STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Najprej moraš porušiti kanal STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Tukaj ni mogoče zgraditi akvedukta... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... drevo je že posajeno STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... napačen teren za to vrsto drevesa STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Tukaj ne moreš posaditi drevesa... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Tukaj ni mogoče zgraditi mostu... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Najprej moraš porušiti most STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ni mogoče začeti in končati v isti točki STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Priključki mosta niso na enaki višini STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizek za teren STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začetek in konec morata biti na isti višini STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba priključka mostu morata biti na kopnem STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... predolg most STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Most bi se končal izven ozemlja # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tukaj ni mogoče zgraditi predora... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Lokacija neprimerna za vhod v predor STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Najprej moraš porušiti predor STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Obstoječi predor v napoto STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Predor bi se končal izven ozemlja STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Ni mogoče izkopati zaključka predora na drugi strani STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... predolg predor # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... preveč objektov STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Ni mogoče zgraditi objekta... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ovira na poti STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sedež podjetja na poti STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Ni mogoče kupiti tega zemljišča... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... imaš ga že v lasti! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Ni mogoče ustvariti skupine... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Ni mogoče zbrisati te skupine... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Ni mogoče preimenovati skupine... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ni mogoče odstraniti vseh vozil iz te skupine... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ni mogoče dodati vozila v to skupino... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ni mogoče dodati izmenljivega vozila v skupino... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Vlak v napoto STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Cestno vozilo na poti STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Ladja v napoto STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Letalo v napoto STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Ni mogoče preurediti vlaka... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Ni možna preureditev cestnega vozila... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Ni mogoče preurediti ladje... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Ni mogoča preureditev letala... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Ni mogoče poimenovati vlaka... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Ni mogoče poimenovati cestnega vozila... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Ni mogoče poimenovati ladje... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Ni mogoče poimenovati letala... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Ni mogoče ustaviti/zagnati vlaka... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Ni mogoče ustaviti/zagnati cestnega vozila... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Ni mogoče ustaviti/zagnati ladje... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Ni mogoče ustaviti/zagnati letala... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Vlaka ni mogoče poslati v garažo... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Ni mogoče poslati vozila v garažo... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Ni mogoče poslati ladje v garažo... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Ni mogoče poslati letala v hangar... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Ni mogoče kupiti vozila... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Ni mogoče kupiti cestnega vozila... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Ni mogoče kupiti ladje... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Ni mogoče kupiti letala... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Ni mogoče preimenovati železniškega vozila... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Ni mogoče preimenovati cestnega vozila... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ni mogoče preimenovati ladje... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ni mogoče preimenovati letala... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Ni mogoče prodati železniškega vozila... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ni mogoče prodati cestnega vozila... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Ni mogoče prodati ladje... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ni mogoče prodati letala... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vozilo ni na voljo STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vozilo ni na voljo STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Ladja ni na voljo STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Letalo ni na voljo STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Preveč vozil v igri STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ni mogoče spremeniti obdobja servisiranja... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uničeno STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Sploh ni razpoložljivih vozil STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zamenjaj svojo NewGRF konfiguracijo STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ni še vozil na razpolago. STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začni novo igro po {DATE_SHORT} ali uporabi NewGRF, ki vsebuje zgodnja vozila # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ni mogoče, da vlak v nevarnosti pelje mimo signalov... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ni mogoče spremeniti smeri vlaka... STR_ERROR_TRAIN_START_NO_POWER :Vlak nima napajanja STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Cestno vozilo ne more obrniti... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Letalo v letu # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ni več prostora za ukaze STR_ERROR_TOO_MANY_ORDERS :{WHITE}Preveč ukazov STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Ni mogoče vstaviti novega ukaza... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Ni mogoče izbrisati ukaza... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ni mogoče spreminjati ukaza... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Ni možen premik tega ukaza... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Ni mogoče preskočiti trenutnega ukaza... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Ni mogoče preskočiti na izbran ukaz... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vozilo ne more do vseh postaj STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vozilo ne more do tiste postaje STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... vozilo, ki ima skupni ukaz, ne more do tiste postaje STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Ni mogoče deliti navodil... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Ni mogoče prenehati deljenja ukazov... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Ni mogoče skopirati urnika... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... predaleč od prejšnjega cilja STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... letalo nima dovolj dometa # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Ni mogoče določiti časa vozilu... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila lahko čakajo le na postajah STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}To vozilo se ne ustavlja na tej postaji # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... preveč znakov STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Tukaj ne moreš postaviti znaka... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Ne moreš spremeniti imena znaka... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ni mogoče zbrisati znaka... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Simulacija, temelječa na Transport Tycoonu Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Originalna grafika Transport Tycoon Deluxe za različico DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originalna grafika Transport Tycoon Deluxe za nemško različico DOS. STR_BASEGRAPHICS_WIN_DESCRIPTION :Originalna grafika Transport Tycoon Deluxe za različico oken(windows). STR_BASESOUNDS_DOS_DESCRIPTION :Originalni zvoki Transport Tycoon Deluxe različice DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Originalni zvoki Transport Tycoon Deluxe različice oken(windows). STR_BASESOUNDS_NONE_DESCRIPTION :Zvočni paket brez zvoka. STR_BASEMUSIC_WIN_DESCRIPTION :Originalna glasba Transport Tycoon Deluxe različice oken(windows). STR_BASEMUSIC_NONE_DESCRIPTION :Glasbeni paket z vključeno glasbo. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Visok pisarniški blok STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Pisarniški blok STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Majhen blok STR_TOWN_BUILDING_NAME_CHURCH_1 :Cerkev STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Velik pisarniški blok STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Mestne hiše STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Spomenik STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Vodnjak STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Pisarniški blok STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Trgovine in pisarne STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Moderna pisarniška stavba STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Skladišče STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Pisarniški blok STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Stare hiše STR_TOWN_BUILDING_NAME_COTTAGES_1 :Koče STR_TOWN_BUILDING_NAME_HOUSES_1 :Hiše STR_TOWN_BUILDING_NAME_FLATS_1 :Stanovanja STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Visok pisarniški blok STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Trgovine in pisarne STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Trgovine in pisarne STR_TOWN_BUILDING_NAME_THEATER_1 :Gledališče STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Pisarne STR_TOWN_BUILDING_NAME_HOUSES_2 :Hiše STR_TOWN_BUILDING_NAME_CINEMA_1 :Kino STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Nakupovalni center STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipiji STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Čajnik-hiša STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Prašičkova banka STR_TOWN_BUILDING_NAME_PIGGY_BANK_1.r :Prašičkove banke ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Premogovnik STR_INDUSTRY_NAME_COAL_MINE.r :Premogovnika STR_INDUSTRY_NAME_POWER_STATION :Termo elektrarna STR_INDUSTRY_NAME_POWER_STATION.r :Termo elektrarne STR_INDUSTRY_NAME_SAWMILL :Žaga STR_INDUSTRY_NAME_SAWMILL.r :Žage STR_INDUSTRY_NAME_SAWMILL.d :Žagi STR_INDUSTRY_NAME_FOREST :Gozd STR_INDUSTRY_NAME_FOREST.r :Gozda STR_INDUSTRY_NAME_OIL_REFINERY :Naftna rafinerija STR_INDUSTRY_NAME_OIL_REFINERY.r :Naftne rafinerije STR_INDUSTRY_NAME_OIL_RIG :Naftna ploščad STR_INDUSTRY_NAME_OIL_RIG.r :Naftne ploščadi STR_INDUSTRY_NAME_FACTORY :Tovarna STR_INDUSTRY_NAME_FACTORY.r :Tovarne STR_INDUSTRY_NAME_FACTORY.d :Tovarni STR_INDUSTRY_NAME_PRINTING_WORKS :Tiskarna STR_INDUSTRY_NAME_PRINTING_WORKS.r :Tiskarne STR_INDUSTRY_NAME_STEEL_MILL :Jeklarna STR_INDUSTRY_NAME_STEEL_MILL.r :Jeklarne STR_INDUSTRY_NAME_FARM :Kmetija STR_INDUSTRY_NAME_FARM.r :Kmetije STR_INDUSTRY_NAME_FARM.d :Kmetiji STR_INDUSTRY_NAME_COPPER_ORE_MINE :Rudnik bakra STR_INDUSTRY_NAME_COPPER_ORE_MINE.r :Rudnika bakra STR_INDUSTRY_NAME_OIL_WELLS :Naftni vrelci STR_INDUSTRY_NAME_OIL_WELLS.r :Naftnih vrelcev STR_INDUSTRY_NAME_BANK :Banka STR_INDUSTRY_NAME_BANK.r :Banke STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Prehrambeni obrat STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.r :Prehrambenega obrata STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.d :Prehrambenem obratu STR_INDUSTRY_NAME_PAPER_MILL :Papirnica STR_INDUSTRY_NAME_PAPER_MILL.r :Papirnice STR_INDUSTRY_NAME_GOLD_MINE :Rudnik zlata STR_INDUSTRY_NAME_GOLD_MINE.r :Rudnika zlata STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banka STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.r :Banke STR_INDUSTRY_NAME_DIAMOND_MINE :Rudnik diamantov STR_INDUSTRY_NAME_DIAMOND_MINE.r :Rudnika diamantov STR_INDUSTRY_NAME_IRON_ORE_MINE :Rudnik železove rude STR_INDUSTRY_NAME_IRON_ORE_MINE.r :Rudnika železove rude STR_INDUSTRY_NAME_FRUIT_PLANTATION :Sadovnjak STR_INDUSTRY_NAME_FRUIT_PLANTATION.r :Sadovnjaka STR_INDUSTRY_NAME_RUBBER_PLANTATION :Plantaža kavčuka STR_INDUSTRY_NAME_RUBBER_PLANTATION.r :Plantaže kavčuka STR_INDUSTRY_NAME_WATER_SUPPLY :Vodno zajetje STR_INDUSTRY_NAME_WATER_SUPPLY.r :Vodnega zajetja STR_INDUSTRY_NAME_WATER_TOWER :Vodni stolp STR_INDUSTRY_NAME_WATER_TOWER.r :Vodnega stolpa STR_INDUSTRY_NAME_FACTORY_2 :Tovarna STR_INDUSTRY_NAME_FACTORY_2.r :Tovarne STR_INDUSTRY_NAME_FACTORY_2.d :Tovarni STR_INDUSTRY_NAME_FARM_2 :Kmetija STR_INDUSTRY_NAME_FARM_2.r :Kmetije STR_INDUSTRY_NAME_FARM_2.d :Kmetiji STR_INDUSTRY_NAME_LUMBER_MILL :Gozdarski obrat STR_INDUSTRY_NAME_LUMBER_MILL.r :Gozdarskega obrata STR_INDUSTRY_NAME_LUMBER_MILL.d :Gozdarskem obratu STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Gozd sladkorne pene STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.r :Gozda sladkorne pene STR_INDUSTRY_NAME_CANDY_FACTORY :Tovarna slaščic STR_INDUSTRY_NAME_CANDY_FACTORY.r :Tovarne slaščic STR_INDUSTRY_NAME_BATTERY_FARM :Farma baterij STR_INDUSTRY_NAME_BATTERY_FARM.r :Farme baterij STR_INDUSTRY_NAME_COLA_WELLS :Izvir cockte STR_INDUSTRY_NAME_COLA_WELLS.r :Izvira cockte STR_INDUSTRY_NAME_TOY_SHOP :Trgovina z igračami STR_INDUSTRY_NAME_TOY_SHOP.r :Trgovine z igračami STR_INDUSTRY_NAME_TOY_FACTORY :Tovarna igrač STR_INDUSTRY_NAME_TOY_FACTORY.r :Tovarne igrač STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Vrelci plastike STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.r :Vrelcev plastike STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Tovarna gaziranih pijač STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.r :Tovarne gaziranih pijač STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Generator mehurčkov STR_INDUSTRY_NAME_BUBBLE_GENERATOR.r :Generatorja mehurčkov STR_INDUSTRY_NAME_TOFFEE_QUARRY :Jama karamele STR_INDUSTRY_NAME_TOFFEE_QUARRY.r :Jame karamele STR_INDUSTRY_NAME_SUGAR_MINE :Rudnik sladkorja STR_INDUSTRY_NAME_SUGAR_MINE.r :Rudnika sladkorja ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Neimenovano STR_SV_TRAIN_NAME :Vlak {COMMA} STR_SV_ROAD_VEHICLE_NAME :Cestno vozilo {COMMA} STR_SV_SHIP_NAME :Ladja {COMMA} STR_SV_AIRCRAFT_NAME :Letalo {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Severna STR_SV_STNAME_SOUTH :{STRING} Južna STR_SV_STNAME_EAST :{STRING} Vzhodna STR_SV_STNAME_WEST :{STRING} Zahodna STR_SV_STNAME_CENTRAL :{STRING} Centralna STR_SV_STNAME_TRANSFER :{STRING} Preklopna STR_SV_STNAME_HALT :{STRING} Postanek STR_SV_STNAME_VALLEY :{STRING} V dolini STR_SV_STNAME_HEIGHTS :{STRING} Višja STR_SV_STNAME_WOODS :{STRING} Gozdna STR_SV_STNAME_LAKESIDE :{STRING} Ob jezeru STR_SV_STNAME_EXCHANGE :{STRING} Izmenjalna STR_SV_STNAME_AIRPORT :{STRING} Letališče STR_SV_STNAME_OILFIELD :{STRING} Naftna ploščad STR_SV_STNAME_MINES :{STRING} Rudniška STR_SV_STNAME_DOCKS :{STRING} Doki STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Priključna STR_SV_STNAME_SIDINGS :{STRING} Stranska STR_SV_STNAME_BRANCH :{STRING} Razvodna STR_SV_STNAME_UPPER :Gornja {STRING} STR_SV_STNAME_LOWER :Dolnja {STRING} STR_SV_STNAME_HELIPORT :{STRING} Pristajališče STR_SV_STNAME_FOREST :{STRING} Gozd STR_SV_STNAME_FALLBACK :{STRING} Postaja #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Parna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Parna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Parna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Parna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Parna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Električna) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Potniški vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Poštni vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Vagon za premog STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Naftna cisterna STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Vagon za živino STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Vagon za izdelke STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Vagon za žito STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Vagon za les STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Vagon za žel. rudo STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Vagon za jeklo STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Oklepni vagon STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Vagon za hrano STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Vagon za papir STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Vagon za bakr. rudo STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Vodna cisterna STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Vagon za sadje STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Vagon za kavčuk STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Vagon za sladkor STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Vagon za sladk. peno STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Vagon za karamel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Vagon za mehurčke STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cisterna za cockto STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Vagon za sladkarije STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Vagon za igrače STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Vagon za baterije STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Vagon z gaz. pijačami STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Vagon za plastiko STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Električna) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Potniški vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Poštni vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Vagon za premog STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Cisterna za nafto STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Vagon za živino STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Vagon za izdelke STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Vagon za žito STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Vagon za les STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Vagon za žel. rudo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Vagon za jeklo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Oklepni vagon STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Vagon za hrano STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Vagon za papir STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Vagon za bark. rudo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cisterna za vodo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Vagon za sadje STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Vagon za kavčuk STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Vagon za sladkor STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Vagon za sladk. peno STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Vagon za karamel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Vagon za mehurčke STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cisterna za cockto STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Vagon za sladkarije STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Vagon za igrače STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Vagon za baterije STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Vagon za gaz. pijače STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Vagon za plastiko STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektricna) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektricna) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektricna) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektricna) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Potniški vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Poštni vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Vagon za premog STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Cisterna za nafto STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Vagon za živino STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Vagon za izdelke STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Vagon za žito STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Vagon za les STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Vagon za žel. rudo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Vagon za jeklo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Oklepni vagon STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Vagon za hrano STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Vagon za papir STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Vagon za bakr. rudo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cisterna za vodo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Vagon za sadje STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Vagon za kavčuk STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Vagon za sladkor STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Vagon za sladk. peno STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Vagon za karamelo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Vagon za mehurčke STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cisterna za cockto STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Vagon za sladkarije STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Vagon za igrače STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Vagon za baterije STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Vagon za gaz. pijače STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Vagon za plastiko STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS regionalni avtobus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard avtobus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster avtobus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI avtobus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII avtobus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII avtobus STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh tovornjak za premog STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl tovornjak za premog STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW tovornjak za premog STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS tovornjak za pošto STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard tovornjak za pošto STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry tovornjak za pošto STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover tovornjak za pošto STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught tovornjak za pošto STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow tovornjak za pošto STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe cisterna za nafto STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster cisterna za nafto STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry cisterna za nafto STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott tovornjak za živino STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl tovornjak za živino STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster tovornjak za živino STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh tovornjak za izdelke STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead tovornjak za izdelke STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss tovornjak za izdelke STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford tovornjak za žito STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas tovornjak za žito STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss tovornjak za žito STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe tovornjak za les STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Fooster tovornjak za les STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland tovornjak za les STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS tovornjak za žel. rudo STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl tovornjak za žel. rudo STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy tovornjak za žel. rudo STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh tovornjak za jeklo STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl tovornjak za jeklo STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling tovornjak za jeklo STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh oklepni tovornjak STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl oklepni tovornjak STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster oklepni tovornjak STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster tovornjak za hrano STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry tovornjak za hrano STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy tovornjak za hrano STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl tovornjak za papir STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh tovornjak za papir STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS tovornjak za papir STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS tovornjak za bakr. rudo STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl tovornjak za bakr. rudo STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss tovornjak za bakr. rudo STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl cisterna za vodo STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh cisterna za vodo STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS cisterna za vodo STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh tovornjak za sadje STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl tovornjak za sadje STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling tovornjak za sadje STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh tovornjak za kavčuk STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl tovornjak za kavčuk STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT tovornjak za kavčuk STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover tovornjak za sladkor STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught tovornjak za sladkor STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow tovornjak za sladkor STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover cisterna za Cockto STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught cisterna za Cockto STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow cisterna za Cockto STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover tovornjak za sladk. peno STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught tovornjak za sladk. peno STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow tovornjak za sladk. peno STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover tovornjak za karamel STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught tovornjak za karamel STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow tovornjak za karamel STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover tovornjak za igrače STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught tovornjak za igrače STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow tovornjak za igrače STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover tovornjak za sladkarije STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught tovornjak za sladkarije STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow tovornjak za sladkarije STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover tovornjak za baterije STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught tovornjak za baterije STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow tovornjak za baterije STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover tovornjak za gaz. pijače STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught tovornjak za gaz. pijače STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow tovornjak za gaz. pijače STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover tovornjak za plastiko STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught tovornjak za plastiko STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow tovornjak za plastiko STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover tovornjak za mehurčke STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught tovornjak za mehurčke STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow tovornjak za mehurčke STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS naftni tanker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. naftni tanker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS potniški trajekt STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP potniški trajekt STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Hovercraft STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug potniški trajekt STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake potniški trajekt STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate tovorna ladja STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell tovorna ladja STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover tovorna ladja STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut tovorna ladja STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario helikopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 helikopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut helikopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Boja STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boja #{COMMA} STR_FORMAT_COMPANY_NUM :(Podjetje {COMMA}) STR_FORMAT_GROUP_NAME :Skupina {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Točka poti {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Točka poti {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Železniška garaža STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Železniška garaža #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Cestna garaža STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Cestna garaža #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Ladijska garaža STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Ladijska garaža #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :neznana postaja STR_DEFAULT_SIGN_NAME :Znak STR_COMPANY_SOMEONE :nekdo STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Gledalec, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/greek.txt0000644000000000000000000205143112246102561015244 0ustar rootroot##name Greek ##ownname Ελληνικά ##isocode el_GR ##plural 2 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0408 ##grflangid 0x1e ##gender m f n ##case subs date geniki # $Id: greek.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(απροσδιόριστο) STR_JUST_NOTHING :Τίποτα # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :{G=m}Επιβάτες STR_CARGO_PLURAL_PASSENGERS.geniki :{G=m}Επιβάτη STR_CARGO_PLURAL_COAL :{G=m}Άνθρακες STR_CARGO_PLURAL_COAL.geniki :{G=m}Άνθρακα STR_CARGO_PLURAL_MAIL :{G=f}Αλληλογραφία STR_CARGO_PLURAL_MAIL.geniki :{G=f}Αλληλογραφία STR_CARGO_PLURAL_OIL :{G=n}Πετρέλαια STR_CARGO_PLURAL_OIL.geniki :{G=n}Πετρελαίου STR_CARGO_PLURAL_LIVESTOCK :{G=n}Ζώα STR_CARGO_PLURAL_LIVESTOCK.geniki :Ζώων STR_CARGO_PLURAL_GOODS :{G=n}Αγαθά STR_CARGO_PLURAL_GOODS.geniki :Αγαθών STR_CARGO_PLURAL_GRAIN :{G=n}Σιτηρά STR_CARGO_PLURAL_GRAIN.geniki :{G=n}Σιτηρών STR_CARGO_PLURAL_WOOD :{G=f}Ξυλεία STR_CARGO_PLURAL_WOOD.geniki :Ξυλείας STR_CARGO_PLURAL_IRON_ORE :{G=n}Σιδηρομεταλλεύματα STR_CARGO_PLURAL_IRON_ORE.geniki :{G=n}Σιδηρομεταλλευμάτων STR_CARGO_PLURAL_STEEL :{G=m}Χάλυβες STR_CARGO_PLURAL_STEEL.geniki :{G=m}Χάλυβα STR_CARGO_PLURAL_VALUABLES :{G=n}Πολύτιμα είδη STR_CARGO_PLURAL_VALUABLES.geniki :{G=n}Πολύτιμων ειδών STR_CARGO_PLURAL_COPPER_ORE :{G=n}Μεταλλεύματα Χαλκού STR_CARGO_PLURAL_COPPER_ORE.geniki :{G=n}Μεταλλευμάτων Χαλκού STR_CARGO_PLURAL_MAIZE :{G=n}Καλαμπόκια STR_CARGO_PLURAL_MAIZE.geniki :{G=n}Καλαμποκιών STR_CARGO_PLURAL_FRUIT :{G=n}Φρούτα STR_CARGO_PLURAL_FRUIT.geniki :Φρούτων STR_CARGO_PLURAL_DIAMONDS :{G=n}Διαμάντια STR_CARGO_PLURAL_DIAMONDS.geniki :Διαμαντιών STR_CARGO_PLURAL_FOOD :{G=n}Τρόφιμα STR_CARGO_PLURAL_FOOD.geniki :Τροφίμων STR_CARGO_PLURAL_PAPER :{G=n}Χαρτιά STR_CARGO_PLURAL_PAPER.geniki :Χαρτιών STR_CARGO_PLURAL_GOLD :{G=m}Χρυσός STR_CARGO_PLURAL_GOLD.geniki :Χρυσού STR_CARGO_PLURAL_WATER :{G=n}Νερά STR_CARGO_PLURAL_WATER.geniki :Νερών STR_CARGO_PLURAL_WHEAT :Σιτάρια STR_CARGO_PLURAL_WHEAT.geniki :Σιταριών STR_CARGO_PLURAL_RUBBER :{G=n}Λάστιχα STR_CARGO_PLURAL_RUBBER.geniki :Λάστιχων STR_CARGO_PLURAL_SUGAR :{G=f}Ζάχαρες STR_CARGO_PLURAL_SUGAR.geniki :Ζάχαρων STR_CARGO_PLURAL_TOYS :{G=n}Παιχνίδια STR_CARGO_PLURAL_TOYS.geniki :Παιχνιδιών STR_CARGO_PLURAL_CANDY :{G=n}Γλυκίσματα STR_CARGO_PLURAL_CANDY.geniki :{G=n}Γλυκισμάτων STR_CARGO_PLURAL_COLA :{G=f}Κόλα STR_CARGO_PLURAL_COLA.geniki :{G=f}Κόλας STR_CARGO_PLURAL_COTTON_CANDY :{G=n}Μαλλιά της γριάς STR_CARGO_PLURAL_COTTON_CANDY.geniki :{G=n}Μαλλιών της γριάς STR_CARGO_PLURAL_BUBBLES :{G=f}Φυσαλίδες STR_CARGO_PLURAL_BUBBLES.geniki :{G=f}Φυδαλίδων STR_CARGO_PLURAL_TOFFEE :{G=n}Ζαχαρωτά STR_CARGO_PLURAL_TOFFEE.geniki :{G=n}Ζαχαρωτών STR_CARGO_PLURAL_BATTERIES :{G=f}Μπαταρίες STR_CARGO_PLURAL_BATTERIES.geniki :{G=f}Μπαταριών STR_CARGO_PLURAL_PLASTIC :{G=n}Πλαστικά STR_CARGO_PLURAL_PLASTIC.geniki :{G=n}Πλαστικών STR_CARGO_PLURAL_FIZZY_DRINKS :{G=n}Αναψυκτικά STR_CARGO_PLURAL_FIZZY_DRINKS.geniki :{G=n}Αναψυκτικών # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :{G=m}Επιβάτης STR_CARGO_SINGULAR_PASSENGER.subs :{G=m}Επιβάτες STR_CARGO_SINGULAR_COAL :{G=m}Άνθρακας STR_CARGO_SINGULAR_COAL.subs :{G=m}Άνθρακες STR_CARGO_SINGULAR_MAIL :{G=f}Αλληλογραφία STR_CARGO_SINGULAR_MAIL.subs :{G=f}Αλληλογραφία STR_CARGO_SINGULAR_OIL :{G=n}Πετρέλαιο STR_CARGO_SINGULAR_OIL.subs :{G=n}Πετρέλαιο STR_CARGO_SINGULAR_LIVESTOCK :{G=n}Ζώο STR_CARGO_SINGULAR_LIVESTOCK.subs :{G=n}Ζώα STR_CARGO_SINGULAR_GOODS :{G=n}Αγαθό STR_CARGO_SINGULAR_GOODS.subs :{G=n}Αγαθα STR_CARGO_SINGULAR_GRAIN :{G=n}Σιτηρό STR_CARGO_SINGULAR_GRAIN.subs :{G=n}Σιτηρα STR_CARGO_SINGULAR_WOOD :{G=f}Ξυλεία STR_CARGO_SINGULAR_WOOD.subs :{G=f}Ξυλεία STR_CARGO_SINGULAR_IRON_ORE :{G=n}Σιδηρομετάλλευμα STR_CARGO_SINGULAR_IRON_ORE.subs :{G=n}Σιδηρομετάλλευμα STR_CARGO_SINGULAR_STEEL :{G=m}Χάλυβας STR_CARGO_SINGULAR_STEEL.subs :{G=m}Χάλυβα STR_CARGO_SINGULAR_VALUABLES :{G=n}Πολύτιμο είδος STR_CARGO_SINGULAR_VALUABLES.subs :{G=n}Πολύτιμα είδη STR_CARGO_SINGULAR_COPPER_ORE :{G=n}Μετάλλευμα Χαλκού STR_CARGO_SINGULAR_COPPER_ORE.subs :{G=n}Μετάλλευμα Χαλκού STR_CARGO_SINGULAR_MAIZE :{G=n}Καλαμπόκι STR_CARGO_SINGULAR_MAIZE.subs :{G=n}Καλαμπόκι STR_CARGO_SINGULAR_FRUIT :{G=n}Φρούτο STR_CARGO_SINGULAR_FRUIT.subs :{G=n}Φρούτα STR_CARGO_SINGULAR_DIAMOND :{G=n}Διαμάντι STR_CARGO_SINGULAR_DIAMOND.subs :{G=n}Διαμάντια STR_CARGO_SINGULAR_FOOD :{G=n}Τρόφιμο STR_CARGO_SINGULAR_FOOD.subs :{G=n}Τρόφιμα STR_CARGO_SINGULAR_PAPER :{G=n}Χαρτί STR_CARGO_SINGULAR_PAPER.subs :{G=n}Χαρτία STR_CARGO_SINGULAR_GOLD :{G=m}Χρυσός STR_CARGO_SINGULAR_GOLD.subs :{G=m}Χρυσό STR_CARGO_SINGULAR_WATER :{G=n}Νερό STR_CARGO_SINGULAR_WATER.subs :{G=n}Νερα STR_CARGO_SINGULAR_WHEAT :{G=n}Σιτάρι STR_CARGO_SINGULAR_WHEAT.subs :{G=n}Σιτάρια STR_CARGO_SINGULAR_RUBBER :{G=n}Λάστιχο STR_CARGO_SINGULAR_RUBBER.subs :{G=n}Λάστιχα STR_CARGO_SINGULAR_SUGAR :{G=f}Ζάχαρη STR_CARGO_SINGULAR_SUGAR.subs :{G=f}Ζάχαρες STR_CARGO_SINGULAR_TOY :{G=n}Παιχνίδι STR_CARGO_SINGULAR_TOY.subs :{G=n}Παιχνίδια STR_CARGO_SINGULAR_CANDY :{G=n}Γλυκό STR_CARGO_SINGULAR_CANDY.subs :{G=n}Γλυκα STR_CARGO_SINGULAR_COLA :{G=f}Κόλα STR_CARGO_SINGULAR_COTTON_CANDY :{G=n}Μαλλί της γριάς STR_CARGO_SINGULAR_COTTON_CANDY.subs :{G=n}Μαλλί της γριάς STR_CARGO_SINGULAR_BUBBLE :{G=f}Φυσαλίδα STR_CARGO_SINGULAR_BUBBLE.subs :{G=f}Φυσαλίδες STR_CARGO_SINGULAR_TOFFEE :{G=n}Ζαχαρωτό STR_CARGO_SINGULAR_TOFFEE.subs :{G=n}Ζαχαρωτα STR_CARGO_SINGULAR_BATTERY :{G=f}Μπαταρία STR_CARGO_SINGULAR_BATTERY.subs :{G=f}Μπαταρίες STR_CARGO_SINGULAR_PLASTIC :{G=n}Πλαστικό STR_CARGO_SINGULAR_PLASTIC.subs :{G=n}Πλαστικα STR_CARGO_SINGULAR_FIZZY_DRINK :{G=n}Αναψυκτικό STR_CARGO_SINGULAR_FIZZY_DRINK.subs :{G=n}Αναψυκτικα # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} επιβάτ{P ης ες} STR_QUANTITY_COAL :{WEIGHT_LONG} άνθρακα STR_QUANTITY_MAIL :{COMMA} σάκο{P ς ι} με αλληλογραφία STR_QUANTITY_OIL :{VOLUME_LONG} πετρελαίου STR_QUANTITY_LIVESTOCK :{COMMA} τεμάχι{P ο α} ζώων STR_QUANTITY_GOODS :{COMMA} κιβώτι{P ο α} αγαθών STR_QUANTITY_GRAIN :{WEIGHT_LONG} σιτηρών STR_QUANTITY_WOOD :{WEIGHT_LONG} ξύλου STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} μεταλλεύματος σιδήρου STR_QUANTITY_STEEL :{WEIGHT_LONG} χάλυβα STR_QUANTITY_VALUABLES :{COMMA} σάκ{P ος οι} με πολύτιμα είδη STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} μεταλλεύματος χαλκού STR_QUANTITY_MAIZE :{WEIGHT_LONG} καλαμποκιού STR_QUANTITY_FRUIT :{WEIGHT_LONG} φρούτων STR_QUANTITY_DIAMONDS :{COMMA} σάκ{P ος οι} με διαμάντια STR_QUANTITY_FOOD :{WEIGHT_LONG} τροφίμων STR_QUANTITY_PAPER :{WEIGHT_LONG} χαρτιού STR_QUANTITY_GOLD :{COMMA} σάκ{P ος οι} με χρυσό STR_QUANTITY_WATER :{VOLUME_LONG} νερού STR_QUANTITY_WHEAT :{WEIGHT_LONG} σιταριού STR_QUANTITY_RUBBER :{VOLUME_LONG} λάστιχου STR_QUANTITY_SUGAR :{WEIGHT_LONG} ζάχαρης STR_QUANTITY_TOYS :{COMMA} παιχνίδι{P "" α} STR_QUANTITY_SWEETS :{COMMA} σάκ{P ος οι} με γλυκά STR_QUANTITY_COLA :{VOLUME_LONG} κόλας STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} μαλλιού της γριάς STR_QUANTITY_BUBBLES :{COMMA} φυσαλίδ{P α ες} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} ζαχαρωτών STR_QUANTITY_BATTERIES :{COMMA} μπαταρί{P α ες} STR_QUANTITY_PLASTIC :{VOLUME_LONG} πλαστικού STR_QUANTITY_FIZZY_DRINKS :{COMMA} αναψυκτικ{P ό ά} STR_QUANTITY_N_A :Μ/Δ # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}ΕΠ STR_ABBREV_COAL :{TINY_FONT}CL STR_ABBREV_MAIL :{TINY_FONT}ΑΓ STR_ABBREV_OIL :{TINY_FONT}ΠΤ STR_ABBREV_LIVESTOCK :{TINY_FONT}ΖΩ STR_ABBREV_GOODS :{TINY_FONT}ΧΡ STR_ABBREV_GRAIN :{TINY_FONT}ΣΡ STR_ABBREV_WOOD :{TINY_FONT}ΞΛ STR_ABBREV_IRON_ORE :{TINY_FONT}ΣΜ STR_ABBREV_STEEL :{TINY_FONT}ΧΒ STR_ABBREV_VALUABLES :{TINY_FONT}ΤΜ STR_ABBREV_COPPER_ORE :{TINY_FONT}ΧΜ STR_ABBREV_MAIZE :{TINY_FONT}ΚΛ STR_ABBREV_FRUIT :{TINY_FONT}ΦΡ STR_ABBREV_DIAMONDS :{TINY_FONT}ΔΜ STR_ABBREV_FOOD :{TINY_FONT}ΤΦ STR_ABBREV_PAPER :{TINY_FONT}ΧΤ STR_ABBREV_GOLD :{TINY_FONT}ΧΡ STR_ABBREV_WATER :{TINY_FONT}ΝΕ STR_ABBREV_WHEAT :{TINY_FONT}ΣΤ STR_ABBREV_RUBBER :{TINY_FONT}ΚΤ STR_ABBREV_SUGAR :{TINY_FONT}ΖΧ STR_ABBREV_TOYS :{TINY_FONT}ΠΧ STR_ABBREV_SWEETS :{TINY_FONT}ΓΛ STR_ABBREV_COLA :{TINY_FONT}ΚΟ STR_ABBREV_CANDYFLOSS :{TINY_FONT}ΜΓ STR_ABBREV_BUBBLES :{TINY_FONT}ΦΥ STR_ABBREV_TOFFEE :{TINY_FONT}ΖΤ STR_ABBREV_BATTERIES :{TINY_FONT}ΜΠ STR_ABBREV_PLASTIC :{TINY_FONT}ΠΛ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ΑΨ STR_ABBREV_NONE :{TINY_FONT}ΤΠ STR_ABBREV_ALL :{TINY_FONT}ΟΛΑ # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} επιβάτ{P ης ες} STR_BAGS :{COMMA} σάκκ {P ος οι} STR_TONS :{COMMA} τόνο{P ς οι} STR_LITERS :{COMMA} λίτρ{P ο α} STR_ITEMS :{COMMA} αντικείμεν{P ο α} STR_CRATES :{COMMA} κουτ{P ί ιά} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Σκούρο Μπλε STR_COLOUR_PALE_GREEN :Ανοικτό Πράσινο STR_COLOUR_PINK :Ροζ STR_COLOUR_YELLOW :Κίτρινο STR_COLOUR_RED :Κόκκινο STR_COLOUR_LIGHT_BLUE :Ανοιχτό μπλέ STR_COLOUR_GREEN :Πράσινο STR_COLOUR_DARK_GREEN :Σκούρο Πράσινο STR_COLOUR_BLUE :Μπλε STR_COLOUR_CREAM :Κρεμ STR_COLOUR_MAUVE :Μωβ STR_COLOUR_PURPLE :Πορφυρό STR_COLOUR_ORANGE :Πορτοκαλί STR_COLOUR_BROWN :Καφέ STR_COLOUR_GREY :Γκρι STR_COLOUR_WHITE :Λευκό # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} χλμ/ω STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} τόνο{P ς ι} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}λ STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} λίτρ{P ο α} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} πόδια STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Φιλτράρισμα λίστας: STR_LIST_FILTER_OSKTITLE :{BLACK}Εισαγώγη κειμένου για φιλτράρισμα STR_LIST_FILTER_TOOLTIP :{BLACK}Εισάγετε μια λέξη για φιλτράρισμα της λίστας STR_TOOLTIP_SORT_ORDER :{BLACK}Επιλογή σειράς ταξινόμησης (καθοδικά/ανοδικά) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Επιλογή κριτηρίου ταξινόμησης STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Επιλέξτε κριτήρια φιλτραρίσματος STR_BUTTON_SORT_BY :{BLACK}Ταξινόμηση κατά STR_BUTTON_LOCATION :{BLACK}Τοποθεσία STR_BUTTON_RENAME :{BLACK}Μετονομασία STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Κλείσιμο παραθύρου STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Τίτλος παραθύρου - σύρετε το για να το μετακινήσετε STR_TOOLTIP_SHADE :{BLACK}Σκίαση παραθύρου - Εμφάνιση μόνο της μπάρας τιτλου STR_TOOLTIP_DEBUG :{BLACK}Εμφάνιση πληροφοριών αποσφαλμάτωσης για NewGRF STR_TOOLTIP_STICKY :{BLACK}Σημείωση αυτού του παραθύρου να μην κλείνει από το πλήκτρο 'Κλείσιμο Όλων των Παραθύρων' STR_TOOLTIP_RESIZE :{BLACK}Κάντε κλίκ και σύρετε για να αλλάξετε το μέγεθος του παραθύρου STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Εναλλαγή μεγάλου/μικρού παραθύρου STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Μπάρα Κύλισης - μετακινεί την λίστα πάνω/κάτω STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Μπάρα κίνησης - κινεί τη λίστα αριστερά/δεξιά STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Κατεδάφιση κτιρίων κλπ. σε συγκεκριμένο τετράγωνο. Το Ctrl επιλέγει την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους # Query window STR_BUTTON_DEFAULT :{BLACK}Προεπιλογή STR_BUTTON_CANCEL :{BLACK}Ακύρωση STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Μήκος: {NUM} STR_MEASURE_AREA :{BLACK}Περιοχή: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Μήκος: {NUM}{}Υψομετρική διαφορά: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Περιοχή: {NUM} x {NUM}{}Υψομετρική διαφορά: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Πληθυσμός STR_SORT_BY_CAPTION_NAME :{BLACK}Όνομα STR_SORT_BY_CAPTION_DATE :{BLACK}Ημερομηνία # These are used in dropdowns STR_SORT_BY_NAME :Όνομα STR_SORT_BY_PRODUCTION :Παραγωγή STR_SORT_BY_TYPE :Τύπος STR_SORT_BY_TRANSPORTED :Μεταφέρθηκαν STR_SORT_BY_NUMBER :Αριθμός STR_SORT_BY_PROFIT_LAST_YEAR :Κέρδος προηγούμενου χρόνου STR_SORT_BY_PROFIT_THIS_YEAR :Κέρδος αυτού του χρόνου STR_SORT_BY_AGE :Ηλικία STR_SORT_BY_RELIABILITY :Αξιοπιστία STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Συνολική χωρητικότητα ανά τύπο φορτίου STR_SORT_BY_MAX_SPEED :Μέγιστη ταχύτητα STR_SORT_BY_MODEL :Μοντέλο STR_SORT_BY_VALUE :Αξία STR_SORT_BY_LENGTH :Μήκος STR_SORT_BY_LIFE_TIME :Υπόλοιπη διάρκεια ζωής STR_SORT_BY_TIMETABLE_DELAY :Καθυστέρηση δρομολογίου STR_SORT_BY_FACILITY :Τύπος σταθμού STR_SORT_BY_WAITING :Αξία φορτίου σε αναμονή STR_SORT_BY_RATING_MAX :Υψηλότερη βαθμολογία φορτίου STR_SORT_BY_RATING_MIN :Χαμηλότερη βαθμολογία φορτίου STR_SORT_BY_ENGINE_ID :EngineID (κλασική ταξινόμηση) STR_SORT_BY_COST :Κόστος STR_SORT_BY_POWER :Δύναμη STR_SORT_BY_TRACTIVE_EFFORT :Δύναμη έλξης STR_SORT_BY_INTRO_DATE :Ημερομηνία Παρουσιάσης STR_SORT_BY_RUNNING_COST :Λειτουργικό Κόστος STR_SORT_BY_POWER_VS_RUNNING_COST :Ισχύς/Λειτουργικό Κόστος STR_SORT_BY_CARGO_CAPACITY :Χωρητικότητα Φορτίου STR_SORT_BY_RANGE :Εύρος # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Παύση παιχνιδιού STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Γρήγορη ταχύτητα παιχνιδιού STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Επιλογές STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Αποθήκευση, εγκατάλειψη, έξοδος STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Εμφάνιση χάρτη STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Εμφάνιση του καταλόγου πόλεων STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Εμφάνιση χρηματοδοτήσεων STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Εμφάνιση λίστας σταθμών της εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Εμφάνιση οικονομικών πληροφοριών εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Εμφάνιση γενικών πληροφοριών της εταιρίας STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Εμφάνιση γραφημάτων STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Εμφάνιση πίνακα κατάταξης των εταιριών STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Χρηματοδοτήστε την κατασκευή νέας βιομηχανίας STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Εμφάνιση λίστας τρένων της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Εμφάνιση λίστας με τα οδικά οχήματα της εταιρίας. Το Ctrl+Κλικ εναλλάσσει το άνοιγμα της λίστας ομάδων/οχημάτων STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Εμφάνιση λίστας με τα πλοία της εταιρίας. Το Ctrl+Κλικ εναλλάσσει το ανοίγμα της λίστας ομάδων/οχημάτων STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Εμφανίστε λίστα με τα αεροσκάφη της εταιρίας. Με Ctrl+Κλικ εναλλάσσεται το άνοιγμα της λίστας ομάδων/οχημάτων STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Μεγέθυνση εικόνας STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Σμίκρυνση εικόνας STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηροτροχιάς STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Κατασκευάστε δρόμους STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Κατασκευή λιμένων STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Κατασκευάστε αεροδρόμια STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Ανοίξτε την μπάρα εργαλείων μορφοποίησης εδάφους για ανύψωση/βύθιση γης, δενδροφύτευση, κλπ. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Εμφάνιση παραθύρου ήχου/μουσικής STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Εμφάνιση τελευταίου μηνύματος/αναφοράς νέων, επιλογές μηνυμάτων STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Πληροφορίες περιοχής, κονσόλα, αποσφαλμάτωση δέσμης ενεργειών, φωτογραφίες οθόνης, περί του OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Εναλλάγη μπαρών εργασίας # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Αποθήκευση σεναρίου, φόρτωση, εγκατάλειψη προγράμματος επεξεργασίας σεναρίων, έξοδος STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Πρόγραμμα Επεξεργασίας Σεναρίου STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Μετακίνηση ημ/νίας εκκίνησης 1 χρόνο πίσω STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Μετακινήστε την ημερομηνία εκκίνησης 1 χρόνο μπροστά STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Κάντε κλικ εδώ για να εισάγετε την χρονιά έναρξης STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Εμφάνιση χάρτη, καταλόγου πόλεων STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Δημιουργία τοπίου STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Δημιουργία πόλης STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Δημιουργία βιομηχανίας STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Κατασκευή δρόμου STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Φύτευση Δέντρων. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Τοποθέτηση πινακίδας STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Τοποθέτηση αντικειμένου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Αποθήκευση σεναρίου STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Φόρτωση σεναρίου STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Αποθηκευση χάρτη υψομετρίας STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Φόρτωση χάρτη υψομετρίας STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Έξοδος από το πρόγραμμα επεξεργασίας σεναρίων STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Έξοδος ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Επιλογές παιχνιδιού STR_SETTINGS_MENU_CONFIG_SETTINGS :Προχωρημένες ρυθμίσεις STR_SETTINGS_MENU_SCRIPT_SETTINGS :Ρυθμίσεις ΑΙ και Δέσμης Ενεργειών STR_SETTINGS_MENU_NEWGRF_SETTINGS :Ρυθμίσεις NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Επιλογές διαφάνειας STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Εμφάνιση ονομάτων πόλεων STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Εμφάνιση ονομάτων σταθμών STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Εμφάνιση ονομάτων σημείων καθοδήγησης STR_SETTINGS_MENU_SIGNS_DISPLAYED :Εμφάνιση πινακίδων STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Εμφανίζονται τα σήματα και τα ονόματα των ανταγωνιστών STR_SETTINGS_MENU_FULL_ANIMATION :Πλήρης κίνηση STR_SETTINGS_MENU_FULL_DETAIL :Πλήρης λεπτομέρεια STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Διαφανές κτίρια STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Διάφανες ταμπέλες ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Αποθήκευση παιχνιδιού STR_FILE_MENU_LOAD_GAME :Φόρτωση παιχνιδιού STR_FILE_MENU_QUIT_GAME :Έξοδος από το παιχνίδι STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Έξοδος ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Χάρτης του κόσμου STR_MAP_MENU_EXTRA_VIEW_PORT :Πρόσθετη εμφάνιση STR_MAP_MENU_SIGN_LIST :Λίστα πινακίδων ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Καταλογος πόλεων STR_TOWN_MENU_FOUND_TOWN :Ιδρύση πόλης ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Χρηματοδοτήσεις STR_SUBSIDIES_MENU_GOAL :Τρέχοντες στόχοι ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Γράφημα λειτουργικού κέρδους STR_GRAPH_MENU_INCOME_GRAPH :Γράφημα εισοδήματος STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Γράφημα παραδοθέντος φορτίου STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Γράφημα ιστορικού απόδοσης STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Γράφημα εταιρικής αξίας STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Ποσοστά πληρωμής φορτίου ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Πίνακας κατάταξης επιχειρήσεων STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Λεπτομερής εκτίμηση απόδοσης STR_GRAPH_MENU_HIGHSCORE :Πίνακας βαθμολογίας ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Κατάλογος Βιομηχανιών STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Αλυσίδες βιομηχανιών STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Χρηματοδότηση νέας βιομηχανίας ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Κατασκευή σιδηρόδρομου STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Κατασκευή ηλεκτροδοτουμένου σιδηρόδρομου STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Κατασκευή μονοτρόχιου STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Κατασκευή Maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Κατασκευή δρόμου STR_ROAD_MENU_TRAM_CONSTRUCTION :Κατασκευή τροχιόδρομου ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Κατασκευή καναλιού νερού ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Κατασκευή αεροδρομίου ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Μορφοποίηση εδάφους STR_LANDSCAPING_MENU_PLANT_TREES :Φύτευση δέντρων STR_LANDSCAPING_MENU_PLACE_SIGN :Τοποθέτηση πινακίδας ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Ήχος/Μουσική ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Τελευταίο μήνυμα/αναφορά νέων STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Ιστορικό μηνυμάτων ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Πληροφορίες περιοχής εδάφους STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Εναλλαγή κονσόλας STR_ABOUT_MENU_AI_DEBUG :Αποσφαλμάτωση AI και δέσμης ενεργειών παιχνιδιού STR_ABOUT_MENU_SCREENSHOT :Στιγμιότυπο οθόνης STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Στιγμιότυπο οθόνης μέγιστης μεγέθυνσης STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Στιγμιότυπο οθόνης τυπικής μεγέθυνσης STR_ABOUT_MENU_GIANT_SCREENSHOT :Στιγμιότυπο οθόνης για ολό τον χάρτη STR_ABOUT_MENU_ABOUT_OPENTTD :Σχετικά με το 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Ευθυγραμμιστής στοιχεών STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Εναλλαγή πλαισίου οριοθέτησης STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Εναλλαγή χρωματισμού λερωμένων τετραγωνίδιων ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1ος STR_ORDINAL_NUMBER_1ST.date :1η STR_ORDINAL_NUMBER_2ND :2ος STR_ORDINAL_NUMBER_2ND.date :2η STR_ORDINAL_NUMBER_3RD :3ος STR_ORDINAL_NUMBER_3RD.date :3η STR_ORDINAL_NUMBER_4TH :4ος STR_ORDINAL_NUMBER_4TH.date :4η STR_ORDINAL_NUMBER_5TH :5ος STR_ORDINAL_NUMBER_5TH.date :5η STR_ORDINAL_NUMBER_6TH :6ος STR_ORDINAL_NUMBER_6TH.date :6η STR_ORDINAL_NUMBER_7TH :7ος STR_ORDINAL_NUMBER_7TH.date :7η STR_ORDINAL_NUMBER_8TH :8ος STR_ORDINAL_NUMBER_8TH.date :8η STR_ORDINAL_NUMBER_9TH :9ος STR_ORDINAL_NUMBER_9TH.date :9η STR_ORDINAL_NUMBER_10TH :10ος STR_ORDINAL_NUMBER_10TH.date :10η STR_ORDINAL_NUMBER_11TH :11ος STR_ORDINAL_NUMBER_11TH.date :11η STR_ORDINAL_NUMBER_12TH :12ος STR_ORDINAL_NUMBER_12TH.date :12η STR_ORDINAL_NUMBER_13TH :13ος STR_ORDINAL_NUMBER_13TH.date :13η STR_ORDINAL_NUMBER_14TH :14ος STR_ORDINAL_NUMBER_14TH.date :14η STR_ORDINAL_NUMBER_15TH :15ος STR_ORDINAL_NUMBER_15TH.date :15η STR_ORDINAL_NUMBER_16TH :16ος STR_ORDINAL_NUMBER_16TH.date :16η STR_ORDINAL_NUMBER_17TH :17ος STR_ORDINAL_NUMBER_17TH.date :17η STR_ORDINAL_NUMBER_18TH :18ος STR_ORDINAL_NUMBER_18TH.date :18η STR_ORDINAL_NUMBER_19TH :19ος STR_ORDINAL_NUMBER_19TH.date :19η STR_ORDINAL_NUMBER_20TH :20ος STR_ORDINAL_NUMBER_20TH.date :20η STR_ORDINAL_NUMBER_21ST :21ος STR_ORDINAL_NUMBER_21ST.date :21η STR_ORDINAL_NUMBER_22ND :22ος STR_ORDINAL_NUMBER_22ND.date :22η STR_ORDINAL_NUMBER_23RD :23ος STR_ORDINAL_NUMBER_23RD.date :23η STR_ORDINAL_NUMBER_24TH :24ος STR_ORDINAL_NUMBER_24TH.date :24η STR_ORDINAL_NUMBER_25TH :25ος STR_ORDINAL_NUMBER_25TH.date :25η STR_ORDINAL_NUMBER_26TH :26ος STR_ORDINAL_NUMBER_26TH.date :26η STR_ORDINAL_NUMBER_27TH :27ος STR_ORDINAL_NUMBER_27TH.date :27η STR_ORDINAL_NUMBER_28TH :28ος STR_ORDINAL_NUMBER_28TH.date :28η STR_ORDINAL_NUMBER_29TH :29ος STR_ORDINAL_NUMBER_29TH.date :29η STR_ORDINAL_NUMBER_30TH :30ος STR_ORDINAL_NUMBER_30TH.date :30η STR_ORDINAL_NUMBER_31ST :31ος STR_ORDINAL_NUMBER_31ST.date :31η ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Ιαν STR_MONTH_ABBREV_FEB :Φεβ STR_MONTH_ABBREV_MAR :Μαρ STR_MONTH_ABBREV_APR :Απρ STR_MONTH_ABBREV_MAY :Μάι STR_MONTH_ABBREV_JUN :Ιούν STR_MONTH_ABBREV_JUL :Ιούλ STR_MONTH_ABBREV_AUG :Αύγ STR_MONTH_ABBREV_SEP :Σεπ STR_MONTH_ABBREV_OCT :Οκτ STR_MONTH_ABBREV_NOV :Νοέ STR_MONTH_ABBREV_DEC :Δεκ STR_MONTH_JAN :Ιανουάριος STR_MONTH_FEB :Φεβρουάριος STR_MONTH_MAR :Μάρτιος STR_MONTH_APR :Απρίλιος STR_MONTH_MAY :Μάιος STR_MONTH_JUN :Ιούνιος STR_MONTH_JUL :Ιούλιος STR_MONTH_AUG :Αύγουστος STR_MONTH_SEP :Σεπτέμβριος STR_MONTH_OCT :Οκτώβριος STR_MONTH_NOV :Νοέμβριος STR_MONTH_DEC :Δεκέμβριος ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Υπόμνημα STR_GRAPH_KEY_TOOLTIP :{BLACK}Εμφάνιση υπομνήματος στα γραφήματα STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Γράφημα Ενεργών Εσόδων STR_GRAPH_INCOME_CAPTION :{WHITE}Γράφημα Εισοδήματος STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Μονάδες φορτίου που παραδόθηκαν STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Ποσοστά απόδοσης εταιρίας (μέγιστη τιμή=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Αξία εταιρίας STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Ποσοστά Πληρωμής Φορτίων STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Μέρες σε μεταφορά STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Πληρωμή για την παράδοση 10 μονάδων (ή 10.000 λίτρων) φορτίου σε απόσταση 20 τετραγώνων STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Ενεργοποιήση όλων STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Απενεργοποιήση όλων STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Εμφάνιση όλων των εμπορευμάτων στο γράφημα πληρωμής εμπορευμάτων STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Εμφάνιση κανενός εμπορευμάτος στο γράφημα πληρωμής εμπορευμάτων STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Εναλλαγή γραφήματος τύπου φορτίου STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Εμφάνιση λεπτομεριών αποδόσεων # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Γραφήματα κλειδιού εταιρίας STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Κάντε κλικ εδώ για εναλλαγή εμφάνισης της εταιρίας στο γράφημα # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Πίνακας Πρωταθλήματος Εταιριών STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Μηχανικός STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Διαχειριστής Κυκλοφορίας STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Συντονιστής Μεταφορών STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Επόπτης Διαδρομών STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Διευθυντής STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Ανώτερος Υπάλληλος STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Διαχειριστής STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Πρόεδρος STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Μεγιστάνας # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Λεπτομερείς επιδόσεις STR_PERFORMANCE_DETAIL_KEY :{BLACK}Λεπτομέριες STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Εμφάνιση λεπτομεριών για αυτή την εταιρία ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Οχήματα: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Σταθμοί: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Ελάχ. κέρδος: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ελάχ. εισόδημα: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Μεγ. εισόδημα: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Παραδόθηκαν: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Εμπορεύματα: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Χρήματα: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Δάνειο: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Σύνολο: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Απαρίθμηση των οχημάτων που απέφεραν κέρδος πέρσι. Περιλαμβανομένων των επιγείων οχημάτων, τρένων, πλοίων και αεροσκαφών. STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Αριθμός των πρόσφατα επισκευασμένων σταθμών. Σταθμοί τραίνων, στάσεις λεωφορείων, αεροδρόμια, κ.ο.κ. προσμετρώνται ξεχωριστά, ακόμα κι αν ανήκουν στον ίδιο σταθμό. STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Το κέρδος του οχήματος με το μικρότερο εισόδημα (μόνο οχήματα παλιότερα των 2 ετών θα λαμβάνονται υπόψην) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έγιναν σε ένα τρίμηνο με το μικρότερο κέρδος των τελευταίων 12 τριμήνων STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έγιναν σε ένα τρίμηνο με το μεγαλύτερο κέρδος των τελευταίων 12 τριμήνων STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Μονάδες εμπορεύματος που παραδόθηκαν στα τελευταία τέσσερα τρίμηνα STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Αριθμός των τύπων εμπορεύματων που παραδόθηκαν το τελευταίο τετράμηνο STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Ποσό χρημάτων που διαθέτει η εταιρία στην τράπεζα STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έχει πάρει η εταιρία ως δάνειο STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Συνολικοί πόντοι από τους δυνατούς πόντους # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Τζουκμπόξ Jazz STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Όλα STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Παλιό Στυλ STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Νέο Στυλ STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Προσαρμοσμένο 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Προσαρμοσμένο 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Ένταση Μουσικής STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Ένταση Εφέ STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}ΕΛΑΧ STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}ΜΕΓ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}» STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Κομμάτι STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Τίτλος STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Τυχαία αναπαραγωγή STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Πρόγραμμα STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Πλοήγηση στο προηγούμενο κομμάτι της συλλογής STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Πλοήγηση στο επόμενο κομμάτι της συλλογής STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Διακοπή αναπαραγωγής STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Έναρξη αναπαραγωγής STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Μετακινήστε τις γραμμές κύλισης για ρύθμιση έντασης STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Επιλογή προγράμματος «όλα τα κομμάτια» STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Επιλογή προγράμματος «παλιό στυλ» STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Επιλογή προγράμματος «νέο στυλ» STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Επιλογή προγράμματος «στυλ μουσικής Ezy Street» STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Επιλογή προγράμματος «Προσαρμοσμένο 1» STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Επιλογή προγράμματος «Προσαρμοσμένο 2» STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Εναλλαγή τυχαίας αναπαραγωγής on/off στο πρόγραμμα STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Εμφάνιση παραθύρου επιλογής μουσικού κομματιού STR_ERROR_NO_SONGS :{WHITE}Επιλέχτηκε σετ μουσικής χωρίς τραγούδια. Κανένα τραγούδι δεν θα παιχτεί # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Επιλογή Μουσικού Προγράμματος STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}» STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Λίστα σιδηροτροχιών STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Πρόγραμμα - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Καθαρισμός STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Καθαρισμός τρέχοντος προγράμματος (μόνο Προσαρμοσμένο 1 ή Προσαρμοσμένο 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Κάντε κλικ στο μουσικό κομμάτι για προσθήκη στο τρέχον πρόγραμμα (Προσαρμοσμένο1 ή Προσαρμοσμένο2 μόνο) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Κάντε κλικ στο τραγούδι για να το αφαιρέσετε από το πρόγραμμα (Προσαρμοσμένο 1 ή 2 μόνο) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Οι καλύτερες εταιρίες που έφτασαν το {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Πίνακας Πρωταθλήματος Εταιριών σε {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}, STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Επαγγελματίας STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Πρωτοπόρος STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Βιομήχανος STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Κεφαλαιούχος STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Μεγιστάνας STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Τυχοδιώκτης STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Μεγιστάνας του Αιώνα STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}«{STRING}» ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} έφτασε στο επίπεδο «{STRING}» STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{G Ο Η ""} {PRESIDENT_NAME} της εταιρίας {COMPANY} έφτασε στο επίπεδο «{STRING}»! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Χάρτης - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Περιγράμματα STR_SMALLMAP_TYPE_VEHICLES :Οχήματα STR_SMALLMAP_TYPE_INDUSTRIES :Βιομηχανίες STR_SMALLMAP_TYPE_ROUTES :Διαδρομές STR_SMALLMAP_TYPE_VEGETATION :Βλάστηση STR_SMALLMAP_TYPE_OWNERS :Ιδιοκτήτες STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Εμφανίστε περιγράμματα εδάφους στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Εμφανίστε οχήματα στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Εμφανίστε βιομηχανίες στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Εμφανίστε μεταφορικούς οδούς στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Εμφανίστε βλάστηση στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Εμφανίστε ιδιοκτήτες γης στον χάρτη STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Επιλέξτε μια βιομηχανία για εναλλαγή εμφάνισής της. Το Ctrl+Κλικ απενεργοποιεί όλους τους τύπους εκτός του επιλεγμένου. Πατήστε Ctrl+Κλικ ξανά για την επαναφορά όλων των τύπων STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Επιλέξτε μια εταιρεία για εναλλαγή εμφάνισης της περιουσίας της. Το Ctrl+Κλικ απενεργοποιεί όλες τις εταιρείες εκτός της επιλεγμένης. Πατήστε Ctrl+Κλικ ξανά για την επαναφορά όλων των εταιρειών STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Δρόμοι STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Σιδηρόδρομοι STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Σταθμοί/Αεροδρόμια/Λιμάνια STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Κτίρια/Βιομηχανίες STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Οχήματα STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Τρένα STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Οχήματα STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Πλοία STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Αεροσκάφη STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Διαδρομές Μεταφορών STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Δάσος STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Σιδηροδρομικός Σταθμός STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Περιοχή Φόρτωσης Φορτηγών STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Στάση Λεωφορείου STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Αεροδρόμιο/Ελικοδρόμιο STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Λιμάνι STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Τραχύ Έδαφος STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Γρασίδι STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Γυμνό Έδαφος STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Χωράφια STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Δέντρα STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Βράχοι STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Νερό STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Χωρίς Ιδιοκτήτη STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Πόλεις STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Βιομηχανίες STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Έρημος STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Χιόνι STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Εναλλαγή ονομάτων πόλεων στον χάρτη STR_SMALLMAP_CENTER :{BLACK}Κεντράρισμα του μικρού χάρτη στη τρέχουσα θέση STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Απενεργοποίηση όλων STR_SMALLMAP_ENABLE_ALL :{BLACK}Ενεργοποίηση όλων STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Εμφάνιση ύψους STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Εμφάνιση καμίας βιομηχανίας στον χάρτη STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Εμφάνιση όλων των βιομηχανιών στον χάρτη STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Εναλλάγη εμφάνισης υψομετρικού χάρτη STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Απόκρυψη όλων των ιδιοκτησιών των εταιριών στον χάρτη STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Εμφάνιση όλων των ιδιοκτησιών των εταιριών στον χάρτη # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Εμφάνιση τελευταίου μηνύματος ή αναφοράς νέων STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * ΠΑΥΣΗ * * STR_STATUSBAR_AUTOSAVE :{RED}ΑΥΤΟΜΑΤΗ ΑΠΟΘΗΚΕΥΣΗ STR_STATUSBAR_SAVING_GAME :{RED}* * ΑΠΟΘΗΚΕΥΣΗ ΠΑΙΧΝΙΔΙΟΥ * * # News message history STR_MESSAGE_HISTORY :{WHITE}Ιστορικό Μηνυμάτων STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Λίστα των πρόσφατων μηνυμάτων ειδήσεων STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Μήνυμα STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο τρένο φτάνει στον στάθμο {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο λεωφορείο φτάνει στη στάση {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο φορτηγό φτάνει στον σταθμό {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο επιβατικό τραμ φτάνει στη στάση {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν. . .{}Το πρώτο εμπορευματικό τραμ φτάνει στον σταθμό {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο πλοίο φτάνει στο λιμάνι {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Οι πολίτες εορτάζουν . . .{}Το πρώτο αεροσκάφος φτάνει στο {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Σύγκρουση Τρένων!{}{COMMA} σκοτώθηκαν στη σύγκρουση STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Σύγκρουση Οχήματος!{}Ο οδηγός σκοτώθησε σε σύγκρουση με τρένο STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Σύγκρουση Οχήματος!{}{COMMA} σκοτώθηκαν σε σύγκρουση με τρένο STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Συντριβή Αεροπλάνου!{}{COMMA} σκοτώθηκαν στο αεροδρόμιο {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Συντριβή Αεροπλάνου!{}Τελείωσαν τα καύσιμα του, {COMMA} νεκροί STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Ατύχημα με ζέπελιν στον σταθμό {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Όχημα καταστράφηκε σε σύγκρουση με «ΟΥΦΟ»! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Έκρηξη διυλιστηρίου κοντά στο {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Εργοστάσιο καταστράφηκε υπό ύποπτες συνθήκες κοντά στο {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}«ΟΥΦΟ» προσγειώθηκε κοντά στο {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Κατάρρευση ανθρακωρυχείου αφήνει τα σημάδια της καταστροφής κοντά στη πόλη {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Πλημμύρα!{}Τουλάχιστον {COMMA} αγνοούμενοι, το πιθανότερο νεκροί μετά από μεγάλη πλημμύρα! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Εταιρία μεταφορών σε πρόβλημα! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Η εταιρία {STRING} θα πωληθεί ή θα κυρήξει πτώχευση αν δεν αυξηθεί σύντομα η απόδοσή της! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Συγχώνευση εταιριών μεταφοράς! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}Η {STRING} πουλήθηκε στην {STRING} για το ποσό των {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Χρεωκοπία! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Η {STRING} κλείστηκε από τους πιστωτές της και όλα τα περιουσιακά στοιχεία της εκποιήθηκαν! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Ίδρυση νέας εταιρίας μεταφορών! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Η {STRING} ξεκινά τις κατασκευές κοντά στην πόλη {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Η {STRING} εξαγοράστηκε από την {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}({G 0 Διευθυντής Διευθύντρια ""}) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Η {STRING} χορήγεισε την κατασκεύη της νέας πόλης {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Νέ{G ος α ο} {STRING} υπό κατασκευή κοντά στην πόλη {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Νέο {STRING} φυτεύεται κοντά στην πόλη {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{G 0:2 Ο Η Το} {STRING} ανακοίνωσε άμεσο κλείσιμο! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Προβλήματα στην προμήθεια υλικών αναγκάζουν {G τον τη το} {STRING} να κλείσει αμέσως! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Η έλλειψη δέντρων αναγκάζει την βιομηχανία {STRING} να κλείσει αμέσως! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Οικονομική και Νομισματική Ένωση!{}{}Το Ευρώ είναι πλέον το μοναδικό νόμισμα για τις καθημερινές συναλλαγές στη χώρα σας! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Παγκόσμια Ύφεση!{}{}Οι οικονομολόγοι φοβούνται τα χειρότερα καθώς η οικονομία πιάνει πάτο! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Τέρμα η Ύφεση!{}{}Κέρδη στο εμπόριο δίνουν σιγουριά στις βιομηχανίες καθώς η οικονομία δυναμώνει! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{G Ο Η Το} {INDUSTRY} ανεβάζει την παραγωγή! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Νέα φλέβα άνθρακα βρέθηκε στα {INDUSTRY}!{}Η παραγωγή αναμένεται να διπλασιαστεί! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Νέα αποθέματα πετρελαίου βρέθηκαν στις {INDUSTRY}!{}Η παραγωγή αναμένεται να διπλασιαστεί! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Βελτιωμένες μέθοδοι καλλιέργειας στην {INDUSTRY} αναμένονται να διπλασιάσουν την παραγωγή! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} αυξήθηκε κατά {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Η παραγωγή στ{G o η ο} {INDUSTRY} μειώθηκε κατά 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Μόλυνση από έντομα προκαλεί καταστροφή στη {INDUSTRY}!{}Η παραγωγή μειώθηκε κατά 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK} Η παραγωγή {STRING.geniki} στ{G o η ο} {INDUSTRY} μειώθηκε κατά {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} περιμένει στο αμαξόστασιο STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Το {VEHICLE} περιμένει στο αμαξόστασιο STR_NEWS_SHIP_IS_WAITING :{WHITE}Το {VEHICLE} περιμένει στο ναυπήγειο STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Το {VEHICLE} περιμένει στο υπόστεγο αεροσκαφών # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Το {VEHICLE} έχει πολύ λίγες εντολές στο πρόγραμμα STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Το {VEHICLE} έχει μη έγκυρη εντολή STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Το {VEHICLE} έχει διπλή εντολή STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Το {VEHICLE} έχει μη έγκυρο σταθμό στις εντολές του # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Το {VEHICLE} αρχίζει να παλιώνει STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Το {VEHICLE} ξεπερνά το όριο ηλικίας STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}Το {VEHICLE} πάλιωσε πολύ και χρειάζεται επειγόντως αλλαγή STR_NEWS_TRAIN_IS_STUCK :{WHITE}Το {VEHICLE} δεν μπορεί να βρει δρόμο να συνεχίσει STR_NEWS_VEHICLE_IS_LOST :{WHITE}{G Ο Η Το} {VEHICLE} χάθηκε STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Το κέρδος του {VEHICLE} πέρυσι ήταν {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{G Ο Η Το} {VEHICLE} δεν μπορεί να μεταβεί στον επόμενο προορισμό λόγω υπερβολικής απόστασης STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Το {VEHICLE} σταμάτησε γιατί μια εντολή μετατροπής απέτυχε STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Αποτυχία αυτόματης ανανέωσης για το {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Ένα νέο {STRING} είναι πλεόν διαθέσιμο! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ένα νέο {STRING} είναι πλέον διαθέσιμο! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}Ο σταθμός {STATION} δεν δέχεται πια {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Ο σταθμός {STATION} δεν δέχεται πια ούτε {STRING} ούτε {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}Ο σταθμός {STATION} τώρα δέχεται {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}Ο σταθμός {STATION} τώρα δέχεται {STRING} και {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Έληξε η προσφορά επιδότησης:{}{}{STRING} από {G τον τη το} {STRING} πρός {G τον τη το} {STRING} δεν θα επιδοτείται πλέον. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Η επιδότηση αποσύρθηκε:{}{}Η υπηρεσια για {STRING.subs} απο το {STRING} προς το {STRING} δεν επιδοτείται πλέον. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Προσφορά χρηματοδότησης υπηρεσίας:{}{}Η πρώτη υπηρεσία για {STRING.subs} από {G τον τη το} {STRING} προς {G τον τη το} {STRING} επιχορηγείται για ένα έτος από την τοπική αρχή! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Η χρηματοδότηση της υπηρεσίας απονεμήθη στην εταιρία {STRING}!{}{}Η υπηρεσία για {STRING.subs} από τον σταθμό {STRING} προς το σταθμό {STRING} θα χρεώνεται 50% παραπάνω για ένα έτος! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσίας απονεμήθη στην εταιρία {STRING}!{}{}Η υπηρεσία για {STRING.subs} από τον σταθμό {STRING} προς το σταθμό {STRING} θα χρεώνεται διπλά για το επόμενο έτος! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσίας απονεμήθη στην εταιρία {STRING}!{}{}Η υπηρεσία για {STRING.subs} από το σταθμό {STRING} προς το σταθμό {STRING} θα χρεώνεται τριπλά για το επόμενο έτος! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Η επιχορήγηση υπηρεσίας απονεμήθη στην εταιρία {STRING}!{}{}Η υπηρεσία για {STRING.subs} από τον σταθμό {STRING} προς τον σταθμό {STRING} θα χρεώνεται τετραπλά για το επόμενο έτος! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Χαώδης κίνηση στην πόλη {TOWN}!{}{}Χρηματοδοτήθηκε πρόγραμμα ανακατασκευής των δρόμων από την εταιρία {STRING} και προκαλεί 6 μήνες μιζέριας στους οδηγούς! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Μονοπώλιο μεταφορών! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Οι τοπικές αρχές της πόλης {TOWN} υπογράφουν συμβόλαιο με την εταιρεία {STRING} για αποκλειστικά δικαιώματα μεταφορών ενός έτους! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Εμφάνιση {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Αντιγραφή στην εμφάνιση STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Αντιγραφή της τοποθεσίας της κύριας προβολής σε αυτό το παράθυρο εμφάνισης STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Επικόλληση από εμφάνιση STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Επικόλληση της τοποθεσίας αυτού του παραθύρου εμφάνισης στην κύρια προβολή # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Επιλογές Παιχνιδιού STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Νομισματικές μονάδες STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Επιλογή νομισματικών μονάδων ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Στερλίνα Ηνωμένου Βασιλείου (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Δολλάριο Η.Π.Α. (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Ευρώ (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Ιαπωνικό Γιεν (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Αυστριακό Σελίνι (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Βελγικό Φράγκο (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Ελβετικό Φράγκο (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Τσέχικη Κορώνα (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Γερμανικό Μάρκο (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Δανέζικη Κορώνα (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Ισπανική Πεσέτα (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Φινλανδικό Μάρκο (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Γαλλικό Φράγκο (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Ελληνική Δραχμή (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ουγγρικό Φλουρί (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Ισλανδική Κορώνα (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Ιταλική Λίρα (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Ολλανδικό Φιορίνι (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Νορβηγική Κορώνα (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Πολωνικό Ζλότυ (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Ρουμάνικο Λευ (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Ρωσικό Ρούβλι (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Σλοβένικο Τολάρ (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Σουηδική Κορώνα (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Τούρκικη Λίρα (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Σλοβάκικη Κορώνα (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Βραζιλιάνικο Ρεάλ (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Εσθονική Κορώνα (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Λιθουανική Λίτα (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Νοτιοκορεάτικο Γουόν (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Νοτιοαφρικάνικο Ραντ (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Άλλο... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Μονάδες μέτρησης STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Επιλογή μονάδων μέτρησης ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Αγγλοσαξονικές STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Μετρικές STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Οχήματα δρόμου STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Επιλογή πλευράς δρόμου όπου τα οχήματα οδηγούν STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Οδηγούν από αριστερά STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Οδηγούν από δεξιά STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Ονόματα πόλεων STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Επιλογή στυλ ονομάτων πόλεων ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Αγγλικά (Αυθεντικά) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Γαλλικά STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Γερμανικά STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Αγγλικά (Πρόσθετα) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Λατινοαμερικάνικα STR_GAME_OPTIONS_TOWN_NAME_SILLY :Αστεία STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Σουηδικά STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Ολλανδικά STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Φινλανδικά STR_GAME_OPTIONS_TOWN_NAME_POLISH :Πολωνικά STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Σλοβάκικα STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Νορβηγικά STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ουγγρικά STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Αυστριακά STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Ρουμάνικα STR_GAME_OPTIONS_TOWN_NAME_CZECH :Τσέχικα STR_GAME_OPTIONS_TOWN_NAME_SWISS :Ελβετικά STR_GAME_OPTIONS_TOWN_NAME_DANISH :Δανέζικα STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Τούρκικα STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Ιταλικά STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Καταλανικά ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Αυτόματη αποθήκευση STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Επιλογή διάκενου ανάμεσα στις αυτόματες αποθηκεύσεις STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ανενεργό STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Κάθε μήνα STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Κάθε 3 μήνες STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Κάθε 6 μήνες STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Κάθε 12 μήνες STR_GAME_OPTIONS_LANGUAGE :{BLACK}Γλώσσα STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Επιλογή της γλώσσας του παιχνιδιού STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Πλήρης οθόνη STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Τσεκάρεται αυτό το κουτάκι ωστε να παίξετε το OpenTTD σε όλη την οθόνη STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ανάλυση οθόνης STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Διαλέξτε την ανάλυση της οθόνης που θέλετε STR_GAME_OPTIONS_RESOLUTION_OTHER :άλλη STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Τύπος αρχείου στιγμιότυπου οθόνης STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Επιλογή του τύπου αρχείου για το στιγμιότυπο οθόνης STR_GAME_OPTIONS_BASE_GRF :{BLACK}Βασικό σετ γραφικών STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Επιλογή του βασικού σετ γραφικών που θα χρησιμοποιηθεί STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} αρχεί{P ο α} που λείπ{P ει ουν} ή είναι κατεστραμμέν{P ο α} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ γραφικών STR_GAME_OPTIONS_BASE_SFX :{BLACK}Σετ βασικών ήχων STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Επιλέξτε τους βασικούς ήχους που θα χρησιμοποιήσετε STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με τους βασικούς ήχους STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Βασικό σετ μουσικής STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Επιλέξτε το βασικό σετ μουσικής για χρήση STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} κατεστραμμέν{P ο α} αρχεί{P ο α} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ μουσικής STR_ERROR_FULLSCREEN_FAILED :{WHITE}Θέση του παιχνιδιού σε λειτουργία πλήρης οθόνης απέτυχε # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Προσαρμοσμένο νόμισμα STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Ισοτιμία: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Μείωση του ποσού της ισοτιμίας σας για μία λίρα (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Αυξήστε το ποσό της ισοτιμίας σας για μία Λίρα (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Ρυθμίστε τη συναλλαγματική ισοτιμία του νομίσματος για μια λίρα (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Διαχωριστικό: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Ορίστε το διαχωριστικό για το νόμισμά σας STR_CURRENCY_PREFIX :{LTBLUE}Πρόθεμα: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Ορίστε το πρόθεμα για το νόμισμά σας STR_CURRENCY_SUFFIX :{LTBLUE}Επίθεμα: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Ορίστε το επίθεμα για το νόμισμά σας STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Αλλαγή σε Ευρώ: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Αλλαγή σε Ευρώ: {ORANGE}ποτέ STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Θέστε το χρόνο που γίνεται η μετάβαση σε Ευρώ STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Να γίνει η μετάβαση σε Ευρώ νωρίτερα STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Να γίνει η μετάβαση σε Ευρώ αργότερα STR_CURRENCY_PREVIEW :{LTBLUE}Προεπισκόπιση: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 λίρες (£) στο νόμισμά σας STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Αλλαγή παραμέτρων προσαρμοσμένου νομίσματος STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Μέγιστος αρ. ανταγωνιστών: {ORANGE}{COMMA} STR_NONE :Κανένα STR_FUNDING_ONLY :Χρηματοδότηση μονο STR_MINIMAL :Ελάχιστο STR_NUM_VERY_LOW :Πολύ χαμηλό STR_NUM_LOW :Χαμηλό STR_NUM_NORMAL :Κανονικό STR_NUM_HIGH :Υψηλό STR_NUM_CUSTOM :Προσαρμοσμένος STR_NUM_CUSTOM_NUMBER :Προσαρμόσμενο ({NUM}) STR_VARIETY_NONE :Καθόλου STR_VARIETY_VERY_LOW :Πολύ Χαμηλό STR_VARIETY_LOW :Χαμηλό STR_VARIETY_MEDIUM :Μέτριο STR_VARIETY_HIGH :Υψηλό STR_VARIETY_VERY_HIGH :Πολύ Υψηλό STR_AI_SPEED_VERY_SLOW :Πολύ αργό STR_AI_SPEED_SLOW :Αργό STR_AI_SPEED_MEDIUM :Μέτριο STR_AI_SPEED_FAST :Γρήγορο STR_AI_SPEED_VERY_FAST :Πολύ Γρήγορο STR_SEA_LEVEL_VERY_LOW :Πολύ Χαμηλό STR_SEA_LEVEL_LOW :Χαμηλό STR_SEA_LEVEL_MEDIUM :Μέτριο STR_SEA_LEVEL_HIGH :Υψηλό STR_SEA_LEVEL_CUSTOM :Προσαρμόσμενο STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Προσαρμόσμενο ({NUM}%) STR_RIVERS_NONE :Κανένα STR_RIVERS_FEW :Λίγα STR_RIVERS_MODERATE :Μέτρια STR_RIVERS_LOT :Πολλά STR_DISASTER_NONE :Κανένα STR_DISASTER_REDUCED :Μειωμένο STR_DISASTER_NORMAL :Κανονικό STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Πολύ Επίπεδο STR_TERRAIN_TYPE_FLAT :Επίπεδο STR_TERRAIN_TYPE_HILLY :Λοφώδες STR_TERRAIN_TYPE_MOUNTAINOUS :Βουνώδες STR_CITY_APPROVAL_PERMISSIVE :Ανεκτική STR_CITY_APPROVAL_TOLERANT :Υπομονετική STR_CITY_APPROVAL_HOSTILE :Εχθρική STR_WARNING_NO_SUITABLE_AI :{WHITE}Δεν είναι διαθέσιμο κανένα κατάλληλο Al...{}Μπορείτε να κατεβάσετε AIs μέσω του συστήματος «Διαδικτυακού Περιεχομένου» # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Προηγμένες Ρυθμίσεις STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Φιλτράρισμα: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Επέκταση όλων STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Σύμπτυξη όλων STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(δεν υπάρχει διαθέσιμη επεξήγηση) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Προκαθορισμένη τιμή: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Τύπος ρύθμισης: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Ρύθμιση πελάτη (δεν αποθηκεύεται στα αποθηκευμένα παιχνίδια, επηρεάζει όλα τα παιχνίδια) STR_CONFIG_SETTING_TYPE_GAME_MENU :Ρύθμιση παιχνιδιού (αποθηκεύεται σε αποθηκευμένα παιχνίδια, επηρεάζει μόνο νέα παιχνίδια) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Ρύθμιση παιχνιδιού (αποθηκεύεται σε αποθηκευμένα παιχνίδια, επηρεάζει μόνο το τρέχον παιχνίδι) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ρύθμιση εταιρείας (αποθηκεύεται σε αποθηκευμένα παιχνίδια, επηρεάζει μόνο νέα παιχνίδια) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ρύθμιση εταιρείας (αποθηκεύεται σε αποθηκευμένα παιχνίδια, επηρεάζει μόνο την τρέχουσα εταιρεία) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Προβολή: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Μειώνει την παρακάτω λίστα προβάλλοντας μόνο αλλαγμένες ρυθμίσεις STR_CONFIG_SETTING_RESTRICT_BASIC :Βασικές ρυθμίσεις STR_CONFIG_SETTING_RESTRICT_ADVANCED :Προχωρημένες ρυθμίσεις STR_CONFIG_SETTING_RESTRICT_ALL :Προχωρημένες ρυθμίσεις / όλες οι ρυθμίσεις STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ρυθμίσεις με διαφορετική τιμή από την προκαθωρισμένη STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ρυθμίσεις με διαφορετική τιμή από τις ρυθμίσεις νέου παιχνιδιού σας STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Μειώνει την παρακάτω λίστα σε συγκεκριμένους τύπους ρυθμίσεων STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Όλες οι ρυθμίσεις STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Ρυθμίσεις πελάτη (δεν διατηρούνται στις αποθηκεύσεις· επηρεάζουν όλα τα παιχνίδια) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ρυθμίσεις παιχνιδιού (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο τα νέα παιχνίδια) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ρυθμίσεις παιχνιδιού (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο το τρέχον παιχνίδι) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Ρυθμίσεις εταιρίας (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο τα νέα παιχνίδια) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Ρυθμίσεις εταιρίας (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο την τωρινή εταιρία) STR_CONFIG_SETTING_OFF :Ανενεργό STR_CONFIG_SETTING_ON :Ενεργή STR_CONFIG_SETTING_DISABLED :Ανένεργη STR_CONFIG_SETTING_COMPANIES_OFF :Ανένεργο STR_CONFIG_SETTING_COMPANIES_OWN :Η εταιρία μου STR_CONFIG_SETTING_COMPANIES_ALL :Όλες οι εταιρίες STR_CONFIG_SETTING_NONE :Καμία STR_CONFIG_SETTING_ORIGINAL :Γνήσιο STR_CONFIG_SETTING_REALISTIC :Ρεαλιστικό STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Αριστερά STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Κέντρο STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Δεξιά STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Μέγιστο αρχικό δάνειο: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Μέγιστο ποσό που μπορεί να δανειστεί μία εταιρία (χωρίς να λαμβάνεται υπόψη ο πληθωρισμός) STR_CONFIG_SETTING_INTEREST_RATE :Επιτόκιο: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Επιτόκιο δανείων· επίσης ελέγχεται ο πληθωρισμός αν είναι ενεργοποιημένος STR_CONFIG_SETTING_RUNNING_COSTS :Λειτουργικά έξοδα: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Θέτει το επίπεδο συντήρησης και τα λειτουργικά έξοδα των οχημάτων και της υποδομής STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ταχύτητα οικοδόμησης: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Περιορίζει το ποσοστό των οικοδομήμσεων από τα ΑΙ STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Καταρρεύσεις οχημάτων: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ελέγχει πόσο συχνά καταρρέουν τα ανεπαρκώς συντηρημένα οχήματα STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Πολλαπλασιαστής επιδότησης: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Θέστε πόσο ξεπληρώνεται για επιδοτημένες συνδέσεις STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Κόστη οικοδόμησης: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Θέτει το επίπεδο κόστους για αγορές και οικοδομές STR_CONFIG_SETTING_RECESSIONS :Υφέσεις: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Όταν είναι ενεργοποιημένο, μπορεί να υπάρξουν υφέσεις κάθε λίγα χρόνια. Κατά τη διάρκεια μιας ύφεσης, όλη η παραγωγή είναι πολύ χαμηλότερη (επιστρέφει στο προηγούμενο επίπεδο όταν τελειώσει η ύφεση) STR_CONFIG_SETTING_TRAIN_REVERSING :Απαγορεύεται η αντιστροφή τρένων στους σταθμούς: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Όταν είναι ενεργοποιημένο, τα τρένα δεν θα κάνουν όπισθεν σε μη-τελικούς σταθμούς, ακόμα και εάν υπάρχει κοντινότερη διαδρομή προς τον επόμενή τους προορισμό όταν κάνουν όπισθεν STR_CONFIG_SETTING_DISASTERS :Καταστροφές: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL :Στάση δημοτικού συμβουλίου προς τον μετασχηματισμό της περιοχής: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES :Επιτρέπεται το κτίσιμο σε πλαγιές και ακτές: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Όταν είναι ενεργοποιημένο, οι σιδηροτροχιές και σταθμοί μπορούν να κτισθούν στις περισσότερες κλίσεις. Όταν είναι απενεργοποιημένο, επιτρέπονται μόνο όπου αντιστοιχούν στην κατεύθυνση της σιδηροτροχιάς και γι' αυτό δεν χρειάζονται θεμέλια STR_CONFIG_SETTING_AUTOSLOPE :Να επιτρέπεται η διαμόρφωση εδάφους κάτω από κτίρια, γραμμές, κλπ. (αυτόματη κλίση): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Επιτρέπεται η διαμόρφωση του εδάφους κάτω από κτίρια και σιδηροτροχιές χωρίς αυτά να αφαιρούνται STR_CONFIG_SETTING_CATCHMENT :Επιτρέπονται πιο ρεαλιστικά ταξινομημένες περιοχές συλλογής : {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Διαφορετικοί σταθμοί και αεροδρόμια έχουν περιοχές κάλυψης διαφορετικού μεγέθους STR_CONFIG_SETTING_EXTRADYNAMITE :Επιτρέπεται η αφαίρεση περισσότερων ιδιοκτησιών των πολέων: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Είναι ευκολότερη η αφαίρεση υποδομών και κτιρίων που κατέχονται από την πόλη STR_CONFIG_SETTING_TRAIN_LENGTH :Μέγιστο μήκος τραίνων: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Ορίστε το μέγιστο μήκος των τραίνων STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} τετραγωνίδι{P 0 ο α} STR_CONFIG_SETTING_SMOKE_AMOUNT :Ποσότητα καπνού/σπινθύρων οχήματος: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Ορίστε τον όγκο του καπνού ή τον αριθμό των σπιθών που παράγονται από τα οχήματα STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης τρένων: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των τραίνων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης οχημάτων δρόμου: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των οχημάτων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Κλίση εδάφους για τα τραίνα: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα τραίνα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Κλίση εδάφους για τα οδικά οχήματα: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα οδικά οχήματα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων STR_CONFIG_SETTING_FORBID_90_DEG :Απαγόρευση στα τρένα και πλοία να κάνουν στροφές 90°: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τραίνο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών. Αυτό έχει επίσης εφαρμογή στην ακτίνα στροφής των πλοίων STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Να επιτρέπεται η συνένωση μη παρακείμενων σταθμών: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Επιτρέπεται η προσθήκη τμημάτων σε σταθμό χωρίς αυτά να αγγίζουν τα ήδη υπάρχοντα τμήματα. Χρειάζεται Ctrl+Κλικ κατά την τοποθέτηση των νέων τμημάτων STR_CONFIG_SETTING_IMPROVEDLOAD :Χρησιμοποίηση βελτιωμένου αλγόριθμου φόρτωσης: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Όταν είναι ενεργό, τα οχήματα που περιμένουν σε ένα σταθμό φορτώνονται με τη σειρά. Η φόρτωση του επόμενου οχήματος αρχίζει μόνο όταν υπάρχει αρκετό φορτίο σε αναμονή ώστε να γεμίσει πλήρως το πρώτο όχημα STR_CONFIG_SETTING_GRADUAL_LOADING :Φόρτωση οχημάτων σταδιακά: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Σταδιακή φόρτωση των οχημάτων χρησιμοποιώντας τους χρόνους φόρτωσής τους, αντί της φόρτωσης όλων δια μιας σε ορισμένο χρόνο που εξαρτάται μόνο από την ποσότητα του φορτίου που φορτώθηκε STR_CONFIG_SETTING_INFLATION :Πληθωρισμός: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ενεργοποίηση του πληθωρισμού στην οικονομία, όπου τα κόστη αυξάνονται ελάχιστα ταχύτερα από τις πληρωμές STR_CONFIG_SETTING_SELECTGOODS :Παράδοση φορτίου σε σταθμό μόνο όταν υπάρχει ζήτηση: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Παραδίδονται σε σταθμό μόνο τα φορτία που ζητήθηκαν από όχημα που φορτώνει. Αυτό αποτρέπει τις χαμηλές αξιολογήσεις για φορτία που δεν εξυπηρετούνται από το σταθμό STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Μέγιστο μήκος γέφυρας: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο γεφυρών STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Μέγιστο μήκος σήραγγας: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Μέγιστο μήκος για κτίσιμο συράγγων STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Χειροκίνητη μέθοδος κατασκευής βιομηχανιών πρώτων υλών: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Μέθοδος χρηματοδότησης πρωτογενούς βιομηχανίας. «Καμία» σημαίνει ότι δεν γίνεται να χρηματοδοτηθεί καμία βιομηχανία, «Αναζήτηση» σημαίνει ότι η χρηματοδότηση είναι εφικτή, αλλά η κατασκευή πραγματοποιείται σε τυχαίο σημείο του χάρτη και είναι πιθανό να αποτύχει, «Όπως οι άλλες βιομηχανίες» σημαίνει πως οι πρωτογενείς βιομηχανίες είναι εφικτό να κατασκευαστούν από εταιρείες όπως οι δευτερογενείς βιομηχανίες σε οποιαδήποτε θέση θέλουν STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Καμία STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Όπως οι άλλες βιομηχανίες STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Αναζήτηση STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Επίπεδη περιοχή γύρω από βιομηχανίες: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Επίπεδος χώρος γύρω από μια βιομηχανία. Αυτό εξασφαλίζει ότι θα παραμείνει διαθέσιμος κενός χώρος γύρω από μια βιομηχανία για να κτισθούν γραμμές, κλπ STR_CONFIG_SETTING_MULTIPINDTOWN :Επιτρέπονται πολλαπλές όμοιες βιομηχανίες ανά πόλη: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Συνήθως, μια πόλη δεν επιθυμεί περισσότερες από μία βιομηχανία κάθε είδους. Αυτή η ρύθμιση επιτρέπει περισσότερες βιομηχανίες του ίδιου είδους στην ίδια πόλη. STR_CONFIG_SETTING_SIGNALSIDE :Εμφάνιση σηματοδοτών: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Επιλέξτε την πλευρά στην οποία τοποθετούνται οι σηματοδότες STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Στα αριστερά STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Στην πλευρά οδήγησης STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Στα δεξιά STR_CONFIG_SETTING_SHOWFINANCES :Εμφάνιση παράθυρου οικονομικών στο τέλος του έτους: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Όταν ενεργοποιείται, το παράθυρο των οικονομικών πληροφοριών εμφανίζεται στο τέλος κάθε χρόνου για ευκολότερο έλεγχο της οικονομικής κατάστασης της εταιρείας STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Οι νέες οδηγίες είναι «χωρίς στάση» από προεπιλογή: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Κανονικά, τα οχήματα σταματούν σε κάθε σταθμό που περνούν. Ενεργοποιώντας αυτήν τη ρύθμιση, δεν θα σταματούν σε κανένα σταθμό που θα βρει στη διαδρομή τους προς τον τελικό προορισμό. Σημείωστε πως αυτή η ρύθμιση ορίζει μόνο μια καθορισμένη τιμή για νέες εντολές. Ειδικές εντολές μπορούν να δοθούν για οποιαδήποτε συμπεριφορά, άσχετα από την προκαθορισμένη STR_CONFIG_SETTING_STOP_LOCATION :Οι εντόλες νέων τρένων διορίζουν ότι σταματάνε εξ ορισμού στο {STRING} της πλατφόρμας STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Το προεπιλεγμένο σημείο όπου θα σταματούν τα τραίνα στην πλατφόρμα . Το «κοντινό άκρο» σημαίνει κοντά στο σημείο εισόδου, «Μέση» σημαίνει στο μέσο της πλατφόρμας και «μακρινό άκρο» σημαίνει στο άλλο άκρο από το σημείο εισόδου. Σημειώστε ότι αυτή η ρύθμιση ορίζει μόνο την προκαθορισμένη τιμή για νέες εντολές. Παρ' όλα αυτά, είναι δυνατό να δοθούν διαφορετικές εντολές για οποιαδήποτε συμπεριφορά. STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :κοντινό άκρο STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :στη μέση STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :μακρινό άκρο STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Ουρά οχημάτων (με κβαντικά εφέ): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Υποχρεώνεται το όχημα να περιμένει μπροστά από τις κατειλημμένες στάσεις μέχρι να ελευθερωθούν STR_CONFIG_SETTING_AUTOSCROLL :Μετακίνηση παραθύρου όταν το ποντίκι είναι στην άκρη: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Όταν είναι ενεργή, η εμφάνιση θα κυλά όταν το ποντίκι είναι κοντά στην άκρη του παραθύρου STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Απενεργοποιημένη STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Κύρια εμφάνιση, μόνο σε πλήρη οθόνη STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Κύρια εμφάνιση STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Κάθε εμφάνιση STR_CONFIG_SETTING_BRIBE :Επιτρέπεται η δωροδοκία της τοπικής αρχής: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Επιτρέπεται στις εταιρείες να προσπαθήσουν να δωροδοκήσουν την τοπική αρχή. Αν η δωροδοκία γίνει αντιληπτή από τον ελεγκτή, η εταιρεία δε θα μπορεί να ενεργήσει στην πόλη για έξι μήνες STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Επιτρέπεται η αγορά αποκλειστικών δικαιωμάτων μεταφοράς: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Αν μια εταιρεία αγοράσει τα αποκλειστικά δικαιώματα μεταφορών σε μια πόλη, οι σταθμοί των αντιπάλων δεν θα λαμβάνουν φορτία (επιβάτες και εμπορεύματα) για έναν ολόκληρο χρόνο STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Επιτρέπεται η κατασκευή κτιρίων: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Επιτρέπεται στις εταιρείες να δίνουν χρήματα στις πόλεις για να χρηματοδοτήσουν νέα σπίτια STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Επιτρέπεται η επιδότηση ανακατασκευής των τοπικών δρόμων: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Επιτρέπεται στις εταιρείες να δίνουν χρήματα στις πόλεις για ανακατασκευή των δρόμων ώστε να σαμποτάρονται οι οδικές υπηρεσίες στην πόλη STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Επιτρέπεται η αποστολή χρημάτων σε άλλες εταιρίες: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Επιτρέπεται η μεταφορά χρημάτων μεταξύ των εταιρειών σε παιχνίδια πολλαπλών παικτών STR_CONFIG_SETTING_FREIGHT_TRAINS :Πολλαπλασιαστής βάρους σε φορτία για εξομοίωση βαρέων τρένων: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Ορίζεται ο αντίκτυπος της μεταφοράς φορτίων στα τραίνα. Υψηλότερη τιμή κάνει τη μεταφορά φορτίων πιο απαιτητική για τραίνα, ιδιαίτερα στους λόφους STR_CONFIG_SETTING_PLANE_SPEED :Παράγοντας ταχύτητας αεροπλάνων: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Ορίζεται η σχετική ταχύτητα των αεροπλάνων συγκριτικά με τους άλλους τύπους οχημάτων, ώστε να μειώνεται το ποσό του εισοδήματος από μεταφορές με αεροσκάφη STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Αριθμός των αεροπορικών ατυχημάτων: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Ορίστε την πιθανότητα συντριβής ενός αεροσκάφους STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Καθόλου STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Μειωμένη STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Κανονική STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Επιτρέπονται οι στάσεις σε δρόμους που είναι ιδιοκτησία των πόλεων : {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων πάνω σε δρόμους που είναι ιδιοκτησία των πόλεων STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Επιτρέπονται οι στάσεις σε δρόμους που ανήκουν σε ανταγωνιστές: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Επιτρέπεται η κατασκευή στάσεων πάνω σε δρόμους που ανοίκουν σε ανταγωνιστές STR_CONFIG_SETTING_ADJACENT_STATIONS :Επιτρέπεται η κατασκευή παρακείμενων σταθμών: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Επιτρέπεται να ακουμπούν μεταξύ τους διαφορετικοί σταθμοί STR_CONFIG_SETTING_DYNAMIC_ENGINES :Επιτρέπεται η χρήση πολλαπλών μηχανών από τα NewGRF: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Επιλογή συμβατότητας για παλιά NewGRF. Μην την απενεργοποιήσετε, εκτός αν ξέρετε καλά τι κάνετε! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Δεν είναι δυνατή η αλλαγή αυτής της ρύθμισης όταν υπάρχουν οχήματα. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Συντήρηση υποδομής: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Όταν είναι ενεργοποιημένη, οι υποδομές προκαλούν έξοδα συντήρησης. Το κόστος μεγαλώνει δυσανάλογα με το μέγεθος του δικτύου, επηρεάζοντας έτσι τις μεγάλες εταιρείες περισσότερο από τις μικρότερες STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Τα αεροδρόμια δεν λήγουν ποτέ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάθε τύπος αεροδρομίου παραμένει διαθέσιμο για πάντα μετά την παρουσίασή του STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Ειδοποίηση όταν ένα όχημα χαθεί: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Ενεργοποίηση μηνυμάτων σχετικά με οχήματα που δεν καταφέρνουν να βρουν διαδρομή για τον προορισμό τους STR_CONFIG_SETTING_ORDER_REVIEW :Επανεξέταση οδηγιών τρένων: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Όταν είναι ενεργοποιημένη, οι εντολές των οχημάτων ελέγχονται περιοδικά και μερικά προφανή προβλήματα αναφέρονται με ένα μήνυμα νέων όταν διαπιστώνονται STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Όχι STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ναι, αλλά εξαιρούνται τα σταματημένα οχήματα STR_CONFIG_SETTING_ORDER_REVIEW_ON :Για όλα τα οχήματα STR_CONFIG_SETTING_WARN_INCOME_LESS :Ειδοποίηση όταν τα έσοδα ενός οχήματου είναι αρνητικά: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Όταν είναι ενεργοποιημένη, στέλνεται μήνυμα νέων όταν κάποιο όχημα δεν έχει αποφέρει κέρδος εντός ενός ημερολογιακού έτους STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Τα οχήματα δεν λήγουν ποτέ: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Όταν είναι ενεργοποιημένη, όλα τα μοντέλα οχημάτων παραμένουν διαθέσιμα για πάντα μετά την παρουσίασή τους STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Αυτόματη ανανέωση όταν ένα όχημα παλιώνει: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα που πλησιάζουν το τέλος της ζωής τους αντικαθίσταται αυτόματα όταν πληρούνται οι προϋποθέσεις αντικατάστασής του STR_CONFIG_SETTING_AUTORENEW_MONTHS :Αυτόματη αντικατάστηση όταν κάποιο όχημα είναι {STRING} μέγιστης ηλικίας STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Σχετική ηλικία κατά την οποία κάποιο όχημα θα πρέπει να εξεταστεί για αυτόματη ανανέωση STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} μήν{P 0 α ες} πριν STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} μήν{P 0 α ες} μετά STR_CONFIG_SETTING_AUTORENEW_MONEY :Αυτόματη ανανέωση με τα ελάχιστα απαιτούμενα χρήματα: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Ελάχιστο χρηματικό ποσό που θα πρέπει να υπολείπεται στην τράπεζα πριν εξεταστεί η αυτόματη ανανέωση των οχημάτων STR_CONFIG_SETTING_ERRMSG_DURATION :Διάρκεια μηνύματος σφάλματος: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Διάρκεια εμφάνισης μηνύματων σφάλματος σε κόκκινο παράθυρο. Σημειώστε ότι μερικά (κρίσιμα) μηνύματα σφάλματος δεν κλείνουν αυτόματα μετά από αυτόν τον χρόνο, αλλά πρέπει να κλείσουν χειροκίνητα STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} δευτερόλεπτ{P 0 ο α} STR_CONFIG_SETTING_HOVER_DELAY :Εμφάνιση αναδυόμενων μηνυμάτων: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Καθυστέρηση πριν την εμφάνιση των επεξηγήσεων όταν ο κέρσορας βρίσκεται πάνω από κάποιο στοιχείο της διεπαφής. Εναλλακτικά, οι επεξηγήσεις μπορούν να συνδεθούν με το δεξί κουμπί του ποντικιού STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Ο κέρσορας βρίσκεται από πάνω για {COMMA} δευτερόλεπτ{P 0 ο α} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Δεξί κουμπί STR_CONFIG_SETTING_POPULATION_IN_LABEL :Εμφάνιση πληθυσμού πόλης στο όνομα της πόλης: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Εμφάνιση του πληθυσμού των πόλεων στην ετικέτα τους πάνω στο χάρτη STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Πάχος γραμμών στα γραφήματα: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Πάχος γραμμών στα γραφήματα. Οι λεπτές γραμμές διαβάζονται με μεγαλύτερη ακρίβεια, οι παχύτερες είναι πιο ευδιάκριτες και τα χρώματα ξεχωρίσουν ευκολότερα STR_CONFIG_SETTING_LAND_GENERATOR :Γεννήτρια γης: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Αυθεντική STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Μέγιστη απόσταση από την άκρη του χάρτη για τα Διυλιστήρια: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Τα Διυλιστήρια κατασκευάζονται κοντά στην άκρη του χάρτη, η οποία είναι ακτή σε νησιωτικούς χάρτες STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Κορυφογραμμή χιονιού: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ανωμαλία επιφάνειας (μόνο με TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Πολύ Απαλή STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Απαλή STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Ανώμαλη STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Πολύ Ανώμαλη STR_CONFIG_SETTING_TREE_PLACER :Αλγόριθμος τοποθέτησης δέντρων: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Κανένας STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Αυθεντικός STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Βελτιωμένος STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Περιστροφή χάρτη υψομετρίας: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Αριστερόστροφη STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Δεξιόστροφη STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Το επίπεδο ύψους που παίρνει ένα σενάριο: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Επιτρέπεται η διαμόρφωση του εδάφους στις άκρες του χάρτη: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Όταν είναι απενεργοποιημένη, τα όρια του χάρτη θα είναι πάντα ωκεανός STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ένα ή περισσότερα τετραγωνίδια στην βόρεια άκρη δεν είναι κενά STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ένα ή περισσότερα τετραγωνίδια σε μια από τις άκρες δεν είναι νερό STR_CONFIG_SETTING_STATION_SPREAD :Μέγιστη έκταση σταθμού: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Μέγιστη περιοχή στην οποία μπορούν να εκτείνονται τα τμήματα ενός σταθμού. Σημειώστε ότι υψηλές τιμές καθυστερούν το παιχνίδι STR_CONFIG_SETTING_SERVICEATHELIPAD :Αυτόματη επισκευή ελικοπτέρων στα ελικοδρόμια: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Επισκευή ελικοπτέρων μετά από κάθε προσγείωση, ακόμη κι αν δεν υπάρχει υπόστεγο στο αεροδρόμιο STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Σύνδεση γραμμής εργαλείων τοπίου με γραμμή εργαλείων σιδηροτροχιάς/δρόμου/νερού/αεροδρομίου: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Όταν ανοίγει γραμμή εργαλείων κατασκευής κάποιου τύπου μεταφορικών μέσων, ανοίγει επίσης η γραμμή εργαλείων για τη μορφοποίηση του εδάφους STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Χρώμα εδάφους που χρησιμοποιείται στον μικρό χάρτη: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Χρώμα εδάφους στον μικρό χάρτη STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Πράσινο STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Σκούρο πράσινο STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Βιολετί STR_CONFIG_SETTING_REVERSE_SCROLLING :Ανάποδη μετακίνηση οθόνης: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Συμπεριφορά όταν κυλίεται ο χάρτης με το δεξί κουμπί του ποντικιού. Όταν είναι απενεργοποιημένη, το ποντίκι μετακινεί την κάμερα. Όταν είναι ενεργοποιημένη, το ποντίκι μετακινεί τον χάρτη STR_CONFIG_SETTING_SMOOTH_SCROLLING :Ομαλή μετάβαση οθόνης: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ελέγξτε τον τρόπο με τον οποίο η κύρια προβολή κυλίεται σε μια συγκεκριμένη θέση όταν πατάτε πάνω στον μικρό χάρτη ή όταν δίνετε εντολή για μετάβαση σε ένα συγκεκριμένο αντικείμενο στον χάρτη. Όταν είναι ενεργοποιημένη, η κύλιση γίνεται ομαλά, και όταν είναι απενεργοποιημένη μεταβαίνει απ' ευθείας στο επιλεγμένο σημείο STR_CONFIG_SETTING_MEASURE_TOOLTIP :Εμφάνιση εργαλείου μετρήσεως όταν χρησιμοποιούνται διάφορα εργαλεία: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Εμφάνιση αποστάσεων τετραγωνίδιων και υψομετρικών διαφορών όταν γίνονται λειτουργίες κατασκευών με σύρσιμο του ποντικιού STR_CONFIG_SETTING_LIVERIES :Εμφάνιση χρωμάτων των εταιριών: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Ελέγξτε τη χρήση του χρωματικού μοτίβου των τύπων των οχημάτων για τα οχήματα (σε αντίθεση με τα εταιρικά) STR_CONFIG_SETTING_LIVERIES_NONE :Κανένας STR_CONFIG_SETTING_LIVERIES_OWN :Η εταιρία μου STR_CONFIG_SETTING_LIVERIES_ALL :Όλες οι εταιρίες STR_CONFIG_SETTING_PREFER_TEAMCHAT :Προτίμηση ομαδικής συνομιλίας με το : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Αλλαγή του πλήκτρου της εσωτερικής με της κοινής συνομιλίας της εταιρείας απο σε STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Λειτουργία ροδέλας κύλισης: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Ενεργοποίηση κύλισης με δισδιάστατους τροχούς ποντικιών STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Ζουμ στον χάρτη STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Μετακίνηση στον χάρτη STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Απενεργοποιημένος STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Ταχύτητα ροδέλας μετακίνησης χάρτη: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Έλεγχος της ευαισθησίας του τροχού του ποντικιού κατά την κύλιση STR_CONFIG_SETTING_OSK_ACTIVATION :Πληκτρολόγιο στην οθόνη: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Απενεργοποιημένο STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Με διπλό κλικ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Με απλό κλικ (όταν είναι επικεντρωμένο) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Με απλό κλικ (άμεσα) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Εξομοίωση δεξιού κλικ {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Επιλέξτε τον τρόπο μίμησης των πατημάτων του δεξιού κουμπιού του ποντικιού STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Κλικ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+Κλικ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργοποιημένος STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Μετάβαση με αριστερό κλικ: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ενεργοποίηση της κύλισης του χάρτη σύροντας τον με το αριστερό κουμπί του ποντικιού. Αυτό είναι ιδιαίτερα χρήσιμο για την κύλιση όταν χρησιμοποιείται οθόνη αφής STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Χρήση της {STRING} ημερολογιακής μορφής στα ονόματα αποθηκευμένων παιχνιδιών STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Μορφή της ημερομηνίας στα αρχεία αποθήκευσης παιχνιδιών STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :μακριά (31 Δεκ 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :σύντομη (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Η προεπιλεγμένη παλέτα για NewGRF δεν ορίζει ορθά παλέτα: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Η προκαθορισμένη παλέτα που θα χρησιμοποιείται για τα NewGRF που δεν έχουν ορίσει ποια χρειάζονται STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Αυτόματη παύση κατά την εκκίνηση ενός νέου παιχνιδιού: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Όταν είναι ενεργοποιημένο, τα νέα παιχνίδια ξεκινούν σε παύση αυτόματα, επιτρέποντας καλύτερη μελέτη του χάρτη STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Όταν το παιχνίδι είναι σε παύση επιτρέπονται: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Επιλογή των ενεργειών που μπορούν να εκτελεστούν όταν το παιχνίδι είναι σε παύση STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Καμία ενέργεια STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Όλες οι μη κατασκευαστικές ενέργειες STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Όλες εκτός από τις ενέργειες διαμόρφωσης τοπίου STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Όλες οι ενέργειες STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Χρήση της προχωρημένης λίστας οχημάτων: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ενεργοποίηση χρήσης των προχωρημένων καταλόγων οχημάτων για την ομαδοποίηση των οχημάτων STR_CONFIG_SETTING_LOADING_INDICATORS :Χρήση δεικτών φόρτωσης: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Επιλέξτε εάν οι δείκτες φόρτωσης εμφανίζονται πάνω από τα οχήματα που φορτώνουν ή ξεφορτώνουν STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Εμφάνιση δρομολογίων σε στιγμές αντί για ημέρες: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Εμφάνιση χρόνων ταξιδιού στα χρονοδιαγράμματα σε χρόνο παιχνιδιού αντί σε ημέρες STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Εμφάνιση αφίξεων και αναχωρήσεων στα δρομολόγια: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Εμφάνιση αναμενόμενης ώρας άφιξης και αναχώρησης στα χρονοδιαγράμματα STR_CONFIG_SETTING_QUICKGOTO :Γρήγορη δημιουργία εντολών για τα οχήματα: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Προεπιλογή του «Μετάβαση σε» όταν ανοίγει το παράθυρο των εντολών STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Προεπιλογή τύπου σιδηροτροχιάς (μετά από νέο παιχνίδι/φόρτωση παιχνιδιού): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Επιλογή τύπου ραγών που επιλέγεται όταν αρχίζει ή φορτώνεται ένα παιχνίδι. Με το «πρώτος διαθέσιμος» επιλέγεται ο παλαιότερος τύπος ραγών, με το «τελευταίος διαθέσιμος» επιλέγεται ο νεότερος τύπος ραγών και με το «περισσότερης χρήσης» επιλέγεται ο τύπος που χρησιμοποιείται περισσότερο την τρέχουσα στιγμή STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Πρώτος διαθέσιμος STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Τελευταίος διαθέσιμος STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Περισσότερο χρησιμοποιούμενος STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Εμφάνιση κλεισμένων γραμμών: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Δίνεται ένα διαφορετικό χρώμα στις κατειλημμένες ράγες για να σας βοηθήσουν με προβλήματα όταν τα τραίνα αρνούνται να εισέλθουν σε τμήματα με βάση τροχιές STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Διατήρηση των οικοδομικών εργαλείων ενεργών μετά από χρήση τους: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Διατήρηση ανοικτών των εργαλείων για γέφυρες, σήραγγες, κλπ μετά από τη χρήση STR_CONFIG_SETTING_EXPENSES_LAYOUT :Ομαδοποίηση εξόδων στο παράθυρο οικονομικών της εταιρίας: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Ορίστε τη μορφή για το παράθυρο των εξόδων της εταιρείας STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Παίζει ήχο για περιληπτικά μηνύματα ειδήσεων STR_CONFIG_SETTING_SOUND_NEWS :Εφημερίδα: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Παίζει ήχο όταν εμφανίζονται εφημερίδες STR_CONFIG_SETTING_SOUND_NEW_YEAR :Στο τέλος του χρόνου: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου συνοψίζοντας την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο STR_CONFIG_SETTING_SOUND_CONFIRM :Οικοδομή: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Παίζει ηχητικό εφέ σε επιτυχής οικοδομές ή άλλες δράσεις STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Παίζει ήχο όταν γίνεται κλικ σε κουμπιά STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Παίζει ήχους για ατυχήματα και συμφορές STR_CONFIG_SETTING_SOUND_VEHICLE :Οχήματα: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Παίζει τα ηχητικά εφέ των οχημάτων STR_CONFIG_SETTING_SOUND_AMBIENT :Περιβαλλοντικά: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τους περιβαλλοντικούς ήχους των βιομηχανιών των πόλεων, και του τοπίου γενικότερα STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Απενεργοποίηση των υποδομών για τα οχήματα που δεν είναι διαθέσιμα: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές είναι διαθέσιμες μόνο όταν υπάρχουν διαθέσιμα οχήματα, αποτρέποντας σπατάλη χρόνου και χρημάτων σε μη χρησιμοποιήσιμες υποδομές STR_CONFIG_SETTING_MAX_TRAINS :Μέγιστος αριθμός τρένων ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Μέγιστος αριθμός τραίνων που μπορεί να έχει μια εταιρεία STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Μέγιστα οχήματα ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Μέγιστος αριθμός οδικών οχημάτων που μπορεί να έχει μια εταιρεία STR_CONFIG_SETTING_MAX_AIRCRAFT :Μέγιστα αεροσκάφη ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Μέγιστος αριθμός αεροσκαφών που μπορεί να έχει μια εταιρεία STR_CONFIG_SETTING_MAX_SHIPS :Μέγιστα πλοία ανά εταιρία: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Μέγιστος αριθμός πλοίων που μπορεί να έχει μια εταιρεία STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Απενεργοποίηση τρένων για τον υπολογιστή: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή τραίνων από παίκτη του υπολογιστή STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Απενεργοποίηση οχημάτων υπολογιστή: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή οδικών οχημάτων από παίκτη του υπολογιστή STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Απενεργοποίηση αεροσκαφών υπολογιστή: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή αεροσκαφών από παίκτη του υπολογιστή STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Απενεργοποίηση πλοίων υπολογιστή: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή πλοίων από παίκτη του υπολογιστή STR_CONFIG_SETTING_AI_PROFILE :Προκαθορισμένο προφίλ ρυθμίσεων: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Επιλέξτε το προφίλ ρυθμίσεων για χρήση με τυχαία ΑΙ ή για τις αρχικές τιμές όταν προστίθεται νέο AI ή δέσμη ενεργειών STR_CONFIG_SETTING_AI_PROFILE_EASY :Εύκολο STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Μεσαίο STR_CONFIG_SETTING_AI_PROFILE_HARD :Δύσκολο STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Επιτρέπονται AI σε παιχνίδια πολλών παικτών: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Επιτρέπεται η συμμετοχή παικτών υπολογιστή AI σε παιχνίδια πολλαπλών παικτών STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#εντολές πριν την παύση δεσμών ενεργειών: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Μέγιστος αριθμός βημάτων υπολογισμού που κάνει κάποιο σενάριο σε κάθε σειρά STR_CONFIG_SETTING_SERVINT_ISPERCENT :Τα διαστήματα μεταξύ συντήρησης είναι σε ποσοστά: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Επιλέξτε εάν η επισκευή των οχημάτων εξαρτάται από τον χρόνο που πέρασε από την τελευταία επισκευή ή από την μείωση της αξιοπιστίας κατά ένα συγκεκριμένο ποσοστό της μέγιστης αξιοπιστίας STR_CONFIG_SETTING_SERVINT_TRAINS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα τραίνα: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οχήματα τραίνων, όταν δεν δίνεται άλλο διάστημα για το όχημα STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} ημέρ{P 0 α ες}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Απενεργοποιημένο STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Προκαθορισμένο διάστημα μεταξύ συντηρήσεων για οδικά οχήματα: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οδικά οχήματα, όταν δεν δίνεται άλλο διάστημα για το όχημα STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Προκαθορισμένο διάστημα επισκευών αεροσκαφών: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα αεροσκάφη, όταν δεν δίνεται άλλο διάστημα για το αεροσκάφος STR_CONFIG_SETTING_SERVINT_SHIPS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα πλοία: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα πλοία, όταν δεν δίνεται άλλο διάστημα για το πλοίο STR_CONFIG_SETTING_NOSERVICE :Απενεργοποίηση επισκευών όταν οι καταρρεύσεις είναι απενεργοποιημένες: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα δεν συντηρούνται όταν δεν είναι δυνατό να χαλάσουν STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ενεργοποίηση ορίων ταχύτητας βαγονιών: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Όταν είναι ενεργοποιημένο, χρησιμοποιούνται και τα όρια ταχύτητας των βαγονιών όταν αποφασίζεται η μέγιστη ταχύτητα ενός τραίνου STR_CONFIG_SETTING_DISABLE_ELRAILS :Απενεργοποίηση ηλεκτρικών σιδηροτροχιών: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ενεργοποιώντας αυτήν την ρύθμιση απενεργοποιείται η ανάγκη ηλεκτροδότησης των σιδηροτροχιών για να μπορέσουν σε αυτές να λειτουργήσουν οι ηλεκτρικές μηχανές STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Άφιξη πρώτου οχήματος σε σταθμό του παίκτη: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Παρουσίασε τα νέα όταν το πρώτο όχημα φτάνει σε νέο σταθμό του παίκτη STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Άφιξη του πρώτου οχήματος σε σταθμό του αντιπάλου: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Παρουσίασε τα νέα όταν το πρώτο όχημα φτάνει σε νέο σταθμό ενός ανταγωνιστή STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ατυχήματα / καταστροφές: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Προβάλλει εφημερίδα όταν συμβαίνουν ατυχήματα ή συμφορές STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Πληροφορίες εταιρίας: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Προβάλλει εφημερίδα όταν αρχίζει νέα εταιρεία ή όταν οι εταιρίες ρισκάρουν χρεωκοπία STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Έναρξη των βιομηχανιών: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Κλείσιμο βιομηχανιών: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Οικονομικές αλλαγές: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Αλλαγή της παραγωγής των βιομηχανιών που εξυπηρετούνται από την εταιρία: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Διαφοροποιήσεις στην παραγωγή των βιομηχανιών που εξυπηρετούνται από ανταγωνιστή(-ές): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Άλλες διαφοροποιήσεις στη παραγωγή: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :Συμβουλές / πληροφορίες για τα εταιρικά οχήματα: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Νέα οχήματα: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Αλλαγές στην αποδοχή φορτίου: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :Επιχορηγήσεις: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Πρόβαλλε εφημερίδα σχετικά με συμβάντα που σχετίζονται με επιδοτήσεις STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Γενικές πληροφορίες: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Απενεργοποιημένα STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Περιλήψεις STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Ολόκληρα STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Τα έγχρωμα νέα εμφανίζονται από το: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Το έτος κατά το οποίο οι ανακοινώσεις στην εφημερίδα εκτυπώνονται έγχρωμες. Πριν από αυτό το έτος, εκτυπώνονται μονόχρωμες και ασπρόμαυρες STR_CONFIG_SETTING_STARTING_YEAR :Έτος εκκίνησης: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Ενεργοποίηση ομαλής οικονομίας (περισσότερες, μικρότερες αλλαγές): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Όταν είναι ενεργοποιημένη, η παραγωγή των βιομηχανιών αλλάζει συχνότερα και σε μικρότερα βήματα. Αυτή η ρύθμιση συνήθως δεν έχει καμία επίδραση όταν οι τύποι των βιομηχανιών παρέχονται από NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Ενεργοποίηση της δυνατότητας αγοράς μετοχών από άλλες εταιρίες: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Όταν είναι ενεργοποιημένη, επιτρέπεται η αγοραπωλησία εταιρικών μετοχών. Οι μετοχές θα είναι διαθέσιμες μόνο όταν οι εταιρείες φτάνουν μια ορισμένη ηλικία STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Το ποσοστό κέρδους από το σκέλος μεταφοράς στα συστήματα τροφοδότησης: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Το ποσοστό του εισοδήματος που δίνεται στα ενδιάμεσα σκέλη των συστημάτων τροφοδότησης, δίνοντας μεγαλύτερο έλεγχο στο εισόδημα STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Όταν σύρετε, τοποθετούνται σήματα κάθε: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ορισμός απόστασης στην οποία θα τοποθετούνται σήματα σε μια γραμμή και μέχρι το επόμενο εμπόδιο (σήμα, διακλάδωση), αν σύρονται τα σήματα STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} τετραγωνίδι{P 0 ο α} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Όταν σύρετε, διατηρείται σταθερή απόσταση μεταξύ των σημάτων: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές ευκολότερη STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματο κτίσιμο σηματοφόρων πριν από το: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ορίζεται το έτος κατά το οποίο θα χρησιμοποιούνται τα ηλεκτρικά σήματα στις σιδηροτροχιές. Πριν από αυτό, θα χρησιμοποιούνται μηχανικά σήματα (που έχουν ακριβώς την ίδια λειτουργία, αλλά έχουν διαφορετική μορφή) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ενεργοποίηση του μενού σηματοδοτών: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Εμφανίζεται ένα παράθυρο για την επιλογή του τύπου του σήματος που θα τοποθετηθεί, αντί για την απλή μετατροπή από τον έναν τύπο στον άλλο χωρίς παράθυρο, με πάτημα πάνω σε τοποθετημένα σήματα κρατώντας το Ctrl STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Τύπος σηματοδότη που θα χρησιμοποιείται ως προεπιλογή: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Προκαθορισμένος τύπος σημάτων που χρησιμοποιείται STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Σηματοδότες τμήματος STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Σηματοδότες τροχιάς STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Σηματοδότες μονόδρομης τροχιάς STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Περιήγηση στους τύπους σηματοδότησης: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Επιλέξτε τους τύπους σημάτων μεταξύ των οποίων θα γίνονται οι αλλαγές, όταν πατάτε πάνω σε ένα τοποθετημένο σήμα κρατώντας το Ctrl STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Μόνο σηματοδότες τμήματος STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Μόνο σηματοδότες τροχιάς STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Όλοι STR_CONFIG_SETTING_TOWN_LAYOUT :Σχέδιο δρόμων για νέες πόλεις: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Μορφή οδικών δικτύων για τις πόλεις STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :αρχική STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Καλύτεροι δρόμοι STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :πλέγμα 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :πλέγμα 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Τυχαίο STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Οι πόλεις επιτρέπεται να χτίσουν δρόμους: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Επιτρέπεται στις πόλεις να κατασκευάζουν δρόμους για ανάπτυξη. Απενεργοποιήστε για να αποτρέπονται οι τοπικές αρχές από την αυτόνομη κατασκευή δρόμων STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Οι πόλεις επιτρέπουν το κτίσιμο ισόπεδων διασταυρώσεων: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στις πόλεις να κατασκευάζουν επίπεδες διαβάσεις STR_CONFIG_SETTING_NOISE_LEVEL :Επιτρέπεται η πόλη να ελέγχει το επίπεδο θορύβου των αεροδρομίων: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Με αυτήν τη ρύθμιση απενεργοποιημένη, γίνεται να υπάρχουν δύο αεροδρόμια σε κάθε πόλη. Με αυτήν τη ρύθμιση ενεργοποιημένη, ο αριθμός των αεροδρομίων σε μια πόλη περιορίζεται από την αποδοχή του θορύβου από την πόλη, η οποία εξαρτάται από τον πληθυσμό, το μέγεθος του αεροδρομίου και από την απόστασή του από την πόλη STR_CONFIG_SETTING_TOWN_FOUNDING :Ίδρυση πόλεων στο παιχνίδι: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση επιτρέπει στους παίκτες να ιδρύσουν νέες πόλεις στο παιχνίδι STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Δεν επιτρέπεται STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Επιτρέπεται STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Επιτρέπεται, προσαρμοσμένο σχέδιο πόλης STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Τοποθέτηση δέντρων εντός παιχνιδιού: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Έλεγχος της τυχαίας εμφάνισης δέντρων κατά τη διάρκεια του παιχνιδιού. Αυτό είναι πιθανό να επηρεάσει βιομηχανίες που εξαρτώνται από την ανάπτυξη των δέντρων, όπως για παράδειγμα οι υλοτομίες STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Κανένα {RED}(καταστρέφει το ξυλουργείο) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Μόνο σε τροπικά δάση STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Παντού STR_CONFIG_SETTING_TOOLBAR_POS :Θέση κύριας εργαλειοθήκης: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Οριζόντια τοποθέτηση της κύριας γραμμής εργαλείων στο επάνω μέρος της οθόνης STR_CONFIG_SETTING_STATUSBAR_POS :Θέση της μπάρας κατάστασης: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Οριζόντια τοποθέτηση της γραμμής κατάστασης στο κάτω μέρος της οθόνης STR_CONFIG_SETTING_SNAP_RADIUS :Ακτίνα έλξης παράθυρου: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Απόσταση μεταξύ παραθύρων πριν το παράθυρο που μετακινείται ευθυγραμμιστεί αυτόματα με τα γειτονικά STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} εικονοστοιχεί{P 0 ο α} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Απενεργοποιημένη STR_CONFIG_SETTING_SOFT_LIMIT :Μέγιστο όριο μη καρφωμένων παραθύρων: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Αριθμός μη μόνιμων ανοικτών παράθυρων πριν παλαιότερα παράθυρα κλείσουν αυτόματα για να κάνουν χώρα για τα νεότερα STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :απενεργοποιημένο STR_CONFIG_SETTING_ZOOM_MIN :Μέγιστο επίπεδο μεγέθυνσης: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Το μέγιστο επίπεδο μεγέθυνσης στα παράθυρα προβολών. Σημειώστε ότι ενεργοποιώντας υψηλότερα επίπεδα μεγεθύνσεων αυξάνονται οι απαιτήσεις σε μνήμη STR_CONFIG_SETTING_ZOOM_MAX :Μέγιστο επίπεδο σμίκρυνσης: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Το μέγιστο επίπεδο σμίκρυνσης στα παράθυρα προβολών. Υψηλότερα επίπεδα σμικρύνσεων είναι πιθανό να προκαλέσουν υστερήσεις STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Κανονικό STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Ρυθμός ανάπτυξης πόλης: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Ταχύτητα μεγέθυνσης πόλεων STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Μηδενικός STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Αργός STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Κανονικός STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Γρήγορος STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Πολύ γρήγορος STR_CONFIG_SETTING_LARGER_TOWNS :Αναλογία πόλεων που θα γίνουν μεγάλες: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Αριθμός πόλεων που θα γίνουν μεγάλες, ώστε μια πόλη που ξεκινά μεγαλύτερη να μεγαλώνει ταχύτερα STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 σε {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Καμία STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Αρχικός πολλαπλασιαστής μεγέθους πόλης: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Μέσο μέγεθος μεγάλων πόλεων σε σχέση με τις κανονικές στην αρχή του παιχνιδιού STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Να αφαιρούνται παράλογα στοιχεία δρόμων κατά την κατασκευή τους: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Αφαίρεση αδιέξοδων άκρων κατά την χρηματοδοτούμενη ανακατασκευή δρόμων STR_CONFIG_SETTING_GUI :{ORANGE}Περιβάλλον Λειτουργίας STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Κατασκευή STR_CONFIG_SETTING_VEHICLES :{ORANGE}Οχήματα STR_CONFIG_SETTING_STATIONS :{ORANGE}Σταθμοί STR_CONFIG_SETTING_ECONOMY :{ORANGE}Οικονομία STR_CONFIG_SETTING_AI :{ORANGE}Ανταγωνιστές STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Επιλογές εμφάνισης STR_CONFIG_SETTING_INTERACTION :{ORANGE}Αλληλεπιδράσεις STR_CONFIG_SETTING_SOUND :{ORANGE}Ηχητικά εφέ STR_CONFIG_SETTING_NEWS :{ORANGE}Νέα και μηνύματα STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Σηματοδότες STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Χειρισμός εμπορευμάτων STR_CONFIG_SETTING_AI_NPC :{ORANGE}Παίκτες υπολογιστή STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Αυτόματη ανανέωση STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Έλεγχος οχημάτων STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Δρομολογήσεις STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Τρένα STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Πόλεις STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Βιομηχανίες STR_CONFIG_SETTING_PATHFINDER_OPF :Αρχικό STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Συνίσταται) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Μέθοδος δρομολόγησης για τρένα: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα τραίνα STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Μέθοδος δρομολόγησης για οχήματα δρόμου: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα οδικά οχήματα STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Μέθοδος δρομολόγησης για πλοία: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα πλοία STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Αυτόματη αναστροφή σε σηματοδότες: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Επιτρέπεται στα τραίνα να αντιστραφούν σε σήμα, εάν περιμένουν εκεί για πολύ ώρα STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Αλλαγή τιμής ρύθμισης # Config errors STR_CONFIG_ERROR :{WHITE}Σφάλμα στο αρχείο ρυθμίσεων STR_CONFIG_ERROR_ARRAY :{WHITE}... σφάλμα στον πίνακα «{STRING}» STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... η τιμή «{STRING}» είναι άκυρη για «{STRING}» STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... καταληκτικοί χαρακτήρες στο τέλος της ρύθμισης «{STRING}» STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... αγνοείται το NewGRF «{STRING}»: διπλότυπο GRF ID του «{STRING}» STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... αγνοείται το άκυρο NewGRF «{STRING}»: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :δεν βρέθηκε STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ανασφαλής για στατική χρήση STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :σύστημα NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :ασύμβατο με αυτήν την έκδοση του OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :άγνωστο STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... το επίπεδο συμπίεσης «{STRING}» είναι άκυρο STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... ο τύπος αρχείου αποθήκευσης «{STRING}» δεν είναι διαθέσιμος. Επαναφορά σε «{STRING}» STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... αγνόηση βασικού σετ γραφικών «{STRING}»: δεν βρέθηκε STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... αγνόηση βασικού σετ ήχων «{STRING}»: δεν βρέθηκε STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... αγνόηση βασικού σετ μουσικής «{STRING}»: δεν βρέθηκε STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Έλληψη μνήμης # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Νέο Παιχνίδι STR_INTRO_LOAD_GAME :{BLACK}Φόρτωση Παιχνιδιού STR_INTRO_PLAY_SCENARIO :{BLACK}Παίξτε Σενάριο STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Παίξτε Υψομετρικό Χάρτη STR_INTRO_SCENARIO_EDITOR :{BLACK}Επεξεργαστής Σεναρίων STR_INTRO_MULTIPLAYER :{BLACK}Παιχνίδι Πολλών Παικτών STR_INTRO_GAME_OPTIONS :{BLACK}Επιλογές Παιχνιδιού STR_INTRO_HIGHSCORE :{BLACK}Πίνακας Βαθμολογιών STR_INTRO_ADVANCED_SETTINGS :{BLACK}Προηγμένες Ρυθμίσεις STR_INTRO_NEWGRF_SETTINGS :{BLACK}Ρυθμίσεις NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Διαδικτυακό Περιεχόμενο STR_INTRO_SCRIPT_SETTINGS :{BLACK}Ρυθμίσεις AI και Δέσμης Ενεργειών STR_INTRO_QUIT :{BLACK}Έξοδος STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Έναρξη νέου παιχνιδιού. Το Ctrl+Κλικ παρακάμπτει τη ρύθμιση του χάρτη STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Φόρτωση αποθηκευμένου παιχνιδιού STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Εκκίνηση νέου παιχνιδιού με χρήση χάρτη υψομετρίας STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Έναρξη νέου παιχνιδιού, χρησιμοποιώντας ένα προσαρμοσμένο σενάριο STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Δημιουργία προσαρμοσμένου κόσμου/σεναρίου STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Έναρξη παιχνιδιού με πολλούς παίκτες STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Επιλογή «εύκρατου» στυλ τοπίου STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Επιλογή «υπό-αρκτικού» στυλ τοπίου STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Επιλογή «υπό-τροπικού» στυλ τοπίου STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Επιλογή στυλ τοπίου «παιχνιδούπολης» STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Εμφάνιση επιλογών παιχνιδιού STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Εμφάνιση του πίνακα βαθμολογιών STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Εμφάνιση προηγμένων ρυθμίσεων STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Έλεγχος για νέο και ανανεωμένο περιεχόμενο για λήψη STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Εμφάνιση ρυθμίσεων για AI και της δέσμης ενεργειών του παιχνιδιού STR_INTRO_TOOLTIP_QUIT :{BLACK}Έξοδος από το «OpenTTD» STR_INTRO_TRANSLATION :{BLACK}Λείπουν {NUM} παράμετροι από τη μετάφραση. Παρακαλούμε βοηθήστε να κάνουμε το OpenTTD καλύτερο εγγραφόμενοι ως μεταφραστές. Δείτε το αρχείο readme.txt για λεπτομέρειες. # Quit window STR_QUIT_CAPTION :{WHITE}Έξοδος STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το OpenTTD και να επιστρέψετε στο {STRING}; STR_QUIT_YES :{BLACK}Ναι STR_QUIT_NO :{BLACK}Όχι # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Εγκατάλειψη Παιχνιδιού STR_ABANDON_GAME_QUERY :{YELLOW}Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το παιχνίδι; STR_ABANDON_SCENARIO_QUERY :{YELLOW}Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το σενάριο; # Cheat window STR_CHEATS :{WHITE}Cheats STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε χρησιμοποιήσει αυτό το cheat εκ των προτέρων STR_CHEATS_WARNING :{BLACK}Προσοχή! Είστε έτοιμοι να προδώσετε τους φίλους ανταγωνιστές σας. Θυμηθείτε ότι αυτή η ντροπή θα μείνει για πάντα. STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Μαγική μπουλντόζα (αφαιρεί βιομηχανίες, αμετακίνητα αντικείμενα): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Τα τούνελ μπορούν να διασταυρώνονται: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Τα jet δε θα συγκρούονται (συχνά) σε μικρά αεροδρόμια: {ORANGE} {STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Εύκρατο τοπίο STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Πολικό τοπίο STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Υποτροπικό τοπίο STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Τοπίο παιχνιδότοπου STR_CHEAT_CHANGE_DATE :{LTBLUE}Αλλαγή ημ/νίας: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Αλλαγή τρέχοντος έτους STR_CHEAT_SETUP_PROD :{LTBLUE}Ενεργοποίηση δυνατότητας αλλαγής τιμών παραγωγής: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Νέος Χρωματισμός STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Εμφάνιση γενικών χρωματικών μοτίβων STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων τρένων STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων οχημάτων δρόμου STR_LIVERY_SHIP_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων πλοίων STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Εμφάνιση χρωματικών μοτίβων αεροσκαφών STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Επιλογή του βασικού χρώματος για το επιλεγμένο θέμα. Με Ctrl+Κλικ ορίζεται το χρώμα σε κάθε θέμα STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Επιλογή του δευτερεύοντος χρώματος για το επιλεγμένο μοτίβο. Με Ctrl+Κλικ ορίζεται το χρώμα για κάθε θέμα STR_LIVERY_PANEL_TOOLTIP :{BLACK}Επιλέξτε το χρωματικό μοτίβο για αλλαγή ή πολλαπλά μοτίβα με Ctrl+Κλικ. Κάντε κλικ στο κουτάκι για να επιλέξετε τη χρήση του μοτίβου STR_LIVERY_DEFAULT :Πρότυπο Μοτίβου Χρωμάτων STR_LIVERY_STEAM :Ατμοκίνητη Μηχανή STR_LIVERY_DIESEL :Πετρελαιοκίνητη Μηχανή STR_LIVERY_ELECTRIC :Ηλεκτροκίνητη Μηχανή STR_LIVERY_MONORAIL :Μηχανή Μονοτρόχιου STR_LIVERY_MAGLEV :Μηχανή Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Επιβατικό Βαγόνι (Ατμού) STR_LIVERY_PASSENGER_WAGON_DIESEL :Επιβατικό Βαγόνι (Πετρελαίου) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Επιβατικό Βαγόνι (Ηλεκτρικό) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Επιβατικό Βαγόνι (Μονοτρόχιο) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Επιβατικό Βαγόνι (Maglev) STR_LIVERY_FREIGHT_WAGON :Εμπορικό Βαγόνι STR_LIVERY_BUS :Λεωφορείο STR_LIVERY_TRUCK :Φορτηγό STR_LIVERY_PASSENGER_SHIP :Επιβατικό πλοίο STR_LIVERY_FREIGHT_SHIP :Εμπορικό Πλοίο STR_LIVERY_HELICOPTER :Ελικόπτερο STR_LIVERY_SMALL_PLANE :Μικρό Αεροπλάνο STR_LIVERY_LARGE_PLANE :Μεγάλο Αεροπλάνο STR_LIVERY_PASSENGER_TRAM :Επιβατικό Τραμ STR_LIVERY_FREIGHT_TRAM :Εμπορικό Τράμ # Face selection window STR_FACE_CAPTION :{WHITE}Επιλογή Προσώπου STR_FACE_CANCEL_TOOLTIP :{BLACK}Ακύρωση επιλογής νέου προσώπου STR_FACE_OK_TOOLTIP :{BLACK}Αποδοχή νέου προσώπου STR_FACE_MALE_BUTTON :{BLACK}Αρσενικό STR_FACE_MALE_TOOLTIP :{BLACK}Επιλογή αρσενικών προσώπων STR_FACE_FEMALE_BUTTON :{BLACK}Θηλυκό STR_FACE_FEMALE_TOOLTIP :{BLACK}Επιλογή θηλυκών προσώπων STR_FACE_NEW_FACE_BUTTON :{BLACK}Νέο Πρόσωπο STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Δημιουργία τυχαίου προσώπου STR_FACE_ADVANCED :{BLACK}Προχωρημένη STR_FACE_ADVANCED_TOOLTIP :{BLACK}Προχωρημένη επιλογή προσώπου STR_FACE_SIMPLE :{BLACK}Απλή STR_FACE_SIMPLE_TOOLTIP :{BLACK}Απλή επιλογή προσώπου STR_FACE_LOAD :{BLACK}Φόρτωση STR_FACE_LOAD_TOOLTIP :{BLACK}Φόρτωση αγαπημένου προσώπου STR_FACE_LOAD_DONE :{WHITE}Το αγαπημένο πρόσωπο έχει φορτωθεί από το αρχείο ρυθμίσεων του OpenTTD STR_FACE_FACECODE :{BLACK}Αρ. προσώπου παίκτη STR_FACE_FACECODE_TOOLTIP :{BLACK}Εμφάνιση και/ή επιλογή του αριθμού του προσώπου του παίκτη STR_FACE_FACECODE_CAPTION :{WHITE}Προβολή και/ή ορισμός του αριθμού του προσώπου του παίκτη STR_FACE_FACECODE_SET :{WHITE}Ο νέος αριθμός προσώπου έχει οριστεί STR_FACE_FACECODE_ERR :{WHITE}Δεν μπορεί να οριστεί ο αριθμός προσώπου του παίκτη - πρέπει να είναι αριθμητικός μεταξύ του 0 και του 4.294.967.295! STR_FACE_SAVE :{BLACK}Αποθήκευση STR_FACE_SAVE_TOOLTIP :{BLACK}Αποθήκευση αγαπημένου προσώπου STR_FACE_SAVE_DONE :{WHITE}Αυτό το πρόσωπο θα αποθηκευτεί ως αγαπημένο στο αρχείο ρυθμίσεων του OpenTTD STR_FACE_EUROPEAN :{BLACK}Ευρωπαϊκό STR_FACE_SELECT_EUROPEAN :{BLACK}Επιλογή ευρωπαϊκών προσώπων STR_FACE_AFRICAN :{BLACK}Αφρικάνικο STR_FACE_SELECT_AFRICAN :{BLACK}Επιλογή αφρικάνικων προσώπων STR_FACE_YES :Ναι STR_FACE_NO :Όχι STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Ενεργοποίηση μουστακιού ή σκουλαρικιού STR_FACE_HAIR :Μαλλί: STR_FACE_HAIR_TOOLTIP :{BLACK}Αλλάξτε μαλλί STR_FACE_EYEBROWS :Φρύδια: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Αλλάξτε φρύδια STR_FACE_EYECOLOUR :Χρώμα ματιών: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Αλλαγή χρώμα ματιών STR_FACE_GLASSES :Γυαλιά: STR_FACE_GLASSES_TOOLTIP :{BLACK}Βάλτε γυαλιά STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Αλλάξτε γυαλιά STR_FACE_NOSE :Μύτη: STR_FACE_NOSE_TOOLTIP :{BLACK}Αλλάξτε μύτη STR_FACE_LIPS :Χείλια: STR_FACE_MOUSTACHE :Μουστάκι: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Αλλάξτε χείλια ή μουστάκι STR_FACE_CHIN :Πηγούνι: STR_FACE_CHIN_TOOLTIP :{BLACK}Αλλάξτε πηγούνι STR_FACE_JACKET :Σακάκι: STR_FACE_JACKET_TOOLTIP :{BLACK}Αλλάξτε σακάκι STR_FACE_COLLAR :Γιακάς: STR_FACE_COLLAR_TOOLTIP :{BLACK}Αλλαγή γιακά STR_FACE_TIE :Γραβάτα: STR_FACE_EARRING :Σκουλαρίκι: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Αλλαγή γραβάτας ή σκουλαρικιού # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Παιχνίδι πολλών παικτών STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Σύνδεση: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Επιλέξτε μεταξύ διαδικτυακού παιχνιδιού ή τοπικού (LAN) παιχνιδιού STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Διαδίκτυο STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Όνομα παίκτη: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Αυτό είναι το όνομα με το οποίο θα σας αναγνωρίζουν οι άλλοι παίκτες STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Όνομα STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Όνομα του παιχνιδιού STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Συμμετέχοντες STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Συμμετέχοντες συνδεδεμένοι / μέγιστος αριθμός συμμετεχόντων{}Εταιρίες συνδεδεμένες / μέγιστος αριθμός εταιριών STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Μέγεθος χάρτη STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Μέγεθος χάρτη του παιχνιδιού{}Κάντε κλικ για ταξινόμηση ανά περιοχή STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Ημερομηνία STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Τρέχουσα ημερομηνία STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Χρόνια STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Αριθμός χρόνων{}που τρέχει το παιχνίδι STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Γλώσσα, έκδοση διακομιστή, κλπ. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Κάντε κλικ σε ένα παιχνίδι από τη λίστα για το επιλέξετε STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Ο διακομιστής που συμμετείχατε την τελευταία φορά: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Κάντε κλικ για να επιλέξετε το διακομιστή που συμμετείχατε την τελευταία φορά STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ΠΛΗΡΟΦΟΡΙΕΣ ΠΑΙΧΝΙΔΙΟΥ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Συμμετέχοντες:: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Γλώσσα: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Τοπίο: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Μέγεθος χάρτη: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Έκδοση διακομιστή: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Διεύθυνση διακομιστή: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Ημερομηνία έναρξης: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Τρέχουσα ημερομηνία: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Προστατευμένο με κωδικό! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}ΔΙΑΚΟΜΙΣΤΗΣ ΕΚΤΟΣ ΛΕΙΤΟΥΡΓΙΑΣ STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}ΔΙΑΚΟΜΙΣΤΗΣ ΓΕΜΑΤΟΣ STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}ΑΝΑΝΤΙΣΤΟΙΧΙΑ ΕΚΔΟΣΗΣ STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}ΑΝΑΝΤΙΣΤΟΙΧΙΑ NEWGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Συμμετοχή σε παιχνίδι STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Ανανέωση διακομιστή STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Ανανεώση πληροφοριών του διακομιστή STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Αναζήτηση διακομιστή STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Ψάξτε το δίκτυο για ένα διακομιστή STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Προσθήκη διακομιστή STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Προσθέτει ένα διακομιστή στη λίστα ο οποίος θα ελέγχεται κάθε φορά για ενεργά παιχνίδια. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Εκκίνηση διακομιστή STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Ξεκινήστε το δικό σας διακομιστή STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Εισάγετε το όνομά σας STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Εισάγετε τη διεύθυνση του οικοδεσπότη # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Έναρξη νέου παιχνιδιού για πολλούς παίκτες STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Όνομα παιχνιδιού: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Το όνομα του παιχνιδιού θα εμφανιστεί στους άλλους παίκτες στο μενού επιλογής παιχνιδιού για πολλούς παίκτες STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Θέση κωδικού STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Προστατέψτε το παιχνίδι με έναν κωδικό εάν δε θέλετε να είναι δημοσίως προσβάσιμο STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Διαδίκτυο STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Διαδίκτυο (αναγγελία) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} συμπαίκτ{P ης ες} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Μέγιστος αριθμός συμμετεχόντων: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Επιλέξτε τον μέγιστο αριθμό συμμετεχόντων. Δεν είναι ανάγκη να γεμίσουν όλες οι θέσεις STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} εταιρεί{P α ες} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Μέγιστος αριθμός εταιριών: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Περιορισμός του διακομιστή σε συγκεκριμένο αριθμό εταιρειών STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} θεατ{P ής ές} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Μέγιστος αριθμός θεατών: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Περιορισμός του διακομιστή σε συγκεκριμένο αριθμό θεατών STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Ομιλούμενη γλώσσα: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Οι υπόλοιποι παίκτες θα γνωρίζουν ποια γλώσσα ομιλείται στον διακομιστή STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Εισάγετε το όνομα του δικτυακού παιχνιδιού # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Οποιαδήποτε STR_NETWORK_LANG_ENGLISH :Αγγλικά STR_NETWORK_LANG_GERMAN :Γερμανικά STR_NETWORK_LANG_FRENCH :Γαλλικά STR_NETWORK_LANG_BRAZILIAN :Βραζιλιάνικα STR_NETWORK_LANG_BULGARIAN :Βουλγαρικά STR_NETWORK_LANG_CHINESE :Κινέζικα STR_NETWORK_LANG_CZECH :Τσεχικά STR_NETWORK_LANG_DANISH :Δανικά STR_NETWORK_LANG_DUTCH :Ολλανδικά STR_NETWORK_LANG_ESPERANTO :Εσπεράντο STR_NETWORK_LANG_FINNISH :Φιλανδικά STR_NETWORK_LANG_HUNGARIAN :Ουγγρικά STR_NETWORK_LANG_ICELANDIC :Ισλανδικά STR_NETWORK_LANG_ITALIAN :Ιταλικά STR_NETWORK_LANG_JAPANESE :Ιαπωνικά STR_NETWORK_LANG_KOREAN :Κορεατικά STR_NETWORK_LANG_LITHUANIAN :Λιθουανικά STR_NETWORK_LANG_NORWEGIAN :Νορβηγικά STR_NETWORK_LANG_POLISH :Πολωνικά STR_NETWORK_LANG_PORTUGUESE :Πορτογαλικά STR_NETWORK_LANG_ROMANIAN :Ρουμανικά STR_NETWORK_LANG_RUSSIAN :Ρωσικά STR_NETWORK_LANG_SLOVAK :Σλοβακικά STR_NETWORK_LANG_SLOVENIAN :Σλοβενικά STR_NETWORK_LANG_SPANISH :Ισπανικά STR_NETWORK_LANG_SWEDISH :Σουηδικά STR_NETWORK_LANG_TURKISH :Τουρκικά STR_NETWORK_LANG_UKRAINIAN :Ουκρανικά STR_NETWORK_LANG_AFRIKAANS :Αφρικάνς STR_NETWORK_LANG_CROATIAN :Κροατικά STR_NETWORK_LANG_CATALAN :Καταλανικά STR_NETWORK_LANG_ESTONIAN :Εσθονικά STR_NETWORK_LANG_GALICIAN :Γαλικιανά STR_NETWORK_LANG_GREEK :Ελληνικά STR_NETWORK_LANG_LATVIAN :Λετονικά ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Αίθουσα παιχνιδιού για πολλούς παίκτες STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Προετοιμασία για συμμετοχή: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Λίστα όλων των εταιρειών αυτήν τη στιγμή στο παιχνίδι. Μπορείτε είτε να συμμετάσχετε σε μία ή να δημιουργήσετε μια νέα αν υπάρχει κενή θέση STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}ΠΛΗΡΟΦΟΡΙΕΣ ΕΤΑΙΡΕΙΑΣ STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Όνομα εταιρείας: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Ίδρυση: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Αξία εταιρείας: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Τρέχων ισοζύγιο: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Έσοδα τελευταίας χρονιάς: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Απόδοση: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Οχήματα: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Σταθμοί: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Παίκτες: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Νέα εταιρεία STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Δημιουργία νέας εταιρείας STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Παρακολούθηση παιχνιδιού STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Δείτε το παιχνίδι ως θεατής STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Συμμετοχή σε εταιρεία STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Βοηθήστε στη διαχείριση αυτής της εταιρείας # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Σύνδεση... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Σύνδεση... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Εξουσιοδότηση... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Αναμονή... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Λήψη χάρτη... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Επεξεργασία δεδομένων... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Καταχώρηση... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Ανεύρεση πληροφοριών του παιχνιδιού... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Ανεύρεση πληροφοριών της εταιρείας... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} συμπαίκτ{P ης ες} είναι πριν από σας STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} κατέβηκαν μέχρι τώρα STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} κατέβηκαν μέχρι τώρα STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Αποσύνδεση STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Η πρόσβαση στον διακομιστή προστατεύεται. Εισάγετε τον κωδικό STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Η εταιρεία προστατεύεται από κωδικό. Εισάγετε κωδικό # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Λίστα συμμετεχόντων STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Παρακολούθηση STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Νέα εταιρεία # Network client list STR_NETWORK_CLIENTLIST_KICK :Εκδίωξη STR_NETWORK_CLIENTLIST_BAN :Απαγόρευση STR_NETWORK_CLIENTLIST_GIVE_MONEY :Δώστε χρήματα STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Μιλήστε σε όλους STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Μιλήστε στην εταιρεία STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Προσωπικό μήνυμα STR_NETWORK_SERVER :Διακομιστής STR_NETWORK_CLIENT :Πελάτης STR_NETWORK_SPECTATORS :Θεατές STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Εισάγετε το πόσο των χρημάτων που θέλετε να δώσετε # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Να μην αποθηκευτεί ο κωδικός STR_COMPANY_PASSWORD_OK :{BLACK}Δώστε στην εταιρεία νέο κωδικό STR_COMPANY_PASSWORD_CAPTION :{WHITE}Κωδικός εταιρείας STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Προκαθορισμένος κωδικός εταιρείας STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Χρήση αυτού του κωδικού ως προεπιλογή για τις νέες εταιρείες # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Συμμετοχή STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Συμμετάσχετε και παίξτε ως αυτήν την εταιρία STR_COMPANY_VIEW_PASSWORD :{BLACK}Κωδικός STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Προστατεύστε την εταιρεία με κωδικό ώστε να αποφύγετε την συμμετοχή ανεπιθύμητων παικτών STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Θέση του κωδικού της εταιρείας # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Αποστολή STR_NETWORK_CHAT_COMPANY_CAPTION :[Ομάδα] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Προσωπικό] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Όλοι] : STR_NETWORK_CHAT_COMPANY :[Ομάδα] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Ομάδα] Σε {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Προσωπικό] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Προσωπικό] Σε {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Όλοι] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Εισάγετε το κείμενο για δικτυακή συζήτηση # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Δεν βρέθηκε συσκευή δικτύου ή έγινε μεταγλώττιση χωρίς την παράμετρο ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Δεν βρέθηκε κάποιο δικτυακό παιχνίδι STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Ο διακομιστής δεν απάντησε στο αίτημα STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Απέτυχε η σύνδεση λόγο ασυμφωνίας NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Συγχρονισμός δικτυακού παιχνιδιού απέτυχε STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Χάθηκε η σύνδεση δικτυακού παιχνιδιού STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Δεν ήταν δυνατή η φόρτωση αποθηκευμένου παιχνιδιού STR_NETWORK_ERROR_SERVER_START :{WHITE}Δεν είναι δυνατή η εκκίνηση του διακομιστή STR_NETWORK_ERROR_CLIENT_START :{WHITE}Δεν ήταν δυνατή η σύνδεση STR_NETWORK_ERROR_TIMEOUT :{WHITE}Τελείωσε ο χρόνος της σύνδεσης #{NUM} STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Υπήρξε λάθος πρωτοκόλλου και η σύνδεση έκλεισε STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Η έκδοση του πελάτη δεν ταιριάζει με την έκδοση του διακομιστή STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Λανθασμένος κωδικός STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Ο διακομιστής είναι γεμάτος STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Έχει απαγορευτεί η είσοδος σας από τον διακομιστή STR_NETWORK_ERROR_KICKED :{WHITE}Έχετε εκδιωχθεί από το παιχνίδι STR_NETWORK_ERROR_CHEATER :{WHITE}Η χρήση cheats δεν επιτρέπεται σε αυτό το διακομιστή STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Αποστείλατε πάρα πολλές εντολές στον διακομιστή STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Χρειαστήκατε πολύ χρόνο για να συμπληρώσετε τον κωδικό STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ο υπολογιστής σας είναι πολύ αργός για να διατηρήσει συγχρόνιση με τον διακομιστή STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Ο υπολογιστής σας χρειάστηκε πολύ χρόνο για να κατεβάσει τον χάρτη STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Ο υπολογιστής σας χρειάστηκε πολύ χρόνο για να συνδεθεί με τον διακομιστή ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :γενικό πρόβλημα STR_NETWORK_ERROR_CLIENT_DESYNC :πρόβλημα συγχρονισμού STR_NETWORK_ERROR_CLIENT_SAVEGAME :δεν ήταν δυνατή η φόρτωση του χάρτη STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :η σύνδεση χάθηκε STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :λάθος πρωτοκόλλου STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :αναντιστοιχία NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :μη εξουσιοδοτημένοι STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :έγινε λήψη εσφαλμένου ή αναπάντεχου πακέτου STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :λάθος έκδοση STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :το όνομα είναι ήδη σε χρήση STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :λανθασμένος κωδικός STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :λάθος company-id στο DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :εκδιωχθήκατε από τον διακομιστή STR_NETWORK_ERROR_CLIENT_CHEATER :προσπάθησε να χρησιμοποιησει cheat STR_NETWORK_ERROR_CLIENT_SERVER_FULL :διακομιστής γεμάτος STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :έστελνε πάρα πολλές εντολές STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :δεν παραλήφθηκε κωδικός εντός του ορισμένου χρόνου STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :γενική λήξη χρονικού ορίου STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :η λήψη του χάρτη καθυστέρησε υπερβολικά STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :η επεξεργασία του χάρτη καθυστέρησε υπερβολικά ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Πιθανή απώλεια σύνδεσης STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}T{P 0 ο α} τελευταί{P 0 ο α} {NUM} δευτερόλεπτ{P ο α} δεν έχουν παραληφθεί καθόλου δεδομένα από τον διακομιστή # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Παιχνίδι σε παύση ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Παιχνίδι ακόμα σε παύση ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Παιχνίδι ακόμα σε παύση ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Συνεχίση παιχνιδιού ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :αριθμός παιχτών STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :σύνδεση πελατών STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :χειροκίνητο STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :δέσμη ενεργειών παιχνιδιού ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :αποχώρηση STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} συμμετέχει στο παιχνίδι STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} συμμετέχει στο παιχνίδι (Πελάτης #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} συμμετέχει στην εταιρία #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} συμμετέχει στους θεατές STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ξεκίνησε μια νέα εταιρία (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρησε από το παιχνίδι ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} άλλαξαν το όνομά τους σε {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} έδωσαν στην εταιρία σας {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Δώσατε {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Ο διακομιστής έκλεισε την συνεδρία STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Ο διακομιστής επανεκκινεί...{}Παρακαλώ περιμένετε... # Content downloading window STR_CONTENT_TITLE :{WHITE}Περιεχόμενο κατεβαίνει STR_CONTENT_TYPE_CAPTION :{BLACK}Τύπος STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Τύπος περιεχόμενου STR_CONTENT_NAME_CAPTION :{BLACK}Όνομα STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Το όνομα του περιεχομένου STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Κάντε κλικ σε μια γραμμή για να δείτε λεπτομέρειες{}Κάντε κλικ στο κουτάκι για το επιλέξετε για κατέβασμα STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Επιλογή όλων STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Μαρκάρισμα όλων των περιεχομένων για κατέβασμα STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Επιλέξτε αναβαθμίσεις STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Μαρκάρισμα όλων των περιεχόμενων που είναι για αναβάθμιση υπαρχόντων περιεχόμενων για κατέβασμα STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Αποεπιλογή όλων STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Σημείωση όλων των περιεχομένων να μην κατέβουν STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Αναζήτηση εξωτερικών ιστοσελίδων STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Ψάξτε για περιεχόμενο που δεν είναι διαθέσιμο μέσω την υπηρεσία λήψης περιεχομένου του OpenTTD σε ιστοσελίδες που δεν είναι συνδεδεμένες με το OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Φεύγετε από το OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Οι όροι και προϋποθέσεις για τη λήψη περιεχομένου από εξωτερικές ιστοσελίδες διαφέρουν.{}Θα πρέπει να αναφερθείτε στις εξωτερικές ιστοσελίδες για οδηγίες περί της εγκατάστασης του περιεχομένου στο OpenTTD.{}Θέλετε να συνεχίσετε; STR_CONTENT_FILTER_TITLE :{BLACK}Ετικέτα/όνομα φίλτρου: STR_CONTENT_OPEN_URL :{BLACK}Επισκεφθείτε την ιστοσελίδα STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Επισκεφθείτε την ιστοσελίδα αυτού του περιεχομένου STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Λήψη STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Έναρξη κατεβάσματος του επιλεγμένου περιεχόμενου STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Συνολικό μέγεθος λήψης: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}ΠΛΗΡΟΦΟΡΙΕΣ ΠΕΡΙΕΧΟΜΕΝΟΥ STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Δεν έχετε επιλέξει αυτό για λήψη STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Έχετε επιλέξει αυτό για λήψη STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Αυτή η εξάρτηση έχει επιλεχτεί για κατέβασμα STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Το έχετε ήδη αυτό STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Αυτό το περιεχόμενο είναι άγνωστο και δεν γίνεται να κατέβει από το OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Αυτό είναι αντικατάσταση ενός υπάρχοντος {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}Όνομα: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Έκδοση: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Περιγραφή: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}Σύνδεσμος: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Τύπος: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Μέγεθος λήψης: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Επιλεγμένο επειδή: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Εξαρτήσεις: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Ετικέτες: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}Το OpenTTD είναι κατασκευασμένο χωρίς υποστήριξη «zlib»... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... η λήψη περιεχομένου δεν είναι δυνατή! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Βασικά γραφικά STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :Βιβλιοθήκη AI STR_CONTENT_TYPE_SCENARIO :Σενάριο STR_CONTENT_TYPE_HEIGHTMAP :Χάρτης Υψομετρίας STR_CONTENT_TYPE_BASE_SOUNDS :Βασικοί ήχοι STR_CONTENT_TYPE_BASE_MUSIC :Βασική μουσική STR_CONTENT_TYPE_GAME_SCRIPT :Δέσμη ενεργειών παιχνιδιού STR_CONTENT_TYPE_GS_LIBRARY :Βιβλιοθήκη GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Λήψη περιεχόμενου... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Ζητούνται τα αρχεία... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Τώρα κατεβαίνει το {STRING} ({NUM} από {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Η λήψη ολοκληρώθηκε STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} από {BYTES} έχουν κατέβει ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Δεν μπορεί να γίνει η σύνδεση με τον διακομιστή περιεχομένου... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Το κατέβασμα απέτυχε... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... χάθηκε η σύνδεση STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... αρχείο μη εγγράψιμο STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Δεν μπορούσε να γίνει η αποσυμπίεση του κατεβασμένου αρχείου STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Λείπουν γραφικά STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Το OpenTTD απαιτεί γραφικά για να λειτουργήσει αλλά κανένα πακέτο δεν είναι διαθέσιμο. Θέλετε να επιτρέψετε στο OpenTTD να κατεβάσει και να εγκαταστήσει γραφικά; STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ναι, κατέβασε τα γραφικά STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Όχι, έξοδος από το OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Ρυθμίσεις Διαφάνειας STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις πινακίδες. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τα δέντρα. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τα σπίτια. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις βιομηχανίες. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για κτιζόμενα κτίρια όπως σταθμούς, αμαξοστάσια και σημεία καθοδήγησης. Ctrl+Κλικ για να την κλειδώσετε. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για γέφυρες. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για κτίρια όπως φάρους και κεραίες. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις συνδέσεις. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις ενδείξεις φόρτωσης. Ctrl+Κλικ για να την κλειδώσετε STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Επιλέξτε τα αντικείμενα που θα είναι αόρατα αντί για διάφανα # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Κάλυψη περιοχής STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ανενεργό STR_STATION_BUILD_COVERAGE_ON :{BLACK}Ενεργό STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Μη εμφάνιση κάλυψης του προτεινόμενου τόπου STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Εμφάνιση κάλυψης του προτεινόμενου τόπου STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Δέχεται: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Προμηθεύει : {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Συνένωση σταθμού STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Χτίστε ένα ξεχωριστό σταθμό STR_JOIN_WAYPOINT_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτίσιμο ενός ξεχωριστού σημείου καθοδήγησης # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Κατασκευή Σιδηρόδρομου STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Κατασκευή Ηλεκτροδοτημένου Σιδηρόδρομου STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Κατασκευή Μονοτρόχιου Σιδηρόδρομου STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Κατασκευή Σιδηροδρόμου Maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Κατασκευή σιδηρόδρομου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Κατασκευή σιδηροδρομικής γραμμής χρησιμοποιώντας την Αυτόματη Σιδηροτροχιά. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Κατασκευή αμαξοστάσιου (για αγορά και επισκευή τρένων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Μετατροπή σιδηροτροχιάς σε σημείο καθοδήγησης. Το Ctrl ενεργοποιεί συνένωση σημείων καθοδήγησης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Κατασκευή σταθμού τρένων. Το Ctrl ενεργοποιεί συνένωση σταθμών.Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Κατασκευή σηματοδοτών. Το Ctrl εναλλάσσει σηματοφόρους/σηματοδότες{}Το σύρσιμο κατασκευάζει σηματοδότες σε μια ευθεία σιδηροδρόμου. Το Ctrl κατασκευάζει μέχρι την επομένη διασταύρωση{}Το Ctrl+Κλικ εναλλάσσει το άνοιγμα του παραθύρου επιλογής σηματοδοτών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Κατασκευή γέφυρας σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Κατασκευή τούνελ σιδηρόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για σιδηρόδρομους, σηματοδότες, σημείων καθοδήγησης και σταθμών. Κρατώντας πατημένο το Ctrl αφαιρεί και τον σιδηρόδρομο από τα σημεία καθοδήγησης και σταθμούς STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Μετατροπή/Αναβάθμιση του τύπου γραμμής. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_RAIL_NAME_RAILROAD :Σιδηρόδρομος STR_RAIL_NAME_ELRAIL :Ηλεκτροδοτημένη σιδηροτροχιά STR_RAIL_NAME_MONORAIL :Μονοτρόχιος STR_RAIL_NAME_MAGLEV :Maglev # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Αμαξοστασίου STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Σημείο καθοδήγησης STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Επιλογή τύπου σημείου καθοδήγησης # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Επιλογή Σιδηροδρομικού Σταθμού STR_STATION_BUILD_ORIENTATION :{BLACK}Προσανατολισμός STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Επιλογή προσανατολισμού σιδηροδρομικού σταθμού STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Αριθμός γραμμών STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Επιλέξτε τον αριθμό πλατφορμών για το σιδηροδρομικό σταθμό STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Μήκος πλατφόρμας STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Επιλέξτε το μήκος του σιδηροδρομικού σταθμού STR_STATION_BUILD_DRAG_DROP :{BLACK}Σύρετε και Ελευθερώστε STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Φτιάξε ένα σταθμό χρησιμοποιώντας σύρσιμο και ελευθέρωση STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Επιλογή τύπου σταθμών για εμφάνιση STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Επιλέξτε τον τύπο του σταθμού προς κτίσιμο STR_STATION_CLASS_DFLT :Εξ ορισμού σταθμός STR_STATION_CLASS_WAYP :Σημείο καθοδηγήσης # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Επιλογή Σηματοδότη STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Σηματοδότες Τμήματος (σηματοφόρος){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να βρίσκεται σε κάθε τμήμα κάθε φορά STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Σηματοδότης-Εισόδου (σηματοφόρος){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες-εξόδου στο επόμενο τμήμα γράμμης. Αλλιώς δείχνει κόκκινο STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Σηματοδότης-Εξόδου (σηματοφόρος){}Συμπεριφέρεται με τον ίδιο τρόπο οπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να τεθεί το σωστό χρώμα στους προ-σηματοδότες είσοδου και συνδιασμένους STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Συνδυασμένος Σηματοδότης (σηματοφόρος){}Ο συνδυασμένος σηματοδότης απλά λειτουργεί ταυτόχρονα ως σηματοδότης εισόδου και εξόδου. Αυτό επιτρέπει το κτίσιμο μεγάλυτερων «δέντρων» με προ-σηματοδότες STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (σηματοφόρος){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Σηματοδότης Τμήματος (ηλεκτρικός){}Αυτός είναι ο πιο βασικός τύπος σηματοδότη, επιτρέποντας μόνο ένα τρένο να είναι στο ίδιο τμήμα την ίδια στιγμή. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Σηματοδότης Εισόδου (ηλεκτρικός){}Πράσινο όσο υπάρχει ένας ή περισσότεροι πράσινοι σηματοδότες εξόδου από το επόμενο τμήμα γραμμής. Αλλιώς είναι κόκκινο STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Σηματοδότης Εξόδου (ηλεκτρικός){}Συμπεριφέρεται με τον ίδιο τρόπο όπως οι σηματοδότες τμήματος αλλά είναι απαραίτητο να θέσει το σωστό χρώμα στους προ-σηματοδότες εισόδου και συνδυασμένους STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Συνδυασμένος Σηματοδότης (ηλεκτρικός){}Ο συνδυασμένος σηματοδότης δουλεύει απλά ως σηματοδότης εισόδου και εξόδου. Αυτό σας επιτρέπει το κτίσιμο μεγαλύτερων «δέντρων» με προ-σηματοδότες STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Κανονικοί σηματοδότες τροχιάς μπορούν να περαστούν από την πίσω πλευρά STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Μονόδρομος Σηματοδότης Τροχιάς (ηλεκτρικός){}Ένας σηματοδότης τροχιάς επιτρέπει σε περισσότερα από ένα τρένο να είναι σε ένα κομμάτι ελέγχου την ίδια στιγμή, εάν το τρένο μπορεί να δεσμεύσει τροχιά σε ασφαλές σημείο στάσης. Μονόδρομοι σηματοδότες τροχιάς δεν μπορούν να περαστούν από την πίσω πλευρά STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Μετατροπέας Σηματοδότη{}Όταν επιλέγεται, κάνοντας κλικ σε έναν υπάρχον σηματοδότη θα τον μετατρέψει στον επιλεγμένο τύπο και παραλλαγή σηματοδότη. Με Ctrl+Κλικ εναλλάσσεται με την υπάρχουσα παραλλαγή. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος μετατροπής STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Πυκνότητα σηματοδοτών με σύρσιμο STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Μείωση πυκνότητας σηματοδοτών με σύρσιμο STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Αύξηση πυκνότητας σηματοδοτών με σύρσιμο # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Επιλογή Γέφυρας STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Επιλογή Γέφυρας Δρόμου STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Επιλογή γέφυρας - κάντε κλικ στην γέφυρα της προτίμησής σας για κατασκευή STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Ατσάλινη, με Αναρτήσεις STR_BRIDGE_NAME_GIRDER_STEEL :Ατσάλινη, με Δοκούς STR_BRIDGE_NAME_CANTILEVER_STEEL :Ατσάλινη, Κρεμαστή STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Τσιμεντένια, με Αναρτήσεις STR_BRIDGE_NAME_WOODEN :Ξύλινη STR_BRIDGE_NAME_CONCRETE :Τσιμεντένια STR_BRIDGE_NAME_TUBULAR_STEEL :Ατσάλινη, Σωληνοειδής STR_BRIDGE_TUBULAR_SILICON :Σιλικόνη, Σωληνοειδής # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Δρόμου STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Κατασκευή Τροχιόδρομου STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Κατασκευή κομματιού δρόμου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Κατασκευή κομματιού τροχιοδρόμου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση τροχιόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Κατασκευή οδικού δικτύου με χρήση της λειτουργίας Αυτόματου Δρόμου. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Κατασκευή τροχιοδρόμου με χρήση της λειτουργίας Αυτόματης Γραμμής. Το Ctrl εναλλάσσει την κατασκευή/αφαίρεση τροχιόδρομου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων (για αγορά και επισκευή οχημάτων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Κατασκευή αμαξοστασίου οχημάτων τραμ (για αγορά και επισκευή οχημάτων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Κατασκευή σταθμού λεωφορείων. Το Ctrl ενεργοποιεί συνένωση σταθμών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Κατασκευή επιβατικού σταθμού τραμ. Το Ctrl ενεργοποιεί συνένωση επιβατικών σταθμών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Κατασκευή σταθμού φόρτωσης φορτηγών. Το Ctrl ενεργοποιεί συνένωση σταθμών φόρτωσης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Κατασκευή εμπορευματικού σταθμού τραμ. Το Ctrl ενεργοποιεί συνένωση εμπορευματικών σταθμών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ενεργοποίηση/Απενεργοποίηση μονόδρομων STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Κατασκευή γέφυρας δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Κατασκευή γέφυρας τροχιοδρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Κατασκευή τούνελ δρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Κατασκευή τούνελ τροχιοδρόμου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Εναλλαγή κατασκευής/αφαίρεσης για αυτοκινητόδρομους STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Εναλλαγή κτισίματος/αφαίρεσης της κατασκευής τροχιόδρομου # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Σταθμού Οχημάτων STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου οχημάτων STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Προσανατολισμός Αμαξοστασίου Τραμ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Επιλογή προσανατολισμού αμαξοστασίου τραμ # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Προσανατολισμός Στάσης Λεωφορείου STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό της στάσης των λεωφορείων STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Προσανατολισμός Σταθμού Φόρτωσης Φορτηγών STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του σταθμού φόρτωσης φορτηγών STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Επιβατικού Σταθμού Τραμ STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του επιβατικού σταθμού τραμ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Προσανατολισμός Εμπορευματικού Σταθμού Τραμ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του εμπορευματικού σταθμού τραμ # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Κατασκευή Καναλιού Νερού STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Κανάλια Νερού STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Κτίσιμο καναλιών. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Κατασκευή υδατοφράκτη. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Κατασκευάστε ναυπηγείο πλοίων (για αγορά και επισκευή πλοίων). Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Κατασκευή λιμένα πλοίων. Το Ctrl ενεργοποιεί συνένωση λιμένων. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Τοποθετήστε μια σημαδούρα που μπορεί να χρησιμοποιηθεί ως σημείο καθοδήγησης. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Κατασκευή καναλιού. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Προσδιορισμός θαλάσσιας επιφάνειας.{}Δημιουργία καναλιού, εκτός εάν το πλήκτρο Ctrl είναι κρατημένο στο επίπεδο της θάλασσας, όπου θα πλημμυρίσει τις παρακείμενες περιοχές STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Τοποθετήστε ποτάμια # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Προσανατολισμός Ναυπηγείου Πλοίων STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Επιλέξτε τον προσανατολισμό του ναυπηγείου πλοίων # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Λιμάνι # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Αεροδρόμια STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Κατασκευή αεροδρομίου. Το Ctrl ενεργοποιεί συνένωση αεροδρομίων. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Επιλογή Αεροδρομίου STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Επιλογή μεγέθους/τύπου αεροδρομίου STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Κατηγορία Αεροδρομίου STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Σχεδιασμός {NUM} STR_AIRPORT_SMALL :Μικρό STR_AIRPORT_CITY :Πόλης STR_AIRPORT_METRO :Μητροπολιτικό STR_AIRPORT_INTERNATIONAL :Διεθνές STR_AIRPORT_COMMUTER :Ταξιδιωτικό STR_AIRPORT_INTERCONTINENTAL :Διηπειρωτικό STR_AIRPORT_HELIPORT :Ελικοδρόμιο STR_AIRPORT_HELIDEPOT :Υπόστεγο Ελικοπτέρων STR_AIRPORT_HELISTATION :Σταθμός Ελικοπτέρων STR_AIRPORT_CLASS_SMALL :Μικρά αεροδρόμια STR_AIRPORT_CLASS_LARGE :Μεγάλα αεροδρόμια STR_AIRPORT_CLASS_HUB :Κομβικά αεροδρόμια STR_AIRPORT_CLASS_HELIPORTS :Ελικοδρόμια STR_STATION_BUILD_NOISE :{BLACK}Παραγόμενος θόρυβος: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Μορφοποίηση εδάφους STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Χαμηλώστε μια γωνία του εδάφους. Με σύρσιμο υποβαθμίζετε την πρώτη επιλεγμένη γωνία και ισοπεδώνετε την επιφάνεια στο νέο ύψος. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Ανυψώστε μια γωνία του εδάφους. Με σύρσιμο ανυψώνεται η πρώτη επιλεγμένη γωνία και ισοπεδώνεται η επιφάνεια στο νέο ύψος. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστος STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Ισοπέδωση της γης στο ύψος της πρώτης γωνίας. Με Ctrl επιλέγετε την επιφάνεια διαγώνια. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Αγορά γης για μελλοντική χρήση. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Επιλογή Αντικείμενου STR_OBJECT_BUILD_TOOLTIP :{BLACK}Επιλογή αντικείμενου για κατασκευή. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστος STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Επιλογή της κατηγορίας του αντικείμενου για κτίσιμο STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Προεπισκόπηση του αντικείμενου STR_OBJECT_BUILD_SIZE :{BLACK}Μέγεθος: {GOLD}{NUM} x {NUM} τετράγωνα STR_OBJECT_CLASS_LTHS :Φάροι STR_OBJECT_CLASS_TRNS :Αναμεταδότες # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Δέντρα STR_PLANT_TREE_TOOLTIP :{BLACK}Επιλέξτε τύπο δέντρου για φύτευση. Αν το τετραγωνίδιο έχει ήδη ένα δέντρο, αυτό θα προσθέσει περισσότερα δέντρα μεικτών τύπων ανεξάρτητα από τον επιλεγμένο τύπο STR_TREES_RANDOM_TYPE :{BLACK}Δέντρα τυχαίου τύπου STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Τοποθετήστε δέντρα τυχαίου τύπου. Το Shift εναλλάσσει κτίσιμο/εμφάνιση εκτίμησης κόστους STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Τυχαία Δέντρα STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Φυτέψτε δέντρα τυχαία στο έδαφος # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Δημιουργία Γης STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Τοποθέτηση πετρώδεις επιφανειών στο τοπίο STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Ορίστε περιοχή ερήμου.{}Κρατήστε πατημένο το Ctrl για να την αφαιρέσετε STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Αύξηση περιοχής για χαμήλωμα/ανύψωση εδάφους STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Μείωση περιοχής για χαμήλωμα/ανύψωση εδάφους STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Δημιουργία τυχαίου εδάφους STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Δημιουργία νέου σεναρίου STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Επαναφορά τοπίου STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Αφαίρεση όλων των ιδιοκτησιών παικτών από τον χάρτη STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Επαναφορά Τοπίου STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Είστε σίγουρος ότι θέλετε να αφαιρέσετε όλες τις ιδιοκτησίες παικτών; # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Δημιουργία Πόλης STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Νέα Πόλη STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Ίδρυση νέας πόλης. Με Shift+Κλικ εμφανίζεται μόνο το εκτιμώμενο κόστος STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Τυχαία Πόλη STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Ίδρυση πόλης σε τυχαία τοποθεσία STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Πολλές τυχαίες πόλεις STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Κάλυψη του χάρτη με τυχαία τοποθετημένες πόλεις STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Όνομα πόλης: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Εισάγετε το όνομα της πόλης STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Κλικ για να δώσετε το όνομα της πόλης STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Τυχαίο όνομα STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Δημιουργία ενός τυχαίου ονόματος STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Μέγεθος πόλης: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Μικρό STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Μεσαίο STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Μεγάλο STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Τυχαίο STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Επιλογή μεγέθους πόλης STR_FOUND_TOWN_CITY :{BLACK}Πόλη STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Οι πόλεις αναπτύσσονται ταχύτερα από τις απλές κωμοπόλεις{}Ανάλογα με τις ρυθμίσεις, είναι μεγαλύτερες όταν ιδρύονται STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Σχέδιο δρόμων πόλης STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Επιλογή σχεδίου δρόμων που χρησιμοποιείται για αυτή την πόλη STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Αρχικό STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Καλύτεροι δρόμοι STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Πλέγμα 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Πλέγμα 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Τυχαίο # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Χρηματοδότηση νέας βιομηχανίας STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Επιλέξτε την κατάλληλη βιομηχανία από την λίστα STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Πολλές τυχαίες βιομηχανίες STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Γέμισε τον χάρτη με τυχαία τοποθετημένες βιομηχανίες STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Κόστος: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Διερεύνηση STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Κατασκευή STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Χρηματοδότηση # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Αλυσίδα βιομηχανιών για τη βιομηχανία {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Αλυσίδα βιομηχανιών για το εμπόρευμα {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Βιομηχανίες που παράγουν STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Βιομηχανίες που δέχονται STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Σπιτιά STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Κάντε κλικ στη βιομηχανία για να δείτε τους προμηθευτές και τους πελάτες της STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Κάντε κλικ στο εμπόρευμα για να δείτε τους προμηθευτές και τους πελάτες STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Εμφάνιση αλυσίδας STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Εμφάνιση βιομηχανιών προμήθειας και αποδοχής για το εμπόρευμα STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Σύνδεση με το μικρό χάρτη STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Επιλογή των εμφανιζόμενων βιομηχανιών και στο μικρό χάρτη STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Επιλογή εμπορευμάτων STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Επιλέξτε το εμπόρευμα που θέλετε να εμφανίσετε STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Επιλογή βιομηχανίας STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Επιλέξτε τη βιομηχανία που θέλετε να εμφανίσετε # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Πληροφορίες Περιοχής Εδάφους STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Κόστος καθαρισμού: {LTBLUE}Μ/Δ STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Κόστος καθαρισμού: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Όφελος όταν καθαριστεί: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Μη Διαθέσιμο STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Ιδιοκτήτης: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Ιδιοκτήτης της οδούς: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ιδιοκτήτης του τροχιοδρόμου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Ιδιοκτήτης του σιδηροδρόμου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Τοπική αρχή: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Καμιά STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Συντεταγμένες: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Κατασκευή: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Κατηγορία σταθμού: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Τύπος σταθμού: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Κατηγορία αεροδρομίου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Όνομα αεροδρομίου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Όνομα αεροδρομίου: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Αποδεκτά εμπορεύματα: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Όριο ταχύτητας: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Πέτρες STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Ανώμαλο έδαφος STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Γυμνό έδαφος STR_LAI_CLEAR_DESCRIPTION_GRASS :Γρασίδι STR_LAI_CLEAR_DESCRIPTION_FIELDS :Χωράφια STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Χιονισμένο έδαφος STR_LAI_CLEAR_DESCRIPTION_DESERT :Έρημος STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} σιδηροτροχιά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} σιδηροτροχιά με σήματα τμήματος STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} σιδηροτροχιά με σήματα ειδοποίησης STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} σιδηροτροχιά με σήματα εξόδου STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} σιδηροτροχιά με συνδυαστικά σήματα STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} σιδηροτροχιά με σήματα διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} σιδηροτροχιά με σήματα μονόδρομους διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} σιδηροτροχιά με σήματα τμήματος και ειδοποίησης STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} σιδηροτροχιά με σήματα τμήματος και εξόδου STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} σιδηροτροχιά με σήματα τμήματος και συνδιαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} σιδηροτροχιά με σήματα τμήματος και διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} σιδηροτροχιά με σήματα τμήματος και μονόδρομους διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} σιδηροτροχιά με σήματα ειδοποίησης και εξόδου STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} σιδηροτροχιά με σήματα ειδοποίησης και συνδυαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} σιδηροτροχιά με σήματα ειδοποίησης και διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} σιδηροτροχιά με σήματα ειδοποίησης και μονόδρομους διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} σιδηροτροχιά με σήματα εξόδου και συνδυαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} σιδηροτροχιά με σήματα εξόδου και διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} σιδηροτροχιά με σήματα εξόδου και μονόδρομους διαδρομής STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} σιδηροτροχιά με σήματα διαδρομής και συνδυαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} σιδηροτροχιά σήματα μονόδρομους διαδρομής και συνδυαστικά STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} σιδηροτροχιά με σήματα διαδρομής και μονόδρομους διαδρομής STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} αμαξοστάσιο τρένων STR_LAI_ROAD_DESCRIPTION_ROAD :Δρόμος STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Δρόμος με φωτισμό STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Δρόμος με δέντρα STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Αμαξοστάσιο οχημάτων STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Διασταύρωση δρόμου/σιδηροτροχιάς STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Τροχιόδρομος # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (υπό κατασκευή) STR_LAI_TREE_NAME_TREES :Δέντρα STR_LAI_TREE_NAME_RAINFOREST :Τροπικό δάσος STR_LAI_TREE_NAME_CACTUS_PLANTS :Κάκτοι STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Σιδηροδρομικός σταθμός STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Υπόστεγο αεροσκαφών STR_LAI_STATION_DESCRIPTION_AIRPORT :Αεροδρόμιο STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Χώρος φόρτωσης φορτηγών STR_LAI_STATION_DESCRIPTION_BUS_STATION :Στάση λεωφορείων STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Αποβάθρα πλοίων STR_LAI_STATION_DESCRIPTION_BUOY :Σημαδούρα STR_LAI_STATION_DESCRIPTION_WAYPOINT :Σημείο καθοδηγήσης STR_LAI_WATER_DESCRIPTION_WATER :Νερό STR_LAI_WATER_DESCRIPTION_CANAL :Κανάλι STR_LAI_WATER_DESCRIPTION_LOCK :Κλείδωμα STR_LAI_WATER_DESCRIPTION_RIVER :Ποτάμι STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Ακτή ή όχθη ποταμού STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ναυπηγείο πλοίων # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Τούνελ σιδηρόδρομου STR_LAI_TUNNEL_DESCRIPTION_ROAD :Τούνελ δρόμου STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ατσάλινη σιδηροδρομική γέφυρα με αναρτήσεις STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ατσάλινη σιδηροδρομική γέφυρα με δοκούς STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ατσάλινη κρεμαστή σιδηροδρομική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Σιδηροδρομική γέφυρα από ενισχυμένο τσιμέντο STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Ξύλινη σιδηροδρομική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Τσιμεντένια σιδηροδρομική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Κυλινδρική σιδηροδρομική γέφυρα STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ατσάλινη γέφυρα δρόμου με αναρτήσεις STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ατσάλινη γέφυρα δρόμου με δοκούς STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ατσάλινη κρεμαστή γέφυρα δρόμου STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Γέφυρα δρόμου από ενισχυμένο τσιμέντο STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ξύλινη γέφυρα δρόμου STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Τσιμεντένια γέφυρα δρόμου STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Κυλινδρική γέφυρα δρόμου STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Κανάλι STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Αναμεταδότης STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Φάρος STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Κεντρικά γραφεία εταιρίας STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτησία γης από εταιρία # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Σχετικά με το OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Αρχικά Πνευματικά Δικαιώματα {COPYRIGHT} 1995 Chris Sawyer, Όλα τα δικαιώματα διατηρούνται STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Η ομάδα του OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού STR_SAVELOAD_LOAD_CAPTION :{WHITE}Φόρτωση Παιχνιδιού STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Αποθήκευση Σεναρίου STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Φόρτωση Σεναρίου STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Φόρτωση Χάρτη Υψομετρίας STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Αποθήκευση Χάρτη Υψομετρίας STR_SAVELOAD_HOME_BUTTON :{BLACK}Κάντε κλικ εδώ για να πάτε στον τρέχων φάκελο αποθήκευσης STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} ελεύθερα STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Λίστα δισκών, φακέλων και αποθηκευμένων παιχνιδιών STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Τρέχον επιλεγμένο όνομα για το αποθηκευμένο παιχνίδι STR_SAVELOAD_DELETE_BUTTON :{BLACK}Διαγραφή STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Διαγραφή του επιλεγμένου αποθηκευμένου παιχνιδιού STR_SAVELOAD_SAVE_BUTTON :{BLACK}Αποθήκευση STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Αποθήκευση παιχνιδιού, χρησιμοποιώντας το επιλεγμένο όνομα STR_SAVELOAD_LOAD_BUTTON :{BLACK}Φόρτωση STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Φόρτωση του επιλεγμένου παιχνιδιού STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Λεπτομέρειες Παιχνιδιού STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Δεν υπάρχουν πληροφορίες. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Δώστε το όνομα του αποθηκευμένου παιχνιδιού # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Δημιουργία Κόσμου STR_MAPGEN_MAPSIZE :{BLACK}Διάσταση χάρτη: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος του χάρτη σε τετραγωνίδια. Ο αριθμός των τετραγωνίδιων διαθέσιμα για κτίσιμο θα είναι λίγο χαμηλότερος STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθμός πόλεων: STR_MAPGEN_DATE :{BLACK}Ημερομηνία: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Αριθμός βιομηχανιών: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Ύψος γραμμής χιονιού: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα πάνω STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα κάτω STR_MAPGEN_RANDOM_SEED :{BLACK}Τυχαίος σπόρος: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Κάνετε κλικ για να δώσετε ένα σπόρο τυχαίας παραγωγής STR_MAPGEN_RANDOM :{BLACK}Τυχαίος STR_MAPGEN_RANDOM_HELP :{BLACK}Αλλαγή του σπόρου τυχαίας παραγωγής για την Δημιουργία Εδάφους STR_MAPGEN_LAND_GENERATOR :{BLACK}Δημιουργός εδάφους: STR_MAPGEN_TREE_PLACER :{BLACK}Αλγόριθμος δέντρων: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Τύπος εδάφους: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Επίπεδο θάλασσας: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Ποτάμια: STR_MAPGEN_SMOOTHNESS :{BLACK}Ομαλότητα: STR_MAPGEN_VARIETY :{BLACK}Διανομή ποικιλομορφίας: STR_MAPGEN_GENERATE :{WHITE}Δημιουργία # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Άκρες χάρτη: STR_MAPGEN_NORTHWEST :{BLACK}Βορειοδυτικά STR_MAPGEN_NORTHEAST :{BLACK}Βορειοανατολικά STR_MAPGEN_SOUTHEAST :{BLACK}Νοτιοανατολικά STR_MAPGEN_SOUTHWEST :{BLACK}Νοτιοδυτικά STR_MAPGEN_BORDER_FREEFORM :{BLACK}Ελεύθερη μορφή STR_MAPGEN_BORDER_WATER :{BLACK}Νερό STR_MAPGEN_BORDER_RANDOM :{BLACK}Τυχαία STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Τυχαία STR_MAPGEN_BORDER_MANUAL :{BLACK}Χειροκίνητος STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Περιστροφή χάρτη υψομετρίας: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Όνομα χάρτη υψομετρίας: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Μέγεθος: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Δώστε έναν σπόρο τυχαίας παραγωγής STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Άλλαγη του ύψους της γράμμης χιονιού STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Αλλαγή έτους έναρξης # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Τύπος Σεναρίου STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Επίπεδο έδαφος STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Δημιουργία επίπεδου εδάφους STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Τυχαίο έδαφος STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Ύψος επίπεδης γης: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους ένα κάτω STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Μετακίνηση του ύψους του επίπεδου εδάφους ένα πάνω STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Αλλαγή του ύψους του επίπεδου εδαφους # Map generation progress STR_GENERATION_WORLD :{WHITE}Δημιουργία Κόσμου... STR_GENERATION_ABORT :{BLACK}Ματαίωση STR_GENERATION_ABORT_CAPTION :{WHITE}Ακύρωση της Δημιουργίας Κόσμου STR_GENERATION_ABORT_MESSAGE :{YELLOW}Σίγουρα θέλετε να ακυρώσετε τη δημιουργία; STR_GENERATION_PROGRESS :{WHITE}{NUM}% ολοκληρώθηκε STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Δημιουργία κόσμου STR_GENERATION_RIVER_GENERATION :{BLACK}Δημιουργία ποταμού STR_GENERATION_TREE_GENERATION :{BLACK}Δημιουργία δέντρων STR_GENERATION_OBJECT_GENERATION :{BLACK}Δημιουργία μη μετακινούμενων STR_GENERATION_CLEARING_TILES :{BLACK}Δημιουργία άγριας και πετρώδης περιοχής STR_GENERATION_SETTINGUP_GAME :{BLACK}Ρύθμιση παιχνιδιού STR_GENERATION_PREPARING_TILELOOP :{BLACK}Εκτέλεση βρόχου τετραγωνίδιων STR_GENERATION_PREPARING_SCRIPT :{BLACK}Τρέχουσα δέσμη ενεργειών STR_GENERATION_PREPARING_GAME :{BLACK}Προετοιμασία παιχνιδιού # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Ρυθμίσεις NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Λεπτομερείς πληροφορίες για το NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Ενεργά αρχεία NewGRF STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Ανενεργά αρχεία NewGRF STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Επιλογή προκαθορισμένου: STR_NEWGRF_FILTER_TITLE :{ORANGE}Φίλτρο: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Φόρτωση του προκαθορισμένου σετ ρυθμίσεων STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Αποθήκευση προκαθορισμένου STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Αποθήκευση της τρέχουσας λίστας ως προκαθορισμένη STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Δώστε ένα όνομα για το προκαθορισμένο σετ ρυθμίσεων STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Διαγραφή προκαθορισμένου STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Διαγράψτε το επιλεγμένο προκαθορισμένο σετ ρυθμίσεων STR_NEWGRF_SETTINGS_ADD :{BLACK}Προσθήκη STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Προσθέστε το επιλεγμένο αρχείο NewGRF στη διαμόρφωσή σας STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Ανίχνευση ξανά για αρχεία STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ανανέωση της λίστας με τα διαθέσιμα αρχεία NewGRF STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Αφαίρεση STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Αφαιρέστε το επιλεγμένο αρχείο NewGRF από τη λίστα STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Μετακίνηση Πάνω STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Μετακινήστε το επιλεγμένο αρχείο NewGRF πάνω στη λίστα STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Μετακίνηση Κάτω STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Μετακινήστε το επιλεγμένο αρχείο NewGRF κάτω στη λίστα STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Μία λίστα που περιέχει τα εγκατεστημένα αρχεία NewGRF STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Ρύθμιση παραμέτρων STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Εμφάνιση παραμέτρων STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Εναλλαγή παλέτας STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Εναλλάσσει την παλέτα του επιλεγμένου NewGRF.{}Κάντε αυτό όταν τα γραφικά από αυτό το NewGRF δείχνουν ροζ μέσα στο παιχνίδι STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Εφαρμογή αλλαγών STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Αναζήτηση για λείπων περιεχόμενο στο διαδίκτυο STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Έλεγχος για αν μπορεί να βρεθεί λείπων περιεχόμενο στο διαδίκτυο STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Όνομα αρχείου: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Έκδοση: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Ελάχ. συμβατή έκδοση: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Παλέτα: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Παράμετροι: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Δεν υπάρχουν διαθέσιμες πληροφορίες STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Δεν βρέθηκε το ταυτοποιημένο αρχείο STR_NEWGRF_SETTINGS_DISABLED :{RED}Απενεργοποιημένο STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Μη συμβατό με αυτήν την έκδοση του OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Αλλαγή παραμέτρων NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Κλείσιμο STR_NEWGRF_PARAMETERS_RESET :{BLACK}Επαναφορά STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Ρύθμιση όλων των παραμέτρων στις προεπιλεγμένες τιμές STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Παράμετρος {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Πλήθος παραμέτρων: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Επιθεώρηση - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Γονικό STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Επιθεώρηση του αντικείμενου του γονικού σκοπού STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} στο {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Αντικείμενο STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Τύπος σιδηροτροχιάς STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Μεταβλητή NewGRF 60+x παράμετρος (δεκαεξαδικό) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ευθυγράμμιση sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Επόμενο στοιχείο STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στο τέλος STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Μετακίνηση στο στοιχείο STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Μετακίνηση στο sprite. Εάν το sprite δεν είναι κανονικό sprite, συνεχίζει στο επόμενο κανονικό sprite STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Προηγούμενο στοιχείο STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Συνέχισε στο επόμενο κανονικό sprite, προσπερνώντας οποιοδήποτε ψευδό/επαναναχρωματιζόμενο/γραμματοσειράς sprite και κάνε τις τελικές διαδικασίες στην αρχή STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Επανεμφάνιση του επιλεγμένου sprite. Η ευθυγράμμιση αγνοείται όταν γίνεται η σχεδίαση του sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Μετακίνηση του sprite τριγύρω, αλλάζοντας τα στίγματα Χ και Υ STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Στίγμα Χ: {NUM}, Στίγμα Υ: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Επιλογή sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Επιλογή ενός sprite από οπουδήποτε στη οθόνη STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Μετακίνηση στο στοιχείο # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Προειδοποίηση: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Λάθος: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Καταστροφικό: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ένα καταστροφικό λάθος για τα NewGRF έχει συμβεί: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :Το {1:STRING} δεν θα δουλέψει με την έκδοση του TTDPatch όπως αναφέρεται από το OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :Το {1:STRING} είναι για την έκδοση {STRING} του TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} είναι σχεδιασμένο να δουλέψει με το {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Λάθος παράμετρος για το {1:STRING}: παράμετρος {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :Το {1:STRING} πρέπει να φορτωθεί πριν από το {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :Το {1:STRING} πρέπει να φορτωθεί μετά από το {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :Το {1:STRING} απαιτεί έκδοση OpenTTD {STRING} ή καλύτερη STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :το αρχείο GRF είναι σχεδιασμένο για να μεταφράζει STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Έχουν φορτωθεί πολλά NewGRF STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Η φόρτωση του {1:STRING} ως στατικό NewGRF με {STRING} μπορεί να προκαλέσει αποσυγχρονισμούς STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Απρόοπτο sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Άγνωστη ιδιότητα Action 0 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Προσπάθεια να χρησιμοποιήσει άκυρο ID (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} περιέχει ένα κατεστραμμένο sprite. Όλα τα κατεστραμμένα sprites θα εμφανίζονται ως κόκκινα ερωματικό (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Περιέχει πολλαπλές καταχωρήσεις Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Διάβασε πέρα από το τέλος του ψευδό-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Λείπουν μερικά sprites από το τρέχον βασικό σετ γραφικών.{}Παρακαλώ ενημερώστε το βασικό σετ γραφικών{}Επειδή παίζετε {YELLOW}μη σταθερή έκδοση του OpenTTD{WHITE}, μπορεί να χρειαστείτε {YELLOW}ασταθή έκδοση των βασικών γραφικών{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Οι ζητημένοι πόροι GRF δεν είναι διαθέσιμοι (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :Το {1:STRING} απενεργοποιήθηκε από το {2:STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Άγνωστη/άκυρη μορφή σχεδίου sprite (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Προσοχή! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Πρόκειται να κάνετε αλλαγές σε παιχνίδι που είναι ήδη σε εξέλιξη. Αυτό μπορεί να κλείσει απρόοπτα το OpenTTD ή να διαλύσει την κατάσταση του παιχνιδιού. Μην καταχωρείτε αναφορές σφάλματος για τέτοια προβλήματα.{}Είστε απόλυτα σίγουροι για αυτή την ενέργεια; STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Δεν μπορεί να γίνει η προσθήκη του αρχείου: διπλότυπο GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Δεν βρέθηκε ταυτοποιημένο αρχείο (φορτώθηκε συμβατό GRF) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Δεν μπορεί να προστεθεί το αρχείο: φτάσατε το όριο αρχείων NewGRF STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Φόρτωση συμβατού/ών GRF για χαμένα αρχεία STR_NEWGRF_DISABLED_WARNING :{WHITE}Απενεργοποιήθηκε/αν ανύπαρκτο/α αρχείο/α GRF STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Ανύπαρκτο/α αρχείο/α GRF STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Η συνέχιση μπορεί να κλείσει απρόοπτα το OpenTTD. Μη δώσετε αναφορές σφαλμάτων για κλεισίματα.{}Θέλετε πραγματικά να συνεχίσετε την λειτουργία; # NewGRF status STR_NEWGRF_LIST_NONE :Κανένα STR_NEWGRF_LIST_ALL_FOUND :Όλα τα αρχεία είναι παρόντα STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Βρέθηκαν συμβατά αρχεία STR_NEWGRF_LIST_MISSING :{RED}Λείπουν αρχεία # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Η συμπεριφορά του NewGRF «{0:STRING}» είναι πιθανό να προκαλέσει αποσυγχρονισμούς ή/και απρόοπτα κλεισίματα STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Άλλαξε την κατάσταση *** για «{1:ENGINE}» όταν δεν είναι μέσα σε αμαξοστάσιο STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Άλλαξε το μήκος του οχήματος «{1:ENGINE}» ενώ δεν βρισκόταν μέσα σε αμαξοστάσιο STR_BROKEN_VEHICLE_LENGTH :{WHITE}Το τρένο «{VEHICLE}» που ανήκει στην εταιρία «{COMPANY}» έχει μη έγκυρο μήκος. Πιθανόν να προέρχεται από προβλήματα με NewGRF. Το παιχνίδι μπορεί να αποσυγχρονιστεί ή να κλείσει απρόοπτα. STR_NEWGRF_BUGGY :{WHITE}Το NewGRF «{0:STRING}» δίνει λάθος πληροφορίες STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Η πληροφορία εμπορεύματος/μετατροπής για το «{1:ENGINE}» διαφέρει από τη λίστα αγοράς μετά την κατασκευή. Αυτό μπορεί να προκαλέσει την αποτυχία της αυτόματης ανανέωσης/αντικατάστασης για σωστή μετατροπή STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Το «{1:STRING}» προκάλεσε ένα ατέρμονο βρόχο στην κλήση παραγωγής STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Η κλήση {1:HEX} επέστρεψε άγνωστο/άκυρο αποτέλεσμα {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<μη έγκυρο φορτίο> STR_NEWGRF_INVALID_CARGO_ABBREV :;; STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <μη έγκυρου φορτίου> STR_NEWGRF_INVALID_ENGINE :<μη έγκυρο μοντέλο μηχανής> STR_NEWGRF_INVALID_INDUSTRYTYPE :<μη έγκυρη βιομηχανία> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Σαρώνονται ΝewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Σαρώνονται τα NewGRF. Ανάλογα με το μέγεθος, αυτό μπορεί να απαιτήσει κάποιο χρόνο... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF σαρώθηκαν από {NUM} υπολογισμένα NewGRF STR_NEWGRF_SCAN_ARCHIVES :Σάρωση για αρχεία # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Λίστα Πινακίδων - {COMMA} Πινακίδ{P α ες} STR_SIGN_LIST_MATCH_CASE :{BLACK}Αντιστοίχιση πεζών/κεφαλαίων STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Εναλλαγή ταύτισης μεγέθους κατά τη σύγκρισης ονομάτων πινακίδων με τον όρο φιλτραρισμού # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Επεξεργασία κειμένου πινακίδας STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Μετάβαση στην επόμενη πινακίδα STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Μετάβαση στη προηγούμενη πινακίδα STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Δώστε ένα όνομα για την πινακίδα # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Πόλεις STR_TOWN_DIRECTORY_NONE :{ORANGE}- Τίποτα - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ονόματα πόλεων - κάνετε κλικ στο όνομα για να κεντράρετε την εικόνα στην πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης STR_TOWN_POPULATION :{BLACK}Παγκόσμιος πληθυσμός: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Πόλη) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Πληθυσμός: {ORANGE}{COMMA}{BLACK} Σπίτια: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Επιβάτες τον προηγούμενο μήνα: {ORANGE}{COMMA}{BLACK} μεγ: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Αλληλογραφία τον προηγούμενο μήνα: {ORANGE}{COMMA}{BLACK} μεγ: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Εμπορεύματα που χρειάζονται για την επέκταση της πόλης: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} απαιτείται STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} απαιτείται τον χειμώνα STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} παραδόθηκε STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (ακόμη απαιτείται) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (παραδόθηκε) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK} ημέρ{P α ες} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Η πόλη επεκτείνεται κάθε {ORANGE}{COMMA}{BLACK} ημέρ{P α ες} (χρηματοδοτούμενη) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Η πόλη {RED}δεν{BLACK} επεκτείνεται STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Επίπεδο θορύβου στη πόλη: {ORANGE}{COMMA}{BLACK} μέγιστο: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία της πόλης. Το Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Τοπική αρχή STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Εμφάνιση πληροφοριών για την τοπική αρχή STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος της πόλης STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Επέκταση STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Αύξηση μεγέθους της πόλης STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Διαγραφή STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Διαγραφή της πόλης ολοκληρωτικά STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Μετονομασία Πόλης # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Τοπική αρχή της πόλης {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Ποσοστά εταιρίας μεταφορών: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Διαθέσιμες πράξεις: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Λίστα πραγμάτων που πρέπει να γίνουν σε αυτήν την πόλη - κάντε κλικ στο αντικείμενο για πληροφορίες STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Κάντε το STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Διενέργεια της επιλεγμένης πράξης στην παραπάνω λίστα STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Μικρή διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Μεσαία διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Μεγάλη διαφημιστική καμπάνια STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Επιχορήγηση ανακατασκευής τοπικού οδικού δικτύου STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Κτίσιμο αγάλματος του ιδιοκτήτη της εταιρίας STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Επιχορήγηση νέων κτιρίων STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Αγορά αποκλειστικών δικαιωμάτων μεταφοράς STR_LOCAL_AUTHORITY_ACTION_BRIBE :Δωροδοκήστε την τοπική αρχή STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Έναρξη μικρής τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Έναρξη μεσαίας τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Έναρξη μεγάλης τοπικής διαφημιστικής καμπάνιας, για να προσελκύσετε περισσότερους επιβάτες και εμπορεύματα στις μεταφορικές σας υπηρεσίες.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Επιχορηγήστε την ανακατασκευή του τοπικού οδικού δικτύου. Προκαλεί σοβαρή ενόχληση στην τοπικό οδικό δίκτυο για έως 6 μήνες.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Χτίστε ένα άγαλμα προς τιμήν της εταιρίας σας.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Χρηματοδοτήστε την κατασκευή νέων εμπορικών κτιρίων στην πόλη.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Αγορά αποκλειστικών δικαιωμάτων διάρκειας ενός χρόνου για αυτήν την πόλη. Η τοπική αρχή θα επιτρέπει στους επιβάτες και τα φορτία να χρησιμοποιούν μόνο τους σταθμούς της εταιρίας σας.{} Κόστος: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Δωροδοκήστε τις τοπικές αρχές για να αυξήσετε τα ποσοστά σας, με ρίσκο ένα μεγάλο πρόστιμο εάν συλληφθείτε.{}Κόστος: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Στόχοι STR_GOALS_GLOBAL_TITLE :{BLACK}Καθολικοί στόχοι: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Κανένας - STR_GOALS_COMPANY_TITLE :{BLACK}Εταιρικοί στόχοι: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στον στόχο για να επικεντρωθεί η οθόνη στη βιομηχανία/πόλη/τετραγωνίδιο. Με Ctrl+Κλικ ανοίγει το παράθυρο θέασης στην τοποθεσία της βιομηχανίας/πόλης/τετραγωνίδιου # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Ερώτηση STR_GOAL_QUESTION_CAPTION_INFORMATION :Πληροφορίες STR_GOAL_QUESTION_CAPTION_WARNING :Προειδοποίηση STR_GOAL_QUESTION_CAPTION_ERROR :Σφάλμα ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Ακύρωση STR_GOAL_QUESTION_BUTTON_OK :Εντάξει STR_GOAL_QUESTION_BUTTON_NO :Όχι STR_GOAL_QUESTION_BUTTON_YES :Ναι STR_GOAL_QUESTION_BUTTON_DECLINE :Απόρριψη STR_GOAL_QUESTION_BUTTON_ACCEPT :Αποδοχή STR_GOAL_QUESTION_BUTTON_IGNORE :Αγνόηση STR_GOAL_QUESTION_BUTTON_RETRY :Επανάληψη STR_GOAL_QUESTION_BUTTON_PREVIOUS :Προηγούμενο STR_GOAL_QUESTION_BUTTON_NEXT :Επόμενο STR_GOAL_QUESTION_BUTTON_STOP :Τερματισμός STR_GOAL_QUESTION_BUTTON_START :Έναρξη STR_GOAL_QUESTION_BUTTON_GO :Έναρξη STR_GOAL_QUESTION_BUTTON_CONTINUE :Συνέχιση STR_GOAL_QUESTION_BUTTON_RESTART :Επανεκκίνιση STR_GOAL_QUESTION_BUTTON_POSTPONE :Αναβολή STR_GOAL_QUESTION_BUTTON_SURRENDER :Παράδοση STR_GOAL_QUESTION_BUTTON_CLOSE :Κλείσιμο # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Χρηματοδοτήσεις STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Τρέχουσες χρηματοδοτήσεις για ανάληψη υπηρεσιών: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} από {STRING} προς {STRING}{YELLOW} (έως τις {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Καμία - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Υπηρεσίες που έχουν χρηματοδοτηθεί: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} από τον σταθμό {STRING} προς τον σταθμό {STRING}{YELLOW} ({COMPANY}{YELLOW}, έως τις {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στην υπηρεσία για κεντράρισμα στην βιομηχανία/πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας/πόλης # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Ονόματα σταθμών - κάνετε κλικ στο όνομα για κεντράρισμα στο σταθμό. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σταθμού STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Κρατήστε πατημένο το Ctrl για να επιλέξετε περισσότερα από ένα αντικείμενα STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Σταθμ{P ός οί} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Κανένας - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Επιλογή όλων των εγκαταστάσεων STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Επιλογή όλων των τύπων φορτίου (συμπεριλαμβανομένου φορτίου μη-αναμονής) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Κανένα εμπόρευμα κανενός τύπου δεν περιμένει # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Αναμονή: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} από μεταφορά από τον σταθμό {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Δέχεται STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Εμφάνιση λίστας αποδεκτών φορτίων STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Δέχεται: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Αυτός ο σταθμός έχει αποκλειστικά δικαιώματα μεταφοράς σε αυτήν την πόλη. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} αγόρασε αποκλειστικά δικαιώματα για αυτήν την πόλη. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Βαθμολογίες STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Εμφάνιση στατιστικών σταθμού STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Τοπική βαθμολογία υπηρεσίας μεταφοράς: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Απαίσια STR_CARGO_RATING_VERY_POOR :Πολύ Κακή STR_CARGO_RATING_POOR :Κακή STR_CARGO_RATING_MEDIOCRE :Μέτρια STR_CARGO_RATING_GOOD :Καλή STR_CARGO_RATING_VERY_GOOD :Πολύ Καλή STR_CARGO_RATING_EXCELLENT :Εξαιρετική STR_CARGO_RATING_OUTSTANDING :Καταπληκτική ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα εικόνας στην τοποθεσία του σταθμού. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σταθμού STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Αλλαγή ονόματος του σταθμού STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Εμφάνιση όλων των τρένων που έχουν αυτό τον σταθμό στο δρομολόγιό τους STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Εμφάνιση όλων των οχημάτων που έχουν αυτόν τον σταθμό στο δρομολόγιό τους STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Εμφάνιση όλων των αεροσκαφών που έχουν αυτόν τον σταθμό στο δρομολόγιό τους STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Εμφάνιση όλων των πλοίων που έχουν αυτόν τον σταθμό στο δρομολόγιό τους STR_STATION_VIEW_RENAME_STATION_CAPTION :Μετονομασία περιοχής σταθμού/φόρτωσης STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Κλείσιμο αεροδρομίου STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Αποτροπή προσγείωσης αεροσκαφών σε αυτό το αεροδρόμιο # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του σημείου καθοδήγησης. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σημείου καθοδήγησης STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Αλλαγή του ονόματος του σημείου καθοδήγησης STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία της σημαδούρας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της σημαδούρας STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Αλλαγή ονόματος σημαδούρας STR_EDIT_WAYPOINT_NAME :{WHITE}Διαμόρφωση ονόματος σημείου καθοδήγησης # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Οικονομικά {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Έξοδα/Έσοδα STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Κατασκευές STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Νέα Οχήματα STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Τραίνων STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Οχημάτων STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Αεροσκαφών STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Πλοίων STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Συντήρηση Ιδιοκτησίας STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Έσοδα Τρένων STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Έσοδα Οχημάτων STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Έσοδα Αεροσκαφών STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Έσοδα Πλοίων STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Τόκοι Δανείου STR_FINANCES_SECTION_OTHER :{GOLD}Άλλα STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Σύνολο: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Υπόλοιπο Τραπέζης STR_FINANCES_LOAN_TITLE :{WHITE}Δάνειο STR_FINANCES_MAX_LOAN :{WHITE}Μέγιστο Δάνειο: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Δανεισμός {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Αύξηση του ποσού του δανείου. Πατήστε Ctrl+Κλικ για να δανειστείτε όσο περισσότερο γίνεται STR_FINANCES_REPAY_BUTTON :{BLACK}Αποπληρωμή {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Αποπληρωμή μέρους του δανείου. Με Ctrl+Κλικ αποπληρώνετε όσο περισσότερο γίνεται STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Υποδομή # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Διευθυντής) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Ίδρυση: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Χρωματισμός: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Οχήματα: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} τρέν{P ο α} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} {P όχημα οχήματα} δρόμου STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} αεροσκάφ{P ος η} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} πλοί{P ο α} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Κανένα STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Αξία εταιρίας: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% είναι ιδιοκτησία της {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Υποδομή: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} κομμάτι{P "" α} σιδηροτροχιάς STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} κομμάτι{P "" α} δρόμου STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} τετραγωνίδι{P ο α} νερού STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} τετραγωνίδι{P ο α} σταθμού STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} αεροδρόμι{P ο α} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Τίποτα STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Κτίσιμο Αρχηγείου STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Κτίσιμο αρχηγείου εταιρίας STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Προβολή Αρχηγείου STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Προβολή αρχηγείου εταιρίας STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Ανοικοδόμηση Αρχηγείου STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Εποικοδόμηση της έδρας της εταιρίας σε άλλο μέρος, με κόστος το 1% της αξίας της εταιρίας. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς επανατοποθέτηση της έδρας STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Λεπτομέρειες STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Προβολή λεπτομερούς μέτρησης υποδομών STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Νέο Πρόσωπο STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Επιλογή νέου προσώπου διευθυντή STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Χρωματισμός STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Αλλαγή της εμφάνισης των οχημάτων της εταιρίας STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Όνομα Εταιρίας STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος της εταιρίας STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Όνομα Διευθυντή STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Αλλαγή του ονόματος του διευθυντή STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Αγορά μεριδίου 25% της εταιρία STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Πώληση μεριδίου 25% της εταιρίας STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Αγορά μεριδίου 25% σε αυτήν την εταιρεία. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς την αγορά μετοχών STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Πώληση μεριδίου 25% της εταιρίας. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κέρδος χωρίς την πώληση μετοχών STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Όνομα Εταιρίας STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Όνομα Διευθυντή STR_BUY_COMPANY_MESSAGE :{WHITE}Ψάχνουμε μία εταιρία μεταφορών για να εξαγοράσει την εταιρία μας.{}{}Θέλετε να εξαγοράσετε την {COMPANY} για {CURRENCY_LONG}; # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Υποδομή της {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Κομμάτια σιδηροτροχιάς: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Σήματα STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Κομμάτια δρόμου: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Δρόμος STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Τροχιόδρομος STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Τετραγωνίδια νερού: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Κανάλια STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Σταθμοί: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Τετραγωνίδια σταθμού STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Αεροδρόμια STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/έτος ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/έτος # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Βιομηχανίες STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Τίποτα - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% μεταφέρθηκαν) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% μεταφέρθηκαν) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ονόματα βιομηχανιών - κάνετε κλικ στο όνομα για κεντράρισμα στην βιομηχανία. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Παραγωγή προηγούμενου μήνα: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% μεταφέρθηκαν) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα εικόνας στην περιοχή της βιομηχανίας. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην περιοχή της βιομηχανίας STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Επίπεδο παραγωγής: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Εμπόρευματα σε αναμονή: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Αλλαγή παραγωγής (πολλαπλάσιο του 8, μέχρι το 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Αλλαγή του επιπέδου παραγωγής (ποσοστιαία, μέχρι το 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Τρέν{P ο α} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} {P Όχημα Οχήματα} δρόμου STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Πλοί{P ο α} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Αεροσκάφ{P ος η} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Τρένα - κάντε κλικ στο τρένο για πληροφορίες STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Οχήματα δρόμου - κάντε κλικ στο όχημα για πληροφορίες STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Πλοία - κάντε κλικ στο πλοίο για πληροφορίες STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Αεροσκάφη - κάντε κλικ στο αεροσκάφος για πληροφορίες STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Κέρδος αυτό το έτος: {CURRENCY_LONG} (προηγούμενο έτος: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Διαθέσιμα Τρένα STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Διαθέσιμα Οχήματα STR_VEHICLE_LIST_AVAILABLE_SHIPS :Διαθέσιμα Πλοία STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Διαθέσιμα Αεροσκάφη STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Προβολή λίστας διαθέσιμων σχεδίων μηχανών για αυτόν τον τύπο οχήματος STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Διαχείριση λίστας STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Στείλτε οδηγίες σε όλα τα οχήματα σε αυτήν τη λίστα STR_VEHICLE_LIST_REPLACE_VEHICLES :Αντικατάσταση οχημάτων STR_VEHICLE_LIST_SEND_FOR_SERVICING :Στείλτε για Επισκευή STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Στείλτε στο Υπόστεγο STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Στείλτε στο Αμαξοστάσιο STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Στείλε στο Ναυπηγείο STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Στείλε στο Υπόστεγο STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Κάντε κλικ για να σταματήσουν όλα τα οχήματα στη λίστα STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Κάντε κλικ για να ξεκινήσουν όλα τα οχήματα στη λίστα STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Κοινές εντολές {P 0 του των} {COMMA} {P Οχήματος Οχημάτων} # Group window STR_GROUP_ALL_TRAINS :Όλα τα τρένα STR_GROUP_ALL_ROAD_VEHICLES :Όλα τα οχήματα δρόμου STR_GROUP_ALL_SHIPS :Όλα τα πλοία STR_GROUP_ALL_AIRCRAFTS :Όλα τα αεροσκάφη STR_GROUP_DEFAULT_TRAINS :Μη ομαδοποιημένα τρένα STR_GROUP_DEFAULT_ROAD_VEHICLES :Μη ομαδοποιημένα οχήματα δρόμου STR_GROUP_DEFAULT_SHIPS :Μη ομαδοποιημένα πλοία STR_GROUP_DEFAULT_AIRCRAFTS :Μη ομαδοποιημένα αεροσκάφη STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Ομάδες - κάντε κλικ σε μία ομάδα για δείτε όλα τα οχήματα που της ανήκουν STR_GROUP_CREATE_TOOLTIP :{BLACK}Κάντε κλικ για δημιουργήσετε ομάδα STR_GROUP_DELETE_TOOLTIP :{BLACK}Διαγραφή της επιλεγμένης ομάδας STR_GROUP_RENAME_TOOLTIP :{BLACK}Μετονομασία της επιλεγμένης ομάδας STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Κάντε κλικ για προστατέψετε αυτήν την ομάδα από την γενική αυτόματη αντικατάσταση STR_GROUP_ADD_SHARED_VEHICLE :Προσθήκη κοινόχρηστων οχημάτων STR_GROUP_REMOVE_ALL_VEHICLES :Αφαίρεση όλων των οχημάτων STR_GROUP_RENAME_CAPTION :{BLACK}Μετονομασία μίας ομάδας # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Νέα Οχήματα Σιδηρόδρομου STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Νέα Οχήματα Ηλεκτροδοτουμένου Σιδηρόδρομου STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Νέα Οχήματα Μονοτρόχιου STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Νέα Οχήματα Maglev STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Νέα Οχήματα Σιδηρόδρομου STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Νέα Οχήματα Δρόμου STR_BUY_VEHICLE_SHIP_CAPTION :Νέα Πλοία STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Νέα Αεροσκάφη STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Κόστος: {GOLD}{CURRENCY_LONG}{BLACK} Βάρος: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ταχύτητα: {GOLD}{VELOCITY}{BLACK} Δύναμη κινητήρα: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Ταχύτητα: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ταχύτητα στον ωκεανό: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ταχύτητα σε κανάλι/ποταμό: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Λειτουργικό Κόστος: {GOLD}{CURRENCY_LONG}/χρ STR_PURCHASE_INFO_CAPACITY :{BLACK}Χωρητικότητα: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(μετατρέψιμο) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Έτος σχεδίασης: {GOLD}{NUM}{BLACK} Χρόνος ζωής: {GOLD}{COMMA} χρόν{P ο ια} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Μέγ. Αξιοπιστία: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Κόστος: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Βάρος: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Κόστος: {GOLD}{CURRENCY_LONG}{BLACK} Ταχύτητα: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Χωρητικότητα: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Ενισχυμένα Βαγόνια: {GOLD}+{POWER}{BLACK} Βάρος: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Μετατρέψιμο σε: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Όλοι οι τύποι εμπορεύματος STR_PURCHASE_INFO_ALL_BUT :Όλοι εκτός από {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Μέγ. Δύναμη Έλξης: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Εύρος: {GOLD}{COMMA} τετραγωνίδια STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων βαγονιών τρένων - κάντε κλικ σε ένα βαγόνι για πληροφορίες STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων οχήματα δρόμου - κάντε κλικ σε ένα όχημα για πληροφορίες STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων πλοίων - κάντε κλικ σε ένα πλοίο για πληροφορίες STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Λίστα επιλεγμένων αεροσκαφών - κάντε κλικ σε ένα αεροσκάφος για πληροφορίες STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Οχήματος STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Οχήματος STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Πλοίου STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Αγορά Αεροσκάφους STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Αγοράστε το επιλεγμένο όχημα τρένου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Αγοράστε το επιλεγμένο όχημα δρόμου. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Αγοράστε το επιλεγμένο πλοίο. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Αγοράστε το επιλεγμένο αεροσκάφος. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Μετονομασία STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Μετονομασία STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Μετονομασία STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Μετονομασία STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο οχήματος τρένου STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο οχήματος δρόμου STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο πλοίου STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Μετονομάζει τον τύπο αεροσκάφους STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Μετονομασία τύπου τρένου STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Μετονομασία τύπου οχήματος δρόμου STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Μετονομασία τύπου πλοίου STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Μετονομασία τύπου αεροσκάφους # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Αλλαγή του ονόματός του αμαξοστάσιου/ναυπηγείου STR_DEPOT_RENAME_DEPOT_CAPTION :Μετονομασία αμαξοστασίου/ναυπηγείου STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} {P όχημα οχήματα}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Τρένα - τραβήξτε ένα όχημα με αριστερό κλικ για να το προσθέστε/αφαιρέστε από ένα τρένο, δεξί κλικ για πληροφορίες. Κρατήστε πατημένο το Ctrl για να κάνετε και τις δυο λειτουργίες να ισχύσουν για τις ακόλουθες αλυσίδες STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Οχήματα δρόμου - δεξί κλικ σε ένα όχημα για πληροφορίες STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Πλοία - δεξί κλικ σε ένα πλοίο για πληροφορίες STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Αεροσκάφη - δεξί κλικ σε ένα αεροσκάφος για πληροφορίες STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Τραβήξτε το όχημα τρένου εδώ για να το πουλήσετε STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Τραβήξτε το όχημα δρόμου εδώ για να το πουλήσετε STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Τραβήξτε το πλοίο εδώ για να το πουλήσετε STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Τραβήξτε το αεροσκάφος εδώ για να το πουλήσετε STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Τραβήξτε τη μηχανή του τρένου εδώ για να πουληθεί ολόκληρο το τρένο STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Πουλήστε όλα τα τρένα στο αμαξοστάσιο STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Πουλήστε όλα τα οχήματα δρόμου στο αμαξοστάσιο STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Πουλήστε όλα τα πλοία στο ναυπηγείο STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Πουλήστε όλα τα αεροσκάφη στο υπόστεγο STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των τρένων στο αμαξοστάσιο STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των οχημάτων στο αμαξοστάσιο STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των πλοίων στο ναυπηγείο STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Αυτόματη αντικατάσταση όλων των αεροσκαφών του υποστέγου STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Νέα Τρένα/Βαγόνια STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Νέα Οχήματα STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Νέα Πλοία STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Νέα Αεροσκάφη STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου οχήματος τρένου STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου οχήματος δρόμου STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου πλοίου STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Αγορά νέου αεροσκάφους STR_DEPOT_CLONE_TRAIN :{BLACK}Κλωνοποίηση Τρένου STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Κλωνοποίηση Οχήματος STR_DEPOT_CLONE_SHIP :{BLACK}Κλωνοποίηση Πλοίου STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Κλωνοποίηση Αεροσκάφους STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του τρένου μαζί με τα όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τραίνο μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift +Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του οχήματος. Πατήστε αυτό το κουμπί και μετά σε κάποιο όχημα μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του πλοίου. Πατήστε αυτό το κουμπί και μετά σε κάποιο πλοίο μέσα ή έξω από το ναυπηγείο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του αεροσκάφους. Πατήστε αυτό το κουμπί και μετά σε κάποιο αεροσκάφος μέσα στο ή έξω από το υπόστεγο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του αμαξοστάσιου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του αμαξοστασίου STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του αμαξοστάσιου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του αμαξοστασίου STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του ναυπηγείου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του ναυπηγείου STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της εικόνας στην τοποθεσία του υπόστεγου. Με Ctrl+Κλικ ανοίγει νέο παράθυρο εμφάνισης στην τοποθεσία του υπόστεγου STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα τρένα με το επιλεγμένο αμαξοστάσιο στις εντολές τους STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα οχήματα δρόμου με το επιλεγμένο αμαξοστάσιο στις εντολές τους STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα πλοία με το επιλεγμένο ναυπηγείο στις εντολές τους STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Παίρνετε μια λίστα με όλα τα αεροσκάφη που έχουν οποιοδήποτε υπόστεγο αυτού του αεροδρομίου στις εντολές τους STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Κάντε κλικ για να σταματήσουν όλα τα τρένα μέσα στο αμαξοστάσιο STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Κάντε κλικ για να σταματήσουν όλα τα οχήματα μέσα στο αμαξοστάσιο STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Κάντε κλικ για να σταματήσουν όλα τα πλοία μέσα στο ναυπηγείο STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Κάντε κλικ για να σταματήσουν όλα τα αεροσκάφη μέσα στο υπόστεγο STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Κάντε κλικ για να ξεκινήσουν όλα τα τρένα μέσα στο αμαξοστάσιο STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Κάντε κλικ για να ξεκινήσουν όλα τα οχήματα μέσα στο αμαξοστάσιο STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Κάντε κλικ για να ξεκινήσουν όλα τα πλοία μέσα στο ναυπηγείο STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Κάντε κλικ για να ξεκινήσουν όλα τα αεροσκάφη μέσα στο υπόστεγο STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Πρόκειται να πουλήσετε όλα τα οχήματα στο αμαξοστάσιο. Είσαστε σίγουροι; # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Μήνυμα από κατασκευαστή οχημάτων STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Μόλις ολοκληρώσαμε την σχεδίαση {G ενός μίας ενός} {G νέου νέας νέου} {STRING.geniki} - θα ενδιαφερόσασταν για ενός έτους αποκλειστικής χρήσης αυτού του οχήματος, για να δούμε την απόδοση του πριν το κάνουμε ευρέως διαθέσιμο; STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}ατμομηχανή STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE.geniki :{G=f}ατμομηχανής STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}οχήματος δρόμου STR_ENGINE_PREVIEW_ROAD_VEHICLE.geniki :{G=n}Οχήματος δρόμου STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}αεροσκάφους STR_ENGINE_PREVIEW_AIRCRAFT.geniki :{G=n}αεροπλάνου STR_ENGINE_PREVIEW_SHIP :{G=n}πλοίου STR_ENGINE_PREVIEW_SHIP.geniki :{G=n}πλοιού STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}μηχανής μονοτρόχιου STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE.geniki :{G=f}μηχανής monorail STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}μηχανής maglev STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.geniki :{G=f}μηχανής maglev STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Δύναμη Κινητήρα: {POWER}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος{}Χωρητικότητα: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Δύναμη Κινητήρα: {POWER} Μεγ. Ε.Δ: {6:FORCE}{}Λειτουργικό Κόστος: {4:CURRENCY_LONG}/έτος{}Χωρητικότητα: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Αντικατάσταση {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Τρένο STR_REPLACE_VEHICLE_ROAD_VEHICLE :Όχημα Δρόμου STR_REPLACE_VEHICLE_SHIP :Πλοίο STR_REPLACE_VEHICLE_AIRCRAFT :Αεροσκάφος STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Επιλέξτε τον τύπο μηχανής για αντικατάσταση STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Επιλέξτε τον νέο τύπο μηχανής που θέλετε να χρησιμοποιηθεί στην θέση του επιλεγμένου τύπου μηχανής στα αριστερά STR_REPLACE_VEHICLES_START :{BLACK}Εκκίνηση Αντικατάστασης Οχημάτων STR_REPLACE_VEHICLES_NOW :Αντικατάσταση όλων των οχημάτων τώρα STR_REPLACE_VEHICLES_WHEN_OLD :Αντικατάσταση μόνο παλιών οχημάτων STR_REPLACE_HELP_START_BUTTON :{BLACK}Πατήστε για να ξεκινήσει η αντικατάσταση του αριστερά επιλεγμένου τύπου μηχανής με τον τύπο μηχανής επιλεγμένο δεξιά STR_REPLACE_NOT_REPLACING :{BLACK}Δεν γίνεται αντικατάσταση STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Δεν έχει επιλεχτεί όχημα STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} όταν είναι παλιό STR_REPLACE_VEHICLES_STOP :{BLACK}Διακοπή Αντικατάστασης Οχημάτων STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Πατήστε για να σταματήσει η αντικατάσταση του τύπου μηχανής επιλεγμένος στα αριστερά STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Αντικατάσταση: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Εναλλαγή μεταξύ των παραθύρων αντικατάστασης μηχανών και βαγονιών STR_REPLACE_ENGINES :Μηχανές STR_REPLACE_WAGONS :Βαγόνια STR_REPLACE_HELP_RAILTYPE :{BLACK}Επιλέξτε τον τύπο σιδηροδρόμου για τον οποίο θέλετε να γίνει η αντικατάσταση των μηχανών STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Εμφανίζει ποια μηχανή στα αριστερά θα αντικατασταθεί, εάν υπάρχει STR_REPLACE_RAIL_VEHICLES :Οχήματα Σιδηροδρόμου STR_REPLACE_ELRAIL_VEHICLES :Οχήματα Ηλεκτρικού Σιδηροδρόμου STR_REPLACE_MONORAIL_VEHICLES :Οχήματα Μονοτρόχιου STR_REPLACE_MAGLEV_VEHICLES :Οχήματα Maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Αφαίρεση βαγονιού: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Υποχρεώνει την αυτόματη αντικατάσταση να διατηρεί σταθερό το μήκος του τρένου αφαιρώντας βαγόνια (ξεκινώντας από μπροστά), όταν η αντικατάσταση της μηχανής κάνει το τρένο μεγαλύτερο # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του τρένου. Με Ctrl+Κλικ ακολουθεί το τρένο στην κύρια προβολή STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του οχήματος δρόμου. Με Ctrl+Κλικ ακολουθεί το όχημα στην κύρια προβολή STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στη τοποθεσία του πλοίου. Με Ctrl+Κλικ ακολουθεί το πλοίο στην κύρια προβολή STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Κεντράρισμα της κύριας προβολής στην τοποθεσία του αεροσκάφους. Με Ctrl+Κλικ ακολουθεί το αεροσκάφος στην κύρια προβολή STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το τρένο στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο επισκευή STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το όχημα στο αμαξοστάσιο. Με Ctrl+Κλικ κάνει μόνο επισκευή STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το πλοίο στο ναυπηγείο. Με Ctrl+Κλικ κάνει μόνο επισκευή STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Στέλνει το αεροσκάφος στο υπόστεγο. Με Ctrl+Κλικ κάνει μόνο επισκευή STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του τρένου μαζί με όλα τα βαγόνια. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς αγορά STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του οχήματος. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει αγορά STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του πλοίου. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει αγορά STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Αυτό θα αγοράσει αντίγραφο του αεροσκάφους. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει αγορά STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Αναγκάστε το τρένο να προχωρήσει χωρίς να περιμένει το σηματοδότη να το επιτρέψει STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Μετατροπή του τρένου για μεταφορά διαφορετικού φορτίου STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Μετατροπή οχήματος για να μεταφέρει διαφορετικό τύπο εμπορεύματος STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Μετατροπή του πλοίου για να μεταφέρει διαφορετικό τύπο εμπορεύματος STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Μετατροπή του αεροσκάφους για μεταφέρει διαφορετικό τύπο εμπορεύματος STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Αναστροφή κατεύθυνσης τρένου STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Εξανάγκαση του οχήματος να γυρίσει ανάποδα STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Εμφάνιση των εντολών του τρένου. Με Ctrl+Κλικ εμφανίζεται το δρομολόγιο του τρένου STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Εμφάνιση των εντολών του οχήματος. Με Ctrl+Κλικ εμφανίζεται το δρομολόγιο STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Εμφάνιση των εντολών του πλοίου. Με Ctrl+Κλικ εμφανίζεται το χρονοδιάγραμμα STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Εμφάνιση των εντολών του αεροσκάφους. Με Ctrl+Κλικ εμφανίζεται το χρονοδιάγραμμα STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών τρένου STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών οχήματος δρόμου STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών πλοίου STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Εμφάνιση λεπτομερειών αεροσκάφους STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια τρένου - κάντε κλικ εδώ για ξεκινήσετε/σταματήσετε το τρένο. Με Ctrl+Κλικ πηγαίνετε στον προορισμό STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια οχήματος - κάντε κλικ εδώ για ξεκινήσετε/σταματήσετε το όχημα. Με Ctrl+Κλικ πηγαίνετε στον προορισμό STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια πλοίου - κάντε κλικ εδώ για ξεκινήσετε/σταματήσετε το πλοίο. Με Ctrl+Κλικ πηγαίνετε στον προορισμό STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Τρέχουσα ενέργεια αεροσκάφους - κάντε κλικ εδώ για ξεκινήσετε/σταματήσετε το πλοίο. Με Ctrl+Κλικ πηγαίνετε στον προορισμό # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Φόρτωση / Ξεφόρτωση STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Αναχωρεί STR_VEHICLE_STATUS_CRASHED :{RED}Κατεστραμμένο! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Χαλασμένο STR_VEHICLE_STATUS_STOPPED :{RED}Σταματημένο STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Σταματάει, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Χωρίς ενέργεια κίνησης STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Αναμονή για ελεύθερη τροχιά STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Υπερβολικά μακριά από τον επόμενο προορισμό STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Πάει προς {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Δεν έχει εντολές, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Πορεία προς {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Κατεύθυνση για το {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Επισκευή στο {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Σταμάτησε STR_VEHICLE_COMMAND_STOPPED :{RED}Σταμάτησε STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Ξεκίνησε STR_VEHICLE_COMMAND_STARTED :{GREEN}Ξεκίνησε # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Λεπτομέρειες) STR_VEHICLE_NAME_BUTTON :{BLACK}Ονομασία STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Ονομασία τρένου STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Ονομασία οχήματος δρόμου STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Ονομασία πλοίου STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Ονομασία αεροσκάφους STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Ηλικία: {LTBLUE}{STRING}{BLACK} Λειτουργικό Κόστος: {LTBLUE}{CURRENCY_LONG}/έτος # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} χρόν{P ος ια} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} χρόν{P ος ια} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Εμβέλεια: {LTBLUE}{COMMA} τετραγωνίδια STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Μέγ. Ε.Δ: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Κέρδη αυτό το έτος: {LTBLUE}{CURRENCY_LONG} (προηγούμενου έτους: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Αξιοπιστία: {LTBLUE}{COMMA}% {BLACK}Καταρρεύσεις μετά από την τελευταία επισκευή: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Κατασκευή: {LTBLUE}{NUM}{BLACK} Αξία: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}Τίποτα{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Έσοδα μεταφοράς: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Διάστημα επισκευών: {LTBLUE}{COMMA}μέρες{BLACK} Τελευταία επισκευή: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Διάστημα επισκευών: {LTBLUE}{COMMA}%{BLACK} Τελευταία επισκευή: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Αύξηση διαστημάτων επισκευών κατά 10. Με Ctrl+Κλικ αυξάνονται τα διαστήματα ανάμεσα των επισκευών κατά 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Μείωση διαστημάτων επισκευών κατά 10. Με Ctrl+Κλικ μειώνεται τα διαστήματα επισκευών κατά 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Αλλάξτε τον τύπο διαστήματος επισκευών STR_VEHICLE_DETAILS_DEFAULT :Προκαθορισμένο STR_VEHICLE_DETAILS_DAYS :Ημέρες STR_VEHICLE_DETAILS_PERCENT :Ποσοστό STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Όνομα τρένου STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Όνομα οχήματος δρόμου STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Όνομα πλοίου STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Όνομα αεροσκάφους # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Κατασκευασμένο: {LTBLUE}{NUM}{BLACK} Αξία: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Αξία: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Συνολική χωρητικότητα φορτίου του τρένου: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Άδειο STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} από τον σταθμό {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} από τον σταθμό {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Φορτίο STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Παρουσίαση λεπτομερειών μεταφερόμενων εμπορευμάτων STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Πληροφορίες STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Εμφάνιση των λεπτομερειών των βαγονιών STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Χωρητικότητες STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Εμφάνιση της χωρητικότητας κάθε βαγονιού STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Συνολικό Φορτίο STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Εμφάνιση συνολικής χωρητικότητας του τρένου, διαχωρισμένη κατά τύπο εμπορεύματος STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Χωρητικότητα: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Μετατροπή) STR_REFIT_TITLE :{GOLD}Επιλέξτε τύπο εμπορεύματος για μεταφορά: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}{}{BLACK}Κόστος μετατροπής: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}{}{BLACK}Κέρδος από τη μετατροπή: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Κόστος μετατροπής: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Νέα χωρητικότητα: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Κέρδος από τη μετατροπή: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Επιλέξτε τα οχήματα για μετατροπή. Σύροντας με το ποντίκι επιτρέπει επιλογή πολλαπλών οχημάτων. Κάνοντας κλικ σε άδειο χώρο θα επιλέξει ολόκληρο το όχημα. Με Ctrl+Κλικ θα γίνει επιλογή του οχήματος και της επόμενης αλυσίδας STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Επιλέξτε τον τύπο εμπορεύματος που θα μεταφέρει το τρένο STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Επιλέξτε τον τύπο εμπορεύματος που θα μεταφέρει το όχημα STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Επιλέξτε τον τύπο εμπορεύματος που θα μεταφέρει το πλοίο STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Επιλέξτε τον τύπο εμπορεύματος που θα μεταφέρει το αεροσκάφος STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Μετατροπή τρένου STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Μετατροπή οχήματος STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Μετατροπή πλοίου STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Μετατροπή αεροσκάφους STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Μετατροπή του τρένου ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Μετατροπή του οχήματος ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Μετατροπή του πλοίου ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Μετατροπή του αεροσκάφους ώστε να μεταφέρει τον επιλεγμένο τύπο εμπορεύματος # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Εντολές) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Δρομολόγια STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Αλλαγή σε προβολή δρομολογίων STR_ORDERS_LIST_TOOLTIP :{BLACK}Λίστα εντολών - κάντε κλικ σε μια εντολή για να την επιλέξετε. Με Ctrl+Κλικ γίνεται μετακίνηση στον προορισμό της οδηγίας STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Τέλος Εντολών - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Τέλος Μοιρασμένων Οδηγιών - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Χωρίς στάση STR_ORDER_GO_TO :Πήγαινε στο STR_ORDER_GO_NON_STOP_TO :Πήγαινε χωρίς στάσεις στο STR_ORDER_GO_VIA :Πήγαινε μέσω STR_ORDER_GO_NON_STOP_VIA :Πήγαινε χωρίς στάσεις μέσω STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Αλλάξτε τη συμπεριφορά στάσης για την επιλεγμένη εντολή STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Πλήρης φόρτωση οποιουδήποτε εμπορεύματος STR_ORDER_DROP_LOAD_IF_POSSIBLE :Φόρτωση εάν υπάρχουν διαθέσιμα STR_ORDER_DROP_FULL_LOAD_ALL :Πλήρης φόρτωση όλων των εμπορευμάτων STR_ORDER_DROP_FULL_LOAD_ANY :Πλήρης φόρτωση οποιουδήποτε εμπορεύματος STR_ORDER_DROP_NO_LOADING :Δίχως φόρτωση STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Αλλάξτε τη συμπεριφορά φόρτωσης για την επιλεγμένη εντολή STR_ORDER_TOGGLE_UNLOAD :{BLACK}Ξεφόρτωμα όλων STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Ξεφόρτωμα εάν είναι αποδεκτά STR_ORDER_DROP_UNLOAD :Ξεφόρτωμα όλων STR_ORDER_DROP_TRANSFER :Μεταφορά STR_ORDER_DROP_NO_UNLOADING :Δίχως ξεφόρτωση STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Αλλάξτε τη συμπεριφορά ξεφόρτωσης για την επιλεγμένη εντολή STR_ORDER_REFIT :{BLACK}Μετατροπή STR_ORDER_REFIT_TOOLTIP :{BLACK}Επιλέξτε τον τύπο εμπορεύματος για μετατροπή σε αυτήν την εντολή. Με Ctrl+Κλικ αφαιρείται η εντολή μετατροπής STR_ORDER_REFIT_AUTO :{BLACK}Αυτόματη μετατροπή STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Επιλογή του τύπου φορτίου για αυτόματη μετατροπή σε αυτήν την εντολή. Με Ctrl+Κλικ αφαιρείται η εντολή μετατροπής. Η αυτόματη μετατροπή θα γίνεται μόνο όταν το επιτρέπει το όχημα STR_ORDER_DROP_REFIT_AUTO :Προκαθορισμένο φορτίο STR_ORDER_DROP_REFIT_AUTO_ANY :Διαθέσιμο φορτίο STR_ORDER_SERVICE :{BLACK}Επισκευή STR_ORDER_DROP_GO_ALWAYS_DEPOT :Πάντα πήγαινε STR_ORDER_DROP_SERVICE_DEPOT :Επισκευή εάν χρειάζεται STR_ORDER_DROP_HALT_DEPOT :Στάση STR_ORDER_SERVICE_TOOLTIP :{BLACK}Παράλειψη αυτής της εντολής εκτός αν χρειάζεται επισκευή STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Δεδομένα οχήματος για να γίνει άλμα # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :{G=n}Ποσοστό φόρτωσης STR_ORDER_CONDITIONAL_RELIABILITY :{G=f}Αξιοπιστία STR_ORDER_CONDITIONAL_MAX_SPEED :Μέγιστη ταχύτητα STR_ORDER_CONDITIONAL_AGE :{G=f}Ηλικία (χρόνια) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Απαιτεί επισκευή STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Πάντα STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Υπόλοιπη διάρκεια ζωής (χρόνια) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Πως να συγκρίνετε τα δεδομένα του οχήματος με την δοσμένη τιμή STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :είναι ίσο με STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :δεν είναι ίσο με STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :είναι μικρότερο από STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :είναι μικρότερο ή ίσο από STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :είναι περισσότερο από STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :είναι περισσότερο από ή ισο με STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :είναι αληθές STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :είναι ψευδές STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Η τιμή για να γίνει η σύγκριση με τα δεδομένα του οχήματος STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Δώστε τίμη για να συγκριθεί STR_ORDERS_SKIP_BUTTON :{BLACK}Παράκαμψη STR_ORDERS_SKIP_TOOLTIP :{BLACK}Παρακάμπτει την τρέχουσα εντολή και ξεκινά την επόμενη. Με Ctrl+Κλικ παρακάμπτεται η επιλεγμένη εντολή STR_ORDERS_DELETE_BUTTON :{BLACK}Διαγραφή STR_ORDERS_DELETE_TOOLTIP :{BLACK}Διαγραφή της επιλεγμένης εντολής STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Διαγραφή όλων των εντολών STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Διακοπή μοιράσματος STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Διακοπή μοιράσματος της λίστας εντολών. Με Ctrl+Κλικ διαγράφει επιπλέον όλες τις εντολές από αυτό το όχημα STR_ORDERS_GO_TO_BUTTON :{BLACK}Πήγαινε Στο STR_ORDER_GO_TO_NEAREST_DEPOT :Πήγαινε στο κοντινότερο αμαξοστάσιο STR_ORDER_GO_TO_NEAREST_HANGAR :Πήγαινε στο κοντινότερο υπόστεγο STR_ORDER_CONDITIONAL :Εκτέλεση εντόλης υπο προυπόθεση STR_ORDER_SHARE :Μοίρασμα εντολών STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Εισάγετε μια νέα εντολή πριν την επιλεγμένη ή προσθέστε στο τέλος της λίστας. Με Ctrl οι εντολές σταθμού γίνονται «πλήρης φόρτωση οποιουδήποτε εμπορεύματος», οι εντολές καθοδήγησης «χωρίς στάση» και οι εντολές αμαξοστασίου «επισκευή». Με «ίδιες εντολές» ή με Ctrl το όχημα θα έχει τις ίδιες εντολές με το επιλεγμένο. Πατώντας πάνω σε κάποιο όχημα αντιγράφονται οι εντολές από αυτό. Μια εντολή για αμαξοστάσιο απενεργοποιεί την αυτόματη επισκευή του οχήματος STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Εμφάνιση όλων των οχημάτων που μοιράζονται αυτό το δρομολόγιο # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Πήγαινε μέσω {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Πήγαινε χωρίς στάση μέσω {WAYPOINT} STR_ORDER_SERVICE_AT :Επισκευή στο STR_ORDER_SERVICE_NON_STOP_AT :Επισκευή χωρίς στάση στο STR_ORDER_NEAREST_DEPOT :το κοντινότερο STR_ORDER_NEAREST_HANGAR :το κοντινότερο Υπόστεγο STR_ORDER_TRAIN_DEPOT :Αμαξοστάσιο Τρένων STR_ORDER_ROAD_VEHICLE_DEPOT :Αμαξοστάσιο Οχημάτων STR_ORDER_SHIP_DEPOT :Ναυπηγείο Πλοίων STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Μετατροπή σε {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Μετατροπή σε {STRING} και στάση) STR_ORDER_STOP_ORDER :(Στάση) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Σιωπηρή) STR_ORDER_FULL_LOAD :(Πλήρης φόρτωση) STR_ORDER_FULL_LOAD_ANY :(Πλήρης φόρτωση οποιουδήποτε εμπορεύματος) STR_ORDER_NO_LOAD :(Χωρίς φόρτωση) STR_ORDER_UNLOAD :(Ξεφόρτωσε και πάρε φορτίο) STR_ORDER_UNLOAD_FULL_LOAD :(Ξεφόρτωμα και αναμονή για πλήρης φόρτωση) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Ξεφόρτωμα και αναμονή για πλήρης φόρτωση οποιουδήποτε) STR_ORDER_UNLOAD_NO_LOAD :(Ξεφόρτωμα και φύγε άδειο) STR_ORDER_TRANSFER :(Μεταφορά και πάρε φορτίο) STR_ORDER_TRANSFER_FULL_LOAD :(Μεταφορά και αναμονή για πλήρης φόρτωση) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Μεταφορά και αναμονή για πλήρης φόρτωση οποιοδήποτε φορτίου) STR_ORDER_TRANSFER_NO_LOAD :(Μεταφορά και φύγε άδειο) STR_ORDER_NO_UNLOAD :(Χωρίς ξεφόρτωμα και πάρε φορτίο) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Χωρίς ξεφόρτωμα και αναμονή για πλήρης φόρτωση) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Χωρίς ξεφόρτωμα και αναμονή για πλήρης φόρτωση οποιοδήποτε φορτίου) STR_ORDER_NO_UNLOAD_NO_LOAD :(Χωρίς ξεφόρτωμα και χωρίς φόρτωση) STR_ORDER_AUTO_REFIT :(Αυτόματη μετατροπή σε {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Πλήρης φόρτωση με αυτόματη μετατροπή σε {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Πλήρης φόρτωση οποιουδήποτε φορτίου με αυτόματη μετατροπή σε {STRING}) STR_ORDER_UNLOAD_REFIT :(Εκφόρτωση και λήψη φορτίου με αυτόματη μετατροπή σε {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Εκφόρτωση και αναμονή πλήρους φόρτωσης με αυτόματη μετατροπή σε {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Εκφόρτωση και αναμονή οποιασδήποτε πλήρους φόρτωσης με αυτόματη μετατροπή σε {STRING}) STR_ORDER_TRANSFER_REFIT :(Μεταφορά και λήψη φορτίου με αυτόματη μετατροπή σε {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Μεταφορά και αναμονή πλήρους φόρτωσης με αυτόματη μετατροπή σε {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Μεταφορά και αναμονή οποιασδήποτε πλήρους φόρτωσης με αυτόματη μετατροπή σε {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Δεν γίνεται εκφόρτωση και λαμβάνεται φορτίο με αυτόματη μετατροπή σε {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Δεν γίνεται εκφόρτωση και αναμένεται πλήρης φόρτωση με αυτόματη μετατροπή σε {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Δεν γίνεται εκφόρτωση και αναμένεται οποιοδήποτε φορτίο με αυτόματη μετατροπή σε {STRING}) STR_ORDER_AUTO_REFIT_ANY :διαθέσιμο φορτίο STR_ORDER_STOP_LOCATION_NEAR_END :[κοντινό άκρο] STR_ORDER_STOP_LOCATION_MIDDLE :[μέση] STR_ORDER_STOP_LOCATION_FAR_END :[μακρινό άκρο] STR_ORDER_OUT_OF_RANGE :{RED} (Ο επόμενος προορισμός είναι υπερβολικά μακριά) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Μετάβαση στην εντολή {COMMA} STR_ORDER_CONDITIONAL_NUM :Μετάβαση στην εντολή {COMMA} όταν {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Μετάβαση στην εντολή {COMMA} όταν {STRING} {STRING} STR_INVALID_ORDER :{RED} (Μη Έγκυρη Εντολή) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Δρομολόγια) STR_TIMETABLE_ORDER_VIEW :{BLACK}Εντολές STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Αλλαγή στην προβολή εντολών STR_TIMETABLE_TOOLTIP :{BLACK}Δρομολόγια - κάντε κλικ σε μια εντολή για την επιλέξετε STR_TIMETABLE_NO_TRAVEL :Μην ταξιδέψεις STR_TIMETABLE_NOT_TIMETABLEABLE :Ταξίδι (αυτόματα· με δρομολόγιο στην επόμενη μη αυτόματη εντολή) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Ταξίδεψε (όχι μεσώ δρομολογίου) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Ταξίδεψε με μέγιστη ταχύτητα {2:VELOCITY} (όχι στο δρομολόγιο) STR_TIMETABLE_TRAVEL_FOR :Ταξίδεψε για {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Ταξίδεψε για {STRING} με κατά περισσότερο {VELOCITY} STR_TIMETABLE_STAY_FOR :και μείνε για {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :και ταξίδεψε για {STRING} STR_TIMETABLE_DAYS :{COMMA} μέρ{P α ες} STR_TIMETABLE_TICKS :{COMMA} στιγμ{P ή ές} STR_TIMETABLE_TOTAL_TIME :{BLACK}Το δρομολόγιο αυτό θα χρειαστεί τουλάχιστον {STRING} για να ολοκληρωθεί STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Το δρομολόγιο αυτό θα χρειαστεί τουλάχιστον {STRING} για να ολοκληρωθεί (δεν είναι όλα τα χρονοδιαγράμματα) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Αυτό το όχημα πηγαίνει σύμφωνα με το δρομολόγιό του STR_TIMETABLE_STATUS_LATE :{BLACK}Αυτό το όχημα έχει καθυστερήσει κατά {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Το όχημα εκτελεί το δρομολόγιο του κατά {STRING} νωρίτερα STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Αυτό το δρομολόγιο ακόμα δεν έχει ξεκινήσει STR_TIMETABLE_STATUS_START_AT :{BLACK}Αυτό το δρομολόγιο θα ξεκινήσει στις {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Εναρκτήρια ημερομηνία STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Επιλέξτε μια ημερομηνία ως αρχή για αυτό το δρομολόγιο STR_TIMETABLE_CHANGE_TIME :{BLACK}Αλλαγή Χρόνων STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Αλλάζει ο χρόνος που παίρνει η επιλεγμένη επιλογή για να εκτελεστεί STR_TIMETABLE_CLEAR_TIME :{BLACK}Εκκαθάριση Χρόνων STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Εκκαθαρίζει το ποσοστό χρόνου για την επιλεγμένη εντολή STR_TIMETABLE_CHANGE_SPEED :{BLACK}Αλλαγή Ορίου Ταχύτητας STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Αλλαγή της μέγιστης ταχύτητας ταξιδιού της επιλεγμένης εντολής STR_TIMETABLE_CLEAR_SPEED :{BLACK}Εκκαθάριση Ορίου Ταχύτητας STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Καθαρίζει τη μέγιστη ταχύτητα ταξιδιού της επιλεγμένης εντολής STR_TIMETABLE_RESET_LATENESS :{BLACK}Επαναφορά Μετρητή Καθυστέρησης STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Επαναφορά του μετρητή καθυστέρησης, ώστε το όχημα να είναι στην ώρα του STR_TIMETABLE_AUTOFILL :{BLACK}Αυτόματη Γέμιση STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Συμπληρώστε το δρομολόγιο αυτόματα με τιμές από το επόμενο ταξίδι (Ctrl+Κλικ για να προσπαθήσει να κρατήσει τους χρόνους αναμονής) STR_TIMETABLE_EXPECTED :{BLACK}Αναμενόμενη STR_TIMETABLE_SCHEDULED :{BLACK}Προγραμματισμένη STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Εναλλαγή μεταξύ αναμενόμενης και προγραμματισμένης STR_TIMETABLE_ARRIVAL_ABBREVIATION :ΑΦ: STR_TIMETABLE_DEPARTURE_ABBREVIATION :ΑΝ: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Δώστε ημερομηνία STR_DATE_SET_DATE :{BLACK}Δώστε ημερομηνία STR_DATE_SET_DATE_TOOLTIP :{BLACK}Χρήση της επιλεγμένης ημερομηνίας ως εναρκτήριας ημερομηνίας για το δρομολόγιο STR_DATE_DAY_TOOLTIP :{BLACK}Επιλέξτε μέρα STR_DATE_MONTH_TOOLTIP :{BLACK}Επιλέξτε μήνα STR_DATE_YEAR_TOOLTIP :{BLACK}Επιλέξτε έτος # AI debug window STR_AI_DEBUG :{WHITE}Αποσφαλμάτωση AI και δέσμης ενεργειών παιχνιδιού STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (έκδοση {NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Όνομα δέσμης ενεργειών STR_AI_DEBUG_SETTINGS :{BLACK}Ρυθμίσεις STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Αλλαγή των ρυθμίσεων της δέσμης ενεργειών STR_AI_DEBUG_RELOAD :{BLACK}Επαναφόρτωση AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Τερματίστε την AI, ξαναφορτώστε τη δέσμη ενεργειών και επανεκκινήστε την AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Ενεργοποίηση/απενεργοποίηση παύσης όταν μια καταχώρηση ιστορικού της ΑΙ ταυτίζεται με το αλφαριθμητικό παύσης STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Παύση στο: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Παύση στο STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Εάν υπάρξει ταύτιση του παρόντος αλφαριθμητικού με μια καταχώρηση από τα μηνύματα του ΑΙ, τότε γίνεται παύση του παιχνιδιού STR_AI_DEBUG_MATCH_CASE :{BLACK}Ταύτιση μεγέθους STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Μεταβολή της ταύτισης μεγέθους όταν η γίνεται σύγκριση μιας καταχώρησης της ΑΙ με το αλφαριθμητικό παύσης STR_AI_DEBUG_CONTINUE :{BLACK}Συνέχεια STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Συνέχιση του παιχνιδιού και της λειτουργίας της AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Εμφάνιση της εξόδου αποσφαλμάτωσης αυτής της AI STR_AI_GAME_SCRIPT :{BLACK}Δέσμη Ενεργειών Παιχνιδιού STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Έλεγχος ιστορικού δέσμης ενεργειών παιχνιδιού STR_ERROR_AI_NO_AI_FOUND :Δεν βρέθηκε κατάλληλη AI για φόρτωση.{}Αυτή η AI είναι ψεύτικη και δεν θα κάνει τίποτα.{}Μπορείτε να κατεβάσετε διάφορες AΙ από το σύστημα Διαδικτυακού Περιεχομένου. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Μια τρέχουσα δέσμη ενεργειών τερμάτισε απότομα. Παρακαλώ ενημερώστε τον συγγραφέα της δέσμης ενεργειών με ένα στιγμιότυπο οθόνης από το παράθυρο αποσφαλμάτωσης AI/Παιχνιδιού STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Το παράθυρο αποσφαλμάτωσης ΑΙ και δέσμης ενεργειών είναι διαθέσιμο μόνο για τον διακομιστή # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Ρύθμιση ΑΙ και Δέσμης Ενεργειών STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Η Δέσμη Ενεργειών παιχνιδιού που θα φορτωθεί στο επόμενο παιχνίδι STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Οι AIs που θα φορτωθούν στο επόμενο παιχνίδι STR_AI_CONFIG_HUMAN_PLAYER :Ανθρώπινος παίκτης STR_AI_CONFIG_RANDOM_AI :Τυχαία AI STR_AI_CONFIG_NONE :{G=f}(καμία) STR_AI_CONFIG_MOVE_UP :{BLACK}Μετακίνηση Πάνω STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Μετακίνηση της επιλεγμένης AI πάνω στη λίστα STR_AI_CONFIG_MOVE_DOWN :{BLACK}Μετακίνηση Κάτω STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Μετακίνηση της επιλεγμένης AI κάτω στη λίστα STR_AI_CONFIG_GAMESCRIPT :{SILVER}Δέσμη Ενεργειών STR_AI_CONFIG_AI :{SILVER}AI STR_AI_CONFIG_CHANGE :{BLACK}Επιλογή {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :ΑΙ STR_AI_CONFIG_CHANGE_GAMESCRIPT :Δέσμη Ενεργειών STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Φόρτωση άλλης δέσμης ενεργειών STR_AI_CONFIG_CONFIGURE :{BLACK}Ρυθμίσεις STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Ρύθμιση των παραμέτρων της Δέσμης Ενεργειών # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Διαθέσιμη {STRING} STR_AI_LIST_CAPTION_AI :AI STR_AI_LIST_CAPTION_GAMESCRIPT :Δέσμες Ενεργειών STR_AI_LIST_TOOLTIP :{BLACK}Κάντε κλικ για επιλέξετε μία δέσμη ενεργειών STR_AI_LIST_AUTHOR :{LTBLUE}Δημιουργός: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Έκδοση: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}Ιστοσελίδα: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Αποδοχή STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Αποδοχή της επιλεγμένης δέσμης ενεργειών STR_AI_LIST_CANCEL :{BLACK}Άκυρο STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Να μην γίνει αλλαγή δέσμης ενεργειών # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Παράμετροι STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Δέσμη Ενεργειών STR_AI_SETTINGS_CLOSE :{BLACK}Κλείσιμο STR_AI_SETTINGS_RESET :{BLACK}Επαναφορά STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Αριθμός ημερών για την εκκίνηση της επόμενης AI μετά από τη προηγούμενη (περίπου): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme του {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{G=m}{WHITE}{STRING} ιστορικό αλλαγών του {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} άδεια του {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Εμφάνιση readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ιστορικό αλλαγών STR_TEXTFILE_VIEW_LICENCE :{BLACK}Άδεια # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Κόστος: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Κόστος: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Έσοδα: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Έσοδα: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Από Μεταφορά: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Από Μεταφορά: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Εκτιμώμενο Κόστος: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Υπολογιζόμενα Έσοδα: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Η αποθήκευση είναι σε εξέλιξη,{}παρακαλώ περιμένετε να τελειώσει! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Η αυτόματη αποθήκευση απέτυχε STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Αδύνατη η ανάγνωση του δίσκου STR_ERROR_GAME_SAVE_FAILED :{WHITE}Η Αποθήκευση Παιχνιδιού Απέτυχε{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Αδύνατη η διαγραφή του αρχείου STR_ERROR_GAME_LOAD_FAILED :{WHITE}Η Φόρτωση Παιχνιδιού Απέτυχε{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Εσωτερικό λάθος: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Χαλασμένο αποθηκευμένο παιχνίδι - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Το αποθηκευμένο παιχνίδι είναι φτιαγμένο με νεότερη έκδοση STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Το αρχείο δεν μπορούσε να διαβαστεί STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Το αρχείο δεν είναι εγγράψιμο STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Έλεγχος ακεραιότητας δεδομένων απέτυχε STR_GAME_SAVELOAD_NOT_AVAILABLE :<μη διαθέσιμο> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Το παιχνίδι έχει αποθηκευτεί σε έκδοση χωρίς υποστήριξη για τραμ. Όλα τα τραμ έχουν αφαιρεθεί # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Η δημιουργία του χάρτη εγκαταλείφτηκε...{}... δεν υπάρχουν κατάλληλες τοποθεσίες για πόλεις STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... δεν υπάρχει καμία πόλη σε αυτό το σενάριο STR_ERROR_PNGMAP :{WHITE}Δεν ήταν δυνατή η φόρτωση τοπίου από PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... το αρχείο δε βρέθηκε STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... δεν ήταν δυνατή η μετατροπή του τύπου εικόνας. Χρειάζεται εικόνα PNG 8 ή 24 bit STR_ERROR_PNGMAP_MISC :{WHITE}... κάτι πήγε στραβά (πιθανώς κατεστραμμένο αρχείο) STR_ERROR_BMPMAP :{WHITE}Δεν ήταν δυνατή η φόρτωση τοπίου από ΒΜΡ... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... δεν ήταν δυνατή η μετατροπή του τύπου εικόνας STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... η εικόνα είναι πολύ μεγάλη STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Προειδοποίηση κλίμακας STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Αλλαγή μεγέθους του πηγαίου χάρτη δεν συνίσταται. Να προχωρήσει η δημιουργία; # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Βρέθηκε μόνο εφεδρικό σετ ήχου. Αν θέλετε ήχους, εγκαταστήστε ένα πακέτο ήχων μέσω του συστήματος μεταφόρτωσης υλικού # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Τεράστιο στιγμιότυπο οθόνης STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Το στιγμιότυπο θα έχει ανάλυση {COMMA} × {COMMA} πίξελ. Η λήψη αυτού του στιγμιότυπου μπορεί να πάρει πολύ ώρα. Θέλετε σίγουρα να συνεχίσετε; STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Το στιγμιότυπο οθόνης αποθηκεύτηκε επιτυχώς ως «{STRING}» STR_ERROR_SCREENSHOT_FAILED :{WHITE}Η λήψη στιγμιότυπου οθόνης απέτυχε! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Μήνυμα STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Μήνυμα από {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Από την άκρη του χάρτη STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Πολύ κοντά στην άκρη του χάρτη STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Δεν υπάρχουν αρκετά χρήματα - απαιτούνται {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Απαιτείται επίπεδο έδαφος STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Το έδαφος έχει λάθος κλίση STR_ERROR_CAN_T_DO_THIS :{WHITE}Αυτό δεν γίνεται... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή... STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κτισμένο STR_ERROR_OWNED_BY :{WHITE}... ιδιοκτησία του {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... η περιοχή είναι ιδιοκτησία άλλης εταιρίας STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο διαμόρφωσης του εδάφους STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο καθαρισμού τετραγωνιδίων STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... υπερβαίνει το όριο φύτευσης δέντρων STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Το όνομα πρέπει να είναι μοναδικό STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} στη μέση STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Δεν επιτρέπεται όσο το παιχνίδι είναι σε παύση # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Οι τοπικές αρχές της πόλης {TOWN} δεν το επιτρέπουν STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Η τοπική αρχή της πόλης {TOWN} αρνείται να επιτρέψει τη δημιουργία νέου αεροδρομίου STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Οι τοπικές αρχές της πόλης {TOWN} αρνούνται να δώσουν την άδεια για αεροδρόμιο λόγω ανησυχιών για τον θόρυβο STR_ERROR_BRIBE_FAILED :{WHITE}Η δωροδοκία που προσπαθήσατε να δώσετε έγινε αντιληπτή από τοπικό ερευνητή # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Δεν είναι δυνατό να υψωθεί η γη εδώ... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Δεν είναι δυνατό να χαμηλώσει η γη εδώ... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Δεν είναι δυνατό να έρθει στο ίδιο επίπεδο η γη εδώ... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Η εκσκαφή θα κατέστρεφε το τούνελ STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ήδη στο επίπεδο της θάλασσας STR_ERROR_TOO_HIGH :{WHITE}... πολύ ψηλά STR_ERROR_ALREADY_LEVELLED :{WHITE}... ήδη επίπεδο # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα της εταιρίας... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Δεν ήταν δυνατό να αλλάξει το όνομα του διευθυντή... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... το μέγιστο επιτρεπόμενο δάνειο είναι {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Δεν μπορείτε να δανειστείτε περισσότερα χρήματα... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... δεν υπάρχει δάνειο προς αποπληρωμή STR_ERROR_CURRENCY_REQUIRED :{WHITE}... απαιτούνται {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Αδύνατη η αποπληρωμή του δανείου... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Δεν είναι δυνατό να δοθούν χρήματα που είναι δανεισμένα από τη τράπεζα... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Αδύνατη η εξαγορά της εταιρίας... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Αδύνατο να κτιστεί αρχηγείο εταιρίας... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Αδύνατη η αγορά μεριδίου 25% της εταιρίας... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Αδύνατη η πώληση μεριδίου 25% της εταιρίας... STR_ERROR_PROTECTED :{WHITE}Αυτή η εταιρία δεν είναι αρκετά παλιά για συναλλαγή μετοχών... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Αδύνατο να κτιστούν πόλεις STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Δεν μπορεί να μετονομαστεί η πόλη... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Αδύνατο να κτιστεί πόλη εδώ... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Δεν μπορεί να γίνει επέκταση της πόλης... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... πολύ κοντά στην άκρη του χάρτη STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... πολύ κοντά σε άλλη πόλη STR_ERROR_TOO_MANY_TOWNS :{WHITE}... πάρα πολλές πόλεις STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... δεν υπάρχει άλλος χώρος στον χάρτη STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Η πόλη δεν θα οικοδομεί δρόμους. Μπορείτε να ενεργοποιήσετε την κατασκευή οδών μέσω τις Προχωρημένες Επιλογές->Οικονομία->Πόλεις STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Έργα οδοποιίας σε εξέλιξη STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Δεν γίνεται να διαγραφεί η πόλη...{}Ένας σταθμός ή ένα αμαξοστάσιο που αναφέρεται στην πόλη ή ένα τετραγωνίδιο της πόλης δεν μπορεί να αφαιρεθεί STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... δεν υπάρχει κατάλληλο μέρος για άγαλμα στο κέντρο αυτής της πόλης # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... πάρα πολλές βιομηχανίες STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Δε γίνεται να δημιουργηθούν βιομηχανίες... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Δεν είναι δυνατό να κτιστεί {G ο η το} {STRING} εδώ... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Δεν είναι δυνατό να κτιστεί αυτός ο τύπος βιομηχανίας εδώ... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... πολύ κοντά σε άλλη βιομηχανία STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... πρέπει να κτιστεί πόλη πρώτα STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... επιτρέπεται μόνο μία ανά πόλη STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... μπορεί να κτιστεί μόνο σε πόλεις με πληθυσμό άνω των 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... μπορεί να κτιστεί μόνο σε δασώδεις περιοχές STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... μπορεί να κτιστεί μόνο σε ερημικές περιοχές STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... μπορεί να κτιστεί μόνο σε πόλεις (αντικαθιστώντας σπίτια) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... μπορεί να κτιστεί μόνο κοντά σε κέντρα πόλεων STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... μπορεί να κτιστεί μόνο σε χαμηλές περιοχές STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... μπορούν να τοποθετηθούν μόνο στις άκρες του χάρτη STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... δάση μπορούν να φυτευτούν μόνο πάνω από τη γραμμή του χιονιού STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο πάνω από τη γραμμή του χιονιού STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... μπορεί να κτιστεί μόνο κάτω από τη γραμμή του χιονιού # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τρένων εδώ... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Αδύνατο να κτιστεί στάση λεωφορείων... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Αδύνατο να κτιστεί στάση φορτηγών... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να κτιστεί επιβατικός σταθμός τραμ... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να κτιστεί σταθμός τραμ... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Δεν μπορεί να κτιστεί λιμένας εδώ... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Δεν μπορεί να κτιστεί αεροδρόμιο εδώ... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Γειτονεύει με περισσότερες από μια υπάρχουσες περιοχές σταθμών/φόρτωσης STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... ο σταθμός είναι υπερβολικά απλωμένος STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Πάρα πολλές περιοχές σταθμών/φόρτωσης STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Πάρα πολλά κομμάτια σιδηροδρομικού σταθμού STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Πάρα πολλές στάσεις λεωφορείου STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Πάρα πολλοί σταθμοί φορτηγών STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Πολύ κοντά σε άλλη περιοχή σταθμού/φόρτωσης STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Πολύ κοντά σε άλλη αποβάθρα STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Πολύ κοντά σε άλλο αεροδρόμιο STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Δεν μπορεί να μετονομαστεί ο σταθμός... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... αυτός είναι δρόμος ιδιόκτητος από την πόλη STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... ο δρόμος βλέπει σε λάθος κατεύθυνση STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... οι μη τερματικοί σταθμοί δε μπορούν να έχουν στροφές STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... οι μη τερματικοί σταθμοί δε μπορούν να έχουν διασταυρώσεις # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί μέρος του σταθμού... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Πρέπει πρώτα να αφαιρέσετε τον σταθμό σιδηροδρόμου STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Αδύνατο να αφαιρεθεί η στάση λεωφορείων... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί ο σταθμός φορτηγών... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί η στάση επιβατών τραμ... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί ο σταθμός εμπορευμάτων τραμ... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Πρέπει να γίνει αφαίρεση της στάσης οχημάτων πρώτα STR_ERROR_THERE_IS_NO_STATION :{WHITE}... δεν υπάρχει σταθμός εδώ STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Πρέπει να κατεδαφιστεί ο σιδηροδρομικός σταθμός πρώτα STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί η στάσης λεωφορείου πρώτα STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί ο σταθμός φορτηγών πρώτα STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί ο επιβατικός σταθμός τραμ πρώτα STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Πρέπει να κατεδαφιστεί ο εμπορευματικός σταθμός τραμ πρώτα STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Πρέπει να κατεδαφιστεί η αποβάθρα πρώτα STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Πρέπει να κατεδαφιστεί το αεροδρόμιο πρώτα # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Προστίθεται σε περισσότερο από ένα υπάρχον σημείο καθοδήγησης STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Πολύ κοντά σε άλλο σημείο καθοδήγησης STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Αδύνατο να χτιστεί σημείο καθοδήγησης τρένου εδώ... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Δεν μπορεί να τοποθετηθεί σημαδούρα εδώ... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Αδύνατο να αλλαχτεί το όνομα του σημείου καθοδήγησης... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Αδύνατο να αφαιρεθεί το σημείο καθοδήγησης τρένου από εδώ... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Πρέπει να αφαιρεθεί πρώτα το σημείο καθοδήγησης σιδηρόδρομου STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... σημαδούρα στη μέση STR_ERROR_BUOY_IS_IN_USE :{WHITE}... σημαδούρα σε χρήση από άλλη εταιρία! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Αδύνατο να κτιστεί αμαξοστάσιο εδώ... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Αδύνατο να κτιστεί σταθμός οχημάτων εδώ... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Δεν μπορεί να κτιστεί σταθμαρχείο τραμ εδώ... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Δεν μπορεί να κτιστεί ναυπηγείο πλοίων εδώ... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Δεν μπορεί να μετονομαστεί το αμαξοστάσιο/ναυπηγείο... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... πρέπει να είναι σταματημένο μέσα σε αμαξοστάσιο STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... πρέπει να είναι σταματημένο μέσα σε αμαξοστάσιο STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... πρέπει να είναι σταματημένο μέσα σε ναυπηγείο STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... πρέπει να είναι σταματημένο μέσα σε υπόστεγο STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Τα τρένα μπορούν να τροποποιηθούν μόνο όταν είναι σταματημένα μέσα σε αμαξοστάσιο STR_ERROR_TRAIN_TOO_LONG :{WHITE}Το τρένο είναι πολύ μακρύ STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Δεν αντιστρέφεται η κατεύθυνση του οχήματος... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... αποτελείται από πολλαπλές μονάδες STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Μη συμβατός τύπος σιδηροτροχιάς STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Δεν μπορεί να μετακινηθεί το όχημα... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Η πίσω μηχανή πάντα θα ακολουθεί την αντίστοιχη μπροστινή STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Αδύνατο να βρεθεί δρόμος για το τοπικό αμαξοστάσιο STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Αδύνατο να βρεθεί τοπικό αμαξοστάσιο STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Λάθος τύπος αμαξοστάσιου # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Το {VEHICLE} είναι πολύ μεγάλο μετά την ανανέωση STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Χωρίς εφαρμογή κανόνων αυτόματης ανανέωσης/αντικατάστασης STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(χρηματικό όριο) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Αδύνατος συνδυασμός σιδηροδρόμου STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Πρέπει να γίνει αφαίρεση του σήματος πρώτα STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Μη συμβατή σιδηροτροχιά STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Πρέπει να αφαιρεθεί ο σιδηρόδρομος πρώτα STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Η δρόμος είναι μονόδρομος ή μπλοκαρισμένος STR_ERROR_CROSSING_DISALLOWED :{WHITE}Δεν επιτρέπονται ισόπεδες διασταυρώσεις για αυτόν τον τύπο σιδηροδρόμου STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Δεν μπορούν να κτιστούν σηματοδότες εδώ... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Δεν μπορεί να κτιστεί σιδηρόδρομος εδώ... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Δεν μπορεί να αφαιρεθεί σιδηρόδρομος από εδώ... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Αδύνατο να αφαιρεθούν σηματοδότες από εδώ... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Δεν μπορούν να μετατραπούν οι σηματοδότες εδώ... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... δεν υπάρχει σιδηροτροχιά STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... δεν υπάρχουν σηματοδότες STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Δε γίνεται να μετατραπεί ο τύπος της σιδηροτροχιάς εδώ... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Πρέπει πρώτα να αφαιρεθεί ο δρόμος STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... οι μονόδρομοι δεν μπορούν να έχουν διασταυρώσεις STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Αδύνατο να κτιστεί δρόμος εδώ... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Δεν μπορεί να κτιστεί τροχιοδρόμος εδώ... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Αδύνατο να αφαιρεθεί δρόμος από εδώ... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Δεν μπορεί να αφαιρεθεί τροχιόδρομος από εδώ... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... δεν υπάρχει δρόμος STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... δεν υπάρχει τροχιόδρομος # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Δεν μπορεί να κτιστεί υδατοφράκτης εδώ... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Δεν μπορούν να τοποθετηθούν ποτάμια εδώ... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... πρέπει να κτιστεί στο νερό STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... αδύνατο να κτιστεί στο νερό STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... δε μπορεί να κτιστεί στην ανοικτή θάλασσα STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... αδύνατο να κτιστεί σε κανάλι STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... αδύνατο να κτιστεί σε ποτάμι STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Πρέπει να κατεδαφιστεί το κανάλι πρώτα STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Δεν μπορεί να κτιστεί κανάλι εδώ... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... υπάρχει ήδη δέντρο εδώ STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... λάθος έδαφος για αυτόν τον τύπο δέντρου STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Δεν γίνεται να φυτευτεί δέντρο εδώ... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Δεν μπορεί να κτιστεί γέφυρα εδώ... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί η γέφυρα STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Δεν γίνεται να ξεκινάει και να τελειώνει στο ίδιο σημείο STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Η γέφυρα δεν καταλήγει στο ίδιο επίπεδο STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Η γέφυρα είναι πολύ χαμηλή για το έδαφος STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Η αρχή και το τέλος πρέπει να είναι σε ευθεία STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... και τα δύο άκρα της γέφυρας πρέπει να είναι σε έδαφος STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... η γέφυρα είναι πολλή μακρυά STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Η γέφυρα θα καταλήξει εκτός χάρτη # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Δεν μπορεί να κτιστεί τούνελ εδώ... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Ακατάλληλη τοποθεσία για είσοδο τούνελ STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Πρέπει πρώτα να καταστραφεί το τούνελ STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Υπάρχει άλλο τούνελ στη μέση STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Το τούνελ θα καταλήξει εκτός του χάρτη STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Αδύνατο να γίνει εκσκαφή γης στην άλλη άκρη του τούνελ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... το τούνελ είναι πολύ μακρύ # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... πάρα πολλά αντικείμενα STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Δεν μπορεί να κτιστεί το αντικείμενο... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Αντικείμενο στη μέση STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... κεντρικά γραφεία εταιρίας στη μέση STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Αδύνατο να αγοραστεί το έδαφος... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... είστε ήδη ιδιοκτήτης! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Δεν μπορεί να δημιουργηθεί ομάδα... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Δεν μπορεί να διαγραφεί αυτή η ομάδα... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Δεν μπορεί να μετονομαστεί η ομάδα... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Δεν μπορεί να αφαιρεθούν όλα τα οχήματα από την ομάδα... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Δεν μπορεί να προστεθεί το όχημα στην ομάδα... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Δεν μπορεί να προστεθούν κοινά οχήματα στην ομάδα... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Τρένο καθ'οδόν STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Όχημα δρόμου καθ'οδόν STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Πλοίο καθ'οδόν STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Αεροσκάφος καθ'οδόν STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Δεν μπορεί να μετατραπεί το τρένο... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Δεν μπορεί να υποστεί μετατροπή το όχημα... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Δεν μπορεί να υποστεί μετατροπή το πλοίο... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Δεν μπορεί να μετατραπεί το αεροσκάφος... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Δεν μπορεί να ονομαστεί το τρένο... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Δεν μπορεί να ονομαστεί το όχημα... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Δεν μπορεί να ονομαστεί το πλοίο... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Δεν μπορεί να ονομαστεί το αεροσκάφος... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το τρένο... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το όχημα... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το πλοίο... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το αεροσκάφος... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Δεν μπορεί να σταλθεί το τρένο στο αμαξοστάσιο... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Δεν μπορεί να σταλθεί το όχημα στο αμαξοστάσιο... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Δεν μπορεί να σταλθεί το πλοίο στο ναυπηγείο... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Δεν μπορεί να σταλθεί το αεροσκάφος στο υπόστεγο... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Δεν μπορεί να αγοραστεί όχημα σιδηρόδρομου... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Δεν μπορεί να αγοραστεί όχημα δρόμου... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Δεν μπορεί να αγοραστεί πλοίο... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Δεν μπορεί να αγοραστεί αεροσκάφος... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος τρένου... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος οχήματος δρόμου... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος πλοίου... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Δεν μπορεί να μετονομαστεί ο τύπος αεροσκάφους... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Δεν μπορεί να πωληθεί το όχημα σιδηρόδρομου... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Δεν μπορεί να πωληθεί το όχημα δρόμου... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Δεν μπορεί να πωληθεί το πλοίο... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Δεν μπορεί να πωληθεί το αεροσκάφος... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Το όχημα δεν είναι διαθέσιμο STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Το όχημα δεν είναι διαθέσιμο STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Το πλοίο δεν είναι διαθέσιμο STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Μη διαθέσιμο αεροσκάφος STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Πάρα πολλά οχήματα στο παιχνίδι STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Δεν μπορεί να αλλάξει το διάστημα της συντήρησης... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... το όχημα καταστράφηκε STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Αλλάξτε τις ρύθμισεις NewGRF σας # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Δεν μπορεί το τρένο να περάσει σήμα με κίνδυνο... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Δεν αντιστρέφεται η κατεύθυνση του τρένου... STR_ERROR_TRAIN_START_NO_POWER :Το τραίνο δεν έχει ενέργεια STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Δεν γίνεται να αλλάξει πορεία το όχημα... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Το αεροσκάφος είναι σε πτήση # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Δεν υπάρχει άλλος χώρος για εντολές STR_ERROR_TOO_MANY_ORDERS :{WHITE}Πάρα πολλές εντολές STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Δεν μπορεί να γίνει εισαγωγή νέας εντολής... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Δεν μπορεί να διαγραφεί η εντολή... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Δεν μπορεί να τροποποιηθεί η εντολή... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Δεν μπορεί να μετακινηθεί η εντολή... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Δεν μπορεί να παραληφθεί η τρέχουσα εντολή... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Δεν μπορεί να παραληφθεί για την επιλεγμένη εντολή... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... το όχημα δεν μπορεί να πάει σε όλους τους σταθμούς STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... το όχημα δεν μπορεί να πάει σε αυτόν τον σταθμό STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ένα όχημα που μοιράζεται αυτή την εντολή δεν μπορεί να πάει σε εκείνο τον σταθμό STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Αδύνατο να μοιραστεί η λίστα εντολών... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Δεν μπορεί να σταματήσει να μοιράζεται η λίστα εντολών... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Αδύνατο να αντιγραφεί η λίστα εντολών... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... πολύ μακριά από τον προηγούμενο προορισμό STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... δεν αρκεί η εμβέλεια του αεροσκάφους # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Δεν μπορεί να δρομολογηθεί το όχημα... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Τα οχήματα μπορούν να περιμένουν μόνο στους σταθμούς STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Αυτό το όχημα δεν σταματάει σε αυτόν τον σταθμό # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... πάρα πολλά σήματα STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Δεν γίνεται να τοποθετηθεί σήμα εδώ... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Δεν γίνεται να αλλαχθεί το όνομα της πινακίδας... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Δεν μπορεί να διαγραφεί η πινακίδα... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Ένα παιχνίδι εξομοίωσης βασισμένο στο Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS (Γερμανικό). STR_BASEGRAPHICS_WIN_DESCRIPTION :Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows. STR_BASESOUNDS_NONE_DESCRIPTION :Ένα πάκετο ήχων χώρις ήχους. STR_BASEMUSIC_WIN_DESCRIPTION :Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows. STR_BASEMUSIC_NONE_DESCRIPTION :Ένα πάκετο μουσικής χωρίς πραγματική μουσική. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Ψηλό συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Μικρό συγκρότημα διαμερισμάτων STR_TOWN_BUILDING_NAME_CHURCH_1 :Εκκλησία STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Μεγάλο συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Σπίτια πόλης STR_TOWN_BUILDING_NAME_HOTEL_1 :Ξενοδοχείο STR_TOWN_BUILDING_NAME_STATUE_1 :Άγαλμα STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Συντριβάνι STR_TOWN_BUILDING_NAME_PARK_1 :Πάρκο STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Καταστήματα και γραφεία STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Μοντέρνο κτίριο γραφείων STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Αποθήκη STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_STADIUM_1 :Γήπεδο STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Παλιά σπίτια STR_TOWN_BUILDING_NAME_COTTAGES_1 :Αγροικίες STR_TOWN_BUILDING_NAME_HOUSES_1 :Σπίτια STR_TOWN_BUILDING_NAME_FLATS_1 :Διαμερίσματα STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Ψηλό συγκρότημα γραφείων STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Καταστήματα και γραφεία STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Καταστήματα και γραφεία STR_TOWN_BUILDING_NAME_THEATER_1 :Θέατρο STR_TOWN_BUILDING_NAME_STADIUM_2 :Στάδιο STR_TOWN_BUILDING_NAME_OFFICES_1 :Γραφεία STR_TOWN_BUILDING_NAME_HOUSES_2 :Σπίτια STR_TOWN_BUILDING_NAME_CINEMA_1 :Κινηματογράφος STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Εμπορικό κέντρο STR_TOWN_BUILDING_NAME_IGLOO_1 :Ιγκλού STR_TOWN_BUILDING_NAME_TEPEES_1 :Σκηνές Ινδιάνων STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Σπίτι-Καφετιέρα STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Τράπεζα-Κουμπαράς ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :{G=n}Ορυχείο Άνθρακα STR_INDUSTRY_NAME_POWER_STATION :{G=m}Σταθμός Ηλεκτρισμού STR_INDUSTRY_NAME_SAWMILL :{G=n}Πριονιστήριο STR_INDUSTRY_NAME_FOREST :{G=n}Δάσος STR_INDUSTRY_NAME_OIL_REFINERY :{G=n}Διυλιστήριο STR_INDUSTRY_NAME_OIL_RIG :{G=f}Πλατφόρμα Πετρελαίου STR_INDUSTRY_NAME_FACTORY :{G=n}Εργοστάσιο STR_INDUSTRY_NAME_PRINTING_WORKS :{G=n}Τυπογραφείο STR_INDUSTRY_NAME_STEEL_MILL :{G=n}Χαλυβουργείο STR_INDUSTRY_NAME_FARM :{G=f}Φάρμα STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=n}Ορυχείο Μεταλλεύματος Χαλκού STR_INDUSTRY_NAME_OIL_WELLS :{G=f}Πετρελαιοπηγή STR_INDUSTRY_NAME_BANK :{G=f}Τράπεζα STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=n}Εργοστάσιο Επεξεργασίας Τροφίμων STR_INDUSTRY_NAME_PAPER_MILL :{G=m}Μύλος Χαρτιού STR_INDUSTRY_NAME_GOLD_MINE :{G=n}Χρυσωρυχείο STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=f}Τράπεζα STR_INDUSTRY_NAME_DIAMOND_MINE :{G=n}Αδαμαντορυχείο STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=n}Ορυχείο Μεταλλεύματος Σιδήρου STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=f}Φυτεία Φρούτων STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=f}Φυτεία Λάστιχου STR_INDUSTRY_NAME_WATER_SUPPLY :{G=f}Προμήθεια Νερού STR_INDUSTRY_NAME_WATER_TOWER :{G=m}Πύργος Νερού STR_INDUSTRY_NAME_FACTORY_2 :{G=n}Εργοστάσιο STR_INDUSTRY_NAME_FARM_2 :{G=f}Φάρμα STR_INDUSTRY_NAME_LUMBER_MILL :{G=n}Υλοτομίο STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=n}Δάσος Μαλλιού της Γριάς STR_INDUSTRY_NAME_CANDY_FACTORY :{G=n}Εργοστάσιο Γλυκών STR_INDUSTRY_NAME_BATTERY_FARM :{G=f}Φάρμα Μπαταριών STR_INDUSTRY_NAME_COLA_WELLS :Πηγή Κόλας STR_INDUSTRY_NAME_TOY_SHOP :{G=n}Κατάστημα Παιχνιδιών STR_INDUSTRY_NAME_TOY_FACTORY :{G=n}Εργοστάσιο Παιχνιδιών STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=f}Πηγές Πλαστικού STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=n}Εργοστάσιο Αναψυκτικών STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=f}Γεννήτρια Φυσαλίδων STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=n}Λατομείο Ζαχαρωτών STR_INDUSTRY_NAME_SUGAR_MINE :{G=n}Ορυχείο Ζάχαρης ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Ανώνυμο STR_SV_TRAIN_NAME :{G=n}Τρένο {COMMA} STR_SV_TRAIN_NAME.geniki :Τρένου {COMMA} STR_SV_ROAD_VEHICLE_NAME :{G=n}Όχημα Δρόμου {COMMA} STR_SV_ROAD_VEHICLE_NAME.geniki :Οχήματος Δρόμου {COMMA} STR_SV_SHIP_NAME :{G=n}Πλοίο {COMMA} STR_SV_SHIP_NAME.geniki :Πλοίου {COMMA} STR_SV_AIRCRAFT_NAME :{G=n}Αεροσκάφος {COMMA} STR_SV_AIRCRAFT_NAME.geniki :Αεροσκάφους {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :Βόρειο {STRING} STR_SV_STNAME_SOUTH :Νότιο {STRING} STR_SV_STNAME_EAST :Ανατολικό {STRING} STR_SV_STNAME_WEST :Δυτικό {STRING} STR_SV_STNAME_CENTRAL :Κεντρικό {STRING} STR_SV_STNAME_TRANSFER :Μετεπιβίβαση {STRING} STR_SV_STNAME_HALT :Όρια {STRING} STR_SV_STNAME_VALLEY :Κοιλάδα {STRING} STR_SV_STNAME_HEIGHTS :Λόφοι {STRING} STR_SV_STNAME_WOODS :Δάσος {STRING} STR_SV_STNAME_LAKESIDE :Λίμνη {STRING} STR_SV_STNAME_EXCHANGE :{STRING} Ανταλλαγής STR_SV_STNAME_AIRPORT :Αεροδρόμιο {STRING} STR_SV_STNAME_OILFIELD :Πετρελαιοπηγές {STRING} STR_SV_STNAME_MINES :Ορυχεία {STRING} STR_SV_STNAME_DOCKS :Λιμάνι {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Παράρτημα {STRING} STR_SV_STNAME_SIDINGS :Παράκαμψη {STRING} STR_SV_STNAME_BRANCH :Διακλάδωση {STRING} STR_SV_STNAME_UPPER :Άνω {STRING} STR_SV_STNAME_LOWER :Κάτω {STRING} STR_SV_STNAME_HELIPORT :Ελικοδρόμιο {STRING} STR_SV_STNAME_FOREST :Δάσος {STRING} STR_SV_STNAME_FALLBACK :Σταθμός {STRING} #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Ατμοκίνητο) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Πετρελαίου STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Πετρελαίου STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Ατμοκίνητο) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney «Jubilee» (Ατμοκίνητο) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu «A4» (Ατμοκίνητο) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH «8P» (Ατμοκίνητο) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :«Dash» (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry «25» (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU «37» (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss «47» (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH «125» (Πετρελαίου) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH «30» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH «40» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :«T.I.M.» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :«AsiaStar» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Βαγόνι Επιβατών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Βαγόνι Αλληλογραφίας STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Βαγόνι Άνθρακα STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Βαγόνι Πετρελαίου STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Βαγόνι Μεταφοράς Ζώων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Βαγόνι Αγαθών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Βαγόνι Σιτηρών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Βαγόνι Ξυλείας STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Βαγόνι Μεταλλεύματος Σιδήρου STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Βαγόνι Χάλυβα STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Θωρακισμένο Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Βαγόνι Τροφίμων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Βαγόνι Χαρτιού STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Βαγόνι Χαλκού STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Βαγόνι Νερού STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Βαγόνι Φρούτων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Βαγόνι Λάστιχου STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Βαγόνι Ζάχαρης STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Βαγόνι Μαλλιού της Γριάς STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Βαγόνι Ζαχαρώτων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Βαγόνι Φυσαλίδων STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Βυτίο Κόλα STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Βαγόνι Γλυκών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Βαγόνι Παιχνιδιών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Βαγόνι Μπαταριών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Νταλίκα Αναψυκτικών STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Βαγόνι Πλαστικού STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :«X2001» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :«Millennium Z1» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Επιβατικό Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Βαγόνι Αλληλογραφίας STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Βαγόνι Άνθρακα STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Βαγόνι Πετρελαίου STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Βαγόνι Μεταφοράς Ζώων STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Βαγόνι Αγαθών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Φορτηγό Σιτηρών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Βαγόνι Ξυλείας STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Φορτηγό Σιδήρου STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Βαγόνι Χάλυβα STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Θωρακισμένο Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Βαγόνι Τροφίμων STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Βαγόνι Χαρτιού STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Βαγόνι Χαλκού STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Βαγόνι Νερού STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Βαγόνι Φρούτων STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Βαγόνι Λάστιχου STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Βαγόνι Ζάχαρης STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Φορτηγό Μαλλιού της Γριάς STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Φορτηγό Ζαχαρωτών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Βαγόνι Φυσαλίδων STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Βαγόνι Κόλας STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Βαγόνι Γλυκών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Βαγόνι Παιχνιδιών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Βαγόνι Μπαταριών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Βαγόνι Αναψυκτικών STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Βαγόνι Πλαστικού STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 «Leviathan» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 «Cyclops» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 «Pegasus» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 «Chimaera» (Ηλεκτρικό) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Επιβατικό Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Βαγόνι Αλληλογραφίας STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Βαγόνι Άνθρακα STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Βαγόνι Πετρελαίου STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Βαγόνι Μεταφοράς Ζώων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Βαγόνι Αγαθών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Βαγόνι Σιτηρών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Βαγόνι Ξυλείας STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Βαγόνι Μεταλλεύματος Σιδήρου STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Βαγόνι Χάλυβα STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Θωρακισμένο Βαγόνι STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Βαγόνι Τροφίμων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Βαγόνι Χαρτιού STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Βαγόνι Χαλκού STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Βαγόνι Νερού STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Βαγόνι Φρούτων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Βαγόνι Λάστιχου STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Βαγόνι Ζάχαρης STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Βαγόνι Μαλλιού της Γριάς STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Βαγόνι Ζαχαρώτων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Βαγόνι Φυσαλίδων STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Βαγόνι Κόλας STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Βαγόνι Γλυκών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Βαγόνι Παιχνιδιών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Βαγόνι Μπαταριών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Βαγόνι Αναψυκτικών STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Βαγόνι Πλαστικού STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Λεωφορείο MPS Regal STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Λεωφορείο Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Λεωφορείο Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Λεωφορείο Foster MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Λεωφορείο Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Λεωφορείο Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Λεωφορείο Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Φορτηγό Άνθρακα Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Φορτηγό Άνθρακα Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Φορτηγό Άνθρακα DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Φορτηγό Αλληλογραφίας MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Φορτηγό Αλληλογραφίας Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Φορτηγό Αλληλογραφίας Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Φορτηγό Αλληλογραφίας MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Φορτηγό Αλληλογραφίας Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Φορτηγό Αλληλογραφίας Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Βυτίο Πετρελαίου Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Βυτίο Πετρελαίου Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Βυτίο Πετρελαίου Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Ημιφορτηγό Μεταφοράς Ζώων Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Ημιφορτηγό Μεταφοράς Ζώων Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Ημιφορτηγό Μεταφοράς Ζώων Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Φορτηγό Αγαθών Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Φορτηγό Αγαθών Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Φορτηγό Αγαθών Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Φορτηγό Σιτηρών Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Φορτηγό Σιτηρών Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Φορτηγό Σιτηρών Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Φορτηγό Ξυλείας Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Φορτηγό Ξυλείας Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Φορτηγό Ξυλείας Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Φορτηγό Μεταλλεύματος Σιδήρου MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Φορτηγό Μεταλλεύματος Σιδήρου Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Φορτηγό Μεταλλεύματος Σιδήρου Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Φορτηγό Χάλυβα Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Φορτηγό Χάλυβα Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Φορτηγό Χάλυβα Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Θωρακισμένο Φορτηγό Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Θωρακισμένο Φορτηγό Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Θωρακισμένο Φορτηγό Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Ημιφορτηγό Τροφίμων Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Ημιφορτηγό Τροφίμων Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Ημιφορτηγό Τροφίμων Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Φορτηγό Χαρτιού Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Φορτηγό Χαρτιού Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Φορτηγό Χαρτιού MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Φορτηγό Χαλκού MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Φορτηγό Χαλκού Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Φορτηγό Χαλκού Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Βυτίο Νερού Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Βυτίο Νερού Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Βυτίο Νερού MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Φορτηγό Φρούτων Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Φορτηγό Φρούτων Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Φορτηγό Φρούτων Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Φορτηγό Λάστιχου Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Φορτηγό Λάστιχου Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Φορτηγό Λάστιχου RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Φορτηγό Ζάχαρης MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Φορτηγό Ζάχαρης Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Φορτηγό Ζάχαρης Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Φορτηγό Κόλας MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Φορτηγό Κόλας Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Φορτηγό Κόλας Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Φορτηγό Μαλλιού της Γριάς MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Φορτηγό Μαλλιού της Γριάς Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Φορτηγό Μαλλιού της Γριάς Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Φορτηγό Ζαχαρωτών MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Φορτηγό Ζαχαρωτών Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Φορτηγό Ζαχαρωτών Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Ημιφορτηγό Παιχνιδιών MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Ημιφορτηγό Παιχνιδιών Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Ημιφορτηγό Παιχνιδιών Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Φορτηγό Γλυκών MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Φορτηγό Γλυκών Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Φορτηγό Γλυκών Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Φορτηγό Μπαταριών MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Φορτηγό Μπαταριών Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Φορτηγό Μπαταριών Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Φορτηγό Αναψυκτικού MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Φορτηγό Αναψυκτικού Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Φορτηγό Αναψυκτικού Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Φορτηγό Πλαστικού MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Φορτηγό Πλαστικού Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Φορτηγό Πλαστικού Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Φορτηγό Φυσαλίδων MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Φορτηγό Φυσαλίδων Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Φορτηγό Φυσαλίδων Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Δεξαμενόπλοιο MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Δεξαμενόπλοιο CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Επιβατηγό Πλοίο MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Επιβατηγό Πλοίο FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Hovercraft Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Επιβατηγό Πλοίο Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Επιβατηγό Πλοίο Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Πλοίο Εμπορευμάτων Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Πλοίο Εμπορευμάτων Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Πλοίο Εμπορευμάτων MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Πλοίο Εμπορευμάτων Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Ελικόπτερο Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Ελικόπτερο Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Ελικόπτερο Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING.date} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :Σημαδούρα {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :Σημαδούρα {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :(Εταιρία {COMMA}) STR_FORMAT_GROUP_NAME :Ομάδα {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :Σημείο Καθοδήγησης {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Σημείο Καθοδήγησης {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Αμαξοστάσιο Τρένων {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Αμαξοστάσιο Τρένων {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Αμαξοστάσιο Οχημάτων Δρόμου {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Αμαξοστάσιο Οχημάτων Δρόμου {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Ναυπηγείο Πλοίων {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Ναυπηγείο Πλοίων {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :Υπόστεγο {STATION} STR_UNKNOWN_STATION :άγνωστος σταθμός STR_DEFAULT_SIGN_NAME :Πινακίδα STR_COMPANY_SOMEONE :κάποιος STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Θεατής, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/irish.txt0000644000000000000000000130600012246102561015257 0ustar rootroot##name Irish ##ownname Gaeilge ##isocode ga_IE ##plural 4 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x083c ##grflangid 0x08 # $Id: irish.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(teaghrán gan sainmhíniú) STR_JUST_NOTHING :Tada # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Paisinéirí STR_CARGO_PLURAL_COAL :Gual STR_CARGO_PLURAL_MAIL :Post STR_CARGO_PLURAL_OIL :Ola STR_CARGO_PLURAL_LIVESTOCK :Beo-stoc STR_CARGO_PLURAL_GOODS :Earraí STR_CARGO_PLURAL_GRAIN :Arbhar STR_CARGO_PLURAL_WOOD :Adhmad STR_CARGO_PLURAL_IRON_ORE :Amhiarann STR_CARGO_PLURAL_STEEL :Cruach STR_CARGO_PLURAL_VALUABLES :Earraí luachmhara STR_CARGO_PLURAL_COPPER_ORE :Mian Chopair STR_CARGO_PLURAL_MAIZE :Arbhar Indiach STR_CARGO_PLURAL_FRUIT :Torthaí STR_CARGO_PLURAL_DIAMONDS :Diamaint STR_CARGO_PLURAL_FOOD :Bianna STR_CARGO_PLURAL_PAPER :Páipéir STR_CARGO_PLURAL_GOLD :Ór STR_CARGO_PLURAL_WATER :Uiscí STR_CARGO_PLURAL_WHEAT :Cruinneacht STR_CARGO_PLURAL_RUBBER :Rubar STR_CARGO_PLURAL_SUGAR :Siúcra STR_CARGO_PLURAL_TOYS :Bréagáin STR_CARGO_PLURAL_CANDY :Milseáin STR_CARGO_PLURAL_COLA :Cóla STR_CARGO_PLURAL_COTTON_CANDY :Féasóg Daideo STR_CARGO_PLURAL_BUBBLES :Súilíní STR_CARGO_PLURAL_TOFFEE :Taifí STR_CARGO_PLURAL_BATTERIES :Cadhnraí STR_CARGO_PLURAL_PLASTIC :Plaistigh STR_CARGO_PLURAL_FIZZY_DRINKS :Deochanna Súilíneacha # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Paisinéir STR_CARGO_SINGULAR_COAL :Gual STR_CARGO_SINGULAR_MAIL :Post STR_CARGO_SINGULAR_OIL :Ola STR_CARGO_SINGULAR_LIVESTOCK :Beostoc STR_CARGO_SINGULAR_GOODS :Earraí STR_CARGO_SINGULAR_GRAIN :Arbhar STR_CARGO_SINGULAR_WOOD :Adhmad STR_CARGO_SINGULAR_IRON_ORE :Iarnmhian STR_CARGO_SINGULAR_STEEL :Cruach STR_CARGO_SINGULAR_VALUABLES :Earraí luachmhara STR_CARGO_SINGULAR_COPPER_ORE :Mian Chopair STR_CARGO_SINGULAR_MAIZE :Arbhar Indiach STR_CARGO_SINGULAR_FRUIT :Torthaí STR_CARGO_SINGULAR_DIAMOND :Diamant STR_CARGO_SINGULAR_FOOD :Bia STR_CARGO_SINGULAR_PAPER :Páipéar STR_CARGO_SINGULAR_GOLD :Ór STR_CARGO_SINGULAR_WATER :Uisce STR_CARGO_SINGULAR_WHEAT :Cruithneacht STR_CARGO_SINGULAR_RUBBER :Rubar STR_CARGO_SINGULAR_SUGAR :Siúcra STR_CARGO_SINGULAR_TOY :Bréagán STR_CARGO_SINGULAR_CANDY :Milseán STR_CARGO_SINGULAR_COLA :Cóla STR_CARGO_SINGULAR_COTTON_CANDY :Féasóg Daideo STR_CARGO_SINGULAR_BUBBLE :Súilín STR_CARGO_SINGULAR_TOFFEE :Taifí STR_CARGO_SINGULAR_BATTERY :Ceallra STR_CARGO_SINGULAR_PLASTIC :Plaisteach STR_CARGO_SINGULAR_FIZZY_DRINK :Deoch Súilíneach # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} paisinéir{P amháin "" í í ""} STR_QUANTITY_COAL :{WEIGHT_LONG} guail STR_QUANTITY_MAIL :{COMMA} mála{P "" "" "" "" ""} poist STR_QUANTITY_OIL :{VOLUME_LONG} ola STR_QUANTITY_LIVESTOCK :{COMMA} {P m mh m m m}ír{P "" "" "" "" ""} de bheo-stoc STR_QUANTITY_GOODS :{COMMA} {P ch ch ch gc c}ráta{P "" "" "" "" ""} earraí STR_QUANTITY_GRAIN :{WEIGHT_LONG} arbhair STR_QUANTITY_WOOD :{WEIGHT_LONG} adhmaid STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} amhiarainn STR_QUANTITY_STEEL :{WEIGHT_LONG} de chruach STR_QUANTITY_VALUABLES :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} d'earraí luachmhara STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de mhian chopair STR_QUANTITY_MAIZE :{WEIGHT_LONG} d'arbhar Indiach STR_QUANTITY_FRUIT :{WEIGHT_LONG} de thorthaí STR_QUANTITY_DIAMONDS :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} de dhiamaint STR_QUANTITY_FOOD :{WEIGHT_LONG} de bhia STR_QUANTITY_PAPER :{WEIGHT_LONG} de pháipéar STR_QUANTITY_GOLD :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} d'ór STR_QUANTITY_WATER :{VOLUME_LONG} d'uisce STR_QUANTITY_WHEAT :{WEIGHT_LONG} de chruinneacht STR_QUANTITY_RUBBER :{VOLUME_LONG} de rubar STR_QUANTITY_SUGAR :{WEIGHT_LONG} de shiúcra STR_QUANTITY_TOYS :{COMMA} {P bh bh bh mb b}réagán STR_QUANTITY_SWEETS :{COMMA} {P mh mh mh m m}ála{P "" "" "" "" ""} of sweets STR_QUANTITY_COLA :{VOLUME_LONG} de chóla STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} d'fhéasóg Daideo STR_QUANTITY_BUBBLES :{COMMA} {P sh sh sh s s}súilín{P "" "" "" "" ""} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de thaifí STR_QUANTITY_BATTERIES :{COMMA} {P ch ch ch gc c}eallra{P "" "" "" "" ""} STR_QUANTITY_PLASTIC :{VOLUME_LONG} de phlaisteach STR_QUANTITY_FIZZY_DRINKS :{COMMA} {P dh dh dh nd n}eoch súilíneach STR_QUANTITY_N_A :N/B # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}P STR_ABBREV_COAL :{TINY_FONT}GL STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}BS STR_ABBREV_GOODS :{TINY_FONT}EA STR_ABBREV_GRAIN :{TINY_FONT}AR STR_ABBREV_WOOD :{TINY_FONT}AD STR_ABBREV_IRON_ORE :{TINY_FONT}IA STR_ABBREV_STEEL :{TINY_FONT}CR STR_ABBREV_VALUABLES :{TINY_FONT}EL STR_ABBREV_COPPER_ORE :{TINY_FONT}CO STR_ABBREV_MAIZE :{TINY_FONT}AI STR_ABBREV_FRUIT :{TINY_FONT}TO STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}BI STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}ÓR STR_ABBREV_WATER :{TINY_FONT}UI STR_ABBREV_WHEAT :{TINY_FONT}CR STR_ABBREV_RUBBER :{TINY_FONT}RB STR_ABBREV_SUGAR :{TINY_FONT}SI STR_ABBREV_TOYS :{TINY_FONT}BR STR_ABBREV_SWEETS :{TINY_FONT}MI STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}FD STR_ABBREV_BUBBLES :{TINY_FONT}SÚ STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}CE STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}DS STR_ABBREV_NONE :{TINY_FONT}TD STR_ABBREV_ALL :{TINY_FONT}GACH # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} {P ph ph ph bp p}aisinéir STR_BAGS :{COMMA} {P m mh m m m}álaí STR_TONS :{COMMA} {P t th t dt t}ona STR_LITERS :{COMMA} {P l l l l l}ítear STR_ITEMS :{COMMA} {P m mh m m m}ír STR_CRATES :{COMMA} {P ch ch ch gc c}ráta # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Gorm Dorcha STR_COLOUR_PALE_GREEN :Liathuaine STR_COLOUR_PINK :Bándearg STR_COLOUR_YELLOW :Buí STR_COLOUR_RED :Dearg STR_COLOUR_LIGHT_BLUE :Bánghorm STR_COLOUR_GREEN :Uaine STR_COLOUR_DARK_GREEN :Ciaruaine STR_COLOUR_BLUE :Gorm STR_COLOUR_CREAM :Uachtar STR_COLOUR_MAUVE :Liathchorcra STR_COLOUR_PURPLE :Corcra STR_COLOUR_ORANGE :Oráiste STR_COLOUR_BROWN :Donn STR_COLOUR_GREY :Liath STR_COLOUR_WHITE :Bán # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} m/u STR_UNITS_VELOCITY_METRIC :{COMMA} km/u STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tona{P "" "" "" "" ""} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} lítear{P "" "" "" "" ""} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} tr STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK}Iontráil teaghráin scagaire STR_LIST_FILTER_TOOLTIP :{BLACK}Iontráil eochairfhocal chun an liosta a scagadh di STR_TOOLTIP_SORT_ORDER :{BLACK}Roghnaigh ord sórtála (ardaitheach/íslitheach) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Roghnaigh critéir sórtála STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Roghnaigh critéir scagtha STR_BUTTON_SORT_BY :{BLACK}Sórtáil de réir STR_BUTTON_LOCATION :{BLACK}Suíomh STR_BUTTON_RENAME :{BLACK}Athainmnigh STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Dún an fhuinneog STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Teideal fuinneoige - tarraing é seo chun fuinneog a bhogadh STR_TOOLTIP_SHADE :{BLACK}Cuir fuinneog faoi scáth - ná taispeáin ach an barra teidil STR_TOOLTIP_DEBUG :{BLACK}Taispeáin faisnéis dífhabhtaithe NewGRF STR_TOOLTIP_STICKY :{BLACK}Marcáil an fhuinneog seo mar cheann nach féidir a dhúnadh leis an eochair 'Dún gach fuinneog' STR_TOOLTIP_RESIZE :{BLACK}Cliceáil agus tarraing chun méid na fuinneoige seo a athrú STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Scoránaigh méid fuinneoige mór/beag STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbharraí - déantar liosta a scrollú suas/síos STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scrollbharraí - déantar liosta a scrollú ar dheis/ar chlé STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Leag foirgnimh msh. ar chearnóg talún # Query window STR_BUTTON_DEFAULT :{BLACK}Réamhshocrú STR_BUTTON_CANCEL :{BLACK}Cealaigh STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Fad: {NUM} STR_MEASURE_AREA :{BLACK}Achar: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Fad: {NUM}{}Difríocht san airde: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Achar: {NUM}x {NUM}{}Difríocht san airde: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Daonra STR_SORT_BY_CAPTION_NAME :{BLACK}Ainm STR_SORT_BY_CAPTION_DATE :{BLACK}Dáta # These are used in dropdowns STR_SORT_BY_NAME :Ainm STR_SORT_BY_PRODUCTION :Ag táirgeadh STR_SORT_BY_TYPE :Cineál STR_SORT_BY_TRANSPORTED :Á Iompar STR_SORT_BY_NUMBER :Líon STR_SORT_BY_PROFIT_LAST_YEAR :Brabús anuraidh STR_SORT_BY_PROFIT_THIS_YEAR :Brabús i mbliana STR_SORT_BY_AGE :Aois STR_SORT_BY_RELIABILITY :Iontaofacht STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Méid iomlán in aghaidh an chineáil lastais STR_SORT_BY_MAX_SPEED :Luas uasta STR_SORT_BY_MODEL :Múnla STR_SORT_BY_VALUE :Luach STR_SORT_BY_LENGTH :Fad STR_SORT_BY_LIFE_TIME :Saolré fágtha STR_SORT_BY_TIMETABLE_DELAY :Moill san amchlár STR_SORT_BY_FACILITY :Cineál stáisiúin STR_SORT_BY_WAITING :Luach an lastais atá ag fanacht STR_SORT_BY_RATING_MAX :Rátáil lastais is airde STR_SORT_BY_RATING_MIN :Rátáil lastais is ísle STR_SORT_BY_ENGINE_ID :ID an Innill (sórtáil chlaisiceach) STR_SORT_BY_COST :Costas STR_SORT_BY_POWER :Cumhacht STR_SORT_BY_TRACTIVE_EFFORT :Iarracht tarraingthe STR_SORT_BY_INTRO_DATE :Dáta a tugadh isteach é STR_SORT_BY_RUNNING_COST :Costas le Rith STR_SORT_BY_POWER_VS_RUNNING_COST :Cumhacht/Costas le Rith STR_SORT_BY_CARGO_CAPACITY :Méid an Lastais STR_SORT_BY_RANGE :Raon # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Cuir an cluiche ar sos STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Bog an cluiche ar aghaidh go scioptha STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Roghanna STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Sábháil cluiche, fág cluiche, scoir STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Taispeáin léarscáil, amharc breise nó liosta comharthaí STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Taispeáin liosta na mbailte STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Taispeáin fordheontais STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Taispeáin liosta de stáisiúin na cuideachta STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Taispeáin faisnéis airgeadais faoin gcuideachta STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Taispeáin faisnéis ginearálta faoin gcuideachta STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Taispeáin graif STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Taispeáin tábla sraithe na gcuideachtaí STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Tabhair maoiniú do thionscal nua nó liosta de gach tionscal STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Taispeáin liosta de thraenacha na cuideachta. Déantar scoránú ar liosta na ngrúpaí/bhfeithiclí a oscailt le Ctrl+Cliceáil STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Taispeáin liosta d'fheithiclí bóithre na cuideachta. Déantar scoránú ar liosta na ngrúpaí/bhfeithiclí a oscailt le Ctrl+Cliceáil STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Taispeáin liosta de longa na cuideachta. Déantar scoránú ar liosta na ngrúpaí/bhfeithiclí a oscailt le Ctrl+Cliceáil STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Taispeáin liosta d'aerárthaigh na cuideachta. Déantar scoránú ar liosta na ngrúpaí/bhfeithiclí a oscailt le Ctrl+Cliceáil STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zúmáil isteach STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zúmáil amach STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tóg iarnród STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Tóg bóithre STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Tóg duganna STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Tóg aerfoirt STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Oscail an barra uirlisí tírdhreacha chun talamh a ardú/ísliú, crainnte a chur, srl. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Taispeáin an fhuinneoig fuaime/ceoil STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Taispeáin an teachtaireacht/tuairisc nuachta deiridh, taispeáin roghanna do theachtaireachtaí STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Faisnéis faoin talamh, consól, dífhabhtú AI, seatanna scáileáin, maidir le OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Athraigh barraí uirlisí # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Sábháil scéal, lódáil scéal, fág eagarthóir na scéalta, scoir STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}Oscail TTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Eagarthóir Scéalta STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Cuir an dáta tosaigh siar bliain amháin STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Cuir an dáta tosaigh ar aghaidh bliain amháin STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Cliceáil chun an dáta tosaigh a iontráil STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Taispeáin léarscáil, liosta na mbailte STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Tírdhreach a chruthú STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Baile a chruthú STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Tionscal a chruthú STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Bóithre a thógáil STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Crainnte a chur STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Comhartha a chur STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Cuir síos oibiacht ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Sábháil scéal STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Lódáil scéal STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Sábháil mapa airde STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Lódáil léarscáil airde STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Fág eagarthóir na scéalta STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Scoir ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Roghanna an chluiche STR_SETTINGS_MENU_CONFIG_SETTINGS :Ardsocruithe STR_SETTINGS_MENU_SCRIPT_SETTINGS :Socruithe scripte AI/Cluiche STR_SETTINGS_MENU_NEWGRF_SETTINGS :Socruithe NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Roghanna trédhearcachta STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Taispeántar ainmneacha bailte STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Taispeántar ainmneacha na stáisiún STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Taispeántar ainmneacha na bpointí bealaigh STR_SETTINGS_MENU_SIGNS_DISPLAYED :Taispeántar comharthaí STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Taispeántar comharthaí agus ainmneacha iomaitheoirí STR_SETTINGS_MENU_FULL_ANIMATION :Míreanna beochana iomlán STR_SETTINGS_MENU_FULL_DETAIL :Sonraí iomlán STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Foignimh trédhearcacha STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Comharthaí trédhearcacha ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Sábháil an cluiche STR_FILE_MENU_LOAD_GAME :Lódáil cluiche STR_FILE_MENU_QUIT_GAME :Fág cluiche STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Scoir ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Léarscáil den domhan STR_MAP_MENU_EXTRA_VIEW_PORT :Fuinneog amhairc bhreise STR_MAP_MENU_SIGN_LIST :Liosta na gcomharthaí ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Liosta bailte STR_TOWN_MENU_FOUND_TOWN :Aimsíodh baile ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Fordheontais STR_SUBSIDIES_MENU_GOAL :Spriocanna reatha ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Graf den bhrabús oibriúcháin STR_GRAPH_MENU_INCOME_GRAPH :Graf den ioncam STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Graf den lastas a seachadadh STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Graf den stair feidhmíochta STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Graf de luach na cuideachta STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Rátaí íocaíochta do lastas ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Tábla sraithe na gcuideachtaí STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Rátáil feidhmíochta mionsonraithe ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Liosta de na tionscail STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Déan maoiniú ar thionscal nua ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Tógáil iarnróid STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Tógáil iarnróid leictrithe STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Tógáil iarnród aonráille STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Tógáil maglev ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Tógáil bóithre STR_ROAD_MENU_TRAM_CONSTRUCTION :Tógáil trambhealaigh ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Tógáil uiscebhealaí ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Tógáil aerfoirt ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Tírdhreachú STR_LANDSCAPING_MENU_PLANT_TREES :Crainnte a chur STR_LANDSCAPING_MENU_PLACE_SIGN :Comhartha a chur ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Fuaim/ceol ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Teachtaireacht/tuairisc nuachta deiridh STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Stair na dteachtaireachtaí ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Faisnéis faoin limistéar talún STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Scoránaigh consól STR_ABOUT_MENU_AI_DEBUG :Dífhabhtú scripteanna AI/Cluiche STR_ABOUT_MENU_SCREENSHOT :Seat scáileáin STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Seat scáileáin zúmáilte isteach go hiomlán STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Seat scáileáin le zúm réamhshocraithe STR_ABOUT_MENU_GIANT_SCREENSHOT :Seat scáileáin den léarscáil ar fad STR_ABOUT_MENU_ABOUT_OPENTTD :Maidir le 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Ailínóir spriteanna STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Scoránaigh boscaí imill STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Scor anaigh dath na mbloc salacha ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1ú STR_ORDINAL_NUMBER_2ND :2ú STR_ORDINAL_NUMBER_3RD :3ú STR_ORDINAL_NUMBER_4TH :4ú STR_ORDINAL_NUMBER_5TH :5ú STR_ORDINAL_NUMBER_6TH :6ú STR_ORDINAL_NUMBER_7TH :7ú STR_ORDINAL_NUMBER_8TH :8ú STR_ORDINAL_NUMBER_9TH :9ú STR_ORDINAL_NUMBER_10TH :10ú STR_ORDINAL_NUMBER_11TH :11ú STR_ORDINAL_NUMBER_12TH :12ú STR_ORDINAL_NUMBER_13TH :13ú STR_ORDINAL_NUMBER_14TH :14ú STR_ORDINAL_NUMBER_15TH :15ú STR_ORDINAL_NUMBER_16TH :16ú STR_ORDINAL_NUMBER_17TH :17ú STR_ORDINAL_NUMBER_18TH :18ú STR_ORDINAL_NUMBER_19TH :19ú STR_ORDINAL_NUMBER_20TH :20ú STR_ORDINAL_NUMBER_21ST :21ú STR_ORDINAL_NUMBER_22ND :22ú STR_ORDINAL_NUMBER_23RD :23ú STR_ORDINAL_NUMBER_24TH :24ú STR_ORDINAL_NUMBER_25TH :25ú STR_ORDINAL_NUMBER_26TH :26ú STR_ORDINAL_NUMBER_27TH :27ú STR_ORDINAL_NUMBER_28TH :28ú STR_ORDINAL_NUMBER_29TH :29ú STR_ORDINAL_NUMBER_30TH :30ú STR_ORDINAL_NUMBER_31ST :31ú ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Ean STR_MONTH_ABBREV_FEB :Fea STR_MONTH_ABBREV_MAR :Már STR_MONTH_ABBREV_APR :Aib STR_MONTH_ABBREV_MAY :Bea STR_MONTH_ABBREV_JUN :Mei STR_MONTH_ABBREV_JUL :Iúil STR_MONTH_ABBREV_AUG :Lún STR_MONTH_ABBREV_SEP :M.Fómh STR_MONTH_ABBREV_OCT :D.Fómh STR_MONTH_ABBREV_NOV :Samh STR_MONTH_ABBREV_DEC :Noll STR_MONTH_JAN :Eanáir STR_MONTH_FEB :Feabhra STR_MONTH_MAR :Márta STR_MONTH_APR :Aibreán STR_MONTH_MAY :Bealtaine STR_MONTH_JUN :Meitheamh STR_MONTH_JUL :Iúil STR_MONTH_AUG :Lúnasa STR_MONTH_SEP :Meán Fómhair STR_MONTH_OCT :Deireadh Fómhair STR_MONTH_NOV :Samhain STR_MONTH_DEC :Nollaig ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Eochair STR_GRAPH_KEY_TOOLTIP :{BLACK}Taispeáin eochair na ngraf STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graf den bhrabús oibriúcháin STR_GRAPH_INCOME_CAPTION :{WHITE}Graf den Ioncam STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Aonad lastais a seachadadh STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Rátálacha feidhmíochta cuideachtaí (uasrátáil=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Luachanna cuideachta STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Rátaí íocaíochta do lastas STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Laethanta faoi bhealach STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Íocaíocht as 10 n-aonad (nó 10,000 lítear) de lastas a sheachadadh fad 20 cearnóg STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Cumasaigh gach STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Díchumasaigh gach STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Taispeáin gach lastas ar ghraf rátaí íocaíochta lastais STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Ná taispeáin lastas ar bith ar ghraf rátaí íocaíochta lastais STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Scoránaigh an graf don chineál lastais air/as STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Taispeáin rátálacha feidhmíochta mionsonraithe # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Eochair do ghraif na gcuideachtaí STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Cliceáil anseo chun iontráil cuideachta ar ghraf a scoránú air/as # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tábla Sraithe na gCuideachtaí STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Innealtóir STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Bainisteoir Tráchta STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Comhordaitheoir Iompair STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Maoirseoir Bealach STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Stiúrthóir STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Príomhfheidhmeannach STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Cathaoirleach STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Uachtarán STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Toicí # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Rátáil feidhmíochta mionsonraithe STR_PERFORMANCE_DETAIL_KEY :{BLACK}Sonraí STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Féach ar na sonraí faoin gcuideachta seo ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Feithiclí: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stáisiúin: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Brabús íosta: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ioncam íosta: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Ioncam uasta: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Seachadta: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Lastas: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Airgead: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Iasacht: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Iomlán: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Líon na bhfeithiclí a rinne brabús anuraidh, Áirítear leis seo feithiclí bóithre, traenacha, longa agus aerárthaigh STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Líon na gcodanna stáisiún a ndearnadh seirbhísiú orthu le déanaí. Áirítear gach cuid de stáisiún (m.sh. stáisiún traenach, stad bus, aerfort), fiú amháin má tá siad ceangailte mar stáisiún amháin STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Brabús na feithicle a bhfuil an t-ioncam is ísle aici (ní thógtar san áireamh ach feithiclí atá níos mó ná 2 bhliain d'aois) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}An méid airgead a rinneadh sa ráithe ina raibh an brabús is ísle le 12 ráithe anuas STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}An méid airgid a rinneadh sa ráithe ina raibh an brabús is airde le 12 ráithe anuas STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Aonaid lastais a seachadadh le ceithre ráithe anuas STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Líon na gcineálacha lastais a seachadadh sa ráithe deiridh STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}An méid airgid atá ag an gcuideachta seo sa bhanc STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}An méid airgid atá glactha ag an gcuideachta seo mar iasacht STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Pointí iomlán as na pointí féideartha # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Júcbhosca Snagcheoil STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Gach STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Sean-stíl STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Stíl nua STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Saincheaptha 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Saincheaptha 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Airde Ceoil STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Airde na maisíochtaí STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}ÍOSTA STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}UASTA STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Rian STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Teideal STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Ord randamach STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Clár STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Scipeáil chuig an rian roimhe sa roghnúchán STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Scipeáil chuig an gcéad rian eile sa roghnúchán STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stop ag seinm ceoil STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Tosaigh ag seinm ceoil STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Tarraing na sleamhnáin chun airdí a shocrú don cheol agus do mhaisíochtaí fuaime STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Roghnaigh an clár 'gach rian' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Roghnaigh an clár 'ceol seanstíle' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Roghnaigh an clár 'ceol sa stíl nua' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Roghnaigh an clár 'ceol sa stíl Ezy Street' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Roghnaigh an clár 'Saincheaptha 1' (sainithe ag an úsáideoir) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Roghnaigh an clár 'Saincheaptha 2' (sainithe ag an úsáideoir) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Scoránaigh ord randamach clár air/as STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Taispeáin an fhuinneogh chun rianta ceoil a roghnú STR_ERROR_NO_SONGS :{WHITE}Roghnaíodh sraith ceoil gan aon amhrán ann. Ní sheinnfear aon amhrán # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Clár Ceoil a Roghnú STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Innéacs na Rianta STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Clár - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Glan STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Glan an clár reatha (Saincheaptha1 nó Saincheaptha2 amháin) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Cliceáil ar rian ceoil chun é a chur leis an gclár reatha (Saincheaptha1 nó Saincheaptha2 amháin) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Cliceáil ar rian ceoil chun é a bhaint ón gclár reatha (Saincheaptha1 nó Sainche # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Cuideachtaí is fearr a bhain amach {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tábla Sraithe na gCuideachtaí in {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Fear gnó STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Fiontraí STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Tionsclaí STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Caipitlí STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Móruasal STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mógal STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Toicí an Chéid STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}Baineann {COMPANY} an stádas '{STRING}' amach! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}Baineann {PRESIDENT_NAME} ó {COMPANY} an stádas '{STRING}' amach! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Léarscáil - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Camchuair STR_SMALLMAP_TYPE_VEHICLES :Feithiclí STR_SMALLMAP_TYPE_INDUSTRIES :Tionscail STR_SMALLMAP_TYPE_ROUTES :Bealaí STR_SMALLMAP_TYPE_VEGETATION :Fásra STR_SMALLMAP_TYPE_OWNERS :Úinéirí STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Taispeáin camchuaireanna na talún ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Taispeáin feithiclí ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Taispeáin tionscail ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Taispeáin bealaí iompair ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Taispeáin fásra ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Taispeáin úinéirí talún ar an léarscáil STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Bóithre STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Iarnróid STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stáisiúin/Aerfoirt/Duganna STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Foirgnimh/Tionscail STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Feithiclí STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Traenacha STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Feithiclí Bóithre STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Longa STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aerárthaigh STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Bealaí Iompair STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Foraois STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Stáisiún Iarnróid STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Bá Lódála Leoraithe STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Stáisiún Bus STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aerfort/Héileaport STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Dug STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Talamh Garbh STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Talamh Féir STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Talamh Lom STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Garrantaí STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Crainnte STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Carraigeacha STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Uisce STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Gan Úinéir STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Bailte STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Tionscail STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Fásach STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sneachta STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Scoránaigh ainmneacha na mbailte air/as ar an léarscáil STR_SMALLMAP_CENTER :{BLACK}Láraigh an léarscáil beag ar an suíomh reatha STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Díchumasaigh gach STR_SMALLMAP_ENABLE_ALL :{BLACK}Cumasaigh gach STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Taispeáin airde STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Ná taispeáin aon tionscal ar an léarscáil STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Taispeáin gach tionscal ar an léarscáil STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Scoránaigh an mapa airde a thaipeáint STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ná taispeáin maoin ar bith na cuideachta ar an léarscáil STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Taispeáin maoin uile na cuideachta ar an léarscáil # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Taispeáin an teachtaireacht nó an tuairic nuachta deiridh STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * AR SOS * * STR_STATUSBAR_AUTOSAVE :{RED}UATHSHÁBHÁIL STR_STATUSBAR_SAVING_GAME :{RED}* * CLUICHE Á SHÁBHÁIL * * # News message history STR_MESSAGE_HISTORY :{WHITE}Stair na dteachtaireachtaí STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Liosta de gach teachtaireacht nuachta le déanaí STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Teachtaireacht STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad traein isteach ag {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad bus isteach ag {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad trucail isteach ag {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad tram paisinéirí isteach ag {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad tram lastais isteach ag {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad long isteach ag {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Saoránaigh ag ceiliúradh . . .{}Tagann an chéad aerártha isteach ag {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Tubaiste Traenach!{}Maraítear {COMMA} i liathróid tine tar éis imbhuailte STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Tubaiste Feithicle Bóthair!{}Maraítear an tiománaí i liathróid tine tar éis imbhuailte STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Tubaiste Feithicle Bóthair!{}Maraítear {COMMA} i liathróid tine tar éis imbhuailte STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Tuaiste Eitleáin!{}Maraítear {COMMA} i liathróid tine ag {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Timpiste Eitleáin!{}Rith an t-aerártha amach as breosla, maraítear {COMMA} i liathróid tine STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Tubaiste Seipilín ag {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Scriostar feithicil bóthair in imbhualadh le 'UFO'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Pléascann scaglann ola in aice le {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Scriostar monarcha in imthosca amhrasacha in aice le {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}Tagann 'UFO' i dtír in aice le {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Déantar léirscrios nuair a thiteann sloc mianaigh isteach in aice le {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Tuillte!{}Ar a laghad {COMMA} ar iarraidh, glactar leis iad a bheith marbh tar éis tuilte! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Cuideachta iompar faoi bhrú! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Díolfar {STRING} nó fógrófar go bhfuil sé féimheach mura dtagann feabhas ar a fheidhmíocht go luath! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Cumasc idir cuideachtaí iompair! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}Díoladh {STRING} le {STRING} ar {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Féimheach! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} dúnta síos ag creidiúnaithe agus gach sócmhainn díolta! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Seoladh cuideachta iompair nua! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}Téann {STRING} i mbun tógála in aice le {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}Seilbh ar {STRING} glactha ag {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Bainisteoir) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Rinne {STRING} urraíocht chun baile nua a thógáil, {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} nua á thógáil in aice le {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} nua á chur in aice le {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}Fógraíonn {STRING} go bhfuil sé ar tí dúnadh! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Fógraíonn {STRING} go bhfuil sé ar tí dúnadh de bharr fadhbanna leis an soláthar! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Fógraíonn {STRING} go bhfuil sé ar tí dúnadh mar gheall nach bhfuil aon chrainnte in aice leis! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}An tAontas Airgeadaíochta Eorpach!{}{}Tugtar isteach an Euro mar an t-aon airgeadra i gcomhair idirbhearta laethúla i do thír! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Cúlú Domhanda!{}{}Saineolaithe airgeadais an-bhuartha faoin tobthitim sa gheilleagar! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Cúlú Thart!{}{}Ardú meanman i measc lucht tionscail de bharr an chora chun feabhais sa trádáil agus an geilleagar ag neartú! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}Tháinig méadú ar tháirgeadh {INDUSTRY}! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Aimsítear síog ghuail nua ag {INDUSTRY}!{}Meastar go dtiocfaidh méadú faoi dhó ar tháirgeadh! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Aimsítear stoc ola nua ag {INDUSTRY}!{}Meastar go dtiocfaidh méadú faoi dhó ar tháirgeadh! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Meastar go dtiocfaidh méadú faoi dhó ar tháirgeadh ag {INDUSTRY} mar gheall ar feabhsuithe sna modhanna feirmeoireachta! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Tagann méadú ar tháirgeadh {STRING} ag {INDUSTRY} de {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Tagann laghdú 50% ar tháirgeadh ag {INDUSTRY} STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Déantar robach de bharr inmhíolú feithidí ag {INDUSTRY}!{}Lagdhú 50% ar tháirgeadh STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Tagann laghdú ar tháirgeadh {STRING} ag {INDUSTRY} de {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san iosta STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}Tá feithicil {VEHICLE} ag fanacht san iosta STR_NEWS_SHIP_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san iosta STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}Tá {VEHICLE} ag fanacht san haingear # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Níl a ndóthain orduithe ag {VEHICLE} sa sceideal STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Tá ordú folamh ag {VEHICLE} STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Tá orduithe dúbailte ag {VEHICLE} STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Tá stáisiún neamhbhailí ag {VEHICLE} ina chuid orduithe # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}Tá {VEHICLE} ag fáil sean STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}Tá {VEHICLE} ag fáil an-sean STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}Tá {VEHICLE} ag fáil an-sean agus ní mór é a ionadú go práinneach STR_NEWS_TRAIN_IS_STUCK :{WHITE}Ní féidir le {VEHICLE} bealach a aimsiú le leanúint ar aghaidh. STR_NEWS_VEHICLE_IS_LOST :{WHITE}Tá {VEHICLE} caillte. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Rinne {VEHICLE} brabús de {CURRENCY_LONG} anuraidh STR_NEWS_ORDER_REFIT_FAILED :{WHITE}Stop {VEHICLE} mar gheall gur theip ar athfheistiú a ordaíodh STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Theip ar uath-athnuachan ar {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Tá {STRING} nua ar fáil anois! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Tá {STRING} nua ar fáil anois! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}Ní ghlacann {STATION} le {STRING} a thuilleadh STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}Ní ghlacann {STATION} le {STRING} ná le {STRING} a thuilleadh STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}Glacann {STATION} le {STRING} anois STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}Glacann {STATION} le {STRING} agus le {STRING} anois STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Fordheontas a tairiscíodh imithe as dáta:{}{}Ní thabharfar fordheontas ar {STRING} ó {STRING} go {STRING} anois. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Fordheontas tarraingte siar:{}{}Ní thabharfar fordheontas ar sheirbhís {STRING} ó {STRING} go {STRING} a thuilleadh. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Déantar fordheontas seirbhíse a thairiscint:{}{}Tabharfaidh an t-údarás aitiúil fordheontas bliana don chéad seirbhís {STRING} ó {STRING} go {STRING}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Tabharfar 50% breise ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí dúbailte ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí faoi thrí ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Bronnadh fordheontas seirbhíse ar {STRING}!{}{}Íocfar rátaí faoi cheathair ar feadh bliana don tseirbhís {STRING} ó {STRING} go {STRING}! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Anord tráchta in {TOWN}!{}{}Beidh 6 mhí de chrá croí do thiománaithe de bharr clár atógáil bóithre arna maoiniú ag {STRING}! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Amharc {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Cóipeáil chuig amharc STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Cóipeáil suíomh an phríomh-amhairc chuig an amharc seo STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Greamaigh ón amharc STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Gramaigh suíomh an amhairc seo chuig an bpríomh-amharc # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Roghanna Cluiche STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Aonaid airgeadra STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Aonaid airgeadra a roghnú ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Punt na Breataine (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Dollar Mheiriceá (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Yen na Seapáine (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Scilling na hOstaire (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Franc na Beilge (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Franc na hEilbhéise (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Phoblacht na Seice (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Krone na Danmhairge (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Peseta na Spáinne (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Markka na Fionlainne (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franc na Fraince (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Drachma na Gréige (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Forint na hUngáire (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Krona na hÍoslainne (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Lira na hIodáile (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Guilder na hÍsiltíre (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Krone na hIorua (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Złoty na Polainne (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Leu na Rómáine (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rúbal na Rúise (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Tolar na Slóivéine (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Krona na Sualainne (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Lira na Tuirce (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Koruna na Slováice (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Real na Brasaíle (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Krooni na hEastóine (EEK) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Saincheaptha... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Aonaid tomhais STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Aonaid tomhais a roghnú ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Impiriúil STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Méadrach STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Feithiclí Bóithre STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh an taobh den bhóthair ar a mbeidh feithiclí ag tiomáint STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Tiomáin ar chlé STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Tiomáin ar dheis STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Ainmneacha na mbailte STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh stíl d'ainmneacha na mbailte ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Béarla (Bunaidh) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Fraincis STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Gearmáinis STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Béarla (Breise) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Meiriceá Laidineach STR_GAME_OPTIONS_TOWN_NAME_SILLY :Áiféiseach STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sualainnis STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Ollainnis STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Fionlainnis STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polainnis STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slováicis STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Ioruais STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungárach STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Ostarach STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rómánach STR_GAME_OPTIONS_TOWN_NAME_CZECH :Seiceach STR_GAME_OPTIONS_TOWN_NAME_SWISS :Eilvéiseach STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danmhargach STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turcach STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Iodálach STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalónach ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Uathshábháil STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh eatramh idir uathshábhálacha an chluiche STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :As STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Gach mí STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Gach 3 mí STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Gach 6 mí STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Gach 12 mí STR_GAME_OPTIONS_LANGUAGE :{BLACK}Teanga STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Roghnaigh an teanga comhéadain le húsáid STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Lánscáileán STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Cuir tic sa bhosca seo chun OpenTTD a imirt sa mhód lánscáileáin STR_GAME_OPTIONS_RESOLUTION :{BLACK}Taifeach scáileáin STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Roghnaigh an taifeach scáileáin le húsáid STR_GAME_OPTIONS_RESOLUTION_OTHER :eile STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formáid seatanna scáileáin STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Roghnaigh an formáid le húsáid do sheatanna scáileáin STR_GAME_OPTIONS_BASE_GRF :{BLACK}Sraith graifice bunaidh STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Roghnaigh an sraith grafaice bunaidh le húsáid STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P ch ch ch gc c}omhad ar iarraidh/truaillithe STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Faisnéis breise faoin sraith grafaice bunaidh STR_GAME_OPTIONS_BASE_SFX :{BLACK}Sraith fuaimeanna bunaidh STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Roghnaigh an tsraithe fuaimeanna bunaidh le húsáid STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Faisnéis breise faoin tsraith fuaimeanna bunaidh STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Sraith ceoil bunaidh STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Roghnaigh an tsraith ceoil bunaidh le húsáid STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P ch ch ch gc c}omhad truaillithe STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Faisnéis breise faoin tsraith ceoil bunaidh STR_ERROR_FULLSCREEN_FAILED :{WHITE}Theip ar an mód lánscáileáin # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Airgeadra saincheaptha STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Ráta malairte: {ORANGE}{CURRENCY_LONG} = € {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Laghdaigh méid d'airgeadra ar Euro (€) amháin STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Méadaigh méid d'airgeadra ar Euro (€) amháin STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Socraigh ráta malairte d'airgeadra ar Euro (€) amháin STR_CURRENCY_SEPARATOR :{LTBLUE}Deighilteoir: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Socraigh an deighilteoir dod' airgeadra STR_CURRENCY_PREFIX :{LTBLUE}Réimír: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Socraigh an teaghrán réimíre dod' airgeadra STR_CURRENCY_SUFFIX :{LTBLUE}Iarmhír: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Socraigh an teaghrán iarmhíre dod' airgeadra STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Athraigh go Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Athraigh go Euro: {ORANGE}riamh STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Socraigh an bhliain ina n-athrófar chuig an Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Athraigh chuig an Euro níos luaithe STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Athraigh chuig an Euro níos déanaí STR_CURRENCY_PREVIEW :{LTBLUE}Réamhamharc: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Punt (£) i d'airgeadra STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Athraigh paraiméadar d'airgeadra saincheaptha STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Uaslíon na n-iomaitheoirí: {ORANGE}{COMMA} STR_NONE :Ceann ar bith STR_FUNDING_ONLY :Maoiniú amháin STR_MINIMAL :Íosmhéid STR_NUM_VERY_LOW :An íseal STR_NUM_LOW :Íseal STR_NUM_NORMAL :Gnáth STR_NUM_HIGH :Ard STR_NUM_CUSTOM :Saincheaptha STR_NUM_CUSTOM_NUMBER :Saincheaptha ({NUM}) STR_VARIETY_NONE :Gan éagsúlacht STR_VARIETY_VERY_LOW :An-íseal STR_VARIETY_LOW :Íseal STR_VARIETY_MEDIUM :Meánach STR_VARIETY_HIGH :Ard STR_VARIETY_VERY_HIGH :An-ard STR_AI_SPEED_VERY_SLOW :An-mhall STR_AI_SPEED_SLOW :Mall STR_AI_SPEED_MEDIUM :Meánach STR_AI_SPEED_FAST :Scioptha STR_AI_SPEED_VERY_FAST :An-scioptha STR_SEA_LEVEL_VERY_LOW :An-íseal STR_SEA_LEVEL_LOW :Íseal STR_SEA_LEVEL_MEDIUM :Meánach STR_SEA_LEVEL_HIGH :Ard STR_SEA_LEVEL_CUSTOM :Saincheaptha STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Saincheaptha ({NUM}%) STR_RIVERS_NONE :Ceann ar bith STR_RIVERS_FEW :Cúpla ceann STR_RIVERS_MODERATE :Meánach STR_RIVERS_LOT :Go leor STR_DISASTER_NONE :Gan tubaistí STR_DISASTER_REDUCED :Laghdaithe STR_DISASTER_NORMAL :Gnáth STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :An-réidh STR_TERRAIN_TYPE_FLAT :Réidh STR_TERRAIN_TYPE_HILLY :Cnocach STR_TERRAIN_TYPE_MOUNTAINOUS :Sléibhtiúil STR_CITY_APPROVAL_PERMISSIVE :Tugtar cead STR_CITY_APPROVAL_TOLERANT :Fulangach STR_CITY_APPROVAL_HOSTILE :Naimhdeach STR_WARNING_NO_SUITABLE_AI :{WHITE}Níl aon AI oiriúnach ar fáil...{}Is féidir leat roinnt AI a íoslódáil tríd an gcóras 'Inneachar Ar Líne' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Ardsocruithe STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Srian ar an liosta thíos le cineálacha áirithe a leagan síos STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Ulig na Suímh STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Suímh Cliant(nil stóráil i Sábhálann; tionchar gach cliche) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Suímh Cliche(stóráil i Sábhálann; ni tionchar ach cliche nua) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Suímh Cliche(stóráil i Sábhálann; ni tionchar ach an cliche faoi láthair) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Suímh Cuideachta (stóráil i Sábhálann; ni tionchar ach an cuideachta faoi láthair) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Suímh Cuideachta (stóráil i saibhail; ni tionchar ach chuideachta reatha) STR_CONFIG_SETTING_OFF :As STR_CONFIG_SETTING_ON :Air STR_CONFIG_SETTING_DISABLED :díchumasaithe STR_CONFIG_SETTING_COMPANIES_OFF :As STR_CONFIG_SETTING_COMPANIES_OWN :Do chuideachta féin STR_CONFIG_SETTING_COMPANIES_ALL :Gach cuideachta STR_CONFIG_SETTING_NONE :Deatach ar bith STR_CONFIG_SETTING_ORIGINAL :Bunaidh STR_CONFIG_SETTING_REALISTIC :Réalaíoch STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Ar chlé STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Sa lár STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Ar dheis STR_CONFIG_SETTING_BUILDONSLOPES :Ceadaigh tógáil a dhéanamh ar fhánaí agus ar chóstaí: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :Ceadaigh athrú talún faoi fhoirgnimh, ráillí iarnróid srl. (uathfhánú): {STRING} STR_CONFIG_SETTING_CATCHMENT :Ceadaigh ceantair stáisiún ar mhéid níos realaíoch: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Ceadaigh tuilleadh bóithre, droichid agus tolláin ar le baile iad a bhaint: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT :Méid deataigh/splancacha na bhfeithiclí: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Samhail luasghéaraithe do thraenacha: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Samhail luasghéaraithe d'fheithiclí bóthair: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :Cuir cosc ar thraenacha agus ar longa casadh 90° a dhéanamh: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Ceadaigh stáisiúin a changal nach bhfuil taobh lena gcéile: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :Úsáid an algartam lódála feabhsaithe: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :Lódáil feithiclí de réir a chéile: {STRING} STR_CONFIG_SETTING_INFLATION :Boilsciú: {STRING} STR_CONFIG_SETTING_SELECTGOODS :Ná déan lastas a sheachadadh chuig stáisiún ach má tá éileamh ann: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Modh tógála tionscail de láimh go príomhúil: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ceann ar bith STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :cosúil le tionscail eile STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :cuardach STR_CONFIG_SETTING_MULTIPINDTOWN :Ceadaigh tionscail cosúla iolracha in aon bhaile amháin: {STRING} STR_CONFIG_SETTING_SHOWFINANCES :Taispeáin an fhuinneoig airgeadais ag deireadh na bliana: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Bíonn orduithe nua 'gan-stad' mar réamhshocrú: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :Stopann orduithe traenach nua ag {STRING} an ardáin mar reamhshocrú STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :taobh abhus STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :lár STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :taobh thall STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Scuainí feithiclí bóthair (le maisíochtaí candamacha): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Peanáil an fhuinneog agus an luch ag an taobh: {STRING} STR_CONFIG_SETTING_BRIBE :Ceadaigh breabanna a thabhairt don údarás áitiúil: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ceadaigh cearta eisiach iompair a cheannach: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Ceadaigh maoiniú do thógáil bóithre áitiúla: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Ceadaigh airgead a sheoladh chuig cuideachtaí eile: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :Iolraitheoir meáchain don lastas le traenacha troma a ionsamhladh: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :Líon na dtimpistí eitleáin: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ceann ar bith STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :laghdaithe STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :gnáth STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ceadaigh stadanna bóthair 'tiomáin tríd' ar bhóithre ar le bailte iad: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Ceadaigh stopanna bóthair 'tiomáin tríd' ar bhóithre ar le hiomaitheoirí iad: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :Ceadaigh tógáil taobh le stáisiúin: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :Cumasaigh níos mó ná sraith innill NewGRF amháin: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Ní féidir an socrú seo a athrú nuair atá feithiclí ann STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Cothabháil bonneagair: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Ní imíonn aerfoirt as dáta riamh: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Tabhair rabhadh má tá an fheithicil caillte: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :Féach ar orduithe feithicile: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :níl STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :déan é, ach ná tóg feiticlí stoptha san áireamh STR_CONFIG_SETTING_ORDER_REVIEW_ON :ar gach feithicil STR_CONFIG_SETTING_WARN_INCOME_LESS :Tabhair rabhadh má tá ioncam feithicile diúltach: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Ní imíonn feithiclí as dáta riamh: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Déan uathathnuachan ar an bhfeithicil nuair a éiríonn sé sean: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :Uathathnuachan: uasmhéid airgead a theastaíonn le hathnuachan: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :Taispéain daonra an bhaile i lipéad ainm an bhaile: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Tiús na línte sna graif: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Gineadóir talún: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Bunaidh STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Airde na líne sneachta: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Chomh garbh agus atá an tír-raon (TerraGenesis amháin) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :An-mhín STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Mín STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Garbh STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :An-gharbh STR_CONFIG_SETTING_TREE_PLACER :Algartam le crainnte a chur: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Ceann ar bith STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Bunaidh STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Feabhsaithe STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rothlú an mhapa airde: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tuathal STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Deiseal STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Leibhéal airde a fhaighann léarscáil scéil réidh: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Ceadaigh athrú talún ar na tíleanna ag teorainneacha na léarscáile: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Tá tíl amháin nó níos mó ag an taobh thuaidh nach bhfuil folamh STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Tá tíl amháin nó níos mó ag ceann de na taobhanna nach uisce é STR_CONFIG_SETTING_SERVICEATHELIPAD :Déan seirbhísiú ar héileacaptair ag héileapadanna go huathoibríoch: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ceangail an barra uirlisí tírdhreacha leis na barraí uirlisí iarnróid/bóíthre/uisce/aerfort: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Dath na talún a úsáidtear sa léarscáil bheag: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Uaine STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Ciaruaine STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Corcairghorm STR_CONFIG_SETTING_REVERSE_SCROLLING :Aisiompaigh an treo scrollaithe: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :Scrollú mín do na fuinneoga amhairc: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Taispeáin leid uirlise tomhais agu uirlisí tógála áirithe in úsáid: {STRING} STR_CONFIG_SETTING_LIVERIES :Taispeáin libhréithe na gcuideachtaí: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :Ná taispeáin STR_CONFIG_SETTING_LIVERIES_OWN :Do chuideachta féin STR_CONFIG_SETTING_LIVERIES_ALL :Gach cuideachta STR_CONFIG_SETTING_PREFER_TEAMCHAT :Tús áite do chomhrá foirne le : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Feidhm an rotha scrollaithe: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zúmáil an léarscáil STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scrollaigh an léarscáil STR_CONFIG_SETTING_SCROLLWHEEL_OFF :As STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Luas roth scrollaithe an léarscáil: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Aithris deaschliceála: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Ordú+Cliceáil STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Cliceáil STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :As STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollú le cléchliceáil: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Úsáid an formáid dáta {STRING} d'ainmneacha na gcluichí sábháilte STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :fada (31 Noll 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :gearr (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Cuir cluiche ar sos go huathoibríoch agus cluiche nua á thosú: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Agus an cluiche ar sos, ceadaigh: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :gníomh ar bith STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :gach gníomh neamh-thógála STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :gach rud ach gníomhartha a mhionathraíonn an tírdhreach STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :gach gníomh STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bain úsáid as ardliosta na bhfeithiclí {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :Úsáid táscairí lódála: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Taispeáin an t-amchlár i dticeanna seachas i laethanta: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Taispeáin am teacht isteach agus fágála in amchláir: {STRING} STR_CONFIG_SETTING_QUICKGOTO :Orduithe feithiclí a chruthú go scioptha: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Cineál ráille réamhshocraithe (tar éis cluiche nua/cluiche a lódáil): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :An chéad cheann atá ar fáil STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :An cheann deiridh atá ar fáil STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Ceann is mó a úsáidtear STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Taispeáin iarnróid forchoimeádta: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Fág uirlisí tógála gníomhach i ndiaidh úsáide: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Speansais an ghrúpa i bhfuinneog airgeadais cuideachta: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :foirgníochta: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Seinn éifeacht fuaime ar tógálacha rathúil nó gníomhartha eile STR_CONFIG_SETTING_SOUND_CLICK :cnaipe brúite: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :bíp nuair ata cnaipe brúite STR_CONFIG_SETTING_SOUND_DISASTER :Tubaistí / timpistí: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Seinn maisíochtaí fuaime timpistí agus tubaistí STR_CONFIG_SETTING_SOUND_VEHICLE :Feithiclí: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Seinn maisíochtaí fuaime feithiclí STR_CONFIG_SETTING_SOUND_AMBIENT :comhthimpeallach: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Seinn maisíochtaí fuaime comhthimpeallach tírdhreacha, tionscail agus bailte STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Díchumasaigh tógáil bonneagair nuair nach bhfuil aon fheithicil oiriúnach ar fáil: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Uaslíon na dtraenacha in aghaidh na cuideachta: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Uaslíon na bhfeithiclí bóthair in aghaidh na cuideachta: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT :Uaslíon na n-eitleán in aghaidh na cuideachta: {STRING} STR_CONFIG_SETTING_MAX_SHIPS :Uaslíon na long in aghaidh na cuideachta: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Díchumasaigh traenacha don ríomhare: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Díchumasaigh feithiclí bóthair don ríomhaire: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Díchumasaigh aerárthaigh don ríomhare: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Díchumasaigh longa don ríomhare: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Ceadaigh AIanna i gcluiche ilimreora: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :Eatraimh seirbhísithe i gcéatadán: {STRING} STR_CONFIG_SETTING_NOSERVICE :Díchumasaigh seirbhísiú nuair nach mbíonn aon bhriseadh síos: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Cumasaigh teorainneacha luais vaigíní: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :Díchumasaigh ráillí leictreacha: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Tagann an chéad fheiticil isteach i stáisiún imreora: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Tagann an chéad fheithicil isteach i stáisiún iomaitheora: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Timpistí / tubaistí: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Faisnéis cuideachta: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Tionscail ag oscailt: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Tionscail ag dúnadh: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Athruithe sa gheilleagar: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Athruithe sa táirgeadh i measc tionscail a mbíonn an chuideachta ag freastal orthu: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Athruithe sa táirgeadh i measc tionscail a mbíonn iomaitheoir(í) ag freastal orthu: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Athruithe eile i dtáirgeadh tionscail: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :Comhairle / faisnéis maidir le feithiclí na cuideachta: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Feithiclí nua: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Athruithe ar an lastas a nglactar leis: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :Fordheontais: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Faisnéis ginearálta: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :As STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Achoimre STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Iomlán STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Bíonn nuacht daite ann don chéad uair in: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :Bliain tosaigh: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Cumasaigh geilleagar níos míne (tuilleadh athruithe, agus iad níos lú): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :Ceadaigh scaireanna a cheannach ó chuideachtaí eile: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Tóg séamafóir go huathoibríoch roimh: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Cumasaigh GUI na gcomharthaí: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Cineál comhartha le tógáil mar réamhshocrú: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Comharthaí bloc STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Comharthaí cosán STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Comharthaí cosán aonbhealaigh STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Téigh trí na cineálacha comharthaí in ord: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Comharthaí bloc amháin STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Comharthaí cosán amháin STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Gach STR_CONFIG_SETTING_TOWN_LAYOUT :Leagan amach na mbóithre do bhailte nua: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :bunaidh STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :bóithre níos fearr STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :greille 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :greille 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :randamach STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Ceadaítear do bhailte bóithre a thógáil: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Ceadaítear do bhailte crosairí comhréidh a thógáil: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :Ceadaigh leibhéal fuaime rialaithe ag an mbaile d'aerfoirt: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Bailte a bhunú sa chluiche: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :coiscthe STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :ceadaithe STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :ceadaithe, leagan amach bailte saincheaptha STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Áit a chuirtear crainnte sa chluiche: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ná dean{RED}(bristear an muileann adhmaid) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :i bhforaois bháistí amháin STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :gach áit STR_CONFIG_SETTING_TOOLBAR_POS :Suíomh an phríomhbharra uirlisí: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :Suíomh an bharra stádais: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT :Uaslíon na bhfuinneog neamh-ghreamaitheach: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH :Ráta fáis na mbailte: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ceann ar bith STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Mall STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Gnáth STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Scioptha STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :An-scioptha STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Iolraitheoir tosaigh mhéid na gcathracha: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Bain gnéithe bóthair áiféiseacha agus bóithre á dtógáil: {STRING} STR_CONFIG_SETTING_GUI :{ORANGE}Comhéadan STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Tógáil STR_CONFIG_SETTING_VEHICLES :{ORANGE}Feithiclí STR_CONFIG_SETTING_STATIONS :{ORANGE}Stáisiúin STR_CONFIG_SETTING_ECONOMY :{ORANGE}Geilleagar STR_CONFIG_SETTING_AI :{ORANGE}Iomaitheoirí STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Roghanna taispeána STR_CONFIG_SETTING_INTERACTION :{ORANGE}Idirghníomhú STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Comharthaí STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Láimhseáil lastais STR_CONFIG_SETTING_AI_NPC :{ORANGE}Ríomh-imreoirí STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Uathathnuachan STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Seirbhísiú STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Ródú STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Traenacha STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Bailte STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Tionscail STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Molta) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Aimsitheoir bealaigh do thraenacha: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Aimsitheoir bealaigh d'fheithiclí bóthair: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Aimsitheoir bealaigh do longa: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Aisiompú uathoibríoch ag comharthaí: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Athraigh luach an tsocraithe # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Cluiche Nua STR_INTRO_LOAD_GAME :{BLACK}Lódáil Cluiche STR_INTRO_PLAY_SCENARIO :{BLACK}Imir Scéal STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Imir Mapa airde STR_INTRO_SCENARIO_EDITOR :{BLACK}Eagarthóir na Scéalta STR_INTRO_MULTIPLAYER :{BLACK}Ilimreoirí STR_INTRO_GAME_OPTIONS :{BLACK}Roghanna an Chluiche STR_INTRO_ADVANCED_SETTINGS :{BLACK}Ardsocruithe STR_INTRO_NEWGRF_SETTINGS :{BLACK}Socruithe NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Seiceáil Inneachar Ar Líne STR_INTRO_QUIT :{BLACK}Scoir STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Tosaigh cluiche nua. Scipeáltar cumrú an léarscáil le Ctrl+Cliceáil STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Lódáil cluiche sábháilte STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Tosaigh cluiche nua, ag úsáid mapa airde mar thír-raon STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Tosaigh cluiche nua, ag úsáid scéal saincheaptha STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Cruthaigh domhan/scéal saincheaptha don chluiche STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Tosaigh cluiche ilimreoirí STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Roghnaigh stíl tírdhreacha 'measartha' STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Roghnaigh stíl tírdhreacha 'fo-artach' STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Roghnaigh stíl tírdhreacha 'fo-theochriosach' STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Roghnaigh stíl tírdhreacha 'tír na mbréagán' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Taispeáin roghanna an chluiche STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Taispeáin ardsocruithe STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Taispeáin socruithe NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Seiceáil le haghaidh inneachar nua agus nuashonruithe le híoslódáil STR_INTRO_TOOLTIP_QUIT :{BLACK}Téigh amach as 'OpenTTD' # Quit window STR_QUIT_CAPTION :{WHITE}Scoir STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}An bhfuil tú cinnte gur mhaith leat dul amach as OpenTTD agus filleadh ar {STRING}? STR_QUIT_YES :{BLACK}Tá STR_QUIT_NO :{BLACK}Níl # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Fág Cluiche STR_ABANDON_GAME_QUERY :{YELLOW}An bhfuil tú cinnte gur mhaith leat an cluiche seo a fhágáil? STR_ABANDON_SCENARIO_QUERY :{YELLOW}An bhfuil tú cinnte gur mhaith leat an scéal seo a fhágáil? # Cheat window STR_CHEATS :{WHITE}Caimiléireacht STR_CHEATS_TOOLTIP :{BLACK}Tugann ticbhoscaí le fios más rud é gur úsáid tú an chaimiléireacht seo roimhe seo STR_CHEATS_WARNING :{BLACK}Rabhadh! Tá tú ar tí feall a imirt ar do chomhimreoirí. Coinnigh i gcuimhne nach ndéanfar dearmad go brách ar a leithead de náire. STR_CHEAT_MONEY :{LTBLUE}Méadaigh airgead de {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ag imirt mar chuideachta: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Ollscartaire draíochta (bain tionscail, nithe dobhogtha): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Is féidir le tolláin dul trasna a gcéile: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Ní bheidh timpistí ag scairdeitleáin (go minic) ag aerfoirt bheaga: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Tírdhreach measartha STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Tírdhreach fo-artach STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Tírdhreach fo-theochriosach STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Tírdhreach thír na mbréagán STR_CHEAT_CHANGE_DATE :{LTBLUE}Athraigh an dáta: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Athraigh an bhliain reatha STR_CHEAT_SETUP_PROD :{LTBLUE}Cumasaigh luachanna táirgeachta a athrú: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Scéim Dathanna Nua STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Taispeáin scéimeanna dathanna ginearálta STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Taispeáin scéimeanna dathanna na dtraenacha STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Taispeáin scéimeanna dathanna na bhfeithiclí bóthair STR_LIVERY_SHIP_TOOLTIP :{BLACK}Taispeáin scéimeanna dathanna na long STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Taispeáin scéimeanna dathanna na n-aerárthach STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Pioc an dath príomhúil don scéim roghnaithe STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Pioc an dath tánaisteach don scéim roghnaithe STR_LIVERY_PANEL_TOOLTIP :{BLACK}Roghnaigh scéim dathanna le hathrú, nó scéimeanna iolracha le Ctrl+Cliceáil. Cliceáil ar an mbosca chun úsáid na scéime a scoránú STR_LIVERY_DEFAULT :Libhré caighdeánach STR_LIVERY_STEAM :Inneall Gaile STR_LIVERY_DIESEL :Inneall Díosail STR_LIVERY_ELECTRIC :Inneall Leictreach STR_LIVERY_MONORAIL :Inneall Aonráille STR_LIVERY_MAGLEV :Inneall Maglev STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Carráiste Paisinéirí (Gal) STR_LIVERY_PASSENGER_WAGON_DIESEL :Carráiste Paisinéirí (Díosal) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Carráiste Paisinéirí (Leictreach) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Carráiste Paisinéirí (Aonráille) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Carráiste Paisinéirí (Maglev) STR_LIVERY_FREIGHT_WAGON :Vaigín Lastais STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Learaí STR_LIVERY_PASSENGER_SHIP :Bád Farantóireachta Paisinéirí STR_LIVERY_FREIGHT_SHIP :Long Lastais STR_LIVERY_HELICOPTER :Héileacaptar STR_LIVERY_SMALL_PLANE :Eitleán Beag STR_LIVERY_LARGE_PLANE :Eitleán Mór STR_LIVERY_PASSENGER_TRAM :Tram Paisinéirí STR_LIVERY_FREIGHT_TRAM :Tram Lastais # Face selection window STR_FACE_CAPTION :{WHITE}Aghaidh a Roghnú STR_FACE_CANCEL_TOOLTIP :{BLACK}Cealaigh roghnúchán aghaidhe nua STR_FACE_OK_TOOLTIP :{BLACK}Glac leis an aghaidh nua STR_FACE_MALE_BUTTON :{BLACK}Fear STR_FACE_MALE_TOOLTIP :{BLACK}Roghnaigh aghaidheanna fir STR_FACE_FEMALE_BUTTON :{BLACK}Bean STR_FACE_FEMALE_TOOLTIP :{BLACK}Roghnaigh aghaidhanna ban STR_FACE_NEW_FACE_BUTTON :{BLACK}Aghaidh Nua STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Cruthaigh aghaidh nua randamach STR_FACE_ADVANCED :{BLACK}Ardsocruithe STR_FACE_ADVANCED_TOOLTIP :{BLACK}Ardroghnú aghaidhe STR_FACE_SIMPLE :{BLACK}Simplí STR_FACE_SIMPLE_TOOLTIP :{BLACK}Roghnú aghaidhe simplí STR_FACE_LOAD :{BLACK}Lódáil STR_FACE_LOAD_TOOLTIP :{BLACK}Lódáil an aghaidh is fearr leat STR_FACE_LOAD_DONE :{WHITE}Lódáladh an aghaidh is fearr leat ó chomhad cumraíochta OpenTTD STR_FACE_FACECODE :{BLACK}Uimh. aghaidh an imreora STR_FACE_FACECODE_TOOLTIP :{BLACK}Amharc ar agus/nó socraigh uimhir aghaidh uachtarán na cuideachta STR_FACE_FACECODE_CAPTION :{WHITE}Amharc ar agus/nó socraigh uimhir aghaidh an uachtaráin STR_FACE_FACECODE_SET :{WHITE}Socraíodh uimhir aghaidh nua STR_FACE_FACECODE_ERR :{WHITE}Níorbh fhéidir uimhir aghaidhe an imreora a shocrú - ní mór dó a bheith ina uimhir idir 0 agus 4,294,967,295! STR_FACE_SAVE :{BLACK}Sábháil STR_FACE_SAVE_TOOLTIP :{BLACK}Sábháil aghaidh is fearr leat STR_FACE_SAVE_DONE :{WHITE}Sábhálfar an aghaidh mar an ceann is fearr leat i gcomhad cumraíochta OpenTTD STR_FACE_EUROPEAN :{BLACK}Eorpach STR_FACE_SELECT_EUROPEAN :{BLACK}Roghnaigh aghaidheanna Eorpacha STR_FACE_AFRICAN :{BLACK}Afraiceach STR_FACE_SELECT_AFRICAN :{BLACK}Roghnaigh aghaidheanna Afraiceacha STR_FACE_YES :Tá STR_FACE_NO :Níl STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Cumasaigh croiméal nó fáinne cluasa STR_FACE_HAIR :Gruaig: STR_FACE_HAIR_TOOLTIP :{BLACK}Athraigh gruaig STR_FACE_EYEBROWS :Malaí: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Athraigh malaí STR_FACE_EYECOLOUR :Dath na súl: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Athraigh dath na súl STR_FACE_GLASSES :Spéaclaí: STR_FACE_GLASSES_TOOLTIP :{BLACK}Cumasaigh spéaclaí STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Athraigh spéaclaí STR_FACE_NOSE :Nose: STR_FACE_NOSE_TOOLTIP :{BLACK}Athraigh an srón STR_FACE_LIPS :Beolaí: STR_FACE_MOUSTACHE :Croiméal: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Athraigh beola nó croiméal STR_FACE_CHIN :Smig: STR_FACE_CHIN_TOOLTIP :{BLACK}Athraigh an smig STR_FACE_JACKET :Seaicéad: STR_FACE_JACKET_TOOLTIP :{BLACK}Athraigh an seaicéad STR_FACE_COLLAR :Bóna: STR_FACE_COLLAR_TOOLTIP :{BLACK}Athraigh an bóna STR_FACE_TIE :Carbhat: STR_FACE_EARRING :Fáinne cluaise: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Athraigh carbhat nó fáinne cluaise # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Ilimreoirí STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Nasc: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Roghnaigh idir cluiche idirlín agus cluiche Líonra Achair Logánta (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Idirlíon STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Ainm imreora: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Seo an t-ainm faoina mbeidh imreoirí eile in ann tú a aithint STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ainm STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Ainm an chluiche STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Cliaint STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Cliaint ar líne / cliaint uasta{}Cuideachtaí ar líne / cuideachtaí uasta STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Méid na léarscáile STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Méid léarscáile an chluiche{}Cliceáil le sortáil de réir achair STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dáta STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Dáta reatha STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Blianta STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Líon blianta a{}bhfuil an cluiche ar rith STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Teanga, leagan an fhreastalaí, srl. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Cliceáil ar chluiche ón liosta lena roghnú STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}An freastalaí a ndeachaidh tú isteach ann an uair deiridh: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Cliceáil chun an freastalaí ina raibh tú ag imirt an uair deiridh a roghnú STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}FAISNÉIS FAOIN gCLUICHE STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Cliaint: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Teanga: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Tírdhreach: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Méid na léarscáile: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Leagan an fhreastalaí: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Seoladh an fhreastalaí: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Dáta tosaigh: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Dáta reatha: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Faoi chosaint ag pasfhocal! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}FREASTALAÍ AS LÍNE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}FREASTALAÍ LÁN STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}MÍMHEAITSEÁIL LEAGAIN STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}MÍMHEAITSEÁIL NEWGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Téigh isteach sa chluiche STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Athnuaigh an freastalaí STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Athnuaigh faisnéis an fhreastalaí STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Aimsigh freastalaí STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Cuardaigh líonra le haghaidh freastalaí STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Cuir freastalaí leis STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Cuirtear freastalaí leis an liosta a sheiceálfar i gcónaí le haghaidh cluichí ar rith. STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Tosaigh an freastalaí STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Tosaigh d'fhreastalaí féin STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Iontráil d'ainm STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Iontráil seoladh an óstaigh # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Tosaigh cluiche ilimreora nua STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Ainm an chluiche: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Taispeánfar ainm an chluiche d'imreoirí eile sa roghchlár le cluiche ilimreorí a roghnú STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Socraigh pasfhocal STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Cosain do chluiche le pasfhocal más mian leat nach mbeidh rochtain phoiblí air STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Idirlíon STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Idirlíon (déan fógraíocht) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} {P ch ch ch gc c}lia{P "" "" "" "" i}nt STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Cliaint uasta: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Roghnaigh uaslíon na gcliant. Ní gá gach áit a líonadh STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} {P ch ch ch gc c}uideachta STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Uaslíon na gcuideachtaí: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Déan an freastalaí a theorannú go líon áirithe cuideachtaí STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} féachadóir{P "" í í í í} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Uaslíon na bhféachóirí: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Déan an freastalaí a theorannú go líon áirithe féachadóirí STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}An teanga a labhraítear: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Beidh a fhios ag imreoirí eile cén teanga a labhraítear ar an bhfreastalaí STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Iontráil ainm don chluiche líonra # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Teanga ar bith STR_NETWORK_LANG_ENGLISH :Béarla STR_NETWORK_LANG_GERMAN :Gearmáinis STR_NETWORK_LANG_FRENCH :Fraincis STR_NETWORK_LANG_BRAZILIAN :Brasaílis STR_NETWORK_LANG_BULGARIAN :Bulgáiris STR_NETWORK_LANG_CHINESE :Sínis STR_NETWORK_LANG_CZECH :Seicis STR_NETWORK_LANG_DANISH :Danmhairgis STR_NETWORK_LANG_DUTCH :Ollainnis STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Fionlainnis STR_NETWORK_LANG_HUNGARIAN :Ungáiris STR_NETWORK_LANG_ICELANDIC :Íoslainnis STR_NETWORK_LANG_ITALIAN :Iodáilis STR_NETWORK_LANG_JAPANESE :Seapáinis STR_NETWORK_LANG_KOREAN :Cóiréis STR_NETWORK_LANG_LITHUANIAN :Liotuáinis STR_NETWORK_LANG_NORWEGIAN :Ioruais STR_NETWORK_LANG_POLISH :Polainnis STR_NETWORK_LANG_PORTUGUESE :Portaingéilis STR_NETWORK_LANG_ROMANIAN :Rómáinis STR_NETWORK_LANG_RUSSIAN :Rúisis STR_NETWORK_LANG_SLOVAK :Slóvaicis STR_NETWORK_LANG_SLOVENIAN :Slóivéinis STR_NETWORK_LANG_SPANISH :Spáinnis STR_NETWORK_LANG_SWEDISH :Sualainnis STR_NETWORK_LANG_TURKISH :Tuircis STR_NETWORK_LANG_UKRAINIAN :Úcráinis STR_NETWORK_LANG_AFRIKAANS :Afracáinis STR_NETWORK_LANG_CROATIAN :Cróitis STR_NETWORK_LANG_CATALAN :Catalóinis STR_NETWORK_LANG_ESTONIAN :Eastóinis STR_NETWORK_LANG_GALICIAN :Gailísis STR_NETWORK_LANG_GREEK :Gréigis STR_NETWORK_LANG_LATVIAN :Laitvis ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Forsheomra cluichí ilimreoirí STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Ag ullmhú le dul isteach: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Liosta de gach cuideachta sa chluiche seo faoi láthair. Is féidir leat dul isteach i gceann acu nó cuideachta nua a thosú má tá spás saor do chuideachta STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}FAISNÉIS CUIDEACHTA STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Ainm na cuideachta: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Tús gnó: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Luach na cuideachta: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Iarmhéid reatha: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Ioncam na bliana seo caite: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Feidhmíocht: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Feithiclí: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stáisiúin: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Imreoirí: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Cuideachta nua STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Cruthaigh cuideachta na STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Féach ar chluiche STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Breathnaigh ar an gcluiche mar fhéachadóir STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Téigh isteach sa chuideachta STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Cabhraigh leis an gcuideachta seo a bhainistiú # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Ag nascadh... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Ag nascadh.. STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Ag údarú.. STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Ag fanacht.. STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Ag íoslódáil na léarscáile.. STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Ag próiseáil sonraí.. STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Ag clárú.. STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Ag fáil faisnéis an chluiche.. STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Ag fáil faisnéis cuideachtaí.. ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} {P ch ch ch gc c}liant romhat STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} íoslódáilte go dtí seo STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} íoslódáilte go dtí seo STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Dínasc STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tá an freastalaí faoi chosaint. Iontráil pasfhocal STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Tá an chuideachta faoi chosaint. Iontráil pasfhocal # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Liosta na gcliant STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Féach air STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Cuideachta nua # Network client list STR_NETWORK_CLIENTLIST_KICK :Ciceáil STR_NETWORK_CLIENTLIST_BAN :Toirmisc STR_NETWORK_CLIENTLIST_GIVE_MONEY :Tabhair airgead STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Labhair le cách STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Labhair le cuideachta STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Teacht. phríobháideach STR_NETWORK_SERVER :Freastalaí STR_NETWORK_CLIENT :Cliant STR_NETWORK_SPECTATORS :Féachadóirí STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Iontráil an méid airgid is mian leat a thabhairt # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ná sábháil an pasfhocal a iontráladh STR_COMPANY_PASSWORD_OK :{BLACK}Tabhair an pasfhocal nua don chuideachta STR_COMPANY_PASSWORD_CAPTION :{WHITE}Pasfhocal cuideachta STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Pasfhocal cuideachta réamhshocraithe STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Úsáid an pasfhocal cuideachta seo mar réamhshocrú do chuideachtaí nua # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Téigh isteach STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Téigh isteach agus bí ag imirt leis an gcuideachta seo STR_COMPANY_VIEW_PASSWORD :{BLACK}Pasfhocal STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Cosain do chuideachta le pasfhocal le nach mbeidh úsáideoirí neamhúdaraithe in ann dul isteach. STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Socraigh pasfhocal cuideachta # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Seol STR_NETWORK_CHAT_COMPANY_CAPTION :[Foireann] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Príobháideach] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Gach] : STR_NETWORK_CHAT_COMPANY :[Foireann] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Foireann] Chuig {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Príobháideach] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Príobháideach] Chuig {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Gach duine] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Iontráil téacs don chomhrá líonra # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Níor aimsíodh aon ghléas líonra nó tiomsaíodh gan ENABLE_NETWORK é STR_NETWORK_ERROR_NOSERVER :{WHITE}Níorbh fhéidir aon chluiche líonra a aimsiú STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Níor thug an freastalaí freagra don iarratas STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Níorbh fhéidir nascadh de bharr mímheaitseáil NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Theip ar sioncronú Líonra-Cluiche STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Cailleadh an nasc idir an líonra agus an cluiche STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Níorbh fhéidir cluiche sábháilte a lódáil STR_NETWORK_ERROR_SERVER_START :{WHITE}Níorbh fhéidir an freastalaí a thosú STR_NETWORK_ERROR_CLIENT_START :{WHITE}Níorbh fhéidir nascadh STR_NETWORK_ERROR_TIMEOUT :{WHITE}Am istigh ar nasc #{NUM} STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Aimsíodh earráid prótacail agus dúnadh an nasc STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Ní hionann leasú an chliaint seo agus leasú an fhreastalaí STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Pasfhocal mícheart STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tá an freastalaí lán STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Tá cosc ort ón bhfreastalaí seo STR_NETWORK_ERROR_KICKED :{WHITE}Ciceáladh amach as an gcluiche thú STR_NETWORK_ERROR_CHEATER :{WHITE}Ní cheadaítear caimiléireacht ar an bhfreastalaí seo STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Bhí tú ag seoladh an iomarca orduithe chuig an bhfreastalaí ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :earráid ghinearálta STR_NETWORK_ERROR_CLIENT_DESYNC :earráid dísioncronaithe STR_NETWORK_ERROR_CLIENT_SAVEGAME :níorbh fhéidir an léarscáil a lódáil STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :cailleadh an nasc STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :earráid prótacail STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Mímheaiseáil NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :gan údarú STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :fuarthas paicéad neamhbhailí nó gan choinne STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :leasú mícheart STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ainm in úsáid cheana féin STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :pasfhocal mícheart STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :cuideachta mícheart in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :ciceáilte ag an bhfreastalaí STR_NETWORK_ERROR_CLIENT_CHEATER :ag iarraidh caimiléireacht a úsáid STR_NETWORK_ERROR_CLIENT_SERVER_FULL :freastalaí lán STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :ag seoladh an iomarca orduithe ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Seans gur cailleadh an nasc STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Le {NUM} {P sh sh s s s} ní bhfuarthas aon sonraí ón bhfreastalaí # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Cluiche ar sos ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Cluiche fós ar sos ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Cluiche fós ar sos ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Cluiche fós ar sos ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Deireadh an tsosa ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :líon na n-imreoirí STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :cliaint á nascadh STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :de láimh ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :ag fágáil STR_NETWORK_MESSAGE_CLIENT_JOINED :*** Tháinig {STRING} isteach sa chluiche STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** Tháinig {STRING} isteach sa chluiche (Cliant #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** Chuaigh {STRING} isteach i gcuideachta #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Tá {STRING} i measc na bhféachadóirí anois STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Thosaigh {STRING} cuideachta nua (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** D'fhág {STRING} an cluiche ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** D'athraigh {STRING} a (h)ainm go {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** Thug {STRING} {2:CURRENCY_LONG} dod' chuideachta STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Thug tú {2:CURRENCY_LONG} do {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Dhún an freastalaí an seisiún STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tá an freastalaí á atosú...{}Fan go fóill... # Content downloading window STR_CONTENT_TITLE :{WHITE}Inneachar á íoslódáil STR_CONTENT_TYPE_CAPTION :{BLACK}Cineál STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Cineál inneachair STR_CONTENT_NAME_CAPTION :{BLACK}Ainm STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ainm an inneachair STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Cliceáil ar líne chun na sonraí a fheiceáil{}Cliceáil ar an ticbhosca chun é a roghnú le híoslódáil STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Roghnaigh gach STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcáil an t-inneachar ar fad mar inneachar le híoslódáil STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Roghnaigh uasghráduithe STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marcáil an t-inneachar ar fad atá ina uasghrádú d'inneachar reatha mar inneachar le híoslódáil STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Díroghnaigh gach STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marcáil an t-inneachar ar fad le nach n-íoslódálfar é STR_CONTENT_FILTER_TITLE :{BLACK}Scagaire clibe/ainm: STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Íoslódáil STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Toaigh ag íoslódáil an t-inneachar roghnaithe STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Méid iomlán na híoslódála: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}FAISNÉIS FAOIN INNEACHAR STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Roghnaigh tú gan é seo a íoslódáil STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Roghnaigh tú é seo a íoslódáil STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Roghnaíodh go bhfuil an spleáchas seo le híoslódáil STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Tá sé seo agat cheana féin STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Is inneachar anaithnid é seo agus ní féidir é a íoslódáil in OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Téann sé seo in ionad {STRING} reatha STR_CONTENT_DETAIL_NAME :{SILVER}Ainm: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Leagan: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Cur Síos: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Cineál: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Méid íoslódála: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Roghnaithe mar gheall ar: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Nithe atá spleách air: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Clibeanna: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}Tá OpenTTD tógtha gan tacaíocht "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... ní féidir inneachar a íoslódáil! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafaicí bunaidh STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :Leabharlann AI STR_CONTENT_TYPE_SCENARIO :Scéal STR_CONTENT_TYPE_HEIGHTMAP :Mapa airde STR_CONTENT_TYPE_BASE_SOUNDS :Fuaimeanna bunaidh STR_CONTENT_TYPE_BASE_MUSIC :Ceol bunaidh # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Ag íoslódáil inneachar... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Comhaid á n-iarraidh... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Ag íoslódáil {STRING} faoi láthair ({NUM} de {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Íoslódail curtha i gcrích STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} de {BYTES} íoslódáilte ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Níorbh fhéidir nascadh leis an bhfreastalaí inneachair... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Theip ar an íoslódáil... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... cailleadh an nasc STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... níl an comhad inscríofa STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Níorbh fhéidir an comhad íoslódáilte a dhíchomhbhrú # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Roghanna Trédhearcachta STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do chomharthaí stáisiún. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do chrainnte. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do thithe. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do thionscail. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do nithe i féidir a thógáil, cosúil le stáisiúin, iostaí agus pointí bealaigh. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do dhroichid. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do struchtúir cosúil le tithe solais agus aeróga. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do chuair. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do tháscairí lódála. Ctrl+Cliceáil le glasáil. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Socraigh go bhfuil nithe dofheicthe seachas trédhearcach # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Aibhsigh an limistéar clúdaigh STR_STATION_BUILD_COVERAGE_OFF :{BLACK}As STR_STATION_BUILD_COVERAGE_ON :{BLACK}Ar siúl STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Ná haibhsigh an limistéar clúdaigh don suíomh beartaithe STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Aibhsigh an limistéar clúdaigh don suíomh beartaithe STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Glactar le: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Soláthar: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Ceangail stáisiún STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Tóg stáisiún ar leithligh STR_JOIN_WAYPOINT_CAPTION :{WHITE}Ceangail pointe bealaigh STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Tóg pointe bealaigh ar leithligh # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Tógáil Iarnróid STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Tógáil Iarnróid Leicrithe STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Tógáil Iarnróid Aonráille STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Tógáil Maglev STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tóg ráillí iarnróid. Déanann Ctrl tóg/bain a scoránú agus tú ag tógáil iarnróid STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Tóg ráille iarnróid ag úsáid an mód Uathráillí. Déanann Ctrl tóg/bain a scoránú do thógail iarnróid STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Tóg iosta traenach (chun traenacha a cheannach agus a sheirbhísiú) STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Athraigh ráille go pointe bealaigh. Is féidir pointí bealaí a chur le chéile le Ctrl STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Tóg stáisiún iarnróid. Is féidir stáisiúin a chur le chéile le Ctrl STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Tóg comharthaí iarnróid. Déantar comharthaí séamafóir/solais a scoránú le Ctrl{}Is féidir tarraingt le comharthaí a thógáil feadh píosa díreach iarnróid. Tógtar comharthaí chomh fada leis an gcéad acomhal eile le Ctrl{}Déantar fuinneog roghnú na gcomharthaí a oscailt nó gan oscailt le Ctrl STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Tóg droichead iarnróid STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Tóg tollán iarnróid STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Athraigh idir tógáil/baint le haghaidh ráillí iarnróid, comharthaí, pointí bealaigh agus stáisiúin. Coinnigh síos Ctrl chun ráillí a bhaint ó phointí bealaigh agus ó stáisiúin freisin STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Tiontaigh/Uasghrádaigh an cineál ráille # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Treoshuíomh an Iosta Traenach STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh an iosta iarnróid # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pointe bealaigh STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Roghnaigh an cineál pointe bealaigh # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Stáisiún Iarnróid a Thógáil STR_STATION_BUILD_ORIENTATION :{BLACK}Treosuíomh STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh an stáisiúin iarnróid STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Líon na ráillí STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Roghnaigh líon na n-ardán don stáisiún iarnróid STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Fad an ardáin STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Roghnaigh fad an stáisiúin iarnróid STR_STATION_BUILD_DRAG_DROP :{BLACK}Tarraing & Scaoil STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Tóg stáisiún ag úsáid tarraing & scaoil STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Roghnaigh aicme stáisiúin le taispeáint STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Roghnaigh an cineál stáisiúin le tógáil STR_STATION_CLASS_DFLT :Stáisiún réamhshocraithe STR_STATION_CLASS_WAYP :Pointí bealaigh # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Comharthaí a Roghnú STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Bloc-comhartha (séamafór){}Is é seo an cineál comhartha is bunúsáí, agus ní cheadaítear ach do thraein amháin a bheith sa bhloc céanna ag aon am amháin STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Comhartha Isteach (séamafór){}Uaine chomh fada agus go bhfuil comhartha amach uaine amháin ar a laghad sa chuid den iarnróid ina dhiaidh. Mura bhfuil, bíonn sé dearg. STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Comhartha Amach (séamafór){}Feidhmíonn sé seo ar an mbealach céanna leis an gcomhartha bloic ach tá sé ag teastáil mar thruicear don dath ceart ar réamhchomharthaí isteach & teaglama. STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Comhartha teaglama (séamafór){}Feidhmíonn an comhartha teaglama mar chomhartha isteach agus amach araon, go simplí. Cuireann sé seo ar do chumas "crainn" mhóra de réamhchomharthaí a thógáil. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Comhartha cosán (séamafór){}Ligeann comhartha cosán do níos mó ná traein amháin dul isteach i mbloc comharthaí in aon am amháin, más féidir leis an traein bealach a chur in áirithe chuig pointe stoptha sábháilte. Is féidir dul thar gnáthchomharthaí cosán ón gcúl.. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Comhartha cosán aonbhealaigh (séamafór){}Ligeann comhartha cosán do níos mó ná traein amháin dul isteach i mbloc comharthaí in aon am amháin, más féidir leis an traein bealach a chur in áirithe chuig pointe stoptha sábháilte. Ní féidir dul thar comharthaí cosán aonbhealaigh ón gcúl. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Bloc-chomhartha (leictreach){}Is é seo an cineál comhartha is bunúsaí, agus ní cheadaítear ach do thraein amháin a bheith sa bhloc céanna ag aon am amháin STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Comhartha Isteach (leictreach){}Uaine chomh fada agus go bhfuil comhartha amach uaine amháin ar a laghad sa chuid den iarnróid ina dhiaidh. Mura bhfuil, bíonn sé dearg. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Comhartha Amach (leictreach){}Feidhmíonn sé seo ar an mbealach céanna leis an mbloc-chomhartha ach tá sé ag teastáil mar thruicear don dath ceart ar réamhchomharthaí isteach & teaglama. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Comhartha teaglama (leictreach){}Feidhmíonn an comhartha teaglama mar chomhartha isteach agus amach araon, go simplí. Cuireann sé seo ar do chumas "crainn" mhóra de réamhchomharthaí a thógáil. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Comhartha cosán (leictreach){}Ligeann comhartha cosán do níos mó ná traein amháin dul isteach i mbloc comharthaí in aon am amháin, más féidir leis an traein bealach a chur in áirithe chuig pointe stoptha sábháilte. Is féidir dul thar gnáthchomharthaí cosán ón gcúl. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Comhartha cosán aonbhealaigh (leictreach){}Ligeann comhartha cosán do níos mó ná traein amháin dul isteach i mbloc comharthaí in aon am amháin, más féidir leis an traein bealach a chur in áirithe chuig pointe stoptha sábháilte. Ní féidir dul thar comharthaí cosán aonbhealaigh ón gcúl. STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Comharthaí a Thiontú{}Agus é seo roghnaithe, má chliceáiltear ar chomhartha atá ann cheana déanfar é a thiontú chuig an cineál comhartha agus an leagan den chomhartha atá roghnaithe, Déanfar an leagan atá ann cheana féin a scoránú le Ctrl+Cliceáil. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Eatramh comharthaí agus tú ag tarraingt STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Laghdaigh an spás idir na comharthaí agus tú ag tarraingt STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Méadaigh an spás idir na comharthaí agus tú ag tarraingt # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Roghnaigh Droichead Iarnróid STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Roghnaigh Droichead Bóthair STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Droichead a roghnú - cliceáil ar an droichead is rogha leat chun é a thógáil STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Crochta, Cruach STR_BRIDGE_NAME_GIRDER_STEEL :Cearchaill, Cruach STR_BRIDGE_NAME_CANTILEVER_STEEL :Starrmhaide, Cruach STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Crochta, Coincréite STR_BRIDGE_NAME_WOODEN :Adhmaid STR_BRIDGE_NAME_CONCRETE :Coincréite STR_BRIDGE_NAME_TUBULAR_STEEL :Feadánach, Cruach STR_BRIDGE_TUBULAR_SILICON :Feadánach, Sileacan # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Bóithre a thógáil STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tógáil Trambhealaigh STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Tóg cuid de bhóthar. Déantar tógáil/baint a scoránú le Ctrl agus tú ag tógáil bóithre STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tóg an chuid den trambhealach. Déantar tóg/bain a scoránú le Ctrl agus trambhealach á thógáil STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Tóg cuid den bhóthar ag úsáid an mód Uathbhóithre. Athraítear idir tógáil agus baint le Ctrl agus bóithre á dtógáil STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Tóg cuid den Trambhealach ag úsáid an mhóid Uath-tramanna. Déantar tógáil/baint a scoránú don tógáil trambhealaí le Ctrl STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Tóg iosta feithiclí bóthair (chun feithiclí a cheannach agus a sheirbhísiú) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Tóg iosta tramanna (chun feithiclí a cheananch agus a sheirbhísiú) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Tóg stáisiún bus. Is féidir stáisiúin a chur le chéile le Ctrl STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Tóg stáisiún tramanna paisinéirí. Is féidir stáisiúin a chur le chéile le Ctrl STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Tóg bá lódála leoraithe. Is féidir stáisiúin a chur le chéile le Ctrl STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Tóg stáisiún tramanna lastais. Is féidir stáisiúin a chur le chéile le Ctrl STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Déan bóithre aonbhealaigh a ghníomhachtú/dhíghníomhachtú STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Tóg droichead bóthair STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Tóg droichead trambhealaigh STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Tóg tollán bóthair STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Tóg tollán trambhealaigh STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Athraigh idir tógáil/baint agus bóithre á dtógáil STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Athraigh idir tógáil/baint agus trambhealaí á dtógáil # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Treosuíomh an Iosta Bhóthair STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Roghnaigh treosuíomh an iosta feithiclí bóthair STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Treosuíomh Iosta Tramanna STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Roghnaigh treosuíomh an iosta tramfheithiclí # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Treosuíomh Stáisiún Bus STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh an stáisiúin bus STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Treosuíomh Stáisiún Leoraithe STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh don bhá lódála leoraithe STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Treosuíomh Stáisiún Tram Paisinéirí STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh an stáisiúin tramanna paisinéirí STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Treosuíomh Stáisiún Tram Lastais STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh an stáisiúin tramanna lastais # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Uiscebhealaí a Thógáil STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Uiscebhealaí STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Tóg canálacha. STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Tóg loic STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Tóg iosta long (le longa a cheannach agus a sheirbhísiú) STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Tóg dug long. Is féidir stáisiúin a chur le chéile le Ctrl STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Cuir síos baoi is féidir a úsáid mar phointe bealaigh STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Tóg uiscerian STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Sainigh limistéar uisce.{}Déan canáil, ach amháin má dhéantar Ctrl a choinneáil síos ag leibhéal na farraige. Sa chás sin, déanfar tuilleadh mórthimpeall ina áit STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Cuir síos aibhneacha. # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Treosuíomh an Iosta Long STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Roghnaigh treosuíomh an iosta long # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Dug # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aerfoirt STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Tóg aerfort. Is féidir stáisiúin a chur le chéile le Ctrl # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Roghnú Aerfoirt STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Rognaigh cineál/méid an aerfoirt STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Aicme an aerfoirt STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Leagan amach {NUM} STR_AIRPORT_SMALL :Beag STR_AIRPORT_CITY :Cathrach STR_AIRPORT_METRO :Cathrach STR_AIRPORT_INTERNATIONAL :Idirnáisiúnta STR_AIRPORT_COMMUTER :Comaitéireachta STR_AIRPORT_INTERCONTINENTAL :Idir-ilchríochach STR_AIRPORT_HELIPORT :Héileaport STR_AIRPORT_HELIDEPOT :Héilea-iosta STR_AIRPORT_HELISTATION :Héileastáisiún STR_AIRPORT_CLASS_SMALL :Aerfoirt bheaga STR_AIRPORT_CLASS_LARGE :Aerfoirt mhóra STR_AIRPORT_CLASS_HUB :Aerfoirt moil STR_AIRPORT_CLASS_HELIPORTS :Aerfoirt héileacaptair STR_STATION_BUILD_NOISE :{BLACK}Torann a ghintear: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Tírdhreachú STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Ísligh cúinne talún STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Ardaigh cúinne talún STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Cothromaigh talamh STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Ceannaigh talamh le húsáid amach anseo # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Roghnú oibiachta STR_OBJECT_BUILD_TOOLTIP :{BLACK}Roghnaigh oibiacht le tógáil STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Roghnaigh aicme na hoibiachta le tógáil STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Réamhamharc ar an oibiacht STR_OBJECT_BUILD_SIZE :{BLACK}Méid: {GOLD}{NUM} x {NUM} tíl STR_OBJECT_CLASS_LTHS :Tithe solais STR_OBJECT_CLASS_TRNS :Tarchuradóirí # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Crainnte STR_PLANT_TREE_TOOLTIP :{BLACK}Roghnaigh an cineál crainn le cur STR_TREES_RANDOM_TYPE :{BLACK}Crainnte randamacha STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Cuir crainnte de chineálacha randamacha STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Crainnte Randamacha STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Cuir crainnte go randamacha ar an tírdhreach # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Talamh a Chruthú STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Cuir ceantair charraige ar an tírdhreach STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Sainigh limistéar fásaigh.{}Coinnigh síos Ctrl chun é a bhaint STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Méadaigh an limistéar talún atá le hardú/le hísliú STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Laghdaigh an limistéar talún atá le hardú/le hísliú STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Cruthaigh talamh randamach STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Cruthaigh scéal nua STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Athshocraigh an tírdhreach STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Bain na maoine ar fad ar le cuideachtaí iad ón léarscáil STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Athshocraigh an Tírdhreach STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}An bhfuil tú cinnte gur mian leat na maoine uile atá faoi úinéireacht cuideachtaí a bhaint? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Bailte a Chruthú STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Baile Nua STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Bunaigh baile nua STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Baile Randamach STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Bunaigh baile i suíomh fánach STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Go leor bailte randamacha STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Clúdaigh an léarscáil le bailte a chuirtear in áiteanna fánacha STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Ainm an bhaile: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Ionchur ainm an bhaile STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Cliceáil chun ainm an bhaile a ionchur STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Ainm fánach STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Cruthaigh ainm fánach nua STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Méid an bhaile: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Beag STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Meánach STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Mór STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Randamach STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Roghnaigh méid na mbailte STR_FOUND_TOWN_CITY :{BLACK}Cathair STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Fásann cathracha níos mó ná gnáthbhailte{}Ag brath ar na socruithe, bíonn siad níos mó nuair a bhunaítear iad STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Leagan amach bóithre an bhaile: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Roghnaigh leagan amach na mbóithre don bhaile seo STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Bunaidh STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bóithre níos fearr STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}greille 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}greille 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Randamach # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Tabhair maoiniú do thionscal nua STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Roghnaigh an tionscal is mian leat ón liosta seo STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Go leor tionscal randamach STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Clúdaigh an léarscáil le tionscail a chuirtear síos go randamach STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Costas: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Dóigh STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Tóg STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Maoinigh # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Slabhra na dtionscal don tionscal {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Slabhra na dtionscal le haghaidh lastas {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Tionscail á tháirgeadh STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Tionscail a ghlacann leis STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Tithe STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Cliceáil ar an tionscal chun a sholáthróirí agus a chustaiméirí a fheiceáil STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Cliceáil ar an lastas chun a soláthróirí agus a chustaiméirí a fheiceáil STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Taispeáin an slabhra STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Taispeáin na tionscadail a dhéanann lastas a sholáthar agus a ghlacann leis STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Nasc leis an léarscáil bheag STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Roghnaigh na tionscail a thaispeántar ar an léarscáil bheag chomh maith # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Faisnéis faoin bPíosa Talún STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Costas le glanadh: {LTBLUE}N/B STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Costas le glanadh: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ioncam má ghlantar: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/B STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Úinéir: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Úinéir an bhóthair: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Úinéir an trambhealaigh: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Úinéir an iarnróid: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Údarás áitiúil: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ceann ar bith STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Comhordanáidí: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Tógtha: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aicme an stáisiúin: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Cineál stáisiúin: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Aicme an aerfoirt: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Ainm an aerfoirt: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Ainm tíl aerfoirt: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Lastas a ghlactar leis: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Teorainn luais iarnróid: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Carraigeacha STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Talamh garbh STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Talamh lom STR_LAI_CLEAR_DESCRIPTION_GRASS :Féar STR_LAI_CLEAR_DESCRIPTION_FIELDS :Garrantaí STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Talamh faoi shneachta STR_LAI_CLEAR_DESCRIPTION_DESERT :Fásach STR_LAI_ROAD_DESCRIPTION_ROAD :Bóthair STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Bóthair le soilse sráide STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Bóthair le crainn ar gach taobh STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Iosta feithiclí bóthair STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Crosaire comhréidh bóthair/iarnróid STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Trambhealach # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (á thógáil) STR_LAI_TREE_NAME_TREES :Crainn STR_LAI_TREE_NAME_RAINFOREST :Foraois bháistí STR_LAI_TREE_NAME_CACTUS_PLANTS :Plandaí cachtais STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Stáisiún iarnróid STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Haingear aerárthaigh STR_LAI_STATION_DESCRIPTION_AIRPORT :Aerfort STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Limistéar lódála leoraithe STR_LAI_STATION_DESCRIPTION_BUS_STATION :Stáisiún bus STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Dug long STR_LAI_STATION_DESCRIPTION_BUOY :Baoi STR_LAI_STATION_DESCRIPTION_WAYPOINT :Pointe bealaigh STR_LAI_WATER_DESCRIPTION_WATER :Uisce STR_LAI_WATER_DESCRIPTION_CANAL :Canáil STR_LAI_WATER_DESCRIPTION_LOCK :Loc STR_LAI_WATER_DESCRIPTION_RIVER :Abhainn STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Cósta nó bruach STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Iosta long # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Tollán iarnróid STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tollán bóthair STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Droichead iarnróid crochta cruach STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Droichead iarnróid cearchaillí cruach STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Droichead iarnróid cruach starrmhaide STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Droichead iarnróid crochta de choincréit threisithe STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Droichead iarnróid adhmaid STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Droichead iarnróid coincréite STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Droichead iarnróid feadánach STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Droichead bóthair crochta cruach STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Droichead bóthair cearchaillí cruach STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Droicheadh bóthair starrmhaide cruach STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Droichead bóthair crochta de choincréit threisithe STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Droichead bóthair adhmaid STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Droichead bóthair coincréite STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Droichead bóthair feadánach STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Uiscerian STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Tarchuradóir STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Teach solais STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Ceanncheathrú cuideachta STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Talamh faoi úinéireacht cuideachta # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Maidir le OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Cóipcheart bunaidh {COPYRIGHT} 1995 Chris Sawyer, Gach ceart ar cosaint STR_ABOUT_VERSION :{BLACK}OpenTTD leagan {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 An fhoireann OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche STR_SAVELOAD_LOAD_CAPTION :{WHITE}Lódáil Cluiche STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Sábháil Scéal STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Lódáil Scéal STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Lódáil Mapa airde STR_SAVELOAD_HOME_BUTTON :{BLACK}Cliceáil anseo le léim chuig an comhadlann réamhshocraithe sábhála/lódála reatha STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} saor STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liosta na dtiomántán, na gcomhadlann agus na gcomhad cluichí sábháilte STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Ainm atá roghnaithe faoi láthair don chluiche sábháilte STR_SAVELOAD_DELETE_BUTTON :{BLACK}Scrios STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Scrios an cluiche sábháilte atá roghnaithe faoi láthair STR_SAVELOAD_SAVE_BUTTON :{BLACK}Sábháil STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sábháil an cluiche reatha, ag úsáid an t-ainm roghnaithe STR_SAVELOAD_LOAD_BUTTON :{BLACK}Lódáil STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Lódáil an cluiche roghnaithe STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Sonraí an Chluiche STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Níl aon fhaisnéis le fáil. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Iontráil ainm don chluiche sábháilte # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Domhan a Chruthú STR_MAPGEN_MAPSIZE :{BLACK}Méid na léarscáile: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Roghnaigh an méid de na léarscáile i tíleanna. Beidh líon na tíleanna ar fáil a bheith beagán níos lú STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Líon na mbailte: STR_MAPGEN_DATE :{BLACK}Dáta: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Líon na dtionscal: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Airde na líne sneachta: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Bog airde na líne sneachta suas ceann amháin STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Bog airde na líne sneachta síos ceann amháin STR_MAPGEN_RANDOM_SEED :{BLACK}Síol randamach: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Cliceáil chun síol randamach a iontráil STR_MAPGEN_RANDOM :{BLACK}Déan randamú STR_MAPGEN_RANDOM_HELP :{BLACK}Athraigh an síol randamach a úsáidtear chun an Tír-Raon a chruthú STR_MAPGEN_LAND_GENERATOR :{BLACK}Talamh a chruthú: STR_MAPGEN_TREE_PLACER :{BLACK}Algartam na gcrann: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Cineál tír-raoin: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Leibhéal na farraige: STR_MAPGEN_SMOOTHNESS :{BLACK}Míne: STR_MAPGEN_VARIETY :{BLACK}Éagsúlacht: STR_MAPGEN_GENERATE :{WHITE}Cruthaigh # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Taobhanna na léarscáile: STR_MAPGEN_NORTHWEST :{BLACK}Iarthuaisceart STR_MAPGEN_NORTHEAST :{BLACK}Oirthuaisceart STR_MAPGEN_SOUTHEAST :{BLACK}Oirdheisceart STR_MAPGEN_SOUTHWEST :{BLACK}Iardheisceart STR_MAPGEN_BORDER_FREEFORM :{BLACK}Saorfhoirme STR_MAPGEN_BORDER_WATER :{BLACK}Uisce STR_MAPGEN_BORDER_RANDOM :{BLACK}Randamach STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Randamach STR_MAPGEN_BORDER_MANUAL :{BLACK}De láimh STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rothlú an mhapa airde: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ainm an mhapa airde: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Méid: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Iontráil síol randamach STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Athraigh airde na líne sneachta STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Athraigh an bhliain tosaigh # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Cineál Scéil STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Talamh réidh STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Cruthaigh talamh réidh STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Talamh randamach STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Airde na talún réidh: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Bog airde na talún réidh síos ceann amháin STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Bog airde na talún réidh suas ceann amháin STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Athraigh airde na talún réidh # Map generation progress STR_GENERATION_WORLD :{WHITE}Domhan á Chruthú... STR_GENERATION_ABORT :{BLACK}Tobscoir STR_GENERATION_ABORT_CAPTION :{WHITE}Tobscoir Cruthú Domhain STR_GENERATION_ABORT_MESSAGE :{YELLOW}An bhfuil tú cinnte gur mhaith leat an ghiniúit a thobscor? STR_GENERATION_PROGRESS :{WHITE}{NUM}% críochnaithe STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Domhan a chruthú STR_GENERATION_TREE_GENERATION :{BLACK}Crainn a chruthú STR_GENERATION_OBJECT_GENERATION :{BLACK}Cruthú oibiachtaí STR_GENERATION_CLEARING_TILES :{BLACK}Limistear garbh agus carraigeach a chruthú STR_GENERATION_SETTINGUP_GAME :{BLACK}Cluiche á chumrú STR_GENERATION_PREPARING_TILELOOP :{BLACK}Lúb tíleanna á rith STR_GENERATION_PREPARING_GAME :{BLACK}Cluiche á ullmhú # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Socruithe NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Faisnéis NewGRF mionsonraithe STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Comhaid NewGRF ghníomhacha STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Comhaid NewGRF neamhghníomhacha STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Roghnaigh réamhshocrú STR_NEWGRF_FILTER_TITLE :{ORANGE}Teaghrán scagtha: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Lódáil an réamhshocrú roghnaithe STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Sábháil réamhshocrú STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Sábháil an liosta reatha mar réamhshocrú STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Iontráil ainm don réamhshocrú STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Scrios réamhshocrú STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Scrios an réamhshocrú atá roghnaithe faoi láthair STR_NEWGRF_SETTINGS_ADD :{BLACK}Cuir leis STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Cuir an comhad NewGRF roghnaithe le do chumraíocht STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Athscan na comhaid STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Nuashonraigh liosta na gcomhad NewGRF atá ar fáil STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Bain STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Bain an comhad NewGRF roghnaith ón liosta STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Bog Suas STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Bog an comhad NewGRF roghnaithe suas an liosta STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Bog Síos STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Bog an comhad NewGRF roghnaithe síos an liosta STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Liosta de na comhaid NewGRF atá suiteáilte. Cliceáil ar chomhad chun a pharaiméadair a athrú STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Socraigh paraiméadair STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Scoránaigh an pailéad STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Déan an pailéad den NewGRF roghnaithe a scoránú.{}Déan é seo má bhíonn cuma bhándearg ar na grafaicí ón NewGRF seo sa chluiche STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Cuir athruithe i bhfeidhm STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Aimsigh inneachar atá ar iarraidh ar líne STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Seiceáil an féidir an t-inneachar atá ar iarraidh a aimsiú ar líne STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Comhadainm: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}ID an GRF: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Leagan: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Leagan is lú atá comhoiriúnach: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Pailéad: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paraiméadair: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Níl aon fhaisnéis ar fáil STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Níor aimsíodh comhad a mheaitseálann STR_NEWGRF_SETTINGS_DISABLED :{RED}Díchumasaithe STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Neamhchomhoiriúnach leis an leagan seo de OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Athraigh na paraiméadair NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Dún STR_NEWGRF_PARAMETERS_RESET :{BLACK}Athshocraigh STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Socraigh go mbeidh a réamhshocrú ag gach paraiméadair STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Paraiméadar{NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Líon na bparaiméadar: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Déan iniúchadh - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Máthair STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Déan iniúchadh ar an oibiacht de scóip na máthar STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ag {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oibiacht STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Cineál iarnróid STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Athróg NewGRF paraiméadar 60+x (heicsidheachúil) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Ag ailíniú sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}An chéad sprite eile STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Téigh chuig an chéad gnáth-sprite eile, ag scipeáil thar aon bhréag-sprite nó sprite athdhathaithe/clófhoirne agus ag timfhilleadh ag an deireadh STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Téigh chuig sprite STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Téigh chuig an sprite sonraithe. Más rud é nach gnáth-sprite atá ann, téigh ar aghaidh chuig an chéad gnáth-sprite eile STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite roimhe STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Téigh ar aghaigh chuig an gnáth-sprite roimhe, ag scipeáil thar aon bhréag-sprite nó sprite athdathaithe/clófhoirne agus ag timfhilleadh ag an tús STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Léiriú den sprite atá roghnaithe faoi láthair. Déantar neamhaird den ailíniú agus an sprite seo á tharraingt STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Bog an sprite timpeall, ag athrú an seach-chur X agus Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}seach-chur X: {NUM}, seach-chur Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Roghnaigh sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Roghnaigh sprite ó áit ar bith ar an scáileán STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Téigh chuig sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Rabhadh: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Earráid: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Marfach: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Tharla earráid mharfach NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :Ní oibreoidh {1:STRING} leis an leagan de TTDPatch a thuairiscigh OpenTTD. STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING}: Is don leagan {STRING} de TTD é STR_NEWGRF_ERROR_UNSET_SWITCH :Tá {1:STRING} deartha le húsáid le {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Paraiméadar neamhbhailí le haghaidh {1:STRING}: paraiméadar {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :Ní mór {1:STRING} a lódáil roimh {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :Ní mór {1:STRING} a lódáil tar éis {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING}: Tá an leagan {STRING} nó níos fearr de OpenTTD de dhíth uaidh STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :an comhad GRF a bhí sé deartha a aistriú STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tá an iomarca NewGRF lódáilte. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :D'fhéadfaí go mbeidh díshioncronú ann má dhéantar {1:STRING} a lódáil mar NewGRF statach le {STRING}. STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}Tá sprite truaillithe in {STRING}. Taispeánfar gach sprite truaillithe mar chomhartha ceiste (?) dearg. STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Tá roinnt sprite in easnamh sa tsraith bhunúsach grafaicí atá in úsáid faoi láthair.{}Déan úasghrádú ar an tsraith bhunúsach grafaicí le do thoil # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Rabhadh! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Tá tú ar tí athruithe a dhéanamh ar chluiche atá ar rith. D'fhéadfadh sé go gclisfidh OpenTTD dá bharr. Ná seol isteach tuairiscí ar fhabhtanna maidir leis na ceisteanna seo.{}An bhfuil tú cinnte dearfa faoi seo? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Ní féidir comhad a chur leis: ID GRF dúbailte STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Níor aimsíodh comhad a mheaitseálann (GRF comhoiriúnach lódáilte) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Ní féidir cuir comhaid: Teorainn comhad NewGRF bainte amach STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Lódáladh GRF(anna) comhoiriúnacha do na comhaid atá ar lár STR_NEWGRF_DISABLED_WARNING :{WHITE}Díchumasaíodh na comha(i)d GRF atá ar lár STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Comha(i)d GRF ar lár STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Is féidir go ndéanfar OpenTTD a thuairteáil má chuirtear deireadh leis an sos. Ná seol isteach tuairiscí ar fabhtanna le haghaidh tuairteálacha ina dhiaidh seo.{}An bhfuil tú cinnte gur mian leat deireadh a chur leis an sos? # NewGRF status STR_NEWGRF_LIST_NONE :Ceann ar bith STR_NEWGRF_LIST_ALL_FOUND :Gach comhad ann STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Aimsíodh comhaid comhoiriúnacha STR_NEWGRF_LIST_MISSING :{RED}Comhaid ar lár # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Tá seans maith ann go mbeidh díshioncronú agus/nó tuairteálacha de thoradh ar iompar an NewGRF '{0:STRING}'. STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}D'athraigh sé an staid vaigín cumhachtaithe le haghaidh '{1:ENGINE}' nuair nach bhfuil sé in iosta. STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}D'athraigh sé fad na feithicle le haghaidh '{1:ENGINE}' nuair nach bhfuil sé laistigh d'iosta. STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tá fad neamhbhailí ag '{VEHICLE}' le '{COMPANY}'. Is dócha gur fadhbanna le NewGRFanna is cúis leis. Is féidir go ndíshioncronófar an cluiche nó go gclisfidh sé STR_NEWGRF_BUGGY :{WHITE}Cuireann an NewGRF '{0:STRING}' faisnéis mícheart ar fáil. STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Tá an fhaisnéis lastais/athfheistithe le haghaidh '{1:ENGINE}' difriúil ón liosta ceannacháin i ndiaidh tógála. B'fhéidir go dteipfidh uath-athnuachan/uath-ionadú athfheistiú i gceart dá bharr. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Chruthaigh '{1:STRING}' lúb éigríochta san aisghlaoch táirgeachta. # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Liosta Comhartaí - {COMMA} {P Ch Ch Ch gC C}omhartha STR_SIGN_LIST_MATCH_CASE :{BLACK}Meaitseáil an cás STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Scoránaigh idir an cás a mheaitseáil agus ainmneacha comharthaí á gcur i gcomparáid leis an teaghrán scagtha # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Cuir téacs an chomhartha in eagar STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Gabh chuig an chéad chomhartha eile STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gabh chuig an comhartha roimhe STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Iontráil ainm don chomhartha # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Bailte STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ceann ar bith - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ainmneacha bailte - cliceáil ar ainm le go mbeidh an baile i lár an scáileán. Osclaítear amharc nua ar shuíomh an bhaile le Ctrl+Cliceáil STR_TOWN_POPULATION :{BLACK}Daonra domhanda: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Cathair) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Daonra: {ORANGE}{COMMA}{BLACK} Tithe: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Paisinéirí an mhí seo caite: {ORANGE}{COMMA}{BLACK} Uasmhéid: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post an mhí seo caite: {ORANGE}{COMMA}{BLACK} uasmhéid: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Lastas atá ag teastáil le go bhfásfaidh an baile: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ag teastáil STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ag teastáil sa Gheimhreadh STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Teorainn torainn sa bhaile: {ORANGE}{COMMA}{BLACK} uasmhéid: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Cuir suíomh an bhaile i lár an phríomh-amhairc. Osclaítar amharc nua ar shuíomh an bhaile le Ctrl+Cliceáil STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Údarás áitiúil STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Taispeáin faisnéís faoin údarás áitiúil STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Athraigh ainm an bhaile STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Leathnaigh STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Méadaigh méid an bhaile STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Scrios STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Scrios an baile seo go hiomlán STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Athainmnigh baile # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Údarás áitiúil {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Rátálacha cuideachtaí iompair: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Gníomhartha atá ar fáil: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Liosta de na rudaí is féidir a dhéanamh sa bhaile seo - cliceáil ar mhír le tuilleadh sonraí a fháil STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Déan é STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Déan an gníomh atá aibhsithe sa liosta thuas STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Feachtas beag fógraíochta STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Feachtas meánach fógraíochta STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Feachtas mór fógraíochta STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Tabhair maoiniú le bóithre áitiúla a thógáil STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Tóg dealbh d'úinéir na cuideachta STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Tabhair maoiniú d'fhoirgnimh nua STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Ceannaigh cearta eisiacha iompair STR_LOCAL_AUTHORITY_ACTION_BRIBE :Tabhair breab don údarás áitiúil STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Cuir tús le feachtas beag áitiúil fógraíochta, chun tuilleadh paisinéirí agus lastais a mhealladh chuig do sheirbhísí iompair.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Cuir tús le feachtas meánach áitiúil fógraíochta, chun tuilleadh paisinéirí agus lastais a mhealladh chuig do sheirbhísí iompair.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Cuir tús le feachtas mór áitiúil fógraíochta, chun tuilleadh paisinéirí agus lastais a mhealladh chuig do sheirbhísí iompair.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Tabhair maoiniú chun atógáil a dhéanamh ar an líonra bóithre uirbeach. Cuirtear isteach go mór ar thrácht ar bhóithre ar feadh suas le 6 mhí.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Tóg dealbh le comóradh a dhéanamh ar do chuideachta.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Tabhair maoiniú chun foirgnimh tráchtála nua a thógáil sa bhaile.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Ceannaigh cearta eisiacha iompair ar feadh bliana sa bhaile seo. Ní cheadóidh údarás an bhaile do phaisinéirí agus lastas ach na stáisiúin atá agatsa a úsáid.{}Costas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Tabhair breab don údarás áitiúil chun do rátáil a mhéadú, leis an mbaol ann go mbeidh pionós trom ort má bheirtear ort.{}Costas: {CURRENCY_LONG} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Ceist STR_GOAL_QUESTION_CAPTION_INFORMATION :Faisnéis STR_GOAL_QUESTION_CAPTION_WARNING :Rabhadh STR_GOAL_QUESTION_CAPTION_ERROR :Earráid ### Start of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Fordheontais STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Fordheontais le fáil do sheirbhísí chun: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} a thabhairt ó{STRING} go {STRING}{YELLOW} (roimh {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Ceann ar bith - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Seirbhísí a fhaigheann fordheontas: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} a thabhairt ó {STRING} go {STRING}{YELLOW} ({COMPANY}{YELLOW}, go dtí {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliceáil ar sheirbhís chun an t-amharc a lárú ar thionscal/bhaile. Déantar amharc nua a oscailt ar shuíomh an tionscail/bhaile le Ctrl+Cliceáil # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Ainmneacha na stáisiún - cliceáil ar ainm chun an t-amharc a lárú ar stáisiún. Osclaítear amharc nua ar shuíomh an stáisiúin le Ctrl+Cliceáil STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Coinnigh síos Ctrl le níos mó ná rud amháin a roghnú STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Stáisiú{P "" "" "" "" ""}n STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ceann ar bith - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Roghnaigh gach áis STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Roghnaigh gach cineál lastais (lena n-áirítear lastas ar bith ag feitheamh) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Níl lastas de chineál ar bith ag fanacht # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Ag fanacht: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ar an mbealach ó {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Glactar le STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Taispeáin liosta den lastas a ghlactar leis STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Glactar le: {WHITE}{CARGO_LIST} STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rátálacha STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Taispeáin rátálacha na stáisiún STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Rátáil áitiúil na seirbhíse iompair: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Uafásach STR_CARGO_RATING_VERY_POOR :An-dona STR_CARGO_RATING_POOR :Go dona STR_CARGO_RATING_MEDIOCRE :Meánach STR_CARGO_RATING_GOOD :Go maith STR_CARGO_RATING_VERY_GOOD :An-mhaith STR_CARGO_RATING_EXCELLENT :Ar fheabhas STR_CARGO_RATING_OUTSTANDING :Go hiontach ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an stáisiúin. Osclaítear amharc nua ar shuíomh an stáisiúin le Ctrl+Cliceáil STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Athraigh ainm an stásiúin STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Taispeáin gach traein a bhfuil an stáisiún seo ar a sceideal STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Taispeáin gach feithicil bóthair a bhfuil an stáisiún seo ar a sceideal STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Taispeáin gach aerárthach a bhfuil an stáisiún seo ar a sceideal STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Taispeáin gach long a bhfuil an stáisiún seo ar a sceideal STR_STATION_VIEW_RENAME_STATION_CAPTION :Athainmnigh stáisiún/limistéar lódála # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an phointe bealaigh. Osclaítear amharc nua ar shuíomh an phointe bealaigh le Ctrl+Cliceáil STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Athraigh ainm an phointe bealaigh STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an bhaoi. Osclaítear amharc nua ar shuíomh an bhaoi le Ctrl+Cliceáil STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Athraigh ainm an bhaoi STR_EDIT_WAYPOINT_NAME :{WHITE}Cuir ainm an phointe bealaigh in eagar # Finances window STR_FINANCES_CAPTION :{WHITE}Airgeadas {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Caiteachas/Ioncam STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Tógáil STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Feithiclí Nua STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Costais Choinneála Traenacha STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Costais Choinneála Feithiclí Bóthair STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Costais Choinneála Aerárthach STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Costais Choinneála na Long STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Cothabháil na nÁitreabh STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Ioncam ó Thraenacha STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ioncam ó Fheithiclí Bóthair STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ioncam ó Aerárthaigh STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ioncam ó Longa STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Ús ar Iasacht STR_FINANCES_SECTION_OTHER :{GOLD}Eile STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Iomlán: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Iarmhéid Bainc STR_FINANCES_LOAN_TITLE :{WHITE}Iasacht STR_FINANCES_MAX_LOAN :{WHITE}Iasacht Uasta: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Tabhair ar iasacht{CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Méadaigh méid na hiasachta. Tógtar an oiread agus is féidir a fháil ar iasacht le Ctrl+Cliceáil STR_FINANCES_REPAY_BUTTON :{BLACK}Aisíoc{CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Aisíoc cuid den íosacht. Déantar an oiread agus is féidir den iasacht a aisíoc le Ctrl+Cliceáil # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Bainisteoir) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Bunaithe: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Scéim Dathanna: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Feithiclí: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} {P th th th dt t}raein STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} {P fh fh fh bhf f}eithicil bóthair STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} {P "" "" "" n- ""}aerárthach STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} {P "" "" "" "" ""}long STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ceann ar bith STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Luach na cuideachta: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}(is le {1:COMPANY} {0:COMMA}%) STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Tóg CC STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Tóg ceanncheathrú na cuideachta STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Breathanaigh ar CC STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Breathnaigh ar cheanncheathrú na cuideachta STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Athlonnaigh an CC STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Tóg ceanncheathrú na cuideachta in áit eile ar chostas 1% de luach na cuideachta STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Aghaigh Nua STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Roghnaigh aghaidh nua don bhainisteoir STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Scéim Dathanna STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Athraigh libhré fheithiclí na cuideachta STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Ainm na Cuideachta STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Athraigh ainm na cuideachta STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Ainm an Bhainisteora STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Athraigh ainm an bhainisteora STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Ceannaigh sciar 25% sa chuideachta STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Díol sciar 25% sa chuideachta STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Ceannaigh sciar 25% sa chuideachta seo STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Díol sciar 25% sa chuideachta seo STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Ainm na Cuideachta STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Ainm an Bhainisteora STR_BUY_COMPANY_MESSAGE :{WHITE}Tá cuideachta iompair á lorg againn chun seilbh a ghlacadh ar ár gcuideachta.{}{}An bhfuil fonn ort seilbh a ghlacadh ar {COMPANY} ar chostas {CURRENCY_LONG}? # Company infrastructure window # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Tionscail STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ceann ar bith - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} (iompraíodh {COMMA}%) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} (iompraíodh {COMMA}%/{COMMA}%) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ainmneacha na dtionscal - cliceáil ar ainm chun an príomh-amharc a lárú ar thionscal. Osclaítear amharc nua ar shuíomh an tionscail le Ctrl+Cliceáil # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Táirgeacht an mhí seo caite: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (iompraíodh {COMMA}%) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an tionscail. Osclaítear amharc nua ar shuíomh an tionscail le Ctrl+Cliceáil STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Leibhéal táirgeachta: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Teastaíonn: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Lastas ag fanacht le próiseáil: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Táirgtear: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Táirgtear: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Athraigh táirgeacht (iolra de 8, suas go 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Athraigh an ráta táirgeachta (céatadán, suas go 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} {P Th Th Th dT T}raein STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} {P Fh Fh Fh bhF F}eithicil Bóthair STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} {P "" "" "" "" ""}Long STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} {P A A A nA A}erárthach STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Traenacha - cliceáil ar thraein le faisnéis a fháil STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Feithiclí bóthair - cliceáil ar fheithicil le faisnéis a fháil STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Longa - Cliceáil ar long le faisnéis a fháil STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aerárthaigh - cliceáil ar aerárthach le faisnéis a fháil STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Brabús i mbliana: {CURRENCY_LONG} (anuraidh: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Traenacha atá ar fáil STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Feithiclí atá le fáil STR_VEHICLE_LIST_AVAILABLE_SHIPS :Longa atá le fáil STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Aerárthaigh atá le fáil STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Féach liosta de na dearthaí innill atá ar fáil don chineál feithicle seo. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Bainistigh liosta STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Seol treoracha le gach feithicil sa liosta seo STR_VEHICLE_LIST_REPLACE_VEHICLES :Athchuir feithiclí STR_VEHICLE_LIST_SEND_FOR_SERVICING :Seol i gcomhair Seirbhísithe STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Seol chuig Iosta STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Seol chuig Iosta STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Seol chuig Iosta STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Seol chuig Haingear STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Cliceáil le gach feithicil sa liosta a stopadh STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Cliceáil le gach feithicil sa liosta a thosú STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Orduithe comhroinnte de {COMMA} {P Fh Fh Fh bhF F}eithicil # Group window STR_GROUP_ALL_TRAINS :Gach traein STR_GROUP_ALL_ROAD_VEHICLES :Gach feithicil bóthair STR_GROUP_ALL_SHIPS :Gach long STR_GROUP_ALL_AIRCRAFTS :Gach aerárthach STR_GROUP_DEFAULT_TRAINS :Traenacha nach bhfuil i ngrúpa STR_GROUP_DEFAULT_ROAD_VEHICLES :Feithiclí bóthair nach bhfuil i ngrúpa STR_GROUP_DEFAULT_SHIPS :Longa nach bhfuil i ngrúpa STR_GROUP_DEFAULT_AIRCRAFTS :Aerárthaigh nach bhfuil i ngrúpa STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grúpaí - cliceáil ar ghrúpa le gach feithicil sa ghrúpa seo a liostú STR_GROUP_CREATE_TOOLTIP :{BLACK}Cliceáil le grúpa a chruthú STR_GROUP_DELETE_TOOLTIP :{BLACK}Scrios an grúpa roghnaithe STR_GROUP_RENAME_TOOLTIP :{BLACK}Athainmnigh an grúpa roghnaithe STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Cliceáil chun an grúpa seo a chosaint ón uathionadú uilíoch STR_GROUP_ADD_SHARED_VEHICLE :Cuir le feithiclí comhroinnte STR_GROUP_REMOVE_ALL_VEHICLES :Bain gach feithicil STR_GROUP_RENAME_CAPTION :{BLACK}Athainmnigh grúpa # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Feithiclí Iarnróid Nua STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Feithiclí Iarnróid Leictreacha Nua STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Feithiclí Aonráille Nua STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Feithiclí Maglev Nua STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Feithiclí Iarnróid Nua STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Feithiclí Bóthair Nua STR_BUY_VEHICLE_SHIP_CAPTION :Longa Nua STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Aerárthaigh Nua STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Costas: {GOLD}{CURRENCY_LONG}{BLACK} Meáchan: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Luas: {GOLD}{VELOCITY}{BLACK} Cumhacht: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Luas: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Costas Coinneála: {GOLD}{CURRENCY_LONG}/bl STR_PURCHASE_INFO_CAPACITY :{BLACK}Toilleadh: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(is féidir athfheistiú) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Deartha: {GOLD}{NUM}{BLACK} Saolré: {GOLD}{COMMA} bliain STR_PURCHASE_INFO_RELIABILITY :{BLACK}Iontaofacht uasta: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Costas: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Meáchan: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Costas: {GOLD}{CURRENCY_LONG}{BLACK} Luas: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Toilleadh: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vaigíní faoi Chumhacht: {GOLD}+{POWER}{BLACK} Meáchan: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Is féidir athfheistiú go: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Gach cineál lastais STR_PURCHASE_INFO_ALL_BUT :Gach rud seachas {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Iarracht uasta tarraingthe: {GOLD}{FORCE} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liosta chun feithicil traenach a roghnú - cliceáil ar fheithicil le faisnéis a fháil STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liosta chun feithicil bóthair a roghnú - cliceáil ar fheithicil le faisnéis a fháil STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Liosta chun long a roghnú - cliceáil ar long le faisnéis a fháil STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Liosta chun aerárthach a roghnú - cliceáil ar aerárthach le faisnéis a fháil STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Ceannaigh Feithicil STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Ceannaigh Feithicil STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Ceannaigh Long STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Ceannaigh Aerárthach STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaigh an fheithicil traenach aibhsithe STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaigh an fheithicil bóthair aibhsithe STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaigh an long aibhsithe STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Ceannaigh an t-aerárthach aibhsithe STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Athainmnigh STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Athainmnigh STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Athainmnigh STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Athainmnigh STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Athainmnigh an cineál feithicle traenach STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Athainmnigh an cineál feithicle bóthair STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Athainmnigh an cineál loinge STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Athainmnigh an cineál aerárthaigh STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Athainmnigh an cineál feithicle traenach STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Athainmnigh an cineál feithicle bóthair STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Athainmnigh an cineál loinge STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Athainmnigh an cineál aerárthaigh # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Athraigh ainm iosta STR_DEPOT_RENAME_DEPOT_CAPTION :Athainmnigh iosta STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} {P fh fh fh bhf f}eithicil{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Traenacha - tarraing feithicil le cléchlicáil le cur leis an traein nó le baint de, deaschliceáil le haghaidh faisnéise. Coinnigh síos Ctrl agus cuirfear an dá rud i bhfeidhm ar an slabhra a leanas STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Feithiclí - deaschliceáil ar fheithicil le faisnéis a fháil STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Longa - deaschliceáil ar long le faisnéis a fháil STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aerárthaigh - deaschliceáil ar aerárthach le faisnéis a fháil STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Tarraing feithicil traenach anseo chun í a dhíol STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Tarraing feithicil bóthair anseo chun í a dhíol STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Tarraing long anseo chun í a dhíol STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Tarraing aerárthach anseo chun é a dhíol STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Tarraing inneall traenach anseo chun an traein iomlán a dhíol STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Díol gach traein san iosta seo STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Díol gach feithicil bóthair san iosta seo STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Díol gach long san iosta seo STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Díol gach aerárthach sa haingear STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Uathionadaigh gach traein san iosta STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Uathionadaigh gach feithicil bóthair san iosta STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Uathionadaigh gach long san iosta STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Uathionadaigh gach aerárthach sa haingear STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Feithiclí Nua STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Feithiclí Nua STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Longa Nua STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Aerárthaigh Nua STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaigh feithicil traenach nua STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaigh feithicil bóthair nua STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaigh long nua STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Ceannaigh aerárthach nua STR_DEPOT_CLONE_TRAIN :{BLACK}Clónáil Traein STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clónáil Feithicil STR_DEPOT_CLONE_SHIP :{BLACK}Clónáil Long STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clónáil Aerárthach STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Ceannóidh sé seo cóip de thraein lena n-áirítear gach vaigín. Cliceáil ar an gcnaipe seo agus ansin ar thraein laistigh nó lasmuigh den iosta. Déantar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Ceannóidh sé seo cóip d'fheithicil bóthair. Cliceáil ar an gcnaipe seo agus ansin ar fheithicil bóthair laistigh nó lasmuigh den iosta. Déantar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Ceannóidh sé seo cóip de long. Cliceáil ar an gcnaipe seo agus ansin ar long laistigh nó lasmuigh den iosta. Déantar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Ceannóidh sé seo cóip d'aerárthach. Cliceáil ar an gcnaipe seo agus ansin ar aerárthach laistigh nó lasmuigh den iosta. Déantar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an iosta traenach. Osclaítear amharc nua ar shuíomh an iosta traenach le Ctrl+Cliceáil STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an iosta feithiclí bóthair. Osclaítear amharc nua ar shuíomh an iosta feithiclí bóthair le Ctrl+Cliceáil STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an iosta loinge. Osclaítear amharc nua ar shuíomh an iosta loinge le Ctrl+Cliceáil STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an haingir. Osclaítear amharc nua ar shuíomh an haingir le Ctrl+Cliceáil STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Faigh liosta de gach traein a bhfuil an t-iosta reatha ina n-orduithe STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Faigh liosta de gach feithicil bóthair a bhfuil an t-iosta reatha ina n-orduithe STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Faigh liosta de gach long a bhfuil an t-iosta reatha ina n-orduithe STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Faigh liosta de gach aerárthach a bhfuil haingear ar bith san aerfort seo ina n-orduithe STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Cliceáil chun gach traein laistigh den iosta a stopadh STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Cliceáil chun gach feithicil bóthair laistigh den iosta a stopadh STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Cliceáil chun gach long laistigh den iosta a stopadh STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Cliceáil chun gach aerárthach laistigh den haingear a stopadh STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Cliceáil chun gach traein laistigh den iosta a thosú STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Cliceáil chun gach feithicil bóthair laistaigh den iosta a thosú STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Cliceáil chun gach long laistigh den iosta a thosú STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Cliceáil chun gach aerárthach laistigh den haingear a thosú STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Tá tú ar tí gach feithicil san iosta a dhíol. An bhfuil tú cinnte? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Teachtaireacht ó dhéantóir feithiclí STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Táimid díreach tar éis {STRING} nua a dhearadh - an mbeadh suim agat úsáid eisiach a bhaint as ar feadh bliana, le go mbeimid in ann a fheiceáil mar a fheidhmíonn sé sula gcuirfimid ar fáil do chách é? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :inneall gluaiste iarnróid STR_ENGINE_PREVIEW_ROAD_VEHICLE :feithicil bóthair STR_ENGINE_PREVIEW_AIRCRAFT :aerárthach STR_ENGINE_PREVIEW_SHIP :long STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :inneall gluaiste aonráille STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :inneall gluaiste maglev STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost:as {CURRENCY_LONG} Meáchan: {WEIGHT_SHORT}{}Luas: {VELOCITY} Cumhacht: {POWER}{}Costas Coinneála {CURRENCY_LONG}/bl{}Toilleadh: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Costas: {CURRENCY_LONG} Meáchan: {WEIGHT_SHORT}{}Luas: {VELOCITY} Cumhacht: {POWER} T.E. uasta: {6:FORCE}{}Costas Coinneála: {4:CURRENCY_LONG}/bl{}Toilleadh: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Costas: {CURRENCY_LONG} Luas Uasta: {VELOCITY}{}Toilleadh: {CARGO_LONG}, {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/bl STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Costas: {CURRENCY_LONG} Luas Uasta: {VELOCITY}{}Toilleadh: {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/bl # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ionadaigh{STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Traein STR_REPLACE_VEHICLE_ROAD_VEHICLE :Feithicil Bóthair STR_REPLACE_VEHICLE_SHIP :Long STR_REPLACE_VEHICLE_AIRCRAFT :Aerárthach STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Roghnaigh an cineál innill le hathsholáthar STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Roghnaigh an cineál nua innill is mian leat a úsáid in ionad an chineáil innill atá roghnaithe ar chlé STR_REPLACE_VEHICLES_START :{BLACK}Tosaigh ag athsholáthar Feithiclí STR_REPLACE_HELP_START_BUTTON :{BLACK}Brúigh le tús a chur leis an gcineál innill atá roghnaithe ar chlé a athsholáthar leis an gcineál innill atá roghnaithe ar dheis STR_REPLACE_NOT_REPLACING :{BLACK}Níl athsholáthar ar bun STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Níl aon fheithicil roghnaithe STR_REPLACE_VEHICLES_STOP :{BLACK}Stad ag athsholáthar Feithiclí STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Brúigh chun deireadh a chur le hathsholáthar den chineál innill atá roghnaithe ar chlé STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Ag athsholáthar: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Athraigh idir na fuinneoga athsholáthair innill agus vaigíní STR_REPLACE_ENGINES :Innill STR_REPLACE_WAGONS :Vaigíní STR_REPLACE_HELP_RAILTYPE :{BLACK}Roghnaigh an cineál ráille is mian leat innill a athsholáthar air STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Taispeántar cén inneall a dhéanfar an t-inneall atá roghnaithe ar chlé a athsholáthar leis, má dhéanfar é a athsholáthar STR_REPLACE_RAIL_VEHICLES :Feithiclí Iarnróid STR_REPLACE_ELRAIL_VEHICLES :Feithiclí Iarnróid Leictreacha STR_REPLACE_MONORAIL_VEHICLES :Feithiclí Aonráille STR_REPLACE_MAGLEV_VEHICLES :Feithiclí Maglev STR_REPLACE_REMOVE_WAGON :{BLACK}Vaigíní a bhaint: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Ceangail ar uath-athsholáthar fad na traenach a choinneáil mar an gcéanna trí vaigíní a bhaint (ag tosú ag an tosach), má tharlaíonn sé go mbeadh an traein níos faide tar éis an t-inneall a athsholáthar. # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh na traenach. Leanfar an traein sa phríomhamharc le Ctrl+Cliceáil STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh na feithicle. Leanfar an fheithicil sa phríomhamharc le Ctrl+Cliceáil STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh na loinge. Leanfar an long sa phríomhamharc le Ctrl+Cliceáil STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Láraigh an príomhamharc ar shuíomh an aerárthaigh. Leanfar an t-aerárthach sa phríomhamharc le Ctrl+Cliceáil STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Seol an traein chuig an iosta. Ní dhéanfar ach seirbhísiú le Ctrl+Cliceáil STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Seol an fheithicil chuig an iosta. Ní dhéanfar ach seirbhísiú le Ctrl+Cliceáil STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Seol an long chuig an iosta. Ní dhéanfar ach seirbhísiú le Ctrl+Cliceáil STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Seol an t-aerárthach chuig an haingear. Ní dhéanfar ach seirbhísiú le Ctrl+Cliceáil STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Ceannófar cóip den traein lena n-áirítear gach vaigín. Déanfar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Ceannófar cóip den fheithicil bóthair. Déanfar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Ceannófar cóip den long. Déanfar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Ceannófar cóip den aerárthach. Déanfar na horduithe a chomhroinnt le Ctrl+Cliceáil STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Leag ar an traein dul ar aghaidh gan fanacht ar an gcomhartha STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Athfheistigh traein le cineál lastais eile a iompar STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Athfheistigh feithicil bóthair le cineál lastais eile a iompar STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Athfheistigh long le cineál lastais eile a iompar STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Athfheistigh aerárthach le cineál lastais eile a iompar STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Aisiompaigh treo na traenach STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Cuir iallach ar an bhfeithicil casadh timpeall STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Taispeáin orduithe na traenach. Ctrl+Cliceáil chun amchlár na traenach a thaispeáint STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Taispeáin orduithe na feithicle. Ctrl+Cliceáil chun amchlár na feithicle a thaispeáint STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Taispeáin orduithe na loinge. Ctrl+Cliceáil chun amchlár na loinge a thaispeáint STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Taispeáin orduithe an aerárthaigh. Ctrl+Cliceáil chun amchlár an aerárthaigh a thaispeáint STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Taispeáin sonraí na traenach STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Taispeáin sonraí na feithicle bóthair STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Taispeáin sonraí na loinge STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Taispeáin sonraí an aerárthaigh STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}An gníomh don traein reatha - cliceáil chun an traein a thosú/stopadh. Ctrl+Cliceáil le scrollú chuig an gceann scríbe. STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}An gníomh don fheithicil reatha - cliceáil chun an fheithicil a thosú/stopadh. Ctrl+Cliceáil le scrollú chuig an gceann scríbe. STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}An gníomh don long reatha - cliceáil chun an long a thosú/stopadh. Ctrl+Cliceáil le scrollú chuig an gceann scríbe. STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}An gníomh don aerárthach reatha - cliceáil chun an t-aerárthach a thosú/stopadh. Ctrl+Cliceáil le scrollú chuig an gceann scríbe. # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Ag Lódáil / Dílódáil STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Ag fágáil STR_VEHICLE_STATUS_CRASHED :{RED}Tuairteáilte! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Briste síos STR_VEHICLE_STATUS_STOPPED :{RED}Stoptha STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Ag stopadh, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Gan chumhacht STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Ag fanacht ar chosán saor STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Ag déanamh ar {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Gan ordú, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ag déanamh ar {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Ag dul chuig {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Seirbhís ag {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Stoptha STR_VEHICLE_COMMAND_STOPPED :{RED}Stoptha STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Tosaithe STR_VEHICLE_COMMAND_STARTED :{GREEN}Tosaithe # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Sonraí) STR_VEHICLE_NAME_BUTTON :{BLACK}Ainm STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Ainmnith traein STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Ainmnigh feithicil bóthair STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Ainmnigh long STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Ainmnigh aerárthach STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aois: {LTBLUE}{STRING}{BLACK} Costas le Rith: {LTBLUE}{CURRENCY_LONG}/bl # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} {P bhliain bhliain bliana mbliana bliana} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P bhliain bhliain bliana mbliana bliana} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Luas uasta: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Meáchan: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhacht: {LTBLUE}{POWER}{BLACK}Luas uasta: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Meáchan: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhacht: {LTBLUE}{POWER}{BLACK} Uas-luas: {LTBLUE}{VELOCITY} {BLACK}T.E. Uasta: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Brabús i mbliana: {LTBLUE}{CURRENCY_LONG} (anuraidh: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Iontaofacht: {LTBLUE}{COMMA}% {BLACK}Líon na gcliseadh ón seirbhísiú deiridh: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Tógtha: {LTBLUE}{NUM}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Lastas: {LTBLUE}Gan lastas{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Toileadh: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Toilleadh: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Toilleadh: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Creidmheasanna Aistrithe: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Eatramh seirbhísithe: {LTBLUE}{COMMA}lá{BLACK} Seirbhísiú deiridh: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Eatramh seirbhísithe: {LTBLUE}{COMMA}%{BLACK} Seirbhísiú deiridh: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Méadaigh an t-eatramh seirbhísithe de 10. Méadaítear an t-eatramh seirbhísithe de 5 le Ctrl+Cliceáil STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Laghdaigh an t-eatramh seirbhísithe d 10. Laghdaítear an t-eatramh seirbhísithe de 5 le Ctrl+Cliceáil STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Athraigh cineál eatramh seirbhísithe STR_VEHICLE_DETAILS_DEFAULT :Réamhshocrú STR_VEHICLE_DETAILS_DAYS :Laethanta STR_VEHICLE_DETAILS_PERCENT :Céatadán STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Ainmnigh traein STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Ainmnigh feithicil bóthair STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Ainmnigh long STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Ainmnigh aerárthach # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Tógtha: {LTBLUE}{NUM}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Luach: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Toilleadh iomlán lastais na traenach seo: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Folamh STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} ó {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} ó {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Lastas STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Taispeáin sonraí faoin lastas atá á iompar STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Faisnéis STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Taispeáin sonraí na bhfeithiclí traenach STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Toilleadh STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Taispeáin an toilleadh do gach feithicil STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Lastas Iomlán STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Taispeántar toilleadh iomlán traenach, roinnte ina gcineálacha lastais STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Toilleadh: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Athfeistigh) STR_REFIT_TITLE :{GOLD}Roghnaigh an lastas le hiompar: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Toilleadh nua: {GOLD}{CARGO_LONG}{}{BLACK}Costas an aisfheistithe: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Toilleadh nua: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costas athfheistithe: {RED}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Roghnaigh na feithiclí le hathfheistiú. Is féidir níos mó ná feithicil amháin a roghnú trí tharraingt leis an luch. Roghnófar an fheithicil iomlán má chliceáltar ar spás folamh. Roghnófar feithicil agus an slabhra ina dhiaidh le Ctrl+Cliceáil STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Roghnaigh an cineál lastais a iompróidh an traein STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Roghnaigh an cineál lastais a iompróidh an fheithicil bóthair STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Roghnaigh an cineál lastais a iompróidh an long STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Roghnaigh an cineál lastais a iompróidh an t-aerárthach STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Athfheistigh traein STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Athfheistigh feithicil bóthair STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Athfheistigh long STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Athfheistigh aerárthach STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Athfheistigh traein chun an cineál lastais atá aibhsithe a iompar STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Athfheistigh feithicil bóthair chun an cineál lastais atá aibhsithe a iompar STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Athfheistigh long chun an cineál lastais atá aibhsithe a iompar STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Athfheistigh aerárthach chun an cineál lastais atá aibhsithe a iompar # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Orduithe) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Amchlár STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Athraigh chuig amharc an amchláir STR_ORDERS_LIST_TOOLTIP :{BLACK}Liosta na n-orduithe - cliceáil ar ordú chun é a aibhisiú. Is féidir scrollú chuig an stáisiún le Ctrl+Cliceáil STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Deireadh na nOrduithe - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Deireadh na nOrduithe Comhroinnte - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Gan stad STR_ORDER_GO_TO :Gabh chuig STR_ORDER_GO_NON_STOP_TO :Gabh gan stad chuig STR_ORDER_GO_VIA :Gabh trí STR_ORDER_GO_NON_STOP_VIA :Gabh gan stad trí STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Athraigh an chaoi a stoptar san ordú aibhsithe STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Lasta iomlán de lastas ar bith STR_ORDER_DROP_LOAD_IF_POSSIBLE :Lódáil má tá fáil air STR_ORDER_DROP_FULL_LOAD_ALL :Lasta iomlán de gach lastas STR_ORDER_DROP_FULL_LOAD_ANY :Lasta iomlán de lastas ar bith STR_ORDER_DROP_NO_LOADING :Ná lódáil STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Athraigh an chaoi a lódáiltear san ordú aibhsithe STR_ORDER_TOGGLE_UNLOAD :{BLACK}Dílódáil gach rud STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Dílódáil má ghlactar leis STR_ORDER_DROP_UNLOAD :Dílódáil gach rud STR_ORDER_DROP_TRANSFER :Aistrigh STR_ORDER_DROP_NO_UNLOADING :Ná dílódáil STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Athraigh an chaoil a dílódáiltear san ordú aibhsithe STR_ORDER_REFIT :{BLACK}Athfheistigh STR_ORDER_REFIT_TOOLTIP :{BLACK}Roghnaigh an cineál lastais le hathfheistiú chuig san ordú seo. Bainfear an t-ordú athfheistithe le Ctrl+Cliceáil STR_ORDER_SERVICE :{BLACK}Seirbhísigh STR_ORDER_DROP_GO_ALWAYS_DEPOT :Téigh i gcónaí STR_ORDER_DROP_SERVICE_DEPOT :Seirbhísigh más gá STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_SERVICE_TOOLTIP :{BLACK}Téigh thar an t-ordú seo ach amháin má theastaíonn seirbhísiú STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Sonraí feithicle a bhunófar an léim air # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Céatadán lódáilte STR_ORDER_CONDITIONAL_RELIABILITY :Iontaofacht STR_ORDER_CONDITIONAL_MAX_SPEED :Luas uasta STR_ORDER_CONDITIONAL_AGE :Aois na feithicle (blianta) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Seirbhís ag teastáil STR_ORDER_CONDITIONAL_UNCONDITIONALLY :I gcónaí STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Conas sonraí na feithicle a chur i gcomparáid leis an luach a tugadh STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :cothrom le STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :gan a bheith cothrom le STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :níos lú ná STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :níos lú nó cothrom le STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :níos mó ná STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :níos mó nó cothrom le STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :fíor STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :bréagach STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}An luach a chuirfear sonraí na feithicle i gcomparáid leis STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Iontráil luach le comparáid a dhéanamh leis STR_ORDERS_SKIP_BUTTON :{BLACK}Téigh thar STR_ORDERS_SKIP_TOOLTIP :{BLACK}Téigh thar an t-ordú reatha, agus tosaigh ag an chéad cheann eile. Is féidir scipeáil chuig an ordú roghnaithe le Ctrl+Cliceáil STR_ORDERS_DELETE_BUTTON :{BLACK}Scrios STR_ORDERS_DELETE_TOOLTIP :{BLACK}Scrios an t-ordú aibhsithe STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Scrios gach ordú STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Cuir deireadh le comhroinnt STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Cuir deireadh le comhroinnt liosta na n-orduithe. Scriostar gach ordú don fheithicil seo chomh maith le Ctrl+Cliceáil STR_ORDERS_GO_TO_BUTTON :{BLACK}Gabh Chuig STR_ORDER_GO_TO_NEAREST_DEPOT :Gabh chuig an iosta is gaire STR_ORDER_GO_TO_NEAREST_HANGAR :Gabh chuig an haingear is gaire STR_ORDER_CONDITIONAL :Léim choinníollach ordaithe STR_ORDER_SHARE :Comhroinn orduithe STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Ionsáigh ordú nua roimh an ordú aibhsithe, nó cuir le deireadh an liosta é. Le Ctrl, beidh orduithe stáisiúin 'lasta iomlán de lastas ar bith', beidh orduithe do phointí bealaigh 'gan stad' agus beidh orduithe d'iostaí 'déan seirbhísiú' STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Taispeáin gach feithicil a dhéanann an sceideal seo a chomhroinnt # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Gabh trí {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Gabh gan stad trí {WAYPOINT} STR_ORDER_SERVICE_AT :Seirbhísigh ag STR_ORDER_SERVICE_NON_STOP_AT :Seirbhísigh gan stad ag STR_ORDER_NEAREST_DEPOT :is gaire STR_ORDER_NEAREST_HANGAR :an Haingear is gaire STR_ORDER_TRAIN_DEPOT :Iosta Traenach STR_ORDER_ROAD_VEHICLE_DEPOT :Iosta Feithiclí Bóthair STR_ORDER_SHIP_DEPOT :Iosta Traenach STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Athfheistigh go {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Athfheistigh go {STRING} agus stop) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Uathoibríoch) STR_ORDER_FULL_LOAD :(Lasta iomlán) STR_ORDER_FULL_LOAD_ANY :(Lasta iomlán de lastas ar bith) STR_ORDER_NO_LOAD :(Ná lódáil) STR_ORDER_UNLOAD :(Dílódáil agus tóg lastas) STR_ORDER_UNLOAD_FULL_LOAD :(Dílódáil agus fan ar lasta iomlán) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Dílódáil agus fan ar lasta iomlán ar bith) STR_ORDER_UNLOAD_NO_LOAD :(Dílódáil agus fág folamh) STR_ORDER_TRANSFER :(Aistrigh agus tóg lastas) STR_ORDER_TRANSFER_FULL_LOAD :(Aistrigh agus fan ar lasta iomlán) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Aistrigh agus fan ar lasta iomlán ar bith) STR_ORDER_TRANSFER_NO_LOAD :(Aistrigh agus fág folamh) STR_ORDER_NO_UNLOAD :(Ná dílódáil agus tóg lastas) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ná dílódáil agus fan ar lasta iomlán) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ná dílódáil agus fan ar lasta iomlán ar bith) STR_ORDER_NO_UNLOAD_NO_LOAD :(Ná dílódáil agus ná lódáil) STR_ORDER_STOP_LOCATION_NEAR_END :[taobh is gaire] STR_ORDER_STOP_LOCATION_MIDDLE :[lár] STR_ORDER_STOP_LOCATION_FAR_END :[taobh is faide] STR_ORDER_CONDITIONAL_UNCONDITIONAL :Léim chuig ordú {COMMA} STR_ORDER_CONDITIONAL_NUM :Léim chuig ordú {COMMA} nuair {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Léim chuig ordú {COMMA} nuair {STRING} {STRING} STR_INVALID_ORDER :{RED} (Ordú neamhbhailí) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Amchlár) STR_TIMETABLE_ORDER_VIEW :{BLACK}Orduithe STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Athraigh chuig amharc na n-orduithe STR_TIMETABLE_TOOLTIP :{BLACK}Amchlár - cliceáil ar ordú chun é a aibhsiú STR_TIMETABLE_NO_TRAVEL :Ná taisteal STR_TIMETABLE_NOT_TIMETABLEABLE :Taisteal (uathoibríoch; curtha ar an gclár ama ag an chéad ordú de láimh eile) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Taisteal (gan amchlár) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Taisteal le {2:VELOCITY} ar a mhéad (gan amchlár) STR_TIMETABLE_TRAVEL_FOR :Taisteal ar feadh {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Taisteal ar feadh {STRING} le {VELOCITY} ar a mhéad STR_TIMETABLE_STAY_FOR :agus fan ar feadh {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :agus taisteal ar feadh {STRING} STR_TIMETABLE_DAYS :{COMMA} lá{P "" "" "" "" ""} STR_TIMETABLE_TICKS :{COMMA} {P th th th dt t}ic STR_TIMETABLE_TOTAL_TIME :{BLACK}Tógfaidh sé {STRING} an t-amchlár seo a chur i gcrích STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Glacfaidh sé ar a laghad {STRING} chun an t-amhchlár seo a chur i gcrích (níl gach rud ar an amchlár) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Tá an fheithicil seo ag rith ar am faoi láthair STR_TIMETABLE_STATUS_LATE :{BLACK}Tá an fheithicil seo ag rith {STRING} mall faoi láthair STR_TIMETABLE_STATUS_EARLY :{BLACK}Tá an fheithicil seo ag rith {STRING} luath faoi láthair STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Níor thosaigh an t-amchlár seo fós STR_TIMETABLE_STATUS_START_AT :{BLACK}Tosóidh an t-amchlár seo ag {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Dáta tosaigh STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Roghnaith dáta mar phointe tosaigh don amchlár seo STR_TIMETABLE_CHANGE_TIME :{BLACK}Athraigh Am STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Athraigh an méid ama ar chóir don ordú aibhsithe a thógáil STR_TIMETABLE_CLEAR_TIME :{BLACK}Glan Am STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Glan an méid ama don ordú aibhsithe STR_TIMETABLE_CHANGE_SPEED :{BLACK}Athraigh Teorainn Luais STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Athraigh uas-luas taistil an ordaithe aibhsithe STR_TIMETABLE_CLEAR_SPEED :{BLACK}Glan Teorainn Luais STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Glan uas-luas taistil an ordaithe aibhsithe STR_TIMETABLE_RESET_LATENESS :{BLACK}Athshocraigh an tAmadóir Moille STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Athshocraigh an t-amadóir moille, le go mbeidh an fheithicil ar am STR_TIMETABLE_AUTOFILL :{BLACK}Uathlíon STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Líon an amchlár go huathoibríoch leis na luachanna ón gcéad aistear eile (Ctrl+Cliceáil chun iarracht a dhéanamh amanna feithimh a choinneáil) STR_TIMETABLE_EXPECTED :{BLACK}Ag súil leis STR_TIMETABLE_SCHEDULED :{BLACK}Sceidealta STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Athraigh idir an t-am a bhfuil súil leis agus an t-am sceidealta STR_TIMETABLE_ARRIVAL_ABBREVIATION :I: STR_TIMETABLE_DEPARTURE_ABBREVIATION :F: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Socraigh dáta STR_DATE_SET_DATE :{BLACK}Socraigh dáta STR_DATE_SET_DATE_TOOLTIP :{BLACK}Úsáid an dáta roghnaithe mar dáta tosaigh don amchlár STR_DATE_DAY_TOOLTIP :{BLACK}Roghnaigh lá STR_DATE_MONTH_TOOLTIP :{BLACK}Roghnaigh mí STR_DATE_YEAR_TOOLTIP :{BLACK}Roghnaigh bliain # AI debug window STR_AI_DEBUG :{WHITE}Dífhabhtú AI STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Ainm an AI STR_AI_DEBUG_SETTINGS :{BLACK}Socruithe an AI STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Athraigh socruithe an AI STR_AI_DEBUG_RELOAD :{BLACK}Athlódáil an AI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Maraigh an AI, athlódáil an script agus atosaigh an AI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Cumasaigh/díchumasaigh briseadh nuair is ionann teachtaireacht loga an AI agus teaghrán an bhriste STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Briseadh ar: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Briseadh air STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Nuair a bheidh teachtaireacht loga AI mar an gcéanna leis an teaghrán seo, cuirtear an cluiche ar sos. STR_AI_DEBUG_MATCH_CASE :{BLACK}Meaitseáil an cás STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Déan scoránú idir an cás a mheaitseáil agus teachtaireachtaí loga an AI á gcur i gcomparáid le teaghrán an bhriste STR_AI_DEBUG_CONTINUE :{BLACK}Lean ar aghaidh STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Cuir deireadh leis an sos agus lean leis an AI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Amharc ar aschur dífhabhtaithe an AI seo STR_ERROR_AI_NO_AI_FOUND :Níor aimsíodh AI feiliúnach le lódáil.{}Is AI caoch é an AI seo agus ní dhéanfaidh sé aon rud.{}Is féidir leat roinnt AI a íoslódáil leis an gcóras 'Inneachar Ar Líne'.. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Thuairteáil ceann de na AIanna atá ar rith. Déan é seo a thuairisciú d'údar an AI le do thoil, le seat scáileáin den Fhuinneog Dífhabhtaithe AI ag gabháil leis. STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Níl an fhuinneog Dífhabhtú AI ar fáil ach don fhreastalaí amháin # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Cumrú AI STR_AI_CONFIG_HUMAN_PLAYER :Imreoir Daonna STR_AI_CONFIG_RANDOM_AI :AI Randamach STR_AI_CONFIG_MOVE_UP :{BLACK}Bog Suas STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Bog an AI roghnaithe suas an liosta STR_AI_CONFIG_MOVE_DOWN :{BLACK}Bog Síos STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Bog an AI roghnaithe síos sa liosta STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CONFIGURE :{BLACK}Cumraigh STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Cumraigh paraiméadair an AI # Available AIs window STR_AI_LIST_TOOLTIP :{BLACK}Cliceáil chun AI a roghnú STR_AI_LIST_AUTHOR :{LTBLUE}Údar: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Leagan: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Glac leis STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Roghnaigh an AI aibhsithe STR_AI_LIST_CANCEL :{BLACK}Cealaigh STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ná hathraigh an AI # AI Parameters STR_AI_SETTINGS_CLOSE :{BLACK}Dún STR_AI_SETTINGS_RESET :{BLACK}Athshocraigh STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} léigh mé de {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} loga athruithe de {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} ceadúnas de {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Amharc ar léigh mé STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Loga na n-athruithe STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ceadúnas # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Costas: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Costas: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Ioncam: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Ioncam: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Aistrigh: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Aistrigh: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Costas Measta: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Ioncam Measta: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Fós ag sábháil,{}fan go mbeidh sé críochnaithe! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Theip ar uathshábháil STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Ní féidir an tiomántán a léamh STR_ERROR_GAME_SAVE_FAILED :{WHITE}Theip ar Shábháil Cluiche{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ní féidir comhad a scriosadh STR_ERROR_GAME_LOAD_FAILED :{WHITE}Theip ar Lódáil Cluiche{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Earráid inmheánach: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Cluiche sábháilte briste - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Rinneadh an cluiche sábháilte le leagan níos nuaí STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Níl an comhad inléite STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Níl an comhad inscríofa STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Theip ar seiceáil sláine na sonraí STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Sábháladh an cluiche i leagan gan tacaíocht do thramanna. Baineadh gach tram. # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Tobscoireadh den chruthú léarscáile...{}... níl aon suíomh oiriúnach do bhailte STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... níl aon bhaile sa scéal seo STR_ERROR_PNGMAP :{WHITE}Ní féidir tírdhreach a lódáil ó PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... níor aimsíodh an comhad. STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... níorbh fhéidir an cineál íomhá a thiontú. íomhá PNG 8 nó 24 giotán ag teastáil. STR_ERROR_PNGMAP_MISC :{WHITE}... chuaigh rud éigin mícheart, sin a bhfuil le rá. Ár leithscéal. (gach seans go bhfuil comhad truaillithe) STR_ERROR_BMPMAP :{WHITE}Ní féidir tírdhreach a lódáil ó BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... níorbh fhéidir an cineál íomhá a thiontú. STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Rabhadh faoin scála STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Ní mholtar duit méid na léarscáile foinsí a athrú an iomarca. Lean leis an nginiúint? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Níor aimsíodh ach sraith fuaimeanna tacachumais. Má tá fuaimeanna uait, suiteáil sraith fuaimeanna sa chóras íoslódála inneachair. # Screenshot related messages STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Sábháladh an seat scáileáin mar '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Theip ar an seat scáileáin! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Teachtaireacht STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Teachtaireacht ó {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Thar taobh na léarscáile STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Roghearr do thaobh na léarscáile STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Níl a ndóthain airgead agat - {CURRENCY_LONG} ag teastáil STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Tá talamh réidh ag teastáil STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tá fána na talún sa treo mícheart STR_ERROR_CAN_T_DO_THIS :{WHITE}Ní féidir é seo a dhéanamh... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Ní mór an foirgneamh a leagan ar dtús STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Ní féidir an limistéar seo a ghlanadh... STR_ERROR_SITE_UNSUITABLE :{WHITE}... níl an suíomh oiriúnach STR_ERROR_ALREADY_BUILT :{WHITE}... tógtha cheana féin STR_ERROR_OWNED_BY :{WHITE}... is le {STRING} é STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... is le cuideachta eile an limistéar STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... baineadh an teorainn tírdhreachaithe amach STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... baineadh teorainn glanta na dtíleanna amach STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Caithfidh ainm uathúil a bheith ann STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}Tá {1:STRING} sa bhealach STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Ní cheadaítear é seo le linn sosa # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Ní cheadaíonn údarás áitiúil {TOWN} é seo STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Diúltaíonn údarás áitiúil {TOWN} cead a thabhairt chun aerfort eile a thógáil sa bhaile seo STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Diúltaíonn údarás áitiúil {TOWN} cead don aerfort mar gheall ar imní faoi thorann # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Ní féidir talamh a ardú anseo... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Ní féidir talamh a ísliú anseo... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Ní féidir talamh a chothromú anseo... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Dhéanfadh an tochailt damáiste don tollán STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... ag leibhéal na farraige cheana féin STR_ERROR_TOO_HIGH :{WHITE}... ró-ard STR_ERROR_ALREADY_LEVELLED :{WHITE}... tá sé réidh cheana féin # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ní féidir ainm na cuideachta a athrú... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Ní féidir ainm an bhainisteora a athrú... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... is é uasmhéid na hiasachta a cheadaítear ná {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Ní féidir a thuilleadh airgid a fháil ar iasacht... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... níl aon iasacht le haisíoc STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} ag teastáil STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Ní féidir an iasacht a aisíoc... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Ní féidir airgead a thabhairt uait atá ar iasacht ón mbanc... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Ní féidir an chuideachta a cheannach... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Ní féidir ceanncheathrú na cuideachta a thógáil... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Ní féidir sciar 25% a cheannach sa chuideachta seo... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Ní féidir sciar 25% a dhíol sa chuideachta seo... STR_ERROR_PROTECTED :{WHITE}Níl an chuideachta seo sean go leor le scaireanna a thrádáil fós... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Ní féidir baile ar bith a thógáil STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Ní féidir an baile a athainmniú... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Ní féidir baile a bhunú anseo... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Ní féidir an baile a fhairsingiú... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... roghearr to thaobh na léarscáile STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... roghearr do bhaile eile STR_ERROR_TOO_MANY_TOWNS :{WHITE}... an iomarca bailte STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... níl a thuilleadh spáis ar an léarscáil STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Ní thógfaidh an baile seo bóithre. Is féidir leat tógáil bóithre a chumasú in Ardsocruithe->Geilleagar->Bailte. STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Tá oibreacha bóthair ar bun STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Ní féidir an baile seo a scriosadh...{}Ní féidir stáisiún nó iosta atá ag tagairt don bhaile nó do thíle atá faoi úinéireacht an bhaile a bhaint STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... níl aon suíomh oiriúnach do dhealbh i lár an bhaile seo # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... an iomarca tionscal STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ní féidir tionscail a chruthú... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Ní féidir {STRING} a thógáil anseo... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Ní féidir an cineál tionscail seo a thógáil anseo... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... roghearr do thionscal eile STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... is gá baile a bhunú ar dtús STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... ní cheadaítear ach ceann amháin in aghaidh an bhaile STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... ní féidir é a thógáil ach i mbailte a bhfuil daonra de 1200 ar a laghad iontu STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... ní féidir é a thógáil ach i limistéar foraois bháistí STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... ní féidir é a thógáil ach i limistéar fásaigh STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... ní féidir é a thógáil ach i mbailte STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... ní féidir é a thógáil ach i lár na mbailte STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... ní féidir é a thógáil ach i gceantar íseal STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... ní féidir é a chur ach in aice le taobhanna na léarscáile STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... ní féidir foraois a chur ach taobh thuas den líne sneachta amháin # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ní féidir stáisiún iarnróid a thógáil anseo... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Ní féidir stáisiún busanna a thógáil... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Ní féidir stáisiún leoraithe a thógáil... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Ní féidir stáisiún tramanna paisinéirí a thógáil anseo... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Ní féidir stáisiún tramanna lastais a thógáil anseo... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Ní féidir dug a thógáil anseo... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Ní féidir aerfort a thógáil anseo... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tá sé taobh le níos mó ná stáisiún/limistéar lódála amháin eile atá ann cheana STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... tá an stáisiún ró-leata amach STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}An iomarca stáisiún/limistéar lódála STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}An iomarca codanna stáisiún iarnróid STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}An iomarca stadanna bus STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}An iomarca stáisiúin leoraithe STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Roghearr do stáisiún/limistéar lódála eile STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Roghearr do dug eile STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Roghearr d'aerfort eile STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Ní féidir an stáisiún a athainmniú... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... seo bóthair faoi úinéireacht an bhaile STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tá an bóthair ag dul sa treo mícheart STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... ní féidir cúinní a bheith ag stadanna tiomáin tríd STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... ní féidir acomhal a bheith ag stadanna tiomáin tríd # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Ní féidir cuid den stáisiún a bhaint... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Ní mór an stáisiún iarnróid a bhaint ar dtús STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Ní féidir an stáisiún busanna a bhaint... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Ní féidir an stáisiún leoraithe a bhaint... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Ní féidir an stáisiún tramanna paisinéirí a bhaint... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Ní féidir an stáisiún tramanna lastais a bhaint... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Ní mór an stad bóthair a bhaint ar dtús STR_ERROR_THERE_IS_NO_STATION :{WHITE}... níl aon stáisiún anseo STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Ní mór an stáisiún iarnróid a leagan ar dtús STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Ní mór an stáisiún busanna a leagan ar dtús STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Ní mór an stáisiún leoraithe a leagan ar dtús STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Ní mór an stáisiún tramanna paisinéirí a leagan ar dtús STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Ní mór an stáisiún tramanna lastais a leagan ar dtús STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Ní mór an dug a leagan ar dtús STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Ní mór an t-aerfort a leagan ar dtús # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tá sé taobh le níos mó ná pointe bealaigh amháin eile atá ann cheana STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Roghearr do phointe bealaigh eile STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Ní féidir pointe bealaigh traenach a thógáil anseo... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Ní féidir baoi a chur anseo... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Ní féidir ainm an phointe bealaigh a athrú... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Ní féidir an pointe bealaigh traenach a bhaint anseo... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Ní mór an pointe bealaigh iarnróid a bhait ar dtús STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... tá baoi sa mbealach STR_ERROR_BUOY_IS_IN_USE :{WHITE}... tá an baoi in úsáid ag cuideachta eile! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Ní féidir iosta traenacha a thógáil anseo... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Ní féidir iosta feithiclí bóthair a thógáil anseo... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Ní féidir iosta tramfheithiclí a thógáil anseo... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Ní féidir iosta long a thógáil anseo... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Ní féidir an t-iosta a athainmniú... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ní mór go mbeadh sé stoptha in iosta STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ní mór go mbeadh sé stoptha in iosta STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... ní mór dó a bheith stoptha in iosta STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... ní mór dó a bheith stoptha i haingear STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Ní féidir traenacha a athrú ach amháin nuair atá siad in iosta STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tá an traein rófhada STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Ní féidir treo na feithicle a aisiompú... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... tá níos mó ná aonad amháin ann STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Cineálacha ráillí neamh-chomhoiriúnacha STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Ní féidir feithicil a bhogadh... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Leanfaidh an t-inneall cúil an ceann atá chun tosaigh i gcónaí STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ní féidir bealach a aimsiú chuig iosta áitiúil STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ní féidir iosta a aimsiú i gcóngar STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Cineál iosta mícheart # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Tá {VEHICLE} rófhada tar éis athsholáthair STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Níor cuireadh aon riail uathionadú/athnuachan i bhfeidhm. STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(teorainn airgid) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Comhcheangal ráillí dodhéanta STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Ní mór na comharthaí a bhaint ar dtús STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Níl ráillí iarnróid feiliúnacha ann STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Ní mór na ráillí iarnróid a bhaint ar dtús STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Is bóthar aonbhealaigh nó blocáilte é STR_ERROR_CROSSING_DISALLOWED :{WHITE}Ní cheadaítear crosairí comhréidh don chineál ráille seo STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Ní féidir comharthaí a thógáil anseo... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Ní féidir ráillí iarnróid a thógáil anseo... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Ní féidir ráillí iarnróid a bhaint as seo... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Ní féidir comharthaí a bhaint as seo... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Ní féidir comharthaí a thiontú anseo... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... níl aon ráille iarnróid ann STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... níl aon chomhartha ann STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Ní féidir an cineál ráillí a thiontú anseo... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Ní mór an bóthair a bhaint ar dtús STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... ní féidir acomhail a bheith ag bóithre aonbhealaigh STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Ní féidir bóthair a thógáil anseo... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Ní féidir trambhealach a thógáil anseo... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Ní féidir bóthair a bhaint as seo... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Ní féidir trambhealach a bhaint as seo... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... níl aon bhóthar ann STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... níl aon trambhealach ann # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Ní féidir canálacha a thógáil anseo... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Ní féidir loic a thógáil anseo... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Ní féidir aibhneacha a chur anseo... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... ní mór é a thógáil ar uisce STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... ní féidir tógáil ar uisce STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... Nil tu abalta togadh ar an uise STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Ní mór canáil a scriosadh ar dtús STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Ní féidir uiscerian a thógáil anseo... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... crann anseo cheana féin STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... tír-raon mícheart do chrann den chineál sin STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Ní féidir crann a chur anseo... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Ní féidir droichead a thógáil anseo... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Ní mór droichead a leagadh ar dtús STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Ní féidir tosú agus críochnú san áit céanna STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Níl cinn an droichid ag an leibhéal céanna STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tá an droichead ró-íseal don tír-raon STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Ní mór an tús agus an deireadh a bheith i líne STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ní mór go mbeadh an dá thaobh den droichead ar thalamh STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... droichead rófhada STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Bheadh deireadh an droichid taobh amuigh den léarscáil # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Ní féidir tollán a thógáil anseo... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Níl an suíomh oiriúnach do bhealach isteach tolláin STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Ní mór tollán a scriosadh ar dtús STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Tá tollán eile sa bhealach STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Bheadh deireadh an tollán taobh amuigh den léarscáil STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Ní féidir an talamh a thochailt don taobh eile den tollán STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tollán rófhada # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... an iomarca oibiachtaí STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Ní féidir an oibiacht a thógáil... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Tá rud sa bhealach STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... tá ceanncheathrú na cuideachta sa bhealach STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Ní féidir leat an píosa talún seo a cheannach... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... is leatsa é cheana féin! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Ní féidir an grúpa a chruthú... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Ní féidir an grúpa seo a scriosadh... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Ní féidir an grúpa a athainmniú... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ní féidir gach feithicil a bhaint ón ngrúpa seo... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ní féidir an fheithicil a chur leis an ngrúpa seo... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ní féidir feithiclí comhroinnte a chur le grúpa... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Traein sa mbealach STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Feithicil bóthair sa mbealach STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Long sa mbealach STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aerárthach sa mbealach STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Ní féidir an traein a athfheistiú... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Ní féidir an fheithicil bóthair a athfheistiú... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Ní féidir an long a athfheistiú... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Ní féidir an t-aerárthach a athfheistiú... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Ní féidir an traein a ainmniú... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Ní féidir an fheithicil bóthair a ainmniú... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Ní féidir an long a ainmniú... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Ní féidir an t-aerárthach a ainmniú... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Ní féidir an traein a thosú/stopadh... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Ní féidir an fheithicil bóthair a thosú/stopadh... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Ní féidir an long a thosú/stopadh... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Ní féidir an t-aerárthach a thosú/stopadh... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Ní féidir an traein a chur chuig iosta... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Ní féidir an fheithicil bóthair a chur chuig iosta... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Ní féidir an long a chur chuig iosta... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Ní féidir an t-aerárthach a chur chuig haingear... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Ní féidir an fheithicil iarnróid a cheannach... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Ní féidir an fheithicil bóthair a cheannach... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Ní féidir an long a cheannach... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Ní féidir an t-aerárthach a cheannach... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Ní féidir an cineál feithicle traenach a athainmniú... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Ní féidir an cineál feithicle bóthair a athainmniú... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ní féidir an cineál loing a athainmniú... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ní féidir an cineál aerárthaigh a athainmniú... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Ní féidir an fheithicil iarnróid a dhíol... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ní féidir an fheithicil bóthair a dhíol... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Ní féidir an long a dhíol... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ní féidir an t-aerárthach a dhíol... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Níl an fheiticil ar fáil STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Níl an fheithicil ar fáil STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Níl an long ar fáil STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Níl an t-aerárthach ar fáil STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}An iomarca feithiclí sa chluiche STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ní féidir an t-eatramh seirbhísithe a athrú... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... tá an fheithicil scriosta # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ní féidir iallach a chur ar thraein dul thar comhartha agus contúirt ann... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ní féidir treo na traenach a aisiompú... STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Ní féidir iallach a chur ar fheithicil bóthair casadh timpeall... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Tá an t-aerárthach i mbun eitilte # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Níl a thuilleadh spáis ann d'orduithe STR_ERROR_TOO_MANY_ORDERS :{WHITE}An iomarca orduithe STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Ní féidir ordú nua a chur isteach... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Ní féidir an t-ordú seo a scriosadh... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ní féidir an t-ordú seo a athrú... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Ní féidir an t-ordú seo a bhogadh... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Ní féidir an t-ordú reatha a scipeáil... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Ní féidir scipeáil chuig an ordú roghnaith... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... ní féidir leis an bhfeithicil dul chuig gach stáisiún STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... ní féidir leis an bhfeithicil dul chuig an stáisiún sin STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ní féidir le feithicil a bhfuil an t-ordú seo á chomhroinnt aige dul chuig an stáisiún sin STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Ní féidir liosta orduithe a chomhroinnt... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Ní féidir comhroinnt liosta na n-orduithe a stopadh... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Ní féidir liosta orduithe a chóipeáil... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... rófhada ón gceann scríbe roimhe seo # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Ní féidir amchlár a thabhairt d'fheithicil... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Ní féidir le feithiclí fanacht ach ag stáisiúin. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Níl an fheithicil seo ag stopadh ag an stáisiún seo. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... an iomarca comharthaí STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Ní féidir comhartha a chur anseo... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Ní féidir ainm an chomhartha a athrú... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ní féidir an comhartha a scriosadh... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Cluiche ionsamhlúcháin bunaithe ar Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Bloc oifigí ard STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Bloc oifigí STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Bloc beag d'árasán STR_TOWN_BUILDING_NAME_CHURCH_1 :Séipéal STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Bloc oifigí mór STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Tithe cathrach STR_TOWN_BUILDING_NAME_HOTEL_1 :Óstán STR_TOWN_BUILDING_NAME_STATUE_1 :Dealbh STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Scairdeán STR_TOWN_BUILDING_NAME_PARK_1 :Páirc STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Bloc oifigí STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Siopaí agus oifigí STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Foirgneamh oifige nua-aimseartha STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Stóras STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Bloc oifigí STR_TOWN_BUILDING_NAME_STADIUM_1 :Staid STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Seantithe STR_TOWN_BUILDING_NAME_COTTAGES_1 :Teachíní STR_TOWN_BUILDING_NAME_HOUSES_1 :Tithe STR_TOWN_BUILDING_NAME_FLATS_1 :Árasáin STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Bloc oifigí ard STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Siopaí agu oifigí STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Siopaí agus oifigí STR_TOWN_BUILDING_NAME_THEATER_1 :Amharclann STR_TOWN_BUILDING_NAME_STADIUM_2 :Staid STR_TOWN_BUILDING_NAME_OFFICES_1 :Oifigí STR_TOWN_BUILDING_NAME_HOUSES_2 :Tithe STR_TOWN_BUILDING_NAME_CINEMA_1 :Pictiúrlann STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Ionad Siopadóireachta STR_TOWN_BUILDING_NAME_IGLOO_1 :Ioglú STR_TOWN_BUILDING_NAME_TEPEES_1 :Típíonna STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Teach Taephota STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Muicín Taisce ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Mianach Guail STR_INDUSTRY_NAME_POWER_STATION :Stáisiún Cumhachta STR_INDUSTRY_NAME_SAWMILL :Muileann Sábhadóireachta STR_INDUSTRY_NAME_FOREST :Foraois STR_INDUSTRY_NAME_OIL_REFINERY :Scaglann Ola STR_INDUSTRY_NAME_OIL_RIG :Rige Ola STR_INDUSTRY_NAME_FACTORY :Monarcha STR_INDUSTRY_NAME_PRINTING_WORKS :Oibreacha Clódóireachta STR_INDUSTRY_NAME_STEEL_MILL :Muileann Cruaiche STR_INDUSTRY_NAME_FARM :Feirm STR_INDUSTRY_NAME_COPPER_ORE_MINE :Mianach Mian Chopair STR_INDUSTRY_NAME_OIL_WELLS :Toibreacha Ola STR_INDUSTRY_NAME_BANK :Banc STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Monarcha Próiseála Bia STR_INDUSTRY_NAME_PAPER_MILL :Muileann Páipéir STR_INDUSTRY_NAME_GOLD_MINE :Mianach Óir STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Banc STR_INDUSTRY_NAME_DIAMOND_MINE :Mianach Diamant STR_INDUSTRY_NAME_IRON_ORE_MINE :Mianach Iarnmhéine STR_INDUSTRY_NAME_FRUIT_PLANTATION :Fáschoill Torthaí STR_INDUSTRY_NAME_RUBBER_PLANTATION :Fáschoill Rubair STR_INDUSTRY_NAME_WATER_SUPPLY :Soláthar Uisce STR_INDUSTRY_NAME_WATER_TOWER :Túr Uisce STR_INDUSTRY_NAME_FACTORY_2 :Monarcha STR_INDUSTRY_NAME_FARM_2 :Feirm STR_INDUSTRY_NAME_LUMBER_MILL :Muileann Adhmaid STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Foraois Féasóg Daideo STR_INDUSTRY_NAME_CANDY_FACTORY :Monarcha Milseán STR_INDUSTRY_NAME_BATTERY_FARM :Feirm Ceallraí STR_INDUSTRY_NAME_COLA_WELLS :Toibreacha Cóla STR_INDUSTRY_NAME_TOY_SHOP :Siopa Bréagán STR_INDUSTRY_NAME_TOY_FACTORY :Monarcha Bréagán STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Scairdeáin Plaisteach STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Monarcha Deochanna Súilíneacha STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Gineadóir Súilíní STR_INDUSTRY_NAME_TOFFEE_QUARRY :Cairéal Taifí STR_INDUSTRY_NAME_SUGAR_MINE :Mianach Siúcra ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Gan ainm STR_SV_TRAIN_NAME :Traein {COMMA} STR_SV_ROAD_VEHICLE_NAME :Feithicil Bóthair {COMMA} STR_SV_SHIP_NAME :Long {COMMA} STR_SV_AIRCRAFT_NAME :Aerárthach {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Thuaidh STR_SV_STNAME_SOUTH :{STRING} Theas STR_SV_STNAME_EAST :{STRING} Thoir STR_SV_STNAME_WEST :{STRING} Thiar STR_SV_STNAME_CENTRAL :{STRING} Láir STR_SV_STNAME_TRANSFER :Aistriú {STRING} STR_SV_STNAME_HALT :Áit Stoptha {STRING} STR_SV_STNAME_VALLEY :Gleann {STRING} STR_SV_STNAME_HEIGHTS :Arda {STRING} STR_SV_STNAME_WOODS :Coillte {STRING} STR_SV_STNAME_LAKESIDE :{STRING} Cois Locha STR_SV_STNAME_EXCHANGE :Malartán {STRING} STR_SV_STNAME_AIRPORT :Aerfort {STRING} STR_SV_STNAME_OILFIELD :Olacheantar {STRING} STR_SV_STNAME_MINES :Mianaigh {STRING} STR_SV_STNAME_DOCKS :Duganna {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :For-Stáisiún {STRING} STR_SV_STNAME_SIDINGS :Slioslach {STRING} STR_SV_STNAME_BRANCH :Brainse {STRING} STR_SV_STNAME_UPPER :{STRING} Uachtarach STR_SV_STNAME_LOWER :{STRING} Íochtarach STR_SV_STNAME_HELIPORT :Héileaport {STRING} STR_SV_STNAME_FOREST :Foraois {STRING} STR_SV_STNAME_FALLBACK :Stáisiún {STRING} #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Gal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Choo-Choo Ploddyphut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Choo-Choo Powernaut STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Choo-Choo MightyMover STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Díosail STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Díosail STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Gal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Gal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Gal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Gal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Díosal) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Leictreach) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Caráiste Paisinéirí STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Veain Poist STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Trucail Guail STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Tancaer Ola STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Veain Beo-stoic STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Veain Earraí STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Crannóg Arbhair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Trucail Adhmaid STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Crannóg Iarnmhéine STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Trucail Cruaiche STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Veain Armúrtha STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Veain Bia STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Trucail Páipéir STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Crannóg Mian Chopair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Tancaer Uisce STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Trucail Torthaí STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Trucail Rubair STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Trucail Siúcra STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Crannóg Féasóg Daideo STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Crannóg Taifí STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Veain Súilíní STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Tancaer Cóla STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Veain Milseán STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Veain Bréagán STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Trucail Ceallraí STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Trucail Deochanna Súilíneacha STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Trucail Plaisteach STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Z1 Mílaoise' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Caráiste Paisinéirí STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Veain Poist STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Trucail Guail STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Tancaer Ola STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Veain Beo-stoic STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Veain Earraí STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Crannóg Arbhair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Trucail Adhmaid STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Crannóg Iarnmhéine STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Trucail Cruaiche STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Veain Armúrtha STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Veain Bia STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Trucail Páipéir STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Crannóg Mian Chopair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Tancaer Uisce STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Trucail Torthaí STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Trucail Rubair STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Trucail Siúcra STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Crannóg Féasóg Daideo STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Crannóg Taifí STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Veain Súilíní STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Tancaer Cóla STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Veain Milseán STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Veain Bréagán STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Trucail Ceallraí STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Trucail Deochanna Súilíneacha STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Trucail Plaisteach STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Leibh1 'Leviathan' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Leibh2 'Cioclóp' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Leibh4 'Peigeasas' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Leibh4 'Ciméara' (Leictreach) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Roicéadóir Wizzowow STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Caráiste Paisinéirí STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Veain Poist STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Trucail Guail STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Tancaer Ola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Veain Beo-stoic STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Veain Earraí STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Crannóg Arbhair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Trucail Adhmaid STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Crannóg Iarnmhéine STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Trucail Cruaiche STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Veain Armúrtha STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Veain Bia STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Trucail Páipéir STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Crannóg Mian Chopair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Tancaer Uisce STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Trucail Torthaí STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Trucail Rubair STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Trucail Siúcra STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Crannóg Féasóg Daideo STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Crannóg Taifí STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Veain Súilíní STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Tancaer Cóla STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Veain Milseán STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Veain Bréagán STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Trucail Ceallraí STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Trucail Deochanna Súilíneacha STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Trucail Plaisteach STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Bus 'Regal' MPS STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Bus 'Liopard' Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Bus Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Ollbhus Foster MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Bus Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Bus Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Bus Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Trucail Guail Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Trucail Guail Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Trucail Guail DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Trucail Poist MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Trucail Poist Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Trucail Poist Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Trucail Poist MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Trucail Poist Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Trucail Poist Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Tancaer Ola Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Tancaer Ola Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Tancaer Ola Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Veain Beo-stoic Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Veain Beo-stoic Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Veain Beo-stoic Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Trucail Earraí Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Trucail Earraí Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Trucail Earraí Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Trucail Arbhair Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Trucail Arbhair Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Trucail Arbhair Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Trucail Adhmaid Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Trucail Adhmaid Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Trucail Adhmaid Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Trucail Iarnmhéine MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Trucail Iarnmhéine Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Trucail Iarnmhéine Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Trucail Cruaiche Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Trucail Cruaiche Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Trucail Cruaiche Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Trucail Armúrtha Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Trucail Armúrtha Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Trucail Armúrtha Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Veain Bia Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Veain Bia Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Veain Bia Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Trucail Páipéir Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Trucail Páipéir Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Trucail Páipéir MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Trucail Mian Chopair MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Trucail Mian Chopair Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Trucail Mian Chopair Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Tancaer Uisce Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Tancaer Uisce Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Tancaer Uisce MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Trucail Torthaí Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Trucail Torthaí Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Trucail Torthaí Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Trucail Rubair Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Trucail Rubair Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Trucail Rubair RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Trucail Siúcra MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Trucail Siúcra Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Trucail Siúchra Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Trucail Cóla MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Trucail Cóla Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Trucail Cóla Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Trucail Féasóg Daideo MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Trucail Féasóg Daideo Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Trucail Féasóg Daideo Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Trucail Taifí MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Trucail Taifí Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Trucail Taifí Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Veain Bréagán MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Veain Milseán Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Veain Bréagán Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Trucail Milseán MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Trucail Milseán Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Trucail Milseán Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Trucail Ceallraí MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Trucail Ceallraí Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Trucail Ceallraí Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Trucail Deochanna Súilíneacha MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Trucail Deochanna Súilíneacha Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Trucail Deochanna Súilíneacha Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Trucail do Phlaisteach MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Trucail do Phlaisteach Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Trucail do Phlaisteach Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Trucail Súilíní MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Trucail Súilíní Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Trucail Súilíní Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Tancaer Ola MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Tancaer Ola CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Bád Farantóireachta MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Bád Farantóireachta FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Sciorrárthach Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Bád Farantóireachta Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Bád Farantóireachta Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Lastlong Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Lastlong Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Lastlong MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Lastlong Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Aeraspás Yate YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Aerthacsaí A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Aerthacsaí A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Aerthacsaí A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Aerthacsaí A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Aeraspás Yate YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :Aerthacsaí A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Z-Tointeáil Yate STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Héileacaptar Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Héileacaptar Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Héileacaptar Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Baoi STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Baoi #{COMMA} STR_FORMAT_COMPANY_NUM :(Cuideachta {COMMA}) STR_FORMAT_GROUP_NAME :Grúpa {COMMA} STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} STR_FORMAT_WAYPOINT_NAME :Pointe bealaigh {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Pointe bealaigh {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Iosta Traenacha {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Iosta Traenacha {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Iosta Feithiclí Bóthair {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Iosta Feithiclí Bóthair {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Iosta Long {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Iosta Long {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Haingear STR_UNKNOWN_STATION :stáisiún anaithnid STR_DEFAULT_SIGN_NAME :Comhartha STR_COMPANY_SOMEONE :duine éigean STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Duine ag féachaint, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/0000755000000000000000000000000012246102757015543 5ustar rootrootopenttd-1.3.3/src/lang/unfinished/urdu.txt0000644000000000000000000072444712246102556017302 0ustar rootroot##name Urdu ##ownname Urdu ##isocode ur_PK ##plural 0 ##textdir rtl ##digitsep ٬ ##digitsepcur ٬ ##decimalsep ٫ ##winlangid 0x0420 ##grflangid 0x5c ##gender m f # $Id: urdu.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(undefined string) STR_JUST_NOTHING :کچھ نہیں # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :مسافر STR_CARGO_PLURAL_COAL :کویلہ STR_CARGO_PLURAL_MAIL :ڈاک STR_CARGO_PLURAL_OIL :تیل STR_CARGO_PLURAL_LIVESTOCK :مویشی STR_CARGO_PLURAL_GOODS :سامان تجارت STR_CARGO_PLURAL_GRAIN :اناج STR_CARGO_PLURAL_WOOD :لکڑی STR_CARGO_PLURAL_IRON_ORE :خام لوہا STR_CARGO_PLURAL_STEEL :سٹیل STR_CARGO_PLURAL_VALUABLES :قیمتی سامان STR_CARGO_PLURAL_COPPER_ORE :خام تانبا STR_CARGO_PLURAL_MAIZE :مکی STR_CARGO_PLURAL_FRUIT :پھل STR_CARGO_PLURAL_DIAMONDS :ہیرے STR_CARGO_PLURAL_FOOD :کھانا STR_CARGO_PLURAL_PAPER :کاغذ STR_CARGO_PLURAL_GOLD :سونا STR_CARGO_PLURAL_WATER :پانی STR_CARGO_PLURAL_WHEAT :گندم STR_CARGO_PLURAL_RUBBER :ربڑ STR_CARGO_PLURAL_SUGAR :چینی STR_CARGO_PLURAL_TOYS :کھلونے STR_CARGO_PLURAL_CANDY :مٹھایاں STR_CARGO_PLURAL_COLA :کوئلہ STR_CARGO_PLURAL_COTTON_CANDY :کینڈی فلاس STR_CARGO_PLURAL_BUBBLES :بلبلے STR_CARGO_PLURAL_TOFFEE :ٹافی STR_CARGO_PLURAL_BATTERIES :بیٹریاں STR_CARGO_PLURAL_PLASTIC :پلاسٹک STR_CARGO_PLURAL_FIZZY_DRINKS :گیسی مشروب # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :مسافر STR_CARGO_SINGULAR_COAL :کویلہ STR_CARGO_SINGULAR_MAIL :ڈاک STR_CARGO_SINGULAR_OIL :تیل STR_CARGO_SINGULAR_LIVESTOCK :مویشی STR_CARGO_SINGULAR_GOODS :سامان STR_CARGO_SINGULAR_GRAIN :اناج STR_CARGO_SINGULAR_WOOD :لکڑی STR_CARGO_SINGULAR_IRON_ORE :خام لوہا STR_CARGO_SINGULAR_STEEL :فولاد STR_CARGO_SINGULAR_VALUABLES :قیمتی سامان STR_CARGO_SINGULAR_COPPER_ORE :خام تانبا STR_CARGO_SINGULAR_MAIZE :مکیی STR_CARGO_SINGULAR_FRUIT :پھل STR_CARGO_SINGULAR_DIAMOND :ہیرا STR_CARGO_SINGULAR_FOOD :کھانا STR_CARGO_SINGULAR_PAPER :کاغذ STR_CARGO_SINGULAR_GOLD :سونا STR_CARGO_SINGULAR_WATER :پانی STR_CARGO_SINGULAR_WHEAT :گندم STR_CARGO_SINGULAR_RUBBER :ربڑ STR_CARGO_SINGULAR_SUGAR :چینی STR_CARGO_SINGULAR_TOY :کھلونا STR_CARGO_SINGULAR_CANDY :مٹھائی STR_CARGO_SINGULAR_COLA :کولا STR_CARGO_SINGULAR_COTTON_CANDY :کینڈی فلاس STR_CARGO_SINGULAR_BUBBLE :بلبلہ STR_CARGO_SINGULAR_TOFFEE :ٹافی STR_CARGO_SINGULAR_BATTERY :بیٹری STR_CARGO_SINGULAR_PLASTIC :پلاسٹک STR_CARGO_SINGULAR_FIZZY_DRINK :گیسی مشروب # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{P 0 مسافر مسافرﻴﻦ}{COMMA} STR_QUANTITY_COAL :{WEIGHT_LONG} کویلہ STR_QUANTITY_MAIL :{COMMA} ڈاک ک{P ا ے} تھیل{P ا ے} STR_QUANTITY_OIL :{VOLUME_LONG} تیل STR_QUANTITY_LIVESTOCK :{COMMA} عدد مویشی STR_QUANTITY_GOODS :سامان ک{P 0 ا ے} {COMMA} کریٹ STR_QUANTITY_GRAIN :{WEIGHT_LONG} انآج STR_QUANTITY_WOOD :{WEIGHT_LONG} لکڑی STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} خام لوہا STR_QUANTITY_STEEL :{WEIGHT_LONG} سٹیل STR_QUANTITY_VALUABLES :قیمتی سامان ک{P 0 ا ے} {COMMA} تھیل{P ا ے} STR_QUANTITY_COPPER_ORE :خام دھات تانبے کا {WEIGHT_LONG} وزن STR_QUANTITY_MAIZE :مکئی کا {WEIGHT_LONG} وزن STR_QUANTITY_FRUIT :پھل کا {WEIGHT_LONG} وزن STR_QUANTITY_DIAMONDS :ھیرے کے {COMMA} تھیل{P ا ے} STR_QUANTITY_FOOD :خوراک کا {WEIGHT_LONG} وزن STR_QUANTITY_PAPER :کاغز کا {WEIGHT_LONG} وزن STR_QUANTITY_GOLD :سونے ک{P 0 ا ے} {COMMA} تھیل{P ا ے} STR_QUANTITY_WATER :{VOLUME_LONG} پانی STR_QUANTITY_WHEAT :گندم کا {WEIGHT_LONG} وزن STR_QUANTITY_RUBBER :{VOLUME_LONG} ربڑ STR_QUANTITY_SUGAR :چینی کا {WEIGHT_LONG} وزن STR_QUANTITY_TOYS :{COMMA} کھلون{P ا ے} STR_QUANTITY_SWEETS :مٹھائی ک{P 0 ا ے} {COMMA} تھیل{P ا ے} STR_QUANTITY_COLA :{VOLUME_LONG} کولا STR_QUANTITY_CANDYFLOSS :گڑیا کے بالوں کا {WEIGHT_LONG} وزن STR_QUANTITY_BUBBLES :{COMMA} ببل STR_QUANTITY_TOFFEE :ٹافی کا {WEIGHT_LONG} وزن STR_QUANTITY_BATTERIES :{COMMA} بیٹر{P ی یاں} STR_QUANTITY_PLASTIC :{VOLUME_LONG} پلاسٹک STR_QUANTITY_FIZZY_DRINKS :{COMMA} کولڈ ڈرنک STR_QUANTITY_N_A :- # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}مسافر STR_ABBREV_COAL :{TINY_FONT} کل STR_ABBREV_MAIL :{TINY_FONT} ڈاک STR_ABBREV_OIL :{TINY_FONT} تیل STR_ABBREV_LIVESTOCK :{TINY_FONT} م ش STR_ABBREV_GOODS :{TINY_FONT} س م STR_ABBREV_GRAIN :{TINY_FONT}اناج STR_ABBREV_WOOD :{TINY_FONT}لکڑی STR_ABBREV_IRON_ORE :{TINY_FONT}خام لوہا STR_ABBREV_STEEL :{TINY_FONT}اسٹیل STR_ABBREV_VALUABLES :{TINY_FONT}قیمتی اشیاء STR_ABBREV_COPPER_ORE :{TINY_FONT}خام تانبا STR_ABBREV_MAIZE :{TINY_FONT}مکئی STR_ABBREV_FRUIT :{TINY_FONT}پھل STR_ABBREV_DIAMONDS :{TINY_FONT}ہیرے STR_ABBREV_FOOD :{TINY_FONT}خوراک STR_ABBREV_PAPER :{TINY_FONT}کاغذ STR_ABBREV_GOLD :{TINY_FONT}سونا STR_ABBREV_WATER :{TINY_FONT}پانی STR_ABBREV_WHEAT :{TINY_FONT}گندم STR_ABBREV_RUBBER :{TINY_FONT}ربڑ STR_ABBREV_SUGAR :{TINY_FONT}چینی STR_ABBREV_TOYS :{TINY_FONT}کھلونے STR_ABBREV_SWEETS :{TINY_FONT}مٹھائی STR_ABBREV_COLA :{TINY_FONT}کولا STR_ABBREV_CANDYFLOSS :{TINY_FONT}میٹھی گولیاں STR_ABBREV_BUBBLES :{TINY_FONT}بُلبُلے STR_ABBREV_TOFFEE :{TINY_FONT}ٹافی STR_ABBREV_BATTERIES :{TINY_FONT}سیل STR_ABBREV_PLASTIC :{TINY_FONT}پلاسٹِک STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}سوڈا واٹر STR_ABBREV_NONE :{TINY_FONT}نہیں STR_ABBREV_ALL :{TINY_FONT}تمام # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} مسافرین STR_BAGS :{COMMA} تھیلا{P "" ے} STR_TONS :{COMMA} من STR_LITERS :{COMMA} لیٹر STR_ITEMS :{COMMA} چیز{P "" یں} STR_CRATES :{COMMA} کریٹ # Colours, do not shuffle STR_COLOUR_DARK_BLUE :گہرا نیلا STR_COLOUR_PALE_GREEN :ہلکا سبز STR_COLOUR_PINK :گلابی STR_COLOUR_YELLOW :پیلا STR_COLOUR_RED :سرخ STR_COLOUR_LIGHT_BLUE :ہلکا نیلا STR_COLOUR_GREEN :سبز STR_COLOUR_DARK_GREEN :گہرا سبز STR_COLOUR_BLUE :نیلا STR_COLOUR_CREAM :بالائی STR_COLOUR_MAUVE :بنفشی STR_COLOUR_PURPLE :جامنی STR_COLOUR_ORANGE :نارنجی STR_COLOUR_BROWN :بھورا STR_COLOUR_GREY :سلیٹی STR_COLOUR_WHITE :سفید # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} میل فی گھنٹھ STR_UNITS_VELOCITY_METRIC :{COMMA} کلو میٹر فی گھنٹھ STR_UNITS_VELOCITY_SI :{COMMA} میٹر فی سیکنڈ STR_UNITS_POWER_IMPERIAL :{COMMA} ھارس پآور STR_UNITS_POWER_METRIC :{COMMA} ھارس پآور STR_UNITS_POWER_SI :{COMMA} کلو واٹ STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} من STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} من STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} لیٹر STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} فٹ STR_UNITS_HEIGHT_SI :{COMMA} میٹر # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK} چھان کے الفاظ درج کیجیئے STR_LIST_FILTER_TOOLTIP :{BLACK} فھرست کے چھان کے لیے کوئی حرف دیجیئے STR_TOOLTIP_SORT_ORDER :{BLACK} (ترتیب کا طریقہ منتخب کریں (کم ہوتا/بڑھتا STR_TOOLTIP_SORT_CRITERIA :{BLACK}ترتیب کا طریقہ منتخب کریں STR_TOOLTIP_FILTER_CRITERIA :{BLACK} چھاننے کے اصول چنیئے STR_BUTTON_SORT_BY :{BLACK}سے ترتیب دو STR_BUTTON_LOCATION :{BLACK}جگہ STR_BUTTON_RENAME :{BLACK} تبادلھء نام STR_TOOLTIP_CLOSE_WINDOW :{BLACK}کھڑکی بند کرو STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}کھڑکی کا نام - کھڑکی کو ہلانے کیلیے اسے پکڑ کر ہلاو STR_TOOLTIP_SHADE :{BLACK} ونڈو چھبایئے - صرف ٹائٹل نظر آئے گا STR_TOOLTIP_DEBUG :{BLACK} NewGRF کی debug معلومات دکھایئے STR_TOOLTIP_STICKY :{BLACK} نشان لگایئے تاکھ یھ ونڈو "Close All Windows" کے بٹن سے بند ناھو STR_TOOLTIP_RESIZE :{BLACK} کلک اورگھسیٹ کر ونڈو کے پیمانے تبدیل کیجئے STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK} ونڈو کا بڑا یا چھوٹا پیمانا چنیئے STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK} فھرستی پٹی - فھرست کو اوپر نیچے کرنے کے لیے STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK} فھرستی پٹی - فھرست کو دایئں بایئں کرنے کے لیے STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}زمین کے ایک مربے پر عمارتیں وغیرہ گرائیں. Ctrl ترچھے انداز میں علاقے کا انتخاب کرتا ہے. عمارتیں یا انکی لاگت تخمینہ دیکھنے کے لئے Shift کا استعمال کیجیے. # Query window STR_BUTTON_DEFAULT :{BLACK}طے شدہ STR_BUTTON_CANCEL :{BLACK} ترک کیجیئے STR_BUTTON_OK :{BLACK} او کے # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :ً1234567890-=\ق و ع ر ت ے ء ی ہ پ ] [ ا س د ف گ ح ج ک ل ؛ ' ز ش چ ط ب ن م ، ۔ / STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK} لمبائی: {NUM} STR_MEASURE_AREA :{BLACK} پھیلاؤ: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK} لمبائی: {NUM} {}تفریقِ اونچائی: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK} پھیلاؤ: {NUM} x {NUM} {}تفریقِ اونچائی: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}آبادی STR_SORT_BY_CAPTION_NAME :{BLACK}نام STR_SORT_BY_CAPTION_DATE :{BLACK}تاریخ # These are used in dropdowns STR_SORT_BY_NAME :نام STR_SORT_BY_PRODUCTION :پیداوار STR_SORT_BY_TYPE :طرز STR_SORT_BY_TRANSPORTED :منتقل شدہ STR_SORT_BY_NUMBER :تعداد STR_SORT_BY_PROFIT_LAST_YEAR :پچھلے سال کا منافع STR_SORT_BY_PROFIT_THIS_YEAR :اس سال کا منافع STR_SORT_BY_AGE :عمر STR_SORT_BY_RELIABILITY :اعتماد STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :طرزِ سامان کے مطابق کل گنجائش STR_SORT_BY_MAX_SPEED :حدغایت رفتار STR_SORT_BY_MODEL :نمونھ STR_SORT_BY_VALUE :قیمت STR_SORT_BY_LENGTH :لمبائی STR_SORT_BY_LIFE_TIME :بقیھ زندگی STR_SORT_BY_TIMETABLE_DELAY :ٹایم ٹیبل تاخیر STR_SORT_BY_FACILITY :طرزِ اسٹیشن STR_SORT_BY_WAITING :قیمتِ منتظر سامان STR_SORT_BY_RATING_MAX :سامانی سرِ فھرست درجھ بندی STR_SORT_BY_RATING_MIN :سامانی پیشِ فھرست درجھ بندی STR_SORT_BY_ENGINE_ID :انجن کی شناخت (کلاسیکی چھانٹ) STR_SORT_BY_COST :قیمت STR_SORT_BY_POWER :طاقت STR_SORT_BY_TRACTIVE_EFFORT :کھینچنے کی کوشِش STR_SORT_BY_INTRO_DATE :تاریخِ تعارف STR_SORT_BY_RUNNING_COST :قیمتِ رواں STR_SORT_BY_POWER_VS_RUNNING_COST :قیمتِ رواں/ طاقت STR_SORT_BY_CARGO_CAPACITY :سامان کی گنجایش STR_SORT_BY_RANGE :پہنچ # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK} کھیل میں وقفھ لیجیئے STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK} کھیل کو تیزی سے بڑھایئں STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK} اختیارات STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK} کھیل محفوظ کیجئے، کھیل دستبردار کیجیئے، منقطع کیجئے STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK} نقشھ، اضافی منظر یا اشاروں کی فھرست STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK} قصبوں کی کتاب دیکھیئے STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK} امداد دیکھیئے STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK} کمپنی کے اسٹیشنوں کی فھرست دیکھیَے STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}کمپنی کی مالیاتی معلومات دکھاو STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}کمپنی کی عام معلومات دکھاو STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK} مخطط دیکھیئے STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK} کمہنی کی مسافتی فھرست دیکھیئے STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK} نئی صنعت کی تعمیر شروع کیجیئے یا فھرستِ صنعت دیکھیئے STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}کمپنی کی ریل گاڑیوں کی فہرست دکھاو۔ Ctrl+Click سے گروپ یا ٹرینوں کی فہرست کھلتی یا بند ہوتی ہے STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}کمپنی کی سڑک کی سواریوں کی فہرست دکھاو۔ Ctrl+Click سے گروپ یا گاڑیوں کی فہرست کھلتی یا بند ہوتی ہے STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}کمپنی کی کشتیوں کی فہرست دکھاو۔ Ctrl+Click سے گروپ یا کشتیوں کی فہرست کھلتی یا بند ہوتی ہے STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}کمپنی کے ہوای جہازوں کی فہرست دکھاو۔ Ctrl+Click سے گروپ یا جہازوں کی فہرست کھلتی یا بند ہوتی ہے STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}بڑا کر کے دکھاو STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}چھوٹا کر کے دکھاو STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ریل کی پٹری بچھاو STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}سڑکیں بناو STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}بندرگاہیں بناو STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}ہوای اڈے بناو STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK} منظر کشی ٹول بآر کھولیئے اور زمین اوپر نیچے، درخت لگایئے، وغیرھ STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK} آواز/موسیقی ونڈو دکھایئے STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK} آخری پیغام/ خبر دکھایئے، پیغام کے اختیارات کھولیئے STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}زمینی رقبہ کی معلومات، کانسول،AI debug ،اسکرین شاٹس، Open TTD کے بارے میں STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK} ٹول بآر منتقل کیجیئے # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK} منظر محفوظ کیجئے، منظر کھولیں، منظر دست بردار کیجیئے، منظر چھوڑیئے STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW} منظر نامھ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}شروع کرنے کی تاریخ کو ایک سال پیچھے کرو STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}شروع کرنے کی تاریخ کو ایک سال آگے کرو STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK} کلک کر کے ابتدائی سال درج کیجیئے STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK} نقشھ، کتبِ قصبات STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK} منظر تخلیق STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK} قصبھ تخلیق STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK} صنعت تخلیق STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK} سڑک کی تعمیر STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK} درخت لگایئے۔ Shift تعپیر/اندازاً خرچے میں تدویم کرتا ھے STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK} اشارھ لگایئے STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK} چیز لگایئے۔ Shift تعپیر/اندازاً خرچے میں تدویم کرتا ھے ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :منظر بچایئے STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :منظر کھولیئے STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :اونچائی کا نقشہ بچایئے STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :اونچائی کا نقشہ دکھائو STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :مدیر بند کیجیئے STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :باہر نکلو ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :کھیل کے اختیارات STR_SETTINGS_MENU_CONFIG_SETTINGS :اعلی اختیارات STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI / کھیل کے اختیارات STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF اختیارات STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Transparency کے اختیارات STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :آبادیوں کے نام دکھائے جائیں STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :اڈوں کے نام دکھائے جائیں STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :راھ شناس نقتوں کے نام دکھائے جایئں STR_SETTINGS_MENU_SIGNS_DISPLAYED :اشارے دکھائے جائیں STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :مقابلے بازوں کے نشان اور نام دکھا ئیے STR_SETTINGS_MENU_FULL_ANIMATION :مکمل animation STR_SETTINGS_MENU_FULL_DETAIL :مکمل تفصیل STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :شفاف عمارات STR_SETTINGS_MENU_TRANSPARENT_SIGNS :شفاف اشارے ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :کھیل محفوظ کرو STR_FILE_MENU_LOAD_GAME :کھیل دوبارہ چڑھاو STR_FILE_MENU_QUIT_GAME :کھیل چھوڑ دو STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :باہر نکلو ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :دنیا کا نقشھ STR_MAP_MENU_EXTRA_VIEW_PORT :اضافی منظر STR_MAP_MENU_SIGN_LIST :اشاروں کی فھرست ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :کتبِ قصبھ جات STR_TOWN_MENU_FOUND_TOWN :قصبھ قائم کیجیئے ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :امداد STR_SUBSIDIES_MENU_GOAL :موجودہ اہداف ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :عملی منافع مخطط STR_GRAPH_MENU_INCOME_GRAPH :آمدنی مخطط STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :پھنچائے گئے سامان کا مخطط STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :عملی تاریخ مخطط STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :کمپنی کی قیمت مخطط STR_GRAPH_MENU_CARGO_PAYMENT_RATES :سامان کی ادایگی کا تناسب ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :کمپنیوں کے گروپ کی فہرست STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :تفصیلی عملی درجہ بندی ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :کتبِ صنعت STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :نئ سنعت تعمیر کیجیئے ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :راھ آھن پٹری کی تعمیر STR_RAIL_MENU_ELRAIL_CONSTRUCTION :برقی راھ آھن پٹری کی تعمیر STR_RAIL_MENU_MONORAIL_CONSTRUCTION :وحید راھ کی تعمیر STR_RAIL_MENU_MAGLEV_CONSTRUCTION :علناظیس کی تعمیر ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :سڑک کی تعمیر STR_ROAD_MENU_TRAM_CONSTRUCTION :ٹرام وے کی تعمیر ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :نھر کی تعمیر ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :ھواگاھ کی تعمیر ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :منظر کشی STR_LANDSCAPING_MENU_PLANT_TREES :درخت لگایئے STR_LANDSCAPING_MENU_PLACE_SIGN :اشارھ لگایے ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :آواز و موسیقی ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :پچھلا پیعام/ خبر STR_NEWS_MENU_MESSAGE_HISTORY_MENU :تاریخِ پیغامات ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :زمینی رقبہ کی معلومات STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :حائطھ تدویم STR_ABOUT_MENU_AI_DEBUG :AI debug STR_ABOUT_MENU_SCREENSHOT :اسکرین کی تصویر STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :مکمل قریب سے اسکرین کی تصویر STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :پہلے سے طے شدہ قربت سے اسکرین کی تصویر STR_ABOUT_MENU_GIANT_SCREENSHOT :پورے نقشے کی اسکرین کی تصویر STR_ABOUT_MENU_ABOUT_OPENTTD :Open TTD کے بارے میں STR_ABOUT_MENU_SPRITE_ALIGNER :sprite صف بندھ STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :احاطہ کرنے والے ڈبوں کی تدویم کیجئیے STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :گندے بلاکوں کا رنگ تبدیل کرو ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :پھل STR_ORDINAL_NUMBER_2ND :دوسر STR_ORDINAL_NUMBER_3RD :تیسر STR_ORDINAL_NUMBER_4TH :چوتھ STR_ORDINAL_NUMBER_5TH :پانچھو STR_ORDINAL_NUMBER_6TH :چھٹ STR_ORDINAL_NUMBER_7TH :ساتو STR_ORDINAL_NUMBER_8TH :آٹھو STR_ORDINAL_NUMBER_9TH :نو STR_ORDINAL_NUMBER_10TH :دسو STR_ORDINAL_NUMBER_11TH :گیارھو STR_ORDINAL_NUMBER_12TH :بارھو STR_ORDINAL_NUMBER_13TH :تیرھو STR_ORDINAL_NUMBER_14TH :چودھو STR_ORDINAL_NUMBER_15TH :پندھرو STR_ORDINAL_NUMBER_16TH :سولھو STR_ORDINAL_NUMBER_17TH :سترھو STR_ORDINAL_NUMBER_18TH :اٹھارو STR_ORDINAL_NUMBER_19TH :انیسو STR_ORDINAL_NUMBER_20TH :بیسو STR_ORDINAL_NUMBER_21ST :اکیسو STR_ORDINAL_NUMBER_22ND :بایئسو STR_ORDINAL_NUMBER_23RD :تیئسو STR_ORDINAL_NUMBER_24TH :چوبیسو STR_ORDINAL_NUMBER_25TH :پچیسو STR_ORDINAL_NUMBER_26TH :چھبیسو STR_ORDINAL_NUMBER_27TH :ستایئسو STR_ORDINAL_NUMBER_28TH :اٹھایئسو STR_ORDINAL_NUMBER_29TH :انتیسو STR_ORDINAL_NUMBER_30TH :تیسو STR_ORDINAL_NUMBER_31ST :اکتیسو ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :جنوری STR_MONTH_ABBREV_FEB :فروری STR_MONTH_ABBREV_MAR :مارچ STR_MONTH_ABBREV_APR :اپریل STR_MONTH_ABBREV_MAY :مئی STR_MONTH_ABBREV_JUN :جون STR_MONTH_ABBREV_JUL :جولائی STR_MONTH_ABBREV_AUG :اگست STR_MONTH_ABBREV_SEP :ستمبر STR_MONTH_ABBREV_OCT :اکتوبر STR_MONTH_ABBREV_NOV :نومبر STR_MONTH_ABBREV_DEC :دسمبر STR_MONTH_JAN :جنوری STR_MONTH_FEB :فروری STR_MONTH_MAR :مارچ STR_MONTH_APR :اپریل STR_MONTH_MAY :مئی STR_MONTH_JUN :جون STR_MONTH_JUL :جولائی STR_MONTH_AUG :اگست STR_MONTH_SEP :ستمبر STR_MONTH_OCT :اکتوبر STR_MONTH_NOV :نومبر STR_MONTH_DEC :دسمبر ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK} کلید STR_GRAPH_KEY_TOOLTIP :{BLACK}مخطط کی کلیدیں دکھائیں STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE} عملی منافع مخطط STR_GRAPH_INCOME_CAPTION :{WHITE} آمدنی مخطط STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE} شمار سامان پھنچایا گیا STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE} کمپنی کی کارکردگی کی درج بندی (حدِ درجھ = 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}کمپنی کی مالیت STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE} سامان کی ادایگی کا تناسب STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK} حرکت میں ایام STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK} سامان کی دس اکائیات (یآ 10،000 لیٹر)، 20 چکور تک لے جانے کی ادائیگی STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT} {BLACK} سب کو قابل کیجیئے STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT} {BLACK} سب کو نا کارہ کیجیئے STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK} سامان کی ادائیگی کے مخطط پر تمام سامان دیکھئہے STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK} سامان کی ادائیگی کے مخطط پر کوئ بھی سامان نا دیکھئہے STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK} ظرزِ سامان مخطط تدویم کیجئیے STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK} کارکردگی کی تفصیلی درجہ بندی دکھائیے # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}کمپنی کے مخطط کی کلید STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK} مخطط پر کمپنی کی تفصیلات کو تدویم کیجئیے # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}کمپنیوں کے گروپ کی فہرست STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :مہندس STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :ٹریفک ناظم STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :مواصلاتی رابط STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :نگرانِ راہ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :ناظم STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :صدر انتظامی STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :صدر STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :صدر STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :ٹئایکون # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE} تفصیلی عملی درجہ بندی STR_PERFORMANCE_DETAIL_KEY :{BLACK} تفصیل STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}کمپنی کے بارے مایں تفصیلات دیکھے ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK} ناوقلات: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK} اسٹیشن: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK} کم سے کم منافع: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK} کم سے کم آمدنی: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK} حدِ غایت آمدنی: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK} پھنچا دی گئی: STR_PERFORMANCE_DETAIL_CARGO :{BLACK} سامان: STR_PERFORMANCE_DETAIL_MONEY :{BLACK} رقم: STR_PERFORMANCE_DETAIL_LOAN :{BLACK} قرضہ: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK} مکمل: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK} پچھلے سال نفعدار ناقل کی تعداد؛ جس میں گاڑیاں، قطار، بحری جہاز، ہوائی جہاز وغعرہ شامل ہیں STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK} تعداد برائے حالیہ مرمت شدہ مستقر حصے۔ مستقر کا ہر حصہ گنا جاتا ہے۔ مثلا پٹری مستقر، بس اسٹاپ، ہوائی اڈہ وغیرہ، خواہ وہ ایک ساتھ جڑے بھی ہوں۔ STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}سب سے کم آمدنی والی گاڑی کا نفع (صرف دو سال سے پرانی گاڑیاں مدنظر رکھی جائیں گی) STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}پچھلے چار ربعات میں پہنچاے گے سامان کی تعداد STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}پچھلے ربع میں پہنچاے گے تمام قسم کے سامان کی تعداد STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}کمپنی کے بینک میں پڑے ہوے پیسے STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}کمپنی کی جانب سے لیا گیا ادھار STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}کُل نمبروں میں سے حاصل کردہ نمبر # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}جاز جیوک باکس STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}تمام STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}پرانا سٹائل STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}نیا سٹائل STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}ایزی اسٹریٹ STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}اپنی مرضی کے مطابق 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}اپنی مرضی کے مطابق 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}موسیقی کی آواز STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}اثرات کی آواز STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}کم STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}زیادہ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}گانا STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}نام STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}ہلائیں STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}پروگرام STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}واپس پچھلے گانے پر STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}اگلے گانے پر STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}موسیقی چلانا بند کریں STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}موسیقی چلانا شروع کریں STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}موسیقی اور صوتی اثرات کی آواز منتخب کرنے کےلئے نشان کو کھینچھیں STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}تمام گانوں والا پروگرام منتخب کریں STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}پرانی طرز کی موسیقی والا پروگرام منتخب کریں STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}نۓ طرز کی موسیقی والا پروگرام منتخب کریں STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}ایزی اسٹریٹ طرز کی موسیقی والا پروگرام منتخب کریں STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}'اپنی مرضی کے مطابق '1 والا پروگرام منتخب کریں STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'اپنی مرضی کے مطابق '2 والا پروگرام منتخب کریں STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}پروگرام ہلانے کی تدویم کیجئیے STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}گانا چننے کا اختیار دینے والی ونڈو دکھائیں STR_ERROR_NO_SONGS :{WHITE}کوئی گانا دستیاب نہیں ہے # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}موسیقی کے پروگرام کا انتخاب کریں STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}گانوں کی فہرست STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}پروگرام - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}صاف STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}موجودہ پروگرام صاف کریں (صرف اپنی مرضی کے مطابق 1 یا 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}موجودہ پروگرام میں شامل کرنے کے لئے گانے پر کلک کریں (صرف اپنی مرضی کے مطابق 1 یا 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}موجودہ پروگرام میں سے نکالنے کے لئے گانے پر کلک کریں (صرف اپنی مرضی کے مطابق 1 یا 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}سر فہرست کمپنیاں جو {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}کمپنیوں کی فہرست میں {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :کاروباری STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :سرمایہ دار STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :صنعتکار STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :سرمایہ دار STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :امیر و اثر پزیر STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :مُغل STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :صدی کا ٹائیکون STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} '{STRING}' کا درجہ حاصل کرتا ہے STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} جو {COMPANY} سے تعلق رکھتا ہے۔ '{STRING}' کا درجہ حاصل کرتا ہے # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}نقشہ - {STRING} STR_SMALLMAP_TYPE_CONTOURS :شکل STR_SMALLMAP_TYPE_VEHICLES :سواریاں STR_SMALLMAP_TYPE_INDUSTRIES :صنعتیں STR_SMALLMAP_TYPE_ROUTES :راستے STR_SMALLMAP_TYPE_VEGETATION :سبزہ STR_SMALLMAP_TYPE_OWNERS :مالکین STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}نقشے پر زمین کی شکل دکھائیں STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}گاڑیاں نقشے پر دکھاو STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}صنعتیں نقشے پر دکھاو STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK} مواصلاتی راستے نقشے پر دکھاو STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}پودے نقشے پر دکھاو STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}زمین کے مالکان نقشے پر دکھاو STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}سڑکیں STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}ریل کے راستے STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}اڈے/ہوایی اڈے/بندرگاہیں STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}عمارتیں/صنعتیں STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}سواریاں STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}ریل گاڑیاں STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}سڑک کی گاڑیاں STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}کشتیاں STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}ہوایی جہاز STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}مواصلاتی راستے STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}جنگل STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}ریلوے اسٹیشن STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}لاری بھرنے کی جگہ STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}لاری اڈہ STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}ہوائی اڈہ/ہیلی اڈہ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}بندر گاہ STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}پتھریلی زمین STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}سبزے والی زمین STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}بنجر زمین STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}کھیت STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}درخت STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}پتھر STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}پانی STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}کوئی مالک نہیں STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}شہر STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}صنعتیں STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}صحرا STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}برف STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}نقشے پر شہروں کے ناموں کی تدویم کیجئیے STR_SMALLMAP_CENTER :{BLACK}موجودہ جگہ پر چھوٹا نقشہ درمیان سے دیکھیں STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}سب کچھ غیر فعال کریں STR_SMALLMAP_ENABLE_ALL :{BLACK}سب کچھ فعال کریں STR_SMALLMAP_SHOW_HEIGHT :{BLACK}بلندی دکھائیں STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}نقشے پر کوئی صنعت نہ دکھائیں STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}نقشے پر ساری صنعتیں دکھائیں STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}بلند نقشے کو دکھانے کی تدویم کیجئیے STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}نقشے پر کسی کمپنی کی کوئی جائیداد نہ دکھائیں STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}نقشے پر ہر کمپنی کی جائیداد دکھائیں # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}آخری پیغام یا خبر دکھائو STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}٭ ٭ توقف ٭ ٭ STR_STATUSBAR_AUTOSAVE :{RED}خود مختار بچاو STR_STATUSBAR_SAVING_GAME :{RED}٭ ٭ کھیل کو بچائیں ٭ ٭ # News message history STR_MESSAGE_HISTORY :{WHITE}پرانے پیغام STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}حالیہ پیغاموں کی فہرست STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}پیغام STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلی ریل گاڑی {STATION} پر پہنچی STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلی لاری {STATION} پر پہنچی STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلا ٹرک {STATION} پر پہنچا STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلی مسافر ریل گاڑی {STATION} پر پہنچی STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلی مال گاڑی {STATION} پر پہنچی STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلی کشتی {STATION} پر پہنچی STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}شہریوں کا جشن ۔ ۔ ۔{}پہلا ہوائی جہاز {STATION} پر پہنچا STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}ریل گاڑی تباہ! !{}{COMMA} حادثے کی وجہ سے جل کر ہلاک STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}گاڑی تباہ! !{}ریل گاڑی کی ٹکر کی وجہ سےڈرائیور جل کر ہلاک STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}گاڑی تباہ! !{}{COMMA} ریل گاڑی کی ٹکر کی وجہ سے جل کر ہلاک STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}ہوائی جہاز تباہ! !{}{COMMA} جل کر ہلاک۔ حادثہ {STATION} پر پیش آیا STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}ہوائی جہاز تباہ! !{}{COMMA} جل کر ہلاک۔ حادثے کی وجہ ایندھن ختم ھونا بتائی جاتی ہے STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}ہوائی غبارہ تباہ!{}حادثہ {STATION} کے مقام پر پیش آیا STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}آُڑن طشتری سے ٹکرا کر گاڑی تباہ!!!!!!!! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}تیل صاف کرنے کے کارخانے میں دھماکہ! {}کارخانہ {TOWN} کے قریب واقع تھا STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}پراسرار حملے میں کارخانہ تباہ۔ لوگ پریشان{}کارخانہ {TOWN} کے قریب واقع تھا STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}اُڑن طشتری {TOWN} کے قریب اُتر گئی STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}کوئلے کی کان زمین میں دھنس گئی{}{TOWN} کے قریب تباہی کے نشان۔ STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}تباہ کُن و خوفناک سیلاب!{}کم اَز کم {COMMA} لاپتہ۔ ہلاکت کا خدشہ STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}ٹرانسپورٹ کمپنی خطرے میں! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING}کو بیچ دیا جائے گا یا دیوالیہ قرار داے دیا جائے گا تاوقتیہ کہ کارکردگی بہتر ھو STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}ٹرانسپورٹ کمپنی کا الحاق! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} کو {STRING} نے {CURRENCY_LONG} میں خرید لیا! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}دیوالیہ!!!! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} بند۔ تمام اثاثے فروخت۔ کارکردگی بہتر نہ ہو سکی تھی STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}نئی ٹرانسپورٹ کمپنی کا آغاز! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} نے {TOWN} کے نزدیک تعمیر شروع کر دی! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} کا کنٹرول {STRING} نے سنبھال لیا! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(مینیجر) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} نے نئے شہر {TOWN} کی تعمیر کے لئے امداد کی STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK} نئی {STRING} {TOWN} کے نزدیک زیر تعمیر! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}نیا {STRING} {TOWN} کے قریب لگا دیا گیا۔ STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} کا فوری بندش کا اعلان! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK} فراہمی میں مسائل کی وجہ سے {STRING} کا فوری بندش کا اعلان! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} کے قُرب و جوار میں درختوں کی کمی کی وجہ سے فوری بندش کا اعلان! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}یورپی مالیاتی یونین!{}{}نئی کرنسی کے طور پر آپ کے ملک میں 'یورو' متعارف STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}عالمی کساد بازاری!{}{}اقتصادی ماہرین میں شدید خوف و حراس! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK} کساد بازاری کا خاتمہ!{}{}تجارت میں تیزی کی وجہ سے صنعتوں کو معاشی مظبوطی کی اُمید! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} کی پیداوار میں اضافہ! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY} میں کوئلے کے نئے ذخائر دریافت!{}پیداوار دُگنی ہونے کی اُمید! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY} میں تیل کے نئے ذخائر دریافت!{}پیداوار دُگنی ہونے کی اُمید! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} میں موئشی پالنے کے نئے طریقے!{}پیداوار دُگنی ہونے کی اُمید! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} پیداوار میں {INDUSTRY} {COMMA}% کا اضافہ! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} پیداوار میں 50٪ کی کمی! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} کیروں کے حملے کی وجہ سے تباہی! پیداوار میں 50٪ کمی STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} پیداوار میں {INDUSTRY} {COMMA}% کی کمی! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} اڈے میں انتظار کر رہی ہے STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} اڈے میں انتظار کر رہا یے STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} اڈے میں انتظار کر رہا یے STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ہوائی یینگر میں انتظار کر رہا یے # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} کے پاس اوقات کے جدول کے مطابق احکامات بہت کم ہیں STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} کے پاس غلط (بے کار) حکم ہے STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} کے پاس ایسا ہی حکم پہلے سے ہے STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} کے پاس احکامات میں ایک ختم شدہ اسٹیشن ہے # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} پرانا ہو رہا ہے STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} بہت پرانا ہو رہا ہے STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} بہت پرانا ہو رہا ہے اور اُسے فوراً بدلنا ضروری ہے STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} کو آگے بڑھنے کے لئے راستہ نہیں مل رہا STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} گم گی ہے STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} نے پچھلے سال میں {CURRENCY_LONG} نفع حاصل کیا STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} اگلی منزل پر پہنچ سے باہر ہونے کی وجہ سے نہیں جا سکتا STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} رُک گیا ہے کیونکے اُسے دیا گیا تزین و آرائش کا حکم پورا نہں ہو سکا STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}{VEHICLE} کی خودکار تبدیلی ناکام ہو کئی {}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}نئی {STRING} اب دستیاب ہے! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}نئی {STRING} اب دستیاب ہے! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} مزید {STRING} قبول نہیں کرتا STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} مزید {STRING} یا {STRING} قبول نہیں کرتا STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} اب قبول کرتا ہے {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} اب {STRING} اور {STRING} قبول کرتا ہے STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}امداد کی پیشکش کی معیاد ختم: {}{}{STRING} {STRING} سے {STRING} تک اب کوئی امداد نہیں ملے گی STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}امداد ختم:{}{}{STRING} {STRING} سے {STRING} تک کئی گئی خدمت کی اب کوئی امداد نہیں ملے گی STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}خدمات پر امداد کی پیشکش:{}{}پہلی خدمت {STRING} جو {STRING} سے {STRING} تک ہو، پر ایک سال تک امدام ملے گی STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}خدمات پر{STRING} کو امداد دے دی گئی!{}{}{STRING} {STRING} سے {STRING} تک دی جانے والی خدمات پر اگلے سال 50٪ زیادہ ملیں گے STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}خدمات پر{STRING} کو امداد دے دی گئی!{}{}{STRING} {STRING} سے {STRING} تک دی جانے والی خدمات پر اگلے سال دُگنے پیسے ملیں گے STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}خدمات پر{STRING} کو امداد دے دی گئی!{}{}{STRING} {STRING} سے {STRING} تک دی جانے والی خدمات پر اگلے سال تین گُنا پیسے ملیں گے STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}خدمات پر{STRING} کو امداد دے دی گئی!{}{}{STRING} {STRING} سے {STRING} تک دی جانے والی خدمات پر اگلے سال چار گُنا پیسے ملیں گے STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}{TOWN} میں ٹریفک کا بُرا حال!{}{}سڑکیں دوبارہ بنوانے کے پیسے {STRING} نے دئیے۔ اس کی وجہ سے اگلے 6 ماہ مشکل رہے گی # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}دہکھنے والی کھڑکی {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}دہکھنے والی کھڑکی کی نقل STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}بنیادی منظر میں نظر آنے والی جگہ کو دیکھنے والی کھڑکی میں نقل کریں STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}دہکھنے والی کھڑکی سے نقل کریں STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}دیکھنے والی کھڑکی میں نظر آنے والی جگہ کو بنیادی منظر میں نقل کریں # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}کھیل کے اختیارات STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}کرنسی کی اکائیاں STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}کرنسی کی اکائی اختیار کریں ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :برطانوی پاونڈ (GBP) STR_GAME_OPTIONS_CURRENCY_USD :امریکی ڈالر (USD) STR_GAME_OPTIONS_CURRENCY_EUR :یورو (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :جاپانی ین (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :آسٹرین شِلنگ (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :بیلجیم کا فرانک (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :سوئس فرانک (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :چیک کرونا (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :ڈچ مارک (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :ڈینش کرونے (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :اسپینی پیسیتا (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :فِنش مارکہ (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :فرنچ فرانک (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :یونانی دراچما (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :ہینگرین فورِنٹ (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :آئس لینڈ کا کرونا (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :اِٹالین لیرا (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :ڈچ گِلڈر (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :ناروئیجین کرونے (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :پولش زلوٹے (PLN) STR_GAME_OPTIONS_CURRENCY_RON :رومانین لیو (RON) STR_GAME_OPTIONS_CURRENCY_RUR :رشین روبل (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :سلوئینین تولار (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :سوئیڈش کرونا (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :ٹرکش لیرا (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :سلواک کرونا (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :برازیلین رئیل (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :اِسٹونین کرونی (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :لتھوینیا کے لٹاس (لٹل) STR_GAME_OPTIONS_CURRENCY_KRW :جنوبی کوریا کے ون(KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :جنوبی افریقہ کے رنڈ (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :اپنی مرضی کی ۔۔۔ ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}پیمائشی اکائیاں STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}پیمائشی اکائیاں اختیار کریں ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :اِمپیریل STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :میٹرک STR_GAME_OPTIONS_MEASURING_UNITS_SI :اکائیوں کا بین الاقوامی نظام ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}گاڑیاں STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}اختیار کریں کہ گاڑی سڑک کی کس طرف چلے STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :بائیں طرف چلے STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :دائیں طرف چلے STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}شہروں کے نام STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}شہروں کے نام کی طرز اختیار کریں ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :انگریزی (اصلی) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :فرانسیسی STR_GAME_OPTIONS_TOWN_NAME_GERMAN :جرمن STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :انگریزی (اضافی) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :لاطینی امریکی STR_GAME_OPTIONS_TOWN_NAME_SILLY :سِلی STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :سوئیڈش STR_GAME_OPTIONS_TOWN_NAME_DUTCH :ڈچ STR_GAME_OPTIONS_TOWN_NAME_FINNISH :فِنش STR_GAME_OPTIONS_TOWN_NAME_POLISH :پولش STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :سلواک STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :ناروئیجین STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :ہینگرین STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :آسٹرین STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :رومانین STR_GAME_OPTIONS_TOWN_NAME_CZECH :چیک STR_GAME_OPTIONS_TOWN_NAME_SWISS :سوئس STR_GAME_OPTIONS_TOWN_NAME_DANISH :ڈینش STR_GAME_OPTIONS_TOWN_NAME_TURKISH :ٹرکش STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :اِٹالین STR_GAME_OPTIONS_TOWN_NAME_CATALAN :کاٹالن ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}خود مختار بچاو STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}خودمختار کھیل بچانے کے درمیان وقفہ اختیار کریں STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :بند STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :ہر مہینے STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :ہر سہ ماہی STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :ہر شش ماہی STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :ہر سال STR_GAME_OPTIONS_LANGUAGE :{BLACK}زبان STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}استعمال کرنے کےلئے زبان اختیار کئیجیے STR_GAME_OPTIONS_FULLSCREEN :{BLACK}مُکمل سکرین STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}مُکمل اسکرین پر کھیلنے کے لئے اِس ڈبے کو نشان لگائیں STR_GAME_OPTIONS_RESOLUTION :{BLACK}اسکرین کی resolution STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اسکرین کی resolution اختیار کریں STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}اسکرین کی تصویر کا فارمیٹ STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}اسکرین کی تصویر کے استعال کے لئے فارمیٹ اختیار کریں STR_GAME_OPTIONS_BASE_GRF :{BLACK}بُنیادی گرافک سیٹ STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ اختیار کریں STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ کے بارے میں اضافی معلومات STR_GAME_OPTIONS_BASE_SFX :{BLACK}بُنیادی صوتی سیٹ STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}بُنیادی صوتی سیٹ اختیار کریں STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی صوتی سیٹ کے بارے میں اضافی معلومات STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}بُنیادی موسیقی سیٹ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}بُنیادی موسیقی سیٹ اختیار کریں STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی موسیقی سیٹ کے بارے میں اضافی معلومات STR_ERROR_FULLSCREEN_FAILED :{WHITE}مُکمل اسکرین موڈ ناکام ہوگیا # Custom currency window STR_CURRENCY_WINDOW :{WHITE}اپنی مرضی کی کرنسی STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}زر مبادلہ کی شرح: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ایک پاونڈ (£) کے لئے اپنی کرنسی کی تعداد کم کریں STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}ایک پاونڈ (£) کے لئے اپنی کرنسی کی تعداد میں اضافہ کریں STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}ایک پاونڈ (£) کے لئے اپنی کرنسی کا exchange rate اختیار کریں STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}اپنی کرنسی کا separator رکھیں STR_CURRENCY_PREFIX :{LTBLUE}سابقہ: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}اپنی کرنسی کا سابقہ رکھیں STR_CURRENCY_SUFFIX :{LTBLUE}لاحقہ: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}اپنی کرنسی کا لاحقہ رکھیں STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}یورو میں بدلیں: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}یورو میں بدلیں: {ORANGE} کبھی نہیں STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}یورو میں بدلنے کا سال رکھیں STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}یورو میں پہلے بدلئے STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}یورو میں بعد میں بدلئے STR_CURRENCY_PREVIEW :{LTBLUE}جائزہ: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}اپنی کرنسی میں 10000 پاونڈ (£) STR_CURRENCY_CHANGE_PARAMETER :{BLACK}اپنی مرضی کے کرنسی پیرامیٹر کو تبدیل کریں STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}مدمقابلوں کی زیادہ سے زیادہ تعداد: {ORANGE}{COMMA} STR_NONE :کوئی نہیں STR_FUNDING_ONLY :صرف فنڈنگ STR_MINIMAL :کم از کم STR_NUM_VERY_LOW :بہت نیچا STR_NUM_LOW :نیچا STR_NUM_NORMAL :نارمل STR_NUM_HIGH :اونچا STR_NUM_CUSTOM :اپنی مرضی کا STR_NUM_CUSTOM_NUMBER :اپنی مرضی کا ({NUM}) STR_VARIETY_NONE :کوئی نہیں STR_VARIETY_VERY_LOW :بہت نیچا STR_VARIETY_LOW :نیچا STR_VARIETY_MEDIUM :درمیانہ STR_VARIETY_HIGH :اونچا STR_VARIETY_VERY_HIGH :بہت اونچا STR_AI_SPEED_VERY_SLOW :بہت آہستہ STR_AI_SPEED_SLOW :آہستہ STR_AI_SPEED_MEDIUM :درمیانہ STR_AI_SPEED_FAST :تیز STR_AI_SPEED_VERY_FAST :بہت تیز STR_SEA_LEVEL_VERY_LOW :بہت نیچا STR_SEA_LEVEL_LOW :نیچا STR_SEA_LEVEL_MEDIUM :درمیانہ STR_SEA_LEVEL_HIGH :اونچا STR_SEA_LEVEL_CUSTOM :اپنی مرضی کا STR_SEA_LEVEL_CUSTOM_PERCENTAGE :اپنی مرضی کا ({NUM}%) STR_RIVERS_NONE :کوئی نہیں STR_RIVERS_FEW :چند ایک STR_RIVERS_MODERATE :درمیانے STR_RIVERS_LOT :بہت سے STR_DISASTER_NONE :کوئی نہیں STR_DISASTER_REDUCED :کم STR_DISASTER_NORMAL :نارمل STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :بہت سیدھا STR_TERRAIN_TYPE_FLAT :سیدھا STR_TERRAIN_TYPE_HILLY :ٹیلوں والا STR_TERRAIN_TYPE_MOUNTAINOUS :پہاڑی STR_CITY_APPROVAL_PERMISSIVE :اجازت دینے والا STR_CITY_APPROVAL_TOLERANT :برداشت کرنے والا STR_CITY_APPROVAL_HOSTILE :مخالفانہ # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}ایڈوانسڈ سیٹنگ STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(کوئی وضاحت موجود نہیں) STR_CONFIG_SETTING_OFF :بند STR_CONFIG_SETTING_ON :آن STR_CONFIG_SETTING_DISABLED :غیر فعال STR_CONFIG_SETTING_COMPANIES_OFF :آف STR_CONFIG_SETTING_COMPANIES_OWN :اپنی کمپنی STR_CONFIG_SETTING_COMPANIES_ALL :تمام کمپنیاں STR_CONFIG_SETTING_NONE :کوئی نہیں STR_CONFIG_SETTING_ORIGINAL :اصلی STR_CONFIG_SETTING_REALISTIC :حقیقت پسندانہ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :بائیں STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :درمیان STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :دائیں STR_CONFIG_SETTING_BUILDONSLOPES :ڈھلان اور ساحل پر تعمیر کی اجازت: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :تعمیرات کے نیچے منظر کشی کی اجازت: {STRING} STR_CONFIG_SETTING_CATCHMENT :کوریج کے علاقے کے حقیقت پسندانہ سائز کی اجازت: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :شہروں کی ملکیت زیادہ سڑکوں، پلوں اور سرنگوں کو توڑنے کی اجازت: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH :ریل گاڑیوں کی زیادہ سے زیادہ لمبائی: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :ریل گاڑیوں کی زیادہ سے زیادہ لمبائی طے کریں STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} ٹائل{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :گاڑی کے دھوئیں/سپارک کی تعداد: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :ریل گاڑی کو تیز کرنے والا ماڈل: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :گاڑی کو تیز کرنے کا ماڈل: {STRING} STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :ریل گاڑیوں اور بحری جہازوں کو 90° مڑنے سے روکیں: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :اسٹیشنوں کو جوڑنے کی اجازت: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :سامان لوڈ کرنے کا بہتر طریقہ استعمال کریں: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :گاڑیوں کو آہستہ آہستہ بھریں: {STRING} STR_CONFIG_SETTING_INFLATION :افراط زر: {STRING} STR_CONFIG_SETTING_SELECTGOODS :سامان صرف اُسی صورت میں کسی اسٹیشن تک پہنچایا جب وہ اُسے قبول کرتا ہو: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :پل کی زیادہ سے زیادہ لمبائی: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :پل بنانے کی زیادہ سے زیادہ لمبائی STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :سرنگ کی زیادہ سے زیادہ لمبائی: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :سرنگیں بنانے کی زیادہ سے زیادہ لمبائی STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :خود بنیادی صنعت تعمیر کرنے کا طریقہ: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :کوئی نہیں STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :دوسری صنعتوں کی طرح STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :توقعات STR_CONFIG_SETTING_INDUSTRY_PLATFORM :کارخانوں کے آس پاس ہموار علاقہ: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN :ایک شہر میں ایک جیسی ایک سے زیادہ صنعتیں لگانے کی اجازت: {STRING} STR_CONFIG_SETTING_SIGNALSIDE :ریل کے اشارے دکھائو: {STRING} STR_CONFIG_SETTING_SHOWFINANCES :ہر سال کے آخر پر کھاتے والی ونڈو دکھاو: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :نئے احکامات شروع سے 'نان اسٹاپ' ہوں: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :نئے احکامات شروع سے {STRING} کے پلیٹ فارم پر اسٹاپ ہوں STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :شروع میں STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :درمیان میں STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :آخر میں STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :گاڑیوں کی قطار: {STRING} STR_CONFIG_SETTING_AUTOSCROLL :ونڈو کو پین کرو جب ماؤس کنارے پر ہو: {STRING} STR_CONFIG_SETTING_BRIBE :مقامی اتھارٹی کی رشوت کی اجازت دیں: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :خصوصی نقل و حمل کے حقوق کو خریدنے کی اجازت: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :فنڈنگ عمارتوں کی اجازت: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :مقامی سڑکوں کی تعمیر نو فنڈنگ کی اجازت: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :دوسری کمپنیوں کو پیسے بھیجنے کی اجازت: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :مال گاڑیوں کو وزنی دکھانے کے لئے وزن کا ضارب: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :ہوائی جہازوں کے حادثوں کی تعداد: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :کوئی نہیں STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :کم STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :نارمل STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :شہر کی ملکیت سڑکوں پر ڈرائیو تھرو اڈے بنانے کی اجازت: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :مد مقابلوں کی ملکیت سڑکوں پر ڈرائیو تھرو اڈے بنانے کی اجازت: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :اسٹیشن کے ساتھ اسٹیشں بنانے کی اجازت: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :ایک سے زیادہ NewGRF انجن سیٹوں کو فعال کریں: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}جب گاڑیاں موجود ہوں تو یہ سیٹنگ بدلنا ممکن نہیں STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :انفراسٹرکچر کی بحالی: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :ہوائی اڈوں کی معیاد کبھی ختم نہ ہو: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :اگر گاڑی کھو جاے تو انتباہ کیجئیے: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :گاڑیوں کے احکامات کا جائزہ لیں: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :نہیں STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ہاں، لیکن رُکی ہوئی گاڑیاں نہیں STR_CONFIG_SETTING_ORDER_REVIEW_ON :تمام گاڑیوں کے STR_CONFIG_SETTING_WARN_INCOME_LESS :گاڑی کو نقصان کی صورت میں انتباہ کیجئیے: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :گاڑیوں کی معیاد کبھی ختم نہ ہو: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :گاڑی پرانی ہونے کی صورت میں خودکار طریقے سے بدل دیں: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :خودکار تبدیلی کے لئے ضروری کم سے کم رقم کو خودکار طریقے سے بدل دیں: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :شہر کی آبادی شہر کے نام کے ساتھ دکھائیں: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :مخطط میں لائینوں کی موٹائی: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :زمین بنانے والا: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :اصلی STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :تیل کے کارخانے صرف نقسے کی حدود کے قریب بنتے ہیں، جزیرہ والے نقشوں کیلئے یہ ساحل پر ہے STR_CONFIG_SETTING_SNOWLINE_HEIGHT :برف کی اونچائی: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :علاقے کی کٹائی (صرف TerraGenesis میں) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :بہت ہموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :ہموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :رف STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :بہت رف STR_CONFIG_SETTING_TREE_PLACER :درخت لگانے کا طریقہ: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :کوئی نہیں STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :اصلی STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :بہتر بنایا ہوا STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :اونچائی والے نقشے کو گھمانا: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :الٹی گھڑی وار STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :گھڑی وار STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :ایک سیدھے scenario والا نقشہ کتنا اونچا ہو گا: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :نقشے کے کناروں پر منظر کشی فعال کریں: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :اگر منع کر دیا، تو نقسے کی حدود ہمیشہ سمندر ہوں گی STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}جنوبی کنارے پر ایک یا ایک سے زیادہ ٹائلیں خالی نہیں ہیں STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}کسی کنارے پر ایک یا ایک سے زیادہ ٹائلیں پانی کی نہیں ہیں STR_CONFIG_SETTING_SERVICEATHELIPAD :ہیلی کاپٹروں کی ہیلی پیڈ پر خودکار مرمت کر دی جائے: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :منظرکشی والی ٹول بار کو ریل گاڑی/سڑک/پانی/ہوائی اڈے والی ٹول بار سے ملا دیں: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :چھوٹے نقشے میں زمین کا رنگ: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :سبز STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :گہرا سبز STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :بنفشی STR_CONFIG_SETTING_MEASURE_TOOLTIP :تعمیراتی کام کے دوران پیمائشی ٹول ٹپ دکھائیں: {STRING} STR_CONFIG_SETTING_LIVERIES :کمپنی کے رنگ دکھائیں: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :کوئی نہیں STR_CONFIG_SETTING_LIVERIES_OWN :اپنی کمپنی STR_CONFIG_SETTING_LIVERIES_ALL :تمام کمپنیاں STR_CONFIG_SETTING_PREFER_TEAMCHAT :ٹیم سے بات چیت کے لئے دبائیں: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :scrollwheel کا کام: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :نقشے کو قریب سے دیکھیں STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :نقشے کو ہلائیں STR_CONFIG_SETTING_SCROLLWHEEL_OFF :آف STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :نقشے پر scrollwheel کی رفتار: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :آف STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :کھیل کو محفوظ کرنے کے لئے تاریخ کا {STRING} طریقہ استعمال کریں STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :long (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :short (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :نیا کھیل شروع کرنے پر خودکار توقف: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :توقف کے دوران اجازت دیں: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :کوئی فعل نہیں STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :تمام غیر تعمیراتی افعال STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :تمام لیکن منظر کشی بدلنے والے افعال STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :تمام افعال STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :گاڑیوں کی ایڈوانسڈ فہرست دیکھیں: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :سامان بھرنے کی نشانی دکھائیں: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :اوقات کا جدول دنوں کی بجائے ٹِکس میں دکھائیں: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :قوقات کے جدول میں آمد اور روانگی دکھائیں: {STRING} STR_CONFIG_SETTING_QUICKGOTO :جلدی گاڑیوں کو احکامات دینا: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :کھیل شروع کرنے یا لوڈ کرنے کے بعد ریل گاڑی کی شروعاتی قسم: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :پہلی دستیاب STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :آخری دستیاب STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :زیادہ استعمال شدہ STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :مخصوص پٹریاں دکھائیں: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :تعمیراتی ٹول کو استعمال کے بعد فعال رکھیں: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :کمپنی کی مالیاتی ونڈو میں اخراجات کو اکٹھا دکھائیں: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :موزوں گاڑیاں نہ ہونے کی صورت میں عمارت کو غیر فعال کر دیں: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :کمپنی کی زیادہ سے زیادہ ریل گاڑیاں: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :کمپنی کی زیادہ سے زیادہ گاڑیاں: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT :کمپنی کے زیادہ سے زیادہ ہوائی جہاز: {STRING} STR_CONFIG_SETTING_MAX_SHIPS :کمپنی کے زیادہ سے زیادہ بحری جہاز: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :کمپیوٹر کے لئے ریل گاڑیاں غیر فعال کریں: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :کمپیوٹر کے لئے گاڑیاں غیر فعال کریں: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :کمپیوٹر کے لئے ہوائی جہاز غیر فعال کریں: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :کمپیوٹر کے لئے بحری جہاز غیر فعال کریں: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :زیادہ کھلاڑیوں والے کھیل میں AI کی اجازت دیں: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :اسکرپٹس کے معطل ہونے سے پہلے #opcodes: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :مرمتی وقفے فیصد میں ہیں: {STRING} STR_CONFIG_SETTING_NOSERVICE :گاڑیوں کی خرابی غیر فعال ہونے کی صورت میں مرمت بھی غیر فعال کر دیں: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :مال گاڑی کی حد رفتار فعال کریں: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :الیلٹرک ریل گاڑیاں غیر فعال کریں: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :کھلاڑی کے اسٹیشن پر پہلی گاڑی کی آمد: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :مقابل کے اسٹیشن پر پہلی گاڑی کی آمد: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :حادثے / تباہیاں: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :کمپنی کی معلومات: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :صنعتوں کا افتتاح: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :صنعتوں کی بندش: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :معیشت بدل گئی: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :کمپنی کی خدمات حاصل کرنے والی صنعتوں کی پیداوار میں تبدیلی: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :مُقابل کی خدمات حاصل کرنے والی صنعتوں کی پیداوار میں تبدیلی: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :دوسری صنعت کی پیداوار میں تبدیلی: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :کمپنی کی گاڑیوں کے بارے پیں نصیحت / معلومات: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :نئی گاڑیاں: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :کارگو کی منظوری میں تبدیلی: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :امداد: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :عمومی معلومات: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :بند STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :خلاصہ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :مکمل STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :رنگین خبریں کون سے سال سے شروع ہوں: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :شروعاتی سال: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :مستحکم معیشت فعال کریں: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :دوسری کمپنیوں کے حصص خریدنے کی اجازت: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :پہلے خودکار طریقے سے semaphores بنائیں: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :اشاروں والی GUI فعال کریں: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :تعمیر کے لئے اشاروں کی شروعاتی قسم: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :روکنے والے اشارے STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :راستے کے اشارے STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :یک طرفہ راستے کے اشارے STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :اشعاروں کی اقسام میں سے گزریں: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :صرف روکنے والے اشارے STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :صرف راستے کے اشارے STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :تمام STR_CONFIG_SETTING_TOWN_LAYOUT :نئے شہروں میں سڑکوں کا پھیلاو: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :اصلی STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :اچھی سڑکیں STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 گرڈ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 گرڈ STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :بے ترتیب STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :شہروں کو سڑکیں تعمیر کرنے کی اجازت: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :شہروں کو چوک تعمیر کرنے کی اجازت: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :شہروں کو ہوائی اڈوں کا صوتی شور کنٹرول کرنے کی اجازت: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :کھیل میں نئے شہر تعمیر کرنے کی اجازت: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ممنوع STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :اجازت ہے STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :اپنی مرضی کے شہر کے پھیلاو کی اجازت ہے STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :کھیل میں درخت لگانے کی اجازت: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :کوئی نہیں {RED}(لکڑ مل ٹوٹ گئی) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :صرف بارش کے جنگلوں میں STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :ہر جگہ STR_CONFIG_SETTING_TOOLBAR_POS :بنیادی ٹول بار کی جگہ: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :حالات کی پٹی: {STRING} STR_CONFIG_SETTING_ZOOM_MIN :قریب سے دیکھنے کی حد: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :دور سے دیکھنے کی حد: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :عمومی STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :شہر کے بڑھنے کی رفتار: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_NONE :کوئی نہیں STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :آہستہ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :نارمل STR_CONFIG_SETTING_TOWN_GROWTH_FAST :تیز STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :بہت تیز STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :شہر کا شروعاتی ضارب: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :سڑک کی تعمیر کے دوران غلط تعمیر شدہ حصوں کو ہٹا دے: {STRING} STR_CONFIG_SETTING_GUI :{ORANGE}انٹرفیس STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}تعمیرات STR_CONFIG_SETTING_VEHICLES :{ORANGE}گاڑیاں STR_CONFIG_SETTING_STATIONS :{ORANGE} اسٹیشن STR_CONFIG_SETTING_ECONOMY :{ORANGE}معیشت STR_CONFIG_SETTING_AI :{ORANGE}مد مقابل STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}ڈسپلے کے اختیارات STR_CONFIG_SETTING_INTERACTION :{ORANGE}چوراہا STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}اشعارے STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}سامان کو سنبھالنا STR_CONFIG_SETTING_AI_NPC :{ORANGE}کمپیوٹر کے کھلاڑی STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}خودکار تبدیلی STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}مرمت STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}روٹنگ STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}ریل گاڑیاں STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}شہر STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}صنعتیں STR_CONFIG_SETTING_PATHFINDER_OPF :اصلی STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :ریل گاڑیوں کے لئے راستہ ڈھونڈنے والا: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :گاڑیوں کا راستہ تلاش کرنے والا: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :بحری جہازوں کا راستہ تلاش کرنے والا: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :اشاروں پر خودکار ریورس ہونا: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}سیٹنگ کی ولیو بدلیں # Config errors STR_CONFIG_ERROR :{WHITE}کنفیگریشن فائل میں خرابی ہے ۔ ۔ ۔ STR_CONFIG_ERROR_ARRAY :{WHITE} ۔ ۔ ۔ array '{STRING}' میں غلطی ہے STR_CONFIG_ERROR_INVALID_VALUE :{WHITE} ۔ ۔ ۔ غیر معیاری (غلط) '{STRING}' قیمت '{STRING}' کے لئے STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE} ۔ ۔ ۔ '{STRING}' سیٹنگ کے آخر میں کُچھ حروف ہیں STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE} ۔ ۔ ۔ NewGRF '{STRING}' کو نظر انداز کر رہے ہیں: اس GRF ID '{STRING}' سے پہلے ہی ایک ہے STR_CONFIG_ERROR_INVALID_GRF :{WHITE} ۔ ۔ ۔ غیر معیاری (غلط) NewGRF '{STRING}' کو نظر انداز کر رہے ہیں: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :نہیں مِلا STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :جامد استعمال کے لئے غیر محفوظ STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF نظام STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :OpenTTD کے اِس ورژن سے مطابقت نہیں رکھتا STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :نا معلوم STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}- - - کمپریشن کی سطح '{STRING}' درست نہیں ہے STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE} ۔ ۔ ۔ کھیل بچانے کا یہ فارمیٹ '{STRING}' دستیاب نہیں ہے۔ واپس '{STRING}' پر جا رہے ہیں # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}نیا کھیل STR_INTRO_LOAD_GAME :{BLACK}کھیل لوڈ کریں STR_INTRO_PLAY_SCENARIO :{BLACK}Scenario کھیلیں STR_INTRO_PLAY_HEIGHTMAP :{BLACK}اونچائی کے نقشے کو کھیلو STR_INTRO_SCENARIO_EDITOR :{BLACK}منظر نامہ STR_INTRO_MULTIPLAYER :{BLACK}زیادہ کھلاڑی STR_INTRO_GAME_OPTIONS :{BLACK}کھیل کے اختیارات STR_INTRO_ADVANCED_SETTINGS :{BLACK}ایڈوانسڈ سیٹنگ STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF چنئے STR_INTRO_ONLINE_CONTENT :{BLACK}آن لائن مواد دیکھیں STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI / کھیل کے اختیارات STR_INTRO_QUIT :{BLACK}باہر نکلو STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}نیا کھیل شروع کریں۔ Ctrl+Click نقشے کی ترتیب کو چھوڑ دے گا STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}بچایا ہوا کھیل لوڈ کریں STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}ایک نیا کھیل شروع کرو، اونچائی کے نقشے کو زمین بنا کر STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}اپنی مرضی کا scenario استعمال کرتے ہوئے نیا کھیل شروع کریں STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}اپنی مرضی کی دنیا/scenario بنائیں STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}زیادہ کھلاڑیوں والا کھیل شروع کریں STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}منظر کشی کا 'temperate' طریقہ چُنئیے STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}منظر کشی کا 'sub-arctic' طریقہ چُنئیے STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}منظر کشی کا 'sub-tropical' طریقہ چُنئیے STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}منظر کشی کا 'toyland' طریقہ چُنئیے STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}کھیل کے اختیارات دکھائیں STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}ایڈوانسڈ سیتنگز دیکھیئے STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF سیٹنگز دیکھیئے STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}نئے اور ترمیم شدہ مواد کو ڈاون لوڈ کرنے کے لئے چیک کریں STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK} AI اور کھیل کے اختیارات دکھائیں STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD' سے باہر نکلو STR_INTRO_TRANSLATION :{BLACK}اس ترجمے میں {NUM} لائنین{P "" یں} غیر ترجمہ سدہ ہیں۔ براہ مہربانی ترجمہ کُنندہ بن کر OpenTTD کی مدد کریں۔ تفصیلات کے لئے readme.txt دیکھیں # Quit window STR_QUIT_CAPTION :{WHITE}باہر نکلو STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}کیا آپ واقعی OpenTTD کو چھوڑ کر واپس {STRING} میں جانا چاہتے ہیں؟ STR_QUIT_YES :{BLACK}ہاں STR_QUIT_NO :{BLACK}نہیں # Supported OSes STR_OSNAME_WINDOWS :ونڈوز STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :یونیکس STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}کھیل چھوڑ دو STR_ABANDON_GAME_QUERY :{YELLOW}کیا آپ کو یقین ہے کہ آپ اس کھیل کو چھوڑنا چاہ رہے ہیں؟ STR_ABANDON_SCENARIO_QUERY :{YELLOW}کیا آپ کو یقین ہے کہ آپ اس scenario کو چھوڑنا چاہ رہے ہیں؟ # Cheat window STR_CHEATS :{WHITE}دھوکے STR_CHEATS_TOOLTIP :{BLACK}چیک باکسز سے ظاہر ہوتا ہے کہ آپ نے یہ دھوکا پہلے بھی کیا یے STR_CHEATS_WARNING :{BLACK}انتباہ! آپ ساتھی کھلاڑیوں کو دھوکہ دینے جا رہے ہیں STR_CHEAT_MONEY :{LTBLUE}رقم کو {CURRENCY_LONG} سے بڑھائیں STR_CHEAT_CHANGE_COMPANY :{LTBLUE}اس کمپنی کی طور پر کھیلیں: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}جادوئی دھماکہ خیز (نہ ٹوٹنے والی چیزیں بھی توڑ دے): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}سُرنگیں ایک دوسری میں سے گُزر سکیں: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}ہوائی جہاز چھوٹے ہوائی اڈوں پر تباہ نہ ہوں: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Temperate منظر کشی STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Sub-arctic منظر کشی STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropical منظر کشی STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Toyland منظر کشی STR_CHEAT_CHANGE_DATE :{LTBLUE}تاریخ بدلیں: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}موجودہ سال بدلیں STR_CHEAT_SETUP_PROD :{LTBLUE}پیداوار میں تبدیلی کو فعال کریں: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}نئے رنگوں کا انتخاب STR_LIVERY_GENERAL_TOOLTIP :{BLACK}رنگوں کا عام انتخاب دکھائیں STR_LIVERY_TRAIN_TOOLTIP :{BLACK}ریل گاڑیوں کے رنگوں کا انتخاب دکھائیں STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}گاڑیوں کے رنگوں کا انتخاب دکھائیں STR_LIVERY_SHIP_TOOLTIP :{BLACK}بحری جہازوں کے رنگوں کا انتخاب دکھائیں STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}ہوائی جہازوں کے رنگوں کا انتخاب دکھائیں STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}اختیار شدہ منصوبے کیلئے بنیادی دنگ اختیار کریں STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}اختیار شدہ منصوبے کیلئے دوسرا دنگ اختیار کریں STR_LIVERY_DEFAULT :عمومی رنگ STR_LIVERY_STEAM :اسٹیم انجن STR_LIVERY_DIESEL :ڈیزل انجن STR_LIVERY_ELECTRIC :الیکٹرک انجن STR_LIVERY_MONORAIL :مونو ریل انجن STR_LIVERY_MAGLEV :میگ لیو انجن STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :مسافر کوچ (اسٹیم) STR_LIVERY_PASSENGER_WAGON_DIESEL :مسافر کوچ (ڈیزل) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :مسافر کوچ (الیکٹرک) STR_LIVERY_PASSENGER_WAGON_MONORAIL :مسافر کوچ (مونو ریل) STR_LIVERY_PASSENGER_WAGON_MAGLEV :مسافر کوچ (میگ لیو) STR_LIVERY_FREIGHT_WAGON :مال ڈبہ STR_LIVERY_BUS :بس STR_LIVERY_TRUCK :لاری STR_LIVERY_PASSENGER_SHIP :مسافر فیری STR_LIVERY_FREIGHT_SHIP :مال بردار بحری جہاز STR_LIVERY_HELICOPTER :ہیلی کاپٹر STR_LIVERY_SMALL_PLANE :چھرٹا ہوائی جہاز STR_LIVERY_LARGE_PLANE :بڑا ہوائی جہاز STR_LIVERY_PASSENGER_TRAM :مسافر ٹرام STR_LIVERY_FREIGHT_TRAM :مال بردار ٹرام # Face selection window STR_FACE_CAPTION :{WHITE}چہرہ چنئے STR_FACE_CANCEL_TOOLTIP :{BLACK}چہرہ چننا منسوخ کریں STR_FACE_OK_TOOLTIP :{BLACK}نیا چہرہ چننا قبول کریں STR_FACE_MALE_BUTTON :{BLACK}مرد STR_FACE_MALE_TOOLTIP :{BLACK}مردانہ چہرے چنئے STR_FACE_FEMALE_BUTTON :{BLACK}عورت STR_FACE_FEMALE_TOOLTIP :{BLACK}زنانہ چہرے چنئے STR_FACE_NEW_FACE_BUTTON :{BLACK}نیا چہرہ STR_FACE_NEW_FACE_TOOLTIP :{BLACK}بے ترتیب نیا چہرہ بنائیں STR_FACE_ADVANCED :{BLACK}ایڈوانسڈ STR_FACE_ADVANCED_TOOLTIP :{BLACK}ایڈوانسڈ چہرہ چنئے STR_FACE_SIMPLE :{BLACK}سادہ STR_FACE_SIMPLE_TOOLTIP :{BLACK}سادہ چہرہ چنئے STR_FACE_LOAD :{BLACK}لوڈ STR_FACE_LOAD_TOOLTIP :{BLACK}پسندیدہ چہرہ لوڈ کریں STR_FACE_LOAD_DONE :{WHITE}آپ کا پسندیدہ چہرہ OpenTTD configuration file سے لوڈ ہو گیا ہے STR_FACE_FACECODE :{BLACK}کھلاڑی کا چہرہ نمبر STR_FACE_FACECODE_TOOLTIP :{BLACK}کمپنی کے مالک کے چہرے کو نمبر لگائیں/دیکھیں STR_FACE_FACECODE_CAPTION :{WHITE}مالک کے چہرے کو نمبر لگائیں/دیکھیں STR_FACE_FACECODE_SET :{WHITE}نیا نمبر لگا دیا گیا ہے STR_FACE_FACECODE_ERR :{WHITE}نمبر نہیں لگایا جا سکا۔ نمبر 0 سے 4,294,967,295 کے درمیان ہونا چاہئیے STR_FACE_SAVE :{BLACK}بچائیں STR_FACE_SAVE_TOOLTIP :{BLACK}پسندیدہ چہرہ بچائیں STR_FACE_SAVE_DONE :{WHITE}یہ چہرہ آپ کے پسندیدہ چہرے کے طور پر OpenTTD configuration file میں محفوظ کر لیا جائے گا STR_FACE_EUROPEAN :{BLACK}یورپئین STR_FACE_SELECT_EUROPEAN :{BLACK}یورپئین چہرہ چنئے STR_FACE_AFRICAN :{BLACK}افریقی STR_FACE_SELECT_AFRICAN :{BLACK}افریقی چہرہ چنئے STR_FACE_YES :ہاں STR_FACE_NO :نہیں STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}مونچھیں یا کان کی بالیاں فعال کریں STR_FACE_HAIR :بال: STR_FACE_HAIR_TOOLTIP :{BLACK}بال بدلیں STR_FACE_EYEBROWS :بھوئیں: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}بھوئیں بدلیں STR_FACE_EYECOLOUR :آنکھوں کا رنگ: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}آنکھوں کا رنگ بدلیں STR_FACE_GLASSES :چشمے: STR_FACE_GLASSES_TOOLTIP :{BLACK}چشمے فعال کریں STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}چشمے بدلیں STR_FACE_NOSE :ناک: STR_FACE_NOSE_TOOLTIP :{BLACK}ناک بدلیں STR_FACE_LIPS :ہونٹ: STR_FACE_MOUSTACHE :مونچھیں: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}ہونٹ یا مونچھیں بدلیں STR_FACE_CHIN :ٹھوڑی: STR_FACE_CHIN_TOOLTIP :{BLACK}ٹھوڑی بدلیں STR_FACE_JACKET :جیکٹ: STR_FACE_JACKET_TOOLTIP :{BLACK}جیکٹ بدلیں STR_FACE_COLLAR :کالر: STR_FACE_COLLAR_TOOLTIP :{BLACK}کالر بدلیں STR_FACE_TIE :ٹائی: STR_FACE_EARRING :بالیاں: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}ٹائی یا بالیاں بدلیں # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}زیادہ کھلاڑی STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}کنکشن: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}انٹرنیٹ یا LAN کھیل میں سے کوئی ایک اختیار کریں STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :انٹرنیٹ STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}کھلاڑی کا نام: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}دوسرے کھلاڑی آپ کو اس نام سے جانیں گے STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}نام STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}کھیل کا نام STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}کلائینٹس STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}آن لائن کلائینٹ / زیادہ سے زیادہ کلائینٹ{}آن لائن کمپنیاں / زیادہ سے زیادہ کمپنیاں STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}نقشے کا حجم STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}کھیل لے نقشے کا سائز منتخب کریں{}علاقے کے حساب سے ترتیب دینے کے لئے کلک کریں STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}تاریخ STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}آج کی تاریخ STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}سال STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}کھیل کو چلتے ہوئے سال STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Language, server version, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}فہرست میں سے ایک کھیل کو چُننے کے لئے ایک پر کلک کریں STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}آپ کا پچھلی مرتبہ اختیار کیا ہُوا سرور: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}اپنے چھلی مرتبہ اختیار شدہ سرور کو منتخب کرنے کے لئے کلک کریں STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}کھیل کی معلومات STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clients: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}زبان: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}منظر کشی: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}نقشے کا سائز: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}شروعاتی تاریخ: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}موجودہ تاریخ: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}پاس ورڈ سے محفوظ شدہ! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}سرور دستیاب نہیں ہے STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}سرور فُل ہے STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSION MISMATCH STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF MISMATCH STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}کھیل میں شامل ہوں STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}سرور کو تازہ کریں STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}سرور کی معلومات کو تازہ کریں STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}سرور ڈھونڈیں STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}سرور کے لئے نیٹ ورک تلاش کریں STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}سرور شامل کریں STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}سرور کو اس فہرست میں شامل کریں جو ہمیشہ کھیل شروع کرنے کے لئے پرکھی جاتی ہے STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}سرور شروع کریں STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}اپنا سرور خود شروع کریں STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}اپنا نام لکھیں STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}ہوسٹ کا ایڈریس لکھیں # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}نیا زیادہ کھلاڑیوں والا کھیل شروع کریں STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}کھیل کا نام: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}کھیل دوسرے کھلاڑیوں کو زیادہ کھلاڑیوں والی فہرست میں دکھایا جائے گا STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}پاس ورڈ رکھیں STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}اگر آپ اس کھیل کو ہر کسی کی پہنچ سے بچانا چاہتے ہیں تو کھیل کو پاس ورڈ سے محفوظ بنا لیں STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / انٹرنیٹ STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertise) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} کلائینٹ{P "" س} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}زیادہ سے زیادہ کلائینٹ: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}زیادہ سے زیادہ کلائینٹس کی تعداد کا انتخاب کریں STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} کمپنی{P "" اں} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}زیادہ سے زیادہ کمپنیاں: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}سرور پر کمپنیوں کی زیادہ سے زیادہ تعداد مقرر کریں STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} ناظر{P "" ین} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}زیادہ سے زیادہ ناظرین STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}سرور پس زیادہ سے زیادہ ناظرین کی تعداد مقرر کریں STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}بولی گئی زبان: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}دوسرے کھلاڑی سرور پر بولی جانے والی زبان کے بادے میں جان سکیں گے STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}نیٹ ورک والے کھیل کا نام لکھیں # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :کوئی بھی STR_NETWORK_LANG_ENGLISH :انگریزی STR_NETWORK_LANG_GERMAN :جرمن STR_NETWORK_LANG_FRENCH :فرانسیسی STR_NETWORK_LANG_BRAZILIAN :برازیلین STR_NETWORK_LANG_BULGARIAN :بلغارین STR_NETWORK_LANG_CHINESE :چائینیز STR_NETWORK_LANG_CZECH :چیک STR_NETWORK_LANG_DANISH :ڈینیش STR_NETWORK_LANG_DUTCH :ڈچ STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :فِنش STR_NETWORK_LANG_HUNGARIAN :ہنگرین STR_NETWORK_LANG_ICELANDIC :Icelandic STR_NETWORK_LANG_ITALIAN :اٹالین STR_NETWORK_LANG_JAPANESE :جاپانی STR_NETWORK_LANG_KOREAN :کورین STR_NETWORK_LANG_LITHUANIAN :Lithuanian STR_NETWORK_LANG_NORWEGIAN :ناورویجین STR_NETWORK_LANG_POLISH :پولش STR_NETWORK_LANG_PORTUGUESE :پُرتگیزی STR_NETWORK_LANG_ROMANIAN :رومانین STR_NETWORK_LANG_RUSSIAN :رشین STR_NETWORK_LANG_SLOVAK :Slovak STR_NETWORK_LANG_SLOVENIAN :Slovenian STR_NETWORK_LANG_SPANISH :اسپینش STR_NETWORK_LANG_SWEDISH :سویڈیش STR_NETWORK_LANG_TURKISH :ترکش STR_NETWORK_LANG_UKRAINIAN :یوکرانین STR_NETWORK_LANG_AFRIKAANS :افریقین STR_NETWORK_LANG_CROATIAN :کروشین STR_NETWORK_LANG_CATALAN :Catalan STR_NETWORK_LANG_ESTONIAN :Estonian STR_NETWORK_LANG_GALICIAN :Galician STR_NETWORK_LANG_GREEK :گریک STR_NETWORK_LANG_LATVIAN :Latvian ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}زیادہ کھلاڑیوں والے کھیل کی لابی STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}شامل ہونے کی تیاری کرتے ہوئے: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}موجودہ کھیل میں شامل کمپنیوں کی فہرست۔ آپ ان میں سے کسی میں شامل ہو سکتے ہیں یا جگہ ہونے کی صورت میں نئی کمپنی شروع کر سکتے ہیں STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}کمپنی کی معلومات STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}کمپنی کا نام: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}افتتاح: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}کمپنی کی مالیت: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}موجودہ بقایا: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}پچھلے سال کی آمدن: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}کادکردگی: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}گاڑیاں: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}اسٹیشن: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}کھلاڑی: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}نئی کمپنی STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}نئی کمپنی بنائیں STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}کھیل دیکھیں STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}کھیل کو ناظر کے طور پر دیکھیں STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}کھیل میں شامل ہوں STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}کمپنی کو چلانے میں مدد کریں # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}رابطہ کر رہے ہیں۔ ۔ ۔ ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) رابطہ کر رہے ہیں۔ ۔ ۔ STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) اختیار دے رہے ہیں ۔ ۔ ۔ STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) انتظار کر رہے ہیں ۔ ۔ ۔ STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) نقشہ ڈاون لوڈ کر رہے ہیں ۔ ۔ ۔ STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) معلومات پر کام کر رہے ہیں ۔ ۔ ۔ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) رجسٹر کر رہے ہیں ۔ ۔ ۔ STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}کھیل کے بارے میں معلومات حاصل کر رہے ہیں ۔ ۔ ۔ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}کمپنی کے بارے میں معلومات حاصل کر رہے ہیں ۔ ۔ ۔ ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}آپ سے آگے {NUM} کلائنٹ{P "" س} ہیں STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}اب تک {BYTES} ڈاون لوڈ ہوئی ہیں STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}اب تک {BYTES} / {BYTES} ڈاون لوڈ ہوئی ہیں STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}رابطہ منقطع کریں STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}سرور محفوظ ہے۔ پاس ورڈ بتایہں STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}کمپنی محفوظ ہے۔ پاس ورڈ بتایہں # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}کلائینٹس کی فہرست STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}نظارہ کریں STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}نئی کمپنی # Network client list STR_NETWORK_CLIENTLIST_KICK :ٹھڈا STR_NETWORK_CLIENTLIST_BAN :پابندی STR_NETWORK_CLIENTLIST_GIVE_MONEY :پیسے دئیں STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :سب سے بات کریں STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :کمپنی سے بات کریں STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :پرائیویٹ پیغام STR_NETWORK_SERVER :سرور STR_NETWORK_CLIENT :کلائینٹ STR_NETWORK_SPECTATORS :ناظرین STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}بتائیں آپ کتنے پیسے بھیجنا چاہتے ہیں # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}بتایا گیا پاس ورڈ محفوظ نہ کریں STR_COMPANY_PASSWORD_OK :{BLACK}کمپنی کا نیا پاس ورڈ رکھیں STR_COMPANY_PASSWORD_CAPTION :{WHITE}کمپنی کا پاس ورڈ STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}پہلے سے مقرر شدہ کمپنی کا پاس ورڈ STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}کمپنی کے پاس ورڈ کو تمام نئی کمپنیوں کے لئے پہلے سے مقرر شدہ سمجھیں # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}شامل ہوں STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}اس کمپنی کے طور پر کھیل میں شامل ہوں STR_COMPANY_VIEW_PASSWORD :{BLACK}پاس ورڈ STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}اپنی کمپنی کو پاس ورڈ سے محفوظ بنائیں تاکہ غیر متعلقہ کھلاڑی اس میں شامل نہ ہو سکیں STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}کمپنی کا پاس ورڈ رکھیں # Network chat STR_NETWORK_CHAT_SEND :{BLACK}بھیجیں STR_NETWORK_CHAT_COMPANY_CAPTION :[ٹیم] : STR_NETWORK_CHAT_CLIENT_CAPTION :[پرائیویٹ] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[تمام] : STR_NETWORK_CHAT_COMPANY :[ٹیم] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[ٹیم] سے {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[پرائیویٹ] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[پرائیویٹ] سے {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[تمام] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}نیٹ ورک پر بات کرنے کے لئے پیغام لکھیں # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}کوئی نیٹ ورک والا آلہ نہیں ملا یا کھیل کو ENABLE_NETWORK کے بغیر بنایا گیا ہے STR_NETWORK_ERROR_NOSERVER :{WHITE}نیٹ ورک پر کوئی کھیل نہیں ملا STR_NETWORK_ERROR_NOCONNECTION :{WHITE}سرور نے آپ کی درخواست کا جواب نہیں دیا STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}NewGRF کے فرق کی وجہ سے رابطہ نہیں ہو سکا STR_NETWORK_ERROR_DESYNC :{WHITE}نیٹ ورک کھیل کو ایک جیسا کرنے کی کوشش ناکام STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}نیٹ ورک کھیل کا رابطہ منقطع STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}بچایا ہوا کھیل لوڈ نہیں ہوسکا STR_NETWORK_ERROR_SERVER_START :{WHITE}سرور شروع نہیں ہو سکا STR_NETWORK_ERROR_CLIENT_START :{WHITE}رابطہ نہیں ہوسکا STR_NETWORK_ERROR_TIMEOUT :{WHITE}کنکشن #{NUM} کا وقت ختم ہوگیا STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}پروٹوکول کی خرابی کی وجہ سے رابطے کو بند کرنا پڑا STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}کلائینٹ اور سرور کا ورژن ایک جیسا نہیں ہے STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}غلط پاس ورڈ STR_NETWORK_ERROR_SERVER_FULL :{WHITE}سرور فُل ہے STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}اس سرور پر آپ کے داخلے پر پابندی ہے STR_NETWORK_ERROR_KICKED :{WHITE}آپ کو کھیل سے ٹھڈا مار کر نکال دیا گیا STR_NETWORK_ERROR_CHEATER :{WHITE}اس سرور پر دھوکے کی اجازت نہیں STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}آپ سرور کو بہت زیادہ احکامات بھیج رہے تھے STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}آپ نے پاس ورڈ لکھنے میں بہت دیر لگا دی STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}آپ کا کمپیوٹر اتنا سُست ہے کہ کھیل میں سرور کا ساتھ نہیں دے پا رہا STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}آپ کے کمپیوٹر نے نقشہ ڈاون لوڈ کرنے میں بہت دیر لگا دی STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}آپ کے کمپیوٹر نے سرور کے ساتھ شامل ہونے میں بہت دیر لگا دی ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :عمومی خرابی STR_NETWORK_ERROR_CLIENT_DESYNC :desync خرابی STR_NETWORK_ERROR_CLIENT_SAVEGAME :نقشہ لوڈ نہیں ہوسکا STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :رابطہ ختم STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :پروٹوکول کی خرابی STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF مختلف ہے STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :اجازت نہیں ہے STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :خراب یا غیر متوقع پیکٹ وصول کیا ہے STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :غلط دہرائی STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :نام پہلے سے استعمال میں ہے STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :غلط پاس ورڈ STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :DoCommand میں غلط کمپنی ہے STR_NETWORK_ERROR_CLIENT_KICKED :سرور نے ٹھڈا مار دیا STR_NETWORK_ERROR_CLIENT_CHEATER :دھوکہ دینے کی کوشش کر رہا تھا STR_NETWORK_ERROR_CLIENT_SERVER_FULL :سرور بھرا ہوا ہے STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :بہت زیادہ احکامات بھیج رہا تھا STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :وقت پر پاس ورڈ نہیں ملا STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :عمومی وقت کا خاتمہ STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :نقشہ ڈاون لوڈ کرنے میں بہت دیر لگی STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :نقشہ پر کام کرنے میں بہت دیر لگی ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}ممکنہ طور پر کنکشن کا خاتمہ STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}آخری {NUM} سیکنڈ{P "" وں} سے سرور سے کوئی معلومات نہیں ملیں # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :کھیل رکا ہوا ہے۔ ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :کھیل اب تک رکا ہوا ہے۔ ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :کھیل اب تک رکا ہوا ہے۔ ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :کھیل اب تک رکا ہوا ہے۔ ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :کھیل اب تک رکا ہوا ہے۔ ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :کھیل کا توقف ختم۔ ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :کھلاڑیوں کی تعداد STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :کلائینٹس سے رابطہ کر رہے ہیں STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :دستی STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :کھیل کا سکرپٹ ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :چھوڑ رہا ہوں STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} کھیل میں شامل ہوا ہے STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} کھیل میں شامل ہوا ہے (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} کمپنی میں شامل ہوا #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ناظرین میں شامل ہوا STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} نے نئی کمپنی شروع کی ہے (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} نے کھیل چھوڑ دیا ہے ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} نے اپنا نام بدل کر {STRING} رکھ لیا ہے STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} نے آپ کی کمپنی کو {2:CURRENCY_LONG} دئیے ہیں STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** آپ نے {1:STRING} کو {2:CURRENCY_LONG} دئیے ہیں STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}سرور نے سیشن بند کر دیا STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}سرور دوبارہ سے سٹارٹ ہو رہا ہے - - -{}برائے مہربانی انتظار فرمائیے ۔ ۔ ۔ # Content downloading window STR_CONTENT_TITLE :{WHITE}مواد ڈاون لوڈ کیا جا رہا ہے STR_CONTENT_TYPE_CAPTION :{BLACK}طرذ STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}مواد کی قسم STR_CONTENT_NAME_CAPTION :{BLACK}نام STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}مواد کا نام STR_CONTENT_MATRIX_TOOLTIP :{BLACK}تفصیلات کے لئے لاین پر کلک کریں{}ڈاون لوڈ کرنے کےلئے چیک باکس پر کلک کریں STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}تمام منتخب کریں STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}تمام مواد ڈاون لوڈ کرنے کے لئے منتخب کریں STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}اپ گریڈ منتخب کریں STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}پہلے سے موجودہ تمام مواد سے متعلقہ اپ گریڈز کو ڈاون لوڈ کرنے کے لئے منتخب کریں STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}تمام کو نا منتخب کریں STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}تمام کو ڈاون لوڈ نا کرنے کے لئے منتخب کریں STR_CONTENT_FILTER_TITLE :{BLACK}ٹیگ / نام پر چھانیں: STR_CONTENT_OPEN_URL :{BLACK}ویب سائٹ دیکھیں STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}یہ مواد دیکھنے کے لئے ویب سائٹ دیکھیں STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}ڈاون لوڈ STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}منتخب شدہ مواد کو ڈاون لوڈ کرنا شروع کریں STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}مکمل ڈاون لوڈ کا سائز: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}مواد سے متعلقہ معلومات STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}آپ نے اس کو ڈاون لوڈ کے لئے منتخب نہیں کیا STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}آپ نے اس کو ڈاون لوڈ کے لئے منتخب کیا STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}یہ انحصارات ڈاون لوڈ کے لئے منتخب کئے گے ہیں STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}آپ کے پاس یہ پہلے سے ہے STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}یہ مواد نامعلوم ہے اور OpenTTD میں ڈاون لوڈ نہیں کیا جا سکتا STR_CONTENT_DETAIL_UPDATE :{SILVER}یہ پہلے سے موجود {STRING} کا متبادل ہے STR_CONTENT_DETAIL_NAME :{SILVER}نام: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}ورژن: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}تفصیلات: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}طرز: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}ڈاون لوڈ کا سائز: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{WHITE}{STRING}{SILVER} کی وجہ سے منتخب کیا گیا STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}انحصارات: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}ٹیگز: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD "zlib" کی مدد کے بغیر بنائی گئی ہے ۔ ۔ ۔ STR_CONTENT_NO_ZLIB_SUB :{WHITE}۔ ۔ ۔ مواد ڈاون لوڈ کرنا ممکن نہیں! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :بنیادی گرافکس STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_AI_LIBRARY :AI لائیبریری STR_CONTENT_TYPE_SCENARIO :منظر نامہ STR_CONTENT_TYPE_HEIGHTMAP :اونچائی والا نقشہ STR_CONTENT_TYPE_BASE_SOUNDS :بنیادی آوازیں STR_CONTENT_TYPE_BASE_MUSIC :بنیادی موسیقی STR_CONTENT_TYPE_GAME_SCRIPT :کھیل کا سکرپٹ STR_CONTENT_TYPE_GS_LIBRARY :GS لائیبریری # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}مواد ڈاون لوڈ کر رہے ہیں ۔ ۔ ۔ STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}فائلوں کی درخواست کر رہے ہیں ۔ ۔ ۔ STR_CONTENT_DOWNLOAD_FILE :{WHITE}اب ڈاون لوڈ کر رہے ہیں {STRING} ({NUM} میں سے {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}ڈاون لوڈ مکمل STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} میں سے {BYTES} ڈاون لوڈ ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}مواد والے سرور سے رابطہ ممکن نہیں ۔ ۔ ۔ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}ڈاون لوڈنگ ناکام ہوگئی ۔ ۔ ۔ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}۔ ۔ ۔ رابطہ ٹوٹ گیا STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE} ۔ ۔ ۔ فائل لکھے جانے کے قابل نہیں STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}ڈاون لوڈ شدہ فائل decompress نہیں ہوسکی STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}گرافکس غایب ہیں STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD کو چلنے کے لئے ضروری گرافکس نہیں ملے۔ کیا آپ ڈاون لوڈ کر کے انسٹال کرنا چاہتے ہیں؟ STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}ہاں، گرافکس ڈاون لوڈ کریں STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}نہیں، OpenTTD سے باہر نکلو # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Transparency کے اختیارات STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}اشاروں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}درختوں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}گھروں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}صنعتوں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}تعمیرات کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}پلوں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}بنیادی ڈھانچوں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}catenary کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}لوڈ کرنے کے نشانوں کی شفافیت کی تدویم کریں۔ محدوظ کرنے کے لئے Ctrl+Click دبائیں STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}چیزوں کو شفاف کی بجائے غائب کر دیں # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}کوریج والے علاقے کو واضح کریں STR_STATION_BUILD_COVERAGE_OFF :{BLACK}بند STR_STATION_BUILD_COVERAGE_ON :{BLACK}آن STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}مجوزہ جگہ کا کوریج کا علاقہ واضح نہ کریں STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}مجوزہ جگہ کا کوریج کا علاقہ واضح کریں STR_STATION_BUILD_ACCEPTS_CARGO :{GOLD}{CARGO_LIST}{BLACK}منظور کرتا ہے: STR_STATION_BUILD_SUPPLIES_CARGO :{GOLD}{CARGO_LIST}{BLACK}فراہم کرتا ہے: # Join station window STR_JOIN_STATION_CAPTION :{WHITE}اسٹیشن ملائیں STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}الگ اسٹیشن تعمیر کریں STR_JOIN_WAYPOINT_CAPTION :{WHITE}گزرگاہ ملائیں STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}الگ سے گزرگاہ تعمیر کریں # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :ریلوے کی تعمیر STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :برقی ریلوے کی تعمیر STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :مونو ریلوے کی تعمیر STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :میگ لیو ریلوے کی تعمیر STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ریل گاڑی کے ٹریک کی تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}ریل گاڑی کے ٹریک کی خود کار طریقے سے تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}ریل گاڑیوں کے ڈپو کی تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}ریل گاڑی کے ٹریک کو گزرگاہ میں بدلیں۔ Ctrl گزرگاہوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}ریلوے اسٹیشن کی تعمیر کریں۔ Ctrl اسٹیشنوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}ریلوے سگنل کی تعمیر کریں۔ Ctrl روشنی/semaphore والے سگنل میں تدویم کرتا ہے۔{}کھینچ کر لگانے سے سیدھی پٹڑی پر سگنل لگتے ہیں۔ Ctrl سے اگلے جنکشن تک سگنلز کی تعمیر ہوتی ہے۔{}Ctrl+Click سے سگنلز کے انتخاب والی ونڈو کھلتی ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}ریلوے کا پل تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}ریلوے کی سرنگ تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}ریلوے کی طرز کی تعمیر/اپ گریڈ کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_RAIL_NAME_RAILROAD :ریلوے STR_RAIL_NAME_ELRAIL :برقی ریلوے STR_RAIL_NAME_MONORAIL :مونو ریل STR_RAIL_NAME_MAGLEV :میگ لیو # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}ریل گاڑی کے ڈپو کا رخ STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}ریلوے ڈپو کا رخ منتخب کریں # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}گزرگاہ STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}گزرگاہ کی طرز منتخب کریں # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}ریلوے اسٹیشن منتخب کریں STR_STATION_BUILD_ORIENTATION :{BLACK}رخ STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}ریلوے اسٹیشن کا رخ منتخب کریں STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}پٹڑیوں کی تعداد STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}ریلوے اسٹیشن کے لئے پلیٹ فارموں کی تعداد منتخب کریں STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}پلیٹ فارم کی لمبائی STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}ریلوے اسٹیشن کی لمبائی منتخب کریں STR_STATION_BUILD_DRAG_DROP :{BLACK}کھینچ کر رکھ دیں STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}کھینچ کر رکھ کر اسٹیشن تعمیر کریں STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}دکھانے کے لئے ریلوے اسٹیشن کی قسم کا انتخاب کریں STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}تعمیر کے لئے اسٹیشن کی طرز منتخب کریں STR_STATION_CLASS_DFLT :طے شدہ اسٹیشن STR_STATION_CLASS_WAYP :گزرگاہیں # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}اشارے منتخب کریں STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}کھینچتے ہوئے اشاروں کی تعداد STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}کھینچتے ہوئے اشاروں کی تعداد کم کریں STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}کھینچتے ہوئے اشاروں کی تعداد زیادہ کریں # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}ریل کا پل منتخب کریں STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}سڑک کا پل منتخب کریں STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}پل کا انتخاب - تعمیر کرنے کے لئے اپنی مرضی کے پل پر کلک کریں STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :لٹکا ہوا، سٹیل کا STR_BRIDGE_NAME_GIRDER_STEEL :گارڈر، سٹیل کا STR_BRIDGE_NAME_CANTILEVER_STEEL :Cantilever، سٹیل STR_BRIDGE_NAME_SUSPENSION_CONCRETE :لٹکا ہوا، کنکریٹ کا STR_BRIDGE_NAME_WOODEN :لکڑی کا STR_BRIDGE_NAME_CONCRETE :کنکریٹ کا STR_BRIDGE_NAME_TUBULAR_STEEL :ٹیوب نما، سٹیل کا STR_BRIDGE_TUBULAR_SILICON :ٹیوب نما، سلیکون کا # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}سڑک کی تعمیرات STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}ٹرام وے کی تعمیرات STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}سڑک کی تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}ٹرام کی پٹڑی کی تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}سڑک کی خودکار طریقے سے تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}ٹرام وے کی پٹڑی خودکار طریقے سے تعمیر کریں۔ Ctrl تعمیر/ خاتمے میں تدویم کرتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}گاڑیوں کا ڈپو تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}ٹرام گاڑیوں کا ڈپو تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}لاری اڈے کی تعمیر کریں۔ Ctrl اسٹیشنوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}ٹرام کا مسافروں والا اسٹیشن تعمیر کریں۔ Ctrl اسٹیشنوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}لاریوں میں سامان لوڈ کرنے کے لئے لاری اڈے کی تعمیر کریں۔ Ctrl اسٹیشنوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}ٹرام کا سامان والا اسٹیشن تعمیر کریں۔ Ctrl اسٹیشنوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}ون وے سڑکوں کو فعال / غیر فعال کریں STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}پل تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}ٹرام وے کا پل تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}سرنگ تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}ٹرام وے کی سرنگ تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}سڑک کی تعمیر / خاتمے میں تدویم کریں STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}ٹرام وے کی تعمیر / خاتمے میں تدویم کریں # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}گاڑیوں کے ڈپو کا رخ STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}گاڑیوں کے ڈپو کا رخ منتخب کریں STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}ٹرام وے کے ڈپو کا رخ STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}ٹرام وے کے ڈپو کا رخ منتخب کریں # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}لاری اڈے کا رخ STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}لاری اڈے کا رخ منتخب کریں STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}سامان بردار لاری اڈے کا رخ STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}سامان لوڈ کرنے والے لاری اڈے کا رخ منتخب کریں STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}ٹرام وے کے مسافروں والے اسٹیشن کا رخ STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}ٹرام وے کے مسافروں والے اسٹیشن کا رخ منتخب کریں STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}ٹرام وے کے سامان والے اسٹیشن کا رخ STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}ٹرام وے کے سامان والے اسٹیشن کا رخ منتخب کریں # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}گزرگاہوں کی تعمیرات STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}نہریں STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}نہر تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}بحری جہازوں کا ڈپو تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}بندرگاہ تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}گزرگاہ کے طور پر استعمال کرنے کے لئے buoy تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}پانی کی گزرگاہ تعمیر کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}پانی والا علاقہ (جھیل) بنائیں۔{}نہر کی تعمیر کریں، اگر سطح سُمندر کے برابر Ctrl نہیں دبائیں گے تو اردگرد کا علاقہ پانی سے بھر جائے گا STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}دریا رکھو. # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}بحری جہازوں کے ڈپو کا رخ STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}بحری جہازوں کے ڈپو کا رخ منتخب کریں # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}بندرگاہ # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}ہوائی اڈے STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}ہوائی اڈے کی تعمیر کریں۔ Ctrl اسٹیشنوں کو ملاتا ہے۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}ہوائی اڈے کا انتخاب STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}ہوائی اڈے کی طرز اور سائز منتخب کریں STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}ہوائی اڈے کی قسم STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}پھیلاو کی قسم {NUM} STR_AIRPORT_SMALL :چھوٹا STR_AIRPORT_CITY :شہری STR_AIRPORT_METRO :میٹروپولیٹن STR_AIRPORT_INTERNATIONAL :بین الاقوامی STR_AIRPORT_COMMUTER :مسافر STR_AIRPORT_INTERCONTINENTAL :بین البراعظمی STR_AIRPORT_HELIPORT :ہیلی اڈہ STR_AIRPORT_HELIDEPOT :ہیلی کاپٹر کا ڈپو STR_AIRPORT_HELISTATION :ہیلی کاپٹر کا اسٹیشن STR_AIRPORT_CLASS_SMALL :چھوٹے ہوائی اڈے STR_AIRPORT_CLASS_LARGE :بڑے ہوائی اڈے STR_AIRPORT_CLASS_HUB :مرکزی ہوائی اڈے STR_AIRPORT_CLASS_HELIPORTS :ہیلی کاپڑوں کا ہوائی اڈہ STR_STATION_BUILD_NOISE :{BLACK}پیدا کردہ شور: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}منظر نامہ STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}زمین کا ایک کنارہ نیچے کرو۔ گھسیٹنے سے پہلا اختیار شدہ کنارہ نیچے ہو گا اور اختیار شدہ رقبہ کو نئے کنارے کی اونچائی کے برابر ہو جائے گا۔ کنٹرول بٹن سے ترچھا رقبہ اختیار ہو گا۔ شفٹ بٹن سے عمارت اور خرچہ کے اندازے کے درمیان تبدیلی ہو گی STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}زمین کا ایک کنارہ اونچا کرو۔ گھسیٹنے سے پہلا اختیار شدہ کنارہ اونچا ہو گا اور اختیار شدہ رقبہ کو نئے کنارے کی اونچائی کے برابر ہو جائے گا۔ کنٹرول بٹن سے ترچھا رقبہ اختیار ہو گا۔ شفٹ بٹن سے عمارت اور خرچہ کے اندازے کے درمیان تبدیلی ہو گی STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}زمین کے ایک رقبے کو پہلے اختیار شدہ کنارہ کے برابر کر دو۔ گھسیٹنے سے پہلا اختیار شدہ کنارہ نیچے ہو گا اور اختیار شدہ رقبہ کو نئے کنارے کی اونچائی کے برابر ہو جائے گا۔ کنٹرول بٹن سے ترچھا رقبہ اختیار ہو گا۔ شفٹ بٹن سے عمارت اور خرچہ کے اندازے کے درمیان تبدیلی ہو گی STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}مستقبل میں استعمال کے لئے زمین خریدیں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}چیز کا انتخاب STR_OBJECT_BUILD_TOOLTIP :{BLACK}تعمیرکرنے کے لئے چیز منتخب کریں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}تعمیر کرنے کے لئے چیز کی قسم کا انتخاب کریں STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}چیز کا جائزہ STR_OBJECT_BUILD_SIZE :{BLACK}سائز: {GOLD}{NUM} x {NUM} ٹائلیں STR_OBJECT_CLASS_LTHS :روشنی کے مینار STR_OBJECT_CLASS_TRNS :ٹرانسمیٹرز # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}درخت STR_TREES_RANDOM_TYPE :{BLACK}مختلف اقسام کے درخت STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}مختلف اقسام کے درخت لگائیں۔ Shift تعمیر/اندازاّ خرچے میں تدویم کرتا ہے۔ STR_TREES_RANDOM_TREES_BUTTON :{BLACK}مختلف درخت STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}منظر پر مختلف اقسام کے درخت لگائیں # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}زمین کی تخلیق STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}منظر پر پتھریلا علاقہ بنائیں STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}صحرا بنائیں۔{}اُسے ختم کرنے کے لئے Ctrl دبا کر رکھیں STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}اونچائی کم / زیادہ کرنے کے لئے علاقہ بڑھائیں STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}اونچائی کم / زیادہ کرنے کے لئے علاقہ کم کریں STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}بےترتیب (کسی بھی قسم کی) زمین تخلیق کریں STR_TERRAFORM_SE_NEW_WORLD :{BLACK}نیا منظر نامہ بنائیں STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}منظر نامے کو ابتدائی شکل میں لے جائیں STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}کمپنی کی ملکیتی تمام زمین کو نقشے سے ہٹائیں STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}منظر نامے کو ابتدائی شکل میں لے جائیں STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}کیا آپ واقعتاّ کمپنی کی ملکیتی تمام ذمین ہٹانا چاہتے ہیں؟ # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}قصبہ تخلیق کریں STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}نیا قصبہ STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}نیا قصبہ بنائیں۔ Shift+Click دبانے سے صرف اندازاّ خرچہ دکھایا جائے گا STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}مختلف قصبہ STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}مختلف جگہ پر قصبہ بنائیں STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}بہت سے مختلف قصبے بنائیں STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}شہر کا حجم: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{G=m}{BLACK}چھوٹا STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{G=m}{BLACK}درمیانہ STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{G=m}{BLACK}بڑا STR_FOUND_TOWN_SIZE_RANDOM :{G=m}{BLACK}کوئی سا STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}شہر کا حجم منتخب کرو STR_FOUND_TOWN_CITY :{BLACK}شہر STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}شہر کی سڑکوں کا پھیلائو: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}اس شہر کیلئے سڑکوں کا بھیلائو منتخب کرو STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}اصلی STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}بہتر سڑکیں STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{G=f}{BLACK}کوئٰ سی # Fund new industry window # Industry cargoes window # Land area window # Description of land area of different tiles # Houses come directly from their building names # Industries come directly from their industry names # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}اوپن ٹی ٹی ڈی کے متعلق # Save/load game/scenario # World generation STR_MAPGEN_BY :{BLACK}* # Strings for map borders at game generation # SE Map generation # Map generation progress # NewGRF settings STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE} تفصیلی NewGRF معلومات STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE} متحرک NewGRF فائلیں STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE} غیر متحرک NewGRF فائلیں STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK} منتخب NewGRF فائل اپنے configuration میں شامل کیجئے STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK} فائلوں کو دوبارھ اسکین کیجئے STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK} نئی دستیاب NewGRF فائلوں کی فھرست حاصل کیجئے # NewGRF parameters window # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE} معایِئنھ کیجیئے - {STRING} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} پر {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :طرزِ ریل # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE} صف بندھی کے sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK} اگلی sprite STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK} جایئے sprite تک STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK} جایئے sprite کی طرف۔ اگر sprite اصلی نھیں تو اگلی sprite کی طرف جائیے STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK} پچھلا sprite STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK} منتخب sprite کا اظھار۔ اس sprite کے نقش میں سف بندی نظر اندازکی جائے گی۔ STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK} ارد گرد sprite ھلایئے، X اور Y offset تبدیل کیجئے STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK} منتخب sprite کیجئے STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK} اسکرین سے کسی sprite کو منتخب کیجئے STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE} جایئے sprite تک # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} # NewGRF related 'general' warnings # NewGRF status # NewGRF 'it's broken' warnings # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<غلط سامان> STR_NEWGRF_INVALID_CARGO_QUANTITY :<غلط سامان> کا {COMMA} STR_NEWGRF_INVALID_ENGINE :<غلط انجن ماڈل> STR_NEWGRF_INVALID_INDUSTRYTYPE :<غلط صنعت> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window STR_SIGN_LIST_CAPTION :{WHITE} فھرستِ اشارھ - {COMMA} اشار{P ھ ے} # Sign window STR_EDIT_SIGN_CAPTION :{WHITE} اشارے کے الفاظ تبدیل کیجیئے STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK} اگلے اشارے تک جایئے STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK} پچھلے اشارے تک جایئے STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK} اشارے کا نام درج کیجیئے # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE} قصبے STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}مٹائو STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}اس شہر کو پورا مٹا دو # Town local authority window STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :سوال STR_GOAL_QUESTION_CAPTION_INFORMATION :معلومات STR_GOAL_QUESTION_CAPTION_WARNING :انتباہ STR_GOAL_QUESTION_CAPTION_ERROR :خرابی ### Start of Goal Question button list # Subsidies window # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}تمام سہولتوں کا انتخاب کرو STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}تمام قسم کے سامان کا انتخاب کرو (بشمول غیر منتظر سامان کے) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}کسی قسم کا کویی سامان انتظار نہیں کر رہا ہے # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}منتظر: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} سے براستہ ہے {STATION}) STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}منظور کرتا ہے: {WHITE}{CARGO_LIST} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts ############ range for rating ends # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} # Finances window STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} # Company view STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} ریل کے ٹکڑے STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} سڑک کے ٹکڑے STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} پانی کی ٹائلیں STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} اسٹیشن کی ٹائلیں STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{COMMA}{WHITE} ہوائی اڈے STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}کوئی نہیں STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}تفصیلات # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}ریل کے ٹکڑے STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}اشارے STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}سڑک کے ٹکرے STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}سڑک STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}ٹرام وے STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}پانی کی ٹائل STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}نہریں STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD} اسٹیشن: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}اسٹیشن کی ٹائل STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}ہوائی اڈے STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}سالانہ ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}سالانہ # Industry directory # Industry view ############ range for requires starts ############ range for requires ends ############ range for produces starts ############ range for produces ends # Vehicle lists STR_VEHICLE_LIST_AVAILABLE_TRAINS :دستیاب ریل گاڑیاں STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :دستیاب گاڑیاں STR_VEHICLE_LIST_AVAILABLE_SHIPS :دستیاب کشتیاں STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :دستیاب ہوایی جہاز STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}اس قسم کی گاڑیوں کےلیے دستیاب انجنوں کی فہرست دیکھو STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}فہرست کا انتظام کرو # Group window # Build vehicle window STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}پہنچ: {GOLD}{COMMA} ٹائلیں # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK} ڈیپو کا نام تبدیل کیجئے STR_DEPOT_RENAME_DEPOT_CAPTION :ڈیپو کا نام تبدیل کیجئے STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) # Engine preview window STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}قیمت: {CURRENCY_LONG} حد رفتار: {VELOCITY} پہنچ: {COMMA} ٹائلیں{} گنجائش: {CARGO_LONG}, {CARGO_LONG}{}چلانے کا خرچہ: {CURRENCY_LONG} سالانہ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}قیمت: {CURRENCY_LONG} حد رفتار: {VELOCITY} پہنچ: {COMMA} ٹائلیں{} گنجائش: {CARGO_LONG}{}چلانے کا خرچہ: {CURRENCY_LONG} سالانہ # Autoreplace window # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}اگلی منزل بہت دور ہے STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE} روانگی {DEPOT} کی طرف، {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE} {DEPOT} پر خدمات، {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED} روک دیا گیا STR_VEHICLE_COMMAND_STOPPED :{RED} روک دیا گیا STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN} شروع کر دیا گیا STR_VEHICLE_COMMAND_STARTED :{GREEN} شروع کر دیا گیا # Vehicle details # The next two need to stay in this order STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}حد رفتار: {LTBLUE}{VELOCITY} {BLACK} پہنچ: {LTBLUE}{COMMA} ٹائلیں # Extra buttons for train details windows # Vehicle refit # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_OUT_OF_RANGE :{RED} (اگلا پڑاو پہنچ سے باہر ہے) # Time table window STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :زیادہ سے زیادہ {2:VELOCITY} رفتار پر سفر کریں (بغیر اوقات کے) STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING} کے لئے زیادہ سے زیادہ {VELOCITY} رفتار پر سفر کریں STR_TIMETABLE_CHANGE_SPEED :{BLACK}حد رفتار تبدیل کریں STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}منتخب کردہ حکم کی زیادہ سے زیادہ حد رفتار تبدیل کریں STR_TIMETABLE_CLEAR_SPEED :{BLACK}حد رفتار ختم کریں STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}منتخب کردہ حکم کی زیادہ سے زیادہ حد رفتار ختم کریں # Date window (for timetable) # AI debug window STR_AI_DEBUG_CONTINUE :{BLACK} جاری کیجیئے STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK} وقفھ منقطع اور AI کو جاری کیجیئے # AI configuration window STR_AI_CONFIG_CHANGE_NONE : # Available AIs window # AI Parameters # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} میں سے {STRING} مجھے پڑھیے STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} میں سے {STRING} تبدیلی کا ریکارڈ STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} میں سے {STRING} لائسنس STR_TEXTFILE_VIEW_README :{BLACK}مجھے پڑھیے فائل دیکھیں STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}تبدیلیوں کا ریکارڈ STR_TEXTFILE_VIEW_LICENCE :{BLACK}لائسنس # Vehicle loading indicators # Income 'floats' # Saveload messages # Map generation messages # Soundset messages # Screenshot related messages # Error message titles # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}نقشے کے کنارے سے باہر STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}نقشے کے کنارے سے زیادہ قریب STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}ناکافی پیسہ - {CURRENCY_LONG} مزید چاہیے STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}ہموار زمین چاہیے STR_ERROR_CAN_T_DO_THIS :{WHITE}یہ نہیں کر سکتا۔۔۔ STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE} عمارت کو پھلے گرانا ھو گا STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}یہ جگہ صاف نہیں کر سکتا۔۔۔ STR_ERROR_SITE_UNSUITABLE :{WHITE}۔۔۔جگھ غیرمناسب STR_ERROR_ALREADY_BUILT :{WHITE}...تعمیرات مکمل یا جاری ھیں STR_ERROR_OWNED_BY :{WHITE}۔۔۔ یھ {STRING} کی ملکیت ھے STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}۔۔۔ رقبھ کسی اور کمپنی کی ملکیت ھے STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE} نام منفرد ھونا چاھیے STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} راستے میں ھے # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} مقامی حکومت اس کی اجازت نھیں دیتی STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} مقامی حکومت اضافی ھوائی اڈے تعمیر کرنے کی اجازت نھیں دیتی # Levelling errors # Company related errors # Town related errors # Industry related errors STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{G=m}{WHITE}... صرف ان شہروں میں بن سکتا ہے جن کی آبادی ۱۲۰۰ سے زیادہ ہے # Station construction related errors # Station destruction related errors # Waypoint related errors # Depot related errors STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE} ڈیپو کا نام تبدیل نھیں کیا جا سکتا۔۔۔ # Autoreplace related errors # Rail construction errors # Road construction errors # Waterway construction errors # Tree related errors STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE} ۔۔۔ طرزِ پیڑ کے لیئے غلط طرزِ زپین # Bridge related errors STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... پل کے دونوں کنارے زمین پر ہونے چاہییں STR_ERROR_BRIDGE_TOO_LONG :{WHITE} ۔۔۔ پل زیادھ لمبی ھے # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}یہاں سورنگ نہئ بنا سکتے STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}سورنگ یہاں سے شروع نہئں کر سکتے STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}پہلے سورنگ ختم کرئں STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}دوسری سورنگ بئچ مین ہے STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}سورنگ نقشے سے بائر نکل جاے گی STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}سرنگ کے دوسرے حصے کی طرف روکاوٹ ہے # Object related errors STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}کوئی عمارت یا چیذ راستے مین ہے STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}کمپنی کا مرکزی دفتر راستے مین ہے STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}آپ یہ زمین نہی خرید سکتے STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... یہ آپ ہی کی ملکیت ہے # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}یہ گروہ تشکیل نہں دے سکتے STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}یہ گروہ ختم نہں سکتے STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}نام تبدیل نہں سکتے STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}اس گروہ سے تمام گاڑیاں نہیں نکال سکتے STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}اس گروہ مین گاڑی شامل نہیں سکتے # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}ریل گاڑی راستے مین ہے STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}سڑک کی گاڑی راستے مین ہے STR_ERROR_SHIP_IN_THE_WAY :{WHITE}کشتی راستے مین ہے STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}ہوایی جہاز راستے مین ہے STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}ریل گاڑی نہیں تبدیل کر سکتے STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}ٹرک نہیں تبدیل کر سکتے STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}کشتی نہیں تبدیل کر سکتے STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}ہوایی نہیں تبدیل کر سکتے STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}ریل گاڑی کا نام نہیں رکھ سکتے STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}گاڑی کا نام نہیں رکھ سکتے STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}بہری جہاز کا نام نہیں رکھ سکتے STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}ھوائی جہاز کا نام نہیں رکھ سکتے STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}ریل گاڑی چلا / روک نہیں سکتے STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}گاڑی چلا / روک نہیں سکتے STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}بہری جہاز چلا/روک نہیں سکتے STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}ھوائی جہاز چلا/روک نہیں سکتے STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}ریل گاڑی کو اڈے نہیں بہیج سکتے STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}گاڑی کو اڈے نہیں بہیج سکتے STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}بہری جہاز کو اڈے نہیں بہیج سکتے STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}ھوائی جہاز کو اڈے نہیں بہیج سکتے STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}ریل گاڑی نہیں خرید سکتے STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}گاڑی نہیں خرید سکتے STR_ERROR_CAN_T_BUY_SHIP :{WHITE}ریل گاڑی نہیں خرید سکتے STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}ھوائی جہاز نہیں خرید سکتے STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}ھوائی جہاز فروخت نہیں کر سکتے STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}گاڑی دستیاب نہیں ھے STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}گاڑی دستیاب نہیں ھے STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}بہری جہاز دستیاب نہیں ھے STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}کھیل میں بہت زیادہ سواریاں STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}مرمت کا دورانیہ تبدیل نہین کرسکتے # Specific vehicle errors # Order related errors STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE} ۔ ۔ ۔ ہوائی جہاز کی اتنی پہنچ نہیں ہے # Timetable related errors # Sign related errors # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe کا ھم جنس # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names ##id 0x4800 # industry names ############ 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 STR_SV_EMPTY : STR_SV_STNAME :{STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl لوہے کی دھات کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy لوہے کی دھات کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh فولاد کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl فولاد کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling فولاد کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster خوراک کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry خوراک کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy خوراک کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl کاغذ کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh کاغذ کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS کاغذ کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover چینی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught چینی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow چینی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover کولا کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught کولا کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow کولا کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover لچھے کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught لچھے کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow لچھے کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover ٹافی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught ٹافی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow ٹافی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover کھلونوں کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught کھلونوں کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow کھلونوں کی ویگن STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover مٹھائی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught مٹھائی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow مٹھائی کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover بیٹری کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught بیٹری کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow بیٹری کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover گیسی مشروب کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught گیسی مشروب کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow گیسی مشروب کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover پلاسٹک کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught پلاسٹک کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow پلاسٹک کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover بلبلوں کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught بلبلوں کا ٹرک STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow بلبلوں کا ٹرک STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS تیل کا ٹینکر STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. تیل کا ٹینکر STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS مسافر کشتی STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP مسافر کشتی STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 ہوائی کشتی STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug مسافر کشتی STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake مسافر کشتی STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate مال بردار کشتی STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell مال بردار کشتی STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover مال بردار کشتی STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut مال بردار کشتی STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman گنتی STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP تیر STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :گرو کائینات STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario ہیلی کاپٹر STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :گرو X2 ہیلی کاپٹر STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut ہیلی کاپٹر ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_COMPANY_NUM :(کمپنی {COMMA}) STR_FORMAT_GROUP_NAME :گروہ {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} راستے کا نشان STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} راستے کا نشان #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} ریل گاڑی ڈیپو STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} ریل گاڑی ڈیپو # {COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} گاڑی ڈیپو STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} گاڑی ڈیپو #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} بحری جھاز ڈیپو STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} بحری جھاز ڈیپو #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} طیارھ گاھ STR_UNKNOWN_STATION :نا معلوم اسٹیشن STR_DEFAULT_SIGN_NAME :اشارہ STR_COMPANY_SOMEONE :کوئی STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :تماشائی, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}۱ STR_BLACK_2 :{BLACK}۲ STR_BLACK_3 :{BLACK}۳ STR_BLACK_4 :{BLACK}۴ STR_BLACK_5 :{BLACK}۵ STR_BLACK_6 :{BLACK}۶ STR_BLACK_7 :{BLACK}۷ STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/frisian.txt0000644000000000000000000071425312246102556017750 0ustar rootroot##name Frisian ##ownname Frysk ##isocode fy_NL ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0462 ##grflangid 0x32 # $Id: frisian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(ûnbekende string) STR_JUST_NOTHING :Neat # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Passazjiers STR_CARGO_PLURAL_COAL :Stienkoal STR_CARGO_PLURAL_MAIL :Post STR_CARGO_PLURAL_OIL :Oalje STR_CARGO_PLURAL_LIVESTOCK :Bisten STR_CARGO_PLURAL_GOODS :Guod STR_CARGO_PLURAL_GRAIN :Nôt STR_CARGO_PLURAL_WOOD :Hout STR_CARGO_PLURAL_IRON_ORE :Izererts STR_CARGO_PLURAL_STEEL :Stiel STR_CARGO_PLURAL_VALUABLES :Kostberheden STR_CARGO_PLURAL_COPPER_ORE :Kopererts STR_CARGO_PLURAL_MAIZE :Mais STR_CARGO_PLURAL_FRUIT :Fruit STR_CARGO_PLURAL_DIAMONDS :Diamanten STR_CARGO_PLURAL_FOOD :Iten STR_CARGO_PLURAL_PAPER :Papier STR_CARGO_PLURAL_GOLD :Goud STR_CARGO_PLURAL_WATER :Wetter STR_CARGO_PLURAL_WHEAT :Weet STR_CARGO_PLURAL_RUBBER :Rubber STR_CARGO_PLURAL_SUGAR :Sûker STR_CARGO_PLURAL_TOYS :Boartersguod STR_CARGO_PLURAL_CANDY :Snobbersguod STR_CARGO_PLURAL_COLA :Kola STR_CARGO_PLURAL_COTTON_CANDY :Sûkerspin STR_CARGO_PLURAL_BUBBLES :Bubbels STR_CARGO_PLURAL_TOFFEE :Toffee STR_CARGO_PLURAL_BATTERIES :Batterijen STR_CARGO_PLURAL_PLASTIC :Plestik STR_CARGO_PLURAL_FIZZY_DRINKS :Frisdrinken # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Passazjier STR_CARGO_SINGULAR_COAL :Stienkoal STR_CARGO_SINGULAR_MAIL :Post STR_CARGO_SINGULAR_OIL :Oalje STR_CARGO_SINGULAR_LIVESTOCK :Bist STR_CARGO_SINGULAR_GOODS :Guod STR_CARGO_SINGULAR_GRAIN :Nôt STR_CARGO_SINGULAR_WOOD :Hout STR_CARGO_SINGULAR_IRON_ORE :Iizererts STR_CARGO_SINGULAR_STEEL :Stiel STR_CARGO_SINGULAR_VALUABLES :Kostberheden STR_CARGO_SINGULAR_COPPER_ORE :Kopererts STR_CARGO_SINGULAR_MAIZE :Mais STR_CARGO_SINGULAR_FRUIT :Fruit STR_CARGO_SINGULAR_DIAMOND :Diamant STR_CARGO_SINGULAR_FOOD :Iten STR_CARGO_SINGULAR_PAPER :Papier STR_CARGO_SINGULAR_GOLD :Goud STR_CARGO_SINGULAR_WATER :Wetter STR_CARGO_SINGULAR_WHEAT :Weet STR_CARGO_SINGULAR_RUBBER :Rubber STR_CARGO_SINGULAR_SUGAR :Sûker STR_CARGO_SINGULAR_TOY :Boartersguod STR_CARGO_SINGULAR_CANDY :Snobbersguod STR_CARGO_SINGULAR_COLA :Kola STR_CARGO_SINGULAR_COTTON_CANDY :Sûkerspin STR_CARGO_SINGULAR_BUBBLE :Bûle STR_CARGO_SINGULAR_TOFFEE :Toffee STR_CARGO_SINGULAR_BATTERY :Batterij STR_CARGO_SINGULAR_PLASTIC :Plestik STR_CARGO_SINGULAR_FIZZY_DRINK :Frisdrinken # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} passazjier{P "" s} STR_QUANTITY_COAL :{WEIGHT_LONG} fan stienkoal STR_QUANTITY_MAIL :{COMMA} tas{P "" sen} mei post STR_QUANTITY_OIL :{VOLUME_LONG} fan oalje STR_QUANTITY_LIVESTOCK :{COMMA} In stikmennich bist{P "" en} STR_QUANTITY_GOODS :{COMMA} krat{P "" ten} guod STR_QUANTITY_GRAIN :{WEIGHT_LONG} fan nôt STR_QUANTITY_WOOD :{WEIGHT_LONG} fan hout STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} fan izererts STR_QUANTITY_STEEL :{WEIGHT_LONG} fan stiel STR_QUANTITY_VALUABLES :{COMMA} sek{P "" ken} kostberheden STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} fan kopererts STR_QUANTITY_MAIZE :{WEIGHT_LONG} fan mais STR_QUANTITY_FRUIT :{WEIGHT_LONG} fan fruit STR_QUANTITY_DIAMONDS :{COMMA} sek{P "" ken} diamanten STR_QUANTITY_FOOD :{WEIGHT_LONG} fan iten STR_QUANTITY_PAPER :{WEIGHT_LONG} fan papier STR_QUANTITY_GOLD :{COMMA} sek{P "" ken} goud STR_QUANTITY_WATER :{VOLUME_LONG} fan wetter STR_QUANTITY_WHEAT :{WEIGHT_LONG} fan weet STR_QUANTITY_RUBBER :{VOLUME_LONG} fan rubber STR_QUANTITY_SUGAR :{WEIGHT_LONG} fan sûker STR_QUANTITY_TOYS :{COMMA} boartersguod STR_QUANTITY_SWEETS :{COMMA} sek{P "" ken} snobbersguod STR_QUANTITY_COLA :{VOLUME_LONG} fan kola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} fan sûkerspin STR_QUANTITY_BUBBLES :{COMMA} bûle{P "" n} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} fan toffee STR_QUANTITY_BATTERIES :{COMMA} batterij{P "" en} STR_QUANTITY_PLASTIC :{VOLUME_LONG} fan plestik STR_QUANTITY_FIZZY_DRINKS :{COMMA} frisdrink{P "" en} STR_QUANTITY_N_A :N/B # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PZ STR_ABBREV_COAL :{TINY_FONT}KL STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}FE STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}NT STR_ABBREV_WOOD :{TINY_FONT}HT STR_ABBREV_IRON_ORE :{TINY_FONT}IE STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}KH STR_ABBREV_COPPER_ORE :{TINY_FONT}KE STR_ABBREV_MAIZE :{TINY_FONT}MS STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}IT STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GD STR_ABBREV_WATER :{TINY_FONT}WR STR_ABBREV_WHEAT :{TINY_FONT}NÔ STR_ABBREV_RUBBER :{TINY_FONT}RB STR_ABBREV_SUGAR :{TINY_FONT}SÛ STR_ABBREV_TOYS :{TINY_FONT}BG STR_ABBREV_SWEETS :{TINY_FONT}SG STR_ABBREV_COLA :{TINY_FONT}KL STR_ABBREV_CANDYFLOSS :{TINY_FONT}SS STR_ABBREV_BUBBLES :{TINY_FONT}BU STR_ABBREV_TOFFEE :{TINY_FONT}TF STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}FD STR_ABBREV_NONE :{TINY_FONT}NE STR_ABBREV_ALL :{TINY_FONT}AL # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} passazjier{P "" s} STR_BAGS :{COMMA} sek{P "" ken} STR_TONS :{COMMA} Ton STR_LITERS :{COMMA} liter{P "" s} STR_ITEMS :{COMMA} foarwerp{P "" en} STR_CRATES :{COMMA} kret{P "" ten} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Donkerblau STR_COLOUR_PALE_GREEN :Ljochtgrien STR_COLOUR_PINK :Rôze STR_COLOUR_YELLOW :Giel STR_COLOUR_RED :Read STR_COLOUR_LIGHT_BLUE :Ljochtblauw STR_COLOUR_GREEN :Grien STR_COLOUR_DARK_GREEN :Donkergrien STR_COLOUR_BLUE :Blauw STR_COLOUR_CREAM :Krêm STR_COLOUR_MAUVE :Ljochtpears STR_COLOUR_PURPLE :Pears STR_COLOUR_ORANGE :Oranje STR_COLOUR_BROWN :Brún STR_COLOUR_GREY :Griis STR_COLOUR_WHITE :Wyt # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mpo STR_UNITS_VELOCITY_METRIC :{COMMA} km/o STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hk STR_UNITS_POWER_METRIC :{COMMA}hk STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P "" nen} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter{P "" s} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK}Foer filter namme yn STR_LIST_FILTER_TOOLTIP :{BLACK}Typ in wurd yn om de list te filterjen STR_TOOLTIP_SORT_ORDER :{BLACK}Selektear skiftrjochting (oprinnend/ôfrinnend) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Selektear skiftnoarm STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selekear filternoarm STR_BUTTON_SORT_BY :{BLACK}Skifte op STR_BUTTON_LOCATION :{BLACK}Lokaasje STR_BUTTON_RENAME :{BLACK}op 'e nij neamme STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Slút finster STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Finstertitel - hjirmei kinst it finster ferslepe STR_TOOLTIP_SHADE :{BLACK}Skaad finster - allinne titel balke sjen litte STR_TOOLTIP_DEBUG :{BLACK}Lit NijeGRF debug ynformaasje sjen STR_TOOLTIP_STICKY :{BLACK}Skerm as net-slútber markeare mei de knop 'Slút alle skermen' STR_TOOLTIP_RESIZE :{BLACK}Klik en sleep om skermgrutte oan te passen STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Wikselje tusken lyts/grutter skermgrutte STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Skowbalke - skow de list op/del STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Skowbalke - skow list links/rjochts STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Brek gebouen ensafierder ôf op in stikje lân. Ctrl selektearet it gebiet diagonaal. Shift skeakelt tusken bouwe/taksearje fan de kosten # Query window STR_BUTTON_DEFAULT :{BLACK}Standert STR_BUTTON_CANCEL :{BLACK}Annulearje STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lingte: {NUM} STR_MEASURE_AREA :{BLACK}Gebiet: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lingte: {NUM}{}Hichte ferskil: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Gebied: {NUM} x {NUM}{}Hichte ferskil: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Ynwenners STR_SORT_BY_CAPTION_NAME :{BLACK}Namme STR_SORT_BY_CAPTION_DATE :{BLACK}Datum # These are used in dropdowns STR_SORT_BY_NAME :Namme STR_SORT_BY_PRODUCTION :Produksje STR_SORT_BY_TYPE :Soart STR_SORT_BY_TRANSPORTED :Ferfierd STR_SORT_BY_NUMBER :Nûmer STR_SORT_BY_PROFIT_LAST_YEAR :Fertsjinste lêste jier STR_SORT_BY_PROFIT_THIS_YEAR :Fertsjinste dit jier STR_SORT_BY_AGE :âlderdom STR_SORT_BY_RELIABILITY :Betrouberens STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kapasiteit per soart fracht STR_SORT_BY_MAX_SPEED :Maksimumfaasje STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Wearde STR_SORT_BY_LENGTH :Lingte STR_SORT_BY_LIFE_TIME :Restearjende libbensdagen STR_SORT_BY_TIMETABLE_DELAY :Opûnthâld yn de tsjinstregeling STR_SORT_BY_FACILITY :Stasjonstype STR_SORT_BY_WAITING :Wearde fan wachtsjende fracht STR_SORT_BY_RATING_MAX :Heechste fracht foldwaning STR_SORT_BY_RATING_MIN :Minste fracht foldwanning STR_SORT_BY_ENGINE_ID :Reau ID (klassyke soart) STR_SORT_BY_COST :Kosten STR_SORT_BY_POWER :Krêft STR_SORT_BY_TRACTIVE_EFFORT :Lûkkrêft STR_SORT_BY_INTRO_DATE :Yntroduksjedatum STR_SORT_BY_RUNNING_COST :Bedriuwskosten STR_SORT_BY_POWER_VS_RUNNING_COST :Vermogen/Bedriuwskosten STR_SORT_BY_CARGO_CAPACITY :Frachtkapasiteit STR_SORT_BY_RANGE :Beryk # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausear spul STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}De tiid hâldt gjin skoft (rapper) STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsjes STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Opslaan, ferlitte, ôfslúte STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Lit de kaart sjen, ekstra finster of buordsje list STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Lit in list fan alle stêden sjen STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Lit Subsydzjes sjen STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Lit de list mei stasjons fan it bedriuw sjen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Lit finansjele ynformaasje oer it bedriuw sjen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Lit algemiene bedriuwsynformaasje sjen STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Lit grafyken sjen STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Lit de bedriuwskompetysjetabel sjen STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Betelje de bou fan in nije yndustry STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Lit in list sjen fan de treinen fan dit bedriuw. Ctrl + klik ipent of slût de groep/reau list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Lit in list sjen fan de auto's fan dit bedriuw. Ctrl + Klik ipent of slût de groep/reau list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lit in list sjen fan de skepen fan dit bedriuw. Ctrl + Klik ipent of slût de groep/reau list STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Lit in list sjen fan de fleantúgen fan dit bedriuw. Ctrl+Klik skeakelt tusken de list groep/reau STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ynzoome STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}ûtzoome STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou in spoarwei STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Dike-oanlizze STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bou havens STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bou fleanfjilden STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Iepenje it lânskips ark om it lân te ferheegje/ferleegje, beamplantsje, etsetera STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Lit lûd/musyk finster sjen STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Lit lêste (neis)berjocht sjen / lit berjocht ynstellings sjen STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Lân ynformaasje, console, script debug, screenshots, oer OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skeakelje tusken ark # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Bewarje Lânskips bouer, Lânskips bouer lade, Lânskips bouer ferlitte, slût ôf STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}Iepen TTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Lânskips bouer STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Set it startjier 1 jier efterút STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Set it startjier 1 jier foarút STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klik om it startjier yn te fieren STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Lit de kaart en de stêdenlist sjen STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Lânskip untwikkeling STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Stêd generaasje STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Yndustry generaasje STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Wegenbou STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Beammen plantsje. Shift skeakelt tusken bouwe/taksearje fan de kosten STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Set in buordsje del STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Jou objekt in plak. Shift skeakelt tusken bouwe/taksearje fan de kosten ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Lânskipsbouer bewarje STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Lânskipsbouer lade STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Hichtekaart bewarje STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Hichtekaart lade STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Lânskipsbouer ofslute STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ofslute ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spul opsje STR_SETTINGS_MENU_CONFIG_SETTINGS :wiidweidiche ynstellings STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF ynstellings STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Trochsjoch opsjes STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Stêd nammen sjen litte STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stasjon nammen sjen litte STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Nammen fan kontrôleposten sjen litte STR_SETTINGS_MENU_SIGNS_DISPLAYED :Buordsjes sjen litte STR_SETTINGS_MENU_FULL_ANIMATION :Folsleine animaasje STR_SETTINGS_MENU_FULL_DETAIL :Folsleine detais STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Trochsichtige gebouwen STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Trochsjoch nammen ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Spul opslaan STR_FILE_MENU_LOAD_GAME :Spul lade STR_FILE_MENU_QUIT_GAME :Spul ferlitte STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ofslúte ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Kaart fan 'e wrâld STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra sichtber diel STR_MAP_MENU_SIGN_LIST :Buordsjeslist ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Stêden list STR_TOWN_MENU_FOUND_TOWN :Sticht in stêd ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsydzjes ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Fertsjinstengrafyk STR_GRAPH_MENU_INCOME_GRAPH :Ynkomsten grafyk STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Oflevere fracht grafyk STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Prestaasjeskiednisgrafyk STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Bedriuwswearde grafyk STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Frachtpriize grafyk ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Bedriuwskompetysje tabel STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Wiidweidiche prestaasjewurdearring ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Yndustry list STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Betelje nije yndustry ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Spoarwei bouwe STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektryske spoarwei bouwe STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Monorail bouwe STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev bouwe ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Wegen bouwe STR_ROAD_MENU_TRAM_CONSTRUCTION :Tramwei bouwe ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Wetterwei bouwe ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Fleanfjild bouwe ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Lânskips foarming STR_LANDSCAPING_MENU_PLANT_TREES :Plantsje beammen STR_LANDSCAPING_MENU_PLACE_SIGN :Set buordsje del ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Lûd/musyk ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Lêste (neis)berjocht STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Berjochtenskiednis ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Gebiets ynformaasje STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Skeakel console oan/ût STR_ABOUT_MENU_AI_DEBUG :AI/Gamescript debug STR_ABOUT_MENU_SCREENSHOT :Skermfoto STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Tichtby helje skermfoto STR_ABOUT_MENU_GIANT_SCREENSHOT :Skermfoto fan de hiele wrald STR_ABOUT_MENU_ABOUT_OPENTTD :Oer 'IepenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Flakken rjochtsje ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1st STR_ORDINAL_NUMBER_2ND :2e STR_ORDINAL_NUMBER_3RD :3e STR_ORDINAL_NUMBER_4TH :4e STR_ORDINAL_NUMBER_5TH :5e STR_ORDINAL_NUMBER_6TH :6e STR_ORDINAL_NUMBER_7TH :7e STR_ORDINAL_NUMBER_8TH :8e STR_ORDINAL_NUMBER_9TH :9e STR_ORDINAL_NUMBER_10TH :10e STR_ORDINAL_NUMBER_11TH :11e STR_ORDINAL_NUMBER_12TH :12e STR_ORDINAL_NUMBER_13TH :13e STR_ORDINAL_NUMBER_14TH :14e STR_ORDINAL_NUMBER_15TH :15e STR_ORDINAL_NUMBER_16TH :16e STR_ORDINAL_NUMBER_17TH :17e STR_ORDINAL_NUMBER_18TH :18e STR_ORDINAL_NUMBER_19TH :19e STR_ORDINAL_NUMBER_20TH :20e STR_ORDINAL_NUMBER_21ST :21e STR_ORDINAL_NUMBER_22ND :22e STR_ORDINAL_NUMBER_23RD :23e STR_ORDINAL_NUMBER_24TH :24e STR_ORDINAL_NUMBER_25TH :25e STR_ORDINAL_NUMBER_26TH :26e STR_ORDINAL_NUMBER_27TH :27e STR_ORDINAL_NUMBER_28TH :28e STR_ORDINAL_NUMBER_29TH :29e STR_ORDINAL_NUMBER_30TH :30e STR_ORDINAL_NUMBER_31ST :31e ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mrt STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Mai STR_MONTH_ABBREV_JUN :Jun STR_MONTH_ABBREV_JUL :Jul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Des STR_MONTH_JAN :Jannewaris STR_MONTH_FEB :Febrewaris STR_MONTH_MAR :Maart STR_MONTH_APR :April STR_MONTH_MAY :Maaie STR_MONTH_JUN :Juny STR_MONTH_JUL :July STR_MONTH_AUG :Augustus STR_MONTH_SEP :Septimber STR_MONTH_OCT :Oktober STR_MONTH_NOV :Novimber STR_MONTH_DEC :Desimber ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Kaai STR_GRAPH_KEY_TOOLTIP :{BLACK}Lit kaai foar grafyk sjen STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Fertsjinstengrafyk STR_GRAPH_INCOME_CAPTION :{WHITE}Ynkomstengrafyk STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Stiks fracht ôflevere STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Bedriuwsprestaasjewurdearring (maksimale wurdearring=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Bedriuwswearden STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Frachtpriizen STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dagen ûnderweis STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Betelling foar levering fan 10 ienheiden (of 10,000 liter) fracht oer in ôfstân fan 20 hokjes STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Alles oansette STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Alles ûtsette STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Lit alle soarte fracht sjen yn de opbringsten grafyk STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Lit gjin soarte fracht sjen yn de opbringsten grafyk STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Set grafyk foar frachtsoart oan/út STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Lit detaillearre prestaasje sjen # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Kaai foar bedriuwsgrafiken STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klik hjir om dit bedriuw wol as net sjen te litten op de grafyk # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Bedriuwskompetysjetabel STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inzjenieur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Ferkearslieder STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Transport coördinator STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Rûte Opsichter STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Bestjoerder STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Direkteur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Foarsitter STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :President STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Yndustrieel # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detaillearre prestaasje score STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Sjoch de details oer dit bedriuw ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Reau: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasjons: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. fertsjinste: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. ynkomsten: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. ynkomsten: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Besoarge: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Fracht: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Jild: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lean: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totaal: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}oantal vehikels dy't winst makke hawwe yn it lêste jier. Hjirbij telle Reau STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}In stikmennich koartlyn makke stasjon underdielen. elk underdiel fan in stasjon (û.o. trein stasjon, bus halte, fleanfjild) binne teld, sels all binne se oaninoar plakt as ien stasjon STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}De winst fan it reau mei it leechste ynkomme (fan alle reau alder dan 2 yier) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}In mannich jild dat is fertsjinne yn it fearnsjier mei de leechste winst fan de ôfrûne 12 fearnsjierren STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}In mannich jild dat is fertsjinne yn it fearnsjier mei de heechste winst fan de ôfrûne 12 fearnsjierren STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}In stikmannich guod ôflevere yn de lêste 12 moanne STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Oantal soarten guod ôlevere yn de lêste trije moanne STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Jild dat dit beriuw op de bank stean hat STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Jild dat dit bedriuw lient hat fan de bank STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Folslein oantal punten ut alle mooglike punten # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Jazz Jukebox STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Alles STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Alde Styl STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Nije Styl STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Strjitte STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Oanpast 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Oanpast 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Musyk Folume STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Effekten Folume STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAKS STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Nûmer STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Mjokselje STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programma STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Werom nei foargeand nûmer yn seleksje STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Foarút nei folgjend nûmer yn seleksje STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Stopje musyk ôf te spyljen STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Begjin musyk ôf te spyljen STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Fersleep de balkjes om de lûdssterkte te feroarjen STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selektear programma: 'alle nûmers' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selektear programma: 'âlde stijl' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selektear programma: 'nije stijl' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selektear 'Ezy Strjitte' musyk programma STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selektear programma: 'Oanpast 1 (selsmakke) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selektear programma: 'Oanpast 2 (selsmakke) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Set musyk mjokselje oan/út STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Lit musyk seleksje skerm sjen. STR_ERROR_NO_SONGS :{WHITE}In musykset sûnder nûmers is selektearje. Gjin nûmers sille spile wurden # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musyk Programma Seleksje STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Nûmer Yndex STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programma - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Leech meitsje STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Leechje dit programma (allinnich Oanpast 1 of Oanpast 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik op musyknûmer om ta te foegjen oan dit programma (allinnich Oanpast 1 of Oanpast 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik op musyknûmmer om't út it aktive programma it heljen (allinnich Oanpast1 of Oanpast2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top bedriuwen dy't niveau {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Bedriuwskompetysjetabel yn {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Sakeman STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Undernimmer STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Yndustrialist STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnaat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mongoal STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon fan 'e Ieuw STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} berikt'{STRING}' status! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} fan {COMPANY} berikt '{STRING}' status! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Kaart - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Kontoeren STR_SMALLMAP_TYPE_VEHICLES :Reauen STR_SMALLMAP_TYPE_INDUSTRIES :Yndustryen STR_SMALLMAP_TYPE_ROUTES :Rûtes STR_SMALLMAP_TYPE_VEGETATION :Fegetaasje STR_SMALLMAP_TYPE_OWNERS :Eigners STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Lit de lân kontoeren sjen op de kaart STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Lit reauen sjen op 'e kaart STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Lit yndustrieen sjen op 'e kaart STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Lit transportrûtes sjen op 'e kaart STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Lit fegetaasje sjen op 'e kaart STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Lit lân eigners sjen op 'e kaart STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}klik op in yndustry soart om it finster te slute. Ctrl+klick skeakelje alle typen út útsein de selektearje. Ctrl+klick opnij om alle yndustry soarte oan te setten STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK} klik op in bedriuw om syn eigendom sjen te litten. Ctrl+klick skeakelje alle bedriuwe út útsein de selektearje. Ctrl+klick opnij om alle bedriuwe oan te setten STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Diken STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Treinspoaren STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stasjons/Fleanfjilden/Havens STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Gebouwen/Yndustrieen STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Reauen STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Treinen STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Auto's STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Skepen STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Fleantúgen STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transportrûtes STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Bosk STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Treinstasjon STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Laadplak foar frachtauto STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Busstasjon STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Fleanfjild/Helihaven STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Dok STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Rûch Lân STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gerslân STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Skraal Lân STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Fjilden STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Beammen STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Stiennen STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Wetter STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Gjin eigner STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Stêden STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Yndustrieen STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Woastyn STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Snie STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Set doarpsnammen oan/út op 'e kaart STR_SMALLMAP_CENTER :{BLACK}Set dit plak sintraal yn de kaart STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Alles ûtsette STR_SMALLMAP_ENABLE_ALL :{BLACK}Alles oansette STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Lit hichte sjen STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Lit gjin yndustryen op de kaart sjen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Lit alle yndustryen op de kaart sjen STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Skeakel sjen litte fan hichte oan/ut STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Lit gjin bedriuws eigendomen op de map sjen STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Lit alle bedriuws eigendomen op de map sjen # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Lit lêste (neis)berjocht sjen STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSEARRE * * STR_STATUSBAR_AUTOSAVE :{RED}Automatysk bewarje STR_STATUSBAR_SAVING_GAME :{RED}* * Dit spul bewarje * * # News message history STR_MESSAGE_HISTORY :{WHITE}Berjochten histoarje STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}In list fan Nije neisberjochten STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Berjocht STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste trein komt oan yn {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste bus komt oan yn {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste wein komt oan yn {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste passazjierstram komt oan yn {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste frachttram komt oan yn {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste skip komt oan yn {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Ynwenners fiere feest . . .{}Earste fleanmasine komt oan yn {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Trein ûngemak!{}{COMMA} Elkenien dea troch fjoerbol nei ûngemak STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Auto ûngemak!{}Bestjoerder dea troch fjoerbol nei ûngemak STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Auto ûngemak!{}{COMMA} minsken dea troch fjoerbol nei ûngemak STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Fleantúg dêlstoart!{}{COMMA} deaden troch fjoerbol nei ûngemak op startbaan {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Fleantúg dêlstoart!{}Fleantúg hie net genôch kerosine, {COMMA} deaden troch fjoerbol nei ûngemak STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelin ramp yn {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Auto verneatige troch UFO STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Eksploazje op Oaljefjild yn {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabriek ynstoart yn {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' delkaam yn{TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Stienkoalemyn stoart yn, in stikmennich deaden {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Oerstreaming!{}Op syn minst {COMMA} Lju dy't mist wurde of dea nei Oerstreaming! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportbedriuw yn'e problemen! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} sil ferkeape of fallyt ferkleare wurde wannear prestaasjes net ferbetterje STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transportbedriuw oernimme! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is ferkocht oan {STRING} foar {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Fallyt! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} is slúten troch skuldeaskers en alles is ferkocht! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nij transportbedriuw oprjochte! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} begjint te bouen yn {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} is oernaam troch {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Direkteur) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponsor jild om in nije stêd te bouen{TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nij {STRING} yn oanbou by {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nij {STRING} oanplante {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} ferkondigt driigjende slúting! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Troch problemen mei de oanfier ferkondigt {STRING} driigjende slúting! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Troch in tekoart oan beammen ferkondigt {STRING} driigjende slúting! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Jeropeeske Jild Unie!{}{}Fan no ôf wurdt de euro brûkt om mei te beteljen STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Resesje!{}{}Finansieel eksperts binne bang foar it minste fanwegen de minne ekonomy! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Resesje foarby!{}{}Opgong yn hannel jout fertrouwen oan yndustry en de ekonomy wurdt better! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} hellet produksje oan! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nije koalier fûn by {INDUSTRY}!{}Produksje wurdt ferwachte te ferdûbelje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nije oaljereserves fûn by {INDUSTRY}!{}Produksje wurdt ferwachte te ferdûbelje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Troch ferbetterede metoden wurdt de produskje fan {INDUSTRY} te ferdûbelje! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} Produksje by {INDUSTRY} giet omheech {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK} Produksje fan {INDUSTRY} giet omleech mei 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Troch in insektenpleach by {INDUSTRY}!{}Produksje giet omleech mei 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} produksje fan {INDUSTRY} hat in tebeksetter fan {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn depot STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn depot STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn depot STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} stiet opsteld yn hangar # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hat net genôch opdrachten op e list stean STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hat in leeche opdracht STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hat deselde opdracht STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hat in ferkeard stasjon yn syn opdrachten # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} wurdt âld STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} wurdt tige âld STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} wurdt tige âld en is nedich oan ferfanging ta STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kin gjin paad finne om fierder te gean STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} is it paad kwyt. STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}winst wie it lêste jier{CURRENCY_LONG} STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} is stoppe om't it ombouwen mislearje is STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatysk fernije is mislearje by {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Neie {STRING} is no beskikber! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Neie {STRING} is no beskikber! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} akseptearret gjin {STRING} mear STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} akseptearret gjin {STRING} en {STRING} mear STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} akseptearrret no {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} akseptearret no {STRING} en {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsydzje oanbieding ferrûn:{}{}{STRING} fan {STRING} nei {STRING} sil no net in subsydzje krije. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsydzje ôfrûn:{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt gjin subsydzje mear. STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsydzje oanbean:{}{}Earste{STRING} tsjinst fan {STRING} nei {STRING} krijt in jier subsydzje fan 'e gemeente! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsydzje tawezen oan {STRING}!{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt 50% ekstra betelle foar it kommende jier! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsydzje tawezen oan {STRING}!{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt dûbel betelle foar it kommende jier! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsydzje tawezen oan {STRING}!{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt trijedûbel betelle foar it kommende jier! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsydzje tawezen oan {STRING}!{}{}{STRING} tsjinst fan {STRING} nei {STRING} krijt fjouwerdûbel betelle foar it kommende jier! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Ferkears gaos yn {TOWN}!{}{}Dyk reparaasje betelle troch {STRING} bringt jo 6 moannen duorjend yrritaasje ferkearsdielnimmers! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sjochfinster {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopy nei sjochfinster STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiearje dizze lokaasje fan it haad finster nei dit sjochfinster STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Plakke fan ut it sjochfinster STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}plak de lokaasje fan dit sjochfinster nei it haad finster # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spul Opsjes STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Muntienheid STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Munt ienheid seleksje ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Pûnen (GBP) STR_GAME_OPTIONS_CURRENCY_USD :Dollars (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Yen (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Australyske Shilling (ASS) STR_GAME_OPTIONS_CURRENCY_BEF :Belgyske Frank (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Switserske Frank (SWF) STR_GAME_OPTIONS_CURRENCY_CZK :Tsjechyske Koruna (TSK) STR_GAME_OPTIONS_CURRENCY_DEM :Dútske mark (DÛM) STR_GAME_OPTIONS_CURRENCY_DKK :Deenske Krone (DNK) STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Finske Markka (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franc (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grykse Drachma (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Hongaarse Forint (HOF) STR_GAME_OPTIONS_CURRENCY_ISK :Yslânske Krona (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Italjaanske lire (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Nederlânske gûne (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Noorse Krone (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Poalske Zloty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Roemeenske Leu (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Russyske Rubels (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Sloveenske Tolar (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Sweedske Krona (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turkse Lira (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slowaakske kroan (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Braziljaanse Real (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Estlânske kroan (EEK) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Oanpasse... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mjitienhied STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mjitienhied seleksje ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiaal STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metriesk STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Auto's STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Selektear op hokker side fan 'e dyk de auto's ride moatte STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Lofts ride STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Rjochts ride STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Stêd nammen STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Selektear stijl fan 'e nammen ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Ingelsk (Orisjineel) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Frânsk STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Dúts STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Ingelsk STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latynsk-Amerikaansk STR_GAME_OPTIONS_TOWN_NAME_SILLY :Ût mâlens STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sweedsk STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Hollânsk STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finsk STR_GAME_OPTIONS_TOWN_NAME_POLISH :Poalsk STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slowaaks STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Noorsk STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hongaarsk STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Australysk STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romeensk STR_GAME_OPTIONS_TOWN_NAME_CZECH :Tsjechysk STR_GAME_OPTIONS_TOWN_NAME_SWISS :Switsersk STR_GAME_OPTIONS_TOWN_NAME_DANISH :Deensk STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turks STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italjaansk STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Katalaansk ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatysk bewarje STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Selektear tiid tusken automatyske spul bewarje STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Ut STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Eltse moanne STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Eltse 3 moannen STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Eltse 6 moannen STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Eltse 12 moannen STR_GAME_OPTIONS_LANGUAGE :{BLACK}Taal STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selektearje de interface taal STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Folslein skerm STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Finkje dit fakje oan om Iepen TTD te boartsje yn in folslein skerm STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm resolusje STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selektearje de skerm resolutje om te brûke STR_GAME_OPTIONS_RESOLUTION_OTHER :oars STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermfoto formaat STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Selektearje it skerm formaat om te brûke STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisstik for graphics STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektearje basisstik for graphics om te brûke STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ûntbrekke{P "" nde}/korrupt{P "" e} bestân STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset foar graphics STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basisset foar lûds effekten STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selektearje it basisstik lûds effekten om te brûke STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset lûd STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basisset foar musyk STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selektearje it basisstik lûd om te brûke STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupt{P "" e} bestân{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset muzyk STR_ERROR_FULLSCREEN_FAILED :{WHITE}Folslein skerm mode mislearre # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Oanpast faluta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wikselkoers: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Ferleegje de wikselkoers fan din muntwearde yn ferlyk mei de Ingelske Pûn (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Ferheegje de wikselkoers fan din muntwearde yn ferlyk mei de Ingelske Pûn (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Stel de wikselkoers fan din muntwearde yn ferlyk mei de Ingelske Pûn (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Skiedingteken: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Stel it skiedingteken foar dien muntienheid STR_CURRENCY_PREFIX :{LTBLUE}Foarheaksel: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Stel dien foarrinteken yn foar dien muntienheid STR_CURRENCY_SUFFIX :{LTBLUE}Efterheaksel: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Stel it efterheaksel foar dien muntienheid STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Gea oer nij de Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Gea oer nij de euro: {ORANGE}nea STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Stel it earste jier fan de Euro yn STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gea earder ny de Euro STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Gea letter ny de Euro STR_CURRENCY_PREVIEW :{LTBLUE}Foarbyld: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Pûn (£) yn dien muntienheid STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Feroarje opsje fan oanpaste faluta STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimum oantal tsjinstanders: {ORANGE}{COMMA} STR_NONE :Gjin STR_FUNDING_ONLY :Allinnich finansierje STR_MINIMAL :Minimaal STR_NUM_VERY_LOW :Hiel leech STR_NUM_LOW :Leech STR_NUM_NORMAL :Gewoan STR_NUM_HIGH :Heech STR_NUM_CUSTOM :Oanpast STR_NUM_CUSTOM_NUMBER :Oanpast ({NUM}) STR_VARIETY_NONE :Gjin STR_VARIETY_VERY_LOW :Hiel Leech STR_VARIETY_LOW :Leech STR_VARIETY_MEDIUM :Middel STR_VARIETY_HIGH :Heech STR_VARIETY_VERY_HIGH :Hiel Heech STR_AI_SPEED_VERY_SLOW :Traach STR_AI_SPEED_SLOW :Stadich STR_AI_SPEED_MEDIUM :Gewoan STR_AI_SPEED_FAST :Hurd STR_AI_SPEED_VERY_FAST :Hiel hurd STR_SEA_LEVEL_VERY_LOW :Hiel leech STR_SEA_LEVEL_LOW :Leech STR_SEA_LEVEL_MEDIUM :Gewoan STR_SEA_LEVEL_HIGH :Heech STR_SEA_LEVEL_CUSTOM :Oanpast STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Oanpast ({NUM}%) STR_DISASTER_NONE :Gjin STR_DISASTER_REDUCED :Minder STR_DISASTER_NORMAL :Gewoan STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Hiel Flak STR_TERRAIN_TYPE_FLAT :Flak STR_TERRAIN_TYPE_HILLY :Heuvelachtich STR_TERRAIN_TYPE_MOUNTAINOUS :Bergachtich STR_CITY_APPROVAL_PERMISSIVE :Tajouwend STR_CITY_APPROVAL_TOLERANT :Tolerant STR_CITY_APPROVAL_HOSTILE :Fijannich STR_WARNING_NO_SUITABLE_AI :{WHITE}Gjin brûkbere AIs beskikber...{}jo kinne ferskillende AIs downloade fia it 'Online Content' systeem # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Avansearre ynstellings STR_CONFIG_SETTING_OFF :út STR_CONFIG_SETTING_ON :oan STR_CONFIG_SETTING_DISABLED :Útskeakele STR_CONFIG_SETTING_COMPANIES_OFF :Ût STR_CONFIG_SETTING_COMPANIES_OWN :Eigen bedriuw STR_CONFIG_SETTING_COMPANIES_ALL :Alle bedriuwen STR_CONFIG_SETTING_NONE :Gjin STR_CONFIG_SETTING_ORIGINAL :Orizjiniel STR_CONFIG_SETTING_REALISTIC :Realistysk STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Lofts STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Midden STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Rjochts STR_CONFIG_SETTING_BUILDONSLOPES :It boue op in helling tastean: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :Omkriten oanpasse under gebouen, spoaren, ensafuorthinne tastean (autoslope): {STRING} STR_CONFIG_SETTING_CATCHMENT :Gebrûk meer realistyske hannelsgebieten: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Stjin ferwiderje fan stedelike dyken, brêgen en tunnels ta: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT :Utjefte fan steam/fonken by treinen: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Trein akselerasje model: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Dyk reau akselerasje model: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG :Ferbied treinen en boarten om 90° te swaaien: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :stjin it gearfoegje fan stasjons ta diet net oaniensletten binne: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :gebrûk it ferbettere algoritme: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :Laad reau stadichoan: {STRING} STR_CONFIG_SETTING_INFLATION :Ynflaasje: {STRING} STR_CONFIG_SETTING_SELECTGOODS :Bringst allinich besoargje by in stasjon as der fraach nei is: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Mei de hân te betsjinjen boumetoade foar primêre yndustryen: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Gjin STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Lyk as oare yndustryen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Probearje STR_CONFIG_SETTING_MULTIPINDTOWN :Meardere ferlykbere yndustryen de sted tastean: {STRING} STR_CONFIG_SETTING_SHOWFINANCES :Finansjeel oersjoch oan it ein fan it jier sjen litte: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nije oarder binne standert 'non-stop': {STRING} STR_CONFIG_SETTING_STOP_LOCATION :Nije trein oarders stopje de trein standert {STRING} fan it perron STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :begjin STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midden STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ein STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Opstopping by reau (mei bywurkingen): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Ferskow it skerm ot de mûs op de râne is: {STRING} STR_CONFIG_SETTING_BRIBE :It omkeapjen fan de gemeente tastean: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Eksklusyfe transport rjochten keapje tastean: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Finansierje fan dyk ûnderhâld tastean: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Jild jaan oan oarde bedriuwen tastean: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :Gewichtsfaktor foar vracht om swiere treinen te simulearje: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :Oantal fleanmasine ûngelokken: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Gjin STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Minder STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Gewoan STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Stean ta dat Ienrjochtingsbuordsjes pleatst wurde troch de stêd behearde dyken: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Stean ta dat Ienrjochtingsbuordsjes pleatst wurde troch de tsjinstander behearde dyken: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :Bouwe oanbuorjende stasjons tastean: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :Meitsje it mooglik meardere NewGRF reau sets te brûke: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}As der reau binne kin dizze ynstelling net feroare wurde STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Fleanfjilden ferrinne litte kin net: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Warskôgje as in reau it paad bjuster is: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :Opennij besjen reau' oarders: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Nee STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ja, mar slút stilsteande reau ût STR_CONFIG_SETTING_ORDER_REVIEW_ON :fan alle reau STR_CONFIG_SETTING_WARN_INCOME_LESS :Warskôgje as de fertsjinsten fan in reau negatyf binne: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Reau ferrinne litte kin net: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Âlde reau automatysk ferfange: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :Minimum nedich bedrach by automatysk ferfange: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :Ynwennertal sjen litte by in sted: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Lân generator: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Orizineel STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snie hichte: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rûgens fan it terrein (allinich TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :O sa glêd STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Glêd STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rûch STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :O sa rûch STR_CONFIG_SETTING_TREE_PLACER :Algoritme foar pleatsing beamen: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Gjint STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Orizjineel STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Ferbettere STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotaasje: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Tsjin de klok yn STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Mei de klok mei STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :De hichte fan in plat senario wurdt: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Oanpasse fan de hichte oan de kanten fan de kaart tastean: {STRING} STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Ien as meardere fakjes oan de noardkant binne net leech STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Ien as meardere fakjes oan de kant binne gjin wetter STR_CONFIG_SETTING_SERVICEATHELIPAD :Helikopters automatysk reparearje op helipads: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :ferbin lânskipsarkbalke oan dy fan spoar/dyken/wetter/fleanfjild: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :lân kleur fan spiler op de lytse kaart: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grien STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donker grien STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolet STR_CONFIG_SETTING_REVERSE_SCROLLING :Draai scroll rjochtig om: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sjochfinster floeiend scrolle : {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Diminsje ynformaasje by it gebrûk fan ferskillende bouarken sjen litte: {STRING} STR_CONFIG_SETTING_LIVERIES :Lit alle bedriuws kleuren sjen: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :Gjint STR_CONFIG_SETTING_LIVERIES_OWN :Eigen bedriuw STR_CONFIG_SETTING_LIVERIES_ALL :Alle bedriuwen STR_CONFIG_SETTING_PREFER_TEAMCHAT :Foarkar foar team chat mei : {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funksje fan scrolltsjil: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom kaart STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Scroll kaart STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Ût STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Mûstsjil faasje: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Rjochtsklick emulasje: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ût STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrolle mei loftermûs knop: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Brûk de {STRING} datumformaat foar nammejouwing beware spultsjes STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lang (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :koart (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatysk skoftsje as jo in nij spul starte: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Tastean by pausseare: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :gjin aksjes STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :alle net konstruksje aksjes STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :álles útsein lânskipsoanpassings STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Eltse Aksje STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebrûk de avansearre reau list: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :Gebrûk laad yndikator: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Toan tsjinstregeling yn tikken yn stee fan yn dagen: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Toan oankomst- en ofreistiid yn de tsjinstregeling: {STRING} STR_CONFIG_SETTING_QUICKGOTO :Fluch reau oarders meitsje: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standert spoarsoart (by nij of opslein spul): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Earst beskikber STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Lêst beskikber STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Meast gebrûkt STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Lit reservearre spoar sjen: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :lit bouark akttyf nei gebrûk: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Groepearje útjefte yn bedriuwsfinânsjesskerm: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Ynfrastruktuer bouwurk stilsette wannear't gjin geskikte reau beskikber binne: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :Maksimum oantal treinen per bedriuw: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimum oantal auto's per bedriuw: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimum oantal fleanmasines per bedriuw: {STRING} STR_CONFIG_SETTING_MAX_SHIPS :Maksimum oantal skepen per bedriuw: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Ferbied treinen foar computerspiler: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Ferbied auto's foar computerspiler: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Ferbied Fleantúg foar computerspiler: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Ferbied skippen foar computerspiler: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Stea AIs ta yn multiplayer: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :reperaasje skemas binne yn procenten: {STRING} STR_CONFIG_SETTING_NOSERVICE :Gjin ûnderhald as stikken gean út steat: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Wagon snelheids limiet: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :skeakelje elektryske spoaren út: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Oankomst fan earste reau op stasjon fan spyler: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Oankomst fan earste reau op stasjon fan tsjinstander: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Ûngelokken / rampen: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Bedriuws ynformaasje: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Iepenje fan yndustryen: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Slute fan yndustryen: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Feroarings yn 'e ekonomie: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Produksjeferoarings fan yndustryen betsjinne troch it bedriuw: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Produksjeferoarings fan yndustryen betsjinne troch konkurrint(en): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Produksjeferoarings oare yndustryen: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :Advys / ynformaasje oer bedriuws reauen: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nije reauen: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Feroarings yn akseptearje fan fracht: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsydzjes: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Algemiene ynformaasje: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Ut STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Gearfetting STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Folslein STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Krante verskient yn kleur yn: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :Begjin jier: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jou de ekonomy mear lytse veroarings: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :Stea it keapjen fan oandielen ta: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Bou semafoor seinen foar it jier: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Brûk sein wurkbalk: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Type sein dat standaard boud wurdt: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :blok seinen STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :route seinen STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :ien rjochting seinen STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Gea langs alle sein soarten: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :blok seinen allinech STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :route seinen allinech STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Allegear STR_CONFIG_SETTING_TOWN_LAYOUT :Manier fan dyken bouen foar doarpen en stêden: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :orisjineel STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :bettere dyken STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Soksawat STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Doarpen en stêden meie dyken boue: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Stêden meie spoaroergongen boue: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :Wetten oer maximale lûdesdruk foar fleanfjilden: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :Yn stêd boue meie: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ferbean STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :tastean STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :tastean, oanpast strittenpatroan STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Bouen fan beamen yn it spul: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :gjin {RED}(brekt houtseachmûne) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :allinech in reinwâld STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :oerol STR_CONFIG_SETTING_TOOLBAR_POS :Plak fan de haad wurkbalk: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :Posysje fan statusbar: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT :Maximum oantal non-sticky finsters: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normaal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Tempo fan stêdsútwreiding: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_NONE :gjin STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :langsaam STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :gewoan STR_CONFIG_SETTING_TOWN_GROWTH_FAST :snel STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Hiel snel STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Begjin stêdgrutte fermenigfuldiger: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Helje frjemde stikken dyk fourt by it bouen fan nije routes: {STRING} STR_CONFIG_SETTING_GUI :{ORANGE}Interface STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}konstruksje STR_CONFIG_SETTING_VEHICLES :{ORANGE}Auto's STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjons STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomy STR_CONFIG_SETTING_AI :{ORANGE}Tsjinstânners STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Lit moglikheden sjen STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interaksje STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Seinen STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Fracht ôfhanneling STR_CONFIG_SETTING_AI_NPC :{ORANGE}Computer spilers STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automatysk fernije STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Ûnderhâld STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Route STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Treinen STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Stêd STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}yndustryen STR_CONFIG_SETTING_PATHFINDER_OPF :Orizjiniel STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recommended) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Pathfinder foar treinen: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Pathfinder foar auto's: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Pathfinder foar skippen: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Omkeare fan treinen by seinen: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}veroarje wearde # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nei Spul STR_INTRO_LOAD_GAME :{BLACK}Laad Spul STR_INTRO_PLAY_SCENARIO :{BLACK}Spylje Scenario STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spylje hichtekaart STR_INTRO_SCENARIO_EDITOR :{BLACK}Lânskipferbouer STR_INTRO_MULTIPLAYER :{BLACK}Multispiler STR_INTRO_GAME_OPTIONS :{BLACK}Spul Opsjes STR_INTRO_ADVANCED_SETTINGS :{BLACK}Avansearre ynstellings STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF ynstellings STR_INTRO_ONLINE_CONTENT :{BLACK}Sikje online ynhâld STR_INTRO_QUIT :{BLACK}Ôfslúte STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Begjin in nei spul. Ctrl + klik slaat kaartynstelling oer STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laad in opslein spul STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Begjin in nij spul, mei de hichtekaart as lânskip STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start in nei spul, mei in selsmakke lânskip STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Meitsje in selsmakke lânskip STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Begjin in multiplayer spul STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Selektear 'normaal' lânskip STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Selektear 'iis' lânskip STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Selektear 'subtropysk' lânskip STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Selektear 'boartersguodlân' lânskip STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Lit spul opsjes sjen STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Lit avansearre ynstellings sjen STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Lit NewGRF ynstellings sjen STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Strún ynternet ôf om nije ynhâld del te heljen STR_INTRO_TOOLTIP_QUIT :{BLACK}Slút 'OpenTTD' ôf # Quit window STR_QUIT_CAPTION :{WHITE}Ôfslúte STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Witte jo seker dat jo dit spul ôfslúte wolle en werom gean wolle nei {STRING}? STR_QUIT_YES :{BLACK}Ja STR_QUIT_NO :{BLACK}Nee # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Ferlit Spul STR_ABANDON_GAME_QUERY :{YELLOW}Wolsto echt dit lânskip slúte? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Wolsto echt dit lânskip slúte? # Cheat window STR_CHEATS :{WHITE}Falsk spielje STR_CHEATS_TOOLTIP :{BLACK}Kontrôle finster om te sjen of dast al falsk spiele hast STR_CHEAT_MONEY :{LTBLUE}Stoart jild by{CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spielje as bedriuw: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Gigantyske sloopmodus: {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels Meie inoar krúse: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Grutte fleantúgen stoarte net faak del op lytse fleanfjilden: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gêrs lânskip STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Snie lânskip STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Sub-tropysk lânskip STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Boartersguodlânskip STR_CHEAT_CHANGE_DATE :{LTBLUE}Veroarje tiidstip: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Wizigje dit jier STR_CHEAT_SETUP_PROD :{LTBLUE}Stea oanpassen fan produksje ta: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Nei Kleurenskema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Lit gewoane kleurskemas sjen STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Lit kleurskema sjen fan treinen STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Lit kleurskema sjen fan bussen en frachtauto's STR_LIVERY_SHIP_TOOLTIP :{BLACK}Lit kleurskema sjen fan skippen STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Lit kleurskema sjen fan fleantúgen STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Kies haadkleur fan it selektearre kleurskema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Kies twadde kleur fan it selektearre kleurskema STR_LIVERY_STEAM :Steam motor STR_LIVERY_DIESEL :Diesel motor STR_LIVERY_ELECTRIC :Elektryske motor STR_LIVERY_MONORAIL :Monorail motor STR_LIVERY_MAGLEV :Zweeftrein STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Passazjier wagon (Steam) STR_LIVERY_PASSENGER_WAGON_DIESEL :Passazjier wein (Diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passazjier wein (elektrysk) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Passazjier wein (monorail) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Passazjier wein (Zweeftrein) STR_LIVERY_FREIGHT_WAGON :Fracht wein STR_LIVERY_BUS :Bus STR_LIVERY_TRUCK :Frachtauto STR_LIVERY_PASSENGER_SHIP :Fearboat STR_LIVERY_FREIGHT_SHIP :Frachtskip STR_LIVERY_HELICOPTER :Wjukkelmasjiene STR_LIVERY_SMALL_PLANE :Lyts fleantúg STR_LIVERY_LARGE_PLANE :Grut fleantúg STR_LIVERY_PASSENGER_TRAM :Passazjier Tram STR_LIVERY_FREIGHT_TRAM :Fracht Tram # Face selection window STR_FACE_CAPTION :{WHITE}Gesicthseleksje STR_FACE_CANCEL_TOOLTIP :{BLACK}Nije gesichtseleksje annulearje STR_FACE_OK_TOOLTIP :{BLACK}Akseptear nije gesichtseleksje STR_FACE_MALE_BUTTON :{BLACK}Man STR_FACE_MALE_TOOLTIP :{BLACK}Selektear manlike gesichten STR_FACE_FEMALE_BUTTON :{BLACK}Frou STR_FACE_FEMALE_TOOLTIP :{BLACK}Selektear froulike gesichten STR_FACE_NEW_FACE_BUTTON :{BLACK}Nei Gesicht STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Meistje willekeurich nij gesicht STR_FACE_ADVANCED :{BLACK}Afansjearre STR_FACE_LOAD :{BLACK}Laad STR_FACE_LOAD_TOOLTIP :{BLACK}Laad standaard gesicht STR_FACE_FACECODE :{BLACK}Spielers gesicht noemer STR_FACE_SAVE :{BLACK}Opslaan STR_FACE_EUROPEAN :{BLACK}Jeropeesk STR_FACE_SELECT_EUROPEAN :{BLACK}Selektearje jeropeeske gesichten STR_FACE_AFRICAN :{BLACK}Afrikaans STR_FACE_SELECT_AFRICAN :{BLACK}Selektearje Afrikaanske gesichten STR_FACE_YES :Ja STR_FACE_NO :# STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Snorren en earbellen STR_FACE_HAIR :Hier: STR_FACE_HAIR_TOOLTIP :{BLACK}Veroarje hier STR_FACE_EYECOLOUR :Kleur eagen: STR_FACE_GLASSES :Bril: # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ferbining: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Kies tusken internetspul of yn Lokaal netwurk spul (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Ynternet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Namme fan spieler: STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Namme STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Namme fan dit spul STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Lângrutte STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Jieren STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server wert dast it lêst op spiele hast STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}Spul INFO STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Taal: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Lânskip: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Lângrutte: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Tsjinnerferzje: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Server adres: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Start datum: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER NET BESKIKBER STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER VOL STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}FERKEARDE FERZJE STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Tsjinner tafoegje STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start tsjinner STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start dien eigen tsjinner # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start in spul foar multispilers STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spulnamme: STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Ynternet STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} taskôger{P "" s} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimaal tal taskôgers: # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Alle STR_NETWORK_LANG_ENGLISH :Ingelsk STR_NETWORK_LANG_GERMAN :Dútsk STR_NETWORK_LANG_FRENCH :Frânsk STR_NETWORK_LANG_BRAZILIAN :Braziliaansk STR_NETWORK_LANG_BULGARIAN :Bulgaarsk STR_NETWORK_LANG_CHINESE :Sinees STR_NETWORK_LANG_CZECH :Tsjechysk STR_NETWORK_LANG_DANISH :Deensk STR_NETWORK_LANG_DUTCH :Nederlânsk STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finsk STR_NETWORK_LANG_HUNGARIAN :Hongaarsk STR_NETWORK_LANG_ICELANDIC :Yslânsk STR_NETWORK_LANG_ITALIAN :Italjaansk STR_NETWORK_LANG_JAPANESE :Japansk STR_NETWORK_LANG_KOREAN :Koreaansk STR_NETWORK_LANG_LITHUANIAN :Litousk STR_NETWORK_LANG_NORWEGIAN :Noarsk STR_NETWORK_LANG_POLISH :Poalsk STR_NETWORK_LANG_PORTUGUESE :Portegeesk STR_NETWORK_LANG_ROMANIAN :Roemeensk STR_NETWORK_LANG_RUSSIAN :Russysk STR_NETWORK_LANG_SLOVAK :Slowaaksk STR_NETWORK_LANG_SLOVENIAN :Sloveensk STR_NETWORK_LANG_SPANISH :Spaansk STR_NETWORK_LANG_SWEDISH :Sweedsk STR_NETWORK_LANG_TURKISH :Turksk STR_NETWORK_LANG_UKRAINIAN :Oekraynsk STR_NETWORK_LANG_AFRIKAANS :Afrikaansk STR_NETWORK_LANG_CROATIAN :Kroätysk STR_NETWORK_LANG_CATALAN :Katalaansk STR_NETWORK_LANG_ESTONIAN :Estlânsk STR_NETWORK_LANG_GALICIAN :Galisysk STR_NETWORK_LANG_GREEK :Gryksk STR_NETWORK_LANG_LATVIAN :Letsk ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Prestaasje: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Auto's: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stasjons: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spilers: {WHITE}{STRING} # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Ferbyning meitsje... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Ferbyning meitsje... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Lân delhelje... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} Delhelle oant STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} delhelle # Network company list added strings STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Taskôgje STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nei Bedriuw # Network client list STR_NETWORK_CLIENTLIST_KICK :Skoppe STR_NETWORK_CLIENTLIST_GIVE_MONEY :Jouw jild STR_NETWORK_SERVER :Tsjinner # Network set password # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Mei spielje # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Stjoer STR_NETWORK_CHAT_COMPANY_CAPTION :[Team] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privee] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Yderiin] : STR_NETWORK_CHAT_COMPANY :[Team] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Team] Oan {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privee] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privee] Nei {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Yderiin] {STRING}: {WHITE}{STRING} # Network messages STR_NETWORK_ERROR_SERVER_START :{WHITE}Koe de tsjinner net starte STR_NETWORK_ERROR_CLIENT_START :{WHITE}Koe gjin ferbyning meitsje STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Do stjoerst tevolle opdrachten ny de server ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :algemiene flater STR_NETWORK_ERROR_CLIENT_SAVEGAME :koe it lân net lade STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :joech tevolle opdrachten ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Mooglik ferbinning kwyt STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}De lêste{NUM} secondes {P "" s} is gjin data oankom fan e server # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} der is ien bykommen(Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} is in neie taskôger STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hat syn/har namme oanpast nei {STRING} # Content downloading window STR_CONTENT_TYPE_CAPTION :{BLACK}Type STR_CONTENT_NAME_CAPTION :{BLACK}Namme STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Delhelje STR_CONTENT_DETAIL_NAME :{SILVER}Namme: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Ferzje: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beskriuwing: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Type: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Bestângrutte: {WHITE}{BYTES} # Order of these is important! STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :AI STR_CONTENT_TYPE_SCENARIO :Lânskip STR_CONTENT_TYPE_HEIGHTMAP :Hichtemap # Content downloading progress window STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Freechet bestânen an... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Besich met delheljen fan {STRING} ({NUM} fan {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Delheljen dien STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} fan {BYTES} delhelle ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Delheljen net slagge... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... ferbining kwyt STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... bestân koe net opslein wurde STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Kin it delhelle bestân net útpakke # Transparency settings window # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Ut STR_STATION_BUILD_COVERAGE_ON :{BLACK}Oan STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Aksepteart: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Levert: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_WAYPOINT_CAPTION :{WHITE}Kontrôlepost gearfoegje STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}In apart kontrôlepost bouwe # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoarwei Konstruksje STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Monorail Konstruksje STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev Konstruksje STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoarwei STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bou treindepot (foar bou en ûnderhâld fan treinen) STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Spoar nei kontrôlepost omsette STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bou treinstasjon STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bou spoarseinen STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bou in spoarbrêge STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Bou in spoartunnel STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Set bouen/fuortheljen foar spoaren en stopljochten oan/út # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Treindepot Rjochting STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selektearje treindepot rjochting # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Kontrôlepost STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selectear type kontrôlepost # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Treinstasjon Seleksje STR_STATION_BUILD_ORIENTATION :{BLACK}Rjochting STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Oantal banen STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selektear oantal banen foar treinstasjon STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Stasjon lengte STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selektear lengte fan treinstasjon STR_STATION_CLASS_WAYP :Kontrôleposten # Signal window # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selektear Spoarbrêge STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selektear brêge STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brêge seleksje - klik op de brêge dyst boue wolst STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Hingbrêge, Stiel STR_BRIDGE_NAME_GIRDER_STEEL :Brêge mei balken, Stiel STR_BRIDGE_NAME_CANTILEVER_STEEL :Fakwurkbrêge, Stiel STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hingbrêge, Beton STR_BRIDGE_NAME_WOODEN :Hout STR_BRIDGE_NAME_CONCRETE :Beton STR_BRIDGE_NAME_TUBULAR_STEEL :Buis, Stiel # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Wegenbou STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bou wei STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bou autodepot (om auto's te bouen en te únderhâlden) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bou busstasjon STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bou laadstasjon foar frachtauto's STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Bou autobrêge STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Bou autotunnel STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Wikselje tusken bou en fuortheljen fan dyken # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Autodepot rjochting STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies rjochting foar autodepot # Road vehicle station construction window # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Tsjut wettergebied oan.{}Meitsje in kanaal, of ast' Ctrl op seenivo yndrukst, dan oerstreamt it gebied deromhinne STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Rivier pleatse. # Ship depot construction window # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Haven # Airport toolbar # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Fleanfjild Seleksje STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Patroan {NUM} STR_AIRPORT_SMALL :Lyts STR_AIRPORT_CITY :Stêd STR_AIRPORT_INTERNATIONAL :Ynternasjonaal STR_AIRPORT_COMMUTER :Forins STR_AIRPORT_INTERCONTINENTAL :Ynterkontinentaal STR_AIRPORT_HELIPORT :Helipoart STR_AIRPORT_HELIDEPOT :Helidepot STR_AIRPORT_HELISTATION :Helistasjon STR_AIRPORT_CLASS_SMALL :Lyts fleanfjild STR_AIRPORT_CLASS_LARGE :Grut fleanfjild STR_AIRPORT_CLASS_HUB :Hubfleansjilden STR_AIRPORT_CLASS_HELIPORTS :Helikopter fleanfjild # Landscaping toolbar STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Ferleech in hoekje lân STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Ferheech in hoekje lân STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Keapje lân om letter te brûken # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objekt seleksje STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selektearje te bouen objekt STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selektearje klasse fan it te bouwen objekt STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Besjoch objekt yn it foar STR_OBJECT_BUILD_SIZE :{BLACK}Grutte: {GOLD}{NUM} x {NUM} Flakken STR_OBJECT_CLASS_LTHS :Fjoertoer STR_OBJECT_CLASS_TRNS :Stjoerders # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Beammen STR_PLANT_TREE_TOOLTIP :{BLACK}Selektear soart beam. As it fakje al in beam hat, sil dit mear beamen tafoege fan it mixed soart ûnôfhinklike fan it selekteare soart STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Samar wat beammen STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantsje samar wat beammen yn it lânskip # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Lân Generaasje STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Set rotsen yn it lânskip STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definiearje woastyngebiet.{}Hâld CTRL yndrukt om it fuort te heljen STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Fergrutsje gebiet om te ferheegjen/ferleegjen STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Ferlyts gebiet om te ferheegjen/ferleegjen STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Meitsje samar wat lân STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Set it lânskip werom STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Alle spilerbesittings fan'e kaart fuortsmite STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Lânskip weromsette STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Bisto der wis fan alle spilerbesittings fuort te smiten? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Stêd Generaasje STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nije Stêd STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Bou nije stêd STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Samar in stêd STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Bou samar ergens in stêd STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Stêd namme: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Typ namme fan in stêd STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klik hjire om in stêd namme oan te meitsje STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Samar in namme STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Meitsje in willekeurich nije namme STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Grutte fan in stêd: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Lyts STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Middel STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Grut STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Samar in getal STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Selektear de grutte fan 'e stêd STR_FOUND_TOWN_CITY :{BLACK}Stêd STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Stêden groeien flugger as doarpen{}Ôfhinklik fan ynstellings binne se grutter at se makke wurde STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Strjittenpatroan STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selektear strjittenpatroan foar dit plak STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Orizjiniel STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bettere diken STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 raster STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 raster STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Samar # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Betelje nije yndustry STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostet: {YELLOW}{CURRENCY_LONG} # Industry cargoes window STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Yndustry aksepteare STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Hûzen STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Lit produksjeketting sjen STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Lit it oanbod en akseptaasje fan yndustrie sjen STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link ny de lytse map # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Lân Gebiet Ynformaasje STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Kosten om leech te meitsjen: {LTBLUE}N/B STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Kosten om leech te meitsjen: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Netto omset: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/B STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Eigner: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Dykeigener: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramdykeigener: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Treinsporteigener: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Gemiente: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neat STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Fleanfjild klasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Fleanfjild namme: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Fleanfjild tile namme: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akseptearre fracht: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotsen STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Rûch lân STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Leech lân STR_LAI_CLEAR_DESCRIPTION_GRASS :Gers STR_LAI_CLEAR_DESCRIPTION_FIELDS :Fjilden STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snie STR_LAI_CLEAR_DESCRIPTION_DESERT :Woastine STR_LAI_ROAD_DESCRIPTION_ROAD :Wei STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Wei mei strjitteljochten STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Wei mei beammen oan 'e siden STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Autodepot STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Dyk/spoar krusing # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (yn oanbou) STR_LAI_TREE_NAME_TREES :Beammen STR_LAI_TREE_NAME_RAINFOREST :Reinwâld STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktussen STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Treinstasjon STR_LAI_STATION_DESCRIPTION_AIRPORT :Fleanfjild STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bushalte STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Haven STR_LAI_STATION_DESCRIPTION_BUOY :Boei STR_LAI_STATION_DESCRIPTION_WAYPOINT :Kontrôlepost STR_LAI_WATER_DESCRIPTION_WATER :Wetter # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Spoartunnel STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunnel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Stielen spoarfakwurkbrêge STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Stielen brêge mei balken STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Stielen spoarfakwurkbrêge STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Fersterke betonnen spoarhingbrêge STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Houten spoarbrêge STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betonnen spoarbrêge STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Buis Spoarbrêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Stielen hingbrêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Stielen brêge mei balken STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Stielen fakwurkbrêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Fersterke betonnen hingbrêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Houten brêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betonnen brêge STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Buis Brêge STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Sendmast STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Fjoertoer STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Haadkantoar Bedriuw STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Lân fan bedriuw # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Oer OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Orizjineel copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD-ferzje {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 It OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spul Lade STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Sla Scenario op STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Laad Scenario STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laad Hichtemap STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Hichtekaart bewarje STR_SAVELOAD_HOME_BUTTON :{BLACK}Hjir klikke om nei standert opslach- en laadtriemtafel te gean STR_SAVELOAD_LIST_TOOLTIP :{BLACK}List fan skiven, mappen en bestânen STR_SAVELOAD_DELETE_BUTTON :{BLACK}Fuortsmite STR_SAVELOAD_SAVE_BUTTON :{BLACK}Opslaan STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laad STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Laad selektjeare spul STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spul Details STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Gjin ynformaasje beskikber STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} # World generation STR_MAPGEN_MAPSIZE :{BLACK}Lângrutte: STR_MAPGEN_BY :{BLACK}* # Strings for map borders at game generation STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} # SE Map generation # Map generation progress STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekt meitsje # NewGRF settings STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}útgebreide NewGRF ynformaasje STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}NewGRF bestânen diet brûkt wurde STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}NewGRF bestânen diet net brûkt binne STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Selektearje ynstellings: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filter namme: STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Sla ynstellings op STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Jou dizze ynstellings in namme STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Verwiderje ynstellings STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Verwiderje de selektjere ynstellings STR_NEWGRF_SETTINGS_ADD :{BLACK}Tafoeging STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Foeg de selektjere NewGRF ta oan dyn ynstellings STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Lit sykje ny nije bestanden STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Fernij list my beskikbere NewGRF bestanden STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Fourthelje STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Pleats heger STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Set selektjere NewGRF boppe oan de list STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Pleats leger STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Set selektjere NewGRF ûnderoan de list STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Sykje ynhâld op ynternet STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Ferzje: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}gjin ynformaasje beskikber STR_NEWGRF_SETTINGS_DISABLED :{RED}Útskeakele STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Dat strykt net mei dizze ferzje fan OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Slút STR_NEWGRF_PARAMETERS_RESET :{BLACK}Set werom STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Set alle ynstellings op normale wearde STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :objekt STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :spoar soart # Sprite aligner window STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Folgend flak STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Foarig flak STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Gea ny flak # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Warskôging: {SILVER}{STRING} STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} makke om te brûken tegeare my{STRING} STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Tevolle NewGRF's binne laden STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wie útskeakele troch {STRING} # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Warskôging! # NewGRF status STR_NEWGRF_LIST_NONE :gjin STR_NEWGRF_LIST_ALL_FOUND :Alle bestânnen oanwêzig STR_NEWGRF_LIST_MISSING :{RED}Dêr misse bestânen # NewGRF 'it's broken' warnings # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Feroarje tekst fan buordsje # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Stêden STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Stêdsnammen - klik op de namme om it byld op dy stêd te sintrearen. Ctrl+klick iepent in nij sichtber diel op de stêd lokaasje # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Ynwenners: {ORANGE}{COMMA}{BLACK} Hûzen: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passazjiers lêste moanne: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post lêste moanne: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dizze stêd STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Gemeente STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Lit ynformaasje sjen oer de gemeente STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Feroarje stêdsnamme STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Grutter STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Fergrutsje stêd STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Fuort STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Helje dizze hiele stêd fuort STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Stêdsnamme Feroarje # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} gemeente STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transportbedrieuwwurdearring: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Mooglike aksjes: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}List fan dingen dy'st yn dizze stêd dwaan kinst - klik op in aksje om mear details te besjen STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Doch it STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Fier de opljochte aksje út STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Lytse promoasjekampanje STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Middelgrutte promoasjekampanje STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Grutte promoasjekampanje STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Subsidiearje lokale weiferbouwing STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bou stânbyld fan bedrieuwseigner STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Betelje bouw fan nije gebouwen STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Begjin in lytse advertinsjecampanje, om mear passazjiers en fracht nei dyn transporttsjinsten te lûken.{}Kostet: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Begjin in middelgrutte advertinsjecampanje, om mear passazjiers en fracht nei dyn transporttsjinsten te lûken.{}Kostet: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Begjin in grutte advertinsjecampanje, om mear passazjiers en fracht nei dyn transport tsjinsten te lûken.{}Kostet: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bou in stânbyld ter eare fan jo bedriuw.{}Kostet: {CURRENCY_LONG} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window ### Start of Goal Question button list # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsydzjes STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsydzjes dy't oanbean wurde: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} fan {STRING} nei {STRING}{YELLOW} (foar {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Gjin - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Tsjinsten dy't al subsydzje krije: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} fan {STRING} nei {STRING}{YELLOW} ({COMPANY}{YELLOW}, oant {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik om te sentrearen op yndusty/stêd. Ctrl+klick iepent in nij sichtber diel op yndustry/stêd lokaasje # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Gjin - # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Wachtsjend: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} ûnderweis fan {STATION} ôf) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK} STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aksepteart: {WHITE}{CARGO_LIST} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Ferskriklik STR_CARGO_RATING_VERY_POOR :Hiel Min STR_CARGO_RATING_POOR :Min STR_CARGO_RATING_GOOD :Goed STR_CARGO_RATING_VERY_GOOD :Hiel Goed ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dit stasjon STR_STATION_VIEW_RENAME_STATION_CAPTION :Jow stasjon in nije namme # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dizze kontrôlepost STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Namme fan kontrôlepost oanpasse STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dizze boei STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Namme fan boei oanpasse STR_EDIT_WAYPOINT_NAME :{WHITE}Namme fan kontrôlepost oanpasse # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finansieën {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Utjeften/Ynkomsten STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruksje STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nije faartúchen STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Trein Ûnderhâldskosten STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Lânfartugen ûnderhâldskosten STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Fleantúg Ûnderhâldskosten STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Skip Ûnderhâldskosten STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Ûnderhâld fan besittingen STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Ynkomsten Treinen STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ynkomsten Auto's STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ynkomsten Fleantúgen STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ynkomsten Skepen STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Rinte fan Liening STR_FINANCES_SECTION_OTHER :{GOLD}Oaren STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Totaal: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Jild STR_FINANCES_LOAN_TITLE :{WHITE}Liening STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Lien {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Lien mear jild. Ctrl+Klik om it maksimale te lienen STR_FINANCES_REPAY_BUTTON :{BLACK}Betelje {CURRENCY_LONG} werom STR_FINANCES_REPAY_TOOLTIP :{BLACK}Betelje in diel fan de liening werom. Ctrl+Klik om it maksimale werom te beteljen # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Bedriuwslieder) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Oprjochte: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Kleurenskema: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Fiertúchen: STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Gjin STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Bedriuwswearde: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% besit fan {COMPANY}) STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bou haadkantoar STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Sjoch haadkantoar STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nei Gesicht STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selektear nei gesicht foar de bedriuwslieder STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Kleurenskema STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Feroarje de bedriuwskleuren STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Bedriuwsnamme STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Feroarje de bedriuwsnamme STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Namme fan Direkteur STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Feroarje de namme fan de direkteur STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Keapje 25% oandielen fan bedriuw STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Ferkeapje 25% oandielen fan bedriuw STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Keapje 25% oandielen fan dit bedriuw. Shift+Klik toant ferwachte kosten sûnder oandielen te keapje STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Ferkeapje 25% oandielen fan dit bedriuw. Shift+Klik toant ferwachte kosten sûnder oandielen te ferkeapje STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Bedriuwsnamme STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Namme fan Direkteur STR_BUY_COMPANY_MESSAGE :{WHITE}Wy sykje in transportbedriuw om ús bedriuw oer te nimmen.{}{}Wolsto {COMPANY} foar {CURRENCY_LONG} keapje? # Company infrastructure window # Industry directory STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksje lêste moanne: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportearre) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dizze yndustry STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksje nivo: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nedich: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produseart: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produseart: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Feroaring produksje nivo (percentage, up to 800%) # Vehicle lists STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Fertsjinste dit jier: {CURRENCY_LONG} (ferline jier: {CURRENCY_LONG}) STR_VEHICLE_LIST_SEND_FOR_SERVICING :Stjoer foar ûnderhâldsbeurt STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Stjoer nei depot STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Stjoer nei depot STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Stjoer nei depot STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Stjoer nei hangaar # Group window # Build vehicle window STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Keapje auto STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Keapje auto STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Keapje boat STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Keapje fleantúg STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Keapje ferljochte trein STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Keapje ferljochte auto STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Keapje ferljochte boat STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Keapje ferljochte fleantúg STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Jow in nije namme STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Jow in nije namme STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Jow in nije namme STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Jow in nije namme STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Jow trein in nije namme STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Jow auto in nije namme STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Jow boat type in nije namme STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Jow fleantúg type in nije namme # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}jou nije namme oan depot STR_DEPOT_RENAME_DEPOT_CAPTION :Jou nije namme oan depot STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) # Engine preview window # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :Trein STR_REPLACE_VEHICLE_ROAD_VEHICLE :Auto STR_REPLACE_VEHICLE_SHIP :Skip STR_REPLACE_VEHICLE_AIRCRAFT :Fleanmasine # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ûnderweis nei {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Ûnderweis nei{DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}ûnderhâld yn {DEPOT}, {VELOCITY} # Vehicle stopped/started animations # Vehicle details STR_VEHICLE_NAME_BUTTON :{BLACK}Namme # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} jier{P "" ren} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} jier{P "" ren} ({COMMA}) # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Totale kapasiteit fan dizze trein: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Fracht STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Ynformaasje STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasiteit STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totale Fracht # Vehicle refit STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nije kapasiteit: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}kosten fan werfolje: {RED}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selektearje in ferfiermiddel foar reparaasje. sleep mei de mûs om meardere ferfiermiddels te selekttearjen. Ctrl+klick sil in ferfiermiddel selektearje en de neikommende rige # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Verwiderje alle bestimmingen STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Stop dielde bestimmingen STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Stopje mei dielde bestimmingen STR_ORDER_SHARE :Dielde Bestimmingen # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Lâns {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Oanienwei lâns {WAYPOINT} STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Ymplisyt) STR_ORDER_FULL_LOAD :(Folle fracht) STR_ORDER_FULL_LOAD_ANY :(Folle fracht elke lading) STR_ORDER_NO_LOAD :(Gjin lading) STR_ORDER_UNLOAD :(Afladen en nim lading STR_ORDER_UNLOAD_FULL_LOAD :(Afladen en wacht foar folle fracht) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Afladen en wacht foar elke folle fracht) STR_ORDER_UNLOAD_NO_LOAD :(Oflade en lit leech) STR_ORDER_NO_UNLOAD_NO_LOAD :(net lade of losse) # Time table window STR_TIMETABLE_NOT_TIMETABLEABLE :Reizgje (automatic; timetabled by next manual order) STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis {STRING} mei maksimum {VELOCITY} STR_TIMETABLE_CHANGE_SPEED :{BLACK}Feroarje maksimumfaasje STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Feroarje de maksimum reissnelheid fan de opljochte oarder STR_TIMETABLE_CLEAR_SPEED :{BLACK}Helje maksimum snelheid fuort STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Helje de maksimum reissnelheid fuort fan de opljochte oarder # Date window (for timetable) # AI debug window STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_SETTINGS :{BLACK}Ynstellings STR_AI_DEBUG_CONTINUE :{BLACK}Trjochgean STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Lit debug output fan dizze AI sjen STR_ERROR_AI_NO_AI_FOUND :Gjin geskikte compjûterspiler fûn.{}Disse compjûterspiler is in dummy en docht neat.{}Jo kinne compjûterspilers delhelje fan 'Online Inhâld' ôf. # AI configuration window STR_AI_CONFIG_AI :{SILVER}AIs STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :AI # Available AIs window STR_AI_LIST_CAPTION_AI :AIs STR_AI_LIST_VERSION :{LTBLUE}Ferzje: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Akseptearje STR_AI_LIST_CANCEL :{BLACK}Annulearje # AI Parameters STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CLOSE :{BLACK}Slúte STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Kostet: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Kostet: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Opbringst: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Opbringst: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Dit gjit {CURRENCY_LONG} kosten. STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Dit gjit {CURRENCY_LONG} opbringen. # Saveload messages STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Koe net fan 'e skiif lêze STR_ERROR_GAME_SAVE_FAILED :{WHITE}Opslaan Mislearre{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kin bestân net fuortsmite STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden Mislearre{}{STRING} STR_GAME_SAVELOAD_NOT_AVAILABLE : # Map generation messages # Soundset messages # Screenshot related messages STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermfoto opslein as '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Koe gjin skermfoto meitsje! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Berjocht STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Berjocht fan {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Bûten de kaart STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te ticht by de râne fan 'e kaart STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Net genôch jild - {CURRENCY_LONG} nedich STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Sljocht lân nedich STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Lân rint skean yn 'e ferkearde rjochting STR_ERROR_CAN_T_DO_THIS :{WHITE}Kin dit net dwaan... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebou moat earst fuorthelle wurde STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kin dit gebiet net leech meitsje... STR_ERROR_SITE_UNSUITABLE :{WHITE}... terrein net geskikt STR_ERROR_ALREADY_BUILT :{WHITE}... is al bout STR_ERROR_OWNED_BY :{WHITE}... is fan {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... gebiet is fan in oar bedriuw STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... lânskip kreëar limyt berikt STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... tegel oprom limyt berikt STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} yn it paad STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Net tastean. Pausearre # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} gemiente stiet dit net ta STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} gemeente lit it net ta dat der noch in fleanfjild bout wurd yn dizze stêd # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Kin it lân hjir net ferheegje... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Kin it lân hjir net ferleegje... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Utgrave soe tunnel beskeadigje STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Lân is al op seenivo STR_ERROR_TOO_HIGH :{WHITE}Te heech # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kin bedriuwsnamme net feroarje... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Kin namme fan direkteur net feroarje STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... maksmaal tasteane liening is {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kin net mear jild liene STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... gjin liening werom te betelje STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} nedich STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kin liening net werombetelje... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kin bedriuw net keapje... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kin gjin haadkantoar boue STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kin net 25% oandielen fan dit bedriuw keapje... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Kin net 25% oandielen fan dit bedriuw ferkeapje... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Kin gjin stêd bouwe STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Kin de namme net feroarje... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Kin hjir gjin stêd boue... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Kin stêd net grutter meitsje STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... te ticht by de râne fan 'e map STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... te ticht by in oare stêd STR_ERROR_TOO_MANY_TOWNS :{WHITE}... te folle stêden STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... der is gjin romte mear op'e kaart STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... Gjin geskikt plak fûn foar in stânbield in dizze stêd # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... te folle yndustryen STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kin hjir gjin {STRING} boue... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kin dit type yndustry hjir net boue... STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... stêd moat earst bout wurde STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}.. mei mar ien per stêd wêze STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... kin allinnich bout wurde yn stêden mei 1200 ynwenners of mear STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... kin allinnich yn in reinwâld bout wurde STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... kin allinnich yn in woastine bout wurde STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... kin allinnich yn in stêd bout wurde STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... kin allinnich yn lege plakken bout wurde STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... kin allinich pleatse wurde by de rân fan'e kaart STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... bosk kin allinich boppe snieline boud wurde # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kin hjir gjin treinstasjon boue... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Kin hjir gjin busstasjon boue... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kin hjir gjin frachtweinstasjon boue... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Ferbynt mear dan ien stasjon STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... stasjon is te grut STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Te folle stasjons STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Te folle bushaltes STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Te folle frachtstasjons STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Te ticht by in oar stasjon STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Te ticht by in oare haven STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Te ticht by in oar fleanfjild STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Kin namme fan stasjon net feroarje # Station destruction related errors STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Weistop moat earst fuorthelle wurde STR_ERROR_THERE_IS_NO_STATION :{WHITE}... Dêr is gjin statsjon STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Treinspoar moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Bushalte moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Frachtstasjon moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Frachttramstasjon moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Haven moat earst fuorthelle wurde STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Fleanfjild moat earst fuorthelle wurde # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Foeget mear dan ien kontrôlepost gear STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Te ticht by in oar kontrôlepost STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kin jirre gjin kontrôlepost bouwe... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kin hjir gjin boei delsette... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kin de namme fan it kontrôlepost net oanpasse... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kin kontrôlepost jirre net fuorthelje... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Kontrôlepost op it spoar earst ferwiderje STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boei yn it paad STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boei yn gebrûk trjoch in oar bedriuw # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kin hjir gjin trein depot boue... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kin hjir gjin auto depot boue... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kin hjir gjin skipdepot boue... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}kin depot gjin nije namme jaan... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... Trein moat stopt wêze yn depot STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... moat stopt wêze yn depot STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... moat stopt wêze yn hangar STR_ERROR_TRAIN_TOO_LONG :{WHITE}Trein te lang STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kin gjin route fine nei lokaal depot STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kin lokaal depot net fine # Autoreplace related errors STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(jild limiet) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Spoar kombinaasje net mooglik STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Stopljocht moat earst fuorthelle wurde STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Spoar is net geskikt STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Spoar moat der earst wei STR_ERROR_CROSSING_DISALLOWED :{WHITE}In oergong is net tastien foar dit type spoar STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kin hjir gjin stopljochten boue... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kin hjir gjin spoarwei boue STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kin hjir gjin spoar fuorthelje... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kin hjir gjin stopljochten fuorthelje STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kin stopljochten net omboue... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... dêr is gjin spoar STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... Dêr binne gjin stopljochten # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Wei moat earst fuorthelle wurde STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kin hjir gjin wei boue... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kin hjir gjin tramspoar boue... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kin hjir gjin wei fuorthelje... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kin hjir gjin tramspoar fuorthelje STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... dêr is gjin wei STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... dêr is gjin tramspoar # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kin hjir gjin kanaal boue... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Kin hjir gjin slûs boue... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Kin hjir gjin rivier pleatse STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... moat bout wurde op it wetter STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... Kin net op it wetter bouwe STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Kanaal moat earst fuorthelle wurde STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Kin hjir gjin akwadukt boue... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... hjir stiet al in beam STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... ferkearde grûn foar dizze beam STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Kin hjir gjin beam plantsje # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Kin hjir gjin brêge boue... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Brêge moat earst fuorthelle wurde STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Begjin en ein kin net op itselde plak wêze STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Útein fan de brêge is net op deselde hichte STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Begjin en ein moatte op ien lijn wêze STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... beide úteinden fan'e brêge moatte op lân lizze STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brêge te lang STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Brêge einiget bûten e râne fan e map # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kin hjir gjin tunnel boue... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Plak net geskikt foar tunnelyngong STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Tunnel mat earst fuorthelle wurde STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Oare tunnel yn't plak STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kin net grûn foar it oare ein fan'e tunnel ôfgraavje STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunnel te lang # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... te folle objekten STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kin objekt net boue STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Objekt yn't plak STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... haadkantoar bedriuw yn't plak STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kin dit stikje lân net keapje... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... it is al fan dy! # Group related errors STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Kin de namme net feroarje... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kin dielde auto's oan groep ta foege... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Trein yn it paad STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Auto yn it paad STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Skip yn it paad STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Fleantúg yn it paad STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Kin auto net ombouwe STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Kin skip net oanpasse STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}kin fleantúg net veroarje STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Kin trein net neamje... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Kin auto net neamje... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Kin skip net neamje... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Kin fleantúg net neamje... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Kin trein net stoppe/starte... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kin wein net stoppe/starte... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Kin skip net stoppe/starte... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kin fleantúg net stoppe/starte... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kin trein net nei depot stjoere... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kin wein net nei depot stjoere... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kin skip net nei depot stjoere... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kin fleantúg net nei hangar stjoere... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kin gjin trein keapje... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kin gjin auto keapje... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kin gjin boat keapje... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kin gjin fleantúg keapje... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kin trein type gjin nije namme joan... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kin wein type gjin nije namme jaan... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kin skiptype gjin nije namme jaan... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kin fleantúgtype gjin nije namme jaan... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kin trein net ferkeapje... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kin wein net ferkeapje... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kin skip net ferkeapje... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kin fleantúg net ferkeapje... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Trein is net beskikber STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Wein is net beskikber STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Skip is net beskikber STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Fleantúg is net beskikber STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Te folle fartugen yn it spul STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kin tiid tusken ûnderhâldsbeurten net feroarje... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... wein verneatige # Specific vehicle errors STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kin rydrjochting fan de trein net oanpasse STR_ERROR_TRAIN_START_NO_POWER :Trein hat gjin stream STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Wein kin net omkeare STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Fleantúg is oan it fleanen # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Gjin romte mear foar opdrachten STR_ERROR_TOO_MANY_ORDERS :{WHITE}Te folle opdrachten STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Kin gjin opdracht der tusken yn sette STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Kin disse opdracht net fourthelje... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kin dizze opdracht net veroarje... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kin dizze opdracht net verpleatse... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Kin disse opdracht net oerslaan... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Kin de selektjere opdracht net oerslaan... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... wein kin net alle stasjons berikke STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... auto kin net op it stasjon komme STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... ien fan de dielde autos kin net op dat stasjon komme STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Kin bestimmingen net diele STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Kin net stopje my dielde bestimmingen STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Kin bestimming net oernimme STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... te fier fan lêste bestimming # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kin gjin tsjinst meitsje STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Auto's kinne allinech op stations wachtsje STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Disse auto kin net stoppe op dit stasjon # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... te folle buordsjes STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Kin hjir gjin buordsje delsette STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Kin tekst net feroarje... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Kin stopljocht net foarthelje... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Spul basjeare op Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Heech kantoargebou STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Kantoargebou STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Lyts flatgebou STR_TOWN_BUILDING_NAME_CHURCH_1 :Tsjerke STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Grut kantoargebou STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Doarpshûzen STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Stânbyld STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fontein STR_TOWN_BUILDING_NAME_PARK_1 :Park STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Kantoargebou STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Winkels en kantoaren STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modern kantoargebou STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Warehûs STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Kantoargebou STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Alde hûzen STR_TOWN_BUILDING_NAME_COTTAGES_1 :Húskes STR_TOWN_BUILDING_NAME_HOUSES_1 :Hûzen STR_TOWN_BUILDING_NAME_FLATS_1 :Flatgebouwen STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Grut kantoargebou STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Winkels en kantoaren STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Winkels en kantoaren STR_TOWN_BUILDING_NAME_THEATER_1 :Teater STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Kantoargebouwen STR_TOWN_BUILDING_NAME_HOUSES_2 :Hûzen STR_TOWN_BUILDING_NAME_CINEMA_1 :Bioskoop STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Winkelsintrum STR_TOWN_BUILDING_NAME_IGLOO_1 :Yglo STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipi's STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Teepothûs STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Sparbaarch ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Stienkoalmyn STR_INDUSTRY_NAME_POWER_STATION :Enerzjysintrale STR_INDUSTRY_NAME_SAWMILL :Seachmûle STR_INDUSTRY_NAME_FOREST :Bosk STR_INDUSTRY_NAME_OIL_REFINERY :Oaljefjild STR_INDUSTRY_NAME_OIL_RIG :Boarplatform STR_INDUSTRY_NAME_FACTORY :Fabryk STR_INDUSTRY_NAME_PRINTING_WORKS :Drukkerij STR_INDUSTRY_NAME_STEEL_MILL :Steelfabriek STR_INDUSTRY_NAME_FARM :Buorkerij STR_INDUSTRY_NAME_COPPER_ORE_MINE :Koperertsmyn STR_INDUSTRY_NAME_OIL_WELLS :Oaljebron STR_INDUSTRY_NAME_BANK :Bank STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Itenfabryk STR_INDUSTRY_NAME_PAPER_MILL :Papierfabryk STR_INDUSTRY_NAME_GOLD_MINE :Goudmyn STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bank STR_INDUSTRY_NAME_DIAMOND_MINE :Diamantmyn STR_INDUSTRY_NAME_IRON_ORE_MINE :IIzerertsmyn STR_INDUSTRY_NAME_FRUIT_PLANTATION :Fruitplantaazje STR_INDUSTRY_NAME_RUBBER_PLANTATION :Rubberplantaazje STR_INDUSTRY_NAME_WATER_SUPPLY :Wetterbron STR_INDUSTRY_NAME_WATER_TOWER :Wettertoer STR_INDUSTRY_NAME_FACTORY_2 :Fabryk STR_INDUSTRY_NAME_FARM_2 :Buorkerij STR_INDUSTRY_NAME_LUMBER_MILL :Houtseachmûne STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Sûkerspinnebosk STR_INDUSTRY_NAME_CANDY_FACTORY :Snobbersguodfabryk STR_INDUSTRY_NAME_BATTERY_FARM :Batterijebuorkerij STR_INDUSTRY_NAME_COLA_WELLS :Kolabron STR_INDUSTRY_NAME_TOY_SHOP :Boartersguodwinkel STR_INDUSTRY_NAME_TOY_FACTORY :Boartersguodfabryk STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Plestikfontein STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Frisdrinkenfabryk STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Bubbelgenerator STR_INDUSTRY_NAME_TOFFEE_QUARRY :Toffemyn STR_INDUSTRY_NAME_SUGAR_MINE :Sûkermyn ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Net neamt STR_SV_TRAIN_NAME :Trein {COMMA} STR_SV_ROAD_VEHICLE_NAME :Lânfartúg {COMMA} STR_SV_SHIP_NAME :Skip {COMMA} STR_SV_AIRCRAFT_NAME :Fleantúg {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Noard STR_SV_STNAME_SOUTH :{STRING} Sûd STR_SV_STNAME_EAST :{STRING} East STR_SV_STNAME_WEST :{STRING} West STR_SV_STNAME_CENTRAL :{STRING} Sintraal STR_SV_STNAME_TRANSFER :{STRING} Transferium STR_SV_STNAME_HALT :{STRING} Halte STR_SV_STNAME_VALLEY :{STRING} buorkerij STR_SV_STNAME_HEIGHTS :{STRING} Hichten STR_SV_STNAME_WOODS :{STRING} Hout STR_SV_STNAME_LAKESIDE :{STRING} Wetterkant STR_SV_STNAME_EXCHANGE :{STRING} Oerlaadstation STR_SV_STNAME_AIRPORT :{STRING} Fleanfjild STR_SV_STNAME_OILFIELD :{STRING} Oaljefjild STR_SV_STNAME_MINES :{STRING} Mijn STR_SV_STNAME_DOCKS :{STRING} Haven STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Fjildspoar STR_SV_STNAME_SIDINGS :{STRING} Bûtenspoar STR_SV_STNAME_BRANCH :{STRING} Sydspoar STR_SV_STNAME_UPPER :Boppenste {STRING} STR_SV_STNAME_LOWER :Leger {STRING} STR_SV_STNAME_HELIPORT :{STRING} Heliport STR_SV_STNAME_FOREST :{STRING} Bosk STR_SV_STNAME_FALLBACK :{STRING} Stasjon #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Steam) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elektrysk) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passazjierswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Postwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Stienkoalwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oaljetenker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Feewein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Guodswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Nôtwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Houtwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Izerertswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Stielwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Ferstarke Wein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Itenswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Papierwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Koperertswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Wettertenker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Fruitwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Rubberwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Sûkerwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Sûkerspinwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Toffeewein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Bubbelwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Kolatenker STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Snobbersguodswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Boartersguodswein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Batterijwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Frisdrinkenwein STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Plestikwein STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passazjierswein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Postwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Steinkoalwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oaljetenker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Feewein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Guodswein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Nôtwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Houtwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Izerertswein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Stielwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Ferstarke Wein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Itenswein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Papierwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Koperertswein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Wettertenker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Fruitwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Rubberwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Sûkerwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Sûkerspinwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Toffeewein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Bubbelwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Kolatenker STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Snobbersguodswein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Boartersguodwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Batterijwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Frisdrinkenwein STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Plestikwein STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Elektrysk) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passazjierswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Postwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Stienkoalwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oaljetenker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Feewein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Guodswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Nôtwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Houtwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Izerertswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Stielwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Ferstarke Wein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Itenswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Papierwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Koperertswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Wettertenker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Fruitwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Rubberwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Sûkerwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Sûkerspinwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Toffeewein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Bubbelwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Kolatenker STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Snobbersguodswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Boartersguodswein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Batterijwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Frisdrinkenwein STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Plestikwein STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :MPS Regal Bus STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Hereford Leopard Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Foster Bus STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Koaltruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Koaltruck STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Koaltruck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Posttruck STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Reynard Posttruck STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Perry Posttruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover Posttruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught Posttruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow Posttruck STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe Oaljetenker STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster Oaljetenker STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry Oaljetenker STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott Feetruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl Feetruck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster Feetruck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Balogh Guodtruck STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Craighead Guodtruck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Goss Guodtruck STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Hereford Nôttruck STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Thomas Nôttruck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Goss Nôttruck STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Witcombe Houttruck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Foster Houttruck STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Moreland Houttruck STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :MPS Izerertstruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Uhl Izerertstruck STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Chippy Izerertstruck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Balogh Stieltruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Uhl Stieltruck STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Kelling Stieltruck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Balogh bewapene truck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Uhl bewapene truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Foster bewapene truck STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Foster Itentruck STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Perry Itentruck STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Chippy Itentruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Uhl Papierwein STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Balogh Papierwein STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :MPS Papierwein STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :MPS Koperertstruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Uhl Koperertstruck STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Goss Koperertstruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Uhl Wettertenker STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Balogh Wettertenker STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :MPS Wettertenker STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Balogh Fruittruck STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Uhl Fruittruck STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Kelling Fruittruck STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Balogh Rubberwein STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Uhl Rubberwein STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :RMT Rubberwein STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :MightyMover Sûkertruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Powernaught Sûkertruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Wizzowow Sûkertruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :MightyMover Colatruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Powernaught Colatruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Wizzowow Colatruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :MightyMover Sûkerspintruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Powernaught Sûkerspintruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Wizzowow Sûkerspintruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :MightyMover Toffeetruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Powernaught Toffeetruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Wizzowow Toffeetruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :MightyMover Boartersguodtruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Powernaught Boartersguodtruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Wizzowow Boartersguodtruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :MightyMover Snobbersguodstruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Powernaught Snobbersguodstruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Wizzowow Snobbersguodstruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :MightyMover Batterijtruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Powernaught Batterijtruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Wizzowow Batterijtruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :MightyMover Frisdrinktruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Powernaught Frisdrinktruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Wizzowow Frisdrinktruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :MightyMover Plestiktruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Powernaught Plestiktruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Wizzowow Plestiktruck STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :MightyMover Buorltruck STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Powernaught Buorltruck STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Wizzowow Buorltruck STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :MPS Oaljetenker STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :CS-Inc. Oaljetenker STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :MPS Passazjiersboat STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP Passazjiersboat STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300 Sweefmobiel STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Passazjier Fearboat STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passazjier Fearboat STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Guod boat STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Guod boat STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Guod boat STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Guod boat STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Lofttaksy A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Lofttaksy A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Lofttaksy A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Lofttaksy A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :Lofttaksy A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerfleantûg M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario Helikopter STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 Helikopter STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut Helikopter ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Boei STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boei #{COMMA} STR_FORMAT_COMPANY_NUM :(Bedriuw {COMMA}) STR_FORMAT_GROUP_NAME :Klobke {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} Kontrôlepost STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Kontrôlepost #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Trein Depot STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Trein Depot #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} garage STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Garage #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Skip Depot STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Skip Depot #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :ûnbekind stasjon STR_DEFAULT_SIGN_NAME :Buordsje STR_COMPANY_SOMEONE :immen STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Taskôger, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/marathi.txt0000644000000000000000000025070512246102556017737 0ustar rootroot##name Marathi ##ownname मराठी ##isocode mr_IN ##plural 0 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x044e ##grflangid 0x11 # $Id: marathi.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(अनामिक स्ट्रींग) STR_JUST_NOTHING :काहीही नाही # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :प्रवासी STR_CARGO_PLURAL_COAL :कोळसा STR_CARGO_PLURAL_MAIL :पत्रे STR_CARGO_PLURAL_OIL :तेल STR_CARGO_PLURAL_LIVESTOCK :पशुधन STR_CARGO_PLURAL_GOODS :वस्तू STR_CARGO_PLURAL_GRAIN :धान्य STR_CARGO_PLURAL_WOOD :लाकूड STR_CARGO_PLURAL_IRON_ORE :लोहखनिज STR_CARGO_PLURAL_STEEL :पोलाद STR_CARGO_PLURAL_VALUABLES :मौल्यवान वस्तु STR_CARGO_PLURAL_COPPER_ORE :ताम्रखनिज STR_CARGO_PLURAL_MAIZE :मका STR_CARGO_PLURAL_FRUIT :फळे STR_CARGO_PLURAL_DIAMONDS :हिरे STR_CARGO_PLURAL_FOOD :खाद्य STR_CARGO_PLURAL_PAPER :कागद STR_CARGO_PLURAL_GOLD :सोने STR_CARGO_PLURAL_WATER :पाणी STR_CARGO_PLURAL_WHEAT :गहू STR_CARGO_PLURAL_RUBBER :रबर STR_CARGO_PLURAL_SUGAR :साखर STR_CARGO_PLURAL_TOYS :खेळणी STR_CARGO_PLURAL_CANDY :मिठाई STR_CARGO_PLURAL_COLA :शीतपेये STR_CARGO_PLURAL_COTTON_CANDY :म्हातारीचा कापूस STR_CARGO_PLURAL_BUBBLES :बुडबुडे STR_CARGO_PLURAL_TOFFEE :टॉफी STR_CARGO_PLURAL_BATTERIES :बॅटरी STR_CARGO_PLURAL_PLASTIC :प्लॅस्टीक STR_CARGO_PLURAL_FIZZY_DRINKS :फसफसणारी पेये # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :प्रवासी STR_CARGO_SINGULAR_COAL :कोळसा STR_CARGO_SINGULAR_MAIL :पत्र STR_CARGO_SINGULAR_OIL :तेल STR_CARGO_SINGULAR_LIVESTOCK :पशुधन STR_CARGO_SINGULAR_GOODS :वस्तू STR_CARGO_SINGULAR_GRAIN :धान्य STR_CARGO_SINGULAR_WOOD :लाकूड STR_CARGO_SINGULAR_IRON_ORE :लोह खनिज STR_CARGO_SINGULAR_STEEL :पोलाद STR_CARGO_SINGULAR_VALUABLES :मौल्यवान वस्तु STR_CARGO_SINGULAR_COPPER_ORE :ताम्र खनिज STR_CARGO_SINGULAR_MAIZE :मका STR_CARGO_SINGULAR_FRUIT :फळ STR_CARGO_SINGULAR_DIAMOND :हिरा STR_CARGO_SINGULAR_FOOD :अन्न STR_CARGO_SINGULAR_PAPER :कागद STR_CARGO_SINGULAR_GOLD :सोने STR_CARGO_SINGULAR_WATER :पाणी STR_CARGO_SINGULAR_WHEAT :गहू STR_CARGO_SINGULAR_RUBBER :रबर STR_CARGO_SINGULAR_SUGAR :साखर STR_CARGO_SINGULAR_TOY :खेळणी STR_CARGO_SINGULAR_CANDY :मिठाई STR_CARGO_SINGULAR_COLA :कोला STR_CARGO_SINGULAR_COTTON_CANDY :कँडी फ्लास STR_CARGO_SINGULAR_BUBBLE :बुडबुडा STR_CARGO_SINGULAR_TOFFEE :टॉफी STR_CARGO_SINGULAR_BATTERY :बॅटरी STR_CARGO_SINGULAR_PLASTIC :प्लॅस्टिक STR_CARGO_SINGULAR_FIZZY_DRINK :फसफसणारं पेय # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} प्रवासी STR_QUANTITY_COAL :{WEIGHT_LONG} कोळसा STR_QUANTITY_MAIL :{COMMA} पिश{P वी व्या} टपाल STR_QUANTITY_OIL :{VOLUME_LONG} तेल STR_QUANTITY_LIVESTOCK :{COMMA} पशुधन STR_QUANTITY_GOODS :{COMMA} खो{P कं की} वस्तू STR_QUANTITY_GRAIN :{WEIGHT_LONG} धान्य STR_QUANTITY_WOOD :{WEIGHT_LONG} लाकूड STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} लोहखनिज STR_QUANTITY_STEEL :{WEIGHT_LONG} पोलाद STR_QUANTITY_VALUABLES :{COMMA} पिश{P वी व्या} किंमती ऐवज STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} अशद्ध तांबे STR_QUANTITY_MAIZE :{WEIGHT_LONG} मका STR_QUANTITY_FRUIT :{WEIGHT_LONG} फळं STR_QUANTITY_DIAMONDS :{COMMA} पिश{P वी व्या} हिरे STR_QUANTITY_FOOD :{WEIGHT_LONG} अन्न STR_QUANTITY_PAPER :{WEIGHT_LONG} कागद STR_QUANTITY_GOLD :{COMMA} पिश{P वी व्या} सोनं STR_QUANTITY_WATER :{VOLUME_LONG} पाणी STR_QUANTITY_WHEAT :{WEIGHT_LONG} गहू STR_QUANTITY_RUBBER :{VOLUME_LONG} रबर STR_QUANTITY_SUGAR :{WEIGHT_LONG} साखर STR_QUANTITY_TOYS :{COMMA} खेळ{P णं णी} STR_QUANTITY_SWEETS :{COMMA} गोड पदार्थांच्या पिशव्या STR_QUANTITY_COLA :{VOLUME_LONG} कोला STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} म्हातारीचा कापूस STR_QUANTITY_BUBBLES :{COMMA} बुडबु {P डा डे} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} टॉफी STR_QUANTITY_BATTERIES :{COMMA} बॅट{P री ऱ्या} STR_QUANTITY_PLASTIC :{VOLUME_LONG} प्लॅस्टिक STR_QUANTITY_FIZZY_DRINKS :{COMMA} फसफसणारी पे{P य ये} STR_QUANTITY_N_A :उपलब्ध नाही # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}प्र STR_ABBREV_COAL :{TINY_FONT}को STR_ABBREV_MAIL :{TINY_FONT}टपाल STR_ABBREV_OIL :{TINY_FONT}तेल STR_ABBREV_LIVESTOCK :{TINY_FONT}पशु STR_ABBREV_GOODS :{TINY_FONT}वस्तू STR_ABBREV_GRAIN :{TINY_FONT}धान्य STR_ABBREV_WOOD :{TINY_FONT}ला STR_ABBREV_IRON_ORE :{TINY_FONT}लोह STR_ABBREV_STEEL :{TINY_FONT}पो STR_ABBREV_VALUABLES :{TINY_FONT}मौल्य STR_ABBREV_COPPER_ORE :{TINY_FONT}तांबे STR_ABBREV_MAIZE :{TINY_FONT}मका STR_ABBREV_FRUIT :{TINY_FONT}फळ STR_ABBREV_DIAMONDS :{TINY_FONT}हिरे STR_ABBREV_FOOD :{TINY_FONT}अन्न STR_ABBREV_PAPER :{TINY_FONT}का STR_ABBREV_GOLD :{TINY_FONT}सोनं STR_ABBREV_WATER :{TINY_FONT}पाणी STR_ABBREV_WHEAT :{TINY_FONT}गहू STR_ABBREV_RUBBER :{TINY_FONT}रबर STR_ABBREV_SUGAR :{TINY_FONT}सा STR_ABBREV_TOYS :{TINY_FONT}खे STR_ABBREV_SWEETS :{TINY_FONT}गोड STR_ABBREV_COLA :{TINY_FONT}कोला STR_ABBREV_CANDYFLOSS :{TINY_FONT}म्हाता STR_ABBREV_BUBBLES :{TINY_FONT}बु STR_ABBREV_TOFFEE :{TINY_FONT}टॉ STR_ABBREV_BATTERIES :{TINY_FONT}बॅ STR_ABBREV_PLASTIC :{TINY_FONT}प्लॅ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}फस STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}सर्व # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} प्रवासी STR_BAGS :{COMMA} पिश{P वी व्या} STR_TONS :{COMMA} टन STR_LITERS :{COMMA} लिटर STR_ITEMS :{COMMA} STR_CRATES :{COMMA} खो{P कं की} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :गडद निळा STR_COLOUR_PALE_GREEN :फिकट हिरवा STR_COLOUR_PINK :गुलाबी STR_COLOUR_YELLOW :पिवळा STR_COLOUR_RED :लाल STR_COLOUR_LIGHT_BLUE :फिकट निळा STR_COLOUR_GREEN :हिरवा STR_COLOUR_DARK_GREEN :गडद हिरवा STR_COLOUR_BLUE :निळा STR_COLOUR_CREAM :दुधी STR_COLOUR_MAUVE :फिक्का जांभळा STR_COLOUR_PURPLE :जांभळा STR_COLOUR_ORANGE :केशरी STR_COLOUR_BROWN :तपकिरी STR_COLOUR_GREY :करडा STR_COLOUR_WHITE :पांढरा # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_WEIGHT_SHORT_SI :{COMMA} किग्रॅ STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} टन STR_UNITS_WEIGHT_LONG_SI :{COMMA} किलो STR_UNITS_VOLUME_LONG_METRIC :{COMMA} लिटर # Common window strings STR_BUTTON_LOCATION :{BLACK}जागा STR_BUTTON_RENAME :{BLACK}नाव बदला STR_TOOLTIP_CLOSE_WINDOW :{BLACK}खिडकी बंद करा STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}खिडकीचं नाव - खिडकी हलवण्यासाठी हे पकडून ओढा. STR_TOOLTIP_SHADE :{BLACK}गवाक्ष - फक्त नावाची पट्टी दाखवा STR_TOOLTIP_RESIZE :{BLACK}खिडकीचा आकार बदलण्यासाठी पकडून ओढा STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}खिडकीचा आकार लहान/मोठा करा STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}जमिनीच्या एका चौकोनावरील इमारत नष्ट करणे इ. Ctrl ने तिरका प्रदेश निवडता येतो. Shift नं इमारती किंवा किंमतीचा अंदाज दिसणं चालू/बंद होतं. # Query window STR_BUTTON_CANCEL :{BLACK}रद्द करा STR_BUTTON_OK :{BLACK}ठीक आहे # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}लांबी: {NUM} STR_MEASURE_AREA :{BLACK}लांबीरुंदी : {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}लांबी: {NUM}{}उंचीतील फरक: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}क्षेत्रफळ: {NUM} x {NUM}{}उंचीतील फरक: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}लोकसंख्या STR_SORT_BY_CAPTION_NAME :{BLACK}नाव STR_SORT_BY_CAPTION_DATE :{BLACK}दिनांक # These are used in dropdowns STR_SORT_BY_NAME :नाव STR_SORT_BY_PRODUCTION :निर्मिती STR_SORT_BY_TYPE :प्रकार STR_SORT_BY_NUMBER :क्रमांक STR_SORT_BY_PROFIT_LAST_YEAR :गेल्या वर्षीचा नफा STR_SORT_BY_PROFIT_THIS_YEAR :चालू वर्षीचा नफा STR_SORT_BY_AGE :वय STR_SORT_BY_RELIABILITY :विश्वासार्हता STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :मालाच्या प्रकारानुसार एकूण मालवहन क्षमता STR_SORT_BY_MAX_SPEED :सर्वोच्च वेग STR_SORT_BY_MODEL :मोडल STR_SORT_BY_VALUE :किंमत STR_SORT_BY_LENGTH :लांबी STR_SORT_BY_LIFE_TIME :उर्वरित आयुर्मान STR_SORT_BY_TIMETABLE_DELAY :वेळापत्रकीय अंतर STR_SORT_BY_FACILITY :स्थानक प्रकार STR_SORT_BY_COST :किंमत STR_SORT_BY_POWER :ताकद STR_SORT_BY_RUNNING_COST :चालवण्याचा खर्च STR_SORT_BY_POWER_VS_RUNNING_COST :ताकद/चालवण्याचा खर्च STR_SORT_BY_CARGO_CAPACITY :मालवाहन क्षमता # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK} खेळ स्थगित करा STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}पर्याय STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}शहरांची यादी दाखवा STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}कंपनीच्या स्थानकांची यादी दाखवा STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}कंपनीची आर्थिक माहिती दाखवा STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}कंपनीची सर्वसाधारण माहिती दाखवा STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}आलेख दाखवा STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}द्श्य मोठे करा STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}द्श्य छोटे करा STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK} लोहमार्ग बांधा STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}रस्ते बांधा STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}बोटींचा धक्का बांधा STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}विमानतळ बांधा STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}आवाज/संगीत खिडकी दाखवा # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}ओपेन टीटीडी STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}सुरुवातीची तारीख एक वर्ष मागे न्या STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}सुरुवातीची तारीख एक वर्ष पुढे न्या STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}सुरुवातीचं वर्ष पुरवण्यासाठी क्लिक करा STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}नकाशा, शहरांची यादी दाखवा STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}रस्तेबांधणी STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}चिन्ह लावा ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :बंद करा ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :खेळाचे पर्याय STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF पर्याय STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :पारदर्शकता पर्याय STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :शहरांची नावे दाखवा STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :स्थानकांची नावे दाखवा STR_SETTINGS_MENU_SIGNS_DISPLAYED :चिन्ह दाखवा STR_SETTINGS_MENU_FULL_DETAIL :पूर्ण तपशील STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :इमारती पारदर्शक STR_SETTINGS_MENU_TRANSPARENT_SIGNS :स्थानकांची नावे पारदर्शक ############ range ends here ############ range for file menu starts STR_FILE_MENU_QUIT_GAME :खेळ सोडून द्या STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :बाहेर पडा ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :वैश्विक नकाशा STR_MAP_MENU_SIGN_LIST :चिन्हांची यादी ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :शहरांची यादी STR_TOWN_MENU_FOUND_TOWN :सापडलेलं शहर ############ range ends here ############ range for subsidies menu starts ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_INCOME_GRAPH :आवक आलेख ############ range ends here ############ range for company league menu starts ############ range ends here ############ range for industry menu starts ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :लोहमार्ग बांधणी STR_RAIL_MENU_ELRAIL_CONSTRUCTION :विद्युत लोहमार्ग बांधणी STR_RAIL_MENU_MONORAIL_CONSTRUCTION :मोनोरेल बांधणी STR_RAIL_MENU_MAGLEV_CONSTRUCTION :मॅग्लेव बांधणी ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :रस्तेबांधणी STR_ROAD_MENU_TRAM_CONSTRUCTION :ट्रामगाडी बांधणी ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :जलमार्ग बांधणी ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :विमानतळ बांधणी ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_PLANT_TREES :झाडे लावा STR_LANDSCAPING_MENU_PLACE_SIGN :चिन्ह लावा ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :ध्वनी/संगीत ############ range ends here ############ range for message menu starts STR_NEWS_MENU_MESSAGE_HISTORY_MENU :निरोपांचा इतिहास ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :जागाची माहिती STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_ABOUT_OPENTTD :ओपेन टीटीडी बद्दल ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :प्रथम STR_ORDINAL_NUMBER_2ND :द्वितीय STR_ORDINAL_NUMBER_3RD :तृतीय STR_ORDINAL_NUMBER_4TH :चौथे ############ range for days ends ############ range for months starts STR_MONTH_JAN :जानेवारी STR_MONTH_FEB :फेब्रूवारी STR_MONTH_MAR :मार्च STR_MONTH_APR :एप्रिल STR_MONTH_MAY :मे STR_MONTH_JUN :जून STR_MONTH_JUL :जुलै STR_MONTH_AUG :ऑगस्ट STR_MONTH_SEP :सप्टेंबर STR_MONTH_OCT :ऑक्टोबर STR_MONTH_NOV :नोव्हेंबर STR_MONTH_DEC :डिसेंबर ############ range for months ends # Graph window STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} # Graph key window # Company league window STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' # Performance detail window STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% ############ Those following lines need to be in this order!! ############ End of order list # Music window STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" # Playlist window STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}नक्षा - {STRING} STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}रस्ते STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}विमान STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}वन STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}बस स्थानक STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}झाड STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}पाणी STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}वाळवंट STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}बर्फ STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} # Status bar messages STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - # News message history STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(व्यवस्थापक) # Start of order review system # DON'T ADD OR REMOVE LINES HERE # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} जुनी होत आहे STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} खूप जुनी होत आहे STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} हरवली आहे STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} # Extra view window # Game options window ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :पौंड (£) STR_GAME_OPTIONS_CURRENCY_USD :डोल्लर ($) STR_GAME_OPTIONS_CURRENCY_EUR :युरो (€) STR_GAME_OPTIONS_CURRENCY_JPY :येन (¥) STR_GAME_OPTIONS_CURRENCY_ATS :ओस्त्रिअन शिल्लिंग (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :बेल्गीअन फ्रांक (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :स्विस फ्रांक (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :झेख कोरुना (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :दोइश्मार्क (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :डेनिष क्रोन (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :पेसेटा (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :फिन्निश मार्क्का (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :फ्रांक (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :ग्रीक द्रक्मा (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :हंगेरियन फोरिन्त (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :आईसलेंडीक क्रोना (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :ईटेलिअन लिरा (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :डच गिल्डर (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :नोर्वेगीअन क्रोन (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :पोलिश झ्लोटी (PLN) STR_GAME_OPTIONS_CURRENCY_RUR :रशिअन रुबल्स (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :स्लोवेनिअन तोलार (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :स्वीडीश क्रोना (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :तुर्की लिरा (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :स्लोवाक कोरुना (SKK) ############ end of currency region ############ start of measuring units region ############ end of measuring units region ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_FRENCH :फ्रेंच STR_GAME_OPTIONS_TOWN_NAME_GERMAN :जर्मन STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :स्वीडीश STR_GAME_OPTIONS_TOWN_NAME_DUTCH :डच STR_GAME_OPTIONS_TOWN_NAME_FINNISH :फिन्निश STR_GAME_OPTIONS_TOWN_NAME_POLISH :पोलिश STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :स्लोवाक STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :नोर्वेगीअन STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :हंगेरियन STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :ओस्त्रिअन STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :रोमेनिअन STR_GAME_OPTIONS_TOWN_NAME_CZECH :झेख STR_GAME_OPTIONS_TOWN_NAME_SWISS :स्विस STR_GAME_OPTIONS_TOWN_NAME_DANISH :डेनिष STR_GAME_OPTIONS_TOWN_NAME_TURKISH :तुर्की STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :ईटेलिअन ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :दर महिने STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :दर ३ महिने STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :दर ६ महिने STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :दर १२ महिने STR_GAME_OPTIONS_LANGUAGE :{BLACK}भाषा STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य # Custom currency window STR_SUBSIDY_X1_5 :x१.५ STR_SUBSIDY_X2 :x२ STR_SUBSIDY_X3 :x३ STR_SUBSIDY_X4 :x४ # Advanced settings window STR_CONFIG_SETTING_NONE :नाही STR_CONFIG_SETTING_ORIGINAL :मुळ STR_CONFIG_SETTING_REALISTIC :खरेखुरे STR_CONFIG_SETTING_SMOKE_AMOUNT :वाहनांचा धूर/ठिणग्या: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE : वाहन हरवल्यास सूचित करा: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :कोणतीही कृती नाही STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :सर्व कृत्या STR_CONFIG_SETTING_STATUSBAR_POS :स्टेटसबार वरचं स्थान: {STRING} # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}ओपेन टीटीडी {REV} # Quit window # Supported OSes # Abandon game # Cheat window STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}चालू वर्ष बदला # Livery window STR_LIVERY_SMALL_PLANE :लहान विमान STR_LIVERY_LARGE_PLANE :मोठं विमान # Face selection window STR_FACE_CAPTION :{WHITE}चेहरा निवड STR_FACE_MALE_BUTTON :{BLACK}पुरूष STR_FACE_MALE_TOOLTIP :{BLACK}पुरूष चेहेरा निवडा STR_FACE_FEMALE_BUTTON :{BLACK}स्त्री STR_FACE_FEMALE_TOOLTIP :{BLACK}स्त्री चेहेरा निवडा STR_FACE_NEW_FACE_BUTTON :{BLACK}नवीन चेहरा STR_FACE_SIMPLE :{BLACK}सुटसुटीत STR_FACE_SIMPLE_TOOLTIP :{BLACK}सुटसुटीत चेहेरा निवड STR_FACE_FACECODE :{BLACK}खेळाडू चेहेरा क्र. STR_FACE_EUROPEAN :{BLACK}युरोपिअन STR_FACE_SELECT_EUROPEAN :{BLACK}युरोपिअन चेहेरा निवडा STR_FACE_AFRICAN :{BLACK}अफ्रिकन STR_FACE_SELECT_AFRICAN :{BLACK}आफ्रिकन चेहेरा निवडा STR_FACE_YES :हो STR_FACE_NO :नाही STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}मिशी अथवा कर्णफुले असू द्या STR_FACE_HAIR :केस: STR_FACE_HAIR_TOOLTIP :{BLACK}केस बदला STR_FACE_EYEBROWS :भुवया: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}भुवया बदला STR_FACE_EYECOLOUR :डोळ्यांचा रंग: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}डोळ्यांचा रंग बदला STR_FACE_GLASSES :चष्मा: STR_FACE_GLASSES_TOOLTIP :{BLACK}चष्मा असू द्या STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}चष्मा बदला STR_FACE_NOSE :नाक: STR_FACE_NOSE_TOOLTIP :{BLACK}नाक बदला STR_FACE_LIPS :ओठ: STR_FACE_MOUSTACHE :मिश्या: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}ओठ किंवा मिश्या बदला STR_FACE_CHIN :हनुवटी: STR_FACE_CHIN_TOOLTIP :{BLACK}हनुवटी बदला # Network server list STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}नाव STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}तिथी STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}वर्ष STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}भाषा: {WHITE}{STRING} # Start new multiplayer server # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ENGLISH :इंग्रजी STR_NETWORK_LANG_GERMAN :जर्मन STR_NETWORK_LANG_FRENCH :फ्रेंच STR_NETWORK_LANG_BRAZILIAN :ब्रज़िलिअन STR_NETWORK_LANG_BULGARIAN :बल्जेरिअन STR_NETWORK_LANG_CHINESE :चिनी STR_NETWORK_LANG_CZECH :झेख STR_NETWORK_LANG_DANISH :डेनिश STR_NETWORK_LANG_DUTCH :डच STR_NETWORK_LANG_ESPERANTO :एस्परांतो STR_NETWORK_LANG_FINNISH :फिन्निश STR_NETWORK_LANG_HUNGARIAN :हंगेरियन STR_NETWORK_LANG_ICELANDIC :आईसलेंडीक STR_NETWORK_LANG_JAPANESE :जपानी STR_NETWORK_LANG_POLISH :पोलिश STR_NETWORK_LANG_PORTUGUESE :पोर्चुगीस STR_NETWORK_LANG_ROMANIAN :रोमेनिअन STR_NETWORK_LANG_RUSSIAN :रशिअन STR_NETWORK_LANG_SLOVAK :स्लोवेक STR_NETWORK_LANG_SLOVENIAN :स्लोवेनिअन STR_NETWORK_LANG_SPANISH :स्पेनिश STR_NETWORK_LANG_SWEDISH :स्वीडिश STR_NETWORK_LANG_TURKISH :तुर्की STR_NETWORK_LANG_UKRAINIAN :युक्रेनिअन STR_NETWORK_LANG_AFRIKAANS :आफ्रिकान्स STR_NETWORK_LANG_CROATIAN :क्रोएशिअन STR_NETWORK_LANG_GREEK :ग्रीक ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}गेल्या वर्ष्याची कमाई: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}स्थानक: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} # Network connecting window ############ Leave those lines in this order!! ############ End of leave-in-this-order STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}आत्तापर्यंत {BYTES} डाऊनलोड झाल्या आहेत. STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} डाऊनलोड झालं आहे # Network company list added strings # Network client list # Network set password # Network company info join/password # Network chat # Network messages ############ Leave those lines in this order!! ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE} संपर्क तुटला असण्याची शक्यता STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE} गेल्या {NUM} सेकंदांत सर्वरकडून काहीच माहिती आलेली नाही # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! ############ End of leave-in-this-order # Content downloading window # Order of these is important! # Content downloading progress window # Content downloading error messages # Transparency settings window # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) # Join station window # Rail construction toolbar # Rail depot construction window # Rail waypoint construction window # Rail station construction window # Signal window # Bridge selection window STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_WOODEN :लाकडी # Road construction toolbar # Road depot construction window # Road vehicle station construction window # Waterways toolbar (last two for SE only) # Ship depot construction window # Dock construction window # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}विमानतळ # Airport construction window STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}ठेवणी {NUM} STR_AIRPORT_SMALL :लहान STR_AIRPORT_INTERNATIONAL :आंतरराष्ट्रीय STR_AIRPORT_CLASS_SMALL :लहान विमानतळ STR_AIRPORT_CLASS_LARGE :मोठं विमानतळ # Landscaping toolbar # Object construction window # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}झाड # Land generation window (SE) # Town generation window (SE) STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}लहान STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}मोठं # Fund new industry window STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}खर्च: {YELLOW}{CURRENCY_LONG} # Industry cargoes window STR_INDUSTRY_CARGOES_HOUSES :{WHITE}घरे # Land area window STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}विमानतळाच नाव: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/८ {STRING}) # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_GRASS :गवत STR_LAI_CLEAR_DESCRIPTION_DESERT :वाळवंट STR_LAI_ROAD_DESCRIPTION_ROAD :रस्ता STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :प्रकाशदिव्यांसह रस्ता # Houses come directly from their building names STR_LAI_TREE_NAME_TREES :झाड STR_LAI_STATION_DESCRIPTION_AIRPORT :विमानतळ STR_LAI_STATION_DESCRIPTION_BUS_STATION :बस स्थानक STR_LAI_WATER_DESCRIPTION_WATER :पाणी STR_LAI_WATER_DESCRIPTION_RIVER :नदी # Industries come directly from their industry names # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}ओपेन टीटीडी बद्दल # Save/load game/scenario STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} मोकळ STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} # World generation STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_DATE :{BLACK}तिथी: # Strings for map borders at game generation STR_MAPGEN_BORDER_WATER :{BLACK}पाणी STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} # SE Map generation # Map generation progress STR_GENERATION_PROGRESS :{WHITE}{NUM}% पूर्ण STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} # NewGRF settings # NewGRF parameters window STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :वस्तू # Sprite aligner window # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} # NewGRF related 'general' warnings # NewGRF status # NewGRF 'it's broken' warnings # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO_ABBREV :?? # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window # Sign window # Town directory window STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_POPULATION :{BLACK}वैश्विक लोकसंख्या: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}लोकसंख्या: {ORANGE}{COMMA}{BLACK} घर: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} आवश्यक # Town local authority window STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window ### Start of Goal Question button list # Subsidies window # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :धक्कादायक STR_CARGO_RATING_VERY_POOR :अतिशय दरिद्र STR_CARGO_RATING_POOR :दरिद्र STR_CARGO_RATING_MEDIOCRE :साधारण STR_CARGO_RATING_GOOD :चांगल STR_CARGO_RATING_VERY_GOOD :अतिशय चांगल STR_CARGO_RATING_EXCELLENT :अव्वल STR_CARGO_RATING_OUTSTANDING :उत्कृष्ट ############ range for rating ends # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} # Finances window STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}खर्च/कमाई STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}विमान चालवण्याचा खर्च STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}विमानाची कमाई STR_FINANCES_SECTION_OTHER :{GOLD}अन्य STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}संपूर्ण: STR_FINANCES_LOAN_TITLE :{WHITE}कर्ज STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(व्यवस्थापक) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}समारंभ दिवस: {WHITE}{NUM} STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}वाहने: STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} विमान STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}नवीन चेहरा STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}व्यवस्थापका साठी नवीन चेहरा निवडा STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}व्यवस्थापकाचे नाव STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}व्यवस्थापकाच नाव बदला STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :व्यवस्थापकाचे नाव # Company infrastructure window # Industry directory STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}लाग्त: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}लाग्त: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}लाग्त: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}बनव्त: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}बनव्त: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends # Vehicle lists STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} विमान STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :उपलब्ध वाहन STR_VEHICLE_LIST_AVAILABLE_SHIPS :उपलब्ध जहाज STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :उपलब्ध विमान # Group window STR_GROUP_ALL_ROAD_VEHICLES :सर्व रस्त्यावरचे वाहन STR_GROUP_ALL_SHIPS :सर्व जहाज STR_GROUP_ALL_AIRCRAFTS :सर्व विमान STR_GROUP_REMOVE_ALL_VEHICLES :सगळे वाहने काढा # Build vehicle window STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :नवीन रस्त्यावरचे वाहन STR_BUY_VEHICLE_SHIP_CAPTION :नवीन जहाज STR_BUY_VEHICLE_AIRCRAFT_CAPTION :नवीन विमान STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}किंमत: {GOLD}{CURRENCY_LONG}{BLACK} वजन: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}गती: {GOLD}{VELOCITY}{BLACK} शक्ती: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}गती: {GOLD}{VELOCITY} STR_PURCHASE_INFO_COST :{BLACK}किंमत: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}वजन: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}किंमत: {GOLD}{CURRENCY_LONG}{BLACK} गती: {GOLD}{VELOCITY} # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) # Engine preview window STR_ENGINE_PREVIEW_AIRCRAFT :विमान STR_ENGINE_PREVIEW_SHIP :जहाज # Autoreplace window STR_REPLACE_VEHICLE_SHIP :जहाज STR_REPLACE_VEHICLE_AIRCRAFT :विमान # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view # Vehicle stopped/started animations # Vehicle details # The next two need to stay in this order # Extra buttons for train details windows # Vehicle refit # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}सर्व आदेश रद्द करा # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(आपोआप) # Time table window STR_TIMETABLE_CHANGE_TIME :{BLACK}वेळ बदला # Date window (for timetable) # AI debug window # AI configuration window STR_AI_CONFIG_CHANGE_NONE : # Available AIs window # AI Parameters STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}किंमत: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}किंमत: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}कमाई: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}कमाई: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}अंदाजी किंमत: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}अंदाजी कमाई: {CURRENCY_LONG} # Saveload messages # Map generation messages # Soundset messages # Screenshot related messages # Error message titles # Generic construction errors STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE} स्थगित असताना परवानगी नाही. # Local authority errors # Levelling errors # Company related errors # Town related errors # Industry related errors # Station construction related errors # Station destruction related errors # Waypoint related errors # Depot related errors # Autoreplace related errors # Rail construction errors # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}अधी रस्ता काढला पाहिजे # Waterway construction errors # Tree related errors # Bridge related errors STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}पूल नकाशाबाहेर जाईल. # Tunnel related errors # Object related errors # Group related errors # Generic vehicle errors # Specific vehicle errors # Order related errors # Timetable related errors # Sign related errors # Translatable comment for OpenTTD's desktop shortcut # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_HOTEL_1 :हॉटेल STR_TOWN_BUILDING_NAME_STATUE_1 :पुतळा STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :गुदाम STR_TOWN_BUILDING_NAME_THEATER_1 :नाट्यगृह STR_TOWN_BUILDING_NAME_STADIUM_2 :क्रीडाभूमी STR_TOWN_BUILDING_NAME_OFFICES_1 :सरकारी खाते STR_TOWN_BUILDING_NAME_HOUSES_2 :घराणे STR_TOWN_BUILDING_NAME_CINEMA_1 :सिनेमा STR_TOWN_BUILDING_NAME_IGLOO_1 :इग्लू ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :कोळशाची खाण STR_INDUSTRY_NAME_POWER_STATION :विद्युतनिर्मिती प्रकल्प STR_INDUSTRY_NAME_FOREST :वन STR_INDUSTRY_NAME_OIL_REFINERY :तेलशुद्धीकरण प्रकल्प STR_INDUSTRY_NAME_OIL_RIG :तेलविहीर STR_INDUSTRY_NAME_FACTORY :कारखाना STR_INDUSTRY_NAME_PRINTING_WORKS :छापखाना STR_INDUSTRY_NAME_STEEL_MILL :पोलाद कारखाना STR_INDUSTRY_NAME_FARM :शेत STR_INDUSTRY_NAME_COPPER_ORE_MINE :अशुद्ध तांब्याची खाण STR_INDUSTRY_NAME_OIL_WELLS :तेलविहिरी STR_INDUSTRY_NAME_BANK :बॅंक STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :अन्न निर्मिती प्रकल्प STR_INDUSTRY_NAME_PAPER_MILL :कागद गिरणी STR_INDUSTRY_NAME_GOLD_MINE :सोन्याची खाण STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :बॅंक STR_INDUSTRY_NAME_DIAMOND_MINE :हिऱ्यांची खाण STR_INDUSTRY_NAME_IRON_ORE_MINE :लोहखनिजाची खाण STR_INDUSTRY_NAME_FRUIT_PLANTATION :फळे लागवड क्षेत्र STR_INDUSTRY_NAME_RUBBER_PLANTATION :रबर लागवड क्षेत्र STR_INDUSTRY_NAME_WATER_SUPPLY :पाणी पुरवठा केंद्र STR_INDUSTRY_NAME_WATER_TOWER :पाण्याची टाकी STR_INDUSTRY_NAME_FACTORY_2 :कारखाना STR_INDUSTRY_NAME_FARM_2 :शेत STR_INDUSTRY_NAME_LUMBER_MILL :लाकूडगिरणी STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :म्हातारीच्या कापसाचं वन STR_INDUSTRY_NAME_CANDY_FACTORY :गोड पदार्थांचा कारखाना STR_INDUSTRY_NAME_BATTERY_FARM :बॅटऱ्यांचं शेत STR_INDUSTRY_NAME_COLA_WELLS :कोला विहीर STR_INDUSTRY_NAME_TOY_SHOP :खेळण्यांचं दुकान STR_INDUSTRY_NAME_TOY_FACTORY :खेळण्यांचा कारखाना STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :प्लॅस्टिकचं कारंजं STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :फसफसणाऱ्या पेयांचा कारखाना STR_INDUSTRY_NAME_BUBBLE_GENERATOR :बुडबुडा निर्माण प्रकल्प STR_INDUSTRY_NAME_SUGAR_MINE :साखरेची खाण ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :निनावी STR_SV_TRAIN_NAME :रेल्वे {COMMA} STR_SV_ROAD_VEHICLE_NAME :रस्त्यावरील वाहन {COMMA} STR_SV_SHIP_NAME :जहाज {COMMA} STR_SV_AIRCRAFT_NAME :विमान {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} उत्तर STR_SV_STNAME_SOUTH :{STRING} दक्षिण STR_SV_STNAME_EAST :{STRING} पूर्व STR_SV_STNAME_WEST :{STRING} पश्चिम STR_SV_STNAME_CENTRAL :{STRING} केंद्रीय STR_SV_STNAME_HALT :{STRING} थांबा STR_SV_STNAME_VALLEY :{STRING} दरी STR_SV_STNAME_WOODS :{STRING} वन विभाग STR_SV_STNAME_LAKESIDE :{STRING} तळेकाठ STR_SV_STNAME_AIRPORT :{STRING} विमानतळ STR_SV_STNAME_OILFIELD :{STRING} तेल प्रकल्प STR_SV_STNAME_MINES :{STRING} खाण STR_SV_STNAME_DOCKS :{STRING} बंदर STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_BRANCH :{STRING} शाखा STR_SV_STNAME_UPPER :वरचं {STRING} STR_SV_STNAME_LOWER :खालचं {STRING} STR_SV_STNAME_FOREST :{STRING} वन STR_SV_STNAME_FALLBACK :{STRING} स्थानक #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :एम् पी एस् तेलवाहू जहाज STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :सी एस् इंक. तेलवाहू जहाज STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :एम पी एस् प्रवासी नौका STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :एफ् एफ् पी प्रवासी नौका STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :बेकवेल ३०० हॉवरक्राफ्ट STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :चगर-चग प्रवासी नौका STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :शिवरशेकर प्रवासी नौका STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :येट मालवाहू जहाज STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :बॅकवेल मालवाहू जहाज STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :मायटीमूव्हर मालवाहू जहाज STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :पॉवरनॉट मालवाहू जहाज STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :सॅम्पसन यु ५२ STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :कोलमेन कौंट STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :एफ एफ पी डार्ट STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :येट होगन STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :बॅकवेल कॉट्स्वल्ड एल बी-३ STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :बॅकवेल लकेट एल बी-८ STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :बॅकवेल लकेट एल बी-९ STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :बॅकवेल लकेट एल बी ८० STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :बॅकवेल लकेट एल बी-१० STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :बॅकवेल लकेट एल बी-११ STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :येट एरोस्पेस वाय ए सी १-११ STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :डार्विन १०० STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :डार्विन २०० STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :डार्विन ३०० STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :डार्विन ४०० STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :डार्विन ५०० STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :डार्विन ६०० STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :गुरु गॅलेक्सी STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :एअरटॅक्सी ए२१ STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :एअरटॅक्सी ए३१ STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :एअरटॅक्सी ए३२ STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :एअरटॅक्सी ए३३ STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :येट एरोस्पेस वाय ए इ ४६ STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :डिंगर १०० STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :एअरटॅक्सी ए३४-१००० STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :येट झी-शटल STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :केलिंग के १ STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :केलिंग के ६ STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :केलिंग के ७ STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :डार्विन ७०० STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :एफ एफ पी हायपरडार्ट २ STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :डिंगर २०० STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :डिंगर १००० STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :प्लॉडीफट १०० STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :प्लॉडीफट ५०० STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :फ्लॅशबॅंग एक्स १ STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :जगरप्लेन एम१ STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :फ्लॅशबॅंग वायझर STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :ट्रिकॅरियो हेलिकॉप्टर STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :गुरू एक्स्२ हेलिकॉप्टर STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :पॉवरनॉट हेलिकॉप्टर ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_GROUP_NAME :गट्टा {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} रेल्वे डेपो STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} रेल्वे डेपो #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN}रस्त्यावरील वाहनांचा डेपो STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN}रस्त्यावरील वाहनांचा डेपो #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} हॅंगर STR_UNKNOWN_STATION :अज्ञात स्थानक STR_DEFAULT_SIGN_NAME :चिन्ह STR_COMPANY_SOMEONE :कोणीतरी STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :प्रेक्षक, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/chuvash.txt0000644000000000000000000020232612246102556017747 0ustar rootroot##name Chuvash ##ownname Чӑвашла ##isocode cv_RU ##plural 0 ##textdir ltr ##digitsep {NBSP} ##digitsepcur {NBSP} ##decimalsep , ##winlangid 0x0419 ##grflangid 0x0B # $Id: chuvash.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(уҫӑмсӑрӑн) STR_JUST_NOTHING :Ним те # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Пассажирсем STR_CARGO_PLURAL_COAL :Кăмрăк STR_CARGO_PLURAL_MAIL :Почта STR_CARGO_PLURAL_OIL :Нефть STR_CARGO_PLURAL_LIVESTOCK :Выльăх STR_CARGO_PLURAL_GOODS :Таварĕсем STR_CARGO_PLURAL_GRAIN :Пĕрче STR_CARGO_PLURAL_WOOD :Йывăç STR_CARGO_PLURAL_IRON_ORE :Тимĕр STR_CARGO_PLURAL_STEEL :Хурçă STR_CARGO_PLURAL_VALUABLES :Капăрлăх STR_CARGO_PLURAL_COPPER_ORE :Пăхăр STR_CARGO_PLURAL_MAIZE :Кукуруза STR_CARGO_PLURAL_FRUIT :Çимеçсем STR_CARGO_PLURAL_DIAMONDS :Капăрлăх STR_CARGO_PLURAL_FOOD :Апат-çимĕçе STR_CARGO_PLURAL_PAPER :Хут STR_CARGO_PLURAL_GOLD :Ылтăн STR_CARGO_PLURAL_WATER :Шыв STR_CARGO_PLURAL_WHEAT :Тулă STR_CARGO_PLURAL_RUBBER :Каучук STR_CARGO_PLURAL_SUGAR :Сахăр STR_CARGO_PLURAL_TOYS :Теттесем STR_CARGO_PLURAL_CANDY :Канфетсем STR_CARGO_PLURAL_COLA :Кола STR_CARGO_PLURAL_COTTON_CANDY :Сахăр ваткĕ STR_CARGO_PLURAL_BUBBLES :Хӑмпӑҫӑмсем STR_CARGO_PLURAL_TOFFEE :Карамель STR_CARGO_PLURAL_BATTERIES :Батарейкасем STR_CARGO_PLURAL_PLASTIC :Пластик STR_CARGO_PLURAL_FIZZY_DRINKS :Газланă шыв # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Пассажир STR_CARGO_SINGULAR_COAL :Кăмрăк STR_CARGO_SINGULAR_MAIL :Почта STR_CARGO_SINGULAR_OIL :Нефть STR_CARGO_SINGULAR_LIVESTOCK :Выльăх STR_CARGO_SINGULAR_GOODS :Таварсем STR_CARGO_SINGULAR_GRAIN :Пĕрче STR_CARGO_SINGULAR_WOOD :Йывăç STR_CARGO_SINGULAR_IRON_ORE :Тимĕр STR_CARGO_SINGULAR_STEEL :Хурçă STR_CARGO_SINGULAR_VALUABLES :Капăрлăх STR_CARGO_SINGULAR_COPPER_ORE :Пăхăр STR_CARGO_SINGULAR_MAIZE :Кукуруза STR_CARGO_SINGULAR_FRUIT :Çимеçсем STR_CARGO_SINGULAR_DIAMOND :Кивер чул STR_CARGO_SINGULAR_FOOD :Апат STR_CARGO_SINGULAR_PAPER :Хут STR_CARGO_SINGULAR_GOLD :Ылтăн STR_CARGO_SINGULAR_WATER :Шыв STR_CARGO_SINGULAR_WHEAT :Тулă STR_CARGO_SINGULAR_RUBBER :Каучук STR_CARGO_SINGULAR_SUGAR :Сахăр STR_CARGO_SINGULAR_TOY :Тетте STR_CARGO_SINGULAR_CANDY :Канфетсем STR_CARGO_SINGULAR_COLA :Кола STR_CARGO_SINGULAR_COTTON_CANDY :Сахăр ваткĕ STR_CARGO_SINGULAR_BUBBLE :Хӑмпӑҫӑм STR_CARGO_SINGULAR_TOFFEE :Карамель STR_CARGO_SINGULAR_BATTERY :Батарейкасем STR_CARGO_SINGULAR_PLASTIC :Пластик STR_CARGO_SINGULAR_FIZZY_DRINK :Газланă шыв # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_N_A :палӑ мар # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}ПА STR_ABBREV_COAL :{TINY_FONT}КӐ STR_ABBREV_MAIL :{TINY_FONT}ПО STR_ABBREV_OIL :{TINY_FONT}НЕ STR_ABBREV_LIVESTOCK :{TINY_FONT}ВЫ STR_ABBREV_GOODS :{TINY_FONT}ТВ STR_ABBREV_GRAIN :{TINY_FONT}ПР STR_ABBREV_WOOD :{TINY_FONT}ЙВ STR_ABBREV_IRON_ORE :{TINY_FONT}ТМ STR_ABBREV_STEEL :{TINY_FONT}ХР STR_ABBREV_VALUABLES :{TINY_FONT}КП STR_ABBREV_COPPER_ORE :{TINY_FONT}ПХ STR_ABBREV_MAIZE :{TINY_FONT}КК STR_ABBREV_FRUIT :{TINY_FONT}ҪМ STR_ABBREV_DIAMONDS :{TINY_FONT}КА STR_ABBREV_FOOD :{TINY_FONT}АП STR_ABBREV_PAPER :{TINY_FONT}ХТ STR_ABBREV_GOLD :{TINY_FONT}ЫЛ STR_ABBREV_WATER :{TINY_FONT}ШВ STR_ABBREV_WHEAT :{TINY_FONT}ТЛ STR_ABBREV_RUBBER :{TINY_FONT}КЧ STR_ABBREV_SUGAR :{TINY_FONT}СХ STR_ABBREV_TOYS :{TINY_FONT}ТТ STR_ABBREV_SWEETS :{TINY_FONT}КН STR_ABBREV_COLA :{TINY_FONT}КЛ STR_ABBREV_CANDYFLOSS :{TINY_FONT}СВ STR_ABBREV_BUBBLES :{TINY_FONT}ХМ STR_ABBREV_TOFFEE :{TINY_FONT}КР STR_ABBREV_BATTERIES :{TINY_FONT}БТ STR_ABBREV_PLASTIC :{TINY_FONT}ПЛ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ГШ STR_ABBREV_NONE :{TINY_FONT}ҪУК STR_ABBREV_ALL :{TINY_FONT}ПӖРМАЙ # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} пассажир{P "" сем} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Тӗттӗм кӑвак STR_COLOUR_PALE_GREEN :Шупка симӗс STR_COLOUR_PINK :Кӗрен STR_COLOUR_YELLOW :Сарӑ STR_COLOUR_RED :Хӗрлӗ STR_COLOUR_LIGHT_BLUE :Ҫутӑ кӑвак STR_COLOUR_GREEN :Симĕс STR_COLOUR_DARK_GREEN :Тӗттӗм симӗс STR_COLOUR_BLUE :Кăвак STR_COLOUR_CREAM :Ҫутӑ хӑмӑр STR_COLOUR_ORANGE :Хӗрлӗрех сарӑ STR_COLOUR_BROWN :Хӑмӑр STR_COLOUR_GREY :Сӑрӑ STR_COLOUR_WHITE :Шурӑ # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} мил/с STR_UNITS_VELOCITY_METRIC :{COMMA} км/с STR_UNITS_VELOCITY_SI :{COMMA} м/ҫ STR_UNITS_POWER_SI :{COMMA}кВт # Common window strings STR_BUTTON_RENAME :{BLACK}Ята улӑштар STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Чӳречене хуп # Query window STR_BUTTON_DEFAULT :{BLACK}Пӳрнӗ пек STR_BUTTON_CANCEL :{BLACK}Улӑштар STR_BUTTON_OK :{BLACK}Юрӗ # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Тӑршшӗ: {NUM} STR_MEASURE_AREA :{BLACK}Лаптӑкӑш: {NUM} x {NUM} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Ҫынисем STR_SORT_BY_CAPTION_NAME :{BLACK}Ячӗ STR_SORT_BY_CAPTION_DATE :{BLACK}Кун # These are used in dropdowns STR_SORT_BY_NAME :Ячӗ STR_SORT_BY_PRODUCTION :Тухӑҫлӑх STR_SORT_BY_TYPE :Тип STR_SORT_BY_TRANSPORTED :Кӑларӑм STR_SORT_BY_AGE :Ӳсӗм STR_SORT_BY_RELIABILITY :Шанчӑклӑх STR_SORT_BY_MODEL :Модель STR_SORT_BY_VALUE :Хак STR_SORT_BY_LENGTH :Тӑршшӗ STR_SORT_BY_COST :Хак STR_SORT_BY_POWER :Хӑватлӑх # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Вӑййи тӑхтав STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Вӑййи хӑвӑртлат STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Майлаштару STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Аэропорт ларт # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Объект вырӑнӗ ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Вӗҫле ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Вӑййи майлаштару STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF майлаштару ############ range ends here ############ range for file menu starts STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Тух ############ range ends here # map menu ############ range for town menu starts ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Грантсем ############ range ends here ############ range for graph menu starts ############ range ends here ############ range for company league menu starts ############ range ends here ############ range for industry menu starts ############ range ends here ############ range for railway construction menu starts ############ range ends here ############ range for road construction menu starts ############ range ends here ############ range for waterways construction menu starts ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Аэропорт ҫурт ############ range ends here ############ range for landscaping menu starts ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Сасӑ/Юрӑ-кӗвӗ ############ range ends here ############ range for message menu starts ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_SCREENSHOT :Экран сӑнӗ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Яланхилле экран сӑнӗ STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' çинчен ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1мӗш STR_ORDINAL_NUMBER_2ND :2мӗш STR_ORDINAL_NUMBER_3RD :3-мӗш STR_ORDINAL_NUMBER_4TH :4-мӗш STR_ORDINAL_NUMBER_5TH :5-мӗш STR_ORDINAL_NUMBER_6TH :6-мӗш STR_ORDINAL_NUMBER_7TH :7-мӗш STR_ORDINAL_NUMBER_8TH :8-мӗш STR_ORDINAL_NUMBER_9TH :9-мӗш STR_ORDINAL_NUMBER_10TH :10-мӗш STR_ORDINAL_NUMBER_11TH :11-мӗш STR_ORDINAL_NUMBER_12TH :12-мӗш STR_ORDINAL_NUMBER_13TH :13-мӗш STR_ORDINAL_NUMBER_14TH :14-мӗш STR_ORDINAL_NUMBER_15TH :15-мӗш STR_ORDINAL_NUMBER_16TH :16-мӗш STR_ORDINAL_NUMBER_17TH :17-мӗш STR_ORDINAL_NUMBER_18TH :18-мӗш STR_ORDINAL_NUMBER_19TH :19-мӗш STR_ORDINAL_NUMBER_20TH :20-мӗш STR_ORDINAL_NUMBER_21ST :21-мӗш STR_ORDINAL_NUMBER_22ND :22-мӗш STR_ORDINAL_NUMBER_23RD :23-мӗш STR_ORDINAL_NUMBER_24TH :24-мӗш STR_ORDINAL_NUMBER_25TH :25-мӗш STR_ORDINAL_NUMBER_26TH :26-мӗш STR_ORDINAL_NUMBER_27TH :27-мӗш STR_ORDINAL_NUMBER_28TH :28-мӗш STR_ORDINAL_NUMBER_29TH :29-мӗш STR_ORDINAL_NUMBER_30TH :30-мӗш STR_ORDINAL_NUMBER_31ST :31-мӗш ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Кӑр STR_MONTH_ABBREV_FEB :Нар STR_MONTH_ABBREV_MAR :Пуш STR_MONTH_ABBREV_APR :Ака STR_MONTH_ABBREV_MAY :Ҫу STR_MONTH_ABBREV_JUN :Ҫӗр STR_MONTH_ABBREV_JUL :Утӑ STR_MONTH_ABBREV_AUG :Ҫур STR_MONTH_ABBREV_SEP :Авӑ STR_MONTH_ABBREV_OCT :Юпа STR_MONTH_ABBREV_NOV :Чӳк STR_MONTH_ABBREV_DEC :Раш STR_MONTH_JAN :Кӑрлач STR_MONTH_FEB :Нарӑс STR_MONTH_MAR :Пуш STR_MONTH_APR :Ака STR_MONTH_MAY :Ҫу STR_MONTH_JUN :Ҫӗртме STR_MONTH_JUL :Утӑ STR_MONTH_AUG :Ҫурла STR_MONTH_SEP :Авӑн STR_MONTH_OCT :Юпа STR_MONTH_NOV :Чӳк STR_MONTH_DEC :Раштав ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Уҫӑ STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} # Graph key window # Company league window STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Инженер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Директор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Президент STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Хуҫа(Tycoon) # Performance detail window STR_PERFORMANCE_DETAIL_KEY :{BLACK}Вакки-тӗвекки STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Ҫул-йӗр: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Станцисем: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Тиев: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Укҫӑ: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Кивҫен: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Пурӗ: ############ End of order list # Music window STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}ЧИ САХ(MIN) STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}ЧИ НУМ(MAX) STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Кӗвӗ STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Ят # Playlist window STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Тасат # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Карттӑ - {STRING} STR_SMALLMAP_TYPE_VEHICLES :Ҫул-йӗр STR_SMALLMAP_TYPE_VEGETATION :Йывăç-курӑк STR_SMALLMAP_TYPE_OWNERS :Хуҫасем STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ҫулсем STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Чукун ҫулсем STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Станцисем/Аэропортсем/Портсем STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Ҫул-йӗр STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Пуйăссем STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Транспорт ҫул STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Карапсем STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Сывлӑш ҫул-йӗрӗ STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Вӑрман STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Аэропорт/Вертолёт лаптӑк STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Уйсем STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Йывӑссем STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Ту хысакӗсем STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Шыв STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Пуш хир STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Юр STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} # Status bar messages STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * ТӐХТАВ * * STR_STATUSBAR_AUTOSAVE :{RED}ХӐЙ УПРАВ STR_STATUSBAR_SAVING_GAME :{RED}* * ВӐЙЙИ УПРАВ * * # News message history STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Пӗлтерӳ # Start of order review system # DON'T ADD OR REMOVE LINES HERE # end of order system # Extra view window # Game options window ############ start of currency region STR_GAME_OPTIONS_CURRENCY_RUR :Вырӑсла тенкӗ (RUR) ############ end of currency region ############ start of measuring units region ############ end of measuring units region ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Акӑлчан STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Францири STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Нимӗҫ STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Акӑлчан (Хушма) STR_GAME_OPTIONS_TOWN_NAME_SILLY :Акӑлчан (Кулӑшма) STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Шведла STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Голланд STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Финла STR_GAME_OPTIONS_TOWN_NAME_POLISH :Поляк STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Словак STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Венгрла STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Австри STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Рим STR_GAME_OPTIONS_TOWN_NAME_CZECH :Чехла STR_GAME_OPTIONS_TOWN_NAME_SWISS :Швеци STR_GAME_OPTIONS_TOWN_NAME_DANISH :Датчан STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Турккӑла STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Итали STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Катталун ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Хӑй управ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Сӳнтер STR_GAME_OPTIONS_LANGUAGE :{BLACK}Чӗлхи STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Тулли экран STR_GAME_OPTIONS_RESOLUTION :{BLACK}Экрана сӑнарлама пултарни STR_GAME_OPTIONS_RESOLUTION_OTHER :расна STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Формат экран сӑнӗ # Custom currency window STR_CURRENCY_PREFIX :{LTBLUE}Префикс: {ORANGE}{STRING} STR_CURRENCY_SUFFIX :{LTBLUE}Суффикс: {ORANGE}{STRING} STR_CURRENCY_PREVIEW :{LTBLUE}Малтанласа пӑхса тухни: {ORANGE}{CURRENCY_LONG} STR_NONE :Ҫук STR_NUM_CUSTOM :Харпӑр хӑй STR_NUM_CUSTOM_NUMBER :Харпӑр хӑй ({NUM}) STR_VARIETY_NONE :Ҫук STR_SEA_LEVEL_CUSTOM :Харпӑр хӑй STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Харпӑр хӑй ({NUM}%) STR_DISASTER_NONE :Ҫук STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 # Advanced settings window STR_CONFIG_SETTING_OFF :Сӳнтер STR_CONFIG_SETTING_ON :Ҫут STR_CONFIG_SETTING_DISABLED :хастар мар STR_CONFIG_SETTING_COMPANIES_OFF :Сӳнтер STR_CONFIG_SETTING_NONE :Ҫук STR_CONFIG_SETTING_ORIGINAL :Чӑн STR_CONFIG_SETTING_REALISTIC :Реалисмлӑ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Сулахайра STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Варринче STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Сылтӑмра STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ҫук STR_CONFIG_SETTING_PLANE_CRASHES_NONE :ҫук STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аэропорт кивел мар: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Чӑн STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_TREE_PLACER_NONE :Ҫук STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Чӑн STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Симĕс STR_CONFIG_SETTING_LIVERIES_NONE :Ҫук STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Сӳнтер STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Сӳнтер STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :вӑрӑм (2008 раш 31меш) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :кӗске (2008-12-31) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWS_SUBSIDIES :Грантсем: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Сӳнтер STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Кӗске STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Тулли STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :чӑн STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :ҫук {RED}(breaks lumber mill) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :таҫта та STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ҫук STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Вӑрах STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Виҫеллӗ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Хӑвӑрт STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Питӗ хӑвӑрт STR_CONFIG_SETTING_GUI :{ORANGE}Интерфейс STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Лартӑм STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ҫул-йӗр: STR_CONFIG_SETTING_STATIONS :{ORANGE}Станцисем: STR_CONFIG_SETTING_AI :{ORANGE}Ӑмӑртуҫӑсем STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Автоҫӗнет STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Пуйӑссем STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Хуласем STR_CONFIG_SETTING_PATHFINDER_NPF :NPF # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF майлаштару STR_INTRO_QUIT :{BLACK}Вӗҫле STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF майлаштару кӑтар STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD' вӗҫле # Quit window STR_QUIT_CAPTION :{WHITE}Вӗҫле STR_QUIT_YES :{BLACK}Ийя STR_QUIT_NO :{BLACK}Ҫук # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Вӑййи ан килӗш # Cheat window STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Виҫеллӗ климат STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Сивӗ климат STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Тропик климат STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Вӑйӑ пахчи STR_CHEAT_CHANGE_DATE :{LTBLUE}Тӳрлет кун: {ORANGE}{DATE_SHORT} # Livery window STR_LIVERY_DEFAULT :Яланхи тӗс STR_LIVERY_STEAM :Пӑравус STR_LIVERY_DIESEL :Ӑшӑвус(Diesel Engine) STR_LIVERY_ELECTRIC :Электровоз(Electric Engine) STR_LIVERY_MONORAIL :Пӗр-релсӑ Локомотив(Monorail Engine) STR_LIVERY_MAGLEV :Маглев Локомотив STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Пасажир Вакун(Парӑвус) STR_LIVERY_PASSENGER_WAGON_DIESEL :Пасажир Вакун(Ӑшӑвус) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пасажир Вакун(Электровоз) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пасажир Вакун(Пӗр-релсӑ) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пасажир Вакун(Маглев) STR_LIVERY_FREIGHT_WAGON :Ҫӑк Вакун STR_LIVERY_BUS :Автобус STR_LIVERY_TRUCK :Ҫӑк машинаи STR_LIVERY_PASSENGER_SHIP :Пассажирсем карап STR_LIVERY_FREIGHT_SHIP :Ҫӑк карап STR_LIVERY_HELICOPTER :Вертолёт STR_LIVERY_SMALL_PLANE :Шӑрчӑк(Пӗчӗк яраплан) STR_LIVERY_LARGE_PLANE :Сывлӑш карап(Пысӑк яраплан) STR_LIVERY_PASSENGER_TRAM :Пасажир трамвай STR_LIVERY_FREIGHT_TRAM :Ҫӑк трамвай # Face selection window STR_FACE_CAPTION :{WHITE}Кап STR_FACE_MALE_BUTTON :{BLACK}Арҫын STR_FACE_FEMALE_BUTTON :{BLACK}Хӗрарӑм STR_FACE_NEW_FACE_BUTTON :{BLACK}Ҫӗнӗ Ят STR_FACE_ADVANCED :{BLACK}Хушма STR_FACE_SIMPLE :{BLACK}Ансат STR_FACE_LOAD :{BLACK}Тие STR_FACE_SAVE :{BLACK}Упра STR_FACE_EUROPEAN :{BLACK}Европӑ STR_FACE_AFRICAN :{BLACK}Африкан STR_FACE_YES :Ҫапла STR_FACE_NO :Ҫук STR_FACE_HAIR :Ҫӳҫ: STR_FACE_EYEBROWS :Куҫ харши: STR_FACE_EYECOLOUR :Куҫ тӗс: STR_FACE_GLASSES :Куҫлӑх: STR_FACE_GLASSES_TOOLTIP :{BLACK}Куҫлӑх яр STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Тӳрлет куҫлӑх STR_FACE_NOSE :Сӑмса: STR_FACE_LIPS :Тута: STR_FACE_MOUSTACHE :Мӑйӑх: STR_FACE_CHIN :Янах: STR_FACE_JACKET :Пиншак: STR_FACE_COLLAR :Ҫуха: STR_FACE_TIE :Галстук: STR_FACE_EARRING :Алка: # Network server list STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Ҫыхӑну: STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Тетел STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Вӑйӑҫӑ ят: STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Ят STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Ят вӑйӑлла STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Вӑйӑҫӑсем STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Виҫе картти STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Кун STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Хальхи кун STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Ҫул STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Чӗлхе, сервер версиӗ, т. ыт. те. STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}ВӐЙЙИ ИНФОРМАЦИ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Вӑйӑҫӑсем: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Чӗлхи: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Ҫӗр пичӗ: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Виҫе картти: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Сервер версиӗ: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Сервер адресӗ: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Пуҫламӑш кун: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Хальхи кун: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Вӑрттӑн сӑмаха хӳтеленнӗ STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}ҪЫХӐНМАСӐР СЕРВЕР STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}СЕРВЕР ТУЛЛИ STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}ХИРӖҪӲ ВЕРСИ STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}ХИРӖҪӲ NEWGRF STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Сервер ҫӗнет STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Сервер туп STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Сервер хуш STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Сервер пуҫ # Start new multiplayer server STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Вӑййи ят: STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырнаҫтар вӑрттӑн сӑмахӗ STR_NETWORK_START_SERVER_LAN_INTERNET :Вырӑнти Тӗвӗлӗх/Тетел # Network game languages ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network game lobby # Network connecting window ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network company list added strings # Network client list # Network set password # Network company info join/password # Network chat # Network messages ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! ############ End of leave-in-this-order # Content downloading window STR_CONTENT_DETAIL_VERSION :{SILVER}Верси: {WHITE}{STRING} # Order of these is important! # Content downloading progress window # Content downloading error messages # Transparency settings window # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) # Join station window # Rail construction toolbar # Rail depot construction window # Rail waypoint construction window # Rail station construction window # Signal window # Bridge selection window # Road construction toolbar # Road depot construction window # Road vehicle station construction window # Waterways toolbar (last two for SE only) # Ship depot construction window # Dock construction window # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Аэропортсем # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Аэропорт суйлани STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Пысӑкӑш суйлани/Аэропорт тӗсӗ STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Аэропорт класс STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Хутлӑх{NUM} STR_AIRPORT_SMALL :Пӗчӗк STR_AIRPORT_CITY :Хула STR_AIRPORT_METRO :Тӗп хулин STR_AIRPORT_INTERNATIONAL :Тӗнчери STR_AIRPORT_COMMUTER :Хула ҫумӗнчи STR_AIRPORT_INTERCONTINENTAL :Ҫӗр-шывсем хушшинчи STR_AIRPORT_HELIPORT :Вертолёт лаптӑк STR_AIRPORT_HELIDEPOT :Вертолёт депо STR_AIRPORT_HELISTATION :Вертолёт станци STR_AIRPORT_CLASS_SMALL :Пӗчӗк аэропортсем STR_AIRPORT_CLASS_LARGE :Пысӑк аэропортсем STR_AIRPORT_CLASS_HUB :Вар аэропорт STR_AIRPORT_CLASS_HELIPORTS :Вертолёт лаптӑксем # Landscaping toolbar # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Объект суйлани STR_OBJECT_BUILD_SIZE :{BLACK}Виҫе: {GOLD}{NUM} x {NUM} тӑваткалсем STR_OBJECT_CLASS_LTHS :Маяксем STR_OBJECT_CLASS_TRNS :Передатчиксем # Tree planting window (last two for SE only) # Land generation window (SE) # Town generation window (SE) STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Ҫӗнӗ хула STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Ҫӗнӗ хула ларт STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Ӑнсӑрт хула STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Нумай ӑнсӑрт хула STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Хула ят: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Хула ят кӗрт STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Ӑнсӑрт ят STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Хула пысӑкӑшӗ: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Пӗчӗк STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Вӑта STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Пысӑк STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Ӑнсӑрт STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Хула пысӑкӑшӗ суйла STR_FOUND_TOWN_CITY :{BLACK}Тӑп хула STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Чӑн STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 серепе STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 серепе STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Ӑнсӑрт # Fund new industry window STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Хак: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Малашлӑх STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Ларт STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Укҫа сап(Fund) # Industry cargoes window STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Ҫуртсем # Land area window STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ҫук STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Аэропорт класс: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Аэропорт ят: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Аэропорт лаптӑк ят: {LTBLUE}{STRING} # Description of land area of different tiles # Houses come directly from their building names STR_LAI_STATION_DESCRIPTION_AIRPORT :Аэропорт # Industries come directly from their industry names STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Передатчик STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Маяк # About OpenTTD window STR_ABOUT_VERSION :{BLACK}OpenTTD верси {REV} # Save/load game/scenario # World generation STR_MAPGEN_MAPSIZE :{BLACK}Виҫа картти: STR_MAPGEN_BY :{BLACK}* # Strings for map borders at game generation # SE Map generation # Map generation progress STR_GENERATION_OBJECT_GENERATION :{BLACK}Объект туни # NewGRF settings STR_NEWGRF_SETTINGS_VERSION :{BLACK}Верси: {SILVER}{NUM} # NewGRF parameters window STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Хуп STR_NEWGRF_PARAMETERS_RESET :{BLACK}Сикӗ STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Ӗнерленӳ {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING}'ра {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Объект # Sprite aligner window # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} # NewGRF related 'general' warnings # NewGRF status STR_NEWGRF_LIST_NONE :Ҫук # NewGRF 'it's broken' warnings # 'User removed essential NewGRFs'-placeholders for stuff without specs # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window # Sign window # Town directory window STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ҫук - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} # Town local authority window STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window ### Start of Goal Question button list # Subsidies window STR_SUBSIDIES_NONE :{ORANGE}- Ҫук - # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Ҫук - # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts ############ range for rating ends # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} # Finances window STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} # Company view STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Ҫук # Company infrastructure window # Industry directory STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫук - # Industry view ############ range for requires starts ############ range for requires ends ############ range for produces starts ############ range for produces ends # Vehicle lists # Group window # Build vehicle window # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) # Engine preview window # Autoreplace window # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view # Vehicle stopped/started animations # Vehicle details # The next two need to stay in this order STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Савӑт: {LTBLUE}Ҫук пул{STRING} # Extra buttons for train details windows # Vehicle refit # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} # Time table window # Date window (for timetable) # AI debug window # AI configuration window STR_AI_CONFIG_CHANGE_NONE : # Available AIs window STR_AI_LIST_VERSION :{LTBLUE}Верси: {ORANGE}{NUM} # AI Parameters STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window # Vehicle loading indicators # Income 'floats' # Saveload messages STR_ERROR_AUTOSAVE_FAILED :{WHITE}Ӑнӑҫсӑр хӑй управ STR_GAME_SAVELOAD_NOT_AVAILABLE :<палӑ мар> # Map generation messages # Soundset messages # Screenshot related messages STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ӑнӑҫсӑр экран сӑнӗ # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Пӗлтерӳ # Generic construction errors # Local authority errors # Levelling errors # Company related errors # Town related errors # Industry related errors # Station construction related errors # Station destruction related errors # Waypoint related errors # Depot related errors # Autoreplace related errors STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(укҫа ҫитмест) # Rail construction errors # Road construction errors # Waterway construction errors # Tree related errors # Bridge related errors # Tunnel related errors # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... тивӗҫсӗр нумай объект STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Объект ларт мар... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ҫул ҫинче чару # Group related errors # Generic vehicle errors # Specific vehicle errors # Order related errors # Timetable related errors # Sign related errors # Translatable comment for OpenTTD's desktop shortcut # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_CHURCH_1 :Чиркӳ STR_TOWN_BUILDING_NAME_HOTEL_1 :Отел STR_TOWN_BUILDING_NAME_STATUE_1 :Палӑк ##id 0x4800 # industry names ############ 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 STR_SV_EMPTY : STR_SV_STNAME :{STRING} STR_SV_STNAME_AIRPORT :{STRING} Аэропорт STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 ############ end of savegame specific region! ##id 0x8000 # Vehicle names ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}.{STRING}.{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/ido.txt0000644000000000000000000015314112246102556017061 0ustar rootroot##name Ido ##ownname Ido ##isocode io_IO ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0000 ##grflangid 0x06 # $Id: ido.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_JUST_NOTHING :Nulo # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Pasajero STR_CARGO_PLURAL_COAL :Karbono STR_CARGO_PLURAL_MAIL :Posto STR_CARGO_PLURAL_OIL :Petrolo STR_CARGO_PLURAL_LIVESTOCK :Brutaro STR_CARGO_PLURAL_GOODS :Havaji STR_CARGO_PLURAL_GRAIN :Semino STR_CARGO_PLURAL_WOOD :Ligno STR_CARGO_PLURAL_IRON_ORE :Fer-erco STR_CARGO_PLURAL_STEEL :Stalo STR_CARGO_PLURAL_VALUABLES :Valoraji STR_CARGO_PLURAL_COPPER_ORE :Kupr-erco STR_CARGO_PLURAL_MAIZE :Maizo STR_CARGO_PLURAL_FRUIT :Frukto STR_CARGO_PLURAL_DIAMONDS :Diamanti STR_CARGO_PLURAL_FOOD :Nutrajo STR_CARGO_PLURAL_PAPER :Papero STR_CARGO_PLURAL_GOLD :Oro STR_CARGO_PLURAL_WATER :Aquo STR_CARGO_PLURAL_WHEAT :Frumento STR_CARGO_PLURAL_RUBBER :Kauchuko STR_CARGO_PLURAL_SUGAR :Sukro STR_CARGO_PLURAL_TOYS :Ludili STR_CARGO_PLURAL_CANDY :Bonboni STR_CARGO_PLURAL_COLA :Kolao STR_CARGO_PLURAL_COTTON_CANDY :Kandi-lanugo STR_CARGO_PLURAL_BUBBLES :Buli STR_CARGO_PLURAL_TOFFEE :Karamelo STR_CARGO_PLURAL_BATTERIES :Baterii STR_CARGO_PLURAL_PLASTIC :Plastiko STR_CARGO_PLURAL_FIZZY_DRINKS :Gasoza Drinkaji # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Pasajero STR_CARGO_SINGULAR_COAL :Karbono STR_CARGO_SINGULAR_MAIL :Posto STR_CARGO_SINGULAR_OIL :Petrolo STR_CARGO_SINGULAR_LIVESTOCK :Brutari STR_CARGO_SINGULAR_GOODS :Vari STR_CARGO_SINGULAR_GRAIN :Grano STR_CARGO_SINGULAR_WOOD :Ligno STR_CARGO_SINGULAR_IRON_ORE :Fer-erco STR_CARGO_SINGULAR_STEEL :Stalo STR_CARGO_SINGULAR_VALUABLES :Valoraji STR_CARGO_SINGULAR_COPPER_ORE :Kupr-erco STR_CARGO_SINGULAR_MAIZE :Maizo STR_CARGO_SINGULAR_FRUIT :Frukto STR_CARGO_SINGULAR_DIAMOND :Diamanto STR_CARGO_SINGULAR_FOOD :Manjajo STR_CARGO_SINGULAR_PAPER :Papero STR_CARGO_SINGULAR_GOLD :Oro STR_CARGO_SINGULAR_WATER :Aquo STR_CARGO_SINGULAR_WHEAT :Frumento STR_CARGO_SINGULAR_RUBBER :Kauchuko STR_CARGO_SINGULAR_SUGAR :Sukro STR_CARGO_SINGULAR_TOY :Ludilo STR_CARGO_SINGULAR_CANDY :Bonbono STR_CARGO_SINGULAR_COLA :Kolao STR_CARGO_SINGULAR_COTTON_CANDY :Kandi-lanugo STR_CARGO_SINGULAR_BUBBLE :Bulo STR_CARGO_SINGULAR_TOFFEE :Karamelo STR_CARGO_SINGULAR_BATTERY :Baterio STR_CARGO_SINGULAR_PLASTIC :Plastiko STR_CARGO_SINGULAR_FIZZY_DRINK :Gasoza Drinkajo # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} pasajer{P o i} STR_QUANTITY_COAL :{WEIGHT_LONG} de karbono STR_QUANTITY_MAIL :{COMMA} sak{P o i} de posto STR_QUANTITY_OIL :{VOLUME_LONG} de oleo STR_QUANTITY_LIVESTOCK :{COMMA} artikl{P o i} de brutari STR_QUANTITY_GOODS :{COMMA} kest{P o i} de vari STR_QUANTITY_GRAIN :{WEIGHT_LONG} de grano STR_QUANTITY_WOOD :{WEIGHT_LONG} de ligno STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de fer-erco STR_QUANTITY_STEEL :{WEIGHT_LONG} de stalo STR_QUANTITY_VALUABLES :{COMMA} sak{P o i} de valoraji STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de kupr-erco STR_QUANTITY_MAIZE :{WEIGHT_LONG} de maizo STR_QUANTITY_FRUIT :{WEIGHT_LONG} de frukto STR_QUANTITY_DIAMONDS :{COMMA} sak{P o i} de diamanti STR_QUANTITY_FOOD :{WEIGHT_LONG} de manjajo STR_QUANTITY_PAPER :{WEIGHT_LONG} de papero STR_QUANTITY_GOLD :{COMMA} sak{P o i} de oro STR_QUANTITY_WATER :{VOLUME_LONG} de aquo STR_QUANTITY_WHEAT :{WEIGHT_LONG} de frumento STR_QUANTITY_RUBBER :{VOLUME_LONG} de kauchuko STR_QUANTITY_SUGAR :{WEIGHT_LONG} de sukro STR_QUANTITY_TOYS :{COMMA} ludil{P o i} STR_QUANTITY_SWEETS :{COMMA} sak{P o i} de dolcaji STR_QUANTITY_COLA :{VOLUME_LONG} de kolao STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de kandi-lanugo STR_QUANTITY_BUBBLES :{COMMA} bul{P o i} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de karamelo STR_QUANTITY_BATTERIES :{COMMA} bateri{P o i} STR_QUANTITY_PLASTIC :{VOLUME_LONG} de plastiko STR_QUANTITY_FIZZY_DRINKS :{COMMA} gasoza drinkaj{P o i} STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}KB STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}BT STR_ABBREV_GOODS :{TINY_FONT}VR STR_ABBREV_GRAIN :{TINY_FONT}GN STR_ABBREV_WOOD :{TINY_FONT}LG STR_ABBREV_IRON_ORE :{TINY_FONT}EC STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}KP STR_ABBREV_MAIZE :{TINY_FONT}MZ STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}MJ STR_ABBREV_PAPER :{TINY_FONT}PP STR_ABBREV_GOLD :{TINY_FONT}OR STR_ABBREV_WATER :{TINY_FONT}AQ STR_ABBREV_WHEAT :{TINY_FONT}FM STR_ABBREV_RUBBER :{TINY_FONT}KK STR_ABBREV_SUGAR :{TINY_FONT}SK STR_ABBREV_TOYS :{TINY_FONT}LD STR_ABBREV_SWEETS :{TINY_FONT}DC STR_ABBREV_COLA :{TINY_FONT}KL STR_ABBREV_CANDYFLOSS :{TINY_FONT}KD STR_ABBREV_BUBBLES :{TINY_FONT}BL STR_ABBREV_TOFFEE :{TINY_FONT}KR STR_ABBREV_BATTERIES :{TINY_FONT}BT STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}GD STR_ABBREV_NONE :{TINY_FONT}NL STR_ABBREV_ALL :{TINY_FONT}OMNA # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} pasajeri STR_BAGS :{COMMA} saki STR_TONS :{COMMA} tuni STR_LITERS :{COMMA} litri STR_ITEMS :{COMMA} artikli STR_CRATES :{COMMA} kesti # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Obskur-blua STR_COLOUR_PALE_GREEN :Pal-verda STR_COLOUR_PINK :Rozea STR_COLOUR_YELLOW :Flava STR_COLOUR_RED :Reda STR_COLOUR_LIGHT_BLUE :Klar-Blua STR_COLOUR_GREEN :Verda STR_COLOUR_DARK_GREEN :Obskur-verda STR_COLOUR_BLUE :Blua STR_COLOUR_CREAM :Kremea STR_COLOUR_MAUVE :Malva STR_COLOUR_PURPLE :Purpuro STR_COLOUR_ORANGE :Orangea STR_COLOUR_BROWN :Bruna STR_COLOUR_GREY :Griza STR_COLOUR_WHITE :Blanka # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}kp STR_UNITS_POWER_METRIC :{COMMA}kp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tun{P o i} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P o i} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pd STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_BUTTON_SORT_BY :{BLACK}Ordinas per STR_BUTTON_LOCATION :{BLACK}Loko STR_BUTTON_RENAME :{BLACK}Rinomizar STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Klozas fenestro STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Baskulas granda/mikra fenestro grandeso # Query window STR_BUTTON_CANCEL :{BLACK}Anular STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Longeso: {NUM} STR_MEASURE_AREA :{BLACK}Areo: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longeso: {NUM}{}Difero di alteso: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Areo: {NUM} x {NUM}{}Difero di alteso: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populo STR_SORT_BY_CAPTION_NAME :{BLACK}Nomo STR_SORT_BY_CAPTION_DATE :{BLACK}Dato # These are used in dropdowns STR_SORT_BY_NAME :Nomo STR_SORT_BY_TYPE :Tipo STR_SORT_BY_TRANSPORTED :Transportita STR_SORT_BY_NUMBER :Numero STR_SORT_BY_AGE :Evo STR_SORT_BY_MAX_SPEED :Maximo rapideso STR_SORT_BY_LENGTH :Longeso STR_SORT_BY_FACILITY :Stacion-tipo STR_SORT_BY_POWER :Povo # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzas ludo STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Selekti STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvas ludo, abandonas ludo, ekiras STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Montras listo di stacioni di la kompanio STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Montras grafiki STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Konstruktas fervoy-treko STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Konstruktas voyi STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Konstruktas nav-doki STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Konstruktas aeroportui STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Montras sono/muziko fenestro # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Salvas cenaro, kargas cenaro, abandonas cenaro-redaktisto, ekiras STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Cenaro-Redaktisto STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Voyo konstruktado STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantacas arbori STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Situas signalo STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Pozez objekto ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SEPARATOR : ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_FULL_DETAIL :Plene detaloza STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Diafana konstrukturi ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Salvas ludo STR_FILE_MENU_LOAD_GAME :Kargas ludo STR_FILE_MENU_QUIT_GAME :Abandonas ludo STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ekiras ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Mapo di mondo STR_MAP_MENU_SIGN_LIST :Listo di signi ############ range for town menu starts ############ range ends here ############ range for subsidies menu starts ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_INCOME_GRAPH :Revenuo grafiko STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Livrita kargajo grafiko ############ range ends here ############ range for company league menu starts ############ range ends here ############ range for industry menu starts ############ range ends here ############ range for railway construction menu starts ############ range ends here ############ range for road construction menu starts ############ range ends here ############ range for waterways construction menu starts ############ range ends here ############ range for airport construction menu starts ############ range ends here ############ range for landscaping menu starts ############ range ends here ############ range for music menu starts ############ range ends here ############ range for message menu starts ############ range ends here ############ range for about menu starts ############ range ends here ############ range for days starts (also used for the place in the highscore window) ############ range for days ends ############ range for months starts ############ range for months ends # Graph window STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} # Graph key window # Company league window # Performance detail window STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% ############ Those following lines need to be in this order!! ############ End of order list # Music window STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" # Playlist window # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Mapo - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Konturi STR_SMALLMAP_TYPE_VEHICLES :Vehili STR_SMALLMAP_TYPE_INDUSTRIES :Industrii STR_SMALLMAP_TYPE_ROUTES :Voyi STR_SMALLMAP_TYPE_VEGETATION :Vejetado STR_SMALLMAP_TYPE_OWNERS :Proprietanto STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Montras transport-voyi sur la mapo STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Montrar vejetado ad la mapo STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Montrar proprietanti ad la mapo STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Voyi STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Fervoyo STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stacioni/Aeroportui/Doki STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Konstrukturi/Industrii STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehili STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Treni STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Voy-Vehili STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Navi STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aeroplani STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Transport-voyi STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Foresto STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Fervoyala Staciono STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Kamiono-Kayo STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Autobuso Staciono STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroportuo/Heliportuo STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Portuo STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Ruda Tereno STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Herbo STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Nudiga Tereno STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Agri STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Arbori STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Roki STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Aquo STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Ne proprietanto STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Urbi STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrii STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Dezerto STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Nivo STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Baskulas urbo-nomi sur/for la mapo STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Montras alteso # Status bar messages STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - # News message history STR_NEWS_MESSAGE_CAPTION :{WHITE}Sendajo # Start of order review system # DON'T ADD OR REMOVE LINES HERE # end of order system # Extra view window # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Ludo Selekti ############ start of currency region ############ end of currency region ############ start of measuring units region ############ end of measuring units region ############ start of townname region ############ end of townname region STR_GAME_OPTIONS_RESOLUTION_OTHER :altra # Custom currency window STR_NUM_LOW :Basa STR_NUM_NORMAL :Normala STR_NUM_HIGH :Alta STR_NUM_CUSTOM_NUMBER :Kustumigita ({NUM}) STR_VARIETY_NONE :Nulo STR_VARIETY_VERY_LOW :Tre Basa STR_VARIETY_LOW :Basa STR_VARIETY_MEDIUM :Mezgrada STR_VARIETY_HIGH :Alta STR_VARIETY_VERY_HIGH :Tre Alta STR_AI_SPEED_SLOW :Lenta STR_AI_SPEED_MEDIUM :Meza STR_AI_SPEED_FAST :Rapida STR_SEA_LEVEL_LOW :Basa STR_SEA_LEVEL_MEDIUM :Meza STR_SEA_LEVEL_HIGH :Alta STR_SEA_LEVEL_CUSTOM :Kustumigita STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Kustumigita ({NUM}%) # Advanced settings window STR_CONFIG_SETTING_NONE :Nulo STR_CONFIG_SETTING_PLANE_CRASHES_NONE :nulo STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normala STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verda STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Obskur-verda STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violkolora STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :omnube # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Nova Ludo STR_INTRO_LOAD_GAME :{BLACK}Charjas Ludo STR_INTRO_GAME_OPTIONS :{BLACK}Ludo Selekti # Quit window STR_QUIT_CAPTION :{WHITE}Livas STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Kad tu esas certa ke tu volas livar OpenTTD ed rivenar a {STRING}? STR_QUIT_YES :{BLACK}Yes STR_QUIT_NO :{BLACK}Ne # Supported OSes # Abandon game # Cheat window # Livery window # Face selection window # Network server list STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} # Start new multiplayer server # Network game languages ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network game lobby # Network connecting window ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network company list added strings # Network client list # Network set password # Network company info join/password # Network chat # Network messages STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Tu sendis tro multa imperi ad la servero ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sendinta tro multa imperi ############ End of leave-in-this-order # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! ############ End of leave-in-this-order # Content downloading window # Order of these is important! # Content downloading progress window # Content downloading error messages # Transparency settings window # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Aceptas: {GOLD}{CARGO_LIST} # Join station window # Rail construction toolbar # Rail depot construction window # Rail waypoint construction window # Rail station construction window # Signal window # Bridge selection window # Road construction toolbar # Road depot construction window # Road vehicle station construction window # Waterways toolbar (last two for SE only) # Ship depot construction window # Dock construction window # Airport toolbar # Airport construction window STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Klaso di aeroportuo STR_AIRPORT_SMALL :Mikra STR_AIRPORT_HELIPORT :Heliportuo STR_AIRPORT_HELIDEPOT :Helidepozeyo STR_AIRPORT_HELISTATION :Helistaciono STR_AIRPORT_CLASS_SMALL :Mikra aeroportui STR_AIRPORT_CLASS_LARGE :Granda aeroportui STR_AIRPORT_CLASS_HELIPORTS :Helikoptero-aeroportui # Landscaping toolbar # Object construction window STR_OBJECT_BUILD_SIZE :{BLACK}Grandeso: {GOLD}{NUM} x {NUM} kareli # Tree planting window (last two for SE only) # Land generation window (SE) # Town generation window (SE) # Fund new industry window # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrio-kateno por {STRING} industrio STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Produktanta industrii STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Aceptanta industrii STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Domi STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Montras kateno STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Ligilo ad mapeto STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selektez la montranta industrii ad la mapeto anke # Land area window STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Klaso di aeroportuo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nomo di aeroportuo: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nomo di aeroportuo-karelo: {LTBLUE}{STRING} # Description of land area of different tiles # Houses come directly from their building names # Industries come directly from their industry names STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Faro STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Stabeyo di kompanio # About OpenTTD window STR_ABOUT_VERSION :{BLACK}OpenTTD versiono {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 La kruo OpenTTD # Save/load game/scenario STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NovaGRF: {WHITE}{STRING} # World generation STR_MAPGEN_BY :{BLACK}* # Strings for map borders at game generation # SE Map generation # Map generation progress # NewGRF settings STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versiono: {SILVER}{NUM} # NewGRF parameters window STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Klozas STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Nombro di parametri: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspektas - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Genitoro STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ad {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekto STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Fervoyo-tipo # Sprite aligner window # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} # NewGRF related 'general' warnings # NewGRF status STR_NEWGRF_LIST_NONE :Nulo # NewGRF 'it's broken' warnings # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO_ABBREV :?? # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window # Sign window # Town directory window STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} # Town local authority window STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window ### Start of Goal Question button list # Subsidies window # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Vartabas: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aceptas: {WHITE}{CARGO_LIST} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts ############ range for rating ends # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} # Finances window STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_LOAN_TITLE :{WHITE}Prest-ajo # Company view STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehili: # Company infrastructure window # Industry directory # Industry view ############ range for requires starts ############ range for requires ends ############ range for produces starts ############ range for produces ends # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren{P o i} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Voyo-Vehil{P o i} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Nav{P o i} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeronavo STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Treni - klikigas sur treno por informeso STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Voy-vehili - klikigas sur vehilo por informeso STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Navi - klikigas sur navo por informeso STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeronavi - klikigas sur aeronavo por informeso STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profito to yaro: {CURRENCY_LONG} (lasta yaro: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Disponebla Treni STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Disponebla Vehili STR_VEHICLE_LIST_AVAILABLE_SHIPS :Disponebla Navi STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Disponebla Aeronavi STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sendas ad Depozeyo STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sendas ad Depozeyo STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Sendas ad Depozeyo STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sendas ad Hangaro # Group window STR_GROUP_ALL_TRAINS :Omna treni STR_GROUP_ALL_ROAD_VEHICLES :Omna voy-vehili STR_GROUP_ALL_SHIPS :Omna navi STR_GROUP_ALL_AIRCRAFTS :Omna aeronavi STR_GROUP_DEFAULT_TRAINS :Negrupigita treni STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupigita voy-vehili STR_GROUP_DEFAULT_SHIPS :Negrupigita navi STR_GROUP_DEFAULT_AIRCRAFTS :Negrupigita aeronavi # Build vehicle window # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Chanjas nomo di depozeyo STR_DEPOT_RENAME_DEPOT_CAPTION :Rinomizas depozeyo STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) # Engine preview window # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :Treno STR_REPLACE_VEHICLE_ROAD_VEHICLE :Voy-vehilo STR_REPLACE_VEHICLE_SHIP :Navo STR_REPLACE_VEHICLE_AIRCRAFT :Aeronavo # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Servado ad {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Haltinta STR_VEHICLE_COMMAND_STOPPED :{RED}Haltinta STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Komencinta STR_VEHICLE_COMMAND_STARTED :{GREEN}Komencinta # Vehicle details # The next two need to stay in this order # Extra buttons for train details windows STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Kargajo STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informo STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapacesi # Vehicle refit # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} # Time table window # Date window (for timetable) # AI debug window STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) # AI configuration window STR_AI_CONFIG_CHANGE_NONE : # Available AIs window # AI Parameters STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} # Textfile window # Vehicle loading indicators # Income 'floats' # Saveload messages # Map generation messages # Soundset messages # Screenshot related messages # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Sendajo STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Sendajo de {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Exter la bordo del mapo STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Tro proxim la bordo del mapo STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Ne sat pekunio - requizitas {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Plata tereno requizitita STR_ERROR_CAN_T_DO_THIS :{WHITE}Ne povas facar ico... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Ne povas netigar ca areo... # Local authority errors # Levelling errors STR_ERROR_TOO_HIGH :{WHITE}... tro alta STR_ERROR_ALREADY_LEVELLED :{WHITE}... ja plata # Company related errors # Town related errors STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Ne povas expansar urbo... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... tro proxim la bordo del mapo # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... tro multa industrii # Station construction related errors # Station destruction related errors STR_ERROR_THERE_IS_NO_STATION :{WHITE}... ne es staciono hike # Waypoint related errors # Depot related errors STR_ERROR_TRAIN_TOO_LONG :{WHITE}Treno tro longa # Autoreplace related errors # Rail construction errors STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... ne es signali # Road construction errors STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... ne esas voyo # Waterway construction errors # Tree related errors # Bridge related errors STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponto tro longa # Tunnel related errors # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... tro multa objekti STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Ne povas konstruktar objekto... # Group related errors # Generic vehicle errors STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Tro multa vehili en la ludo # Specific vehicle errors # Order related errors # Timetable related errors # Sign related errors # Translatable comment for OpenTTD's desktop shortcut # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names ##id 0x4800 # industry names ############ 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 STR_SV_EMPTY : STR_SV_STNAME :{STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 ############ end of savegame specific region! ##id 0x8000 # Vehicle names ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Treno-Depozeyo STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Treno-Depozeyo #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Navo-Depozeyo STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Navo-Depozeyo #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangaro STR_COMPANY_SOMEONE :ulu # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/persian.txt0000644000000000000000000127056712246102556017764 0ustar rootroot##name Persian ##ownname فارسی ##isocode fa_IR ##plural 0 ##textdir rtl ##digitsep ٬ ##digitsepcur ٬ ##decimalsep ٫ ##winlangid 0x0429 ##grflangid 0x62 # $Id: persian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(رشته تعریف نشده) STR_JUST_NOTHING :هیچی # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :مسافران STR_CARGO_PLURAL_COAL :ذغال STR_CARGO_PLURAL_MAIL :نامه STR_CARGO_PLURAL_OIL :نفت STR_CARGO_PLURAL_LIVESTOCK :چارپایان STR_CARGO_PLURAL_GOODS :محصولات مصرفی STR_CARGO_PLURAL_GRAIN :غله STR_CARGO_PLURAL_WOOD :چوب STR_CARGO_PLURAL_IRON_ORE :سنگ آهن STR_CARGO_PLURAL_STEEL :فولاد STR_CARGO_PLURAL_VALUABLES :جواهرات STR_CARGO_PLURAL_COPPER_ORE :سنگ مس STR_CARGO_PLURAL_MAIZE :ذرت STR_CARGO_PLURAL_FRUIT :میوه STR_CARGO_PLURAL_DIAMONDS :الماس STR_CARGO_PLURAL_FOOD :مواد خوراکی STR_CARGO_PLURAL_PAPER :کاغذ STR_CARGO_PLURAL_GOLD :طلا STR_CARGO_PLURAL_WATER :آب STR_CARGO_PLURAL_WHEAT :گندم STR_CARGO_PLURAL_RUBBER :کائوچو STR_CARGO_PLURAL_SUGAR :شکر STR_CARGO_PLURAL_TOYS :اسباب بازی STR_CARGO_PLURAL_CANDY :شیرینی STR_CARGO_PLURAL_COLA :نوشابه STR_CARGO_PLURAL_COTTON_CANDY :پشمک STR_CARGO_PLURAL_BUBBLES :حباب STR_CARGO_PLURAL_TOFFEE :تافی STR_CARGO_PLURAL_BATTERIES :باتری STR_CARGO_PLURAL_PLASTIC :پلاستیک STR_CARGO_PLURAL_FIZZY_DRINKS :نوشابه گازدار # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :مسافر STR_CARGO_SINGULAR_COAL :ذغال STR_CARGO_SINGULAR_MAIL :نامه STR_CARGO_SINGULAR_OIL :نفت STR_CARGO_SINGULAR_LIVESTOCK :چارپایان STR_CARGO_SINGULAR_GOODS :محصولات مصرفی STR_CARGO_SINGULAR_GRAIN :غله STR_CARGO_SINGULAR_WOOD :چوب STR_CARGO_SINGULAR_IRON_ORE :سنگ آهن STR_CARGO_SINGULAR_STEEL :فولاد STR_CARGO_SINGULAR_VALUABLES :اجناس قیمتی STR_CARGO_SINGULAR_COPPER_ORE :سنگ مس STR_CARGO_SINGULAR_MAIZE :ذرت STR_CARGO_SINGULAR_FRUIT :میوه STR_CARGO_SINGULAR_DIAMOND :الماس STR_CARGO_SINGULAR_FOOD :مواد خوراکی STR_CARGO_SINGULAR_PAPER :کاغذ STR_CARGO_SINGULAR_GOLD :طلا STR_CARGO_SINGULAR_WATER :آب STR_CARGO_SINGULAR_WHEAT :گندم STR_CARGO_SINGULAR_RUBBER :کائوچو STR_CARGO_SINGULAR_SUGAR :شکر STR_CARGO_SINGULAR_TOY :اسباب بازی STR_CARGO_SINGULAR_CANDY :شیرینی STR_CARGO_SINGULAR_COLA :نوشابه STR_CARGO_SINGULAR_COTTON_CANDY :پشمک STR_CARGO_SINGULAR_BUBBLE :حباب STR_CARGO_SINGULAR_TOFFEE :تافی STR_CARGO_SINGULAR_BATTERY :باتری STR_CARGO_SINGULAR_PLASTIC :پلاستیک STR_CARGO_SINGULAR_FIZZY_DRINK :نوشابه گازدار # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} مسافر{P "" ان} STR_QUANTITY_COAL :{WEIGHT_LONG} از زغال سنگ STR_QUANTITY_MAIL :{COMMA}بسته نامه STR_QUANTITY_OIL :{VOLUME_LONG} نفت STR_QUANTITY_LIVESTOCK :{COMMA} فقره از جارپایان STR_QUANTITY_GOODS :{COMMA} جعبه{P ی های} محموله تجاری STR_QUANTITY_GRAIN :{WEIGHT_LONG}حبوبات STR_QUANTITY_WOOD :{WEIGHT_LONG} چوب STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} سنگ آهن STR_QUANTITY_STEEL :{WEIGHT_LONG} فولاد STR_QUANTITY_VALUABLES :{COMMA} بسته{P "" های} اشیای قیمتی STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} سنگ مس STR_QUANTITY_MAIZE :{WEIGHT_LONG} ذرت STR_QUANTITY_FRUIT :{WEIGHT_LONG} میوه STR_QUANTITY_DIAMONDS :{COMMA} بسته{P "" های} الماس STR_QUANTITY_FOOD :{WEIGHT_LONG} غذا STR_QUANTITY_PAPER :{WEIGHT_LONG}از کاغذ STR_QUANTITY_GOLD :{COMMA} بسته‌ی طلا STR_QUANTITY_WATER :{VOLUME_LONG}از آب STR_QUANTITY_WHEAT :{WEIGHT_LONG} گندم STR_QUANTITY_RUBBER :{VOLUME_LONG} کائوچو STR_QUANTITY_SUGAR :{WEIGHT_LONG} شکر STR_QUANTITY_TOYS :{COMMA} اسباب بازی STR_QUANTITY_SWEETS :{COMMA} {P "" s}بسته شیرینی STR_QUANTITY_COLA :{VOLUME_LONG} نوشابه STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} پشمک STR_QUANTITY_BUBBLES :{COMMA} حباب STR_QUANTITY_TOFFEE :{WEIGHT_LONG} آب نبات STR_QUANTITY_BATTERIES :{COMMA}باطری STR_QUANTITY_PLASTIC :{VOLUME_LONG}پلاستیک STR_QUANTITY_FIZZY_DRINKS :{COMMA} نوشیدنی گاز دار STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PS STR_ABBREV_COAL :{TINY_FONT}زس STR_ABBREV_MAIL :{TINY_FONT}ML STR_ABBREV_OIL :{TINY_FONT}OL STR_ABBREV_LIVESTOCK :{TINY_FONT}LV STR_ABBREV_GOODS :{TINY_FONT}GD STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}چوب STR_ABBREV_IRON_ORE :{TINY_FONT}OR STR_ABBREV_STEEL :{TINY_FONT}ST STR_ABBREV_VALUABLES :{TINY_FONT}قیمتی ها STR_ABBREV_COPPER_ORE :{TINY_FONT}CO STR_ABBREV_MAIZE :{TINY_FONT}MZ STR_ABBREV_FRUIT :{TINY_FONT}FT STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}FD STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}GD STR_ABBREV_WATER :{TINY_FONT}آب STR_ABBREV_WHEAT :{TINY_FONT}گندم STR_ABBREV_RUBBER :{TINY_FONT}RB STR_ABBREV_SUGAR :{TINY_FONT}شکر STR_ABBREV_TOYS :{TINY_FONT}اسباب بازی STR_ABBREV_SWEETS :{TINY_FONT}شیرینی STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}CF STR_ABBREV_BUBBLES :{TINY_FONT}BU STR_ABBREV_TOFFEE :{TINY_FONT}آبنبات STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}FZ STR_ABBREV_NONE :{TINY_FONT}NO STR_ABBREV_ALL :{TINY_FONT}همه # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} مسافر STR_BAGS :{COMMA} کیف STR_TONS :{COMMA} تن STR_LITERS :{COMMA} لیتر STR_ITEMS :{COMMA} فقره STR_CRATES :{COMMA} جعبه # Colours, do not shuffle STR_COLOUR_DARK_BLUE :آبی تیره STR_COLOUR_PALE_GREEN :سبز روشن STR_COLOUR_PINK :صورتی STR_COLOUR_YELLOW :زرد STR_COLOUR_RED :قرمز STR_COLOUR_LIGHT_BLUE :آبی روشن STR_COLOUR_GREEN :سبز STR_COLOUR_DARK_GREEN :سبز تیره STR_COLOUR_BLUE :آبی STR_COLOUR_CREAM :کرم STR_COLOUR_MAUVE :بنفش تیره STR_COLOUR_PURPLE :بنفش STR_COLOUR_ORANGE :نارنجی STR_COLOUR_BROWN :قهوه‌ای STR_COLOUR_GREY :خاکستری STR_COLOUR_WHITE :سفید # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} مایل در ساعت STR_UNITS_VELOCITY_METRIC :{COMMA} کیلومتر/ساعت STR_UNITS_VELOCITY_SI :{COMMA} متر/ثانیه STR_UNITS_POWER_IMPERIAL :{COMMA}اسب بخار STR_UNITS_POWER_METRIC :{COMMA}اسب بخار STR_UNITS_POWER_SI :{COMMA}کیلو وات STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}تن STR_UNITS_WEIGHT_SHORT_SI :{COMMA}کیلوگرم STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} تن STR_UNITS_WEIGHT_LONG_SI :{COMMA} کیلو گرم STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}لیتر STR_UNITS_VOLUME_SHORT_SI :{COMMA}متر مکعب STR_UNITS_VOLUME_LONG_METRIC :{COMMA} لیتر STR_UNITS_VOLUME_LONG_SI :{COMMA} متر مکعب STR_UNITS_FORCE_SI :{COMMA} کیلو نیوتن STR_UNITS_HEIGHT_IMPERIAL :{COMMA} پا STR_UNITS_HEIGHT_SI :{COMMA} متر # Common window strings STR_LIST_FILTER_TITLE :{BLACK}متن فیلتر: STR_LIST_FILTER_OSKTITLE :{BLACK}وارد کردن رشته پایش STR_LIST_FILTER_TOOLTIP :{BLACK}وارد کردن واژه کلیدی برای پایش لیست STR_TOOLTIP_SORT_ORDER :{BLACK}انتخاب طرز مرتب کردن (نزولی/صعودی) STR_TOOLTIP_SORT_CRITERIA :{BLACK}انتخاب معیار مرتب کردن STR_TOOLTIP_FILTER_CRITERIA :{BLACK}انتخاب معیار پایش STR_BUTTON_SORT_BY :{BLACK}مرتب کردن بر اساس STR_BUTTON_LOCATION :{BLACK}مختصات STR_BUTTON_RENAME :{BLACK}نام گزاری STR_TOOLTIP_CLOSE_WINDOW :{BLACK}بستن پنجره STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}عنوان پنجره - پرای جابجا کردن پنجره این قسمت را بکشید. STR_TOOLTIP_SHADE :{BLACK}باریک کردن پنجره - فقط نوار عنوان نمایش داده می شود STR_TOOLTIP_DEBUG :{BLACK}نمایش اطلاعات عیب یابیNewGRF STR_TOOLTIP_STICKY :{BLACK}این پنجره را قفل کن که هنگامی که دکمه "همه پنجره ها را ببند" فشرده شد،این پنجره باز بماند STR_TOOLTIP_RESIZE :{BLACK}کلیک کنید و بکشید تا اندازه پنجره تغییر کند STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}تغییر دادن اندازه ی صفحه STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}نوار اسکرول - لیست را بالا و پایین می کند STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}نوار اسکرول - لیست را چپ و راست می کند STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}تخریب ساختمان و ... در بخشی از زمین.با فشردن همزمان دکمه Ctrl به طور مورب می توانید تخریب کنید.فشردن همزمان دکمه Shift برآورد هزینه را نمایش می دهد. # Query window STR_BUTTON_DEFAULT :{BLACK}حالت قراردادی STR_BUTTON_CANCEL :{BLACK}لغو STR_BUTTON_OK :{BLACK}تایید # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`۱۲۳۴۵۶۷۸۹۰-=\ضصثقفغعهخحجچشسیبلاتنمکگ ظطزرذدئو./ پ STR_OSK_KEYBOARD_LAYOUT_CAPS :×!@#$%^&*)(_+|ًٌٍريال،؛,][\{{}}َُِّۀآـ«»:" ةيژؤإأء<>؟ . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}اندازه: {NUM} STR_MEASURE_AREA :{BLACK}مساحت: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}اندازه: {NUM}{}تفاوت عرض: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}مساحت: {NUM} x {NUM}{}تفاوت اندازه: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}جمعیت STR_SORT_BY_CAPTION_NAME :{BLACK}نام STR_SORT_BY_CAPTION_DATE :{BLACK}تاریخ # These are used in dropdowns STR_SORT_BY_NAME :نام STR_SORT_BY_PRODUCTION :تولید STR_SORT_BY_TYPE :نوع STR_SORT_BY_TRANSPORTED :منتقل شده STR_SORT_BY_NUMBER :تعداد STR_SORT_BY_PROFIT_LAST_YEAR :سود در سال گذشته STR_SORT_BY_PROFIT_THIS_YEAR :سود در سال جاری STR_SORT_BY_AGE :سن STR_SORT_BY_RELIABILITY :قابلیت اعتماد STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :بر حسب ظرفیت کل هر محموله STR_SORT_BY_MAX_SPEED :سرعت حداکثر STR_SORT_BY_MODEL :مدل STR_SORT_BY_VALUE :قیمت STR_SORT_BY_LENGTH :طول STR_SORT_BY_LIFE_TIME :عمر مفید باقی مانده STR_SORT_BY_TIMETABLE_DELAY :تاخیر جدول زمانی STR_SORT_BY_FACILITY :نوع ایستگاه STR_SORT_BY_WAITING :ارزش محموله ی درانتظار STR_SORT_BY_RATING_MAX :حداکثر نرخ محموله STR_SORT_BY_RATING_MIN :کمترین نرخ محموله STR_SORT_BY_ENGINE_ID :شناسه موتور STR_SORT_BY_COST :قیمت STR_SORT_BY_POWER :توان STR_SORT_BY_TRACTIVE_EFFORT :تلاش کششی STR_SORT_BY_INTRO_DATE :تاریخ احداث STR_SORT_BY_RUNNING_COST :هزینه کارکرد STR_SORT_BY_POWER_VS_RUNNING_COST :توان/هزینه کارکرد STR_SORT_BY_CARGO_CAPACITY :ظرفیت محموله STR_SORT_BY_RANGE :بازه # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}متوقف کردن بازی STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}بالا بردن سرعت بازی STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}تنضیمات STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}ذخیره بازی، ترک بازی، خروج از بازی STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}نقشه، پنجره اضافی یا لیست علامت ها را نشان می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}لیست شهرها را نشان می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}نمایش یارانه ها STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}نمایش لیست ایستگاه های شرکت STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}اطلاعات مالی شرکت را نشان می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}توضیحات کلی راجع به شرکت را نشان می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}نمودار ها را نشان می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}جدول رده بندی شرکت ها را نشان می دهد STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}ساخت صنایع جدید یا لیست همه صنایع موجود STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}نمایش لیست قطار های شرکت، Ctrl+Click نمابش را بین گروه ها و قطار ها تغییر می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}نمایش لیست ماشین های شرکت. Ctrl+Click لیست خودرو/گروه را نمایش می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}نمایش لیست کشتی های شرکت.. Ctrl+Click لیست خودرو/گروه را نمایش می دهد STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}نمایش لیست هواپیماهای شرکت. Ctrl+Click لیست خودرو/گروه را نمایش می دهد STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}نمایش نواحی کوچکتر STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}نمایش نواحی بزرگتر STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ساخت راه آهن STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}ساخت جاده STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}ساخت اسکله STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}ساخت فرودگاه STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}باز کردن نوار ابزار محوطه سازی به منظور بالا بردن / پایین بردن زمین ، کاشت درخت، و غیره STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}صفحه ی صدا/موسیقی STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}نمایش تاریخ و زمان آخرین پیام / خبر و تنظیمات پیغام خصوصی STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}توضیحات درباره ی زمین، کنسول، خطایابی هوش مصنوعی، عکس گرفتن از صفحه نمایش، درباره OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}عوض کردن نوار ابزار # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}ذخیره سناریو، بارگزاری سناریو، خروج از ویرایشگر سناریو، خروج STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}ویرایشگر سناریو STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}روز شروع بازی را یک سال به عقب برگردان STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}روز شروع بازی را یک سال جلو ببر STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}برای وارد کردن سال شروع کلیک کنید STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}نقشه، لیست شهر ها را نشان می دهد STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}طراحی اتوماتیک سرزمین STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}طراحی مشخصات شهر ها STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}طراحی مشخصات کارخانه ها STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}طراحی مشخصات کارخانه ها STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}کاشت درخت.دکمه Shift برآورد قيمت را نشان مي دهد. STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}علامت گذاری STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}قراردادن شیء. گرفتن Shift برآورد هزینه ساخت را نمایش می دهد ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :ذخیره سناریو STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :بارگزاری سناریو STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :ذخیره heightmap STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :بارگزاری نقشه پستی/بلندی STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :خارج شدن از محیط طراحی STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :خروج ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :تنظیمات بازی STR_SETTINGS_MENU_CONFIG_SETTINGS :تنظیمات پیشرفته STR_SETTINGS_MENU_SCRIPT_SETTINGS :هوش مصنوعی / تنظیمات بازی STR_SETTINGS_MENU_NEWGRF_SETTINGS :تنظیمات NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :گزینه های شفافیت STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :نام شهرها نشان داده شود STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :نام ایستگاه ها نشان داده شود STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :نام محل های انتخابی نمایش داده شده است STR_SETTINGS_MENU_SIGNS_DISPLAYED :علامت ها نشان داده شوند STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :نشانه های رقبا و اسامی نمایش داده شده STR_SETTINGS_MENU_FULL_ANIMATION :انیمیشن کامل STR_SETTINGS_MENU_FULL_DETAIL :جزعیات کامل STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :ساختمان های نامرئی STR_SETTINGS_MENU_TRANSPARENT_SIGNS :شفاف کردن نشان های ایستگاه ها ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :ذخیره بازی STR_FILE_MENU_LOAD_GAME :فراخوانی بازی STR_FILE_MENU_QUIT_GAME :رها کردن بازی STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :خروج ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :نقشه ی دنیا STR_MAP_MENU_EXTRA_VIEW_PORT :نمای اضافه STR_MAP_MENU_SIGN_LIST :لیست نشانه ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :لیست شهر ها STR_TOWN_MENU_FOUND_TOWN :ساخت شهر ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :یارانه ها STR_SUBSIDIES_MENU_GOAL :اهداف فعلی ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :نمودار سود خالص STR_GRAPH_MENU_INCOME_GRAPH :نمودار درآمد STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :نمودار محموله های رسانده شده STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :نمودار پیشرفت شرکت ها STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :نمودار ارزش شرکت ها STR_GRAPH_MENU_CARGO_PAYMENT_RATES :نمودار قیمت پرداختی محموله ها ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :جدول اتحادیه شرکتها STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :جزییات امتیازهای کارایی STR_GRAPH_MENU_HIGHSCORE :جدول بالاترین امتیازها ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :فهرست صنایع STR_INDUSTRY_MENU_INDUSTRY_CHAIN :زنجیره تولید STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :ساخت کارخانه جدید ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :ساخت راه آهن STR_RAIL_MENU_ELRAIL_CONSTRUCTION :ساخت و ساز ریل برقی STR_RAIL_MENU_MONORAIL_CONSTRUCTION :ساخت مونوریل STR_RAIL_MENU_MAGLEV_CONSTRUCTION :ساخت ریل مغناطیسی ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :ساخت جاده STR_ROAD_MENU_TRAM_CONSTRUCTION :ساخت ساز تراموا ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :ساخت ساز آبراهه ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :ساختمان فرودگاه ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :محوطه سازی STR_LANDSCAPING_MENU_PLANT_TREES :کاشتن درخت STR_LANDSCAPING_MENU_PLACE_SIGN :قرار دادن علامت ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :صدا/موسیقی ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :گزارش آخرین پیام/خبر STR_NEWS_MENU_MESSAGE_HISTORY_MENU :تاریخچه پیام ها ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :اطلاعات زمین ها STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :باز و بسته کردن کنسول STR_ABOUT_MENU_AI_DEBUG :خطایابی هوش مصنوعی STR_ABOUT_MENU_SCREENSHOT :تصویر از بازی STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :عکس از صفحه تمام بزرگنمایی شده STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :اندازه پیش فرض عکس برداری از صفحه STR_ABOUT_MENU_GIANT_SCREENSHOT :تصویر از همه نقشه STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' درباره STR_ABOUT_MENU_SPRITE_ALIGNER :تراز کردن تصویر گرافیکی STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :باز/بسته کردن محدوده جعبه ها STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :نمایش/حذف بلوکهای کثیف ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 STR_ORDINAL_NUMBER_4TH :4 STR_ORDINAL_NUMBER_5TH :5 STR_ORDINAL_NUMBER_6TH :6 STR_ORDINAL_NUMBER_7TH :7 STR_ORDINAL_NUMBER_8TH :8 STR_ORDINAL_NUMBER_9TH :9 STR_ORDINAL_NUMBER_10TH :10 STR_ORDINAL_NUMBER_11TH :11 STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 STR_ORDINAL_NUMBER_16TH :16 STR_ORDINAL_NUMBER_17TH :17 STR_ORDINAL_NUMBER_18TH :18 STR_ORDINAL_NUMBER_19TH :19 STR_ORDINAL_NUMBER_20TH :20 STR_ORDINAL_NUMBER_21ST :21 STR_ORDINAL_NUMBER_22ND :22 STR_ORDINAL_NUMBER_23RD :23 STR_ORDINAL_NUMBER_24TH :24 STR_ORDINAL_NUMBER_25TH :25 STR_ORDINAL_NUMBER_26TH :26 STR_ORDINAL_NUMBER_27TH :27 STR_ORDINAL_NUMBER_28TH :28 STR_ORDINAL_NUMBER_29TH :29 STR_ORDINAL_NUMBER_30TH :30 STR_ORDINAL_NUMBER_31ST :31 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :بهمن STR_MONTH_ABBREV_FEB :اسفند STR_MONTH_ABBREV_MAR :فروردین STR_MONTH_ABBREV_APR :اردیبهشت STR_MONTH_ABBREV_MAY :خرداد STR_MONTH_ABBREV_JUN :تیر STR_MONTH_ABBREV_JUL :مرداد STR_MONTH_ABBREV_AUG :شهریور STR_MONTH_ABBREV_SEP :مهر STR_MONTH_ABBREV_OCT :آبان STR_MONTH_ABBREV_NOV :آذر STR_MONTH_ABBREV_DEC :دی STR_MONTH_JAN :ژانویه STR_MONTH_FEB :فوریه STR_MONTH_MAR :مارس STR_MONTH_APR :آوریل STR_MONTH_MAY :مه STR_MONTH_JUN :ژوئن STR_MONTH_JUL :جولای STR_MONTH_AUG :آگوست STR_MONTH_SEP :سپتامبر STR_MONTH_OCT :اکتبر STR_MONTH_NOV :نوامبر STR_MONTH_DEC :دسامبر ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}کلید STR_GRAPH_KEY_TOOLTIP :{BLACK}نمایش کلید نمودار STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}نمودار سود کارکرد STR_GRAPH_INCOME_CAPTION :{WHITE}نمودار دریافتی STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}تعداد واحدهای محموله های تحویل شده STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}رتبه بندی راندمان شرکت (رتبه بیشینه = 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}ارزش نقدی شرکت STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}مبلغ پرداختی محموله ها STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}روز های گذشته در حمل STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}مبلغ پرداختی برای 10 واحد (یا 10000لیتر) به ازای 20 مربع STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}فعال سازی همه STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}غیر فعال سازی همه STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}نمایش تمام محموله در نمودار نرخ نرخ پرداخت محموله ها STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}نمایش ندادن محموله ها در نمودار نرخ پرداخت محموله ها STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}روشن/خاموش کردن نمودار برای نوع محموله STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}نمایش جزئیات رتبه بندی راندمان # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}کلید نمودار شرکت STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}برای نمایش/عدم نمایش دریافتی شرکت بر روی نمودار کلیک کنید # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}جدول اتحادیه شرکت ها STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :مهندس STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :مدیر ترافیکی STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :رئیس حمل و نقل STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :مشاور جاده ها STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :رئیس کل STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :مشاور وزیر STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :وزیر ترابری STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :رئیس جمهور STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :ترک اصیل! # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}رتبه راندمان تفصیلی STR_PERFORMANCE_DETAIL_KEY :{BLACK}جزییات STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}مشاهده جزییات درباره این شرکت ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}خودرو ها: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}ایستگاه ها: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}کمینه سود: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}کمینه دریافتی: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}بیشینه دریافتی: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}تحویل شده: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}بار: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}پول: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}وام: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}مجموع: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}تعداد خودروهای که سال گذشته سوددهی داشته اند. این شامل وسایل نقلیه جاده ای ، قطار ، کشتی ها و هواپیما می باشد STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK} تعداد قطعات تازه سرویس شده ایستگاه. هر بخشی از یک ایستگاه (به عنوان مثال ایستگاه قطار، ایستگاه اتوبوس، فرودگاه) شمارش شده است، حتی اگر آنها به عنوان یک ایستگاه متصل باشند STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}سود از خودرو با کمترین درآمد (تنها وسایل نقلیه بزرگتر از دو سال در نظر گرفته) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK} مقدار پول نقد در سه ماهه با کمترین سود از 12 سه ماهه آخر STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK} مقدار پول نقد درآمده در این سه ماهه با بیشترین سود از 12 سه ماهه گذشته STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}تعداد محموله هایی که در چهار فصل گذشته تحویل شدند STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}تعداد نوع محموله هایی که در چهار فصل گذشته تحویل شدند STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}مقدار پولی که شرکت در بانک دارد STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}مقدار پولی که شرکت به صورت وام دریافت کرده است STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}تعداد نقاط ممکن # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}پخش جاز STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}همه: STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}مدل قدیمی STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}مدل جدید STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}خیابان داریوش کبیر STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}انتخابی 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}انتخابی 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}شدت صدای موسیقی STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}شدت صدای محیط STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}کمینه STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}بیشینه STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}آهنگ STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}عنوان STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}پخش تصادفی STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}برنامه STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}بازگشت به آهنگ قبلی در لیست انتخاب شده ها STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}آهنگ بعدی در لیست انتخاب شده ها STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}توقف موسیقی STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}پخش موسیقی STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}برای انتخاب موسیقی و افکت های صدا ولوم ها را تغییر دهید STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}انتخاب برنامه «همه آهنگ ها» STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}انتخاب برنامه «موسیقی های قدیمی» STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}انتخاب برنامه «موسیقی های جدید» STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}انتخاب برنامه «خیابان اِزی» STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}انتخاب برنامه «سفارشی 1»(تعریف شده توسط کاربر) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}انتخاب برنامه «سفارشی 2»(تعریف شده توسط کاربر) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}پخش به صورت لیست برهم ریخته STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}نمایش پنجره لیست آهنگهای انتخابی STR_ERROR_NO_SONGS :{WHITE}در مجموعه موسیقی آهنگی انتخاب نشده است. هیچ آهنگی پخش نخواهد شد # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}انتخاب برنامه پخش موسیقی STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}شماره ی آهنگ STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}برنامه - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}پاک کن STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}پاک کردن برنامه فعلی (برنامه های سفارشی شده 1 و سفارشی شده 2 فقط پاک می شوند) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}روی آهنگ کلیک کنید تا به برنامه فعلی اضافه شوند (فقط لیست سفارشی 1 و سفارشی 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}روی آهنگ کلیک کنید تا از برنامه فعلی پاک شوند (فقط لیست سفارشی 1 و سفارشی 2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}بالانرین شرکت هایی که به مرحله {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}جدول اتحادیه شرکت ها در {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :تاجر STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :موسس شرکت STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :کارخانه دار STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :سرمایه دار STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :نجیب زاده STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :بزرگ و با نفوذ STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :سرمایه دار مهم قرن STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} به وضعیت'{STRING}' دست یافت! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} از {COMPANY} به وضعیت '{STRING}' دست یافت! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}نقشه - {STRING} STR_SMALLMAP_TYPE_CONTOURS :حد فاصل ها STR_SMALLMAP_TYPE_VEHICLES :وسایل نقلیه STR_SMALLMAP_TYPE_INDUSTRIES :کارخانه‌ها STR_SMALLMAP_TYPE_ROUTES :راه ها STR_SMALLMAP_TYPE_VEGETATION :پوشش گیاهی STR_SMALLMAP_TYPE_OWNERS :صاحبان STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}حاشیه ی زمین را در نقشه نشان بده STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}وسایل نقلیه را در صفحه نشان بده STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}کارخانه ها را در نقشه نشان بده STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}مسیر های حمل و نقل را در نقشه نشان بده STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}نمایش گیاهان روی نقشه STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}صاحب زمین را در نقشه نشان بده STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}روی یکی از صنایع کلیک کنید تا نمایش داده شود.Ctrl+Click همه صنایع را پنهان می کند به غیر از کارخانه انتخاب شده. برای فعال کردن بقیه دوباره .Ctrl+Click کنید STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click برای مشاهده ویژگی های یک شرکت روی آن کلیک کنید.Ctrl+Click همه شرکت ها را مخفی می کند به جر شرکت انتخاب شد.با Ctrl+Click.دوباره همه شرکت ها فعال می شوند STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}جاده ها STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}راه آهن STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}ایستگاه/فرودگاه/بندر STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}ساختمانها/کارخانجات STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}ماشینها STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}قطارها STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}ماشین ها STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}کشتی ها STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}هواپیما STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}مسیر حمل و نقل STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}جنگل STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}ایستگاه قطار STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}ایستگاه بارگیری/تخلیه بار کامیون STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}ایستگاه اتوبوس STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}هواپیما/بالگرد STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}اسکله STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}زمین سنگی STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}زمین علفی STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}زمین بایر STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}محوطه ها STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}درختان STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}سخره ها STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}آب STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}بدون مالک STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}شهر STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}کارخانه STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}صحرا STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}برف STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}نشان دادن یا ندادن اسم شهر ها در نقشه STR_SMALLMAP_CENTER :{BLACK}موقعیت فعلی را به عنوان مرکز نقشه کوچک قرار بده STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}غیر فعال سازی همه STR_SMALLMAP_ENABLE_ALL :{BLACK}فعال سازی همه STR_SMALLMAP_SHOW_HEIGHT :{BLACK}نمایش ارتفاع STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}هیچکدام از صنایع را روی نقشه نشان نده STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}همه صنایع را روی نقشه نمایش بده STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}نمایش/عدم نمایش heightmap STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}هیچکدام از ویژگی های شرکت را روی نقشه نمایش نده. STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}همه ویژگی های شرکت را روی نقشه نمایش بده # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK} اخرین پیغام یا گزارش را نشان بده STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * توقف * * STR_STATUSBAR_AUTOSAVE :{RED}ذخیره اتوماتیک STR_STATUSBAR_SAVING_GAME :{RED}»»»» در حال ذخيره بازي «««« # News message history STR_MESSAGE_HISTORY :{WHITE}تاریخچه پیام ها STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}لیست آخرین پیام های اخباری STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}پیغام STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}شهروندان ورود اولین قطار را به {STATION} تبریک گفتند! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}شهروندان ورود اولین اتوبوس را به . . .{}{STATION} تبریک گفتند! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}شهروندان ورود اولین کامیون را به . . .{}{STATION} تبریک گفتند! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}شهروندان شهر . . .{}ورود اولين مسافر به {STATION}را جشن مي گيرند! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}شهروندان شهر . . .{}ورود اولين بارکش به {STATION}را جشن مي گيرند! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}جشن گرفتن شهروندان. . . {} اولین کشتی به {STATION} رسید! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}جشن شهروندان . . .{}اولین هواپیما به {STATION} می رسد! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}تصادف قطار!{}{COMMA} مرگ در انفجار حاصل از برخورد STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}تصادف ماشین!{}راننده پس از تصادف با قطار در آتش سوخت STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}تصادف ماشین!{}راننده پس از تصادف با قطار{COMMA} در آتش سوخت STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}تصادف هواپیما!{}{COMMA} مرگ در انفجار در {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}سانحه هواپیما!{}سوخت هواپیما تمام شده, {COMMA} نفر در این سانحه مردند STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}فاجعه کشتی هوایی در {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}خودرو بر اثر برخورد با «بشقاب پرنده» نابود شد! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}انفجار پالایشگاه نفت در نزدیکی {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}کارخانه {TOWN}در شرایط مشکوکی تخریب گردید! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}«بشقاب پرنده در نزدبکی {TOWN}به زمین نشست! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}یارانه تخریب معدن زغال سنگ در نزدیکی {TOWN}هدفمند شد(یارانه حذف شد)! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}سیل!{}دست کم {COMMA} نفر گمشده اند, و به نظر میرسد عده ی قابل توجهی نیز در سیل کشته شوند! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}شرکت حمل و نقل دچار مشکل! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} به فروش می رسد یا اعلام ورشکستگی می شود،مگر اینکه درآمدتان را سریع افزایش دهید! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}ادغام کننده شرکت ترابری! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} به {STRING} فروخته شد به قیمت {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}ورشکست! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} بسته شد و همه دارایی های شرکت فروخته شد! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}شرکت ترابری جدید آغاز به کار کرد! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} آغاز به ساخت و ساز در نزدیکی {TOWN} کرد! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} توسط {STRING} خریداری شد! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(مدیر) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} حامی ساخت و ساز در شهر جدید {TOWN} شده است! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK} {STRING} جدیدی در مجاورت {TOWN} در حال ساخت است! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK} {STRING} جدیدی در مجاورت {TOWN} در حال کاشته شدن است! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} تعطیلی فوری خود را اعلام کرد! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}مشکلات مالی باعث شد {STRING} تعطیلی فوری خود را اعلام کند! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}کمبود درختان مجاور {STRING} باعث شد که تعطیلی فوری خود را اعلام کننند! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT} {BLACK} اتحادیه پولی اروپا!{}{} یورو به عنوان تنها ارز برای معاملات روزمره در کشور معرفی گردید! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}رکود جهانی!{}{}کارشناسان اقتصادی از رکود اقتصادی فراگیر اظهار نگرانی می کنند! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}رکود برطرف شد!{}{}برطرف شدن رکود باعث گرمی بازار خرید و فروش گردید و شرکت ها تقویت می گردند! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} افزایش تولید داشت! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}رگه ی جدیدی از زغال در {INDUSTRY} پیدا شده!{}تولید این معدن دو برابر شد! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}مخزن جدیدی از نفت در مجاورت {INDUSTRY}پیدا شده!{}در نتیجه تولید خود را دو برابر کردند! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}پیشرفت روش مزرعه داری در {INDUSTRY} باعث شد تولید این مزرعه دو برابر شود! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} تولید در {INDUSTRY} به مقدار {COMMA}% افزایش یافت! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}تولید {INDUSTRY} 50% کاهش یافت STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}هجوم حشرات باعث تخریب {INDUSTRY}گردید!{}تولید به مقدار ۵۰% کاهش یافت! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} تولید در {INDUSTRY} ب مقدار {COMMA}۵۰% افزایش یافت! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} در گاراژ منتظر است STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} در گاراژ منتظر است STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} در گاراژ منتظر است STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE}در آشیانه در حال انتظار است # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :تعداد دستورهای نسبت داده ی {WHITE}{VEHICLE} کم تر از حد می باشد STR_NEWS_VEHICLE_HAS_VOID_ORDER :برنامه حرکت {WHITE}{VEHICLE} باطل شده است STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :برنامه جابجایی {WHITE}{VEHICLE} دستور تکراری دارد STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} یک ایستگاه نا معتبر در برنامه جابجایی خود دارد # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} قدیمی شده است STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} بسیار قدیمی شده است STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} بسیار قدیمی شده و سریعا احتیاج به جایگزینی دارد STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} نمی تواند مسیری برای ادامه دادن پیدا کند STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} گمشده STR_NEWS_VEHICLE_IS_UNPROFITABLE :سود سال گذشته {WHITE}{VEHICLE}به مقدار {CURRENCY_LONG} بوده است STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} نمی توان به مقصد بعدی رسید.مقصد دور از دسترس است STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} متوقف گردید چون تغییر کاربرد با شکست مواجه شد STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}نوسازی خودکار {VEHICLE}{}{STRING} با شکست مواجه شده است STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK} {STRING} جدید هم اکنون قابل دسترسی است! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK} {STRING} جدید هم اکنون قابل دسترسی است! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} دیگر {STRING} قبول نمی کند STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} دیگر {STRING} و {STRING} قبول نمی کند STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} از این پس {STRING} را هم قبول می کند STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} {STRING} و {STRING} را از این به بعد قبول می کند STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}پیشنهاد یارانه باطل شد:{}{}{STRING} از {STRING} به {STRING} دیگر یارانه ای به همراه نخواهد داشت STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}یارانه بازپس گرفته شد:{}{}{STRING} خدمات از {STRING} به {STRING} دیگر شامل یارانه نمی باشند STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}پیشنهاد پرداخت یارانه:{}{}نخستین {STRING} خدمات از {STRING} به {STRING} توسط فرماندار محلی به مدت یک سال شامل یارانه می گردد! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} برنده یارانه خدمات گردید!{}{}{STRING} خدمات از {STRING} به {STRING} به مدت یک سال شامل ۵۰ درصد اضافه می گردد! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} برنده یارانه خدمات گردید!{}{}{STRING} خدمات از {STRING} به {STRING} به مدت یک سال دوبرابر پرداخت میشود! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK} {STRING}برنده یارانه خدمات گردید!{}{}{STRING} دستمزد خدمات از {STRING} به {STRING} به مدت یک سال سه برابر پرداخت می شود! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}یارانه خدمات به {STRING}هدیه داده شد!{}{}{STRING} خدمات ترابری از {STRING} به {STRING} تا یک سال آینده چهار برابر پرداخت خواهد شد! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}ترافیک شدید در {TOWN}!{}{}هزینه روکش کردن آسفالت توسط {STRING} پرداخت گردیده و باعث 6 ماه بدبختی و دردسر برای رانندگان شده است! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}حمل و نقل انحصاری! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}مقامات محلی {TOWN} قرارداد حمل و نقل انحصاری را با {STRING} به مدت یکسال امضاء کردند! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}نمای اضافه {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK} به نمای اضافه منتقل کن STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}موقعیت نمای اصلی را به این نمای اضافه منتقل کن STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}موقعیت نمای اضافه را به نمای اصلی منتقل کن STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}موقعیت این نمای اضافهرا به نمای اصلی منتقل کن # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}تنظیمات بازی STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}واحد پول STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}انتخب واحد پول ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :پوند (£) STR_GAME_OPTIONS_CURRENCY_USD :دلار ($) STR_GAME_OPTIONS_CURRENCY_EUR :یورو (€) STR_GAME_OPTIONS_CURRENCY_JPY :ین (¥) STR_GAME_OPTIONS_CURRENCY_ATS :شیلینگ استرالیا (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :فرانک بلژیک (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :فرانک سوییس (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :کرونای چک (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :مارک آلمان (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :کرون دانمارک (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :پزوتا (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :مارک فنلاند (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :فرانک (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :دراخمای یونان (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :فورینت مجارستان (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :کرون ایسلندی (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :لیره ایتالیا (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :گیلدر هلندی (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :کرون نروژ (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :زلتای لهستانی (PLN) STR_GAME_OPTIONS_CURRENCY_RON :لئو رومانیایی (RON) STR_GAME_OPTIONS_CURRENCY_RUR :روبل روسیه (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :تولار اسلونی (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :کرون سوییس (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :لیره ترکیه (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :کرونای اسلواکی (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :رئال برزیل (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :کرونی استونی (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :لیتاس لیتوانی (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :وان کره جنوبی (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :رند آفریقای جنوبی (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :دلخواه... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}واحد های اندازه گیری STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}انتخاب واحدهای اندازه گیری ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :شاهنشاهی STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :متری STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK} خودروی جاده ای STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}انتخاب جهت فرمان ماشین ها STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :چپ فرمان STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :راست فرمان STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK} نام شهرها STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}انتخاب نوع نام شهرها ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :انگلیسی (اصلی) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :فرانسوی STR_GAME_OPTIONS_TOWN_NAME_GERMAN :آلمانی STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :انگلیسی (اضافه) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :آمریکای لاتین STR_GAME_OPTIONS_TOWN_NAME_SILLY :سیلی STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :سوئدی STR_GAME_OPTIONS_TOWN_NAME_DUTCH :هلندی STR_GAME_OPTIONS_TOWN_NAME_FINNISH :فنلاند STR_GAME_OPTIONS_TOWN_NAME_POLISH :لهستان STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :اسلواکی STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :نروژی STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :مجاری STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :اتریشی STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :رومانیایی STR_GAME_OPTIONS_TOWN_NAME_CZECH :چکی STR_GAME_OPTIONS_TOWN_NAME_SWISS :سوییسی STR_GAME_OPTIONS_TOWN_NAME_DANISH :دانمارکی STR_GAME_OPTIONS_TOWN_NAME_TURKISH :ترکیه ای STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :ایتالیایی STR_GAME_OPTIONS_TOWN_NAME_CATALAN :کاتالانی ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK} ذخیره اتوماتیک STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK} انتخاب فاصله زمانی بین ذخیره کردن های اتوماتیک STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :خاموش STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :هر ماه STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :هر ۳ ماه STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :هر ۶ ماه STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :هر ۱۲ ماه STR_GAME_OPTIONS_LANGUAGE :{BLACK}زبان STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}زبان واسط کاربری را برای استفاده انتخاب کنید STR_GAME_OPTIONS_FULLSCREEN :{BLACK}تمام صفحه STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}برای بازی کردن OpenTTD در حالت تمام صفحه این جعبه را انتخاب کنید STR_GAME_OPTIONS_RESOLUTION :{BLACK}وضوح تصویر STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}وضوح تصویر دلخواه را انتخاب کنید STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}قالب ذخیره تصویر بازی STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}قالب ذخیره تصویر بازی را انتخاب نمایید STR_GAME_OPTIONS_BASE_GRF :{BLACK}بسته گرافیک پایه STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بسته گرافیک پایه را انتخاب کنید STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} فایل وجود ندارد یا خراب است STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK} اطلاعات اضافه در مورد بسته ی گرافیکی پایه STR_GAME_OPTIONS_BASE_SFX :{BLACK}بسته صدای پایه را انتخاب کنید STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}بسته صدای پایه را انتخاب کنید STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}اطلاعات اضافه درباره بسته ی صدای پایه STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}بسته موسیقی پایه STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}بسته موسیقی پایه را انتخاب کنید STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} فایل خراب است STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}اطلاعات اضافه درباره بسته ی موسیقی پایه STR_ERROR_FULLSCREEN_FAILED :{WHITE}حالت تمام صفحه با شکست مواجه شد # Custom currency window STR_CURRENCY_WINDOW :{WHITE}واحد پول دلخواه STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}نرخ ارز: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}کم کردن ارزش واحد پول در ازای یک پوند (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}زیاد کردن ارزش واحد پول در ازای یک پوند (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}نرخ ارز واحد پول را در ازای یک پوند تنظیم کنید (£) STR_CURRENCY_SEPARATOR :{LTBLUE}جدا کننده: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}حرف جداکننده را انتخاب کنید STR_CURRENCY_PREFIX :{LTBLUE}پیشوند: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}پیشوند واحد پولتان را انتخاب کنید STR_CURRENCY_SUFFIX :{LTBLUE}پسوند: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}پسوند واحد پولتان انتخاب کنید STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}تبدیل به یورو: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}تبدیل به یورو: {ORANGE}هیچگاه STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}سال برای تبدیل شدن به یورو را انتخاب کنید STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}زودتر به یورو تبدیل شود STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}دیرتر به یورو تبدیل شود STR_CURRENCY_PREVIEW :{LTBLUE}پیشنما: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}۱۰۰۰۰ پوند (£) به واحد پول شما می شود STR_CURRENCY_CHANGE_PARAMETER :{BLACK}تغییر دلخواه پارامترهای واحد پول STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}حد اکثر تعداد رقبا :{ORANGE}{COMMA} STR_NONE :هیچکدام STR_FUNDING_ONLY :فقط سرمایه گذاری STR_MINIMAL :کمینه STR_NUM_VERY_LOW :خیلی کم STR_NUM_LOW :کم STR_NUM_NORMAL :عادی STR_NUM_HIGH :زیاد STR_NUM_CUSTOM :انتخابی STR_NUM_CUSTOM_NUMBER :دلخواه ({NUM}) STR_VARIETY_NONE :هیچکدام STR_VARIETY_VERY_LOW :خیلی کم STR_VARIETY_LOW :کم STR_VARIETY_MEDIUM :متوسط STR_VARIETY_HIGH :زیاد STR_VARIETY_VERY_HIGH :بسیار زیاد STR_AI_SPEED_VERY_SLOW :بسیار آهسته STR_AI_SPEED_SLOW :آهسته STR_AI_SPEED_MEDIUM :متوسط STR_AI_SPEED_FAST :سریع STR_AI_SPEED_VERY_FAST :بسیار سریع STR_SEA_LEVEL_VERY_LOW :خیلی کم STR_SEA_LEVEL_LOW :کم STR_SEA_LEVEL_MEDIUM :متوسط STR_SEA_LEVEL_HIGH :زیاد STR_SEA_LEVEL_CUSTOM :دلخواه STR_SEA_LEVEL_CUSTOM_PERCENTAGE :دلخواه ({NUM}%) STR_RIVERS_NONE :هیچ STR_RIVERS_FEW :کم STR_RIVERS_MODERATE :متوسط STR_RIVERS_LOT :زیاد STR_DISASTER_NONE :هیچکدام STR_DISASTER_REDUCED :کم STR_DISASTER_NORMAL :عادی STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :بسیار یکدست STR_TERRAIN_TYPE_FLAT :یکدست STR_TERRAIN_TYPE_HILLY :تپه مانند STR_TERRAIN_TYPE_MOUNTAINOUS :کوه مانند STR_CITY_APPROVAL_PERMISSIVE :آسان گیر STR_CITY_APPROVAL_TOLERANT :سخت گیر STR_CITY_APPROVAL_HOSTILE :دشمنانه STR_WARNING_NO_SUITABLE_AI :{WHITE}هیچ بسته هوش مصنوعی موجود نیست...{}شما می توانید چندین بسته هوش مصنوعی(AI) را از قسمت محتویات برخط بارگیری کنید # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}تنظیمات پیشرفته STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}متن فیلتر: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}نمایش همه STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}جمع کردن همه STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(بدون شرح) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}مقدار پیش فرض: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}نوع تنظیمات: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :تنظیمات نرم افزار ( در ذخیره سازی ها لحاظ نمیشود اما برتمام بازی تاثیرگذار است) STR_CONFIG_SETTING_TYPE_GAME_MENU :تنظیمات بازی ( در ذخیره سازیها اعمال میشود و بر بازیهای جدید موثر است) STR_CONFIG_SETTING_TYPE_GAME_INGAME :تنظیمات بازی ( در ذخیره سازی اعمال میشود و فقط در بازی فعلی تاثیر دارد) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :تنظیمات شرکت ( در ذخیره سازی ها اعمال میشود و در بازی فعلی موثر است) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}نمایش: STR_CONFIG_SETTING_RESTRICT_BASIC :تنظیمات پایه STR_CONFIG_SETTING_RESTRICT_ADVANCED :تنظیمات پیشرفته STR_CONFIG_SETTING_RESTRICT_ALL :تنظیمات حرفه ای/ همه تنظیمات STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :تنظیمات با مقادیر متفاوت با پیشفرض STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :تنظیمات با مقادیر متفاوت با تنظیمات بازی جدید شما STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :تمام تنظیمات STR_CONFIG_SETTING_OFF :خاموش STR_CONFIG_SETTING_ON :روشن STR_CONFIG_SETTING_DISABLED :غیر فعال STR_CONFIG_SETTING_COMPANIES_OFF :خاموش STR_CONFIG_SETTING_COMPANIES_OWN :شرکت من STR_CONFIG_SETTING_COMPANIES_ALL :همه شرکت ها STR_CONFIG_SETTING_NONE :هیچکدام STR_CONFIG_SETTING_ORIGINAL :اصلی STR_CONFIG_SETTING_REALISTIC :واقعی STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :چپ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :مرکز STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :راست STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :حداکثر اعتبار اولیه: {STRING} STR_CONFIG_SETTING_INTEREST_RATE :نرخ سود: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS :هزینه نگهداری: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED :سرعت ساخت و ساز: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :خرابی وسیله نقلیه: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :ضریب سوبسید: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS :هزینه های ساخت و ساز: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES :اجازه ساخت در دامنه ها و سواحل: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :اجازه محوطه سازی در زیر ساختمان ، ریلها، و غیره (شیب خودکار): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :اجازه محوطه سازی در زیر ساختمان ، ریلها، و غیره بدون نیاز به تخریب STR_CONFIG_SETTING_CATCHMENT :واقع بینانه تر شدن اندازه حوضه آبریز: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :اجازه برای داشتن قابلیت بیشتر ازبین بردن راه ها،پلها و تونل های شهر: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH :حداکثر طول قطارها: {STRING} STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} قطعه{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :مقدار دود/جرقه های خودرو : {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :روش سرعت گرفتن قطار: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :روش سرعت گرفتن خودرو: {STRING} STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_FORBID_90_DEG :غیر قابل پیچیدن سر پیچ های ۹۰° برای قطار و کشتی ها: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :قابلیت اتصال ایستگاه هایی که مستقیما به هم وصل نیستند: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD :استفاده از الگوریتم بهبود یافته برای بارگذاری : {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING :بارگیری وسایل نقلیه به تدریج: {STRING} STR_CONFIG_SETTING_INFLATION :تورم: {STRING} STR_CONFIG_SETTING_SELECTGOODS :بار را فقط زمانی به ایستگاه تحویل بده که درخواستی برای آن باشد: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :حداکثر طول پل: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :حداکثر طول تونل: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :روش ساخت و ساز اولیه صنعت توسط کاربر: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :هیچکدام STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :همانند دیگر صنایع STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :رونق گرفتن STR_CONFIG_SETTING_INDUSTRY_PLATFORM :زمین صاف اطراف کارخانه ها: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN :قابلیت به وجود آمدین جندین صنایع شبیه به هم به ازای هر شهر: {STRING} STR_CONFIG_SETTING_SIGNALSIDE :نمایش نشانگرها: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_LEFT :به سمت چپ STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :به سمت جهت رانندگی STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :به سمت راست STR_CONFIG_SETTING_SHOWFINANCES :نمایش پنجره مالی در پایان سال: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :برنامه های حرکت به طور پیش فرض «بدون توقف» باشند: {STRING} STR_CONFIG_SETTING_STOP_LOCATION :توقف قطار ها به طور پیش فرض در: {STRING} ایستگاه STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :ابتدا STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :میانه STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :انتها STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :جاده صف‌بندی خودروی جاده‌ای (با اثرات کوانتومی): {STRING} STR_CONFIG_SETTING_AUTOSCROLL :جابجا‌شدن نمایش هنگام نزدیک شدن نشانگر موس به لبه ها: {STRING} STR_CONFIG_SETTING_BRIBE :قابلیت رشوه دادن به مقامات محلی: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :قابلیت انحصاری کردن حقوق حمل و نقل: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :اگز یک شرکت حقوق انحصاری حمل و نقل یک شهر را بخرد، ایستگاه های دیگر بازیکنان(از جمله مسافربری و باربری) دیگر هیچگونه باری را طی یکسال قبول نمی کنند STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :اجازه ساخت و ساز ساختمان: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD :قابلیت بازسازی خیابان‌های شهر: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :قابلیت فرستادن پول به بقیه شرکت‌ها: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS :مضرب برای بار قطار تا حس قطار سنگین به وجود آید: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES :تعداد سوانح هوایی: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_NONE :هیچکدام STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :کاهش STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :عادی STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :اجازه رانندگی در خیابان‌های شهر{STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :اجازه استفاده از جاده یک بازیکن توسط دیگر رقیبان: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS :قابلیت ساخت ایستگاه‌های متصل به هم: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES :قابلیت استفاده از چندین بسته NewGRF: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}تغییر دادن این تنظیم هنگامی که خودرو وجود دارد ممکن نیست STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :تعمیر و نگهداری زیرساخت ها: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :فرودگاه‌ها هیچ‌گاه از کار نیافتند: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE :اعلام هشدار هنگام گم شدن وسیله نقلیه: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW :بازبینی برنامه حرکت وسایل نقلیه: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_OFF :خیر STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :بله، ولی به غیر از خودروهای ایستاده STR_CONFIG_SETTING_ORDER_REVIEW_ON :از همه خودرو‌ها STR_CONFIG_SETTING_WARN_INCOME_LESS :هشدار هنگام منفی بودن درآمد خودرو: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :وسایل نقلیه هیچگاه از بین نروند: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE :نوکردن خودکار وسایل نقلیه کهنه شده: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY :کمترین اندازه پول برای نو کردن وسایل نقلیه: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL :نمایش جمعیت شهر در عنوان شهر: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :صخامت خط ها در گراف: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :طراح زمین: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :اصلی STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :پیدایش زمین STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :تمام پالایشگاه ها در لبه های تقشه ساخته می شوند که ساحل جزیره است STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط برف: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :پستی و بلندی های شدید (فقط در حالت «پیدایش زمین») : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :بسیار هموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :هموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :ناهموار STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :بسیار ناهموار STR_CONFIG_SETTING_TREE_PLACER :الگوریتم قرار دهنده مکان درخت‌ها: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :هیچکدام STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :اصلی STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :بهبودیافته STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :جهت چرخش نقشه بلندی: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :پادساعت‌گرد STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :ساعت‌گرد STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :سطح ارتفاعی که نقشه‌ی سناریو می‌تواند داشته باشد: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :فعال کردن محوطه سازی با قطعه‌ها در مرزهای نقشه: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :در صورت غیر فعال شدن، تمامی لبه های نقشه دریا خواهد بود STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}یک یا چند قطعه در لبه شمالی که خالی نیست STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}یک یا چند قطعه در لبه شمالی که آب نیست STR_CONFIG_SETTING_SERVICEATHELIPAD :تعمیر و بازبینی بالگردها در فرودگاه به طور خودکار: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :وصل بودن نوار ابزار محوطه سازی به نوار ابزار وسایل نقلیه‌ی ریلی/جاده‌ای/آبی/هوایی: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :رنگ استفاده شده به عنوان زمین در نقشه کوچک: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :سبز STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :سبز تیره STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :بنفش STR_CONFIG_SETTING_REVERSE_SCROLLING :برعکس کردن جهت حرکت کردن صفحه: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :تصویر صاف در نمای اضافه: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :نمایش متن کمکی وقتی از چندین ابزار استفاده می شود: {STRING} STR_CONFIG_SETTING_LIVERIES :نمایش دخل و خرج شرکت: {STRING} STR_CONFIG_SETTING_LIVERIES_NONE :هیچکدام STR_CONFIG_SETTING_LIVERIES_OWN :شرکت خود STR_CONFIG_SETTING_LIVERIES_ALL :همه شرکت‌ها STR_CONFIG_SETTING_PREFER_TEAMCHAT :چت با تیم با دکمه «Enter»: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :عمل غلطک ماوس: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :بزرگنمایی نقشه STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :جابجا کردن نقشه STR_CONFIG_SETTING_SCROLLWHEEL_OFF :خاموش STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :سرعت حرکت نقشه با چرخاندن غلطک ماوس: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :شبیه سازی کلیک راست: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :دستور+کلیک STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :کنترل+کلیک STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :خاموش STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :حرکت در نقشه با کلیک چپ:: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :از این {STRING} برای نام فایل‌های ذخیره استفاده کن STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طولانی (31st Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :کوتاه(31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :پالت پیش فرض برای NewGRF هایی که پالتی برایشان مشخص نگردیده: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :پالت سیستم عامل داس STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :پالت ویندوز STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :توقف خودکار هنگام آغاز بازی جدید: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :قابلیت ها در زمان متوقف بودن بازی: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :هیچ کار STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :همه کارها غیر از ساخت و ساز STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :همه کارها به جز تغییر پستی/بلندی زمین STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :همه کارها STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :اسنفاده از لیست پیشرفته خودرو: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :استفاده از نشانه‌های بارگیری/بارگذاری: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :استفاده از تیک(هزارم ثانیه) به جای روز در برنامه ساعتی: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :نشان دادن ورود و خروج در جدول زمانی: {STRING} STR_CONFIG_SETTING_QUICKGOTO :ساخت سریع برنامه حرکت وسایل نقلیه: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :نوع پیش‌فرض ریل (بعد از بازی جدید/بارگزاری): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :اولین نمونه در دسترس STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :آخرین نمونه در دسترس STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :نمونه با بیشترین استفاده STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :نمایش ریلهای محفوظ: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :فعال ماندن ابزار ساخت و ساز پس از استفاده: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :گروه‌بندی هزینه‌ها در پنجره مالی شرکت: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :غیر فعال کردن ساختمان مربوط به خودرویی که در دسترس نیست: {STRING} STR_CONFIG_SETTING_MAX_TRAINS :بیشترین قطار یک شرکت: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :بیشترین خودروی‌جاده‌ای یک شرکت: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT :بیشترین هواپیمای یک شرکت: {STRING} STR_CONFIG_SETTING_MAX_SHIPS :بیشترین تعداد کشتی یک شرکت : {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS :غیرفعال بودن قطار برای رایانه: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :غیر فعال بودن خودروی‌جاده‌ای برای رایانه: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :غیر‌فعال بودن هواپیما برای رایانه: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS :غیر فعال بودن کشتی برای رایانه: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :امکان حضور هوش مصنوعی در بازی چندنفره: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes before scripts are suspended: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :درصد زمان برای تعمیر/نگهداری به نسبت زمان کار: {STRING} STR_CONFIG_SETTING_NOSERVICE :غیرفعال کردن تعمیر/بازنگری کلیه وسایل نقلیه وقتی که طبق تنظیمات بازی خودرو ها خراب نشوند : {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS :فعال کردن حد برای سرعت واگن: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS :غیر فعال کردن ریل برقی: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :رسیدن اولین وسیله نقلیه به یکی ازایستگاه های بازیکن: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :رسیدن اولین وسیله نقلیه به یکی ازایستگاه ها کامپوتر: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :حوادث / بلایا: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :اطلاعات شرکت: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :بازگشایی صنایع: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :بستن صنایع: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :تغییرات اقتصادی: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :تغییرات تولید صنایع در خدمت شرکت: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :تغییرات تولید صنایع در خدمت رقیب(ها): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :تغیرات تولید بقیه شرکت ها: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :راهنمایی یا اطلاعات درباره ی وسایل حمل و نقل شرکت: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :وسیله نقلیه جدید: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :تغیرات دریاف کالا: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :کمک هزینه: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :توضیهات کلی: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :خاموش STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :خلاصه STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :کامل STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :نمایش خبرهای رنگی در سال: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :سال شروع: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :فعال بودن اقتصاد ملایم (بیشتر،تغییرات کوچک انجام می‌شود): {STRING} STR_CONFIG_SETTING_ALLOW_SHARES :قابلیت خرید سهام بقیه شرکت‌ها: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :نصب علمک مکانیکی به جای چراغ راهنمایی قبل از سال: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :فعال کردن صفحه واسط کاربری برای نشانگر: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :نوع نشانگر پیش فرض: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :نشانگر توقف STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :نشانگر مسیر STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :نشانگر مسیر یکطرفه STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :]تغییر نوع نشانگرها: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :فقط نشانگرهای توقف STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :فقط نشانگرهای مسیر STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :همه STR_CONFIG_SETTING_TOWN_LAYOUT :نمایه خیابان‌های شهر جدید: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :اصلی STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :مسیرهای بهتر STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :قطعه ۲x۲ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :قطعه ۳x۳ STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :اتفاقی STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :قابلیت ساخت راه‌ توسط شهرها: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :امکان ساخته شدن شهر در محل ناهموار: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL :قابلیت کنترل سطح صدای فرودگاه‌ها توسط شهر: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING :ساخت شهر در بازی: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :ممنوع STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :مجاز STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :آزاد و با نمایه دلخواه STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :محل قرارگرفتن درخت‌ها: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :هیچکدام{RED}(سبب تعطیلی صنعت چوب والوار می‌شود) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :فقط در جنگلهای بارانی STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :همه جا STR_CONFIG_SETTING_TOOLBAR_POS :محل نوار ابزار اصلی: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :محل نوار وضعیت: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT :بیشترین تعداد پنجره‌های غیرمهم: {STRING} STR_CONFIG_SETTING_ZOOM_MIN :بیشترین حد زوم به درون: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :بیشترین حد زوم به بیرون: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :عادی STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :سرعت رشد شهر: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_NONE :هیچکدام STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :آهسته STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :عادی STR_CONFIG_SETTING_TOWN_GROWTH_FAST :تند STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :بسیار تند STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضرب ابتدایی اندازه شهرستان: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :حذف عناصر پوچ جاده در طول ساخت و ساز جاده: {STRING} STR_CONFIG_SETTING_GUI :{ORANGE}واسط کاربری STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}ساخت و ساز STR_CONFIG_SETTING_VEHICLES :{ORANGE}وسایل نقلیه STR_CONFIG_SETTING_STATIONS :{ORANGE}ایستگاه ها STR_CONFIG_SETTING_ECONOMY :{ORANGE}اقتصاد STR_CONFIG_SETTING_AI :{ORANGE}رقیبان STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}نمایش گزینه ها STR_CONFIG_SETTING_INTERACTION :{ORANGE}اثرمتقابل STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}نشانگرها STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}مدیریت محموله STR_CONFIG_SETTING_AI_NPC :{ORANGE}بازیگران رایانه STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}نوسازی خودکار STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}تعمیر و بازبینی STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}مسیریابی STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}قطارها STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}شهرها STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}صنایع STR_CONFIG_SETTING_PATHFINDER_OPF :اصلی STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(توصیه می گردد) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :مسیریاب برای قطارها: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :مسیریاب برای خودروهای جاده ای: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :مسیریاب برای کشتی ها: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :برگشت خودکار با رسیدن به نشانه ها: {STRING} STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}تغییر مقدار # Config errors STR_CONFIG_ERROR :{WHITE}خطا در فایل تنظیمات... STR_CONFIG_ERROR_ARRAY :{WHITE}... خطا در آرایه '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... مقدار نامعتبر '{STRING}' برای '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}...کاراکترهای انتهایی در پایان تنظیم '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}...نادیده گرفتن فایل NewGRF '{STRING}': شناسه تکراری با '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... نادیده گرفتن فایل NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :پیدا نشد STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ناامن برای استفاده ایستا STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :system NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :با این ورژن از OpenTTD همخوانی ندارد STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ناشناخته STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... سطح فشردگی'{STRING}' معتبر نیست STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... قالب ذخیره بازی '{STRING}' در دسترس نیست.برگردان به '{STRING}' # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}بازی جدید STR_INTRO_LOAD_GAME :{BLACK}ادامه بازی های قبلی STR_INTRO_PLAY_SCENARIO :{BLACK}بازی سناریو STR_INTRO_PLAY_HEIGHTMAP :{BLACK}بازی نقشه پستی/بلندی STR_INTRO_SCENARIO_EDITOR :{BLACK}ساخت سناریو STR_INTRO_MULTIPLAYER :{BLACK}بازی چند نفره STR_INTRO_GAME_OPTIONS :{BLACK}تنضیمات بازی STR_INTRO_ADVANCED_SETTINGS :{BLACK}تنظیمات پیشرفته STR_INTRO_NEWGRF_SETTINGS :{BLACK}تنظیمات NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}چک کردن محتوی آنلاین STR_INTRO_SCRIPT_SETTINGS :{BLACK} تنظیمات هوش مصنوعی / اسکریپت STR_INTRO_QUIT :{BLACK}خروج STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}شروع بازی جدید. Ctrl+Click پیش تنظیمات نقشه را رد و از تنظیمات گذشته استفاده می کند. STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}ادامه ی بازی گذشته STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}آغاز بازی جدید،استفاده از یک نقشه پستی/بلندی به عنوان محوطه بازی STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}آغاز بازی جدید،استفاده از یک سناریوی دلخواه STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}ساخت یک دنیای بازی/سناریوی دلخواه STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}آغاز یک بازی چند نفره STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}انتخاب «معتدل» برای سبک بازی STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}انتخاب «قطب شمال» برای سبک بازی STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}انتخاب «استوا» برای سبک بازی STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}انتخاب «سرزمین اسباب بازی‌ها» برای سبک بازی STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}نشان دادن تنظیمات بازی STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}نمایش تنظیمات پیشرفته STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}نمایش تنظیمات NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}بررسی وجود مجموعه ها و به روز رسانی های جدید در اینترنت STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}نمایش تنظیمات هوش مصنوعی و اسکریپت های بازی STR_INTRO_TOOLTIP_QUIT :{BLACK} خروج از 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}این ترجمه {NUM} رشته{P ی های}ترجمه نشده دارد. با ثبت نام کردن به عنوان مترجم ما را در بهتر سازی OpenTTD یاری نمایید. فایل readme.txt را برای جزییات بیشتر بخوانید. # Quit window STR_QUIT_CAPTION :{WHITE}خروج STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}آیا می‌خواهید از بازی خارج شوید و برگردید به{STRING}? STR_QUIT_YES :{BLACK}بله STR_QUIT_NO :{BLACK}خیر # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :هایکو STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}رها کردن بازی STR_ABANDON_GAME_QUERY :{YELLOW}آیا مطمئن هستی که میخواهی این بازی را از بین ببری؟ STR_ABANDON_SCENARIO_QUERY :{YELLOW}آیا مطمئنید که می خواهید این سناریو را رها کنید؟ # Cheat window STR_CHEATS :{WHITE}تقلبها STR_CHEATS_TOOLTIP :{BLACK}جعبه انتخاب ها نشان می دهند که قبلا از چه تقلبی استفاده کردید STR_CHEATS_WARNING :{BLACK}هشدار!شما می خواهید که به رقبای همکارتان خیانت کنید. بدانید که چنین رسوایی تا ابد به یاد خواهد ماند STR_CHEAT_MONEY :{LTBLUE}اضافه کردن پول به مقدار {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}بازی به عنوان شرکت: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}بولدوزر جادویی(ازبین بردن صنایع و اشیاء غیرقابل حرکت): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}قابلیت رد شدن تونل های متقاطع از یکدیکر: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}هواپیماهای جت دیگر روی فرودگاه های کوچک سقوط نمی کنند: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :آب و هوای معتدل STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :آب و هوای قطبی STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :آب و هوای استوایی STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :دنیای اسباب بازی ها STR_CHEAT_CHANGE_DATE :{LTBLUE}تغییر تاریخ: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}تغییر سال جاری STR_CHEAT_SETUP_PROD :{LTBLUE}قابلیت تغییر سطح تولید صنایع: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}طرح رنگ جدید STR_LIVERY_GENERAL_TOOLTIP :{BLACK}نمایش طرح رنگهای اصلی STR_LIVERY_TRAIN_TOOLTIP :{BLACK}نمایش طرح رنگهای قطار STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}نمایش طرح رنگهای خودروی جاده ای STR_LIVERY_SHIP_TOOLTIP :{BLACK}نمایش طرح رنگهای کشتی STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}نمایش طرح رنگهای هواپیما STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}انتخاب رنگ اولیه برای طرح انتخابی، Ctrl+Click این رنگ را برای تمام طرح ها تغییر می دهد. STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}انتخاب رنگ دوم برای طرح انتخابی، Ctrl+Click رنگ را برای تمام طرح ها تغییر می دهد. STR_LIVERY_PANEL_TOOLTIP :{BLACK}طرح رنگ را تغییر دهید ، یا طرح های متعدد را با کنترل + کلیک انتخاب کنید.استفاده از طرح را با کلیک بر روی جعبه انتخاب مشخص کنید STR_LIVERY_DEFAULT :طرح استاندارد STR_LIVERY_STEAM :موتور بخار STR_LIVERY_DIESEL :موتور دیزل STR_LIVERY_ELECTRIC :موتور برقی STR_LIVERY_MONORAIL :موتور تک ریل STR_LIVERY_MAGLEV :موتور ماگلِو STR_LIVERY_DMU :دی ام یو STR_LIVERY_EMU :ای اِم یو STR_LIVERY_PASSENGER_WAGON_STEAM :واگن مسافربری (بخار) STR_LIVERY_PASSENGER_WAGON_DIESEL :واگن مسافربری (دیزل) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :واگن مسافربری (برقی) STR_LIVERY_PASSENGER_WAGON_MONORAIL :واگن مسافربری (تک ریل) STR_LIVERY_PASSENGER_WAGON_MAGLEV :واگن مسافربری (ماگلو) STR_LIVERY_FREIGHT_WAGON :واگن باربری STR_LIVERY_BUS :اتوبوس STR_LIVERY_TRUCK :کامیون بارکش STR_LIVERY_PASSENGER_SHIP :کشتی مسافربری STR_LIVERY_FREIGHT_SHIP :کشتی باربری STR_LIVERY_HELICOPTER :بالگرد STR_LIVERY_SMALL_PLANE :هواپیمای کوچک STR_LIVERY_LARGE_PLANE :هواپیمای بزرگ STR_LIVERY_PASSENGER_TRAM :تراموای مسافربری STR_LIVERY_FREIGHT_TRAM :تراموای باربری # Face selection window STR_FACE_CAPTION :{WHITE}انتخاب صورت STR_FACE_CANCEL_TOOLTIP :{BLACK}لغو انتخاب صورت جدید STR_FACE_OK_TOOLTIP :{BLACK}تایید انتخاب صورت جدید STR_FACE_MALE_BUTTON :{BLACK}مرد STR_FACE_MALE_TOOLTIP :{BLACK}انتخاب صورت مردانه STR_FACE_FEMALE_BUTTON :{BLACK}زن STR_FACE_FEMALE_TOOLTIP :{BLACK}انتخاب صورت زنانه STR_FACE_NEW_FACE_BUTTON :{BLACK}صورت جدید STR_FACE_NEW_FACE_TOOLTIP :{BLACK}تولید صورت جدید با تنظیمات تصادفی STR_FACE_ADVANCED :{BLACK}پیشرفته STR_FACE_ADVANCED_TOOLTIP :{BLACK}انتخاب پیشرفته صورت STR_FACE_SIMPLE :{BLACK}ساده STR_FACE_SIMPLE_TOOLTIP :{BLACK}انتخاب ساده صورت STR_FACE_LOAD :{BLACK}بارگزاری STR_FACE_LOAD_TOOLTIP :{BLACK}بارگزاری صورت دلخواه STR_FACE_LOAD_DONE :{WHITE}صورت دلخواه شما از فایل تنظیمات بازی بارگزاری گردید STR_FACE_FACECODE :{BLACK}صورت کاربر،شماره‌ی. STR_FACE_FACECODE_TOOLTIP :{BLACK}دیدن و یا تنظیم شماره صورت رییس شرکت STR_FACE_FACECODE_CAPTION :{WHITE}دیدن و یا تنظیم شماره صورت رییس STR_FACE_FACECODE_SET :{WHITE}شماره صورت جدید ثبت گردید STR_FACE_FACECODE_ERR :{WHITE}صورت رییس شرکت را نمی توان به این شماره ثبت کرد - عدد باید بین 0 و 4,294,967,295 باشد! STR_FACE_SAVE :{BLACK}ذخیره STR_FACE_SAVE_TOOLTIP :{BLACK}ذخیره صورت دلخواه STR_FACE_SAVE_DONE :{WHITE}این صورت به عنوان صورت دلخواه شما در فایل تنظیمات بازی ذخیره می گردد STR_FACE_EUROPEAN :{BLACK}اروپایی STR_FACE_SELECT_EUROPEAN :{BLACK}انتخاب صورت های اروپایی STR_FACE_AFRICAN :{BLACK}آفریقایی STR_FACE_SELECT_AFRICAN :{BLACK}انتخاب صورت های آفریقایی STR_FACE_YES :بله STR_FACE_NO :خیر STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}فعال کردن سبیل و یا گوشواره STR_FACE_HAIR :مو: STR_FACE_HAIR_TOOLTIP :{BLACK}تغییر مو STR_FACE_EYEBROWS :ابروها: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}تغییر ابروها STR_FACE_EYECOLOUR :رنگ چشم: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}تغییر رنگ چشم STR_FACE_GLASSES :عینک: STR_FACE_GLASSES_TOOLTIP :{BLACK}فعال کردن عینک STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}تغییر عینک STR_FACE_NOSE :بینی: STR_FACE_NOSE_TOOLTIP :{BLACK}تغییر بینی STR_FACE_LIPS :لب ها: STR_FACE_MOUSTACHE :سبیل: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}تغییر لب ها و یا سبیل STR_FACE_CHIN :چانه: STR_FACE_CHIN_TOOLTIP :{BLACK}تغییر چانه STR_FACE_JACKET :کت: STR_FACE_JACKET_TOOLTIP :{BLACK}تغییر کت STR_FACE_COLLAR :یقه: STR_FACE_COLLAR_TOOLTIP :{BLACK}تغییر یقه STR_FACE_TIE :کراوات: STR_FACE_EARRING :گوشواره: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}تغییر کراوات یا گوشواره # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}چندنفره STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}اتصال: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}بین اینترنت و شبکه محلی داخلی یکی را انتخاب نمایید STR_NETWORK_SERVER_LIST_LAN :شبکه محلی STR_NETWORK_SERVER_LIST_INTERNET :اینترنت STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}نام بازیگر: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}این نامی است که بقیه بازیگران شما را به آن نام می شناسند STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}نام STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}نام بازی STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}سرویس گیرنده ها STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}سرویس گیرنده‌های آنلاین / بیشتربن تعداد سرویس گیرنده‌ها{}شرکت‌های آنلاین / بیشترین تعداد شرکت‌ها STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}اندازه نقشه STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}اندازه نقشه بازی{}برای مرتب سازی بر اساس محیط کلیک کنید STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}تاریخ STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}تاریخ فعلی STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}سال STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}تعداد سالهایی{}که بازی در حال اجراست STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}زبان، ویرایش برنامه سرویس دهنده و غیره. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}برای انتخاب روی یک بازی از لیست کلیک کنید STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}آخرین سرویس دهنده‌ای که شما به آن پیوسته بودید: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}برای انتخاب سرویس دهنده‌ای که آخرین بار در آن بازی کرده‌اید، کلیک کنید STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}اطلاعات بازی STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}سرویس گیرنده‌ها: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}زبان: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}زمین: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}اندازه نقشه: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}ویرایش سرویس دهنده: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}نشانی سرویس دهنده: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}تاریخ شروع: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}تاریخ فعلی: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}محافظت شده با رمز! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}سرویس دهنده خاموش STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}سرویس دهنده پر STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}عدم مطابقت ویرایش STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}عدم مطابقت NewGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}ورود به بازی STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}تازه سازی سرویس دهنده STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}تازه سازی اطلاعات سرویس دهنده STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}جستجوی سرویس دهنده STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}جستجو در شبکه برای سرویس دهنده STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}اضافه کردن سرویس دهنده STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}اضافه کردن یک سرویس دهنده به لیست که هربار برای بازی در حال اجرا آزمایش می گردد STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}اجرای سرویس دهنده STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}راه اندازی سرویس دهنده خود STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}نام خود را وارد نماببد STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}نشانی میزبان را وارد کنید # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}آغاز بازی چندنفره STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}نام بازی: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}بازی درلیست انتخاب بازی چند نفره دیگران به این نام نمایش داده خواهد شد STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}ثبت رمز STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}اگر بازی برای استفاده همگان نیست، بازی خود را با رمز محافظت کنید STR_NETWORK_START_SERVER_LAN_INTERNET :شبکه محلی / اینترنت STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :اینترنت (آگهی) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} سرویس گیرنده STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}بیشترین تعداد سرویس گیرنده: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}بیشترین تعداد سرویس گیرنده را مشخص کنید.لازم نیست دقیقا به تعداد نفرات باشد STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} شرک{P ت تها} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}بیشترین تعداد شرکت ها: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}محدود کردن سرویس دهنده به داشتن تعداد مشخصی شرکت STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} تماشاگر{P "" ها} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}بیشترین تعداد تماشاگر: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}محدود کردن سرویس دهنده به داشتن تعداد مشخصی تماشاگر STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}زبان گفتگو: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}دیگر بازیگران می فهمند که با چه زبانی در این سرویس دهنده گفتگو می شود STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}برای بازی شبکه‌ای یک نام وارد نمایید # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :هر زبانی STR_NETWORK_LANG_ENGLISH :انگلیسی STR_NETWORK_LANG_GERMAN :آلمانی STR_NETWORK_LANG_FRENCH :فرانسوی STR_NETWORK_LANG_BRAZILIAN :برزیلی STR_NETWORK_LANG_BULGARIAN :بلغاری STR_NETWORK_LANG_CHINESE :چینی STR_NETWORK_LANG_CZECH :چکی STR_NETWORK_LANG_DANISH :دانمارکی STR_NETWORK_LANG_DUTCH :هلندی STR_NETWORK_LANG_ESPERANTO :اسپرانتو STR_NETWORK_LANG_FINNISH :فنلاندی STR_NETWORK_LANG_HUNGARIAN :مجارستانی STR_NETWORK_LANG_ICELANDIC :ایسلندی STR_NETWORK_LANG_ITALIAN :ایتالیایی STR_NETWORK_LANG_JAPANESE :زاپنی STR_NETWORK_LANG_KOREAN :کُره‌ای STR_NETWORK_LANG_LITHUANIAN :لیتوانیایی STR_NETWORK_LANG_NORWEGIAN :نروژی STR_NETWORK_LANG_POLISH :لهستانی STR_NETWORK_LANG_PORTUGUESE :پرتغالی STR_NETWORK_LANG_ROMANIAN :رومانیایی STR_NETWORK_LANG_RUSSIAN :روسی STR_NETWORK_LANG_SLOVAK :اسلوواکیایی STR_NETWORK_LANG_SLOVENIAN :اسلوونیایی STR_NETWORK_LANG_SPANISH :اسپانیایی STR_NETWORK_LANG_SWEDISH :سوئدی STR_NETWORK_LANG_TURKISH :ترکی STR_NETWORK_LANG_UKRAINIAN :اوکراینی STR_NETWORK_LANG_AFRIKAANS :آفریقایی STR_NETWORK_LANG_CROATIAN :کرواسی STR_NETWORK_LANG_CATALAN :کاتالانی STR_NETWORK_LANG_ESTONIAN :استوونی STR_NETWORK_LANG_GALICIAN :گالیسیایی STR_NETWORK_LANG_GREEK :یونانی STR_NETWORK_LANG_LATVIAN :لاتویانی ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}سالن انتظار بازی چندنفره STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}آماده سازی برای پیوستن: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}لیستی از تمامی شرکت هایی که در بازی وجود دارند. شما می توانید به یکی از آنها بپیوندید یا در صورت وجود جای خالی برای ساخت شرکت، یک شرکت جدید بسازید STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}مشخصات شرکت STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}نام شرکت: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}گشایش: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}ارزش شرکت: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}موجودی فعلی: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}درآمد سال گذشته: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}کارایی: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}وسایل نقلیه: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}ایستگاه ها: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}بازیگران: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}شرکت جدید STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}ساختن یک شرکت جدید STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}تماشای بازی STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}دیدن بازی به عنوان یک تماشاگر STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}پیوستن به شرکت STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}کمک به مدیریت این شرکت # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}درحال وصل شدن... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) درحال وصل شدن... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) درخواست اجازه ورود... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) صبر کنید... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) بارگیری نقشه... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) پردازش داده... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) در حال ثبت... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}درخواست اطلاعات بازی... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}درخواست اطلاعات شرکت... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} تعداد سرویس دهند{P ه های} مقابل شما STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} مقدار بارگیری شده تاکنون STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} مقدار بارگیری شده تاکنون STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}قطع STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}سرویس دهنده محافظت شده است.رمز را وارد نمایید STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}شرکت محافظت شده است.رمز را وارد نمایید # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}لیست سرویس گیرنده ها STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}تماشا STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}شرکت جدید # Network client list STR_NETWORK_CLIENTLIST_KICK :اخراج STR_NETWORK_CLIENTLIST_BAN :قدغن کردن STR_NETWORK_CLIENTLIST_GIVE_MONEY :پول دادن STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :گفتگو با همه STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :گفتگو با شرکت STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :پیام خصوصی STR_NETWORK_SERVER :سرویس دهنده STR_NETWORK_CLIENT :سرویس گیرنده STR_NETWORK_SPECTATORS :تماشاگران STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}مقدار پولی که می خواهید دریافت نمایید را وارد کنید # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}رمز وارد شده را به خاطر نسپار STR_COMPANY_PASSWORD_OK :{BLACK}دادن رمز جدید به شرکت STR_COMPANY_PASSWORD_CAPTION :{WHITE}رمز شرکت STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}رمز پیش فرض شرکت STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}استفاده از این رمز شرکت به عنوان پیش فرض برای شرکت های جدید # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}پیوستن STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}پیوستن و بازی به عنوان این شرکت STR_COMPANY_VIEW_PASSWORD :{BLACK}رمز STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}شرکت خود را با رمز محافظت کنید تا هر بازیگری نتواند به شرکت شما بپیوندد STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}ثبت رمز جدید # Network chat STR_NETWORK_CHAT_SEND :{BLACK}ارسال STR_NETWORK_CHAT_COMPANY_CAPTION :[تیم] : STR_NETWORK_CHAT_CLIENT_CAPTION :[خصوصی] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[همه] : STR_NETWORK_CHAT_COMPANY :[تیم] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[تیم] به {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[خصوصی] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[خصوصی] به {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[همه] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}متن برای گفتگو در شبکه را وارد کنید # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}هیچ دستگاه شبکه ای یافت نشد یا بازی بدون ENABLE_NETWORK ساخته شده STR_NETWORK_ERROR_NOSERVER :{WHITE}هیچ بازی شبکه ای یافت نشد STR_NETWORK_ERROR_NOCONNECTION :{WHITE}سرویس دهنده به درخواست پاسخ نمی دهد STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}محتوی NewFGRF یکسان نیست و نمی توان وصل شد STR_NETWORK_ERROR_DESYNC :{WHITE}هماهنگ سازی بازی شبکه ای با شکست مواجه شد STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}اتصال بازی شبکه از بین رفت STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}فایل ذخیره شده بازی را نمی توان بارگزاری کرد STR_NETWORK_ERROR_SERVER_START :{WHITE}نمی توان سرویس دهنده را راه انداخت STR_NETWORK_ERROR_CLIENT_START :{WHITE}نمی توان وصل شد STR_NETWORK_ERROR_TIMEOUT :{WHITE}اتصال #{NUM} timed out STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}خطا در پروتکل تشخیص داده شد و اتصال بسته شد STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}ویرایش بازی این سرویس گیرنده با ویرایش سرویس دهنده مطابق نیست STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}رمز اشتباه STR_NETWORK_ERROR_SERVER_FULL :{WHITE}سرویس دهنده پر است STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}شما از ورود به این سرویس دهنده منع شده اید STR_NETWORK_ERROR_KICKED :{WHITE}شما از بازی اخراج شدید STR_NETWORK_ERROR_CHEATER :{WHITE}تقلب روی این سرویس دهنده ممنوع است STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}شما دستورات بسیار زیادی به سرویس دهنده فرستادید STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}شما بیش از حد زمان برای وارد کردن گذرواژه صرف کردید STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}رایانه شما بیش از حد برای پیوستن به بازی زمان صرف کرده STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}شما بیش از حد زمان برای بارگیری نقشه گذراندید STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}شما بیش از حد زمان برای پیوستن به سرویس دهنده گذراندید ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :خطای اصلی STR_NETWORK_ERROR_CLIENT_DESYNC :خطای ناهمگام سازی STR_NETWORK_ERROR_CLIENT_SAVEGAME :نمی توان نقشه را بارگزاری کرد STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :ارتباط از بین رفت... STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :خطای پروتکل STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :عدم مطابقت NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :نداشتن اجازه دسترسی STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :دریافت بسته نامعتبر یا ناخواسته STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :ویرایش بازبینی اشتباه STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :نام فبلا استفاده شده STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :رمز اشتباه STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :شرکت اشتباه در DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :اخراج توسط سرویس دهنده STR_NETWORK_ERROR_CLIENT_CHEATER :تلاش کرد از تقلب استفاده کند STR_NETWORK_ERROR_CLIENT_SERVER_FULL :سرویس دهنده پر STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :دستورات زیادی ارسال کرده STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :هیچ گذرواژه ای در زمان مقرر دریافت نگردید STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :خطای کلی طول کشیدن زمان بیش از حد STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :بارگیری نقشه بیش از حد طول کشید STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :پردازش نقشه بیش از حد طول کشید ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}اتصال مورد استفاده قطع شد STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}در {NUM} ثانیه گذشته هیچ داده ای از سرویس دهنده دریافت نگردیده # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :بازی متوقف شده ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :بازی هنوز متوقف است ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :بازی هنوز متوقف است ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :بازی هنوز متوقف است ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :بازی هنوز متوقف است ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :بازی از توقف بیرون آمد ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :تعداد بازیگران STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :در حال اتصال سرویس گیرنده ها STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :دستی STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :کد بازی ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :می رود STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} به بازی پیوست STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} به بازی پیوست (سرویس گیرنده #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} به شرکت پیوست #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} به تماشاچیان پیوست STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} یک شرکت جدید آغاز کرد (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} از بازی بیرون رفت ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} نامش را به {STRING} تغییر داد STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} به شرکت شما {2:CURRENCY_LONG} پول داد STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** شما {1:STRING}به شرکت {2:CURRENCY_LONG} دادید STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}سرویس دهنده جلسه را تعطیل کرد STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}راه اندازی مجدد سرویس دهنده...{}لطفا صبر کنید... # Content downloading window STR_CONTENT_TITLE :{WHITE}در حال دانلود STR_CONTENT_TYPE_CAPTION :{BLACK}نوع STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}نوع محتوی STR_CONTENT_NAME_CAPTION :{BLACK}نام STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}نام محتوی STR_CONTENT_MATRIX_TOOLTIP :{BLACK}برای مشاهده ی جزئیات روی خط کلیک کنید {}برای اتنخاب برای دانلود روی چک باکس کلیک کنید STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}انتخاب تمامی موارد STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}علامت گذاری تمامی موارد را برای بارگیری STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}انتخاب موارد ارتقاع STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} نشانه گذاری همه مواردی که برای بهبود محتوای موجود باید بارگیری شوند STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}پاک کردن تمام انتخاب ها STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}علامت گذاری تمامی موارد برای بارگیری نکردن STR_CONTENT_FILTER_TITLE :{BLACK}برچسب/پایش بر اساس نام STR_CONTENT_OPEN_URL :{BLACK}مشاهده تارنما STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}برای مشاهده محتویات به تارنمای اینترنتی مراجعه کنید STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}دانلود STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}شروع به دانلود موارد انتخاب شده STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}حجم کل دانلود: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}اطلاعات محتوی STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER} شما این گزینه را برای بارگیری انتخاب نکرده اید STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}شما این گزینه را برای بارگیری انتخاب کرده اید STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}این پیوست برای بارگیری انتخاب شده است STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}شما این را از قبل داشته اید STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}این محتوی ناشناخته است و قابلیت بارگیری در OpenTTD را ندارد STR_CONTENT_DETAIL_UPDATE :{SILVER}این مورد جایگزینی برای گزینه ی موجود است {STRING} STR_CONTENT_DETAIL_NAME :{SILVER}نام:{WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}ویرایش: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}شرح: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}آدرس اینترنتی: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}نوع: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}جحم دانلود: {BYTES}{WHITE} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}دلیل انتخاب: {STRING}{WHITE} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}وابستگی ها: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}برچسب ها: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}نرم افزار OpenTTD بدون استفاده از پشتیبانی "zlib" ساخته شده است STR_CONTENT_NO_ZLIB_SUB :{WHITE}... امکان دانلود این محتوی وجود ندارد! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :گرافیک پایه STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :هوش مصنوعی STR_CONTENT_TYPE_AI_LIBRARY :کتابخانه AI STR_CONTENT_TYPE_SCENARIO :سناریو STR_CONTENT_TYPE_HEIGHTMAP :نقشه STR_CONTENT_TYPE_BASE_SOUNDS :صداهای پایه STR_CONTENT_TYPE_BASE_MUSIC :موسیقی پایه STR_CONTENT_TYPE_GAME_SCRIPT :کد بازی STR_CONTENT_TYPE_GS_LIBRARY :کتابخانه GS # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}در حال دانلود... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}در حال درخواست فایل... STR_CONTENT_DOWNLOAD_FILE :{WHITE}دانلود شده {STRING} ({NUM} of {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}اتمام دانلود STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} از {BYTES} بارگیری شده ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}امکان برقراری ارتباط با سرور ممکن نیست... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}دانلود ناموفق بود... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... ارتباط از بین رفت STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... فایل قابلیت درج ندارد STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}بازگشایی فایل بارگیری شده ممکن نیست STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}گرافیک های یافت نشده STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}بله, فایلهای گرافیک را بارگیری کن STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}خیر, خروج OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}گزینه های شفافیت STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای نشانه های ایستگاه. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای درخت ها. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای خانه ها. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای صنایع. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای ساختمان ها مانند ایستگاه، گاراژ و نقطه های مسیر. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای پل ها. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای دستگاه ها نظیر فانوس دریایی و آنتن ها.کنترل+کلیک برای قفل کردن STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای جاده ها و ریل ها.کنترل+کلیک برای قفل کردن STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}فعال/غیر فعال کردن شفافیت برای نشانه پر و خالی شدن بار. کنترل+کلیک برای قفل کردن STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}اشیاء به جای شفاف، نامرئی شوند # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}نور ناحیه ی اطراف ایستگاه STR_STATION_BUILD_COVERAGE_OFF :{BLACK}خاموش STR_STATION_BUILD_COVERAGE_ON :{BLACK}روشن STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}منطقه تحت پوشش از سایت پیشنهادی را نشان نده STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}منطقه تحت پوشش از سایت پیشنهادی را نشان بده STR_STATION_BUILD_ACCEPTS_CARGO :{GOLD}{CARGO_LIST}{BLACK}قبول می کند: STR_STATION_BUILD_SUPPLIES_CARGO :{GOLD}{CARGO_LIST}{BLACK}تدارکات: # Join station window STR_JOIN_STATION_CAPTION :{WHITE}پیوستن ایستگاه STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}ساخت یک ایستگاه جداگانه STR_JOIN_WAYPOINT_CAPTION :{WHITE}پیوستن نقطه مسیر STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}ساخت یک نقطه مسیر جداگانه # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :ساخت راه آهن STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :ساخت و ساز ریل برقی STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :ساخت مونوریل STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :ساخت ریل مغناطیسی STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ساخت راه آهن. گرفتن دکمه کنترل وضیعیت ابزار را به صورت ساخت/حذف در می آورد. دکمه شیفت برآورد هزینه را نمایش می دهد STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}ساخت ریل راه آهن با روش ریل خودکار. گرفتن دکمه کنترل سبب ساخت/حذف ریل راه آهن می شود. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}ساخت گاراژ قطار(برای خرید و بازبینی قطارها). گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}تبدیل ریل به نقطه مسیر.گرفتن کنترل نقطه مسیر ها را به یکدیگر می پیوندد. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK} ساخت ایستگاه قطار. گرفتن کنترل ایستگاه ها را به یکدیگر متصل می کند.دکمه شیفت برآورد هزینه ساخت را نمایش می دهد STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}ساخت چراغ راهنمایی راه آهن STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK} ساخت پل راه آهن.دکمه شیفت برآورد قيمت را نشان مي دهد. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK} ساخت تونل راه آهن.دکمه شیفت برآورد قیمت را نشان می دهد. STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}تغییر بین حذف یا ساخت چراغ راهنمایی و ریل STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}تغییر/به روز رسانی نوع ریل. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_RAIL_NAME_RAILROAD :راه‌آهن STR_RAIL_NAME_ELRAIL :راه‌آهن برقی STR_RAIL_NAME_MONORAIL :تک ریل STR_RAIL_NAME_MAGLEV :ماگلِو # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}جهت گاراژ قطار STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}جهت گاراژ قطار را انتخاب نمایید # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}نقطه مسیر STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}نوع نقطه مسیر را انتخاب نمایید # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}انتخاب ایستگاه راه آهن STR_STATION_BUILD_ORIENTATION :{BLACK} جهت STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}انتخاب جهت ایستگاه راه آهن STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK} تعداد خطوط STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}انتخاب تعداد سکوها برای ایستگاه راه آهن STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}طول ایستگاه STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}انتخاب طول ایستگاه راه آهن STR_STATION_BUILD_DRAG_DROP :{BLACK}بکشید و بیاندازید STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}ساخت ایستگاه با استفاده از کشیدن و انداختن STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}کلاس ایستگاه را برای نمایش انتخاب کنید STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}ایک نوع ایستگاه را برای ساخت انتخاب کنید STR_STATION_CLASS_DFLT :ایستگاه پیش فرض STR_STATION_CLASS_WAYP :نقطه مسیر ها # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}انتخاب نشانگرها STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}سیگنال توقف (پرچم){}این ساده ترین نوع سیگنال است، سبب می شود تنها یک قطار در یک قطعه در یک زمان اجازه عبور داشته باشد. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}نشانگر ورود (semaphore){}سبز است تا زمانی که یک یا چند خروجی سبز از آن بخش از ریل موجود باشد.در غیر اینصورت قرمز نشان می دهد STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}نشانگر خروج (semaphore){}مانند نشانگر توقف عمل می کند ولی برای درست کار کردن پیش نشانگرهای ورودی و چندگانه لازم است STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}نشانگر چندگانه (semaphore){}مانند هر دو نشانگر ورودی و نشانگر خروجی عمل می کند. با آن می توانید درختی از پیش نشانگر ها بسازید STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}نشانگر مسیر (پرچم){}یک نشانگر مسیر اجازه می دهد که بیش از یک قطار به یک قطعه ریل در یک زمان وارد گردد، البته اگر قطار مسیری برای رسیدن به محل توقف امن داشته باشد. نشانگر های مسیر قابل رد شدن از پشت هستند STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}نشانگر مسیر یکطرفه (پرچم){}یک نشانگر مسیر یکطرفه اجازه می دهد که بیش از یک قطار به یک قطعه نشانگر در یک زمان وارد گردد،البته اگر قطار مسیری برای رسیدن به محل توقف امن داشته باشد. نشانگر های مسیر قابل رد شدن از پشت هستند STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}سیگنال توقف (برقی){}این ساده ترین نوع سیگنال است، سبب می شود تنها یک قطار در یک قطعه در یک زمان اجازه عبور داشته باشد. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}نشانگر ورود (برقی){}سبز است تا زمانی که یک یا چند خروجی سبز از آن بخش از ریل موجود باشد.در غیر اینصورت قرمز نشان می دهد STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}نشانگر خروج (برقی){}مانند نشانگر توقف عمل می کند ولی برای درست کار کردن پیش نشانگرهای ورودی و چندگانه لازم است STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}نشانگر چندگانه (برقی){}مانند هر دو نشانگر ورودی و نشانگر خروجی عمل می کند. با آن می توانید درختی از پیش نشانگر ها بسازید STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}نشانگر مسیر (برقی){}یک نشانگر مسیر اجازه می دهد که بیش از یک قطار به یک قطعه ریل در یک زمان وارد گردد، البته اگر قطار مسیری برای رسیدن به محل توقف امن داشته باشد. نشانگر های مسیر قابل رد شدن از پشت هستند STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}نشانگر مسیر یکطرفه (برقی){}یک نشانگر مسیر یکطرفه اجازه می دهد که بیش از یک قطار به یک قطعه نشانگر در یک زمان وارد گردد،البته اگر قطار مسیری برای رسیدن به محل توقف امن داشته باشد. نشانگر های مسیر قابل رد شدن از پشت هستند STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}تبدیل نشانگر{}کلیک بر روی نشانگرهای موجود آنها را به نوع نشانگر انتخاب شده تبدیل می کند, کنترل+کلیک گونه نشانگرهای موجود را تغییر می دهد. شیفت+کلیک برآورد هزینه تبدیل را نشان می دهد STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}اندازه قطعه برای کاشتن نشانگر(موقع کشیدن) STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}کم کردن اندازه قطعه کاشتن نشانگر(موقع کشیدن) STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}زیاد کردن اندازه قطعه کاشتن نشانگر(موقع کشیدن) # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}انتخب پل راه آهن STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}ساخت پل ماشین رو STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK} ساخت پل - بر روی پل مورد نظر خود کلیک کنید تا ساخته شود STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :معلق، فولادی STR_BRIDGE_NAME_GIRDER_STEEL :پیوسته، فولادی STR_BRIDGE_NAME_CANTILEVER_STEEL :پایه دار، فولادی STR_BRIDGE_NAME_SUSPENSION_CONCRETE :معلق، بتونی STR_BRIDGE_NAME_WOODEN :چوبی STR_BRIDGE_NAME_CONCRETE :بتونی STR_BRIDGE_NAME_TUBULAR_STEEL :لوله ای،فولادی STR_BRIDGE_TUBULAR_SILICON :لوله ای، سیلیکونی # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}ساخت جاده STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}ساخت و ساز تراموا STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}بخش ساخت جاده. دکمه ctrlعمل ساخت جاده را به حذف تغییر میدهد.دکمه shift به هزینه تقریبی ساخت تغییر میدهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}بخش ساخت ریل تراموا.گرفتن دکمه کنترل برای حذف ریل تراموا. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}بخش ساخت جاده با روش جاده خودکار. گرفتن دکمه کنترل برای حذف جاده. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}بخش ساخت ریل تراموا با روش ریل خودکار.گرفتن دکمه کنترل برای حذف ریل. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}ساخت گاراژ خودرو (برای خرید و بازبینی خودروها). گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}ساخت گاراژ تراموا (برای خرید و بازبینی تراموا). گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}ساخت ایستگاه اتوبوس. دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}ساخت ایستگاه تراموای مسافربری.گرفتن دکمه کنترل ایستگاه ها را به هم می پیوندد. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}ساخت ایستگاه بارگیری/تخلیه بار کامیون. دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}ساخت ایستگاه تراموای باری.گرفتن دکمه کنترل ایستگاه ها را به هم می پیوندد. گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}فعال/غیر فعال کردن مسیر یکطرفه STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}ساخت پل ماشین رو.دکمه Shift برآورد قیمت را نشان می دهد. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}ساخت پل تراموا.دکمه شیفت برآورد قیمت را نشان می دهد. STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}ساخت تونل ماشین رو.دکمه Shift برآورد قیمت را نشان می دهد STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}ساخت تونل تراموا.دکمه شیفت برآورد قیمت را نشان می دهد STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK} تغییر بین ساخت/حذف جاده STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}تغییر حالت بین ساخت/جذف برای ساخت و ساز تراموا # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}جهت گاراژ خودروی جاده ای STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}جهت گاراژ خودرو جاده ای را انتخاب نمایید STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}جهت گاراژ تراموا STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}جهت گاراژ تراموا را انتخاب نمایید # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}جهت ایستگاه اتوبوس STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}انتخاب جهت ایستگاه اتوبوس STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}ایستگاه باربری STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}انتخاب جهت محل بارگیری کامیون STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}جهت ایستگاه تراموای مسافربری STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}جهت ایستگاه مسافربری تراموا را انتخاب نمایید STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}جهت ایستگاه تراموای باربری STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}جهت ایستگاه باربری تراموا را انتخاب نمایید # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}ساخت و ساز راه های آبی STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}راه های آبی STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}ساخت آبراه.دکمه شیفت برآورد قيمت را نشان مي دهد. STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}ساخت سد.دکمه شیفت برآورد قيمت را نشان مي دهد. STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}ساخت گاراژ کشتی (برای خرید و بازبینی کشتی ها). گرفتن دکمه شیفت برآورد هزینه را نمایش می دهد STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}ساخت بندر. دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد. STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}یک شناور به عنوان نمایانگر راه قرار بده.دکمه Shift برآورد قیمت را نشان می دهد STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}ساخت مجرای آب.دکمه شیفت برآورد قیمت را نشان می دهد STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}محدوده آبی تعریف کنید.{}ساخت آبراه، تا زمانی که دکمه کنترل گرفته شده در سطح دریا، به جای آن محیط اطراف را پر می کند. STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}ساخت رودخانه ها # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}جهت گاراژ کشتی STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}جهت گاراژ کشتی را انتخاب نمایید # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}اسکله # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}فرودگاه ها STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}ساخت فرودگاه دکمه ctrl اجازه ساخت ایستگاه پراکنده را میدهد و دکمه shift هزینه تقریبی ساخت را نمایش میدهد # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}انتخاب فرودگاه STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}انتخاب اندازه/نوع فرودگاه STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}اندازه فرودگاه STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}نما {NUM} STR_AIRPORT_SMALL :کوچک STR_AIRPORT_CITY :شهر STR_AIRPORT_METRO :شهر بزرگ STR_AIRPORT_INTERNATIONAL :بین المللی STR_AIRPORT_COMMUTER :پر رفت و آمد STR_AIRPORT_INTERCONTINENTAL :بین قاره ای STR_AIRPORT_HELIPORT :فرودگاه بالگرد STR_AIRPORT_HELIDEPOT :گاراژ بالگرد STR_AIRPORT_HELISTATION :ایستگاه بالگرد STR_AIRPORT_CLASS_SMALL :فرودگاه کوچک STR_AIRPORT_CLASS_LARGE :فرودگاه بزرگ STR_AIRPORT_CLASS_HUB :فرودگاه قطبی STR_AIRPORT_CLASS_HELIPORTS :فرودگاه بالگرد STR_STATION_BUILD_NOISE :{BLACK}سروصدای تولید شده: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}محوطه سازی STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}پایین آوردن گوشه ی نقشه STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}بالا آوردن گوشه ی نقشه.گرفتن دکمه Ctrl به صورت مورب بالا می آورد.دکمه Shift برآورد قيمت را نشان مي دهد. STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}پستی/بلندی زمین را به اندازه اولین نقطه انتخاب شده در می آورد.گرفتن دکمه کنترل محیط را به طور مورب انتخاب می کند.گرفتن دکمه شیفت برآورد هزینه تغییر ارع سطح زمین را نشان می دهد STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}خرید زمین برای استفاده های بعدی.با گرفتن دکمه Shift برآورد قیمت را نمایش می دهد. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}انتخاب شیء STR_OBJECT_BUILD_TOOLTIP :{BLACK}شیء را برای ساخت انتخاب نمایید. گرفتن دکمه شیفت برآورد هزینه ساخت را نمایش می دهد STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}نوع شیء را برای ساخت انتخاب کنید STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}پیش نمای شیء STR_OBJECT_BUILD_SIZE :{BLACK}اندازه: {GOLD}{NUM} x {NUM} قطعه STR_OBJECT_CLASS_LTHS :فانوس دریایی STR_OBJECT_CLASS_TRNS :فرستنده # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}درختان STR_PLANT_TREE_TOOLTIP :{BLACK}نوع درخت را مشخص کنید تا کاشته شود. اگر این قطعه دارای درخت باشد، مستقل از نوع انتخاب شده، درخت کاشته میشود. STR_TREES_RANDOM_TYPE :{BLACK}درختان با نوع تصادفی STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}نشاندن درختان با نوع تصادفی.گرفتن دکمه شیفت برآورد هزینه ساخت را نمایش می دهد STR_TREES_RANDOM_TREES_BUTTON :{BLACK} درخت های تصادفی STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK} به شکل تصافی در تمام محل درخت بکار # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}طراحی اتوماتیک سرزمین STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}مکان های سنگی در نقشه ایجاد کن STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK} ناحیه ی بیابانی را مشخص کن {} دکمه ی "کنترل" را فشار بده تا حذف کند STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}افزایش مساحت زمین به بالا/پایین STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}کاهش مساحت زمین به بالا/پایین STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}نقشه ی تصادفی بساز STR_TERRAFORM_SE_NEW_WORLD :{BLACK}ساخت سناریو جدید STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}تمام تغییرات را بر گردان STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}حذف کلیه‌ی دارایی های شرکت از روی نقشه STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}تمام تغییرات را بر گردان STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}آیا مطمئنید که می خواهید همه دارایی های شرکت را از بین ببرید؟ # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}طراحی مشخصات شهر ها STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}شهر جدید STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}ساختن شهر جدید.shift+click تنها هزینه تقریبی ساخت را نمایش میدهد STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}شهر تصادفی STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}شهری در مکانی تصادفی بساز STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}تعدادی شهر با محل و جمعیت تصادفی STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}پوشاندن نقشه با شهرهای تصادفی STR_FOUND_TOWN_NAME_TITLE :{YELLOW}نام شهر: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}نام شهر STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}برای وارد کردن نام شهر کلیک کنید STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}نام تصادفی STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}تولید نام تصادفی جدید STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}اندازه ی شهر : STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}کوچک STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}متوسط STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}بزرگ STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}تصادفی STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}انتخاب اندازه ی شهر STR_FOUND_TOWN_CITY :{BLACK}شهر STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}شهرها از شهرستان های معمولی سریعتر رشد می کنند{}بسته به تنظیمات، موقع ساختن بزرگتر از شهرستان ها هستند STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}نمای خیابان های شهر: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}نمای خیابان ها را برای این شهر انتخاب کنید STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}اصلی STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}راه های بهتر STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}شبکه ۲x۲ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}شبکه ۳x۳ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}به صورت تصادفی # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}ساخت کارخانه جدید STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}صنعت مورد نظر خود را از این لیست انتخاب کنید STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :ساخت صنایع بسیار به طور تصادفی STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}پر کردن نقشه با صنایع با محل تصادفی STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}خرج: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}دورنما STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}ساخت STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}سرمایه گذاری # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}زنجیره ساخت برای صنعت {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}زنجیره ساخت برای بار {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}در حال ساخت صنایع STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}قبول کردن صنایع STR_INDUSTRY_CARGOES_HOUSES :{WHITE}خانه ها STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}روی صنایع کلیک کنید تا تولید کننده و مشتریان را ببینید STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}روی بار کلیک کنید تا تولیدکنندگان و مشتریان آنرا ببینید STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}نمایش زنجیره STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}نمایش صنایعی که بار را تولید و قبول می کنند STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}پیوند به نقشه کوچک STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}انتخاب صنایع نشان داده شده در نقشه کوچک # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}اطلاعات زمین STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}هزینه پاک کردن: {LTBLUE}0 STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}هزینه پاک کردن: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}درآمد زمان پاکسازی: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :0 STR_LAND_AREA_INFORMATION_OWNER :{BLACK}مالک: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}مالک جاده: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالک راه تراموا: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}مالک ریل راه آهن: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}فرماندار محلی: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :هیچکدام STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}مختصات: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}ساخته شده در: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}کلاس ایستگاه: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع ایستگاه: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}کلاس هواپیما: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}نام فرودگاه: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}نام قطعه فرودگاه: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}محموله های دریافتی : {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}حد سرعت ریل: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :صخره STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :سرزمین سنگلاخی STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :سرزمین بایر STR_LAI_CLEAR_DESCRIPTION_GRASS :چمن STR_LAI_CLEAR_DESCRIPTION_FIELDS :زمین ها STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :زمین پوشیده از برف STR_LAI_CLEAR_DESCRIPTION_DESERT :صحرا STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} ریل STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} ریل با نشانگر توقف STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} ریل با پیش نشانگر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} ریل با نشانگر خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} ریل با نشانگر چندگانه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} ریل با نشانگر مسیر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} ریل با نشانگر مسیر یکطرفه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} ریل با نشانگرهای توقف و پیش نشانگر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} ریل با نشانگرهای توقف و خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} ریل با نشانگرهای توقف و چندگانه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} ریل با نشانگرهای توقف و مسیر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} ریل با نشانگرهای توقف و مسیر یکطرفه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} ریل با پیش نشانگر و نشانگرخروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} ریل با پیش نشانگر و نشانگرچندگانه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} ریل با پیش نشانگر و نشانگز مسیر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} ریل با پیش نشانگر و نشانگر مسیر یکطرفه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} ریل با نشانگرهای خروج و چندگانه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} ریل با نشانگرهای خروج و مسیر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} ریل با نشانگرهای خروج و مسیر یکطرفه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} ریل با نشانگرهای چندگانه و مسیر STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} ریل با نشانگرهای چندگانه و مسیر یکطرفه STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} ریل با نشانگرهای مسیر و مسیر یکطرفه STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} گاراژ قطار STR_LAI_ROAD_DESCRIPTION_ROAD :جاده STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :جاده با چراغ راهنمایی رانندگی STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :جاده 3 لاین STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :گاراژ خودروی جاده ای STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :سطح عبور راه / راه آهن STR_LAI_ROAD_DESCRIPTION_TRAMWAY :راه تراموا # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (در دست ساخت) STR_LAI_TREE_NAME_TREES :درختان STR_LAI_TREE_NAME_RAINFOREST :جنگل بارانی STR_LAI_TREE_NAME_CACTUS_PLANTS :کاکتوس STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :ایستگاه راه آهن STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :آشیانه هواپیما STR_LAI_STATION_DESCRIPTION_AIRPORT :فرودگاه STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :محوطه بارگیری کامیون STR_LAI_STATION_DESCRIPTION_BUS_STATION :ایستگاه اتوبوس STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :اسکله STR_LAI_STATION_DESCRIPTION_BUOY :شناور STR_LAI_STATION_DESCRIPTION_WAYPOINT :نقطه مسیر STR_LAI_WATER_DESCRIPTION_WATER :آب STR_LAI_WATER_DESCRIPTION_CANAL :آبراه STR_LAI_WATER_DESCRIPTION_LOCK :قفل STR_LAI_WATER_DESCRIPTION_RIVER :رودخانه STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :خلیج یا ساحل رودخانه STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :گاراژ کشتی # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :تونل راه آهن STR_LAI_TUNNEL_DESCRIPTION_ROAD :تونل ماشین رو STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :پل معلق راه آهن فولادی STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :پل راه آهن با شاه تیر فولادی STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :پل راه آهن پایه فولادی STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :پل معلق راه آهن با بتون مسلح STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :پل راه آهن چوبی STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :پل راه آهن بتونی STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :پل لوله ای راه آهن STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :پل معلق فولادی STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :پل شاه تیر فولادی STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :پل پایه فولادی STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :پل معلق با بتون تقویت شده STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :پل ماشین رو چوبی STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :پل بتونی STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :پل جاده ای لوله ای STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :مجرای آب STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :فرستنده STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :فانوس دریایی STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :ساختمان اصلی شرکت STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :زمین خریداری شده # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}OpenTTD در باره ی STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD ویرایش {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی STR_SAVELOAD_LOAD_CAPTION :{WHITE}ادامه ی بازی STR_SAVELOAD_SAVE_SCENARIO :{WHITE}ذخیره سناریو STR_SAVELOAD_LOAD_SCENARIO :{WHITE}بارگذاری سناریو STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}بارگذاری نقشه پستی/بلندی STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}ذخیره Heightmap STR_SAVELOAD_HOME_BUTTON :{BLACK}برای برگشت به پوشه پیش فرض ذخیره اینجا را کلیک کنید STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} فضای آزاد STR_SAVELOAD_LIST_TOOLTIP :{BLACK}لیست درایو ها، پوشه ها و بازی های ذخیره شده STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}نام فعلی انتخاب شده برای ذخیره بازی STR_SAVELOAD_DELETE_BUTTON :{BLACK}حذف STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}فایل ذخیره بازی انتخاب شده را پاک کن STR_SAVELOAD_SAVE_BUTTON :{BLACK}ذخیره STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}ذخیره بازی با نام انتخاب شده STR_SAVELOAD_LOAD_BUTTON :{BLACK}بارگذاری STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}بارگذاری بازی انتخاب شده STR_SAVELOAD_DETAIL_CAPTION :{BLACK}جزییات بازی STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}هیچ اطلاعاتی در دسترس نیست STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}نام فایل ذخیره بازی را وارد کنید # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}سازنده دنیا STR_MAPGEN_MAPSIZE :{BLACK}اندازه نقشه: STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}تعداد شهرها: STR_MAPGEN_DATE :{BLACK}تاریخ: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}تعداد صنایع: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}ارتفاع خط برف: STR_MAPGEN_SNOW_LINE_UP :{BLACK}اضافه کردن یک واحد به ارتفاع خط برف STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}کم کردن یک واحد از ارتفاع خط برف STR_MAPGEN_RANDOM_SEED :{BLACK}شماره ساخت تصادفی: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}برای وارد کردن شماره تصادفی کلیک کنید STR_MAPGEN_RANDOM :{BLACK}انتخاب تصادفی STR_MAPGEN_RANDOM_HELP :{BLACK}شماره ساخت تصادفی برای ساخت زمین و پستی و بلندی ها به کار می رود STR_MAPGEN_LAND_GENERATOR :{BLACK}سازنده زمین: STR_MAPGEN_TREE_PLACER :{BLACK}الگوریتم درخت ها: STR_MAPGEN_TERRAIN_TYPE :{BLACK}نوع پستی/بلندی: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}سطح دریا: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}رودخانه ها: STR_MAPGEN_SMOOTHNESS :{BLACK}همواری: STR_MAPGEN_VARIETY :{BLACK}توزیع انواع: STR_MAPGEN_GENERATE :{WHITE}بساز # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}لبه های نقشه: STR_MAPGEN_NORTHWEST :{BLACK}شمال غربی STR_MAPGEN_NORTHEAST :{BLACK}شمال شرقی STR_MAPGEN_SOUTHEAST :{BLACK}جنوب شرقی STR_MAPGEN_SOUTHWEST :{BLACK}جنوب غربی STR_MAPGEN_BORDER_FREEFORM :{BLACK}قالب آزاد STR_MAPGEN_BORDER_WATER :{BLACK}دریا STR_MAPGEN_BORDER_RANDOM :{BLACK}تصادفی STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}تصادفی STR_MAPGEN_BORDER_MANUAL :{BLACK}دستی STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}جهت چرخش نقشه پستی/بلندی: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}نام نقشه پستی/بلندی: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}اندازه: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}یک عدد تصادفی وارد کنید STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}تغییر ارتفاع خط برف STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}تغییر سال آغاز # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}نوع سناریو STR_SE_MAPGEN_FLAT_WORLD :{WHITE}زمین تخت STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}یک زمین تخت بساز STR_SE_MAPGEN_RANDOM_LAND :{WHITE}زمین تصادفی STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}ارتفاع زمین تخت: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}کم کردن بک واحد از ارتفاع زمین تخت STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}اضافه کردن بک واحد به ارتفاع زمین تخت STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}تغییر ارتفاع زمین تخت # Map generation progress STR_GENERATION_WORLD :{WHITE}درحال ساخت دنیا... STR_GENERATION_ABORT :{BLACK}لغو STR_GENERATION_ABORT_CAPTION :{WHITE}لغو ساخت دنیا STR_GENERATION_ABORT_MESSAGE :{YELLOW}آیا مطمئنید که می خواهید روند ساخت را متوقف کنید؟ STR_GENERATION_PROGRESS :{WHITE}{NUM}% کامل شده STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}ساختن دنیا STR_GENERATION_RIVER_GENERATION :{BLACK}ساخت رودخانه STR_GENERATION_TREE_GENERATION :{BLACK}ساختن درخت STR_GENERATION_OBJECT_GENERATION :{BLACK}ساختن اشیاء STR_GENERATION_CLEARING_TILES :{BLACK}ساختن مناطق ناهموار و صخره ها STR_GENERATION_SETTINGUP_GAME :{BLACK}راه اندازی بازی STR_GENERATION_PREPARING_TILELOOP :{BLACK}اجرای حلقه قطعه ها STR_GENERATION_PREPARING_SCRIPT :{BLACK}کدهای در حال اجرا STR_GENERATION_PREPARING_GAME :{BLACK}آماده سازی بازی # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}تنظیمات NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}اطلاعات مفصل NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}فایل های NewGRF فعال STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}فایل های NewGRF غیر فعال STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}انتخاب موارد ثبت شده: STR_NEWGRF_FILTER_TITLE :{ORANGE}جستجوی کلمه: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}مورد از پیش ثبت شده ای که انتخاب شده را بارگذاری می کند STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}ذخیره به عنوان مورد از پیش ثبت شده STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}لیست فعلی را به عنوان موارد از پیش ثبت شده ذخیره کن STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}نام برای موارد از پیش ثبت شده STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}پاک کردن مورد از پیش ثبت شده STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}مورد از پیش ثبت شده ای که انتخاب شده را پاک می کند STR_NEWGRF_SETTINGS_ADD :{BLACK}اضافه STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}NewGRF انتخاب شده را به پیکربندی بازی اضافه می کند STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}بازبینی فایل ها STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}به روز رسانی لیست فایل های NewGRF در دسترس STR_NEWGRF_SETTINGS_REMOVE :{BLACK}حذف STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}NewGRF انتخاب شده را از پیکربندی بازی حذف می کند STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}حرکت به بالا STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}NewGRF انتخاب شده را به بالا می فرستد STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}حرکت به پایین STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}NewGRF انتخاب شده را به پایین می فرستد STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}یک لیست از فایلهای NewGRF که نصب شده است STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}ثبت پارامترها STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}نمایش پارامترها STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}تغییر پالت STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}تغییر نوع پالت برای NewGRF مورد نظر.{}اگر گرافیک صورتی رنگ به نظر آمد این پالت را تغییر دهید STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}ثبت تغییرات STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}یافتن مجموعه ای که کم است در اینترنت STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK} بررسی اینکه آیا مجموعه ای که کم است در اینترنت یافت می شود یا نه STR_NEWGRF_SETTINGS_FILENAME :{BLACK}نام فایل: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}ویرایش: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}کمترین ویرایش دارای سازگاری: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}پالت: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}پارامترها: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}هیچ اطلاعاتی در دسترس نیست STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}فایل همسان پیدا نشد STR_NEWGRF_SETTINGS_DISABLED :{RED}غیرفعال STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}با این ورژن از OpenTTD همخوانی ندارد # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}تغییر پارامترهای NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}بسته STR_NEWGRF_PARAMETERS_RESET :{BLACK}برگرداندن تغییرات STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}ثبت مقدار پیش فرض برای همه پارامترها STR_NEWGRF_PARAMETERS_DEFAULT_NAME :پارامتر{NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}تعداد پارامتر: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}رسیدگی - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}والد STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}بازرسی شی ء مکان والد STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} در {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :شی‌ء STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :نوع ریل STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}متغیر NewGRF 60 + پارامتر (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}جابجا کردن تصویر گرافیک {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}تصویر بعدی STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}نمایش تصویر بعدی، بدون انجام دادن هر گونه تغییرات در آخر STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}رفتن به تصویر STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}رفتن به تصویر بعد. اگر تصویر معمولی نیست به تصویر معمولی بعدی می رود STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}تصویر قبلی STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نمایش تصویر عادی قبلی، بدون انجام دادن هر گونه تغییرات بر آخر STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}نمایش تصویر انتخاب شده. تغییر مکان تصویر در زمان بارگزاری اعمال نمی شود STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}تغییر مکان تصویر، تغییر مقدار اضافه شونده به X و Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}مقدار اضافه شونده به X: {NUM}, مقدار اضافه شونده به Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}برداشتن تصویر STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}برداشتن یک تصویر از یک نقطه از صفحه نمایش STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}برو به تصویر # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}هشدار: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}خطا: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}خطای وخیم: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}یک خطای وخیم در NewGRF اتفاق افتاده: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} با TTDPatch که ویرایش آن توسط OpenTTD گزارش شده کار نمی کند STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} برای ویرایش {STRING}TTD می باشد STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} طراحی شده برای استفاده با {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :پارامتر نا معتبر برای {1:STRING}: پارامتر {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} باید قبلا از {STRING} بار زده می شد. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} باید بعد از {STRING} بار زده شود STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} نیاز به OpenTTD با ویرایش {STRING} یا بالاتر نیاز است STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :فایل GRF برای ترجمه شدن طراحی شده STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :تعداد NewGRF بیشتر از حد می باشد STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :در حال بارگزاری {1:STRING} به عنوان NewGRF ایستا با {STRING} مشکل همخوانی دارد STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} دارای یک تصویر خراب می باشد. تصویرهای خراب با علامت سوال قرمز (؟) نشان داده شدند. STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}بسته گرافیک استفاده شده تعدادی از تصاوبر را ندارد.{}لطفا بسته گرافیکی را به روز کنید STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} غیر فعال گردیده توسط {STRING} # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}اخطار! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}شما دارید در یک بازی درحال اجرا تغییر اعمال می کنید که ممکن است باعث برهم خوردن بازی شود.{}آیا مطمئنید؟ STR_NEWGRF_DUPLICATE_GRFID :{WHITE}نمی توان فایل را اضافه کرد: GRF ID تکراری STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}فایل تطبیق یافت نشد (GRF سازگار بارگذاری گردید) STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF های سازگار برای فایل هایی که موجود نیستند بارگذاری گردید STR_NEWGRF_DISABLED_WARNING :{WHITE}GRF هایی که همه فایلهای آن موجود نیست غیر فعال گردیدند STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}فایل های GRF موجود نیست STR_NEWGRF_UNPAUSE_WARNING :{WHITE}ادامه دادن بازی ممکن است باعث خطا و بسته شدن بازی گردد.اگر این اتفاق افتاد، این مورد را به عنوان خطا (باگ) گزارش ندهید.{}آیا می خواهید ادامه دهید؟ # NewGRF status STR_NEWGRF_LIST_NONE :هیچکدام STR_NEWGRF_LIST_ALL_FOUND :همه فایل ها موجود است STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}فایل های سازگار یافت شد STR_NEWGRF_LIST_MISSING :{RED}نبود فایل # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}رفتار NewGRF '{0:STRING}' به گونه ای است که باعث خطا یا/و بسته شدن بازی می گردد STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}وضعیت واگن قطار برقی '{1:ENGINE}' بدون حضور در گاراژ تغییر یافته STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}طول خودرو '{1:ENGINE}' را بدون حضور در گاراژ تغییر داده است STR_BROKEN_VEHICLE_LENGTH :{WHITE}قطار '{VEHICLE}' مربوط به شرکت '{COMPANY}' طول معتبر ندارد. این مشکل احتمالا بر اثر فایل های NewGRF به وجود آمده است. بازی ممکن است باخطا مواجه و بسته شود STR_NEWGRF_BUGGY :{WHITE}فایل NewGRF '{0:STRING}' اطلاعات اشتباه داده است STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}تغییر کاربری بار '{1:ENGINE}' متفاوت از آنچه که در لیست قروش ارائه کرده بود. این خطا ممکن است در نوسازی خودکار و با در هنگام تغییر کاربری مشکل ساز گردد STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' در روند طراحی سبب حلقه بی پایان گردیده STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}بازگشت تابع {1:HEX} نتیجه ناشناخته/نامعتبر بازگردانده است {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :«بار نامعتبر» STR_NEWGRF_INVALID_CARGO_ABBREV :؟؟ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} از «بار نامعتبر» STR_NEWGRF_INVALID_ENGINE :«مدل وسیله نقلیه نامعتبر» STR_NEWGRF_INVALID_INDUSTRYTYPE :«صنایع نامعتبر» # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}چک کردن برای فایل های NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}چک کردن فایل های NewGRF. زمان انجام، به تعداد فایلها بسته است... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF{P "" ها} از حدود تعداد {NUM} NewGRF{P "" ها} STR_NEWGRF_SCAN_ARCHIVES :جستجوی در بایگانی # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}لیست امضاء - {COMMA} امضاء{P "" "ها"} STR_SIGN_LIST_MATCH_CASE :{BLACK}حالت تطبیق STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}تاثیر/عدم تاثیر کوچک یا بزرگ بودن حروف برای فیلتر کردن # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}تغییر نام علامت STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}برو به نشانه بعدی STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}برو به نشانه قبلی STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}برای نشانه یک نام وارد کنید # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}شهرها STR_TOWN_DIRECTORY_NONE :{ORANGE}- هیچکدام - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}نام شهرها - کلیک روی نام شهر آن را در وسط صفحه نمایش می دهد. کنترل + کلیک یک نمای اضافه از مکان شهر باز می کند STR_TOWN_POPULATION :{BLACK}جمعیت جهان: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (شهر) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}جمعیت: {ORANGE}{COMMA}{BLACK} خانه ها: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}مسافران در ماه گذشته: {ORANGE}{COMMA}{BLACK} حداکثر: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}نامه ها در ماه گذشته: {ORANGE}{COMMA}{BLACK} حداکثر: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}نوع بار برای رشد شهر: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ضروری STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} در زمستان ضروری است STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} دریافت گردید STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (هنوز نیاز است) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (دریافت گردیده) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}رشد شهر هر {ORANGE}{COMMA}{BLACK} روز STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}رشد شهر هر {ORANGE}{COMMA}{BLACK} روز (ساخته شده) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}شهر رشد {RED}نمی {BLACK} کند STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}حد سروصدا در شهر: {ORANGE}{COMMA}{BLACK} بیشینه: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}نمایش شهر در وسط صفحه نمایش. کنترل+کلیک یک نمای اضافه از شهر باز می کند STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}مقامات محلی STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}نمایش اطلاعات مقامات محلی STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}تغییر نام شهر STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}گسترش STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}افزایش اندازه شهر STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}پاک کردن STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK} این شهر را به شکل کامل حذف کن STR_TOWN_VIEW_RENAME_TOWN_BUTTON :تغییر اسم شهر # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} مقامات محلی STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK} امتیازات شرکت STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}کارهای ممکن : STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}لیست کارهایی که می شود در این شهر انجام داد- برای اطلاعات بیشتر کلیک کنید STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}انجام بده STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}انجام عمل مشخص شده در لیست بالا STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :برنامه تبلیغاتی کوچک STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :برنامه تبلیغاتی متوسط STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :برنامه تبلیغاتی بزرگ STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :پرداخت هزینه بازسازی آسفالت خیابان ها STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :ساخت تندیس رییس شرکت STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :ساخت اختمان های جدید STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :خرید انحصاری کلیه حقوق حمل و نقل STR_LOCAL_AUTHORITY_ACTION_BRIBE :رشوه به مقامات محلی STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}اجرای یک برنامه آگهی برای جذب بیشتر مسافر و بار به شرکت حمل و نقل شما.{}قیمت: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}اجرای یک برنامه آگهی متوسط برای جذب بیشتر مسافر و بار به شرکت حمل و نقل شما.{}قیمت: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}اجرای یک برنامه آگهی بزرگ برای جذب بیشتر مسافر و بار به شرکت حمل و نقل شما.{}قیمت: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}پرداخت هزینه بازسازی روکش آسفالت شهری. سبب ترافیک قابل ملاحظه ای تا شش ماه می شود{}قیمت: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}ساخت مجسمه برای بزرگداشت شرکت شما{}قیمت: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}پرداخت هزینه ساخت ساختمان های تجاری.{}قیمت: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}خرید انحصاری حقوق حمل و نقل به مدت یک سال. مقامات شهر به مسافران و بارها اجازه استفاده از شرکت حمل و نقل دیگری را نمی دهند{}Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}رشوه به فرماندار محلی برای افزایش رده، با احتمال جریمه زیاد در صورت گیر افتادن.{}قیمت: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}هدف ها STR_GOALS_GLOBAL_TITLE :{BLACK}اهداف جهانی: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- هیچکدام - STR_GOALS_COMPANY_TITLE :{BLACK}اهداف شرکت: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}روی هدف کلیک کنید تا نمای اصلی را به مرکز صنایع/شهر/قطعه ببرد. Ctrl+Click یک نمای جدید از محل صنایع/شهر قطعه باز می کند # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :سوال ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :لغو STR_GOAL_QUESTION_BUTTON_OK :باشد STR_GOAL_QUESTION_BUTTON_NO :خیر STR_GOAL_QUESTION_BUTTON_YES :بله STR_GOAL_QUESTION_BUTTON_DECLINE :غیرقایل قبول STR_GOAL_QUESTION_BUTTON_ACCEPT :قبول STR_GOAL_QUESTION_BUTTON_IGNORE :نادیده گرفتن STR_GOAL_QUESTION_BUTTON_RETRY :تلاش دوباره STR_GOAL_QUESTION_BUTTON_PREVIOUS :قبلی STR_GOAL_QUESTION_BUTTON_NEXT :بعدی STR_GOAL_QUESTION_BUTTON_STOP :ایست STR_GOAL_QUESTION_BUTTON_START :راه‌اندازی STR_GOAL_QUESTION_BUTTON_GO :برو STR_GOAL_QUESTION_BUTTON_CONTINUE :ادامه STR_GOAL_QUESTION_BUTTON_RESTART :راه‌اندازی دوباره STR_GOAL_QUESTION_BUTTON_POSTPONE :به تاخیر انداختن STR_GOAL_QUESTION_BUTTON_SURRENDER :تسلیم STR_GOAL_QUESTION_BUTTON_CLOSE :بستن # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}یارانه ها STR_SUBSIDIES_OFFERED_TITLE :{BLACK}یارانه های پیشنهادی برای انجام سرویس های: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} از {STRING} به {STRING}{YELLOW} (توسط {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- هیچکدام- STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}سرویس هایی که قبلا یارانه ای بوده: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} از {STRING} به {STRING}{YELLOW} ({COMPANY}{YELLOW}, تا {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}روی سرویس کلیک کنید تا آن شهر/صنایع در مرکز صفحه نمایش نشان داده شود. کنترل+کلیک یک صفحه نمایش تازه برای محل شهر/صنایع باز خواهد کرد # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}نام ایستگاه ها- بر روی نام کلیک کنید تا مرکز صفحه را بر روی ایستگاه قرار دهد. Ctrl+Click برای گشودن یک پنجره نمای جدا از ایستگاه STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}برای انتخاب بیش از یک آیتم، کنترل را بگیرید STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} ایستگاه{P "" ها} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- هیچکدام - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}انتخاب تمامی تسهیلات STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}انتخاب همه ی انواع محموله ها (شامل محموله های در انتظار) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}هیچ نوع محموله در انتظار نیست # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}در انتظار: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} منشعب شده از {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}قبول می کند STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}نشان دادن لیست کالاهای قابل دریافت STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}قبول می کند: {WHITE}{CARGO_LIST} STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}رده بندی STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}نشان دادن رتبه بندی ایستگاه STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}رده بندی محلی درباره ی وضعیت حمل و نقل STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :ترسناک STR_CARGO_RATING_VERY_POOR :بسیار ضعیف STR_CARGO_RATING_POOR :ضعیف STR_CARGO_RATING_MEDIOCRE :متوسط STR_CARGO_RATING_GOOD :خوب STR_CARGO_RATING_VERY_GOOD :بسیار خوب STR_CARGO_RATING_EXCELLENT :عالی STR_CARGO_RATING_OUTSTANDING :بسیار عالی ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}مرکز تصویر اصلی را روی محل ایستگاه قرار بده. Ctrl+Click برای گشودن یک پنجره نما از ایستگاه STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}تغییر نام ایستگاه STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}همه قطار هایی که در ایستگاه هایشان دارای زمانبندی می باشند را نشان می دهد. STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}همه خودروهایی هایی که در ایستگاه هایشان دارای زمانبندی می باشند را نشان می دهد. STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}همه هواپیماهایی که در ایستگاه هایشان دارای زمانبندی می باشند را نشان می دهد. STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}همه کشتی هایی هایی که در ایستگاه هایشان دارای زمانبندی می باشند را نشان می دهد. STR_STATION_VIEW_RENAME_STATION_CAPTION :نام گذاری محوطه ایستگاه/بارگیری # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}تغییر نام نقطه مسیر STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}تغییر نام شناور STR_EDIT_WAYPOINT_NAME :{WHITE}ویرایش نام نقطه راه # Finances window STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}هزینه/دریافتی STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}ساخت و ساز STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}خودرو های جدید STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}هزینه های نگهداری قطار STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}هزینه های نگهداری خودروهای جاده STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}هزینه های نگهداری هواپیما STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}هزینه های نگهداری کشتی STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}هزینه های نگهداری مستغلات STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}درآمد قطارها STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}زیرساخت # Company view STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} هواپیما STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}ارزش شرکت: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% توسط {COMPANY} خریداری شده) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}زیرساخت: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} قطعه {P ی های} ریل STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} قطعه{P ی های}راه STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} قطعه{P ی های}آب STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} قطعه{P ی های}ایستگاه STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} فرودگاه{P "" ها} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}هیچکدام STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}ساخت ساختمان مرکزی STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}دیدن ساختمان مرکزی STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}جزییات STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}مشاهده جزییات تعداد زیرساخت ها STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}25% سهام شرکت را بخر STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}25% سهام شرکت را بفروش STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}25% سهام این شرکت را بخر.Shift+Click برآورد قیمت سهام را بدون فروش سهام نشان می دهد. STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}25% سهام این شرکت را بفروش.دکمه Shift+Clickبرآورد قیمت را بدون فروش سهام نمایش می دهد STR_BUY_COMPANY_MESSAGE :{WHITE}ما به دنبال یک شرکت حمل و نقل هستیم که مایل باشد مالکیت شرکت ما را بصورت یکجا در اختیار بگیرد.{}{}آیا شما مایل به خرید شرکت {COMPANY} به مبلغ {CURRENCY_LONG} هستید؟ # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}زیرساخت {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}قطعه های ریل: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}نشانگرها STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}قطعه های راه: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}راه STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}تراموا STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}قسمتهای زیر آب: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}کانال ها STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}ایستگاه ها: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}قطعه های ایستگاه STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}فرودگاه ها STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/سال ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/سال # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :کارخانه ها STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- هیچ - STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% انتقال داده شده) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}تولید در ماه گذشته: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% منتقل شد) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}مرکز تصویر را روی کارخانه قرار بده.Ctrl+Click کنید تا پنجره نمایی از کارخانه نمایش داده شود ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}مواد اولیه: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}محصولات: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}محصولات: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} قطار STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} ماشین STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} هواپیما STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}قطارها-برای اطلاعات بیشتر روی قطار کلیک کنید STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}کشتی ها - برای اطلاعات بیشتر روی کشتی کلیک کنید STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}هواپیما - برای اطلاعات بیشتر روی هواپیما کلیک کنید STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}سود امسال : {CURRENCY_LONG} (سود پارسال: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :قطارهای موجود STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :خودروهای موجود STR_VEHICLE_LIST_AVAILABLE_SHIPS :کشتی های موجود STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :هواپیماهای موجود STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}مشاهده ی تمامی موتورهای موجود برای این نوع وسیله ی نقلیه STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}اداره ی لیست STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}فرستادن دستورالعمل ها برای تمامی وسایل نقیله موجود در این لیست STR_VEHICLE_LIST_REPLACE_VEHICLES :جایگزین کردن وسایل نقلیه STR_VEHICLE_LIST_SEND_FOR_SERVICING :فرستادن برای سرویس STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :فرستادن به ایستگاه نگه داری فنی STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :فرستادن به ایستگاه نگه داری فنی STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :فرستادن به مقر فنی STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :فرستادن به آشیانه # Group window # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :قطار جدید STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :قطار جدید مونوریل STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :قطار جدید ریل مغناطیسی STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :وسایل ریل خط آهن STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :ماشین های جدید STR_BUY_VEHICLE_AIRCRAFT_CAPTION :هواپیمای جدید STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}سرعت در اقیانوس: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}سرعت در کانال/رودخانه: {GOLD}{VELOCITY} STR_PURCHASE_INFO_REFITTABLE :(قابل تعمیر) STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}برد: {GOLD}{COMMA} قطعه STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}لیست انتخاب قطار - برای اطلاعات بیشتر روی وسیله کلیک کنید STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}لیست انتخاب کشتی - برای اطلاعات بیشتر روی کشتی کلیک کنید STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}لیست انتخاب هواپیما - برای اطلاعات بیشتر روی هواپیما کلیک کنید STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}ساخت وسیله نقلیه STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}خرید وسیله نقلیه STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}خرید هواپیما STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}خرید قطار مشخص شده. Shift+Click کنید تا قبل از خرید، مبلغ تقریبی آنرا نمایش دهد STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}خرید کشتی مشخص شده . Shift+Click کنید تا هزینه تقریبی نمایش داده شود STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}خرید هواپیمای مشخص شده. برای مشاهده هزینه تقریبی Shift+Click کنید STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}تغییر نام STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}تغییر نام STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}نام گذاری مجدد STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}نام گذاری مجدد STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}تغییر نام نوع قطار STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}تغییر نام انواع ماشین ها STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}نام گذاری مجدد نوع کشتی STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}نامگذاری مجدد نوع هواپیما STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}تغییر نام انواع قطار ها STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}تغییر نام انواع ماشین ها STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}نام گذاری مجدد نوع کشتی STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}نامگذاری مجدد نوع هواپیما # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}قطارها-برای اطلاعات بیشتر روی قطار کلیک کنید. وسیله را بکشید تا آن را از قطار خارج/وارد کنید STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}کشی ها -برای اطلاعات بر روی کشتی کلیک راست کنید STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}هواپیما - برای اطلاعات بیشتر روی هواپیما کلیک کنید STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}قطار را برای فروش به اینجا بکشید STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}کشتی را به اینجا بکشید تا فروخته شود STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}برای فروش هواپیما آن را به اینجا بکش STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}وسیله ی جدید STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}وسایل نقلیه ی جدید STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK} هواپیمای جدید STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}خرید قطار تازه STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}خرید کشتی تازه STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}خرید هواپیمای تازه STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}انتقال نمای اصلی را به جایگاه ایستگاه قطار.Ctrl+Click یک نمای جدید از جایگاه ایستگاه می سازد. STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه لنگرگاه کشتی. برای ایجاد یک پنجره نما از لنگرگاه Ctrl+Click کنید STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه آشیانه.برای یک پنجره نما از آشیانه Ctrl+Click کنید # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}پیغام از سازنده ی وسیله نقلیه STR_ENGINE_PREVIEW_MESSAGE :{GOLD}ما به تازگی {STRING} را طراحی کرده ایم- آیا مایلید در یک سال اولان را به شگل انحصاری مورد تست قرار دهید تا نحوه عملکرد وسیله را قبل از عرضه ی جهانی مورد بررسی قرار دهیم؟ STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :لوکوموتیو راه آهن STR_ENGINE_PREVIEW_ROAD_VEHICLE :ماشین جاده ای STR_ENGINE_PREVIEW_AIRCRAFT :هواپیما STR_ENGINE_PREVIEW_SHIP :کشتی STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :لوکوموتیو مونوریل STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :لوکوموتیو ریل مغناطیسی STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}قیمت: {CURRENCY_LONG} بیشینه سرعت: {VELOCITY} برد: {COMMA} قطعه{}ظرفیت: {CARGO_LONG}, {CARGO_LONG}{}هزینه نگهداری: {CURRENCY_LONG}/درسال STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}قیمت: {CURRENCY_LONG} بیشینه سرعت: {VELOCITY} برد: {COMMA} قطعه{}ظرفیت: {CARGO_LONG}{}هزینه نگهداری: {CURRENCY_LONG}/درسال # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :قطار STR_REPLACE_VEHICLE_ROAD_VEHICLE :ماشین STR_REPLACE_VEHICLE_SHIP :کشتی STR_REPLACE_VEHICLE_AIRCRAFT :هواپیما # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}نمای اصلی جایگاه قطار. برای دنبال کردن قطار Ctrl+Click کنید STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه کشتی. برای دنبال کردن کشتی Ctrl+Click کنید STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}نمای اصلی از جایگاه هواپیما. برای دنبال کردن هواپیما Ctrl+click کنید STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}این قطار را به ایستگاه راه آهن بفرست. Ctrl+Click فقط قطار را سرویس میکند STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}فرستادن کشتی به لنگرگاه. ctrl+click فقط سرویس میکند STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسال هواپیما به آشیانه. Ctrl+Click فقط سرویس می کند STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}قطار را مجبور کن بدون صبر برای علامت ترخیص شروع به حرکت کند STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}تغییر کاربرد کشتی باری برای حمل نوع دیگری از محموله ها STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}تغییر کاربرد هواپیما برای حمل نوع دیگری از محموله ها STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}برعکس کردن جهت حرکت قطار STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}نمایش برنامه حرکت قطار. Ctrl+Click جدول زمانی قطار را نمایش می دهد STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}نمایش برنامه حرکت کشتی. Ctrl+Click جدول زماني کشتی را نمايش مي دهد STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}نمایش برنامه حرکت هواپیما. Ctrl+Click جدول زمانی هواپیما را نمایش می دهد STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}نمایش ویژگی های قطار STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}نمایش ویژگی های کشتی STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}نمایش ویژگی های هوا پیما STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}فعالیت فعلی قطار - برای توقف/شروع حرکت قطار کلیک کن.Ctrl+Click برای رفتن به مقضد STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}عمل فعلی کشتی - برای شروع/توقف کشتی اینجا کلیک کنید.Ctrl+Click برای رفتن به مقضد STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}عمل فعلی هواپیما - برای توقف/شروع کار هواپیما کلیک کنید.Ctrl+Click برای رفتن به مقصد # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}پر / خالی کردن STR_VEHICLE_STATUS_CRASHED :{RED}تصادف کرده! STR_VEHICLE_STATUS_STOPPED :{RED}متوقف شده STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}برای ایستگاه بعدی خیلی دور است # Vehicle stopped/started animations # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (جزئیات) STR_VEHICLE_NAME_BUTTON :{BLACK}نام STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}نام گذاری قطار STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}نام گذاری ماشین STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}نام گذاری کشتی STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}نامگذاری هواپیما # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA}سال ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} سال ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}بیشینه سرعت: {LTBLUE}{VELOCITY} {BLACK}برد: {LTBLUE}{COMMA} قطعه STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}ظرفیت: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}فاصله ی زمانی بین تعمیرات دوره ای: {LTBLUE}{COMMA}روز {BLACK} آخیرین تعمسرات: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}افزایش مدت سرویس به مقدار 10. برای افزایش به مقدار 5 باید Ctrl+Click کنید STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}کاهش مدت سرویس به مقدار 10، برای کاهش به مقدار 5 باید Ctrl+Click کنید STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}نام گذاری قطار STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}نام گذاری کشتی STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}نامگذاری هواپیما # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} مدل: {LTBLUE}{NUM}{BLACK} قیمت: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} قیمت: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}مجموع ظرفیت بار این قطار: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}خالی STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} از {STATION} STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}محموله STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}نمایش مشخصات محموله در حال حمل STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}اطلاعات STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}نمایش مشخصات قطار STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}ضرفیت ها STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}نمایش ظرفیت هر وسیله STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}مجموع بار # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (تعمیر مجدد) STR_REFIT_TITLE :{GOLD}انتخاب محموله قابل حمل: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}ظرفیت جدید : {GOLD}{CARGO_LONG}{}{BLACK} بهای تعمیر مجدد: {RED}{CURRENCY_LONG} STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}انتخاب نوع محموله ای که این کشتی باید حمل کند STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}انتخاب نوع جدید محموله برای حمل با هواپیما STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}تعمیر مجدد کشتی STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}تعمیر مجدد هواپیما STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}تغییر کاربرد کشتی باری برای حمل محموله مشخص شده STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}تغییر کاربرد هواپیما برای حمل محموله ی مشخص شده # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (دستورها) STR_ORDERS_LIST_TOOLTIP :{BLACK}لیست دستورات - برای مشخص کردن دستور روی آن کلیک کنید. Ctrl+click به ایستگاه میرود STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - پایان دستورها - - # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :عمر مفید باقی مانده (سال) STR_ORDERS_SKIP_BUTTON :{BLACK}رها کردن STR_ORDERS_SKIP_TOOLTIP :{BLACK}لغو دستور فعلی و شروع بعدی. Ctrl+Click دستور انتخاب شده را لغو می کند STR_ORDERS_DELETE_BUTTON :{BLACK}پاک کردن STR_ORDERS_DELETE_TOOLTIP :{BLACK}پاک کردن دستور مشخص شده STR_ORDERS_GO_TO_BUTTON :{BLACK}برو به STR_ORDERS_GO_TO_TOOLTIP :{BLACK}وارد کردن دستور جدید قبل از دستور مشخص شده. یا اضافه کردن آن به آخر لیست. فرستادن به مرکز تعمیر، دستور سرویس خودکار را غیرفعال می کند # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(ضمنی) STR_ORDER_NO_UNLOAD_NO_LOAD :(نه بارگیری و نه بارگذاری) STR_ORDER_AUTO_REFIT_ANY :بار موجود STR_ORDER_OUT_OF_RANGE :{RED} (مقصد بعدی خارج از دسترس است) # Time table window STR_TIMETABLE_CLEAR_TIME :{BLACK}پاک کردن زمان # Date window (for timetable) # AI debug window STR_AI_DEBUG :{WHITE}رفع اشکالات کد هوش مصنوعی STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}نام کد STR_AI_DEBUG_RELOAD :{BLACK}بازگشایی مجدد هوش مصنوعی STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}از بین بردن هوش مصنوعی. بازگشایی اسکریپت. و شروع مجدد هوش مصنوعی STR_AI_GAME_SCRIPT :{BLACK}کدبازی STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}دیدن گزارش های کد بازی STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}پنجره رفع اشکال کد فقط برای سرور قابل دسترس است # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}تنظیمات هوش مصنوعی / بازی STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}کد بازی که در بازی بعدی بارگذاری می شود STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}هوش مصنوعی که در بازی بعدی بارگذاری می شود STR_AI_CONFIG_HUMAN_PLAYER :بازیکن آدمیزاد STR_AI_CONFIG_RANDOM_AI :انتخاب هوش مصنوعی به صورت اتفاقی STR_AI_CONFIG_NONE :(هیچکدام) STR_AI_CONFIG_GAMESCRIPT :{SILVER}کدبازی STR_AI_CONFIG_AI :{SILVER}هوشهای مصنوعی STR_AI_CONFIG_CHANGE :{BLACK}انتخاب {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :هوش مصنوعی(AI) STR_AI_CONFIG_CHANGE_GAMESCRIPT :کد بازی STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}بارگزاری کد دیگر STR_AI_CONFIG_CONFIGURE :{BLACK}تنظیم STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}تنظبم پارامتر های مربوط به کد # Available AIs window STR_AI_LIST_CAPTION :{WHITE}در دسترس {STRING} STR_AI_LIST_CAPTION_AI :هوش های مصنوعی(AIs) STR_AI_LIST_CAPTION_GAMESCRIPT :کدهای بازی STR_AI_LIST_TOOLTIP :{BLACK}برای انتخاب روی یک کد کلیک کنید STR_AI_LIST_VERSION :{LTBLUE}ویرایش: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}آدرس اینترنتی: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}قبول STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}انتخاب کد مشخص شده STR_AI_LIST_CANCEL :{BLACK}لغو STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}کد را تغییر نده # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} پارامترها STR_AI_SETTINGS_CAPTION_AI :هوش مصنوعی(AI) STR_AI_SETTINGS_CAPTION_GAMESCRIPT :کد بازی STR_AI_SETTINGS_CLOSE :{BLACK}بستن STR_AI_SETTINGS_RESET :{BLACK}بازنشاندن STR_AI_SETTINGS_START_DELAY :تعداد روزهایی که این بازیگر هوش مصنوعی پس از بازیگر هوش مصنوعی قبلی قبل از اتصال صبر می کند(کم و بیش): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}راهنمای {STRING} {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} گزارش تغییرات {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} گواهی {STRING} STR_TEXTFILE_VIEW_README :{BLACK}مشاهده راهنما STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}گزارش تغییر STR_TEXTFILE_VIEW_LICENCE :{BLACK}گواهی # Vehicle loading indicators # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}مخارج: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}مخارج: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}درآمد : {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}درآمد: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}مخارج تقریبی: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}در آمد تقریبی: {CURRENCY_LONG} # Saveload messages STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}درایو خوانده می شود STR_ERROR_GAME_SAVE_FAILED :{WHITE}بازی ذخیره نشد{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}فایل حذف نمی شود STR_ERROR_GAME_LOAD_FAILED :{WHITE}بازی بارگزاری نشد{}{STRING} # Map generation messages STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}تصویر بسیار بزرگ است... # Soundset messages # Screenshot related messages STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}تصویر با موفقیت در {STRING} ذخیره شد STR_ERROR_SCREENSHOT_FAILED :{WHITE}تصویر از بازی ذخیره نشد # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}پیام STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}پیام از {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}خارج از نقشه STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}بسیار نزدیک به حاشیه ی نقشه STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}پول به اندازه ی کافی موجود نیست- به {CURRENCY_LONG} نیاز است STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}زمین باید مسطح باشد STR_ERROR_CAN_T_DO_THIS :{WHITE}نمی‌توان انجام داد STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}اول باید ساختمان تخریب شود STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}این منطقه پاک نمی‌شود STR_ERROR_SITE_UNSUITABLE :{WHITE}مکان مناسب نیست STR_ERROR_ALREADY_BUILT :{WHITE}قبلا در اینجا ساخته شده STR_ERROR_OWNED_BY :{WHITE}صاحب {STRING} است. STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}این ناحیه توسط شرکت دیگری تصاحب شده # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}انجمن شهر {TOWN} اجازه این کار را نمیدهد # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}نمی شود افزایش ارتفاع اد STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}نمی توان ارتفاع زمین را کم کرد STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}قبلا یه سطح دریا رسیده است STR_ERROR_TOO_HIGH :{WHITE}بیش از اندازه ارتفاع دارد # Company related errors STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}ساختمان مرکزی را نمی شود اینجا ساخت ... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}نمی شود 25% سهام این شرکت را خرید STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}نمی شود 25% سهام این شرکت را فروخت # Town related errors STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}نمی توان اسم شهر را تغییر داد STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}اینجا نمی شود شهر ساخت STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}به حاشیه ی نقشه زیادی نزدیک است STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}به شهر دیگری بسیار نزدیک است STR_ERROR_TOO_MANY_TOWNS :{WHITE}تعداد شهر ها بسیار زیاد شده # Industry related errors STR_ERROR_CAN_T_BUILD_HERE :{WHITE}نمی شود {STRING} اینجا ساخت STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}این نوع کاخانه را در اینجا نمی شود ساخت... STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}اول باید شهر ساخته شود STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}فقط یکی به ازای هر شهر مجاز است STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}فقط در شهرهایی با جمعیت بیش از 1200 نفر ممکن است STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}فقط میتوان در جنگل های بارانی ساخت STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}فقط می توان در صحرا ساخت STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}فقط می توان در شهر ها ساخت STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... فقط در حاشیه ی نقشه ساخته می شود STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... جنگل باید بالای خط برف کاشته شود STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... فقط روی خط برف می توان ساخت STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... فقط زیر خط برف می توان ساخت # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}اینجا نمی شود ایستگاه راه آهن ساخت STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}اینجا ایستگاه اتوبوس نمی شود ساخت STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}اینجا ایستگاه کامیون نمیشود ساخت STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}نمی توان اینجا فرودگاه ساخت. . . STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}ایستگاه زیادی پراکنده شده است STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}تعداد محوطه های بارگیری/ایستگاه بسیار زیاد شده STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}به محوطه ی بارگیری/ایستگاه دیگری بسیار نزدیک است STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}به بندر دیگری بسییار نزدیک است STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}به فرودگاه دیگری بسیار نزدیک شده STR_ERROR_CAN_T_RENAME_STATION :{WHITE}نام این ایستگاه را نمی شود تغییر داد # Station destruction related errors STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}اول باید راه آهن تخریب شود STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}باید اول بندر را تخریب کرد STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}اول باید فرودگاه تخریب شود # Waypoint related errors STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}نمیتوان اینجا شناوری قرار داد # Depot related errors STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}هواپیما باید در آشیانه متوقف شود STR_ERROR_TRAIN_TOO_LONG :{WHITE}قطار بسیار طولانی شده STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}نمیتوان جهت حرکت وسیله را معکوس کرد... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}متشکل از واحدهای مختلف STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}... این وسیله را نمی توان حرکت داد STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}مسیری به ایستگاه راه آهن پیدا نمیشود # Autoreplace related errors # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}ترکیب ریل غیر ممکن است STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}قطعه مناسب راه آهن انتخاب نشده STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}اول باید ریل راه آهن حذف شود STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}اینجا نمی شود علامت ساخت STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}اینجا نمی شود ریل ساخت STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}از اینجا نمی شود ریل را حذف کرد STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}از اینجا نمی شود چراغ ها ی راهنمایی را حذف کرد # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}اول باید جاده حذف شود STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}اینجا نمی توان جاده ساخت STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}جاده را نمی شود از اینجا حذف کرد # Waterway construction errors STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}باید بر روی آب ساخته شود STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}نمی شود بر روی آب ساخت STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... نمی توان بر روی دریای آزاد ساخت STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... نمی توان برروی کانال ساخت STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... نمی توان بر روی رودخانه ساخت # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}قبلا اینجا درخت کشته شده است STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}اینجا نمی شود درخت کاشت # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}اینجا نمی شود پل ساخت STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}اول باید پل خراب شود STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}محل شروع و پایاننمی توانند در یک نقطه باشند STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}محل شروع پایان باید در یک خط باشند STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}هر دو سر پل باید در خشکی قرار بگیرد # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}اینجا نمی شود تونل ساخت STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}محل برای شروع تونل نا مناسب است STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}اول باید تونل خراب شود STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... تونل خیلی طولانی است # Object related errors STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}چیزی در مسیر قرار گرفته STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}ساختمان اصلی شرکت در مسیر قرار گرفته است STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}نمی توان این ناحیه را خرید STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}قبلا توسط شرکت خریداری شده # Group related errors # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}قطار در راه است STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}ماشین در جاده است STR_ERROR_SHIP_IN_THE_WAY :{WHITE}قطار در راه است STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}هواپیما در راه است STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}نمی توان این کشتی را تعمیر کرد. . . STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}نمی توان هواپیما را تعمیر کرد. . . STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}نمیتوان برای قطار نام انتخاب کرد... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}نمیتوان برای این کشتی نام انتخاب کرد STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}. . . نمیتوان نام هواپیما را انتخاب کرد STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}قطار را نمی شود حرکت داد / متوقف کرد... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}نمی شود کشتی را حرکت داد / متوقف کرد ... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}نمیتوان هواپاما را متوقف/آغاز به کار کرد STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}نمیتوان هواپیما را به آشیانه فرستاد. . . STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}نمیشود قطار خرید ... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}نمی شود ماشین ساخت... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}نمی شود کشتی ساخت... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}نمی توان هواپیما را ساخت STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}نمی شود نوع قطار ها را تغییر نام داد... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}نمی شود انواع ماشین ها را تغییر نام داد... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}نمی توان نام جدید را انتخاب کرد STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}نمیتوان نام جدید نوع هواپیما را انتخاب کرد STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}نمی شود قطار را فروخت... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}نمیشود ماشین را فروخت... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}کشتی فروخته نمی شود... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}نمیتوان هواپیما را فروخت STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}هواپیما در دسترس نیست STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}ماشین‌های زیادی در بازی هستند STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}امکان تغییر فواصل زمانی سرویس وجود ندارد... # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}در هنگام خطر نمی توان علامت عبور قطار را داد STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}جهت قطار را نمی شود تغییر داد... STR_ERROR_TRAIN_START_NO_POWER :قطار انرژی(برق)ندارد. STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}هواپاما در حال پرواز است # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}برای دستورهای بیشتر جا نیست STR_ERROR_TOO_MANY_ORDERS :{WHITE}دستورات بسیار زیاد شده اند STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}نمی شود دستور جدید قرار داد ... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}نمی شود دستور را حذف کرد STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}این دستور تغییر نمی کند... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}نمی توان برنامه حرکت را کپی کرد... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}از هدف قبلی بسیار دور است... STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... هواپیما برد کافی ندارد # Timetable related errors STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}وسایل نقلیه فقط در ایستگاه می توانند منتظر بمانند STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}این وسیله نقلیه در این ایستگاه توقف نمی کند # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}تعداد لامات بسیار زیاد شده STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}اینجا نمی شود علامت ساخت STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}نمی شود اسم علامت را عوض کرد STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}نشانه را نمی توان پاک کرد... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :یک بازی شبیه سازی بر اساس Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :گرافیک اصلی بازی ترانسپورت تایکون نسخه داس STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :گرافیک اصلی بازی ترانسپورت تایکون نسخه داس آلمانی STR_BASEGRAPHICS_WIN_DESCRIPTION :گرافیک اصلی بازی ترانسپورت تایکون نسخه ویندوز STR_BASESOUNDS_DOS_DESCRIPTION :صوت زمینه اصلی بازی ترانسپورت تایکون نسخه داس STR_BASESOUNDS_WIN_DESCRIPTION :صوت زمینه اصلی بازی ترانسپورت تایکون نسخه ویندوز STR_BASESOUNDS_NONE_DESCRIPTION :یک بسته صوت زمینه که حاوی هیچ صوتی نیست STR_BASEMUSIC_WIN_DESCRIPTION :موزیک اصلی بازی ترانسپورت تایکون نسخه ویندوز STR_BASEMUSIC_NONE_DESCRIPTION :یک بسته موسیقی که حاوی هیچ موزیکی نیست ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :ساختمان اداری بلند STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :ساختمان اداری STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :آپارتمان کوچک STR_TOWN_BUILDING_NAME_CHURCH_1 :کلیسا STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :ساختمان اداری بزرگ STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :خانه های شهر STR_TOWN_BUILDING_NAME_HOTEL_1 :هتل STR_TOWN_BUILDING_NAME_STATUE_1 :مجسمه STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :فواره STR_TOWN_BUILDING_NAME_PARK_1 :پارک STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :ساختمان اداری STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :مغازه ها و ادارات STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :ساختمان اداری مدرن STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :انبار STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :ساختمان اداری STR_TOWN_BUILDING_NAME_STADIUM_1 :ورزشگاه STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :خانه قدیمی STR_TOWN_BUILDING_NAME_COTTAGES_1 :کلبه ها STR_TOWN_BUILDING_NAME_HOUSES_1 :خانه ها STR_TOWN_BUILDING_NAME_FLATS_1 :آپارتمان STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :ساختمان اداری بلند STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :فروشگاه ها و ادارات STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :فروشگاه ها و ادارات STR_TOWN_BUILDING_NAME_THEATER_1 :تئاتر STR_TOWN_BUILDING_NAME_STADIUM_2 :ورزشگاه STR_TOWN_BUILDING_NAME_OFFICES_1 :ادارات STR_TOWN_BUILDING_NAME_HOUSES_2 :خانه ها STR_TOWN_BUILDING_NAME_CINEMA_1 :سینما STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :مرکز خرید STR_TOWN_BUILDING_NAME_IGLOO_1 :ایگلو STR_TOWN_BUILDING_NAME_TEPEES_1 :خیمه ها STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :خانه-قوری STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :بانک خوکی ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :معدن ذغال STR_INDUSTRY_NAME_POWER_STATION :نیروگاه STR_INDUSTRY_NAME_SAWMILL :چوب بری STR_INDUSTRY_NAME_FOREST :جنگل STR_INDUSTRY_NAME_OIL_REFINERY :پالایشگاه STR_INDUSTRY_NAME_OIL_RIG :سکوی نفت STR_INDUSTRY_NAME_FACTORY :کارخانه STR_INDUSTRY_NAME_PRINTING_WORKS :چاپخانه STR_INDUSTRY_NAME_STEEL_MILL :فولاد سازی STR_INDUSTRY_NAME_FARM :مزرعه STR_INDUSTRY_NAME_COPPER_ORE_MINE :معدن سنگ مس STR_INDUSTRY_NAME_OIL_WELLS :چاه نفت STR_INDUSTRY_NAME_BANK :بانک STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :کارخانه فرآوری موادغذایی STR_INDUSTRY_NAME_PAPER_MILL :کاغذ سازی STR_INDUSTRY_NAME_GOLD_MINE :معدن طلا STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :بانک STR_INDUSTRY_NAME_DIAMOND_MINE :معدن الماس STR_INDUSTRY_NAME_IRON_ORE_MINE :معدن سنگ آهن STR_INDUSTRY_NAME_FRUIT_PLANTATION :باغ میوه STR_INDUSTRY_NAME_RUBBER_PLANTATION :مزرعه لاستیک STR_INDUSTRY_NAME_WATER_SUPPLY :منبع آب STR_INDUSTRY_NAME_WATER_TOWER :برج آب STR_INDUSTRY_NAME_FACTORY_2 :کارخانه STR_INDUSTRY_NAME_FARM_2 :مزرعه STR_INDUSTRY_NAME_LUMBER_MILL :چوب بری STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :جنگل پشمک STR_INDUSTRY_NAME_CANDY_FACTORY :کارخانه شیرینی جات STR_INDUSTRY_NAME_BATTERY_FARM :مزرعه باتری STR_INDUSTRY_NAME_COLA_WELLS :چاه های نوشابه STR_INDUSTRY_NAME_TOY_SHOP :اسباب بازی فروشی STR_INDUSTRY_NAME_TOY_FACTORY :کارخانه اسباب بازی STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :چشمه ی پلاستک STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :کارخانه نوشابه گاز دار STR_INDUSTRY_NAME_BUBBLE_GENERATOR :مولد حباب STR_INDUSTRY_NAME_TOFFEE_QUARRY :معدن تافی STR_INDUSTRY_NAME_SUGAR_MINE :معدن شکر ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :بی نام STR_SV_TRAIN_NAME :قطار {COMMA} STR_SV_ROAD_VEHICLE_NAME :خودرو جاده ای {COMMA} STR_SV_SHIP_NAME :کشتی {COMMA} STR_SV_AIRCRAFT_NAME :هواپیما {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} شمال STR_SV_STNAME_SOUTH :{STRING} جنوب STR_SV_STNAME_EAST :{STRING} شرق STR_SV_STNAME_WEST :{STRING} غرب STR_SV_STNAME_CENTRAL :{STRING} مرکزی STR_SV_STNAME_TRANSFER :{STRING} انتقال STR_SV_STNAME_HALT :{STRING} آویزان STR_SV_STNAME_VALLEY :{STRING} وادی STR_SV_STNAME_HEIGHTS :{STRING} ارتفاعات STR_SV_STNAME_WOODS :{STRING} الوار STR_SV_STNAME_LAKESIDE :{STRING} کنار دریاچه STR_SV_STNAME_EXCHANGE :{STRING} مبادله STR_SV_STNAME_AIRPORT :{STRING} فرودگاه STR_SV_STNAME_OILFIELD :{STRING} چاه نفت STR_SV_STNAME_MINES :{STRING} معدن ها STR_SV_STNAME_DOCKS :{STRING} اسکله ها STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} فرعی STR_SV_STNAME_SIDINGS :{STRING} کناره ها STR_SV_STNAME_BRANCH :{STRING} شاخه STR_SV_STNAME_UPPER :بالاتر {STRING} STR_SV_STNAME_LOWER :پایین تر {STRING} STR_SV_STNAME_HELIPORT :{STRING} فرودگاه بالگرد STR_SV_STNAME_FOREST :{STRING} جنگل STR_SV_STNAME_FALLBACK :{STRING} ایستگاه #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (بخار) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut دیزل STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (بخار) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (بخار) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (بخار) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (بخار) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (دیزل) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (برقی) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :واگن مسافربر STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :واگن نامه STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :واگن ذغال STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :تانکر نفت STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :واگن فرآورده های حیوانی STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :واگن محصولات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :واگن حمل حبوبات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :واگن چوب بری STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :واگن سنگ آهن STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :واگن فولاد STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :واگن حفاظت شده STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :واگن مواد غذایی STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :واگن کاغذ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :واگن سنگ مس STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :تانکر آب STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :واگن حمل میوه STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :واگن حمل لاستیک STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :واگن حمل شکر STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :واگن حمل پشمک STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :واگن حمل تافی STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :واگن حباب بری STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :تانکر نوشابه STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :تانکر شیرینی جات STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :واگن اسباب بازی STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :واگن باتری STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :تانکر نوشابه گازدار STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :واگن پلاستیک بری STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :واگن مسافربر STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :واگن نامه بر STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :واگن حمل ذغال STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :تانکر نفت STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :واگن حمل محصولات حیوانی STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :واگن محصولات STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :واگن حمل حبوبات STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :واگن چوب بری STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :واگن سنگ آهن STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :واگن فولاد STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :واگن حفاظت شده STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :واگن حمل مواد غذایی STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :وان کاغذ بری STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :واگن سنگ مس STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :تانکر آب STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :واگن حمل میوه STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :واگن حمل لاستیک STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :واگن شکر STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :واگن حمل پشمک STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :واگن حمل تافی STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :واگن حباب بری STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :تانکر نوشابه STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :واگن شیرینی جات STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :واگن اسباب بازی STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :واگن حمل باتری STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :تانکر نوشابه گازدار STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :واگن حمل پلاستیک STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (برقی) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :واگن مسافر بری STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :واگن حمل نامه STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :واگن ذغال سنگ STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :تانکر نفت STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :واگن حمل محصولات حیوانی STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :واگن محصولات STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :واگن حمل حبوبات STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :واگن چوب بری STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :واگن سنگ آهن STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :واگن فولاد STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :واگن محفاظت شده STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :واگن مواد غذایی STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :واگن کاغذ بری STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :واگن حمل سنگ مس STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :تانکر آب STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :واگن میوه STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :واگن کائوچو STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :واگن شکر STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :واگن حمل پشمک STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :واگن حمل تافی STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :واگن حباب STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :تانکر نوشابه STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :واگن حمل شکلات STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :واگن اسباب بازی STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :کامیون حمل باتری STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :کامیون نوشابه گازدار STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :کامیون حمل پلاستیک STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :اتوبوس شاهی MPS STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :اتوبوس Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :اتوبوس Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :اتوبوس ویژه Foster MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :اتوبوس Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :اتوبوس Plodyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :اتوبوس Plodyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :کامیون حمل ذغال سنگ Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :کامیون حمل ذغال سنگ Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :کامیون حمل ذغال سنگ DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :کامیون حمل نامه MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :کامیون حمل نامه Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :کامیون حمل نامه Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :کامیون حمل نامه MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :کامیون حمل نامه Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :کامیون حمل نامه Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :تانکر نفت Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :تانکر نفت Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :تانکر نفت Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :واگن حمل فرآورده های حیوانی Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :واگن حمل فرآورده های حیوانی Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :واگن حمل فرآورده های حیوانی Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :کامیون محصولات Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :کامیون محصولات Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :کامیون محصولات Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :کامیون حبوبات Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :کامیون حبوبات Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :کامیون حبوبات Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :کامیون حمل چوب Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :کامیون حمل چوب Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :کامیون حمل چوب Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :کامیون حمل سنگ آهن MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :کامیون حمل سنگ آهن Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :کامیون حمل سنگ آهن Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :کامیون حمل فولاد Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :کامیون حمل فولاد Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :کامیون حمل فولاد Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :کامیون محافظت شده Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :کامیون محافظت شده Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :کامیون محافظت شده Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :واگن مواد غذایی Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :واگن مواد غذایی Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :واگن مواد غذایی Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :کامیون حمل کاغذ Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :کامیون حمل کاغذ Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :کامیون حمل کاغذ MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :کامیون حمل سنگ مس MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :کامیون حمل سنگ مس Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :کامیون حمل سنگ مس Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :تانکر آب Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :تانکر آب Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :تانکر آب MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :کامیون حمل میوه Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :کامیون حمل میوه Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :کامیون حمل میوه Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :کامیون کائوچو Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :کامیون کائوچو Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :کامیون کائوچو RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :کامیون حمل شکر MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :کامیون حمل شکر Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :کامیون حمل شکر Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :کامیون حمل نوشابه MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :کامیون حمل نوشابه Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :کامیون حمل نوشابه Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :کامیون حمل پشمک MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :کامیون حمل پشمک Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :کامیون حمل پشمک Candyfloss STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :کامیون حمل تافی MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :کامیون حمل تافی Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :کامیون حمل تافی Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :واگن حمل اسباب بازی MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :واگن حمل اسباب بازی Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :واگن حمل اسباب بازی Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :کامیون حمل شکلات MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :کامیون حمل شکلات Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :کامیون حمل شکلات Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :کامیون حمل باتری MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :کامیون حمل باتری Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :کامیون حمل باتری Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :کامیون حمل نوشیدنی گازدار MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :کامیون حمل نوشیدنی گازدار Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :کامیون حمل نوشیدنی گازدار Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :کامیون حمل پلاستیک MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :کامیون حمل پلاستیک Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :کامین حمل پلاستیک Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :کامیون حمل حباب MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :کامیون حمل حباب Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :کامیون حمل حباب Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :تانکر نفت MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :تانکر نفت CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :اتوبوس MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :اتوبوس FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :هاور کرفت Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :اتوبوس Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :اتوبوس Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :کشتی حمل بار Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :کشتی حمل بار Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :کشتی حمل بار MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :کشتی حمل بار Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :هلیکوپترTricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :هلیکوپترGuru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :هلیکوپترPowernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} شناور STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} شناور #{COMMA} STR_FORMAT_COMPANY_NUM :(شرکت {COMMA}) STR_FORMAT_GROUP_NAME :گروه {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :{TOWN} نقطه راهنما STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} نقطه راهنما #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} گاراژ قطار STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} گاراژ قطار #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} گاراژ خوردوها STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} گاراژ خوردوها #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} لنگرگاه STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} لنگرگاه #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} آشیانه STR_UNKNOWN_STATION :ایستگاه نامعلوم STR_DEFAULT_SIGN_NAME :علامت STR_COMPANY_SOMEONE :یک نفر STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :تماشاگر, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/macedonian.txt0000644000000000000000000037551012246102556020412 0ustar rootroot##name Macedonian ##ownname Македонски ##isocode mk_MK ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x042f ##grflangid 0x26 # $Id: macedonian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(недефиниран стринг) STR_JUST_NOTHING :Ништо # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Патници STR_CARGO_PLURAL_COAL :Јаглен STR_CARGO_PLURAL_MAIL :Пошта STR_CARGO_PLURAL_OIL :Нафта STR_CARGO_PLURAL_LIVESTOCK :Добиток STR_CARGO_PLURAL_GOODS :Стока STR_CARGO_PLURAL_GRAIN :Жито STR_CARGO_PLURAL_WOOD :Дрва STR_CARGO_PLURAL_IRON_ORE :Железна Руда STR_CARGO_PLURAL_STEEL :Челик STR_CARGO_PLURAL_VALUABLES :Скапоцености STR_CARGO_PLURAL_COPPER_ORE :Бакарна Руда STR_CARGO_PLURAL_MAIZE :Пченка STR_CARGO_PLURAL_FRUIT :Овошје STR_CARGO_PLURAL_DIAMONDS :Дијаманти STR_CARGO_PLURAL_FOOD :Храна STR_CARGO_PLURAL_PAPER :Хартија STR_CARGO_PLURAL_GOLD :Злато STR_CARGO_PLURAL_WATER :Вода STR_CARGO_PLURAL_WHEAT :Пченица STR_CARGO_PLURAL_RUBBER :Гума STR_CARGO_PLURAL_SUGAR :Шеќер STR_CARGO_PLURAL_TOYS :Играчки STR_CARGO_PLURAL_CANDY :Колачиња STR_CARGO_PLURAL_COLA :Кола (сок) STR_CARGO_PLURAL_COTTON_CANDY :Суровина за колачиња STR_CARGO_PLURAL_BUBBLES :Меурчиња STR_CARGO_PLURAL_TOFFEE :Карамели STR_CARGO_PLURAL_BATTERIES :Батерии STR_CARGO_PLURAL_PLASTIC :Пластика STR_CARGO_PLURAL_FIZZY_DRINKS :Газирани пијалоци # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Патник STR_CARGO_SINGULAR_COAL :Јаглен STR_CARGO_SINGULAR_MAIL :Пошта STR_CARGO_SINGULAR_OIL :Нафта STR_CARGO_SINGULAR_LIVESTOCK :Добиток STR_CARGO_SINGULAR_GOODS :Роба STR_CARGO_SINGULAR_GRAIN :Зрнести производи STR_CARGO_SINGULAR_WOOD :Дрва STR_CARGO_SINGULAR_IRON_ORE :Железна Руда STR_CARGO_SINGULAR_STEEL :Челик STR_CARGO_SINGULAR_VALUABLES :Скапоцености STR_CARGO_SINGULAR_COPPER_ORE :Бакарна Руда STR_CARGO_SINGULAR_MAIZE :Пченка STR_CARGO_SINGULAR_FRUIT :Овошје STR_CARGO_SINGULAR_DIAMOND :Дијамант STR_CARGO_SINGULAR_FOOD :Храна STR_CARGO_SINGULAR_PAPER :Хартија STR_CARGO_SINGULAR_GOLD :Злато STR_CARGO_SINGULAR_WATER :Вода STR_CARGO_SINGULAR_WHEAT :Пченица STR_CARGO_SINGULAR_RUBBER :Гума STR_CARGO_SINGULAR_SUGAR :Шеќер STR_CARGO_SINGULAR_TOY :Играчка STR_CARGO_SINGULAR_CANDY :Колаче STR_CARGO_SINGULAR_COLA :Кола (сок) STR_CARGO_SINGULAR_COTTON_CANDY :Суровина за колачиња STR_CARGO_SINGULAR_BUBBLE :Меурче STR_CARGO_SINGULAR_TOFFEE :Карамела STR_CARGO_SINGULAR_BATTERY :Батерија STR_CARGO_SINGULAR_PLASTIC :Пластика STR_CARGO_SINGULAR_FIZZY_DRINK :Газиран Пијалок # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} патни{P к ци} STR_QUANTITY_COAL :{WEIGHT_LONG} јаглен STR_QUANTITY_MAIL :{COMMA} торб{P а и} со пошта STR_QUANTITY_OIL :{VOLUME_LONG} нафта STR_QUANTITY_LIVESTOCK :{COMMA} грл{P о а} добиток STR_QUANTITY_GOODS :{COMMA} пакет{P "" и} роба STR_QUANTITY_GRAIN :{WEIGHT_LONG} жито STR_QUANTITY_WOOD :{WEIGHT_LONG} дрва STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} железна руда STR_QUANTITY_STEEL :{WEIGHT_LONG} челик STR_QUANTITY_VALUABLES :{COMMA} торб{P а и} со скапоцености STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} бакарна руда STR_QUANTITY_MAIZE :{WEIGHT_LONG} пченка STR_QUANTITY_FRUIT :{WEIGHT_LONG} овошје STR_QUANTITY_DIAMONDS :{COMMA} торб{P а и} со дијаманти STR_QUANTITY_FOOD :{WEIGHT_LONG} храна STR_QUANTITY_PAPER :{WEIGHT_LONG} хартија STR_QUANTITY_GOLD :{COMMA} торб{P а и} злато STR_QUANTITY_WATER :{VOLUME_LONG} вода STR_QUANTITY_WHEAT :{WEIGHT_LONG} пченица STR_QUANTITY_RUBBER :{VOLUME_LONG} гума STR_QUANTITY_SUGAR :{WEIGHT_LONG} шеќер STR_QUANTITY_TOYS :{COMMA} играчк{P а и} STR_QUANTITY_SWEETS :{COMMA} торб{P а и} колачиња STR_QUANTITY_COLA :{VOLUME_LONG} кола STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} суровина за колачиња STR_QUANTITY_BUBBLES :{COMMA} меурч{P е иња} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} карамели STR_QUANTITY_BATTERIES :{COMMA} батери{P ја и} STR_QUANTITY_PLASTIC :{VOLUME_LONG} пластика STR_QUANTITY_FIZZY_DRINKS :{COMMA} пенлив пијалок STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}ПА STR_ABBREV_COAL :{TINY_FONT}ЈА STR_ABBREV_MAIL :{TINY_FONT}ПО STR_ABBREV_OIL :{TINY_FONT}НА STR_ABBREV_LIVESTOCK :{TINY_FONT}ГД STR_ABBREV_GOODS :{TINY_FONT}СТ STR_ABBREV_GRAIN :{TINY_FONT}ЖИ STR_ABBREV_WOOD :{TINY_FONT}ДР STR_ABBREV_IRON_ORE :{TINY_FONT}ЖР STR_ABBREV_STEEL :{TINY_FONT}ЧЕ STR_ABBREV_VALUABLES :{TINY_FONT}СЦ STR_ABBREV_COPPER_ORE :{TINY_FONT}БР STR_ABBREV_MAIZE :{TINY_FONT}ПЧ STR_ABBREV_FRUIT :{TINY_FONT}ОВ STR_ABBREV_DIAMONDS :{TINY_FONT}ДИ STR_ABBREV_FOOD :{TINY_FONT}ХР STR_ABBREV_PAPER :{TINY_FONT}ХА STR_ABBREV_GOLD :{TINY_FONT}ЗЛ STR_ABBREV_WATER :{TINY_FONT}ВО STR_ABBREV_WHEAT :{TINY_FONT}ПЦ STR_ABBREV_RUBBER :{TINY_FONT}ГУ STR_ABBREV_SUGAR :{TINY_FONT}ШЕ STR_ABBREV_TOYS :{TINY_FONT}ИГ STR_ABBREV_SWEETS :{TINY_FONT}КЊ STR_ABBREV_COLA :{TINY_FONT}КЛ STR_ABBREV_CANDYFLOSS :{TINY_FONT}СК STR_ABBREV_BUBBLES :{TINY_FONT}МЕ STR_ABBREV_TOFFEE :{TINY_FONT}КА STR_ABBREV_BATTERIES :{TINY_FONT}БА STR_ABBREV_PLASTIC :{TINY_FONT}ПЛ STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}ПП STR_ABBREV_NONE :{TINY_FONT}НТ STR_ABBREV_ALL :{TINY_FONT}Се` # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} патници{P "" s} STR_BAGS :{COMMA} вреќи{P "" s} STR_TONS :{COMMA} тон{P "" s} STR_LITERS :{COMMA} литар{P "" s} STR_ITEMS :{COMMA} точка{P "" s} STR_CRATES :{COMMA} гајба{P "" s} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Темоно Сина STR_COLOUR_PALE_GREEN :Матно Зелена STR_COLOUR_PINK :Розова STR_COLOUR_YELLOW :Жолта STR_COLOUR_RED :Црвена STR_COLOUR_LIGHT_BLUE :Светло Сина STR_COLOUR_GREEN :Зелена STR_COLOUR_DARK_GREEN :Темно Зелена STR_COLOUR_BLUE :Сина STR_COLOUR_CREAM :Крем STR_COLOUR_MAUVE :Виолетова STR_COLOUR_PURPLE :Пурпурна STR_COLOUR_ORANGE :Портокалова STR_COLOUR_BROWN :Кафена STR_COLOUR_GREY :Сива STR_COLOUR_WHITE :Бела # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}кс STR_UNITS_POWER_METRIC :{COMMA}кс STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P "" и} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} лит{P ар ри} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK}Внесете филтер низа STR_LIST_FILTER_TOOLTIP :{BLACK}Внесете клучни зборови за филтрирање на списокот за STR_TOOLTIP_SORT_ORDER :{BLACK}Изберете начин на сортирање (намалувачки/зголемувачки) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Изберете критериум за сортирање STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Изберете филтрирање критериуми STR_BUTTON_SORT_BY :{BLACK}Сортирање според STR_BUTTON_LOCATION :{BLACK}Локација STR_BUTTON_RENAME :{BLACK}Преименувај STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Затвори го прозорецот STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Наслов на прозорец - влечи тука за да го поместиш прозорецот STR_TOOLTIP_SHADE :{BLACK}Сенката прозорец - прикажува само на насловната лента STR_TOOLTIP_DEBUG :{BLACK}Прикажи ги новите GRF debug информациите STR_TOOLTIP_STICKY :{BLACK}Означи го овој прозорец како unclosable од страна на "Затвори ги сите прозорци" клуч STR_TOOLTIP_RESIZE :{BLACK}Кликнете и влечете за да ја намалите големината овој прозорец STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Вклучи големи / мали големината на прозорецот STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Поместувач - ја поместува листата нагоре/надолу STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Лизгач - свитоци листата лево / десно STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Уривање згради итн. на квадратна област # Query window STR_BUTTON_DEFAULT :{BLACK}Зададено STR_BUTTON_CANCEL :{BLACK}Откажи STR_BUTTON_OK :{BLACK}Во ред # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}должина: {NUM} STR_MEASURE_AREA :{BLACK}Површина: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Должина: {NUM}{}Висина разлика: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Должина: {NUM} x {NUM}{}Висина разлика: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Населеност STR_SORT_BY_CAPTION_NAME :{BLACK}Име STR_SORT_BY_CAPTION_DATE :{BLACK}Датум # These are used in dropdowns STR_SORT_BY_NAME :име STR_SORT_BY_PRODUCTION :Производство STR_SORT_BY_TYPE :Тип STR_SORT_BY_TRANSPORTED :Транспортирано STR_SORT_BY_NUMBER :Број STR_SORT_BY_PROFIT_LAST_YEAR :Минатогодишен профит STR_SORT_BY_PROFIT_THIS_YEAR :Профит оваа година STR_SORT_BY_AGE :Старост STR_SORT_BY_RELIABILITY :Веродостојност STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Вкупен капацитет според типот на товарот STR_SORT_BY_MAX_SPEED :Максимална брзина STR_SORT_BY_MODEL :Модел STR_SORT_BY_VALUE :Вредност STR_SORT_BY_LENGTH :Должина STR_SORT_BY_LIFE_TIME :Преостанат животен век STR_SORT_BY_TIMETABLE_DELAY :распоред задоцнување STR_SORT_BY_FACILITY :Вид на станица STR_SORT_BY_WAITING :Вредност на товарот кој чека STR_SORT_BY_RATING_MAX :Највисок рејтинг за товар STR_SORT_BY_RATING_MIN :Најнизок рејтинг за товар STR_SORT_BY_ENGINE_ID :Идентификација на моторот (класично сортирање) STR_SORT_BY_COST :Цена STR_SORT_BY_POWER :Моќност STR_SORT_BY_TRACTIVE_EFFORT :Влечни напор STR_SORT_BY_INTRO_DATE :Датум на претставување STR_SORT_BY_RUNNING_COST :Потрошувачка STR_SORT_BY_POWER_VS_RUNNING_COST :Моќност/Потрошувачка STR_SORT_BY_CARGO_CAPACITY :Капацитет за товар STR_SORT_BY_RANGE :опсег # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Паузирај ја играта STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Брзо нанапред играта STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Опции STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Зачувај ја играта, напушти, излези STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Прикажи мапа, екстра viewport или листа на знаци STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Прикажи именик на градови STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Покажи субвенции STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Прикажи листа на станиците на компанијата STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Прикажи информации за финансиите на компанијата STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Прикажи општи информации за компанијата STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Прикажи графици STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Прикажи ја табелата за успешност на компанијата STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Фонд за изградба на нови индустриски или листа на сите индустрии STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Прикажи листа на возови на компанијата STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Прикажи листа на патни возила на компанијата STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Прикажи листа на бродови на компанијата STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Прикажи листа на летала на компанијата STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Приближи го погледот STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Оддалечи го погледот STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Градба на пруга STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Градба на патишта STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Градба на пристаништа STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Градба на аеродроми STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Отворете го уредување алатникот за да се подигне / пониски земјиште, насадат дрвја, итн STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Прикажи го прозорецот за звук и музика STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Прикажи последна порака/вест, прикажи опции за пораки STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Информација за земјишна област STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Исклучете алатки # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Зачувај сценарио, оптоварување сценарио, сценарио напушти уредник, да престанам STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Сценарио Едитор STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Поместување на датум назад една година STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Поместување на датум напред една година STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Кликни за да влезат на почеток година STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Прикажи мапа, именик на градови STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Генерирање на терен STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Генерирање на градови STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Генерирање на индустрии STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Конструирање на патишта STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Насадат дрвја. Shift опција да изберете објект / покажува проценка на трошоците STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}место знак STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Место објект ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Зачувај сценарио STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Вчитај сценарио STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Зачувај висина сајтот STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Вчитај висина сајтот STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Напушти уредник STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Напушти ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :игра опции STR_SETTINGS_MENU_CONFIG_SETTINGS :напредни поставувања STR_SETTINGS_MENU_SCRIPT_SETTINGS :АИ / игри поставувања STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF подесувања STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :транспарентност опции STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Место имиња прикажани STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Станица имиња прикажани STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Начин точка имиња прикажани STR_SETTINGS_MENU_SIGNS_DISPLAYED :знаци прикажани STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Конкурент знаци и имиња прикажани STR_SETTINGS_MENU_FULL_ANIMATION :Комплетна анимација STR_SETTINGS_MENU_FULL_DETAIL :Комплетна детали STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Транспарентна згради STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Транспарентна станица знаци ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Зачувај ја играта STR_FILE_MENU_LOAD_GAME :Вчитај игра STR_FILE_MENU_QUIT_GAME :Напушти ја играта STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Излез ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Мапа на светот STR_MAP_MENU_EXTRA_VIEW_PORT :екстра прозорец STR_MAP_MENU_SIGN_LIST :Си листа ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Место STR_TOWN_MENU_FOUND_TOWN :Резултати градот ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :субвенции STR_SUBSIDIES_MENU_GOAL :Сега цели ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :График на оперативен профит STR_GRAPH_MENU_INCOME_GRAPH :График на добивка STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :График на испорачан товар STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :График на историја на перформанси STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :График на вредност на компанијата STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Курс на исплата за товар ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Табела на вредност на компании STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Детален перформанси рејтинг ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :индустрија директориум STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Фонд за нова индустрија ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Железничка изградба STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Електрифицирани железнички изградба STR_RAIL_MENU_MONORAIL_CONSTRUCTION :монорелса изградба STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Maglev изградба ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :изградба на патишта STR_ROAD_MENU_TRAM_CONSTRUCTION :трамвај изградба ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :патишта изградба ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Изградба на аеродром ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :уредување STR_LANDSCAPING_MENU_PLANT_TREES :насадат дрвја STR_LANDSCAPING_MENU_PLACE_SIGN :место знак ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Звук/музика ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Последната порака/вест STR_NEWS_MENU_MESSAGE_HISTORY_MENU :порака историјата ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Земјиште во областа STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Вклучи конзола STR_ABOUT_MENU_AI_DEBUG :АИ / игри сценарио де-бубачки STR_ABOUT_MENU_SCREENSHOT :Слика од екранот STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Зумира екранот STR_ABOUT_MENU_GIANT_SCREENSHOT :Целата сајтот екранот STR_ABOUT_MENU_ABOUT_OPENTTD :За 'ОтвориTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :самовила усогласат STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Вклучи одблеснува кутии ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1-в STR_ORDINAL_NUMBER_2ND :2-ор STR_ORDINAL_NUMBER_3RD :3-ет STR_ORDINAL_NUMBER_4TH :4-рт STR_ORDINAL_NUMBER_5TH :5-ти STR_ORDINAL_NUMBER_6TH :6-ти STR_ORDINAL_NUMBER_7TH :7-ми STR_ORDINAL_NUMBER_8TH :8-ми STR_ORDINAL_NUMBER_9TH :9-ти STR_ORDINAL_NUMBER_10TH :10-ти STR_ORDINAL_NUMBER_11TH :11-ти STR_ORDINAL_NUMBER_12TH :12-ти STR_ORDINAL_NUMBER_13TH :13-ти STR_ORDINAL_NUMBER_14TH :14-ти STR_ORDINAL_NUMBER_15TH :15-ти STR_ORDINAL_NUMBER_16TH :16-ти STR_ORDINAL_NUMBER_17TH :17-ти STR_ORDINAL_NUMBER_18TH :18-ти STR_ORDINAL_NUMBER_19TH :19-ти STR_ORDINAL_NUMBER_20TH :20-ти STR_ORDINAL_NUMBER_21ST :21-ви STR_ORDINAL_NUMBER_22ND :22-ри STR_ORDINAL_NUMBER_23RD :23-ти STR_ORDINAL_NUMBER_24TH :24-ти STR_ORDINAL_NUMBER_25TH :25-ти STR_ORDINAL_NUMBER_26TH :26-ти STR_ORDINAL_NUMBER_27TH :27-ми STR_ORDINAL_NUMBER_28TH :28-ми STR_ORDINAL_NUMBER_29TH :29-ти STR_ORDINAL_NUMBER_30TH :30-ти STR_ORDINAL_NUMBER_31ST :31-ви ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Јан STR_MONTH_ABBREV_FEB :Фев STR_MONTH_ABBREV_MAR :Мар STR_MONTH_ABBREV_APR :Апр STR_MONTH_ABBREV_MAY :Мај STR_MONTH_ABBREV_JUN :Јун STR_MONTH_ABBREV_JUL :Јул STR_MONTH_ABBREV_AUG :Авг STR_MONTH_ABBREV_SEP :Сеп STR_MONTH_ABBREV_OCT :Окт STR_MONTH_ABBREV_NOV :Ное STR_MONTH_ABBREV_DEC :Дек STR_MONTH_JAN :јануари STR_MONTH_FEB :Февруари STR_MONTH_MAR :Март STR_MONTH_APR :Април STR_MONTH_MAY :Мај STR_MONTH_JUN :Јуни STR_MONTH_JUL :Јули STR_MONTH_AUG :Август STR_MONTH_SEP :Септември STR_MONTH_OCT :Октомври STR_MONTH_NOV :ноември STR_MONTH_DEC :декември ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Клучни STR_GRAPH_KEY_TOOLTIP :{BLACK}Прикажи клуч за графикони STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Добивка График STR_GRAPH_INCOME_CAPTION :{WHITE}Приходи График STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Единиците на товар доставени STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Перформанси на компанијата рејтингот (максимум рејтинг = 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}компанијата вредности STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Карго плаќање цени STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Денови во транзит STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Плаќање за доставување 10 единици (или 10.000 литри) на товар на растојание од 20 квадрати STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}им овозможи на сите STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Оневозможи ги сите STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Приказ на сите Товарот на товар плаќање стапки графикон STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Покажи нема Товарот на товар плаќање стапки графикон STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Вклучи графикон за карго тип за вклучување / исклучување STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Прикажи детални перформанси рејтингот # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Клучни на компанијата графикони STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Кликни тука за да го вклучите влез компанијата на графиконот за вклучување / исклучување # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Компанијата табелата STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :инженер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Шверц менаџер STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :транспорт координатор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :пат супервизор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :директор STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Главниот извршен STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Претседател STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :претседател STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :тајкунот # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Детален перформанси рејтинг STR_PERFORMANCE_DETAIL_KEY :{BLACK}Детална STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Погледнете ги деталите за оваа компанија ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}возилата: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}станици: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Мин. профит: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Мин. приход: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Макс. приход: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}дадени: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}карго: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}пари: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}кредит: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Вкупно: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Број на возила кои се претвори профит минатата година. Ова вклучува возила, возови, бродови и авиони STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Број на неодамна сервисираат станица делови. Секој дел на станицата (на пример, железничка станица, автобуска станица, аеродром) се смета, дури и ако тие се поврзани како една станица STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Профитот на возилото со најниски примања (само возила постари од две години се смета) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Износ на готовина направени во четврт со најниска добивка на последните 12 четвртини STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Износ на готовина направени во четврт со најголем профит на последните 12 четвртини STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Единиците на товар испорачани во последните четири квартали STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Број на видови на стока донесено во последниот квартал STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Сума на пари оваа компанија ја има во банката STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Количината на пари оваа компанија е донесена на кредитот STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Вкупно поени од можни поени # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Џез Џубокс STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Сите STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Стар Стил STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Нов Стил STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Свое 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Свое 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Гласност на музка STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Гласност на ефекти STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}МИН STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Песна STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Наслов STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Измешај STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Програм STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Прескокни на претходна избрана песна STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Прескокни на следна избрана песна STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Запри ја музиката STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Вклучи музика STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Повлечи ги лизгачите за местење на гласноста на музиката и ефектите STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Избери програм со сите песни STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Избери 'old style music' програм STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Избери програм „нов стил на музика“ STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Изберете 'Ezy улица стил музика' програма STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Избери 'Сопствен 1' (кориснички дефиниран) програм STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Избери 'Сопствен 2' (кориснички дефиниран) програм STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вклучи/исклучи мешање за програм STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Прикажи диалог за избор на песна STR_ERROR_NO_SONGS :{WHITE}Музички сет без песни е избран. Не песни ќе се одигра # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Избор на музички програм STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Индекс на песната STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Програм - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Исчисти STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Исчисти го тековниот програм (само Сопствен1 или Сопствен2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Кликни на песна за да ја додадеш во тековниот програм (само Сопствен1 или Сопствен2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Кликнете на песна за да го отстраните од тековната програма (Прилагодено 1 или 2 Прилагодено само) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Топ компании што постигнаа {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Компанијата табелата во {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Бизнисмен STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Претпријатие STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Индустриалист STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Капиталист STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Магнат STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Могул STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Тајкун на векот STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} постигна статус на '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} од {COMPANY} постигна статус на'{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Мапа - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Контури STR_SMALLMAP_TYPE_VEHICLES :Возила STR_SMALLMAP_TYPE_INDUSTRIES :Индустрии STR_SMALLMAP_TYPE_ROUTES :Рути STR_SMALLMAP_TYPE_VEGETATION :Вегетација STR_SMALLMAP_TYPE_OWNERS :Сопственици STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Прикажи ги контурите на земјата на мапа STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Прикажи ги возилата на мапа STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Прикажи ги индустриите на мапа STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Прикажи ги транспортните рути на мапа STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Прикажи ја вегетацијата на мапа STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Прикажи сопственици на земјата на мапа STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Кликнете на индустријата тип да го вклучите прикажување на тоа. Ctrl + Кликнете оневозможува сите видови освен избра еден. Ctrl + Кликнете на неа повторно да им овозможи на сите видови индустрија STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Кликнете на една компанија да го вклучите прикажување на својот имот. Ctrl + Кликнете оневозможува сите компании освен избра еден. Ctrl + Кликнете на неа повторно да им овозможи на сите компании STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Патишта STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Пруги STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Станици/Аеродроми/Докови STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Згради/Индустрии STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Возила STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Возови STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Патни Возила STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Бродови STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Летала STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Транспортни Рути STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Шума STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Железничка Станица STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Станица за Товарење STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Автобуска Станица STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Аеродром/Хелипорт STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Док STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Груба Земја STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Земја со Трева STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Гола Земја STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Полиња STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Дрва STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Карпи STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Вода STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Нема Сопственик STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Градови STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Индустрии STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Пустина STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Снег STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Вклучи/исклучи ги имињата на градовите на мапата STR_SMALLMAP_CENTER :{BLACK}Центар мали мапата на тековната позиција STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Оневозможи ги сите STR_SMALLMAP_ENABLE_ALL :{BLACK}им овозможи на сите STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Прикажи висина STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Покажи нема индустрии на сајтот STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Приказ на сите индустрии на сајтот STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Вклучи приказ на висината сајтот STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Покажи нема компанија сопственост на сајтот STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Приказ на сите компанија сопственост на сајтот # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Прикажи ги последните пораки или пријавите вести STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * пауза * * STR_STATUSBAR_AUTOSAVE :{RED}Автозачувување STR_STATUSBAR_SAVING_GAME :{RED}* * ЗАШТЕДА НА ИГРА * * # News message history STR_MESSAGE_HISTORY :{WHITE}порака Историја STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Листа на последните вести пораки STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Порака STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Граѓаните го слават. . .{}Првиот воз пристигнува во {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}граѓаните го слават . . .{}Прво автобус пристигнува во {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}граѓаните го слават . . .{}Прво камион пристигнува во {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Граѓаните го слават. . .{}Прво патнички трамвај пристигнува во {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Граѓаните го слават. . .{}Прво товарни трамвај пристигнува во {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Граѓаните го слават. . .{}Прво брод ќе пристигне на {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Градска прослава . . .{}Првиот авион пристигна на {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Железничка несреќа!{}{COMMA} умре во огнена топка по судир STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Патничко возило несреќа!{}Возач загина во огнена топка по судир со воз STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Авионска несреќа!{}{COMMA} загинати во пожарот на {STATION} STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Цепелинска несреќа на {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Возило уништено при судир со 'НЛО'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Експлозија на рафинерија во близина на {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Фабрика уништена под сомнителни околности во близина на {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'НЛО' приземјено во близина на {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Штета предизвикана од рудник за јаглен во близина на {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Поплави!{}Најмалку {COMMA} исчезнати лица, се претпоставува дека се загинати! # Start of order review system # DON'T ADD OR REMOVE LINES HERE # end of order system STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} не може да се стигне до следната дестинација, бидејќи тоа е надвор од опсегот # Extra view window # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Опции на Играта ############ start of currency region ############ end of currency region ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Империјален STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Метрички STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region ############ start of townname region ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Секој месец # Custom currency window STR_NUM_CUSTOM_NUMBER :Прилагодено ({NUM}) STR_SEA_LEVEL_CUSTOM :Прилагодено STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Прилагодено ({NUM}%) # Advanced settings window STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Сите подесувања STR_CONFIG_SETTING_NONE :Никој STR_CONFIG_SETTING_ORIGINAL :Авторски STR_CONFIG_SETTING_REALISTIC :Реален STR_CONFIG_SETTING_SMOKE_AMOUNT :Износ на локомотива чад / искри: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Инфраструктура за одржување: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Дебелина на линии во графици: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR :Крај на година: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :Изградба: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE :Возила: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#ОПкодови пред скрипти се суспендирани: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Пристигнување на првото возило на станицата на играчот: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Пристигнување на прво возило на конкурентска станица: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Несреќи / хаварии: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Информации за компанијата: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Отворање на индустрии: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Затворање на индустрии: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Промени во економијата: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Производство промени на индустрии сервира од страна на компанијата: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Производство промени на индустрии сервира од страна конкурент(и): {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Други индустрија производство промени: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE :Совет / информации за возилата на компанијата: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Нови возила: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Промени во прием на товар: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES :Субвенции: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Општи информации: {STRING} STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :исклучен STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :резиме STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :целосна STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Градови смеете да изгради ниво премини: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS :Позиција на статусната лента: {STRING} STR_CONFIG_SETTING_ZOOM_MIN :Максимална зумирате ниво: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :Максимална одзумирате ниво: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Нормално STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x # Config errors STR_CONFIG_ERROR :{WHITE}Грешка со конфигурациската датотека... STR_CONFIG_ERROR_ARRAY :{WHITE}... грешка во низа '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... невалиден вредност '{STRING}' за '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... заостанува карактери на крајот на поставување '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... игнорирање НовGRF '{STRING}': дупликат GRF проект со '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... игнорирање на неправилен НовGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :не е најдена STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :небезбедни за статични употреба STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :систем НовиGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :некомпатибилни на оваа верзија на ОтвориTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :непознат STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... ниво на компресија '{STRING}' не е валидна STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... спаси играта формат '{STRING}' не е достапен. се врати на '{STRING}' STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Нема доволно меморија # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Нова Игра STR_INTRO_LOAD_GAME :{BLACK}Вчитај Игра STR_INTRO_SCENARIO_EDITOR :{BLACK}Сценарио едитор STR_INTRO_MULTIPLAYER :{BLACK}Повеќе играчи STR_INTRO_GAME_OPTIONS :{BLACK}Опции на Играта STR_INTRO_SCRIPT_SETTINGS :{BLACK}АИ / Играта Подесувања STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Покажи АИ и игра поставувања # Quit window STR_QUIT_CAPTION :{WHITE}Напушти STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Дали сте сигурни дека сакате да ја напуштите OpenTTD и да се вратите во {STRING}? STR_QUIT_YES :{BLACK}Да STR_QUIT_NO :{BLACK}Не # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Напушти ја Играта STR_ABANDON_GAME_QUERY :{YELLOW}Дали сте сигурни дека сакате да ја напуштите играта? # Cheat window # Livery window # Face selection window # Network server list STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} # Start new multiplayer server # Network game languages ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network game lobby # Network connecting window ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network company list added strings # Network client list # Network set password # Network company info join/password # Network chat # Network messages STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Ти беше испраќање премногу команди на серверот ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :испраќа премногу команди ############ End of leave-in-this-order # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Игра уште пауза ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :игра скрипта ############ End of leave-in-this-order # Content downloading window STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Пребарај надворешни веб-страни STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Вие заминувате од OpenTTD! STR_CONTENT_OPEN_URL :{BLACK}Посетете го веб- STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Посетете го веб-сајт за оваа содржина # Order of these is important! STR_CONTENT_TYPE_GAME_SCRIPT :игра скрипта STR_CONTENT_TYPE_GS_LIBRARY :ГШ библиотека # Content downloading progress window # Content downloading error messages # Transparency settings window # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Прифаќа: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Залихи: {GOLD}{CARGO_LIST} # Join station window # Rail construction toolbar STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Изгради пруга користејки 'Авто-пруга' мод # Rail depot construction window # Rail waypoint construction window # Rail station construction window # Signal window STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Влез сигнализација (електрика){}Зелено е се додека има барем еден зелен излез-сигнал во продолжението на траката, во спротивно е црвено. STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Излез Сигнализација (електрика){}Се однесува на ист начин како блок-сигналот, но потребно е да ја има точната боја на влезен и комбо пресигнал. STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Комбо-Сигнал (електрика){}Комбо сигнализацијата има функција и на обете влезна и како излезна сигнализација. Ова овозможува да се направи голема мрежа од пре-сигнализација. # Bridge selection window STR_BRIDGE_TUBULAR_SILICON :Цилиндричен, Силиконски # Road construction toolbar STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Изгради трамвајски дел STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Изгради пат користејки 'Авто-пат' мод STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Изгради трамвајска линија користејки 'Авто-трам' мод STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Изгради трамвајска гаража (за изградба и сервис на трамваи) STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Изгради трамвајска станица за патници STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Изгради трамвајски мост STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Изгради трамвајски тунел # Road depot construction window # Road vehicle station construction window # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Гради канали. STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Изгради водовод # Ship depot construction window # Dock construction window # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Аеродроми STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Изгради аеродром # Airport construction window STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Распоред {NUM} # Landscaping toolbar STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Снижи агол на земјата STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Подигни агол на земјата # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Избор на објект STR_OBJECT_BUILD_TOOLTIP :{BLACK}Одберете објект да се изгради STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Преглед на објектот STR_OBJECT_BUILD_SIZE :{BLACK}Големина: {GOLD}{NUM} x {NUM} плочки STR_OBJECT_CLASS_LTHS :Светилници STR_OBJECT_CLASS_TRNS :Предаватели # Tree planting window (last two for SE only) # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Генерирање на терен STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Зголеми површина на област за спуштање/подигање STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Намали површина на област за спуштање/подигање STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Генерирај случаен терен STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Ресетирај го теренот STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Ресетирај го теренот # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Генерирање на градови STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Нов Град STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Конструирај нов град STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Случаен Град STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Игради град на случајна локација # Fund new industry window STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Изгради # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Индустрија Верига за {STRING} индустрија STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Индустрија Верига за {STRING} товар STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Производство индустрии STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Прифаќањето индустрии STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Имотот STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Кликни на индустрија за да ја видите неговите добавувачи и клиенти STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Кликни на товар да се види неговите добавувачи и клиенти STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Прикажи синџир STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Прикажи карго снабдување и прифаќање на индустрии STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Линк кон мали сајтот STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Изберете го прикажува индустрии во мали сајтот како и # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Информации за земјишна област STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Цена за чистење: {LTBLUE}N/A STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Цена за чистење: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Сопственик: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Локална власт: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ништо STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Изградба: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Аеродромот класа: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Името на аеродромот: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Прифатен товар: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) # Description of land area of different tiles # Houses come directly from their building names # Industries come directly from their industry names STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Водовод STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Предавател STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Светилникот STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Седиштето на компанијата STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Компанија во сопственост на земјиштето # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}За OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинален copyright {COPYRIGHT} 1995 Chris Sawyer, Сите права се задржани STR_ABOUT_VERSION :{BLACK}OpenTTD верзија {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD тимот # Save/load game/scenario STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Оптоварување на избраната игра STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Детали за играта STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Нема достапни информации. STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}НоваGRF: {WHITE}{STRING} # World generation STR_MAPGEN_MAPSIZE :{BLACK}Големина на мапа: STR_MAPGEN_BY :{BLACK}* # Strings for map borders at game generation # SE Map generation # Map generation progress STR_GENERATION_OBJECT_GENERATION :{BLACK}Цел на генерација STR_GENERATION_PREPARING_SCRIPT :{BLACK}Вклучување на скрипта # NewGRF settings STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE} Детални НовGRF информации STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Активни НовGRF датотеки STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Неактивен НовGRF датотеки STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Изберете дефиниција: STR_NEWGRF_FILTER_TITLE :{ORANGE}Филтер стринг: STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Додај го избраниот НовGRF датотека за вашата конфигурација STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}повторно да го скенира додадени фајлови STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Ажурирање на листата на NewGRF датотеки STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Отстрани STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Отстрани го слектиранијот NewGRF фајл од листата STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Листа на NewGRF фајлови кој се инсталирани STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Внеси параметри STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Прикажи параметри STR_NEWGRF_SETTINGS_VERSION :{BLACK}Верзија за: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Мин. компатибилна верзија: {SILVER}{NUM} # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Промена НовGRF параметри STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Затвори STR_NEWGRF_PARAMETERS_RESET :{BLACK}Ресетирај STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Наместете ги сите параметри на нивните стандардни вредности STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Параметар {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Број на параметри: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Објектот # Sprite aligner window # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Во моментов се користат база графики поставени недостасува голем број на sprites.{}Надградете ја основата графика во собата. # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Внимание! # NewGRF status STR_NEWGRF_LIST_NONE :Никој STR_NEWGRF_LIST_ALL_FOUND :Сите датотеки моментов STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Најдов компатибилен датотеки STR_NEWGRF_LIST_MISSING :{RED}Недостасуваат датотеки # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Тоа е изменета напојува-вагон државата за '{1:ENGINE}' кога не е во внатрешноста на депо. STR_BROKEN_VEHICLE_LENGTH :{WHITE}Возот '{VEHICLE}' сопстевеност на '{COMPANY}' има невалидна должина. Проблемот е веројатно предизвикан од нови графички фајлови. Играта може да се десинхронизира или да падне. # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO :<валиден товар> STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} на <неважечки товар> STR_NEWGRF_INVALID_ENGINE :<валиден возило модел> STR_NEWGRF_INVALID_INDUSTRYTYPE :<валиден индустрија> # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window STR_SIGN_LIST_MATCH_CASE :{BLACK}Совпаѓање на STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Вклучи појавување случај кога се споредуваат знак имиња против низа филтер # Sign window # Town directory window STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Рашири STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Зголеми го градот # Town local authority window STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} # Goal window STR_GOALS_CAPTION :{WHITE}цели STR_GOALS_GLOBAL_TITLE :{BLACK}Глобал цели: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Никој - STR_GOALS_COMPANY_TITLE :{BLACK}Фирма цели: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликнете на цел центар главниот приказ на индустријата / град / плочка. Ctrl + Кликнете отвора нов прозорец на индустријата / град / плочка Локација # Goal question window ### Start of Goal Question button list # Subsidies window STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликни на сервис за да се центрира погледот на индустријата/градот # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Избери ги сите објекти STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Избери ги сите видови товар (including no waiting cargo) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Не чека никаков товар # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Чекање: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} пренасочено од {STATION}) STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Прифаќа: {WHITE}{CARGO_LIST} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts ############ range for rating ends # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} # Finances window STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}инфраструктура # Company view STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} авион STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}инфраструктура: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} железнички парчиња STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} патот парчиња STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} вода плочки STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} станица плочки STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} аеродроми STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Никој STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}детали за STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Погледнете детални точки инфраструктура # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Инфраструктура на {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}железнички парчиња: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}сигнали STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Патот парчиња: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}патот STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}трамвај STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Вода плочки: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}каналите STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}станици: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}станица плочки STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}аеродроми STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/годишно ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/годишно # Industry directory # Industry view STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Производство ниво: {YELLOW}{COMMA}% ############ range for requires starts ############ range for requires ends ############ range for produces starts ############ range for produces ends STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Промена на производство на ниво (процент, до 800%) # Vehicle lists STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Авион STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Авион - кликни на авионот за информации STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Годинашна заработка: {CURRENCY_LONG} (лани: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Достапни Возови STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Достапни Возила STR_VEHICLE_LIST_AVAILABLE_SHIPS :Достапни Бродови STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Достапни Летала STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Преглед на листа на достапни мотори за овој вид на возило STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Менаџирање на листа STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Испрати ги инструкциите на сите возила во листата STR_VEHICLE_LIST_REPLACE_VEHICLES :Замени ги возилата STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Испрати во Гаража STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Испрати во Гаража STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Испрати во Гаража # Group window # Build vehicle window STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Шински возила STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Нов авион STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Опсег: {GOLD}{COMMA} плочки STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Листа за селекција од авиони - кликни на авионот за информации STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Направи авион STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Направи авион од селектираниот тип STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Преименувај STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Преименувај го типот на авиони STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Преименувај го типот на авиони # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Промена на името на депо STR_DEPOT_RENAME_DEPOT_CAPTION :Преименувај депо STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Типови на авионите - десен клик на авиони за информации STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Повлечи го авионот со глушецот овде за да го продадеш STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Нов авион STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Купи нови авиони STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Центар главниот приказ на хангар локација. Ctrl + Кликнете отвора нов прозорец на хангар Локација # Engine preview window STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Цена: {CURRENCY_LONG} Макс. брзина: {VELOCITY} Опсег: {COMMA} плочки{}Капацитет: {CARGO_LONG}, {CARGO_LONG}{}Вклучување Цена: {CURRENCY_LONG}/год STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. брзина: {VELOCITY} Опсег: {COMMA}плочки{}капацитет: {CARGO_LONG}{}Вклучување Цена: {CURRENCY_LONG}/год # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :Воз STR_REPLACE_VEHICLE_ROAD_VEHICLE :Патно возило STR_REPLACE_VEHICLE_SHIP :Брод STR_REPLACE_VEHICLE_AIRCRAFT :Летало # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Центар главниот приказ на локација авионот. Ctrl + клик ќе го следат авион во главниот приказ STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Прати го авионот во хангар. CTRL+клик ќе го прати само на сервис STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Пренамени авион за да може да пренесува друг вид на товар STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Прикажи нарачки авионот. Ctrl + Кликнете да покаже распоред авионот STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Прикажи детали за авионот STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Сега авиони акција - кликни за да се запре / проектот авиони. Ctrl + Кликнете да дојдете до дестинацијата # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Премногу далеку за да следната дестинација # Vehicle stopped/started animations # Vehicle details STR_VEHICLE_NAME_BUTTON :{BLACK}Име STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Име на авионот # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} година{P "" s} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} година{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. брзина: {LTBLUE}{VELOCITY} {BLACK}Опсег: {LTBLUE}{COMMA} плочки STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Смени тип на интервалот за сервисирање STR_VEHICLE_DETAILS_DAYS :Дена STR_VEHICLE_DETAILS_PERCENT :Процент STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Име на авионот # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Вкупен капацитет на овој воз: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Товар STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Информација STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Капацитети STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Вкупно Товар STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Капацитет: {LTBLUE} # Vehicle refit STR_REFIT_TITLE :{GOLD}Одбери тип на товар за носење: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нов капацитет: {GOLD}{CARGO_LONG}{}{BLACK}Пренамената чини: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Нов капацитет: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK} Цена на ремонтирам: {RED}{CURRENCY_LONG} STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Одбери тип на товар што ќе го носи бродот STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Одбери тип на товар за авионот STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Пренамени брод STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Пренамени авион STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Пренамени го бродот за да носи од одбележаниот тип на товар STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Пренамени го авионот за да носи од одбележаниот тип на товар # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_OUT_OF_RANGE :{RED} (Следна дестинација е надвор од опсегот) # Time table window # Date window (for timetable) # AI debug window STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Преглед на излезот од овој Пи STR_AI_GAME_SCRIPT :{BLACK}игра сценарио STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Проверете играта сценарио Вклучи # AI configuration window STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}На GameScript дека ќе се вчита во следниот натпревар STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Во ЗИС дека ќе се вчита во следниот натпревар STR_AI_CONFIG_NONE :(никој) STR_AI_CONFIG_GAMESCRIPT :{SILVER}GameScript STR_AI_CONFIG_AI :{SILVER}ЗИС STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :АИ STR_AI_CONFIG_CHANGE_GAMESCRIPT :GameScript # Available AIs window STR_AI_LIST_CAPTION_AI :ЗИС STR_AI_LIST_CAPTION_GAMESCRIPT :GameScripts # AI Parameters STR_AI_SETTINGS_CAPTION_AI :АИ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :GameScript STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Број на денови за да започнете оваа Пи по претходниот (се дава или зема): {ORANGE}{STRING} # Textfile window # Vehicle loading indicators # Income 'floats' # Saveload messages STR_ERROR_AUTOSAVE_FAILED :{WHITE}Автоматското снимање неуспешно STR_GAME_SAVELOAD_NOT_AVAILABLE :<не се достапни> # Map generation messages STR_ERROR_BMPMAP :{WHITE}Не може да се вчита пејсажот од BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... може да се конвертира типот на сликата # Soundset messages # Screenshot related messages # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Порака STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Порака од {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Надвор од работ на мапата STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Преблизу до работ на мапата STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Недоволно средства - потребни {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Потребно е рамно земјиште STR_ERROR_CAN_T_DO_THIS :{WHITE}Ова не е можно... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Не може да се исчисти оваа област... STR_ERROR_SITE_UNSUITABLE :{WHITE}... несоодветно место STR_ERROR_OWNED_BY :{WHITE}... во сопственост на {STRING} STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} во начинот на # Local authority errors # Levelling errors STR_ERROR_ALREADY_LEVELLED :{WHITE}... веќе рамно # Company related errors # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Не може да се направи град STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Овде не може да се изгради град... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Не може да се прошири градот... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... премногу блиску до крајот на мапата STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... премногу блиску до друг град STR_ERROR_TOO_MANY_TOWNS :{WHITE}... премногу градови STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... не постои такво место за статуа во центарот на градот # Industry related errors # Station construction related errors STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Не може да се изгради аеродром на оваа локација... STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... возење низ запира не можат да имаат агли STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... возење низ запира не може да има крстосници # Station destruction related errors STR_ERROR_THERE_IS_NO_STATION :{WHITE}... нема место тука # Waypoint related errors # Depot related errors STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Не можам да креирам депо ... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... мора да се запре внатре во депо STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... мора да се запре внатре во депо STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... мора да се запре во еден хангар # Autoreplace related errors STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Не авто замени / обнови правила се применуваат STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(лимит на пари) # Rail construction errors STR_ERROR_CROSSING_DISALLOWED :{WHITE}Ниво, нема премини се дозволени за овој вид железнички STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... не постои железничка пруга STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... постојат никакви сигнали # Road construction errors STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... не постои патот STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... не постои трамвајски # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Не може да се направи канал овде... # Tree related errors # Bridge related errors STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Мостот не шефовите на исто ниво STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Мостот е пренизок за теренот # Tunnel related errors # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... премногу објекти STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Не може да се изгради објект ... # Group related errors # Generic vehicle errors STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Авион на патот STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Не може да се пренамени бродот... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Не може да се пренамени авионот... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Не може да се именува авионот... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Не може да сопре/тргне авионот... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Не може да се прати авионот во гаража... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Не можат да купат авион... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Не може да се преименува типот на авиони... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Не може да се продаде авионот... STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Авионот е недостапен STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Има премногу возила во играта STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не може да се смени интервалот за сервисирање... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... возилото е уништено # Specific vehicle errors STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Авионот е во лет # Order related errors STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... премногу далеку од претходните дестинација STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... воздухопловот не е доволно опсег # Timetable related errors # Sign related errors # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :А симулација игра базирана на транспорт Тајкун Делукс # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names ##id 0x4800 # industry names ############ 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 STR_SV_EMPTY : STR_SV_STNAME :{STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 ############ end of savegame specific region! ##id 0x8000 # Vehicle names ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Друмско возило депото #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Бродот депото #{COMMA} STR_COMPANY_SOMEONE :некој # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/unfinished/maltese.txt0000644000000000000000000016636212246102556017751 0ustar rootroot##name Maltese ##ownname Malti ##isocode mt_MT ##plural 12 ##textdir ltr ##digitsep , ##digitsepcur , ##decimalsep . ##winlangid 0x043a ##grflangid 0x09 # $Id: maltese.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(frażi mhix definita) STR_JUST_NOTHING :Xejn # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Passiġġieri STR_CARGO_PLURAL_COAL :Faħam STR_CARGO_PLURAL_MAIL :Posta STR_CARGO_PLURAL_OIL :Żejt STR_CARGO_PLURAL_LIVESTOCK :Bhejjem STR_CARGO_PLURAL_GOODS :Merkanzija STR_CARGO_PLURAL_GRAIN :Qamħ STR_CARGO_PLURAL_WOOD :Injam STR_CARGO_PLURAL_IRON_ORE :Sorsi ta' Ħadid STR_CARGO_PLURAL_STEEL :Azzar STR_CARGO_PLURAL_VALUABLES :Oġġetti ta' Valur STR_CARGO_PLURAL_COPPER_ORE :Sorsi ta' Ram STR_CARGO_PLURAL_MAIZE :Qamħirrum STR_CARGO_PLURAL_FRUIT :Frott STR_CARGO_PLURAL_DIAMONDS :Djamanti STR_CARGO_PLURAL_FOOD :Ikel STR_CARGO_PLURAL_PAPER :Karti STR_CARGO_PLURAL_GOLD :Deheb STR_CARGO_PLURAL_WATER :Ilma STR_CARGO_PLURAL_WHEAT :Qamħ STR_CARGO_PLURAL_RUBBER :Lastku STR_CARGO_PLURAL_SUGAR :Zokkor STR_CARGO_PLURAL_TOYS :Ġugarelli STR_CARGO_PLURAL_CANDY :Ħelu STR_CARGO_PLURAL_COLA :Koka STR_CARGO_PLURAL_COTTON_CANDY :Kandifloss STR_CARGO_PLURAL_BUBBLES :Bżieżaq STR_CARGO_PLURAL_TOFFEE :Tofija STR_CARGO_PLURAL_BATTERIES :Batteriji STR_CARGO_PLURAL_PLASTIC :Plastik STR_CARGO_PLURAL_FIZZY_DRINKS :Luminati # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Passiġġier STR_CARGO_SINGULAR_COAL :Faħam STR_CARGO_SINGULAR_MAIL :Posta STR_CARGO_SINGULAR_OIL :Żejt STR_CARGO_SINGULAR_LIVESTOCK :Bhejjem STR_CARGO_SINGULAR_GOODS :Merkanzija STR_CARGO_SINGULAR_GRAIN :Qamħ STR_CARGO_SINGULAR_WOOD :Injam STR_CARGO_SINGULAR_IRON_ORE :Sors ta' Ħadid STR_CARGO_SINGULAR_STEEL :Azzar STR_CARGO_SINGULAR_VALUABLES :Oġġetti ta' Valur STR_CARGO_SINGULAR_COPPER_ORE :Sors ta' Ram STR_CARGO_SINGULAR_MAIZE :Qamħirrum STR_CARGO_SINGULAR_FRUIT :Frotta STR_CARGO_SINGULAR_DIAMOND :Djamant STR_CARGO_SINGULAR_FOOD :Ikel STR_CARGO_SINGULAR_PAPER :Karta STR_CARGO_SINGULAR_GOLD :Deheb STR_CARGO_SINGULAR_WATER :Ilma STR_CARGO_SINGULAR_WHEAT :Qamħ STR_CARGO_SINGULAR_RUBBER :Lastku STR_CARGO_SINGULAR_SUGAR :Zokkor STR_CARGO_SINGULAR_TOY :Ġugarell STR_CARGO_SINGULAR_CANDY :Ħelwa STR_CARGO_SINGULAR_COLA :Koka STR_CARGO_SINGULAR_COTTON_CANDY :Kandiflos STR_CARGO_SINGULAR_BUBBLE :Bużżieqa STR_CARGO_SINGULAR_TOFFEE :Tofija STR_CARGO_SINGULAR_BATTERY :Batterija STR_CARGO_SINGULAR_PLASTIC :Plastik STR_CARGO_SINGULAR_FIZZY_DRINK :Luminata # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_COAL :{WEIGHT_LONG} ta' faħam STR_QUANTITY_OIL :{VOLUME_LONG} ta' żejt STR_QUANTITY_GRAIN :{WEIGHT_LONG} ta' qamħ STR_QUANTITY_WOOD :{WEIGHT_LONG} ta' injam STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} ta' sorsi tal-ħadid STR_QUANTITY_STEEL :{WEIGHT_LONG} ta' azzar STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} ta' sorsi tar-ram STR_QUANTITY_MAIZE :{WEIGHT_LONG} ta' qamħirrun STR_QUANTITY_FRUIT :{WEIGHT_LONG} ta' frott STR_QUANTITY_FOOD :{WEIGHT_LONG} ta' ikel STR_QUANTITY_PAPER :{WEIGHT_LONG} ta' karti STR_QUANTITY_WATER :{VOLUME_LONG} ta' ilma STR_QUANTITY_WHEAT :{WEIGHT_LONG} ta' qamħ STR_QUANTITY_RUBBER :{VOLUME_LONG} ta' lastku STR_QUANTITY_SUGAR :{WEIGHT_LONG} ta' zokkor STR_QUANTITY_COLA :{VOLUME_LONG} ta' koka STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} ta' kandiflos STR_QUANTITY_PLASTIC :{VOLUME_LONG} ta' plastik # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} passiġġier{P "" i i i} STR_BAGS :{COMMA} bagalj{P a i i i} STR_TONS :{COMMA} tunnellat{P a i i i} STR_LITERS :{COMMA} litr{P u i i i} STR_ITEMS :{COMMA} oġġett{P "" i i i} STR_CRATES :{COMMA} kaxx{P a i i i} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Blu Skur STR_COLOUR_PALE_GREEN :Aħdar ċar STR_COLOUR_PINK :Roża STR_COLOUR_YELLOW :Isfar STR_COLOUR_RED :Aħmar STR_COLOUR_LIGHT_BLUE :Blu Ċar STR_COLOUR_GREEN :Aħdar STR_COLOUR_DARK_GREEN :Aħdar Skur STR_COLOUR_BLUE :Blu STR_COLOUR_CREAM :Krema STR_COLOUR_MAUVE :Vjola Ċar STR_COLOUR_PURPLE :Vjola STR_COLOUR_ORANGE :Oranġo STR_COLOUR_BROWN :Kannella STR_COLOUR_GREY :Griż STR_COLOUR_WHITE :Abjad # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}hp STR_UNITS_POWER_METRIC :{COMMA}hp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tunnellat{P a i i i} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P u i i i} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_OSKTITLE :{BLACK}Daħħal sentenza għall-iffiltrar STR_LIST_FILTER_TOOLTIP :{BLACK}Daħħal kelma biex tiffiltra din il-lista għall- STR_TOOLTIP_SORT_ORDER :{BLACK}Għazel ordni biex tissortja (tielgħa/niezel) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Għazel il-kriterju biex tissortja STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Għazel il-kriterju biex tiffilterja STR_BUTTON_SORT_BY :{BLACK}Issortja b'dan STR_BUTTON_LOCATION :{BLACK}Lokal STR_BUTTON_RENAME :{BLACK}Semmi mil-ġdid STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Għalaq it-tieqa STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlu tat-Tieqa - iddregja din biex tmexxi it-tieqa STR_TOOLTIP_SHADE :{BLACK}Tieqa tad-dell - uri biss il-faxxa tat-titlu STR_TOOLTIP_DEBUG :{BLACK}Uri l-informazzjoni tan-NewGRF debug STR_TOOLTIP_STICKY :{BLACK}Immarka din it-tieqa li ma tistax tingħalaq mil-buttuna 'Għalaq it-twieqi kolla' STR_TOOLTIP_RESIZE :{BLACK}Għafas u dragja biex tbiddel id-daqs tat-tieqa STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Biddel id-daqs tat-tieqa bejn kbir u zgħir STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Faxxa biex tiskrolja - iskrolja l-lista l-fuq jew l-isfel STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Faxxa biex tiskrolja - iskrolja l-lista lejn ix-xellug jew lemin STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Waqqa bini, etc.., Ctrl tagħzel zona dijagonali. Shift taqleb bejn bini/turija ta' stima ta' l-ispiza # Query window STR_BUTTON_DEFAULT :{BLACK}Default STR_BUTTON_CANCEL :{BLACK}Ikkanċella STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Tul: {NUM} STR_MEASURE_AREA :{BLACK}Arja: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Tul: {NUM}{}Differenza fl-għoli: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Popolazzjoni STR_SORT_BY_CAPTION_NAME :{BLACK}Isem STR_SORT_BY_CAPTION_DATE :{BLACK}Data # These are used in dropdowns STR_SORT_BY_NAME :Isem STR_SORT_BY_PRODUCTION :Produzzjoni STR_SORT_BY_TYPE :Tip STR_SORT_BY_TRANSPORTED :Trasportati STR_SORT_BY_NUMBER :Numru STR_SORT_BY_PROFIT_LAST_YEAR :Qligħ is-sena l-oħra STR_SORT_BY_PROFIT_THIS_YEAR :Qligħ din is-sena STR_SORT_BY_AGE :Żmien STR_SORT_BY_RELIABILITY :Affidabilita' STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kapaċita totali għal kull tip ta' merkanzija STR_SORT_BY_MAX_SPEED :Veloċita' massima STR_SORT_BY_MODEL :Mudell STR_SORT_BY_VALUE :Valur STR_SORT_BY_LENGTH :Tul STR_SORT_BY_LIFE_TIME :Isservi sa STR_SORT_BY_TIMETABLE_DELAY :Dewmien fl-iskeda STR_SORT_BY_FACILITY :Tip ta' stazzjon STR_SORT_BY_WAITING :Valur tal-Kargo STR_SORT_BY_RATING_MAX :L-Ogħla livell tal-Kargo STR_SORT_BY_RATING_MIN :L-Inqas livell tal-Kargo STR_SORT_BY_ENGINE_ID :ID tal-magna (issortjar klassiku) STR_SORT_BY_COST :Prezz STR_SORT_BY_POWER :Saħħa STR_SORT_BY_TRACTIVE_EFFORT :Gbit STR_SORT_BY_INTRO_DATE :Data ta' introduzzjoni STR_SORT_BY_RUNNING_COST :Kemm Taħli STR_SORT_BY_POWER_VS_RUNNING_COST :Saħħa/Kemm Taħli STR_SORT_BY_CARGO_CAPACITY :Kapaċita ta' merkanzija STR_SORT_BY_RANGE :Kemm Twassal # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Waqfa temporanja mil-logħba STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Għaġġel il-loghba STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Preferenzi STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Uri l-lista ta' rħula STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Uri s-suddisji STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Uri lista ta' stazzjonijiet ta' kumpanija STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Uri informazzjoni finanzjarja ta' kumpanija STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Uri informazzjoni ġenerali dwar kumpanija STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Uri l-pożizzjonijiet tal-kumpaniji STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ibni industrija ġdida, jew uri lista tal-industriji kollha # Extra tooltips for the scenario editor toolbar ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SEPARATOR : ############ range for SE file menu starts ############ range for settings menu starts ############ range ends here ############ range for file menu starts STR_FILE_MENU_SEPARATOR : ############ range ends here # map menu ############ range for town menu starts ############ range ends here ############ range for subsidies menu starts ############ range ends here ############ range for graph menu starts ############ range ends here ############ range for company league menu starts ############ range ends here ############ range for industry menu starts ############ range ends here ############ range for railway construction menu starts ############ range ends here ############ range for road construction menu starts ############ range ends here ############ range for waterways construction menu starts ############ range ends here ############ range for airport construction menu starts ############ range ends here ############ range for landscaping menu starts ############ range ends here ############ range for music menu starts ############ range ends here ############ range for message menu starts ############ range ends here ############ range for about menu starts ############ range ends here ############ range for days starts (also used for the place in the highscore window) ############ range for days ends ############ range for months starts ############ range for months ends # Graph window STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} # Graph key window # Company league window # Performance detail window STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% ############ Those following lines need to be in this order!! ############ End of order list # Music window STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" # Playlist window # Highscore window STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) # Smallmap window STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Turix industriji fuq il-mappa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Uri l-industriji kollha fuq il-mappa STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Turix il-propjeta tal-kumpanija fuq il-mappa STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Uri l-propjeta kollha tal-kumpanija fuq il-mappa # Status bar messages STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - # News message history # Start of order review system # DON'T ADD OR REMOVE LINES HERE # end of order system STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} mitluf # Extra view window # Game options window ############ start of currency region ############ end of currency region ############ start of measuring units region ############ end of measuring units region ############ start of townname region ############ end of townname region STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn # Custom currency window # Advanced settings window STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Stabbilixxi l-kosti għal manutenzjoni u servizzi fuq vetturi u infrastruttura STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Veloċita' tal-kostruzzjoni: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Illimita l-ammont massimu ta' kostruzzjonijiet għall-AI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Ħsarat fil-vetturi: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Ikkontrolla kemm-il darba vettura li ma ingħatatx servizz riċentament tieqaf STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplikatur tas-sussidju: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Stabbilixxi kemm jiġi mħallas għal konnessjonijiet sussidjati STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Kosti tal-kostruzzjoni: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Stabbilixxi l-livell ta' kostruzzjoni u l-prezz tax-xiri STR_CONFIG_SETTING_RECESSIONS :Riċessjonijiet: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Jekk mixgħula kull ftit snin tista' sseħħ riċessjoni. Waqt riċessjoni, il-produzzjoni ta' kollox tonqos (tirritorna għal kemm kienet qabel kif tgħaddi r-riċessjoni) STR_CONFIG_SETTING_TRAIN_REVERSING :Tħallix li ferrovija ddur lura fi stazzjon: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Jekk tinxtegħel, ferroviji ma jdurux lura fi stazzjonijiet li mhumiex fit-tarf, jekk teżisti rotta iqsar għad-destinazzjoni li jmiss STR_CONFIG_SETTING_DISASTERS :Diżastri: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ixgħel jew itfi diżastri li xi drabi jistgħu jaffetwaw jew ikissru vetturi jew infrastrutturi STR_CONFIG_SETTING_CITY_APPROVAL :L-attitudni tal-kunsill lokali lejn bidliet fil-viċinanzi: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Iddeċiedi kemm l-ammont ta storbju u danni lill-ambjent ta' kumpanija jaffetwaw il-klassifikazzjoni tagħhom mar-raħal u proġetti oħra tal-futur STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avza jekk jintilef il-vehikolu: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :L-ebda azzjoni STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :L-azzjonijiet kollha STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Uza l-lista avvanzata tal-vetturi: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ippermetti l-uzu tal-listi avvanzati tal-vetturi biex tghaqqad il-vetturi fi gruppi # Config errors # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} # Quit window # Supported OSes # Abandon game # Cheat window STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ibdel is-sena # Livery window # Face selection window # Network server list STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} # Start new multiplayer server # Network game languages ############ Leave those lines in this order!! ############ End of leave-in-this-order # Network game lobby # Network connecting window ############ Leave those lines in this order!! ############ End of leave-in-this-order STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} imnizzlin s'issa STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} imnizzlin s'issa # Network company list added strings # Network client list # Network set password # Network company info join/password # Network chat # Network messages ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :reviżjoni ħażina STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :isem diġa qed jintuża STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :password ħażin ############ End of leave-in-this-order # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! ############ End of leave-in-this-order # Content downloading window # Order of these is important! # Content downloading progress window # Content downloading error messages # Transparency settings window # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) # Join station window # Rail construction toolbar # Rail depot construction window # Rail waypoint construction window # Rail station construction window # Signal window # Bridge selection window STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} # Road construction toolbar # Road depot construction window # Road vehicle station construction window # Waterways toolbar (last two for SE only) # Ship depot construction window # Dock construction window # Airport toolbar # Airport construction window # Landscaping toolbar # Object construction window STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Aghzel il-klassi tal-oggett li se tibni # Tree planting window (last two for SE only) # Land generation window (SE) # Town generation window (SE) # Fund new industry window # Industry cargoes window # Land area window # Description of land area of different tiles # Houses come directly from their building names # Industries come directly from their industry names # About OpenTTD window # Save/load game/scenario # World generation STR_MAPGEN_BY :{BLACK}* # Strings for map borders at game generation # SE Map generation # Map generation progress # NewGRF settings STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Informazzjoni dettaljata dwar NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}NewGRF fajls attivi STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}NewGRF fajls inattivi STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Żid il-fajl NewGRF magħżula fil-konfigurazzjoni tiegħek STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Erga' sskanja il-fajls STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Aġġorna l-lista tal-fajls NewGRF disponibbli STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Ma jaqblux ma din il-verzjoni ta' OpenTTD # NewGRF parameters window # NewGRF inspect window # Sprite aligner window # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} # NewGRF related 'general' warnings # NewGRF status # NewGRF 'it's broken' warnings # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window # Sign list window # Sign window # Town directory window STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} # Town local authority window STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} # Goal window STR_GOALS_TEXT :{ORANGE}{STRING} # Goal question window ### Start of Goal Question button list # Subsidies window # Story book window # Station list window STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts ############ range for rating ends # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} # Finances window STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} # Company view # Company infrastructure window # Industry directory # Industry view ############ range for requires starts ############ range for requires ends ############ range for produces starts ############ range for produces ends # Vehicle lists # Group window # Build vehicle window # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Biddel l-isem tad-depot STR_DEPOT_RENAME_DEPOT_CAPTION :Biddel l-isem ta' dan id-depot STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) # Engine preview window # Autoreplace window # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} # Messages in the start stop button in the vehicle view # Vehicle stopped/started animations # Vehicle details # The next two need to stay in this order # Extra buttons for train details windows # Vehicle refit # Order view STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} # Order bottom buttons # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Hassar l-ordnijiet kollha # String parts to build the order string STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Awtomatiku) # Time table window STR_TIMETABLE_TOOLTIP :{BLACK}Skeda - agħfas fuq ordni biex tagħzilha. STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Патуваат со најмногу {2:VELOCITY} (не е време-Увезени) STR_TIMETABLE_TRAVEL_FOR_SPEED :патуваат за {STRING} со најмногу {VELOCITY} STR_TIMETABLE_TOTAL_TIME :{BLACK}Din l-iskeda ser iddum {STRING} biex titlesta STR_TIMETABLE_CHANGE_SPEED :{BLACK}Промена на брзина STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Промена на Максимална брзина од означената цел STR_TIMETABLE_CLEAR_SPEED :{BLACK}Јасно брзина STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Исчисти ја Максимална брзина од означената цел # Date window (for timetable) # AI debug window # AI configuration window STR_AI_CONFIG_CHANGE_NONE : # Available AIs window # AI Parameters # Textfile window STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} лиценца за {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Прикажи ги чита-ми STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Промени се најавите STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лиценца # Vehicle loading indicators # Income 'floats' # Saveload messages # Map generation messages # Soundset messages # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE} Stampa kbira hafna STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}L-istampa se jkollha reżoluzzjoni ta {COMMA} x {COMMA} # Error message titles # Generic construction errors # Local authority errors # Levelling errors # Company related errors # Town related errors # Industry related errors # Station construction related errors # Station destruction related errors # Waypoint related errors # Depot related errors STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Ma tistax tbiddel l-isem ta' dan id-depot... # Autoreplace related errors # Rail construction errors # Road construction errors # Waterway construction errors # Tree related errors # Bridge related errors STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Il-pont jispicca barra l-mappa # Tunnel related errors # Object related errors # Group related errors # Generic vehicle errors STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Ma tistax tbiddel l-isem ta' dan it-tip ta' vapur... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Ma tistax tbiddel l-isem ta' dan it-tip t' ajruplan... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Ma tistax tbigħ din il-ferrovija... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ma tistax tbigħ din il-karozza... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Ma tistax tbigħ dan il-vapur... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Ma tistax tbigħ dan l-ajruplan... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Din il-vettura mhix disponibbli STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Din il-vettura mhix disponibbli STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Dan il-vapur mhux disponibbli STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Dan l-ajruplan mhux disponibbli STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Hemm wisq vetturi fil-logħba # Specific vehicle errors STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Ma tistax tbiddel id-direzzjoni tal-ferrovija... STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Ma tistax tbiddel id-direzzjoni tal-vettura... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}L-ajruplan qed itir # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}M'hemmx spazju għal iktar ordnijiet STR_ERROR_TOO_MANY_ORDERS :{WHITE}Hemm wisq ordnijiet STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Ma tistax tneħħi din l-ordni... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ma tistax tbiddel din l-ordni... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Ma tistax iċċaqlaq din l-ordni... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Ma tistax taqbeż din l-ordni... # Timetable related errors # Sign related errors # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Logħba simulazzjoni bbażata fuq Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Funtana STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Uffiċini STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Hwienet u uffiċini STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Bini modern tal-uffiċini STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Maħżen STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Uffiċini STR_TOWN_BUILDING_NAME_STADIUM_1 :Grawnd STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Djar antiki STR_TOWN_BUILDING_NAME_HOUSES_1 :Djar STR_TOWN_BUILDING_NAME_FLATS_1 :Appartamenti STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Bini twil tal-uffiċini STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Ħwienet u uffiċini STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Ħwienet u uffiċini STR_TOWN_BUILDING_NAME_THEATER_1 :Teatru STR_TOWN_BUILDING_NAME_OFFICES_1 :Uffiċini STR_TOWN_BUILDING_NAME_HOUSES_2 :Djar STR_TOWN_BUILDING_NAME_CINEMA_1 :Ċinema STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu' ##id 0x4800 # industry names STR_INDUSTRY_NAME_DIAMOND_MINE :Minjiera tad-djamanti STR_INDUSTRY_NAME_IRON_ORE_MINE :Minjiera tal-ħadid STR_INDUSTRY_NAME_FRUIT_PLANTATION :Masġar tal-frott STR_INDUSTRY_NAME_RUBBER_PLANTATION :Masġar tal-lastku STR_INDUSTRY_NAME_WATER_SUPPLY :Pompa tal-ilma STR_INDUSTRY_NAME_FACTORY_2 :Fabbrika STR_INDUSTRY_NAME_FARM_2 :Għalqa STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Foresta tal-candyfloss STR_INDUSTRY_NAME_CANDY_FACTORY :Fabbrika tal-Ħelu STR_INDUSTRY_NAME_BATTERY_FARM :Għalqa tal-batteriji STR_INDUSTRY_NAME_COLA_WELLS :Bjar tal-Kola STR_INDUSTRY_NAME_TOY_SHOP :Ħanut tal-Ġugarelli STR_INDUSTRY_NAME_TOY_FACTORY :Fabbrika tal-Ġugarelli STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Funtani tal-Plastik STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Fabbrika tal-Luminata STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Ġeneratur tal-bżiezaq STR_INDUSTRY_NAME_TOFFEE_QUARRY :Barriera tat-Toffee STR_INDUSTRY_NAME_SUGAR_MINE :Minjiera taz-zokkor ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :Bla isem STR_SV_TRAIN_NAME :Ferrovija {COMMA} STR_SV_ROAD_VEHICLE_NAME :Vettura tat-triq {COMMA} STR_SV_SHIP_NAME :Vapur {COMMA} STR_SV_AIRCRAFT_NAME :Ajruplan {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Tramuntana STR_SV_STNAME_SOUTH :{STRING} Nofsinhar STR_SV_STNAME_EAST :{STRING} Lvant STR_SV_STNAME_WEST :{STRING} Punent STR_SV_STNAME_CENTRAL :{STRING} Ċentrali STR_SV_STNAME_HALT :Waqfa {STRING} STR_SV_STNAME_VALLEY :Wied {STRING} STR_SV_STNAME_HEIGHTS :Għoljiet {STRING} STR_SV_STNAME_WOODS :Bosk {STRING} STR_SV_STNAME_LAKESIDE :Lag {STRING} STR_SV_STNAME_EXCHANGE :Skambju {STRING} STR_SV_STNAME_AIRPORT :Ajruport {STRING} STR_SV_STNAME_MINES :Minjieri {STRING} STR_SV_STNAME_DOCKS :Port {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Anness {STRING} STR_SV_STNAME_SIDINGS :Naħiet {STRING} STR_SV_STNAME_BRANCH :Fergħa {STRING} STR_SV_STNAME_UPPER :{STRING} ta' fuq STR_SV_STNAME_LOWER :{STRING} t' isfel STR_SV_STNAME_HELIPORT :Ħeliport {STRING} STR_SV_STNAME_FOREST :Foresta {STRING} STR_SV_STNAME_FALLBACK :{STRING}, Stazzjon #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Fwar) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Fwar) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Fwar) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Fwar) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Fwar) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Elettriku) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Elettriku) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elettriku) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Elettriku) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Karru għall-passiġġieri STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Vann għall-posta STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Karru għall-faħam STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Tanker taż-żejt STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Vann għall-annimali STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Vann għall-merkanzija STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Karru għall-injam STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Karru għall-ikel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Karru għall-karti STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Tanker tal-ilma STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Karru għall-frott STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Karru għaz-zokkor STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Karru għall-bżieżaq STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Karru għall-Ħelu STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Karru għall-Ġugarelli STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Karru għall-Batteriji STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Karru għal-Luminata STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Karru għall-Plastik STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elettriku) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elettriku) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Karru għall-passiġġieri STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Karru għall-posta STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Karru għall-faħam STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Trakk tax-Xarbiet Karbonati STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Tanker taż-żejt MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Tanker taż-żejt CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Vapur tal-passiġġieri MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Vapur tal-passiġġieri FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Ħoverkraft Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Vapur tal-passiġġieri Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Vapur tal-passiġġieri Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Vapur tal-merkanzija Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Vapur tal-merkanzija Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Vapur tal-merkanzija MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Vapur tal-merkanzija Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Ħelikopter Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Ħelikopter Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Ħelikopter Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_UNKNOWN_STATION :stazzjon mhux magħruf STR_DEFAULT_SIGN_NAME :Sinjal STR_COMPANY_SOMEONE :xi ħadd STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/romanian.txt0000644000000000000000000147517112246102561015765 0ustar rootroot##name Romanian ##ownname Românӑ ##isocode ro_RO ##plural 0 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0418 ##grflangid 0x28 # $Id: romanian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(șir nedefinit) STR_JUST_NOTHING :Nimic # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Călători STR_CARGO_PLURAL_COAL :Cărbune STR_CARGO_PLURAL_MAIL :Colete poștale STR_CARGO_PLURAL_OIL :Petrol STR_CARGO_PLURAL_LIVESTOCK :Animale STR_CARGO_PLURAL_GOODS :Bunuri STR_CARGO_PLURAL_GRAIN :Cereale STR_CARGO_PLURAL_WOOD :Lemne STR_CARGO_PLURAL_IRON_ORE :Minereu de fier STR_CARGO_PLURAL_STEEL :Oțel STR_CARGO_PLURAL_VALUABLES :Valori STR_CARGO_PLURAL_COPPER_ORE :Minereu de cupru STR_CARGO_PLURAL_MAIZE :Porumb STR_CARGO_PLURAL_FRUIT :Fructe STR_CARGO_PLURAL_DIAMONDS :Diamante STR_CARGO_PLURAL_FOOD :Alimente STR_CARGO_PLURAL_PAPER :Hârtie STR_CARGO_PLURAL_GOLD :Aur STR_CARGO_PLURAL_WATER :Apă STR_CARGO_PLURAL_WHEAT :Grâu STR_CARGO_PLURAL_RUBBER :Cauciuc STR_CARGO_PLURAL_SUGAR :Zahăr STR_CARGO_PLURAL_TOYS :Jucării STR_CARGO_PLURAL_CANDY :Dulciuri STR_CARGO_PLURAL_COLA :Cola STR_CARGO_PLURAL_COTTON_CANDY :Vată de zahăr STR_CARGO_PLURAL_BUBBLES :Balonașe STR_CARGO_PLURAL_TOFFEE :Caramele STR_CARGO_PLURAL_BATTERIES :Baterii STR_CARGO_PLURAL_PLASTIC :Plastic STR_CARGO_PLURAL_FIZZY_DRINKS :Sucuri acidulate # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Călător STR_CARGO_SINGULAR_COAL :Cărbune STR_CARGO_SINGULAR_MAIL :Colet poștal STR_CARGO_SINGULAR_OIL :Petrol STR_CARGO_SINGULAR_LIVESTOCK :Animale STR_CARGO_SINGULAR_GOODS :Bunuri STR_CARGO_SINGULAR_GRAIN :Cereale STR_CARGO_SINGULAR_WOOD :Lemne STR_CARGO_SINGULAR_IRON_ORE :Minereu de fier STR_CARGO_SINGULAR_STEEL :Oțel STR_CARGO_SINGULAR_VALUABLES :Valori STR_CARGO_SINGULAR_COPPER_ORE :Minereu de cupru STR_CARGO_SINGULAR_MAIZE :Porumb STR_CARGO_SINGULAR_FRUIT :Fructe STR_CARGO_SINGULAR_DIAMOND :Diamante STR_CARGO_SINGULAR_FOOD :Alimente STR_CARGO_SINGULAR_PAPER :Hârtie STR_CARGO_SINGULAR_GOLD :Aur STR_CARGO_SINGULAR_WATER :Apă STR_CARGO_SINGULAR_WHEAT :Grâu STR_CARGO_SINGULAR_RUBBER :Cauciuc STR_CARGO_SINGULAR_SUGAR :Zahăr STR_CARGO_SINGULAR_TOY :Jucărie STR_CARGO_SINGULAR_CANDY :Dulciuri STR_CARGO_SINGULAR_COLA :Cola STR_CARGO_SINGULAR_COTTON_CANDY :Vată de zahăr STR_CARGO_SINGULAR_BUBBLE :Balonaș STR_CARGO_SINGULAR_TOFFEE :Caramea STR_CARGO_SINGULAR_BATTERY :Baterie STR_CARGO_SINGULAR_PLASTIC :Plastic STR_CARGO_SINGULAR_FIZZY_DRINK :Suc acidulat # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} călător{P "" i} STR_QUANTITY_COAL :{WEIGHT_LONG} de cărbune STR_QUANTITY_MAIL :{COMMA} sac{P "" i} cu colete poștale STR_QUANTITY_OIL :{VOLUME_LONG} de petrol STR_QUANTITY_LIVESTOCK :{COMMA} animal{P "" e} STR_QUANTITY_GOODS :{COMMA} pachet{P "" e} de bunuri STR_QUANTITY_GRAIN :{WEIGHT_LONG} de cereale STR_QUANTITY_WOOD :{WEIGHT_LONG} de lemne STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} de minereu de fier STR_QUANTITY_STEEL :{WEIGHT_LONG} de oțel STR_QUANTITY_VALUABLES :{COMMA} cuti{P e i} de valori STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} de minereu de cupru STR_QUANTITY_MAIZE :{WEIGHT_LONG} de porumb STR_QUANTITY_FRUIT :{WEIGHT_LONG} de fructe STR_QUANTITY_DIAMONDS :{COMMA} sac{P "" i} cu diamante STR_QUANTITY_FOOD :{WEIGHT_LONG} de alimente STR_QUANTITY_PAPER :{WEIGHT_LONG} de hârtie STR_QUANTITY_GOLD :{COMMA} sac{P "" i} cu aur STR_QUANTITY_WATER :{VOLUME_LONG} de apă STR_QUANTITY_WHEAT :{WEIGHT_LONG} de grâu STR_QUANTITY_RUBBER :{VOLUME_LONG} de cauciuc STR_QUANTITY_SUGAR :{WEIGHT_LONG} de zahăr STR_QUANTITY_TOYS :{COMMA} sac{P "" i} cu jucării STR_QUANTITY_SWEETS :{COMMA} sac{P "" i} cu bomboane STR_QUANTITY_COLA :{VOLUME_LONG} de cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de vată de zahăr STR_QUANTITY_BUBBLES :{COMMA} balonaș{P "" e} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de caramel STR_QUANTITY_BATTERIES :{COMMA} bateri{P e i} STR_QUANTITY_PLASTIC :{VOLUME_LONG} de plastic STR_QUANTITY_FIZZY_DRINKS :{COMMA} bido{P n ane} cu suc STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}CL STR_ABBREV_COAL :{TINY_FONT}CB STR_ABBREV_MAIL :{TINY_FONT}PO STR_ABBREV_OIL :{TINY_FONT}PT STR_ABBREV_LIVESTOCK :{TINY_FONT}AN STR_ABBREV_GOODS :{TINY_FONT}BN STR_ABBREV_GRAIN :{TINY_FONT}CR STR_ABBREV_WOOD :{TINY_FONT}LM STR_ABBREV_IRON_ORE :{TINY_FONT}FE STR_ABBREV_STEEL :{TINY_FONT}OT STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}CP STR_ABBREV_MAIZE :{TINY_FONT}PR STR_ABBREV_FRUIT :{TINY_FONT}FR STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}AL STR_ABBREV_PAPER :{TINY_FONT}HR STR_ABBREV_GOLD :{TINY_FONT}AU STR_ABBREV_WATER :{TINY_FONT}AP STR_ABBREV_WHEAT :{TINY_FONT}GR STR_ABBREV_RUBBER :{TINY_FONT}CC STR_ABBREV_SUGAR :{TINY_FONT}ZH STR_ABBREV_TOYS :{TINY_FONT}JC STR_ABBREV_SWEETS :{TINY_FONT}BB STR_ABBREV_COLA :{TINY_FONT}CO STR_ABBREV_CANDYFLOSS :{TINY_FONT}VZ STR_ABBREV_BUBBLES :{TINY_FONT}BL STR_ABBREV_TOFFEE :{TINY_FONT}CM STR_ABBREV_BATTERIES :{TINY_FONT}BA STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}SC STR_ABBREV_NONE :{TINY_FONT}NU STR_ABBREV_ALL :{TINY_FONT}TOT # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} călător{P "" i} STR_BAGS :{COMMA} sac{P "" i} STR_TONS :{COMMA} tone STR_LITERS :{COMMA} litri STR_ITEMS :{COMMA} bucăți STR_CRATES :{COMMA} pachet{P "" e} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Albastru închis STR_COLOUR_PALE_GREEN :Verde pal STR_COLOUR_PINK :Roz STR_COLOUR_YELLOW :Galben STR_COLOUR_RED :Roșu STR_COLOUR_LIGHT_BLUE :Albastru deschis STR_COLOUR_GREEN :Verde STR_COLOUR_DARK_GREEN :Verde închis STR_COLOUR_BLUE :Albastru STR_COLOUR_CREAM :Crem STR_COLOUR_MAUVE :Mov STR_COLOUR_PURPLE :Purpuriu STR_COLOUR_ORANGE :Portocaliu STR_COLOUR_BROWN :Maro STR_COLOUR_GREY :Gri STR_COLOUR_WHITE :Alb # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA}cp STR_UNITS_POWER_METRIC :{COMMA}cp STR_UNITS_POWER_SI :{COMMA}kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P ă e} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P u i} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtru: STR_LIST_FILTER_OSKTITLE :{BLACK}Filtru STR_LIST_FILTER_TOOLTIP :{BLACK}Introduceți un cuvânt-cheie pentru filtrarea listei STR_TOOLTIP_SORT_ORDER :{BLACK}Alegeți ordinea de sortare (ascendentă/descendentă) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Alegeți criteriul de sortare STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Alegeți criteriul de filtrare STR_BUTTON_SORT_BY :{BLACK}Ordonează STR_BUTTON_LOCATION :{BLACK}Locație STR_BUTTON_RENAME :{BLACK}Nume nou STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Închide fereastra STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra STR_TOOLTIP_SHADE :{BLACK}Minimizează fereastra - Afișează doar bara de titlu STR_TOOLTIP_DEBUG :{BLACK}Arată informații depanare NewGRF STR_TOOLTIP_STICKY :{BLACK}Previne închiderea acestei ferestre de către tasta 'Închide toate ferestrele' STR_TOOLTIP_RESIZE :{BLACK}Apasă și trage pentru redimensionarea ferestrei STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Comutator pentru dimensiunea ferestrei STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Bara de defilare - defilează în listă sus/jos STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bara de defilare - stânga/dreapta STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolează clădiri, străzi, etc. pe un pătrățel de teren. Ctrl pentru selectare pe diagonală. Shift comută construcție/estimare cost # Query window STR_BUTTON_DEFAULT :{BLACK}Prestabilit(e) STR_BUTTON_CANCEL :{BLACK}Anulează STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Lungime: {NUM} STR_MEASURE_AREA :{BLACK}Suprafața: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Lungime: {NUM}{}Diferența de înălțime: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Suprafaţa: {NUM} x {NUM}{}Diferenţa de înălţime: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Populaţia STR_SORT_BY_CAPTION_NAME :{BLACK}Nume STR_SORT_BY_CAPTION_DATE :{BLACK}Dată # These are used in dropdowns STR_SORT_BY_NAME :Nume STR_SORT_BY_PRODUCTION :Producţie STR_SORT_BY_TYPE :Tip STR_SORT_BY_TRANSPORTED :Transportat STR_SORT_BY_NUMBER :Număr STR_SORT_BY_PROFIT_LAST_YEAR :Profit anul trecut STR_SORT_BY_PROFIT_THIS_YEAR :Profit anul acesta STR_SORT_BY_AGE :Vechime STR_SORT_BY_RELIABILITY :Eficienţă STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacitatea totală în funcţie de încărcătură STR_SORT_BY_MAX_SPEED :Viteza maximă STR_SORT_BY_MODEL :Model STR_SORT_BY_VALUE :Valoare STR_SORT_BY_LENGTH :Lungime STR_SORT_BY_LIFE_TIME :Durată de viaţă rămasă STR_SORT_BY_TIMETABLE_DELAY :Întârzieri STR_SORT_BY_FACILITY :Tipul staţiei STR_SORT_BY_WAITING :Valoarea mărfii în aşteptare STR_SORT_BY_RATING_MAX :Cel mai mare rating STR_SORT_BY_RATING_MIN :Cel mai mic rating STR_SORT_BY_ENGINE_ID :IDMotor (model clasic) STR_SORT_BY_COST :Cost STR_SORT_BY_POWER :Putere STR_SORT_BY_TRACTIVE_EFFORT :Efort tractor STR_SORT_BY_INTRO_DATE :Data lansării STR_SORT_BY_RUNNING_COST :Cost exploatare STR_SORT_BY_POWER_VS_RUNNING_COST :Putere/Cost exploatare STR_SORT_BY_CARGO_CAPACITY :Capacitate încărcătură STR_SORT_BY_RANGE :Raza de acțiune # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauză joc STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Măreşte viteza de trecere a timpului STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opţiuni STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Salvare/abandon/ieşire joc STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Afişează harta STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Afişează lista cu oraşele de pe hartă STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Afişează subvenţiile STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Afişează lista cu staţiile companiei STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Afişează informaţiile financiare ale companiei STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Afişează date generale despre companie STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Afişează grafice STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Afişează clasamentul companiilor STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Listează sau fondează obiectivele industriale STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Afişează lista cu trenurile companiei. Ctrl+Click alternează deschiderea listei cu grupuri/vehicule STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Afişează lista cu autovehiculele companiei. Ctrl+Click alternează deschiderea listei cu grupuri/vehicule STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Afişează lista cu navele companiei. Ctrl+Click alternează deschiderea listei cu grupuri/vehicule STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Afişează lista cu aeronavele companiei. Ctrl+Click alternează deschiderea listei cu grupuri/vehicule STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Măreşte imaginea STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Micşorează imaginea STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construieşte căi ferate STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construieşte drumuri STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construieşte porturi STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construieşte aeroporturi STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Afişează instrumentele pentru modelarea terenului, plantarea copacilor, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Afişează fereastra pentru configurarea sunetului/muzicii STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Afişează ultimul mesaj (ultima ştire), opţiunile pentru mesaje STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informaţii despre teren, consolă, depanare IA, capturi ecran, despre OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Comută bara de unelte # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Salvează/încarcă scenariu, abandonează editorul, ieşire STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Editor de scenarii STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Schimbă data de start cu un an înapoi STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Schimbă data de start cu un an înainte STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Click pentru a introduce anul de pornire STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Afişează harta, lista cu oraşe STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Generare peisaj STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generare oraş STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generare industrii STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Construcţii rutiere STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Plantează arbori. Shift comută între plantare/afişare cost estimat STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Plasează semn STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Amplasează obiect. Shift comută între amplasare/afişare cost estimat ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Salvează scenariul STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Încarcă scenariu STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Salvează harta înălţimilor STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Încarcă harta de înălţimi STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Ieşire din editorul de scenarii STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Ieşire din joc ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Opţiunile jocului STR_SETTINGS_MENU_CONFIG_SETTINGS :Setări avansate STR_SETTINGS_MENU_SCRIPT_SETTINGS :Setări IA / Script Joc STR_SETTINGS_MENU_NEWGRF_SETTINGS :Setări NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opţiuni transparenţă STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Afişează numele oraşelor STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Afişează numele staţiilor STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Afişează numele punctelor de tranzit STR_SETTINGS_MENU_SIGNS_DISPLAYED :Afişează semnele de pe hartă STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Afişează numele și semnele competitorilor STR_SETTINGS_MENU_FULL_ANIMATION :Animaţie completă STR_SETTINGS_MENU_FULL_DETAIL :Detalii grafice complete STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Peisaj transparent STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Nume staţii/semne transparente ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Salvează jocul STR_FILE_MENU_LOAD_GAME :Încarcă joc STR_FILE_MENU_QUIT_GAME :Ieşire în meniul principal STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Ieşire din joc ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Harta lumii STR_MAP_MENU_EXTRA_VIEW_PORT :Ecran suplimentar STR_MAP_MENU_SIGN_LIST :Lista de semne ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Lista oraşelor STR_TOWN_MENU_FOUND_TOWN :Fondează oraş ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subvenţii STR_SUBSIDIES_MENU_GOAL :Ţinte curente ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Profitul operaţional STR_GRAPH_MENU_INCOME_GRAPH :Venituri STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Număr încărcături livrate STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Evoluţia performanţei STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Valoarea companiei STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Valorile plăţilor pe încărcături ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Clasamentul companiilor STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Rating de performanţă detaliat STR_GRAPH_MENU_HIGHSCORE :Tabela cu scoruri maxime ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Lista industriilor STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Lanțuri industriale STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Obiectiv industrial nou ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Construcţie cale ferată STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Construcţie cale ferată electrificată STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Construcţie monoşină STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Construcţie pernă magnetică ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Construcţii rutiere STR_ROAD_MENU_TRAM_CONSTRUCTION :Construcţie tramvai ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Construcţie rute acvatice ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Construire aeroport ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Modificare peisaj STR_LANDSCAPING_MENU_PLANT_TREES :Plantează arbori STR_LANDSCAPING_MENU_PLACE_SIGN :Plasează semn ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Sunet/muzică ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Ultimul mesaj/ultima ştire STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Lista ultimelor mesaje ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Informaţii despre teren STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Consolă pornit/oprit STR_ABOUT_MENU_AI_DEBUG :Depanare Inteligenţă Artificială / Script Joc STR_ABOUT_MENU_SCREENSHOT :Capturează ecranul STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captură mărită STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Mărimea implicită a capturii STR_ABOUT_MENU_GIANT_SCREENSHOT :Capturează toată harta STR_ABOUT_MENU_ABOUT_OPENTTD :Despre 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Aliniere imagini STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Afişează/ascunde casetele de încadrare STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Comutator pentru colorarea secțiunilor murdare ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1 STR_ORDINAL_NUMBER_2ND :2 STR_ORDINAL_NUMBER_3RD :3 STR_ORDINAL_NUMBER_4TH :4 STR_ORDINAL_NUMBER_5TH :5 STR_ORDINAL_NUMBER_6TH :6 STR_ORDINAL_NUMBER_7TH :7 STR_ORDINAL_NUMBER_8TH :8 STR_ORDINAL_NUMBER_9TH :9 STR_ORDINAL_NUMBER_10TH :10 STR_ORDINAL_NUMBER_11TH :11 STR_ORDINAL_NUMBER_12TH :12 STR_ORDINAL_NUMBER_13TH :13 STR_ORDINAL_NUMBER_14TH :14 STR_ORDINAL_NUMBER_15TH :15 STR_ORDINAL_NUMBER_16TH :16 STR_ORDINAL_NUMBER_17TH :17 STR_ORDINAL_NUMBER_18TH :18 STR_ORDINAL_NUMBER_19TH :19 STR_ORDINAL_NUMBER_20TH :20 STR_ORDINAL_NUMBER_21ST :21 STR_ORDINAL_NUMBER_22ND :22 STR_ORDINAL_NUMBER_23RD :23 STR_ORDINAL_NUMBER_24TH :24 STR_ORDINAL_NUMBER_25TH :25 STR_ORDINAL_NUMBER_26TH :26 STR_ORDINAL_NUMBER_27TH :27 STR_ORDINAL_NUMBER_28TH :28 STR_ORDINAL_NUMBER_29TH :29 STR_ORDINAL_NUMBER_30TH :30 STR_ORDINAL_NUMBER_31ST :31 ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Ian STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Mai STR_MONTH_ABBREV_JUN :Iun STR_MONTH_ABBREV_JUL :Iul STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Oct STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dec STR_MONTH_JAN :ianuarie STR_MONTH_FEB :februarie STR_MONTH_MAR :martie STR_MONTH_APR :aprilie STR_MONTH_MAY :mai STR_MONTH_JUN :iunie STR_MONTH_JUL :iulie STR_MONTH_AUG :august STR_MONTH_SEP :septembrie STR_MONTH_OCT :octombrie STR_MONTH_NOV :noiembrie STR_MONTH_DEC :decembrie ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Legendă STR_GRAPH_KEY_TOOLTIP :{BLACK}Afişează legenda graficelor STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graficul profitului din operare STR_GRAPH_INCOME_CAPTION :{WHITE}Graficul veniturilor STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unităţi de marfă livrate STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Evaluarea performanţelor companiilor (maxim=1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valorile companiilor STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Preţurile transportului de călători şi mărfuri STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Zile în tranzit STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Plata pentru livrarea a 10 unităţi (sau 10.000 de litri) de marfă pe o distanţă de 20 de pătrăţele STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Activează tot STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Dezactivează tot STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Afişează toate mărfurile în graficul de plăţi STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Nu afişa niciun tip de marfă în graficul de plăţi STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Comutator pentru afişarea graficului de marfă STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Afişează detaliile ratingului performanţei # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Legenda graficelor STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Click aici pentru a comuta afişarea informaţiilor despre companie # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Clasamentul companiilor STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inginer STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Manager de trafic STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordonator transporturi STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervizor STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Director STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Director executiv STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director general STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Preşedinte STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnat # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Rating de performanţă detaliat STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalii STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Vizualizează detalii despre această companie ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehicule: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Staţii: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Profit minim: STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Venit minim: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Venit maxim: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Livrări: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Mărfuri: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Cont curent: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Credite: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Numărul de vehicule profitabile pe anul precedent. Include autovehicule, trenuri, nave şi aeronave STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Numărul staţiilor. Se numără fiecare componentă în cazul unor staţii compuse simultan din gări, aeroporturi, porturi, staţii de autobuz, etc. STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Profitul vehiculului cu cele mai mici încasări (doar vehiculele mai vechi de 2 ani sunt listate) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Suma de bani obţinută în trimestrul cu cel mai mic profit din ultimele 12 trimestre. STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Suma de bani obţinută în trimestrul cu cel mai mare profit din ultimele 12 trimestre. STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Numărul de încărcături transportate în ultimele 12 luni. STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Tipuri de mărfuri transportate în ultimele 3 luni. STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Balanţa curentă STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Ponderea creditelor STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Punctajul total din numărul maxim posibil # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Tonomatul cu jazz STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Tot STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Oldies STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Moderne STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Personale 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Personale 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volumul muzicii STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volumul efectelor sonore STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Piesa STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titlul STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Aleator STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Program STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Sari la piesa precedentă din selecţie STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Sari la piesa următoare din selecţie STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Opreşte muzica STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Porneşte muzica STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Foloseşte aceste indicatoare pentru a regla volumul muzicii şi al efectelor sonore STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Selectează programul 'toate melodiile' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Selectează programul 'oldies' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selectează programul 'modern' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selectează programul muzical 'Ezy Street' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selectează programul personal 1 STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selectează programul personal 2 STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Comutator pentru amestecarea melodiilor (pornit/oprit) STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afişeaza fereastra pentru selecţia melodiilor STR_ERROR_NO_SONGS :{WHITE}A fost selectat un set de muzică fără melodii. Nici o melodie nu va fi cântată # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Programare piese muzicale STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lista melodiilor STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Şterge STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Şterge programul curent (doar pentru cele personale) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click pe o melodie pentru a o adăuga în programul personal curent STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Apasă pe melodie pentru a o elimina din programul actual (doar Custom1 sau Custom2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Primele companii care au atins {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Clasamentul companiilor în {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Om de afaceri STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Întreprinzător STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industriaş STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitalist STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnat STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Mogul STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Magnatul Secolului STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} a dobândit titlul de '{STRING}'! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} al {COMPANY} dobândeşte titlul de '{STRING}'! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Harta - {STRING} STR_SMALLMAP_TYPE_CONTOURS :Relief STR_SMALLMAP_TYPE_VEHICLES :Vehicule STR_SMALLMAP_TYPE_INDUSTRIES :Industrii STR_SMALLMAP_TYPE_ROUTES :Rute STR_SMALLMAP_TYPE_VEGETATION :Vegetaţie STR_SMALLMAP_TYPE_OWNERS :Proprietari STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Arată relieful pe hartă STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Arată vehiculele pe hartă STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Arată industriile pe hartă STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Arată rutele de transport pe hartă STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Arată vegetaţia pe hartă STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Arată proprietarii de teren pe hartă STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Click pe tipul de industrie pentru a comuta afișarea acestuia. Ctrl+Click dezactivează toate tipurile cu excepția celui selectat. Ctrl+Click din nou pentru a reactiva toate tipurile de industrii STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Click pe o companie pentru a comuta afișarea proprietăților acesteia. Ctrl-Click dezactivează toate companiile cu excepția celei selectate. Ctrl-Click din nou pentru a activa toate companiile STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Drumuri STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Căi ferate STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Staţii/Aeroporturi/Porturi STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Clădiri/Industrii STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehicule STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Trenuri STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Autovehicule STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Nave STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aeronave STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Rute de transport STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Pădure STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Gară STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Loc încărcare camioane STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Staţie de autobuz STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroport/Heliport STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Port STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Teren pietros STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Pajişte STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Teren viran STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Teren agricol STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Copaci STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Pietre STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Apă STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Fără proprietar STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Oraşe STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industrii STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deşert STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Zăpadă STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Comutator pentru afișarea numele oraşelor pe hartă STR_SMALLMAP_CENTER :{BLACK}Centrează harta mică la poziţia actuală STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Dezactivează toate STR_SMALLMAP_ENABLE_ALL :{BLACK}Activează toate STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Afişează înălţimea STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Nu afişa nicio industrie pe hartă STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Afişează toate industriile pe hartă STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Comută afişarea hărţii de înălţimi STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nu se afisează proprietățile companiilor pe hartă STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Afișează toate proprietățile companiei pe hartă # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Re-afişează ultimul mesaj STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZĂ * * STR_STATUSBAR_AUTOSAVE :{RED}SALVARE AUTOMATĂ STR_STATUSBAR_SAVING_GAME :{RED}* * SALVARE JOC * * # News message history STR_MESSAGE_HISTORY :{WHITE}Cronologia mesajelor STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}O listă a celor mai recente mesaje STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Mesaj STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte primul tren la {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte primul autobuz la {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte primul camion la {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte primul tramvai pentru călători la {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte primul tramvai pentru marfă la {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte prima navă la {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Cetăţenii sărbătoresc . . .{}Soseşte prima aeronavă la {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Accident feroviar!{}{COMMA} victime în urma coliziunii STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Accident rutier!{}Şoferul a decedat în urma coliziunii cu un tren STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Accident rutier!{}{COMMA} victime în urma coliziunii cu un tren STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Accident aviatic!{}{COMMA} victime în urma prăbuşirii de la {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Accident aviatic!{}Aeronava a rămas fără combustibil, {COMMA} victime în urma dezastrului STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Accident de zepelin la {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Autovehicul distrus în urma coliziunii cu un OZN! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Explozie la o rafinărie de lângă {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrică distrusă în condiţii misterioase lângă {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}Un OZN a aterizat lângă {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Prăbuşirea unei mine de cărbune lângă {TOWN} provoacă daune majore! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundaţii!{}Se estimează cel puţin {COMMA} victime! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Companie de transport cu probleme! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} va fi vândută sau declarată în faliment dacă situaţia financiară nu se va îmbunătăţi curând! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Fuziune între companii de transport! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} a fost vândută companiei {STRING} la preţul de {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Faliment! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}Compania {STRING} a fost închisă şi toate activele au fost valorificate de creditori! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}A apărut o nouă companie de transport! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} şi-a stabilit sediul lângă {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} a fost preluată de {STRING}! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Preşedinte) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} a sponsorizat construcţia unui nou oras {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Un nou obiectiv industrial ({STRING}) se construieşte lângă {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}O nouă {STRING} se plantează lângă {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} anunţă închiderea iminentă! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Problemele de aprovizionare provoacă închiderea iminentă a {STRING}! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Lipsa de teren împădurit provoacă închiderea {STRING}! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Uniunea Monetară Europeană!{}{}Euro este introdus în ţară ca monedă unică de folosinţă în tranzacţiile zilnice! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recesiune mondială!{}{}Experţii financiari se tem de ceea ce e mai rău odată cu prăbuşirea economică! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recesiunea s-a încheiat!{}{}Creşterea comerţului dă încredere industriei, iar economia se redresează! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} măreşte producţia! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Rezerve noi de cărbune la {INDUSTRY}!{}Se preconizează dublarea producţiei! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Rezerve noi de petrol la {INDUSTRY}!{}Se preconizează dublarea producţiei! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Noile tehnologii folosite la {INDUSTRY} vor aduce dublarea producţiei! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Producţia de {STRING} de la {INDUSTRY} creste cu {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} scade producţia cu 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insectele cauzează distrugeri masive la {INDUSTRY}!{}Producţia scade cu 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Producţia de {STRING} de la {INDUSTRY} scade cu {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} aşteaptă în depou STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} aşteaptă în depou STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} aşteaptă în depou STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} aşteaptă în hangar # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} are prea puţine ordine în program STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} nu are nici un ordin STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} are ordine duplicate STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} are o staţie invalidă în ordine # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} este vechi STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} este foarte vechi STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} este foarte vechi şi trebuie înlocuit STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nu găseşte calea către destinaţie STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} s-a rătăcit STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}Profitul {VEHICLE} pe anul precedent a fost de {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} nu poate ajunge la următoarea destinație deoarece se află în afara razei de acțiune STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} s-a oprit deoarece recondiţionarea programată a eşuat STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Autoreînnoire eşuată pentru {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Un nou tip de {STRING} este acum disponibil! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Un nou tip de {STRING} este acum disponibil! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} nu mai acceptă {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} nu mai acceptă {STRING} sau {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} acceptă acum {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} acceptă acum {STRING} şi {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Ofertă expirată:{}{}Transportul de {STRING} de la {STRING} la {STRING} nu va mai fi subvenţionat STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Ofertă retrasă:{}{}Transportul de {STRING} de la {STRING} la {STRING} nu va mai fi subvenţionat STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subvenţie oferită:{}{}Primul transport de {STRING} de la {STRING} la {STRING} va primi o subvenţie pe un an din partea autorităţilor locale! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvenţie acordată companiei {STRING}!{}{}Transportul de {STRING} de la {STRING} la {STRING} va aduce încasări cu 50% mai mari timp de un an! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvenţie acordată companiei {STRING}!{}{}Transportul de {STRING} de la {STRING} la {STRING} va aduce încasări duble timp de un an! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvenţie acordată companiei {STRING}!{}{}Transportul de {STRING} de la {STRING} la {STRING} va aduce încasări triple timp de un an! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvenţie acordată companiei {STRING}!{}{}Transportul de {STRING} de la {STRING} la {STRING} va aduce încasări de patru ori mai mari timp de un an! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Haos pe străzile din {TOWN}!{}{}Programul finanţat de {STRING} pentru reconstrucţia străzilor aduce 6 luni de haos participanţilor la trafic! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopol de transport! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Autoritatea locală a oraşului {TOWN} semnează un contract cu {STRING} pentru un an de drepturi exclusive de transport! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ecran {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiază în ecran STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copiază locaţia ecranului principal în acest ecran STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Importă din ecran STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copiază locaţia acestui ecran în ecranul principal # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Opţiuni STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitate monetară STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Alege unitatea monetară ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Liră sterlină (£) STR_GAME_OPTIONS_CURRENCY_USD :Dolar american ($) STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€) STR_GAME_OPTIONS_CURRENCY_JPY :Yen japonez (¥) STR_GAME_OPTIONS_CURRENCY_ATS :Şiling austriac (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Franc belgian (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Franc elveţian (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Coroană cehă (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Marcă germană (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Coroană daneză (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Peseta (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Marcă finlandeză (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Franc francez (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Drahmă grecească (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Forint unguresc (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Coroană islandeză (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Liră italiană (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Gulden olandez (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Coroană norvegiană (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Zlot polonez (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Leu românesc (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Rublă rusească (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Tolar sloven (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Coroană suedeză (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Liră turcească (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Coroană slovacă (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Real brazilian (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Coroane estoniene (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Litas lituanian (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Won sud-corean (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-african (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizată... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Unităţi de măsură STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Selecţie unităţi de măsură ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Imperiale STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metrice STR_GAME_OPTIONS_MEASURING_UNITS_SI :SI ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autovehiculele circulă... STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Alege partea străzii pe care se circulă STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Pe partea stângă STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Pe partea dreaptă STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Numele oraşelor STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Alege naţionalitatea numelor oraşelor ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Englezeşti (Original) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Franţuzeşti STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Nemţeşti STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Englezeşti (Adiţional) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latino-Americane STR_GAME_OPTIONS_TOWN_NAME_SILLY :Amuzante STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Suedeze STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Olandeze STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finlandeze STR_GAME_OPTIONS_TOWN_NAME_POLISH :Poloneze STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovace STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norvegiene STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungureşti STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austriece STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Româneşti STR_GAME_OPTIONS_TOWN_NAME_CZECH :Ceheşti STR_GAME_OPTIONS_TOWN_NAME_SWISS :Elveţiene STR_GAME_OPTIONS_TOWN_NAME_DANISH :Daneze STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turceşti STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italieneşti STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalană ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Salvare automată STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Alege intervalul de timp dintre salvările automate STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Dezactivată STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :În fiecare lună STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :La fiecare 3 luni STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :La fiecare 6 luni STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :La fiecare 12 luni STR_GAME_OPTIONS_LANGUAGE :{BLACK}Limba STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Alege limba în care doreşti afişată interfaţa STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Ecran întreg STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Bifează această căsuţă pentru a juca pe tot ecranul STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rezoluţia ecranului STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Alege rezoluţia dorită pentru joc STR_GAME_OPTIONS_RESOLUTION_OTHER :(alta/nespecificată) STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formatul capturii de ecran STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Alege tipul fişierului în care se salvează captura de ecran (screenshot) STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafic de bază STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selectează setul grafic de bază utilizat în joc STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fişier{P "" "e"} lipsă/corupt{P "" e} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informaţii adiţionale despre setul grafic de bază STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set sunete de bază STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Selectează un set de sunete pentru a fi folosit în joc STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informaţii adiţionale despre setul de sunete de bază STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Setul de muzică de bază STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selectaţi setul de muzică de bază STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fişier{P "" e} corupt{P "" e} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informaţii adiţionale despre setul de muzică de bază STR_ERROR_FULLSCREEN_FAILED :{WHITE}Comutarea pe întreg ecranul a eşuat # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Monedă proprie STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Curs de schimb: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Scade valoarea monedei tale pentru o liră sterlină (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Măreşte valoarea monedei tale pentru o liră sterlină (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Setează rata de schimb pentru o liră sterlină (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Separator: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Caracterul separator pentru monedă STR_CURRENCY_PREFIX :{LTBLUE}Prefix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Setează prefixul monedei STR_CURRENCY_SUFFIX :{LTBLUE}Sufix: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Setează sufixul monedei STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Aderă la Euro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Aderă la Euro: {ORANGE}niciodată STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Anul în care se schimbă în Euro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Trecerea la Euro - mai devreme STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Trecerea la Euro - mai târziu STR_CURRENCY_PREVIEW :{LTBLUE}Previzualizare: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 de Lire sterline (£) în moneda proprie STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Schimbă un parametru al monedei proprii STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Numărul maxim de companii concurente: {ORANGE}{COMMA} STR_NONE :Nimic STR_FUNDING_ONLY :Doar finanțare STR_MINIMAL :Minim STR_NUM_VERY_LOW :Foarte scăzut STR_NUM_LOW :Scăzut STR_NUM_NORMAL :Normal STR_NUM_HIGH :Ridicat STR_NUM_CUSTOM :Personalizat STR_NUM_CUSTOM_NUMBER :Personalizat ({NUM}) STR_VARIETY_NONE :Nimic STR_VARIETY_VERY_LOW :Foarte mic STR_VARIETY_LOW :Mic STR_VARIETY_MEDIUM :Mediu STR_VARIETY_HIGH :Mare STR_VARIETY_VERY_HIGH :Foarte mare STR_AI_SPEED_VERY_SLOW :Foarte încet STR_AI_SPEED_SLOW :Încet STR_AI_SPEED_MEDIUM :Mediu STR_AI_SPEED_FAST :Repede STR_AI_SPEED_VERY_FAST :Foarte repede STR_SEA_LEVEL_VERY_LOW :Foarte scăzut STR_SEA_LEVEL_LOW :Scăzut STR_SEA_LEVEL_MEDIUM :Mediu STR_SEA_LEVEL_HIGH :Ridicat STR_SEA_LEVEL_CUSTOM :Personalizat STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Personalizat ({NUM}%) STR_RIVERS_NONE :Deloc STR_RIVERS_FEW :Puţine STR_RIVERS_MODERATE :Mediu STR_RIVERS_LOT :Multe STR_DISASTER_NONE :Deloc STR_DISASTER_REDUCED :Redus STR_DISASTER_NORMAL :Frecvenţă normală STR_SUBSIDY_X1_5 :x1,5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Foarte plat STR_TERRAIN_TYPE_FLAT :Plat STR_TERRAIN_TYPE_HILLY :Deluros STR_TERRAIN_TYPE_MOUNTAINOUS :Muntos STR_CITY_APPROVAL_PERMISSIVE :Permisivă STR_CITY_APPROVAL_TOLERANT :Tolerantă STR_CITY_APPROVAL_HOSTILE :Ostilă STR_WARNING_NO_SUITABLE_AI :{WHITE}Nu este disponibil nici un modul de Inteligenţă Artificială...{}Puteţi descărca diferite module de Inteligenţă Artificială prin sistemul de 'Resurse Online' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Setări avansate STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtru: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Extinde toate STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Colapsează toate STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(descrierea nu este disponibilă) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valoare implicită: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Tip setare: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :Setare client (nu se stochează în salvări; se aplică pentru toate jocurile) STR_CONFIG_SETTING_TYPE_GAME_MENU :Setări joc (stocate în fişierele de salvare; afectează doar jocurile noi) STR_CONFIG_SETTING_TYPE_GAME_INGAME :Setări joc (stocate în fişierul de salvare; afectează doar jocul curent) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Setări companie (stocate în fişierele de salvare; afectează doar jocurile noi) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Setări companie (stocate în fişierul de salvare; afectează doar compania curentă) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Arată: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Arată în lista de mai jos doar setările modificate STR_CONFIG_SETTING_RESTRICT_BASIC :Setări de bază STR_CONFIG_SETTING_RESTRICT_ADVANCED :Setări avansate STR_CONFIG_SETTING_RESTRICT_ALL :Setări expert / toate setările STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Setări cu altă valoare decît cea prestabilită STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Setări cu valori diferite față de cele setate de tine pentru joc nou STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Limitează lista de mai jos la anumite tipuri de setări STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Toate tipurile de setări STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Setări client (nu sunt stocate în salvări; afectează toate jocurile) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Setări joc (stocate în salvări; afectează doar jocurile noi) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Setări joc (stocate în salvări; afectează doar jocul curent) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Setări companie (stocate în salvări; afectează doar jocurile noi) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Setări compenia (stocate în salvări; afectează doar compania curentă) STR_CONFIG_SETTING_OFF :Inactiv STR_CONFIG_SETTING_ON :Activ STR_CONFIG_SETTING_DISABLED :Dezactivat STR_CONFIG_SETTING_COMPANIES_OFF :Oprit STR_CONFIG_SETTING_COMPANIES_OWN :Propria companie STR_CONFIG_SETTING_COMPANIES_ALL :Toate companiile STR_CONFIG_SETTING_NONE :Deloc STR_CONFIG_SETTING_ORIGINAL :Original STR_CONFIG_SETTING_REALISTIC :Realist STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :stânga STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :centru STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :dreapta STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Valoarea maximă a împrumutului initial: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Valoarea maximă pe care o companie o poate împrumuta (fără a ține cont de inflație) STR_CONFIG_SETTING_INTEREST_RATE :Rata dobânzii: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Rata dobânzii; de asemenea controlează inflația dacă este activată STR_CONFIG_SETTING_RUNNING_COSTS :Costuri de funcționare: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Alege nivelul de întreținere și costul de rulare al vehiculelor sau al infrastructurii STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Viteza de construcție: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limitează numărul de acțiuni de construcție pentru AI STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Defecțiuni ale vehiculelor: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controlează cât de des se defectează vehiculele prost întreținute STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicator al subvențiilor: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Alege cât de mult se plătește pentru conexiuni subvenționate STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costuri de construcție: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Alege nivelul de construcție și costurile de achiziție STR_CONFIG_SETTING_RECESSIONS :Recesiuni: {STRING} STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Dacă este activată, este posibil să existe recesiuni la perioade de câțiva ani. În timpul recesiunii, toată producția este semnificativ redusă (revine la nivelul anterior când recesiunea se termină) STR_CONFIG_SETTING_TRAIN_REVERSING :Nu permite întoarcerea trenurilor in statie: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Dacă este activată, trenurile nu vor întoarce într-o stație care nu este capăt de linie, chiar dacă există o cale mai scurtă către destinația următoare la întoarcere STR_CONFIG_SETTING_DISASTERS :Dezastre: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Comută dezastre care ocazional pot bloca sau distruge vehicule sau infrastructură STR_CONFIG_SETTING_CITY_APPROVAL :Atitudinea consiliului orașului cu privire la restructurarea zonei: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Alege în ce măsură poluarea fonică si deranjamentul local provocat de o companie va afecta impresia orașului despre aceasta, si viitoarele planuri de construcție in zonă STR_CONFIG_SETTING_BUILDONSLOPES :Permite construirea pe coastă şi în pantă: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Dacă este activat, şinele şi staţiile pot fi construite pe majoritatea pantelor. Dacă este dezactivat, acestea pot fi construite doar pe pante care coincid cu direcţia şinelor şi astfel nu necesită fundaţie STR_CONFIG_SETTING_AUTOSLOPE :Permite terra-formarea sub clădiri, şine, etc. (auto-pante): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite terraformarea sub clădiri şi şine fără eliminarea acestora STR_CONFIG_SETTING_CATCHMENT :Permite arii de cuprindere mai realiste: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permite zone diferite de captare pentru tipuri diferite de staţii şi aeroporturi STR_CONFIG_SETTING_EXTRADYNAMITE :Permite demolarea unui nr. mai mare de construcţii deţinute de oraş: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitează eliminarea de clădiri şi infrastructură deţinute de oraş STR_CONFIG_SETTING_TRAIN_LENGTH :Lungimea maximă a trenurilor: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Configurează lungimea maximă a trenurilor STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} pătrăţel{P 0 "" e} STR_CONFIG_SETTING_SMOKE_AMOUNT :Cantitatea de fum/ scântei ale vehiculului: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Configurează cât de mult fum sau cât de multe scântei sunt emise de vehicule STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Modelul de acceleraţie al trenurilor: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Selectează modelul fizic pentru accelerarea trenurilor. Modelul "original" penalizează pantele în mod egal pentru toate vehiculele. Modelul "realistic" penalizează pantele şi curbele în funcţie de mai mulţi parametrii, cum ar fi lungimea şi efortul tractor STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Modelul de acceleraţie al vehiculelor rutiere: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Selectează modelul fizic pentru accelerarea autovehiculelor. Modelul "original" penalizează pantele în mod egal pentru toate autovehiculele. Modelul "realistic" penalizează pantele şi curbele în funcţie de mai mulţi parametrii ai motorului, cum ar fi efortul tractor STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Înclinarea pantelor pentru trenuri: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Înclinarea unui pătrăţel de pantă pentru trenuri. O valoare mai mare face urcarea mai dificilă STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Înclinarea pantelor pentru autovehicule: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Înclinarea unui pătrăţel de pantă pentru autovehicule. O valoare mai mare face urcarea mai dificilă STR_CONFIG_SETTING_FORBID_90_DEG :Interzice trenurilor şi navelor să facă întoarceri la 90°: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Întoarcerile la 90 de grade au loc atunci când o bucată orizontală de şină este urmată imediat de o bucată verticală, astfel făcând trenul să întoarcă la 90 de grade când traversează muchia unui pătrăţel faţă de întoarcerile obişnuite de la 45 de grade pentru alte combinaţii de şină. Aceasta se aplică şi unghiului de întoarcere al navelor STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permite unirea staţiilor neînvecinate: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite adăugarea de elemente unei staţii fără a atinge direct elemente existente. Necesită Ctrl+Click pentru adăugărea elementelor noi STR_CONFIG_SETTING_IMPROVEDLOAD :Foloseşte algoritm de încărcare îmbunătăţit: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Dacă este activată, încărcarea vehiculelor care aşteaptă în aceeaşi staţie se va face în secvenţă. Încărcarea următorului vehicul începe doar dacă există destul cargo pentru a umple complet primul vehicul STR_CONFIG_SETTING_GRADUAL_LOADING :Încarcă vehiculele gradual: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Încarcă vehiculele gradual folosind duratele de încarcare specifice fiecărui vehicul, în loc să se încarce totul dintr-o dată folosind o durată fixată în funcţie de cantitatea de cargo încărcată STR_CONFIG_SETTING_INFLATION :Inflaţia: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activează inflaţia în economie, unde costurile cresc ceva mai rapid decât plăţile STR_CONFIG_SETTING_SELECTGOODS :Livrează marfa doar în staţiile unde aceasta este cerută: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Livrează cargo doar către o staţie unde există cereri de la vehicule pentru încărcare. Aceasta previne rating-uri slabe pentru cargo care nu este ridicat din staţie STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Lungimea maximă a podurilor: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Lungimea maximă pentru construcţia de poduri STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Lungimea maximă a tunelurilor: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Lungimea maximă pentru construcţia de tuneluri STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Metoda manuală de construcţie a industriilor primare: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda de finanţare a industriilor primare. 'nici una' înseamnă că nu este posibile să se finanţeze nici una, 'prospectare' înseamnă ca finanţarea este posibilă, dar construcţia se realizează intr-un loc aleator şi poate eşua, 'la fel ca celelalte industrii' inseamnă că industriile de materie primă pot fi construite de către companii la fel ca industriile procesatoare, în orice locaţie doresc STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :niciuna STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ca alte industrii STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :de prospecţie STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Zonă plată în jurul industriilor: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Suprafaţa zonei plate din jurul industriilor. Aceasta asigură că există spaţiu liber în jurul industriilor pentru construcţia de şine, etc STR_CONFIG_SETTING_MULTIPINDTOWN :Permite mai multe industrii similare în acelaşi oras: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :De obicei, un oraş nu doreşte mai multe industrii de acelaşi tip. Cu această setare, se permin mai multe industrii de acelaşi tip în acelaşi oraş STR_CONFIG_SETTING_SIGNALSIDE :Arată semnalele: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Selectează pe care parte a şinei să fie plasate semnalele STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Pe partea stângă STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :În direcţia de mers STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Pe partea dreaptă STR_CONFIG_SETTING_SHOWFINANCES :Afişează finanţele la sfârşitul fiecărui an: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Dacă este activat, fereastra de finanţe apare automat la sfârşitul fiecărui an pentru a permite inspectarea facilă a stării financiale a companiei STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Ordinele noi sunt implicit 'fără oprire': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :În mod obişnuit, un vehicul va opri în fiecare staţie prin care trece. Prin activarea acestei setări, va trece prin toate staţiile în drumul către destinaţia finală, fără a oprii. Notă: această setare are efect doar asupra valorii implicite pentru comenzile noi. Comenzile individuale pot fi configurate explicit cu oricare din variante STR_CONFIG_SETTING_STOP_LOCATION :Ordinele noi pentru trenuri opresc implicit la {STRING} platformei STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Locul unde un tren va oprii pe platformă. La 'capătul apropiat' inseamnă că trenul va oprii aproape de locul de intrare, 'mijloc' inseamnă mijlocul platformei, iar 'capătul îndepărtat' înseamnă departe de locul de intrare. Notă: această setare are efect doar pentru comenzile noi. Comenzile individuale pot fi configurate explicit cu oricare din variante STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :capătul apropiat al STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :mijlocul STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :capătul îndepartat al STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Autovehiculele pot forma cozi (cu efecte cuantice): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Vehiculele așteptă în fața stației pînă se eliberează STR_CONFIG_SETTING_AUTOSCROLL :Mută imaginea când mouse-ul este la marginea ecranului: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Cand este activată, ecranele se vor deplasa cînd mouse-ul este aproape de margine STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :dezactivat STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :ecranul principal, doar în mod ecran-complet STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :ecranul principal STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :fiecare ecran STR_CONFIG_SETTING_BRIBE :Permite mituirea autorităţilor locale: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite companiilor să încerce să mituiască autoritatea locală. Daca încercarea este descoperită de către un inspector, compania nu va mai putea executa nici o acțiune în oraș timp de șase luni STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permite cumpărarea de drepturi exclusive de transport: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Dacă o companie cumpără drepturi exclusive de transport într-un oras, staţiilor oponenţilor (de pasageri şi mărfuri) nu vor primi niciun fel de cargo pentru un an întreg STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permite finaţarea clădirilor noi: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite companiilor să doneze bani orașelor pentru construcția de noi locuințe STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permite finanțarea reconstrucției străzilor locale: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite companiilor să doneze bani orașelor pentru reconstrucția drumurilor, sabotându-se astfel serviciile rutiere din oraș STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permite transfer de bani către alte companii: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite transerurile de bani între companii in mod multiplayer STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicator greutate pt marfar pt simularea trenurilor grele: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Setează impactul mărfii în trenuri. O valoare mare face transportul mai dificil, in special pe dealuri STR_CONFIG_SETTING_PLANE_SPEED :Multiplicator viteză avioane: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Setează viteza relativă a avioanelor în comparație cu alte vehicule, pentru a reduce valoare venitului provenit de la avioane STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Numărul avioanelor care se prăbușesc: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Setează șansa ca prabușirea unui avion să se intâmple STR_CONFIG_SETTING_PLANE_CRASHES_NONE :niciunul STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :redus STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normal STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite construirea staţiilor pe drumurile din proprietatea oraşului: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construcția stațiilor pe drumurile construite de un oraș STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permite construirea staţiilor pe drumurile competitorilor: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construcția stațiilor pe drumurile construite de altă companie STR_CONFIG_SETTING_ADJACENT_STATIONS :Permite construirea de staţii adiacente: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Permite staților diferite sa se atingă STR_CONFIG_SETTING_DYNAMIC_ENGINES :Permite mai multe seturi NewGRF simultan: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Optiune de compatibilitate pentru vechile fișiere NewGRF. Nu dezactiva asta, decât dacă știi exact ce faci! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Schimbarea acestei setări nu este permisă când există vehicule în joc STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Mentenanță infrastructură: {STRING} STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Cand este activă, infrastructura necesita cheltuieli cu intreținerea. Costurile cresc proporțional cu rețeaua de transport, afectând companiile mari mai mult decât companiile mici STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroporturile nu expiră niciodată: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activarea acestei opțiuni determina ca fiecare tip de aeroport sa fie disponibil permanent, după ce a fost introdus. STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avertisment dacă vehiculul s-a pierdut: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Afișează mesaje despre vehiculele care nu pot găsi o cale către destinația curentă STR_CONFIG_SETTING_ORDER_REVIEW :Verificarea ordinelor vehiculelor: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Dacaă este activată, ordinele vehiculelor sunt verificate periodic, iar unele probleme evidente sunt raportate printr-o notificare STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nu STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :da, dar exclude vehiculele oprite STR_CONFIG_SETTING_ORDER_REVIEW_ON :pentru toate vehiculele STR_CONFIG_SETTING_WARN_INCOME_LESS :Avertisment dacă profitul unui vehicul este negativ: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :După activare, o notificare este afișată dacă un vehicul nu a facut nici un profit intr-un an calendaristic STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehiculele nu expiră niciodată: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :După activare, toate modelele de vehicule rămân disponibile permanent după introducerea lor STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Înnoire automată pentru vehiculele învechite: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :După activare, orice vehicul care este învechit va fi reînnoit automat când condițiile de înlocuire automată sunt îndeplinite STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autoreînnoire când vehiculul {STRING} vârsta maximă STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Vârsta aproximativă când un vehicul ar trebui autoreînnoit STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :mai are {COMMA} lun{P 0 ă i} până la STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :a depășit cu {COMMA} lun{P 0 ă i} STR_CONFIG_SETTING_AUTORENEW_MONEY :Fonduri minime pentru înnoire automată: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Suma minimă care trebuie să rămână disponibilă atunci când se face autoreînnoirea STR_CONFIG_SETTING_ERRMSG_DURATION :Durata de afișare a mesajelor de eroare: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Durata afișării mesajelor de eroare în fereastra roșie. Unele mesaje de eroare (cele critice) nu sunt închise automat după trecerea acestei perioade, și trebuie închise manual. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} secund{P 0 ă e} STR_CONFIG_SETTING_HOVER_DELAY :Afișează texte informative: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Durata dinaintea afișării textelor informative când se ține mouse-ul pe un element al interfeței. Alternativ, afișarea textelor informative poate fi setată pentru click-dreapta STR_CONFIG_SETTING_HOVER_DELAY_VALUE :După {COMMA} secund{P 0 ă e} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Click dreapta STR_CONFIG_SETTING_POPULATION_IN_LABEL :Afişează populaţia unui oras lângă nume: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Afișează populația orașelor în numele afișate pe hartă STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grosimea liniilor din grafice: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grosimea liniilor din grafice. O linie subțire este mai informativă, o linie mai groasă este mai ușor de văzut și are culorile mai usor de distins STR_CONFIG_SETTING_LAND_GENERATOR :Generator teren: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distanța maximă de la marginea hărții pentru rafinării: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinăriile de petrol vor fi construite doar la marginea hărţii, sau pe coastă, în cazul harţilor insulare STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Grosimea stratului de zăpadă: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Duritatea terenului (doar pt TerraGenesis) : {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Foarte fin STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Fin STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Dur STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Foarte dur STR_CONFIG_SETTING_TREE_PLACER :Algoritm amplasare arbori: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Niciunul STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Îmbunătăţit STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotaţie hartă înălţimi: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Spre stânga STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Spre dreapta STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Nivelul înălţimii pentru hărţile plane: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Permite terraformarea suprafeţelor din marginea hărţii: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Dacă este dezactivat, marginile hărţii vor fi întotdeauna ocean STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Una sau mai multe suprafeţe din marginea nordică nu sunt goale STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Una sau mai multe suprafeţe din marginea hărţii nu contin apă STR_CONFIG_SETTING_STATION_SPREAD :Întinderea maximă a stațiilor: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Zona maximă în care o stație se poate întinde. Valorile mari vor încetini jocul STR_CONFIG_SETTING_SERVICEATHELIPAD :Service automat pentru elicoptere la helipaduri: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Efectueaza service pentru elicoptere la fiecare aterizare, chiar dacă nu există hangar acolo STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Conectează bara de instrumente pentru peisaj cu cea de construcţii feroviare/auto/navale/aeriene: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :La deschiderea unei bare de instrumente pentru construcția unor căi de transport, deschide și bara de instrumente pentru modificarea terenului STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Culoarea terenului folosită pentru harta mică: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Culoarea terenului pe harta mică STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde închis STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mov STR_CONFIG_SETTING_REVERSE_SCROLLING :Inversează direcţia de scroll: {STRING} STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Modul de funcționare in momentul folosirii butonului drept al mouse-ului pentru deplasare pe hartă. Când opțiunea este dezactivată, mouse-ul schimbă poziția camerei. La activare, mouse-ul desplasează harta. STR_CONFIG_SETTING_SMOOTH_SCROLLING :Derulare uşoară ecran: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlează modul de deplasare a imaginii din ecranul principal când se face click pe harta mică sau când se execută o comandă de deplasare către un obiect anume de pe hartă. Dacă este activată, imaginea se deplasează în mod fluid, altfel imaginea sare direct la zona dorită STR_CONFIG_SETTING_MEASURE_TOOLTIP :Arată o indicaţie de distanţă la folosirea uneltelor de construcţie: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Afișează distanțele în pătrățele și diferențele de înălțime la mișcarea mouse-ului în timpul operațiilor de construcție STR_CONFIG_SETTING_LIVERIES :Arată culorile companiilor: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Controlează modul de folosire al mărfurilor specifice anumitor vehicule (spre deosebire de cele specifice unor companii) STR_CONFIG_SETTING_LIVERIES_NONE :Niciunul STR_CONFIG_SETTING_LIVERIES_OWN :Propria companie STR_CONFIG_SETTING_LIVERIES_ALL :Toate companiile STR_CONFIG_SETTING_PREFER_TEAMCHAT :Chat între membrii echipei folosind tasta : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Schimbă modul de afisare a conversatiei publice și a conversației interne a companiei, folosind tasta sau STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Funcţia roţii mouse-ului: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Activează deplasarea imaginii folosind mouse cu roată de scroll bi-dimensională STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Zoom hartă STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Derulează harta STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Inactivă STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Viteza de derulare a hărtii pt rotiţa mouse-ului: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Controlează senzitivitatea roatei de scroll a mouse-ului STR_CONFIG_SETTING_OSK_ACTIVATION :Tastatură virtuală: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Alege metoda de deschidere a tastaturii virtuale, pentru a introduce text in câmpul de text folosind doar un mouse sau echipament hardware similar. Această opțiune este menită pentru aparate mici, care nu dețin o tastatură adevarată. STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Dezactivat STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Click dublu STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Un singur click (când este în focus) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Un singur click (instant) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Emulare click-dreapta: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Alege metoda de emulare a click-urilor provenite de la butonul din dreapta al mouse-ului STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Comandă+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+Click STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Oprit STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Derulare ecran cu click-stânga: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activează derularea hărții prin tragerea acesteia cu butonul stâng al mouse-ului. Această opțiune este în special utilă când se folosește un ecran tactil pentru deplasare STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Foloseşte formatul datei {STRING} pentru numele salvărilor STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formatul datei in numele salvărilor STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lung (31 Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :scurt (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta implicită pentru NewGRF-uri care nu specifică o paletă: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta implicită care va fi folosită cu un NewGRF, dacă acesta nu specifică o anume paletă STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paletă (D) implicită STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paletă (W) veche STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :La pornirea unui joc nou, pune-l pe pauză: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Când este activată, jocul se va comuta automat in mod pauză la pornirea unui nou joc, permițând astfel un studiu mai atent al hărții STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Când jocul este în pauză permite: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Alege ce acțiuni se pot efectua cât timp jocul este în pauză STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :nicio acţiune STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :toate acţiunile non-construcție STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :toate exceptând modificarea peisajului STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :toate acțiunile STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Foloseşte lista avansată de vehicule: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activează folosirea listelor avansate de vehicule pentru a gruparea acestor vehicule STR_CONFIG_SETTING_LOADING_INDICATORS :Foloseşte indicatorii de încărcare: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Alege dacă indicatori de încărcare sunt afișați deasupra unor vehicule care sunt în proces de încărcare sau descărcare STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Arată orarul pe programări în unități de timp interne în loc de zile: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Arată timpii de călatorie în tabela cu timpi a jocului folosind unități de timp interne în loc de zile STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Afişează plecările şi sosirile în orare: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Arată timpii estimați de plecare și sosire în orar STR_CONFIG_SETTING_QUICKGOTO :Creare rapidă a ordinelor pentru vehicule: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Preselectează cursorul "mergi la" când se deschide fereastra de comenzi STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipul implicit de şină (după joc nou/încarcare joc): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipul de cale feroviară care va fi ales la pornirea sau îmcărcarea jocului. 'Prima disponibilă' alege cel mai nou tip de cale feroviară și 'Cea mai folosită' alege tipul cel mai des folosit în acel moment. STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Prima disponibilă STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Ultima disponibilă STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Cea mai folosită STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Arată liniile rezervate: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Acordă căilor feroviare rezervate o culoare diferită pentru a depista mai ușor probleme cum ar fi trenuri refuzând intrarea în secțiuni bazate pe căi stabilite anterior STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pastrează active instrumentele de construcţie după utilizare: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Menține barele de construcție pentru tunele, poduri șamd deschise după folosire STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupează cheltuielile în raportul financiar al companiei: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definește stilul ferestrei care afișează cheltuielile companiei STR_CONFIG_SETTING_SOUND_TICKER :Afișaj știri: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Redă sunet la afișarea sumarului știrilor STR_CONFIG_SETTING_SOUND_NEWS :Ziar: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Redă sunet la afișarea ziarelor STR_CONFIG_SETTING_SOUND_NEW_YEAR :Finalul anului: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Redă sunet la final de an pentru sumarul performanței companiei comparat cu cel din anul anterior STR_CONFIG_SETTING_SOUND_CONFIRM :Construcție: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Redă sunetele de finalizare a construcțiilor sau ale altor acțiuni STR_CONFIG_SETTING_SOUND_CLICK :Apăsări de butoane: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Sunet la apăsarea butoanelor STR_CONFIG_SETTING_SOUND_DISASTER :Dezastre/accidente: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Redă sunetele accidentelor și dezastrelor STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicule: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Redă sunetele vehiculelor STR_CONFIG_SETTING_SOUND_AMBIENT :Ambient: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Redă sunetele ambientale ale peisajului, industriei și orașelor STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Dezactivează construcția de infrastructuri pentru care nu există vehicule disponibile: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Dacă este activată, infrastructura este disponibilă doar când există vehicule sau nave, prevenind astfel pierderea de timp si fonduri pe infrastructură inutilă în acel moment STR_CONFIG_SETTING_MAX_TRAINS :Nr. max. de trenuri per companie: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Numărul maxim de trenuri pe care o companie le poate deține STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Nr. max. de autovehicule per companie: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Numărul maxim de vehicule rutiere pe care o companie le poate deține STR_CONFIG_SETTING_MAX_AIRCRAFT :Nr. max. de aeronave per companie: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Numărul maxim de aeronave pe care o companie le poate deține STR_CONFIG_SETTING_MAX_SHIPS :Nr. max. de nave per companie: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Numărul maxim de nave pe care o companie le poate deține STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Dezactivează trenurile pentru jucătorii controlaţi de calculator: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi trenuri STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Dezactivează autovehiculele pentru jucătorii controlaţi de calculator: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi vehicule rutiere STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Dezactivează aeronavele pentru jucătorii controlaţi de calculator: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi aeronave STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Dezactivează navele pentru jucătorii controlaţi de calculator: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Prin activarea acestei opțiuni, jucatorul controlat de calculator nu poate construi nave STR_CONFIG_SETTING_AI_PROFILE :Configurația implicită: {STRING} STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Alege o configurație care va fi folosită pentru AI aleator, sau care va fi furniza valori implicite când se adaugă un nou AI sau script STR_CONFIG_SETTING_AI_PROFILE_EASY :Ușor STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mediu STR_CONFIG_SETTING_AI_PROFILE_HARD :Dificil STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permite Inteligenţă Artificială în multiplayer: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite ca jucătorii controlați de AI să participe în jocuri multiplayer STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Număr opcodes înainte de suspendarea scripturilor: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Numărul maxim de instrucțiuni pe care un script le poate executa pe parcursul unei ture STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaluri de service în procente: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Alege dacă întreținerea vehiculelor este activată de trecerea unei anumite perioade de timp, sau scăzând un anumit procent din gradul de rezistență al vehiculului STR_CONFIG_SETTING_SERVINT_TRAINS :Intervalul de întreținere implicit al trenurilor: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Alege perioada de întreținere implicită pentru noi vehicule feroviare, dacă nu există un interval de întreținere stabilit pentru vehicul STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} zi{P 0 "" le}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Dezactivat STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervalul de întreținere implicit al vehiculelor rutiere: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Alege perioada de întreținere implicită pentru noi vehicule rutiere, dacă nu există un interval de întreținere stabilit pentru vehicul STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervalul de întreținere implicit al aeronavelor: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Alege perioada de întreținere implicită pentru noi aeronave, dacă nu există un interval de întreținere stabilit pentru aeronave STR_CONFIG_SETTING_SERVINT_SHIPS :Intervalul de întreținere implicit al navelor: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Alege perioada de întreținere implicită pentru noi nave, dacă nu există un interval de întreținere stabilit pentru nave STR_CONFIG_SETTING_NOSERVICE :Deactivare service când defecţiunile nu sunt active: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Dacă este activată, vehiculele nu vor întreținute dacă nu se pot defecta STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activează limite de viteză pentru vagoane: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Dacă este activată, folosește și limita de viteză a vagoanelor pentru a stabili viteza maximă a trenului STR_CONFIG_SETTING_DISABLE_ELRAILS :Dezactivează şinele electrice: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Prin activarea acestei opțiuni, se dezactivează cerința de a avea cale feroviară electrificată pentru a putea folosi locomotive electrice pe această cale feroviară STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Sosirea primului vehicul la una din staţiile tale: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Afișează un ziar când o stație nouă a companiei primește primul vehicul STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Sosirea primului vehicul la una din staţiile competitorilor: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Afișează un ziar când o stație nouă a unui competitor primește primul vehicul STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidente / dezastre: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Afișează un ziar când există un accident sau un dezastru natural STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Informaţii despre companie: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Afișează un ziar când o nouă companie este înființată, sau când o companie este pe cale de a intra în faliment STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Inaugurare industrii: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Afișează un ziar când o nouă industrie este înființată STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Închidere industrii: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Afișează un ziar când o industrie este inchisă STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Schimbări economice: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Afișează un ziar când apar schimbări globale ale economiei STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Schimbări de producţie ale industriilor partenere cu compania: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Afișează un ziar când nivelul de producție al unei industrii, deservită de companie, se schimbă STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Schimbări de producţie ale industriilor partenere cu concurenţa: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Afișează un ziar când nivelul de producție al unei industrii, deservită de competitori, se schimbă STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Alte schimbări în producţia industrială: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Afișează un ziar când nivelul de producție al unei industrii, neservită de companie sau competitori, se schimbă STR_CONFIG_SETTING_NEWS_ADVICE :Sugestii / informaţii despre vehiculele companiei: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Afișează mesaje referitoare la vehicule care trebuie inspectate STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Vehicule noi: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Afișează un ziar când un nou tip de vehicul devine disponibil STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Schimbări ale acceptării mărfurilor: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Afișează mesaje referitoare la modificarea tipurilor de cargo acceptate de către stații STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subvenţii: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Afișează ziarul evenimentelor legate de subvenții STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informaţii generale: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Afișează ziarul despre evenimentele generale, precum achizițiile de drepturi exclusive sau finanțările reconstrucțiilor de drumuri STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Oprit STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Pe scurt STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Pe larg STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Ştirile color apar în: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Anul începând cu care anunțurile din ziar sunt tipărite color. Înainte de acest an, anunturile sunt monocrome (alb/negru) STR_CONFIG_SETTING_STARTING_YEAR :Anul de început al jocului: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Economie cu schimbări mai reduse, dar mai frecvente: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Dacă este activată, nivelul de producție al industriilor se schimbă mai des și în pași mai mici. Această opțiune de regulă nu are efect dacă tipul industriei este furnizat printr-un NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Permite cumpărarea de acţiuni de la alte companii: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Dacă este activată, se permite cumpărarea și vânzarea de acțiuni ale companiilor. Acțiunile devin disponibile doar când compania depășește o anumită vârstă STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procentul din profitul pe secţiune care să fie plătit pentru alimentare: {STRING} STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Procentul din câştig care este oferit legăturilor intermediare pentru alimentare, oferind mai mult control asupra încasărilor STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Când se trage cu mouse-ul, plasează semnale la fiecare: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Configurează distanţa la care se vor construi semnale pe şină până la următorul obstacol (semnal, intersecţie), dacâ se trage cu mouse-ul STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} pătrăţel{P 0 "" e} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :La plasarea mai multor semale, păstrează distanţa fixă între acestea: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construieşte automat semafoare înainte de: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Alege anul din care se vor folosi semnale electrice pe calea feroviară. Înainte de acest an, se vor folosi semnale non-electrice care au aceeasi funcționalitate dar arată diferit STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activare GUI pentru semnale: {STRING} STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Afişează o fereastră pentru alegerea tipului de semnal de contruit, în loc sa se selecteze tipul de semnal prin cliclare folosind Ctrl+Click STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Tip semnal implicit: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Tipul de semnal implicit STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Semnal de bloc STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Semnale pentru linii STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Sens unic avansat STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Ciclu prin tipurile de semnal: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Selectează între care tipuri de semnale să se cicleze când se apasă Ctrl+Click pe un semnal folosind unealta de construcţie STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Doar normal STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Doar avansat STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Toate STR_CONFIG_SETTING_TOWN_LAYOUT :Modelul drumurilor pentru oraşele noi: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Poziţionarea sistemului rutier în oraşe STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :original STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :drumuri mai bune STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :grilă 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :grilă 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :aleator STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Oraşele pot construi drumuri: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite ca orașele să construiască șosele pentru a se dezvolta. Dezactivează pentru a nu permite orașelor să construiască independent șosele STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Oraşele au voie să construiască treceri la nivel cu calea ferată: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Dacă este activată, orașele vor putea să construiască treceri la nivel cu calea ferată STR_CONFIG_SETTING_NOISE_LEVEL :Permite controlarea nivelului de zgomot al aeroportului de către oras: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Dacă această opțiune este dezactivată, pot exista două aeroporturi în fiecare oraș. Când opțiunea este activată, numărul de aeroporturi este limitat de nivelul de zgomot acceptat de oraș, care depinde de populație, mărimea aeroportului și distanța față de oraș STR_CONFIG_SETTING_TOWN_FOUNDING :Crearea oraşelor în joc: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Dacă este activată, jucătorii pot fonda noi orașe în joc STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :nepermis STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permis STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permis, aspect particularizat al oraşului STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Poziţionarea copacilor în joc: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlează apariția aleatoare a copacilor în joc. Este posibil ca această opțiune să afecteze industrii care depind de creșterea copacilor, cum ar fi fabricile de cherestea STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :niciunul {RED}(afectează producţia fabricii de cherestea) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :doar în pădurile tropicale STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :peste tot STR_CONFIG_SETTING_TOOLBAR_POS :Poziţia barei principale de instrumente: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Poziţia orizontală a barei principale în partea de sus a ecranului STR_CONFIG_SETTING_STATUSBAR_POS :Poziţia barei de stare: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Poziţia orizontală a barei principale în partea de jos a ecranului STR_CONFIG_SETTING_SNAP_RADIUS :Raza "magnetică" a ferestrelor: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" i} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Dezactivat STR_CONFIG_SETTING_SOFT_LIMIT :Numărul maxim de ferestre nefixate: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :dezactivat STR_CONFIG_SETTING_ZOOM_MIN :Nivelul maxim de apropiere imagine: {STRING} STR_CONFIG_SETTING_ZOOM_MAX :Nivelul maxim de îndepărtare imagine: {STRING} STR_CONFIG_SETTING_ZOOM_LVL_MIN :x4 STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :x2 STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :x2 STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :x4 STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :x8 STR_CONFIG_SETTING_TOWN_GROWTH :Viteza de dezvoltare a oraşului: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Viteza creşterii oraşelor STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Deloc STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lentă STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normală STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rapidă STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Foarte rapidă STR_CONFIG_SETTING_LARGER_TOWNS :Proporţia oraşelor care vor deveni mari: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Numărul de oraşe care devin mari, astfel un oraş care porneşte prin a fi mai mare şi creşte mai rapid STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 din {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :deloc STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicator iniţial dimensiune oraş: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Dimensiunea medie a oraşelor mari relativ la oraşele normale, la începutul jocului STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Elimină elementele de drum absurde pe durata construcţiei drumului: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Elimină capatul drumurilor înfundate în timpul reconstrucţiei finanţată a drumurilor STR_CONFIG_SETTING_GUI :{ORANGE}Interfaţă STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Construcţie STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicule STR_CONFIG_SETTING_STATIONS :{ORANGE}Staţii STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economie STR_CONFIG_SETTING_AI :{ORANGE}Concurenţi STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Setări vizuale STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacţiune STR_CONFIG_SETTING_SOUND :{ORANGE}Efecte sonore STR_CONFIG_SETTING_NEWS :{ORANGE}Știri și mesaje STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Semnale (semafoare) STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Operare marfă STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jucători virtuali STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Reînnoire automată STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Service STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Direcţionare STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trenuri STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Oraşe STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrii STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Recomandat) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Algoritm de rutare pentru trenuri: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Algoritm de rutare pentru trenuri STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Algoritm de rutare pentru autovehicule: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Algoritmul de rutare folosit pentru autovehicule STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Algoritm de rutare pentru nave: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Algoritmul de rutare folosit pentru nave STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Întoarcere automată la semafoare: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Permite trenurilor să întoarcă la semafor, dacă aşteaptă de mult timp STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Schimbă valoarea setării # Config errors STR_CONFIG_ERROR :{WHITE}Eroare cu fișierul de configurație... STR_CONFIG_ERROR_ARRAY :{WHITE}... eroare în array-ul '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... valoare incorectă '{STRING}' pentru '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caractere rămase la sfărșitul setării '{STRING}' STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignor NewGRF-ul '{STRING}': GRF ID duplicat cu '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignor NewGRF-ul invalid '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :negăsit STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nesigur pentru utilizare statică STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistem NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatibil cu această versiune de OpenTTD STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :necunoscut STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... nivelul de compresie '{STRING}' nu este valid STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... formatul salvărilor '{STRING}' nu este disponibil. Revenire la '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... setul de bază pentru grafică '{STRING}' este ignorat: nu a fost găsit STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... setul de bază pentru sunete '{STRING}' este ignorat: nu a fost găsit STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... setul de bază pentru muzică '{STRING}' este ignorat: nu a fost găsit STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Fără memorie STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Nu s-au putut rezerva {BYTES} pentru cache al sprite-urilor. Mărimea cache-ului a fost redusă la {BYTES}. Performanța OpenTTD va fi redusă. Pentru a micșora cerințele jocului cu privire la memorie, poți încerca să dezactivezi modul grafic 32bpp și/sau reducerea numărului de nivele zoom # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Joc nou STR_INTRO_LOAD_GAME :{BLACK}Încarcă joc STR_INTRO_PLAY_SCENARIO :{BLACK}Joacă scenariu STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Hartă topografică STR_INTRO_SCENARIO_EDITOR :{BLACK}Editor hartă STR_INTRO_MULTIPLAYER :{BLACK}Multiplayer STR_INTRO_GAME_OPTIONS :{BLACK}Opţiuni STR_INTRO_HIGHSCORE :{BLACK}Tabela cu scoruri maxime STR_INTRO_ADVANCED_SETTINGS :{BLACK}Setări avansate STR_INTRO_NEWGRF_SETTINGS :{BLACK}Setări NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}Resurse online STR_INTRO_SCRIPT_SETTINGS :{BLACK}Setări IA / Scripturi Joc STR_INTRO_QUIT :{BLACK}Ieşire STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Începere joc nou. Ctrl+Click pentru a sări peste fereastra de configuraţie a harţii STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Încarcă un joc salvat STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Începe un joc nou folosind o hartă topografică pentru generarea terenului STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Începe un joc nou folosind un scenariu deja existent STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Creează un joc/scenariu propriu STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Începe un joc multiplayer STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Alege peisajul 'climă temperată' STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Alege peisajul 'climă sub-arctică' STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Alege peisajul 'climă sub-tropicală' STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Alege peisajul 'ţara jucăriilor' STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Afişează opţiunile jocului STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Afișează tabela cu scoruri maxime STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Afişează setările avansate STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Afişează setările NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Verifică dacă există resurse noi sau actualizate pentru descărcare STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Afişează setările pentru Inteligența Artificială şi pentru Scripturi Joc STR_INTRO_TOOLTIP_QUIT :{BLACK}Ieşi din 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Acestei traduceri îi lipse{P 0 "şte" "sc"} {NUM} text{P "" e}. Te rugăm să ajuti la îmbunătățirea OpenTTD înrolându-te ca traducător. Citește fișierul readme.txt pentru detalii. # Quit window STR_QUIT_CAPTION :{WHITE}Ieşire din joc STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Eşti sigur că vrei să abandonezi jocul curent şi să revii în {STRING}? STR_QUIT_YES :{BLACK}Da STR_QUIT_NO :{BLACK}Nu # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Ieşire din joc STR_ABANDON_GAME_QUERY :{YELLOW}Eşti sigur că vrei să renunţi la acest joc? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Eşti sigur că vrei să renunţi la acest scenariu? # Cheat window STR_CHEATS :{WHITE}Cheat-uri STR_CHEATS_TOOLTIP :{BLACK}Bifa vă indică dacă aţi folosit anterior acest cheat STR_CHEATS_WARNING :{BLACK}Atenţie! Eşti pe cale să-ţi trădezi colegii de joc! Nu uita că această ruşine va rămâne înregistrată pentru totdeauna STR_CHEAT_MONEY :{LTBLUE}Măreşte fondurile cu {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Joacă drept compania: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Buldozer magic (demolează industrii şi lucruri amovibile): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunelele se pot intersecta: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Avioanele cu reacţie nu se vor prăbuşi (frecvent) pe aeroporturile mici: {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :peisajul temperat STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :peisajul sub-arctic STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :peisajul sub-tropical STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :peisajul 'ţara jucăriilor' STR_CHEAT_CHANGE_DATE :{LTBLUE}Schimbă data: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Schimbă anul curent STR_CHEAT_SETUP_PROD :{LTBLUE}Activează accesul la valorile de producţie: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Schemă de culori nouă STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Afişează schemele generale de culori STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Arată schemele de culori pentru trenuri STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Arată schemele de culori pentru autovehicule STR_LIVERY_SHIP_TOOLTIP :{BLACK}Arată schemele de culori pentru nave STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Arată schemele de culori pentru aeronave STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Alege culoarea principală pentru schema selectată. Ctrl+Click va seta această culoare pentru toate schemele STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Alege culoarea secundară pentru schema selectată. Ctrl+Click va seta această culoare pentru toate schemele STR_LIVERY_PANEL_TOOLTIP :{BLACK}Alege o schemă de culori pentru modificare sau mai multe scheme, folosind Ctrl+Click. Apasă pe căsuţă pentru a comuta schema STR_LIVERY_DEFAULT :Uniforma standard STR_LIVERY_STEAM :Locomotivă cu abur STR_LIVERY_DIESEL :Locomotivă diesel STR_LIVERY_ELECTRIC :Locomotivă electrică STR_LIVERY_MONORAIL :Locomotivă monosină STR_LIVERY_MAGLEV :Locomotivă pernă magnetică STR_LIVERY_DMU :DMU STR_LIVERY_EMU :EMU STR_LIVERY_PASSENGER_WAGON_STEAM :Vagon călători (Aburi) STR_LIVERY_PASSENGER_WAGON_DIESEL :Vagon călători (Diesel) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Vagon călători (Electric) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Vagon călători (Monoşină) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Vagon călători (Pernă Mag.) STR_LIVERY_FREIGHT_WAGON :Vagon de marfă STR_LIVERY_BUS :Autobuz STR_LIVERY_TRUCK :Camion STR_LIVERY_PASSENGER_SHIP :Ferry pasageri STR_LIVERY_FREIGHT_SHIP :Vas comercial STR_LIVERY_HELICOPTER :Elicopter STR_LIVERY_SMALL_PLANE :Aeronavă mică STR_LIVERY_LARGE_PLANE :Aeronavă mare STR_LIVERY_PASSENGER_TRAM :Tramvai călători STR_LIVERY_FREIGHT_TRAM :Tramvai marfă # Face selection window STR_FACE_CAPTION :{WHITE}Alegerea pozei STR_FACE_CANCEL_TOOLTIP :{BLACK}Anulează alegerea unei poze noi STR_FACE_OK_TOOLTIP :{BLACK}Acceptă poza selectată STR_FACE_MALE_BUTTON :{BLACK}Bărbat STR_FACE_MALE_TOOLTIP :{BLACK}Alege figură masculină STR_FACE_FEMALE_BUTTON :{BLACK}Femeie STR_FACE_FEMALE_TOOLTIP :{BLACK}Alege figură feminină STR_FACE_NEW_FACE_BUTTON :{BLACK}Poză nouă STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Generează poză aleatoare STR_FACE_ADVANCED :{BLACK}Avansat STR_FACE_ADVANCED_TOOLTIP :{BLACK}Selecţie avansată a feţei STR_FACE_SIMPLE :{BLACK}Simplu STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selecţie simplă a feţei STR_FACE_LOAD :{BLACK}Încărcare STR_FACE_LOAD_TOOLTIP :{BLACK}Încarcă o faţă preferată STR_FACE_LOAD_DONE :{WHITE}Faţa dvs. preferată a fost încărcată din fişierul de configurare al OpenTTD. STR_FACE_FACECODE :{BLACK}Nr. faţă jucător STR_FACE_FACECODE_TOOLTIP :{BLACK}Vizualizează şi/sau setează numărul feţei pentru președintele companiei STR_FACE_FACECODE_CAPTION :{WHITE}Vizualizează şi/sau setează numărul feţei pentru președinte STR_FACE_FACECODE_SET :{WHITE}Noul cod numeric pentru faţă a fost stabilit STR_FACE_FACECODE_ERR :{WHITE}Nu am putut seta numărul de faţă al președintelui - trebuie să fie un număr între 0 şi 4.294.967.295! STR_FACE_SAVE :{BLACK}Salvează STR_FACE_SAVE_TOOLTIP :{BLACK}Salvează faţa preferată STR_FACE_SAVE_DONE :{WHITE}Această faţă va fi salvată ca faţa preferată în fişierul de configurare al OpenTTD. STR_FACE_EUROPEAN :{BLACK}European STR_FACE_SELECT_EUROPEAN :{BLACK}Alege feţe europene STR_FACE_AFRICAN :{BLACK}African STR_FACE_SELECT_AFRICAN :{BLACK}Alege feţe africane STR_FACE_YES :Da STR_FACE_NO :Nu STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Permite mustaţă sau cercei STR_FACE_HAIR :Păr: STR_FACE_HAIR_TOOLTIP :{BLACK}Schimbă părul STR_FACE_EYEBROWS :Sprâncene: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Schimbă sprâncenele STR_FACE_EYECOLOUR :Culoare ochi: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Schimbă culoarea ochilor STR_FACE_GLASSES :Ochelari: STR_FACE_GLASSES_TOOLTIP :{BLACK}Permite ochelari STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Schimbă ochelari STR_FACE_NOSE :Nas: STR_FACE_NOSE_TOOLTIP :{BLACK}Schimbă nasul STR_FACE_LIPS :Buze: STR_FACE_MOUSTACHE :Mustaţă: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Schimbă buzele sau mustaţa STR_FACE_CHIN :Bărbie: STR_FACE_CHIN_TOOLTIP :{BLACK}Schimbă bărbia STR_FACE_JACKET :Haină: STR_FACE_JACKET_TOOLTIP :{BLACK}Schimbă haina STR_FACE_COLLAR :Guler: STR_FACE_COLLAR_TOOLTIP :{BLACK}Schimbă gulerul STR_FACE_TIE :Cravată: STR_FACE_EARRING :Cercei: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Schimbă cravata sau cerceii # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multiplayer STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Conexiune: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Alege între un joc pe internet şi unul în reţea (LAN) STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internet STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Numele jucătorului: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Acesta este numele prin care te vor identifica ceilalţi STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nume STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Numele jocului STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clienţi STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clienţi online / Nr. max. clienţi{}Companii online / Nr. max. companii STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Dimensiune hartă STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Dimensiunea hărţii jocului{}Click pentru sortarea după suprafaţă STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Data STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Data curentă STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Ani STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Numărul de ani{}de când rulează jocul STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Limba, versiunea serverului, etc. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Click pe un joc din listă pentru a-l selecta STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Server-ul la care v-aţi conectat data trecută: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Click pentru a alege serverul de data trecută STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}INFO JOC STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clienţi: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Limba: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Peisaj: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Mărimea hărţii: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Versiune server: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Adresa serverului: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Data de început: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Data curentă: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Protejat cu parolă! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVER OFFLINE STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVER PLIN STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSIUNE DIFERITĂ STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEPOTRIVIRE NEWGRF STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Intră în joc STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualizează serverul STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualizează informaţiile despre server STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Caută server STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Caută un server în reţea STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Adaugă un server STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adaugă un server la lista care va fi verificată pentru jocuri active STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Porneşte serverul STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Porneşte un server propriu STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Introduceţi numele dvs. STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Introduceţi adresa serverului # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Începe un joc nou STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nume joc: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Numele jocului va fi afişat celorlalţi jucători în meniul de selectare al jocurilor multiplayer STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Pune parolă STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protejează-ţi jocul cu o parolă dacă nu vrei să intre jucători neautorizaţi STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (fă reclamă) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} clien{P t ţi} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Număr maxim de clienţi: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Alege un număr maxim de clienţi. Nu trebuie ocupate toate locurile. STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P ie ii} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Companii maxim: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limitează serverul la un anumit număr de companii STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" i} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Spectatori maxim: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limitează serverul la un anumit număr de spectatori STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Limba vorbită: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Ceilalţi jucători vor şti în ce limbă se discută pe server. STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Introduceţi un nume pentru joc # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Oricare STR_NETWORK_LANG_ENGLISH :Engleză STR_NETWORK_LANG_GERMAN :Germană STR_NETWORK_LANG_FRENCH :Franceză STR_NETWORK_LANG_BRAZILIAN :Braziliană STR_NETWORK_LANG_BULGARIAN :Bulgară STR_NETWORK_LANG_CHINESE :Chineză STR_NETWORK_LANG_CZECH :Cehă STR_NETWORK_LANG_DANISH :Daneză STR_NETWORK_LANG_DUTCH :Olandeză STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Finlandeză STR_NETWORK_LANG_HUNGARIAN :Maghiară STR_NETWORK_LANG_ICELANDIC :Islandeză STR_NETWORK_LANG_ITALIAN :Italiană STR_NETWORK_LANG_JAPANESE :Japoneză STR_NETWORK_LANG_KOREAN :Coreană STR_NETWORK_LANG_LITHUANIAN :Lituaniană STR_NETWORK_LANG_NORWEGIAN :Norvegiană STR_NETWORK_LANG_POLISH :Poloneză STR_NETWORK_LANG_PORTUGUESE :Portugheză STR_NETWORK_LANG_ROMANIAN :Română STR_NETWORK_LANG_RUSSIAN :Rusă STR_NETWORK_LANG_SLOVAK :Slovacă STR_NETWORK_LANG_SLOVENIAN :Slovenă STR_NETWORK_LANG_SPANISH :Spaniolă STR_NETWORK_LANG_SWEDISH :Suedeză STR_NETWORK_LANG_TURKISH :Turcă STR_NETWORK_LANG_UKRAINIAN :Ucrainiană STR_NETWORK_LANG_AFRIKAANS :Afrikaans STR_NETWORK_LANG_CROATIAN :Croată STR_NETWORK_LANG_CATALAN :Catalană STR_NETWORK_LANG_ESTONIAN :Estonă STR_NETWORK_LANG_GALICIAN :Galiciană STR_NETWORK_LANG_GREEK :Greacă STR_NETWORK_LANG_LATVIAN :Letonă ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Chatul jocului multiplayer STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}În pregătire pentru joc: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Lista companiilor din jocul curent. Poţi colabora cu o companie sau să infiinţezi una STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INFO COMPANIE STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Numele companiei: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Inaugurarea: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Valoarea companiei: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Balanţa curentă: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Venituri anul trecut: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Performanţa: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vehicule: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Staţii: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Jucători: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Companie nouă STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Fondează o companie nouă STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Modul spectator STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Vizionează jocul din poziţia de spectator STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Alătură-te companiei STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Ajută la conducerea acestei companii # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Conectare... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Conectare... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizare... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Aşteptaţi... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Descărcare hartă... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Prelucrare date... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Înregistrare... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Preluare informaţii joc... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Preluare informaţii companie... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} clien{P t ţi} înaintea noastră STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} descărcat până acum STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} descărcaţi până acum STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Deconectare STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server protejat. Introdu parola STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companie protejată. Introdu parola # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Lista de clienţi STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Observă STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Companie nouă # Network client list STR_NETWORK_CLIENTLIST_KICK :Dă afară STR_NETWORK_CLIENTLIST_BAN :Interzice acces STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donează bani STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Vorbeşte către toţi STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Vorbeşte către companie STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mesaj privat STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectatori STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduceţi suma pe care o oferiţi # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Parola introdusă nu se va salva STR_COMPANY_PASSWORD_OK :{BLACK}Schimbarea parolei pentru companie STR_COMPANY_PASSWORD_CAPTION :{WHITE}Parola pentru companie STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Parola implicită pentru companie STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Foloseşte implicit parola acestei comanii pentru cele nou create # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Intră STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Intră în joc ca membru al acestei companii STR_COMPANY_VIEW_PASSWORD :{BLACK}Parola STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protejează-ţi compania cu o parolă pentru a preveni accesul neautorizat STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Alege parola companiei # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Trimite STR_NETWORK_CHAT_COMPANY_CAPTION :[Echipă] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Mesaj privat] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Toţi] : STR_NETWORK_CHAT_COMPANY :[Echipă] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Echipă] Către {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Mesaj privat] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Mesaj privat] Către {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Toţi] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Introdu textul pentru chat în retea # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nu am detectat o placă de reţea sau jocul a fost compilat fără ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Nu am găsit niciun joc în reţea STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Serverul nu a răspuns cererii STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Nu m-am putut conecta din cauza unei nepotriviri NewGRF STR_NETWORK_ERROR_DESYNC :{WHITE}Sincronizarea jocului în reţea a eşuat STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Conexiunea jocului în reţea a fost întreruptă STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Nu am reuşit să încarc jocul salvat STR_NETWORK_ERROR_SERVER_START :{WHITE}Serverul nu a putut fi pornit STR_NETWORK_ERROR_CLIENT_START :{WHITE}Nu pot efectua conectarea STR_NETWORK_ERROR_TIMEOUT :{WHITE}Conexiunea #{NUM} a expirat STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Eroare de protocol. Conexiunea a fost închisă STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Versiunea acestui client este diferită de cea a serverului STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Parolă greşită STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serverul este plin STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Accesul tău este interzis pe acest server STR_NETWORK_ERROR_KICKED :{WHITE}Ai fost dat afară din joc STR_NETWORK_ERROR_CHEATER :{WHITE}Cheat-urile nu sunt permise pe acest server STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Trimiteai prea multe comenzi către server STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}A expirat timpul pentru introducerea unei parole STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Calculatorul dvs. este prea lent pentru a se sincroniza cu serverul STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}A expirat timpul pentru descărcarea hărţii STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}A expirat timpul pentru conectarea la server ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :eroare generală STR_NETWORK_ERROR_CLIENT_DESYNC :eroare de desincronizare STR_NETWORK_ERROR_CLIENT_SAVEGAME :nu pot încărca harta STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :conexiune pierdută STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :eroare de protocol STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Nepotrivire NewGRF STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :neautorizat STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :recepţionat pachet invalid sau neaşteptat STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :versiune incorectă STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nume folosit deja STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :parolă incorectă STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :Id de companie gresit in DoCommand STR_NETWORK_ERROR_CLIENT_KICKED :dat afară de pe server STR_NETWORK_ERROR_CLIENT_CHEATER :a încercat să folosească un cheat STR_NETWORK_ERROR_CLIENT_SERVER_FULL :server plin STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :trimitea prea multe comenzi STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :a expirat timpul alocat pentru transmiterea parolei STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :a expirat timpul alocat STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :a expirat timpul alocat descărcării hărţii STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :a expirat timpul alocat procesării hărţii ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Posibilă pierdere a conexiunii STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}În ultimele {NUM} secunde nu s-au mai primit date de la server # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Joc în pauză ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Jocul este încă în pauză ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Jocul este încă în pauză ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Jocul este încă în pauză ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Jocul este încă în pauză ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Jocul continuă ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :număr de jucători STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :conectare clienţi STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script-ul jocului ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :iese STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} a intrat în joc STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} a intrat în joc (Clientul #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} a intrat în compania #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} a intrat ca spectator STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} a început o companie nouă (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} a ieşit din joc ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} şi-a schimbat numele în {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a dat companiei tale {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Ai dat {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serverul a închis conexiunea STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serverul este repornit...{}Vă rugăm aşteptaţi... # Content downloading window STR_CONTENT_TITLE :{WHITE}Descărcare resurse online STR_CONTENT_TYPE_CAPTION :{BLACK}Tip STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipul resursei STR_CONTENT_NAME_CAPTION :{BLACK}Nume STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Numele resursei STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Click pe o linie pentru a vedea detaliile{}Bifează pentru a descărca STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Selectează tot STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marchează toate resursele pentru descărcare STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Sel. actualizări STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marchează toate resursele care sunt actualizări ale resurselor existente pentru descărcare STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deselectează tot STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Deselectează toate resursele selectate STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Caută pe site-uri externe STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Caută conținut care nu este disponibil pe serverele OpenTTD pe site-uri care nu sunt asociate cu OpenTTD STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Ești pe cale de a ieși din OpenTTD! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Termenii și condițiile impuse la descărcarea de pe site-uri web externe pot varia:{}Va trebui să accesezi site-urile externe pentru informații referitoare la modul de instalare a conținutului în OpenTTD.{}Dorești să continui? STR_CONTENT_FILTER_TITLE :{BLACK}Filtru nume/etichetă: STR_CONTENT_OPEN_URL :{BLACK}Vizitează site-ul web STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Vizitează site-ul web al acestei resurse STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Descarcă STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Porneşte descărcarea resurselor selectate STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Total de descărcat: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}INFO RESURSĂ STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Această resursă nu a fost selectată pentru descărcare STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Această resursă a fost selectată pentru descărcare STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Aceasă dependinţă a fost selectată pentru descărcare STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Deja ai această resursă STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Acestă resursă este necunoscută şi nu poate fi descărcată în OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Acestă resursă este un înlocuitor pentru un/o {STRING} existent/ă STR_CONTENT_DETAIL_NAME :{SILVER}Nume: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versiune: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Descriere: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Tip: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Dimensiune: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Selectat datorită: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Dependinţe: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Etichete: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD a fost compilat fără suport "zlib"... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... descărcarea resurselor nu este posibilă! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Grafică de bază STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :IA STR_CONTENT_TYPE_AI_LIBRARY :Librărie IA STR_CONTENT_TYPE_SCENARIO :Scenariu STR_CONTENT_TYPE_HEIGHTMAP :Hartă topografică STR_CONTENT_TYPE_BASE_SOUNDS :Set sunet de bază STR_CONTENT_TYPE_BASE_MUSIC :Muzică de bază STR_CONTENT_TYPE_GAME_SCRIPT :Script joc STR_CONTENT_TYPE_GS_LIBRARY :Librărie script joc # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Descarc resursele... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Solicit fişierele... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Se descarcă {STRING} ({NUM} din {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Descărcare completă STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} din {BYTES} descărcaţi ({NUM}%) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Conectare la server eşuată... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Descărcare eşuată STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... conexiune întreruptă STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fişierul nu poate fi scris STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Fişierul descărcat nu a putut fi decompresat STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Elemente grafice lipsă STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD necesită elemente grafice pentru a funcționa, dar niciun pachet grafic nu a fost găsit. Permiteţi ca OpenTTD să descarce și să instaleze pachetele grafice necesare? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Da, descarcă pachetele grafice STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nu, ieși din OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Optiuni transparenţă STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Comută transparenţa pentru nume/semne. Ctrl+Click pentru blocare STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Comută transparenţa pentru arbori. Ctrl+Click pentru blocare STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Comută transparenţa pentru case. Ctrl+Click pentru blocare STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Comută transparenţa pentru industrii. Ctrl+Click pentru blocare STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Comută transparenţa pentru construcţii, precum staţii, depouri, indicatoare şi linii electrificate. Ctrl+Click pentru blocare STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Comută transparenţa pentru poduri. Ctrl+Click pentru blocare STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Comută transparenţa pentru structuri de tip faruri şi antene. Ctrl+Click pentru blocare STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Comută transparenţa pentru catenar. Ctrl+Click pentru blocare STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Comută transparenţa pentru indicatorii de încarcare. Ctrl+Click pentru blocare STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Setează obiectele ca invizibile în loc de transparente # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Aria de acoperire STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Inactiv STR_STATION_BUILD_COVERAGE_ON :{BLACK}Activ STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Nu arăta aria de acoperire a locaţiei propuse STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Arată aria de acoperire a locaţiei propuse STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Acceptă: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Resurse: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Uneşte staţia STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Construieşte o staţie separată STR_JOIN_WAYPOINT_CAPTION :{WHITE}Uneşte punctul de tranzit STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construieşte un punct de tranzit separat # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construcţie cale ferată STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construcţie cale ferată electrificată STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Construcţie monoşină STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Construcţie pernă magnetică STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construieşte cale ferată. Ctrl comută construirea/eliminarea căii ferate. Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Construieşte cale ferată în modul automat. Ctrl comută construirea/eliminarea căii ferate. Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construieşte un depou feroviar (pentru achiziţie şi service de trenuri). Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Converteşte linia în punct de tranzit. Ctrl permite alipirea punctelor de tranzit distante. Shift comută între convertire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construieşte gară. Ctrl permite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Plasează semnale feroviare. Ctrl comută între semafoare/semnale electrice{}Trage cu mouse-ul pentru a construi semnale automat pe o porţiune de şină dreaptă. Apasă Ctrl pentru a construi semnale până la următoarea joncţiune{}Ctrl+Click comută deschiderea ferestrei de selectie a tipului semnalului. Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construieşte pod de cale ferată. Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construieşte tunel feroviar. Shift comută între construire/afişare cost estimat STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Comută construcţia/înlăturarea căilor ferate, semnalelor, punctelor de tranzit şi a staţiilor. Ctrl+Click înlătură şinele din punctele de tranzit şi din staţii STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Converteşte tipul de cale ferată. Shift comută între convertire/afişare cost estimat STR_RAIL_NAME_RAILROAD :Cale ferată STR_RAIL_NAME_ELRAIL :Șină electrificată STR_RAIL_NAME_MONORAIL :Monoșină STR_RAIL_NAME_MAGLEV :Pernă magnetică # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Orientarea depoului feroviar STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea depoului # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Punct de tranzit STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Alege tipul de punct de tranzit # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Alege tipul de gară STR_STATION_BUILD_ORIENTATION :{BLACK}Orientarea STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea gării STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Număr de linii STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Alege numărul de linii al gării STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Lungimea platformei STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Alege lungimea platformei gării STR_STATION_BUILD_DRAG_DROP :{BLACK}Drag & Drop STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construieşte o staţie prin drag & drop STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Alege o clasă de staţii pentru afişare STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Alege tipul de staţie pentru construcţie STR_STATION_CLASS_DFLT :Staţie implicită STR_STATION_CLASS_WAYP :Puncte de tranzit # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Alegere semnal STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Semnal standard (semafor){}Acesta este cel mai simplu tip de semnal, permiţând numai unui tren să fie în acelaşi bloc, la un moment dat STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Semnal de intrare (semafor){}Verde, atat timp cât există unul sau mai multe semnale verzi de ieşire din secţiunea următoare a căii ferate. Altfel indică roşu STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Semnal de ieşire (semafor){}Se comportă în acelaşi fel ca semnalul normal, dar este necesar pentru declanşarea culorii corecte la presemnalizatoarele de intrare şi cele combinate STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Semnal combinat (semafor){}Semnalul combinat se comportă atât ca semnal de intrare, cât şi de ieşire. Acest lucru permite construcţia "arborilor" mari de presemnalizare STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Semnal de cale (semafor){}Un semnal de cale va permite trecerea în acelaşi timp în blocurile de semnale a mai multor trenuri, dacă trenurile pot găsi o cale până la un punct sigur pentru oprire. Semnalele standard de cale permit trecerea din ambele sensuri STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Semnal de cale cu sens unic (semafor){}Un semnal de cale permite trecerea simultană a mai multor trenuri prin blocurile de semnale, dacă trenul poate rezerva o cale până la un punct sigur de oprire. Semnalele de cale cu sens unic permit trecerea intr-un singur sens STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Semnal standard (electric){}Acesta este cel mai simplu tip de semnal, permiţând numai unui tren să fie în acelaşi bloc, la un moment dat STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Semnal de intrare (electric){}Verde, atat timp cât există unul sau mai multe semnale verzi de ieşire din secţiunea următoare a căii ferate. Altfel indică roşu STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Semnal de ieşire (electric){}Se comportă în acelaşi fel ca semnalul normal, dar este necesar pentru declanşarea culorii corecte la presemnalizatoarele de intrare şi cele combinate STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Semnal combinat (electric){}Semnalul combinat se comportă atât ca semnal de intrare cât şi de ieşire. Acest lucru permite construcţia "arborilor" mari de presemnalizare STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Semnal de cale (electric){}Un semnal de cale va permite trecerea în acelaşi timp în blocurile de semnale a mai multor trenuri, dacă trenurile pot găsi o cale până la un punct sigur pentru oprire. Semnalele standard de cale permit trecerea din ambele sensuri STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Semnal de cale cu sens unic (electric){}Un semnal de cale permite trecerea simultană a mai multor trenuri prin blocurile de semnale, dacă trenul poate rezerva o cale până la un punct sigur de oprire. Semnalele de cale cu sens unic permit trecerea intr-un singur sens STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversie semnal{}Când este selectat, click-ul pe un semafor existent îl va converti în tipul şi varianta selectată de semnalizare. Ctrl+Click va comuta varianta existentă. Shift+Click afişează costul estimat al conversiei STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densitatea semnalelor plasate prin tragerea cu mouse-ul STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Scade densitatea semnalelor plasate prin tragerea cu mouse-ul STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Creşte densitatea semnalelor plasate prin tragerea cu mouse-ul # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Alege pod de cale ferată STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Alege pod rutier STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Alegere pod - click pe podul preferat pentru a-l construi STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspensie, Oţel STR_BRIDGE_NAME_GIRDER_STEEL :Grindă, Oţel STR_BRIDGE_NAME_CANTILEVER_STEEL :Arc, Oţel STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Suspensie, Beton STR_BRIDGE_NAME_WOODEN :Lemn STR_BRIDGE_NAME_CONCRETE :Beton STR_BRIDGE_NAME_TUBULAR_STEEL :Tubular, Oţel STR_BRIDGE_TUBULAR_SILICON :Tubular, Silicon # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Construcţii rutiere STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Construcţie tramvai STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Construieşte secţiune de şosea. Ctrl comută construirea/eliminarea şoselei. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Construieşte şină de tramvai. Ctrl comută construirea/eliminarea şinei. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Construieşte secţiune de şosea folosind modul Auto-şosea. Ctrl comută construirea/eliminarea şoselei. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Construieşte secţiune de şină de tramvai folosind modul Auto-tramvai. Ctrl comută construirea/eliminarea şinei. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construieşte o autobază (pentru achiziţie şi service vehicule). Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construieşte depou tramvaie (pentru achiziţie şi service vehicule). Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Construieşte staţie de autobuz. Ctrl permite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construieşte staţie de tramvai pentru călători. Ctrl permite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Construieşte platformă pentru camioane. Ctrl permite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Construieşte staţie pentru tramvai de marfă. Ctrl permite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Activare/Dezactivare sensuri unice STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Construieşte pod rutier. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Construieşte pod pentru tramvaie. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construieşte tunel rutier. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construieşte tunel pentru tramvaie. Shift comută între construire/afişare cost estimat STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Comutator pentru construcţie/înlăturare şosele STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Comută construcţie/înlăturare pentru şine de tramvai # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orientarea autobazei STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Alege orientarea autobazei STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Orientarea depoului de tramvaie STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Alege orientarea depoului de tramvaie # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientarea staţiei de autobuz STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea staţiei de autobuz STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientarea platformei pentru camioane STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea platformei pentru camioane STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientarea staţiei de tramvai pentru călători STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea staţiei de tramvai pentru călători STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Orientarea staţiei de tramvai pentru marfă STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea staţiei de tramvai pentru marfă # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Construcţie rute acvatice STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Rute acvatice STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Construieşte canale. Shift comută între construire/afişare cost estimat STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Construieşte ecluză. Shift comută între construire/afişare cost estimat STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Construieşte şantier naval (pentru achiziţionare şi service nave). Shift comută între construire/afişare cost estimat STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Construieşte port. Ctrl permite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Amplasează o baliză ce poate fi utilizată pentru direcţionare. Shift comută între amplasare/afişare cost estimat STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Construieşte apeduct. Shift comută între construire/afişare cost estimat STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Defineşte zona apei.{}Creează un canal, excepţie când Ctrl este apăsat la nivelul mării, ce va determina inundarea împrejurimilor STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Amplasează râuri # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Orientarea şantierului naval STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Alege orientarea şantierului naval # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Port # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aeroporturi STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Construieşte aeroport. Ctrl pemite alipirea staţiilor distante. Shift comută între construire/afişare cost estimat # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Alege tipul de aeroport STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Alege tipul şi mărimea aeroportului STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Clasa aeroportului STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Amplasare {NUM} STR_AIRPORT_SMALL :Mic STR_AIRPORT_CITY :Orăşenesc STR_AIRPORT_METRO :Metropolitan STR_AIRPORT_INTERNATIONAL :Internaţional STR_AIRPORT_COMMUTER :Navetist STR_AIRPORT_INTERCONTINENTAL :Intercontinental STR_AIRPORT_HELIPORT :Helidrom STR_AIRPORT_HELIDEPOT :Hangar elicoptere STR_AIRPORT_HELISTATION :Bază elicoptere STR_AIRPORT_CLASS_SMALL :Aeroporturi mici STR_AIRPORT_CLASS_LARGE :Aeroporturi mari STR_AIRPORT_CLASS_HUB :Aeroporturi centrale STR_AIRPORT_CLASS_HELIPORTS :Heliporturi STR_STATION_BUILD_NOISE :{BLACK}Zgomot generat: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Modificare peisaj STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Scade altitudinea unui punct de teren. Trage cu mouse-ul pentru a coborî primul punct de teren și a nivela restul zonei la noua înălțime a acestuia. Ctrl pentru selecţie pe diagonală. STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Creşte altitudinea unui punct de teren. Trage cu mouse-ul pentru a ridica primul punct de teren și a nivela restul zonei la noua înălțime a acestuia. Ctrl pentru selecţie pe diagonală. STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivelează terenul la înălțimea primului colț selectat. Ctrl pentru selecție pe diagonală STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Cumpără teren pentru folosire ulterioară. Shift comută între cumpărare/afişare cost estimat # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Selecţia obiectelor STR_OBJECT_BUILD_TOOLTIP :{BLACK}Selectaţi obiectele pentru construcţie. Shift comută între construire/afişare cost estimat STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Selectează clasa obiectului de construit STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Previzualizarea obiectului STR_OBJECT_BUILD_SIZE :{BLACK}Dimensiune: {GOLD}{NUM} x {NUM} pătrăţele STR_OBJECT_CLASS_LTHS :Faruri STR_OBJECT_CLASS_TRNS :Transmiţătoare # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Arbori STR_PLANT_TREE_TOOLTIP :{BLACK}Alege specia de arbori de plantat. Dacă există deja un arbore în locația dorită, se vor adăuga arbori de tip mixt, indiferent de specia selectată STR_TREES_RANDOM_TYPE :{BLACK}Arbori din specii aleatoare STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plantează arbori din diverse specii la întâmplare. Shift comută între plantare/afişare cost estimat STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Arbori aleatori STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantează aleator arbori pe uscat # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generator suprafaţă uscat STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Plasează formaţiuni pietroase STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Defineşte suprafaţa de deşert.{}Ţine apăsat Ctrl pentru a şterge STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Măreşte aria de editare a terenului STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Micşorează aria de editare a terenului STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Generează teren aleator STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Creează o hartă nouă STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Resetează peisajul STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Elimină de pe hartă toate proprietăţile deţinute de companii STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Resetare peisaj STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Eşti sigur că vrei să elimini toate proprietăţile deţinute de companii? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Generare oraş STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Oraş nou STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Construieşte un oraş nou. Shift+Click arată costul estimat STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Oraş aleator STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Construieşte un oraş într-o locaţie aleatoare STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Mai multe oraşe aleatoare STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Umple harta cu oraşe generate aleator STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nume oraş: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introdu numele oraşului STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Click pentru a introduce numele oraşului STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nume aleator STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Generează un nume aleator STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Mărime oraş: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Mic STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mediu STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Mare STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleator STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Alege mărimea oraşului STR_FOUND_TOWN_CITY :{BLACK}Metropolă STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Metropolele cresc mai repede decât oraşele{}În funcţie de setări, sunt mai mari când sunt fondate STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Modelul drumului în oraş: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Alege modelul de drum folosit pentru acest oraş STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Îmbunătăţit STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Grilă 2x2 STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Grilă 3x3 STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleator # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Construieşte un nou obiectiv industrial STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Alege industria potrivită din acestă listă STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Multe industrii aleatoare STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Umple harta cu industrii generate aleator STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cost: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospectează STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Construieşte STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finanţează # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Lanţ industrial pentru industria {STRING} STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Lanţ industrial pentru cargo {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Industrii producătoare STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Industrii acceptante STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Case STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Click pe industrie pentru a vedea furnizorii şi clienţii săi STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Click pe cargo pentru a vedea furnizorii şi clienţii săi STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Afişează lanţ STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Afişează industriile care furnizează şi acceptă cargo STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link către harta mică STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selectează industriile afişate şi pe harta mică STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Alege tipul de marfă STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Alege tipul de marfă pe care dorești să îl afișezi STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Alege industria STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Alege industria pe care dorești să o afișezi: # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informaţii teren STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Costul demolării: {LTBLUE}nu este cazul STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Costul demolării: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Încasări după curăţare: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :nu este cazul STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Proprietar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Proprietar al drumului: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Proprietar al şinei de tramvai: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietar al căii ferate: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritatea locală: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nici una STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordonate: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Data construcţiei: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clasa staţiei: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tip staţie: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Clasă aeroport: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nume aeroport: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Numele dalei aeroportului: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Încărcături acceptate: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limită viteză pe calea ferată: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stânci STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Teren pietros STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Teren viran STR_LAI_CLEAR_DESCRIPTION_GRASS :Verdeaţă STR_LAI_CLEAR_DESCRIPTION_FIELDS :Teren agricol STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Teren înzăpezit STR_LAI_CLEAR_DESCRIPTION_DESERT :Deşert STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} cale ferată STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} cale ferată cu semafoare STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} cale ferată cu presemafoare STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} cale ferată cu semafoare de ieșire STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} cale ferată cu semafoare combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} cale ferată cu semafoare de direcționare STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} cale ferată cu semafoare de direcționare unidirecționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} cale ferată cu semafoare și presemafoare STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} cale ferată cu semafoare și semafoare de ieșire STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} cale ferată cu semafoare și semafoare combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} cale ferată cu semafoare și semafoare de direcționare STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} cale ferată cu semafoare și semafoare de direcționare unidirecționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} cale ferată cu presemafoare și semafoare de ieșire STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} cale ferată cu presemafoare și semafoare combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} cale ferată cu presemafoare și semafoare de direcționare STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} cale ferată cu presemafoare și semafoare de direcționare unidirecționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} cale ferată cu semafoare de ieșire și semafoare combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} cale ferată cu semafoare de ieșire și semafoare direcționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} cale ferată cu semafoare de ieșire și semafoare direcționale unidirecționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} cale ferată cu semafoare combo și semafoare direcționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} cale ferată cu semafoare combo și semafoare direcționale unidirecționale STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} cale ferată cu semafoare direcționale şi semafoare directionale unidirecționale STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} depou trenuri STR_LAI_ROAD_DESCRIPTION_ROAD :Şosea STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Stradă iluminată STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Stradă cu copaci pe margine STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Autobază STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Trecere la nivel cu calea ferată STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Şină de tramvai # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (în construcţie) STR_LAI_TREE_NAME_TREES :Arbori STR_LAI_TREE_NAME_RAINFOREST :Pădure tropicală STR_LAI_TREE_NAME_CACTUS_PLANTS :Cactuşi STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Gară STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Hangar STR_LAI_STATION_DESCRIPTION_AIRPORT :Aeroport STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Platformă pentru camioane STR_LAI_STATION_DESCRIPTION_BUS_STATION :Staţie de autobuz STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Port STR_LAI_STATION_DESCRIPTION_BUOY :Baliză STR_LAI_STATION_DESCRIPTION_WAYPOINT :Punct de tranzit STR_LAI_WATER_DESCRIPTION_WATER :Apă STR_LAI_WATER_DESCRIPTION_CANAL :Canal STR_LAI_WATER_DESCRIPTION_LOCK :Ecluză STR_LAI_WATER_DESCRIPTION_RIVER :Râu STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Coastă sau mal STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Şantier naval # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Tunel feroviar STR_LAI_TUNNEL_DESCRIPTION_ROAD :Tunel rutier STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Pod feroviar suspendat din oţel STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Pod feroviar tip grindă din oţel STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Pod feroviar tip arc din oţel STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Pod feroviar suspendat din beton STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Pod feroviar din lemn STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Pod feroviar din beton STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Pod feroviar tubular STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Pod rutier suspendat din oţel STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Pod rutier tip grindă din oţel STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Pod rutier tip arc din oţel STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Pod rutier suspendat din beton armat STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Pod rutier din lemn STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Pod rutier din beton STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Pod rutier tubular STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Apeduct STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmiţător STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Far STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sediu companie STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren în proprietatea unei companii # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Despre OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Toate drepturile rezervate STR_ABOUT_VERSION :{BLACK}OpenTTD versiunea {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Echipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc STR_SAVELOAD_LOAD_CAPTION :{WHITE}Încarcă joc STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Salvează scenariu STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Încarcă scenariu STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Încarcă harta înălţimilor STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Salvează harta înălţimilor STR_SAVELOAD_HOME_BUTTON :{BLACK}Click aici pentru a ajunge la directorul predefinit pentru salvări STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} liberi STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista de discuri, directoare şi fişiere cu jocuri salvate STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Numele selectat pentru un joc salvat STR_SAVELOAD_DELETE_BUTTON :{BLACK}Şterge STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Şterge jocul salvat selectat STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salvează STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvează cu numele selectat jocul curent STR_SAVELOAD_LOAD_BUTTON :{BLACK}Încarcă STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Încarcă salvarea selectată STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalii joc STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nicio informaţie disponibilă STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Introduceţi un nume pentru salvare # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Generare lume STR_MAPGEN_MAPSIZE :{BLACK}Mărime hartă: STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Alege mărimea hărții folosind ca unitate de măsură suprafețele. Numărul de suprafețe disponibile va fi puțin mai mic decât această valoare STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nr. de oraşe: STR_MAPGEN_DATE :{BLACK}Data: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. de industrii: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Înălţimea zăpezii: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mută linia zăpezii cu un punct în sus STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mută linia zăpezii cu un punct în jos STR_MAPGEN_RANDOM_SEED :{BLACK}Parametru aleator: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click pt introducerea unui parametru aleator STR_MAPGEN_RANDOM :{BLACK}Aleator STR_MAPGEN_RANDOM_HELP :{BLACK}Modifică parametrul aleator folosit pentru Generarea Terenului STR_MAPGEN_LAND_GENERATOR :{BLACK}Generator de teren: STR_MAPGEN_TREE_PLACER :{BLACK}Algoritm arbore: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tip teren: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nivelul mării: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Râuri: STR_MAPGEN_SMOOTHNESS :{BLACK}Netezime: STR_MAPGEN_VARIETY :{BLACK}Distribuţia varietăţii: STR_MAPGEN_GENERATE :{WHITE}Generează # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Margine: STR_MAPGEN_NORTHWEST :{BLACK}Nord-vest STR_MAPGEN_NORTHEAST :{BLACK}Nord-est STR_MAPGEN_SOUTHEAST :{BLACK}Sud-est STR_MAPGEN_SOUTHWEST :{BLACK}Sud-vest STR_MAPGEN_BORDER_FREEFORM :{BLACK}Pământ STR_MAPGEN_BORDER_WATER :{BLACK}Apă STR_MAPGEN_BORDER_RANDOM :{BLACK}Aleator STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Aleator STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotaţie hartă înălţimi: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nume hartă înălţimi: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Dimensiune: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Introduceţi o valoare de pornire pentru numerele aleatoare STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Modifică înălţimea zăpezii STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Modifică anul de început # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Tipul scenariului STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Teren plat STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generează un teren plat STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Teren aleator STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Înălţimea terenului plat: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Mută înălţimea terenului plat cu o unitate în jos STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Mută înălţimea terenului plat cu o unitate în sus STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Modifică înălţimea terenului plat # Map generation progress STR_GENERATION_WORLD :{WHITE}Generez lumea... STR_GENERATION_ABORT :{BLACK}Anulează STR_GENERATION_ABORT_CAPTION :{WHITE}Anulează Generarea Lumii STR_GENERATION_ABORT_MESSAGE :{YELLOW}Sigur doreşti să anulezi generarea? STR_GENERATION_PROGRESS :{WHITE}{NUM}% efectuat STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Generare lume STR_GENERATION_RIVER_GENERATION :{BLACK}Generarea râurilor STR_GENERATION_TREE_GENERATION :{BLACK}Generare arbori STR_GENERATION_OBJECT_GENERATION :{BLACK}Generare fixă STR_GENERATION_CLEARING_TILES :{BLACK}Generare zonă dură şi pietroasă STR_GENERATION_SETTINGUP_GAME :{BLACK}Se configurează jocul STR_GENERATION_PREPARING_TILELOOP :{BLACK}Initializez ciclul dalelor STR_GENERATION_PREPARING_SCRIPT :{BLACK}Se rulează script-ul STR_GENERATION_PREPARING_GAME :{BLACK}Pregătesc jocul # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Setări NewGRF STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Informaţie detaliată NewGRF STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Fişiere NewGRF active STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Fişiere NewGRF inactive STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Selectează preset: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtru: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Încarcă presetarea selectată STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Salvează presetare STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Salvează lista curentă ca presetare STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Introduceţi un nume pentru presetare STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Şterge presetarea STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Şterge presetarea selectată STR_NEWGRF_SETTINGS_ADD :{BLACK}Adaugă STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Adaugă fişierul NewGRF ales în configuraţie STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Redetectează fişierele STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Actualizează lista de fişiere NewGRF disponibile STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Elimină STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Elimină fişierul NewGRF selectat din listă STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Mută în sus STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mută fişierul NewGRF selectat mai sus în listă STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mută în jos STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mută fişierul NewGRF selectat mai jos în listă STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}O listă a fişierelor NewGRF instalate STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Setează parametri STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Afișează parametrii STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Comută paleta STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Schimbă paleta pentru NewGRF-ul selectat.{}Efectuează acest lucru când grafica din acest NewGRF este roz în joc STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplică schimbările STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Caută online resursele lipsă STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Verifică dacă resursele care lipsesc pot fi găsite online STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nume fişier: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}ID GRF: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versiune: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Vers. minimă compatibilă: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paletă: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametri: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Nicio informaţie disponibilă STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Niciun fisier potrivit STR_NEWGRF_SETTINGS_DISABLED :{RED}Dezactivat STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatibil cu această versiune de OpenTTD # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Schimbă parametrii NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Închide STR_NEWGRF_PARAMETERS_RESET :{BLACK}Resetează STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Setează toţii parametrii la valorile implicite STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametru {NUM} STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Număr de parametrii: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspectează - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Părinte STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Analizează obiectul scopului parintelui STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} la {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obiect STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tip şină STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Parametru variabilă 60+x NewGRF (hexadecimal) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Aliniere imagine {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Imaginea următoare STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Mergi la următoarea imagine normală, sărind peste pseudo-imagini, recolorări sau fonturi şi reporneşte când s-a ajuns la sfârşit STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Mergi la imagine STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Mergi la imaginea indicată. Dacă nu este o imagine normală, mergi la următoarea imagine normală STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Imaginea precedentă STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mergi la precedenta imagine normală, sărind peste pseudo-imagini, recolorări sau fonturi şi reporneşte când s-a ajuns la sfârşit STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Reprezentarea imaginii curente. Aliniamentul este ignorat STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mişcă imaginea schimbând distanţele pe axele X şi Y STR_SPRITE_ALIGNER_OFFSETS :{BLACK}distanţa X: {NUM}, distanţa Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Alege imagine STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Alege o imagine de oriunde de pe ecran STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Mergi la imagine # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Atenţie: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Eroare: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}O eroare fatală NewGRF a avut loc: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} nu va funcţiona cu versiunea TTDPatch raportată de OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} este pentru versiunea {STRING} a TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} este conceput pentru a fi folosit cu {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Parametru invalid pentru {1:STRING}: parametrul {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} trebuie să fie încărcat înaintea {STRING} STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} trebuie să fie încărcat după {STRING} STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} necesită OpenTTD versiunea {STRING} sau mai nouă STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :fişierul GRF conceput pentru traducere STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Sunt încărcate prea multe NewGRF-uri STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Încărcarea {1:STRING} ca un NewGRF static cu {STRING} ar putea cauza desincronizări STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Element grafic neașteptat (sprite {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Proprietate necunoscută pentru Acțiunea 0 {4:HEX} (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Încercare de a folosi un ID invalid (sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} conţine o imagine coruptă. Toate imaginile corupte vor fi afişate ca semne de întrebare (?) roşii STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Conține mai multe intrări pentru Acțiunea 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Citire după sfârşitul preudo-elementului grafic (sprite {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Unele imagini lipsesc din setul grafic de bază.{}Vă rugăm actualizaţi setul grafic de bază STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE} Pachetul grafic de bază folosit în acest moment este incomplet, un număr de sprite-uri lipsesc ..{}Trebuie să actualizezi acest pachet grafic de bază.{}Deoarece te joci o {YELLOW}versiune de dezvoltare a OpenTTD{WHITE}, este posibil să ai nevoie de o {YELLOW}versiune de dezvoltare a pachetului grafic de bază{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Resursele GRF solicitate nu sunt disponibile (sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} a fost dezactivat de {STRING} STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Structură necunoscută/invalidă pentru elementul grafic (sprite {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Atenţie! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Eşti pe cale să faci modificări într-un joc activ. Aceasta poate destabiliza OpenTTD. Nu raporta probleme de acest gen.{}Eşti absolut sigur că vrei să faci asta? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nu pot adăuga fişierul: ID GRF duplicat STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Nu am găsit niciun fişier corespunzător (am încărcat un GRF compatibil) STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Nu pot adăuga fișierul: Limita de fișiere NewGRF este atinsă STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF-uri compatibile au fost încărcate pentru fişierele lipsă STR_NEWGRF_DISABLED_WARNING :{WHITE}Fişierele GRF lipsă au fost dezactivate STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Fişier(e) GRF lipsă STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Reluarea jocului poate bloca OpenTTD. Nu raportaţi bug-uri pentru blocările ulterioare.{}Sigur doreşti să reiei jocul? # NewGRF status STR_NEWGRF_LIST_NONE :Nimic STR_NEWGRF_LIST_ALL_FOUND :Toate fişierele necesare sunt prezente STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fişiere compatibile găsite STR_NEWGRF_LIST_MISSING :{RED}Fişiere lipsă # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}Comportamentul NewGRF '{0:STRING}' poate cauza desincronizări şi/sau blocări STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}A modificat starea trenului pentru '{1:ENGINE}' când nu se afla în depou STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}A modificat lungimea vehiculului pentru '{1:ENGINE}' când nu se afla în depou STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trenul '{VEHICLE}', aparţinând '{COMPANY}' nu are o lungime validă. Probabil este o problemă cu fişierele NewGRF. Jocul s-ar putea desincroniza sau bloca STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' produce informaţii incorecte STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Datele despre marfa/regarnisire pentru '{1:ENGINE}' diferă de valorile iniţiale după construcţie. Acest lucru ar putea cauza eşuarea autorenovarii/schimbarii. STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' a cauzat o buclă infinită în funcţia de producţie STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Execuția {1:HEX} a returnat răspunsul invalid/necunoscut {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). STR_INVALID_VEHICLE : # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanez resursele NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Se scanează resursele NewGRF. În funcție de numărul acestora, această operație poate dura un timp... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} resurs{P 0 "ă" "e"} NewGRF scanat{P "ă" "e"} din aproximativ {NUM} resurs{P "ă" "e"} NewGRF disponibil{P "ă" "e"} STR_NEWGRF_SCAN_ARCHIVES :Scanez pentru arhive # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Lista de semne - {COMMA} Semne STR_SIGN_LIST_MATCH_CASE :{BLACK}Potrivire majuscule/minuscule STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Comută potrivirea de majuscule/minuscule când se compara numele semnelor cu textul filtrului # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Editează textul semnului STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Mergi la semnul urmator STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Mergi la semnul anterior STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introdu un nume pentru semn # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Oraşe STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nimic - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Numele oraşelor - clic pe un nume pentru a centra imaginea pe oraşul respectiv. Ctrl+Click deshide o fereastra cu locaţia oraşului STR_TOWN_POPULATION :{BLACK}Populaţia totală: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Metropolă) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populaţia: {ORANGE}{COMMA}{BLACK} Locuinţe: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Călători luna trecută: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Colete poştale luna trecută: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Transporturi necesare dezvoltării oraşului: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necesare STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} necesare iarna STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} livrate STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (mai sunt necesare) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (livrate) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Orașul crește la fiecare {ORANGE}{COMMA}{BLACK} zi{P "" le} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Orașul crește la fiecare {ORANGE}{COMMA}{BLACK} zi{P "" le} (cu fonduri) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Orașul {RED}nu{BLACK} crește STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Limita zgomotului în oraş: {ORANGE}{COMMA}{BLACK} maxim: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrează imaginea pe locaţia oraşului. Ctrl+Click deshide o fereastra cu locaţia oraşului STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Autorit. locală STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Afişează informaţii referitoare la autoritatea locală STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Schimbă numele oraşului STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Extinde STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Măreşte dimensiunile oraşului STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Şterge STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Şterge acest oraş STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Redenumire oraş # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}Autoritatea locală din {TOWN} STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Evaluarea companiilor de transport: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Acţiuni disponibile: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lista de acţiuni disponibile pentru acest oraş - clic pe fiecare pentru mai multe detalii STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Alege STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Activează acţiunea selectată din listă STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Campanie publicitară mică STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Campanie publicitară medie STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Campanie publicitară mare STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Finanţează reconstrucţia străzilor STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Ridică un monument dedicat preşedintelui companiei STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Finanţează construcţia de noi clădiri STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Cumpără drepturi exclusive de transport STR_LOCAL_AUTHORITY_ACTION_BRIBE :Mituieşte autoritatea locală STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniţiază o campanie publicitară mică pentru a atrage mai mulţi călători şi mai multe mărfuri spre compania ta.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniţiază o campanie publicitară medie pentru a atrage mai mulţi călători şi mai multe mărfuri spre compania ta.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniţiază o mare campanie publicitară pentru a atrage mai mulţi călători şi mai multe mărfuri spre compania ta.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Finanţează reconstrucţia străzilor locale. Acest lucru cauzează perturbări majore ale traficului rutier timp de până la 6 luni.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construieşte o statuie în cinstea companiei tale.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Finanţează construcţia de noi clădiri comerciale în oraş.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Cumpără drepturi exclusive de transport în acest oraş pe o perioadă de un an. Autorităţile locale vor permite doar companiei tale să transporte călători şi mărfuri.{} Cost: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Mituieşte autorităţile locale pentru a-ţi îmbunătăţi ratingul, dar cu riscul de a fi prins şi de a plăti amenzi serioase.{} Cost: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Ţinte STR_GOALS_GLOBAL_TITLE :{BLACK}Ţinte globale: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nici unul - STR_GOALS_COMPANY_TITLE :{BLACK}Ţintele companiei: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click pe ţintă pentru a centra ecranul principal pe industrie/oraş/zonă. Ctrl+Click deschide o fereastră nouă de vizualizare a industriei/oraşului/zonei # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Întrebare STR_GOAL_QUESTION_CAPTION_INFORMATION :Informație STR_GOAL_QUESTION_CAPTION_WARNING :Atenționare STR_GOAL_QUESTION_CAPTION_ERROR :Eroare ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Anulează STR_GOAL_QUESTION_BUTTON_OK :OK STR_GOAL_QUESTION_BUTTON_NO :Nu STR_GOAL_QUESTION_BUTTON_YES :Da STR_GOAL_QUESTION_BUTTON_DECLINE :Refuză STR_GOAL_QUESTION_BUTTON_ACCEPT :Acceptă STR_GOAL_QUESTION_BUTTON_IGNORE :Ignoră STR_GOAL_QUESTION_BUTTON_RETRY :Încearcă din nou STR_GOAL_QUESTION_BUTTON_PREVIOUS :Anteriorul STR_GOAL_QUESTION_BUTTON_NEXT :Următorul STR_GOAL_QUESTION_BUTTON_STOP :Stop STR_GOAL_QUESTION_BUTTON_START :Start STR_GOAL_QUESTION_BUTTON_GO :Începe STR_GOAL_QUESTION_BUTTON_CONTINUE :Continuă STR_GOAL_QUESTION_BUTTON_RESTART :Reîncearcă STR_GOAL_QUESTION_BUTTON_POSTPONE :Amână STR_GOAL_QUESTION_BUTTON_SURRENDER :Renunță STR_GOAL_QUESTION_BUTTON_CLOSE :Închide # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subvenţii (F6) STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subvenţii disponibile: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} de la {STRING} la {STRING}{YELLOW} (după {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE} - nici una - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Subvenţii acordate la ora actuală: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}- {STRING} de la {STRING} la {STRING}{YELLOW} ({COMPANY}{YELLOW}, până în {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click pe serviciu pentru a centra imaginea pe industrie/oraş. Ctrl+Click deshide o fereastră cu locaţia industriei/oraşului # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Numele staţiilor - clic pe un nume pentru a centra imaginea pe staţia respectivă. Ctrl+Click deshide o fereastra cu locaţia staţiei STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Ţine apăsat Ctrl pentru a alege mai multe obiecte STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Staţi{P e i} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nici una - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Alege toate facilităţile STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Alege toate tipurile de încãrcãturi (inclusiv încãrcãturile care nu sunt în asteptare) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nu este nici un fel de încărcătură în aşteptare # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}În aşteptare: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} pe drum de la {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acceptă STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Afişează lista de încărcături acceptate STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acceptă: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Această staţie are drepturi exclusive de transport în acest oraş. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} a cumpărat drepturi exclusive de transport în acest oraş. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Evaluări STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Afişează evaluările staţiei STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Evaluarea serviciilor de transport local: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :Deplorabil STR_CARGO_RATING_VERY_POOR :Foarte scăzut STR_CARGO_RATING_POOR :Slab STR_CARGO_RATING_MEDIOCRE :Mediocru STR_CARGO_RATING_GOOD :Bun STR_CARGO_RATING_VERY_GOOD :Foarte bun STR_CARGO_RATING_EXCELLENT :Excelent STR_CARGO_RATING_OUTSTANDING :Fantastic ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centrează imaginea pe locaţia staţiei. Ctrl+Click deshide o fereastra cu locaţia staţiei STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Schimbă numele staţiei STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Afiseaza toate trenurile care opresc in aceasta statie STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Afiseaza toate autovehiculele care opresc in aceasta statie STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Afiseaza toate aeronavele care opresc in aceasta statie STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Afiseaza toate navele care opresc in aceasta statie STR_STATION_VIEW_RENAME_STATION_CAPTION :Redenumeşte staţia STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Închide aeroport STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Nu permite avioanelor să aterizeze pe acest aeroport # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centrază fereasta principală pe punctul de tranzit. Ctrl+Click deshide o fereastra cu locaţia punctului de tranzit STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Schimba numele haltei STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centrează fereastra principală pe locaţia balizei. Ctrl+Click deshide o fereastra cu locaţia balizei STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Schimbă numele balizei STR_EDIT_WAYPOINT_NAME :{WHITE}Editează numele haltei # Finances window STR_FINANCES_CAPTION :{WHITE}Situaţia financiară a companiei {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Cheltuieli/Venituri STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construcţii STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Vehicule noi STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Costuri trenuri STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Costuri de exploatare autovehicule STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Costuri aeronave STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Costuri nave STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Întreţinere proprietăţi STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Venituri trenuri STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Venituri autovehicule STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Venituri aeronave STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Venituri nave STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Dobânda la credit STR_FINANCES_SECTION_OTHER :{GOLD}Altele STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Total: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balanţă curentă STR_FINANCES_LOAN_TITLE :{WHITE}Credite STR_FINANCES_MAX_LOAN :{WHITE}Limită credit: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Împrumută {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Împrumută o nouă sumă de bani. Ctrl-click pentru a împrumuta suma maximă posibilă STR_FINANCES_REPAY_BUTTON :{BLACK}Plăteşte înapoi {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Plăteşte înapoi o parte din credite. Ctrl-click pentru a plăti cât de mult permit finanţele STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastructură # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Preşedinte) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Anul înfiinţării: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Schemă culori: STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehicule: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} tren{P "" uri} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} autovehicul{P "" e} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} aeronav{P ă e} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} nav{P ã e} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nici unul STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valoarea companiei: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% deţinute de {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastructură: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} pătrățele de cale ferată STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} pătrățele cu drumuri STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} pătrățele de apă STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} pătrățele stații STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroport{P "" uri} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nici una STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Constr. sediu STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Construieşte sediul companiei STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Vezi sediul STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Vezi sediul companiei STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Mută sediu STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Mută sediul companiei (costă 1% din valoarea companiei). Shift+Click arată estimarea de cost fără a muta sediul companiei STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalii STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Vezi contabilizarea infrastructurii STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Schimbă poza STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Alege o nouă poză a preşedintelui STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Schemă culori STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Schimbă culoarea care îţi reprezintă compania STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nume companie STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Schimbă numele companiei STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nume preşedinte STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Schimbă numele preşedintelui STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Cumpără 25% din acţiunile companiei STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Vinde 25% din acţiunile companiei STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Cumpără 25% din acţiunile acestei companii. Shift+Click arată costul estimat fără să cumpere acţiuni STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vinde 25% din acţiunile acestei companii. Shift+Click arată costul estimat fără să efectueze vânzarea STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Noul nume al companiei STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Noul nume al preşedintelui STR_BUY_COMPANY_MESSAGE :{WHITE}Căutăm o companie de transport care să preia societatea noastră {}{}Doriţi să cumpăraţi {COMPANY} la preţul de {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Pătrățele de cale ferată: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Semnale STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Pătrățele cu drumuri: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Drumuri STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvaie STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Suprafață apă: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canale STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stații: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Suprafață stații STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroporturi STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG}/an ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/an # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrii STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nimic- STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportat) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportat) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Numele industriilor - clic pe nume pentru focalizarea pe industrie. Ctrl+Click deschide o fereastră cu locaţia industriei # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Producţia lunii trecute: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transportat) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia industriei. Ctrl+Click deshide o fereastra cu locaţia industriei STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivelul producţiei: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Are nevoie de: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Incarcatura in asteaptarea procesarii: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Schimba productia (multiplu de 8, până la 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Modifică nivelul producţiei (procent, până la 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Tren{P "" uri} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Autovehicule{P "" s} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Nav{P ă e} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeronave STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Trenuri - click pe un trn pentru detalii STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Autovehicule - clic pe vehicul pentru informatii STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Nave - click pe navă pentru informaţii STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeronavă - clic pe aeronavă pentru informaţii STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Profit anul acesta: {CURRENCY_LONG} (anul trecut: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Trenuri disponibile STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vehicule disponibile STR_VEHICLE_LIST_AVAILABLE_SHIPS :Nave disponibile STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Aeronave disponibile STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Vezi o listă de proiecte de motoare disponibile pentru acest tip de vehicul STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Gestioneaza lista STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Trimite instructiunile tuturor vehiculelor din aceasta lista STR_VEHICLE_LIST_REPLACE_VEHICLES :Inlocuieste vehiculele STR_VEHICLE_LIST_SEND_FOR_SERVICING :Trimite in service STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Trimite la depou STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Trimite la depou STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Trimite la depou STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Trimite la hangar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Click pt oprirea tuturor vehiculelor din listă STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Apasa pentru pornirea tuturor vehiclulelor din lista STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Comenzi sincronizate pentru {COMMA} vehicul{P "" e} # Group window STR_GROUP_ALL_TRAINS :Toate trenurile STR_GROUP_ALL_ROAD_VEHICLES :Toate autovehiculele STR_GROUP_ALL_SHIPS :Toate navele STR_GROUP_ALL_AIRCRAFTS :Toate aeronavele STR_GROUP_DEFAULT_TRAINS :Trenuri negrupate STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehicule rutiere negrupate STR_GROUP_DEFAULT_SHIPS :Nave negrupate STR_GROUP_DEFAULT_AIRCRAFTS :Aeronave negrupate STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupuri - click pe un grup pentru lista completă a vehiculelor acestuia STR_GROUP_CREATE_TOOLTIP :{BLACK}Click pentru a creea un grup STR_GROUP_DELETE_TOOLTIP :{BLACK}Şterge grupul selectat STR_GROUP_RENAME_TOOLTIP :{BLACK}Redenumeşte grupul selectat STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click aici pentru a proteja acest grup de la înlocuirile automate globale STR_GROUP_ADD_SHARED_VEHICLE :Adaugă vehicule partajate STR_GROUP_REMOVE_ALL_VEHICLES :Elimină toate vehiculele STR_GROUP_RENAME_CAPTION :{BLACK}Redenumeşte un grup # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Noi vehicule feroviare STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Noi Vehicule Electrice pe Sine STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Noi vehicule monoşină STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Noi vehicule pe Pernă Magnetică STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Vehicule pe şine STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Autovehicule noi STR_BUY_VEHICLE_SHIP_CAPTION :Nave noi STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Aeronavă nouă STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} Greutate: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Viteză: {GOLD}{VELOCITY}{BLACK} Putere: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Viteză: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Viteza pe ocean: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Viteza pe canal/râu: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Cost de rulare: {GOLD}{CURRENCY_LONG}/an STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacitate: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(suportă alte mărfuri) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}An apariţie: {GOLD}{NUM}{BLACK} Durata de viaţă: {GOLD}{COMMA} ani STR_PURCHASE_INFO_RELIABILITY :{BLACK}Eficienţă max.: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cost: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Greutate: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} Viteză: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacitate: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagoane electrificate: {GOLD}+{POWER}{BLACK} Greutate: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Modificabil pentru: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Toate tipurile de mărfuri STR_PURCHASE_INFO_ALL_BUT :Toate, cu excepţia {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Efort tractor max.: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rază acțiune: {GOLD}{COMMA} pătrățele STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selectie a componentelor trenului - clic pe vehicule pt. informatii STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Listă selecţie vehicule rutiere - apasă pe vehicul pentru informaţii STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Listă de selecţie a navelor - click pe o navă pentru informaţii STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de selecţie a aeronavelor - clic pe o aeronavă pentru informaţii STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Cumpără vehicul STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Cumpără vehicul STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Cumpără navă STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Cumpără aeronavă STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Cumpără vehiculul feroviar selectat. Shift+Click arată costul estimat fără să cumpere vehiculul STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Cumpără autovehiculul selectat. Shift+Click arată costul estimat fără să cumpere autovehiculul STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Cumpără nava selectată. Shift+Click arată costul estimativ fără a efectua achiziţia STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Cumpără aeronava selectată. Shift+Click arată costul estimativ fără a efectua achiziţia STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Nume nou STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Nume nou STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Nume nou STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Redenumire STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Redenumeste modelul vehiculului STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Redenumeşte modelul de autovehicul STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Redenumeşte modelul de navă STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Redenumeşte modelul de aeronavă STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Redenumeste modelul vehiculului feroviar STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Redenumeşte modelul de autovehicul STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Redenumeşte modelul de navă STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Redenumeşte modelul de aeronavă # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Schimba numele depoului STR_DEPOT_RENAME_DEPOT_CAPTION :Redenumire depou STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vehicul{P "" e}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Trenuri - trage vehiculele cu click stânga pentru a adauga/elimina din tren, click dreapta pe vehicul pentru informaţii. Tasta Ctrl aplică funcţiile pentru întreaga garnitură STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Autovehicule - clic dreapta pe vehicul pentru informaţii STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Nave - clic dreapta pe o navă pentru informaţii STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aeronavă - clic dreapta pe aeronavă pentru informaţii STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Mută un vehicul aici pentru a-l vinde STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Mută un autovehicul aici pentru a-l vinde STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Trage nava aici pentru a o vinde STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Trage aeronava aici pentru a o vinde STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Trage locomotiva aici pentru a vinde întregul tren STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Vinde toate trenurile din the depou STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Vinde toate autovehiculele din depou STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Vinde toate vasele din depou STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Vinde toate aeronavele din hangar STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}înlocuieşte automat toate din depou STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}înlocuieşte automat toate autovehiculele din depou STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}înlocuieşte automat toate vasele din depou STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}înlocuieşte automat toate aeronavele din hangar STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Vehicule noi STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Autovehicule noi STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nave noi STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Aeronavă nouă STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Construieşte un nou vehicul feroviar STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Cumpără un autovehicul nou STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Cumpără o navă nouă STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Cumpără o nouă aeronavă STR_DEPOT_CLONE_TRAIN :{BLACK}Clonare tren STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clonare vehicul STR_DEPOT_CLONE_SHIP :{BLACK}Clonare navă STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clonare aeronavă STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Acest buton va crea o copie a trenului, cu tot cu vagoane. Apasă acest buton, apoi fă click pe un tren din interiorul sau exteriorul depoului. Ctrl+Click va sincroniza comenzile. Shift+Click arată costul estimativ fără a efectua achiziţia STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Acest buton va crea o copie a autovehiculului. Apasă acest buton, apoi fă click pe un autovehicul din interiorul sau afara depoului. Ctrl+Click va sincroniza comenzile. Shift+Click arată costul estimativ fără a efectua achiziţia STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Acest buton va crea o copie a navei. Apasă acest buton, apoi fă click pe o navă din interiorul sau exteriorul depoului. Ctrl+Click va sincroniza comenzile. Shift+Click arată costul estimativ fără a efectua achiziţia STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Acest buton va crea o copie a aeronavei. Apasă acest buton, apoi fă clic pe o aeronavă din interiorul sau exteriorul hangarului. Ctrl+Click va sincroniza comenzile. Shift+Click arată costul estimativ fără a efectua achiziţia STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia depoului. Ctrl+Click deshide o fereastra cu locaţia depoului STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia acestei autobaze. Ctrl+Click deshide o fereastra cu locaţia autobazei STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia şantierului. Ctrl+Click deshide o fereastra cu locaţia şantierului STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia hangarului. Ctrl+Click deshide o fereastra cu locaţia hangarului STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Obtine o lista ordonata a tuturor trenurilor din depoul actual STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Obtine o lista ordonata a tuturor autovehiculelor din depoul actual STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Obtine o lista ordonata a tuturor vaselor din depoul actual STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Obtine o lista ordonata a tuturor aeronavelor din orice hangar al acestui aeroport STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Click pt oprirea tuturor trenurilor din depou STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Click pt oprirea tuturor autovehiculelor din depou STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Click pt oprirea tuturor vaselor din depou STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Click pt oprirea tuturor aeronavelor din hangar STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Click pt pornirea tuturor trenurilor din depou STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Click pt pornirea tuturor autovehiculelor din depou STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Click pt pornirea tuturor vaselor din depou STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Click pt pornirea tuturor aeronavelor din hangar STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Eşti pe cale să vinzi toate vehiculele din depou. Eşti sigur? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Mesaj de la producătorul de vehicule STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Am creat un nou tip de {STRING}. Aţi fi interesaţi de folosirea exclusivă pentru un an a acestui vehicul, astfel ca noi să-i putem observa performanţele înaintea lansării oficiale? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :locomotivă STR_ENGINE_PREVIEW_ROAD_VEHICLE :autovehicul STR_ENGINE_PREVIEW_AIRCRAFT :aeronavă STR_ENGINE_PREVIEW_SHIP :navă STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotivă monoşină STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotivă pernă magnetică STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Greutate: {WEIGHT_SHORT}{}Vitezã: {VELOCITY} Putere: {POWER}{}Cost de rulare: {CURRENCY_LONG}/an{}Capacitate: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Greutate: {WEIGHT_SHORT}{}Viteză: {VELOCITY} Putere: {POWER} Ef. T. Max.: {6:FORCE}{}Cost rulaj: {4:CURRENCY_LONG}/an{}Capacitate: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză max.: {VELOCITY}{}Capacitate: {CARGO_LONG}, {CARGO_LONG}{}Mentenanţă: {CURRENCY_LONG}/an STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză max.: {VELOCITY}{}Capacitate: {CARGO_LONG}{}Mentenanţă: {CURRENCY_LONG}/an STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Viteză maximă: {VELOCITY} Rază de acțiune: {COMMA} tiles{}Capacitate: {CARGO_LONG}, {CARGO_LONG}{}Cost rulare: {CURRENCY_LONG}/an STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză maximă: {VELOCITY} Rază de acțiune: {COMMA} pătrățele{}Capacitate: {CARGO_LONG}{}Cost de rulare: {CURRENCY_LONG}/yr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Înlocuieşte {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Trenul STR_REPLACE_VEHICLE_ROAD_VEHICLE :Autovehicolul STR_REPLACE_VEHICLE_SHIP :Nava STR_REPLACE_VEHICLE_AIRCRAFT :Aeronava STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Alege tipul de motor pentru înlocuire STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Alege noul tip de motor pe care doreşti să-l foloseşti în locul motorului selectat în stânga STR_REPLACE_VEHICLES_START :{BLACK}Incepere inlocuire vehicule STR_REPLACE_VEHICLES_NOW :Înlocuieşte toate vehiculele acum STR_REPLACE_VEHICLES_WHEN_OLD :Înlocuieşte doar vehiculele vechi STR_REPLACE_HELP_START_BUTTON :{BLACK}Apasă aici pentru a începe înlocuirea motorului selectat în stânga cu cel selectat în dreapta STR_REPLACE_NOT_REPLACING :{BLACK}Neinlocuire STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nici un vehicul selectat STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} când este învechit STR_REPLACE_VEHICLES_STOP :{BLACK}Oprire înlocuire vehicule STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Apasă aici pentru a opri înlocuirea motorului selectat în stânga STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Înlocuire: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Comutã între ferestrele de înlocuire motoare si vagoane STR_REPLACE_ENGINES :Motoare STR_REPLACE_WAGONS :Vagoane STR_REPLACE_HELP_RAILTYPE :{BLACK}Alege un tip de cale ferată pentru care doreşti să înlocuieşti locomotivele STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Arată locomotiva ceva înlocui locomotiva selectată în stânga STR_REPLACE_RAIL_VEHICLES :Vehicule feroviare STR_REPLACE_ELRAIL_VEHICLES :Vehicule Electrificate pe Sine STR_REPLACE_MONORAIL_VEHICLES :Vehicule Monorail STR_REPLACE_MAGLEV_VEHICLES :Vehicule Pernă Magnetică STR_REPLACE_REMOVE_WAGON :{BLACK}Retragere vagoane: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Fă optiunea de autoînlocuire să păstreze identică lungimea unui tren prin eliminarea vagoanelor (începând din faţă) dacă înlocuirea locomotivei ar face trenul mai lung # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia curentă a trenului. Ctrl-click va urmări trenul STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia curentă a autovehiculului. Ctrl-click va urmări autovehiculul STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia curentă a navei. Ctrl-click va urmări nava STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrează imaginea pe locaţia curentă a aeronavei. Ctrl-click va urmări aeronava STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Trimite trenul într-un depou STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Trimite autovehiculul la autobază. Ctrl+clic pentru service STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Trimite nava în şantier. Ctrl+clic pentru întreţinere STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Trimite aeronava la hangar. Ctrl+clic pentru întreţinere STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Acest buton va crea o copie a întregului tren. Ctrl+Click va sincroniza comenzile. Shift+Click va afișa costul estimat fără a achiziționa trenul STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Acest buton va crea o copie a autovehiculului. Ctrl+Click va sincroniza comenzile. Shift+Click va afișa costul estimat fără a achiziționa vehiculul STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Acest buton va crea o copie a navei. Ctrl+Click va sincroniza comenzile. Shift+Click va afișa costul estimat fără a achiziționa nava STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Acest buton va crea o copie a aeronavei. Ctrl+Click va sincroniza comenzile. Shift+Click va afișa costul estimat fără a cumpăra aeronava STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forţează trenul să ignore semnalizarea de oprire STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Schimba tipul încãrcãturii cãratã de acest tren STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Adapteaza autovehiculul pentru o incarcatura diferita STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Schimbă tipul de marfă transportat de navă STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Schimbă tipul de marfă transportat de aeronavă STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Schimbă sensul de circulaţie al trenului STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forţează vehiculul să întoarcă STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Afişează comenzile trenului. Ctrl-Click pentru a afişa orarul STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Afişează comenzile autovehiculului. Ctrl-Click pentru a afişa orarul STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Afişează comenzile navei. Ctrl-Click pentru a afişa orarul STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Afişează comenzile aeronavei. Ctrl-Click pentru a afişa orarul STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Afişează detaliile trenului STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Afişează detaliile autovehiculului STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Afişează detaliile navei STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Afişează detaliile aeronavei STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Comanda curentă a trenului - clic aici pentru a opri/porni trenul. Ctrl+Click pentru a vedea destinaţia STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Comanda curentă a autovehiculului - clic aici pentru a opri/porni autovehiculul. Ctrl+Click pentru a vedea destinatia STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Comanda curentă a navei - clic aici pentru a opri/porni nava. Ctrl+Click pentru a vedea destinaţia STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Comanda curentă a aeronavei - clic aici pentru a opri/porni aeronava # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Încărcare / Descărcare STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Pleaca STR_VEHICLE_STATUS_CRASHED :{RED}Accident! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Defect STR_VEHICLE_STATUS_STOPPED :{RED}Oprit STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Oprire, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Fara curent STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Astept cale libera STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Prea departe pentru următoarea destinație STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Spre {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Fără comenzi, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Merge spre {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Merge către {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Service la {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Oprit STR_VEHICLE_COMMAND_STOPPED :{RED}Oprit STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Pornit STR_VEHICLE_COMMAND_STARTED :{GREEN}Pornit # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Detalii) STR_VEHICLE_NAME_BUTTON :{BLACK}Nume STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Numele trenului STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Numele autovehiculului STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Denumeşte această navă STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Denumeşte aeronava STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Vechime: {LTBLUE}{STRING}{BLACK} Mentenanţă: {LTBLUE}{CURRENCY_LONG}/an # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} an{P "" i} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} an{P "" i} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Viteză max.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Viteză maximă: {LTBLUE}{VELOCITY} {BLACK}Rază de acțiune: {LTBLUE}{COMMA} pătrățele STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Greutate: {LTBLUE}{WEIGHT_SHORT} {BLACK}Putere: {LTBLUE}{POWER}{BLACK} Viteză max.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Greutate: {LTBLUE}{WEIGHT_SHORT} {BLACK}Putere: {LTBLUE}{POWER}{BLACK} Viteză max.: {LTBLUE}{VELOCITY} {BLACK}Efort tractiv: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profit pe anul curent: {LTBLUE}{CURRENCY_LONG} (anul precedent: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Eficienţă: {LTBLUE}{COMMA}% {BLACK}Defecţiuni de la ultimul service: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Construit: {LTBLUE}{NUM}{BLACK} Valoare: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Capacitate: {LTBLUE}Nimic{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacitate: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacitate: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacitate: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferă Credit: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervalul pentru întreţinere: {LTBLUE}{COMMA}zile{BLACK} Ultima întreţinere: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalul de service: {LTBLUE}{COMMA}%{BLACK} Ultimul service: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Măreşte intervalul de service cu 10. Ctrl+click măreşte intervalul de service cu 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Micşorează intervalul de service cu 10. Ctrl+Click micşorează intervalul de service cu 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Schimbă tipul intervalului de întreținere STR_VEHICLE_DETAILS_DEFAULT :Standard STR_VEHICLE_DETAILS_DAYS :Zile STR_VEHICLE_DETAILS_PERCENT :Procent STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Numele trenului STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Numele autovehiculului STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Denumeşte această navă STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Denumeşte aeronava # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Cumpărat: {LTBLUE}{NUM}{BLACK} Valoare: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Valoare: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Încãrcãtura totalã (capacitatea) acestui tren: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Gol STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} de la {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} de la {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Încărcătură STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Afişează detalii despre încărcătura transportată STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informatii STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Afişează detalii despre componentele trenului STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Capacităţi STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Afişează capacităţile fiecărei componente STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Încãrcãturi STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Afiseazã capacitãtile totale ale trenului, diferentiate pe tip de încãrcãturã STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacitate: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Schimbă marfa) STR_REFIT_TITLE :{GOLD}Alege tipul încărcăturii: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}{}{BLACK}Costul schimbării: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}{}{BLACK}Venituri din schimbare: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costul schimbării: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Capacitate nouă: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Venituri din schimbare: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selectează vehiculele pentru modificare. Trage cu mouse-ul pentru a selecta mai multe vehicule. Click pe spațiu gol pentru a selecta intregul vehicul. Ctrl+Click va selecta un vehicul si lanțul atașat STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Alege tipul de marfă transportat de tren STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Alege tipul de marfă pe care o transportă autovehiculul STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Alege tipul de încărcătură ce va fi transportat de navă STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Alege tipul de încărcătură ce va fi transportat de aeronavă STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Modifică tip încărcătură STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Adaptare autovehicul STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Schimbă marfa transportată de navă STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Schimbă marfa transportată de aeronavă STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Modifică trenul pentru a transporta marfa aleasă STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Adaptează vehiculul rutier pentru transportul încărcăturii alese STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Schimbă tipul de încărcătură al navei cu cel selectat STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Modifică aeronava pentru a transporta tipul de încărcătură ales # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Comenzi) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Orar STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Comută în modul de vizualizare orar STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de comenzi - clic pe o comandă pentru a o selecta. Ctrl+Click poziţionează ecranul pe staţia destinație STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Sfârşitul comenzilor - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Sfârşitul comenzilor sincronizate - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Non-stop STR_ORDER_GO_TO :Du-te la STR_ORDER_GO_NON_STOP_TO :Du-te fără oprire la STR_ORDER_GO_VIA :Du-te prin STR_ORDER_GO_NON_STOP_VIA :Du-te fără oprire prin STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Schimbă comportamentul de oprire pentru ordinul selectat STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Încarcă orice produs STR_ORDER_DROP_LOAD_IF_POSSIBLE :Încarcă dacă este disponibil STR_ORDER_DROP_FULL_LOAD_ALL :Încarcă toate produsele STR_ORDER_DROP_FULL_LOAD_ANY :Încarcă orice produs STR_ORDER_DROP_NO_LOADING :Nu încărca STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Schimbă comportamentul de încărcare pentru ordinul selectat STR_ORDER_TOGGLE_UNLOAD :{BLACK}Descarcă tot STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Descarcă dacă este acceptat STR_ORDER_DROP_UNLOAD :Descarcă tot STR_ORDER_DROP_TRANSFER :Transferă STR_ORDER_DROP_NO_UNLOADING :Nu descărca STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Schimbă comportamentul de descărcare pentru ordinul selectat STR_ORDER_REFIT :{BLACK}Rearanjeaza STR_ORDER_REFIT_TOOLTIP :{BLACK}Alege tipul de marfă pentru rearanjarea în comandă. Ctrl+clic pentru a anula rearanjarea STR_ORDER_REFIT_AUTO :{BLACK}Auto-modificare STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selectează tipul de marfă pentru modificare cu acest ordin. Ctrl+click pentru a elimina o instrucțiune de modificare încărcătură. Modificarea automată va fi efectuată doar dacă vehiculul permite asta. STR_ORDER_DROP_REFIT_AUTO :Tip încărcătură nemodificabil STR_ORDER_DROP_REFIT_AUTO_ANY :Încărcătură disponibilă STR_ORDER_SERVICE :{BLACK}Service STR_ORDER_DROP_GO_ALWAYS_DEPOT :Merge mereu STR_ORDER_DROP_SERVICE_DEPOT :Service dacă este nevoie STR_ORDER_DROP_HALT_DEPOT :Stop STR_ORDER_SERVICE_TOOLTIP :{BLACK}Sari peste aceastã comandã dacã nu este necesar un service STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Datele vehiculului pe care se bazează # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Procentaj încărcare STR_ORDER_CONDITIONAL_RELIABILITY :Eficienţă STR_ORDER_CONDITIONAL_MAX_SPEED :Viteză maximă STR_ORDER_CONDITIONAL_AGE :Vechime (ani) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Necesită service STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Întotdeauna STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Durată de viaţă rămasă STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Cum se face compararea datelor din vehicul cu valoarea dată STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :este egal cu STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nu este egal cu STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :este mai mic decât STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :mai mic sau egal cu STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :este mai mare decât STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :mai mare sau egal cu STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :este adevărat STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :este fals STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Valoarea cu care se compară STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Introduceţi valoarea de comparat STR_ORDERS_SKIP_BUTTON :{BLACK}Treci la următoarea STR_ORDERS_SKIP_TOOLTIP :{BLACK}Renunţă la comanda actuală si preia-o pe urmatoarea. CTRL + click face salt la comanda selectată STR_ORDERS_DELETE_BUTTON :{BLACK}Şterge STR_ORDERS_DELETE_TOOLTIP :{BLACK}Şterge comanda selectată STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Şterge toate ordinele STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Opreşte sincronizarea STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Opreşte sincronizarea ordinelor. Ctrl-Click şterge toate ordinele pentru acest vehicul STR_ORDERS_GO_TO_BUTTON :{BLACK}Mergi la STR_ORDER_GO_TO_NEAREST_DEPOT :Du-te la cel mai apropiat depou STR_ORDER_GO_TO_NEAREST_HANGAR :Du-te la cel mai apropiat hangar STR_ORDER_CONDITIONAL :Salt în ordine condiţionată STR_ORDER_SHARE :Sincronizează ordinele STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Adaugă o comandă înaintea celei selectate, sau la sfârşitul listei. Ctrl-Click transformă comenzile pentru staţii în 'încarcă orice tip de marfă', pentru punctele de tranzit în 'non-stop' şi pentru depouri în 'service'. 'Sincronizarea ordinelor' sau Ctrl permite acestui vehicul să îşi partajeze ordinele cu vehiculul selectat. Click pe un vehicul pentru a copia ordinele de la el. Un ordin de depou anulează service-ul automat pentru vehicul STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Arata toate vehiculele care se incadreaza in acest program # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Mergi via {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Mergi fără oprire via {WAYPOINT} STR_ORDER_SERVICE_AT :Service la STR_ORDER_SERVICE_NON_STOP_AT :Service non-stop la STR_ORDER_NEAREST_DEPOT :cel mai apropiat STR_ORDER_NEAREST_HANGAR :cel mai apropiat Hangar STR_ORDER_TRAIN_DEPOT :Depou de Trenuri STR_ORDER_ROAD_VEHICLE_DEPOT :Autobază STR_ORDER_SHIP_DEPOT :Şantier Naval STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Rearanjeaza in {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Modifică pentru {STRING} şi opreşte) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Implicit) STR_ORDER_FULL_LOAD :(Încărcare maximă) STR_ORDER_FULL_LOAD_ANY :(Încărcare orice produs) STR_ORDER_NO_LOAD :(Fără încărcare) STR_ORDER_UNLOAD :(Descarcă şi preia încărcătura) STR_ORDER_UNLOAD_FULL_LOAD :(Descarcă şi aşteaptă încărcare maximă) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Descarcă şi aşteaptă orice încărcătură) STR_ORDER_UNLOAD_NO_LOAD :(Descarcă şi pleacă) STR_ORDER_TRANSFER :(Transferă - preia încărcătura) STR_ORDER_TRANSFER_FULL_LOAD :(Transferă şi aşteaptă încărcare maximă) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferă şi aşteaptă orice încărcătură) STR_ORDER_TRANSFER_NO_LOAD :(Transferă - pleacă descărcat) STR_ORDER_NO_UNLOAD :(Nu descărca şi preia încărcătura) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Nu descărca şi aşteaptă încărcare maximă) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Nu descărca şi aşteaptă orice încărcătură) STR_ORDER_NO_UNLOAD_NO_LOAD :(Fără încărcare sau descărcare) STR_ORDER_AUTO_REFIT :(Înlocuire automată cu {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Încărcare completă cu auto-modificare pentru {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Încarcă complet orice tip de marfă cu auto-înlocuire la {STRING}) STR_ORDER_UNLOAD_REFIT :(Descarcă și preia marfă cu auto-înlocuire pentru {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarcă și așteaptă incărcare completă cu auto-înlocuire pentru {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarcă și așteaptă încărcare completă orice tip cu auto-înlocuire pentru {STRING}) STR_ORDER_TRANSFER_REFIT :(Transferă și ia marfă cu auto-înlocuire la {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferă și așteaptă încărcare completă cu auto-înlocuire la {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferă și așteaptă încărcare completă orice tip cu auto-înlocuire la {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Incărcare marfă fără descărcare cu auto-înlocuire la {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Incărcare marfă completă fără descărcare cu auto-înlocuire la {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Incărcare marfă completă orice tip fără descărcare cu auto-înlocuire la {STRING}) STR_ORDER_AUTO_REFIT_ANY :încărcătura disponibilă STR_ORDER_STOP_LOCATION_NEAR_END :[la capătul apropiat] STR_ORDER_STOP_LOCATION_MIDDLE :[la mijloc] STR_ORDER_STOP_LOCATION_FAR_END :[la capătul îndepărtat] STR_ORDER_OUT_OF_RANGE :{RED} (Următoarea destinație nu se află în raza de acțiune) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Salt la comanda {COMMA} STR_ORDER_CONDITIONAL_NUM :Salt la comanda {COMMA} cand {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Salt la comanda {COMMA} cand {STRING} {STRING} STR_INVALID_ORDER :{RED} (Comenzi eronate) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Orar) STR_TIMETABLE_ORDER_VIEW :{BLACK}Comenzi STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Schimba la panoul de comenzi STR_TIMETABLE_TOOLTIP :{BLACK}Orar - click pe un ordin pentru a-l selecta STR_TIMETABLE_NO_TRAVEL :NU este calatorie STR_TIMETABLE_NOT_TIMETABLEABLE :Călătorie (automat; orar generat de următorul ordin manual) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Calatorie (fara orar) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Mergi cu maxim {2:VELOCITY} (fără planificare) STR_TIMETABLE_TRAVEL_FOR :Calatorii pentru {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Mergi către {STRING} cu maxim {VELOCITY} STR_TIMETABLE_STAY_FOR :şi opreşte pentru {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :şi călătoreşte pentru {STRING} STR_TIMETABLE_DAYS :{COMMA} zi{P "" le} STR_TIMETABLE_TICKS :{COMMA} tic{P "" uri} STR_TIMETABLE_TOTAL_TIME :{BLACK}Acest orar va lua {STRING} pentru finalizare STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Acest orar va lua cel putin {STRING} pentru finalizare (nu in intregime programat) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Acest vehicul se incadreaza in timp STR_TIMETABLE_STATUS_LATE :{BLACK}Vehiculul are întârziere de {STRING} STR_TIMETABLE_STATUS_EARLY :{BLACK}Momentan, acest vehicul si-a devansat programul {STRING} STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Acest orar nu a început încă STR_TIMETABLE_STATUS_START_AT :{BLACK}Acest orar va începe la {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Dată pornire STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Alege o dată de pornire pentru acestu orar STR_TIMETABLE_CHANGE_TIME :{BLACK}Modifică timpul STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Modifică durata de timp alocată pentru comanda selectată STR_TIMETABLE_CLEAR_TIME :{BLACK}Curata timp STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Elimină durata de timp pentru comanda selectată STR_TIMETABLE_CHANGE_SPEED :{BLACK}Schimbă limita de viteză STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Schimbă limita maximă de viteză a ordinului selectat STR_TIMETABLE_CLEAR_SPEED :{BLACK}Şterge limita de viteză STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Şterge limita maximă de viteză a ordinului selectat STR_TIMETABLE_RESET_LATENESS :{BLACK}Reinitializeaza contorul de intarziere STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniţializează contorul de întârziere, astfel ca vehiculul să ajungă la timp STR_TIMETABLE_AUTOFILL :{BLACK}Auto-completare STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Completează automat tabela cu timpi cu valorile pentru urmatoarea călătorie (CTRL-clic pentru a încerca să păstraţi timpii de aşteptare) STR_TIMETABLE_EXPECTED :{BLACK}Estimat STR_TIMETABLE_SCHEDULED :{BLACK}Planificat STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Comută între estimare şi orar STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: STR_TIMETABLE_DEPARTURE_ABBREVIATION :D: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Setează data STR_DATE_SET_DATE :{BLACK}Setează data STR_DATE_SET_DATE_TOOLTIP :{BLACK}Foloseşte data selectată ca dată de pornire pentru acest orar STR_DATE_DAY_TOOLTIP :{BLACK}Alege ziua STR_DATE_MONTH_TOOLTIP :{BLACK}Alege luna STR_DATE_YEAR_TOOLTIP :{BLACK}Alege anul # AI debug window STR_AI_DEBUG :{WHITE}Depanare IA / Script Joc STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Numele scriptului STR_AI_DEBUG_SETTINGS :{BLACK}Setări STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Schimbă setările scriptului STR_AI_DEBUG_RELOAD :{BLACK}Reîncarcă IA STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Opreşte IA, raîncarcă scriptul, apoi reporneşte IA STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activează/dezactivează suspendarea când un mesaj de la IA se potriveşte cu string-ul de oprire STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Opreşte la: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Opreşte la STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Când un mesaj al modului de IA se potriveşte cu acest string, se suspendă jocul STR_AI_DEBUG_MATCH_CASE :{BLACK}Potrivire majuscule/minuscule STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Comută potrivirea pe majuscule/minuscule când se compară fişierele log ale AI cu string-ul de oprire STR_AI_DEBUG_CONTINUE :{BLACK}Continuă STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Continuă execuţia modulului de Inteligenţă Artificială STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vizualizează datele de debug ale acestui modul de IA STR_AI_GAME_SCRIPT :{BLACK}Game Script STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Verifică log-ul Game Script STR_ERROR_AI_NO_AI_FOUND :Nici o IA potrivită a fost găsită{}Această IA este nefuncţională.{}Poţi descărca IA-uri folsind opţiunea "Resurse online" din meniul principal. STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}O Inteligentă Artificială/Script Joc s-a oprit în mod eronat. Raportează această problemă autorului împreună cu o captură de ecran a ferestrei Depanare IA/Script Joc STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Fereastra pentru depanare IA / Script Joc este disponibilă doar serverului # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}Configurație Inteligentă Artificială / Scripturi Joc STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Script Joc încărcat în jocul următor STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Modulul de IA care va fi încărcat în jocul următor STR_AI_CONFIG_HUMAN_PLAYER :Jucator uman STR_AI_CONFIG_RANDOM_AI :IA aleator STR_AI_CONFIG_NONE :(nici unul) STR_AI_CONFIG_MOVE_UP :{BLACK}În sus STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Mută IA selectată sus în listă STR_AI_CONFIG_MOVE_DOWN :{BLACK}În jos STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Mută IA selectată jos în listă STR_AI_CONFIG_GAMESCRIPT :{SILVER}Script Joc STR_AI_CONFIG_AI :{SILVER}IA STR_AI_CONFIG_CHANGE :{BLACK}Selectare {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :IA STR_AI_CONFIG_CHANGE_GAMESCRIPT :Script Joc STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Încarcă un alt script STR_AI_CONFIG_CONFIGURE :{BLACK}Configurază STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Configurează parametrii scriptului # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Disponibil {STRING} STR_AI_LIST_CAPTION_AI :IA STR_AI_LIST_CAPTION_GAMESCRIPT :Scripturi Joc STR_AI_LIST_TOOLTIP :{BLACK}Click pentru a alege un script STR_AI_LIST_AUTHOR :{LTBLUE}Autor: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versiune: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Acceptă STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Alege scriptul marcat STR_AI_LIST_CANCEL :{BLACK}Anulează STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nu schimba scriptul # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametrii STR_AI_SETTINGS_CAPTION_AI :IA STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script Joc STR_AI_SETTINGS_CLOSE :{BLACK}Închide STR_AI_SETTINGS_RESET :{BLACK}Resetează STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Perioada (în zile) după care această librărie IA va fi activată, după cea anterioară (valoare aproximativă): {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}, fișier readme al {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING}, lista de modificări a {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING}, licența fișierului {STRING} STR_TEXTFILE_VIEW_README :{BLACK}Vezi fișierul readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Listă modificări STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenţă # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Cheltuieli: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Cheltuieli: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Venituri: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Venituri: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferă: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Transferă: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Cost estimat: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Venit estimat: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Salvarea se efectueaza încã,{}vã rugãm asteptati pânã se încheie! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Auto-salvarea a esuat STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Discul nu a putut fi citit STR_ERROR_GAME_SAVE_FAILED :{WHITE}Salvarea jocului eşuată{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Ştergerea jocului eşuată STR_ERROR_GAME_LOAD_FAILED :{WHITE}Încărcarea jocului eşuată{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Eroare internă: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Salvare eronată - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvarea a fost făcută cu o versiune mai nouă STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fişierul nu poate fi citit STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Fişierul nu poate fi scris STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integritatea datelor compromisă STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Jocul a fost salvat într-o versiune fără suport pentru tramvaie. Toate tramvaiele au fost eliminate # Map generation messages STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Generarea hărţii a eşuat...{}... nici o locaţie potrivită pentru oraş STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... în acest scenariu nu există nici un oraş STR_ERROR_PNGMAP :{WHITE}Nu pot încărca peisajul din PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fişierul lipseşte STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... nu am reuşit conversia tipului de imagine. Este necesară o imagine PNG pe 8 sau 24 de biţi STR_ERROR_PNGMAP_MISC :{WHITE}... ceva nu a funcţionat cum trebuie (probabil fişierul este defect) STR_ERROR_BMPMAP :{WHITE}Nu pot încărca peisajul din BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nu am putut converti tipul de imagine STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... imaginea e prea mare STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Avertisment de scala STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Redimensionarea excesiva a hartii nu este recomandata. Continui cu generarea? # Soundset messages STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Doar un set nul de efecte sonore a fost găsit. Dacă doreşti sunete, instalează un set de sunete folosind sistemul de Resurse Online # Screenshot related messages STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Imagine de dimensiune foarte mare STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Imaginea capturata va avea o dimensiune de {COMMA} x {COMMA} pixeli. Realizarea unei capturi va dura puțin timp. Dorești să continui? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Imagine salvată cu succes pe disc în fişierul '{STRING}' STR_ERROR_SCREENSHOT_FAILED :{WHITE}Imaginea nu a putut fi capturată! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Mesaj STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mesaj de la {STRING} # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Depăşeşte limita hărţii STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Prea aproape de marginea hărţii STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nu ai destui bani - îţi trebuie {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Necesită teren plat STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terenul are o înclinaţie nepotrivită STR_ERROR_CAN_T_DO_THIS :{WHITE}Nu se poate face asta... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Mai întâi trebuie demolată clădirea STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nu se poate curăţa terenul... STR_ERROR_SITE_UNSUITABLE :{WHITE}... locaţie nepotrivită STR_ERROR_ALREADY_BUILT :{WHITE}... deja construit STR_ERROR_OWNED_BY :{WHITE}... apartine companiei {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... terenul se află în proprietatea altei companii STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... a fost atinsă limita de modificări ale peisajului pe care le poți face STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... a fost atinsă limita numarului de zone pe care le poti curăța STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... limita de plantare a copacilor a fost atinsă STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Numele trebuie să fie unic STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} în cale STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Nepermis când jocul este în pauză # Local authority errors STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Autorităţile locale din {TOWN} refuză să permită această acţiune STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Autoritatea locală din {TOWN} refuză să permită construirea unui nou aeroport în acest oraş STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Autoritatea locală din {TOWN} nu permite construirea unui nou aeroport datorită poluării fonice STR_ERROR_BRIBE_FAILED :{WHITE}Tentativa de mituire a fost descoperită de un investigator regional # Levelling errors STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Nu se poate înălţa terenul... STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Nu se poate coborî terenul... STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Terenul nu poate fi uniformizat aici... STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Săpăturile ar afecta tunelul STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Deja la nivelul mării STR_ERROR_TOO_HIGH :{WHITE}Prea înalt STR_ERROR_ALREADY_LEVELLED :{WHITE}... este deja plat # Company related errors STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nu se poate schimba numele companiei... STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Nu se poate schimba numele preşedintelui... STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... creditul maxim permis este de {CURRENCY_LONG} STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Nu mai poţi împrumuta bani... STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... nu ai nici un credit de plătit STR_ERROR_CURRENCY_REQUIRED :{WHITE}... ai nevoie de {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nu poţi plăti creditul... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nu poţi dona din banii împrumutaţi de la bancă... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nu se poate cumpăra compania... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nu se poate construi sediul companiei... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nu se pot cumpăra 25% din acţiunile acestei companii... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Nu se pot vinde 25% din acţiunile acestei companii... STR_ERROR_PROTECTED :{WHITE}Această companie încă nu vinde acţiuni... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Nu pot construi nici un oras STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Nu se poate redenumi oraşul... STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Nu se poate construi un oraş aici... STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Oraşul nu poate fi extins... STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... prea aproape de marginea hărţii STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... prea aproape de alt oraş STR_ERROR_TOO_MANY_TOWNS :{WHITE}... prea multe oraşe STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... nu mai este loc pe hartă STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Oraşul nu va construi drumuri. Poţi activa construirea drumurilor via Setari avansate -> Economie -> Oraşe STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Lucrari la drum in curs de desfasurare STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Acest oraş nu poate fi şters...{}O staţie sau un depou face referire la acest oraş, sau o parcelă deţinută de oraş nu poate fi eliminată STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... nu există nici un loc potrivit pentru o statuie în centrul acestui oraş # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... prea multe industrii STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nu pot genera industrii... STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Nu se poate construi {STRING} aici... STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Acest tip de industrie nu se poate construi aici... STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... prea aproape de altă industrie STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... mai întâi trebuie creat un oraş STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... un singur obiectiv de acest tip este permis per oraş STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... se poate construi doar în oraşe cu populaţia de cel puţin 1200 STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... se poate construi doar in padurile tropicale STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... se poate construi doar în zonele de deşert STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... se poate construi doar în oraşe (înlocuind casele) STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... se poate construi doar lângă centrul orașului STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... poate fi construit(ă) doar în zone joase STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... se poate construi doar la marginea hărţii STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... pădurile pot fi plantate doar în zonele înzăpezite STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... poate fi construit doar deasupra liniei zăpezii STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... poate fi construit doar sub linia zăpezii # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nu se poate construi o gară aici... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Nu se poate construi staţie de autobuz... STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nu se poate construi platformă pentru camioane... STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nu pot construi staţie de tramvai aici... STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nu pot construi staţie de tramvai aici... STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Nu pot construi port aici... STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nu se poate construi un aeroport aici... STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Este adiacentă mai multor staţii STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... staţie prea întinsă STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Prea multe staţii STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Staţia are prea multe componente STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Prea multe staţii de autobuz STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Prea multe staţii de camion STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Prea aproape de altă staţie STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Prea aproape de alt port STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Prea aproape de un alt aeroport STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nu se poate redenumi staţia... STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... drum în proprietatea oraşului STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... drum orientat în direcţia greşită STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... haltele nu pot avea colţuri STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... haltele nu pot avea intersecţii # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nu se poate demola doar o parte din staţie... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Trebuie mai întâi să demolaţi gara STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Staţia de autobuz nu poate fi demolată... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Staţia de camioane nu poate fi ştearsă... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nu pot înlătura staţia de tramvai... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nu pot înlătura staţia de tramvai... STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Trebuie îndepărtată staţia mai întâi STR_ERROR_THERE_IS_NO_STATION :{WHITE}...nu există staţie aici STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Mai întâi trebuie demolată gara STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Mai întâi trebuie demolată staţia de autobuz STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Mai întâi trebuie demolată platforma pentru camioane STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Mai întâi trebuie demolată staţia de tramvai STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Mai întâi trebuie demolată staţia de tramvai STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Mai întâi trebuie demolat portul STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Mai întâi trebuie demolat aeroportul # Waypoint related errors STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Uneşte mai multe puncte de tranzit STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Prea aproape de alt punct de tranzit STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Nu se poate plasa o haltă aici... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Nu se poate amplasa baliză aici... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Nu pot schimba numele haltei... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Nu se poate desfiinţa halta de aici... STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Trebuie îndepărtat punctul de tranzit feroviar mai intai STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... baliză în cale STR_ERROR_BUOY_IS_IN_USE :{WHITE}... baliza este folosită de o altă companie! # Depot related errors STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Nu se poate construi depou feroviar aici... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Nu se poate construi autobază aici... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Nu pot construi depou de tramvaie aici... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Nu se poate construi şantier naval aici... STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Nu se poate redenumi depoul... STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... trebuie oprit într-un depou STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... trebuie oprit într-o autobază STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... trebuie oprită într-un şantier naval STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... trebuie oprită intr-un hangar STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Trenurile pot fi modificate doar când staţionează într-un depou STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tren prea lung STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Nu se poate inversa direcţia vehiculului... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... este alcătuit din mai multe unități STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Tipuri de sine incompatibile STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Nu se poate muta vehiculul... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Al doilea vagon+motor va avea mereu aceeasi destinatie ca si primul STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Nu se poate găsi un drum spre un depou apropiat STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Nu pot găsi o autobază apropiată STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tip incorect de depou # Autoreplace related errors STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} este prea lung după înlocuire STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nicio regulă autoînlocuire/reînnoire aplicată STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(fonduri limitate) # Rail construction errors STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinaţie de linii imposibilă STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Trebuie îndepărtate semafoarele mai întâi STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Cale ferată nepotrivită STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Mai întâi trebuie înlăturată calea ferată STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Drum cu sens unic sau blocat STR_ERROR_CROSSING_DISALLOWED :{WHITE}Trecerea la nivel nu este permisă pentru acest tip de cale ferată STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Nu se pot plasa semafoare aici... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Nu se poate construi cale ferată aici... STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nu se poate înlătura calea ferată... STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Nu se pot înlătura semafoarele de aici... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Nu se pot transforma semnalele... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}...nu există cale ferată aici STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}...nu există semafoare STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Tipul de şină nu poate fi convertit aici... # Road construction errors STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Mai întâi trebuie înlăturată şoseaua STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... drumurile cu sens unic nu pot avea bifurcatii STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Nu se poate construi şosea aici... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Nu pot construi şină de tramvai aici... STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nu se poate înlătura şoseaua... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nu pot înlătura şina de tramvai de aici... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...nu există drum aici STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...nu există şină de tramvai aici # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Nu pot construi un canal aici... STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Nu se poate construi o ecluză aici... STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Nu pot plasa râuri aici... STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... trebuie construit pe apă STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... nu se poate construi pe apă STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... nu poate fi construit pe mare STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... nu poate fi construit pe canal STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... nu poate fi construit pe râu STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Trebuie sa demolezi canalul inainte STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Nu pot construi apeductul aici... # Tree related errors STR_ERROR_TREE_ALREADY_HERE :{WHITE}... sunt deja plantaţi arbori STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... terenul nu este propice acestui tip de copac STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Nu se pot planta arbori aici... # Bridge related errors STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Nu se poate construi pod aici... STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Mai întâi trebuie demolat podul STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Cele două capete nu se pot situa în acelaşi loc STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Capetele podului nu sunt la acelasi nivel STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Podul este prea jos pentru terenul corespunzator STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Cele două capete trebuie să se situeze în linie STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambele capete ale podului trebuie să se situeze pe uscat STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... podul este prea lung STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Podul s-ar termina în afara hărții # Tunnel related errors STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nu se poate construi tunel aici... STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Loc nepotrivit pentru intrarea într-un tunel STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Mai întâi trebuie demolat tunelul STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Intersectare cu alt tunel STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Tunelul ar ieşi din hartă STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Terenul de la celălalt capăt al tunelului este imposibil de excavat STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunel prea lung # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... prea multe obiecte STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Obiectul nu poate fi construit... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Obiect în cale STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sediu de companie în cale STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Nu poţi cumpăra teren aici... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... este deja în proprietatea ta! # Group related errors STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Nu pot crea grup... STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Nu pot şterge grup... STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Nu se poate redenumi grupul... STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nu pot elimina toate vehiculele din acest grup... STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nu pot adauga vehiculul in acest grup... STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nu pot adauga vehicule partajate in grup... # Generic vehicle errors STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tren în drum STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Autovehicul in cale STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Navă în cale STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronavă în cale STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Nu pot modifica trenul... STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Nu pot adapta autovehiculul... STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Nu se poate schimba tipul navei... STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Nu se poate schimba tipul aeronavei... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Nu se poate denumi trenul... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nu se poate denumi autovehiculul... STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Nu pot denumi nava... STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Nu pot denumi aeronava... STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Nu se poate opri/porni trenul... STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Nu se poate opri/porni autovehiculul... STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Nu pot opri/porni nava... STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nu se poate opri/porni aeronava... STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nu se poate trimite trenul la depou... STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Nu pot trimite autovehiculul la autobază... STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Nu pot trimite nava în şantier... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Nu se poate trimite aeronava la hangar... STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Nu pot cumpăra vehiculul feroviar... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Nu pot cumpăra autovehicul... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Nu pot cumpara nava... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Nu pot cumpăra aeronava... STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Nu se poate redenumi modelul de vehicul... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Nu pot redenumi modelul de autovehicul... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Nu se poate redenumi modelul de navă... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Nu se poate redenumi modelul de aeronavă... STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Nu se poate vinde vehiculul... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Nu se poate vinde autovehiculul... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Nu pot vinde nava... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Nu se poate vinde aeronava... STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vehiculul nu este disponibil STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vehiculul nu este disponibil STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Vasul nu este disponibil STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aeronava nu este disponibilă STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Prea multe vehicule în joc STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nu se poate schimba intervalul de întreţinere... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehiculul este distrus STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Niciun vehicul nu va fi disponibil STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Schimbă configuraţia NewGRF STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Niciun vehicul nu este disponibil încă STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Începe un joc nou după {DATE_SHORT} sau utilizează un NewGRF care oferă vehicule în avans # Specific vehicle errors STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nu se poate permite trenului să treacă în caz de pericol... STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nu se poate schimba sensul de mers al trenului... STR_ERROR_TRAIN_START_NO_POWER :Trenul nu are putere STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Vehicolul nu poate întoarce la 180 de grade... STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aeronava se află în zbor # Order related errors STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Nu mai este loc pentru comenzi STR_ERROR_TOO_MANY_ORDERS :{WHITE}Prea multe comenzi STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Nu se poate adăuga o comandă nouă... STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Nu se poate şterge această comandă... STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nu se poate modifica această comandă... STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Nu pot muta acest ordin... STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Nu pot renunta la comanda actuala... STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Nu pot sări la ordinul selectat... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vehiculul nu poate ajunge la toate staţiile STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vehiculul nu poate ajunge la acea staţie STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... un vehicul care are acest ordin nu poate ajunge la acea staţie STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Nu se poate trece la comenzi sincronizate... STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Nu pot opri sincronizarea listei de ordine... STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Nu pot copia lista de comenzi... STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... prea departe de destinaţia precedentă STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... avionul nu are o rază de acțiune suficientă # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nu pot programa vehiculul... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehiculele pot aştepta numai în staţii STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Acest vehicul nu are oprire în această staţie # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... prea multe semne STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Nu se poate plasa un semn aici... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Nu se poate schimba numele semnului... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Nu pot sterge semnul... # Translatable comment for OpenTTD's desktop shortcut STR_DESKTOP_SHORTCUT_COMMENT :Un joc de simulare bazat pe Transport Tycoon Deluxe # Translatable descriptions in media/baseset/*.ob* files STR_BASEGRAPHICS_DOS_DESCRIPTION :Setul grafic original al Transport Tycoon Deluxe pentru DOS. STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană). STR_BASEGRAPHICS_WIN_DESCRIPTION :Setul grafic original al Transport Tycoon Deluxe pentru Windows. STR_BASESOUNDS_DOS_DESCRIPTION :Setul de sunete original al Transport Tycoon Deluxe pentru DOS. STR_BASESOUNDS_WIN_DESCRIPTION :Setul de sunete original al Transport Tycoon Deluxe pentru Windows. STR_BASESOUNDS_NONE_DESCRIPTION :Un set de sunete fără nici un sunet inclus. STR_BASEMUSIC_WIN_DESCRIPTION :Setul de muzică original al Transport Tycoon Deluxe pentru Windows. STR_BASEMUSIC_NONE_DESCRIPTION :Un set de muzică fără muzică inclusă. ##id 0x2000 # Town building names STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Clădire înaltă de birouri STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Clădire de birouri STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Bloc mic de apartamente STR_TOWN_BUILDING_NAME_CHURCH_1 :Biserică STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Clădire mare de birouri STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Case STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Statuie STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fântână STR_TOWN_BUILDING_NAME_PARK_1 :Parc STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Clădire de birouri STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Magazine şi birouri STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Clădire modernă de birouri STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Depozit STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Bloc de birouri STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadion STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Case vechi STR_TOWN_BUILDING_NAME_COTTAGES_1 :Căsuţe STR_TOWN_BUILDING_NAME_HOUSES_1 :Case STR_TOWN_BUILDING_NAME_FLATS_1 :Blocuri STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Clădire înaltă de birouri STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Magazine şi birouri STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Magazine şi birouri STR_TOWN_BUILDING_NAME_THEATER_1 :Teatru STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadion STR_TOWN_BUILDING_NAME_OFFICES_1 :Birouri STR_TOWN_BUILDING_NAME_HOUSES_2 :Case STR_TOWN_BUILDING_NAME_CINEMA_1 :Cinematograf STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Centru comercial STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu STR_TOWN_BUILDING_NAME_TEPEES_1 :Corturi STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Casă-ceainic STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Puşculiţă ##id 0x4800 # industry names STR_INDUSTRY_NAME_COAL_MINE :Mină de cărbune STR_INDUSTRY_NAME_POWER_STATION :Termocentrală STR_INDUSTRY_NAME_SAWMILL :Fabrică de cherestea STR_INDUSTRY_NAME_FOREST :Pădure STR_INDUSTRY_NAME_OIL_REFINERY :Rafinărie STR_INDUSTRY_NAME_OIL_RIG :Platformă petrolieră STR_INDUSTRY_NAME_FACTORY :Fabrică de conserve STR_INDUSTRY_NAME_PRINTING_WORKS :Tipografie STR_INDUSTRY_NAME_STEEL_MILL :Oţelărie STR_INDUSTRY_NAME_FARM :Fermă STR_INDUSTRY_NAME_COPPER_ORE_MINE :Mină de cupru STR_INDUSTRY_NAME_OIL_WELLS :Sonde de petrol STR_INDUSTRY_NAME_BANK :Bancă STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Combinat alimentar STR_INDUSTRY_NAME_PAPER_MILL :Fabrică de hârtie STR_INDUSTRY_NAME_GOLD_MINE :Mină de aur STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Bancă STR_INDUSTRY_NAME_DIAMOND_MINE :Mină de diamante STR_INDUSTRY_NAME_IRON_ORE_MINE :Mină de fier STR_INDUSTRY_NAME_FRUIT_PLANTATION :Livadă STR_INDUSTRY_NAME_RUBBER_PLANTATION :Plantaţie de cauciuc STR_INDUSTRY_NAME_WATER_SUPPLY :Rezervor STR_INDUSTRY_NAME_WATER_TOWER :Turn de apă STR_INDUSTRY_NAME_FACTORY_2 :Fabrică de conserve STR_INDUSTRY_NAME_FARM_2 :Fermă STR_INDUSTRY_NAME_LUMBER_MILL :Fabrică de cherestea STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :Pădure de vată de zahăr STR_INDUSTRY_NAME_CANDY_FACTORY :Fabrică de bomboane STR_INDUSTRY_NAME_BATTERY_FARM :Fermă de baterii STR_INDUSTRY_NAME_COLA_WELLS :Fântâni de cola STR_INDUSTRY_NAME_TOY_SHOP :Magazin de jucării STR_INDUSTRY_NAME_TOY_FACTORY :Fabrică de jucării STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :Fântâni de plastic STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :Fabrică de sucuri STR_INDUSTRY_NAME_BUBBLE_GENERATOR :Generator de balonaşe STR_INDUSTRY_NAME_TOFFEE_QUARRY :Carieră de caramel STR_INDUSTRY_NAME_SUGAR_MINE :Mină de zahăr ############ 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 STR_SV_EMPTY : STR_SV_UNNAMED :NoName STR_SV_TRAIN_NAME :Trenul {COMMA} STR_SV_ROAD_VEHICLE_NAME :Autovehiculul {COMMA} STR_SV_SHIP_NAME :Nava {COMMA} STR_SV_AIRCRAFT_NAME :Aeronava {COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} Nord STR_SV_STNAME_SOUTH :{STRING} Sud STR_SV_STNAME_EAST :{STRING} Est STR_SV_STNAME_WEST :{STRING} Vest STR_SV_STNAME_CENTRAL :{STRING} Centru STR_SV_STNAME_TRANSFER :{STRING} Transfer STR_SV_STNAME_HALT :Popasul {STRING} STR_SV_STNAME_VALLEY :Valea {STRING} STR_SV_STNAME_HEIGHTS :Dealurile {STRING} STR_SV_STNAME_WOODS :Pădurea {STRING} STR_SV_STNAME_LAKESIDE :Lacul {STRING} STR_SV_STNAME_EXCHANGE :Piaţa {STRING} STR_SV_STNAME_AIRPORT :Aeroportul {STRING} STR_SV_STNAME_OILFIELD :Platforma {STRING} STR_SV_STNAME_MINES :Minele {STRING} STR_SV_STNAME_DOCKS :Portul {STRING} STR_SV_STNAME_BUOY :{STRING} STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :Anexa {STRING} STR_SV_STNAME_SIDINGS :{STRING} Belvedere STR_SV_STNAME_BRANCH :Ramura {STRING} STR_SV_STNAME_UPPER :{STRING} de Sus STR_SV_STNAME_LOWER :{STRING} de Jos STR_SV_STNAME_HELIPORT :Heliportul {STRING} STR_SV_STNAME_FOREST :Pădurea {STRING} STR_SV_STNAME_FALLBACK :{STRING} Staţia #{NUM} ############ end of savegame specific region! ##id 0x8000 # Vehicle names STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Aburi) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Aburi) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Aburi) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Aburi) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Aburi) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diesel) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electric) STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Vagon pentru călători STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Vagon pentru poştă STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Vagon pentru cărbuni STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Cisternă pentru petrol STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Vagon pentru animale STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Vagon pentru bunuri STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Vagon pentru cereale STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Vagon pentru lemne STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Vagon pentru minereu de fier STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Vagon pentru oţel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Vagon blindat STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Vagon pentru alimente STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Vagon pentru hârtie STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Vagon pentru minereu de cupru STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Cisternă pentru apă STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Vagon penru fructe STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Vagon pentru cauciuc STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Vagon pentru zahăr STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Vagon pentru vată de zahăr STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Vagon pentru caramel STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Vagon pentru balonaşe STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cisternă pentru cola STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Vagon pentru bomboane STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Vagon pentru jucării STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Vagon pentru baterii STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Vagon pentru sucuri STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Vagon pentru plastic STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Vagon pentru călători STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Vagon pentru poştă STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Vagon pentru cărbuni STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Cisternă pentru petrol STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Vagon pentru animale STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Vagon pentru bunuri STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Vagon pentru cereale STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Vagon pentru lemne STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Vagon pentru minereu de fier STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Vagon pentru oţel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Vagon blindat STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Vagon pentru alimente STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Vagon pentru hârtie STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Vagon pentru minereu de cupru STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cisternă pentru apă STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Vagon pentru fructe STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Vagon pentru cauciuc STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Vagon pentru zahăr STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Vagon pentru vată de zahăr STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Vagon pentru caramel STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Vagon pentru balonaşe STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cisternă pentru cola STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Vagon pentru bomboane STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Vagon pentru jucării STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Vagon pentru baterii STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Vagon pentru sucuri STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Vagon pentru plastic STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Electric) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Vagon pentru călători STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Vagon pentru poştă STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Vagon pentru cărbuni STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Cisternă pentru petrol STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Vagon pentru animale STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Vagon pentru bunuri STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Vagon pentru cereale STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Vagon pentru lemne STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Vagon pentru minereu de fier STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Vagon pentru oţel STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Vagon blindat STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Vagon pentru alimente STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Vagon pentru hârtie STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Vagon pentru minereu de cupru STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cisternă pentru apă STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Vagon pentru fructe STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Vagon pentru cauciuc STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Vagon pentru zahăr STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Vagon pentru vată de zahăr STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Vagon pentru caramel STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Vagon pentru balonaşe STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cisternă pentru cola STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Vagon pentru bomboane STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Vagon pentru jucării STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Vagon pentru baterii STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Vagon pentru sucuri STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Vagon pentru plastic STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Autobuz MPS Regal STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Autobuz Hereford Leopard STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Autobuz Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Autobuz Foster MkII Superbus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Autobuz Ploddyphut MkI STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Autobuz Ploddyphut MkII STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Autobuz Ploddyphut MkIII STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Camion pentru cărbuni Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Camion pentru cărbuni Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Camion pentru cărbuni DW STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Camion poştal MPS STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Camion poştal Reynard STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Camion poştal Perry STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Camion poştal MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Camion poştal Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Camion poştal Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Cisternă pentru petrol Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Cisternă pentru petrol Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Cisternă pentru petrol Perry STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Camion pentru animale Talbott STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Camion pentru animale Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Camion pentru animale Foster STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Camion pentru bunuri Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Camion pentru bunuri Craighead STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Camion pentru bunuri Goss STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Camion pentru cereale Hereford STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Camion pentru cereale Thomas STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Camion pentru cereale Goss STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Camion pentru lemne Witcombe STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Camion pentru lemne Foster STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Camion pentru lemne Moreland STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Camion pentru fier MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Camion pentru fier Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Camion pentru fier Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Camion pentru oţel Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Camion pentru oţel Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Camion pentru oţel Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Camion blindat Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Camion blindat Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Camion blindat Foster STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Camion pentru alimente Foster STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Camion pentru alimente Perry STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Camion pentru alimente Chippy STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Camion pentru hârtie Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Camion pentru hârtie Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Camion pentru hârtie MPS STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Camion pentru cupru MPS STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Camion pentru cupru Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Camion pentru cupru Goss STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Cisternă pentru apă Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Cisternă pentru apă Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Cisternă pentru apă MPS STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Camion pentru fructe Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Camion pentru fructe Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Camion pentru fructe Kelling STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Camion pentru cauciuc Balogh STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Camion pentru cauciuc Uhl STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Camion pentru cauciuc RMT STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Camion pentru zahăr MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Camion pentru zahăr Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Camion pentru zahăr Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Camion pentru cola MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Camion pentru cola Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Camion pentru cola Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Camion pentru vată de zahăr MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Camion pentru vată de zahăr Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Camion pentru vată de zahăr Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Camion pentru caramel MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Camion pentru caramel Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Camion pentru caramel Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Camion pentru jucării MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Camion pentru jucării Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Camion pentru jucării Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Camion pentru bomboane MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Camion pentru bomboane Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Camion pentru bomboane Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Camion pentru baterii MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Camion pentru baterii Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Camion pentru baterii Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Camion pentru sucuri MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Camion pentru sucuri Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Camion pentru sucuri Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Camion pentru plastic MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Camion pentru plastic Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Camion pentru plastic Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Camion pentru balonaşe MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Camion pentru balonaşe Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Camion pentru balonaşe Wizzowow STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Tanc petrolier MPS STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Tanc petrolier CS-Inc. STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Feribot de călători MPS STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Feribot de călători FFP STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Aeroglisor Bakewell 300 STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Feribot de călători Chugger-Chug STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Feribot de călători Shivershake STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Navă de marfă Yate STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Navă de marfă Bakewell STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navă de marfă MightyMover STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Navă de marfă Powernaut STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Elicopter Tricario STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Elicopter Guru X2 STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Elicopter Powernaut ##id 0x8800 # Formatting of some strings STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} STR_FORMAT_BUOY_NAME :{TOWN} Baliza STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Baliza #{COMMA} STR_FORMAT_COMPANY_NUM :(Companie {COMMA}) STR_FORMAT_GROUP_NAME :Grup {COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} STR_FORMAT_WAYPOINT_NAME :Halta {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Halta {TOWN} #{COMMA} STR_FORMAT_DEPOT_NAME_TRAIN :Depou trenuri {TOWN} STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Depou trenuri #{COMMA} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Depou vehicule {TOWN} STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Depou autovehicule #{COMMA} STR_FORMAT_DEPOT_NAME_SHIP :Depou nave {TOWN} STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Depou nave #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar STR_UNKNOWN_STATION :staţie necunoscută STR_DEFAULT_SIGN_NAME :Semn STR_COMPANY_SOMEONE :cineva STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} STR_SAVEGAME_NAME_SPECTATOR :Spectator, {1:STRING} # Viewport strings STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) STR_VIEWPORT_TOWN :{WHITE}{TOWN} STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} STR_VIEWPORT_WAYPOINT :{WAYPOINT} STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} # Simple strings to get specific types of data STR_COMPANY_NAME :{COMPANY} STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} STR_DEPOT_NAME :{DEPOT} STR_ENGINE_NAME :{ENGINE} STR_GROUP_NAME :{GROUP} STR_INDUSTRY_NAME :{INDUSTRY} STR_PRESIDENT_NAME :{PRESIDENT_NAME} STR_SIGN_NAME :{SIGN} STR_STATION_NAME :{STATION} STR_TOWN_NAME :{TOWN} STR_VEHICLE_NAME :{VEHICLE} STR_WAYPOINT_NAME :{WAYPOINT} STR_JUST_CARGO :{CARGO_LONG} STR_JUST_CHECKMARK :{CHECKMARK} STR_JUST_COMMA :{COMMA} STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} STR_JUST_CARGO_LIST :{CARGO_LIST} STR_JUST_INT :{NUM} STR_JUST_DATE_TINY :{DATE_TINY} STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} # Slightly 'raw' stringcodes with colour or size STR_BLACK_COMMA :{BLACK}{COMMA} STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} STR_TINY_COMMA :{TINY_FONT}{COMMA} STR_BLUE_COMMA :{BLUE}{COMMA} STR_RED_COMMA :{RED}{COMMA} STR_WHITE_COMMA :{WHITE}{COMMA} STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} STR_BLACK_CROSS :{BLACK}{CROSS} STR_SILVER_CROSS :{SILVER}{CROSS} STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} STR_TINY_GROUP :{TINY_FONT}{GROUP} STR_BLACK_INT :{BLACK}{NUM} STR_ORANGE_INT :{ORANGE}{NUM} STR_WHITE_SIGN :{WHITE}{SIGN} STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} STR_BLACK_STRING :{BLACK}{STRING} STR_BLACK_RAW_STRING :{BLACK}{STRING} STR_GREEN_STRING :{GREEN}{STRING} STR_ORANGE_STRING :{ORANGE}{STRING} STR_RED_STRING :{RED}{STRING} STR_LTBLUE_STRING :{LTBLUE}{STRING} STR_WHITE_STRING :{WHITE}{STRING} STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} STR_BLACK_1 :{BLACK}1 STR_BLACK_2 :{BLACK}2 STR_BLACK_3 :{BLACK}3 STR_BLACK_4 :{BLACK}4 STR_BLACK_5 :{BLACK}5 STR_BLACK_6 :{BLACK}6 STR_BLACK_7 :{BLACK}7 STR_TRAIN :{BLACK}{TRAIN} STR_BUS :{BLACK}{BUS} STR_LORRY :{BLACK}{LORRY} STR_PLANE :{BLACK}{PLANE} STR_SHIP :{BLACK}{SHIP} STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) openttd-1.3.3/src/lang/latvian.txt0000644000000000000000000146116412246102561015614 0ustar rootroot##name Latvian ##ownname Latviešu ##isocode lv_LV ##plural 3 ##textdir ltr ##digitsep . ##digitsepcur . ##decimalsep , ##winlangid 0x0426 ##grflangid 0x2a ##gender m f ##case kas # $Id: latvian.txt 26031 2013-11-17 17:30:42Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ##id 0x0000 STR_NULL : STR_EMPTY : STR_UNDEFINED :(nedefinēta virkne) STR_JUST_NOTHING :Neko # Cargo related strings # Plural cargo name STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :Pasažieri STR_CARGO_PLURAL_COAL :Ogles STR_CARGO_PLURAL_MAIL :Pasts STR_CARGO_PLURAL_OIL :Nafta STR_CARGO_PLURAL_LIVESTOCK :Mājlopi STR_CARGO_PLURAL_GOODS :Preces STR_CARGO_PLURAL_GRAIN :Graudi STR_CARGO_PLURAL_WOOD :Koksne STR_CARGO_PLURAL_IRON_ORE :Dzelzsrūda STR_CARGO_PLURAL_STEEL :Tērauds STR_CARGO_PLURAL_VALUABLES :Vērtslietas STR_CARGO_PLURAL_COPPER_ORE :Vara rūda STR_CARGO_PLURAL_MAIZE :Kukurūza STR_CARGO_PLURAL_FRUIT :Augļi STR_CARGO_PLURAL_DIAMONDS :Dimanti STR_CARGO_PLURAL_FOOD :Pārtika STR_CARGO_PLURAL_PAPER :Papīrs STR_CARGO_PLURAL_GOLD :Zelts STR_CARGO_PLURAL_WATER :Ūdens STR_CARGO_PLURAL_WHEAT :Kvieši STR_CARGO_PLURAL_RUBBER :Kaučuks STR_CARGO_PLURAL_SUGAR :Cukurs STR_CARGO_PLURAL_TOYS :Rotaļlietas STR_CARGO_PLURAL_CANDY :Saldumi STR_CARGO_PLURAL_COLA :Kola STR_CARGO_PLURAL_COTTON_CANDY :Cukurvate STR_CARGO_PLURAL_BUBBLES :Burbuļi STR_CARGO_PLURAL_TOFFEE :Īriss STR_CARGO_PLURAL_BATTERIES :Baterijas STR_CARGO_PLURAL_PLASTIC :Plastmasas STR_CARGO_PLURAL_FIZZY_DRINKS :Limonādes # Singular cargo name STR_CARGO_SINGULAR_NOTHING : STR_CARGO_SINGULAR_PASSENGER :Pasažieris STR_CARGO_SINGULAR_COAL :Ogles STR_CARGO_SINGULAR_MAIL :Pasts STR_CARGO_SINGULAR_OIL :Nafta STR_CARGO_SINGULAR_LIVESTOCK :Mājlopi STR_CARGO_SINGULAR_GOODS :Preces STR_CARGO_SINGULAR_GRAIN :Graudi STR_CARGO_SINGULAR_WOOD :Koksne STR_CARGO_SINGULAR_IRON_ORE :Dzelzsrūda STR_CARGO_SINGULAR_STEEL :Tērauds STR_CARGO_SINGULAR_VALUABLES :Vērtslietas STR_CARGO_SINGULAR_COPPER_ORE :Vara rūda STR_CARGO_SINGULAR_MAIZE :Kukurūza STR_CARGO_SINGULAR_FRUIT :Augļi STR_CARGO_SINGULAR_DIAMOND :Dimants STR_CARGO_SINGULAR_FOOD :Pārtika STR_CARGO_SINGULAR_PAPER :Papīrs STR_CARGO_SINGULAR_GOLD :Zelts STR_CARGO_SINGULAR_WATER :Ūdens STR_CARGO_SINGULAR_WHEAT :Kvieši STR_CARGO_SINGULAR_RUBBER :Kaučuks STR_CARGO_SINGULAR_SUGAR :Cukurs STR_CARGO_SINGULAR_TOY :Rotaļlieta STR_CARGO_SINGULAR_CANDY :Saldumi STR_CARGO_SINGULAR_COLA :Kola STR_CARGO_SINGULAR_COTTON_CANDY :Cukurvate STR_CARGO_SINGULAR_BUBBLE :Burbuļi STR_CARGO_SINGULAR_TOFFEE :Īriss STR_CARGO_SINGULAR_BATTERY :Baterijas STR_CARGO_SINGULAR_PLASTIC :Plastmasa STR_CARGO_SINGULAR_FIZZY_DRINK :Limonāde # Quantity of cargo STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA} pasažier{P is i u} STR_QUANTITY_COAL :{WEIGHT_LONG} ogļu STR_QUANTITY_MAIL :{COMMA} pasta mais{P s i u} STR_QUANTITY_OIL :{VOLUME_LONG} naftas STR_QUANTITY_LIVESTOCK :{COMMA} mājlop{P s i u} STR_QUANTITY_GOODS :{COMMA} preču kast{P e es u} STR_QUANTITY_GRAIN :{WEIGHT_LONG} graudu STR_QUANTITY_WOOD :{WEIGHT_LONG} kokmateriālu STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} dzelzsrūdas STR_QUANTITY_STEEL :{WEIGHT_LONG} tērauda STR_QUANTITY_VALUABLES :{COMMA} mais{P s i u} ar vērtslietām STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} vara rūdas STR_QUANTITY_MAIZE :{WEIGHT_LONG} kukurūzas STR_QUANTITY_FRUIT :{WEIGHT_LONG} augļu STR_QUANTITY_DIAMONDS :{COMMA} maisi ar dimantiem STR_QUANTITY_FOOD :{WEIGHT_LONG} pārtikas preču STR_QUANTITY_PAPER :{WEIGHT_LONG} papīra STR_QUANTITY_GOLD :{COMMA} zelta mais{P s i u} STR_QUANTITY_WATER :{VOLUME_LONG} ūdens STR_QUANTITY_WHEAT :{WEIGHT_LONG} kviešu STR_QUANTITY_RUBBER :{VOLUME_LONG} kaučuka STR_QUANTITY_SUGAR :{WEIGHT_LONG} cukura STR_QUANTITY_TOYS :{COMMA} rotaļliet{P a as u} STR_QUANTITY_SWEETS :{COMMA} saldumu mais{P s i u} STR_QUANTITY_COLA :{VOLUME_LONG} kolas STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} cukurvates STR_QUANTITY_BUBBLES :{COMMA} burbu{P lis ļi ļu} STR_QUANTITY_TOFFEE :{WEIGHT_LONG} īrisa konfekšu STR_QUANTITY_BATTERIES :{COMMA} baterij{P a as u} STR_QUANTITY_PLASTIC :{VOLUME_LONG} plastmasu STR_QUANTITY_FIZZY_DRINKS :{COMMA} limonād{P e s žu} STR_QUANTITY_N_A :nav informācijas # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}PA STR_ABBREV_COAL :{TINY_FONT}OG STR_ABBREV_MAIL :{TINY_FONT}PT STR_ABBREV_OIL :{TINY_FONT}NF STR_ABBREV_LIVESTOCK :{TINY_FONT}LL STR_ABBREV_GOODS :{TINY_FONT}PR STR_ABBREV_GRAIN :{TINY_FONT}GR STR_ABBREV_WOOD :{TINY_FONT}KM STR_ABBREV_IRON_ORE :{TINY_FONT}DZ STR_ABBREV_STEEL :{TINY_FONT}TR STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}VR STR_ABBREV_MAIZE :{TINY_FONT}KU STR_ABBREV_FRUIT :{TINY_FONT}AU STR_ABBREV_DIAMONDS :{TINY_FONT}DM STR_ABBREV_FOOD :{TINY_FONT}PP STR_ABBREV_PAPER :{TINY_FONT}PR STR_ABBREV_GOLD :{TINY_FONT}ZE STR_ABBREV_WATER :{TINY_FONT}ŪD STR_ABBREV_WHEAT :{TINY_FONT}KV STR_ABBREV_RUBBER :{TINY_FONT}KČ STR_ABBREV_SUGAR :{TINY_FONT}CU STR_ABBREV_TOYS :{TINY_FONT}RT STR_ABBREV_SWEETS :{TINY_FONT}SA STR_ABBREV_COLA :{TINY_FONT}KO STR_ABBREV_CANDYFLOSS :{TINY_FONT}CV STR_ABBREV_BUBBLES :{TINY_FONT}BB STR_ABBREV_TOFFEE :{TINY_FONT}CP STR_ABBREV_BATTERIES :{TINY_FONT}BT STR_ABBREV_PLASTIC :{TINY_FONT}PL STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}LM STR_ABBREV_NONE :{TINY_FONT}NAV STR_ABBREV_ALL :{TINY_FONT}VISI # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA} pasažier{P is i u} STR_BAGS :{COMMA} mais{P s i u} STR_TONS :{COMMA} tonn{P a as u} STR_LITERS :{COMMA} litr{P s i u} STR_ITEMS :{COMMA} vienīb{P a as u} STR_CRATES :{COMMA} kast{P e es u} # Colours, do not shuffle STR_COLOUR_DARK_BLUE :Tumši zila STR_COLOUR_PALE_GREEN :Gaiši zaļa STR_COLOUR_PINK :Sārta STR_COLOUR_YELLOW :Dzeltena STR_COLOUR_RED :Sarkana STR_COLOUR_LIGHT_BLUE :Gaiši zila STR_COLOUR_GREEN :Zaļa STR_COLOUR_DARK_GREEN :Tumši zaļa STR_COLOUR_BLUE :Zila STR_COLOUR_CREAM :Krēmkrāsa STR_COLOUR_MAUVE :Gaišsārti violeta STR_COLOUR_PURPLE :Purpura STR_COLOUR_ORANGE :Oranža STR_COLOUR_BROWN :Brūna STR_COLOUR_GREY :Pelēka STR_COLOUR_WHITE :Balta # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA} jūdzes stundā STR_UNITS_VELOCITY_METRIC :{COMMA} km/h STR_UNITS_VELOCITY_SI :{COMMA} m/s STR_UNITS_POWER_IMPERIAL :{COMMA} ZS STR_UNITS_POWER_METRIC :{COMMA} ZS STR_UNITS_POWER_SI :{COMMA} kW STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn{P a as u} STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litr{P s i u} STR_UNITS_VOLUME_LONG_SI :{COMMA} m³ STR_UNITS_FORCE_SI :{COMMA} kN STR_UNITS_HEIGHT_IMPERIAL :{COMMA} pēdas STR_UNITS_HEIGHT_SI :{COMMA} m # Common window strings STR_LIST_FILTER_TITLE :{BLACK}Filtra virkne: STR_LIST_FILTER_OSKTITLE :{BLACK}Ievadīt filtra virkni STR_LIST_FILTER_TOOLTIP :{BLACK}Ievadīt atslēgvārdu, lai filtrētu sarakstu STR_TOOLTIP_SORT_ORDER :{BLACK}Izvēlēties kārtošanas secību (dilstoša/augoša) STR_TOOLTIP_SORT_CRITERIA :{BLACK}Izvēlēties kārtošanas pazīmes STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Izvēlēties filtrēšanas pazīmes STR_BUTTON_SORT_BY :{BLACK}Kārtot pēc STR_BUTTON_LOCATION :{BLACK}Atrašanās vieta STR_BUTTON_RENAME :{BLACK}Pārdēvēt STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Aizvērt logu STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Loga virsraksts - vilkt to, lai pārvietotu logu STR_TOOLTIP_SHADE :{BLACK}Aizēnot logu - rādīt tikai virsrakstu STR_TOOLTIP_DEBUG :{BLACK}Rādīt NewGRF atkļūdošanas informāciju STR_TOOLTIP_STICKY :{BLACK}Atzīmēt šo logu kā neaizveramu ar "Aizvērt visus logus" taustiņu STR_TOOLTIP_RESIZE :{BLACK}Klikšķināt un vilkt, lai mainītu šī loga lielumu STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pārslēgties starp lielu/mazu loga izmēru STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Ritjosla - ritina sarakstu augšup/lejup STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Ritjosla - ritina sarakstu pa kreisi/pa labi STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Nojaukt celtnes u.c. objektus no zemes platības. Ctrl iezīmē diagonālu laukumu. Shift pārslēdz nojaukšanu/izmaksu tāmes attēlošanu # Query window STR_BUTTON_DEFAULT :{BLACK}Noklusējums STR_BUTTON_CANCEL :{BLACK}Atcelt STR_BUTTON_OK :{BLACK}Labi # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Garums: {NUM} STR_MEASURE_AREA :{BLACK}Laukums: {NUM} x {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Garums: {NUM}{}Augstuma atšķirība: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Laukums: {NUM} x {NUM}{}Augstuma atšķirība: {HEIGHT} # These are used in buttons STR_SORT_BY_CAPTION_POPULATION :{BLACK}Iedzīvotāju skaits STR_SORT_BY_CAPTION_NAME :{BLACK}Nosaukums STR_SORT_BY_CAPTION_DATE :{BLACK}Datums # These are used in dropdowns STR_SORT_BY_NAME :nosaukuma STR_SORT_BY_PRODUCTION :ražojumiem STR_SORT_BY_TYPE :veida STR_SORT_BY_TRANSPORTED :pārvadājuma STR_SORT_BY_NUMBER :numura STR_SORT_BY_PROFIT_LAST_YEAR :peļņas pērn STR_SORT_BY_PROFIT_THIS_YEAR :peļņas šogad STR_SORT_BY_AGE :vecuma STR_SORT_BY_RELIABILITY :uzticamības STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :kravu veidu kopējās ietilpības STR_SORT_BY_MAX_SPEED :maksimālā ātruma STR_SORT_BY_MODEL :modeļa STR_SORT_BY_VALUE :vērtības STR_SORT_BY_LENGTH :garuma STR_SORT_BY_LIFE_TIME :atlikušā kalpošanas laika STR_SORT_BY_TIMETABLE_DELAY :saraksta kavējuma STR_SORT_BY_FACILITY :stacijas veida STR_SORT_BY_WAITING :gaidošās kravas vērtības STR_SORT_BY_RATING_MAX :augstākā kravu vērtējuma STR_SORT_BY_RATING_MIN :zemākā kravu vērtējuma STR_SORT_BY_ENGINE_ID :dzinēja ID (klasiskais veids) STR_SORT_BY_COST :izmaksas STR_SORT_BY_POWER :jaudas STR_SORT_BY_TRACTIVE_EFFORT :vilcējspēka STR_SORT_BY_INTRO_DATE :ieviešanas datuma STR_SORT_BY_RUNNING_COST :kārtējām izmaksām STR_SORT_BY_POWER_VS_RUNNING_COST :jaudas/kārtējām izmaksām STR_SORT_BY_CARGO_CAPACITY :kravnesības STR_SORT_BY_RANGE :apgabala # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzēt spēli STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Paātrināta spēle STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opcijas STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Saglabāt spēli, pamest spēli, iziet STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Rādīt karti, papildu skatvietu vai zīmju sarakstu STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Rādīt pilsētu sarakstu STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Rādīt subsīdijas STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Rādīt uzņēmuma staciju sarakstu STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Rādīt uzņēmuma finanšu stāvokli STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Rādīt uzņēmuma vispārējo informāciju STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Rādīt diagrammas STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Rādīt uzņēmumu rangu sarakstu STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansēt jaunas ražotnes būvniecību vai uzskaitīt visas ražotnes STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Rādīt uzņēmuma vilcienu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Rādīt uzņēmuma autotransporta sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Rādīt uzņēmuma kuģu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Rādīt uzņēmuma lidaparātu sarakstu. Ctrl+klikšķis pārslēdz grupu/transportlīdzekļu saraksta atvēršanu STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Tuvināt skatu STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Tālināt skatu STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliežu ceļu STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Būvēt ceļus STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Būvēt kuģu piestātnes STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Būvēt lidostas STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Atvērt ainavas rīkjoslu, lai paceltu/nolaistu zemes līmeni, stādītu kokus utt. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Rādīt skaņas/mūzikas logu STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Rādīt pēdējos ziņojumus/avīžu ziņas, ziņojumu rādīšanas opcijas STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Informācija par zemes platību, konsole, skriptu atkļūdošana, ekrānuzņēmumi, par OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Pārslēgt rīkjoslas # Extra tooltips for the scenario editor toolbar STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Saglabāt scenāriju, ielādēt scenāriju, pamest scenāriju redaktoru, iziet STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}scenāriju redaktors STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Pārvietot sākuma datumu 1 gadu atpakaļ STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Pārvietot sākuma datumu 1 gadu uz priekšu STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klikšķināt, lai ievadītu sākuma gadu STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Rādīt karti, pilsētu sarakstu STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Ainavas radīšana STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Pilsētu radīšana STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Ražotņu radīšana STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Ceļu būvēšana STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Stādīt kokus. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Novietot zīmi STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Novietot objektu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu ############ range for SE file menu starts STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Saglabāt scenāriju STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Ielādēt scenāriju STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Saglabāt augstumu karti STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Ielādēt augstumu karti STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Pamest scenāriju redaktoru STR_SCENEDIT_FILE_MENU_SEPARATOR : STR_SCENEDIT_FILE_MENU_QUIT :Iziet ############ range for SE file menu starts ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Spēles opcijas STR_SETTINGS_MENU_CONFIG_SETTINGS :Papildu iestatījumi STR_SETTINGS_MENU_SCRIPT_SETTINGS :MI/spēles skriptu iestatījumi STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF iestatījumi STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Caurspīdības opcijas STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Rādīt pilsētu nosaukumus STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Rādīt staciju nosaukumus STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Rādīt pieturas punktu nosaukumus STR_SETTINGS_MENU_SIGNS_DISPLAYED :Rādīt zīmes STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Rādīt sāncenšu zīmes un nosaukumus STR_SETTINGS_MENU_FULL_ANIMATION :Pilna animācija STR_SETTINGS_MENU_FULL_DETAIL :Visas detaļas STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Caurspīdīgas ēkas STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Caurspīdīgas zīmes ############ range ends here ############ range for file menu starts STR_FILE_MENU_SAVE_GAME :Saglabāt spēli STR_FILE_MENU_LOAD_GAME :Ielādēt spēli STR_FILE_MENU_QUIT_GAME :Pamest spēli STR_FILE_MENU_SEPARATOR : STR_FILE_MENU_EXIT :Iziet ############ range ends here # map menu STR_MAP_MENU_MAP_OF_WORLD :Pasaules karte STR_MAP_MENU_EXTRA_VIEW_PORT :Papildu skatvieta STR_MAP_MENU_SIGN_LIST :Zīmju saraksts ############ range for town menu starts STR_TOWN_MENU_TOWN_DIRECTORY :Pilsētu saraksts STR_TOWN_MENU_FOUND_TOWN :Dibināt pilsētu ############ range ends here ############ range for subsidies menu starts STR_SUBSIDIES_MENU_SUBSIDIES :Subsīdijas STR_SUBSIDIES_MENU_GOAL :Kārtējie mērķi ############ range ends here ############ range for graph menu starts STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Darbības peļņas diagramma STR_GRAPH_MENU_INCOME_GRAPH :Ienākumu diagramma STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Piegādāto kravu diagramma STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Uzņēmējdarbības vēstures diagramma STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Uzņēmuma vērtības diagramma STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Kravas apmaksas cenas ############ range ends here ############ range for company league menu starts STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Uzņēmumu rangu saraksts STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Detalizēts uzņēmējdarbības vērtējums STR_GRAPH_MENU_HIGHSCORE :Sasniegumu tabula ############ range ends here ############ range for industry menu starts STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Ražotņu saraksts STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Ražotņu ķēdes STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Finansēt jaunu ražotni ############ range ends here ############ range for railway construction menu starts STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Dzelzceļa būvniecība STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrificētā dzelzceļa būvniecība STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Viensliedes būvniecība STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Magleva būvniecība ############ range ends here ############ range for road construction menu starts STR_ROAD_MENU_ROAD_CONSTRUCTION :Ceļu būvēšana STR_ROAD_MENU_TRAM_CONSTRUCTION :Tramvaju ceļa būvniecība ############ range ends here ############ range for waterways construction menu starts STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Ūdensceļu būvniecība ############ range ends here ############ range for airport construction menu starts STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Lidostas būvniecība ############ range ends here ############ range for landscaping menu starts STR_LANDSCAPING_MENU_LANDSCAPING :Ainavas veidošana STR_LANDSCAPING_MENU_PLANT_TREES :Stādīt kokus STR_LANDSCAPING_MENU_PLACE_SIGN :Novietot zīmi ############ range ends here ############ range for music menu starts STR_TOOLBAR_SOUND_MUSIC :Skaņa/mūzika ############ range ends here ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Pēdējais ziņojums/avīzes raksts STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Ziņojumu vēsture ############ range ends here ############ range for about menu starts STR_ABOUT_MENU_LAND_BLOCK_INFO :Zemes platības informācija STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :Atvērt/aizvērt konsoli STR_ABOUT_MENU_AI_DEBUG :MI/spēles skriptu atkļūdošana STR_ABOUT_MENU_SCREENSHOT :Ekrānuzņēmums STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Pilnībā tuvināts ekrānuzņēmums STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Noklusējuma mēroga ekrānuzņēmums STR_ABOUT_MENU_GIANT_SCREENSHOT :Visas kartes ekrānuzņēmums STR_ABOUT_MENU_ABOUT_OPENTTD :Par 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Gariņu līdzinātājs STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Pārslēgt saistītās kastes STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Pārslēgt netīru bloku krāsojumu ############ range ends here ############ range for days starts (also used for the place in the highscore window) STR_ORDINAL_NUMBER_1ST :1. STR_ORDINAL_NUMBER_2ND :2. STR_ORDINAL_NUMBER_3RD :3. STR_ORDINAL_NUMBER_4TH :4. STR_ORDINAL_NUMBER_5TH :5. STR_ORDINAL_NUMBER_6TH :6. STR_ORDINAL_NUMBER_7TH :7. STR_ORDINAL_NUMBER_8TH :8. STR_ORDINAL_NUMBER_9TH :9. STR_ORDINAL_NUMBER_10TH :10. STR_ORDINAL_NUMBER_11TH :11. STR_ORDINAL_NUMBER_12TH :12. STR_ORDINAL_NUMBER_13TH :13. STR_ORDINAL_NUMBER_14TH :14. STR_ORDINAL_NUMBER_15TH :15. STR_ORDINAL_NUMBER_16TH :16. STR_ORDINAL_NUMBER_17TH :17. STR_ORDINAL_NUMBER_18TH :18. STR_ORDINAL_NUMBER_19TH :19. STR_ORDINAL_NUMBER_20TH :20. STR_ORDINAL_NUMBER_21ST :21. STR_ORDINAL_NUMBER_22ND :22. STR_ORDINAL_NUMBER_23RD :23. STR_ORDINAL_NUMBER_24TH :24. STR_ORDINAL_NUMBER_25TH :25. STR_ORDINAL_NUMBER_26TH :26. STR_ORDINAL_NUMBER_27TH :27. STR_ORDINAL_NUMBER_28TH :28. STR_ORDINAL_NUMBER_29TH :29. STR_ORDINAL_NUMBER_30TH :30. STR_ORDINAL_NUMBER_31ST :31. ############ range for days ends ############ range for months starts STR_MONTH_ABBREV_JAN :Jan STR_MONTH_ABBREV_FEB :Feb STR_MONTH_ABBREV_MAR :Mar STR_MONTH_ABBREV_APR :Apr STR_MONTH_ABBREV_MAY :Mai STR_MONTH_ABBREV_JUN :Jūn STR_MONTH_ABBREV_JUL :Jūl STR_MONTH_ABBREV_AUG :Aug STR_MONTH_ABBREV_SEP :Sep STR_MONTH_ABBREV_OCT :Okt STR_MONTH_ABBREV_NOV :Nov STR_MONTH_ABBREV_DEC :Dec STR_MONTH_JAN :Janvāris STR_MONTH_FEB :Februāris STR_MONTH_MAR :Marts STR_MONTH_APR :Aprīlis STR_MONTH_MAY :Maijs STR_MONTH_JUN :Jūnijs STR_MONTH_JUL :Jūlijs STR_MONTH_AUG :Augusts STR_MONTH_SEP :Septembris STR_MONTH_OCT :Oktobris STR_MONTH_NOV :Novembris STR_MONTH_DEC :Decembris ############ range for months ends # Graph window STR_GRAPH_KEY_BUTTON :{BLACK}Leģenda STR_GRAPH_KEY_TOOLTIP :{BLACK}Diagrammās rādīt leģendas STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Darbības peļņas diagramma STR_GRAPH_INCOME_CAPTION :{WHITE}Ienākumu diagramma STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Pārvadātās kravas vienības STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Uzņēmuma darbības vērtējumi (maksimālais ir 1000) STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Uzņēmuma vērtības STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Kravas apmaksas cenas STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dienas pārvadājumos STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Izmaksas par 10 vienību (vai 10,000 litru) kravas pārvadāšanu par 20mit lauciņiem STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Iespējot visu STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Atspējot visu STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Rādīt visas kravas samaksu salīdzināšanas diagrammā STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Nerādīt nevienu kravu samaksu salīdzināšanas diagrammā STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Ieslēgt/izslēgt kravu veidu diagrammu STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Rādīt detalizētus uzņēmējdarbības vērtējumus # Graph key window STR_GRAPH_KEY_CAPTION :{WHITE}Leģendas uzņēmumu diagrammās STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Klikšķināt šeit, lai izslēgtu/ieslēgtu uzņēmuma iekļaušanu diagrammā # Company league window STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Uzņēmumu rangu saraksts STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inženieris STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Satiksmes vadītājs STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Pārvadājumu koordinators STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Maršrutu uzraugs STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direktors STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Rīkotājdirektors STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Priekšsēdētājs STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Prezidents STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnāts # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detalizēts uzņēmējdarbības vērtējums STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalizēti STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Apskatīt šā uzņēmuma informāciju ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Transportlīdzekļi: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stacijas: STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. pelņa STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. ienākumi: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. ienākumi: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Piegādāts: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Krava: STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Nauda: STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Aizdevums: STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Kopā: ############ End of order list STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Transportlīdzekļi, kuri iepriekšējā gadā ir nesuši peļņu. Ietver autotransporta līdzekļus, vilcienus, kuģus un lidaparātus STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Nesen apkalpoto staciju skaits. Dzelzceļa stacijas, autoostas, lidostas un tamlīdzīgas tiek skaitītas kā atsevišķas, pat ja tās ir savienotas kā viena stacija STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Transportlīdzekļa, kuram ir mazākie ienākumi, peļņa (ņemti vērā tikai transportlīdzekļi, kuri vecāki par 2 gadiem) STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Nopelnītās naudas daudzums ceturksnī ar vismazāko peļņu pēdējos 12 ceturkšņos STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Nopelnītās naudas daudzums ceturksnī ar vislielāko peļņu pēdējos 12 ceturkšņos STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Kravu vienības , kas piegādātas pēdējos četros ceturkšņos STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Kravu veidu daudzums, kas piegādāti pēdējā ceturksnī STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Šā uzņēmuma naudas daudzums bankā STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Naudas daudzums, ko šis uzņēmums ir aizņēmies STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Iespējamie punkti kopā # Music window STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}Džeza mūzikas automāts STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Visi STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Vecā stila STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Jaunā stila STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy ielas STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Pielāgotā 1 STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Pielāgotā 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Mūzikas skaļums STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Efektu skaļums STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAKS STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Celiņš STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Nosaukums STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Sajaukt STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programma STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Pārlekt uz iepriekšējo celiņu STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Pārlekt uz nākamo celiņu STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Apturēt mūzikas atskaņošanu STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Sākt mūzikas atskaņošanu STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Bīdīt slīdņus, lai mainītu mūzikas un skaņas efektu skaļumu STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Izvēlēties programmu 'visi celiņi' STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Izvēlēties programmu 'vecā stila mūzika' STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Izvēlēties programmu 'jaunā stila mūzika' STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Izvēlēties programmu 'Ezy Ielas stila mūzika' STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Izvēlēties programmu 'Pielāgotā 1' (lietotāja sastādīto) STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Izvēlēties programmu 'Pielāgotā 2' (lietotāja sastādīto) STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ieslēgt/izslēgt mūzikas saraksta jaukšanu STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Rādīt mūzikas celiņu atlases logu STR_ERROR_NO_SONGS :{WHITE}Izvēlēts komplekts bez mūzikas. Mūzika netiks atskaņota # Playlist window STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Mūzikas programmas izvēle STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Celiņu rādītājs STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programma - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Notīrīt STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Dzēst pašreizējo programmu (tikai Pielāgoto 1 vai Pielāgoto 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikšķināt uz mūzikas celiņa, lai to pievienotu pašreizējai programmai (tikai Pielāgotā 1 vai Pielāgotā 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikšķināt uz mūzikas celiņa, lai to izdzēstu no pašreizējās programmas (tikai Pielāgotā1 un Pielāgotā2) # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Labākie uzņēmumi, kuri sasnieguši {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Uzņēmumu rangu sarakstā {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Darījumu cilvēks STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Uzņēmējs STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industriālists STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Kapitālists STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Magnāts STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Moguls STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Gadsimta biržas magnāts STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} sasniedzis '{STRING}' stāvokli! STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} no {COMPANY} sasnieguši '{STRING}' stāvokli! # Smallmap window STR_SMALLMAP_CAPTION :{WHITE}Karte - {STRING} STR_SMALLMAP_TYPE_CONTOURS :kontūras STR_SMALLMAP_TYPE_VEHICLES :transportlīdzekļi STR_SMALLMAP_TYPE_INDUSTRIES :ražotnes STR_SMALLMAP_TYPE_ROUTES :maršruti STR_SMALLMAP_TYPE_VEGETATION :augu valsts STR_SMALLMAP_TYPE_OWNERS :īpašnieki STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Rādīt zemes kontūras uz kartes STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Rādīt transportlīdzekļus uz kartes STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Rādīt ražotnes uz kartes STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Rādīt pārvadājumu maršrutus uz kartes STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Rādīt augu valsti uz kartes STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Rādīt zemes īpašniekus uz kartes STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikšķināt uz rūpnīcas veida, lai pārslēgtu tā atainošanu. Ctrl+klikšķis atslēdz visas rūpnīcas, izņemot izvēlēto veidu. Atkārtots Ctrl+klikšķis uz tā ieslēgs visus rūpnīcu veidus STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikšķināt uz uzņēmuma, lai pārslēgtu tā īpašumu attēlošanu. Ctrl+klikšķis atslēdz visus uzņēmumus, izņemot izvēlēto. Atkārtots Ctrl+klikšķis uz tā ieslēgs visus uzņēmumus STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Ceļi STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Dzelzsceļi STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stacijas/lidostas/piestātnes STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Celtnes/ražotnes STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Transportlīdzekļi STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Vilcieni STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Autotransporta līdzekļi STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Kuģi STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Lidaparāti STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Pārvadājumu maršruti STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Mežs STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Dzelzsceļa stacija STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Kravas automobiļu iekrautuve STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Autobusa stacija STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Lidosta/Helikopteru osta STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Piestātne STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Nelīdzena zeme STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Zālāju zeme STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Kaila zeme STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Lauki STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Koki STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Akmeņi STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Ūdens STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Nav īpašnieka STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Pilsētas STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Ražotnes STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Tuksnesis STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sniegs STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Rādīt/nerādīt pilsētu nosaukumus uz kartes STR_SMALLMAP_CENTER :{BLACK}Centrēt minikarti uz pašreizējo pozīciju STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} STR_SMALLMAP_DISABLE_ALL :{BLACK}Atspējot visu STR_SMALLMAP_ENABLE_ALL :{BLACK}Iespējot visu STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Rādīt augstumu STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Nerādīt uz kartes ražotnes STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Rādīt uz kartes visas ražotnes STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Pārslēgt augstumu kartes attēlošanu STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Nerādīt neviena uzņēmuma īpašumus uz kartes STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Rādīt visu uzņēmumu īpašumus uz kartes # Status bar messages STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Rādīt pēdējo ziņojumu vai avīzes rakstu STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZE * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOMĀTISKĀ SAGLABĀŠANA STR_STATUSBAR_SAVING_GAME :{RED}* * SPĒLE TIEK SAGLABĀTA * * # News message history STR_MESSAGE_HISTORY :{WHITE}Ziņojumu vēsture STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Neseno ziņojumu saraksts STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} STR_NEWS_MESSAGE_CAPTION :{WHITE}Ziņojums STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmais vilciens ierodas {STATION}! STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmais autobuss ierodas {STATION}! STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmā kravas automašīna ierodas {STATION}! STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmais pasažieru tramvajs ierodas {STATION}! STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmais kravas tramvajs ierodas {STATION}! STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmais kuģis ierodas {STATION}! STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Pilsētnieki līksmo . . .{}Pirmais lidaparāts ierodas {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Vilciena avārija!{}Pēc sadursmei sekojoša sprādziena {COMMA} bojāgājušie STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Autotransporta līdzekļa avārija!{}Vadītājs mirst sprādzienā pēc sadursmes ar vilcienu STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Autotransporta līdzekļa avārija!{}{COMMA} mirst sprādzienā pēc sadursmes ar vilcienu STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Lidmašīna nogāzusies!{}{COMMA} iet bojā sprādzienā {STATION} STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Lidaparāta avārija!{}Lidaparātam beidzās degviela, {COMMA} bojāgājušie! STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Dirižabļa katastrofa {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Autotransporta līdzeklis ir gājis bojā sadursmē ar 'NLO'! STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Ir uzsprāgusi naftas pārstrādes rūpnīca netālu no {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Netālu no {TOWN} mīklainos apstākļos ir iznīcināta rūpnīca! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'NLO' nolaižas netālu no {TOWN}! STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Ogļu raktuves iebrukšana atstāj bojājumu joslu netālu no {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Plūdi!{}Vismaz {COMMA} pazuduši bez vēsts, iespējams gājuši bojā plūdos! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transporta uzņēmumam ir grūtības! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} tiks izpārdots vai pasludināts bankrots, ja tuvākajā laikā neuzlabosies tā darbības rādītāji! STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Transporta uzņēmumi apvienojas! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} tika pārdots {STRING} par {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Bankrots! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} kreditori slēdza un visi īpašumi tika izpārdoti! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Darbu sāk jauns transporta uzņēmums! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} sāk būvdarbus netālu no {TOWN}! STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} tiek pārņemts {STRING} izpildījumā! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(vadītājs) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} pabalstīja jaunas pilsētas - {TOWN} dibināšanu! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Tiek būvēta jauna {STRING} netālu no {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Jauns {STRING} tiek stādīts netālu no {TOWN}! STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} paziņo par tūlītēju darbības pārtraukšanu! STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}Piegādes problēmas {STRING} izraisa tūlītēju darbības pārtraukšanu! STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}Tuvumā esošu koku trūkums ir iemesls paziņojumam par draudošu {STRING} darbības slēgšanu! STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Eiropas naudas apvienība!{}{}Eiro ir ieviests, kā vienīgā valūta jūsu valstī! STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Krīze pasaulē!{}{}Finanšu eksperti ekonomikai paredz sliktākos attīstības scenārijus! STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Krīze ir beigusies!{}{}Tirdzniecības apjomu pieaugums dod pārliecību par ekonomikas nostiprināšanos! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} palielina ražošanas apjomu! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Atklāts jauns ogļu slānis {INDUSTRY}!{}Paredzams ogļu ieguves apjoma dubultošanās! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Atrastas jaunas naftas rezerves {INDUSTRY}!{}Paredzams naftas ieguves apjoma dubultošanās! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Uzlaboti zemkopības paņēmieni {INDUSTRY} divkārtīgi palielinās saražoto! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} {INDUSTRY} ražošanas apjoms palielinās par {COMMA}%! STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} saražotā apjoms samazinās par 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Kukaiņu uzbrukums {INDUSTRY}!{} Saražotā apjoms samazinās par 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} {INDUSTRY} ražošanas apjoms samazinās par {COMMA}%! STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} gaida depo STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} gaida depo STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} gaida depo STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} gaida aviācijas angārā # Start of order review system # DON'T ADD OR REMOVE LINES HERE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} sarakstā ir pārāk maz rīkojumu STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ir nederīgs maršruts STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ir divi vienādi maršruti STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} rīkojumā ir nederīga stacija # end of order system STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} pamazām noveco STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} ir kļuvis ļoti vecs STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} ir kļuvis ļoti vecs un tam steidzami nepieciešama nomaiņa STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} nevar atrast ceļu, lai turpinātu STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} ir apmaldījies STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} iepriekšējā gada peļņa bija {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} nevar doties uz nākamo galamērķi, jo tas ir ārpus apgabala STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} ir apstājies, jo neizdevās pasūtītā pielāgošana STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automātiskās atjaunošanas kļūda {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Tagad ir pieejams jauns {STRING}! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Tagad ir pieejams jauns {STRING}! - {ENGINE} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} vairs nepieņem {STRING} STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} vairs nepieņem {STRING} vai {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} pieņem {STRING} STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} pieņem {STRING} un {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsīdijas piedāvājums beidzies:{}{}{STRING} no {STRING} uz {STRING} subsidēšana ir atcelta STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidēšana atcelta:{}{}{STRING} pārvadājumi no {STRING} uz {STRING} turpmāk vairs netiek subsidēti STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsīdijas piedāvājums:{}{}Pirmais {STRING} pārvadātājs no {STRING} uz {STRING} vienu gadu saņems pašvaldības subsīdijas! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Pārvadājumu subsīdija piešķirta {STRING}!{}{}{STRING} pārvadājumi no {STRING} uz {STRING} saņems 50% piemaksu vienu gadu! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Pārvadājumu subsīdija piešķirta {STRING}!{}{}{STRING} pārvadājumi no {STRING} uz {STRING} saņems divkāršu samaksu vienu gadu! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Pārvadājumu subsīdija piešķirta {STRING}!{}{}{STRING} pārvadājumi no {STRING} uz {STRING} saņems trīskāršu samaksu vienu gadu! STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Pārvadājumu subsīdija piešķirta {STRING}!{}{}{STRING} pārvadājumi no {STRING} uz {STRING} saņems četrkāršu samaksu vienu gadu! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Satiksmes haoss {TOWN}!{}{}{STRING} apmaksātie ielu pārbūves darbi rada vājprātu uz ielām pusgada garumā! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Pārvadājumu monopols! STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN} vietējā pašvaldība panāk vienošanos ar {STRING} par pārvadājumu izņēmuma tiesībām uz vienu gadu! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Skatvieta {COMMA} STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopēt uz skatvietu STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopēt galvenā skata atrašanās vietu uz šo skatvietu STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Kopēt no skatvietas STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Ielīmēt šīs skatvietas atrašanās vietu uz galveno skatu # Game options window STR_GAME_OPTIONS_CAPTION :{WHITE}Spēles opcijas STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Naudas vienības STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Naudas vienību izvēle ############ start of currency region STR_GAME_OPTIONS_CURRENCY_GBP :Lielbritānijas sterliņu mārciņas (GBP) STR_GAME_OPTIONS_CURRENCY_USD :ASV dolāri (USD) STR_GAME_OPTIONS_CURRENCY_EUR :Eiro (EUR) STR_GAME_OPTIONS_CURRENCY_JPY :Japānas jenas (JPY) STR_GAME_OPTIONS_CURRENCY_ATS :Austrijas šiliņi (ATS) STR_GAME_OPTIONS_CURRENCY_BEF :Beļģijas franki (BEF) STR_GAME_OPTIONS_CURRENCY_CHF :Šveices franki (CHF) STR_GAME_OPTIONS_CURRENCY_CZK :Čehijas kronas (CZK) STR_GAME_OPTIONS_CURRENCY_DEM :Vācijas markas (DEM) STR_GAME_OPTIONS_CURRENCY_DKK :Dānijas kronas (DKK) STR_GAME_OPTIONS_CURRENCY_ESP :Spānijas pesetas (ESP) STR_GAME_OPTIONS_CURRENCY_FIM :Somijas markas (FIM) STR_GAME_OPTIONS_CURRENCY_FRF :Francijas franki (FRF) STR_GAME_OPTIONS_CURRENCY_GRD :Grieķijas drahmas (GRD) STR_GAME_OPTIONS_CURRENCY_HUF :Ungārijas forinti (HUF) STR_GAME_OPTIONS_CURRENCY_ISK :Īslandes kronas (ISK) STR_GAME_OPTIONS_CURRENCY_ITL :Itālijas liras (ITL) STR_GAME_OPTIONS_CURRENCY_NLG :Nīderlandes guldeņi (NLG) STR_GAME_OPTIONS_CURRENCY_NOK :Norvēģijas kronas (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polijas zloti (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumānijas lejas (RON) STR_GAME_OPTIONS_CURRENCY_RUR :Krievijas rubļi (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovēnijas tolāri (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Zviedrijas kronas (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Turcijas liras (TRY) STR_GAME_OPTIONS_CURRENCY_SKK :Slovākijas kronas (SKK) STR_GAME_OPTIONS_CURRENCY_BRL :Brazīlijas reāli (BRL) STR_GAME_OPTIONS_CURRENCY_EEK :Igaunijas kronas (EEK) STR_GAME_OPTIONS_CURRENCY_LTL :Lietuvas liti (LTL) STR_GAME_OPTIONS_CURRENCY_KRW :Dienvidkorejas vonas (KRW) STR_GAME_OPTIONS_CURRENCY_ZAR :Dienvidāfrikas rendi (ZAR) STR_GAME_OPTIONS_CURRENCY_CUSTOM :Cita... ############ end of currency region STR_GAME_OPTIONS_MEASURING_UNITS_FRAME :{BLACK}Mērvienības STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP :{BLACK}Mērvienību izvēle ############ start of measuring units region STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL :Impērijas (Britu) STR_GAME_OPTIONS_MEASURING_UNITS_METRIC :Metriskās STR_GAME_OPTIONS_MEASURING_UNITS_SI :Starptautiskās (SI) ############ end of measuring units region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autotransporta līdzekļi STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Ceļa braucamās puses izvēle STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Brauc pa kreiso pusi STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Brauc pa labo pusi STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Pilsētu nosaukumi STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Pilsētu nosaukumu stila izvēle ############ start of townname region STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angļu (sākotnējie) STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Franču STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Vācu STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Angļu (papildu) STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latīņamerikāņu STR_GAME_OPTIONS_TOWN_NAME_SILLY :Muļķīgie STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Zviedru STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holandiešu STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Somu STR_GAME_OPTIONS_TOWN_NAME_POLISH :Poļu STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovāku STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norvēģu STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Ungāru STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austriešu STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Rumāņu STR_GAME_OPTIONS_TOWN_NAME_CZECH :Čehu STR_GAME_OPTIONS_TOWN_NAME_SWISS :Šveiciešu STR_GAME_OPTIONS_TOWN_NAME_DANISH :Dāņu STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turku STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Itāļu STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Kataloņu ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automātiskā saglabāšana STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Izvēlēties spēles automātiskās saglabāšanas starplaikus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Izslēgta STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Katru mēnesi STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Katrus 3 mēnešus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Katrus 6 mēnešus STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Katrus 12 mēnešus STR_GAME_OPTIONS_LANGUAGE :{BLACK}Valoda STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Saskarnes valodas izvēle STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pilnekrāna spēle STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Noklikšķināt uz šīs pogas, lai spēlētu pilnekrāna OpenTTD STR_GAME_OPTIONS_RESOLUTION :{BLACK}Ekrāna izšķirtspēja STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Ekrāna izšķirtspējas izvēle STR_GAME_OPTIONS_RESOLUTION_OTHER :Cita STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekrānuzņēmumu formāts STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Ekrānuzņēmumu formāta izvēle STR_GAME_OPTIONS_BASE_GRF :{BLACK}Pamata grafikas kopa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Atlasīt lietošanai pamata grafikas kopu STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} iztrūkstošs/bojāts fail{P s i ""} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata grafikas kopu STR_GAME_OPTIONS_BASE_SFX :{BLACK}Pamata skaņas kopa STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Atlasīt lietošanai pamata skaņas kopu STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata skaņas kopu STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Pamata mūzikas kopa STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Atlasīt lietošanai pamata mūzikas kopu STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} bojāt{P s i u} fail{P s i u} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata mūzikas kopu STR_ERROR_FULLSCREEN_FAILED :{WHITE}Pilnekrāna spēles iestatīšana neizdevās # Custom currency window STR_CURRENCY_WINDOW :{WHITE}Pielāgota valūta STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Maiņas kurss: {ORANGE}{CURRENCY_LONG} = £ {COMMA} STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Samazināt savas valūtas vienību daudzumu attiecībā pret vienu mārciņu (£) STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Palielināt savas valūtas vienību daudzumu attiecībā pret vienu mārciņu (£) STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Uzstādīt savas valūtas maiņas kursu pret vienu mārciņu (£) STR_CURRENCY_SEPARATOR :{LTBLUE}Atdalītājs: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Uzstādīt savas valūtas atdalītājsimbolu STR_CURRENCY_PREFIX :{LTBLUE}Priedēklis: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Uzstādīt priedēkli savai valūtai STR_CURRENCY_SUFFIX :{LTBLUE}Piedēklis: {ORANGE}{STRING} STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Uzstādīt piedēkli savai valūtai STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Pāriet uz eiro: {ORANGE}{NUM} STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Pāriet uz eiro: {ORANGE}nekad STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Uzstādīt gadu, kad pāriet uz eiro STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Pāriet uz eiro agrāk STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Pāriet uz eiro vēlāk STR_CURRENCY_PREVIEW :{LTBLUE}Priekšskatījums: {ORANGE}{CURRENCY_LONG} STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 mārciņas (£) jūsu valūtā STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Mainīt pielāgotās valūtas rādītāju STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimālais sāncenšu daudzums: {ORANGE}{COMMA} STR_NONE :Nav STR_FUNDING_ONLY :Tikai līdzekļu piešķiršana STR_MINIMAL :Minimāls STR_NUM_VERY_LOW :Ļoti zems STR_NUM_LOW :Zems STR_NUM_NORMAL :Parasts STR_NUM_HIGH :Augsts STR_NUM_CUSTOM :Pielāgots STR_NUM_CUSTOM_NUMBER :Pielāgots ({NUM}) STR_VARIETY_NONE :Nav STR_VARIETY_VERY_LOW :Ļoti zema STR_VARIETY_LOW :Zema STR_VARIETY_MEDIUM :Vidēja STR_VARIETY_HIGH :Augsta STR_VARIETY_VERY_HIGH :Ļoti augsta STR_AI_SPEED_VERY_SLOW :Ļoti lēns STR_AI_SPEED_SLOW :Lēns STR_AI_SPEED_MEDIUM :Vidējs STR_AI_SPEED_FAST :Ātrs STR_AI_SPEED_VERY_FAST :Ļoti ātrs STR_SEA_LEVEL_VERY_LOW :Ļoti zems STR_SEA_LEVEL_LOW :Zems STR_SEA_LEVEL_MEDIUM :Vidējs STR_SEA_LEVEL_HIGH :Augsts STR_SEA_LEVEL_CUSTOM :Cits STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Cits ({NUM}%) STR_RIVERS_NONE :Neviena STR_RIVERS_FEW :Nedaudzas STR_RIVERS_MODERATE :Vidējs daudzums STR_RIVERS_LOT :Daudzas STR_DISASTER_NONE :Nav STR_DISASTER_REDUCED :Samazināta STR_DISASTER_NORMAL :Parasta STR_SUBSIDY_X1_5 :x1.5 STR_SUBSIDY_X2 :x2 STR_SUBSIDY_X3 :x3 STR_SUBSIDY_X4 :x4 STR_TERRAIN_TYPE_VERY_FLAT :Ļoti līdzens STR_TERRAIN_TYPE_FLAT :Līdzens STR_TERRAIN_TYPE_HILLY :Paugurains STR_TERRAIN_TYPE_MOUNTAINOUS :Kalnains STR_CITY_APPROVAL_PERMISSIVE :pieļaujoša STR_CITY_APPROVAL_TOLERANT :iecietīga STR_CITY_APPROVAL_HOSTILE :naidīga STR_WARNING_NO_SUITABLE_AI :{WHITE}Nav pieejami derīgi MI...{}Jūs varat lejuplādēt dažādus MI, izmantojot sistēmu 'Tiešsaistes saturs' # Advanced settings window STR_CONFIG_SETTING_CAPTION :{WHITE}Papildu iestatījumi STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtra virkne: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Izvērst visu STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sakļaut visu STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(skaidrojums nav pieejams) STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Noklusējuma vērtība: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE :{LTBLUE}Iestatījuma veids: {ORANGE}{STRING} STR_CONFIG_SETTING_TYPE_CLIENT :lietotāja iestatījums (netiek iekļauts saglabājumos, ietekmē visas spēles) STR_CONFIG_SETTING_TYPE_GAME_MENU :spēles iestatījums (tiek iekļauts saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_GAME_INGAME :spēles iestatījums (tiek iekļauts saglabājumā, ietekmē tikai pašreizējo spēli) STR_CONFIG_SETTING_TYPE_COMPANY_MENU :uzņēmuma iestatījums (tiek iekļauts saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :uzņēmuma iestatījums (tiek iekļauts saglabājumā, ietekmē tikai pašreizējo uzņēmumu) STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Rādīt: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ierobežo turpmāko sarakstu, rādot tikai izmainītos iestatījumus STR_CONFIG_SETTING_RESTRICT_BASIC :Pamatiestatījumi STR_CONFIG_SETTING_RESTRICT_ADVANCED :Papildu iestatījumi STR_CONFIG_SETTING_RESTRICT_ALL :Lietpratēju iestatījumi / visi iestatījumi STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Iestatījumi ar atšķirīgu vērtību nekā noklusējuma STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Iestatījumi ar atšķirīgu vērtību nekā jūsu jaunajai spēlei STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Ierobežo zemāk esošo sarakstu ar noteiktiem iestatījumu veidiem STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Visi iestatījumu veidi STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Klienta programmas iestatījumi (netiek iekļauti saglabājumos, ietekmē visas spēles) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spēles iestatījumi (tiek iekļauti saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spēles iestatījumi (tiek iekļauti saglabājumā, ietekmē tikai pašreizējo spēli) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Uzņēmuma iestatījumi (tiek iekļauti saglabājumos, ietekmē tikai jaunās spēles) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Uzņēmuma iestatījumi (tiek iekļauti saglabājumā, ietekmē tikai pašreizējo uzņēmumu) STR_CONFIG_SETTING_OFF :izslēgts STR_CONFIG_SETTING_ON :ieslēgts STR_CONFIG_SETTING_DISABLED :atspējots STR_CONFIG_SETTING_COMPANIES_OFF :izslēgts STR_CONFIG_SETTING_COMPANIES_OWN :savam uzņēmumam STR_CONFIG_SETTING_COMPANIES_ALL :visiem uzņēmumiem STR_CONFIG_SETTING_NONE :nekāds STR_CONFIG_SETTING_ORIGINAL :sākotnējais STR_CONFIG_SETTING_REALISTIC :reālistiskais STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :pa kreisi STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :centrā STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :pa labi STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimālais sākotnējais aizdevums: {STRING} STR_CONFIG_SETTING_INTEREST_RATE :Procentu likme: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS :Kārtējās izmaksas: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Būvēšanas ātrums: {STRING} STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Transportlīdzekļu bojāšanās: {STRING} STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsīdiju reizinātājs: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Būvēšanas izmaksas: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Iestatīt būvēšanas un pirkumu izmaksas STR_CONFIG_SETTING_RECESSIONS :Lejupslīde: {STRING} STR_CONFIG_SETTING_TRAIN_REVERSING :Neatļaut vilcienu apgriešanos stacijās: {STRING} STR_CONFIG_SETTING_DISASTERS :Katastrofas: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL :Pilsētu domju attieksme pret platības pārstrukturēšanu: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES :Atļaut būvēt nogāzēs un piekrastēs: {STRING} STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ja ieslēgts, ceļus un stacijas var būvēt uz vairums nogāzēm. Ja izslēgts, tas ir atļauts tikai uz ceļu virzienam atbilstošām nogāzēm un tādēļ nav nepieciešami ieguldījumi STR_CONFIG_SETTING_AUTOSLOPE :Atļaut ainavas veidošanu zem ekām, ceļiem, utt. (automāt. nogāzes): {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Atļauj ainavas veidošanu zem ekām un ceļiem bez to nojaukšanas STR_CONFIG_SETTING_CATCHMENT :Atļaut realistiskākas, palielinātas apkalpojamās platības: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Atšķirīga lieluma apkalpojamās platības dažādu veidu stacijām un lidostām STR_CONFIG_SETTING_EXTRADYNAMITE :Atļaut pilsētai piederošo ceļu, tiltu un tuneļu nojaukšanu: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Padara vieglāku pilsētai piederošas infrastruktūras un ēku nojaukšanu STR_CONFIG_SETTING_TRAIN_LENGTH :Maksimālais vilcienu garums: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Izvēlēties vilcienu maksimālo garumu STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} lauciņ{P 0 š i u} STR_CONFIG_SETTING_SMOKE_AMOUNT :Transportlīdzekļu izmešu efektu daudzums: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Nosaka transportlīdzekļu izmesto dūmu un dzirksteļu daudzumu STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Vilcienu paātrinājuma modelis: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Vilcienu paātrinājuma fizikas modeļa izvēle. 'Sākotnējais' modelis apgrūtina pārvietošanos nogāzēs visiem transportlīdzekļiem vienādi. 'Reālistiskais' modelis apgrūtina pārvietošanos nogāzēs un līkumos atkarībā no dažādām sastāva īpašībām. Piemēram, no garuma un vilcējspēka STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Autotransporta līdzekļu paātrinājuma modelis: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Autotransporta līdzekļu paātrinājuma fizikas modeļa izvēle. 'Sākotnējais' modelis apgrūtina pārvietošanos nogāzēs visiem transportlīdzekļiem vienādi. 'Reālistiskais' modelis apgrūtina pārvietošanos nogāzēs un līkumos atkarībā no dažādām dzinēja īpašībām. Piemēram, no vilcējspēka STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Nogāžu stāvums vilcieniem: {STRING} STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Slīpu lauciņu nogāžu stāvums vilcieniem. Augstākas vērtības apgrūtina uzbraukšanu uzkalnā STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Nogāžu stāvums autotransporta līdzekļiem: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Slīpu lauciņu nogāžu stāvums autotransporta līdzekļiem. Augstākas vērtības apgrūtina uzbraukšanu uzkalnā STR_CONFIG_SETTING_FORBID_90_DEG :Aizliegt vilcieniem un kuģiem veikt 90 grādu pagriezienus: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 grādu pagriezieni rodas, ja horizontālam sliežu ceļa posmam tieši seko vertikāls sliežu ceļa posms uz blakus esošā lauciņa. Tādējādi vilciens, šķērsojot lauciņu malas, veic 90 grādu pagriezienu, nevis parasto 45 grādu kā citām sliežu ceļu kombinācijām. Tas attiecas arī uz kuģu pagrieziena lenķiem STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Atļaut savienot stacijas, kas neatrodas tieši blakus: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Atļaut pievienot staciju daļas, tām nesaskaroties ar jau esošajām. Novietojot jaunās daļas, ir nepieciešams nospiest Ctrl+klikšķis STR_CONFIG_SETTING_IMPROVEDLOAD :Lietot uzlabotu piekraušanas algoritmu: {STRING} STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Ja ir ieslēgts, vairāki transportlīdzekļi gaida stacijā uz secīgu piekraušanu. Nākamā transportlīdzekļa piekraušana sākas tikai tad, kad ir pietiekami daudz kravas, lai pilnībā piepildītu pirmo transportlīdzekli STR_CONFIG_SETTING_GRADUAL_LOADING :Transportlīdzekļus piekraut pakāpeniski: {STRING} STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Transportlīdzekļi tiek piekrauti pakāpeniski, izmantojot tam raksturīgos ilgumus. Nevis piekrauj visu uzreiz ar fiksētu laiku, tikai atkarībā no kravas daudzuma STR_CONFIG_SETTING_INFLATION :Inflācija: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Atļaut inflāciju ekonomikā, kur izmaksu celšanās nedaudz apsteidz ienākumus STR_CONFIG_SETTING_SELECTGOODS :Nogādāt kravu stacijā tikai tad, ja ir pieprasījums: {STRING} STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Tikai nogādā kravu līdz stacijai, kas tika pieprasīts piekraujot transportlīdzekli. Tas novērš sliktus vērtējumus stacijā neapkalpotām kravām STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimālais tiltu garums: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Būvējamo tiltu maksimālais garums STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimālais tuneļu garums: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Būvējamo tuneļu maksimālais garums STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Izejvielu ražotņu manuālā būvniecības metode: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Izejvielu ražotņu finansēšanas metode. 'nav' nozīmē ka nav iespējams finansēt jebkuru ražotni. Izvēloties 'ģeoloģiskā izpēte' finansējums ir iespējams, bet būvniecība notiek nejaušās kartes vietās, un var arī neizdoties. Ja ir iestatīts 'kā citām ražotnēm', tad uzņēmumi būvē izejvielu ražotnes tāpat kā pārstrādes, izvēloties jebkuru vēlamo vietu STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :nav STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kā citām ražotnēm STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :ģeoloģiskā izpēte STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Līdzens laukums ap ražotnēm: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Līdzenas platības lielums ap ražotni. Tas nodrošina ka ap ražotni būs pieejama tukša platība ceļu utt. būvniecībai STR_CONFIG_SETTING_MULTIPINDTOWN :Atļaut vairākas līdzīgas ražotnes vienā pilsētā: {STRING} STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Parasti pilsēta nevēlas vairāk par vienu ražotni no katra veida. Šis iestatījums atļaus vairākas vienāda veida ražotnes tajā pašā pilsētā STR_CONFIG_SETTING_SIGNALSIDE :Rādīt signālus: {STRING} STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Izvēlēties kurā ceļa pusē izvietot signālierīces STR_CONFIG_SETTING_SIGNALSIDE_LEFT :kreisajā pusē STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :braukšanas pusē STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :labajā pusē STR_CONFIG_SETTING_SHOWFINANCES :Gada beigās rādīt finanšu pārskatu: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Ja ieslēgts, katra gada beigās uznirst finanšu logs, lai varētu viegli pārbaudīt uzņēmuma finansiālo stāvokli STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Jaunie rīkojumi noklusējumā ir 'bez pieturām': {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Transportlīdzeklis parasti pietur pie katras caurbraucamās stacijas. Ieslēdzot šo iestatījumu, tas dosies cauri visām ceļa stacijām uz savu galamērķi bez pieturām. Ņemiet vērā, ka šis iestatījums nosaka noklusējuma vērtību tikai jaunajiem rīkojumiem. Tomēr ir iespējams katru rīkojumu iestatīt arī atsevišķi STR_CONFIG_SETTING_STOP_LOCATION :Jaunie vilcienu rīkojumi noklusējumā liek apstāties perona {STRING} STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Vieta, kur vilciens apstāsies pie perona noklusējumā. 'Sākumā' ir pie ieejas stacijā, 'vidū' nozīmē perona vidū, un 'beigās' ir tālu prom no ieejas. Ņemiet vērā, ka šis iestatījums nosaka noklusējuma vērtību tikai jaunajiem rīkojumiem. Taču individuālos rīkojumos var noteikt atšķirīgu rīcību STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :sākumā STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :vidū STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :beigās STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Autotransporta līdzekļu rindošana (ar daudzuma efektiem): {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Autotransporta līdzekļiem likt gaidīt pirms aizņemtas pieturvietas, līdz tā tiek atbrīvota STR_CONFIG_SETTING_AUTOSCROLL :Bīdīt logu, kad peles kursors atrodas tā malā: {STRING} STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Ja iespējots, skatvieta sāk ritināties kad peles kursors ir pie loga malas STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :atspējots STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :galveno skatvietu, tikai pilnekrāna spēlei STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :galveno skatvietu STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :katru skatvietu STR_CONFIG_SETTING_BRIBE :Atļaut piekukuļot vietējās pašvaldības: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Lauj uzņēmumiem mēģināt piekukuļot pilsētu vietējo pašvaldību. Ja inspektors paziņo par kukuli, tad uzņēmums pilsētā nevarēs darboties sešus mēnešus STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Atļaut pirkt pārvadājumu izņēmuma tiesības: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Ja uzņēmums pērk pārvadājumu izņēmuma tiesības pilsētā, pretinieku stacijas (pasažieru un kravas) veselu gadu nesaņems nekādu kravu STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Atļaut ēku finansēšanu: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Atļauj uzņēmumiem dot naudu pilsētām jaunu ēku finansēšanai STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Atļaut finansēt vietējo ceļu atjaunošanu: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Atļaut uzņēmumiem dot pilsētām naudu ceļu rekonstrukcijai, lai kaitētu ceļu pakalpojumiem pilsētās STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Atļaut pārsūtīt naudu citiem uzņēmumiem: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Atļauj naudas pārskaitījumus starp uzņēmumiem vairākspēlētāju spēlēs STR_CONFIG_SETTING_FREIGHT_TRAINS :Svara koeficients kravām, lai simulētu smagus vilcienus: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Iestatīt pārvadājamo kravu ietekmi uz vilcieniem. Lielāka vērtība izvirza augstākas kravnesības prasības vilcieniem, sevišķi kalnos STR_CONFIG_SETTING_PLANE_SPEED :Lidmašīnu ātruma pakāpe: {STRING} STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Iestatīt lidmašīnu nosacīto ātrumu salīdzinājumā ar citu veidu transportlīdzekļiem, lai samazinātu lidaparātu ienākumus STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} STR_CONFIG_SETTING_PLANE_CRASHES :Lidmašīnu avāriju daudzums: {STRING} STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Iestatīt lidaparātu avāriju notikšanas iespējamību STR_CONFIG_SETTING_PLANE_CRASHES_NONE :neviena STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :samazināts STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :parasts STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Atļaut caurbraucamas pieturvietas uz pilsētai piederošiem ceļiem: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Ļauj būvēt caurbraucamas pieturvietas uz pilsētai piederošiem ceļiem STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Atļaut caurbraucamas pieturvietas uz sāncenšu ceļiem: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Ļauj būvēt caurbraucamas pieturvietas uz citiem uzņēmumiem piederošiem ceļiem STR_CONFIG_SETTING_ADJACENT_STATIONS :Atļaut būvēt vienu otrai piekļautas stacijas: {STRING} STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Ļauj atšķirīgas stacijas piekļaut vienu otrai STR_CONFIG_SETTING_DYNAMIC_ENGINES :Atļaut vairākus NewGRF transportlīdzekļu komplektus: {STRING} STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Saderības izvēle veciem NewGRF failiem. Neatspējojiet šo, izņemot ja jūs zinat ko darat! STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Šo iestatījumu nav iespējams mainīt, kad tur ir transportlīdzekļi STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Infrastruktūras uzturēšana: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Lidostas darbosies mūžīgi: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ieslēdzot šo iestatījumu, katrs lidostas veids pēc tā ieviešanas vienmēr ir pieejams STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Brīdināt, ja transportlīdzeklis ir noklīdis: {STRING} STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Ieslēdz ziņojumus par transportlīdzekļiem, kas nespēj atrast ceļu uz norīkoto galamērķi STR_CONFIG_SETTING_ORDER_REVIEW :Pārbaudīt transportlīdzekļu rīkojumus: {STRING} STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Ja ieslēgts, tad transportlīdzekļu rīkojumus pastāvīgi pārbauda, un par dažām atklātajām problēmām tiek saņemti ziņojumi STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nē STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :jā, izņemot apturētajiem STR_CONFIG_SETTING_ORDER_REVIEW_ON :visiem transportlīdzekļiem STR_CONFIG_SETTING_WARN_INCOME_LESS :Brīdināt, ja transportlīdzekļa ienākumi ir negatīvi: {STRING} STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Ja ieslēgts, tiks sūtīts ziņojums gadījumā kad transportlīdzeklis negūst nekādu peļņu kalendārā gada laikā STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Transportlīdzekļi nekad "nemirst": {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Kad ieslēgts, visi transportlīdzekļu modeļi pēc to ieviešanas vienmēr ir pieejami STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automātiski atjaunot transportlīdzekļus, kad tie ir kļuvuši veci: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Ja ieslēgts, kad ir atbilstoši atjaunošanas apstākļi, automātiski tiek nomainīti transportlīdzekļi kuru kalpošanas laiks tuvojas beigām STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automātiski atjaunot transportlīdzekļus {STRING} maksimālā vecuma STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Nosacītais vecums, kad transportlīdzeklis ir uzskatāms par automātiski atjaunojamu STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mēne{P 0 si šus šu} pirms STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mēne{P 0 si šus šu} pēc STR_CONFIG_SETTING_AUTORENEW_MONEY :Automātiski papildināt minimālo naudas daudzumu atjaunošanai: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimālais naudas atlikuma lielums bankā, pirms apsver transportlīdzekļu automātisko atjaunošanu STR_CONFIG_SETTING_ERRMSG_DURATION :Kļūdas ziņojuma ilgums: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Kļūdas ziņojuma sarkanā logā rādīšanas ilgums. Jāņem vērā ka daži (kritiskie) kļūdu ziņojumi pēc šī laika netiek slēgti automātiski, bet tos ir jāaizver manuāli STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekun{P 0 di des žu} STR_CONFIG_SETTING_HOVER_DELAY :Rādīt rīku padomus: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Aizkaves ilgums, pirms tiek rādīti rīku padomi, kad peles kursors atrodas virs kāda saskarnes elementa. Rīku padomu rādīšanu pārmaiņus var saistīt ar peles labās pogas klikšķi STR_CONFIG_SETTING_HOVER_DELAY_VALUE :{COMMA} sekun{P 0 di des žu} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :labais klikšķis STR_CONFIG_SETTING_POPULATION_IN_LABEL :Rādīt pilsētas iedzīvotāju skaitu pie tās nosaukuma apzīmējuma: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Rāda pilsētu iedzīvotāju daudzumu pie to apzīmējumiem uz kartes STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Diagrammu līniju platums: {STRING} STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Diagrammu līniju platums. Šauras līnijas ir precīzāk nolasāmas, platākas vieglāk saskatīt un atšķirt to krāsas STR_CONFIG_SETTING_LAND_GENERATOR :Zemes radītājs: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Sākotnējais STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimālais attālums no kartes malas naftas pārstrādes rūpnīcām: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftas pārstrādes rūpnīcas ir būvējamas tikai kartes malu tuvumā, salu kartēm tas ir pie krasta STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sniega līnijas augstums: {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Apvidus nelīdzenums (tikai TerraGenesis): {STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Ļoti gluda STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Gluda STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Nelīdzena STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Ļoti nelīdzena STR_CONFIG_SETTING_TREE_PLACER :Koku izvietošanas algoritms: {STRING} STR_CONFIG_SETTING_TREE_PLACER_NONE :Nav STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Sākotnējais STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Uzlabotais STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Augstumu kartes pagriešana: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Pret pulksteņa rādītāja virzienu STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Pulksteņa rādītāja virzienā STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Augstuma līmenis līdzenai scenārija kartei: {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Atļaut pārveidot lauciņus kas atrodas kartes malās : {STRING} STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Ja izslēgts, kartes malās vienmēr būs okeāns STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Viens vai vairāki lauciņi pie ziemeļu malas nav tukši STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Vienam vai vairākiem lauciņiem kādā malā nav ūdens STR_CONFIG_SETTING_STATION_SPREAD :Maksimālais staciju lielums: {STRING} STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maksimālais laukums kuru var aizņemt atsevišķas stacijas izvietotās daļas. Jāņem vērā ka lielas vērtības palēninās spēli STR_CONFIG_SETTING_SERVICEATHELIPAD :Veikt helikopteru automātisko apkopi nolaišanās laukumos: {STRING} STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Helikopteriem veikt apkopi pēc katras nolaišanās, arī ja lidostā nav helikopteru bāzes STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Sasaitēt ainavas rīkjoslu ar sliežu/ceļu/ūdens/lidostu rīkjoslām: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Atverot būvniecības rīkjoslas transportlīdzekļu veidiem, tiek atvērta arī ainavu veidošanas rīkjosla STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Kartes zemes krāsa: {STRING} STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Apvidus krāsa minikartē STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zaļa STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :{G=f}tumši zaļa STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :{G=f}violeta STR_CONFIG_SETTING_REVERSE_SCROLLING :Pretējs ritināšanas virziens: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plūdena skatvietas ritināšana: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP :Rādīt mērījumu rīkjoslu, izmantojot dažādus būvniecības rīkus: {STRING} STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Rāda lauciņu attālumus un augstuma starpības, ar vilkšanu veicot būvniecības darbības STR_CONFIG_SETTING_LIVERIES :Rādīt uzņēmuma identitātes krāsas: {STRING} STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Atšķirīga krāsojuma izmantošana dažādiem transportlīdzekļu veidiem (pretēji uzņēmuma identifikācijas krāsām) STR_CONFIG_SETTING_LIVERIES_NONE :nerādīt STR_CONFIG_SETTING_LIVERIES_OWN :savam uzņēmumam STR_CONFIG_SETTING_LIVERIES_ALL :visiem uzņēmumiem STR_CONFIG_SETTING_PREFER_TEAMCHAT :Dot priekšroku komandas tērzēšanai ar : {STRING} STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Ieslēgt uzņēmuma iekšējās tērzēšanas piesaisti ar un publiskās ar STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Peles ritenīša funkcija: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Ieslēgt ritināšanu ar divdimensiju peles ritenīti STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :pietuvināt karti STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :ritināt karti STR_CONFIG_SETTING_SCROLLWHEEL_OFF :izslēgts STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Peles ritenīša ātrums: {STRING} STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Vadīt peles ritenīša ritināšanas jutīgumu STR_CONFIG_SETTING_OSK_ACTIVATION :Ekrāntastatūra: {STRING} STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :atspējota STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :dubultklikšķis STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :viens klikšķis (kad fokusēta) STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :viens klikšķis (nekavējoties) STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Labā klikšķa emulēšana: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Izvēlēties peles labās pogas klikšķu emulēšanas paņēmienu STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komanda+klikšķis STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klikšķis STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izslēgta STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Kreisā klikšķa ritināšana: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Lietot {STRING} datuma formātu saglabāto spēļu nosaukumos STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Datuma formāts spēļu saglabājuma failu nosaukumos STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :garu (31. Dec 2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :īsu (31-12-2008) STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :NewGRF noklusējuma palete, kuriem tā nav norādīta: {STRING} STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Noklusējuma palete NewGRF failiem, ja nepieciešamā nav norādīta STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :noklusējuma (D) palete STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :mantota (W) palete STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automātiski pauzēt sākot jaunu spēli: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ja ir ieslēgts, sākot jaunu spēli, tā tiek automātiski pauzēta. Tas ļauj rūpīgāk izpētīt karti STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Pauzes režīmā atļaut: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Izvēlēties veicamās darbības pauzētas spēles brīdī STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :nē, neatļaut darbības STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :visas, izņemot būvniecības darbības STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :visas, izņemot ainavas pārveidošanas darbības STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :visas darbības STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Lietot papildināto transportlīdzekļu sarakstu: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ieslēgt papildināto transportlīdzekļu sarakstu grupētiem transportlīdzekļiem STR_CONFIG_SETTING_LOADING_INDICATORS :Lietot piekraušanas rādītājus: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Izvēlēties piekraušanas rādītāju attēlošanu virs iekraujamiem un izkraujamiem transportlīdzekļiem STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Kustības sarakstu rādīt mirkļos nevis dienās: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Kustības sarakstos laikus rādīt spēles mirkļos, nevis dienās STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Kustības sarakstos rādīt pienākšanu un atiešanu: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Kustības sarakstos rādīt paredzamos pienākšanas un atiešanas laikus STR_CONFIG_SETTING_QUICKGOTO :Transportlīdzekļu rīkojumu ātrā veidošana: {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Noklusējuma sliežu veids (pēc jaunas spēles/spēles ielādes): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Izvēlētais sliežu veids sākot vai ielādējot spēli. 'Pirmās pieejamās' ir vecākā veida, 'pēdējās pieejamās' ir jaunākā veida, un 'visbiežāk lietotās' ir pašlaik visvairāk lietoto sliežu ceļu izvēlnes STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :pirmās pieejamās STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :pēdējās pieejamās STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :visbiežāk lietotās STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Rādīt rezerves sliežu ceļus: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Piešķirt rezerves sliežu ceļiem atšķirīgu krāsojumu, lai palīdzētu grūtībās ar atteikumiem vilcieniem iebraukt ceļu blokos STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Būvniecības rīkus pēc lietošanas paturēt darbīgus: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Pēc lietošanas patur atvērtus tiltu, tuneļu un citus būvniecības rīkus STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupēt izdevumu sadaļas uzņēmuma finanšu informācijas logā: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Noteikt uzņēmuma izdevumu loga izkārtojumu STR_CONFIG_SETTING_SOUND_TICKER :Jaunumu josla: {STRING} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Atskaņot apkopotu jaunumu ziņojumu skaņu STR_CONFIG_SETTING_SOUND_NEWS :Avīze: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Atskaņot skaņu kad tiek rādītas avīzes STR_CONFIG_SETTING_SOUND_NEW_YEAR :Gada beigas: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Atskaņot skaņas efektu gada beigās, apkopojot uzņēmuma darbības sasniegumus gada laikā salīdzinājumā ar iepriekšējo gadu STR_CONFIG_SETTING_SOUND_CONFIRM :Būvniecība: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Atskaņot skaņu pēc sekmīgas būvēšanas vai citām darbībām STR_CONFIG_SETTING_SOUND_CLICK :Pogu klikšķi: {STRING} STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Skan signāls, kad noklikšķina uz pogas STR_CONFIG_SETTING_SOUND_DISASTER :Katastrofas/negadījumi: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Atskaņot negadījumu un katastrofu skaņu efektus STR_CONFIG_SETTING_SOUND_VEHICLE :Transportlīdzekļi: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Atskaņot transportlīdzekļu skaņu efektus STR_CONFIG_SETTING_SOUND_AMBIENT :Apkārtne: {STRING} STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Atskaņot ainavas, ražotņu un pilsētu apkārtējās skaņas STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Atspējot infrastruktūras būvēšanu, ja nav piemērotu transportlīdzekļu: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Ja ieslēgts, infrastruktūra ir pieejama tikai tad, ja tur ir pieejami arī transportlīdzekļi, novēršot laika un naudas izšķiešanu par nelietojamu infrastruktūru STR_CONFIG_SETTING_MAX_TRAINS :Maksimālais vilcienu skaits uzņēmumā: {STRING} STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maksimālais vilcienu skaits, kas var piederēt uzņēmumam STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimālais autotransporta līdzekļu skaits uzņēmumā: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maksimālais autotransporta līdzekļu skaits, kas var piederēt uzņēmumam STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimālais lidaparātu skaits uzņēmumā: {STRING} STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maksimālais lidaparātu skaits, kas var piederēt uzņēmumam STR_CONFIG_SETTING_MAX_SHIPS :Maksimālais kuģu skaits uzņēmumā: {STRING} STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimālais kuģu skaits, kas var piederēt uzņēmumam STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Atspējot datoram vilcienus: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Šā iestatījuma ieslēgšana padara neiespējamu vilcienu būvēšanu datoram STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Atspējot datoram autotransporta līdzekļus: {STRING} STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Šā iestatījuma ieslēgšana padara neiespējamu autotransporta līdzekļu būvēšanu datoram STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Atspējot datoram lidaparātus: {STRING} STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Šā iestatījuma ieslēgšana padara neiespējamu lidaparātu būvēšanu datoram STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Atspējot datoram kuģus: {STRING} STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Šā iestatījuma ieslēgšana padara neiespējamu kuģu būvēšanu datoram STR_CONFIG_SETTING_AI_PROFILE :Noklusējuma iestatījumu profils: {STRING} STR_CONFIG_SETTING_AI_PROFILE_EASY :viegls STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :vidējs STR_CONFIG_SETTING_AI_PROFILE_HARD :smags STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Atļaut MI vairākspēlētāju spēlēs: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Atļaut MI nespēlētāju tēliem (datora vadītiem) piedalīties vairākspēlētāju spēlēs STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#darbību kodi, pirms skripti tiek apstādināti: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT :Apkopju starplaiki procentos: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS :Vilcienu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Izvēlēties jaunajiem sliežu transportlīdzekļiem apkopju noklusējuma starplaiku, ja tiem tas nav noteikts STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} dien{P 0 a as u}/% STR_CONFIG_SETTING_SERVINT_DISABLED :izslēgts STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Autotransporta līdzekļu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Izvēlēties jauniem autotransporta līdzekļiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Lidaparātu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Izvēlēties jauniem lidaparātiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts STR_CONFIG_SETTING_SERVINT_SHIPS :Kuģu apkopju noklusējuma starplaiks: {STRING} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Izvēlēties jauniem kuģiem apkopju noklusējuma starplaiku, ja transportlīdzeklim tas nav noteikts STR_CONFIG_SETTING_NOSERVICE :Aizliegt apkopi, kad bojāšanās ir izslēgta: {STRING} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Ja ieslēgts, transportlīdzekļiem netiek veikta apkope. Jo tie nebojājas STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ieslēgt vagonu ātruma ierobežojumus: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Ja ieslēgts, var izmantot vagonu ātruma ierobežojumus, lai lemtu par vilcienu maksimālo ātrumu STR_CONFIG_SETTING_DISABLE_ELRAILS :Atspējot elektrificēto dzelzceļu: {STRING} STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Šī iestatījuma ieslēgšana atcels ceļu elektrifikācijas prasību, lai pa tiem varētu pārvietoties elektrolokomotīves STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :Spēlētaja stacijā ierodas pirmais transportlīdzeklis: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Rādīt avīzi kad spēlētāja jaunajā stacijā ierodas pirmais transportlīdzeklis STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :Sāncenša stacijā ierodas pirmais transportlīdzeklis: {STRING} STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Rādīt avīzi kad sāncenša jaunajā stacijā ierodas pirmais transportlīdzeklis STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Negadījumi / katastrofas: {STRING} STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Rādīt avīzi, kad notiek nelaimes gadījumi vai katastrofas STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Uzņēmuma informācija: {STRING} STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Rādīt avīzi kad darbību sāk jauns uzņēmums, vai kad uzņēmumi riskē bankrotēt STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Ražotņu atklāšana: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Rādīt avīzi, kad tiek atklāti jauni uzņēmumi STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Ražotņu slēgšana: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Rādīt avīzi, kad uzņēmumi tiek slēgti STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Ekonomikas izmaiņas: {STRING} STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Rādīt avīzi par globālām izmaiņām ekonomikā STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Ražošanas izmaiņas uzņēmuma apkalpotajās ražotnēs: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Rādīt avīzi kad mainās uzņēmuma darbināto ražotņu ražošanas līmenis STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Ražošanas izmaiņas sāncenšu apkalpotajās ražotnēs: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Rādīt avīzi kad mainās sāncenšu darbināto ražotņu ražošanas līmenis STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Citas ražošanas apjomu izmaiņas: {STRING} STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Rādīt avīzi kad mainās uzņēmuma vai sāncenšu nedarbināto ražotņu ražošanas līmenis STR_CONFIG_SETTING_NEWS_ADVICE :Padomi / informācija par uzņēmuma transportlīdzekļiem: {STRING} STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Rādīt ziņojumus par transportlīdzekļiem, kuriem ir jāpievērš uzmanību STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Jauni transportlīdzekļi: {STRING} STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Rādīt avīzi kad transportlīdzekļa veids ir kļuvis pieejams STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Izmaiņas kravu pieņemšanā: {STRING} STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Rādīt ziņojumus par izmaiņām dažu kravu pieņemšanā stacijās STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsīdijas: {STRING} STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Rādīt avīzi par notikumiem, saistītiem ar subsīdijām STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Vispārējā informācija: {STRING} STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Rādīt avīzi par vispārējiem pasākumiem, tādiem kā izņēmuma tiesību pirkšana vai ceļu rekonstrukcijas finansēšana STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :izslēgts STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :kopsavilkums STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :pilns STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Krāsaini avīžu raksti parādās: {STRING} gadā STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Gads kad sāk drukāt krāsainas avīzes. Pirms šā gada tās ir melnbaltas STR_CONFIG_SETTING_STARTING_YEAR :Sākuma gads: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Atļaut vienmērīgas izmaiņas ekonomikā: {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Ja ieslēgts, ražošanas izmaiņas notiek biežāk un ar mazākiem soļiem. Šim iestatījumam parasti nav ietekmes, ja ražotņu veidi ir ieviesti ar NewGRF STR_CONFIG_SETTING_ALLOW_SHARES :Atļaut akciju pirkšanu no citiem uzņēmumiem: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Ja iespējots, ir atļauts pirkt un pārdodot uzņēmumu akcijas. Akcijas būs pieejamas tikai atbilstošu vecumu sasniegušiem uzņēmumiem STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procenti no kopējās peļņas, ko maksā tranzītstacijās: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Velkot izvietot signālierīces uz katra: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Iestatīt attālumus, kādos līdz nākamajam šķērslim (signālierīcei, dzelzceļa mezglam) uz ceļa tiks būvētas signālierīces, ja tās tiek vilktas STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} lauciņ{P 0 a a a} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Velkot paturēt vienādu attālumu starp signālierīcēm: {STRING} STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Signālierīču izvietošanas uzvedības izvēle, kad to veic ar Ctrl+velkot. Ja izslēgts, signālierīces tiek novietotas pie tuneļiem un tiltiem, lai izvairītos no gariem posmiem bez signālierīcēm. Ja ieslēgts, signālierīces tiek izvietotas uz katra N lauciņa, atvieglojot to izkārtošanu gar paralēliem sliežu ceļiem STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Automātiski būvēt semaforus pirms: {STRING} gada STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Izvēlēties gadu, kad ceļiem sāks izmantot elektriskās signālierīces. Pirms šā gada tiks izmantotas neelektriskās signālierīces (kam ir tieši tāda pati funkcija, bet ar atšķirīgu izskatu) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ieslēgt signālierīču grafisko lietotāja saskarni: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Noklusējuma signālu veids: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Izmantotais noklusējuma signālu veids STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :bloķēšanas signāli STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :ceļa signāli STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :vienvirziena ceļa signāli STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Braukt garām signālu veidiem: {STRING} STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :tikai bloķēšanas signāliem STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :tikai ceļa signāliem STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :visiem STR_CONFIG_SETTING_TOWN_LAYOUT :Ceļu izkārtojums jaunajām pilsētām: {STRING} STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Pilsētu ceļu tīkla izkārtojums STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :sākotnējais STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :labāki ceļi STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 režģis STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 režģis STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :nejaušs STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Pilsētām ir atļauts būvēt ceļus: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Ļauj pilsētām būvēt ceļus izaugsmes sekmēšanai. Izslēgt, lai pilsētu vietējās pašvaldības pašas nebūvētu ceļus STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Pilsētam ir atļauts būvēt vienlīmeņa krustojumus: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Šā iestatījuma ieslēgšana pilsētām atļauj būvēt vienlīmeņa krustojumus STR_CONFIG_SETTING_NOISE_LEVEL :Atļaut pilsētām kontrolēt trokšņu līmeni lidostās: {STRING} STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Ja šis iestatījums ir izslēgts, tad katrā pilsētā var būt divas lidostas. Ja šis iestatījums ir ieslēgts, tad lidostu daudzums pilsētā ir ierobežots ar pilsētas piekrišanu troksnim, kas ir atkarīga no iedzīvotāju skaita, lidostas lieluma un attāluma STR_CONFIG_SETTING_TOWN_FOUNDING :Pilsētu dibināšana: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Šā iestatījuma ieslēgšana atļauj spēlētājiem spēlē nodibināt jaunas pilsētas STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :aizliegta STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :atļauta STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :atļauta, ar brīvi izvēlētu izkārtojumu STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Koku izvietojums spēlē: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Vadīt nejaušu koku parādīšanos spēles laikā. Tas var ietekmēt no kokaudzēšanas atkarīgas ražotnes, piemēram kokzāģētavas STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :nav {RED}(nedarbosies kokzāģētavas) STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :tikai lietusmežos STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :visur STR_CONFIG_SETTING_TOOLBAR_POS :Galvenās rīkjoslas novietojums: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Galvenās rīkjoslas horizontālais novietojums ekrāna augšējā daļā STR_CONFIG_SETTING_STATUSBAR_POS :Stāvokļa joslas novietojums: {STRING} STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Stāvokļa joslas horizontālais novietojums ekrāna apakšējā daļā STR_CONFIG_SETTING_SNAP_RADIUS :Logu pielipšanas rādiuss: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Attālums starp logiem, kad pārvietojamais logs tiek automātiski pielīdzināts tuvākajiem STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pikse{P 0 lis ļi ļu} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :izslēgts STR_CONFIG_SETTING_SOFT_LIMIT :Maksimālais logu skaits: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Atvērtu nepielipušo logu skaits, pirms tie tiek automātiski aizvērti lai atbrīvotu vietu jauniem logiem STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :izslēgts STR_CONFIG_SETTING_ZOOM_MIN :Maksimālais pietuvinājuma līmenis: {STRING} STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maksimālais pietuvinājuma līmenis skatvietām. Ir jāievēro ka paaugstinot pietuvinājuma līmeni, pieaug operatīvās atmiņas izlietojums STR_CONFIG_SETTING_ZOOM_MAX :Maksimālais attālinājuma līmenis: {STRING} STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maksimālais attālinājuma līmenis skatvietām. Lielāka attālinājuma līmeņa pielietošana var būt iemesls aizkavējumiem STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Parasts STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x STR_CONFIG_SETTING_TOWN_GROWTH :Pilsētu attīstības ātrums: {STRING} STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Ātrums ar kuru attīstīsies pilsētas STR_CONFIG_SETTING_TOWN_GROWTH_NONE :nav STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :mazs STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :vidējs STR_CONFIG_SETTING_TOWN_GROWTH_FAST :liels STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :ļoti liels STR_CONFIG_SETTING_LARGER_TOWNS :Pilsētu daļa kas kļūs par lielpilsētām: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Pilsētu daudzums kas kļūs par lielpilsētām, tādēļ tās sākumā ir lielākas un attīstās ātrāk STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 pret {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :neviena STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Lielpilsētu sākuma lieluma reizinātājs: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Lielpilsētu vidējais lielums attiecībā pret parastām pilsētām spēles sākumā STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Ceļu būves laikā novākt bezjēdzīgus ceļu elementus: {STRING} STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Finansētās ceļu rekonstrukcijas laikā noņem vairs neizmantojamos ceļu nobeiguma posmus STR_CONFIG_SETTING_GUI :{ORANGE}Saskarne STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Būvniecība STR_CONFIG_SETTING_VEHICLES :{ORANGE}Transportlīdzekļi STR_CONFIG_SETTING_STATIONS :{ORANGE}Stacijas STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomika STR_CONFIG_SETTING_AI :{ORANGE}Sāncenši STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Ekrāna opcijas STR_CONFIG_SETTING_INTERACTION :{ORANGE}Mijiedarbība STR_CONFIG_SETTING_SOUND :{ORANGE}Skaņas efekti STR_CONFIG_SETTING_NEWS :{ORANGE}Avīžu raksti un ziņojumi STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signāli STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kravu pārvietošana STR_CONFIG_SETTING_AI_NPC :{ORANGE}Nespēlētāju tēli (datora vadīti) STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Automātiskā atjaunošana STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Apkope STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Pārvietošanās STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Vilcieni STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Pilsētas STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Ražotnes STR_CONFIG_SETTING_PATHFINDER_OPF :Sākotnējais STR_CONFIG_SETTING_PATHFINDER_NPF :NPF STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(ieteicamais) STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Vilcienu ceļa meklētājs: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Vilcieniem pielietotais ceļa meklētājs STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Autotransporta līdzekļu ceļa meklētājs: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Autotransporta līdzekļiem pielietotais ceļa meklētājs STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Kuģu ceļa meklētājs: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Kuģiem pielietotais ceļa meklētājs STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automātiska apgriešanās pie luksoforiem: {STRING} STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Atļauj vilcieniem apgriezties pie signālierīcēm, ja tie te ir gaidījuši ilgu laiku STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Mainīt iestatījuma vērtību # Config errors STR_CONFIG_ERROR :{WHITE}Kļūda konfigurācijas failā... STR_CONFIG_ERROR_ARRAY :{WHITE}... kļūda masīvā '{STRING}' STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... nederīga vērtība '{STRING}' priekš '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... sekojošās rakstzīmes iestatījuma '{STRING}' beigās STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorē NewGRF '{STRING}': dublējošs GRF ID ar '{STRING}' STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorē nederīgu NewGRF '{STRING}': {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nav atrasts STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :nav drošs statiskai lietošanai STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistēmas NewGRF STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :nav savietojams ar šo OpenTTD versiju STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :nezināms STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... saspiešanas līmenis '{STRING}' ir nederīgs STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... spēles saglabāšanas formāts '{STRING}' nav pieejams. Atkāpjas uz '{STRING}' STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorē pamata grafikas kopu '{STRING}': nav atrasta STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorē pamata skaņas kopu '{STRING}': nav atrasta STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorē pamata mūzikas kopu '{STRING}': nav atrasta STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nepietiek atmiņas # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} STR_INTRO_NEW_GAME :{BLACK}Jauna spēle STR_INTRO_LOAD_GAME :{BLACK}Ielādēt spēli STR_INTRO_PLAY_SCENARIO :{BLACK}Spēlēt scenāriju STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spēlēt augstumu karti STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenāriju redaktors STR_INTRO_MULTIPLAYER :{BLACK}Vairākspēlētāju spēle STR_INTRO_GAME_OPTIONS :{BLACK}Spēles opcijas STR_INTRO_HIGHSCORE :{BLACK}Sasniegumu tabula STR_INTRO_ADVANCED_SETTINGS :{BLACK}Papildu iestatījumi STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF iestatījumi STR_INTRO_ONLINE_CONTENT :{BLACK}Pārbaudīt tiešsaistes saturu STR_INTRO_SCRIPT_SETTINGS :{BLACK}MI/spēles skriptu iestatījumi STR_INTRO_QUIT :{BLACK}Iziet STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Sākt jaunu spēli. Ctrl+klikšķis izlaiž kartes konfigurēšanu STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Ielādēt saglabāto spēli STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Sākt jaunu spēli, ainavai izmantojot augstumu karti STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Sākt jaunu spēli ar pielāgotu scenāriju STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Izveidot pielāgotu spēles pasauli/scenāriju STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Sākt vairākspēlētāju spēli STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Izvēlēties 'mērena klimata' ainavas stilu STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Izvēlēties 'subarktikas klimata' ainavas stilu STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Izvēlēties 'subtropu klimata' ainavas stilu STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Izvēlēties 'rotaļlietu zemes' ainavas stilu STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Rādīt spēles opcijas STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Rādīt sasniegumu tabulu STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}Rādīt papildu iestatījumus STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Rādīt NewGRF iestatījumus STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Pārbaudīt vai lejupielādei nav pieejams jauns un atjaunināts saturs STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Rādīt MI un spēles skriptu iestatījumus STR_INTRO_TOOLTIP_QUIT :{BLACK}Iziet no 'OpenTTD' STR_INTRO_TRANSLATION :{BLACK}Šim tulkojumam trūkst {NUM} virk{P ne nes ņu}. Lūdzu palīdziet OpenTTD veidot labāku piesakoties par tulkotāju. Informācijai skatīt readme.txt. # Quit window STR_QUIT_CAPTION :{WHITE}Iziet STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Vai jūs tiešām vēlaties iziet no OpenTTD un atgriezties uz {STRING}? STR_QUIT_YES :{BLACK}Jā STR_QUIT_NO :{BLACK}Nē # Supported OSes STR_OSNAME_WINDOWS :Windows STR_OSNAME_DOS :DOS STR_OSNAME_UNIX :Unix STR_OSNAME_OSX :OS{NBSP}X STR_OSNAME_BEOS :BeOS STR_OSNAME_HAIKU :Haiku STR_OSNAME_MORPHOS :MorphOS STR_OSNAME_AMIGAOS :AmigaOS STR_OSNAME_OS2 :OS/2 STR_OSNAME_SUNOS :SunOS # Abandon game STR_ABANDON_GAME_CAPTION :{WHITE}Pamest spēli STR_ABANDON_GAME_QUERY :{YELLOW}Vai jūs tiešām vēlaties pamest šo spēli? STR_ABANDON_SCENARIO_QUERY :{YELLOW}Vai esat pārliecināts, ka vēlaties pamest šo scenāriju? # Cheat window STR_CHEATS :{WHITE}Blēdības STR_CHEATS_TOOLTIP :{BLACK}Atzīmētās rūtiņas norāda uz to, vai esat jau izmantojis šo blēdību STR_CHEATS_WARNING :{BLACK}Brīdinājums! Jūs grasāties būt neuzticams saviem spēles biedriem, sāncenšiem. Iegaumējiet, ka šādu negodu viņi atcerēsies mūžīgi STR_CHEAT_MONEY :{LTBLUE}Palielināt naudas līdzekļus par {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spēlēt kā uzņēmumam: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Burvju buldozers (nojauc ražotnes, nepārvietojamus objektus): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tuneļi drīkst krustoties: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktīvās lidmašīnas mazajās lidostās neavarēs (bieži): {ORANGE}{STRING} STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Mērena klimata ainava STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarktikas klimata ainava STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropu klimata ainava STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Rotaļlietu zemes ainava STR_CHEAT_CHANGE_DATE :{LTBLUE}Nomainīt datumu: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Mainīt pašreizējo gadu STR_CHEAT_SETUP_PROD :{LTBLUE}Ieslēgt ražojumu vērtības maiņu: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}Jauna identitātes krāsu shēma STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Rādīt vispārējo identitates krāsu shēmas STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Rādīt vilcienu identitātes krāsu shēmas STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Rādīt autotransporta identitātes krāsu shēmas STR_LIVERY_SHIP_TOOLTIP :{BLACK}Rādīt kuģu identitātes krāsu shēmas STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Rādīt lidaparātu identitātes krāsu shēmas STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Izvēlēties galveno identitātes krāsu atlasītajai shēmai. Ctrl+klikšķis iestatīs šo krāsu katrai shēmai STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Izvēlēties papildu identitātes krāsu atlasītajai shēmai. Ctrl+klikšķis iestatīs šo krāsu katrai shēmai STR_LIVERY_PANEL_TOOLTIP :{BLACK}Izvēlēties kuru identitātes krāsu shēmu mainīt, vai vairākas ar Ctrl+klikšķi. Klikšķināt uz rūtiņas, lai pārslēgtu shēmas izmantošanu STR_LIVERY_DEFAULT :Vispārpieņemtā identitātes krāsa STR_LIVERY_STEAM :Tvaika lokomotīve STR_LIVERY_DIESEL :Dīzeļlokomotīve STR_LIVERY_ELECTRIC :Elektrolokomotīve STR_LIVERY_MONORAIL :Viensliedes lokomotīve STR_LIVERY_MAGLEV :Magleva lokomotīve STR_LIVERY_DMU :Dīzeļvilciens STR_LIVERY_EMU :Elektrovilciens STR_LIVERY_PASSENGER_WAGON_STEAM :Pasažieru vagons (tvaika) STR_LIVERY_PASSENGER_WAGON_DIESEL :Pasažieru vagons (dīzeļa) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Pasažieru vagons (elektriskais) STR_LIVERY_PASSENGER_WAGON_MONORAIL :Pasažieru vagons (viensliedes) STR_LIVERY_PASSENGER_WAGON_MAGLEV :Pasažieru vagons (magleva) STR_LIVERY_FREIGHT_WAGON :Kravas vagons STR_LIVERY_BUS :Autobuss STR_LIVERY_TRUCK :Smagā mašīna STR_LIVERY_PASSENGER_SHIP :Pasažieru prāmis STR_LIVERY_FREIGHT_SHIP :Kravas kuģis STR_LIVERY_HELICOPTER :Helikopters STR_LIVERY_SMALL_PLANE :Maza lidmašīna STR_LIVERY_LARGE_PLANE :Liela lidmašīna STR_LIVERY_PASSENGER_TRAM :Pasažieru tramvajs STR_LIVERY_FREIGHT_TRAM :Kravas tramvajs # Face selection window STR_FACE_CAPTION :{WHITE}Sejas izvēle STR_FACE_CANCEL_TOOLTIP :{BLACK}Pārtraukt jaunas sejas izvēli STR_FACE_OK_TOOLTIP :{BLACK}Apstiprināt izvēlēto seju STR_FACE_MALE_BUTTON :{BLACK}Vīrietis STR_FACE_MALE_TOOLTIP :{BLACK}Izvēlēties vīriešu sejas STR_FACE_FEMALE_BUTTON :{BLACK}Sieviete STR_FACE_FEMALE_TOOLTIP :{BLACK}Izvēlēties sieviešu sejas STR_FACE_NEW_FACE_BUTTON :{BLACK}Jauna seja STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Radīt nejaušu seju STR_FACE_ADVANCED :{BLACK}Papildu STR_FACE_ADVANCED_TOOLTIP :{BLACK}Papildu seju izvēle STR_FACE_SIMPLE :{BLACK}Vienkāršs STR_FACE_SIMPLE_TOOLTIP :{BLACK}Vienkārša seju izvēle STR_FACE_LOAD :{BLACK}Ielādēt STR_FACE_LOAD_TOOLTIP :{BLACK}Ielādēt iecienīto seju STR_FACE_LOAD_DONE :{WHITE}Jūsu iecienītā seja tika ielādēta no OpenTDD konfigurācijas faila STR_FACE_FACECODE :{BLACK}Spēlētāja sejas nr. STR_FACE_FACECODE_TOOLTIP :{BLACK}Skatīt un/vai pielikt uzņēmuma prezidenta sejas numuru STR_FACE_FACECODE_CAPTION :{WHITE}Skatīt un/vai pielikt prezidenta sejas numuru STR_FACE_FACECODE_SET :{WHITE}Jauns sejas numurs ir pielikts STR_FACE_FACECODE_ERR :{WHITE}Nevar pielikt numuru spēlētāja sejai - tam ir jābūt skaitlim no 0 līdz 4,294,967,295! STR_FACE_SAVE :{BLACK}Saglabāt STR_FACE_SAVE_TOOLTIP :{BLACK}Saglabāt iecienīto seju STR_FACE_SAVE_DONE :{WHITE}Šī seja tiks saglabāta OpenTDD konfigurācijas failā kā iecienītā seja STR_FACE_EUROPEAN :{BLACK}Eiropietis STR_FACE_SELECT_EUROPEAN :{BLACK}Izvēlēties eiropiešu sejas STR_FACE_AFRICAN :{BLACK}Afrikānis STR_FACE_SELECT_AFRICAN :{BLACK}Izvēlēties afrikāņu sejas STR_FACE_YES :Ir STR_FACE_NO :Nav STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Iespējot ūsas vai auskarus STR_FACE_HAIR :Mati: STR_FACE_HAIR_TOOLTIP :{BLACK}Mainīt matus STR_FACE_EYEBROWS :Uzacis: STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Mainīt uzacis STR_FACE_EYECOLOUR :Acu krāsa: STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Mainīt acu krāsu STR_FACE_GLASSES :Brilles: STR_FACE_GLASSES_TOOLTIP :{BLACK}Iespējot brilles STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Mainīt brilles STR_FACE_NOSE :Deguns: STR_FACE_NOSE_TOOLTIP :{BLACK}Mainīt degunu STR_FACE_LIPS :Lūpas: STR_FACE_MOUSTACHE :Ūsas: STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Mainīt lūpas vai ūsas STR_FACE_CHIN :Zods: STR_FACE_CHIN_TOOLTIP :{BLACK}Mainīt zodu STR_FACE_JACKET :Jaka: STR_FACE_JACKET_TOOLTIP :{BLACK}Mainīt jaku STR_FACE_COLLAR :Apkakle: STR_FACE_COLLAR_TOOLTIP :{BLACK}Mainīt apkakli STR_FACE_TIE :Kaklasaite: STR_FACE_EARRING :Auskars: STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Mainīt kaklasaiti vai auskarus # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Vairākspēlētāju spēle STR_NETWORK_SERVER_LIST_CONNECTION :{BLACK}Savienojums: STR_NETWORK_SERVER_LIST_CONNECTION_TOOLTIP :{BLACK}Izvēlēties starp spēli internetā vai spēli lokālajā tīklā STR_NETWORK_SERVER_LIST_LAN :LAN STR_NETWORK_SERVER_LIST_INTERNET :Internets STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spēlētāja vārds: STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Pēc šā vārda jūs atpazīs citi spēlētāji STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nosaukums STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Spēles nosaukums STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Spēlētāji STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Spēlētāji tiešsaistē / maksimālais spēlētāju skaits{}Uzņēmumi tiešsaistē / maksimālais uzņēmumu skaits STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kartes izmēri STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Spēles kartes izmērs{}Klikšķināt, lai šķirotu laukumos STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datums STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Šībrīža datums STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Gadi STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Gadu skaits{}spēle ir palaista STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Valoda, servera versija utt. STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Klikšķināt sarakstā uz spēles, lai to izvēlētos STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Serveris, kuram jūs pievienojāties pēdējoreiz: STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Klikšķis, lai izvēlētos serveri kurā jūs spēlējāt pēdējoreiz STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}SPĒLES INFORMĀCIJA STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Spēlētāji: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Valoda: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Ainava: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kartes izmērs: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Servera versija: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Servera adrese: {WHITE}{STRING} STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Sākuma datums: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Šībrīža datums: {WHITE}{DATE_SHORT} STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Aizsargāts ar paroli! STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVERIS NAV TIEŠSAISTĒ STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVERIS IR PILNS STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}VERSIJU NEATBILSTĪBA STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF NEATBILSTĪBA STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Pievienoties spēlei STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Atsvaidzināt serveri STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Atsvaidzināt servera informāciju STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Atrast serveri STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Meklēt serveri tīklā STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Pievienot serveri STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Pievienot serveri sarakstam, kurš vienmēr tiks pārbaudīts vai tajā nav palaistas spēles STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Palaist serveri STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Palaist jūsu personīgo serveri STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Ievadīt savu vārdu STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Ievadīt servera adresi # Start new multiplayer server STR_NETWORK_START_SERVER_CAPTION :{WHITE}Sākt jaunu vairākspēlētāju spēli STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spēles nosaukums: STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spēles nosaukums, kas tiks attēlots citiem spēlētajiem vairākspēlētāju spēļu izvēlnē STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Uzstādīt paroli STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Aizsargā jūsu spēli ar paroli, ja nevēlaties lai tā būtu publiski pieejama STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / internets STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internets (izsludināt) STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} spēlētāj{P s i u} STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks. spēlētāju skaits: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izvēlēties maksimālo spēlētāju skaitu. Ne visiem slotiem ir jābūt aizpildītiem STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} uzņēmum{P s i u} STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks. uzņēmumu skaits: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ierobežo serveri noteiktam uzņēmumu skaitam STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} novērotāj{P s i u} STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks. novērotāju skaits: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ierobežo serveri noteiktam novērotāju skaitam STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Valoda, kurā runā: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Citi lietotāji zinās, kurā valodā tiek runāts uz servera STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Ievadīt tīkla spēles nosaukumu # Network game languages ############ Leave those lines in this order!! STR_NETWORK_LANG_ANY :Jebkura STR_NETWORK_LANG_ENGLISH :Angļu STR_NETWORK_LANG_GERMAN :Vācu STR_NETWORK_LANG_FRENCH :Franču STR_NETWORK_LANG_BRAZILIAN :Brazīļu STR_NETWORK_LANG_BULGARIAN :Bulgāru STR_NETWORK_LANG_CHINESE :Ķīniešu STR_NETWORK_LANG_CZECH :Čehu STR_NETWORK_LANG_DANISH :Dāņu STR_NETWORK_LANG_DUTCH :Holandiešu STR_NETWORK_LANG_ESPERANTO :Esperanto STR_NETWORK_LANG_FINNISH :Somu STR_NETWORK_LANG_HUNGARIAN :Ungāru STR_NETWORK_LANG_ICELANDIC :Īslandiešu STR_NETWORK_LANG_ITALIAN :Itāliešu STR_NETWORK_LANG_JAPANESE :Japāņu STR_NETWORK_LANG_KOREAN :Korejiešu STR_NETWORK_LANG_LITHUANIAN :Lietuviešu STR_NETWORK_LANG_NORWEGIAN :Norvēģu STR_NETWORK_LANG_POLISH :Poļu STR_NETWORK_LANG_PORTUGUESE :Portugāļu STR_NETWORK_LANG_ROMANIAN :Rumāņu STR_NETWORK_LANG_RUSSIAN :Krievu STR_NETWORK_LANG_SLOVAK :Slovāku STR_NETWORK_LANG_SLOVENIAN :Slovēņu STR_NETWORK_LANG_SPANISH :Spāņu STR_NETWORK_LANG_SWEDISH :Zviedru STR_NETWORK_LANG_TURKISH :Turku STR_NETWORK_LANG_UKRAINIAN :Ukraiņu STR_NETWORK_LANG_AFRIKAANS :Āfrikāņu STR_NETWORK_LANG_CROATIAN :Horvātu STR_NETWORK_LANG_CATALAN :Katalāņu STR_NETWORK_LANG_ESTONIAN :Igauņu STR_NETWORK_LANG_GALICIAN :Galisiešu STR_NETWORK_LANG_GREEK :Grieķu STR_NETWORK_LANG_LATVIAN :Latviešu ############ End of leave-in-this-order # Network game lobby STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Vairākspēlētāju spēles vestibils STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Gatavojos pievienoties: {ORANGE}{STRING} STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Spēlē esošo uzņēmumu saraksts. Jūs varat vai nu kādam pievienoties, vai arī sākt jaunu, ja ir brīvs uzņēmuma slots STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}UZŅĒMUMA INFORMĀCIJA STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Uzņēmuma nosaukums: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Atklāšana: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Uzņēmuma vērtība: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Šībrīža bilance: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Ienākumi pērn: {WHITE}{CURRENCY_LONG} STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Veiktspēja: {WHITE}{NUM} STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Satiksmes līdzekļi: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stacijas: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spēlētāji: {WHITE}{STRING} STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Jauns uzņēmums STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Izveidot jaunu uzņēmumu STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Novērot spēli STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Skatīties spēli kā novērotājam STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Pievienoties uzņēmumam STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Palīdzēt vadīt šo uzņēmumu # Network connecting window STR_NETWORK_CONNECTING_CAPTION :{WHITE}Savienojas... ############ Leave those lines in this order!! STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Savienojas... STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizējas... STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Gaida... STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Lejupielādē karti... STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Apstrādā datus... STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Reģistrējas... STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Pieņem spēles informāciju... STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Pieņem uzņēmuma informāciju... ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} klient{P s i u} ir jūsu priekšā STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}Līdz šim lejupielādēti {BYTES} STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} lejuplādēti līdz šim STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Atvienoties STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveris ir aizsargāts. Ievadiet paroli STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Uzņēmums ir aizsargāts. Ievadiet paroli # Network company list added strings STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Spēlētāju saraksts STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Skatīt STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Jauns uzņēmums # Network client list STR_NETWORK_CLIENTLIST_KICK :Izmest STR_NETWORK_CLIENTLIST_BAN :Aizliegt STR_NETWORK_CLIENTLIST_GIVE_MONEY :Iedot naudu STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Runāt ar visiem STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Runāt ar uzņēmumu STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privāts ziņojums STR_NETWORK_SERVER :Serveris STR_NETWORK_CLIENT :Spēlētājs STR_NETWORK_SPECTATORS :Novērotāji STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ievadiet cik daudz naudas vēlaties dot # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nesaglabāt ievadīto paroli STR_COMPANY_PASSWORD_OK :{BLACK}Piešķirt uzņēmumam jaunu paroli STR_COMPANY_PASSWORD_CAPTION :{WHITE}Uzņēmuma parole STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Uzņēmuma noklusējuma parole STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Izmantot šo paroli kā noklusējuma jauniem uzņēmumiem # Network company info join/password STR_COMPANY_VIEW_JOIN :{BLACK}Pievienoties STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pievienoties un spēlēt ar šo uzņēmumu STR_COMPANY_VIEW_PASSWORD :{BLACK}Parole STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Jūsu uzņēmuma aizsardzība ar paroli, lai novērstu neatļautu lietotāju pievienošanos STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Iestatīt uzņēmuma paroli # Network chat STR_NETWORK_CHAT_SEND :{BLACK}Sūtīt STR_NETWORK_CHAT_COMPANY_CAPTION :[Komanda] : STR_NETWORK_CHAT_CLIENT_CAPTION :[Privāti] {STRING}: STR_NETWORK_CHAT_ALL_CAPTION :[Visiem] : STR_NETWORK_CHAT_COMPANY :[Komanda] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_COMPANY :[Komanda] Uz {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_CLIENT :[Privāti] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_TO_CLIENT :[Privāti] Uz {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_ALL :[Visiem] {STRING}: {WHITE}{STRING} STR_NETWORK_CHAT_OSKTITLE :{BLACK}Ievadīt tekstu tīkla tērzēšanai # Network messages STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Neviena tīkla iekārta nav atrasta vai kompilēta bez ENABLE_NETWORK STR_NETWORK_ERROR_NOSERVER :{WHITE}Nevar atrast nevienu tīkla spēli STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Serveris neatbild uz pieprasījumu STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Nevar pieslēgties sakarā ar NewGRF neatbilstību STR_NETWORK_ERROR_DESYNC :{WHITE}Tīkla spēles sinhronizācija neizdevās STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Tīkla spēlei zudis savienojums STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Nevar ielādēt saglabāto spēli STR_NETWORK_ERROR_SERVER_START :{WHITE}Nevar uzsākt servera darbību STR_NETWORK_ERROR_CLIENT_START :{WHITE}Nevar savienot STR_NETWORK_ERROR_TIMEOUT :{WHITE}Savienojuma #{NUM} laiks ir beidzies STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Tika pielaista protokola kļūda un savienojums tika slēgts STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Klienta pārskats neatbilst servera pārskatam STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Nepareiza parole STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serveris ir pilns STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Šajā serverī jums ir aizliegums STR_NETWORK_ERROR_KICKED :{WHITE}Jūs esat izmests no šīs spēles STR_NETWORK_ERROR_CHEATER :{WHITE}Uz šī servera blēdības nav atļautas STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Jūs sūtījāt uz serveri pārak daudz rīkojumu STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Jūs pārāk ilgi neievadījāt paroli STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Jūsu dators ir pārāk lēns lai turētos līdzi servera ātrumam STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Jūsu dators pārāk ilgi lejupielādēja karti STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Jūsu dators pārāk ilgi pievienojās serverim ############ Leave those lines in this order!! STR_NETWORK_ERROR_CLIENT_GENERAL :galvenā kļūda STR_NETWORK_ERROR_CLIENT_DESYNC :asinhronizācijas kļūda STR_NETWORK_ERROR_CLIENT_SAVEGAME :nevar ielādēt karti STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :pazudis savienojums STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokola kļūda STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF neatbilstība STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nav autorizēts STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :saņemta nederīga vai neparedzēta pakete STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :nepareiza versija STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :šo vārdu jau lieto STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :nepareiza parole STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :VeiktKomandā nepareizs uzņēmums STR_NETWORK_ERROR_CLIENT_KICKED :serveris jūs izmeta STR_NETWORK_ERROR_CLIENT_CHEATER :mēģināja blēdīties STR_NETWORK_ERROR_CLIENT_SERVER_FULL :serveris pilns STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :sūtīja pārak daudz rīkojumu STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :parole nav saņemta laikā STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :vispārējā noildze STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :kartes lejupielāde bija pārāk ilga STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :kartes apstrāde bija pārāk ilga ############ End of leave-in-this-order STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Iespējams savienojuma zudums STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}Nav datu no servera jau {NUM} sekund{P i es ""} # Network related errors STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} ############ Leave those lines in this order!! STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spēle pauzēta ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spēle joprojām pauzēta ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spēle joprojām pauzēta ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spēle joprojām pauzēta ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spēle vēl aizvien ir pauzēta ({STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spēle atsākta ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :spēlētāju skaits STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :savieno spēlētājus STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuālā STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spēles skripts ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :aizeju STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ir pievienojies spēlei STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ir pievienojies spēlei (Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} ir pievienojies uzņēmumam #{2:NUM} STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ir pievienojies novērotājiem STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ir nodibinājis jaunu uzņēmumu (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ir pametis spēli ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ir nomainījis savu nosaukumu uz {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} iedeva jūsu uzņēmumam {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Jūs iedevāt {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serveris beidza sesiju STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serveris pārstartējas...{}Lūdzu uzgaidiet... # Content downloading window STR_CONTENT_TITLE :{WHITE}Satura lejupielāde STR_CONTENT_TYPE_CAPTION :{BLACK}Tips STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Satura tips STR_CONTENT_NAME_CAPTION :{BLACK}Nosaukums STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Satura nosaukums STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Klikšķināt uz rindiņas, lai redzētu īpašības{}Klikšķināt uz izvēles rūtiņas, lai to atzīmētu lejupielādei STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Atlasīt visu STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Atzīmēt visu saturu lejupielādei STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Atlasīt jauninājumus STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Atzīmēt visu saturu lejupielādei, lai tas ir jauninājums jau esošajam STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Atcelt visu atlasi STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Noņemt visas satura lejupielādes atzīmes STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Meklēt ārējās vietnēs STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Meklēt OpenTTD pakalpojumos nepieejamu saturu ar OpenTTD nesaistītās vietnēs STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Jūs aizejat no OpenTTD! STR_CONTENT_FILTER_TITLE :{BLACK}Atzīmju/nosaukumu filtrs: STR_CONTENT_OPEN_URL :{BLACK}Apmeklēt tīmekļa vietni STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Apmeklēt tīmekļa vietni, lai tiktu pie šī satura STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Lejupielādēt STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Sākt atlasītā lejupielādi STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Lejupielādes kopējais lielums: {WHITE}{BYTES} STR_CONTENT_DETAIL_TITLE :{SILVER}SATURA INFORMĀCIJA STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Šo jūs neesat atlasījis lejupielādei STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Šo jūs esat atlasījis lejupielādei STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Šis atkarīgais materiāls ir iezīmēts lejupielādei. STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Šis jums jau ir STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Šī materiāla saturs ir nezināms, tādēļ to nav iespejams lejupielādēt OpenTTD STR_CONTENT_DETAIL_UPDATE :{SILVER}Šis ir jau esoša {STRING} aizstāšanai STR_CONTENT_DETAIL_NAME :{SILVER}Nosaukums: {WHITE}{STRING} STR_CONTENT_DETAIL_VERSION :{SILVER}Versija: {WHITE}{STRING} STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Apraksts: {WHITE}{STRING} STR_CONTENT_DETAIL_URL :{SILVER}Tīmekļa adrese: {WHITE}{STRING} STR_CONTENT_DETAIL_TYPE :{SILVER}Tips: {WHITE}{STRING} STR_CONTENT_DETAIL_FILESIZE :{SILVER}Lejupielādes lielums: {WHITE}{BYTES} STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Atlasīts, jo: {WHITE}{STRING} STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Atkarības: {WHITE}{STRING} STR_CONTENT_DETAIL_TAGS :{SILVER}Atzīmes: {WHITE}{STRING} STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD ir būvēta bez ''zlib'' atbalsta... STR_CONTENT_NO_ZLIB_SUB :{WHITE}... lejuplādēt saturu nav iespējams! # Order of these is important! STR_CONTENT_TYPE_BASE_GRAPHICS :Pamata grafika STR_CONTENT_TYPE_NEWGRF :NewGRF STR_CONTENT_TYPE_AI :MI STR_CONTENT_TYPE_AI_LIBRARY :MI bibliotēka STR_CONTENT_TYPE_SCENARIO :Scenārijs STR_CONTENT_TYPE_HEIGHTMAP :Augstumu karte STR_CONTENT_TYPE_BASE_SOUNDS :Pamata skaņas efekti STR_CONTENT_TYPE_BASE_MUSIC :Pamata mūzika STR_CONTENT_TYPE_GAME_SCRIPT :Spēles skripts STR_CONTENT_TYPE_GS_LIBRARY :SS bibliotēka # Content downloading progress window STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Lejupielādē saturu... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Pieprasa failus... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Šobrīd lejupielādē {STRING} ({NUM} no {NUM}) STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Lejupielāde pabeigta STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} no {BYTES} lejupielādēts ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Nav iespējams savienoties ar satura serveri... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Lejupielāde neizdevās... STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... pazudis savienojums STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fails nav rakstāms STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Neizdevās atspiest lejupielādēto failu STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Trūkst grafikas STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD vajag grafiku, lai strādātu, bet tādu nevarēja atrast. Vai ļaujat OpenTTD lejupielādēt un instalēt tādu grafiku? STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Jā, lejupielādēt grafiku STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nē, iziet no OpenTTD # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Caurspīdības opcijas STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Pārslēgt zīmju caurspīdību. Ctrl+klikšķis lai slēgtu STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Pārslēgt koku caurspīdību. Ctrl+klikšķis lai slēgtu STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Pārslēgt ēku caurspīdību. Ctrl+klikšķis lai slēgtu STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Pārslēgt ražotņu caurspīdību. Ctrl+klikšķis lai slēgtu STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Pārslēgt caurspīdību tādām ēkām kā depo, stacijas un pieturas punkti. Ctrl+klikšķis lai slēgtu. STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Pārslēgt tiltu caurspīdību. Ctrl+klikšķis, lai slēgtu STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Pārslēgt caurspīdību tādām celtnēm kā bākas un antenas. Ctrl+klikšķis, lai slēgtu STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Pārslēgt piekartroses caurspīdību. Ctrl+klikšķis, lai slēgtu STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Pārslēgt piekraušanas rādītāju caurspīdību. Ctrl+klikšķis, lai slēgtu STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Caurspīdības vietā objektus padarīt neredzamus # Linkgraph legend window # Linkgraph legend window and linkgraph legend in smallmap # Base for station construction window(s) STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Pārklājuma iezīmēšana STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Nav STR_STATION_BUILD_COVERAGE_ON :{BLACK}Ir STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Neiezīmēt jaunceļamā objekta pārklājumu STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Iezīmēt jaunceļamā objekta pārklājumu STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Pieņem: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Piegādā: {GOLD}{CARGO_LIST} # Join station window STR_JOIN_STATION_CAPTION :{WHITE}Pievienot staciju STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Būvēt atdalītu staciju STR_JOIN_WAYPOINT_CAPTION :{WHITE}Pievienot pieturas punktu STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Uzbūvēt jaunu maršruta punktu # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Dzelzceļa būvniecība STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrificētā dzelzceļa būvniecība STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Viensliedes būvniecība STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Magleva būvēšana STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Būvēt sliedes. Ctrl pārslēdz sliežu būvniecību/nojaukšanu. Shift pārslēdz būve/rādīt izmaksu tāmi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Būvēt dzelzceļu, izmantojot automātisko sliežu režīmu. Ctrl pārslēdz sliežu būvniecību/demolēšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Būvēt vilcienu depo (vilcienu pirkšanai un apkopei). Shift pārslēdz būvi/rādīt izmaksu tāmi STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Pārveidot sliedes par pieturas punktu. Ctrl iespējo pieturas punktu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Būvēt dzelzceļa staciju. Ctrl iespējo staciju apvienošanu. Shift pārslēdz būve/rādīt izmaksu tāmi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Būvēt dzelzceļa signālus. Ctrl pārslēdz semaforus/luksoforus{}Vilkšana uzbūvē signālus uz taisna sliežu posma. Ctrl uzbūvē signālus līdz nākamajam sazarojumam{}Ctrl+klikšķis pārslēdz signālu izvēles loga atvēršanu. Shift pārslēdz būve/rādīt izmaksu tāmi STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Būvēt dzelzceļa tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Būvēt dzelzceļa tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Pārslēgties starp sliežu, signālierīču, pieturas punktu būvēšanu/noņemšanu. Aizturēt Ctrl, lai noņemtu arī sliedes no pieturas punktiem un stacijām STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Pārveidot/uzlabot sliežu veidu. Shift pārslēdz būvēšanu/izmaksu novērtējumu rādīšanu STR_RAIL_NAME_RAILROAD :Dzelzceļš STR_RAIL_NAME_ELRAIL :Elektrificēts dzelzceļš STR_RAIL_NAME_MONORAIL :Viensliedes STR_RAIL_NAME_MAGLEV :Maglevs # Rail depot construction window STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Vilcienu depo virziens STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties vilcienu depo virzienu # Rail waypoint construction window STR_WAYPOINT_CAPTION :{WHITE}Pieturas punkts STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Izvēlēties pieturas punkta veidu # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Dzelzceļa stacijas izvēle STR_STATION_BUILD_ORIENTATION :{BLACK}Virziens STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties dzelzceļa stacijas virzienu STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Platformu skaits STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Izvēlēties platformu skaitu dzelzceļa stacijai STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Platformas garums STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Izvēlēties dzelzceļa stacijas garumu STR_STATION_BUILD_DRAG_DROP :{BLACK}Vilkt un nomest STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Būvēt staciju izmantojot "vilkt un nomest" STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Izvēlēties kuru stacijas klasi rādīt STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Izvēlēties kuru stacijas veidu būvēt STR_STATION_CLASS_DFLT :Noklusējuma stacija STR_STATION_CLASS_WAYP :Pieturas punkti # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Signāla izvēle STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Bloka signālierīce (semafors){}Šis ir pats vienkāršākais signālierīces veids, kas ļauj uz bloka vienlaicīgi atrasties tikai vienam vilcienam STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ieejas signālierīce (semafors){}Zaļš kamēr ir viens vai vairāki zaļi izejas signāli no sekojošās sliežu sekcijas. Citādi signāls būs sarkans STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Izejas signālierīce (semafors){}Uzvedas tāpat kā bloka signālierīce, bet tā ir nepieciešama, lai pirmssignālu ierīces rādītu pareizās krāsas STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Kombinētā signālierīce (semafors){} Kombinētā signālierīce darbojas gan kā izejas, gan ieejas signāls. Tas ļauj radīt lielus pirmssignālu tīklus STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Ceļa signāls (semafors){}Ceļa signāls ļauj vairāk kā vienam vilcienam iebraukt signāla blokā vienlaicīgi, ja vien vilciens var rezervēt drošu apstāšanās punktu. Parastiem ceļa signāliem var pabraukt garām no aizmugures STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Viena virziena ceļa signālierīce (semafors){}Viena virziena ceļa signāls ļauj vairāk kā vienam vilcienam iebraukt signāla blokā vienlaicīgi, ja vien vilciens var rezervēt drošu apstāšanās punktu. Šai signālierīcei nevar pabraukt garām no aizmugures STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Bloka signāls (luksofors){}Šis ir vienkāršākais, kas ļauj atrasties uz bloka vienlaicīgi tikai vienam vilcienam STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ieejas signāls (luksofors){}Zaļš līdz parādās vēl viens vai vairāki zaļi izejas signāli no šīs sliežu sekcijas. Citādi tas parādās sarkans STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Izejas signālierīce (luksofors){}Uzvedas tāpat kā bloka signālierīce, bet tā ir nepieciešama, lai pirmssignālu ierīces rādītu pareizās krāsas STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Kombinētā signālierīce (luksofors){} Kombinētā signālierīce darbojas gan kā izejas, gan ieejas signāls. Tas ļauj radīt lielus pirmssignālu tīklus STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Ceļa signāls (luksofors){}Ceļa signāls ļauj vairāk kā vienam vilcienam iebraukt signāla blokā vienlaicīgi, ja vien vilciens var rezervēt drošu apstāšanās punktu. Parastiem ceļa signāliem var pabraukt garām no aizmugures STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Vienvirziena ceļa signālierīce (elektriska){}Ceļa signāls ļauj iebraukt signāla blokā vairāk kā vienam vilcienam vienlaicīgi, ja vien vilciens var rezervēt drošu apstāšanās punktu. Vienvirziena ceļa signālierīcēm nevar pabraukt garām no aizmugures STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Signālierīču pārveidotājs{}Kad ieslēgts, klikšķis uz jau esošas signālierīces pārveidos to uz norādīto signāla tipu un variantu. Ctrl+klikšķis pārslēgs pašreizējo variantu. Shift+klikšķis rāda pārveidošanas tāmes vērtību STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Vilkt signālu biežumu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Samazināt signālierīču biežumu STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Palielināt signālierīču biežumu # Bridge selection window STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Izvēlēties dzelzceļa tiltu STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Izvēlēties tiltu STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Tiltu izvēle - klikšķināt uz vēlamo tiltu, lai to uzbūvētu STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Vanšu, tērauda STR_BRIDGE_NAME_GIRDER_STEEL :Siju, tērauda STR_BRIDGE_NAME_CANTILEVER_STEEL :Izgriežamais, tērauda STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Vanšu, betona STR_BRIDGE_NAME_WOODEN :Koka STR_BRIDGE_NAME_CONCRETE :Betona STR_BRIDGE_NAME_TUBULAR_STEEL :Cauruļveida, tērauda STR_BRIDGE_TUBULAR_SILICON :Cauruļveida, silīcija # Road construction toolbar STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Ceļu būvniecība STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramvaju sliežu ceļu būvniecība STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Ceļu būves izvēle. Ctrl pārslēdz ceļa būvešanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Tramvaju sliežu būves izvēle. Ctrl pārslēdz tramvaju sliežu būvešanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Būvēt ceļu izmantojot automātiskā ceļa paņēmienu. Ctrl pārslēdz ceļu būvēšanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Būvēt tramvaju sliedes izmantojot automātisko paņēmienu. Ctrl pārslēdz tramvaju sliežu būvēšanu/nojaukšanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Būvēt autotransporta depo (autotransporta līdzekļu pirkšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Būvēt tramvaju depo (tramvaju pirkšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Būvēt autobusu pieturvietu. Ctrl ieslēdz pieturvietu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Būvēt pasažieru tramvaju pieturvietu. Ctrl ieslēdz pieturvietu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Būvēt kravas automobiļu iekraušanas laukumu. Ctrl ieslēdz iekraušanas laukumu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Būvēt kravas tramvaju pieturvietu. Ctrl ieslēdz pieturvietu apvienošanu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Ieslēgt/izslēgt vienvirziena ceļus STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Būvēt ceļa tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Būvēt tramvaju tiltu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Būvēt ceļa tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Būvēt tramvaju tuneli. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Pārslēgties starp ceļa būvēšanas/nojaukšanas režīmiem STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Pārslēgt būvēt/novākt tramvaju būvei # Road depot construction window STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Autotransporta depo virziens STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Izvēlēties autotransporta depo virzienu STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Tramvaju depo virziens STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Izvēlēties tramvaju depo virzienu # Road vehicle station construction window STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Autoostas virziens STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties autoostas virzienu STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Kravas stacijas virziens STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties kravas iekraušanas laukuma virzienu STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Pasažieru tramvaju pieturvietasas virziens STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties pasažieru tramvaju pieturvietas virzienu STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Kravas tramvaju pieturvietas virziens STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties kravas tramvaju pieturvietas virzienu # Waterways toolbar (last two for SE only) STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Ūdensceļu būvniecība STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Ūdensceļi STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Būvēt kanālus. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Būvēt slūžas. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Būvēt kuģu depo (kuģu būvēšanai un apkopei). Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Būvēt kuģu piestātni. Ctrl ieslēdz staciju apvienošanu. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Izvietot boju, kura var kalpot kā pieturas punkts. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Būvēt akveduktu. Shift pārslēdz būvēšanu/izmaksu tāmes rādīšanu STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Norādīt ūdens laukumu.{}Būvēt kanālu. Ja tur nospiestu Ctrl jūras līmenī, tad appludinās apkārtni STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Izvietot upes # Ship depot construction window STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Kuģu depo virziens STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Izvēlēties kuģu depo virzienu # Dock construction window STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Piestātne # Airport toolbar STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Lidostas STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Būvēt lidostu. Ctrl ieslēdz staciju apvienošanu. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu # Airport construction window STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Lidostas izvēle STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Izvēlēties lidostas lielumu/veidu STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Lidostas klase STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}{NUM}. izkārtojums STR_AIRPORT_SMALL :Maza STR_AIRPORT_CITY :Lielpilsēta STR_AIRPORT_METRO :Metropolitēns STR_AIRPORT_INTERNATIONAL :Starptautiskā lidosta STR_AIRPORT_COMMUTER :Ikdienas satiksme STR_AIRPORT_INTERCONTINENTAL :Starpkontinentālā STR_AIRPORT_HELIPORT :Helikopteru osta STR_AIRPORT_HELIDEPOT :Helikopteru depo STR_AIRPORT_HELISTATION :Helikopteru stacija STR_AIRPORT_CLASS_SMALL :Mazas lidostas STR_AIRPORT_CLASS_LARGE :Lielās lidostas STR_AIRPORT_CLASS_HUB :Centra lidostas STR_AIRPORT_CLASS_HELIPORTS :Helikopteru lidostas STR_STATION_BUILD_NOISE :{BLACK}Radītais troksnis: {GOLD}{COMMA} # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Ainavas veidošana STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Pazemināt zemes stūri. Vilkšana pazemina pirmo izvēlēto stūri un nolīdzina izvēlēto laukumu uz stūra jauno augstumu. Ctrl iezīmē laukumu diagonāli. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Pacelt zemes stūri. Vilkšana paceļ pirmo izvēlēto stūri un nolīdzina izvēlēto laukumu uz stūra jauno augstumu. Ctrl iezīmē laukumu diagonāli. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Izlīdzināt zemes laukumu pirmā izvēlētā stūra augstumā. Ctrl iezīmē laukumu diagonāli. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Pirkt zemi vēlākai lietošanai. Shift pārslēdz būvēšanu/izmaksu novērtējuma rādīšanu # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Objektu izvēle STR_OBJECT_BUILD_TOOLTIP :{BLACK}Izvēlēties objektu būvniecībai. Shift pārslēdz būvniecību/izmaksu attēlošanu STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Izvēlēties būvējamā objekta klasi STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objekta priekšskatījums STR_OBJECT_BUILD_SIZE :{BLACK}Izmērs: {GOLD}{NUM} x {NUM} lauciņi STR_OBJECT_CLASS_LTHS :Bākas STR_OBJECT_CLASS_TRNS :Raidītāji # Tree planting window (last two for SE only) STR_PLANT_TREE_CAPTION :{WHITE}Koki STR_PLANT_TREE_TOOLTIP :{BLACK}Izvēlēties koka veidu stādīšanai. Ja lauciņš jau ir koks, tas pievienos vairāk jauktu veidu kokus neatkarīgi no izvēlētā veida STR_TREES_RANDOM_TYPE :{BLACK}Nejauši izvēlēta veida koki STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Izvietot nejaušus kokus. Shift pārslēdz būve/rādīt izmaksu tāmi STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nejauši koki STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt nejaušus kokus uz kartes # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Zemes radīšana STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Ainavā novietot akmeņainus apvidus STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Norādīt tuksneša laukumu.{}Turēt nospiestu Ctrl, lai to noņemtu STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Palielināt zemes apgabalu pazemināšanai/paaugstināšanai STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Samazināt zemes apgabalu pazemināšanai/paaugstināšanai STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Radīt nejaušu zemi STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Izveidot jaunu scenāriju STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Atiestatīt ainavu STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Novākt visus spēlētājam piederošos īpašumus no kartes STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Atiestatīt ainavu STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Vai tiešām vēlaties novākt visus uzņēmumam piederošos īpašumus? # Town generation window (SE) STR_FOUND_TOWN_CAPTION :{WHITE}Pilsētu radīšana STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Jauna pilsēta STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Dibināt jaunu pilsētu. Shift+klikšķis rāda tikai izmaksu tāmi STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Nejauša pilsēta STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Dibināt pilsētu nejaušā vietā STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Daudz nejauši izveidotu pilsētu STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Pārklāt karti ar nejauši izvietotām pilsētām STR_FOUND_TOWN_NAME_TITLE :{YELLOW} Pilsētas nosaukums: STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Ievadīt pilsētas nosaukumu STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Klikšķināt, lai ievadītu pilsētas nosaukumu STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Gadījuma nosaukums STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Radīt jaunu gadījuma nosaukumu STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Pilsētas izmēri: STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Mazs STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Vidējs STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Liels STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Nejaušs STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Izvēlēties pilsētas izmērus STR_FOUND_TOWN_CITY :{BLACK}Lielpilsēta STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Lielpilsētas attīstās ātrāk kā pilsētas{}Atkarībā no iestatījumiem, dibināšanas brīdī tās ir lielākas STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Pilsētas ceļu izskats: STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Atlasīt šajā pilsētā lietojamo ceļu izkārtojumu STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Sākotnēji STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Labāki ceļi STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 režģis STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 režģis STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Nejaušs # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Finansēt jaunu ražotni STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Izvēlēties no saraksta atbilstošu ražotni STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Daudz nejauši izveidotu ražotņu STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pārklāt karti ar nejauši izvietotām ražotnēm STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Izmaksā: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Pētīt STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Būvēt STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansēt # Industry cargoes window STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ražotnes '{STRING}' kravu ķēde STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}{STRING} kravas ražotņu ķēde STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Ražotāji STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Patērētāji STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Mājas STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Klikšķināt uz ražotnes, lai redzētu tās piegādātājus un patērētājus STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Klikšķināt uz kravas, lai redzētu tās piegādātājus un patērētājus STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Rādīt ķēdi STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Rādīt kravas ražojošās un patērējošās ražotnes STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Piesaistīt minikartei STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Izvēlēties arī minikartē attēlotās rūpnīcas STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Atlasīt kravu STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Izvēlēties, kuru kravu ir jāattēlo STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Atlasīt ražotni STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Izvēlēties, kuru ražotni ir jāattēlo # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Zemes platības informācija STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Notīrīšanas izmaksa: {LTBLUE}nav zināma STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Notīrīšanas izmaksa: {RED}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ieņēmumi pēc notīrīšanas: {LTBLUE}{CURRENCY_LONG} STR_LAND_AREA_INFORMATION_OWNER_N_A :Nav STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Īpašnieks: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Ceļa īpašnieks: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvaju ceļa īpašnieks: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dzelzceļa īpašnieks: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_RAIL_OWNER.kas :{G=f}{BLACK}Dzelzceļa īpašniece: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pašvaldība: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Neviena STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinātes: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Uzbūvēts: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacijas klase: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stacijas tips: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Lidostas klase: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Lidostas nosaukums: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lidostas lauciņa nosaukums: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Pieņem kravu: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Sliežu ātruma ierobežojums: {LTBLUE}{VELOCITY} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_ROCKS :Akmeņi STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Nelīdzena zeme STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Kaila zeme STR_LAI_CLEAR_DESCRIPTION_GRASS :Zālājs STR_LAI_CLEAR_DESCRIPTION_FIELDS :Lauki STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Apsnigusi zeme STR_LAI_CLEAR_DESCRIPTION_DESERT :Tuksnesis STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} sliedes STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} ceļš ar bloķēšanas signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} sliedes ar pirmssignālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} sliedes ar izejas signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} sliedes ar kombinētajām signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} sliedes ar ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} sliedes ar vienvirziena ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} sliedes ar bloka un pirmssignālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} sliedes ar bloka un izejas signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} sliedes ar bloka un kombinētajām signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} sliedes ar bloka un ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} sliedes ar bloka un vienvirziena ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} sliedes ar izejas un pirmssignālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} sliedes ar kombinētajām un pirmssignālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} sliedes ar ceļu un pirmssignālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} sliedes ar vienvirziena ceļu un pirmssignālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} sliedes ar izejas un kombinētajām signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} sliedes ar izejas un ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} sliedes ar izejas un vienvirziena ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} sliedes ar kombinētajām un ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} sliedes ar kombinētajām un vienvirziena ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} sliedes ar ceļa un vienvirziena ceļa signālierīcēm STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} vilcienu depo STR_LAI_ROAD_DESCRIPTION_ROAD :Ceļš STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Ceļš ar ielu apgaismojumu STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Aleja STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Autotransporta depo STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Dzelzceļa pārbrauktuve STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Tramvajs # Houses come directly from their building names STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (notiek būvdarbi) STR_LAI_TREE_NAME_TREES :Koki STR_LAI_TREE_NAME_RAINFOREST :Lietus meži STR_LAI_TREE_NAME_CACTUS_PLANTS :Kaktusi STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Dzelzceļa stacija STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Lidaparātu angārs STR_LAI_STATION_DESCRIPTION_AIRPORT :Lidosta STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Kravas iekraušanas zona STR_LAI_STATION_DESCRIPTION_BUS_STATION :Autoosta STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Kuģu piestātne STR_LAI_STATION_DESCRIPTION_BUOY :Boja STR_LAI_STATION_DESCRIPTION_WAYPOINT :Pieturas punkts STR_LAI_WATER_DESCRIPTION_WATER :Ūdens STR_LAI_WATER_DESCRIPTION_CANAL :Kanāls STR_LAI_WATER_DESCRIPTION_LOCK :Slūžas STR_LAI_WATER_DESCRIPTION_RIVER :Upe STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Jūras vai upes krasts STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Kuģu depo # Industries come directly from their industry names STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Dzelzceļa tunelis STR_LAI_TUNNEL_DESCRIPTION_ROAD :Autoceļa tunelis STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Tērauda vanšu dzelzceļa tilts STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Tērauda dzelzceļa tilts STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Tērauda konsoles dzelzceļa tilts STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Dzelzbetona vanšu dzelzceļa tilts STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Koka dzelzeļa tilts STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Betona dzelzceļa tilts STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Cauruļveida dzelzceļa tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Tērauda vanšu tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Tērauda tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Tērauda konsoles tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Dzelzbetona vanšu tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Koka tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Betona tilts STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Cauruļveida tilts STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Akvadukts STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Raidītājs STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Bāka STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Uzņēmuma birojs STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Uzņēmumam piederoša zeme # About OpenTTD window STR_ABOUT_OPENTTD :{WHITE}Par OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oriģināla autortiesības {COPYRIGHT} 1995 Kriss Sojers. Visas tiesības paturētas STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD darba grupa # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli STR_SAVELOAD_LOAD_CAPTION :{WHITE}Ielādēt spēli STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Saglabāt scenāriju STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Ielādēt scenāriju STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Ielādēt augstumu karti STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Saglabāt augstumu karti STR_SAVELOAD_HOME_BUTTON :{BLACK}Klikšķināt šeit, lai pārietu uz pašreizējo saglabāšanas/ielādēšanas mapi STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} brīv{P s i u} STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Disku, mapju un saglabāto spēļu failu saraksts STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Šobrīd izvēlētais saglabājamās spēles nosaukums STR_SAVELOAD_DELETE_BUTTON :{BLACK}Dzēst STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Dzēst šobrīd atlasīto saglabāto spēli STR_SAVELOAD_SAVE_BUTTON :{BLACK}Saglabāt STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Saglabāt šo spēli izmantojot izvēlēto nosaukumu STR_SAVELOAD_LOAD_BUTTON :{BLACK}Ielādēt STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Ielādēt izvēlēto spēli STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spēles īpašības STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nav pieejamas informācijas STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_OSKTITLE :{BLACK}Ievadīt saglabātās spēles nosaukumu # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Pasaules radīšana STR_MAPGEN_MAPSIZE :{BLACK}Kartes izmēri: STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Pilsētu daudzums: STR_MAPGEN_DATE :{BLACK}Datums: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Ražotņu daudzums: STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sniega līnijas augstums STR_MAPGEN_SNOW_LINE_UP :{BLACK}Paaugstināt sniega līnijas augstumu STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pazemināt sniega līnijas augstumu STR_MAPGEN_RANDOM_SEED :{BLACK}Nejaušs sākums: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikšķināt, lai ievadītu nejaušu sākumu STR_MAPGEN_RANDOM :{BLACK}Nejaušs STR_MAPGEN_RANDOM_HELP :{BLACK}Mainīt apvidus radīšanā izmantoto nejaušo sākumu STR_MAPGEN_LAND_GENERATOR :{BLACK}Zemes radītājs: STR_MAPGEN_TREE_PLACER :{BLACK}Koku algoritms: STR_MAPGEN_TERRAIN_TYPE :{BLACK}Apvidus reljefs: STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Jūras līmenis: STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Upes: STR_MAPGEN_SMOOTHNESS :{BLACK}Gludums: STR_MAPGEN_VARIETY :{BLACK}Dažādības sadalījums: STR_MAPGEN_GENERATE :{WHITE}Radīt # Strings for map borders at game generation STR_MAPGEN_BORDER_TYPE :{BLACK}Kartes malas: STR_MAPGEN_NORTHWEST :{BLACK}Ziemeļrietumi STR_MAPGEN_NORTHEAST :{BLACK}Ziemeļaustrumi STR_MAPGEN_SOUTHEAST :{BLACK}Dienvidaustrumi STR_MAPGEN_SOUTHWEST :{BLACK}Dienvidrietumi STR_MAPGEN_BORDER_FREEFORM :{BLACK}Brīvā forma STR_MAPGEN_BORDER_WATER :{BLACK}Ūdens STR_MAPGEN_BORDER_RANDOM :{BLACK}Nejauša STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Nejaušas STR_MAPGEN_BORDER_MANUAL :{BLACK}Manuāli STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Augstumu kartes pagriešana: STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Augstumu kartes nosaukums: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Lielums: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Ievadīt nejaušu sākumu STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mainīt sniega līnijas augstumu STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mainīt sākuma gadu # SE Map generation STR_SE_MAPGEN_CAPTION :{WHITE}Scenārija veids STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Līdzena zeme STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Radīt līdzenu zemi STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Nejauša zeme STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Līdzenas zemes augstums: STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Par vienu līmeni samazināt līdzenas zemes augstumu STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Par vienu līmeni palielināt līdzenas zemes augstumu STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Mainīt zemes augstumu # Map generation progress STR_GENERATION_WORLD :{WHITE}Pasaules radīšana... STR_GENERATION_ABORT :{BLACK}Atcelt STR_GENERATION_ABORT_CAPTION :{WHITE}Atcelt pasaules radīšanu STR_GENERATION_ABORT_MESSAGE :{YELLOW}Vai jūs patiešām vēlaties atcelt radīšanu? STR_GENERATION_PROGRESS :{WHITE}{NUM}% pabeigti STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} STR_GENERATION_WORLD_GENERATION :{BLACK}Pasaules radīšana STR_GENERATION_RIVER_GENERATION :{BLACK}Upes radīšana STR_GENERATION_TREE_GENERATION :{BLACK}Koka radīšana STR_GENERATION_OBJECT_GENERATION :{BLACK}Objekta radīšana STR_GENERATION_CLEARING_TILES :{BLACK}Nelīdzena un akmeņaina apvidus radīšana STR_GENERATION_SETTINGUP_GAME :{BLACK}Iestatīt spēli STR_GENERATION_PREPARING_TILELOOP :{BLACK}Skrejošs nosaukums STR_GENERATION_PREPARING_SCRIPT :{BLACK}Strādājošs skripts STR_GENERATION_PREPARING_GAME :{BLACK}Sagatavo spēli # NewGRF settings STR_NEWGRF_SETTINGS_CAPTION :{WHITE}NewGRF iestatījumi STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}NewGRF detalizēta informācija STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Aktīvie NewGRF faili STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Neaktīvie NewGRF faili STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Izvēlēties paraugu: STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtra virkne: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Ielādēt atlasīto iepriekšiestatījumu STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Saglabāt iepriekšiestatījumu STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Saglabāt šo sarakstu kā iepriekšiestatījumu STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Ievadīt iepriekšiestatījuma nosaukumu STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Dzēst iepriekšiestatījumu STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Dzēst šobrīd atlasīto iepriekšiestatījumu STR_NEWGRF_SETTINGS_ADD :{BLACK}Pievienot STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Pievienot atlasītos NewGRF failus jūsu konfigurācijai STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Pārskenēt failus STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Atjaunināt pieejamo NewGRF failu sarakstu STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Noņemt STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Noņemt atlasīto NewGRF failu no saraksta STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Uz augšu STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Pārvietot atlasīto NewGRF failu saraksta augšā STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Uz leju STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Pārvietot atlasīto NewGRF failu saraksta apakšā STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Instalēto NewGRF failu saraksts. STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Iestatīt parametrus STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Rādīt parametrus STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Pārslēgt paleti STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Mainīt atlasītā New GRF paleti.{}Tas jādara ja NewGRF grafika izskatās sārta STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Lietot izmaiņas STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Meklēt pazudušo saturu tiešaisaistē STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Pārbaudīt vai pazudušais saturs nav atrodams tiešsaistē. STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Faila nosaukums: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versija: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Zemākā savietojamā versija: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palete: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametri: {SILVER}{STRING} STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Informācija nav pieejama STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nevar atrast saskanīgu failu STR_NEWGRF_SETTINGS_DISABLED :{RED}Atspējots STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Nav savietojams ar šo OpenTTD versiju # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Mainīt NewGRF parametrus STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Aizvērt STR_NEWGRF_PARAMETERS_RESET :{BLACK}Atjaunot STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Iestatīt visiem parametriem to noklusējuma vērtības STR_NEWGRF_PARAMETERS_DEFAULT_NAME :{NUM}. parametrs STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Parametru skaits: {ORANGE}{NUM} # NewGRF inspect window STR_NEWGRF_INSPECT_CAPTION :{WHITE}Pārbaude - {STRING} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Īpašnieks STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Pārbaudīt objektu no īpašnieka līmeņa STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} adresē {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Objekts STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Sliežu veids STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF mainīgā 60+x parametrs (heksadecimāls) # Sprite aligner window STR_SPRITE_ALIGNER_CAPTION :{WHITE}Gariņa līdzināšana {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Nākamais gariņš STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Pāriet uz nākamo parasto gariņu, izlaižot visus pseido/pārkrāsotos/fonta gariņus STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Iet pie gariņa STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Iet pie dotā gariņa. Ja tas nav parastais gariņš, tad pāriet pie nākamā STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Iepriekšējais gariņš STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Iet pie iepriekšējā parastā gariņa, izlaižot visus pseido/pārkrāsotos/fonta gariņus STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Atlasītā gariņa attēlojums. To attēlojot, izkārtojums netiek ievērots STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pārvietot gariņu, lai mainītu X un Y vērtības STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X garums: {NUM}, Y garums: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Paņemt gariņu STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Paņemt gariņu no jebkuras vietas ekrānā STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Iet pie gariņa # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Brīdinājums: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Kļūda: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatāls: {SILVER}{STRING} STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Notikusi fatāla NewGRF kļūda: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} nedarbosies kopā ar TTDPatch versiju (par ko ziņoja OpenTTD). STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} ir TTD {STRING} versijai STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} ir paredzēts lietošanai kopā ar {STRING} STR_NEWGRF_ERROR_INVALID_PARAMETER :Nepareizs parametrs priekš {1:STRING}: parametrs {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} jābūt ielādētam pirms {STRING}. STR_NEWGRF_ERROR_LOAD_BEFORE.kas :{G=f}{1:STRING} jābūt ielādētai pirms {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} jābūt ielādētam pēc {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER.kas :{G=f}{1:STRING} jābūt ielādētai pēc {STRING}. STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} ir vajadzīga Open TTD versija {STRING} vai labāka STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF fails radīts tulkošanai STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Ir ielādēti pārāk daudzi NewGRF STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Ielādē {1:STRING} kā statisks NewGRF {STRING} var radīt desinhronizāciju STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Neparedzēts gariņš (gariņš {3:NUM}) STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Nezināma Action 0 īpašība {4:HEX} (gariņš {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Mēģinājums izmantot nederīgu ID (gariņš {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} satur bojātu gariņu. Visi bojātie gariņi tiks parādīti ar sarkanu jautājuma zīmi (?) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Satur vairākus Action 8 ierakstus (gariņš {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lasīt aiz pseidogariņa beigām (gariņš {3:NUM}) STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Pašlaik lietotajai pamata grafikas kopai trūkst daļa gariņu.{}Lūdzu atjauniniet pamata grafikas kopu STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Pašlaik lietotajai pamata grafikas kopai trūkst daļa gariņu.{}Lūdzu atjauniniet pamata grafikas kopu.{}Tā kā jūs spēlējat {YELLOW}OpenTTD izstrādes momentuzņēmumu{WHITE}, jums varētu būt nepieciešams arī {YELLOW}pamata grafikas izstrādes momentuzņēmums{WHITE} STR_NEWGRF_ERROR_GRM_FAILED :Pieprasītie GRF resursi nav pieejami (gariņš {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ar {2:STRING} tika atspējots STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Nederīgs/nezināms gariņa izkārtojuma formāts (gariņš {3:NUM}) # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uzmanību! STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jūs grasāties veikt izmaiņas palaistai spēlei. Tas var izraisīt OpenTTD avāriju vai salauzt spēles stāvokli. Par šīm problēmām kļūdu ziņojumus nesūtiet.{}Vai jūs esat par to pilnībā pārliecināts? STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Nevar pievienot failu: vienādi GRF ID STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Atbilstošs fails nav atrasts (ielādēts saderīgs GRF) STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Saderīgs GRF(s) ielādēts pazudušajiem failiem STR_NEWGRF_DISABLED_WARNING :{WHITE}Trūkstošie GRF faili tikuši atspējoti STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Trūkst GRF fails(i) STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Atpauzēšana var izraisīt OpenTTD avāriju. Neziņot izstrādātājiem par šo kļudu.{}Vai patiešām vēlies atpauzēt? # NewGRF status STR_NEWGRF_LIST_NONE :Nekas STR_NEWGRF_LIST_ALL_FOUND :Visi faili ir pieejami STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Atrasti savietojami faili STR_NEWGRF_LIST_MISSING :{RED}Trūkst faili # NewGRF 'it's broken' warnings STR_NEWGRF_BROKEN :{WHITE}NewGRF uzvedība '{0:STRING}' visticamāk izraisīs desinhronizācijas vai avārijas STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Tas mainīja '{1:ENGINE}' vilcējvagona stāvokli ārpus depo STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Tas mainīja transportlīdzekļa '{1:ENGINE}' garumu, kad tas neatradās depo STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vilciens '{VEHICLE}', kas pieder '{COMPANY}' ir ar nepareizu garumu. Iespējams, vainīga problēma ar NewGRF. Spēle var desinhronizēties vai avarēt STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' sniedz nepareizu informāciju STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}'{1:ENGINE}' kravas pielāgošanas informācija pēc izbūves atšķiras no pārdošanas sarakstā norādītās. Tas var liegt automātiskai atjaunošanai/aizvietošanai pareizi pielāgot kravas STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' izraisīja bezgalīgu ražošanas izsaukumu ciklu STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Izsaukums {1:HEX} atgrieza nezināmu vai nederīgu rezultātu {2:HEX} # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : # Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). # NewGRF scanning window STR_NEWGRF_SCAN_CAPTION :{WHITE}Skenē NewGRF STR_NEWGRF_SCAN_MESSAGE :{BLACK}Skenē NewGRF. Atkarībā no apjoma, tas var aizņemt kādu brīdi... STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF noskenēja apmēram {NUM} NewGRF STR_NEWGRF_SCAN_ARCHIVES :Skenē arhīvus # Sign list window STR_SIGN_LIST_CAPTION :{WHITE}Zīmju saraksts - {COMMA} zīm{P e es ju} STR_SIGN_LIST_MATCH_CASE :{BLACK}Saskaņot lielos/mazos burtus STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Pārslēgt lielo/mazo burtu ievērošanu, filtrējot zīmju nosaukumus # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Labot zīmi STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Doties uz nākamo zīmi STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Doties uz iepriekšējo zīmi STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Ievadīt zīmes nosaukumu # Town directory window STR_TOWN_DIRECTORY_CAPTION :{WHITE}Pilsētas STR_TOWN_DIRECTORY_NONE :{G=m}{ORANGE}- Neviens - STR_TOWN_DIRECTORY_NONE.kas :{G=f}{ORANGE}- Neviena - STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Pilsētu nosaukumi - klikšķināt uz nosaukuma, lai centrētu skatu uz to. Ctrl+klikšķis atvērs jaunu skatu lauku uz pilsētu STR_TOWN_POPULATION :{BLACK}Pasaules iedzīvotāju skaits: {COMMA} # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (lielpilsēta) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Iedzīvotāji: {ORANGE}{COMMA}{BLACK} Mājas: {ORANGE}{COMMA} STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasažieri pagājušajā mēnesī: {ORANGE}{COMMA}{BLACK} maksimāli: {ORANGE}{COMMA} STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pasts pagājušajā mēnesī: {ORANGE}{COMMA}{BLACK} maksimāli: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Krava nepieciešama pilsētas attīstībai: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} nepieciešams STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nepieciešams ziemā STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} piegādāts STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (joprojām pieprasīts) STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (piegādāts) STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Pilsēta aug katr{P 0 u as u} {ORANGE}{COMMA}{BLACK} dien{P u as u} STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Pilsēta aug katr{P 0 u as u} {ORANGE}{COMMA}{BLACK} dien{P u as u} (finansēta) STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Pilsēta {RED}neattīstās{BLACK} STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Trokšņu ierobežojums pilsētā: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA} STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz pilsētu. Ctrl+klikšķis atvērs skatu uz pilsētu jaunā skatlaukā STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Pašvaldība STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Rādīt informāciju par pašvaldību STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Pārdēvēt pilsētu STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Paplašināt STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Palielināt pilsētas izmērus STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Izdzēst STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Pilnībā dzēst šo pilsētu STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Pārdēvēt pilsētu # Town local authority window STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} pašvaldība STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Transporta uzņēmumu vērtējumi: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Pieejamās darbības: STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Šajā pilsētā atļauto darbību saraksts - klikšķināt uz atsevišķa priekšmeta, lai uzzinātu vairāk STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Darīt STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Veikt iezīmēto darbību no augstāk esošā saraksta STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Maza reklāmas kampaņa STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Vidēja reklāmas kampaņa STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Liela reklāmas kampaņa STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Finansēt vietējo ceļu rekonstrukciju STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Uzbūvēt uzņēmuma vadītāja statuju STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Finansēt jaunas ēkas STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Pirkt pārvadājumu izņēmuma tiesības STR_LOCAL_AUTHORITY_ACTION_BRIBE :Dot kukuli pašvaldībai STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Veikt mazu reklāmas kampaņu, lai piesaistītu vairāk pasažieru un kravu savam uzņēmumam.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Veikt vidēju reklāmas kampaņu, lai piesaistītu vairāk pasažieru un kravu savam uzņēmumam.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Veikt lielu reklāmas kampaņu, lai piesaistītu vairāk pasažieru un kravu savam uzņēmumam.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Finansēt ceļu remontdarbus. Rada satiksmes traucējumus līdz pat pusgadam.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Uzbūvēt statuju par godu savam uzņēmumam.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Finansēt jaunu komercēku būvniecību šajā pilsētā.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Pirkt 1 gada izņēmuma tiesības uz kravu un pasažieru transportēšanu. Pašvaldība atļaus pasažieriem un kravas pārvešanai izmantot tkai jūsu uzņēmuma stacijas.{}Izmaksas: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Piekukuļot vietējo pašvaldību lai paceltu reitingu, riskējot saņemt lielu sodu.{}Izmaksas: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}Mērķi STR_GOALS_GLOBAL_TITLE :{BLACK}Globālie mērķi: STR_GOALS_TEXT :{ORANGE}{STRING} STR_GOALS_NONE :{ORANGE}- Nav - STR_GOALS_COMPANY_TITLE :{BLACK}Uzņēmuma mērķi: STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz mērķa, lai centrētu galveno skatu uz ražotni/pilsētu/lauciņu. Ctrl+klikšķis atver jaunu skatvietu uz ražotni/pilsētu/lauciņu # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Jautājums STR_GOAL_QUESTION_CAPTION_INFORMATION :Informācija STR_GOAL_QUESTION_CAPTION_WARNING :Brīdinājums STR_GOAL_QUESTION_CAPTION_ERROR :Kļūda ### Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Atcelt STR_GOAL_QUESTION_BUTTON_OK :Labi STR_GOAL_QUESTION_BUTTON_NO :Nē STR_GOAL_QUESTION_BUTTON_YES :Jā STR_GOAL_QUESTION_BUTTON_DECLINE :Noraidīt STR_GOAL_QUESTION_BUTTON_ACCEPT :Pieņemt STR_GOAL_QUESTION_BUTTON_IGNORE :Neievērot STR_GOAL_QUESTION_BUTTON_RETRY :Mēģināt vēl STR_GOAL_QUESTION_BUTTON_PREVIOUS :Iepriekšējais STR_GOAL_QUESTION_BUTTON_PREVIOUS.kas :{G=f}Iepriekšējā STR_GOAL_QUESTION_BUTTON_NEXT :Nākamais STR_GOAL_QUESTION_BUTTON_NEXT.kas :{G=f}Nākamā STR_GOAL_QUESTION_BUTTON_STOP :Apturēt STR_GOAL_QUESTION_BUTTON_START :Sākt STR_GOAL_QUESTION_BUTTON_GO :Doties STR_GOAL_QUESTION_BUTTON_CONTINUE :Turpināt STR_GOAL_QUESTION_BUTTON_RESTART :Pārstartēt STR_GOAL_QUESTION_BUTTON_POSTPONE :Atlikt STR_GOAL_QUESTION_BUTTON_SURRENDER :Padoties STR_GOAL_QUESTION_BUTTON_CLOSE :Aizvērt # Subsidies window STR_SUBSIDIES_CAPTION :{WHITE}Subsīdijas STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Piedāvājumā esošās subsīdijas par pakalpojumu nodrošināšanu: STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} no {STRING} līdz {STRING}{YELLOW} (no {DATE_SHORT}) STR_SUBSIDIES_NONE :{ORANGE}- Neviens - STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Pašlaik subsidētie pakalpojumi: STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} no {STRING} uz {STRING}{YELLOW} ({COMPANY}{YELLOW}, līdz {DATE_SHORT}) STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz servisa, lai iecentrētu skatu uz rūpnīcu/pilsētu. Ctrl+klikšķis atvērs jaunu skatu lauku uz pilsētu/rūpnīcu # Story book window # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Staciju nosaukumi - klikšķināt uz nosaukuma, lai centrētu galveno skatu uz staciju. Ctrl+klikšķis atvērs jaunu skatvietu pie stacijas STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Aizturēt Ctrl, lai izvēlētos vairākus STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} stacij{P a as u} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} STR_STATION_LIST_NONE :{YELLOW}- Nav - STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Izvēlēties visu aprīkojumu STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Izvēlēties visus kravas veidus (ieskaitot tos kas negaida) STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Neviena veida krava negaida # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_TITLE :{BLACK}Gaida: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} tranzītā no {STATION}) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Pieņem STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Rādīt pieņemamo kravu sarakstu STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Pieņem: {WHITE}{CARGO_LIST} STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Šai stacijai pieder izņēmuma pārvadājumu tiesības šajā pilsētā. STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ir nopirktas izņēmuma pārvadājumu tiesības šajā pilsētā. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vērtējumi STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Rādīt stacijas vērtējumus STR_STATION_VIEW_CARGO_RATINGS_TITLE :{BLACK}Transporta pakalpojumu vietējais vērtējums: STR_STATION_VIEW_CARGO_RATING :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%) ############ range for rating starts STR_CARGO_RATING_APPALLING :drausmīgs STR_CARGO_RATING_VERY_POOR :ļoti vājš STR_CARGO_RATING_POOR :vājš STR_CARGO_RATING_MEDIOCRE :viduvējs STR_CARGO_RATING_GOOD :labs STR_CARGO_RATING_VERY_GOOD :ļoti labs STR_CARGO_RATING_EXCELLENT :lielisks STR_CARGO_RATING_OUTSTANDING :izcils ############ range for rating ends STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz staciju. Ctrl+klikšķis atvērs skatu uz staciju jaunā skatlaukā STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Pārdēvēt staciju STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Rādīt vilcienus, kuru rīkojumu sarakstos ir šī stacija STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Rādīt autotransporta līdzekļus, kuru rīkojumu sarakstos ir šī stacija STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Rādīt lidaparātus, kuru rīkojumu sarakstos ir šī stacija STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Rādīt kuģus, kuru rīkojumu sarakstos ir šī stacija STR_STATION_VIEW_RENAME_STATION_CAPTION :Pārdēvēt staciju/iekraušanas zonu STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Slēgt lidostu STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Novērst lidaparātu nolaišanos šajā lidostā # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz pieturas punktu. Ctrl+klikšķis atvērs skatu uz pieturas punktu jaunā skatulaukā STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Mainīt pieturas punkta nosaukumu STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centrēt galveno skatu uz boju. Ctrl+klikšķis atvērs skatu uz boju jaunā skatulaukā STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Mainīt bojas nosaukumu STR_EDIT_WAYPOINT_NAME :{WHITE}Labot pieturas punkta nosaukumu # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} finanses {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Izdevumi/ienākumi STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Būvniecība STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Jauni transportlīdzekļi STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Vilcienu kārtējās izmaksas STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Autotransporta kārtējās izmaksas STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Lidaparātu kārtējās izmaksas STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Kuģu kārtējās izmaksas STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Īpašumu uzturēšana STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Vilcienu ienākumi STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Autotransporta ienākumi STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Lidaparātu ienākumi STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Kuģu ienākumi STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Aizdevuma procents STR_FINANCES_SECTION_OTHER :{GOLD}Citi STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_TOTAL_CAPTION :{WHITE}Kopā: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bankas bilance STR_FINANCES_LOAN_TITLE :{WHITE}Aizdevums STR_FINANCES_MAX_LOAN :{WHITE}Pieejamais aizdevums: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Aizņemties {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Palielināt aizdevuma apmēru. Ctrl+klikšķis lai aizņemtos cik daudz vien iespējams STR_FINANCES_REPAY_BUTTON :{BLACK}Atmaksāt {CURRENCY_LONG} STR_FINANCES_REPAY_TOOLTIP :{BLACK}Atmaksāt daļu aizdevuma. Ctrl+klikšķis atmaksā cik daudz vien iespējams STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktūra # Company view STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(vadītājs) STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Dibināts: {WHITE}{NUM} STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Identitātes krāsu shēma STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Transportlīdzekļi: STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} vilcien{P s i u} STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} mašīn{P a as u} STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} lidaparāt{P s i u} STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} kuģ{P is i u} STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Neviens STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Uzņēmuma vērtība: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% piederoši {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastruktūra: STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} sliežu gabal{P s i u} STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} ceļa gabal{P s i u} STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} ūdens lauciņ{P š i u} STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} stacijas lauciņ{P š i u} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} lidosta{P "" s u} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nav STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Būvēt biroju STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Būvēt uzņēmuma vadības ēku STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Skatīt biroju STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Rādīt uzņēmuma vadības ēku STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Pārvietot biroju STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Pārcelt uzņēmuma centrālo biroju uz citu vietu samaksājot 1% no uzņēmuma vērtības. Shift+klikšķis parāda izmaksu novērtējumu, nemainot biroja atrašanās vietu STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Sīkāk STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Skatīt detalizētāku infrastruktūras uzskaiti STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Jauna seja STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Izvēlēties jaunu seju vadītājam STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Identitātes krāsu shēma STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Mainīt uzņēmuma transportlīdzekļu identitātes krāsas STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Uzņēmuma nosaukums STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Mainīt uzņēmuma nosaukumu STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Vadītāja vārds STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Mainīt vadītāja vārdu STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Nopirkt 25% daļu uzņēmumā STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Pārdot 25% daļu uzņēmumā STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Nopirkt 25% daļu šajā uzņēmumā. Shift+klikšķis rāda izmaksu novērtējumu, nepērkot akcijas STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Pārdot 25% daļu uzņēmumā. Shift+Ctrl rāda izmaksu novērtējumu, nepārdodot nevienu akciju STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Uzņēmuma nosaukums STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Vadītāja vārds STR_BUY_COMPANY_MESSAGE :{WHITE}Mēs meklējam transporta uzņēmumu, kurš vēlētos pārņemt mūsējo.{}{}Vai Jūs vēlaties pirkt {COMPANY} par {CURRENCY_LONG}? # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY} infrastruktūra STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Sliežu gabali: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signālierīces STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Ceļa gabali: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Ceļš STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvajs STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Ūdens lauciņi: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanāli STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stacijas: STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Staciju lauciņi STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Lidostas STR_COMPANY_INFRASTRUCTURE_VIEW_COST :{WHITE}{1:CURRENCY_LONG} gadā ({0:COMMA}) STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG} gadā # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Ražotnes STR_INDUSTRY_DIRECTORY_NONE :{G=m}{ORANGE}- Neviens - STR_INDUSTRY_DIRECTORY_NONE.kas :{G=f}{ORANGE}- Neviena - STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% pārvadāts) STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% pārvadāts) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Ražotņu nosaukumi - klikšķināt uz nosaukuma, lai centrētu skatu uz ražotni. Ctrl+klikšķis atvērs jaunu skatvietu pie ražotnes # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Iepriekšējā mēnesī saražots: STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (aizvests {COMMA}%) STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz ražotni. Ctrl+klikšķis atvērs skatu uz ražotni jaunā skatlaukā STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ražošanas līmenis: {YELLOW}{COMMA}% ############ range for requires starts STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Nepieciešams: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nepieciešams: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nepieciešams: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends ############ range for produces starts STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Krava, kuru ir jāapstrādā: STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Ražo: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Ražo: {YELLOW}{STRING}{STRING}, {STRING}{STRING} ############ range for produces ends STR_CONFIG_GAME_PRODUCTION :{WHITE}Mainīt ražošanu (dalāmais ar 8, līdz pat 2040) STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mainīt ražošanas līmeni (procentos, līdz 800%) # Vehicle lists STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} vilcien{P s i u} STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} autotransporta līdzek{P lis ļi ļu} STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} kuģ{P is i u} STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} lidaparāt{P s i u} STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - klikšķināt uz vilciena, lai uzzinātu vairāk STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Autotransporta līdzekļi - klikšķināt uz transportlīdzekļa, lai uzzinātu vairāk STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Kuģi - klikšķināt uz kuģa, lai uzzinātu vairāk STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lidaparāts - klikšķināt uz lidaparāta, lai uzzinātu vairāk STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Peļņa šogad: {CURRENCY_LONG} (pērn: {CURRENCY_LONG}) STR_VEHICLE_LIST_AVAILABLE_TRAINS :Pieejamie vilcieni STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Pieejamie transportlīdzekļi STR_VEHICLE_LIST_AVAILABLE_SHIPS :Pieejamie kuģi STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Pieejamie lidaparāti STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Apskatīties visus dzinējus projektējumus, kas pieejami šim transportlīdzekļu veidam. STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Labot sarakstu STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Sūtīt norādījumus visiem transportlīdzekļiem, kas ir šajā sarakstā STR_VEHICLE_LIST_REPLACE_VEHICLES :Nomainīt transportlīdzekļus STR_VEHICLE_LIST_SEND_FOR_SERVICING :Sūtīt uz apkopi STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Sūtīt uz depo STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Sūtīt uz depo STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Sūtīt uz depo STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Sūtīt uz angāru STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klikšķināt, lai apstādinātu visas mašīnas, kas ir sarakstā STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klikšķināt, lai iedarbinātu visas mašīnas, kas ir saraks STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Koplietojamie rīkojumi {COMMA} transportlīdzek{P lim ļiem ļiem} # Group window STR_GROUP_ALL_TRAINS :Visi vilcieni STR_GROUP_ALL_ROAD_VEHICLES :Visi autotransporta līdzekļi STR_GROUP_ALL_SHIPS :Visi kuģi STR_GROUP_ALL_AIRCRAFTS :Visi lidaparāti STR_GROUP_DEFAULT_TRAINS :Negrupēti vilcieni STR_GROUP_DEFAULT_ROAD_VEHICLES :Negrupēti autotransporta līdzekļi STR_GROUP_DEFAULT_SHIPS :Negrupēti kuģi STR_GROUP_DEFAULT_AIRCRAFTS :Negrupēti lidaparāti STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupas - klikšķināt uz grupas, lai iegūtu tās transportlīdzekļu sarakstu STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikšķināt, lai izveidotu grupu STR_GROUP_DELETE_TOOLTIP :{BLACK}Dzēst izvēlēto grupu STR_GROUP_RENAME_TOOLTIP :{BLACK}Pārdēvēt izvēlēto grupu STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikšķināt, lai pasargātu šo grupu no vispārējās automātiskās aizstāšanas STR_GROUP_ADD_SHARED_VEHICLE :Pievienot kopīgos transportlīdzekļus STR_GROUP_REMOVE_ALL_VEHICLES :Novākt visus transportlīdzekļus STR_GROUP_RENAME_CAPTION :{BLACK}Pārdēvēt grupu # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Jauni dzelzceļa transportlīdzekļi STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Jauni elektrificētā dzelzceļa transportlīdzekļi STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Jauni viensliedes vilcieni STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Jauni magleva vilcieni STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Jauni vilcieni STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Jauni autotransporta līdzekļi STR_BUY_VEHICLE_SHIP_CAPTION :Jauni kuģi STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Jauns lidaparāts STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Svars: {GOLD}{WEIGHT_SHORT} STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Ātrums: {GOLD}{VELOCITY}{BLACK} Jauda: {GOLD}{POWER} STR_PURCHASE_INFO_SPEED :{BLACK}Ātrums: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Ātrums okeānā: {GOLD}{VELOCITY} STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Ātrums kanālā/upē: {GOLD}{VELOCITY} STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Kārtējās izmaksas: {GOLD}{CURRENCY_LONG} gadā STR_PURCHASE_INFO_CAPACITY :{BLACK}Ietilpība: {GOLD}{CARGO_LONG} {STRING} STR_PURCHASE_INFO_REFITTABLE :(pielāgojams) STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Projektēts: {GOLD}{NUM}{BLACK} Kalpošanas laiks: {GOLD}{COMMA} gad{P s i u} STR_PURCHASE_INFO_RELIABILITY :{BLACK}Maksimālā uzticamība: {GOLD}{COMMA}% STR_PURCHASE_INFO_COST :{BLACK}Cena: {GOLD}{CURRENCY_LONG} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Svars: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) STR_PURCHASE_INFO_COST_SPEED :{BLACK}Cena: {GOLD}{CURRENCY_LONG}{BLACK} Ātrums: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Ietilpība: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Motorvagoni: {GOLD}+{POWER}zs{BLACK} Svars: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Pielāgojams uz: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Visi kravu veidi STR_PURCHASE_INFO_ALL_BUT :visu, izņemot {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maksimālais vilces spēks: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Apgabas: {GOLD}{COMMA} lauciņi STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vilciena vagonu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Autotransporta atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Kuģu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparātu atlasīšanas saraksts - klikšķināt uz transportlīdzekļa, lai iegūtu informāciju STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Pirkt transportlīdzekli STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Pirkt autotransporta līdzekli STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Pirkt kuģi STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Pirkt lidaparātu STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto vilciena vagonu. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto transportlīdzekli. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt atzīmēto kuģi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Pirkt izvēlēto lidaparātu. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Pārdēvēt STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Pārdēvēt STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Pārdēvēt STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Pārdēvēt STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Pārdēvēt vilciena vagona tipu STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Pārdēvēt autotransporta līdzekļa tipu STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Pārdēvēt kuģa tipu STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Pārdēvēt lidaparāta tipu STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Pārdēvēt vilciena vagona tipu STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Pārdēvēt autotransporta līdzekļa tipu STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Pārdēvēt kuģa tipu STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Pārdēvēt lidaparāta tipu # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Nomainīt depo nosaukumu STR_DEPOT_RENAME_DEPOT_CAPTION :Pārdēvēt depo STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} transportlīdzek{P lis ļi ļu}{STRING} STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vilcieni - villkt sastāva daļu, lai pievienotu/atvienotu no vilciena. Klikšķināt uz vilciena, lai iegūtu informāciju. Turēt piespiestu Ctrl, lai attiecinātu abas funkcijas sekojošajai ķēdei STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Transportlīdzekļi - labais klikšķis uz transportlīdzekļa, lai uzzinātu vairāk STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Kuģi - labais klikšķis uz kuģa, lai uzzinātu vairāk STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lidaparāti - labais klikšķis uz lidaparāta, lai uzzinātu vairāk STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Pārvilkt vilciena vagonu uz šejieni, lai to pārdotu STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Pārvilkt autotransporta līdzekli uz šejieni, lai to pārdotu STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Pārvilkt kuģi uz šejieni, lai to pārdotu STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Pārvilkt lidaparātu uz šejieni, lai to pārdotu STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Pārvilkt vilciena lokomotīvi uz šejieni, lai pārdotu visu vilcienu STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Pārdot visus vilcienus, kas atrodas depo STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Pārdot visu autotransportu, kas atrodas depo STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Pārdot visus kuģus, kas atrodas depo STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Pārdot visus lidaparātus, kas atrodas angārā STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Automātiski nomainīt visus vilcienu depo STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Automātiski nomainīt visus transportus depo STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Automātiski nomainīt visus kuģus depo STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Automātiski nomainīt visus lidaparātus angārā STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Jauni transportlīdzekļi STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Jauni transportlīdzekļi STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Jauni kuģi STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Jauns lidaparāts STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Pirkt jaunu vilciena vagonu STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Pirkt jaunu autortansporta līdzekli STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Pirkt jaunu kuģi STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Pirkt jaunu lidaparātu STR_DEPOT_CLONE_TRAIN :{BLACK}Klonēt vilcienu STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Klonēt transportīdzekli STR_DEPOT_CLONE_SHIP :{BLACK}Klonēt kuģi STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klonēt lidaparātu STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Tas nopirks vilciena kopiju ar visiem vagoniem. Spiediet šo pogu un pēc tam uz vilciena, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Tas nopirks autotransporta kopiju. Spiediet uz pogas un pēc tam uz autotransporta, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Tas nopirks kuģa kopiju. Spiediet šo pogu un pēc tam uz kuģa, kas atrodas depo vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Tas pirks lidaparāta kopiju. Spiediet uz pogas un pēc tam uz lidaparāta, kas atrodas angārā vai ārpus tā. Ctrl+klikšķis, lai koplietotu rīkojumus. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz vilcienu depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz autotransporta depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz kuģu depo. Ctrl+klikšķis atvērs skatu uz depo jaunā skatlaukā STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz angāru. Ctrl+klikšķis atvērs skatu uz angāru jaunā skatlaukā STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Iegūt visu vilcienu sarakstu, kuru rīkojumos ir pašreizējais depo STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Iegūt visu autotransporta līdzekļu sarakstu, kuru rīkojumos ir pašreizējais depo STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Iegūt visu kuģu sarakstu, kuru rīkojumos ir pašreizējais depo STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Iegūt visu lidaparātu sarakstu, kuru rīkojumos ir šīs lidostas angāri STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikšķināt lai apturētu visus vilcienus, kas atrodas depo STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikšķināt lai apturētu visus autotransporta līdzekļus, kas atrodas depo STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Klikšķināt lai apturētu visus kuģus, kas atrodas depo STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Klikšķināt lai apturētu visus lidaparātus, kas atrodas angārā STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Klikšķināt lai palaistu visus vilcienus, kas atrodas depo STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klikšķināt lai palaistu visus autotransporta līdzekļus, kas atrodas depo STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Klikšķināt lai palaistu visus kuģus, kas atrodas depo STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Klikšķināt lai palaistu visus lidaparātus, kas atrodas angārā STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Jūs grasāties pārdot visus transportlīdzekļus, kas atrodas depo. Vai esat pārliecināts? # Engine preview window STR_ENGINE_PREVIEW_CAPTION :{WHITE}Ziņojums no transportlīdzekļu ražotāja STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Mēs tikko esam izstrādājuši jaunu transportlīdzekli - {STRING}. Vai esat ieinteresēts iegūt izņēmuma tiesības izmantot šo transportlīdzekli uz vienu gadu, lai mēs redzētu tā iespējas pirms padaram pieejamu visiem? STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :dzelzceļa lokomotīve STR_ENGINE_PREVIEW_ROAD_VEHICLE :autotransporta līdzeklis STR_ENGINE_PREVIEW_AIRCRAFT :lidaparāts STR_ENGINE_PREVIEW_SHIP :kuģis STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :viensliedes lokomotīve STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magleva lokomotīve STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Svars: {WEIGHT_SHORT}{}Ātrums: {VELOCITY} Jauda: {POWER}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā{}Ietilpība: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Svars: {WEIGHT_SHORT}{}Ātrums: {VELOCITY} Jauda: {POWER} Maks. spēks: {6:FORCE}{}Kārtējās izmaksas: {4:CURRENCY_LONG} gadā{}Ietilpība: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY}{}Ietilpība: {CARGO_LONG}, {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY}{}Ietilpība: {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY} Apgabals: {COMMA} lauciņi{}Ietilpība: {CARGO_LONG}, {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY} Apgabals: {COMMA} lauciņi{}Ietilpība: {CARGO_LONG}{} Kārtējās izmaksas : {CURRENCY_LONG} gadā # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Nomainīt {STRING} - {STRING} STR_REPLACE_VEHICLE_TRAIN :Vilciens STR_REPLACE_VEHICLE_ROAD_VEHICLE :Autotransporta līdzeklis STR_REPLACE_VEHICLE_SHIP :Kuģis STR_REPLACE_VEHICLE_AIRCRAFT :Lidaparāts STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Izvēlēties lokomotīves veidu, kuru vēlaties mainīt STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Izvēlēties jaunu lokomotīves veidu, kuru vēlaties lietot kreisajā pusē atlasītās lokomotīves vietā STR_REPLACE_VEHICLES_START :{BLACK}Sākt transportlīdzekļu nomaiņu STR_REPLACE_VEHICLES_NOW :Nomainīt visus transportlīdzekļus STR_REPLACE_VEHICLES_WHEN_OLD :Nomainīt tikai vecos transportlīdzekļus STR_REPLACE_HELP_START_BUTTON :{BLACK}Nospiest, lai sāktu kreisajā pusē atlasītās lokomotīves aizstāšanu ar labajā pusē atlasīto lokomotīvi STR_REPLACE_NOT_REPLACING :{BLACK}Netiks nomainīts STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nav atlasītu transportlīdzekļu STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} kad vecs STR_REPLACE_VEHICLES_STOP :{BLACK}Pārtraukt transportlīdzekļu nomaiņu STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Nospiest, lai apturētu kreisajā pusē atlasītās lokomotīves aizstāšanu STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Nomainīt: {ORANGE}{STRING} STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Parslēgties starp lokomotīves un vagona aizstāšanas logiem STR_REPLACE_ENGINES :Lokomotīves STR_REPLACE_WAGONS :Vagoni STR_REPLACE_HELP_RAILTYPE :{BLACK}Izvēlēties sliežu veidu, kuram vēlaties nomainīt lokomotīves STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Parāda kura lokomotīve no kreisajā pusē atlasītajām tiek nomainīta, ja vien kāda ir STR_REPLACE_RAIL_VEHICLES :Sliežu transportlīdzekļi STR_REPLACE_ELRAIL_VEHICLES :Elektrificētā dzelzceļa transportlīdzekļi STR_REPLACE_MONORAIL_VEHICLES :Viensliedes transportlīdzekļi STR_REPLACE_MAGLEV_VEHICLES :Magleva transportlīdzekļi STR_REPLACE_REMOVE_WAGON :{BLACK}Vagona noņemšana: {ORANGE}{STRING} STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Automātiskā aizvietošana saglabās esošo vilciena garumu noņemot vagonus (sākot no priekšgala), ja mainot lokomotīvi tas kļūtu garāks # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz vilcienu. Ctrl+klikšķis sekos vilcienam galvenajā skatā STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz transportlīdzekli. Ctrl+klikšķis sekos transportlīdzeklim galvenajā skatā STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz kuģi. Ctrl+klikšķis sekos kuģim galvenajā skatā STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrēt galveno skatu uz lidaparātu. Ctrl+klikšķis sekos lidaparātam galvenajā skatā STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt vilcienu uz depo. Ctrl+klikšķis - izvēlēties tikai apkopi STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt autotransporta līdzekli uz depo. Ctrl+klikšķis - izvēlēties tikai apkopi STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt kuģi uz depo. Ctrl+klikšķis - izvēlēties tikai apkopi STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Sūtīt lidaparātu uz angāru. Ctrl+klikšķis - izvēlēties tikai apkopi STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Tas nopirks vilciena kopiju ar visiem vagoniem. Izmantojot Ctrl+klikšķis, vilcieni rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu vērtību, neveicot pirkumu STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Tas nopirks autotransporta līdzekļa kopiju. Izmantojot Ctrl+klikšķis, autotransporta līdzekļi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Tas nopirks kuģa kopiju. Izmantojot Ctrl+klikšķis, kuģi rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Tas nopirks lidaparāta kopiju. Izmantojot Ctrl+klikšķis, lidaparāti rīkojumus lietos kopīgi. Shift+klikšķis rāda izmaksu novērtējumu, neveicot pirkumu STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Piespiest vilcienu doties tālāk, neievērojot signālu STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Pielāgot vilcienu citam kravas veidam STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Pielāgot autotransporta līdzekli citam kravas veidam STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Pielāgot kuģi citam kravas veidam STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Pielāgot lidaparātu citam kravas veidam STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Apgriezt vilcienu pretējā virzienā STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Piespiest transportlīdzekli apgriezties STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Rādīt vilcienu rīkojumus. Ctrl+klikšķis, lai rādītu vilcienu kustības sarakstu STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Rādīt transportīdzekļu rīkojumus. Ctrl+klikšķis, lai rādītu transportlīdzekļu kustības sarakstu STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Rādīt kuģu rīkojumus. Ctrl+klikšķis, lai rādītu kuģu kustības sarakstu STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Rādīt lidaparātu rīkojumus. Ctrl+klikšķis, lai rādītu lidaparātu lidojumu sarakstu STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Rādīt vilciena informāciju STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Rādīt autotransporta līdzekļa informāciju STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Rādīt kuģa informāciju STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Rādīt lidaparāta informāciju STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Vilciena pašreizējā darbība - klikšķināt šeit, lai apturētu/palaistu vilcienu. Ctrl+klikšķis, lai ritinātu līdz galamērķim STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Transportlīdzekļa pašreizējā darbība - klikšķināt šeit, lai to apturētu/palaistu. Ctrl+klikšķis, lai ritinātu līdz galamērķim STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Kuģa pašreizējā darbība - klikšķināt šeit, lai apturētu/palaistu kuģi. Ctrl+klikšķis, lai ritinātu līdz galamērķim STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Lidaparāta pašreizējā darbība - klikšķināt šeit, lai apturētu/palaistu lidaparātu. Ctrl+klikšķis, lai ritinātu līdz galamērķim # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Iekraušana / Izkraušana STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Aizbrauc STR_VEHICLE_STATUS_CRASHED :{RED}Cietis avārijā! STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Salūzis STR_VEHICLE_STATUS_STOPPED :{RED}Apstādināts STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Apstājas, {VELOCITY} STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED} Nav jaudas STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Gaida brīvu ceļu STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Pārāk tālu līdz nākamajam galamērķim STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Dodas uz {STATION}, {VELOCITY} STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Nav rīkojumu, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dodas uz {WAYPOINT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Dodas uz {DEPOT}, {VELOCITY} STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Veikt apkopi {DEPOT}, {VELOCITY} # Vehicle stopped/started animations STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Apturēts STR_VEHICLE_COMMAND_STOPPED :{RED}Apturēts STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Iedarbināts STR_VEHICLE_COMMAND_STARTED :{GREEN}Iedarbināts # Vehicle details STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Sīkāka informācija) STR_VEHICLE_NAME_BUTTON :{BLACK}Nosaukums STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Nosaukt vilcienu STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Nosaukt autotransporta līdzekli STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Nosaukt kuģi STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nosaukt lidaparātu STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Vecums: {LTBLUE}{STRING}{BLACK} Izmaksas: {LTBLUE}{CURRENCY_LONG} gadā # The next two need to stay in this order STR_VEHICLE_INFO_AGE :{COMMA} gad{P s i u} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} gad{P s i u} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. ātrums: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. ātrums: {LTBLUE}{VELOCITY} {BLACK}Apgabals: {LTBLUE}{COMMA} flīzes STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Svars: {LTBLUE}{WEIGHT_SHORT} {BLACK}Jauda: {LTBLUE}{POWER}{BLACK} Maks. ātrums: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Svars: {LTBLUE}{WEIGHT_SHORT} {BLACK}Jauda: {LTBLUE}{POWER}{BLACK} Maks. ātrums: {LTBLUE}{VELOCITY} {BLACK}Maks. spēks: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Peļņa šogad: {LTBLUE}{CURRENCY_LONG} (pagājušajā gadā: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Drošums: {LTBLUE}{COMMA}% {BLACK}Ķibeles kopš pēdējās apkopes: {LTBLUE}{COMMA} STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Uzbūvēts: {LTBLUE}{NUM}{BLACK} Vērtība: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Ietilpība: {LTBLUE}Nav{STRING} STR_VEHICLE_INFO_CAPACITY :{BLACK}Ietilpība: {LTBLUE}{CARGO_LONG}{3:STRING} STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Ietilpība: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Ietilpība: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Pārvadājumu ieņēmumi: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Apkopes starplaiks: {LTBLUE}{COMMA}dienas{BLACK} Pēdējā apkope: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Apkopes starplaiks: {LTBLUE}{COMMA}%{BLACK} Pēdējā apkope: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Palielināt apkopes starplaiku par 10. Ctrl+klikšķis palielina apkopes starplaiku par 5 STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Samazināt apkopes starplaiku par 10. Ctrl+klikšķis samazina apkopes starplaiku par 5 STR_VEHICLE_DETAILS_DEFAULT :Noklusējuma STR_VEHICLE_DETAILS_DAYS :Dienas STR_VEHICLE_DETAILS_PERCENT :Procenti STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nosaukt vilcienu STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nosaukt autotransporta līdzekli STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nosaukt kuģi STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nosaukt lidaparātu # Extra buttons for train details windows STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Uzbūvēts: {LTBLUE}{NUM}{BLACK} Vērtība: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Vērtība: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Kopējā kravas ietilpība: STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Tukšs STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} no {STATION} STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} no {STATION} (x{NUM}) STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Krava STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Rādīt informāciju par pārvadājamo kravu STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Informācija STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Rādīt informāciju par vilciena sastāvu STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Ietilpība STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Rādīt katra vagona ietilpību STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Krava kopā STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Rādīt kopējo vilciena ietilpību, sadalīt to kravu veidos STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Ietilpība: {LTBLUE} # Vehicle refit STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Pielāgot) STR_REFIT_TITLE :{GOLD}Izvēlēties pārvadājamās kravas veidu: STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}{}{BLACK}Pielāgošanas izmaksas: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}{}{BLACK}Ienākumi no pielāgošanas: {GREEN}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Pielāgošanas izmaksas: {RED}{CURRENCY_LONG} STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Jaunā ietilpība: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ienākumi no pielāgošanas: {GREEN}{CURRENCY_LONG} STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Izvēlēties transportlīdzekļus pielāgošanai. Vilkšana ar peli ļauj izvēlēties vairākus transportlīdzekļus. Klikšķināšana tukšumā atzīmēs visus transportlīdzekļus. Ctrl+klikšķis atzīmēs izvēlēto un visus tam sekojošus transportlīdzekļus STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Izvēlēties, kuru kravas veidu vilciens pārvadās STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Izvēlēties, kuru kravas veidu autotransports pārvadās STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Izvēlēties, kuru kravas veidu kuģis pārvadās STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Izvēlēties, kuru kravas veidu lidaparāts pārvadās STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Pielāgot vilcienu STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Pielāgot autotransporta līdzekli STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Pielāgot kuģi STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Pielāgot lidaparātu STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Pielāgot vilcienu iezīmētā kravas veida pārvadāšanai STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Pielāgot autotransporta līdzekli iezīmētā kravas veida pārvadāšanai STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Pielāgot kuģi iezīmētā kravas veida pārvadāšanai STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Pielāgot lidaparātu iezīmētā kravas veida pārvadāšanai # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Rīkojumi) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Saraksts STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Pārslēgt uz saraksta skatu STR_ORDERS_LIST_TOOLTIP :{BLACK}Rīkojumu saraksts - klikšķināt uz rīkojuma, lai to atzīmētu. Ctrl+klikšķis ritina uz rīkojuma galamērķi STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} STR_ORDERS_END_OF_ORDERS :- - Rīkojumu beigas - - STR_ORDERS_END_OF_SHARED_ORDERS :- - Koplietojamo rīkojumu beigas - - # Order bottom buttons STR_ORDER_NON_STOP :{BLACK}Nestāties STR_ORDER_GO_TO :Doties uz STR_ORDER_GO_NON_STOP_TO :Braukt bez pieturām uz STR_ORDER_GO_VIA :Braukt caur STR_ORDER_GO_NON_STOP_VIA :Braukt bez pieturām caur STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Mainīt apstāšanās veidu atlasītajā rīkojumā STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Piekraut pilnu ar jebkuru kravu STR_ORDER_DROP_LOAD_IF_POSSIBLE :Piekraut, ja ir pieejams STR_ORDER_DROP_FULL_LOAD_ALL :Visu kravu pilna piekraušana STR_ORDER_DROP_FULL_LOAD_ANY :Piekraut pilnu ar jebkuru kravu STR_ORDER_DROP_NO_LOADING :Bez iekraušanas STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Mainīt iekraušanas veidu atlasītajā rīkojumā STR_ORDER_TOGGLE_UNLOAD :{BLACK}Izkraut visu STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Izkraut, ja kravu pieņem STR_ORDER_DROP_UNLOAD :Izkraut visu STR_ORDER_DROP_TRANSFER :Pārkraut STR_ORDER_DROP_NO_UNLOADING :Bez izkraušanas STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Mainīt izkraušanas veidu atlasītajā rīkojumā STR_ORDER_REFIT :{BLACK}Pielāgot STR_ORDER_REFIT_TOOLTIP :{BLACK}Izvēlēties, uz kuru kravas veidu pārveidot rīkojumu. Ctrl+klikšķis, lai atceltu pārveidošanas norādījumu STR_ORDER_REFIT_AUTO :{BLACK}Automātiska pielāgošana STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Izvēlēties kravas veidu, ko automātiski pielāgot šim rīkojumam. Ctrl+klikšķis, lai noņemtu pielāgošanas norādījumu. Automātiskā pielāgošana tiks veikta tikai tad, ja transportlīdzeklis to pieļauj STR_ORDER_DROP_REFIT_AUTO :Pastāvīga krava STR_ORDER_DROP_REFIT_AUTO_ANY :Pieejamā krava STR_ORDER_SERVICE :{BLACK}Apkope STR_ORDER_DROP_GO_ALWAYS_DEPOT :Vienmēr doties STR_ORDER_DROP_SERVICE_DEPOT :Apkope, ja nepieciešama STR_ORDER_DROP_HALT_DEPOT :Apstādināt STR_ORDER_SERVICE_TOOLTIP :{BLACK}Izlaist šo rīkojumu, izņemot ja vajadzīga apkope STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Vehicle data to base jumping on # Conditional order variables, must follow order of OrderConditionVariable enum STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Iekraušanas procenti STR_ORDER_CONDITIONAL_RELIABILITY :Uzticamība STR_ORDER_CONDITIONAL_MAX_SPEED :Maksimālais ātrums STR_ORDER_CONDITIONAL_AGE :Vecums (gadi) STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Nepieciešama apkope STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Vienmēr STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Atlikušais kalpošanas laiks (gadi) STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kā salīdzināt transportlīdzekļa datus ar norādītajām vērtībām STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :ir vienāds ar STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :nav vienāds ar STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :ir mazāks par STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :ir mazāks vai vienāds ar STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :ir lielāks par STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :ir lielāks vai vienāds ar STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :ir patiess STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :ir nepatiess STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Vērtība transportlīdzekļa datu salīdzināšanai pret STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Ievadīt vērtību ar kuru salīdzināt STR_ORDERS_SKIP_BUTTON :{BLACK}Izlaist STR_ORDERS_SKIP_TOOLTIP :{BLACK}Izlaist pašreizējo rīkojumu un doties pie nākamā. Ctrl+klikšķis izlaiž līdz atlasītajam rīkojumam STR_ORDERS_DELETE_BUTTON :{BLACK}Izdzēst STR_ORDERS_DELETE_TOOLTIP :{BLACK}Dzēst atzīmēto rīkojumu STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Dzēst visus rīkojumus STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Pārtraukt koplietošanu STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Pārtraukt rīkojumu koplietošanu. Ctrl+klikšķis papildus dzēš arī šī transportlīdzekļa rīkojumus STR_ORDERS_GO_TO_BUTTON :{BLACK}Doties uz STR_ORDER_GO_TO_NEAREST_DEPOT :Doties uz tuvāko depo STR_ORDER_GO_TO_NEAREST_HANGAR :Doties uz tuvāko angāru STR_ORDER_CONDITIONAL :Nosacītais rīkojuma lēciens STR_ORDER_SHARE :Koplietot rīkojumus STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Ievietot jaunu rīkojumu pirms iezīmētā rīkojuma vai saraksta beigās. Ctrl izveido stacijas rīkojumu 'piekraut pilnu ar jebkuru kravu', liek braukt cauri pieturas punktam 'neapstājoties' un depo veikt 'apkopi'. 'Koplietot rīkojumus' vai Ctrl ļauj šim transportlīdzeklim lietot rīkojumus kopīgi ar atlasīto transportlīdzekli. Klikšķināšana uz transportlīdzekļa kopēs tā rīkojumus. Depo rīkojums izslēdz automātisko apkopi. STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Rādīt visus ar šo plānu saistītos transportlīdzekļus # String parts to build the order string STR_ORDER_GO_TO_WAYPOINT :Dodas caur {WAYPOINT} STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Dodas caur {WAYPOINT} bez apstāšanās STR_ORDER_SERVICE_AT :Veikt apkopi STR_ORDER_SERVICE_NON_STOP_AT :Bezapstājas apkope STR_ORDER_NEAREST_DEPOT :tuvākais STR_ORDER_NEAREST_HANGAR :tuvākais angārs STR_ORDER_TRAIN_DEPOT :Vilcienu depo STR_ORDER_ROAD_VEHICLE_DEPOT :Autotransporta depo STR_ORDER_SHIP_DEPOT :Kuģu depo STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} STR_ORDER_REFIT_ORDER :(Pielāgot uz {STRING}) STR_ORDER_REFIT_STOP_ORDER :(Pielāgot uz {STRING} un apstāties) STR_ORDER_STOP_ORDER :(Apstādināt) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} STR_ORDER_IMPLICIT :(Netieši) STR_ORDER_FULL_LOAD :(Piekraut pilnu) STR_ORDER_FULL_LOAD_ANY :(Piekraut pilnu ar jebkuru kravu) STR_ORDER_NO_LOAD :(Bez iekraušanas) STR_ORDER_UNLOAD :(Izkraut un paņemt kravu) STR_ORDER_UNLOAD_FULL_LOAD :(Izkraut un gaidīt pilnu piekraušanu) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Izkraut un gaidīt jebkuru pilnu piekraušanu) STR_ORDER_UNLOAD_NO_LOAD :(Izkraut un atstāt tukšu) STR_ORDER_TRANSFER :(Pārkraut un paņemt kravu) STR_ORDER_TRANSFER_FULL_LOAD :(Pārkraut un gaidīt pilnu piekraušanu) STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Pārcelt un gaidīt jebkuru pilnu piekraušanu) STR_ORDER_TRANSFER_NO_LOAD :(Pārkraut un atstāt tukšu) STR_ORDER_NO_UNLOAD :(Neizkraut un paņemt kravu) STR_ORDER_NO_UNLOAD_FULL_LOAD :(Neizkraut un gaidīt pilnu kravu) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Neizkraut un gaidīt jebkuru pilnu kravu) STR_ORDER_NO_UNLOAD_NO_LOAD :(Bez izkraušanas un bez iekraušanas) STR_ORDER_AUTO_REFIT :(Automātiski pielāgot uz {STRING}) STR_ORDER_FULL_LOAD_REFIT :(Piekraut pilnu, ar automātisku pielāgošanu uz {STRING}) STR_ORDER_FULL_LOAD_ANY_REFIT :(Piekraut pilnu ar jebkuru kravu, ar automātisku pielāgošanu uz {STRING}) STR_ORDER_UNLOAD_REFIT :(Izkraut un paņemt kravu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Izkraut un gaidīt pilnu iekraušanu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Izkraut un gaidīt jebkuru pilnu iekraušanu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_TRANSFER_REFIT :(Pārsūtīt un paņemt kravu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Pārsūtīt un gaidīt pilnu iekraušanu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Izkraut un gaidīt pilnu iekraušanu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_NO_UNLOAD_REFIT :(Neizkraut un ņemt kravu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Neizkraut un gaidīt pilnu iekraušanu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Neizkraut un gaidīt jebkuru pilnu iekraušanu ar automātisku pielāgošanu uz {STRING}) STR_ORDER_AUTO_REFIT_ANY :pieejamā krava STR_ORDER_STOP_LOCATION_NEAR_END :[tuvākais gals] STR_ORDER_STOP_LOCATION_MIDDLE :[vidus] STR_ORDER_STOP_LOCATION_FAR_END :[tālākais gals] STR_ORDER_OUT_OF_RANGE :{RED} (Nākamais galamērķis ir ārpus apgabala) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Lekt uz rīkojumu nr. {COMMA} STR_ORDER_CONDITIONAL_NUM :Lekt uz rīkojumu nr. {COMMA}, kad {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_TRUE_FALSE :Lekt uz rīkojumu nr. {COMMA}, kad {STRING} {STRING} STR_INVALID_ORDER :{RED} (Nederīgs rīkojums) # Time table window STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Laiku saraksts) STR_TIMETABLE_ORDER_VIEW :{BLACK}Rīkojumi STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Pārslēgt uz rīkojumu skatu STR_TIMETABLE_TOOLTIP :{BLACK}Saraksts - klikšķināt uz rīkojuma, lai to atlasītu STR_TIMETABLE_NO_TRAVEL :Bez braukšanas STR_TIMETABLE_NOT_TIMETABLEABLE :Ceļot (automātiski; pēc nākamā manuālā rīkojuma saraksta) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Braukšana (nav pēc saraksta) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Braukt ar ne vairāk kā {2:VELOCITY} (nav sarakstā) STR_TIMETABLE_TRAVEL_FOR :Braukt līdz {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Braukt uz {STRING} ar ne vairāk kā {VELOCITY} STR_TIMETABLE_STAY_FOR :un palikt līdz {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :un braukt līdz {STRING} STR_TIMETABLE_DAYS :{COMMA} dien{P a as u} STR_TIMETABLE_TICKS :{COMMA} tik{P s i u} STR_TIMETABLE_TOTAL_TIME :{BLACK}Šis saraksts aizņems {STRING}, lai pabeigtu STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Šis saraksts aizņems vismaz {STRING} lai pabeigtu (nav viss pēc saraksta) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Šis transportlīdzeklis pašlaik iekļaujas laikā STR_TIMETABLE_STATUS_LATE :{BLACK}Šis transportlīdzeklis pašlaik {STRING} kavē STR_TIMETABLE_STATUS_EARLY :{BLACK}Šis transportlīdzeklis pašlaik {STRING} par agru STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Šis saraksts vēl nav sācies STR_TIMETABLE_STATUS_START_AT :{BLACK}Šis saraksts sāksies {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Sākuma datums STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Izvēlēties sākuma datumu šim sarakstam STR_TIMETABLE_CHANGE_TIME :{BLACK}Mainīt laiku STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mainīt iezīmētajam maršrutam nepieciešamo laiku STR_TIMETABLE_CLEAR_TIME :{BLACK}Notīrīt laiku STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Dzēst laiku atlasītajam rīkojumam STR_TIMETABLE_CHANGE_SPEED :{BLACK}Mainīt ātruma ierobežojumu STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Mainīt maksimālo braukšanas ātrumu atlasītajā rīkojumā STR_TIMETABLE_CLEAR_SPEED :{BLACK}Nodzēst ātruma ierobežojumu STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Nodzēst maksimālo braukšanas ātrumu atlasītajā rīkojumā STR_TIMETABLE_RESET_LATENESS :{BLACK}Atiestatīt kavējuma skaitītāju STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Atslēgt skaitītāju, lai transportlīdzeklis būtu laikā STR_TIMETABLE_AUTOFILL :{BLACK}Automātiska aizpildīšana STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Aizpildīt sarakstu automātiski ar vērtībām no nākošā ceļojuma (Ctrl+klikšķis lai mēģinātu paturēt gaidīšanas laikus) STR_TIMETABLE_EXPECTED :{BLACK}Paredzēts STR_TIMETABLE_SCHEDULED :{BLACK}Ieplānots STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Pārslēgties starp sagaidāmo un ieplānoto STR_TIMETABLE_ARRIVAL_ABBREVIATION :Ie: STR_TIMETABLE_DEPARTURE_ABBREVIATION :Iz: # Date window (for timetable) STR_DATE_CAPTION :{WHITE}Uzlikt datumu STR_DATE_SET_DATE :{BLACK}Uzlikt datumu STR_DATE_SET_DATE_TOOLTIP :{BLACK}Lietot izvēlēto datumu kā sākuma datumu sarakstam STR_DATE_DAY_TOOLTIP :{BLACK}Izvēlēties dienu STR_DATE_MONTH_TOOLTIP :{BLACK}Izvēlēties mēnesi STR_DATE_YEAR_TOOLTIP :{BLACK}Izvēlēties gadu # AI debug window STR_AI_DEBUG :{WHITE}MI/spēles skriptu atkļūdošana STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Skripta nosaukums STR_AI_DEBUG_SETTINGS :{BLACK}Iestatījumi STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Mainīt skripta iestatījumus STR_AI_DEBUG_RELOAD :{BLACK}Pārlādēt MI STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Apturēt MI, pārlādēt skriptu, un restartēt MI STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Pārslēgt slēgšanu, kad MI ziņojums saskan ar slēgšanas ziņojumu STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Slēgt, kad: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Slēgt, kad STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Kad MI ziņojums saskanēs ar šo tekstu, spēle tiks pauzēta STR_AI_DEBUG_MATCH_CASE :{BLACK}Ievērot reģistru STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Pārslēgt lielo/mazo burtu ievērošanu, kad salīdzināt MI ziņojumus ar slēgšanas tekstu STR_AI_DEBUG_CONTINUE :{BLACK}Turpināt STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Atsākt un turpināt šo MI STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Attēlot šī MI atkļūdošanas izvadu STR_AI_GAME_SCRIPT :{BLACK}Spēles skripts STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Pārbaudīt spēles skriptu žurnālu STR_ERROR_AI_NO_AI_FOUND :Nav atrasts ielādei piemērots MI.{}Šis ir MI makets un spēlē tas neko nedarīs.{}Jūs varat lejupielādēt dažus MI no 'Tiešsaistes satura' sistēmas STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Viens no strādājošiem skriptiem nobruka. Lūdzu, paziņojiet par šo gadījumu skripta autoram, pievienojot ekrānuzņēmumu ar MI/spēles skriptu atkļūdošanas logu STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}MI/spēles skriptu atkļūdošanas logs ir pieejams tikai serverim # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}MI/spēles skriptu konfigurācija STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Spēles skripts, kas tiks ielādēts nākamajā spēlē STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}MI, kas tiks ielādēts nākamajā spēlē STR_AI_CONFIG_HUMAN_PLAYER :Spēlētājs (cilvēks) STR_AI_CONFIG_RANDOM_AI :Nejaušs MI STR_AI_CONFIG_NONE :(nav) STR_AI_CONFIG_MOVE_UP :{BLACK}Pacelt uz augšu STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Pacelt izvēlētos MI sarakstā uz augšu STR_AI_CONFIG_MOVE_DOWN :{BLACK}Nolaist uz leju STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Nolaist izvēlētos MI sarakstā uz leju STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spēles skripti STR_AI_CONFIG_AI :{SILVER}MI STR_AI_CONFIG_CHANGE :{BLACK}Izvēlēties {STRING} STR_AI_CONFIG_CHANGE_NONE : STR_AI_CONFIG_CHANGE_AI :MI STR_AI_CONFIG_CHANGE_GAMESCRIPT :Spēles skripts STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Ielādēt citu skriptu STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigurēt STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Konfigurēt skripta parametrus # Available AIs window STR_AI_LIST_CAPTION :{WHITE}Pieejamie {STRING} STR_AI_LIST_CAPTION_AI :MI STR_AI_LIST_CAPTION_GAMESCRIPT :Spēles skripti STR_AI_LIST_TOOLTIP :{BLACK}Klikšķināt, lai izvēlētos skriptu STR_AI_LIST_AUTHOR :{LTBLUE}Autors: {ORANGE}{STRING} STR_AI_LIST_VERSION :{LTBLUE}Versija: {ORANGE}{NUM} STR_AI_LIST_URL :{LTBLUE}Tīmekļa adrese: {ORANGE}{STRING} STR_AI_LIST_ACCEPT :{BLACK}Apstiprināt STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Izvēlēties izcelto skriptu STR_AI_LIST_CANCEL :{BLACK}Atcelt STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nemainīt skriptu # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} parametri STR_AI_SETTINGS_CAPTION_AI :MI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Spēles skripts STR_AI_SETTINGS_CLOSE :{BLACK}Aizvērt STR_AI_SETTINGS_RESET :{BLACK}Atiestatīt STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} STR_AI_SETTINGS_START_DELAY :Aptuvenais dienu skaits, līdz palaist šo MI pēc iepriekšējā: {ORANGE}{STRING} # Textfile window STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} kopas {STRING} fails Lasi_mani STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} kopas {STRING} izmaiņu žurnāls STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} kopas {STRING} licence STR_TEXTFILE_VIEW_README :{BLACK}Skatīt failu Lasi_mani STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Izmaiņu žurnāls STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence # Vehicle loading indicators STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% STR_PERCENT_NONE :{WHITE}{NUM}% # Income 'floats' STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Izmaksas: {CURRENCY_LONG} STR_INCOME_FLOAT_COST :{RED}Izmaksas: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Ienākumi: {CURRENCY_LONG} STR_INCOME_FLOAT_INCOME :{GREEN}Ienākumi: {CURRENCY_LONG} STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Pārskaita: {CURRENCY_LONG} STR_FEEDER :{YELLOW}Pārskaita: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_COST :{WHITE}Plānotās izmaksas: {CURRENCY_LONG} STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Plānotie ienākumi: {CURRENCY_LONG} # Saveload messages STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Notiek saglabāšana,{}lLūdzu uzgaidiet! STR_ERROR_AUTOSAVE_FAILED :{WHITE}Automātiskā saglabāšana neizdevās STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Nevar lasīt disku STR_ERROR_GAME_SAVE_FAILED :{WHITE}Spēles saglabāšana neizdevās{}{STRING} STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Nevar dzēst failu STR_ERROR_GAME_LOAD_FAILED :{WHITE}Spēles ielādēšana neizdevās{}{STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Iekšēja kļūda: {STRING} STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Bojāts saglabātās spēles fails - {STRING} STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spēle ir saglabāta ar jaunāku versiju STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Failu nevar nolasīt STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Failā nevar ierakstīt STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Datu integritātes pārbaude neizdevās STR_GAME_SAVELOAD_NOT_AVAILABLE :